diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 7a79b28b09aa..e969d1aa7447 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -24,9 +24,13 @@ /tools/docker/ @Fira /Dockerfile @Fira -# MorrowWolf +# Nanu -/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm @morrowwolf -/code/modules/gear_presets/survivors.dm @morrowwolf +/maps @Nanu308 + +# Zonespace + +/code/datums/tutorial/ @Zonespace27 +/maps/tutorial/ @Zonespace27 # MULTIPLE OWNERS diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index c05d84e8122d..c66b16031c63 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -74,10 +74,10 @@ These are the few directives we have for project maintainers. - Try to get secondary maintainer approval before merging if you are able to. - PRs with empty commits intended to generate a changelog. - Do not merge PRs that contain content from the [banned content list](./CONTRIBUTING.md#banned-content). -- Do not merge PRs that contain balance changes without GA approval. Exceptions include: - - Any PR that has been un-reviewed by a GA for 7 days. +- Do not merge PRs that contain balance changes without Maintainer Manager approval. Exceptions include: + - Any PR that has been un-reviewed by a Maintainer Manager for 7 days. - Do not remove the DNM label that another Maintainer has applied. Exceptions include: - - GAs removing a DNM label placed by a Maintainer for Balance/Design reasons + - Maintainer Managers removing a DNM label placed by a Maintainer for Balance/Design reasons These are not steadfast rules as maintainers are expected to use their best judgement when operating. @@ -167,20 +167,6 @@ Certain PRs, such as those which directly change number values (i.e. health, rec * We understand that having something you have worked on for quite some time being denied can be frustrating. Therefore, it is recommended that you check with a maintainer before beginning to code your PR if you have any doubts that it will be accepted. This will save everyone's time and energy. -## Good Boy Points - -Each GitHub account has a score known as Good Boy Points, or GBP. This is a system we use to ensure that the codebase stays maintained and that contributors fix bugs as well as add features. - -The GBP gain or loss for a PR depends on the type of changes the PR makes, represented by the tags assigned to the PR by the CM-SS13 github bot or maintainers. Generally speaking, fixing bugs, updating sprites, or improving maps increases your GBP score, while adding mechanics, or rebalancing things will cost you GBP. - -The GBP change of a PR is the sum of greatest positive and lowest negative values it has. For example, a PR that has tags worth +10, +4, -1, -7, will net 3 GBP (10 - 7). - -Negative GBP increases the likelihood of a maintainer closing your PR. With that chance being higher the lower your GBP is. Be sure to use the proper tags in the changelog to prevent unnecessary GBP loss. Maintainers reserve the right to change tags as they deem appropriate. - -There is no benefit to having a higher positive GBP score, since GBP only comes into consideration when it is negative. - -You can see each tag and their GBP values [Here](https://github.com/cmss13-devs/cmss13/blob/master/.github/gbp.toml). - ## Porting features/sprites/sounds/tools from other codebases If you are porting features/tools from other codebases, you must give them credit where it's due. Typically, crediting them in your pull request and the changelog is the recommended way of doing it. Take note of what license they use though, porting stuff from AGPLv3 and GPLv3 codebases are allowed. diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 49eda07616c2..5eb8f0219e73 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -10,6 +10,12 @@ body: placeholder: "#1, #2, #3, etc" validations: required: true + - type: input + id: round-id + attributes: + label: Round ID + description: If known, what was the Round ID this bug was found on? Can be left blank if unknown or occured across multiple rounds. + placeholder: "12345" - type: textarea id: what-happened attributes: diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 8f8ccbe07f60..14cf6001058f 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -16,6 +16,9 @@ Remember: something that is self-evident to you might not be to others. Explain # Testing Photographs and Procedure + + +
Screenshots & Videos @@ -26,8 +29,8 @@ Put screenshots and videos here with an empty line between the screenshots and t # Changelog - - + + :cl: add: Added something diff --git a/.github/alternate_byond_versions.txt b/.github/alternate_byond_versions.txt index f25861c46714..c96908590dac 100644 --- a/.github/alternate_byond_versions.txt +++ b/.github/alternate_byond_versions.txt @@ -6,4 +6,4 @@ # Example: # 500.1337: runtimestation -515.1603: lv624 +515.1630: lv624 diff --git a/.github/gbp.toml b/.github/gbp.toml deleted file mode 100644 index 85dd702803e2..000000000000 --- a/.github/gbp.toml +++ /dev/null @@ -1,23 +0,0 @@ -no_balance_label = "GBP: No Update" -reset_label = "GBP: Reset" - -[points] -"Accessibility" = 3 -"Admin" = 2 -"Atomic" = 2 -"Balance" = -5 -"Code Improvement" = 2 -"Fix" = 3 -"Grammar and Formatting" = 1 -"Hard Deletes" = 12 -"Logging" = 1 -"Feature" = -5 -"Performance" = 12 -"Priority: CRITICAL" = 20 -"Priority: High" = 15 -"Quality of Life" = 1 -"Refactor" = 6 -"Roadmap" = 15 -"Sound" = 3 -"Sprites" = 3 -"UI" = 3 diff --git a/.github/guides/STANDARDS.md b/.github/guides/STANDARDS.md index fc764d09c816..c9b988bd07ff 100644 --- a/.github/guides/STANDARDS.md +++ b/.github/guides/STANDARDS.md @@ -126,7 +126,7 @@ While we normally encourage (and in some cases, even require) bringing out of da This is a simple one - as we will eventually move to 515, we will need to ditch this kind of callback. So please don't add any new ones. Make our lives easier. ### PROC_REF Macros - When referencing procs in RegisterSignal, Callback and other procs you should use PROC_REF,TYPE_PROC_REF and GLOBAL_PROC_REF macros. + When referencing procs in RegisterSignal, Callback and other procs you should use PROC_REF, TYPE_PROC_REF and GLOBAL_PROC_REF macros. They ensure compilation fails if the reffered to procs change names or get removed. The macro to be used depends on how the proc you're in relates to the proc you want to use: @@ -168,6 +168,8 @@ This is a simple one - as we will eventually move to 515, we will need to ditch addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(funny)), 100)) ``` + Note that the same rules go for verbs too! We have VERB_REF() and TYPE_VERB_REF() as you need it in these same cases. GLOBAL_VERB_REF() isn't a thing however, as verbs are not global. + ### Signal Handlers All procs that are registered to listen for signals using `RegisterSignal()` must contain at the start of the proc `SIGNAL_HANDLER` eg; diff --git a/.github/workflows/autowiki.yml b/.github/workflows/autowiki.yml new file mode 100644 index 000000000000..fec68f2ca332 --- /dev/null +++ b/.github/workflows/autowiki.yml @@ -0,0 +1,52 @@ +name: Autowiki +on: + schedule: + - cron: "5 4 * * *" + workflow_dispatch: +permissions: + contents: read + +jobs: + autowiki: + runs-on: ubuntu-latest + steps: + - name: "Check for AUTOWIKI_USERNAME" + id: secrets_set + env: + ENABLER_SECRET: ${{ secrets.AUTOWIKI_USERNAME }} + run: | + unset SECRET_EXISTS + if [ -n "$ENABLER_SECRET" ]; then SECRET_EXISTS=true ; fi + echo "SECRETS_ENABLED=$SECRET_EXISTS" >> $GITHUB_OUTPUT + - name: Checkout + if: steps.secrets_set.outputs.SECRETS_ENABLED + uses: actions/checkout@v3 + - name: Restore BYOND cache + if: steps.secrets_set.outputs.SECRETS_ENABLED + uses: actions/cache@v3 + with: + path: ~/BYOND + key: ${{ runner.os }}-byond-${{ secrets.CACHE_PURGE_KEY }} + - name: Install rust-g + if: steps.secrets_set.outputs.SECRETS_ENABLED + run: | + sudo dpkg --add-architecture i386 + sudo apt update || true + sudo apt install -o APT::Immediate-Configure=false zlib1g-dev:i386 libssl-dev:i386 + bash tools/ci/install_rust_g.sh + - name: Compile and generate Autowiki files + if: steps.secrets_set.outputs.SECRETS_ENABLED + run: | + bash tools/ci/install_byond.sh + source $HOME/BYOND/byond/bin/byondsetup + tools/build/build --ci autowiki + - name: Run Autowiki + if: steps.secrets_set.outputs.SECRETS_ENABLED + env: + USERNAME: ${{ secrets.AUTOWIKI_USERNAME }} + PASSWORD: ${{ secrets.AUTOWIKI_PASSWORD }} + run: | + cd tools/autowiki + npm install + cd ../.. + node tools/autowiki/autowiki.js data/autowiki_edits.txt data/autowiki_files/ diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index 8f66dc14ad6f..0488055312f7 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -8,7 +8,7 @@ jobs: run_linters: if: "!contains(github.event.head_commit.message, '[ci skip]')" name: Run Linters - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest concurrency: group: run_linters-${{ github.head_ref || github.run_id }} cancel-in-progress: true @@ -60,10 +60,38 @@ jobs: with: outputFile: output-annotations.txt + + odlint: + name: Lint with OpenDream + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - name: Get OpenDream Version + run: | + source dependencies.sh + echo "OPENDREAM_VERSION=$OPENDREAM_VERSION" >> $GITHUB_ENV + - name: Restore OpenDream cache + uses: actions/cache@v3 + id: cache-od + with: + path: ~/OpenDream + key: ${{ runner.os }}-opendream-${{ env.OPENDREAM_VERSION }} + - name: Download OpenDream + if: steps.cache-od.outputs.cache-hit != 'true' + run: | + bash tools/ci/download_od.sh + - name: Setup OpenDream + if: steps.cache-od.outputs.cache-hit != 'true' + run: | + bash tools/ci/setup_od.sh + - name: Run OpenDream + run: | + bash tools/ci/run_od.sh + compile_all_maps: if: "!contains(github.event.head_commit.message, '[ci skip]')" name: Compile Maps - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Restore BYOND cache @@ -80,7 +108,7 @@ jobs: find_all_maps: if: "!contains(github.event.head_commit.message, '[ci skip]')" name: Find Maps to Test - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest outputs: maps: ${{ steps.map_finder.outputs.maps }} alternate_tests: ${{ steps.alternate_test_finder.outputs.alternate_tests }} @@ -92,7 +120,8 @@ jobs: - name: Find Maps id: map_finder run: | - echo "$(ls -mw0 maps/*.json)" > maps_output.txt + shopt -s extglob + echo "$(ls -mw0 maps/!(*override*).json)" > maps_output.txt sed -i -e s+maps/+\"+g -e s+.json+\"+g maps_output.txt echo "Maps: $(cat maps_output.txt)" echo "maps={\"paths\":[$(cat maps_output.txt)]}" >> $GITHUB_OUTPUT @@ -137,7 +166,7 @@ jobs: if: "!contains(github.event.head_commit.message, '[ci skip]') && needs.find_all_maps.outputs.alternate_tests != '[]'" name: Check Alternate Tests needs: [run_alternate_tests] - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - run: echo Alternate tests passed. diff --git a/.github/workflows/compile_changelogs.yml b/.github/workflows/compile_changelogs.yml index 1f6e72092627..85947f08b18b 100644 --- a/.github/workflows/compile_changelogs.yml +++ b/.github/workflows/compile_changelogs.yml @@ -8,7 +8,7 @@ on: jobs: compile: name: "Compile changelogs" - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: "Check for ACTION_ENABLER secret and pass true to output if it exists to be checked by later steps" id: value_holder diff --git a/.github/workflows/conflicts.yml b/.github/workflows/conflicts.yml index 9e70bf488482..b65a5213ab4a 100644 --- a/.github/workflows/conflicts.yml +++ b/.github/workflows/conflicts.yml @@ -7,9 +7,11 @@ on: types: [ready_for_review, opened, synchronize, reopened] jobs: triage: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: eps1lon/actions-label-merge-conflict@v2.1.0 with: dirtyLabel: 'Merge Conflict' + commentOnDirty: "This pull request has conflicts, please resolve those before we can evaluate the pull request." + commentOnClean: "Conflicts have been resolved. A maintainer will review the pull request shortly." repoToken: ${{ secrets.BOT_TOKEN_CM || secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/gbp.yml b/.github/workflows/gbp.yml deleted file mode 100644 index 9c92e5f379dc..000000000000 --- a/.github/workflows/gbp.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: GBP -on: - pull_request_target: - types: [closed, opened] -jobs: - gbp: - runs-on: ubuntu-latest - steps: - - name: "Check for ACTION_ENABLER secret and pass true to output if it exists to be checked by later steps" - id: value_holder - env: - ENABLER_SECRET: ${{ secrets.ACTION_ENABLER }} - run: | - unset SECRET_EXISTS - if [ -n "$ENABLER_SECRET" ]; then SECRET_EXISTS=true ; fi - echo "::set-output name=ACTIONS_ENABLED::$SECRET_EXISTS" - - name: Checkout - if: steps.value_holder.outputs.ACTIONS_ENABLED - uses: actions/checkout@v3 - - name: Setup git - if: steps.value_holder.outputs.ACTIONS_ENABLED - run: | - git config --global user.name "gbp-action" - git config --global user.email "<>" - - name: Checkout alternate branch - if: steps.value_holder.outputs.ACTIONS_ENABLED - uses: actions/checkout@v3 - with: - ref: "gbp-balances" # The branch name - path: gbp-balances - # This is to ensure we keep the gbp.toml from master - # without having to update our separate branch. - - name: Copy configuration - if: steps.value_holder.outputs.ACTIONS_ENABLED - run: cp ./.github/gbp.toml ./gbp-balances/.github/gbp.toml - - name: GBP action - if: steps.value_holder.outputs.ACTIONS_ENABLED - uses: tgstation/gbp-action@master - with: - branch: "gbp-balances" - directory: ./gbp-balances - token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/gbp_collect.yml b/.github/workflows/gbp_collect.yml deleted file mode 100644 index dc2af17a12de..000000000000 --- a/.github/workflows/gbp_collect.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: GBP Collection -# Every hour at the :20 minute mark. GitHub tells us to pick odd hours, instead of just using the start. -on: - schedule: - - cron: "20 * * * *" - workflow_dispatch: -jobs: - gbp_collection: - runs-on: ubuntu-latest - steps: - - name: "Check for ACTION_ENABLER secret and pass true to output if it exists to be checked by later steps" - id: value_holder - env: - ENABLER_SECRET: ${{ secrets.ACTION_ENABLER }} - run: | - unset SECRET_EXISTS - if [ -n "$ENABLER_SECRET" ]; then SECRET_EXISTS=true ; fi - echo "::set-output name=ACTIONS_ENABLED::$SECRET_EXISTS" - - name: Checkout - if: steps.value_holder.outputs.ACTIONS_ENABLED - uses: actions/checkout@v3 - - name: Setup git - if: steps.value_holder.outputs.ACTIONS_ENABLED - run: | - git config --global user.name "github-actions[bot]" - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - - name: Checkout alternate branch - if: steps.value_holder.outputs.ACTIONS_ENABLED - uses: actions/checkout@v3 - with: - ref: "gbp-balances" # The branch name - path: gbp-balances - # This is to ensure we keep the gbp.toml from master - # without having to update our separate branch. - - name: Copy configuration - if: steps.value_holder.outputs.ACTIONS_ENABLED - run: cp ./.github/gbp.toml ./gbp-balances/.github/gbp.toml - - name: GBP action - if: steps.value_holder.outputs.ACTIONS_ENABLED - uses: tgstation/gbp-action@master - with: - collect: "true" - directory: ./gbp-balances - token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/generate_documentation.yml b/.github/workflows/generate_documentation.yml index 6075e3029acd..c2898dfa9c57 100644 --- a/.github/workflows/generate_documentation.yml +++ b/.github/workflows/generate_documentation.yml @@ -6,7 +6,7 @@ on: jobs: generate_documentation: if: "!contains(github.event.head_commit.message, '[ci skip]')" - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest concurrency: gen-docs steps: - uses: actions/checkout@v3 @@ -21,7 +21,7 @@ jobs: run: | ~/dmdoc touch dmdoc/.nojekyll - echo codedocs.tgstation13.org > dmdoc/CNAME + echo docs.cm-ss13.com > dmdoc/CNAME - name: Deploy uses: JamesIves/github-pages-deploy-action@3.7.1 with: diff --git a/.github/workflows/run_approval.yml b/.github/workflows/run_approval.yml index 1708d41949f4..1d452c5f8aa7 100644 --- a/.github/workflows/run_approval.yml +++ b/.github/workflows/run_approval.yml @@ -1,11 +1,11 @@ name: Automatic Approve Workflows on: - schedule: + schedule: - cron: "*/10 * * * *" jobs: automatic-approve: name: Automatic Approve Workflows - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: Automatic Approve uses: mheap/automatic-approve-action@v1 diff --git a/.github/workflows/run_unit_tests.yml b/.github/workflows/run_unit_tests.yml index 8c2e7421b6a5..539b0fa01082 100644 --- a/.github/workflows/run_unit_tests.yml +++ b/.github/workflows/run_unit_tests.yml @@ -15,7 +15,7 @@ on: type: string jobs: run_unit_tests: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Restore BYOND cache @@ -27,7 +27,7 @@ jobs: run: | sudo dpkg --add-architecture i386 sudo apt update || true - sudo apt install -o APT::Immediate-Configure=false libssl1.1:i386 + sudo apt install -o APT::Immediate-Configure=false zlib1g-dev:i386 libssl-dev:i386 bash tools/ci/install_rust_g.sh - name: Configure version run: | diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index fe2417ca3eb8..13cb50704387 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -7,7 +7,7 @@ on: jobs: stale: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/stale@v4 diff --git a/.github/workflows/update_changelog.yml b/.github/workflows/update_changelog.yml index b7d8702c5cc7..0b30a268d4aa 100644 --- a/.github/workflows/update_changelog.yml +++ b/.github/workflows/update_changelog.yml @@ -7,7 +7,7 @@ on: jobs: update-changelog: concurrency: changelog - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: "Check for ACTION_ENABLER secret and pass true to output if it exists to be checked by later steps" id: value_holder diff --git a/.github/workflows/update_tgs_dmapi.yml b/.github/workflows/update_tgs_dmapi.yml index d530718d12e3..b197e62f392f 100644 --- a/.github/workflows/update_tgs_dmapi.yml +++ b/.github/workflows/update_tgs_dmapi.yml @@ -7,7 +7,7 @@ on: jobs: update-dmapi: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest name: Update the TGS DMAPI steps: - name: Clone diff --git a/.gitignore b/.gitignore index 210efc84d75b..4d2b7e810de8 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,6 @@ test_environment.txt # byond-tracy backend, not shipped with the codebase so it shouldn't be maintained prof.dll libprof.so + +# OpenDream compatibility stuff +colonialmarines.json diff --git a/.vscode/settings.json b/.vscode/settings.json index 201562aaf7c7..c7b218b77591 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,7 +9,7 @@ "**/.pnp.*": true }, "editor.codeActionsOnSave": { - "source.fixAll.eslint": true + "source.fixAll.eslint": "explicit" }, "files.eol": "\n", "files.insertFinalNewline": true, diff --git a/README.md b/README.md index 94ccaf07031f..abac21f624f0 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,8 @@ ## CM-SS13 codebase -[![resentment](https://forthebadge.com/images/badges/built-with-resentment.svg)](https://www.monkeyuser.com/assets/images/2019/131-bug-free.png) [![resentment](https://forthebadge.com/images/badges/contains-technical-debt.svg)](https://user-images.githubusercontent.com/8171642/50290880-ffef5500-043a-11e9-8270-a2e5b697c86c.png) [![forinfinityandbyond](https://user-images.githubusercontent.com/5211576/29499758-4efff304-85e6-11e7-8267-62919c3688a9.gif)](https://www.reddit.com/r/SS13/comments/5oplxp/what_is_the_main_problem_with_byond_as_an_engine/dclbu1a) + [![forinfinityandbyond](https://user-images.githubusercontent.com/5211576/29499758-4efff304-85e6-11e7-8267-62919c3688a9.gif)](https://www.reddit.com/r/SS13/comments/5oplxp/what_is_the_main_problem_with_byond_as_an_engine/dclbu1a) [![Build Status](https://github.com/cmss13-devs/cmss13/workflows/CI%20Suite/badge.svg)](https://github.com/cmss13-devs/cmss13/actions?query=workflow%3A%22CI+Suite%22) - * **Website:** https://forum.cm-ss13.com/ * **Code:** https://github.com/cmss13-devs/cmss13 * **Wiki:** https://cm-ss13.com/wiki/Main_Page @@ -36,5 +35,3 @@ The code for CM-SS13 is licensed under the [GNU Affero General Public License v3 Assets including icons and sound are under the [Creative Commons 3.0 BY-SA license](https://creativecommons.org/licenses/by-sa/3.0/) unless otherwise indicated. Authorship for assets including art and sound under the CC BY-SA license is defined as the active development team of CM-SS13 unless stated otherwise (by author of the commit). All code is assumed to be licensed under AGPL v3 unless stated otherwise by file header. Commits before 9a001bf520f889b434acd295253a1052420860af are assumed to be licensed under GPLv3 and can be used in closed source repo. - - diff --git a/code/__DEFINES/ARES.dm b/code/__DEFINES/ARES.dm new file mode 100644 index 000000000000..a1b82af25821 --- /dev/null +++ b/code/__DEFINES/ARES.dm @@ -0,0 +1,72 @@ +/// Generic access for 1:1 conversations with ARES and unrestricted commands. +#define ARES_ACCESS_BASIC 0 +/// Secure Access, can read ARES Announcements and Bioscans. +#define ARES_ACCESS_COMMAND 1 +#define ARES_ACCESS_JOE 2 +/// CL, can read Apollo Log and also Delete Announcements. +#define ARES_ACCESS_CORPORATE 3 +/// Senior Command, can Delete Bioscans. +#define ARES_ACCESS_SENIOR 4 +/// Synth, CE & Commanding Officer, can read the access log. +#define ARES_ACCESS_CE 5 +#define ARES_ACCESS_SYNTH 6 +#define ARES_ACCESS_CO 7 +/// High Command, can read the deletion log. +#define ARES_ACCESS_HIGH 8 +#define ARES_ACCESS_WY_COMMAND 9 +/// Debugging. Allows me to view everything without using a high command rank. Unlikely to stay in a full merge. +#define ARES_ACCESS_DEBUG 10 + +#define ARES_RECORD_ANNOUNCE "Announcement Record" +#define ARES_RECORD_ANTIAIR "AntiAir Control Log" +#define ARES_RECORD_ASRS "Requisition Record" +#define ARES_RECORD_BIOSCAN "Bioscan Record" +#define ARES_RECORD_BOMB "Orbital Bombardment Record" +#define ARES_RECORD_DELETED "Deleted Record" +#define ARES_RECORD_SECURITY "Security Update" +#define ARES_RECORD_MAINTENANCE "Maintenance Ticket" +#define ARES_RECORD_ACCESS "Access Ticket" +#define ARES_RECORD_FLIGHT "Flight Record" + +/// Not by ARES logged through marine_announcement() +#define ARES_LOG_NONE 0 +/// Logged with all announcements +#define ARES_LOG_MAIN 1 +/// Logged in the security updates +#define ARES_LOG_SECURITY 2 + +// Access levels specifically for Working Joe management console +#define APOLLO_ACCESS_LOGOUT 0 +#define APOLLO_ACCESS_REQUEST 1 +#define APOLLO_ACCESS_REPORTER 2 +#define APOLLO_ACCESS_TEMP 3 +#define APOLLO_ACCESS_AUTHED 4 +#define APOLLO_ACCESS_JOE 5 +#define APOLLO_ACCESS_DEBUG 6 + +/// Ticket statuses, both for Access and Maintenance +/// Pending assignment/rejection +#define TICKET_PENDING "pending" +/// Assigned to a WJ +#define TICKET_ASSIGNED "assigned" +/// Cancelled by reporter +#define TICKET_CANCELLED "cancelled" +/// Rejected by WJs +#define TICKET_REJECTED "rejected" +/// Completed by WJs +#define TICKET_COMPLETED "completed" + +/// Granted Access Ticket +#define TICKET_GRANTED "granted" +/// Revoked Access Ticket +#define TICKET_REVOKED "revoked" +/// Self-Returned Access Ticket +#define TICKET_RETURNED "returned" + +/// Checks for if buttons can be used, these may yet be removed and internalised to the UI programming +#define TICKET_OPEN "OPEN" +#define TICKET_CLOSED "CLOSED" + +/// Cooldowns +#define COOLDOWN_ARES_SENSOR 60 SECONDS +#define COOLDOWN_ARES_ACCESS_CONTROL 20 SECONDS diff --git a/code/__DEFINES/__game.dm b/code/__DEFINES/__game.dm index 100a45ff6a94..dfa335375b67 100644 --- a/code/__DEFINES/__game.dm +++ b/code/__DEFINES/__game.dm @@ -39,6 +39,7 @@ block( \ #define MAP_RUNTIME "USS Runtime" #define MAP_LV522_CHANCES_CLAIM "LV-522 Chance's Claim" // Highpop Only #define MAP_NEW_VARADERO "New Varadero"//ice colony underground but as its own map +#define MAP_CHINOOK "Chinook 91 GSO" //admin level #define GAMEMODE_WHISKEY_OUTPOST "Whiskey Outpost" #define GAMEMODE_HIVE_WARS "Hive Wars" @@ -102,10 +103,11 @@ block( \ #define SOUND_MIDI (1<<1) #define SOUND_AMBIENCE (1<<2) #define SOUND_LOBBY (1<<3) -#define SOUND_INTERNET (1<<4) +#define SOUND_INTERNET (1<<4) // Unused currently. Kept for default prefs compat only #define SOUND_REBOOT (1<<5) #define SOUND_ADMIN_MEME (1<<6) #define SOUND_ADMIN_ATMOSPHERIC (1<<7) +#define SOUND_ARES_MESSAGE (1<<8) //toggles_chat #define CHAT_OOC (1<<0) @@ -122,6 +124,7 @@ block( \ #define CHAT_FFATTACKLOGS (1<<11) #define CHAT_GHOSTHIVEMIND (1<<12) #define CHAT_NICHELOGS (1<<13) +#define CHAT_LISTENINGBUG (1<<14) //toggles_ghost #define GHOST_HEALTH_SCAN (1<<0) @@ -149,6 +152,7 @@ block( \ //toggles_admin /// Splits admin tabs in Statpanel #define SPLIT_ADMIN_TABS (1<<0) +#define ADMIN_STEALTHMODE (1<<1) //================================================= @@ -279,8 +283,7 @@ block( \ // Helpers /// Only use the CEILING_PROTECTION_TIER_X defines for `protection_level` -#define CEILING_IS_PROTECTED(ceiling, protection_level) (ceiling >= protection_level) - +#define CEILING_IS_PROTECTED(ceiling, protection_level) ((ceiling) >= (protection_level)) // Default font settings #define FONT_SIZE "5pt" @@ -390,6 +393,7 @@ block( \ #define FIRE_MISSION_WEAPON_REMOVED 8 #define FIRE_MISSION_WEAPON_UNUSABLE 16 #define FIRE_MISSION_WEAPON_OUT_OF_AMMO 32 +#define FIRE_MISSION_BAD_DIRECTION 64 #define FIRE_MISSION_NOT_EXECUTABLE -1 //Defines for firemission state @@ -491,6 +495,18 @@ block( \ #define TURF_PROTECTION_CAS 2 #define TURF_PROTECTION_OB 3 +/// Convert a turf protection level to a ceiling protection level +/proc/get_ceiling_protection_level(turf_protection_level) + switch(turf_protection_level) + if(TURF_PROTECTION_OB) + return CEILING_PROTECTION_TIER_4 + if(TURF_PROTECTION_CAS) + return CEILING_PROTECTION_TIER_3 + if(TURF_PROTECTION_MORTAR) + return CEILING_PROTECTION_TIER_2 + else + return CEILING_NO_PROTECTION + // Anything above the deck boundary is the upper deck, anything below is the lower deck // This is exclusive, so anything ON the boundary is an edge case that's neither on the upper nor the lower deck #define ALMAYER_DECK_BOUNDARY 101 @@ -520,7 +536,7 @@ block( \ /// `amount` - The number to get per time /// `time` - The time period in which to gain this amount /// To be used with delta_time. Multiplied by 10 to convert from deciseconds to seconds -#define AMOUNT_PER_TIME(amount, time) ((amount / (time))*10) +#define AMOUNT_PER_TIME(amount, time) (((amount) / (time))*10) // Local message mode. Used to decide wheter message should be dispatched on the radio. #define MESSAGE_MODE_LOCAL 1 diff --git a/code/__DEFINES/_math.dm b/code/__DEFINES/_math.dm index 7f19c95b2bcf..f0281f51cedb 100644 --- a/code/__DEFINES/_math.dm +++ b/code/__DEFINES/_math.dm @@ -9,23 +9,6 @@ #define CARDINAL_DIRS list(1,2,4,8) #define CARDINAL_ALL_DIRS list(1,2,4,5,6,8,9,10) -//some colors -#define COLOR_RED "#FF0000" -#define COLOR_GREEN "#00FF00" -#define COLOR_BLUE "#0000FF" -#define COLOR_CYAN "#00FFFF" -#define COLOR_PINK "#FF00FF" -#define COLOR_YELLOW "#FFFF00" -#define COLOR_ORANGE "#FF9900" -#define COLOR_WHITE "#FFFFFF" -#define COLOR_BLACK "#000000" -#define COLOR_OIL "#030303" - -//Grass Colors -#define COLOR_G_ICE "#C7EDDE" //faded cyan -#define COLOR_G_DES "#FF7C1C" //bright orange -#define COLOR_G_JUNG "#64AA6E" //faded green - #define LEFT 1 #define RIGHT 2 @@ -38,10 +21,10 @@ #define MODULUS(x, y) ( (x) - (y) * round((x) / (y)) ) // Returns true if val is from min to max, inclusive. -#define ISINRANGE(val, min, max) (min <= val && val <= max) +#define ISINRANGE(val, min, max) ((min) <= (val) && (val) <= (max)) // Same as above, exclusive. -#define ISINRANGE_EX(val, min, max) (min < val && val < max) +#define ISINRANGE_EX(val, min, max) ((min) < (val) && (val) < (max)) // Will filter out extra rotations and negative rotations // E.g: 540 becomes 180. -180 becomes 180. @@ -49,3 +32,6 @@ /// Gets the sign of x, returns -1 if negative, 0 if 0, 1 if positive #define SIGN(x) ( ((x) > 0) - ((x) < 0) ) + +/// Performs a linear interpolation between a and b. Note that amount=0 returns a, amount=1 returns b, and amount=0.5 returns the mean of a and b. +#define LERP(a, b, amount) ( (amount) ? ((a) + ((b) - (a)) * (amount)) : (a) ) diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm index 8b9fe898c72c..be96a2e32b85 100644 --- a/code/__DEFINES/access.dm +++ b/code/__DEFINES/access.dm @@ -42,8 +42,20 @@ most of them are tied into map-placed objects. This should be reworked in the fu #define ACCESS_MARINE_OT 35 #define ACCESS_MARINE_SYNTH 36 +#define ACCESS_MARINE_ASO 37 +#define ACCESS_MARINE_CHAPLAIN 38 -//Surface access levels +// AI Core Accesses +/// Used in temporary passes +#define ACCESS_MARINE_AI_TEMP 90 +/// Used as dedicated access to ARES Core. +#define ACCESS_MARINE_AI 91 +/// Used to access Maintenance Protocols on ARES Interface. +#define ACCESS_ARES_DEBUG 92 + +//================================================= + +//Civilian access levels #define ACCESS_CIVILIAN_PUBLIC 100 #define ACCESS_CIVILIAN_LOGISTICS 101 #define ACCESS_CIVILIAN_ENGINEERING 102 @@ -51,15 +63,140 @@ most of them are tied into map-placed objects. This should be reworked in the fu #define ACCESS_CIVILIAN_BRIG 104 #define ACCESS_CIVILIAN_MEDBAY 105 #define ACCESS_CIVILIAN_COMMAND 106 +#define ACCESS_PRESS 110 + +///The generic "I'm a bad guy" access +#define ACCESS_ILLEGAL_PIRATE 120 + +//================================================= + +//Weyland Yutani access levels (200-229) +///Found on just about all corporate ID cards +#define ACCESS_WY_GENERAL 200 +///WY employee override for most colonial areas +#define ACCESS_WY_COLONIAL 201 +#define ACCESS_WY_MEDICAL 202 +#define ACCESS_WY_SECURITY 203 +#define ACCESS_WY_ENGINEERING 204 +#define ACCESS_WY_FLIGHT 205 +#define ACCESS_WY_RESEARCH 206 +///WY access given to field executives, like a marine liaison. +#define ACCESS_WY_EXEC 207 + +#define ACCESS_WY_PMC 210 +#define ACCESS_WY_PMC_TL 211 +#define ACCESS_WY_ARMORY 212 +///Secret research or other projects with highly restricted access +#define ACCESS_WY_SECRETS 213 + +#define ACCESS_WY_LEADERSHIP 215 +///Senior leadership, the highest ranks +#define ACCESS_WY_SENIOR_LEAD 216 + +//================================================= + +//Union of Progressive Peoples access levels (230-259) +///Found on just about all Union ID cards +#define ACCESS_UPP_GENERAL 230 +#define ACCESS_UPP_MEDICAL 231 +#define ACCESS_UPP_ENGINEERING 232 +#define ACCESS_UPP_SECURITY 233 +#define ACCESS_UPP_ARMORY 234 +#define ACCESS_UPP_FLIGHT 235 +#define ACCESS_UPP_RESEARCH 236 + +#define ACCESS_UPP_COMMANDO 239 +#define ACCESS_UPP_LEADERSHIP 240 +///Senior leadership, the highest ranks +#define ACCESS_UPP_SENIOR_LEAD 241 -//Special access levels. Should be alright to modify these. -#define ACCESS_WY_PMC_GREEN 180 -#define ACCESS_WY_PMC_ORANGE 181 -#define ACCESS_WY_PMC_RED 182 -#define ACCESS_WY_PMC_BLACK 183 -#define ACCESS_WY_PMC_WHITE 184 -#define ACCESS_WY_CORPORATE 200 -#define ACCESS_ILLEGAL_PIRATE 201 -#define ACCESS_WY_CORPORATE_DS 202 -#define ACCESS_PRESS 203 //================================================= + +//Colonial Liberation Front access levels (260-289) +///Found on just about all CLF ID cards +#define ACCESS_CLF_GENERAL 260 +#define ACCESS_CLF_MEDICAL 261 +#define ACCESS_CLF_ENGINEERING 262 +#define ACCESS_CLF_SECURITY 263 +#define ACCESS_CLF_ARMORY 264 +#define ACCESS_CLF_FLIGHT 265 + +#define ACCESS_CLF_LEADERSHIP 270 +///Senior leadership, the highest ranks +#define ACCESS_CLF_SENIOR_LEAD 271 + +//================================================= + +//Three World Empire access levels (290-319) +///Found on just about all Imperial ID cards +#define ACCESS_TWE_GENERAL 290 +#define ACCESS_TWE_MEDICAL 291 +#define ACCESS_TWE_ENGINEERING 292 +#define ACCESS_TWE_SECURITY 293 +#define ACCESS_TWE_ARMORY 294 +#define ACCESS_TWE_FLIGHT 295 +#define ACCESS_TWE_RESEARCH 296 + +#define ACCESS_TWE_COMMANDO 299 +#define ACCESS_TWE_LEADERSHIP 300 +///Senior leadership, the highest ranks +#define ACCESS_TWE_SENIOR_LEAD 301 + +//================================================= + +// Yautja Access Levels +/// Requires a visible ID chip to open +#define ACCESS_YAUTJA_SECURE 390 +/// Elders+ only +#define ACCESS_YAUTJA_ELDER 391 +/// Ancients only +#define ACCESS_YAUTJA_ANCIENT 392 + +/// Anything in a tutorial sequence that shouldn't be accessed +#define ACCESS_TUTORIAL_LOCKED 998 +///Temporary, just so I can flag places I need to change +#define ACCESS_COME_BACK_TO_ME 999 + + +//Big lists of access codes, so I can get rid of the half a million different "get_bla_bla_bla_access" procs. +//See /proc/get_access(access_list = ACCESS_LIST_GLOBAL) +///Well... everything (non Yautja). +#define ACCESS_LIST_GLOBAL "EVERYTHING" + +///Most of the USCM Access Levels used on the USS Almayer, excluding highly restricted ones. +#define ACCESS_LIST_MARINE_MAIN "Almayer (Main)" +///All USCM Access levels used on the USS Almayer +#define ACCESS_LIST_MARINE_ALL "Almayer (ALL)" +///Used by the Wey-Yu - USCM Liaison +#define ACCESS_LIST_MARINE_LIAISON "Wey-Yu (Liaison)" + +///The accesses granted to emergency responders. +#define ACCESS_LIST_EMERGENCY_RESPONSE "Almayer (ERT)" +///Access used by United Americas responders. +#define ACCESS_LIST_UA "United Americas" + +///Generic/basic access to Wey-Yu stuff +#define ACCESS_LIST_WY_BASE "Wey-Yu (Basic)" +///Wey-Yu Corp Security access. +#define ACCESS_LIST_WY_GOON "Wey-Yu (Goons)" +///Wey-Yu PMCs access. +#define ACCESS_LIST_WY_PMC "Wey-Yu (PMC)" +///Access levels for WY senior leadership +#define ACCESS_LIST_WY_SENIOR "Wey-Yu (Senior Lead)" +///All access levels associated with Weyland Yutani +#define ACCESS_LIST_WY_ALL "Wey-Yu (ALL)" + +///All the access levels in the civillian category, excluding Press. +#define ACCESS_LIST_COLONIAL_ALL "Colonial (ALL)" +///Used by the Wey-Yu - Civil Authority Liaison +#define ACCESS_LIST_CIVIL_LIAISON "Colonial (Liaison)" +///The access used by delivery ERT (Pizza/Souto) +#define ACCESS_LIST_DELIVERY "Delivery" + +///All access levels associated with UPP +#define ACCESS_LIST_UPP_ALL "UPP (ALL)" + +///Generic/basic access to CLF stuff +#define ACCESS_LIST_CLF_BASE "CLF (Basic)" +///All access levels associated with CLF +#define ACCESS_LIST_CLF_ALL "CLF (ALL)" diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 95b98646c616..31103fee93ee 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -22,7 +22,7 @@ #define NOTE_SYNTHETIC 4 #define NOTE_YAUTJA 5 ///Note categories in text form, in order of their numerical #defines. -var/global/list/note_categories = list("Admin", "Merit", "Commanding Officer", "Synthetic", "Yautja") +GLOBAL_LIST_INIT(note_categories, list("Admin", "Merit", "Commanding Officer", "Synthetic", "Yautja")) #define ADMIN_FLW(user) "(FLW)" #define ADMIN_PP(user) "(PP)" @@ -48,6 +48,8 @@ var/global/list/note_categories = list("Admin", "Merit", "Commanding Officer", " #define CC_MARK(user) "(MARK)" #define CC_REPLY(user) "(RPLY)" #define OBSERVER_JMP(observer, atom) atom ? "(JMP)" : "" +#define ARES_MARK(user) "(MARK)" +#define ARES_REPLY(user, ref) "(RPLY)" /atom/proc/Admin_Coordinates_Readable(area_name, admin_jump_ref) var/turf/T = get_turf(src) @@ -69,3 +71,6 @@ var/global/list/note_categories = list("Admin", "Merit", "Commanding Officer", " #define ANTIGRIEF_NEW_PLAYERS 1 /// Enables antigrief entirely: Nobody can activate explosives on the Almayer, unless the ship crashed. #define ANTIGRIEF_ENABLED 2 + +/// Proc has been blocked by IsAdminAdvancedProcCall() +#define PROC_BLOCKED "PROCCALL BLOCKED" diff --git a/code/__DEFINES/alerts.dm b/code/__DEFINES/alerts.dm new file mode 100644 index 000000000000..b4fc5e04c9c7 --- /dev/null +++ b/code/__DEFINES/alerts.dm @@ -0,0 +1,7 @@ +#define ALERT_BUCKLED "buckled" +#define ALERT_HANDCUFFED "handcuffed" +#define ALERT_LEGCUFFED "legcuffed" +#define ALERT_FLOORED "floored" +#define ALERT_INCAPACITATED "incapacitated" +#define ALERT_KNOCKEDOUT "knockedout" +#define ALERT_IMMOBILIZED "immobilized" diff --git a/code/__DEFINES/assert.dm b/code/__DEFINES/assert.dm new file mode 100644 index 000000000000..cff78107714c --- /dev/null +++ b/code/__DEFINES/assert.dm @@ -0,0 +1,13 @@ +#undef ASSERT + +/// Override BYOND's native ASSERT to optionally specify a message +#define ASSERT(condition, message...) \ + if (!(condition)) { \ + CRASH(assertion_message(__FILE__, __LINE__, #condition, ##message)) \ + } + +/proc/assertion_message(file, line, condition, message) + if (!isnull(message)) + message = " - [message]" + + return "[file]:[line]:Assertion failed: [condition][message]" diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 5869650da273..999a840b7fdd 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -23,6 +23,8 @@ #define T0C 273.15 // 0degC #define T20C 293.15 // 20degC +#define T90C 363.15 // 90degC +#define T120C 393.15 // 120degC #define TCMB 2.7 // -270.3degC #define ICE_COLONY_TEMPERATURE 223 //-50degC #define SOROKYNE_TEMPERATURE 223 // Same as Ice for now @@ -35,5 +37,7 @@ #define GAS_TYPE_PHORON "phoron" #define GAS_TYPE_CO2 "carbon dioxyde" -/// This was a define, but I changed it to a variable so it can be changed in-game.(kept the all-caps definition because... code...) -Errorage -var/MAX_EXPLOSION_RANGE = 14 +/// Used in /obj/structure/pipes/vents/proc/create_gas +#define VENT_GAS_SMOKE "Smoke" +#define VENT_GAS_CN20 "CN20 Nerve Gas" +#define VENT_GAS_CN20_XENO "CN20-X Nerve Gas" diff --git a/code/__DEFINES/autofire.dm b/code/__DEFINES/autofire.dm new file mode 100644 index 000000000000..934cdcd7dc79 --- /dev/null +++ b/code/__DEFINES/autofire.dm @@ -0,0 +1,4 @@ +// Controls how many buckets should be kept, each representing a tick. Max is ten seconds, to have better perf. +#define AUTOFIRE_BUCKET_LEN (world.fps * 10) +/// Helper for getting the correct bucket +#define AUTOFIRE_BUCKET_POS(next_fire) (((round((next_fire - SSautomatedfire.head_offset) / world.tick_lag) + 1) % AUTOFIRE_BUCKET_LEN) || AUTOFIRE_BUCKET_LEN) diff --git a/code/__DEFINES/bullet_traits.dm b/code/__DEFINES/bullet_traits.dm index 0ca3bce2e602..40e250cd0dd2 100644 --- a/code/__DEFINES/bullet_traits.dm +++ b/code/__DEFINES/bullet_traits.dm @@ -3,7 +3,7 @@ // list of args if there are any args /// An entry to a list for giving projectiles bullet traits /// Must be placed inside of a list -#define BULLET_TRAIT_ENTRY(trait, args...) trait = #args ? list(##args) : null +#define BULLET_TRAIT_ENTRY(trait, args...) trait = list(##args) /// An entry to a list for giving projectiles bullet traits with a unique ID /// Must be placed inside of a list #define BULLET_TRAIT_ENTRY_ID(id, trait, args...) id = list(trait, ##args) diff --git a/code/__DEFINES/camera.dm b/code/__DEFINES/camera.dm index 58b1b8acbd84..9d797b964d61 100644 --- a/code/__DEFINES/camera.dm +++ b/code/__DEFINES/camera.dm @@ -6,6 +6,7 @@ #define CAMERA_NET_ALAMO "Alamo" #define CAMERA_NET_NORMANDY "Normandy" #define CAMERA_NET_COLONY "Colony" +#define CAMERA_NET_ARES "ARES" #define CAMERA_NET_MILITARY "Military" #define CAMERA_NET_OVERWATCH "Overwatch" diff --git a/code/__DEFINES/chat.dm b/code/__DEFINES/chat.dm index 85966e4032e2..f2db3980e887 100644 --- a/code/__DEFINES/chat.dm +++ b/code/__DEFINES/chat.dm @@ -6,6 +6,7 @@ #define MESSAGE_TYPE_SYSTEM "system" #define MESSAGE_TYPE_LOCALCHAT "localchat" #define MESSAGE_TYPE_RADIO "radio" +#define MESSAGE_TYPE_HIVEMIND "hivemind" #define MESSAGE_TYPE_INFO "info" #define MESSAGE_TYPE_WARNING "warning" #define MESSAGE_TYPE_DEADCHAT "deadchat" diff --git a/code/__DEFINES/chemistry.dm b/code/__DEFINES/chemistry.dm index 9a29754381f3..078ccbdc2d94 100644 --- a/code/__DEFINES/chemistry.dm +++ b/code/__DEFINES/chemistry.dm @@ -49,6 +49,7 @@ // Nutrition levels #define NUTRITION_MAX 550 +#define NUTRITION_HIGH 540 #define NUTRITION_NORMAL 400 #define NUTRITION_LOW 250 #define NUTRITION_VERYLOW 50 diff --git a/code/__DEFINES/clans.dm b/code/__DEFINES/clans.dm index 54c9d11616e5..576bbf6b76d5 100644 --- a/code/__DEFINES/clans.dm +++ b/code/__DEFINES/clans.dm @@ -49,26 +49,6 @@ /// Scales with clan size #define CLAN_LIMIT_SIZE 2 -var/global/list/datum/rank/clan_ranks = list( - CLAN_RANK_UNBLOODED = new /datum/rank/unblooded(), - CLAN_RANK_YOUNG = new /datum/rank/young(), - CLAN_RANK_BLOODED = new /datum/rank/blooded(), - CLAN_RANK_ELITE = new /datum/rank/elite(), - CLAN_RANK_ELDER = new /datum/rank/elder(), - CLAN_RANK_LEADER = new /datum/rank/leader(), - CLAN_RANK_ADMIN = new /datum/rank/ancient() -) - -var/global/list/clan_ranks_ordered = list( - CLAN_RANK_UNBLOODED = CLAN_RANK_UNBLOODED_INT, - CLAN_RANK_YOUNG = CLAN_RANK_YOUNG_INT, - CLAN_RANK_BLOODED = CLAN_RANK_BLOODED_INT, - CLAN_RANK_ELITE = CLAN_RANK_ELITE_INT, - CLAN_RANK_ELDER = CLAN_RANK_ELDER_INT, - CLAN_RANK_LEADER = CLAN_RANK_LEADER_INT, - CLAN_RANK_ADMIN = CLAN_RANK_ADMIN_INT -) - #define CLAN_HREF "clan_href" #define CLAN_TARGET_HREF "clan_target_href" diff --git a/code/__DEFINES/client_prefs.dm b/code/__DEFINES/client_prefs.dm index ef5ff00e4ed6..5337f64d9e46 100644 --- a/code/__DEFINES/client_prefs.dm +++ b/code/__DEFINES/client_prefs.dm @@ -1,6 +1,7 @@ #define BE_ALIEN_AFTER_DEATH (1<<0) #define BE_AGENT (1<<1) +//toggle_prefs bits from /datum/preferences #define TOGGLE_IGNORE_SELF (1<<0) // Determines whether you will not hurt yourself when clicking yourself #define TOGGLE_HELP_INTENT_SAFETY (1<<1) // Determines whether help intent will be completely harmless #define TOGGLE_MIDDLE_MOUSE_CLICK (1<<2) // This toggles whether selected ability for xeno uses middle mouse clicking or shift clicking @@ -13,7 +14,7 @@ // and put the empty magazine in your hand #define TOGGLE_AUTOMATIC_PUNCTUATION (1<<7) // Whether your sentences will automatically be punctuated with a period #define TOGGLE_COMBAT_CLICKDRAG_OVERRIDE (1<<8) // Whether disarm/harm intents cause clicks to trigger immediately when the mouse button is depressed. -#define TOGGLE_ALTERNATING_DUAL_WIELD (1<<9) // Whether dual-wielding fires both guns at once or swaps between them. +#define TOGGLE_ALTERNATING_DUAL_WIELD (1<<9) // Whether dual-wielding fires both guns at once or swaps between them, OUTDATED, used to update savefiles, now dual_wield_pref #define TOGGLE_FULLSCREEN (1<<10) // See /client/proc/toggle_fullscreen in client_procs.dm #define TOGGLE_MEMBER_PUBLIC (1<<11) //determines if you get a byond logo by your name in ooc if you're a member or not #define TOGGLE_OOC_FLAG (1<<12) // determines if your country flag appears by your name in ooc chat @@ -22,6 +23,7 @@ #define TOGGLE_VEND_ITEM_TO_HAND (1<<15) // This toggles whether items from vendors will be automatically put into your hand. #define TOGGLE_START_JOIN_CURRENT_SLOT (1<<16) // Whether joining at roundstart ignores assigned character slot for the job and uses currently selected slot. #define TOGGLE_LATE_JOIN_CURRENT_SLOT (1<<17) //Whether joining during the round ignores assigned character slot for the job and uses currently selected slot. +#define TOGGLE_ABILITY_DEACTIVATION_OFF (1<<18) // This toggles whether selecting the same ability again can toggle it off #define JOB_SLOT_RANDOMISED_SLOT -1 #define JOB_SLOT_CURRENT_SLOT 0 @@ -31,3 +33,11 @@ #define AGE_MIN 19 //youngest a character can be #define AGE_MAX 90 //oldest a character can be //no. you are not allowed to be 160. #define MAX_GEAR_COST 7 //Used in chargen for loadout limit. + +///dual_wield_pref from /datum/preferences +///Fire both weapons when dual wielding +#define DUAL_WIELD_FIRE 0 +///Swap to the other weapon when dual wielding +#define DUAL_WIELD_SWAP 1 +///Do nothing when dual wielding +#define DUAL_WIELD_NONE 2 diff --git a/code/__DEFINES/colours.dm b/code/__DEFINES/colours.dm index b7457f9ae478..e9a03a6382da 100644 --- a/code/__DEFINES/colours.dm +++ b/code/__DEFINES/colours.dm @@ -1,211 +1,152 @@ // tg port thing -//different types of atom colourations -/// Only used by rare effects like greentext colouring mobs and when admins varedit color -#define ADMIN_COLOUR_PRIORITY 1 +//different types of atom colorations +/// Only used by rare effects like greentext coloring mobs and when admins varedit color +#define ADMIN_COLOR_PRIORITY 1 /// e.g. purple effect of the revenant on a mob, black effect when mob electrocuted -#define TEMPORARY_COLOUR_PRIORITY 2 -/// Colour splashed onto an atom (e.g. paint on turf) -#define WASHABLE_COLOUR_PRIORITY 3 -/// Colour inherent to the atom (e.g. blob color) -#define FIXED_COLOUR_PRIORITY 4 +#define TEMPORARY_COLOR_PRIORITY 2 +/// Color splashed onto an atom (e.g. paint on turf) +#define WASHABLE_COLOR_PRIORITY 3 +/// Color inherent to the atom (e.g. blob color) +#define FIXED_COLOR_PRIORITY 4 ///how many color priority levels there are. -#define COLOUR_PRIORITY_AMOUNT 4 - -#define COLOUR_DARKMODE_BACKGROUND "#202020" -#define COLOUR_DARKMODE_DARKBACKGROUND "#171717" -#define COLOUR_DARKMODE_TEXT "#a4bad6" - -#define COLOUR_WHITE "#FFFFFF" -#define COLOUR_VERY_LIGHT_GRAY "#EEEEEE" -#define COLOUR_SILVER "#C0C0C0" -#define COLOUR_GRAY "#808080" -#define COLOUR_FLOORTILE_GRAY "#8D8B8B" -#define COLOUR_DARK "#454545" -#define COLOUR_ALMOST_BLACK "#333333" -#define COLOUR_BLACK "#000000" -#define COLOUR_HALF_TRANSPARENT_BLACK "#0000007A" - -#define COLOUR_RED "#FF0000" -#define COLOUR_MOSTLY_PURE_RED "#FF3300" -#define COLOUR_DARK_RED "#A50824" -#define COLOUR_RED_LIGHT "#FF3333" -#define COLOUR_MAROON "#800000" -#define COLOUR_VIVID_RED "#FF3232" -#define COLOUR_LIGHT_GRAYISH_RED "#E4C7C5" -#define COLOUR_SOFT_RED "#FA8282" -#define COLOUR_CULT_RED "#960000" -#define COLOUR_BUBBLEGUM_RED "#950A0A" - -#define COLOUR_YELLOW "#FFFF00" -#define COLOUR_VIVID_YELLOW "#FBFF23" -#define COLOUR_VERY_SOFT_YELLOW "#FAE48E" - -#define COLOUR_OLIVE "#808000" -#define COLOUR_VIBRANT_LIME "#00FF00" -#define COLOUR_LIME "#32CD32" -#define COLOUR_DARK_LIME "#00aa00" -#define COLOUR_VERY_PALE_LIME_GREEN "#DDFFD3" -#define COLOUR_VERY_DARK_LIME_GREEN "#003300" -#define COLOUR_GREEN "#008000" -#define COLOUR_DARK_MODERATE_LIME_GREEN "#44964A" - -#define COLOUR_CYAN "#00FFFF" -#define COLOUR_DARK_CYAN "#00A2FF" -#define COLOUR_TEAL "#008080" -#define COLOUR_BLUE "#0000FF" -#define COLOUR_STRONG_BLUE "#1919c8" -#define COLOUR_BRIGHT_BLUE "#2CB2E8" -#define COLOUR_MODERATE_BLUE "#555CC2" -#define COLOUR_AMETHYST "#822BFF" -#define COLOUR_BLUE_LIGHT "#33CCFF" -#define COLOUR_NAVY "#000080" -#define COLOUR_BLUE_GRAY "#75A2BB" - -#define COLOUR_PINK "#FFC0CB" -#define COLOUR_LIGHT_PINK "#ff3cc8" -#define COLOUR_MOSTLY_PURE_PINK "#E4005B" -#define COLOUR_BLUSH_PINK "#DE5D83" -#define COLOUR_MAGENTA "#FF00FF" -#define COLOUR_STRONG_MAGENTA "#B800B8" -#define COLOUR_PURPLE "#800080" -#define COLOUR_VIOLET "#B900F7" -#define COLOUR_STRONG_VIOLET "#6927c5" - -#define COLOUR_ORANGE "#FF9900" -#define COLOUR_MOSTLY_PURE_ORANGE "#ff8000" -#define COLOUR_TAN_ORANGE "#FF7B00" -#define COLOUR_BRIGHT_ORANGE "#E2853D" -#define COLOUR_LIGHT_ORANGE "#ffc44d" -#define COLOUR_PALE_ORANGE "#FFBE9D" -#define COLOUR_BEIGE "#CEB689" -#define COLOUR_DARK_ORANGE "#C3630C" -#define COLOUR_DARK_MODERATE_ORANGE "#8B633B" - -#define COLOUR_BROWN "#BA9F6D" -#define COLOUR_DARK_BROWN "#997C4F" -#define COLOUR_ORANGE_BROWN "#a9734f" - -//Colour defines used by the soapstone (based on readability against grey tiles) -#define COLOUR_SOAPSTONE_PLASTIC "#a19d94" -#define COLOUR_SOAPSTONE_IRON "#b2b2b2" -#define COLOUR_SOAPSTONE_BRONZE "#FE8001" -#define COLOUR_SOAPSTONE_SILVER "#FFFFFF" -#define COLOUR_SOAPSTONE_GOLD "#FFD900" -#define COLOUR_SOAPSTONE_DIAMOND "#00ffee" - -#define COLOUR_GREEN_GRAY "#99BB76" -#define COLOUR_RED_GRAY "#B4696A" -#define COLOUR_PALE_BLUE_GRAY "#98C5DF" -#define COLOUR_PALE_GREEN_GRAY "#B7D993" -#define COLOUR_PALE_RED_GRAY "#D59998" -#define COLOUR_PALE_PURPLE_GRAY "#CBB1CA" -#define COLOUR_PURPLE_GRAY "#AE8CA8" - -//Colour defines used by the assembly detailer. -#define COLOUR_ASSEMBLY_BLACK "#545454" -#define COLOUR_ASSEMBLY_BGRAY "#9497AB" -#define COLOUR_ASSEMBLY_WHITE "#E2E2E2" -#define COLOUR_ASSEMBLY_RED "#CC4242" -#define COLOUR_ASSEMBLY_ORANGE "#E39751" -#define COLOUR_ASSEMBLY_BEIGE "#AF9366" -#define COLOUR_ASSEMBLY_BROWN "#97670E" -#define COLOUR_ASSEMBLY_GOLD "#AA9100" -#define COLOUR_ASSEMBLY_YELLOW "#CECA2B" -#define COLOUR_ASSEMBLY_GURKHA "#999875" -#define COLOUR_ASSEMBLY_LGREEN "#789876" -#define COLOUR_ASSEMBLY_GREEN "#44843C" -#define COLOUR_ASSEMBLY_LBLUE "#5D99BE" -#define COLOUR_ASSEMBLY_BLUE "#38559E" -#define COLOUR_ASSEMBLY_PURPLE "#6F6192" - -///Colours for xenobiology vatgrowing -#define COLOUR_SAMPLE_YELLOW "#c0b823" -#define COLOUR_SAMPLE_PURPLE "#342941" -#define COLOUR_SAMPLE_GREEN "#98b944" -#define COLOUR_SAMPLE_BROWN "#91542d" -#define COLOUR_SAMPLE_GRAY "#5e5856" - -///Main colours for UI themes -#define COLOUR_THEME_MIDNIGHT "#6086A0" -#define COLOUR_THEME_PLASMAFIRE "#FFB200" -#define COLOUR_THEME_RETRO "#24CA00" -#define COLOUR_THEME_SLIMECORE "#4FB259" -#define COLOUR_THEME_OPERATIVE "#B8221F" -#define COLOUR_THEME_GLASS "#75A4C4" -#define COLOUR_THEME_CLOCKWORK "#CFBA47" - -///Colours for eigenstates -#define COLOUR_PERIWINKLEE "#9999FF" +#define COLOR_PRIORITY_AMOUNT 4 + +// BLACK AND WHITE COLOR DEFINE. + +/// White rgb(255, 255, 255) +#define COLOR_WHITE "#FFFFFF" +/// Black rgb(0, 0, 0) +#define COLOR_BLACK "#000000" + +// THE THREE PRIMARIES COLORS DEFINES. + +/// Red rgb(255, 0, 0) +#define COLOR_RED "#FF0000" +/// Green rgb(0, 255, 0) +#define COLOR_GREEN "#00FF00" +/// Blue rgb(0, 0, 255) +#define COLOR_BLUE "#0000FF" + +//mix of two full primary colors + +/// Cyan rgb(0, 255, 255) B + G +#define COLOR_CYAN "#00FFFF" +/// Magenta rgb(255, 0, 255) R+B +#define COLOR_MAGENTA "#FF00FF" +/// Yellow rgb(255, 255, 0) R+G +#define COLOR_YELLOW "#FFFF00" + +// colors define in use bellow + +/// Olive rgb(128, 128, 0) +#define COLOR_OLIVE "#808000" +/// Silver rgb(192, 192, 192) shade of grey +#define COLOR_SILVER "#C0C0C0" +/// Gray rgb(128, 128, 128) +#define COLOR_GRAY "#808080" + +#define COLOR_FLOORTILE_GRAY "#8D8B8B" + +#define COLOR_HALF_TRANSPARENT_BLACK "#0000007A" + +#define COLOR_DARK_RED "#A50824" + +/// Maroon rgb(128, 0, 0) shade of red +#define COLOR_MAROON "#800000" + +#define COLOR_VIVID_RED "#FF3232" +#define COLOR_LIGHT_GRAYISH_RED "#E4C7C5" +#define COLOR_SOFT_RED "#FA8282" + +#define COLOR_VERY_SOFT_YELLOW "#FAE48E" + +///light green rgb( 0, 128, 0) +#define COLOR_LIGHT_GREEN "#008000" +#define COLOR_DARK_MODERATE_LIME_GREEN "#44964A" + +#define COLOR_TEAL "#008080" + +#define COLOR_MODERATE_BLUE "#555CC2" +/// Purple rgb( 128, 0, 128) +#define COLOR_PURPLE "#800080" +#define COLOR_STRONG_VIOLET "#6927c5" + +#define LIGHT_BEIGE "#CEB689" +#define COLOR_DARK_MODERATE_ORANGE "#8B633B" + +#define COLOR_BROWN "#BA9F6D" +#define COLOR_DARK_BROWN "#997C4F" + /** - * Some defines to generalise colours used in lighting. + * Some defines to generalise Colors used in lighting. * - * Important note: colours can end up significantly different from the basic html picture, especially when saturated + * Important note: Colors can end up significantly different from the basic html picture, especially when saturated */ + /// Bright but quickly dissipating neon green. rgb(100, 200, 100) -#define LIGHT_COLOUR_GREEN "#64C864" -/// Electric green. rgb(0, 255, 0) -#define LIGHT_COLOUR_ELECTRIC_GREEN "#00FF00" +#define LIGHT_COLOR_GREEN "#64C864" /// Cold, diluted blue. rgb(100, 150, 250) -#define LIGHT_COLOUR_BLUE "#6496FA" +#define LIGHT_COLOR_BLUE "#6496FA" /// Light blueish green. rgb(125, 225, 175) -#define LIGHT_COLOUR_BLUEGREEN "#7DE1AF" +#define LIGHT_COLOR_BLUEGREEN "#7DE1AF" /// Diluted cyan. rgb(125, 225, 225) -#define LIGHT_COLOUR_CYAN "#7DE1E1" -/// Electric cyan rgb(0, 255, 255) -#define LIGHT_COLOUR_ELECTRIC_CYAN "#00FFFF" +#define LIGHT_COLOR_CYAN "#7DE1E1" /// More-saturated cyan. rgb(64, 206, 255) -#define LIGHT_COLOUR_LIGHT_CYAN "#40CEFF" +#define LIGHT_COLOR_LIGHT_CYAN "#40CEFF" /// Saturated blue. rgb(51, 117, 248) -#define LIGHT_COLOUR_DARK_BLUE "#6496FA" +#define LIGHT_COLOR_DARK_BLUE "#3375F8" /// Diluted, mid-warmth pink. rgb(225, 125, 225) -#define LIGHT_COLOUR_PINK "#E17DE1" +#define LIGHT_COLOR_PINK "#E17DE1" /// Dimmed yellow, leaning kaki. rgb(225, 225, 125) -#define LIGHT_COLOUR_YELLOW "#E1E17D" +#define LIGHT_COLOR_YELLOW "#E1E17D" /// Clear brown, mostly dim. rgb(150, 100, 50) -#define LIGHT_COLOUR_BROWN "#966432" +#define LIGHT_COLOR_BROWN "#966432" /// Mostly pure orange. rgb(250, 150, 50) -#define LIGHT_COLOUR_ORANGE "#FA9632" +#define LIGHT_COLOR_ORANGE "#FA9632" /// Light Purple. rgb(149, 44, 244) -#define LIGHT_COLOUR_PURPLE "#952CF4" +#define LIGHT_COLOR_PURPLE "#952CF4" /// Less-saturated light purple. rgb(155, 81, 255) -#define LIGHT_COLOUR_LAVENDER "#9B51FF" +#define LIGHT_COLOR_LAVENDER "#9B51FF" ///slightly desaturated bright yellow. -#define LIGHT_COLOUR_HOLY_MAGIC "#FFF743" +#define LIGHT_COLOR_HOLY_MAGIC "#FFF743" /// deep crimson -#define LIGHT_COLOUR_BLOOD_MAGIC "#D00000" +#define LIGHT_COLOR_BLOOD_MAGIC "#D00000" /* These ones aren't a direct color like the ones above, because nothing would fit */ /// Warm orange color, leaning strongly towards yellow. rgb(250, 160, 25) -#define LIGHT_COLOUR_FIRE "#FAA019" +#define LIGHT_COLOR_FIRE "#FAA019" /// Very warm yellow, leaning slightly towards orange. rgb(196, 138, 24) -#define LIGHT_COLOUR_LAVA "#C48A18" +#define LIGHT_COLOR_LAVA "#C48A18" /// Bright, non-saturated red. Leaning slightly towards pink for visibility. rgb(250, 100, 75) -#define LIGHT_COLOUR_FLARE "#FA644B" +#define LIGHT_COLOR_FLARE "#FA644B" /// Weird color, between yellow and green, very slimy. rgb(175, 200, 75) -#define LIGHT_COLOUR_SLIME_LAMP "#AFC84B" +#define LIGHT_COLOR_SLIME_LAMP "#AFC84B" /// Extremely diluted yellow, close to skin color (for some reason). rgb(250, 225, 175) -#define LIGHT_COLOUR_TUNGSTEN "#FAE1AF" +#define LIGHT_COLOR_TUNGSTEN "#FAE1AF" /// Barely visible cyan-ish hue, as the doctor prescribed. rgb(240, 250, 250) -#define LIGHT_COLOUR_HALOGEN "#F0FAFA" - -//The GAGS greyscale_colours for each department's computer/machine circuits -#define CIRCUIT_COLOUR_GENERIC "#1A7A13" -#define CIRCUIT_COLOUR_COMMAND "#1B4594" -#define CIRCUIT_COLOUR_SECURITY "#9A151E" -#define CIRCUIT_COLOUR_SCIENCE "#BC4A9B" -#define CIRCUIT_COLOUR_SERVICE "#92DCBA" -#define CIRCUIT_COLOUR_MEDICAL "#00CCFF" -#define CIRCUIT_COLOUR_ENGINEERING "#F8D700" -#define CIRCUIT_COLOUR_SUPPLY "#C47749" +#define LIGHT_COLOR_HALOGEN "#F0FAFA" /// The default color for admin say, used as a fallback when the preference is not enabled -#define DEFAULT_ASAY_COLOUR COLOUR_MOSTLY_PURE_RED -#define DEFAULT_HEX_COLOUR_LEN 6 +#define COLOR_MOSTLY_PURE_RED "#FF3300" +#define DEFAULT_ASAY_COLOR COLOR_MOSTLY_PURE_RED + +#define DEFAULT_HEX_COLOR_LEN 6 -// Colour filters +// Color filters /// Icon filter that creates ambient occlusion #define AMBIENT_OCCLUSION filter(type="drop_shadow", x=0, y=-2, size=4, border=4, color="#04080FAA") /// Icon filter that creates gaussian blur #define GAUSSIAN_BLUR(filter_size) filter(type="blur", size=filter_size) + +//some colors coming from _math.dm + +#define COLOR_ORANGE "#FF9900" +#define COLOR_OIL "#030303" + +//Grass Colors coming from _math.dm + +#define COLOR_G_ICE "#C7EDDE" //faded cyan +#define COLOR_G_DES "#FF7C1C" //bright orange +#define COLOR_G_JUNG "#64AA6E" //faded green diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 71c659054952..31df07648fc0 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -18,3 +18,20 @@ //the define for visible message range in combat #define COMBAT_MESSAGE_RANGE 3 #define DEFAULT_MESSAGE_RANGE 7 + +#define BAYONET_DRAW_DELAY (1 SECONDS) + +//Predator decloak multpliers based on the standard. +#define DECLOAK_STANDARD (10 SECONDS) +/// Forced for any unspecified reason. +#define DECLOAK_FORCED 1 +/// Caused by being worn by non humans. +#define DECLOAK_SPECIES 0.75 +/// Caused by fire extinguisher. +#define DECLOAK_EXTINGUISHER 1.5 +/// Caused by predalien screech. +#define DECLOAK_PREDALIEN 2 +/// Caused by being in a body of water. +#define DECLOAK_SUBMERGED 2 +/// Caused by an EMP. +#define DECLOAK_EMP 3 diff --git a/code/__DEFINES/configuration.dm b/code/__DEFINES/configuration.dm index d702d4097195..f0d64efb6dd7 100644 --- a/code/__DEFINES/configuration.dm +++ b/code/__DEFINES/configuration.dm @@ -8,3 +8,10 @@ //flags #define CONFIG_ENTRY_LOCKED (1<<0) //can't edit #define CONFIG_ENTRY_HIDDEN (1<<1) //can't see value + +#define ON_CONFIG_LOAD(type) \ +##type/New() { \ + . = ..(); \ + RegisterSignal(SSdcs, COMSIG_GLOB_CONFIG_LOADED, PROC_REF(__on_config_load)); \ +}; \ +##type/proc/__on_config_load() diff --git a/code/__DEFINES/conflict.dm b/code/__DEFINES/conflict.dm index 09be4793c552..a6a7aa53f182 100644 --- a/code/__DEFINES/conflict.dm +++ b/code/__DEFINES/conflict.dm @@ -26,7 +26,7 @@ #define AMMO_IGNORE_RESIST (1<<10) #define AMMO_BALLISTIC (1<<11) #define AMMO_IGNORE_COVER (1<<12) -// (1<<13) unused, previously was AMMO_SCANS_NEARBY +#define AMMO_ANTIVEHICLE (1<<13) #define AMMO_STOPPED_BY_COVER (1<<14) #define AMMO_SPECIAL_EMBED (1<<15) /// If the projectile hits a dense turf it'll do on_hit_turf on the turf just in front of the turf instead of on the turf itself @@ -54,30 +54,24 @@ #define GUN_TRIGGER_SAFETY (1<<1) #define GUN_UNUSUAL_DESIGN (1<<2) #define GUN_SILENCED (1<<3) -#define GUN_AUTOMATIC (1<<4) ///If checking for ammo with current.mag you have to check it against numerical values, as booleans will not trigger. -#define GUN_INTERNAL_MAG (1<<5) -#define GUN_AUTO_EJECTOR (1<<6) -#define GUN_AMMO_COUNTER (1<<7) -#define GUN_BURST_ON (1<<8) -#define GUN_BURST_FIRING (1<<9) -#define GUN_FLASHLIGHT_ON (1<<10) -#define GUN_WY_RESTRICTED (1<<11) -#define GUN_SPECIALIST (1<<12) -#define GUN_WIELDED_FIRING_ONLY (1<<13) -#define GUN_HAS_FULL_AUTO (1<<14) -#define GUN_FULL_AUTO_ON (1<<15) +#define GUN_INTERNAL_MAG (1<<4) +#define GUN_AUTO_EJECTOR (1<<5) +#define GUN_AMMO_COUNTER (1<<6) +#define GUN_BURST_FIRING (1<<7) +#define GUN_FLASHLIGHT_ON (1<<8) +#define GUN_WY_RESTRICTED (1<<9) +#define GUN_SPECIALIST (1<<10) +#define GUN_WIELDED_FIRING_ONLY (1<<11) /// removes unwielded accuracy and scatter penalties (not recoil) -#define GUN_ONE_HAND_WIELDED (1<<16) -#define GUN_ANTIQUE (1<<17) +#define GUN_ONE_HAND_WIELDED (1<<12) +#define GUN_ANTIQUE (1<<13) /// Whether the gun has been fired by its current user (reset upon `dropped()`) -#define GUN_RECOIL_BUILDUP (1<<18) -/// support weapon, bipod will grant IFF -#define GUN_SUPPORT_PLATFORM (1<<19) -#define GUN_BURST_ONLY (1<<20) -#define GUN_FULL_AUTO_ONLY (1<<21) +#define GUN_RECOIL_BUILDUP (1<<14) +/// support weapon, bipod will grant autofire +#define GUN_SUPPORT_PLATFORM (1<<15) /// No gun description, only base desc -#define GUN_NO_DESCRIPTION (1<<22) +#define GUN_NO_DESCRIPTION (1<<16) // NOTE: Don't add flags past 1<<23, it'll break things due to BYOND limitations. You can usually use a Component instead. #define USES_STREAKS (1<<0) @@ -85,15 +79,19 @@ #define MOVES_WHEN_LEVERING (1<<2) //Gun attachable related flags. -#define ATTACH_REMOVABLE 1 -#define ATTACH_ACTIVATION 2 +#define ATTACH_REMOVABLE (1<<0) +#define ATTACH_ACTIVATION (1<<1) /// for attachments that fire bullets -#define ATTACH_PROJECTILE 4 -#define ATTACH_RELOADABLE 8 +#define ATTACH_PROJECTILE (1<<2) +#define ATTACH_RELOADABLE (1<<3) /// is a weapon that fires stuff -#define ATTACH_WEAPON 16 +#define ATTACH_WEAPON (1<<4) +/// This attachment should override ignore if it is empty +#define ATTACH_IGNORE_EMPTY (1<<5) /// This attachment should activate if you attack() with it attached. -#define ATTACH_MELEE 32 +#define ATTACH_MELEE (1<<6) +/// Override for attachies so you can fire them with a single hand . ONLY FOR PROJECTILES!! +#define ATTACH_WIELD_OVERRIDE (1<<7) //Ammo magazine defines, for flags_magazine @@ -103,12 +101,15 @@ #define AMMUNITION_HANDFUL_BOX (1<<2) #define AMMUNITION_HIDE_AMMO (1<<3) #define AMMUNITION_CANNOT_REMOVE_BULLETS (1<<4) +/// If this magazine can transfer to other magazines of the same type by slapping one with the other +#define AMMUNITION_SLAP_TRANSFER (1<<5) //Slowdown from various armors. /// How much shoes slow you down by default. Negative values speed you up #define SHOES_SLOWDOWN -1 #define SLOWDOWN_ARMOR_NONE 0 +#define SLOWDOWN_ARMOR_SUPER_LIGHT 0.10 #define SLOWDOWN_ARMOR_VERY_LIGHT 0.20 #define SLOWDOWN_ARMOR_LIGHT 0.35 #define SLOWDOWN_ARMOR_MEDIUM 0.55 @@ -140,8 +141,8 @@ #define WIELD_DELAY_VERY_SLOW 10 #define WIELD_DELAY_HORRIBLE 12 -///This is how long you must wait after throwing something to throw again -#define THROW_DELAY (0.4 SECONDS) +///This is how long you must wait to throw again after throwing two things +#define THROW_DELAY (1.5 SECONDS) //Explosion level thresholds. Upper bounds #define EXPLOSION_THRESHOLD_VLOW 50 @@ -200,6 +201,7 @@ // human armor #define CLOTHING_ARMOR_NONE 0 +#define CLOTHING_ARMOR_VERYLOW 5 #define CLOTHING_ARMOR_LOW 10 #define CLOTHING_ARMOR_MEDIUMLOW 15 #define CLOTHING_ARMOR_MEDIUM 20 @@ -219,6 +221,7 @@ #define UNIFORM_HAS_SENSORS 1 #define UNIFORM_FORCED_SENSORS 2 +#define EYE_PROTECTION_NEGATIVE -1 #define EYE_PROTECTION_NONE 0 #define EYE_PROTECTION_FLAVOR 1 #define EYE_PROTECTION_FLASH 2 @@ -232,6 +235,7 @@ //OB timings #define OB_TRAVEL_TIMING 12 SECONDS #define OB_CRASHING_DOWN 1 SECONDS +#define OB_CLUSTER_DURATION 45 SECONDS //================================================= //Health of various items diff --git a/code/__DEFINES/cooldowns.dm b/code/__DEFINES/cooldowns.dm index e1f221dccbde..9368caf3c6e3 100644 --- a/code/__DEFINES/cooldowns.dm +++ b/code/__DEFINES/cooldowns.dm @@ -3,6 +3,7 @@ #define COOLDOWN_HIJACK_BARRAGE "gamemode_explosive_barrage" #define COOLDOWN_HIJACK_GROUND_CHECK "gamemode_ground_check" #define COOLDOWN_ITEM_HOOD_SOUND "item_hood_sound" +#define COOLDOWN_LIGHT "cooldown_light" //Define for ship alt #define COOLDOWN_ALTITUDE_CHANGE "altitude_change" diff --git a/code/__DEFINES/dcs/signals/atom/mob/living/signals_human.dm b/code/__DEFINES/dcs/signals/atom/mob/living/signals_human.dm index b38339d1af17..2e247cdccc73 100644 --- a/code/__DEFINES/dcs/signals/atom/mob/living/signals_human.dm +++ b/code/__DEFINES/dcs/signals/atom/mob/living/signals_human.dm @@ -12,7 +12,7 @@ #define COMSIG_HUMAN_REVIVED "human_revived" /// From /mob/living/carbon/human/bullet_act #define COMSIG_HUMAN_PRE_BULLET_ACT "human_pre_bullet_act" -/// From /mob/living/carbon/human/bullet_act(): (damage_result, ammo_flags, obj/item/projectile/P) +/// From /mob/living/carbon/human/bullet_act(): (damage_result, ammo_flags, obj/projectile/P) #define COMSIG_HUMAN_BULLET_ACT "human_bullet_act" #define COMPONENT_CANCEL_BULLET_ACT (1<<0) @@ -36,6 +36,10 @@ #define COMSIG_HUMAN_UPDATE_SIGHT "human_update_sight" #define COMPONENT_OVERRIDE_UPDATE_SIGHT (1<<0) +///from /mob/living/carbon/human/movement_delay() +#define COMSIG_HUMAN_MOVEMENT_CANCEL_INTERACTION "human_movement_cancel_interaction" + #define COMPONENT_HUMAN_MOVEMENT_KEEP_USING (1<<0) + ///from /mob/living/carbon/human/update_sight() #define COMSIG_HUMAN_POST_UPDATE_SIGHT "human_post_update_sight" ///from /mob/living/carbon/human/movement_delay(): (list/movedata) @@ -63,3 +67,6 @@ #define COMSIG_HUMAN_SURGERY_APPLY_MODIFIERS "human_surgery_apply_modifiers" /// From /mob/living/carbon/human/proc/get_flags_cold_protection() #define COMSIG_HUMAN_COLD_PROTECTION_APPLY_MODIFIERS "human_cold_protection_apply_modifiers" + +/// From /obj/item/proc/dig_out_shrapnel() : () +#define COMSIG_HUMAN_SHRAPNEL_REMOVED "human_shrapnel_removed" diff --git a/code/__DEFINES/dcs/signals/atom/mob/living/signals_living.dm b/code/__DEFINES/dcs/signals/atom/mob/living/signals_living.dm index 89a65dad230e..cea905dd1011 100644 --- a/code/__DEFINES/dcs/signals/atom/mob/living/signals_living.dm +++ b/code/__DEFINES/dcs/signals/atom/mob/living/signals_living.dm @@ -23,13 +23,25 @@ #define COMSIG_LIVING_SPEAK "living_speak" #define COMPONENT_OVERRIDE_SPEAK (1<<0) -#define COMSIG_LIVING_APPLY_EFFECT "living_apply_effect" -#define COMSIG_LIVING_ADJUST_EFFECT "living_adjust_effect" -#define COMSIG_LIVING_SET_EFFECT "living_set_effect" - #define COMPONENT_CANCEL_EFFECT (1<<0) - /// From /obj/structure/proc/do_climb(var/mob/living/user, mods) #define COMSIG_LIVING_CLIMB_STRUCTURE "climb_over_structure" /// From /mob/living/Collide(): (atom/A) #define COMSIG_LIVING_PRE_COLLIDE "living_pre_collide" #define COMPONENT_LIVING_COLLIDE_HANDLED (1<<0) + +/// From /mob/living/proc/do_ghost() : (mob/dead/observer/ghost) +#define COMSIG_LIVING_GHOSTED "living_ghosted" + +/// From /mob/living/carbon/human/attack_hand() : (mob/living/carbon/human/attacked_mob) +#define COMSIG_LIVING_ATTACKHAND_HUMAN "living_attackhand_human" + +/// From /obj/item/reagent_container/hypospray/attack() : (obj/item/reagent_container/hypospray/injector) +#define COMSIG_LIVING_HYPOSPRAY_INJECTED "living_hypospray_injected" + +///from base of mob/living/set_buckled(): (new_buckled) +#define COMSIG_LIVING_SET_BUCKLED "living_set_buckled" +///from base of mob/living/set_body_position() +#define COMSIG_LIVING_SET_BODY_POSITION "living_set_body_position" + +/// from base of /mob/living/apply_status_effect(): (datum/status_effect/new_effect) +#define COMSIG_LIVING_APPLY_EFFECT "living_apply_effect" diff --git a/code/__DEFINES/dcs/signals/atom/mob/living/signals_xeno.dm b/code/__DEFINES/dcs/signals/atom/mob/living/signals_xeno.dm index e9862be49dd5..73b10d700247 100644 --- a/code/__DEFINES/dcs/signals/atom/mob/living/signals_xeno.dm +++ b/code/__DEFINES/dcs/signals/atom/mob/living/signals_xeno.dm @@ -62,3 +62,15 @@ /// For any additional things that should happen when a xeno's melee_attack_additional_effects_self() proc is called #define COMSIG_XENO_SLASH_ADDITIONAL_EFFECTS_SELF "xeno_slash_additional_effects_self" + +/// From /datum/action/xeno_action/onclick/plant_weeds/use_ability(): (atom/A) +#define COMSIG_XENO_PLANT_RESIN_NODE "xeno_plant_resin_node" + +/// From //mob/living/carbon/xenomorph/proc/emit_pheromones(): (pheromone, emit_cost) +#define COMSIG_XENO_START_EMIT_PHEROMONES "xeno_start_emit_pheromones" + +/// From /obj/effect/alien/resin/special/eggmorph/attack_alien: (mob/living/carbon/xenomorph/M) +#define COMSIG_XENO_TAKE_HUGGER_FROM_MORPHER "xeno_take_hugger_from_morpher" + +/// From /mob/living/carbon/xenomorph/proc/handle_crit() +#define COMSIG_XENO_ENTER_CRIT "xeno_entering_critical" diff --git a/code/__DEFINES/dcs/signals/atom/mob/signals_mind.dm b/code/__DEFINES/dcs/signals/atom/mob/signals_mind.dm new file mode 100644 index 000000000000..2cca5fe18c0d --- /dev/null +++ b/code/__DEFINES/dcs/signals/atom/mob/signals_mind.dm @@ -0,0 +1,2 @@ +///from mind/transfer_to. Sent after the mind has been transferred to a different body: (mob/previous_body) +#define COMSIG_MIND_TRANSFERRED "mind_transferred" diff --git a/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm b/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm index 347623798b74..710e4d9ae20a 100644 --- a/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm +++ b/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm @@ -1,3 +1,5 @@ +///from base of mob/set_stat(): (new_stat, old_stat) +#define COMSIG_MOB_STATCHANGE "mob_statchange" /// From /obj/structure/machinery/door/airlock/proc/take_damage #define COMSIG_MOB_DESTROY_AIRLOCK "mob_destroy_airlock" @@ -35,10 +37,6 @@ #define COMSIG_MOB_FIRED_GUN_ATTACHMENT "mob_fired_gun_attachment" /// From /mob/proc/death #define COMSIG_MOB_DEATH "mob_death" -/// From /mob/proc/update_canmove() -#define COMSIG_MOB_GETTING_UP "mob_getting_up" -/// From /mob/proc/update_canmove() -#define COMSIG_MOB_KNOCKED_DOWN "mob_knocked_down" /// For when a mob is dragged #define COMSIG_MOB_DRAGGED "mob_dragged" /// From /obj/item/proc/unequipped() @@ -61,6 +59,9 @@ #define COMSIG_MOB_WEED_SLOWDOWN "mob_weeds_slowdown" #define COMSIG_MOB_TAKE_DAMAGE "mob_take_damage" // TODO: move COMSIG_XENO_TAKE_DAMAGE & COMSIG_HUMAN_TAKE_DAMAGE to this + +///From /mob/living/carbon/human/attack_alien(): (mob/living/carbon/xenomorph/M, dam_bonus) +#define COMSIG_MOB_TACKLED_DOWN "mob_tackled_down" ///called in /client/change_view() #define COMSIG_MOB_CHANGE_VIEW "mob_change_view" #define COMPONENT_OVERRIDE_VIEW (1<<0) @@ -79,13 +80,14 @@ ///from base of /mob/Logout(): () #define COMSIG_MOB_LOGOUT "mob_logout" +/// From /mob/proc/change_real_name(): (old_name, new_name) +#define COMSIG_MOB_REAL_NAME_CHANGED "mob_real_name_changed" + //from /mob/proc/on_deafness_gain() #define COMSIG_MOB_DEAFENED "mob_deafened" //from /mob/proc/on_deafness_loss() #define COMSIG_MOB_REGAINED_HEARING "mob_regained_hearing" -#define COMSIG_MOB_POST_UPDATE_CANMOVE "mob_can_move" - #define COMSIG_ATTEMPT_MOB_PULL "attempt_mob_pull" #define COMPONENT_CANCEL_MOB_PULL (1<<0) @@ -99,6 +101,9 @@ #define COMSIG_MOB_MOVE_OR_LOOK "mob_move_or_look" #define COMPONENT_OVERRIDE_MOB_MOVE_OR_LOOK (1<<0) +///from rejuv +#define COMSIG_LIVING_POST_FULLY_HEAL "living_post_fully_heal" + ///from /mob/living/emote(): () #define COMSIG_MOB_EMOTE "mob_emote" @@ -110,3 +115,63 @@ #define COMSIG_MOB_STAT_SET_DEAD "mob_stat_set_dead" #define COMSIG_GHOST_MOVED "ghost_moved" + +/// When a mob is turned into a /mob/dead/observer at /mob/proc/ghostize() +#define COMSIG_MOB_GHOSTIZE "mob_ghostize" + +/// When a mob gets a new mind via transfer at /datum/mind/proc/transfer_to() +#define COMSIG_MOB_NEW_MIND "mob_new_mind" + +#define COMSIG_MOB_MOUSEDOWN "mob_mousedown" //from /client/MouseDown(): (atom/object, turf/location, control, params) +#define COMSIG_MOB_MOUSEUP "mob_mouseup" //from /client/MouseUp(): (atom/object, turf/location, control, params) +#define COMSIG_MOB_MOUSEDRAG "mob_mousedrag" //from /client/MouseDrag(): (atom/src_object, atom/over_object, turf/src_location, turf/over_location, src_control, over_control, params) + #define COMSIG_MOB_CLICK_CANCELED (1<<0) + #define COMSIG_MOB_CLICK_HANDLED (1<<1) + +#define COMSIG_MOB_DEPLOYED_BIPOD "mob_deployed_bipod" +#define COMSIG_MOB_UNDEPLOYED_BIPOD "mob_undeployed_bipod" + +/// From /obj/item/proc/pickup() : (obj/item/picked_up) +#define COMSIG_MOB_PICKUP_ITEM "mob_pickup_item" + +/// From /obj/item/proc/attack_self() : (obj/item/used) +#define COMSIG_MOB_ITEM_ATTACK_SELF "mob_item_attack_self" + +/// From /obj/item/proc/dropped() : (obj/item/dropped) +#define COMSIG_MOB_ITEM_DROPPED "mob_item_dropped" + + +/// From /obj/item/reagent_container/food/snacks/proc/on_Consume() : (obj/item/reagent_container/food/snacks/eaten_food) +#define COMSIG_MOB_EATEN_SNACK "mob_eaten_snack" + +/// From /atom/proc/attackby() : (atom/attacked, obj/item/attacked_with) +#define COMSIG_MOB_PARENT_ATTACKBY "mob_parent_attackby" + +/// From /obj/item/weapon/gun/proc/reload_into_chamber() : (obj/item/weapon/gun/empty_gun) +#define COMSIG_MOB_GUN_EMPTY "mob_gun_empty" + +/// From /obj/item/weapon/gun/proc/reload() : (obj/item/weapon/gun/reloaded) +#define COMSIG_MOB_RELOADED_GUN "mob_reloaded_gun" + +/// From /mob/proc/get_status_tab_items() : (list/status_list) +#define COMSIG_MOB_GET_STATUS_TAB_ITEMS "mob_get_status_tab_items" + +/// From /datum/tutorial/proc/update_objective() : (new_objective) +#define COMSIG_MOB_TUTORIAL_UPDATE_OBJECTIVE "mob_tutorial_update_objective" + +/// From /mob/proc/swap_hand() : () +#define COMSIG_MOB_SWAPPED_HAND "mob_swapped_hand" + +/// From /mob/proc/a_intent_change() : (new_intent) +#define COMSIG_MOB_INTENT_CHANGE "mob_intent_change" + +/// From /obj/item/grab/proc/progress_passive() : (mob/living/carbon/human/grabber) +#define COMSIG_MOB_AGGRESSIVELY_GRABBED "mob_aggressively_grabbed" + #define COMSIG_MOB_AGGRESIVE_GRAB_CANCEL (1<<0) + +/// Cancels all running cloaking effects on target +#define COMSIG_MOB_EFFECT_CLOAK_CANCEL "mob_effect_cloak_cancel" + +#define COMSIG_MOB_END_TUTORIAL "mob_end_tutorial" + +#define COMSIG_MOB_NESTED "mob_nested" diff --git a/code/__DEFINES/dcs/signals/atom/signals_atom.dm b/code/__DEFINES/dcs/signals/atom/signals_atom.dm index 0cbe28d0438c..d9bd1202c159 100644 --- a/code/__DEFINES/dcs/signals/atom/signals_atom.dm +++ b/code/__DEFINES/dcs/signals/atom/signals_atom.dm @@ -26,5 +26,31 @@ ///from /turf/ChangeTurf #define COMSIG_ATOM_TURF_CHANGE "movable_turf_change" +//from atom/set_light(): (l_range, l_power, l_color) +#define COMSIG_ATOM_SET_LIGHT "atom_set_light" + +///Called right before the atom changes the value of light_range to a different one, from base atom/set_light_range(): (new_range) +#define COMSIG_ATOM_SET_LIGHT_RANGE "atom_set_light_range" +///Called right before the atom changes the value of light_power to a different one, from base atom/set_light_power(): (new_power) +#define COMSIG_ATOM_SET_LIGHT_POWER "atom_set_light_power" +///Called right before the atom changes the value of light_color to a different one, from base atom/set_light_color(): (new_color) +#define COMSIG_ATOM_SET_LIGHT_COLOR "atom_set_light_color" +///Called right before the atom changes the value of light_on to a different one, from base atom/set_light_on(): (new_value) +#define COMSIG_ATOM_SET_LIGHT_ON "atom_set_light_on" +///Called right before the atom changes the value of light_flags to a different one, from base atom/set_light_flags(): (new_value) +#define COMSIG_ATOM_SET_LIGHT_FLAGS "atom_set_light_flags" + +///from base of atom/set_opacity(): (new_opacity) +#define COMSIG_ATOM_SET_OPACITY "atom_set_opacity" + ///When the transform or an atom is varedited through vv topic. #define COMSIG_ATOM_VV_MODIFY_TRANSFORM "atom_vv_modify_transform" + +/// Called when an atom has something mouse dropped on it, from /client/MouseDrop: (atom/dropped_on) +#define COMSIG_ATOM_DROPPED_ON "atom_dropped_on" + +/// Called when an atom is mouse dropped on another atom, from /client/MouseDrop: (atom/dropped_onto) +#define COMSIG_ATOM_DROP_ON "atom_drop_on" + +/// Called when an atom has emp_act called on it, from /atom/emp_act: (severity) +#define COMSIG_ATOM_EMP_ACT "atom_emp_act" diff --git a/code/__DEFINES/dcs/signals/atom/signals_cell.dm b/code/__DEFINES/dcs/signals/atom/signals_cell.dm new file mode 100644 index 000000000000..75e13d8bfdfc --- /dev/null +++ b/code/__DEFINES/dcs/signals/atom/signals_cell.dm @@ -0,0 +1,26 @@ +/// (charge_amount) +#define COMSIG_CELL_USE_CHARGE "cell_use_charge" + #define COMPONENT_CELL_NO_USE_CHARGE (1<<0) + +/// (charge_amount) +#define COMSIG_CELL_ADD_CHARGE "cell_add_charge" + +#define COMSIG_CELL_START_TICK_DRAIN "cell_start_tick_drain" + +#define COMSIG_CELL_STOP_TICK_DRAIN "cell_stop_tick_drain" + +/// (mob/living/user) +#define COMSIG_CELL_TRY_RECHARGING "cell_try_recharging" + #define COMPONENT_CELL_NO_RECHARGE (1<<0) + +#define COMSIG_CELL_OUT_OF_CHARGE "cell_out_of_charge" + +/// (charge_amount) +#define COMSIG_CELL_CHECK_CHARGE "cell_check_charge" + #define COMPONENT_CELL_CHARGE_INSUFFICIENT (1<<0) + +#define COMSIG_CELL_TRY_INSERT_CELL "cell_try_insert_cell" + #define COMPONENT_CANCEL_CELL_INSERT (1<<0) + +/// (mob/living/user) +#define COMSIG_CELL_REMOVE_CELL "cell_remove_cell" diff --git a/code/__DEFINES/dcs/signals/atom/signals_item.dm b/code/__DEFINES/dcs/signals/atom/signals_item.dm index 9c2f3b92ba05..f0456f8dd9f6 100644 --- a/code/__DEFINES/dcs/signals/atom/signals_item.dm +++ b/code/__DEFINES/dcs/signals/atom/signals_item.dm @@ -38,3 +38,43 @@ #define COMSIG_ITEM_ZOOM "item_zoom" /// from /obj/item/proc/unzoom() : (mob/user) #define COMSIG_ITEM_UNZOOM "item_unzoom" + +//Signals for automatic fire at component +#define COMSIG_AUTOMATIC_SHOOTER_START_SHOOTING_AT "start_shooting_at" +#define COMSIG_AUTOMATIC_SHOOTER_STOP_SHOOTING_AT "stop_shooting_at" +#define COMSIG_AUTOMATIC_SHOOTER_SHOOT "shoot" + +//Signals for gun auto fire component +#define COMSIG_GET_BURST_FIRE "get_burst_fire" + #define BURST_FIRING (1<<0) + +#define COMSIG_GUN_FIRE "gun_fire" +#define COMSIG_GUN_STOP_FIRE "gun_stop_fire" +#define COMSIG_GUN_FIRE_MODE_TOGGLE "gun_fire_mode_toggle" +#define COMSIG_GUN_AUTOFIREDELAY_MODIFIED "gun_autofiredelay_modified" +#define COMSIG_GUN_BURST_SHOTS_TO_FIRE_MODIFIED "gun_burst_shots_to_fire_modified" +#define COMSIG_GUN_BURST_SHOT_DELAY_MODIFIED "gun_burst_shot_delay_modified" + +#define COMSIG_GUN_VULTURE_FIRED_ONEHAND "gun_vulture_fired_onehand" +#define COMSIG_VULTURE_SCOPE_MOVED "vulture_scope_moved" +#define COMSIG_VULTURE_SCOPE_SCOPED "vulture_scope_scoped" +#define COMSIG_VULTURE_SCOPE_UNSCOPED "vulture_scope_unscoped" + +/// from /obj/item/weapon/gun/proc/recalculate_attachment_bonuses() : () +#define COMSIG_GUN_RECALCULATE_ATTACHMENT_BONUSES "gun_recalculate_attachment_bonuses" + +/// from /obj/item/weapon/gun/proc/load_into_chamber() : () +#define COMSIG_GUN_INTERRUPT_FIRE "gun_interrupt_fire" + +//from /datum/authority/branch/role/proc/equip_role() +#define COMSIG_POST_SPAWN_UPDATE "post_spawn_update" + +#define COMSIG_CAMERA_MAPNAME_ASSIGNED "camera_manager_mapname_assigned" +#define COMSIG_CAMERA_REGISTER_UI "camera_manager_register_ui" +#define COMSIG_CAMERA_UNREGISTER_UI "camera_manager_unregister_ui" +#define COMSIG_CAMERA_SET_NVG "camera_manager_set_nvg" +#define COMSIG_CAMERA_CLEAR_NVG "camera_manager_clear_nvg" +#define COMSIG_CAMERA_SET_TARGET "camera_manager_set_target" +#define COMSIG_CAMERA_SET_AREA "camera_manager_set_area" +#define COMSIG_CAMERA_CLEAR "camera_manager_clear_target" +#define COMSIG_CAMERA_REFRESH "camera_manager_refresh" diff --git a/code/__DEFINES/dcs/signals/atom/signals_obj.dm b/code/__DEFINES/dcs/signals/atom/signals_obj.dm index df53558834f6..c870a55ed746 100644 --- a/code/__DEFINES/dcs/signals/atom/signals_obj.dm +++ b/code/__DEFINES/dcs/signals/atom/signals_obj.dm @@ -4,6 +4,8 @@ /// From /obj/effect/alien/weeds/Initialize() #define COMSIG_WEEDNODE_GROWTH_COMPLETE "weednode_growth_complete" +/// From /obj/effect/alien/weeds/Initialize() +#define COMSIG_WEEDNODE_GROWTH "weednode_growth" /// From /obj/effect/alien/weeds/proc/on_weed_expand() #define COMSIG_WEEDNODE_CANNOT_EXPAND_FURTHER "weednode_cannot_expand_further" @@ -24,3 +26,20 @@ #define COMSIG_TRANSMITTER_UPDATE_ICON "transmitter_update_icon" #define COMSIG_TENT_COLLAPSING "tent_collapsing" + +/// from /obj/proc/afterbuckle() +#define COSMIG_OBJ_AFTER_BUCKLE "signal_obj_after_buckle" + +/// from /obj/structure/machinery/cryopod/go_out() +#define COMSIG_CRYOPOD_GO_OUT "cryopod_go_out" + +/// from /proc/vendor_successful_vend() : (obj/structure/machinery/cm_vending/vendor, list/itemspec, mob/living/carbon/human/user) +#define COMSIG_VENDOR_SUCCESSFUL_VEND "vendor_successful_vend" + +/// from /obj/limb/proc/remove_all_bleeding() : (external, internal) +#define COMSIG_LIMB_STOP_BLEEDING "limb_stop_bleeding" + +#define COMSIG_DROPSHIP_ADD_EQUIPMENT "dropship_add_equipment" +#define COMSIG_DROPSHIP_REMOVE_EQUIPMENT "dropship_remove_equipment" + +#define COMSIG_STRUCTURE_CRATE_SQUAD_LAUNCHED "structure_crate_squad_launched" diff --git a/code/__DEFINES/dcs/signals/atom/signals_projectile.dm b/code/__DEFINES/dcs/signals/atom/signals_projectile.dm index 861f351a1f58..46014d5351d5 100644 --- a/code/__DEFINES/dcs/signals/atom/signals_projectile.dm +++ b/code/__DEFINES/dcs/signals/atom/signals_projectile.dm @@ -15,17 +15,17 @@ #define COMSIG_AMMO_POINT_BLANK "ammo_point_blank" #define COMPONENT_CANCEL_AMMO_POINT_BLANK (1<<0) -/// From /obj/item/projectile/handle_mob(): (mob/living/target) +/// From /obj/projectile/handle_mob(): (mob/living/target) #define COMSIG_BULLET_PRE_HANDLE_MOB "bullet_pre_handle_mob" -/// From /obj/item/projectile/handle_mob(): (mob/living/target) +/// From /obj/projectile/handle_mob(): (mob/living/target) #define COMSIG_BULLET_POST_HANDLE_MOB "bullet_post_handle_mob" -/// From /obj/item/projectile/handle_obj(): (obj/target, did_hit) +/// From /obj/projectile/handle_obj(): (obj/target, did_hit) #define COMSIG_BULLET_POST_HANDLE_OBJ "bullet_post_handle_obj" -/// From /obj/item/projectile/handle_obj(): (obj/target) +/// From /obj/projectile/handle_obj(): (obj/target) #define COMSIG_BULLET_PRE_HANDLE_OBJ "bullet_pre_handle_obj" -/// From /obj/item/projectile/scan_a_turf(): (turf/target) +/// From /obj/projectile/scan_a_turf(): (turf/target) #define COMSIG_BULLET_POST_HANDLE_TURF "bullet_post_handle_turf" -/// From /obj/item/projectile/scan_a_turf(): (turf/target) +/// From /obj/projectile/scan_a_turf(): (turf/target) #define COMSIG_BULLET_PRE_HANDLE_TURF "bullet_pre_handle_turf" #define COMPONENT_BULLET_PASS_THROUGH (1<<0) #define COMSIG_BULLET_TERMINAL "bullet_terminal" diff --git a/code/__DEFINES/dcs/signals/signals_client.dm b/code/__DEFINES/dcs/signals/signals_client.dm index 639721fae260..3968f654c486 100644 --- a/code/__DEFINES/dcs/signals/signals_client.dm +++ b/code/__DEFINES/dcs/signals/signals_client.dm @@ -21,3 +21,9 @@ /// Called after a client logs into a mob: (mob) #define COMSIG_CLIENT_MOB_LOGIN "client_mob_changed" + +/// Called when something is added to a client's screen : /client/proc/add_to_screen(screen_add) +#define COMSIG_CLIENT_SCREEN_ADD "client_screen_add" + +/// Called when something is removed from a client's screen : /client/proc/remove_from_screen(screen_remove) +#define COMSIG_CLIENT_SCREEN_REMOVE "client_screen_remove" diff --git a/code/__DEFINES/dcs/signals/signals_datum.dm b/code/__DEFINES/dcs/signals/signals_datum.dm index a7a93c4ea114..7696d8ad6037 100644 --- a/code/__DEFINES/dcs/signals/signals_datum.dm +++ b/code/__DEFINES/dcs/signals/signals_datum.dm @@ -61,3 +61,6 @@ // from /datum/emergency_call/proc/spawn_candidates() #define COMSIG_ERT_SETUP "ert_setup" + +// from /proc/update_living_queens() : /mob/living/carbon/xenomorph/queen +#define COMSIG_HIVE_NEW_QUEEN "hive_new_queen" diff --git a/code/__DEFINES/dcs/signals/signals_global.dm b/code/__DEFINES/dcs/signals/signals_global.dm index c3d51b2d65cd..5569ded71586 100644 --- a/code/__DEFINES/dcs/signals/signals_global.dm +++ b/code/__DEFINES/dcs/signals/signals_global.dm @@ -25,6 +25,8 @@ /// called after a successful var edit somewhere in the world: (list/args) #define COMSIG_GLOB_VAR_EDIT "!var_edit" +#define COMSIG_GLOB_CONFIG_LOADED "!config_loaded" + ///from /mob/living/carbon/xenomorph/initialize #define COMSIG_GLOB_XENO_SPAWN "!xeno_spawn" @@ -48,5 +50,24 @@ // Used for smothering fires upon weather event start/stop #define COMSIG_GLOB_WEATHER_CHANGE "!weather_event_changed" +/// From /obj/structure/machinery/telecomms/proc/tcomms_shutdown(), called when the relay turns off +#define COMSIG_GLOB_GROUNDSIDE_TELECOMM_TURNED_OFF "!groundside_telecomm_turned_off" + /// From /datum/admins/proc/force_predator_round() #define COMSIG_GLOB_PREDATOR_ROUND_TOGGLED "!predator_round_toglged" + +/// From /datum/game_mode/colonialmarines/proc/check_ground_humans() +#define COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING "!groundside_forsaken_handling" + +/// From +#define COMSIG_GLOB_YAUTJA_ARMORY_OPENED "!yautja_armory_opened" + +/// From /proc/biohazard_lockdown() +#define COMSIG_GLOB_RESEARCH_LOCKDOWN "!research_lockdown_closed" +#define COMSIG_GLOB_RESEARCH_LIFT "!research_lockdown_opened" + +/// From /obj/structure/machinery/power/fusion_engine/proc/set_overloading() : (set_overloading) +#define COMSIG_GLOB_GENERATOR_SET_OVERLOADING "!generator_set_overloading" + +#define COMSIG_GLOB_HIJACK_IMPACTED "!hijack_impacted" +#define COMSIG_GLOB_HIJACK_LANDED "!hijack_landed" diff --git a/code/__DEFINES/defenses.dm b/code/__DEFINES/defenses.dm index 57eb0c86f939..db615c2a0c78 100644 --- a/code/__DEFINES/defenses.dm +++ b/code/__DEFINES/defenses.dm @@ -8,7 +8,7 @@ // Defines for barricade upgrades #define BARRICADE_UPGRADE_BURN "Biohazard Upgrade (+Burn)" #define BARRICADE_UPGRADE_BRUTE "Reinforced Upgrade (+Brute)" -#define BARRICADE_UPGRADE_EXPLOSIVE "Explosive Upgrade (+Explosive)" +#define BARRICADE_UPGRADE_ANTIFF "Composite Upgrade (++Explosive, ++Projectile, ++Fire)" // Defines for defense stats #define DEFENSE_FUNCTIONAL 0 diff --git a/code/__DEFINES/emote_panels.dm b/code/__DEFINES/emote_panels.dm new file mode 100644 index 000000000000..8419f5513cf0 --- /dev/null +++ b/code/__DEFINES/emote_panels.dm @@ -0,0 +1,13 @@ +#define JOE_EMOTE_CATEGORY_GREETING "Greeting" +#define JOE_EMOTE_CATEGORY_TASK_UPDATE "Task Update" +#define JOE_EMOTE_CATEGORY_RESTRICTED_AREA "Restricted Area" +#define JOE_EMOTE_CATEGORY_FAREWELL "Farewell" +#define JOE_EMOTE_CATEGORY_QUIP "Quip" +#define JOE_EMOTE_CATEGORY_WARNING "Warning" +#define JOE_EMOTE_CATEGORY_QUESTION "Question" +#define JOE_EMOTE_CATEGORY_NOTICE "Notice" +#define JOE_EMOTE_CATEGORY_FIRE "Fire" +#define JOE_EMOTE_CATEGORY_DAMAGE "Damage" +#define YAUTJA_EMOTE_CATEGORY_FAKESOUND "Fake Sound" +#define YAUTJA_EMOTE_CATEGORY_VOICE "Voice Synthesizer" +#define YAUTJA_EMOTE_CATEGORY_SPECIES "Yautja" diff --git a/code/__DEFINES/equipment.dm b/code/__DEFINES/equipment.dm index 4212f6a52301..375dd0db540d 100644 --- a/code/__DEFINES/equipment.dm +++ b/code/__DEFINES/equipment.dm @@ -27,7 +27,7 @@ #define ITEM_UNCATCHABLE (1<<9) /// Used for nonstandard marine clothing to ignore 'specialty' var. #define NO_NAME_OVERRIDE (1<<10) -/// Used for armors or uniforms that don't have a snow icon state. +/// Used for armors or uniforms that don't have a snow/desert/etc icon state set via select_gamemode_skin (not all item types currently perform this test though). #define NO_SNOW_TYPE (1<<11) #define INVULNERABLE (1<<12) @@ -42,6 +42,8 @@ #define ATOM_DECORATED (1<<16) /// Whether or not the object uses hearing #define USES_HEARING (1<<17) +/// Should we use the initial icon for display? Mostly used by overlay only objects +#define HTML_USE_INITAL_ICON (1<<18) //========================================================================================== @@ -78,11 +80,8 @@ #define CAN_DIG_SHRAPNEL (1<<11) /// whether it has an animated icon state of "[icon_state]_on" to be used during surgeries. #define ANIMATED_SURGICAL_TOOL (1<<12) -/// The item goes on top of tables, instead of into them with the overlay system -#define NOTABLEMERGE (1<<13) /// Has heat source but isn't 'on fire' and thus can be stored -#define IGNITING_ITEM (1<<14) - +#define IGNITING_ITEM (1<<13) //========================================================================================== @@ -195,11 +194,11 @@ //=========================================================================================== //Marine armor only, use for flags_marine_armor. -#define ARMOR_SQUAD_OVERLAY 1 -#define ARMOR_LAMP_OVERLAY 2 -#define ARMOR_LAMP_ON 4 -#define ARMOR_IS_REINFORCED 8 -#define SYNTH_ALLOWED 16 +#define ARMOR_SQUAD_OVERLAY (1<<0) +#define ARMOR_LAMP_OVERLAY (1<<1) +#define ARMOR_LAMP_ON (1<<2) +#define ARMOR_IS_REINFORCED (1<<3) +#define SYNTH_ALLOWED (1<<4) //=========================================================================================== //=========================================================================================== @@ -234,6 +233,8 @@ #define SLOT_LEGS (1<<13) #define SLOT_ACCESSORY (1<<14) #define SLOT_SUIT_STORE (1<<15) //this allows items to be stored in the suit slot regardless of suit +/// Anything with this flag cannot be worn in suit storage, period. +#define SLOT_BLOCK_SUIT_STORE (1<<16) //================================================= //slots @@ -492,7 +493,7 @@ GLOBAL_LIST_INIT(slot_to_contained_sprite_shorthand, list( #define UNIFORM_VEND_DRESS_EXTRA "dress extra" -var/global/list/uniform_categories = list( +GLOBAL_LIST_INIT(uniform_categories, list( "UTILITY" = list(UNIFORM_VEND_UTILITY_UNIFORM, UNIFORM_VEND_UTILITY_JACKET, UNIFORM_VEND_UTILITY_HEAD, UNIFORM_VEND_UTILITY_GLOVES, UNIFORM_VEND_UTILITY_SHOES), "UTILITY EXTRAS" = list(UNIFORM_VEND_UTILITY_EXTRA), "SERVICE" = list(UNIFORM_VEND_SERVICE_UNIFORM, UNIFORM_VEND_SERVICE_JACKET, UNIFORM_VEND_SERVICE_GLOVES, UNIFORM_VEND_SERVICE_SHOES), @@ -501,7 +502,7 @@ var/global/list/uniform_categories = list( "DRESS" = list(UNIFORM_VEND_DRESS_UNIFORM, UNIFORM_VEND_DRESS_JACKET, UNIFORM_VEND_DRESS_GLOVES, UNIFORM_VEND_DRESS_SHOES), "DRESS HEADWEAR" = list(UNIFORM_VEND_DRESS_HEAD), "DRESS EXTRAS" = list(UNIFORM_VEND_DRESS_EXTRA) -) +)) //================================================= @@ -548,3 +549,8 @@ var/global/list/uniform_categories = list( #define PHONE_MARINE "Marine" #define PHONE_UPP_SOLDIER "Soldier" #define PHONE_IO "IO" + +#define PHONE_DND_FORCED 2 +#define PHONE_DND_ON 1 +#define PHONE_DND_OFF 0 +#define PHONE_DND_FORBIDDEN -1 diff --git a/code/__DEFINES/guns.dm b/code/__DEFINES/guns.dm index a89d98805e73..2ea9d11ce43d 100644 --- a/code/__DEFINES/guns.dm +++ b/code/__DEFINES/guns.dm @@ -37,3 +37,23 @@ #define REVOLVER_TIP_COLOR_INCENDIARY AMMO_BAND_COLOR_INCENDIARY #define REVOLVER_TIP_COLOR_PENETRATING AMMO_BAND_COLOR_PENETRATING #define REVOLVER_TIP_COLOR_TOXIN AMMO_BAND_COLOR_TOXIN + +#define GUN_FIREMODE_SEMIAUTO "semi-auto fire mode" +#define GUN_FIREMODE_BURSTFIRE "burst-fire mode" +#define GUN_FIREMODE_AUTOMATIC "automatic fire mode" + +//autofire component fire callback return flags +#define AUTOFIRE_CONTINUE (1<<0) +#define AUTOFIRE_SUCCESS (1<<1) + +///Base CO special weapons options +#define CO_GUNS list(CO_GUN_MATEBA, CO_GUN_MATEBA_SPECIAL, CO_GUN_DEAGLE) + +///Council CO special weapons options +#define COUNCIL_CO_GUNS list(CO_GUN_MATEBA_COUNCIL, CO_GUN_DEAGLE_COUNCIL) + +#define CO_GUN_MATEBA "Mateba" +#define CO_GUN_MATEBA_SPECIAL "Mateba Special" +#define CO_GUN_DEAGLE "Desert Eagle" +#define CO_GUN_MATEBA_COUNCIL "Colonel's Mateba" +#define CO_GUN_DEAGLE_COUNCIL "Golden Desert Eagle" diff --git a/code/__DEFINES/hijack.dm b/code/__DEFINES/hijack.dm new file mode 100644 index 000000000000..85d4c227ae70 --- /dev/null +++ b/code/__DEFINES/hijack.dm @@ -0,0 +1,13 @@ +#define EVACUATION_TYPE_NONE 0 +#define EVACUATION_TYPE_ADDITIVE 1 +#define EVACUATION_TYPE_MULTIPLICATIVE 2 + +#define HIJACK_ANNOUNCE "ARES Emergency Procedures" +#define XENO_HIJACK_ANNOUNCE "You sense something unusual..." + +#define EVACUATION_STATUS_NOT_INITIATED 0 +#define EVACUATION_STATUS_INITIATED 1 + +#define HIJACK_OBJECTIVES_NOT_STARTED 0 +#define HIJACK_OBJECTIVES_STARTED 1 +#define HIJACK_OBJECTIVES_COMPLETE 2 diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index 78d90c65ecb1..deee80c7a91d 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -17,3 +17,11 @@ #define APPEARANCE_UI_IGNORE_ALPHA (RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR|RESET_ALPHA|PIXEL_SCALE) /// Used for HUD objects #define APPEARANCE_UI (RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR|PIXEL_SCALE) + +// Notification action types +#define NOTIFY_JUMP "jump" +#define NOTIFY_ATTACK "attack" +#define NOTIFY_ORBIT "orbit" +#define NOTIFY_JOIN_XENO "join_xeno" +#define NOTIFY_XENO_TACMAP "xeno_tacmap" +#define NOTIFY_USCM_TACMAP "uscm_tacmap" diff --git a/code/__DEFINES/human.dm b/code/__DEFINES/human.dm index 846119d6b55d..ebf08f495752 100644 --- a/code/__DEFINES/human.dm +++ b/code/__DEFINES/human.dm @@ -116,14 +116,15 @@ #define ORDER_FOCUS_MAX_LEVEL 50 //Human Overlays Indexes used in update_icons///////// -#define UNDERWEAR_LAYER 41 -#define UNDERSHIRT_LAYER 40 -#define MUTANTRACE_LAYER 39 +#define BODYPARTS_LAYER 42 +#define DAMAGE_LAYER 41 -/// For use by Hunter Flay -#define FLAY_LAYER 38 +#define UNDERWEAR_LAYER 40 +#define UNDERSHIRT_LAYER 39 +#define MUTANTRACE_LAYER 38 -#define DAMAGE_LAYER 37 +/// For use by Hunter Flay +#define FLAY_LAYER 37 #define UNIFORM_LAYER 36 /// bs12 specific. this hack is probably gonna come back to haunt me @@ -176,7 +177,7 @@ /// If you're hit by an acid DoT #define EFFECTS_LAYER 1 -#define TOTAL_LAYERS 41 +#define TOTAL_LAYERS 42 ////////////////////////////////// //Synthetic Defines diff --git a/code/__DEFINES/job.dm b/code/__DEFINES/job.dm index c2429d2fad4c..ad3b9fe3af32 100644 --- a/code/__DEFINES/job.dm +++ b/code/__DEFINES/job.dm @@ -1,6 +1,6 @@ #define get_job_playtime(client, job) (client.player_data? LAZYACCESS(client.player_data.playtimes, job)? client.player_data.playtimes[job].total_minutes MINUTES_TO_DECISECOND : 0 : 0) -#define GET_MAPPED_ROLE(title) (RoleAuthority?.role_mappings[title] ? RoleAuthority.role_mappings[title] : RoleAuthority.roles_by_name[title]) -#define GET_DEFAULT_ROLE(title) (RoleAuthority?.default_roles[title] ? RoleAuthority.default_roles[title] : title) +#define GET_MAPPED_ROLE(title) (GLOB.RoleAuthority?.role_mappings[title] ? GLOB.RoleAuthority.role_mappings[title] : GLOB.RoleAuthority.roles_by_name[title]) +#define GET_DEFAULT_ROLE(title) (GLOB.RoleAuthority?.default_roles[title] ? GLOB.RoleAuthority.default_roles[title] : title) // Squad name defines #define SQUAD_MARINE_1 "Alpha" @@ -9,7 +9,9 @@ #define SQUAD_MARINE_4 "Delta" #define SQUAD_MARINE_5 "Echo" #define SQUAD_MARINE_CRYO "Foxtrot" +#define SQUAD_MARINE_INTEL "Intel" #define SQUAD_SOF "SOF" +#define SQUAD_CBRN "CBRN" // Job name defines #define JOB_SQUAD_MARINE "Rifleman" @@ -22,7 +24,7 @@ #define JOB_SQUAD_ROLES /datum/timelock/squad #define JOB_SQUAD_ROLES_LIST list(JOB_SQUAD_MARINE, JOB_SQUAD_LEADER, JOB_SQUAD_ENGI, JOB_SQUAD_MEDIC, JOB_SQUAD_SPECIALIST, JOB_SQUAD_SMARTGUN, JOB_SQUAD_TEAM_LEADER) -var/global/list/job_squad_roles = JOB_SQUAD_ROLES_LIST +GLOBAL_LIST_INIT(job_squad_roles, JOB_SQUAD_ROLES_LIST) #define JOB_COLONIST "Colonist" #define JOB_PASSENGER "Passenger" @@ -70,12 +72,17 @@ var/global/list/job_squad_roles = JOB_SQUAD_ROLES_LIST #define JOB_SO "Staff Officer" #define JOB_COMMAND_ROLES /datum/timelock/command #define JOB_COMMAND_ROLES_LIST list(JOB_CO, JOB_XO, JOB_SO) -var/global/list/job_command_roles = JOB_COMMAND_ROLES_LIST +GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST) +#define JOB_AUXILIARY_OFFICER "Auxiliary Support Officer" #define JOB_PILOT "Pilot Officer" #define JOB_DROPSHIP_CREW_CHIEF "Dropship Crew Chief" #define JOB_CREWMAN "Vehicle Crewman" #define JOB_INTEL "Intelligence Officer" +#define JOB_DROPSHIP_ROLES /datum/timelock/dropship +#define JOB_DROPSHIP_ROLES_LIST list(JOB_DROPSHIP_CREW_CHIEF, JOB_PILOT) +#define JOB_AUXILIARY_ROLES /datum/timelock/auxiliary +#define JOB_AUXILIARY_ROLES_LIST list(JOB_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_CREWMAN, JOB_INTEL) #define JOB_POLICE "Military Police" #define JOB_WARDEN "Military Warden" @@ -91,7 +98,7 @@ var/global/list/job_command_roles = JOB_COMMAND_ROLES_LIST #define JOB_ENGINEER_ROLES /datum/timelock/engineer #define JOB_ENGINEER_ROLES_LIST list(JOB_SQUAD_ENGI, JOB_MAINT_TECH, JOB_ORDNANCE_TECH, JOB_CHIEF_ENGINEER) -#define JOB_CHIEF_REQUISITION "Requisitions Officer" +#define JOB_CHIEF_REQUISITION "Quartermaster" #define JOB_CARGO_TECH "Cargo Technician" #define JOB_REQUISITION_ROLES /datum/timelock/requisition #define JOB_REQUISITION_ROLES_LIST list(JOB_CHIEF_REQUISITION, JOB_CARGO_TECH) @@ -143,7 +150,7 @@ var/global/list/job_command_roles = JOB_COMMAND_ROLES_LIST #define JOB_WO_CHIEF_ENGINEER "Bunker Crew Master" #define JOB_WO_ORDNANCE_TECH "Bunker Crew" -#define JOB_WO_CHIEF_REQUISITION "Quartermaster" +#define JOB_WO_CHIEF_REQUISITION "Bunker Quartermaster" #define JOB_WO_REQUISITION "Bunker Crew Logistics" #define JOB_WO_CMO "Head Surgeon" @@ -163,24 +170,25 @@ var/global/list/job_command_roles = JOB_COMMAND_ROLES_LIST //------------------------------------ //-------- PMC --------// -#define JOB_PMC "PMC Standard" +#define JOB_PMC_STANDARD "Weyland-Yutani PMC (Standard)" #define JOB_PMC_ENGINEER "PMC Corporate Technician" #define JOB_PMC_MEDIC "PMC Corporate Medic" #define JOB_PMC_DOCTOR "PMC Trauma Surgeon" #define JOB_PMC_INVESTIGATOR "PMC Medical Investigator" +#define JOB_PMC_DETAINER "Weyland-Yutani PMC (Detainer)" #define JOB_PMC_ELITE "PMC Elite" #define JOB_PMC_GUNNER "PMC Support Weapons Specialist" //Renamed from Specialist to Support Specialist as it only has SG skills. #define JOB_PMC_SNIPER "PMC Weapons Specialist" //Renamed from Sharpshooter to specialist as it uses specialist skills. -#define JOB_PMC_CREWMAN "PMC Crewman" +#define JOB_PMC_CREWMAN "Weyland-Yutani PMC (Crewman)" #define JOB_PMC_NINJA "PMC Ninja" #define JOB_PMC_XENO_HANDLER "PMC Xeno Handler" #define JOB_PMC_COMMANDO "PMC Commando" #define JOB_PMC_LEADER "PMC Leader" #define JOB_PMC_LEAD_INVEST "PMC Lead Investigator" #define JOB_PMC_DIRECTOR "PMC Site Director" -#define JOB_PMC_SYNTH "PMC Support Synthetic" +#define JOB_PMC_SYNTH "PMC Support Synthetic" -#define JOB_PMC_GRUNT_LIST list(JOB_PMC, JOB_PMC_ENGINEER, JOB_PMC_MEDIC, JOB_PMC_INVESTIGATOR, JOB_PMC_ELITE, JOB_PMC_GUNNER, JOB_PMC_SNIPER, JOB_PMC_CREWMAN, JOB_PMC_NINJA, JOB_PMC_XENO_HANDLER, JOB_PMC_COMMANDO, JOB_PMC_LEADER, JOB_PMC_LEAD_INVEST) +#define JOB_PMC_GRUNT_LIST list(JOB_PMC_STANDARD, JOB_PMC_ENGINEER, JOB_PMC_MEDIC, JOB_PMC_INVESTIGATOR, JOB_PMC_DETAINER, JOB_PMC_ELITE, JOB_PMC_GUNNER, JOB_PMC_SNIPER, JOB_PMC_CREWMAN, JOB_PMC_NINJA, JOB_PMC_XENO_HANDLER, JOB_PMC_COMMANDO, JOB_PMC_LEADER, JOB_PMC_LEAD_INVEST) //-------- WY --------// @@ -229,6 +237,17 @@ var/global/list/job_command_roles = JOB_COMMAND_ROLES_LIST #define CMB_GRUNT_LIST list(JOB_CMB, JOB_CMB_TL) +//-------- FORECON --------// + +#define JOB_FORECON_CO "Reconnaissance Commander" +#define JOB_FORECON_SL "Reconnaissance Squad Leader" +#define JOB_FORECON_SYN "Reconnaissance Synthetic" +#define JOB_FORECON_SNIPER "Reconnaissance Sniper" +#define JOB_FORECON_MARKSMAN "Reconnaissance Marksman" +#define JOB_FORECON_SUPPORT "Reconnaissance Support Technician" +#define JOB_FORECON_RIFLEMAN "Reconnaissance Rifleman" +#define JOB_FORECON_SMARTGUNNER "Reconnaissance Smartgunner" + //-------- UPP --------// #define JOB_UPP "UPP Private" #define JOB_UPP_CONSCRIPT "UPP Conscript" @@ -242,9 +261,14 @@ var/global/list/job_command_roles = JOB_COMMAND_ROLES_LIST #define JOB_UPP_SRLT_OFFICER "UPP Senior Leytenant" #define JOB_UPP_KPT_OFFICER "UPP Kapitan" #define JOB_UPP_MAY_OFFICER "UPP Mayjor" +#define JOB_UPP_LTKOL_OFFICER "UPP Leytenant Kolonel" #define JOB_UPP_KOL_OFFICER "UPP Kolonel" +#define JOB_UPP_MAY_GENERAL "UPP Mayjor General" +#define JOB_UPP_LT_GENERAL "UPP Leytenant General" +#define JOB_UPP_GENERAL "UPP Army General" #define JOB_UPP_COMBAT_SYNTH "UPP Combat Synthetic" +#define JOB_UPP_SUPPORT_SYNTH "UPP Support Synthetic" #define UPP_JOB_LIST list(JOB_UPP, JOB_UPP_ENGI, JOB_UPP_MEDIC, JOB_UPP_SPECIALIST, JOB_UPP_LEADER, JOB_UPP_POLICE, JOB_UPP_LT_OFFICER, JOB_UPP_LT_DOKTOR, JOB_UPP_SRLT_OFFICER, JOB_UPP_KPT_OFFICER, JOB_UPP_KOL_OFFICER, JOB_UPP_COMBAT_SYNTH) #define UPP_JOB_GRUNT_LIST list(JOB_UPP, JOB_UPP_ENGI, JOB_UPP_MEDIC, JOB_UPP_SPECIALIST, JOB_UPP_LEADER, JOB_UPP_POLICE, JOB_UPP_CREWMAN) @@ -273,12 +297,16 @@ var/global/list/job_command_roles = JOB_COMMAND_ROLES_LIST //-------- TWE --------// #define JOB_TWE_REPRESENTATIVE "TWE Representative" -#define JOB_TWE_YONTO "RMC Yonto" -#define JOB_TWE_SANTO "RMC Santo" -#define JOB_TWE_NITO "RMC Nito" -#define JOB_TWE_ITTO "RMC Itto" +//RMC +#define JOB_TWE_RMC_RIFLEMAN "RMC Rifleman" +#define JOB_TWE_RMC_MARKSMAN "RMC Marksman" +#define JOB_TWE_RMC_SMARTGUNNER "RMC Smartgunner" +#define JOB_TWE_RMC_BREACHER "RMC Breacher" +#define JOB_TWE_RMC_TEAMLEADER "RMC Team Leader" +#define JOB_TWE_RMC_LIEUTENANT "RMC Lieutenant" +#define JOB_TWE_RMC_COMMANDER "RMC Commander" -#define TWE_COMMANDO_JOB_LIST list(JOB_TWE_YONTO, JOB_TWE_SANTO, JOB_TWE_NITO, JOB_TWE_ITTO) +#define TWE_COMMANDO_JOB_LIST list(JOB_TWE_RMC_RIFLEMAN, JOB_TWE_RMC_BREACHER, JOB_TWE_RMC_SMARTGUNNER,JOB_TWE_RMC_MARKSMAN ,JOB_TWE_RMC_TEAMLEADER, JOB_TWE_RMC_LIEUTENANT, JOB_TWE_RMC_COMMANDER) #define JOB_TWE_SEAMAN "TWE Seaman" #define JOB_TWE_LSEAMAN "TWE Leading Seaman" @@ -311,7 +339,6 @@ var/global/list/job_command_roles = JOB_COMMAND_ROLES_LIST #define JOB_TIS_SA "UAAC-TIS Special Agent" #define TIS_JOB_LIST list(JOB_TIS_SA, JOB_TIS_IO) - //-------- DUTCH'S DOZEN --------// #define JOB_DUTCH_ARNOLD "Dutch's Dozen - Dutch" #define JOB_DUTCH_RIFLEMAN "Dutch's Dozen - Rifleman" @@ -332,11 +359,12 @@ var/global/list/job_command_roles = JOB_COMMAND_ROLES_LIST #define JOB_PLAYTIME_TIER_4 (175 HOURS) #define XENO_NO_AGE -1 -#define XENO_NORMAL 0 -#define XENO_MATURE 1 -#define XENO_ELDER 2 -#define XENO_ANCIENT 3 -#define XENO_PRIME 4 +#define XENO_YOUNG 0 +#define XENO_NORMAL 1 +#define XENO_MATURE 2 +#define XENO_ELDER 3 +#define XENO_ANCIENT 4 +#define XENO_PRIME 5 /// For monthly time tracking #define JOB_OBSERVER "Observer" diff --git a/code/__DEFINES/keybinding.dm b/code/__DEFINES/keybinding.dm index 422edb05508b..f4503aeea5d5 100644 --- a/code/__DEFINES/keybinding.dm +++ b/code/__DEFINES/keybinding.dm @@ -14,6 +14,7 @@ #define COMSIG_KB_ADMIN_INVISIMINTOGGLE_DOWN "keybinding_admin_invisimintoggle_down" #define COMSIG_KB_ADMIN_DEADMIN_DOWN "keybinding_admin_deadmin_down" #define COMSIG_KB_ADMIN_READMIN_DOWN "keybinding_admin_readmin_down" +#define COMSIG_KB_ADMIN_MENTORSAY_DOWN "keybinding_admin_mentorsay_down" //Carbon #define COMSIG_KB_CARBON_HOLDRUNMOVEINTENT_DOWN "keybinding_carbon_holdrunmoveintent_down" @@ -43,12 +44,6 @@ #define COMSIG_KG_CLIENT_RADIO_DOWN "keybinding_client_radio_down" //Human -#define COMSIG_KB_HUMAN_QUICKEQUIP_DOWN "keybinding_human_quickequip_down" -#define COMSIG_KB_HUMAN_SECONDARY_DOWN "keybinding_human_secondary_down" -#define COMSIG_KB_HUMAN_TERTIARY_DOWN "keybinding_human_tertiary_down" -#define COMSIG_KB_HUMAN_QUATERNARY_DOWN "keybinding_human_quaternary_down" -#define COMSIG_KB_HUMAN_QUICK_EQUIP_DOWN "keybinding_human_quick_equip_down" - #define COMSIG_KB_HUMAN_ISSUE_ORDER "keybinding_human_issue_order" #define COMSIG_KB_HUMAN_ISSUE_ORDER_MOVE "keybinding_human_issue_order_move" #define COMSIG_KB_HUMAN_ISSUE_ORDER_HOLD "keybinding_human_issue_order_hold" @@ -57,12 +52,31 @@ #define COMSIG_KB_HUMAN_SPECIALIST_ACTIVATION_ONE "keybinding_human_specialist_activation_one" #define COMSIG_KB_HUMAN_SPECIALIST_ACTIVATION_TWO "keybinding_human_specialist_activation_two" -#define COMSIG_KB_HUMAN_PICK_UP "keybinding_human_pick_up" - #define COMSIG_KB_HUMAN_ROTATE_CHAIR "keybinding_human_rotate_chair" #define COMSIG_KB_HUMAN_SHOW_HELD_ITEM "keybinding_human_show_held_item" +#define COMSIG_KB_HUMAN_CYCLE_HELMET_HUD "keybinding_human_cycle_helmet_hud" + +// Human Inventory Navigation +#define COMSIG_KB_HUMAN_INTERACT_OTHER_HAND "keybinding_human_interact_other_hand" +#define COMSIG_KB_HUMAN_INTERACT_SLOT_BACK "keybinding_human_interact_slot_back" +#define COMSIG_KB_HUMAN_INTERACT_SLOT_BELT "keybinding_human_interact_slot_belt" +#define COMSIG_KB_HUMAN_INTERACT_SLOT_UNIFORM "keybinding_human_interact_slot_uniform" +#define COMSIG_KB_HUMAN_INTERACT_SLOT_SUIT "keybinding_human_interact_slot_suit" +#define COMSIG_KB_HUMAN_INTERACT_SLOT_HELMET "keybinding_human_interact_slot_helmet" +#define COMSIG_KB_HUMAN_INTERACT_SLOT_LEFT_POUCH "keybinding_human_interact_slot_left_pouch" +#define COMSIG_KB_HUMAN_INTERACT_SLOT_RIGHT_POUCH "keybinding_human_interact_slot_right_pouch" +#define COMSIG_KB_HUMAN_INTERACT_SUIT_S_STORE "keybinding_human_interact_slot_suit_storage" + +#define COMSIG_KB_HUMAN_INTERACT_QUICKEQUIP_DOWN "keybinding_human_interact_quickequip_down" +#define COMSIG_KB_HUMAN_INTERACT_SECONDARY_DOWN "keybinding_human_interact_secondary_down" +#define COMSIG_KB_HUMAN_INTERACT_TERTIARY_DOWN "keybinding_human_interact_tertiary_down" +#define COMSIG_KB_HUMAN_INTERACT_QUATERNARY_DOWN "keybinding_human_interact_quaternary_down" +#define COMSIG_KB_HUMAN_INTERACT_QUICK_EQUIP_DOWN "keybinding_human_interact_quick_equip_down" + +#define COMSIG_KB_HUMAN_INTERACT_PICK_UP "keybinding_human_interact_pick_up" + // Human Combat #define COMSIG_KB_HUMAN_WEAPON_FIELDSTRIP "keybinding_human_weapon_fieldstrip" #define COMSIG_KB_HUMAN_WEAPON_BURSTFIRE "keybinding_human_weapon_burstfire" @@ -74,6 +88,7 @@ #define COMSIG_KB_HUMAN_WEAPON_UNLOAD "keybinding_human_weapon_unload" #define COMSIG_KB_HUMAN_WEAPON_ATTACHMENT "keybinding_human_weapon_attachment" #define COMSIG_KB_HUMAN_WEAPON_ATTACHMENT_RAIL "keybinding_human_weapon_attachment_rail" +#define COMSIG_KB_HUMAN_WEAPON_SHOTGUN_TUBE "keybinding_human_weapon_shotgun_tube" #define COMSIG_KB_HUMAN_WEAPON_TOGGLE_IFF "keybinding_human_weapon_toggle_iff" @@ -155,8 +170,7 @@ #define COMSIG_KB_YAUTJA_BUTCHER "keybinding_yautja_butcher" #define COMSIG_KB_YAUTJA_PRED_BUY "keybinding_yautja_pred_buy" #define COMSIG_KB_YAUTJA_MARK_PANEL "keybinding_yautja_mark_panel" -#define COMSIG_KB_YAUTJA_MARK_FOR_HUNT "keybinding_yautja_mark_for_hunt" -#define COMSIG_KB_YAUTJA_REMOVE_FROM_HUNT "keybinding_yautja_remove_from_hunt" +#define COMSIG_KB_YAUTJA_TOGGLE_MARK_FOR_HUNT "keybinding_yautja_toggle_mark_for_hunt" // Yautja Bracer #define COMSIG_KB_YAUTJA_TOGGLE_NOTIFICATION_SOUND "keybinding_yautja_toggle_notification_sound" @@ -177,6 +191,7 @@ #define COMSIG_KB_YAUTJA_BRACERNAME "keybinding_yautja_bracername" #define COMSIG_KB_YAUTJA_IDCHIP "keybinding_yautja_idchip" #define COMSIG_KB_YAUTJA_LINK_BRACER "keybinding_yautja_link_bracer" +#define COMSIG_KB_YAUTJA_CONTROL_FALCON "keybinding_yautja_control_falcon" //mask #define COMSIG_KB_YAUTJA_MASK_TOGGLE_ZOOM "keybinding_yautja_mask_toggle_zoom" @@ -185,10 +200,12 @@ //misc yautja #define COMSIG_KB_YAUTJA_TELE_LOC "keybinding_yautja_tele_loc" +#define COMSIG_KB_YAUTJA_FOLD_COMBISTICK "keybinding_yautja_fold_combistick" #define COMSIG_KB_OBSERVER_JOIN_XENO "keybinding_observer_join_as_xeno" #define COMSIG_KB_OBSERVER_JOIN_ERT "keybinding_observer_join_ert" #define COMSIG_KB_OBSERVER_JOIN_PREDATOR "keybinding_observer_join_pred" +#define COMSIG_KB_OBSERVER_JOIN_LESSER_DRONE "keybinding_observer_join_lesser_drone" #define CATEGORY_CLIENT "CLIENT" #define CATEGORY_EMOTE "EMOTE" @@ -197,6 +214,7 @@ #define CATEGORY_CARBON "CARBON" #define CATEGORY_HUMAN "HUMAN" #define CATEGORY_HUMAN_COMBAT "HUMAN COMBAT" +#define CATEGORY_HUMAN_INVENTORY "HUMAN INVENTORY" #define CATEGORY_ROBOT "ROBOT" #define CATEGORY_YAUTJA "YAUTJA" #define CATEGORY_MISC "MISC" diff --git a/code/__DEFINES/language.dm b/code/__DEFINES/language.dm index 8cac90defb26..e4c4041a3dda 100644 --- a/code/__DEFINES/language.dm +++ b/code/__DEFINES/language.dm @@ -12,7 +12,7 @@ #define LANGUAGE_XENOMORPH "Xenomorph" #define LANGUAGE_HIVEMIND "Hivemind" -#define LANGUAGE_APOLLO "Apollo Link" +#define LANGUAGE_APOLLO "APOLLO Link" #define LANGUAGE_TELEPATH "Telepath Implant" @@ -20,6 +20,8 @@ #define ALL_SYNTH_LANGUAGES list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE, LANGUAGE_CHINESE, LANGUAGE_RUSSIAN, LANGUAGE_GERMAN, LANGUAGE_SPANISH, LANGUAGE_YAUTJA, LANGUAGE_XENOMORPH) +#define ALL_SYNTH_LANGUAGES_UPP list(LANGUAGE_RUSSIAN, LANGUAGE_ENGLISH, LANGUAGE_JAPANESE, LANGUAGE_CHINESE, LANGUAGE_GERMAN, LANGUAGE_SPANISH, LANGUAGE_YAUTJA, LANGUAGE_XENOMORPH) + //Chinese language sound bitflags //initial flags diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 3cbd0d6dac44..63e79cdf676d 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -83,10 +83,15 @@ #define ABOVE_SPECIAL_RESIN_STRUCTURE_LAYER 3.01 +/// A layer above objects (like structures) but below items +#define BETWEEN_OBJECT_ITEM_LAYER 3.01 + +/// The layer on which items lay +#define ITEM_LAYER 3.02 /// for items that should be at the top of the pile of items -#define UPPER_ITEM_LAYER 3.01 +#define UPPER_ITEM_LAYER 3.03 /// just above all items -#define ABOVE_OBJ_LAYER 3.02 +#define ABOVE_OBJ_LAYER 3.04 #define BUSH_LAYER 3.05 @@ -136,8 +141,6 @@ #define ABOVE_FLY_LAYER 6 -#define ABOVE_LIGHTING_PLANE 16 - /// blip from motion detector #define BELOW_FULLSCREEN_LAYER 16.9 #define FULLSCREEN_LAYER 17 @@ -155,6 +158,8 @@ #define FULLSCREEN_BLIND_LAYER 17.15 /// pain flashes #define FULLSCREEN_PAIN_LAYER 17.2 +/// Vulture sniper/spotter scope +#define FULLSCREEN_VULTURE_SCOPE_LAYER 17.21 /// in critical #define FULLSCREEN_CRIT_LAYER 17.25 @@ -163,11 +168,44 @@ #define CINEMATIC_LAYER 21 -#define TYPING_LAYER 500 - /// for areas, so they appear above everything else on map file. #define AREAS_LAYER 999 +//---------- EMISSIVES ------------- +//Layering order of these is not particularly meaningful. +//Important part is the seperation of the planes for control via plane_master + +/// This plane masks out lighting to create an "emissive" effect, ie for glowing lights in otherwise dark areas. +#define EMISSIVE_PLANE 90 +/// The render target used by the emissive layer. +#define EMISSIVE_RENDER_TARGET "*EMISSIVE_PLANE" +/// The layer you should use if you _really_ don't want an emissive overlay to be blocked. +#define EMISSIVE_LAYER_UNBLOCKABLE 9999 + +#define LIGHTING_BACKPLANE_LAYER 14.5 + +#define LIGHTING_RENDER_TARGET "LIGHT_PLANE" + +#define SHADOW_RENDER_TARGET "SHADOW_RENDER_TARGET" + +/// Plane for balloon text (text that fades up) +#define BALLOON_CHAT_PLANE 110 +/// Bubble for typing indicators +#define TYPING_LAYER 500 + +#define O_LIGHTING_VISUAL_PLANE 120 +#define O_LIGHTING_VISUAL_LAYER 16 +#define O_LIGHTING_VISUAL_RENDER_TARGET "O_LIGHT_VISUAL_PLANE" + +#define LIGHTING_PRIMARY_LAYER 15 //The layer for the main lights of the station +#define LIGHTING_PRIMARY_DIMMER_LAYER 15.1 //The layer that dims the main lights of the station +#define LIGHTING_SECONDARY_LAYER 16 //The colourful, usually small lights that go on top + +#define LIGHTING_SHADOW_LAYER 17 //Where the shadows happen + +#define ABOVE_LIGHTING_PLANE 150 +#define ABOVE_LIGHTING_LAYER 18 + /*=============================*\ | | | PLANE DEFINES | @@ -181,6 +219,8 @@ #define FLOOR_PLANE -7 /// Game Plane, where most of the game objects reside #define GAME_PLANE -6 +/// Above Game Plane. For things which are above game objects, but below screen effects. +#define ABOVE_GAME_PLANE -5 /// Roof plane, disappearing when entering buildings #define ROOF_PLANE -4 @@ -189,8 +229,10 @@ #define GHOST_PLANE 80 +///--------------- FULLSCREEN RUNECHAT BUBBLES ------------ #define LIGHTING_PLANE 100 #define EXTERIOR_LIGHTING_PLANE 101 +#define NVG_PLANE 110 ///Popup Chat Messages #define RUNECHAT_PLANE 501 diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm index ac050e467a71..3fd2e3caa64b 100644 --- a/code/__DEFINES/lighting.dm +++ b/code/__DEFINES/lighting.dm @@ -1,3 +1,109 @@ +///Object doesn't use any of the light systems. Should be changed to add a light source to the object. +#define NO_LIGHT_SUPPORT 0 +///Light made with the lighting datums, applying a matrix. +#define STATIC_LIGHT 1 +///Light made by masking the lighting darkness plane. +#define MOVABLE_LIGHT 2 +///A mix of the above, cheaper on moving items than dynamic, but heavier on rendering than movable +#define HYBRID_LIGHT 3 +///Pointy light +#define DIRECTIONAL_LIGHT 4 + +#define LIGHT_ATTACHED (1<<0) + +#define MINIMUM_USEFUL_LIGHT_RANGE 1.4 + +#define LIGHTING_ICON 'icons/effects/lighting_object.dmi' // icon used for lighting shading effects +#define LIGHTING_ICON_BIG 'icons/effects/lighting_object_big.dmi' //! icon used for lighting shading effects + +#define ALPHA_TO_INTENSITY(alpha) (-(((clamp(alpha, 0, 22) - 22) / 6) ** 4) + 255) + + +#define LIGHT_RANGE_FIRE 3 //How many tiles standard fires glow. + #define LIGHTING_PLANE_ALPHA_VISIBLE 255 +///The dim natural vision of Yautja +#define LIGHTING_PLANE_ALPHA_YAUTJA 235 +#define LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE 192 #define LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE 127 #define LIGHTING_PLANE_ALPHA_INVISIBLE 0 + + +#define FLASH_LIGHT_DURATION 2 +#define FLASH_LIGHT_POWER 3 +#define FLASH_LIGHT_RANGE 3.8 + +// Emissive blocking. +/// Uses vis_overlays to leverage caching so that very few new items need to be made for the overlay. For anything that doesn't change outline or opaque area much or at all. +#define EMISSIVE_BLOCK_GENERIC 1 +/// Uses a dedicated render_target object to copy the entire appearance in real time to the blocking layer. For things that can change in appearance a lot from the base state, like humans. +#define EMISSIVE_BLOCK_UNIQUE 2 + +/// The color matrix applied to all emissive overlays. Should be solely dependent on alpha and not have RGB overlap with [EM_BLOCK_COLOR]. +#define EMISSIVE_COLOR list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 1,1,1,0) +/// A globaly cached version of [EMISSIVE_COLOR] for quick access. +GLOBAL_LIST_INIT(emissive_color, EMISSIVE_COLOR) +/// The color matrix applied to all emissive blockers. Should be solely dependent on alpha and not have RGB overlap with [EMISSIVE_COLOR]. +#define EM_BLOCK_COLOR list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0) +/// A globaly cached version of [EM_BLOCK_COLOR] for quick access. +GLOBAL_LIST_INIT(em_block_color, EM_BLOCK_COLOR) +/// A set of appearance flags applied to all emissive and emissive blocker overlays. +#define EMISSIVE_APPEARANCE_FLAGS (KEEP_APART|KEEP_TOGETHER|RESET_COLOR|RESET_TRANSFORM) +/// The color matrix used to mask out emissive blockers on the emissive plane. Alpha should default to zero, be solely dependent on the RGB value of [EMISSIVE_COLOR], and be independent of the RGB value of [EM_BLOCK_COLOR]. +#define EM_MASK_MATRIX list(0,0,0,1/3, 0,0,0,1/3, 0,0,0,1/3, 0,0,0,0, 1,1,1,0) +/// A globaly cached version of [EM_MASK_MATRIX] for quick access. +GLOBAL_LIST_INIT(em_mask_matrix, EM_MASK_MATRIX) + +/// Returns the red part of a #RRGGBB hex sequence as number +#define GETREDPART(hexa) hex2num(copytext(hexa, 2, 4)) + +/// Returns the green part of a #RRGGBB hex sequence as number +#define GETGREENPART(hexa) hex2num(copytext(hexa, 4, 6)) + +/// Returns the blue part of a #RRGGBB hex sequence as number +#define GETBLUEPART(hexa) hex2num(copytext(hexa, 6, 8)) + +/// Parse the hexadecimal color into lumcounts of each perspective. +#define PARSE_LIGHT_COLOR(source) \ +do { \ + if (source.light_color != COLOR_WHITE) { \ + var/__light_color = source.light_color; \ + source.lum_r = GETREDPART(__light_color) / 255; \ + source.lum_g = GETGREENPART(__light_color) / 255; \ + source.lum_b = GETBLUEPART(__light_color) / 255; \ + } else { \ + source.lum_r = 1; \ + source.lum_g = 1; \ + source.lum_b = 1; \ + }; \ +} while (FALSE) + + +//Bay lighting engine shit, not in /code/modules/lighting because BYOND is being shit about it //thats how defines work, hello? +#define LIGHTING_INTERVAL 5 // frequency, in 1/10ths of a second, of the lighting process + +#define MOVABLE_MAX_RANGE 7 + +#define LIGHTING_FALLOFF 1 // type of falloff to use for lighting; 1 for circular, 2 for square +#define LIGHTING_LAMBERTIAN 0 // use lambertian shading for light sources +#define LIGHTING_HEIGHT 1 // height off the ground of light sources on the pseudo-z-axis, you should probably leave this alone +#define LIGHTING_ROUND_VALUE (1 / 64) //Value used to round lumcounts, values smaller than 1/129 don't matter (if they do, thanks sinking points), greater values will make lighting less precise, but in turn increase performance, VERY SLIGHTLY. + +/// If the max of the lighting lumcounts of each spectrum drops below this, disable luminosity on the lighting objects. Set to zero to disable soft lighting. Luminosity changes then work if it's lit at all. +#define LIGHTING_SOFT_THRESHOLD 0 + +// If I were you I'd leave this alone. +#define LIGHTING_BASE_MATRIX \ + list \ + ( \ + 1, 1, 1, 0, \ + 1, 1, 1, 0, \ + 1, 1, 1, 0, \ + 1, 1, 1, 0, \ + 0, 0, 0, 1 \ + ) \ + +#define LIGHTING_NO_UPDATE 0 +#define LIGHTING_VIS_UPDATE 1 +#define LIGHTING_CHECK_UPDATE 2 +#define LIGHTING_FORCE_UPDATE 3 diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm index 3f6a4a44ee07..155a91fa62ed 100644 --- a/code/__DEFINES/maps.dm +++ b/code/__DEFINES/maps.dm @@ -32,6 +32,7 @@ require only minor tweaks. #define ZTRAIT_FOG "Fog" #define ZTRAIT_LOCKDOWN "Lockdown" #define ZTRAIT_BASIC_RT "BasicRT" +#define ZTRAIT_IN_SPACE "InSpace" // Is our ground_level considered in space or on a space station // boolean - weather types that occur on the level #define ZTRAIT_SNOWSTORM "weather_snowstorm" diff --git a/code/__DEFINES/minimap.dm b/code/__DEFINES/minimap.dm index 9069ed323357..57c5ffeba38a 100644 --- a/code/__DEFINES/minimap.dm +++ b/code/__DEFINES/minimap.dm @@ -4,7 +4,18 @@ #define MINIMAP_FLAG_PMC (1<<2) #define MINIMAP_FLAG_UPP (1<<3) #define MINIMAP_FLAG_CLF (1<<4) -#define MINIMAP_FLAG_ALL (1<<5) - 1 +#define MINIMAP_FLAG_YAUTJA (1<<5) +#define MINIMAP_FLAG_XENO_CORRUPTED (1<<6) +#define MINIMAP_FLAG_XENO_ALPHA (1<<7) +#define MINIMAP_FLAG_XENO_BRAVO (1<<8) +#define MINIMAP_FLAG_XENO_CHARLIE (1<<9) +#define MINIMAP_FLAG_XENO_DELTA (1<<10) +#define MINIMAP_FLAG_XENO_FERAL (1<<11) +#define MINIMAP_FLAG_XENO_TAMED (1<<12) +#define MINIMAP_FLAG_XENO_MUTATED (1<<13) +#define MINIMAP_FLAG_XENO_FORSAKEN (1<<14) +#define MINIMAP_FLAG_XENO_RENEGADE (1<<15) +#define MINIMAP_FLAG_ALL (1<<16) - 1 ///Converts the overworld x and y to minimap x and y values #define MINIMAP_SCALE 2 @@ -51,6 +62,7 @@ GLOBAL_LIST_INIT(all_minimap_flags, bitfield2list(MINIMAP_FLAG_ALL)) #define MINIMAP_SQUAD_ECHO "#00b043" #define MINIMAP_SQUAD_FOXTROT "#fe7b2e" #define MINIMAP_SQUAD_SOF "#400000" +#define MINIMAP_SQUAD_INTEL "#053818" #define MINIMAP_ICON_BACKGROUND_CIVILIAN "#7D4820" #define MINIMAP_ICON_BACKGROUND_CIC "#3f3f3f" @@ -74,9 +86,3 @@ GLOBAL_LIST_INIT(all_minimap_flags, bitfield2list(MINIMAP_FLAG_ALL)) #define TACMAP_BASE_OCCLUDED "Occluded" #define TACMAP_BASE_OPEN "Open" - -#define TACMAP_DEFAULT "Default" -#define TACMAP_XENO "Xeno" -#define TACMAP_YAUTJA "Yautja" -#define TACMAP_FACTION "Faction" - diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index b2936248c3ba..b195328264cd 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -44,6 +44,8 @@ #define AREA_ALLOW_XENO_JOIN (1<<2) /// Flags the area as a containment area #define AREA_CONTAINMENT (1<<3) +/// Flags the area as permanently unweedable. Still requires is_resin_allowed = FALSE +#define AREA_UNWEEDABLE (1<<4) /// Default number of ticks for do_after #define DA_DEFAULT_NUM_TICKS 5 @@ -96,10 +98,9 @@ #define INTERRUPT_MIDDLECLICK (1<<15) #define INTERRUPT_DAZED (1<<16) #define INTERRUPT_EMOTE (1<<17) -// By default not in INTERRUPT_ALL (too niche) #define INTERRUPT_CHANGED_LYING (1<<18) -#define INTERRUPT_ALL (INTERRUPT_DIFF_LOC|INTERRUPT_DIFF_TURF|INTERRUPT_UNCONSCIOUS|INTERRUPT_KNOCKED_DOWN|INTERRUPT_STUNNED|INTERRUPT_NEEDHAND|INTERRUPT_RESIST) +#define INTERRUPT_ALL (INTERRUPT_DIFF_LOC|INTERRUPT_DIFF_TURF|INTERRUPT_UNCONSCIOUS|INTERRUPT_KNOCKED_DOWN|INTERRUPT_STUNNED|INTERRUPT_NEEDHAND|INTERRUPT_RESIST|INTERRUPT_CHANGED_LYING) #define INTERRUPT_ALL_OUT_OF_RANGE (INTERRUPT_ALL & (~INTERRUPT_DIFF_TURF)|INTERRUPT_OUT_OF_RANGE) #define INTERRUPT_MOVED (INTERRUPT_DIFF_LOC|INTERRUPT_DIFF_TURF|INTERRUPT_RESIST) #define INTERRUPT_NO_NEEDHAND (INTERRUPT_ALL & (~INTERRUPT_NEEDHAND)) @@ -111,7 +112,7 @@ // These behaviors are either of the person performing the action or any targets. /// You cannot move the person while this action is being performed -#define BEHAVIOR_IMMOBILE (1<<18) +#define BEHAVIOR_IMMOBILE (1<<19) // *************************************** // // END DO_AFTER FLAGS // @@ -122,7 +123,6 @@ #define MATERIAL_METAL "metal" #define MATERIAL_PLASTEEL "plasteel" #define MATERIAL_WOOD "wood plank" -#define MATERIAL_CRYSTAL "plasmagas" // SIZES FOR ITEMS, use it for w_class @@ -282,6 +282,8 @@ #define COOLDOWN_COMM_CENTRAL 30 SECONDS #define COOLDOWN_COMM_DESTRUCT 5 MINUTES +///Cooldown for pred recharge +#define COOLDOWN_BRACER_CHARGE 3 MINUTES // magic value to use for indicating a proc slept #define PROC_RETURN_SLEEP -1 diff --git a/code/__DEFINES/mob.dm b/code/__DEFINES/mob.dm new file mode 100644 index 000000000000..7f9f33ea483c --- /dev/null +++ b/code/__DEFINES/mob.dm @@ -0,0 +1 @@ +#define DEFAULT_MOB_STATUS_FLAGS CANKNOCKDOWN|CANPUSH|STATUS_FLAGS_DEBILITATE diff --git a/code/__DEFINES/mob_hud.dm b/code/__DEFINES/mob_hud.dm index 2704e52d2f85..02f992694832 100644 --- a/code/__DEFINES/mob_hud.dm +++ b/code/__DEFINES/mob_hud.dm @@ -65,3 +65,6 @@ #define TRACKER_HIVE "Hive Core" #define TRACKER_LEADER "Leader" #define TRACKER_TUNNEL "Tunnel" + +//These are used to manage the same HUD having multiple sources +#define HUD_SOURCE_ADMIN "admin" diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 495b5fb472c5..7ec2ab8b975e 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -1,3 +1,6 @@ +/// Multiplier for Stun/KD/KO/etc durations in new backend, due to old system being based on life ticks +#define GLOBAL_STATUS_MULTIPLIER 20 // each in-code unit is worth 20ds of duration + #define HEALTH_THRESHOLD_DEAD -100 #define HEALTH_THRESHOLD_CRIT -50 @@ -11,8 +14,6 @@ #define OVEREAT_TIME 200 //================================================= -#define ALIEN_SELECT_AFK_BUFFER 1 // How many minutes that a person can be AFK before not being allowed to be an alien. - #define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point #define HEAT_DAMAGE_LEVEL_2 4 //Amount of damage applied when your body temperature passes the 400K point #define HEAT_DAMAGE_LEVEL_3 8 //Amount of damage applied when your body temperature passes the 1000K point @@ -46,9 +47,7 @@ //disabilities #define NEARSIGHTED (1<<0) -#define EPILEPSY (1<<1) -#define COUGHING (1<<2) -#define TOURETTES (1<<3) + #define NERVOUS (1<<4) #define OPIATE_RECEPTOR_DEFICIENCY (1<<5) //================================================= @@ -90,6 +89,8 @@ #define DAZE "daze" #define SLOW "slow" #define SUPERSLOW "superslow" +#define ROOT "root" + //================================================= //I hate adding defines like this but I'd much rather deal with bitflags than lists and string searches @@ -101,7 +102,7 @@ //Bitflags defining which status effects could be or are inflicted on a mob -#define STATUS_FLAGS_DEBILITATE (CANSTUN|CANKNOCKOUT|CANDAZE|CANSLOW) +#define STATUS_FLAGS_DEBILITATE (CANSTUN|CANKNOCKOUT|CANDAZE|CANSLOW|CANROOT) #define CANSTUN (1<<0) #define CANKNOCKDOWN (1<<1) @@ -109,6 +110,7 @@ #define CANPUSH (1<<3) #define LEAPING (1<<4) #define PASSEMOTES (1<<5) //holders inside of mob that need to see emotes. +#define CANROOT (1<<6) #define GODMODE (1<<12) #define FAKEDEATH (1<<13) //Replaces stuff like changeling.changeling_fakedeath #define DISFIGURED (1<<14) //I'll probably move this elsewhere if I ever get wround to writing a bitflag mob-damage system @@ -133,8 +135,11 @@ #define XENO_HIVE_MUTATED "xeno_hive_mutated" #define XENO_HIVE_FORSAKEN "xeno_hive_forsaken" #define XENO_HIVE_YAUTJA "xeno_hive_yautja" +#define XENO_HIVE_RENEGADE "xeno_hive_renegade" -#define ALL_XENO_HIVES list(XENO_HIVE_NORMAL, XENO_HIVE_CORRUPTED, XENO_HIVE_ALPHA, XENO_HIVE_BRAVO, XENO_HIVE_CHARLIE, XENO_HIVE_DELTA, XENO_HIVE_FERAL, XENO_HIVE_TAMED, XENO_HIVE_MUTATED, XENO_HIVE_FORSAKEN, XENO_HIVE_YAUTJA) +#define XENO_HIVE_TUTORIAL "xeno_hive_tutorial" + +#define ALL_XENO_HIVES list(XENO_HIVE_NORMAL, XENO_HIVE_CORRUPTED, XENO_HIVE_ALPHA, XENO_HIVE_BRAVO, XENO_HIVE_CHARLIE, XENO_HIVE_DELTA, XENO_HIVE_FERAL, XENO_HIVE_TAMED, XENO_HIVE_MUTATED, XENO_HIVE_FORSAKEN, XENO_HIVE_YAUTJA, XENO_HIVE_RENEGADE, XENO_HIVE_TUTORIAL) //================================================= @@ -195,22 +200,22 @@ //================================================= //Species flags. -#define NO_BLOOD (1<<0) -#define NO_BREATHE (1<<1) +#define NO_BLOOD (1<<0) +#define NO_BREATHE (1<<1) #define NO_CLONE_LOSS (1<<2) -#define NO_SLIP (1<<3) +#define NO_SLIP (1<<3) #define NO_POISON (1<<4) -#define NO_CHEM_METABOLIZATION (1<<5) //Prevents reagents from acting on_mob_life(). +#define NO_CHEM_METABOLIZATION (1<<5) //Prevents reagents from acting on_mob_life(). #define HAS_SKIN_TONE (1<<6) -#define HAS_SKIN_COLOR (1<<7) -#define HAS_LIPS (1<<8) +#define HAS_SKIN_COLOR (1<<7) +#define HAS_LIPS (1<<8) #define HAS_UNDERWEAR (1<<9) -#define IS_WHITELISTED (1<<10) -#define IS_SYNTHETIC (1<<11) -#define NO_NEURO (1<<12) +#define IS_WHITELISTED (1<<10) +#define IS_SYNTHETIC (1<<11) +#define NO_NEURO (1<<12) #define SPECIAL_BONEBREAK (1<<13) //species do not get their bonebreak chance modified by endurance -#define NO_SHRAPNEL (1<<14) -#define HAS_HARDCRIT (1<<15) +#define NO_SHRAPNEL (1<<14) +#define HAS_HARDCRIT (1<<15) //================================================= @@ -223,6 +228,7 @@ //Mob sizes #define MOB_SIZE_SMALL 0 #define MOB_SIZE_HUMAN 1 +#define MOB_SIZE_XENO_VERY_SMALL 1.5 #define MOB_SIZE_XENO_SMALL 2 #define MOB_SIZE_XENO 3 #define MOB_SIZE_BIG 4 @@ -310,6 +316,10 @@ // Queen strain flags #define QUEEN_NORMAL "Normal" +// Facehugger strain flags +#define FACEHUGGER_NORMAL "Normal" +#define FACEHUGGER_WATCHER "Watcher" + // Drone strain flags #define DRONE_NORMAL "Normal" #define DRONE_HEALER "Healer" @@ -370,7 +380,7 @@ // Hellhound strain flags #define HELLHOUND_NORMAL "Normal" -var/list/default_onmob_icons = list( +GLOBAL_LIST_INIT(default_onmob_icons, list( WEAR_L_HAND = 'icons/mob/humans/onmob/items_lefthand_0.dmi', WEAR_R_HAND = 'icons/mob/humans/onmob/items_righthand_0.dmi', WEAR_WAIST = 'icons/mob/humans/onmob/belt.dmi', @@ -389,9 +399,9 @@ var/list/default_onmob_icons = list( WEAR_HANDS = 'icons/mob/humans/onmob/hands.dmi', WEAR_J_STORE = 'icons/mob/humans/onmob/suit_slot.dmi', WEAR_ACCESSORIES = 'icons/mob/humans/onmob/ties.dmi' - ) + )) -var/list/default_xeno_onmob_icons = list( +GLOBAL_LIST_INIT(default_xeno_onmob_icons, list( /mob/living/carbon/xenomorph/runner = 'icons/mob/xenos/onmob/runner.dmi', /mob/living/carbon/xenomorph/praetorian = 'icons/mob/xenos/onmob/praetorian.dmi', /mob/living/carbon/xenomorph/drone = 'icons/mob/xenos/onmob/drone.dmi', @@ -399,7 +409,7 @@ var/list/default_xeno_onmob_icons = list( /mob/living/carbon/xenomorph/defender = 'icons/mob/xenos/onmob/defender.dmi', /mob/living/carbon/xenomorph/sentinel = 'icons/mob/xenos/onmob/sentinel.dmi', /mob/living/carbon/xenomorph/spitter = 'icons/mob/xenos/onmob/spitter.dmi' - ) + )) // species names #define SPECIES_HUMAN "Human" @@ -413,3 +423,33 @@ var/list/default_xeno_onmob_icons = list( #define HANDLING_LIMBS list("l_arm","l_hand", "r_arm", "r_hand") #define EXTREMITY_LIMBS list("l_leg","l_foot","r_leg","r_foot","l_arm","l_hand","r_arm","r_hand") #define CORE_LIMBS list("chest","head","groin") + +#define SYMPTOM_ACTIVATION_PROB 3 + +// Body position defines. +/// Mob is standing up, usually associated with lying_angle value of 0. +#define STANDING_UP 0 +/// Mob is lying down, usually associated with lying_angle values of 90 or 270. +#define LYING_DOWN 1 + +/// Possible value of [/atom/movable/buckle_lying]. If set to a different (positive-or-zero) value than this, the buckling thing will force a lying angle on the buckled. +#define NO_BUCKLE_LYING -1 + +// ==================================== +// /mob/living /tg/ mobility_flags +// These represent in what capacity the mob is capable of moving +// Because porting this is underway, NOT ALL FLAGS ARE CURRENTLY IN. + +/// can move +#define MOBILITY_MOVE (1<<0) +/// can, and is, standing up +#define MOBILITY_STAND (1<<1) +/// can rest +#define MOBILITY_REST (1<<7) +/// can lie down +#define MOBILITY_LIEDOWN (1<<8) + +#define MOBILITY_FLAGS_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND) +#define MOBILITY_FLAGS_CARBON_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND | MOBILITY_REST | MOBILITY_LIEDOWN) +#define MOBILITY_FLAGS_REST_CAPABLE_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND | MOBILITY_REST | MOBILITY_LIEDOWN) + diff --git a/code/__DEFINES/mode.dm b/code/__DEFINES/mode.dm index 4f4d8cc1f467..e49bf3f7bd3f 100644 --- a/code/__DEFINES/mode.dm +++ b/code/__DEFINES/mode.dm @@ -6,7 +6,7 @@ #define SHUTTLE_LOCK_COOLDOWN 10 MINUTES #define MONORAIL_LOCK_COOLDOWN 3 MINUTES #define SHUTTLE_LOCK_TIME_LOCK 1 MINUTES -#define EVACUATION_AUTOMATIC_DEPARTURE 10 MINUTES //All pods automatically depart in 10 minutes, unless they are full or unable to launch for some reason. +#define EVACUATION_AUTOMATIC_DEPARTURE (10 MINUTES) //All pods automatically depart in 10 minutes, unless they are full or unable to launch for some reason. #define EVACUATION_ESTIMATE_DEPARTURE ((evac_time + EVACUATION_AUTOMATIC_DEPARTURE - world.time) * 0.1) #define EVACUATION_STATUS_STANDING_BY 0 @@ -14,6 +14,7 @@ #define EVACUATION_STATUS_IN_PROGRESS 2 #define EVACUATION_STATUS_COMPLETE 3 +#define NUCLEAR_TIME_LOCK 90 MINUTES #define NUKE_EXPLOSION_INACTIVE 0 #define NUKE_EXPLOSION_ACTIVE 1 #define NUKE_EXPLOSION_IN_PROGRESS 2 @@ -69,12 +70,14 @@ #define MODE_LZ_PROTECTION (1<<7) /// Prevents the LZ from being mortared #define MODE_SHIPSIDE_SD (1<<8) /// Toggles whether Predators can big SD when not on the groundmap #define MODE_HARDCORE_PERMA (1<<9) /// Toggles Hardcore for all marines, meaning they instantly perma upon death -#define MODE_ALLOW_ZOMBIES (1<<10) /// Whether or not zombiism can spread through non admin means. +#define MODE_DISPOSABLE_MOBS (1<<10) // Toggles if mobs fit in disposals or not. Off by default. +#define MODE_BYPASS_JOE (1<<11) // Toggles if ghosts can bypass Working Joe spawn limitations, does NOT bypass WL requirement. Off by default. +#define MODE_ALLOW_ZOMBIES (1<<12) /// Whether or not zombiism can spread through non admin means. #define ROUNDSTATUS_FOG_DOWN 1 #define ROUNDSTATUS_PODDOORS_OPEN 2 -#define LATEJOIN_MARINES_PER_LATEJOIN_LARVA 3 +#define LATEJOIN_MARINES_PER_LATEJOIN_LARVA 2.5 //================================================= #define SHOW_ITEM_ANIMATIONS_NONE 0 //Do not show any item pickup animations @@ -89,8 +92,8 @@ //================================================= -//Number of marine players against which the Marine's gear scales -#define MARINE_GEAR_SCALING_NORMAL 30 +/// Number of weighted marine players for 1 gear_scale. gear_scale is clamped to 1 minimum +#define MARINE_GEAR_SCALING_NORMAL 50 #define RESOURCE_NODE_SCALE 95 //How many players minimum per extra set of resource nodes #define RESOURCE_NODE_QUANTITY_PER_POP 11 //How many resources total per pop @@ -107,34 +110,34 @@ //================================================= //Role defines, specifically lists of roles for job bans, crew manifests and the like. -var/global/list/ROLES_COMMAND = list(JOB_CO, JOB_XO, JOB_SO, JOB_INTEL, JOB_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_CREWMAN, JOB_POLICE, JOB_CORPORATE_LIAISON, JOB_COMBAT_REPORTER, JOB_CHIEF_REQUISITION, JOB_CHIEF_ENGINEER, JOB_CMO, JOB_CHIEF_POLICE, JOB_SEA, JOB_SYNTH, JOB_WARDEN) +GLOBAL_LIST_INIT(ROLES_COMMAND, list(JOB_CO, JOB_XO, JOB_SO, JOB_AUXILIARY_OFFICER, JOB_INTEL, JOB_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_CREWMAN, JOB_POLICE, JOB_CORPORATE_LIAISON, JOB_COMBAT_REPORTER, JOB_CHIEF_REQUISITION, JOB_CHIEF_ENGINEER, JOB_CMO, JOB_CHIEF_POLICE, JOB_SEA, JOB_SYNTH, JOB_WARDEN)) //Marine roles -#define ROLES_OFFICERS list(JOB_CO, JOB_XO, JOB_SO, JOB_INTEL, JOB_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_SEA, JOB_CORPORATE_LIAISON, JOB_COMBAT_REPORTER, JOB_SYNTH, JOB_CHIEF_POLICE, JOB_WARDEN, JOB_POLICE) -var/global/list/ROLES_CIC = list(JOB_CO, JOB_XO, JOB_SO, JOB_WO_CO, JOB_WO_XO) -var/global/list/ROLES_AUXIL_SUPPORT = list(JOB_INTEL, JOB_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_WO_CHIEF_POLICE, JOB_WO_SO, JOB_WO_CREWMAN, JOB_WO_POLICE, JOB_WO_PILOT) -var/global/list/ROLES_MISC = list(JOB_SYNTH, JOB_WORKING_JOE, JOB_SEA, JOB_CORPORATE_LIAISON, JOB_COMBAT_REPORTER, JOB_MESS_SERGEANT, JOB_WO_CORPORATE_LIAISON, JOB_WO_SYNTH) -var/global/list/ROLES_POLICE = list(JOB_CHIEF_POLICE, JOB_WARDEN, JOB_POLICE) -var/global/list/ROLES_ENGINEERING = list(JOB_CHIEF_ENGINEER, JOB_ORDNANCE_TECH, JOB_MAINT_TECH, JOB_WO_CHIEF_ENGINEER, JOB_WO_ORDNANCE_TECH) -var/global/list/ROLES_REQUISITION = list(JOB_CHIEF_REQUISITION, JOB_CARGO_TECH, JOB_WO_CHIEF_REQUISITION, JOB_WO_REQUISITION) -var/global/list/ROLES_MEDICAL = list(JOB_CMO, JOB_RESEARCHER, JOB_DOCTOR, JOB_NURSE, JOB_WO_CMO, JOB_WO_RESEARCHER, JOB_WO_DOCTOR) -var/global/list/ROLES_MARINES = list(JOB_SQUAD_LEADER, JOB_SQUAD_TEAM_LEADER, JOB_SQUAD_SPECIALIST, JOB_SQUAD_SMARTGUN, JOB_SQUAD_MEDIC, JOB_SQUAD_ENGI, JOB_SQUAD_MARINE) -var/global/list/ROLES_SQUAD_ALL = list(SQUAD_MARINE_1, SQUAD_MARINE_2, SQUAD_MARINE_3, SQUAD_MARINE_4, SQUAD_MARINE_5, SQUAD_MARINE_CRYO) +#define ROLES_OFFICERS list(JOB_CO, JOB_XO, JOB_SO, JOB_AUXILIARY_OFFICER, JOB_INTEL, JOB_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_SEA, JOB_CORPORATE_LIAISON, JOB_COMBAT_REPORTER, JOB_SYNTH, JOB_CHIEF_POLICE, JOB_WARDEN, JOB_POLICE) +GLOBAL_LIST_INIT(ROLES_CIC, list(JOB_CO, JOB_XO, JOB_SO, JOB_WO_CO, JOB_WO_XO)) +GLOBAL_LIST_INIT(ROLES_AUXIL_SUPPORT, list(JOB_AUXILIARY_OFFICER, JOB_INTEL, JOB_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_WO_CHIEF_POLICE, JOB_WO_SO, JOB_WO_CREWMAN, JOB_WO_POLICE, JOB_WO_PILOT)) +GLOBAL_LIST_INIT(ROLES_MISC, list(JOB_SYNTH, JOB_WORKING_JOE, JOB_SEA, JOB_CORPORATE_LIAISON, JOB_COMBAT_REPORTER, JOB_MESS_SERGEANT, JOB_WO_CORPORATE_LIAISON, JOB_WO_SYNTH)) +GLOBAL_LIST_INIT(ROLES_POLICE, list(JOB_CHIEF_POLICE, JOB_WARDEN, JOB_POLICE)) +GLOBAL_LIST_INIT(ROLES_ENGINEERING, list(JOB_CHIEF_ENGINEER, JOB_ORDNANCE_TECH, JOB_MAINT_TECH, JOB_WO_CHIEF_ENGINEER, JOB_WO_ORDNANCE_TECH)) +GLOBAL_LIST_INIT(ROLES_REQUISITION, list(JOB_CHIEF_REQUISITION, JOB_CARGO_TECH, JOB_WO_CHIEF_REQUISITION, JOB_WO_REQUISITION)) +GLOBAL_LIST_INIT(ROLES_MEDICAL, list(JOB_CMO, JOB_RESEARCHER, JOB_DOCTOR, JOB_NURSE, JOB_WO_CMO, JOB_WO_RESEARCHER, JOB_WO_DOCTOR)) +GLOBAL_LIST_INIT(ROLES_MARINES, list(JOB_SQUAD_LEADER, JOB_SQUAD_TEAM_LEADER, JOB_SQUAD_SPECIALIST, JOB_SQUAD_SMARTGUN, JOB_SQUAD_MEDIC, JOB_SQUAD_ENGI, JOB_SQUAD_MARINE)) +GLOBAL_LIST_INIT(ROLES_SQUAD_ALL, list(SQUAD_MARINE_1, SQUAD_MARINE_2, SQUAD_MARINE_3, SQUAD_MARINE_4, SQUAD_MARINE_5, SQUAD_MARINE_CRYO, SQUAD_MARINE_INTEL)) +GLOBAL_LIST_INIT(ROLES_WO, list(JOB_WO_CO, JOB_WO_XO, JOB_WO_CORPORATE_LIAISON, JOB_WO_SYNTH, JOB_WO_CHIEF_POLICE, JOB_WO_SO, JOB_WO_CREWMAN, JOB_WO_POLICE, JOB_WO_PILOT, JOB_WO_CHIEF_ENGINEER, JOB_WO_ORDNANCE_TECH, JOB_WO_CHIEF_REQUISITION, JOB_WO_REQUISITION, JOB_WO_CMO, JOB_WO_DOCTOR, JOB_WO_RESEARCHER, JOB_WO_SQUAD_MARINE, JOB_WO_SQUAD_MEDIC, JOB_WO_SQUAD_ENGINEER, JOB_WO_SQUAD_SMARTGUNNER, JOB_WO_SQUAD_SPECIALIST, JOB_WO_SQUAD_LEADER)) //Groundside roles -var/global/list/ROLES_XENO = list(JOB_XENOMORPH_QUEEN, JOB_XENOMORPH) -var/global/list/ROLES_WHITELISTED = list(JOB_SYNTH_SURVIVOR, JOB_CO_SURVIVOR, JOB_PREDATOR) -var/global/list/ROLES_SPECIAL = list(JOB_SURVIVOR) +GLOBAL_LIST_INIT(ROLES_XENO, list(JOB_XENOMORPH_QUEEN, JOB_XENOMORPH)) +GLOBAL_LIST_INIT(ROLES_WHITELISTED, list(JOB_SYNTH_SURVIVOR, JOB_CO_SURVIVOR, JOB_PREDATOR)) +GLOBAL_LIST_INIT(ROLES_SPECIAL, list(JOB_SURVIVOR)) -var/global/list/ROLES_USCM = ROLES_CIC + ROLES_POLICE + ROLES_AUXIL_SUPPORT + ROLES_MISC + ROLES_ENGINEERING + ROLES_REQUISITION + ROLES_MEDICAL + ROLES_MARINES - ROLES_WO -var/global/list/ROLES_GROUND = ROLES_XENO + ROLES_SPECIAL + ROLES_WHITELISTED +GLOBAL_LIST_INIT(ROLES_USCM, ROLES_CIC + GLOB.ROLES_POLICE + GLOB.ROLES_AUXIL_SUPPORT + GLOB.ROLES_MISC + GLOB.ROLES_ENGINEERING + GLOB.ROLES_REQUISITION + GLOB.ROLES_MEDICAL + GLOB.ROLES_MARINES - ROLES_WO) +GLOBAL_LIST_INIT(ROLES_GROUND, GLOB.ROLES_XENO + ROLES_SPECIAL + ROLES_WHITELISTED) -var/global/list/ROLES_DISTRESS_SIGNAL = ROLES_USCM + ROLES_GROUND -var/global/list/ROLES_FACTION_CLASH = ROLES_USCM + JOB_PREDATOR +GLOBAL_LIST_INIT(ROLES_DISTRESS_SIGNAL, GLOB.ROLES_USCM + GLOB.ROLES_GROUND) +GLOBAL_LIST_INIT(ROLES_FACTION_CLASH, ROLES_USCM + JOB_PREDATOR) -var/global/list/ROLES_UNASSIGNED = list(JOB_SQUAD_MARINE) -var/global/list/ROLES_WO = list(JOB_WO_CO, JOB_WO_XO, JOB_WO_CORPORATE_LIAISON, JOB_WO_SYNTH, JOB_WO_CHIEF_POLICE, JOB_WO_SO, JOB_WO_CREWMAN, JOB_WO_POLICE, JOB_WO_PILOT, JOB_WO_CHIEF_ENGINEER, JOB_WO_ORDNANCE_TECH, JOB_WO_CHIEF_REQUISITION, JOB_WO_REQUISITION, JOB_WO_CMO, JOB_WO_DOCTOR, JOB_WO_RESEARCHER, JOB_WO_SQUAD_MARINE, JOB_WO_SQUAD_MEDIC, JOB_WO_SQUAD_ENGINEER, JOB_WO_SQUAD_SMARTGUNNER, JOB_WO_SQUAD_SPECIALIST, JOB_WO_SQUAD_LEADER) +GLOBAL_LIST_INIT(ROLES_UNASSIGNED, list(JOB_SQUAD_MARINE)) //Role lists used for switch() checks in show_blurb_uscm(). Cosmetic, determines ex. "Engineering, USS Almayer", "2nd Bat. 'Falling Falcons'" etc. #define BLURB_USCM_COMBAT JOB_CO, JOB_XO, JOB_SO, JOB_WO_CO, JOB_WO_XO, JOB_WO_CHIEF_POLICE, JOB_WO_SO, JOB_WO_CREWMAN, JOB_WO_POLICE, JOB_SEA,\ JOB_SQUAD_LEADER, JOB_SQUAD_TEAM_LEADER, JOB_SQUAD_SPECIALIST, JOB_SQUAD_SMARTGUN, JOB_SQUAD_MEDIC, JOB_SQUAD_ENGI, JOB_SQUAD_MARINE @@ -151,9 +154,10 @@ var/global/list/ROLES_WO = list(JOB_WO_CO, JOB_WO_XO, JOB_WO_CORPORATE_LIAISON, #define WHITELIST_COUNCIL "Council" #define WHITELIST_LEADER "Leader" -var/global/list/whitelist_hierarchy = list(WHITELIST_NORMAL, WHITELIST_COUNCIL, WHITELIST_LEADER) +GLOBAL_LIST_INIT(whitelist_hierarchy, list(WHITELIST_NORMAL, WHITELIST_COUNCIL, WHITELIST_LEADER)) //================================================= + #define WHITELIST_YAUTJA (1<<0) ///Old holders of YAUTJA_ELDER #define WHITELIST_YAUTJA_LEGACY (1<<1) @@ -168,15 +172,20 @@ var/global/list/whitelist_hierarchy = list(WHITELIST_NORMAL, WHITELIST_COUNCIL, ///Old holders of COMMANDER_COUNCIL for 3 months #define WHITELIST_COMMANDER_COUNCIL_LEGACY (1<<7) #define WHITELIST_COMMANDER_LEADER (1<<8) +///Former CO senator/whitelist overseer award +#define WHITELIST_COMMANDER_COLONEL (1<<9) -#define WHITELIST_JOE (1<<9) -#define WHITELIST_SYNTHETIC (1<<10) -#define WHITELIST_SYNTHETIC_COUNCIL (1<<11) +#define WHITELIST_JOE (1<<10) +#define WHITELIST_SYNTHETIC (1<<11) +#define WHITELIST_SYNTHETIC_COUNCIL (1<<12) ///Old holders of SYNTHETIC_COUNCIL for 3 months -#define WHITELIST_SYNTHETIC_COUNCIL_LEGACY (1<<12) -#define WHITELIST_SYNTHETIC_LEADER (1<<13) +#define WHITELIST_SYNTHETIC_COUNCIL_LEGACY (1<<13) +#define WHITELIST_SYNTHETIC_LEADER (1<<14) + +///Senior Enlisted Advisor, auto granted by R_MENTOR +#define WHITELIST_MENTOR (1<<15) + -#define WHITELIST_MENTOR (1<<14) #define WHITELISTS_GENERAL (WHITELIST_YAUTJA|WHITELIST_COMMANDER|WHITELIST_SYNTHETIC|WHITELIST_MENTOR|WHITELIST_JOE) #define WHITELISTS_COUNCIL (WHITELIST_YAUTJA_COUNCIL|WHITELIST_COMMANDER_COUNCIL|WHITELIST_SYNTHETIC_COUNCIL) #define WHITELISTS_LEGACY_COUNCIL (WHITELIST_YAUTJA_COUNCIL_LEGACY|WHITELIST_COMMANDER_COUNCIL_LEGACY|WHITELIST_SYNTHETIC_COUNCIL_LEGACY) @@ -184,7 +193,29 @@ var/global/list/whitelist_hierarchy = list(WHITELIST_NORMAL, WHITELIST_COUNCIL, #define WHITELIST_EVERYTHING (WHITELISTS_GENERAL|WHITELISTS_COUNCIL|WHITELISTS_LEADER) -#define isCouncil(A) (RoleAuthority.roles_whitelist[A.ckey] & (WHITELIST_YAUTJA_COUNCIL | WHITELIST_SYNTHETIC_COUNCIL | WHITELIST_COMMANDER_COUNCIL)) +#define COUNCIL_LIST list(WHITELIST_COMMANDER_COUNCIL, WHITELIST_SYNTHETIC_COUNCIL, WHITELIST_YAUTJA_COUNCIL) +#define SENATOR_LIST list(WHITELIST_COMMANDER_LEADER, WHITELIST_SYNTHETIC_LEADER, WHITELIST_YAUTJA_LEADER) +#define isCouncil(A) (A.check_whitelist_status_list(COUNCIL_LIST)) +#define isSenator(A) (A.check_whitelist_status_list(SENATOR_LIST)) + +DEFINE_BITFIELD(whitelist_status, list( + "WHITELIST_YAUTJA" = WHITELIST_YAUTJA, + "WHITELIST_YAUTJA_LEGACY" = WHITELIST_YAUTJA_LEGACY, + "WHITELIST_YAUTJA_COUNCIL" = WHITELIST_YAUTJA_COUNCIL, + "WHITELIST_YAUTJA_COUNCIL_LEGACY" = WHITELIST_YAUTJA_COUNCIL_LEGACY, + "WHITELIST_YAUTJA_LEADER" = WHITELIST_YAUTJA_LEADER, + "WHITELIST_COMMANDER" = WHITELIST_COMMANDER, + "WHITELIST_COMMANDER_COUNCIL" = WHITELIST_COMMANDER_COUNCIL, + "WHITELIST_COMMANDER_COUNCIL_LEGACY" = WHITELIST_COMMANDER_COUNCIL_LEGACY, + "WHITELIST_COMMANDER_COLONEL" = WHITELIST_COMMANDER_COLONEL, + "WHITELIST_COMMANDER_LEADER" = WHITELIST_COMMANDER_LEADER, + "WHITELIST_JOE" = WHITELIST_JOE, + "WHITELIST_SYNTHETIC" = WHITELIST_SYNTHETIC, + "WHITELIST_SYNTHETIC_COUNCIL" = WHITELIST_SYNTHETIC_COUNCIL, + "WHITELIST_SYNTHETIC_COUNCIL_LEGACY" = WHITELIST_SYNTHETIC_COUNCIL_LEGACY, + "WHITELIST_SYNTHETIC_LEADER" = WHITELIST_SYNTHETIC_LEADER, + "WHITELIST_MENTOR" = WHITELIST_MENTOR, +)) //================================================= @@ -222,6 +253,7 @@ var/global/list/whitelist_hierarchy = list(WHITELIST_NORMAL, WHITELIST_COUNCIL, #define FACTION_CLF "CLF" #define FACTION_PMC "PMC" #define FACTION_CONTRACTOR "VAI" +#define FACTION_MARSHAL "Colonial Marshal" #define FACTION_WY_DEATHSQUAD "WY Death Squad" #define FACTION_MERCENARY "Mercenary" #define FACTION_FREELANCER "Freelancer" @@ -237,9 +269,17 @@ var/global/list/whitelist_hierarchy = list(WHITELIST_NORMAL, WHITELIST_COUNCIL, #define FACTION_MONKEY "Monkey" // Nanu #define FACTION_LIST_MARINE list(FACTION_MARINE) -#define FACTION_LIST_HUMANOID list(FACTION_MARINE, FACTION_PMC, FACTION_WY, FACTION_WY_DEATHSQUAD, FACTION_CLF, FACTION_CONTRACTOR, FACTION_UPP, FACTION_FREELANCER, FACTION_SURVIVOR, FACTION_NEUTRAL, FACTION_COLONIST, FACTION_MERCENARY, FACTION_DUTCH, FACTION_HEFA, FACTION_GLADIATOR, FACTION_PIRATE, FACTION_PIZZA, FACTION_SOUTO, FACTION_YAUTJA, FACTION_ZOMBIE) -#define FACTION_LIST_ERT list(FACTION_PMC, FACTION_WY_DEATHSQUAD, FACTION_CLF, FACTION_CONTRACTOR, FACTION_UPP, FACTION_FREELANCER, FACTION_MERCENARY, FACTION_DUTCH, FACTION_HEFA, FACTION_GLADIATOR, FACTION_PIRATE, FACTION_PIZZA, FACTION_SOUTO) +#define FACTION_LIST_HUMANOID list(FACTION_MARINE, FACTION_PMC, FACTION_WY, FACTION_WY_DEATHSQUAD, FACTION_CLF, FACTION_CONTRACTOR, FACTION_MARSHAL, FACTION_UPP, FACTION_FREELANCER, FACTION_SURVIVOR, FACTION_NEUTRAL, FACTION_COLONIST, FACTION_MERCENARY, FACTION_DUTCH, FACTION_HEFA, FACTION_GLADIATOR, FACTION_PIRATE, FACTION_PIZZA, FACTION_SOUTO, FACTION_YAUTJA, FACTION_ZOMBIE, FACTION_TWE) +#define FACTION_LIST_ERT list(FACTION_HEFA, FACTION_GLADIATOR, FACTION_PIRATE, FACTION_PIZZA, FACTION_SOUTO) #define FACTION_LIST_WY list(FACTION_PMC, FACTION_WY_DEATHSQUAD, FACTION_WY) +#define FACTION_LIST_UPP list(FACTION_UPP) +#define FACTION_LIST_CLF list(FACTION_CLF) +#define FACTION_LIST_TWE list(FACTION_TWE) +#define FACTION_LIST_FREELANCER list(FACTION_FREELANCER) +#define FACTION_LIST_CONTRACTOR list(FACTION_CONTRACTOR) +#define FACTION_LIST_MERCENARY list(FACTION_MERCENARY) +#define FACTION_LIST_MARSHAL list(FACTION_MARSHAL) +#define FACTION_LIST_DUTCH list(FACTION_DUTCH) #define FACTION_LIST_MARINE_WY list(FACTION_MARINE, FACTION_PMC, FACTION_WY_DEATHSQUAD, FACTION_WY) #define FACTION_LIST_MARINE_UPP list(FACTION_MARINE, FACTION_UPP) #define FACTION_LIST_MARINE_TWE list(FACTION_MARINE, FACTION_TWE) @@ -262,6 +302,6 @@ var/global/list/whitelist_hierarchy = list(WHITELIST_NORMAL, WHITELIST_COUNCIL, // global vars to prevent spam of the "one xyz alive" messages -var/global/last_ares_callout +GLOBAL_VAR(last_ares_callout) -var/global/last_qm_callout +GLOBAL_VAR(last_qm_callout) diff --git a/code/__DEFINES/objects.dm b/code/__DEFINES/objects.dm index 5617a2b47ec6..292b315360c5 100644 --- a/code/__DEFINES/objects.dm +++ b/code/__DEFINES/objects.dm @@ -54,6 +54,8 @@ #define SHOCK 8 #define SAFE 16 +#define CLOSED 2 + //metal, glass, rod stacks #define MAX_STACK_AMOUNT_METAL 50 #define MAX_STACK_AMOUNT_GLASS 50 @@ -77,14 +79,14 @@ #define GETPULSE_HAND 0 //less accurate (hand) #define GETPULSE_TOOL 1 //more accurate (med scanner, sleeper, etc) -var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accessed by preexisting terminals. AIs and new terminals can't use them. +GLOBAL_LIST_INIT(RESTRICTED_CAMERA_NETWORKS, list( //Those networks can only be accessed by preexisting terminals. AIs and new terminals can't use them.) "thunder", "ERT", "NUKE", CAMERA_NET_LADDER, CAMERA_NET_COLONY, CAMERA_NET_OVERWATCH, - ) + )) #define STASIS_IN_BAG 1 #define STASIS_IN_CRYO_CELL 2 @@ -136,11 +138,16 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse #define CLEANABLE_MISC "misc" //Anything else //For nuke announcements -#define NUKE_SHOW_TIMER_TEN_SEC 1 -#define NUKE_SHOW_TIMER_MINUTE 2 -#define NUKE_SHOW_TIMER_HALF 4 +#define NUKE_SHOW_TIMER_TEN_SEC (1<<0) +#define NUKE_SHOW_TIMER_MINUTE (1<<1) +#define NUKE_SHOW_TIMER_HALF (1<<2) #define NUKE_SHOW_TIMER_ALL (NUKE_SHOW_TIMER_TEN_SEC|NUKE_SHOW_TIMER_MINUTE|NUKE_SHOW_TIMER_HALF) +#define NUKE_DECRYPT_SHOW_TIMER_COMPLETE (1<<3) +#define NUKE_DECRYPT_SHOW_TIMER_MINUTE (1<<4) +#define NUKE_DECRYPT_SHOW_TIMER_HALF (1<<5) +#define NUKE_DECRYPT_SHOW_TIMER_ALL (NUKE_SHOW_TIMER_TEN_SEC|NUKE_SHOW_TIMER_HALF|NUKE_DECRYPT_SHOW_TIMER_COMPLETE|NUKE_DECRYPT_SHOW_TIMER_MINUTE|NUKE_DECRYPT_SHOW_TIMER_HALF) + //For recipes #define ONE_TYPE_PER_TURF 1 #define ONE_TYPE_PER_BORDER 2 @@ -163,3 +170,8 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse // For reinforced table status #define RTABLE_WEAKENED 1 #define RTABLE_NORMAL 2 + +//Lights define +#define CHECKS_PASSED 1 +#define STILL_ON_COOLDOWN 2 +#define NO_LIGHT_STATE_CHANGE 3 diff --git a/code/__DEFINES/paygrade_defs/civilian.dm b/code/__DEFINES/paygrade_defs/civilian.dm new file mode 100644 index 000000000000..ed25a3f50af5 --- /dev/null +++ b/code/__DEFINES/paygrade_defs/civilian.dm @@ -0,0 +1,38 @@ +// Paygrade shorthand defines, to allow clearer designation. + +// Civilians +/// CIV, Civilian +#define PAY_SHORT_CIV "CIV" + +/// CNUR, Nurse +#define PAY_SHORT_CNUR "CNUR" + +/// CDOC, Doctor +#define PAY_SHORT_CDOC "CDOC" + +/// CCMO, Professor +#define PAY_SHORT_CCMO "CCMO" + +/// CREP, Representative +#define PAY_SHORT_CREP "CREP" + +/// SYN, Synthetic +#define PAY_SHORT_SYN "SYN" + +/// OPR, Operator +#define PAY_SHORT_OPR "OPR" + +/// CDNM, Operative (intended for codenamed people IE Operative Theta) +#define PAY_SHORT_CDNM "CDNM" + +/// CPO, Officer +#define PAY_SHORT_CPO "CPO" + +/// CSPO, Senior Officer +#define PAY_SHORT_CSPO "CSPO" + +/// REB, Rebel +#define PAY_SHORT_REB "REB" + +/// REBC, Rebel Commander "REBC" +#define PAY_SHORT_REBC "REBC" diff --git a/code/__DEFINES/paygrade_defs/cmb.dm b/code/__DEFINES/paygrade_defs/cmb.dm new file mode 100644 index 000000000000..8ebd7902dbf8 --- /dev/null +++ b/code/__DEFINES/paygrade_defs/cmb.dm @@ -0,0 +1,20 @@ +// Paygrade shorthand defines, to allow clearer designation. + +// Colonial Marshal Bureau +/// IHRO, Interstellar Human Rights Observer +#define PAY_SHORT_IHRO "IHRO" + +/// ICCL, Interstellar Commerce Commission Corporate Liaison +#define PAY_SHORT_ICCL "ICCL" + +/// ICCA, Interstellar Commerce Commission Agent +#define PAY_SHORT_ICCA "ICCA" + +/// CMBM, CMB Marshal +#define PAY_SHORT_CMBM "CMBM" + +/// CMBD, CMB Deputy +#define PAY_SHORT_CMBD "CMBD" + +/// CMBS, CMB Synthetic +#define PAY_SHORT_CMBS "CMBS" diff --git a/code/__DEFINES/paygrade_defs/dutch.dm b/code/__DEFINES/paygrade_defs/dutch.dm new file mode 100644 index 000000000000..299096060f3f --- /dev/null +++ b/code/__DEFINES/paygrade_defs/dutch.dm @@ -0,0 +1,17 @@ +// Paygrade shorthand defines, to allow clearer designation. + +// Dutches Dozen +/// DTC, Dutch's Dozen Standard Mercenary +#define PAY_SHORT_DTC "DTC" + +/// DTCM, Dutch's Dozen Medic +#define PAY_SHORT_DTCM "DTCM" + +/// DTCF, Dutch's Dozen Flamethrower Specialist +#define PAY_SHORT_DTCF "DTCF" + +/// DTCMG, Dutch's Dozen Machinegunner +#define PAY_SHORT_DTCMG "DTCMG" + +/// DTCA, Arnold +#define PAY_SHORT_DTCA "DTCA" diff --git a/code/__DEFINES/paygrade_defs/marines.dm b/code/__DEFINES/paygrade_defs/marines.dm new file mode 100644 index 000000000000..74b659630820 --- /dev/null +++ b/code/__DEFINES/paygrade_defs/marines.dm @@ -0,0 +1,80 @@ +// Paygrade shorthand defines, to allow clearer designation. + +// USCM MARINES +/// ME1, Private +#define PAY_SHORT_ME1 "ME1" + +/// ME2, Private First Class +#define PAY_SHORT_ME2 "ME2" + +/// ME3, Lance Corporal +#define PAY_SHORT_ME3 "ME3" + +/// ME4, Corporal +#define PAY_SHORT_ME4 "ME4" + +/// ME5, Sergeant +#define PAY_SHORT_ME5 "ME5" + +/// ME6, Staff Sergeant +#define PAY_SHORT_ME6 "ME6" + +/// ME7, Gunnery Sergeant +#define PAY_SHORT_ME7 "ME7" + +/// ME8, Master Sergeant +#define PAY_SHORT_ME8 "ME8" + +/// ME8E, First Sergeant +#define PAY_SHORT_ME8E "ME8E" + +/// ME9, Master Gunnery Sergeant +#define PAY_SHORT_ME9 "ME9" + +/// ME9E, Sergeant Major +#define PAY_SHORT_ME9E "ME9E" + +/// ME9C, Sergeant Major of the Colonial Marine Corps +#define PAY_SHORT_ME9C "ME9C" + +/// MO1, Second Lieutenant +#define PAY_SHORT_MO1 "MO1" + +/// MO2, First Lieutenant +#define PAY_SHORT_MO2 "MO2" +/// MO3, Captain + +#define PAY_SHORT_MO3 "MO3" +/// MO4, Major + +#define PAY_SHORT_MO4 "MO4" +/// MO5, Lieutenant Colonel + +#define PAY_SHORT_MO5 "MO5" +/// MO6, Colonel + +#define PAY_SHORT_MO6 "MO6" +/// MO6E, Senior Colonel + +#define PAY_SHORT_MO6E "MO6E" +/// MO6C, Division Colonel + +#define PAY_SHORT_MO6C "MO6C" +/// MO7, Brigadier General + +#define PAY_SHORT_MO7 "MO7" +/// MO8, Major General + +#define PAY_SHORT_MO8 "MO8" +/// MO9, Lieutenant General + +#define PAY_SHORT_MO9 "MO9" +/// MO10, General + +#define PAY_SHORT_MO10 "MO10" + +/// MO10C, Assistant Commandant of the Marine Corps +#define PAY_SHORT_MO10C "MO10C" + +/// MO10S, Commandant of the Marine Corps +#define PAY_SHORT_MO10S "MO10S" diff --git a/code/__DEFINES/paygrade_defs/mercs.dm b/code/__DEFINES/paygrade_defs/mercs.dm new file mode 100644 index 000000000000..4cad90496e24 --- /dev/null +++ b/code/__DEFINES/paygrade_defs/mercs.dm @@ -0,0 +1,45 @@ +// Paygrade shorthand defines, to allow clearer designation. + +// MERCENARIES +/// FL-S, Standard +#define PAY_SHORT_FL_S "FL-S" + +/// FL-M, Medic +#define PAY_SHORT_FL_M "FL-M" + +/// FL-WL, Warlord +#define PAY_SHORT_FL_WL "FL-WL" + +/// EFL-S, Elite Standard +#define PAY_SHORT_EFL_S "EFL-S" + +/// EFL-M, Elite Medic +#define PAY_SHORT_EFL_M "EFL-M" + +/// EFL-E, Elite Engineer +#define PAY_SHORT_EFL_E "EFL-E" + +/// EFL-H, Elite Heavy +#define PAY_SHORT_EFL_H "EFL-H" + +/// EFL-WL, Elite Warlord +#define PAY_SHORT_EFL_TL "EFL-TL" + +// VANGUARD'S ARROW INC +/// VAI-S, Standard +#define PAY_SHORT_VAI_S "VAI-S" + +/// VAI-M, Medic +#define PAY_SHORT_VAI_M "VAI-M" + +/// VAI-E, Engineer +#define PAY_SHORT_VAI_E "VAI-E" + +/// VAI-G, Machinegunner +#define PAY_SHORT_VAI_G "VAI-G" + +/// VAI-SN, Synthetic +#define PAY_SHORT_VAI_SN "VAI-SN" + +/// VAI-L, Team Leader +#define PAY_SHORT_VAI_L "VAI-L" diff --git a/code/__DEFINES/paygrade_defs/navy.dm b/code/__DEFINES/paygrade_defs/navy.dm new file mode 100644 index 000000000000..d51cccb8fe97 --- /dev/null +++ b/code/__DEFINES/paygrade_defs/navy.dm @@ -0,0 +1,74 @@ +// Paygrade shorthand defines, to allow clearer designation. + +// USCM NAVY +/// NE1, Seaman Recruit +#define PAY_SHORT_NE1 "NE1" + +/// NE2M, Seaman Apprentice +#define PAY_SHORT_NE2 "NE2" + +/// NE3, Seaman +#define PAY_SHORT_NE3 "NE3" + +/// NE4, Petty Officer 3rd Class +#define PAY_SHORT_NE4 "NE4" + +/// NE5, Petty Officer 2nd Class +#define PAY_SHORT_NE5 "NE5" + +/// NE6, Petty Officer 1st Class +#define PAY_SHORT_NE6 "N36" + +/// NE7, Chief Petty Officer +#define PAY_SHORT_NE7 "NE7" + +/// NE8, Senior Chief Petty Officer +#define PAY_SHORT_NE8 "NE8" + +/// NE8C, Command Senior Chief Petty Officer +#define PAY_SHORT_NE8C "NE8C" + +/// NE9, Master Chief Petty Officer +#define PAY_SHORT_NE9 "NE9" + +/// NE9C, Command Master Chief Petty Officer +#define PAY_SHORT_NE9C "NE9C" + +/// NO1, Ensign +#define PAY_SHORT_NO1 "NO1" + +/// NO2, Lieutenant Junior Grade +#define PAY_SHORT_NO2 "NO2" + +/// NO3, Lieutenant +#define PAY_SHORT_NO3 "NO3" + +/// NO4, Lieutenant Commander +#define PAY_SHORT_NO4 "NO4" + +/// NO5, Commander +#define PAY_SHORT_NO5 "NO5" + +/// NO6, Captain +#define PAY_SHORT_NO6 "NO6" + +/// NO6E, Commodore +#define PAY_SHORT_NO6E "NO6E" + +/// NO6C, Senior Commodore +#define PAY_SHORT_NO6C "NO6C" + +/// NO7, Rear Admiral (Lower Half) +#define PAY_SHORT_NO7 "NO7" + +/// NO8, Rear Admiral (Upper Half) +#define PAY_SHORT_NO8 "NO8" + +/// NO9, Vice Admiral +#define PAY_SHORT_NO9 "NO9" + +/// NO10, Admiral +#define PAY_SHORT_NO10 "NO10" + +/// NO10C, Chief of Naval Operations +#define PAY_SHORT_NO10C "NO10C" diff --git a/code/__DEFINES/paygrade_defs/paygrade.dm b/code/__DEFINES/paygrade_defs/paygrade.dm new file mode 100644 index 000000000000..5bf9a58d7447 --- /dev/null +++ b/code/__DEFINES/paygrade_defs/paygrade.dm @@ -0,0 +1,6 @@ +/// Paygrade is equivalent to or is an enlisted position. +#define GRADE_ENLISTED 0 +/// Paygrade is equivalent to or is an officer. +#define GRADE_OFFICER 1 +/// Paygrade is for high command or senior leadership. Military flag officers. +#define GRADE_FLAG 2 diff --git a/code/__DEFINES/paygrade_defs/provost.dm b/code/__DEFINES/paygrade_defs/provost.dm new file mode 100644 index 000000000000..5b2121642d52 --- /dev/null +++ b/code/__DEFINES/paygrade_defs/provost.dm @@ -0,0 +1,14 @@ +// Paygrade shorthand defines, to allow clearer designation. + +// PROVOST OFFICE +/// PvI, Provost Inspector +#define PAY_SHORT_PVI "PvI" + +/// PvM, Provost Marshal +#define PAY_SHORT_PVM "PvM" + +/// PvSM, Provost Sector Marshal +#define PAY_SHORT_PVSM "PvSM" + +/// PvCM, Provost Chief Marshal +#define PAY_SHORT_PVCM "PvCM" diff --git a/code/__DEFINES/paygrade_defs/twe.dm b/code/__DEFINES/paygrade_defs/twe.dm new file mode 100644 index 000000000000..da1c6a5fa4fb --- /dev/null +++ b/code/__DEFINES/paygrade_defs/twe.dm @@ -0,0 +1,38 @@ +// Paygrade shorthand defines, to allow clearer designation. + +// THREE WORLD EMPIRE +/// RMC1, Heitai-Marine +#define PAY_SHORT_RMC1 "RMC1" + +/// RMC2, Santo-Lance Corporal +#define PAY_SHORT_RMC2 "RMC2" + +/// RMC3, Nito-Corporal +#define PAY_SHORT_RMC3 "RMC3" + +/// RMC4, Itto-Sergeant +#define PAY_SHORT_RMC4 "RMC4" + +/// RNOW, Warrant Officer +#define PAY_SHORT_RNOW "RNOW" + +/// RNO1, Second Lieutenant +#define PAY_SHORT_RNO1 "RNO1" + +/// RNO2, First Lieutenant +#define PAY_SHORT_RNO2 "RNO2" + +/// RNO3, Standing Officer +#define PAY_SHORT_RNO3 "RNO3" + +/// RNO4, Captain +#define PAY_SHORT_RNO4 "RNO4" + +/// RNO5, Admiral +#define PAY_SHORT_RNO5 "RNO5" + +/// RNO6, Grand Admiral +#define PAY_SHORT_RNO6 "RNO6" + +/// EMP, Emperor +#define PAY_SHORT_EMP "EMP" diff --git a/code/__DEFINES/paygrade_defs/upp.dm b/code/__DEFINES/paygrade_defs/upp.dm new file mode 100644 index 000000000000..40c0d8441b2e --- /dev/null +++ b/code/__DEFINES/paygrade_defs/upp.dm @@ -0,0 +1,59 @@ +// Paygrade shorthand defines, to allow clearer designation. + +// Union of Progressive Peoples +/// UE, +#define PAY_SHORT_UEC "UEC" + +/// UE1, Private +#define PAY_SHORT_UE1 "UE1" + +/// UE2, Private First Class +#define PAY_SHORT_UE2 "UE2" + +/// UE3, Korporal +#define PAY_SHORT_UE3 "UE3" + +/// UE4, unior Serzhant +#define PAY_SHORT_UE4 "UE4" + +/// UE5, Serzhant +#define PAY_SHORT_UE5 "UE5" + +/// UE6, Master Serzhant +#define PAY_SHORT_UE6 "UE6" + +/// UC1, Junior Kommando +#define PAY_SHORT_UC1 "UC1" + +/// UC2, 2nd Kommando +#define PAY_SHORT_UC2 "UC2" + +/// UC3, 1st Kommando +#define PAY_SHORT_UC3 "UC3" + +/// UO1, Leytenant +#define PAY_SHORT_UO1 "UO1" + +/// UO2, Senior Leytenant +#define PAY_SHORT_UO2 "UO2" + +/// UO3, Kapitan +#define PAY_SHORT_UO3 "UO3" + +/// UO4, Mayjor +#define PAY_SHORT_UO4 "UO4" + +/// UO5, Leytenant Kolonel +#define PAY_SHORT_UO5 "UO5" + +/// UO6, Kolonel +#define PAY_SHORT_UO6 "UO6" + +/// UO7, Mayjor General +#define PAY_SHORT_UO7 "UO7" + +/// UO8, Leytenant General +#define PAY_SHORT_UO8 "UO8" + +/// UO9, Army General +#define PAY_SHORT_UO9 "UO9" diff --git a/code/__DEFINES/paygrade_defs/weyland.dm b/code/__DEFINES/paygrade_defs/weyland.dm new file mode 100644 index 000000000000..dd65caa6db00 --- /dev/null +++ b/code/__DEFINES/paygrade_defs/weyland.dm @@ -0,0 +1,78 @@ +// Paygrade shorthand defines, to allow clearer designation. + +// Weyland Yutani Corporate +/// WYC1, Trainee +#define PAY_SHORT_WYC1 "WYC1" + +/// WYC2, Junior Executive +#define PAY_SHORT_WYC2 "WYC2" + +/// WYC3, Executive +#define PAY_SHORT_WYC3 "WYC3" + +/// WYC4, Senior Executive +#define PAY_SHORT_WYC4 "WYC4" + +/// WYC5, Executive Specialist +#define PAY_SHORT_WYC5 "WYC5" + +/// WYC6, Executive Supervisor +#define PAY_SHORT_WYC6 "WYC6" + +/// WYC7, Assistant Manager +#define PAY_SHORT_WYC7 "WYC7" + +/// WYC8, Division Manager +#define PAY_SHORT_WYC8 "WYC8" + +/// WYC9, Chief Executive +#define PAY_SHORT_WYC9 "WYC9" + +/// WYC10, Director +#define PAY_SHORT_WYC10 "WYC10" + +// Weyland Yutani Private Military +/// PMC-OP, Operator, standard PMC. +#define PAY_SHORT_PMC_OP "PMC-OP" + +/// PMC-EN, Enforcer +#define PAY_SHORT_PMC_EN "PMC-EN" + +/// PMC-SS, Support Specialist +#define PAY_SHORT_PMC_SS "PMC-SS" + +/// PMC-MS, Medical Specialist +#define PAY_SHORT_PMC_MS "PMC-MS" + +/// PMC-WS, Weapons Specialist +#define PAY_SHORT_PMC_WS "PMC-WS" + +/// PMC-VS, Vehicle Specialist +#define PAY_SHORT_PMC_VS "PMC-VS" + +/// PMC-XS, Xeno Specialist (Handler) +#define PAY_SHORT_PMC_XS "PMC-XS" + +/// PMC-TL, Team Leader +#define PAY_SHORT_PMC_TL "PMC-TL" + +/// PMC-DOC, Trauma Surgeon +#define PAY_SHORT_PMC_DOC "PMC-DOC" + +/// PMC-ENG, Technician +#define PAY_SHORT_PMC_TEC "PMC-TEC" + +/// PMC-ELR, Elite Responder +#define PAY_SHORT_PMC_ELR "PMC-ELR" + +/// PMC-ELM, Elite Medic +#define PAY_SHORT_PMC_ELM "PMC-ELM" + +/// PMC-ELG, Elite Gunner +#define PAY_SHORT_PMC_ELG "PMC-ELG" + +/// PMC-ETL, Elite Team Leader +#define PAY_SHORT_PMC_ETL "PMC-ETL" + +/// PMC-DIR, PMC Director +#define PAY_SHORT_PMC_DIR "PMC-DIR" diff --git a/code/__DEFINES/pred.dm b/code/__DEFINES/pred.dm index 5826a2ca56f6..a8bc1007d51e 100644 --- a/code/__DEFINES/pred.dm +++ b/code/__DEFINES/pred.dm @@ -1,5 +1,6 @@ #define PRED_MATERIALS list("ebony", "silver", "bronze", "crimson", "bone") #define PRED_TRANSLATORS list("Modern", "Retro", "Combo") +#define PRED_LEGACIES list("None", "Dragon", "Swamp", "Enforcer", "Collector") #define PRED_SKIN_COLOR list("tan", "green", "purple", "blue", "red", "black") #define PRED_YAUTJA_CAPE "yautja cape" diff --git a/code/__DEFINES/radio.dm b/code/__DEFINES/radio.dm index 44f47d7adfdb..cc1831501bad 100644 --- a/code/__DEFINES/radio.dm +++ b/code/__DEFINES/radio.dm @@ -26,6 +26,7 @@ #define RADIO_CHANNEL_HEADSET "headset" #define RADIO_CHANNEL_ENGI "Engi" #define RADIO_CHANNEL_HIGHCOM "HighCom" +#define RADIO_CHANNEL_PROVOST "Provost" #define RADIO_CHANNEL_INTERCOM "intercom" #define RADIO_CHANNEL_INTEL "Intel" #define RADIO_CHANNEL_JTAC "JTAC" @@ -60,9 +61,15 @@ #define RADIO_CHANNEL_PMC_CCT "PMC CCT" #define RADIO_CHANNEL_WY_WO "SpecOps" +//Listening Devices +#define RADIO_CHANNEL_BUG_A "Listening Device A" +#define RADIO_CHANNEL_BUG_B "Listening Device B" + //1-Channel ERTs #define RADIO_CHANNEL_DUTCH_DOZEN "DD" #define RADIO_CHANNEL_VAI "VAI" #define RADIO_CHANNEL_CMB "CMB" +#define RADIO_CHANNEL_ROYAL_MARINE "Royal Marine" #define RADIO_CHANNEL_YAUTJA "Yautja" + diff --git a/code/__DEFINES/regex.dm b/code/__DEFINES/regex.dm index f56871ec83f2..a0d9c9a7323b 100644 --- a/code/__DEFINES/regex.dm +++ b/code/__DEFINES/regex.dm @@ -6,38 +6,38 @@ // The lazy URL finder. Lazy in that it matches the bare minimum // Replicates BYOND's own URL parser in functionality. -var/global/regex/url_find_lazy +GLOBAL_DATUM(url_find_lazy, /regex) // REGEX datums used for process_chat_markup. -var/global/regex/markup_bold -var/global/regex/markup_italics -var/global/regex/markup_strike -var/global/regex/markup_underline +GLOBAL_DATUM(markup_bold, /regex) +GLOBAL_DATUM(markup_italics, /regex) +GLOBAL_DATUM(markup_strike, /regex) +GLOBAL_DATUM(markup_underline, /regex) // Global list for mark-up REGEX datums. // Initialized in the hook, to avoid passing by null value. -var/global/list/markup_regex = list() +GLOBAL_LIST_EMPTY(markup_regex) // Global list for mark-up REGEX tag collection. -var/global/list/markup_tags = list("/" = list("", ""), +GLOBAL_LIST_INIT(markup_tags, list("/" = list("", ""), "*" = list("", ""), "~" = list("", ""), - "_" = list("", "")) + "_" = list("", ""))) /proc/initialize_global_regex() - url_find_lazy = new(@"((https?|byond):\/\/[^\s]*)", "g") + GLOB.url_find_lazy = new(@"((https?|byond):\/\/[^\s]*)", "g") - markup_bold = new("((\\W|^)\\*)(\[^\\*\]*)(\\*(\\W|$))", "g") - markup_italics = new("((\\W|^)\\/)(\[^\\/\]*)(\\/(\\W|$))", "g") - markup_strike = new("((\\W|^)\\~)(\[^\\~\]*)(\\~(\\W|$))", "g") - markup_underline = new("((\\W|^)\\_)(\[^\\_\]*)(\\_(\\W|$))", "g") + GLOB.markup_bold = new("((\\W|^)\\*)(\[^\\*\]*)(\\*(\\W|$))", "g") + GLOB.markup_italics = new("((\\W|^)\\/)(\[^\\/\]*)(\\/(\\W|$))", "g") + GLOB.markup_strike = new("((\\W|^)\\~)(\[^\\~\]*)(\\~(\\W|$))", "g") + GLOB.markup_underline = new("((\\W|^)\\_)(\[^\\_\]*)(\\_(\\W|$))", "g") // List needs to be initialized here, due to DM mixing and matching pass-by-value and -reference as it chooses. - markup_regex = list( - "/" = markup_italics, - "*" = markup_bold, - "~" = markup_strike, - "_" = markup_underline, + GLOB.markup_regex = list( + "/" = GLOB.markup_italics, + "*" = GLOB.markup_bold, + "~" = GLOB.markup_strike, + "_" = GLOB.markup_underline, ) return 1 diff --git a/code/__DEFINES/shuttles.dm b/code/__DEFINES/shuttles.dm index 126a8f82ece8..a3299184e4ef 100644 --- a/code/__DEFINES/shuttles.dm +++ b/code/__DEFINES/shuttles.dm @@ -95,14 +95,17 @@ #define MOBILE_SHUTTLE_ID_ERT1 "ert_response_shuttle" #define MOBILE_SHUTTLE_ID_ERT2 "ert_pmc_shuttle" #define MOBILE_SHUTTLE_ID_ERT3 "ert_upp_shuttle" +#define MOBILE_SHUTTLE_ID_ERT4 "ert_twe_shuttle" #define MOBILE_SHUTTLE_ID_ERT_SMALL "ert_rescue_shuttle" #define MOBILE_SHUTTLE_ID_ERT_BIG "ert_boarding_shuttle" #define MOBILE_TRIJENT_ELEVATOR "trijentshuttle2" -#define STAT_TRIJENT_LZ1 "trigent_lz1" -#define STAT_TRIJENT_LZ2 "trigent_lz2" -#define STAT_TRIJENT_ENGI "trigent_engineering" -#define STAT_TRIJENT_OMEGA "trigent_omega" +#define STAT_TRIJENT_EMPTY "trijent_empty" +#define STAT_TRIJENT_OCCUPIED "trijent_occupied" +#define STAT_TRIJENT_LZ1 "trijent_lz1" +#define STAT_TRIJENT_LZ2 "trijent_lz2" +#define STAT_TRIJENT_ENGI "trijent_engineering" +#define STAT_TRIJENT_OMEGA "trijent_omega" #define MOBILE_SHUTTLE_LIFEBOAT_PORT "lifeboat-port" #define MOBILE_SHUTTLE_LIFEBOAT_STARBOARD "lifeboat-starboard" @@ -114,6 +117,7 @@ #define ALMAYER_DROPSHIP_LZ1 "almayer-hangar-lz1" #define ALMAYER_DROPSHIP_LZ2 "almayer-hangar-lz2" +#define DROPSHIP_FLYBY_ID "special_flight" #define DROPSHIP_LZ1 "dropship-lz1" #define DROPSHIP_LZ2 "dropship-lz2" diff --git a/code/__DEFINES/skills.dm b/code/__DEFINES/skills.dm index fc9ac3327c20..d33e26c1c3f6 100644 --- a/code/__DEFINES/skills.dm +++ b/code/__DEFINES/skills.dm @@ -8,6 +8,7 @@ #define SKILL_ENGINEER "engineer" #define SKILL_CONSTRUCTION "construction" #define SKILL_LEADERSHIP "leadership" +#define SKILL_OVERWATCH "overwatch" #define SKILL_MEDICAL "medical" #define SKILL_SURGERY "surgery" #define SKILL_RESEARCH "research" @@ -39,14 +40,26 @@ //spec_weapons skill //hidden. who can and can't use specialist weapons #define SKILL_SPEC_DEFAULT 0 -#define SKILL_SPEC_ROCKET 1 //can use the demolitionist specialist gear -#define SKILL_SPEC_SCOUT 2 -#define SKILL_SPEC_SNIPER 3 -#define SKILL_SPEC_GRENADIER 4 -#define SKILL_SPEC_PYRO 5 -#define SKILL_SPEC_SMARTGUN 6 //for smartgunners -#define SKILL_SPEC_UPP 7 //for upp -#define SKILL_SPEC_ALL 8 //can use all specialist gear +/// Is trained to use specialist gear, but hasn't picked a kit. +#define SKILL_SPEC_TRAINED 1 +/// Is trained to use specialist gear & HAS picked a kit. (Functionally same as SPEC_ROCKET) +#define SKILL_SPEC_KITTED 2 +/// Can use RPG +#define SKILL_SPEC_ROCKET 2 +/// Can use thermal cloaks and custom M4RA rifle +#define SKILL_SPEC_SCOUT 3 +/// Can use sniper rifles and camo suits +#define SKILL_SPEC_SNIPER 4 +/// Can use the rotary grenade launcher and heavy armor +#define SKILL_SPEC_GRENADIER 5 +/// Can use heavy flamers +#define SKILL_SPEC_PYRO 6 +/// Can use smartguns +#define SKILL_SPEC_SMARTGUN 7 +/// UPP special training +#define SKILL_SPEC_UPP 8 +/// Can use ALL specialist weapons +#define SKILL_SPEC_ALL 9 //construction skill #define SKILL_CONSTRUCTION_DEFAULT 0 @@ -124,7 +137,6 @@ #define SKILL_POWERLOADER_MASTER 2 //Pilot, CT, Req, OT, CE #define SKILL_POWERLOADER_MAX 2 - //leadership skill #define SKILL_LEAD_NOVICE 0 //Anyone but the above. Using SL items is possible but painfully slow #define SKILL_LEAD_TRAINED 1 //SL @@ -132,6 +144,11 @@ #define SKILL_LEAD_MASTER 3 //XO, CO #define SKILL_LEAD_MAX 3 +//overwatch skill +#define SKILL_OVERWATCH_DEFAULT 0 +#define SKILL_OVERWATCH_TRAINED 1 //Allows use of overwatch consoles +#define SKILL_OVERWATCH_MAX 1 + //JTAC skill #define SKILL_JTAC_NOVICE 0 //Anyone but those following. @@ -152,8 +169,8 @@ //pilot skill, hidden #define SKILL_PILOT_DEFAULT 0 -#define SKILL_PILOT_TRAINED 1 // DCC, Synth -#define SKILL_PILOT_EXPERT 2 // Pilot +#define SKILL_PILOT_TRAINED 1 // DCC +#define SKILL_PILOT_EXPERT 2 // Pilot, Synth #define SKILL_PILOT_MAX 2 //Navigations skill - for seting orbital alt diff --git a/code/__DEFINES/sounds.dm b/code/__DEFINES/sounds.dm index 51279e0ca0cd..541d95d28189 100644 --- a/code/__DEFINES/sounds.dm +++ b/code/__DEFINES/sounds.dm @@ -21,12 +21,13 @@ #define ITEM_EQUIP_VOLUME 50 //Reserved channels +#define SOUND_CHANNEL_NOTIFY 1016 #define SOUND_CHANNEL_VOX 1017 #define SOUND_CHANNEL_MUSIC 1018 #define SOUND_CHANNEL_AMBIENCE 1019 #define SOUND_CHANNEL_WALKMAN 1020 #define SOUND_CHANNEL_SOUNDSCAPE 1021 -#define SOUND_CHANNEL_ADMIN_MIDI 1022 +//#define SOUND_CHANNEL_ADMIN_MIDI 1022 #define SOUND_CHANNEL_LOBBY 1023 #define SOUND_CHANNEL_Z 1024 @@ -71,6 +72,7 @@ #define AMBIENCE_ALMAYER 'sound/ambience/almayerambience.ogg' #define AMBIENCE_LV624 'sound/ambience/ambienceLV624.ogg' #define AMBIENCE_BIGRED 'sound/ambience/desert.ogg' +#define AMBIENCE_NV 'sound/ambience/ambienceNV.ogg' #define AMBIENCE_PRISON 'sound/ambience/shipambience.ogg' #define AMBIENCE_TRIJENT 'sound/ambience/desert.ogg' diff --git a/code/__DEFINES/speech_channels.dm b/code/__DEFINES/speech_channels.dm index 405506678407..5a9a74af8ad0 100644 --- a/code/__DEFINES/speech_channels.dm +++ b/code/__DEFINES/speech_channels.dm @@ -1,9 +1,9 @@ // Used to direct channels to speak into. #define SAY_CHANNEL "Say" #define COMMS_CHANNEL "Comms" +#define WHISPER_CHANNEL "Whisper" #define ME_CHANNEL "Me" #define OOC_CHANNEL "OOC" #define LOOC_CHANNEL "LOOC" -#define MOD_CHANNEL "MSAY" #define ADMIN_CHANNEL "ASAY" #define MENTOR_CHANNEL "Mentor" diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm new file mode 100644 index 000000000000..ecccbd40abeb --- /dev/null +++ b/code/__DEFINES/status_effects.dm @@ -0,0 +1,25 @@ +///if it allows multiple instances of the effect +#define STATUS_EFFECT_MULTIPLE 0 +///if it allows only one, preventing new instances +#define STATUS_EFFECT_UNIQUE 1 +///if it allows only one, but new instances replace +#define STATUS_EFFECT_REPLACE 2 +/// if it only allows one, and new instances just instead refresh the timer +#define STATUS_EFFECT_REFRESH 3 + +///Processing flags - used to define the speed at which the status will work +///This is fast - 0.2s between ticks (I believe!) +#define STATUS_EFFECT_FAST_PROCESS 0 +///This is slower and better for more intensive status effects - 1s between ticks +#define STATUS_EFFECT_NORMAL_PROCESS 1 + +//Incapacitated status effect flags +/// If the incapacitated status effect will ignore a mob in restraints (handcuffs) +#define IGNORE_RESTRAINTS (1<<0) +/// If the incapacitated status effect will ignore a mob in stasis (stasis beds) +#define IGNORE_STASIS (1<<1) +/// If the incapacitated status effect will ignore a mob being agressively grabbed +#define IGNORE_GRAB (1<<2) + +/// Time threshold after which we launch ending timer - this should be higher than the slowest processing rate +#define STATUS_EFFECT_TIME_THRESHOLD (2 SECONDS) diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 3c2527136ed6..96335a3c1acf 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -89,13 +89,13 @@ //! ### SS initialization hints /** * Negative values incidate a failure or warning of some kind, positive are good. - * 0 and 1 are unused so that TRUE and FALSE are guarenteed to be invalid values. + * 0 and 1 are unused so that TRUE and FALSE are guaranteed to be invalid values. */ /// Subsystem failed to initialize entirely. Print a warning, log, and disable firing. #define SS_INIT_FAILURE -2 -/// The default return value which must be overriden. Will succeed with a warning. +/// The default return value which must be overridden. Will succeed with a warning. #define SS_INIT_NONE -1 /// Subsystem initialized sucessfully. @@ -109,32 +109,24 @@ // Subsystems shutdown in the reverse of the order they initialize in // The numbers just define the ordering, they are meaningless otherwise. -#define SS_INIT_TICKER_SPAWN 999 +#define SS_INIT_PROFILER 86 #define SS_INIT_INPUT 85 -#define SS_INIT_FAIL_TO_TOPIC 84 #define SS_INIT_TOPIC 83 -#define SS_INIT_RUST 26 -#define SS_INIT_SUPPLY_SHUTTLE 25 +#define SS_INIT_LOBBYART 82 +#define SS_INIT_INFLUXDRIVER 28 #define SS_INIT_GARBAGE 24 #define SS_INIT_EVENTS 23.5 -#define SS_INIT_JOB 23 +#define SS_INIT_HIJACK 22.6 #define SS_INIT_REDIS 22.5 #define SS_INIT_REAGENTS 22.1 #define SS_INIT_MAPPING 22 #define SS_INIT_NIGHTMARE 21.5 #define SS_INIT_TIMETRACK 21.1 #define SS_INIT_HUMANS 21 -#define SS_INIT_MAP 20 -#define SS_INIT_COMPONENT 19.5 #define SS_INIT_POWER 19 -#define SS_INIT_OBJECT 18 -#define SS_INIT_PIPENET 17.5 -#define SS_INIT_XENOARCH 17 -#define SS_INIT_MORE_INIT 16 -#define SS_INIT_AIR 15 -#define SS_INIT_TELEPORTER 13 -#define SS_INIT_LIGHTING 12 -#define SS_INIT_DEFCON 9 +#define SS_INIT_INFLUXMCSTATS 12 +#define SS_INIT_INFLUXSTATS 11 +#define SS_INIT_LIGHTING 10 #define SS_INIT_LAW 6 #define SS_INIT_FZ_TRANSITIONS 5 #define SS_INIT_PROJECTILES 4.1 @@ -148,32 +140,27 @@ #define SS_INIT_RADIO 2 #define SS_INIT_TIMER 100 #define SS_INIT_UNSPECIFIED 0 -#define SS_INIT_EMERGENCY_SHUTTLE -19 #define SS_INIT_ASSETS -20 #define SS_INIT_TICKER -21 #define SS_INIT_VOTE -23 -#define SS_INIT_FINISH -24 -#define SS_INIT_ADMIN -26 #define SS_INIT_DATABASE -27 #define SS_INIT_ENTITYMANAGER -28 #define SS_INIT_PLAYTIME -29 #define SS_INIT_PREDSHIPS -30 #define SS_INIT_OBJECTIVES -31 -#define SS_INIT_LOBBYART -33 #define SS_INIT_MINIMAP -34 #define SS_INIT_STATPANELS -98 #define SS_INIT_CHAT -100 //Should be last to ensure chat remains smooth during init. -#define SS_INIT_EARLYRUNTIMES -500 // Post-init notifier // Subsystem fire priority, from lowest to highest priority // If the subsystem isn't listed here it's either DEFAULT or PROCESS (if it's a processing subsystem child) #define SS_PRIORITY_INPUT 1000 #define SS_PRIORITY_TIMER 700 +#define SS_PRIORITY_AUTOFIRE 450 #define SS_PRIORITY_SOUND 250 #define SS_PRIORITY_TICKER 200 #define SS_PRIORITY_NIGHTMARE 180 -#define SS_PRIORITY_MAPVIEW 170 #define SS_PRIORITY_QUADTREE 160 #define SS_PRIORITY_CHAT 155 #define SS_PRIORITY_STATPANEL 154 @@ -191,20 +178,19 @@ #define SS_PRIORITY_VOTE 110 #define SS_PRIORITY_FAST_OBJECTS 105 #define SS_PRIORITY_OBJECTS 104 -#define SS_PRIORITY_FACEHUGGERS 100 #define SS_PRIORITY_DECORATOR 99 +#define SS_PRIORITY_EFFECTS 97 +#define SS_PRIORITY_FASTEFFECTS 96 +#define SS_PRIORITY_HIJACK 97 #define SS_PRIORITY_POWER 95 -#define SS_PRIORITY_EFFECTS 92 +#define SS_PRIORITY_OLDEFFECTS 92 #define SS_PRIORITY_MACHINERY 90 #define SS_PRIORITY_FZ_TRANSITIONS 88 -#define SS_PRIORITY_PIPENET 85 #define SS_PRIORITY_ROUND_RECORDING 83 #define SS_PRIORITY_SHUTTLE 80 -#define SS_PRIORITY_TELEPORTER 75 #define SS_PRIORITY_EVENT 65 #define SS_PRIORITY_DISEASE 60 -#define SS_PRIORITY_FAST_MACHINERY 55 -#define SS_PRIORITY_MIDI 40 +#define SS_PRIORITY_DEFENSES 55 #define SS_PRIORITY_ENTITY 37 #define SS_PRIORITY_DEFCON 35 #define SS_PRIORITY_ACID_PILLAR 34 @@ -212,15 +198,17 @@ #define SS_PRIORITY_UNSPECIFIED 30 #define SS_PRIORITY_PROCESS 25 #define SS_PRIORITY_SOUNDSCAPE 24 +#define SS_PRIORITY_INFLUXDRIVER 23 #define SS_PRIORITY_PAGER_STATUS 22 #define SS_PRIORITY_LIGHTING 20 #define SS_PRIORITY_TRACKING 19 +#define SS_PRIORITY_DATABASE 15 #define SS_PRIORITY_MINIMAPS 11 #define SS_PRIORITY_PING 10 -#define SS_PRIORITY_DATABASE 15 +#define SS_PRIORITY_INFLUXMCSTATS 9 +#define SS_PRIORITY_INFLUXSTATS 8 #define SS_PRIORITY_PLAYTIME 5 #define SS_PRIORITY_PERFLOGGING 4 -#define SS_PRIORITY_CORPSESPAWNER 3 #define SS_PRIORITY_GARBAGE 2 #define SS_PRIORITY_INACTIVITY 1 #define SS_PRIORITY_ADMIN 0 diff --git a/code/__DEFINES/supply.dm b/code/__DEFINES/supply.dm new file mode 100644 index 000000000000..0369b271207c --- /dev/null +++ b/code/__DEFINES/supply.dm @@ -0,0 +1,17 @@ +//We use the cost to determine the spawn chance this equals out the crates that spawn later in the round. +#define ASRS_HIGHEST_WEIGHT 0 //warning this weight wont change. +#define ASRS_VERY_HIGH_WEIGHT 5 +#define ASRS_HIGH_WEIGHT 15 +#define ASRS_MEDIUM_WEIGHT 25 +#define ASRS_LOW_WEIGHT 35 +#define ASRS_VERY_LOW_WEIGHT 50 +#define ASRS_LOWEST_WEIGHT 100 + +// List of pools of supply packs, rolled individually by the ASRS system +/// Main pool of ASRS supplies, dispensing military supplies such as ammo +#define ASRS_POOL_MAIN "Main" +/// Secondary ASRS pool dispening food related items for MessTech +#define ASRS_POOL_FOOD "Food" + +/// Divider to the amount of xeno forces on the planet to ASRS provided crates. It is used as such sqrt(xenos/ASRS_XENO_CRATES_DIVIDER)) +#define ASRS_XENO_CRATES_DIVIDER 4 diff --git a/code/__DEFINES/surgery.dm b/code/__DEFINES/surgery.dm index 1bdf2318d250..d63c6da26ac6 100644 --- a/code/__DEFINES/surgery.dm +++ b/code/__DEFINES/surgery.dm @@ -38,6 +38,15 @@ unless the surgical tool is completely unsuited to what it's being used for.*/ ///A tool that's perfect for the surgery. #define SURGERY_TOOL_MULT_IDEAL 1 +///The (no) chance of failure for surgery because the correct tools/conditions are used or skill compensates +#define SURGERY_FAILURE_IMPOSSIBLE 0 +///The chance of failure for surgery because the the tool/ground is SURGERY_TOOL_MULT_BAD_SUBSTITUTE/SURGERY_SURFACE_MULT_UNSUITED and skill can't compensate enough +#define SURGERY_FAILURE_UNLIKELY 5 +///The chance of failure for surgery because the the tool/ground is SURGERY_TOOL_MULT_AWFUL/SURGERY_SURFACE_MULT_AWFUL and skill can't compensate enough +#define SURGERY_FAILURE_POSSIBLE 25 +///The chance of failure for surgery because the the tool and ground is some combination worse than awful and skill can't compensate enough +#define SURGERY_FAILURE_LIKELY 50 + //When initiating surgeries, these define their order when listed in initiation selector or 'you can't use this tool for anything, but could x, y, or z' messages. ///Appears first in lists. Ex. larva surgery, opening incision. Immediately life-threatening or initiation surgeries. #define SURGERY_PRIORITY_MAXIMUM 5 @@ -149,7 +158,7 @@ See also /datum/surgery_step/saw_off_limb/failure var/list/cannot_hack, listing #define SURGERY_TOOLS_SEVER_BONE list(\ /obj/item/tool/surgery/circular_saw = SURGERY_TOOL_MULT_IDEAL,\ /obj/item/weapon/twohanded/fireaxe = SURGERY_TOOL_MULT_SUBOPTIMAL,\ - /obj/item/weapon/claymore/mercsword/machete = SURGERY_TOOL_MULT_SUBOPTIMAL,\ + /obj/item/weapon/sword/machete = SURGERY_TOOL_MULT_SUBOPTIMAL,\ /obj/item/tool/hatchet = SURGERY_TOOL_MULT_SUBSTITUTE,\ /obj/item/tool/kitchen/knife/butcher = SURGERY_TOOL_MULT_SUBSTITUTE,\ /obj/item/attachable/bayonet = SURGERY_TOOL_MULT_BAD_SUBSTITUTE\ diff --git a/code/__DEFINES/text.dm b/code/__DEFINES/text.dm index e3724e65f620..26567be26255 100644 --- a/code/__DEFINES/text.dm +++ b/code/__DEFINES/text.dm @@ -17,3 +17,10 @@ #define SHOW_MESSAGE_VISIBLE 1 #define SHOW_MESSAGE_AUDIBLE 2 + +//Don't set this very much higher then 1024 unless you like inviting people in to dos your server with message spam +#define MAX_MESSAGE_LEN 1024 +#define MAX_EMOTE_LEN 256 +#define MAX_PAPER_MESSAGE_LEN 3072 +#define MAX_BOOK_MESSAGE_LEN 9216 +#define MAX_NAME_LEN 28 diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index 89976c498422..fdfec5e8ca08 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,6 +1,6 @@ // tgstation-server DMAPI -#define TGS_DMAPI_VERSION "6.5.0" +#define TGS_DMAPI_VERSION "7.0.2" // All functions and datums outside this document are subject to change with any version and should not be relied on. @@ -73,12 +73,12 @@ #define TGS_EVENT_REPO_MERGE_PULL_REQUEST 3 /// Before the repository makes a sychronize operation. Parameters: Absolute repostiory path. #define TGS_EVENT_REPO_PRE_SYNCHRONIZE 4 -/// Before a BYOND install operation begins. Parameters: [/datum/tgs_version] of the installing BYOND. -#define TGS_EVENT_BYOND_INSTALL_START 5 -/// When a BYOND install operation fails. Parameters: Error message -#define TGS_EVENT_BYOND_INSTALL_FAIL 6 -/// When the active BYOND version changes. Parameters: (Nullable) [/datum/tgs_version] of the current BYOND, [/datum/tgs_version] of the new BYOND. -#define TGS_EVENT_BYOND_ACTIVE_VERSION_CHANGE 7 +/// Before a engine install operation begins. Parameters: Version string of the installing engine. +#define TGS_EVENT_ENGINE_INSTALL_START 5 +/// When a engine install operation fails. Parameters: Error message +#define TGS_EVENT_ENGINE_INSTALL_FAIL 6 +/// When the active engine version changes. Parameters: (Nullable) Version string of the current engine, version string of the new engine. +#define TGS_EVENT_ENGINE_ACTIVE_VERSION_CHANGE 7 /// When the compiler starts running. Parameters: Game directory path, origin commit SHA. #define TGS_EVENT_COMPILE_START 8 /// When a compile is cancelled. No parameters. @@ -108,7 +108,7 @@ // #define TGS_EVENT_DREAM_DAEMON_LAUNCH 22 /// After a single submodule update is performed. Parameters: Updated submodule name. #define TGS_EVENT_REPO_SUBMODULE_UPDATE 23 -/// After CodeModifications are applied, before DreamMaker is run. Parameters: Game directory path, origin commit sha, byond version. +/// After CodeModifications are applied, before DreamMaker is run. Parameters: Game directory path, origin commit sha, version string of the used engine. #define TGS_EVENT_PRE_DREAM_MAKER 24 /// Whenever a deployment folder is deleted from disk. Parameters: Game directory path. #define TGS_EVENT_DEPLOYMENT_CLEANUP 25 @@ -122,6 +122,7 @@ /// The watchdog will restart on reboot. #define TGS_REBOOT_MODE_RESTART 2 +// Note that security levels are currently meaningless in OpenDream /// DreamDaemon Trusted security level. #define TGS_SECURITY_TRUSTED 0 /// DreamDaemon Safe security level. @@ -129,6 +130,18 @@ /// DreamDaemon Ultrasafe security level. #define TGS_SECURITY_ULTRASAFE 2 +/// DreamDaemon public visibility level. +#define TGS_VISIBILITY_PUBLIC 0 +/// DreamDaemon private visibility level. +#define TGS_VISIBILITY_PRIVATE 1 +/// DreamDaemon invisible visibility level. +#define TGS_VISIBILITY_INVISIBLE 2 + +/// The Build Your Own Net Dream engine. +#define TGS_ENGINE_TYPE_BYOND 0 +/// The OpenDream engine. +#define TGS_ENGINE_TYPE_OPENDREAM 1 + //REQUIRED HOOKS /** @@ -154,7 +167,7 @@ #define TGS_TOPIC var/tgs_topic_return = TgsTopic(args[1]); if(tgs_topic_return) return tgs_topic_return /** - * Call this as late as possible in [world/proc/Reboot]. + * Call this as late as possible in [world/proc/Reboot] (BEFORE ..()). */ /world/proc/TgsReboot() return @@ -413,6 +426,7 @@ /** * Send a message to connected chats. This function may sleep! + * If TGS is offline when called, the message may be placed in a queue to be sent and this function will return immediately. Your message will be sent when TGS reconnects to the game. * * message - The [/datum/tgs_message_content] to send. * admin_only: If [TRUE], message will be sent to admin connected chats. Vice-versa applies. @@ -422,6 +436,7 @@ /** * Send a private message to a specific user. This function may sleep! + * If TGS is offline when called, the message may be placed in a queue to be sent and this function will return immediately. Your message will be sent when TGS reconnects to the game. * * message - The [/datum/tgs_message_content] to send. * user: The [/datum/tgs_chat_user] to PM. @@ -431,6 +446,7 @@ /** * Send a message to connected chats that are flagged as game-related in TGS. This function may sleep! + * If TGS is offline when called, the message may be placed in a queue to be sent and this function will return immediately. Your message will be sent when TGS reconnects to the game. * * message - The [/datum/tgs_message_content] to send. * channels - Optional list of [/datum/tgs_chat_channel]s to restrict the message to. @@ -442,6 +458,10 @@ /world/proc/TgsVersion() return +/// Returns the running engine type +/world/proc/TgsEngine() + return + /// Returns the current [/datum/tgs_version] of the DMAPI being used if it was activated, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsApiVersion() return @@ -458,6 +478,10 @@ /world/proc/TgsSecurityLevel() return +/// Returns the current BYOND visibility level as a TGS_VISIBILITY_ define if TGS is present, null otherwise. Requires TGS to be using interop API version 5 or higher otherwise the string "___unimplemented" wil be returned. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! +/world/proc/TgsVisibility() + return + /// Returns a list of active [/datum/tgs_revision_information/test_merge]s if TGS is present, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsTestMerges() return diff --git a/code/__DEFINES/tgui.dm b/code/__DEFINES/tgui.dm index 865088ee72fc..ca6408961eab 100644 --- a/code/__DEFINES/tgui.dm +++ b/code/__DEFINES/tgui.dm @@ -32,7 +32,7 @@ /// Creates a message packet for sending via output() // This is {"type":type,"payload":payload}, but pre-encoded. This is much faster // than doing it the normal way. -// To ensure this is correct, this is unit tested in tgui_create_message. However, CM does not have unit tests available. +// To ensure this is correct, this is unit tested in tgui_create_message. #define TGUI_CREATE_MESSAGE(type, payload) ( \ "%7b%22type%22%3a%22[type]%22%2c%22payload%22%3a[url_encode(json_encode(payload))]%7d" \ ) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index e5441090d60c..dc714472510a 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -1,22 +1,20 @@ -//shamelessly ripped from TG #define SIGNAL_ADDTRAIT(trait_ref) "addtrait [trait_ref]" #define SIGNAL_REMOVETRAIT(trait_ref) "removetrait [trait_ref]" // trait accessor defines -//here be dragons #define ADD_TRAIT(target, trait, source) \ do { \ var/list/_L; \ - if (!target.status_traits) { \ - target.status_traits = list(); \ - _L = target.status_traits; \ + if (!target._status_traits) { \ + target._status_traits = list(); \ + _L = target._status_traits; \ _L[trait] = list(source); \ SEND_SIGNAL(target, SIGNAL_ADDTRAIT(trait), trait); \ if(trait in GLOB.traits_with_elements){ \ target.AddElement(GLOB.traits_with_elements[trait]); \ } \ } else { \ - _L = target.status_traits; \ + _L = target._status_traits; \ if (_L[trait]) { \ _L[trait] |= list(source); \ } else { \ @@ -30,16 +28,16 @@ } while (0) #define REMOVE_TRAIT(target, trait, sources) \ do { \ - var/list/_L = target.status_traits; \ + var/list/_L = target._status_traits; \ var/list/_S; \ if (sources && !islist(sources)) { \ _S = list(sources); \ } else { \ _S = sources\ }; \ - if (_L && _L[trait]) { \ + if (_L?[trait]) { \ for (var/_T in _L[trait]) { \ - if ((!_S && (_T != TRAIT_SOURCE_QUIRK)) || (_T in _S)) { \ + if ((!_S && (_T != ROUNDSTART_TRAIT)) || (_T in _S)) { \ _L[trait] -= _T \ } \ };\ @@ -51,13 +49,40 @@ } \ }; \ if (!length(_L)) { \ - target.status_traits = null \ + target._status_traits = null \ + }; \ + } \ + } while (0) +#define REMOVE_TRAIT_NOT_FROM(target, trait, sources) \ + do { \ + var/list/_traits_list = target._status_traits; \ + var/list/_sources_list; \ + if (sources && !islist(sources)) { \ + _sources_list = list(sources); \ + } else { \ + _sources_list = sources\ + }; \ + if (_traits_list?[trait]) { \ + for (var/_trait_source in _traits_list[trait]) { \ + if (!(_trait_source in _sources_list)) { \ + _traits_list[trait] -= _trait_source \ + } \ + };\ + if (!length(_traits_list[trait])) { \ + _traits_list -= trait; \ + SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(trait), trait); \ + if(trait in GLOB.traits_with_elements) { \ + target.RemoveElement(GLOB.traits_with_elements[trait]); \ + } \ + }; \ + if (!length(_traits_list)) { \ + target._status_traits = null \ }; \ } \ } while (0) #define REMOVE_TRAITS_NOT_IN(target, sources) \ do { \ - var/list/_L = target.status_traits; \ + var/list/_L = target._status_traits; \ var/list/_S = sources; \ if (_L) { \ for (var/_T in _L) { \ @@ -65,20 +90,20 @@ if (!length(_L[_T])) { \ _L -= _T; \ SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(_T), _T); \ - if(_T in GLOB.traits_with_elements) { \ - target.RemoveElement(GLOB.traits_with_elements[_T]); \ + if(trait in GLOB.traits_with_elements) { \ + target.RemoveElement(GLOB.traits_with_elements[trait]); \ }; \ };\ };\ if (!length(_L)) { \ - target.status_traits = null\ + target._status_traits = null\ };\ }\ } while (0) #define REMOVE_TRAITS_IN(target, sources) \ do { \ - var/list/_L = target.status_traits; \ + var/list/_L = target._status_traits; \ var/list/_S = sources; \ if (sources && !islist(sources)) { \ _S = list(sources); \ @@ -97,25 +122,44 @@ };\ };\ if (!length(_L)) { \ - target.status_traits = null\ + target._status_traits = null\ };\ }\ } while (0) -#define HAS_TRAIT(target, trait) (target.status_traits ? (target.status_traits[trait] ? TRUE : FALSE) : FALSE) -#define HAS_TRAIT_FROM(target, trait, source) (target.status_traits ? (target.status_traits[trait] ? (source in target.status_traits[trait]) : FALSE) : FALSE) -#define HAS_TRAIT_FROM_ONLY(target, trait, source) (\ - target.status_traits ?\ - (target.status_traits[trait] ?\ - ((source in target.status_traits[trait]) && (length(target.status_traits) == 1))\ - : FALSE)\ - : FALSE) -#define HAS_TRAIT_NOT_FROM(target, trait, source) (target.status_traits ? (target.status_traits[trait] ? (length(target.status_traits[trait] - source) > 0) : FALSE) : FALSE) - +#define HAS_TRAIT(target, trait) (target._status_traits?[trait] ? TRUE : FALSE) +#define HAS_TRAIT_FROM(target, trait, source) (HAS_TRAIT(target, trait) && (source in target._status_traits[trait])) +#define HAS_TRAIT_FROM_ONLY(target, trait, source) (HAS_TRAIT(target, trait) && (source in target._status_traits[trait]) && (length(target._status_traits[trait]) == 1)) +#define HAS_TRAIT_NOT_FROM(target, trait, source) (HAS_TRAIT(target, trait) && (length(target._status_traits[trait] - source) > 0)) +/// Returns a list of trait sources for this trait. Only useful for wacko cases and internal futzing +/// You should not be using this +#define GET_TRAIT_SOURCES(target, trait) (target._status_traits?[trait] || list()) +/// Returns the amount of sources for a trait. useful if you don't want to have a "thing counter" stuck around all the time +#define COUNT_TRAIT_SOURCES(target, trait) length(GET_TRAIT_SOURCES(target, trait)) +/// A simple helper for checking traits in a mob's mind +#define HAS_MIND_TRAIT(target, trait) (HAS_TRAIT(target, trait) || (target.mind ? HAS_TRAIT(target.mind, trait) : FALSE)) /// Example trait // #define TRAIT_X "t_x" + //-- mob traits -- +/// Apply this to make a mob not dense, and remove it when you want it to no longer make them undense, other sorces of undesity will still apply. Always define a unique source when adding a new instance of this! +#define TRAIT_UNDENSE "undense" +/// Forces the user to stay unconscious. +#define TRAIT_KNOCKEDOUT "knockedout" +/// Prevents voluntary movement. +#define TRAIT_IMMOBILIZED "immobilized" +/// Prevents voluntary standing or staying up on its own. +#define TRAIT_FLOORED "floored" +/// Forces user to stay standing +#define TRAIT_FORCED_STANDING "forcedstanding" +/// Stuns preventing movement and using objects but without further impairement +#define TRAIT_INCAPACITATED "incapacitated" +/// Disoriented. Unable to talk properly, and unable to use some skills as Xeno +#define TRAIT_DAZED "dazed" +/// Apply this to identify a mob as merged with weeds +#define TRAIT_MERGED_WITH_WEEDS "merged_with_weeds" + // SPECIES TRAITS /// Knowledge of Yautja technology #define TRAIT_YAUTJA_TECH "t_yautja_tech" @@ -123,15 +167,17 @@ #define TRAIT_SUPER_STRONG "t_super_strong" /// Foreign biology. Basic medHUDs won't show the mob. (Yautja, Zombies) #define TRAIT_FOREIGN_BIO "t_foreign_bio" -/// Eye color changes on intent. (G1 Synths) +/// Eye color changes on intent. (G1 Synths and WJs) #define TRAIT_INTENT_EYES "t_intent_eyes" -/// Masked synthetic biology. Basic medHUDs will percieve the mob as human. (Infiltrator Synths) +/// Masked synthetic biology. Basic medHUDs will perceive the mob as human. (Infiltrator Synths) #define TRAIT_INFILTRATOR_SYNTH "t_infiltrator_synth" +/// Makes it impossible to strip the inventory of this mob. +#define TRAIT_UNSTRIPPABLE "t_unstrippable" // HIVE TRAITS /// If the Hive is a Xenonid Hive #define TRAIT_XENONID "t_xenonid" -/// If the Hive delays round end (this is overriden for some hives). Does not occur naturally. Must be applied in events. +/// If the Hive delays round end (this is overridden for some hives). Does not occur naturally. Must be applied in events. #define TRAIT_NO_HIVE_DELAY "t_no_hive_delay" /// If the Hive uses it's colors on the mobs. Does not occur naturally, excepting the Mutated hive. #define TRAIT_NO_COLOR "t_no_color" @@ -157,6 +203,8 @@ #define TRAIT_LEADERSHIP "t_leadership" /// If the mob can see the reagents contents of stuff #define TRAIT_REAGENT_SCANNER "reagent_scanner" +/// If the mob cannot eat/be fed +#define TRAIT_CANNOT_EAT "t_cannot_eat" /// If the mob is being lazed by a sniper spotter #define TRAIT_SPOTTER_LAZED "t_spotter_lazed" /// If the mob has ear protection. Protects from external ear damage effects. Includes explosions, firing the RPG, screeching DEAFNESS only, and flashbangs. @@ -173,12 +221,20 @@ #define TRAIT_USING_WHEELCHAIR "t_using_wheelchair" /// If the mob will instantly go permadead upon death #define TRAIT_HARDCORE "t_hardcore" +/// If the mob is able to use the vulture rifle or spotting scope +#define TRAIT_VULTURE_USER "t_vulture_user" +/// If the mob is currently loading a tutorial +#define TRAIT_IN_TUTORIAL "t_IN_TUTORIAL" +/// If the mob is cloaked in any form +#define TRAIT_CLOAKED "t_cloaked" // -- ability traits -- /// Xenos with this trait cannot have plasma transfered to them #define TRAIT_ABILITY_NO_PLASMA_TRANSFER "t_ability_no_plasma_transfer" /// Shows that the xeno queen is on ovi #define TRAIT_ABILITY_OVIPOSITOR "t_ability_ovipositor" +/// Used for burrowed mobs, prevent's SG/sentrys/claymores from autofiring +#define TRAIT_ABILITY_BURROWED "t_ability_burrowed" //-- item traits -- // TOOL TRAITS @@ -192,12 +248,23 @@ #define TRAIT_TOOL_SIMPLE_BLOWTORCH "t_tool_simple_blowtorch" #define TRAIT_TOOL_PEN "t_tool_pen" + +/// Can lockout blackmarket from ASRS console circuits. +#define TRAIT_TOOL_TRADEBAND "t_tool_tradeband" + +/// Can hack ASRS consoles to access the black market +#define TRAIT_TOOL_BLACKMARKET_HACKER "t_tool_blackmarket_hacker" + // CLOTHING TRAITS #define TRAIT_CLOTHING_HOOD "t_clothing_hood" // GUN TRAITS #define TRAIT_GUN_SILENCED "t_gun_silenced" +#define TRAIT_GUN_BIPODDED "t_gun_bipodded" + +#define TRAIT_GUN_LIGHT_DEACTIVATED "t_gun_light_deactivated" + // Miscellaneous item traits. // Do NOT bloat this category, if needed make a new category (like shoe traits, xeno item traits...) @@ -211,6 +278,9 @@ //ie. naming a regulation tape "example" will become regulation tape (example) #define TRAIT_ITEM_RENAME_SPECIAL "t_item_rename_special" +// This item can't be implanted into someone, regardless of the size of the item. +#define TRAIT_ITEM_NOT_IMPLANTABLE "t_item_not_implantable" + //-- structure traits -- // TABLE TRAITS /// If the table is being flipped, prevent any changes that will mess with adjacency handling @@ -228,7 +298,10 @@ GLOBAL_LIST_INIT(mob_traits, list( TRAIT_TWOBORE_TRAINING, TRAIT_LEADERSHIP, TRAIT_DEXTROUS, - TRAIT_REAGENT_SCANNER + TRAIT_REAGENT_SCANNER, + TRAIT_ABILITY_BURROWED, + TRAIT_VULTURE_USER, + TRAIT_IN_TUTORIAL, )) /* @@ -238,11 +311,18 @@ GLOBAL_LIST_INIT(mob_traits, list( */ GLOBAL_LIST_INIT(traits_by_type, list( /mob = list( + "TRAIT_KNOCKEDOUT" = TRAIT_KNOCKEDOUT, + "TRAIT_IMMOBILIZED" = TRAIT_IMMOBILIZED, + "TRAIT_INCAPACITATED" = TRAIT_INCAPACITATED, + "TRAIT_FLOORED" = TRAIT_FLOORED, + "TRAIT_DAZED" = TRAIT_DAZED, + "TRAIT_UNDENSE" = TRAIT_UNDENSE, "TRAIT_YAUTJA_TECH" = TRAIT_YAUTJA_TECH, "TRAIT_SUPER_STRONG" = TRAIT_SUPER_STRONG, "TRAIT_FOREIGN_BIO" = TRAIT_FOREIGN_BIO, "TRAIT_INTENT_EYES" = TRAIT_INTENT_EYES, "TRAIT_INFILTRATOR_SYNTH" = TRAIT_INFILTRATOR_SYNTH, + "TRAIT_UNSTRIPPABLE" = TRAIT_UNSTRIPPABLE, "TRAIT_NESTED" = TRAIT_NESTED, "TRAIT_CRAWLER" = TRAIT_CRAWLER, "TRAIT_SIMPLE_DESC" = TRAIT_SIMPLE_DESC, @@ -258,7 +338,12 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_BIMEX" = TRAIT_BIMEX, "TRAIT_EMOTE_CD_EXEMPT" = TRAIT_EMOTE_CD_EXEMPT, "TRAIT_LISPING" = TRAIT_LISPING, + "TRAIT_CANNOT_EAT" = TRAIT_CANNOT_EAT, + "TRAIT_VULTURE_USER" = TRAIT_VULTURE_USER, + "TRAIT_CLOAKED" = TRAIT_CLOAKED, ), +// /mob/living/carbon/human = list( +// ), /mob/living/carbon/xenomorph = list( "TRAIT_ABILITY_NO_PLASMA_TRANSFER" = TRAIT_ABILITY_NO_PLASMA_TRANSFER, "TRAIT_ABILITY_OVIPOSITOR" = TRAIT_ABILITY_OVIPOSITOR, @@ -286,6 +371,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( ), /obj/item/weapon/gun = list( "TRAIT_GUN_SILENCED" = TRAIT_GUN_SILENCED, + "TRAIT_GUN_BIPODDED" = TRAIT_GUN_BIPODDED, ), /obj/structure/surface/table = list( "TRAIT_STRUCTURE_FLIPPING" = TRAIT_TABLE_FLIPPING, @@ -308,21 +394,25 @@ GLOBAL_LIST(trait_name_map) /// Example trait source // #define TRAIT_SOURCE_Y "t_s_y" #define TRAIT_SOURCE_INHERENT "t_s_inherent" +/// cannot be removed without admin intervention +#define ROUNDSTART_TRAIT "roundstart" //-- mob traits -- +///Status trait coming from lying down through update_canmove() +#define LYING_TRAIT "lying" ///Status trait coming from species. .human/species_gain() #define TRAIT_SOURCE_SPECIES "t_s_species" ///Status trait coming from the hive. #define TRAIT_SOURCE_HIVE "t_s_hive" ///Status trait coming from being buckled. #define TRAIT_SOURCE_BUCKLE "t_s_buckle" -///Status trait coming from roundstart quirks (that don't exist yet). Unremovable by REMOVE_TRAIT -#define TRAIT_SOURCE_QUIRK "t_s_quirk" ///Status trait coming from being assigned as [acting] squad leader. #define TRAIT_SOURCE_SQUAD_LEADER "t_s_squad_leader" ///Status trait coming from their job #define TRAIT_SOURCE_JOB "t_s_job" ///Status trait forced by staff #define TRAIT_SOURCE_ADMIN "t_s_admin" +/// Status trait coming from a tutorial +#define TRAIT_SOURCE_TUTORIAL "t_s_tutorials" ///Status trait coming from equipment #define TRAIT_SOURCE_EQUIPMENT(slot) "t_s_equipment_[slot]" ///Status trait coming from skill @@ -331,8 +421,13 @@ GLOBAL_LIST(trait_name_map) #define TRAIT_SOURCE_ATTACHMENT(slot) "t_s_attachment_[slot]" ///Status trait coming from ability #define TRAIT_SOURCE_ABILITY(ability) "t_s_ability_[ability]" +#define TRAIT_SOURCE_LIMB(limb) "t_s_limb_[limb]" ///Status trait forced by the xeno action charge #define TRAIT_SOURCE_XENO_ACTION_CHARGE "t_s_xeno_action_charge" +///Status trait coming from a xeno nest +#define XENO_NEST_TRAIT "xeno_nest" +///Status trait from a generic throw by xeno abilities +#define XENO_THROW_TRAIT "xeno_throw_trait" //-- structure traits -- ///Status trait coming from being flipped or unflipped. #define TRAIT_SOURCE_FLIP_TABLE "t_s_flip_table" @@ -344,3 +439,40 @@ GLOBAL_LIST(trait_name_map) //Status trait coming from clothing. #define TRAIT_SOURCE_CLOTHING "t_s_clothing" + +/// trait associated to being buckled +#define BUCKLED_TRAIT "buckled" // Yes the name doesn't conform. /tg/ appears to have changed naming style inbetween +/// trait source when an effect is coming from a fakedeath effect (refactor this) +#define FAKEDEATH_TRAIT "fakedeath" +/// trait source where a condition comes from body state +#define BODY_TRAIT "body" +/// Trait associated to lying down (having a [lying_angle] of a different value than zero). +#define LYING_DOWN_TRAIT "lying-down" +/// trait associated to a stat value or range of +#define STAT_TRAIT "stat" +/// trait effect related to the queen ovipositor +#define OVIPOSITOR_TRAIT "ovipositor" +/// trait associated to being held in a chokehold +#define CHOKEHOLD_TRAIT "chokehold" +/// trait effect related to active specialist gear +#define SPECIALIST_GEAR_TRAIT "specialist_gear" +/// traits associated with usage of snowflake dropship double seats +#define DOUBLE_SEATS_TRAIT "double_seats" +/// traits associated with xeno on-ground weeds +#define XENO_WEED_TRAIT "xeno_weed" +/// traits associated with actively interacted machinery +#define INTERACTION_TRAIT "interaction" +/// traits bound by stunned status effects +#define STUNNED_TRAIT "stunned" +/// traits bound by knocked_down status effect +#define KNOCKEDDOWN_TRAIT "knockeddown" +/// traits bound by knocked_out status effect +#define KNOCKEDOUT_TRAIT "knockedout" +/// traits from being pounced +#define POUNCED_TRAIT "pounced" +/// traits from step_triggers on the map +#define STEP_TRIGGER_TRAIT "step_trigger" +/// traits from hacked machine interactions +#define HACKED_TRAIT "hacked" +/// traits from chloroform usage +#define CHLOROFORM_TRAIT "chloroform" diff --git a/code/__DEFINES/tutorial.dm b/code/__DEFINES/tutorial.dm new file mode 100644 index 000000000000..75dc7f6da21f --- /dev/null +++ b/code/__DEFINES/tutorial.dm @@ -0,0 +1,6 @@ +#define TUTORIAL_ATOM_FROM_TRACKING(path, varname) var##path/##varname = tracking_atoms[##path] + +#define TUTORIAL_CATEGORY_BASE "Base" // Shouldn't be used outside of base types +#define TUTORIAL_CATEGORY_SS13 "Space Station 13" +#define TUTORIAL_CATEGORY_MARINE "Marine" +#define TUTORIAL_CATEGORY_XENO "Xenomorph" diff --git a/code/__DEFINES/typecheck/humanoids.dm b/code/__DEFINES/typecheck/humanoids.dm index 58d245c486e4..7076cf67c95c 100644 --- a/code/__DEFINES/typecheck/humanoids.dm +++ b/code/__DEFINES/typecheck/humanoids.dm @@ -25,7 +25,7 @@ #define isspeciessynth(A) (A.species?.group == SPECIES_SYNTHETIC) //Size checks for carbon to use instead of typechecks. (Hellhounds are deprecated) -#define iscarbonsizexeno(A) (A.mob_size >= MOB_SIZE_XENO_SMALL) +#define iscarbonsizexeno(A) (A.mob_size >= MOB_SIZE_XENO_VERY_SMALL) #define iscarbonsizehuman(A) (A.mob_size <= MOB_SIZE_HUMAN) //job/role helpers diff --git a/code/__DEFINES/typecheck/items.dm b/code/__DEFINES/typecheck/items.dm index 09153cde25c2..5c4d099b8112 100644 --- a/code/__DEFINES/typecheck/items.dm +++ b/code/__DEFINES/typecheck/items.dm @@ -1,10 +1,10 @@ #define iswelder(O) (istype(O, /obj/item/tool/weldingtool)) #define iscoil(O) (istype(O, /obj/item/stack/cable_coil)) #define iswire(O) (istype(O, /obj/item/stack/cable_coil)) -#define isweapon(O) (O && is_type_in_list(O, weapons)) +#define isweapon(O) (O && is_type_in_list(O, GLOB.weapons)) #define isgun(O) (istype(O, /obj/item/weapon/gun)) #define isbanana(O) (istype(O, /obj/item/reagent_container/food/snacks/grown/banana)) -#define istool(O) (O && is_type_in_list(O, common_tools)) +#define istool(O) (O && is_type_in_list(O, GLOB.common_tools)) #define ispowerclamp(O) (istype(O, /obj/item/powerloader_clamp)) #define isstorage(O) (istype(O, /obj/item/storage)) #define isclothing(O) (istype(O, /obj/item/clothing)) @@ -12,13 +12,13 @@ #define isdefenses(O) (istype(O, /obj/structure/machinery/defenses)) //Quick type checks for weapons -var/global/list/weapons = list( +GLOBAL_LIST_INIT(weapons, list( /obj/item/weapon, /obj/item/attachable/bayonet -) +)) //Quick type checks for some tools -var/global/list/common_tools = list( +GLOBAL_LIST_INIT(common_tools, list( /obj/item/stack/cable_coil, /obj/item/tool/wrench, /obj/item/tool/weldingtool, @@ -26,7 +26,7 @@ var/global/list/common_tools = list( /obj/item/tool/wirecutters, /obj/item/device/multitool, /obj/item/tool/crowbar -) +)) /obj/item/proc/can_pry() if(pry_capable > IS_PRY_CAPABLE_SIMPLE || HAS_TRAIT(src, TRAIT_TOOL_CROWBAR)) diff --git a/code/__DEFINES/typecheck/mobs_generic.dm b/code/__DEFINES/typecheck/mobs_generic.dm index 49e4463435a6..aed270cdca25 100644 --- a/code/__DEFINES/typecheck/mobs_generic.dm +++ b/code/__DEFINES/typecheck/mobs_generic.dm @@ -1,10 +1,8 @@ -#define isAI(A) (istype(A, /mob/living/silicon/ai)) +#define isARES(A) (istype(A, /mob/living/silicon/decoy/ship_ai)) #define isSilicon(A) (istype(A, /mob/living/silicon)) #define isRemoteControlling(M) (M && M.client && M.client.remote_control) -#define isRemoteControllingOrAI(M) ((M && M.client && M.client.remote_control) || (istype(M, /mob/living/silicon/ai))) #define isbrain(A) (istype(A, /mob/living/brain)) -#define isrobot(A) (istype(A, /mob/living/silicon/robot)) #define isanimal(A) (istype(A, /mob/living/simple_animal)) #define isanimalhostile(A) (istype(A, /mob/living/simple_animal/hostile)) #define isanimalretaliate(A) (istype(A, /mob/living/simple_animal/hostile/retaliate)) @@ -16,12 +14,9 @@ #define iscarp(A) (istype(A, /mob/living/simple_animal/hostile/carp)) #define isclown(A) (istype(A, /mob/living/simple_animal/hostile/retaliate/clown)) #define iscarbon(A) (istype(A, /mob/living/carbon)) -#define isborg(A) (isrobot(A) && !ismaintdrone(A)) -#define ishighersilicon(A) (isborg(A) || isRemoteControllingOrAI(A)) #define isliving(A) (istype(A, /mob/living)) #define isobserver(A) (istype(A, /mob/dead/observer)) #define isorgan(A) (istype(A, /obj/limb)) #define isnewplayer(A) (istype(A, /mob/new_player)) -#define ismaintdrone(A) (istype(A,/mob/living/silicon/robot/drone)) #define isHellhound(A) (istype(A, /mob/living/carbon/xenomorph/hellhound)) #define isaghost(A) (copytext(A.key, 1, 2) == "@") diff --git a/code/__DEFINES/typecheck/xenos.dm b/code/__DEFINES/typecheck/xenos.dm index 4d1b7819bdf1..34b70ac92f45 100644 --- a/code/__DEFINES/typecheck/xenos.dm +++ b/code/__DEFINES/typecheck/xenos.dm @@ -14,6 +14,7 @@ #define islarva(A) (istype(A, /mob/living/carbon/xenomorph/larva)) #define ispredalienlarva(A) (istype(A, /mob/living/carbon/xenomorph/larva/predalien)) #define isfacehugger(A) (istype(A, /mob/living/carbon/xenomorph/facehugger)) +#define islesserdrone(A) (istype(A, /mob/living/carbon/xenomorph/lesser_drone)) #define ispraetorian(A) (istype(A, /mob/living/carbon/xenomorph/praetorian)) #define isqueen(A) (istype(A, /mob/living/carbon/xenomorph/queen)) #define isravager(A) (istype(A, /mob/living/carbon/xenomorph/ravager)) @@ -36,6 +37,10 @@ if(!hive) return FALSE + if(hivenumber == XENO_HIVE_RENEGADE) + var/datum/hive_status/corrupted/renegade/renegade_hive = hive + return renegade_hive.iff_protection_check(src, attempt_harm_mob) + return hive.is_ally(attempt_harm_mob) // need this to set the data for walls/eggs/huggers when they are initialized diff --git a/code/__DEFINES/urls.dm b/code/__DEFINES/urls.dm index 98b8b409ae6a..5d3fca1a2032 100644 --- a/code/__DEFINES/urls.dm +++ b/code/__DEFINES/urls.dm @@ -1,59 +1,11 @@ -// ------ CHANGE LOG ------ // -#define URL_CHANGELOG "https://cm-ss13.com/changelog" - -// ------ ISSUE TRACKER ------ // -#define URL_ISSUE_TRACKER "https://github.com/cmss13-devs/cmss13/issues" +// placeholder strings to be replaced +#define WIKI_PLACEHOLDER "%WIKIURL%" +#define LAW_PLACEHOLDER "%LAWURL%" // ------ MISC WIKI LINKS ------ // -#define URL_WIKI_RULES "https://cm-ss13.com/wiki/Rules" -#define URL_WIKI_LANDING "https://cm-ss13.com/wiki/Main_Page" -#define URL_WIKI_COC "https://cm-ss13.com/wiki/Rank" -#define URL_WIKI_LAW "https://cm-ss13.com/wiki/Marine_Law" -#define URL_WIKI_XENO_QUICKSTART "https://cm-ss13.com/wiki/Xeno_Quickstart_Guide" -#define URL_WIKI_MARINE_QUICKSTART "https://cm-ss13.com/wiki/Marine_Quickstart_Guide" -#define URL_WIKI_MACROS "https://cm-ss13.com/wiki/Macros" -#define URL_WIKI_SOP "https://cm-ss13.com/wiki/Standard_Operating_Procedure" -#define URL_WIKI_CO_RULES "https://cm-ss13.com/wiki/CO_Council_Rulings" -#define URL_WIKI_CONSTRUCTION "https://cm-ss13.com/wiki/Guide_to_construction" -#define URL_WIKI_ENGINEERING "https://cm-ss13.com/wiki/Guide_to_Engineering" -#define URL_WIKI_HACKING "https://cm-ss13.com/wiki/Guide_to_Engineering#Hacking" -#define URL_WIKI_SURGERY "https://cm-ss13.com/wiki/Surgery" -#define URL_WIKI_MEDICAL "https://cm-ss13.com/wiki/Guide_to_Medicine" - -// ------ SPAWN GUIDES------ // -#define URL_WIKI_CO_GUIDE "https://cm-ss13.com/wiki/Commanding_Officer" // Command // -#define URL_WIKI_XO_GUIDE "https://cm-ss13.com/wiki/Executive_Officer" -#define URL_WIKI_SO_GUIDE "https://cm-ss13.com/wiki/Staff_Officer" -#define URL_WIKI_SEA_GUIDE "https://cm-ss13.com/wiki/Senior_Enlisted_Advisor" -#define URL_WIKI_SL_GUIDE "https://cm-ss13.com/wiki/Squad_Leader" -#define URL_WIKI_TL_GUIDE "https://cm-ss13.com/wiki/Squad_Radio_Telephone_Operator" // Squad Roles // -#define URL_WIKI_SPEC_GUIDE "https://cm-ss13.com/wiki/Squad_Specialist" -#define URL_WIKI_SG_GUIDE "https://cm-ss13.com/wiki/Squad_Smartgunner" -#define URL_WIKI_MEDIC_GUIDE "https://cm-ss13.com/wiki/Squad_Hospital_Corpsman" -#define URL_WIKI_COMTECH_GUIDE "https://cm-ss13.com/wiki/Squad_Combat_Technician" -#define URL_WIKI_CMP_GUIDE "https://cm-ss13.com/wiki/Chief_MP" // MP Roles // -#define URL_WIKI_MW_GUIDE "https://cm-ss13.com/wiki/Warden" -#define URL_WIKI_MP_GUIDE "https://cm-ss13.com/wiki/Military_Police" -#define URL_WIKI_PO_GUIDE "https://cm-ss13.com/wiki/Pilot_Officer" // Auxiliary Support -#define URL_WIKI_DCC_GUIDE "https://cm-ss13.com/wiki/Dropship_Crew_Chief" -#define URL_WIKI_IO_GUIDE "https://cm-ss13.com/wiki/Intelligence_Officer" -#define URL_WIKI_SYN_GUIDE "https://cm-ss13.com/wiki/Synthetic" -#define URL_WIKI_CE_GUIDE "https://cm-ss13.com/wiki/Chief_Engineer" // Engineering -#define URL_WIKI_OT_GUIDE "https://cm-ss13.com/wiki/Ordnance_Technician" -#define URL_WIKI_MT_GUIDE "https://cm-ss13.com/wiki/Maintenance_Technician" -#define URL_WIKI_CMO_GUIDE "https://cm-ss13.com/wiki/Chief_Medical_Officer" // Medical // -#define URL_WIKI_DOC_GUIDE "https://cm-ss13.com/wiki/Doctor" -#define URL_WIKI_NURSE_GUIDE "https://cm-ss13.com/wiki/Nurse" -#define URL_WIKI_RSR_GUIDE "https://cm-ss13.com/wiki/Researcher" -#define URL_WIKI_RO_GUIDE "https://cm-ss13.com/wiki/Requisitions_Officer" // Supply // -#define URL_WIKI_CT_GUIDE "https://cm-ss13.com/wiki/Cargo_Technician" -#define URL_WIKI_MST_GUIDE "https://cm-ss13.com/wiki/Mess_Technician" -#define URL_WIKI_CL_GUIDE "https://cm-ss13.com/wiki/Corporate_Liaison" // Misc // -#define URL_WIKI_SURV_GUIDE "https://cm-ss13.com/wiki/Survivor" - -// ------ FORUM LINKS ------ // -#define URL_FORUM "https://forum.cm-ss13.com/" -#define URL_FORUM_APPEALS "https://forum.cm-ss13.com/w/in-game-appeal" -#define URL_FORUM_PLAYER_REPORT "https://forum.cm-ss13.com/w/player-report" -#define URL_FORUM_STAFF_REPORT "https://forum.cm-ss13.com/w/staff-report" -#define URL_QUEEN_GUIDE "https://cm-ss13.com/forums/showthread.php?8404-Ultimate-Queen-Guide-Rip-amp-amp-Tear-(Image-Heavy)" +#define URL_WIKI_LAW "Marine_Law" +#define URL_WIKI_XENO_QUICKSTART "Xeno_Quickstart_Guide" +#define URL_WIKI_MARINE_QUICKSTART "Marine_Quickstart_Guide" +#define URL_WIKI_MACROS "Macros" +#define URL_WIKI_SOP "Standard_Operating_Procedure" +#define URL_WIKI_CO_RULES "CO_Council_Rulings" diff --git a/code/__DEFINES/vehicle.dm b/code/__DEFINES/vehicle.dm index 9c6685085788..8a1617229926 100644 --- a/code/__DEFINES/vehicle.dm +++ b/code/__DEFINES/vehicle.dm @@ -53,5 +53,6 @@ #define VEHICLE_CLASS_LIGHT (1<<2) //light class armor (APC, tank) #define VEHICLE_CLASS_MEDIUM (1<<3) //medium class armor (tank) #define VEHICLE_CLASS_HEAVY (1<<4) //heavy class armor (tank) - -#define TANK_POPLOCK 90 +// Other vehicle flags +/// Vehicle can bypass vehicle blockers, typically going further into maps than intended +#define VEHICLE_BYPASS_BLOCKERS (1<<5) diff --git a/code/__DEFINES/vendors.dm b/code/__DEFINES/vendors.dm index 04ee5ffef2b6..086b70a92428 100644 --- a/code/__DEFINES/vendors.dm +++ b/code/__DEFINES/vendors.dm @@ -67,3 +67,13 @@ //Whether or not to load ammo boxes depending on ammo loaded into the vendor //Only relevant in big vendors, like Requisitions or Squad Prep #define VEND_LOAD_AMMO_BOXES (1<<9) +/// Vendors with this flag will fill retroactively based on latejoining players, +/// and expect a scale multiplier instead of amount of items +#define VEND_STOCK_DYNAMIC (1<<10) + +// Redemption Tokens +#define VEND_TOKEN_ENGINEER "Engineer" +#define VEND_TOKEN_SPEC "Specialist" +#define VEND_TOKEN_SYNTH "Synthetic" +/// Token invalid/unrecognised. +#define VEND_TOKEN_VOID "Void" diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm index ecdd9f64ec38..eb248e8a30a7 100644 --- a/code/__DEFINES/vv.dm +++ b/code/__DEFINES/vv.dm @@ -134,3 +134,6 @@ #define VV_HK_TOGGLEPOWER "togglepower" #define VV_HK_ADD_ITEMS_TO_VENDOR "add_items_to_vendor" + +// /obj/structure/pipes/vents +#define VV_HK_GAS "release_gas" diff --git a/code/__DEFINES/weapon_stats.dm b/code/__DEFINES/weapon_stats.dm index 58dad90b0710..3a69002a3b93 100644 --- a/code/__DEFINES/weapon_stats.dm +++ b/code/__DEFINES/weapon_stats.dm @@ -1,7 +1,7 @@ #define HUMAN_UNIVERSAL_DAMAGEMULT 1 #define RECOIL_BUILDUP_VIEWPUNCH_MULTIPLIER 0.1 - +#define BASE_VELOCITY_BONUS 0 #define PROJ_BASE_ACCURACY_MULT 0.01 #define PROJ_BASE_DAMAGE_MULT 0.01 @@ -18,17 +18,17 @@ Accuracy determines if your bullets will hit whatever you're shooting at. Think It DOES NOT control where your bullets go, that's scatter and projectile variance. .../update_projectiles/guns/code.dm -var/accuracy_mult //Base firearm accuracy when firing from a 2-hand, "secure", wielded, etc, whatever grip. -var/accuracy_mult_unwielded //Base firearm accuracy when firing from hip. Both of these default to 1, with additions or subtractions from the mult vars. + var/accuracy_mult //Base firearm accuracy when firing from a 2-hand, "secure", wielded, etc, whatever grip. + var/accuracy_mult_unwielded //Base firearm accuracy when firing from hip. Both of these default to 1, with additions or subtractions from the mult vars. .../updated_projectiles/ammo_datums.dm -var/accuracy //This is added to the firearm's base accuracy when the specific ammo is shot. -var/accuracy_var_low //These two vars are used for the upper and lower bounds of accuracy variance when a bullet is fired. Bullet 'wobble' if you will. -var/accuracy_var_high + var/accuracy //This is added to the firearm's base accuracy when the specific ammo is shot. + var/accuracy_var_low //These two vars are used for the upper and lower bounds of accuracy variance when a bullet is fired. Bullet 'wobble' if you will. + var/accuracy_var_high .../updated_projectiles/gun_attachables.dm -var/accuracy_mult //Attachments ADD an additional multiplier to the base config value. Only ever use accuracy_mult config references. -var/accuracy_mult_unwielded + var/accuracy_mult //Attachments ADD an additional multiplier to the base config value. Only ever use accuracy_mult config references. + var/accuracy_mult_unwielded */ #define HIT_ACCURACY_TIER_1 5 @@ -136,19 +136,22 @@ As such, don't expect any values assigned to common firearms to even consider ho //How many ticks you have to wait between firing. Burst delay uses the same variable! */ -#define FIRE_DELAY_TIER_1 10 -#define FIRE_DELAY_TIER_2 9 -#define FIRE_DELAY_TIER_3 8 -#define FIRE_DELAY_TIER_4 7 -#define FIRE_DELAY_TIER_5 6 -#define FIRE_DELAY_TIER_6 5 -#define FIRE_DELAY_TIER_7 4 -#define FIRE_DELAY_TIER_8 3 -#define FIRE_DELAY_TIER_9 2 -#define FIRE_DELAY_TIER_LMG 1.5 -#define FIRE_DELAY_TIER_SG 1.5 -#define FIRE_DELAY_TIER_SMG 1.3 -#define FIRE_DELAY_TIER_10 1 +#define FIRE_DELAY_TIER_VULTURE 20 +#define FIRE_DELAY_TIER_1 12 +#define FIRE_DELAY_TIER_2 10 +#define FIRE_DELAY_TIER_3 9 +#define FIRE_DELAY_TIER_4 8 +#define FIRE_DELAY_TIER_5 7 +#define FIRE_DELAY_TIER_6 6 +#define FIRE_DELAY_TIER_7 5 +#define FIRE_DELAY_TIER_8 4 +#define FIRE_DELAY_TIER_9 3.5 +#define FIRE_DELAY_TIER_10 3 +#define FIRE_DELAY_TIER_11 2.5 +#define FIRE_DELAY_TIER_LMG 2 +#define FIRE_DELAY_TIER_SG 2 +#define FIRE_DELAY_TIER_SMG 1.5 +#define FIRE_DELAY_TIER_12 1 /* ////RANGE RELATED//// diff --git a/code/__DEFINES/weather.dm b/code/__DEFINES/weather.dm index 16ee8154241f..c67575f80720 100644 --- a/code/__DEFINES/weather.dm +++ b/code/__DEFINES/weather.dm @@ -5,6 +5,7 @@ #define PROB_WEATHER_SOROKYNE 100 //Map specific defines go here. #define PROB_WEATHER_BIG_RED 30 #define PROB_WEATHER_LV624 30 +#define PROB_WEATHER_NEW_VARADERO 100 #define WEATHER_TYPE_NO_WEATHER 0 #define WEATHER_TYPE_SNOW 1 diff --git a/code/__DEFINES/xeno.dm b/code/__DEFINES/xeno.dm index 6d6bd64ea918..2761bc12acf0 100644 --- a/code/__DEFINES/xeno.dm +++ b/code/__DEFINES/xeno.dm @@ -8,6 +8,9 @@ #define TUNNEL_ENTER_BIG_XENO_DELAY 120 #define TUNNEL_ENTER_LARVA_DELAY 10 +/// The duration it takes a player controlled facehugger to leap or hug adjacently +#define FACEHUGGER_WINDUP_DURATION 1 SECONDS + // Defines for action types and click delays used by xenomorph/unarmedattack() and attack_alien(). /// Full attack delay. @@ -70,6 +73,7 @@ #define HUD_ARMOR_STATES_XENO 10 /// Multiplier for time taken for a xeno to place down a resin structure +#define BUILD_TIME_MULT_LESSER_DRONE 2 #define BUILD_TIME_MULT_XENO 1 #define BUILD_TIME_MULT_BUILDER 1 #define BUILD_TIME_MULT_HIVELORD 0.5 @@ -132,6 +136,7 @@ // Weed defines #define WEED_LEVEL_WEAK 0 #define WEED_LEVEL_STANDARD 1.5 +#define WEED_LEVEL_HARDY 1.6 #define WEED_LEVEL_HIVE 4 #define WEED_RANGE_STANDARD 3 @@ -154,6 +159,48 @@ #define WEED_BASE_GROW_SPEED (5 SECONDS) #define WEED_BASE_DECAY_SPEED (10 SECONDS) +/// The time you must be dead to join as a xeno larva +#define XENO_JOIN_DEAD_LARVA_TIME (2.5 MINUTES) +/// The time you must be dead to join as xeno (not larva) +#define XENO_JOIN_DEAD_TIME (5 MINUTES) +/// The time of inactivity you cannot exceed to join as a xeno +#define XENO_JOIN_AFK_TIME_LIMIT (5 MINUTES) +/// The amount of time after round start before buried larva spawns are disallowed +#define XENO_BURIED_LARVA_TIME_LIMIT (30 MINUTES) + +/// The time when xenos can start taking over comm towers +#define XENO_COMM_ACQUISITION_TIME (55 MINUTES) + +/// The time it takes for a pylon to give one larva while activated +#define XENO_PYLON_ACTIVATION_COOLDOWN (5 MINUTES) + +/// The time until you can re-corrupt a comms relay after the last pylon was destroyed +#define XENO_PYLON_DESTRUCTION_DELAY (5 MINUTES) + +/// Evolution boost during hijack +#define XENO_HIJACK_EVILUTION_BUFF 10 + +/// For how long the buff lasts +#define XENO_HIJACK_EVILUTION_TIME (3 MINUTES) + +/// If this is marine to xeno ratio during hijack, xenos see marines on tacmap +#define HIJACK_RATIO_FOR_TACMAP 0.8 + +/// Xenos need to have their number to marines ratio lower than this to get larvae from pylons +#define ENDGAME_LARVA_CAP_MULTIPLIER 0.5 + +/// What percent of their numbers xeno get from pylons +#define LARVA_ADDITION_MULTIPLIER 0.10 + +/// The time against away_timer when an AFK xeno larva can be replaced +#define XENO_LEAVE_TIMER_LARVA 80 //80 seconds +/// The time against away_timer when an AFK xeno (not larva) can be replaced +#define XENO_LEAVE_TIMER 300 //300 seconds +/// The time against away_timer when an AFK facehugger converts to a npc +#define XENO_FACEHUGGER_LEAVE_TIMER 420 //420 seconds +/// The time against away_timer when an AFK xeno gets listed in the available list so ghosts can get ready +#define XENO_AVAILABLE_TIMER 60 //60 seconds + /// Between 2% to 10% of explosion severity #define WEED_EXPLOSION_DAMAGEMULT rand(2, 10)*0.01 @@ -187,6 +234,7 @@ // Health bands #define XENO_HEALTH_LARVA 35 * XENO_UNIVERSAL_HPMULT +#define XENO_HEALTH_LESSER_DRONE 160 * XENO_UNIVERSAL_HPMULT #define XENO_HEALTH_RUNNER 230 * XENO_UNIVERSAL_HPMULT // Killed by 1 PB #define XENO_HEALTH_TIER_1 250 * XENO_UNIVERSAL_HPMULT #define XENO_HEALTH_TIER_2 300 * XENO_UNIVERSAL_HPMULT @@ -216,11 +264,6 @@ #define XENO_PLASMA_TIER_8 800 * XENO_UNIVERSAL_PLASMAMULT #define XENO_PLASMA_TIER_10 1000 * XENO_UNIVERSAL_PLASMAMULT -// Resource stockpile bands -#define XENO_CRYSTAL_LOW 50 -#define XENO_CRYSTAL_MEDIUM 100 -#define XENO_CRYSTAL_HIGH 150 - // Plasma gain bands #define XENO_PLASMA_GAIN_TIER_1 1 #define XENO_PLASMA_GAIN_TIER_2 1.5 @@ -546,9 +589,7 @@ #define XENO_STRUCTURE_CORE "hive core" #define XENO_STRUCTURE_CLUSTER "hive cluster" #define XENO_STRUCTURE_PYLON "hive pylon" -#define XENO_STRUCTURE_POOL "spawn pool" #define XENO_STRUCTURE_EGGMORPH "egg morpher" -#define XENO_STRUCTURE_EVOPOD "evolution pod" #define XENO_STRUCTURE_RECOVERY "recovery node" #define XENO_STRUCTURE_NEST "thick resin nest" @@ -584,7 +625,8 @@ #define XENO_CASTE_LARVA "Bloody Larva" #define XENO_CASTE_PREDALIEN_LARVA "Predalien Larva" #define XENO_CASTE_FACEHUGGER "Facehugger" -#define XENO_T0_CASTES list(XENO_CASTE_LARVA, XENO_CASTE_PREDALIEN_LARVA, XENO_CASTE_FACEHUGGER) +#define XENO_CASTE_LESSER_DRONE "Lesser Drone" +#define XENO_T0_CASTES list(XENO_CASTE_LARVA, XENO_CASTE_PREDALIEN_LARVA, XENO_CASTE_FACEHUGGER, XENO_CASTE_LESSER_DRONE) //t1 #define XENO_CASTE_DRONE "Drone" @@ -612,13 +654,13 @@ #define XENO_CASTE_HELLHOUND "Hellhound" #define XENO_SPECIAL_CASTES list(XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND) -#define ALL_XENO_CASTES list(XENO_CASTE_LARVA, XENO_CASTE_PREDALIEN_LARVA, XENO_CASTE_FACEHUGGER, XENO_CASTE_DRONE, XENO_CASTE_RUNNER, XENO_CASTE_SENTINEL, XENO_CASTE_DEFENDER, XENO_CASTE_BURROWER, XENO_CASTE_CARRIER, XENO_CASTE_HIVELORD, XENO_CASTE_LURKER, XENO_CASTE_WARRIOR, XENO_CASTE_SPITTER, XENO_CASTE_BOILER, XENO_CASTE_PRAETORIAN, XENO_CASTE_CRUSHER, XENO_CASTE_RAVAGER, XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND) +#define ALL_XENO_CASTES list(XENO_CASTE_LARVA, XENO_CASTE_PREDALIEN_LARVA, XENO_CASTE_FACEHUGGER, XENO_CASTE_LESSER_DRONE, XENO_CASTE_DRONE, XENO_CASTE_RUNNER, XENO_CASTE_SENTINEL, XENO_CASTE_DEFENDER, XENO_CASTE_BURROWER, XENO_CASTE_CARRIER, XENO_CASTE_HIVELORD, XENO_CASTE_LURKER, XENO_CASTE_WARRIOR, XENO_CASTE_SPITTER, XENO_CASTE_BOILER, XENO_CASTE_PRAETORIAN, XENO_CASTE_CRUSHER, XENO_CASTE_RAVAGER, XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND) // Checks if two hives are allied to each other. // PARAMETERS: // source_hive integer the hive to check the alliance of // target_hive integer the target hive to see if the source_hive is allied to it. -#define HIVE_ALLIED_TO_HIVE(source_hive, target_hive) (source_hive == target_hive || GLOB.hive_datum[source_hive]?.faction_is_ally(GLOB.hive_datum[target_hive]?.internal_faction)) +#define HIVE_ALLIED_TO_HIVE(source_hive, target_hive) ((source_hive) == (target_hive) || GLOB.hive_datum[source_hive]?.faction_is_ally(GLOB.hive_datum[target_hive]?.internal_faction)) #define QUEEN_SPAWN_TIMEOUT (2 MINUTES) @@ -676,3 +718,6 @@ #define TAILSTAB_AIRLOCK_DAMAGE_MULTIPLIER 2 #define FRENZY_DAMAGE_MULTIPLIER 2 + +#define JOIN_AS_FACEHUGGER_DELAY (3 MINUTES) +#define JOIN_AS_LESSER_DRONE_DELAY (30 SECONDS) diff --git a/code/__HELPERS/#maths.dm b/code/__HELPERS/#maths.dm index 5419b9cd9624..f8a9292d3806 100644 --- a/code/__HELPERS/#maths.dm +++ b/code/__HELPERS/#maths.dm @@ -1,72 +1,52 @@ // Credits to Nickr5 for the useful procs I've taken from his library resource. -var/const/E = 2.71828183 -var/const/Sqrt2 = 1.41421356 - // List of square roots for the numbers 1-100. -var/list/sqrtTable = list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, +GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10) + 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10)) // MATH DEFINES -#define Atan2(x, y) (!x && !y ? 0 : \ - (y >= 0 ? \ - arccos(x / sqrt(x*x + y*y)) : \ - -(arccos(x / sqrt(x*x + y*y))) \ - ) \ - ) -#define Ceiling(x) (-round(-x)) -#define Clamp(val, min_val, max_val) (max(min_val, min(val, max_val))) -#define CLAMP01(x) (clamp(x, 0, 1)) +#define Ceiling(x) (-round(-(x))) +#define CLAMP01(x) (clamp((x), 0, 1)) // cotangent -#define Cot(x) (1 / Tan(x)) +#define Cot(x) (1 / tan(x)) // cosecant #define Csc(x) (1 / sin(x)) -#define Default(a, b) (a ? a : b) +#define Default(a, b) ((a) ? (a) : (b)) #define Floor(x) (round(x)) -//Finds nearest integer to x, above or below -//something.5 or higher, round up, else round down -#define roundNearest(x) (((Ceiling(x) - x) <= (x - Floor(x))) ? Ceiling(x) : Floor(x)) - // Greatest Common Divisor - Euclid's algorithm -#define Gcd(a, b) (b ? Gcd(b, a % b) : a) +#define Gcd(a, b) ((b) ? Gcd((b), (a) % (b)) : (a)) -#define Inverse(x) (1 / x) -#define IsEven(x) (x % 2 == 0) +#define Inverse(x) (1 / (x)) +#define IsEven(x) ((x) % 2 == 0) -// Returns true if val is from min to max, inclusive. -#define IsInRange(val, min, max) (min <= val && val <= max) - -#define IsInteger(x) (Floor(x) == x) +#define IsInteger(x) (Floor(x) == (x)) #define IsOdd(x) (!IsEven(x)) -#define IsMultiple(x, y) (x % y == 0) +#define IsMultiple(x, y) ((x) % (y) == 0) // Least Common Multiple -#define Lcm(a, b) (abs(a) / Gcd(a, b) * abs(b)) +#define Lcm(a, b) (abs(a) / Gcd((a), (b)) * abs(b)) // Returns the nth root of x. -#define Root(n, x) (x ** (1 / n)) +#define NRoot(n, x) ((x) ** (1 / (n))) // secant #define Sec(x) (1 / cos(x)) -// tangent -#define Tan(x) (sin(x) / cos(x)) - // 57.2957795 = 180 / Pi -#define ToDegrees(radians) (radians * 57.2957795) +#define ToDegrees(radians) ((radians) * 57.2957795) // 0.0174532925 = Pi / 180 -#define ToRadians(degrees) (degrees * 0.0174532925) +#define ToRadians(degrees) ((degrees) * 0.0174532925) // min is inclusive, max is exclusive -#define WRAP(val, min, max) clamp(( min == max ? min : (val) - (round(((val) - (min))/((max) - (min))) * ((max) - (min))) ),min,max) +#define WRAP(val, min, max) clamp(( (min) == (max) ? (min) : (val) - (round(((val) - (min))/((max) - (min))) * ((max) - (min))) ),(min),(max)) // MATH PROCS @@ -81,7 +61,7 @@ var/list/sqrtTable = list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, // Convert to polar coordinates var/radius = sqrt(relative_coords[1]**2 + relative_coords[2]**2) - var/phi = Atan2(relative_coords[1], relative_coords[2]) + var/phi = arctan(relative_coords[1], relative_coords[2]) // Rotate the point around the axis phi += degrees @@ -94,11 +74,6 @@ var/list/sqrtTable = list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, return rotated_point -// Round up -/proc/n_ceil(num) - if(isnum(num)) - return round(num)+1 - ///Format a power value in W, kW, MW, or GW. /proc/display_power(powerused) if(powerused < 1000) //Less than a kW @@ -109,89 +84,6 @@ var/list/sqrtTable = list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, return "[round((powerused * 0.000001),0.001)] MW" return "[round((powerused * 0.000000001),0.0001)] GW" -///Calculate the angle between two movables and the west|east coordinate -/proc/get_angle(atom/movable/start, atom/movable/end)//For beams. - if(!start || !end) - return 0 - var/dy =(32 * end.y + end.pixel_y) - (32 * start.y + start.pixel_y) - var/dx =(32 * end.x + end.pixel_x) - (32 * start.x + start.pixel_x) - if(!dy) - return (dx >= 0) ? 90 : 270 - . = arctan(dx/dy) - if(dy < 0) - . += 180 - else if(dx < 0) - . += 360 - -/// Angle between two arbitrary points and horizontal line same as [/proc/get_angle] -/proc/get_angle_raw(start_x, start_y, start_pixel_x, start_pixel_y, end_x, end_y, end_pixel_x, end_pixel_y) - var/dy = (32 * end_y + end_pixel_y) - (32 * start_y + start_pixel_y) - var/dx = (32 * end_x + end_pixel_x) - (32 * start_x + start_pixel_x) - if(!dy) - return (dx >= 0) ? 90 : 270 - . = arctan(dx/dy) - if(dy < 0) - . += 180 - else if(dx < 0) - . += 360 - -///for getting the angle when animating something's pixel_x and pixel_y -/proc/get_pixel_angle(y, x) - if(!y) - return (x >= 0) ? 90 : 270 - . = arctan(x/y) - if(y < 0) - . += 180 - else if(x < 0) - . += 360 - -/** - * Get a list of turfs in a line from `starting_atom` to `ending_atom`. - * - * Uses the ultra-fast [Bresenham Line-Drawing Algorithm](https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm). - */ -/proc/get_line(atom/starting_atom, atom/ending_atom) - var/current_x_step = starting_atom.x//start at x and y, then add 1 or -1 to these to get every turf from starting_atom to ending_atom - var/current_y_step = starting_atom.y - var/starting_z = starting_atom.z - - var/list/line = list(get_turf(starting_atom))//get_turf(atom) is faster than locate(x, y, z) - - var/x_distance = ending_atom.x - current_x_step //x distance - var/y_distance = ending_atom.y - current_y_step - - var/abs_x_distance = abs(x_distance)//Absolute value of x distance - var/abs_y_distance = abs(y_distance) - - var/x_distance_sign = SIGN(x_distance) //Sign of x distance (+ or -) - var/y_distance_sign = SIGN(y_distance) - - var/x = abs_x_distance >> 1 //Counters for steps taken, setting to distance/2 - var/y = abs_y_distance >> 1 //Bit-shifting makes me l33t. It also makes get_line() unnessecarrily fast. - - if(abs_x_distance >= abs_y_distance) //x distance is greater than y - for(var/distance_counter in 0 to (abs_x_distance - 1))//It'll take abs_x_distance steps to get there - y += abs_y_distance - - if(y >= abs_x_distance) //Every abs_y_distance steps, step once in y direction - y -= abs_x_distance - current_y_step += y_distance_sign - - current_x_step += x_distance_sign //Step on in x direction - line += locate(current_x_step, current_y_step, starting_z)//Add the turf to the list - else - for(var/distance_counter in 0 to (abs_y_distance - 1)) - x += abs_x_distance - - if(x >= abs_y_distance) - x -= abs_y_distance - current_x_step += x_distance_sign - - current_y_step += y_distance_sign - line += locate(current_x_step, current_y_step, starting_z) - return line - - ///chances are 1:value. anyprob(1) will always return true /proc/anyprob(value) return (rand(1,value)==value) diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index 6c913b016083..fe15e6d84c79 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -38,6 +38,32 @@ };\ } while(FALSE) +// binary search sorted insert +// IN: Object to be inserted +// LIST: List to insert object into +#define BINARY_INSERT_NUM(IN, LIST) \ + var/__BIN_CTTL = length(LIST);\ + if(!__BIN_CTTL) {\ + LIST += IN;\ + } else {\ + var/__BIN_LEFT = 1;\ + var/__BIN_RIGHT = __BIN_CTTL;\ + var/__BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\ + var/__BIN_ITEM;\ + while(__BIN_LEFT < __BIN_RIGHT) {\ + __BIN_ITEM = LIST[__BIN_MID];\ + if(__BIN_ITEM <= IN) {\ + __BIN_LEFT = __BIN_MID + 1;\ + } else {\ + __BIN_RIGHT = __BIN_MID;\ + };\ + __BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\ + };\ + __BIN_ITEM = LIST[__BIN_MID];\ + __BIN_MID = __BIN_ITEM > IN ? __BIN_MID : __BIN_MID + 1;\ + LIST.Insert(__BIN_MID, IN);\ + } + //Like typesof() or subtypesof(), but returns a typecache instead of a list /proc/typecacheof(path, ignore_root_path, only_root_path = FALSE) if(ispath(path)) diff --git a/code/__HELPERS/_time.dm b/code/__HELPERS/_time.dm index 85acafa0e2f6..733ca659501b 100644 --- a/code/__HELPERS/_time.dm +++ b/code/__HELPERS/_time.dm @@ -15,23 +15,19 @@ #define DECISECONDS_TO_HOURS /36000 -#define XENO_LEAVE_TIMER_LARVA 80 //80 seconds -#define XENO_LEAVE_TIMER 300 //300 seconds -#define XENO_AVAILABLE_TIMER 60 //60 seconds, when to add a xeno to the avaliable list so ghosts can get ready - -var/midnight_rollovers = 0 -var/rollovercheck_last_timeofday = 0 +GLOBAL_VAR_INIT(midnight_rollovers, 0) +GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0) // Real time that is still reliable even when the round crosses over midnight time reset. #define REALTIMEOFDAY (world.timeofday + (864000 * MIDNIGHT_ROLLOVER_CHECK)) -#define MIDNIGHT_ROLLOVER_CHECK ( rollovercheck_last_timeofday != world.timeofday ? update_midnight_rollover() : midnight_rollovers ) +#define MIDNIGHT_ROLLOVER_CHECK ( GLOB.rollovercheck_last_timeofday != world.timeofday ? update_midnight_rollover() : GLOB.midnight_rollovers ) /proc/update_midnight_rollover() - if(world.timeofday < rollovercheck_last_timeofday) - midnight_rollovers++ + if(world.timeofday < GLOB.rollovercheck_last_timeofday) + GLOB.midnight_rollovers++ - rollovercheck_last_timeofday = world.timeofday - return midnight_rollovers + GLOB.rollovercheck_last_timeofday = world.timeofday + return GLOB.midnight_rollovers ///Returns the world time in english. Do not use to get date information - starts at 0 + a random time offset from 10 minutes to 24 hours. /proc/worldtime2text(format = "hh:mm", time = world.time) @@ -52,7 +48,7 @@ var/rollovercheck_last_timeofday = 0 return gameTimestamp("mm:ss", time) /proc/time_left_until(target_time, current_time, time_unit) - return CEILING(target_time - current_time, 1) / time_unit + return Ceiling(target_time - current_time) / time_unit /proc/text2duration(text = "00:00") // Attempts to convert time text back to time value var/split_text = splittext(text, ":") @@ -95,21 +91,21 @@ var/rollovercheck_last_timeofday = 0 return "right now" if(second < 60) return "[second] second[(second != 1)? "s":""]" - var/minute = FLOOR(second / 60, 1) + var/minute = Floor(second / 60) second = FLOOR(MODULUS(second, 60), round_seconds_to) var/secondT if(second) secondT = " and [second] second[(second != 1)? "s":""]" if(minute < 60) return "[minute] minute[(minute != 1)? "s":""][secondT]" - var/hour = FLOOR(minute / 60, 1) + var/hour = Floor(minute / 60) minute = MODULUS(minute, 60) var/minuteT if(minute) minuteT = " and [minute] minute[(minute != 1)? "s":""]" if(hour < 24) return "[hour] hour[(hour != 1)? "s":""][minuteT][secondT]" - var/day = FLOOR(hour / 24, 1) + var/day = Floor(hour / 24) hour = MODULUS(hour, 24) var/hourT if(hour) diff --git a/code/__HELPERS/animations.dm b/code/__HELPERS/animations.dm new file mode 100644 index 000000000000..f85fb763a4a6 --- /dev/null +++ b/code/__HELPERS/animations.dm @@ -0,0 +1,2 @@ +/// The duration of the animate call in mob/living/update_transform +#define UPDATE_TRANSFORM_ANIMATION_TIME (0.2 SECONDS) diff --git a/code/__HELPERS/chat.dm b/code/__HELPERS/chat.dm index f7382e151854..20d1a45b31cc 100644 --- a/code/__HELPERS/chat.dm +++ b/code/__HELPERS/chat.dm @@ -1,11 +1,12 @@ /** - * Sends a message to TGS chat channels. + * Asynchronously sends a message to TGS chat channels. * - * message - The message to send. + * message - The [/datum/tgs_message_content] to send. * channel_tag - Required. If "", the message with be sent to all connected (Game-type for TGS3) channels. Otherwise, it will be sent to TGS4 channels with that tag (Delimited by ','s). * admin_only - Determines if this communication can only be sent to admin only channels. */ -/proc/send2chat(message, channel_tag, admin_only = FALSE) +/proc/send2chat(datum/tgs_message_content/message, channel_tag, admin_only = FALSE) + set waitfor = FALSE if(channel_tag == null || !world.TgsAvailable()) return diff --git a/code/__HELPERS/cmp.dm b/code/__HELPERS/cmp.dm index 4ca0edcf43d0..31308ac5812f 100644 --- a/code/__HELPERS/cmp.dm +++ b/code/__HELPERS/cmp.dm @@ -16,12 +16,12 @@ /proc/cmp_name_dsc(atom/a, atom/b) return sorttext(a.name, b.name) -var/cmp_field = "name" +GLOBAL_LIST_INIT(cmp_field, "name") /proc/cmp_records_asc(datum/data/record/a, datum/data/record/b) - return sorttext((b ? b.fields[cmp_field] : ""), (a ? a.fields[cmp_field] : a)) + return sorttext((b ? b.fields[GLOB.cmp_field] : ""), (a ? a.fields[GLOB.cmp_field] : a)) /proc/cmp_records_dsc(datum/data/record/a, datum/data/record/b) - return sorttext(a.fields[cmp_field], b.fields[cmp_field]) + return sorttext(a.fields[GLOB.cmp_field], b.fields[GLOB.cmp_field]) /proc/cmp_ckey_asc(client/a, client/b) return sorttext(b.ckey, a.ckey) @@ -53,7 +53,15 @@ var/cmp_field = "name" if (!.) . = B.qdels - A.qdels -var/atom/cmp_dist_origin=null /proc/cmp_typepaths_asc(A, B) return sorttext("[B]","[A]") + +/// Compares mobs based on their timeofdeath value in ascending order +/proc/cmp_mob_deathtime_asc(mob/A, mob/B) + return A.timeofdeath - B.timeofdeath + +/// Compares observers based on their larva_queue_time value in ascending order +/// Assumes the client on the observer is not null +/proc/cmp_obs_larvaqueuetime_asc(mob/dead/observer/A, mob/dead/observer/B) + return A.client.player_details.larva_queue_time - B.client.player_details.larva_queue_time diff --git a/code/__HELPERS/files.dm b/code/__HELPERS/files.dm index 717a2ed5347b..54bb438cd167 100644 --- a/code/__HELPERS/files.dm +++ b/code/__HELPERS/files.dm @@ -12,11 +12,6 @@ return text -//Sends resource files to client cache -/client/proc/getFiles() - for(var/file in args) - src << browse_rsc(file) - /client/proc/browse_files(root="data/logs/", max_iterations=10, list/valid_extensions=list(".txt",".log",".htm")) var/path = root @@ -51,11 +46,11 @@ PLEASE USE RESPONSIBLY, Some log files canr each sizes of 4MB! */ /client/proc/file_spam_check() - var/time_to_wait = fileaccess_timer - world.time + var/time_to_wait = GLOB.fileaccess_timer - world.time if(time_to_wait > 0) to_chat(src, "Error: file_spam_check(): Spam. Please wait [round(time_to_wait/10)] seconds.") return 1 - fileaccess_timer = world.time + FTPDELAY + GLOB.fileaccess_timer = world.time + FTPDELAY return 0 #undef FTPDELAY diff --git a/code/__HELPERS/filters.dm b/code/__HELPERS/filters.dm index aa8d77c81d3a..29e3ec9efb1e 100644 --- a/code/__HELPERS/filters.dm +++ b/code/__HELPERS/filters.dm @@ -46,7 +46,7 @@ GLOBAL_LIST_INIT(master_filter_info, list( "y" = -1, "size" = 1, "offset" = 0, - "color" = COLOUR_HALF_TRANSPARENT_BLACK + "color" = COLOR_HALF_TRANSPARENT_BLACK ) ), "blur" = list( diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index a0bb9dd98423..8b11a3797627 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -52,9 +52,6 @@ turfs += T return turfs - -//var/debug_mob = 0 - // Will recursively loop through an atom's contents and check for mobs, then it will loop through every atom in that atom's contents. // It will keep doing this until it checks every content possible. This will fix any problems with mobs, that are inside objects, // being unable to hear people due to being in a box within a bag. @@ -154,16 +151,6 @@ var/list/speaker_coverage = list() for(var/obj/item/device/radio/R in radios) if(R) - //Cyborg checks. Receiving message uses a bit of cyborg's charge. - var/obj/item/device/radio/borg/BR = R - if(istype(BR) && BR.myborg) - var/mob/living/silicon/robot/borg = BR.myborg - var/datum/robot_component/CO = borg.get_component("radio") - if(!CO) - continue //No radio component (Shouldn't happen) - if(!borg.is_component_functioning("radio") || !borg.cell_use_power(CO.active_usage)) - continue //No power. - var/turf/speaker = get_turf(R) if(speaker) for(var/turf/T in hear(R.canhear_range,speaker)) @@ -241,35 +228,82 @@ else return get_step(start, EAST) -// Same as above but for alien candidates. -/proc/get_alien_candidates() +/** + * Get a list of observers that can be alien candidates. + * + * Arguments: + * * hive - The hive we're filling a slot for to check if the player is banished + * * sorted - Whether to sort by larva_queue_time (default TRUE) or leave unsorted + */ +/proc/get_alien_candidates(datum/hive_status/hive = null, sorted = TRUE) var/list/candidates = list() - for(var/i in GLOB.observer_list) - var/mob/dead/observer/O = i + for(var/mob/dead/observer/cur_obs as anything in GLOB.observer_list) + // Preference check + if(!cur_obs.client || !cur_obs.client.prefs || !(cur_obs.client.prefs.be_special & BE_ALIEN_AFTER_DEATH)) + continue + // Jobban check - if(!O.client || !O.client.prefs || !(O.client.prefs.be_special & BE_ALIEN_AFTER_DEATH) || jobban_isbanned(O, JOB_XENOMORPH)) + if(jobban_isbanned(cur_obs, JOB_XENOMORPH)) continue //players that can still be revived are skipped - if(O.mind && O.mind.original && ishuman(O.mind.original)) - var/mob/living/carbon/human/H = O.mind.original - if (H.check_tod() && H.is_revivable()) + if(cur_obs.mind && cur_obs.mind.original && ishuman(cur_obs.mind.original)) + var/mob/living/carbon/human/cur_human = cur_obs.mind.original + if(cur_human.check_tod() && cur_human.is_revivable()) continue // copied from join as xeno - var/deathtime = world.time - O.timeofdeath - if(deathtime < 3000 && ( !O.client.admin_holder || !(O.client.admin_holder.rights & R_ADMIN)) ) + var/deathtime = world.time - cur_obs.timeofdeath + if(deathtime < XENO_JOIN_DEAD_TIME && ( !cur_obs.client.admin_holder || !(cur_obs.client.admin_holder.rights & R_ADMIN)) && !cur_obs.bypass_time_of_death_checks) + continue + + // AFK players cannot be drafted + if(cur_obs.client.inactivity > XENO_JOIN_AFK_TIME_LIMIT) continue - // Admins and AFK players cannot be drafted - if(O.client.inactivity / 600 > ALIEN_SELECT_AFK_BUFFER + 5 || (O.client.admin_holder && (O.client.admin_holder.rights & R_MOD)) && O.adminlarva == 0) + // Mods with larva protection cannot be drafted + if((cur_obs.client.admin_holder && (cur_obs.client.admin_holder.rights & R_MOD)) && !cur_obs.adminlarva) continue - candidates += O + if(hive) + var/banished = FALSE + for(var/mob_name in hive.banished_ckeys) + if(hive.banished_ckeys[mob_name] == cur_obs.ckey) + banished = TRUE + break + if(banished) + continue + + candidates += cur_obs + + // Optionally sort by larva_queue_time + if(sorted && length(candidates)) + candidates = sort_list(candidates, GLOBAL_PROC_REF(cmp_obs_larvaqueuetime_asc)) + + GLOB.xeno_queue_candidate_count = length(candidates) return candidates +/** + * Messages observers that are currently candidates an update on the queue. + * + * Arguments: + * * candidates - The list of observers from get_alien_candidates() + * * dequeued - How many candidates to skip messaging because they were dequeued + * * cache_only - Whether to not actually send a to_chat message and instead only update larva_queue_cached_message + */ +/proc/message_alien_candidates(list/candidates, dequeued, cache_only = FALSE) + for(var/i in (1 + dequeued) to candidates.len) + var/mob/dead/observer/cur_obs = candidates[i] + + // Generate the messages + var/cached_message = "You are currently [i-dequeued]\th in the larva queue." + cur_obs.larva_queue_cached_message = cached_message + if(!cache_only) + var/chat_message = dequeued ? replacetext(cached_message, "currently", "now") : cached_message + to_chat(candidates[i], SPAN_XENONOTICE(chat_message)) + /proc/convert_k2c(temp) return ((temp - T0C)) diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 4c8e1fe31354..29755683165c 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -14,8 +14,7 @@ CHANGING ICONS Several new procs have been added to the /icon datum to simplify working with icons. To use them, remember you first need to setup an /icon var like so: - -var/icon/my_icon = new('iconfile.dmi') + var/icon/my_icon = new('iconfile.dmi') icon/ChangeOpacity(amount = 1) A very common operation in DM is to try to make an icon more or less transparent. Making an icon more @@ -323,176 +322,149 @@ world . = list(r, g, b) if(usealpha) . += alpha - - /// Create a single [/icon] from a given [/atom] or [/image]. /// /// Very low-performance. Should usually only be used for HTML, where BYOND's /// appearance system (overlays/underlays, etc.) is not available. /// /// Only the first argument is required. -/proc/getFlatIcon(image/A, defdir, deficon, defstate, defblend, start = TRUE, no_anim = FALSE) - //Define... defines. +/// appearance_flags indicates whether appearance_flags should be respected (at the cost of about 10-20% perf) +/proc/getFlatIcon(image/appearance, defdir, deficon, defstate, defblend, start = TRUE, no_anim = FALSE, appearance_flags = FALSE) + // Loop through the underlays, then overlays, sorting them into the layers list + #define PROCESS_OVERLAYS_OR_UNDERLAYS(flat, process, base_layer) \ + for (var/i in 1 to process.len) { \ + var/image/current = process[i]; \ + if (!current) { \ + continue; \ + } \ + if (current.plane != FLOAT_PLANE && current.plane != appearance.plane) { \ + continue; \ + } \ + var/current_layer = current.layer; \ + if (current_layer < 0) { \ + if (current_layer <= -1000) { \ + return flat; \ + } \ + current_layer = base_layer + appearance.layer + current_layer / 1000; \ + } \ + for (var/index_to_compare_to in 1 to layers.len) { \ + var/compare_to = layers[index_to_compare_to]; \ + if (current_layer < layers[compare_to]) { \ + layers.Insert(index_to_compare_to, current); \ + break; \ + } \ + } \ + layers[current] = current_layer; \ + } + var/static/icon/flat_template = icon('icons/effects/effects.dmi', "nothing") - #define BLANK icon(flat_template) - #define GENERATE_FLAT_IMAGE_ICON(ICON_VAR, IMG_SOURCE, icon_to_use, icon_state_to_use, dir_to_use)\ - var/icon/SELF_ICON=icon(icon(icon_to_use, icon_state_to_use, dir_to_use), "", SOUTH, no_anim ? 1 : null);\ - if(##IMG_SOURCE.alpha < 255)\ - SELF_ICON.Blend(rgb(255, 255, 255, ##IMG_SOURCE.alpha), ICON_MULTIPLY);\ - if(##IMG_SOURCE.color) {\ - if(islist(##IMG_SOURCE.color))\ - SELF_ICON.MapColors(arglist(##IMG_SOURCE.color));\ - else\ - SELF_ICON.Blend(##IMG_SOURCE.color, ICON_MULTIPLY);\ - }\ - ##ICON_VAR = SELF_ICON; - #define INDEX_X_LOW 1 - #define INDEX_X_HIGH 2 - #define INDEX_Y_LOW 3 - #define INDEX_Y_HIGH 4 - - #define flatX1 flat_size[INDEX_X_LOW] - #define flatX2 flat_size[INDEX_X_HIGH] - #define flatY1 flat_size[INDEX_Y_LOW] - #define flatY2 flat_size[INDEX_Y_HIGH] - #define addX1 add_size[INDEX_X_LOW] - #define addX2 add_size[INDEX_X_HIGH] - #define addY1 add_size[INDEX_Y_LOW] - #define addY2 add_size[INDEX_Y_HIGH] - - #define PROCESS_SET_UNDERLAYS 0 - #define PROCESS_SET_VIS_CONTENTS 1 - #define PROCESS_SET_OVERLAYS 2 - - if(!A || A.alpha <= 0) - return BLANK - - var/noIcon = FALSE + if(!appearance || appearance.alpha <= 0) + return icon(flat_template) + if(start) if(!defdir) - defdir = A.dir + defdir = appearance.dir if(!deficon) - deficon = A.icon + deficon = appearance.icon if(!defstate) - defstate = A.icon_state + defstate = appearance.icon_state if(!defblend) - defblend = A.blend_mode + defblend = appearance.blend_mode - var/curicon = A.icon || deficon - var/curstate = A.icon_state || defstate + var/curicon = appearance.icon || deficon + var/curstate = appearance.icon_state || defstate + var/curdir = (!appearance.dir || appearance.dir == SOUTH) ? defdir : appearance.dir - if(!(noIcon = (!curicon))) + var/render_icon = curicon + + if (render_icon) var/curstates = icon_states(curicon) if(!(curstate in curstates)) - if("" in curstates) + if ("" in curstates) curstate = "" else - noIcon = TRUE // Do not render this object. + render_icon = FALSE - var/curdir var/base_icon_dir //We'll use this to get the icon state to display if not null BUT NOT pass it to overlays as the dir we have - //These should use the parent's direction (most likely) - if(!A.dir || A.dir == SOUTH) - curdir = defdir - else - curdir = A.dir - //Try to remove/optimize this section ASAP, CPU hog. //Determines if there's directionals. - if(!noIcon && curdir != SOUTH) - var/exist = FALSE - var/static/list/checkdirs = list(NORTH, EAST, WEST) - for(var/i in checkdirs) //Not using GLOB for a reason. - if(length(icon_states(icon(curicon, curstate, i)))) - exist = TRUE - break - if(!exist) + if(render_icon && curdir != SOUTH) + if ( + !length(icon_states(icon(curicon, curstate, NORTH))) \ + && !length(icon_states(icon(curicon, curstate, EAST))) \ + && !length(icon_states(icon(curicon, curstate, WEST))) \ + ) base_icon_dir = SOUTH if(!base_icon_dir) base_icon_dir = curdir - ASSERT(!BLEND_DEFAULT) //I might just be stupid but lets make sure this define is 0. - - var/curblend = A.blend_mode || defblend + var/curblend = appearance.blend_mode || defblend - var/atom/movable/AM = A - if(length(A.overlays) || length(A.underlays) || (istype(AM) && AM.vis_contents)) - var/icon/flat = BLANK + if(appearance.overlays.len || appearance.underlays.len) + var/icon/flat = icon(flat_template) // Layers will be a sorted list of icons/overlays, based on the order in which they are displayed var/list/layers = list() var/image/copy // Add the atom's icon itself, without pixel_x/y offsets. - if(!noIcon) - copy = image(icon=curicon, icon_state=curstate, layer=A.layer, dir=base_icon_dir) - copy.color = A.color - copy.alpha = A.alpha + if(render_icon) + copy = image(icon=curicon, icon_state=curstate, layer=appearance.layer, dir=base_icon_dir) + copy.color = appearance.color + copy.alpha = appearance.alpha copy.blend_mode = curblend - layers[copy] = A.layer - - // Loop through the underlays, then vis_contents, then overlays, sorting them into the layers list - for(var/process_set in PROCESS_SET_UNDERLAYS to PROCESS_SET_OVERLAYS) - var/list/process - switch(process_set) - if(PROCESS_SET_UNDERLAYS) - process = A.underlays - if(PROCESS_SET_VIS_CONTENTS) - if(!istype(AM)) - continue - process = A.vis_contents - else // PROCESS_SET_OVERLAYS - process = A.overlays - for(var/i in 1 to process.len) - var/image/current = process[i] - if(!current) - continue - if(process_set == PROCESS_SET_VIS_CONTENTS && !istype(current)) - current = image(icon = current.icon, icon_state = current.icon_state, layer = current.layer, dir = current.dir) - var/current_layer = current.layer - if(current_layer < 0) - if(current_layer <= -1000) - return flat - current_layer = A.layer + ((process_set ? 1000 : 0)+current_layer) / 1000 - - for(var/p in 1 to layers.len) - var/image/cmp = layers[p] - if(current_layer < layers[cmp]) - layers.Insert(p, current) - break - layers[current] = current_layer + layers[copy] = appearance.layer + + PROCESS_OVERLAYS_OR_UNDERLAYS(flat, appearance.underlays, 0) + PROCESS_OVERLAYS_OR_UNDERLAYS(flat, appearance.overlays, 1) var/icon/add // Icon of overlay being added - // Current dimensions of flattened icon - var/list/flat_size = list(1, flat.Width(), 1, flat.Height()) - // Dimensions of overlay being added - var/list/add_size[4] + var/flatX1 = 1 + var/flatX2 = flat.Width() + var/flatY1 = 1 + var/flatY2 = flat.Height() + + var/addX1 = 0 + var/addX2 = 0 + var/addY1 = 0 + var/addY2 = 0 - for(var/V in layers) - var/image/I = V - if(I.alpha == 0) + for(var/image/layer_image as anything in layers) + if(layer_image.alpha == 0) continue - if(I == copy) // 'I' is an /image based on the object being flattened. + // variables only relevant when accounting for appearance_flags: + var/apply_color = TRUE + var/apply_alpha = TRUE + + if(layer_image == copy) // 'layer_image' is an /image based on the object being flattened. curblend = BLEND_OVERLAY - add = icon(I.icon, I.icon_state, base_icon_dir) - else // 'I' is an /image - var/image_has_icon = I.icon - if(image_has_icon) - GENERATE_FLAT_IMAGE_ICON(add, I, I.icon, I.icon_state, base_icon_dir) + add = icon(layer_image.icon, layer_image.icon_state, base_icon_dir) + else // 'I' is an appearance object. + var/image/layer_as_image = image(layer_image) + if(appearance_flags) + if(layer_as_image.appearance_flags & RESET_COLOR) + apply_color = FALSE + if(layer_as_image.appearance_flags & RESET_ALPHA) + apply_alpha = FALSE + add = getFlatIcon(layer_as_image, curdir, curicon, curstate, curblend, FALSE, no_anim, appearance_flags) if(!add) continue + // Find the new dimensions of the flat icon to fit the added overlay - add_size = list( - min(flatX1, I.pixel_x+1), - max(flatX2, I.pixel_x+add.Width()), - min(flatY1, I.pixel_y+1), - max(flatY2, I.pixel_y+add.Height()) + addX1 = min(flatX1, layer_image.pixel_x + 1) + addX2 = max(flatX2, layer_image.pixel_x + add.Width()) + addY1 = min(flatY1, layer_image.pixel_y + 1) + addY2 = max(flatY2, layer_image.pixel_y + add.Height()) + + if ( + addX1 != flatX1 \ + || addX2 != flatX2 \ + || addY1 != flatY1 \ + || addY2 != flatY2 \ ) - - if(flat_size ~! add_size) // Resize the flattened icon so the new icon fits flat.Crop( addX1 - flatX1 + 1, @@ -500,48 +472,59 @@ world addX2 - flatX1 + 1, addY2 - flatY1 + 1 ) - flat_size = add_size.Copy() + + flatX1 = addX1 + flatX2 = addX2 + flatY1 = addY1 + flatY2 = addY2 + + if(appearance_flags) + // apply parent's color/alpha to the added layers if the layer didn't opt + if(apply_color && appearance.color) + if(islist(appearance.color)) + add.MapColors(arglist(appearance.color)) + else + add.Blend(appearance.color, ICON_MULTIPLY) + + if(apply_alpha && appearance.alpha < 255) + add.Blend(rgb(255, 255, 255, appearance.alpha), ICON_MULTIPLY) // Blend the overlay into the flattened icon - flat.Blend(add, blendMode2iconMode(curblend), I.pixel_x + 2 - flatX1, I.pixel_y + 2 - flatY1) + flat.Blend(add, blendMode2iconMode(curblend), layer_image.pixel_x + 2 - flatX1, layer_image.pixel_y + 2 - flatY1) - if(A.color) - if(islist(A.color)) - flat.MapColors(arglist(A.color)) - else - flat.Blend(A.color, ICON_MULTIPLY) + if(!appearance_flags) + // If we didn't apply parent colors individually per layer respecting appearance_flags, then do it just the one time now + if(appearance.color) + if(islist(appearance.color)) + flat.MapColors(arglist(appearance.color)) + else + flat.Blend(appearance.color, ICON_MULTIPLY) - if(A.alpha < 255) - flat.Blend(rgb(255, 255, 255, A.alpha), ICON_MULTIPLY) + if(appearance.alpha < 255) + flat.Blend(rgb(255, 255, 255, appearance.alpha), ICON_MULTIPLY) if(no_anim) //Clean up repeated frames var/icon/cleaned = new /icon() cleaned.Insert(flat, "", SOUTH, 1, 0) - . = cleaned + return cleaned else - . = icon(flat, "", SOUTH) - else //There's no overlays. - if(!noIcon) - GENERATE_FLAT_IMAGE_ICON(., A, curicon, curstate, base_icon_dir) - - //Clear defines - #undef flatX1 - #undef flatX2 - #undef flatY1 - #undef flatY2 - #undef addX1 - #undef addX2 - #undef addY1 - #undef addY2 - - #undef INDEX_X_LOW - #undef INDEX_X_HIGH - #undef INDEX_Y_LOW - #undef INDEX_Y_HIGH - - #undef GENERATE_FLAT_IMAGE_ICON - #undef BLANK + return icon(flat, "", SOUTH) + else if (render_icon) // There's no overlays. + var/icon/final_icon = icon(icon(curicon, curstate, base_icon_dir), "", SOUTH, no_anim ? TRUE : null) + + if (appearance.alpha < 255) + final_icon.Blend(rgb(255,255,255, appearance.alpha), ICON_MULTIPLY) + + if (appearance.color) + if (islist(appearance.color)) + final_icon.MapColors(arglist(appearance.color)) + else + final_icon.Blend(appearance.color, ICON_MULTIPLY) + + return final_icon + + #undef PROCESS_OVERLAYS_OR_UNDERLAYS /proc/getIconMask(atom/A)//By yours truly. Creates a dynamic mask for a mob/whatever. /N var/icon/alpha_mask = new(A.icon,A.icon_state)//So we want the default icon and icon state of A. @@ -565,9 +548,9 @@ world if (!value) return color var/list/RGB = ReadRGB(color) - RGB[1] = Clamp(RGB[1]+value,0,255) - RGB[2] = Clamp(RGB[2]+value,0,255) - RGB[3] = Clamp(RGB[3]+value,0,255) + RGB[1] = clamp(RGB[1]+value,0,255) + RGB[2] = clamp(RGB[2]+value,0,255) + RGB[3] = clamp(RGB[3]+value,0,255) return rgb(RGB[1],RGB[2],RGB[3]) /proc/sort_atoms_by_layer(list/atoms) @@ -611,12 +594,101 @@ world I.color = color I.flick_overlay(src, time) -/proc/icon2html(thing, target, icon_state, dir = SOUTH, frame = 1, moving = FALSE, sourceonly = FALSE) +/// generates a filename for a given asset. +/// like generate_asset_name(), except returns the rsc reference and the rsc file hash as well as the asset name (sans extension) +/// used so that certain asset files dont have to be hashed twice +/proc/generate_and_hash_rsc_file(file, dmi_file_path) + var/rsc_ref = fcopy_rsc(file) + var/hash + //if we have a valid dmi file path we can trust md5'ing the rsc file because we know it doesnt have the bug described in http://www.byond.com/forum/post/2611357 + if(dmi_file_path) + hash = md5(rsc_ref) + else //otherwise, we need to do the expensive fcopy() workaround + hash = md5asfile(rsc_ref) + + return list(rsc_ref, hash, "asset.[hash]") + +///given a text string, returns whether it is a valid dmi icons folder path +/proc/is_valid_dmi_file(icon_path) + if(!istext(icon_path) || !length(icon_path)) + return FALSE + + var/is_in_icon_folder = findtextEx(icon_path, "icons/") + var/is_dmi_file = findtextEx(icon_path, ".dmi") + + if(is_in_icon_folder && is_dmi_file) + return TRUE + return FALSE + +/// given an icon object, dmi file path, or atom/image/mutable_appearance, attempts to find and return an associated dmi file path. +/// a weird quirk about dm is that /icon objects represent both compile-time or dynamic icons in the rsc, +/// but stringifying rsc references returns a dmi file path +/// ONLY if that icon represents a completely unchanged dmi file from when the game was compiled. +/// so if the given object is associated with an icon that was in the rsc when the game was compiled, this returns a path. otherwise it returns "" +/proc/get_icon_dmi_path(icon/icon) + /// the dmi file path we attempt to return if the given object argument is associated with a stringifiable icon + /// if successful, this looks like "icons/path/to/dmi_file.dmi" + var/icon_path = "" + + if(isatom(icon) || istype(icon, /image) || istype(icon, /mutable_appearance)) + var/atom/atom_icon = icon + icon = atom_icon.icon + //atom icons compiled in from 'icons/path/to/dmi_file.dmi' are weird and not really icon objects that you generate with icon(). + //if theyre unchanged dmi's then they're stringifiable to "icons/path/to/dmi_file.dmi" + + if(isicon(icon) && isfile(icon)) + //icons compiled in from 'icons/path/to/dmi_file.dmi' at compile time are weird and arent really /icon objects, + ///but they pass both isicon() and isfile() checks. theyre the easiest case since stringifying them gives us the path we want + var/icon_ref = text_ref(icon) + var/locate_icon_string = "[locate(icon_ref)]" + + icon_path = locate_icon_string + + else if(isicon(icon) && "[icon]" == "/icon") + // icon objects generated from icon() at runtime are icons, but they ARENT files themselves, they represent icon files. + // if the files they represent are compile time dmi files in the rsc, then + // the rsc reference returned by fcopy_rsc() will be stringifiable to "icons/path/to/dmi_file.dmi" + var/rsc_ref = fcopy_rsc(icon) + + var/icon_ref = text_ref(rsc_ref) + + var/icon_path_string = "[locate(icon_ref)]" + + icon_path = icon_path_string + + else if(istext(icon)) + var/rsc_ref = fcopy_rsc(icon) + //if its the text path of an existing dmi file, the rsc reference returned by fcopy_rsc() will be stringifiable to a dmi path + + var/rsc_ref_ref = text_ref(rsc_ref) + var/rsc_ref_string = "[locate(rsc_ref_ref)]" + + icon_path = rsc_ref_string + + if(is_valid_dmi_file(icon_path)) + return icon_path + + return FALSE + +/** + * generate an asset for the given icon or the icon of the given appearance for [thing], and send it to any clients in target. + * Arguments: + * * thing - either a /icon object, or an object that has an appearance (atom, image, mutable_appearance). + * * target - either a reference to or a list of references to /client's or mobs with clients + * * icon_state - string to force a particular icon_state for the icon to be used + * * dir - dir number to force a particular direction for the icon to be used + * * frame - what frame of the icon_state's animation for the icon being used + * * moving - whether or not to use a moving state for the given icon + * * sourceonly - if TRUE, only generate the asset and send back the asset url, instead of tags that display the icon to players + * * extra_clases - string of extra css classes to use when returning the icon string + * * keyonly - if TRUE, only returns the asset key to use get_asset_url manually. Overrides sourceonly. + */ +/proc/icon2html(atom/thing, client/target, icon_state, dir = SOUTH, frame = 1, moving = FALSE, sourceonly = FALSE, extra_classes = null, keyonly = FALSE) if (!thing) return var/key - var/icon/I = thing + var/icon/icon2collapse = thing if (!target) return @@ -628,46 +700,69 @@ world targets = list(target) else targets = target - if (!targets.len) - return - if (!isicon(I)) + if(!length(targets)) + return + + //check if the given object is associated with a dmi file in the icons folder. if it is then we dont need to do a lot of work + //for asset generation to get around byond limitations + var/icon_path = get_icon_dmi_path(thing) + + if (!isicon(icon2collapse)) if (isfile(thing)) //special snowflake - var/name = sanitize_filename("[generate_asset_name(thing)].png") + var/name = SANITIZE_FILENAME("[generate_asset_name(thing)].png") if (!SSassets.cache[name]) SSassets.transport.register_asset(name, thing) for (var/thing2 in targets) SSassets.transport.send_assets(thing2, name) + if(keyonly) + return name if(sourceonly) return SSassets.transport.get_asset_url(name) - return "" - var/atom/A = thing + return "" + + //its either an atom, image, or mutable_appearance, we want its icon var + icon2collapse = thing.icon - I = A.icon if (isnull(icon_state)) - icon_state = A.icon_state - if (!icon_state) - icon_state = initial(A.icon_state) + icon_state = thing.icon_state + //Despite casting to atom, this code path supports mutable appearances, so let's be nice to them + if(isnull(icon_state) || (isatom(thing) && thing.flags_atom & HTML_USE_INITAL_ICON)) + icon_state = initial(thing.icon_state) if (isnull(dir)) - dir = initial(A.dir) + dir = initial(thing.dir) if (isnull(dir)) - dir = A.dir + dir = thing.dir + + // Commented out because this is seemingly our source of bad icon operations + /* if (ishuman(thing)) // Shitty workaround for a BYOND issue. + var/icon/temp = icon2collapse + icon2collapse = icon() + icon2collapse.Insert(temp, dir = SOUTH) + dir = SOUTH*/ else if (isnull(dir)) dir = SOUTH if (isnull(icon_state)) icon_state = "" - I = icon(I, icon_state, dir, frame, moving) + icon2collapse = icon(icon2collapse, icon_state, dir, frame, moving) + + var/list/name_and_ref = generate_and_hash_rsc_file(icon2collapse, icon_path)//pretend that tuples exist + + var/rsc_ref = name_and_ref[1] //weird object thats not even readable to the debugger, represents a reference to the icons rsc entry + var/file_hash = name_and_ref[2] + key = "[name_and_ref[3]].png" - key = "[generate_asset_name(I)].png" if(!SSassets.cache[key]) - SSassets.transport.register_asset(key, I) - for (var/thing2 in targets) - SSassets.transport.send_assets(thing2, key) + SSassets.transport.register_asset(key, rsc_ref, file_hash, icon_path) + for (var/client_target in targets) + SSassets.transport.send_assets(client_target, key) + if(keyonly) + return key if(sourceonly) return SSassets.transport.get_asset_url(key) - return "" + return "" //Costlier version of icon2html() that uses getFlatIcon() to account for overlays, underlays, etc. Use with extreme moderation, ESPECIALLY on mobs. /proc/costly_icon2html(thing, target, sourceonly = FALSE) @@ -786,22 +881,93 @@ world return image_to_center //For creating consistent icons for human looking simple animals -/proc/get_flat_human_icon(icon_id, datum/equipment_preset/preset, datum/preferences/prefs, dummy_key, showDirs = GLOB.cardinals, outfit_override) +/proc/get_flat_human_icon(icon_id, equipment_preset_dresscode, datum/preferences/prefs, dummy_key, showDirs = GLOB.cardinals, outfit_override) var/static/list/humanoid_icon_cache = list() if(!icon_id || !humanoid_icon_cache[icon_id]) var/mob/living/carbon/human/dummy/body = generate_or_wait_for_human_dummy(dummy_key) + if(prefs) prefs.copy_all_to(body) - arm_equipment(body, preset) + body.update_body() + body.update_hair() + + // Assumption: Is a list + if(outfit_override) + for(var/obj/item/cur_item as anything in outfit_override) + body.equip_to_appropriate_slot(cur_item) + + // Assumption: Is a string or path + if(equipment_preset_dresscode) + arm_equipment(body, equipment_preset_dresscode) var/icon/out_icon = icon('icons/effects/effects.dmi', "nothing") - for(var/D in showDirs) - body.setDir(D) + for(var/dir in showDirs) + body.setDir(dir) var/icon/partial = getFlatIcon(body) - out_icon.Insert(partial, dir = D) + out_icon.Insert(partial, dir = dir) humanoid_icon_cache[icon_id] = out_icon dummy_key ? unset_busy_human_dummy(dummy_key) : qdel(body) return out_icon else return humanoid_icon_cache[icon_id] + +/proc/get_flat_human_copy_icon(mob/living/carbon/human/original, equipment_preset_dresscode, showDirs = GLOB.cardinals, outfit_override) + var/mob/living/carbon/human/dummy/body = generate_or_wait_for_human_dummy(null) + + if(original) + // From /datum/preferences/proc/copy_appearance_to + body.age = original.age + body.gender = original.gender + body.ethnicity = original.ethnicity + body.body_type = original.body_type + + body.r_eyes = original.r_eyes + body.g_eyes = original.g_eyes + body.b_eyes = original.b_eyes + + body.r_hair = original.r_hair + body.g_hair = original.g_hair + body.b_hair = original.b_hair + + body.r_gradient = original.r_gradient + body.g_gradient = original.g_gradient + body.b_gradient = original.b_gradient + body.grad_style = original.grad_style + + body.r_facial = original.r_facial + body.g_facial = original.g_facial + body.b_facial = original.b_facial + + body.r_skin = original.r_skin + body.g_skin = original.g_skin + body.b_skin = original.b_skin + + body.h_style = original.h_style + body.f_style = original.f_style + + body.underwear = original.underwear + body.undershirt = original.undershirt + + body.update_body() + body.update_hair() + + // Assumption: Is a list + if(outfit_override) + for(var/obj/item/cur_item as anything in outfit_override) + body.equip_to_appropriate_slot(cur_item) + + // Assumption: Is a string or path + if(equipment_preset_dresscode) + arm_equipment(body, equipment_preset_dresscode) + + var/icon/out_icon = icon('icons/effects/effects.dmi', "nothing") + for(var/dir in showDirs) + body.setDir(dir) + var/icon/partial = getFlatIcon(body) + out_icon.Insert(partial, dir = dir) + + // log_debug("get_flat_human_copy_icon called on ref=[REF(original)], instance=[original], type=[original.type], with [length(original.overlays)] overlays reduced to [length(body.overlays)] overlays") + + qdel(body) + return out_icon diff --git a/code/__HELPERS/job.dm b/code/__HELPERS/job.dm index 43902b07cfd9..220236c6f7e3 100644 --- a/code/__HELPERS/job.dm +++ b/code/__HELPERS/job.dm @@ -14,39 +14,10 @@ all_jobs += new jobtype return all_jobs - /proc/get_all_centcom_jobs() return list() -//gets the actual job rank (ignoring alt titles) -//this is used solely for sechuds -/obj/proc/GetJobRealName() - if (!istype(src,/obj/item/card/id)) return - var/obj/item/card/id/I = src - if(I.rank in GLOB.joblist) return I.rank - if(I.assignment in GLOB.joblist) return I.assignment - return "Unknown" - -/proc/FindNameFromID(mob/living/carbon/human/H) - ASSERT(istype(H)) - var/obj/item/card/id/I = H.wear_id - if(istype(I)) return I.registered_name - I = H.get_active_hand() - if(istype(I)) return I.registered_name - /proc/get_all_job_icons() return GLOB.joblist + list("Prisoner")//For all existing HUD icons -/obj/proc/GetJobName() //Used in secHUD icon generation - var/obj/item/card/id/I = src - if(istype(I)) - var/job_icons = get_all_job_icons() - var/centcom = get_all_centcom_jobs() - - if(I.assignment in job_icons) return I.assignment//Check if the job has a hud icon - if(I.rank in job_icons) return I.rank - if(I.assignment in centcom) return "Centcom"//Return with the NT logo if it is a Centcom job - if(I.rank in centcom) return "Centcom" - return "Unknown" //Return unknown if none of the above apply - /proc/get_actual_job_name(mob/M) if(!M) return null diff --git a/code/__HELPERS/level_traits.dm b/code/__HELPERS/level_traits.dm index 01a972485fa2..8b3d1b0a3809 100644 --- a/code/__HELPERS/level_traits.dm +++ b/code/__HELPERS/level_traits.dm @@ -1,4 +1,3 @@ - #define is_admin_level(z) SSmapping.level_trait(z, ZTRAIT_ADMIN) #define is_ground_level(z) SSmapping.level_trait(z, ZTRAIT_GROUND) diff --git a/code/__HELPERS/lighting.dm b/code/__HELPERS/lighting.dm new file mode 100644 index 000000000000..08c360849b58 --- /dev/null +++ b/code/__HELPERS/lighting.dm @@ -0,0 +1,11 @@ +/// Produces a mutable appearance glued to the [EMISSIVE_PLANE] dyed to be the [EMISSIVE_COLOR]. +/proc/emissive_appearance(icon, icon_state = "", layer = FLOAT_LAYER, alpha = 255, appearance_flags = NONE) + var/mutable_appearance/appearance = mutable_appearance(icon, icon_state, layer, EMISSIVE_PLANE, alpha, appearance_flags | EMISSIVE_APPEARANCE_FLAGS) + appearance.color = GLOB.emissive_color + return appearance + +/// Produces a mutable appearance glued to the [EMISSIVE_PLANE] dyed to be the [EM_BLOCK_COLOR]. +/proc/emissive_blocker(icon, icon_state = "", layer = FLOAT_LAYER, alpha = 255, appearance_flags = NONE) + var/mutable_appearance/appearance = mutable_appearance(icon, icon_state, layer, EMISSIVE_PLANE, alpha, appearance_flags | EMISSIVE_APPEARANCE_FLAGS) + appearance.color = GLOB.em_block_color + return appearance diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index 830e612712e2..30ef9428586d 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -391,6 +391,19 @@ original += result return original +/// Returns a list of atoms sorted by each entry's distance to `target`. +/proc/sort_list_dist(list/atom/list_to_sort, atom/target) + var/list/distances = list() + for(var/atom/A as anything in list_to_sort) + // Just in case this happens anyway. + if(!istype(A)) + stack_trace("sort_list_dist() was called with a list containing a non-atom object. ([A.type])") + return list_to_sort + + distances[A] = get_dist_sqrd(A, target) + + return sortTim(distances, GLOBAL_PROC_REF(cmp_numeric_asc), TRUE) + //Converts a bitfield to a list of numbers (or words if a wordlist is provided) /proc/bitfield2list(bitfield = 0, list/wordlist) var/list/r = list() diff --git a/code/__HELPERS/logging.dm b/code/__HELPERS/logging.dm index 32da4c953188..c20db3da303f 100644 --- a/code/__HELPERS/logging.dm +++ b/code/__HELPERS/logging.dm @@ -35,27 +35,27 @@ // will get logs that are one big line if the system is Linux and they are using notepad. This solves it by adding CR to every line ending // in the logs. ascii character 13 = CR -/var/global/log_end= world.system_type == UNIX ? ascii2text(13) : "" +GLOBAL_VAR_INIT(log_end, world.system_type == UNIX ? ascii2text(13) : "") /proc/error(msg) - world.log << "## ERROR: [msg][log_end]" + world.log << "## ERROR: [msg][GLOB.log_end]" GLOB.STUI.debug.Add("\[[time_stamp()]]DEBUG: [msg]") GLOB.STUI.processing |= STUI_LOG_DEBUG #define WARNING(MSG) warning("[MSG] in [__FILE__] at line [__LINE__] src: [src] usr: [usr].") //print a warning message to world.log /proc/warning(msg) - world.log << "## WARNING: [msg][log_end]" + world.log << "## WARNING: [msg][GLOB.log_end]" GLOB.STUI.debug.Add("\[[time_stamp()]]WARNING: [msg]") GLOB.STUI.processing |= STUI_LOG_DEBUG //print a testing-mode debug message to world.log /proc/testing(msg) - world.log << "## TESTING: [msg][log_end]" + world.log << "## TESTING: [msg][GLOB.log_end]" GLOB.STUI.debug.Add("\[[time_stamp()]]TESTING: [msg]") GLOB.STUI.processing |= STUI_LOG_DEBUG /proc/log_admin(text) var/time = time_stamp() - admin_log.Add(text) + GLOB.admin_log.Add(text) if (CONFIG_GET(flag/log_admin)) WRITE_LOG(GLOB.world_game_log, "ADMIN: [text]") LOG_REDIS("admin", "\[[time]\] [text]") @@ -63,14 +63,14 @@ GLOB.STUI.processing |= STUI_LOG_ADMIN /proc/log_asset(text) - asset_log.Add(text) + GLOB.asset_log.Add(text) if (CONFIG_GET(flag/log_asset)) var/time = time_stamp() WRITE_LOG(GLOB.world_game_log, "ASSET: [text]") LOG_REDIS("asset", "\[[time]\] [text]") /proc/log_adminpm(text) - admin_log.Add(text) + GLOB.admin_log.Add(text) if (CONFIG_GET(flag/log_admin)) WRITE_LOG(GLOB.world_game_log, "ADMIN: [text]") GLOB.STUI.staff.Add("\[[time_stamp()]]ADMIN: [text]") @@ -108,8 +108,10 @@ if (CONFIG_GET(flag/log_interact)) WRITE_LOG(GLOB.world_game_log, "INTERACT: [msg]") LOG_REDIS("interact", "\[[time]\] [msg]") - origin.attack_log += "\[[time]\] [msg] " - target.attack_log += "\[[time]\] [msg] " + if(origin) + origin.attack_log += "\[[time]\] [msg] " + if(target) + target.attack_log += "\[[time]\] [msg] " GLOB.STUI.attack.Add("\[[time]]INTERACT: [msg]") GLOB.STUI.processing |= STUI_LOG_ATTACK diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 9aa1bdc3ea2f..663d72fd5079 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -51,8 +51,10 @@ return f_style /proc/random_name(gender, species = "Human") - if(gender==FEMALE) return capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names)) - else return capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names)) + if(gender==FEMALE) + return capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names)) + else + return capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names)) /proc/has_species(mob/M, species) if(!M || !istype(M,/mob/living/carbon/human)) @@ -71,6 +73,7 @@ /mob/proc/change_real_name(mob/M, new_name) if(!new_name) return FALSE + var/old_name = M.real_name M.real_name = new_name M.name = new_name @@ -81,6 +84,7 @@ // If we are humans, we need to update our voice as well M.change_mob_voice(new_name) + SEND_SIGNAL(src, COMSIG_MOB_REAL_NAME_CHANGED, old_name, new_name) return TRUE /mob/proc/change_mind_name(new_mind_name) diff --git a/code/__HELPERS/sorts/TimSort.dm b/code/__HELPERS/sorts/TimSort.dm index cfa55f0dfa3c..ae83bd9b0682 100644 --- a/code/__HELPERS/sorts/TimSort.dm +++ b/code/__HELPERS/sorts/TimSort.dm @@ -8,10 +8,14 @@ if(toIndex <= 0) toIndex += L.len + 1 - sortInstance.L = L - sortInstance.cmp = cmp - sortInstance.associative = associative + var/datum/sortInstance/sort_instance = GLOB.sortInstance + if(!sort_instance) + sort_instance = new() - sortInstance.timSort(fromIndex, toIndex) + sort_instance.L = L + sort_instance.cmp = cmp + sort_instance.associative = associative + + sort_instance.timSort(fromIndex, toIndex) return L diff --git a/code/__HELPERS/sorts/_Main.dm b/code/__HELPERS/sorts/_Main.dm index 7bc906be7e63..55af258b81d2 100644 --- a/code/__HELPERS/sorts/_Main.dm +++ b/code/__HELPERS/sorts/_Main.dm @@ -8,8 +8,8 @@ //When we get into galloping mode, we stay there until both runs win less often than MIN_GALLOP consecutive times. #define MIN_GALLOP 7 - //This is a global instance to allow much of this code to be reused. The interfaces are kept separately -var/datum/sortInstance/sortInstance = new() +//This is a global instance to allow much of this code to be reused. The interfaces are kept separately +GLOBAL_DATUM_INIT(sortInstance, /datum/sortInstance, new()) /datum/sortInstance //The array being sorted. var/list/L @@ -393,7 +393,7 @@ var/datum/sortInstance/sortInstance = new() var/count1 = 0 //# of times in a row that first run won var/count2 = 0 // " " " " " " second run won - //do the straightfoward thin until one run starts winning consistently + //do the straightforward thin until one run starts winning consistently do //ASSERT(len1 > 1 && len2 > 0) @@ -493,7 +493,7 @@ var/datum/sortInstance/sortInstance = new() var/count1 = 0 //# of times in a row that first run won var/count2 = 0 // " " " " " " second run won - //do the straightfoward thing until one run starts winning consistently + //do the straightforward thing until one run starts winning consistently do //ASSERT(len1 > 0 && len2 > 1) if(call(cmp)(fetchElement(L,cursor2), fetchElement(L,cursor1)) < 0) diff --git a/code/__HELPERS/status_effects.dm b/code/__HELPERS/status_effects.dm new file mode 100644 index 000000000000..d06cb687f6a5 --- /dev/null +++ b/code/__HELPERS/status_effects.dm @@ -0,0 +1 @@ +#define TRAIT_STATUS_EFFECT(effect_id) "[effect_id]-trait" diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 83da41b515a6..967967790b28 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -30,6 +30,11 @@ text = replacetext(text, char, repl_chars[char]) return text +///Helper for only alphanumeric characters plus common punctuation, spaces, underscore and hyphen _ -. +/proc/replace_non_alphanumeric_plus(text) + var/regex/alphanumeric = regex(@{"[^a-z0-9 ,.?!\-_&]"}, "gi") + return alphanumeric.Replace(text, "") + /proc/readd_quotes(text) var/list/repl_chars = list(""" = "\"", "'" = "'") for(var/char in repl_chars) @@ -164,6 +169,11 @@ t = "0[t]" return t +/proc/pad_trailing(text, padding, size) + while (length(text) < size) + text = "[text][padding]" + return text + //Adds 'u' number of spaces ahead of the text 't' /proc/add_lspace(t, u) while(length(t) < u) @@ -336,8 +346,8 @@ // ---Begin URL caching. var/list/urls = list() var/i = 1 - while (url_find_lazy.Find_char(message)) - urls["\ref[urls]-[i]"] = url_find_lazy.match + while (GLOB.url_find_lazy.Find_char(message)) + urls["\ref[urls]-[i]"] = GLOB.url_find_lazy.match i++ for (var/ref in urls) @@ -345,9 +355,9 @@ // ---End URL caching var/regex/tag_markup - for (var/tag in (markup_tags - ignore_tags)) - tag_markup = markup_regex[tag] - message = tag_markup.Replace_char(message, "$2[markup_tags[tag][1]]$3[markup_tags[tag][2]]$5") + for (var/tag in (GLOB.markup_tags - ignore_tags)) + tag_markup = GLOB.markup_regex[tag] + message = tag_markup.Replace_char(message, "$2[GLOB.markup_tags[tag][1]]$3[GLOB.markup_tags[tag][2]]$5") // ---Unload URL cache for (var/ref in urls) diff --git a/code/__HELPERS/traits.dm b/code/__HELPERS/traits.dm new file mode 100644 index 000000000000..ba99b2e1e7ff --- /dev/null +++ b/code/__HELPERS/traits.dm @@ -0,0 +1,43 @@ +#define TRAIT_CALLBACK_ADD(target, trait, source) CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(___TraitAdd), ##target, ##trait, ##source) +#define TRAIT_CALLBACK_REMOVE(target, trait, source) CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(___TraitRemove), ##target, ##trait, ##source) + +///DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback. +/proc/___TraitAdd(target,trait,source) + if(!target || !trait || !source) + return + if(islist(target)) + for(var/i in target) + if(!isatom(i)) + continue + var/atom/the_atom = i + ADD_TRAIT(the_atom,trait,source) + else if(isatom(target)) + var/atom/the_atom2 = target + ADD_TRAIT(the_atom2,trait,source) + +///DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback. +/proc/___TraitRemove(target,trait,source) + if(!target || !trait || !source) + return + if(islist(target)) + for(var/i in target) + if(!isatom(i)) + continue + var/atom/the_atom = i + REMOVE_TRAIT(the_atom,trait,source) + else if(isatom(target)) + var/atom/the_atom2 = target + REMOVE_TRAIT(the_atom2,trait,source) + + +/// Proc that handles adding multiple traits to a target via a list. Must have a common source and target. +/datum/proc/add_traits(list/list_of_traits, source) + ASSERT(islist(list_of_traits), "Invalid arguments passed to add_traits! Invoked on [src] with [list_of_traits], source being [source].") + for(var/trait in list_of_traits) + ADD_TRAIT(src, trait, source) + +/// Proc that handles removing multiple traits from a target via a list. Must have a common source and target. +/datum/proc/remove_traits(list/list_of_traits, source) + ASSERT(islist(list_of_traits), "Invalid arguments passed to remove_traits! Invoked on [src] with [list_of_traits], source being [source].") + for(var/trait in list_of_traits) + REMOVE_TRAIT(src, trait, source) diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 960f894d676f..5d0d113b0c55 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -21,7 +21,7 @@ var/char = copytext(hex, i, i + 1) switch(char) if("0") - //Apparently, switch works with empty statements, yay! If that doesn't work, blame me, though. -- Urist + pass() if("9", "8", "7", "6", "5", "4", "3", "2", "1") num += text2num(char) * 16 ** power if("a", "A") @@ -77,7 +77,6 @@ hex += "E" if(15.0) hex += "F" - else power-- while(length(hex) < placeholder) hex = text("0[]", hex) @@ -165,8 +164,6 @@ return 6 if("SOUTHWEST") return 10 - else - return //Converts an angle (degrees) into an ss13 direction /proc/angle2dir(degree) @@ -226,7 +223,6 @@ if(rights & R_POSSESS) . += "[seperator]+POSSESS" if(rights & R_PERMISSIONS) . += "[seperator]+PERMISSIONS" if(rights & R_STEALTH) . += "[seperator]+STEALTH" - if(rights & R_REJUVINATE) . += "[seperator]+REJUVINATE" if(rights & R_COLOR) . += "[seperator]+COLOR" if(rights & R_VAREDIT) . += "[seperator]+VAREDIT" if(rights & R_SOUNDS) . += "[seperator]+SOUND" diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 3b0a2601bbb0..2fd7ea8919df 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -21,34 +21,34 @@ #define between(low, middle, high) (max(min(middle, high), low)) //Offuscate x for coord system -#define obfuscate_x(x) (x + obfs_x) +#define obfuscate_x(x) ((x) + GLOB.obfs_x) //Offuscate y for coord system -#define obfuscate_y(y) (y + obfs_y) +#define obfuscate_y(y) ((y) + GLOB.obfs_y) //Deoffuscate x for coord system -#define deobfuscate_x(x) (x - obfs_x) +#define deobfuscate_x(x) ((x) - GLOB.obfs_x) //Deoffuscate y for coord system -#define deobfuscate_y(y) (y - obfs_y) +#define deobfuscate_y(y) ((y) - GLOB.obfs_y) #define can_xeno_build(T) (!T.density && !(locate(/obj/structure/fence) in T) && !(locate(/obj/structure/tunnel) in T) && (locate(/obj/effect/alien/weeds) in T)) // For the purpose of a skillcheck, not having a skillset counts as being skilled in everything (!user.skills check) // Note that is_skilled() checks if the skillset contains the skill internally, so a has_skill check is unnecessary -#define skillcheck(user, skill, req_level) ((!user.skills || user.skills.is_skilled(skill, req_level))) -#define skillcheckexplicit(user, skill, req_level) ((!user.skills || user.skills.is_skilled(skill, req_level, TRUE))) +#define skillcheck(user, skill, req_level) ((!user.skills || user.skills.is_skilled((skill), (req_level)))) +#define skillcheckexplicit(user, skill, req_level) ((!user.skills || user.skills.is_skilled((skill), (req_level), TRUE))) // Ensure the frequency is within bounds of what it should be sending/receiving at -// Sets f within bounds via `Clamp(round(f), 1441, 1489)` +// Sets f within bounds via `clamp(round(f), 1441, 1489)` // If f is even, adds 1 to its value to make it odd -#define sanitize_frequency(f) ((Clamp(round(f), 1441, 1489) % 2) == 0 ? \ - Clamp(round(f), 1441, 1489) + 1 : \ - Clamp(round(f), 1441, 1489) \ +#define sanitize_frequency(f) ((clamp(round(f), 1441, 1489) % 2) == 0 ? \ + clamp(round(f), 1441, 1489) + 1 : \ + clamp(round(f), 1441, 1489) \ ) //Turns 1479 into 147.9 -#define format_frequency(f) "[round(f / 10)].[f % 10]" +#define format_frequency(f) "[round((f) / 10)].[(f) % 10]" #define reverse_direction(direction) ( \ ( dir & (NORTH|SOUTH) ? ~dir & (NORTH|SOUTH) : 0 ) | \ @@ -99,38 +99,29 @@ var/atom/movable/big_subject = subject . += (big_subject.bound_height - world.icon_size) / 2 -/proc/Get_Angle(atom/start,atom/end, tile_bound = FALSE)//For beams. - if(!start || !end) return 0 - if(!start.z || !end.z) return 0 //Atoms are not on turfs. - var/dx - var/dy - if(tile_bound) - dy=end.y-start.y - dx=end.x-start.x - else - dy = get_pixel_position_y(end) - get_pixel_position_y(start) - dx = get_pixel_position_x(end) - get_pixel_position_x(start) - if(!dy) - return (dx>=0)?90:270 - .=arctan(dx/dy) - if(dy<0) - .+=180 - else if(dx<0) - .+=360 - -/proc/Get_Compass_Dir(atom/start,atom/end)//get_dir() only considers an object to be north/south/east/west if there is zero deviation. This uses rounding instead. - if(!start || !end) return 0 - if(!start.z || !end.z) return 0 //Atoms are not on turfs. - var/dy=end.y-start.y - var/dx=end.x-start.x - if(!dy) - return (dx>=0)?4:8 - var/angle=arctan(dx/dy) - if(dy<0) - angle+=180 - else if(dx<0) - angle+=360 - +/// Calculate the angle between two atoms. Uses north-clockwise convention: NORTH = 0, EAST = 90, etc. +/proc/Get_Angle(atom/start, atom/end)//For beams. + if(!start || !end) + return 0 + if(!start.z) + start = get_turf(start) + if(!start) + return 0 //Atoms are not on turfs. + if(!end.z) + end = get_turf(end) + if(!end) + return 0 //Atoms are not on turfs. + var/dy = get_pixel_position_y(end) - get_pixel_position_y(start) + var/dx = get_pixel_position_x(end) - get_pixel_position_x(start) + return delta_to_angle(dx, dy) + +/// Calculate the angle produced by a pair of x and y deltas. Uses north-clockwise convention: NORTH = 0, EAST = 90, etc. +/proc/delta_to_angle(dx, dy) + . = arctan(dy, dx) //y-then-x results in north-clockwise convention: https://en.wikipedia.org/wiki/Atan2#East-counterclockwise,_north-clockwise_and_south-clockwise_conventions,_etc. + if(. < 0) + . += 360 + +/proc/angle_to_dir(angle) switch(angle) //diagonal directions get priority over straight directions in edge cases if (22.5 to 67.5) return NORTHEAST @@ -151,6 +142,8 @@ else return NORTH +/proc/Get_Compass_Dir(atom/start, atom/end)//get_dir() only considers an object to be north/south/east/west if there is zero deviation. This uses rounding instead. + return angle_to_dir(Get_Angle(get_turf(start), get_turf(end))) // Among other things, used by flamethrower and boiler spray to calculate if flame/spray can pass through. // Returns an atom for specific effects (primarily flames and acid spray) that damage things upon contact @@ -281,9 +274,10 @@ //update the datacore records! This is goig to be a bit costly. var/mob_ref = WEAKREF(src) for(var/list/L in list(GLOB.data_core.general, GLOB.data_core.medical, GLOB.data_core.security, GLOB.data_core.locked)) - for(var/datum/data/record/R in L) - if(R.fields["ref"] == mob_ref) - R.fields["name"] = newname + for(var/datum/data/record/record_entry in L) + if(record_entry.fields["ref"] == mob_ref) + record_entry.fields["name"] = newname + record_entry.name = newname break //update our pda and id if we have them on our person @@ -330,56 +324,17 @@ if(!newname) //we'll stick with the oldname then return - if(cmptext("ai",role)) - if(isAI(src)) - var/mob/living/silicon/ai/A = src - oldname = null//don't bother with the records update crap - A.SetName(newname) - fully_replace_character_name(oldname,newname) - - -//When a borg is activated, it can choose which AI it wants to be slaved to -/proc/active_ais() - . = list() - for(var/mob/living/silicon/ai/A in GLOB.alive_mob_list) - if(A.stat == DEAD) - continue - if(A.control_disabled == 1) - continue - . += A - return . - -//Find an active ai with the least borgs. VERBOSE PROCNAME HUH! -/proc/select_active_ai_with_fewest_borgs() - var/mob/living/silicon/ai/selected - var/list/active = active_ais() - for(var/mob/living/silicon/ai/A in active) - if(!selected || (selected.connected_robots > A.connected_robots)) - selected = A - - return selected - -/proc/select_active_ai(mob/user) - var/list/ais = active_ais() - if(ais.len) - if(user) . = tgui_input_list(usr,"AI signals detected:", "AI selection", ais) - else . = pick(ais) - return . - /proc/get_sorted_mobs() var/list/old_list = getmobs() - var/list/AI_list = list() var/list/Dead_list = list() var/list/keyclient_list = list() var/list/key_list = list() var/list/logged_list = list() for(var/named in old_list) var/mob/M = old_list[named] - if(isSilicon(M)) - AI_list |= M - else if(isobserver(M) || M.stat == 2) + if(isobserver(M) || M.stat == 2) Dead_list |= M else if(M.key && M.client) keyclient_list |= M @@ -389,7 +344,6 @@ logged_list |= M old_list.Remove(named) var/list/new_list = list() - new_list += AI_list new_list += keyclient_list new_list += key_list new_list += logged_list @@ -894,7 +848,7 @@ if(ismob(source)) var/mob/M = source has_nightvision = M.see_in_dark >= 12 - if(!has_nightvision && target_turf.lighting_lumcount == 0) + if(!has_nightvision && target_turf.get_lumcount() == 0) return FALSE while(current != target_turf) @@ -916,110 +870,127 @@ return FALSE -var/global/image/busy_indicator_clock -var/global/image/busy_indicator_medical -var/global/image/busy_indicator_build -var/global/image/busy_indicator_friendly -var/global/image/busy_indicator_hostile -var/global/image/emote_indicator_highfive -var/global/image/emote_indicator_fistbump -var/global/image/emote_indicator_headbutt -var/global/image/emote_indicator_tailswipe -var/global/image/emote_indicator_rock_paper_scissors -var/global/image/emote_indicator_rock -var/global/image/emote_indicator_paper -var/global/image/emote_indicator_scissors -var/global/image/action_red_power_up -var/global/image/action_green_power_up -var/global/image/action_blue_power_up -var/global/image/action_purple_power_up +GLOBAL_DATUM(busy_indicator_clock, /image) +GLOBAL_DATUM(busy_indicator_medical, /image) +GLOBAL_DATUM(busy_indicator_build, /image) +GLOBAL_DATUM(busy_indicator_friendly, /image) +GLOBAL_DATUM(busy_indicator_hostile, /image) +GLOBAL_DATUM(emote_indicator_highfive, /image) +GLOBAL_DATUM(emote_indicator_fistbump, /image) +GLOBAL_DATUM(emote_indicator_headbutt, /image) +GLOBAL_DATUM(emote_indicator_tailswipe, /image) +GLOBAL_DATUM(emote_indicator_rock_paper_scissors, /image) +GLOBAL_DATUM(emote_indicator_rock, /image) +GLOBAL_DATUM(emote_indicator_paper, /image) +GLOBAL_DATUM(emote_indicator_scissors, /image) +GLOBAL_DATUM(action_red_power_up, /image) +GLOBAL_DATUM(action_green_power_up, /image) +GLOBAL_DATUM(action_blue_power_up, /image) +GLOBAL_DATUM(action_purple_power_up, /image) /proc/get_busy_icon(busy_type) if(busy_type == BUSY_ICON_GENERIC) - if(!busy_indicator_clock) - busy_indicator_clock = image('icons/mob/mob.dmi', null, "busy_generic", "pixel_y" = 22) - busy_indicator_clock.layer = FLY_LAYER - return busy_indicator_clock + if(!GLOB.busy_indicator_clock) + GLOB.busy_indicator_clock = image('icons/mob/mob.dmi', null, "busy_generic", "pixel_y" = 22) + GLOB.busy_indicator_clock.layer = FLY_LAYER + GLOB.busy_indicator_clock.plane = ABOVE_GAME_PLANE + return GLOB.busy_indicator_clock else if(busy_type == BUSY_ICON_MEDICAL) - if(!busy_indicator_medical) - busy_indicator_medical = image('icons/mob/mob.dmi', null, "busy_medical", "pixel_y" = 0) //This shows directly on top of the mob, no offset! - busy_indicator_medical.layer = FLY_LAYER - return busy_indicator_medical + if(!GLOB.busy_indicator_medical) + GLOB.busy_indicator_medical = image('icons/mob/mob.dmi', null, "busy_medical", "pixel_y" = 0) //This shows directly on top of the mob, no offset! + GLOB.busy_indicator_medical.layer = FLY_LAYER + GLOB.busy_indicator_medical.plane = ABOVE_GAME_PLANE + return GLOB.busy_indicator_medical else if(busy_type == BUSY_ICON_BUILD) - if(!busy_indicator_build) - busy_indicator_build = image('icons/mob/mob.dmi', null, "busy_build", "pixel_y" = 22) - busy_indicator_build.layer = FLY_LAYER - return busy_indicator_build + if(!GLOB.busy_indicator_build) + GLOB.busy_indicator_build = image('icons/mob/mob.dmi', null, "busy_build", "pixel_y" = 22) + GLOB.busy_indicator_build.layer = FLY_LAYER + GLOB.busy_indicator_build.plane = ABOVE_GAME_PLANE + return GLOB.busy_indicator_build else if(busy_type == BUSY_ICON_FRIENDLY) - if(!busy_indicator_friendly) - busy_indicator_friendly = image('icons/mob/mob.dmi', null, "busy_friendly", "pixel_y" = 22) - busy_indicator_friendly.layer = FLY_LAYER - return busy_indicator_friendly + if(!GLOB.busy_indicator_friendly) + GLOB.busy_indicator_friendly = image('icons/mob/mob.dmi', null, "busy_friendly", "pixel_y" = 22) + GLOB.busy_indicator_friendly.layer = FLY_LAYER + GLOB.busy_indicator_friendly.plane = ABOVE_GAME_PLANE + return GLOB.busy_indicator_friendly else if(busy_type == BUSY_ICON_HOSTILE) - if(!busy_indicator_hostile) - busy_indicator_hostile = image('icons/mob/mob.dmi', null, "busy_hostile", "pixel_y" = 22) - busy_indicator_hostile.layer = FLY_LAYER - return busy_indicator_hostile + if(!GLOB.busy_indicator_hostile) + GLOB.busy_indicator_hostile = image('icons/mob/mob.dmi', null, "busy_hostile", "pixel_y" = 22) + GLOB.busy_indicator_hostile.layer = FLY_LAYER + GLOB.busy_indicator_hostile.plane = ABOVE_GAME_PLANE + return GLOB.busy_indicator_hostile else if(busy_type == EMOTE_ICON_HIGHFIVE) - if(!emote_indicator_highfive) - emote_indicator_highfive = image('icons/mob/mob.dmi', null, "emote_highfive", "pixel_y" = 22) - emote_indicator_highfive.layer = FLY_LAYER - return emote_indicator_highfive + if(!GLOB.emote_indicator_highfive) + GLOB.emote_indicator_highfive = image('icons/mob/mob.dmi', null, "emote_highfive", "pixel_y" = 22) + GLOB.emote_indicator_highfive.layer = FLY_LAYER + GLOB.emote_indicator_highfive.plane = ABOVE_GAME_PLANE + return GLOB.emote_indicator_highfive else if(busy_type == EMOTE_ICON_FISTBUMP) - if(!emote_indicator_fistbump) - emote_indicator_fistbump = image('icons/mob/mob.dmi', null, "emote_fistbump", "pixel_y" = 22) - emote_indicator_fistbump.layer = FLY_LAYER - return emote_indicator_fistbump + if(!GLOB.emote_indicator_fistbump) + GLOB.emote_indicator_fistbump = image('icons/mob/mob.dmi', null, "emote_fistbump", "pixel_y" = 22) + GLOB.emote_indicator_fistbump.layer = FLY_LAYER + GLOB.emote_indicator_fistbump.plane = ABOVE_GAME_PLANE + return GLOB.emote_indicator_fistbump else if(busy_type == EMOTE_ICON_ROCK_PAPER_SCISSORS) - if(!emote_indicator_rock_paper_scissors) - emote_indicator_rock_paper_scissors = image('icons/mob/mob.dmi', null, "emote_rps", "pixel_y" = 22) - emote_indicator_rock_paper_scissors.layer = FLY_LAYER - return emote_indicator_rock_paper_scissors + if(!GLOB.emote_indicator_rock_paper_scissors) + GLOB.emote_indicator_rock_paper_scissors = image('icons/mob/mob.dmi', null, "emote_rps", "pixel_y" = 22) + GLOB.emote_indicator_rock_paper_scissors.layer = FLY_LAYER + GLOB.emote_indicator_rock_paper_scissors.plane = ABOVE_GAME_PLANE + return GLOB.emote_indicator_rock_paper_scissors else if(busy_type == EMOTE_ICON_ROCK) - if(!emote_indicator_rock) - emote_indicator_rock = image('icons/mob/mob.dmi', null, "emote_rock", "pixel_y" = 22) - emote_indicator_rock.layer = FLY_LAYER - return emote_indicator_rock + if(!GLOB.emote_indicator_rock) + GLOB.emote_indicator_rock = image('icons/mob/mob.dmi', null, "emote_rock", "pixel_y" = 22) + GLOB.emote_indicator_rock.layer = FLY_LAYER + GLOB.emote_indicator_rock.plane = ABOVE_GAME_PLANE + return GLOB.emote_indicator_rock else if(busy_type == EMOTE_ICON_PAPER) - if(!emote_indicator_paper) - emote_indicator_paper = image('icons/mob/mob.dmi', null, "emote_paper", "pixel_y" = 22) - emote_indicator_paper.layer = FLY_LAYER - return emote_indicator_paper + if(!GLOB.emote_indicator_paper) + GLOB.emote_indicator_paper = image('icons/mob/mob.dmi', null, "emote_paper", "pixel_y" = 22) + GLOB.emote_indicator_paper.layer = FLY_LAYER + GLOB.emote_indicator_paper.plane = ABOVE_GAME_PLANE + return GLOB.emote_indicator_paper else if(busy_type == EMOTE_ICON_SCISSORS) - if(!emote_indicator_scissors) - emote_indicator_scissors = image('icons/mob/mob.dmi', null, "emote_scissors", "pixel_y" = 22) - emote_indicator_scissors.layer = FLY_LAYER - return emote_indicator_scissors + if(!GLOB.emote_indicator_scissors) + GLOB.emote_indicator_scissors = image('icons/mob/mob.dmi', null, "emote_scissors", "pixel_y" = 22) + GLOB.emote_indicator_scissors.layer = FLY_LAYER + GLOB.emote_indicator_scissors.plane = ABOVE_GAME_PLANE + return GLOB.emote_indicator_scissors else if(busy_type == EMOTE_ICON_HEADBUTT) - if(!emote_indicator_headbutt) - emote_indicator_headbutt = image('icons/mob/mob.dmi', null, "emote_headbutt", "pixel_y" = 22) - emote_indicator_headbutt.layer = FLY_LAYER - return emote_indicator_headbutt + if(!GLOB.emote_indicator_headbutt) + GLOB.emote_indicator_headbutt = image('icons/mob/mob.dmi', null, "emote_headbutt", "pixel_y" = 22) + GLOB.emote_indicator_headbutt.layer = FLY_LAYER + GLOB.emote_indicator_headbutt.plane = ABOVE_GAME_PLANE + return GLOB.emote_indicator_headbutt else if(busy_type == EMOTE_ICON_TAILSWIPE) - if(!emote_indicator_tailswipe) - emote_indicator_tailswipe = image('icons/mob/mob.dmi', null, "emote_tailswipe", "pixel_y" = 22) - emote_indicator_tailswipe.layer = FLY_LAYER - return emote_indicator_tailswipe + if(!GLOB.emote_indicator_tailswipe) + GLOB.emote_indicator_tailswipe = image('icons/mob/mob.dmi', null, "emote_tailswipe", "pixel_y" = 22) + GLOB.emote_indicator_tailswipe.layer = FLY_LAYER + GLOB.emote_indicator_tailswipe.plane = ABOVE_GAME_PLANE + return GLOB.emote_indicator_tailswipe else if(busy_type == ACTION_RED_POWER_UP) - if(!action_red_power_up) - action_red_power_up = image('icons/effects/effects.dmi', null, "anger", "pixel_x" = 16) - action_red_power_up.layer = FLY_LAYER - return action_red_power_up + if(!GLOB.action_red_power_up) + GLOB.action_red_power_up = image('icons/effects/effects.dmi', null, "anger", "pixel_x" = 16) + GLOB.action_red_power_up.layer = FLY_LAYER + GLOB.action_red_power_up.plane = ABOVE_GAME_PLANE + return GLOB.action_red_power_up else if(busy_type == ACTION_GREEN_POWER_UP) - if(!action_green_power_up) - action_green_power_up = image('icons/effects/effects.dmi', null, "vitality", "pixel_x" = 16) - action_green_power_up.layer = FLY_LAYER - return action_green_power_up + if(!GLOB.action_green_power_up) + GLOB.action_green_power_up = image('icons/effects/effects.dmi', null, "vitality", "pixel_x" = 16) + GLOB.action_green_power_up.layer = FLY_LAYER + GLOB.action_green_power_up.plane = ABOVE_GAME_PLANE + return GLOB.action_green_power_up else if(busy_type == ACTION_BLUE_POWER_UP) - if(!action_blue_power_up) - action_blue_power_up = image('icons/effects/effects.dmi', null, "shock", "pixel_x" = 16) - action_blue_power_up.layer = FLY_LAYER - return action_blue_power_up + if(!GLOB.action_blue_power_up) + GLOB.action_blue_power_up = image('icons/effects/effects.dmi', null, "shock", "pixel_x" = 16) + GLOB.action_blue_power_up.layer = FLY_LAYER + GLOB.action_blue_power_up.plane = ABOVE_GAME_PLANE + return GLOB.action_blue_power_up else if(busy_type == ACTION_PURPLE_POWER_UP) - if(!action_purple_power_up) - action_purple_power_up = image('icons/effects/effects.dmi', null, "pain", "pixel_x" = 16) - action_purple_power_up.layer = FLY_LAYER - return action_purple_power_up + if(!GLOB.action_purple_power_up) + GLOB.action_purple_power_up = image('icons/effects/effects.dmi', null, "pain", "pixel_x" = 16) + GLOB.action_purple_power_up.layer = FLY_LAYER + GLOB.action_purple_power_up.plane = ABOVE_GAME_PLANE + return GLOB.action_purple_power_up /* @@ -1089,7 +1060,7 @@ var/global/image/action_purple_power_up target_orig_turf = get_turf(target) var/obj/user_holding = busy_user.get_active_hand() var/obj/target_holding - var/cur_user_lying = busy_user.lying + var/cur_user_lying = busy_user.body_position var/cur_target_lying var/expected_total_time = delayfraction*numticks var/time_remaining = expected_total_time @@ -1097,7 +1068,7 @@ var/global/image/action_purple_power_up if(has_target && istype(T)) cur_target_zone_sel = T.zone_selected target_holding = T.get_active_hand() - cur_target_lying = T.lying + cur_target_lying = T.body_position . = TRUE for(var/i in 1 to numticks) @@ -1121,17 +1092,17 @@ var/global/image/action_purple_power_up ) . = FALSE break - if(user_flags & INTERRUPT_KNOCKED_DOWN && busy_user.knocked_down || \ - target_is_mob && (target_flags & INTERRUPT_KNOCKED_DOWN && T.knocked_down) + if(user_flags & INTERRUPT_KNOCKED_DOWN && HAS_TRAIT(busy_user, TRAIT_FLOORED) || \ + target_is_mob && (target_flags & INTERRUPT_KNOCKED_DOWN && HAS_TRAIT(T, TRAIT_FLOORED)) ) . = FALSE break - if(user_flags & INTERRUPT_STUNNED && busy_user.stunned || \ - target_is_mob && (target_flags & INTERRUPT_STUNNED && T.stunned) + if(user_flags & INTERRUPT_STUNNED && HAS_TRAIT(busy_user, TRAIT_INCAPACITATED)|| \ + target_is_mob && (target_flags & INTERRUPT_STUNNED && HAS_TRAIT(T, TRAIT_INCAPACITATED)) ) . = FALSE break - if(user_flags & INTERRUPT_DAZED && busy_user.dazed) + if(user_flags & INTERRUPT_DAZED && HAS_TRAIT(busy_user, TRAIT_DAZED)) . = FALSE break if(user_flags & INTERRUPT_EMOTE && !busy_user.flags_emote) @@ -1139,7 +1110,7 @@ var/global/image/action_purple_power_up break if(user_flags & INTERRUPT_NEEDHAND) if(user_holding) - if(!user_holding.loc || busy_user.get_active_hand() != user_holding) //no longer holding the required item + if(!user_holding.loc || busy_user.get_active_hand() != user_holding) //no longer holding the required item in active hand . = FALSE break else if(busy_user.get_active_hand()) //something in active hand when we need it to stay empty @@ -1153,6 +1124,11 @@ var/global/image/action_purple_power_up else if(T.get_active_hand()) . = FALSE break + if(user_flags & INTERRUPT_NO_NEEDHAND) + if(user_holding) + if(!user_holding.loc || (busy_user.l_hand != user_holding && busy_user.r_hand != user_holding)) //no longer holding the required item in either hand + . = FALSE + break if(user_flags & INTERRUPT_RESIST && busy_user.resisting || \ target_is_mob && (target_flags & INTERRUPT_RESIST && T.resisting) ) @@ -1196,8 +1172,8 @@ var/global/image/action_purple_power_up ) . = FALSE break - if(user_flags & INTERRUPT_CHANGED_LYING && busy_user.lying != cur_user_lying || \ - target_is_mob && (target_flags & INTERRUPT_CHANGED_LYING && T.lying != cur_target_lying) + if(user_flags & INTERRUPT_CHANGED_LYING && busy_user.body_position != cur_user_lying || \ + target_is_mob && (target_flags & INTERRUPT_CHANGED_LYING && T.body_position != cur_target_lying) ) . = FALSE break @@ -1222,12 +1198,11 @@ var/global/image/action_purple_power_up if(A.vars.Find(lowertext(varname))) return 1 else return 0 -//Returns: all the non-lighting areas in the world, sorted. +//Returns: all the areas in the world, sorted. /proc/return_sorted_areas() var/list/area/AL = list() for(var/area/A in GLOB.sorted_areas) - if(!A.lighting_subarea) - AL += A + AL += A return AL //Takes: Area type as text string or as typepath OR an instance of the area. @@ -1247,13 +1222,8 @@ var/global/image/action_purple_power_up var/area/A = GLOB.areas_by_type[areatype] // Fix it up with /area/var/related due to lighting shenanigans - var/list/area/LA - if(!length(A.related)) - LA = list(A) - else LA = A.related - for(var/area/Ai in LA) - for(var/turf/T in Ai) - turfs += T + for(var/turf/T in A) + turfs += T return turfs @@ -1377,7 +1347,7 @@ var/global/image/action_purple_power_up // if(AR.lighting_use_dynamic) //TODO: rewrite this code so it's not messed by lighting ~Carn // X.opacity = !X.opacity -// X.SetOpacity(!X.opacity) +// X.set_opacity(!X.opacity) toupdate += X @@ -1466,7 +1436,7 @@ var/global/image/action_purple_power_up /* Checks if that loc and dir has a item on the wall */ -var/list/WALLITEMS = list( +GLOBAL_LIST_INIT(WALLITEMS, list( /obj/structure/machinery/power/apc, /obj/structure/machinery/alarm, /obj/item/device/radio/intercom, @@ -1487,10 +1457,11 @@ var/list/WALLITEMS = list( /obj/structure/mirror, /obj/structure/closet/fireaxecabinet, /obj/structure/machinery/computer/cameras/telescreen/entertainment, - ) + )) + /proc/gotwallitem(loc, dir) for(var/obj/O in loc) - for(var/item in WALLITEMS) + for(var/item in GLOB.WALLITEMS) if(istype(O, item)) //Direction works sometimes if(O.dir == dir) @@ -1514,7 +1485,7 @@ var/list/WALLITEMS = list( //Some stuff is placed directly on the wallturf (signs) for(var/obj/O in get_step(loc, dir)) - for(var/item in WALLITEMS) + for(var/item in GLOB.WALLITEMS) if(istype(O, item)) if(O.pixel_x == 0 && O.pixel_y == 0) return 1 @@ -1523,88 +1494,47 @@ var/list/WALLITEMS = list( /proc/format_text(text) return replacetext(replacetext(text,"\proper ",""),"\improper ","") -/proc/getline(atom/M, atom/N, include_from_atom = TRUE)//Ultra-Fast Bresenham Line-Drawing Algorithm - var/px=M.x //starting x - var/py=M.y - var/line[] = list(locate(px,py,M.z)) - var/dx=N.x-px //x distance - var/dy=N.y-py - var/dxabs=abs(dx)//Absolute value of x distance - var/dyabs=abs(dy) - var/sdx=sign(dx) //Sign of x distance (+ or -) - var/sdy=sign(dy) - var/x=dxabs>>1 //Counters for steps taken, setting to distance/2 - var/y=dyabs>>1 //Bit-shifting makes me l33t. It also makes getline() unnessecarrily fast. - var/j //Generic integer for counting - if(dxabs>=dyabs) //x distance is greater than y - for(j=0;j=dxabs) //Every dyabs steps, step once in y direction - y-=dxabs - py+=sdy - px+=sdx //Step on in x direction - if(j > 0 || include_from_atom) - line+=locate(px,py,M.z)//Add the turf to the list - else - for(j=0;j=dyabs) - x-=dyabs - px+=sdx - py+=sdy - if(j > 0 || include_from_atom) - line+=locate(px,py,M.z) - return line +/** + * Get a list of turfs in a line from `start_atom` to `end_atom`. + * + * Based on a linear interpolation method from [Red Blob Games](https://www.redblobgames.com/grids/line-drawing/#optimization). + * + * Arguments: + * * start_atom - starting point of the line + * * end_atom - ending point of the line + * * include_start_atom - when truthy includes start_atom in the list, default TRUE + * + * Returns: + * list - turfs from start_atom (in/exclusive) to end_atom (inclusive) + */ +/proc/get_line(atom/start_atom, atom/end_atom, include_start_atom = TRUE) + var/turf/start_turf = get_turf(start_atom) + var/turf/end_turf = get_turf(end_atom) + var/start_z = start_turf.z -//Bresenham's algorithm. This one deals efficiently with all 8 octants. -//Just don't ask me how it works. -/proc/getline2(atom/from_atom, atom/to_atom, include_from_atom = TRUE) - if(!from_atom || !to_atom) return 0 - var/list/turf/turfs = list() - - var/cur_x = from_atom.x - var/cur_y = from_atom.y - - var/w = to_atom.x - from_atom.x - var/h = to_atom.y - from_atom.y - var/dx1 = 0 - var/dx2 = 0 - var/dy1 = 0 - var/dy2 = 0 - if(w < 0) - dx1 = -1 - dx2 = -1 - else if(w > 0) - dx1 = 1 - dx2 = 1 - if(h < 0) dy1 = -1 - else if(h > 0) dy1 = 1 - var/longest = abs(w) - var/shortest = abs(h) - if(!(longest > shortest)) - longest = abs(h) - shortest = abs(w) - if(h < 0) dy2 = -1 - else if (h > 0) dy2 = 1 - dx2 = 0 - - var/numerator = longest >> 1 - var/i - for(i = 0; i <= longest; i++) - if(i > 0 || include_from_atom) - turfs += locate(cur_x,cur_y,from_atom.z) - numerator += shortest - if(!(numerator < longest)) - numerator -= longest - cur_x += dx1 - cur_y += dy1 - else - cur_x += dx2 - cur_y += dy2 + var/list/line = list() + if(include_start_atom) + line += start_turf + var/step_count = get_dist(start_turf, end_turf) + if(!step_count) + return line - return turfs + //as step_count and step size (1) are known can pre-calculate a lerp step, tiny number (1e-5) for rounding consistency + var/step_x = (end_turf.x - start_turf.x) / step_count + 1e-5 + var/step_y = (end_turf.y - start_turf.y) / step_count + 1e-5 + + //locate() truncates the fraction, adding 0.5 so its effectively rounding to nearest coords for free + var/x = start_turf.x + 0.5 + var/y = start_turf.y + 0.5 + for(var/step in 1 to (step_count - 1)) //increment then locate() skips start_turf (in 1), since end_turf is known can skip that step too (step_count - 1) + x += step_x + y += step_y + line += locate(x, y, start_z) + line += end_turf + + return line //Key thing that stops lag. Cornerstone of performance in ss13, Just sitting here, in unsorted.dm. @@ -1622,7 +1552,7 @@ var/list/WALLITEMS = list( . = 0 var/i = DS2TICKS(initial_delay) do - . += CEILING(i*DELTA_CALC, 1) + . += Ceiling(i*DELTA_CALC) sleep(i*world.tick_lag*DELTA_CALC) i *= 2 while (TICK_USAGE > min(TICK_LIMIT_TO_RUN, Master.current_ticklimit)) @@ -1650,8 +1580,8 @@ var/list/WALLITEMS = list( /proc/explosive_antigrief_check(obj/item/explosive/explosive, mob/user) var/turf/Turf = get_turf(explosive) if(!(Turf.loc.type in GLOB.explosive_antigrief_exempt_areas)) - var/crash_occured = (SSticker?.mode?.is_in_endgame) - if((Turf.z in SSmapping.levels_by_any_trait(list(ZTRAIT_MARINE_MAIN_SHIP, ZTRAIT_RESERVED))) && (security_level < SEC_LEVEL_RED) && !crash_occured) + var/crash_occurred = (SSticker?.mode?.is_in_endgame) + if((Turf.z in SSmapping.levels_by_any_trait(list(ZTRAIT_MARINE_MAIN_SHIP, ZTRAIT_RESERVED))) && (GLOB.security_level < SEC_LEVEL_RED) && !crash_occurred) switch(CONFIG_GET(number/explosive_antigrief)) if(ANTIGRIEF_DISABLED) return FALSE @@ -1761,6 +1691,85 @@ var/list/WALLITEMS = list( if(location == src) return TRUE +GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) + +/// Version of view() which ignores darkness, because BYOND doesn't have it (I actually suggested it but it was tagged redundant, BUT HEARERS IS A T- /rant). +/proc/dview(range = world.view, center, invis_flags = 0) + if(!center) + return + + GLOB.dview_mob.loc = center + + GLOB.dview_mob.see_invisible = invis_flags + + . = view(range, GLOB.dview_mob) + GLOB.dview_mob.loc = null + +/mob/dview + name = "INTERNAL DVIEW MOB" + invisibility = 101 + density = FALSE + see_in_dark = 1e6 + var/ready_to_die = FALSE + +/mob/dview/Initialize() //Properly prevents this mob from gaining huds or joining any global lists + SHOULD_CALL_PARENT(FALSE) + if(flags_atom & INITIALIZED) + stack_trace("Warning: [src]([type]) initialized multiple times!") + flags_atom |= INITIALIZED + return INITIALIZE_HINT_NORMAL + +/mob/dview/Destroy(force = FALSE) + if(!ready_to_die) + stack_trace("ALRIGHT WHICH FUCKER TRIED TO DELETE *MY* DVIEW?") + + if (!force) + return QDEL_HINT_LETMELIVE + + log_world("EVACUATE THE SHITCODE IS TRYING TO STEAL MUH JOBS") + GLOB.dview_mob = new + return ..() + + +#define FOR_DVIEW(type, range, center, invis_flags) \ + GLOB.dview_mob.loc = center; \ + GLOB.dview_mob.see_invisible = invis_flags; \ + for(type in view(range, GLOB.dview_mob)) + +#define FOR_DVIEW_END GLOB.dview_mob.loc = null + +/proc/get_turf_pixel(atom/AM) + if(!istype(AM)) + return + + //Find AM's matrix so we can use it's X/Y pixel shifts + var/matrix/M = matrix(AM.transform) + + var/pixel_x_offset = AM.pixel_x + M.get_x_shift() + var/pixel_y_offset = AM.pixel_y + M.get_y_shift() + + //Irregular objects + var/icon/AMicon = icon(AM.icon, AM.icon_state) + var/AMiconheight = AMicon.Height() + var/AMiconwidth = AMicon.Width() + if(AMiconheight != world.icon_size || AMiconwidth != world.icon_size) + pixel_x_offset += ((AMiconwidth/world.icon_size)-1)*(world.icon_size*0.5) + pixel_y_offset += ((AMiconheight/world.icon_size)-1)*(world.icon_size*0.5) + + //DY and DX + var/rough_x = round(round(pixel_x_offset,world.icon_size)/world.icon_size) + var/rough_y = round(round(pixel_y_offset,world.icon_size)/world.icon_size) + + //Find coordinates + var/turf/T = get_turf(AM) //use AM's turfs, as it's coords are the same as AM's AND AM's coords are lost if it is inside another atom + if(!T) + return null + var/final_x = T.x + rough_x + var/final_y = T.y + rough_y + + if(final_x || final_y) + return locate(final_x, final_y, T.z) + //used to check if a mob can examine an object /atom/proc/can_examine(mob/user) if(!user.client) @@ -1988,3 +1997,42 @@ GLOBAL_LIST_INIT(duplicate_forbidden_vars,list( if(stop_type && istype(turf_to_check, stop_type)) break return turf_to_check + +/// Given a direction, return the direction and the +-45 degree directions next to it +/proc/get_related_directions(direction = NORTH) + switch(direction) + if(NORTH) + return list(NORTH, NORTHEAST, NORTHWEST) + + if(EAST) + return list(EAST, NORTHEAST, SOUTHEAST) + + if(SOUTH) + return list(SOUTH, SOUTHEAST, SOUTHWEST) + + if(WEST) + return list(WEST, NORTHWEST, SOUTHWEST) + + if(NORTHEAST) + return list(NORTHEAST, NORTH, EAST) + + if(SOUTHEAST) + return list(SOUTHEAST, EAST, SOUTH) + + if(SOUTHWEST) + return list(SOUTHWEST, SOUTH, WEST) + + if(NORTHWEST) + return list(NORTHWEST, NORTH, WEST) + +/// Returns TRUE if the target is somewhere that the game should not interact with if possible +/// In this case, admin Zs and tutorial areas +/proc/should_block_game_interaction(atom/target) + if(is_admin_level(target.z)) + return TRUE + + var/area/target_area = get_area(target) + if(target_area?.block_game_interaction) + return TRUE + + return FALSE diff --git a/code/__HELPERS/verb_helpers.dm b/code/__HELPERS/verb_helpers.dm index d042929f1184..4bc3ae584cd6 100644 --- a/code/__HELPERS/verb_helpers.dm +++ b/code/__HELPERS/verb_helpers.dm @@ -10,7 +10,7 @@ if(!target) CRASH("add_verb called without a target") if(IsAdminAdvancedProcCall()) - return + return PROC_BLOCKED var/mob/mob_target = null if(ismob(target)) @@ -56,7 +56,7 @@ */ /proc/remove_verb(client/target, verb_or_list_to_remove) if(IsAdminAdvancedProcCall()) - return + return PROC_BLOCKED var/mob/mob_target = null if(ismob(target)) diff --git a/code/__odlint.dm b/code/__odlint.dm new file mode 100644 index 000000000000..f42517133746 --- /dev/null +++ b/code/__odlint.dm @@ -0,0 +1,11 @@ +// This file is included right at the start of the DME. +// Its purpose is to enable multiple lints (pragmas) that are supported by OpenDream to better validate the codebase +// These are essentially nitpicks the DM compiler should pick up on but doesnt + +#ifndef SPACEMAN_DMM +#ifdef OPENDREAM +// These are in their own file as you need to do it with an include as a hack to avoid +// SpacemanDMM evaluating the #pragma lines, even if its outside a block it cares about +#include "__pragmas.dm" +#endif +#endif diff --git a/code/__pragmas.dm b/code/__pragmas.dm new file mode 100644 index 000000000000..39c14e1bbc95 --- /dev/null +++ b/code/__pragmas.dm @@ -0,0 +1,27 @@ +//1000-1999 +#pragma FileAlreadyIncluded error +#pragma MissingIncludedFile error +#pragma MisplacedDirective error +#pragma UndefineMissingDirective error +#pragma DefinedMissingParen error +#pragma ErrorDirective error +#pragma WarningDirective error +#pragma MiscapitalizedDirective error + +//2000-2999 +#pragma SoftReservedKeyword error +#pragma DuplicateVariable error +#pragma DuplicateProcDefinition error +#pragma TooManyArguments error +#pragma PointlessParentCall error +#pragma PointlessBuiltinCall error +#pragma SuspiciousMatrixCall error +#pragma MalformedRange error +#pragma InvalidRange error +#pragma InvalidSetStatement error +#pragma InvalidOverride error +#pragma DanglingVarType error +#pragma MissingInterpolatedExpression error + +//3000-3999 +#pragma EmptyBlock error diff --git a/code/_byond_version_compat.dm b/code/_byond_version_compat.dm index b5379a3b6d5c..26968f0f837c 100644 --- a/code/_byond_version_compat.dm +++ b/code/_byond_version_compat.dm @@ -3,7 +3,7 @@ //Update this whenever you need to take advantage of more recent byond features #define MIN_COMPILER_VERSION 514 #define MIN_COMPILER_BUILD 1588 -#if (DM_VERSION < MIN_COMPILER_VERSION || DM_BUILD < MIN_COMPILER_BUILD) && !defined(SPACEMAN_DMM) +#if (DM_VERSION < MIN_COMPILER_VERSION || DM_BUILD < MIN_COMPILER_BUILD) && !defined(SPACEMAN_DMM) && !defined(OPENDREAM) //Don't forget to update this part #error Your version of BYOND is too out-of-date to compile this project. Go to https://secure.byond.com/download and update. #error You need version 514.1588 or higher @@ -31,19 +31,49 @@ #define LIBCALL call_ext #endif -// So we want to have compile time guarantees these procs exist on local type, unfortunately 515 killed the .proc/procname syntax so we have to use nameof() +// So we want to have compile time guarantees these methods exist on local type, unfortunately 515 killed the .proc/procname and .verb/verbname syntax so we have to use nameof() +// For the record: GLOBAL_VERB_REF would be useless as verbs can't be global. + #if DM_VERSION < 515 -/// Call by name proc reference, checks if the proc exists on this type or as a global proc + +/// Call by name proc references, checks if the proc exists on either this type or as a global proc. #define PROC_REF(X) (.proc/##X) -/// Call by name proc reference, checks if the proc exists on given type or as a global proc +/// Call by name verb references, checks if the verb exists on either this type or as a global verb. +#define VERB_REF(X) (.verb/##X) + +/// Call by name proc reference, checks if the proc exists on either the given type or as a global proc #define TYPE_PROC_REF(TYPE, X) (##TYPE.proc/##X) -/// Call by name proc reference, checks if the proc is existing global proc +/// Call by name verb reference, checks if the verb exists on either the given type or as a global verb +#define TYPE_VERB_REF(TYPE, X) (##TYPE.verb/##X) + +/// Call by name proc reference, checks if the proc is an existing global proc #define GLOBAL_PROC_REF(X) (/proc/##X) + #else -/// Call by name proc reference, checks if the proc exists on this type or as a global proc + +/// Call by name proc references, checks if the proc exists on either this type or as a global proc. #define PROC_REF(X) (nameof(.proc/##X)) -/// Call by name proc reference, checks if the proc exists on given type or as a global proc +/// Call by name verb references, checks if the verb exists on either this type or as a global verb. +#define VERB_REF(X) (nameof(.verb/##X)) + +/// Call by name proc reference, checks if the proc exists on either the given type or as a global proc #define TYPE_PROC_REF(TYPE, X) (nameof(##TYPE.proc/##X)) -/// Call by name proc reference, checks if the proc is existing global proc +/// Call by name verb reference, checks if the verb exists on either the given type or as a global verb +#define TYPE_VERB_REF(TYPE, X) (nameof(##TYPE.verb/##X)) + +/// Call by name proc reference, checks if the proc is an existing global proc #define GLOBAL_PROC_REF(X) (/proc/##X) + +#endif + +#if (DM_VERSION == 515) +/// fcopy will crash on 515 linux if given a non-existant file, instead of returning 0 like on 514 linux or 515 windows +/// var case matches documentation for fcopy. +/world/proc/__fcopy(Src, Dst) + if (istext(Src) && !fexists(Src)) + return 0 + return fcopy(Src, Dst) + +#define fcopy(Src, Dst) world.__fcopy(Src, Dst) + #endif diff --git a/code/_compile_options.dm b/code/_compile_options.dm index 0f81b0173ac1..20aa2081318c 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -30,7 +30,7 @@ #define CBT #endif -#if !defined(CBT) && !defined(SPACEMAN_DMM) +#if !defined(CBT) && !defined(SPACEMAN_DMM) && !defined(OPENDREAM) #warn Building with Dream Maker is no longer supported and will result in errors. #warn In order to build, run BUILD.bat in the bin directory. #warn Consider switching to VSCode editor instead, where you can press Ctrl+Shift+B to build. diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 7d16e437087b..59d14f2e0fed 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -25,7 +25,6 @@ DEFINE_BITFIELD(rights, list( "POSSESS" = R_POSSESS, "PERMISSIONS" = R_PERMISSIONS, "STEALTH" = R_STEALTH, - "REJUVENATE" = R_REJUVINATE, "COLOR" = R_COLOR, "VAREDIT" = R_VAREDIT, "SOUNDS" = R_SOUNDS, @@ -88,6 +87,7 @@ DEFINE_BITFIELD(flags_ammo_behaviour, list( "AMMO_IGNORE_RESIST" = AMMO_IGNORE_RESIST, "AMMO_BALLISTIC" = AMMO_BALLISTIC, "AMMO_IGNORE_COVER" = AMMO_IGNORE_COVER, + "AMMO_ANTIVEHICLE" = AMMO_ANTIVEHICLE, "AMMO_STOPPED_BY_COVER" = AMMO_STOPPED_BY_COVER, "AMMO_SPECIAL_EMBED" = AMMO_SPECIAL_EMBED, "AMMO_STRIKES_SURFACE" = AMMO_STRIKES_SURFACE, @@ -98,7 +98,6 @@ DEFINE_BITFIELD(flags_ammo_behaviour, list( "AMMO_FLAME" = AMMO_FLAME, )) - DEFINE_BITFIELD(projectile_flags, list( "PROJECTILE_SHRAPNEL" = PROJECTILE_SHRAPNEL, "PROJECTILE_BULLSEYE" = PROJECTILE_BULLSEYE, @@ -109,24 +108,19 @@ DEFINE_BITFIELD(flags_gun_features, list( "GUN_TRIGGER_SAFETY" = GUN_TRIGGER_SAFETY, "GUN_UNUSUAL_DESIGN" = GUN_UNUSUAL_DESIGN, "GUN_SILENCED" = GUN_SILENCED, - "GUN_AUTOMATIC" = GUN_AUTOMATIC, "GUN_INTERNAL_MAG" = GUN_INTERNAL_MAG, "GUN_AUTO_EJECTOR" = GUN_AUTO_EJECTOR, "GUN_AMMO_COUNTER" = GUN_AMMO_COUNTER, - "GUN_BURST_ON" = GUN_BURST_ON, "GUN_BURST_FIRING" = GUN_BURST_FIRING, "GUN_FLASHLIGHT_ON" = GUN_FLASHLIGHT_ON, "GUN_WY_RESTRICTED" = GUN_WY_RESTRICTED, "GUN_SPECIALIST" = GUN_SPECIALIST, "GUN_WIELDED_FIRING_ONLY" = GUN_WIELDED_FIRING_ONLY, - "GUN_HAS_FULL_AUTO" = GUN_HAS_FULL_AUTO, - "GUN_FULL_AUTO_ON" = GUN_FULL_AUTO_ON, "GUN_ONE_HAND_WIELDED" = GUN_ONE_HAND_WIELDED, "GUN_ANTIQUE" = GUN_ANTIQUE, "GUN_RECOIL_BUILDUP" = GUN_RECOIL_BUILDUP, "GUN_SUPPORT_PLATFORM" = GUN_SUPPORT_PLATFORM, - "GUN_BURST_ONLY" = GUN_BURST_ONLY, - "GUN_FULL_AUTO_ONLY" = GUN_FULL_AUTO_ONLY, + "GUN_NO_DESCRIPTION" = GUN_NO_DESCRIPTION, )) DEFINE_BITFIELD(flags_magazine, list( @@ -135,6 +129,7 @@ DEFINE_BITFIELD(flags_magazine, list( "AMMUNITION_HANDFUL_BOX" = AMMUNITION_HANDFUL_BOX, "AMMUNITION_HIDE_AMMO" = AMMUNITION_HIDE_AMMO, "AMMUNITION_CANNOT_REMOVE_BULLETS" = AMMUNITION_CANNOT_REMOVE_BULLETS, + "AMMUNITION_SLAP_TRANSFER" = AMMUNITION_SLAP_TRANSFER, )) DEFINE_BITFIELD(flags_atom, list( @@ -156,6 +151,7 @@ DEFINE_BITFIELD(flags_atom, list( "INITIALIZED" = INITIALIZED, "ATOM_DECORATED" = ATOM_DECORATED, "USES_HEARING" = USES_HEARING, + "HTML_USE_INITAL_ICON" = HTML_USE_INITAL_ICON, )) DEFINE_BITFIELD(flags_item, list( @@ -172,7 +168,6 @@ DEFINE_BITFIELD(flags_item, list( "ITEM_OVERRIDE_NORTHFACE" = ITEM_OVERRIDE_NORTHFACE, "CAN_DIG_SHRAPNEL" = CAN_DIG_SHRAPNEL, "ANIMATED_SURGICAL_TOOL" = ANIMATED_SURGICAL_TOOL, - "NOTABLEMERGE" = NOTABLEMERGE, "IGNITING_ITEM" = IGNITING_ITEM, )) @@ -188,7 +183,7 @@ DEFINE_BITFIELD(flags_inv_hide, list( "HIDETOPHAIR" = HIDETOPHAIR, "HIDEALLHAIR" = HIDEALLHAIR, "HIDETAIL" = HIDETAIL, - "HIDEFACE" = HIDEFACE + "HIDEFACE" = HIDEFACE, )) DEFINE_BITFIELD(flags_inventory, list( @@ -255,6 +250,7 @@ DEFINE_BITFIELD(valid_equip_slots, list( "SLOT_LEGS" = SLOT_LEGS, "SLOT_ACCESSORY" = SLOT_ACCESSORY, "SLOT_SUIT_STORE" = SLOT_SUIT_STORE, + "SLOT_BLOCK_SUIT_STORE" = SLOT_BLOCK_SUIT_STORE, )) DEFINE_BITFIELD(flags_alarm_state, list( @@ -328,13 +324,11 @@ DEFINE_BITFIELD(flags_area, list( "AREA_NOTUNNEL" = AREA_NOTUNNEL, "AREA_ALLOW_XENO_JOIN" = AREA_ALLOW_XENO_JOIN, "AREA_CONTAINMENT" = AREA_CONTAINMENT, + "ARES_UNWEEDABLE" = AREA_UNWEEDABLE, )) DEFINE_BITFIELD(disabilities, list( "NEARSIGHTED" = NEARSIGHTED, - "EPILEPSY" = EPILEPSY, - "COUGHING" = COUGHING, - "TOURETTES" = TOURETTES, "NERVOUS" = NERVOUS, "OPIATE_RECEPTOR_DEFICIENCY" = OPIATE_RECEPTOR_DEFICIENCY, )) @@ -374,6 +368,13 @@ DEFINE_BITFIELD(mob_flags, list( "NOBIOSCAN" = NOBIOSCAN, )) +DEFINE_BITFIELD(mobility_flags, list( + "MOVE" = MOBILITY_MOVE, + "STAND" = MOBILITY_STAND, + "REST" = MOBILITY_REST, + "LIEDOWN" = MOBILITY_LIEDOWN +)) + DEFINE_BITFIELD(flags, list( "NO_BLOOD" = NO_BLOOD, "NO_BREATHE" = NO_BREATHE, @@ -421,6 +422,9 @@ DEFINE_BITFIELD(toggleable_flags, list( "MODE_NO_COMBAT_CAS" = MODE_NO_COMBAT_CAS, "MODE_LZ_PROTECTION" = MODE_LZ_PROTECTION, "MODE_SHIPSIDE_SD" = MODE_SHIPSIDE_SD, + "MODE_HARDCORE_PERMA" = MODE_HARDCORE_PERMA, + "MODE_DISPOSABLE_MOBS" = MODE_DISPOSABLE_MOBS, + "MODE_BYPASS_JOE" = MODE_BYPASS_JOE, )) DEFINE_BITFIELD(state, list( @@ -452,7 +456,9 @@ DEFINE_BITFIELD(fire_immunity, list( "FIRE_IMMUNITY_NO_DAMAGE" = FIRE_IMMUNITY_NO_DAMAGE, "FIRE_IMMUNITY_NO_IGNITE" = FIRE_IMMUNITY_NO_IGNITE, "FIRE_IMMUNITY_XENO_FRENZY" = FIRE_IMMUNITY_XENO_FRENZY, + "FIRE_VULNERABILITY" = FIRE_VULNERABILITY, )) + DEFINE_BITFIELD(vend_flags, list( "VEND_TO_HAND" = VEND_TO_HAND, "VEND_UNIFORM_RANKS" = VEND_UNIFORM_RANKS, @@ -463,4 +469,133 @@ DEFINE_BITFIELD(vend_flags, list( "VEND_INSTANCED_CATEGORY" = VEND_INSTANCED_CATEGORY, "VEND_FACTION_THEMES" = VEND_FACTION_THEMES, "VEND_USE_VENDOR_FLAGS" = VEND_USE_VENDOR_FLAGS, + "VEND_LOAD_AMMO_BOXES" = VEND_LOAD_AMMO_BOXES, + "VEND_STOCK_DYNAMIC" = VEND_STOCK_DYNAMIC +)) + +DEFINE_BITFIELD(vehicle_flags, list( + "VEHICLE_CLASS_WEAK" = VEHICLE_CLASS_WEAK, + "VEHICLE_CLASS_LIGHT" = VEHICLE_CLASS_LIGHT, + "VEHICLE_CLASS_MEDIUM" = VEHICLE_CLASS_MEDIUM, + "VEHICLE_CLASS_HEAVY" = VEHICLE_CLASS_HEAVY, + "VEHICLE_BYPASS_BLOCKERS" = VEHICLE_BYPASS_BLOCKERS, +)) + +DEFINE_BITFIELD(flags_pass, list( + "PASS_THROUGH" = PASS_THROUGH, + "PASS_AROUND" = PASS_AROUND, + "PASS_OVER_THROW_ITEM" = PASS_OVER_THROW_ITEM, + "PASS_OVER_THROW_MOB" = PASS_OVER_THROW_MOB, + "PASS_OVER_FIRE" = PASS_OVER_FIRE, + "PASS_OVER_ACID_SPRAY" = PASS_OVER_ACID_SPRAY, + "PASS_UNDER" = PASS_UNDER, + "PASS_GLASS" = PASS_GLASS, + "PASS_MOB_IS_XENO" = PASS_MOB_IS_XENO, + "PASS_MOB_IS_HUMAN" = PASS_MOB_IS_HUMAN, + "PASS_MOB_IS_OTHER" = PASS_MOB_IS_OTHER, + "PASS_MOB_THRU_XENO" = PASS_MOB_THRU_XENO, + "PASS_MOB_THRU_HUMAN" = PASS_MOB_THRU_HUMAN, + "PASS_MOB_THRU_OTHER" = PASS_MOB_THRU_OTHER, + "PASS_TYPE_CRAWLER" = PASS_TYPE_CRAWLER, + "PASS_HIGH_OVER_ONLY" = PASS_HIGH_OVER_ONLY, + "PASS_BUILDING_ONLY" = PASS_BUILDING_ONLY, + "PASS_CRUSHER_CHARGE" = PASS_CRUSHER_CHARGE, +)) + +DEFINE_BITFIELD(flags_can_pass_all, list( + "PASS_THROUGH" = PASS_THROUGH, + "PASS_AROUND" = PASS_AROUND, + "PASS_OVER_THROW_ITEM" = PASS_OVER_THROW_ITEM, + "PASS_OVER_THROW_MOB" = PASS_OVER_THROW_MOB, + "PASS_OVER_FIRE" = PASS_OVER_FIRE, + "PASS_OVER_ACID_SPRAY" = PASS_OVER_ACID_SPRAY, + "PASS_UNDER" = PASS_UNDER, + "PASS_GLASS" = PASS_GLASS, + "PASS_MOB_IS_XENO" = PASS_MOB_IS_XENO, + "PASS_MOB_IS_HUMAN" = PASS_MOB_IS_HUMAN, + "PASS_MOB_IS_OTHER" = PASS_MOB_IS_OTHER, + "PASS_MOB_THRU_XENO" = PASS_MOB_THRU_XENO, + "PASS_MOB_THRU_HUMAN" = PASS_MOB_THRU_HUMAN, + "PASS_MOB_THRU_OTHER" = PASS_MOB_THRU_OTHER, + "PASS_TYPE_CRAWLER" = PASS_TYPE_CRAWLER, + "PASS_HIGH_OVER_ONLY" = PASS_HIGH_OVER_ONLY, + "PASS_BUILDING_ONLY" = PASS_BUILDING_ONLY, + "PASS_CRUSHER_CHARGE" = PASS_CRUSHER_CHARGE, +)) + +DEFINE_BITFIELD(flags_can_pass_front, list( + "PASS_THROUGH" = PASS_THROUGH, + "PASS_AROUND" = PASS_AROUND, + "PASS_OVER_THROW_ITEM" = PASS_OVER_THROW_ITEM, + "PASS_OVER_THROW_MOB" = PASS_OVER_THROW_MOB, + "PASS_OVER_FIRE" = PASS_OVER_FIRE, + "PASS_OVER_ACID_SPRAY" = PASS_OVER_ACID_SPRAY, + "PASS_UNDER" = PASS_UNDER, + "PASS_GLASS" = PASS_GLASS, + "PASS_MOB_IS_XENO" = PASS_MOB_IS_XENO, + "PASS_MOB_IS_HUMAN" = PASS_MOB_IS_HUMAN, + "PASS_MOB_IS_OTHER" = PASS_MOB_IS_OTHER, + "PASS_MOB_THRU_XENO" = PASS_MOB_THRU_XENO, + "PASS_MOB_THRU_HUMAN" = PASS_MOB_THRU_HUMAN, + "PASS_MOB_THRU_OTHER" = PASS_MOB_THRU_OTHER, + "PASS_TYPE_CRAWLER" = PASS_TYPE_CRAWLER, + "PASS_HIGH_OVER_ONLY" = PASS_HIGH_OVER_ONLY, + "PASS_BUILDING_ONLY" = PASS_BUILDING_ONLY, + "PASS_CRUSHER_CHARGE" = PASS_CRUSHER_CHARGE, +)) + +DEFINE_BITFIELD(flags_can_pass_behind, list( + "PASS_THROUGH" = PASS_THROUGH, + "PASS_AROUND" = PASS_AROUND, + "PASS_OVER_THROW_ITEM" = PASS_OVER_THROW_ITEM, + "PASS_OVER_THROW_MOB" = PASS_OVER_THROW_MOB, + "PASS_OVER_FIRE" = PASS_OVER_FIRE, + "PASS_OVER_ACID_SPRAY" = PASS_OVER_ACID_SPRAY, + "PASS_UNDER" = PASS_UNDER, + "PASS_GLASS" = PASS_GLASS, + "PASS_MOB_IS_XENO" = PASS_MOB_IS_XENO, + "PASS_MOB_IS_HUMAN" = PASS_MOB_IS_HUMAN, + "PASS_MOB_IS_OTHER" = PASS_MOB_IS_OTHER, + "PASS_MOB_THRU_XENO" = PASS_MOB_THRU_XENO, + "PASS_MOB_THRU_HUMAN" = PASS_MOB_THRU_HUMAN, + "PASS_MOB_THRU_OTHER" = PASS_MOB_THRU_OTHER, + "PASS_TYPE_CRAWLER" = PASS_TYPE_CRAWLER, + "PASS_HIGH_OVER_ONLY" = PASS_HIGH_OVER_ONLY, + "PASS_BUILDING_ONLY" = PASS_BUILDING_ONLY, + "PASS_CRUSHER_CHARGE" = PASS_CRUSHER_CHARGE, +)) + +DEFINE_BITFIELD(sight, list( + "BLIND" = BLIND, + "SEE_BLACKNESS" = SEE_BLACKNESS, + "SEE_INFRA" = SEE_INFRA, + "SEE_MOBS" = SEE_MOBS, + "SEE_OBJS" = SEE_OBJS, + "SEE_PIXELS" = SEE_PIXELS, + "SEE_SELF" = SEE_SELF, + "SEE_THRU" = SEE_THRU, + "SEE_TURFS" = SEE_TURFS, +)) + +DEFINE_BITFIELD(vision_flags, list( + "BLIND" = BLIND, + "SEE_BLACKNESS" = SEE_BLACKNESS, + "SEE_INFRA" = SEE_INFRA, + "SEE_MOBS" = SEE_MOBS, + "SEE_OBJS" = SEE_OBJS, + "SEE_PIXELS" = SEE_PIXELS, + "SEE_SELF" = SEE_SELF, + "SEE_THRU" = SEE_THRU, + "SEE_TURFS" = SEE_TURFS, +)) + +DEFINE_BITFIELD(vis_flags, list( + "VIS_HIDE" = VIS_HIDE, + "VIS_INHERIT_DIR" = VIS_INHERIT_DIR, + "VIS_INHERIT_ICON" = VIS_INHERIT_ICON, + "VIS_INHERIT_ICON_STATE" = VIS_INHERIT_ICON_STATE, + "VIS_INHERIT_ID" = VIS_INHERIT_ID, + "VIS_INHERIT_LAYER" = VIS_INHERIT_LAYER, + "VIS_INHERIT_PLANE" = VIS_INHERIT_PLANE, + "VIS_UNDERLAY" = VIS_UNDERLAY, )) diff --git a/code/_globalvars/global_lists.dm b/code/_globalvars/global_lists.dm index f0279907f635..1f3404f403f2 100644 --- a/code/_globalvars/global_lists.dm +++ b/code/_globalvars/global_lists.dm @@ -1,27 +1,33 @@ - -var/list/unansweredAhelps = list() //This feels inefficient, but I can't think of a better way. Stores the message indexed by CID - GLOBAL_LIST_EMPTY(PressFaxes) GLOBAL_LIST_EMPTY(WYFaxes) //Departmental faxes GLOBAL_LIST_EMPTY(USCMFaxes) GLOBAL_LIST_EMPTY(ProvostFaxes) GLOBAL_LIST_EMPTY(CMBFaxes) +GLOBAL_LIST_EMPTY(UPPFaxes) +GLOBAL_LIST_EMPTY(TWEFaxes) +GLOBAL_LIST_EMPTY(CLFFaxes) GLOBAL_LIST_EMPTY(GeneralFaxes) //Inter-machine faxes GLOBAL_LIST_EMPTY(fax_contents) //List of fax contents to maintain it even if source paper is deleted +//datum containing a reference to the flattend map png url, the actual png is stored in the user's cache. +GLOBAL_LIST_EMPTY(uscm_flat_tacmap_data) +GLOBAL_LIST_EMPTY(xeno_flat_tacmap_data) + +//datum containing the svg overlay coords in array format. +GLOBAL_LIST_EMPTY(uscm_svg_tacmap_data) +GLOBAL_LIST_EMPTY(xeno_svg_tacmap_data) + GLOBAL_LIST_EMPTY(failed_fultons) //A list of fultoned items which weren't collected and fell back down +GLOBAL_LIST_EMPTY(larva_burst_by_hive) GLOBAL_LIST_INIT_TYPED(custom_huds_list, /datum/custom_hud, setup_all_huds()) GLOBAL_LIST_INIT_TYPED(custom_human_huds, /datum/custom_hud, setup_human_huds()) -//Since it didn't really belong in any other category, I'm putting this here -//This is for procs to replace all the goddamn 'in world's that are chilling around the code - -var/readied_players = 0 //How many players are readied up in the lobby +GLOBAL_VAR_INIT(readied_players, 0) //How many players are readied up in the lobby GLOBAL_LIST_EMPTY_TYPED(other_factions_human_list, /mob/living/carbon/human) -var/global/list/ai_mob_list = list() //List of all AIs +GLOBAL_LIST_EMPTY(ai_mob_list) //List of all AIs GLOBAL_LIST_EMPTY(freed_mob_list) // List of mobs freed for ghosts @@ -49,6 +55,12 @@ GLOBAL_LIST_EMPTY(mainship_pipes) // Resin constructions parameters GLOBAL_LIST_INIT_TYPED(resin_constructions_list, /datum/resin_construction, setup_resin_constructions()) +GLOBAL_LIST_INIT(resin_build_order_lesser_drone, list( + /datum/resin_construction/resin_turf/wall, + /datum/resin_construction/resin_turf/membrane, + /datum/resin_construction/resin_obj/door, +)) + GLOBAL_LIST_INIT(resin_build_order_drone, list( /datum/resin_construction/resin_turf/wall, /datum/resin_construction/resin_turf/membrane, @@ -97,12 +109,12 @@ GLOBAL_LIST_INIT_TYPED(resin_mark_meanings, /datum/xeno_mark_define, setup_resin GLOBAL_REFERENCE_LIST_INDEXED(xeno_datum_list, /datum/caste_datum, caste_type) //Chem Stuff -var/global/list/chemical_reactions_filtered_list //List of all /datum/chemical_reaction datums filtered by reaction components. Used during chemical reactions -var/global/list/chemical_reactions_list //List of all /datum/chemical_reaction datums indexed by reaction id. Used to search for the result instead of the components. -var/global/list/chemical_reagents_list //List of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff -var/global/list/chemical_properties_list //List of all /datum/chem_property datums indexed by property name +GLOBAL_LIST(chemical_reactions_filtered_list) //List of all /datum/chemical_reaction datums filtered by reaction components. Used during chemical reactions +GLOBAL_LIST(chemical_reactions_list) //List of all /datum/chemical_reaction datums indexed by reaction id. Used to search for the result instead of the components. +GLOBAL_LIST(chemical_reagents_list) //List of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff +GLOBAL_LIST(chemical_properties_list) //List of all /datum/chem_property datums indexed by property name //List of all id's from classed /datum/reagent datums indexed by class or tier. Used by chemistry generator and chem spawners. -var/global/list/list/chemical_gen_classes_list = list("C" = list(),"C1" = list(),"C2" = list(),"C3" = list(),"C4" = list(),"C5" = list(),"C6" = list(),"T1" = list(),"T2" = list(),"T3" = list(),"T4" = list(),"tau" = list()) +GLOBAL_LIST_INIT_TYPED(chemical_gen_classes_list, /list, list("C" = list(),"C1" = list(),"C2" = list(),"C3" = list(),"C4" = list(),"C5" = list(),"C6" = list(),"T1" = list(),"T2" = list(),"T3" = list(),"T4" = list(),"tau", list())) //properties generated in chemicals, helps to make sure the same property doesn't show up 10 times GLOBAL_LIST_INIT_TYPED(generated_properties, /list, list("positive" = list(), "negative" = list(), "neutral" = list())) @@ -128,13 +140,12 @@ GLOBAL_LIST_INIT(surgical_patient_types, setup_surgical_patient_types()) GLOBAL_LIST_INIT_TYPED(gear_path_presets_list, /datum/equipment_preset, setup_gear_path_presets()) GLOBAL_LIST_INIT_TYPED(gear_name_presets_list, /datum/equipment_preset, setup_gear_name_presets()) -var/global/list/active_areas = list() -var/global/list/all_areas = list() +GLOBAL_LIST_EMPTY(active_areas) +GLOBAL_LIST_EMPTY(all_areas) -var/global/list/turfs = list() -var/global/list/z1turfs = list() +GLOBAL_LIST_EMPTY(turfs) -/var/global/list/objects_of_interest // This is used to track the stealing objective for Agents. +GLOBAL_LIST(objects_of_interest) // This is used to track the stealing objective for Agents. // Areas exempt from explosive antigrief (not Z-levels) GLOBAL_LIST_INIT(explosive_antigrief_exempt_areas, list( @@ -170,7 +181,9 @@ GLOBAL_LIST_INIT_TYPED(hive_datum, /datum/hive_status, list( XENO_HIVE_TAMED = new /datum/hive_status/corrupted/tamed(), XENO_HIVE_MUTATED = new /datum/hive_status/mutated(), XENO_HIVE_FORSAKEN = new /datum/hive_status/forsaken(), - XENO_HIVE_YAUTJA = new /datum/hive_status/yautja() + XENO_HIVE_YAUTJA = new /datum/hive_status/yautja(), + XENO_HIVE_RENEGADE = new /datum/hive_status/corrupted/renegade(), + XENO_HIVE_TUTORIAL = new /datum/hive_status/tutorial() )) GLOBAL_LIST_INIT(xeno_evolve_times, setup_xeno_evolve_times()) @@ -196,23 +209,23 @@ GLOBAL_REFERENCE_LIST_INDEXED(hair_gradient_list, /datum/sprite_accessory/hair_g GLOBAL_REFERENCE_LIST_INDEXED(yautja_hair_styles_list, /datum/sprite_accessory/yautja_hair, name) //Backpacks -var/global/list/backbaglist = list("Backpack", "Satchel") +GLOBAL_LIST_INIT(backbaglist, list("Backpack", "Satchel")) //Armor styles GLOBAL_LIST_INIT(armor_style_list, list("Padded" = 1, "Padless" = 2, "Ridged" = 3, "Carrier" = 4, "Skull" = 5, "Smooth" = 6, "Random")) // var/global/list/exclude_jobs = list(/datum/job/ai,/datum/job/cyborg) -var/global/round_should_check_for_win = TRUE +GLOBAL_VAR_INIT(round_should_check_for_win, TRUE) -var/global/list/key_mods = list("CTRL", "ALT", "SHIFT") +GLOBAL_LIST_INIT(key_mods, list("CTRL", "ALT", "SHIFT")) // A list storing the pass flags for specific types of atoms -var/global/list/pass_flags_cache = list() +GLOBAL_LIST_EMPTY(pass_flags_cache) //Parameterss cache -var/global/list/paramslist_cache = list() +GLOBAL_LIST_EMPTY(paramslist_cache) //Turf Edge info uberlist -- a list whos states contain GLOB.edgeinfo_X keyed as different icon_states -var/global/list/turf_edgeinfo_cache = list() +GLOBAL_LIST_EMPTY(turf_edgeinfo_cache) #define FULL_EDGE 1 #define HALF_EDGE_RIGHT 2 @@ -264,10 +277,10 @@ GLOBAL_LIST_INIT(typecache_living, typecacheof(/mob/living)) GLOBAL_LIST_INIT(emote_list, init_emote_list()) /proc/cached_params_decode(params_data, decode_proc) - . = paramslist_cache[params_data] + . = GLOB.paramslist_cache[params_data] if(!.) . = call(decode_proc)(params_data) - paramslist_cache[params_data] = . + GLOB.paramslist_cache[params_data] = . /proc/key_number_decode(key_number_data) var/list/L = params2list(key_number_data) @@ -448,10 +461,10 @@ GLOBAL_LIST_INIT(emote_list, init_emote_list()) /* // Uncomment to debug chemical reaction list. /client/verb/debug_chemical_list() - for (var/reaction in chemical_reactions_filtered_list) - . += "chemical_reactions_filtered_list\[\"[reaction]\"\] = \"[chemical_reactions_filtered_list[reaction]]\"\n" - if(islist(chemical_reactions_filtered_list[reaction])) - var/list/L = chemical_reactions_filtered_list[reaction] + for (var/reaction in GLOB.chemical_reactions_filtered_list) + . += "GLOB.chemical_reactions_filtered_list\[\"[reaction]\"\] = \"[GLOB.chemical_reactions_filtered_list[reaction]]\"\n" + if(islist(GLOB.chemical_reactions_filtered_list[reaction])) + var/list/L = GLOB.chemical_reactions_filtered_list[reaction] for(var/t in L) . += " has: [t]\n" world << . @@ -465,22 +478,22 @@ GLOBAL_LIST_EMPTY(timelocks) //the global list of specialist kits that haven't been claimed yet. -var/global/list/available_specialist_sets = list( +GLOBAL_LIST_INIT(available_specialist_sets, list( "Scout Set", "Sniper Set", "Demolitionist Set", "Heavy Grenadier Set", "Pyro Set" - ) + )) //Similar thing, but used in /obj/item/spec_kit -var/global/list/available_specialist_kit_boxes = list( +GLOBAL_LIST_INIT(available_specialist_kit_boxes, list( "Pyro" = 2, "Grenadier" = 2, "Sniper" = 2, "Scout" = 2, "Demo" = 2, - ) + )) /proc/init_global_referenced_datums() init_keybindings() diff --git a/code/_globalvars/lists/clans.dm b/code/_globalvars/lists/clans.dm new file mode 100644 index 000000000000..f04915a37435 --- /dev/null +++ b/code/_globalvars/lists/clans.dm @@ -0,0 +1,19 @@ +GLOBAL_LIST_INIT_TYPED(clan_ranks, /datum/yautja_rank, list( + CLAN_RANK_UNBLOODED = new /datum/yautja_rank/unblooded(), + CLAN_RANK_YOUNG = new /datum/yautja_rank/young(), + CLAN_RANK_BLOODED = new /datum/yautja_rank/blooded(), + CLAN_RANK_ELITE = new /datum/yautja_rank/elite(), + CLAN_RANK_ELDER = new /datum/yautja_rank/elder(), + CLAN_RANK_LEADER = new /datum/yautja_rank/leader(), + CLAN_RANK_ADMIN = new /datum/yautja_rank/ancient() +)) + +GLOBAL_LIST_INIT(clan_ranks_ordered, list( + CLAN_RANK_UNBLOODED = CLAN_RANK_UNBLOODED_INT, + CLAN_RANK_YOUNG = CLAN_RANK_YOUNG_INT, + CLAN_RANK_BLOODED = CLAN_RANK_BLOODED_INT, + CLAN_RANK_ELITE = CLAN_RANK_ELITE_INT, + CLAN_RANK_ELDER = CLAN_RANK_ELDER_INT, + CLAN_RANK_LEADER = CLAN_RANK_LEADER_INT, + CLAN_RANK_ADMIN = CLAN_RANK_ADMIN_INT +)) diff --git a/code/_globalvars/lists/mapping_globals.dm b/code/_globalvars/lists/mapping_globals.dm index cf5b2ad435b8..47cc22dae5e1 100644 --- a/code/_globalvars/lists/mapping_globals.dm +++ b/code/_globalvars/lists/mapping_globals.dm @@ -27,6 +27,7 @@ GLOBAL_LIST_EMPTY(latewhiskey) GLOBAL_LIST_EMPTY(latejoin) GLOBAL_LIST_EMPTY(latejoin_by_squad) +GLOBAL_LIST_EMPTY(latejoin_by_job) GLOBAL_LIST_EMPTY(zombie_landmarks) diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 187f179094b2..e2203aadce0c 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -23,6 +23,7 @@ GLOBAL_LIST_EMPTY_TYPED(alive_human_list, /mob/living/carbon/human) // list of a GLOBAL_LIST_EMPTY_TYPED(xeno_mob_list, /mob/living/carbon/xenomorph) GLOBAL_LIST_EMPTY_TYPED(living_xeno_list, /mob/living/carbon/xenomorph) GLOBAL_LIST_EMPTY_TYPED(xeno_cultists, /mob/living/carbon/human) +GLOBAL_LIST_EMPTY_TYPED(player_embryo_list, /obj/item/alien_embryo) GLOBAL_LIST_EMPTY_TYPED(hellhound_list, /mob/living/carbon/xenomorph/hellhound) GLOBAL_LIST_EMPTY_TYPED(zombie_list, /mob/living/carbon/human) diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm new file mode 100644 index 000000000000..09ad2b422d3c --- /dev/null +++ b/code/_globalvars/lists/names.dm @@ -0,0 +1,39 @@ +GLOBAL_LIST_INIT(ai_names, file2list("strings/ai.txt")) +GLOBAL_LIST_INIT(first_names_male, file2list("strings/first_male.txt")) +GLOBAL_LIST_INIT(first_names_female, file2list("strings/first_female.txt")) +GLOBAL_LIST_INIT(last_names, file2list("strings/last.txt")) +GLOBAL_LIST_INIT(clown_names, file2list("strings/clown.txt")) +GLOBAL_LIST_INIT(operation_titles, file2list("strings/operation_title.txt")) +GLOBAL_LIST_INIT(operation_prefixes, file2list("strings/operation_prefix.txt")) +GLOBAL_LIST_INIT(operation_postfixes, file2list("strings/operation_postfix.txt")) + +GLOBAL_LIST_INIT(verbs, file2list("strings/verbs.txt")) +//loaded on startup because of " +//would include in rsc if ' was used + + +GLOBAL_LIST_INIT(first_names_male_clf, list("Alan","Jack","Bil","Jonathan","John","Shiro","Gareth","Clark","Sam", "Lionel", "Aaron", "Charlie", "Scott", "Winston", "Aidan", "Ellis", "Mason", "Wesley", "Nicholas", "Calvin", "Nishikawa", "Hiroto", "Chiba", "Ouchi", "Furuse", "Takagi", "Oba", "Kishimoto")) +GLOBAL_LIST_INIT(first_names_female_clf, list("Emma", "Adelynn", "Mary", "Halie", "Chelsea", "Lexie", "Arya", "Alicia", "Selah", "Amber", "Heather", "Myra", "Heidi", "Charlotte", "Oliva", "Lydia", "Tia", "Riko", "Ari", "Machida", "Ueki", "Mihara", "Noda")) +GLOBAL_LIST_INIT(last_names_clf, list("Hawkins","Rickshaw","Elliot","Billard","Cooper","Fox", "Barlow", "Barrows", "Stewart", "Morgan", "Green", "Stone", "Burr", "Hunt", "Yuko", "Gesshin", "Takanibu", "Tetsuzan", "Tomomi", "Bokkai", "Takesi")) + +GLOBAL_LIST_INIT(first_names_male_colonist, list("Alan","Jack","Bil","Jonathan","John","Shiro","Gareth","Clark","Sam", "Lionel", "Aaron", "Charlie", "Scott", "Winston", "Aidan", "Ellis", "Mason", "Wesley", "Nicholas", "Calvin", "Nishikawa", "Hiroto", "Chiba", "Ouchi", "Furuse", "Takagi", "Oba", "Kishimoto")) +GLOBAL_LIST_INIT(first_names_female_colonist, list("Emma", "Adelynn", "Mary", "Halie", "Chelsea", "Lexie", "Arya", "Alicia", "Selah", "Amber", "Heather", "Myra", "Heidi", "Charlotte", "Ashley", "Raven", "Tori", "Anne", "Madison", "Oliva", "Lydia", "Tia", "Riko", "Ari", "Machida", "Ueki", "Mihara", "Noda")) +GLOBAL_LIST_INIT(last_names_colonist, list("Hawkins","Rickshaw","Elliot","Billard","Cooper","Fox", "Barlow", "Barrows", "Stewart", "Morgan", "Green", "Stone", "Titan", "Crowe", "Krantz", "Pathillo", "Driggers", "Burr", "Hunt", "Yuko", "Gesshin", "Takanibu", "Tetsuzan", "Tomomi", "Bokkai", "Takesi")) + +GLOBAL_LIST_INIT(first_names_male_upp, list("Badai","Mongkeemur","Alexei","Andrei","Artyom","Viktor","Xiangai","Ivan","Choban","Oleg", "Dayan", "Taghi", "Batu", "Arik", "Orda", "Ghazan", "Bala", "Gao", "Zhan", "Ren", "Hou", "Xue", "Serafim", "Luca", "Su", "György", "István", "Mihály", "Vladimir", "Aleksandr", "Fyodor", "Bhodar", "Qazem", "Łukasz", "Miłogost", "Radogost", "Uniegost", "Hostirad", "Hostimil", "Hostisvit", "Lubgost", "Gościsław", "Vseslav", "Bohuměr", "Bronisław", "Česćiměr", "Dobysław", "Horisław", "Jaroměr", "Mirosław", "Mječisław", "Radoměr", "Stanij", "Stanisław", "Wjeleměr", "Wójsław")) +GLOBAL_LIST_INIT(first_names_female_upp, list("Altani","Cirina","Anastasiya","Saran","Wei","Oksana","Ren","Svena","Tatyana","Yaroslava", "Izabella", "Kata", "Krisztina", "Miruna", "Flori", "Lucia", "Anica", "Li", "Yimu", "Alona", "Hsiau-Li", "Xiaoling", "Erhong", "Baśka", "Angela", "Angelina", "Angja", "Ankica", "Biljana", "Bisera", "Bistra", "Blaga", "Blagica", "Blagorodna", "Verka", "Vladica", "Denica", "Živka", "Zlata", "Jagoda", "Letka", "Ljupka", "Mila", "Mirjana", "Mirka", "Rada", "Radmila", "Slavica", "Slavka", "Snežana", "Stojna", "Ubavka", "Jaromir", "Mscëwòj", "Subisłôw", "Swiãtopôłk", "Ji-Sun", "Chaeyong", "Chaewon", "Saerom", "Seoyeong", "Jiheon", "Hayoung")) +GLOBAL_LIST_INIT(last_names_upp, list("Azarov","Bogdanov","Barsukov","Golovin","Davydov","Khan","Noica","Barbu","Zhukov","Ivanov","Mihai","Kasputin","Belov", "Belova","Melnikov", "Vasilevsky", "Aleksander", "Halkovich", "Stanislaw", "Proca", "Zaituc", "Arcos", "Kubat", "Kral", "Volf", "Xun", "Jia", "Bachoń", "Wang", "Ji", "Xiang", "Zhang", "Mei", "Ma", "Kim", "Yi", "Ri", "Pak", "Chong", "Baek", "Kwon", "Hwang", "Roh", "Lee", "Song")) + +GLOBAL_LIST_INIT(first_names_male_pmc, list("Owen","Luka","Nelson","Branson", "Tyson", "Leo", "Bryant", "Kobe", "Rohan", "Riley", "Aidan", "Watase","Egawa", "Hisakawa", "Koide", "Remy", "Martial", "Magnus", "Heiko", "Lennard")) +GLOBAL_LIST_INIT(first_names_female_pmc, list("Madison","Jessica","Anna","Juliet", "Olivia", "Lea", "Diane", "Kaori", "Beatrice", "Riley", "Amy", "Natsue","Yumi", "Aiko", "Fujiko", "Jennifer", "Ashley", "Mary", "Hitomi", "Lisa")) +GLOBAL_LIST_INIT(last_names_pmc, list("Bates","Shaw","Hansen","Black", "Chambers", "Hall", "Gibson", "Weiss", "Waller", "Burton", "Bakin", "Rohan", "Naomichi", "Yakumo", "Yosai", "Gallagher", "Hiles", "Bourdon", "Strassman", "Palau")) + +GLOBAL_LIST_INIT(first_names_male_gladiator, list("Augustus", "Maximus", "Octavius", "Septimus", "Titus", "Brutus", "Caesar", "Justinian")) +GLOBAL_LIST_INIT(first_names_female_gladiator, list("Aelia", "Aquila", "Caecilia", "Camilla", "Claudia", "Flavia", "Martina", "Theodora")) + +GLOBAL_LIST_INIT(first_names_male_dutch, list("Raymond", "Jesse", "Jack", "John", "Sam", "Aaron", "Charlie", "Ellis", "Nick", "Francis", "Louis")) +GLOBAL_LIST_INIT(first_names_female_dutch, list("Chelsea", "Mira", "Jessica", "Catherine", "Eliza", "Emma", "Ashley", "Annie", "Alicia", "Miranda", "Ellen")) + +GLOBAL_LIST_INIT(monkey_names, list("Abu", "Aldo", "Bear", "Bingo", "Clyde", "Crystal", "Gordo", "George", "Koko", "Marcel", "Nim", "Rafiki", "Spike", "Banana", "Boots", "Bubbles", "Smiley", "Winston")) + +GLOBAL_LIST_INIT(weapon_surnames, list("Adze", "Axe", "Bagh Nakha", "Bo", "Bola", "Bow", "Bowman", "Cannon", "Carbine", "Cestus", "Club", "Culverin", "Dagger", "Dao", "Derringer", "Dha", "Dussack", "Emeici", "Falchion", "Fan", "Flyssa", "Gauntlet", "Hammer", "Halberd", "Harquebus", "Hatchet", "Hwando", "Katar", "Kampilan", "Knuckles", "Lance", "Lancer", "Larim", "Maduvu", "Mace", "Maru", "Mauser", "Messer", "Mine", "Mubucae", "Nyepel", "Onager", "Pata", "Pike", "Ram", "Saber", "Seax", "Shamsir", "Sickle", "Sling", "Spear", "Spears", "Staff", "Sword", "Tekko")) diff --git a/code/_globalvars/lists/object_lists.dm b/code/_globalvars/lists/object_lists.dm index 3a417625538b..5cfd0653c24a 100644 --- a/code/_globalvars/lists/object_lists.dm +++ b/code/_globalvars/lists/object_lists.dm @@ -23,11 +23,10 @@ GLOBAL_LIST_EMPTY_TYPED(disposal_retrieval_list, /obj/structure/disposaloutlet/r GLOBAL_LIST_EMPTY_TYPED(disposalpipe_up_list, /obj/structure/disposalpipe/up/almayer) GLOBAL_LIST_EMPTY_TYPED(disposalpipe_down_list, /obj/structure/disposalpipe/down/almayer) -GLOBAL_LIST_EMPTY_TYPED(hijack_bustable_windows, /obj/structure/window) -GLOBAL_LIST_EMPTY_TYPED(hijack_deletable_windows, /obj/structure/machinery/door/window/ultra) -GLOBAL_LIST_EMPTY_TYPED(hijack_bustable_ladders, /obj/structure/ladder/fragile_almayer) - GLOBAL_LIST_EMPTY_TYPED(all_multi_vehicles, /obj/vehicle/multitile) GLOBAL_LIST_EMPTY_TYPED(lifeboat_almayer_docks, /obj/docking_port/stationary/lifeboat_dock) GLOBAL_LIST_EMPTY_TYPED(lifeboat_doors, /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor) + +GLOBAL_LIST_EMPTY_TYPED(teleporters, /datum/teleporter) +GLOBAL_LIST_EMPTY(teleporters_by_id) diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 6c689e995504..5d7955d85013 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -1,3 +1,85 @@ +GLOBAL_VAR_INIT(game_year, 2182) + +GLOBAL_VAR_INIT(ooc_allowed, TRUE) +GLOBAL_VAR_INIT(looc_allowed, TRUE) +GLOBAL_VAR_INIT(dsay_allowed, TRUE) +GLOBAL_VAR_INIT(dooc_allowed, TRUE) +GLOBAL_VAR_INIT(dlooc_allowed, FALSE) + +GLOBAL_VAR_INIT(enter_allowed, TRUE) + +GLOBAL_LIST_EMPTY(admin_log) +GLOBAL_LIST_EMPTY(asset_log) + +// multiplier for watts per tick <> cell storage (eg: 0.02 means if there is a load of 1000 watts, 20 units will be taken from a cell per second) +//It's a conversion constant. power_used*CELLRATE = charge_provided, or charge_used/CELLRATE = power_provided +#define CELLRATE 0.006 + +// Cap for how fast cells charge, as a percentage-per-tick (0.01 means cellcharge is capped to 1% per second) +#define CHARGELEVEL 0.001 + +GLOBAL_VAR(VehicleElevatorConsole) +GLOBAL_VAR(VehicleGearConsole) + +//Spawnpoints. +GLOBAL_LIST_EMPTY(fallen_list) +/// This is for dogtags placed on crosses- they will show up at the end-round memorial. +GLOBAL_LIST_EMPTY(fallen_list_cross) + +GLOBAL_LIST_INIT(diagonals, list(NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)) +GLOBAL_LIST_INIT(alldirs, list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)) +GLOBAL_LIST_INIT(reverse_dir, list(2, 1, 3, 8, 10, 9, 11, 4, 6, 5, 7, 12, 14, 13, 15, 32, 34, 33, 35, 40, 42, 41, 43, 36, 38, 37, 39, 44, 46, 45, 47, 16, 18, 17, 19, 24, 26, 25, 27, 20, 22, 21, 23, 28, 30, 29, 31, 48, 50, 49, 51, 56, 58, 57, 59, 52, 54, 53, 55, 60, 62, 61, 63)) + + + +GLOBAL_VAR(join_motd) +GLOBAL_VAR(current_tms) + +GLOBAL_LIST_INIT(AAlarmWireColorToFlag, RandomAAlarmWires()) +GLOBAL_LIST(AAlarmIndexToFlag) +GLOBAL_LIST(AAlarmIndexToWireColor) +GLOBAL_LIST(AAlarmWireColorToIndex) + +/// 3 minutes in the station. +#define shuttle_time_in_station 3 MINUTES +/// 10 minutes to arrive. +#define shuttle_time_to_arrive 10 MINUTES + + // For FTP requests. (i.e. downloading runtime logs.) + // However it'd be ok to use for accessing attack logs and such too, which are even laggier. +GLOBAL_VAR_INIT(fileaccess_timer, 0) + +// Reference list for disposal sort junctions. Filled up by sorting junction's New() +GLOBAL_LIST_EMPTY(tagger_locations) + +//added for Xenoarchaeology, might be useful for other stuff +GLOBAL_LIST_INIT(alphabet_uppercase, list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z")) +GLOBAL_LIST_INIT(alphabet_lowercase, list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")) + +GLOBAL_LIST_INIT(greek_letters, list("Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta", "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omnicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega")) +GLOBAL_LIST_INIT(nato_phonetic_alphabet, list("Alpha", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliett", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-Ray", "Yankee", "Zulu")) + +//Used for autocall procs on ERT +GLOBAL_VAR_INIT(distress_cancel, FALSE) +GLOBAL_VAR_INIT(destroy_cancel, FALSE) + +// Which lobby art is on display +// This is updated by the lobby art turf when it initializes +GLOBAL_VAR_INIT(displayed_lobby_art, -1) + +// Last global ID that was assigned to a mob (for round recording purposes) +GLOBAL_VAR_INIT(last_mob_gid, 0) + +GLOBAL_LIST_INIT(almayer_ship_sections, list( + "Upper deck Foreship", + "Upper deck Midship", + "Upper deck Aftship", + "Lower deck Foreship", + "Lower deck Midship", + "Lower deck Aftship" +)) + + GLOBAL_VAR_INIT(internal_tick_usage, 0.2 * world.tick_lag) /// Global performance feature toggle flags @@ -14,8 +96,24 @@ GLOBAL_LIST_INIT(pill_icon_mappings, map_pill_icons()) /// In-round override to default OOC color GLOBAL_VAR(ooc_color_override) +// tacmap cooldown for xenos and marines +GLOBAL_VAR_INIT(uscm_canvas_cooldown, 0) +GLOBAL_VAR_INIT(xeno_canvas_cooldown, 0) + +// getFlatIcon cooldown for xenos and marines +GLOBAL_VAR_INIT(uscm_flatten_map_icon_cooldown, 0) +GLOBAL_VAR_INIT(xeno_flatten_map_icon_cooldown, 0) + +// latest unannounced flat tacmap for xenos and marines +GLOBAL_VAR(uscm_unannounced_map) +GLOBAL_VAR(xeno_unannounced_map) + +//global tacmaps for action button access +GLOBAL_DATUM_INIT(uscm_tacmap_status, /datum/tacmap/drawing/status_tab_view, new) +GLOBAL_DATUM_INIT(xeno_tacmap_status, /datum/tacmap/drawing/status_tab_view/xeno, new) + /// List of roles that can be setup for each gamemode -GLOBAL_LIST_INIT(gamemode_roles, list()) +GLOBAL_LIST_EMPTY(gamemode_roles) GLOBAL_VAR_INIT(minimum_exterior_lighting_alpha, 255) @@ -27,3 +125,13 @@ GLOBAL_VAR_INIT(time_offset, setup_offset()) /// Sets the offset 2 lines above. /proc/setup_offset() return rand(10 MINUTES, 24 HOURS) + +/// The last count of possible candidates in the xeno larva queue (updated via get_alien_candidates) +GLOBAL_VAR(xeno_queue_candidate_count) + +//Coordinate obsfucator +//Used by the rangefinders and linked systems to prevent coords collection/prefiring +/// A number between -500 and 500. +GLOBAL_VAR(obfs_x) +/// A number between -500 and 500. +GLOBAL_VAR(obfs_y) diff --git a/code/_macros.dm b/code/_macros.dm index e8a97cbada83..ec4f559f0bfc 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -78,14 +78,14 @@ // Spawns multiple objects of the same type #define cast_new(type, num, args...) if((num) == 1) { new type(args) } else { for(var/i=0;i<(num),i++) { new type(args) } } -#define FLAGS_EQUALS(flag, flags) ((flag & (flags)) == (flags)) +#define FLAGS_EQUALS(flag, flags) (((flag) & (flags)) == (flags)) #define IS_DIAGONAL_DIR(dir) (dir & ~(NORTH|SOUTH)) // Inverse direction, taking into account UP|DOWN if necessary. -#define REVERSE_DIR(dir) ( ((dir & 85) << 1) | ((dir & 170) >> 1) ) +#define REVERSE_DIR(dir) ( (((dir) & 85) << 1) | (((dir) & 170) >> 1) ) -#define POSITIVE(val) max(val, 0) +#define POSITIVE(val) max((val), 0) #define GENERATE_DEBUG_ID "[rand(0, 9)][rand(0, 9)][rand(0, 9)][rand(0, 9)][pick(alphabet_lowercase)][pick(alphabet_lowercase)][pick(alphabet_lowercase)][pick(alphabet_lowercase)]" diff --git a/code/_onclick/adjacent.dm b/code/_onclick/adjacent.dm index dd7a528bb8a6..c60f7ceed628 100644 --- a/code/_onclick/adjacent.dm +++ b/code/_onclick/adjacent.dm @@ -94,6 +94,11 @@ Quick adjacency (to turf): /obj/item/Adjacent(atom/neighbor, recurse = 1) if(neighbor == loc || (loc && neighbor == loc.loc)) return TRUE + + // Internal storages have special relationships with the object they are connected to and we still want two depth adjacency for storages + if(istype(loc?.loc, /obj/item/storage/internal) && recurse > 0) + return loc.loc.Adjacent(neighbor, recurse) + if(issurface(loc)) return loc.Adjacent(neighbor, recurse) //Surfaces don't count as storage depth. else if(istype(loc, /obj/item)) @@ -289,7 +294,7 @@ Quick adjacency (to turf): var/turf/curT = get_turf(A) var/is_turf = isturf(A) - for(var/turf/T in getline2(A, src)) + for(var/turf/T in get_line(A, src)) if(curT == T) continue if(T.density) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index ad2f305790d2..72e298d32729 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -71,7 +71,9 @@ return // Click handled elsewhere. (These clicks are not affected by the next_move cooldown) - if (click(A, mods) || A.clicked(src, mods, location, params)) + if(click(A, mods)) + return + if(A.clicked(src, mods, location, params)) return // Default click functions from here on. @@ -80,7 +82,7 @@ return face_atom(A) - if(mods["middle"]) + if(mods["middle"]) return // Special type of click. if (is_mob_restrained()) @@ -208,7 +210,7 @@ return TRUE if (mods["ctrl"]) - if (Adjacent(user)) + if (Adjacent(user) && user.next_move < world.time) user.start_pulling(src) return TRUE return FALSE @@ -332,7 +334,7 @@ if(prefs.adaptive_zoom) INVOKE_ASYNC(src, PROC_REF(adaptive_zoom)) else if(prefs.auto_fit_viewport) - INVOKE_ASYNC(src, .verb/fit_viewport) + INVOKE_ASYNC(src, VERB_REF(fit_viewport)) /client/proc/get_adaptive_zoom_factor() if(!prefs.adaptive_zoom) @@ -355,7 +357,7 @@ /client/proc/create_clickcatcher() if(!void) void = new() - screen += void + add_to_screen(void) /client/proc/apply_clickcatcher() create_clickcatcher() @@ -373,9 +375,9 @@ tX = tX[1] var/shiftX = C.pixel_x / world.icon_size var/shiftY = C.pixel_y / world.icon_size - var/list/actual_view = getviewsize(C ? C.view : world_view_size) - tX = Clamp(origin.x + text2num(tX) + shiftX - round(actual_view[1] / 2) - 1, 1, world.maxx) - tY = Clamp(origin.y + text2num(tY) + shiftY - round(actual_view[2] / 2) - 1, 1, world.maxy) + var/list/actual_view = getviewsize(C ? C.view : GLOB.world_view_size) + tX = clamp(origin.x + text2num(tX) + shiftX - round(actual_view[1] / 2) - 1, 1, world.maxx) + tY = clamp(origin.y + text2num(tY) + shiftY - round(actual_view[2] / 2) - 1, 1, world.maxy) return locate(tX, tY, tZ) diff --git a/code/_onclick/click_hold.dm b/code/_onclick/click_hold.dm index c68beb52fc9e..996f7ed2bf3b 100644 --- a/code/_onclick/click_hold.dm +++ b/code/_onclick/click_hold.dm @@ -30,6 +30,9 @@ mouse_trace_history = null LAZYADD(mouse_trace_history, A) + if(SEND_SIGNAL(mob, COMSIG_MOB_MOUSEDOWN, A, T, skin_ctl, params) & COMSIG_MOB_CLICK_CANCELED) + return + var/list/mods = params2list(params) if(mods["left"]) SEND_SIGNAL(src, COMSIG_CLIENT_LMB_DOWN, A, mods) @@ -62,6 +65,9 @@ params += ";click_catcher=1" holding_click = FALSE + if(SEND_SIGNAL(mob, COMSIG_MOB_MOUSEUP, A, T, skin_ctl, params) & COMSIG_MOB_CLICK_CANCELED) + return + var/list/mods = params2list(params) if(mods["left"]) SEND_SIGNAL(src, COMSIG_CLIENT_LMB_UP, A, params) @@ -75,6 +81,9 @@ if(click_catcher_click) params += ";click_catcher=1" + if(SEND_SIGNAL(mob, COMSIG_MOB_MOUSEDRAG, src_obj, over_obj, src_loc, over_loc, src_ctl, over_ctl, params) & COMSIG_MOB_CLICK_CANCELED) + return + var/list/mods = params2list(params) if(mods["left"]) SEND_SIGNAL(src, COMSIG_CLIENT_LMB_DRAG, src_obj, over_obj, params) @@ -85,3 +94,12 @@ // Add the hovered atom to the trace LAZYADD(mouse_trace_history, over_obj) + +/client/MouseDrop(datum/over_object, datum/src_location, over_location, src_control, over_control, params) + . = ..() + + if(src_location) + SEND_SIGNAL(src_location, COMSIG_ATOM_DROPPED_ON, over_object, src) + + if(over_object) + SEND_SIGNAL(over_object, COMSIG_ATOM_DROP_ON, src_location, src) diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm deleted file mode 100644 index c3056ed5af5f..000000000000 --- a/code/_onclick/cyborg.dm +++ /dev/null @@ -1,143 +0,0 @@ -/* - Cyborg ClickOn() - - Cyborgs have no range restriction on attack_robot(), because it is basically an AI click. - However, they do have a range restriction on item use, so they cannot do without the - adjacency code. -*/ - -/mob/living/silicon/robot/click(atom/A, mods) - if(lockcharge || is_mob_incapacitated(TRUE)) - return 1 - - if(mods["middle"]) - cycle_modules() - return 1 - - if (mods["ctrl"] && mods["shift"]) - if (!A.BorgCtrlShiftClick(src)) - return 1 - - else if (mods["ctrl"]) - if (!A.BorgCtrlClick(src)) - return 1 - - else if(mods["shift"]) - return A.BorgShiftClick(src) - - if(mods["alt"]) // alt and alt-gr (rightalt) - if (!A.BorgAltClick(src)) - return 1 - - - if(aiCamera.in_camera_mode) - aiCamera.camera_mode_off() - if(is_component_functioning("camera")) - aiCamera.captureimage(A, usr) - else - to_chat(src, SPAN_DANGER("Your camera isn't functional.")) - return 1 - - face_atom(A) - if (world.time <= next_move) return - var/obj/item/W = get_active_hand() - - // Cyborgs have no range-checking unless there is item use - if(!W) - A.add_hiddenprint(src) - A.attack_robot(src) - return 1 - - // buckled cannot prevent machine interlinking but stops arm movement - if( buckled ) - return 1 - - if(W == A) - next_move = world.time + 8 - - W.attack_self(src) - return 1 - - // cyborgs are prohibited from using storage items so we can I think safely remove (A.loc in contents) - if(A == loc || (A in loc) || (A in contents)) - // No adjacency checks - next_move = world.time + 8 - - var/resolved = A.attackby(W,src) - if(!resolved && A && W) - W.afterattack(A, src, 1, mods) - return 1 - - if(!isturf(loc)) - return 1 - - // cyborgs are prohibited from using storage items so we can I think safely remove (A.loc && isturf(A.loc.loc)) - if(isturf(A) || isturf(A.loc)) - if(A.Adjacent(src)) // see adjacent.dm - next_move = world.time + 10 - - var/resolved = A.attackby(W, src) - if(!resolved && A && W) - W.afterattack(A, src, 1, mods) - return 1 - else - next_move = world.time + 10 - W.afterattack(A, src, 0, mods) - return 1 - return 0 - - - -//Give cyborgs hotkey clicks without breaking existing uses of hotkey clicks -// for non-doors/apcs - -/atom/proc/BorgCtrlShiftClick(mob/living/silicon/robot/user) //forward to human click if not overriden - return 1 - -/obj/structure/machinery/door/airlock/BorgCtrlShiftClick() - AICtrlShiftClick() - -/atom/proc/BorgShiftClick(mob/living/silicon/robot/user) //this should only return 1 if it is not overridden. this prevents things like examining objects also clicking them with an activated module. - return 1 - -/obj/structure/machinery/door/airlock/BorgShiftClick() // Opens and closes doors! Forwards to AI code. - AIShiftClick() - - -/atom/proc/BorgCtrlClick(mob/living/silicon/robot/user) //forward to human click if not overriden - return 1 - -/obj/structure/machinery/door/airlock/BorgCtrlClick() // Bolts doors. Forwards to AI code. - AICtrlClick() - -/obj/structure/machinery/power/apc/BorgCtrlClick() // turns off/on APCs. Forwards to AI code. - AICtrlClick() - -/obj/structure/machinery/turretid/BorgCtrlClick() //turret control on/off. Forwards to AI code. - AICtrlClick() - -/atom/proc/BorgAltClick(mob/living/silicon/robot/user) - return 1 - -/obj/structure/machinery/door/airlock/BorgAltClick() // Eletrifies doors. Forwards to AI code. - AIAltClick() - -/obj/structure/machinery/turretid/BorgAltClick() //turret lethal on/off. Forwards to AI code. - AIAltClick() - -/* - As with AI, these are not used in click code, - because the code for robots is specific, not generic. - - If you would like to add advanced features to robot - clicks, you can do so here, but you will have to - change attack_robot() above to the proper function -*/ -/mob/living/silicon/robot/UnarmedAttack(atom/A) - A.attack_robot(src) -/mob/living/silicon/robot/RangedAttack(atom/A) - A.attack_robot(src) - -/atom/proc/attack_robot(mob/user as mob) - attack_remote(user) - return diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 139de9e59a35..22a24e022a3f 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -9,7 +9,7 @@ "1:2,3:4" is the square (1,3) with pixel offsets (+2, +4); slightly right and slightly above the turf grid. Pixel offsets are used so you don't perfectly hide the turf under them, that would be crappy. - The size of the user's screen is defined by client.view (indirectly by world_view_size), in our case "15x15". + The size of the user's screen is defined by client.view (indirectly by GLOB.world_view_size), in our case "15x15". Therefore, the top right corner (except during admin shenanigans) is at "15,15" */ @@ -27,3 +27,10 @@ #define ui_ghost_slot3 "SOUTH:6,CENTER:0" #define ui_ghost_slot4 "SOUTH:6,CENTER+1:0" #define ui_ghost_slot5 "SOUTH:6,CENTER+2:0" + +//Upper-middle right (alerts) +#define ui_alert1 "EAST-1:28,CENTER+5:27" +#define ui_alert2 "EAST-1:28,CENTER+4:25" +#define ui_alert3 "EAST-1:28,CENTER+3:23" +#define ui_alert4 "EAST-1:28,CENTER+2:21" +#define ui_alert5 "EAST-1:28,CENTER+1:19" diff --git a/code/_onclick/hud/alien.dm b/code/_onclick/hud/alien.dm index a53e82730732..d1421cb7295d 100644 --- a/code/_onclick/hud/alien.dm +++ b/code/_onclick/hud/alien.dm @@ -64,10 +64,10 @@ var/mob/living/carbon/xenomorph/H = mymob if(hud_version != HUD_STYLE_NOHUD) if(H.r_hand) - H.client.screen += H.r_hand + H.client.add_to_screen(H.r_hand) H.r_hand.screen_loc = ui_alien_datum.hud_slot_offset(H.r_hand, ui_alien_datum.ui_rhand) if(H.l_hand) - H.client.screen += H.l_hand + H.client.add_to_screen(H.l_hand) H.l_hand.screen_loc = ui_alien_datum.hud_slot_offset(H.l_hand, ui_alien_datum.ui_lhand) else if(H.r_hand) diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index 293cdbd6374e..0bd2206091ba 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -17,7 +17,7 @@ screen.severity = severity if (client && screen.should_show_to(src)) screen.update_for_view(client.view) - client.screen += screen + client.add_to_screen(screen) return screen @@ -33,12 +33,12 @@ addtimer(CALLBACK(src, PROC_REF(clear_fullscreen_after_animate), screen), animated, TIMER_CLIENT_TIME) else if(client) - client.screen -= screen + client.remove_from_screen(screen) qdel(screen) /mob/proc/clear_fullscreen_after_animate(atom/movable/screen/fullscreen/screen) if(client) - client.screen -= screen + client.remove_from_screen(screen) qdel(screen) /mob/proc/clear_fullscreens() @@ -48,7 +48,7 @@ /mob/proc/hide_fullscreens() if(client) for(var/category in fullscreens) - client.screen -= fullscreens[category] + client.remove_from_screen(fullscreens[category]) /mob/proc/reload_fullscreens() if(client) @@ -57,9 +57,9 @@ screen = fullscreens[category] if(screen.should_show_to(src)) screen.update_for_view(client.view) - client.screen |= screen + client.add_to_screen(screen) else - client.screen -= screen + client.remove_from_screen(screen) /atom/movable/screen/fullscreen @@ -72,9 +72,11 @@ var/severity = 0 var/fs_view = 7 var/show_when_dead = FALSE + /// If this should try and resize if the user's view is bigger than the default + var/should_resize = TRUE /atom/movable/screen/fullscreen/proc/update_for_view(client_view) - if (screen_loc == "CENTER-7,CENTER-7" && fs_view != client_view) + if (screen_loc == "CENTER-7,CENTER-7" && fs_view != client_view && should_resize) var/list/actualview = getviewsize(client_view) fs_view = client_view transform = matrix(actualview[1]/FULLSCREEN_OVERLAY_RESOLUTION_X, 0, 0, 0, actualview[2]/FULLSCREEN_OVERLAY_RESOLUTION_Y, 0) @@ -169,6 +171,14 @@ /atom/movable/screen/fullscreen/laser_blind icon_state = "impairedoverlay1" +/atom/movable/screen/fullscreen/vulture + icon_state = "vulture_scope_overlay_sniper" + layer = FULLSCREEN_VULTURE_SCOPE_LAYER + +/atom/movable/screen/fullscreen/vulture/spotter + icon_state = "vulture_scope_overlay_spotter" + should_resize = FALSE + //Weather overlays// /atom/movable/screen/fullscreen/weather @@ -186,3 +196,34 @@ /atom/movable/screen/fullscreen/weather/high icon_state = "impairedoverlay3" + +/atom/movable/screen/fullscreen/lighting_backdrop + icon = 'icons/mob/hud/screen1.dmi' + icon_state = "flash" + transform = matrix(200, 0, 0, 0, 200, 0) + plane = LIGHTING_PLANE + blend_mode = BLEND_OVERLAY + show_when_dead = TRUE + +/atom/movable/screen/fullscreen/lighting_backdrop/update_for_view(client_view) + return + +//Provides darkness to the back of the lighting plane +/atom/movable/screen/fullscreen/lighting_backdrop/lit_secondary + invisibility = INVISIBILITY_LIGHTING + layer = BACKGROUND_LAYER + LIGHTING_PRIMARY_DIMMER_LAYER + color = "#000" + alpha = 60 + +/atom/movable/screen/fullscreen/lighting_backdrop/backplane + invisibility = INVISIBILITY_LIGHTING + layer = LIGHTING_BACKPLANE_LAYER + color = "#000" + blend_mode = BLEND_ADD + +/atom/movable/screen/fullscreen/see_through_darkness + icon_state = "nightvision" + plane = LIGHTING_PLANE + layer = LIGHTING_PRIMARY_LAYER + blend_mode = BLEND_ADD + show_when_dead = TRUE diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm index 8a3f7d9d6a31..a99129d09bcd 100644 --- a/code/_onclick/hud/ghost.dm +++ b/code/_onclick/hud/ghost.dm @@ -48,6 +48,14 @@ var/mob/dead/observer/G = usr G.reenter_corpse() +/atom/movable/screen/ghost/toggle_huds + name = "Toggle HUDs" + icon_state = "ghost_hud_toggle" + +/atom/movable/screen/ghost/toggle_huds/Click() + var/client/client = usr.client + client.toggle_ghost_hud() + /datum/hud/ghost/New(mob/owner, ui_style='icons/mob/hud/human_white.dmi', ui_color, ui_alpha = 230) . = ..() var/atom/movable/screen/using @@ -68,11 +76,14 @@ using.screen_loc = ui_ghost_slot4 static_inventory += using + using = new /atom/movable/screen/ghost/toggle_huds() + using.screen_loc = ui_ghost_slot5 + static_inventory += using /datum/hud/ghost/show_hud(version = 0, mob/viewmob) // don't show this HUD if observing; show the HUD of the observee var/mob/dead/observer/O = mymob - if (istype(O) && O.observetarget) + if (istype(O) && O.observe_target_mob) plane_masters_update() return FALSE @@ -82,6 +93,6 @@ var/mob/screenmob = viewmob || mymob if(!hud_shown) - screenmob.client.screen -= static_inventory + screenmob.client.remove_from_screen(static_inventory) else - screenmob.client.screen += static_inventory + screenmob.client.add_to_screen(static_inventory) diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 7f9ad85e154e..f5f61424daac 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -189,47 +189,48 @@ if(HUD_STYLE_STANDARD) //Default HUD hud_shown = 1 //Governs behavior of other procs if(static_inventory.len) - screenmob.client.screen += static_inventory + screenmob.client.add_to_screen(static_inventory) if(toggleable_inventory.len && inventory_shown) - screenmob.client.screen += toggleable_inventory + screenmob.client.add_to_screen(toggleable_inventory) if(hotkeybuttons.len && !hotkey_ui_hidden) - screenmob.client.screen += hotkeybuttons + screenmob.client.add_to_screen(hotkeybuttons) if(infodisplay.len) - screenmob.client.screen += infodisplay + screenmob.client.add_to_screen(infodisplay) if(HUD_STYLE_REDUCED) //Reduced HUD hud_shown = 0 //Governs behavior of other procs if(static_inventory.len) - screenmob.client.screen -= static_inventory + screenmob.client.remove_from_screen(static_inventory) if(toggleable_inventory.len) - screenmob.client.screen -= toggleable_inventory + screenmob.client.remove_from_screen(toggleable_inventory) if(hotkeybuttons.len) - screenmob.client.screen -= hotkeybuttons + screenmob.client.remove_from_screen(hotkeybuttons) if(infodisplay.len) - screenmob.client.screen += infodisplay + screenmob.client.add_to_screen(infodisplay) //These ones are a part of 'static_inventory', 'toggleable_inventory' or 'hotkeybuttons' but we want them to stay if(l_hand_hud_object) - screenmob.client.screen += l_hand_hud_object //we want the hands to be visible + screenmob.client.add_to_screen(l_hand_hud_object) //we want the hands to be visible if(r_hand_hud_object) - screenmob.client.screen += r_hand_hud_object //we want the hands to be visible + screenmob.client.add_to_screen(r_hand_hud_object) //we want the hands to be visible if(action_intent) - screenmob.client.screen += action_intent //we want the intent switcher visible + screenmob.client.add_to_screen(action_intent) //we want the intent switcher visible if(HUD_STYLE_NOHUD) //No HUD hud_shown = 0 //Governs behavior of other procs if(static_inventory.len) - screenmob.client.screen -= static_inventory + screenmob.client.remove_from_screen(static_inventory) if(toggleable_inventory.len) - screenmob.client.screen -= toggleable_inventory + screenmob.client.remove_from_screen(toggleable_inventory) if(hotkeybuttons.len) - screenmob.client.screen -= hotkeybuttons + screenmob.client.remove_from_screen(hotkeybuttons) if(infodisplay.len) - screenmob.client.screen -= infodisplay + screenmob.client.remove_from_screen(infodisplay) hud_version = display_hud_version persistent_inventory_update(screenmob) mymob.update_action_buttons(TRUE) + reorganize_alerts(screenmob) mymob.reload_fullscreens() // ensure observers get an accurate and up-to-date view @@ -247,7 +248,7 @@ for(var/thing in plane_masters) var/atom/movable/screen/plane_master/PM = plane_masters[thing] PM.backdrop(mymob) - mymob.client.screen += PM + mymob.client.add_to_screen(PM) /datum/hud/human/show_hud(version = 0, mob/viewmob) . = ..() @@ -400,3 +401,50 @@ zone_sel.color = ui_color zone_sel.update_icon(mymob) static_inventory += zone_sel + +// Re-render all alerts - also called in /datum/hud/show_hud() because it's needed there +/datum/hud/proc/reorganize_alerts(mob/viewmob) + var/mob/screenmob = viewmob || mymob + if(!screenmob.client) + return + var/list/alerts = mymob.alerts + if(!length(alerts)) + return FALSE + if(!hud_shown) + for(var/category in alerts) + var/atom/movable/screen/alert/alert = alerts[category] + screenmob.client.remove_from_screen(alert) + return TRUE + var/c = 0 + for(var/category in alerts) + var/atom/movable/screen/alert/alert = alerts[category] + c++ + switch(c) + if(1) + . = ui_alert1 + if(2) + . = ui_alert2 + if(3) + . = ui_alert3 + if(4) + . = ui_alert4 + if(5) + . = ui_alert5 // Right now there's 5 slots + else + . = "" + alert.screen_loc = . + screenmob.client.add_to_screen(alert) + if(!viewmob) + for(var/obs in mymob.observers) + reorganize_alerts(obs) + return TRUE + +/// Wrapper for adding anything to a client's screen +/client/proc/add_to_screen(screen_add) + screen += screen_add + SEND_SIGNAL(src, COMSIG_CLIENT_SCREEN_ADD, screen_add) + +/// Wrapper for removing anything from a client's screen +/client/proc/remove_from_screen(screen_remove) + screen -= screen_remove + SEND_SIGNAL(src, COMSIG_CLIENT_SCREEN_REMOVE, screen_remove) diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 6cf43dc343b7..37a858d76699 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -105,10 +105,10 @@ set desc = "This disables or enables the user interface buttons which can be used with hotkeys." if(hud_used.hotkey_ui_hidden) - client.screen += hud_used.hotkeybuttons + client.add_to_screen(hud_used.hotkeybuttons) hud_used.hotkey_ui_hidden = 0 else - client.screen -= hud_used.hotkeybuttons + client.remove_from_screen(hud_used.hotkeybuttons) hud_used.hotkey_ui_hidden = TRUE /datum/hud/human/hidden_inventory_update(mob/viewer) @@ -116,57 +116,65 @@ return var/mob/living/carbon/human/H = mymob var/mob/screenmob = viewer || H + + if(!screenmob?.client) + return + if(!gear.len) inventory_shown = FALSE return //species without inv slots don't show items. - if(screenmob.hud_used.inventory_shown && screenmob.hud_used.hud_shown) + if(H.hud_used.inventory_shown && H.hud_used.hud_shown) if(H.shoes) H.shoes.screen_loc = ui_datum.ui_shoes - screenmob.client.screen += H.shoes + screenmob.client.add_to_screen(H.shoes) if(H.gloves) H.gloves.screen_loc = ui_datum.ui_gloves - screenmob.client.screen += H.gloves + screenmob.client.add_to_screen(H.gloves) if(H.wear_l_ear) H.wear_l_ear.screen_loc = ui_datum.ui_wear_l_ear - screenmob.client.screen += H.wear_l_ear + screenmob.client.add_to_screen(H.wear_l_ear) if(H.wear_r_ear) H.wear_r_ear.screen_loc = ui_datum.ui_wear_r_ear - screenmob.client.screen += H.wear_r_ear + screenmob.client.add_to_screen(H.wear_r_ear) if(H.glasses) H.glasses.screen_loc = ui_datum.ui_glasses - screenmob.client.screen += H.glasses + screenmob.client.add_to_screen(H.glasses) if(H.w_uniform) H.w_uniform.screen_loc = ui_datum.ui_iclothing - screenmob.client.screen += H.w_uniform + screenmob.client.add_to_screen(H.w_uniform) if(H.wear_suit) H.wear_suit.screen_loc = ui_datum.ui_oclothing - screenmob.client.screen += H.wear_suit + screenmob.client.add_to_screen(H.wear_suit) if(H.wear_mask) H.wear_mask.screen_loc = ui_datum.ui_mask - screenmob.client.screen += H.wear_mask + screenmob.client.add_to_screen(H.wear_mask) if(H.head) H.head.screen_loc = ui_datum.ui_head - screenmob.client.screen += H.head + screenmob.client.add_to_screen(H.head) else if(H.shoes) - screenmob.client.screen -= H.shoes + screenmob.client.remove_from_screen(H.shoes) if(H.gloves) - screenmob.client.screen -= H.gloves + screenmob.client.remove_from_screen(H.gloves) if(H.wear_r_ear) - screenmob.client.screen -= H.wear_r_ear + screenmob.client.remove_from_screen(H.wear_r_ear) if(H.wear_l_ear) - screenmob.client.screen -= H.wear_l_ear + screenmob.client.remove_from_screen(H.wear_l_ear) if(H.glasses) - screenmob.client.screen -= H.glasses + screenmob.client.remove_from_screen(H.glasses) if(H.w_uniform) - screenmob.client.screen -= H.w_uniform + screenmob.client.remove_from_screen(H.w_uniform) if(H.wear_suit) - screenmob.client.screen -= H.wear_suit + screenmob.client.remove_from_screen(H.wear_suit) if(H.wear_mask) - screenmob.client.screen -= H.wear_mask + screenmob.client.remove_from_screen(H.wear_mask) if(H.head) - screenmob.client.screen -= H.head + screenmob.client.remove_from_screen(H.head) + + if(screenmob == mymob) + for(var/M in mymob.observers) + hidden_inventory_update(M) /datum/hud/human/persistent_inventory_update(mob/viewer) if(!mymob) @@ -177,53 +185,60 @@ var/mob/living/carbon/human/H = mymob var/mob/screenmob = viewer || H - if(screenmob.hud_used) - if(screenmob.hud_used.hud_shown) + if(!screenmob?.client) + return + + if(H.hud_used) + if(H.hud_used.hud_shown) if(H.s_store) H.s_store.screen_loc = ui_datum.hud_slot_offset(H.s_store, ui_datum.ui_sstore1) - screenmob.client.screen += H.s_store + screenmob.client.add_to_screen(H.s_store) if(H.wear_id) H.wear_id.screen_loc = ui_datum.hud_slot_offset(H.wear_id, ui_datum.ui_id) - screenmob.client.screen += H.wear_id + screenmob.client.add_to_screen(H.wear_id) if(H.belt) H.belt.screen_loc = ui_datum.hud_slot_offset(H.belt, ui_datum.ui_belt) - screenmob.client.screen += H.belt + screenmob.client.add_to_screen(H.belt) if(H.back) H.back.screen_loc = ui_datum.hud_slot_offset(H.back, ui_datum.ui_back) - screenmob.client.screen += H.back + screenmob.client.add_to_screen(H.back) if(H.l_store) H.l_store.screen_loc = ui_datum.hud_slot_offset(H.l_store, ui_datum.ui_storage1) - screenmob.client.screen += H.l_store + screenmob.client.add_to_screen(H.l_store) if(H.r_store) H.r_store.screen_loc = ui_datum.hud_slot_offset(H.r_store, ui_datum.ui_storage2) - screenmob.client.screen += H.r_store + screenmob.client.add_to_screen(H.r_store) else if(H.s_store) - screenmob.client.screen -= H.s_store + screenmob.client.remove_from_screen(H.s_store) if(H.wear_id) - screenmob.client.screen -= H.wear_id + screenmob.client.remove_from_screen(H.wear_id) if(H.belt) - screenmob.client.screen -= H.belt + screenmob.client.remove_from_screen(H.belt) if(H.back) - screenmob.client.screen -= H.back + screenmob.client.remove_from_screen(H.back) if(H.l_store) - screenmob.client.screen -= H.l_store + screenmob.client.remove_from_screen(H.l_store) if(H.r_store) - screenmob.client.screen -= H.r_store + screenmob.client.remove_from_screen(H.r_store) if(hud_version != HUD_STYLE_NOHUD) if(H.r_hand) H.r_hand.screen_loc = ui_datum.hud_slot_offset(H.r_hand, ui_datum.ui_rhand) - H.client.screen += H.r_hand + screenmob.client.add_to_screen(H.r_hand) if(H.l_hand) H.l_hand.screen_loc = ui_datum.hud_slot_offset(H.l_hand, ui_datum.ui_lhand) - H.client.screen += H.l_hand + screenmob.client.add_to_screen(H.l_hand) else if(H.r_hand) H.r_hand.screen_loc = null if(H.l_hand) H.l_hand.screen_loc = null + if(screenmob == mymob) + for(var/M in mymob.observers) + persistent_inventory_update(M) + /datum/hud/human/proc/draw_inventory_slots(gear, datum/custom_hud/ui_datum, ui_alpha, ui_color) for(var/gear_slot in gear) var/atom/movable/screen/inventory/inv_box = new /atom/movable/screen/inventory() diff --git a/code/_onclick/hud/map_popups.dm b/code/_onclick/hud/map_popups.dm index b5ee41e6d54c..26dc93bbff2b 100644 --- a/code/_onclick/hud/map_popups.dm +++ b/code/_onclick/hud/map_popups.dm @@ -108,7 +108,7 @@ if(!screen_map.Find(screen_obj)) screen_map += screen_obj if(!screen.Find(screen_obj)) - screen += screen_obj + add_to_screen(screen_obj) /** * Clears the map of registered screen objects. @@ -118,10 +118,11 @@ * anyway. they're effectively qdel'd. */ /client/proc/clear_map(map_name) - if(!map_name || !(map_name in screen_maps)) + if(!map_name || !screen_maps[map_name]) return FALSE for(var/atom/movable/screen/screen_obj in screen_maps[map_name]) screen_maps[map_name] -= screen_obj + remove_from_screen(screen_obj) if(screen_obj.del_on_map_removal) qdel(screen_obj) screen_maps -= map_name diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm index cfc6c4d034fb..4a23ebd882d3 100644 --- a/code/_onclick/hud/radial.dm +++ b/code/_onclick/hud/radial.dm @@ -34,6 +34,12 @@ GLOBAL_LIST_EMPTY(radial_menus) /atom/movable/screen/radial/slice/clicked(mob/user) + if(QDELETED(src)) + return + + if(!parent) + CRASH("clicked() called on a radial slice with a null parent while not deleted/deleting") + if(user.client == parent.current_user) if(next_page) parent.next_page() diff --git a/code/_onclick/hud/rendering/plane_master.dm b/code/_onclick/hud/rendering/plane_master.dm index d29228f4c16e..6625120d1514 100644 --- a/code/_onclick/hud/rendering/plane_master.dm +++ b/code/_onclick/hud/rendering/plane_master.dm @@ -49,6 +49,12 @@ if(istype(mymob) && mymob?.client?.prefs?.toggle_prefs & TOGGLE_AMBIENT_OCCLUSION) add_filter("AO", 1, drop_shadow_filter(x = 0, y = -2, size = 4, color = "#04080FAA")) +/atom/movable/screen/plane_master/game_world_above + name = "above game world plane master" + plane = ABOVE_GAME_PLANE + appearance_flags = PLANE_MASTER //should use client color + blend_mode = BLEND_OVERLAY + /atom/movable/screen/plane_master/ghost name = "ghost plane master" plane = GHOST_PLANE @@ -76,6 +82,17 @@ appearance_flags = PLANE_MASTER | NO_CLIENT_COLOR | PIXEL_SCALE //byond internal end +/*! + * This system works by exploiting BYONDs color matrix filter to use layers to handle emissive blockers. + * + * Emissive overlays are pasted with an atom color that converts them to be entirely some specific color. + * Emissive blockers are pasted with an atom color that converts them to be entirely some different color. + * Emissive overlays and emissive blockers are put onto the same plane. + * The layers for the emissive overlays and emissive blockers cause them to mask eachother similar to normal BYOND objects. + * A color matrix filter is applied to the emissive plane to mask out anything that isn't whatever the emissive color is. + * This is then used to alpha mask the lighting plane. + */ + ///Contains all lighting objects /atom/movable/screen/plane_master/lighting name = "lighting plane master" @@ -83,10 +100,41 @@ blend_mode_override = BLEND_MULTIPLY mouse_opacity = MOUSE_OPACITY_TRANSPARENT +/atom/movable/screen/plane_master/lighting/backdrop(mob/mymob) + . = ..() + mymob.overlay_fullscreen("lighting_backdrop", /atom/movable/screen/fullscreen/lighting_backdrop/backplane) + mymob.overlay_fullscreen("lighting_backdrop_lit_secondary", /atom/movable/screen/fullscreen/lighting_backdrop/lit_secondary) + +/atom/movable/screen/plane_master/lighting/Initialize() + . = ..() + add_filter("emissives", 1, alpha_mask_filter(render_source = EMISSIVE_RENDER_TARGET, flags = MASK_INVERSE)) + add_filter("object_lighting", 2, alpha_mask_filter(render_source = O_LIGHTING_VISUAL_RENDER_TARGET, flags = MASK_INVERSE)) + /atom/movable/screen/plane_master/lighting/exterior name = "exterior lighting plane master" plane = EXTERIOR_LIGHTING_PLANE +/** + * Handles emissive overlays and emissive blockers. + */ +/atom/movable/screen/plane_master/emissive + name = "emissive plane master" + plane = EMISSIVE_PLANE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + render_target = EMISSIVE_RENDER_TARGET + render_relay_plane = null + +/atom/movable/screen/plane_master/emissive/Initialize() + . = ..() + add_filter("em_block_masking", 1, color_matrix_filter(GLOB.em_mask_matrix)) + +/atom/movable/screen/plane_master/above_lighting + name = "above lighting plane master" + plane = ABOVE_LIGHTING_PLANE + appearance_flags = PLANE_MASTER //should use client color + blend_mode = BLEND_OVERLAY + render_relay_plane = RENDER_PLANE_GAME + /atom/movable/screen/plane_master/runechat name = "runechat plane master" plane = RUNECHAT_PLANE @@ -94,11 +142,27 @@ blend_mode = BLEND_OVERLAY render_relay_plane = RENDER_PLANE_NON_GAME +/atom/movable/screen/plane_master/o_light_visual + name = "overlight light visual plane master" + plane = O_LIGHTING_VISUAL_PLANE + render_target = O_LIGHTING_VISUAL_RENDER_TARGET + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + blend_mode = BLEND_MULTIPLY + blend_mode_override = BLEND_MULTIPLY + /atom/movable/screen/plane_master/runechat/backdrop(mob/mymob) . = ..() remove_filter("AO") add_filter("AO", 1, drop_shadow_filter(x = 0, y = -2, size = 4, color = "#04080FAA")) +/atom/movable/screen/plane_master/nvg_plane + name = "NVG plane" + plane = NVG_PLANE + render_relay_plane = RENDER_PLANE_GAME + blend_mode_override = BLEND_MULTIPLY + //icon = 'icons/mob/hud/screen1.dmi' + //icon_state = "noise" + /atom/movable/screen/plane_master/fullscreen name = "fullscreen alert plane" plane = FULLSCREEN_PLANE diff --git a/code/_onclick/hud/rendering/render_plate.dm b/code/_onclick/hud/rendering/render_plate.dm index a64284ca13a9..18236c6ee759 100644 --- a/code/_onclick/hud/rendering/render_plate.dm +++ b/code/_onclick/hud/rendering/render_plate.dm @@ -74,6 +74,6 @@ relay.blend_mode = blend_mode relay.mouse_opacity = mouse_opacity relay.name = render_target - mymob.client.screen += relay + mymob.client.add_to_screen(relay) if(blend_mode != BLEND_MULTIPLY) blend_mode = BLEND_DEFAULT diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm deleted file mode 100644 index 565a23d1bbeb..000000000000 --- a/code/_onclick/hud/robot.dm +++ /dev/null @@ -1,151 +0,0 @@ -/datum/hud/robot - var/datum/custom_hud/robot/ui_robot_datum - -/datum/hud/robot/New(mob/living/silicon/robot/owner) - ..() - var/atom/movable/screen/using - - ui_robot_datum = GLOB.custom_huds_list[HUD_ROBOT] - -//Radio - using = new /atom/movable/screen() - using.name = "radio" - using.setDir(SOUTHWEST) - using.icon = ui_robot_datum.ui_style_icon - using.icon_state = "radio" - using.screen_loc = ui_robot_datum.ui_movi - using.layer = ABOVE_HUD_LAYER - using.plane = ABOVE_HUD_PLANE - static_inventory += using - -//Module select - - using = new /atom/movable/screen() - using.name = "module1" - using.setDir(SOUTHWEST) - using.icon = ui_robot_datum.ui_style_icon - using.icon_state = "inv1" - using.screen_loc = ui_robot_datum.ui_inv1 - using.layer = ABOVE_HUD_LAYER - using.plane = ABOVE_HUD_PLANE - owner.inv1 = using - static_inventory += using - - using = new /atom/movable/screen() - using.name = "module2" - using.setDir(SOUTHWEST) - using.icon = ui_robot_datum.ui_style_icon - using.icon_state = "inv2" - using.screen_loc = ui_robot_datum.ui_inv2 - using.layer = ABOVE_HUD_LAYER - using.plane = ABOVE_HUD_PLANE - owner.inv2 = using - static_inventory += using - - using = new /atom/movable/screen() - using.name = "module3" - using.setDir(SOUTHWEST) - using.icon = ui_robot_datum.ui_style_icon - using.icon_state = "inv3" - using.screen_loc = ui_robot_datum.ui_inv3 - using.layer = ABOVE_HUD_LAYER - using.plane = ABOVE_HUD_PLANE - owner.inv3 = using - static_inventory += using - -//End of module select - -//Intent - using = new /atom/movable/screen/act_intent() - using.icon = ui_robot_datum.ui_style_icon - using.icon_state = "intent_"+ intent_text(owner.a_intent) - static_inventory += using - action_intent = using - -//Cell - owner.cells = new /atom/movable/screen() - owner.cells.icon = ui_robot_datum.ui_style_icon - owner.cells.icon_state = "charge-empty" - owner.cells.name = "cell" - owner.cells.screen_loc = ui_robot_datum.ui_toxin - infodisplay += owner.cells - -//Health - healths = new /atom/movable/screen/healths() - healths.icon = ui_robot_datum.ui_style_icon - healths.screen_loc = ui_robot_datum.ui_borg_health - infodisplay += healths - -//Installed Module - owner.hands = new /atom/movable/screen() - owner.hands.icon = ui_robot_datum.ui_style_icon - owner.hands.icon_state = "nomod" - owner.hands.name = "module" - owner.hands.screen_loc = ui_robot_datum.ui_borg_module - static_inventory += owner.hands - -//Module Panel - using = new /atom/movable/screen() - using.name = "panel" - using.icon = ui_robot_datum.ui_style_icon - using.icon_state = "panel" - using.screen_loc = ui_robot_datum.ui_borg_panel - using.layer = HUD_LAYER - static_inventory += using - -//Store - module_store_icon = new /atom/movable/screen() - module_store_icon.icon = ui_robot_datum.ui_style_icon - module_store_icon.icon_state = "store" - module_store_icon.name = "store" - module_store_icon.screen_loc = ui_robot_datum.ui_borg_store - static_inventory += module_store_icon - -//Temp - bodytemp_icon = new /atom/movable/screen/bodytemp() - bodytemp_icon.screen_loc = ui_robot_datum.ui_borg_temp - infodisplay += bodytemp_icon - - oxygen_icon = new /atom/movable/screen/oxygen() - oxygen_icon.icon = ui_robot_datum.ui_style_icon - oxygen_icon.screen_loc = ui_robot_datum.UI_OXYGEN_LOC - infodisplay += oxygen_icon - - pull_icon = new /atom/movable/screen/pull() - pull_icon.icon = ui_robot_datum.ui_style_icon - pull_icon.screen_loc = ui_robot_datum.ui_borg_pull - static_inventory += pull_icon - - zone_sel = new /atom/movable/screen/zone_sel/robot() - zone_sel.screen_loc = ui_robot_datum.ui_zonesel - zone_sel.update_icon(owner) - static_inventory += zone_sel - -/mob/living/silicon/robot/create_hud() - if(!hud_used) - hud_used = new /datum/hud/robot(src) - - - -/datum/hud/robot/persistent_inventory_update() - if(!mymob || !ui_robot_datum) - return - var/mob/living/silicon/robot/R = mymob - if(hud_shown) - if(R.module_state_1) - R.module_state_1.screen_loc = ui_robot_datum.ui_inv1 - R.client.screen += R.module_state_1 - if(R.module_state_2) - R.module_state_2.screen_loc = ui_robot_datum.ui_inv2 - R.client.screen += R.module_state_2 - if(R.module_state_3) - R.module_state_3.screen_loc = ui_robot_datum.ui_inv3 - R.client.screen += R.module_state_3 - else - if(R.module_state_1) - R.module_state_1.screen_loc = null - if(R.module_state_2) - R.module_state_2.screen_loc = null - if(R.module_state_3) - R.module_state_3.screen_loc = null - diff --git a/code/_onclick/hud/screen_object_holder.dm b/code/_onclick/hud/screen_object_holder.dm index ba6a9b961721..91b4e593c7d6 100644 --- a/code/_onclick/hud/screen_object_holder.dm +++ b/code/_onclick/hud/screen_object_holder.dm @@ -24,14 +24,14 @@ ASSERT(istype(screen_object)) screen_objects += screen_object - client?.screen += screen_object + client?.add_to_screen(screen_object) /// Gives the screen object to the client, but does not qdel it when it's cleared /datum/screen_object_holder/proc/give_protected_screen_object(atom/screen_object) ASSERT(istype(screen_object)) protected_screen_objects += screen_object - client?.screen += screen_object + client?.add_to_screen(screen_object) /datum/screen_object_holder/proc/remove_screen_object(atom/screen_object) ASSERT(istype(screen_object)) @@ -39,11 +39,11 @@ screen_objects -= screen_object protected_screen_objects -= screen_object - client?.screen -= screen_object + client?.remove_from_screen(screen_object) /datum/screen_object_holder/proc/clear() - client?.screen -= screen_objects - client?.screen -= protected_screen_objects + client?.remove_from_screen(screen_objects) + client?.remove_from_screen(protected_screen_objects) QDEL_LIST(screen_objects) protected_screen_objects.Cut() diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 9643d0f652ae..1eb555fceaf7 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -30,6 +30,10 @@ /atom/movable/screen/inventory var/slot_id //The indentifier for the slot. It has nothing to do with ID cards. +/atom/movable/screen/inventory/Initialize(mapload, ...) + . = ..() + + RegisterSignal(src, COMSIG_ATOM_DROPPED_ON, PROC_REF(handle_dropped_on)) /atom/movable/screen/close name = "close" @@ -37,6 +41,8 @@ /atom/movable/screen/close/clicked(mob/user) + if(isobserver(user)) + return TRUE if(master) if(isstorage(master)) var/obj/item/storage/master_storage = master @@ -144,7 +150,7 @@ /atom/movable/screen/zone_sel/clicked(mob/user, list/mods) if (..()) - return 1 + return TRUE var/icon_x = text2num(mods["icon-x"]) var/icon_y = text2num(mods["icon-y"]) @@ -205,11 +211,12 @@ update_icon(user) return 1 -/atom/movable/screen/zone_sel/robot - icon = 'icons/mob/hud/screen1_robot.dmi' - /atom/movable/screen/clicked(mob/user) - if(!user) return 1 + if(!user) + return TRUE + + if(isobserver(user)) + return TRUE switch(name) if("equip") @@ -222,42 +229,6 @@ user.unset_interaction() return 1 - if("module") - if(isSilicon(user)) - if(user:module) - return 1 - user:pick_module() - return 1 - - if("radio") - if(isSilicon(user)) - user:radio_menu() - return 1 - if("panel") - if(isSilicon(user)) - user:installed_modules() - return 1 - - if("store") - if(isSilicon(user)) - user:uneq_active() - return 1 - - if("module1") - if(isrobot(user)) - user:toggle_module(1) - return 1 - - if("module2") - if(isrobot(user)) - user:toggle_module(2) - return 1 - - if("module3") - if(isrobot(user)) - user:toggle_module(3) - return 1 - if("Activate weapon attachment") var/obj/item/weapon/gun/held_item = user.get_held_item() if(istype(held_item)) @@ -319,6 +290,22 @@ return 1 return 0 +/atom/movable/screen/inventory/proc/handle_dropped_on(atom/dropped_on, atom/dropping, client/user) + SIGNAL_HANDLER + + if(slot_id != WEAR_L_HAND && slot_id != WEAR_R_HAND) + return + + if(!isstorage(dropping.loc)) + return + + if(!user.mob.Adjacent(dropping)) + return + + var/obj/item/storage/store = dropping.loc + store.remove_from_storage(dropping, get_turf(user.mob)) + user.mob.put_in_active_hand(dropping) + /atom/movable/screen/throw_catch name = "throw/catch" icon = 'icons/mob/hud/human_midnight.dmi' @@ -497,19 +484,19 @@ if(user.observed_xeno == user.tracked_marker) user.overwatch(user.tracked_marker, TRUE) //passing in an obj/effect into a proc that expects mob/xenomorph B) else - to_chat(user, SPAN_XENONOTICE("You psychically observe the [user.tracked_marker.mark_meaning.name] resin mark in [get_area_name(user.tracked_marker)].")) + to_chat(user, SPAN_XENONOTICE("We psychically observe the [user.tracked_marker.mark_meaning.name] resin mark in [get_area_name(user.tracked_marker)].")) user.overwatch(user.tracked_marker) //this is so scuffed, sorry if this causes errors return if(mods["alt"] && user.tracked_marker) user.stop_tracking_resin_mark() return if(!user.hive) - to_chat(user, SPAN_WARNING("You don't belong to a hive!")) + to_chat(user, SPAN_WARNING("We don't belong to a hive!")) return FALSE if(!user.hive.living_xeno_queen) - to_chat(user, SPAN_WARNING("Without a queen your psychic link is broken!")) + to_chat(user, SPAN_WARNING("Without a queen our psychic link is broken!")) return FALSE - if(user.burrow || user.is_mob_incapacitated() || user.buckled) + if(HAS_TRAIT(user, TRAIT_ABILITY_BURROWED) || user.is_mob_incapacitated() || user.buckled) return FALSE user.hive.mark_ui.update_all_data() user.hive.mark_ui.open_mark_menu(user) @@ -518,49 +505,58 @@ name = "queen locator" icon = 'icons/mob/hud/alien_standard.dmi' icon_state = "trackoff" - var/list/track_state = list(TRACKER_QUEEN, 0) + /// A weak reference to the atom currently being tracked. + /// (Note: This is null for `TRACKER_QUEEN` and `TRACKER_HIVE`, as those are accessed through the user's hive datum.) + var/datum/weakref/tracking_ref = null + /// The 'category' of the atom currently being tracked. (Defaults to `TRACKER_QUEEN`) + var/tracker_type = TRACKER_QUEEN /atom/movable/screen/queen_locator/clicked(mob/living/carbon/xenomorph/user, mods) if(!istype(user)) return FALSE if(mods["shift"]) var/area/current_area = get_area(user) - to_chat(user, SPAN_NOTICE("You are currently at: [current_area.name].")) + to_chat(user, SPAN_NOTICE("We are currently at: [current_area.name].")) return if(!user.hive) - to_chat(user, SPAN_WARNING("You don't belong to a hive!")) + to_chat(user, SPAN_WARNING("We don't belong to a hive!")) return FALSE if(mods["alt"]) var/list/options = list() if(user.hive.living_xeno_queen) - options["Queen"] = list(TRACKER_QUEEN, 0) + // Don't need weakrefs to this or the hive core, since there's only one possible target. + options["Queen"] = list(null, TRACKER_QUEEN) if(user.hive.hive_location) - options["Hive Core"] = list(TRACKER_HIVE, 0) + options["Hive Core"] = list(null, TRACKER_HIVE) - var/xeno_leader_index = 1 - for(var/xeno in user.hive.xeno_leader_list) - var/mob/living/carbon/xenomorph/xeno_lead = user.hive.xeno_leader_list[xeno_leader_index] - if(xeno_lead) - options["Xeno Leader [xeno_lead]"] = list(TRACKER_LEADER, xeno_leader_index) - xeno_leader_index++ + for(var/mob/living/carbon/xenomorph/leader in user.hive.xeno_leader_list) + options["Xeno Leader [leader]"] = list(leader, TRACKER_LEADER) - var/tunnel_index = 1 - for(var/obj/structure/tunnel/tracked_tunnel in user.hive.tunnels) - options["Tunnel [tracked_tunnel.tunnel_desc]"] = list(TRACKER_TUNNEL, tunnel_index) - tunnel_index++ + var/list/sorted_tunnels = sort_list_dist(user.hive.tunnels, get_turf(user)) + for(var/obj/structure/tunnel/tunnel as anything in sorted_tunnels) + options["Tunnel [tunnel.tunnel_desc]"] = list(tunnel, TRACKER_TUNNEL) - var/selected = tgui_input_list(user, "Select what you want the locator to track.", "Locator Options", options) + var/list/selected = tgui_input_list(user, "Select what you want the locator to track.", "Locator Options", options) if(selected) - track_state = options[selected] + var/selected_data = options[selected] + tracking_ref = WEAKREF(selected_data[1]) // Weakref to the tracked atom (or null) + tracker_type = selected_data[2] // Tracker category return + if(!user.hive.living_xeno_queen) - to_chat(user, SPAN_WARNING("Your hive doesn't have a living queen!")) + to_chat(user, SPAN_WARNING("Our hive doesn't have a living queen!")) return FALSE - if(user.burrow || user.is_mob_incapacitated() || user.buckled) + if(HAS_TRAIT(user, TRAIT_ABILITY_BURROWED) || user.is_mob_incapacitated() || user.buckled) return FALSE user.overwatch(user.hive.living_xeno_queen) +// Reset to the defaults +/atom/movable/screen/queen_locator/proc/reset_tracking() + icon_state = "trackoff" + tracking_ref = null + tracker_type = TRACKER_QUEEN + /atom/movable/screen/xenonightvision icon = 'icons/mob/hud/alien_standard.dmi' name = "toggle night vision" @@ -608,10 +604,10 @@ if(user && user.hud_used) if(user.hud_used.inventory_shown) user.hud_used.inventory_shown = 0 - user.client.screen -= user.hud_used.toggleable_inventory + user.client.remove_from_screen(user.hud_used.toggleable_inventory) else user.hud_used.inventory_shown = 1 - user.client.screen += user.hud_used.toggleable_inventory + user.client.add_to_screen(user.hud_used.toggleable_inventory) user.hud_used.hidden_inventory_update() return 1 @@ -639,3 +635,7 @@ /atom/movable/screen/rotate/alt dir = WEST rotate_amount = -90 + +/atom/movable/screen/vulture_scope // The part of the vulture's scope that drifts over time + icon_state = "vulture_unsteady" + screen_loc = "CENTER,CENTER" diff --git a/code/_onclick/human.dm b/code/_onclick/human.dm index cb71e27f9d1a..b09c26ffb92f 100644 --- a/code/_onclick/human.dm +++ b/code/_onclick/human.dm @@ -64,7 +64,7 @@ /mob/living/carbon/human/UnarmedAttack(atom/A, proximity, click_parameters) - if(lying) //No attacks while laying down + if(body_position == LYING_DOWN) //No attacks while laying down return 0 var/obj/item/clothing/gloves/G = gloves // not typecast specifically enough in defines @@ -88,7 +88,7 @@ /atom/proc/attack_hand(mob/user) return -/mob/living/carbon/human/MouseDrop_T(atom/dropping, mob/user) +/mob/living/carbon/human/MouseDrop_T(atom/dropping, mob/living/user) if(user != src) return . = ..() @@ -99,7 +99,7 @@ if(xeno.stat != DEAD) // If the Xeno is alive, fight back var/mob/living/carbon/carbon_user = user if(!carbon_user || !carbon_user.ally_of_hivenumber(xeno.hivenumber)) - user.KnockDown(rand(xeno.caste.tacklestrength_min, xeno.caste.tacklestrength_max)) + carbon_user.KnockDown(rand(xeno.caste.tacklestrength_min, xeno.caste.tacklestrength_max)) playsound(user.loc, 'sound/weapons/pierce.ogg', 25, TRUE) user.visible_message(SPAN_WARNING("\The [user] tried to unstrap \the [back_item] from [xeno] but instead gets a tail swipe to the head!")) return @@ -153,6 +153,4 @@ target.Move(user.loc, get_dir(target.loc, user.loc)) target.update_transform(TRUE) - target.update_canmove() - diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index c6052da33199..8d77920a59cc 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -3,6 +3,7 @@ /obj/item/proc/attack_self(mob/user) SHOULD_CALL_PARENT(TRUE) SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_SELF, user) + SEND_SIGNAL(user, COMSIG_MOB_ITEM_ATTACK_SELF, src) if(flags_item & CAN_DIG_SHRAPNEL && ishuman(user)) dig_out_shrapnel(user) @@ -11,6 +12,7 @@ /atom/proc/attackby(obj/item/W, mob/living/user,list/mods) if(SEND_SIGNAL(src, COMSIG_PARENT_ATTACKBY, W, user, mods) & COMPONENT_NO_AFTERATTACK) return TRUE + SEND_SIGNAL(user, COMSIG_MOB_PARENT_ATTACKBY, src, W) return FALSE /atom/movable/attackby(obj/item/W, mob/living/user) diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index 21ac66e5f222..04c70bbe1112 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -29,9 +29,9 @@ if(ismob(target) || isVehicle(target)) if(isxeno(target) && SSticker.mode.check_xeno_late_join(src)) //if it's a xeno and all checks are alright, we are gonna try to take their body var/mob/living/carbon/xenomorph/xeno = target - if(xeno.stat == DEAD || is_admin_level(xeno.z) || xeno.aghosted) + if(xeno.stat == DEAD || should_block_game_interaction(xeno) || xeno.aghosted) to_chat(src, SPAN_WARNING("You cannot join as [xeno].")) - ManualFollow(xeno) + do_observe(xeno) return FALSE if(!SSticker.mode.xeno_bypass_timer) @@ -41,18 +41,25 @@ to_wait = XENO_LEAVE_TIMER_LARVA - xeno.away_timer if(to_wait > 60 SECONDS) // don't spam for clearly non-AFK xenos to_chat(src, SPAN_WARNING("That player hasn't been away long enough. Please wait [to_wait] second\s longer.")) - ManualFollow(target) + do_observe(target) return FALSE var/deathtime = world.time - timeofdeath - if(deathtime < 2.5 MINUTES) + if(deathtime < XENO_JOIN_DEAD_LARVA_TIME) var/message = "You have been dead for [DisplayTimeText(deathtime)]." message = SPAN_WARNING("[message]") to_chat(src, message) - to_chat(src, SPAN_WARNING("You must wait 2.5 minutes before rejoining the game!")) - ManualFollow(target) + to_chat(src, SPAN_WARNING("You must wait at least 2.5 minutes before rejoining the game!")) + do_observe(target) return FALSE + if(xeno.hive) + for(var/mob_name in xeno.hive.banished_ckeys) + if(xeno.hive.banished_ckeys[mob_name] == ckey) + to_chat(src, SPAN_WARNING("You are banished from the [xeno.hive], you may not rejoin unless the Queen re-admits you or dies.")) + do_observe(target) + return FALSE + if(alert(src, "Are you sure you want to transfer yourself into [xeno]?", "Confirm Transfer", "Yes", "No") != "Yes") return FALSE if(((!islarva(xeno) && xeno.away_timer < XENO_LEAVE_TIMER) || (islarva(xeno) && xeno.away_timer < XENO_LEAVE_TIMER_LARVA)) || xeno.stat == DEAD) // Do it again, just in case @@ -60,7 +67,7 @@ return FALSE SSticker.mode.transfer_xeno(src, xeno) return TRUE - ManualFollow(target) + do_observe(target) return TRUE if(!istype(target, /atom/movable/screen)) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index a8ed20f5c4b3..0bfa0a759287 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -13,7 +13,7 @@ var/obj/structure/S = A S.do_climb(src, mods) return TRUE - else if(!(isitem(A) && get_dist(src, A) <= 1) && client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_SWAP_HANDS) + else if(!(isitem(A) && get_dist(src, A) <= 1) && (client && (client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_SWAP_HANDS))) swap_hand() return TRUE @@ -34,4 +34,4 @@ Have no reason to click on anything at all. */ /mob/new_player/click() - return 1 + return diff --git a/code/_onclick/ventcrawl.dm b/code/_onclick/ventcrawl.dm index b079cffe2afe..e1877dcbd0a7 100644 --- a/code/_onclick/ventcrawl.dm +++ b/code/_onclick/ventcrawl.dm @@ -7,7 +7,7 @@ return for(var/atom/A as anything in src) if(!(is_type_in_list(A, canEnterVentWith))) - to_chat(src, SPAN_WARNING("You can't be carrying items or have items equipped when vent crawling!")) + to_chat(src, SPAN_WARNING("We cannot be carrying items or have items equipped when vent crawling!")) return FALSE /mob/living/click(atom/A, list/mods) @@ -25,7 +25,7 @@ if(Adjacent(V) && !V.welded) pipes |= V if(!pipes || !pipes.len) - to_chat(src, SPAN_WARNING("There are no pipes that you can ventcrawl into within range!")) + to_chat(src, SPAN_WARNING("There are no pipes that we can ventcrawl into within range!")) return if(pipes.len == 1) pipe = pipes[1] @@ -42,11 +42,11 @@ /mob/living/proc/handle_ventcrawl(atom/clicked_on) if(stat) - to_chat(src, SPAN_WARNING("You must be conscious to do this!")) + to_chat(src, SPAN_WARNING("We must be conscious to do this!")) return - if(lying) - to_chat(src, SPAN_WARNING("You can't vent crawl while you're stunned!")) + if(is_mob_incapacitated()) + to_chat(src, SPAN_WARNING("We can't vent crawl while we are stunned!")) return var/obj/structure/pipes/vents/vent_found @@ -59,11 +59,11 @@ vent_found = locate(/obj/structure/pipes/vents/) in range(1, src) if(!vent_found) - to_chat(src, SPAN_WARNING("You must be standing on or beside an air vent to enter it.")) + to_chat(src, SPAN_WARNING("We must be standing on or beside an air vent to enter it.")) return if(vent_found.welded) - to_chat(src, SPAN_WARNING("This vent is closed off, you cannot climb through it.")) + to_chat(src, SPAN_WARNING("This vent is closed off, we cannot climb through it.")) return if(!ventcrawl_carry()) @@ -78,17 +78,17 @@ if(length(vent_found.connected_to)) if(src.action_busy) - to_chat(src, SPAN_WARNING("You are already busy with something.")) + to_chat(src, SPAN_WARNING("We are already busy with something.")) return - visible_message(SPAN_NOTICE("[src] begins climbing into [vent_found]."), SPAN_NOTICE("You begin climbing into [vent_found].")) + visible_message(SPAN_NOTICE("[src] begins climbing into [vent_found]."), SPAN_NOTICE("We begin climbing into [vent_found].")) vent_found.animate_ventcrawl() if(!do_after(src, 45, INTERRUPT_NO_NEEDHAND, BUSY_ICON_GENERIC)) vent_found.animate_ventcrawl_reset() return updatehealth() - if(stat || stunned || dazed || knocked_down || lying || health < 0 || !client || !ventcrawl_carry()) + if(is_mob_incapacitated(src) || health < 0 || !client || !ventcrawl_carry()) vent_found.animate_ventcrawl_reset() return diff --git a/code/_onclick/xeno.dm b/code/_onclick/xeno.dm index bb7b8cf41aca..453539ff1c3f 100644 --- a/code/_onclick/xeno.dm +++ b/code/_onclick/xeno.dm @@ -3,7 +3,7 @@ */ /mob/living/carbon/xenomorph/UnarmedAttack(atom/target, proximity, click_parameters, tile_attack = FALSE, ignores_resin = FALSE) - if(lying || burrow) //No attacks while laying down + if(body_position == LYING_DOWN || HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) //No attacks while laying down return FALSE var/mob/alt @@ -21,7 +21,7 @@ if (!L.is_xeno_grabbable() || L == src) //Xenos never attack themselves. continue - if (L.lying) + if (L.body_position == LYING_DOWN) alt = L continue target = L @@ -73,10 +73,10 @@ playsound(loc, 'sound/weapons/alien_claw_swipe.ogg', 10, 1) //Quiet to limit spam/nuisance. if(firepatted) src.visible_message(SPAN_DANGER("\The [src] pats at the fire!"), \ - SPAN_DANGER("You pat the fire!"), null, 5, CHAT_TYPE_XENO_COMBAT) + SPAN_DANGER("We pat the fire!"), null, 5, CHAT_TYPE_XENO_COMBAT) else src.visible_message(SPAN_DANGER("\The [src] swipes at \the [target]!"), \ - SPAN_DANGER("You swipe at \the [target]!"), null, 5, CHAT_TYPE_XENO_COMBAT) + SPAN_DANGER("We swipe at \the [target]!"), null, 5, CHAT_TYPE_XENO_COMBAT) return TRUE /mob/living/carbon/xenomorph/RangedAttack(atom/A) @@ -88,7 +88,7 @@ return UnarmedAttack(get_step(src, Get_Compass_Dir(src, A)), tile_attack = TRUE, ignores_resin = TRUE) return FALSE -/**The parent proc, will default to UnarmedAttack behaviour unless overriden +/**The parent proc, will default to UnarmedAttack behaviour unless overridden Return XENO_ATTACK_ACTION if it does something and the attack should have full attack delay. Return XENO_NONCOMBAT_ACTION if it did something and should have some delay. Return XENO_NO_DELAY_ACTION if it gave an error message or should have no delay at all, ex. "You can't X that, it's Y!" @@ -111,7 +111,7 @@ so that it doesn't double up on the delays) so that it applies the delay immedia if(alt_pressed && shift_pressed) if(istype(target, /mob/living/carbon/xenomorph)) var/mob/living/carbon/xenomorph/xeno = target - if(!QDELETED(xeno) && xeno.stat != DEAD && !is_admin_level(xeno.z) && xeno.check_state(TRUE) && xeno.hivenumber == hivenumber) + if(!QDELETED(xeno) && xeno.stat != DEAD && !should_block_game_interaction(xeno) && xeno.check_state(TRUE) && xeno.hivenumber == hivenumber) overwatch(xeno) next_move = world.time + 3 // Some minimal delay so this isn't crazy spammy return TRUE @@ -127,10 +127,10 @@ so that it doesn't double up on the delays) so that it applies the delay immedia return TRUE if(next_move >= world.time) - return TRUE + return FALSE return ..() -//Larva attack, will default to attack_alien behaviour unless overriden +//Larva attack, will default to attack_alien behaviour unless overridden /atom/proc/attack_larva(mob/living/carbon/xenomorph/larva/user) return attack_alien(user) diff --git a/code/controllers/_DynamicAreaLighting_TG.dm b/code/controllers/_DynamicAreaLighting_TG.dm deleted file mode 100644 index 9b6088b9bc1e..000000000000 --- a/code/controllers/_DynamicAreaLighting_TG.dm +++ /dev/null @@ -1,406 +0,0 @@ -/* - Modified DynamicAreaLighting for TGstation - Coded by Carnwennan - - This is TG's 'new' lighting system. It's basically a heavily modified combination of Forum_Account's and - ShadowDarke's respective lighting libraries. Credits, where due, to them. - - Like sd_DAL (what we used to use), it changes the shading overlays of areas by splitting each type of area into sub-areas - by using the var/tag variable and moving turfs into the contents list of the correct sub-area. This method is - much less costly than using overlays or objects. - - Unlike sd_DAL however it uses a queueing system. Everytime we call a change to opacity or luminosity - (through SetOpacity() or SetLuminosity()) we are simply updating variables and scheduling certain lights/turfs for an - update. Actual updates are handled periodically by the lighting_controller. This carries additional overheads, however it - means that each thing is changed only once per lighting_controller.processing_interval ticks. Allowing for greater control - over how much priority we'd like lighting updates to have. It also makes it possible for us to simply delay updates by - setting lighting_controller.processing = 0 at say, the start of a large explosion, waiting for it to finish, and then - turning it back on with lighting_controller.processing = 1. - - Unlike our old system there are hardcoded maximum luminositys (different for certain atoms). - This is to cap the cost of creating lighting effects. - (without this, an atom with luminosity of 20 would have to update 41^2 turfs!) :s - - Also, in order for the queueing system to work, each light remembers the effect it casts on each turf. This is going to - have larger memory requirements than our previous system but it's easily worth the hassle for the greater control we - gain. It also reduces cost of removing lighting effects by a lot! - - Known Issues/TODO: - Shuttles still do not have support for dynamic lighting (I hope to fix this at some point) - No directional lighting support. (prototype looked ugly) -*/ - -#define LIGHTING_CIRCULAR 1 //comment this out to use old square lighting effects. -#define LIGHTING_LAYER 10 //Drawing layer for lighting overlays -#define LIGHTING_ICON 'icons/effects/ss13_dark_alpha6.dmi' //Icon used for lighting shading effects -#define LIGHTING_STATES 6 - -// Update these lists if the luminosity cap -// of 8 is removed -GLOBAL_LIST_INIT(comp1table, list( - 0, - 0.934, - 1.868, - 2.802, - 3.736, - 4.67, - 5.604, - 6.538, - 7.472, -)) -GLOBAL_LIST_INIT(comp2table, list( - 0, - 0.427, - 0.854, - 1.281, - 1.708, - 2.135, - 2.562, - 2.989, - 3.416, -)) -/datum/light_source - var/atom/owner - var/changed = 1 - var/list/effect = list() - var/__x = 0 //x coordinate at last update - var/__y = 0 //y coordinate at last update - var/__z = 0 //z coordinate at last update - -#define turf_update_lumcount(T, amount)\ - T.lighting_lumcount += amount;\ - if(!T.lighting_changed){\ - SSlighting.changed_turfs += T;\ - T.lighting_changed = TRUE;\ - } - -#define ls_remove_effect(ls)\ - for(var/t in ls.effect){\ - var/turf/T = t;\ - turf_update_lumcount(T, -ls.effect[T]);\ - }\ - ls.effect.Cut(); - -/datum/light_source/New(atom/A) - if(!istype(A)) - CRASH("The first argument to the light object's constructor must be the atom that is the light source. Expected atom, received '[A]' instead.") - ..() - owner = A - __x = owner.x - __y = owner.y - __z = owner.z - // the lighting object maintains a list of all light sources - SSlighting.lights.Add(src) - -//Check a light to see if its effect needs reprocessing. If it does, remove any old effect and create a new one -/datum/light_source/proc/check() - if(!owner) - ls_remove_effect(src) - return TRUE //causes it to be removed from our list of lights. The garbage collector will then destroy it. - - if(owner.luminosity > 8) - owner.luminosity = 8 - - changed = FALSE - - ls_remove_effect(src) - if(owner.loc && owner.luminosity > 0) - for(var/turf/T in view(owner.luminosity, owner)) - var/dist - var/dx = abs(T.x - __x) - var/dy = abs(T.y - __y) - // Use dx+1 and dy+1 because lists use 1-based indexing - if(dx >= dy) - dist = (GLOB.comp1table[dx+1]) + (GLOB.comp2table[dy+1]) - else - dist = (GLOB.comp2table[dx+1]) + (GLOB.comp1table[dy+1]) - var/delta_lumen = owner.luminosity - dist - if(delta_lumen > 0) - effect[T] = delta_lumen - turf_update_lumcount(T, delta_lumen) - return FALSE - else - owner.light = null - return TRUE - -/datum/light_source/proc/changed() - if(owner) - __x = owner.x - __y = owner.y - - if(!changed) - changed = 1 - SSlighting.lights.Add(src) - - -/datum/light_source/proc/remove_effect() - // before we apply the effect we remove the light's current effect. - for(var/turf/T in effect) // negate the effect of this light source - turf_update_lumcount(T, -effect[T]) - effect.Cut() // clear the effect list - -/atom - var/datum/light_source/light - var/trueLuminosity = 0 // Typically 'luminosity' squared. The builtin luminosity must remain linear. - // We may read it, but NEVER set it directly. - -//Movable atoms with opacity when they are constructed will trigger nearby lights to update -//Movable atoms with luminosity when they are constructed will create a light_source automatically -/atom/movable/Initialize(mapload, ...) - . = ..() - if(opacity) - if(isturf(loc)) - var/turf/T = loc - if(T.lighting_lumcount > 1) - UpdateAffectingLights() - if(luminosity) - if(light) WARNING("[type] - Don't set lights up manually during New(), We do it automatically.") - trueLuminosity = luminosity * luminosity - light = new(src) - -//Objects with opacity will trigger nearby lights to update at next lighting process. -/atom/movable/Destroy() - if(opacity) - if(isturf(loc)) - var/turf/T = loc - if(T.lighting_lumcount > 1) - UpdateAffectingLights() - . = ..() - -/atom/vv_edit_var(var_name, var_value) - switch(var_name) - if(NAMEOF(src, luminosity)) - SetLuminosity(var_value) - return ..() - -//Sets our luminosity. -//If we have no light it will create one. -//If we are setting luminosity to 0 the light will be cleaned up by the controller and garbage collected once all its -//queues are complete. -//if we have a light already it is merely updated, rather than making a new one. -/atom/proc/SetLuminosity(new_luminosity, trueLum = FALSE, atom/source) - if(new_luminosity < 0) - new_luminosity = 0 - if(!trueLum) - new_luminosity *= new_luminosity - if(light) - if(trueLuminosity != new_luminosity) //non-luminous lights are removed from the lights list in add_effect() - light.changed() - else - if(new_luminosity) - light = new(src) - trueLuminosity = new_luminosity - if (trueLuminosity < 1) - luminosity = 0 - else if (trueLuminosity <= 100) - luminosity = sqrtTable[trueLuminosity] - else - luminosity = sqrt(trueLuminosity) - -//This slightly modifies human luminosity. Source of light do NOT stack. -//When you drop a light source it should keep a running total of your actual luminosity and set it accordingly. -/mob/SetLuminosity(new_luminosity, trueLum, atom/source) - LAZYREMOVE(luminosity_sources, source) - if(source) - UnregisterSignal(source, COMSIG_PARENT_QDELETING) - var/highest_luminosity = 0 - for(var/luminosity_source as anything in luminosity_sources) - var/lumonisity_rating = luminosity_sources[luminosity_source] - if(highest_luminosity < lumonisity_rating) - highest_luminosity = lumonisity_rating - if(source && new_luminosity > 0) - LAZYSET(luminosity_sources, source, new_luminosity) - RegisterSignal(source, COMSIG_PARENT_QDELETING, PROC_REF(remove_luminosity_source)) - if(new_luminosity < highest_luminosity) - new_luminosity = highest_luminosity - return ..() - -/mob/proc/remove_luminosity_source(atom/source) - SetLuminosity(0, FALSE, source) - -/area/SetLuminosity(new_luminosity) //we don't want dynamic lighting for areas - luminosity = !!new_luminosity - trueLuminosity = luminosity - - -//change our opacity (defaults to toggle), and then update all lights that affect us. -/atom/proc/SetOpacity(new_opacity) - if(new_opacity == null) - new_opacity = !opacity //default = toggle opacity - else if(opacity == new_opacity) - return FALSE //opacity hasn't changed! don't bother doing anything - opacity = new_opacity //update opacity, the below procs now call light updates. - return TRUE - -/turf/SetOpacity(new_opacity) - . = ..() - //only bother if opacity changed - if(!.) - return - if(lighting_lumcount) //only bother with an update if our turf is currently affected by a light - UpdateAffectingLights() - -/atom/movable/SetOpacity(new_opacity) - . = ..() - // only bother if opacity changed - if(!.) - return - // only bother with an update if we're on a turf - if(isturf(loc)) - var/turf/T = loc - // only bother with an update if our turf is currently affected by a light - if(T.lighting_lumcount) - UpdateAffectingLights() - - -/turf - var/lighting_lumcount = 0 - var/lighting_changed = 0 - var/cached_lumcount = 0 - -/turf/open/space - lighting_lumcount = 4 //starlight - -/turf/proc/update_lumcount(amount, removing = 0) - lighting_lumcount += amount - - if(!lighting_changed) - SSlighting.changed_turfs += src - lighting_changed = 1 - -/turf/proc/lighting_tag(const/level) - var/area/A = loc - return A.tagbase + "sd_L[level]" - -/turf/proc/build_lighting_area(const/tag, const/level) - var/area/Area = loc - var/area/A = new Area.type() // create area if it wasn't found - // replicate vars - for(var/V in Area.vars) - switch(V) - if ("contents","lighting_overlay", "overlays") - continue - else - if(issaved(Area.vars[V])) A.vars[V] = Area.vars[V] - - A.tag = tag - A.lighting_subarea = 1 - A.lighting_space = 0 // in case it was copied from a space subarea - - A.SetLightLevel(level) - Area.related += A - - if(SSweather.is_weather_event && SSweather.map_holder.should_affect_area(A)) - A.overlays += SSweather.curr_master_turf_overlay - - return A - -/turf/proc/shift_to_subarea() - lighting_changed = 0 - var/area/Area = loc - - if(!istype(Area) || !Area.lighting_use_dynamic) return - - var/level = min(max(round(lighting_lumcount,1),0),LIGHTING_STATES) - var/new_tag = lighting_tag(level) - - if(Area.tag!=new_tag) //skip if already in this area - var/area/A = locate(new_tag) // find an appropriate area - - if (!A) - A = build_lighting_area(new_tag, level) - - A.contents += src // move the turf into the area - -// Dedicated lighting sublevel for space turfs -// helps us depower things in space, remove space fire alarms, -// and evens out space lighting -/turf/open/space/lighting_tag(level) - var/area/A = loc - return A.tagbase + "sd_L_space" -/turf/open/space/build_lighting_area(tag, level) - var/area/A = ..(tag,4) - A.lighting_space = 1 - A.SetLightLevel(4) - A.icon_state = null - return A - - -/area - var/lighting_use_dynamic = 1 //Turn this flag off to prevent sd_DynamicAreaLighting from affecting this area - var/image/lighting_overlay //tracks the darkness image of the area for easy removal - var/lighting_subarea = 0 //tracks whether we're a lighting sub-area - var/lighting_space = 0 // true for space-only lighting subareas - var/tagbase - var/exterior_light = 2 - -/area/proc/SetLightLevel(light) - if(!src) return - if(light <= 0) - light = 0 - luminosity = 1 - if(light > LIGHTING_STATES) - light = LIGHTING_STATES - - if(lighting_overlay) - overlays -= lighting_overlay - lighting_overlay.icon_state = "[light]" - else - lighting_overlay = image(LIGHTING_ICON,,num2text(light),LIGHTING_LAYER) - lighting_overlay.plane = ceiling <= CEILING_GLASS ? EXTERIOR_LIGHTING_PLANE : LIGHTING_PLANE - if (light < 6) - overlays.Add(lighting_overlay) - -/area/proc/SetDynamicLighting() - src.lighting_use_dynamic = 1 - for(var/turf/T in src.contents) - turf_update_lumcount(T, 0) - -/area/proc/InitializeLighting() //TODO: could probably improve this bit ~Carn - tagbase = "[type]" - if(!tag) tag = tagbase - if(!lighting_use_dynamic) - if(!lighting_subarea) // see if this is a lighting subarea already - //show the dark overlay so areas, not yet in a lighting subarea, won't be bright as day and look silly. - SetLightLevel(4) - -//#undef LIGHTING_LAYER -#undef LIGHTING_CIRCULAR -//#undef LIGHTING_ICON - -#define LIGHTING_MAX_LUMINOSITY_STATIC 8 //Maximum luminosity to reduce lag. -#define LIGHTING_MAX_LUMINOSITY_MOBILE 6 //Moving objects have a lower max luminosity since these update more often. (lag reduction) -#define LIGHTING_MAX_LUMINOSITY_TURF 1 //turfs have a severely shortened range to protect from inevitable floor-lighttile spam. - -//set the changed status of all lights which could have possibly lit this atom. -//We don't need to worry about lights which lit us but moved away, since they will have change status set already -//This proc can cause lots of lights to be updated. :( -/atom/proc/UpdateAffectingLights() -// for(var/atom/A in oview(LIGHTING_MAX_LUMINOSITY_STATIC-1,src)) -// if(A.light) -// A.light.changed() //force it to update at next process() - -/atom/movable/UpdateAffectingLights() - if(isturf(loc)) - loc.UpdateAffectingLights() - -/turf/UpdateAffectingLights() - for(var/atom/A in oview(LIGHTING_MAX_LUMINOSITY_STATIC-1,src)) - if(A.light) - A.light.changed() - -//caps luminosity effects max-range based on what type the light's owner is. -/atom/proc/get_light_range() - return min(luminosity, LIGHTING_MAX_LUMINOSITY_STATIC) - -/atom/movable/get_light_range() - return min(luminosity, LIGHTING_MAX_LUMINOSITY_MOBILE) - -/obj/structure/machinery/light/get_light_range() - return min(luminosity, LIGHTING_MAX_LUMINOSITY_STATIC) - -/turf/get_light_range() - return min(luminosity, LIGHTING_MAX_LUMINOSITY_TURF) - -#undef LIGHTING_MAX_LUMINOSITY_STATIC -#undef LIGHTING_MAX_LUMINOSITY_MOBILE -#undef LIGHTING_MAX_LUMINOSITY_TURF diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index 86d5a11a668e..147f57fcb1aa 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -20,11 +20,13 @@ var/policy var/static/regex/ic_filter_regex - var/list/fail_to_topic_whitelisted_ips + + var/is_loaded = FALSE /datum/controller/configuration/proc/admin_reload() if(IsAdminAdvancedProcCall()) - return + alert_proccall("configuration admin_reload") + return PROC_BLOCKED log_admin("[key_name(usr)] has forcefully reloaded the configuration from disk.") message_admins("[key_name_admin(usr)] has forcefully reloaded the configuration from disk.") full_wipe() @@ -33,7 +35,8 @@ /datum/controller/configuration/proc/Load(_directory) if(IsAdminAdvancedProcCall()) //If admin proccall is detected down the line it will horribly break everything. - return + alert_proccall("configuration Load") + return PROC_BLOCKED if(_directory) directory = _directory if(entries) @@ -51,11 +54,14 @@ loadmaplist(CONFIG_GROUND_MAPS_FILE, GROUND_MAP) loadmaplist(CONFIG_SHIP_MAPS_FILE, SHIP_MAP) LoadChatFilter() - LoadTopicRateWhitelist() + + is_loaded = TRUE if(Master) Master.OnConfigLoad() + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_CONFIG_LOADED) + /datum/controller/configuration/proc/loadmaplist(filename, maptype) log_config("Loading config file [filename]...") @@ -117,7 +123,8 @@ /datum/controller/configuration/proc/full_wipe() if(IsAdminAdvancedProcCall()) - return + alert_proccall("configuration full_wipe") + return PROC_BLOCKED entries_by_type.Cut() QDEL_LIST_ASSOC_VAL(entries) entries = null @@ -163,7 +170,8 @@ /datum/controller/configuration/proc/LoadEntries(filename, list/stack = list()) if(IsAdminAdvancedProcCall()) - return + alert_proccall("configuration LoadEntries") + return PROC_BLOCKED var/filename_to_test = world.system_type == MS_WINDOWS ? lowertext(filename) : filename if(filename_to_test in stack) @@ -264,7 +272,7 @@ CRASH("Missing config entry for [entry_type]!") if((E.protection & CONFIG_ENTRY_HIDDEN) && IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Get" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") log_admin_private("Config access of [entry_type] attempted by [key_name(usr)]") - return + return PROC_BLOCKED return E.config_entry_value @@ -278,7 +286,7 @@ CRASH("Missing config entry for [entry_type]!") if((E.protection & CONFIG_ENTRY_LOCKED) && IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Set" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") log_admin_private("Config rewrite of [entry_type] to [new_val] attempted by [key_name(usr)]") - return + return PROC_BLOCKED return E.ValidateAndSet("[new_val]") @@ -327,18 +335,3 @@ /datum/controller/configuration/proc/DelayedMessageAdmins(text) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(message_admins), text), 0) -/datum/controller/configuration/proc/LoadTopicRateWhitelist() - LAZYINITLIST(fail_to_topic_whitelisted_ips) - if(!fexists("[directory]/topic_rate_limit_whitelist.txt")) - log_config("Error 404: topic_rate_limit_whitelist.txt not found!") - return - - log_config("Loading config file topic_rate_limit_whitelist.txt...") - - for(var/line in file2list("[directory]/topic_rate_limit_whitelist.txt")) - if(!line) - continue - if(findtextEx(line, "#", 1, 2)) - continue - - fail_to_topic_whitelisted_ips[line] = 1 diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index fdf79db138f7..741862b5d65d 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -122,3 +122,13 @@ /datum/config_entry/number/extra_larva_per_burst config_entry_value = 1 integer = FALSE + +/datum/config_entry/number/embryo_burst_timer + min_val = 1 + config_entry_value = 450 + integer = TRUE + +/datum/config_entry/number/whiskey_required_players + min_val = 0 + config_entry_value = 140 + integer = TRUE diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index ba3f0b2609b6..eb1b0540fb54 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -21,8 +21,14 @@ Basics, the most important. /datum/config_entry/string/wikiurl +/datum/config_entry/string/wikiarticleurl + /datum/config_entry/string/forumurl +/datum/config_entry/string/staffreport + +/datum/config_entry/string/playerreport + /datum/config_entry/string/rulesurl /datum/config_entry/string/githuburl @@ -31,6 +37,8 @@ Basics, the most important. /datum/config_entry/string/banappeals +/datum/config_entry/string/endofroundblurb + /datum/config_entry/string/dburl /// Server to notify of game events @@ -263,11 +271,7 @@ Voting // Gamemode to auto-switch to at the start of the round /datum/config_entry/string/gamemode_default - config_entry_value = "extended" - -// Rounds needed for gamemode vote -/datum/config_entry/number/gamemode_rounds_needed - config_entry_value = 5 + config_entry_value = "Extended" /datum/config_entry/number/rounds_until_hard_restart config_entry_value = -1 // -1 is disabled by default, 0 is every round, x is after so many rounds @@ -487,8 +491,6 @@ This maintains a list of ip addresses that are able to bypass topic filtering. /datum/config_entry/flag/respawn -/datum/config_entry/flag/ToRban - /datum/config_entry/flag/ooc_country_flags /datum/config_entry/flag/record_rounds @@ -529,6 +531,25 @@ This maintains a list of ip addresses that are able to bypass topic filtering. /datum/config_entry/string/round_results_webhook_url +/// InfluxDB v2 Host to connect to for sending statistics (over HTTP API) +/datum/config_entry/string/influxdb_host +/// InfluxDB v2 Bucket to send staistics to +/datum/config_entry/string/influxdb_bucket +/// InfluxDB v2 Organization to access buckets of +/datum/config_entry/string/influxdb_org +/// InfluxDB v2 API Token to access the organization and bucket +/datum/config_entry/string/influxdb_token + +/// How often to snapshot general game statistics to influxdb driver +/datum/config_entry/number/influxdb_stats_period + config_entry_value = 30 +/// How often to snapshot MC statistics +/datum/config_entry/number/influxdb_mcstats_period + config_entry_value = 60 +/// How often to send queued influxdb statistics +/datum/config_entry/number/influxdb_send_period + config_entry_value = 10 + /// logs all timers in buckets on automatic bucket reset (Useful for timer debugging) /datum/config_entry/flag/log_timers_on_bucket_reset @@ -602,3 +623,7 @@ This maintains a list of ip addresses that are able to bypass topic filtering. /datum/config_entry/string/instance_name config_entry_value = "game" protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_LOCKED + +/datum/config_entry/flag/guest_ban + +/datum/config_entry/flag/auto_profile diff --git a/code/controllers/mc/admin.dm b/code/controllers/mc/admin.dm index 78eb5c5b5a5a..8c5060864747 100644 --- a/code/controllers/mc/admin.dm +++ b/code/controllers/mc/admin.dm @@ -96,8 +96,8 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick) set category = "Debug.Controllers" set name = "Debug Role Authority" - if(!RoleAuthority) + if(!GLOB.RoleAuthority) to_chat(usr, "RoleAuthority not found!") return - debug_variables(RoleAuthority) + debug_variables(GLOB.RoleAuthority) message_admins("Admin [key_name_admin(usr)] is debugging the Role Authority.") diff --git a/code/controllers/mc/globals.dm b/code/controllers/mc/globals.dm index 7b5cc94d3620..724f58010699 100644 --- a/code/controllers/mc/globals.dm +++ b/code/controllers/mc/globals.dm @@ -13,7 +13,11 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) GLOB = src var/datum/controller/exclude_these = new - gvars_datum_in_built_vars = exclude_these.vars + list(NAMEOF(src, gvars_datum_protected_varlist), NAMEOF(src, gvars_datum_in_built_vars), NAMEOF(src, gvars_datum_init_order)) + // I know this is dumb but the nested vars list hangs a ref to the datum. This fixes that + var/list/controller_vars = exclude_these.vars.Copy() + controller_vars["vars"] = null + gvars_datum_in_built_vars = controller_vars + list(NAMEOF(src, gvars_datum_protected_varlist), NAMEOF(src, gvars_datum_in_built_vars), NAMEOF(src, gvars_datum_init_order)) + QDEL_IN(exclude_these, 0) //signal logging isn't ready log_world("[vars.len - gvars_datum_in_built_vars.len] global variables") diff --git a/code/controllers/mc/subsystem.dm b/code/controllers/mc/subsystem.dm index 24af320aeb62..e25402c28610 100644 --- a/code/controllers/mc/subsystem.dm +++ b/code/controllers/mc/subsystem.dm @@ -260,7 +260,7 @@ /datum/controller/subsystem/proc/OnConfigLoad() /** - * Used to initialize the subsystem. This is expected to be overriden by subtypes. + * Used to initialize the subsystem. This is expected to be overridden by subtypes. */ /datum/controller/subsystem/Initialize() return SS_INIT_NONE diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index e54d045baff4..35031cf7334f 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -28,12 +28,12 @@ shuttle.location = 1 shuttle.warmup_time = 1 shuttle.move_time = ELEVATOR_TRANSIT_DURATION - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/supply/dock) shuttle.area_offsite = A break - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/supply/station) shuttle.area_station = A break @@ -41,7 +41,7 @@ shuttles["Supply"] = shuttle process_shuttles += shuttle - supply_controller.shuttle = shuttle + GLOB.supply_controller.shuttle = shuttle //---ELEVATOR---// // Elevator I @@ -50,17 +50,17 @@ shuttle.warmup_time = 10 SECONDS shuttle.recharge_time = ELEVATOR_RECHARGE - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/elevator1/underground) shuttle.area_offsite = A break - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/elevator1/ground) shuttle.area_station = A break - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/elevator1/transit) shuttle.area_transition = A break @@ -76,17 +76,17 @@ shuttle.warmup_time = 10 SECONDS shuttle.recharge_time = ELEVATOR_RECHARGE - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/elevator2/underground) shuttle.area_offsite = A break - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/elevator2/ground) shuttle.area_station = A break - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/elevator2/transit) shuttle.area_transition = A break @@ -102,17 +102,17 @@ shuttle.location = 0 shuttle.warmup_time = 10 SECONDS shuttle.recharge_time = ELEVATOR_RECHARGE - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/elevator3/underground) shuttle.area_offsite = A break - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/elevator3/ground) shuttle.area_station = A break - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/elevator3/transit) shuttle.area_transition = A break @@ -127,17 +127,17 @@ shuttle.location = 0 shuttle.warmup_time = 10 SECONDS shuttle.recharge_time = ELEVATOR_RECHARGE - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/elevator4/underground) shuttle.area_offsite = A break - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/elevator4/ground) shuttle.area_station = A break - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/elevator4/transit) shuttle.area_transition = A break @@ -152,17 +152,17 @@ shuttle.location = 0 shuttle.warmup_time = 10 SECONDS shuttle.recharge_time = ELEVATOR_RECHARGE - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/tri_trans1/omega) shuttle.area_offsite = A break - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/tri_trans1/alpha) shuttle.area_station = A break - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/tri_trans1/away) shuttle.area_transition = A break @@ -178,17 +178,17 @@ shuttle.location = 0 shuttle.warmup_time = 10 SECONDS shuttle.recharge_time = ELEVATOR_RECHARGE - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/tri_trans2/omega) shuttle.area_offsite = A break - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/tri_trans2/alpha) shuttle.area_station = A break - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(A.type == /area/shuttle/tri_trans2/away) shuttle.area_transition = A break @@ -216,7 +216,7 @@ //search for the controllers, if we have one. if(dock_controller_map.len) - for(var/obj/structure/machinery/embedded_controller/radio/C in machines) //only radio controllers are supported at the moment + for(var/obj/structure/machinery/embedded_controller/radio/C in GLOB.machines) //only radio controllers are supported at the moment if (istype(C.program, /datum/computer/file/embedded_program/docking)) if(dock_controller_map[C.id_tag]) shuttle = dock_controller_map[C.id_tag] diff --git a/code/controllers/subsystem/admin.dm b/code/controllers/subsystem/admin.dm deleted file mode 100644 index 8aab64b04881..000000000000 --- a/code/controllers/subsystem/admin.dm +++ /dev/null @@ -1,40 +0,0 @@ -SUBSYSTEM_DEF(admin) - name = "Admin" - wait = 5 MINUTES - flags = SS_NO_INIT | SS_KEEP_TIMING - runlevels = RUNLEVELS_DEFAULT|RUNLEVEL_LOBBY - var/list/currentrun = list() - var/times_repeated = 0 - -/datum/controller/subsystem/admin/stat_entry(msg) - msg = "P:[unansweredAhelps.len]" - return ..() - -/datum/controller/subsystem/admin/fire(resumed = FALSE) - if (!resumed) - currentrun = unansweredAhelps.Copy() - - if(!currentrun.len) - times_repeated = 0 - return - - var/msg = "Unheard Ahelps (Repeated [times_repeated] times):" - - while (currentrun.len) - var/ahelp_msg = currentrun[currentrun.len] - currentrun.len-- - - if (!ahelp_msg) - continue - - msg += unansweredAhelps[ahelp_msg] + "\n" - - if (MC_TICK_CHECK) - return - - for(var/client/C in GLOB.admins) - if(C && C.admin_holder && (C.admin_holder.rights & R_MOD)) - if(C.prefs.toggles_sound & SOUND_ADMINHELP) - sound_to(C, 'sound/effects/adminhelp_new.ogg') - to_chat(C, msg) - times_repeated++ diff --git a/code/controllers/subsystem/assets.dm b/code/controllers/subsystem/assets.dm index 283fe79cfead..38e57df93cef 100644 --- a/code/controllers/subsystem/assets.dm +++ b/code/controllers/subsystem/assets.dm @@ -7,6 +7,20 @@ SUBSYSTEM_DEF(assets) var/list/preload = list() var/datum/asset_transport/transport = new() +/datum/controller/subsystem/assets/OnConfigLoad() + var/newtransporttype = /datum/asset_transport + switch (CONFIG_GET(string/asset_transport)) + if ("webroot") + newtransporttype = /datum/asset_transport/webroot + + if (newtransporttype == transport.type) + return + + var/datum/asset_transport/newtransport = new newtransporttype () + if (newtransport.validate_config()) + transport = newtransport + transport.Load() + /datum/controller/subsystem/assets/Initialize() for(var/type in typesof(/datum/asset)) var/datum/asset/A = type diff --git a/code/controllers/subsystem/atoms.dm b/code/controllers/subsystem/atoms.dm index 23da8cc8c9eb..ae4783e4837a 100644 --- a/code/controllers/subsystem/atoms.dm +++ b/code/controllers/subsystem/atoms.dm @@ -9,7 +9,7 @@ SUBSYSTEM_DEF(atoms) flags = SS_NO_FIRE var/old_initialized - /// A count of how many initalize changes we've made. We want to prevent old_initialize being overriden by some other value, breaking init code + /// A count of how many initalize changes we've made. We want to prevent old_initialize being overridden by some other value, breaking init code var/initialized_changed = 0 var/init_start_time var/processing_late_loaders = FALSE @@ -131,7 +131,7 @@ SUBSYSTEM_DEF(atoms) switch(result) if (INITIALIZE_HINT_NORMAL) - // pass + pass() if(INITIALIZE_HINT_LATELOAD) if(arguments[1]) //mapload late_loaders += A @@ -183,7 +183,7 @@ SUBSYSTEM_DEF(atoms) /datum/controller/subsystem/atoms/proc/map_loader_stop() clear_tracked_initalize() -/// Use this to set initialized to prevent error states where old_initialized is overriden. It keeps happening and it's cheesing me off +/// Use this to set initialized to prevent error states where old_initialized is overridden. It keeps happening and it's cheesing me off /datum/controller/subsystem/atoms/proc/set_tracked_initalized(value) if(!initialized_changed) old_initialized = initialized diff --git a/code/controllers/subsystem/autofire.dm b/code/controllers/subsystem/autofire.dm new file mode 100644 index 000000000000..3d3abbd2669f --- /dev/null +++ b/code/controllers/subsystem/autofire.dm @@ -0,0 +1,85 @@ +/** + * # Autofire Subsystem + * + * Maintains a timer-like system to handle autofiring. Much of this code is modeled + * after or adapted from TGMC's runechat subsytem. + * + * Note that this has the same structure for storing and queueing shooter component as the timer subsystem does + * for handling timers: the bucket_list is a list of autofire component, each of which are the head + * of a linked list. Any given index in bucket_list could be null, representing an empty bucket. + * + * Doesn't support any event scheduled for more than 100 ticks in the future, as it has no secondary queue by design + */ +SUBSYSTEM_DEF(automatedfire) + name = "Automated fire" + flags = SS_TICKER | SS_NO_INIT + wait = 1 + priority = SS_PRIORITY_AUTOFIRE + + /// world.time of the first entry in the bucket list, effectively the 'start time' of the current buckets + var/head_offset = 0 + /// Index of the first non-empty bucket + var/practical_offset = 1 + ///How many buckets for every frame of world.fps + var/bucket_resolution = 0 + /// How many shooter are in the buckets + var/shooter_count = 0 + /// List of buckets, each bucket holds every shooter that has to shoot this byond tick + var/list/bucket_list = list() + /// Reference to the next shooter before we clean shooter.next + var/datum/component/automatedfire/next_shooter + +/datum/controller/subsystem/automatedfire/PreInit() + bucket_list.len = AUTOFIRE_BUCKET_LEN + head_offset = world.time + bucket_resolution = world.tick_lag + +/datum/controller/subsystem/automatedfire/stat_entry(msg = "ActShooters: [shooter_count]") + return ..() + +/datum/controller/subsystem/automatedfire/fire(resumed = FALSE) + // Check for when we need to loop the buckets, this occurs when + // the head_offset is approaching AUTOFIRE_BUCKET_LEN ticks in the past + if (practical_offset > AUTOFIRE_BUCKET_LEN) + head_offset += TICKS2DS(AUTOFIRE_BUCKET_LEN) + practical_offset = 1 + resumed = FALSE + + // Check for when we have to reset buckets, typically from auto-reset + if ((length(bucket_list) != AUTOFIRE_BUCKET_LEN) || (world.tick_lag != bucket_resolution)) + reset_buckets() + bucket_list = src.bucket_list + resumed = FALSE + + // Store a reference to the 'working' shooter so that we can resume if the MC + // has us stop mid-way through processing + var/static/datum/component/automatedfire/shooter + if (!resumed) + shooter = null + + // Iterate through each bucket starting from the practical offset + while (practical_offset <= AUTOFIRE_BUCKET_LEN && head_offset + ((practical_offset - 1) * world.tick_lag) <= world.time) + if(!shooter) + shooter = bucket_list[practical_offset] + bucket_list[practical_offset] = null + + while (shooter) + next_shooter = shooter.next + INVOKE_ASYNC(shooter, TYPE_PROC_REF(/datum/component/automatedfire, process_shot)) + + SSautomatedfire.shooter_count-- + shooter = next_shooter + if (MC_TICK_CHECK) + return + + // Move to the next bucket + practical_offset++ + +/datum/controller/subsystem/automatedfire/Recover() + bucket_list |= SSautomatedfire.bucket_list + +///In the event of a change of world.tick_lag, we refresh the size of the bucket and the bucket resolution +/datum/controller/subsystem/automatedfire/proc/reset_buckets() + bucket_list.len = AUTOFIRE_BUCKET_LEN + head_offset = world.time + bucket_resolution = world.tick_lag diff --git a/code/controllers/subsystem/cellauto.dm b/code/controllers/subsystem/cellauto.dm index bcdd9d241ccf..b543ddd43c26 100644 --- a/code/controllers/subsystem/cellauto.dm +++ b/code/controllers/subsystem/cellauto.dm @@ -1,4 +1,4 @@ -var/list/cellauto_cells = list() +GLOBAL_LIST_EMPTY(cellauto_cells) SUBSYSTEM_DEF(cellauto) name = "Cellular Automata" @@ -9,12 +9,12 @@ SUBSYSTEM_DEF(cellauto) var/list/currentrun = list() /datum/controller/subsystem/cellauto/stat_entry(msg) - msg = "C: [cellauto_cells.len]" + msg = "C: [GLOB.cellauto_cells.len]" return ..() /datum/controller/subsystem/cellauto/fire(resumed = FALSE) if (!resumed) - currentrun = cellauto_cells.Copy() + currentrun = GLOB.cellauto_cells.Copy() while(currentrun.len) var/datum/automata_cell/C = currentrun[currentrun.len] diff --git a/code/controllers/subsystem/communications.dm b/code/controllers/subsystem/communications.dm index a98eaa0f7876..b8b037c33381 100644 --- a/code/controllers/subsystem/communications.dm +++ b/code/controllers/subsystem/communications.dm @@ -66,81 +66,91 @@ Frequency range: 1200 to 1600 Radiochat range: 1441 to 1489 (most devices refuse to be tune to other frequency, even during mapmaking) */ -var/const/MIN_FREE_FREQ = 1201 // ------------------------------------------------- +#define MIN_FREE_FREQ 1201 // ------------------------------------------------- //Misc channels -var/const/YAUT_FREQ = 1205 -var/const/DUT_FREQ = 1210 -var/const/CMB_FREQ = 1220 -var/const/VAI_FREQ = 1215 +#define YAUT_FREQ 1205 +#define DUT_FREQ 1210 +#define VAI_FREQ 1215 +#define RMC_FREQ 1216 +#define CMB_FREQ 1220 //WY Channels (1230-1249) -var/const/WY_FREQ = 1231 -var/const/PMC_CMD_FREQ = 1232 -var/const/PMC_FREQ = 1233 -var/const/PMC_ENGI_FREQ = 1234 -var/const/PMC_MED_FREQ = 1235 -var/const/PMC_CCT_FREQ = 1236 -var/const/WY_WO_FREQ = 1239 +#define WY_FREQ 1231 +#define PMC_CMD_FREQ 1232 +#define PMC_FREQ 1233 +#define PMC_ENGI_FREQ 1234 +#define PMC_MED_FREQ 1235 +#define PMC_CCT_FREQ 1236 +#define WY_WO_FREQ 1239 //UPP Channels (1250-1269) -var/const/UPP_FREQ = 1251 -var/const/UPP_CMD_FREQ = 1252 -var/const/UPP_ENGI_FREQ = 1253 -var/const/UPP_MED_FREQ = 1254 -var/const/UPP_CCT_FREQ = 1255 -var/const/UPP_KDO_FREQ = 1259 +#define UPP_FREQ 1251 +#define UPP_CMD_FREQ 1252 +#define UPP_ENGI_FREQ 1253 +#define UPP_MED_FREQ 1254 +#define UPP_CCT_FREQ 1255 +#define UPP_KDO_FREQ 1259 //CLF Channels (1270-1289) -var/const/CLF_FREQ = 1271 -var/const/CLF_CMD_FREQ = 1272 -var/const/CLF_ENGI_FREQ = 1273 -var/const/CLF_MED_FREQ = 1274 -var/const/CLF_CCT_FREQ = 1275 +#define CLF_FREQ 1271 +#define CLF_CMD_FREQ 1272 +#define CLF_ENGI_FREQ 1273 +#define CLF_MED_FREQ 1274 +#define CLF_CCT_FREQ 1275 -var/const/MIN_FREQ = 1460 // ------------------------------------------------------ -var/const/PUB_FREQ = 1461 -var/const/MAX_FREQ = 1468 // ------------------------------------------------------ +//Listening Bugs (1290-1291) +#define BUG_A_FREQ 1290 +#define BUG_B_FREQ 1291 + +//General Radio +#define MIN_FREQ 1460 // ------------------------------------------------------ +#define PUB_FREQ 1461 +#define MAX_FREQ 1468 // ------------------------------------------------------ //USCM High Command (USCM 1470-1499) -var/const/HC_FREQ = 1471 -var/const/SOF_FREQ = 1472 +#define HC_FREQ 1471 +#define SOF_FREQ 1472 +#define PVST_FREQ 1473 +#define CBRN_FREQ 1474 //Ship department channels -var/const/SENTRY_FREQ = 1480 -var/const/COMM_FREQ = 1481 -var/const/MED_FREQ = 1482 -var/const/ENG_FREQ = 1483 -var/const/SEC_FREQ = 1484 -var/const/REQ_FREQ = 1485 -var/const/JTAC_FREQ = 1486 -var/const/INTEL_FREQ = 1487 - -var/const/DS1_FREQ = 1488 -var/const/DS2_FREQ = 1489 +#define SENTRY_FREQ 1480 +#define COMM_FREQ 1481 +#define MED_FREQ 1482 +#define ENG_FREQ 1483 +#define SEC_FREQ 1484 +#define REQ_FREQ 1485 +#define JTAC_FREQ 1486 +#define INTEL_FREQ 1487 + +#define DS1_FREQ 1488 +#define DS2_FREQ 1489 //Marine Squad channels -var/const/ALPHA_FREQ = 1491 -var/const/BRAVO_FREQ = 1492 -var/const/CHARLIE_FREQ = 1493 -var/const/DELTA_FREQ = 1494 -var/const/ECHO_FREQ = 1495 -var/const/CRYO_FREQ = 1496 +#define ALPHA_FREQ 1491 +#define BRAVO_FREQ 1492 +#define CHARLIE_FREQ 1493 +#define DELTA_FREQ 1494 +#define ECHO_FREQ 1495 +#define CRYO_FREQ 1496 //Civilian channels -var/const/COLONY_FREQ = 1469 +#define COLONY_FREQ 1469 -var/const/AI_FREQ = 1500 +#define AI_FREQ 1500 -var/const/MAX_FREE_FREQ = 1599 // ------------------------------------------------- +#define MAX_FREE_FREQ 1599 // ------------------------------------------------- -var/list/radiochannels = list( +GLOBAL_LIST_INIT(radiochannels, list( RADIO_CHANNEL_YAUTJA = YAUT_FREQ, RADIO_CHANNEL_VAI = VAI_FREQ, RADIO_CHANNEL_CMB = CMB_FREQ, RADIO_CHANNEL_DUTCH_DOZEN = DUT_FREQ, + RADIO_CHANNEL_ROYAL_MARINE = RMC_FREQ, RADIO_CHANNEL_HIGHCOM = HC_FREQ, + RADIO_CHANNEL_PROVOST = PVST_FREQ, RADIO_CHANNEL_ALMAYER = PUB_FREQ, RADIO_CHANNEL_COMMAND = COMM_FREQ, RADIO_CHANNEL_MEDSCI = MED_FREQ, @@ -158,6 +168,7 @@ var/list/radiochannels = list( SQUAD_MARINE_5 = ECHO_FREQ, SQUAD_MARINE_CRYO = CRYO_FREQ, SQUAD_SOF = SOF_FREQ, + SQUAD_CBRN = CBRN_FREQ, RADIO_CHANNEL_ALAMO = DS1_FREQ, RADIO_CHANNEL_NORMANDY = DS2_FREQ, @@ -185,10 +196,13 @@ var/list/radiochannels = list( RADIO_CHANNEL_CLF_ENGI = CLF_ENGI_FREQ, RADIO_CHANNEL_CLF_MED = CLF_MED_FREQ, RADIO_CHANNEL_CLF_CCT = CLF_CCT_FREQ, -) + + RADIO_CHANNEL_BUG_A = BUG_A_FREQ, + RADIO_CHANNEL_BUG_B = BUG_B_FREQ, +)) // Response Teams -#define ERT_FREQS list(VAI_FREQ, DUT_FREQ, YAUT_FREQ, CMB_FREQ) +#define ERT_FREQS list(VAI_FREQ, DUT_FREQ, YAUT_FREQ, CMB_FREQ, RMC_FREQ) // UPP Frequencies #define UPP_FREQS list(UPP_FREQ, UPP_CMD_FREQ, UPP_ENGI_FREQ, UPP_MED_FREQ, UPP_CCT_FREQ, UPP_KDO_FREQ) @@ -199,6 +213,9 @@ var/list/radiochannels = list( // PMC Frequencies #define PMC_FREQS list(PMC_FREQ, PMC_CMD_FREQ, PMC_ENGI_FREQ, PMC_MED_FREQ, PMC_CCT_FREQ, WY_WO_FREQ, WY_FREQ) +//Listening Device Frequencies +#define BUG_FREQS list(BUG_A_FREQ, BUG_B_FREQ) + //Depts - used for colors in headset.dm, as well as deciding what the marine comms tower can listen into #define DEPT_FREQS list(COMM_FREQ, MED_FREQ, ENG_FREQ, SEC_FREQ, SENTRY_FREQ, ALPHA_FREQ, BRAVO_FREQ, CHARLIE_FREQ, DELTA_FREQ, ECHO_FREQ, CRYO_FREQ, REQ_FREQ, JTAC_FREQ, INTEL_FREQ, WY_FREQ) @@ -211,17 +228,17 @@ var/list/radiochannels = list( //This is done for performance, so we don't send signals to lots of machines unnecessarily. //This filter is special because devices belonging to default also receive signals sent to any other filter. -var/const/RADIO_DEFAULT = "radio_default" - -var/const/RADIO_TO_AIRALARM = "radio_airalarm" //air alarms -var/const/RADIO_FROM_AIRALARM = "radio_airalarm_rcvr" //devices interested in receiving signals from air alarms -var/const/RADIO_CHAT = "radio_telecoms" -var/const/RADIO_SIGNALS = "radio_signals" -var/const/RADIO_ATMOSIA = "radio_atmos" -var/const/RADIO_NAVBEACONS = "radio_navbeacon" -var/const/RADIO_AIRLOCK = "radio_airlock" -var/const/RADIO_MULEBOT = "radio_mulebot" -var/const/RADIO_MAGNETS = "radio_magnet" +#define RADIO_DEFAULT "radio_default" + +#define RADIO_TO_AIRALARM "radio_airalarm" //air alarms +#define RADIO_FROM_AIRALARM "radio_airalarm_rcvr" //devices interested in receiving signals from air alarms +#define RADIO_CHAT "radio_telecoms" +#define RADIO_SIGNALS "radio_signals" +#define RADIO_ATMOSIA "radio_atmos" +#define RADIO_NAVBEACONS "radio_navbeacon" +#define RADIO_AIRLOCK "radio_airlock" +#define RADIO_MULEBOT "radio_mulebot" +#define RADIO_MAGNETS "radio_magnet" //callback used by objects to react to incoming radio signals /obj/proc/receive_signal(datum/signal/signal, receive_method, receive_param) @@ -249,6 +266,7 @@ SUBSYSTEM_DEF(radio) "[INTEL_FREQ]" = "intelradio", "[WY_FREQ]" = "wyradio", "[VAI_FREQ]" = "vairadio", + "[RMC_FREQ]" = "rmcradio", "[CMB_FREQ]" = "cmbradio", "[CLF_FREQ]" = "clfradio", "[ALPHA_FREQ]" = "alpharadio", @@ -257,9 +275,13 @@ SUBSYSTEM_DEF(radio) "[DELTA_FREQ]" = "deltaradio", "[ECHO_FREQ]" = "echoradio", "[CRYO_FREQ]" = "cryoradio", + "[CBRN_FREQ]" = "hcradio", "[SOF_FREQ]" = "hcradio", "[HC_FREQ]" = "hcradio", + "[PVST_FREQ]" = "pvstradio", "[COLONY_FREQ]" = "deptradio", + "[BUG_A_FREQ]" = "airadio", + "[BUG_B_FREQ]" = "aiprivradio", ) /datum/controller/subsystem/radio/proc/add_object(obj/device as obj, new_frequency as num, filter = null as text|null) diff --git a/code/controllers/subsystem/decorator.dm b/code/controllers/subsystem/decorator.dm index e0e2c91022bc..6194b05d561b 100644 --- a/code/controllers/subsystem/decorator.dm +++ b/code/controllers/subsystem/decorator.dm @@ -1,4 +1,4 @@ -// our atom declaration should not be hardcoded for this SS existance. +// our atom declaration should not be hardcoded for this SS existence. // if this subsystem is deleted, stuff still works // That's why we define this here /atom/proc/Decorate(deferable = FALSE) diff --git a/code/controllers/subsystem/disease.dm b/code/controllers/subsystem/disease.dm index 25200cce11ed..b98187ca252c 100644 --- a/code/controllers/subsystem/disease.dm +++ b/code/controllers/subsystem/disease.dm @@ -1,22 +1,19 @@ -var/list/active_diseases = list() - - SUBSYSTEM_DEF(disease) name = "Disease" wait = 2 SECONDS flags = SS_NO_INIT | SS_KEEP_TIMING priority = SS_PRIORITY_DISEASE - var/list/currentrun = list() + var/list/datum/disease/all_diseases = list() + var/list/datum/disease/currentrun = list() /datum/controller/subsystem/disease/stat_entry(msg) - msg = "P:[active_diseases.len]" + msg = "P:[all_diseases.len]" return ..() - /datum/controller/subsystem/disease/fire(resumed = FALSE) if (!resumed) - currentrun = active_diseases.Copy() + currentrun = all_diseases.Copy() while (currentrun.len) var/datum/disease/D = currentrun[currentrun.len] diff --git a/code/controllers/subsystem/events.dm b/code/controllers/subsystem/events.dm index 83cd822725ca..f4dd544784f0 100644 --- a/code/controllers/subsystem/events.dm +++ b/code/controllers/subsystem/events.dm @@ -9,7 +9,7 @@ SUBSYSTEM_DEF(events) var/list/running = list() var/list/currentrun = list() - ///The next world.time that a naturally occuring random event can be selected. + ///The next world.time that a naturally occurring random event can be selected. var/scheduled = 0 ///Lower bound for how frequently events will occur var/frequency_lower = 5 MINUTES diff --git a/code/controllers/subsystem/fail_to_topic.dm b/code/controllers/subsystem/fail_to_topic.dm deleted file mode 100644 index 45674683a443..000000000000 --- a/code/controllers/subsystem/fail_to_topic.dm +++ /dev/null @@ -1,81 +0,0 @@ -SUBSYSTEM_DEF(fail_to_topic) - name = "Fail to Topic" - init_order = SS_INIT_FAIL_TO_TOPIC - flags = SS_BACKGROUND - runlevels = ALL - - var/list/rate_limiting = list() - var/list/fail_counts = list() - var/list/active_bans = list() - var/list/currentrun = list() - - var/rate_limit - var/max_fails - var/enabled = FALSE - -/datum/controller/subsystem/fail_to_topic/Initialize(timeofday) - rate_limit = ((CONFIG_GET(number/topic_rate_limit)) SECONDS) - max_fails = CONFIG_GET(number/topic_max_fails) - enabled = CONFIG_GET(flag/topic_enabled) - - if (world.system_type == UNIX && enabled) - enabled = FALSE - WARNING("fail_to_topic subsystem disabled. UNIX is not supported.") - return SS_INIT_NO_NEED - - if (!enabled) - can_fire = FALSE - return SS_INIT_NO_NEED - - return SS_INIT_SUCCESS - -/datum/controller/subsystem/fail_to_topic/fire(resumed = FALSE) - if(!resumed) - currentrun = rate_limiting.Copy() - //cache for sanic speed (lists are references anyways) - var/list/current_run = currentrun - - while(current_run.len) - var/ip = current_run[current_run.len] - var/last_attempt = current_run[ip] - current_run.len-- - - // last_attempt list housekeeping - if(world.time - last_attempt > rate_limit) - rate_limiting -= ip - fail_counts -= ip - - if(MC_TICK_CHECK) - return - -/datum/controller/subsystem/fail_to_topic/proc/IsRateLimited(ip) - if(!enabled) - return FALSE - - var/last_attempt = rate_limiting[ip] - - if (config.fail_to_topic_whitelisted_ips[ip]) - return FALSE - - if (active_bans[ip]) - return TRUE - - rate_limiting[ip] = world.time - - if (isnull(last_attempt)) - return FALSE - - if (world.time - last_attempt > rate_limit) - fail_counts -= ip - return FALSE - else - var/failures = fail_counts[ip] - - if (isnull(failures)) - fail_counts[ip] = 1 - return TRUE - else if (failures > max_fails) - return TRUE - else - fail_counts[ip] = failures + 1 - return TRUE diff --git a/code/controllers/subsystem/fast_machinery.dm b/code/controllers/subsystem/fast_machinery.dm deleted file mode 100644 index 8211b3b5e310..000000000000 --- a/code/controllers/subsystem/fast_machinery.dm +++ /dev/null @@ -1,27 +0,0 @@ -var/list/fast_machines = list() - - -SUBSYSTEM_DEF(fast_machinery) - name = "Fast Machinery" - wait = 0.7 SECONDS - priority = SS_PRIORITY_FAST_MACHINERY - flags = SS_NO_INIT - var/list/currentrun = list() - -/datum/controller/subsystem/fast_machinery/stat_entry(msg) - msg = "FP:[fast_machines.len]" - return ..() - -/datum/controller/subsystem/fast_machinery/fire(resumed = FALSE) - if(!resumed) - currentrun = fast_machines.Copy() - while(currentrun.len) - var/obj/structure/machinery/M = currentrun[currentrun.len] - currentrun.len-- - - if(QDELETED(M)) - continue - - M.process() - if(MC_TICK_CHECK) - return diff --git a/code/controllers/subsystem/fz_transitions.dm b/code/controllers/subsystem/fz_transitions.dm index fd41ce1ccb55..d12ab1358535 100644 --- a/code/controllers/subsystem/fz_transitions.dm +++ b/code/controllers/subsystem/fz_transitions.dm @@ -1,6 +1,6 @@ -var/list/projectors = list() -var/list/clones = list() -var/list/clones_t = list() +GLOBAL_LIST_EMPTY(projectors) +GLOBAL_LIST_EMPTY(clones) +GLOBAL_LIST_EMPTY(clones_t) SUBSYSTEM_DEF(fz_transitions) name = "Z-Transitions" @@ -10,18 +10,18 @@ SUBSYSTEM_DEF(fz_transitions) flags = SS_KEEP_TIMING /datum/controller/subsystem/fz_transitions/stat_entry(msg) - msg = "P:[projectors.len]|C:[clones.len]|T:[clones_t.len]" + msg = "P:[GLOB.projectors.len]|C:[GLOB.clones.len]|T:[GLOB.clones_t.len]" return ..() /datum/controller/subsystem/fz_transitions/Initialize() for(var/obj/effect/projector/P in world) - projectors.Add(P) + GLOB.projectors.Add(P) return SS_INIT_SUCCESS /datum/controller/subsystem/fz_transitions/fire(resumed = FALSE) - for(var/obj/effect/projector/P in projectors) + for(var/obj/effect/projector/P in GLOB.projectors) if(!P || !P.loc) - projectors -= P + GLOB.projectors -= P continue if(!P.loc.clone) P.loc.create_clone(P.vector_x, P.vector_y) @@ -36,13 +36,13 @@ SUBSYSTEM_DEF(fz_transitions) O.clone.proj_y = P.vector_y - for(var/atom/movable/clone/C in clones) + for(var/atom/movable/clone/C in GLOB.clones) if(C.mstr == null || !istype(C.mstr.loc, /turf)) C.mstr.destroy_clone() //Kill clone if master has been destroyed or picked up else if(C != C.mstr) C.mstr.update_clone() //NOTE: Clone updates are also forced by player movement to reduce latency - for(var/atom/T in clones_t) + for(var/atom/T in GLOB.clones_t) if(T.clone && T.icon_state) //Just keep the icon updated for explosions etc. T.clone.icon_state = T.icon_state diff --git a/code/controllers/subsystem/game_decorator.dm b/code/controllers/subsystem/game_decorator.dm new file mode 100644 index 000000000000..dd53b647d1a8 --- /dev/null +++ b/code/controllers/subsystem/game_decorator.dm @@ -0,0 +1,35 @@ +// Essentially the same as decorators but that apply to the whole game state instead of individual atoms +SUBSYSTEM_DEF(game_decorator) + name = "Game Decorator" + init_order = SS_INIT_DECORATOR + flags = SS_NO_FIRE + +/datum/controller/subsystem/game_decorator/Initialize() + . = ..() + for(var/decorator_type in subtypesof(/datum/game_decorator)) + var/datum/game_decorator/decorator = new decorator_type() + if(!decorator.is_active_decor()) + continue + if(!decorator.defer_decoration) + decorator.decorate() + CHECK_TICK + + return SS_INIT_SUCCESS + +/datum/game_decorator + var/defer_decoration = TRUE //! So map decoration is done post-setup after nightmare and spawners + +/datum/game_decorator/New() + if(defer_decoration && is_active_decor()) + RegisterSignal(SSdcs, COMSIG_GLOB_MODE_POSTSETUP, PROC_REF(defered_decoration)) + +/datum/game_decorator/proc/is_active_decor() + return FALSE + +/datum/game_decorator/proc/defered_decoration(dcs) + SIGNAL_HANDLER + decorate() + +/datum/game_decorator/proc/decorate() + set waitfor = FALSE + return diff --git a/code/controllers/subsystem/hijack.dm b/code/controllers/subsystem/hijack.dm new file mode 100644 index 000000000000..ed9eba2bc6c3 --- /dev/null +++ b/code/controllers/subsystem/hijack.dm @@ -0,0 +1,429 @@ +SUBSYSTEM_DEF(hijack) + name = "Hijack" + wait = 2 SECONDS + flags = SS_KEEP_TIMING + priority = SS_PRIORITY_HIJACK + init_order = SS_INIT_HIJACK + + ///Required progress to evacuate safely via lifeboats + var/required_progress = 100 + + ///Current progress towards evacuating safely via lifeboats + var/current_progress = 0 + + /// How much progress is required to early launch + var/early_launch_required_progress = 25 + + ///The estimated time left to get to the safe evacuation point + var/estimated_time_left = 0 + + ///Areas that are marked as having progress, assoc list that is progress_area = boolean, the boolean indicating if it was progressing or not on the last fire() + var/list/area/progress_areas = list() + + ///The areas that need cycled through currently + var/list/area/current_run = list() + + ///The progress of the current run that needs to be added at the end of the current run + var/current_run_progress_additive = 0 + + ///Holds what the current_run_progress_additive should be multiplied by at the end of the current run + var/current_run_progress_multiplicative = 1 + + ///Holds the progress change from last run + var/last_run_progress_change = 0 + + ///Holds the next % point progress should be announced, increments on itself + var/announce_checkpoint = 25 + + ///What stage of evacuation we are currently on + var/evac_status = EVACUATION_STATUS_NOT_INITIATED + + ///What stage of hijack are we currently on + var/hijack_status = HIJACK_OBJECTIVES_NOT_STARTED + + ///Whether or not evacuation has been disabled by admins + var/evac_admin_denied = FALSE + + /// If TRUE, self destruct has been unlocked and is possible with a hold of reactor + var/sd_unlocked = FALSE + + /// Admin var to manually prevent self destruct from occurring + var/admin_sd_blocked = FALSE + + /// Maximum amount of fusion generators that can be overloaded at once for a time benefit + var/maximum_overload_generators = 18 + + /// How many generators are currently overloaded + var/overloaded_generators = 0 + + /// How long the manual self destruct will take on the high end + var/sd_max_time = 15 MINUTES + + /// How long the manual self destruct will take on the low end + var/sd_min_time = 5 MINUTES + + /// How much time left until SD detonates + var/sd_time_remaining = 0 + + /// Roughly what % of the SD countdown remains + var/percent_completion_remaining = 100 + + /// If the engine room has been heated, occurs at 33% SD completion + var/engine_room_heated = FALSE + + /// If the engine room has been superheated, occurs at 66% SD completion + var/engine_room_superheated = FALSE + + /// If the self destruct has/is detonating + var/sd_detonated = FALSE + + /// If a generator has ever been overloaded in the past this round + var/generator_ever_overloaded = FALSE + + /// If ARES has announced the 50% point yet for SD + var/ares_sd_announced = FALSE + +/datum/controller/subsystem/hijack/Initialize(timeofday) + RegisterSignal(SSdcs, COMSIG_GLOB_GENERATOR_SET_OVERLOADING, PROC_REF(on_generator_overload)) + return SS_INIT_SUCCESS + +/datum/controller/subsystem/hijack/stat_entry(msg) + if(!SSticker?.mode?.is_in_endgame) + msg = " Not Hijack" + return ..() + + if(current_progress >= required_progress) + msg = " Complete" + return ..() + + msg = " Progress: [current_progress]% | Last run: [last_run_progress_change]" + return ..() + +/datum/controller/subsystem/hijack/fire(resumed = FALSE) + if(!SSticker?.mode?.is_in_endgame) + return + + if(hijack_status < HIJACK_OBJECTIVES_STARTED) + hijack_status = HIJACK_OBJECTIVES_STARTED + + if(current_progress >= required_progress) + if(hijack_status < HIJACK_OBJECTIVES_COMPLETE) + hijack_status = HIJACK_OBJECTIVES_COMPLETE + + if(sd_unlocked && overloaded_generators) + sd_time_remaining -= wait + if(!engine_room_heated && (sd_time_remaining <= (max((1 - round(overloaded_generators / maximum_overload_generators, 0.01)) * sd_max_time, sd_min_time) * 0.66))) + heat_engine_room() + + if(!ares_sd_announced && (sd_time_remaining <= (max((1 - round(overloaded_generators / maximum_overload_generators, 0.01)) * sd_max_time, sd_min_time) * 0.5))) + announce_sd_halfway() + + if(!engine_room_superheated && (sd_time_remaining <= (max((1 - round(overloaded_generators / maximum_overload_generators, 0.01)) * sd_max_time, sd_min_time) * 0.33))) + superheat_engine_room() + + if((sd_time_remaining <= 0) && !sd_detonated) + detonate_sd() + + return + + if(!resumed) + current_run = progress_areas.Copy() + + for(var/area/almayer/cycled_area as anything in current_run) + current_run -= cycled_area + + if(progress_areas[cycled_area] != cycled_area.power_equip) + progress_areas[cycled_area] = !progress_areas[cycled_area] + announce_area_power_change(cycled_area) + + if(progress_areas[cycled_area]) + switch(cycled_area.hijack_evacuation_type) + if(EVACUATION_TYPE_ADDITIVE) + current_run_progress_additive += cycled_area.hijack_evacuation_weight + if(EVACUATION_TYPE_MULTIPLICATIVE) + current_run_progress_multiplicative *= cycled_area.hijack_evacuation_weight + + if (MC_TICK_CHECK) + return + + last_run_progress_change = current_run_progress_additive * current_run_progress_multiplicative + current_progress += last_run_progress_change + + if(last_run_progress_change) + estimated_time_left = ((required_progress - current_progress) / last_run_progress_change) * wait + else + estimated_time_left = INFINITY + + if(current_progress >= announce_checkpoint) + announce_progress() + announce_checkpoint += initial(announce_checkpoint) + + current_run_progress_additive = 0 + current_run_progress_multiplicative = 1 + +///Called when the xeno dropship crashes into the Almayer and announces the current status of various objectives to marines +/datum/controller/subsystem/hijack/proc/announce_status_on_crash() + var/message = "" + + for(var/area/cycled_area as anything in progress_areas) + message += "[cycled_area] - [cycled_area.power_equip ? "Online" : "Offline"]\n" + progress_areas[cycled_area] = cycled_area.power_equip + + message += "\nDue to low orbit, extra fuel is required for non-surface evacuations.\nMaintain fueling functionality for optimal evacuation conditions." + + marine_announcement(message, HIJACK_ANNOUNCE) + +///Called when an area power status is changed to announce that it has been changed +/datum/controller/subsystem/hijack/proc/announce_area_power_change(area/changed_area) + var/message = "[changed_area] - [changed_area.power_equip ? "Online" : "Offline"]" + + marine_announcement(message, HIJACK_ANNOUNCE) + +///Called to announce to xenos the state of evacuation progression +/datum/controller/subsystem/hijack/proc/announce_progress() + var/announce = announce_checkpoint / initial(announce_checkpoint) + + var/marine_warning_areas = "" + var/xeno_warning_areas = "" + + for(var/area/cycled_area as anything in progress_areas) + if(cycled_area.power_equip) + xeno_warning_areas += "[cycled_area], " + continue + marine_warning_areas += "[cycled_area], " + + if(xeno_warning_areas) + xeno_warning_areas = copytext(xeno_warning_areas, 1, -2) + + if(marine_warning_areas) + marine_warning_areas = copytext(marine_warning_areas, 1, -2) + + var/datum/hive_status/hive + for(var/hivenumber in GLOB.hive_datum) + hive = GLOB.hive_datum[hivenumber] + if(!length(hive.totalXenos)) + continue + + switch(announce) + if(1) + xeno_announcement(SPAN_XENOANNOUNCE("The talls are a quarter of the way towards their goals. Disable the following areas: [xeno_warning_areas]"), hive.hivenumber, XENO_HIJACK_ANNOUNCE) + if(2) + xeno_announcement(SPAN_XENOANNOUNCE("The talls are half way towards their goals. Disable the following areas: [xeno_warning_areas]"), hive.hivenumber, XENO_HIJACK_ANNOUNCE) + if(3) + xeno_announcement(SPAN_XENOANNOUNCE("The talls are three quarters of the way towards their goals. Disable the following areas: [xeno_warning_areas]"), hive.hivenumber, XENO_HIJACK_ANNOUNCE) + if(4) + xeno_announcement(SPAN_XENOANNOUNCE("The talls have completed their goals!"), hive.hivenumber, XENO_HIJACK_ANNOUNCE) + + switch(announce) + if(1) + marine_announcement("Emergency fuel replenishment is at 25 percent. Lifeboat emergency early launch is now available.[marine_warning_areas ? "\nTo increase speed, restore power to the following areas: [marine_warning_areas]" : " All fueling areas operational."]", HIJACK_ANNOUNCE) + if(2) + marine_announcement("Emergency fuel replenishment is at 50 percent.[marine_warning_areas ? "\nTo increase speed, restore power to the following areas: [marine_warning_areas]" : " All fueling areas operational."]", HIJACK_ANNOUNCE) + if(3) + marine_announcement("Emergency fuel replenishment is at 75 percent.[marine_warning_areas ? "\nTo increase speed, restore power to the following areas: [marine_warning_areas]" : " All fueling areas operational."]", HIJACK_ANNOUNCE) + if(4) + marine_announcement("Emergency fuel replenishment is at 100 percent. Safe utilization of lifeboats and pods is now possible.", HIJACK_ANNOUNCE) + if(!admin_sd_blocked) + addtimer(CALLBACK(src, PROC_REF(unlock_self_destruct)), 8 SECONDS) + +/// Passes the ETA for status panels +/datum/controller/subsystem/hijack/proc/get_evac_eta() + switch(hijack_status) + if(HIJACK_OBJECTIVES_STARTED) + if(estimated_time_left == INFINITY) + return "Never" + return "[duration2text_sec(estimated_time_left)]" + + if(HIJACK_OBJECTIVES_COMPLETE) + return "Complete" + +/datum/controller/subsystem/hijack/proc/get_sd_eta() + if(sd_detonated) + return "Complete" + + if(overloaded_generators <= 0) + return "Never" + + return "[duration2text_sec(sd_time_remaining)]" + +//~~~~~~~~~~~~~~~~~~~~~~~~ EVAC STUFF ~~~~~~~~~~~~~~~~~~~~~~~~// + +/// Initiates evacuation by announcing and then prepping all lifepods/lifeboats +/datum/controller/subsystem/hijack/proc/initiate_evacuation() + if(evac_status == EVACUATION_STATUS_NOT_INITIATED && !(evac_admin_denied & FLAGS_EVACUATION_DENY)) + evac_status = EVACUATION_STATUS_INITIATED + ai_announcement("Attention. Emergency. All personnel must evacuate immediately.", 'sound/AI/evacuate.ogg') + + for(var/obj/structure/machinery/status_display/cycled_status_display in GLOB.machines) + if(is_mainship_level(cycled_status_display.z)) + cycled_status_display.set_picture("evac") + for(var/obj/docking_port/mobile/crashable/escape_shuttle/shuttle in SSshuttle.mobile) + shuttle.prepare_evac() + activate_lifeboats() + return TRUE + +/// Cancels evacuation, tells lifepods/lifeboats and status_displays +/datum/controller/subsystem/hijack/proc/cancel_evacuation() + if(evac_status == EVACUATION_STATUS_INITIATED) + evac_status = EVACUATION_STATUS_NOT_INITIATED + deactivate_lifeboats() + ai_announcement("Evacuation has been cancelled.", 'sound/AI/evacuate_cancelled.ogg') + + for(var/obj/structure/machinery/status_display/cycled_status_display in GLOB.machines) + if(is_mainship_level(cycled_status_display.z)) + cycled_status_display.set_sec_level_picture() + + for(var/obj/docking_port/mobile/crashable/escape_shuttle/shuttle in SSshuttle.mobile) + shuttle.cancel_evac() + return TRUE + +/// Opens the lifeboat doors and gets them ready to launch +/datum/controller/subsystem/hijack/proc/activate_lifeboats() + for(var/obj/docking_port/stationary/lifeboat_dock/lifeboat_dock in GLOB.lifeboat_almayer_docks) + var/obj/docking_port/mobile/crashable/lifeboat/lifeboat = lifeboat_dock.get_docked() + if(lifeboat && lifeboat.available) + lifeboat.status = LIFEBOAT_ACTIVE + lifeboat_dock.open_dock() + +/// Turns off ability to manually take off lifeboats +/datum/controller/subsystem/hijack/proc/deactivate_lifeboats() + for(var/obj/docking_port/stationary/lifeboat_dock/lifeboat_dock in GLOB.lifeboat_almayer_docks) + var/obj/docking_port/mobile/crashable/lifeboat/lifeboat = lifeboat_dock.get_docked() + if(lifeboat && lifeboat.available) + lifeboat.status = LIFEBOAT_INACTIVE + + +/// Once refueling is done, marines can optionally hold SD for a time for a stalemate instead of a xeno minor +/datum/controller/subsystem/hijack/proc/unlock_self_destruct() + sd_time_remaining = sd_max_time + sd_unlocked = TRUE + marine_announcement("Fuel reserves full. Manual detonation of fuel reserves by overloading the on-board fusion reactors now possible.", HIJACK_ANNOUNCE) + +/datum/controller/subsystem/hijack/proc/on_generator_overload(obj/structure/machinery/power/fusion_engine/source, new_overloading) + SIGNAL_HANDLER + + if(!generator_ever_overloaded) + generator_ever_overloaded = TRUE + var/datum/hive_status/hive + for(var/hivenumber in GLOB.hive_datum) + hive = GLOB.hive_datum[hivenumber] + if(!length(hive.totalXenos)) + continue + + xeno_announcement(SPAN_XENOANNOUNCE("The talls may be attempting to take their ship down with them in Engineering, stop them!"), hive.hivenumber, XENO_HIJACK_ANNOUNCE) + + adjust_generator_overload_count(new_overloading ? 1 : -1) + +/datum/controller/subsystem/hijack/proc/adjust_generator_overload_count(amount = 1) + var/generator_overload_percent = round(overloaded_generators / maximum_overload_generators, 0.01) + var/old_required_time = sd_min_time + ((1 - generator_overload_percent) * (sd_max_time - sd_min_time)) + percent_completion_remaining = sd_time_remaining / old_required_time + overloaded_generators = clamp(overloaded_generators + amount, 0, maximum_overload_generators) + generator_overload_percent = round(overloaded_generators / maximum_overload_generators, 0.01) + var/new_required_time = sd_min_time + ((1 - generator_overload_percent) * (sd_max_time - sd_min_time)) + sd_time_remaining = percent_completion_remaining * new_required_time + +/datum/controller/subsystem/hijack/proc/heat_engine_room() + engine_room_heated = TRUE + var/area/engine_room = GLOB.areas_by_type[/area/almayer/engineering/lower/engine_core] + engine_room.firealert() + engine_room.temperature = T90C + for(var/mob/current_mob as anything in GLOB.mob_list) + var/area/mob_area = get_area(current_mob) + if(istype(mob_area, /area/almayer/engineering/lower/engine_core)) + to_chat(current_mob, SPAN_BOLDWARNING("You feel the heat of the room increase as the fusion engines whirr louder.")) + +/datum/controller/subsystem/hijack/proc/superheat_engine_room() + engine_room_superheated = TRUE + var/area/engine_room = GLOB.areas_by_type[/area/almayer/engineering/lower/engine_core] + engine_room.firealert() + engine_room.temperature = T120C //slowly deals burn at this temp + for(var/mob/current_mob as anything in GLOB.mob_list) + var/area/mob_area = get_area(current_mob) + if(istype(mob_area, /area/almayer/engineering/lower/engine_core)) + to_chat(current_mob, SPAN_BOLDWARNING("The room feels incredibly hot, you can't take much more of this!")) + +/datum/controller/subsystem/hijack/proc/announce_sd_halfway() + ares_sd_announced = TRUE + marine_announcement("ALERT: Fusion reactor meltdown has reached fifty percent.", HIJACK_ANNOUNCE) + +/datum/controller/subsystem/hijack/proc/detonate_sd() + set waitfor = FALSE + sd_detonated = TRUE + var/creak_picked = pick('sound/effects/creak1.ogg', 'sound/effects/creak2.ogg', 'sound/effects/creak3.ogg') + for(var/mob/current_mob as anything in GLOB.mob_list) + var/turf/current_turf = get_turf(current_mob) + if(!current_mob?.loc || !current_mob.client || !current_turf || !is_mainship_level(current_turf.z)) + continue + + to_chat(current_mob, SPAN_BOLDWARNING("The ship's deck worryingly creaks underneath you.")) + playsound_client(current_mob.client, creak_picked, vol = 50) + + sleep(7 SECONDS) + shakeship(2, 10, TRUE) + + marine_announcement("ALERT: Fusion reactors dangerously overloaded. Runaway meltdown in reactor core imminent.", HIJACK_ANNOUNCE) + sleep(5 SECONDS) + + var/sound_picked = pick('sound/theme/nuclear_detonation1.ogg','sound/theme/nuclear_detonation2.ogg') + for(var/client/player as anything in GLOB.clients) + playsound_client(player, sound_picked, 90) + + var/list/alive_mobs = list() //Everyone who will be destroyed on the zlevel(s). + var/list/dead_mobs = list() //Everyone who only needs to see the cinematic. + for(var/mob/current_mob as anything in GLOB.mob_list) //This only does something cool for the people about to die, but should prove pretty interesting. + var/turf/current_turf = get_turf(current_mob) + if(!current_mob?.loc || !current_turf) + continue + + if(current_mob.stat == DEAD) + dead_mobs |= current_mob + continue + + if(is_mainship_level(current_turf.z)) + alive_mobs |= current_mob + shake_camera(current_mob, 110, 4) + + + sleep(10 SECONDS) + /*Hardcoded for now, since this was never really used for anything else. + Would ideally use a better system for showing cutscenes.*/ + var/atom/movable/screen/cinematic/explosion/explosive_cinematic = new() + + for(var/mob/current_mob as anything in (alive_mobs + dead_mobs)) + if(current_mob?.loc && current_mob.client) + current_mob.client.add_to_screen(explosive_cinematic) //They may have disconnected in the mean time. + + sleep(1.5 SECONDS) //Extra 1.5 seconds to look at the ship. + flick("intro_nuke", explosive_cinematic) + + sleep(3.5 SECONDS) + for(var/mob/current_mob as anything in alive_mobs) + var/turf/current_mob_turf = get_turf(current_mob) + if(!current_mob?.loc || !current_mob_turf) //Who knows, maybe they escaped, or don't exist anymore. + continue + + if(is_mainship_level(current_mob_turf.z)) + if(istype(current_mob.loc, /obj/structure/closet/secure_closet/freezer/fridge)) + continue + + current_mob.death(create_cause_data("nuclear explosion")) + else + current_mob.client.remove_from_screen(explosive_cinematic) //those who managed to escape the z level at last second shouldn't have their view obstructed. + + flick("ship_destroyed", explosive_cinematic) + explosive_cinematic.icon_state = "summary_destroyed" + + for(var/client/player as anything in GLOB.clients) + playsound_client(player, 'sound/effects/explosionfar.ogg', 90) + + + sleep(0.5 SECONDS) + if(SSticker.mode) + SSticker.mode.check_win() + + if(!SSticker.mode) //Just a safety, just in case a mode isn't running, somehow. + to_world(SPAN_ROUNDBODY("Resetting in 30 seconds!")) + sleep(30 SECONDS) + log_game("Rebooting due to nuclear detonation.") + world.Reboot() diff --git a/code/controllers/subsystem/htmlui.dm b/code/controllers/subsystem/htmlui.dm deleted file mode 100644 index 5dc885abc625..000000000000 --- a/code/controllers/subsystem/htmlui.dm +++ /dev/null @@ -1,57 +0,0 @@ -// What in the name of god is this? -// You'd think it'd be some form of process for the HTML interface module. -// But it isn't? -// It's some form of proc queue but ??? -// Does anything even *use* this? - -SUBSYSTEM_DEF(html_ui) - name = "HTMLUI" - wait = 1.7 SECONDS - flags = SS_NO_INIT - runlevels = RUNLEVELS_DEFAULT|RUNLEVEL_LOBBY - var/list/update = list() - -/datum/controller/subsystem/html_ui/fire(resumed = FALSE) - if (update.len) - var/list/L = list() - var/key - - for (var/datum/procqueue_item/item in update) - key = "[item.ref]_[item.procname]" - - if (item.args) - key += "(" - var/first = 1 - for (var/a in item.args) - if (!first) - key += "," - key += "[a]" - first = 0 - key += ")" - - if (!(key in L)) - if (item.args) - call(item.ref, item.procname)(arglist(item.args)) - else - call(item.ref, item.procname)() - - L.Add(key) - - update.Cut() - - -/datum/controller/subsystem/html_ui/proc/queue(ref, procname, ...) - var/datum/procqueue_item/item = new - item.ref = ref - item.procname = procname - - if (args.len > 2) - item.args = args.Copy(3) - - update.Insert(1, item) - - -/datum/procqueue_item - var/ref - var/procname - var/list/args diff --git a/code/controllers/subsystem/inactivity.dm b/code/controllers/subsystem/inactivity.dm index dd547e1f406b..6b8542444040 100644 --- a/code/controllers/subsystem/inactivity.dm +++ b/code/controllers/subsystem/inactivity.dm @@ -1,20 +1,26 @@ -#define INACTIVITY_KICK 6000 //10 minutes in ticks (approx.) +#define INACTIVITY_KICK 10 MINUTES SUBSYSTEM_DEF(inactivity) name = "Inactivity" - wait = INACTIVITY_KICK + wait = 1 MINUTES flags = SS_NO_INIT | SS_BACKGROUND priority = SS_PRIORITY_INACTIVITY runlevels = RUNLEVELS_DEFAULT|RUNLEVEL_LOBBY /datum/controller/subsystem/inactivity/fire(resumed = FALSE) - if (CONFIG_GET(flag/kick_inactive)) - for(var/i in GLOB.clients) - var/client/C = i - if(C.admin_holder && C.admin_holder.rights & R_ADMIN) //Skip admins. - continue - if (C.is_afk(INACTIVITY_KICK)) - if (!istype(C.mob, /mob/dead)) - log_access("AFK: [key_name(C)]") - to_chat(C, SPAN_WARNING("You have been inactive for more than 10 minutes and have been disconnected.")) - qdel(C) + if(list_clear_nulls(GLOB.clients)) + debug_log("Removed nulls from GLOB.clients!") + if(list_clear_nulls(GLOB.player_list)) + debug_log("Removed nulls from GLOB.player_list!") + + if (!CONFIG_GET(flag/kick_inactive)) + return + + for(var/client/current as anything in GLOB.clients) + if(current.admin_holder && current.admin_holder.rights & R_MOD) //Skip admins. + continue + if(current.is_afk(INACTIVITY_KICK)) + if(!istype(current.mob, /mob/dead)) + log_access("AFK: [key_name(current)]") + to_chat(current, SPAN_WARNING("You have been inactive for more than [INACTIVITY_KICK / 600] minutes and have been disconnected.")) + qdel(current) diff --git a/code/controllers/subsystem/influxdriver.dm b/code/controllers/subsystem/influxdriver.dm new file mode 100644 index 000000000000..7e5289dfc518 --- /dev/null +++ b/code/controllers/subsystem/influxdriver.dm @@ -0,0 +1,132 @@ +/// Sends collected statistics to an influxdb v2 backend periodically +SUBSYSTEM_DEF(influxdriver) + name = "InfluxDB Driver" + wait = 10 SECONDS + init_order = SS_INIT_INFLUXDRIVER + priority = SS_PRIORITY_INFLUXDRIVER + runlevels = RUNLEVELS_DEFAULT|RUNLEVEL_LOBBY + + var/list/send_queue = list() + + /// Maximum amount of metric lines to send at most in one request + /// This is neccessary because sending a lot of metrics can get expensive + /// and drive the subsystem into overtime, but we can't split the work as it'd be even less efficient + var/max_batch = 150 + + /// Last timestamp in microseconds + var/timestamp_cache_realtime + /// Last tick time the timestamp was taken at + var/timestamp_cache_worldtime + +/datum/controller/subsystem/influxdriver/Initialize() + var/period = text2num(CONFIG_GET(number/influxdb_send_period)) + if(isnum(period)) + wait = max(period * (1 SECONDS), 2 SECONDS) + return SS_INIT_SUCCESS + +/datum/controller/subsystem/influxdriver/stat_entry(msg) + msg += "period=[wait] queue=[length(send_queue)]" + return ..() + +/datum/controller/subsystem/influxdriver/proc/unix_timestamp_string() // pending change to rust-g + return RUSTG_CALL(RUST_G, "unix_timestamp")() + +/datum/controller/subsystem/influxdriver/proc/update_timestamp() + PRIVATE_PROC(TRUE) + // We make only one request to rustg per game tick, so we cache the result per world.time + var/whole_timestamp = unix_timestamp_string() // Format "7129739474.4758981" - timestamp with up to 7-8 decimals + var/list/tsparts = splittext(whole_timestamp, ".") + var/fractional = copytext(pad_trailing(tsparts[2], "0", 6), 1, 7) // in microseconds + timestamp_cache_worldtime = world.time + timestamp_cache_realtime = "[tsparts[1]][fractional]" + +/datum/controller/subsystem/influxdriver/fire(resumed) + var/maxlen = min(length(send_queue)+1, max_batch) + var/list/queue = send_queue.Copy(1, maxlen) + send_queue.Cut(1, maxlen) + flush_queue(queue) + +/// Flushes measurements batch to InfluxDB backend +/datum/controller/subsystem/influxdriver/proc/flush_queue(list/queue) + PRIVATE_PROC(TRUE) + + var/host = CONFIG_GET(string/influxdb_host) + var/token = CONFIG_GET(string/influxdb_token) + var/bucket = CONFIG_GET(string/influxdb_bucket) + var/org = CONFIG_GET(string/influxdb_org) + + if(!host || !token || !bucket || !org) + can_fire = FALSE + return + + if(!length(queue)) + return // Nothing to do + + var/url = "[host]/api/v2/write?org=[org]&bucket=[bucket]&precision=us" // microseconds + var/list/headers = list() + headers["Authorization"] = "Token [token]" + headers["Content-Type"] = "text/plain; charset=utf-8" + headers["Accept"] = "application/json" + + var/datum/http_request/request = new + var/payload = "" + for(var/line in queue) + payload += "[line]\n" + request.prepare(RUSTG_HTTP_METHOD_POST, url, payload, headers) + request.begin_async() + // TODO possibly check back result of request later + +/// Enqueues sending to InfluxDB Backend selected measurement values - round_id and timestamp are filled in automatically +/datum/controller/subsystem/influxdriver/proc/enqueue_stats(measurement, list/tags, list/fields) + . = FALSE + var/valid = FALSE + var/serialized = "[measurement],round_id=[GLOB.round_id]" + if(tags) + for(var/tag in tags) + var/serialized_tag = serialize_field(tag, tags[tag]) + if(serialized_tag) + serialized += ",[serialized_tag]" + serialized += " " + var/comma = "" + for(var/field in fields) + var/serialized_field = serialize_field(field, fields[field]) + if(serialized_field) + valid = TRUE + serialized += "[comma][serialized_field]" + comma = "," + if(!valid) + CRASH("Attempted to serialize to InfluxDB backend an invalid measurement (likely has no fields)") + if(timestamp_cache_worldtime != world.time) + update_timestamp() + serialized += " [timestamp_cache_realtime]" + send_queue += serialized + return TRUE + +/// Enqueues sending varied stats in a dumb and simpler format directly as: measurement count= +/datum/controller/subsystem/influxdriver/proc/enqueue_stats_crude(measurement, value, field_name = "count") + . = FALSE + var/serialized_field = serialize_field(field_name, value) + if(!length(serialized_field)) + return + if(timestamp_cache_worldtime != world.time) + update_timestamp() + var/serialized = "[measurement],round_id=[GLOB.round_id] [serialized_field] [timestamp_cache_realtime]" + send_queue += serialized + return TRUE + +/// Puts a single field or tag value into InfluxDB Line format +/datum/controller/subsystem/influxdriver/proc/serialize_field(field, value) + var/static/regex/whitelistedCharacters = regex(@{"([^a-zA-Z0-9_]+)"}, "g") + var/sanitized_field = whitelistedCharacters.Replace("[field]", "") + if(!length(sanitized_field) || copytext(sanitized_field, 1, 2) == "_") + CRASH("Invalid tag/field for InfluxDB serialization: '[sanitized_field]' (original: '[field]')") + var/sanitized_value + if(isnum(value)) + sanitized_value = value + else if(istext(value)) + sanitized_value = whitelistedCharacters.Replace("[value]", "") + if(!length(sanitized_value) || copytext(sanitized_value, 1, 2) == "_") + CRASH("Invalid value for InfluxDB serialization: '[sanitized_value]' (original: '[value]')") + else + CRASH("Invalid value type passed for InfluxDB serialization: '[value]'") + return "[sanitized_field]=[sanitized_value]" diff --git a/code/controllers/subsystem/influxmcstats.dm b/code/controllers/subsystem/influxmcstats.dm new file mode 100644 index 000000000000..a1bf171d81a3 --- /dev/null +++ b/code/controllers/subsystem/influxmcstats.dm @@ -0,0 +1,47 @@ +SUBSYSTEM_DEF(influxmcstats) + name = "InfluxDB MC Stats" + wait = 60 SECONDS + priority = SS_PRIORITY_INFLUXMCSTATS + init_order = SS_INIT_INFLUXMCSTATS + runlevels = RUNLEVEL_LOBBY|RUNLEVELS_DEFAULT + flags = SS_KEEP_TIMING + var/checkpoint = 0 + var/list/subsystem_name_cache = list() + +/datum/controller/subsystem/influxmcstats/Initialize() + var/period = text2num(CONFIG_GET(number/influxdb_mcstats_period)) + if(isnum(period)) + wait = max(period * (1 SECONDS), 10 SECONDS) + return SS_INIT_SUCCESS + +/datum/controller/subsystem/influxmcstats/stat_entry(msg) + msg += "period=[wait] checkpoint=[checkpoint]" + return ..() + +/datum/controller/subsystem/influxmcstats/fire(resumed) + if(!SSinfluxdriver.can_fire) + can_fire = FALSE + return + + var/list/data = list() + data["time_dilation_current"] = SStime_track.time_dilation_current + data["time_dilation_avg"] = SStime_track.time_dilation_avg + data["time_dilation_avg_slow"] = SStime_track.time_dilation_avg_slow + data["time_dilation_avg_fast"] = SStime_track.time_dilation_avg_fast + SSinfluxdriver.enqueue_stats("tidi", null, data) + + SSinfluxdriver.enqueue_stats("cpu", null, list("cpu" = world.cpu, "map_cpu" = world.map_cpu)) + + var/static/regex/get_last_path_element = regex(@{"/([^/]+)$"}) + checkpoint++ + for(var/datum/controller/subsystem/SS in Master.subsystems) + if(!SS.can_fire) + continue + if(!subsystem_name_cache[SS.type]) + get_last_path_element.Find("[SS.type]") + subsystem_name_cache[SS.type] = "SS[get_last_path_element.group[1]]" + var/SSname = subsystem_name_cache[SS.type] + if(!SSname) + stack_trace("Influx MC Stats couldnt name a subsystem, type=[SS.type]") + continue + SSinfluxdriver.enqueue_stats("sstimings", list("ss" = SSname), list("cost" = SS.cost, "tick_overrun" = SS.tick_overrun, "tick_usage" = SS.tick_usage, "wait" = SS.wait)) diff --git a/code/controllers/subsystem/influxstats.dm b/code/controllers/subsystem/influxstats.dm new file mode 100644 index 000000000000..066c94cc2593 --- /dev/null +++ b/code/controllers/subsystem/influxstats.dm @@ -0,0 +1,156 @@ +/// Sends generic round running statistics to the InfluxDB backend +SUBSYSTEM_DEF(influxstats) + name = "InfluxDB Game Stats" + wait = 60 SECONDS + priority = SS_PRIORITY_INFLUXSTATS + init_order = SS_INIT_INFLUXSTATS + runlevels = RUNLEVEL_LOBBY|RUNLEVELS_DEFAULT + flags = SS_KEEP_TIMING + + var/checkpoint = 0 //! Counter of data snapshots sent + var/step = 1 //! Current task in progress, for pausing/resuming + +/datum/controller/subsystem/influxstats/Initialize() + var/period = text2num(CONFIG_GET(number/influxdb_stats_period)) + if(isnum(period)) + wait = max(period * (1 SECONDS), 10 SECONDS) + return SS_INIT_SUCCESS + +/datum/controller/subsystem/influxstats/stat_entry(msg) + msg += "period=[wait] checkpoint=[checkpoint] step=[step]" + return ..() + +/datum/controller/subsystem/influxstats/fire(resumed) + if(!SSinfluxdriver.can_fire) + can_fire = FALSE + return + + checkpoint++ + while(step < 5) // Yes, you could make one SS per stats category, and have proper scheduling and variable periods, but... + switch(step++) + if(1) // Connected players statistics + run_player_statistics() + if(2) // Job occupations + if(SSticker.current_state == GAME_STATE_PLAYING) + run_job_statistics() + if(3) // Round-wide gameplay statistics held in entity + if(SSticker.current_state == GAME_STATE_PLAYING) + run_round_statistics() + if(4) // Handpicked Round-wide gameplay statistics + if(SSticker.current_state == GAME_STATE_PLAYING) + run_special_round_statistics() + if(MC_TICK_CHECK) + return + + step = 1 + +/datum/controller/subsystem/influxstats/proc/flatten_entity_list(list/data) + var/list/result = list() + for(var/key in data) + var/datum/entity/statistic/entry = data[key] + result[key] = entry.value + return result + +/datum/controller/subsystem/influxstats/proc/run_special_round_statistics() + for(var/hive_tag in GLOB.hive_datum) + var/datum/hive_status/hive = GLOB.hive_datum[hive_tag] + SSinfluxdriver.enqueue_stats("pooled_larva", list("hive" = hive.reporting_id), list("count" = hive.stored_larva)) + var/burst_larvas = GLOB.larva_burst_by_hive[hive] || 0 + SSinfluxdriver.enqueue_stats("burst_larva", list("hive" = hive.reporting_id), list("count" = burst_larvas)) + +/datum/controller/subsystem/influxstats/proc/run_round_statistics() + var/datum/entity/statistic/round/stats = SSticker?.mode?.round_stats + if(!stats) + return // Sadge + + SSinfluxdriver.enqueue_stats_crude("chestbursts", stats.total_larva_burst) + SSinfluxdriver.enqueue_stats_crude("hugged", stats.total_huggers_applied) + SSinfluxdriver.enqueue_stats_crude("friendlyfire", stats.total_friendly_fire_instances) + + var/list/participants = flatten_entity_list(stats.participants) + if(length(participants)) + SSinfluxdriver.enqueue_stats("participants", list(), participants) + + var/list/total_deaths = flatten_entity_list(stats.total_deaths) + if(length(total_deaths)) + SSinfluxdriver.enqueue_stats("deaths", list(), total_deaths) + + SSinfluxdriver.enqueue_stats("shots", list(), + list("fired" = stats.total_projectiles_fired, "hits" = stats.total_projectiles_hit, + "hits_human" = stats.total_projectiles_hit_human, "hits_xeno" = stats.total_projectiles_hit_xeno) + ) + +/datum/controller/subsystem/influxstats/proc/run_player_statistics() + var/staff_count = 0 + var/mentor_count = 0 + for(var/client/client in GLOB.admins) + if(CLIENT_IS_STAFF(client)) + staff_count++ + else if(CLIENT_HAS_RIGHTS(client, R_MENTOR)) + mentor_count++ + SSinfluxdriver.enqueue_stats("online", null, list("count" = length(GLOB.clients))) + + var/list/adm = get_admin_counts() + var/present_admins = length(adm["present"]) + var/afk_admins = length(adm["afk"]) + SSinfluxdriver.enqueue_stats("online_staff", null, list("total" = staff_count, "mentors" = mentor_count, "present" = present_admins, "afk" = afk_admins)) + + // Grab ahelp stats + SSinfluxdriver.enqueue_stats("tickets", null, list( + "open" = length(GLOB.ahelp_tickets.active_tickets), + "closed" = length(GLOB.ahelp_tickets.closed_tickets), + "resolved" = length(GLOB.ahelp_tickets.resolved_tickets), + )) + +/datum/controller/subsystem/influxstats/proc/run_job_statistics() + var/list/team_job_stats = list() + var/list/squad_job_stats = GLOB.ROLES_SQUAD_ALL.Copy() + for(var/squad in squad_job_stats) + squad_job_stats[squad] = list() + + for(var/client/client in GLOB.clients) + var/team + var/mob/mob = client.mob + if(!mob || mob.statistic_exempt) + continue + var/area/area = get_area(mob) + if(!area || area.statistic_exempt) + continue + var/job = mob.job + if(isobserver(mob) || mob.stat == DEAD) + job = JOB_OBSERVER + team = "observers" + else if(!job) + continue + else if(mob.faction == FACTION_MARINE || mob.faction == FACTION_SURVIVOR) + team = "humans" + var/mob/living/carbon/human/employed_human = mob + if(istype(employed_human)) + var/squad = employed_human.assigned_squad?.name + if(squad in squad_job_stats) + squad_job_stats[squad][job] = (squad_job_stats[squad][job] || 0) + 1 + continue // Defer to squad stats instead + // else: So you're in the USCM and have a job but aren't an human? Tell me more Dr Jones... + else if(ishuman(mob)) + team = "humans_others" + else if(isxeno(mob)) + var/mob/living/xeno_enabled_mob = mob + var/datum/hive_status/hive = GLOB.hive_datum[xeno_enabled_mob.hivenumber] + if(!hive) + team = "xenos_others" + else + team = "xenos_[hive.reporting_id]" + else + team = "others" + LAZYINITLIST(team_job_stats[team]) + if(!team_job_stats[team][job]) + team_job_stats[team][job] = 0 + team_job_stats[team][job] += 1 + + for(var/team in team_job_stats) + for(var/job in team_job_stats[team]) + SSinfluxdriver.enqueue_stats("job_stats", list("team" = team, "job" = job), list("count" = team_job_stats[team][job])) + + for(var/squad in squad_job_stats) + for(var/job in squad_job_stats[squad]) + SSinfluxdriver.enqueue_stats("job_stats", list("team" = "humans", "job" = job, "squad" = squad), list("count" = squad_job_stats[squad][job])) diff --git a/code/controllers/subsystem/init/earlyruntimes.dm b/code/controllers/subsystem/init/earlyruntimes.dm deleted file mode 100644 index 8e43b94a0735..000000000000 --- a/code/controllers/subsystem/init/earlyruntimes.dm +++ /dev/null @@ -1,14 +0,0 @@ -/// Just messages the unwary coder to tell them there are errors that likely escaped their debugguer. -SUBSYSTEM_DEF(earlyruntimes) - name = "Early Runtimes" - init_order = SS_INIT_EARLYRUNTIMES - flags = SS_NO_FIRE - -/datum/controller/subsystem/earlyruntimes/stat_entry(msg) - msg = " Early Runtimes: [init_runtimes_count || 0] | All runtimes: [total_runtimes || 0]" - return ..() - -/datum/controller/subsystem/earlyruntimes/Initialize() - if(init_runtimes_count) - return SS_INIT_FAILURE - return SS_INIT_SUCCESS diff --git a/code/controllers/subsystem/init/landmarks.dm b/code/controllers/subsystem/init/landmarks.dm index 59bba7c7922b..31b71c074a5d 100644 --- a/code/controllers/subsystem/init/landmarks.dm +++ b/code/controllers/subsystem/init/landmarks.dm @@ -1,4 +1,4 @@ -var/list/item_pool_landmarks = list() +GLOBAL_LIST_EMPTY(item_pool_landmarks) SUBSYSTEM_DEF(landmark_init) name = "Landmark Init" @@ -9,7 +9,7 @@ SUBSYSTEM_DEF(landmark_init) // List of all the datums we need to loop through var/list/datum/item_pool_holder/pools = list() - for (var/obj/effect/landmark/item_pool_spawner/L in item_pool_landmarks) + for (var/obj/effect/landmark/item_pool_spawner/L in GLOB.item_pool_landmarks) var/curr_pool_name = L.pool_name @@ -48,8 +48,8 @@ SUBSYSTEM_DEF(landmark_init) continue if (pool.quota > pool.turfs.len) - log_debug("Item pool [pool.pool_name] wants to spawn more items than it has landmarks for. Spawning [turfs.len] instances of [pool.type_to_spawn] instead. Code: ITEM_POOL_4") - message_admins("Item pool [pool.pool_name] wants to spawn more items than it has landmarks for. Spawning [turfs.len] instances of [pool.type_to_spawn] instead. Tell the devs. Code: ITEM_POOL_4") + log_debug("Item pool [pool.pool_name] wants to spawn more items than it has landmarks for. Spawning [pool.turfs.len] instances of [pool.type_to_spawn] instead. Code: ITEM_POOL_4") + message_admins("Item pool [pool.pool_name] wants to spawn more items than it has landmarks for. Spawning [pool.turfs.len] instances of [pool.type_to_spawn] instead. Tell the devs. Code: ITEM_POOL_4") pool.quota = pool.turfs.len // Quota times, pick a random turf, spawn an item there, then remove that turf from the list. diff --git a/code/controllers/subsystem/init/law.dm b/code/controllers/subsystem/init/law.dm index 52fbbbeadf5d..c7ade815972c 100644 --- a/code/controllers/subsystem/init/law.dm +++ b/code/controllers/subsystem/init/law.dm @@ -8,20 +8,24 @@ SUBSYSTEM_DEF(law_init) var/list/minor_law = list() var/list/major_law = list() var/list/capital_law = list() + var/list/precautionary_law = list() /datum/controller/subsystem/law_init/Initialize() - for(var/L in subtypesof(/datum/law/optional_law)) - optional_law += new L + for(var/law in subtypesof(/datum/law/optional_law)) + optional_law += new law - for(var/L in subtypesof(/datum/law/minor_law)) - minor_law += new L + for(var/law in subtypesof(/datum/law/minor_law)) + minor_law += new law - for(var/L in subtypesof(/datum/law/major_law)) - major_law += new L + for(var/law in subtypesof(/datum/law/major_law)) + major_law += new law - for(var/L in subtypesof(/datum/law/capital_law)) - capital_law += new L + for(var/law in subtypesof(/datum/law/capital_law)) + capital_law += new law - laws = optional_law + minor_law + major_law + capital_law + for(var/law in subtypesof(/datum/law/precautionary_charge)) + precautionary_law += new law + + laws = optional_law + minor_law + major_law + capital_law + precautionary_law return SS_INIT_SUCCESS diff --git a/code/controllers/subsystem/interior.dm b/code/controllers/subsystem/interior.dm index f81cc6c8d88c..8abc3179f191 100644 --- a/code/controllers/subsystem/interior.dm +++ b/code/controllers/subsystem/interior.dm @@ -19,7 +19,17 @@ SUBSYSTEM_DEF(interior) var/list/bottom_left = reserved_area.bottom_left_coords - template.load(locate(bottom_left[1] + (INTERIOR_BORDER_SIZE / 2), bottom_left[2] + (INTERIOR_BORDER_SIZE / 2), bottom_left[3]), centered = FALSE) + var/list/bounds = template.load(locate(bottom_left[1] + (INTERIOR_BORDER_SIZE / 2), bottom_left[2] + (INTERIOR_BORDER_SIZE / 2), bottom_left[3]), centered = FALSE) + + var/list/turfs = block( locate(bounds[MAP_MINX], bounds[MAP_MINY], bounds[MAP_MINZ]), + locate(bounds[MAP_MAXX], bounds[MAP_MAXY], bounds[MAP_MAXZ])) + + var/list/areas = list() + for(var/turf/current_turf as anything in turfs) + areas |= current_turf.loc + + for(var/area/current_area as anything in areas) + current_area.add_base_lighting() interiors += interior return reserved_area @@ -32,7 +42,7 @@ SUBSYSTEM_DEF(interior) continue if(x >= bounds[1].x && x <= bounds[2].x && y >= bounds[1].y && y <= bounds[2].y) return current_interior - return FALSE + return /// Checks if an atom is in an interior /datum/controller/subsystem/interior/proc/in_interior(loc) @@ -41,10 +51,16 @@ SUBSYSTEM_DEF(interior) if(!isturf(loc)) loc = get_turf(loc) - var/datum/turf_reservation/interior/reservation = SSmapping.used_turfs[loc] + var/datum/weakref/reservation_weakref = SSmapping.used_turfs[loc] + + if(!reservation_weakref) + return + + var/datum/turf_reservation/interior/reservation = reservation_weakref.resolve() if(!istype(reservation)) return FALSE + return TRUE #undef INTERIOR_BORDER_SIZE diff --git a/code/controllers/subsystem/item_cleanup.dm b/code/controllers/subsystem/item_cleanup.dm index 35d1fc2859e9..26958eb8742b 100644 --- a/code/controllers/subsystem/item_cleanup.dm +++ b/code/controllers/subsystem/item_cleanup.dm @@ -1,4 +1,4 @@ -var/global/list/item_cleanup_list = list() +GLOBAL_LIST_EMPTY(item_cleanup_list) SUBSYSTEM_DEF(item_cleanup) name = "Item Cleanup" @@ -34,9 +34,9 @@ SUBSYSTEM_DEF(item_cleanup) break //We transfer items from the global garbage list onto the next iteration list - while(!isnull(item_cleanup_list) && item_cleanup_list.len > 0) - addToListNoDupe(items_to_clean_up, item_cleanup_list[item_cleanup_list.len]) - item_cleanup_list -= item_cleanup_list[item_cleanup_list.len] + while(!isnull(GLOB.item_cleanup_list) && GLOB.item_cleanup_list.len > 0) + addToListNoDupe(items_to_clean_up, GLOB.item_cleanup_list[GLOB.item_cleanup_list.len]) + GLOB.item_cleanup_list -= GLOB.item_cleanup_list[GLOB.item_cleanup_list.len] log_debug("item_cleanup deleted [deleted] garbage out of total [total_items]") @@ -57,9 +57,9 @@ SUBSYSTEM_DEF(item_cleanup) qdel(o) /proc/add_to_garbage(atom/a) - addToListNoDupe(item_cleanup_list, a) + addToListNoDupe(GLOB.item_cleanup_list, a) /proc/remove_from_garbage(atom/a) - item_cleanup_list -= a + GLOB.item_cleanup_list -= a if(SSitem_cleanup) SSitem_cleanup.items_to_clean_up -= a diff --git a/code/controllers/subsystem/lighting.dm b/code/controllers/subsystem/lighting.dm index 26ee4c9a648e..3c3d14468bc2 100644 --- a/code/controllers/subsystem/lighting.dm +++ b/code/controllers/subsystem/lighting.dm @@ -1,68 +1,124 @@ SUBSYSTEM_DEF(lighting) - name = "Lighting" + name = "Lighting" + wait = 2 init_order = SS_INIT_LIGHTING - priority = SS_PRIORITY_LIGHTING - wait = 0.4 SECONDS - runlevels = RUNLEVELS_DEFAULT|RUNLEVEL_LOBBY - var/list/datum/light_source/lights_current = list() - var/list/datum/light_source/lights = list() + //debug var for tracking updates before init is complete + var/duplicate_shadow_updates_in_init = 0 + ///Total times shadows were updated, debug + var/total_shadow_calculations = 0 - var/list/turf/changed_turfs_current = list() - var/list/turf/changed_turfs = list() + ///Whether the SS has begun setting up yet + var/started = FALSE + var/static/list/static_sources_queue = list() //! List of static lighting sources queued for update. + var/static/list/corners_queue = list() //! List of lighting corners queued for update. + var/static/list/objects_queue = list() //! List of lighting objects queued for update. -/datum/controller/subsystem/lighting/stat_entry(msg) - msg = "L:[lights.len]; T:[changed_turfs.len]" - return ..() + var/static/list/mask_queue = list() //! List of hybrid lighting sources queued for update. /datum/controller/subsystem/lighting/Initialize(timeofday) - for(var/thing in lights) - var/datum/light_source/L = thing - if(L) - L.check() - lights.Cut() + started = TRUE + if(!initialized) + //Handle static lightnig + create_all_lighting_objects() + fire(FALSE, TRUE) + return SS_INIT_SUCCESS - var/z_start = 1 - var/z_finish = world.maxz +/datum/controller/subsystem/lighting/stat_entry() + . = ..("ShCalcs:[total_shadow_calculations]|SourcQ:[static_sources_queue.len]|CcornQ:[corners_queue.len]|ObjQ:[objects_queue.len]|HybrQ:[mask_queue.len]") - var/list/init_turfs = block(locate(1,1,z_start),locate(world.maxx,world.maxy,z_finish)) +/datum/controller/subsystem/lighting/fire(resumed, init_tick_checks) + MC_SPLIT_TICK_INIT(3) + if(!init_tick_checks) + MC_SPLIT_TICK + var/updators_num = 0 + while(updators_num < length(static_sources_queue)) + updators_num += 1 - for(var/turf/thing in init_turfs) - if(istype(thing)) - thing.shift_to_subarea() + var/datum/static_light_source/L = static_sources_queue[updators_num] + L.update_corners() - return SS_INIT_SUCCESS + if(!QDELETED(L)) + L.needs_update = LIGHTING_NO_UPDATE + else + updators_num -= 1 + if(init_tick_checks) + if(!TICK_CHECK) + continue + static_sources_queue.Cut(1, updators_num + 1) + updators_num = 0 + stoplag() + else if (MC_TICK_CHECK) + break + if(updators_num) + static_sources_queue.Cut(1, updators_num + 1) + updators_num = 0 + if(!init_tick_checks) + MC_SPLIT_TICK -/datum/controller/subsystem/lighting/fire(resumed = FALSE) - if(!resumed) - lights_current = lights - lights = list() - changed_turfs_current = changed_turfs - changed_turfs = list() + while(updators_num < length(corners_queue)) + updators_num += 1 + var/datum/static_lighting_corner/C = corners_queue[updators_num] + C.needs_update = FALSE //update_objects() can call qdel if the corner is storing no data + C.update_objects() - while(lights_current.len) - var/datum/light_source/L = lights_current[lights_current.len] - lights_current.len-- - if(!L) - continue - if(!L.owner || L.changed) - L.check() - if(MC_TICK_CHECK) - return - - while(changed_turfs_current.len) - var/turf/T = changed_turfs_current[changed_turfs_current.len] - changed_turfs_current.len-- - if(!T) + if(init_tick_checks) + if(!TICK_CHECK) + continue + corners_queue.Cut(1, updators_num + 1) + updators_num = 0 + stoplag() + else if (MC_TICK_CHECK) + break + if(updators_num) + corners_queue.Cut(1, updators_num + 1) + updators_num = 0 + if(!init_tick_checks) + MC_SPLIT_TICK + + while(updators_num < length(objects_queue)) + updators_num += 1 + + var/datum/static_lighting_object/O = objects_queue[updators_num] + if (QDELETED(O)) continue - if(T.lighting_changed) - if(T.lighting_lumcount != T.cached_lumcount) - T.cached_lumcount = T.lighting_lumcount - T.shift_to_subarea() - T.lighting_changed = FALSE - if (MC_TICK_CHECK) - return + O.update() + O.needs_update = FALSE + + if(init_tick_checks) + if(!TICK_CHECK) + continue + objects_queue.Cut(1, updators_num + 1) + updators_num = 0 + else if (MC_TICK_CHECK) + break + if(updators_num) + objects_queue.Cut(1, updators_num + 1) + updators_num = 0 + if(!init_tick_checks) + MC_SPLIT_TICK + + while(updators_num > length(mask_queue)) + updators_num += 1 + + var/atom/movable/lighting_mask/mask_to_update = mask_queue[updators_num] + mask_to_update.calculate_lighting_shadows() + + if(init_tick_checks) + if(!TICK_CHECK) + continue + mask_queue.Cut(1, updators_num + 1) + updators_num = 0 + stoplag() + else if (MC_TICK_CHECK) + break + if(updators_num) + mask_queue.Cut(1, updators_num + 1) + +/datum/controller/subsystem/lighting/Recover() + initialized = SSlighting.initialized + return ..() diff --git a/code/controllers/subsystem/machinery.dm b/code/controllers/subsystem/machinery.dm index 7f86689874ff..6a0f938475a1 100644 --- a/code/controllers/subsystem/machinery.dm +++ b/code/controllers/subsystem/machinery.dm @@ -1,8 +1,8 @@ -var/list/machines = list() -var/list/processing_machines = list() +GLOBAL_LIST_EMPTY(machines) +GLOBAL_LIST_EMPTY(processing_machines) -var/list/datum/powernet/powernets = list() //Holds all powernet datums in use or pooled -var/list/datum/powernet/powernets_by_name = list() //Holds all powernet datums in use or pooled +GLOBAL_LIST_EMPTY(powernets) //Holds all powernet datums in use or pooled +GLOBAL_LIST_EMPTY(powernets_by_name) //Holds all powernet datums in use or pooled SUBSYSTEM_DEF(machinery) @@ -19,12 +19,12 @@ SUBSYSTEM_DEF(machinery) return SS_INIT_SUCCESS /datum/controller/subsystem/machinery/stat_entry(msg) - msg = "M:[global.processing_machines.len]" + msg = "M:[GLOB.processing_machines.len]" return ..() /datum/controller/subsystem/machinery/fire(resumed = FALSE) if (!resumed) - currentrunmachines = processing_machines.Copy() + currentrunmachines = GLOB.processing_machines.Copy() while (currentrunmachines.len) var/obj/structure/machinery/M = currentrunmachines[currentrunmachines.len] diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index ed6e3cda15f5..0f4a63ff65e8 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -6,9 +6,13 @@ SUBSYSTEM_DEF(mapping) var/list/datum/map_config/configs var/list/datum/map_config/next_map_configs + ///Name of all maps var/list/map_templates = list() - + ///Name of all shuttles var/list/shuttle_templates = list() + var/list/all_shuttle_templates = list() + ///map_id of all tents + var/list/tent_type_templates = list() var/list/areas_in_z = list() @@ -29,9 +33,7 @@ SUBSYSTEM_DEF(mapping) /datum/controller/subsystem/mapping/proc/HACK_LoadMapConfig() if(!configs) configs = load_map_configs(ALL_MAPTYPES, error_if_missing = FALSE) - for(var/i in GLOB.clients) - var/client/C = i - winset(C, null, "mainwindow.title='[CONFIG_GET(string/title)] - [SSmapping.configs[SHIP_MAP].map_name]'") + world.name = "[CONFIG_GET(string/title)] - [SSmapping.configs[SHIP_MAP].map_name]" /datum/controller/subsystem/mapping/Initialize(timeofday) HACK_LoadMapConfig() @@ -59,6 +61,11 @@ SUBSYSTEM_DEF(mapping) if(MC.perf_mode) GLOB.perf_flags |= MC.perf_mode + if(configs[GROUND_MAP]) + send2chat(new /datum/tgs_message_content("<@&[CONFIG_GET(string/new_round_alert_role_id)]> Round restarted! Map is [configs[GROUND_MAP].map_name]"), CONFIG_GET(string/new_round_alert_channel)) + else + send2chat(new /datum/tgs_message_content("<@&[CONFIG_GET(string/new_round_alert_role_id)]> Round started!"), CONFIG_GET(string/new_round_alert_channel)) + return SS_INIT_SUCCESS /datum/controller/subsystem/mapping/proc/wipe_reservations(wipe_safety_delay = 100) @@ -123,10 +130,14 @@ SUBSYSTEM_DEF(mapping) ++i // load the maps - for (var/P in parsed_maps) - var/datum/parsed_map/pm = P - if (!pm.load(1, 1, start_z + parsed_maps[P], no_changeturf = TRUE)) + for (var/datum/parsed_map/pm as anything in parsed_maps) + var/cur_z = start_z + parsed_maps[pm] + if (!pm.load(1, 1, cur_z, no_changeturf = TRUE)) errorList |= pm.original_path + if(istype(z_list[cur_z], /datum/space_level)) + var/datum/space_level/cur_level = z_list[cur_z] + cur_level.x_bounds = pm.bounds[MAP_MAXX] + cur_level.y_bounds = pm.bounds[MAP_MAXY] if(!silent) INIT_ANNOUNCE("Loaded [name] in [(REALTIMEOFDAY - start_time)/10]s!") return parsed_maps @@ -198,6 +209,7 @@ SUBSYSTEM_DEF(mapping) map_templates[T.name] = T preloadShuttleTemplates() + preload_tent_templates() /proc/generateMapList(filename) . = list() @@ -236,8 +248,14 @@ SUBSYSTEM_DEF(mapping) var/datum/map_template/shuttle/S = new shuttle_type() shuttle_templates[S.shuttle_id] = S + all_shuttle_templates[item] = S map_templates[S.shuttle_id] = S +/datum/controller/subsystem/mapping/proc/preload_tent_templates() + for(var/template in subtypesof(/datum/map_template/tent)) + var/datum/map_template/tent/new_tent = new template() + tent_type_templates[new_tent.map_id] = new_tent + /datum/controller/subsystem/mapping/proc/RequestBlockReservation(width, height, z, type = /datum/turf_reservation, turf_type_override) UNTIL(initialized && !clearing_reserved_turfs) var/datum/turf_reservation/reserve = new type diff --git a/code/controllers/subsystem/midi.dm b/code/controllers/subsystem/midi.dm deleted file mode 100644 index 158d67cf25ac..000000000000 --- a/code/controllers/subsystem/midi.dm +++ /dev/null @@ -1,45 +0,0 @@ -/datum/midi_record - var/target - var/midi - -SUBSYSTEM_DEF(midi) - name = "Midi" - wait = 2 SECONDS - flags = SS_NO_INIT|SS_BACKGROUND - runlevels = RUNLEVELS_DEFAULT|RUNLEVEL_LOBBY - priority = SS_PRIORITY_MIDI - - var/list/datum/midi_record/prepped_midis = list() - - var/list/datum/midi_record/currentrun = list() - - -/datum/controller/subsystem/midi/stat_entry(msg) - msg = "MR:[prepped_midis.len]" - return ..() - - -/datum/controller/subsystem/midi/fire(resumed = FALSE) - if (!resumed) - currentrun = prepped_midis - prepped_midis = list() - - while (currentrun.len) - var/datum/midi_record/E = currentrun[currentrun.len] - currentrun.len-- - - if (!E) - continue - - E.target << E.midi - - if (MC_TICK_CHECK) - return - -/datum/controller/subsystem/midi/proc/queue(target, midi) - if(!prepped_midis) - prepped_midis = list() - var/datum/midi_record/MR = new() - MR.target = target - MR.midi = midi - prepped_midis.Add(MR) diff --git a/code/controllers/subsystem/minimap.dm b/code/controllers/subsystem/minimap.dm index e365a9b60781..410ded82f7b3 100644 --- a/code/controllers/subsystem/minimap.dm +++ b/code/controllers/subsystem/minimap.dm @@ -1,3 +1,6 @@ +#define CANVAS_COOLDOWN_TIME 4 MINUTES +#define FLATTEN_MAP_COOLDOWN_TIME 3 MINUTES + /** * # Minimaps subsystem * @@ -85,8 +88,8 @@ SUBSYSTEM_DEF(minimaps) else if(yval < smallest_y) smallest_y = yval - minimaps_by_z["[level]"].x_offset = FLOOR((SCREEN_PIXEL_SIZE-largest_x-smallest_x) / MINIMAP_SCALE, 1) - minimaps_by_z["[level]"].y_offset = FLOOR((SCREEN_PIXEL_SIZE-largest_y-smallest_y) / MINIMAP_SCALE, 1) + minimaps_by_z["[level]"].x_offset = Floor((SCREEN_PIXEL_SIZE-largest_x-smallest_x) / MINIMAP_SCALE) + minimaps_by_z["[level]"].y_offset = Floor((SCREEN_PIXEL_SIZE-largest_y-smallest_y) / MINIMAP_SCALE) icon_gen.Shift(EAST, minimaps_by_z["[level]"].x_offset) icon_gen.Shift(NORTH, minimaps_by_z["[level]"].y_offset) @@ -179,7 +182,7 @@ SUBSYSTEM_DEF(minimaps) * the raw lists are to speed up the Fire() of the subsystem so we dont have to filter through * WARNING! * There is a byond bug: http://www.byond.com/forum/post/2661309 - * That that forces us to use a seperate list ref when accessing the lists of this datum + * That that forces us to use a separate list ref when accessing the lists of this datum * Yea it hurts me too */ /datum/hud_displays @@ -256,14 +259,16 @@ SUBSYSTEM_DEF(minimaps) removal_cbs[target] = CALLBACK(src, PROC_REF(removeimage), blip, target) RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(remove_marker)) - - /** * removes an image from raw tracked lists, invoked by callback */ /datum/controller/subsystem/minimaps/proc/removeimage(image/blip, atom/target) + var/turf/turf_gotten = get_turf(target) + if(!turf_gotten) + return + var/z_level = turf_gotten.z for(var/flag in GLOB.all_minimap_flags) - minimaps_by_z["[target.z]"].images_raw["[flag]"] -= blip + minimaps_by_z["[z_level]"].images_raw["[flag]"] -= blip blip.UnregisterSignal(target, COMSIG_MOVABLE_MOVED) removal_cbs -= target @@ -318,7 +323,7 @@ SUBSYSTEM_DEF(minimaps) minimaps_by_z["[z_level]"].images_assoc["[flag]"] -= source /** - * Fetches a /atom/movable/screen/minimap instance or creates on if none exists + * Fetches a /atom/movable/screen/minimap instance or creates one if none exists * Note this does not destroy them when the map is unused, might be a potential thing to do? * Arguments: * * zlevel: zlevel to fetch map for @@ -334,6 +339,172 @@ SUBSYSTEM_DEF(minimaps) hashed_minimaps[hash] = map return map +/** + * Fetches the datum containing an announced flattend map png reference. + * + * Arguments: + * * faction: FACTION_MARINE or XENO_HIVE_NORMAL + */ +/proc/get_tacmap_data_png(faction) + var/list/map_list + + if(faction == FACTION_MARINE) + map_list = GLOB.uscm_flat_tacmap_data + else if(faction == XENO_HIVE_NORMAL) + map_list = GLOB.xeno_flat_tacmap_data + else + return null + + var/map_length = length(map_list) + + if(map_length == 0) + return null + + return map_list[map_length] + +/** + * Fetches the datum containing the latest unannounced flattend map png reference. + * + * Arguments: + * * faction: FACTION_MARINE or XENO_HIVE_NORMAL + */ +/proc/get_unannounced_tacmap_data_png(faction) + if(faction == FACTION_MARINE) + return GLOB.uscm_unannounced_map + else if(faction == XENO_HIVE_NORMAL) + return GLOB.xeno_unannounced_map + + return null + +/** + * Fetches the last set of svg coordinates for the tacmap drawing. + * + * Arguments: + * * faction: which faction get the map for: FACTION_MARINE or XENO_HIVE_NORMAL + */ +/proc/get_tacmap_data_svg(faction) + var/list/map_list + + if(faction == FACTION_MARINE) + map_list = GLOB.uscm_svg_tacmap_data + else if(faction == XENO_HIVE_NORMAL) + map_list = GLOB.xeno_svg_tacmap_data + else + return null + + var/map_length = length(map_list) + + if(map_length == 0) + return null + + return map_list[map_length] + +/** + * Re-sends relevant flattened tacmaps to a single client. + * + * Arguments: + * * user: The mob that is either an observer, marine, or xeno + */ +/proc/resend_current_map_png(mob/user) + if(!user.client) + return + + var/is_observer = user.faction == FACTION_NEUTRAL && isobserver(user) + if(is_observer || user.faction == FACTION_MARINE) + // Send marine maps + var/datum/flattened_tacmap/latest = get_tacmap_data_png(FACTION_MARINE) + if(latest) + SSassets.transport.send_assets(user.client, latest.asset_key) + var/datum/flattened_tacmap/unannounced = get_unannounced_tacmap_data_png(FACTION_MARINE) + if(unannounced && (!latest || latest.asset_key != unannounced.asset_key)) + SSassets.transport.send_assets(user.client, unannounced.asset_key) + + var/mob/living/carbon/xenomorph/xeno = user + if(is_observer || istype(xeno) && xeno.hivenumber == XENO_HIVE_NORMAL) + // Send xeno maps + var/datum/flattened_tacmap/latest = get_tacmap_data_png(XENO_HIVE_NORMAL) + if(latest) + SSassets.transport.send_assets(user.client, latest.asset_key) + var/datum/flattened_tacmap/unannounced = get_unannounced_tacmap_data_png(XENO_HIVE_NORMAL) + if(unannounced && (!latest || latest.asset_key != unannounced.asset_key)) + SSassets.transport.send_assets(user.client, unannounced.asset_key) + +/** + * Flattens the current map and then distributes it for the specified faction as an unannounced map. + * + * Arguments: + * * faction: Which faction to distribute the map to: FACTION_MARINE or XENO_HIVE_NORMAL + * Return: + * * Returns a boolean value, TRUE if the operation was successful, FALSE if it was not (on cooldown generally). + */ +/datum/tacmap/drawing/proc/distribute_current_map_png(faction) + if(faction == FACTION_MARINE) + if(!COOLDOWN_FINISHED(GLOB, uscm_flatten_map_icon_cooldown)) + return FALSE + COOLDOWN_START(GLOB, uscm_flatten_map_icon_cooldown, FLATTEN_MAP_COOLDOWN_TIME) + else if(faction == XENO_HIVE_NORMAL) + if(!COOLDOWN_FINISHED(GLOB, xeno_flatten_map_icon_cooldown)) + return FALSE + COOLDOWN_START(GLOB, xeno_flatten_map_icon_cooldown, FLATTEN_MAP_COOLDOWN_TIME) + else + return FALSE + + var/icon/flat_map = getFlatIcon(map_holder.map, appearance_flags = TRUE) + if(!flat_map) + to_chat(usr, SPAN_WARNING("A critical error has occurred! Contact a coder.")) // tf2heavy: "Oh, this is bad!" + return FALSE + + // Send to only relevant clients + var/list/faction_clients = list() + for(var/client/client as anything in GLOB.clients) + if(!client || !client.mob) + continue + var/mob/client_mob = client.mob + if(client_mob.faction == faction) + faction_clients += client + else if(client_mob.faction == FACTION_NEUTRAL && isobserver(client_mob)) + faction_clients += client + else if(isxeno(client_mob)) + var/mob/living/carbon/xenomorph/xeno = client_mob + if(xeno.hivenumber == faction) + faction_clients += client + + // This may be unnecessary to do this way if the asset url is always the same as the lookup key + var/flat_tacmap_key = icon2html(flat_map, faction_clients, keyonly = TRUE) + if(!flat_tacmap_key) + to_chat(usr, SPAN_WARNING("A critical error has occurred! Contact a coder.")) + return FALSE + var/flat_tacmap_png = SSassets.transport.get_asset_url(flat_tacmap_key) + var/datum/flattened_tacmap/new_flat = new(flat_tacmap_png, flat_tacmap_key) + + if(faction == FACTION_MARINE) + GLOB.uscm_unannounced_map = new_flat + else //if(faction == XENO_HIVE_NORMAL) + GLOB.xeno_unannounced_map = new_flat + + return TRUE + +/** + * Globally stores svg coords for a given faction. + * + * Arguments: + * * faction: which faction to save the data for: FACTION_MARINE or XENO_HIVE_NORMAL + * * svg_coords: an array of coordinates corresponding to an svg. + * * ckey: the ckey of the user who submitted this + */ +/datum/tacmap/drawing/proc/store_current_svg_coords(faction, svg_coords, ckey) + var/datum/svg_overlay/svg_store_overlay = new(svg_coords, ckey) + + if(faction == FACTION_MARINE) + GLOB.uscm_svg_tacmap_data += svg_store_overlay + else if(faction == XENO_HIVE_NORMAL) + GLOB.xeno_svg_tacmap_data += svg_store_overlay + else + qdel(svg_store_overlay) + debug_log("SVG coordinates for [faction] are not implemented!") + +#define can_draw(faction, user) ((faction == FACTION_MARINE && skillcheck(user, SKILL_LEADERSHIP, SKILL_LEAD_EXPERT)) || (faction == XENO_HIVE_NORMAL && isqueen(user))) + /datum/controller/subsystem/minimaps/proc/fetch_tacmap_datum(zlevel, flags) var/hash = "[zlevel]-[flags]" if(hashed_tacmaps[hash]) @@ -386,26 +557,32 @@ SUBSYSTEM_DEF(minimaps) if(!map) return if(minimap_displayed) - owner.client.screen -= map + owner.client.remove_from_screen(map) else - owner.client.screen += map + owner.client.add_to_screen(map) minimap_displayed = !minimap_displayed -/datum/action/minimap/give_to(mob/M) +/datum/action/minimap/give_to(mob/target) . = ..() if(default_overwatch_level) map = SSminimaps.fetch_minimap_object(default_overwatch_level, minimap_flags) else - RegisterSignal(M, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(on_owner_z_change)) - if(!SSminimaps.minimaps_by_z["[M.z]"] || !SSminimaps.minimaps_by_z["[M.z]"].hud_image) + RegisterSignal(target, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(on_owner_z_change)) + + var/turf/turf_gotten = get_turf(target) + if(!turf_gotten) + return + var/z_level = turf_gotten.z + + if(!SSminimaps.minimaps_by_z["[z_level]"] || !SSminimaps.minimaps_by_z["[z_level]"].hud_image) return - map = SSminimaps.fetch_minimap_object(M.z, minimap_flags) + map = SSminimaps.fetch_minimap_object(z_level, minimap_flags) -/datum/action/minimap/remove_from(mob/M) +/datum/action/minimap/remove_from(mob/target) . = ..() if(minimap_displayed) - owner?.client?.screen -= map + owner?.client?.remove_from_screen(map) minimap_displayed = FALSE /** @@ -414,7 +591,7 @@ SUBSYSTEM_DEF(minimaps) /datum/action/minimap/proc/on_owner_z_change(atom/movable/source, oldz, newz) SIGNAL_HANDLER if(minimap_displayed) - owner.client.screen -= map + owner.client.remove_from_screen(map) minimap_displayed = FALSE map = null if(!SSminimaps.minimaps_by_z["[newz]"] || !SSminimaps.minimaps_by_z["[newz]"].hud_image) @@ -432,7 +609,7 @@ SUBSYSTEM_DEF(minimaps) marker_flags = MINIMAP_FLAG_USCM /datum/action/minimap/observer - minimap_flags = MINIMAP_FLAG_XENO|MINIMAP_FLAG_USCM|MINIMAP_FLAG_UPP|MINIMAP_FLAG_CLF|MINIMAP_FLAG_UPP + minimap_flags = MINIMAP_FLAG_ALL marker_flags = NONE hidden = TRUE @@ -442,17 +619,58 @@ SUBSYSTEM_DEF(minimaps) var/targeted_ztrait = ZTRAIT_GROUND var/atom/owner + /// tacmap holder for holding the minimap var/datum/tacmap_holder/map_holder +/datum/tacmap/drawing + /// A url that will point to the wiki map for the current map as a fall back image + var/static/wiki_map_fallback + + /// color selection for the tactical map canvas, defaults to black. + var/toolbar_color_selection = "black" + var/toolbar_updated_selection = "black" + + /// boolean value to keep track if the canvas has been updated or not, the value is used in tgui state. + var/updated_canvas = FALSE + /// current flattend map + var/datum/flattened_tacmap/new_current_map + /// previous flattened map + var/datum/flattened_tacmap/old_map + /// current svg + var/datum/svg_overlay/current_svg + + var/action_queue_change = 0 + + /// The last time the map has been flattened - used as a key to trick react into updating the canvas + var/last_update_time = 0 + /// A temporary lock out time before we can open the new canvas tab to allow the tacmap time to fire + var/tacmap_ready_time = 0 + /datum/tacmap/New(atom/source, minimap_type) allowed_flags = minimap_type owner = source +/datum/tacmap/drawing/status_tab_view/New() + var/datum/tacmap/drawing/status_tab_view/uscm_tacmap + allowed_flags = MINIMAP_FLAG_USCM + owner = uscm_tacmap + +/datum/tacmap/drawing/status_tab_view/xeno/New() + var/datum/tacmap/drawing/status_tab_view/xeno/xeno_tacmap + allowed_flags = MINIMAP_FLAG_XENO + owner = xeno_tacmap + /datum/tacmap/Destroy() map_holder = null owner = null return ..() +/datum/tacmap/drawing/Destroy() + new_current_map = null + old_map = null + current_svg = null + return ..() + /datum/tacmap/tgui_interact(mob/user, datum/tgui/ui) if(!map_holder) var/level = SSmapping.levels_by_trait(targeted_ztrait) @@ -465,12 +683,245 @@ SUBSYSTEM_DEF(minimaps) user.client.register_map_obj(map_holder.map) ui = new(user, src, "TacticalMap") ui.open() + RegisterSignal(user.mind, COMSIG_MIND_TRANSFERRED, PROC_REF(on_mind_transferred)) + +/datum/tacmap/drawing/tgui_interact(mob/user, datum/tgui/ui) + var/mob/living/carbon/xenomorph/xeno = user + var/is_xeno = istype(xeno) + var/faction = is_xeno ? xeno.hivenumber : user.faction + if(faction == FACTION_NEUTRAL && isobserver(user)) + faction = allowed_flags == MINIMAP_FLAG_XENO ? XENO_HIVE_NORMAL : FACTION_MARINE + + if(is_xeno && xeno.hive.see_humans_on_tacmap && targeted_ztrait != ZTRAIT_MARINE_MAIN_SHIP) + allowed_flags |= MINIMAP_FLAG_USCM|MINIMAP_FLAG_PMC|MINIMAP_FLAG_UPP|MINIMAP_FLAG_CLF + targeted_ztrait = ZTRAIT_MARINE_MAIN_SHIP + map_holder = null + + new_current_map = get_unannounced_tacmap_data_png(faction) + old_map = get_tacmap_data_png(faction) + current_svg = get_tacmap_data_svg(faction) + + var/use_live_map = faction == FACTION_MARINE && skillcheck(user, SKILL_LEADERSHIP, SKILL_LEAD_EXPERT) || is_xeno + + if(use_live_map && !map_holder) + var/level = SSmapping.levels_by_trait(targeted_ztrait) + if(!level[1]) + return + map_holder = SSminimaps.fetch_tacmap_datum(level[1], allowed_flags) + + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + if(!wiki_map_fallback) + var/wiki_url = CONFIG_GET(string/wikiurl) + var/obj/item/map/current_map/new_map = new + if(wiki_url && new_map.html_link) + wiki_map_fallback ="[wiki_url]/[new_map.html_link]" + else + debug_log("Failed to determine fallback wiki map! Attempted '[wiki_url]/[new_map.html_link]'") + qdel(new_map) + + // Ensure we actually have the map image sent + resend_current_map_png(user) + + if(use_live_map) + tacmap_ready_time = SSminimaps.next_fire + 2 SECONDS + addtimer(CALLBACK(src, PROC_REF(on_tacmap_fire), faction), SSminimaps.next_fire - world.time + 1 SECONDS) + user.client.register_map_obj(map_holder.map) + RegisterSignal(user.mind, COMSIG_MIND_TRANSFERRED, PROC_REF(on_mind_transferred)) + + ui = new(user, src, "TacticalMap") + ui.open() + +/datum/tacmap/drawing/ui_data(mob/user) + var/list/data = list() + + data["newCanvasFlatImage"] = new_current_map?.flat_tacmap + data["oldCanvasFlatImage"] = old_map?.flat_tacmap + data["svgData"] = current_svg?.svg_data + + data["actionQueueChange"] = action_queue_change + + data["toolbarColorSelection"] = toolbar_color_selection + data["toolbarUpdatedSelection"] = toolbar_updated_selection + + if(isxeno(user)) + data["canvasCooldown"] = max(GLOB.xeno_canvas_cooldown - world.time, 0) + else + data["canvasCooldown"] = max(GLOB.uscm_canvas_cooldown - world.time, 0) + + data["updatedCanvas"] = updated_canvas + + data["lastUpdateTime"] = last_update_time + data["tacmapReady"] = world.time > tacmap_ready_time + + return data /datum/tacmap/ui_static_data(mob/user) var/list/data = list() - data["mapRef"] = map_holder.map_ref + + data["mapRef"] = map_holder?.map_ref + data["canDraw"] = FALSE + data["canViewTacmap"] = TRUE + data["canViewCanvas"] = FALSE + data["isXeno"] = FALSE + + return data + +/datum/tacmap/drawing/ui_static_data(mob/user) + var/list/data = list() + + data["canvasCooldownDuration"] = CANVAS_COOLDOWN_TIME + data["mapRef"] = map_holder?.map_ref + data["canDraw"] = FALSE + data["mapFallback"] = wiki_map_fallback + + var/mob/living/carbon/xenomorph/xeno = user + var/is_xeno = istype(xeno) + var/faction = is_xeno ? xeno.hivenumber : user.faction + + data["isXeno"] = is_xeno + data["canViewTacmap"] = is_xeno + data["canViewCanvas"] = faction == FACTION_MARINE || faction == XENO_HIVE_NORMAL + + if(can_draw(faction, user)) + data["canDraw"] = TRUE + data["canViewTacmap"] = TRUE + + return data + +/datum/tacmap/drawing/status_tab_view/ui_static_data(mob/user) + var/list/data = list() + + data["canvasCooldownDuration"] = CANVAS_COOLDOWN_TIME + data["mapFallback"] = wiki_map_fallback + data["canDraw"] = FALSE + data["canViewTacmap"] = FALSE + data["canViewCanvas"] = TRUE + data["isXeno"] = FALSE + return data +/datum/tacmap/drawing/status_tab_view/xeno/ui_static_data(mob/user) + var/list/data = list() + + data["canvasCooldownDuration"] = CANVAS_COOLDOWN_TIME + data["mapFallback"] = wiki_map_fallback + data["canDraw"] = FALSE + data["canViewTacmap"] = FALSE + data["canViewCanvas"] = TRUE + data["isXeno"] = TRUE + + return data + +/datum/tacmap/ui_close(mob/user) + UnregisterSignal(user.mind, COMSIG_MIND_TRANSFERRED) + +/datum/tacmap/drawing/ui_close(mob/user) + . = ..() + action_queue_change = 0 + updated_canvas = FALSE + toolbar_color_selection = "black" + toolbar_updated_selection = "black" + +/datum/tacmap/drawing/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + + var/mob/user = ui.user + var/mob/living/carbon/xenomorph/xeno = user + var/faction = istype(xeno) ? xeno.hivenumber : user.faction + var/is_observer = isobserver(user) + if(faction == FACTION_NEUTRAL && is_observer) + faction = allowed_flags == MINIMAP_FLAG_XENO ? XENO_HIVE_NORMAL : FACTION_MARINE + var/drawing_allowed = !is_observer && can_draw(faction, user) + + switch (action) + if ("menuSelect") + if(params["selection"] != "Canvas") + if(updated_canvas) + updated_canvas = FALSE + toolbar_updated_selection = toolbar_color_selection // doing this if it == canvas can cause a latency issue with the stroke. + else + if(!drawing_allowed) + msg_admin_niche("[key_name(user)] made an unauthorized attempt to 'menuSelect' the 'new canvas' panel of the [faction] tacmap!") + return FALSE + distribute_current_map_png(faction) + last_update_time = world.time + // An attempt to get the image to load on first try in the interface, but doesn't seem always reliable + + new_current_map = get_unannounced_tacmap_data_png(faction) + old_map = get_tacmap_data_png(faction) + current_svg = get_tacmap_data_svg(faction) + + if("updateCanvas") + toolbar_updated_selection = "export" + updated_canvas = TRUE + action_queue_change += 1 + + if("clearCanvas") + toolbar_updated_selection = "clear" + updated_canvas = FALSE + action_queue_change += 1 + + if("undoChange") + toolbar_updated_selection = "undo" + updated_canvas = FALSE + action_queue_change += 1 + + if("selectColor") + var/newColor = params["color"] + if(newColor) + toolbar_color_selection = newColor + toolbar_updated_selection = newColor + action_queue_change += 1 + + if("onDraw") + updated_canvas = FALSE + + if("selectAnnouncement") + if(!drawing_allowed) + msg_admin_niche("[key_name(user)] made an unauthorized attempt to 'selectAnnouncement' the [faction] tacmap!") + return FALSE + + if(!istype(params["image"], /list)) // potentially very serious? + return FALSE + + var/cooldown_satisfied = FALSE + if(faction == FACTION_MARINE) + cooldown_satisfied = COOLDOWN_FINISHED(GLOB, uscm_canvas_cooldown) + else if(faction == XENO_HIVE_NORMAL) + cooldown_satisfied = COOLDOWN_FINISHED(GLOB, xeno_canvas_cooldown) + if(!cooldown_satisfied) + msg_admin_niche("[key_name(user)] attempted to 'selectAnnouncement' the [faction] tacmap while it is still on cooldown!") + return FALSE + + if(faction == FACTION_MARINE) + GLOB.uscm_flat_tacmap_data += new_current_map + COOLDOWN_START(GLOB, uscm_canvas_cooldown, CANVAS_COOLDOWN_TIME) + for(var/datum/squad/current_squad in GLOB.RoleAuthority.squads) + current_squad.send_maptext("Tactical map update in progress...", "Tactical Map:") + var/mob/living/carbon/human/human_leader = user + human_leader.visible_message(SPAN_BOLDNOTICE("Tactical map update in progress...")) + playsound_client(human_leader.client, "sound/effects/data-transmission.ogg") + notify_ghosts(header = "Tactical Map", message = "The USCM tactical map has been updated.", ghost_sound = "sound/effects/data-transmission.ogg", notify_volume = 80, action = NOTIFY_USCM_TACMAP, enter_link = "uscm_tacmap=1", enter_text = "View", source = owner) + else if(faction == XENO_HIVE_NORMAL) + GLOB.xeno_flat_tacmap_data += new_current_map + COOLDOWN_START(GLOB, xeno_canvas_cooldown, CANVAS_COOLDOWN_TIME) + xeno_maptext("The Queen has updated our hive mind map", "We sense something unusual...", faction) + var/mutable_appearance/appearance = mutable_appearance(icon('icons/mob/hud/actions_xeno.dmi'), "toggle_queen_zoom") + notify_ghosts(header = "Tactical Map", message = "The Xenomorph tactical map has been updated.", ghost_sound = "sound/voice/alien_distantroar_3.ogg", notify_volume = 50, action = NOTIFY_XENO_TACMAP, enter_link = "xeno_tacmap=1", enter_text = "View", source = user, alert_overlay = appearance) + + store_current_svg_coords(faction, params["image"], user) + current_svg = get_tacmap_data_svg(faction) + old_map = get_tacmap_data_png(faction) + + toolbar_updated_selection = toolbar_color_selection + message_admins("[key_name(user)] has updated the tactical map for [faction].") + updated_canvas = FALSE + + return TRUE + /datum/tacmap/ui_status(mob/user) if(!(isatom(owner))) return UI_INTERACTIVE @@ -483,6 +934,21 @@ SUBSYSTEM_DEF(minimaps) else return UI_CLOSE +/datum/tacmap/drawing/xeno/ui_status(mob/user) + if(!isxeno(user)) + return UI_CLOSE + + var/mob/living/carbon/xenomorph/xeno = user + if(!xeno.hive?.living_xeno_queen?.ovipositor) + return UI_CLOSE + + return UI_INTERACTIVE + +// This gets removed when the player changes bodies (i.e. xeno evolution), so re-register it when that happens. +/datum/tacmap/proc/on_mind_transferred(datum/mind/source, mob/previous_body) + SIGNAL_HANDLER + source.current.client.register_map_obj(map_holder.map) + /datum/tacmap_holder var/map_ref var/atom/movable/screen/minimap/map @@ -496,3 +962,75 @@ SUBSYSTEM_DEF(minimaps) /datum/tacmap_holder/Destroy() map = null return ..() + +/datum/flattened_tacmap + var/flat_tacmap + var/asset_key + var/time + +/datum/flattened_tacmap/New(flat_tacmap, asset_key) + src.flat_tacmap = flat_tacmap + src.asset_key = asset_key + src.time = time_stamp() + +/datum/svg_overlay + var/svg_data + var/ckey + var/name + var/time + +/datum/svg_overlay/New(svg_data, mob/user) + src.svg_data = svg_data + src.ckey = user?.persistent_ckey + src.name = user?.real_name + src.time = time_stamp() + +/// Callback when timer indicates the tacmap is flattenable now +/datum/tacmap/drawing/proc/on_tacmap_fire(faction) + distribute_current_map_png(faction) + last_update_time = world.time + +/// Gets the MINIMAP_FLAG for the provided faction or hivenumber if one exists +/proc/get_minimap_flag_for_faction(faction) + switch(faction) + if(XENO_HIVE_NORMAL) + return MINIMAP_FLAG_XENO + if(FACTION_MARINE) + return MINIMAP_FLAG_USCM + if(FACTION_UPP) + return MINIMAP_FLAG_UPP + if(FACTION_WY) + return MINIMAP_FLAG_USCM + if(FACTION_CLF) + return MINIMAP_FLAG_CLF + if(FACTION_PMC) + return MINIMAP_FLAG_PMC + if(FACTION_YAUTJA) + return MINIMAP_FLAG_YAUTJA + if(XENO_HIVE_CORRUPTED) + return MINIMAP_FLAG_XENO_CORRUPTED + if(XENO_HIVE_ALPHA) + return MINIMAP_FLAG_XENO_ALPHA + if(XENO_HIVE_BRAVO) + return MINIMAP_FLAG_XENO_BRAVO + if(XENO_HIVE_CHARLIE) + return MINIMAP_FLAG_XENO_CHARLIE + if(XENO_HIVE_DELTA) + return MINIMAP_FLAG_XENO_DELTA + if(XENO_HIVE_FERAL) + return MINIMAP_FLAG_XENO_FERAL + if(XENO_HIVE_TAMED) + return MINIMAP_FLAG_XENO_TAMED + if(XENO_HIVE_MUTATED) + return MINIMAP_FLAG_XENO_MUTATED + if(XENO_HIVE_FORSAKEN) + return MINIMAP_FLAG_XENO_FORSAKEN + if(XENO_HIVE_YAUTJA) + return MINIMAP_FLAG_YAUTJA + if(XENO_HIVE_RENEGADE) + return MINIMAP_FLAG_XENO_RENEGADE + return 0 + +#undef CANVAS_COOLDOWN_TIME +#undef FLATTEN_MAP_COOLDOWN_TIME +#undef can_draw diff --git a/code/controllers/subsystem/nanoui.dm b/code/controllers/subsystem/nanoui.dm index 1f33227a7fee..85ad0d32aaf4 100644 --- a/code/controllers/subsystem/nanoui.dm +++ b/code/controllers/subsystem/nanoui.dm @@ -5,6 +5,12 @@ SUBSYSTEM_DEF(nano) priority = SS_PRIORITY_NANOUI runlevels = RUNLEVELS_DEFAULT|RUNLEVEL_LOBBY var/list/currentrun = list() + var/datum/nanomanager/nanomanager + +/datum/controller/subsystem/nano/New() + . = ..() + + nanomanager = new() /datum/controller/subsystem/nano/stat_entry(msg) msg = "P:[nanomanager.processing_uis.len]" diff --git a/code/controllers/subsystem/power.dm b/code/controllers/subsystem/power.dm index 16f4f2ab6127..9908a60420b2 100644 --- a/code/controllers/subsystem/power.dm +++ b/code/controllers/subsystem/power.dm @@ -1,4 +1,4 @@ -var/list/power_machines = list() +GLOBAL_LIST_EMPTY(power_machines) SUBSYSTEM_DEF(power) name = "Power" @@ -12,7 +12,7 @@ SUBSYSTEM_DEF(power) var/list/currentrun_areas = list() /datum/controller/subsystem/power/stat_entry(msg) - msg = "PN:[powernets.len]|PM:[power_machines.len]|A:[active_areas.len]" + msg = "PN:[GLOB.powernets.len]|PM:[GLOB.power_machines.len]|A:[GLOB.active_areas.len]" return ..() @@ -23,9 +23,9 @@ SUBSYSTEM_DEF(power) /datum/controller/subsystem/power/fire(resumed = FALSE) if (!resumed) - currentrun_powerents = global.powernets.Copy() - currentrun_areas = active_areas.Copy() - currentrun_power_machines = global.power_machines.Copy() + currentrun_powerents = GLOB.powernets.Copy() + currentrun_areas = GLOB.active_areas.Copy() + currentrun_power_machines = GLOB.power_machines.Copy() // First we reset the powernets. // This is done first because we want the power machinery to have acted last on the powernet between intervals. @@ -49,7 +49,7 @@ SUBSYSTEM_DEF(power) var/obj/structure/machinery/M = X if (M.process() == PROCESS_KILL) //M.inMachineList = FALSE - power_machines.Remove(M) + GLOB.power_machines.Remove(M) continue if (MC_TICK_CHECK) diff --git a/code/controllers/subsystem/processing/defprocess.dm b/code/controllers/subsystem/processing/defprocess.dm new file mode 100644 index 000000000000..3701a0617a7a --- /dev/null +++ b/code/controllers/subsystem/processing/defprocess.dm @@ -0,0 +1,5 @@ +PROCESSING_SUBSYSTEM_DEF(defprocess) + name = "Defenses Processing" + priority = SS_PRIORITY_DEFENSES + flags = SS_NO_INIT + wait = 0.7 SECONDS diff --git a/code/controllers/subsystem/processing/effects.dm b/code/controllers/subsystem/processing/effects.dm index 5dc9c5f7b9c2..095d557c1ad3 100644 --- a/code/controllers/subsystem/processing/effects.dm +++ b/code/controllers/subsystem/processing/effects.dm @@ -1,5 +1,4 @@ PROCESSING_SUBSYSTEM_DEF(effects) name = "Effects" wait = 1 SECONDS - flags = SS_NO_INIT | SS_KEEP_TIMING priority = SS_PRIORITY_EFFECTS diff --git a/code/controllers/subsystem/processing/fasteffects.dm b/code/controllers/subsystem/processing/fasteffects.dm new file mode 100644 index 000000000000..29d3857916f9 --- /dev/null +++ b/code/controllers/subsystem/processing/fasteffects.dm @@ -0,0 +1,4 @@ +PROCESSING_SUBSYSTEM_DEF(fasteffects) + name = "Fast Effects" + wait = 0.2 SECONDS + priority = SS_PRIORITY_FASTEFFECTS diff --git a/code/controllers/subsystem/processing/oldeffects.dm b/code/controllers/subsystem/processing/oldeffects.dm new file mode 100644 index 000000000000..d2b217f5fc9d --- /dev/null +++ b/code/controllers/subsystem/processing/oldeffects.dm @@ -0,0 +1,5 @@ +PROCESSING_SUBSYSTEM_DEF(oldeffects) + name = "Old Effects" + wait = 1 SECONDS + flags = SS_NO_INIT | SS_KEEP_TIMING + priority = SS_PRIORITY_OLDEFFECTS diff --git a/code/controllers/subsystem/profiler.dm b/code/controllers/subsystem/profiler.dm new file mode 100644 index 000000000000..f9ba79046c2c --- /dev/null +++ b/code/controllers/subsystem/profiler.dm @@ -0,0 +1,74 @@ +#define PROFILER_FILENAME "profiler.json" +#define SENDMAPS_FILENAME "sendmaps.json" + +SUBSYSTEM_DEF(profiler) + name = "Profiler" + init_order = SS_INIT_PROFILER + runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY + wait = 300 SECONDS + var/fetch_cost = 0 + var/write_cost = 0 + +/datum/controller/subsystem/profiler/stat_entry(msg) + msg += "F:[round(fetch_cost,1)]ms" + msg += "|W:[round(write_cost,1)]ms" + return msg + +/datum/controller/subsystem/profiler/Initialize() + if(CONFIG_GET(flag/auto_profile)) + StartProfiling() + else + StopProfiling() //Stop the early start profiler + return SS_INIT_SUCCESS + +/datum/controller/subsystem/profiler/OnConfigLoad() + if(CONFIG_GET(flag/auto_profile)) + StartProfiling() + can_fire = TRUE + else + StopProfiling() + can_fire = FALSE + +/datum/controller/subsystem/profiler/fire() + DumpFile() + +/datum/controller/subsystem/profiler/Shutdown() + if(CONFIG_GET(flag/auto_profile)) + DumpFile(allow_yield = FALSE) + world.Profile(PROFILE_CLEAR, type = "sendmaps") + return ..() + +/datum/controller/subsystem/profiler/proc/StartProfiling() + world.Profile(PROFILE_START) + world.Profile(PROFILE_START, type = "sendmaps") + +/datum/controller/subsystem/profiler/proc/StopProfiling() + world.Profile(PROFILE_STOP) + world.Profile(PROFILE_STOP, type = "sendmaps") + +/datum/controller/subsystem/profiler/proc/DumpFile(allow_yield = TRUE) + var/timer = TICK_USAGE_REAL + var/current_profile_data = world.Profile(PROFILE_REFRESH, format = "json") + var/current_sendmaps_data = world.Profile(PROFILE_REFRESH, type = "sendmaps", format="json") + fetch_cost = MC_AVERAGE(fetch_cost, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer)) + if(allow_yield) + CHECK_TICK + + if(!length(current_profile_data)) //Would be nice to have explicit proc to check this + stack_trace("Warning, profiling stopped manually before dump.") + var/prof_file = file("[GLOB.log_directory]/[PROFILER_FILENAME]") + if(fexists(prof_file)) + fdel(prof_file) + if(!length(current_sendmaps_data)) //Would be nice to have explicit proc to check this + stack_trace("Warning, sendmaps profiling stopped manually before dump.") + var/sendmaps_file = file("[GLOB.log_directory]/[SENDMAPS_FILENAME]") + if(fexists(sendmaps_file)) + fdel(sendmaps_file) + + timer = TICK_USAGE_REAL + WRITE_FILE(prof_file, current_profile_data) + WRITE_FILE(sendmaps_file, current_sendmaps_data) + write_cost = MC_AVERAGE(write_cost, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer)) + +#undef PROFILER_FILENAME +#undef SENDMAPS_FILENAME diff --git a/code/controllers/subsystem/projectiles.dm b/code/controllers/subsystem/projectiles.dm index 075a4f7facc5..a23303ea282d 100644 --- a/code/controllers/subsystem/projectiles.dm +++ b/code/controllers/subsystem/projectiles.dm @@ -6,11 +6,11 @@ SUBSYSTEM_DEF(projectiles) priority = SS_PRIORITY_PROJECTILES /// List of projectiles handled by the subsystem - VAR_PRIVATE/list/obj/item/projectile/projectiles + VAR_PRIVATE/list/obj/projectile/projectiles /// List of projectiles on hold due to sleeping - VAR_PRIVATE/list/obj/item/projectile/sleepers + VAR_PRIVATE/list/obj/projectile/sleepers /// List of projectiles handled this controller firing - VAR_PRIVATE/list/obj/item/projectile/flying + VAR_PRIVATE/list/obj/projectile/flying /* * Scheduling notes: @@ -42,14 +42,14 @@ SUBSYSTEM_DEF(projectiles) flying = projectiles.Copy() flying -= sleepers while(flying.len) - var/obj/item/projectile/projectile = flying[flying.len] + var/obj/projectile/projectile = flying[flying.len] flying.len-- var/delta_time = wait * world.tick_lag * (1 SECONDS) handle_projectile_flight(projectile, delta_time) if(MC_TICK_CHECK) return -/datum/controller/subsystem/projectiles/proc/handle_projectile_flight(obj/item/projectile/projectile, delta_time) +/datum/controller/subsystem/projectiles/proc/handle_projectile_flight(obj/projectile/projectile, delta_time) PRIVATE_PROC(TRUE) set waitfor = FALSE // We're in double-check land here because there ARE rulebreakers. @@ -66,15 +66,15 @@ SUBSYSTEM_DEF(projectiles) stop_projectile(projectile) // Ideally this was already done thru process() qdel(projectile) -/datum/controller/subsystem/projectiles/proc/process_wrapper(obj/item/projectile/projectile, delta_time) +/datum/controller/subsystem/projectiles/proc/process_wrapper(obj/projectile/projectile, delta_time) // set waitfor=TRUE . = PROC_RETURN_SLEEP . = projectile.process(delta_time) sleepers -= projectile // Recover from sleep -/datum/controller/subsystem/projectiles/proc/queue_projectile(obj/item/projectile/projectile) +/datum/controller/subsystem/projectiles/proc/queue_projectile(obj/projectile/projectile) projectiles |= projectile -/datum/controller/subsystem/projectiles/proc/stop_projectile(obj/item/projectile/projectile) +/datum/controller/subsystem/projectiles/proc/stop_projectile(obj/projectile/projectile) projectiles -= projectile flying -= projectile // avoids problems with deleted projs projectile.speed = 0 diff --git a/code/controllers/subsystem/reagents.dm b/code/controllers/subsystem/reagents.dm index 5a310801b191..187479509385 100644 --- a/code/controllers/subsystem/reagents.dm +++ b/code/controllers/subsystem/reagents.dm @@ -17,33 +17,33 @@ SUBSYSTEM_DEF(reagents) /datum/controller/subsystem/reagents/proc/prepare_properties() //Chemical Properties - Initialises all /datum/chem_property into a list indexed by property name var/paths = typesof(/datum/chem_property) - chemical_properties_list = list() + GLOB.chemical_properties_list = list() //Some filters - chemical_properties_list["negative"] = list() - chemical_properties_list["neutral"] = list() - chemical_properties_list["positive"] = list() - chemical_properties_list["rare"] = list() + GLOB.chemical_properties_list["negative"] = list() + GLOB.chemical_properties_list["neutral"] = list() + GLOB.chemical_properties_list["positive"] = list() + GLOB.chemical_properties_list["rare"] = list() //Save for(var/path in paths) var/datum/chem_property/prop = new path() if(!prop.name) continue - chemical_properties_list[prop.name] = prop + GLOB.chemical_properties_list[prop.name] = prop if(prop.starter) //Add a separate instance to the chemical property database var/datum/chem_property/chem = new path() chem.level = 0 - chemical_data.research_property_data += chem + GLOB.chemical_data.research_property_data += chem if(prop.rarity > PROPERTY_DISABLED) //Filters for the generator picking properties if(prop.rarity == PROPERTY_RARE || prop.rarity == PROPERTY_LEGENDARY) - chemical_properties_list["rare"][prop.name] = prop + GLOB.chemical_properties_list["rare"][prop.name] = prop else if(isNegativeProperty(prop)) - chemical_properties_list["negative"][prop.name] = prop + GLOB.chemical_properties_list["negative"][prop.name] = prop else if(isNeutralProperty(prop)) - chemical_properties_list["neutral"][prop.name] = prop + GLOB.chemical_properties_list["neutral"][prop.name] = prop else if(isPositiveProperty(prop)) - chemical_properties_list["positive"][prop.name] = prop + GLOB.chemical_properties_list["positive"][prop.name] = prop /datum/controller/subsystem/reagents/proc/prepare_reagents() //I dislike having these here but map-objects are initialised before world/New() is called. >_> @@ -51,11 +51,11 @@ SUBSYSTEM_DEF(reagents) //Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent id //Generated chemicals should be initialized last, hence the substract then readd. var/list/paths = subtypesof(/datum/reagent) - typesof(/datum/reagent/generated) - subtypesof(/datum/reagent/generated) + subtypesof(/datum/reagent/generated) - chemical_reagents_list = list() + GLOB.chemical_reagents_list = list() for(var/path in paths) var/datum/reagent/chem = new path() chem.save_chemclass() - chemical_reagents_list[chem.id] = chem + GLOB.chemical_reagents_list[chem.id] = chem //Chemical Reactions - Initialises all /datum/chemical_reaction into a list // It is filtered into multiple lists within a list. @@ -63,11 +63,11 @@ SUBSYSTEM_DEF(reagents) // chemical_reaction_list["phoron"] is a list of all reactions relating to phoron var/list/regular_paths = subtypesof(/datum/chemical_reaction) - typesof(/datum/chemical_reaction/generated) var/list/generated_paths = subtypesof(/datum/chemical_reaction/generated) //Generated chemicals should be initialized last - chemical_reactions_filtered_list = list() - chemical_reactions_list = list() + GLOB.chemical_reactions_filtered_list = list() + GLOB.chemical_reactions_list = list() for(paths in list(regular_paths, generated_paths)) for(var/path in paths) var/datum/chemical_reaction/react = new path() - chemical_reactions_list[react.id] = react + GLOB.chemical_reactions_list[react.id] = react react.add_to_filtered_list() diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 972f61aa530f..2da87df90995 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -1,11 +1,11 @@ -var/global/datum/controller/shuttle_controller/shuttle_controller - SUBSYSTEM_DEF(oldshuttle) name = "Old Shuttle" wait = 5.5 SECONDS init_order = SS_INIT_SHUTTLE priority = SS_PRIORITY_SHUTTLE + var/datum/controller/shuttle_controller/shuttle_controller + /datum/controller/subsystem/oldshuttle/Initialize() if(GLOB.perf_flags & PERF_TOGGLE_SHUTTLES) can_fire = FALSE diff --git a/code/controllers/subsystem/shuttles.dm b/code/controllers/subsystem/shuttles.dm index 34104736949a..3e59744cff31 100644 --- a/code/controllers/subsystem/shuttles.dm +++ b/code/controllers/subsystem/shuttles.dm @@ -504,7 +504,7 @@ SUBSYSTEM_DEF(shuttle) /datum/controller/subsystem/shuttle/tgui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, "ShuttleManipulator", name, 800, 600) + ui = new(user, src, "ShuttleManipulator", name, 850, 600) ui.open() diff --git a/code/controllers/subsystem/smoke_system.dm b/code/controllers/subsystem/smoke_system.dm deleted file mode 100644 index 2010687fcba2..000000000000 --- a/code/controllers/subsystem/smoke_system.dm +++ /dev/null @@ -1,31 +0,0 @@ -var/list/active_smoke_effects = list() - - -SUBSYSTEM_DEF(smoke_effects) - name = "Smoke Effects" - wait = 1 SECONDS - flags = SS_NO_INIT | SS_KEEP_TIMING - priority = SS_PRIORITY_OBJECTS - - var/list/currentrun = list() - -/datum/controller/subsystem/smoke_effects/stat_entry(msg) - msg = "P:[active_smoke_effects.len]" - return ..() - - -/datum/controller/subsystem/smoke_effects/fire(resumed = FALSE) - if(!resumed) - currentrun = active_smoke_effects.Copy() - - while(currentrun.len) - var/obj/effect/particle_effect/smoke/E = currentrun[currentrun.len] - currentrun.len-- - - if(!E || QDELETED(E)) - continue - - E.process() - - if(MC_TICK_CHECK) - return diff --git a/code/controllers/subsystem/sound.dm b/code/controllers/subsystem/sound.dm index 1935294394e7..4fdfd7935349 100644 --- a/code/controllers/subsystem/sound.dm +++ b/code/controllers/subsystem/sound.dm @@ -41,5 +41,5 @@ SUBSYSTEM_DEF(sound) if(VI?.ready) var/list/bounds = VI.get_middle_coords() if(bounds.len >= 2) - hearers |= SSquadtree.players_in_range(RECT(bounds[1], bounds[2], VI.map_template.height, VI.map_template.width), bounds[3]) + hearers |= SSquadtree.players_in_range(RECT(bounds[1], bounds[2], VI.map_template.width, VI.map_template.height), bounds[3]) template_queue[template] = hearers diff --git a/code/controllers/subsystem/stamina.dm b/code/controllers/subsystem/stamina.dm deleted file mode 100644 index 84d5b4038cd0..000000000000 --- a/code/controllers/subsystem/stamina.dm +++ /dev/null @@ -1,25 +0,0 @@ -var/global/list/active_staminas = list() - -SUBSYSTEM_DEF(stamina) - name = "Stamina" - wait = 2 SECONDS - priority = SS_PRIORITY_STAMINA - flags = SS_NO_INIT - var/list/currentrun = list() - - -/datum/controller/subsystem/stamina/fire(resumed = FALSE) - if (!resumed) - currentrun = active_staminas.Copy() - - while (currentrun.len) - var/datum/stamina/S = currentrun[currentrun.len] - currentrun.len-- - - if (!S || QDELETED(S)) - continue - - S.process() - - if (MC_TICK_CHECK) - return diff --git a/code/controllers/subsystem/statpanel.dm b/code/controllers/subsystem/statpanel.dm index 9a94eb3371f9..b65ca1e758a2 100644 --- a/code/controllers/subsystem/statpanel.dm +++ b/code/controllers/subsystem/statpanel.dm @@ -44,6 +44,9 @@ SUBSYSTEM_DEF(statpanels) var/client/target = currentrun[length(currentrun)] currentrun.len-- + if(!target) + continue + if(!target.stat_panel.is_ready()) continue @@ -313,14 +316,39 @@ SUBSYSTEM_DEF(statpanels) for(index in 1 to length(to_make)) var/atom/thing = to_make[index] + // var/start_time = REALTIMEOFDAY var/generated_string - /* We're cheap and won't render all overlays. It's expensive and updates with onmob changes! - if(ismob(thing) || length(thing.overlays) > 2) - generated_string = costly_icon2html(thing, parent, sourceonly=TRUE) + // We're cheap and won't render all overlays. It's expensive and updates with onmob changes! + //if(ismob(thing) || length(thing.overlays) > 2) + //generated_string = costly_icon2html(thing, parent, sourceonly=TRUE) + if(ishuman(thing)) + var/mob/living/carbon/human/human_thing = thing + var/icon + + // Ensure they have their armor since its going to be the majority of their appearance + var/list/armor = list() + var/obj/item/uniform = human_thing.get_item_by_slot(WEAR_BODY) + if(uniform) + armor += new uniform.type + var/obj/item/hat = human_thing.get_item_by_slot(WEAR_HEAD) + if(hat) + armor += new hat.type + var/obj/item/suit = human_thing.get_item_by_slot(WEAR_JACKET) + if(suit) + armor += new suit.type + var/obj/item/gloves = human_thing.get_item_by_slot(WEAR_HANDS) + if(gloves) + armor += new gloves.type + var/obj/item/shoes = human_thing.get_item_by_slot(WEAR_FEET) + if(shoes) + armor += new shoes.type + + // If we don't succeed making a flat human icon below, allowing the human to pass into icon2html will throw a bad icon operation because of a workaround in icon2html for humans... + icon = get_flat_human_copy_icon(human_thing, showDirs = list(SOUTH), outfit_override = armor) + generated_string = icon2html(icon, parent, sourceonly=TRUE) + // log_debug("object_window_info called on ref=[REF(thing)], instance=[thing], type=[thing.type], finished in [(REALTIMEOFDAY-start_time) / 10]s") else generated_string = icon2html(thing, parent, sourceonly=TRUE) - */ - generated_string = icon2html(thing, parent, sourceonly=TRUE) newly_seen[thing] = generated_string if(TICK_CHECK) @@ -383,8 +411,10 @@ SUBSYSTEM_DEF(statpanels) set name = "Open Statbrowser Options" set hidden = TRUE + if (!current_fontsize) + current_fontsize = 12 - var/datum/statbrowser_options/SM = statbrowser_options - if(!SM) - SM = statbrowser_options = new(src, current_fontsize) - SM.tgui_interact() + var/datum/statbrowser_options/options_panel = statbrowser_options + if(!options_panel) + options_panel = statbrowser_options = new(src, current_fontsize) + options_panel.tgui_interact() diff --git a/code/controllers/subsystem/stats_collector.dm b/code/controllers/subsystem/stats_collector.dm deleted file mode 100644 index de66e3b2c6b1..000000000000 --- a/code/controllers/subsystem/stats_collector.dm +++ /dev/null @@ -1,17 +0,0 @@ -/// Collects simple round statistics periodically -SUBSYSTEM_DEF(stats_collector) - name = "Round Stats" - wait = 30 SECONDS - priority = SS_PRIORITY_PAGER_STATUS - runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY - flags = SS_KEEP_TIMING | SS_NO_INIT - - var/stat_ticks = 0 - var/players_counter = 0 - -/datum/controller/subsystem/stats_collector/fire(resumed = FALSE) - players_counter += length(GLOB.clients) - stat_ticks++ - -/datum/controller/subsystem/stats_collector/proc/get_avg_players() - return players_counter / stat_ticks diff --git a/code/controllers/subsystem/techtree.dm b/code/controllers/subsystem/techtree.dm index 04ac2591bc15..5f22373228f0 100644 --- a/code/controllers/subsystem/techtree.dm +++ b/code/controllers/subsystem/techtree.dm @@ -34,17 +34,6 @@ SUBSYSTEM_DEF(techtree) var/datum/space_level/zpos = SSmapping.add_new_zlevel(tree.name, list(ZTRAIT_TECHTREE)) tree.zlevel = zpos - var/zlevel = zpos.z_value - var/turf/z_min = locate(1, 1, zlevel) - var/turf/z_max = locate(world.maxx, world.maxy, zlevel) - - - - for(var/t in block(z_min, z_max)) - var/turf/Tu = t - Tu.ChangeTurf(/turf/closed/void, list(/turf/closed/void)) - new /area/techtree(Tu) - for(var/tier in tree.tree_tiers) tree.unlocked_techs += tier tree.all_techs += tier diff --git a/code/controllers/subsystem/teleporter.dm b/code/controllers/subsystem/teleporter.dm deleted file mode 100644 index b753bdb0d519..000000000000 --- a/code/controllers/subsystem/teleporter.dm +++ /dev/null @@ -1,10 +0,0 @@ -// Master teleporter controller. -SUBSYSTEM_DEF(teleporter) - name = "Teleporter" - wait = 5 SECONDS - init_order = SS_INIT_TELEPORTER - priority = SS_PRIORITY_TELEPORTER - flags = SS_NO_FIRE|SS_NO_INIT - - var/list/teleporters_by_id = list() // Associative list of teleporters by ID, master list of teleporters to process - var/list/teleporters = list() // Process list (identical contents to teleporters_by_id) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 58910c45af75..2b9812abade4 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -46,6 +46,7 @@ SUBSYSTEM_DEF(ticker) var/totalPlayers = 0 //used for pregame stats on statpanel var/totalPlayersReady = 0 //used for pregame stats on statpanel + var/tutorial_disabled = FALSE //zonenote /datum/controller/subsystem/ticker/Initialize(timeofday) load_mode() @@ -97,21 +98,18 @@ SUBSYSTEM_DEF(ticker) if(!roundend_check_paused && mode.check_finished(force_ending) || force_ending) current_state = GAME_STATE_FINISHED - ooc_allowed = TRUE + GLOB.ooc_allowed = TRUE mode.declare_completion(force_ending) - REDIS_PUBLISH("byond.round", "type" = "round-complete") + REDIS_PUBLISH("byond.round", "type" = "round-complete", "round_name" = GLOB.round_statistics.round_name) flash_clients() - if(text2num(SSperf_logging?.round?.id) % CONFIG_GET(number/gamemode_rounds_needed) == 0) - addtimer(CALLBACK( - SSvote, - /datum/controller/subsystem/vote/proc/initiate_vote, - "gamemode", - "SERVER", - CALLBACK(src, PROC_REF(handle_map_reboot)), - TRUE - ), 3 SECONDS) - else - handle_map_reboot() + addtimer(CALLBACK( + SSvote, + /datum/controller/subsystem/vote/proc/initiate_vote, + "gamemode", + "SERVER", + CALLBACK(src, PROC_REF(handle_map_reboot)), + TRUE + ), 3 SECONDS) Master.SetRunLevel(RUNLEVEL_POSTGAME) /// Attempt to start game asynchronously if applicable @@ -138,8 +136,8 @@ SUBSYSTEM_DEF(ticker) REDIS_PUBLISH("byond.round", "type" = "round-start") for(var/client/C in GLOB.admins) - remove_verb(C, roundstart_mod_verbs) - admin_verbs_minor_event -= roundstart_mod_verbs + remove_verb(C, GLOB.roundstart_mod_verbs) + GLOB.admin_verbs_minor_event -= GLOB.roundstart_mod_verbs return TRUE @@ -174,16 +172,36 @@ SUBSYSTEM_DEF(ticker) CHECK_TICK if(!mode.can_start(bypass_checks)) - to_chat(world, "Reverting to pre-game lobby.") + to_chat(world, "Requirements to start [GLOB.master_mode] not met. Reverting to pre-game lobby.") + // Make only one more attempt + if(world.time - 2 * wait > CONFIG_GET(number/lobby_countdown) SECONDS) + flash_clients() + delay_start = TRUE + var/active_admins = 0 + for(var/client/admin_client in GLOB.admins) + if(!admin_client.is_afk() && check_client_rights(admin_client, R_SERVER, FALSE)) + active_admins = TRUE + break + if(active_admins) + to_chat(world, SPAN_CENTERBOLD("The game start has been delayed.")) + message_admins(SPAN_ADMINNOTICE("Alert: Insufficent players ready to start [GLOB.master_mode].\nEither change mode and map or start round and bypass checks.")) + else + var/fallback_mode = CONFIG_GET(string/gamemode_default) + SSticker.save_mode(fallback_mode) + GLOB.master_mode = fallback_mode + to_chat(world, SPAN_BOLDNOTICE("Notice: The Gamemode for next round has been set to [fallback_mode]")) + handle_map_reboot() + else + to_chat(world, "Attempting again...") QDEL_NULL(mode) - RoleAuthority.reset_roles() + GLOB.RoleAuthority.reset_roles() return FALSE CHECK_TICK if(!mode.pre_setup() && !bypass_checks) QDEL_NULL(mode) to_chat(world, "Error in pre-setup for [GLOB.master_mode]. Reverting to pre-game lobby.") - RoleAuthority.reset_roles() + GLOB.RoleAuthority.reset_roles() return FALSE CHECK_TICK @@ -197,7 +215,9 @@ SUBSYSTEM_DEF(ticker) if(CONFIG_GET(flag/autooocmute)) - ooc_allowed = FALSE + GLOB.ooc_allowed = FALSE + + round_start_time = world.time CHECK_TICK for(var/I in round_start_events) @@ -214,7 +234,7 @@ SUBSYSTEM_DEF(ticker) var/roles_to_roll = null if(length(mode.roles_to_roll)) roles_to_roll = mode.roles_to_roll - RoleAuthority.setup_candidates_and_roles(roles_to_roll) //Distribute jobs + GLOB.RoleAuthority.setup_candidates_and_roles(roles_to_roll) //Distribute jobs if(mode.flags_round_type & MODE_NEW_SPAWN) create_characters() // Create and equip characters else @@ -222,9 +242,7 @@ SUBSYSTEM_DEF(ticker) equip_characters() GLOB.data_core.manifest() - log_world("Game start took [(world.timeofday - init_start) / 10]s") - round_start_time = world.time //SSdbcore.SetRoundStart() current_state = GAME_STATE_PLAYING @@ -238,7 +256,7 @@ SUBSYSTEM_DEF(ticker) setup_economy() - shuttle_controller?.setup_shuttle_docks() + SSoldshuttle.shuttle_controller?.setup_shuttle_docks() PostSetup() return TRUE @@ -254,15 +272,15 @@ SUBSYSTEM_DEF(ticker) // Switch back to default automatically save_mode(CONFIG_GET(string/gamemode_default)) - if(round_statistics) - to_chat_spaced(world, html = FONT_SIZE_BIG(SPAN_ROLE_BODY("Welcome to [round_statistics.round_name]"))) + if(GLOB.round_statistics) + to_chat_spaced(world, html = FONT_SIZE_BIG(SPAN_ROLE_BODY("Welcome to [GLOB.round_statistics.round_name]"))) - supply_controller.process() //Start the supply shuttle regenerating points -- TLE + GLOB.supply_controller.start_processing() for(var/i in GLOB.closet_list) //Set up special equipment for lockers and vendors, depending on gamemode var/obj/structure/closet/C = i INVOKE_ASYNC(C, TYPE_PROC_REF(/obj/structure/closet, select_gamemode_equipment), mode.type) - for(var/obj/structure/machinery/vending/V in machines) + for(var/obj/structure/machinery/vending/V in GLOB.machines) INVOKE_ASYNC(V, TYPE_PROC_REF(/obj/structure/machinery/vending, select_gamemode_equipment), mode.type) SEND_GLOBAL_SIGNAL(COMSIG_GLOB_POST_SETUP) @@ -379,7 +397,7 @@ SUBSYSTEM_DEF(ticker) world.Reboot(TRUE) /datum/controller/subsystem/ticker/proc/create_characters() - if(!RoleAuthority) + if(!GLOB.RoleAuthority) return for(var/mob/new_player/player in GLOB.player_list) @@ -389,7 +407,7 @@ SUBSYSTEM_DEF(ticker) INVOKE_ASYNC(src, PROC_REF(spawn_and_equip_char), player) /datum/controller/subsystem/ticker/proc/spawn_and_equip_char(mob/new_player/player) - var/datum/job/J = RoleAuthority.roles_for_mode[player.job] + var/datum/job/J = GLOB.RoleAuthority.roles_for_mode[player.job] if(J.job_options && player?.client?.prefs?.pref_special_job_options[J.title]) J.handle_job_options(player.client.prefs.pref_special_job_options[J.title]) if(J.handle_spawn_and_equip) @@ -424,10 +442,10 @@ SUBSYSTEM_DEF(ticker) for(var/mob/living/carbon/human/player in GLOB.human_mob_list) if(player.mind) - if(player.job == "Commanding Officers") + if(player.job == JOB_CO) captainless = FALSE if(player.job) - RoleAuthority.equip_role(player, RoleAuthority.roles_by_name[player.job], late_join = FALSE) + GLOB.RoleAuthority.equip_role(player, GLOB.RoleAuthority.roles_by_name[player.job], late_join = FALSE) EquipCustomItems(player) if(player.client) var/client/C = player.client @@ -481,7 +499,6 @@ SUBSYSTEM_DEF(ticker) winset(C, null, "mainwindow.icon=[SSticker.mode.taskbar_icon]") - /datum/controller/subsystem/ticker/proc/hijack_ocurred() if(mode) mode.is_in_endgame = TRUE diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm index e7e17876d9db..47403f3379fb 100644 --- a/code/controllers/subsystem/timer.dm +++ b/code/controllers/subsystem/timer.dm @@ -583,7 +583,7 @@ SUBSYSTEM_DEF(timer) be supported and may refuse to run or run with a 0 wait") if (flags & TIMER_CLIENT_TIME) // REALTIMEOFDAY has a resolution of 1 decisecond - wait = max(CEILING(wait, 1), 1) // so if we use tick_lag timers may be inserted in the "past" + wait = max(Ceiling(wait), 1) // so if we use tick_lag timers may be inserted in the "past" else wait = max(CEILING(wait, world.tick_lag), world.tick_lag) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 3882228a5ab1..6188e38e8d60 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -273,11 +273,14 @@ SUBSYSTEM_DEF(vote) question = "Gamemode vote" randomize_entries = TRUE for(var/mode_type in config.gamemode_cache) - var/datum/game_mode/M = initial(mode_type) - if(initial(M.config_tag)) - var/vote_cycle_met = !initial(M.vote_cycle) || (text2num(SSperf_logging?.round?.id) % initial(M.vote_cycle) == 0) - if(initial(M.votable) && vote_cycle_met) - choices += initial(M.config_tag) + var/datum/game_mode/cur_mode = mode_type + if(initial(cur_mode.config_tag)) + cur_mode = new mode_type + var/vote_cycle_met = !initial(cur_mode.vote_cycle) || (text2num(SSperf_logging?.round?.id) % initial(cur_mode.vote_cycle) == 0) + var/min_players_met = length(GLOB.clients) >= cur_mode.required_players + if(initial(cur_mode.votable) && vote_cycle_met && min_players_met) + choices += initial(cur_mode.config_tag) + qdel(cur_mode) if("groundmap") question = "Ground map vote" vote_sound = 'sound/voice/start_your_voting.ogg' @@ -359,7 +362,7 @@ SUBSYSTEM_DEF(vote) log_vote(text) var/vp = CONFIG_GET(number/vote_period) SEND_SOUND(world, sound(vote_sound, channel = SOUND_CHANNEL_VOX, volume = vote_sound_vol)) - to_chat(world, SPAN_CENTERBOLD("

[text]
Type vote or click here to place your votes.
You have [DisplayTimeText(vp)] to vote.


")) + to_chat(world, SPAN_CENTERBOLD("

[text]
Type vote or click here to place your votes.
You have [DisplayTimeText(vp)] to vote.


")) time_remaining = round(vp/10) for(var/c in GLOB.clients) var/client/C = c diff --git a/code/controllers/subsystem/weather.dm b/code/controllers/subsystem/weather.dm index 7610c007df90..a3fdfe509a96 100644 --- a/code/controllers/subsystem/weather.dm +++ b/code/controllers/subsystem/weather.dm @@ -1,4 +1,4 @@ -var/list/weather_notify_objects = list() +GLOBAL_LIST_EMPTY(weather_notify_objects) SUBSYSTEM_DEF(weather) name = "Weather" @@ -46,8 +46,8 @@ SUBSYSTEM_DEF(weather) /datum/controller/subsystem/weather/proc/setup_weather_areas() weather_areas = list() - for(var/area/A in all_areas) - if(A == A.master && A.weather_enabled && map_holder.should_affect_area(A)) + for(var/area/A in GLOB.all_areas) + if(A.weather_enabled && map_holder.should_affect_area(A)) weather_areas += A curr_master_turf_overlay = new /obj/effect/weather_vfx_holder @@ -146,8 +146,7 @@ SUBSYSTEM_DEF(weather) curr_master_turf_overlay.icon_state = weather_event_instance.turf_overlay_icon_state curr_master_turf_overlay.alpha = weather_event_instance.turf_overlay_alpha for(var/area/area as anything in weather_areas) - for(var/area/subarea as anything in area.related) - subarea.overlays += curr_master_turf_overlay + area.overlays += curr_master_turf_overlay update_mobs_weather() SEND_GLOBAL_SIGNAL(COMSIG_GLOB_WEATHER_CHANGE) @@ -169,8 +168,7 @@ SUBSYSTEM_DEF(weather) message_admins(SPAN_BLUE("Weather Event of unknown type [weather_event_type] ending after [DisplayTimeText(world.time - current_event_start_time)].")) for(var/area/area as anything in weather_areas) - for(var/area/subarea as anything in area.related) - subarea.overlays -= curr_master_turf_overlay + area.overlays -= curr_master_turf_overlay if (map_holder.no_weather_turf_icon_state) curr_master_turf_overlay.icon_state = map_holder.no_weather_turf_icon_state diff --git a/code/controllers/subsystem/x_evolution.dm b/code/controllers/subsystem/x_evolution.dm index 9f84513e9e2d..857af8117df2 100644 --- a/code/controllers/subsystem/x_evolution.dm +++ b/code/controllers/subsystem/x_evolution.dm @@ -3,7 +3,7 @@ #define EVOLUTION_INCREMENT_TIME (30 MINUTES) // Evolution increases by 1 every 25 minutes. SUBSYSTEM_DEF(xevolution) - name = "Evilution" + name = "Evilution" //This is not a typo, do not change it. wait = 1 MINUTES priority = SS_PRIORITY_INACTIVITY @@ -11,6 +11,7 @@ SUBSYSTEM_DEF(xevolution) var/time_ratio_modifier = 0.4 var/list/boost_power = list() + var/list/overridden_power = list() var/force_boost_power = FALSE // Debugging only /datum/controller/subsystem/xevolution/Initialize(start_timeofday) @@ -18,6 +19,7 @@ SUBSYSTEM_DEF(xevolution) for(var/hivenumber in GLOB.hive_datum) HS = GLOB.hive_datum[hivenumber] boost_power[HS.hivenumber] = 1 + overridden_power[HS.hivenumber] = FALSE return SS_INIT_SUCCESS /datum/controller/subsystem/xevolution/fire(resumed = FALSE) @@ -27,6 +29,9 @@ SUBSYSTEM_DEF(xevolution) if(!HS) continue + if(overridden_power[HS.hivenumber]) + continue + if(!HS.dynamic_evolution) boost_power[HS.hivenumber] = HS.evolution_rate + HS.evolution_bonus HS.hive_ui.update_burrowed_larva() @@ -42,7 +47,7 @@ SUBSYSTEM_DEF(xevolution) //Add on any bonuses from thie hivecore after applying upgrade progress boost_power_new += (0.5 * HS.has_special_structure(XENO_STRUCTURE_CORE)) - boost_power_new = Clamp(boost_power_new, BOOST_POWER_MIN, BOOST_POWER_MAX) + boost_power_new = clamp(boost_power_new, BOOST_POWER_MIN, BOOST_POWER_MAX) boost_power_new += HS.evolution_bonus if(!force_boost_power) @@ -54,6 +59,12 @@ SUBSYSTEM_DEF(xevolution) /datum/controller/subsystem/xevolution/proc/get_evolution_boost_power(hivenumber) return boost_power[hivenumber] +/datum/controller/subsystem/xevolution/proc/override_power(hivenumber, power, override) + var/datum/hive_status/hive_status = GLOB.hive_datum[hivenumber] + boost_power[hivenumber] = power + overridden_power[hivenumber] = override + hive_status.hive_ui.update_burrowed_larva() + #undef EVOLUTION_INCREMENT_TIME #undef BOOST_POWER_MIN #undef BOOST_POWER_MAX diff --git a/code/controllers/subsystem/xenocon.dm b/code/controllers/subsystem/xenocon.dm deleted file mode 100644 index d16e59bd9813..000000000000 --- a/code/controllers/subsystem/xenocon.dm +++ /dev/null @@ -1,18 +0,0 @@ -SUBSYSTEM_DEF(xenocon) - name = "XENOCON" - wait = 5 SECONDS - priority = SS_PRIORITY_INACTIVITY - flags = SS_NO_INIT - var/rewarded = FALSE - -/datum/controller/subsystem/xenocon/fire(resumed = FALSE) - if(rewarded) - return - - var/datum/hive_status/hive - for(var/hivenumber in GLOB.hive_datum) - hive = GLOB.hive_datum[hivenumber] - if(hive.xenocon_points >= XENOCON_THRESHOLD) - var/datum/emergency_call/em_call = new /datum/emergency_call/xenos/platoon() - em_call.activate() - rewarded = TRUE diff --git a/code/datums/ASRS.dm b/code/datums/ASRS.dm index 86a7363f07ea..dc5ebc362fd1 100644 --- a/code/datums/ASRS.dm +++ b/code/datums/ASRS.dm @@ -2,133 +2,124 @@ //These are non orderable packs that get in automaticly though the ARSR system. //Note these should never show up to buy and some will only show up later in the round. //BIG NOTE: Don't add living things to crates, that's bad, it will break the shuttle. -//We use the cost to determine the spawn chance this equals out the crates that spawn later in the round. -#define ASRS_HIGHEST_WEIGHT 0 //warning this weight wont change. -#define ASRS_VERY_HIGH_WEIGHT 5 -#define ASRS_HIGH_WEIGHT 15 -#define ASRS_MEDIUM_WEIGHT 25 -#define ASRS_LOW_WEIGHT 35 -#define ASRS_VERY_LOW_WEIGHT 50 -#define ASRS_LOWEST_WEIGHT 100 + + +/datum/supply_packs_asrs + /// How likely we are to select this pack over others + var/cost = ASRS_MEDIUM_WEIGHT + /// Which pool of ASRS automatically dispensed supplies this belongs to + var/pool = ASRS_POOL_MAIN + /// What supply pack would this dispense + var/datum/supply_packs/reference_package //=================================== // Rounds -/datum/supply_packs/ammo_rounds_box_rifle/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_rounds_box_rifle + reference_package = /datum/supply_packs/ammo_rounds_box_rifle cost = ASRS_MEDIUM_WEIGHT -/datum/supply_packs/ammo_rounds_box_rifle_ap/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_rounds_box_rifle_ap + reference_package = /datum/supply_packs/ammo_rounds_box_rifle_ap cost = ASRS_LOW_WEIGHT -/datum/supply_packs/ammo_rounds_box_xm88/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_rounds_box_xm88 + reference_package = /datum/supply_packs/ammo_rounds_box_xm88 cost = ASRS_LOW_WEIGHT //=================================== // Magazines -/datum/supply_packs/gun/ammo_hpr/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/gun/ammo_hpr + reference_package = /datum/supply_packs/ammo_hpr cost = ASRS_LOWEST_WEIGHT -/datum/supply_packs/ammo_m4a3_mag_box/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_m4a3_mag_box + reference_package = /datum/supply_packs/ammo_m4a3_mag_box cost = ASRS_LOW_WEIGHT -/datum/supply_packs/ammo_m4a3_mag_box_ap/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_m4a3_mag_box_ap + reference_package = /datum/supply_packs/ammo_m4a3_mag_box_ap cost = ASRS_VERY_LOW_WEIGHT -/datum/supply_packs/ammo_mag_box/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_mag_box + reference_package = /datum/supply_packs/ammo_mag_box cost = ASRS_VERY_LOW_WEIGHT -/datum/supply_packs/ammo_mag_box_ap/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_mag_box_ap + reference_package = /datum/supply_packs/ammo_mag_box_ap -/datum/supply_packs/ammo_m4ra_mag_box/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_m4ra_mag_box + reference_package = /datum/supply_packs/ammo_m4ra_mag_box cost = ASRS_VERY_LOW_WEIGHT -/datum/supply_packs/ammo_m4ra_mag_box_ap/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_m4ra_mag_box_ap + reference_package = /datum/supply_packs/ammo_m4ra_mag_box_ap -/datum/supply_packs/ammo_shell_box/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_shell_box + reference_package = /datum/supply_packs/ammo_shell_box cost = ASRS_VERY_LOW_WEIGHT -/datum/supply_packs/ammo_shell_box_buck/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_shell_box_buck + reference_package = /datum/supply_packs/ammo_shell_box_buck cost = ASRS_VERY_LOW_WEIGHT -/datum/supply_packs/ammo_shell_box_flechette/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_shell_box_flechette + reference_package = /datum/supply_packs/ammo_shell_box_flechette cost = ASRS_VERY_LOW_WEIGHT -/datum/supply_packs/ammo_smartgun/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_shell_box_breaching + reference_package = /datum/supply_packs/ammo_shell_box_breaching + cost = ASRS_VERY_LOW_WEIGHT -/datum/supply_packs/ammo_napalm/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_xm51 + reference_package = /datum/supply_packs/ammo_xm51 cost = ASRS_VERY_LOW_WEIGHT -/datum/supply_packs/ammo_napalm_gel/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_smartgun + reference_package = /datum/supply_packs/ammo_smartgun + +/datum/supply_packs_asrs/ammo_napalm + reference_package = /datum/supply_packs/ammo_napalm cost = ASRS_VERY_LOW_WEIGHT -/datum/supply_packs/ammo_flamer_mixed/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_napalm_gel + reference_package = /datum/supply_packs/ammo_napalm_gel + cost = ASRS_VERY_LOW_WEIGHT + +/datum/supply_packs_asrs/ammo_flamer_mixed + reference_package = /datum/supply_packs/ammo_flamer_mixed cost = ASRS_VERY_LOW_WEIGHT //=================================== // Mortar ammo -/datum/supply_packs/ammo_mortar_he/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_mortar_he + reference_package = /datum/supply_packs/ammo_mortar_he -/datum/supply_packs/ammo_mortar_incend/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_mortar_incend + reference_package = /datum/supply_packs/ammo_mortar_incend -/datum/supply_packs/ammo_mortar_flare/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/ammo_mortar_flare + reference_package = /datum/supply_packs/ammo_mortar_flare //=================================== // Misc supplies -/datum/supply_packs/flares/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/flares + reference_package = /datum/supply_packs/flares cost = ASRS_LOW_WEIGHT -/datum/supply_packs/mre/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/mre + reference_package = /datum/supply_packs/mre cost = ASRS_VERY_LOW_WEIGHT -/datum/supply_packs/flashlights/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/flashlights + reference_package = /datum/supply_packs/flashlights cost = ASRS_VERY_LOW_WEIGHT -/datum/supply_packs/batteries/asrs - buyable = 0 - group = "ASRS" +/datum/supply_packs_asrs/batteries + reference_package = /datum/supply_packs/batteries cost = ASRS_VERY_LOW_WEIGHT + +// ============================ +// FOOD POOL - for Mess Tech gradual supplies throughout the round +/datum/supply_packs_asrs/ingredient + reference_package = /datum/supply_packs/ingredient + pool = ASRS_POOL_FOOD diff --git a/code/datums/_atmos_setup.dm b/code/datums/_atmos_setup.dm index be4dc62faeff..3075e98ac464 100644 --- a/code/datums/_atmos_setup.dm +++ b/code/datums/_atmos_setup.dm @@ -14,18 +14,18 @@ #define PIPE_COLOR_YELLOW "#ffcc00" #define PIPE_COLOR_PURPLE "#5c1ec0" -var/global/list/pipe_colors = list("grey" = PIPE_COLOR_GREY, "red" = PIPE_COLOR_RED, "blue" = PIPE_COLOR_BLUE, "cyan" = PIPE_COLOR_CYAN, "green" = PIPE_COLOR_GREEN, "yellow" = PIPE_COLOR_YELLOW, "purple" = PIPE_COLOR_PURPLE) +GLOBAL_LIST_INIT(pipe_colors, list("grey" = PIPE_COLOR_GREY, "red" = PIPE_COLOR_RED, "blue" = PIPE_COLOR_BLUE, "cyan" = PIPE_COLOR_CYAN, "green" = PIPE_COLOR_GREEN, "yellow" = PIPE_COLOR_YELLOW, "purple" = PIPE_COLOR_PURPLE)) /proc/pipe_color_lookup(color) - for(var/C in pipe_colors) - if(color == pipe_colors[C]) + for(var/C in GLOB.pipe_colors) + if(color == GLOB.pipe_colors[C]) return "[C]" /proc/pipe_color_check(color) if(!color) return 1 - for(var/C in pipe_colors) - if(color == pipe_colors[C]) + for(var/C in GLOB.pipe_colors) + if(color == GLOB.pipe_colors[C]) return 1 return 0 @@ -89,10 +89,10 @@ var/global/list/pipe_colors = list("grey" = PIPE_COLOR_GREY, "red" = PIPE_COLOR_ var/image/I = image('icons/obj/pipes/pipes.dmi', icon_state = state) pipe_icons[cache_name] = I - for(var/pipe_color in pipe_colors) + for(var/pipe_color in GLOB.pipe_colors) I = image('icons/obj/pipes/pipes.dmi', icon_state = state) - I.color = pipe_colors[pipe_color] - pipe_icons[state + "[pipe_colors[pipe_color]]"] = I + I.color = GLOB.pipe_colors[pipe_color] + pipe_icons[state + "[GLOB.pipe_colors[pipe_color]]"] = I pipe = new ('icons/obj/pipes/heat.dmi') for(var/state in pipe.IconStates()) @@ -122,10 +122,10 @@ var/global/list/pipe_colors = list("grey" = PIPE_COLOR_GREY, "red" = PIPE_COLOR_ if(findtext(state, "core") || findtext(state, "4way")) var/image/I = image('icons/obj/pipes/manifold.dmi', icon_state = state) manifold_icons[state] = I - for(var/pipe_color in pipe_colors) + for(var/pipe_color in GLOB.pipe_colors) I = image('icons/obj/pipes/manifold.dmi', icon_state = state) - I.color = pipe_colors[pipe_color] - manifold_icons[state + pipe_colors[pipe_color]] = I + I.color = GLOB.pipe_colors[pipe_color] + manifold_icons[state + GLOB.pipe_colors[pipe_color]] = I /datum/pipe_icon_manager/proc/gen_device_icons() if(!device_icons) @@ -170,13 +170,13 @@ var/global/list/pipe_colors = list("grey" = PIPE_COLOR_GREY, "red" = PIPE_COLOR_ var/cache_name = state - for(var/D in cardinal) + for(var/D in GLOB.cardinals) var/image/I = image('icons/obj/pipes/pipe_underlays.dmi', icon_state = state, dir = D) underlays[cache_name + "[D]"] = I - for(var/pipe_color in pipe_colors) + for(var/pipe_color in GLOB.pipe_colors) I = image('icons/obj/pipes/pipe_underlays.dmi', icon_state = state, dir = D) - I.color = pipe_colors[pipe_color] - underlays[state + "[D]" + "[pipe_colors[pipe_color]]"] = I + I.color = GLOB.pipe_colors[pipe_color] + underlays[state + "[D]" + "[GLOB.pipe_colors[pipe_color]]"] = I /* Leaving the old icon manager code commented out for now, as we may want to rewrite the new code to cleanly @@ -202,7 +202,7 @@ var/global/list/pipe_colors = list("grey" = PIPE_COLOR_GREY, "red" = PIPE_COLOR_ if(state == "") continue - for(var/D in cardinal) + for(var/D in GLOB.cardinals) var/image/I = image('icons/atmos/pipe_underlays.dmi', icon_state = state, dir = D) switch(state) if("intact") diff --git a/code/datums/_ndatabase/code/brsql_adapter.dm b/code/datums/_ndatabase/code/brsql_adapter.dm index 345ddfe005f3..251267a04fdb 100644 --- a/code/datums/_ndatabase/code/brsql_adapter.dm +++ b/code/datums/_ndatabase/code/brsql_adapter.dm @@ -101,8 +101,8 @@ SSdatabase.create_parametric_query(query_updatetable, qpars, CB) /datum/db/adapter/brsql_adapter/insert_table(table_name, list/values, datum/callback/CB, sync = FALSE) - if(!sync) - set waitfor = 0 + set waitfor = FALSE + var/length = values.len var/list/qpars = list() var/query_inserttable = getquery_insert_table(table_name, values, qpars) @@ -530,7 +530,7 @@ if(first && !is_id) if(!items_first) update_items+="," - update_items+="`[table_name]`.[esfield]=`__prep_update`.[esfield]" + update_items+="`[table_name]`.[esfield]=`subquery`.[esfield]" items_first = FALSE local_first = FALSE calltext += "SELECT [local_text]" @@ -539,9 +539,7 @@ issue_log += "No ID passed to update query." return "" // AAAAAAAAAAAAAH FUCK DON'T JUST KILL THE ENTIRE FUCKING TABLE BRUH return {" - WITH __prep_update as ( - [calltext] - ) UPDATE `[connection.database]`.`[table_name]` INNER JOIN `__prep_update` ON `[table_name]`.id = `__prep_update`.id SET [update_items] + UPDATE `[connection.database]`.`[table_name]` JOIN (WITH `__prep_update` AS ( [calltext] ) SELECT * FROM `__prep_update`) subquery ON `[table_name]`.id = subquery.id SET [update_items] "} /datum/db/adapter/brsql_adapter/proc/getquery_delete_table(table_name, list/ids) diff --git a/code/datums/_ndatabase/code/interfaces/connection_settings.dm b/code/datums/_ndatabase/code/interfaces/connection_settings.dm index 4092ee712ba9..0c990b2b9cbc 100644 --- a/code/datums/_ndatabase/code/interfaces/connection_settings.dm +++ b/code/datums/_ndatabase/code/interfaces/connection_settings.dm @@ -33,5 +33,3 @@ if(!typestr) typestr = /datum/db/connection_settings/native return new typestr(config) - -var/global/datum/db/connection_settings/connection_settings diff --git a/code/datums/_ndatabase/code/native_adapter.dm b/code/datums/_ndatabase/code/native_adapter.dm index a5e4d41fb6a0..1c23a6ceab8f 100644 --- a/code/datums/_ndatabase/code/native_adapter.dm +++ b/code/datums/_ndatabase/code/native_adapter.dm @@ -83,8 +83,7 @@ SSdatabase.create_query(query_gettable, CB) /datum/db/adapter/native_adapter/update_table(table_name, list/values, datum/callback/CB, sync = FALSE) - if(!sync) - set waitfor = 0 + set waitfor = FALSE for(var/list/vals in values) var/list/qpars = list() diff --git a/code/datums/_ndatabase/subsystems/database_query_manager.dm b/code/datums/_ndatabase/subsystems/database_query_manager.dm index 7eef5842e2dd..596d55121920 100644 --- a/code/datums/_ndatabase/subsystems/database_query_manager.dm +++ b/code/datums/_ndatabase/subsystems/database_query_manager.dm @@ -19,8 +19,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -var/datum/controller/subsystem/database_query_manager/SSdatabase - +GLOBAL_REAL(SSdatabase, /datum/controller/subsystem/database_query_manager) /datum/controller/subsystem/database_query_manager name = "Database QM" wait = 1 diff --git a/code/datums/_ndatabase/subsystems/entity_manager.dm b/code/datums/_ndatabase/subsystems/entity_manager.dm index 667f2a855563..833bc6926e09 100644 --- a/code/datums/_ndatabase/subsystems/entity_manager.dm +++ b/code/datums/_ndatabase/subsystems/entity_manager.dm @@ -19,7 +19,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -var/datum/controller/subsystem/entity_manager/SSentity_manager +GLOBAL_REAL(SSentity_manager, /datum/controller/subsystem/entity_manager) /datum/controller/subsystem/entity_manager name = "Entity Manager" diff --git a/code/datums/action.dm b/code/datums/action.dm index 8dcf2963590d..3a597ad262b1 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -11,9 +11,9 @@ var/cost = 0 // By default an action has no cost -> will be utilized by skill actions/xeno actions var/action_flags = 0 // Check out __game.dm for flags /// Whether the action is hidden from its owner - /// Useful for when you want to preserve action state while preventing - /// a mob from using said action - var/hidden = FALSE + var/hidden = FALSE //Preserve action state while preventing mob from using action + ///Hide the action from the owner without preventing them from using it (incase of keybind listen_signal) + var/player_hidden = FALSE var/unique = TRUE /// A signal on the mob that will cause the action to activate var/listen_signal @@ -103,7 +103,7 @@ /mob/proc/handle_add_action(datum/action/action) LAZYADD(actions, action) if(client) - client.screen += action.button + client.add_to_screen(action.button) update_action_buttons() /proc/remove_action(mob/L, action_path) @@ -122,7 +122,7 @@ /mob/proc/handle_remove_action(datum/action/action) actions?.Remove(action) if(client) - client.screen -= action.button + client.remove_from_screen(action.button) update_action_buttons() /mob/living/carbon/human/handle_remove_action(datum/action/action) @@ -187,8 +187,10 @@ I.ui_action_click(owner, holder_item) /datum/action/item_action/can_use_action() - if(ishuman(owner) && !owner.is_mob_incapacitated() && !owner.lying) - return TRUE + if(ishuman(owner) && !owner.is_mob_incapacitated()) + var/mob/living/carbon/human/human = owner + if(human.body_position == STANDING_UP) + return TRUE /datum/action/item_action/update_button_icon() button.overlays.Cut() @@ -219,13 +221,13 @@ for(var/datum/action/A in actions) A.button.screen_loc = null if(reload_screen) - client.screen += A.button + client.add_to_screen(A.button) else for(var/datum/action/A in actions) var/atom/movable/screen/action_button/B = A.button if(reload_screen) - client.screen += B - if(A.hidden) + client.add_to_screen(B) + if(A.hidden || A.player_hidden) B.screen_loc = null continue button_number++ @@ -234,11 +236,11 @@ if(!button_number) hud_used.hide_actions_toggle.screen_loc = null if(reload_screen) - client.screen += hud_used.hide_actions_toggle + client.add_to_screen(hud_used.hide_actions_toggle) return hud_used.hide_actions_toggle.screen_loc = hud_used.hide_actions_toggle.get_button_screen_loc(button_number+1) if(reload_screen) - client.screen += hud_used.hide_actions_toggle + client.add_to_screen(hud_used.hide_actions_toggle) diff --git a/code/datums/agents/tools/chloroform.dm b/code/datums/agents/tools/chloroform.dm index 464533309bcc..b1c666ac9ec8 100644 --- a/code/datums/agents/tools/chloroform.dm +++ b/code/datums/agents/tools/chloroform.dm @@ -47,10 +47,9 @@ /obj/item/weapon/chloroform/proc/grab_stun(mob/living/M, mob/living/user) M.anchored = TRUE - M.frozen = TRUE - M.density = FALSE + ADD_TRAIT(M, TRAIT_IMMOBILIZED, CHLOROFORM_TRAIT) + ADD_TRAIT(M, TRAIT_UNDENSE, CHLOROFORM_TRAIT) M.able_to_speak = FALSE - M.update_canmove() M.drop_inv_item_on_ground(M.wear_mask, force = TRUE) @@ -79,10 +78,10 @@ /obj/item/weapon/chloroform/proc/remove_stun(mob/living/M) animate(M, pixel_x = 0, pixel_y = 0, time = 0.2 SECONDS, easing = QUAD_EASING) M.anchored = FALSE - M.density = TRUE M.able_to_speak = TRUE M.layer = MOB_LAYER - M.unfreeze() + REMOVE_TRAIT(M, TRAIT_IMMOBILIZED, CHLOROFORM_TRAIT) + REMOVE_TRAIT(M, TRAIT_UNDENSE, CHLOROFORM_TRAIT) QDEL_NULL(mask_item) diff --git a/code/datums/agents/tools/stimulants.dm b/code/datums/agents/tools/stimulants.dm index f4cd9c40f9ba..ff177a1310d2 100644 --- a/code/datums/agents/tools/stimulants.dm +++ b/code/datums/agents/tools/stimulants.dm @@ -6,7 +6,6 @@ pill_type_to_fill = /obj/item/reagent_container/pill/stimulant req_access = null - req_role = null /obj/item/storage/pill_bottle/ultrazine/antag/id_check(mob/user) if(!skillcheckexplicit(user, SKILL_ANTAG, SKILL_ANTAG_AGENT)) diff --git a/code/datums/agents/tools/stunbaton.dm b/code/datums/agents/tools/stunbaton.dm index b00f4e56f846..5e020aea8114 100644 --- a/code/datums/agents/tools/stunbaton.dm +++ b/code/datums/agents/tools/stunbaton.dm @@ -5,14 +5,3 @@ hitcost = 500 stunforce = 40 has_user_lock = FALSE - -/obj/item/weapon/baton/antag/check_user_auth(mob/user) - if(!skillcheckexplicit(user, SKILL_ANTAG, SKILL_ANTAG_AGENT)) - user.visible_message(SPAN_NOTICE("[src] beeps as [user] picks it up"), SPAN_DANGER("WARNING: Unauthorized user detected. Denying access...")) - user.apply_effect(10, DAZE) - user.visible_message(SPAN_WARNING("[src] beeps and sends a shock through [user]'s body!")) - deductcharge(hitcost) - - return FALSE - - return TRUE diff --git a/code/datums/agents/tools/tracker.dm b/code/datums/agents/tools/tracker.dm index 1d6d6d4801b4..2f3063afb78c 100644 --- a/code/datums/agents/tools/tracker.dm +++ b/code/datums/agents/tools/tracker.dm @@ -12,7 +12,7 @@ overlays.Cut() if(active && tracked_object) - overlays += icon(icon, "+tracker_arrow", get_dir(src, tracked_object)) + overlays += icon(icon, "+tracker_arrow", Get_Compass_Dir(src, tracked_object)) /obj/item/device/tracker/attack_self(mob/user) if(!skillcheckexplicit(user, SKILL_ANTAG, SKILL_ANTAG_AGENT)) @@ -48,12 +48,12 @@ return ..() /obj/item/device/tracker/proc/select_object(mob/user) - if(!LAZYLEN(objects_of_interest)) + if(!LAZYLEN(GLOB.objects_of_interest)) to_chat(user, SPAN_WARNING("There are nothing of interest to track.")) return var/list/object_choices = list() - for(var/obj/O in objects_of_interest) + for(var/obj/O in GLOB.objects_of_interest) var/z_level_to_compare_from = O.z if(istype(O.loc, /obj/structure/surface)) z_level_to_compare_from = O.loc.z diff --git a/code/datums/agents/tools/tranq_gun.dm b/code/datums/agents/tools/tranq_gun.dm index e812aa57037e..91f6f8c294b7 100644 --- a/code/datums/agents/tools/tranq_gun.dm +++ b/code/datums/agents/tools/tranq_gun.dm @@ -1,16 +1,15 @@ /obj/item/weapon/gun/pistol/tranquilizer name = "Tranquilizer gun" desc = "Contains horse tranquilizer darts. Useful at knocking people out." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon = 'icons/obj/items/weapons/guns/guns_by_faction/event.dmi' icon_state = "pk9r" item_state = "pk9r" current_mag = /obj/item/ammo_magazine/pistol/tranq - burst_amount = 1 /obj/item/weapon/gun/pistol/tranquilizer/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_6 + set_fire_delay(FIRE_DELAY_TIER_6) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_7 accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_10 @@ -29,7 +28,7 @@ name = "\improper Tranquilizer magazine (Horse Tranquilizer)" default_ammo = /datum/ammo/bullet/pistol/tranq caliber = ".22" - icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/event.dmi' icon_state = "pk-9_tranq" max_rounds = 5 gun_type = /obj/item/weapon/gun/pistol/tranquilizer diff --git a/code/datums/ammo/ammo.dm b/code/datums/ammo/ammo.dm new file mode 100644 index 000000000000..7a4006deee73 --- /dev/null +++ b/code/datums/ammo/ammo.dm @@ -0,0 +1,247 @@ +/datum/ammo + var/name = "generic bullet" + //Icon state when a human is permanently killed with it by execution/suicide. + var/headshot_state = null + var/icon = 'icons/obj/items/weapons/projectiles.dmi' + var/icon_state = "bullet" + /// The icon that is displayed when the bullet bounces off something. + var/ping = "ping_b" + /// When it deals damage. + var/sound_hit + /// When it's blocked by human armor. + var/sound_armor + /// When it misses someone. + var/sound_miss + /// When it bounces off something. + var/sound_bounce + /// When the bullet is absorbed by a xeno_shield + var/sound_shield_hit + /// Snipers use this to simulate poor accuracy at close ranges + var/accurate_range_min = 0 + /// How much the ammo scatters when burst fired, added to gun scatter, along with other mods + var/scatter = 0 + var/stamina_damage = 0 + /// This is the base damage of the bullet as it is fired + var/damage = 0 + /// BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here + var/damage_type = BRUTE + /// How much armor it ignores before calculations take place + var/penetration = 0 + /// The % chance it will imbed in a human + var/shrapnel_chance = 0 + /// The shrapnel type the ammo will embed, if the chance rolls + var/shrapnel_type = 0 + /// Type path of the extra projectiles + var/bonus_projectiles_type + /// How many extra projectiles it shoots out. Works kind of like firing on burst, but all of the projectiles travel together + var/bonus_projectiles_amount = 0 + /// Stun,knockdown,knockout,irradiate,stutter,eyeblur,drowsy,agony + var/debilitate[] = null + /// how much armor breaking will be done per point of penetration. This is for weapons that penetrate with their shape (like needle bullets) + var/pen_armor_punch = 0.5 + /// how much armor breaking is done by sheer weapon force. This is for big blunt weapons + var/damage_armor_punch = 0.5 + /// if we should play a special sound when firing. + var/sound_override = null + var/flags_ammo_behavior = NO_FLAGS + + /// This is added to the bullet's base accuracy. + var/accuracy = HIT_ACCURACY_TIER_1 + /// How much the accuracy varies when fired. // This REDUCES the lower bound of accuracy variance by 2%, to 96%. + var/accuracy_var_low = PROJECTILE_VARIANCE_TIER_9 + /// This INCREASES the upper bound of accuracy variance by 2%, to 107%. + var/accuracy_var_high = PROJECTILE_VARIANCE_TIER_9 + /// For most guns, this is where the bullet dramatically looses accuracy. Not for snipers though. + var/accurate_range = 6 + /// This will de-increment a counter on the bullet. + var/max_range = 22 + /// Same as with accuracy variance. + var/damage_var_low = PROJECTILE_VARIANCE_TIER_9 + /// This INCREASES the upper bound of damage variance by 2%, to 107%. + var/damage_var_high = PROJECTILE_VARIANCE_TIER_9 + /// How much damage the bullet loses per turf traveled after the effective range + var/damage_falloff = DAMAGE_FALLOFF_TIER_10 + /// How much damage the bullet loses per turf away before the effective range + var/damage_buildup = DAMAGE_BUILDUP_TIER_1 + /// What minimum range the ammo deals full damage, builds up the closer you get. 0 for no minimum. Added onto gun range as a modifier. + var/effective_range_min = EFFECTIVE_RANGE_OFF + /// What maximum range the ammo deals full damage, tapers off using damage_falloff after hitting this value. 0 for no maximum. Added onto gun range as a modifier. + var/effective_range_max = EFFECTIVE_RANGE_OFF + /// How fast the projectile moves. + var/shell_speed = AMMO_SPEED_TIER_1 + + var/handful_type = /obj/item/ammo_magazine/handful + var/handful_color + /// custom handful sprite, for shotgun shells or etc. + var/handful_state = "bullet" + /// so handfuls say 'buckshot shells' not 'shell' + var/multiple_handful_name + + /// Does this apply xenomorph behaviour delegate? + var/apply_delegate = TRUE + + /// An assoc list in the format list(/datum/element/bullet_trait_to_give = list(...args)) + /// that will be given to a projectile with the current ammo datum + var/list/list/traits_to_give + + var/flamer_reagent_type = /datum/reagent/napalm/ut + + /// The flicker that plays when a bullet hits a target. Usually red. Can be nulled so it doesn't show up at all. + var/hit_effect_color = "#FF0000" + +/datum/ammo/New() + set_bullet_traits() + +/datum/ammo/proc/on_bullet_generation(obj/projectile/generated_projectile, mob/bullet_generator) //NOT used on New(), applied to the projectiles. + return + +/// Populate traits_to_give in this proc +/datum/ammo/proc/set_bullet_traits() + return + +/datum/ammo/can_vv_modify() + return FALSE + +/datum/ammo/proc/do_at_half_range(obj/projectile/P) + SHOULD_NOT_SLEEP(TRUE) + return + +/datum/ammo/proc/on_embed(mob/embedded_mob, obj/limb/target_organ, silent = FALSE) + return + +/datum/ammo/proc/do_at_max_range(obj/projectile/P) + SHOULD_NOT_SLEEP(TRUE) + return + +/datum/ammo/proc/on_shield_block(mob/M, obj/projectile/P) //Does it do something special when shield blocked? Ie. a flare or grenade that still blows up. + return + +/datum/ammo/proc/on_hit_turf(turf/T, obj/projectile/P) //Special effects when hitting dense turfs. + SHOULD_NOT_SLEEP(TRUE) + return + +/datum/ammo/proc/on_hit_mob(mob/M, obj/projectile/P, mob/user) //Special effects when hitting mobs. + SHOULD_NOT_SLEEP(TRUE) + return + +///Special effects when pointblanking mobs. Ultimately called from /living/attackby(). Return TRUE to end the PB attempt. +/datum/ammo/proc/on_pointblank(mob/living/L, obj/projectile/P, mob/living/user, obj/item/weapon/gun/fired_from) + return + +/datum/ammo/proc/on_hit_obj(obj/O, obj/projectile/P) //Special effects when hitting objects. + SHOULD_NOT_SLEEP(TRUE) + return + +/datum/ammo/proc/on_near_target(turf/T, obj/projectile/P) //Special effects when passing near something. Range of things that triggers it is controlled by other ammo flags. + return 0 //return 0 means it flies even after being near something. Return 1 means it stops + +/datum/ammo/proc/knockback(mob/living/living_mob, obj/projectile/fired_projectile, max_range = 2) + if(!living_mob || living_mob == fired_projectile.firer) + return + if(fired_projectile.distance_travelled > max_range || living_mob.body_position == LYING_DOWN) + return //Two tiles away or more, basically. + + if(living_mob.mob_size >= MOB_SIZE_BIG) + return //Big xenos are not affected. + + shake_camera(living_mob, 3, 4) + knockback_effects(living_mob, fired_projectile) + slam_back(living_mob, fired_projectile) + +/datum/ammo/proc/slam_back(mob/living/living_mob, obj/projectile/fired_projectile) + /// Either knockback or slam them into an obstacle. + var/direction = Get_Compass_Dir(fired_projectile.z ? fired_projectile : fired_projectile.firer, living_mob) //More precise than get_dir. + if(!direction) //Same tile. + return + if(!step(living_mob, direction)) + living_mob.animation_attack_on(get_step(living_mob, direction)) + playsound(living_mob.loc, "punch", 25, 1) + living_mob.visible_message(SPAN_DANGER("[living_mob] slams into an obstacle!"), + isxeno(living_mob) ? SPAN_XENODANGER("You slam into an obstacle!") : SPAN_HIGHDANGER("You slam into an obstacle!"), null, 4, CHAT_TYPE_TAKING_HIT) + living_mob.apply_damage(MELEE_FORCE_TIER_2) + +///The applied effects for knockback(), overwrite to change slow/stun amounts for different ammo datums +/datum/ammo/proc/knockback_effects(mob/living/living_mob, obj/projectile/fired_projectile) + if(iscarbonsizexeno(living_mob)) + var/mob/living/carbon/xenomorph/target = living_mob + target.Stun(0.7) // Previous comment said they believed 0.7 was 0.9s and that the balance team approved this. Geez... + target.KnockDown(0.7) + target.apply_effect(1, SUPERSLOW) + target.apply_effect(2, SLOW) + to_chat(target, SPAN_XENODANGER("You are shaken by the sudden impact!")) + else + living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) + +/datum/ammo/proc/slowdown(mob/living/living_mob, obj/projectile/fired_projectile) + if(iscarbonsizexeno(living_mob)) + var/mob/living/carbon/xenomorph/target = living_mob + target.apply_effect(1, SUPERSLOW) + target.apply_effect(2, SLOW) + to_chat(target, SPAN_XENODANGER("You are slowed by the sudden impact!")) + else + living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) + +/datum/ammo/proc/pushback(mob/living/target_mob, obj/projectile/fired_projectile, max_range = 2) + if(!target_mob || target_mob == fired_projectile.firer || fired_projectile.distance_travelled > max_range || target_mob.body_position == LYING_DOWN) + return + + if(target_mob.mob_size >= MOB_SIZE_BIG) + return //too big to push + + to_chat(target_mob, isxeno(target_mob) ? SPAN_XENODANGER("You are pushed back by the sudden impact!") : SPAN_HIGHDANGER("You are pushed back by the sudden impact!")) + slam_back(target_mob, fired_projectile, max_range) + +/datum/ammo/proc/burst(atom/target, obj/projectile/P, damage_type = BRUTE, range = 1, damage_div = 2, show_message = SHOW_MESSAGE_VISIBLE) //damage_div says how much we divide damage + if(!target || !P) return + for(var/mob/living/carbon/M in orange(range,target)) + if(P.firer == M) + continue + if(show_message) + var/msg = "You are hit by backlash from \a [P.name]!" + M.visible_message(SPAN_DANGER("[M] is hit by backlash from \a [P.name]!"),isxeno(M) ? SPAN_XENODANGER("[msg]"):SPAN_HIGHDANGER("[msg]")) + var/damage = P.damage/damage_div + + var/mob/living/carbon/xenomorph/XNO = null + + if(isxeno(M)) + XNO = M + var/total_explosive_resistance = XNO.caste.xeno_explosion_resistance + XNO.armor_explosive_buff + damage = armor_damage_reduction(GLOB.xeno_explosive, damage, total_explosive_resistance , 60, 0, 0.5, XNO.armor_integrity) + var/armor_punch = armor_break_calculation(GLOB.xeno_explosive, damage, total_explosive_resistance, 60, 0, 0.5, XNO.armor_integrity) + XNO.apply_armorbreak(armor_punch) + + M.apply_damage(damage,damage_type) + + if(XNO && XNO.xeno_shields.len) + P.play_shielded_hit_effect(M) + else + P.play_hit_effect(M) + +/datum/ammo/proc/fire_bonus_projectiles(obj/projectile/original_P) + set waitfor = 0 + + var/turf/curloc = get_turf(original_P.shot_from) + var/initial_angle = Get_Angle(curloc, original_P.target_turf) + + for(var/i in 1 to bonus_projectiles_amount) //Want to run this for the number of bonus projectiles. + var/final_angle = initial_angle + + var/obj/projectile/P = new /obj/projectile(curloc, original_P.weapon_cause_data) + P.generate_bullet(GLOB.ammo_list[bonus_projectiles_type]) //No bonus damage or anything. + P.accuracy = round(P.accuracy * original_P.accuracy/initial(original_P.accuracy)) //if the gun changes the accuracy of the main projectile, it also affects the bonus ones. + original_P.give_bullet_traits(P) + + var/total_scatter_angle = P.scatter + final_angle += rand(-total_scatter_angle, total_scatter_angle) + var/turf/new_target = get_angle_target_turf(curloc, final_angle, 30) + + P.fire_at(new_target, original_P.firer, original_P.shot_from, P.ammo.max_range, P.ammo.shell_speed, original_P.original) //Fire! + +/datum/ammo/proc/drop_flame(turf/T, datum/cause_data/cause_data) // ~Art updated fire 20JAN17 + if(!istype(T)) + return + if(locate(/obj/flamer_fire) in T) + return + + var/datum/reagent/R = new flamer_reagent_type() + new /obj/flamer_fire(T, cause_data, R) diff --git a/code/datums/ammo/bullet/bullet.dm b/code/datums/ammo/bullet/bullet.dm new file mode 100644 index 000000000000..dadb644201df --- /dev/null +++ b/code/datums/ammo/bullet/bullet.dm @@ -0,0 +1,81 @@ +/* +//====== + Default Ammo +//====== +*/ +//Only when things screw up do we use this as a placeholder. +/datum/ammo/bullet + name = "default bullet" + icon_state = "bullet" + headshot_state = HEADSHOT_OVERLAY_LIGHT + flags_ammo_behavior = AMMO_BALLISTIC + sound_hit = "ballistic_hit" + sound_armor = "ballistic_armor" + sound_miss = "ballistic_miss" + sound_bounce = "ballistic_bounce" + sound_shield_hit = "ballistic_shield_hit" + + accurate_range_min = 0 + damage = 10 + shrapnel_chance = SHRAPNEL_CHANCE_TIER_1 + shrapnel_type = /obj/item/shard/shrapnel + shell_speed = AMMO_SPEED_TIER_4 + +/datum/ammo/bullet/proc/handle_battlefield_execution(datum/ammo/firing_ammo, mob/living/hit_mob, obj/projectile/firing_projectile, mob/living/user, obj/item/weapon/gun/fired_from) + SIGNAL_HANDLER + + if(!user || hit_mob == user || user.zone_selected != "head" || user.a_intent != INTENT_HARM || !ishuman_strict(hit_mob)) + return + + if(!skillcheck(user, SKILL_EXECUTION, SKILL_EXECUTION_TRAINED)) + to_chat(user, SPAN_DANGER("You don't know how to execute someone correctly.")) + return + + var/mob/living/carbon/human/execution_target = hit_mob + + if(execution_target.status_flags & PERMANENTLY_DEAD) + to_chat(user, SPAN_DANGER("[execution_target] has already been executed!")) + return + + INVOKE_ASYNC(src, PROC_REF(attempt_battlefield_execution), src, execution_target, firing_projectile, user, fired_from) + + return COMPONENT_CANCEL_AMMO_POINT_BLANK + +/datum/ammo/bullet/proc/attempt_battlefield_execution(datum/ammo/firing_ammo, mob/living/carbon/human/execution_target, obj/projectile/firing_projectile, mob/living/user, obj/item/weapon/gun/fired_from) + user.affected_message(execution_target, + SPAN_HIGHDANGER("You aim \the [fired_from] at [execution_target]'s head!"), + SPAN_HIGHDANGER("[user] aims \the [fired_from] directly at your head!"), + SPAN_DANGER("[user] aims \the [fired_from] at [execution_target]'s head!")) + + user.next_move += 1.1 SECONDS //PB has no click delay; readding it here to prevent people accidentally queuing up multiple executions. + + if(!do_after(user, 1 SECONDS, INTERRUPT_ALL, BUSY_ICON_HOSTILE) || !user.Adjacent(execution_target)) + fired_from.delete_bullet(firing_projectile, TRUE) + return + + if(!(fired_from.flags_gun_features & GUN_SILENCED)) + playsound(user, fired_from.fire_sound, fired_from.firesound_volume, FALSE) + else + playsound(user, fired_from.fire_sound, 25, FALSE) + + shake_camera(user, 1, 2) + + execution_target.apply_damage(damage * 3, BRUTE, "head", no_limb_loss = TRUE, permanent_kill = TRUE) //Apply gobs of damage and make sure they can't be revived later... + execution_target.apply_damage(200, OXY) //...fill out the rest of their health bar with oxyloss... + execution_target.death(create_cause_data("execution", user)) //...make certain they're properly dead... + shake_camera(execution_target, 3, 4) + execution_target.update_headshot_overlay(headshot_state) //...and add a gory headshot overlay. + + execution_target.visible_message(SPAN_HIGHDANGER(uppertext("[execution_target] WAS EXECUTED!")), \ + SPAN_HIGHDANGER("You WERE EXECUTED!")) + + user.count_niche_stat(STATISTICS_NICHE_EXECUTION, 1, firing_projectile.weapon_cause_data?.cause_name) + + var/area/execution_area = get_area(execution_target) + + msg_admin_attack(FONT_SIZE_HUGE("[key_name(usr)] has battlefield executed [key_name(execution_target)] in [get_area(usr)] ([usr.loc.x],[usr.loc.y],[usr.loc.z])."), usr.loc.x, usr.loc.y, usr.loc.z) + log_attack("[key_name(usr)] battlefield executed [key_name(execution_target)] at [execution_area.name].") + + if(flags_ammo_behavior & AMMO_EXPLOSIVE) + execution_target.gib() + diff --git a/code/datums/ammo/bullet/lever_action.dm b/code/datums/ammo/bullet/lever_action.dm new file mode 100644 index 000000000000..2770231b6811 --- /dev/null +++ b/code/datums/ammo/bullet/lever_action.dm @@ -0,0 +1,72 @@ +/* +//====== + Lever Action +//====== +*/ + +/datum/ammo/bullet/lever_action + name = "lever-action bullet" + + damage = 80 + penetration = 0 + accuracy = HIT_ACCURACY_TIER_1 + shell_speed = AMMO_SPEED_TIER_6 + accurate_range = 14 + handful_state = "lever_action_bullet" + +//unused and not working. need to refactor MD code. Unobtainable. +//intended mechanic is to have xenos hit with it show up very frequently on any MDs around +/datum/ammo/bullet/lever_action/tracker + name = "tracking lever-action bullet" + icon_state = "redbullet" + damage = 70 + penetration = ARMOR_PENETRATION_TIER_3 + accuracy = HIT_ACCURACY_TIER_1 + handful_state = "tracking_lever_action_bullet" + +/datum/ammo/bullet/lever_action/tracker/on_hit_mob(mob/M, obj/projectile/P, mob/user) + //SEND_SIGNAL(user, COMSIG_BULLET_TRACKING, user, M) + M.visible_message(SPAN_DANGER("You hear a faint beep under [M]'s [M.mob_size > MOB_SIZE_HUMAN ? "chitin" : "skin"].")) + +/datum/ammo/bullet/lever_action/training + name = "lever-action blank" + icon_state = "blank" + damage = 70 //blanks CAN hurt you if shot very close + penetration = 0 + accuracy = HIT_ACCURACY_TIER_1 + damage_falloff = DAMAGE_FALLOFF_BLANK //not much, though (comparatively) + shell_speed = AMMO_SPEED_TIER_5 + handful_state = "training_lever_action_bullet" + +//unused, and unobtainable... for now +/datum/ammo/bullet/lever_action/marksman + name = "marksman lever-action bullet" + shrapnel_chance = 0 + damage_falloff = 0 + accurate_range = 12 + damage = 70 + penetration = ARMOR_PENETRATION_TIER_6 + shell_speed = AMMO_SPEED_TIER_6 + handful_state = "marksman_lever_action_bullet" + +/datum/ammo/bullet/lever_action/xm88 + name = ".458 SOCOM round" + + damage = 80 + penetration = ARMOR_PENETRATION_TIER_2 + accuracy = HIT_ACCURACY_TIER_1 + shell_speed = AMMO_SPEED_TIER_6 + accurate_range = 14 + handful_state = "boomslang_bullet" + +/datum/ammo/bullet/lever_action/xm88/pen20 + penetration = ARMOR_PENETRATION_TIER_4 + +/datum/ammo/bullet/lever_action/xm88/pen30 + penetration = ARMOR_PENETRATION_TIER_6 + +/datum/ammo/bullet/lever_action/xm88/pen40 + penetration = ARMOR_PENETRATION_TIER_8 + +/datum/ammo/bullet/lever_action/xm88/pen50 + penetration = ARMOR_PENETRATION_TIER_10 diff --git a/code/datums/ammo/bullet/pistol.dm b/code/datums/ammo/bullet/pistol.dm new file mode 100644 index 000000000000..8be63b0a15af --- /dev/null +++ b/code/datums/ammo/bullet/pistol.dm @@ -0,0 +1,265 @@ +/* +//====== + Pistol Ammo +//====== +*/ + +// Used by M4A3, M4A3 Custom and B92FS +/datum/ammo/bullet/pistol + name = "pistol bullet" + headshot_state = HEADSHOT_OVERLAY_MEDIUM + accuracy = -HIT_ACCURACY_TIER_3 + accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 + damage = 40 + penetration= ARMOR_PENETRATION_TIER_2 + shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 + +/datum/ammo/bullet/pistol/tiny + name = "light pistol bullet" + +/datum/ammo/bullet/pistol/tranq + name = "tranquilizer bullet" + flags_ammo_behavior = AMMO_BALLISTIC|AMMO_IGNORE_RESIST + stamina_damage = 30 + damage = 15 + +//2020 rebalance: is supposed to counter runners and lurkers, dealing high damage to the only castes with no armor. +//Limited by its lack of versatility and lower supply, so marines finally have an answer for flanker castes that isn't just buckshot. + +/datum/ammo/bullet/pistol/hollow + name = "hollowpoint pistol bullet" + + damage = 55 //hollowpoint is strong + penetration = 0 //hollowpoint can't pierce armor! + shrapnel_chance = SHRAPNEL_CHANCE_TIER_3 //hollowpoint causes shrapnel + +// Used by M4A3 AP and mod88 +/datum/ammo/bullet/pistol/ap + name = "armor-piercing pistol bullet" + + damage = 25 + accuracy = HIT_ACCURACY_TIER_2 + penetration= ARMOR_PENETRATION_TIER_8 + shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 + +/datum/ammo/bullet/pistol/ap/penetrating + name = "wall-penetrating pistol bullet" + shrapnel_chance = 0 + + damage = 30 + penetration = ARMOR_PENETRATION_TIER_10 + +/datum/ammo/bullet/pistol/ap/penetrating/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating) + )) + +/datum/ammo/bullet/pistol/ap/toxin + name = "toxic pistol bullet" + var/acid_per_hit = 10 + var/organic_damage_mult = 3 + +/datum/ammo/bullet/pistol/ap/toxin/on_hit_mob(mob/M, obj/projectile/P) + . = ..() + M.AddComponent(/datum/component/toxic_buildup, acid_per_hit) + +/datum/ammo/bullet/pistol/ap/toxin/on_hit_turf(turf/T, obj/projectile/P) + . = ..() + if(T.flags_turf & TURF_ORGANIC) + P.damage *= organic_damage_mult + +/datum/ammo/bullet/pistol/ap/toxin/on_hit_obj(obj/O, obj/projectile/P) + . = ..() + if(O.flags_obj & OBJ_ORGANIC) + P.damage *= organic_damage_mult + +/datum/ammo/bullet/pistol/le + name = "armor-shredding pistol bullet" + + damage = 15 + penetration = ARMOR_PENETRATION_TIER_4 + pen_armor_punch = 3 + +/datum/ammo/bullet/pistol/rubber + name = "rubber pistol bullet" + sound_override = 'sound/weapons/gun_c99.ogg' + + damage = 0 + stamina_damage = 25 + shrapnel_chance = 0 + +// Reskinned rubber bullet used for the ES-4 CL pistol. +/datum/ammo/bullet/pistol/rubber/stun + name = "stun pistol bullet" + sound_override = null + +// Used by M1911, Deagle and KT-42 +/datum/ammo/bullet/pistol/heavy + name = "heavy pistol bullet" + headshot_state = HEADSHOT_OVERLAY_MEDIUM + accuracy = -HIT_ACCURACY_TIER_3 + accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 + damage = 55 + penetration = ARMOR_PENETRATION_TIER_3 + shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 + +/datum/ammo/bullet/pistol/heavy/super //Commander's variant + name = ".50 heavy pistol bullet" + damage = 60 + damage_var_low = PROJECTILE_VARIANCE_TIER_8 + damage_var_high = PROJECTILE_VARIANCE_TIER_6 + penetration = ARMOR_PENETRATION_TIER_4 + +/datum/ammo/bullet/pistol/heavy/super/highimpact + name = ".50 high-impact pistol bullet" + penetration = ARMOR_PENETRATION_TIER_1 + debilitate = list(0,1.5,0,0,0,1,0,0) + flags_ammo_behavior = AMMO_BALLISTIC + +/datum/ammo/bullet/pistol/heavy/super/highimpact/ap + name = ".50 high-impact armor piercing pistol bullet" + penetration = ARMOR_PENETRATION_TIER_10 + damage = 45 + +/datum/ammo/bullet/pistol/heavy/super/highimpact/upp + name = "high-impact pistol bullet" + sound_override = 'sound/weapons/gun_DE50.ogg' + penetration = ARMOR_PENETRATION_TIER_6 + debilitate = list(0,1.5,0,0,0,1,0,0) + flags_ammo_behavior = AMMO_BALLISTIC + +/datum/ammo/bullet/pistol/heavy/super/highimpact/New() + ..() + RegisterSignal(src, COMSIG_AMMO_POINT_BLANK, PROC_REF(handle_battlefield_execution)) + +/datum/ammo/bullet/pistol/heavy/super/highimpact/on_hit_mob(mob/M, obj/projectile/P) + knockback(M, P, 4) + +/datum/ammo/bullet/pistol/deagle + name = ".50 heavy pistol bullet" + damage = 45 + headshot_state = HEADSHOT_OVERLAY_HEAVY + accuracy = -HIT_ACCURACY_TIER_3 + accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 + penetration = ARMOR_PENETRATION_TIER_6 + shrapnel_chance = SHRAPNEL_CHANCE_TIER_5 + +/datum/ammo/bullet/pistol/incendiary + name = "incendiary pistol bullet" + damage_type = BURN + shrapnel_chance = 0 + flags_ammo_behavior = AMMO_BALLISTIC + + accuracy = HIT_ACCURACY_TIER_3 + damage = 20 + +/datum/ammo/bullet/pistol/incendiary/set_bullet_traits() + ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +// Used by the hipower +// I know that the 'high power' in the name is supposed to mean its 'impressive' magazine capacity +// but this is CM, half our guns have baffling misconceptions and mistakes (how do you grab the type-71?) so it's on-brand. +// maybe in the far flung future of 2280 someone screwed up the design. + +/datum/ammo/bullet/pistol/highpower + name = "high-powered pistol bullet" + headshot_state = HEADSHOT_OVERLAY_MEDIUM + + accuracy = HIT_ACCURACY_TIER_3 + damage = 36 + penetration = ARMOR_PENETRATION_TIER_5 + damage_falloff = DAMAGE_FALLOFF_TIER_7 + +// Used by VP78 and Auto 9 +/datum/ammo/bullet/pistol/squash + name = "squash-head pistol bullet" + headshot_state = HEADSHOT_OVERLAY_MEDIUM + debilitate = list(0,0,0,0,0,0,0,2) + + accuracy = HIT_ACCURACY_TIER_4 + damage = 45 + penetration= ARMOR_PENETRATION_TIER_6 + shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 + damage_falloff = DAMAGE_FALLOFF_TIER_6 //"VP78 - the only pistol viable as a primary."-Vampmare, probably. + +/datum/ammo/bullet/pistol/squash/toxin + name = "toxic squash-head pistol bullet" + var/acid_per_hit = 10 + var/organic_damage_mult = 3 + +/datum/ammo/bullet/pistol/squash/toxin/on_hit_mob(mob/M, obj/projectile/P) + . = ..() + M.AddComponent(/datum/component/toxic_buildup, acid_per_hit) + +/datum/ammo/bullet/pistol/squash/toxin/on_hit_turf(turf/T, obj/projectile/P) + . = ..() + if(T.flags_turf & TURF_ORGANIC) + P.damage *= organic_damage_mult + +/datum/ammo/bullet/pistol/squash/toxin/on_hit_obj(obj/O, obj/projectile/P) + . = ..() + if(O.flags_obj & OBJ_ORGANIC) + P.damage *= organic_damage_mult + +/datum/ammo/bullet/pistol/squash/penetrating + name = "wall-penetrating squash-head pistol bullet" + shrapnel_chance = 0 + penetration = ARMOR_PENETRATION_TIER_10 + +/datum/ammo/bullet/pistol/squash/penetrating/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating) + )) + +/datum/ammo/bullet/pistol/squash/incendiary + name = "incendiary squash-head pistol bullet" + damage_type = BURN + shrapnel_chance = 0 + flags_ammo_behavior = AMMO_BALLISTIC + accuracy = HIT_ACCURACY_TIER_3 + damage = 35 + +/datum/ammo/bullet/pistol/squash/incendiary/set_bullet_traits() + ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + + +/datum/ammo/bullet/pistol/mankey + name = "live monkey" + icon_state = "monkey1" + ping = null //no bounce off. + damage_type = BURN + debilitate = list(4,4,0,0,0,0,0,0) + flags_ammo_behavior = AMMO_IGNORE_ARMOR + + damage = 15 + damage_var_high = PROJECTILE_VARIANCE_TIER_5 + shell_speed = AMMO_SPEED_TIER_2 + +/datum/ammo/bullet/pistol/mankey/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +/datum/ammo/bullet/pistol/mankey/on_hit_mob(mob/M,obj/projectile/P) + if(P && P.loc && !M.stat && !istype(M,/mob/living/carbon/human/monkey)) + P.visible_message(SPAN_DANGER("The [src] chimpers furiously!")) + new /mob/living/carbon/human/monkey(P.loc) + +/datum/ammo/bullet/pistol/smart + name = "smartpistol bullet" + flags_ammo_behavior = AMMO_BALLISTIC + + accuracy = HIT_ACCURACY_TIER_8 + damage = 30 + penetration = 20 + shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 + diff --git a/code/datums/ammo/bullet/revolver.dm b/code/datums/ammo/bullet/revolver.dm new file mode 100644 index 000000000000..633bf3e2f7ff --- /dev/null +++ b/code/datums/ammo/bullet/revolver.dm @@ -0,0 +1,180 @@ +/* +//====== + Revolver Ammo +//====== +*/ + +/datum/ammo/bullet/revolver + name = "revolver bullet" + headshot_state = HEADSHOT_OVERLAY_MEDIUM + + damage = 55 + penetration = ARMOR_PENETRATION_TIER_1 + accuracy = HIT_ACCURACY_TIER_1 + +/datum/ammo/bullet/revolver/marksman + name = "marksman revolver bullet" + + shrapnel_chance = 0 + damage_falloff = 0 + accurate_range = 12 + penetration = ARMOR_PENETRATION_TIER_7 + +/datum/ammo/bullet/revolver/heavy + name = "heavy revolver bullet" + + damage = 35 + penetration = ARMOR_PENETRATION_TIER_4 + accuracy = HIT_ACCURACY_TIER_3 + +/datum/ammo/bullet/revolver/heavy/on_hit_mob(mob/entity, obj/projectile/bullet) + slowdown(entity, bullet) + pushback(entity, bullet, 4) + +/datum/ammo/bullet/revolver/incendiary + name = "incendiary revolver bullet" + damage = 40 + +/datum/ammo/bullet/revolver/incendiary/set_bullet_traits() + ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +/datum/ammo/bullet/revolver/marksman/toxin + name = "toxic revolver bullet" + var/acid_per_hit = 10 + var/organic_damage_mult = 3 + +/datum/ammo/bullet/revolver/marksman/toxin/on_hit_mob(mob/M, obj/projectile/P) + . = ..() + M.AddComponent(/datum/component/toxic_buildup, acid_per_hit) + +/datum/ammo/bullet/revolver/marksman/toxin/on_hit_turf(turf/T, obj/projectile/P) + . = ..() + if(T.flags_turf & TURF_ORGANIC) + P.damage *= organic_damage_mult + +/datum/ammo/bullet/revolver/marksman/toxin/on_hit_obj(obj/O, obj/projectile/P) + . = ..() + if(O.flags_obj & OBJ_ORGANIC) + P.damage *= organic_damage_mult + +/datum/ammo/bullet/revolver/penetrating + name = "wall-penetrating revolver bullet" + shrapnel_chance = 0 + + penetration = ARMOR_PENETRATION_TIER_10 + +/datum/ammo/bullet/revolver/penetrating/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating) + )) + +/datum/ammo/bullet/revolver/upp + name = "heavy revolver bullet" + headshot_state = HEADSHOT_OVERLAY_MEDIUM + penetration = ARMOR_PENETRATION_TIER_4 + damage = 70 + + +/datum/ammo/bullet/revolver/upp/shrapnel + name = "shrapnel shot" + headshot_state = HEADSHOT_OVERLAY_HEAVY //Gol-dang shotgun blow your fething head off. + debilitate = list(0,0,0,0,0,0,0,0) + icon_state = "shrapnelshot" + handful_state = "shrapnel" + bonus_projectiles_type = /datum/ammo/bullet/revolver/upp/shrapnel_bits + + max_range = 6 + damage = 40 // + TIER_4 * 3 + damage_falloff = DAMAGE_FALLOFF_TIER_7 + penetration = ARMOR_PENETRATION_TIER_8 + bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_3 + shrapnel_chance = 100 + shrapnel_type = /obj/item/shard/shrapnel/upp + //roughly 90 or so damage with the additional shrapnel, around 130 in total with primary round + +/datum/ammo/bullet/revolver/upp/shrapnel/on_hit_mob(mob/M, obj/projectile/P) + pushback(M, P, 1) + +/datum/ammo/bullet/revolver/upp/shrapnel_bits + name = "small shrapnel" + icon_state = "shrapnelshot_bit" + + max_range = 6 + damage = 30 + penetration = ARMOR_PENETRATION_TIER_4 + scatter = SCATTER_AMOUNT_TIER_1 + bonus_projectiles_amount = 0 + shrapnel_type = /obj/item/shard/shrapnel/upp/bits + +/datum/ammo/bullet/revolver/small + name = "small revolver bullet" + headshot_state = HEADSHOT_OVERLAY_LIGHT + + damage = 45 + + penetration = ARMOR_PENETRATION_TIER_3 + +/datum/ammo/bullet/revolver/small/hollowpoint + name = "small hollowpoint revolver bullet" + headshot_state = HEADSHOT_OVERLAY_MEDIUM + + damage = 75 // way too strong because it's hard to make a good balance between HP and normal with this system, but the damage falloff is really strong + penetration = 0 + damage_falloff = DAMAGE_FALLOFF_TIER_6 + +/datum/ammo/bullet/revolver/mateba + name = ".454 heavy revolver bullet" + + damage = 60 + damage_var_low = PROJECTILE_VARIANCE_TIER_8 + damage_var_high = PROJECTILE_VARIANCE_TIER_6 + penetration = ARMOR_PENETRATION_TIER_4 + +/datum/ammo/bullet/revolver/mateba/highimpact + name = ".454 heavy high-impact revolver bullet" + debilitate = list(0,2,0,0,0,1,0,0) + penetration = ARMOR_PENETRATION_TIER_1 + flags_ammo_behavior = AMMO_BALLISTIC + +/datum/ammo/bullet/revolver/mateba/highimpact/ap + name = ".454 heavy high-impact armor piercing revolver bullet" + penetration = ARMOR_PENETRATION_TIER_10 + damage = 45 + +/datum/ammo/bullet/revolver/mateba/highimpact/New() + ..() + RegisterSignal(src, COMSIG_AMMO_POINT_BLANK, PROC_REF(handle_battlefield_execution)) + +/datum/ammo/bullet/revolver/mateba/highimpact/on_hit_mob(mob/M, obj/projectile/P) + knockback(M, P, 4) + +/datum/ammo/bullet/revolver/mateba/highimpact/explosive //if you ever put this in normal gameplay, i am going to scream + name = ".454 heavy explosive revolver bullet" + damage = 100 + damage_var_low = PROJECTILE_VARIANCE_TIER_10 + damage_var_high = PROJECTILE_VARIANCE_TIER_1 + penetration = ARMOR_PENETRATION_TIER_10 + flags_ammo_behavior = AMMO_EXPLOSIVE|AMMO_BALLISTIC + +/datum/ammo/bullet/revolver/mateba/highimpact/explosive/on_hit_mob(mob/M, obj/projectile/P) + ..() + cell_explosion(get_turf(M), 120, 30, EXPLOSION_FALLOFF_SHAPE_LINEAR, P.dir, P.weapon_cause_data) + +/datum/ammo/bullet/revolver/mateba/highimpact/explosive/on_hit_obj(obj/O, obj/projectile/P) + ..() + cell_explosion(get_turf(O), 120, 30, EXPLOSION_FALLOFF_SHAPE_LINEAR, P.dir, P.weapon_cause_data) + +/datum/ammo/bullet/revolver/mateba/highimpact/explosive/on_hit_turf(turf/T, obj/projectile/P) + ..() + cell_explosion(T, 120, 30, EXPLOSION_FALLOFF_SHAPE_LINEAR, P.dir, P.weapon_cause_data) + +/datum/ammo/bullet/revolver/webley //Mateba round without the knockdown. + name = ".455 Webley bullet" + damage = 60 + damage_var_low = PROJECTILE_VARIANCE_TIER_8 + damage_var_high = PROJECTILE_VARIANCE_TIER_6 + penetration = ARMOR_PENETRATION_TIER_2 diff --git a/code/datums/ammo/bullet/rifle.dm b/code/datums/ammo/bullet/rifle.dm new file mode 100644 index 000000000000..0be6f1db8ff4 --- /dev/null +++ b/code/datums/ammo/bullet/rifle.dm @@ -0,0 +1,211 @@ +/* +//====== + Rifle Ammo +//====== +*/ + +/datum/ammo/bullet/rifle + name = "rifle bullet" + headshot_state = HEADSHOT_OVERLAY_MEDIUM + + damage = 40 + penetration = ARMOR_PENETRATION_TIER_1 + accurate_range = 16 + accuracy = HIT_ACCURACY_TIER_4 + scatter = SCATTER_AMOUNT_TIER_10 + shell_speed = AMMO_SPEED_TIER_6 + effective_range_max = 7 + damage_falloff = DAMAGE_FALLOFF_TIER_7 + max_range = 24 //So S8 users don't have their bullets magically disappaer at 22 tiles (S8 can see 24 tiles) + +/datum/ammo/bullet/rifle/holo_target + name = "holo-targeting rifle bullet" + damage = 30 + var/holo_stacks = 10 + +/datum/ammo/bullet/rifle/holo_target/on_hit_mob(mob/M, obj/projectile/P) + . = ..() + M.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time) + +/datum/ammo/bullet/rifle/holo_target/hunting + name = "holo-targeting hunting bullet" + damage = 25 + holo_stacks = 15 + +/datum/ammo/bullet/rifle/explosive + name = "explosive rifle bullet" + + damage = 25 + accurate_range = 22 + accuracy = 0 + shell_speed = AMMO_SPEED_TIER_4 + damage_falloff = DAMAGE_FALLOFF_TIER_9 + +/datum/ammo/bullet/rifle/explosive/on_hit_mob(mob/M, obj/projectile/P) + cell_explosion(get_turf(M), 80, 40, EXPLOSION_FALLOFF_SHAPE_LINEAR, P.dir, P.weapon_cause_data) + +/datum/ammo/bullet/rifle/explosive/on_hit_obj(obj/O, obj/projectile/P) + cell_explosion(get_turf(O), 80, 40, EXPLOSION_FALLOFF_SHAPE_LINEAR, P.dir, P.weapon_cause_data) + +/datum/ammo/bullet/rifle/explosive/on_hit_turf(turf/T, obj/projectile/P) + if(T.density) + cell_explosion(T, 80, 40, EXPLOSION_FALLOFF_SHAPE_LINEAR, P.dir, P.weapon_cause_data) + +/datum/ammo/bullet/rifle/ap + name = "armor-piercing rifle bullet" + + damage = 30 + penetration = ARMOR_PENETRATION_TIER_8 + +// Basically AP but better. Focused at taking out armour temporarily +/datum/ammo/bullet/rifle/ap/toxin + name = "toxic rifle bullet" + var/acid_per_hit = 7 + var/organic_damage_mult = 3 + +/datum/ammo/bullet/rifle/ap/toxin/on_hit_mob(mob/M, obj/projectile/P) + . = ..() + M.AddComponent(/datum/component/toxic_buildup, acid_per_hit) + +/datum/ammo/bullet/rifle/ap/toxin/on_hit_turf(turf/T, obj/projectile/P) + . = ..() + if(T.flags_turf & TURF_ORGANIC) + P.damage *= organic_damage_mult + +/datum/ammo/bullet/rifle/ap/toxin/on_hit_obj(obj/O, obj/projectile/P) + . = ..() + if(O.flags_obj & OBJ_ORGANIC) + P.damage *= organic_damage_mult + + +/datum/ammo/bullet/rifle/ap/penetrating + name = "wall-penetrating rifle bullet" + shrapnel_chance = 0 + + damage = 35 + penetration = ARMOR_PENETRATION_TIER_10 + +/datum/ammo/bullet/rifle/ap/penetrating/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating) + )) + +/datum/ammo/bullet/rifle/le + name = "armor-shredding rifle bullet" + + damage = 20 + penetration = ARMOR_PENETRATION_TIER_4 + pen_armor_punch = 5 + +/datum/ammo/bullet/rifle/heap + name = "high-explosive armor-piercing rifle bullet" + + headshot_state = HEADSHOT_OVERLAY_HEAVY + damage = 55//big damage, doesn't actually blow up because thats stupid. + penetration = ARMOR_PENETRATION_TIER_8 + +/datum/ammo/bullet/rifle/rubber + name = "rubber rifle bullet" + sound_override = 'sound/weapons/gun_c99.ogg' + + damage = 0 + stamina_damage = 15 + shrapnel_chance = 0 + +/datum/ammo/bullet/rifle/incendiary + name = "incendiary rifle bullet" + damage_type = BURN + shrapnel_chance = 0 + flags_ammo_behavior = AMMO_BALLISTIC + + damage = 30 + shell_speed = AMMO_SPEED_TIER_4 + accuracy = -HIT_ACCURACY_TIER_2 + damage_falloff = DAMAGE_FALLOFF_TIER_10 + +/datum/ammo/bullet/rifle/incendiary/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +/datum/ammo/bullet/rifle/m4ra + name = "A19 high velocity bullet" + shrapnel_chance = 0 + damage_falloff = 0 + flags_ammo_behavior = AMMO_BALLISTIC + accurate_range_min = 4 + + damage = 55 + scatter = -SCATTER_AMOUNT_TIER_8 + penetration= ARMOR_PENETRATION_TIER_7 + shell_speed = AMMO_SPEED_TIER_6 + +/datum/ammo/bullet/rifle/m4ra/incendiary + name = "A19 high velocity incendiary bullet" + flags_ammo_behavior = AMMO_BALLISTIC + + damage = 40 + accuracy = HIT_ACCURACY_TIER_4 + scatter = -SCATTER_AMOUNT_TIER_8 + penetration= ARMOR_PENETRATION_TIER_5 + shell_speed = AMMO_SPEED_TIER_6 + +/datum/ammo/bullet/rifle/m4ra/incendiary/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +/datum/ammo/bullet/rifle/m4ra/impact + name = "A19 high velocity impact bullet" + flags_ammo_behavior = AMMO_BALLISTIC + + damage = 40 + accuracy = -HIT_ACCURACY_TIER_2 + scatter = -SCATTER_AMOUNT_TIER_8 + penetration = ARMOR_PENETRATION_TIER_10 + shell_speed = AMMO_SPEED_TIER_6 + +/datum/ammo/bullet/rifle/m4ra/impact/on_hit_mob(mob/M, obj/projectile/P) + knockback(M, P, 32) // Can knockback basically at max range + +/datum/ammo/bullet/rifle/m4ra/impact/knockback_effects(mob/living/living_mob, obj/projectile/fired_projectile) + if(iscarbonsizexeno(living_mob)) + var/mob/living/carbon/xenomorph/target = living_mob + to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!")) + target.KnockDown(0.5) // purely for visual effect, noone actually cares + target.Stun(0.5) + target.apply_effect(2, SUPERSLOW) + target.apply_effect(5, SLOW) + else + if(!isyautja(living_mob)) //Not predators. + living_mob.apply_effect(1, SUPERSLOW) + living_mob.apply_effect(2, SLOW) + to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!")) + living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) + +/datum/ammo/bullet/rifle/mar40 + name = "heavy rifle bullet" + + damage = 55 + +/datum/ammo/bullet/rifle/type71 + name = "heavy rifle bullet" + + damage = 55 + penetration = ARMOR_PENETRATION_TIER_3 + +/datum/ammo/bullet/rifle/type71/ap + name = "heavy armor-piercing rifle bullet" + + damage = 40 + penetration = ARMOR_PENETRATION_TIER_10 + +/datum/ammo/bullet/rifle/type71/heap + name = "heavy high-explosive armor-piercing rifle bullet" + + headshot_state = HEADSHOT_OVERLAY_HEAVY + damage = 65 + penetration = ARMOR_PENETRATION_TIER_10 diff --git a/code/datums/ammo/bullet/shotgun.dm b/code/datums/ammo/bullet/shotgun.dm new file mode 100644 index 000000000000..e71114dc24de --- /dev/null +++ b/code/datums/ammo/bullet/shotgun.dm @@ -0,0 +1,392 @@ +/* +//====== + Shotgun Ammo +//====== +*/ + +/datum/ammo/bullet/shotgun + headshot_state = HEADSHOT_OVERLAY_HEAVY + +/datum/ammo/bullet/shotgun/slug + name = "shotgun slug" + handful_state = "slug_shell" + + accurate_range = 6 + max_range = 8 + damage = 70 + penetration = ARMOR_PENETRATION_TIER_4 + damage_armor_punch = 2 + handful_state = "slug_shell" + +/datum/ammo/bullet/shotgun/slug/on_hit_mob(mob/M,obj/projectile/P) + knockback(M, P, 6) + +/datum/ammo/bullet/shotgun/slug/knockback_effects(mob/living/living_mob, obj/projectile/fired_projectile) + if(iscarbonsizexeno(living_mob)) + var/mob/living/carbon/xenomorph/target = living_mob + to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!")) + target.KnockDown(0.5) // If you ask me the KD should be left out, but players like their visual cues + target.Stun(0.5) + target.apply_effect(1, SUPERSLOW) + target.apply_effect(3, SLOW) + else + if(!isyautja(living_mob)) //Not predators. + living_mob.apply_effect(1, SUPERSLOW) + living_mob.apply_effect(2, SLOW) + to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!")) + living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) + +/datum/ammo/bullet/shotgun/beanbag + name = "beanbag slug" + headshot_state = HEADSHOT_OVERLAY_LIGHT //It's not meant to kill people... but if you put it in your mouth, it will. + handful_state = "beanbag_slug" + icon_state = "beanbag" + flags_ammo_behavior = AMMO_BALLISTIC|AMMO_IGNORE_RESIST + sound_override = 'sound/weapons/gun_shotgun_riot.ogg' + + max_range = 12 + shrapnel_chance = 0 + damage = 0 + stamina_damage = 45 + accuracy = HIT_ACCURACY_TIER_3 + shell_speed = AMMO_SPEED_TIER_3 + handful_state = "beanbag_slug" + +/datum/ammo/bullet/shotgun/beanbag/on_hit_mob(mob/M, obj/projectile/P) + if(!M || M == P.firer) return + if(ishuman(M)) + var/mob/living/carbon/human/H = M + shake_camera(H, 2, 1) + + +/datum/ammo/bullet/shotgun/incendiary + name = "incendiary slug" + handful_state = "incendiary_slug" + damage_type = BURN + flags_ammo_behavior = AMMO_BALLISTIC + + accuracy = -HIT_ACCURACY_TIER_2 + max_range = 12 + damage = 55 + penetration= ARMOR_PENETRATION_TIER_1 + handful_state = "incendiary_slug" + +/datum/ammo/bullet/shotgun/incendiary/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +/datum/ammo/bullet/shotgun/incendiary/on_hit_mob(mob/M,obj/projectile/P) + burst(get_turf(M),P,damage_type) + knockback(M,P) + +/datum/ammo/bullet/shotgun/incendiary/on_hit_obj(obj/O,obj/projectile/P) + burst(get_turf(P),P,damage_type) + +/datum/ammo/bullet/shotgun/incendiary/on_hit_turf(turf/T,obj/projectile/P) + burst(get_turf(T),P,damage_type) + + +/datum/ammo/bullet/shotgun/flechette + name = "flechette shell" + icon_state = "flechette" + handful_state = "flechette_shell" + bonus_projectiles_type = /datum/ammo/bullet/shotgun/flechette_spread + + accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 + max_range = 12 + damage = 30 + damage_var_low = PROJECTILE_VARIANCE_TIER_8 + damage_var_high = PROJECTILE_VARIANCE_TIER_8 + penetration = ARMOR_PENETRATION_TIER_7 + bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_3 + handful_state = "flechette_shell" + multiple_handful_name = TRUE + +/datum/ammo/bullet/shotgun/flechette_spread + name = "additional flechette" + icon_state = "flechette" + + accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 + max_range = 12 + damage = 30 + damage_var_low = PROJECTILE_VARIANCE_TIER_8 + damage_var_high = PROJECTILE_VARIANCE_TIER_8 + penetration = ARMOR_PENETRATION_TIER_7 + scatter = SCATTER_AMOUNT_TIER_5 + +/datum/ammo/bullet/shotgun/buckshot + name = "buckshot shell" + icon_state = "buckshot" + handful_state = "buckshot_shell" + multiple_handful_name = TRUE + bonus_projectiles_type = /datum/ammo/bullet/shotgun/spread + + accuracy_var_low = PROJECTILE_VARIANCE_TIER_5 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_5 + accurate_range = 4 + max_range = 4 + damage = 65 + damage_var_low = PROJECTILE_VARIANCE_TIER_8 + damage_var_high = PROJECTILE_VARIANCE_TIER_8 + penetration = ARMOR_PENETRATION_TIER_1 + bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_3 + shell_speed = AMMO_SPEED_TIER_2 + damage_armor_punch = 0 + pen_armor_punch = 0 + handful_state = "buckshot_shell" + multiple_handful_name = TRUE + +/datum/ammo/bullet/shotgun/buckshot/incendiary + name = "incendiary buckshot shell" + handful_state = "incen_buckshot" + handful_type = /obj/item/ammo_magazine/handful/shotgun/buckshot/incendiary + +/datum/ammo/bullet/shotgun/buckshot/incendiary/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +/datum/ammo/bullet/shotgun/buckshot/on_hit_mob(mob/M,obj/projectile/P) + knockback(M,P) + +//buckshot variant only used by the masterkey shotgun attachment. +/datum/ammo/bullet/shotgun/buckshot/masterkey + bonus_projectiles_type = /datum/ammo/bullet/shotgun/spread/masterkey + + damage = 55 + +/datum/ammo/bullet/shotgun/spread + name = "additional buckshot" + icon_state = "buckshot" + + accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 + accurate_range = 4 + max_range = 6 + damage = 65 + damage_var_low = PROJECTILE_VARIANCE_TIER_8 + damage_var_high = PROJECTILE_VARIANCE_TIER_8 + penetration = ARMOR_PENETRATION_TIER_1 + shell_speed = AMMO_SPEED_TIER_2 + scatter = SCATTER_AMOUNT_TIER_1 + damage_armor_punch = 0 + pen_armor_punch = 0 + +/datum/ammo/bullet/shotgun/spread/masterkey + damage = 20 + +/* + 8 GAUGE SHOTGUN AMMO +*/ + +/datum/ammo/bullet/shotgun/heavy/buckshot + name = "heavy buckshot shell" + icon_state = "buckshot" + handful_state = "heavy_buckshot" + multiple_handful_name = TRUE + bonus_projectiles_type = /datum/ammo/bullet/shotgun/heavy/buckshot/spread + bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_3 + accurate_range = 3 + max_range = 3 + damage = 75 + penetration = 0 + shell_speed = AMMO_SPEED_TIER_2 + damage_armor_punch = 0 + pen_armor_punch = 0 + +/datum/ammo/bullet/shotgun/heavy/buckshot/on_hit_mob(mob/M,obj/projectile/P) + knockback(M,P) + +/datum/ammo/bullet/shotgun/heavy/buckshot/spread + name = "additional heavy buckshot" + max_range = 4 + scatter = SCATTER_AMOUNT_TIER_1 + bonus_projectiles_amount = 0 + +//basically the same +/datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath + name = "dragon's breath shell" + handful_state = "heavy_dragonsbreath" + multiple_handful_name = TRUE + damage_type = BURN + damage = 60 + accurate_range = 3 + max_range = 4 + bonus_projectiles_type = /datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath/spread + +/datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +/datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath/spread + name = "additional dragon's breath" + bonus_projectiles_amount = 0 + accurate_range = 4 + max_range = 5 //make use of the ablaze property + shell_speed = AMMO_SPEED_TIER_4 // so they hit before the main shell stuns + + +/datum/ammo/bullet/shotgun/heavy/slug + name = "heavy shotgun slug" + handful_state = "heavy_slug" + + accurate_range = 7 + max_range = 8 + damage = 90 //ouch. + penetration = ARMOR_PENETRATION_TIER_6 + damage_armor_punch = 2 + +/datum/ammo/bullet/shotgun/heavy/slug/on_hit_mob(mob/M,obj/projectile/P) + knockback(M, P, 7) + +/datum/ammo/bullet/shotgun/heavy/slug/knockback_effects(mob/living/living_mob, obj/projectile/fired_projectile) + if(iscarbonsizexeno(living_mob)) + var/mob/living/carbon/xenomorph/target = living_mob + to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!")) + target.KnockDown(0.5) // If you ask me the KD should be left out, but players like their visual cues + target.Stun(0.5) + target.apply_effect(2, SUPERSLOW) + target.apply_effect(5, SLOW) + else + if(!isyautja(living_mob)) //Not predators. + living_mob.apply_effect(1, SUPERSLOW) + living_mob.apply_effect(2, SLOW) + to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!")) + living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) + +/datum/ammo/bullet/shotgun/heavy/beanbag + name = "heavy beanbag slug" + icon_state = "beanbag" + headshot_state = HEADSHOT_OVERLAY_MEDIUM + handful_state = "heavy_beanbag" + flags_ammo_behavior = AMMO_BALLISTIC|AMMO_IGNORE_RESIST + sound_override = 'sound/weapons/gun_shotgun_riot.ogg' + + max_range = 7 + shrapnel_chance = 0 + damage = 0 + stamina_damage = 100 + accuracy = HIT_ACCURACY_TIER_2 + shell_speed = AMMO_SPEED_TIER_2 + +/datum/ammo/bullet/shotgun/heavy/beanbag/on_hit_mob(mob/M, obj/projectile/P) + if(!M || M == P.firer) + return + if(ishuman(M)) + var/mob/living/carbon/human/H = M + shake_camera(H, 2, 1) + +/datum/ammo/bullet/shotgun/heavy/flechette + name = "heavy flechette shell" + icon_state = "flechette" + handful_state = "heavy_flechette" + multiple_handful_name = TRUE + bonus_projectiles_type = /datum/ammo/bullet/shotgun/heavy/flechette_spread + + accuracy_var_low = PROJECTILE_VARIANCE_TIER_3 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_3 + max_range = 12 + damage = 45 + damage_var_low = PROJECTILE_VARIANCE_TIER_8 + damage_var_high = PROJECTILE_VARIANCE_TIER_8 + penetration = ARMOR_PENETRATION_TIER_10 + bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_2 + +/datum/ammo/bullet/shotgun/heavy/flechette_spread + name = "additional heavy flechette" + icon_state = "flechette" + accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 + max_range = 12 + damage = 45 + damage_var_low = PROJECTILE_VARIANCE_TIER_8 + damage_var_high = PROJECTILE_VARIANCE_TIER_8 + penetration = ARMOR_PENETRATION_TIER_10 + scatter = SCATTER_AMOUNT_TIER_4 + +/* + 16 GAUGE SHOTGUN AMMO +*/ + +/datum/ammo/bullet/shotgun/light/breaching + name = "light breaching shell" + icon_state = "flechette" + handful_state = "breaching_shell" + multiple_handful_name = TRUE + bonus_projectiles_type = /datum/ammo/bullet/shotgun/light/breaching/spread + + accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 + damage = 55 + max_range = 5 + bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_3 + penetration = ARMOR_PENETRATION_TIER_1 + +/datum/ammo/bullet/shotgun/light/breaching/spread + name = "additional light breaching fragments" + bonus_projectiles_amount = 0 + accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 + scatter = SCATTER_AMOUNT_TIER_3 + damage = 10 + +//Enormous shell for Van Bandolier's superheavy double-barreled hunting gun. +/datum/ammo/bullet/shotgun/twobore + name = "two bore bullet" + icon_state = "autocannon" + handful_state = "twobore" + + accurate_range = 8 //Big low-velocity projectile; this is for blasting dangerous game at close range. + max_range = 14 //At this range, it's lost all its damage anyway. + damage = 300 //Hits like a buckshot PB. + penetration = ARMOR_PENETRATION_TIER_3 + damage_falloff = DAMAGE_FALLOFF_TIER_1 * 3 //It has a lot of energy, but the 26mm bullet drops off fast. + effective_range_max = EFFECTIVE_RANGE_MAX_TIER_2 //Full damage up to this distance, then falloff for each tile beyond. + var/hit_messages = list() + +/datum/ammo/bullet/shotgun/twobore/on_hit_mob(mob/living/M, obj/projectile/P) + var/mob/shooter = P.firer + if(shooter && ismob(shooter) && HAS_TRAIT(shooter, TRAIT_TWOBORE_TRAINING) && M.stat != DEAD && prob(40)) //Death is handled by periodic life() checks so this should have a chance to fire on a killshot. + if(!length(hit_messages)) //Pick and remove lines, refill on exhaustion. + hit_messages = list("Got you!", "Aha!", "Bullseye!", "It's curtains for you, Sonny Jim!", "Your head will look fantastic on my wall!", "I have you now!", "You miserable coward! Come and fight me like a man!", "Tally ho!") + var/message = pick_n_take(hit_messages) + shooter.say(message) + + if(P.distance_travelled > 8) + knockback(M, P, 12) + + else if(!M || M == P.firer || M.body_position == LYING_DOWN) //These checks are included in knockback and would be redundant above. + return + + shake_camera(M, 3, 4) + M.KnockDown(2) // If you ask me the KD should be left out, but players like their visual cues + M.Stun(2) + M.apply_effect(4, SLOW) + if(iscarbonsizexeno(M)) + to_chat(M, SPAN_XENODANGER("The impact knocks you off your feet!")) + else //This will hammer a Yautja as hard as a human. + to_chat(M, SPAN_HIGHDANGER("The impact knocks you off your feet!")) + + step(M, get_dir(P.firer, M)) + +/datum/ammo/bullet/shotgun/twobore/knockback_effects(mob/living/living_mob, obj/projectile/fired_projectile) + if(iscarbonsizexeno(living_mob)) + var/mob/living/carbon/xenomorph/target = living_mob + to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!")) + target.KnockDown(0.5) // If you ask me the KD should be left out, but players like their visual cues + target.Stun(0.5) + target.apply_effect(2, SUPERSLOW) + target.apply_effect(5, SLOW) + else + if(!isyautja(living_mob)) //Not predators. + living_mob.apply_effect(1, SUPERSLOW) + living_mob.apply_effect(2, SLOW) + to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!")) + living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) diff --git a/code/datums/ammo/bullet/smg.dm b/code/datums/ammo/bullet/smg.dm new file mode 100644 index 000000000000..e24b3021da97 --- /dev/null +++ b/code/datums/ammo/bullet/smg.dm @@ -0,0 +1,147 @@ +/* +//====== + SMG Ammo +//====== +*/ +//2020 SMG/ammo rebalance. default ammo actually has penetration so it can be useful, by 4khan: should be meh against t3s, better under 15 armor. Perfectly does this right now (oct 2020) +//has reduced falloff compared to the m39. this means it is best for kiting castes (mostly t2s and below admittedly) +//while the m39 ap is better for shredding them at close range, but has reduced velocity, so it's better for just running in and erasing armor-centric castes (defender, crusher) +// which i think is really interesting and good balance, giving both ammo types a reason to exist even against ravagers. +//i feel it is necessary to reflavor the default bullet, because otherwise, people won't be able to notice it has less falloff and faster bullet speed. even with a changelog, +//way too many people don't read the changelog, and after one or two months the changelog entry is all but archive, so there needs to be an ingame description of what the ammo does +//in comparison to armor-piercing rounds. + +/datum/ammo/bullet/smg + name = "submachinegun bullet" + damage = 34 + accurate_range = 4 + effective_range_max = 4 + penetration = ARMOR_PENETRATION_TIER_1 + shell_speed = AMMO_SPEED_TIER_6 + damage_falloff = DAMAGE_FALLOFF_TIER_5 + scatter = SCATTER_AMOUNT_TIER_6 + accuracy = HIT_ACCURACY_TIER_3 + +/datum/ammo/bullet/smg/m39 + name = "high-velocity submachinegun bullet" //i don't want all smgs to inherit 'high velocity' + +/datum/ammo/bullet/smg/ap + name = "armor-piercing submachinegun bullet" + + damage = 26 + penetration = ARMOR_PENETRATION_TIER_6 + shell_speed = AMMO_SPEED_TIER_4 + +/datum/ammo/bullet/smg/heap + name = "high-explosive armor-piercing submachinegun bullet" + + damage = 45 + headshot_state = HEADSHOT_OVERLAY_MEDIUM + penetration = ARMOR_PENETRATION_TIER_6 + shell_speed = AMMO_SPEED_TIER_4 + +/datum/ammo/bullet/smg/ap/toxin + name = "toxic submachinegun bullet" + var/acid_per_hit = 5 + var/organic_damage_mult = 3 + +/datum/ammo/bullet/smg/ap/toxin/on_hit_mob(mob/M, obj/projectile/P) + . = ..() + M.AddComponent(/datum/component/toxic_buildup, acid_per_hit) + +/datum/ammo/bullet/smg/ap/toxin/on_hit_turf(turf/T, obj/projectile/P) + . = ..() + if(T.flags_turf & TURF_ORGANIC) + P.damage *= organic_damage_mult + +/datum/ammo/bullet/smg/ap/toxin/on_hit_obj(obj/O, obj/projectile/P) + . = ..() + if(O.flags_obj & OBJ_ORGANIC) + P.damage *= organic_damage_mult + +/datum/ammo/bullet/smg/nail + name = "7x45mm plasteel nail" + icon_state = "nail-projectile" + + damage = 25 + penetration = ARMOR_PENETRATION_TIER_5 + damage_falloff = DAMAGE_FALLOFF_TIER_6 + accurate_range = 5 + shell_speed = AMMO_SPEED_TIER_4 + +/datum/ammo/bullet/smg/incendiary + name = "incendiary submachinegun bullet" + damage_type = BURN + shrapnel_chance = 0 + flags_ammo_behavior = AMMO_BALLISTIC + + damage = 25 + accuracy = -HIT_ACCURACY_TIER_2 + +/datum/ammo/bullet/smg/incendiary/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +/datum/ammo/bullet/smg/ap/penetrating + name = "wall-penetrating submachinegun bullet" + shrapnel_chance = 0 + + damage = 30 + penetration = ARMOR_PENETRATION_TIER_10 + +/datum/ammo/bullet/smg/ap/penetrating/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating) + )) + +/datum/ammo/bullet/smg/le + name = "armor-shredding submachinegun bullet" + + scatter = SCATTER_AMOUNT_TIER_10 + damage = 20 + penetration = ARMOR_PENETRATION_TIER_4 + shell_speed = AMMO_SPEED_TIER_3 + damage_falloff = DAMAGE_FALLOFF_TIER_10 + pen_armor_punch = 4 + +/datum/ammo/bullet/smg/rubber + name = "rubber submachinegun bullet" + sound_override = 'sound/weapons/gun_c99.ogg' + + damage = 0 + stamina_damage = 10 + shrapnel_chance = 0 + +/datum/ammo/bullet/smg/mp27 + name = "simple submachinegun bullet" + damage = 40 + accurate_range = 5 + effective_range_max = 7 + penetration = 0 + shell_speed = AMMO_SPEED_TIER_6 + damage_falloff = DAMAGE_FALLOFF_TIER_6 + scatter = SCATTER_AMOUNT_TIER_6 + accuracy = HIT_ACCURACY_TIER_2 + +// less damage than the m39, but better falloff, range, and AP + +/datum/ammo/bullet/smg/ppsh + name = "crude submachinegun bullet" + damage = 26 + accurate_range = 7 + effective_range_max = 7 + penetration = ARMOR_PENETRATION_TIER_2 + damage_falloff = DAMAGE_FALLOFF_TIER_7 + scatter = SCATTER_AMOUNT_TIER_5 + +/datum/ammo/bullet/smg/pps43 + name = "simple submachinegun bullet" + damage = 35 + accurate_range = 7 + effective_range_max = 10 + penetration = ARMOR_PENETRATION_TIER_4 + damage_falloff = DAMAGE_FALLOFF_TIER_6 + scatter = SCATTER_AMOUNT_TIER_6 diff --git a/code/datums/ammo/bullet/sniper.dm b/code/datums/ammo/bullet/sniper.dm new file mode 100644 index 000000000000..a82f00631608 --- /dev/null +++ b/code/datums/ammo/bullet/sniper.dm @@ -0,0 +1,170 @@ +/* +//====== + Sniper Ammo +//====== +*/ + +/datum/ammo/bullet/sniper + name = "sniper bullet" + headshot_state = HEADSHOT_OVERLAY_HEAVY + damage_falloff = 0 + flags_ammo_behavior = AMMO_BALLISTIC|AMMO_SNIPER|AMMO_IGNORE_COVER + accurate_range_min = 4 + + accuracy = HIT_ACCURACY_TIER_8 + accurate_range = 32 + max_range = 32 + scatter = 0 + damage = 70 + penetration= ARMOR_PENETRATION_TIER_10 + shell_speed = AMMO_SPEED_TIER_6 + damage_falloff = 0 + +/datum/ammo/bullet/sniper/on_hit_mob(mob/M,obj/projectile/P) + if((P.projectile_flags & PROJECTILE_BULLSEYE) && M == P.original) + var/mob/living/L = M + L.apply_armoured_damage(damage*2, ARMOR_BULLET, BRUTE, null, penetration) + to_chat(P.firer, SPAN_WARNING("Bullseye!")) + +/datum/ammo/bullet/sniper/incendiary + name = "incendiary sniper bullet" + damage_type = BRUTE + shrapnel_chance = 0 + flags_ammo_behavior = AMMO_BALLISTIC|AMMO_SNIPER|AMMO_IGNORE_COVER + + //Removed accuracy = 0, accuracy_var_high = Variance Tier 6, and scatter = 0. -Kaga + damage = 60 + penetration = ARMOR_PENETRATION_TIER_4 + +/datum/ammo/bullet/sniper/incendiary/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +/datum/ammo/bullet/sniper/incendiary/on_hit_mob(mob/M,obj/projectile/P) + if((P.projectile_flags & PROJECTILE_BULLSEYE) && M == P.original) + var/mob/living/L = M + var/blind_duration = 5 + if(isxeno(M)) + var/mob/living/carbon/xenomorph/target = M + if(target.mob_size >= MOB_SIZE_BIG) + blind_duration = 2 + L.AdjustEyeBlur(blind_duration) + L.adjust_fire_stacks(10) + to_chat(P.firer, SPAN_WARNING("Bullseye!")) + +/datum/ammo/bullet/sniper/flak + name = "flak sniper bullet" + damage_type = BRUTE + flags_ammo_behavior = AMMO_BALLISTIC|AMMO_SNIPER|AMMO_IGNORE_COVER + + accuracy = HIT_ACCURACY_TIER_8 + scatter = SCATTER_AMOUNT_TIER_8 + damage = 55 + damage_var_high = PROJECTILE_VARIANCE_TIER_8 //Documenting old code: This converts to a variance of 96-109% damage. -Kaga + penetration = 0 + +/datum/ammo/bullet/sniper/flak/on_hit_mob(mob/M,obj/projectile/P) + if((P.projectile_flags & PROJECTILE_BULLSEYE) && M == P.original) + var/slow_duration = 7 + var/mob/living/L = M + if(isxeno(M)) + var/mob/living/carbon/xenomorph/target = M + if(target.mob_size >= MOB_SIZE_BIG) + slow_duration = 4 + M.adjust_effect(slow_duration, SUPERSLOW) + L.apply_armoured_damage(damage, ARMOR_BULLET, BRUTE, null, penetration) + to_chat(P.firer, SPAN_WARNING("Bullseye!")) + else + burst(get_turf(M),P,damage_type, 2 , 2) + burst(get_turf(M),P,damage_type, 1 , 2 , 0) + +/datum/ammo/bullet/sniper/flak/on_near_target(turf/T, obj/projectile/P) + burst(T,P,damage_type, 2 , 2) + burst(T,P,damage_type, 1 , 2, 0) + return 1 + +/datum/ammo/bullet/sniper/crude + name = "crude sniper bullet" + damage = 42 + penetration = ARMOR_PENETRATION_TIER_6 + +/datum/ammo/bullet/sniper/crude/on_hit_mob(mob/M, obj/projectile/P) + . = ..() + pushback(M, P, 3) + +/datum/ammo/bullet/sniper/upp + name = "armor-piercing sniper bullet" + damage = 80 + penetration = ARMOR_PENETRATION_TIER_10 + +/datum/ammo/bullet/sniper/anti_materiel + name = "anti-materiel sniper bullet" + + shrapnel_chance = 0 // This isn't leaving any shrapnel. + accuracy = HIT_ACCURACY_TIER_8 + damage = 125 + shell_speed = AMMO_SPEED_TIER_6 + +/datum/ammo/bullet/sniper/anti_materiel/on_hit_mob(mob/M,obj/projectile/P) + if((P.projectile_flags & PROJECTILE_BULLSEYE) && M == P.original) + var/mob/living/L = M + var/size_damage_mod = 0.8 + if(isxeno(M)) + var/mob/living/carbon/xenomorph/target = M + if(target.mob_size >= MOB_SIZE_XENO) + size_damage_mod += 0.6 + if(target.mob_size >= MOB_SIZE_BIG) + size_damage_mod += 0.6 + L.apply_armoured_damage(damage*size_damage_mod, ARMOR_BULLET, BRUTE, null, penetration) + // 180% damage to all targets (225), 240% (300) against non-Runner xenos, and 300% against Big xenos (375). -Kaga + to_chat(P.firer, SPAN_WARNING("Bullseye!")) + +/datum/ammo/bullet/sniper/anti_materiel/vulture + damage = 400 // Fully intended to vaporize anything smaller than a mini cooper + accurate_range_min = 10 + handful_state = "vulture_bullet" + sound_hit = 'sound/bullets/bullet_vulture_impact.ogg' + flags_ammo_behavior = AMMO_BALLISTIC|AMMO_SNIPER|AMMO_IGNORE_COVER|AMMO_ANTIVEHICLE + +/datum/ammo/bullet/sniper/anti_materiel/vulture/on_hit_mob(mob/hit_mob, obj/projectile/bullet) + . = ..() + knockback(hit_mob, bullet, 30) + hit_mob.apply_effect(3, SLOW) + +/datum/ammo/bullet/sniper/anti_materiel/vulture/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating/heavy) + )) + +/datum/ammo/bullet/sniper/elite + name = "supersonic sniper bullet" + + shrapnel_chance = 0 // This isn't leaving any shrapnel. + accuracy = HIT_ACCURACY_TIER_8 + damage = 150 + shell_speed = AMMO_SPEED_TIER_6 + AMMO_SPEED_TIER_2 + +/datum/ammo/bullet/sniper/elite/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating) + )) + +/datum/ammo/bullet/sniper/elite/on_hit_mob(mob/M,obj/projectile/P) + if((P.projectile_flags & PROJECTILE_BULLSEYE) && M == P.original) + var/mob/living/L = M + var/size_damage_mod = 0.5 + if(isxeno(M)) + var/mob/living/carbon/xenomorph/target = M + if(target.mob_size >= MOB_SIZE_XENO) + size_damage_mod += 0.5 + if(target.mob_size >= MOB_SIZE_BIG) + size_damage_mod += 1 + L.apply_armoured_damage(damage*size_damage_mod, ARMOR_BULLET, BRUTE, null, penetration) + else + L.apply_armoured_damage(damage, ARMOR_BULLET, BRUTE, null, penetration) + // 150% damage to runners (225), 300% against Big xenos (450), and 200% against all others (300). -Kaga + to_chat(P.firer, SPAN_WARNING("Bullseye!")) diff --git a/code/datums/ammo/bullet/special_ammo.dm b/code/datums/ammo/bullet/special_ammo.dm new file mode 100644 index 000000000000..3d53c6b0c0d0 --- /dev/null +++ b/code/datums/ammo/bullet/special_ammo.dm @@ -0,0 +1,179 @@ +/* +//====== + Special Ammo +//====== +*/ + +/datum/ammo/bullet/smartgun + name = "smartgun bullet" + icon_state = "redbullet" + flags_ammo_behavior = AMMO_BALLISTIC + + max_range = 12 + accuracy = HIT_ACCURACY_TIER_4 + damage = 30 + penetration = 0 + +/datum/ammo/bullet/smartgun/armor_piercing + name = "armor-piercing smartgun bullet" + icon_state = "bullet" + + accurate_range = 12 + accuracy = HIT_ACCURACY_TIER_2 + damage = 20 + penetration = ARMOR_PENETRATION_TIER_8 + damage_armor_punch = 1 + +/datum/ammo/bullet/smartgun/dirty + name = "irradiated smartgun bullet" + debilitate = list(0,0,0,3,0,0,0,1) + + shrapnel_chance = SHRAPNEL_CHANCE_TIER_7 + accurate_range = 32 + accuracy = HIT_ACCURACY_TIER_3 + damage = 40 + penetration = 0 + +/datum/ammo/bullet/smartgun/dirty/armor_piercing + debilitate = list(0,0,0,3,0,0,0,1) + + accurate_range = 22 + accuracy = HIT_ACCURACY_TIER_3 + damage = 30 + penetration = ARMOR_PENETRATION_TIER_7 + damage_armor_punch = 3 + +/datum/ammo/bullet/smartgun/holo_target //Royal marines smartgun bullet has only diff between regular ammo is this one does holostacks + name = "holo-targeting smartgun bullet" + damage = 30 + ///Stuff for the HRP holotargetting stacks + var/holo_stacks = 15 + +/datum/ammo/bullet/smartgun/holo_target/on_hit_mob(mob/M, obj/projectile/P) + . = ..() + M.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time) + +/datum/ammo/bullet/smartgun/holo_target/ap + name = "armor-piercing smartgun bullet" + icon_state = "bullet" + + accurate_range = 12 + accuracy = HIT_ACCURACY_TIER_2 + damage = 20 + penetration = ARMOR_PENETRATION_TIER_8 + damage_armor_punch = 1 + +/datum/ammo/bullet/smartgun/m56_fpw + name = "\improper M56 FPW bullet" + icon_state = "redbullet" + flags_ammo_behavior = AMMO_BALLISTIC + + max_range = 7 + accuracy = HIT_ACCURACY_TIER_7 + damage = 35 + penetration = ARMOR_PENETRATION_TIER_1 + +/datum/ammo/bullet/turret + name = "autocannon bullet" + icon_state = "redbullet" //Red bullets to indicate friendly fire restriction + flags_ammo_behavior = AMMO_BALLISTIC|AMMO_IGNORE_COVER + + accurate_range = 22 + accuracy_var_low = PROJECTILE_VARIANCE_TIER_8 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_8 + max_range = 22 + damage = 30 + penetration = ARMOR_PENETRATION_TIER_7 + damage_armor_punch = 0 + pen_armor_punch = 0 + shell_speed = 2*AMMO_SPEED_TIER_6 + accuracy = HIT_ACCURACY_TIER_5 + +/datum/ammo/bullet/turret/dumb + icon_state = "bullet" + flags_ammo_behavior = AMMO_BALLISTIC + +/datum/ammo/bullet/machinegun //Adding this for the MG Nests (~Art) + name = "machinegun bullet" + icon_state = "bullet" // Keeping it bog standard with the turret but allows it to be changed + + accurate_range = 12 + damage = 35 + penetration= ARMOR_PENETRATION_TIER_10 //Bumped the penetration to serve a different role from sentries, MGs are a bit more offensive + accuracy = HIT_ACCURACY_TIER_3 + +/datum/ammo/bullet/machinegun/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) + )) + +/datum/ammo/bullet/machinegun/doorgun + flags_ammo_behavior = AMMO_BALLISTIC | AMMO_IGNORE_COVER + +/datum/ammo/bullet/machinegun/auto // for M2C, automatic variant for M56D, stats for bullet should always be moderately overtuned to fulfill its ultra-offense + flank-push purpose + name = "heavy machinegun bullet" + + accurate_range = 10 + damage = 50 + penetration = ARMOR_PENETRATION_TIER_6 + accuracy = -HIT_ACCURACY_TIER_2 // 75 accuracy + shell_speed = AMMO_SPEED_TIER_2 + max_range = 15 + effective_range_max = 7 + damage_falloff = DAMAGE_FALLOFF_TIER_8 + +/datum/ammo/bullet/machinegun/auto/set_bullet_traits() + return + +/datum/ammo/bullet/minigun + name = "minigun bullet" + headshot_state = HEADSHOT_OVERLAY_MEDIUM + + accuracy = -HIT_ACCURACY_TIER_3 + accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 + accurate_range = 12 + damage = 35 + penetration = ARMOR_PENETRATION_TIER_6 + +/datum/ammo/bullet/minigun/New() + ..() + if(SSticker.mode && MODE_HAS_FLAG(MODE_FACTION_CLASH)) + damage = 15 + else if(SSticker.current_state < GAME_STATE_PLAYING) + RegisterSignal(SSdcs, COMSIG_GLOB_MODE_PRESETUP, PROC_REF(setup_hvh_damage)) + +/datum/ammo/bullet/minigun/proc/setup_hvh_damage() + if(MODE_HAS_FLAG(MODE_FACTION_CLASH)) + damage = 15 + +/datum/ammo/bullet/minigun/tank + accuracy = -HIT_ACCURACY_TIER_1 + accuracy_var_low = PROJECTILE_VARIANCE_TIER_8 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_8 + accurate_range = 12 + +/datum/ammo/bullet/m60 + name = "M60 bullet" + headshot_state = HEADSHOT_OVERLAY_MEDIUM + + accuracy = HIT_ACCURACY_TIER_2 + accuracy_var_low = PROJECTILE_VARIANCE_TIER_8 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 + accurate_range = 12 + damage = 45 //7.62x51 is scary + penetration= ARMOR_PENETRATION_TIER_6 + shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 + +/datum/ammo/bullet/pkp + name = "machinegun bullet" + headshot_state = HEADSHOT_OVERLAY_MEDIUM + + accuracy = HIT_ACCURACY_TIER_1 + accuracy_var_low = PROJECTILE_VARIANCE_TIER_8 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 + accurate_range = 14 + damage = 35 + penetration= ARMOR_PENETRATION_TIER_6 + shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 diff --git a/code/datums/ammo/bullet/tank.dm b/code/datums/ammo/bullet/tank.dm new file mode 100644 index 000000000000..70a953c6e273 --- /dev/null +++ b/code/datums/ammo/bullet/tank.dm @@ -0,0 +1,74 @@ +/* +//====== + Tank Ammo +//====== +*/ + +/datum/ammo/bullet/tank/flak + name = "flak autocannon bullet" + icon_state = "autocannon" + damage_falloff = 0 + flags_ammo_behavior = AMMO_BALLISTIC + accurate_range_min = 4 + + accuracy = HIT_ACCURACY_TIER_8 + scatter = 0 + damage = 60 + damage_var_high = PROJECTILE_VARIANCE_TIER_8 + penetration = ARMOR_PENETRATION_TIER_6 + accurate_range = 32 + max_range = 32 + shell_speed = AMMO_SPEED_TIER_6 + +/datum/ammo/bullet/tank/flak/on_hit_mob(mob/M,obj/projectile/P) + burst(get_turf(M),P,damage_type, 2 , 3) + burst(get_turf(M),P,damage_type, 1 , 3 , 0) + +/datum/ammo/bullet/tank/flak/on_near_target(turf/T, obj/projectile/P) + burst(get_turf(T),P,damage_type, 2 , 3) + burst(get_turf(T),P,damage_type, 1 , 3, 0) + return 1 + +/datum/ammo/bullet/tank/flak/on_hit_obj(obj/O,obj/projectile/P) + burst(get_turf(P),P,damage_type, 2 , 3) + burst(get_turf(P),P,damage_type, 1 , 3 , 0) + +/datum/ammo/bullet/tank/flak/on_hit_turf(turf/T,obj/projectile/P) + burst(get_turf(T),P,damage_type, 2 , 3) + burst(get_turf(T),P,damage_type, 1 , 3 , 0) + +/datum/ammo/bullet/tank/dualcannon + name = "dualcannon bullet" + icon_state = "autocannon" + damage_falloff = 0 + flags_ammo_behavior = AMMO_BALLISTIC + + accuracy = HIT_ACCURACY_TIER_8 + scatter = 0 + damage = 50 + damage_var_high = PROJECTILE_VARIANCE_TIER_8 + penetration = ARMOR_PENETRATION_TIER_3 + accurate_range = 10 + max_range = 12 + shell_speed = AMMO_SPEED_TIER_5 + +/datum/ammo/bullet/tank/dualcannon/on_hit_mob(mob/M,obj/projectile/P) + for(var/mob/living/carbon/L in get_turf(M)) + if(L.stat == CONSCIOUS && L.mob_size <= MOB_SIZE_XENO) + shake_camera(L, 1, 1) + +/datum/ammo/bullet/tank/dualcannon/on_near_target(turf/T, obj/projectile/P) + for(var/mob/living/carbon/L in T) + if(L.stat == CONSCIOUS && L.mob_size <= MOB_SIZE_XENO) + shake_camera(L, 1, 1) + return 1 + +/datum/ammo/bullet/tank/dualcannon/on_hit_obj(obj/O,obj/projectile/P) + for(var/mob/living/carbon/L in get_turf(O)) + if(L.stat == CONSCIOUS && L.mob_size <= MOB_SIZE_XENO) + shake_camera(L, 1, 1) + +/datum/ammo/bullet/tank/dualcannon/on_hit_turf(turf/T,obj/projectile/P) + for(var/mob/living/carbon/L in T) + if(L.stat == CONSCIOUS && L.mob_size <= MOB_SIZE_XENO) + shake_camera(L, 1, 1) diff --git a/code/datums/ammo/energy.dm b/code/datums/ammo/energy.dm new file mode 100644 index 000000000000..16cbab378438 --- /dev/null +++ b/code/datums/ammo/energy.dm @@ -0,0 +1,232 @@ +/* +//====== + Energy Ammo +//====== +*/ + +/datum/ammo/energy + ping = null //no bounce off. We can have one later. + sound_hit = "energy_hit" + sound_miss = "energy_miss" + sound_bounce = "energy_bounce" + + damage_type = BURN + flags_ammo_behavior = AMMO_ENERGY + + accuracy = HIT_ACCURACY_TIER_4 + +/datum/ammo/energy/emitter //Damage is determined in emitter.dm + name = "emitter bolt" + icon_state = "emitter" + flags_ammo_behavior = AMMO_ENERGY|AMMO_IGNORE_ARMOR + + accurate_range = 6 + max_range = 6 + +/datum/ammo/energy/taser + name = "taser bolt" + icon_state = "stun" + damage_type = OXY + flags_ammo_behavior = AMMO_ENERGY|AMMO_IGNORE_RESIST|AMMO_ALWAYS_FF //Not that ignoring will do much right now. + stamina_damage = 45 + accuracy = HIT_ACCURACY_TIER_8 + shell_speed = AMMO_SPEED_TIER_1 // Slightly faster + hit_effect_color = "#FFFF00" + +/datum/ammo/energy/taser/on_hit_mob(mob/mobs, obj/projectile/P) + if(ishuman(mobs)) + var/mob/living/carbon/human/humanus = mobs + humanus.disable_special_items() // Disables scout cloak + humanus.make_jittery(40) + +/datum/ammo/energy/taser/precise + name = "precise taser bolt" + flags_ammo_behavior = AMMO_ENERGY|AMMO_IGNORE_RESIST|AMMO_MP + +/datum/ammo/energy/rxfm_eva + name = "laser blast" + icon_state = "laser_new" + flags_ammo_behavior = AMMO_LASER + accurate_range = 14 + max_range = 22 + damage = 45 + stamina_damage = 25 //why not + shell_speed = AMMO_SPEED_TIER_3 + +/datum/ammo/energy/rxfm_eva/on_hit_mob(mob/living/M, obj/projectile/P) + ..() + if(prob(10)) //small chance for one to ignite on hit + M.fire_act() + +/datum/ammo/energy/laz_uzi + name = "laser bolt" + icon_state = "laser_new" + flags_ammo_behavior = AMMO_ENERGY + damage = 40 + accurate_range = 5 + effective_range_max = 7 + max_range = 10 + shell_speed = AMMO_SPEED_TIER_4 + scatter = SCATTER_AMOUNT_TIER_6 + accuracy = HIT_ACCURACY_TIER_3 + damage_falloff = DAMAGE_FALLOFF_TIER_8 + +/datum/ammo/energy/yautja + headshot_state = HEADSHOT_OVERLAY_MEDIUM + accurate_range = 12 + shell_speed = AMMO_SPEED_TIER_3 + damage_type = BURN + flags_ammo_behavior = AMMO_IGNORE_RESIST + +/datum/ammo/energy/yautja/pistol + name = "plasma pistol bolt" + icon_state = "ion" + + damage = 40 + shell_speed = AMMO_SPEED_TIER_2 + +/datum/ammo/energy/yautja/pistol/incendiary + damage = 10 + +/datum/ammo/energy/yautja/pistol/incendiary/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +/datum/ammo/bullet/shrapnel/plasma + name = "plasma wave" + shrapnel_chance = 0 + penetration = ARMOR_PENETRATION_TIER_10 + accuracy = HIT_ACCURACY_TIER_MAX + damage = 15 + icon_state = "shrapnel_plasma" + damage_type = BURN + +/datum/ammo/bullet/shrapnel/plasma/on_hit_mob(mob/living/hit_mob, obj/projectile/hit_projectile) + hit_mob.Stun(2) + +/datum/ammo/energy/yautja/caster + name = "root caster bolt" + icon_state = "ion" + +/datum/ammo/energy/yautja/caster/stun + name = "low power stun bolt" + debilitate = list(2,2,0,0,0,1,0,0) + + damage = 0 + flags_ammo_behavior = AMMO_ENERGY|AMMO_IGNORE_RESIST + +/datum/ammo/energy/yautja/caster/bolt + name = "plasma bolt" + icon_state = "pulse1" + flags_ammo_behavior = AMMO_IGNORE_RESIST + shell_speed = AMMO_SPEED_TIER_6 + damage = 35 + +/datum/ammo/energy/yautja/caster/bolt/stun + name = "high power stun bolt" + var/stun_time = 2 + + damage = 0 + flags_ammo_behavior = AMMO_ENERGY|AMMO_IGNORE_RESIST + +/datum/ammo/energy/yautja/caster/bolt/stun/on_hit_mob(mob/M, obj/projectile/P) + var/mob/living/carbon/C = M + var/stun_time = src.stun_time + if(istype(C)) + if(isyautja(C) || ispredalien(C)) + return + to_chat(C, SPAN_DANGER("An electric shock ripples through your body, freezing you in place!")) + log_attack("[key_name(C)] was stunned by a high power stun bolt from [key_name(P.firer)] at [get_area(P)]") + + if(ishuman(C)) + stun_time++ + C.apply_effect(stun_time, WEAKEN) + C.apply_effect(stun_time, STUN) + ..() + +/datum/ammo/energy/yautja/caster/sphere + name = "plasma eradicator" + icon_state = "bluespace" + flags_ammo_behavior = AMMO_EXPLOSIVE|AMMO_HITS_TARGET_TURF + shell_speed = AMMO_SPEED_TIER_4 + accuracy = HIT_ACCURACY_TIER_8 + + damage = 55 + + accurate_range = 8 + max_range = 8 + + var/vehicle_slowdown_time = 5 SECONDS + +/datum/ammo/energy/yautja/caster/sphere/on_hit_mob(mob/M, obj/projectile/P) + cell_explosion(P, 170, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) + +/datum/ammo/energy/yautja/caster/sphere/on_hit_turf(turf/T, obj/projectile/P) + cell_explosion(P, 170, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) + +/datum/ammo/energy/yautja/caster/sphere/on_hit_obj(obj/O, obj/projectile/P) + if(istype(O, /obj/vehicle/multitile)) + var/obj/vehicle/multitile/multitile_vehicle = O + multitile_vehicle.next_move = world.time + vehicle_slowdown_time + playsound(multitile_vehicle, 'sound/effects/meteorimpact.ogg', 35) + multitile_vehicle.at_munition_interior_explosion_effect(cause_data = create_cause_data("Plasma Eradicator", P.firer)) + multitile_vehicle.interior_crash_effect() + multitile_vehicle.ex_act(150, P.dir, P.weapon_cause_data, 100) + cell_explosion(get_turf(P), 170, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) + +/datum/ammo/energy/yautja/caster/sphere/do_at_max_range(obj/projectile/P) + cell_explosion(get_turf(P), 170, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) + + +/datum/ammo/energy/yautja/caster/sphere/stun + name = "plasma immobilizer" + damage = 0 + flags_ammo_behavior = AMMO_ENERGY|AMMO_IGNORE_RESIST + accurate_range = 20 + max_range = 20 + + var/stun_range = 4 // Big + var/stun_time = 6 + +/datum/ammo/energy/yautja/caster/sphere/stun/on_hit_mob(mob/M, obj/projectile/P) + do_area_stun(P) + +/datum/ammo/energy/yautja/caster/sphere/stun/on_hit_turf(turf/T,obj/projectile/P) + do_area_stun(P) + +/datum/ammo/energy/yautja/caster/sphere/stun/on_hit_obj(obj/O,obj/projectile/P) + do_area_stun(P) + +/datum/ammo/energy/yautja/caster/sphere/stun/do_at_max_range(obj/projectile/P) + do_area_stun(P) + +/datum/ammo/energy/yautja/caster/sphere/stun/proc/do_area_stun(obj/projectile/P) + playsound(P, 'sound/weapons/wave.ogg', 75, 1, 25) + for (var/mob/living/carbon/M in view(src.stun_range, get_turf(P))) + var/stun_time = src.stun_time + log_attack("[key_name(M)] was stunned by a plasma immobilizer from [key_name(P.firer)] at [get_area(P)]") + if (isyautja(M)) + stun_time -= 2 + if(ispredalien(M)) + continue + to_chat(M, SPAN_DANGER("A powerful electric shock ripples through your body, freezing you in place!")) + M.apply_effect(stun_time, STUN) + M.apply_effect(stun_time, WEAKEN) + +/datum/ammo/energy/yautja/rifle/bolt + name = "plasma rifle bolt" + icon_state = "ion" + damage_type = BURN + debilitate = list(0,2,0,0,0,0,0,0) + flags_ammo_behavior = AMMO_IGNORE_RESIST + + damage = 55 + penetration = ARMOR_PENETRATION_TIER_10 + +/datum/ammo/energy/yautja/rifle/bolt/on_hit_mob(mob/hit_mob, obj/projectile/hit_projectile) + if(isxeno(hit_mob)) + var/mob/living/carbon/xenomorph/xeno = hit_mob + xeno.apply_damage(damage * 0.75, BURN) + xeno.interference = 30 diff --git a/code/datums/ammo/misc.dm b/code/datums/ammo/misc.dm new file mode 100644 index 000000000000..62a78539b6a2 --- /dev/null +++ b/code/datums/ammo/misc.dm @@ -0,0 +1,296 @@ +/* +//====== + Misc Ammo +//====== +*/ + +/datum/ammo/alloy_spike + name = "alloy spike" + headshot_state = HEADSHOT_OVERLAY_MEDIUM + ping = "ping_s" + icon_state = "MSpearFlight" + sound_hit = "alloy_hit" + sound_armor = "alloy_armor" + sound_bounce = "alloy_bounce" + + accuracy = HIT_ACCURACY_TIER_8 + accurate_range = 12 + max_range = 12 + damage = 30 + penetration= ARMOR_PENETRATION_TIER_10 + shrapnel_chance = SHRAPNEL_CHANCE_TIER_7 + shrapnel_type = /obj/item/shard/shrapnel + +/datum/ammo/flamethrower + name = "flame" + icon_state = "pulse0" + damage_type = BURN + flags_ammo_behavior = AMMO_IGNORE_ARMOR|AMMO_HITS_TARGET_TURF + + max_range = 6 + damage = 35 + +/datum/ammo/flamethrower/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +/datum/ammo/flamethrower/on_hit_mob(mob/M, obj/projectile/P) + drop_flame(get_turf(M), P.weapon_cause_data) + +/datum/ammo/flamethrower/on_hit_obj(obj/O, obj/projectile/P) + drop_flame(get_turf(O), P.weapon_cause_data) + +/datum/ammo/flamethrower/on_hit_turf(turf/T, obj/projectile/P) + drop_flame(T, P.weapon_cause_data) + +/datum/ammo/flamethrower/do_at_max_range(obj/projectile/P) + drop_flame(get_turf(P), P.weapon_cause_data) + +/datum/ammo/flamethrower/tank_flamer + flamer_reagent_type = /datum/reagent/napalm/blue + +/datum/ammo/flamethrower/sentry_flamer + flags_ammo_behavior = AMMO_IGNORE_ARMOR|AMMO_IGNORE_COVER|AMMO_FLAME + flamer_reagent_type = /datum/reagent/napalm/blue + + accuracy = HIT_ACCURACY_TIER_8 + accurate_range = 6 + max_range = 12 + shell_speed = AMMO_SPEED_TIER_3 + +/datum/ammo/flamethrower/sentry_flamer/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +/datum/ammo/flamethrower/sentry_flamer/glob + max_range = 14 + accurate_range = 10 + var/datum/effect_system/smoke_spread/phosphorus/smoke + +/datum/ammo/flamethrower/sentry_flamer/glob/New() + . = ..() + smoke = new() + +/datum/ammo/flamethrower/sentry_flamer/glob/drop_flame(turf/T, datum/cause_data/cause_data) + if(!istype(T)) + return + smoke.set_up(1, 0, T, new_cause_data = cause_data) + smoke.start() + +/datum/ammo/flamethrower/sentry_flamer/glob/Destroy() + qdel(smoke) + return ..() + +/datum/ammo/flamethrower/sentry_flamer/mini + name = "normal fire" + +/datum/ammo/flamethrower/sentry_flamer/mini/drop_flame(turf/T, datum/cause_data/cause_data) + if(!istype(T)) + return + var/datum/reagent/napalm/ut/R = new() + R.durationfire = BURN_TIME_INSTANT + new /obj/flamer_fire(T, cause_data, R, 0) + +/datum/ammo/flare + name = "flare" + ping = null //no bounce off. + damage_type = BURN + flags_ammo_behavior = AMMO_HITS_TARGET_TURF + icon_state = "flare" + + damage = 15 + accuracy = HIT_ACCURACY_TIER_3 + max_range = 14 + shell_speed = AMMO_SPEED_TIER_3 + + var/flare_type = /obj/item/device/flashlight/flare/on/gun + handful_type = /obj/item/device/flashlight/flare + +/datum/ammo/flare/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary, stacks = 2.5) + )) + +/datum/ammo/flare/on_hit_mob(mob/M,obj/projectile/P) + drop_flare(get_turf(M), P, P.firer) + +/datum/ammo/flare/on_hit_obj(obj/O,obj/projectile/P) + drop_flare(get_turf(P), P, P.firer) + +/datum/ammo/flare/on_hit_turf(turf/T, obj/projectile/P) + if(T.density && isturf(P.loc)) + drop_flare(P.loc, P, P.firer) + else + drop_flare(T, P, P.firer) + +/datum/ammo/flare/do_at_max_range(obj/projectile/P, mob/firer) + drop_flare(get_turf(P), P, P.firer) + +/datum/ammo/flare/proc/drop_flare(turf/T, obj/projectile/fired_projectile, mob/firer) + var/obj/item/device/flashlight/flare/G = new flare_type(T) + var/matrix/rotation = matrix() + rotation.Turn(fired_projectile.angle - 90) + G.apply_transform(rotation) + G.visible_message(SPAN_WARNING("\A [G] bursts into brilliant light nearby!")) + return G + +/datum/ammo/flare/signal + name = "signal flare" + icon_state = "flare_signal" + flare_type = /obj/item/device/flashlight/flare/signal/gun + handful_type = /obj/item/device/flashlight/flare/signal + +/datum/ammo/flare/signal/drop_flare(turf/T, obj/projectile/fired_projectile, mob/firer) + var/obj/item/device/flashlight/flare/signal/gun/signal_flare = ..() + signal_flare.activate_signal(firer) + if(istype(fired_projectile.shot_from, /obj/item/weapon/gun/flare)) + var/obj/item/weapon/gun/flare/flare_gun_fired_from = fired_projectile.shot_from + flare_gun_fired_from.last_signal_flare_name = signal_flare.name + +/datum/ammo/flare/starshell + name = "starshell ash" + icon_state = "starshell_bullet" + max_range = 5 + damage = 2.5 + flare_type = /obj/item/device/flashlight/flare/on/starshell_ash + +/datum/ammo/flare/starshell/set_bullet_traits() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff), + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary, stacks = 1) + )) + +/datum/ammo/souto + name = "Souto Can" + ping = null //no bounce off. + damage_type = BRUTE + shrapnel_type = /obj/item/reagent_container/food/drinks/cans/souto/classic + flags_ammo_behavior = AMMO_SKIPS_ALIENS|AMMO_IGNORE_ARMOR|AMMO_IGNORE_RESIST|AMMO_BALLISTIC|AMMO_STOPPED_BY_COVER|AMMO_SPECIAL_EMBED + var/obj/item/reagent_container/food/drinks/cans/souto/can_type + icon_state = "souto_classic" + + max_range = 12 + shrapnel_chance = 10 + accuracy = HIT_ACCURACY_TIER_8 + HIT_ACCURACY_TIER_8 + accurate_range = 12 + shell_speed = AMMO_SPEED_TIER_1 + +/datum/ammo/souto/on_embed(mob/embedded_mob, obj/limb/target_organ, silent = FALSE) + if(ishuman(embedded_mob) && !isyautja(embedded_mob)) + if(istype(target_organ)) + target_organ.embed(new can_type) + +/datum/ammo/souto/on_hit_mob(mob/M, obj/projectile/P) + if(!M || M == P.firer) return + if(M.throw_mode && !M.get_active_hand()) //empty active hand and we're in throw mode. If so we catch the can. + if(!M.is_mob_incapacitated()) // People who are not able to catch cannot catch. + if(P.contents.len == 1) + for(var/obj/item/reagent_container/food/drinks/cans/souto/S in P.contents) + M.put_in_active_hand(S) + for(var/mob/O in viewers(GLOB.world_view_size, P)) //find all people in view. + O.show_message(SPAN_DANGER("[M] catches [S]!"), SHOW_MESSAGE_VISIBLE) //Tell them the can was caught. + return //Can was caught. + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.species.name == "Human") //no effect on synths or preds. + H.apply_effect(6, STUN) + H.apply_effect(8, WEAKEN) + H.apply_effect(15, DAZE) + H.apply_effect(15, SLOW) + shake_camera(H, 2, 1) + if(P.contents.len) + drop_can(P.loc, P) //We make a can at the location. + +/datum/ammo/souto/on_hit_obj(obj/O,obj/projectile/P) + drop_can(P.loc, P) //We make a can at the location. + +/datum/ammo/souto/on_hit_turf(turf/T, obj/projectile/P) + drop_can(P.loc, P) //We make a can at the location. + +/datum/ammo/souto/do_at_max_range(obj/projectile/P) + drop_can(P.loc, P) //We make a can at the location. + +/datum/ammo/souto/on_shield_block(mob/M, obj/projectile/P) + drop_can(P.loc, P) //We make a can at the location. + +/datum/ammo/souto/proc/drop_can(loc, obj/projectile/P) + if(P.contents.len) + for(var/obj/item/I in P.contents) + I.forceMove(loc) + randomize_projectile(P) + +/datum/ammo/souto/proc/randomize_projectile(obj/projectile/P) + shrapnel_type = pick(typesof(/obj/item/reagent_container/food/drinks/cans/souto)-/obj/item/reagent_container/food/drinks/cans/souto) + +/datum/ammo/grenade_container + name = "grenade shell" + ping = null + damage_type = BRUTE + var/nade_type = /obj/item/explosive/grenade/high_explosive + icon_state = "grenade" + flags_ammo_behavior = AMMO_IGNORE_COVER|AMMO_SKIPS_ALIENS + + damage = 15 + accuracy = HIT_ACCURACY_TIER_3 + max_range = 6 + +/datum/ammo/grenade_container/on_hit_mob(mob/M,obj/projectile/P) + drop_nade(P) + +/datum/ammo/grenade_container/on_hit_obj(obj/O,obj/projectile/P) + drop_nade(P) + +/datum/ammo/grenade_container/on_hit_turf(turf/T,obj/projectile/P) + drop_nade(P) + +/datum/ammo/grenade_container/do_at_max_range(obj/projectile/P) + drop_nade(P) + +/datum/ammo/grenade_container/proc/drop_nade(obj/projectile/P) + var/turf/T = get_turf(P) + var/obj/item/explosive/grenade/G = new nade_type(T) + G.visible_message(SPAN_WARNING("\A [G] lands on [T]!")) + G.det_time = 10 + G.cause_data = P.weapon_cause_data + G.activate() + +/datum/ammo/grenade_container/rifle + flags_ammo_behavior = NO_FLAGS + +/datum/ammo/grenade_container/smoke + name = "smoke grenade shell" + nade_type = /obj/item/explosive/grenade/smokebomb + icon_state = "smoke_shell" + +/datum/ammo/hugger_container + name = "hugger shell" + ping = null + damage_type = BRUTE + var/hugger_hive = XENO_HIVE_NORMAL + icon_state = "smoke_shell" + + damage = 15 + accuracy = HIT_ACCURACY_TIER_3 + max_range = 6 + +/datum/ammo/hugger_container/on_hit_mob(mob/M,obj/projectile/P) + spawn_hugger(get_turf(P)) + +/datum/ammo/hugger_container/on_hit_obj(obj/O,obj/projectile/P) + spawn_hugger(get_turf(P)) + +/datum/ammo/hugger_container/on_hit_turf(turf/T,obj/projectile/P) + spawn_hugger(get_turf(P)) + +/datum/ammo/hugger_container/do_at_max_range(obj/projectile/P) + spawn_hugger(get_turf(P)) + +/datum/ammo/hugger_container/proc/spawn_hugger(turf/T) + var/obj/item/clothing/mask/facehugger/child = new(T) + child.hivenumber = hugger_hive + INVOKE_ASYNC(child, TYPE_PROC_REF(/obj/item/clothing/mask/facehugger, leap_at_nearest_target)) diff --git a/code/datums/ammo/rocket.dm b/code/datums/ammo/rocket.dm new file mode 100644 index 000000000000..7581d434c4b4 --- /dev/null +++ b/code/datums/ammo/rocket.dm @@ -0,0 +1,301 @@ +/* +//====== + Rocket Ammo +//====== +*/ + +/datum/ammo/rocket + name = "high explosive rocket" + icon_state = "missile" + ping = null //no bounce off. + sound_bounce = "rocket_bounce" + damage_falloff = 0 + flags_ammo_behavior = AMMO_EXPLOSIVE|AMMO_ROCKET|AMMO_STRIKES_SURFACE + var/datum/effect_system/smoke_spread/smoke + + accuracy = HIT_ACCURACY_TIER_2 + accurate_range = 7 + max_range = 7 + damage = 15 + shell_speed = AMMO_SPEED_TIER_2 + +/datum/ammo/rocket/New() + ..() + smoke = new() + +/datum/ammo/rocket/Destroy() + qdel(smoke) + smoke = null + . = ..() + +/datum/ammo/rocket/on_hit_mob(mob/mob, obj/projectile/projectile) + cell_explosion(get_turf(mob), 150, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + smoke.set_up(1, get_turf(mob)) + if(ishuman_strict(mob)) // No yautya or synths. Makes humans gib on direct hit. + mob.ex_act(350, projectile.dir, projectile.weapon_cause_data, 100) + smoke.start() + +/datum/ammo/rocket/on_hit_obj(obj/object, obj/projectile/projectile) + cell_explosion(get_turf(object), 150, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + smoke.set_up(1, get_turf(object)) + smoke.start() + +/datum/ammo/rocket/on_hit_turf(turf/turf, obj/projectile/projectile) + cell_explosion(turf, 150, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + smoke.set_up(1, turf) + smoke.start() + +/datum/ammo/rocket/do_at_max_range(obj/projectile/projectile) + cell_explosion(get_turf(projectile), 150, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + smoke.set_up(1, get_turf(projectile)) + smoke.start() + +/datum/ammo/rocket/ap + name = "anti-armor rocket" + damage_falloff = 0 + flags_ammo_behavior = AMMO_EXPLOSIVE|AMMO_ROCKET + + accuracy = HIT_ACCURACY_TIER_8 + accuracy_var_low = PROJECTILE_VARIANCE_TIER_9 + accurate_range = 6 + max_range = 6 + damage = 10 + penetration= ARMOR_PENETRATION_TIER_10 + + +/datum/ammo/rocket/ap/on_hit_mob(mob/mob, obj/projectile/projectile) + var/turf/turf = get_turf(mob) + mob.ex_act(150, projectile.dir, projectile.weapon_cause_data, 100) + mob.apply_effect(3, WEAKEN) + mob.apply_effect(3, PARALYZE) + if(ishuman_strict(mob)) // No yautya or synths. Makes humans gib on direct hit. + mob.ex_act(300, projectile.dir, projectile.weapon_cause_data, 100) + cell_explosion(turf, 100, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + smoke.set_up(1, turf) + smoke.start() + +/datum/ammo/rocket/ap/on_hit_obj(obj/object, obj/projectile/projectile) + var/turf/turf = get_turf(object) + object.ex_act(150, projectile.dir, projectile.weapon_cause_data, 100) + cell_explosion(turf, 100, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + smoke.set_up(1, turf) + smoke.start() + +/datum/ammo/rocket/ap/on_hit_turf(turf/turf, obj/projectile/projectile) + var/hit_something = 0 + for(var/mob/mob in turf) + mob.ex_act(150, projectile.dir, projectile.weapon_cause_data, 100) + mob.apply_effect(3, WEAKEN) + mob.apply_effect(3, PARALYZE) + hit_something = 1 + continue + if(!hit_something) + for(var/obj/object in turf) + if(object.density) + object.ex_act(150, projectile.dir, projectile.weapon_cause_data, 100) + hit_something = 1 + continue + if(!hit_something) + turf.ex_act(150, projectile.dir, projectile.weapon_cause_data, 200) + + cell_explosion(turf, 100, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + smoke.set_up(1, turf) + smoke.start() + +/datum/ammo/rocket/ap/do_at_max_range(obj/projectile/projectile) + var/turf/turf = get_turf(projectile) + var/hit_something = 0 + for(var/mob/mob in turf) + mob.ex_act(150, projectile.dir, projectile.weapon_cause_data, 100) + mob.apply_effect(3, WEAKEN) + mob.apply_effect(3, PARALYZE) + hit_something = 1 + break + if(!hit_something) + for(var/obj/object in turf) + if(object.density) + object.ex_act(150, projectile.dir, projectile.weapon_cause_data, 100) + hit_something = 1 + break + if(!hit_something) + turf.ex_act(150, projectile.dir, projectile.weapon_cause_data) + cell_explosion(turf, 100, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + smoke.set_up(1, turf) + smoke.start() + +/datum/ammo/rocket/ap/anti_tank + name = "anti-tank rocket" + damage = 100 + var/vehicle_slowdown_time = 5 SECONDS + shrapnel_chance = 5 + shrapnel_type = /obj/item/large_shrapnel/at_rocket_dud + +/datum/ammo/rocket/ap/anti_tank/on_hit_obj(obj/object, obj/projectile/projectile) + if(istype(object, /obj/vehicle/multitile)) + var/obj/vehicle/multitile/mob = object + mob.next_move = world.time + vehicle_slowdown_time + playsound(mob, 'sound/effects/meteorimpact.ogg', 35) + mob.at_munition_interior_explosion_effect(cause_data = create_cause_data("Anti-Tank Rocket")) + mob.interior_crash_effect() + var/turf/turf = get_turf(mob.loc) + mob.ex_act(150, projectile.dir, projectile.weapon_cause_data, 100) + smoke.set_up(1, turf) + smoke.start() + return + return ..() + + +/datum/ammo/rocket/ltb + name = "cannon round" + icon_state = "ltb" + flags_ammo_behavior = AMMO_EXPLOSIVE|AMMO_ROCKET|AMMO_STRIKES_SURFACE + + accuracy = HIT_ACCURACY_TIER_3 + accurate_range = 32 + max_range = 32 + damage = 25 + shell_speed = AMMO_SPEED_TIER_3 + +/datum/ammo/rocket/ltb/on_hit_mob(mob/mob, obj/projectile/projectile) + cell_explosion(get_turf(mob), 220, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + cell_explosion(get_turf(mob), 200, 100, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + +/datum/ammo/rocket/ltb/on_hit_obj(obj/object, obj/projectile/projectile) + cell_explosion(get_turf(object), 220, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + cell_explosion(get_turf(object), 200, 100, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + +/datum/ammo/rocket/ltb/on_hit_turf(turf/turf, obj/projectile/projectile) + cell_explosion(get_turf(turf), 220, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + cell_explosion(get_turf(turf), 200, 100, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + +/datum/ammo/rocket/ltb/do_at_max_range(obj/projectile/projectile) + cell_explosion(get_turf(projectile), 220, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + cell_explosion(get_turf(projectile), 200, 100, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + +/datum/ammo/rocket/wp + name = "white phosphorous rocket" + flags_ammo_behavior = AMMO_ROCKET|AMMO_EXPLOSIVE|AMMO_STRIKES_SURFACE + damage_type = BURN + + accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 + accurate_range = 8 + damage = 90 + max_range = 8 + +/datum/ammo/rocket/wp/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +/datum/ammo/rocket/wp/drop_flame(turf/turf, datum/cause_data/cause_data) + playsound(turf, 'sound/weapons/gun_flamethrower3.ogg', 75, 1, 7) + if(!istype(turf)) return + smoke.set_up(1, turf) + smoke.start() + var/datum/reagent/napalm/blue/reagent = new() + new /obj/flamer_fire(turf, cause_data, reagent, 3) + + var/datum/effect_system/smoke_spread/phosphorus/landingSmoke = new /datum/effect_system/smoke_spread/phosphorus + landingSmoke.set_up(3, 0, turf, null, 6, cause_data) + landingSmoke.start() + landingSmoke = null + +/datum/ammo/rocket/wp/on_hit_mob(mob/mob, obj/projectile/projectile) + drop_flame(get_turf(mob), projectile.weapon_cause_data) + +/datum/ammo/rocket/wp/on_hit_obj(obj/object, obj/projectile/projectile) + drop_flame(get_turf(object), projectile.weapon_cause_data) + +/datum/ammo/rocket/wp/on_hit_turf(turf/turf, obj/projectile/projectile) + drop_flame(turf, projectile.weapon_cause_data) + +/datum/ammo/rocket/wp/do_at_max_range(obj/projectile/projectile) + drop_flame(get_turf(projectile), projectile.weapon_cause_data) + +/datum/ammo/rocket/wp/upp + name = "extreme-intensity incendiary rocket" + flags_ammo_behavior = AMMO_ROCKET|AMMO_EXPLOSIVE|AMMO_STRIKES_SURFACE + damage_type = BURN + + accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 + accurate_range = 8 + damage = 150 + max_range = 10 + +/datum/ammo/rocket/wp/upp/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +/datum/ammo/rocket/wp/upp/drop_flame(turf/turf, datum/cause_data/cause_data) + playsound(turf, 'sound/weapons/gun_flamethrower3.ogg', 75, 1, 7) + if(!istype(turf)) return + smoke.set_up(1, turf) + smoke.start() + var/datum/reagent/napalm/upp/reagent = new() + new /obj/flamer_fire(turf, cause_data, reagent, 3) + +/datum/ammo/rocket/wp/upp/on_hit_mob(mob/mob, obj/projectile/projectile) + drop_flame(get_turf(mob), projectile.weapon_cause_data) + +/datum/ammo/rocket/wp/upp/on_hit_obj(obj/object, obj/projectile/projectile) + drop_flame(get_turf(object), projectile.weapon_cause_data) + +/datum/ammo/rocket/wp/upp/on_hit_turf(turf/turf, obj/projectile/projectile) + drop_flame(turf, projectile.weapon_cause_data) + +/datum/ammo/rocket/wp/upp/do_at_max_range(obj/projectile/projectile) + drop_flame(get_turf(projectile), projectile.weapon_cause_data) + +/datum/ammo/rocket/wp/quad + name = "thermobaric rocket" + flags_ammo_behavior = AMMO_ROCKET|AMMO_STRIKES_SURFACE + + damage = 100 + max_range = 32 + shell_speed = AMMO_SPEED_TIER_3 + +/datum/ammo/rocket/wp/quad/on_hit_mob(mob/mob, obj/projectile/projectile) + drop_flame(get_turf(mob), projectile.weapon_cause_data) + explosion(projectile.loc, -1, 2, 4, 5, , , ,projectile.weapon_cause_data) + +/datum/ammo/rocket/wp/quad/on_hit_obj(obj/object, obj/projectile/projectile) + drop_flame(get_turf(object), projectile.weapon_cause_data) + explosion(projectile.loc, -1, 2, 4, 5, , , ,projectile.weapon_cause_data) + +/datum/ammo/rocket/wp/quad/on_hit_turf(turf/turf, obj/projectile/projectile) + drop_flame(turf, projectile.weapon_cause_data) + explosion(projectile.loc, -1, 2, 4, 5, , , ,projectile.weapon_cause_data) + +/datum/ammo/rocket/wp/quad/do_at_max_range(obj/projectile/projectile) + drop_flame(get_turf(projectile), projectile.weapon_cause_data) + explosion(projectile.loc, -1, 2, 4, 5, , , ,projectile.weapon_cause_data) + +/datum/ammo/rocket/custom + name = "custom rocket" + +/datum/ammo/rocket/custom/proc/prime(atom/atom, obj/projectile/projectile) + var/obj/item/weapon/gun/launcher/rocket/launcher = projectile.shot_from + var/obj/item/ammo_magazine/rocket/custom/rocket = launcher.current_mag + if(rocket.locked && rocket.warhead && rocket.warhead.detonator) + if(rocket.fuel && rocket.fuel.reagents.get_reagent_amount(rocket.fuel_type) >= rocket.fuel_requirement) + rocket.forceMove(projectile.loc) + rocket.warhead.cause_data = projectile.weapon_cause_data + rocket.warhead.prime() + qdel(rocket) + smoke.set_up(1, get_turf(atom)) + smoke.start() + +/datum/ammo/rocket/custom/on_hit_mob(mob/mob, obj/projectile/projectile) + prime(mob, projectile) + +/datum/ammo/rocket/custom/on_hit_obj(obj/object, obj/projectile/projectile) + prime(object, projectile) + +/datum/ammo/rocket/custom/on_hit_turf(turf/turf, obj/projectile/projectile) + prime(turf, projectile) + +/datum/ammo/rocket/custom/do_at_max_range(obj/projectile/projectile) + prime(null, projectile) diff --git a/code/datums/ammo/shrapnel.dm b/code/datums/ammo/shrapnel.dm new file mode 100644 index 000000000000..e27caa4b277d --- /dev/null +++ b/code/datums/ammo/shrapnel.dm @@ -0,0 +1,157 @@ +/* +//====== + Shrapnel +//====== +*/ +/datum/ammo/bullet/shrapnel + name = "shrapnel" + icon_state = "buckshot" + accurate_range_min = 5 + flags_ammo_behavior = AMMO_BALLISTIC|AMMO_STOPPED_BY_COVER + + accuracy = HIT_ACCURACY_TIER_3 + accurate_range = 32 + max_range = 8 + damage = 25 + damage_var_low = -PROJECTILE_VARIANCE_TIER_6 + damage_var_high = PROJECTILE_VARIANCE_TIER_6 + penetration = ARMOR_PENETRATION_TIER_4 + shell_speed = AMMO_SPEED_TIER_2 + shrapnel_chance = 5 + +/datum/ammo/bullet/shrapnel/on_hit_obj(obj/O, obj/projectile/P) + if(istype(O, /obj/structure/barricade)) + var/obj/structure/barricade/B = O + B.health -= rand(2, 5) + B.update_health(1) + +/datum/ammo/bullet/shrapnel/rubber + name = "rubber pellets" + icon_state = "rubber_pellets" + flags_ammo_behavior = AMMO_STOPPED_BY_COVER + + damage = 0 + stamina_damage = 25 + shrapnel_chance = 0 + + +/datum/ammo/bullet/shrapnel/hornet_rounds + name = ".22 hornet round" + icon_state = "hornet_round" + flags_ammo_behavior = AMMO_BALLISTIC + damage = 20 + shrapnel_chance = 0 + shell_speed = AMMO_SPEED_TIER_3//she fast af boi + penetration = ARMOR_PENETRATION_TIER_5 + +/datum/ammo/bullet/shrapnel/hornet_rounds/on_hit_mob(mob/M, obj/projectile/P) + . = ..() + M.AddComponent(/datum/component/bonus_damage_stack, 10, world.time) + +/datum/ammo/bullet/shrapnel/incendiary + name = "flaming shrapnel" + icon_state = "beanbag" // looks suprisingly a lot like flaming shrapnel chunks + flags_ammo_behavior = AMMO_STOPPED_BY_COVER + + shell_speed = AMMO_SPEED_TIER_1 + damage = 20 + penetration = ARMOR_PENETRATION_TIER_4 + +/datum/ammo/bullet/shrapnel/incendiary/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +/datum/ammo/bullet/shrapnel/metal + name = "metal shrapnel" + icon_state = "shrapnelshot_bit" + flags_ammo_behavior = AMMO_STOPPED_BY_COVER|AMMO_BALLISTIC + shell_speed = AMMO_SPEED_TIER_1 + damage = 30 + shrapnel_chance = 15 + accuracy = HIT_ACCURACY_TIER_8 + penetration = ARMOR_PENETRATION_TIER_4 + +/datum/ammo/bullet/shrapnel/light // weak shrapnel + name = "light shrapnel" + icon_state = "shrapnel_light" + + damage = 10 + penetration = ARMOR_PENETRATION_TIER_1 + shell_speed = AMMO_SPEED_TIER_1 + shrapnel_chance = 0 + +/datum/ammo/bullet/shrapnel/light/human + name = "human bone fragments" + icon_state = "shrapnel_human" + + shrapnel_chance = 50 + shrapnel_type = /obj/item/shard/shrapnel/bone_chips/human + +/datum/ammo/bullet/shrapnel/light/human/var1 // sprite variants + icon_state = "shrapnel_human1" + +/datum/ammo/bullet/shrapnel/light/human/var2 // sprite variants + icon_state = "shrapnel_human2" + +/datum/ammo/bullet/shrapnel/light/xeno + name = "alien bone fragments" + icon_state = "shrapnel_xeno" + + shrapnel_chance = 50 + shrapnel_type = /obj/item/shard/shrapnel/bone_chips/xeno + +/datum/ammo/bullet/shrapnel/spall // weak shrapnel + name = "spall" + icon_state = "shrapnel_light" + + damage = 10 + penetration = ARMOR_PENETRATION_TIER_1 + shell_speed = AMMO_SPEED_TIER_1 + shrapnel_chance = 0 + +/datum/ammo/bullet/shrapnel/light/glass + name = "glass shrapnel" + icon_state = "shrapnel_glass" + +/datum/ammo/bullet/shrapnel/light/effect/ // no damage, but looks bright and neat + name = "sparks" + + damage = 1 // Tickle tickle + +/datum/ammo/bullet/shrapnel/light/effect/ver1 + icon_state = "shrapnel_bright1" + +/datum/ammo/bullet/shrapnel/light/effect/ver2 + icon_state = "shrapnel_bright2" + +/datum/ammo/bullet/shrapnel/jagged + shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 + accuracy = HIT_ACCURACY_TIER_MAX + +/datum/ammo/bullet/shrapnel/jagged/on_hit_mob(mob/M, obj/projectile/P) + if(isxeno(M)) + M.apply_effect(0.4, SLOW) + +/* +//======== + CAS 30mm impacters +//======== +*/ +/datum/ammo/bullet/shrapnel/gau //for the GAU to have a impact bullet instead of firecrackers + name = "30mm Multi-Purpose shell" + + damage = 1 // ALL DAMAGE IS IN dropship_ammo SO WE CAN DEAL DAMAGE TO RESTING MOBS, these will still remain however so that we can get cause_data and status effects. + damage_type = BRUTE + penetration = ARMOR_PENETRATION_TIER_2 + accuracy = HIT_ACCURACY_TIER_MAX + max_range = 0 + shrapnel_chance = 100 //the least of your problems + +/datum/ammo/bullet/shrapnel/gau/at + name = "30mm Anti-Tank shell" + + damage = 1 // ALL DAMAGE IS IN dropship_ammo SO WE CAN DEAL DAMAGE TO RESTING MOBS, these will still remain however so that we can get cause_data and status effects. + penetration = ARMOR_PENETRATION_TIER_8 + accuracy = HIT_ACCURACY_TIER_MAX diff --git a/code/datums/ammo/xeno.dm b/code/datums/ammo/xeno.dm new file mode 100644 index 000000000000..7fec3cf3b9a3 --- /dev/null +++ b/code/datums/ammo/xeno.dm @@ -0,0 +1,397 @@ +/* +//====== + Xeno Spits +//====== +*/ +/datum/ammo/xeno + icon_state = "neurotoxin" + ping = "ping_x" + damage_type = TOX + flags_ammo_behavior = AMMO_XENO + + ///used to make cooldown of the different spits vary. + var/added_spit_delay = 0 + var/spit_cost + + /// Should there be a windup for this spit? + var/spit_windup = FALSE + + /// Should there be an additional warning while winding up? (do not put to true if there is not a windup) + var/pre_spit_warn = FALSE + accuracy = HIT_ACCURACY_TIER_8*2 + max_range = 12 + +/datum/ammo/xeno/toxin + name = "neurotoxic spit" + damage_falloff = 0 + flags_ammo_behavior = AMMO_XENO|AMMO_IGNORE_RESIST + spit_cost = 25 + var/effect_power = XENO_NEURO_TIER_4 + var/datum/callback/neuro_callback + + shell_speed = AMMO_SPEED_TIER_3 + max_range = 7 + +/datum/ammo/xeno/toxin/New() + ..() + + neuro_callback = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(apply_neuro)) + +/proc/apply_neuro(mob/living/M, power, insta_neuro) + if(skillcheck(M, SKILL_ENDURANCE, SKILL_ENDURANCE_MAX) && !insta_neuro) + M.visible_message(SPAN_DANGER("[M] withstands the neurotoxin!")) + return //endurance 5 makes you immune to weak neurotoxin + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.chem_effect_flags & CHEM_EFFECT_RESIST_NEURO || H.species.flags & NO_NEURO) + H.visible_message(SPAN_DANGER("[M] shrugs off the neurotoxin!")) + return //species like zombies or synths are immune to neurotoxin + + if(!isxeno(M)) + if(insta_neuro) + if(M.GetKnockDownDuration() < 3) // Why are you not using KnockDown(3) ? Do you even know 3 is SIX seconds ? So many questions left unanswered. + M.KnockDown(power) + M.Stun(power) + return + + if(ishuman(M)) + M.apply_effect(2.5, SUPERSLOW) + M.visible_message(SPAN_DANGER("[M]'s movements are slowed.")) + + var/no_clothes_neuro = FALSE + + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(!H.wear_suit || H.wear_suit.slowdown == 0) + no_clothes_neuro = TRUE + + if(no_clothes_neuro) + if(M.GetKnockDownDuration() < 5) // Nobody actually knows what this means. Supposedly it means less than 10 seconds. Frankly if you get locked into 10s of knockdown to begin with there are bigger issues. + M.KnockDown(power) + M.Stun(power) + M.visible_message(SPAN_DANGER("[M] falls prone.")) + +/proc/apply_scatter_neuro(mob/living/M) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(skillcheck(M, SKILL_ENDURANCE, SKILL_ENDURANCE_MAX)) + M.visible_message(SPAN_DANGER("[M] withstands the neurotoxin!")) + return //endurance 5 makes you immune to weak neuro + if(H.chem_effect_flags & CHEM_EFFECT_RESIST_NEURO || H.species.flags & NO_NEURO) + H.visible_message(SPAN_DANGER("[M] shrugs off the neurotoxin!")) + return + + M.KnockDown(0.7) // Completely arbitrary values from another time where stun timers incorrectly stacked. Kill as needed. + M.Stun(0.7) + M.visible_message(SPAN_DANGER("[M] falls prone.")) + +/datum/ammo/xeno/toxin/on_hit_mob(mob/M,obj/projectile/P) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.status_flags & XENO_HOST) + neuro_callback.Invoke(H, effect_power, TRUE) + return + + neuro_callback.Invoke(M, effect_power, FALSE) + +/datum/ammo/xeno/toxin/medium //Spitter + name = "neurotoxic spatter" + spit_cost = 50 + effect_power = 1 + + shell_speed = AMMO_SPEED_TIER_3 + +/datum/ammo/xeno/toxin/queen + name = "neurotoxic spit" + spit_cost = 50 + effect_power = 2 + + accuracy = HIT_ACCURACY_TIER_5*2 + max_range = 6 - 1 + +/datum/ammo/xeno/toxin/queen/on_hit_mob(mob/M,obj/projectile/P) + neuro_callback.Invoke(M, effect_power, TRUE) + +/datum/ammo/xeno/toxin/shotgun + name = "neurotoxic droplet" + flags_ammo_behavior = AMMO_XENO|AMMO_IGNORE_RESIST + bonus_projectiles_type = /datum/ammo/xeno/toxin/shotgun/additional + + accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 + accurate_range = 5 + max_range = 5 + scatter = SCATTER_AMOUNT_NEURO + bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_4 + +/datum/ammo/xeno/toxin/shotgun/New() + ..() + + neuro_callback = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(apply_scatter_neuro)) + +/datum/ammo/xeno/toxin/shotgun/additional + name = "additional neurotoxic droplets" + + bonus_projectiles_amount = 0 + +/datum/ammo/xeno/acid + name = "acid spit" + icon_state = "xeno_acid" + sound_hit = "acid_hit" + sound_bounce = "acid_bounce" + damage_type = BURN + spit_cost = 25 + flags_ammo_behavior = AMMO_ACIDIC|AMMO_XENO + accuracy = HIT_ACCURACY_TIER_5 + damage = 20 + max_range = 8 // 7 will disappear on diagonals. i love shitcode + penetration = ARMOR_PENETRATION_TIER_2 + shell_speed = AMMO_SPEED_TIER_3 + +/datum/ammo/xeno/acid/on_shield_block(mob/M, obj/projectile/P) + burst(M,P,damage_type) + +/datum/ammo/xeno/acid/on_hit_mob(mob/M, obj/projectile/P) + if(iscarbon(M)) + var/mob/living/carbon/C = M + if(C.status_flags & XENO_HOST && HAS_TRAIT(C, TRAIT_NESTED) || C.stat == DEAD) + return FALSE + ..() + +/datum/ammo/xeno/acid/spatter + name = "acid spatter" + + damage = 30 + max_range = 6 + +/datum/ammo/xeno/acid/spatter/on_hit_mob(mob/M, obj/projectile/P) + . = ..() + if(. == FALSE) + return + + new /datum/effects/acid(M, P.firer) + +/datum/ammo/xeno/acid/praetorian + name = "acid splash" + + accuracy = HIT_ACCURACY_TIER_10 + HIT_ACCURACY_TIER_5 + max_range = 8 + damage = 30 + shell_speed = AMMO_SPEED_TIER_2 + added_spit_delay = 0 + +/datum/ammo/xeno/acid/dot + name = "acid spit" + +/datum/ammo/xeno/acid/prae_nade // Used by base prae's acid nade + name = "acid scatter" + + flags_ammo_behavior = AMMO_STOPPED_BY_COVER + accuracy = HIT_ACCURACY_TIER_5 + accurate_range = 32 + max_range = 4 + damage = 25 + shell_speed = AMMO_SPEED_TIER_1 + scatter = SCATTER_AMOUNT_TIER_6 + + apply_delegate = FALSE + +/datum/ammo/xeno/acid/prae_nade/on_hit_mob(mob/M, obj/projectile/P) + if (!ishuman(M)) + return + + var/mob/living/carbon/human/H = M + + var/datum/effects/prae_acid_stacks/PAS = null + for (var/datum/effects/prae_acid_stacks/prae_acid_stacks in H.effects_list) + PAS = prae_acid_stacks + break + + if (PAS == null) + PAS = new /datum/effects/prae_acid_stacks(H) + else + PAS.increment_stack_count() + +/datum/ammo/xeno/boiler_gas + name = "glob of neuro gas" + icon_state = "neuro_glob" + ping = "ping_x" + debilitate = list(2,2,0,1,11,12,1,10) // Stun,knockdown,knockout,irradiate,stutter,eyeblur,drowsy,agony + flags_ammo_behavior = AMMO_SKIPS_ALIENS|AMMO_EXPLOSIVE|AMMO_IGNORE_RESIST|AMMO_HITS_TARGET_TURF|AMMO_ACIDIC + var/datum/effect_system/smoke_spread/smoke_system + spit_cost = 200 + pre_spit_warn = TRUE + spit_windup = 5 SECONDS + accuracy_var_high = PROJECTILE_VARIANCE_TIER_4 + accuracy_var_low = PROJECTILE_VARIANCE_TIER_4 + accuracy = HIT_ACCURACY_TIER_2 + scatter = SCATTER_AMOUNT_TIER_4 + shell_speed = 0.75 + max_range = 16 + /// range on the smoke in tiles from center + var/smokerange = 4 + var/lifetime_mult = 1.0 + +/datum/ammo/xeno/boiler_gas/New() + ..() + set_xeno_smoke() + +/datum/ammo/xeno/boiler_gas/Destroy() + qdel(smoke_system) + smoke_system = null + . = ..() + +/datum/ammo/xeno/boiler_gas/on_hit_mob(mob/moob, obj/projectile/proj) + if(iscarbon(moob)) + var/mob/living/carbon/carbon = moob + if(carbon.status_flags & XENO_HOST && HAS_TRAIT(carbon, TRAIT_NESTED) || carbon.stat == DEAD) + return + var/datum/effects/neurotoxin/neuro_effect = locate() in moob.effects_list + if(!neuro_effect) + neuro_effect = new /datum/effects/neurotoxin(moob, proj.firer) + neuro_effect.duration += 5 + moob.apply_effect(3, DAZE) + to_chat(moob, SPAN_HIGHDANGER("Neurotoxic liquid spreads all over you and immediately soaks into your pores and orifices! Oh fuck!")) // Fucked up but have a chance to escape rather than being game-ended + drop_nade(get_turf(proj), proj,TRUE) + +/datum/ammo/xeno/boiler_gas/on_hit_obj(obj/outbacksteakhouse, obj/projectile/proj) + drop_nade(get_turf(proj), proj) + +/datum/ammo/xeno/boiler_gas/on_hit_turf(turf/Turf, obj/projectile/proj) + if(Turf.density && isturf(proj.loc)) + drop_nade(proj.loc, proj) //we don't want the gas globs to land on dense turfs, they block smoke expansion. + else + drop_nade(Turf, proj) + +/datum/ammo/xeno/boiler_gas/do_at_max_range(obj/projectile/proj) + drop_nade(get_turf(proj), proj) + +/datum/ammo/xeno/boiler_gas/proc/set_xeno_smoke(obj/projectile/proj) + smoke_system = new /datum/effect_system/smoke_spread/xeno_weaken() + +/datum/ammo/xeno/boiler_gas/proc/drop_nade(turf/turf, obj/projectile/proj) + var/lifetime_mult = 1.0 + var/datum/cause_data + if(isboiler(proj.firer)) + cause_data = proj.weapon_cause_data + smoke_system.set_up(smokerange, 0, turf, new_cause_data = cause_data) + smoke_system.lifetime = 12 * lifetime_mult + smoke_system.start() + turf.visible_message(SPAN_DANGER("A glob of acid lands with a splat and explodes into noxious fumes!")) + + +/datum/ammo/xeno/boiler_gas/acid + name = "glob of acid gas" + icon_state = "acid_glob" + ping = "ping_x" + accuracy_var_high = PROJECTILE_VARIANCE_TIER_4 + smokerange = 3 + + +/datum/ammo/xeno/boiler_gas/acid/set_xeno_smoke(obj/projectile/proj) + smoke_system = new /datum/effect_system/smoke_spread/xeno_acid() + +/datum/ammo/xeno/boiler_gas/acid/on_hit_mob(mob/moob, obj/projectile/proj) + if(iscarbon(moob)) + var/mob/living/carbon/carbon = moob + if(carbon.status_flags & XENO_HOST && HAS_TRAIT(carbon, TRAIT_NESTED) || carbon.stat == DEAD) + return + to_chat(moob,SPAN_HIGHDANGER("Acid covers your body! Oh fuck!")) + playsound(moob,"acid_strike",75,1) + INVOKE_ASYNC(moob, TYPE_PROC_REF(/mob, emote), "pain") // why do I need this bullshit + new /datum/effects/acid(moob, proj.firer) + drop_nade(get_turf(proj), proj,TRUE) + +/datum/ammo/xeno/bone_chips + name = "bone chips" + icon_state = "shrapnel_light" + ping = null + flags_ammo_behavior = AMMO_XENO|AMMO_SKIPS_ALIENS|AMMO_STOPPED_BY_COVER|AMMO_IGNORE_ARMOR + damage_type = BRUTE + bonus_projectiles_type = /datum/ammo/xeno/bone_chips/spread + + damage = 8 + max_range = 6 + accuracy = HIT_ACCURACY_TIER_8 + accuracy_var_low = PROJECTILE_VARIANCE_TIER_7 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_7 + bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_7 + shrapnel_type = /obj/item/shard/shrapnel/bone_chips + shrapnel_chance = 60 + +/datum/ammo/xeno/bone_chips/on_hit_mob(mob/living/M, obj/projectile/P) + if(iscarbon(M)) + var/mob/living/carbon/C = M + if((HAS_FLAG(C.status_flags, XENO_HOST) && HAS_TRAIT(C, TRAIT_NESTED)) || C.stat == DEAD) + return + if(ishuman_strict(M) || isxeno(M)) + playsound(M, 'sound/effects/spike_hit.ogg', 25, 1, 1) + if(M.slowed < 3) + M.apply_effect(3, SLOW) + +/datum/ammo/xeno/bone_chips/spread + name = "small bone chips" + + scatter = 30 // We want a wild scatter angle + max_range = 5 + bonus_projectiles_amount = 0 + +/datum/ammo/xeno/bone_chips/spread/short_range + name = "small bone chips" + + max_range = 3 // Very short range + +/datum/ammo/xeno/bone_chips/spread/runner_skillshot + name = "bone chips" + + scatter = 0 + max_range = 5 + damage = 10 + shrapnel_chance = 0 + +/datum/ammo/xeno/bone_chips/spread/runner/on_hit_mob(mob/living/M, obj/projectile/P) + if(iscarbon(M)) + var/mob/living/carbon/C = M + if((HAS_FLAG(C.status_flags, XENO_HOST) && HAS_TRAIT(C, TRAIT_NESTED)) || C.stat == DEAD) + return + if(ishuman_strict(M) || isxeno(M)) + playsound(M, 'sound/effects/spike_hit.ogg', 25, 1, 1) + if(M.slowed < 6) + M.apply_effect(6, SLOW) + +/datum/ammo/xeno/oppressor_tail + name = "tail hook" + icon_state = "none" + ping = null + flags_ammo_behavior = AMMO_XENO|AMMO_SKIPS_ALIENS|AMMO_STOPPED_BY_COVER + damage_type = BRUTE + + damage = XENO_DAMAGE_TIER_5 + max_range = 4 + accuracy = HIT_ACCURACY_TIER_MAX + +/datum/ammo/xeno/oppressor_tail/on_bullet_generation(obj/projectile/generated_projectile, mob/bullet_generator) + //The projectile has no icon, so the overlay shows up in FRONT of the projectile, and the beam connects to it in the middle. + var/image/hook_overlay = new(icon = 'icons/effects/beam.dmi', icon_state = "oppressor_tail_hook", layer = BELOW_MOB_LAYER) + generated_projectile.overlays += hook_overlay + +/datum/ammo/xeno/oppressor_tail/on_hit_mob(mob/target, obj/projectile/fired_proj) + var/mob/living/carbon/xenomorph/xeno_firer = fired_proj.firer + if(xeno_firer.can_not_harm(target)) + return + + shake_camera(target, 5, 0.1 SECONDS) + var/obj/effect/beam/tail_beam = fired_proj.firer.beam(target, "oppressor_tail", 'icons/effects/beam.dmi', 0.5 SECONDS, 5) + var/image/tail_image = image('icons/effects/status_effects.dmi', "hooked") + target.overlays += tail_image + + new /datum/effects/xeno_slow(target, fired_proj.firer, ttl = 0.5 SECONDS) + + target.apply_effect(0.5, ROOT) + INVOKE_ASYNC(target, TYPE_PROC_REF(/atom/movable, throw_atom), fired_proj.firer, get_dist(fired_proj.firer, target)-1, SPEED_VERY_FAST) + + qdel(tail_beam) + addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/ammo/xeno/oppressor_tail, remove_tail_overlay), target, tail_image), 0.5 SECONDS) //needed so it can actually be seen as it gets deleted too quickly otherwise. + +/datum/ammo/xeno/oppressor_tail/proc/remove_tail_overlay(mob/overlayed_mob, image/tail_image) + overlayed_mob.overlays -= tail_image diff --git a/code/datums/autocells/auto_cell.dm b/code/datums/autocells/auto_cell.dm index accc5f180119..fb679c56676e 100644 --- a/code/datums/autocells/auto_cell.dm +++ b/code/datums/autocells/auto_cell.dm @@ -37,7 +37,7 @@ in_turf = T LAZYADD(in_turf.autocells, src) - cellauto_cells += src + GLOB.cellauto_cells += src birth() @@ -48,7 +48,7 @@ LAZYREMOVE(in_turf.autocells, src) in_turf = null - cellauto_cells -= src + GLOB.cellauto_cells -= src death() @@ -88,7 +88,7 @@ // Get cardinal neighbors if(neighbor_type & NEIGHBORS_CARDINAL) - for(var/dir in cardinal) + for(var/dir in GLOB.cardinals) var/turf/T = get_step(in_turf, dir) if(QDELETED(T)) continue @@ -100,7 +100,7 @@ // Get ordinal/diagonal neighbors if(neighbor_type & NEIGHBORS_ORDINAL) - for(var/dir in diagonals) + for(var/dir in GLOB.diagonals) var/turf/T = get_step(in_turf, dir) if(QDELETED(T)) continue diff --git a/code/datums/autocells/explosion.dm b/code/datums/autocells/explosion.dm index 42e1409d595f..367567a6d40d 100644 --- a/code/datums/autocells/explosion.dm +++ b/code/datums/autocells/explosion.dm @@ -23,7 +23,7 @@ That's it. There are some special rules, though, namely: - * If the explosion occured in a wall, the wave is strengthened + * If the explosion occurred in a wall, the wave is strengthened with power *= reflection_multiplier and reflected back in the direction it came from @@ -109,7 +109,7 @@ survivor.power += dying.power // Two waves travling towards each other weakens the explosion - if(survivor.direction == reverse_dir[dying.direction]) + if(survivor.direction == GLOB.reverse_dir[dying.direction]) survivor.power -= dying.power return is_stronger @@ -120,11 +120,11 @@ // If the cell is the epicenter, propagate in all directions if(isnull(direction)) - return alldirs + return GLOB.alldirs - var/dir = reflected ? reverse_dir[direction] : direction + var/dir = reflected ? GLOB.reverse_dir[direction] : direction - if(dir in cardinal) + if(dir in GLOB.cardinals) propagation_dirs += list(dir, turn(dir, 45), turn(dir, -45)) else propagation_dirs += dir @@ -180,7 +180,7 @@ for(var/dir in to_spread) // Diagonals are longer, that should be reflected in the power falloff var/dir_falloff = 1 - if(dir in diagonals) + if(dir in GLOB.diagonals) dir_falloff = 1.414 if(isnull(direction)) @@ -210,7 +210,7 @@ // Set the direction the explosion is traveling in E.direction = dir //Diagonal cells have a small delay when branching off the center. This helps the explosion look circular - if(!direction && (dir in diagonals)) + if(!direction && (dir in GLOB.diagonals)) E.delay = 1 setup_new_cell(E) diff --git a/code/datums/autocells/vomit_wave.dm b/code/datums/autocells/vomit_wave.dm index 62ea1d4c6e7e..396bf6d3e528 100644 --- a/code/datums/autocells/vomit_wave.dm +++ b/code/datums/autocells/vomit_wave.dm @@ -37,7 +37,7 @@ return // Propagate to cardinal directions - var/list/to_spread = cardinal.Copy() + var/list/to_spread = GLOB.cardinals.Copy() for(var/datum/automata_cell/vomit_wave/C in neighbors) to_spread -= get_dir(in_turf, C.in_turf) diff --git a/code/datums/balloon_alerts/balloon_alerts.dm b/code/datums/balloon_alerts/balloon_alerts.dm index 8ef770fa9d7f..59f826fbe7d2 100644 --- a/code/datums/balloon_alerts/balloon_alerts.dm +++ b/code/datums/balloon_alerts/balloon_alerts.dm @@ -37,20 +37,15 @@ if (isnull(viewer_client)) return - var/bound_width = world.icon_size - if (ismovable(src)) - var/atom/movable/movable_source = src - bound_width = movable_source.bound_width - var/image/balloon_alert = image(loc = get_atom_on_turf(src), layer = ABOVE_MOB_LAYER) balloon_alert.plane = RUNECHAT_PLANE balloon_alert.alpha = 0 balloon_alert.color = text_color balloon_alert.appearance_flags = NO_CLIENT_COLOR|KEEP_APART|RESET_COLOR|RESET_TRANSFORM|RESET_ALPHA balloon_alert.maptext = MAPTEXT("[text]") - balloon_alert.maptext_x = (BALLOON_TEXT_WIDTH - bound_width) * -0.5 balloon_alert.maptext_height = WXH_TO_HEIGHT(viewer_client?.MeasureText(text, null, BALLOON_TEXT_WIDTH)) balloon_alert.maptext_width = BALLOON_TEXT_WIDTH + balloon_alert.maptext_x = get_maxptext_x_offset(balloon_alert) if(appearance_flags & PIXEL_SCALE) balloon_alert.appearance_flags |= PIXEL_SCALE //"[text]" diff --git a/code/datums/beam.dm b/code/datums/beam.dm index e51dcafa0218..08b5ea9f9a64 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -125,11 +125,11 @@ //Position the effect so the beam is one continous line var/a if(abs(Pixel_x)>world.icon_size) - a = Pixel_x > 0 ? round(Pixel_x/32) : CEILING(Pixel_x/world.icon_size, 1) + a = Pixel_x > 0 ? round(Pixel_x/32) : Ceiling(Pixel_x/world.icon_size) X.x += a Pixel_x %= world.icon_size if(abs(Pixel_y)>world.icon_size) - a = Pixel_y > 0 ? round(Pixel_y/32) : CEILING(Pixel_y/world.icon_size, 1) + a = Pixel_y > 0 ? round(Pixel_y/32) : Ceiling(Pixel_y/world.icon_size) X.y += a Pixel_y %= world.icon_size diff --git a/code/datums/components/autofire/_automated_fire.dm b/code/datums/components/autofire/_automated_fire.dm new file mode 100644 index 000000000000..9abd6a152199 --- /dev/null +++ b/code/datums/components/autofire/_automated_fire.dm @@ -0,0 +1,49 @@ +/datum/component/automatedfire + ///The owner of this component + var/atom/shooter + /// Contains the scheduled fire time, used for scheduling EOL + var/next_fire + /// Contains the reference to the next component in the bucket, used by autofire subsystem + var/datum/component/automatedfire/next + /// Contains the reference to the previous component in the bucket, used by autofire subsystem + var/datum/component/automatedfire/prev + + +/// schedule the shooter into the system, inserting it into the next fire queue +/datum/component/automatedfire/proc/schedule_shot() + //We move to another bucket, so we clean the reference from the former linked list + next = null + prev = null + var/list/bucket_list = SSautomatedfire.bucket_list + + // Ensure the next_fire time is properly bound to avoid missing a scheduled event + next_fire = max(CEILING(next_fire, world.tick_lag), world.time + world.tick_lag) + + // Get bucket position and a local reference to the datum var, it's faster to access this way + var/bucket_pos = AUTOFIRE_BUCKET_POS(next_fire) + + // Get the bucket head for that bucket, increment the bucket count + var/datum/component/automatedfire/bucket_head = bucket_list[bucket_pos] + SSautomatedfire.shooter_count++ + + // If there is no existing head of this bucket, we can set this shooter to be that head + if (!bucket_head) + bucket_list[bucket_pos] = src + return + + // Otherwise it's a simple insertion into the double-linked list + if (bucket_head.next) + next = bucket_head.next + next.prev = src + + bucket_head.next = src + prev = bucket_head + + //Something went wrong, probably a lag spike or something. To prevent infinite loops, we reschedule it to a another next fire + if(prev == src) + next_fire += 1 + schedule_shot() + +///Handle the firing of the autofire component +/datum/component/automatedfire/proc/process_shot() + return diff --git a/code/datums/components/autofire/autofire.dm b/code/datums/components/autofire/autofire.dm new file mode 100644 index 000000000000..455fb70a9fa1 --- /dev/null +++ b/code/datums/components/autofire/autofire.dm @@ -0,0 +1,144 @@ +/datum/component/automatedfire/autofire + ///The current fire mode of the shooter + var/fire_mode + ///Delay between two shots when in full auto + var/auto_fire_shot_delay + ///Delay between two burst shots + var/burstfire_shot_delay + ///How many bullets are fired in burst mode + var/burst_shots_to_fire + ///Count the shots fired when bursting + var/shots_fired = 0 + ///If the shooter is currently shooting + var/shooting = FALSE + ///If TRUE, the shooter will reset its references at the end of the burst + var/have_to_reset_at_burst_end = FALSE + ///If we are in a burst + var/bursting = FALSE + /// The multiplier for how much slower the parent should fire in automatic mode. 1 is normal, 1.2 is 20% slower, 2 is 100% slower, etc. + var/automatic_delay_mult = 1 + ///Callback to set bursting mode on the parent + var/datum/callback/callback_bursting + ///Callback to ask the parent to reset its firing vars + var/datum/callback/callback_reset_fire + ///Callback to ask the parent to fire + var/datum/callback/callback_fire + ///Callback to ask the parent to display ammo + var/datum/callback/callback_display_ammo + ///Callback to set parent's fa_firing + var/datum/callback/callback_set_firing + +/datum/component/automatedfire/autofire/Initialize(auto_fire_shot_delay = 0.3 SECONDS, burstfire_shot_delay, burst_shots_to_fire = 3, fire_mode = GUN_FIREMODE_SEMIAUTO, automatic_delay_mult = 1, datum/callback/callback_bursting, datum/callback/callback_reset_fire, datum/callback/callback_fire, datum/callback/callback_display_ammo, datum/callback/callback_set_firing) + . = ..() + + RegisterSignal(parent, COMSIG_GUN_FIRE_MODE_TOGGLE, PROC_REF(modify_fire_mode)) + RegisterSignal(parent, COMSIG_GUN_AUTOFIREDELAY_MODIFIED, PROC_REF(modify_fire_shot_delay)) + RegisterSignal(parent, COMSIG_GUN_BURST_SHOTS_TO_FIRE_MODIFIED, PROC_REF(modify_burst_shots_to_fire)) + RegisterSignal(parent, COMSIG_GUN_BURST_SHOT_DELAY_MODIFIED, PROC_REF(modify_burstfire_shot_delay)) + RegisterSignal(parent, COMSIG_GUN_FIRE, PROC_REF(initiate_shot)) + RegisterSignal(parent, COMSIG_GUN_STOP_FIRE, PROC_REF(stop_firing)) + RegisterSignal(parent, COMSIG_GUN_INTERRUPT_FIRE, PROC_REF(hard_reset)) + + src.auto_fire_shot_delay = auto_fire_shot_delay + src.burstfire_shot_delay = burstfire_shot_delay + src.burst_shots_to_fire = burst_shots_to_fire + src.fire_mode = fire_mode + src.automatic_delay_mult = automatic_delay_mult + src.callback_bursting = callback_bursting + src.callback_reset_fire = callback_reset_fire + src.callback_fire = callback_fire + src.callback_display_ammo = callback_display_ammo + src.callback_set_firing = callback_set_firing + +/datum/component/automatedfire/autofire/Destroy(force, silent) + QDEL_NULL(callback_fire) + QDEL_NULL(callback_reset_fire) + QDEL_NULL(callback_bursting) + QDEL_NULL(callback_display_ammo) + QDEL_NULL(callback_set_firing) + return ..() + +///Setter for fire mode +/datum/component/automatedfire/autofire/proc/modify_fire_mode(datum/source, fire_mode) + SIGNAL_HANDLER + src.fire_mode = fire_mode + +///Setter for auto fire shot delay +/datum/component/automatedfire/autofire/proc/modify_fire_shot_delay(datum/source, auto_fire_shot_delay) + SIGNAL_HANDLER + src.auto_fire_shot_delay = auto_fire_shot_delay + +///Setter for the number of shots in a burst +/datum/component/automatedfire/autofire/proc/modify_burst_shots_to_fire(datum/source, burst_shots_to_fire) + SIGNAL_HANDLER + src.burst_shots_to_fire = burst_shots_to_fire + +///Setter for burst shot delay +/datum/component/automatedfire/autofire/proc/modify_burstfire_shot_delay(datum/source, burstfire_shot_delay) + SIGNAL_HANDLER + src.burstfire_shot_delay = burstfire_shot_delay + +///Insert the component in the bucket system if it was not in already +/datum/component/automatedfire/autofire/proc/initiate_shot() + SIGNAL_HANDLER + if(shooting)//if we are already shooting, it means the shooter is still on cooldown + if(bursting && (world.time > (next_fire + (burstfire_shot_delay * burst_shots_to_fire)))) + hard_reset() + return + shooting = TRUE + process_shot() + +///Remove the component from the bucket system if it was in +/datum/component/automatedfire/autofire/proc/stop_firing() + SIGNAL_HANDLER + if(!shooting) + return + ///We are burst firing, we can't clean the state now. We will do it when the burst is over + if(bursting) + have_to_reset_at_burst_end = TRUE + return + shooting = FALSE + shots_fired = 0 + +///Hard reset the autofire, happens when the shooter fall/is thrown, at the end of a burst or when it runs out of ammunition +/datum/component/automatedfire/autofire/proc/hard_reset() + SIGNAL_HANDLER + callback_reset_fire.Invoke() //resets the gun + shots_fired = 0 + have_to_reset_at_burst_end = FALSE + if(bursting) + bursting = FALSE + callback_bursting.Invoke(FALSE) + shooting = FALSE + + +///Ask the shooter to fire and schedule the next shot if need +/datum/component/automatedfire/autofire/process_shot() + if(!shooting) + return + if(next_fire > world.time)//This mean duplication somewhere, we abort now + return + if(!(callback_fire.Invoke() & AUTOFIRE_CONTINUE))//reset fire if we want to stop + hard_reset() + return + switch(fire_mode) + if(GUN_FIREMODE_BURSTFIRE) + shots_fired++ + if(shots_fired == burst_shots_to_fire) + callback_bursting?.Invoke(FALSE) + callback_display_ammo?.Invoke() + bursting = FALSE + stop_firing() + if(have_to_reset_at_burst_end)//We failed to reset because we were bursting, we do it now + callback_reset_fire?.Invoke() + have_to_reset_at_burst_end = FALSE + return + callback_bursting?.Invoke(TRUE) + bursting = TRUE + next_fire = world.time + burstfire_shot_delay + if(GUN_FIREMODE_AUTOMATIC) + callback_set_firing?.Invoke(TRUE) + next_fire = world.time + (auto_fire_shot_delay * automatic_delay_mult) + if(GUN_FIREMODE_SEMIAUTO) + return + schedule_shot() diff --git a/code/datums/components/cell.dm b/code/datums/components/cell.dm new file mode 100644 index 000000000000..81ef3733e2e2 --- /dev/null +++ b/code/datums/components/cell.dm @@ -0,0 +1,202 @@ +#define UNLIMITED_CHARGE -1 +#define UNLIMITED_DISTANCE -1 + +/datum/component/cell + dupe_mode = COMPONENT_DUPE_UNIQUE + /// Maximum charge of the power cell, set to -1 for infinite charge + var/max_charge = 10000 + /// Initial max charge of the power cell + var/initial_max_charge + /// Current charge of power cell + var/charge = 10000 + /// If the component can be recharged by hitting its parent with a cell + var/hit_charge = FALSE + /// The maximum amount that can be recharged per tick when using a cell to recharge this component + var/max_recharge_tick = 400 + /// If draining charge on process(), how much to drain per process call + var/charge_drain = 10 + /// If the parent should show cell charge on examine + var/display_charge = TRUE + /// From how many tiles at the highest someone can examine the parent to see the charge + var/charge_examine_range = 1 + /// If the component requires a cell to be inserted to work instead of having an integrated one + var/cell_insert = FALSE + /// Ref to an inserted cell. Should only be null if cell_insert is false + var/obj/item/cell/inserted_cell + + +/datum/component/cell/Initialize( + max_charge = 10000, + hit_charge = FALSE, + max_recharge_tick = 400, + charge_drain = 10, + display_charge = TRUE, + charge_examine_range = 1, + cell_insert = FALSE, + ) + + . = ..() + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + + src.max_charge = max_charge + charge = max_charge + src.hit_charge = hit_charge + src.max_recharge_tick = max_recharge_tick + src.charge_drain = charge_drain + src.display_charge = display_charge + src.charge_examine_range = charge_examine_range + src.cell_insert = cell_insert + +/datum/component/cell/Destroy(force, silent) + QDEL_NULL(inserted_cell) + return ..() + + +/datum/component/cell/RegisterWithParent() + ..() + RegisterSignal(parent, list(COMSIG_PARENT_ATTACKBY, COMSIG_ITEM_ATTACKED), PROC_REF(on_object_hit)) + RegisterSignal(parent, COMSIG_CELL_ADD_CHARGE, PROC_REF(add_charge)) + RegisterSignal(parent, COMSIG_CELL_USE_CHARGE, PROC_REF(use_charge)) + RegisterSignal(parent, COMSIG_CELL_CHECK_CHARGE, PROC_REF(has_charge)) + RegisterSignal(parent, COMSIG_CELL_START_TICK_DRAIN, PROC_REF(start_drain)) + RegisterSignal(parent, COMSIG_CELL_STOP_TICK_DRAIN, PROC_REF(stop_drain)) + RegisterSignal(parent, COMSIG_CELL_REMOVE_CELL, PROC_REF(remove_cell)) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, PROC_REF(on_emp)) + +/datum/component/cell/process() + use_charge(null, charge_drain) + +/datum/component/cell/proc/on_emp(datum/source, severity) + SIGNAL_HANDLER + + use_charge(null, round(max_charge / severity)) + +/datum/component/cell/proc/start_drain(datum/source) + SIGNAL_HANDLER + + START_PROCESSING(SSobj, src) + +/datum/component/cell/proc/stop_drain(datum/source) + SIGNAL_HANDLER + + STOP_PROCESSING(SSobj, src) + +/datum/component/cell/proc/on_examine(datum/source, mob/examiner, list/examine_text) + SIGNAL_HANDLER + + if(!display_charge) + return + + if((charge_examine_range != UNLIMITED_DISTANCE) && get_dist(examiner, parent) > charge_examine_range) + return + + examine_text += "A small gauge in the corner reads \"Power: [round(100 * charge / max_charge)]%\"." + +/datum/component/cell/proc/on_object_hit(datum/source, obj/item/cell/attack_obj, mob/living/attacker, params) + SIGNAL_HANDLER + + if(!hit_charge || !istype(attack_obj)) + return + + if(!cell_insert) + INVOKE_ASYNC(src, PROC_REF(charge_from_cell), attack_obj, attacker) + + else + insert_cell(attack_obj, attacker) + + return COMPONENT_NO_AFTERATTACK|COMPONENT_CANCEL_ITEM_ATTACK + +/datum/component/cell/proc/insert_cell(obj/item/cell/power_cell, mob/living/user) + if(inserted_cell) + to_chat(user, SPAN_WARNING("There's already a power cell in [parent]!")) + return + + if(SEND_SIGNAL(parent, COMSIG_CELL_TRY_INSERT_CELL) & COMPONENT_CANCEL_CELL_INSERT) + return + + power_cell.drop_to_floor(user) + power_cell.forceMove(parent) + inserted_cell = power_cell + charge = power_cell.charge + max_charge = power_cell.maxcharge + +/datum/component/cell/proc/remove_cell(mob/living/user) + SIGNAL_HANDLER + + user.put_in_hands(inserted_cell, TRUE) + to_chat(user, SPAN_NOTICE("You remove [inserted_cell] from [parent].")) + inserted_cell = null + max_charge = initial_max_charge + charge = 0 + +/datum/component/cell/proc/charge_from_cell(obj/item/cell/power_cell, mob/living/user) + if(max_charge == UNLIMITED_CHARGE) + to_chat(user, SPAN_WARNING("[parent] doesn't need more power.")) + return + + while(charge < max_charge) + if(SEND_SIGNAL(parent, COMSIG_CELL_TRY_RECHARGING, user) & COMPONENT_CELL_NO_RECHARGE) + return + + if(power_cell.charge <= 0) + to_chat(user, SPAN_WARNING("[power_cell] is completely dry.")) + return + + if(!do_after(user, 1 SECONDS, (INTERRUPT_ALL & (~INTERRUPT_MOVED)), BUSY_ICON_BUILD, power_cell, INTERRUPT_DIFF_LOC)) + to_chat(user, SPAN_WARNING("You were interrupted.")) + return + + if(power_cell.charge <= 0) + return + + var/to_transfer = min(max_recharge_tick, power_cell.charge, (max_charge - charge)) + if(power_cell.use(to_transfer)) + add_charge(null, to_transfer) + to_chat(user, "You transfer some power between [power_cell] and [parent]. The gauge now reads: [round(100 * charge / max_charge)]%.") + +/datum/component/cell/proc/add_charge(datum/source, charge_add = 0) + SIGNAL_HANDLER + + if(max_charge == UNLIMITED_CHARGE) + return + + if(!charge_add) + return + + charge = clamp(charge + charge_add, 0, max_charge) + +/datum/component/cell/proc/use_charge(datum/source, charge_use = 0) + SIGNAL_HANDLER + + if(max_charge == UNLIMITED_CHARGE) + return + + if(!charge_use) + return + + if(!charge) + return COMPONENT_CELL_NO_USE_CHARGE + + charge = clamp(charge - charge_use, 0, max_charge) + + if(!charge) + on_charge_empty() + return + +/datum/component/cell/proc/has_charge(datum/source, charge_amount = 0) + SIGNAL_HANDLER + + if(!charge) + return COMPONENT_CELL_CHARGE_INSUFFICIENT + + if(charge < charge_amount) + return COMPONENT_CELL_CHARGE_INSUFFICIENT + +/datum/component/cell/proc/on_charge_empty() + stop_drain() + SEND_SIGNAL(parent, COMSIG_CELL_OUT_OF_CHARGE) + +#undef UNLIMITED_CHARGE +#undef UNLIMITED_DISTANCE diff --git a/code/datums/components/cluster_stack.dm b/code/datums/components/cluster_stack.dm index c79ce855e5b1..01d266d01a15 100644 --- a/code/datums/components/cluster_stack.dm +++ b/code/datums/components/cluster_stack.dm @@ -75,7 +75,7 @@ SIGNAL_HANDLER L += "Cluster Stack: [cluster_stacks]/[MAX_CLUSTER_STACKS]" -/datum/component/cluster_stack/proc/apply_cluster_stacks(mob/living/L, damage_result, ammo_flags, obj/item/projectile/P) +/datum/component/cluster_stack/proc/apply_cluster_stacks(mob/living/L, damage_result, ammo_flags, obj/projectile/P) SIGNAL_HANDLER if(cluster_stacks >= MAX_CLUSTER_STACKS) var/old_dmg_cont = damage_counter diff --git a/code/datums/components/connect_mob_behalf.dm b/code/datums/components/connect_mob_behalf.dm index 1c1a8a652342..2eeee78bf28b 100644 --- a/code/datums/components/connect_mob_behalf.dm +++ b/code/datums/components/connect_mob_behalf.dm @@ -1,6 +1,6 @@ /// This component behaves similar to connect_loc_behalf, but working off clients and mobs instead of loc /// To be clear, we hook into a signal on a tracked client's mob -/// We retain the ability to react to that signal on a seperate listener, which makes this quite powerful +/// We retain the ability to react to that signal on a separate listener, which makes this quite powerful /datum/component/connect_mob_behalf dupe_mode = COMPONENT_DUPE_UNIQUE diff --git a/code/datums/components/crate_tag.dm b/code/datums/components/crate_tag.dm new file mode 100644 index 000000000000..379df82a2084 --- /dev/null +++ b/code/datums/components/crate_tag.dm @@ -0,0 +1,36 @@ +/datum/component/crate_tag + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + /// The crate tag used for notifications and as label + var/name + +/datum/component/crate_tag/Initialize(name, obj/structure/closet/crate/masquarade_type) + var/obj/structure/closet/crate/crate = parent + if(!istype(crate)) + return COMPONENT_INCOMPATIBLE + setup(name, masquarade_type) + RegisterSignal(parent, COMSIG_STRUCTURE_CRATE_SQUAD_LAUNCHED, PROC_REF(notify_squad)) + +/datum/component/crate_tag/InheritComponent(datum/component/C, i_am_original, name, obj/structure/closet/crate/masquarade_type) + . = ..() + setup(name, masquarade_type) + +/datum/component/crate_tag/proc/setup(name, obj/structure/closet/crate/masquarade_type) + var/obj/structure/closet/crate/crate = parent + if(masquarade_type) + crate.name = initial(masquarade_type.name) + crate.desc = initial(masquarade_type.desc) + crate.icon_opened = initial(masquarade_type.icon_opened) + crate.icon_closed = initial(masquarade_type.icon_closed) + if(crate.opened) + crate.icon_state = crate.icon_opened + else + crate.icon_state = crate.icon_closed + if(name) + parent.AddComponent(/datum/component/label, name) + src.name = name // Keep it around additionally for notifications + +/// Handler to notify an overwatched squad that this crate has been dropped for them +/datum/component/crate_tag/proc/notify_squad(datum/source, datum/squad/squad) + SIGNAL_HANDLER + squad.send_message("'[name]' supply drop incoming. Heads up!") + squad.send_maptext(name, "Incoming Supply Drop:") diff --git a/code/datums/components/footstep.dm b/code/datums/components/footstep.dm index 6deb27a6817b..6eaaa6e76af5 100644 --- a/code/datums/components/footstep.dm +++ b/code/datums/components/footstep.dm @@ -13,8 +13,9 @@ var/falloff ///This can be a list OR a soundfile OR null. Determines whatever sound gets played. var/footstep_sounds + var/drag_sounds -/datum/component/footstep/Initialize(steps_ = 2, volume_ = 50, range_ = null, falloff_ = 1, footstep_sounds_ = "alien_footstep_large") +/datum/component/footstep/Initialize(steps_ = 2, volume_ = 50, range_ = null, falloff_ = 1, footstep_sounds_ = "alien_footstep_large", drag_sounds_ = 'sound/effects/alien_dragsound_large.ogg') if(!isliving(parent)) return COMPONENT_INCOMPATIBLE steps = steps_ @@ -22,6 +23,7 @@ range = range_ falloff = falloff_ footstep_sounds = footstep_sounds_ + drag_sounds = drag_sounds_ RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), PROC_REF(play_simplestep)) @@ -31,7 +33,7 @@ return var/mob/living/LM = parent - if(LM.buckled || LM.lying || LM.throwing || LM.is_ventcrawling) + if(LM.buckled || LM.throwing || LM.is_ventcrawling || LM.stat == DEAD) return if(LM.life_steps_total % steps) @@ -44,5 +46,8 @@ var/turf/open/T = prepare_step() if(!T) return - if(isfile(footstep_sounds) || istext(footstep_sounds)) + var/mob/living/parent_mob = parent + if(parent_mob.body_position == LYING_DOWN && (isfile(drag_sounds) || istext(drag_sounds))) + playsound(T, drag_sounds, volume, rand(20000, 25000), range, falloff = falloff) + else if(isfile(footstep_sounds) || istext(footstep_sounds)) playsound(T, footstep_sounds, volume, rand(20000, 25000), range, falloff = falloff) diff --git a/code/datums/components/healing_reduction.dm b/code/datums/components/healing_reduction.dm index b98d52cab251..54ea02dc6b73 100644 --- a/code/datums/components/healing_reduction.dm +++ b/code/datums/components/healing_reduction.dm @@ -21,33 +21,36 @@ Humans will take continuous damage instead. src.healing_reduction_dissipation = healing_reduction_dissipation src.max_buildup = max_buildup -/datum/component/healing_reduction/InheritComponent(datum/component/healing_reduction/C, i_am_original, healing_reduction) +/datum/component/healing_reduction/InheritComponent(datum/component/healing_reduction/inherit_component, i_am_original, healing_reduction) . = ..() - if(!C) + if(!inherit_component) src.healing_reduction += healing_reduction else - src.healing_reduction += C.healing_reduction + src.healing_reduction += inherit_component.healing_reduction src.healing_reduction = min(src.healing_reduction, max_buildup) /datum/component/healing_reduction/process(delta_time) if(!parent) qdel(src) - healing_reduction = max(healing_reduction - healing_reduction_dissipation * delta_time, 0) + return - if(ishuman(parent)) //deals brute to humans - var/mob/living/carbon/human/H = parent - H.apply_damage(healing_reduction_dissipation * delta_time, BRUTE) + healing_reduction = max(healing_reduction - healing_reduction_dissipation * delta_time, 0) if(healing_reduction <= 0) qdel(src) + return + + if(ishuman(parent)) //deals brute to humans + var/mob/living/carbon/human/human_parent = parent + human_parent.apply_damage(healing_reduction_dissipation * delta_time, BRUTE) var/color = GLOW_COLOR var/intensity = healing_reduction/max_buildup color += num2text(MAX_ALPHA*intensity, 2, 16) - var/atom/A = parent - A.add_filter("healing_reduction", 2, list("type" = "outline", "color" = color, "size" = 1)) + var/atom/parent_atom = parent + parent_atom.add_filter("healing_reduction", 2, list("type" = "outline", "color" = color, "size" = 1)) /datum/component/healing_reduction/RegisterWithParent() START_PROCESSING(SSdcs, src) @@ -64,14 +67,14 @@ Humans will take continuous damage instead. COMSIG_XENO_ON_HEAL_WOUNDS, COMSIG_XENO_APPEND_TO_STAT )) - var/atom/A = parent - A.remove_filter("healing_reduction") + var/atom/parent_atom = parent + parent_atom.remove_filter("healing_reduction") -/datum/component/healing_reduction/proc/stat_append(mob/M, list/L) +/datum/component/healing_reduction/proc/stat_append(mob/target_mob, list/stat_list) SIGNAL_HANDLER - L += "Healing Reduction: [healing_reduction]/[max_buildup]" + stat_list += "Healing Reduction: [healing_reduction]/[max_buildup]" -/datum/component/healing_reduction/proc/apply_healing_reduction(mob/living/carbon/xenomorph/X, list/healing) +/datum/component/healing_reduction/proc/apply_healing_reduction(mob/living/carbon/xenomorph/xeno, list/healing) SIGNAL_HANDLER healing["healing"] -= healing_reduction diff --git a/code/datums/components/overlay_lighting.dm b/code/datums/components/overlay_lighting.dm new file mode 100644 index 000000000000..8288453f7b24 --- /dev/null +++ b/code/datums/components/overlay_lighting.dm @@ -0,0 +1,524 @@ +///For switchable lights, is it on and currently emitting light? +#define LIGHTING_ON (1<<0) +///Is the parent attached to something else, its loc? Then we need to keep an eye of this. +#define LIGHTING_ATTACHED (1<<1) + +#define GET_PARENT (parent_attached_to || parent) + +#define SHORT_CAST 2 + + +/** + * Movable atom overlay-based lighting component. + * + * * Component works by applying a visual object to the parent target. + * + * * The component tracks the parent's loc to determine the current_holder. + * * The current_holder is either the parent or its loc, whichever is on a turf. If none, then the current_holder is null and the light is not visible. + * + * * Lighting works at its base by applying a dark overlay and "cutting" said darkness with light, adding (possibly colored) transparency. + * * This component uses the visible_mask visual object to apply said light mask on the darkness. + * + * * The main limitation of this system is that it uses a limited number of pre-baked geometrical shapes, but for most uses it does the job. + * + * * Another limitation is for big lights: you only see the light if you see the object emiting it. + * * For small objects this is good (you can't see them behind a wall), but for big ones this quickly becomes prety clumsy. +*/ +/datum/component/overlay_lighting + ///How far the light reaches, float. + var/range = 1 + ///Ceiling of range, integer without decimal entries. + var/lumcount_range = 0 + ///How much this light affects the dynamic_lumcount of turfs. + var/lum_power = 0.5 + ///Transparency value. + var/set_alpha = 0 + ///For light sources that can be turned on and off. + var/overlay_lighting_flags = NONE + + ///Cache of the possible light overlays, according to size. + var/static/list/light_overlays = list( + "32" = 'icons/effects/light_overlays/light_32.dmi', + "64" = 'icons/effects/light_overlays/light_64.dmi', + "96" = 'icons/effects/light_overlays/light_96.dmi', + "128" = 'icons/effects/light_overlays/light_128.dmi', + "160" = 'icons/effects/light_overlays/light_160.dmi', + "192" = 'icons/effects/light_overlays/light_192.dmi', + "224" = 'icons/effects/light_overlays/light_224.dmi', + "256" = 'icons/effects/light_overlays/light_256.dmi', + "288" = 'icons/effects/light_overlays/light_288.dmi', + "320" = 'icons/effects/light_overlays/light_320.dmi', + "352" = 'icons/effects/light_overlays/light_352.dmi', + "384" = 'icons/effects/light_overlays/light_384.dmi', + "416" = 'icons/effects/light_overlays/light_416.dmi', + ) + + ///Overlay effect to cut into the darkness and provide light. + var/image/visible_mask + ///Lazy list to track the turfs being affected by our light, to determine their visibility. + var/list/turf/affected_turfs + ///Movable atom currently holding the light. Parent might be a flashlight, for example, but that might be held by a mob or something else. + var/atom/movable/current_holder + ///Movable atom the parent is attached to. For example, a flashlight into a helmet or gun. We'll need to track the thing the parent is attached to as if it were the parent itself. + var/atom/movable/parent_attached_to + ///Whether we're a directional light + var/directional = FALSE + ///A cone overlay for directional light, it's alpha and color are dependant on the light + var/image/cone + ///Current tracked direction for the directional cast behaviour + var/current_direction + ///Tracks current directional x offset so we dont update unecessarily + var/directional_offset_x + ///Tracks current directional y offset so we dont update unecessarily + var/directional_offset_y + ///Cast range for the directional cast (how far away the atom is moved) + var/cast_range = 2 + + +/datum/component/overlay_lighting/Initialize(_range, _power, _color, starts_on, is_directional) + if(!ismovable(parent)) + return COMPONENT_INCOMPATIBLE + + var/atom/movable/movable_parent = parent + if(movable_parent.light_system != MOVABLE_LIGHT && movable_parent.light_system != DIRECTIONAL_LIGHT) + stack_trace("[type] added to [parent], with [movable_parent.light_system] value for the light_system var. Use [MOVABLE_LIGHT]/[DIRECTIONAL_LIGHT] instead.") + return COMPONENT_INCOMPATIBLE + + . = ..() + + visible_mask = image('icons/effects/light_overlays/light_32.dmi', icon_state = "light") + visible_mask.plane = O_LIGHTING_VISUAL_PLANE + visible_mask.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM + visible_mask.alpha = 0 + if(is_directional) + directional = TRUE + cone = image('icons/effects/light_overlays/light_cone.dmi', icon_state = "light") + cone.plane = O_LIGHTING_VISUAL_PLANE + cone.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM + cone.alpha = 110 + cone.transform = cone.transform.Translate(-32, -32) + set_direction(movable_parent.dir) + if(!isnull(_range)) + movable_parent.set_light_range(_range) + set_range(parent, movable_parent.light_range) + if(!isnull(_power)) + movable_parent.set_light_power(_power) + set_power(parent, movable_parent.light_power) + if(!isnull(_color)) + movable_parent.set_light_color(_color) + set_color(parent, movable_parent.light_color) + if(!isnull(starts_on)) + movable_parent.set_light_on(starts_on) + +/datum/component/overlay_lighting/RegisterWithParent() + . = ..() + if(directional) + RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE, PROC_REF(on_parent_dir_change)) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_parent_moved)) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(check_holder)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_RANGE, PROC_REF(set_range)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_POWER, PROC_REF(set_power)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_COLOR, PROC_REF(set_color)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_ON, PROC_REF(on_toggle)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_FLAGS, PROC_REF(on_light_flags_change)) + var/atom/movable/movable_parent = parent + if(movable_parent.light_flags & LIGHT_ATTACHED) + overlay_lighting_flags |= LIGHTING_ATTACHED + set_parent_attached_to(ismovable(movable_parent.loc) ? movable_parent.loc : null) + check_holder() + if(movable_parent.light_on) + turn_on() + + + +/datum/component/overlay_lighting/UnregisterFromParent() + overlay_lighting_flags &= ~LIGHTING_ATTACHED + set_parent_attached_to(null) + set_holder(null) + clean_old_turfs() + UnregisterSignal(parent, list( + COMSIG_MOVABLE_MOVED, + COMSIG_ATOM_SET_LIGHT_RANGE, + COMSIG_ATOM_SET_LIGHT_POWER, + COMSIG_ATOM_SET_LIGHT_COLOR, + COMSIG_ATOM_SET_LIGHT_ON, + COMSIG_ATOM_SET_LIGHT_FLAGS, + )) + if(directional) + UnregisterSignal(parent, COMSIG_ATOM_DIR_CHANGE) + if(overlay_lighting_flags & LIGHTING_ON) + turn_off() + return ..() + + +/datum/component/overlay_lighting/Destroy() + set_parent_attached_to(null) + set_holder(null) + clean_old_turfs() + visible_mask = null + cone = null + parent_attached_to = null + return ..() + + +///Clears the affected_turfs lazylist, removing from its contents the effects of being near the light. +/datum/component/overlay_lighting/proc/clean_old_turfs() + for(var/turf/lit_turf as anything in affected_turfs) + lit_turf.dynamic_lumcount -= lum_power + affected_turfs = null + + +///Populates the affected_turfs lazylist, adding to its contents the effects of being near the light. +/datum/component/overlay_lighting/proc/get_new_turfs() + if(!current_holder) + return + LAZYINITLIST(affected_turfs) + if(range <= 2) + //Range here is 1 because actual range of lighting mask is 1 tile even if it says that range is 2 + for(var/turf/lit_turf in RANGE_TURFS(1, current_holder.loc)) + lit_turf.dynamic_lumcount += lum_power + affected_turfs += lit_turf + else + for(var/turf/lit_turf in view(lumcount_range, get_turf(current_holder))) + lit_turf.dynamic_lumcount += lum_power + affected_turfs += lit_turf + + +///Clears the old affected turfs and populates the new ones. +/datum/component/overlay_lighting/proc/make_luminosity_update() + clean_old_turfs() + if(!isturf(current_holder?.loc)) + return + if(directional) + cast_directional_light() + get_new_turfs() + + +///Adds the luminosity and source for the affected movable atoms to keep track of their visibility. +/datum/component/overlay_lighting/proc/add_dynamic_lumi() + LAZYSET(current_holder.affected_movable_lights, src, lumcount_range + 1) + current_holder.underlays += visible_mask + current_holder.update_dynamic_luminosity() + if(directional) + current_holder.underlays += cone + +///Removes the luminosity and source for the affected movable atoms to keep track of their visibility. +/datum/component/overlay_lighting/proc/remove_dynamic_lumi() + LAZYREMOVE(current_holder.affected_movable_lights, src) + current_holder.underlays -= visible_mask + current_holder.update_dynamic_luminosity() + if(directional) + current_holder.underlays -= cone + +///Called to change the value of parent_attached_to. +/datum/component/overlay_lighting/proc/set_parent_attached_to(atom/movable/new_parent_attached_to) + if(new_parent_attached_to == parent_attached_to) + return + + . = parent_attached_to + parent_attached_to = new_parent_attached_to + if(.) + var/atom/movable/old_parent_attached_to = . + UnregisterSignal(old_parent_attached_to, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED)) + if(old_parent_attached_to == current_holder) + RegisterSignal(old_parent_attached_to, COMSIG_PARENT_QDELETING, PROC_REF(on_holder_qdel)) + RegisterSignal(old_parent_attached_to, COMSIG_MOVABLE_MOVED, PROC_REF(on_holder_moved)) + if(parent_attached_to) + if(parent_attached_to == current_holder) + UnregisterSignal(current_holder, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED)) + RegisterSignal(parent_attached_to, COMSIG_PARENT_QDELETING, PROC_REF(on_parent_attached_to_qdel)) + RegisterSignal(parent_attached_to, COMSIG_MOVABLE_MOVED, PROC_REF(on_parent_attached_to_moved)) + check_holder() + + +///Called to change the value of current_holder. +/datum/component/overlay_lighting/proc/set_holder(atom/movable/new_holder) + if(new_holder == current_holder) + return + if(current_holder) + if(current_holder != parent && current_holder != parent_attached_to) + UnregisterSignal(current_holder, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED)) + if(directional) + UnregisterSignal(current_holder, COMSIG_ATOM_DIR_CHANGE) + if(overlay_lighting_flags & LIGHTING_ON) + remove_dynamic_lumi() + current_holder = new_holder + if(new_holder == null) + clean_old_turfs() + return + if(new_holder != parent && new_holder != parent_attached_to) + RegisterSignal(new_holder, COMSIG_PARENT_QDELETING, PROC_REF(on_holder_qdel)) + if(overlay_lighting_flags & LIGHTING_ON) + RegisterSignal(new_holder, COMSIG_MOVABLE_MOVED, PROC_REF(on_holder_moved)) + if(directional) + RegisterSignal(new_holder, COMSIG_ATOM_DIR_CHANGE, PROC_REF(on_holder_dir_change)) + if(directional && current_direction != new_holder.dir) + current_direction = new_holder.dir + if(overlay_lighting_flags & LIGHTING_ON) + add_dynamic_lumi() + make_luminosity_update() + + +///Used to determine the new valid current_holder from the parent's loc. +/datum/component/overlay_lighting/proc/check_holder() + var/atom/movable/movable_parent = GET_PARENT + if(QDELETED(movable_parent)) + set_holder(null) + return + if(isturf(movable_parent.loc)) + set_holder(movable_parent) + return + var/atom/inside = movable_parent.loc //Parent's loc + if(isnull(inside)) + set_holder(null) + return + if(isturf(inside.loc)) + // storage items block light, also don't be moving into a qdeleted item + if(QDELETED(inside) || istype(inside, /obj/item/storage)) + set_holder(null) + else + set_holder(inside) + return + set_holder(null) + + +///Called when the current_holder is qdeleted, to remove the light effect. +/datum/component/overlay_lighting/proc/on_holder_qdel(atom/movable/source, force) + SIGNAL_HANDLER + if(QDELETED(current_holder)) + set_holder(null) + return + UnregisterSignal(current_holder, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED)) + if(directional) + UnregisterSignal(current_holder, COMSIG_ATOM_DIR_CHANGE) + set_holder(null) + + +///Called when current_holder changes loc. +/datum/component/overlay_lighting/proc/on_holder_moved(atom/movable/source, OldLoc, Dir, Forced) + SIGNAL_HANDLER + if(!(overlay_lighting_flags & LIGHTING_ON)) + return + make_luminosity_update() + +///Called when the current_holder is qdeleted, to remove the light effect. +/datum/component/overlay_lighting/proc/on_parent_attached_to_qdel(atom/movable/source, force) + SIGNAL_HANDLER + UnregisterSignal(parent_attached_to, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED)) + if(directional) + UnregisterSignal(parent_attached_to, COMSIG_ATOM_DIR_CHANGE) + if(parent_attached_to == current_holder) + set_holder(null) + set_parent_attached_to(null) + +///Called when parent_attached_to changes loc. +/datum/component/overlay_lighting/proc/on_parent_attached_to_moved(atom/movable/source, OldLoc, Dir, Forced) + SIGNAL_HANDLER + check_holder() + if(!(overlay_lighting_flags & LIGHTING_ON) || !current_holder) + return + make_luminosity_update() + +///Called when parent changes loc. +/datum/component/overlay_lighting/proc/on_parent_moved(atom/movable/source, OldLoc, Dir, Forced) + SIGNAL_HANDLER + var/atom/movable/movable_parent = parent + if(overlay_lighting_flags & LIGHTING_ATTACHED) + set_parent_attached_to(ismovable(movable_parent.loc) ? movable_parent.loc : null) + check_holder() + if(!(overlay_lighting_flags & LIGHTING_ON) || !current_holder) + return + make_luminosity_update() + + +///Changes the range which the light reaches. 0 means no light, 7 is the maximum value. +/datum/component/overlay_lighting/proc/set_range(atom/source, new_range) + SIGNAL_HANDLER + if(range == new_range) + return + if(range == 0) + turn_off() + range = clamp(CEILING(new_range, 0.5), 1, 7) + var/pixel_bounds = ((range - 1) * 64) + 32 + lumcount_range = Ceiling(range) + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays -= visible_mask + visible_mask.icon = light_overlays["[pixel_bounds]"] + if(pixel_bounds == 32) + visible_mask.transform = null + return + var/offset = (pixel_bounds - 32) * 0.5 + var/matrix/transform = new + transform.Translate(-offset, -offset) + visible_mask.transform = transform + directional_offset_x = 0 + directional_offset_y = 0 + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += visible_mask + if(directional) + cast_range = clamp(round(new_range * 0.5), 1, 3) + if(overlay_lighting_flags & LIGHTING_ON) + make_luminosity_update() + + +///Changes the intensity/brightness of the light by altering the visual object's alpha. +/datum/component/overlay_lighting/proc/set_power(atom/source, new_power) + SIGNAL_HANDLER + set_lum_power(new_power >= 0 ? 0.5 : -0.5) + set_alpha = min(230, (abs(new_power) * 120) + 30) + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays -= visible_mask + visible_mask.alpha = set_alpha + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += visible_mask + + if(!directional) + return + + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays -= cone + cone.alpha = min(200, (abs(new_power) * 90)+20) + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += cone + + +///Changes the light's color, pretty straightforward. +/datum/component/overlay_lighting/proc/set_color(atom/source, new_color) + SIGNAL_HANDLER + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays -= visible_mask + visible_mask.color = new_color + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += visible_mask + + if(!directional) + return + + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays -= cone + cone.color = new_color + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += cone + + +///Toggles the light on and off. +/datum/component/overlay_lighting/proc/on_toggle(atom/source, new_value) + SIGNAL_HANDLER + if(new_value) //Truthy value input, turn on. + turn_on() + return + turn_off() //Falsey value, turn off. + +///Triggered right after the parent light flags change. +/datum/component/overlay_lighting/proc/on_light_flags_change(atom/source, new_flags) + SIGNAL_HANDLER + var/atom/movable/movable_parent = parent + + if(new_flags & LIGHT_ATTACHED) // Gained the [LIGHT_ATTACHED] property + overlay_lighting_flags |= LIGHTING_ATTACHED + if(ismovable(movable_parent.loc)) + set_parent_attached_to(movable_parent.loc) + else // Lost the [LIGHT_ATTACHED] property + overlay_lighting_flags &= ~LIGHTING_ATTACHED + set_parent_attached_to(null) + +///Toggles the light on. +/datum/component/overlay_lighting/proc/turn_on() + if(overlay_lighting_flags & LIGHTING_ON) + return + overlay_lighting_flags |= LIGHTING_ON + if(current_holder) + add_dynamic_lumi(current_holder) + if(directional) + cast_directional_light() + if(current_holder && current_holder != parent && current_holder != parent_attached_to) + RegisterSignal(current_holder, COMSIG_MOVABLE_MOVED, PROC_REF(on_holder_moved)) + get_new_turfs() + + +///Toggles the light off. +/datum/component/overlay_lighting/proc/turn_off() + if(!(overlay_lighting_flags & LIGHTING_ON)) + return + if(current_holder) + remove_dynamic_lumi() + overlay_lighting_flags &= ~LIGHTING_ON + if(current_holder && current_holder != parent && current_holder != parent_attached_to) + UnregisterSignal(current_holder, COMSIG_MOVABLE_MOVED) + clean_old_turfs() + + +///Here we append the behavior associated to changing lum_power. +/datum/component/overlay_lighting/proc/set_lum_power(new_lum_power) + if(lum_power == new_lum_power) + return + . = lum_power + lum_power = new_lum_power + var/difference = . - lum_power + for(var/turf/lit_turf as anything in affected_turfs) + lit_turf.dynamic_lumcount -= difference + +///Here we append the behavior associated to changing lum_power. +/datum/component/overlay_lighting/proc/cast_directional_light() + var/final_distance = cast_range + //Lower the distance by 1 if we're not looking at a cardinal direction, and we're not a short cast + if(final_distance > SHORT_CAST && !(ALL_CARDINALS & current_direction)) + final_distance -= 1 + var/turf/scanning = get_turf(current_holder) + for(var/i in 1 to final_distance) + var/turf/next_turf = get_step(scanning, current_direction) + if(isnull(next_turf) || IS_OPAQUE_TURF(next_turf)) + final_distance = i + break + scanning = next_turf + + current_holder.underlays -= visible_mask + + var/translate_x = -((range - 1) * 32) + var/translate_y = translate_x + switch(current_direction) + if(NORTH) + translate_y += 32 * final_distance + if(SOUTH) + translate_y += -32 * final_distance + if(EAST) + translate_x += 32 * final_distance + if(WEST) + translate_x += -32 * final_distance + if((directional_offset_x != translate_x) || (directional_offset_y != translate_y)) + directional_offset_x = translate_x + directional_offset_y = translate_y + var/matrix/transform = matrix() + transform.Translate(translate_x, translate_y) + visible_mask.transform = transform + if(overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += visible_mask + +///Called when current_holder changes loc. +/datum/component/overlay_lighting/proc/on_holder_dir_change(atom/movable/source, olddir, newdir) + SIGNAL_HANDLER + set_direction(newdir) + +///Called when parent changes loc. +/datum/component/overlay_lighting/proc/on_parent_dir_change(atom/movable/source, olddir, newdir) + SIGNAL_HANDLER + + if(current_holder?.dir != newdir) + return + + set_direction(newdir) + +///Sets a new direction for the directional cast, then updates luminosity +/datum/component/overlay_lighting/proc/set_direction(newdir) + if(!newdir) + return + if(current_direction == newdir) + return + current_direction = newdir + if(overlay_lighting_flags & LIGHTING_ON) + make_luminosity_update() + +#undef LIGHTING_ON +#undef LIGHTING_ATTACHED +#undef GET_PARENT +#undef SHORT_CAST diff --git a/code/datums/components/tutorial_status.dm b/code/datums/components/tutorial_status.dm new file mode 100644 index 000000000000..97b8d408bcb5 --- /dev/null +++ b/code/datums/components/tutorial_status.dm @@ -0,0 +1,25 @@ +/datum/component/tutorial_status + dupe_mode = COMPONENT_DUPE_UNIQUE + /// What the mob's current tutorial status is, displayed in the status panel + var/tutorial_status = "" + +/datum/component/tutorial_status/Initialize() + . = ..() + if(!ismob(parent)) + return COMPONENT_INCOMPATIBLE + +/datum/component/tutorial_status/RegisterWithParent() + ..() + RegisterSignal(parent, COMSIG_MOB_TUTORIAL_UPDATE_OBJECTIVE, PROC_REF(update_objective)) + RegisterSignal(parent, COMSIG_MOB_GET_STATUS_TAB_ITEMS, PROC_REF(get_status_tab_item)) + +/datum/component/tutorial_status/proc/update_objective(datum/source, objective_text) + SIGNAL_HANDLER + + tutorial_status = objective_text + +/datum/component/tutorial_status/proc/get_status_tab_item(datum/source, list/status_tab_items) + SIGNAL_HANDLER + + if(tutorial_status) + status_tab_items += "Tutorial Objective: " + tutorial_status diff --git a/code/datums/components/weed_food.dm b/code/datums/components/weed_food.dm new file mode 100644 index 000000000000..8737fba08db9 --- /dev/null +++ b/code/datums/components/weed_food.dm @@ -0,0 +1,356 @@ +#define WEED_FOOD_DELAY 5 MINUTES +#define WEED_FOOD_STATE_DELAY 1 MINUTES + +/atom/movable/vis_obj/weed_food + name = "weeds" + desc = "Weird black weeds in the shape of a body..." + gender = PLURAL + vis_flags = VIS_INHERIT_DIR|VIS_INHERIT_PLANE|VIS_INHERIT_LAYER + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + icon = 'icons/mob/xenos/weeds.dmi' + var/list/icon_states + var/list/icon_states_flipped + var/icon_state_idx = 0 + var/timer_id = null + var/flipped = FALSE + +/atom/movable/vis_obj/weed_food/Initialize(mapload, is_flipped, weeds_icon, states, states_flipped, ...) + flipped = is_flipped + icon = weeds_icon + icon_states = states + icon_states_flipped = states_flipped + timer_id = addtimer(CALLBACK(src, PROC_REF(on_animation_timer)), WEED_FOOD_STATE_DELAY, TIMER_STOPPABLE|TIMER_UNIQUE|TIMER_LOOP|TIMER_DELETE_ME) + on_animation_timer() + return ..() + +/// Timer callback for changing the icon_state +/atom/movable/vis_obj/weed_food/proc/on_animation_timer() + icon_state_idx++ + // Assumption: Length of icon_states is the same as icon_states_flipped + if(icon_state_idx > length(icon_states)) + deltimer(timer_id) + timer_id = null + return + icon_state = flipped ? icon_states_flipped[icon_state_idx] : icon_states[icon_state_idx] + +/** + * A component that can be attached to a mob/living to be merged with weeds after a delay. + * Attempting to attach a new weed_food even if one already exists is equivalent to calling start(). + * + * Attach this to any mob/living that is dead (death or initialized dead) and it should handle the rest. + */ +/datum/component/weed_food + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + /// Whether we are waiting on timer to merge + var/active = FALSE + /// Whether we are merged with weeds + var/merged = FALSE + /// The time we were unmerged (just to handle weeds upgrading) + var/unmerged_time + /// Any active timer for a pending merge + var/timer_id = null + /// The living mob that we are bound to + var/mob/living/parent_mob + /// The turf that our parent is on + var/turf/parent_turf + /// The obj that our parent is buckled to and we have registered a signal + var/obj/parent_buckle + /// A nest our parent is buckled to and we have registered a signal + var/obj/structure/bed/nest/parent_nest + /// The weeds that we are merging/merged with + var/obj/effect/alien/weeds/absorbing_weeds + /// The overlay image when merged + var/atom/movable/vis_obj/weed_food/weed_appearance + +/datum/component/weed_food/Initialize(...) + parent_mob = parent + // At the moment we only support humans and xenos + if(!istype(parent_mob, /mob/living/carbon/human) && !istype(parent_mob, /mob/living/carbon/xenomorph)) + return COMPONENT_INCOMPATIBLE + + parent_turf = get_turf(parent_mob) + if(parent_turf != parent_mob.loc) + parent_turf = null // if our location is actually a container, we want to be safe from weeds + + start() + +/datum/component/weed_food/InheritComponent(datum/component/C, i_am_original) + start() + +/datum/component/weed_food/Destroy(force, silent) + . = ..() + + unmerge_with_weeds() + QDEL_NULL(weed_appearance) + parent_mob = null + parent_turf = null + parent_buckle = null + +/datum/component/weed_food/RegisterWithParent() + RegisterSignal(parent_mob, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) + RegisterSignal(parent_mob, list(COMSIG_LIVING_REJUVENATED, COMSIG_HUMAN_REVIVED), PROC_REF(on_rejuv)) + RegisterSignal(parent_mob, COMSIG_HUMAN_SET_UNDEFIBBABLE, PROC_REF(on_update)) + RegisterSignal(parent_mob, COMSIG_LIVING_PREIGNITION, PROC_REF(on_preignition)) + RegisterSignal(SSdcs, COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING, PROC_REF(on_forsaken)) + if(parent_turf) + RegisterSignal(parent_turf, COMSIG_WEEDNODE_GROWTH, PROC_REF(on_update)) + +/datum/component/weed_food/UnregisterFromParent() + if(parent_mob) + UnregisterSignal(parent_mob, list( + COMSIG_MOVABLE_MOVED, + COMSIG_LIVING_REJUVENATED, + COMSIG_HUMAN_REVIVED, + COMSIG_HUMAN_SET_UNDEFIBBABLE, + COMSIG_LIVING_PREIGNITION, + )) + if(absorbing_weeds) + UnregisterSignal(absorbing_weeds, COMSIG_PARENT_QDELETING) + if(parent_turf) + UnregisterSignal(parent_turf, COMSIG_WEEDNODE_GROWTH) + if(parent_buckle) + UnregisterSignal(parent_buckle, COSMIG_OBJ_AFTER_BUCKLE) + if(parent_nest) + UnregisterSignal(parent_nest, COMSIG_PARENT_QDELETING) + UnregisterSignal(SSdcs, COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING) + +/// SIGNAL_HANDLER for COMSIG_MOVABLE_MOVED +/datum/component/weed_food/proc/on_move() + SIGNAL_HANDLER + + if(absorbing_weeds) + UnregisterSignal(absorbing_weeds, COMSIG_PARENT_QDELETING) + absorbing_weeds = null + + if(parent_turf) + UnregisterSignal(parent_turf, COMSIG_WEEDNODE_GROWTH) + parent_turf = get_turf(parent_mob) + if(parent_turf != parent_mob.loc) + parent_turf = null // if our location is actually a container, we want to be safe from weeds + else + RegisterSignal(parent_turf, COMSIG_WEEDNODE_GROWTH, PROC_REF(on_update)) + + // We moved, restart or start the proccess + if(stop() || !merged) + start() + return + + // If we somehow moved when we were merged, handle that + absorbing_weeds = parent_turf?.weeds + if(absorbing_weeds) + RegisterSignal(absorbing_weeds, COMSIG_PARENT_QDELETING, PROC_REF(on_weed_deletion)) + return + unmerge_with_weeds() + +/// SIGNAL_HANDLER for COMSIG_LIVING_REJUVENATED and COMSIG_HUMAN_REVIVED +/datum/component/weed_food/proc/on_rejuv() + SIGNAL_HANDLER + + qdel(src) + +/// SIGNAL_HANDLER for COSMIG_OBJ_AFTER_BUCKLE +/datum/component/weed_food/proc/on_after_buckle(obj/source, mob/buckled) + SIGNAL_HANDLER + + if(buckled) + return + start() // We unbuckled, so lets try to start again + +/// SIGNAL_HANDLER for COMSIG_HUMAN_SET_UNDEFIBBABLE & COMSIG_WEEDNODE_GROWTH +/datum/component/weed_food/proc/on_update() + SIGNAL_HANDLER + + start() + +/// SIGNAL_HANDLER for COMSIG_PARENT_QDELETING of weeds +/datum/component/weed_food/proc/on_weed_deletion() + SIGNAL_HANDLER + + if(active) + stop() + return + if(merged) + unmerge_with_weeds() + return + +/// SIGNAL_HANDLER for COMSIG_PARENT_QDELETING of nest +/datum/component/weed_food/proc/on_nest_deletion() + SIGNAL_HANDLER + + if(merged) + parent_mob.plane = FLOOR_PLANE + UnregisterSignal(parent_nest, COMSIG_PARENT_QDELETING) + parent_nest = null + +/// SIGNAL_HANDLER for COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING +/datum/component/weed_food/proc/on_forsaken() + SIGNAL_HANDLER + + UnregisterSignal(SSdcs, COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING) + + if(!merged) + return + if(!is_ground_level(parent_mob.z)) + return + + var/datum/hive_status/hive = GLOB.hive_datum[XENO_HIVE_FORSAKEN] + weed_appearance.color = hive.color + +/// SIGNAL_HANDLER for COMSIG_LIVING_PREIGNITION of weeds +/datum/component/weed_food/proc/on_preignition() + SIGNAL_HANDLER + + if(merged) + return COMPONENT_CANCEL_IGNITION + +/** + * Try to start the process to turn into weeds + * Returns TRUE if started successfully + */ +/datum/component/weed_food/proc/start() + if(active) + return FALSE + if(merged) + return FALSE + if(QDELETED(parent_mob)) + return FALSE + + if(parent_mob.buckled) + if(parent_mob.buckled == parent_buckle) + return FALSE // Still buckled to the same thing + if(!istype(parent_mob.buckled, /obj/structure/bed/nest)) + if(parent_buckle) // Still have a lingering reference somehow? + UnregisterSignal(parent_buckle, COSMIG_OBJ_AFTER_BUCKLE) + parent_buckle = parent_mob.buckled + RegisterSignal(parent_mob.buckled, COSMIG_OBJ_AFTER_BUCKLE, PROC_REF(on_after_buckle)) + return FALSE + if(parent_buckle) + UnregisterSignal(parent_buckle, COSMIG_OBJ_AFTER_BUCKLE) + parent_buckle = null + + if(parent_mob.is_xeno_grabbable()) + return FALSE + if(!(parent_mob.status_flags & PERMANENTLY_DEAD)) + var/mob/living/carbon/human/parent_human = parent_mob + if(istype(parent_human) && !parent_human.undefibbable) + return FALSE + if(!parent_turf?.weeds) + return FALSE + if(SEND_SIGNAL(parent_mob, COMSIG_ATTEMPT_MOB_PULL) & COMPONENT_CANCEL_MOB_PULL) + return FALSE + + if(unmerged_time == world.time) + return merge_with_weeds() // Weeds upgraded, re-merge now re-using the apperance + QDEL_NULL(weed_appearance) + absorbing_weeds = parent_turf.weeds + RegisterSignal(parent_turf.weeds, COMSIG_PARENT_QDELETING, PROC_REF(on_weed_deletion)) + + active = TRUE + timer_id = addtimer(CALLBACK(src, PROC_REF(merge_with_weeds)), WEED_FOOD_DELAY, TIMER_STOPPABLE|TIMER_UNIQUE|TIMER_DELETE_ME|TIMER_OVERRIDE) + + return TRUE + +/** + * Try to stop the process turning into weeds + * Returns TRUE if stopped successfully (was active when called) + */ +/datum/component/weed_food/proc/stop() + if(!active) + return FALSE + + active = FALSE + deltimer(timer_id) + timer_id = null + + return TRUE + +/** + * Finish becomming one with the weeds + * Returns TRUE if merged successfully + */ +/datum/component/weed_food/proc/merge_with_weeds() + if(merged) + return FALSE + if(QDELETED(parent_mob)) + return FALSE + + if(absorbing_weeds) // Remove the signal that would call stop + UnregisterSignal(absorbing_weeds, COMSIG_PARENT_QDELETING) + + if(parent_mob.buckled) + if(parent_mob.buckled == parent_buckle) + return FALSE // Still buckled to the same thing somehow? + if(!istype(parent_mob.buckled, /obj/structure/bed/nest)) + if(parent_buckle) // Still have a lingering reference somehow? + UnregisterSignal(parent_buckle, COSMIG_OBJ_AFTER_BUCKLE) + parent_buckle = parent_mob.buckled + RegisterSignal(parent_mob.buckled, COSMIG_OBJ_AFTER_BUCKLE, PROC_REF(on_after_buckle)) + return FALSE + else + parent_nest = parent_mob.buckled + RegisterSignal(parent_nest, COMSIG_PARENT_QDELETING, PROC_REF(on_nest_deletion)) + + if(parent_buckle) + UnregisterSignal(parent_buckle, COSMIG_OBJ_AFTER_BUCKLE) + parent_buckle = null + + if(SEND_SIGNAL(parent_mob, COMSIG_ATTEMPT_MOB_PULL) & COMPONENT_CANCEL_MOB_PULL) + return FALSE + + absorbing_weeds = parent_turf?.weeds + if(!absorbing_weeds) + return FALSE + RegisterSignal(absorbing_weeds, COMSIG_PARENT_QDELETING, PROC_REF(on_weed_deletion)) + // Technically we could have just left the signal alone, but both because of the posibility of other conditions preventing a merge or weeds somehow changing and on_move didn't catch it, this is less fragile + + active = FALSE + merged = TRUE + + ADD_TRAIT(parent_mob, TRAIT_UNDENSE, XENO_WEED_TRAIT) + ADD_TRAIT(parent_mob, TRAIT_MERGED_WITH_WEEDS, XENO_WEED_TRAIT) + parent_mob.anchored = TRUE + parent_mob.mouse_opacity = MOUSE_OPACITY_TRANSPARENT + if(!parent_nest) + parent_mob.plane = FLOOR_PLANE + parent_mob.remove_from_all_mob_huds() + parent_mob.ExtinguishMob() + + if(!weed_appearance) // Make a new sprite if we aren't re-merging + var/is_flipped = parent_mob.transform.b == -1 // Technically we should check if d is 1 too, but corpses can only be rotated 90 or 270 (1/-1 or -1/1) + if(parent_mob.dir & WEST) + is_flipped = !is_flipped // The direction reversed the effect of the flip! + weed_appearance = new(null, is_flipped, parent_mob.weed_food_icon, parent_mob.weed_food_states, parent_mob.weed_food_states_flipped) + weed_appearance.color = absorbing_weeds.color + parent_mob.vis_contents += weed_appearance + + return TRUE + +/** + * Undo the weedening + * Returns TRUE if unmerged successfully (always) + */ +/datum/component/weed_food/proc/unmerge_with_weeds() + merged = FALSE + unmerged_time = world.time + + if(absorbing_weeds) + UnregisterSignal(absorbing_weeds, COMSIG_PARENT_QDELETING) + absorbing_weeds = null + + if(parent_nest) + UnregisterSignal(parent_nest, COMSIG_PARENT_QDELETING) + parent_nest = null + + REMOVE_TRAIT(parent_mob, TRAIT_MERGED_WITH_WEEDS, XENO_WEED_TRAIT) + parent_mob.anchored = FALSE + parent_mob.mouse_opacity = MOUSE_OPACITY_ICON + parent_mob.plane = GAME_PLANE + parent_mob.vis_contents -= weed_appearance + + if(!QDELETED(parent_mob)) + parent_mob.add_to_all_mob_huds() + + return TRUE + +#undef WEED_FOOD_DELAY +#undef WEED_FOOD_STATE_DELAY diff --git a/code/datums/construction/construction_template.dm b/code/datums/construction/construction_template.dm index 0b874def4495..37832327c381 100644 --- a/code/datums/construction/construction_template.dm +++ b/code/datums/construction/construction_template.dm @@ -14,8 +14,8 @@ var/pixel_y = -16 var/pixel_x = -16 - var/crystals_required = 0 - var/crystals_stored = 0 + var/plasma_required = 0 + var/plasma_stored = 0 var/materials_required = list() //Example resource requirements i.e. MATERIAL_METAL = 1 var/extras_required = list() //Example extra requirements i.e. /obj/item = 1 @@ -43,47 +43,23 @@ return if(!xeno.plasma_max) return - if(crystals_stored >= crystals_required) + if(plasma_stored >= plasma_required) to_chat(xeno, SPAN_WARNING("\The [name] does not require plasma.")) return - to_chat(xeno, SPAN_NOTICE("You begin adding \the plasma to \the [name].")) + to_chat(xeno, SPAN_NOTICE("We begin adding \the plasma to \the [name].")) xeno_attack_delay(xeno) if(!do_after(xeno, 40, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) return //double-check amount required - if(crystals_stored >= crystals_required) + if(plasma_stored >= plasma_required) to_chat(xeno, SPAN_WARNING("\The [name] has enough plasma.")) return - var/amount_to_use = min(xeno.plasma_stored, (crystals_required - crystals_stored)) - crystals_stored += amount_to_use + var/amount_to_use = min(xeno.plasma_stored, (plasma_required - plasma_stored)) + plasma_stored += amount_to_use xeno.plasma_stored -= amount_to_use - to_chat(xeno, SPAN_WARNING("\The [name] requires [crystals_required - crystals_stored] more plasma.")) + to_chat(xeno, SPAN_WARNING("\The [name] requires [plasma_required - plasma_stored] more plasma.")) check_completion() -// Xeno ressource collection -/* -/datum/construction_template/proc/add_crystal(mob/living/carbon/xenomorph/M) - if(!istype(M)) - return - if(!M.crystal_stored) - to_chat(M, SPAN_WARNING("You have no [MATERIAL_CRYSTAL] stored.")) - return - if(crystals_stored >= crystals_required) - to_chat(M, SPAN_WARNING("\The [name] does not require [MATERIAL_CRYSTAL].")) - return - to_chat(M, SPAN_NOTICE("You begin adding \the [MATERIAL_CRYSTAL] to \the [name].")) - if(!do_after(M, 40, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - return - //double-check amount required - if(crystals_stored >= crystals_required) - to_chat(M, SPAN_WARNING("\The [name] has enough [MATERIAL_CRYSTAL].")) - return - var/amount_to_use = min(M.crystal_stored, (crystals_required - crystals_stored)) - crystals_stored += amount_to_use - M.crystal_stored -= amount_to_use - to_chat(M, SPAN_WARNING("\The [name] requires [crystals_required - crystals_stored] more [MATERIAL_CRYSTAL].")) - check_completion() */ - /datum/construction_template/proc/add_material(mob/user, obj/item/I) if(isStack(I)) var/obj/item/stack/S = I @@ -123,7 +99,7 @@ check_completion() /datum/construction_template/proc/check_completion() - if(crystals_stored < crystals_required) + if(plasma_stored < plasma_required) return FALSE for(var/material_req in materials_required) if(materials_required[material_req] > 0) diff --git a/code/datums/construction/xenomorph/construction_template_xenomorph.dm b/code/datums/construction/xenomorph/construction_template_xenomorph.dm index 46b7e797632f..94914eb1e9ce 100644 --- a/code/datums/construction/xenomorph/construction_template_xenomorph.dm +++ b/code/datums/construction/xenomorph/construction_template_xenomorph.dm @@ -3,8 +3,10 @@ /datum/construction_template/xenomorph name = "xenomorph structure" build_type = /obj/effect/alien/resin/special - crystals_required = 45 * XENO_STRUCTURE_PLASMA_MULTIPLIER - var/datum/hive_status/hive_ref //Who gets what we build + plasma_required = 45 * XENO_STRUCTURE_PLASMA_MULTIPLIER + /// The hive that this structure belongs to. + var/datum/hive_status/hive_ref + /// The range around this structure which needs to be clear for it to be constructed. var/block_range = 1 /datum/construction_template/xenomorph/set_structure_image() @@ -24,18 +26,20 @@ /datum/construction_template/xenomorph/core name = XENO_STRUCTURE_CORE + description = "Heart of the hive, grows hive weeds (which are necessary for other structures), stores larva, spawns lesser drones, and protects the hive from skyfire." build_type = /obj/effect/alien/resin/special/pylon/core build_icon_state = "core" - crystals_required = 100 * XENO_STRUCTURE_PLASMA_MULTIPLIER + plasma_required = 100 * XENO_STRUCTURE_PLASMA_MULTIPLIER block_range = 0 /datum/construction_template/xenomorph/cluster name = XENO_STRUCTURE_CLUSTER + description = "Remote section of the hive, grows hive weeds, and morphs into a hive pylon when placed near a communications tower." build_type = /obj/effect/alien/resin/special/cluster build_icon_state = "hive_cluster" pixel_y = -8 pixel_x = -8 - crystals_required = 50 * XENO_STRUCTURE_PLASMA_MULTIPLIER + plasma_required = 50 * XENO_STRUCTURE_PLASMA_MULTIPLIER block_range = 0 /datum/construction_template/xenomorph/cluster/set_structure_image() @@ -43,23 +47,27 @@ /datum/construction_template/xenomorph/pylon name = XENO_STRUCTURE_PYLON + description = "Remote section of the hive, grows hive weeds, spawns lesser drones, and protects sisters from air strikes." build_type = /obj/effect/alien/resin/special/pylon build_icon_state = "pylon" - crystals_required = 100 * XENO_STRUCTURE_PLASMA_MULTIPLIER + plasma_required = 100 * XENO_STRUCTURE_PLASMA_MULTIPLIER block_range = 0 /datum/construction_template/xenomorph/eggmorph name = XENO_STRUCTURE_EGGMORPH + description = "Processes hatched hosts into new facehuggers." build_type = /obj/effect/alien/resin/special/eggmorph build_icon_state = "eggmorph_preview" /datum/construction_template/xenomorph/recovery name = XENO_STRUCTURE_RECOVERY + description = "Hastily recovers the strength of sisters resting around it." build_type = /obj/effect/alien/resin/special/recovery build_icon_state = "recovery" /datum/construction_template/xenomorph/nest name = XENO_STRUCTURE_NEST + description = "Strong enough to secure a headhunter for indeterminate durations." build_type = /obj/effect/alien/resin/special/nest build_icon_state = "reinforced_nest" @@ -101,3 +109,5 @@ xeno_message(SPAN_XENOWARNING("This structure needs to be built directly next to an vertical surface."), 7, XENO_HIVE_NORMAL) qdel(owner) qdel(src) + +#undef XENO_STRUCTURE_PLASMA_MULTIPLIER diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index b60b20bc9026..ae19a3044678 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -8,16 +8,16 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) var/locked[] = list() /datum/datacore/proc/get_manifest(monochrome, OOC, nonHTML) - var/list/cic = ROLES_CIC.Copy() - var/list/auxil = ROLES_AUXIL_SUPPORT.Copy() - var/list/misc = ROLES_MISC.Copy() - var/list/mp = ROLES_POLICE.Copy() - var/list/eng = ROLES_ENGINEERING.Copy() - var/list/req = ROLES_REQUISITION.Copy() - var/list/med = ROLES_MEDICAL.Copy() - var/list/marines_by_squad = ROLES_SQUAD_ALL.Copy() + var/list/cic = GLOB.ROLES_CIC.Copy() + var/list/auxil = GLOB.ROLES_AUXIL_SUPPORT.Copy() + var/list/misc = GLOB.ROLES_MISC.Copy() + var/list/mp = GLOB.ROLES_POLICE.Copy() + var/list/eng = GLOB.ROLES_ENGINEERING.Copy() + var/list/req = GLOB.ROLES_REQUISITION.Copy() + var/list/med = GLOB.ROLES_MEDICAL.Copy() + var/list/marines_by_squad = GLOB.ROLES_SQUAD_ALL.Copy() for(var/squad_name in marines_by_squad) - marines_by_squad[squad_name] = ROLES_MARINES.Copy() + marines_by_squad[squad_name] = GLOB.ROLES_MARINES.Copy() var/list/isactive = new() // If we need not the HTML table, but list @@ -32,18 +32,18 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) ) departments += marines_by_squad var/list/manifest_out = list() - for(var/datum/data/record/t in GLOB.data_core.general) - if(t.fields["mob_faction"] != FACTION_MARINE) //we process only USCM humans + for(var/datum/data/record/record_entry in GLOB.data_core.general) + if(record_entry.fields["mob_faction"] != FACTION_MARINE) //we process only USCM humans continue - var/name = t.fields["name"] - var/rank = t.fields["rank"] - var/squad = t.fields["squad"] + var/name = record_entry.fields["name"] + var/rank = record_entry.fields["rank"] + var/squad = record_entry.fields["squad"] if(isnull(name) || isnull(rank)) continue var/has_department = FALSE for(var/department in departments) // STOP SIGNING ALL MARINES IN ALPHA! - if(department in ROLES_SQUAD_ALL) + if(department in GLOB.ROLES_SQUAD_ALL) if(squad != department) continue var/list/jobs = departments[department] @@ -83,16 +83,16 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) // sort mobs var/dept_flags = NO_FLAGS //Is there anybody in the department?. - var/list/squad_sublists = ROLES_SQUAD_ALL.Copy() //Are there any marines in the squad? + var/list/squad_sublists = GLOB.ROLES_SQUAD_ALL.Copy() //Are there any marines in the squad? - for(var/datum/data/record/t in GLOB.data_core.general) - if(t.fields["mob_faction"] != FACTION_MARINE) //we process only USCM humans + for(var/datum/data/record/record_entry in GLOB.data_core.general) + if(record_entry.fields["mob_faction"] != FACTION_MARINE) //we process only USCM humans continue - var/name = t.fields["name"] - var/rank = t.fields["rank"] - var/real_rank = t.fields["real_rank"] - var/squad_name = t.fields["squad"] + var/name = record_entry.fields["name"] + var/rank = record_entry.fields["rank"] + var/real_rank = record_entry.fields["real_rank"] + var/squad_name = record_entry.fields["squad"] if(isnull(name) || isnull(rank) || isnull(real_rank)) continue @@ -104,35 +104,38 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) break isactive[name] = active ? "Active" : "Inactive" else - isactive[name] = t.fields["p_stat"] + isactive[name] = record_entry.fields["p_stat"] //cael - to prevent multiple appearances of a player/job combination, add a continue after each line - if(real_rank in ROLES_CIC) + if(real_rank in GLOB.ROLES_CIC) dept_flags |= FLAG_SHOW_CIC LAZYSET(cic[real_rank], name, rank) - else if(real_rank in ROLES_AUXIL_SUPPORT) + else if(real_rank in GLOB.ROLES_AUXIL_SUPPORT) dept_flags |= FLAG_SHOW_AUXIL_SUPPORT LAZYSET(auxil[real_rank], name, rank) - else if(real_rank in ROLES_MISC) + else if(real_rank in GLOB.ROLES_MISC) dept_flags |= FLAG_SHOW_MISC LAZYSET(misc[real_rank], name, rank) - else if(real_rank in ROLES_POLICE) + else if(real_rank in GLOB.ROLES_POLICE) dept_flags |= FLAG_SHOW_POLICE LAZYSET(mp[real_rank], name, rank) - else if(real_rank in ROLES_ENGINEERING) + else if(real_rank in GLOB.ROLES_ENGINEERING) dept_flags |= FLAG_SHOW_ENGINEERING LAZYSET(eng[real_rank], name, rank) - else if(real_rank in ROLES_REQUISITION) + else if(real_rank in GLOB.ROLES_REQUISITION) dept_flags |= FLAG_SHOW_REQUISITION LAZYSET(req[real_rank], name, rank) - else if(real_rank in ROLES_MEDICAL) + else if(real_rank in GLOB.ROLES_MEDICAL) dept_flags |= FLAG_SHOW_MEDICAL LAZYSET(med[real_rank], name, rank) - else if(real_rank in ROLES_MARINES) + else if(real_rank in GLOB.ROLES_MARINES) if(isnull(squad_name)) continue dept_flags |= FLAG_SHOW_MARINES squad_sublists[squad_name] = TRUE + ///If it is a real squad in the USCM squad list to prevent the crew manifest from breaking + if(!(squad_name in GLOB.ROLES_SQUAD_ALL)) + continue LAZYSET(marines_by_squad[squad_name][real_rank], name, rank) //here we fill manifest @@ -152,7 +155,7 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) even = !even if(dept_flags & FLAG_SHOW_MARINES) dat += "Marines" - for(var/squad_name in ROLES_SQUAD_ALL) + for(var/squad_name in GLOB.ROLES_SQUAD_ALL) if(!squad_sublists[squad_name]) continue dat += "[squad_name]" @@ -202,9 +205,9 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) if(!nosleep) sleep(40) - var/list/jobs_to_check = ROLES_CIC + ROLES_AUXIL_SUPPORT + ROLES_MISC + ROLES_POLICE + ROLES_ENGINEERING + ROLES_REQUISITION + ROLES_MEDICAL + ROLES_MARINES - for(var/mob/living/carbon/human/H in GLOB.human_mob_list) - if(is_admin_level(H.z)) + var/list/jobs_to_check = GLOB.ROLES_CIC + GLOB.ROLES_AUXIL_SUPPORT + GLOB.ROLES_MISC + GLOB.ROLES_POLICE + GLOB.ROLES_ENGINEERING + GLOB.ROLES_REQUISITION + GLOB.ROLES_MEDICAL + GLOB.ROLES_MARINES + for(var/mob/living/carbon/human/H as anything in GLOB.human_mob_list) + if(should_block_game_interaction(H)) continue if(H.job in jobs_to_check) manifest_inject(H) @@ -213,14 +216,14 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) var/datum/data/record/foundrecord var/use_name = isnull(ref) - for(var/datum/data/record/t in GLOB.data_core.general) + for(var/datum/data/record/record_entry in GLOB.data_core.general) if(use_name) - if(t.fields["name"] == name) - foundrecord = t + if(record_entry.fields["name"] == name) + foundrecord = record_entry break else - if(t.fields["ref"] == ref) - foundrecord = t + if(record_entry.fields["ref"] == ref) + foundrecord = record_entry break if(foundrecord) @@ -236,102 +239,106 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) return TRUE return FALSE -/datum/datacore/proc/manifest_inject(mob/living/carbon/human/H) +/datum/datacore/proc/manifest_inject(mob/living/carbon/human/target) var/assignment - if(H.job) - assignment = H.job + if(target.job) + assignment = target.job else assignment = "Unassigned" - var/id = add_zero(num2hex(H.gid), 6) //this was the best they could come up with? A large random number? *sigh* + var/id = add_zero(num2hex(target.gid), 6) //this was the best they could come up with? A large random number? *sigh* //var/icon/front = new(get_id_photo(H), dir = SOUTH) //var/icon/side = new(get_id_photo(H), dir = WEST) //General Record - var/datum/data/record/G = new() - G.fields["id"] = id - G.fields["name"] = H.real_name - G.fields["real_rank"] = H.job - G.fields["rank"] = assignment - G.fields["squad"] = H.assigned_squad ? H.assigned_squad.name : null - G.fields["age"] = H.age - G.fields["p_stat"] = "Active" - G.fields["m_stat"] = "Stable" - G.fields["sex"] = H.gender - G.fields["species"] = H.get_species() - G.fields["origin"] = H.origin - G.fields["faction"] = H.personal_faction - G.fields["mob_faction"] = H.faction - G.fields["religion"] = H.religion - G.fields["ref"] = WEAKREF(H) - //G.fields["photo_front"] = front - //G.fields["photo_side"] = side - - if(H.gen_record && !jobban_isbanned(H, "Records")) - G.fields["notes"] = H.gen_record + var/datum/data/record/record_general = new() + record_general.fields["id"] = id + record_general.fields["name"] = target.real_name + record_general.name = target.real_name + record_general.fields["real_rank"] = target.job + record_general.fields["rank"] = assignment + record_general.fields["squad"] = target.assigned_squad ? target.assigned_squad.name : null + record_general.fields["age"] = target.age + record_general.fields["p_stat"] = "Active" + record_general.fields["m_stat"] = "Stable" + record_general.fields["sex"] = target.gender + record_general.fields["species"] = target.get_species() + record_general.fields["origin"] = target.origin + record_general.fields["faction"] = target.personal_faction + record_general.fields["mob_faction"] = target.faction + record_general.fields["religion"] = target.religion + record_general.fields["ref"] = WEAKREF(target) + //record_general.fields["photo_front"] = front + //record_general.fields["photo_side"] = side + + if(target.gen_record && !jobban_isbanned(target, "Records")) + record_general.fields["notes"] = target.gen_record else - G.fields["notes"] = "No notes found." - general += G + record_general.fields["notes"] = "No notes found." + general += record_general //Medical Record - var/datum/data/record/M = new() - M.fields["id"] = id - M.fields["name"] = H.real_name - M.fields["b_type"] = H.blood_type - M.fields["mi_dis"] = "None" - M.fields["mi_dis_d"] = "No minor disabilities have been declared." - M.fields["ma_dis"] = "None" - M.fields["ma_dis_d"] = "No major disabilities have been diagnosed." - M.fields["alg"] = "None" - M.fields["alg_d"] = "No allergies have been detected in this patient." - M.fields["cdi"] = "None" - M.fields["cdi_d"] = "No diseases have been diagnosed at the moment." - M.fields["last_scan_time"] = null - M.fields["last_scan_result"] = "No scan data on record" // body scanner results - M.fields["autodoc_data"] = list() - M.fields["autodoc_manual"] = list() - M.fields["ref"] = WEAKREF(H) - - if(H.med_record && !jobban_isbanned(H, "Records")) - M.fields["notes"] = H.med_record + var/datum/data/record/record_medical = new() + record_medical.fields["id"] = id + record_medical.fields["name"] = target.real_name + record_medical.name = target.name + record_medical.fields["b_type"] = target.blood_type + record_medical.fields["mi_dis"] = "None" + record_medical.fields["mi_dis_d"] = "No minor disabilities have been declared." + record_medical.fields["ma_dis"] = "None" + record_medical.fields["ma_dis_d"] = "No major disabilities have been diagnosed." + record_medical.fields["alg"] = "None" + record_medical.fields["alg_d"] = "No allergies have been detected in this patient." + record_medical.fields["cdi"] = "None" + record_medical.fields["cdi_d"] = "No diseases have been diagnosed at the moment." + record_medical.fields["last_scan_time"] = null + record_medical.fields["last_scan_result"] = "No scan data on record" // body scanner results + record_medical.fields["autodoc_data"] = list() + record_medical.fields["autodoc_manual"] = list() + record_medical.fields["ref"] = WEAKREF(target) + + if(target.med_record && !jobban_isbanned(target, "Records")) + record_medical.fields["notes"] = target.med_record else - M.fields["notes"] = "No notes found." - medical += M + record_medical.fields["notes"] = "No notes found." + medical += record_medical //Security Record - var/datum/data/record/S = new() - S.fields["id"] = id - S.fields["name"] = H.real_name - S.fields["criminal"] = "None" - S.fields["incident"] = "" - S.fields["ref"] = WEAKREF(H) + var/datum/data/record/record_security = new() + record_security.fields["id"] = id + record_security.fields["name"] = target.real_name + record_security.name = target.real_name + record_security.fields["criminal"] = "None" + record_security.fields["incident"] = "" + record_security.fields["ref"] = WEAKREF(target) - if(H.sec_record && !jobban_isbanned(H, "Records")) - var/new_comment = list("entry" = H.sec_record, "created_by" = list("name" = "\[REDACTED\]", "rank" = "Military Police"), "deleted_by" = null, "deleted_at" = null, "created_at" = "Pre-Deployment") - S.fields["comments"] = list("1" = new_comment) - S.fields["notes"] = H.sec_record - security += S + if(target.sec_record && !jobban_isbanned(target, "Records")) + var/new_comment = list("entry" = target.sec_record, "created_by" = list("name" = "\[REDACTED\]", "rank" = "Military Police"), "deleted_by" = null, "deleted_at" = null, "created_at" = "Pre-Deployment") + record_security.fields["comments"] = list("1" = new_comment) + record_security.fields["notes"] = target.sec_record + security += record_security //Locked Record - var/datum/data/record/L = new() - L.fields["id"] = md5("[H.real_name][H.job]") - L.fields["name"] = H.real_name - L.fields["rank"] = H.job - L.fields["age"] = H.age - L.fields["sex"] = H.gender - L.fields["b_type"] = H.b_type - L.fields["species"] = H.get_species() - L.fields["origin"] = H.origin - L.fields["faction"] = H.personal_faction - L.fields["religion"] = H.religion - L.fields["ref"] = WEAKREF(H) - - if(H.exploit_record && !jobban_isbanned(H, "Records")) - L.fields["exploit_record"] = H.exploit_record + var/datum/data/record/record_locked = new() + record_locked.fields["id"] = md5("[target.real_name][target.job]") + record_locked.fields["name"] = target.real_name + record_locked.name = target.real_name + record_locked.fields["rank"] = target.job + record_locked.fields["age"] = target.age + record_locked.fields["sex"] = target.gender + record_locked.fields["b_type"] = target.b_type + record_locked.fields["species"] = target.get_species() + record_locked.fields["origin"] = target.origin + record_locked.fields["faction"] = target.personal_faction + record_locked.fields["religion"] = target.religion + record_locked.fields["ref"] = WEAKREF(target) + + if(target.exploit_record && !jobban_isbanned(target, "Records")) + record_locked.fields["exploit_record"] = target.exploit_record else - L.fields["exploit_record"] = "No additional information acquired." - locked += L + record_locked.fields["exploit_record"] = "No additional information acquired." + locked += record_locked /proc/get_id_photo(mob/living/carbon/human/H) diff --git a/code/datums/datum.dm b/code/datums/datum.dm index b26c6afe4d91..7d497785a72a 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -19,8 +19,8 @@ /// Active timers with this datum as the target var/list/active_timers - /// Status traits attached. - var/list/status_traits + /// Status traits attached to this datum. associative list of the form: list(trait name (string) = list(source1, source2, source3,...)) + var/list/_status_traits /** * Components attached to this datum diff --git a/code/datums/disease.dm b/code/datums/disease.dm index e9c399c7b8bf..024337c8e065 100644 --- a/code/datums/disease.dm +++ b/code/datums/disease.dm @@ -7,7 +7,7 @@ to null does not delete the object itself. Thank you. */ -var/list/diseases = typesof(/datum/disease) - /datum/disease +GLOBAL_LIST_INIT(diseases, typesof(/datum/disease) - /datum/disease) /datum/disease @@ -121,17 +121,17 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease check_range = 1 // everything else, like infect-on-contact things, only infect things on top of it if(isturf(source.loc)) - for(var/mob/living/carbon/M in oview(check_range, source)) - if(isturf(M.loc)) - if(AStar(source.loc, M.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, check_range)) - M.contract_disease(src, 0, 1, force_spread) + for(var/mob/living/carbon/victim in oview(check_range, source)) + if(isturf(victim.loc)) + if(AStar(source.loc, victim.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, check_range)) + victim.contract_disease(src, 0, 1, force_spread) return /datum/disease/process() if(!holder) - active_diseases -= src + SSdisease.all_diseases -= src return if(prob(65)) spread(holder) @@ -173,12 +173,10 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease var/mob/living/carbon/human/H = affected_mob H.med_hud_set_status() - - /datum/disease/New(process=TRUE)//process = 1 - adding the object to global list. List is processed by master controller. cure_list = list(cure_id) // to add more cures, add more vars to this list in the actual disease's New() if(process) // Viruses in list are considered active. - active_diseases += src + SSdisease.all_diseases += src initial_spread = spread /datum/disease/proc/IsSame(datum/disease/D) @@ -193,5 +191,5 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease /datum/disease/Destroy() affected_mob = null holder = null - active_diseases -= src + SSdisease.all_diseases -= src . = ..() diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 6440c9734374..8b84513169e6 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -9,15 +9,15 @@ #define RANDOM_STARTING_LEVEL 2 -var/list/archive_diseases = list() +GLOBAL_LIST_EMPTY(archive_diseases) // The order goes from easy to cure to hard to cure. -var/list/advance_cures = list( +GLOBAL_LIST_INIT(advance_cures, list( "nutriment", "sugar", "orangejuice", "spaceacillin", "kelotane", "ethanol", "leporazine", "lipozine", "silver", "gold", "phoron" - ) + )) /* @@ -50,10 +50,10 @@ var/list/advance_cures = list( /datum/disease/advance/New(process = 1, datum/disease/advance/D) // Setup our dictionary if it hasn't already. - if(!dictionary_symptoms.len) - for(var/symp in list_symptoms) + if(!GLOB.dictionary_symptoms.len) + for(var/symp in GLOB.list_symptoms) var/datum/symptom/S = new symp - dictionary_symptoms[S.id] = symp + GLOB.dictionary_symptoms[S.id] = symp if(!istype(D)) D = null @@ -142,7 +142,7 @@ var/list/advance_cures = list( // Generate symptoms. By default, we only choose non-deadly symptoms. var/list/possible_symptoms = list() - for(var/symp in list_symptoms) + for(var/symp in GLOB.list_symptoms) var/datum/symptom/S = new symp if(S.level <= type_level_limit) if(!HasSymptom(S)) @@ -170,13 +170,13 @@ var/list/advance_cures = list( var/list/properties = GenerateProperties() AssignProperties(properties) - if(!archive_diseases[GetDiseaseID()]) + if(!GLOB.archive_diseases[GetDiseaseID()]) if(new_name) AssignName() - archive_diseases[GetDiseaseID()] = src // So we don't infinite loop - archive_diseases[GetDiseaseID()] = new /datum/disease/advance(0, src, 1) + GLOB.archive_diseases[GetDiseaseID()] = src // So we don't infinite loop + GLOB.archive_diseases[GetDiseaseID()] = new /datum/disease/advance(0, src, 1) - var/datum/disease/advance/A = archive_diseases[GetDiseaseID()] + var/datum/disease/advance/A = GLOB.archive_diseases[GetDiseaseID()] AssignName(A.name) //Generate disease properties based on the effects. Returns an associated list. @@ -204,9 +204,9 @@ var/list/advance_cures = list( hidden = list( (properties["stealth"] > 2), (properties["stealth"] > 3) ) // The more symptoms we have, the less transmittable it is but some symptoms can make up for it. - SetSpread(Clamp(properties["transmittable"] - symptoms.len, BLOOD, AIRBORNE)) + SetSpread(clamp(properties["transmittable"] - symptoms.len, BLOOD, AIRBORNE)) permeability_mod = max(Ceiling(0.4 * properties["transmittable"]), 1) - cure_chance = 15 - Clamp(properties["resistance"], -5, 5) // can be between 10 and 20 + cure_chance = 15 - clamp(properties["resistance"], -5, 5) // can be between 10 and 20 stage_prob = max(properties["stage_rate"], 2) SetSeverity(properties["severity"]) GenerateCure(properties) @@ -254,11 +254,11 @@ var/list/advance_cures = list( // Will generate a random cure, the less resistance the symptoms have, the harder the cure. /datum/disease/advance/proc/GenerateCure(list/properties = list()) if(properties && properties.len) - var/res = Clamp(properties["resistance"] - (symptoms.len / 2), 1, advance_cures.len) - cure_id = advance_cures[res] + var/res = clamp(properties["resistance"] - (symptoms.len / 2), 1, GLOB.advance_cures.len) + cure_id = GLOB.advance_cures[res] // Get the cure name from the cure_id - var/datum/reagent/D = chemical_reagents_list[cure_id] + var/datum/reagent/D = GLOB.chemical_reagents_list[cure_id] cure = D.name @@ -373,7 +373,7 @@ var/list/advance_cures = list( var/list/symptoms = list() symptoms += "Done" - symptoms += list_symptoms.Copy() + symptoms += GLOB.list_symptoms.Copy() do var/symptom = tgui_input_list(user, "Choose a symptom to add ([i] remaining)", "Choose a Symptom", symptoms) if(istext(symptom)) @@ -391,7 +391,7 @@ var/list/advance_cures = list( D.AssignName(new_name) D.Refresh() - for(var/datum/disease/advance/AD in active_diseases) + for(var/datum/disease/advance/AD in SSdisease.all_diseases) AD.Refresh() for(var/mob/living/carbon/human/H in shuffle(GLOB.alive_mob_list.Copy())) @@ -409,7 +409,7 @@ var/list/advance_cures = list( /* /mob/verb/test() - for(var/datum/disease/D in active_diseases) + for(var/datum/disease/D in SSdisease.all_diseases) to_chat(src, "[D.name] - [D.holder]") */ diff --git a/code/datums/diseases/advance/symptoms/cough.dm b/code/datums/diseases/advance/symptoms/cough.dm index 8b8d46c90a61..cd7f9a1b974e 100644 --- a/code/datums/diseases/advance/symptoms/cough.dm +++ b/code/datums/diseases/advance/symptoms/cough.dm @@ -3,7 +3,7 @@ Coughing - Noticable. + Noticeable. Little Resistance. Doesn't increase stage speed much. Transmittable. diff --git a/code/datums/diseases/advance/symptoms/hallucigen.dm b/code/datums/diseases/advance/symptoms/hallucigen.dm index f14f94dd2167..2802f6ebfaf2 100644 --- a/code/datums/diseases/advance/symptoms/hallucigen.dm +++ b/code/datums/diseases/advance/symptoms/hallucigen.dm @@ -3,7 +3,7 @@ Hallucigen - Very noticable. + Very noticeable. Lowers resistance considerably. Decreases stage speed. Reduced transmittable. diff --git a/code/datums/diseases/advance/symptoms/headache.dm b/code/datums/diseases/advance/symptoms/headache.dm index 169085fe5911..b4a3d5939962 100644 --- a/code/datums/diseases/advance/symptoms/headache.dm +++ b/code/datums/diseases/advance/symptoms/headache.dm @@ -3,7 +3,7 @@ Headache - Noticable. + Noticeable. Highly resistant. Increases stage speed. Not transmittable. diff --git a/code/datums/diseases/advance/symptoms/itching.dm b/code/datums/diseases/advance/symptoms/itching.dm index a8f9cb210396..8b79fd1d6052 100644 --- a/code/datums/diseases/advance/symptoms/itching.dm +++ b/code/datums/diseases/advance/symptoms/itching.dm @@ -3,7 +3,7 @@ Itching - Not noticable or unnoticable. + Not noticeable or unnoticeable. Resistant. Increases stage speed. Little transmittable. diff --git a/code/datums/diseases/advance/symptoms/sneeze.dm b/code/datums/diseases/advance/symptoms/sneeze.dm index 63f29eff93a4..74a6c3ab66c2 100644 --- a/code/datums/diseases/advance/symptoms/sneeze.dm +++ b/code/datums/diseases/advance/symptoms/sneeze.dm @@ -3,7 +3,7 @@ Sneezing - Very Noticable. + Very Noticeable. Increases resistance. Doesn't increase stage speed. Very transmittable. diff --git a/code/datums/diseases/advance/symptoms/symptoms.dm b/code/datums/diseases/advance/symptoms/symptoms.dm index 72a132cf517e..7746a03b4f89 100644 --- a/code/datums/diseases/advance/symptoms/symptoms.dm +++ b/code/datums/diseases/advance/symptoms/symptoms.dm @@ -1,9 +1,7 @@ // Symptoms are the effects that engineered advanced diseases do. -var/list/list_symptoms = typesof(/datum/symptom) - /datum/symptom -var/list/dictionary_symptoms = list() - -var/global/const/SYMPTOM_ACTIVATION_PROB = 3 +GLOBAL_LIST_INIT(list_symptoms, typesof(/datum/symptom) - /datum/symptom) +GLOBAL_LIST_EMPTY(dictionary_symptoms) /datum/symptom // Buffs/Debuffs the symptom has to the overall engineered disease. @@ -18,7 +16,7 @@ var/global/const/SYMPTOM_ACTIVATION_PROB = 3 var/id = "" /datum/symptom/New() - var/list/S = list_symptoms + var/list/S = GLOB.list_symptoms for(var/i = 1; i <= S.len; i++) if(src.type == S[i]) id = "[i]" diff --git a/code/datums/diseases/advance/symptoms/voice_change.dm b/code/datums/diseases/advance/symptoms/voice_change.dm index 7547242473db..c5003ea772fb 100644 --- a/code/datums/diseases/advance/symptoms/voice_change.dm +++ b/code/datums/diseases/advance/symptoms/voice_change.dm @@ -3,7 +3,7 @@ Voice Change - Very Very noticable. + Very Very noticeable. Lowers resistance considerably. Decreases stage speed. Reduced transmittable. @@ -38,10 +38,10 @@ Bonus var/random_name = "" switch(H.gender) if(MALE) - random_name = pick(first_names_male) + random_name = pick(GLOB.first_names_male) else - random_name = pick(first_names_female) - random_name += " [pick(last_names)]" + random_name = pick(GLOB.first_names_female) + random_name += " [pick(GLOB.last_names)]" H.SetSpecialVoice(random_name) return diff --git a/code/datums/diseases/advance/symptoms/vomit.dm b/code/datums/diseases/advance/symptoms/vomit.dm index cb30a2aff818..47ba6625c98b 100644 --- a/code/datums/diseases/advance/symptoms/vomit.dm +++ b/code/datums/diseases/advance/symptoms/vomit.dm @@ -3,7 +3,7 @@ Vomiting - Very Very Noticable. + Very Very Noticeable. Decreases resistance. Doesn't increase stage speed. Little transmittable. @@ -51,7 +51,7 @@ Bonus Vomiting Blood - Very Very Noticable. + Very Very Noticeable. Decreases resistance. Decreases stage speed. Little transmittable. diff --git a/code/datums/diseases/advance/symptoms/weight.dm b/code/datums/diseases/advance/symptoms/weight.dm index aebf8575e004..1e0dc978e392 100644 --- a/code/datums/diseases/advance/symptoms/weight.dm +++ b/code/datums/diseases/advance/symptoms/weight.dm @@ -3,7 +3,7 @@ Weight Gain - Very Very Noticable. + Very Very Noticeable. Decreases resistance. Decreases stage speed. Reduced transmittable. @@ -43,7 +43,7 @@ Bonus Weight Loss - Very Very Noticable. + Very Very Noticeable. Decreases resistance. Decreases stage speed. Reduced Transmittable. @@ -84,7 +84,7 @@ Bonus Weight Even - Very Noticable. + Very Noticeable. Decreases resistance. Decreases stage speed. Reduced transmittable. diff --git a/code/datums/diseases/black_goo.dm b/code/datums/diseases/black_goo.dm index 97aec074d2d3..183cdadf17aa 100644 --- a/code/datums/diseases/black_goo.dm +++ b/code/datums/diseases/black_goo.dm @@ -1,104 +1,140 @@ //Disease Datum +#define ZOMBIE_INFECTION_STAGE_ONE 1 +#define ZOMBIE_INFECTION_STAGE_TWO 2 +#define ZOMBIE_INFECTION_STAGE_THREE 3 +#define SLOW_INFECTION_RATE 1 +#define FAST_INFECTION_RATE 7 +#define STAGE_LEVEL_THRESHOLD 360 +#define MESSAGE_COOLDOWN_TIME 1 MINUTES + /datum/disease/black_goo name = "Black Goo" - max_stages = 5 + max_stages = 3 cure = "Anti-Zed" cure_id = "antiZed" spread = "Bites" spread_type = SPECIAL affected_species = list("Human") - curable = 0 - cure_chance = 100 - desc = "" + cure_chance = 100 //meaning the cure will kill the virus asap severity = "Medium" agent = "Unknown Biological Organism X-65" hidden = list(1,0) //Hidden from med-huds, but not pandemic scanners. BLOOD TESTS FOR THE WIN permeability_mod = 2 - stage_prob = 4 - stage_minimum_age = 150 - survive_mob_death = TRUE //FALSE //switch to true to make dead infected humans still transform - longevity = 500 //should allow the dead to rise - var/zombie_transforming = 0 //whether we're currently transforming the host into a zombie. - var/goo_message_cooldown = 0 //to make sure we don't spam messages too often. - var/stage_counter = 0 // tells a dead infectee their stage, so they can know when-abouts they'll revive + survive_mob_death = TRUE //We want the dead to turn into zombie. + longevity = 500 //the virus tend to die before the dead is turn into zombie this should fix it. + stage_prob = 0//no randomness + + /// boolean value to determine if the mob is currently transforming into a zombie. + var/zombie_is_transforming = FALSE + + /// variable to keep track of the stage level, used to prevent the stage message from being displayed more than once for any given stage. + var/stage_counter = 0 + +//new variables to handle infection progression inside a stage. + + /// variable that contains accumulated virus progression for a host. Iterates to a value above 360 and is then reset. + var/stage_level = 0 + + /// variable that handles passive increase of the virus of a host. + var/infection_rate = SLOW_INFECTION_RATE + + /// cooldown for the living mob's symptom messages + COOLDOWN_DECLARE(goo_message_cooldown) /datum/disease/black_goo/stage_act() ..() - if(!ishuman(affected_mob)) return - var/mob/living/carbon/human/H = affected_mob + if(!ishuman_strict(affected_mob)) + return + var/mob/living/carbon/human/infected_mob = affected_mob + + if(iszombie(infected_mob)) + return + + // infection rate is faster for dead mobs + if(infected_mob.stat == DEAD) + infection_rate = FAST_INFECTION_RATE + + // standard infection rate for living mobs + if(infected_mob.stat != DEAD) + infection_rate = SLOW_INFECTION_RATE + + stage_level += infection_rate + + // resets the stage_level once it passes the threshold. + if(stage_level >= STAGE_LEVEL_THRESHOLD) + stage++ + stage_level = stage_level % STAGE_LEVEL_THRESHOLD - if(age > 1.5*stage_minimum_age) stage_prob = 100 //if it takes too long we force a stage increase - else stage_prob = initial(stage_prob) - if(H.stat == DEAD) stage_minimum_age = 75 //the virus progress faster when the host is dead. switch(stage) - if(1) - if(H.stat == DEAD && stage_counter != stage) - to_chat(H, SPAN_CENTERBOLD("Your zombie infection is now at Stage One! Zombie transformation begins at Stage Four.")) + if(ZOMBIE_INFECTION_STAGE_ONE) + if(infected_mob.stat == DEAD && stage_counter != stage) + to_chat(infected_mob, SPAN_CENTERBOLD("Your zombie infection is now at stage one! Zombie transformation begins at stage three.")) stage_counter = stage - survive_mob_death = TRUE //changed because infection rate was REALLY horrible. - if(goo_message_cooldown < world.time ) - if(prob(3)) - to_chat(affected_mob, SPAN_DANGER("You feel really warm...")) - goo_message_cooldown = world.time + 100 - if(2) - if(H.stat == DEAD && stage_counter != stage) - to_chat(H, SPAN_CENTERBOLD("Your zombie infection is now at Stage Two! Zombie transformation begins at Stage Four.")) + + // dead mobs should not have symptoms, because... they are dead. + if(infected_mob.stat != DEAD) + if (!COOLDOWN_FINISHED(src, goo_message_cooldown)) + return + COOLDOWN_START(src, goo_message_cooldown, MESSAGE_COOLDOWN_TIME) + + switch(rand(0, 100)) + if(0 to 25) + return + if(25 to 75) + to_chat(infected_mob, SPAN_DANGER("You feel warm...")) + stage_level += 9 + if(75 to 95) + to_chat(infected_mob, SPAN_DANGER("Your throat is really dry...")) + stage_level += 18 + if(95 to 100) + to_chat(infected_mob, SPAN_DANGER("You can't trust them...")) + stage_level += 36 + + if(ZOMBIE_INFECTION_STAGE_TWO) + if(infected_mob.stat == DEAD && stage_counter != stage) + to_chat(infected_mob, SPAN_CENTERBOLD("Your zombie infection is now at stage two! Zombie transformation begins at stage three.")) stage_counter = stage - if(goo_message_cooldown < world.time) - if (prob(3)) to_chat(affected_mob, SPAN_DANGER("Your throat is really dry...")) - else if (prob(6)) to_chat(affected_mob, SPAN_DANGER("You feel really warm...")) - else if (prob(2)) H.vomit_on_floor() - goo_message_cooldown = world.time + 100 - if(3) - if(H.stat == DEAD && stage_counter != stage) - to_chat(H, SPAN_CENTERBOLD("Your zombie infection is now at Stage Three! Zombie transformation begins at Stage Four, which will be soon.")) + + if(infected_mob.stat != DEAD) + if (!COOLDOWN_FINISHED(src, goo_message_cooldown)) + return + COOLDOWN_START(src, goo_message_cooldown, MESSAGE_COOLDOWN_TIME) + + switch(rand(0, 100)) + if(0 to 25) + return + if(25 to 50) + to_chat(infected_mob, SPAN_DANGER("You can't trust them...")) + stage_level += 5 + if(50 to 75) + to_chat(infected_mob, SPAN_DANGER("You feel really warm...")) + stage_level += 9 + if(75 to 85) + to_chat(infected_mob, SPAN_DANGER("Your throat is really dry...")) + stage_level += 18 + if(85 to 95) + infected_mob.vomit_on_floor() + stage_level += 36 + if(95 to 100) + to_chat(infected_mob, SPAN_DANGER("You cough up some black fluid...")) + stage_level += 42 + + if(ZOMBIE_INFECTION_STAGE_THREE) + //check if the mob is already a zombie and just return to avoid weird stuff, edge case if zombie_is_transforming deoesn't work. + if(iszombie(infected_mob)) + return + + if(infected_mob.stat == DEAD && stage_counter != stage) + to_chat(infected_mob, SPAN_CENTERBOLD("Your zombie infection is now at stage three! Zombie transformation begin!")) stage_counter = stage hidden = list(0,0) - //survive_mob_death = TRUE //even if host dies now, the transformation will occur. - H.next_move_slowdown = max(H.next_move_slowdown, 1) - if(goo_message_cooldown < world.time) - if (prob(3)) - to_chat(affected_mob, SPAN_DANGER("You cough up some black fluid...")) - goo_message_cooldown = world.time + 100 - else if (prob(6)) - to_chat(affected_mob, SPAN_DANGER("Your throat is really dry...")) - goo_message_cooldown = world.time + 100 - else if (prob(9)) - to_chat(affected_mob, SPAN_DANGER("You feel really warm...")) - goo_message_cooldown = world.time + 100 - else if(prob(5)) - goo_message_cooldown = world.time + 100 - H.vomit_on_floor() - if(4) - if(H.stat == DEAD && stage_counter != stage) - to_chat(H, SPAN_CENTERBOLD("Your zombie infection is now at Stage Four! Your transformation will happen any moment now.")) - stage_counter = stage - H.next_move_slowdown = max(H.next_move_slowdown, 2) - if(prob(5) || age >= stage_minimum_age-1) - if(!zombie_transforming) - zombie_transform(H) - else if(prob(5)) - H.vomit_on_floor() - if(5) - if(H.stat == DEAD && stage_counter != stage) - stage_counter = stage - if(H.species.name != SPECIES_ZOMBIE && !zombie_transforming) - to_chat(H, SPAN_CENTERBOLD("Your zombie infection is now at Stage Five! Your transformation should have happened already, but will be forced now.")) - zombie_transform(H) - if(!zombie_transforming && prob(50)) - if(H.stat != DEAD) - var/healamt = 2 - if(H.health < H.maxHealth) - H.apply_damage(-healamt, BURN) - H.apply_damage(-healamt, BRUTE) - H.apply_damage(-healamt, TOX) - H.apply_damage(-healamt, OXY) - H.nutrition = NUTRITION_MAX //never hungry - + if(!zombie_is_transforming) + zombie_transform(infected_mob) + infected_mob.next_move_slowdown = max(infected_mob.next_move_slowdown, 2) /datum/disease/black_goo/proc/zombie_transform(mob/living/carbon/human/human) set waitfor = 0 - zombie_transforming = TRUE + zombie_is_transforming = TRUE human.vomit_on_floor() human.adjust_effect(5, STUN) sleep(20) @@ -113,9 +149,9 @@ playsound(human.loc, 'sound/hallucinations/wail.ogg', 25, 1) human.jitteriness = 0 human.set_species(SPECIES_ZOMBIE) - stage = 5 + stage = 3 human.faction = FACTION_ZOMBIE - zombie_transforming = FALSE + zombie_is_transforming = FALSE /obj/item/weapon/zombie_claws @@ -124,7 +160,7 @@ icon = 'icons/mob/humans/species/r_zombie.dmi' icon_state = "claw_l" flags_item = NODROP|DELONDROP|ITEM_ABSTRACT - force = 40 + force = MELEE_FORCE_TIER_6 //slightly higher than normal w_class = SIZE_MASSIVE sharp = 1 attack_verb = list("slashed", "torn", "scraped", "gashed", "ripped") @@ -135,8 +171,9 @@ return FALSE . = ..() - if(.) - playsound(loc, 'sound/weapons/bladeslice.ogg', 25, 1, 5) + if(!.) + return FALSE + playsound(loc, 'sound/weapons/bladeslice.ogg', 25, 1, 5) if(ishuman_strict(target)) var/mob/living/carbon/human/human = target @@ -149,10 +186,7 @@ target.AddDisease(new /datum/disease/black_goo) to_chat(user, SPAN_XENOWARNING("You sense your target is now infected.")) - if(issynth(target)) - target.apply_effect(2, SLOW) - else - target.apply_effect(2, SUPERSLOW) + target.apply_effect(2, SLOW) /obj/item/weapon/zombie_claws/afterattack(obj/O as obj, mob/user as mob, proximity) if(get_dist(src, O) > 1) @@ -213,6 +247,15 @@ . = ..() reagents.add_reagent("antiZed", 30) +/obj/item/reagent_container/glass/bottle/labeled_black_goo_cure + name = "\"Pathogen\" cure bottle" + desc = "The bottle has a biohazard symbol on the front, and has a label, designating its use against Agent A0-3959X.91–15, colloquially known as the \"Black Goo\"." + icon_state = "bottle20" + +/obj/item/reagent_container/glass/bottle/labeled_black_goo_cure/Initialize() + . = ..() + reagents.add_reagent("antiZed", 60) + /datum/language/zombie name = "Zombie" desc = "A growling, guttural method of communication, only Zombies seem to be capable of producing these sounds." @@ -263,3 +306,11 @@ for(var/i=1; i <= storage_slots; i++) new /obj/item/reagent_container/food/drinks/bottle/black_goo(src) return + +#undef ZOMBIE_INFECTION_STAGE_ONE +#undef ZOMBIE_INFECTION_STAGE_TWO +#undef ZOMBIE_INFECTION_STAGE_THREE +#undef STAGE_LEVEL_THRESHOLD +#undef SLOW_INFECTION_RATE +#undef FAST_INFECTION_RATE +#undef MESSAGE_COOLDOWN_TIME diff --git a/code/datums/diseases/cold.dm b/code/datums/diseases/cold.dm index 46cd8952dda1..fd3fbc3a7d2d 100644 --- a/code/datums/diseases/cold.dm +++ b/code/datums/diseases/cold.dm @@ -20,7 +20,7 @@ cure() return */ - if(affected_mob.lying && prob(40)) //changed FROM prob(10) until sleeping is fixed + if(affected_mob.body_position == LYING_DOWN && prob(40)) //changed FROM prob(10) until sleeping is fixed to_chat(affected_mob, SPAN_NOTICE(" You feel better.")) cure() return @@ -43,7 +43,7 @@ cure() return */ - if(affected_mob.lying && prob(25)) //changed FROM prob(5) until sleeping is fixed + if(affected_mob.body_position == LYING_DOWN && prob(25)) //changed FROM prob(5) until sleeping is fixed to_chat(affected_mob, SPAN_NOTICE(" You feel better.")) cure() return diff --git a/code/datums/diseases/flu.dm b/code/datums/diseases/flu.dm index f2c029587616..fad0b15228b1 100644 --- a/code/datums/diseases/flu.dm +++ b/code/datums/diseases/flu.dm @@ -21,7 +21,7 @@ stage-- return */ - if(affected_mob.lying && prob(20)) //added until sleeping is fixed --Blaank + if(affected_mob.body_position == LYING_DOWN && prob(20)) //added until sleeping is fixed --Blaank to_chat(affected_mob, SPAN_NOTICE(" You feel better.")) stage-- return @@ -46,7 +46,7 @@ stage-- return */ - if(affected_mob.lying && prob(15)) //added until sleeping is fixed + if(affected_mob.body_position == LYING_DOWN && prob(15)) //added until sleeping is fixed to_chat(affected_mob, SPAN_NOTICE(" You feel better.")) stage-- return diff --git a/code/datums/diseases/magnitis.dm b/code/datums/diseases/magnitis.dm index 4b6e685e447c..d4ba54597862 100644 --- a/code/datums/diseases/magnitis.dm +++ b/code/datums/diseases/magnitis.dm @@ -22,7 +22,6 @@ if(!M.anchored && (M.flags_atom & CONDUCT)) step_towards(M,affected_mob) for(var/mob/living/silicon/S in orange(2,affected_mob)) - if(isAI(S)) continue step_towards(S,affected_mob) /* if(M.x > affected_mob.x) @@ -47,7 +46,6 @@ for(i=0,i[victim] has experienced a rare neuro-induced 'Schizo Lurker Pounce' hallucination (5% chance) at \the [hallu_area]" + " [OBSERVER_JMP(observer, victim)]")) playsound_client(victim?.client,pick('sound/voice/alien_pounce.ogg','sound/voice/alien_pounce.ogg')) victim.KnockDown(3) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound_client), victim.client,"alien_claw_flesh"), 1 SECONDS) @@ -140,18 +135,12 @@ victim.apply_effect(AGONY,10) victim.emote("pain") if(6 to 10) - if(hallu_area) - for(var/mob/dead/observer/observer as anything in GLOB.observer_list) - to_chat(observer, SPAN_DEADSAY("[victim] has experienced a rare neuro-induced 'OB' hallucination (4% chance) at \the [hallu_area]" + " [OBSERVER_JMP(observer, victim)]")) playsound_client(victim.client,'sound/effects/ob_alert.ogg') addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound_client), victim.client,'sound/weapons/gun_orbital_travel.ogg'), 2 SECONDS) if(11 to 16) playsound_client(victim.client,'sound/voice/alien_queen_screech.ogg') victim.KnockDown(1) if(17 to 24) - if(hallu_area) - for(var/mob/dead/observer/observer as anything in GLOB.observer_list) - to_chat(observer, SPAN_DEADSAY("[victim] has experienced a rare neuro-induced 'Fake CAS firemission' hallucination (7% chance) at \the [hallu_area]" + " [OBSERVER_JMP(observer, victim)]")) hallucination_fakecas_sequence(victim) //Not gonna spam a billion timers for this one so outsourcing to a proc with sleeps is a better async solution if(25 to 42) to_chat(victim,SPAN_HIGHDANGER("A SHELL IS ABOUT TO IMPACT [pick(SPAN_UNDERLINE("TOWARDS THE [pick("WEST","EAST","SOUTH","NORTH")]"),SPAN_UNDERLINE("RIGHT ONTOP OF YOU!"))]!")) @@ -161,7 +150,7 @@ victim.hallucination = 3 victim.druggy = 3 if(70 to 100) // sound based hallucination - playsound_client(victim.client,pick('sound/voice/alien_distantroar_3.ogg','sound/voice/xenos_roaring.ogg','sound/voice/alien_queen_breath1.ogg', 'sound/voice/4_xeno_roars.ogg','sound/misc/notice2.ogg',"bone_break","gun_pulse","metalbang","pry","shatter")) + playsound_client(client = victim.client, soundin = pick('sound/voice/alien_distantroar_3.ogg','sound/voice/xenos_roaring.ogg','sound/voice/alien_queen_breath1.ogg', 'sound/voice/4_xeno_roars.ogg','sound/misc/notice2.ogg',"bone_break","gun_pulse","metalbang","pry","shatter"),vol = 65) diff --git a/code/datums/effects/tether.dm b/code/datums/effects/tether.dm index ddaafff46489..1667d901a08a 100644 --- a/code/datums/effects/tether.dm +++ b/code/datums/effects/tether.dm @@ -52,7 +52,7 @@ var/turf/T var/dir_away = get_dir(affected_atom, A) - for (var/dir in alldirs) + for (var/dir in GLOB.alldirs) if (dir & dir_away) continue T = get_step(A, dir) diff --git a/code/datums/effects/xeno_strains/boiler_trap.dm b/code/datums/effects/xeno_strains/boiler_trap.dm index 61451391e816..199505379b27 100644 --- a/code/datums/effects/xeno_strains/boiler_trap.dm +++ b/code/datums/effects/xeno_strains/boiler_trap.dm @@ -4,19 +4,17 @@ effect_name = "boiler trap" duration = null flags = INF_DURATION - /// Ghetto flag indicating whether we actually placed the freeze or not, until we have an actual effects system - var/freezer = FALSE -/datum/effects/boiler_trap/New(atom/A, mob/from, last_dmg_source, zone) +/datum/effects/boiler_trap/New(atom/A, mob/living/from, last_dmg_source, zone) . = ..() if(!QDELETED(src)) - var/mob/M = affected_atom - freezer = M.freeze() + var/mob/living/affected_living = affected_atom + ADD_TRAIT(affected_living, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY(effect_name)) /datum/effects/boiler_trap/Destroy(force) - if(ismob(affected_atom) && freezer) - var/mob/M = affected_atom - M.unfreeze() + if(ismob(affected_atom)) + var/mob/living/affected_living = affected_atom + REMOVE_TRAIT(affected_living, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY(effect_name)) return ..() /datum/effects/boiler_trap/validate_atom(atom/A) @@ -28,8 +26,6 @@ /datum/effects/boiler_trap/process_mob() . = ..() if(!.) return FALSE - var/mob/M = affected_atom - if(M.frozen) return TRUE - if(!freezer) - freezer = M.freeze() + var/mob/living/affected_living = affected_atom + ADD_TRAIT(affected_living, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY(effect_name)) return TRUE diff --git a/code/datums/effects/xeno_strains/xeno_buff.dm b/code/datums/effects/xeno_strains/xeno_buff.dm index ad39a61dd13e..16a4bb82113e 100644 --- a/code/datums/effects/xeno_strains/xeno_buff.dm +++ b/code/datums/effects/xeno_strains/xeno_buff.dm @@ -21,7 +21,7 @@ if(!isxeno(A)) qdel(src) - to_chat(A, SPAN_XENONOTICE("You feel empowered")) + to_chat(A, SPAN_XENONOTICE("We feel empowered")) var/mob/living/carbon/xenomorph/X = A X.melee_damage_lower += bonus_damage @@ -47,7 +47,7 @@ /datum/effects/xeno_buff/Destroy() if(affected_atom) - to_chat(affected_atom, SPAN_XENONOTICE("You no longer feel empowered")) + to_chat(affected_atom, SPAN_XENONOTICE("We no longer feel empowered")) var/mob/living/carbon/xenomorph/X = affected_atom X.melee_damage_lower -= bonus_damage X.melee_damage_upper -= bonus_damage diff --git a/code/datums/elements/bloody_feet.dm b/code/datums/elements/bloody_feet.dm index 6a5a8a23ac6b..3bcccd8377c6 100644 --- a/code/datums/elements/bloody_feet.dm +++ b/code/datums/elements/bloody_feet.dm @@ -24,12 +24,12 @@ H.bloody_footsteps = steps_to_take LAZYADD(entered_bloody_turf, target) - RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) - RegisterSignal(target, COMSIG_HUMAN_BLOOD_CROSSED, PROC_REF(blood_crossed)) - RegisterSignal(target, COMSIG_HUMAN_CLEAR_BLOODY_FEET, PROC_REF(clear_blood)) + RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved), override = TRUE) + RegisterSignal(target, COMSIG_HUMAN_BLOOD_CROSSED, PROC_REF(blood_crossed), override = TRUE) + RegisterSignal(target, COMSIG_HUMAN_CLEAR_BLOODY_FEET, PROC_REF(clear_blood), override = TRUE) if(shoes) LAZYSET(target_shoes, target, shoes) - RegisterSignal(shoes, COMSIG_ITEM_DROPPED, PROC_REF(on_shoes_removed)) + RegisterSignal(shoes, COMSIG_ITEM_DROPPED, PROC_REF(on_shoes_removed), override = TRUE) if(dry_time) addtimer(CALLBACK(src, PROC_REF(clear_blood), target), dry_time) diff --git a/code/datums/elements/bullet_trait/bullet_trait.md b/code/datums/elements/bullet_trait/bullet_trait.md index 9253b3a6311a..8081843bd000 100644 --- a/code/datums/elements/bullet_trait/bullet_trait.md +++ b/code/datums/elements/bullet_trait/bullet_trait.md @@ -1,7 +1,7 @@ # A PROTOTYPE FOR MAKING ANY BULLET TRAITS Element representing traits that can be applied to bullets upon being fired -* Must be attached to a projectile (`/obj/item/projectile` in `projectile.dm`) +* Must be attached to a projectile (`/obj/projectile` in `projectile.dm`) * Allows for the customization of bullet behavior based on ammo types or guns (or other things) By convention, bullet_traits should be named bullet_trait_[insert rest of name here] @@ -16,7 +16,7 @@ By convention, bullet_traits should be named bullet_trait_[insert rest of name h /datum/element/bullet_trait/databaseAttach(datum/target) . = ..() // All bullet traits can only be applied to projectiles - if(!istype(target, /obj/item/projectile)) + if(!istype(target, /obj/projectile)) return ELEMENT_INCOMPATIBLE [handling here] diff --git a/code/datums/elements/bullet_trait/damage_boost.dm b/code/datums/elements/bullet_trait/damage_boost.dm index 1d93851dd73d..eee4a8e80f4b 100644 --- a/code/datums/elements/bullet_trait/damage_boost.dm +++ b/code/datums/elements/bullet_trait/damage_boost.dm @@ -1,5 +1,7 @@ GLOBAL_LIST_INIT(damage_boost_turfs, typecacheof(/turf)) +GLOBAL_LIST_INIT(damage_boost_turfs_xeno, typecacheof(/turf/closed/wall/resin)) + GLOBAL_LIST_INIT(damage_boost_breaching, typecacheof(list( /obj/structure/machinery/door, /obj/structure/mineral_door, @@ -44,7 +46,7 @@ GLOBAL_LIST_INIT(damage_boost_vehicles, typecacheof(/obj/vehicle/multitile)) */ /datum/element/bullet_trait_damage_boost/Attach(datum/target, damage_mult, list/damage_boosted_atoms) . = ..() - if(!istype(target, /obj/item/projectile)) + if(!istype(target, /obj/projectile)) return ELEMENT_INCOMPATIBLE src.damage_mult = damage_mult @@ -66,7 +68,7 @@ GLOBAL_LIST_INIT(damage_boost_vehicles, typecacheof(/obj/vehicle/multitile)) //add more cases for other interactions (switch doesn't seem to work with istype) else return 0 -/datum/element/bullet_trait_damage_boost/proc/handle_bullet(obj/item/projectile/P, atom/A) +/datum/element/bullet_trait_damage_boost/proc/handle_bullet(obj/projectile/P, atom/A) SIGNAL_HANDLER atom_type = check_type(A) diff --git a/code/datums/elements/bullet_trait/iff.dm b/code/datums/elements/bullet_trait/iff.dm index bd08c100d0f4..ab48b29f4812 100644 --- a/code/datums/elements/bullet_trait/iff.dm +++ b/code/datums/elements/bullet_trait/iff.dm @@ -1,5 +1,5 @@ /// This is the iff_group -/obj/item/projectile/var/runtime_iff_group +/obj/projectile/var/runtime_iff_group /datum/element/bullet_trait_iff // General bullet trait vars @@ -13,7 +13,7 @@ /datum/element/bullet_trait_iff/Attach(datum/target, iff_group) . = ..() - if(!istype(target, /obj/item/projectile)) + if(!istype(target, /obj/projectile)) return ELEMENT_INCOMPATIBLE if(!iff_group) @@ -39,7 +39,7 @@ /datum/element/bullet_trait_iff/proc/set_iff(datum/target, mob/living/carbon/human/firer) SIGNAL_HANDLER - var/obj/item/projectile/P = target + var/obj/projectile/P = target P.runtime_iff_group = get_user_iff_group(firer) // We have a "cache" to avoid getting ID card iff every shot, diff --git a/code/datums/elements/bullet_trait/ignored_range.dm b/code/datums/elements/bullet_trait/ignored_range.dm index 668e5dab2dd7..3910fb400bdb 100644 --- a/code/datums/elements/bullet_trait/ignored_range.dm +++ b/code/datums/elements/bullet_trait/ignored_range.dm @@ -12,7 +12,7 @@ /datum/element/bullet_trait_ignored_range/Attach(datum/target, range_to_ignore) . = ..() ignored_range = range_to_ignore - if(!istype(target, /obj/item/projectile)) + if(!istype(target, /obj/projectile)) return ELEMENT_INCOMPATIBLE RegisterSignal(target, COMSIG_BULLET_CHECK_MOB_SKIPPING, PROC_REF(check_distance)) @@ -22,7 +22,7 @@ return ..() -/datum/element/bullet_trait_ignored_range/proc/check_distance(obj/item/projectile/P, mob/living/carbon/human/projectile_target) +/datum/element/bullet_trait_ignored_range/proc/check_distance(obj/projectile/P, mob/living/carbon/human/projectile_target) SIGNAL_HANDLER if(P.distance_travelled <= ignored_range) diff --git a/code/datums/elements/bullet_trait/incendiary.dm b/code/datums/elements/bullet_trait/incendiary.dm index c7f6e75e8e3b..861e67651a53 100644 --- a/code/datums/elements/bullet_trait/incendiary.dm +++ b/code/datums/elements/bullet_trait/incendiary.dm @@ -8,12 +8,12 @@ /datum/element/bullet_trait_incendiary/Attach(datum/target, reagent = /datum/reagent/napalm/ut, stacks = 20) . = ..() - if(!istype(target, /obj/item/projectile)) + if(!istype(target, /obj/projectile)) return ELEMENT_INCOMPATIBLE if(ispath(reagent)) var/datum/reagent/R = reagent - burn_reagent = chemical_reagents_list[initial(R.id)] + burn_reagent = GLOB.chemical_reagents_list[initial(R.id)] else burn_reagent = reagent burn_stacks = stacks diff --git a/code/datums/elements/bullet_trait/penetrating/heavy.dm b/code/datums/elements/bullet_trait/penetrating/heavy.dm new file mode 100644 index 000000000000..fa41b8dcfc4e --- /dev/null +++ b/code/datums/elements/bullet_trait/penetrating/heavy.dm @@ -0,0 +1,47 @@ +/datum/element/bullet_trait_penetrating/heavy + // Generic bullet trait vars + element_flags = ELEMENT_DETACH|ELEMENT_BESPOKE + id_arg_index = 3 + + /// For every turf this pierces, how much damage should this lose? + var/damage_lost_per_pen = 100 + /// Typecache of things to annihilate if the bullet is on a tile with it + var/static/list/bullet_destroy_structures = typecacheof(list( + /obj/structure/surface, + /obj/structure/barricade, + )) + +/datum/element/bullet_trait_penetrating/heavy/Attach(datum/target, distance_loss_per_hit = 3, damage_lost_per_pen = 75) + . = ..() + if(. == ELEMENT_INCOMPATIBLE) + return + + src.damage_lost_per_pen = damage_lost_per_pen + +/datum/element/bullet_trait_penetrating/heavy/handle_passthrough_movables(obj/projectile/bullet, atom/movable/hit_movable, did_hit) + if(did_hit) + var/slow_mult = 1 + if(ismob(hit_movable)) + var/mob/mob = hit_movable + if(mob.mob_size >= MOB_SIZE_BIG) + slow_mult = 2 + + bullet.distance_travelled += (distance_loss_per_hit * slow_mult) + + if(is_type_in_typecache(hit_movable, bullet_destroy_structures)) + var/obj/structure/cade = hit_movable + cade.deconstruct() // This bullet just tears through whatever cades you put it up against from either side + bullet.damage -= damage_lost_per_pen + + return COMPONENT_BULLET_PASS_THROUGH + +/datum/element/bullet_trait_penetrating/heavy/handle_passthrough_turf(obj/projectile/bullet, turf/closed/wall/hit_wall) + bullet.distance_travelled += distance_loss_per_hit + bullet.damage -= damage_lost_per_pen + + if(!istype(hit_wall)) + return COMPONENT_BULLET_PASS_THROUGH + + if(!hit_wall.hull) + return COMPONENT_BULLET_PASS_THROUGH + diff --git a/code/datums/elements/bullet_trait/penetrating.dm b/code/datums/elements/bullet_trait/penetrating/penetrating.dm similarity index 89% rename from code/datums/elements/bullet_trait/penetrating.dm rename to code/datums/elements/bullet_trait/penetrating/penetrating.dm index 00fb330a7330..d3ba8a78f7f4 100644 --- a/code/datums/elements/bullet_trait/penetrating.dm +++ b/code/datums/elements/bullet_trait/penetrating/penetrating.dm @@ -8,7 +8,7 @@ /datum/element/bullet_trait_penetrating/Attach(datum/target, distance_loss_per_hit = 3) . = ..() - if(!istype(target, /obj/item/projectile)) + if(!istype(target, /obj/projectile)) return ELEMENT_INCOMPATIBLE src.distance_loss_per_hit = distance_loss_per_hit @@ -27,13 +27,13 @@ )) return ..() -/datum/element/bullet_trait_penetrating/proc/handle_passthrough_movables(obj/item/projectile/P, atom/movable/A, did_hit) +/datum/element/bullet_trait_penetrating/proc/handle_passthrough_movables(obj/projectile/P, atom/movable/A, did_hit) SIGNAL_HANDLER if(did_hit) P.distance_travelled += distance_loss_per_hit return COMPONENT_BULLET_PASS_THROUGH -/datum/element/bullet_trait_penetrating/proc/handle_passthrough_turf(obj/item/projectile/P, turf/closed/wall/T) +/datum/element/bullet_trait_penetrating/proc/handle_passthrough_turf(obj/projectile/P, turf/closed/wall/T) SIGNAL_HANDLER P.distance_travelled += distance_loss_per_hit diff --git a/code/datums/elements/light_blocking.dm b/code/datums/elements/light_blocking.dm new file mode 100644 index 000000000000..9fef194f1cd4 --- /dev/null +++ b/code/datums/elements/light_blocking.dm @@ -0,0 +1,43 @@ +/** + * Attached to movable atoms with opacity. Listens to them move and updates their old and new turf loc's opacity accordingly. + */ +/datum/element/light_blocking + element_flags = ELEMENT_DETACH + + +/datum/element/light_blocking/Attach(datum/target) + . = ..() + if(!ismovable(target)) + return ELEMENT_INCOMPATIBLE + RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_target_move)) + var/atom/movable/movable_target = target + if(!isturf(movable_target.loc)) + return + for(var/turf/turf_loc as anything in movable_target.locs) + turf_loc.add_opacity_source(target) + + +/datum/element/light_blocking/Detach(datum/target) + . = ..() + UnregisterSignal(target, list(COMSIG_MOVABLE_MOVED)) + var/atom/movable/movable_target = target + if(!isturf(movable_target.loc)) + return + for(var/turf/turf_loc as anything in movable_target.locs) + turf_loc.remove_opacity_source(target) + + +///Updates old and new turf loc opacities. +///Updates old and new turf loc opacities. +/datum/element/light_blocking/proc/on_target_move(atom/movable/source, atom/old_loc, dir, forced, list/old_locs) + SIGNAL_HANDLER + if(isturf(old_loc)) + if(old_locs) + for(var/turf/old_turf as anything in old_locs) + old_turf.remove_opacity_source(source) + else + var/turf/old_turf = old_loc + old_turf.remove_opacity_source(source) + if(isturf(source.loc)) + for(var/turf/new_turf as anything in source.locs) + new_turf.add_opacity_source(source) diff --git a/code/datums/elements/mouth_drop_item.dm b/code/datums/elements/mouth_drop_item.dm index 42c61bd275cc..7a546c6b3933 100644 --- a/code/datums/elements/mouth_drop_item.dm +++ b/code/datums/elements/mouth_drop_item.dm @@ -19,9 +19,9 @@ SIGNAL_HANDLER if(slot == WEAR_FACE) - I.RegisterSignal(user, COMSIG_MOB_KNOCKED_DOWN, TYPE_PROC_REF(/obj/item, drop_to_floor)) + I.RegisterSignal(user, COMSIG_LIVING_SET_BODY_POSITION, TYPE_PROC_REF(/obj/item, drop_to_floor)) /datum/element/mouth_drop_item/proc/item_dropped(obj/item/I, mob/living/carbon/human/user) SIGNAL_HANDLER - I.UnregisterSignal(user, COMSIG_MOB_KNOCKED_DOWN) + I.UnregisterSignal(user, COMSIG_LIVING_SET_BODY_POSITION) diff --git a/code/datums/emergency_calls/cbrn.dm b/code/datums/emergency_calls/cbrn.dm new file mode 100644 index 000000000000..cee96e10137e --- /dev/null +++ b/code/datums/emergency_calls/cbrn.dm @@ -0,0 +1,80 @@ +/datum/emergency_call/cbrn + name = "CBRN (Squad)" + arrival_message = "A CBRN squad has been dispatched to your ship. Stand by." + objectives = "Handle the chemical, biological, radiological, or nuclear threat. Further orders may be provided." + mob_min = 3 + mob_max = 5 + max_heavies = 0 + max_smartgunners = 0 + +/datum/emergency_call/cbrn/create_member(datum/mind/new_mind, turf/override_spawn_loc) + var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point() + + if(!istype(spawn_loc)) + return //Didn't find a useable spawn point. + + var/mob/living/carbon/human/mob = new(spawn_loc) + new_mind.transfer_to(mob, TRUE) + + if(!leader && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(mob.client, JOB_SQUAD_LEADER, time_required_for_job)) + leader = mob + arm_equipment(mob, /datum/equipment_preset/uscm/cbrn/leader, TRUE, TRUE) + to_chat(mob, SPAN_ROLE_HEADER("You are the CBRN Fireteam Leader!")) + + else if(medics < max_medics && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(mob.client, JOB_SQUAD_MEDIC, time_required_for_job)) + medics++ + arm_equipment(mob, /datum/equipment_preset/uscm/cbrn/medic, TRUE, TRUE) + to_chat(mob, SPAN_ROLE_HEADER("You are the CBRN Squad Medic!")) + + else if(engineers < max_engineers && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_ENGINEER) && check_timelock(mob.client, JOB_SQUAD_ENGI, time_required_for_job)) + engineers++ + arm_equipment(mob, /datum/equipment_preset/uscm/cbrn/engineer, TRUE, TRUE) + to_chat(mob, SPAN_ROLE_HEADER("You are the CBRN Squad Engineer!")) + + else + arm_equipment(mob, /datum/equipment_preset/uscm/cbrn/standard, TRUE, TRUE) + to_chat(mob, SPAN_ROLE_HEADER("You are a CBRN Squad Rifleman!")) + + to_chat(mob, SPAN_ROLE_BODY("You are a member of the USCM's CBRN. The CBRN is a force that specializes in handling chemical, biological, radiological, and nuclear threats.")) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), mob, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) + +/datum/emergency_call/cbrn/ert + name = "CBRN (Distress)" + arrival_message = "Your distress signal has been received and we are dispatching the nearest CBRN squad to board with you now. Stand by." + probability = 10 + +/datum/emergency_call/cbrn/ert/New() + ..() + objectives = "Investigate the distress signal aboard the [MAIN_SHIP_NAME]." + +/datum/emergency_call/cbrn/specialists + name = "CBRN (Specialists)" + mob_min = 2 + mob_max = 5 + max_engineers = 0 + max_medics = 0 + +/datum/emergency_call/cbrn/specialists/New() + var/cbrn_ship_name = "Unit [pick(GLOB.nato_phonetic_alphabet)]-[rand(1, 99)]" + arrival_message = "[MAIN_SHIP_NAME], CBRN [cbrn_ship_name] has been dispatched. Follow all orders provided by [cbrn_ship_name]." + objectives = "You are a specialist team in [cbrn_ship_name] dispatched to quell a threat to [MAIN_SHIP_NAME]. Further orders may be provided." + +/datum/emergency_call/cbrn/specialists/create_member(datum/mind/new_mind, turf/override_spawn_loc) + var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point() + + if(!istype(spawn_loc)) + return //Didn't find a useable spawn point. + + var/mob/living/carbon/human/mob = new(spawn_loc) + new_mind.transfer_to(mob, TRUE) + + if(!leader && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(mob.client, JOB_SQUAD_LEADER, time_required_for_job)) + leader = mob + arm_equipment(mob, /datum/equipment_preset/uscm/cbrn/specialist/lead, TRUE, TRUE) + to_chat(mob, SPAN_ROLE_HEADER("You are the CBRN Specialist Squad Leader!")) + else + arm_equipment(mob, /datum/equipment_preset/uscm/cbrn/specialist, TRUE, TRUE) + to_chat(mob, SPAN_ROLE_HEADER("You are a CBRN Specialist!")) + + to_chat(mob, SPAN_ROLE_BODY("You are a member of the USCM's CBRN. The CBRN is a force that specializes in handling chemical, biological, radiological, and nuclear threats.")) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), mob, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) diff --git a/code/datums/emergency_calls/clf.dm b/code/datums/emergency_calls/clf.dm index 0a5f09e2a2f2..88c95ef31bc4 100644 --- a/code/datums/emergency_calls/clf.dm +++ b/code/datums/emergency_calls/clf.dm @@ -28,7 +28,7 @@ to_chat(H, SPAN_BOLD("The Dust Raiders responded with deadly force, scattering many of the colonists who attempted to fight their occupation.")) to_chat(H, SPAN_BOLD("The Dust Raiders and their flagship, the USS Alistoun eventually withdrew from the sector by the end of the year.")) to_chat(H, SPAN_BOLD("With the Neroid Sector existing in relative isolation from United America oversight for the last five years, many colonists have considered themselves free from governmental rule.")) - to_chat(H, SPAN_BOLD("The year is now [game_year].")) + to_chat(H, SPAN_BOLD("The year is now [GLOB.game_year].")) to_chat(H, SPAN_BOLD("The arrival of the USCM Battalion, the Falling Falcons, and their flagship, the [MAIN_SHIP_NAME], have reaffirmed that the United Americas considers the Neroid Sector part of their holdings.")) to_chat(H, SPAN_BOLD("It is up to you and your fellow colonists to make them realize their trespasses. This sector is no longer theirs.")) @@ -45,7 +45,7 @@ leader = H to_chat(H, SPAN_ROLE_HEADER("You are a Cell Leader of the local resistance group, the Colonial Liberation Front!")) arm_equipment(H, /datum/equipment_preset/clf/leader, TRUE, TRUE) - else if(synths < max_synths && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SYNTH) && RoleAuthority.roles_whitelist[H.ckey] & WHITELIST_SYNTHETIC) + else if(synths < max_synths && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SYNTH) && H.client.check_whitelist_status(WHITELIST_SYNTHETIC)) synths++ to_chat(H, SPAN_ROLE_HEADER("You are a Multi-Purpose Synthetic for the local resistance group, the Colonial Liberation Front!")) arm_equipment(H, /datum/equipment_preset/clf/synth, TRUE, TRUE) diff --git a/code/datums/emergency_calls/cmb.dm b/code/datums/emergency_calls/cmb.dm index fcd301158b8f..56b8b169b313 100644 --- a/code/datums/emergency_calls/cmb.dm +++ b/code/datums/emergency_calls/cmb.dm @@ -35,7 +35,7 @@ leader = mob to_chat(mob, SPAN_ROLE_HEADER("You are the Colonial Marshal!")) arm_equipment(mob, /datum/equipment_preset/cmb/leader, TRUE, TRUE) - else if(synths < max_synths && HAS_FLAG(mob?.client.prefs.toggles_ert, PLAY_SYNTH) && RoleAuthority.roles_whitelist[mob.ckey] & WHITELIST_SYNTHETIC) + else if(synths < max_synths && HAS_FLAG(mob?.client.prefs.toggles_ert, PLAY_SYNTH) && mob.client.check_whitelist_status(WHITELIST_SYNTHETIC)) synths++ to_chat(mob, SPAN_ROLE_HEADER("You are a CMB Investigative Synthetic!")) arm_equipment(mob, /datum/equipment_preset/cmb/synth, TRUE, TRUE) @@ -100,6 +100,19 @@ to_chat(M, SPAN_BOLD("Corporate Officers chase after paychecks and promotions, but you are motivated to do your sworn duty and care for the population, no matter how far or isolated a colony may be.")) to_chat(M, SPAN_BOLD("Despite being stretched thin, the stalwart oath of the Marshals has continued to keep communities safe, with the CMB well respected by many. You are a representation of that oath, serve with distinction.")) + +// A Nearby Colonial Marshal patrol team responding to Marshals in Distress. +/datum/emergency_call/cmb/alt + name = "CMB - Patrol Team - Marshals in Distress (Friendly)" + mob_max = 5 + mob_min = 1 + probability = 0 + +/datum/emergency_call/cmb/alt/New() + ..() + arrival_message = "CMB Team, this is Anchorpoint Station. We have confirmed you are in distress. Routing nearby units to assist!" + objectives = "Patrol Unit 5807, we have nearby Marshals in Distress! Locate and assist them immediately." + // Anchorpoint Station Colonial Marines, use this primarily for reinforcing or evacuating the CMB, as the CMB themselves are not equipped to handle heavy engagements. /datum/emergency_call/cmb/anchorpoint name = "CMB - Anchorpoint Station Colonial Marine QRF (Friendly)" @@ -113,7 +126,7 @@ /datum/emergency_call/cmb/anchorpoint/New() ..() arrival_message = "[MAIN_SHIP_NAME], this is Anchorpoint Station. Be advised, a QRF Team of our Colonial Marines is currently attempting to board you. Open your ports, transmitting docking codes now. Standby." - objectives = "QRF Team. You are here to reinforce the cmb team we deployed earlier. Make contact and work with the CMB Marshal and their deputies. Facilitate their protection and evacuation if necessary. Secondary Objective: Investigate the reason for distress aboard the [MAIN_SHIP_NAME], and assist the crew if possible." + objectives = "QRF Team. You are here to reinforce the CMB team we deployed earlier. Make contact and work with the CMB Marshal and their deputies. Facilitate their protection and evacuation if necessary. Secondary Objective: Investigate the reason for distress aboard the [MAIN_SHIP_NAME], and assist the crew if possible." /datum/emergency_call/cmb/anchorpoint/create_member(datum/mind/M, turf/override_spawn_loc) var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point() @@ -154,7 +167,7 @@ to_chat(M, SPAN_BOLD("You are the Anchorpoint QRF Fireteam Leader, originally from [pick(70;"The United Americas", 20;"Sol", 10;"a colony on the frontier")].")) to_chat(M, SPAN_BOLD("You've served on The Station for [pick(50; "a Sol year, and a tour of duty", 40;"a couple months", 10;"six years, three tours")].")) to_chat(M, SPAN_BOLD("Living, training and working alongside Colonial Marshals at Anchorpoint Station has kept you well disciplined, and you've always felt proud to be the cavalry.")) - to_chat(M, SPAN_BOLD("During your time at Anchorpoint, you [pick(20; "had your life saved by a Colonial Marshal", 20;"quelled a corporate riot", 10; "defended the station against a UPP incursion", 10;"experienced a pathogenic outbreak", 10;"assisted the Colonial Marshals during an enacted martial law", 10;"were deployed to the USS Almayer, and understand its layout", 10;"assisted the Colonial Marshals with barricaded fugitive situation", 5;"helped the ICC take down a suspected smuggling ring", 5;"helped take down a human trafficking scheme alongside the Colonial Marshals" )].")) + to_chat(M, SPAN_BOLD("During your time at Anchorpoint, you [pick(20; "had your life saved by a Colonial Marshal", 20;"quelled a corporate riot", 10; "defended the station against a UPP incursion", 10;"experienced a pathogenic outbreak", 10;"assisted the Colonial Marshals during an enacted martial law", 10;"were deployed to the [MAIN_SHIP_NAME], and understand its layout", 10;"assisted the Colonial Marshals with barricaded fugitive situation", 5;"helped the ICC take down a suspected smuggling ring", 5;"helped take down a human trafficking scheme alongside the Colonial Marshals" )].")) to_chat(M, SPAN_BOLD("Working on conjunction with the Colonial Marshals on many incidents has created a comradery between your organizations. The Marshals handle investigations and policing, while you come in to get the job done during riots or incursions. Any job where heavy lifting was required, you were there.")) to_chat(M, SPAN_BOLD("You were activated as a part of a Quick Reaction Force to reinforce Colonial Marshals in distress.")) to_chat(M, SPAN_BOLD("You weren't sure if it was a false alarm or not. Turns out it isn't...")) @@ -163,7 +176,7 @@ to_chat(M, SPAN_BOLD("You are the Anchorpoint QRF Team Smartgunner, originally from [pick(70;"The United Americas", 20;"Sol", 10;"a colony on the frontier")].")) to_chat(M, SPAN_BOLD("You've served on The Station for [pick(45; "a Sol year, and a tour of duty", 20;"a couple months", 5;"six long years, three consecutive tours")].")) to_chat(M, SPAN_BOLD("Living, training and working alongside Colonial Marshals at Anchorpoint Station has kept you well disciplined, and you've always felt proud to be the cavalry.")) - to_chat(M, SPAN_BOLD("During your time at Anchorpoint, you [pick(20; "had your life saved by a Colonial Marshal", 20;"quelled a corporate riot", 10; "defended the station against a UPP incursion", 10;"experienced a pathogenic outbreak", 10;"assisted the Colonial Marshals during an enacted martial law", 10;"were deployed to the USS Almayer, and understand its layout", 10;"assisted the Colonial Marshals with barricaded fugitive situation", 5;"helped the ICC take down a suspected smuggling ring", 5;"helped take down a human trafficking scheme alongside the Colonial Marshals" )].")) + to_chat(M, SPAN_BOLD("During your time at Anchorpoint, you [pick(20; "had your life saved by a Colonial Marshal", 20;"quelled a corporate riot", 10; "defended the station against a UPP incursion", 10;"experienced a pathogenic outbreak", 10;"assisted the Colonial Marshals during an enacted martial law", 10;"were deployed to the [MAIN_SHIP_NAME], and understand its layout", 10;"assisted the Colonial Marshals with barricaded fugitive situation", 5;"helped the ICC take down a suspected smuggling ring", 5;"helped take down a human trafficking scheme alongside the Colonial Marshals" )].")) to_chat(M, SPAN_BOLD("Working on conjunction with the Colonial Marshals on many incidents has created a comradery between your organizations. The Marshals handle investigations and policing, while you come in to get the job done during riots or incursions. Any job where heavy lifting was required, you were there.")) to_chat(M, SPAN_BOLD("You were activated as a part of a Quick Reaction Force to reinforce Colonial Marshals in distress.")) to_chat(M, SPAN_BOLD("You weren't sure if it was a false alarm or not. Turns out it isn't... But you've been waiting for an excuse to let loose that M56.")) @@ -172,7 +185,7 @@ to_chat(M, SPAN_BOLD("You are the Anchorpoint QRF Team Corpsman, originally from [pick(70;"The United Americas", 20;"Sol", 10;"a colony on the frontier")].")) to_chat(M, SPAN_BOLD("You've served on The Station for [pick(45; "a Sol year, and a tour of duty", 20;"a couple months", 5;"six long years, three consecutive tours")].")) to_chat(M, SPAN_BOLD("Living, training and working alongside Colonial Marshals at Anchorpoint Station has kept you well disciplined, and you've always felt proud to be the cavalry.")) - to_chat(M, SPAN_BOLD("During your time at Anchorpoint, you [pick(20; "had your life saved by a Colonial Marshal", 20;"quelled a corporate riot", 10; "defended the station against a UPP incursion", 10;"experienced a pathogenic outbreak", 10;"assisted the Colonial Marshals during an enacted martial law", 10;"were deployed to the USS Almayer, and understand its layout", 10;"assisted the Colonial Marshals with barricaded fugitive situation", 5;"helped the ICC take down a suspected smuggling ring", 5;"helped take down a human trafficking scheme alongside the Colonial Marshals" )].")) + to_chat(M, SPAN_BOLD("During your time at Anchorpoint, you [pick(20; "had your life saved by a Colonial Marshal", 20;"quelled a corporate riot", 10; "defended the station against a UPP incursion", 10;"experienced a pathogenic outbreak", 10;"assisted the Colonial Marshals during an enacted martial law", 10;"were deployed to the [MAIN_SHIP_NAME], and understand its layout", 10;"assisted the Colonial Marshals with barricaded fugitive situation", 5;"helped the ICC take down a suspected smuggling ring", 5;"helped take down a human trafficking scheme alongside the Colonial Marshals" )].")) to_chat(M, SPAN_BOLD("Working on conjunction with the Colonial Marshals on many incidents has created a comradery between your organizations. The Marshals handle investigations and policing, while you come in to get the job done during riots or incursions. Any job where heavy lifting was required, you were there.")) to_chat(M, SPAN_BOLD("You were activated as a part of a Quick Reaction Force to reinforce Colonial Marshals in distress.")) to_chat(M, SPAN_BOLD("You weren't sure if it was a false alarm or not. Turns out it isn't...")) @@ -181,7 +194,7 @@ to_chat(M, SPAN_BOLD("You are the Anchorpoint QRF Team Technical Specialist, originally from [pick(70;"The United Americas", 20;"Sol", 10;"a colony on the frontier")].")) to_chat(M, SPAN_BOLD("You've served on The Station for [pick(45; "a Sol year, and a tour of duty", 20;"a couple months", 5;"six long years, three consecutive tours")].")) to_chat(M, SPAN_BOLD("Living, training and working alongside Colonial Marshals at Anchorpoint Station has kept you well disciplined, and you've always felt proud to be the cavalry.")) - to_chat(M, SPAN_BOLD("During your time at Anchorpoint, you [pick(20; "had your life saved by a Colonial Marshal", 20;"quelled a corporate riot", 10; "defended the station against a UPP incursion", 10;"experienced a pathogenic outbreak", 10;"assisted the Colonial Marshals during an enacted martial law", 10;"were deployed to the USS Almayer, and understand its layout", 10;"assisted the Colonial Marshals with barricaded fugitive situation", 5;"helped the ICC take down a suspected smuggling ring", 5;"helped take down a human trafficking scheme alongside the Colonial Marshals" )].")) + to_chat(M, SPAN_BOLD("During your time at Anchorpoint, you [pick(20; "had your life saved by a Colonial Marshal", 20;"quelled a corporate riot", 10; "defended the station against a UPP incursion", 10;"experienced a pathogenic outbreak", 10;"assisted the Colonial Marshals during an enacted martial law", 10;"were deployed to the [MAIN_SHIP_NAME], and understand its layout", 10;"assisted the Colonial Marshals with barricaded fugitive situation", 5;"helped the ICC take down a suspected smuggling ring", 5;"helped take down a human trafficking scheme alongside the Colonial Marshals" )].")) to_chat(M, SPAN_BOLD("Working on conjunction with the Colonial Marshals on many incidents has created a comradery between your organizations. The Marshals handle investigations and policing, while you come in to get the job done during riots or incursions. Any job where heavy lifting was required, you were there.")) to_chat(M, SPAN_BOLD("You were activated as a part of a Quick Reaction Force to reinforce Colonial Marshals in distress.")) to_chat(M, SPAN_BOLD("You weren't sure if it was a false alarm or not. Turns out it isn't...")) @@ -190,7 +203,7 @@ to_chat(M, SPAN_BOLD("You are a Rifleman of the Anchorpoint Team QRF, originally from [pick(70;"The United Americas", 20;"Sol", 10;"a colony on the frontier")].")) to_chat(M, SPAN_BOLD("You've served on The Station for [pick(45; "a Sol year, and a tour of duty", 20;"a couple months", 5;"six long years, three consecutive tours")].")) to_chat(M, SPAN_BOLD("Living, training and working alongside Colonial Marshals at Anchorpoint Station has kept you well disciplined, and you've always felt proud to be the cavalry.")) - to_chat(M, SPAN_BOLD("During your time at Anchorpoint, you [pick(20; "had your life saved by a Colonial Marshal", 20;"quelled a corporate riot", 10; "defended the station against a UPP incursion", 10;"experienced a pathogenic outbreak", 10;"assisted the Colonial Marshals during an enacted martial law", 10;"were deployed to the USS Almayer, and understand its layout", 10;"assisted the Colonial Marshals with barricaded fugitive situation", 5;"helped the ICC take down a suspected smuggling ring", 5;"helped take down a human trafficking scheme alongside the Colonial Marshals" )].")) + to_chat(M, SPAN_BOLD("During your time at Anchorpoint, you [pick(20; "had your life saved by a Colonial Marshal", 20;"quelled a corporate riot", 10; "defended the station against a UPP incursion", 10;"experienced a pathogenic outbreak", 10;"assisted the Colonial Marshals during an enacted martial law", 10;"were deployed to the [MAIN_SHIP_NAME], and understand its layout", 10;"assisted the Colonial Marshals with barricaded fugitive situation", 5;"helped the ICC take down a suspected smuggling ring", 5;"helped take down a human trafficking scheme alongside the Colonial Marshals" )].")) to_chat(M, SPAN_BOLD("Working on conjunction with the Colonial Marshals on many incidents has created a comradery between your organizations. The Marshals handle investigations and policing, while you come in to get the job done during riots or incursions. Any job where heavy lifting was required, you were there.")) to_chat(M, SPAN_BOLD("You were activated as a part of a Quick Reaction Force to reinforce Colonial Marshals in distress.")) to_chat(M, SPAN_BOLD("You weren't sure if it was a false alarm or not. Turns out it isn't...")) diff --git a/code/datums/emergency_calls/contractor.dm b/code/datums/emergency_calls/contractor.dm index a5d6c2d7e80f..05d6ab7b4671 100644 --- a/code/datums/emergency_calls/contractor.dm +++ b/code/datums/emergency_calls/contractor.dm @@ -29,7 +29,7 @@ leader = mob to_chat(mob, SPAN_ROLE_HEADER("You are a Contractor Team Leader of Vanguard's Arrow Incorporated!")) arm_equipment(mob, /datum/equipment_preset/contractor/duty/leader, TRUE, TRUE) - else if(synths < max_synths && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_SYNTH) && RoleAuthority.roles_whitelist[mob.ckey] & WHITELIST_SYNTHETIC) + else if(synths < max_synths && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_SYNTH) && mob.client.check_whitelist_status(WHITELIST_SYNTHETIC)) synths++ to_chat(mob, SPAN_ROLE_HEADER("You are a Contractor Support Synthetic of Vanguard's Arrow Incorporated!")) arm_equipment(mob, /datum/equipment_preset/contractor/duty/synth, TRUE, TRUE) @@ -117,13 +117,13 @@ var/mob/living/carbon/human/H = new(spawn_loc) H.key = M.key if(H.client) - H.client.change_view(world_view_size) + H.client.change_view(GLOB.world_view_size) if(!leader && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(H.client, JOB_SQUAD_LEADER, time_required_for_job)) //First one spawned is always the leader. leader = H to_chat(H, SPAN_ROLE_HEADER("You are a Covert Contractor Team Leader of Vanguard's Arrow Incorporated!")) arm_equipment(H, /datum/equipment_preset/contractor/covert/leader, TRUE, TRUE) - else if(synths < max_synths && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SYNTH) && RoleAuthority.roles_whitelist[H.ckey] & WHITELIST_SYNTHETIC) + else if(synths < max_synths && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SYNTH) && H.client.check_whitelist_status(WHITELIST_SYNTHETIC)) synths++ to_chat(H, SPAN_ROLE_HEADER("You are a Contractor Support Synthetic of Vanguard's Arrow Incorporated!")) arm_equipment(H, /datum/equipment_preset/contractor/covert/synth, TRUE, TRUE) diff --git a/code/datums/emergency_calls/cryo_marines.dm b/code/datums/emergency_calls/cryo_marines.dm index e5992a62ecdd..fb8d4b8a5a69 100644 --- a/code/datums/emergency_calls/cryo_marines.dm +++ b/code/datums/emergency_calls/cryo_marines.dm @@ -1,24 +1,27 @@ -//whiskey outpost extra marines /datum/emergency_call/cryo_squad name = "Marine Cryo Reinforcements (Squad)" - mob_max = 15 + mob_max = 10 mob_min = 1 probability = 0 objectives = "Assist the USCM forces" - max_engineers = 4 + max_engineers = 2 max_medics = 2 name_of_spawn = /obj/effect/landmark/ert_spawns/distress_cryo shuttle_id = "" var/leaders = 0 + spawn_max_amount = TRUE -/datum/emergency_call/cryo_squad/spawn_candidates(announce, override_spawn_loc) - var/datum/squad/marine/cryo/cryo_squad = RoleAuthority.squads_by_type[/datum/squad/marine/cryo] +/datum/emergency_call/cryo_squad/spawn_candidates(quiet_launch, announce_incoming, override_spawn_loc) + var/datum/squad/marine/cryo/cryo_squad = GLOB.RoleAuthority.squads_by_type[/datum/squad/marine/cryo] leaders = cryo_squad.num_leaders - return ..() + . = ..() + shipwide_ai_announcement("Successfully deployed [mob_max] Foxtrot marines, of which [length(members)] are ready for duty.") + if(mob_max > length(members)) + announce_dchat("Some cryomarines were not taken, use the Join As Freed Mob verb to take one of them.") -/datum/emergency_call/cryo_squad/create_member(datum/mind/M, turf/override_spawn_loc) +/datum/emergency_call/cryo_squad/create_member(datum/mind/mind, turf/override_spawn_loc) set waitfor = 0 if(SSmapping.configs[GROUND_MAP].map_name == MAP_WHISKEY_OUTPOST) name_of_spawn = /obj/effect/landmark/ert_spawns/distress_wo @@ -26,44 +29,61 @@ if(!istype(spawn_loc)) return //Didn't find a useable spawn point. - var/mob/living/carbon/human/H = new(spawn_loc) - M.transfer_to(H, TRUE) + var/mob/living/carbon/human/human = new(spawn_loc) + + if(mind) + mind.transfer_to(human, TRUE) + else + human.create_hud() + + if(!mind) + for(var/obj/structure/machinery/cryopod/pod in view(7,human)) + if(pod && !pod.occupant) + pod.go_in_cryopod(human, silent = TRUE) + break sleep(5) - var/datum/squad/marine/cryo/cryo_squad = RoleAuthority.squads_by_type[/datum/squad/marine/cryo] - if(leaders < cryo_squad.max_leaders && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(H.client, JOB_SQUAD_LEADER, time_required_for_job)) - leader = H + var/datum/squad/marine/cryo/cryo_squad = GLOB.RoleAuthority.squads_by_type[/datum/squad/marine/cryo] + if(leaders < cryo_squad.max_leaders && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(human.client, JOB_SQUAD_LEADER, time_required_for_job)))) + leader = human leaders++ - arm_equipment(H, /datum/equipment_preset/uscm/leader/cryo, TRUE, TRUE) - to_chat(H, SPAN_ROLE_HEADER("You are a Squad Leader in the USCM")) - to_chat(H, SPAN_ROLE_BODY("You are here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) - to_chat(H, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) - else if (heavies < max_heavies && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_HEAVY) && check_timelock(H.client, JOB_SQUAD_SPECIALIST, time_required_for_job)) + human.client?.prefs.copy_all_to(human, JOB_SQUAD_LEADER, TRUE, TRUE) + arm_equipment(human, /datum/equipment_preset/uscm/leader/cryo, mind == null, TRUE) + to_chat(human, SPAN_ROLE_HEADER("You are a Squad Leader in the USCM")) + to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) + else if (heavies < max_heavies && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_HEAVY) && check_timelock(human.client, JOB_SQUAD_SPECIALIST, time_required_for_job)))) heavies++ - arm_equipment(H, /datum/equipment_preset/uscm/spec/cryo, TRUE, TRUE) - to_chat(H, SPAN_ROLE_HEADER("You are a Weapons Specialist in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) - to_chat(H, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) - else if (medics < max_medics && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(H.client, JOB_SQUAD_MEDIC, time_required_for_job)) + human.client?.prefs.copy_all_to(human, JOB_SQUAD_SPECIALIST, TRUE, TRUE) + arm_equipment(human, /datum/equipment_preset/uscm/spec/cryo, mind == null, TRUE) + to_chat(human, SPAN_ROLE_HEADER("You are a Weapons Specialist in the USCM")) + to_chat(human, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) + else if (medics < max_medics && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(human.client, JOB_SQUAD_MEDIC, time_required_for_job)))) medics++ - arm_equipment(H, /datum/equipment_preset/uscm/medic/cryo, TRUE, TRUE) - to_chat(H, SPAN_ROLE_HEADER("You are a Hospital Corpsman in the USCM")) - to_chat(H, SPAN_ROLE_BODY("You are here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) - to_chat(H, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) - else if (engineers < max_engineers && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_ENGINEER) && check_timelock(H.client, JOB_SQUAD_ENGI, time_required_for_job)) + human.client?.prefs.copy_all_to(human, JOB_SQUAD_MEDIC, TRUE, TRUE) + arm_equipment(human, /datum/equipment_preset/uscm/medic/cryo, mind == null, TRUE) + to_chat(human, SPAN_ROLE_HEADER("You are a Hospital Corpsman in the USCM")) + to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) + else if (engineers < max_engineers && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_ENGINEER) && check_timelock(human.client, JOB_SQUAD_ENGI, time_required_for_job)))) engineers++ - arm_equipment(H, /datum/equipment_preset/uscm/engineer/cryo, TRUE, TRUE) - to_chat(H, SPAN_ROLE_HEADER("You are an Engineer in the USCM")) - to_chat(H, SPAN_ROLE_BODY("You are here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) - to_chat(H, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) + human.client?.prefs.copy_all_to(human, JOB_SQUAD_ENGI, TRUE, TRUE) + arm_equipment(human, /datum/equipment_preset/uscm/engineer/cryo, mind == null, TRUE) + to_chat(human, SPAN_ROLE_HEADER("You are an Engineer in the USCM")) + to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) else - arm_equipment(H, /datum/equipment_preset/uscm/pfc/cryo, TRUE, TRUE) - to_chat(H, SPAN_ROLE_HEADER("You are a Rifleman in the USCM")) - to_chat(H, SPAN_ROLE_BODY("You are here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) - to_chat(H, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) + human.client?.prefs.copy_all_to(human, JOB_SQUAD_MARINE, TRUE, TRUE) + arm_equipment(human, /datum/equipment_preset/uscm/pfc/cryo, mind == null, TRUE) + to_chat(human, SPAN_ROLE_HEADER("You are a Rifleman in the USCM")) + to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) sleep(10) - to_chat(H, SPAN_BOLD("Objectives: [objectives]")) + if(!mind) + human.free_for_ghosts() + to_chat(human, SPAN_BOLD("Objectives: [objectives]")) /datum/emergency_call/cryo_squad/platoon name = "Marine Cryo Reinforcements (Platoon)" @@ -74,3 +94,10 @@ /obj/effect/landmark/ert_spawns/distress_cryo name = "Distress_Cryo" + +/datum/emergency_call/cryo_squad/tech + name = "Marine Cryo Reinforcements (Tech)" + mob_max = 5 + max_engineers = 1 + max_medics = 1 + max_heavies = 0 diff --git a/code/datums/emergency_calls/cryo_marines_heavy.dm b/code/datums/emergency_calls/cryo_marines_heavy.dm index 6a3636568856..42f25a461254 100644 --- a/code/datums/emergency_calls/cryo_marines_heavy.dm +++ b/code/datums/emergency_calls/cryo_marines_heavy.dm @@ -16,10 +16,12 @@ var/leaders = 0 -/datum/emergency_call/cryo_squad_equipped/spawn_candidates(announce, override_spawn_loc) - var/datum/squad/marine/cryo/cryo_squad = RoleAuthority.squads_by_type[/datum/squad/marine/cryo] +/datum/emergency_call/cryo_squad_equipped/spawn_candidates(quiet_launch, announce_incoming, override_spawn_loc) + var/datum/squad/marine/cryo/cryo_squad = GLOB.RoleAuthority.squads_by_type[/datum/squad/marine/cryo] leaders = cryo_squad.num_leaders - return ..() + . = ..() + if(length(members)) + shipwide_ai_announcement("Successfully deployed [length(members)] Foxtrot marines.") /datum/emergency_call/cryo_squad_equipped/create_member(datum/mind/M, turf/override_spawn_loc) set waitfor = 0 @@ -33,37 +35,37 @@ M.transfer_to(H, TRUE) sleep(5) - var/datum/squad/marine/cryo/cryo_squad = RoleAuthority.squads_by_type[/datum/squad/marine/cryo] + var/datum/squad/marine/cryo/cryo_squad = GLOB.RoleAuthority.squads_by_type[/datum/squad/marine/cryo] if(leaders < cryo_squad.max_leaders && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(H.client, JOB_SQUAD_LEADER, time_required_for_job)) leader = H leaders++ arm_equipment(H, /datum/equipment_preset/uscm/leader_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Squad Leader in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if (heavies < max_heavies && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_HEAVY) && check_timelock(H.client, JOB_SQUAD_SPECIALIST, time_required_for_job)) heavies++ arm_equipment(H, /datum/equipment_preset/uscm/specialist_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Weapons Specialist in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if(smartgunners < max_smartgunners && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(H.client, JOB_SQUAD_SMARTGUN, time_required_for_job)) smartgunners++ arm_equipment(H, /datum/equipment_preset/uscm/smartgunner_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Smartgunner in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if(engineers < max_engineers && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_ENGINEER) && check_timelock(H.client, JOB_SQUAD_ENGI, time_required_for_job)) engineers++ arm_equipment(H, /datum/equipment_preset/uscm/engineer_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are an Engineer in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if (medics < max_medics && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(H.client, JOB_SQUAD_MEDIC, time_required_for_job)) medics++ arm_equipment(H, /datum/equipment_preset/uscm/medic_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Hospital Corpsman in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else arm_equipment(H, /datum/equipment_preset/uscm/private_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Rifleman in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) sleep(10) to_chat(H, SPAN_BOLD("Objectives: [objectives]")) diff --git a/code/datums/emergency_calls/cryo_spec.dm b/code/datums/emergency_calls/cryo_spec.dm new file mode 100644 index 000000000000..8d563b0693f8 --- /dev/null +++ b/code/datums/emergency_calls/cryo_spec.dm @@ -0,0 +1,43 @@ +/datum/emergency_call/cryo_spec + name = "Marine Cryo Reinforcement (Spec)" + mob_max = 1 + mob_min = 1 + probability = 0 + objectives = "Assist the USCM forces" + name_of_spawn = /obj/effect/landmark/ert_spawns/distress_cryo + shuttle_id = "" + spawn_max_amount = TRUE + +/datum/emergency_call/cryo_spec/create_member(datum/mind/mind, turf/override_spawn_loc) + set waitfor = FALSE + if(SSmapping.configs[GROUND_MAP].map_name == MAP_WHISKEY_OUTPOST) + name_of_spawn = /obj/effect/landmark/ert_spawns/distress_wo + var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point() + + if(!istype(spawn_loc)) + return //Didn't find a useable spawn point. + + var/mob/living/carbon/human/human = new(spawn_loc) + + if(mind) + mind.transfer_to(human, TRUE) + else + human.create_hud() + + if(!mind) + for(var/obj/structure/machinery/cryopod/pod in view(7,human)) + if(pod && !pod.occupant) + pod.go_in_cryopod(human, silent = TRUE) + break + + sleep(5) + human.client?.prefs.copy_all_to(human, JOB_SQUAD_SPECIALIST, TRUE, TRUE) + arm_equipment(human, /datum/equipment_preset/uscm/spec/cryo, mind == null, TRUE) + to_chat(human, SPAN_ROLE_HEADER("You are a Weapons Specialist in the USCM")) + to_chat(human, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) + + sleep(10) + if(!mind) + human.free_for_ghosts() + to_chat(human, SPAN_BOLD("Objectives: [objectives]")) diff --git a/code/datums/emergency_calls/deathsquad.dm b/code/datums/emergency_calls/deathsquad.dm index 0bfab8fbf2b7..1cd5bdef6713 100644 --- a/code/datums/emergency_calls/deathsquad.dm +++ b/code/datums/emergency_calls/deathsquad.dm @@ -3,7 +3,7 @@ //Weyland-Yutani Deathsquad - W-Y Deathsquad. Event only /datum/emergency_call/death - name = "Weyland Whiteout Operators" + name = "Weyland Whiteout Operators (!DEATHSQUAD!)" mob_max = 8 mob_min = 5 arrival_message = "'!`2*%slau#*jer t*h$em a!l%. le&*ve n(o^ w&*nes%6es.*v$e %#d ou^'" @@ -18,41 +18,76 @@ // DEATH SQUAD-------------------------------------------------------------------------------- -/datum/emergency_call/death/create_member(datum/mind/M, turf/override_spawn_loc) +/datum/emergency_call/death/create_member(datum/mind/player, turf/override_spawn_loc) var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point() if(!istype(spawn_loc)) return //Didn't find a useable spawn point. - var/mob/living/carbon/human/H = new(spawn_loc) - M.transfer_to(H, TRUE) + var/mob/living/carbon/human/person = new(spawn_loc) + player.transfer_to(person, TRUE) - if(!leader && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(H.client, JOB_SQUAD_LEADER, time_required_for_job)) - leader = H - to_chat(H, SPAN_ROLE_HEADER("You are the Whiteout Team Leader!")) - to_chat(H, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) - arm_equipment(H, /datum/equipment_preset/pmc/w_y_whiteout/leader, TRUE, TRUE) - else if(medics < max_medics && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(H.client, JOB_SQUAD_MEDIC, time_required_for_job)) + if(!leader && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(person.client, JOB_SQUAD_LEADER, time_required_for_job)) + leader = person + to_chat(person, SPAN_ROLE_HEADER("You are the Whiteout Team Leader!")) + to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) + arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/leader, TRUE, TRUE) + else if(medics < max_medics && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(person.client, JOB_SQUAD_MEDIC, time_required_for_job)) medics++ - to_chat(H, SPAN_ROLE_HEADER("You are a Whiteout Team Medic!")) - to_chat(H, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) - arm_equipment(H, /datum/equipment_preset/pmc/w_y_whiteout/medic, TRUE, TRUE) - else if(heavies < max_heavies && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(H.client, list(JOB_SQUAD_SPECIALIST, JOB_SQUAD_SMARTGUN), time_required_for_job)) + to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Medic!")) + to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) + arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/medic, TRUE, TRUE) + else if(heavies < max_heavies && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(person.client, list(JOB_SQUAD_SPECIALIST, JOB_SQUAD_SMARTGUN), time_required_for_job)) heavies++ - to_chat(H, SPAN_ROLE_HEADER("You are a Whiteout Team Terminator!")) - to_chat(H, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) - arm_equipment(H, /datum/equipment_preset/pmc/w_y_whiteout/terminator, TRUE, TRUE) + to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Terminator!")) + to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) + arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/terminator, TRUE, TRUE) else - to_chat(H, SPAN_ROLE_HEADER("You are a Whiteout Team Operative!")) - to_chat(H, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) - arm_equipment(H, /datum/equipment_preset/pmc/w_y_whiteout, TRUE, TRUE) + to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Operative!")) + to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) + arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout, TRUE, TRUE) - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), H, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), person, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) + +/datum/emergency_call/death/low_threat + name = "Weyland Whiteout Operators" + +// DEATH SQUAD-------------------------------------------------------------------------------- +/datum/emergency_call/death/low_threat/create_member(datum/mind/player, turf/override_spawn_loc) + var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point() + + if(!istype(spawn_loc)) + return //Didn't find a useable spawn point. + + var/mob/living/carbon/human/person = new(spawn_loc) + player.transfer_to(person, TRUE) + + if(!leader && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(person.client, JOB_SQUAD_LEADER, time_required_for_job)) + leader = person + to_chat(person, SPAN_ROLE_HEADER("You are the Whiteout Team Leader!")) + to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) + arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/low_threat/leader, TRUE, TRUE) + else if(medics < max_medics && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(person.client, JOB_SQUAD_MEDIC, time_required_for_job)) + medics++ + to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Medic!")) + to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) + arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/low_threat/medic, TRUE, TRUE) + else if(heavies < max_heavies && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(person.client, list(JOB_SQUAD_SPECIALIST, JOB_SQUAD_SMARTGUN), time_required_for_job)) + heavies++ + to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Terminator!")) + to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) + arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/low_threat/terminator, TRUE, TRUE) + else + to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Operative!")) + to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) + arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/low_threat, TRUE, TRUE) + + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), person, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) //################################################################################################ // Marine commandos - USCM Deathsquad. Event only /datum/emergency_call/marsoc - name = "Marine Raider Strike Team" + name = "Marine Raider Strike Team (!DEATHSQUAD!)" mob_max = 8 mob_min = 5 probability = 0 @@ -81,7 +116,7 @@ return /datum/emergency_call/marsoc_covert - name = "Marine Raider Operatives (Covert)" + name = "Marine Raider Operatives (!DEATHSQUAD! Covert)" mob_max = 8 mob_min = 5 probability = 0 @@ -107,3 +142,27 @@ to_chat(H, SPAN_BOLDNOTICE("You are absolutely loyal to High Command and must follow their directives.")) to_chat(H, SPAN_BOLDNOTICE("Execute the mission assigned to you with extreme prejudice!")) return + + +/datum/emergency_call/marsoc/low_threat + name = "Marine Raider Operatives" + +/datum/emergency_call/marsoc/low_threat/create_member(datum/mind/MIND) + + var/turf/spawn_loc = get_spawn_point() + + if(!istype(spawn_loc)) + return //Didn't find a useable spawn point. + + var/mob/living/carbon/human/player = new(spawn_loc) + MIND.transfer_to(player, TRUE) + if(!leader && HAS_FLAG(player.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(player.client, JOB_SQUAD_LEADER, time_required_for_job)) //First one spawned is always the leader. + leader = player + to_chat(player, SPAN_WARNING(FONT_SIZE_BIG("You are a Marine Raider Team Leader, better than all the rest."))) + arm_equipment(player, /datum/equipment_preset/uscm/marsoc/low_threat/sl, TRUE, TRUE) + else + to_chat(player, SPAN_WARNING(FONT_SIZE_BIG("You are an elite Marine Raider, the best of the best."))) + arm_equipment(player, /datum/equipment_preset/uscm/marsoc/low_threat, TRUE, TRUE) + to_chat(player, SPAN_BOLDNOTICE("You are absolutely loyal to High Command and must follow their directives.")) + to_chat(player, SPAN_BOLDNOTICE("Execute the mission assigned to you with extreme prejudice!")) + return diff --git a/code/datums/emergency_calls/emergency_call.dm b/code/datums/emergency_calls/emergency_call.dm index 5b8ec289ded9..7884d93b18bc 100644 --- a/code/datums/emergency_calls/emergency_call.dm +++ b/code/datums/emergency_calls/emergency_call.dm @@ -8,6 +8,18 @@ /datum/game_mode var/list/datum/emergency_call/all_calls = list() //initialized at round start and stores the datums. var/datum/emergency_call/picked_calls[] = list() //Which distress calls are currently active + var/ert_dispatched = FALSE + +/datum/game_mode/proc/ares_online() + var/name = "ARES Online" + var/input = "ARES. Online. Good morning, marines." + shipwide_ai_announcement(input, name, 'sound/AI/ares_online.ogg') + +/datum/game_mode/proc/request_ert(user, ares = FALSE) + if(!user) + return FALSE + message_admins("[key_name(user)] has requested a Distress Beacon! [ares ? SPAN_ORANGE("(via ARES)") : ""] ([SSticker.mode.ert_dispatched ? SPAN_RED("A random ERT was dispatched previously.") : SPAN_GREEN("No previous random ERT dispatched.")]) [CC_MARK(user)] (SEND) (DENY) [ADMIN_JMP_USER(user)] [CC_REPLY(user)]") + return TRUE //The distress call parent. Cannot be called itself due to "name" being a filtered target. /datum/emergency_call @@ -18,7 +30,7 @@ var/arrival_message = "" //Msg to display about when the shuttle arrives var/objectives //Txt of objectives to display to joined. Todo: make this into objective notes var/objective_info //For additional info in the objectives txt - var/probability = 0 //Chance of it occurring. Total must equal 100% + var/probability = 0 var/hostility //For ERTs who are either hostile or friendly by random chance. var/list/datum/mind/members = list() //Currently-joined members. var/list/datum/mind/candidates = list() //Potential candidates for enlisting. @@ -79,12 +91,12 @@ else return chosen_call -/datum/game_mode/proc/get_specific_call(call_name, announce = TRUE, is_emergency = TRUE, info = "") +/datum/game_mode/proc/get_specific_call(call_name, quiet_launch = FALSE, announce_incoming = TRUE, info = "") for(var/datum/emergency_call/E in all_calls) //Loop through all potential candidates if(E.name == call_name) var/datum/emergency_call/em_call = new E.type() em_call.objective_info = info - em_call.activate(announce, is_emergency) + em_call.activate(quiet_launch, announce_incoming) return error("get_specific_call could not find emergency call '[call_name]'") return @@ -101,6 +113,7 @@ give_action(M, /datum/action/join_ert, src) /datum/game_mode/proc/activate_distress() + ert_dispatched = TRUE var/datum/emergency_call/random_call = get_random_call() if(!istype(random_call, /datum/emergency_call)) //Something went horribly wrong return @@ -142,7 +155,6 @@ var/choice = tgui_input_list(src, "Choose a distress beacon to join", "", beacons) if(!choice) - to_chat(src, "Something seems to have gone wrong!") return if(!beacons[choice] || !(beacons[choice] in SSticker.mode.picked_calls)) @@ -156,7 +168,7 @@ return var/deathtime = world.time - usr.timeofdeath - if(deathtime < 1 MINUTES) //Nice try, ghosting right after the announcement + if(deathtime < 30 SECONDS) //Nice try, ghosting right after the announcement if(SSmapping.configs[GROUND_MAP].map_name != MAP_WHISKEY_OUTPOST) // people ghost so often on whiskey outpost. to_chat(src, SPAN_WARNING("You ghosted too recently.")) return @@ -180,7 +192,7 @@ else to_chat(src, SPAN_WARNING("You did not get enlisted in the response team. Better luck next time!")) -/datum/emergency_call/proc/activate(announce = TRUE, turf/override_spawn_loc) +/datum/emergency_call/proc/activate(quiet_launch = FALSE, announce_incoming = TRUE, turf/override_spawn_loc) set waitfor = 0 if(!SSticker.mode) //Something horribly wrong with the gamemode ticker return @@ -188,14 +200,14 @@ SSticker.mode.picked_calls += src show_join_message() //Show our potential candidates the message to let them join. - message_admins("Distress beacon: '[name]' activated [src.hostility? "[SPAN_WARNING("(THEY ARE HOSTILE)")]":"(they are friendly)"]. Looking for candidates.") + message_admins("Distress beacon: '[name]' activated [hostility? "[SPAN_WARNING("(THEY ARE HOSTILE)")]":"(they are friendly)"]. Looking for candidates.") - if(announce) - marine_announcement("A distress beacon has been launched from the [MAIN_SHIP_NAME].", "Priority Alert", 'sound/AI/distressbeacon.ogg') + if(!quiet_launch) + marine_announcement("A distress beacon has been launched from the [MAIN_SHIP_NAME].", "Priority Alert", 'sound/AI/distressbeacon.ogg', logging = ARES_LOG_SECURITY) - addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/emergency_call, spawn_candidates), announce, override_spawn_loc), 30 SECONDS) + addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/emergency_call, spawn_candidates), quiet_launch, announce_incoming, override_spawn_loc), 30 SECONDS) -/datum/emergency_call/proc/spawn_candidates(announce = TRUE, override_spawn_loc) +/datum/emergency_call/proc/spawn_candidates(quiet_launch = FALSE, announce_incoming = TRUE, override_spawn_loc) if(SSticker.mode) SSticker.mode.picked_calls -= src @@ -206,8 +218,8 @@ members = list() //Empty the members list. candidates = list() - if(announce) - marine_announcement("The distress signal has not received a response, the launch tubes are now recalibrating.", "Distress Beacon") + if(!quiet_launch) + marine_announcement("The distress signal has not received a response, the launch tubes are now recalibrating.", "Distress Beacon", logging = ARES_LOG_SECURITY) return //We've got enough! @@ -236,8 +248,8 @@ if(I.current) to_chat(I.current, SPAN_WARNING("You didn't get selected to join the distress team. Better luck next time!")) - if(announce) - marine_announcement(dispatch_message, "Distress Beacon", 'sound/AI/distressreceived.ogg') //Announcement that the Distress Beacon has been answered, does not hint towards the chosen ERT + if(announce_incoming) + marine_announcement(dispatch_message, "Distress Beacon", 'sound/AI/distressreceived.ogg', logging = ARES_LOG_SECURITY) //Announcement that the Distress Beacon has been answered, does not hint towards the chosen ERT message_admins("Distress beacon: [src.name] finalized, setting up candidates.") @@ -292,8 +304,8 @@ create_member(null, override_spawn_loc) candidates = list() - if(arrival_message && announce) - marine_announcement(arrival_message, "Intercepted Tranmission:") + if(arrival_message && announce_incoming) + marine_announcement(arrival_message, "Intercepted Transmission:") /datum/emergency_call/proc/add_candidate(mob/M) if(!M.client || (M.mind && (M.mind in candidates)) || istype(M, /mob/living/carbon/xenomorph)) diff --git a/code/datums/emergency_calls/feral_xenos.dm b/code/datums/emergency_calls/feral_xenos.dm index 5d9f14a4680c..ad1935ccefb9 100644 --- a/code/datums/emergency_calls/feral_xenos.dm +++ b/code/datums/emergency_calls/feral_xenos.dm @@ -39,7 +39,7 @@ else if(medics < max_medics) medics++ - var/picked = pick(/mob/living/carbon/xenomorph/drone, /mob/living/carbon/xenomorph/hivelord, /mob/living/carbon/xenomorph/burrower) + var/picked = pick(/mob/living/carbon/xenomorph/drone, /mob/living/carbon/xenomorph/hivelord) new_xeno = new picked(spawn_loc) else if(engineers < max_engineers) diff --git a/code/datums/emergency_calls/goons.dm b/code/datums/emergency_calls/goons.dm index 8bb2ee515c69..8a0b00968807 100644 --- a/code/datums/emergency_calls/goons.dm +++ b/code/datums/emergency_calls/goons.dm @@ -47,12 +47,12 @@ /datum/emergency_call/goon/chem_retrieval/New() ..() dispatch_message = "[MAIN_SHIP_NAME], this is USCSS Royce. Our squad is boarding to retrieve all samples of a chemical recently scanned from your research department. You should already have received a significant sum of money for your department's discovery. In return we ask that you cooperate and provide everything related to the chemical to our retrieval team." - objectives = "Secure all documents, samples, and chemicals containing the property DNA_Disintegrating from [MAIN_SHIP_NAME] research department." + objectives = "Secure all documents, samples, and chemicals containing the property DNA_Disintegrating from [MAIN_SHIP_NAME] research department and return them to Response Team Station." /datum/emergency_call/goon/chem_retrieval/proc/check_objective_info() if(objective_info) - objectives = "Secure all documents, samples and chemicals related to [objective_info] from [MAIN_SHIP_NAME] research department." - objectives += "Assume at least 30 units are located within the department. If they can not make more that should be all. Cooperate with the onboard CL to ensure all who know the complete recipe are kept silenced with a contract of confidentiality. All humans who have ingested the chemical must be brought back dead or alive. Viral scan is required for any humans who is suspected of ingestion. The professor may call for PMC back up if things get out of hand." + objectives = "Secure all documents, samples and chemicals related to [objective_info] from [MAIN_SHIP_NAME] research department and return them to Response Team Station." + objectives += "Assume at least 30 units are located within the department. If they can not make more that should be all. Cooperate with the onboard CL to ensure all who know the complete recipe are kept silenced with a contract of confidentiality. All humans who have ingested the chemical must be brought back dead or alive. Viral scan is required for any humans who is suspected of ingestion. You must not deploy to the colony without explicit permission from PMC Dispatch. The professor may call for PMC back up if things get out of hand." checked_objective = TRUE /datum/emergency_call/goon/chem_retrieval/create_member(datum/mind/M, turf/override_spawn_loc) diff --git a/code/datums/emergency_calls/inspection.dm b/code/datums/emergency_calls/inspection.dm index 72926666ace5..f0400528ac31 100644 --- a/code/datums/emergency_calls/inspection.dm +++ b/code/datums/emergency_calls/inspection.dm @@ -183,7 +183,7 @@ /datum/emergency_call/inspection_cmb/New() ..() - arrival_message = "[MAIN_SHIP_NAME], This is Anchorpoint Station with the Colonial Marshal Bureau. Be advised, a CMB transport vessel is preparing to board you, submitting Federal docking clearances now. Standby." + arrival_message = "[MAIN_SHIP_NAME], this is Anchorpoint Station with the Colonial Marshal Bureau. Be advised, a CMB transport vessel is preparing to board you, submitting Federal docking clearances now. Standby." objectives = "Get your instructions from the CMB Office at Anchorpoint Station, and carry out your orders. Ensure that Colonial assets are safe and in your custody. Do not enforce or override Marine Law on a Marine Ship unless requested, as it's outside of your juristiction." will_spawn_icc_liaison = prob(90) @@ -202,7 +202,7 @@ leader = mob to_chat(mob, SPAN_ROLE_HEADER("You are the Colonial Marshal!")) arm_equipment(mob, /datum/equipment_preset/cmb/leader, TRUE, TRUE) - else if(synths < max_synths && HAS_FLAG(mob?.client.prefs.toggles_ert, PLAY_SYNTH) && RoleAuthority.roles_whitelist[mob.ckey] & WHITELIST_SYNTHETIC) + else if(synths < max_synths && HAS_FLAG(mob?.client.prefs.toggles_ert, PLAY_SYNTH) && mob.client.check_whitelist_status(WHITELIST_SYNTHETIC)) synths++ to_chat(mob, SPAN_ROLE_HEADER("You are a CMB Investigative Synthetic!")) arm_equipment(mob, /datum/equipment_preset/cmb/synth, TRUE, TRUE) @@ -263,3 +263,44 @@ to_chat(M, SPAN_BOLD("The laws of arth stretch beyond the Sol. Where others fall to corruption, you stay steadfast in your morals.")) to_chat(M, SPAN_BOLD("Corporate Officers chase after paychecks and promotions, but you are motivated to do your sworn duty and care for the population, no matter how far or isolated a colony may be.")) to_chat(M, SPAN_BOLD("Despite being stretched thin, the stalwart oath of the Marshals has continued to keep communities safe, with the CMB well respected by many. You are a representation of that oath, serve with distinction.")) + +/datum/emergency_call/inspection_cmb/black_market + name = "Inspection - Colonial Marshals Ledger Investigation Team" + mob_max = 3 //Marshal, Deputy, ICC CL + mob_min = 2 + shuttle_id = "Distress_PMC" + + max_synths = 0 + will_spawn_icc_liaison = TRUE + will_spawn_cmb_observer = FALSE + +/datum/emergency_call/inspection_cmb/black_market/New() + ..() + dispatch_message = "Third Fleet High Command to [MAIN_SHIP_NAME], we have received inconsistent supply manifests and irregularities on the ASRS system aboard your ship, and have requested a CMB Investigation Team to board and clear you of any wrongdoing." + arrival_message = "Incoming Transmission: [MAIN_SHIP_NAME], this is Anchorpoint Station with the Colonial Marshal Bureau. Be advised, we are dispatching a team of Marshals to board with you by request of GSO-91. Submitting authorized docking clearances, over." + objectives = "Investigate the inconsistencies aboard the [MAIN_SHIP_NAME]'s ASRS. In the case of illegal activity, collect evidence, and submit a report to the CMB Command at Anchorpoint Station. If required, the ICC Liaison's Tradeband is capable of fixing ASRS computers. Work with the [MAIN_SHIP_NAME]'s military police force." + +/datum/emergency_call/inspection_cmb/black_market/create_member(datum/mind/current_mind, turf/override_spawn_loc) + var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point() + + if(!istype(spawn_loc)) + return //Didn't find a useable spawn point. + + var/mob/living/carbon/human/mob = new(spawn_loc) + current_mind.transfer_to(mob, TRUE) + + if(!leader && HAS_FLAG(mob?.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(mob.client, JOB_SQUAD_LEADER, time_required_for_job)) + leader = mob + to_chat(mob, SPAN_ROLE_HEADER("You are the Colonial Marshal!")) + arm_equipment(mob, /datum/equipment_preset/cmb/leader, TRUE, TRUE) + else if(!icc_liaison && will_spawn_icc_liaison && check_timelock(mob.client, JOB_CORPORATE_LIAISON, time_required_for_job)) + icc_liaison = mob + to_chat(mob, SPAN_ROLE_HEADER("You are a CMB-attached Interstellar Commerce Commission Liaison!")) + arm_equipment(mob, /datum/equipment_preset/cmb/liaison/black_market, TRUE, TRUE) //ICC CL gets a custom item + else + to_chat(mob, SPAN_ROLE_HEADER("You are a CMB Deputy!")) + arm_equipment(mob, /datum/equipment_preset/cmb/standard, TRUE, TRUE) + + print_backstory(mob) + + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(to_chat), mob, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) diff --git a/code/datums/emergency_calls/mercs.dm b/code/datums/emergency_calls/mercs.dm index 40210c845c6f..33a261a1da5e 100644 --- a/code/datums/emergency_calls/mercs.dm +++ b/code/datums/emergency_calls/mercs.dm @@ -11,11 +11,11 @@ /datum/emergency_call/mercs/New() . = ..() hostility = pick(75;FALSE,25;TRUE) - arrival_message = "[MAIN_SHIP_NAME], this is Freelancer shuttle [pick(alphabet_lowercase)][pick(alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." + arrival_message = "[MAIN_SHIP_NAME], this is Freelancer shuttle [pick(GLOB.alphabet_lowercase)][pick(GLOB.alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." if(hostility) - objectives = "Ransack the [MAIN_SHIP_NAME] and kill anyone who gets in your way. Do what your Captain says. Ensure your survival at all costs." + objectives = "Ransack the [MAIN_SHIP_NAME] and kill anyone who gets in your way. Do what your Warlord says. Ensure your survival at all costs." else - objectives = "Help the crew of the [MAIN_SHIP_NAME] in exchange for payment, and choose your payment well. Do what your Captain says. Ensure your survival at all costs." + objectives = "Help the crew of the [MAIN_SHIP_NAME] in exchange for payment, and choose your payment well. Do what your Warlord says. Ensure your survival at all costs." /datum/emergency_call/mercs/friendly //if admins want to specifically call in friendly ones name = "Friendly Freelancers (Squad)" @@ -25,8 +25,8 @@ /datum/emergency_call/mercs/friendly/New() . = ..() hostility = FALSE - arrival_message = "[MAIN_SHIP_NAME], this is Freelancer shuttle [pick(alphabet_lowercase)][pick(alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." - objectives = "Help the crew of the [MAIN_SHIP_NAME] in exchange for payment, and choose your payment well. Do what your Captain says. Ensure your survival at all costs." + arrival_message = "[MAIN_SHIP_NAME], this is Freelancer shuttle [pick(GLOB.alphabet_lowercase)][pick(GLOB.alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." + objectives = "Help the crew of the [MAIN_SHIP_NAME] in exchange for payment, and choose your payment well. Do what your Warlord says. Ensure your survival at all costs." /datum/emergency_call/mercs/hostile //ditto name = "Hostile Freelancers (Squad)" @@ -36,8 +36,8 @@ /datum/emergency_call/mercs/hostile/New() . = ..() hostility = TRUE - arrival_message = "[MAIN_SHIP_NAME], this is Freelancer shuttle [pick(alphabet_lowercase)][pick(alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." - objectives = "Ransack the [MAIN_SHIP_NAME] and kill anyone who gets in your way. Do what your Captain says. Ensure your survival at all costs." + arrival_message = "[MAIN_SHIP_NAME], this is Freelancer shuttle [pick(GLOB.alphabet_lowercase)][pick(GLOB.alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." + objectives = "Ransack the [MAIN_SHIP_NAME] and kill anyone who gets in your way. Do what your Warlord says. Ensure your survival at all costs." /datum/emergency_call/mercs/print_backstory(mob/living/carbon/human/H) to_chat(H, SPAN_BOLD("You started off in the Neroid Sector as a colonist seeking work at one of the established colonies.")) @@ -96,7 +96,7 @@ /datum/emergency_call/heavy_mercs/New() . = ..() hostility = pick(75;FALSE,25;TRUE) - arrival_message = "[MAIN_SHIP_NAME], this is Elite Freelancer shuttle [pick(alphabet_lowercase)][pick(alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." + arrival_message = "[MAIN_SHIP_NAME], this is Elite Freelancer shuttle [pick(GLOB.alphabet_lowercase)][pick(GLOB.alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." if(hostility) objectives = "Ransack the [MAIN_SHIP_NAME] and kill anyone who gets in your way. Do what your Captain says. Ensure your survival at all costs." else @@ -108,7 +108,7 @@ /datum/emergency_call/heavy_mercs/hostile/New() . = ..() hostility = TRUE - arrival_message = "[MAIN_SHIP_NAME], this is Elite Freelancer shuttle [pick(alphabet_lowercase)][pick(alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." + arrival_message = "[MAIN_SHIP_NAME], this is Elite Freelancer shuttle [pick(GLOB.alphabet_lowercase)][pick(GLOB.alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." objectives = "Ransack the [MAIN_SHIP_NAME] and kill anyone who gets in your way. Do what your Captain says. Ensure your survival at all costs." /datum/emergency_call/heavy_mercs/friendly @@ -117,7 +117,7 @@ /datum/emergency_call/heavy_mercs/friendly/New() . = ..() hostility = FALSE - arrival_message = "[MAIN_SHIP_NAME], this is Elite Freelancer shuttle [pick(alphabet_lowercase)][pick(alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." + arrival_message = "[MAIN_SHIP_NAME], this is Elite Freelancer shuttle [pick(GLOB.alphabet_lowercase)][pick(GLOB.alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." objectives = "Help the crew of the [MAIN_SHIP_NAME] in exchange for payment, and choose your payment well. Do what your Captain says. Ensure your survival at all costs." /datum/emergency_call/heavy_mercs/print_backstory(mob/living/carbon/human/H) diff --git a/code/datums/emergency_calls/pizza.dm b/code/datums/emergency_calls/pizza.dm index a35ce584c68d..d80ea7e21139 100644 --- a/code/datums/emergency_calls/pizza.dm +++ b/code/datums/emergency_calls/pizza.dm @@ -8,7 +8,7 @@ objectives = "Make sure you get a tip!" shuttle_id = "Distress_Small" name_of_spawn = /obj/effect/landmark/ert_spawns/distress_pizza - probability = 0 + probability = 1 /datum/emergency_call/pizza/create_member(datum/mind/M, turf/override_spawn_loc) var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point() diff --git a/code/datums/emergency_calls/pmc.dm b/code/datums/emergency_calls/pmc.dm index a06b0cc0c02e..2f43e94828d6 100644 --- a/code/datums/emergency_calls/pmc.dm +++ b/code/datums/emergency_calls/pmc.dm @@ -34,7 +34,7 @@ leader = mob to_chat(mob, SPAN_ROLE_HEADER("You are a Weyland-Yutani PMC Squad Leader!")) arm_equipment(mob, /datum/equipment_preset/pmc/pmc_leader, TRUE, TRUE) - else if(synths < max_synths && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_SYNTH) && RoleAuthority.roles_whitelist[mob.ckey] & WHITELIST_SYNTHETIC) + else if(synths < max_synths && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_SYNTH) && mob.client.check_whitelist_status(WHITELIST_SYNTHETIC)) synths++ to_chat(mob, SPAN_ROLE_HEADER("You are a Weyland-Yutani PMC Support Synthetic!")) arm_equipment(mob, /datum/equipment_preset/pmc/synth, TRUE, TRUE) @@ -120,7 +120,7 @@ var/mob/living/carbon/human/H = new(spawn_loc) H.key = M.key if(H.client) - H.client.change_view(world_view_size) + H.client.change_view(GLOB.world_view_size) if(!leader && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(H.client, JOB_SQUAD_LEADER, time_required_for_job)) //First one spawned is always the leader. leader = H diff --git a/code/datums/emergency_calls/provost.dm b/code/datums/emergency_calls/provost.dm index 65bbb9753da7..92c33706c178 100644 --- a/code/datums/emergency_calls/provost.dm +++ b/code/datums/emergency_calls/provost.dm @@ -4,9 +4,11 @@ name = "USCM Provost Enforcers" mob_max = 5 mob_min = 5 - objectives = "Deploy to the USS Almayer and enforce Marine Law." probability = 0 +/datum/emergency_call/provost_enforcer/New() + objectives = "Deploy to the [MAIN_SHIP_NAME] and enforce Marine Law." + return ..() /datum/emergency_call/provost_enforcer/create_member(datum/mind/M, turf/override_spawn_loc) var/turf/T = override_spawn_loc ? override_spawn_loc : get_spawn_point() diff --git a/code/datums/emergency_calls/royal_marines.dm b/code/datums/emergency_calls/royal_marines.dm new file mode 100644 index 000000000000..21f79e7c3026 --- /dev/null +++ b/code/datums/emergency_calls/royal_marines.dm @@ -0,0 +1,75 @@ +/datum/emergency_call/royal_marines + name = "Royal Marines Commando (Squad) (Friendly)" + mob_max = 7 + probability = 15 + name_of_spawn = /obj/effect/landmark/ert_spawns/distress_twe + item_spawn = /obj/effect/landmark/ert_spawns/distress_twe/item + max_engineers = 0 + max_medics = 0 + max_heavies = 3 + +/datum/emergency_call/royal_marines/New() + ..() + arrival_message = "[MAIN_SHIP_NAME], this is [pick_weight(list("HMS Patna"= 50, "HMS Thunderchild" = 50))]; we are responding to your distress call and boarding in accordance with the Military Aid Act of 2177, Authentication code Lima-18153. " + objectives = "Ensure the survival of the [MAIN_SHIP_NAME], eliminate any hostiles, and assist the crew in any way possible." + + +/datum/emergency_call/royal_marines/create_member(datum/mind/spawning_mind, turf/override_spawn_loc) + var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point() + + if(!istype(spawn_loc)) + return //Didn't find a useable spawn point. + + var/mob/living/carbon/human/mob = new(spawn_loc) + spawning_mind.transfer_to(mob, TRUE) + + if(!leader && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(mob.client, JOB_SQUAD_LEADER, time_required_for_job)) + leader = mob + to_chat(mob, SPAN_ROLE_HEADER("You are an Officer in the Royal Marines Commando. Born in the Three World Empire.")) + arm_equipment(mob, /datum/equipment_preset/twe/royal_marine/team_leader, TRUE, TRUE) + else if(heavies < max_heavies && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_HEAVY) && check_timelock(mob.client, JOB_SQUAD_SPECIALIST)) + var/specialist_kit = pick("Sniper", "Smartgun", "Breach") + switch(specialist_kit) + if("Sniper") + to_chat(mob, SPAN_ROLE_HEADER("You are a skilled marksman in the Royal Marines Commando. Born in the Three World Empire.")) + arm_equipment(mob, /datum/equipment_preset/twe/royal_marine/spec/marksman, TRUE, TRUE) + if("Smartgun") + to_chat(mob, SPAN_ROLE_HEADER("You are a Smartgunner in the Royal Marines Commando. Born in the Three World Empire.")) + arm_equipment(mob, /datum/equipment_preset/twe/royal_marine/spec/machinegun, TRUE, TRUE) + if("Breach") + to_chat(mob, SPAN_ROLE_HEADER("You are a CQB Specialist in the Royal Marines Commando. Born in the Three World Empire.")) + arm_equipment(mob, /datum/equipment_preset/twe/royal_marine/spec/breacher, TRUE, TRUE) + heavies++ + else + to_chat(mob, SPAN_ROLE_HEADER("You are a member of the Royal Marines Commando. Born in the three world empire.")) + arm_equipment(mob, /datum/equipment_preset/twe/royal_marine/standard, TRUE, TRUE) + + print_backstory(mob) + + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), mob, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) + + +/datum/emergency_call/royal_marines/print_backstory(mob/living/carbon/human/spawning_mob) + to_chat(spawning_mob, SPAN_BOLD("You were born in the Three World Empire to a [pick_weight(list("average" = 75, "poor" = 15, "well-established" = 10))] family.")) + to_chat(spawning_mob, SPAN_BOLD("Joining the Royal Marines gave you a lot of combat experience and useful skills.")) + to_chat(spawning_mob, SPAN_BOLD("You are [pick_weight(list("unaware" = 75, "faintly aware" = 15, "knoledgeable" = 10))] of the xenomorph threat.")) + to_chat(spawning_mob, SPAN_BOLD("You are a citizen of the three world empire and joined the Royal Marines Commando")) + to_chat(spawning_mob, SPAN_BOLD("You are apart of a jointed UA/TWE taskforce onboard the HMS Patna and Thunderchild.")) + to_chat(spawning_mob, SPAN_BOLD("Under the directive of the RMC high command, you have been assisting USCM forces with maintaining peace in the area.")) + to_chat(spawning_mob, SPAN_BOLD("Assist the USCMC Force of the [MAIN_SHIP_NAME] however you can.")) + +/datum/emergency_call/royal_marines/platoon + name = "Royal Marines Commando (Platoon) (Friendly)" + mob_min = 7 + mob_max = 28 + probability = 0 + max_medics = 0 + max_heavies = 6 + max_engineers = 0 + +/obj/effect/landmark/ert_spawns/distress_twe + name = "Distress_TWE" + +/obj/effect/landmark/ert_spawns/distress_twe/item + name = "Distress_TWEItem" + diff --git a/code/datums/emergency_calls/souto.dm b/code/datums/emergency_calls/souto.dm index 4ff4b03076fc..44aa5284b862 100644 --- a/code/datums/emergency_calls/souto.dm +++ b/code/datums/emergency_calls/souto.dm @@ -4,10 +4,13 @@ name = "Souto Man" mob_max = 1 mob_min = 1 - arrival_message = "Give a round of applause for the marine who sent in ten-thousand Souto tabs to get me here! USS Almayer, Souto Man's here to party with YOU!" objectives = "Party like it's 1999!" probability = 0 +/datum/emergency_call/souto/New() + arrival_message = "Give a round of applause for the marine who sent in ten-thousand Souto tabs to get me here! [MAIN_SHIP_NAME], Souto Man's here to party with YOU!" + return ..() + /datum/emergency_call/souto/create_member(datum/mind/M, turf/override_spawn_loc) var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point() diff --git a/code/datums/emergency_calls/tank_crew.dm b/code/datums/emergency_calls/tank_crew.dm index fb437c179e48..f8d20051c244 100644 --- a/code/datums/emergency_calls/tank_crew.dm +++ b/code/datums/emergency_calls/tank_crew.dm @@ -24,11 +24,10 @@ sleep(5) arm_equipment(H, /datum/equipment_preset/uscm/tank/full, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Vehicle Crewman in the USCM")) - to_chat(H, SPAN_ROLE_BODY("You are here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(H, SPAN_ROLE_BODY("You are here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) to_chat(H, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) sleep(10) to_chat(H, SPAN_BOLD("Objectives: [objectives]")) GLOB.data_core.manifest_inject(H) //Put people in crew manifest - diff --git a/code/datums/emergency_calls/upp.dm b/code/datums/emergency_calls/upp.dm index 94d4bf2a0ab6..036e6f9e8b77 100644 --- a/code/datums/emergency_calls/upp.dm +++ b/code/datums/emergency_calls/upp.dm @@ -4,7 +4,7 @@ /datum/emergency_call/upp name = "UPP Naval Infantry (Squad)" mob_max = 9 - probability = 10 + probability = 20 shuttle_id = "Distress_UPP" name_of_spawn = /obj/effect/landmark/ert_spawns/distress_upp item_spawn = /obj/effect/landmark/ert_spawns/distress_upp/item @@ -14,15 +14,17 @@ max_heavies = 1 max_smartgunners = 0 var/heavy_pick = TRUE // whether heavy should count as either a minigunner or shotgunner - hostility = TRUE var/max_synths = 1 var/synths = 0 /datum/emergency_call/upp/New() - ..() - arrival_message = "T*is i* UP* d^sp^*ch`. STr*&e teaM, #*u are cLe*% for a*pr*%^h. Pr*mE a*l wE*p^ns )0r c|*$e @u*r*r$ c0m&*t." - objectives = "Eliminate the UA Forces to ensure the UPP prescence in this sector is continued. Listen to your superior officers and take over the [MAIN_SHIP_NAME] at all costs." - + . = ..() + hostility = pick(50;FALSE,50;TRUE) + arrival_message = "[MAIN_SHIP_NAME] t*is i* UP* d^sp^*ch`. STr*&e teaM, #*u are cLe*% for a*pr*%^h. Pr*mE a*l wE*p^ns and pR*epr# t% r@nd$r a(tD." + if(hostility) + objectives = "Eliminate the UA Forces to ensure the UPP prescence in this sector is continued. Listen to your superior officers and take over the [MAIN_SHIP_NAME] at all costs." + else + objectives = "Render assistance towards the UA Forces, do not engage UA forces. Listen to your superior officers." /datum/emergency_call/upp/print_backstory(mob/living/carbon/human/M) if(ishuman_strict(M)) @@ -33,13 +35,16 @@ else to_chat(M, SPAN_BOLD("You were brought online in a UPP engineering facility, knowing only your engineers for the first few weeks for your pseudo-life.")) to_chat(M, SPAN_BOLD("You were programmed with all of the medical and combat experience a military fighting force support asset required.")) - to_chat(M, SPAN_BOLD("Throughout your career, your engineers, and later, your UPP compatriots, treated you like a tool, and only that.")) + to_chat(M, SPAN_BOLD("Throughout your career, your engineers, and later, your UPP compatriots, treated you like [pick(75;"a tool, and only that.", 25;"a person, despite your purpose.")]")) to_chat(M, SPAN_BOLD("Some weeks after your unit integration, you were assigned to the 17th 'Smoldering Sons' battalion (six hundred strong) under the command of Colonel Ganbaatar.")) to_chat(M, SPAN_BOLD("You were shipped off with the battalion to one of the UPP's most remote territories, a gas giant designated MV-35 in the Anglo-Japanese Arm, in the Neroid Sector.")) to_chat(M, SPAN_BOLD("For the past 14 months, you and the rest of the Smoldering Sons have been stationed at MV-35's only facility, the helium refinery, Altai Station.")) to_chat(M, SPAN_BOLD("As MV-35 and Altai Station are the only UPP-held zones in the Neroid Sector for many lightyears, you have spent most of your military career holed up in crammed quarters in near darkness, waiting for supply shipments and transport escort deployments.")) - to_chat(M, SPAN_BOLD("With the recent arrival of the enemy USCM battalion the 'Falling Falcons' and their flagship, the [MAIN_SHIP_NAME], the UPP has felt threatened in the sector.")) - to_chat(M, SPAN_BOLD("In an effort to protect the vulnerable MV-35 from the encroaching UA/USCM imperialists, the leadership of your battalion has opted this to be the best opportunity to strike at the Falling Falcons to catch them off guard.")) + to_chat(M, SPAN_BOLD("With the recent arrival of the USCM battalion the 'Falling Falcons' and their flagship, the [MAIN_SHIP_NAME], the UPP has felt threatened in the sector.")) + if(hostility) + to_chat(M, SPAN_BOLD("In an effort to protect the vulnerable MV-35 from the encroaching UA/USCM imperialists, the leadership of your battalion has opted this to be the best opportunity to strike at the Falling Falcons to catch them off guard.")) + else + to_chat(M, SPAN_BOLD("Despite this, the leadership of your battalion questions what may have prompted the distress signal from their rivals. Your squad is to find out why and to render aid to the beleaguered UA forces.")) to_chat(M, SPAN_WARNING(FONT_SIZE_BIG("Glory to Colonel Ganbaatar."))) to_chat(M, SPAN_WARNING(FONT_SIZE_BIG("Glory to the Smoldering Sons."))) to_chat(M, SPAN_WARNING(FONT_SIZE_BIG("Glory to the UPP."))) @@ -59,7 +64,7 @@ leader = H arm_equipment(H, /datum/equipment_preset/upp/leader, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are an Officer of the Union of Progressive People, a powerful socialist state that rivals the United Americas!")) - else if(synths < max_synths && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SYNTH) && RoleAuthority.roles_whitelist[H.ckey] & WHITELIST_SYNTHETIC) + else if(synths < max_synths && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SYNTH) && H.client.check_whitelist_status(WHITELIST_SYNTHETIC)) synths++ to_chat(H, SPAN_ROLE_HEADER("You are a Combat Synthetic of the Union of Progressive People, a powerful socialist state that rivals the United Americas!")) arm_equipment(H, /datum/equipment_preset/upp/synth, TRUE, TRUE) @@ -77,14 +82,14 @@ var/equipment_path = /datum/equipment_preset/upp/specialist if(heavy_pick) if(HAS_FLAG(H.client.prefs.toggles_ert, PLAY_HEAVY) && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SMARTGUNNER)) - equipment_path = pick(/datum/equipment_preset/upp/specialist, /datum/equipment_preset/upp/minigunner) + equipment_path = pick(/datum/equipment_preset/upp/specialist, /datum/equipment_preset/upp/machinegunner) else if(HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && !HAS_FLAG(H.client.prefs.toggles_ert, PLAY_HEAVY)) - equipment_path = /datum/equipment_preset/upp/minigunner + equipment_path = /datum/equipment_preset/upp/machinegunner arm_equipment(H, equipment_path, TRUE, TRUE) else if(smartgunners < max_smartgunners && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(H.client, JOB_SQUAD_SMARTGUN, time_required_for_job)) smartgunners++ to_chat(H, SPAN_ROLE_HEADER("You are a sergeant of the Union of Progressive People, a powerful socialist state that rivals the United Americas!")) - arm_equipment(H, /datum/equipment_preset/upp/minigunner, TRUE, TRUE) + arm_equipment(H, /datum/equipment_preset/upp/machinegunner, TRUE, TRUE) else to_chat(H, SPAN_ROLE_HEADER("You are a soldier of the Union of Progressive People, a powerful socialist state that rivals the United Americas!")) arm_equipment(H, /datum/equipment_preset/upp/soldier, TRUE, TRUE) @@ -94,10 +99,28 @@ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), H, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) +/datum/emergency_call/upp/hostile //if admins want to specifically call in friendly ones + name = "UPP Naval Infantry (Squad) (Hostile)" + hostility = TRUE + probability = 0 + +/datum/emergency_call/upp/hostile/New() + ..() + arrival_message = "[MAIN_SHIP_NAME] t*is i* UP* d^sp^*ch`. STr*&e teaM, #*u are cLe*% for a*pr*%^h. Pr*mE a*l wE*p^ns and pR*epr# t% r@nd$r a(tD." + objectives = "Eliminate the UA Forces to ensure the UPP presence in this sector is continued. Listen to your superior officers and take over the [MAIN_SHIP_NAME] at all costs." + +/datum/emergency_call/upp/friendly //ditto + name = "UPP Naval Infantry (Squad) (Friendly)" + hostility = FALSE + probability = 0 + +/datum/emergency_call/upp/friendly/New() + ..() + arrival_message = "This is UPP dispatch. USS Almayer, We are responding to your distress call, we will render aid as able, do not fire." + objectives = "Render assistance towards the UA Forces, Listen to your superior officers." /datum/emergency_call/upp/platoon - name = "UPP Naval Infantry (Platoon)" - mob_min = 4 + name = "UPP Naval Infantry (Platoon) (Hostile)" mob_max = 30 probability = 0 max_medics = 3 @@ -106,6 +129,21 @@ max_engineers = 2 max_synths = 1 heavy_pick = FALSE + hostility = TRUE + +/datum/emergency_call/upp/platoon/New() + ..() + arrival_message = "[MAIN_SHIP_NAME] t*is i* UP* d^sp^*ch`. STr*&e teaM, #*u are cLe*% for a*pr*%^h. Pr*mE a*l wE*p^ns and pR*epr# t% r@nd$r a(tD." + objectives = "Eliminate the UA Forces to ensure the UPP presence in this sector is continued. Listen to your superior officers and take over the [MAIN_SHIP_NAME] at all costs." + +/datum/emergency_call/upp/platoon/friendly + name = "UPP Naval Infantry (Platoon) (Friendly)" + hostility = FALSE + +/datum/emergency_call/upp/platoon/friendly/New() + ..() + arrival_message = "This is UPP dispatch. USS Almayer, We are responding to your distress call, we will render aid as able, do not fire." + objectives = "Render assistance towards the UA Forces, Listen to your superior officers." /obj/effect/landmark/ert_spawns/distress_upp name = "Distress_UPP" diff --git a/code/datums/emergency_calls/upp_commando.dm b/code/datums/emergency_calls/upp_commando.dm index 14c4af46c27b..1bc2b59ba08c 100644 --- a/code/datums/emergency_calls/upp_commando.dm +++ b/code/datums/emergency_calls/upp_commando.dm @@ -1,7 +1,7 @@ //UPP COMMANDOS /datum/emergency_call/upp_commando - name = "UPP Commandos" + name = "UPP Commandos (!DEATHSQUAD!)" mob_max = 6 probability = 0 objectives = "Stealthily assault the ship. Use your silenced weapons, tranquilizers, and night vision to get the advantage on the enemy. Take out the power systems, comms and engine. Stick together and keep a low profile." @@ -51,3 +51,29 @@ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), H, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) +/datum/emergency_call/upp_commando/low_threat + name = "UPP Commandos" + +/datum/emergency_call/upp_commando/create_member(datum/mind/mind, turf/override_spawn_loc) + var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point() + + if(!istype(spawn_loc)) + return //Didn't find a useable spawn point. + + var/mob/living/carbon/human/person = new(spawn_loc) + mind.transfer_to(person, TRUE) + + if(!leader && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(person.client, JOB_SQUAD_LEADER, time_required_for_job)) //First one spawned is always the leader. + leader = person + arm_equipment(person, /datum/equipment_preset/upp/commando/leader/low_threat, TRUE, TRUE) + to_chat(person, SPAN_ROLE_HEADER("You are a Commando Team Leader of the Union of Progressive People, a powerful socialist state that rivals the United Americas!")) + else if(medics < max_medics && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(person.client, JOB_SQUAD_MEDIC, time_required_for_job)) + medics++ + to_chat(person, SPAN_ROLE_HEADER("You are a Commando Medic of the Union of Progressive People, a powerful socialist state that rivals the United Americas!")) + arm_equipment(person, /datum/equipment_preset/upp/commando/medic/low_threat, TRUE, TRUE) + else + to_chat(person, SPAN_ROLE_HEADER("You are a Commando of the Union of Progressive People, a powerful socialist state that rivals the United Americas!")) + arm_equipment(person, /datum/equipment_preset/upp/commando/low_threat, TRUE, TRUE) + print_backstory(person) + + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), person, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) diff --git a/code/datums/emergency_calls/whiskey_outpost.dm b/code/datums/emergency_calls/whiskey_outpost.dm index 8a20043da558..c6a7e4947756 100644 --- a/code/datums/emergency_calls/whiskey_outpost.dm +++ b/code/datums/emergency_calls/whiskey_outpost.dm @@ -28,30 +28,30 @@ if(!leader && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(mob.client, JOB_SQUAD_LEADER, time_required_for_job)) leader = mob arm_equipment(mob, /datum/equipment_preset/dust_raider/leader, TRUE, TRUE) - to_chat(mob, SPAN_BOLDNOTICE("You are a Squad Leader in the USCM, your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(mob, SPAN_BOLDNOTICE("You are a Squad Leader in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if (heavies < max_heavies && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_HEAVY) && check_timelock(mob.client, JOB_SQUAD_SPECIALIST, time_required_for_job)) heavies++ arm_equipment(mob, /datum/equipment_preset/dust_raider/specialist, TRUE, TRUE) - to_chat(mob, SPAN_BOLDNOTICE("You are a Specialist in the USCM, your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(mob, SPAN_BOLDNOTICE("You are a Specialist in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if(smartgunners < max_smartgunners && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(mob.client, JOB_SQUAD_SMARTGUN, time_required_for_job)) smartgunners++ arm_equipment(mob, /datum/equipment_preset/dust_raider/smartgunner, TRUE, TRUE) - to_chat(mob, SPAN_BOLDNOTICE("You are a Smartgunner in the USCM, your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(mob, SPAN_BOLDNOTICE("You are a Smartgunner in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if(engineers < max_engineers && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_ENGINEER) && check_timelock(mob.client, JOB_SQUAD_ENGI, time_required_for_job)) engineers++ arm_equipment(mob, /datum/equipment_preset/dust_raider/engineer, TRUE, TRUE) - to_chat(mob, SPAN_BOLDNOTICE("You are an Engineer in the USCM, your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(mob, SPAN_BOLDNOTICE("You are an Engineer in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if (medics < max_medics && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(mob.client, JOB_SQUAD_MEDIC, time_required_for_job)) medics++ arm_equipment(mob, /datum/equipment_preset/dust_raider/medic, TRUE, TRUE) - to_chat(mob, SPAN_BOLDNOTICE("You are a Hospital Corpsman in the USCM, your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(mob, SPAN_BOLDNOTICE("You are a Hospital Corpsman in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else arm_equipment(mob, /datum/equipment_preset/dust_raider/private, TRUE, TRUE) to_chat(mob, SPAN_BOLDNOTICE("You are a Rifleman in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) sleep(10) to_chat(mob, "Objectives: [objectives]") - RoleAuthority.randomize_squad(mob) + GLOB.RoleAuthority.randomize_squad(mob) mob.sec_hud_set_ID() mob.hud_set_squad() @@ -60,7 +60,7 @@ /datum/game_mode/whiskey_outpost/activate_distress() var/datum/emergency_call/em_call = /datum/emergency_call/wo - em_call.activate(FALSE) + em_call.activate(TRUE, FALSE) return /datum/emergency_call/wo/platoon diff --git a/code/datums/emergency_calls/xeno_cultists.dm b/code/datums/emergency_calls/xeno_cultists.dm index e5ebf089a9c2..f112511b5e22 100644 --- a/code/datums/emergency_calls/xeno_cultists.dm +++ b/code/datums/emergency_calls/xeno_cultists.dm @@ -25,7 +25,7 @@ leader = H to_chat(H, SPAN_ROLE_HEADER("You are the leader of this xeno cult! Bring glory to Queen Mother!")) arm_equipment(H, /datum/equipment_preset/other/xeno_cultist/leader, TRUE, TRUE) - else if(synths < max_synths && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SYNTH) && RoleAuthority.roles_whitelist[H.ckey] & WHITELIST_SYNTHETIC) + else if(synths < max_synths && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SYNTH) && H.client.check_whitelist_status(WHITELIST_SYNTHETIC)) synths++ to_chat(H, SPAN_ROLE_HEADER("You are the xeno cult's synthetic! Tend to the Hive and the captured hosts, make sure the Hive grows!")) arm_equipment(H, /datum/equipment_preset/synth/survivor/cultist_synth, TRUE, TRUE) diff --git a/code/datums/entities/clans.dm b/code/datums/entities/clans.dm index 8caa538e0e31..916afd18c178 100644 --- a/code/datums/entities/clans.dm +++ b/code/datums/entities/clans.dm @@ -45,8 +45,8 @@ BSQL_PROTECT_DATUM(/datum/entity/clan) /datum/entity_meta/clan_player/on_insert(datum/entity/clan_player/player) player.honor = 0 - player.clan_rank = clan_ranks_ordered[CLAN_RANK_UNBLOODED] - player.permissions = clan_ranks[CLAN_RANK_UNBLOODED].permissions + player.clan_rank = GLOB.clan_ranks_ordered[CLAN_RANK_UNBLOODED] + player.permissions = GLOB.clan_ranks[CLAN_RANK_UNBLOODED].permissions player.save() diff --git a/code/datums/entities/player.dm b/code/datums/entities/player.dm index 9b8f95938de6..2973a174858f 100644 --- a/code/datums/entities/player.dm +++ b/code/datums/entities/player.dm @@ -5,6 +5,9 @@ var/last_known_ip var/last_known_cid + var/whitelist_status + var/whitelist_flags + var/discord_link_id var/last_login @@ -63,6 +66,7 @@ BSQL_PROTECT_DATUM(/datum/entity/player) "is_permabanned" = DB_FIELDTYPE_INT, "permaban_reason" = DB_FIELDTYPE_STRING_MAX, "permaban_date" = DB_FIELDTYPE_STRING_LARGE, + "whitelist_status" = DB_FIELDTYPE_STRING_MAX, "discord_link_id" = DB_FIELDTYPE_BIGINT, "permaban_admin_id" = DB_FIELDTYPE_BIGINT, "is_time_banned" = DB_FIELDTYPE_INT, @@ -93,11 +97,11 @@ BSQL_PROTECT_DATUM(/datum/entity/player) notes_add(ckey, note_text, admin.mob) else // notes_add already sends a message - message_admins("[key_name_admin(admin.mob)] has edited [ckey]'s [note_categories[note_category]] notes: [sanitize(note_text)]") + message_admins("[key_name_admin(admin.mob)] has edited [ckey]'s [GLOB.note_categories[note_category]] notes: [sanitize(note_text)]") if(!is_confidential && note_category == NOTE_ADMIN && owning_client) to_chat_immediate(owning_client, SPAN_WARNING(FONT_SIZE_LARGE("You have been noted by [key_name_admin(admin.mob, FALSE)]."))) to_chat_immediate(owning_client, SPAN_WARNING(FONT_SIZE_BIG("The note is : [sanitize(note_text)]"))) - to_chat_immediate(owning_client, SPAN_WARNING(FONT_SIZE_BIG("If you believe this was filed in error or misplaced, make a staff report at The CM Forums"))) + to_chat_immediate(owning_client, SPAN_WARNING(FONT_SIZE_BIG("If you believe this was filed in error or misplaced, make a staff report at The CM Forums"))) to_chat_immediate(owning_client, SPAN_WARNING(FONT_SIZE_BIG("You can also click the name of the staff member noting you to PM them."))) // create new instance of player_note entity var/datum/entity/player_note/note = DB_ENTITY(/datum/entity/player_note) @@ -105,6 +109,7 @@ BSQL_PROTECT_DATUM(/datum/entity/player) note.player_id = id note.text = note_text note.date = "[time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")]" + note.round_id = GLOB.round_id note.is_confidential = is_confidential note.note_category = note_category note.is_ban = is_ban @@ -234,7 +239,7 @@ BSQL_PROTECT_DATUM(/datum/entity/player) if(job_bans[safe_rank]) continue var/old_rank = check_jobban_path(safe_rank) - jobban_keylist[old_rank][ckey] = ban_text + GLOB.jobban_keylist[old_rank][ckey] = ban_text jobban_savebanfile() add_note("Banned from [total_rank] - [ban_text]", FALSE, NOTE_ADMIN, TRUE, duration) // it is ban related note @@ -320,20 +325,6 @@ BSQL_PROTECT_DATUM(/datum/entity/player) value.delete() job_bans -= value -/datum/entity/player/proc/load_refs() - if(refs_loaded) - return - while(!notes_loaded || !jobbans_loaded) - stoplag() - for(var/key in job_bans) - var/datum/entity/player_job_ban/value = job_bans[key] - if(istype(value)) - value.load_refs() - for(var/datum/entity/player_note/note in notes) - if(istype(note)) - note.load_refs() - refs_loaded = TRUE - /datum/entity_meta/player/on_read(datum/entity/player/player) player.job_bans = list() player.notes = list() @@ -390,7 +381,12 @@ BSQL_PROTECT_DATUM(/datum/entity/player) if(discord_link_id) discord_link = DB_ENTITY(/datum/entity/discord_link, discord_link_id) + if(whitelist_status) + var/list/whitelists = splittext(whitelist_status, "|") + for(var/whitelist in whitelists) + if(whitelist in GLOB.bitfields["whitelist_status"]) + whitelist_flags |= GLOB.bitfields["whitelist_status"]["[whitelist]"] /datum/entity/player/proc/on_read_notes(list/datum/entity/player_note/_notes) notes_loaded = TRUE @@ -569,33 +565,33 @@ BSQL_PROTECT_DATUM(/datum/entity/player) save() /datum/entity/player/proc/migrate_bans() - if(!Banlist) // if Banlist cannot be located for some reason + if(!GLOB.Banlist) // if GLOB.Banlist cannot be located for some reason LoadBans() // try to load the bans - if(!Banlist) // uh oh, can't find bans! + if(!GLOB.Banlist) // uh oh, can't find bans! return var/reason var/expiration var/banned_by - Banlist.cd = "/base" + GLOB.Banlist.cd = "/base" - for (var/A in Banlist.dir) - Banlist.cd = "/base/[A]" + for (var/A in GLOB.Banlist.dir) + GLOB.Banlist.cd = "/base/[A]" - if(ckey != Banlist["key"]) + if(ckey != GLOB.Banlist["key"]) continue - if(Banlist["temp"]) - if (!GetExp(Banlist["minutes"])) + if(GLOB.Banlist["temp"]) + if (!GetExp(GLOB.Banlist["minutes"])) return - if(expiration > Banlist["minutes"]) + if(expiration > GLOB.Banlist["minutes"]) return // found longer ban - reason = Banlist["reason"] - banned_by = Banlist["bannedby"] - expiration = Banlist["minutes"] + reason = GLOB.Banlist["reason"] + banned_by = GLOB.Banlist["bannedby"] + expiration = GLOB.Banlist["minutes"] migrated_bans = TRUE save() @@ -618,13 +614,13 @@ BSQL_PROTECT_DATUM(/datum/entity/player) /datum/entity/player/proc/migrate_jobbans() if(!job_bans) job_bans = list() - for(var/name in RoleAuthority.roles_for_mode) + for(var/name in GLOB.RoleAuthority.roles_for_mode) var/safe_job_name = ckey(name) - if(!jobban_keylist[safe_job_name]) + if(!GLOB.jobban_keylist[safe_job_name]) continue if(!safe_job_name) continue - var/reason = jobban_keylist[safe_job_name][ckey] + var/reason = GLOB.jobban_keylist[safe_job_name][ckey] if(!reason) continue @@ -656,6 +652,23 @@ BSQL_PROTECT_DATUM(/datum/entity/player) stat.stat_number += num stat.save() +/datum/entity/player/proc/check_whitelist_status(flag_to_check) + if(whitelist_flags & flag_to_check) + return TRUE + + return FALSE + +/datum/entity/player/proc/set_whitelist_status(field_to_set) + whitelist_flags = field_to_set + + var/list/output = list() + for(var/bitfield in GLOB.bitfields["whitelist_status"]) + if(field_to_set & GLOB.bitfields["whitelist_status"]["[bitfield]"]) + output += bitfield + whitelist_status = output.Join("|") + + save() + /datum/entity_link/player_to_banning_admin parent_entity = /datum/entity/player child_entity = /datum/entity/player @@ -684,6 +697,7 @@ BSQL_PROTECT_DATUM(/datum/entity/player) var/last_known_cid var/last_known_ip var/discord_link_id + var/whitelist_status /datum/entity_view_meta/players root_record_type = /datum/entity/player @@ -701,4 +715,5 @@ BSQL_PROTECT_DATUM(/datum/entity/player) "last_known_ip", "last_known_cid", "discord_link_id", + "whitelist_status" ) diff --git a/code/datums/entities/player_note.dm b/code/datums/entities/player_note.dm index f6662a153113..216e20b40701 100644 --- a/code/datums/entities/player_note.dm +++ b/code/datums/entities/player_note.dm @@ -1,8 +1,11 @@ +#define NOTE_ROUND_ID(note_entity) note_entity.round_id ? "(ID: [note_entity.round_id])" : "" + /datum/entity/player_note var/player_id var/admin_id var/text var/date + var/round_id var/is_ban = FALSE var/ban_time var/is_confidential = FALSE @@ -19,15 +22,16 @@ BSQL_PROTECT_DATUM(/datum/entity/player_note) entity_type = /datum/entity/player_note table_name = "player_notes" field_types = list( - "player_id"=DB_FIELDTYPE_BIGINT, - "admin_id"=DB_FIELDTYPE_BIGINT, - "text"=DB_FIELDTYPE_STRING_MAX, - "date"=DB_FIELDTYPE_STRING_LARGE, - "is_ban"=DB_FIELDTYPE_INT, - "ban_time"=DB_FIELDTYPE_BIGINT, - "is_confidential"=DB_FIELDTYPE_INT, - "admin_rank"=DB_FIELDTYPE_STRING_MEDIUM, - "note_category" =DB_FIELDTYPE_INT, + "player_id" = DB_FIELDTYPE_BIGINT, + "admin_id" = DB_FIELDTYPE_BIGINT, + "text" = DB_FIELDTYPE_STRING_MAX, + "date" = DB_FIELDTYPE_STRING_LARGE, + "round_id" = DB_FIELDTYPE_BIGINT, + "is_ban" = DB_FIELDTYPE_INT, + "ban_time" = DB_FIELDTYPE_BIGINT, + "is_confidential" = DB_FIELDTYPE_INT, + "admin_rank" = DB_FIELDTYPE_STRING_MEDIUM, + "note_category" = DB_FIELDTYPE_INT, ) /datum/entity_meta/player_note/on_read(datum/entity/player_note/note) @@ -64,6 +68,7 @@ BSQL_PROTECT_DATUM(/datum/entity/player_note) var/is_ban var/admin_ckey var/date + var/round_id var/ban_time var/is_confidential var/admin_rank @@ -79,6 +84,7 @@ BSQL_PROTECT_DATUM(/datum/entity/player_note) "is_ban", "admin_ckey" = "admin.ckey", "date", + "round_id", "ban_time", "is_confidential", "admin_rank", @@ -88,4 +94,4 @@ BSQL_PROTECT_DATUM(/datum/entity/player_note) /// Returns all notes associated with a CKEY, structured as a list of strings. /proc/get_all_notes(player_ckey) for(var/datum/view_record/note_view/note in DB_VIEW(/datum/view_record/note_view, DB_COMP("player_ckey", DB_EQUALS, player_ckey))) - LAZYADDASSOC(., "[note.note_category]", "\"[note.text]\", by [note.admin_ckey] ([note.admin_rank]) on [note.date]") + LAZYADDASSOCLIST(., "[note.note_category]", "\"[note.text]\", by [note.admin_ckey] ([note.admin_rank]) on [note.date] ([note.round_id])") diff --git a/code/datums/entities/player_times.dm b/code/datums/entities/player_times.dm index a6304bd5d874..2bbd4a3bc39e 100644 --- a/code/datums/entities/player_times.dm +++ b/code/datums/entities/player_times.dm @@ -84,7 +84,7 @@ BSQL_PROTECT_DATUM(/datum/entity/player_time) return GLOB.always_state /datum/entity/player/proc/load_timestat_data() - if(!playtime_loaded || !RoleAuthority || LAZYACCESS(playtime_data, "loading")) // Need roleauthority to be up to see which job is xeno-related + if(!playtime_loaded || !GLOB.RoleAuthority || LAZYACCESS(playtime_data, "loading")) // Need roleauthority to be up to see which job is xeno-related return LAZYSET(playtime_data, "loading", TRUE) @@ -118,13 +118,13 @@ BSQL_PROTECT_DATUM(/datum/entity/player_time) LAZYADD(marine_playtimes, list(marine_playtime)) for(var/datum/view_record/playtime/PT in PTs) - var/isxeno = (PT.role_id in RoleAuthority.castes_by_name) + var/isxeno = (PT.role_id in GLOB.RoleAuthority.castes_by_name) var/isOther = (PT.role_id == JOB_OBSERVER) // more maybe eventually if(PT.role_id == JOB_XENOMORPH) continue // Snowflake check, will need to be removed in the future - if(!(PT.role_id in RoleAuthority.roles_by_name) && !isxeno && !isOther) + if(!(PT.role_id in GLOB.RoleAuthority.roles_by_name) && !isxeno && !isOther) continue if(isxeno) diff --git a/code/datums/factions/clf.dm b/code/datums/factions/clf.dm index 38e0d576f805..ce53b505b352 100644 --- a/code/datums/factions/clf.dm +++ b/code/datums/factions/clf.dm @@ -31,12 +31,12 @@ list("PRIMARY FIREARMS", 0, null, null, null), list("ABR-40 Hunting Rifle", 30, /obj/item/weapon/gun/rifle/l42a/abr40, null, VENDOR_ITEM_REGULAR), list("Basira-Armstrong Bolt-Action", 15, /obj/item/weapon/gun/boltaction, null, VENDOR_ITEM_REGULAR), - list("CZ-81 Machine Pistol", 20, /obj/item/ammo_magazine/pistol/skorpion, null, VENDOR_ITEM_REGULAR), list("Double Barrel Shotgun", 30, /obj/item/weapon/gun/shotgun/double, null, VENDOR_ITEM_REGULAR), list("HG 37-12 Pump Shotgun", 30, /obj/item/weapon/gun/shotgun/double/sawn, null, VENDOR_ITEM_REGULAR), list("M16 Rifle", 30, /obj/item/weapon/gun/rifle/m16, null, VENDOR_ITEM_REGULAR), list("MAR-30 Battle Carbine", 30, /obj/item/weapon/gun/rifle/mar40/carbine, null, VENDOR_ITEM_REGULAR), list("MAR-40 Battle Rifle", 30, /obj/item/weapon/gun/rifle/mar40, null, VENDOR_ITEM_REGULAR), + list("Type-64 Submachinegun", 20, /obj/item/weapon/gun/smg/bizon, null, VENDOR_ITEM_REGULAR), list("MAC-15 Submachinegun", 20, /obj/item/weapon/gun/smg/mac15, null, VENDOR_ITEM_REGULAR), list("MP27 Submachinegun", 20, /obj/item/weapon/gun/smg/mp27, null, VENDOR_ITEM_REGULAR), list("MP5 Submachinegun", 20, /obj/item/weapon/gun/smg/mp5, null, VENDOR_ITEM_REGULAR), @@ -48,12 +48,12 @@ list("Box Of Buckshot Shells", 10, /obj/item/ammo_magazine/shotgun/buckshot, null, VENDOR_ITEM_REGULAR), list("Box Of Flechette Shells", 10, /obj/item/ammo_magazine/shotgun/flechette, null, VENDOR_ITEM_REGULAR), list("Box Of Shotgun Slugs", 10, /obj/item/ammo_magazine/shotgun, null, VENDOR_ITEM_REGULAR), - list("CZ-81 Magazine (.32ACP)", 5, /obj/item/ammo_magazine/pistol/skorpion, null, VENDOR_ITEM_REGULAR), list("M16 AP Magazine (5.56x45mm)", 15, /obj/item/ammo_magazine/rifle/m16/ap, null, VENDOR_ITEM_REGULAR), list("M16 Magazine (5.56x45mm)", 5, /obj/item/ammo_magazine/rifle/m16, null, VENDOR_ITEM_REGULAR), list("MAC-15 Magazine (9mm)", 5, /obj/item/ammo_magazine/smg/mac15, null, VENDOR_ITEM_REGULAR), list("MAR Magazine (7.62x39mm)", 5, /obj/item/ammo_magazine/rifle/mar40, null, VENDOR_ITEM_REGULAR), list("MAR Extended Magazine (7.62x39mm)", 15, /obj/item/ammo_magazine/rifle/mar40/extended, null, VENDOR_ITEM_REGULAR), + list("Type-64 Helical Magazine (.7.62x19mm)", 5, /obj/item/ammo_magazine/smg/bizon, null, VENDOR_ITEM_REGULAR), list("MP27 Magazine (4.6x30mm)", 5, /obj/item/ammo_magazine/smg/mp27, null, VENDOR_ITEM_REGULAR), list("MP5 Magazine (9mm)", 5, /obj/item/ammo_magazine/smg/mp5, null, VENDOR_ITEM_REGULAR), @@ -99,13 +99,13 @@ list("PRIMARY FIREARMS", -1, null, null), list("ABR-40 Hunting Rifle", 30, /obj/item/weapon/gun/rifle/l42a/abr40, null, VENDOR_ITEM_REGULAR), list("Basira-Armstrong Bolt-Action", 15, /obj/item/weapon/gun/boltaction, null, VENDOR_ITEM_REGULAR), - list("CZ-81 Machine Pistol", 20, /obj/item/ammo_magazine/pistol/skorpion, VENDOR_ITEM_REGULAR), list("Double Barrel Shotgun", 20, /obj/item/weapon/gun/shotgun/double, VENDOR_ITEM_REGULAR), list("HG 37-12 Pump Shotgun", 20, /obj/item/weapon/gun/shotgun/double/sawn, VENDOR_ITEM_REGULAR), list("M16 Rifle", 20, /obj/item/weapon/gun/rifle/m16, VENDOR_ITEM_REGULAR), list("MAC-15 Submachinegun", 20, /obj/item/weapon/gun/smg/mac15, VENDOR_ITEM_REGULAR), list("MAR-30 Battle Carbine", 20, /obj/item/weapon/gun/rifle/mar40/carbine, VENDOR_ITEM_REGULAR), list("MAR-40 Battle Rifle", 20, /obj/item/weapon/gun/rifle/mar40, VENDOR_ITEM_REGULAR), + list("Type 64 Submachinegun", 20, /obj/item/weapon/gun/smg/bizon, VENDOR_ITEM_REGULAR), list("MP27 Submachinegun", 20, /obj/item/weapon/gun/smg/mp27, VENDOR_ITEM_REGULAR), list("MP5 Submachinegun", 20, /obj/item/weapon/gun/smg/mp5, VENDOR_ITEM_REGULAR), list("Sawn-Off Shotgun", 20, /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, VENDOR_ITEM_REGULAR), @@ -116,12 +116,12 @@ list("Box Of Buckshot Shells", 15, /obj/item/ammo_magazine/shotgun/buckshot, VENDOR_ITEM_REGULAR), list("Box Of Flechette Shells", 15, /obj/item/ammo_magazine/shotgun/flechette, VENDOR_ITEM_REGULAR), list("Box Of Shotgun Slugs", 15, /obj/item/ammo_magazine/shotgun, VENDOR_ITEM_REGULAR), - list("CZ-81 Magazine (.32ACP)", 60, /obj/item/ammo_magazine/pistol/skorpion, VENDOR_ITEM_REGULAR), list("M16 AP Magazine (5.56x45mm)", 10, /obj/item/ammo_magazine/rifle/m16/ap, VENDOR_ITEM_REGULAR), list("M16 Magazine (5.56x45mm)", 60, /obj/item/ammo_magazine/rifle/m16, VENDOR_ITEM_REGULAR), list("MAC-15 Magazine (9mm)", 60, /obj/item/ammo_magazine/smg/mac15, VENDOR_ITEM_REGULAR), list("MAR Magazine (7.62x39mm)", 60, /obj/item/ammo_magazine/rifle/mar40, VENDOR_ITEM_REGULAR), list("MAR Extended Magazine (7.62x39mm)", 10, /obj/item/ammo_magazine/rifle/mar40/extended, VENDOR_ITEM_REGULAR), + list("Type 64 Helical Magazine (7.62x19mm)", 60, /obj/item/ammo_magazine/smg/bizon, VENDOR_ITEM_REGULAR), list("MP27 Magazine (4.6x30mm)", 60, /obj/item/ammo_magazine/smg/mp27, VENDOR_ITEM_REGULAR), list("MP5 Magazine (9mm)", 60, /obj/item/ammo_magazine/smg/mp5, VENDOR_ITEM_REGULAR), diff --git a/code/datums/factions/royalmarinescommando.dm b/code/datums/factions/royalmarinescommando.dm new file mode 100644 index 000000000000..2fab0348bcfa --- /dev/null +++ b/code/datums/factions/royalmarinescommando.dm @@ -0,0 +1,94 @@ +/datum/faction/royal_marines_commando + name = "Royal Marines Commando" + faction_tag = FACTION_TWE + +/datum/faction/royal_marines_commando/modify_hud_holder(image/holder, mob/living/carbon/human/H) + var/hud_icon_state + var/obj/item/card/id/dogtag/ID = H.get_idcard() + var/_role + if(H.mind) + _role = H.job + else if(ID) + _role = ID.rank + switch(_role) + if(JOB_TWE_RMC_LIEUTENANT) + hud_icon_state = "lieutenant" + if(JOB_TWE_RMC_TEAMLEADER) + hud_icon_state = "teamleader" + if(JOB_TWE_RMC_MARKSMAN) + hud_icon_state = "marksman" + if(JOB_TWE_RMC_RIFLEMAN) + hud_icon_state = "rifleman" + if(JOB_TWE_RMC_SMARTGUNNER) + hud_icon_state = "smartgunner" + if(JOB_TWE_RMC_BREACHER) + hud_icon_state = "breacher" + if(hud_icon_state) + holder.overlays += image('icons/mob/hud/marine_hud.dmi', H, "rmc_[hud_icon_state]") + +/datum/faction/royal_marines_commando/get_antag_guns_snowflake_equipment() + return list( + list("PRIMARY FIREARMS", 0, null, null, null), + list("F903A1 Rifle", 20, /obj/item/weapon/gun/rifle/rmc_f90, null, VENDOR_ITEM_REGULAR), + list("F903A2 Rifle", 30, /obj/item/weapon/gun/rifle/rmc_f90/a_grip, null, VENDOR_ITEM_REGULAR), + list("F903A1 Marksman Rifle", 30, /obj/item/weapon/gun/rifle/rmc_f90/scope, null, VENDOR_ITEM_REGULAR), + list("F903A1/B 'Breacher' Rifle", 30, /obj/item/weapon/gun/rifle/rmc_f90/shotgun, null, VENDOR_ITEM_REGULAR), + + list("PRIMARY AMMUNITION", 0, null, null, null), + list("F903 Magazine (10x24mm)", 5, /obj/item/ammo_magazine/rifle/rmc_f90, null, VENDOR_ITEM_REGULAR), + list("F903A1 Marksman Magazine (10x24mm)", 15, /obj/item/ammo_magazine/rifle/rmc_f90/marksman, null, VENDOR_ITEM_REGULAR), + + list("SIDEARMS", 0, null, null, null), + list("VP78 Pistol", 20, /obj/item/weapon/gun/pistol/vp78, null, VENDOR_ITEM_REGULAR), + list("88 Mod 4 Combat Pistol", 15, /obj/item/weapon/gun/pistol/mod88, null, VENDOR_ITEM_REGULAR), + + list("SIDEARM AMMUNITION", 0, null, null, null), + list("VP78 magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR), + list("88M4 AP Magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/mod88, null, VENDOR_ITEM_REGULAR), + + list("ATTACHMENTS", 0, null, null, null), + list("Angled Grip", 15, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Burst Fire Assembly", 15, /obj/item/attachable/burstfire_assembly, null, VENDOR_ITEM_REGULAR), + list("Extended Barrel", 15, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 15, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), + list("Rail Flashlight", 5, /obj/item/attachable/flashlight, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 15, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 15, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Suppressor", 15, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 15, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("M94 Marking Flare Pack", 3, /obj/item/storage/box/m94, null, VENDOR_ITEM_RECOMMENDED), + list("Smoke Grenade", 7, /obj/item/explosive/grenade/smokebomb, null, VENDOR_ITEM_REGULAR), + list("R2175/B HIDP grenade packet", 7, /obj/item/storage/box/packet/rmc/incin, null, VENDOR_ITEM_REGULAR), + list("R2175/A HEDP grenade packet", 7, /obj/item/storage/box/packet/rmc/he, null, VENDOR_ITEM_REGULAR), + list("L5 bayonet", 3, /obj/item/attachable/bayonet/rmc, null, VENDOR_ITEM_REGULAR), + ) + +/datum/faction/royal_marines_commando/get_antag_guns_sorted_equipment() + return list( + list("PRIMARY FIREARMS", -1, null, null), + list("F903A1 Rifle", 20, /obj/item/weapon/gun/rifle/rmc_f90, null, VENDOR_ITEM_REGULAR), + list("F903A2 Rifle", 30, /obj/item/weapon/gun/rifle/rmc_f90/a_grip, null, VENDOR_ITEM_REGULAR), + list("F903A1 Marksman Rifle", 30, /obj/item/weapon/gun/rifle/rmc_f90/scope, null, VENDOR_ITEM_REGULAR), + list("F903A1/B 'Breacher' Rifle", 30, /obj/item/weapon/gun/rifle/rmc_f90/shotgun, null, VENDOR_ITEM_REGULAR), + + list("PRIMARY AMMUNITION", -1, null, null), + list("F903 Magazine (10x24mm)", 5, /obj/item/ammo_magazine/rifle/rmc_f90, null, VENDOR_ITEM_REGULAR), + list("F903A1 Marksman Magazine (10x24mm)", 15, /obj/item/ammo_magazine/rifle/rmc_f90/marksman, null, VENDOR_ITEM_REGULAR), + + list("SIDEARMS", -1, null, null), + list("VP78 Pistol", 20, /obj/item/weapon/gun/pistol/vp78, null, VENDOR_ITEM_REGULAR), + list("88 Mod 4 Combat Pistol", 15, /obj/item/weapon/gun/pistol/mod88, null, VENDOR_ITEM_REGULAR), + + list("SIDEARM AMMUNITION", -1, null, null), + list("VP78 magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR), + list("88M4 AP Magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/mod88, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", -1, null, null), + list("M94 Marking Flare Pack", 3, /obj/item/storage/box/m94, null, VENDOR_ITEM_RECOMMENDED), + list("Smoke Grenade", 7, /obj/item/explosive/grenade/smokebomb, null, VENDOR_ITEM_REGULAR), + list("R2175/B HIDP grenade packet", 7, /obj/item/storage/box/packet/rmc/incin, null, VENDOR_ITEM_REGULAR), + list("R2175/A HEDP grenade packet", 7, /obj/item/storage/box/packet/rmc/he, null, VENDOR_ITEM_REGULAR), + list("L5 bayonet", 3, /obj/item/attachable/bayonet/rmc, null, VENDOR_ITEM_REGULAR), + ) diff --git a/code/datums/factions/upp.dm b/code/datums/factions/upp.dm index a5a89cfd0a80..90b04765cf85 100644 --- a/code/datums/factions/upp.dm +++ b/code/datums/factions/upp.dm @@ -25,12 +25,24 @@ hud_icon_state = "lt" if(JOB_UPP_SRLT_OFFICER) hud_icon_state = "slt" + if(JOB_UPP_KPT_OFFICER) + hud_icon_state = "xo" if(JOB_UPP_MAY_OFFICER) - hud_icon_state = "may" + hud_icon_state = "co" + if(JOB_UPP_LTKOL_OFFICER) + hud_icon_state = "co" if(JOB_UPP_KOL_OFFICER) - hud_icon_state = "kol" + hud_icon_state = "co" + if(JOB_UPP_MAY_GENERAL) + hud_icon_state = "co" + if(JOB_UPP_LT_GENERAL) + hud_icon_state = "co" + if(JOB_UPP_GENERAL) + hud_icon_state = "co" if(JOB_UPP_COMBAT_SYNTH) hud_icon_state = "synth" + if(JOB_UPP_SUPPORT_SYNTH) + hud_icon_state = "synth" if(JOB_UPP_COMMANDO) hud_icon_state = "com" if(JOB_UPP_COMMANDO_MEDIC) @@ -47,24 +59,24 @@ /datum/faction/upp/get_antag_guns_snowflake_equipment() return list( list("PRIMARY FIREARMS", 0, null, null, null), - list("CZ-81 Machine Pistol", 20, /obj/item/weapon/gun/pistol/skorpion/upp, null, VENDOR_ITEM_REGULAR), + list("Type 64 Submachinegun", 20, /obj/item/weapon/gun/smg/bizon/upp, null, VENDOR_ITEM_REGULAR), list("Type 71 Pulse Rifle", 30, /obj/item/weapon/gun/rifle/type71, null, VENDOR_ITEM_REGULAR), list("Type 71 Pulse Rifle Carbine", 30, /obj/item/weapon/gun/rifle/type71/carbine, null, VENDOR_ITEM_REGULAR), list("PRIMARY AMMUNITION", 0, null, null, null), - list("CZ-81 Magazine (.32ACP)", 5, /obj/item/ammo_magazine/pistol/skorpion, null, VENDOR_ITEM_REGULAR), + list("Type 64 Helical Magazine (7.62x19mm)", 5, /obj/item/ammo_magazine/smg/bizon, null, VENDOR_ITEM_REGULAR), list("Type 71 AP Magazine (5.45x39mm)", 15, /obj/item/ammo_magazine/rifle/type71/ap, null, VENDOR_ITEM_REGULAR), list("Type 71 Magazine (5.45x39mm)", 5, /obj/item/ammo_magazine/rifle/type71, null, VENDOR_ITEM_REGULAR), list("SIDEARMS", 0, null, null, null), - list("Highpower Automag", 15, /obj/item/weapon/gun/pistol/highpower, null, VENDOR_ITEM_REGULAR), - list("Korovin PK-9 Pistol", 15, /obj/item/weapon/gun/pistol/c99/upp, null, VENDOR_ITEM_REGULAR), - list("N-Y 7.62mm Revolver", 15, /obj/item/weapon/gun/revolver/nagant, null, VENDOR_ITEM_REGULAR), + list("Type 73 Pistol", 25, /obj/item/weapon/gun/pistol/t73, null, VENDOR_ITEM_REGULAR), + list("NP92 Pistol", 15, /obj/item/weapon/gun/pistol/np92, null, VENDOR_ITEM_REGULAR), + list("ZHNK-72 Revolver", 15, /obj/item/weapon/gun/revolver/upp, null, VENDOR_ITEM_REGULAR), list("SIDEARM AMMUNITION", 0, null, null, null), - list("Highpower Magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/highpower, null, VENDOR_ITEM_REGULAR), - list("N-Y Speed Loader (7.62x38mmR)", 5, /obj/item/ammo_magazine/revolver/upp, null, VENDOR_ITEM_REGULAR), - list("PK-9 Magazine (.22 Hollowpoint)", 5, /obj/item/ammo_magazine/pistol/c99, null, VENDOR_ITEM_REGULAR), + list("Type 73 Magazine (7.62x25mm Tokarev)", 5, /obj/item/ammo_magazine/pistol/t73, null, VENDOR_ITEM_REGULAR), + list("ZHNK-72 Speed Loader (7.62x38mmR)", 5, /obj/item/ammo_magazine/revolver/upp, null, VENDOR_ITEM_REGULAR), + list("NP92 Magazine (9x18mm Makarov)", 40, /obj/item/ammo_magazine/pistol/np92, null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), list("Angled Grip", 15, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), @@ -86,24 +98,24 @@ /datum/faction/upp/get_antag_guns_sorted_equipment() return list( list("PRIMARY FIREARMS", -1, null, null), - list("CZ-81 Machine Pistol", 20, /obj/item/weapon/gun/pistol/skorpion/upp, VENDOR_ITEM_REGULAR), + list("Type 64 Submachinegun", 20, /obj/item/weapon/gun/smg/bizon/upp, VENDOR_ITEM_REGULAR), list("Type 71 Pulse Rifle", 20, /obj/item/weapon/gun/rifle/type71, VENDOR_ITEM_REGULAR), list("Type 71 Pulse Rifle Carbine", 20, /obj/item/weapon/gun/rifle/type71/carbine, VENDOR_ITEM_REGULAR), list("PRIMARY AMMUNITION", -1, null, null), - list("CZ-81 Magazine (.32ACP)", 60, /obj/item/ammo_magazine/pistol/skorpion, VENDOR_ITEM_REGULAR), + list("Type 64 Helical Magazine (7.62x19mm)", 60, /obj/item/ammo_magazine/smg/bizon, VENDOR_ITEM_REGULAR), list("Type 71 AP Magazine (5.45x39mm)", 60, /obj/item/ammo_magazine/rifle/type71/ap, VENDOR_ITEM_REGULAR), list("Type 71 Magazine (5.45x39mm)", 60, /obj/item/ammo_magazine/rifle/type71, VENDOR_ITEM_REGULAR), list("SIDEARMS", -1, null, null), - list("Highpower Automag", 20, /obj/item/weapon/gun/pistol/highpower, VENDOR_ITEM_REGULAR), - list("Korovin PK-9 Pistol", 20, /obj/item/weapon/gun/pistol/c99/upp, VENDOR_ITEM_REGULAR), - list("N-Y 7.62mm Revolver", 20, /obj/item/weapon/gun/revolver/nagant, VENDOR_ITEM_REGULAR), + list("Type 73 Pistol", 20, /obj/item/weapon/gun/pistol/t73, VENDOR_ITEM_REGULAR), + list("NP02 Pistol", 20, /obj/item/weapon/gun/pistol/np92, VENDOR_ITEM_REGULAR), + list("ZHNK-72 Revolver", 20, /obj/item/weapon/gun/revolver/upp, VENDOR_ITEM_REGULAR), list("SIDEARM AMMUNITION", -1, null, null), - list("Highpower Magazine (9mm)", 40, /obj/item/ammo_magazine/pistol/highpower, VENDOR_ITEM_REGULAR), - list("N-Y Speed Loader (7.62x38mmR)", 40, /obj/item/ammo_magazine/revolver/upp, VENDOR_ITEM_REGULAR), - list("PK-9 Magazine (.22 Hollowpoint)", 40, /obj/item/ammo_magazine/pistol/c99, VENDOR_ITEM_REGULAR), + list("Type 73 Magazine (7.62x25mm Tokarev)", 40, /obj/item/ammo_magazine/pistol/t73, VENDOR_ITEM_REGULAR), + list("ZHNK-72 Speed Loader (7.62x38mmR)", 40, /obj/item/ammo_magazine/revolver/upp, VENDOR_ITEM_REGULAR), + list("NP92 Magazine (9x18mm Makarov)", 40, /obj/item/ammo_magazine/pistol/np92, VENDOR_ITEM_REGULAR), list("UTILITIES", -1, null, null), list("M94 Marking Flare Pack", 20, /obj/item/storage/box/m94, VENDOR_ITEM_RECOMMENDED), diff --git a/code/datums/factions/uscm.dm b/code/datums/factions/uscm.dm index 1fb1df278ab0..0a9b0cff40b9 100644 --- a/code/datums/factions/uscm.dm +++ b/code/datums/factions/uscm.dm @@ -2,15 +2,15 @@ name = "United States Colonial Marines" faction_tag = FACTION_MARINE -/datum/faction/uscm/modify_hud_holder(image/holder, mob/living/carbon/human/H) - var/datum/squad/squad = H.assigned_squad +/datum/faction/uscm/modify_hud_holder(image/holder, mob/living/carbon/human/current_human) + var/datum/squad/squad = current_human.assigned_squad if(istype(squad)) - var/squad_clr = squad_colors[H.assigned_squad.color] + var/squad_clr = current_human.assigned_squad.equipment_color var/marine_rk - var/obj/item/card/id/I = H.get_idcard() + var/obj/item/card/id/I = current_human.get_idcard() var/_role - if(H.job) - _role = H.job + if(current_human.job) + _role = current_human.job else if(I) _role = I.rank switch(GET_DEFAULT_ROLE(_role)) @@ -29,42 +29,42 @@ if(JOB_MARINE_RAIDER) marine_rk = "soc" if(JOB_MARINE_RAIDER_SL) marine_rk = "soctl" if(JOB_MARINE_RAIDER_CMD) marine_rk = "soccmd" - if(squad.squad_leader == H) + if(squad.squad_leader == current_human) switch(squad.squad_type) if("Squad") marine_rk = "leader_a" if("Team") marine_rk = "soctl_a" - H.langchat_styles = "langchat_bolded" // bold text for bold leaders + current_human.langchat_styles = "langchat_bolded" // bold text for bold leaders else - H.langchat_styles = initial(H.langchat_styles) + current_human.langchat_styles = initial(current_human.langchat_styles) - H.langchat_color = squad_colors_chat[H.assigned_squad.color] + current_human.langchat_color = current_human.assigned_squad.chat_color - if(!marine_rk) marine_rk = H.rank_fallback + if(!marine_rk) marine_rk = current_human.rank_fallback if(marine_rk) - var/image/IMG = image('icons/mob/hud/marine_hud.dmi', H, "hudsquad") + var/image/IMG = image('icons/mob/hud/marine_hud.dmi', current_human, "hudsquad") if(squad_clr) IMG.color = squad_clr else IMG.color = "#5A934A" holder.overlays += IMG - holder.overlays += image('icons/mob/hud/marine_hud.dmi', H, "hudsquad_[marine_rk]") - if(H.assigned_squad && H.assigned_fireteam) - var/image/IMG2 = image('icons/mob/hud/marine_hud.dmi', H, "hudsquad_[H.assigned_fireteam]") + holder.overlays += image('icons/mob/hud/marine_hud.dmi', current_human, "hudsquad_[marine_rk]") + if(current_human.assigned_squad && current_human.assigned_fireteam) + var/image/IMG2 = image('icons/mob/hud/marine_hud.dmi', current_human, "hudsquad_[current_human.assigned_fireteam]") IMG2.color = squad_clr holder.overlays += IMG2 - if(H.assigned_squad.fireteam_leaders[H.assigned_fireteam] == H) - var/image/IMG3 = image('icons/mob/hud/marine_hud.dmi', H, "hudsquad_ftl") + if(current_human.assigned_squad.fireteam_leaders[current_human.assigned_fireteam] == current_human) + var/image/IMG3 = image('icons/mob/hud/marine_hud.dmi', current_human, "hudsquad_ftl") IMG3.color = squad_clr holder.overlays += IMG3 else var/marine_rk var/border_rk var/icon_prefix = "hudsquad_" - var/obj/item/card/id/ID = H.get_idcard() + var/obj/item/card/id/ID = current_human.get_idcard() var/_role - if(H.mind) - _role = H.job + if(current_human.mind) + _role = current_human.job else if(ID) _role = ID.rank switch(_role) @@ -77,6 +77,9 @@ if(JOB_SO) marine_rk = "so" border_rk = "command" + if(JOB_AUXILIARY_OFFICER) + marine_rk = "aso" + border_rk = "command" if(JOB_GENERAL, JOB_COLONEL, JOB_ACMC, JOB_CMC) marine_rk = "general" border_rk = "command" @@ -186,11 +189,24 @@ if(JOB_CMB_OBS) marine_rk = "obs" icon_prefix = "cmb_" + // Check squad marines here too, for the unique ones + if(JOB_SQUAD_ENGI) + marine_rk = "engi" + if(JOB_SQUAD_MEDIC) + marine_rk = "med" + if(JOB_SQUAD_SPECIALIST) + marine_rk = "spec" + if(JOB_SQUAD_SMARTGUN) + marine_rk = "gun" + if(JOB_SQUAD_TEAM_LEADER) + marine_rk = "tl" + if(JOB_SQUAD_LEADER) + marine_rk = "leader" if(marine_rk) - var/image/I = image('icons/mob/hud/marine_hud.dmi', H, "hudsquad") + var/image/I = image('icons/mob/hud/marine_hud.dmi', current_human, "hudsquad") I.color = "#5A934A" holder.overlays += I - holder.overlays += image('icons/mob/hud/marine_hud.dmi', H, "[icon_prefix][marine_rk]") + holder.overlays += image('icons/mob/hud/marine_hud.dmi', current_human, "[icon_prefix][marine_rk]") if(border_rk) - holder.overlays += image('icons/mob/hud/marine_hud.dmi', H, "hudmarineborder[border_rk]") + holder.overlays += image('icons/mob/hud/marine_hud.dmi', current_human, "hudmarineborder[border_rk]") diff --git a/code/datums/fluff_emails.dm b/code/datums/fluff_emails.dm index 6dd8cd590860..f7083541dd5a 100644 --- a/code/datums/fluff_emails.dm +++ b/code/datums/fluff_emails.dm @@ -93,9 +93,9 @@ /datum/fluff_email/almayer/themajor title = "The Major?" entry_text = {" - I keep forgetting what the new Major's name is. I got quizzed by one of the jackass staff officers last week about the captain's name, - and I absolutely spilled my marbles. PCF Mable was watching too, and she probably thinks I've got rocks in my head. I know it's been weeks - since the new captain took over, but for some reason the name keeps escaping me when it matters. Either the cryo-sleepers are juicing my + I keep forgetting what the new Major's name is. I got quizzed by one of the jackass staff officers last week about the Major's name, + and I absolutely spilled my marbles. PFC Mable was watching too, and she probably thinks I've got rocks in my head. I know it's been weeks + since the new Major took over, but for some reason the name keeps escaping me when it matters. Either the cryo-sleepers are juicing my memory capacity or the CO keeps changing their name and not telling anybody. Maybe next jump I'll scrawl it on a sticky note and plaster it to the inside of my sleeper pod. I can't be the only one having this problem. @@ -105,7 +105,8 @@ /datum/fluff_email/almayer/tunes title = "RE: Tunes" entry_text = {" - Cryosleep is killing me, man. Inside and outside. I mean really, they expect us to sit in that tube for god only knows how long, and when we wake up? It's all 'grab a crappy protein bar and grab your gear, you're going to war, Marine!' Bullshit. + Cryosleep is killing me, man. Inside and outside. I mean really, they expect us to sit in that tube for god only knows how long, and when we wake up? + It's all 'grab a crappy protein bar and grab your gear, you're going to war, Marine!' Bullshit.

Anywho, I've been thinking how to make the whole thing more bearable. Tried to take a plush from the bunks with me inside. That dickwad MP took it away from me though, said it was against Operating Procedure. Like I care. Can't do anything fun around here, right? @@ -113,82 +114,81 @@ I don't usually use these things, and frankly that vendor near Medbay has waaay too many cassettes to choose from. Not that I know most songs on them anywho.

- I saw you with a Walkman from time to time, so... any chances you could recommend a tape to me? Or two, I'm not gonna be picky. Just anything to start out with, I just want some nice sounds. Please, I'm gonna go mad if I don't do something about my cryophobia or whatever. This might just help with that. + I saw you with a Walkman from time to time, so... any chances you could recommend a tape to me? Or two, I'm not gonna be picky. + Just anything to start out with, I just want some nice sounds. Please, I'm gonna go mad if I don't do something about my cryophobia or whatever. + This might just help with that. "} -/datum/fluff_email/almayer/lasergun - title = "RE: Lasergun" +/datum/fluff_email/almayer/lasergun1 + title = "Prototype Weapon" entry_text = {" - Hey REDACTED. Thanks for letting me test out the laser gun. That thing is a factual blast to use. It literally set the targets down range on fire! Those cooling coils work wonders. Used it a good few times and the barrel didn't explode! + This thing is an absolute blast to use. + It disintegrated some of the targets down range but you're going to need to work on those cooling coils. + I used it a few times and I'm seeing the front barrel glow red.

- Hell, it's even pretty accurate too. I know there's like, a couple of prototypes issued to some USCM detachments but we got to have this shit in production one day. It's just good. Now, I don't think it's gonna replace the old Mark two's but it would be a nice addition for some of our grunts that prefer the high tech approach. You know the ones, all nerdy and gadget loving geeks in the corps. Hell I can already hear them glossing over this thing in their sleep. + Surprisingly accurate too despite being a prototype. + I know there's like, a couple of prototypes issued to some USCM detachments, but we got to have this shit in production one day.

- Anyway, I've already attached the weapon report you wanted on this thing back to the email. Hopefully you guys in R&D will get some useful info out of it. + Even as a prototype, it's leagues better than some of the junk we're issued. + Now, I don't think it's going to replace the old Mark Twos, but it would be a nice addition for some of our grunts that prefer the high-tech approach.
- Alright see you when I see you - REDACTED
-
- RE:RE: The Plasma Gun (It's called the XM99 Phased Plasma Pulse Rifle) - Hey REDACTED, REDACTED here. Thanks for the report but I'm going to need you to send the Phased Plasma Pulse Rifle back to me. Apparently we're not allowed to ship them out for testing... I guess I must've missed that memo. The memo came three days after I shipped it out to you. Sorry for the inconvenience. You know where to send it back to and how to. I did tell you how right? There was a small pamphlet in the casing if you forgot. -
-
- Don't think this is going to be issued en masse for a while, it's still going under trials and when I got the weapon report you sent me, they sent in a new updated design for the gun which invalidated most of the things in the report, shame. Looks more promising than the last one though. -
-
- Okay, I'll hopefully be seeing the XM99 Phased Plasma Pulse Rifle in the lab soon. -
-
- REDACTED RE:RE:RE: The Plasma Gun (It's called the XM99 Phased Plasma Pulse Rifle) -
- Holy shit, what the fuck did you do to the damned thing? When I opened the case, I could see fractures and scratches everywhere! Did you give this to the entire platoon to try out? And from the data I'm reading, you fired over 178 shots with this. I only gave you two batteries for the thing. -
-
- How the hell did you recharge it?! The prototype can't take any other forms of power other than those two batteries. And even then, you can't recharge those specially made batteries either without the equipment back in the lab here. And the inside of the barrel is all messed up man. The cooling coils expired and there're bits of the barrel loose inside of it. How the hell did you not notice bits of the inside of the barrel spewing out from the muzzle man?! -
-
- Right. They've threatened to drop me from the project if something like this happens again. In the rare case that I send another prototype out, it had better come back in one piece. And I mean in pristine condition, you got that? -
-
Regards, -
REDACTED + You know the ones, all nerdy and gadget loving geeks in the corps. Hell, I can already hear them glossing over this thing in their sleep. + My report has been sent back to you and I'm really excited to see how this turns out. + + "} + + +/datum/fluff_email/almayer/lasergun2 + title = "New Prototype Design" + entry_text = {" + Thanks for sending the report in, we've been mulling over the data you sent over. + We've updated the design for the prototype which solves most of the problems everyone has encountered. + This one looks more promising than the last one. + And as much as everyone wants this done and shippped, I don't think this is going to be issued en masse for a good while. "} /datum/fluff_email/almayer/beatup - title = "RE: Beat Up" + title = "Beat Up" entry_text = {" - Yo. -
-
- Man, last mission was an absolute shit show. The USS Heyst got their shit kicked in with a missile and we got our cargo hold set on fire by that damn suicide craft. They even blew up most of our good ammo too! Now we're left with the soft point backup munitions. Shit, most of 1st platoon is pretty much out of action. Lotta folks are in sickbay and the rest of us are heading off to cryosleep, well what's left of us. -
-
- When the comms got cut and we were cut off from command; Squad Foxtrot was immediately ambushed on the logistics route to get supplies in and out of the combat zone. I suspect they were taping into your comms to find the literal perfect moment to fuck with our logistics. Thankfully those trucks of ours had their engines tricked out by the techies back on LV-176 in the civilian garage. Those guys hosted rally races around their colony and Sergeant DATA EXPUNGED won a few races for us. Instead of taking their trophy, he pulled a few favors to get our trucks pimped out with better engines. We owe our lives to Sarge for winning one for the corps. -
-
- Hell, at least we're all going back to Chinook Station to get resupplied. Hopefully the wounded wake up to the docs on station rather than our poor and cramped excuse for a medical bay. The number of times the medbay has been packed with wounded where even the damn front lobby had bodies lining up on the sides of the walls waiting for treatment; it still amazes. Worse still was the stench from all the blood and guts, it made it hell for the maint. techs to clean up afterwards. -
- I'm still surprised those doctors we had on hand took care of most of them so quickly, even if most of them are still injured heading to the fridge. -
-
- I read the After-Action Report which the Heyst's XO did, and they're leaving out a few details. When it came to that city, they left out how we had to DATA EXPUNGED. The entire building collapsed with them in it too. Damn shame we couldn't save them. -
-
- The only damn silver lining i see in this shit is that the AI is going to cycle cryo again and we ain't waking to deal with whatever bullshit is happening next time. 2nd Platoon is dealing with that, cause 1st platoon is undermanned as is with our casualties. I heard they have a few screws loose, not that ours are entirely in either! But I don't care, it's their problem now y'know? -
-
- Worst case scenario, we don't wake up at all. -
- Right, see you back on station friend. -
-
- Regards, -
- REDACTED + Man last mission was an absolute shit show. +
+ The USS Heyst got their shit kicked in with a missile and we got our cargo hold set on fire. And most of our good ammo is gone too! + Now we're left with the FMJs and the older AP munitions. What's worse is that most of 1st platoon is pretty much out of action. + Lotta folks are in the sickbay and the rest of us are heading off to cryosleep, well what's left of us. There's not many of the old guard left I'm afraid. + Until we get reinforced with more bodies, command has given the go ahead to merge 2nd platoon into 1st for the time being. + + "} + + +/datum/fluff_email/almayer/rallyrace + title = "Rally Racing" + entry_text = {" + Hey, remember last shore leave on LV-179? Man, that was one crazy night. The folks at the colony had setup a rally race with their tractors all stripped of non-essentials. + LCPL Millard got pretty friendly with the locals and got himself into the competition. + We all put in a little wager to see if he'd even get close to first place or even survive to the finish line. + Now most of the boys bet a fair amount against him since he was pretty new to our outfit, yet I've been out on detail with the guy. +
+
+ Millard grew up on one of those shake and bake colonies and used to drive the big daisies around. + He knew the ins and outs of what made them tick. The few of us who had faith in him reaped everyone else's + paycheck for the week with Millard finishing first place by a near country mile. "} + +/datum/fluff_email/almayer/missing + title = "Missing Personnel" + entry_text = {" + Has anyone seen Mendoza around? He owes me half of his paycheck from last month's poker game. + Everyone's payday was a week ago and we're all set to head back to Chinook station. + Could have sworn I saw him near the cargo elevator yesterday. + I'll catch him back at base once we've docked because I need that money to pay off my tab at the bar. + + "} + diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm index a2932532e78e..b7d528380a42 100644 --- a/code/datums/helper_datums/getrev.dm +++ b/code/datums/helper_datums/getrev.dm @@ -48,6 +48,8 @@ GLOBAL_DATUM_INIT(revdata, /datum/getrev, new) var/datum/tgs_revision_information/test_merge/tm = line var/cm = tm.head_commit var/details = ": '" + html_encode(tm.title) + "' by " + html_encode(tm.author) + " at commit " + html_encode(copytext_char(cm, 1, 11)) + if(details && findtext(details, "\[s\]") && (!usr || !usr.client.admin_holder)) + continue . += "#[tm.number][details]
" /client/verb/showrevinfo() diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 16825ab8a7ba..6a4276208d13 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -166,18 +166,18 @@ /datum/teleport/instant/science/teleportChecks() if(istype(teleatom, /obj/item/disk/nuclear)) // Don't let nuke disks get teleported --NeoFite - teleatom.visible_message(SPAN_DANGER("The [teleatom] bounces off of the portal!")) + teleatom.visible_message(SPAN_DANGER("[teleatom] bounces off of the portal!")) return 0 if(length(teleatom.search_contents_for(/obj/item/disk/nuclear))) if(istype(teleatom, /mob/living)) var/mob/living/MM = teleatom - MM.visible_message(SPAN_DANGER("The [MM] bounces off of the portal!"),SPAN_DANGER("Something you are carrying seems to be unable to pass through the portal. Better drop it if you want to go through.")) + MM.visible_message(SPAN_DANGER("[MM] bounces off of the portal!"),SPAN_DANGER("Something you are carrying seems to be unable to pass through the portal. Better drop it if you want to go through.")) else - teleatom.visible_message(SPAN_DANGER("The [teleatom] bounces off of the portal!")) + teleatom.visible_message(SPAN_DANGER("[teleatom] bounces off of the portal!")) return 0 - if(is_admin_level(destination.z)) + if(should_block_game_interaction(destination)) if(length(teleatom.search_contents_for(/obj/item/storage/backpack/holding))) teleatom.visible_message(SPAN_DANGER("The Bag of Holding bounces off of the portal!")) return 0 diff --git a/code/datums/keybinding/client.dm b/code/datums/keybinding/client.dm index a5baf09a1360..752287882277 100644 --- a/code/datums/keybinding/client.dm +++ b/code/datums/keybinding/client.dm @@ -4,8 +4,8 @@ /datum/keybinding/client/admin_help - hotkey_keys = list("F1") - classic_keys = list("F1") + hotkey_keys = list("Unbound") + classic_keys = list("Unbound") name = "admin_help" full_name = "Admin Help" description = "Ask an admin for help." diff --git a/code/datums/keybinding/communication.dm b/code/datums/keybinding/communication.dm index 9a438fc6dabd..e1ba0ab5a31e 100644 --- a/code/datums/keybinding/communication.dm +++ b/code/datums/keybinding/communication.dm @@ -32,7 +32,7 @@ /datum/keybinding/client/communication/whisper hotkey_keys = list("Unbound") classic_keys = list("Unbound") - name = "Whisper" + name = WHISPER_CHANNEL full_name = "IC Whisper" keybind_signal = COMSIG_KB_CLIENT_WHISPER_DOWN @@ -42,13 +42,6 @@ full_name = "IC Comms (;)" keybind_signal = COMSIG_KG_CLIENT_RADIO_DOWN -/datum/keybinding/client/communication/mod_say - hotkey_keys = list("Unbound") - classic_keys = list("Unbound") - name = MOD_CHANNEL - full_name = "Mod Say" - keybind_signal = COMSIG_KB_ADMIN_ASAY_DOWN - /datum/keybinding/client/communication/asay hotkey_keys = list("F3") classic_keys = list("F5") @@ -63,4 +56,4 @@ name = MENTOR_CHANNEL full_name = "Mentor Say" description = "Talk with other mentors." - keybind_signal = COMSIG_KB_ADMIN_ASAY_DOWN + keybind_signal = COMSIG_KB_ADMIN_MENTORSAY_DOWN diff --git a/code/datums/keybinding/human.dm b/code/datums/keybinding/human.dm index 6580c38083ea..6d7037eac398 100644 --- a/code/datums/keybinding/human.dm +++ b/code/datums/keybinding/human.dm @@ -1,8 +1,3 @@ -#define QUICK_EQUIP_PRIMARY 1 -#define QUICK_EQUIP_SECONDARY 2 -#define QUICK_EQUIP_TERTIARY 3 -#define QUICK_EQUIP_QUATERNARY 4 - /datum/keybinding/human category = CATEGORY_HUMAN weight = WEIGHT_MOB @@ -10,86 +5,6 @@ /datum/keybinding/human/can_use(client/user) return ishuman(user.mob) -/datum/keybinding/human/quick_equip - hotkey_keys = list("E") - classic_keys = list("E") - name = "quick_equip" - full_name = "Unholster" - description = "Take out an available weapon" - keybind_signal = COMSIG_KB_HUMAN_QUICKEQUIP_DOWN - -/datum/keybinding/human/quick_equip/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - H.holster_verb(QUICK_EQUIP_PRIMARY) - return TRUE - -/datum/keybinding/human/quick_equip_secondary - hotkey_keys = list("Shift+E") - classic_keys = list("Shift+E") - name = "quick_equip_secondary" - full_name = "Unholster secondary" - description = "Take out your secondary weapon" - keybind_signal = COMSIG_KB_HUMAN_SECONDARY_DOWN - -/datum/keybinding/human/quick_equip_secondary/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - H.holster_verb(QUICK_EQUIP_SECONDARY) - return TRUE - -/datum/keybinding/human/quick_equip_tertiary - hotkey_keys = list("Ctrl+E", "Alt+E") - classic_keys = list("Ctrl+E", "Alt+E") - name = "quick_equip_tertiary" - full_name = "Unholster tertiary" - description = "Take out your tertiary item." - keybind_signal = COMSIG_KB_HUMAN_TERTIARY_DOWN - -/datum/keybinding/human/quick_equip_tertiary/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - H.holster_verb(QUICK_EQUIP_TERTIARY) - return TRUE - -/datum/keybinding/human/quick_equip_quaternary - hotkey_keys = list("Unbound") - classic_keys = list("Unbound") - name = "quick_equip_quaternary" - full_name = "Unholster quaternary" - description = "Take out your quaternary item." - keybind_signal = COMSIG_KB_HUMAN_QUATERNARY_DOWN - -/datum/keybinding/human/quick_equip_quaternary/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - H.holster_verb(QUICK_EQUIP_QUATERNARY) - return TRUE - -/datum/keybinding/human/quick_equip_inventory - hotkey_keys = list("Unbound") - classic_keys = list("Unbound") - name = "quick_equip_inventory" - full_name = "Quick equip inventory" - description = "Quickly puts an item in the best slot available" - keybind_signal = COMSIG_KB_HUMAN_QUICK_EQUIP_DOWN - -/datum/keybinding/human/quick_equip_inventory/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - H.quick_equip() - return TRUE - /datum/keybinding/human/issue_order hotkey_keys = list("Unbound") classic_keys = list("Unbound") @@ -103,8 +18,8 @@ . = ..() if(.) return - var/mob/living/carbon/human/H = user.mob - H.issue_order(order) + var/mob/living/carbon/human/human_mob = user.mob + human_mob.issue_order(order) return TRUE /datum/keybinding/human/issue_order/move @@ -139,8 +54,8 @@ . = ..() if(.) return - var/mob/living/carbon/human/H = user.mob - H.spec_activation_one() + var/mob/living/carbon/human/human_mob = user.mob + human_mob.spec_activation_one() return TRUE /datum/keybinding/human/specialist_two @@ -154,24 +69,8 @@ . = ..() if(.) return - var/mob/living/carbon/human/H = user.mob - H.spec_activation_two() - return TRUE - -/datum/keybinding/human/pick_up - hotkey_keys = list("F") - classic_keys = list("Unbound") - name = "pick_up" - full_name = "Pick Up Dropped Items" - keybind_signal = COMSIG_KB_HUMAN_PICK_UP - -/datum/keybinding/human/pick_up/down(client/user) - . = ..() - if(.) - return - - var/mob/living/carbon/human/human_user = user.mob - human_user.pickup_recent() + var/mob/living/carbon/human/human_mob = user.mob + human_mob.spec_activation_two() return TRUE /datum/keybinding/human/rotate_chair @@ -209,7 +108,23 @@ shown_item.showoff(human_user) return TRUE -#undef QUICK_EQUIP_PRIMARY -#undef QUICK_EQUIP_SECONDARY -#undef QUICK_EQUIP_TERTIARY -#undef QUICK_EQUIP_QUATERNARY +/datum/keybinding/human/cycle_helmet_hud + hotkey_keys = list("Unbound") + classic_keys = list("Unbound") + name = "cycle_helmet_hud" + full_name = "Cycle Helmet HUD" + keybind_signal = COMSIG_KB_HUMAN_CYCLE_HELMET_HUD + +/datum/keybinding/human/cycle_helmet_hud/down(client/user) + . = ..() + if(.) + return + + var/mob/living/carbon/human/human_user = user.mob + var/obj/item/clothing/head/helmet/marine/marine_helmet = human_user?.head + var/cycled_hud = marine_helmet?.cycle_huds(human_user) + + var/datum/action/item_action/cycle_helmet_huds/cycle_action = locate() in marine_helmet.actions + cycle_action.set_action_overlay(cycled_hud) + + return TRUE diff --git a/code/datums/keybinding/human_combat.dm b/code/datums/keybinding/human_combat.dm index 003fba3b00bd..d30414d68563 100644 --- a/code/datums/keybinding/human_combat.dm +++ b/code/datums/keybinding/human_combat.dm @@ -1,6 +1,5 @@ /datum/keybinding/human/combat category = CATEGORY_HUMAN_COMBAT - weight = WEIGHT_MOB /datum/keybinding/human/combat/can_use(client/user) . = ..() @@ -191,3 +190,20 @@ var/obj/item/weapon/gun/rifle/m46c/COgun = held_item COgun.toggle_iff(human) return TRUE + +/datum/keybinding/human/combat/toggle_shotgun_tube + hotkey_keys = list("Unbound") + classic_keys = list("Unbound") + name = "toggle_shotgun_tube" + full_name = "Toggle Shotgun Tube" + keybind_signal = COMSIG_KB_HUMAN_WEAPON_SHOTGUN_TUBE + +/datum/keybinding/human/combat/toggle_shotgun_tube/down(client/user) + . = ..() + if(.) + return + var/mob/living/carbon/human/human = user.mob + var/obj/item/weapon/gun/shotgun/pump/dual_tube/held_item = human.get_held_item() + if(istype(held_item)) + held_item.toggle_tube() + return TRUE diff --git a/code/datums/keybinding/human_inventory.dm b/code/datums/keybinding/human_inventory.dm new file mode 100644 index 000000000000..163cbccdd5c0 --- /dev/null +++ b/code/datums/keybinding/human_inventory.dm @@ -0,0 +1,244 @@ +/datum/keybinding/human/inventory + category = CATEGORY_HUMAN_INVENTORY + +#define QUICK_EQUIP_PRIMARY 1 +#define QUICK_EQUIP_SECONDARY 2 +#define QUICK_EQUIP_TERTIARY 3 +#define QUICK_EQUIP_QUATERNARY 4 + +/datum/keybinding/human/inventory/quick_equip + hotkey_keys = list("E") + classic_keys = list("E") + name = "quick_equip" + full_name = "Unholster" + description = "Take out an available weapon" + keybind_signal = COMSIG_KB_HUMAN_INTERACT_QUICKEQUIP_DOWN + +/datum/keybinding/human/inventory/quick_equip/down(client/user) + . = ..() + if(.) + return + var/mob/living/carbon/human/human_mob = user.mob + human_mob.holster_verb(QUICK_EQUIP_PRIMARY) + return TRUE + +/datum/keybinding/human/inventory/quick_equip_secondary + hotkey_keys = list("Shift+E") + classic_keys = list("Shift+E") + name = "quick_equip_secondary" + full_name = "Unholster secondary" + description = "Take out your secondary weapon" + keybind_signal = COMSIG_KB_HUMAN_INTERACT_SECONDARY_DOWN + +/datum/keybinding/human/inventory/quick_equip_secondary/down(client/user) + . = ..() + if(.) + return + var/mob/living/carbon/human/human_mob = user.mob + human_mob.holster_verb(QUICK_EQUIP_SECONDARY) + return TRUE + +/datum/keybinding/human/inventory/quick_equip_tertiary + hotkey_keys = list("Ctrl+E", "Alt+E") + classic_keys = list("Ctrl+E", "Alt+E") + name = "quick_equip_tertiary" + full_name = "Unholster tertiary" + description = "Take out your tertiary item." + keybind_signal = COMSIG_KB_HUMAN_INTERACT_TERTIARY_DOWN + +/datum/keybinding/human/inventory/quick_equip_tertiary/down(client/user) + . = ..() + if(.) + return + var/mob/living/carbon/human/human_mob = user.mob + human_mob.holster_verb(QUICK_EQUIP_TERTIARY) + return TRUE + +/datum/keybinding/human/inventory/quick_equip_quaternary + hotkey_keys = list("Unbound") + classic_keys = list("Unbound") + name = "quick_equip_quaternary" + full_name = "Unholster quaternary" + description = "Take out your quaternary item." + keybind_signal = COMSIG_KB_HUMAN_INTERACT_QUATERNARY_DOWN + +/datum/keybinding/human/inventory/quick_equip_quaternary/down(client/user) + . = ..() + if(.) + return + var/mob/living/carbon/human/human_mob = user.mob + human_mob.holster_verb(QUICK_EQUIP_QUATERNARY) + return TRUE + +#undef QUICK_EQUIP_PRIMARY +#undef QUICK_EQUIP_SECONDARY +#undef QUICK_EQUIP_TERTIARY +#undef QUICK_EQUIP_QUATERNARY + +/datum/keybinding/human/inventory/quick_equip_inventory + hotkey_keys = list("Unbound") + classic_keys = list("Unbound") + name = "quick_equip_inventory" + full_name = "Quick equip inventory" + description = "Quickly puts an item in the best slot available" + keybind_signal = COMSIG_KB_HUMAN_INTERACT_QUICK_EQUIP_DOWN + +/datum/keybinding/human/inventory/quick_equip_inventory/down(client/user) + . = ..() + if(.) + return + var/mob/living/carbon/human/human_mob = user.mob + human_mob.quick_equip() + return TRUE + +/datum/keybinding/human/inventory/pick_up + hotkey_keys = list("F") + classic_keys = list("Unbound") + name = "pick_up" + full_name = "Pick Up Dropped Items" + keybind_signal = COMSIG_KB_HUMAN_INTERACT_PICK_UP + +/datum/keybinding/human/inventory/pick_up/down(client/user) + . = ..() + if(.) + return + + var/mob/living/carbon/human/human_user = user.mob + human_user.pickup_recent() + return TRUE + +/datum/keybinding/human/inventory/interact_other_hand + hotkey_keys = list("Unbound") + classic_keys = list("Unbound") + name = "interact_other_hand" + full_name = "Interact With Other Hand" + keybind_signal = COMSIG_KB_HUMAN_INTERACT_OTHER_HAND + +/datum/keybinding/human/inventory/interact_other_hand/down(client/user) + . = ..() + if(.) + return + + var/mob/living/carbon/human/human_user = user.mob + + var/active_hand = human_user.get_active_hand() + var/inactive_hand = human_user.get_inactive_hand() + + if(!inactive_hand) + return + human_user.click_adjacent(inactive_hand, active_hand) + return TRUE + +#define INTERACT_KEYBIND_COOLDOWN_TIME (0.2 SECONDS) +#define COOLDOWN_SLOT_INTERACT_KEYBIND "slot_interact_keybind_cooldown" + +/datum/keybinding/human/inventory/interact_slot + hotkey_keys = list("Unbound") + classic_keys = list("Unbound") + var/storage_slot + +/datum/keybinding/human/inventory/interact_slot/proc/check_slot(mob/living/carbon/human/user) + return + +/datum/keybinding/human/inventory/interact_slot/down(client/user) + . = ..() + if(.) + return + if(!storage_slot) + return + if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_SLOT_INTERACT_KEYBIND)) + return + + TIMER_COOLDOWN_START(src, COOLDOWN_SLOT_INTERACT_KEYBIND, INTERACT_KEYBIND_COOLDOWN_TIME) + var/mob/living/carbon/human/human_user = user.mob + var/obj/item/current_item = check_slot(human_user) + var/obj/item/in_hand_item = human_user.get_active_hand() + + if(in_hand_item) + if(!current_item) + if(!human_user.equip_to_slot_if_possible(in_hand_item, storage_slot, FALSE, FALSE)) + return + return TRUE + + current_item.attackby(in_hand_item, human_user) + return TRUE + + if(!current_item) + return + current_item.attack_hand(human_user) + return TRUE + +/datum/keybinding/human/inventory/interact_slot/back + name = "interact_storage_back" + full_name = "Interact With Back Slot" + keybind_signal = COMSIG_KB_HUMAN_INTERACT_SLOT_BACK + storage_slot = WEAR_BACK + +/datum/keybinding/human/inventory/interact_slot/back/check_slot(mob/living/carbon/human/user) + return user.back + +/datum/keybinding/human/inventory/interact_slot/belt + name = "interact_storage_belt" + full_name = "Interact With Belt Slot" + keybind_signal = COMSIG_KB_HUMAN_INTERACT_SLOT_BELT + storage_slot = WEAR_WAIST + +/datum/keybinding/human/inventory/interact_slot/belt/check_slot(mob/living/carbon/human/user) + return user.belt + +/datum/keybinding/human/inventory/interact_slot/pouch_left + name = "interact_storage_pouch_left" + full_name = "Interact With Left Pouch Slot" + keybind_signal = COMSIG_KB_HUMAN_INTERACT_SLOT_LEFT_POUCH + storage_slot = WEAR_L_STORE + +/datum/keybinding/human/inventory/interact_slot/pouch_left/check_slot(mob/living/carbon/human/user) + return user.l_store + +/datum/keybinding/human/inventory/interact_slot/pouch_right + name = "interact_storage_pouch_right" + full_name = "Interact With Right Pouch Slot" + keybind_signal = COMSIG_KB_HUMAN_INTERACT_SLOT_RIGHT_POUCH + storage_slot = WEAR_R_STORE + +/datum/keybinding/human/inventory/interact_slot/pouch_right/check_slot(mob/living/carbon/human/user) + return user.r_store + +/datum/keybinding/human/inventory/interact_slot/uniform + name = "interact_storage_uniform" + full_name = "Interact With Uniform Slot" + keybind_signal = COMSIG_KB_HUMAN_INTERACT_SLOT_UNIFORM + storage_slot = WEAR_BODY + +/datum/keybinding/human/inventory/interact_slot/uniform/check_slot(mob/living/carbon/human/user) + return user.w_uniform + +/datum/keybinding/human/inventory/interact_slot/suit + name = "interact_storage_suit" + full_name = "Interact With Suit Slot" + keybind_signal = COMSIG_KB_HUMAN_INTERACT_SLOT_SUIT + storage_slot = WEAR_JACKET + +/datum/keybinding/human/inventory/interact_slot/suit/check_slot(mob/living/carbon/human/user) + return user.wear_suit + +/datum/keybinding/human/inventory/interact_slot/helmet + name = "interact_storage_helmet" + full_name = "Interact With Head Slot" + keybind_signal = COMSIG_KB_HUMAN_INTERACT_SLOT_HELMET + storage_slot = WEAR_HEAD + +/datum/keybinding/human/inventory/interact_slot/helmet/check_slot(mob/living/carbon/human/user) + return user.head + +/datum/keybinding/human/inventory/interact_slot/suit_storage + name = "interact_storage_suit_store" + full_name = "Interact With Suit Storage Slot" + keybind_signal = COMSIG_KB_HUMAN_INTERACT_SUIT_S_STORE + storage_slot = WEAR_J_STORE + +/datum/keybinding/human/inventory/interact_slot/suit_storage/check_slot(mob/living/carbon/human/user) + return user.s_store + +#undef INTERACT_KEYBIND_COOLDOWN_TIME +#undef COOLDOWN_SLOT_INTERACT_KEYBIND diff --git a/code/datums/keybinding/mob.dm b/code/datums/keybinding/mob.dm index ee0ec30dcae7..b2bf989a7aaf 100644 --- a/code/datums/keybinding/mob.dm +++ b/code/datums/keybinding/mob.dm @@ -85,7 +85,7 @@ . = ..() if(.) return - user.mob.a_select_zone("head") + user.mob.a_select_zone("head", user) return TRUE /datum/keybinding/mob/target_r_arm @@ -100,7 +100,7 @@ . = ..() if(.) return - user.mob.a_select_zone("rarm") + user.mob.a_select_zone("rarm", user) return TRUE /datum/keybinding/mob/target_body_chest @@ -115,7 +115,7 @@ . = ..() if(.) return - user.mob.a_select_zone("chest") + user.mob.a_select_zone("chest", user) return TRUE /datum/keybinding/mob/target_left_arm @@ -130,7 +130,7 @@ . = ..() if(.) return - user.mob.a_select_zone("larm") + user.mob.a_select_zone("larm", user) return TRUE /datum/keybinding/mob/target_right_leg @@ -145,7 +145,7 @@ . = ..() if(.) return - user.mob.a_select_zone("rleg") + user.mob.a_select_zone("rleg", user) return TRUE /datum/keybinding/mob/target_body_groin @@ -160,7 +160,7 @@ . = ..() if(.) return - user.mob.a_select_zone("groin") + user.mob.a_select_zone("groin", user) return TRUE /datum/keybinding/mob/target_left_leg @@ -175,7 +175,7 @@ . = ..() if(.) return - user.mob.a_select_zone("lleg") + user.mob.a_select_zone("lleg", user) return TRUE /datum/keybinding/mob/target_next @@ -190,7 +190,7 @@ . = ..() if(.) return - user.mob.a_select_zone("next") + user.mob.a_select_zone("next", user) return TRUE /datum/keybinding/mob/target_prev @@ -205,7 +205,7 @@ . = ..() if(.) return - user.mob.a_select_zone("prev") + user.mob.a_select_zone("prev", user) return TRUE /datum/keybinding/mob/prevent_movement diff --git a/code/datums/keybinding/xenomorph.dm b/code/datums/keybinding/xenomorph.dm index 431b0a1e987f..cef04d01a75c 100644 --- a/code/datums/keybinding/xenomorph.dm +++ b/code/datums/keybinding/xenomorph.dm @@ -196,11 +196,11 @@ return if((!current_xeno.hive.living_xeno_queen || SSmapping.configs[GROUND_MAP].map_name == MAP_WHISKEY_OUTPOST) && !current_xeno.hive.allow_no_queen_actions) //No Hive status on WO - to_chat(current_xeno, SPAN_WARNING("There is no Queen. You are alone.")) + to_chat(current_xeno, SPAN_WARNING("There is no Queen. We are alone.")) return if(current_xeno.interference) - to_chat(current_xeno, SPAN_WARNING("A headhunter temporarily cut off your psychic connection!")) + to_chat(current_xeno, SPAN_WARNING("A headhunter temporarily cut off our psychic connection!")) return current_xeno.hive.hive_ui.open_hive_status(current_xeno) diff --git a/code/datums/keybinding/yautja.dm b/code/datums/keybinding/yautja.dm index 40ffbf8d16e7..c79788df49a3 100644 --- a/code/datums/keybinding/yautja.dm +++ b/code/datums/keybinding/yautja.dm @@ -30,16 +30,7 @@ classic_keys = list("Unbound") name = "pred_buy" full_name = "Claim equipment" - keybind_signal = COMSIG_KB_YAUTJA_BUTCHER - -/datum/keybinding/yautja/pred_buy/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - if(!isyautja(H)) - return - H.pred_buy() + keybind_signal = COMSIG_KB_YAUTJA_PRED_BUY /datum/keybinding/yautja/mark_panel hotkey_keys = list("Unbound") @@ -48,46 +39,12 @@ full_name = "Mark panel" keybind_signal = COMSIG_KB_YAUTJA_MARK_PANEL -/datum/keybinding/yautja/mark_panel/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - if(!isyautja(H)) - return - H.mark_panel() - /datum/keybinding/yautja/mark_for_hunt hotkey_keys = list("Unbound") classic_keys = list("Unbound") name = "mark_for_hunt" - full_name = "Mark for hunt" - keybind_signal = COMSIG_KB_YAUTJA_MARK_FOR_HUNT - -/datum/keybinding/yautja/mark_for_hunt/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - if(!isyautja(H)) - return - H.mark_for_hunt() - -/datum/keybinding/yautja/remove_from_hunt - hotkey_keys = list("Unbound") - classic_keys = list("Unbound") - name = "remove_from_hunt" - full_name = "Remove from hunt" - keybind_signal = COMSIG_KB_YAUTJA_REMOVE_FROM_HUNT - -/datum/keybinding/yautja/remove_from_hunt/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - if(!isyautja(H)) - return - H.remove_from_hunt() + full_name = "Toggle mark for hunt" + keybind_signal = COMSIG_KB_YAUTJA_TOGGLE_MARK_FOR_HUNT // BRACER SPECIFIC \\ @@ -168,22 +125,6 @@ full_name = "Toggle wristblades" keybind_signal = COMSIG_KB_YAUTJA_WRISTBLADES -/datum/keybinding/yautja/bracer_hunter/wristblades/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - - var/obj/item/clothing/gloves/yautja/hunter/gloves = H.gloves - if(istype(gloves)) - gloves.wristblades() - return TRUE - - var/obj/item/clothing/gloves/yautja/hunter/held = H.get_held_item() - if(istype(held)) - held.wristblades() - return TRUE - /datum/keybinding/yautja/bracer_hunter/track_gear hotkey_keys = list("Unbound") classic_keys = list("Unbound") @@ -214,22 +155,6 @@ full_name = "Toggle cloak" keybind_signal = COMSIG_KB_YAUTJA_CLOAKER -/datum/keybinding/yautja/bracer_hunter/cloaker/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - - var/obj/item/clothing/gloves/yautja/hunter/gloves = H.gloves - if(istype(gloves)) - gloves.cloaker() - return TRUE - - var/obj/item/clothing/gloves/yautja/hunter/held = H.get_held_item() - if(istype(held)) - held.cloaker() - return TRUE - /datum/keybinding/yautja/bracer_hunter/caster hotkey_keys = list("Unbound") classic_keys = list("Unbound") @@ -237,22 +162,6 @@ full_name = "Toggle plasma caster" keybind_signal = COMSIG_KB_YAUTJA_CASTER -/datum/keybinding/yautja/bracer_hunter/caster/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - - var/obj/item/clothing/gloves/yautja/hunter/gloves = H.gloves - if(istype(gloves)) - gloves.caster() - return TRUE - - var/obj/item/clothing/gloves/yautja/hunter/held = H.get_held_item() - if(istype(held)) - held.caster() - return TRUE - /datum/keybinding/yautja/bracer_hunter/change_explosion_type hotkey_keys = list("Unbound") classic_keys = list("Unbound") @@ -283,22 +192,6 @@ full_name = "Self-destruct" keybind_signal = COMSIG_KB_YAUTJA_ACTIVATE_SUICIDE -/datum/keybinding/yautja/bracer_hunter/activate_suicide/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - - var/obj/item/clothing/gloves/yautja/hunter/gloves = H.gloves - if(istype(gloves)) - gloves.activate_suicide() - return TRUE - - var/obj/item/clothing/gloves/yautja/hunter/held = H.get_held_item() - if(istype(held)) - held.activate_suicide() - return TRUE - /datum/keybinding/yautja/bracer_hunter/injectors hotkey_keys = list("Unbound") classic_keys = list("Unbound") @@ -306,21 +199,6 @@ full_name = "Create Stabilising Crystal" keybind_signal = COMSIG_KB_YAUTJA_INJECTORS -/datum/keybinding/yautja/bracer_hunter/injectors/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - - var/obj/item/clothing/gloves/yautja/hunter/gloves = H.gloves - if(istype(gloves)) - gloves.injectors() - return TRUE - - var/obj/item/clothing/gloves/yautja/hunter/held = H.get_held_item() - if(istype(held)) - held.injectors() - return TRUE /datum/keybinding/yautja/bracer_hunter/healing_capsule hotkey_keys = list("Unbound") classic_keys = list("Unbound") @@ -328,22 +206,6 @@ full_name = "Create Healing Capsule" keybind_signal = COMSIG_KB_YAUTJA_CAPSULE -/datum/keybinding/yautja/bracer_hunter/healing_capsule/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - - var/obj/item/clothing/gloves/yautja/hunter/gloves = H.gloves - if(istype(gloves)) - gloves.healing_capsule() - return TRUE - - var/obj/item/clothing/gloves/yautja/hunter/held = H.get_held_item() - if(istype(held)) - held.healing_capsule() - return TRUE - /datum/keybinding/yautja/bracer_hunter/call_disc hotkey_keys = list("Unbound") classic_keys = list("Unbound") @@ -351,22 +213,6 @@ full_name = "Call smart-disc" keybind_signal = COMSIG_KB_YAUTJA_CALL_DISC -/datum/keybinding/yautja/bracer_hunter/call_disc/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - - var/obj/item/clothing/gloves/yautja/hunter/gloves = H.gloves - if(istype(gloves)) - gloves.call_disc() - return TRUE - - var/obj/item/clothing/gloves/yautja/hunter/held = H.get_held_item() - if(istype(held)) - held.call_disc() - return TRUE - /datum/keybinding/yautja/bracer_hunter/remove_tracked_item hotkey_keys = list("Unbound") classic_keys = list("Unbound") @@ -420,22 +266,6 @@ full_name = "Yank combi-stick" keybind_signal = COMSIG_KB_YAUTJA_CALL_COMBI -/datum/keybinding/yautja/bracer_hunter/call_combi/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - - var/obj/item/clothing/gloves/yautja/hunter/gloves = H.gloves - if(istype(gloves)) - gloves.call_combi() - return TRUE - - var/obj/item/clothing/gloves/yautja/hunter/held = H.get_held_item() - if(istype(held)) - held.call_combi() - return TRUE - /datum/keybinding/yautja/bracer_hunter/translate hotkey_keys = list("Unbound") classic_keys = list("Unbound") @@ -443,22 +273,6 @@ full_name = "Translator" keybind_signal = COMSIG_KB_YAUTJA_TRANSLATE -/datum/keybinding/yautja/bracer_hunter/translate/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - - var/obj/item/clothing/gloves/yautja/hunter/gloves = H.gloves - if(istype(gloves)) - gloves.translate() - return TRUE - - var/obj/item/clothing/gloves/yautja/hunter/held = H.get_held_item() - if(istype(held)) - held.translate() - return TRUE - /datum/keybinding/yautja/bracer_hunter/bracername hotkey_keys = list("Unbound") classic_keys = list("Unbound") @@ -528,6 +342,13 @@ held.link_bracer() return TRUE +/datum/keybinding/yautja/bracer_hunter/control_falcon_drone + hotkey_keys = list("Unbound") + classic_keys = list("Unbound") + name = "control_falcon" + full_name = "Control falcon drone" + keybind_signal = COMSIG_KB_YAUTJA_CONTROL_FALCON + // Misc stuff - mask, teleporter \\ // mask @@ -545,32 +366,14 @@ classic_keys = list("Unbound") name = "toggle_zoom" full_name = "Toggle mask zoom" - keybind_signal = COMSIG_KB_YAUTJA_LINK_BRACER - -/datum/keybinding/yautja/mask/toggle_zoom/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - var/obj/item/clothing/mask/gas/yautja/mask = H.wear_mask - mask.toggle_zoom() - return TRUE + keybind_signal = COMSIG_KB_YAUTJA_MASK_TOGGLE_ZOOM /datum/keybinding/yautja/mask/togglesight hotkey_keys = list("Unbound") classic_keys = list("Unbound") name = "togglesight" full_name = "Toggle mask visors" - keybind_signal = COMSIG_KB_YAUTJA_LINK_BRACER - -/datum/keybinding/yautja/mask/togglesight/down(client/user) - . = ..() - if(.) - return - var/mob/living/carbon/human/H = user.mob - var/obj/item/clothing/mask/gas/yautja/mask = H.wear_mask - mask.togglesight() - return TRUE + keybind_signal = COMSIG_KB_YAUTJA_MASK_TOGGLESIGHT // teleporter @@ -594,3 +397,21 @@ var/mob/living/carbon/human/H = user.mob var/obj/item/device/yautja_teleporter/tele = locate(/obj/item/device/yautja_teleporter) in H.contents tele.add_tele_loc() + + +/datum/keybinding/yautja/fold_combi + hotkey_keys = list("Space") + classic_keys = list("Unbound") + name = "fold_combi" + full_name = "Collapse Combi-stick" + keybind_signal = COMSIG_KB_YAUTJA_FOLD_COMBISTICK + +/datum/keybinding/yautja/fold_combi/down(client/user) + . = ..() + if(.) + return + var/mob/living/carbon/human/human = user.mob + var/obj/item/weapon/yautja/combistick/held_item = human.get_held_item() + if(istype(held_item)) + held_item.fold_combistick() + return TRUE diff --git a/code/datums/langchat/langchat.dm b/code/datums/langchat/langchat.dm index d1a6adafa2f3..b82b03b51774 100644 --- a/code/datums/langchat/langchat.dm +++ b/code/datums/langchat/langchat.dm @@ -13,7 +13,6 @@ #define LANGCHAT_LONGEST_TEXT 64 #define LANGCHAT_WIDTH 96 -#define LANGCHAT_X_OFFSET -32 #define LANGCHAT_MAX_ALPHA 196 //pop defines @@ -48,6 +47,13 @@ M.client.images -= langchat_image langchat_listeners = null +/atom/proc/get_maxptext_x_offset(image/maptext_image) + return (world.icon_size / 2) - (maptext_image.maptext_width / 2) +/atom/movable/get_maxptext_x_offset(image/maptext_image) + return (bound_width / 2) - (maptext_image.maptext_width / 2) +/mob/get_maxptext_x_offset(image/maptext_image) + return (icon_size / 2) - (maptext_image.maptext_width / 2) + ///Creates the image if one does not exist, resets settings that are modified by speech procs. /atom/proc/langchat_make_image(override_color = null) if(!langchat_image) @@ -57,8 +63,8 @@ langchat_image.appearance_flags = NO_CLIENT_COLOR|KEEP_APART|RESET_COLOR|RESET_TRANSFORM langchat_image.maptext_y = langchat_height langchat_image.maptext_height = 64 - langchat_image.maptext_x = LANGCHAT_X_OFFSET langchat_image.maptext_y -= LANGCHAT_MESSAGE_POP_Y_SINK + langchat_image.maptext_x = get_maxptext_x_offset(langchat_image) langchat_image.pixel_y = 0 langchat_image.alpha = 0 @@ -103,6 +109,7 @@ langchat_image.maptext = text_to_display langchat_image.maptext_width = LANGCHAT_WIDTH + langchat_image.maptext_x = get_maxptext_x_offset(langchat_image) langchat_listeners = listeners for(var/mob/M in langchat_listeners) @@ -149,6 +156,7 @@ langchat_image.maptext = text_to_display langchat_image.maptext_width = LANGCHAT_WIDTH * 2 + langchat_image.maptext_x = get_maxptext_x_offset(langchat_image) langchat_listeners = listeners for(var/mob/M in langchat_listeners) diff --git a/code/datums/looping_sounds/_looping_sound.dm b/code/datums/looping_sounds/_looping_sound.dm index c6fc23c68eba..11ba15146430 100644 --- a/code/datums/looping_sounds/_looping_sound.dm +++ b/code/datums/looping_sounds/_looping_sound.dm @@ -37,6 +37,15 @@ /// Has the looping started yet? var/loop_started = FALSE + /** + * Let's you make a "loud" sound that "projects." IE you can hear this sound from a further distance away. + * Think of like an air raid siren. They're loud if you're close yeah... but you can hear them from mad far away, bruv + * with a longer "falloff distance." Fixes the extra_range stuff + */ + var/is_sound_projecting = FALSE + ///only applicable to is_sound_projecting: max range till sound volume starts dropping as distance increases + var/falloff_distance = 50 + /* // as of yet unused varen \\ /// How much the sound will be affected by falloff per tile. @@ -130,19 +139,18 @@ sound_to_play.channel = get_free_channel() sound_to_play.volume = volume_override || volume //Use volume as fallback if theres no override SEND_SOUND(parent, sound_to_play) - else - playsound( - parent, - sound_to_play, - volume, - vary, - extra_range//, - // falloff_exponent = falloff_exponent, - // pressure_affected = pressure_affected, - // ignore_walls = ignore_walls, - // falloff_distance = falloff_distance, - // use_reverb = use_reverb - ) + return + if (is_sound_projecting) + playsound(parent, sound_to_play, volume, vary, extra_range, VOLUME_SFX, 0, 0, falloff_distance) + return + + playsound( + parent, + sound_to_play, + volume, + vary, + extra_range + ) /// Returns the sound we should now be playing. /datum/looping_sound/proc/get_sound(_mid_sounds) diff --git a/code/datums/looping_sounds/misc_sounds.dm b/code/datums/looping_sounds/misc_sounds.dm new file mode 100644 index 000000000000..6411b3f51f4a --- /dev/null +++ b/code/datums/looping_sounds/misc_sounds.dm @@ -0,0 +1,3 @@ +/datum/looping_sound/looping_launch_announcement_alarm + mid_sounds = list('sound/vehicles/Dropships/single_alarm_brr_dropship_1.ogg' = 1) + start_sound = list('sound/vehicles/Dropships/single_alarm_brr_dropship_1.ogg' = 1) diff --git a/code/datums/map_config.dm b/code/datums/map_config.dm index c37bf802f12b..9bcf4d677b6e 100644 --- a/code/datums/map_config.dm +++ b/code/datums/map_config.dm @@ -31,6 +31,7 @@ var/shuttles = list() var/announce_text = "" + var/infection_announce_text = "" var/squads_max_num = 4 @@ -64,7 +65,7 @@ var/nightmare_path - /// If truthy this is config for a round overriden map: search for override maps in data/, instead of using a path in maps/ + /// If truthy this is config for a round overridden map: search for override maps in data/, instead of using a path in maps/ var/override_map /datum/map_config/New() @@ -86,12 +87,14 @@ /datum/equipment_preset/synth/survivor/janitor_synth, /datum/equipment_preset/synth/survivor/chef_synth, /datum/equipment_preset/synth/survivor/teacher_synth, + /datum/equipment_preset/synth/survivor/freelancer_synth, + /datum/equipment_preset/synth/survivor/trucker_synth, /datum/equipment_preset/synth/survivor/bartender_synth, /datum/equipment_preset/synth/survivor/detective_synth, /datum/equipment_preset/synth/survivor/cmb_synth, - /datum/equipment_preset/synth/survivor/security_synth, - /datum/equipment_preset/synth/survivor/protection_synth, - /datum/equipment_preset/synth/survivor/corporate_synth, + /datum/equipment_preset/synth/survivor/wy/security_synth, + /datum/equipment_preset/synth/survivor/wy/protection_synth, + /datum/equipment_preset/synth/survivor/wy/corporate_synth, /datum/equipment_preset/synth/survivor/radiation_synth, ) @@ -339,6 +342,9 @@ if(json["announce_text"]) announce_text = json["announce_text"] + if(json["infection_announce_text"]) + infection_announce_text = json["infection_announce_text"] + if(json["weather_holder"]) weather_holder = text2path(json["weather_holder"]) if(!weather_holder) diff --git a/code/datums/medal_awards.dm b/code/datums/medal_awards.dm index a7db6f7bd6e3..818d623033d2 100644 --- a/code/datums/medal_awards.dm +++ b/code/datums/medal_awards.dm @@ -11,6 +11,7 @@ GLOBAL_LIST_EMPTY(medal_awards) GLOBAL_LIST_EMPTY(jelly_awards) +GLOBAL_LIST_EMPTY(medal_recommendations) /datum/recipient_awards var/list/medal_names @@ -20,9 +21,10 @@ GLOBAL_LIST_EMPTY(jelly_awards) var/recipient_rank var/recipient_ckey var/mob/recipient_mob - var/list/giver_name // Actually key for xenos - var/list/giver_rank // Actually name for xenos + var/list/giver_name // Designation for xenos + var/list/giver_rank // "Name" for xenos var/list/giver_mob + var/list/giver_ckey /datum/recipient_awards/New() medal_names = list() @@ -32,7 +34,9 @@ GLOBAL_LIST_EMPTY(jelly_awards) giver_name = list() giver_rank = list() giver_mob = list() + giver_ckey = list() +GLOBAL_LIST_INIT(human_medals, list(MARINE_CONDUCT_MEDAL, MARINE_BRONZE_HEART_MEDAL, MARINE_VALOR_MEDAL, MARINE_HEROISM_MEDAL)) /proc/give_medal_award(medal_location, as_admin = FALSE) if(as_admin && !check_rights(R_ADMIN)) @@ -50,7 +54,7 @@ GLOBAL_LIST_EMPTY(jelly_awards) return FALSE // Pick a medal - var/medal_type = tgui_input_list(usr, "What type of medal do you want to award?", "Medal Type", list(MARINE_CONDUCT_MEDAL, MARINE_BRONZE_HEART_MEDAL, MARINE_VALOR_MEDAL, MARINE_HEROISM_MEDAL)) + var/medal_type = tgui_input_list(usr, "What type of medal do you want to award?", "Medal Type", GLOB.human_medals) if(!medal_type) return FALSE @@ -116,12 +120,13 @@ GLOBAL_LIST_EMPTY(jelly_awards) recipient_award.medal_names += medal_type recipient_award.medal_citations += citation recipient_award.posthumous += posthumous + recipient_award.giver_ckey += usr.ckey if(!as_admin) recipient_award.giver_rank += recipient_ranks[usr.real_name] // Currently not used in marine award message recipient_award.giver_name += usr.real_name // Currently not used in marine award message else - recipient_award.giver_rank += "([usr.ckey])" // Just because it'll be displayed in the panel + recipient_award.giver_rank += null recipient_award.giver_name += null // Create an actual medal item @@ -156,13 +161,105 @@ GLOBAL_LIST_EMPTY(jelly_awards) return TRUE -/proc/print_medal(mob/living/carbon/human/user, obj/printer) +/proc/give_medal_award_prefilled(medal_location, mob/giving_mob, chosen_recipient, recipient_rank, recipient_ckey, reason, _medal_type) + var/list/recipient_ranks = list() + for(var/datum/data/record/record in GLOB.data_core.general) + var/recipient_name = record.fields["name"] + recipient_ranks[recipient_name] = record.fields["rank"] + + if(!chosen_recipient) + return FALSE + + // Pick a medal + var/medal_type = _medal_type + if(!medal_type) + return FALSE + + // Write a citation + var/citation = strip_html(reason) + if(!citation) + return FALSE + + // Get mob information + var/posthumous = TRUE + var/mob/recipient_mob + var/found_other = FALSE + + for(var/mob/mob in GLOB.mob_list) + if(mob.real_name == chosen_recipient) + // Recipient: Check if they are dead, and get some info + // We might not get this info if gibbed, so we'd need to refactor again and find another way if we want stats always correct + if(isliving(mob) && mob.stat != DEAD) + posthumous = FALSE + recipient_mob = mob + if(found_other) + break + found_other = TRUE + if(!recipient_mob) + for(var/mob/mob in GLOB.dead_mob_list) + if(mob.real_name == chosen_recipient) + // Recipient: Check if they are dead?, and get some info + // We might not get this info if gibbed, so we'd need to refactor again and find another way if we want stats always correct + if(isliving(mob) && mob.stat != DEAD) + posthumous = FALSE + recipient_mob = mob + break + + // Create the recipient_award + if(!GLOB.medal_awards[chosen_recipient]) + GLOB.medal_awards[chosen_recipient] = new /datum/recipient_awards() + var/datum/recipient_awards/recipient_award = GLOB.medal_awards[chosen_recipient] + recipient_award.recipient_rank = recipient_rank + recipient_award.recipient_ckey = recipient_ckey + recipient_award.recipient_mob = recipient_mob + recipient_award.giver_mob += giving_mob + recipient_award.medal_names += medal_type + recipient_award.medal_citations += citation + recipient_award.posthumous += posthumous + recipient_award.giver_ckey += giving_mob.ckey + + recipient_award.giver_rank += recipient_ranks[giving_mob.real_name] // Currently not used in marine award message + recipient_award.giver_name += giving_mob.real_name // Currently not used in marine award message + + // Create an actual medal item + if(medal_location) + var/obj/item/clothing/accessory/medal/medal + switch(medal_type) + if(MARINE_CONDUCT_MEDAL) + medal = new /obj/item/clothing/accessory/medal/bronze/conduct(medal_location) + if(MARINE_BRONZE_HEART_MEDAL) + medal = new /obj/item/clothing/accessory/medal/bronze/heart(medal_location) + if(MARINE_VALOR_MEDAL) + medal = new /obj/item/clothing/accessory/medal/silver/valor(medal_location) + if(MARINE_HEROISM_MEDAL) + medal = new /obj/item/clothing/accessory/medal/gold/heroism(medal_location) + else + return FALSE + medal.recipient_name = chosen_recipient + medal.medal_citation = citation + medal.recipient_rank = recipient_rank + recipient_award.medal_items += medal + else + recipient_award.medal_items += null + + // Recipient: Add the medal to the player's stats + if(recipient_ckey) + var/datum/entity/player_entity/recipient_player = setup_player_entity(recipient_ckey) + if(recipient_player) + recipient_player.track_medal_earned(medal_type, recipient_mob, recipient_rank, citation, giving_mob) + + // Inform staff of success + message_admins("[key_name_admin(giving_mob)] awarded a [medal_type] to [chosen_recipient] for: \'[citation]\'.") + + return TRUE + +/proc/open_medal_panel(mob/living/carbon/human/user, obj/printer) var/obj/item/card/id/card = user.wear_id if(!card) to_chat(user, SPAN_WARNING("You must have an authenticated ID Card to award medals.")) return - if(!((card.paygrade in GLOB.co_paygrades) || (card.paygrade in GLOB.highcom_paygrades))) + if(!((card.paygrade in GLOB.co_paygrades) || (card.paygrade in GLOB.uscm_highcom_paygrades))) to_chat(user, SPAN_WARNING("Only a Senior Officer can award medals!")) return @@ -170,14 +267,15 @@ GLOBAL_LIST_EMPTY(jelly_awards) user.visible_message("ERROR: ID card not registered in USCM registry. Potential medal fraud detected.") return - var/real_owner_ref = card.registered_ref - - if(real_owner_ref != WEAKREF(user)) + if(!card.check_biometrics(user)) user.visible_message("ERROR: ID card not registered for [user.real_name] in USCM registry. Potential medal fraud detected.") return - if(give_medal_award(get_turf(printer))) - user.visible_message(SPAN_NOTICE("[printer] prints a medal.")) + GLOB.ic_medals_panel.user_locs[WEAKREF(user)] = WEAKREF(printer) + GLOB.ic_medals_panel.tgui_interact(user) + + +GLOBAL_LIST_INIT(xeno_medals, list(XENO_SLAUGHTER_MEDAL, XENO_RESILIENCE_MEDAL, XENO_SABOTAGE_MEDAL, XENO_PROLIFERATION_MEDAL, XENO_REJUVENATION_MEDAL)) /proc/give_jelly_award(datum/hive_status/hive, as_admin = FALSE) if(!hive) @@ -217,7 +315,7 @@ GLOBAL_LIST_EMPTY(jelly_awards) return FALSE // Pick a jelly - var/medal_type = tgui_input_list(usr, "What type of jelly do you want to award?", "Jelly Type", list(XENO_SLAUGHTER_MEDAL, XENO_RESILIENCE_MEDAL, XENO_SABOTAGE_MEDAL, XENO_PROLIFERATION_MEDAL, XENO_REJUVENATION_MEDAL), theme="hive_status") + var/medal_type = tgui_input_list(usr, "What type of jelly do you want to award?", "Jelly Type", GLOB.xeno_medals, theme="hive_status") if(!medal_type) return FALSE @@ -258,15 +356,21 @@ GLOBAL_LIST_EMPTY(jelly_awards) recipient_award.medal_names += medal_type recipient_award.medal_citations += citation recipient_award.posthumous += posthumous + recipient_award.giver_ckey += usr.ckey + if(!admin_attribution) recipient_award.giver_rank += usr.name - recipient_award.giver_name += usr.key + var/mob/living/carbon/xenomorph/giving_xeno = usr + if(istype(giving_xeno)) + recipient_award.giver_name += giving_xeno.full_designation + else + recipient_award.giver_name += null else if(admin_attribution == "none") recipient_award.giver_rank += null recipient_award.giver_name += null else recipient_award.giver_rank += admin_attribution - recipient_award.giver_name += null // If not null, rescinding it will take stats away from a mob with this key + recipient_award.giver_name += null recipient_award.medal_items += null // TODO: Xeno award item? @@ -337,6 +441,7 @@ GLOBAL_LIST_EMPTY(jelly_awards) recipient_award.giver_name.Cut(index, index + 1) recipient_award.giver_rank.Cut(index, index + 1) recipient_award.giver_mob.Cut(index, index + 1) + recipient_award.giver_ckey.Cut(index, index + 1) recipient_award.medal_items.Cut(index, index + 1) // Remove giver's stat @@ -353,3 +458,200 @@ GLOBAL_LIST_EMPTY(jelly_awards) message_admins("[key_name_admin(usr)] deleted [recipient_name]'s [medal_type] for: \'[citation]\'.") return TRUE + +/datum/medal_recommendation + var/recipient_rank + var/recipient_ckey + var/recipient_name + var/recommended_by_name + var/recommended_by_ckey + var/reason + var/recommended_by_rank + + +/proc/add_medal_recommendation(mob/recommendation_giver) + // Pick a marine + var/list/possible_recipients = list() + var/list/recipient_ranks = list() + for(var/datum/data/record/record in GLOB.data_core.general) + var/recipient_name = record.fields["name"] + if(recipient_name == recommendation_giver.real_name) + continue + recipient_ranks[recipient_name] = record.fields["rank"] + possible_recipients += recipient_name + var/chosen_recipient = tgui_input_list(recommendation_giver, "Who do you want to recommend a medal for?", "Medal Recommendation", possible_recipients) + if(!chosen_recipient) + return FALSE + + // Write a citation + var/reason = strip_html(tgui_input_text(recommendation_giver, "Why does this person deserve a medal?", "Medal Recommendation", null, MAX_PAPER_MESSAGE_LEN, TRUE), MAX_PAPER_MESSAGE_LEN) + if(!reason) + return FALSE + + // Get mob information + var/recipient_rank = recipient_ranks[chosen_recipient] + var/recipient_ckey + var/mob/recipient_mob + var/found_other = FALSE + + for(var/mob/mob in GLOB.mob_list) + if(mob.real_name == chosen_recipient) + // We might not get this info if gibbed, so we'd need to refactor again and find another way if we want stats always correct + recipient_ckey = mob.persistent_ckey + recipient_mob = mob + if(found_other) + break + found_other = TRUE + if(!recipient_mob) + for(var/mob/mob in GLOB.dead_mob_list) + if(mob.real_name == chosen_recipient) + // Recipient: Check if they are dead?, and get some info + // We might not get this info if gibbed, so we'd need to refactor again and find another way if we want stats always correct + recipient_ckey = mob.persistent_ckey + recipient_mob = mob + break + + // Create the recipient_award + var/datum/medal_recommendation/recommendation = new /datum/medal_recommendation() + GLOB.medal_recommendations += recommendation + + recommendation.recipient_rank = recipient_rank + recommendation.recipient_ckey = recipient_ckey + recommendation.recipient_name = recipient_mob.real_name + recommendation.recommended_by_name = recommendation_giver.real_name + recommendation.recommended_by_ckey = recommendation_giver.ckey + recommendation.recommended_by_rank = recipient_ranks[recommendation_giver.real_name] + + + recommendation.reason = reason + + return TRUE + + +GLOBAL_DATUM_INIT(ic_medals_panel, /datum/ic_medal_panel, new) + +/datum/ic_medal_panel + var/name = "Medals Panel" + var/list/datum/weakref/user_locs = list() + +/datum/ic_medal_panel/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "IcMedalsPanel", "Medals Panel") + ui.open() + ui.set_autoupdate(FALSE) + +/datum/ic_medal_panel/ui_state(mob/user) + var/datum/weakref/user_reference = WEAKREF(user) + var/datum/weakref/loc_reference = user_locs[user_reference] + if(istype(loc_reference?.resolve(), /obj/item)) + return GLOB.not_incapacitated_and_inventory_state + else + return GLOB.not_incapacitated_and_adjacent_state + +/datum/ic_medal_panel/ui_host(mob/user) + . = ..() + var/datum/weakref/user_reference = WEAKREF(user) + var/datum/weakref/loc_reference = user_locs[user_reference] + . = loc_reference?.resolve() + +/datum/ic_medal_panel/ui_data(mob/user) + var/list/data = list() + data["recommendations"] = list() + + for(var/datum/medal_recommendation/recommendation in GLOB.medal_recommendations) + var/recommendation_list = list() + + recommendation_list["rank"] = recommendation.recipient_rank + recommendation_list["name"] = recommendation.recipient_name + recommendation_list["ref"] = REF(recommendation) + recommendation_list["recommender_name"] = recommendation.recommended_by_name + recommendation_list["reason"] = recommendation.reason + recommendation_list["recommender_rank"] = recommendation.recommended_by_rank + + data["recommendations"] += list(recommendation_list) + return data + +/datum/ic_medal_panel/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + var/mob/living/carbon/human/user = usr + var/obj/item/card/id/card = user.wear_id + if(!card) + to_chat(user, SPAN_WARNING("You must have an authenticated ID Card to award medals.")) + return + + if(!((card.paygrade in GLOB.co_paygrades) || (card.paygrade in GLOB.uscm_highcom_paygrades))) + to_chat(user, SPAN_WARNING("Only a Senior Officer can award medals!")) + return + + if(!card.registered_ref) + user.visible_message("ERROR: ID card not registered in USCM registry. Potential medal fraud detected.") + return + + var/real_owner_ref = card.registered_ref + + if(real_owner_ref != WEAKREF(user)) + user.visible_message("ERROR: ID card not registered for [user.real_name] in USCM registry. Potential medal fraud detected.") + return + + var/datum/weakref/user_ref = WEAKREF(user) + var/datum/weakref/loc_ref = user_locs[user_ref] + var/atom/actual_loc = loc_ref?.resolve() + if(!actual_loc) + return + + switch(action) + if("grant_new_medal") + if(give_medal_award(get_turf(actual_loc))) + actual_loc.visible_message(SPAN_NOTICE("[actual_loc] prints a medal.")) + . = TRUE + + if("approve_medal") + var/recommendation_ref = params["ref"] + var/medal_type = params["medal_type"] + if(!(medal_type in GLOB.human_medals)) + return + var/datum/medal_recommendation/recommendation = locate(recommendation_ref) in GLOB.medal_recommendations + if(!recommendation) + return + if(recommendation.recipient_name == user.real_name) + to_chat(user, SPAN_WARNING("You cannot give medals to yourself!")) + return + + var/choice = tgui_alert(user, "Would you like to change the medal text?", "Medal Citation", list("Yes", "No")) + var/medal_citation = recommendation.reason + if(choice == "Yes") + medal_citation = strip_html(tgui_input_text(user, "What should the medal citation read?", "Medal Citation", null, MAX_PAPER_MESSAGE_LEN, TRUE), MAX_PAPER_MESSAGE_LEN) + + var/confirm_choice = tgui_alert(user, "Are you sure you want to give a medal to [recommendation.recipient_name]?", "Medal Confirmation", list("Yes", "No")) + if(confirm_choice != "Yes") + return + + if(give_medal_award_prefilled(get_turf(actual_loc), user, recommendation.recipient_name, recommendation.recipient_rank, recommendation.recipient_ckey, medal_citation, medal_type, recommendation.recommended_by_ckey, recommendation.recommended_by_name)) + GLOB.medal_recommendations -= recommendation + qdel(recommendation) + user.visible_message(SPAN_NOTICE("[actual_loc] prints a medal.")) + . = TRUE + + if("deny_medal") + var/recommendation_ref = params["ref"] + var/datum/medal_recommendation/recommendation = locate(recommendation_ref) in GLOB.medal_recommendations + if(!recommendation) + return + var/confirm = tgui_alert(user, "Are you sure you want to deny this medal recommendation?", "Medal Confirmation", list("Yes", "No")) + if(confirm != "Yes") + return + GLOB.medal_recommendations -= recommendation + qdel(recommendation) + . = TRUE + +/datum/ic_medal_panel/ui_close(mob/user) + . = ..() + user_locs -= WEAKREF(user) + +/datum/ic_medal_panel/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/medal) + ) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 90df42f7d12a..945f4d0a5351 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -29,9 +29,14 @@ research_objective_interface = new() /datum/mind/Destroy() + QDEL_NULL(initial_account) QDEL_NULL(objective_memory) QDEL_NULL(objective_interface) QDEL_NULL(research_objective_interface) + current = null + original = null + ghost_mob = null + player_entity = null return ..() /datum/mind/proc/transfer_to(mob/living/new_character, force = FALSE) @@ -39,9 +44,11 @@ msg_admin_niche("[key]/[ckey] has tried to transfer to deleted [new_character].") return + var/mob/old_current = current if(current) current.mind = null //remove ourself from our old body's mind variable - nanomanager.user_transferred(current, new_character) // transfer active NanoUI instances to new user + SSnano.nanomanager.user_transferred(current, new_character) // transfer active NanoUI instances to new user + SStgui.on_transfer(current, new_character) // and active TGUI instances if(key) if(new_character.key != key) @@ -61,7 +68,7 @@ SSround_recording.recorder.update_key(new_character) if(new_character.client) new_character.client.init_verbs() - new_character.client.change_view(world_view_size) //reset view range to default. + new_character.client.change_view(GLOB.world_view_size) //reset view range to default. new_character.client.pixel_x = 0 new_character.client.pixel_y = 0 if(usr && usr.open_uis) @@ -71,6 +78,9 @@ continue player_entity = setup_player_entity(ckey) + SEND_SIGNAL(src, COMSIG_MIND_TRANSFERRED, old_current) + SEND_SIGNAL(new_character, COMSIG_MOB_NEW_MIND, current.client) + new_character.refresh_huds(current) //inherit the HUDs from the old body new_character.aghosted = FALSE //reset aghost and away timer new_character.away_timer = 0 diff --git a/code/datums/mob_hud.dm b/code/datums/mob_hud.dm index c1f67e93a53c..778ec2b75a36 100644 --- a/code/datums/mob_hud.dm +++ b/code/datums/mob_hud.dm @@ -1,7 +1,7 @@ /* HUD DATUMS */ //GLOBAL HUD LIST -var/list/datum/mob_hud/huds = list( +GLOBAL_LIST_INIT_TYPED(huds, /datum/mob_hud, list( MOB_HUD_SECURITY_BASIC = new /datum/mob_hud/security/basic(), MOB_HUD_SECURITY_ADVANCED = new /datum/mob_hud/security/advanced(), MOB_HUD_MEDICAL_BASIC = new /datum/mob_hud/medical/basic(), @@ -19,7 +19,7 @@ var/list/datum/mob_hud/huds = list( MOB_HUD_FACTION_PMC = new /datum/mob_hud/faction/pmc(), MOB_HUD_HUNTER = new /datum/mob_hud/hunter_hud(), MOB_HUD_HUNTER_CLAN = new /datum/mob_hud/hunter_clan() - ) + )) /datum/mob_hud var/list/mob/hudmobs = list() //list of all mobs which display this hud @@ -30,10 +30,16 @@ var/list/datum/mob_hud/huds = list( // Stop displaying a HUD to a specific person // (took off medical glasses) -/datum/mob_hud/proc/remove_hud_from(mob/user) +/datum/mob_hud/proc/remove_hud_from(mob/user, source) + if(length(hudusers[user]) && (source in hudusers[user])) + hudusers[user] -= source + if(length(hudusers[user])) + return FALSE for(var/mob/target in hudmobs) remove_from_single_hud(user, target) + hudusers -= user + return TRUE // Stop rendering a HUD on a target // "unenroll" them so to speak @@ -53,8 +59,24 @@ var/list/datum/mob_hud/huds = list( user.client.images -= target.clone.hud_list[i] // Allow user to view a HUD (putting on medical glasses) -/datum/mob_hud/proc/add_hud_to(mob/user) +/datum/mob_hud/proc/add_hud_to(mob/user, source) hudusers |= user + if(hudusers[user]) + hudusers[user] |= list(source) + else + hudusers[user] += list(source) + + for(var/mob/target in hudmobs) + add_to_single_hud(user, target) + +/// Refreshes the HUD, adding user and sources if missing and then calls to add the HUD +/datum/mob_hud/proc/refresh_hud(mob/user, list/source) + hudusers |= user + if(hudusers[user]) + hudusers[user] |= source + else + hudusers[user] += source + for(var/mob/target in hudmobs) add_to_single_hud(user, target) @@ -196,17 +218,17 @@ var/list/datum/mob_hud/huds = list( return /mob/hologram/queen/add_to_all_mob_huds() - var/datum/mob_hud/hud = huds[MOB_HUD_XENO_STATUS] + var/datum/mob_hud/hud = GLOB.huds[MOB_HUD_XENO_STATUS] hud.add_to_hud(src) /mob/living/carbon/human/add_to_all_mob_huds() - for(var/datum/mob_hud/hud in huds) + for(var/datum/mob_hud/hud in GLOB.huds) if(istype(hud, /datum/mob_hud/xeno)) //this one is xeno only continue hud.add_to_hud(src) /mob/living/carbon/xenomorph/add_to_all_mob_huds() - for(var/datum/mob_hud/hud in huds) + for(var/datum/mob_hud/hud in GLOB.huds) if(!istype(hud, /datum/mob_hud/xeno)) continue hud.add_to_hud(src) @@ -216,46 +238,40 @@ var/list/datum/mob_hud/huds = list( return /mob/hologram/queen/remove_from_all_mob_huds() - var/datum/mob_hud/hud = huds[MOB_HUD_XENO_STATUS] + var/datum/mob_hud/hud = GLOB.huds[MOB_HUD_XENO_STATUS] hud.remove_from_hud(src) /mob/living/carbon/human/remove_from_all_mob_huds() - for(var/datum/mob_hud/hud in huds) + for(var/datum/mob_hud/hud in GLOB.huds) if(istype(hud, /datum/mob_hud/xeno)) continue hud.remove_from_hud(src) /mob/living/carbon/xenomorph/remove_from_all_mob_huds() - for(var/datum/mob_hud/hud in huds) + for(var/datum/mob_hud/hud in GLOB.huds) if(istype(hud, /datum/mob_hud/xeno)) hud.remove_from_hud(src) - hud.remove_hud_from(src) + hud.remove_hud_from(src, src) else if (istype(hud, /datum/mob_hud/xeno_infection)) - hud.remove_hud_from(src) + hud.remove_hud_from(src, src) if (xeno_hostile_hud) xeno_hostile_hud = FALSE - var/datum/mob_hud/hostile_hud = huds[MOB_HUD_XENO_HOSTILE] - hostile_hud.remove_hud_from(src) + var/datum/mob_hud/hostile_hud = GLOB.huds[MOB_HUD_XENO_HOSTILE] + hostile_hud.remove_hud_from(src, src) /mob/proc/refresh_huds(mob/source_mob) var/mob/M = source_mob ? source_mob : src - for(var/datum/mob_hud/hud in huds) + for(var/datum/mob_hud/hud in GLOB.huds) if(M in hud.hudusers) - readd_hud(hud) - -/mob/proc/readd_hud(datum/mob_hud/hud) - hud.add_hud_to(src) - - - + hud.refresh_hud(src, hud.hudusers[M]) //Medical HUDs //called when a human changes suit sensors /mob/living/carbon/human/proc/update_suit_sensors() - var/datum/mob_hud/medical/basic/B = huds[MOB_HUD_MEDICAL_BASIC] + var/datum/mob_hud/medical/basic/B = GLOB.huds[MOB_HUD_MEDICAL_BASIC] B.update_suit_sensors(src) //called when a human changes health @@ -265,6 +281,12 @@ var/list/datum/mob_hud/huds = list( return /mob/living/carbon/xenomorph/med_hud_set_health() + if(QDELETED(src)) + return + + if(!(HEALTH_HUD_XENO in hud_list)) + CRASH("hud_list lacks HEALTH_HUD_XENO despite not being deleted in med_hud_set_health()") + var/image/holder = hud_list[HEALTH_HUD_XENO] var/health_hud_type = "xenohealth" @@ -441,9 +463,9 @@ var/list/datum/mob_hud/huds = list( holder2_set = 1 return - holder.icon_state = "huddead" + holder.icon_state = HAS_TRAIT(src, TRAIT_HARDCORE) || MODE_HAS_TOGGLEABLE_FLAG(MODE_HARDCORE_PERMA) ? "hudhcdead" : "huddead" if(!holder2_set) - holder2.icon_state = "huddead" + holder2.icon_state = holder.icon_state holder3.icon_state = "huddead" holder2_set = 1 @@ -648,11 +670,11 @@ var/list/datum/mob_hud/huds = list( /mob/proc/hud_set_hunter() return -var/global/image/hud_icon_hunter_gear -var/global/image/hud_icon_hunter_hunted -var/global/image/hud_icon_hunter_dishonored -var/global/image/hud_icon_hunter_honored -var/global/image/hud_icon_hunter_thralled +GLOBAL_DATUM(hud_icon_hunter_gear, /image) +GLOBAL_DATUM(hud_icon_hunter_hunted, /image) +GLOBAL_DATUM(hud_icon_hunter_dishonored, /image) +GLOBAL_DATUM(hud_icon_hunter_honored, /image) +GLOBAL_DATUM(hud_icon_hunter_thralled, /image) /mob/living/carbon/hud_set_hunter() @@ -660,27 +682,27 @@ var/global/image/hud_icon_hunter_thralled holder.icon_state = "hudblank" holder.overlays.Cut() if(hunter_data.hunted) - if(!hud_icon_hunter_hunted) - hud_icon_hunter_hunted = image('icons/mob/hud/hud_yautja.dmi', src, "hunter_hunted") - holder.overlays += hud_icon_hunter_hunted + if(!GLOB.hud_icon_hunter_hunted) + GLOB.hud_icon_hunter_hunted = image('icons/mob/hud/hud_yautja.dmi', src, "hunter_hunted") + holder.overlays += GLOB.hud_icon_hunter_hunted if(hunter_data.dishonored) - if(!hud_icon_hunter_dishonored) - hud_icon_hunter_dishonored = image('icons/mob/hud/hud_yautja.dmi', src, "hunter_dishonored") - holder.overlays += hud_icon_hunter_dishonored + if(!GLOB.hud_icon_hunter_dishonored) + GLOB.hud_icon_hunter_dishonored = image('icons/mob/hud/hud_yautja.dmi', src, "hunter_dishonored") + holder.overlays += GLOB.hud_icon_hunter_dishonored else if(hunter_data.honored) - if(!hud_icon_hunter_honored) - hud_icon_hunter_honored = image('icons/mob/hud/hud_yautja.dmi', src, "hunter_honored") - holder.overlays += hud_icon_hunter_honored + if(!GLOB.hud_icon_hunter_honored) + GLOB.hud_icon_hunter_honored = image('icons/mob/hud/hud_yautja.dmi', src, "hunter_honored") + holder.overlays += GLOB.hud_icon_hunter_honored if(hunter_data.thralled) - if(!hud_icon_hunter_thralled) - hud_icon_hunter_thralled = image('icons/mob/hud/hud_yautja.dmi', src, "hunter_thralled") - holder.overlays += hud_icon_hunter_thralled + if(!GLOB.hud_icon_hunter_thralled) + GLOB.hud_icon_hunter_thralled = image('icons/mob/hud/hud_yautja.dmi', src, "hunter_thralled") + holder.overlays += GLOB.hud_icon_hunter_thralled else if(hunter_data.gear) - if(!hud_icon_hunter_gear) - hud_icon_hunter_gear = image('icons/mob/hud/hud_yautja.dmi', src, "hunter_gear") - holder.overlays += hud_icon_hunter_gear + if(!GLOB.hud_icon_hunter_gear) + GLOB.hud_icon_hunter_gear = image('icons/mob/hud/hud_yautja.dmi', src, "hunter_gear") + holder.overlays += GLOB.hud_icon_hunter_gear hud_list[HUNTER_HUD] = holder @@ -690,18 +712,18 @@ var/global/image/hud_icon_hunter_thralled holder.overlays.Cut() holder.pixel_x = -18 if(hunter_data.hunted) - if(!hud_icon_hunter_hunted) - hud_icon_hunter_hunted = image('icons/mob/hud/hud_yautja.dmi', src, "hunter_hunted") - holder.overlays += hud_icon_hunter_hunted + if(!GLOB.hud_icon_hunter_hunted) + GLOB.hud_icon_hunter_hunted = image('icons/mob/hud/hud_yautja.dmi', src, "hunter_hunted") + holder.overlays += GLOB.hud_icon_hunter_hunted if(hunter_data.dishonored) - if(!hud_icon_hunter_dishonored) - hud_icon_hunter_dishonored = image('icons/mob/hud/hud_yautja.dmi', src, "hunter_dishonored") - holder.overlays += hud_icon_hunter_dishonored + if(!GLOB.hud_icon_hunter_dishonored) + GLOB.hud_icon_hunter_dishonored = image('icons/mob/hud/hud_yautja.dmi', src, "hunter_dishonored") + holder.overlays += GLOB.hud_icon_hunter_dishonored else if(hunter_data.honored) - if(!hud_icon_hunter_honored) - hud_icon_hunter_honored = image('icons/mob/hud/hud_yautja.dmi', src, "hunter_honored") - holder.overlays += hud_icon_hunter_honored + if(!GLOB.hud_icon_hunter_honored) + GLOB.hud_icon_hunter_honored = image('icons/mob/hud/hud_yautja.dmi', src, "hunter_honored") + holder.overlays += GLOB.hud_icon_hunter_honored hud_list[HUNTER_HUD] = holder @@ -709,26 +731,26 @@ var/global/image/hud_icon_hunter_thralled /mob/proc/hud_set_order() return -var/global/image/hud_icon_hudmove -var/global/image/hud_icon_hudhold -var/global/image/hud_icon_hudfocus +GLOBAL_DATUM(hud_icon_hudmove, /image) +GLOBAL_DATUM(hud_icon_hudhold, /image) +GLOBAL_DATUM(hud_icon_hudfocus, /image) // ORDER HUD /mob/living/carbon/human/hud_set_order() var/image/holder = hud_list[ORDER_HUD] holder.icon_state = "hudblank" holder.overlays.Cut() if(mobility_aura) - if(!hud_icon_hudmove) - hud_icon_hudmove = image('icons/mob/hud/marine_hud.dmi', src, "hudmove") - holder.overlays += hud_icon_hudmove + if(!GLOB.hud_icon_hudmove) + GLOB.hud_icon_hudmove = image('icons/mob/hud/marine_hud.dmi', src, "hudmove") + holder.overlays += GLOB.hud_icon_hudmove if(protection_aura) - if(!hud_icon_hudhold) - hud_icon_hudhold = image('icons/mob/hud/marine_hud.dmi', src, "hudhold") - holder.overlays += hud_icon_hudhold + if(!GLOB.hud_icon_hudhold) + GLOB.hud_icon_hudhold = image('icons/mob/hud/marine_hud.dmi', src, "hudhold") + holder.overlays += GLOB.hud_icon_hudhold if(marksman_aura) - if(!hud_icon_hudfocus) - hud_icon_hudfocus = image('icons/mob/hud/marine_hud.dmi', src, "hudfocus") - holder.overlays += hud_icon_hudfocus + if(!GLOB.hud_icon_hudfocus) + GLOB.hud_icon_hudfocus = image('icons/mob/hud/marine_hud.dmi', src, "hudfocus") + holder.overlays += GLOB.hud_icon_hudfocus hud_list[ORDER_HUD] = holder @@ -779,8 +801,6 @@ var/global/image/hud_icon_hudfocus if (tag_found) tag_holder.overlays += image('icons/mob/hud/hud.dmi', src, "prae_tag") - // Hacky, but works. Currently effects are hard to make with precise timings - var/freeze_found = frozen - + var/freeze_found = HAS_TRAIT(src, TRAIT_IMMOBILIZED) && body_position == STANDING_UP && !buckled // Eligible targets are unable to move but can stand and aren't buckled (eg nested) - This is to convey that they are temporarily unable to move if (freeze_found) freeze_holder.overlays += image('icons/mob/hud/hud.dmi', src, "xeno_freeze") diff --git a/code/datums/modules.dm b/code/datums/modules.dm deleted file mode 100644 index 4dd47497ffcc..000000000000 --- a/code/datums/modules.dm +++ /dev/null @@ -1,62 +0,0 @@ -// module datum. -// this is per-object instance, and shows the condition of the modules in the object -// actual modules needed is referenced through modulestypes and the object type - -/datum/module - var/status // bits set if working, 0 if broken - var/installed // bits set if installed, 0 if missing - -// moduletypes datum -// this is per-object type, and shows the modules needed for a type of object - -/datum/moduletypes - var/list/modcount = list() // assoc list of the count of modules for a type - - -var/list/modules = list( // global associative list - /obj/structure/machinery/power/apc = "card_reader,power_control,id_auth,cell_power,cell_charge") - - -/datum/module/New(obj/O) - - var/type = O.type // the type of the creating object - - var/mneed = mods.inmodlist(type) // find if this type has modules defined - - if(!mneed) // not found in module list? - qdel(src) // delete self, thus ending proc - - var/needed = mods.getbitmask(type) // get a bitmask for the number of modules in this object - status = needed - installed = needed - -/datum/moduletypes/proc/addmod(type, modtextlist) - modules += type // index by type text - modules[type] = modtextlist - -/datum/moduletypes/proc/inmodlist(type) - return type in modules - -/datum/moduletypes/proc/getbitmask(type) - var/count = modcount[type] - if(count) - return 2**count-1 - - var/modtext = modules[type] - var/num = 1 - var/pos = 1 - - while(1) - pos = findtext(modtext, ",", pos, 0) - if(!pos) - break - else - pos++ - num++ - - modcount += type - modcount[type] = num - - return 2**num-1 - - diff --git a/code/datums/origin/origin.dm b/code/datums/origin/origin.dm index 4bbd8b6505b5..46027a49941a 100644 --- a/code/datums/origin/origin.dm +++ b/code/datums/origin/origin.dm @@ -3,7 +3,7 @@ var/desc = "You were born somewhere, someplace. The area is known for doing things, you think." /datum/origin/proc/generate_human_name(gender = MALE) - return pick(gender == MALE ? first_names_male : first_names_female) + " " + pick(last_names) + return pick(gender == MALE ? GLOB.first_names_male : GLOB.first_names_female) + " " + pick(GLOB.last_names) /// Return null if the name is correct, otherwise return a string containing the error message /datum/origin/proc/validate_name(name_to_check) diff --git a/code/datums/origin/upp.dm b/code/datums/origin/upp.dm index f684410d59bf..8346657c5020 100644 --- a/code/datums/origin/upp.dm +++ b/code/datums/origin/upp.dm @@ -10,16 +10,16 @@ if(prob(40)) first_name = "[capitalize(randomly_generate_chinese_word(1))]" else - first_name = "[pick(first_names_male_upp)]" + first_name = "[pick(GLOB.first_names_male_upp)]" else if(prob(40)) first_name = "[capitalize(randomly_generate_chinese_word(1))]" else - first_name = "[pick(first_names_female_upp)]" + first_name = "[pick(GLOB.first_names_female_upp)]" if(prob(35)) last_name = "[capitalize(randomly_generate_chinese_word(pick(20;1, 80;2)))]" else - last_name = "[pick(last_names_upp)]" + last_name = "[pick(GLOB.last_names_upp)]" return first_name + " " + last_name diff --git a/code/datums/origin/uscm.dm b/code/datums/origin/uscm.dm index 8021ed3fd3a8..9608537bdf3f 100644 --- a/code/datums/origin/uscm.dm +++ b/code/datums/origin/uscm.dm @@ -28,7 +28,7 @@ desc = "You were a product of an experimental military programme that sought to breed the perfect supersoldier. In some aspects, they've succeeded." /datum/origin/uscm/aw/generate_human_name(gender = MALE) - return pick(gender == MALE ? first_names_male : first_names_female) + " A.W. " + pick(weapon_surnames) + return pick(gender == MALE ? GLOB.first_names_male : GLOB.first_names_female) + " A.W. " + pick(GLOB.weapon_surnames) /datum/origin/uscm/aw/validate_name(name_to_check) if(!findtext(name_to_check, "A.W. ")) diff --git a/code/datums/paygrades/factions/civillian/civilian.dm b/code/datums/paygrades/factions/civillian/civilian.dm deleted file mode 100644 index 2c2aa5feac1c..000000000000 --- a/code/datums/paygrades/factions/civillian/civilian.dm +++ /dev/null @@ -1,30 +0,0 @@ -/datum/paygrade/civilian - name = "Civilian Paygrade" - pay_multiplier = 0.5 // civvies are poor - -/datum/paygrade/civilian/civilian - paygrade = "C" - name = "Civilian" - -/datum/paygrade/civilian/nurse - paygrade = "CN" - name = "Nurse" - prefix = "Nrs." - -/datum/paygrade/civilian/doctor - paygrade = "CD" - name = "Doctor" - prefix = "Dr." - pay_multiplier = 0.75 - -/datum/paygrade/civilian/professor - paygrade = "CCMO" - name = "Professor" - prefix = "Prof." - pay_multiplier = 1 - -/datum/paygrade/civillian/representative - paygrade = "CR" - name = "Representative" - prefix = "Rep." - pay_multiplier = 1 diff --git a/code/datums/paygrades/factions/other/civilian.dm b/code/datums/paygrades/factions/other/civilian.dm new file mode 100644 index 000000000000..95213542f33b --- /dev/null +++ b/code/datums/paygrades/factions/other/civilian.dm @@ -0,0 +1,55 @@ +/datum/paygrade/civilian + name = "Civilian Paygrade" + pay_multiplier = 0.5 // civvies are poor + +/datum/paygrade/civilian/civilian + paygrade = PAY_SHORT_CIV + name = "Civilian" + prefix = "C" + +/datum/paygrade/civilian/nurse + paygrade = PAY_SHORT_CNUR + name = "Nurse" + prefix = "Nrs." + +/datum/paygrade/civilian/doctor + paygrade = PAY_SHORT_CDOC + name = "Doctor" + prefix = "Dr." + pay_multiplier = 0.75 + +/datum/paygrade/civilian/professor + paygrade = PAY_SHORT_CCMO + name = "Professor" + prefix = "Prof." + pay_multiplier = 1 + officer_grade = GRADE_OFFICER + +/datum/paygrade/civillian/representative + paygrade = PAY_SHORT_CREP + name = "Representative" + prefix = "Rep." + pay_multiplier = 1 + +/datum/paygrade/civillian/officer + paygrade = PAY_SHORT_CPO + name = "Officer" + prefix = "Off." + pay_multiplier = 0.66 + +/datum/paygrade/civillian/officer/senior + paygrade = PAY_SHORT_CSPO + name = "Senior Officer" + prefix = "Sr. Off." + pay_multiplier = 0.8 + officer_grade = GRADE_OFFICER + +/datum/paygrade/civilian/rebel + paygrade = PAY_SHORT_REB + name = "Rebel" + +/datum/paygrade/civilian/rebel/leader + paygrade = PAY_SHORT_REBC + name = "Rebel Commander" + prefix = "CMDR." + officer_grade = GRADE_OFFICER diff --git a/code/datums/paygrades/factions/other/cmb.dm b/code/datums/paygrades/factions/other/cmb.dm index a4b656d8692d..88af3f9ef78c 100644 --- a/code/datums/paygrades/factions/other/cmb.dm +++ b/code/datums/paygrades/factions/other/cmb.dm @@ -3,78 +3,30 @@ pay_multiplier = 1.4 // Government work. Nice benefits. /datum/paygrade/cmb/standard - paygrade = "GS-9" + paygrade = PAY_SHORT_CMBD name = "CMB Deputy" prefix = "Dep." /datum/paygrade/cmb/leader - paygrade = "GS-13" + paygrade = PAY_SHORT_CMBM name = "CMB Marshal" prefix = "Marshal" + officer_grade = GRADE_OFFICER /datum/paygrade/cmb/syn - paygrade = "GS-C.9" + paygrade = PAY_SHORT_CMBS name = "CMB Investigative Synthetic" -/datum/paygrade/cmb/liaison - paygrade = "GS-6" +/datum/paygrade/cmb/icc + paygrade = PAY_SHORT_ICCA + name = "Interstellar Commerce Commission Agent" + prefix = "Agent" + +/datum/paygrade/cmb/icc/liaison + paygrade = PAY_SHORT_ICCL name = "Interstellar Commerce Commission Corporate Liaison" prefix = "Exec." /datum/paygrade/cmb/observer - paygrade = "GS-3" + paygrade = PAY_SHORT_IHRO name = "Interstellar Human Rights Observer" -/datum/paygrade/marine - name = "Marine Paygrade" - rank_pin = /obj/item/clothing/accessory/ranks/marine - pay_multiplier = 1 - -// ENLISTED PAYGRADES - -/datum/paygrade/marine/e1 - paygrade = "ME1" - name = "Private" - prefix = "PVT" - rank_pin = /obj/item/clothing/accessory/ranks/marine/e1 - ranking = 0 - pay_multiplier = 0.8 - -/datum/paygrade/marine/e2 - paygrade = "ME2" - name = "Private First Class" - prefix = "PFC" - rank_pin = /obj/item/clothing/accessory/ranks/marine/e2 - ranking = 1 - pay_multiplier = 1 // the default. - -/datum/paygrade/marine/e3 - paygrade = "ME3" - name = "Lance Corporal" - prefix = "LCpl" - rank_pin = /obj/item/clothing/accessory/ranks/marine/e3 - ranking = 2 - pay_multiplier = 1.4 - -/datum/paygrade/marine/e4 - paygrade = "ME4" - name = "Corporal" - prefix = "Cpl" - rank_pin = /obj/item/clothing/accessory/ranks/marine/e4 - ranking = 3 - pay_multiplier = 1.6 - -/datum/paygrade/marine/e5 - paygrade = "ME5" - name = "Sergeant" - prefix = "Sgt" - rank_pin = /obj/item/clothing/accessory/ranks/marine/e5 - ranking = 4 - pay_multiplier = 1.8 - -/datum/paygrade/marine/e6 - paygrade = "ME6" - name = "Staff Sergeant" - prefix = "SSgt" - rank_pin = /obj/item/clothing/accessory/ranks/marine/e6 - ranking = 5 - pay_multiplier = 2 diff --git a/code/datums/paygrades/factions/other/contractors.dm b/code/datums/paygrades/factions/other/contractors.dm index c83a5cb10870..a63e46bb47f2 100644 --- a/code/datums/paygrades/factions/other/contractors.dm +++ b/code/datums/paygrades/factions/other/contractors.dm @@ -1,38 +1,39 @@ /datum/paygrade/contractors name = "Contractor Paygrade" + fprefix = "VAI" pay_multiplier = 1.5 /datum/paygrade/contractors/standard - paygrade = "VAI" + paygrade = PAY_SHORT_VAI_S name = "VAI Mercenary" - prefix = "VAI" + prefix = "Merc." /datum/paygrade/contractors/med - paygrade = "VAI-M" + paygrade = PAY_SHORT_VAI_M name = "VAI Medical Specialist" - prefix = "VAI MED" + prefix = "Med." pay_multiplier = 1.75 /datum/paygrade/contractors/mg - paygrade = "VAI-G" + paygrade = PAY_SHORT_VAI_G name = "VAI Machinegunner" - prefix = "VAI MG" + prefix = "MG." pay_multiplier = 1.75 /datum/paygrade/contractors/engi - paygrade = "VAI-E" + paygrade = PAY_SHORT_VAI_E name = "VAI Engineering Specialist" - prefix = "VAI ENG" + prefix = "Eng." pay_multiplier = 1.75 /datum/paygrade/contractors/syn - paygrade = "VAI-S" + paygrade = PAY_SHORT_VAI_SN name = "VAI Synthetic" - prefix = "VAI Syn" pay_multiplier = 0 /datum/paygrade/contractors/lead - paygrade = "VAI-L" + paygrade = PAY_SHORT_VAI_L name = "VAI Team Leader" - prefix = "VAI TL" + prefix = "TL." pay_multiplier = 2.25 + officer_grade = GRADE_OFFICER diff --git a/code/datums/paygrades/factions/other/dutch_dozen.dm b/code/datums/paygrades/factions/other/dutch_dozen.dm index 9b8bd7e4f8c4..2927d6b80d29 100644 --- a/code/datums/paygrades/factions/other/dutch_dozen.dm +++ b/code/datums/paygrades/factions/other/dutch_dozen.dm @@ -1,33 +1,34 @@ /datum/paygrade/dutch name = "Dutch Paygrade" pay_multiplier = 5 + fprefix = "DTC." /datum/paygrade/dutch/standard - paygrade = "DTC" + paygrade = PAY_SHORT_DTC name = "Dutch's Dozen Standard Mercenary" - prefix = "DTC." /datum/paygrade/dutch/medic - paygrade = "DTCM" + paygrade = PAY_SHORT_DTCM name = "Dutch's Dozen Medic" - prefix = "DTC MED." + prefix = "MED." pay_multiplier = 6 /datum/paygrade/dutch/specialist_flamer - paygrade = "DTCF" + paygrade = PAY_SHORT_DTCF name = "Dutch's Dozen Flamethrower Specialist" - prefix = "DTC SPC." + prefix = "SPC." pay_multiplier = 6 /datum/paygrade/dutch/specialist_minigunner - paygrade = "DTCMG" - name = "Dutch's Dozen Medic" - prefix = "DTC SPC." + paygrade = PAY_SHORT_DTCMG + name = "Dutch's Dozen Machinegunner" + prefix = "SPC." pay_multiplier = 6 /datum/paygrade/dutch/arnold - paygrade = "ARN" - name = "Arnold" - prefix = "DTC LDR." + paygrade = PAY_SHORT_DTCA + name = "Major" + prefix = "LDR." pay_multiplier = 9 + officer_grade = GRADE_OFFICER diff --git a/code/datums/paygrades/factions/other/freelancer.dm b/code/datums/paygrades/factions/other/freelancer.dm index 6de82b5bb344..2d7db7b0e042 100644 --- a/code/datums/paygrades/factions/other/freelancer.dm +++ b/code/datums/paygrades/factions/other/freelancer.dm @@ -1,49 +1,53 @@ /datum/paygrade/freelancer name = "Freelancer Paygrade" + fprefix = "Frl." pay_multiplier = 0.75 //these are shitty mercs. /datum/paygrade/freelancer/standard - paygrade = "Freelancer Standard" - name = "Freelancer Standard" + name = "Freelancer" + paygrade = PAY_SHORT_FL_S prefix = "Merc." /datum/paygrade/freelancer/medic - paygrade = "Freelancer Medic" name = "Freelancer Medic" + paygrade = PAY_SHORT_FL_M prefix = "Med." /datum/paygrade/freelancer/leader - paygrade = "Freelancer Leader" name = "Freelancer Leader" + paygrade = PAY_SHORT_FL_WL prefix = "Warlord" pay_multiplier = 1 + officer_grade = GRADE_OFFICER /datum/paygrade/freelancer/elite name = "Elite Freelancer Paygrade" + fprefix = "Elt." pay_multiplier = 1.25 /datum/paygrade/freelancer/elite/standard - paygrade = "Elite Freelancer Standard" - name = "Elite Freelancer Standard" - prefix = "MRC." + name = "Elite Freelancer" + paygrade = PAY_SHORT_EFL_S + prefix = "Merc." /datum/paygrade/freelancer/elite/heavy - paygrade = "Elite Freelancer Heavy" name = "Elite Freelancer Heavy" - prefix = "HVY." + paygrade = PAY_SHORT_EFL_H + prefix = "Hvy." /datum/paygrade/freelancer/elite/engineer - paygrade = "Elite Freelancer Engineer" name = "Elite Freelancer Engineer" - prefix = "ENGI." + paygrade = PAY_SHORT_EFL_E + prefix = "Eng." /datum/paygrade/freelancer/elite/medic - paygrade = "Elite Freelancer Medic" name = "Elite Freelancer Medic" - prefix = "MED." + paygrade = PAY_SHORT_EFL_M + prefix = "Med." /datum/paygrade/freelancer/elite/leader - paygrade = "Elite Freelancer Leader" name = "Elite Freelancer Leader" + paygrade = PAY_SHORT_EFL_TL prefix = "Warlord" pay_multiplier = 1.5 + officer_grade = GRADE_OFFICER diff --git a/code/datums/paygrades/factions/other/misc.dm b/code/datums/paygrades/factions/other/misc.dm index 30865228d3af..cc07e97b94da 100644 --- a/code/datums/paygrades/factions/other/misc.dm +++ b/code/datums/paygrades/factions/other/misc.dm @@ -1,9 +1,15 @@ -/datum/paygrade/misc/operator +/datum/paygrade/misc/operative + name = "Operator" + prefix = "OPR." + paygrade = PAY_SHORT_OPR + pay_multiplier = 1 //???? + +/datum/paygrade/misc/codenamed name = "Operative" - paygrade = "O" + paygrade = PAY_SHORT_CDNM pay_multiplier = 1 //???? /datum/paygrade/misc/synth name = "Synthetic" - paygrade = "SYN" + paygrade = PAY_SHORT_SYN pay_multiplier = 1 diff --git a/code/datums/paygrades/factions/twe/twe.dm b/code/datums/paygrades/factions/twe/twe.dm index 214d70890c18..582030f9f80a 100644 --- a/code/datums/paygrades/factions/twe/twe.dm +++ b/code/datums/paygrades/factions/twe/twe.dm @@ -1,77 +1,86 @@ /datum/paygrade/twe name = "TWE Paygrade" pay_multiplier = 2 // less people = more to pay them + default_faction = FACTION_TWE -//TWE RMC -/datum/paygrade/twe/rc1 - paygrade = "TC1" - name = "Yonto" - prefix = "Yt." +//RMC Emlisted +/datum/paygrade/twe/e1 + paygrade = PAY_SHORT_RMC1 + name = "Heitai-Marine" + prefix = "Hti-Mne." -/datum/paygrade/twe/rc2 - paygrade = "TC2" - name = "Santo" - prefix = "St." +/datum/paygrade/twe/e2 + paygrade = PAY_SHORT_RMC2 + name = "Santo-Lance Corporal" + prefix = "St-LCpl." pay_multiplier = 2.1 -/datum/paygrade/twe/rc3 - paygrade = "TC3" - name = "Nito" - prefix = "Nt." +/datum/paygrade/twe/e3 + paygrade = PAY_SHORT_RMC3 + name = "Nito-Corporal" + prefix = "Nt-Cpl." pay_multiplier = 2.2 -/datum/paygrade/twe/rc4 - paygrade = "TC4" - name = "Itto" - prefix = "It." +/datum/paygrade/twe/e4 + paygrade = PAY_SHORT_RMC4 + name = "Itto-Sergeant" + prefix = "Sgt." pay_multiplier = 2.3 +//TWE Warrent Officer +/datum/paygrade/twe/wo1 + paygrade = PAY_SHORT_RNOW + name = "Warrant Officer" + prefix = "WO." + pay_multiplier = 3.5 + officer_grade = GRADE_OFFICER //TWE Naval Officers /datum/paygrade/twe/o1 - paygrade = "TO1" - name = "Seaman" - prefix = "SN." + paygrade = PAY_SHORT_RNO1 + name = "Second Lieutenant" + prefix = "2nd LT" pay_multiplier = 3 + officer_grade = GRADE_OFFICER /datum/paygrade/twe/o2 - paygrade = "TO2" - name = "Leading Seaman" - prefix = "LR." + paygrade = PAY_SHORT_RNO2 + name = "First Lieutenant" + prefix = "1st LT" pay_multiplier = 3.25 + officer_grade = GRADE_OFFICER /datum/paygrade/twe/o3 - paygrade = "TO3" - name = "Standing Officer" - prefix = "SO." - pay_multiplier = 3.5 - -/datum/paygrade/twe/o3e - paygrade = "TO3E" - name = "Warrant Officer" - prefix = "WO." + paygrade = PAY_SHORT_RNO3 + name = "Commander" + prefix = "Cdr." pay_multiplier = 3.5 + officer_grade = GRADE_OFFICER /datum/paygrade/twe/o4 - paygrade = "TO4" + paygrade = PAY_SHORT_RNO4 name = "Captain" prefix = "Cpt." pay_multiplier = 5 + officer_grade = GRADE_OFFICER /datum/paygrade/twe/o5 - paygrade = "TO5" + paygrade = PAY_SHORT_RNO5 name = "Admiral" - prefix = "ADM." + prefix = "Adm." pay_multiplier = 7 + officer_grade = GRADE_FLAG /datum/paygrade/twe/o6 - paygrade = "TO6" + paygrade = PAY_SHORT_RNO6 name = "Grand Admiral" - prefix = "GADM." + prefix = "GAdm." pay_multiplier = 9 + officer_grade = GRADE_FLAG /datum/paygrade/twe/o7 - paygrade = "TO7" + paygrade = PAY_SHORT_EMP name = "Emperor" - prefix = "ER." + prefix = "HRH." pay_multiplier = 1000 + officer_grade = GRADE_FLAG diff --git a/code/datums/paygrades/factions/upp/upp.dm b/code/datums/paygrades/factions/upp/upp.dm index 7cb0c201aefb..b9ce691fdb8d 100644 --- a/code/datums/paygrades/factions/upp/upp.dm +++ b/code/datums/paygrades/factions/upp/upp.dm @@ -1,130 +1,131 @@ /datum/paygrade/upp name = "UPP Paygrade" pay_multiplier = 0.1 //lol. lmao + default_faction = FACTION_UPP //UPP Enlisted /datum/paygrade/upp/ue0 - paygrade = "UE0" + paygrade = PAY_SHORT_UEC name = "Conscript" pay_multiplier = 0.05 /datum/paygrade/upp/ue1 - paygrade = "UE1" + paygrade = PAY_SHORT_UE1 name = "Private" prefix = "PVT." /datum/paygrade/upp/ue2 - paygrade = "UE2" + paygrade = PAY_SHORT_UE2 name = "Private First Class" prefix = "PFC." + pay_multiplier = 0.2 -/datum/paygrade/upp/ue3m - paygrade = "UE3M" - name = "Korporal Medic" - prefix = "Kpl." - pay_multiplier = 0.3 - -/datum/paygrade/upp/ue3s - paygrade = "UE3S" - name = "Korporal Sapper" +/datum/paygrade/upp/ue3 + paygrade = PAY_SHORT_UE3 + name = "Korporal" prefix = "Kpl." pay_multiplier = 0.3 /datum/paygrade/upp/ue4 - paygrade = "UE4" + paygrade = PAY_SHORT_UE4 name = "Junior Serzhant" prefix = "JrSzh." pay_multiplier = 0.5 /datum/paygrade/upp/ue5 - paygrade = "UE5" + paygrade = PAY_SHORT_UE5 name = "Serzhant" prefix = "Szh." pay_multiplier = 0.7 /datum/paygrade/upp/ue6 - paygrade = "UE6" + paygrade = PAY_SHORT_UE6 name = "Master Serzhant" prefix = "MSzh." pay_multiplier = 0.9 //UPP Commandos /datum/paygrade/upp/uc1 - paygrade = "UC1" + paygrade = PAY_SHORT_UC1 name = "Junior Kommando" prefix = "JKdo." pay_multiplier = 1.5 /datum/paygrade/upp/uc2 - paygrade = "UC2" + paygrade = PAY_SHORT_UC2 name = "2nd Kommando" prefix = "2ndKdo." pay_multiplier = 2 + officer_grade = GRADE_OFFICER /datum/paygrade/upp/uc3 - paygrade = "UC3" + paygrade = PAY_SHORT_UC3 name = "1st Kommando" prefix = "1stKdo." pay_multiplier = 2.5 + officer_grade = GRADE_OFFICER //UPP Officers /datum/paygrade/upp/uo1 - paygrade = "UO1" + paygrade = PAY_SHORT_UO1 name = "Leytenant" prefix = "Lt." pay_multiplier = 1.25 + officer_grade = GRADE_OFFICER -/datum/paygrade/upp/uo1m - paygrade = "UO1M" - name = "Leytenant Medic" - prefix = "Lt. Med." - pay_multiplier = 1.25 - -/datum/paygrade/upp/uo1e - paygrade = "UO1E" +/datum/paygrade/upp/uo2 + paygrade = PAY_SHORT_UO2 name = "Senior Leytenant" prefix = "Sr. LT." pay_multiplier = 1.5 + officer_grade = GRADE_OFFICER - -/datum/paygrade/upp/uo2 - paygrade = "UO2" +/datum/paygrade/upp/uo3 + paygrade = PAY_SHORT_UO3 name = "Kapitan" prefix = "Kpt." pay_multiplier = 2 + officer_grade = GRADE_OFFICER -/datum/paygrade/upp/uo3 - paygrade = "UO3" - name = "Mayjor." +/datum/paygrade/upp/uo4 + paygrade = PAY_SHORT_UO4 + name = "Mayjor" prefix = "May." pay_multiplier = 2.5 + officer_grade = GRADE_OFFICER -/datum/paygrade/upp/uo4 - paygrade = "UO4" +/datum/paygrade/upp/uo5 + paygrade = PAY_SHORT_UO5 name = "Leytenant Kolonel" + prefix = "Lt. Kol." pay_multiplier = 3 + officer_grade = GRADE_OFFICER -/datum/paygrade/upp/uo5 - paygrade = "UO5" +/datum/paygrade/upp/uo6 + paygrade = PAY_SHORT_UO6 name = "Kolonel" prefix = "Kol." pay_multiplier = 4 + officer_grade = GRADE_OFFICER -/datum/paygrade/upp/uo6 - paygrade = "UO6" +/datum/paygrade/upp/uo7 + paygrade = PAY_SHORT_UO7 name = "Mayjor General" - prefix = "MayGen." + prefix = "May. Gen." pay_multiplier = 5 + officer_grade = GRADE_FLAG -/datum/paygrade/upp/uo7 - paygrade = "UO7" +/datum/paygrade/upp/uo8 + paygrade = PAY_SHORT_UO8 name = "Leytenant General" - prefix = "LtGen." + prefix = "Lt. Gen." pay_multiplier = 6 + officer_grade = GRADE_FLAG -/datum/paygrade/upp/uo8 - paygrade = "UO8" +/datum/paygrade/upp/uo9 + paygrade = PAY_SHORT_UO9 name = "Army General" - prefix = "ArmGen." + prefix = "Gen." pay_multiplier = 7 + officer_grade = GRADE_FLAG diff --git a/code/datums/paygrades/factions/uscm/marine.dm b/code/datums/paygrades/factions/uscm/marine.dm index e351311e65ee..6a1446dd6b60 100644 --- a/code/datums/paygrades/factions/uscm/marine.dm +++ b/code/datums/paygrades/factions/uscm/marine.dm @@ -2,11 +2,12 @@ name = "Marine Paygrade" rank_pin = /obj/item/clothing/accessory/ranks/marine pay_multiplier = 1.6 + default_faction = FACTION_MARINE // ENLISTED PAYGRADES /datum/paygrade/marine/e1 - paygrade = "ME1" + paygrade = PAY_SHORT_ME1 name = "Private" prefix = "PVT" rank_pin = /obj/item/clothing/accessory/ranks/marine/e1 @@ -14,7 +15,7 @@ pay_multiplier = 1.6 /datum/paygrade/marine/e2 - paygrade = "ME2" + paygrade = PAY_SHORT_ME2 name = "Private First Class" prefix = "PFC" rank_pin = /obj/item/clothing/accessory/ranks/marine/e2 @@ -22,7 +23,7 @@ pay_multiplier = 1.7 /datum/paygrade/marine/e3 - paygrade = "ME3" + paygrade = PAY_SHORT_ME3 name = "Lance Corporal" prefix = "LCpl" rank_pin = /obj/item/clothing/accessory/ranks/marine/e3 @@ -30,7 +31,7 @@ pay_multiplier = 1.9 /datum/paygrade/marine/e4 - paygrade = "ME4" + paygrade = PAY_SHORT_ME4 name = "Corporal" prefix = "Cpl" rank_pin = /obj/item/clothing/accessory/ranks/marine/e4 @@ -38,7 +39,7 @@ pay_multiplier = 2.1 /datum/paygrade/marine/e5 - paygrade = "ME5" + paygrade = PAY_SHORT_ME5 name = "Sergeant" prefix = "Sgt" rank_pin = /obj/item/clothing/accessory/ranks/marine/e5 @@ -46,7 +47,7 @@ pay_multiplier = 2.2 /datum/paygrade/marine/e6 - paygrade = "ME6" + paygrade = PAY_SHORT_ME6 name = "Staff Sergeant" prefix = "SSgt" rank_pin = /obj/item/clothing/accessory/ranks/marine/e6 @@ -54,7 +55,7 @@ pay_multiplier = 2.4 /datum/paygrade/marine/e7 - paygrade = "ME7" + paygrade = PAY_SHORT_ME7 name = "Gunnery Sergeant" prefix = "GySgt" rank_pin = /obj/item/clothing/accessory/ranks/marine/e7 @@ -62,7 +63,7 @@ pay_multiplier = 2.75 /datum/paygrade/marine/e8 - paygrade = "ME8" + paygrade = PAY_SHORT_ME8 name = "Master Sergeant" prefix = "MSgt" rank_pin = /obj/item/clothing/accessory/ranks/marine/e8 @@ -70,7 +71,7 @@ pay_multiplier = 2.75 /datum/paygrade/marine/e8e - paygrade = "ME8E" + paygrade = PAY_SHORT_ME8E name = "First Sergeant" prefix = "1Sgt" rank_pin = /obj/item/clothing/accessory/ranks/marine/e8e @@ -78,7 +79,7 @@ pay_multiplier = 2.75 /datum/paygrade/marine/e9 - paygrade = "ME9" + paygrade = PAY_SHORT_ME9 name = "Master Gunnery Sergeant" prefix = "MGySgt" rank_pin = /obj/item/clothing/accessory/ranks/marine/e9 @@ -86,7 +87,7 @@ pay_multiplier = 3 /datum/paygrade/marine/e9e - paygrade = "ME9E" + paygrade = PAY_SHORT_ME9E name = "Sergeant Major" prefix = "SgtMaj" rank_pin = /obj/item/clothing/accessory/ranks/marine/e9e @@ -94,7 +95,7 @@ pay_multiplier = 3 /datum/paygrade/marine/e9c - paygrade = "ME9C" + paygrade = PAY_SHORT_ME9C name = "Sergeant Major of the Colonial Marine Corps" prefix = "SMCMC" rank_pin = /obj/item/clothing/accessory/ranks/marine/e9c @@ -104,115 +105,129 @@ // COMMISSIONED PAYGRADES /datum/paygrade/marine/o1 - paygrade = "MO1" + paygrade = PAY_SHORT_MO1 name = "Second Lieutenant" prefix = "2ndLt" rank_pin = /obj/item/clothing/accessory/ranks/marine/o1 ranking = 12 pay_multiplier = 3 + officer_grade = GRADE_OFFICER /datum/paygrade/marine/o2 - paygrade = "MO2" + paygrade = PAY_SHORT_MO2 name = "First Lieutenant" prefix = "1stLt" rank_pin = /obj/item/clothing/accessory/ranks/marine/o2 ranking = 13 pay_multiplier = 3.2 + officer_grade = GRADE_OFFICER /datum/paygrade/marine/o3 - paygrade = "MO3" + paygrade = PAY_SHORT_MO3 name = "Captain" prefix = "Capt" rank_pin = /obj/item/clothing/accessory/ranks/marine/o3 ranking = 14 pay_multiplier = 4 + officer_grade = GRADE_OFFICER /datum/paygrade/marine/o4 - paygrade = "MO4" + paygrade = PAY_SHORT_MO4 name = "Major" prefix = "Maj" rank_pin = /obj/item/clothing/accessory/ranks/marine/o4 ranking = 15 pay_multiplier = 4 + officer_grade = GRADE_OFFICER /datum/paygrade/marine/o5 - paygrade = "MO5" + paygrade = PAY_SHORT_MO5 name = "Lieutenant Colonel" prefix = "LtCol" rank_pin = /obj/item/clothing/accessory/ranks/marine/o5 ranking = 16 pay_multiplier = 4.2 + officer_grade = GRADE_OFFICER //Platoon Commander /datum/paygrade/marine/o6 - paygrade = "MO6" + paygrade = PAY_SHORT_MO6 name = "Colonel" prefix = "Col" rank_pin = /obj/item/clothing/accessory/ranks/marine/o6 ranking = 17 pay_multiplier = 4.4 + officer_grade = GRADE_OFFICER /datum/paygrade/marine/o6e - paygrade = "MO6E" + paygrade = PAY_SHORT_MO6E name = "Senior Colonel" prefix = "Snr Col." rank_pin = /obj/item/clothing/accessory/ranks/marine/o6e ranking = 18 pay_multiplier = 4.6 + officer_grade = GRADE_OFFICER /datum/paygrade/marine/o6c - paygrade = "MO6C" + paygrade = PAY_SHORT_MO6C name = "Division Colonel" prefix = "Div Col." rank_pin = /obj/item/clothing/accessory/ranks/marine/o6c ranking = 19 pay_multiplier = 4.8 + officer_grade = GRADE_OFFICER //High Command /datum/paygrade/marine/o7 - paygrade = "MO7" + paygrade = PAY_SHORT_MO7 name = "Brigadier General" prefix = "BGen" rank_pin = /obj/item/clothing/accessory/ranks/marine/o7 ranking = 20 pay_multiplier = 6 + officer_grade = GRADE_FLAG /datum/paygrade/marine/o8 - paygrade = "MO8" + paygrade = PAY_SHORT_MO8 name = "Major General" prefix = "MajGen" rank_pin = /obj/item/clothing/accessory/ranks/marine/o8 ranking = 21 pay_multiplier = 6.2 + officer_grade = GRADE_FLAG /datum/paygrade/marine/o9 - paygrade = "MO9" + paygrade = PAY_SHORT_MO9 name = "Lieutenant General" prefix = "LtGen" rank_pin = /obj/item/clothing/accessory/ranks/marine/o9 ranking = 22 pay_multiplier = 6.4 + officer_grade = GRADE_FLAG /datum/paygrade/marine/o10 - paygrade = "MO10" + paygrade = PAY_SHORT_MO10 name = "General" prefix = "Gen" rank_pin = /obj/item/clothing/accessory/ranks/marine/o10 ranking = 23 pay_multiplier = 6.6 + officer_grade = GRADE_FLAG /datum/paygrade/marine/o10c - paygrade = "MO10C" + paygrade = PAY_SHORT_MO10C name = "Assistant Commandant of the Marine Corps" prefix = "ACMC" rank_pin = /obj/item/clothing/accessory/ranks/marine/o10c ranking = 24 pay_multiplier = 6.8 + officer_grade = GRADE_FLAG /datum/paygrade/marine/o10s - paygrade = "MO10S" + paygrade = PAY_SHORT_MO10S name = "Commandant of the Marine Corps" prefix = "CMC" rank_pin = /obj/item/clothing/accessory/ranks/marine/o10c ranking = 25 pay_multiplier = 7 + officer_grade = GRADE_FLAG diff --git a/code/datums/paygrades/factions/uscm/navy.dm b/code/datums/paygrades/factions/uscm/navy.dm index 7e648a75bac2..69fb63676bce 100644 --- a/code/datums/paygrades/factions/uscm/navy.dm +++ b/code/datums/paygrades/factions/uscm/navy.dm @@ -1,82 +1,83 @@ /datum/paygrade/navy name = "Navy Paygrade" rank_pin = /obj/item/clothing/accessory/ranks/navy + default_faction = FACTION_MARINE //someone else can do the multipliers for this one // ENLISTED PAYGRADES /datum/paygrade/navy/e1 - paygrade = "NE1" + paygrade = PAY_SHORT_NE1 name = "Seaman Recruit" prefix = "SR." rank_pin = /obj/item/clothing/accessory/ranks/navy/e1 ranking = 0 /datum/paygrade/navy/e2 - paygrade = "NE2" + paygrade = PAY_SHORT_NE2 name = "Seaman Apprentice" prefix = "SA." rank_pin = /obj/item/clothing/accessory/ranks/navy/e2 ranking = 1 /datum/paygrade/navy/e3 - paygrade = "NE3" + paygrade = PAY_SHORT_NE3 name = "Seaman" prefix = "SN." rank_pin = /obj/item/clothing/accessory/ranks/navy/e3 ranking = 2 /datum/paygrade/navy/e4 - paygrade = "NE4" + paygrade = PAY_SHORT_NE4 name = "Petty Officer 3rd Class" prefix = "PO1." rank_pin = /obj/item/clothing/accessory/ranks/navy/e4 ranking = 3 /datum/paygrade/navy/e5 - paygrade = "NE5" + paygrade = PAY_SHORT_NE5 name = "Petty Officer 2nd Class" prefix = "PO2." rank_pin = /obj/item/clothing/accessory/ranks/navy/e5 ranking = 4 /datum/paygrade/navy/e6 - paygrade = "NE6" + paygrade = PAY_SHORT_NE6 name = "Petty Officer 1st Class" prefix = "PO1." rank_pin = /obj/item/clothing/accessory/ranks/navy/e6 ranking = 5 /datum/paygrade/navy/e7 - paygrade = "NE7" + paygrade = PAY_SHORT_NE7 name = "Chief Petty Officer" prefix = "CPO." rank_pin = /obj/item/clothing/accessory/ranks/navy/e7 ranking = 6 /datum/paygrade/navy/e8 - paygrade = "NE8" + paygrade = PAY_SHORT_NE8 name = "Senior Chief Petty Officer" prefix = "SCPO." rank_pin = /obj/item/clothing/accessory/ranks/navy/e8 ranking = 7 /datum/paygrade/navy/e8c - paygrade = "NE8C" + paygrade = PAY_SHORT_NE8C name = "Command Senior Chief Petty Officer" prefix = "CSCPO." rank_pin = /obj/item/clothing/accessory/ranks/navy/e8c ranking = 8 /datum/paygrade/navy/e9 - paygrade = "NE9" + paygrade = PAY_SHORT_NE9 name = "Master Chief Petty Officer" prefix = "MCPO." rank_pin = /obj/item/clothing/accessory/ranks/navy/e9 ranking = 9 /datum/paygrade/navy/e9c - paygrade = "NE9C" + paygrade = PAY_SHORT_NE9C name = "Command Master Chief Petty Officer" prefix = "CMCPO." rank_pin = /obj/item/clothing/accessory/ranks/navy/e9c @@ -85,92 +86,105 @@ // COMMISSIONED PAYGRADES /datum/paygrade/navy/o1 - paygrade = "NO1" + paygrade = PAY_SHORT_NO1 name = "Ensign" prefix = "ENS." rank_pin = /obj/item/clothing/accessory/ranks/navy/o1 ranking = 11 + officer_grade = GRADE_OFFICER /datum/paygrade/navy/o2 - paygrade = "NO2" + paygrade = PAY_SHORT_NO2 name = "Lieutenant Junior Grade" prefix = "LTJG." rank_pin = /obj/item/clothing/accessory/ranks/navy/o2 ranking = 12 + officer_grade = GRADE_OFFICER /datum/paygrade/navy/o3 - paygrade = "NO3" + paygrade = PAY_SHORT_NO3 name = "Lieutenant" prefix = "LT." rank_pin = /obj/item/clothing/accessory/ranks/navy/o3 ranking = 13 + officer_grade = GRADE_OFFICER /datum/paygrade/navy/o4 - paygrade = "NO4" + paygrade = PAY_SHORT_NO4 name = "Lieutenant Commander" prefix = "LCDR." rank_pin = /obj/item/clothing/accessory/ranks/navy/o4 ranking = 14 + officer_grade = GRADE_OFFICER /datum/paygrade/navy/o5 - paygrade = "NO5" + paygrade = PAY_SHORT_NO5 name = "Commander" prefix = "CDR." rank_pin = /obj/item/clothing/accessory/ranks/navy/o5 ranking = 15 + officer_grade = GRADE_OFFICER /datum/paygrade/navy/o6 - paygrade = "NO6" + paygrade = PAY_SHORT_NO6 name = "Captain" prefix = "CAPT." rank_pin = /obj/item/clothing/accessory/ranks/navy/o6 ranking = 16 + officer_grade = GRADE_OFFICER /datum/paygrade/navy/o6e - paygrade = "NO6E" + paygrade = PAY_SHORT_NO6E name = "Commodore" prefix = "CDRE." rank_pin = /obj/item/clothing/accessory/ranks/navy/o6e ranking = 17 + officer_grade = GRADE_OFFICER /datum/paygrade/navy/o6c - paygrade = "NO6C" + paygrade = PAY_SHORT_NO6C name = "Senior Commodore" prefix = "Snr CDRE." rank_pin = /obj/item/clothing/accessory/ranks/navy/o6e ranking = 18 + officer_grade = GRADE_OFFICER /datum/paygrade/navy/o7 - paygrade = "NO7" + paygrade = PAY_SHORT_NO7 name = "Rear Admiral (Lower Half)" prefix = "RDML." rank_pin = /obj/item/clothing/accessory/ranks/navy/o7 ranking = 19 + officer_grade = GRADE_FLAG /datum/paygrade/navy/o8 - paygrade = "NO8" + paygrade = PAY_SHORT_NO8 name = "Rear Admiral (Upper Half)" prefix = "RADM." rank_pin = /obj/item/clothing/accessory/ranks/navy/o8 ranking = 20 + officer_grade = GRADE_FLAG /datum/paygrade/navy/o9 - paygrade = "NO9" + paygrade = PAY_SHORT_NO9 name = "Vice Admiral" prefix = "VADM." rank_pin = /obj/item/clothing/accessory/ranks/navy/o9 ranking = 21 + officer_grade = GRADE_FLAG /datum/paygrade/navy/o10 - paygrade = "NO10" + paygrade = PAY_SHORT_NO10 name = "Admiral" prefix = "ADM." rank_pin = /obj/item/clothing/accessory/ranks/navy/o10 ranking = 22 + officer_grade = GRADE_FLAG /datum/paygrade/navy/o10c - paygrade = "NO10C" + paygrade = PAY_SHORT_NO10C name = "Chief of Naval Operations" prefix = "CNO." rank_pin = /obj/item/clothing/accessory/ranks/navy/o10c ranking = 23 + officer_grade = GRADE_FLAG diff --git a/code/datums/paygrades/factions/uscm/provost.dm b/code/datums/paygrades/factions/uscm/provost.dm index b27c8f7f721f..c7e529d9fcb4 100644 --- a/code/datums/paygrades/factions/uscm/provost.dm +++ b/code/datums/paygrades/factions/uscm/provost.dm @@ -1,45 +1,29 @@ /datum/paygrade/provost name = "Provost Paygrade" pay_multiplier = 2 - -/datum/paygrade/provost/officer - paygrade = "PvE7" - name = "Chief Petty Officer" - prefix = "CPO." - rank_pin = /obj/item/clothing/accessory/ranks/navy/e7/pvst - -/datum/paygrade/provost/enforcer - paygrade = "PvE8" - name = "Senior Chief Petty Officer" - prefix = "SCPO." - rank_pin = /obj/item/clothing/accessory/ranks/navy/e8/pvst - -/datum/paygrade/provost/tml - paygrade = "PvE9" - name = "Master Chief Petty Officer" - prefix = "MCPO." - rank_pin = /obj/item/clothing/accessory/ranks/navy/e9/pvst + default_faction = FACTION_MARINE /datum/paygrade/provost/inspector - paygrade = "PvI" - name = "Inspector" + paygrade = PAY_SHORT_PVI + name = "Provost Inspector" prefix = "Insp." rank_pin = /obj/item/clothing/accessory/ranks/special/insp + officer_grade = GRADE_FLAG //Not really a flag officer, but they have special access to things for their job. /datum/paygrade/provost/marshal - paygrade = "PvO8" - name = "Rear Admiral" - prefix = "RADM." - rank_pin = /obj/item/clothing/accessory/ranks/navy/o8/pvst + paygrade = PAY_SHORT_PVM + name = "Provost Marshal" + prefix = "Marshal" + officer_grade = GRADE_FLAG /datum/paygrade/provost/sectormarshal - paygrade = "PvO9" - name = "Vice Admiral" - prefix = "VADM." - rank_pin = /obj/item/clothing/accessory/ranks/navy/o9/pvst + paygrade = PAY_SHORT_PVSM + name = "Provost Sector Marshal" + prefix = "S. Marshal" + officer_grade = GRADE_FLAG /datum/paygrade/provost/chiefmarshal - paygrade = "PvCM" + paygrade = PAY_SHORT_PVCM name = "Provost Chief Marshal" - prefix = "PCM." - rank_pin = /obj/item/clothing/accessory/ranks/navy/o10c/pvst + prefix = "Chief Marshal" + officer_grade = GRADE_FLAG diff --git a/code/datums/paygrades/factions/wy/goons.dm b/code/datums/paygrades/factions/wy/goons.dm deleted file mode 100644 index 679bb42e7f76..000000000000 --- a/code/datums/paygrades/factions/wy/goons.dm +++ /dev/null @@ -1,15 +0,0 @@ -/datum/paygrade/goon - name = "WY Goon Paygrade" - pay_multiplier = 0.66 // better than colonists. barely. - -//Standard PMCs -/datum/paygrade/goon/standard - paygrade = "WEY-GOON" - name = "Officer" - prefix = "Off." - -/datum/paygrade/goon/lead - paygrade = "WEY-GOON-L" - name = "Senior Officer" - prefix = "Sr. Off." - pay_multiplier = 0.8 diff --git a/code/datums/paygrades/factions/wy/pmc.dm b/code/datums/paygrades/factions/wy/pmc.dm index fc8e55f5eee2..b6acf2864578 100644 --- a/code/datums/paygrades/factions/wy/pmc.dm +++ b/code/datums/paygrades/factions/wy/pmc.dm @@ -2,96 +2,106 @@ name = "PMC Paygrade" fprefix = "PMC." pay_multiplier = 2.5 // they have money. but they sold their soul to the company. is it really worth it + default_faction = FACTION_PMC //Standard PMCs /datum/paygrade/pmc/standard - paygrade = "PMC-OP" + paygrade = PAY_SHORT_PMC_OP name = "Operator" prefix = "OPR." /datum/paygrade/pmc/enforcer - paygrade = "PMC-EN" + paygrade = PAY_SHORT_PMC_EN name = "Enforcer" prefix = "ENF." pay_multiplier = 2.6 //PMC Field Specialists /datum/paygrade/pmc/vehicle - paygrade = "PMC-VS" + paygrade = PAY_SHORT_PMC_VS name = "Vehicle Specialist" - prefix = "CRW." + prefix = "SPV." pay_multiplier = 2.8 /datum/paygrade/pmc/support - paygrade = "PMC-SS" + paygrade = PAY_SHORT_PMC_SS name = "Support Specialist" prefix = "SPS." pay_multiplier = 2.8 /datum/paygrade/pmc/medic - paygrade = "PMC-MS" + paygrade = PAY_SHORT_PMC_MS name = "Medical Specialist" prefix = "SPM." pay_multiplier = 2.8 /datum/paygrade/pmc/spec - paygrade = "PMC-WS" + paygrade = PAY_SHORT_PMC_WS name = "Weapon Specialist" prefix = "SPW." pay_multiplier = 3 /datum/paygrade/pmc/handler - paygrade = "PMC-XS" + paygrade = PAY_SHORT_PMC_XS name = "Xeno Specialist" prefix = "SPX." pay_multiplier = 4 + officer_grade = GRADE_OFFICER + +//PMC Support Staff +/datum/paygrade/pmc/doctor + paygrade = PAY_SHORT_PMC_DOC + name = "Trauma Surgeon" + prefix = "Dr." + pay_multiplier = 4 + officer_grade = GRADE_OFFICER + +/datum/paygrade/pmc/engineer + paygrade = PAY_SHORT_PMC_TEC + name = "Corporate Technician" + prefix = "TEC." + pay_multiplier = 4 //PMC Elite /datum/paygrade/pmc/elite - paygrade = "PMC-ELR" + paygrade = PAY_SHORT_PMC_ELR name = "Elite Responder" prefix = "ELR." pay_multiplier = 4 + officer_grade = GRADE_OFFICER /datum/paygrade/pmc/medic/elite - paygrade = "PMC-ELM" + paygrade = PAY_SHORT_PMC_ELM name = "Elite Medic" prefix = "ELM." pay_multiplier = 4.5 + officer_grade = GRADE_OFFICER /datum/paygrade/pmc/spec/elite - paygrade = "PMC-ELG" + paygrade = PAY_SHORT_PMC_ELG name = "Elite Gunner" prefix = "ELG." pay_multiplier = 5 + officer_grade = GRADE_OFFICER //PMC Command /datum/paygrade/pmc/teamlead - paygrade = "PMC-TL" + paygrade = PAY_SHORT_PMC_TL name = "Team Leader" prefix = "TML." pay_multiplier = 3.5 + officer_grade = GRADE_OFFICER /datum/paygrade/pmc/elitelead - paygrade = "PMC-ETL" + paygrade = PAY_SHORT_PMC_ETL name = "Elite Team Leader" prefix = "ETML." pay_multiplier = 5.5 - -/datum/paygrade/pmc/doctor - paygrade = "PMC-DOC" - name = "Trauma Surgeon" - prefix = "TRI." - pay_multiplier = 4 - -/datum/paygrade/pmc/engineer - paygrade = "PMC-TECH" - name = "Corporate Technician" - prefix = "TEC." - pay_multiplier = 4 + officer_grade = GRADE_OFFICER /datum/paygrade/pmc/director - paygrade = "PMC-DIR" + paygrade = PAY_SHORT_PMC_DIR name = "Site Director" prefix = "DIR." pay_multiplier = 10 //it's a corpo director. money is what they care about. + officer_grade = GRADE_FLAG diff --git a/code/datums/paygrades/factions/wy/wy.dm b/code/datums/paygrades/factions/wy/wy.dm index 03d54cbd3cda..b3ff70830603 100644 --- a/code/datums/paygrades/factions/wy/wy.dm +++ b/code/datums/paygrades/factions/wy/wy.dm @@ -1,72 +1,79 @@ /datum/paygrade/wy_ranks name = "WYC Paygrade" pay_multiplier = 1 + default_faction = FACTION_WEYLAND /datum/paygrade/wy_ranks/wyc1 - paygrade = "WYC1" + paygrade = PAY_SHORT_WYC1 name = "Trainee" prefix = "Trn." ranking = 0 /datum/paygrade/wy_ranks/wyc2 - paygrade = "WYC2" + paygrade = PAY_SHORT_WYC2 name = "Junior Executive" prefix = "Jr. Exec." ranking = 1 pay_multiplier = 2 /datum/paygrade/wy_ranks/wyc3 - paygrade = "WYC3" + paygrade = PAY_SHORT_WYC3 name = "Executive" prefix = "Exec." ranking = 2 pay_multiplier = 3 /datum/paygrade/wy_ranks/wyc4 - paygrade = "WYC4" + paygrade = PAY_SHORT_WYC4 name = "Senior Executive" prefix = "Sr. Exec." ranking = 3 pay_multiplier = 4 /datum/paygrade/wy_ranks/wyc5 - paygrade = "WYC5" + paygrade = PAY_SHORT_WYC5 name = "Executive Specialist" prefix = "Exec. Spc." ranking = 4 pay_multiplier = 5 + officer_grade = GRADE_OFFICER /datum/paygrade/wy_ranks/wyc6 - paygrade = "WYC6" + paygrade = PAY_SHORT_WYC6 name = "Executive Supervisor" prefix = "Exec. Suvp." ranking = 5 pay_multiplier = 6 + officer_grade = GRADE_OFFICER /datum/paygrade/wy_ranks/wyc7 - paygrade = "WYC7" + paygrade = PAY_SHORT_WYC7 name = "Assistant Manager" prefix = "Assis. Mng." ranking = 6 pay_multiplier = 7 + officer_grade = GRADE_OFFICER /datum/paygrade/wy_ranks/wyc8 - paygrade = "WYC8" + paygrade = PAY_SHORT_WYC8 name = "Division Manager" prefix = "Div. Mng." ranking = 7 pay_multiplier = 8 + officer_grade = GRADE_FLAG /datum/paygrade/wy_ranks/wyc9 - paygrade = "WYC9" + paygrade = PAY_SHORT_WYC9 name = "Chief Executive" prefix = "Chief. Exec." ranking = 8 pay_multiplier = 9 + officer_grade = GRADE_FLAG /datum/paygrade/wy_ranks/wyc10 - paygrade = "WYC10" + paygrade = PAY_SHORT_WYC10 name = "Director" prefix = "Director" ranking = 9 pay_multiplier = 10 + officer_grade = GRADE_FLAG diff --git a/code/datums/paygrades/paygrade.dm b/code/datums/paygrades/paygrade.dm index b15071c882b7..862dce0dfb0c 100644 --- a/code/datums/paygrades/paygrade.dm +++ b/code/datums/paygrades/paygrade.dm @@ -1,10 +1,13 @@ +GLOBAL_LIST_EMPTY(uscm_highcom_paygrades) +GLOBAL_LIST_EMPTY(uscm_officer_paygrades) +GLOBAL_LIST_EMPTY(wy_highcom_paygrades) GLOBAL_LIST_INIT_TYPED(paygrades, /datum/paygrade, setup_paygrades()) /datum/paygrade var/paygrade var/name var/prefix - ///Factional prefix, currently only used by PMCs. In essence, a pre-prefix. + /// Factional prefix, currently only used by PMCs. In essence, a pre-prefix. var/fprefix var/rank_pin @@ -13,42 +16,42 @@ GLOBAL_LIST_INIT_TYPED(paygrades, /datum/paygrade, setup_paygrades()) /// Actually gives you the fucking money from your paygrade in your ATM account. Multiplier of 1 equals PFC pay. var/pay_multiplier = 1 + /// The faction this paygrade is usually assigned to. + var/default_faction + /// If the grade refers to an officer equivalent or not. + var/officer_grade = GRADE_ENLISTED + +GLOBAL_LIST_INIT(co_paygrades, list( + PAY_SHORT_NO6, + PAY_SHORT_NO6E, + PAY_SHORT_NO6C, + PAY_SHORT_NO5, + PAY_SHORT_NO4, + PAY_SHORT_MO6, + PAY_SHORT_MO6E, + PAY_SHORT_MO6C, + PAY_SHORT_MO5, + PAY_SHORT_MO4 +)) + +/datum/paygrade/New() + . = ..() + switch(default_faction) + if(FACTION_MARINE) + if(officer_grade) + GLOB.uscm_officer_paygrades += paygrade + if(officer_grade >= GRADE_FLAG) + GLOB.uscm_highcom_paygrades += paygrade + if(FACTION_WEYLAND,FACTION_PMC) + if(officer_grade >= GRADE_FLAG) + GLOB.wy_highcom_paygrades += paygrade + /proc/setup_paygrades() . = list() - for(var/I in subtypesof(/datum/paygrade)) - var/datum/paygrade/PG = I + for(var/datum/paygrade/PG as anything in subtypesof(/datum/paygrade)) var/pg_id = initial(PG.paygrade) if(pg_id) if(pg_id in .) log_debug("Duplicate paygrade: '[pg_id]'.") else .[pg_id] = new PG - -GLOBAL_LIST_INIT(highcom_paygrades, list( - "NO7", - "MO7", - "NO8", - "MO8", - "NO9", - "MO9", - "NO10", - "MO10", - "NO10C", - "MO10C", - "PvO8", - "PvO9", - "PvCM" -)) - -GLOBAL_LIST_INIT(co_paygrades, list( - "NO6", - "NO6E", - "NO6C", - "NO5", - "NO4", - "MO6", - "MO6E", - "MO6C", - "MO5", - "MO4" -)) diff --git a/code/datums/quadtree.dm b/code/datums/quadtree.dm index d00f202cc15c..2b0360152997 100644 --- a/code/datums/quadtree.dm +++ b/code/datums/quadtree.dm @@ -10,14 +10,14 @@ var/z_level /// Don't divide further when truthy - var/final + var/final_divide = FALSE /datum/quadtree/New(datum/shape/rectangle/rect, z) . = ..() boundary = rect z_level = z if(boundary.width <= QUADTREE_BOUNDARY_MINIMUM_WIDTH || boundary.height <= QUADTREE_BOUNDARY_MINIMUM_HEIGHT) - final = TRUE + final_divide = TRUE // By design i guess, discarding branch discards rest with BYOND soft-GCing // There should never be anything else but SSquadtree referencing quadtrees, @@ -103,7 +103,7 @@ player_coords = list(p_coords) return TRUE - else if(!final && player_coords.len >= QUADTREE_CAPACITY) + else if(!final_divide && player_coords.len >= QUADTREE_CAPACITY) if(!is_divided) subdivide() if(nw_branch.insert_player(p_coords)) diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm index ec0c90f427ca..b4b6c45a0c2c 100644 --- a/code/datums/recipe.dm +++ b/code/datums/recipe.dm @@ -184,13 +184,6 @@ ) result = /obj/item/reagent_container/food/snacks/roburger -/datum/recipe/roburger_unsafe - items = list( - /obj/item/reagent_container/food/snacks/bun, - /obj/item/robot_parts/head, - ) - result = /obj/item/reagent_container/food/snacks/roburger/unsafe - /datum/recipe/clownburger items = list( /obj/item/reagent_container/food/snacks/bun, @@ -769,7 +762,7 @@ /datum/recipe/syntikabob items = list( /obj/item/stack/rods, - /obj/item/reagent_container/food/snacks/meat/syntiflesh, + /obj/item/reagent_container/food/snacks/meat/synthmeat, ) result = /obj/item/reagent_container/food/snacks/monkeykabob diff --git a/code/datums/redis/callbacks/_redis_callback.dm b/code/datums/redis/callbacks/_redis_callback.dm index fd786db056c3..af63f53bd0b3 100644 --- a/code/datums/redis/callbacks/_redis_callback.dm +++ b/code/datums/redis/callbacks/_redis_callback.dm @@ -19,7 +19,7 @@ * * message - The message received on the redis channel. */ /datum/redis_callback/proc/on_message(message) - CRASH("on_message not overriden for [type]!") + CRASH("on_message not overridden for [type]!") /datum/redis_callback/vv_edit_var(var_name, var_value) return FALSE diff --git a/code/datums/redis/callbacks/asay.dm b/code/datums/redis/callbacks/asay.dm index 2ccbca08fb6c..9c60a394a4ac 100644 --- a/code/datums/redis/callbacks/asay.dm +++ b/code/datums/redis/callbacks/asay.dm @@ -7,10 +7,10 @@ if(data["source"] == SSredis.instance_name) return - var/msg = SPAN_ADMINSAY("[data["rank"]]: [data["author"]]@[data["source"]]: [strip_html(data["message"])]") + var/msg = SPAN_MOD("[data["rank"]]: [data["author"]]@[data["source"]]: [strip_html(data["message"])]") for(var/client/client in GLOB.admins) - if(!(R_ADMIN & client.admin_holder.rights)) + if(!(R_ADMIN & client.admin_holder.rights) && !(R_MOD & client.admin_holder.rights)) continue to_chat(client, msg) diff --git a/code/datums/redis/callbacks/msay.dm b/code/datums/redis/callbacks/msay.dm deleted file mode 100644 index 3c0db7638a3a..000000000000 --- a/code/datums/redis/callbacks/msay.dm +++ /dev/null @@ -1,16 +0,0 @@ -/datum/redis_callback/msay - channel = "byond.msay" - -/datum/redis_callback/msay/on_message(message) - var/list/data = json_decode(message) - - if(data["source"] == SSredis.instance_name) - return - - var/msg = "[data["rank"]]: [data["author"]]@[data["source"]]: [strip_html(data["message"])]" - - for(var/client/client in GLOB.admins) - if(!(R_MOD & client.admin_holder.rights)) - continue - - to_chat(client, msg) diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index eb1fd2341920..98bcf296755b 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -100,6 +100,18 @@ if(movement_force) M.movement_force = movement_force.Copy() + /datum/map_template/shuttle/vehicle shuttle_id = MOBILE_SHUTTLE_VEHICLE_ELEVATOR name = "Vehicle Elevator" + +/datum/map_template/shuttle/trijent_elevator + name = "Trijent Elevator" + shuttle_id = MOBILE_TRIJENT_ELEVATOR + var/elevator_network + +/datum/map_template/shuttle/trijent_elevator/A + elevator_network = "A" + +/datum/map_template/shuttle/trijent_elevator/B + elevator_network = "B" diff --git a/code/datums/skills.dm b/code/datums/skills.dm deleted file mode 100644 index 986b449f5ea9..000000000000 --- a/code/datums/skills.dm +++ /dev/null @@ -1,1931 +0,0 @@ -// Individual skill -/datum/skill - /// Name of the skill - var/skill_name = null - /// used for the view UI - var/readable_skill_name = null - /// Level of skill in this... skill - var/skill_level = 0 - /// the max level this skill can be, used for tgui - var/max_skill_level = 0 - -/datum/skill/proc/get_skill_level() - return skill_level - -/datum/skill/proc/set_skill(new_level, mob/owner) - skill_level = new_level - -/datum/skill/proc/is_skilled(req_level, is_explicit = FALSE) - if(is_explicit) - return (skill_level == req_level) - return (skill_level >= req_level) - -// Lots of defines here. See #define/skills.dm - -/datum/skill/cqc - skill_name = SKILL_CQC - readable_skill_name = "CQC" - skill_level = SKILL_CQC_DEFAULT - max_skill_level = SKILL_CQC_MAX - -/datum/skill/melee_weapons - skill_name = SKILL_MELEE_WEAPONS - readable_skill_name = "melee weapons" - skill_level = SKILL_MELEE_DEFAULT - max_skill_level = SKILL_MELEE_MAX - -/datum/skill/firearms - skill_name = SKILL_FIREARMS - skill_level = SKILL_FIREARMS_TRAINED - max_skill_level = SKILL_FIREARMS_MAX - -/datum/skill/spec_weapons - skill_name = SKILL_SPEC_WEAPONS - readable_skill_name = "specialist weapons" - skill_level = SKILL_SPEC_DEFAULT - max_skill_level = SKILL_SPEC_ALL - -/datum/skill/endurance - skill_name = SKILL_ENDURANCE - skill_level = SKILL_ENDURANCE_WEAK - max_skill_level = SKILL_ENDURANCE_MAX - -/datum/skill/engineer - skill_name = SKILL_ENGINEER - skill_level = SKILL_ENGINEER_DEFAULT - max_skill_level = SKILL_ENGINEER_MAX - -/datum/skill/construction - skill_name = SKILL_CONSTRUCTION - skill_level = SKILL_CONSTRUCTION_DEFAULT - max_skill_level = SKILL_CONSTRUCTION_MAX - -/datum/skill/leadership - skill_name = SKILL_LEADERSHIP - skill_level = SKILL_LEAD_NOVICE - max_skill_level = SKILL_LEAD_MAX - -/datum/skill/leadership/set_skill(new_level, mob/living/owner) - ..() - if(!owner) - return - - if(!ishuman(owner)) - return - - // Give/remove issue order actions - if(is_skilled(SKILL_LEAD_TRAINED)) - ADD_TRAIT(owner, TRAIT_LEADERSHIP, TRAIT_SOURCE_SKILL(skill_name)) - else - REMOVE_TRAIT(owner, TRAIT_LEADERSHIP, TRAIT_SOURCE_SKILL(skill_name)) - -/datum/skill/medical - skill_name = SKILL_MEDICAL - skill_level = SKILL_MEDICAL_DEFAULT - max_skill_level = SKILL_MEDICAL_MAX - -/datum/skill/surgery - skill_name = SKILL_SURGERY - skill_level = SKILL_SURGERY_DEFAULT - max_skill_level = SKILL_SURGERY_MAX - -/datum/skill/surgery/set_skill(new_level, mob/living/owner) - ..() - if(!owner) - return - - if(!ishuman(owner)) - return - - // Give/remove surgery toggle action - var/datum/action/surgery_toggle/surgery_action = locate() in owner.actions - if(is_skilled(SKILL_SURGERY_NOVICE)) - if(!surgery_action) - give_action(owner, /datum/action/surgery_toggle) - else - surgery_action.update_surgery_skill() - else - if(surgery_action) - surgery_action.remove_from(owner) - -/datum/skill/research - skill_name = SKILL_RESEARCH - skill_level = SKILL_RESEARCH_DEFAULT - max_skill_level = SKILL_RESEARCH_MAX - -/datum/skill/antag - skill_name = SKILL_ANTAG - readable_skill_name = "illegal technology" - skill_level = SKILL_ANTAG_DEFAULT - max_skill_level = SKILL_ANTAG_MAX - -/datum/skill/pilot - skill_name = SKILL_PILOT - skill_level = SKILL_PILOT_DEFAULT - max_skill_level = SKILL_PILOT_MAX - -/datum/skill/navigations - skill_name = SKILL_NAVIGATIONS - skill_level = SKILL_NAVIGATIONS_DEFAULT - max_skill_level = SKILL_NAVIGATIONS_MAX - -/datum/skill/police - skill_name = SKILL_POLICE - skill_level = SKILL_POLICE_DEFAULT - max_skill_level = SKILL_POLICE_MAX - -/datum/skill/powerloader - skill_name = SKILL_POWERLOADER - skill_level = SKILL_POWERLOADER_DEFAULT - max_skill_level = SKILL_POWERLOADER_MAX - -/datum/skill/vehicles - skill_name = SKILL_VEHICLE - skill_level = SKILL_VEHICLE_DEFAULT - max_skill_level = SKILL_VEHICLE_MAX - -/datum/skill/jtac - skill_name = SKILL_JTAC - readable_skill_name = "JTAC" - skill_level = SKILL_JTAC_NOVICE - max_skill_level = SKILL_JTAC_MAX - -/datum/skill/execution - skill_name = SKILL_EXECUTION - skill_level = SKILL_EXECUTION_DEFAULT - max_skill_level = SKILL_EXECUTION_MAX - -/datum/skill/intel - skill_name = SKILL_INTEL - skill_level = SKILL_INTEL_NOVICE - max_skill_level = SKILL_INTEL_MAX - -/datum/skill/domestic - skill_name = SKILL_DOMESTIC - skill_level = SKILL_DOMESTIC_NONE - max_skill_level = SKILL_DOMESTIC_MAX - -/datum/skill/fireman - skill_name = SKILL_FIREMAN - readable_skill_name = "fireman carrying" - skill_level = SKILL_FIREMAN_DEFAULT - max_skill_level = SKILL_FIREMAN_MAX - -/// Skill with an extra S at the end is a collection of multiple skills. Basically a skillSET -/// This is to organize and provide a common interface to the huge heap of skills there are -/datum/skills - /// The name of the skillset - var/name - // The mob that has this skillset - var/mob/owner - - // List of skill datums. - // Also, if this is populated when the datum is created, it will set the skill levels automagically - var/list/skills = list() - // Same as above, but for children of parents that just add a lil something else - var/list/additional_skills = list() - -/datum/skills/New(mob/skillset_owner) - owner = skillset_owner - - // Setup every single skill - for(var/skill_type in subtypesof(/datum/skill)) - var/datum/skill/S = new skill_type() - - // Fancy hack to convert a list of desired skill levels in each named skill into a skill level in the actual skill datum - // Lets the skills list be used multipurposely for both storing skill datums and choosing skill levels for different skillsets - var/predetermined_skill_level = additional_skills[S.skill_name] ? additional_skills[S.skill_name] : skills[S.skill_name] - skills[S.skill_name] = S - - if(!isnull(predetermined_skill_level)) - S.set_skill(predetermined_skill_level, owner) - -/datum/skills/Destroy() - owner = null - skills = null // Don't need to delete, /datum/skill should softdel - SStgui.close_uis(src) - return ..() - -// Checks if the given skill is contained in this skillset at all -/datum/skills/proc/has_skill(skill) - return isnull(skills[skill]) - -// Returns the skill DATUM for the given skill -/datum/skills/proc/get_skill(skill) - if(!skills) - return null - return skills[skill] - -// Returns the skill level for the given skill -/datum/skills/proc/get_skill_level(skill) - var/datum/skill/S = get_skill(skill) - if(!S) - return -1 - if(QDELETED(S)) - return -1 - return S.get_skill_level() - -// Sets the skill LEVEL for a given skill -/datum/skills/proc/set_skill(skill, new_level) - var/datum/skill/S = skills[skill] - if(!S) - return - return S.set_skill(new_level, owner) - -/datum/skills/proc/increment_skill(skill, increment, cap) - var/datum/skill/S = skills[skill] - if(!S || skillcheck(owner, skill, cap)) - return - return S.set_skill(min(cap,S.skill_level+increment), owner) - -/datum/skills/proc/decrement_skill(skill, increment) - var/datum/skill/S = skills[skill] - if(!S) - return - return S.set_skill(max(0,S.skill_level-increment), owner) - -// Checks if the skillset is AT LEAST skilled enough to pass a skillcheck for the given skill level -/datum/skills/proc/is_skilled(skill, req_level, is_explicit = FALSE) - var/datum/skill/S = get_skill(skill) - if(QDELETED(S)) - return FALSE - return S.is_skilled(req_level, is_explicit) - -// Adjusts the full skillset to a new type of skillset. Pass the datum type path for the desired skillset -/datum/skills/proc/set_skillset(skillset_type) - var/datum/skills/skillset = new skillset_type() - var/list/skill_levels = initial(skillset.skills) - - name = skillset.name - for(var/skill in skill_levels) - set_skill(skill, skill_levels[skill]) - qdel(skillset) - -/* ---------------------- -CIVILIAN ---------------------- -*/ - -/datum/skills/civilian - name = "Civilian" - skills = list( - SKILL_CQC = SKILL_CQC_DEFAULT, - SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, - SKILL_ENDURANCE = SKILL_ENDURANCE_NONE, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - ) - -/datum/skills/civilian/manager - name = "Weyland-Yutani Manager" // Semi-competent leader with basic knowledge in most things. - skills = list( - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_LEADERSHIP = SKILL_LEAD_MASTER, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - SKILL_INTEL = SKILL_INTEL_EXPERT, - ) - -/datum/skills/civilian/manager/director - name = "Weyland-Yutani Director" - skills = list( - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_LEADERSHIP = SKILL_LEAD_MASTER, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_EXECUTION = SKILL_EXECUTION_TRAINED, - SKILL_INTEL = SKILL_INTEL_EXPERT, - ) - -/datum/skills/civilian/survivor - name = "Survivor" - skills = list( - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, - ) - -/datum/skills/civilian/survivor/manager - name = "Weyland-Yutani Manager" - skills = list( - SKILL_LEADERSHIP = SKILL_LEAD_MASTER, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_INTEL = SKILL_INTEL_EXPERT, - ) - -/datum/skills/civilian/survivor/goon - name = "Survivor Goon" - skills = list( - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - ) - -/datum/skills/civilian/survivor/pmc - name = "Survivor PMC" - additional_skills = list( - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - ) - -/datum/skills/civilian/survivor/doctor - name = "Survivor Doctor" - additional_skills = list( - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_SURGERY = SKILL_SURGERY_TRAINED, - ) - -/datum/skills/civilian/survivor/clf - name = "Survivor CLF" - additional_skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - ) - -/datum/skills/civilian/survivor/scientist - name = "Survivor Scientist" - additional_skills = list( - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_SURGERY = SKILL_SURGERY_TRAINED, - SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, - ) - -/datum/skills/civilian/survivor/chef - name = "Survivor Chef" - additional_skills = list( - SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, - SKILL_DOMESTIC = SKILL_DOMESTIC_TRAINED, - ) - -/datum/skills/civilian/survivor/miner - name = "Survivor Miner" - additional_skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - ) - -/datum/skills/civilian/survivor/trucker - name = "Survivor Trucker" - additional_skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_VEHICLE = SKILL_VEHICLE_CREWMAN, - ) - -/datum/skills/civilian/survivor/engineer - name = "Survivor Engineer" - additional_skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - ) - -/datum/skills/civilian/survivor/chaplain - name = "Survivor Chaplain" - additional_skills = list( - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - ) - -/datum/skills/civilian/survivor/marshal - name = "Survivor Marshal" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, - SKILL_CQC = SKILL_CQC_SKILLED, - SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, - SKILL_CQC = SKILL_CQC_SKILLED, - SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, - ) - -/datum/skills/civilian/survivor/prisoner - name = "Survivor Prisoner" - additional_skills = list( - SKILL_CQC = SKILL_CQC_SKILLED, - SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - ) - -/datum/skills/civilian/survivor/gangleader - name = "Survivor Gang Leader" - additional_skills = list( - SKILL_CQC = SKILL_CQC_SKILLED, - SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - ) - -/* ---------------------- -MILITARY SURVIVORS ---------------------- -*/ -//Hardcore survivors with poor equipment and skills, prove you're the best of the best. - -/datum/skills/military/survivor/forecon_standard - name = "Reconnaissance Rifleman" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_LEADERSHIP = SKILL_LEAD_NOVICE, - SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, - SKILL_JTAC = SKILL_JTAC_TRAINED, - ) - -/datum/skills/military/survivor/forecon_techician - name = "Reconnaissance Support Technician" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_SURGERY = SKILL_SURGERY_NOVICE, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_LEADERSHIP = SKILL_LEAD_NOVICE, - SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, - SKILL_JTAC = SKILL_JTAC_TRAINED, - ) - -/datum/skills/military/survivor/forecon_marksman - name = "Reconnaissance Designated Marksman" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, - SKILL_SPEC_WEAPONS = SKILL_SPEC_SCOUT, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_LEADERSHIP = SKILL_LEAD_NOVICE, - SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, - SKILL_JTAC = SKILL_JTAC_TRAINED, - ) - -/datum/skills/military/survivor/forecon_smartgunner - name = "Reconnaissance Smartgunner" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, - SKILL_SPEC_WEAPONS = SKILL_SPEC_SMARTGUN, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_LEADERSHIP = SKILL_LEAD_NOVICE, - SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, - SKILL_JTAC = SKILL_JTAC_TRAINED, - ) - -/datum/skills/military/survivor/forecon_grenadier - name = "Reconnaissance Grenadier" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, - SKILL_SPEC_WEAPONS = SKILL_SPEC_GRENADIER, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_LEADERSHIP = SKILL_LEAD_NOVICE, - SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, - SKILL_JTAC = SKILL_JTAC_TRAINED, - ) - -/datum/skills/military/survivor/forecon_squad_leader - name = "Reconnaissance Squad Leader" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_CQC = SKILL_CQC_SKILLED, - SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_JTAC = SKILL_JTAC_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, - SKILL_JTAC = SKILL_JTAC_TRAINED, - ) - -/* ---------------------- -COMMAND STAFF ---------------------- -*/ - -/datum/skills/general - name = "General" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_LEADERSHIP = SKILL_LEAD_MASTER, - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_JTAC = SKILL_JTAC_MASTER, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_EXECUTION = SKILL_EXECUTION_TRAINED, //can BE people - SKILL_INTEL = SKILL_INTEL_EXPERT - ) - -/datum/skills/commander - name = "Commanding Officer" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_LEADERSHIP = SKILL_LEAD_MASTER, - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_SURGERY = SKILL_SURGERY_NOVICE, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_CQC = SKILL_CQC_SKILLED, - SKILL_SPEC_WEAPONS = SKILL_SPEC_SMARTGUN, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_JTAC = SKILL_JTAC_MASTER, - SKILL_EXECUTION = SKILL_EXECUTION_TRAINED, //can BE people - SKILL_INTEL = SKILL_INTEL_EXPERT, - SKILL_NAVIGATIONS = SKILL_NAVIGATIONS_TRAINED //can change ship alt - ) - -/datum/skills/XO - name = "Executive Officer" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, //to fix CIC apc. - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_LEADERSHIP = SKILL_LEAD_MASTER, - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_SURGERY = SKILL_SURGERY_NOVICE, - SKILL_POLICE = SKILL_POLICE_FLASH, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_CQC = SKILL_CQC_SKILLED, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_JTAC = SKILL_JTAC_MASTER, - SKILL_INTEL = SKILL_INTEL_EXPERT, - SKILL_NAVIGATIONS = SKILL_NAVIGATIONS_TRAINED, - ) - -/datum/skills/SO - name = "Staff Officer" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_POLICE = SKILL_POLICE_FLASH, - SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED, - SKILL_JTAC = SKILL_JTAC_EXPERT, - SKILL_INTEL = SKILL_INTEL_TRAINED, - ) - -/datum/skills/SEA - name = "Senior Enlisted Advisor" - skills = list( - SKILL_CQC = SKILL_CQC_SKILLED, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_SURGERY = SKILL_SURGERY_TRAINED, - SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, - SKILL_PILOT = SKILL_PILOT_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_VEHICLE = SKILL_VEHICLE_LARGE, - SKILL_JTAC = SKILL_JTAC_EXPERT, - SKILL_INTEL = SKILL_INTEL_EXPERT, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - ) - -/datum/skills/SEA/New(mob/skillset_owner) - ..() - give_action(skillset_owner, /datum/action/looc_toggle) - -/datum/skills/SEA/Destroy() - remove_action(owner, /datum/action/looc_toggle) - return ..() - -/datum/skills/CMO - name = "CMO" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, - SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_SURGERY = SKILL_SURGERY_TRAINED, - SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, - SKILL_POLICE = SKILL_POLICE_FLASH, - SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, - SKILL_JTAC = SKILL_JTAC_EXPERT, - SKILL_INTEL = SKILL_INTEL_TRAINED, - ) - -/datum/skills/CMP - name = "Chief MP" - skills = list( - SKILL_CQC = SKILL_CQC_SKILLED, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_JTAC = SKILL_JTAC_EXPERT, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_INTEL = SKILL_INTEL_TRAINED, - ) - -/datum/skills/CE - name = "Chief Engineer" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_MASTER, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, - SKILL_LEADERSHIP = SKILL_LEAD_MASTER, - SKILL_POLICE = SKILL_POLICE_FLASH, - SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_JTAC = SKILL_JTAC_MASTER, - SKILL_INTEL = SKILL_INTEL_TRAINED, - SKILL_NAVIGATIONS = SKILL_NAVIGATIONS_TRAINED, - ) - -/datum/skills/RO - name = "Requisition Officer" - skills = list( - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_POLICE = SKILL_POLICE_FLASH, - SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, - SKILL_JTAC = SKILL_JTAC_EXPERT, - SKILL_INTEL = SKILL_INTEL_TRAINED, - ) - -/* ---------------------- -MILITARY NONCOMBATANT ---------------------- -*/ - -/datum/skills/doctor - name = "Doctor" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_SURGERY = SKILL_SURGERY_TRAINED, - ) - -/datum/skills/nurse - name = "Nurse" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_SURGERY = SKILL_SURGERY_NOVICE, - ) - -/datum/skills/researcher - name = "Researcher" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_SURGERY = SKILL_SURGERY_TRAINED, - SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, - SKILL_INTEL = SKILL_INTEL_TRAINED, - ) - -/datum/skills/pilot - name = "Pilot Officer" - skills = list( - SKILL_PILOT = SKILL_PILOT_EXPERT, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_SURGERY = SKILL_SURGERY_NOVICE, - SKILL_JTAC = SKILL_JTAC_TRAINED, - SKILL_INTEL = SKILL_INTEL_TRAINED, - ) - -/datum/skills/crew_chief - name = "Dropship Crew Chief" - skills = list( - SKILL_PILOT = SKILL_PILOT_TRAINED, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_SURGERY = SKILL_SURGERY_NOVICE, - SKILL_JTAC = SKILL_JTAC_TRAINED, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - ) - -/datum/skills/MP - name = "Military Police" - skills = list( - SKILL_CQC = SKILL_CQC_SKILLED, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - ) - -/datum/skills/MW - name = "Military Warden" - skills = list( - SKILL_CQC = SKILL_CQC_SKILLED, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - ) - -/datum/skills/provost - name = "Provost" - skills = list( - SKILL_CQC = SKILL_CQC_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - ) - -/datum/skills/OT - name = "Ordnance Technician" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_MASTER, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - ) - -/datum/skills/MT - name = "Maintenance Technician" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_MASTER, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_DOMESTIC = SKILL_DOMESTIC_TRAINED, - ) - -/datum/skills/mess_technician - name = "Mess Technician" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, // need to hunt food somehow - SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, - SKILL_DOMESTIC = SKILL_DOMESTIC_MASTER - ) - -/datum/skills/CT - name = "Cargo Technician" - skills = list( - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - ) - -/* ---------------------- -SYNTHETIC ---------------------- -*/ - -/datum/skills/synthetic - name = "Synthetic" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_MASTER, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, - SKILL_MEDICAL = SKILL_MEDICAL_MASTER, - SKILL_SURGERY = SKILL_SURGERY_EXPERT, - SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, - SKILL_PILOT = SKILL_PILOT_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_MAX, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_VEHICLE = SKILL_VEHICLE_LARGE, - SKILL_JTAC = SKILL_JTAC_EXPERT, - SKILL_INTEL = SKILL_INTEL_EXPERT, - SKILL_DOMESTIC = SKILL_DOMESTIC_MASTER, - SKILL_NAVIGATIONS = SKILL_NAVIGATIONS_TRAINED, - ) - -/datum/skills/colonial_synthetic - name = SYNTH_COLONY - skills = list( - SKILL_CQC = SKILL_CQC_SKILLED, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_SURGERY = SKILL_SURGERY_TRAINED, - SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, - SKILL_PILOT = SKILL_PILOT_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_VEHICLE = SKILL_VEHICLE_LARGE, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - SKILL_INTEL = SKILL_INTEL_TRAINED, - SKILL_DOMESTIC = SKILL_DOMESTIC_MASTER, - ) - -/datum/skills/working_joe - name = SYNTH_WORKING_JOE - skills = list( - SKILL_CQC = SKILL_CQC_SKILLED, - SKILL_ENGINEER = SKILL_ENGINEER_MASTER, //So they can fully use the Maintenance Jack - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_VEHICLE = SKILL_VEHICLE_LARGE, - SKILL_DOMESTIC = SKILL_DOMESTIC_MASTER, - ) - -/datum/skills/infiltrator_synthetic - name = SYNTH_INFILTRATOR - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_MASTER, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, - SKILL_MEDICAL = SKILL_MEDICAL_MASTER, - SKILL_SURGERY = SKILL_SURGERY_EXPERT, - SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, - SKILL_PILOT = SKILL_PILOT_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_MAX, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_VEHICLE = SKILL_VEHICLE_CREWMAN, - SKILL_JTAC = SKILL_JTAC_EXPERT, - SKILL_INTEL = SKILL_INTEL_EXPERT, - SKILL_DOMESTIC = SKILL_DOMESTIC_MASTER, - SKILL_ANTAG = SKILL_ANTAG_AGENT, - ) - -/* ------------------------------- -United States Colonial Marines ------------------------------- -*/ - -/datum/skills/pfc - name = "Private" - //same as default - -/datum/skills/pfc/crafty - name = "Crafty Private" - skills = list( - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, - SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, - ) - -/datum/skills/combat_medic - name = "Combat Medic" - skills = list( - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_SURGERY = SKILL_SURGERY_NOVICE, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/datum/skills/combat_medic/crafty - name = "Crafty Combat Medic" - skills = list( - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, - SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, - ) - -/datum/skills/combat_engineer - name = "Combat Engineer" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/datum/skills/smartgunner - name = "Squad Smartgunner" - skills = list( - SKILL_SPEC_WEAPONS = SKILL_SPEC_SMARTGUN, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/datum/skills/specialist - name = "Squad Weapons Specialist" - skills = list( - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, - SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, //to use c4 in demo set. - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_JTAC = SKILL_JTAC_BEGINNER - ) - -/datum/skills/tl - name = "Fireteam Leader" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_JTAC = SKILL_JTAC_EXPERT, - ) - -/datum/skills/SL - name = "Squad Leader" - skills = list( - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - SKILL_JTAC = SKILL_JTAC_TRAINED, - SKILL_INTEL = SKILL_INTEL_TRAINED, - ) - -/datum/skills/intel - name = "Intelligence Officer" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, - SKILL_JTAC = SKILL_JTAC_TRAINED, - SKILL_INTEL = SKILL_INTEL_EXPERT, - ) - -/* -------------------------- -COLONIAL LIBERATION FRONT -------------------------- -*/ - -/datum/skills/clf - name = "CLF Soldier" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, - SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/datum/skills/clf/combat_engineer - name = "CLF Engineer" - skills = list( - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/datum/skills/clf/combat_medic - name = "CLF Medic" - skills = list( - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_SURGERY = SKILL_SURGERY_TRAINED, - SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/datum/skills/clf/specialist - name = "CLF Specialist" - skills = list( - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_CQC = SKILL_CQC_SKILLED, - SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, //to use c4 in demo set. - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_JTAC = SKILL_JTAC_TRAINED - ) - -/datum/skills/clf/leader - name = "CLF Leader" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, // to use their C4 - SKILL_CQC = SKILL_CQC_EXPERT, - SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, - SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_JTAC = SKILL_JTAC_EXPERT, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI - ) - -/datum/skills/clf/commander - name = "CLF Cell Commander" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CQC = SKILL_CQC_EXPERT, - SKILL_LEADERSHIP = SKILL_LEAD_MASTER, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, - SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED, - SKILL_VEHICLE = SKILL_VEHICLE_LARGE, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_JTAC = SKILL_JTAC_MASTER, - SKILL_SPEC_WEAPONS = SKILL_SPEC_SMARTGUN, - SKILL_EXECUTION = SKILL_EXECUTION_TRAINED, - ) - -/* ------------ -FREELANCERS ------------ -*/ - -//NOTE: Freelancer training is similar to the USCM's, but with additional construction skills - -/datum/skills/freelancer - name = "Freelancer Private" - skills = list( - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - ) - -/datum/skills/freelancer/combat_medic - name = "Freelancer Medic" - skills = list( - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_SURGERY = SKILL_SURGERY_TRAINED, - ) - -/datum/skills/freelancer/SL - name = "Freelancer Leader" - skills = list( - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, - SKILL_JTAC = SKILL_JTAC_EXPERT, - ) - -/* --------------------------- -UNITED PROGRESSIVE PEOPLES --------------------------- -*/ - -//NOTE: UPP make up for their subpar gear with extreme training. - -/datum/skills/upp - name = "UPP Private" - skills = list( - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, - SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_EXPERT, - SKILL_CQC = SKILL_CQC_EXPERT, - SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - ) - -/datum/skills/upp/combat_engineer - name = "UPP Sapper" - skills = list( - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_EXPERT, - SKILL_CQC = SKILL_CQC_EXPERT, - SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - ) - -/datum/skills/upp/combat_medic - name = "UPP Medic" - skills = list( - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_SURGERY = SKILL_SURGERY_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, //trained in medicine more than combat - SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, - SKILL_CQC = SKILL_CQC_TRAINED - ) - -/datum/skills/upp/specialist - name = "UPP Specialist" - skills = list( - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, - SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - SKILL_JTAC = SKILL_JTAC_TRAINED, - SKILL_SPEC_WEAPONS = SKILL_SPEC_UPP, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_CQC = SKILL_CQC_MASTER, - ) - -/datum/skills/upp/SL - name = "UPP Squad Leader" - skills = list( - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_JTAC = SKILL_JTAC_EXPERT, - ) - -/datum/skills/upp/military_police - name = "UPP Military Police" - skills = list( - SKILL_CQC = SKILL_CQC_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, - SKILL_ENDURANCE = SKILL_ENDURANCE_EXPERT, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, - SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - ) - -/datum/skills/upp/officer - name = "UPP Officer" - skills = list( - SKILL_CQC = SKILL_CQC_EXPERT, - SKILL_POLICE = SKILL_POLICE_FLASH, - SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, - SKILL_ENDURANCE = SKILL_ENDURANCE_EXPERT, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, - SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - SKILL_JTAC = SKILL_JTAC_EXPERT, - ) - -/datum/skills/upp/commander - name = "UPP Command Officer" - skills = list( - SKILL_CQC = SKILL_CQC_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, - SKILL_LEADERSHIP = SKILL_LEAD_MASTER, - SKILL_ENDURANCE = SKILL_ENDURANCE_EXPERT, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - SKILL_JTAC = SKILL_JTAC_EXPERT, - ) -/datum/skills/upp/conscript - name = "UPP Conscript" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, - ) - -/* ----------------------------- -Private Military Contractors ----------------------------- -*/ - -//NOTE: Compared to the USCM, PMCs have additional firearms training, construction skills and policing skills - -/datum/skills/pmc - name = "PMC Private" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, - ) - -/datum/skills/pmc/medic - name = "PMC Medic" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_SURGERY = SKILL_SURGERY_NOVICE, - SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, - ) - -/datum/skills/pmc/medic/chem - name = "PMC Medical Investigator" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, - SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, - ) - -/datum/skills/pmc/smartgunner - name = "PMC Smartgunner" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_SPEC_WEAPONS = SKILL_SPEC_SMARTGUN, - SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/datum/skills/pmc/specialist - name = "PMC Specialist" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/datum/skills/pmc/SL - name = "PMC Leader" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, - SKILL_JTAC = SKILL_JTAC_TRAINED, - ) - -/datum/skills/pmc/SL/chem - name = "PMC Lead Investigator" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, - SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, - SKILL_JTAC = SKILL_JTAC_TRAINED, - ) - -/datum/skills/pmc/tank_crew - name = "Vehicle Crewman" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - SKILL_JTAC = SKILL_JTAC_TRAINED, - SKILL_VEHICLE = SKILL_VEHICLE_CREWMAN, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - ) - -/datum/skills/pmc/doctor - name = "PMC Triage Doctor" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, - SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_SURGERY = SKILL_SURGERY_EXPERT, - SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, //trained in medicine more than combat - SKILL_CQC = SKILL_CQC_TRAINED - ) - -/datum/skills/pmc/engineer - name = "PMC Corporate Technician" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_MASTER, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, - SKILL_JTAC = SKILL_JTAC_TRAINED, - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - ) - -/datum/skills/pmc/director - name = "PMC Site Director" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_LEADERSHIP = SKILL_LEAD_MASTER, - SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, - SKILL_JTAC = SKILL_JTAC_MASTER, - SKILL_EXECUTION = SKILL_EXECUTION_TRAINED, - ) - -/* ---------------------- -CONTRACTORS ---------------------- -*/ -/datum/skills/contractor - name = "Contractor Standard" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_MAX, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_MASTER, - SKILL_VEHICLE = SKILL_VEHICLE_CREWMAN, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - ) - -/datum/skills/contractor/leader - name = "Contractor Leader" - skills = list( - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_MAX, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_LEADERSHIP = SKILL_LEAD_MASTER, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_MASTER, - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_VEHICLE = SKILL_VEHICLE_CREWMAN, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_ENDURANCE = SKILL_ENDURANCE_EXPERT, - SKILL_JTAC = SKILL_JTAC_MASTER, - ) - -/datum/skills/contractor/medic - name = "Contractor Medic" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_MAX, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_MASTER, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_SURGERY = SKILL_SURGERY_EXPERT, - SKILL_VEHICLE = SKILL_VEHICLE_CREWMAN, - SKILL_ENDURANCE = SKILL_ENDURANCE_EXPERT, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/datum/skills/contractor/engi - name = "Contractor Engi" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_MAX, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MAX, - SKILL_FIREARMS = SKILL_FIREARMS_MAX, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_MASTER, - SKILL_VEHICLE = SKILL_VEHICLE_MAX, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_JTAC = SKILL_JTAC_EXPERT, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_POWERLOADER = SKILL_POWERLOADER_MAX, - ) - -/datum/skills/contractor/heavy - name = "Contractor Machinegunner" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_MAX, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_MASTER, - SKILL_VEHICLE = SKILL_VEHICLE_CREWMAN, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_SPEC_WEAPONS = SKILL_SPEC_SMARTGUN, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - ) - -/* ---------------------- -COLONIAL MARSHALS ---------------------- -*/ -/datum/skills/cmb - name = "CMB Deputy" - skills = list( - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, - SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, - ) - -/datum/skills/cmb/leader - name = "CMB Marshal" - skills = list( - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_LEADERSHIP = SKILL_LEAD_MASTER, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_FIREMAN = SKILL_FIREMAN_MASTER, - SKILL_FIREARMS = SKILL_FIREARMS_MAX, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - SKILL_ENDURANCE = SKILL_ENDURANCE_EXPERT, - SKILL_JTAC = SKILL_JTAC_EXPERT, - ) - -/datum/skills/synthetic/cmb - name = "CMB Investigative Synthetic" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_MASTER, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, - SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, // incase the synth needs to use consoles for investigations or tracking - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_SURGERY = SKILL_SURGERY_TRAINED, // Not a medical Synthetic, but operate if absolutely needed. - SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, - SKILL_PILOT = SKILL_PILOT_TRAINED, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_MAX, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_VEHICLE = SKILL_VEHICLE_LARGE, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - SKILL_INTEL = SKILL_INTEL_EXPERT, - SKILL_DOMESTIC = SKILL_DOMESTIC_MASTER - ) -/* ---------------------- -SPEC-OPS ---------------------- -*/ - -/datum/skills/commando - name = "Commando" - skills = list( - SKILL_CQC = SKILL_CQC_EXPERT, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/datum/skills/commando/medic - name = "Commando Medic" - skills = list( - SKILL_CQC = SKILL_CQC_EXPERT, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_SURGERY = SKILL_SURGERY_NOVICE, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/datum/skills/commando/leader - name = "Commando Leader" - skills = list( - SKILL_CQC = SKILL_CQC_EXPERT, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_JTAC = SKILL_JTAC_TRAINED, - ) - -/datum/skills/commando/deathsquad - name = "Deathsquad" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/datum/skills/commando/deathsquad/leader - name = "Deathsquad Leader" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/datum/skills/commando/deathsquad/officer - name = "Deathsquad Officer" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/datum/skills/spy - name = "Spy" - skills = list( - SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/datum/skills/ninja - name = "Ninja" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/* ---------------------- -MISCELLANEOUS ---------------------- -*/ - -/datum/skills/mercenary - name = "Mercenary" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - ) - -/datum/skills/mercenary/elite - name = "Elite Mercenary" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_MAX, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - ) - -/datum/skills/mercenary/elite/medic - name = "Elite Mercenary Medic" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_MAX, - SKILL_MEDICAL = SKILL_MEDICAL_MASTER, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_SURGERY = SKILL_SURGERY_EXPERT, - ) - -/datum/skills/mercenary/elite/engineer - name = "Elite Mercenary Engineer" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_MASTER, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, - SKILL_FIREARMS = SKILL_FIREARMS_MAX, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - SKILL_PILOT = SKILL_PILOT_EXPERT, - ) - -/datum/skills/mercenary/elite/heavy - name = "Elite Mercenary Heavy" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_MAX, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_VEHICLE = SKILL_VEHICLE_SMALL, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - ) - -/datum/skills/mercenary/elite/leader - name = "Elite Mercenary Leader" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_MAX, - SKILL_LEADERSHIP = SKILL_LEAD_MASTER, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_JTAC = SKILL_JTAC_MASTER, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_PILOT = SKILL_PILOT_EXPERT, - ) - -/datum/skills/dutchmerc - name = "Dutch's Dozen Mercenary" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - ) - -/datum/skills/dutchmedic - name = "Dutch's Dozen Medic" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_SURGERY = SKILL_SURGERY_NOVICE, - SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - ) - -/datum/skills/tank_crew - name = "Vehicle Crewman" - skills = list( - SKILL_VEHICLE = SKILL_VEHICLE_CREWMAN, - SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, - SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - SKILL_JTAC = SKILL_JTAC_EXPERT, - ) - -/datum/skills/gladiator - name = "Gladiator" - skills = list( - SKILL_CQC = SKILL_CQC_SKILLED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, - SKILL_LEADERSHIP = SKILL_LEAD_NOVICE, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - ) - -/datum/skills/gladiator/champion - name = "Gladiator Champion" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, - SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_JTAC = SKILL_JTAC_TRAINED, - ) - -/datum/skills/gladiator/champion/leader - name = "Gladiator Leader" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_LEADERSHIP = SKILL_LEAD_MASTER, //Spartacus! - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_JTAC = SKILL_JTAC_MASTER, - ) - -/datum/skills/yautja/warrior - name = "Yautja Warrior" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, - SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_SURGERY = SKILL_SURGERY_EXPERT, - SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_MAX, - SKILL_ANTAG = SKILL_ANTAG_HUNTER, - ) - -/datum/skills/dutch - name = "Dutch" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_MELEE_WEAPONS = SKILL_MELEE_MAX, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_LEADERSHIP = SKILL_LEAD_MASTER, - SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_JTAC = SKILL_JTAC_EXPERT, - SKILL_ANTAG = SKILL_ANTAG_HUNTER, - ) - -/datum/skills/cultist_leader - name = "Cultist Leader" - skills = list( - SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_MASTER, - SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_LEADERSHIP = SKILL_LEAD_MASTER, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_JTAC = SKILL_JTAC_MASTER, - ) - -/datum/skills/souto - name = "Souto Man" - skills = list( - SKILL_CQC = SKILL_CQC_MASTER, - SKILL_ENGINEER = SKILL_ENGINEER_ENGI, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, - SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, - SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, - SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, - SKILL_JTAC = SKILL_JTAC_BEGINNER, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - ) - -/datum/skills/everything //max it out - name = "Ultra" - skills = list( - SKILL_CQC = SKILL_CQC_MAX, - SKILL_MELEE_WEAPONS = SKILL_MELEE_MAX, - SKILL_FIREARMS = SKILL_FIREARMS_MAX, - SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, - SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, - SKILL_ENGINEER = SKILL_ENGINEER_MAX, - SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MAX, - SKILL_LEADERSHIP = SKILL_LEAD_MAX, - SKILL_MEDICAL = SKILL_MEDICAL_MAX, - SKILL_SURGERY = SKILL_SURGERY_MAX, - SKILL_RESEARCH = SKILL_RESEARCH_MAX, - SKILL_ANTAG = SKILL_ANTAG_MAX, - SKILL_PILOT = SKILL_PILOT_MAX, - SKILL_POLICE = SKILL_POLICE_MAX, - SKILL_FIREMAN = SKILL_FIREMAN_MAX, - SKILL_POWERLOADER = SKILL_POWERLOADER_MAX, - SKILL_VEHICLE = SKILL_VEHICLE_MAX, - SKILL_JTAC = SKILL_JTAC_MAX, - SKILL_EXECUTION = SKILL_EXECUTION_MAX, - SKILL_INTEL = SKILL_INTEL_MAX, - ) diff --git a/code/datums/skills/civilian.dm b/code/datums/skills/civilian.dm new file mode 100644 index 000000000000..9dc4afd78826 --- /dev/null +++ b/code/datums/skills/civilian.dm @@ -0,0 +1,214 @@ +/* +--------------------- +CIVILIAN +--------------------- +*/ + +/datum/skills/civilian + name = "Civilian" + skills = list( + SKILL_CQC = SKILL_CQC_DEFAULT, + SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, + SKILL_ENDURANCE = SKILL_ENDURANCE_NONE, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + ) + +/datum/skills/civilian/manager + name = "Weyland-Yutani Manager" // Semi-competent leader with basic knowledge in most things. + skills = list( + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_INTEL = SKILL_INTEL_EXPERT, + ) + +/datum/skills/civilian/icc_investigation + name = "ICC CL - Black Market ERT" + skills = list( + SKILL_CQC = SKILL_CQC_DEFAULT, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, //The ASRS consoles + SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, + SKILL_POLICE = SKILL_POLICE_SKILLED, //The CMB Tradeband Compliance Device + ) + +/datum/skills/civilian/manager/director + name = "Weyland-Yutani Director" + skills = list( + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_EXECUTION = SKILL_EXECUTION_TRAINED, + SKILL_INTEL = SKILL_INTEL_EXPERT, + ) + +//civilian that are survivor could be in is own file maybe + +/datum/skills/civilian/survivor + name = "Survivor" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, + ) + +/datum/skills/civilian/survivor/manager + name = "Weyland-Yutani Manager" + skills = list( + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_INTEL = SKILL_INTEL_EXPERT, + ) + +/datum/skills/civilian/survivor/goon + name = "Survivor Goon" + additional_skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + ) + +/datum/skills/civilian/survivor/pmc + name = "Survivor PMC" + additional_skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + ) + +/datum/skills/civilian/survivor/pmc/medic + name = "Survivor PMC Medic" + additional_skills = list( + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, + SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + ) + +/datum/skills/civilian/survivor/pmc/engineer + name = "Survivor PMC Engineer" + additional_skills = list( + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + ) + +/datum/skills/civilian/survivor/doctor + name = "Survivor Doctor" + additional_skills = list( + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SURGERY = SKILL_SURGERY_TRAINED, + ) + +/datum/skills/civilian/survivor/clf + name = "Survivor CLF" + additional_skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + ) + +/datum/skills/civilian/survivor/scientist + name = "Survivor Scientist" + additional_skills = list( + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SURGERY = SKILL_SURGERY_TRAINED, + SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, + ) + +/datum/skills/civilian/survivor/chef + name = "Survivor Chef" + additional_skills = list( + SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, + SKILL_DOMESTIC = SKILL_DOMESTIC_TRAINED, + ) + +/datum/skills/civilian/survivor/miner + name = "Survivor Miner" + additional_skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + ) + +/datum/skills/civilian/survivor/trucker + name = "Survivor Trucker" + additional_skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_VEHICLE = SKILL_VEHICLE_CREWMAN, + ) + +/datum/skills/civilian/survivor/engineer + name = "Survivor Engineer" + additional_skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + ) + +/datum/skills/civilian/survivor/chaplain + name = "Survivor Chaplain" + additional_skills = list( + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + ) + +/datum/skills/civilian/survivor/marshal + name = "Survivor Marshal" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + ) + +/datum/skills/civilian/survivor/prisoner + name = "Survivor Prisoner" + additional_skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + ) + +/datum/skills/civilian/survivor/gangleader + name = "Survivor Gang Leader" + additional_skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + ) diff --git a/code/datums/skills/clf.dm b/code/datums/skills/clf.dm new file mode 100644 index 000000000000..6042febb6b48 --- /dev/null +++ b/code/datums/skills/clf.dm @@ -0,0 +1,92 @@ +/* +------------------------- +COLONIAL LIBERATION FRONT +------------------------- +*/ + +/datum/skills/clf + name = "CLF Soldier" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_ENDURANCE = SKILL_ENDURANCE_WEAK, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/clf/combat_engineer + name = "CLF Engineer" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_ENDURANCE = SKILL_ENDURANCE_WEAK, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/clf/combat_medic + name = "CLF Medic" + skills = list( + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_SURGERY = SKILL_SURGERY_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_ENDURANCE = SKILL_ENDURANCE_WEAK, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/clf/specialist + name = "CLF Specialist" + skills = list( + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, //to use c4 in demo set. + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_JTAC = SKILL_JTAC_TRAINED + ) + +/datum/skills/clf/leader + name = "CLF Leader" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, // to use their C4 + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, + SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_JTAC = SKILL_JTAC_EXPERT, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI + ) + +/datum/skills/clf/commander + name = "CLF Cell Commander" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, + SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_LARGE, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_JTAC = SKILL_JTAC_MASTER, + SKILL_SPEC_WEAPONS = SKILL_SPEC_SMARTGUN, + SKILL_EXECUTION = SKILL_EXECUTION_TRAINED, + ) diff --git a/code/datums/skills/cmb.dm b/code/datums/skills/cmb.dm new file mode 100644 index 000000000000..b29a4c314567 --- /dev/null +++ b/code/datums/skills/cmb.dm @@ -0,0 +1,60 @@ +/* +--------------------- +COLONIAL MARSHALS +--------------------- +*/ +/datum/skills/cmb + name = "CMB Deputy" + skills = list( + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_CQC = SKILL_CQC_EXPERT, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + ) + +/datum/skills/cmb/leader + name = "CMB Marshal" + skills = list( + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_CQC = SKILL_CQC_EXPERT, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_FIREMAN = SKILL_FIREMAN_MASTER, + SKILL_FIREARMS = SKILL_FIREARMS_MAX, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_ENDURANCE = SKILL_ENDURANCE_EXPERT, + SKILL_JTAC = SKILL_JTAC_EXPERT, + ) + +/datum/skills/synthetic/cmb + name = "CMB Investigative Synthetic" + skills = list( + SKILL_CQC = SKILL_CQC_MASTER, + SKILL_ENGINEER = SKILL_ENGINEER_MASTER, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, // incase the synth needs to use consoles for investigations or tracking + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SURGERY = SKILL_SURGERY_TRAINED, // Not a medical Synthetic, but operate if absolutely needed. + SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, + SKILL_PILOT = SKILL_PILOT_TRAINED, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_MAX, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_VEHICLE = SKILL_VEHICLE_LARGE, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + SKILL_INTEL = SKILL_INTEL_EXPERT, + SKILL_DOMESTIC = SKILL_DOMESTIC_MASTER + ) diff --git a/code/datums/skills/commando.dm b/code/datums/skills/commando.dm new file mode 100644 index 000000000000..dabae682bd0b --- /dev/null +++ b/code/datums/skills/commando.dm @@ -0,0 +1,116 @@ +/* +--------------------- +SPEC-OPS +--------------------- +*/ + +/datum/skills/commando + name = "Commando" + skills = list( + SKILL_CQC = SKILL_CQC_EXPERT, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/commando/medic + name = "Commando Medic" + skills = list( + SKILL_CQC = SKILL_CQC_EXPERT, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/commando/leader + name = "Commando Leader" + skills = list( + SKILL_CQC = SKILL_CQC_EXPERT, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + SKILL_JTAC = SKILL_JTAC_TRAINED, + ) + +/datum/skills/commando/deathsquad + name = "Deathsquad" + skills = list( + SKILL_CQC = SKILL_CQC_MASTER, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/commando/deathsquad/leader + name = "Deathsquad Leader" + skills = list( + SKILL_CQC = SKILL_CQC_MASTER, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/commando/deathsquad/officer + name = "Deathsquad Officer" + skills = list( + SKILL_CQC = SKILL_CQC_MASTER, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/spy + name = "Spy" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/ninja + name = "Ninja" + skills = list( + SKILL_CQC = SKILL_CQC_MASTER, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) diff --git a/code/datums/skills/contractor.dm b/code/datums/skills/contractor.dm new file mode 100644 index 000000000000..183e95c941f5 --- /dev/null +++ b/code/datums/skills/contractor.dm @@ -0,0 +1,90 @@ +/* +--------------------- +CONTRACTORS +--------------------- +*/ +/datum/skills/contractor + name = "Contractor Standard" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_MAX, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, + SKILL_VEHICLE = SKILL_VEHICLE_LARGE, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + ) + +/datum/skills/contractor/leader + name = "Contractor Leader" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_MAX, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_LARGE, + SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_EXPERT, + SKILL_JTAC = SKILL_JTAC_MASTER, + ) + +/datum/skills/contractor/medic + name = "Contractor Medic" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_MAX, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SURGERY = SKILL_SURGERY_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_LARGE, + SKILL_ENDURANCE = SKILL_ENDURANCE_EXPERT, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/contractor/engi + name = "Contractor Engi" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_MAX, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MAX, + SKILL_FIREARMS = SKILL_FIREARMS_MAX, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_VEHICLE = SKILL_VEHICLE_LARGE, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_JTAC = SKILL_JTAC_EXPERT, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED, + ) + +/datum/skills/contractor/heavy + name = "Contractor Machinegunner" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_MAX, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, + SKILL_VEHICLE = SKILL_VEHICLE_LARGE, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_SPEC_WEAPONS = SKILL_SPEC_SMARTGUN, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + ) diff --git a/code/datums/skills/dutch.dm b/code/datums/skills/dutch.dm new file mode 100644 index 000000000000..5c2c63a8c463 --- /dev/null +++ b/code/datums/skills/dutch.dm @@ -0,0 +1,46 @@ +/datum/skills/dutch + name = "Dutch" + skills = list( + SKILL_CQC = SKILL_CQC_MASTER, + SKILL_MELEE_WEAPONS = SKILL_MELEE_MAX, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_JTAC = SKILL_JTAC_EXPERT, + SKILL_ANTAG = SKILL_ANTAG_HUNTER, + ) + +/datum/skills/dutchmerc + name = "Dutch's Dozen Mercenary" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + SKILL_ENDURANCE = SKILL_ENDURANCE_EXPERT, + ) + +/datum/skills/dutchmedic + name = "Dutch's Dozen Medic" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, + SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + SKILL_ENDURANCE = SKILL_ENDURANCE_EXPERT, + ) diff --git a/code/datums/skills/forecon.dm b/code/datums/skills/forecon.dm new file mode 100644 index 000000000000..4799dd68d617 --- /dev/null +++ b/code/datums/skills/forecon.dm @@ -0,0 +1,102 @@ +/* +--------------------- +MILITARY SURVIVORS +--------------------- +*/ +//Hardcore survivors with poor equipment and skills, prove you're the best of the best. + +/datum/skills/military/survivor/forecon_standard + name = "Reconnaissance Rifleman" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, + SKILL_LEADERSHIP = SKILL_LEAD_NOVICE, + SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, + SKILL_JTAC = SKILL_JTAC_TRAINED, + ) + +/datum/skills/military/survivor/forecon_techician + name = "Reconnaissance Support Technician" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, + SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, + SKILL_LEADERSHIP = SKILL_LEAD_NOVICE, + SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, + SKILL_JTAC = SKILL_JTAC_TRAINED, + ) + +/datum/skills/military/survivor/forecon_marksman + name = "Reconnaissance Designated Marksman" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_SPEC_WEAPONS = SKILL_SPEC_SCOUT, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, + SKILL_LEADERSHIP = SKILL_LEAD_NOVICE, + SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, + SKILL_JTAC = SKILL_JTAC_TRAINED, + ) + +/datum/skills/military/survivor/forecon_smartgunner + name = "Reconnaissance Smartgunner" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_SPEC_WEAPONS = SKILL_SPEC_SMARTGUN, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, + SKILL_LEADERSHIP = SKILL_LEAD_NOVICE, + SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, + SKILL_JTAC = SKILL_JTAC_TRAINED, + ) + +/datum/skills/military/survivor/forecon_sniper + name = "Reconnaissance Sniper" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_SPEC_WEAPONS = SKILL_SPEC_SNIPER, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, + SKILL_LEADERSHIP = SKILL_LEAD_NOVICE, + SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, + SKILL_JTAC = SKILL_JTAC_TRAINED, + ) + +/datum/skills/military/survivor/forecon_squad_leader + name = "Reconnaissance Squad Leader" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_JTAC = SKILL_JTAC_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, + SKILL_JTAC = SKILL_JTAC_TRAINED, + ) diff --git a/code/datums/skills/freelancer.dm b/code/datums/skills/freelancer.dm new file mode 100644 index 000000000000..7f7256318edb --- /dev/null +++ b/code/datums/skills/freelancer.dm @@ -0,0 +1,40 @@ +/* +----------- +FREELANCERS +----------- +*/ + +//NOTE: Freelancer training is similar to the USCM's, but with additional construction skills + +/datum/skills/freelancer + name = "Freelancer Private" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + ) + +/datum/skills/freelancer/combat_medic + name = "Freelancer Medic" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_SURGERY = SKILL_SURGERY_TRAINED, + ) + +/datum/skills/freelancer/SL + name = "Freelancer Leader" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_JTAC = SKILL_JTAC_EXPERT, + ) + + diff --git a/code/datums/skills/gladiator.dm b/code/datums/skills/gladiator.dm new file mode 100644 index 000000000000..7ba2c9eff455 --- /dev/null +++ b/code/datums/skills/gladiator.dm @@ -0,0 +1,33 @@ +/datum/skills/gladiator + name = "Gladiator" + skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, + SKILL_LEADERSHIP = SKILL_LEAD_NOVICE, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + ) + +/datum/skills/gladiator/champion + name = "Gladiator Champion" + skills = list( + SKILL_CQC = SKILL_CQC_MASTER, + SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_JTAC = SKILL_JTAC_TRAINED, + ) + +/datum/skills/gladiator/champion/leader + name = "Gladiator Leader" + skills = list( + SKILL_CQC = SKILL_CQC_MASTER, + SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, //Spartacus! + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_JTAC = SKILL_JTAC_MASTER, + ) diff --git a/code/datums/skills/mercenary.dm b/code/datums/skills/mercenary.dm new file mode 100644 index 000000000000..8d842ea30dd2 --- /dev/null +++ b/code/datums/skills/mercenary.dm @@ -0,0 +1,85 @@ +/datum/skills/mercenary + name = "Mercenary" + skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/mercenary/elite + name = "Elite Mercenary" + skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_MAX, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + ) + +/datum/skills/mercenary/elite/medic + name = "Elite Mercenary Medic" + skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_MAX, + SKILL_MEDICAL = SKILL_MEDICAL_MASTER, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_SURGERY = SKILL_SURGERY_TRAINED, + ) + +/datum/skills/mercenary/elite/engineer + name = "Elite Mercenary Engineer" + skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_ENGINEER = SKILL_ENGINEER_MASTER, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, + SKILL_FIREARMS = SKILL_FIREARMS_MAX, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_PILOT = SKILL_PILOT_EXPERT, + ) + +/datum/skills/mercenary/elite/heavy + name = "Elite Mercenary Heavy" + skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_MAX, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + ) + +/datum/skills/mercenary/elite/leader + name = "Elite Mercenary Leader" + skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_MAX, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_JTAC = SKILL_JTAC_MASTER, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_PILOT = SKILL_PILOT_EXPERT, + ) diff --git a/code/datums/skills/misc.dm b/code/datums/skills/misc.dm new file mode 100644 index 000000000000..e4f78219b5c6 --- /dev/null +++ b/code/datums/skills/misc.dm @@ -0,0 +1,86 @@ +/* +--------------------- +MISCELLANEOUS +--------------------- +*/ + +/datum/skills/tank_crew + name = "Vehicle Crewman" + skills = list( + SKILL_VEHICLE = SKILL_VEHICLE_CREWMAN, + SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_JTAC = SKILL_JTAC_EXPERT, + ) + +/datum/skills/yautja/warrior + name = "Yautja Warrior" + skills = list( + SKILL_CQC = SKILL_CQC_MASTER, + SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_SURGERY = SKILL_SURGERY_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_MAX, + SKILL_ANTAG = SKILL_ANTAG_HUNTER, + ) + +/datum/skills/cultist_leader + name = "Cultist Leader" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, + SKILL_CQC = SKILL_CQC_MASTER, + SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, + SKILL_ENGINEER = SKILL_ENGINEER_MASTER, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_JTAC = SKILL_JTAC_MASTER, + ) + +/datum/skills/souto + name = "Souto Man" + skills = list( + SKILL_CQC = SKILL_CQC_MASTER, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + ) + +/datum/skills/everything //max it out + name = "Ultra" + skills = list( + SKILL_CQC = SKILL_CQC_MAX, + SKILL_MELEE_WEAPONS = SKILL_MELEE_MAX, + SKILL_FIREARMS = SKILL_FIREARMS_MAX, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_ENGINEER = SKILL_ENGINEER_MAX, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MAX, + SKILL_LEADERSHIP = SKILL_LEAD_MAX, + SKILL_OVERWATCH = SKILL_OVERWATCH_MAX, + SKILL_MEDICAL = SKILL_MEDICAL_MAX, + SKILL_SURGERY = SKILL_SURGERY_MAX, + SKILL_RESEARCH = SKILL_RESEARCH_MAX, + SKILL_ANTAG = SKILL_ANTAG_MAX, + SKILL_PILOT = SKILL_PILOT_MAX, + SKILL_POLICE = SKILL_POLICE_MAX, + SKILL_FIREMAN = SKILL_FIREMAN_MAX, + SKILL_POWERLOADER = SKILL_POWERLOADER_MAX, + SKILL_VEHICLE = SKILL_VEHICLE_MAX, + SKILL_JTAC = SKILL_JTAC_MAX, + SKILL_EXECUTION = SKILL_EXECUTION_MAX, + SKILL_INTEL = SKILL_INTEL_MAX, + ) diff --git a/code/datums/skills/pmc.dm b/code/datums/skills/pmc.dm new file mode 100644 index 000000000000..df7027e2a7ab --- /dev/null +++ b/code/datums/skills/pmc.dm @@ -0,0 +1,171 @@ +/* +---------------------------- +Private Military Contractors +---------------------------- +*/ + +//NOTE: Compared to the USCM, PMCs have additional firearms training, construction skills and policing skills + +/datum/skills/pmc + name = "PMC Private" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + ) + +/datum/skills/pmc/medic + name = "PMC Medic" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + ) + +/datum/skills/pmc/medic/chem + name = "PMC Medical Investigator" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, + ) + +/datum/skills/pmc/smartgunner + name = "PMC Smartgunner" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_SPEC_WEAPONS = SKILL_SPEC_SMARTGUN, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/pmc/specialist + name = "PMC Specialist" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/pmc/SL + name = "PMC Leader" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_JTAC = SKILL_JTAC_TRAINED, + ) + +/datum/skills/pmc/SL/chem + name = "PMC Lead Investigator" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, + SKILL_JTAC = SKILL_JTAC_TRAINED, + ) + +/datum/skills/pmc/tank_crew + name = "Vehicle Crewman" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_JTAC = SKILL_JTAC_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_CREWMAN, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + ) + +/datum/skills/pmc/doctor + name = "PMC Triage Doctor" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SURGERY = SKILL_SURGERY_EXPERT, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, //trained in medicine more than combat + SKILL_CQC = SKILL_CQC_TRAINED + ) + +/datum/skills/pmc/engineer + name = "PMC Corporate Technician" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, + SKILL_ENGINEER = SKILL_ENGINEER_MASTER, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_JTAC = SKILL_JTAC_TRAINED, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + ) + +/datum/skills/pmc/director + name = "PMC Site Director" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_JTAC = SKILL_JTAC_MASTER, + SKILL_EXECUTION = SKILL_EXECUTION_TRAINED, + ) diff --git a/code/datums/skills/rmc.dm b/code/datums/skills/rmc.dm new file mode 100644 index 000000000000..89aa39b154ad --- /dev/null +++ b/code/datums/skills/rmc.dm @@ -0,0 +1,71 @@ +/* +---------------------------- +Royal Marines Commando +---------------------------- +*/ + +//NOTE: Skills take heavy from PMCs + +/datum/skills/rmc + name = "Royal Marines Commando" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, + ) + +/datum/skills/rmc/specialist + name = "Royal Marines Commando Specialist" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/rmc/smartgun + name = "Royal Marines Commando Smartgunner" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + SKILL_SPEC_WEAPONS = SKILL_SPEC_SMARTGUN, + ) + +/datum/skills/rmc/leader + name = "Royal Marines Commando Leader" + skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_JTAC = SKILL_JTAC_TRAINED, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + ) diff --git a/code/datums/skills/skills.dm b/code/datums/skills/skills.dm new file mode 100644 index 000000000000..5d1a69e174ed --- /dev/null +++ b/code/datums/skills/skills.dm @@ -0,0 +1,267 @@ +// Individual skill +/datum/skill + /// Name of the skill + var/skill_name = null + /// used for the view UI + var/readable_skill_name = null + /// Level of skill in this... skill + var/skill_level = 0 + /// the max level this skill can be, used for tgui + var/max_skill_level = 0 + +/datum/skill/proc/get_skill_level() + return skill_level + +/datum/skill/proc/set_skill(new_level, mob/owner) + skill_level = new_level + +/datum/skill/proc/is_skilled(req_level, is_explicit = FALSE) + if(is_explicit) + return (skill_level == req_level) + return (skill_level >= req_level) + +// Lots of defines here. See #define/skills.dm + +/datum/skill/cqc + skill_name = SKILL_CQC + readable_skill_name = "CQC" + skill_level = SKILL_CQC_DEFAULT + max_skill_level = SKILL_CQC_MAX + +/datum/skill/melee_weapons + skill_name = SKILL_MELEE_WEAPONS + readable_skill_name = "melee weapons" + skill_level = SKILL_MELEE_DEFAULT + max_skill_level = SKILL_MELEE_MAX + +/datum/skill/firearms + skill_name = SKILL_FIREARMS + skill_level = SKILL_FIREARMS_TRAINED + max_skill_level = SKILL_FIREARMS_MAX + +/datum/skill/spec_weapons + skill_name = SKILL_SPEC_WEAPONS + readable_skill_name = "specialist weapons" + skill_level = SKILL_SPEC_DEFAULT + max_skill_level = SKILL_SPEC_ALL + +/datum/skill/endurance + skill_name = SKILL_ENDURANCE + skill_level = SKILL_ENDURANCE_WEAK + max_skill_level = SKILL_ENDURANCE_MAX + +/datum/skill/engineer + skill_name = SKILL_ENGINEER + skill_level = SKILL_ENGINEER_DEFAULT + max_skill_level = SKILL_ENGINEER_MAX + +/datum/skill/construction + skill_name = SKILL_CONSTRUCTION + skill_level = SKILL_CONSTRUCTION_DEFAULT + max_skill_level = SKILL_CONSTRUCTION_MAX + +/datum/skill/leadership + skill_name = SKILL_LEADERSHIP + skill_level = SKILL_LEAD_NOVICE + max_skill_level = SKILL_LEAD_MAX + +/datum/skill/leadership/set_skill(new_level, mob/living/owner) + ..() + if(!owner) + return + + if(!ishuman(owner)) + return + + // Give/remove issue order actions + if(is_skilled(SKILL_LEAD_TRAINED)) + ADD_TRAIT(owner, TRAIT_LEADERSHIP, TRAIT_SOURCE_SKILL(skill_name)) + else + REMOVE_TRAIT(owner, TRAIT_LEADERSHIP, TRAIT_SOURCE_SKILL(skill_name)) + +/datum/skill/overwatch + skill_name = SKILL_OVERWATCH + skill_level = SKILL_OVERWATCH_DEFAULT + max_skill_level = SKILL_OVERWATCH_MAX + +/datum/skill/medical + skill_name = SKILL_MEDICAL + skill_level = SKILL_MEDICAL_DEFAULT + max_skill_level = SKILL_MEDICAL_MAX + +/datum/skill/surgery + skill_name = SKILL_SURGERY + skill_level = SKILL_SURGERY_DEFAULT + max_skill_level = SKILL_SURGERY_MAX + +/datum/skill/surgery/set_skill(new_level, mob/living/owner) + ..() + if(!owner) + return + + if(!ishuman(owner)) + return + + // Give/remove surgery toggle action + var/datum/action/surgery_toggle/surgery_action = locate() in owner.actions + if(is_skilled(SKILL_SURGERY_NOVICE)) + if(!surgery_action) + give_action(owner, /datum/action/surgery_toggle) + else + surgery_action.update_surgery_skill() + else + if(surgery_action) + surgery_action.remove_from(owner) + +/datum/skill/research + skill_name = SKILL_RESEARCH + skill_level = SKILL_RESEARCH_DEFAULT + max_skill_level = SKILL_RESEARCH_MAX + +/datum/skill/antag + skill_name = SKILL_ANTAG + readable_skill_name = "illegal technology" + skill_level = SKILL_ANTAG_DEFAULT + max_skill_level = SKILL_ANTAG_MAX + +/datum/skill/pilot + skill_name = SKILL_PILOT + skill_level = SKILL_PILOT_DEFAULT + max_skill_level = SKILL_PILOT_MAX + +/datum/skill/navigations + skill_name = SKILL_NAVIGATIONS + skill_level = SKILL_NAVIGATIONS_DEFAULT + max_skill_level = SKILL_NAVIGATIONS_MAX + +/datum/skill/police + skill_name = SKILL_POLICE + skill_level = SKILL_POLICE_DEFAULT + max_skill_level = SKILL_POLICE_MAX + +/datum/skill/powerloader + skill_name = SKILL_POWERLOADER + skill_level = SKILL_POWERLOADER_DEFAULT + max_skill_level = SKILL_POWERLOADER_MAX + +/datum/skill/vehicles + skill_name = SKILL_VEHICLE + skill_level = SKILL_VEHICLE_DEFAULT + max_skill_level = SKILL_VEHICLE_MAX + +/datum/skill/jtac + skill_name = SKILL_JTAC + readable_skill_name = "JTAC" + skill_level = SKILL_JTAC_NOVICE + max_skill_level = SKILL_JTAC_MAX + +/datum/skill/execution + skill_name = SKILL_EXECUTION + skill_level = SKILL_EXECUTION_DEFAULT + max_skill_level = SKILL_EXECUTION_MAX + +/datum/skill/intel + skill_name = SKILL_INTEL + skill_level = SKILL_INTEL_NOVICE + max_skill_level = SKILL_INTEL_MAX + +/datum/skill/domestic + skill_name = SKILL_DOMESTIC + skill_level = SKILL_DOMESTIC_NONE + max_skill_level = SKILL_DOMESTIC_MAX + +/datum/skill/fireman + skill_name = SKILL_FIREMAN + readable_skill_name = "fireman carrying" + skill_level = SKILL_FIREMAN_DEFAULT + max_skill_level = SKILL_FIREMAN_MAX + +/// Skill with an extra S at the end is a collection of multiple skills. Basically a skillSET +/// This is to organize and provide a common interface to the huge heap of skills there are +/datum/skills + /// The name of the skillset + var/name + // The mob that has this skillset + var/mob/owner + + // List of skill datums. + // Also, if this is populated when the datum is created, it will set the skill levels automagically + var/list/skills = list() + // Same as above, but for children of parents that just add a lil something else + var/list/additional_skills = list() + +/datum/skills/New(mob/skillset_owner) + owner = skillset_owner + + // Setup every single skill + for(var/skill_type in subtypesof(/datum/skill)) + var/datum/skill/S = new skill_type() + + // Fancy hack to convert a list of desired skill levels in each named skill into a skill level in the actual skill datum + // Lets the skills list be used multipurposely for both storing skill datums and choosing skill levels for different skillsets + var/predetermined_skill_level = additional_skills[S.skill_name] ? additional_skills[S.skill_name] : skills[S.skill_name] + skills[S.skill_name] = S + + if(!isnull(predetermined_skill_level)) + S.set_skill(predetermined_skill_level, owner) + +/datum/skills/Destroy() + owner = null + skills = null // Don't need to delete, /datum/skill should softdel + SStgui.close_uis(src) + return ..() + +// Checks if the given skill is contained in this skillset at all +/datum/skills/proc/has_skill(skill) + return isnull(skills[skill]) + +// Returns the skill DATUM for the given skill +/datum/skills/proc/get_skill(skill) + if(!skills) + return null + return skills[skill] + +// Returns the skill level for the given skill +/datum/skills/proc/get_skill_level(skill) + var/datum/skill/S = get_skill(skill) + if(!S) + return -1 + if(QDELETED(S)) + return -1 + return S.get_skill_level() + +// Sets the skill LEVEL for a given skill +/datum/skills/proc/set_skill(skill, new_level) + var/datum/skill/S = skills[skill] + if(!S) + return + return S.set_skill(new_level, owner) + +/datum/skills/proc/increment_skill(skill, increment, cap) + var/datum/skill/S = skills[skill] + if(!S || skillcheck(owner, skill, cap)) + return + return S.set_skill(min(cap,S.skill_level+increment), owner) + +/datum/skills/proc/decrement_skill(skill, increment) + var/datum/skill/S = skills[skill] + if(!S) + return + return S.set_skill(max(0,S.skill_level-increment), owner) + +// Checks if the skillset is AT LEAST skilled enough to pass a skillcheck for the given skill level +/datum/skills/proc/is_skilled(skill, req_level, is_explicit = FALSE) + var/datum/skill/S = get_skill(skill) + if(QDELETED(S)) + return FALSE + return S.is_skilled(req_level, is_explicit) + +// Adjusts the full skillset to a new type of skillset. Pass the datum type path for the desired skillset +/datum/skills/proc/set_skillset(skillset_type) + var/datum/skills/skillset = new skillset_type() + var/list/skill_levels = initial(skillset.skills) + + name = skillset.name + for(var/skill in skill_levels) + set_skill(skill, skill_levels[skill]) + qdel(skillset) diff --git a/code/datums/skills/synthetic.dm b/code/datums/skills/synthetic.dm new file mode 100644 index 000000000000..3925dd9605b3 --- /dev/null +++ b/code/datums/skills/synthetic.dm @@ -0,0 +1,90 @@ +/* +--------------------- +SYNTHETIC +--------------------- +*/ + +/datum/skills/synthetic + name = "Synthetic" + skills = list( + SKILL_CQC = SKILL_CQC_MASTER, + SKILL_ENGINEER = SKILL_ENGINEER_MASTER, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_MASTER, + SKILL_SURGERY = SKILL_SURGERY_EXPERT, + SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, + SKILL_PILOT = SKILL_PILOT_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_MAX, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_VEHICLE = SKILL_VEHICLE_LARGE, + SKILL_JTAC = SKILL_JTAC_EXPERT, + SKILL_INTEL = SKILL_INTEL_EXPERT, + SKILL_DOMESTIC = SKILL_DOMESTIC_MASTER, + SKILL_NAVIGATIONS = SKILL_NAVIGATIONS_TRAINED, + ) + +/datum/skills/colonial_synthetic + name = SYNTH_COLONY + skills = list( + SKILL_CQC = SKILL_CQC_EXPERT, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SURGERY = SKILL_SURGERY_TRAINED, + SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, + SKILL_PILOT = SKILL_PILOT_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_VEHICLE = SKILL_VEHICLE_LARGE, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + SKILL_INTEL = SKILL_INTEL_TRAINED, + SKILL_DOMESTIC = SKILL_DOMESTIC_MASTER, + ) + +/datum/skills/working_joe + name = SYNTH_WORKING_JOE + skills = list( + SKILL_CQC = SKILL_CQC_EXPERT, + SKILL_ENGINEER = SKILL_ENGINEER_MASTER, //So they can fully use the Maintenance Jack + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_VEHICLE = SKILL_VEHICLE_LARGE, + SKILL_DOMESTIC = SKILL_DOMESTIC_MASTER, + ) + +/datum/skills/infiltrator_synthetic + name = SYNTH_INFILTRATOR + skills = list( + SKILL_CQC = SKILL_CQC_MASTER, + SKILL_ENGINEER = SKILL_ENGINEER_MASTER, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_MASTER, + SKILL_SURGERY = SKILL_SURGERY_EXPERT, + SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, + SKILL_PILOT = SKILL_PILOT_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_MAX, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_VEHICLE = SKILL_VEHICLE_CREWMAN, + SKILL_JTAC = SKILL_JTAC_EXPERT, + SKILL_INTEL = SKILL_INTEL_EXPERT, + SKILL_DOMESTIC = SKILL_DOMESTIC_MASTER, + SKILL_ANTAG = SKILL_ANTAG_AGENT, + ) diff --git a/code/datums/skills/upp.dm b/code/datums/skills/upp.dm new file mode 100644 index 000000000000..77401ab62878 --- /dev/null +++ b/code/datums/skills/upp.dm @@ -0,0 +1,218 @@ +/* +-------------------------- +UNITED PROGRESSIVE PEOPLES +-------------------------- +*/ + +//NOTE: UPP make up for their subpar gear with extreme training. + +/datum/skills/upp + name = "UPP Private" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_CQC = SKILL_CQC_DEFAULT, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + ) + +/datum/skills/upp/combat_engineer + name = "UPP Sapper" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_CQC = SKILL_CQC_DEFAULT, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + ) + +/datum/skills/upp/combat_medic + name = "UPP Medic" + skills = list( + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SURGERY = SKILL_SURGERY_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_CQC = SKILL_CQC_DEFAULT, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + ) + +/datum/skills/upp/specialist + name = "UPP Specialist" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_JTAC = SKILL_JTAC_TRAINED, + SKILL_SPEC_WEAPONS = SKILL_SPEC_UPP, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + ) + +/datum/skills/upp/SL + name = "UPP Squad Leader" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_JTAC = SKILL_JTAC_EXPERT, + ) + +/datum/skills/upp/military_police + name = "UPP Military Police" + skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + ) + +/datum/skills/upp/officer + name = "UPP Officer" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_POLICE = SKILL_POLICE_FLASH, + SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_JTAC = SKILL_JTAC_EXPERT, + ) + +/datum/skills/upp/kapitan + name = "UPP Kapitan" + skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_JTAC = SKILL_JTAC_EXPERT, + ) + +/datum/skills/upp/commander + name = "UPP Command Officer" + skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_JTAC = SKILL_JTAC_EXPERT, + SKILL_EXECUTION = SKILL_EXECUTION_TRAINED, + ) +/datum/skills/upp/conscript + name = "UPP Conscript" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + ) + + +//Survivor + +/datum/skills/military/survivor/upp_private + name = "UPP Private" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, + SKILL_JTAC = SKILL_JTAC_TRAINED, + ) + +/datum/skills/military/survivor/upp_sapper + name = "UPP Sapper" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, + SKILL_JTAC = SKILL_JTAC_TRAINED, + ) + +/datum/skills/military/survivor/upp_medic + name = "UPP Medic" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SURGERY = SKILL_SURGERY_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, + SKILL_JTAC = SKILL_JTAC_TRAINED, + ) + +/datum/skills/military/survivor/upp_spec + name = "UPP Specialist" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_JTAC = SKILL_JTAC_TRAINED, + SKILL_SPEC_WEAPONS = SKILL_SPEC_UPP, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_LARGE, + ) + +/datum/skills/military/survivor/upp_sl + name = "UPP Squad Leader" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_SPEC_WEAPONS = SKILL_SPEC_UPP, + SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_VEHICLE = SKILL_VEHICLE_LARGE, + SKILL_JTAC = SKILL_JTAC_EXPERT, + ) diff --git a/code/datums/skills/uscm.dm b/code/datums/skills/uscm.dm new file mode 100644 index 000000000000..8a6d2fd2c8c2 --- /dev/null +++ b/code/datums/skills/uscm.dm @@ -0,0 +1,410 @@ +/* +------------------------------ +United States Colonial Marines +------------------------------ +*/ + +/datum/skills/pfc + name = "Private" + //same as default + +/datum/skills/pfc/crafty + name = "Crafty Private" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + ) + +/datum/skills/combat_medic + name = "Combat Medic" + skills = list( + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/combat_medic/crafty + name = "Crafty Combat Medic" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + ) + +/datum/skills/combat_engineer + name = "Combat Engineer" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/smartgunner + name = "Squad Smartgunner" + skills = list( + SKILL_SPEC_WEAPONS = SKILL_SPEC_SMARTGUN, + SKILL_JTAC = SKILL_JTAC_BEGINNER, + ) + +/datum/skills/specialist + name = "Squad Weapons Specialist" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, //to use c4 in demo set. + SKILL_SPEC_WEAPONS = SKILL_SPEC_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_JTAC = SKILL_JTAC_BEGINNER + ) + +/datum/skills/tl + name = "Fireteam Leader" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_JTAC = SKILL_JTAC_EXPERT, + ) + +/datum/skills/SL + name = "Squad Leader" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_JTAC = SKILL_JTAC_TRAINED, + SKILL_INTEL = SKILL_INTEL_TRAINED, + ) + +/datum/skills/intel + name = "Intelligence Officer" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, + SKILL_JTAC = SKILL_JTAC_TRAINED, + SKILL_INTEL = SKILL_INTEL_EXPERT, + ) + +/* +--------------------- +MILITARY NONCOMBATANT +--------------------- +*/ + +/datum/skills/doctor + name = "Doctor" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SURGERY = SKILL_SURGERY_TRAINED, + ) + +/datum/skills/nurse + name = "Nurse" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, + ) + +/datum/skills/researcher + name = "Researcher" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SURGERY = SKILL_SURGERY_TRAINED, + SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, + SKILL_INTEL = SKILL_INTEL_TRAINED, + ) + +/datum/skills/pilot + name = "Pilot Officer" + skills = list( + SKILL_PILOT = SKILL_PILOT_EXPERT, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, + SKILL_JTAC = SKILL_JTAC_TRAINED, + SKILL_INTEL = SKILL_INTEL_TRAINED, + ) + +/datum/skills/crew_chief + name = "Dropship Crew Chief" + skills = list( + SKILL_PILOT = SKILL_PILOT_TRAINED, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, + SKILL_JTAC = SKILL_JTAC_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + ) + +/datum/skills/MP + name = "Military Police" + skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + ) + +/datum/skills/MW + name = "Military Warden" + skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, + SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + ) + +/datum/skills/provost + name = "Provost" + skills = list( + SKILL_CQC = SKILL_CQC_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + ) + +/datum/skills/OT + name = "Ordnance Technician" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_MASTER, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + ) + +/datum/skills/MT + name = "Maintenance Technician" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_MASTER, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_DOMESTIC = SKILL_DOMESTIC_TRAINED, + ) + +/datum/skills/mess_technician + name = "Mess Technician" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, // need to hunt food somehow + SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_DOMESTIC = SKILL_DOMESTIC_MASTER + ) + +/datum/skills/CT + name = "Cargo Technician" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + ) + +/* +--------------------- +COMMAND STAFF +--------------------- +*/ + +/datum/skills/general + name = "General" + skills = list( + SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_ENDURANCE = SKILL_ENDURANCE_MAX, + SKILL_JTAC = SKILL_JTAC_MASTER, + SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL, + SKILL_EXECUTION = SKILL_EXECUTION_TRAINED, //can BE people + SKILL_INTEL = SKILL_INTEL_EXPERT + ) + +/datum/skills/commander + name = "Commanding Officer" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_SPEC_WEAPONS = SKILL_SPEC_SMARTGUN, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_JTAC = SKILL_JTAC_MASTER, + SKILL_EXECUTION = SKILL_EXECUTION_TRAINED, //can BE people + SKILL_INTEL = SKILL_INTEL_EXPERT, + SKILL_NAVIGATIONS = SKILL_NAVIGATIONS_TRAINED //can change ship alt + ) + +/datum/skills/XO + name = "Executive Officer" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, //to fix CIC apc. + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, + SKILL_POLICE = SKILL_POLICE_FLASH, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_JTAC = SKILL_JTAC_MASTER, + SKILL_INTEL = SKILL_INTEL_EXPERT, + SKILL_NAVIGATIONS = SKILL_NAVIGATIONS_TRAINED, + ) + +/datum/skills/SO + name = "Staff Officer" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_POLICE = SKILL_POLICE_FLASH, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_POWERLOADER = SKILL_POWERLOADER_TRAINED, + SKILL_JTAC = SKILL_JTAC_EXPERT, + SKILL_INTEL = SKILL_INTEL_TRAINED, + ) + +/datum/skills/SEA + name = "Senior Enlisted Advisor" + skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SURGERY = SKILL_SURGERY_TRAINED, + SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, + SKILL_PILOT = SKILL_PILOT_EXPERT, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_VEHICLE = SKILL_VEHICLE_LARGE, + SKILL_JTAC = SKILL_JTAC_EXPERT, + SKILL_INTEL = SKILL_INTEL_EXPERT, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + ) + +/datum/skills/SEA/New(mob/skillset_owner) + ..() + give_action(skillset_owner, /datum/action/looc_toggle) + +/datum/skills/SEA/Destroy() + remove_action(owner, /datum/action/looc_toggle) + return ..() + +/datum/skills/CMO + name = "CMO" + skills = list( + SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, + SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, + SKILL_SURGERY = SKILL_SURGERY_TRAINED, + SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, + SKILL_POLICE = SKILL_POLICE_FLASH, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, + SKILL_JTAC = SKILL_JTAC_EXPERT, + SKILL_INTEL = SKILL_INTEL_TRAINED, + ) + +/datum/skills/CMP + name = "Chief MP" + skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_JTAC = SKILL_JTAC_EXPERT, + SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, + SKILL_INTEL = SKILL_INTEL_TRAINED, + ) + +/datum/skills/auxiliary_officer + name = "Auxiliary Support Officer" + skills = list( + SKILL_PILOT = SKILL_PILOT_EXPERT, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, + SKILL_JTAC = SKILL_JTAC_EXPERT, + SKILL_INTEL = SKILL_INTEL_EXPERT, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_POLICE = SKILL_POLICE_FLASH, + SKILL_NAVIGATIONS = SKILL_NAVIGATIONS_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, + ) + +/datum/skills/CE + name = "Chief Engineer" + skills = list( + SKILL_ENGINEER = SKILL_ENGINEER_MASTER, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_POLICE = SKILL_POLICE_FLASH, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_JTAC = SKILL_JTAC_MASTER, + SKILL_INTEL = SKILL_INTEL_TRAINED, + SKILL_NAVIGATIONS = SKILL_NAVIGATIONS_TRAINED, + ) + +/datum/skills/RO + name = "Requisition Officer" + skills = list( + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, + SKILL_POLICE = SKILL_POLICE_FLASH, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, + SKILL_JTAC = SKILL_JTAC_EXPERT, + SKILL_INTEL = SKILL_INTEL_TRAINED, + ) diff --git a/code/datums/soundOutput.dm b/code/datums/soundOutput.dm index bc5ffd8efcfb..1f4512b28d59 100644 --- a/code/datums/soundOutput.dm +++ b/code/datums/soundOutput.dm @@ -152,11 +152,6 @@ adjust_volume_prefs(VOLUME_AMB, "Set the volume for ambience and soundscapes", 0) soundOutput.update_ambience(null, null, TRUE) -/client/verb/adjust_volume_admin_music() - set name = "Adjust Volume Admin MIDIs" - set category = "Preferences.Sound" - adjust_volume_prefs(VOLUME_ADM, "Set the volume for admin MIDIs", SOUND_CHANNEL_ADMIN_MIDI) - /client/verb/adjust_volume_lobby_music() set name = "Adjust Volume LobbyMusic" set category = "Preferences.Sound" diff --git a/code/datums/stamina/_stamina.dm b/code/datums/stamina/_stamina.dm index 36705e3be300..80e7df74e86b 100644 --- a/code/datums/stamina/_stamina.dm +++ b/code/datums/stamina/_stamina.dm @@ -34,16 +34,14 @@ if(!has_stamina) return - current_stamina = Clamp(current_stamina - amount, 0, max_stamina) + current_stamina = clamp(current_stamina - amount, 0, max_stamina) if(current_stamina < max_stamina) - if(!(src in active_staminas)) - active_staminas.Add(src) - + START_PROCESSING(SSobj, src) if(amount > 0) apply_rest_period(STAMINA_REST_PERIOD) else - active_staminas.Remove(src) + STOP_PROCESSING(SSobj, src) update_stamina_level() diff --git a/code/datums/statistics/entities/caste_stats.dm b/code/datums/statistics/entities/caste_stats.dm index 639e1b4a05f5..6bfc18d124b7 100644 --- a/code/datums/statistics/entities/caste_stats.dm +++ b/code/datums/statistics/entities/caste_stats.dm @@ -3,6 +3,10 @@ var/total_hits = 0 var/list/abilities_used = list() // types of /datum/entity/statistic, "tail sweep" = 10, "screech" = 2 +/datum/entity/player_stats/caste/Destroy(force) + . = ..() + QDEL_LIST_ASSOC_VAL(abilities_used) + /datum/entity/player_stats/caste/proc/setup_ability(ability) if(!ability) return diff --git a/code/datums/statistics/entities/death_stats.dm b/code/datums/statistics/entities/death_stats.dm index 7e26e92ae135..76e3605c157f 100644 --- a/code/datums/statistics/entities/death_stats.dm +++ b/code/datums/statistics/entities/death_stats.dm @@ -65,13 +65,29 @@ ) /mob/proc/track_mob_death(datum/cause_data/cause_data, turf/death_loc) - if(!mind || statistic_exempt) - return - if(cause_data && !istype(cause_data)) stack_trace("track_mob_death called with string cause ([cause_data]) instead of datum") cause_data = create_cause_data(cause_data) + var/log_message = "\[[time_stamp()]\] [key_name(src)] died to " + if(cause_data) + log_message += "[cause_data.cause_name]" + else + log_message += "unknown causes" + var/mob/cause_mob = cause_data?.resolve_mob() + if(cause_mob) + log_message += " from [key_name(cause_data.resolve_mob())]" + cause_mob.attack_log += "\[[time_stamp()]\] [key_name(cause_mob)] killed [key_name(src)] with [cause_data.cause_name]." + + attack_log += "[log_message]." + + if(!mind || statistic_exempt) + return + + var/area/area = get_area(death_loc) + handle_observer_message(cause_data, cause_mob, death_loc, area) + + // Perform logging above before get_player_from_key to avoid delays var/datum/entity/statistic/death/new_death = DB_ENTITY(/datum/entity/statistic/death) var/datum/entity/player/player_entity = get_player_from_key(mind.ckey) if(player_entity) @@ -83,11 +99,8 @@ new_death.role_name = get_role_name() new_death.mob_name = real_name new_death.faction_name = faction - new_death.is_xeno = FALSE - - var/area/A = get_area(death_loc) - new_death.area_name = A.name + new_death.area_name = area.name new_death.cause_name = cause_data?.cause_name var/datum/entity/player/cause_player = get_player_from_key(cause_data?.ckey) @@ -96,7 +109,6 @@ new_death.cause_role_name = cause_data?.role new_death.cause_faction_name = cause_data?.faction - var/mob/cause_mob = cause_data?.resolve_mob() if(cause_mob) cause_mob.life_kills_total += life_value @@ -121,25 +133,23 @@ new_death.total_damage_taken = life_damage_taken_total new_death.total_revives_done = life_revives_total - handle_observer_message(cause_data, cause_mob, death_loc, A) - - if(round_statistics) - round_statistics.track_death(new_death) + if(GLOB.round_statistics) + GLOB.round_statistics.track_death(new_death) new_death.save() new_death.detach() return new_death -/mob/living/carbon/human/track_mob_death(cause, cause_mob) - . = ..(cause, cause_mob, job) +/mob/living/carbon/human/track_mob_death(datum/cause_data/cause_data, turf/death_loc) + . = ..() if(statistic_exempt || !mind) return var/datum/entity/player_stats/human/human_stats = mind.setup_human_stats() if(human_stats && human_stats.death_list) human_stats.death_list.Insert(1, .) -/mob/living/carbon/xenomorph/track_mob_death(cause, cause_mob) - var/datum/entity/statistic/death/new_death = ..(cause, cause_mob, caste_type) +/mob/living/carbon/xenomorph/track_mob_death(datum/cause_data/cause_data, turf/death_loc) + var/datum/entity/statistic/death/new_death = ..() if(!new_death) return new_death.is_xeno = TRUE // this was placed beneath the if below, which meant gibbing as a xeno wouldn't track properly in stats diff --git a/code/datums/statistics/entities/human_stats.dm b/code/datums/statistics/entities/human_stats.dm index 51b07867dfd3..20d5a284becd 100644 --- a/code/datums/statistics/entities/human_stats.dm +++ b/code/datums/statistics/entities/human_stats.dm @@ -5,17 +5,24 @@ var/total_shots = 0 var/total_shots_hit = 0 var/total_screams = 0 - var/datum/entity/weapon_stats/top_weapon = null // reference to /datum/entity/weapon_stats (like tac-shotty) - var/list/weapon_stats_list = list() // list of types /datum/entity/weapon_stats - var/list/job_stats_list = list() // list of types /datum/entity/job_stats - var/list/datum/entity/statistic/medal/medal_list = list() // list of all medals earned + var/list/weapon_stats_list = list() //! indexed list of types /datum/entity/weapon_stats + var/list/job_stats_list = list() //! indexed list of types /datum/entity/job_stats + var/datum/entity/weapon_stats/top_weapon //! reference to /datum/entity/weapon_stats (like tac-shotty) + var/list/datum/entity/statistic/medal/medal_list = list() //! list of all medals earned + +/datum/entity/player_stats/human/Destroy(force) + . = ..() + QDEL_LIST_ASSOC_VAL(weapon_stats_list) + QDEL_LIST_ASSOC_VAL(job_stats_list) + QDEL_NULL(top_weapon) + QDEL_LIST(medal_list) /datum/entity/player_stats/human/get_playtime(type) if(!type) return ..() if(type == "Squad Roles") var/total_squad_time = 0 - for(var/squad_type in job_squad_roles) + for(var/squad_type in GLOB.job_squad_roles) var/datum/entity/player_stats/job/squad_stat = job_stats_list["[squad_type]"] if(!squad_stat) // Have not played the squad role yet continue @@ -23,7 +30,7 @@ return total_squad_time else if(type == "CIC Roles") var/total_command_time = 0 - for(var/command_type in job_command_roles) + for(var/command_type in GLOB.job_command_roles) var/datum/entity/player_stats/job/command_stat = job_stats_list["[command_type]"] if(!command_stat) // Have not played the command role yet continue @@ -115,15 +122,15 @@ S.total_rounds_played++ S.round_played = TRUE S.total_playtime += time - if(round_statistics) - var/datum/entity/player_stats/job/R = round_statistics.setup_job_stats(job) + if(GLOB.round_statistics) + var/datum/entity/player_stats/job/R = GLOB.round_statistics.setup_job_stats(job) R.total_playtime += time /datum/entity/player_stats/human/count_personal_death(job) var/datum/entity/player_stats/job/S = setup_job_stats(job) S.total_deaths++ - if(round_statistics) - var/datum/entity/player_stats/job/R = round_statistics.setup_job_stats(job) + if(GLOB.round_statistics) + var/datum/entity/player_stats/job/R = GLOB.round_statistics.setup_job_stats(job) R.total_deaths++ //****************** @@ -133,27 +140,27 @@ /datum/entity/player_stats/human/count_personal_human_kill(job_name, cause, job) var/datum/entity/player_stats/job/S = setup_job_stats(job) S.count_human_kill(job_name, cause) - if(round_statistics) - var/datum/entity/player_stats/job/R = round_statistics.setup_job_stats(job) + if(GLOB.round_statistics) + var/datum/entity/player_stats/job/R = GLOB.round_statistics.setup_job_stats(job) R.count_human_kill(job_name, cause) if(cause) var/datum/entity/weapon_stats/W = setup_weapon_stats(cause) W.count_human_kill(job_name) - if(round_statistics) - var/datum/entity/weapon_stats/R = round_statistics.setup_weapon_stats(cause) + if(GLOB.round_statistics) + var/datum/entity/weapon_stats/R = GLOB.round_statistics.setup_weapon_stats(cause) R.count_human_kill(job_name) /datum/entity/player_stats/human/count_personal_xeno_kill(caste_type, cause, job) var/datum/entity/player_stats/job/S = setup_job_stats(job) S.count_xeno_kill(caste_type, cause) - if(round_statistics) - var/datum/entity/player_stats/job/R = round_statistics.setup_job_stats(job) + if(GLOB.round_statistics) + var/datum/entity/player_stats/job/R = GLOB.round_statistics.setup_job_stats(job) R.count_xeno_kill(caste_type, cause) if(cause) var/datum/entity/weapon_stats/W = setup_weapon_stats(cause) W.count_xeno_kill(caste_type) - if(round_statistics) - var/datum/entity/weapon_stats/R = round_statistics.setup_weapon_stats(cause) + if(GLOB.round_statistics) + var/datum/entity/weapon_stats/R = GLOB.round_statistics.setup_weapon_stats(cause) R.count_xeno_kill(caste_type) /datum/entity/player_stats/human/count_human_kill(job_name, cause, job) @@ -162,8 +169,8 @@ if(cause) var/datum/entity/weapon_stats/W = setup_weapon_stats(cause) W.total_kills++ - if(round_statistics) - var/datum/entity/weapon_stats/R = round_statistics.setup_weapon_stats(cause) + if(GLOB.round_statistics) + var/datum/entity/weapon_stats/R = GLOB.round_statistics.setup_weapon_stats(cause) R.total_kills++ recalculate_top_weapon() ..() @@ -174,8 +181,8 @@ if(cause) var/datum/entity/weapon_stats/W = setup_weapon_stats(cause) W.total_kills++ - if(round_statistics) - var/datum/entity/weapon_stats/R = round_statistics.setup_weapon_stats(cause) + if(GLOB.round_statistics) + var/datum/entity/weapon_stats/R = GLOB.round_statistics.setup_weapon_stats(cause) R.total_kills++ recalculate_top_weapon() ..() @@ -187,8 +194,8 @@ /datum/entity/player_stats/human/count_personal_niche_stat(niche_name, amount = 1, job) var/datum/entity/player_stats/job/S = setup_job_stats(job) S.count_niche_stat(niche_name, amount) - if(round_statistics) - var/datum/entity/player_stats/job/R = round_statistics.setup_job_stats(job) + if(GLOB.round_statistics) + var/datum/entity/player_stats/job/R = GLOB.round_statistics.setup_job_stats(job) R.count_niche_stat(niche_name, amount) /datum/entity/player_stats/human/count_niche_stat(niche_name, amount = 1, job, weapon) @@ -197,8 +204,8 @@ if(weapon) var/datum/entity/weapon_stats/W = setup_weapon_stats(weapon) W.count_niche_stat(niche_name, amount) - if(round_statistics) - var/datum/entity/weapon_stats/R = round_statistics.setup_weapon_stats(weapon) + if(GLOB.round_statistics) + var/datum/entity/weapon_stats/R = GLOB.round_statistics.setup_weapon_stats(weapon) R.count_niche_stat(niche_name, amount) recalculate_top_weapon() ..() @@ -208,8 +215,8 @@ return var/datum/entity/player_stats/job/S = setup_job_stats(job, FALSE) S.steps_walked += amount - if(round_statistics) - var/datum/entity/player_stats/job/R = round_statistics.setup_job_stats(job, FALSE) + if(GLOB.round_statistics) + var/datum/entity/player_stats/job/R = GLOB.round_statistics.setup_job_stats(job, FALSE) R.steps_walked += amount /mob/living/carbon/human/track_steps_walked(amount = 1) @@ -230,8 +237,8 @@ if(isnull(S.total_hits)) S.total_hits = 0 S.total_hits += amount - if(round_statistics) - var/datum/entity/weapon_stats/R = round_statistics.setup_weapon_stats(weapon) + if(GLOB.round_statistics) + var/datum/entity/weapon_stats/R = GLOB.round_statistics.setup_weapon_stats(weapon) R.total_hits +=amount /mob/proc/track_hit(weapon, amount = 1) @@ -249,8 +256,8 @@ if(isnull(S.total_shots)) S.total_shots = 0 S.total_shots += amount - if(round_statistics) - var/datum/entity/weapon_stats/R = round_statistics.setup_weapon_stats(weapon) + if(GLOB.round_statistics) + var/datum/entity/weapon_stats/R = GLOB.round_statistics.setup_weapon_stats(weapon) R.total_shots +=amount /datum/entity/player_stats/human/proc/count_personal_shot(job, amount = 1) @@ -260,8 +267,8 @@ if(isnull(S.total_shots)) S.total_shots = 0 S.total_shots += amount - if(round_statistics) - var/datum/entity/player_stats/job/R = round_statistics.setup_job_stats(job) + if(GLOB.round_statistics) + var/datum/entity/player_stats/job/R = GLOB.round_statistics.setup_job_stats(job) R.total_shots += amount /mob/proc/track_shot(weapon, amount = 1) @@ -281,8 +288,8 @@ if(isnull(S.total_shots_hit)) S.total_shots_hit = 0 S.total_shots_hit += amount - if(round_statistics) - var/datum/entity/weapon_stats/R = round_statistics.setup_weapon_stats(weapon) + if(GLOB.round_statistics) + var/datum/entity/weapon_stats/R = GLOB.round_statistics.setup_weapon_stats(weapon) R.total_shots_hit += amount /datum/entity/player_stats/human/proc/count_personal_shot_hit(job, amount = 1) @@ -292,8 +299,8 @@ if(isnull(S.total_shots_hit)) S.total_shots_hit = 0 S.total_shots_hit += amount - if(round_statistics) - var/datum/entity/player_stats/job/R = round_statistics.setup_job_stats(job) + if(GLOB.round_statistics) + var/datum/entity/player_stats/job/R = GLOB.round_statistics.setup_job_stats(job) R.total_shots_hit += amount /mob/proc/track_shot_hit(weapon, shot_mob, amount = 1) @@ -305,13 +312,13 @@ human_stats.total_shots_hit += amount human_stats.count_weapon_shot_hit(weapon, amount) human_stats.count_personal_shot_hit(job, amount) - if(round_statistics) - round_statistics.total_projectiles_hit += amount + if(GLOB.round_statistics) + GLOB.round_statistics.total_projectiles_hit += amount if(shot_mob) if(ishuman(shot_mob)) - round_statistics.total_projectiles_hit_human += amount + GLOB.round_statistics.total_projectiles_hit_human += amount else if(isxeno(shot_mob)) - round_statistics.total_projectiles_hit_xeno += amount + GLOB.round_statistics.total_projectiles_hit_xeno += amount /datum/entity/player_stats/human/proc/count_weapon_friendly_fire(weapon, amount = 1) if(!weapon) @@ -320,8 +327,8 @@ if(isnull(S.total_friendly_fire)) S.total_friendly_fire = 0 S.total_friendly_fire += amount - if(round_statistics) - var/datum/entity/weapon_stats/R = round_statistics.setup_weapon_stats(weapon) + if(GLOB.round_statistics) + var/datum/entity/weapon_stats/R = GLOB.round_statistics.setup_weapon_stats(weapon) R.total_friendly_fire += amount /datum/entity/player_stats/human/proc/count_personal_friendly_fire(job, amount = 1) @@ -331,8 +338,8 @@ if(isnull(S.total_friendly_fire)) S.total_friendly_fire = 0 S.total_friendly_fire += amount - if(round_statistics) - var/datum/entity/player_stats/job/R = round_statistics.setup_job_stats(job) + if(GLOB.round_statistics) + var/datum/entity/player_stats/job/R = GLOB.round_statistics.setup_job_stats(job) R.total_friendly_fire += amount /mob/proc/track_friendly_fire(weapon, amount = 1) @@ -352,8 +359,8 @@ if(isnull(S.total_revives)) S.total_revives = 0 S.total_revives += amount - if(round_statistics) - var/datum/entity/player_stats/job/R = round_statistics.setup_job_stats(job) + if(GLOB.round_statistics) + var/datum/entity/player_stats/job/R = GLOB.round_statistics.setup_job_stats(job) R.total_revives += amount /mob/proc/track_revive(job, amount = 1) @@ -372,8 +379,8 @@ if(isnull(S.total_lives_saved)) S.total_lives_saved = 0 S.total_lives_saved += amount - if(round_statistics) - var/datum/entity/player_stats/job/R = round_statistics.setup_job_stats(job) + if(GLOB.round_statistics) + var/datum/entity/player_stats/job/R = GLOB.round_statistics.setup_job_stats(job) R.total_lives_saved += amount /mob/proc/track_life_saved(job, amount = 1) @@ -392,8 +399,8 @@ if(isnull(S.total_screams)) S.total_screams = 0 S.total_screams += amount - if(round_statistics) - var/datum/entity/player_stats/job/R = round_statistics.setup_job_stats(job) + if(GLOB.round_statistics) + var/datum/entity/player_stats/job/R = GLOB.round_statistics.setup_job_stats(job) R.total_screams += amount /mob/proc/track_scream(job, amount = 1) diff --git a/code/datums/statistics/entities/job_stats.dm b/code/datums/statistics/entities/job_stats.dm index ecde1c942082..199c2adb3160 100644 --- a/code/datums/statistics/entities/job_stats.dm +++ b/code/datums/statistics/entities/job_stats.dm @@ -1,8 +1,8 @@ /datum/entity/player_stats/job - var/name = null - var/total_friendly_fire = null - var/total_revives = null - var/total_lives_saved = null - var/total_shots = null - var/total_shots_hit = null - var/total_screams = null + var/name + var/total_friendly_fire + var/total_revives + var/total_lives_saved + var/total_shots + var/total_shots_hit + var/total_screams diff --git a/code/datums/statistics/entities/medal_stats.dm b/code/datums/statistics/entities/medal_stats.dm index 8a428e2d3cf4..c5684e3cd9a4 100644 --- a/code/datums/statistics/entities/medal_stats.dm +++ b/code/datums/statistics/entities/medal_stats.dm @@ -57,7 +57,7 @@ return var/datum/entity/statistic/medal/new_medal = DB_ENTITY(/datum/entity/statistic/medal) - var/datum/entity/player/player_entity = get_player_from_key(new_recipient.ckey) + var/datum/entity/player/player_entity = get_player_from_key(new_recipient.persistent_ckey) if(player_entity) new_medal.player_id = player_entity.id diff --git a/code/datums/statistics/entities/panel_stats.dm b/code/datums/statistics/entities/panel_stats.dm index 44f95f2d91d9..5cfb888b8ea1 100644 --- a/code/datums/statistics/entities/panel_stats.dm +++ b/code/datums/statistics/entities/panel_stats.dm @@ -3,17 +3,17 @@ //******************************************************* -/datum/entity/player_entity/proc/show_statistics(mob/user, datum/entity/statistic/round/viewing_round = round_statistics, update_data = FALSE) +/datum/entity/player_entity/proc/show_statistics(mob/user, datum/entity/statistic/round/viewing_round = GLOB.round_statistics, update_data = FALSE) if(update_data) - update_panel_data(round_statistics) + update_panel_data(GLOB.round_statistics) ui_interact(user) -/datum/entity/player_entity/proc/ui_interact(mob/user, ui_key = "statistics", datum/nanoui/ui = null, force_open = 1) +/datum/entity/player_entity/proc/ui_interact(mob/user, ui_key = "statistics", datum/nanoui/ui, force_open = 1) data["menu"] = menu data["subMenu"] = subMenu data["dataMenu"] = dataMenu - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + ui = SSnano.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if(!ui) ui = new(user, src, ui_key, "cm_stat_panel.tmpl", "Statistics", 450, 700, null, -1) @@ -31,7 +31,7 @@ if(href_list["dataMenu"]) dataMenu = href_list["dataMenu"] - nanomanager.update_uis(src) + SSnano.nanomanager.update_uis(src) /datum/entity/player_entity/proc/check_eye() return @@ -68,7 +68,7 @@ //*******************PLAYER DATA************************* //******************************************************* -/datum/entity/player_entity/proc/update_panel_data(datum/entity/statistic/round/viewing_round = round_statistics) +/datum/entity/player_entity/proc/update_panel_data(datum/entity/statistic/round/viewing_round = GLOB.round_statistics) data["current_time"] = worldtime2text() if(viewing_round) @@ -741,7 +741,6 @@ "total_projectiles_hit_xeno" = total_projectiles_hit_xeno, "total_slashes" = total_slashes, "total_friendly_fire_instances" = total_friendly_fire_instances, - "total_friendly_fire_kills" = total_friendly_fire_kills, "total_huggers_applied" = total_huggers_applied, "total_larva_burst" = total_larva_burst, "participants" = participants_list, diff --git a/code/datums/statistics/entities/player_entity.dm b/code/datums/statistics/entities/player_entity.dm index 72f4d95d7aa3..f0b3d37ede7e 100644 --- a/code/datums/statistics/entities/player_entity.dm +++ b/code/datums/statistics/entities/player_entity.dm @@ -8,8 +8,8 @@ /datum/entity/player_entity var/name var/ckey // "cakey" - var/list/datum/entity/player_stats = list() - var/list/datum/entity/statistic/death/death_stats = list() + var/list/player_stats = list() //! Indeed list of /datum/entity/player_stats + var/list/death_stats = list() //! Indexed list of /datum/entity/statistic/death var/menu = 0 var/subMenu = 0 var/dataMenu = 0 @@ -18,6 +18,11 @@ var/savefile_version var/save_loaded = FALSE +/datum/entity/player_entity/Destroy(force) + QDEL_LIST_ASSOC_VAL(player_stats) + QDEL_LIST_ASSOC_VAL(death_stats) + return ..() + /datum/entity/player_entity/proc/get_playtime(branch, type) var/playtime = 0 if(player_stats["[branch]"]) diff --git a/code/datums/statistics/entities/player_stats.dm b/code/datums/statistics/entities/player_stats.dm index b378d7c2ea24..a8444c1a5894 100644 --- a/code/datums/statistics/entities/player_stats.dm +++ b/code/datums/statistics/entities/player_stats.dm @@ -6,13 +6,21 @@ var/total_rounds_played = 0 var/steps_walked = 0 var/round_played = FALSE - var/datum/entity/statistic/nemesis = null // "runner" = 3 + var/datum/entity/statistic/nemesis // "runner" = 3 var/list/niche_stats = list() // list of type /datum/entity/statistic, "Total Executions" = number var/list/humans_killed = list() // list of type /datum/entity/statistic, "jobname2" = number var/list/xenos_killed = list() // list of type /datum/entity/statistic, "caste" = number var/list/death_list = list() // list of type /datum/entity/death_stats var/display_stat = TRUE +/datum/entity/player_stats/Destroy(force) + QDEL_NULL(nemesis) + QDEL_LIST_ASSOC_VAL(niche_stats) + QDEL_LIST_ASSOC_VAL(humans_killed) + QDEL_LIST_ASSOC_VAL(xenos_killed) + QDEL_LIST_ASSOC_VAL(death_list) + return ..() + /datum/entity/player_stats/proc/get_playtime() return total_playtime @@ -73,10 +81,10 @@ /mob/proc/track_death_calculations() if(statistic_exempt || statistic_tracked) return - if(round_statistics) - round_statistics.recalculate_nemesis() + if(GLOB.round_statistics) + GLOB.round_statistics.recalculate_nemesis() if(mind && mind.player_entity) - mind.player_entity.update_panel_data(round_statistics) + mind.player_entity.update_panel_data(GLOB.round_statistics) statistic_tracked = TRUE //***************** diff --git a/code/datums/statistics/entities/round_stats.dm b/code/datums/statistics/entities/round_stats.dm index ec6aa4ac5bdc..25543dff22b1 100644 --- a/code/datums/statistics/entities/round_stats.dm +++ b/code/datums/statistics/entities/round_stats.dm @@ -20,11 +20,10 @@ var/total_projectiles_hit_human = 0 var/total_projectiles_hit_xeno = 0 var/total_friendly_fire_instances = 0 - var/total_friendly_fire_kills = 0 var/total_slashes = 0 // untracked data - var/datum/entity/statistic/map/current_map = null // reference to current map + var/datum/entity/statistic/map/current_map // reference to current map var/list/datum/entity/statistic/death/death_stats_list = list() var/list/abilities_used = list() // types of /datum/entity/statistic, "tail sweep" = 10, "screech" = 2 @@ -38,8 +37,20 @@ var/list/job_stats_list = list() // list of types /datum/entity/job_stats // nanoui data - var/round_data[0] - var/death_data[0] + var/list/round_data = list() + var/list/death_data = list() + +/datum/entity/statistic/round/Destroy(force) + . = ..() + QDEL_NULL(current_map) + QDEL_LIST(death_stats_list) + QDEL_LIST_ASSOC_VAL(abilities_used) + QDEL_LIST_ASSOC_VAL(final_participants) + QDEL_LIST_ASSOC_VAL(hijack_participants) + QDEL_LIST_ASSOC_VAL(total_deaths) + QDEL_LIST_ASSOC_VAL(caste_stats_list) + QDEL_LIST_ASSOC_VAL(weapon_stats_list) + QDEL_LIST_ASSOC_VAL(job_stats_list) /datum/entity_meta/statistic_round entity_type = /datum/entity/statistic/round @@ -73,9 +84,9 @@ if(!round_stats) var/datum/entity/mc_round/mc_round = SSentity_manager.select(/datum/entity/mc_round) var/operation_name - operation_name = "[pick(operation_titles)]" - operation_name += " [pick(operation_prefixes)]" - operation_name += "-[pick(operation_postfixes)]" + operation_name = "[pick(GLOB.operation_titles)]" + operation_name += " [pick(GLOB.operation_prefixes)]" + operation_name += "-[pick(GLOB.operation_postfixes)]" // Round stats round_stats = DB_ENTITY(/datum/entity/statistic/round) @@ -87,7 +98,7 @@ round_stats.save() // Setup the global reference - round_statistics = round_stats + GLOB.round_statistics = round_stats // Map stats var/datum/entity/statistic/map/new_map = DB_EKEY(/datum/entity/statistic/map, SSmapping.configs[GROUND_MAP].map_name) @@ -360,13 +371,12 @@ stats += "Total shots fired: [total_projectiles_fired]\n" stats += "Total friendly fire instances: [total_friendly_fire_instances]\n" - stats += "Total friendly fire kills: [total_friendly_fire_kills]\n" stats += "Marines remaining: [end_of_round_marines]\n" stats += "Xenos remaining: [end_of_round_xenos]\n" stats += "Hijack time: [duration2text(round_hijack_time)]\n" - stats += "[log_end]" + stats += "[GLOB.log_end]" WRITE_LOG(GLOB.round_stats, stats) @@ -386,4 +396,4 @@ if(!can_use_action()) return - owner.client.player_entity.show_statistics(owner, round_statistics, TRUE) + owner.client.player_entity.show_statistics(owner, GLOB.round_statistics, TRUE) diff --git a/code/datums/statistics/entities/weapon_stats.dm b/code/datums/statistics/entities/weapon_stats.dm index 0d8458c20de2..9fff5c514458 100644 --- a/code/datums/statistics/entities/weapon_stats.dm +++ b/code/datums/statistics/entities/weapon_stats.dm @@ -1,16 +1,23 @@ /datum/entity/weapon_stats - var/datum/entity/player = null // "deanthelis" - var/list/niche_stats = list() // list of type /datum/entity/statistic, "Total Reloads" = number - var/list/humans_killed = list() // list of type /datum/entity/statistic, "jobname2" = number - var/list/xenos_killed = list() // list of type /datum/entity/statistic, "caste" = number - var/name = null + var/datum/entity/player + var/list/niche_stats = list() //! Indexed list of /datum/entity/statistic, "Total Reloads" = number + var/list/humans_killed = list() //! Indexed list of /datum/entity/statistic, "jobname2" = number + var/list/xenos_killed = list() //! Indexed list of /datum/entity/statistic, "caste" = number + var/name var/total_kills = 0 - var/total_hits = null - var/total_shots = null - var/total_shots_hit = null - var/total_friendly_fire = null + var/total_hits + var/total_shots + var/total_shots_hit + var/total_friendly_fire var/display_stat = TRUE +/datum/entity/weapon_stats/Destroy(force) + player = null + QDEL_LIST_ASSOC_VAL(niche_stats) + QDEL_LIST_ASSOC_VAL(humans_killed) + QDEL_LIST_ASSOC_VAL(xenos_killed) + return ..() + /datum/entity/weapon_stats/proc/count_human_kill(job_name) if(!job_name) return diff --git a/code/datums/statistics/entities/xeno_stats.dm b/code/datums/statistics/entities/xeno_stats.dm index 9ed327258258..9703c8c5e397 100644 --- a/code/datums/statistics/entities/xeno_stats.dm +++ b/code/datums/statistics/entities/xeno_stats.dm @@ -4,6 +4,12 @@ var/list/caste_stats_list = list() // list of types /datum/entity/player_stats/caste var/list/datum/entity/statistic/medal/medal_list = list() // list of all royal jelly earned +/datum/entity/player_stats/xeno/Destroy(force) + . = ..() + QDEL_NULL(top_caste) + QDEL_LIST_ASSOC_VAL(caste_stats_list) + QDEL_LIST(medal_list) + /datum/entity/player_stats/xeno/get_playtime(type) if(!type || type == FACTION_XENOMORPH) return ..() @@ -72,15 +78,15 @@ S.total_rounds_played++ S.round_played = TRUE S.total_playtime += time - if(round_statistics) - var/datum/entity/player_stats/caste/R = round_statistics.setup_caste_stats(caste) + if(GLOB.round_statistics) + var/datum/entity/player_stats/caste/R = GLOB.round_statistics.setup_caste_stats(caste) R.total_playtime += time /datum/entity/player_stats/xeno/count_personal_death(caste) var/datum/entity/player_stats/caste/S = setup_caste_stats(caste) S.total_deaths++ - if(round_statistics) - var/datum/entity/player_stats/caste/R = round_statistics.setup_caste_stats(caste) + if(GLOB.round_statistics) + var/datum/entity/player_stats/caste/R = GLOB.round_statistics.setup_caste_stats(caste) R.total_deaths++ //****************** @@ -90,16 +96,16 @@ /datum/entity/player_stats/xeno/count_personal_human_kill(job_name, cause, caste) var/datum/entity/player_stats/caste/S = setup_caste_stats(caste) S.count_human_kill(job_name, cause) - if(round_statistics) - var/datum/entity/player_stats/caste/R = round_statistics.setup_caste_stats(caste) + if(GLOB.round_statistics) + var/datum/entity/player_stats/caste/R = GLOB.round_statistics.setup_caste_stats(caste) R.count_human_kill(job_name, cause) recalculate_top_caste() /datum/entity/player_stats/xeno/count_personal_xeno_kill(caste_type, cause, caste) var/datum/entity/player_stats/caste/S = setup_caste_stats(caste) S.count_xeno_kill(caste_type, cause) - if(round_statistics) - var/datum/entity/player_stats/caste/R = round_statistics.setup_caste_stats(caste) + if(GLOB.round_statistics) + var/datum/entity/player_stats/caste/R = GLOB.round_statistics.setup_caste_stats(caste) R.count_xeno_kill(caste_type, cause) recalculate_top_caste() @@ -110,15 +116,15 @@ /datum/entity/player_stats/xeno/count_personal_niche_stat(niche_name, amount = 1, caste) var/datum/entity/player_stats/caste/S = setup_caste_stats(caste) S.count_niche_stat(niche_name, amount) - if(round_statistics) - var/datum/entity/player_stats/caste/R = round_statistics.setup_caste_stats(caste) + if(GLOB.round_statistics) + var/datum/entity/player_stats/caste/R = GLOB.round_statistics.setup_caste_stats(caste) R.count_niche_stat(niche_name, amount) /datum/entity/player_stats/xeno/proc/track_personal_abilities_used(caste, ability, amount = 1) var/datum/entity/player_stats/caste/S = setup_caste_stats(caste) S.track_personal_abilities_used(ability, amount) - if(round_statistics) - var/datum/entity/player_stats/caste/R = round_statistics.setup_caste_stats(caste) + if(GLOB.round_statistics) + var/datum/entity/player_stats/caste/R = GLOB.round_statistics.setup_caste_stats(caste) R.track_personal_abilities_used(ability, amount) /mob/living/carbon/xenomorph/proc/track_ability_usage(ability, caste, amount = 1) @@ -131,8 +137,8 @@ /datum/entity/player_stats/xeno/count_personal_steps_walked(caste, amount = 1) var/datum/entity/player_stats/caste/S = setup_caste_stats(caste) S.steps_walked += amount - if(round_statistics) - var/datum/entity/player_stats/caste/R = round_statistics.setup_caste_stats(caste) + if(GLOB.round_statistics) + var/datum/entity/player_stats/caste/R = GLOB.round_statistics.setup_caste_stats(caste) R.steps_walked += amount /mob/living/carbon/xenomorph/track_steps_walked(amount = 1) @@ -148,8 +154,8 @@ /datum/entity/player_stats/xeno/proc/count_personal_slashes(caste, amount = 1) var/datum/entity/player_stats/caste/S = setup_caste_stats(caste) S.total_hits += amount - if(round_statistics) - var/datum/entity/player_stats/caste/R = round_statistics.setup_caste_stats(caste) + if(GLOB.round_statistics) + var/datum/entity/player_stats/caste/R = GLOB.round_statistics.setup_caste_stats(caste) R.total_hits += amount /mob/living/carbon/xenomorph/proc/track_slashes(caste, amount = 1) @@ -161,5 +167,5 @@ xeno_stats.total_hits += amount if(caste_type) xeno_stats.count_personal_slashes(caste_type, amount) - if(round_statistics) - round_statistics.total_slashes += amount + if(GLOB.round_statistics) + GLOB.round_statistics.total_slashes += amount diff --git a/code/datums/statistics/random_facts/random_fact.dm b/code/datums/statistics/random_facts/random_fact.dm index 2a83c7b2c1ad..d327bd36f4f6 100644 --- a/code/datums/statistics/random_facts/random_fact.dm +++ b/code/datums/statistics/random_facts/random_fact.dm @@ -24,8 +24,8 @@ var/datum/entity/statistic/death/death_to_report = null var/mob/mob_to_report = null - if(round_statistics && length(round_statistics.death_stats_list)) - for(var/datum/entity/statistic/death/death in round_statistics.death_stats_list) + if(GLOB.round_statistics && length(GLOB.round_statistics.death_stats_list)) + for(var/datum/entity/statistic/death/death in GLOB.round_statistics.death_stats_list) if(!check_human && !death.is_xeno) continue if(!check_xeno && death.is_xeno) @@ -41,6 +41,8 @@ list_to_check += GLOB.living_xeno_list for(var/mob/checked_mob as anything in list_to_check) + if(!checked_mob?.persistent_ckey) + continue // We don't care about NPCs if(living_stat_gotten < life_grab_stat(checked_mob)) mob_to_report = checked_mob living_stat_gotten = life_grab_stat(checked_mob) diff --git a/code/datums/status_effects/_status_effect.dm b/code/datums/status_effects/_status_effect.dm new file mode 100644 index 000000000000..ddbd6366d98c --- /dev/null +++ b/code/datums/status_effects/_status_effect.dm @@ -0,0 +1,277 @@ +/// Status effects are used to apply temporary or permanent effects to mobs. +/// This file contains their code, plus code for applying and removing them. +/datum/status_effect + /// The ID of the effect. ID is used in adding and removing effects to check for duplicates, among other things. + var/id = "effect" + /// When set initially / in on_creation, this is how long the status effect lasts in deciseconds. + /// While processing, this becomes the world.time when the status effect will expire. + /// -1 = infinite duration. + VAR_PROTECTED/duration = -1 + /// Truthy once duration is initialized + VAR_PRIVATE/duration_set = FALSE + /// When set initially / in on_creation, this is how long between [proc/tick] calls in deciseconds. + /// Note that this cannot be faster than the processing subsystem you choose to fire the effect on. (See: [var/processing_speed]) + /// While processing, this becomes the world.time when the next tick will occur. + /// -1 = will prevent ticks, and if duration is also unlimited (-1), stop processing wholesale. + var/tick_interval = 1 SECONDS + /// The mob affected by the status effect. + var/mob/living/owner + /// How many of the effect can be on one mob, and/or what happens when you try to add a duplicate. + var/status_type = STATUS_EFFECT_UNIQUE + /// If TRUE, we call [proc/on_remove] when owner is deleted. Otherwise, we call [proc/be_replaced]. + var/on_remove_on_mob_delete = FALSE + /// The typepath to the alert thrown by the status effect when created. + /// Status effect "name"s and "description"s are shown to the owner here. + var/alert_type = /atom/movable/screen/alert/status_effect + /// The alert itself, created in [proc/on_creation] (if alert_type is specified). + var/atom/movable/screen/alert/status_effect/linked_alert + /// Used to define if the status effect should be using SSfasteffects or SSeffects + var/processing_speed = STATUS_EFFECT_FAST_PROCESS + /// Do we self-terminate when a fullheal is called? // CM note: this is rejuvenate + var/remove_on_fullheal = FALSE + + /* Unimplemented feature: Our Rejuv needs refactoring to work with this + /// If remove_on_fullheal is TRUE, what flag do we need to be removed? + var/heal_flag_necessary = HEAL_STATUS + */ + + /* Particle effects feature was cut due to lacking backend, feel free to add when we have backend */ + + /// Timer ID for triggering the effect end precisely + var/timerid + +/datum/status_effect/New(list/arguments) + on_creation(arglist(arguments)) + +/// Called from New() with any supplied status effect arguments. +/// Not guaranteed to exist by the end. +/// Returning FALSE from on_apply will stop on_creation and self-delete the effect. +/datum/status_effect/proc/on_creation(mob/living/new_owner, ...) + SHOULD_NOT_SLEEP(TRUE) // Don't sleep between duration_set and update_timer + if(new_owner) + owner = new_owner + if(QDELETED(owner) || !on_apply()) + qdel(src) + return + if(owner) + LAZYADD(owner.status_effects, src) + RegisterSignal(owner, COMSIG_LIVING_REJUVENATED, PROC_REF(remove_effect_on_heal)) + + if(duration != -1) + duration = world.time + duration + duration_set = TRUE + if(tick_interval != -1) + tick_interval = world.time + tick_interval + + if(alert_type) + var/atom/movable/screen/alert/status_effect/new_alert = owner.throw_alert(id, alert_type) + new_alert.attached_effect = src //so the alert can reference us, if it needs to + linked_alert = new_alert //so we can reference the alert, if we need to + + if(duration > world.time || tick_interval > world.time) //don't process if we don't care + switch(processing_speed) + if(STATUS_EFFECT_FAST_PROCESS) + START_PROCESSING(SSfasteffects, src) + if(STATUS_EFFECT_NORMAL_PROCESS) + START_PROCESSING(SSeffects, src) + update_timer() + + update_particles() + + return TRUE + +/datum/status_effect/Destroy() + if(timerid) + deltimer(timerid) + switch(processing_speed) + if(STATUS_EFFECT_FAST_PROCESS) + STOP_PROCESSING(SSfasteffects, src) + if(STATUS_EFFECT_NORMAL_PROCESS) + STOP_PROCESSING(SSeffects, src) + if(owner) + linked_alert = null + owner.clear_alert(id) + LAZYREMOVE(owner.status_effects, src) + on_remove() + UnregisterSignal(owner, COMSIG_LIVING_REJUVENATED) + owner = null + return ..() + +// Status effect process. Handles adjusting its duration and ticks. +// If you're adding processed effects, put them in [proc/tick] +// instead of extending / overriding the process() proc. +/datum/status_effect/process(seconds_per_tick) + SHOULD_NOT_OVERRIDE(TRUE) + if(QDELETED(owner)) + qdel(src) + return + if(tick_interval != -1 && tick_interval < world.time) + var/tick_length = initial(tick_interval) + tick(tick_length / (1 SECONDS)) + tick_interval = world.time + tick_length + if(QDELING(src)) + // tick deleted us, no need to continue + return + + // Timer and update procs should basically always handle this, it's a safety net + if(!timerid && duration != -1 && duration < world.time) + qdel(src) + else + update_timer() // Attempt to start up end timer + +/// Updates the timer used for precisely ending the effect +/// We force_refresh if the duration changed otherwise than ticking down +/datum/status_effect/proc/update_timer(force_refresh = FALSE) + if(duration == -1 || duration <= world.time) // infinite or expired + return + else if(duration - world.time <= STATUS_EFFECT_TIME_THRESHOLD) + if(!timerid || force_refresh) + timerid = addtimer(CALLBACK(src, PROC_REF(timer_callback)), duration - world.time, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE|TIMER_NO_HASH_WAIT) + else if(timerid) + deltimer(timerid) + timerid = null + +/// Timer invocation callback to end the effect +/datum/status_effect/proc/timer_callback() + if(timerid) + timerid = null + qdel(src) // shrimple as that + +/// Called when the effect is applied in on_created +/// Returning FALSE will cause it to delete itself during creation instead. +/datum/status_effect/proc/on_apply() + return TRUE + +/// Gets and formats examine text associated with our status effect. +/// Return 'null' to have no examine text appear (default behavior). +/datum/status_effect/proc/get_examine_text() + return null + +/** + * Called every tick from process(). + * This is only called of tick_interval is not -1. + * + * Note that every tick =/= every processing cycle. + * + * * seconds_between_ticks = This is how many SECONDS that elapse between ticks. + * This is a constant value based upon the initial tick interval set on the status effect. + * It is similar to seconds_per_tick, from processing itself, but adjusted to the status effect's tick interval. + */ +/datum/status_effect/proc/tick(seconds_between_ticks) + return + +/// Called whenever the buff expires or is removed (qdeleted) +/// Note that at the point this is called, it is out of the +/// owner's status_effects list, but owner is not yet null +/datum/status_effect/proc/on_remove() + return + +/// Called instead of on_remove when a status effect +/// of status_type STATUS_EFFECT_REPLACE is replaced by itself, +/// or when a status effect with on_remove_on_mob_delete +/// set to FALSE has its mob deleted +/datum/status_effect/proc/be_replaced() + linked_alert = null + owner.clear_alert(id) + LAZYREMOVE(owner.status_effects, src) + owner = null + qdel(src) + +/// Called before being fully removed (before on_remove) +/// Returning FALSE will cancel removal +/datum/status_effect/proc/before_remove() + return TRUE + +/// Called when a status effect of status_type STATUS_EFFECT_REFRESH +/// has its duration refreshed in apply_status_effect - is passed New() args +/datum/status_effect/proc/refresh(effect, ...) + var/original_duration = initial(duration) + if(original_duration == -1) + return + duration = world.time + original_duration + update_timer(force_refresh = TRUE) + +/// Adds nextmove modifier multiplicatively to the owner while applied +/datum/status_effect/proc/nextmove_modifier() + return 1 + +/// Adds nextmove adjustment additiviely to the owner while applied +/datum/status_effect/proc/nextmove_adjust() + return 0 + +/// Signal proc for [COMSIG_LIVING_REJUVENATED] to remove us on fullheal +/datum/status_effect/proc/remove_effect_on_heal(datum/source, heal_flags) + SIGNAL_HANDLER + + if(!remove_on_fullheal) + return + +// if(!heal_flag_necessary || (heal_flags & heal_flag_necessary)) +// qdel(src) + qdel(src) + +/// Updates the duration of the status effect to the given [amount] of deciseconds from now, qdeling / ending if we eclipse the current world time. +/// If increment is truthy, we only update if the resulting amount is higher. +/datum/status_effect/proc/update_duration(amount, increment = FALSE) + if(!duration_set) // Barebones setter for before we start everything up + if(increment) + duration = max(duration, amount) + else + duration = amount + return FALSE + if(duration == -1) // Infinite duration + return FALSE + var/new_duration = world.time + amount + if(increment && duration >= new_duration) + return FALSE + duration = new_duration + if(duration <= world.time) + qdel(src) + return TRUE + update_timer(force_refresh = TRUE) + return FALSE + +/// Updates the duration of the status effect to the given [amount] of deciseconds from its current set ending +/datum/status_effect/proc/adjust_duration(amount) + if(!duration_set) + duration += amount + return FALSE + if(duration == -1) + return FALSE + var/remaining = duration - world.time + remaining += amount + return update_duration(remaining) + +/// Remove [amount] of duration (in deciseconds) from the status effect. Compatibility handler with /tg/. +/datum/status_effect/proc/remove_duration(amount) + adjust_duration(-amount) + +/// Get duration left on the effect +/datum/status_effect/proc/get_duration_left() + if(!duration_set) + return -1 + var/remaining = duration - world.time + if(remaining < 0) + return -1 + return remaining + + +/** + * Updates the particles for the status effects + * Should be handled by subtypes! + */ + +/datum/status_effect/proc/update_particles() + SHOULD_CALL_PARENT(FALSE) + +/// Alert base type for status effect alerts +/atom/movable/screen/alert/status_effect + name = "Curse of Mundanity" + desc = "You don't feel any different..." + /// The status effect we're linked to + var/datum/status_effect/attached_effect + +/atom/movable/screen/alert/status_effect/Destroy() + attached_effect = null //Don't keep a ref now + return ..() + diff --git a/code/datums/status_effects/_status_effect_helpers.dm b/code/datums/status_effects/_status_effect_helpers.dm new file mode 100644 index 000000000000..02a4f9a5ccea --- /dev/null +++ b/code/datums/status_effects/_status_effect_helpers.dm @@ -0,0 +1,137 @@ + +// Status effect helpers for living mobs + +/** + * Applies a given status effect to this mob. + * + * new_effect - TYPEPATH of a status effect to apply. + * Additional status effect arguments can be passed. + * + * Returns the instance of the created effected, if successful. + * Returns 'null' if unsuccessful. + */ +/mob/living/proc/apply_status_effect(datum/status_effect/new_effect, ...) + RETURN_TYPE(/datum/status_effect) + + // The arguments we pass to the start effect. The 1st argument is this mob. + var/list/arguments = args.Copy() + arguments[1] = src + + // If the status effect we're applying doesn't allow multiple effects, we need to handle it + if(initial(new_effect.status_type) != STATUS_EFFECT_MULTIPLE) + for(var/datum/status_effect/existing_effect as anything in status_effects) + if(existing_effect.id != initial(new_effect.id)) + continue + + switch(existing_effect.status_type) + // Multiple are allowed, continue as normal. (Not normally reachable) + if(STATUS_EFFECT_MULTIPLE) + break + // Only one is allowed of this type - early return + if(STATUS_EFFECT_UNIQUE) + return + // Replace the existing instance (deletes it). + if(STATUS_EFFECT_REPLACE) + existing_effect.be_replaced() + // Refresh the existing type, then early return + if(STATUS_EFFECT_REFRESH) + existing_effect.refresh(arglist(arguments)) + return + + // Create the status effect with our mob + our arguments + var/datum/status_effect/new_instance = new new_effect(arguments) + SEND_SIGNAL(src, COMSIG_LIVING_APPLY_EFFECT, new_instance) + if(!QDELETED(new_instance)) + return new_instance + +/** + * Removes all instances of a given status effect from this mob + * + * removed_effect - TYPEPATH of a status effect to remove. + * Additional status effect arguments can be passed - these are passed into before_remove. + * + * Returns TRUE if at least one was removed. + */ +/mob/living/proc/remove_status_effect(datum/status_effect/removed_effect, ...) + var/list/arguments = args.Copy(2) + + . = FALSE + for(var/datum/status_effect/existing_effect as anything in status_effects) + if(existing_effect.id == initial(removed_effect.id) && existing_effect.before_remove(arguments)) + qdel(existing_effect) + . = TRUE + + return . + +/** + * Checks if this mob has a status effect that shares the passed effect's ID + * + * checked_effect - TYPEPATH of a status effect to check for. Checks for its ID, not it's typepath + * + * Returns an instance of a status effect, or NULL if none were found. + */ +/mob/proc/has_status_effect(datum/status_effect/checked_effect) + // Yes I'm being cringe and putting this on the mob level even though status effects only apply to the living level + // There's quite a few places (namely examine and, bleh, cult code) where it's easier to not need to cast to living before checking + // for an effect such as blindness + return null + +/mob/living/has_status_effect(datum/status_effect/checked_effect) + RETURN_TYPE(/datum/status_effect) + + for(var/datum/status_effect/present_effect as anything in status_effects) + if(present_effect.id == initial(checked_effect.id)) + return present_effect + + return null + +/** + * Checks if this mob has a status effect that shares the passed effect's ID + * and has the passed sources are in its list of sources (ONLY works for grouped efects!) + * + * checked_effect - TYPEPATH of a status effect to check for. Checks for its ID, not it's typepath + * + * Returns an instance of a status effect, or NULL if none were found. + */ +/mob/proc/has_status_effect_from_source(datum/status_effect/grouped/checked_effect, sources) + // See [/mob/proc/has_status_effect] for reason behind having this on the mob level + return null + +/mob/living/has_status_effect_from_source(datum/status_effect/grouped/checked_effect, sources) + RETURN_TYPE(/datum/status_effect) + + if(!ispath(checked_effect)) + CRASH("has_status_effect_from_source passed with an improper status effect path.") + + if(!islist(sources)) + sources = list(sources) + + for(var/datum/status_effect/grouped/present_effect in status_effects) + if(present_effect.id != initial(checked_effect.id)) + continue + var/list/matching_sources = present_effect.sources & sources + if(length(matching_sources)) + return present_effect + + return null + +/** + * Returns a list of all status effects that share the passed effect type's ID + * + * checked_effect - TYPEPATH of a status effect to check for. Checks for its ID, not it's typepath + * + * Returns a list + */ +/mob/proc/has_status_effect_list(datum/status_effect/checked_effect) + // See [/mob/proc/has_status_effect] for reason behind having this on the mob level + return null + +/mob/living/has_status_effect_list(datum/status_effect/checked_effect) + RETURN_TYPE(/list) + + var/list/effects_found = list() + for(var/datum/status_effect/present_effect as anything in status_effects) + if(present_effect.id == initial(checked_effect.id)) + effects_found += present_effect + + return effects_found diff --git a/code/datums/status_effects/debuffs/debuffs.dm b/code/datums/status_effects/debuffs/debuffs.dm new file mode 100644 index 000000000000..0ecfead05615 --- /dev/null +++ b/code/datums/status_effects/debuffs/debuffs.dm @@ -0,0 +1,120 @@ +//Largely negative status effects go here, even if they have small benificial effects +//STUN EFFECTS +/datum/status_effect/incapacitating + tick_interval = -1 + status_type = STATUS_EFFECT_REPLACE + alert_type = null + remove_on_fullheal = TRUE +// heal_flag_necessary = HEAL_CC_STATUS + var/needs_update_stat = FALSE + +/datum/status_effect/incapacitating/on_creation(mob/living/new_owner, set_duration) + if(isnum(set_duration)) + update_duration(set_duration) + . = ..() + if(. && needs_update_stat) + owner.update_stat() + + +/datum/status_effect/incapacitating/on_remove() + if(needs_update_stat ) //silicons need stat updates in addition to normal canmove updates + owner.update_stat() + return ..() + +//STUN +/datum/status_effect/incapacitating/stun + id = "stun" +// alert_type = /atom/movable/screen/alert/status_effect/stun + +/datum/status_effect/incapacitating/stun/on_apply() + . = ..() + if(!.) + return + owner.add_traits(list(TRAIT_INCAPACITATED, TRAIT_IMMOBILIZED /*, TRAIT_HANDS_BLOCKED*/), TRAIT_STATUS_EFFECT(id)) + +/datum/status_effect/incapacitating/stun/on_remove() + owner.remove_traits(list(TRAIT_INCAPACITATED, TRAIT_IMMOBILIZED /*, TRAIT_HANDS_BLOCKED*/), TRAIT_STATUS_EFFECT(id)) + return ..() + +/atom/movable/screen/alert/status_effect/stun + name = "Stunned" + desc = "You are incapacitated. You may not move or act." + icon_state = ALERT_INCAPACITATED + + +//KNOCKDOWN +/datum/status_effect/incapacitating/knockdown + id = "knockdown" +// alert_type = /atom/movable/screen/alert/status_effect/knockdown + +/datum/status_effect/incapacitating/knockdown/on_apply() + . = ..() + if(!.) + return + owner.add_traits(list(TRAIT_FLOORED, TRAIT_IMMOBILIZED), TRAIT_STATUS_EFFECT(id)) + +/datum/status_effect/incapacitating/knockdown/on_remove() + owner.remove_traits(list(TRAIT_FLOORED, TRAIT_IMMOBILIZED), TRAIT_STATUS_EFFECT(id)) + return ..() + +/atom/movable/screen/alert/status_effect/knockdown + name = "Floored" + desc = "You can't stand up!" + icon_state = ALERT_FLOORED + +//IMMOBILIZED +/datum/status_effect/incapacitating/immobilized + id = "immobilized" +// alert_type = /atom/movable/screen/alert/status_effect/immobilized + +/datum/status_effect/incapacitating/immobilized/on_apply() + . = ..() + if(!.) + return + ADD_TRAIT(owner, TRAIT_IMMOBILIZED, TRAIT_STATUS_EFFECT(id)) + +/datum/status_effect/incapacitating/immobilized/on_remove() + REMOVE_TRAIT(owner, TRAIT_IMMOBILIZED, TRAIT_STATUS_EFFECT(id)) + return ..() + +/atom/movable/screen/alert/status_effect/immobilized + name = "Immobilized" + desc = "You can't move." + icon_state = ALERT_IMMOBILIZED + +//UNCONSCIOUS +/datum/status_effect/incapacitating/unconscious + id = "unconscious" + needs_update_stat = TRUE +// alert_type = /atom/movable/screen/alert/status_effect/unconscious + +/datum/status_effect/incapacitating/unconscious/on_apply() + . = ..() + if(!.) + return + ADD_TRAIT(owner, TRAIT_KNOCKEDOUT, TRAIT_STATUS_EFFECT(id)) + +/datum/status_effect/incapacitating/unconscious/on_remove() + REMOVE_TRAIT(owner, TRAIT_KNOCKEDOUT, TRAIT_STATUS_EFFECT(id)) + return ..() + +/atom/movable/screen/alert/status_effect/unconscious + name = "Unconscious" + desc = "You've been knocked out." + icon_state = ALERT_KNOCKEDOUT + +/// DAZED: +/// This prevents talking as human or using abilities as Xenos, mainly +/datum/status_effect/incapacitating/dazed + id = "dazed" + needs_update_stat = TRUE + +/datum/status_effect/incapacitating/dazed/on_apply() + . = ..() + if(!.) + return + ADD_TRAIT(owner, TRAIT_DAZED, TRAIT_STATUS_EFFECT(id)) + +/datum/status_effect/incapacitating/dazed/on_remove() + REMOVE_TRAIT(owner, TRAIT_DAZED, TRAIT_STATUS_EFFECT(id)) + return ..() diff --git a/code/datums/status_effects/grouped_effect.dm b/code/datums/status_effects/grouped_effect.dm new file mode 100644 index 000000000000..ade0a187e0db --- /dev/null +++ b/code/datums/status_effects/grouped_effect.dm @@ -0,0 +1,20 @@ +/// Status effect from multiple sources, when all sources are removed, so is the effect +/datum/status_effect/grouped + // Grouped effects adds itself to [var/sources] and destroys itself if one exists already, there are never actually multiple + status_type = STATUS_EFFECT_MULTIPLE + /// A list of all sources applying this status effect. Sources are a list of keys + var/list/sources = list() + +/datum/status_effect/grouped/on_creation(mob/living/new_owner, source) + var/datum/status_effect/grouped/existing = new_owner.has_status_effect(type) + if(existing) + existing.sources |= source + qdel(src) + return FALSE + + sources |= source + return ..() + +/datum/status_effect/grouped/before_remove(source) + sources -= source + return !length(sources) diff --git a/code/datums/status_effects/limited_effect.dm b/code/datums/status_effects/limited_effect.dm new file mode 100644 index 000000000000..0f56e72da52f --- /dev/null +++ b/code/datums/status_effects/limited_effect.dm @@ -0,0 +1,20 @@ +/// These effects reapply their on_apply() effect when refreshed while stacks < max_stacks. +/datum/status_effect/limited_buff + id = "limited_buff" + duration = -1 + status_type = STATUS_EFFECT_REFRESH + ///How many stacks we currently have + var/stacks = 1 + ///How many stacks we can have maximum + var/max_stacks = 3 + +/datum/status_effect/limited_buff/refresh(effect) + if(stacks < max_stacks) + on_apply() + stacks++ + else + maxed_out() + +/// Called whenever the buff is refreshed when there are more stacks than max_stacks. +/datum/status_effect/limited_buff/proc/maxed_out() + return diff --git a/code/datums/status_effects/stacking_effect.dm b/code/datums/status_effects/stacking_effect.dm new file mode 100644 index 000000000000..5812bcaacd48 --- /dev/null +++ b/code/datums/status_effects/stacking_effect.dm @@ -0,0 +1,101 @@ +/// Status effects that can stack. +/datum/status_effect/stacking + id = "stacking_base" + duration = -1 // Only removed under specific conditions. + tick_interval = 1 SECONDS // Deciseconds between decays, once decay starts + alert_type = null + /// How many stacks are currently accumulated. + /// Also, the default stacks number given on application. + var/stacks = 0 + // Deciseconds until ticks start occurring, which removes stacks + /// (first stack will be removed at this time plus tick_interval) + var/delay_before_decay + /// How many stacks are lost per tick (decay trigger) + var/stack_decay = 1 + /// The threshold for having special effects occur when a certain stack number is reached + var/stack_threshold + /// The maximum number of stacks that can be applied + var/max_stacks + /// If TRUE, the status effect is consumed / removed when stack_threshold is met + var/consumed_on_threshold = TRUE + /// Set to true once the stack_threshold is crossed, and false once it falls back below + var/threshold_crossed = FALSE + +/* This implementation is missing effects overlays because we did not have + /tg/ overlays backend available at the time. Feel free to add them when we do! */ + +/// Effects that occur when the stack count crosses stack_threshold +/datum/status_effect/stacking/proc/threshold_cross_effect() + return + +/// Effects that occur if the status effect is removed due to the stack_threshold being crossed +/datum/status_effect/stacking/proc/stacks_consumed_effect() + return + +/// Effects that occur if the status is removed due to being under 1 remaining stack +/datum/status_effect/stacking/proc/fadeout_effect() + return + +/// Runs every time tick(), causes stacks to decay over time +/datum/status_effect/stacking/proc/stack_decay_effect() + return + +/// Called when the stack_threshold is crossed (stacks go over the threshold) +/datum/status_effect/stacking/proc/on_threshold_cross() + threshold_cross_effect() + if(consumed_on_threshold) + stacks_consumed_effect() + qdel(src) + +/// Called when the stack_threshold is uncrossed / dropped (stacks go under the threshold after being over it) +/datum/status_effect/stacking/proc/on_threshold_drop() + return + +/// Whether the owner can have the status effect. +/// Return FALSE if the owner is not in a valid state (self-deletes the effect), or TRUE otherwise +/datum/status_effect/stacking/proc/can_have_status() + return owner.stat != DEAD + +/// Whether the owner can currently gain stacks or not +/// Return FALSE if the owner is not in a valid state, or TRUE otherwise +/datum/status_effect/stacking/proc/can_gain_stacks() + return owner.stat != DEAD + +/datum/status_effect/stacking/tick(seconds_between_ticks) + if(!can_have_status()) + qdel(src) + else + add_stacks(-stack_decay) + stack_decay_effect() + +/// Add (or remove) [stacks_added] stacks to our current stack count. +/datum/status_effect/stacking/proc/add_stacks(stacks_added) + if(stacks_added > 0 && !can_gain_stacks()) + return FALSE + stacks += stacks_added + if(stacks > 0) + if(stacks >= stack_threshold && !threshold_crossed) //threshold_crossed check prevents threshold effect from occurring if changing from above threshold to still above threshold + threshold_crossed = TRUE + on_threshold_cross() + if(consumed_on_threshold) + return + else if(stacks < stack_threshold && threshold_crossed) + threshold_crossed = FALSE //resets threshold effect if we fall below threshold so threshold effect can trigger again + on_threshold_drop() + if(stacks_added > 0) + tick_interval += delay_before_decay //refreshes time until decay + stacks = min(stacks, max_stacks) + else + fadeout_effect() + qdel(src) //deletes status if stacks fall under one + +/datum/status_effect/stacking/on_creation(mob/living/new_owner, stacks_to_apply) + . = ..() + if(.) + add_stacks(stacks_to_apply) + +/datum/status_effect/stacking/on_apply() + if(!can_have_status()) + return FALSE + return ..() + diff --git a/code/datums/supply_packs/_supply_packs.dm b/code/datums/supply_packs/_supply_packs.dm index 8f38c6151589..5bcd6937f623 100644 --- a/code/datums/supply_packs/_supply_packs.dm +++ b/code/datums/supply_packs/_supply_packs.dm @@ -20,9 +20,10 @@ var/group = null var/buyable = 1 ///Can this pack be bought? These packs don't show up at all - they have to be spawned externally (fe: DEFCON ASRS) var/randomised_num_contained = 0 //Randomly picks X of items out of the contains list instead of using all. - var/iteration_needed = 0 /// How many W-Y dollars are deducted from the supply controller. Only use for contraband. var/dollar_cost = 0 + /// How much "heat" this crate adds, too much heat will send an investigation. Only use for contraband. + var/crate_heat = 0 /datum/supply_packs/New() if(randomised_num_contained) diff --git a/code/datums/supply_packs/ammo.dm b/code/datums/supply_packs/ammo.dm index e598a11be5e0..326ca075a343 100644 --- a/code/datums/supply_packs/ammo.dm +++ b/code/datums/supply_packs/ammo.dm @@ -122,16 +122,6 @@ containername = "\improper M39 AP magazines crate" group = "Ammo" -/datum/supply_packs/ammo_smg_mag_box_ext - name = "Magazine box (M39, 10x extended mags)" - contains = list( - /obj/item/ammo_box/magazine/m39/ext, - ) - cost = 30 - containertype = /obj/structure/closet/crate/ammo - containername = "\improper M39 extended magazines crate" - group = "Ammo" - //------------------------For M4RA---------------- /datum/supply_packs/ammo_m4ra_mag_box @@ -250,6 +240,16 @@ containername = "\improper shotgun flechette crate" group = "Ammo" +/datum/supply_packs/ammo_shell_box_breaching + name = "Shell box (16g) (120x breaching shells)" + contains = list( + /obj/item/ammo_box/magazine/shotgun/light/breaching, + ) + cost = 40 + containertype = /obj/structure/closet/crate/ammo + containername = "\improper shotgun breaching crate" + group = "Ammo" + //------------------------For 88M4 ---------------- /datum/supply_packs/ammo_mod88_mag_box_ap @@ -306,6 +306,18 @@ containername = "\improper M41AE2 HPR holo-target magazines crate" group = "Ammo" +/datum/supply_packs/ammo_xm51 + contains = list( + /obj/item/ammo_magazine/rifle/xm51, + /obj/item/ammo_magazine/rifle/xm51, + /obj/item/ammo_magazine/shotgun/light/breaching, + ) + name = "XM51 Ammo (2x mags) (1x small breaching shell box)" + cost = 20 + containertype = /obj/structure/closet/crate/ammo + containername = "\improper XM51 ammo crate" + group = "Ammo" + //------------------------Smartgunner stuff---------------- /datum/supply_packs/ammo_smartgun_battery_pack diff --git a/code/datums/supply_packs/attachments.dm b/code/datums/supply_packs/attachments.dm index 2a812e94cfc1..b685e5c3c37f 100644 --- a/code/datums/supply_packs/attachments.dm +++ b/code/datums/supply_packs/attachments.dm @@ -84,17 +84,6 @@ containername = "extended barrel attachment crate" group = "Attachments" -/datum/supply_packs/muzzle_heavy - name = "barrel charger attachment crate (x2)" - contains = list( - /obj/item/attachable/heavy_barrel, - /obj/item/attachable/heavy_barrel, - ) - cost = 30 - containertype = /obj/structure/closet/crate - containername = "heavy barrel attachment crate" - group = "Attachments" - /datum/supply_packs/muzzle_compensator name = "compensator attachment crate (x6)" contains = list( diff --git a/code/datums/supply_packs/black_market.dm b/code/datums/supply_packs/black_market.dm index 7b036d592675..14ad047c7edb 100644 --- a/code/datums/supply_packs/black_market.dm +++ b/code/datums/supply_packs/black_market.dm @@ -16,7 +16,7 @@ black market prices are NOT based on real or in-universe costs. they are based o */ -/datum/supply_packs/contraband//base +/datum/supply_packs/contraband //base name = "contraband crate" contains = null containertype = null @@ -25,6 +25,7 @@ black market prices are NOT based on real or in-universe costs. they are based o contraband = TRUE cost = 0 dollar_cost = 50 + crate_heat = 5 /obj/structure/largecrate/black_market /// Wipes points from objects inside to avoid infinite farming. @@ -68,11 +69,13 @@ Non-USCM items, from CLF, UPP, colonies, etc. Mostly combat-related. contains = list(/obj/item/device/black_market_scanner) containername = "trash cart" dollar_cost = 5 + crate_heat = 0 containertype = /obj/structure/closet/crate/trashcart /datum/supply_packs/contraband/seized/confiscated_equipment name = "seized foreign equipment crate" dollar_cost = 70 + crate_heat = 10 containertype = /obj/structure/largecrate/black_market/confiscated_equipment /obj/structure/largecrate/black_market/confiscated_equipment/Initialize() @@ -98,7 +101,7 @@ Non-USCM items, from CLF, UPP, colonies, etc. Mostly combat-related. new /obj/item/clothing/head/helmet/marine/veteran/UPP(src) new /obj/item/clothing/under/marine/veteran/UPP(src) new /obj/item/clothing/suit/storage/marine/faction/UPP(src) - new /obj/item/clothing/shoes/marine/upp(src) + new /obj/item/clothing/shoes/marine/upp/knife(src) new /obj/item/clothing/gloves/marine/veteran(src) new /obj/item/storage/backpack/lightpack/five_slot(src) if(5) //freelancer @@ -115,6 +118,7 @@ Non-USCM items, from CLF, UPP, colonies, etc. Mostly combat-related. name = "seized foreign weaponry crate" contains = list() dollar_cost = 45 + crate_heat = 15 containertype = /obj/structure/largecrate/black_market/confiscated_weaponry /obj/structure/largecrate/black_market/confiscated_weaponry/Initialize() @@ -123,71 +127,42 @@ Non-USCM items, from CLF, UPP, colonies, etc. Mostly combat-related. spawn_guns() //the crate gives 2 guns /obj/structure/largecrate/black_market/confiscated_weaponry/proc/spawn_guns() - switch(rand(1,6)) + switch(rand(1, 5)) if(1) //pmc - if(prob(50)) - new /obj/item/weapon/gun/rifle/nsg23/no_lock(src) - new /obj/item/ammo_magazine/rifle/nsg23(src) - new /obj/item/ammo_magazine/rifle/nsg23(src) - new /obj/item/ammo_magazine/rifle/nsg23/ap(src) - new /obj/item/ammo_magazine/rifle/nsg23/extended(src) - else - new /obj/item/weapon/gun/smg/fp9000(src) - new /obj/item/ammo_magazine/smg/fp9000(src) - new /obj/item/ammo_magazine/smg/fp9000(src) - new /obj/item/ammo_magazine/smg/fp9000(src) - new /obj/item/ammo_magazine/smg/fp9000(src) + new /obj/item/weapon/gun/smg/fp9000(src) + new /obj/item/ammo_magazine/smg/fp9000(src) + new /obj/item/ammo_magazine/smg/fp9000(src) + new /obj/item/ammo_magazine/smg/fp9000(src) + new /obj/item/ammo_magazine/smg/fp9000(src) if(2) //pizza new /obj/item/weapon/gun/pistol/holdout(src) new /obj/item/ammo_magazine/pistol/holdout(src) if(3) //clf - switch(rand(1, 3)) + switch(rand(1, 2)) if(1) - new /obj/item/weapon/twohanded/lungemine/damaged(src) - if(2) new /obj/item/weapon/gun/smg/uzi(src) new /obj/item/ammo_magazine/smg/uzi/extended(src) new /obj/item/ammo_magazine/smg/uzi(src) new /obj/item/ammo_magazine/smg/uzi(src) - if(3) + if(2) new /obj/item/weapon/gun/smg/mac15(src) new /obj/item/ammo_magazine/smg/mac15/extended(src) new /obj/item/ammo_magazine/smg/mac15(src) new /obj/item/ammo_magazine/smg/mac15(src) if(4) //upp - if(prob(50)) - new /obj/item/weapon/gun/rifle/type71(src) - new /obj/item/ammo_magazine/rifle/type71/ap(src) - new /obj/item/ammo_magazine/rifle/type71(src) - new /obj/item/ammo_magazine/rifle/type71(src) - else - new /obj/item/weapon/gun/shotgun/type23/riot_control(src) - new /obj/item/ammo_magazine/handful/shotgun/heavy/beanbag(src) - new /obj/item/ammo_magazine/handful/shotgun/heavy/beanbag(src) - new /obj/item/ammo_magazine/handful/shotgun/heavy/flechette(src) - new /obj/item/ammo_magazine/handful/shotgun/heavy/flechette(src) - new /obj/item/ammo_magazine/handful/shotgun/heavy/slug(src) - new /obj/item/ammo_magazine/handful/shotgun/heavy/slug(src) //NO buckshot! + new /obj/item/weapon/gun/shotgun/type23/riot_control(src) + new /obj/item/ammo_magazine/handful/shotgun/heavy/beanbag(src) + new /obj/item/ammo_magazine/handful/shotgun/heavy/beanbag(src) + new /obj/item/ammo_magazine/handful/shotgun/heavy/flechette(src) + new /obj/item/ammo_magazine/handful/shotgun/heavy/flechette(src) + new /obj/item/ammo_magazine/handful/shotgun/heavy/slug(src) + new /obj/item/ammo_magazine/handful/shotgun/heavy/slug(src) //NO buckshot! if(5) //freelancer - if(prob(80)) - new /obj/item/weapon/gun/rifle/mar40(src) - new /obj/item/ammo_magazine/rifle/mar40/extended(src) - new /obj/item/ammo_magazine/rifle/mar40(src) - new /obj/item/ammo_magazine/rifle/mar40(src) - else - new /obj/item/weapon/gun/rifle/mar40/lmg(src) - new /obj/item/ammo_magazine/rifle/mar40/lmg(src) - if(6) //VAIPO - if(prob(50)) - new /obj/item/weapon/gun/rifle/mar40/tactical(src) - new /obj/item/ammo_magazine/rifle/mar40/extended(src) - new /obj/item/ammo_magazine/rifle/mar40/extended(src) - new /obj/item/ammo_magazine/rifle/mar40(src) - else - new /obj/item/weapon/gun/rifle/m41aMK1/tactical(src) - new /obj/item/ammo_magazine/rifle/m41aMK1/ap(src) - new /obj/item/ammo_magazine/rifle/m41aMK1(src) - new /obj/item/ammo_magazine/rifle/m41aMK1(src) + new /obj/item/weapon/gun/rifle/mar40(src) + new /obj/item/ammo_magazine/rifle/mar40/extended(src) + new /obj/item/ammo_magazine/rifle/mar40(src) + new /obj/item/ammo_magazine/rifle/mar40(src) + /* Misc. Individual Guns */ @@ -257,16 +232,6 @@ Additionally, weapons that are way too good to put in the basically-flavor black containertype = /obj/structure/largecrate/black_market // Shotguns - -/datum/supply_packs/contraband/seized/sawny - name = "Sawn-off Spearhead Rival 78 crate (x1 ammo box included)" - contains = list( - /obj/item/weapon/gun/shotgun/double/damaged, //its not actually sawed off........... get fuked - /obj/item/ammo_magazine/shotgun/buckshot, - ) - dollar_cost = 45 - containertype = /obj/structure/largecrate/black_market - /datum/supply_packs/contraband/seized/custom name = "custom-built shotgun crate (x1 ammo box included)" contains = list( @@ -343,15 +308,15 @@ Additionally, weapons that are way too good to put in the basically-flavor black dollar_cost = 5 containertype = /obj/structure/largecrate/black_market -/datum/supply_packs/contraband/seized/ppsh - name = "PPSh-17b submachinegun crate (x5 magazines included)" +/datum/supply_packs/contraband/seized/pps43 + name = "Type-19 submachinegun crate (x5 magazines included)" contains = list( - /obj/item/weapon/gun/smg/ppsh, - /obj/item/ammo_magazine/smg/ppsh/extended, - /obj/item/ammo_magazine/smg/ppsh/extended, - /obj/item/ammo_magazine/smg/ppsh, - /obj/item/ammo_magazine/smg/ppsh, - /obj/item/ammo_magazine/smg/ppsh, + /obj/item/weapon/gun/smg/pps43, + /obj/item/ammo_magazine/smg/pps43/extended, + /obj/item/ammo_magazine/smg/pps43/extended, + /obj/item/ammo_magazine/smg/pps43, + /obj/item/ammo_magazine/smg/pps43, + /obj/item/ammo_magazine/smg/pps43, ) dollar_cost = 15 containertype = /obj/structure/largecrate/black_market @@ -384,18 +349,18 @@ Additionally, weapons that are way too good to put in the basically-flavor black dollar_cost = 45 containertype = /obj/structure/largecrate/black_market -/datum/supply_packs/contraband/seized/c99 - name = "Korovin PK-9 pistol crate (x6 magazines included)" +/datum/supply_packs/contraband/seized/t73 + name = "Type 73 pistol crate (x6 magazines included)" contains = list( - /obj/item/weapon/gun/pistol/c99, - /obj/item/ammo_magazine/pistol/c99, - /obj/item/ammo_magazine/pistol/c99, - /obj/item/ammo_magazine/pistol/c99, - /obj/item/ammo_magazine/pistol/c99, - /obj/item/ammo_magazine/pistol/c99, - /obj/item/ammo_magazine/pistol/c99, + /obj/item/weapon/gun/pistol/t73, + /obj/item/ammo_magazine/pistol/t73, + /obj/item/ammo_magazine/pistol/t73, + /obj/item/ammo_magazine/pistol/t73, + /obj/item/ammo_magazine/pistol/t73, + /obj/item/ammo_magazine/pistol/t73, + /obj/item/ammo_magazine/pistol/t73, ) - dollar_cost = 5 + dollar_cost = 15 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/seized/kt42 @@ -424,16 +389,17 @@ Additionally, weapons that are way too good to put in the basically-flavor black /obj/item/ammo_magazine/pistol/holdout, ) dollar_cost = 5 + crate_heat = 2 containertype = /obj/structure/largecrate/black_market -/datum/supply_packs/contraband/seized/skorpion - name = "CZ-81 machine pistol (x4 magazines included)" +/datum/supply_packs/contraband/seized/bizon + name = "Type 64 Submachinegun (x4 magazines included)" contains = list( - /obj/item/weapon/gun/pistol/skorpion, - /obj/item/ammo_magazine/pistol/skorpion, - /obj/item/ammo_magazine/pistol/skorpion, - /obj/item/ammo_magazine/pistol/skorpion, - /obj/item/ammo_magazine/pistol/skorpion, + /obj/item/weapon/gun/smg/bizon, + /obj/item/ammo_magazine/smg/bizon, + /obj/item/ammo_magazine/smg/bizon, + /obj/item/ammo_magazine/smg/bizon, + /obj/item/ammo_magazine/smg/bizon, ) dollar_cost = 15 containertype = /obj/structure/largecrate/black_market @@ -454,7 +420,7 @@ Additionally, weapons that are way too good to put in the basically-flavor black containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/seized/small - name = "S&W revolver (x6 magazines included)" + name = "Smith and Wesson revolver (x6 magazines included)" contains = list( /obj/item/weapon/gun/revolver/small, /obj/item/ammo_magazine/revolver/small, @@ -467,10 +433,10 @@ Additionally, weapons that are way too good to put in the basically-flavor black dollar_cost = 15 containertype = /obj/structure/largecrate/black_market -/datum/supply_packs/contraband/seized/nagant - name = "N-Y 7.62mm revolver (x6 magazines included)" +/datum/supply_packs/contraband/seized/upprevolver + name = "ZHNK-72 revolver (x6 magazines included)" contains = list( - /obj/item/weapon/gun/revolver/nagant, + /obj/item/weapon/gun/revolver/upp, /obj/item/ammo_magazine/revolver/upp, /obj/item/ammo_magazine/revolver/upp, /obj/item/ammo_magazine/revolver/upp, @@ -478,7 +444,7 @@ Additionally, weapons that are way too good to put in the basically-flavor black /obj/item/ammo_magazine/revolver/upp, /obj/item/ammo_magazine/revolver/upp, ) - dollar_cost = 10 + dollar_cost = 15 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/seized/r4t @@ -538,6 +504,7 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat /obj/item/reagent_container/food/drinks/bottle/beer/craft/mono, ) dollar_cost = 35 + crate_heat = -5 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/shipside/confiscated_medicine @@ -552,6 +519,7 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat /obj/item/storage/pill_bottle/paracetamol, ) dollar_cost = 25 + crate_heat = 3 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/shipside/confiscated_cuisine @@ -565,10 +533,6 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat /obj/item/reagent_container/food/snacks/egg/random, /obj/item/reagent_container/food/snacks/egg/random, //not a dupe /obj/item/reagent_container/food/snacks/xemeatpie, - /obj/item/reagent_container/food/snacks/monkeycube, - /obj/item/reagent_container/food/snacks/monkeycube/farwacube, - /obj/item/reagent_container/food/snacks/monkeycube/stokcube, - /obj/item/reagent_container/food/snacks/monkeycube/yirencube, /obj/item/reagent_container/food/snacks/upp, /obj/item/reagent_container/food/snacks/mre_pack/xmas1, /obj/item/reagent_container/food/snacks/mre_pack/xmas2, @@ -593,6 +557,7 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat /obj/item/reagent_container/food/condiment/hotsauce/franks/macho, ) dollar_cost = 15 + crate_heat = -5 containertype = /obj/structure/largecrate/black_market @@ -609,6 +574,7 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat /obj/item/storage/fancy/cigar/tarbacktube, ) dollar_cost = 45 + crate_heat = -5 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/shipside/confiscated_miscellaneous @@ -619,7 +585,7 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat /obj/item/storage/box/packet/hefa/toy, /obj/item/toy/inflatable_duck, /obj/item/toy/beach_ball, - /obj/item/toy/farwadoll, + /obj/item/toy/plush/farwa, /obj/item/toy/waterflower, /obj/item/toy/spinningtoy, /obj/item/storage/box/snappops, @@ -633,7 +599,6 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat /obj/item/explosive/grenade/smokebomb, /obj/item/corncob, /obj/item/poster, - /obj/item/weapon/banhammer, /obj/item/toy/prize/ripley, /obj/item/toy/prize/fireripley, /obj/item/toy/prize/deathripley, @@ -650,6 +615,7 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat /obj/item/pamphlet/language/spanish, ) dollar_cost = 30 + crate_heat = -2 containertype = /obj/structure/largecrate/black_market @@ -670,25 +636,27 @@ USCM spare items, miscellaneous gear that's too niche and distant (or restricted name = "surplus USCM poncho crate (x2)" dollar_cost = 15 containertype = /obj/structure/largecrate/black_market/poncho + crate_heat = -2 /obj/structure/largecrate/black_market/poncho/Initialize() . = ..() var/obj/item/paper/nope = new(src) nope.name = "automated ASRS note" - nope.info = "Sorry! Your requested order of USCM PONCHO (X2) was not succesfully delivered because: 'No items of that type found in storage.'" + nope.info = "Sorry! Your requested order of USCM PONCHO (X2) was not successfully delivered because: 'No items of that type found in storage.'" nope.color = "green" nope.update_icon() /datum/supply_packs/contraband/surplus/uscm_heap name = "surplus high-explosive armor-piercing M41A magazine crate (x3)" dollar_cost = 40 + crate_heat = -2 containertype = /obj/structure/largecrate/black_market/uscm_heap /obj/structure/largecrate/black_market/uscm_heap/Initialize() . = ..() var/obj/item/paper/nope = new(src) nope.name = "automated ASRS note" - nope.info = "Sorry! Your requested order of HIGH-EXPLOSIVE ARMOR-PIERCING M41A MAGAZINE (X3) was not succesfully delivered because: 'ERROR: UNABLE TO ENTER COMPARTMENT EXIT CODE 2342: EXPLOSION HAZARD'" + nope.info = "Sorry! Your requested order of HIGH-EXPLOSIVE ARMOR-PIERCING M41A MAGAZINE (X3) was not successfully delivered because: 'ERROR: UNABLE TO ENTER COMPARTMENT EXIT CODE 2342: EXPLOSION HAZARD'" nope.color = "green" nope.update_icon() @@ -722,12 +690,6 @@ USCM spare items, miscellaneous gear that's too niche and distant (or restricted dollar_cost = 50 containertype = /obj/structure/largecrate/black_market -/datum/supply_packs/contraband/surplus/surplus_m4ra_extended - name = "surplus magazine box (Ext M4RA x 12)" - contains = list(/obj/item/ammo_box/magazine/m4ra/ext) - dollar_cost = 45 - containertype = /obj/structure/largecrate/black_market - /* - Misc. USCM weaponry - */ /datum/supply_packs/contraband/surplus/mk45_automag @@ -772,14 +734,13 @@ This is where the RO can reclaim their lost honor and purchase the M44 custom, t /datum/supply_packs/contraband/deep_storage group = "Deep Storage" - - -// Helmet Garb + crate_heat = -5 /datum/supply_packs/contraband/deep_storage/spacejam name = "Tickets to Space Jam" contains = list(/obj/item/prop/helmetgarb/spacejam_tickets) dollar_cost = 5 + crate_heat = -2 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/deep_storage/broken_nvgs @@ -788,8 +749,8 @@ This is where the RO can reclaim their lost honor and purchase the M44 custom, t dollar_cost = 10 containertype = /obj/structure/largecrate/black_market -/datum/supply_packs/contraband/deep_storage/xm42b_pipe - name = "10x99mm XM42B casing" +/datum/supply_packs/contraband/deep_storage/xm43e1_pipe + name = "10x99mm XM43E1 casing" contains = list(/obj/item/prop/helmetgarb/bullet_pipe) dollar_cost = 10 containertype = /obj/structure/largecrate/black_market @@ -934,6 +895,7 @@ This is where the RO can reclaim their lost honor and purchase the M44 custom, t name = "Frozen Lime" contains = list(/obj/item/reagent_container/food/snacks/grown/lime) dollar_cost = 5 + crate_heat = -2 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/deep_storage/uno_reverse_random @@ -972,18 +934,21 @@ This is where the RO can reclaim their lost honor and purchase the M44 custom, t name = "D18 Holdout Pistol" contains = list(/obj/item/storage/box/clf) dollar_cost = 10 + crate_heat = 2 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/deep_storage/m4a3_c name = "M4A3 Custom Pistol" contains = list(/obj/item/weapon/gun/pistol/m4a3/custom) dollar_cost = 35 + crate_heat = 4 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/deep_storage/m44_c name = "M44 Custom Revolver" contains = list(/obj/item/weapon/gun/revolver/m44/custom) dollar_cost = 70 + crate_heat = 4 containertype = /obj/structure/largecrate/black_market /* --- MISCELLANEOUS --- */ @@ -1000,6 +965,7 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro /datum/supply_packs/contraband/miscellaneous/secured_wildlife name = "secured wildlife container" dollar_cost = 45 + crate_heat = 7 containertype = /obj/structure/largecrate/black_market/secured_wildlife /obj/structure/largecrate/black_market/secured_wildlife @@ -1018,6 +984,7 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro /datum/supply_packs/contraband/miscellaneous/potted_plant name = "potted plant crate" dollar_cost = 50 + crate_heat = -10 contains = list(/obj/structure/flora/pottedplant/random/unanchored) containertype = /obj/structure/largecrate/black_market @@ -1030,6 +997,7 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro /datum/supply_packs/contraband/miscellaneous/clf_supplies name = "unmarked CLF supply crate" dollar_cost = 40 + crate_heat = 25 contains = list() containertype = /obj/structure/largecrate/black_market/clf_supplies @@ -1078,11 +1046,11 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro new picked_type(loc) loot_message = SPAN_NOTICE("It's some strange elite gear...?") if(11 to 15) - //Skorpion - new /obj/item/weapon/gun/pistol/skorpion(loc) - new /obj/item/ammo_magazine/pistol/skorpion(loc) - new /obj/item/ammo_magazine/pistol/skorpion(loc) - new /obj/item/ammo_magazine/pistol/skorpion(loc) + //Type 64 + new /obj/item/weapon/gun/smg/bizon(loc) + new /obj/item/ammo_magazine/smg/bizon(loc) + new /obj/item/ammo_magazine/smg/bizon(loc) + new /obj/item/ammo_magazine/smg/bizon(loc) // Somehow they found a Webley. new /obj/item/weapon/gun/revolver/m44/custom/webley(loc) new /obj/item/ammo_magazine/revolver/webley(loc) @@ -1090,18 +1058,18 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro new /obj/item/ammo_magazine/revolver/webley(loc) loot_message = SPAN_NOTICE("It's some CLF pistol armaments!") if(16 to 20) - // PPSH - new /obj/item/weapon/gun/smg/ppsh/with_drum_mag(loc) - new /obj/item/ammo_magazine/smg/ppsh/extended(loc) - new /obj/item/ammo_magazine/smg/ppsh/extended(loc) - new /obj/item/ammo_magazine/smg/ppsh/extended(loc) + // Type 19 + new /obj/item/weapon/gun/smg/pps43/extended_mag(loc) + new /obj/item/ammo_magazine/smg/pps43/extended(loc) + new /obj/item/ammo_magazine/smg/pps43/extended(loc) + new /obj/item/ammo_magazine/smg/pps43/extended(loc) // MAC-15 new /obj/item/weapon/gun/smg/mac15/extended(loc) new /obj/item/ammo_magazine/smg/mac15/extended(loc) new /obj/item/ammo_magazine/smg/mac15/extended(loc) new /obj/item/ammo_magazine/smg/mac15/extended(loc) loot_message = SPAN_NOTICE("It's some CLF SMG armaments.") - if(21 to 25) + if(21 to 29) // Discovered Yautja ruins.. (None of these will trigger any alarms. They are far too old, degraded, and useless for any Yautja to care.) new /obj/item/clothing/mask/yautja_flavor(loc) new /obj/item/clothing/suit/armor/yautja_flavor(loc) @@ -1109,13 +1077,7 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro new /obj/item/weapon/twohanded/yautja/glaive/damaged(loc) new /obj/item/stack/yautja_rope(loc) loot_message = SPAN_NOTICE("It's some strange ancient gear...?") - if(26 to 30) - // Damaged lunge mines, don't let the marines near these. Not even *close* to effective against even a runner. - new /obj/item/weapon/twohanded/lungemine/damaged(loc) - new /obj/item/weapon/twohanded/lungemine/damaged(loc) - new /obj/item/weapon/twohanded/lungemine/damaged(loc) - loot_message = SPAN_NOTICE("It's a bunch of lunge mines..?") - if(31 to 35) + if(30 to 35) // CLF nades! loot_message = SPAN_NOTICE("It's a package of assorted CLF grenades!") var/list/nades_to_pick = list( diff --git a/code/datums/supply_packs/clothing.dm b/code/datums/supply_packs/clothing.dm index 0e7604ead7c7..4f0d414a2655 100644 --- a/code/datums/supply_packs/clothing.dm +++ b/code/datums/supply_packs/clothing.dm @@ -110,10 +110,10 @@ /datum/supply_packs/officer_outfits//lmao this shit is so hideously out of date contains = list( - /obj/item/clothing/under/rank/ro_suit, + /obj/item/clothing/under/rank/qm_suit, /obj/item/clothing/under/marine/officer/bridge, /obj/item/clothing/under/marine/officer/bridge, - /obj/item/clothing/under/marine/officer/exec, + /obj/item/clothing/under/marine/dress, /obj/item/clothing/under/marine/officer/ce, ) name = "officer outfit crate" diff --git a/code/datums/supply_packs/explosives.dm b/code/datums/supply_packs/explosives.dm index 22458ef3fa6b..032ef047c78a 100644 --- a/code/datums/supply_packs/explosives.dm +++ b/code/datums/supply_packs/explosives.dm @@ -1,7 +1,7 @@ // Group to populate with all the explosives exept OB and mortar shell /datum/supply_packs/explosives - name = "surplus explosives crate (claymore mine x5, M40 HIDP x2, M40 HEDP x2, M15 Frag x2, M12 Blast x2)" + name = "surplus explosives crate (claymore mine x5, M40 HIDP x2, M40 HEDP x2, M15 Frag x2, M12 Blast x2, M40 MFHS x2)" contains = list( /obj/item/storage/box/explosive_mines, /obj/item/explosive/grenade/high_explosive, @@ -12,6 +12,8 @@ /obj/item/explosive/grenade/high_explosive/m15, /obj/item/explosive/grenade/high_explosive/pmc, /obj/item/explosive/grenade/high_explosive/pmc, + /obj/item/explosive/grenade/metal_foam, + /obj/item/explosive/grenade/metal_foam, ) cost = 40 containertype = /obj/structure/closet/crate/explosives diff --git a/code/datums/supply_packs/food.dm b/code/datums/supply_packs/food.dm index caef6e3f8664..f74567c78a89 100644 --- a/code/datums/supply_packs/food.dm +++ b/code/datums/supply_packs/food.dm @@ -1,147 +1,50 @@ //Food.Regrouping all the ASRS crate related to food here. - -//All the ingredients that you can grown. - -/datum/supply_packs/potato - name = "Potatoes(x20)" - contains = list( - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - ) - cost = 10 - containertype = /obj/structure/closet/crate/freezer - containername = "\improper Potato crate" - group = "Food" - -/datum/supply_packs/tomato - name = "tomato (x20)" - contains = list( - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - ) - cost = 10 - containertype = /obj/structure/closet/crate/freezer - containername = "\improper Tomato crate" - group = "Food" - -/datum/supply_packs/wheat - name = "wheat (x20)" - contains = list( - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - ) - cost = 10 - containertype = /obj/structure/closet/crate/freezer - containername = "\improper Wheat crate" - group = "Food" - -//All the meats - -/datum/supply_packs/meat - name = "meat(x5)" - contains = list( - /obj/item/reagent_container/food/snacks/meat, - /obj/item/reagent_container/food/snacks/meat, - /obj/item/reagent_container/food/snacks/meat, - /obj/item/reagent_container/food/snacks/meat, - /obj/item/reagent_container/food/snacks/meat, - ) - cost = 10 - containertype = /obj/structure/closet/crate/freezer - containername = "\improper meat crate" - group = "Food" - -/datum/supply_packs/carp_fillet - name = "carp fillet (x5)" - contains = list( - /obj/item/reagent_container/food/snacks/carpmeat, - /obj/item/reagent_container/food/snacks/carpmeat, - /obj/item/reagent_container/food/snacks/carpmeat, - /obj/item/reagent_container/food/snacks/carpmeat, - /obj/item/reagent_container/food/snacks/carpmeat, - ) - cost = 10 - containertype = /obj/structure/closet/crate/freezer - containername = "\improper carp filet crate" - group = "Food" - -//all the condiment type items - -/datum/supply_packs/condiment - name = "crate of condiments" +// crate of random ingredient that you can buy in vendor in kitchen +/datum/supply_packs/ingredient + name = "surplus boxes of ingredients(x6 boxes)" + randomised_num_contained = 6 contains = list( - /obj/item/reagent_container/food/condiment/enzyme, - /obj/item/reagent_container/food/condiment/sugar, - /obj/item/reagent_container/food/condiment/saltshaker, - /obj/item/reagent_container/food/condiment/peppermill, + /obj/item/storage/fancy/egg_box, + /obj/item/storage/box/fish, + /obj/item/storage/box/meat, + /obj/item/storage/box/milk, + /obj/item/storage/box/soymilk, + /obj/item/storage/box/enzyme, + /obj/item/storage/box/flour, + /obj/item/storage/box/sugar, + /obj/item/storage/box/apple, + /obj/item/storage/box/banana, + /obj/item/storage/box/chanterelle, + /obj/item/storage/box/cherries, + /obj/item/storage/box/chili, + /obj/item/storage/box/cabbage, + /obj/item/storage/box/carrot, + /obj/item/storage/box/corn, + /obj/item/storage/box/eggplant, + /obj/item/storage/box/lemon, + /obj/item/storage/box/lime, + /obj/item/storage/box/orange, + /obj/item/storage/box/potato, + /obj/item/storage/box/tomato, + /obj/item/storage/box/whitebeet, /obj/item/reagent_container/food/condiment/hotsauce/cholula, /obj/item/reagent_container/food/condiment/hotsauce/franks, /obj/item/reagent_container/food/condiment/hotsauce/sriracha, /obj/item/reagent_container/food/condiment/hotsauce/tabasco, + /obj/item/reagent_container/food/drinks/bottle/whiskey, + /obj/item/reagent_container/food/drinks/bottle/tequila, + /obj/item/reagent_container/food/drinks/bottle/rum, + /obj/item/reagent_container/food/drinks/bottle/wine, ) cost = 10 containertype = /obj/structure/closet/crate/freezer - containername = "\improper crate of condiment" + containername = "\improper surplus of ingredients crate" group = "Food" - //all the finish snacks. +//all the finish snacks. /datum/supply_packs/donuts - name = "boxe of donut (x5)" + name = "box of donuts (x5)" contains = list( /obj/item/storage/donut_box, /obj/item/storage/donut_box, @@ -151,7 +54,7 @@ ) cost = 10 containertype = /obj/structure/closet/crate/supply - containername = "\improper boxe of donut (x5)" + containername = "box of donuts (x5)" group = "Food" /datum/supply_packs/mre @@ -165,47 +68,6 @@ containername = "\improper USCM MRE crate(x2)" group = "Food" -/datum/supply_packs/funfood - name = "special ingredients crate (x6)" - randomised_num_contained = 6 - contains = list( - /obj/item/reagent_container/food/condiment/enzyme, - /obj/item/reagent_container/food/condiment/saltshaker, - /obj/item/reagent_container/food/condiment/saltshaker, - /obj/item/reagent_container/food/condiment/saltshaker, - /obj/item/reagent_container/food/condiment/peppermill, - /obj/item/reagent_container/food/condiment/peppermill, - /obj/item/reagent_container/food/condiment/peppermill, - /obj/item/reagent_container/food/condiment/sugar, - /obj/item/reagent_container/food/condiment/sugar, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/mint, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/carrot, - /obj/item/reagent_container/food/snacks/grown/carrot, - /obj/item/reagent_container/food/snacks/grown/lemon, - /obj/item/reagent_container/food/snacks/grown/lemon, - /obj/item/reagent_container/food/snacks/grown/orange, - /obj/item/reagent_container/food/snacks/grown/orange, - /obj/item/reagent_container/food/snacks/grown/lime, - /obj/item/reagent_container/food/snacks/grown/lime, - /obj/item/reagent_container/food/drinks/bottle/whiskey, - /obj/item/reagent_container/food/drinks/bottle/tequila, - /obj/item/reagent_container/food/drinks/bottle/rum, - /obj/item/reagent_container/food/drinks/bottle/wine, - /obj/item/reagent_container/food/drinks/bottle/wine, - /obj/item/reagent_container/food/drinks/bottle/wine, - ) - cost = 10 - containertype = /obj/structure/closet/crate/freezer - containername = "\improper Special ingredients crate" - group = "Food" - /datum/supply_packs/pizzas name = "pizza ready-to-eat (x3)" contains = list( diff --git a/code/datums/supply_packs/gear.dm b/code/datums/supply_packs/gear.dm index b67f8f134c25..54a2ae221c9d 100644 --- a/code/datums/supply_packs/gear.dm +++ b/code/datums/supply_packs/gear.dm @@ -63,15 +63,3 @@ containertype = /obj/structure/closet/crate/ammo containername = "fulton recovery device crate" group = "Gear" - -/datum/supply_packs/nvg - name = "M2 Night Vision Goggles Crate (x3)" - contains = list( - /obj/item/prop/helmetgarb/helmet_nvg, - /obj/item/prop/helmetgarb/helmet_nvg, - /obj/item/prop/helmetgarb/helmet_nvg, - ) - cost = 60 - containertype = /obj/structure/closet/crate/supply - containername = "M2 Night Vission Goggles Crate" - group = "Gear" diff --git a/code/datums/supply_packs/medical.dm b/code/datums/supply_packs/medical.dm index 05cb4d2f34c0..097642eb163f 100644 --- a/code/datums/supply_packs/medical.dm +++ b/code/datums/supply_packs/medical.dm @@ -22,8 +22,33 @@ containername = "medical crate" group = "Medical" +/datum/supply_packs/pillbottle + name = "pill bottle crate (x2 each)" + contains = list( + /obj/item/storage/pill_bottle/inaprovaline, + /obj/item/storage/pill_bottle/antitox, + /obj/item/storage/pill_bottle/bicaridine, + /obj/item/storage/pill_bottle/dexalin, + /obj/item/storage/pill_bottle/kelotane, + /obj/item/storage/pill_bottle/tramadol, + /obj/item/storage/pill_bottle/peridaxon, + /obj/item/storage/pill_bottle/inaprovaline, + /obj/item/storage/pill_bottle/antitox, + /obj/item/storage/pill_bottle/bicaridine, + /obj/item/storage/pill_bottle/dexalin, + /obj/item/storage/pill_bottle/kelotane, + /obj/item/storage/pill_bottle/tramadol, + /obj/item/storage/pill_bottle/peridaxon, + /obj/item/storage/box/pillbottles, + /obj/item/storage/box/pillbottles, + ) + cost = 20 + containertype = /obj/structure/closet/crate/medical + containername = "medical crate" + group = "Medical" + /datum/supply_packs/firstaid - name = "first aid kit crate (2x each)" + name = "first aid kit crate (x2 each)" contains = list( /obj/item/storage/firstaid/regular, /obj/item/storage/firstaid/regular, @@ -36,7 +61,7 @@ /obj/item/storage/firstaid/adv, /obj/item/storage/firstaid/adv, ) - cost = 20 + cost = 16 containertype = /obj/structure/closet/crate/medical containername = "medical crate" group = "Medical" @@ -49,7 +74,7 @@ /obj/item/storage/box/bodybags, /obj/item/storage/box/bodybags, ) - cost = 20 + cost = 12 containertype = /obj/structure/closet/crate/medical containername = "body bag crate" group = "Medical" @@ -61,7 +86,7 @@ /obj/item/bodybag/cryobag, /obj/item/bodybag/cryobag, ) - cost = 40 + cost = 20 containertype = /obj/structure/closet/crate/medical containername = "stasis bag crate" group = "Medical" diff --git a/code/datums/supply_packs/operations.dm b/code/datums/supply_packs/operations.dm index cc4408659d09..e5525504716a 100644 --- a/code/datums/supply_packs/operations.dm +++ b/code/datums/supply_packs/operations.dm @@ -24,7 +24,6 @@ containername = "OB Ammo Crate (Incendiary x2)" buyable = 0 group = "Operations" - iteration_needed = null /datum/supply_packs/ob_explosive contains = list( @@ -48,7 +47,6 @@ containername = "OB Ammo Crate (HE x2)" buyable = 0 group = "Operations" - iteration_needed = null /datum/supply_packs/ob_cluster contains = list( @@ -72,7 +70,6 @@ containername = "OB Ammo Crate (Cluster x2)" buyable = 0 group = "Operations" - iteration_needed = null /datum/supply_packs/telecommsparts name = "Replacement Telecommunications Parts" @@ -94,24 +91,29 @@ group = "Operations" /datum/supply_packs/nuclearbomb - name = "Operational Nuke" + name = "Decrypted Operational Nuke" cost = 0 containertype = /obj/structure/machinery/nuclearbomb buyable = 0 group = "Operations" - iteration_needed = null + +/datum/supply_packs/technuclearbomb + name = "Encrypted Operational Nuke" + cost = 0 + containertype = /obj/structure/machinery/nuclearbomb/tech + buyable = 0 + group = "Operations" /datum/supply_packs/spec_kits name = "Weapons Specialist Kits" contains = list( - /obj/item/spec_kit/asrs, - /obj/item/spec_kit/asrs, - /obj/item/spec_kit/asrs, - /obj/item/spec_kit/asrs, + /obj/item/spec_kit/rifleman, + /obj/item/spec_kit/rifleman, + /obj/item/spec_kit/rifleman, + /obj/item/spec_kit/rifleman, ) cost = 0 containertype = /obj/structure/closet/crate/supply containername = "weapons specialist kits crate" buyable = 0 group = "Operations" - iteration_needed = null diff --git a/code/datums/supply_packs/restricted_equipment.dm b/code/datums/supply_packs/restricted_equipment.dm index 452ef313908a..7979d21f9743 100644 --- a/code/datums/supply_packs/restricted_equipment.dm +++ b/code/datums/supply_packs/restricted_equipment.dm @@ -4,7 +4,7 @@ name = "B12 pattern marine armor crate (x1 helmet, x1 armor)" contains = list( /obj/item/clothing/head/helmet/marine/leader, - /obj/item/clothing/suit/storage/marine/leader, + /obj/item/clothing/suit/storage/marine/medium/leader, ) cost = 20 containertype = /obj/structure/closet/crate @@ -15,7 +15,7 @@ name = "M4 pattern marine armor crate (x1 helmet, x1 armor)" contains = list( /obj/item/clothing/head/helmet/marine/rto, - /obj/item/clothing/suit/storage/marine/rto, + /obj/item/clothing/suit/storage/marine/medium/rto, ) cost = 20 containertype = /obj/structure/closet/crate diff --git a/code/datums/supply_packs/spec_ammo.dm b/code/datums/supply_packs/spec_ammo.dm index 7931a4d40204..f0eb5ab9cea2 100644 --- a/code/datums/supply_packs/spec_ammo.dm +++ b/code/datums/supply_packs/spec_ammo.dm @@ -109,10 +109,10 @@ containername = "M42A Incendiary Magazine Crate" group = "Weapons Specialist Ammo" -//XM42B - Disabled during testing per request. +//XM43E1 - Disabled during testing per request. /* /datum/supply_packs/ammo_amr_marksman - name = "XM42B anti-materiel rifle marksman magazines crate (x5)" + name = "XM43E1 anti-materiel rifle marksman magazines crate (x5)" contains = list( /obj/item/ammo_magazine/sniper/anti_materiel, /obj/item/ammo_magazine/sniper/anti_materiel, @@ -122,7 +122,7 @@ ) cost = 30 containertype = /obj/structure/closet/crate/ammo - containername = "XM42B Anti-Materiel Magazine Crate" + containername = "XM43E1 Anti-Materiel Magazine Crate" group = "Specialist Ammo" */ //M4RA @@ -157,13 +157,11 @@ group = "Weapons Specialist Ammo" /datum/supply_packs/ammo_scout_incendiary - name = "M4RA Scout Incendiary Magazine Crate (x5)" + name = "M4RA Scout Incendiary Magazine Crate (x3)" contains = list( /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary, /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary, /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary, - /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary, - /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary, ) cost = 30 containertype = /obj/structure/closet/crate/ammo @@ -171,13 +169,11 @@ group = "Weapons Specialist Ammo" /datum/supply_packs/ammo_scout_impact - name = "M4RA Scout Impact Magazine Crate (x5)" + name = "M4RA Scout Impact Magazine Crate (x3)" contains = list( /obj/item/ammo_magazine/rifle/m4ra/custom/impact, /obj/item/ammo_magazine/rifle/m4ra/custom/impact, /obj/item/ammo_magazine/rifle/m4ra/custom/impact, - /obj/item/ammo_magazine/rifle/m4ra/custom/impact, - /obj/item/ammo_magazine/rifle/m4ra/custom/impact, ) cost = 30 containertype = /obj/structure/closet/crate/ammo diff --git a/code/datums/supply_packs/weapons.dm b/code/datums/supply_packs/weapons.dm index a28e0c7191ce..8939b80e52d6 100644 --- a/code/datums/supply_packs/weapons.dm +++ b/code/datums/supply_packs/weapons.dm @@ -42,7 +42,7 @@ group = "Weapons" /datum/supply_packs/grenade_launchers - name = "M79 Grenade Launcher Crate (x2 Guncasess)" + name = "M79 Grenade Launcher Crate (x2 Guncases)" contains = list( /obj/item/storage/box/guncase/m79, /obj/item/storage/box/guncase/m79, @@ -60,7 +60,18 @@ ) cost = 30 containertype = /obj/structure/closet/crate/weapon - containername = "MOU-53 Breack Action Shotgun Crate" + containername = "MOU-53 Break Action Shotgun Crate" + group = "Weapons" + +/datum/supply_packs/xm51 + name = "XM51 Breaching Scattergun Crate (x2)" + contains = list( + /obj/item/storage/box/guncase/xm51, + /obj/item/storage/box/guncase/xm51, + ) + cost = 30 + containertype = /obj/structure/closet/crate/weapon + containername = "XM51 Breaching Scattergun Crate" group = "Weapons" /datum/supply_packs/smartpistol @@ -120,6 +131,16 @@ containername = "\improper XM88 Heavy Rifle crate" group = "Weapons" +/* Uncomment me if it's decided to let the m707 be purchasable through req +/datum/supply_packs/gun/m707 + name = "M707 Anti-Materiel Rifle crate (M707 x1)" + contains = list() + cost = 120 + containertype = /obj/structure/closet/crate/secure/vulture + containername = "M707 crate" + group = "Weapons" +*/ + /datum/supply_packs/gun/merc contains = list() name = "black market firearms (x1)" diff --git a/code/datums/tgs_event_handler.dm b/code/datums/tgs_event_handler.dm index a47d1e95af00..072a0f4d605c 100644 --- a/code/datums/tgs_event_handler.dm +++ b/code/datums/tgs_event_handler.dm @@ -14,21 +14,13 @@ message_admins("TGS: Instance renamed to from [world.TgsInstanceName()] to [args[2]]") if(TGS_EVENT_COMPILE_START) message_admins("TGS: Deployment started, new game version incoming...") - if(world.system_type == UNIX && SSredis.connected) - SSredis.disconnect(TGS_COMPILE) if(TGS_EVENT_COMPILE_CANCELLED) message_admins("TGS: Deployment cancelled!") - if(world.system_type == UNIX && CONFIG_GET(flag/redis_enabled) && !SSredis.connected) - SSredis.reconnect() if(TGS_EVENT_COMPILE_FAILURE) message_admins("TGS: Deployment failed!") - if(world.system_type == UNIX && CONFIG_GET(flag/redis_enabled) && !SSredis.connected) - SSredis.reconnect() if(TGS_EVENT_DEPLOYMENT_COMPLETE) message_admins("TGS: Deployment complete!") to_chat(world, SPAN_BOLDANNOUNCE("Server updated, changes will be applied on the next round...")) - if(world.system_type == UNIX && CONFIG_GET(flag/redis_enabled) && !SSredis.connected) - SSredis.reconnect() if(TGS_EVENT_WATCHDOG_DETACH) message_admins("TGS restarting...") reattach_timer = addtimer(CALLBACK(src, PROC_REF(LateOnReattach)), 1 MINUTES, TIMER_STOPPABLE) diff --git a/code/datums/tutorial/_tutorial.dm b/code/datums/tutorial/_tutorial.dm new file mode 100644 index 000000000000..7dd7ac85c04d --- /dev/null +++ b/code/datums/tutorial/_tutorial.dm @@ -0,0 +1,260 @@ +GLOBAL_LIST_EMPTY_TYPED(ongoing_tutorials, /datum/tutorial) + +/// A tutorial datum contains a set of instructions for a player tutorial, such as what to spawn, what's scripted to occur, and so on. +/datum/tutorial + /// What the tutorial is called, is player facing + var/name = "Base" + /// Internal ID of the tutorial, kept for save files + var/tutorial_id = "base" + /// A short 1-2 sentence description of the tutorial itself + var/desc = "" + /// What the tutorial's icon in the UI should look like + var/icon_state = "" + /// What category the tutorial should be under + var/category = TUTORIAL_CATEGORY_BASE + /// Ref to the bottom-left corner tile of the tutorial room + var/turf/bottom_left_corner + /// Ref to the turf reservation for this tutorial + var/datum/turf_reservation/reservation + /// Ref to the player who is doing the tutorial + var/mob/tutorial_mob + /// If the tutorial will be ending soon + var/tutorial_ending = FALSE + /// A dict of type:atom ref for some important junk that should be trackable + var/list/tracking_atoms = list() + /// What map template should be used for the tutorial + var/datum/map_template/tutorial/tutorial_template = /datum/map_template/tutorial/s12x12 + /// What is the parent path of this, to exclude from the tutorial menu + var/parent_path = /datum/tutorial + /// A dictionary of "bind_name" : "keybind_button". The inverse of `key_bindings` on a client's prefs + var/list/player_bind_dict = list() + +/datum/tutorial/Destroy(force, ...) + GLOB.ongoing_tutorials -= src + QDEL_NULL(reservation) // Its Destroy() handles releasing reserved turfs + + tutorial_mob = null // We don't delete it because the turf reservation will typically clean it up + + QDEL_LIST_ASSOC_VAL(tracking_atoms) + + return ..() + +/// The proc to begin doing everything related to the tutorial +/datum/tutorial/proc/start_tutorial(mob/starting_mob) + SHOULD_CALL_PARENT(TRUE) + + if(!starting_mob?.client) + return FALSE + + ADD_TRAIT(starting_mob, TRAIT_IN_TUTORIAL, TRAIT_SOURCE_TUTORIAL) + + tutorial_mob = starting_mob + + reservation = SSmapping.RequestBlockReservation(initial(tutorial_template.width), initial(tutorial_template.height)) + if(!reservation) + abort_tutorial() + return FALSE + + var/turf/bottom_left_corner_reservation = locate(reservation.bottom_left_coords[1], reservation.bottom_left_coords[2], reservation.bottom_left_coords[3]) + var/datum/map_template/tutorial/template = new tutorial_template + template.load(bottom_left_corner_reservation, FALSE, TRUE) + var/obj/landmark = locate(/obj/effect/landmark/tutorial_bottom_left) in GLOB.landmarks_list + bottom_left_corner = get_turf(landmark) + qdel(landmark) + + if(!verify_template_loaded()) + abort_tutorial() + return FALSE + + generate_binds() + + GLOB.ongoing_tutorials |= src + var/area/tutorial_area = get_area(bottom_left_corner) + tutorial_area.update_base_lighting() // this will be entirely dark otherwise + init_map() + if(!tutorial_mob) + end_tutorial() + + return TRUE + +/// The proc used to end and clean up the tutorial +/datum/tutorial/proc/end_tutorial(completed = FALSE) + SHOULD_CALL_PARENT(TRUE) + + if(tutorial_mob) + remove_action(tutorial_mob, /datum/action/tutorial_end) // Just in case to make sure the client can't try and leave the tutorial while it's mid-cleanup + if(tutorial_mob.client?.prefs && completed) + tutorial_mob.client.prefs.completed_tutorials |= tutorial_id + tutorial_mob.client.prefs.save_character() + var/mob/new_player/new_player = new + if(!tutorial_mob.mind) + tutorial_mob.mind_initialize() + + tutorial_mob.mind.transfer_to(new_player) + + if(!QDELETED(src)) + qdel(src) + +/// Verify the template loaded fully and without error. +/datum/tutorial/proc/verify_template_loaded() + // We subtract 1 from x and y because the bottom left corner doesn't start at the walls. + var/turf/true_bottom_left_corner = locate( + reservation.bottom_left_coords[1], + reservation.bottom_left_coords[2], + reservation.bottom_left_coords[3], + ) + // We subtract 1 from x and y here because the bottom left corner counts as the first tile + var/turf/top_right_corner = locate( + true_bottom_left_corner.x + initial(tutorial_template.width) - 1, + true_bottom_left_corner.y + initial(tutorial_template.height) - 1, + true_bottom_left_corner.z + ) + for(var/turf/tile as anything in block(true_bottom_left_corner, top_right_corner)) + // For some reason I'm unsure of, the template will not always fully load, leaving some tiles to be space tiles. So, we check all tiles in the (small) tutorial area + // and tell start_tutorial to abort if there's any space tiles. + if(istype(tile, /turf/open/space)) + return FALSE + + return TRUE + +/// Something went very, very wrong during load so let's abort +/datum/tutorial/proc/abort_tutorial() + to_chat(tutorial_mob, SPAN_BOLDWARNING("Something went wrong during tutorial load, please try again!")) + end_tutorial(FALSE) + +/datum/tutorial/proc/add_highlight(atom/target, color = "#d19a02") + target.add_filter("tutorial_highlight", 2, list("type" = "outline", "color" = color, "size" = 1)) + +/datum/tutorial/proc/remove_highlight(atom/target) + target.remove_filter("tutorial_highlight") + +/datum/tutorial/proc/add_to_tracking_atoms(atom/reference) + tracking_atoms[reference.type] = reference + +/datum/tutorial/proc/remove_from_tracking_atoms(atom/reference) + tracking_atoms -= reference.type + +/// Broadcast a message to the player's screen +/datum/tutorial/proc/message_to_player(message) + playsound_client(tutorial_mob.client, 'sound/effects/radiostatic.ogg', tutorial_mob.loc, 25, FALSE) + tutorial_mob.play_screen_text(message, /atom/movable/screen/text/screen_text/command_order/tutorial, rgb(103, 214, 146)) + to_chat(tutorial_mob, SPAN_NOTICE(message)) + +/// Updates a player's objective in their status tab +/datum/tutorial/proc/update_objective(message) + SEND_SIGNAL(tutorial_mob, COMSIG_MOB_TUTORIAL_UPDATE_OBJECTIVE, message) + +/// Initialize the tutorial mob. +/datum/tutorial/proc/init_mob() + tutorial_mob.AddComponent(/datum/component/tutorial_status) + give_action(tutorial_mob, /datum/action/tutorial_end, null, null, src) + ADD_TRAIT(tutorial_mob, TRAIT_IN_TUTORIAL, TRAIT_SOURCE_TUTORIAL) + +/// Ends the tutorial after a certain amount of time. +/datum/tutorial/proc/tutorial_end_in(time = 5 SECONDS, completed = TRUE) + tutorial_ending = TRUE + addtimer(CALLBACK(src, PROC_REF(end_tutorial), completed), time) + +/// Initialize any objects that need to be in the tutorial area from the beginning. +/datum/tutorial/proc/init_map() + return + +/// Returns a turf offset by offset_x (left-to-right) and offset_y (up-to-down) +/datum/tutorial/proc/loc_from_corner(offset_x = 0, offset_y = 0) + RETURN_TYPE(/turf) + return locate(bottom_left_corner.x + offset_x, bottom_left_corner.y + offset_y, bottom_left_corner.z) + +/// Handle the player ghosting out +/datum/tutorial/proc/on_ghost(datum/source, mob/dead/observer/ghost) + SIGNAL_HANDLER + + var/mob/new_player/new_player = new + if(!ghost.mind) + ghost.mind_initialize() + + ghost.mind.transfer_to(new_player) + + end_tutorial(FALSE) + +/// A wrapper for signals to call end_tutorial() +/datum/tutorial/proc/signal_end_tutorial(datum/source) + SIGNAL_HANDLER + + end_tutorial(FALSE) + +/// Called whenever the tutorial_mob logs out +/datum/tutorial/proc/on_logout(datum/source) + SIGNAL_HANDLER + + if(tutorial_mob.aghosted) + return + + end_tutorial(FALSE) + +/// Generate a dictionary of button : action for use of referencing what keys to press +/datum/tutorial/proc/generate_binds() + if(!tutorial_mob.client?.prefs) + return + + for(var/bind in tutorial_mob.client.prefs.key_bindings) + var/action = tutorial_mob.client.prefs.key_bindings[bind] + // We presume the first action under a certain binding is the one we want. + if(action[1] in player_bind_dict) + player_bind_dict[action[1]] += bind + else + player_bind_dict[action[1]] = list(bind) + +/// Getter for player_bind_dict. Provide an action name like "North" or "quick_equip" +/datum/tutorial/proc/retrieve_bind(action_name) + if(!action_name) + return + + if(!(action_name in player_bind_dict)) + return "Undefined" + + return player_bind_dict[action_name][1] + +/datum/action/tutorial_end + name = "Stop Tutorial" + action_icon_state = "hologram_exit" + /// Weakref to the tutorial this is related to + var/datum/weakref/tutorial + +/datum/action/tutorial_end/New(Target, override_icon_state, datum/tutorial/selected_tutorial) + . = ..() + tutorial = WEAKREF(selected_tutorial) + +/datum/action/tutorial_end/action_activate() + if(!tutorial) + return + + var/datum/tutorial/selected_tutorial = tutorial.resolve() + if(selected_tutorial.tutorial_ending) + return + + selected_tutorial.end_tutorial() + + +/datum/map_template/tutorial + name = "Tutorial Zone (12x12)" + mappath = "maps/tutorial/tutorial_12x12.dmm" + width = 12 + height = 12 + +/datum/map_template/tutorial/s12x12 + +/datum/map_template/tutorial/s8x9 + name = "Tutorial Zone (8x9)" + mappath = "maps/tutorial/tutorial_8x9.dmm" + width = 8 + height = 9 + +/datum/map_template/tutorial/s8x9/no_baselight + name = "Tutorial Zone (8x9) (No Baselight)" + mappath = "maps/tutorial/tutorial_8x9_nb.dmm" + +/datum/map_template/tutorial/s7x7 + name = "Tutorial Zone (7x7)" + mappath = "maps/tutorial/tutorial_7x7.dmm" + width = 7 + height = 7 diff --git a/code/datums/tutorial/_tutorial_menu.dm b/code/datums/tutorial/_tutorial_menu.dm new file mode 100644 index 000000000000..951b9654ef0e --- /dev/null +++ b/code/datums/tutorial/_tutorial_menu.dm @@ -0,0 +1,84 @@ +/datum/tutorial_menu + /// List of ["name" = name, "tutorials" = ["name" = name, "path" = "path", "id" = tutorial_id]] + var/static/list/categories = list() + + +/datum/tutorial_menu/New() + if(!length(categories)) + var/list/categories_2 = list() + for(var/datum/tutorial/tutorial as anything in subtypesof(/datum/tutorial)) + if(initial(tutorial.parent_path) == tutorial) + continue + + if(!(initial(tutorial.category) in categories_2)) + categories_2[initial(tutorial.category)] = list() + + categories_2[initial(tutorial.category)] += list(list( + "name" = initial(tutorial.name), + "path" = "[tutorial]", + "id" = initial(tutorial.tutorial_id), + "description" = initial(tutorial.desc), + "image" = initial(tutorial.icon_state), + )) + + for(var/category in categories_2) + categories += list(list( + "name" = category, + "tutorials" = categories_2[category], + )) + + +/datum/tutorial_menu/proc/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "TutorialMenu") + ui.open() + +/datum/tutorial_menu/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/tutorial), + ) + +/datum/tutorial_menu/ui_state(mob/user) + if(istype(get_area(user), /area/misc/tutorial)) + return GLOB.never_state + + return GLOB.new_player_state + + +/datum/tutorial_menu/ui_static_data(mob/user) + var/list/data = list() + + data["tutorial_categories"] = categories + if(user.client?.prefs) + data["completed_tutorials"] = user.client.prefs.completed_tutorials + else + data["completed_tutorials"] = list() + + return data + + +/datum/tutorial_menu/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + + switch(action) + if("select_tutorial") + var/datum/tutorial/path + if(!params["tutorial_path"]) + return + + path = text2path(params["tutorial_path"]) + + if(!path || !isnewplayer(usr)) + return + + if(HAS_TRAIT(usr, TRAIT_IN_TUTORIAL) || istype(get_area(usr), /area/misc/tutorial)) + to_chat(usr, SPAN_NOTICE("You are currently in a tutorial, or one is loading. Please be patient.")) + return + + path = new path + if(path.start_tutorial(usr)) + ui.close() + return TRUE diff --git a/code/datums/tutorial/creating_a_tutorial.md b/code/datums/tutorial/creating_a_tutorial.md new file mode 100644 index 000000000000..96a7cb886820 --- /dev/null +++ b/code/datums/tutorial/creating_a_tutorial.md @@ -0,0 +1,96 @@ +# Tutorial Creation + +[ToC] + +## Step 1: Identifying the Goal + +Your first objective when making a tutorial should be to have a clear and concise vision of what you want the tutorial to convey to the user. People absorb information better in smaller chunks, so you should ideally keep a tutorial to one section of information at a time. + +For example, if you are making a tutorial for new CM players, it should be split into multiple parts like: + +- Basics +- Medical +- Weaponry +- Requisitions/Communication + +## Step 2: Coding + +For an example of the current code standards for tutorials, see [this](https://github.com/cmss13-devs/cmss13/pull/4442/files#diff-843b2f84360b9b932dfc960027992f2b5117667962bfa8da14f9a35f0179a926) file. + +The API for tutorials is designed to be very simple, so I'll go over all the base `/datum/tutorial` procs and some vars here: + +### Variables +- `name` + - This is the player-facing name of the tutorial. +- `tutorial_id` + - This is the back-end ID of the tutorial, used for save files. Try not to change a tutorial's ID after it's on the live server. +- `category` + - This is what category the tutorial should be under. Use the `TUTORIAL_CATEGORY_XXXX` macros. +- `tutorial_template` + - This is what type the map template of the tutorial should be. The default space is 12x12; ideally make it so it fits the given scale of the tutorial with some wiggle room for the player to move around. +- `parent_path` + - This is the top-most parent `/datum/tutorial` path, used to exclude abstract parents from the tutorial menu. For example, `/datum/tutorial/marine/basic` would have a `parent_path` of `/datum/tutorial/marine`, since that path is the top-most abstract path. + +### Procs +- `start_tutorial(mob/starting_mob)` + - This proc starts the tutorial, setting up the map template and player. This should be overridden with a parent call before any overridden code. +- `end_tutorial(completed = FALSE)` + - This proc ends the tutorial, sending the player back to the lobby and deleting the tutorial itself. A parent call on any subtypes should be at the end of the overridden segment. If `completed` is `TRUE`, then the tutorial will save as a completed one for the user. +- `add_highlight(atom/target, color = "#d19a02")` + - This proc adds a highlight filter around an atom, by default this color. Successive calls of highlight on the same atom will override the last. +- `remove_highlight(atom/target)` + - This proc removes the tutorial highlight from a target. +- `add_to_tracking_atoms(atom/reference)` + - This proc will add a reference to the tutorial's tracked atom dictionary. For what a tracked atom is, see Step 2.1. +- `remove_from_tracking_atoms(atom/reference)` + - This proc will remove a reference from the tutorial's tracked atom dictionary. For what a tracked atom is, see Step 2.1. +- `message_to_player(message)` + - This proc is the ideal way to communicate to a player. It is visually similar to overwatch messages or weather alerts, but appears and disappears much faster. The messages sent should be consise, but can have a degree of dialogue to them. +- `update_objective(message)` + - This proc is used to update the player's objective in their status panel. This should be only what is required and how to do it without any dialogue or extra text. +- `init_mob()` + - This proc is used to initialize the mob and set them up correctly. +- `init_map()` + - This proc does nothing by default, but can be overriden to spawn any atoms necessary for the tutorial from the very start. +- `tutorial_end_in(time = 5 SECONDS, completed = TRUE)` + - This proc will end the tutorial in the given time, defaulting to 5 seconds. Once the proc is called, the player will be booted back to the menu screen after the time is up. Will mark the tutorial as completed if `completed` is `TRUE` +- `loc_from_corner(offset_x = 0, offset_y = 0)` + - This proc will return a turf offset from the bottom left corner of the tutorial zone. Keep in mind, the bottom left corner is NOT on a wall, it is on the first floor on the bottom left corner. `offset_x` and `offset_y` are used to offset what turf you want to get, and should never be negative. + +## Step 2.1: Tracking Atoms +Naturally, you will need to keep track of certain objects or mobs for signal purposes, so the tracking system exists to fill that purpose. When you add a reference to the tracking atom list with `add_to_tracking_atoms()`, it gets put into a dictionary of `{path : reference}`. Because of this limitation, you should not track more than 1 object of the same type. To get a tracked atom, use of the `TUTORIAL_ATOM_FROM_TRACKING(path, varname)` macro is recommended. `path` should be replaced with the precise typepath of the tracked atom, and `varname` should be replaced with the variable name you wish to use. If an object is going to be deleted, remove it with `remove_from_tracking_atoms()` first. + +## Step 2.2: Scripting Format +Any proc whose main purpose is to advance the tutorial will be hereon referred to as a "script proc", as part of the entire "script". In the vast majority of cases, a script proc should hand off to the next using signals. Here is an example from `basic_marine.dm`: + +```javascript +/datum/tutorial/marine/basic/proc/on_cryopod_exit() + SIGNAL_HANDLER + + UnregisterSignal(tracking_atoms[/obj/structure/machinery/cryopod/tutorial], COMSIG_CRYOPOD_GO_OUT) + message_to_player("Good. You may notice the yellow \"food\" icon on the right side of your screen. Proceed to the outlined Food Vendor and vend the USCM Protein Bar.") + update_objective("Vend a USCM Protein Bar from the outlined ColMarTech Food Vendor.") + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cm_vending/sorted/marine_food/tutorial, food_vendor) + add_highlight(food_vendor) + food_vendor.req_access = list() + RegisterSignal(food_vendor, COMSIG_VENDOR_SUCCESSFUL_VEND, PROC_REF(on_food_vend)) + +``` + +Line-by-line: + - `SIGNAL_HANDLER` is necessary as this proc was called via signal. + - Here we are unregistering the signal we registered in the previous proc to call this one, which in this case was waiting for the player to leave the tracked cryopod. + - Now, we tell the user the next step in the script, which is sent to their screen. + - Here we update the player's status panel with similar info to the above line, but far more condensed. + - Since we need to access the food vendor, we use the `TUTORIAL_ATOM_FROM_TRACKING()` macro to get a ref to it. + - We add a yellow outline to the food vendor to make it more clear what is wanted of the player + - The tutorial food vendors are locked to `ACCESS_TUTORIAL_LOCKED` by default, so here we remove that access requirement + - And finally, we register a signal for the next script proc, waiting for the user to vend something from the food vendor. + + +## Step 2.3: Quirks & Tips +- Generally speaking, you will want to create `/tutorial` subtypes of anything you add in the tutorial, should it need any special functions or similar. +- Restrict access from players as much as possible. As seen in the example above, restricting access to vendors and similar machines is recommended to prevent sequence breaking. Additionally, avoid adding anything that detracts from the tutorial itself. +- Attempt to avoid softlocks when possible. If someone could reasonably do something (e.g. firing every bullet they have at a ranged target and missing, now unable to kill them and progress) that could softlock them, then there should be a fallback of some sort. However, accomodations don't need to be made for people who purposefully cause a softlock; there's a "stop tutorial" button for a reason. +- When calling `message_to_player()` or `update_objective()`, **bold** the names of objects, items, and keybinds. +- Attempt to bind as many scripting signals to the `tutorial_mob` as possible. The nature of SS13 means something as sequence-heavy as this will always be fragile, so keeping the fragility we can affect to a minimum is imperative. diff --git a/code/datums/tutorial/marine/_marine.dm b/code/datums/tutorial/marine/_marine.dm new file mode 100644 index 000000000000..ceb0ba8ab550 --- /dev/null +++ b/code/datums/tutorial/marine/_marine.dm @@ -0,0 +1,21 @@ +/datum/tutorial/marine + category = TUTORIAL_CATEGORY_MARINE + parent_path = /datum/tutorial/marine + icon_state = "marine" + +/datum/tutorial/marine/init_mob() + var/mob/living/carbon/human/new_character = new(bottom_left_corner) + new_character.lastarea = get_area(bottom_left_corner) + + setup_human(new_character, tutorial_mob) + + //SSround_recording.recorder.track_player(new_character) //zonenote: check if necessary + + new_character.marine_snowflake_points = MARINE_TOTAL_SNOWFLAKE_POINTS + new_character.marine_buyable_categories = MARINE_CAN_BUY_ALL + + tutorial_mob = new_character + RegisterSignal(tutorial_mob, COMSIG_LIVING_GHOSTED, PROC_REF(on_ghost)) + RegisterSignal(tutorial_mob, list(COMSIG_PARENT_QDELETING, COMSIG_MOB_DEATH, COMSIG_MOB_END_TUTORIAL), PROC_REF(signal_end_tutorial)) + RegisterSignal(tutorial_mob, COMSIG_MOB_LOGOUT, PROC_REF(on_logout)) + return ..() diff --git a/code/datums/tutorial/marine/basic_marine.dm b/code/datums/tutorial/marine/basic_marine.dm new file mode 100644 index 000000000000..af9d2eaf18dd --- /dev/null +++ b/code/datums/tutorial/marine/basic_marine.dm @@ -0,0 +1,208 @@ +/datum/tutorial/marine/basic + name = "Marine - Basic" + desc = "A tutorial to get you acquainted with the very basics of how to play a groundside marine role." + tutorial_id = "marine_basic_1" + tutorial_template = /datum/map_template/tutorial/s8x9/no_baselight + /// How many items need to be vended from the clothing vendor for the script to continue, if something vends 2 items (for example), increase this number by 2. + var/clothing_items_to_vend = 8 + /// How many items need to be vended from the gun vendor to continue + var/gun_items_to_vend = 2 + +// START OF SCRIPTING + +/datum/tutorial/marine/basic/start_tutorial(mob/starting_mob) + . = ..() + if(!.) + return + + var/obj/item/device/flashlight/flashlight = new(loc_from_corner(2, 3)) + flashlight.anchored = TRUE + flashlight.set_light_power(4) + flashlight.set_light_range(12) + flashlight.icon = null + flashlight.set_light_on(TRUE) + add_to_tracking_atoms(flashlight) + + init_mob() + message_to_player("This is the tutorial for marine rifleman. Leave the cryopod by pressing [retrieve_bind("North")] or [retrieve_bind("East")] to continue.") + update_objective("Exit the cryopod by pressing [retrieve_bind("North")] or [retrieve_bind("East")].") + RegisterSignal(tracking_atoms[/obj/structure/machinery/cryopod/tutorial], COMSIG_CRYOPOD_GO_OUT, PROC_REF(on_cryopod_exit)) + +/datum/tutorial/marine/basic/proc/on_cryopod_exit() + SIGNAL_HANDLER + + UnregisterSignal(tracking_atoms[/obj/structure/machinery/cryopod/tutorial], COMSIG_CRYOPOD_GO_OUT) + message_to_player("Good. You may notice the yellow \"food\" icon on the right side of your screen. Proceed to the outlined Food Vendor and vend the USCM Protein Bar.") + update_objective("Vend a USCM Protein Bar from the outlined ColMarTech Food Vendor.") + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cm_vending/sorted/marine_food/tutorial, food_vendor) + add_highlight(food_vendor) + food_vendor.req_access = list() + RegisterSignal(food_vendor, COMSIG_VENDOR_SUCCESSFUL_VEND, PROC_REF(on_food_vend)) + +/datum/tutorial/marine/basic/proc/on_food_vend(datum/source, obj/structure/machinery/cm_vending/vendor, list/itemspec, mob/living/carbon/human/user) + SIGNAL_HANDLER + + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cm_vending/sorted/marine_food/tutorial, food_vendor) + UnregisterSignal(food_vendor, COMSIG_VENDOR_SUCCESSFUL_VEND) + remove_highlight(food_vendor) + food_vendor.req_access = list(ACCESS_TUTORIAL_LOCKED) + message_to_player("Now click on your character with the USCM Protein Bar in-hand until it is fully eaten. If you accidentally switched hands, switch back with [retrieve_bind("swap_hands")].") + update_objective("Eat the USCM Protein Bar by clicking on yourself while holding it, until it is gone.") + RegisterSignal(tutorial_mob, COMSIG_MOB_EATEN_SNACK, PROC_REF(on_foodbar_eaten)) + +/datum/tutorial/marine/basic/proc/on_foodbar_eaten(datum/source, obj/item/reagent_container/food/snacks/eaten_food) + SIGNAL_HANDLER + + if(!istype(eaten_food, /obj/item/reagent_container/food/snacks/protein_pack) || eaten_food.reagents.total_volume) + return + + UnregisterSignal(source, COMSIG_MOB_EATEN_SNACK) + message_to_player("Good. Now move to the outlined vendor and vend everything inside.") + update_objective("Vend everything inside the ColMarTech Automated Closet.") + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cm_vending/clothing/tutorial, clothing_vendor) + add_highlight(clothing_vendor) + clothing_vendor.req_access = list() + RegisterSignal(clothing_vendor, COMSIG_VENDOR_SUCCESSFUL_VEND, PROC_REF(on_clothing_vend)) + +/datum/tutorial/marine/basic/proc/on_clothing_vend(datum/source) + SIGNAL_HANDLER + + clothing_items_to_vend-- + if(clothing_items_to_vend <= 0) + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cm_vending/clothing/tutorial, clothing_vendor) + UnregisterSignal(clothing_vendor, COMSIG_VENDOR_SUCCESSFUL_VEND) + clothing_vendor.req_access = list(ACCESS_TUTORIAL_LOCKED) + remove_highlight(clothing_vendor) + message_to_player("Now, the room will darken. Take a flare out of your flare pouch by clicking on it with an empty hand, and then light it by using it in-hand with [retrieve_bind("activate_inhand")].") + update_objective("Click on your flare pouch to remove a flare before using it in-hand.") + var/obj/item/storage/pouch/flare/flare_pouch = locate(/obj/item/storage/pouch/flare) in tutorial_mob.contents + if(flare_pouch) + add_highlight(flare_pouch) + RegisterSignal(tutorial_mob, COMSIG_MOB_ITEM_ATTACK_SELF, PROC_REF(on_flare_light)) + addtimer(CALLBACK(src, PROC_REF(dim_room)), 2.5 SECONDS) + +/datum/tutorial/marine/basic/proc/on_flare_light(datum/source, obj/item/used) + SIGNAL_HANDLER + + if(!istype(used, /obj/item/device/flashlight/flare)) + return + + UnregisterSignal(tutorial_mob, COMSIG_MOB_ITEM_ATTACK_SELF) + var/obj/item/storage/pouch/flare/flare_pouch = locate(/obj/item/storage/pouch/flare) in tutorial_mob.contents + if(flare_pouch) + remove_highlight(flare_pouch) + + message_to_player("Now throw the flare by clicking on a nearby tile, or dropping it with [retrieve_bind("drop_item")].") + update_objective("Throw the flare by clicking on a nearby tile, or dropping it with [retrieve_bind("drop_item")].") + RegisterSignal(tutorial_mob, COMSIG_MOB_ITEM_DROPPED, PROC_REF(on_flare_throw)) + +/datum/tutorial/marine/basic/proc/on_flare_throw(datum/source, obj/item/thrown) + SIGNAL_HANDLER + + if(!istype(thrown, /obj/item/device/flashlight/flare)) + return + + UnregisterSignal(tutorial_mob, COMSIG_MOB_ITEM_DROPPED) + message_to_player("Good. Now, the room will brighten again. Proceed to the highlighted vendor and vend a M41A Pulse Rifle MK2, along with a magazine.") + update_objective("Vend everything from the ColMarTech Automated Weapons Rack.") + addtimer(CALLBACK(src, PROC_REF(brighten_room)), 1.5 SECONDS) + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep/tutorial, gun_vendor) + gun_vendor.req_access = list() + add_highlight(gun_vendor) + RegisterSignal(gun_vendor, COMSIG_VENDOR_SUCCESSFUL_VEND, PROC_REF(on_gun_vend)) + +/datum/tutorial/marine/basic/proc/on_gun_vend(datum/source) + SIGNAL_HANDLER + + gun_items_to_vend-- + if(gun_items_to_vend <= 0) + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep/tutorial, gun_vendor) + gun_vendor.req_access = list(ACCESS_TUTORIAL_LOCKED) + remove_highlight(gun_vendor) + UnregisterSignal(gun_vendor, COMSIG_VENDOR_SUCCESSFUL_VEND) + message_to_player("Now insert the magazine into the M41A Pulse Rifle by having the magazine in your active hand and hitting the Pulse Rifle with it. If it is in the off-hand, switch with [retrieve_bind("swap_hands")].") + update_objective("Insert the M41A magazine by hitting the M41A Pulse Rifle with it.") + RegisterSignal(tutorial_mob, COMSIG_MOB_RELOADED_GUN, PROC_REF(on_magazine_insert)) + +/datum/tutorial/marine/basic/proc/on_magazine_insert(datum/source, atom/attacked, obj/item/attacked_with) + SIGNAL_HANDLER + + UnregisterSignal(tutorial_mob, COMSIG_MOB_RELOADED_GUN) + message_to_player("Good. Now wield your gun by using it in-hand with [retrieve_bind("activate_inhand")].") + update_objective("Wield your gun with two hands by pressing [retrieve_bind("activate_inhand")] with the gun in your main hand.") + RegisterSignal(tutorial_mob, COMSIG_MOB_ITEM_ATTACK_SELF, PROC_REF(on_gun_wield)) + +/datum/tutorial/marine/basic/proc/on_gun_wield(datum/source, obj/item/used) + SIGNAL_HANDLER + + if(!istype(used, /obj/item/weapon/gun/rifle/m41a)) + return + + UnregisterSignal(tutorial_mob, COMSIG_MOB_ITEM_ATTACK_SELF) + message_to_player("Now, shoot at the highlighted Xenomorph until it dies.") + update_objective("Shoot at the Xenomorph until it dies.") + var/mob/living/carbon/xenomorph/drone/tutorial/xeno_dummy = new(loc_from_corner(4, 5)) + add_to_tracking_atoms(xeno_dummy) + add_highlight(xeno_dummy, COLOR_VIVID_RED) + RegisterSignal(xeno_dummy, COMSIG_MOB_DEATH, PROC_REF(on_xeno_death)) + RegisterSignal(tutorial_mob, COMSIG_MOB_GUN_EMPTY, PROC_REF(on_magazine_empty)) // I'd like to prevent unwilling softlocks as much as I can + +/// Non-contiguous part of the script, called if the user manages to run out of ammo in the gun without the xeno dying +/datum/tutorial/marine/basic/proc/on_magazine_empty(obj/item/weapon/gun/empty_gun) + SIGNAL_HANDLER + + UnregisterSignal(tutorial_mob, COMSIG_MOB_GUN_EMPTY) + message_to_player("Your gun's out of ammo. Go grab some more from the Weaponry Vendor and kill the Xenomorph.") + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep/tutorial, gun_vendor) + gun_vendor.req_access = list() + gun_vendor.load_ammo() // 99 magazines, to make sure that the xeno dies + +/datum/tutorial/marine/basic/proc/on_xeno_death(datum/source) + SIGNAL_HANDLER + + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/xenomorph/drone/tutorial, xeno_dummy) + UnregisterSignal(xeno_dummy, COMSIG_MOB_DEATH) + UnregisterSignal(tutorial_mob, COMSIG_MOB_GUN_EMPTY) + remove_highlight(xeno_dummy) + addtimer(CALLBACK(src, PROC_REF(disappear_xeno)), 2.5 SECONDS) + message_to_player("Very good. This is the end of the tutorial, proceed to the next one to learn the basics of Medical. You will be sent back to the lobby screen momentarily.") + update_objective("") + tutorial_end_in(7.5 SECONDS, TRUE) + + +// END OF SCRIPTING +// START OF SCRIPT HELPERS + +/datum/tutorial/marine/basic/proc/dim_room() + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/device/flashlight, flashlight) + flashlight.set_light_on(FALSE) + +/datum/tutorial/marine/basic/proc/brighten_room() + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/device/flashlight, flashlight) + flashlight.set_light_on(TRUE) + +/datum/tutorial/marine/basic/proc/disappear_xeno() + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/xenomorph/drone/tutorial, xeno_dummy) + animate(xeno_dummy, time = 5 SECONDS, alpha = 0) + remove_from_tracking_atoms(xeno_dummy) + QDEL_IN(xeno_dummy, 5.5 SECONDS) + +// END OF SCRIPT HELPERS + +/datum/tutorial/marine/basic/init_mob() + . = ..() + arm_equipment(tutorial_mob, /datum/equipment_preset/tutorial) + + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cryopod/tutorial, tutorial_pod) + tutorial_pod.go_in_cryopod(tutorial_mob, TRUE, FALSE) + + +/datum/tutorial/marine/basic/init_map() + var/obj/structure/machinery/cryopod/tutorial/tutorial_pod = new(bottom_left_corner) + add_to_tracking_atoms(tutorial_pod) + var/obj/structure/machinery/cm_vending/sorted/marine_food/tutorial/food_vendor = new(loc_from_corner(0, 2)) + add_to_tracking_atoms(food_vendor) + var/obj/structure/machinery/cm_vending/clothing/tutorial/clothing_vendor = new(loc_from_corner(0, 4)) + add_to_tracking_atoms(clothing_vendor) + var/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep/tutorial/gun_vendor = new(loc_from_corner(0, 5)) + add_to_tracking_atoms(gun_vendor) diff --git a/code/datums/tutorial/marine/medical_basic.dm b/code/datums/tutorial/marine/medical_basic.dm new file mode 100644 index 000000000000..3a42a6d2ecc2 --- /dev/null +++ b/code/datums/tutorial/marine/medical_basic.dm @@ -0,0 +1,174 @@ +/datum/tutorial/marine/medical_basic + name = "Marine - Medical (Basic)" + desc = "Learn how to treat common injuries you may face as a marine." + tutorial_id = "marine_medical_1" + tutorial_template = /datum/map_template/tutorial/s7x7 + +// START OF SCRIPTING + +/datum/tutorial/marine/medical_basic/start_tutorial(mob/starting_mob) + . = ..() + if(!.) + return + + init_mob() + message_to_player("This is the tutorial for the basics of medical that you will need to know for playing a marine role.") + addtimer(CALLBACK(src, PROC_REF(brute_tutorial)), 4 SECONDS) + +/datum/tutorial/marine/medical_basic/proc/brute_tutorial() + message_to_player("The first kind of damage is Brute, the most common kind. It represents physical trauma from things like punches, weapons, or guns.") + var/mob/living/living_mob = tutorial_mob + living_mob.adjustBruteLoss(10) + addtimer(CALLBACK(src, PROC_REF(brute_tutorial_2)), 4 SECONDS) + +/datum/tutorial/marine/medical_basic/proc/brute_tutorial_2() + message_to_player("You can observe if you have Brute or Burn damage by clicking on yourself with an empty hand on help intent.") + update_objective("Click on yourself with an empty hand.") + RegisterSignal(tutorial_mob, COMSIG_LIVING_ATTACKHAND_HUMAN, PROC_REF(on_health_examine)) + +/datum/tutorial/marine/medical_basic/proc/on_health_examine(datum/source, mob/living/carbon/human/attacked_mob) + SIGNAL_HANDLER + + if(attacked_mob != tutorial_mob) + return + + UnregisterSignal(tutorial_mob, COMSIG_LIVING_ATTACKHAND_HUMAN) + message_to_player("Good. Now, you have taken some brute damage. Bicaridine is used to fix brute over time. Pick up the bicaridine EZ autoinjector and use it in-hand.") + update_objective("Inject yourself with the bicaridine injector.") + var/obj/item/reagent_container/hypospray/autoinjector/bicaridine/skillless/one_use/brute_injector = new(loc_from_corner(0, 4)) + add_to_tracking_atoms(brute_injector) + add_highlight(brute_injector) + RegisterSignal(tutorial_mob, COMSIG_LIVING_HYPOSPRAY_INJECTED, PROC_REF(on_brute_inject)) + +/datum/tutorial/marine/medical_basic/proc/on_brute_inject(datum/source, obj/item/reagent_container/hypospray/injector) + SIGNAL_HANDLER + + if(!istype(injector, /obj/item/reagent_container/hypospray/autoinjector/bicaridine/skillless/one_use)) + return + + UnregisterSignal(tutorial_mob, COMSIG_LIVING_HYPOSPRAY_INJECTED) + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/reagent_container/hypospray/autoinjector/bicaridine/skillless/one_use, brute_injector) + remove_highlight(brute_injector) + message_to_player("All medicines take time to work after injection. Next is Burn damage. It is obtained from things like acid or being set on fire.") + update_objective("") + var/mob/living/living_mob = tutorial_mob + living_mob.adjustFireLoss(10) + addtimer(CALLBACK(src, PROC_REF(burn_tutorial)), 4 SECONDS) + +/datum/tutorial/marine/medical_basic/proc/burn_tutorial() + message_to_player("Kelotane is used to fix burn over time. Inject yourself with the kelotane EZ autoinjector.") + update_objective("Inject yourself with the kelotane injector.") + var/obj/item/reagent_container/hypospray/autoinjector/kelotane/skillless/one_use/burn_injector = new(loc_from_corner(0, 4)) + add_to_tracking_atoms(burn_injector) + add_highlight(burn_injector) + RegisterSignal(tutorial_mob, COMSIG_LIVING_HYPOSPRAY_INJECTED, PROC_REF(on_burn_inject)) + + +/datum/tutorial/marine/medical_basic/proc/on_burn_inject(datum/source, obj/item/reagent_container/hypospray/injector) + SIGNAL_HANDLER + + if(!istype(injector, /obj/item/reagent_container/hypospray/autoinjector/kelotane/skillless/one_use)) + return + + UnregisterSignal(tutorial_mob, COMSIG_LIVING_HYPOSPRAY_INJECTED) + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/reagent_container/hypospray/autoinjector/kelotane/skillless/one_use, burn_injector) + remove_highlight(burn_injector) + message_to_player("Good. Now, when you normally take damage, you will also feel pain. Pain slows you down and can knock you out if left unchecked.") + update_objective("") + var/mob/living/living_mob = tutorial_mob + living_mob.pain.apply_pain(PAIN_CHESTBURST_STRONG) + addtimer(CALLBACK(src, PROC_REF(pain_tutorial)), 4 SECONDS) + +/datum/tutorial/marine/medical_basic/proc/pain_tutorial() + message_to_player("Tramadol is used to reduce your pain. Inject yourself with the tramadol EZ autoinjector.") + update_objective("Inject yourself with the tramadol injector.") + var/obj/item/reagent_container/hypospray/autoinjector/tramadol/skillless/one_use/pain_injector = new(loc_from_corner(0, 4)) + add_to_tracking_atoms(pain_injector) + add_highlight(pain_injector) + RegisterSignal(tutorial_mob, COMSIG_LIVING_HYPOSPRAY_INJECTED, PROC_REF(on_pain_inject)) + +/datum/tutorial/marine/medical_basic/proc/on_pain_inject(datum/source, obj/item/reagent_container/hypospray/injector) + SIGNAL_HANDLER + + if(!istype(injector, /obj/item/reagent_container/hypospray/autoinjector/tramadol/skillless/one_use)) + return + + UnregisterSignal(tutorial_mob, COMSIG_LIVING_HYPOSPRAY_INJECTED) + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/reagent_container/hypospray/autoinjector/tramadol/skillless/one_use, pain_injector) + remove_highlight(pain_injector) + message_to_player("Good. Keep in mind that you can overdose on chemicals, so don't inject yourself with the same chemical too much too often. In the field, injectors have 3 uses.") + update_objective("Don't overdose! Generally, 3 injections of a chemical will overdose you.") + var/mob/living/living_mob = tutorial_mob + living_mob.pain.apply_pain(-PAIN_CHESTBURST_STRONG) // just to make sure + addtimer(CALLBACK(src, PROC_REF(bleed_tutorial)), 4 SECONDS) + +/datum/tutorial/marine/medical_basic/proc/bleed_tutorial() + message_to_player("You can sometimes start bleeding from things like bullets or slashes. Losing blood will accumulate oxygen damage, eventually causing death.") + update_objective("") + var/mob/living/carbon/human/human_mob = tutorial_mob + var/obj/limb/chest/mob_chest = locate(/obj/limb/chest) in human_mob.limbs + mob_chest.add_bleeding(damage_amount = 15) + addtimer(CALLBACK(src, PROC_REF(bleed_tutorial_2)), 4 SECONDS) + +/datum/tutorial/marine/medical_basic/proc/bleed_tutorial_2() + message_to_player("Bleeding wounds can clot themselves over time, or you can fix it quickly with gauze. Pick up the gauze and click on yourself while targeting your chest.") + update_objective("Gauze your chest, or let it clot on its own.") + var/obj/item/stack/medical/bruise_pack/two/bandage = new(loc_from_corner(0, 4)) + add_to_tracking_atoms(bandage) + add_highlight(bandage) + var/mob/living/carbon/human/human_mob = tutorial_mob + var/obj/limb/chest/mob_chest = locate(/obj/limb/chest) in human_mob.limbs + RegisterSignal(mob_chest, COMSIG_LIMB_STOP_BLEEDING, PROC_REF(on_chest_bleed_stop)) + +/datum/tutorial/marine/medical_basic/proc/on_chest_bleed_stop(datum/source, external, internal) + SIGNAL_HANDLER + + // If you exit on this step, your limbs get deleted, which stops the bleeding, which progresses the tutorial despite it ending + if(!tutorial_mob || QDELETED(src)) + return + + var/mob/living/carbon/human/human_mob = tutorial_mob + var/obj/limb/chest/mob_chest = locate(/obj/limb/chest) in human_mob.limbs + UnregisterSignal(mob_chest, COMSIG_LIMB_STOP_BLEEDING) + + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/stack/medical/bruise_pack/two, bandage) + remove_from_tracking_atoms(bandage) + remove_highlight(bandage) + qdel(bandage) + + message_to_player("Good. Sometimes, a bullet or bone shard can result in you getting shrapnel, dealing damage over time. Pick up the knife and use it in-hand to remove the shrapnel.") + update_objective("Remove your shrapnel by using the knife in-hand.") + var/mob/living/living_mob = tutorial_mob + living_mob.pain.feels_pain = FALSE + + var/obj/item/attachable/bayonet/knife = new(loc_from_corner(0, 4)) + add_to_tracking_atoms(knife) + add_highlight(knife) + + var/obj/item/shard/shrapnel/tutorial/shrapnel = new + shrapnel.on_embed(tutorial_mob, mob_chest, TRUE) + + RegisterSignal(tutorial_mob, COMSIG_HUMAN_SHRAPNEL_REMOVED, PROC_REF(on_shrapnel_removed)) + +/datum/tutorial/marine/medical_basic/proc/on_shrapnel_removed() + SIGNAL_HANDLER + + UnregisterSignal(tutorial_mob, COMSIG_HUMAN_SHRAPNEL_REMOVED) + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/attachable/bayonet, knife) + remove_highlight(knife) + message_to_player("Good. This is the end of the basic marine medical tutorial. The tutorial will end shortly.") + update_objective("Tutorial completed.") + tutorial_end_in(5 SECONDS) + +// END OF SCRIPTING +// START OF SCRIPT HELPERS + +// END OF SCRIPT HELPERS + +/datum/tutorial/marine/medical_basic/init_mob() + . = ..() + arm_equipment(tutorial_mob, /datum/equipment_preset/tutorial/fed) + + +/datum/tutorial/marine/medical_basic/init_map() + new /obj/structure/surface/table/almayer(loc_from_corner(0, 4)) diff --git a/code/datums/tutorial/ss13/_ss13.dm b/code/datums/tutorial/ss13/_ss13.dm new file mode 100644 index 000000000000..53cf5c918ee9 --- /dev/null +++ b/code/datums/tutorial/ss13/_ss13.dm @@ -0,0 +1,41 @@ +/datum/tutorial/ss13 + category = TUTORIAL_CATEGORY_SS13 + parent_path = /datum/tutorial/ss13 + icon_state = "ss13" + +/datum/tutorial/ss13/init_mob() + tutorial_mob.close_spawn_windows() + + var/mob/living/carbon/human/new_character = new(bottom_left_corner) + new_character.lastarea = get_area(bottom_left_corner) + + tutorial_mob.client.prefs.copy_all_to(new_character) + + if(tutorial_mob.client.prefs.be_random_body) + var/datum/preferences/rand_prefs = new() + rand_prefs.randomize_appearance(new_character) + + new_character.job = tutorial_mob.job + new_character.name = tutorial_mob.real_name + new_character.voice = tutorial_mob.real_name + + new_character.sec_hud_set_ID() + new_character.hud_set_squad() + + SSround_recording.recorder.track_player(new_character) + + if(tutorial_mob.mind) + tutorial_mob.mind_initialize() + tutorial_mob.mind.transfer_to(new_character, TRUE) + tutorial_mob.mind.setup_human_stats() + + INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, regenerate_icons)) + INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, update_body), 1, 0) + INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, update_hair)) + + tutorial_mob = new_character + RegisterSignal(tutorial_mob, COMSIG_LIVING_GHOSTED, PROC_REF(on_ghost)) + RegisterSignal(tutorial_mob, list(COMSIG_PARENT_QDELETING, COMSIG_MOB_DEATH, COMSIG_MOB_END_TUTORIAL), PROC_REF(signal_end_tutorial)) + RegisterSignal(tutorial_mob, COMSIG_MOB_LOGOUT, PROC_REF(on_logout)) + arm_equipment(tutorial_mob, /datum/equipment_preset/tutorial/fed) + return ..() diff --git a/code/datums/tutorial/ss13/basic_ss13.dm b/code/datums/tutorial/ss13/basic_ss13.dm new file mode 100644 index 000000000000..65bb0cac94f4 --- /dev/null +++ b/code/datums/tutorial/ss13/basic_ss13.dm @@ -0,0 +1,84 @@ +/datum/tutorial/ss13/basic + name = "Space Station 13 - Basic" + desc = "Learn the very basics of Space Station 13. Recommended if you haven't played before." + tutorial_id = "ss13_basic_1" + tutorial_template = /datum/map_template/tutorial/s7x7 + +// START OF SCRIPTING + +/datum/tutorial/ss13/basic/start_tutorial(mob/starting_mob) + . = ..() + if(!.) + return + + init_mob() + message_to_player("This is the tutorial for the basics of Space Station 13. Any current instructions can be found in the top-right corner, in the status panel.") + update_objective("Here's where it'll be!") + + addtimer(CALLBACK(src, PROC_REF(require_move)), 4 SECONDS) // check if this is a good amount of time + +/datum/tutorial/ss13/basic/proc/require_move() + message_to_player("Now, move in any direction using [retrieve_bind("North")], [retrieve_bind("West")], [retrieve_bind("South")], or [retrieve_bind("East")].") + update_objective("Move in any direction using the [retrieve_bind("North")][retrieve_bind("West")][retrieve_bind("South")][retrieve_bind("East")] keys.") + + RegisterSignal(tutorial_mob, COMSIG_MOB_MOVE_OR_LOOK, PROC_REF(on_move)) + +/datum/tutorial/ss13/basic/proc/on_move(datum/source, actually_moving, direction, specific_direction) + SIGNAL_HANDLER + + if(!actually_moving) // The mob just looked in a different dir instead of moving + return + + UnregisterSignal(tutorial_mob, COMSIG_MOB_MOVE_OR_LOOK) + + message_to_player("Good. Now, switch hands with [retrieve_bind("swap_hands")].") + update_objective("Switch hands with [retrieve_bind("swap_hands")].") + + RegisterSignal(tutorial_mob, COMSIG_MOB_SWAPPED_HAND, PROC_REF(on_hand_swap)) + +/datum/tutorial/ss13/basic/proc/on_hand_swap(datum/source) + SIGNAL_HANDLER + + UnregisterSignal(tutorial_mob, COMSIG_MOB_SWAPPED_HAND) + + message_to_player("Good. Now, pick up the satchel that just spawned and equip it with [retrieve_bind("quick_equip")].") + update_objective("Pick up the satchel and equip it with [retrieve_bind("quick_equip")].") + + var/obj/item/storage/backpack/marine/satchel/satchel = new(loc_from_corner(2, 2)) + add_to_tracking_atoms(satchel) + add_highlight(satchel) + + RegisterSignal(tutorial_mob, COMSIG_HUMAN_EQUIPPED_ITEM, PROC_REF(on_satchel_equip)) + +/datum/tutorial/ss13/basic/proc/on_satchel_equip(datum/source, obj/item/equipped, slot) + SIGNAL_HANDLER + + if(!istype(equipped, /obj/item/storage/backpack/marine/satchel) || (slot != WEAR_BACK)) + return + + UnregisterSignal(tutorial_mob, COMSIG_HUMAN_EQUIPPED_ITEM) + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/storage/backpack/marine/satchel, satchel) + remove_highlight(satchel) + message_to_player("Now, say anything by pressing [retrieve_bind("Say")].") + update_objective("Speak using [retrieve_bind("Say")].") + + RegisterSignal(tutorial_mob, COMSIG_LIVING_SPEAK, PROC_REF(on_speak)) + +/datum/tutorial/ss13/basic/proc/on_speak(datum/source) + SIGNAL_HANDLER + + UnregisterSignal(tutorial_mob, COMSIG_LIVING_SPEAK) + message_to_player("Excellent. The next tutorial will cover intents. The tutorial will end shortly.") + update_objective("") + tutorial_end_in(5 SECONDS, TRUE) + +// END OF SCRIPTING +// START OF SCRIPT HELPERS + + + +// END OF SCRIPT HELPERS + +/datum/tutorial/ss13/basic/init_mob() + . = ..() + tutorial_mob.forceMove(loc_from_corner(2, 1)) diff --git a/code/datums/tutorial/ss13/intents.dm b/code/datums/tutorial/ss13/intents.dm new file mode 100644 index 000000000000..d67b2ac1b4a1 --- /dev/null +++ b/code/datums/tutorial/ss13/intents.dm @@ -0,0 +1,113 @@ +/datum/tutorial/ss13/intents + name = "Space Station 13 - Intents" + desc = "Learn how the intent interaction system works." + icon_state = "intents" + tutorial_id = "ss13_intents_1" + tutorial_template = /datum/map_template/tutorial/s7x7 + +// START OF SCRIPTING + +/datum/tutorial/ss13/intents/start_tutorial(mob/starting_mob) + . = ..() + if(!.) + return + + init_mob() + message_to_player("This is the tutorial for the intents system of Space Station 13. The highlighted UI element in the bottom-right corner is your current intent.") + var/datum/hud/human/human_hud = tutorial_mob.hud_used + add_highlight(human_hud.action_intent) + + addtimer(CALLBACK(src, PROC_REF(require_help)), 4.5 SECONDS) + +/datum/tutorial/ss13/intents/proc/require_help() + tutorial_mob.a_intent_change(INTENT_DISARM) + message_to_player("Your intent has been changed off of help. Change back to it by pressing [retrieve_bind("select_help_intent")].") + update_objective("Change to help intent by pressing [retrieve_bind("select_help_intent")].") + + RegisterSignal(tutorial_mob, COMSIG_MOB_INTENT_CHANGE, PROC_REF(on_help_intent)) + +/datum/tutorial/ss13/intents/proc/on_help_intent(datum/source, new_intent) + SIGNAL_HANDLER + + if(new_intent != INTENT_HELP) + return + + UnregisterSignal(tutorial_mob, COMSIG_MOB_INTENT_CHANGE) + + var/mob/living/carbon/human/dummy/tutorial/tutorial_dummy = new(loc_from_corner(2, 3)) + add_to_tracking_atoms(tutorial_dummy) + + message_to_player("The first of the intents is help intent. It is used to harmlessly touch others, put out fire, give CPR, and similar. Click on the Test Dummy to give them a pat on the back.") + update_objective("Click on the dummy on help intent.") + + RegisterSignal(tutorial_mob, COMSIG_LIVING_ATTACKHAND_HUMAN, PROC_REF(on_help_attack)) + +/datum/tutorial/ss13/intents/proc/on_help_attack(datum/source, mob/living/carbon/human/attacked_mob) + SIGNAL_HANDLER + + if((attacked_mob == src) || (tutorial_mob.a_intent != INTENT_HELP)) + return + + UnregisterSignal(tutorial_mob, COMSIG_LIVING_ATTACKHAND_HUMAN) + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human/dummy/tutorial, tutorial_dummy) + tutorial_dummy.status_flags = DEFAULT_MOB_STATUS_FLAGS + REMOVE_TRAIT(tutorial_dummy, TRAIT_IMMOBILIZED, TRAIT_SOURCE_TUTORIAL) + tutorial_dummy.anchored = FALSE + + message_to_player("The second intent is disarm, selectable with [retrieve_bind("select_disarm_intent")]. Disarm is used to shove people, which can make them drop items or fall to the ground. Shove the Test Dummy until it falls over.") + update_objective("Switch to disarm intent by pressing [retrieve_bind("select_disarm_intent")] and shove the dummy to the ground.") + + RegisterSignal(tutorial_dummy, COMSIG_LIVING_APPLY_EFFECT, PROC_REF(on_shove_down)) + +/datum/tutorial/ss13/intents/proc/on_shove_down(datum/source, datum/status_effect/new_effect) + SIGNAL_HANDLER + + if(!istype(new_effect, /datum/status_effect/incapacitating/knockdown)) + return + + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human/dummy/tutorial, tutorial_dummy) + UnregisterSignal(tutorial_dummy, COMSIG_LIVING_APPLY_EFFECT) + tutorial_dummy.rejuvenate() + + message_to_player("The third intent is grab. Grab is used to grab people in either a passive, aggressive, or chokehold grab. Grab successively to \"upgrade\" your grab. Aggressively grab the Test Dummy.") + update_objective("Aggressively grab the dummy by grabbing them twice.") + + + RegisterSignal(tutorial_dummy, COMSIG_MOB_AGGRESSIVELY_GRABBED, PROC_REF(on_aggrograb)) + +/datum/tutorial/ss13/intents/proc/on_aggrograb(datum/source, mob/living/carbon/human/choker) + SIGNAL_HANDLER + + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human/dummy/tutorial, tutorial_dummy) + UnregisterSignal(tutorial_dummy, COMSIG_MOB_AGGRESSIVELY_GRABBED) + + message_to_player("The final intent is harm. Harm is used to injure people with your fists or a melee weapon. Punch the Test Dummy with an empty hand.") + update_objective("Attack the dummy with an empty hand.") + + RegisterSignal(tutorial_mob, COMSIG_LIVING_ATTACKHAND_HUMAN, PROC_REF(on_harm_attack)) + +/datum/tutorial/ss13/intents/proc/on_harm_attack(datum/source, mob/living/carbon/human/attacked_mob) + SIGNAL_HANDLER + + if((attacked_mob == src) || (tutorial_mob.a_intent != INTENT_HARM)) + return + + UnregisterSignal(tutorial_mob, COMSIG_LIVING_ATTACKHAND_HUMAN) + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human/dummy/tutorial, tutorial_dummy) + tutorial_dummy.status_flags = GODMODE + + message_to_player("Excellent. Those are the basics of the intent system. The tutorial will end shortly.") + update_objective("") + + tutorial_end_in(5 SECONDS, TRUE) + +// END OF SCRIPTING +// START OF SCRIPT HELPERS + + + +// END OF SCRIPT HELPERS + +/datum/tutorial/ss13/intents/init_mob() + . = ..() + tutorial_mob.forceMove(loc_from_corner(2, 0)) diff --git a/code/datums/tutorial/tutorial_example.dm b/code/datums/tutorial/tutorial_example.dm new file mode 100644 index 000000000000..9042346f8d39 --- /dev/null +++ b/code/datums/tutorial/tutorial_example.dm @@ -0,0 +1,74 @@ +/datum/tutorial/marine/example + name = "Example Tutorial" + tutorial_id = "example" // This won't show up in the list, so this'll be irrelevant anyway. + category = TUTORIAL_CATEGORY_BASE + parent_path = /datum/tutorial/marine/example + +// START OF SCRIPTING + +/datum/tutorial/marine/example/start_tutorial(mob/starting_mob) + // Here, we're calling parent and checking its return value. If it has a falsey one (as done by !.), then something went wrong and we should abort + // There isn't really a reason that you _shouldn't_ have this + . = ..() + if(!.) + return + + // Init_mob() isn't called by default, so we call it here + init_mob() + // As is standard, we give a message to the player and update their status panel with what we want done. + message_to_player("This is an example tutorial. Perform any emote to continue.") + update_objective("Do any emote.") + // This makes the player (tutorial_mob) listen for the COMSIG_MOB_EMOTE event, which will then call on_emote() when it hears it. + RegisterSignal(tutorial_mob, COMSIG_MOB_EMOTE, PROC_REF(on_emote)) + +/datum/tutorial/marine/example/proc/on_emote(datum/source) + // With any proc called via signal (see the RegisterSignal line above for details), we add SIGNAL_HANDLER to it. + SIGNAL_HANDLER + + // Now that we've gotten the signal and started the script, we want to immediately stop listening for it. + UnregisterSignal(tutorial_mob, COMSIG_MOB_EMOTE) + message_to_player("Good. Now, pick up that can of Weyland-Yutani Aspen Beer.") + update_objective("Pick up that can.") + // This macro takes a specific type path (the same used in init_map()) and a variable name to retrieve an object from the tracked object list + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/reagent_container/food/drinks/cans/aspen, beer_can) + // Now we're adding a yellow highlight around the can to make sure people know what we're talking about + add_highlight(beer_can) + // Now, we always prefer to register signals on the tutorial_mob (as opposed to the beer_can) whenever possible + RegisterSignal(tutorial_mob, COMSIG_MOB_PICKUP_ITEM, PROC_REF(on_can_pickup)) + +/// We get these arguments from the signal's definition. If you have VSC, ctrl+click on COMSIG_MOB_PICKUP_ITEM above. When dealing with a signal proc, `datum/source` is always the first argument, then any added ones +/datum/tutorial/marine/example/proc/on_can_pickup(datum/source, obj/item/picked_up) + SIGNAL_HANDLER + + // Since we're just listening for the mob picking anything up, we want to confirm that the picked up item is the can before continuing. If it's not, then we return and keep listening. + if(!istype(picked_up, /obj/item/reagent_container/food/drinks/cans/aspen)) + // If we hit this return here, then the picked up item wasn't the can, so we abort and keep listening. + return + + // Since we passed the above if statement, stop listening for item pickups. + UnregisterSignal(tutorial_mob, COMSIG_MOB_PICKUP_ITEM) + // Let's get the tracked beer can again. + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/reagent_container/food/drinks/cans/aspen, beer_can) + // And remove the highlight now that it's picked up + remove_highlight(beer_can) + message_to_player("Very good. This is the end of the example tutorial. You will be sent back to the lobby screen momentarily.") + // 7.5 seconds after the above message is sent, kick the player out and end the tutorial. + tutorial_end_in(7.5 SECONDS, TRUE) + + +// END OF SCRIPTING +// START OF SCRIPT HELPERS + +// END OF SCRIPT HELPERS + +/datum/tutorial/marine/example/init_mob() + . = ..() + // We give the tutorial mob a basic ID so they can use general vendors and etc. This is here because not all marine tutorials may want to use a naked equipment preset. + arm_equipment(tutorial_mob, /datum/equipment_preset/tutorial) + + +/datum/tutorial/marine/example/init_map() + // Here we're initializing a new can that we want to track, so we spawn it 2 tiles to the left and up from the bottom left corner of the tutorial zone + var/obj/item/reagent_container/food/drinks/cans/aspen/the_can = new(loc_from_corner(2, 2)) + // Now we start tracking it + add_to_tracking_atoms(the_can) diff --git a/code/datums/tutorial/xenomorph/_xenomorph.dm b/code/datums/tutorial/xenomorph/_xenomorph.dm new file mode 100644 index 000000000000..caa33d8eed43 --- /dev/null +++ b/code/datums/tutorial/xenomorph/_xenomorph.dm @@ -0,0 +1,35 @@ +/datum/tutorial/xenomorph + category = TUTORIAL_CATEGORY_XENO + parent_path = /datum/tutorial/xenomorph + icon_state = "xeno" + ///Starting xenomorph type (caste) of type /mob/living/carbon/xenomorph/... + var/mob/living/carbon/xenomorph/starting_xenomorph_type = /mob/living/carbon/xenomorph/drone + ///Reference to the actual xenomorph mob + var/mob/living/carbon/xenomorph/xeno + ///If TRUE remove all actions from the tutorial xenomorph. If FALSE none will be removed. You can give actions back in the tutorial with give_action() + var/remove_all_actions = TRUE + +/datum/tutorial/xenomorph/init_mob() + var/mob/living/carbon/xenomorph/new_character = new starting_xenomorph_type(bottom_left_corner, null, XENO_HIVE_TUTORIAL) + new_character.lastarea = get_area(bottom_left_corner) + + //Remove all actions from the tutorial xenomorph if remove_all_actions is TRUE + if(remove_all_actions) + for(var/datum/action/action_path as anything in new_character.base_actions) + remove_action(new_character, action_path) + + setup_xenomorph(new_character, tutorial_mob, is_late_join = FALSE) + + // We don't want people talking to other xenomorphs across tutorials + new_character.can_hivemind_speak = FALSE + // No age prefix or HUD element + new_character.age = XENO_NO_AGE + new_character.show_age_prefix = FALSE + new_character.generate_name() + + tutorial_mob = new_character + xeno = new_character + RegisterSignal(tutorial_mob, COMSIG_LIVING_GHOSTED, PROC_REF(on_ghost)) + RegisterSignal(tutorial_mob, list(COMSIG_PARENT_QDELETING, COMSIG_MOB_DEATH, COMSIG_MOB_END_TUTORIAL), PROC_REF(signal_end_tutorial)) + RegisterSignal(tutorial_mob, COMSIG_MOB_LOGOUT, PROC_REF(on_logout)) + return ..() diff --git a/code/datums/tutorial/xenomorph/xenomorph_basic.dm b/code/datums/tutorial/xenomorph/xenomorph_basic.dm new file mode 100644 index 000000000000..e91c85e1e1e4 --- /dev/null +++ b/code/datums/tutorial/xenomorph/xenomorph_basic.dm @@ -0,0 +1,232 @@ +#define WAITING_HEALTH_THRESHOLD 300 + +/datum/tutorial/xenomorph/basic + name = "Xenomorph - Basic" + desc = "A tutorial to get you acquainted with the very basics of how to play a xenomorph." + icon_state = "xeno" + tutorial_id = "xeno_basic_1" + tutorial_template = /datum/map_template/tutorial/s12x12 + starting_xenomorph_type = /mob/living/carbon/xenomorph/drone + +// START OF SCRITPING + +/datum/tutorial/xenomorph/basic/start_tutorial(mob/starting_mob) + . = ..() + if(!.) + return + + init_mob() + + xeno.plasma_stored = 0 + xeno.plasma_max = 0 + xeno.melee_damage_lower = 40 + xeno.melee_damage_upper = 40 + + message_to_player("Welcome to the Xenomorph basic tutorial. You are [xeno.name], a drone, the workhorse of the hive.") + + addtimer(CALLBACK(src, PROC_REF(on_stretch_legs)), 10 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/on_stretch_legs() + message_to_player("As a drone you can perform most basic functions of the Xenomorph Hive. Such as weeding, building, planting eggs and nesting captured humans.") + addtimer(CALLBACK(src, PROC_REF(on_inform_health)), 5 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/on_inform_health() + message_to_player("The green icon on the right of your screen and green bar next to your character represents your health.") + addtimer(CALLBACK(src, PROC_REF(on_give_plasma)), 10 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/on_give_plasma() + message_to_player("You have been given plasma, a resource used for casting your abilities. This is represented by the blue icon at the right of your screen and the blue bar next to your character.") + xeno.plasma_max = 200 + xeno.plasma_stored = 200 + addtimer(CALLBACK(src, PROC_REF(on_damage_xenomorph)), 15 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/on_damage_xenomorph() + xeno.apply_damage(350) + xeno.emote("hiss") + message_to_player("Oh no! You've been damaged. Notice your green health bars have decreased. Xenomorphs can recover their health by standing or resting on weeds.") + addtimer(CALLBACK(src, PROC_REF(request_player_plant_weed)), 10 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/request_player_plant_weed() + update_objective("Plant a weed node using the new ability Plant Weeds you've just been given.") + give_action(xeno, /datum/action/xeno_action/onclick/plant_weeds) + message_to_player("Plant a weed node to spread weeds using your new ability at the top of the screen. Weeds heal xenomorphs and regenerate their plasma. They also slow humans, making them easier to fight.") + RegisterSignal(xeno, COMSIG_XENO_PLANT_RESIN_NODE, PROC_REF(on_plant_resinode)) + +/datum/tutorial/xenomorph/basic/proc/on_plant_resinode() + SIGNAL_HANDLER + UnregisterSignal(xeno, COMSIG_XENO_PLANT_RESIN_NODE) + message_to_player("Well done. You can rest on the weeds to heal faster using the Rest ability or with the [retrieve_bind("rest")] key.") + message_to_player("We have increased your plasma reserves. Notice also your plasma will regenerate while you are on weeds.") + give_action(xeno, /datum/action/xeno_action/onclick/xeno_resting) + update_objective("Rest or wait until you are at least [WAITING_HEALTH_THRESHOLD] health.") + xeno.plasma_max = 500 + RegisterSignal(xeno, COMSIG_XENO_ON_HEAL_WOUNDS, PROC_REF(on_xeno_gain_health)) + +/datum/tutorial/xenomorph/basic/proc/on_xeno_gain_health() + SIGNAL_HANDLER + UnregisterSignal(xeno, COMSIG_XENO_ON_HEAL_WOUNDS) + message_to_player("Even on weeds. Healing is a slow process. This can be sped up using pheromones. Emit \"Recovery\" pheromones now using your new ability to speed up your healing.") + give_action(xeno, /datum/action/xeno_action/onclick/emit_pheromones) + update_objective("Emit recovery pheromones.") + RegisterSignal(xeno, COMSIG_XENO_START_EMIT_PHEROMONES, PROC_REF(on_xeno_emit_pheromone)) + +/datum/tutorial/xenomorph/basic/proc/on_xeno_emit_pheromone(emitter, pheromone) + SIGNAL_HANDLER + if(!(pheromone == "recovery")) + message_to_player("These are not recovery pheromones. Click your ability again to stop emitting, and choose Recovery instead.") + else if(xeno.health > WAITING_HEALTH_THRESHOLD) + reach_health_threshold() + UnregisterSignal(xeno, COMSIG_XENO_START_EMIT_PHEROMONES) + else + UnregisterSignal(xeno, COMSIG_XENO_START_EMIT_PHEROMONES) + message_to_player("Well done. Recovery Pheromones will significantly speed up your health regeneration. Rest or wait until your health is at least [WAITING_HEALTH_THRESHOLD].") + message_to_player("Pheromones also provide their effects to other xenomorph sisters nearby!") + RegisterSignal(xeno, COMSIG_XENO_ON_HEAL_WOUNDS, PROC_REF(reach_health_threshold)) + +/datum/tutorial/xenomorph/basic/proc/reach_health_threshold() + SIGNAL_HANDLER + if(xeno.health < WAITING_HEALTH_THRESHOLD) + return + + UnregisterSignal(xeno, COMSIG_XENO_ON_HEAL_WOUNDS) + + message_to_player("Good. Well done.") + message_to_player("A hostile human or \"tallhost\" has appeared. Use your harm intent to kill it in melee!") + update_objective("Kill the human!") + + var/mob/living/carbon/human/human_dummy = new(loc_from_corner(7,7)) + add_to_tracking_atoms(human_dummy) + add_highlight(human_dummy, COLOR_RED) + RegisterSignal(human_dummy, COMSIG_MOB_DEATH, PROC_REF(on_human_death_phase_one)) + +/datum/tutorial/xenomorph/basic/proc/on_human_death_phase_one() + SIGNAL_HANDLER + + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + + UnregisterSignal(human_dummy, COMSIG_MOB_DEATH) + message_to_player("Well done. Killing humans is one of many ways to help the hive.") + message_to_player("Another way is to capture them. This will grow a new xenomorph inside them which will eventually burst into a new playable xenomorph!") + addtimer(CALLBACK(human_dummy, TYPE_PROC_REF(/mob/living, rejuvenate)), 8 SECONDS) + addtimer(CALLBACK(src, PROC_REF(proceed_to_tackle_phase)), 10 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/proceed_to_tackle_phase() + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + remove_highlight(human_dummy) + RegisterSignal(human_dummy, COMSIG_MOB_TAKE_DAMAGE, PROC_REF(on_tackle_phase_human_damage)) + RegisterSignal(human_dummy, COMSIG_MOB_TACKLED_DOWN, PROC_REF(proceed_to_cap_phase)) + message_to_player("Tackle the human to the ground using your disarm intent. This can take up to four tries as a drone.") + update_objective("Tackle the human to the ground!") + +/datum/tutorial/xenomorph/basic/proc/on_tackle_phase_human_damage(source, damagedata) + SIGNAL_HANDLER + if(damagedata["damage"] <= 0) + return + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + // Rejuvenate the dummy if it's less than half health so our player can't kill it and softlock themselves. + if(human_dummy.health < (human_dummy.maxHealth / 2)) + message_to_player("Don't harm the human!") + human_dummy.rejuvenate() + +/datum/tutorial/xenomorph/basic/proc/proceed_to_cap_phase() + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + + UnregisterSignal(human_dummy, COMSIG_MOB_TACKLED_DOWN) + + ADD_TRAIT(human_dummy, TRAIT_KNOCKEDOUT, TRAIT_SOURCE_TUTORIAL) + ADD_TRAIT(human_dummy, TRAIT_FLOORED, TRAIT_SOURCE_TUTORIAL) + xeno.melee_damage_lower = 0 + xeno.melee_damage_upper = 0 + message_to_player("Well done. Under normal circumstances, you would have to keep tackling the human to keep them down, but for the purposes of this tutorial they will stay down forever.") + addtimer(CALLBACK(src, PROC_REF(cap_phase)), 10 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/cap_phase() + var/obj/effect/alien/resin/special/eggmorph/morpher = new(loc_from_corner(2,2), GLOB.hive_datum[XENO_HIVE_TUTORIAL]) + morpher.stored_huggers = 1 + add_to_tracking_atoms(morpher) + add_highlight(morpher, COLOR_YELLOW) + message_to_player("In the south west is an egg morpher. Click the egg morpher to take a facehugger.") + RegisterSignal(xeno, COMSIG_XENO_TAKE_HUGGER_FROM_MORPHER, PROC_REF(take_facehugger_phase)) + +/datum/tutorial/xenomorph/basic/proc/take_facehugger_phase(source, hugger) + SIGNAL_HANDLER + UnregisterSignal(xeno, COMSIG_XENO_TAKE_HUGGER_FROM_MORPHER) + TUTORIAL_ATOM_FROM_TRACKING(/obj/effect/alien/resin/special/eggmorph, morpher) + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + add_to_tracking_atoms(hugger) + remove_highlight(morpher) + + add_highlight(hugger, COLOR_YELLOW) + message_to_player("This is a facehugger, highlighted in yellow. Pick up the facehugger by clicking it.") + message_to_player("Stand next to the downed human and click them to apply the facehugger. Or drop the facehugger near them to see it leap onto their face automatically.") + RegisterSignal(human_dummy, COMSIG_HUMAN_IMPREGNATE, PROC_REF(nest_cap_phase)) + +/datum/tutorial/xenomorph/basic/proc/nest_cap_phase() + SIGNAL_HANDLER + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/clothing/mask/facehugger, hugger) + UnregisterSignal(human_dummy, COMSIG_MOB_TAKE_DAMAGE) + UnregisterSignal(human_dummy, COMSIG_HUMAN_IMPREGNATE) + remove_highlight(hugger) + + message_to_player("We should nest the infected human to make sure they don't get away.") + message_to_player("Humans cannot escape nests without help, and the nest will keep them alive long enough for our new sister to burst forth.") + addtimer(CALLBACK(src, PROC_REF(nest_cap_phase_two)), 10 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/nest_cap_phase_two() + + loc_from_corner(8,0).ChangeTurf(/turf/closed/wall/resin/tutorial) + loc_from_corner(8,1).ChangeTurf(/turf/closed/wall/resin/tutorial) + loc_from_corner(9,1).ChangeTurf(/turf/closed/wall/resin/tutorial) + + addtimer(CALLBACK(src, PROC_REF(nest_cap_phase_three)), 5 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/nest_cap_phase_three() + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + message_to_player("Grab the human using your grab intent. Or use control + click.") + RegisterSignal(human_dummy, COMSIG_MOVABLE_XENO_START_PULLING, PROC_REF(nest_cap_phase_four)) + +/datum/tutorial/xenomorph/basic/proc/nest_cap_phase_four() + SIGNAL_HANDLER + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + UnregisterSignal(human_dummy, COMSIG_MOVABLE_XENO_START_PULLING) + message_to_player("Well done. Now devour the human by clicking on your character with the grab selected in your hand. You must not move during this process.") + RegisterSignal(human_dummy, COMSIG_MOB_DEVOURED, PROC_REF(nest_cap_phase_five)) + +/datum/tutorial/xenomorph/basic/proc/nest_cap_phase_five() + SIGNAL_HANDLER + message_to_player("Well done, you can reguritate the human using the new ability you have gained.") + message_to_player("Be careful. Real humans may put up a fight and can try to cut out of you from inside!") + give_action(xeno, /datum/action/xeno_action/onclick/regurgitate) + addtimer(CALLBACK(src, PROC_REF(nest_cap_phase_six)), 15 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/nest_cap_phase_six() + message_to_player("Humans can only be nested on hive weeds. These are special weeds created by structures such as the hive core, or hive clusters.") + message_to_player("We have set up hive weeds and walls for you in the south east.") + addtimer(CALLBACK(src, PROC_REF(nest_cap_phase_seven)), 10 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/nest_cap_phase_seven() + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + UnregisterSignal(human_dummy, COMSIG_MOB_DEVOURED) + RegisterSignal(human_dummy, COMSIG_MOB_NESTED, PROC_REF(on_mob_nested)) + message_to_player("Nest the captive human!") + update_objective("Nest the captive human!") + message_to_player("Drag the human next to the wall so both you and human are directly adjacent to the wall.") + message_to_player("With the grab selected in your hand. Click on the wall. Or click and drag the mouse from the human onto the wall. You must not move during this process.") + new /obj/effect/alien/resin/special/cluster(loc_from_corner(9,0), GLOB.hive_datum[XENO_HIVE_TUTORIAL]) + +/datum/tutorial/xenomorph/basic/proc/on_mob_nested() + SIGNAL_HANDLER + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + UnregisterSignal(human_dummy, COMSIG_MOB_NESTED) + + message_to_player("Well done, this concludes the basic Xenomorph tutorial.") + message_to_player("This tutorial will end shortly.") + tutorial_end_in(10 SECONDS) + +// END OF SCRIPTING + +/datum/tutorial/xenomorph/basic/init_map() + loc_from_corner(9,0).ChangeTurf(/turf/closed/wall/resin/tutorial) + +#undef WAITING_HEALTH_THRESHOLD diff --git a/code/datums/weather/weather_events/new_varadero.dm b/code/datums/weather/weather_events/new_varadero.dm new file mode 100644 index 000000000000..f2af23c3f10a --- /dev/null +++ b/code/datums/weather/weather_events/new_varadero.dm @@ -0,0 +1,38 @@ +/datum/weather_event/light_rain + name = "Tropical Storm" + display_name = "Tropical Storm" + length = 4 MINUTES + fullscreen_type = /atom/movable/screen/fullscreen/weather/low + + turf_overlay_icon_state = "strata_storm" + turf_overlay_alpha = 40 + + effect_message = null + damage_per_tick = 0 + + has_process = TRUE + lightning_chance = 1 + + ambience = 'sound/ambience/rainforest.ogg' + + fire_smothering_strength = 1 + +/datum/weather_event/monsoon + name = "Monsoon Warning" + display_name = "Monsoon Warning" + length = 6 MINUTES + fullscreen_type = /atom/movable/screen/fullscreen/weather/high + + turf_overlay_icon_state = "strata_storm" + turf_overlay_alpha = 115 + + effect_message = null + damage_per_tick = 0 + + + ambience = 'sound/ambience/varadero_storm.ogg' + + has_process = TRUE + lightning_chance = 6 + + fire_smothering_strength = 4 diff --git a/code/datums/weather/weather_map_holders/new_varadero.dm b/code/datums/weather/weather_map_holders/new_varadero.dm new file mode 100644 index 000000000000..6dae09711e47 --- /dev/null +++ b/code/datums/weather/weather_map_holders/new_varadero.dm @@ -0,0 +1,20 @@ +/datum/weather_ss_map_holder/new_varadero + name = "New Varadero Map Holder" + + min_time_between_events = 15 MINUTES + no_weather_turf_icon_state = "strata_clearsky" + + potential_weather_events = list( + /datum/weather_event/light_rain, + /datum/weather_event/monsoon, + ) + +/datum/weather_ss_map_holder/new_varadero/should_affect_area(area/A) + return !CEILING_IS_PROTECTED(A.ceiling, CEILING_GLASS) + +/datum/weather_ss_map_holder/new_varadero/should_start_event() + return prob(PROB_WEATHER_NEW_VARADERO) + +/datum/weather_ss_map_holder/new_varadero/weather_warning() + for (var/obj/structure/machinery/storm_siren/WS in GLOB.weather_notify_objects) + WS.weather_warning() diff --git a/code/datums/weather/weather_map_holders/sorokyne.dm b/code/datums/weather/weather_map_holders/sorokyne.dm index db55d12cdfbe..3c27a43ce1b3 100644 --- a/code/datums/weather/weather_map_holders/sorokyne.dm +++ b/code/datums/weather/weather_map_holders/sorokyne.dm @@ -21,5 +21,5 @@ return FALSE /datum/weather_ss_map_holder/sorokyne/weather_warning() - for (var/obj/structure/machinery/weather_siren/WS in weather_notify_objects) + for (var/obj/structure/machinery/weather_siren/WS in GLOB.weather_notify_objects) WS.weather_warning() diff --git a/code/defines/procs/announcement.dm b/code/defines/procs/announcement.dm index 5ee8c573d0e3..3eae6076f610 100644 --- a/code/defines/procs/announcement.dm +++ b/code/defines/procs/announcement.dm @@ -30,7 +30,7 @@ //general marine announcement -/proc/marine_announcement(message, title = COMMAND_ANNOUNCE, sound_to_play = sound('sound/misc/notice2.ogg'), faction_to_display = FACTION_MARINE, add_PMCs = TRUE, signature) +/proc/marine_announcement(message, title = COMMAND_ANNOUNCE, sound_to_play = sound('sound/misc/notice2.ogg'), faction_to_display = FACTION_MARINE, add_PMCs = TRUE, signature, logging = ARES_LOG_MAIN) var/list/targets = GLOB.human_mob_list + GLOB.dead_mob_list if(faction_to_display == FACTION_MARINE) for(var/mob/M in targets) @@ -45,6 +45,12 @@ if((H.faction != faction_to_display && !add_PMCs) || (H.faction != faction_to_display && add_PMCs && !(H.faction in FACTION_LIST_WY)) && !(faction_to_display in H.faction_group)) //faction checks targets.Remove(H) + switch(logging) + if(ARES_LOG_MAIN) + log_ares_announcement(title, message) + if(ARES_LOG_SECURITY) + log_ares_security(title, message) + else if(faction_to_display == "Everyone (-Yautja)") for(var/mob/M in targets) if(isobserver(M)) //observers see everything @@ -82,19 +88,25 @@ announcement_helper(message, title, targets, sound_to_play) //AI announcement that uses talking into comms -/proc/ai_announcement(message, sound_to_play = sound('sound/misc/interference.ogg')) +/proc/ai_announcement(message, sound_to_play = sound('sound/misc/interference.ogg'), logging = ARES_LOG_MAIN) for(var/mob/M in (GLOB.human_mob_list + GLOB.dead_mob_list)) if(isobserver(M) || ishuman(M) && is_mainship_level(M.z)) playsound_client(M.client, sound_to_play, M, vol = 45) - for(var/mob/living/silicon/decoy/ship_ai/AI in ai_mob_list) + for(var/mob/living/silicon/decoy/ship_ai/AI in GLOB.ai_mob_list) INVOKE_ASYNC(AI, TYPE_PROC_REF(/mob/living/silicon/decoy/ship_ai, say), message) + switch(logging) + if(ARES_LOG_MAIN) + log_ares_announcement("[MAIN_AI_SYSTEM] Comms Update", message) + if(ARES_LOG_SECURITY) + log_ares_security("[MAIN_AI_SYSTEM] Security Update", message) + /proc/ai_silent_announcement(message, channel_prefix, bypass_cooldown = FALSE) if(!message) return - for(var/mob/living/silicon/decoy/ship_ai/AI in ai_mob_list) + for(var/mob/living/silicon/decoy/ship_ai/AI in GLOB.ai_mob_list) if(channel_prefix) message = "[channel_prefix][message]" INVOKE_ASYNC(AI, TYPE_PROC_REF(/mob/living/silicon/decoy/ship_ai, say), message) @@ -109,7 +121,7 @@ //AI shipside announcement, that uses announcement mechanic instead of talking into comms //to ensure that all humans on ship hear it regardless of comms and power -/proc/shipwide_ai_announcement(message, title = MAIN_AI_SYSTEM, sound_to_play = sound('sound/misc/interference.ogg'), signature) +/proc/shipwide_ai_announcement(message, title = MAIN_AI_SYSTEM, sound_to_play = sound('sound/misc/interference.ogg'), signature, ares_logging = ARES_LOG_MAIN) var/list/targets = GLOB.human_mob_list + GLOB.dead_mob_list for(var/mob/T in targets) if(isobserver(T)) @@ -119,17 +131,25 @@ if(!isnull(signature)) message += "

Signed by,
[signature]
" + switch(ares_logging) + if(ARES_LOG_MAIN) + log_ares_announcement(title, message) + if(ARES_LOG_SECURITY) + log_ares_security(title, message) announcement_helper(message, title, targets, sound_to_play) + //Subtype of AI shipside announcement for "All Hands On Deck" alerts (COs and SEAs joining the game) -/proc/all_hands_on_deck(message, title = MAIN_AI_SYSTEM, sound_to_play = sound('sound/misc/sound_misc_boatswain.ogg'), signature) +/proc/all_hands_on_deck(message, title = MAIN_AI_SYSTEM, sound_to_play = sound('sound/misc/sound_misc_boatswain.ogg')) var/list/targets = GLOB.human_mob_list + GLOB.dead_mob_list for(var/mob/T in targets) if(isobserver(T)) continue - if(!ishuman(T) || isyautja(T) || !is_mainship_level(T.z)) + if(!ishuman(T) || isyautja(T) || !is_mainship_level((get_turf(T))?.z)) targets.Remove(T) + log_ares_announcement("[title] Shipwide Update", message) + announcement_helper(message, title, targets, sound_to_play) //the announcement proc that handles announcing for each mob in targets list diff --git a/code/defines/procs/radio.dm b/code/defines/procs/radio.dm index b4914d049fc9..d99d99b24726 100644 --- a/code/defines/procs/radio.dm +++ b/code/defines/procs/radio.dm @@ -2,8 +2,8 @@ var/freq_text // the name of the channel - for(var/channel in radiochannels) - if(radiochannels[channel] == display_freq) + for(var/channel in GLOB.radiochannels) + if(GLOB.radiochannels[channel] == display_freq) freq_text = channel break diff --git a/code/defines/procs/records.dm b/code/defines/procs/records.dm index a1e2ade2b709..a9d40f993629 100644 --- a/code/defines/procs/records.dm +++ b/code/defines/procs/records.dm @@ -1,48 +1,50 @@ /proc/CreateGeneralRecord() - var/datum/data/record/G = new /datum/data/record() - G.fields["name"] = "New Record" - G.fields["id"] = text("[]", add_zero(num2hex(rand(1, 1.6777215E7)), 6)) - G.fields["rank"] = "Unassigned" - G.fields["real_rank"] = "Unassigned" - G.fields["sex"] = "Male" - G.fields["age"] = "Unknown" - G.fields["ethnicity"] = "Unknown" - G.fields["p_stat"] = "Active" - G.fields["m_stat"] = "Stable" - G.fields["species"] = "Human" - G.fields["origin"] = "Unknown" - G.fields["faction"] = "Unknown" - G.fields["mob_faction"] = "Unknown" - G.fields["religion"] = "Unknown" - GLOB.data_core.general += G - return G + var/datum/data/record/general_record = new /datum/data/record() + general_record.fields["name"] = "New Record" + general_record.name = "New Record" + general_record.fields["id"] = text("[]", add_zero(num2hex(rand(1, 1.6777215E7)), 6)) + general_record.fields["rank"] = "Unassigned" + general_record.fields["real_rank"] = "Unassigned" + general_record.fields["sex"] = "Male" + general_record.fields["age"] = "Unknown" + general_record.fields["ethnicity"] = "Unknown" + general_record.fields["p_stat"] = "Active" + general_record.fields["m_stat"] = "Stable" + general_record.fields["species"] = "Human" + general_record.fields["origin"] = "Unknown" + general_record.fields["faction"] = "Unknown" + general_record.fields["mob_faction"] = "Unknown" + general_record.fields["religion"] = "Unknown" + GLOB.data_core.general += general_record + return general_record /proc/CreateSecurityRecord(name as text, id as text) - var/datum/data/record/R = new /datum/data/record() - R.fields["name"] = name - R.fields["id"] = id - R.name = text("Security Record #[id]") - R.fields["incidents"] = "None" - GLOB.data_core.security += R - return R + var/datum/data/record/security_record = new /datum/data/record() + security_record.fields["name"] = name + security_record.fields["id"] = id + security_record.name = text("Security Record #[id]") + security_record.fields["incidents"] = "None" + GLOB.data_core.security += security_record + return security_record -/proc/create_medical_record(mob/living/carbon/human/H) - var/datum/data/record/M = new /datum/data/record() - M.fields["id"] = null - M.fields["name"] = H.real_name - M.fields["b_type"] = H.b_type - M.fields["mi_dis"] = "None" - M.fields["mi_dis_d"] = "No minor disabilities have been declared." - M.fields["ma_dis"] = "None" - M.fields["ma_dis_d"] = "No major disabilities have been diagnosed." - M.fields["alg"] = "None" - M.fields["alg_d"] = "No allergies have been detected in this patient." - M.fields["cdi"] = "None" - M.fields["cdi_d"] = "No diseases have been diagnosed at the moment." - M.fields["last_scan_time"] = null - M.fields["last_scan_result"] = "No scan data on record" - M.fields["autodoc_data"] = list() - M.fields["autodoc_manual"] = list() - M.fields["ref"] = WEAKREF(H) - GLOB.data_core.medical += M - return M +/proc/create_medical_record(mob/living/carbon/human/person) + var/datum/data/record/medical_record = new /datum/data/record() + medical_record.fields["id"] = null + medical_record.fields["name"] = person.real_name + medical_record.name = person.real_name + medical_record.fields["b_type"] = person.b_type + medical_record.fields["mi_dis"] = "None" + medical_record.fields["mi_dis_d"] = "No minor disabilities have been declared." + medical_record.fields["ma_dis"] = "None" + medical_record.fields["ma_dis_d"] = "No major disabilities have been diagnosed." + medical_record.fields["alg"] = "None" + medical_record.fields["alg_d"] = "No allergies have been detected in this patient." + medical_record.fields["cdi"] = "None" + medical_record.fields["cdi_d"] = "No diseases have been diagnosed at the moment." + medical_record.fields["last_scan_time"] = null + medical_record.fields["last_scan_result"] = "No scan data on record" + medical_record.fields["autodoc_data"] = list() + medical_record.fields["autodoc_manual"] = list() + medical_record.fields["ref"] = WEAKREF(person) + GLOB.data_core.medical += medical_record + return medical_record diff --git a/code/game/area/BigRed.dm b/code/game/area/BigRed.dm index 59d7c40cd56f..57e062195a3c 100644 --- a/code/game/area/BigRed.dm +++ b/code/game/area/BigRed.dm @@ -654,6 +654,7 @@ minimap_color = MINIMAP_AREA_LZ icon_state = "tcomsatcham" requires_power = FALSE + is_resin_allowed = FALSE /area/bigredv2/landing/console name = "\improper LZ1 'Telecomms'" diff --git a/code/game/area/DesertDam.dm b/code/game/area/DesertDam.dm index 73635eb6385d..96e5eb1f62e5 100644 --- a/code/game/area/DesertDam.dm +++ b/code/game/area/DesertDam.dm @@ -682,7 +682,6 @@ /area/desert_dam/exterior requires_power = 1 always_unpowered = 1 - lighting_use_dynamic = 1 power_light = FALSE power_equip = FALSE power_environ = FALSE diff --git a/code/game/area/IceColony.dm b/code/game/area/IceColony.dm index 2c7bbee2969c..40289b92b5ad 100644 --- a/code/game/area/IceColony.dm +++ b/code/game/area/IceColony.dm @@ -28,7 +28,6 @@ icon_state = "cliff_blocked" requires_power = 1 always_unpowered = 1 - lighting_use_dynamic = 1 power_light = FALSE power_equip = FALSE power_environ = FALSE @@ -65,6 +64,7 @@ name = "\improper Emergency Landing Pad" icon_state = "landing_pad" minimap_color = MINIMAP_AREA_LZ + is_resin_allowed = FALSE //Everything around the physical landing pad @@ -79,6 +79,7 @@ name = "\improper Aerodrome Container Yard" icon_state = "container_yard" minimap_color = MINIMAP_AREA_LZ + is_resin_allowed = FALSE // // Valleys diff --git a/code/game/area/LV522_Chances_Claim.dm b/code/game/area/LV522_Chances_Claim.dm index 8a424148d3b5..ffd6a5897e4e 100644 --- a/code/game/area/LV522_Chances_Claim.dm +++ b/code/game/area/LV522_Chances_Claim.dm @@ -52,7 +52,6 @@ name = "Chance's Claim - Dropship Alamo Landing Zone" icon_state = "shuttle" icon = 'icons/turf/area_shiva.dmi' - lighting_use_dynamic = TRUE /area/lv522/landing_zone_1/lz1_console name = "Chance's Claim - Dropship Alamo Console" @@ -75,7 +74,6 @@ name = "Chance's Claim - Dropship Normandy Landing Zone" icon_state = "shuttle2" icon = 'icons/turf/area_shiva.dmi' - lighting_use_dynamic = TRUE /area/lv522/landing_zone_2/lz2_console name = "Chance's Claim - Dropship Normandy Console" @@ -180,6 +178,7 @@ name = "North LZ1 - Spaceport" icon_state = "red" minimap_color = MINIMAP_AREA_LZ + is_resin_allowed = FALSE /area/lv522/indoors/lone_buildings/outdoor_bot name = "East LZ1 - Outdoor T-Comms" @@ -456,3 +455,18 @@ name = "Atmospheric Processor - Filtration System" icon_state = "mechbay" ceiling = CEILING_UNDERGROUND_METAL_BLOCK_CAS + +/area/lv522/atmos/way_in_command_centre + name = "Atmospheric Processor - North Corpo Reactor Entrance" + icon_state = "blue" + ceiling = CEILING_UNDERGROUND_METAL_BLOCK_CAS + +/area/lv522/atmos/sewer + name = "Atmospheric Processor - Sewer" + icon_state = "red" + ceiling = CEILING_UNDERGROUND_METAL_BLOCK_CAS + +/area/lv522/atmos/reactor_garage + name = "Atmospheric Processor - Garage" + icon_state = "green" + ceiling = CEILING_UNDERGROUND_METAL_BLOCK_CAS diff --git a/code/game/area/LV624.dm b/code/game/area/LV624.dm index 505387f8e52b..613703a0be6e 100644 --- a/code/game/area/LV624.dm +++ b/code/game/area/LV624.dm @@ -382,10 +382,12 @@ /area/lv624/lazarus/engineering name = "\improper Engineering" icon_state = "engine_smes" + minimap_color = MINIMAP_AREA_ENGI /area/lv624/lazarus/comms name = "\improper Communications Relay" icon_state = "tcomsatcham" + minimap_color = MINIMAP_AREA_ENGI /area/lv624/lazarus/secure_storage name = "\improper Secure Storage" @@ -400,6 +402,7 @@ /area/lv624/lazarus/research name = "\improper Research Lab" icon_state = "toxlab" + minimap_color = MINIMAP_AREA_RESEARCH /area/lv624/lazarus/fitness name = "\improper Fitness Room" diff --git a/code/game/area/Sulaco.dm b/code/game/area/Sulaco.dm index ffc087ad9851..ae197537143a 100644 --- a/code/game/area/Sulaco.dm +++ b/code/game/area/Sulaco.dm @@ -13,6 +13,7 @@ is_resin_allowed = FALSE flags_area = AREA_NOTUNNEL is_landing_zone = TRUE + ceiling = CEILING_REINFORCED_METAL /area/shuttle/drop1/Enter(atom/movable/O, atom/oldloc) if(istype(O, /obj/structure/barricade)) @@ -23,36 +24,30 @@ name = "\improper Dropship Alamo" icon_state = "shuttlered" base_muffle = MUFFLE_HIGH - ceiling = CEILING_REINFORCED_METAL /area/shuttle/drop1/LV624 name = "\improper Dropship Alamo" ambience_exterior = AMBIENCE_LV624 icon_state = "shuttle" - ceiling = CEILING_REINFORCED_METAL /area/shuttle/drop1/prison name = "\improper Dropship Alamo" ambience_exterior = AMBIENCE_PRISON icon_state = "shuttle" - ceiling = CEILING_REINFORCED_METAL /area/shuttle/drop1/BigRed name = "\improper Dropship Alamo" ambience_exterior = AMBIENCE_BIGRED icon_state = "shuttle" - ceiling = CEILING_REINFORCED_METAL /area/shuttle/drop1/ice_colony name = "\improper Dropship Alamo" icon_state = "shuttle" - ceiling = CEILING_REINFORCED_METAL /area/shuttle/drop1/DesertDam name = "\improper Dropship Alamo" ambience_exterior = AMBIENCE_TRIJENT icon_state = "shuttle" - ceiling = CEILING_REINFORCED_METAL /area/shuttle/drop1/transit ambience_exterior = 'sound/ambience/dropship_ambience_loop.ogg' @@ -75,41 +70,36 @@ is_resin_allowed = FALSE flags_area = AREA_NOTUNNEL is_landing_zone = TRUE + ceiling = CEILING_REINFORCED_METAL /area/shuttle/drop2/sulaco name = "\improper Dropship Normandy" icon_state = "shuttle" base_muffle = MUFFLE_HIGH - ceiling = CEILING_REINFORCED_METAL /area/shuttle/drop2/LV624 name = "\improper Dropship Normandy" ambience_exterior = AMBIENCE_LV624 icon_state = "shuttle2" - ceiling = CEILING_REINFORCED_METAL /area/shuttle/drop2/prison name = "\improper Dropship Normandy" ambience_exterior = AMBIENCE_PRISON icon_state = "shuttle2" - ceiling = CEILING_REINFORCED_METAL /area/shuttle/drop2/BigRed name = "\improper Dropship Normandy" ambience_exterior = AMBIENCE_BIGRED icon_state = "shuttle2" - ceiling = CEILING_REINFORCED_METAL /area/shuttle/drop2/ice_colony name = "\improper Dropship Normandy" icon_state = "shuttle2" - ceiling = CEILING_REINFORCED_METAL /area/shuttle/drop2/DesertDam name = "\improper Dropship Normandy" ambience_exterior = AMBIENCE_TRIJENT icon_state = "shuttle2" - ceiling = CEILING_REINFORCED_METAL /area/shuttle/drop2/transit ambience_exterior = 'sound/ambience/dropship_ambience_loop.ogg' @@ -127,7 +117,7 @@ //DISTRESS SHUTTLES /area/shuttle/distress - lighting_use_dynamic = FALSE + base_lighting_alpha = 255 unique = TRUE /area/shuttle/distress/start diff --git a/code/game/area/WhiskeyOutpost.dm b/code/game/area/WhiskeyOutpost.dm index 583a5dafc299..aef72d1a9941 100644 --- a/code/game/area/WhiskeyOutpost.dm +++ b/code/game/area/WhiskeyOutpost.dm @@ -65,7 +65,7 @@ icon_state = "livingspace" /area/whiskey_outpost/inside/supply - name = "\improper Supply Depo" + name = "\improper Supply Depot" icon_state = "req" /* @@ -79,7 +79,6 @@ //ambience = list('sound/ambience/jungle_amb1.ogg') requires_power = 1 always_unpowered = 1 - lighting_use_dynamic = 1 power_light = FALSE power_equip = FALSE power_environ = FALSE @@ -180,7 +179,6 @@ ceiling = CEILING_UNDERGROUND_ALLOW_CAS requires_power = 1 always_unpowered = 1 - lighting_use_dynamic = 1 power_light = FALSE power_equip = FALSE power_environ = FALSE diff --git a/code/game/area/admin_level.dm b/code/game/area/admin_level.dm index 3a79546d177d..bfca1481155e 100644 --- a/code/game/area/admin_level.dm +++ b/code/game/area/admin_level.dm @@ -3,14 +3,13 @@ /area/adminlevel ceiling = CEILING_METAL + base_lighting_alpha = 255 /area/adminlevel/bunker01 icon_state = "thunder" requires_power = FALSE statistic_exempt = TRUE flags_area = AREA_NOTUNNEL - luminosity = TRUE - lighting_use_dynamic = FALSE /area/adminlevel/bunker01/mainroom name = "\improper Bunker Main Room" @@ -78,8 +77,7 @@ ceiling = CEILING_UNDERGROUND_ALLOW_CAS always_unpowered = TRUE requires_power = TRUE - lighting_use_dynamic = TRUE - luminosity = FALSE + base_lighting_alpha = 0 /area/adminlevel/bunker01/caves/outpost name = "\improper Bunker Outpost" @@ -87,8 +85,6 @@ ceiling = CEILING_UNDERGROUND_ALLOW_CAS requires_power = TRUE always_unpowered = FALSE - lighting_use_dynamic = TRUE - luminosity = FALSE /area/adminlevel/bunker01/caves/xeno name = "\improper Bunker Xeno Hive" @@ -110,9 +106,29 @@ /area/adminlevel/ert_station name = "ERT Station" icon_state = "green" - requires_power = 0 + requires_power = FALSE flags_area = AREA_NOTUNNEL +/area/adminlevel/ert_station/upp_station + name = "UPP Station" + icon_state = "green" + +/area/adminlevel/ert_station/clf_station + name = "CLF Station" + icon_state = "white" + +/area/adminlevel/ert_station/weyland_station + name = "Weyland-Yutani Station" + icon_state = "red" + +/area/adminlevel/ert_station/freelancer_station + name = "Freelancer Station" + icon_state = "yellow" + +/area/adminlevel/ert_station/royal_marines_station + name = "HMS Patna Hangerbay" + icon_state = "yellow" + /area/adminlevel/ert_station/shuttle_dispatch name = "Shuttle Dispatch Station" soundscape_playlist = SCAPE_PL_ELEVATOR_MUSIC @@ -128,3 +144,22 @@ /area/misc/testroom requires_power = FALSE name = "Test Room" + +/area/misc/tutorial + name = "Tutorial Zone" + icon_state = "tutorial" + requires_power = FALSE + flags_area = AREA_NOTUNNEL|AREA_AVOID_BIOSCAN + statistic_exempt = TRUE + ceiling = CEILING_METAL + block_game_interaction = TRUE + unique = TRUE + + base_lighting_alpha = 255 + +/area/misc/tutorial/Initialize(mapload, ...) + . = ..() + update_base_lighting() + +/area/misc/tutorial/no_baselight + base_lighting_alpha = 0 diff --git a/code/game/area/almayer.dm b/code/game/area/almayer.dm index a23f84323301..8acad9821cdd 100644 --- a/code/game/area/almayer.dm +++ b/code/game/area/almayer.dm @@ -1,25 +1,41 @@ //ALMAYER AREAS--------------------------------------// // Fore = West | Aft = East // // Port = South | Starboard = North // +// Bow = Western|Stern = Eastern //(those are the front and back small sections) /area/almayer icon = 'icons/turf/area_almayer.dmi' - //ambience = list('sound/ambience/shipambience.ogg') + // ambience = list('sound/ambience/shipambience.ogg') icon_state = "almayer" ceiling = CEILING_METAL powernet_name = "almayer" sound_environment = SOUND_ENVIRONMENT_ROOM soundscape_interval = 30 - //soundscape_playlist = list('sound/effects/xylophone1.ogg', 'sound/effects/xylophone2.ogg', 'sound/effects/xylophone3.ogg') + // soundscape_playlist = list('sound/effects/xylophone1.ogg', 'sound/effects/xylophone2.ogg', 'sound/effects/xylophone3.ogg') ambience_exterior = AMBIENCE_ALMAYER ceiling_muffle = FALSE + ///Whether this area is used for hijack evacuation progress + var/hijack_evacuation_area = FALSE + + ///The weight this area gives towards hijack evacuation progress + var/hijack_evacuation_weight = 0 + + ///Whether this area is additive or multiplicative towards evacuation progress + var/hijack_evacuation_type = EVACUATION_TYPE_NONE + +/area/almayer/Initialize(mapload, ...) + . = ..() + + if(hijack_evacuation_area) + SShijack.progress_areas[src] = power_equip + /area/shuttle/almayer/elevator_maintenance/upperdeck - name = "\improper Maintenance Elevator" + name = "\improper Upper Deck Maintenance Elevator" icon_state = "shuttle" fake_zlevel = 1 /area/shuttle/almayer/elevator_maintenance/lowerdeck - name = "\improper Maintenance Elevator" + name = "\improper Lower Deck Maintenance Elevator" icon_state = "shuttle" fake_zlevel = 2 @@ -77,99 +93,108 @@ fake_zlevel = 1 // upperdeck soundscape_playlist = SCAPE_PL_ARES soundscape_interval = 120 - flags_area = AREA_NOTUNNEL + flags_area = AREA_NOTUNNEL|AREA_UNWEEDABLE + can_build_special = FALSE + is_resin_allowed = FALSE + resin_construction_allowed = FALSE /area/almayer/command/securestorage - name = "\improper Secure Storage" + name = "\improper Upper Deck Secure Storage" icon_state = "corporatespace" fake_zlevel = 1 // upperdeck /area/almayer/command/computerlab - name = "\improper Computer Lab" + name = "\improper Upper Deck Computer Lab" icon_state = "ceroom" fake_zlevel = 1 // upperdeck /area/almayer/command/telecomms - name = "\improper Telecommunications" + name = "\improper Upper Deck Telecommunications" icon_state = "tcomms" fake_zlevel = 1 // upperdeck flags_area = AREA_NOTUNNEL /area/almayer/command/self_destruct - name = "\improper Self-Destruct Core Room" + name = "\improper Upper Deck Self-Destruct Core Room" icon_state = "selfdestruct" fake_zlevel = 1 // upperdeck flags_area = AREA_NOTUNNEL -/area/almayer/command/corporateliason +/area/almayer/command/corporateliaison name = "\improper Corporate Liaison Office" icon_state = "corporatespace" fake_zlevel = 1 // upperdeck /area/almayer/command/combat_correspondent - name = "\improper Combat Correspondent Office" + name = "\improper Upper Deck Combat Correspondent Office" icon_state = "selfdestruct" fake_zlevel = 1 // upperdeck +// engineering + /area/almayer/engineering minimap_color = MINIMAP_AREA_ENGI +// lower deck + +/area/almayer/engineering/lower + name = "\improper Lower Deck Engineering" + icon_state = "lowerengineering" + fake_zlevel = 2 // lowerdeck + +/area/almayer/engineering/lower/engine_monitoring//this is not used so could be remove? + name = "\improper Lower Deck Engine Reactor Monitoring" + icon_state = "lowermonitoring" + +/area/almayer/engineering/lower/workshop + name = "\improper Lower Deck Engineering Workshop" + icon_state = "workshop" + +/area/almayer/engineering/lower/workshop/hangar + name = "\improper Ordnance workshop" + +/area/almayer/engineering/lower/engine_core + name = "\improper Engine Reactor Core Room" + icon_state = "coreroom" + soundscape_playlist = SCAPE_PL_ENG + soundscape_interval = 15 + hijack_evacuation_area = TRUE + hijack_evacuation_weight = 0.2 + hijack_evacuation_type = EVACUATION_TYPE_ADDITIVE + +// upper deck + /area/almayer/engineering/upper_engineering - name = "\improper Upper Engineering" + name = "\improper Upper Deck Engineering" icon_state = "upperengineering" fake_zlevel = 1 // upperdeck /area/almayer/engineering/upper_engineering/starboard - name = "\improper Starboard Upper Engineering" + name = "\improper Upper Deck Starboard Engineering" /area/almayer/engineering/upper_engineering/port - name = "\improper Port Upper Engineering" + name = "\improper Upper Deck Port Engineering" /area/almayer/engineering/upper_engineering/notunnel flags_area = AREA_NOTUNNEL /area/almayer/engineering/ce_room - name = "\improper Chief Engineer Office" + name = "\improper Upper Deck Chief Engineer Office" icon_state = "ceroom" fake_zlevel = 1 // upperdeck -/area/almayer/engineering/lower_engine_monitoring - name = "\improper Engine Reactor Monitoring" - icon_state = "lowermonitoring" - fake_zlevel = 2 // lowerdeck - -/area/almayer/engineering/lower_engineering - name = "\improper Engineering Lower" - icon_state = "lowerengineering" - fake_zlevel = 2 // lowerdeck - -/area/almayer/engineering/engineering_workshop - name = "\improper Engineering Workshop" - icon_state = "workshop" - fake_zlevel = 2 // lowerdeck - -/area/almayer/engineering/engineering_workshop/hangar - name = "\improper Ordnance workshop" - -/area/almayer/engineering/engine_core - name = "\improper Engine Reactor Core Room" - icon_state = "coreroom" - fake_zlevel = 2 // lowerdeck - soundscape_playlist = SCAPE_PL_ENG - soundscape_interval = 15 - /area/almayer/engineering/starboard_atmos - name = "\improper Atmospherics Starboard" + name = "\improper Upper Deck Starboard Atmospherics" icon_state = "starboardatmos" fake_zlevel = 1 // upperdeck /area/almayer/engineering/port_atmos - name = "\improper Atmospherics Port" + name = "\improper Upper Deck Port Atmospherics" icon_state = "portatmos" fake_zlevel = 1 // upperdeck /area/almayer/engineering/laundry - name = "\improper Laundry Room" + name = "\improper Upper Deck Laundry Room" icon_state = "laundry" fake_zlevel = 1 // upperdeck @@ -180,19 +205,27 @@ name = "\improper Astronavigational Deck" icon_state = "astronavigation" fake_zlevel = 2 // lowerdeck + hijack_evacuation_area = TRUE + hijack_evacuation_weight = 1.1 + hijack_evacuation_type = EVACUATION_TYPE_MULTIPLICATIVE + +/area/almayer/shipboard/panic + name = "\improper Hangar Panic Room" + icon_state = "brig" + fake_zlevel = 2 // lowerdeck /area/almayer/shipboard/starboard_missiles - name = "\improper Missile Tubes Starboard" + name = "\improper Upper Deck Starboard Missile Tubes" icon_state = "starboardmissile" fake_zlevel = 1 // upperdeck /area/almayer/shipboard/port_missiles - name = "\improper Missile Tubes Port" + name = "\improper Upper Deck Port Missile Tubes" icon_state = "portmissile" fake_zlevel = 1 // upperdeck /area/almayer/shipboard/weapon_room - name = "\improper Weapon Control Room" + name = "\improper Lower Deck Weapon Control" icon_state = "weaponroom" fake_zlevel = 2 // lowerdeck @@ -200,15 +233,22 @@ flags_area = AREA_NOTUNNEL /area/almayer/shipboard/starboard_point_defense - name = "\improper Point Defense Starboard" + name = "\improper Lower Deck Starboard Point Defense" icon_state = "starboardpd" fake_zlevel = 2 // lowerdeck /area/almayer/shipboard/port_point_defense - name = "\improper Point Defense Port" + name = "\improper Lower Deck Port Point Defense" icon_state = "portpd" fake_zlevel = 2 // lowerdeck +/area/almayer/shipboard/stern_point_defense + name = "\improper Lower Deck Stern Point Defense" + icon_state = "portpd" + fake_zlevel = 2 // lowerdeck + +// brig + /area/almayer/shipboard/brig name = "\improper Brig" icon_state = "brig" @@ -216,51 +256,38 @@ /area/almayer/shipboard/brig/lobby name = "\improper Brig Lobby" - icon_state = "brig" /area/almayer/shipboard/brig/armory name = "\improper Brig Armory" - icon_state = "brig" /area/almayer/shipboard/brig/main_office name = "\improper Brig Main Office" - icon_state = "brig" /area/almayer/shipboard/brig/perma name = "\improper Brig Perma Cells" - icon_state = "brig" /area/almayer/shipboard/brig/cryo name = "\improper Brig Cryo Pods" - icon_state = "brig" /area/almayer/shipboard/brig/surgery name = "\improper Brig Surgery" - icon_state = "brig" /area/almayer/shipboard/brig/general_equipment name = "\improper Brig General Equipment" - icon_state = "brig" /area/almayer/shipboard/brig/evidence_storage name = "\improper Brig Evidence Storage" - icon_state = "brig" /area/almayer/shipboard/brig/execution name = "\improper Brig Execution Room" - icon_state = "brig" /area/almayer/shipboard/brig/cic_hallway name = "\improper Brig CiC Hallway" - icon_state = "brig" /area/almayer/shipboard/brig/dress name = "\improper CIC Dress Uniform Room" - icon_state = "brig" - /area/almayer/shipboard/brig/processing name = "\improper Brig Processing and Holding" - icon_state = "brig" /area/almayer/shipboard/brig/cells name = "\improper Brig Cells" @@ -271,7 +298,7 @@ icon_state = "chiefmpoffice" /area/almayer/shipboard/sea_office - name = "\improper Senior Enlisted Advisor Office" + name = "\improper Lower Deck Senior Enlisted Advisor Office" icon_state = "chiefmpoffice" fake_zlevel = 2 // lowerdeck @@ -297,7 +324,7 @@ soundscape_interval = 50 /area/almayer/hallways/vehiclehangar - name = "\improper Vehicle Storage" + name = "\improper Lower Deck Vehicle Storage" icon_state = "exoarmor" fake_zlevel = 2 @@ -305,130 +332,207 @@ minimap_color = MINIMAP_AREA_COLONY /area/almayer/living/tankerbunks - name = "\improper Vehicle Crew Bunks" + name = "\improper Lower Deck Vehicle Crew Bunks" + icon_state = "livingspace" + fake_zlevel = 2 + +/area/almayer/living/auxiliary_officer_office + name = "\improper Lower Deck Auxiliary Support Officer office" icon_state = "livingspace" fake_zlevel = 2 /area/almayer/squads/tankdeliveries - name = "\improper Vehicle ASRS" + name = "\improper Lower Deck Vehicle ASRS" icon_state = "req" fake_zlevel = 2 /area/almayer/hallways/exoarmor - name = "\improper Vehicle Armor Storage" + name = "\improper Lower Deck Vehicle Armor Storage" icon_state = "exoarmor" fake_zlevel = 2 // lowerdeck /area/almayer/hallways/repair_bay - name = "\improper Deployment Workshop" + name = "\improper Lower Deck Deployment Workshop" icon_state = "dropshiprepair" fake_zlevel = 2 // lowerdeck /area/almayer/hallways/mission_planner - name = "\improper Dropship Central Computer Room" + name = "\improper Lower Deck Dropship Central Computer Room" icon_state = "missionplanner" fake_zlevel = 2 // lowerdeck /area/almayer/hallways/starboard_umbilical - name = "\improper Umbilical Starboard" + name = "\improper Lower Deck Starboard Umbilical Hallway" icon_state = "starboardumbilical" fake_zlevel = 2 // lowerdeck /area/almayer/hallways/port_umbilical - name = "\improper Umbilical Port" + name = "\improper Lower Deck Port Umbilical Hallway" icon_state = "portumbilical" fake_zlevel = 2 // lowerdeck /area/almayer/hallways/aft_hallway - name = "\improper Hallway Aft" + name = "\improper Upper Deck Aft Hallway" icon_state = "aft" fake_zlevel = 1 // upperdeck /area/almayer/hallways/stern_hallway - name = "\improper Hallway Stern" + name = "\improper Upper Deck Stern Hallway" icon_state = "stern" fake_zlevel = 1 // upperdeck /area/almayer/hallways/port_hallway - name = "\improper Hallway Port" + name = "\improper Lower Deck Port Hallway" icon_state = "port" fake_zlevel = 2 // lowerdeck /area/almayer/hallways/starboard_hallway - name = "\improper Hallway Starboard" + name = "\improper Lower Deck Starboard Hallway" icon_state = "starboard" fake_zlevel = 2 // lowerdeck +//new hallways areas + +/area/almayer/hallways/upper + fake_zlevel = 1 // upperdeck + +/area/almayer/hallways/upper/port + name = "\improper Upper Deck Port Hallway" + icon_state = "port" + +/area/almayer/hallways/upper/starboard + name = "\improper Upper Deck Starboard Hallway" + icon_state = "starboard" + /area/almayer/stair_clone - name = "\improper Stairs" + name = "\improper Lower Deck Stairs" icon_state = "stairs_lowerdeck" fake_zlevel = 2 // lowerdeck resin_construction_allowed = FALSE /area/almayer/stair_clone/upper + name = "\improper Upper Deck Stairs" icon_state = "stairs_upperdeck" fake_zlevel = 1 // upperdeck -/area/almayer/hull/lower_hull - name = "\improper Hull Lower" +// maintenance areas + +/area/almayer/maint + +//lower maintenance areas + +/area/almayer/maint/lower + name = "\improper Lower Deck Maintenance" icon_state = "lowerhull" fake_zlevel = 2 // lowerdeck -/area/almayer/hull/upper_hull - name = "\improper Hull Upper" +/area/almayer/maint/lower/constr + name = "\improper Lower Deck Construction Site" + +/area/almayer/maint/lower/s_bow + name = "\improper Lower Deck Starboard-Bow Maintenance" + +/area/almayer/maint/lower/cryo_cells + name = "\improper Lower Deck Cryo Cells Maintenance" + +// Upper maintainance areas +/area/almayer/maint/upper + name = "\improper Upper Deck Maintenance" icon_state = "upperhull" fake_zlevel = 1 // upperdeck -/area/almayer/hull/upper_hull/u_f_s - name = "\improper Upper Fore-Starboard Hull" - icon_state = "upperhull" +/area/almayer/maint/upper/mess + name = "\improper Upper Deck Mess Maintenance" -/area/almayer/hull/upper_hull/u_m_s - name = "\improper Upper Midship-Starboard Hull" - icon_state = "upperhull" +/area/almayer/maint/upper/u_m_p + name = "\improper Upper Deck Port-Midship Maintenance" -/area/almayer/hull/upper_hull/u_a_s - name = "\improper Upper Aft-Starboard Hull" - icon_state = "upperhull" +/area/almayer/maint/upper/u_m_s + name = "\improper Upper Deck Starboard-Midship Maintenance" -/area/almayer/hull/upper_hull/u_f_p - name = "\improper Upper Fore-Port Hull" - icon_state = "upperhull" +// hull areas +/area/almayer/maint/hull -/area/almayer/hull/upper_hull/u_m_p - name = "\improper Upper Midship-Port Hull" - icon_state = "upperhull" +// lower deck hull areas +/area/almayer/maint/hull/lower + name = "\improper Lower Deck Hull" + icon_state = "lowerhull" + fake_zlevel = 2 // lowerdeck +// stairs. -/area/almayer/hull/upper_hull/u_a_p - name = "\improper Upper Aft-Port Hull" - icon_state = "upperhull" +/area/almayer/maint/hull/lower/stairs + name = "\improper Lower Deck Stairs Hull" -/area/almayer/hull/lower_hull/l_f_s - name = "\improper Lower Fore-Starboard Hull" - icon_state = "upperhull" +/area/almayer/maint/hull/lower/stern + name = "\improper Lower Deck Stern Hull" -/area/almayer/hull/lower_hull/l_m_s - name = "\improper Lower Midship-Starboard Hull" - icon_state = "upperhull" +/area/almayer/maint/hull/lower/p_bow + name = "\improper Lower Deck Port-Bow Hull" -/area/almayer/hull/lower_hull/l_a_s - name = "\improper Lower Aft-Starboard Hull" - icon_state = "upperhull" +/area/almayer/maint/hull/lower/s_bow + name = "\improper Lower Deck Starboard-Bow Hull" -/area/almayer/hull/lower_hull/l_f_p - name = "\improper Lower Fore-Port Hull" - icon_state = "upperhull" +/area/almayer/maint/hull/lower/l_f_s + name = "\improper Lower Deck Starboard-Fore Hull" -/area/almayer/hull/lower_hull/l_m_p - name = "\improper Lower Midship-Port Hull" - icon_state = "upperhull" +/area/almayer/maint/hull/lower/l_m_s + name = "\improper Lower Deck Starboard-Midship Hull" + +/area/almayer/maint/hull/lower/l_a_s + name = "\improper Lower Deck Starboard-Aft Hull" + +/area/almayer/maint/hull/lower/l_f_p + name = "\improper Lower Deck Port-Fore Hull" + +/area/almayer/maint/hull/lower/l_m_p + name = "\improper Lower Deck Port-Midship Hull" + +/area/almayer/maint/hull/lower/l_a_p + name = "\improper Lower Deck Port-Aft Hull" + +// upper deck hull areas -/area/almayer/hull/lower_hull/l_a_p - name = "\improper Lower Aft-Port Hull" +/area/almayer/maint/hull/upper + name = "\improper Upper Deck Hull" icon_state = "upperhull" + fake_zlevel = 1 // upperdeck + +// Stairs. +/area/almayer/maint/hull/upper/stairs + name = "\improper Upper Deck Stairs Hull" + +/area/almayer/maint/hull/upper/p_bow + name = "\improper Upper Deck Port-Bow Hull" + +/area/almayer/maint/hull/upper/s_bow + name = "\improper Upper Deck Starboard-Bow Hull" + +/area/almayer/maint/hull/upper/p_stern + name = "\improper Upper Deck Port-Stern Hull" + +/area/almayer/maint/hull/upper/s_stern + name = "\improper Upper Deck Starboard-Stern Hull" + +/area/almayer/maint/hull/upper/u_f_s + name = "\improper Upper Deck Fore-Starboard Hull" + +/area/almayer/maint/hull/upper/u_m_s + name = "\improper Upper Deck Starboard-Midship Hull" + +/area/almayer/maint/hull/upper/u_a_s + name = "\improper Upper Deck Starboard-Aft Hull" + +/area/almayer/maint/hull/upper/u_f_p + name = "\improper Upper Deck Port-Fore Hull" + +/area/almayer/maint/hull/upper/u_m_p + name = "\improper Upper Deck Port-Midship Hull" + +/area/almayer/maint/hull/upper/u_a_p + name = "\improper Upper Deck Port-Aft Hull" /area/almayer/living/cryo_cells - name = "\improper Cryo Cells" + name = "\improper Lower Deck Cryo Cells" icon_state = "cryo" fake_zlevel = 2 // lowerdeck @@ -438,22 +542,22 @@ fake_zlevel = 2 // lowerdeck /area/almayer/living/port_emb - name = "\improper Extended Mission Bunks" + name = "\improper Lower Deck Port Extended Mission Bunks" icon_state = "portemb" fake_zlevel = 2 // lowerdeck /area/almayer/living/starboard_emb - name = "\improper Extended Mission Bunks" + name = "\improper Lower Deck Starboard Extended Mission Bunks" icon_state = "starboardemb" fake_zlevel = 2 // lowerdeck /area/almayer/living/port_garden - name = "\improper Garden" + name = "\improper Port Garden" icon_state = "portemb" fake_zlevel = 1 // upperdeck /area/almayer/living/starboard_garden - name = "\improper Garden" + name = "\improper Starboard Garden" icon_state = "starboardemb" fake_zlevel = 1 // upperdeck @@ -468,12 +572,12 @@ fake_zlevel = 2 // lowerdeck /area/almayer/living/officer_rnr - name = "\improper Officer's Lounge" + name = "\improper Upper Deck Officer's Lounge" icon_state = "officerrnr" fake_zlevel = 1 // upperdeck /area/almayer/living/officer_study - name = "\improper Officer's Study" + name = "\improper Upper Deck Officer's Study" icon_state = "officerstudy" fake_zlevel = 1 // upperdeck @@ -488,17 +592,17 @@ fake_zlevel = 2 // lowerdeck /area/almayer/living/gym - name = "\improper Gym" + name = "\improper Lower Deck Gym" icon_state = "officerrnr" fake_zlevel = 2 // lowerdeck /area/almayer/living/cafeteria_officer - name = "\improper Officer Cafeteria" + name = "\improper Upper Deck Officer Cafeteria" icon_state = "food" fake_zlevel = 1 // upperdeck /area/almayer/living/offices - name = "\improper Conference Office" + name = "\improper Lower Deck Conference Office" icon_state = "briefing" fake_zlevel = 2 // lowerdeck @@ -526,7 +630,7 @@ fake_zlevel = 1 // upperdeck /area/almayer/living/synthcloset - name = "\improper Synthetic Storage Closet" + name = "\improper Upper Deck Synthetic Storage Closet" icon_state = "livingspace" fake_zlevel = 1 // upperdeck @@ -699,18 +803,21 @@ icon_state = "lifeboat_pump" requires_power = 1 fake_zlevel = 1 + hijack_evacuation_area = TRUE + hijack_evacuation_weight = 0.1 + hijack_evacuation_type = EVACUATION_TYPE_ADDITIVE /area/almayer/lifeboat_pumps/north1 - name = "North West Lifeboat Fuel Pump" + name = "Starboard Fore Lifeboat Fuel Pump" /area/almayer/lifeboat_pumps/north2 - name = "North East Lifeboat Fuel Pump" + name = "Starboard Aft Lifeboat Fuel Pump" /area/almayer/lifeboat_pumps/south1 - name = "South West Lifeboat Fuel Pump" + name = "Port Fore Lifeboat Fuel Pump" /area/almayer/lifeboat_pumps/south2 - name = "South East Lifeboat Fuel Pump" + name = "Port Aft Lifeboat Fuel Pump" /area/almayer/command/lifeboat name = "\improper Lifeboat Docking Port" @@ -723,7 +830,7 @@ flags_area = AREA_NOTUNNEL /area/space/almayer/lifeboat_dock - name = "\improper Lifeboat Docking Port" + name = "\improper Port Lifeboat Docking" icon_state = "lifeboat" fake_zlevel = 1 // upperdeck flags_area = AREA_NOTUNNEL diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 2c274665fa19..732bce1fc3ee 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -28,9 +28,6 @@ var/unique = TRUE var/has_gravity = 1 - var/area/master // master area used for power calcluations - // (original area before splitting due to sd_DAL) - var/list/related // the other areas of the same type as this // var/list/lights // list of all lights on this area var/list/all_doors = list() //Added by Strumpetplaya - Alarm Change - Contains a list of doors adjacent to this area var/air_doors_activated = 0 @@ -69,7 +66,7 @@ var/powernet_name = "default" //Default powernet name. Change to something else to make completely separate powernets var/requires_power = 1 var/unlimited_power = 0 - var/always_unpowered = 0 //this gets overriden to 1 for space in area/New() + var/always_unpowered = 0 //this gets overridden to 1 for space in area/New() //which channels are powered var/power_equip = TRUE @@ -82,6 +79,10 @@ var/used_environ = 0 var/used_oneoff = 0 //one-off power usage + /// If this area is outside the game's normal interactivity and should be excluded from things like EOR reports and crew monitors. + /// Doesn't need to be set for areas/Z levels that are marked as admin-only + var/block_game_interaction = FALSE + /area/New() // This interacts with the map loader, so it needs to be set immediately @@ -89,40 +90,40 @@ if(unique) GLOB.areas_by_type[type] = src ..() - master = src //moved outside the spawn(1) to avoid runtimes in lighting.dm when it references loc.loc.master ~Carn - related = list(src) - initialize_power_and_lighting() + initialize_power() /area/Initialize(mapload, ...) - icon_state = "" //Used to reset the icon overlay, I assume. + icon = null layer = AREAS_LAYER uid = ++global_uid . = ..() - active_areas += src - all_areas += src + GLOB.active_areas += src + GLOB.all_areas += src reg_in_areas_in_z() if(is_mainship_level(z)) GLOB.ship_areas += src -/area/proc/initialize_power_and_lighting(override_power) + if(base_lighting_alpha) + return INITIALIZE_HINT_ROUNDSTART + +/area/LateInitialize() + . = ..() + + update_base_lighting() + +/area/proc/initialize_power(override_power) if(requires_power) - luminosity = 0 if(override_power) //Reset everything if you want to override. power_light = TRUE power_equip = TRUE power_environ = TRUE - if(lighting_use_dynamic) - SetDynamicLighting() else power_light = FALSE //rastaf0 power_equip = FALSE //rastaf0 power_environ = FALSE //rastaf0 - luminosity = 1 - lighting_use_dynamic = 0 power_change() // all machines set to current power level, also updates lighting icon - InitializeLighting() /// Returns the correct ambience sound track for a client in this area /area/proc/get_sound_ambience(client/target) @@ -135,20 +136,13 @@ poweralm = state if(istype(source)) //Only report power alarms on the z-level where the source is located. var/list/cameras = list() - for (var/area/RA in related) - for (var/obj/structure/machinery/camera/C in RA) - cameras += C - if(state == 1) - C.network.Remove(CAMERA_NET_POWER_ALARMS) - else - C.network.Add(CAMERA_NET_POWER_ALARMS) - for (var/mob/living/silicon/aiPlayer in ai_mob_list) - if(aiPlayer.z == source.z) - if (state == 1) - aiPlayer.cancelAlarm("Power", src, source) - else - aiPlayer.triggerAlarm("Power", src, cameras, source) - for(var/obj/structure/machinery/computer/station_alert/a in machines) + for (var/obj/structure/machinery/camera/C in src) + cameras += C + if(state == 1) + C.network.Remove(CAMERA_NET_POWER_ALARMS) + else + C.network.Add(CAMERA_NET_POWER_ALARMS) + for(var/obj/structure/machinery/computer/station_alert/a in GLOB.machines) if(a.z == source.z) if(state == 1) a.cancelAlarm("Power", src, source) @@ -161,10 +155,9 @@ // return 0 //redudant //Check all the alarms before lowering atmosalm. Raising is perfectly fine. - for (var/area/RA in related) - for (var/obj/structure/machinery/alarm/AA in RA) - if ( !(AA.inoperable()) && !AA.shorted) - danger_level = max(danger_level, AA.danger_level) + for (var/obj/structure/machinery/alarm/AA in src) + if ( !(AA.inoperable()) && !AA.shorted) + danger_level = max(danger_level, AA.danger_level) if(danger_level != atmosalm) if (danger_level < 1 && atmosalm >= 1) @@ -172,62 +165,54 @@ air_doors_open() if (danger_level < 2 && atmosalm >= 2) - for(var/area/RA in related) - for(var/obj/structure/machinery/camera/C in RA) - C.network.Remove(CAMERA_NET_ATMOSPHERE_ALARMS) - for(var/mob/living/silicon/aiPlayer in ai_mob_list) - aiPlayer.cancelAlarm("Atmosphere", src, src) - for(var/obj/structure/machinery/computer/station_alert/a in machines) + for(var/obj/structure/machinery/camera/C in src) + C.network.Remove(CAMERA_NET_ATMOSPHERE_ALARMS) + for(var/obj/structure/machinery/computer/station_alert/a in GLOB.machines) a.cancelAlarm("Atmosphere", src, src) if (danger_level >= 2 && atmosalm < 2) var/list/cameras = list() - for(var/area/RA in related) - //updateicon() - for(var/obj/structure/machinery/camera/C in RA) - cameras += C - C.network.Add(CAMERA_NET_ATMOSPHERE_ALARMS) - for(var/mob/living/silicon/aiPlayer in ai_mob_list) - aiPlayer.triggerAlarm("Atmosphere", src, cameras, src) - for(var/obj/structure/machinery/computer/station_alert/a in machines) + //updateicon() + for(var/obj/structure/machinery/camera/C in src) + cameras += C + C.network.Add(CAMERA_NET_ATMOSPHERE_ALARMS) + for(var/obj/structure/machinery/computer/station_alert/a in GLOB.machines) a.triggerAlarm("Atmosphere", src, cameras, src) air_doors_close() atmosalm = danger_level - for(var/area/RA in related) - for (var/obj/structure/machinery/alarm/AA in RA) - AA.update_icon() + for (var/obj/structure/machinery/alarm/AA in src) + AA.update_icon() return 1 return 0 /area/proc/air_doors_close() - if(!src.master.air_doors_activated) - src.master.air_doors_activated = 1 - for(var/obj/structure/machinery/door/firedoor/E in src.master.all_doors) - if(!E:blocked) - if(E.operating) - E:nextstate = OPEN - else if(!E.density) - INVOKE_ASYNC(E, TYPE_PROC_REF(/obj/structure/machinery/door, close)) + for(var/obj/structure/machinery/door/firedoor/E in all_doors) + if(E.blocked) + continue + + if(E.operating) + E.nextstate = OPEN + else if(!E.density) + E.close() + /area/proc/air_doors_open() - if(src.master.air_doors_activated) - src.master.air_doors_activated = 0 - for(var/obj/structure/machinery/door/firedoor/E in src.master.all_doors) - if(!E:blocked) - if(E.operating) - E:nextstate = OPEN - else if(E.density) - INVOKE_ASYNC(E, TYPE_PROC_REF(/obj/structure/machinery/door, open)) + for(var/obj/structure/machinery/door/firedoor/E in all_doors) + if(E.blocked) + continue + if(E.operating) + E.nextstate = OPEN + else if(E.density) + E.open() /area/proc/firealert() if(name == "Space") //no fire alarms in space return if(!(flags_alarm_state & ALARM_WARNING_FIRE)) - flags_alarm_state |= ALARM_WARNING_FIRE - master.flags_alarm_state |= ALARM_WARNING_FIRE //used for firedoor checks + flags_alarm_state |= ALARM_WARNING_FIRE //used for firedoor checks updateicon() mouse_opacity = MOUSE_OPACITY_TRANSPARENT for(var/obj/structure/machinery/door/firedoor/D in all_doors) @@ -237,19 +222,15 @@ else if(!D.density) INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/structure/machinery/door, close)) var/list/cameras = list() - for(var/area/RA in related) - for (var/obj/structure/machinery/camera/C in RA) - cameras.Add(C) - C.network.Add(CAMERA_NET_FIRE_ALARMS) - for (var/mob/living/silicon/ai/aiPlayer in ai_mob_list) - aiPlayer.triggerAlarm("Fire", src, cameras, src) - for (var/obj/structure/machinery/computer/station_alert/a in machines) + for (var/obj/structure/machinery/camera/C in src) + cameras.Add(C) + C.network.Add(CAMERA_NET_FIRE_ALARMS) + for (var/obj/structure/machinery/computer/station_alert/a in GLOB.machines) a.triggerAlarm("Fire", src, cameras, src) /area/proc/firereset() if(flags_alarm_state & ALARM_WARNING_FIRE) - flags_alarm_state &= ~ALARM_WARNING_FIRE - master.flags_alarm_state &= ~ALARM_WARNING_FIRE //used for firedoor checks + flags_alarm_state &= ~ALARM_WARNING_FIRE //used for firedoor checks mouse_opacity = MOUSE_OPACITY_TRANSPARENT updateicon() for(var/obj/structure/machinery/door/firedoor/D in all_doors) @@ -258,12 +239,9 @@ D.nextstate = OPEN else if(D.density) INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/structure/machinery/door, open)) - for(var/area/RA in related) - for (var/obj/structure/machinery/camera/C in RA) - C.network.Remove(CAMERA_NET_FIRE_ALARMS) - for (var/mob/living/silicon/ai/aiPlayer in ai_mob_list) - aiPlayer.cancelAlarm("Fire", src, src) - for (var/obj/structure/machinery/computer/station_alert/a in machines) + for (var/obj/structure/machinery/camera/C in src) + C.network.Remove(CAMERA_NET_FIRE_ALARMS) + for (var/obj/structure/machinery/computer/station_alert/a in GLOB.machines) a.cancelAlarm("Fire", src, src) /area/proc/readyalert() @@ -278,16 +256,16 @@ /* /area/proc/toggle_evacuation() //toggles lights and creates an overlay. flags_alarm_state ^= ALARM_WARNING_EVAC - master.flags_alarm_state ^= ALARM_WARNING_EVAC + flags_alarm_state ^= ALARM_WARNING_EVAC //if(flags_alarm_state & ALARM_WARNING_EVAC) - // master.lightswitch = FALSE + // lightswitch = FALSE //lightswitch = FALSE //Lights going off. // else - // master.lightswitch = TRUE + // lightswitch = TRUE //lightswitch = TRUE //Coming on. - master.updateicon() + updateicon() - //master.power_change() + //power_change() /area/proc/toggle_shut_down() @@ -312,75 +290,72 @@ if(icon_state != I) icon_state = I //If the icon state changed, change it. Otherwise do nothing. /area/proc/powered(chan) // return true if the area has power to given channel - if(!master.requires_power) + if(!requires_power) return 1 - if(master.always_unpowered) + if(always_unpowered) return 0 switch(chan) if(POWER_CHANNEL_EQUIP) - return master.power_equip + return power_equip if(POWER_CHANNEL_LIGHT) - return master.power_light + return power_light if(POWER_CHANNEL_ENVIRON) - return master.power_environ + return power_environ return 0 /area/proc/update_power_channels(equip, light, environ) - if(!master) - CRASH("CALLED update_power_channels on non-master channel!") var/changed = FALSE - if(master.power_equip != equip) - master.power_equip = equip + if(power_equip != equip) + power_equip = equip changed = TRUE - if(master.power_light != light) - master.power_light = light + if(power_light != light) + power_light = light changed = TRUE - if(master.power_environ != environ) - master.power_environ = environ + if(power_environ != environ) + power_environ = environ changed = TRUE if(changed) //Something got changed power-wise, time for an update! power_change() // called when power status changes /area/proc/power_change() - for(var/area/RA in related) - for(var/obj/structure/machinery/M in RA) // for each machine in the area - if(!M.gc_destroyed) - M.power_change() // reverify power status (to update icons etc.) - if(flags_alarm_state) - RA.updateicon() + for(var/obj/structure/machinery/M in src) // for each machine in the area + if(!M.gc_destroyed) + M.power_change() // reverify power status (to update icons etc.) + if(flags_alarm_state) + updateicon() /area/proc/usage(chan, reset_oneoff = FALSE) var/used = 0 switch(chan) if(POWER_CHANNEL_LIGHT) - used += master.used_light + used += used_light if(POWER_CHANNEL_EQUIP) - used += master.used_equip + used += used_equip if(POWER_CHANNEL_ENVIRON) - used += master.used_environ + used += used_environ if(POWER_CHANNEL_ONEOFF) - used += master.used_oneoff + used += used_oneoff if(reset_oneoff) - master.used_oneoff = 0 + used_oneoff = 0 if(POWER_CHANNEL_TOTAL) - used += master.used_light + master.used_equip + master.used_environ + master.used_oneoff + used += used_light + used_equip + used_environ + used_oneoff if(reset_oneoff) - master.used_oneoff = 0 + used_oneoff = 0 return used /area/proc/use_power(amount, chan) switch(chan) if(POWER_CHANNEL_EQUIP) - master.used_equip += amount + used_equip += amount if(POWER_CHANNEL_LIGHT) - master.used_light += amount + used_light += amount if(POWER_CHANNEL_ENVIRON) - master.used_environ += amount + used_environ += amount if(POWER_CHANNEL_ONEOFF) - master.used_oneoff += amount + used_oneoff += amount /area/Entered(A,atom/OldLoc) if(ismob(A)) @@ -388,7 +363,7 @@ return var/mob/M = A var/area/old_area = get_area(OldLoc) - if(old_area.master == master) + if(old_area == src) return M?.client?.soundOutput?.update_ambience(src, null, TRUE) else if(istype(A, /obj/structure/machinery)) @@ -416,24 +391,21 @@ A.has_gravity = gravitystate - for(var/area/SubA in A.related) - SubA.has_gravity = gravitystate - - if(gravitystate) - for(var/mob/living/carbon/human/M in SubA) - thunk(M) - for(var/mob/M1 in SubA) - M1.make_floating(0) - else - for(var/mob/M in SubA) - if(M.Check_Dense_Object() && istype(src,/mob/living/carbon/human/)) - var/mob/living/carbon/human/H = src - if(istype(H.shoes, /obj/item/clothing/shoes/magboots) && (H.shoes.flags_inventory & NOSLIPPING)) //magboots + dense_object = no floaty effect - H.make_floating(0) - else - H.make_floating(1) + if(gravitystate) + for(var/mob/living/carbon/human/M in A) + thunk(M) + for(var/mob/M1 in A) + M1.make_floating(0) + else + for(var/mob/M in A) + if(M.Check_Dense_Object() && istype(src,/mob/living/carbon/human/)) + var/mob/living/carbon/human/H = src + if(istype(H.shoes, /obj/item/clothing/shoes/magboots) && (H.shoes.flags_inventory & NOSLIPPING)) //magboots + dense_object = no floaty effect + H.make_floating(0) else - M.make_floating(1) + H.make_floating(1) + else + M.make_floating(1) /area/proc/thunk(M) if(istype(get_turf(M), /turf/open/space)) // Can't fall onto nothing. diff --git a/code/game/area/areas_event.dm b/code/game/area/areas_event.dm index fe34d74363d5..c43dae3a65b2 100644 --- a/code/game/area/areas_event.dm +++ b/code/game/area/areas_event.dm @@ -47,20 +47,12 @@ structure: //events are not part of regular gameplay, therefore, no statistics statistic_exempt = TRUE - //no dynamic lighting - exterior_light = 0 - lighting_use_dynamic = FALSE + base_lighting_alpha = 255 //always powered requires_power = FALSE unlimited_power = TRUE -/area/event/Initialize() - . = ..() - if(exterior_light) - for(var/turf/T in contents) - T.update_lumcount(exterior_light) - //no dynamic lighting, unpowered. /area/event/unpowered name = "Open grounds (event)" @@ -75,7 +67,6 @@ structure: icon_state = "event_dyn" requires_power = TRUE unlimited_power = TRUE - lighting_use_dynamic = TRUE //no dynamic lighting, unpowered. /area/event/dynamic/unpowered @@ -83,13 +74,14 @@ structure: icon_state = "event_dyn_nopower" unlimited_power = FALSE + base_lighting_alpha = 255 //dynamic lighting, lit, powered. /area/event/dynamic/lit name = "Open grounds (event PDL)" icon_state = "event_dyn_lit" - exterior_light = 3 + base_lighting_alpha = 255 //dynamic lighting, lit, unpowered. /area/event/dynamic/lit/unpowered @@ -97,6 +89,7 @@ structure: icon_state = "event_dyn_lit_nopower" unlimited_power = FALSE + base_lighting_alpha = 255 //-----------------------CEILING_METAL-------------------------- @@ -122,7 +115,6 @@ structure: icon_state = "metal_dyn" requires_power = TRUE unlimited_power = TRUE - lighting_use_dynamic = TRUE //no dynamic lighting, unpowered. /area/event/metal/dynamic/unpowered @@ -137,7 +129,7 @@ structure: name = "Building interior (event PDL)" icon_state = "metal_dyn_lit" - exterior_light = 3 + base_lighting_alpha = 255 //dynamic lighting, lit, unpowered. /area/event/metal/dynamic/lit/unpowered @@ -176,7 +168,6 @@ structure: icon_state = "under_dyn" requires_power = TRUE unlimited_power = TRUE - lighting_use_dynamic = TRUE //no dynamic lighting, unpowered. /area/event/underground/dynamic/unpowered @@ -191,7 +182,7 @@ structure: name = "Small caves (event PDL)" icon_state = "under_dyn_lit" - exterior_light = 3 + base_lighting_alpha = 255 //dynamic lighting, lit, unpowered. /area/event/underground/dynamic/lit/unpowered @@ -232,7 +223,6 @@ structure: icon_state = "undercas_dyn" requires_power = TRUE unlimited_power = TRUE - lighting_use_dynamic = TRUE //no dynamic lighting, unpowered. /area/event/underground_no_CAS/dynamic/unpowered @@ -246,7 +236,7 @@ structure: name = "Caves (event PDL)" icon_state = "undercas_dyn_lit" - exterior_light = 3 + base_lighting_alpha = 255 //dynamic lighting, lit, unpowered. /area/event/underground_no_CAS/dynamic/lit/unpowered @@ -286,7 +276,6 @@ structure: icon_state = "deep_dyn" requires_power = TRUE unlimited_power = TRUE - lighting_use_dynamic = TRUE //no dynamic lighting, unpowered. /area/event/deep_underground/dynamic/unpowered @@ -301,7 +290,7 @@ structure: name = "Deep underground (event PDL)" icon_state = "deep_dyn_lit" - exterior_light = 3 + base_lighting_alpha = 255 //dynamic lighting, lit, unpowered. /area/event/deep_underground/dynamic/lit/unpowered diff --git a/code/game/area/chinook.dm b/code/game/area/chinook.dm index 62bbdee7bd17..b9cd440fd548 100644 --- a/code/game/area/chinook.dm +++ b/code/game/area/chinook.dm @@ -9,7 +9,6 @@ requires_power = TRUE statistic_exempt = TRUE flags_area = AREA_NOTUNNEL - lighting_use_dynamic = TRUE sound_environment = SOUND_ENVIRONMENT_ROOM unlimited_power = TRUE ceiling = CEILING_METAL diff --git a/code/game/area/kutjevo.dm b/code/game/area/kutjevo.dm index 48f18091df4a..a5a12cd5b999 100644 --- a/code/game/area/kutjevo.dm +++ b/code/game/area/kutjevo.dm @@ -8,20 +8,17 @@ icon_state = "kutjevo" can_build_special = TRUE //T-Comms structure temperature = 308.7 //kelvin, 35c, 95f - lighting_use_dynamic = 1 minimap_color = MINIMAP_AREA_ENGI /area/shuttle/drop1/kutjevo name = "Kutjevo - Dropship Alamo Landing Zone" icon_state = "shuttle" icon = 'icons/turf/area_kutjevo.dmi' - lighting_use_dynamic = 1 /area/shuttle/drop2/kutjevo name = "Kutjevo - Dropship Normandy Landing Zone" icon_state = "shuttle2" icon = 'icons/turf/area_kutjevo.dmi' - lighting_use_dynamic = 1 /area/kutjevo/exterior name = "Kutjevo - Exterior" @@ -70,6 +67,10 @@ name = "Kutjevo - Power Station River" icon_state = "lz_river" +/area/kutjevo/exterior/spring + name = "Kutjevo - Southern Spring" + icon_state = "lz_river" + /area/kutjevo/exterior/scrubland name = "Kutjevo - Scrubland" icon_state = "scrubland" diff --git a/code/game/area/prison_v3_fiorina.dm b/code/game/area/prison_v3_fiorina.dm index deb5d8758784..9c60f8173ab8 100644 --- a/code/game/area/prison_v3_fiorina.dm +++ b/code/game/area/prison_v3_fiorina.dm @@ -8,7 +8,6 @@ icon_state = "fiorina" can_build_special = TRUE //T-Comms structure temperature = T20C - lighting_use_dynamic = 1 ceiling = CEILING_GLASS minimap_color = MINIMAP_AREA_COLONY @@ -71,14 +70,13 @@ name = "Fiorina - LZ" is_landing_zone = TRUE minimap_color = MINIMAP_AREA_LZ + is_resin_allowed = FALSE /area/fiorina/lz/near_lzI name = "Fiorina - LZ1 Aux Port" - is_resin_allowed = FALSE /area/fiorina/lz/near_lzII name = "Fiorina - LZ2 Prison Port" - is_resin_allowed = FALSE /area/fiorina/lz/console_I name = "Fiorina - LZ1 Control Console" diff --git a/code/game/area/shiva.dm b/code/game/area/shiva.dm index 8ca47c03e5ca..e4939cd67e1e 100644 --- a/code/game/area/shiva.dm +++ b/code/game/area/shiva.dm @@ -7,14 +7,12 @@ icon_state = "shiva" can_build_special = TRUE //T-Comms structure temperature = ICE_COLONY_TEMPERATURE - lighting_use_dynamic = TRUE minimap_color = MINIMAP_AREA_COLONY /area/shuttle/drop1/shiva name = "Shiva's Snowball - Dropship Alamo Landing Zone" icon_state = "shuttle" icon = 'icons/turf/area_shiva.dmi' - lighting_use_dynamic = TRUE is_resin_allowed = FALSE minimap_color = MINIMAP_AREA_LZ @@ -22,7 +20,6 @@ name = "Shiva's Snowball - Dropship Normandy Landing Zone" icon_state = "shuttle2" icon = 'icons/turf/area_shiva.dmi' - lighting_use_dynamic = TRUE is_resin_allowed = FALSE minimap_color = MINIMAP_AREA_LZ diff --git a/code/game/area/shuttles.dm b/code/game/area/shuttles.dm index f61f13097d12..62c42406e795 100644 --- a/code/game/area/shuttles.dm +++ b/code/game/area/shuttles.dm @@ -1,13 +1,15 @@ /area/shuttle name = "Shuttle" requires_power = FALSE + unlimited_power = TRUE always_unpowered = FALSE icon_state = "shuttle" ceiling_muffle = TRUE // Loading the same shuttle map at a different time will produce distinct area instances. unique = FALSE - lighting_use_dynamic = FALSE + + base_lighting_alpha = 255 ///area/shuttle/Initialize() @@ -37,6 +39,7 @@ name = "Hyperspace" desc = "Weeeeee" ambience_exterior = 'sound/ambience/shuttle_fly_loop.ogg' + base_lighting_alpha = 255 /area/shuttle/vehicle_elevator name = "Vehicle ASRS" @@ -52,7 +55,7 @@ /area/shuttle/trijent_shuttle/elevator requires_power = TRUE - lighting_use_dynamic = FALSE + unlimited_power = FALSE powernet_name = "ground" /area/shuttle/trijent_shuttle/lz1 @@ -66,6 +69,7 @@ /area/shuttle/trijent_shuttle/omega name = "Trijent Omega" + /area/shuttle/escape_pod icon = 'icons/turf/area_almayer.dmi' icon_state = "lifeboat" diff --git a/code/game/area/space_station_13_areas.dm b/code/game/area/space_station_13_areas.dm index 226ca555cd57..df5e54a77013 100644 --- a/code/game/area/space_station_13_areas.dm +++ b/code/game/area/space_station_13_areas.dm @@ -18,7 +18,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "\improper Space" requires_power = 1 always_unpowered = 1 - lighting_use_dynamic = 0 + base_lighting_alpha = 255 power_light = FALSE power_equip = FALSE power_environ = FALSE @@ -39,7 +39,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station ceiling = CEILING_METAL /area/admin/droppod - lighting_use_dynamic = FALSE + base_lighting_alpha = 255 /area/admin/droppod/holding name = "\improper Admin Supply Drops Droppod" @@ -56,9 +56,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "start area" icon_state = "start" ceiling = CEILING_MAX - requires_power = 0 - luminosity = 1 - lighting_use_dynamic = 0 + requires_power = FALSE + static_lighting = FALSE + base_lighting_alpha = 255 has_gravity = 1 // === end remove @@ -72,6 +72,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station statistic_exempt = TRUE ceiling = CEILING_METAL + base_lighting_alpha = 255 + /area/centcom/control name = "\improper abandoned Centcom Control" @@ -86,6 +88,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station statistic_exempt = TRUE ceiling = CEILING_METAL + base_lighting_alpha = 255 + /area/tdome/tdome1 name = "\improper abandoned Thunderdome (Team 1)" icon_state = "green" diff --git a/code/game/area/strata.dm b/code/game/area/strata.dm index 91bdff277c3d..117cffa600d4 100644 --- a/code/game/area/strata.dm +++ b/code/game/area/strata.dm @@ -18,14 +18,16 @@ EXTERIOR is FUCKING FREEZING, and refers to areas out in the open and or exposed /area/shuttle/drop1/strata //Not in Sulaco.DM because holy shit we need to sort things. name = "Dropship Alamo Landing Zone" icon_state = "shuttle" - lighting_use_dynamic = 0 //No bad + base_lighting_alpha = 255 minimap_color = MINIMAP_AREA_LZ + is_resin_allowed = FALSE /area/shuttle/drop2/strata name = "Dropship Normandy Landing Zone" icon_state = "shuttle2" - lighting_use_dynamic = 0 + base_lighting_alpha = 255 minimap_color = MINIMAP_AREA_LZ + is_resin_allowed = FALSE /area/strata/ag name = "Above Ground Area" @@ -50,6 +52,10 @@ EXTERIOR is FUCKING FREEZING, and refers to areas out in the open and or exposed temperature = T20C //Nice and room temp ceiling = CEILING_METAL +/area/strata/ag/interior/mountain + name = "Outside mountain" + icon_state = "ag_e" + /area/strata/ag/interior/restricted is_resin_allowed = FALSE flags_area = AREA_NOTUNNEL @@ -88,6 +94,7 @@ EXTERIOR is FUCKING FREEZING, and refers to areas out in the open and or exposed unlimited_power = 1 //So the DS computer always works for the Queen is_landing_zone = TRUE minimap_color = MINIMAP_AREA_LZ + is_resin_allowed = FALSE /area/strata/ag/exterior/landingzone_2 name = "Landing Zone 2 Pad - Ice Fields" @@ -96,6 +103,7 @@ EXTERIOR is FUCKING FREEZING, and refers to areas out in the open and or exposed unlimited_power = 1 //So the DS computer always works for the Queen is_landing_zone = TRUE minimap_color = MINIMAP_AREA_LZ + is_resin_allowed = FALSE /area/strata/ag/interior/nearlz1 name = "Landing Zone 1 - Mining Aerodrome" @@ -109,6 +117,7 @@ EXTERIOR is FUCKING FREEZING, and refers to areas out in the open and or exposed icon_state = "nearlz2" weather_enabled = TRUE //This LZ is outside, but consider disabling if it destroys the meta. minimap_color = MINIMAP_AREA_LZ + is_resin_allowed = FALSE /area/strata/ag/exterior/landingzone_valley name = "Landing Zone Valley" diff --git a/code/game/area/techtree.dm b/code/game/area/techtree.dm index 70b70e3852be..24510562ab57 100644 --- a/code/game/area/techtree.dm +++ b/code/game/area/techtree.dm @@ -1,5 +1,5 @@ /area/techtree - lighting_use_dynamic = FALSE + base_lighting_alpha = 255 ceiling = CEILING_MAX requires_power = 0 ambience_exterior = AMBIENCE_ALMAYER diff --git a/code/game/area/varadero.dm b/code/game/area/varadero.dm index a0d005d4aa1d..682f3ded1c66 100644 --- a/code/game/area/varadero.dm +++ b/code/game/area/varadero.dm @@ -4,12 +4,10 @@ /area/varadero name = "New Varadero" icon = 'icons/turf/area_varadero.dmi' - ambience_exterior = AMBIENCE_LV624 - sound_environment = SOUND_ENVIRONMENT_MOUNTAINS + ambience_exterior = AMBIENCE_NV icon_state = "varadero" can_build_special = TRUE //T-Comms structure temperature = TROPICAL_TEMP - lighting_use_dynamic = TRUE minimap_color = MINIMAP_AREA_COLONY //shuttle stuff @@ -18,7 +16,6 @@ name = "New Varadero - Dropship Alamo Landing Zone" icon_state = "shuttle" icon = 'icons/turf/area_varadero.dmi' - lighting_use_dynamic = TRUE is_resin_allowed = FALSE minimap_color = MINIMAP_AREA_LZ @@ -27,7 +24,6 @@ name = "New Varadero - Dropship Normandy Landing Zone" icon_state = "shuttle2" icon = 'icons/turf/area_varadero.dmi' - lighting_use_dynamic = TRUE is_resin_allowed = FALSE minimap_color = MINIMAP_AREA_LZ @@ -36,49 +32,43 @@ /area/varadero/exterior name = "New Varadero - Exterior" ceiling = CEILING_NONE - ambience_exterior = AMBIENCE_LV624 + ambience_exterior = AMBIENCE_NV //soundscape_playlist - sound_environment = SOUND_ENVIRONMENT_MOUNTAINS /area/varadero/interior name = "New Varadero - Interior" - ceiling = CEILING_UNDERGROUND_ALLOW_CAS + ceiling = CEILING_GLASS ambience_exterior = AMBIENCE_PRISON //soundscape_playlist sound_environment = SOUND_ENVIRONMENT_ROOM /area/varadero/interior_protected name = "New Varadero - Interior" - ceiling = CEILING_DEEP_UNDERGROUND - icon_state = "NV_no_OB" + ceiling = CEILING_UNDERGROUND_BLOCK_CAS + sound_environment = SOUND_ENVIRONMENT_AUDITORIUM + icon_state = "NV_no_CAS" /area/varadero/interior/comms1 name = "New Varadero - Cargo Generator" + is_resin_allowed = FALSE icon_state = "comms1" + minimap_color = MINIMAP_AREA_ENGI_CAVE /area/varadero/interior/comms2 name = "New Varadero - Communications Project Site" - is_resin_allowed = FALSE icon_state = "comms2" + minimap_color = MINIMAP_AREA_ENGI_CAVE /area/varadero/interior/comms3 - name = "New Varadero - Fishing Hole" - is_resin_allowed = FALSE + name = "New Varadero - Engineering Communications" icon_state = "comms3" + minimap_color = MINIMAP_AREA_ENGI_CAVE /area/varadero/exterior/comms4 name = "New Varadero - Walkway Extension" - icon_state = "comms4" - -/area/varadero/exterior/eastbeach - name = "New Varadero - East Beach" - icon_state = "varadero1" - -/area/varadero/exterior/eastocean - name = "New Varadero - East Ocean" is_resin_allowed = FALSE - flags_area = AREA_NOTUNNEL - icon_state = "varadero2" + icon_state = "comms4" + minimap_color = MINIMAP_AREA_ENGI_CAVE /area/varadero/interior/oob name = "New Varadero - Out Of Bounds" @@ -119,9 +109,55 @@ name = "New Varadero - Rockabilly Beach" icon_state = "varadero0" is_resin_allowed = FALSE + minimap_color = MINIMAP_AREA_JUNGLE + +/area/varadero/exterior/eastbeach + name = "New Varadero - East Beach" + is_resin_allowed = FALSE + icon_state = "varadero1" + minimap_color = MINIMAP_AREA_JUNGLE + +/area/varadero/exterior/monsoon + name = "New Varadero - Monsoon" + icon_state = "varadero1" + minimap_color = MINIMAP_AREA_JUNGLE + +/area/varadero/exterior/pool + name = "New Varadero - Interior Pool" + icon_state = "varadero1" + minimap_color = MINIMAP_AREA_COMMAND_CAVE + +/area/varadero/exterior/eastocean + name = "New Varadero - East Ocean" + is_resin_allowed = FALSE + flags_area = AREA_NOTUNNEL + icon_state = "varadero2" + minimap_color = MINIMAP_AREA_CONTESTED_ZONE + +/area/varadero/exterior/farocean + name = "New Varadero - Far Ocean" + is_resin_allowed = FALSE + flags_area = AREA_NOTUNNEL + icon_state = "varadero3" + minimap_color = MINIMAP_AREA_CONTESTED_ZONE //interior areas + +/area/varadero/interior/beach_bar + name = "New Varadero - Beach Bar" + icon_state = "varadero4" + is_resin_allowed = FALSE + minimap_color = MINIMAP_AREA_JUNGLE + sound_environment = SOUND_ENVIRONMENT_ROOM + +/area/varadero/interior/dock_control + name = "New Varadero - Dock Control" + icon_state = "varadero3" + is_resin_allowed = FALSE + minimap_color = MINIMAP_AREA_JUNGLE + sound_environment = SOUND_ENVIRONMENT_ROOM + /area/varadero/interior/cargo name = "New Varadero - Cargo" icon_state = "req0" @@ -145,15 +181,18 @@ name = "New Vardero - Chapel" icon_state = "offices1" is_resin_allowed = FALSE + minimap_color = MINIMAP_AREA_COMMAND_CAVE /area/varadero/interior/morgue name = "New Varadero - Morgue" icon_state = "offices0" is_resin_allowed = FALSE + minimap_color = MINIMAP_AREA_MEDBAY_CAVE /area/varadero/interior/medical name = "New Varadero - Medical" icon_state = "offices2" + minimap_color = MINIMAP_AREA_MEDBAY /area/varadero/interior/maintenance name = "New Varadero - Central Maintenance" @@ -167,10 +206,12 @@ /area/varadero/interior/maintenance/research name = "New Varadero - Research Maintenance" icon_state = "tunnels1" + minimap_color = MINIMAP_AREA_RESEARCH_CAVE /area/varadero/interior/maintenance/security name = "New Varadero - Security Maintenance" icon_state = "tunnels2" + minimap_color = MINIMAP_AREA_SEC_CAVE /area/varadero/interior/research name = "New Varadero - Research Offices" @@ -180,6 +221,7 @@ /area/varadero/interior/electrical name = "New Varadero - Electrical Annex" icon_state = "req4" + minimap_color = MINIMAP_AREA_ENGI /area/varadero/interior/toilets name = "New Varadero - Restrooms" @@ -188,6 +230,7 @@ /area/varadero/interior/technical_storage name = "New Varadero - Technical Storage" icon_state = "req3" + minimap_color = MINIMAP_AREA_ENGI /area/varadero/interior/laundry name = "New Varadero - Laundry" @@ -196,31 +239,38 @@ /area/varadero/interior/disposals name = "New Varadero - Disposals" icon_state = "offices4" + minimap_color = MINIMAP_AREA_ENGI /area/varadero/interior/administration name = "New Varadero - Administrative Offices" icon_state = "offices2" + minimap_color = MINIMAP_AREA_COMMAND /area/varadero/interior/library name = "New Varadero - Library" icon_state = "offices0" is_resin_allowed = FALSE + minimap_color = MINIMAP_AREA_COMMAND_CAVE /area/varadero/interior/court name = "New Varadero - Basketball Court" icon_state = "req4" + minimap_color = MINIMAP_AREA_COMMAND_CAVE /area/varadero/interior/mess name = "New Varadero - Mess Hall" icon_state = "req2" + minimap_color = MINIMAP_AREA_COMMAND_CAVE /area/varadero/interior/bunks name = "New Varadero - Level 1 Quarters" icon_state = "req3" + minimap_color = MINIMAP_AREA_JUNGLE /area/varadero/interior/security name = "New Varadero - Security Offices" icon_state = "offices0" + minimap_color = MINIMAP_AREA_SEC /area/varadero/interior/records name = "New Varadero - Records" @@ -236,14 +286,12 @@ power_light = FALSE power_equip = FALSE power_environ = FALSE - luminosity = 0 - lighting_use_dynamic = 1 + sound_environment = SOUND_ENVIRONMENT_AUDITORIUM minimap_color = MINIMAP_AREA_CAVES /area/varadero/interior/caves/north_research name = "New Varadero - North Research Caves" icon_state = "tunnels4" - minimap_color = MINIMAP_AREA_RESEARCH_CAVE /area/varadero/interior/caves/east name = "New Varadero - Beach Caves" @@ -255,22 +303,26 @@ power_light = FALSE power_equip = FALSE power_environ = FALSE - luminosity = 0 - lighting_use_dynamic = 1 minimap_color = MINIMAP_AREA_RESEARCH_CAVE /area/varadero/interior_protected/caves/central name = "New Varadero - Grass Caves" icon_state = "deepcaves2" + minimap_color = MINIMAP_AREA_CAVES /area/varadero/interior_protected/caves/digsite name = "New Varadero - Dig Site" icon_state = "deepcaves3" +/area/varadero/interior_protected/caves/swcaves + name = "New Varadero - Southwest Caves" + icon_state = "deepcaves3" + /area/varadero/interior_protected/maintenance/south name = "New Varadero - Southern Maintenance" icon_state = "deepcaves4" + minimap_color = MINIMAP_AREA_CAVES /area/varadero/interior_protected/vessel name = "New Varadero - Unknown Vessel" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 937c19b4512b..5f36b3b8b390 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -33,8 +33,11 @@ var/list/filter_data //For handling persistent filters - // Base transform matrix - var/matrix/base_transform = null + /// Base transform matrix, edited by admin tooling and such + var/matrix/base_transform + /// Last transform used before being compound with base_transform + /// This allows us to re-create transform if only base_transform changes + var/matrix/raw_transform ///Chemistry. var/datum/reagents/reagents = null @@ -59,6 +62,36 @@ ///Default pixel y shifting for the atom's icon. var/base_pixel_y = 0 + //light stuff + + ///Light systems, only one of the three should be active at the same time. + var/light_system = STATIC_LIGHT + ///Range of the light in tiles. Zero means no light. + var/light_range = 0 + ///Intensity of the light. The stronger, the less shadows you will see on the lit area. + var/light_power = 1 + ///Hexadecimal RGB string representing the colour of the light. White by default. + var/light_color = COLOR_WHITE + ///Boolean variable for toggleable lights. Has no effect without the proper light_system, light_range and light_power values. + var/light_on = FALSE + ///Bitflags to determine lighting-related atom properties. + var/light_flags = NONE + ///Our light source. Don't fuck with this directly unless you have a good reason! + var/tmp/datum/dynamic_light_source/light + ///Any light sources that are "inside" of us, for example, if src here was a mob that's carrying a flashlight, that flashlight's light source would be part of this list. + var/tmp/list/hybrid_light_sources + + //Values should avoid being close to -16, 16, -48, 48 etc. + //Best keep them within 10 units of a multiple of 32, as when the light is closer to a wall, the probability + //that a shadow extends to opposite corners of the light mask square is increased, resulting in more shadow + //overlays. + ///x offset for dynamic lights on this atom + var/light_pixel_x + ///y offset for dynamic lights on this atom + var/light_pixel_y + ///typepath for the lighting maskfor dynamic light sources + var/light_mask_type = null + ///The color this atom will be if we choose to draw it on the minimap var/minimap_color = MINIMAP_SOLID @@ -77,7 +110,7 @@ Make sure the return value equals the return value of the parent so that the directive is properly returned. */ //=========================================================================== -/atom/Destroy() +/atom/Destroy(force) orbiters = null // The component is attached to us normally and will be deleted elsewhere QDEL_NULL(reagents) QDEL_NULL(light) @@ -86,7 +119,14 @@ directive is properly returned. //=========================================================================== - +// TODO make all atoms use set_density, do not rely on it at present +///Setter for the `density` variable to append behavior related to its changing. +/atom/proc/set_density(new_value) + SHOULD_CALL_PARENT(TRUE) + if(density == new_value) + return + . = density + density = new_value //atmos procs @@ -111,15 +151,27 @@ directive is properly returned. if(loc) return loc.return_gas() -// Updates the atom's transform -/atom/proc/apply_transform(matrix/M) - if(!base_transform) - transform = M - return +/// Updates the atom's transform compounding it with [/atom/var/base_transform] +/atom/proc/apply_transform(matrix/new_transform, time = 0, easing = (EASE_IN|EASE_OUT)) + var/matrix/base_copy + if(base_transform) + base_copy = matrix(base_transform) + else + base_copy = matrix() + raw_transform = matrix(new_transform) // Keep a copy to replay if needed - var/matrix/base_copy = matrix(base_transform) // Compose the base and applied transform in that order - transform = base_copy.Multiply(M) + var/matrix/complete = base_copy.Multiply(raw_transform) + + if(!time) + transform = complete + return + animate(src, transform = complete, time = time, easing = easing, flags = ANIMATION_PARALLEL) + +/// Upates the base_transform which will be compounded with other transforms +/atom/proc/update_base_transform(matrix/new_transform, time = 0) + base_transform = matrix(new_transform) + apply_transform(raw_transform, time) /atom/proc/on_reagent_change() return @@ -153,7 +205,9 @@ directive is properly returned. return /atom/proc/emp_act(severity) - return + SHOULD_CALL_PARENT(TRUE) + + SEND_SIGNAL(src, COMSIG_ATOM_EMP_ACT, severity) /atom/proc/in_contents_of(container)//can take class or object instance as argument if(ispath(container)) @@ -193,8 +247,8 @@ directive is properly returned. if(!examine_strings) log_debug("Attempted to create an examine block with no strings! Atom : [src], user : [user]") return - to_chat(user, examine_block(examine_strings.Join("\n"))) SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user, examine_strings) + to_chat(user, examine_block(examine_strings.Join("\n"))) /atom/proc/get_examine_text(mob/user) . = list() @@ -327,11 +381,17 @@ Parameters are passed from New. CRASH("Warning: [src]([type]) initialized multiple times!") flags_atom |= INITIALIZED - pass_flags = pass_flags_cache[type] + if(light_system != MOVABLE_LIGHT && light_system != DIRECTIONAL_LIGHT && light_power && light_range) + update_light() + if(isturf(loc) && opacity) + var/turf/opaque_turf = loc + opaque_turf.directional_opacity = ALL_CARDINALS // No need to recalculate it in this case, it's guaranteed to be on afterwards anyways. + + pass_flags = GLOB.pass_flags_cache[type] if (isnull(pass_flags)) pass_flags = new() initialize_pass_flags(pass_flags) - pass_flags_cache[type] = pass_flags + GLOB.pass_flags_cache[type] = pass_flags else initialize_pass_flags() Decorate(mapload) @@ -358,7 +418,7 @@ Parameters are passed from New. T.appearance = src.appearance T.setDir(src.dir) - clones_t.Add(src) + GLOB.clones_t.Add(src) src.clone = T // EFFECTS @@ -439,7 +499,7 @@ Parameters are passed from New. return TRUE if(href_list["desc_lore"]) - show_browser(usr, "[replacetext(desc_lore, "\n", "
")]
", name, name, "size=500x200") + show_browser(usr, "[replacetext(desc_lore, "\n", "
")]
", name, name, "size=500x500") onclose(usr, "[name]") ///This proc is called on atoms when they are loaded into a shuttle @@ -569,6 +629,37 @@ Parameters are passed from New. var/icon/I = icon(icon, icon_state, dir) return (I.Width() + I.Height()) * 0.5 +/** + * If this object has lights, turn it on/off. + * user: the mob actioning this + * toggle_on: if TRUE, will try to turn ON the light. Opposite if FALSE + * cooldown: how long until you can toggle the light on/off again + * sparks: if a spark effect will be generated + * forced: if TRUE and toggle_on = FALSE, will cause the light to turn on in cooldown second + * originated_turf: if not null, will check if the obj_turf is closer than distance_max to originated_turf, and the proc will return if not + * distance_max: used to check if originated_turf is close to obj.loc +*/ +/atom/proc/turn_light(mob/user, toggle_on , cooldown = 1 SECONDS, sparks = FALSE, forced = FALSE, light_again = FALSE) + if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_LIGHT) && !forced) + return STILL_ON_COOLDOWN + if(cooldown <= 0) + cooldown = 1 SECONDS + TIMER_COOLDOWN_START(src, COOLDOWN_LIGHT, cooldown) + if(toggle_on == light_on) + return NO_LIGHT_STATE_CHANGE + if(light_again && !toggle_on) //Is true when turn light is called by nightfall and the light is already on + addtimer(CALLBACK(src, PROC_REF(reset_light)), cooldown + 1) + if(sparks && light_on) + var/datum/effect_system/spark_spread/spark_system = new + spark_system.set_up(5, 0, src) + spark_system.attach(src) + spark_system.start(src) + return CHECKS_PASSED + +///Turn on the light, should be called by a timer +/atom/proc/reset_light() + turn_light(null, TRUE, 1 SECONDS, FALSE, TRUE) + /** * Return the markup to for the dropdown list for the VV panel for this atom * @@ -580,7 +671,7 @@ Parameters are passed from New. if(!ismovable(src)) var/turf/curturf = get_turf(src) if(curturf) - . += "" + . += "" VV_DROPDOWN_OPTION(VV_HK_MODIFY_TRANSFORM, "Modify Transform") VV_DROPDOWN_OPTION(VV_HK_ADD_REAGENT, "Add Reagent") VV_DROPDOWN_OPTION(VV_HK_TRIGGER_EMP, "EMP Pulse") @@ -632,10 +723,9 @@ Parameters are passed from New. usr.client.cmd_admin_emp(src) if(href_list[VV_HK_MODIFY_TRANSFORM] && check_rights(R_VAREDIT)) - var/result = tgui_input_list(usr, "Choose the transformation to apply","Transform Mod", list("Scale","Translate","Rotate")) + var/result = tgui_input_list(usr, "Choose the transformation to apply","Transform Mod", list("Scale","Translate","Rotate", "Reflect X Axis", "Reflect Y Axis")) if(!result) return - var/matrix/M = transform if(!result) return switch(result) @@ -644,19 +734,37 @@ Parameters are passed from New. var/y = tgui_input_real_number(usr, "Choose y mod","Transform Mod") if(isnull(x) || isnull(y)) return - transform = M.Scale(x,y) + var/matrix/base_matrix = matrix(base_transform) + update_base_transform(base_matrix.Scale(x,y)) if("Translate") var/x = tgui_input_real_number(usr, "Choose x mod (negative = left, positive = right)","Transform Mod") var/y = tgui_input_real_number(usr, "Choose y mod (negative = down, positive = up)","Transform Mod") if(isnull(x) || isnull(y)) return - transform = M.Translate(x,y) + var/matrix/base_matrix = matrix(base_transform) + update_base_transform(base_matrix.Translate(x,y)) if("Rotate") var/angle = tgui_input_real_number(usr, "Choose angle to rotate","Transform Mod") if(isnull(angle)) return - transform = M.Turn(angle) - + var/matrix/base_matrix = matrix(base_transform) + update_base_transform(base_matrix.Turn(angle)) + if("Reflect X Axis") + var/matrix/current = matrix(base_transform) + var/matrix/reflector = matrix() + reflector.a = -1 + reflector.d = 0 + reflector.b = 0 + reflector.e = 1 + update_base_transform(current * reflector) + if("Reflect Y Axis") + var/matrix/current = matrix(base_transform) + var/matrix/reflector = matrix() + reflector.a = 1 + reflector.d = 0 + reflector.b = 0 + reflector.e = -1 + update_base_transform(current * reflector) SEND_SIGNAL(src, COMSIG_ATOM_VV_MODIFY_TRANSFORM) if(href_list[VV_HK_AUTO_RENAME] && check_rights(R_VAREDIT)) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 6b980136bc9e..21f7b6b0a9be 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -21,13 +21,24 @@ var/datum/component/orbiter/orbiting + /// Either FALSE, [EMISSIVE_BLOCK_GENERIC], or [EMISSIVE_BLOCK_UNIQUE] + var/blocks_emissive = FALSE + ///Internal holder for emissive blocker object, do not use directly use blocks_emissive + var/atom/movable/emissive_blocker/em_block + + ///Lazylist to keep track on the sources of illumination. + var/list/affected_movable_lights + ///Highest-intensity light affecting us, which determines our visibility. + var/affecting_dynamic_lumi = 0 + //=========================================================================== -/atom/movable/Destroy() +/atom/movable/Destroy(force) for(var/atom/movable/I in contents) qdel(I) if(pulledby) pulledby.stop_pulling() QDEL_NULL(launch_metadata) + QDEL_NULL(em_block) if(loc) loc.on_stored_atom_del(src) //things that container need to do when a movable atom inside it is deleted @@ -38,6 +49,9 @@ . = ..() moveToNullspace() //so we move into null space. Must be after ..() b/c atom's Dispose handles deleting our lighting stuff + QDEL_NULL(light) + QDEL_NULL(static_light) + //=========================================================================== //Overlays @@ -60,6 +74,48 @@ return src.master.attack_hand(a, b, c) return +/atom/movable/Initialize(mapload, ...) + . = ..() + switch(blocks_emissive) + if(EMISSIVE_BLOCK_GENERIC) + var/mutable_appearance/gen_emissive_blocker = mutable_appearance(icon, icon_state, plane = EMISSIVE_PLANE, alpha = src.alpha) + gen_emissive_blocker.color = GLOB.em_block_color + gen_emissive_blocker.dir = dir + gen_emissive_blocker.appearance_flags |= appearance_flags + overlays += gen_emissive_blocker + if(EMISSIVE_BLOCK_UNIQUE) + render_target = ref(src) + em_block = new(src, render_target) + overlays += list(em_block) + if(opacity) + AddElement(/datum/element/light_blocking) + if(light_system == MOVABLE_LIGHT) + AddComponent(/datum/component/overlay_lighting) + if(light_system == DIRECTIONAL_LIGHT) + AddComponent(/datum/component/overlay_lighting, is_directional = TRUE) + +/* + +///Updates this movables emissive overlay +/atom/movable/proc/update_emissive_block() + if(!blocks_emissive) + return + else if (blocks_emissive == EMISSIVE_BLOCK_GENERIC) + var/mutable_appearance/gen_emissive_blocker = emissive_blocker(icon, icon_state, alpha = src.alpha, appearance_flags = src.appearance_flags) + gen_emissive_blocker.dir = dir + if(blocks_emissive == EMISSIVE_BLOCK_UNIQUE) + if(!em_block) + render_target = ref(src) + em_block = new(src, render_target) + return em_block + +/atom/movable/update_overlays() + . = ..() + + . += update_emissive_block() + +*/ + /atom/movable/vv_get_dropdown() . = ..() VV_DROPDOWN_OPTION(VV_HK_EDIT_PARTICLES, "Edit Particles") @@ -74,6 +130,23 @@ var/client/C = usr.client C?.open_particle_editor(src) +/atom/movable/vv_edit_var(var_name, var_value) + var/static/list/banned_edits = list(NAMEOF_STATIC(src, step_x) = TRUE, NAMEOF_STATIC(src, step_y) = TRUE, NAMEOF_STATIC(src, step_size) = TRUE, NAMEOF_STATIC(src, bounds) = TRUE) + var/static/list/careful_edits = list(NAMEOF_STATIC(src, bound_x) = TRUE, NAMEOF_STATIC(src, bound_y) = TRUE, NAMEOF_STATIC(src, bound_width) = TRUE, NAMEOF_STATIC(src, bound_height) = TRUE) + var/static/list/not_falsey_edits = list(NAMEOF_STATIC(src, bound_width) = TRUE, NAMEOF_STATIC(src, bound_height) = TRUE) + if(banned_edits[var_name]) + return FALSE //PLEASE no. + if(careful_edits[var_name] && (var_value % world.icon_size) != 0) + return FALSE + if(not_falsey_edits[var_name] && !var_value) + return FALSE + + if(!isnull(.)) + datum_flags |= DF_VAR_EDITED + return + + return ..() + //when a mob interact with something that gives them a special view, //check_eye() is called to verify that they're still eligible. //if they are not check_eye() usually reset the mob's view. @@ -198,7 +271,7 @@ /atom/movable/clone/get_examine_text(mob/user) return src.mstr.get_examine_text(user) -/atom/movable/clone/bullet_act(obj/item/projectile/P) +/atom/movable/clone/bullet_act(obj/projectile/P) return src.mstr.bullet_act(P) ///////////////////// @@ -208,7 +281,7 @@ C.proj_x = shift_x C.proj_y = shift_y - clones.Add(C) + GLOB.clones.Add(C) C.mstr = src //Link clone and master src.clone = C @@ -234,13 +307,13 @@ if(light) //Clone lighting if(!clone.light) - clone.SetLuminosity(luminosity) //Create clone light + clone.set_light(luminosity) //Create clone light else if(clone.light) - clone.SetLuminosity(0) //Kill clone light + clone.set_light(0) //Kill clone light /atom/movable/proc/destroy_clone() - clones.Remove(src.clone) + GLOB.clones.Remove(src.clone) qdel(src.clone) src.clone = null @@ -262,3 +335,23 @@ //if((force < (move_resist * MOVE_FORCE_THROW_RATIO)) || (move_resist == INFINITY)) // return return throw_atom(target, range, speed, thrower, spin) + +///Keeps track of the sources of dynamic luminosity and updates our visibility with the highest. +/atom/movable/proc/update_dynamic_luminosity() + var/highest = 0 + for(var/i in affected_movable_lights) + if(affected_movable_lights[i] <= highest) + continue + highest = affected_movable_lights[i] + if(highest == affecting_dynamic_lumi) + return + luminosity -= affecting_dynamic_lumi + affecting_dynamic_lumi = highest + luminosity += affecting_dynamic_lumi + + +///Helper to change several lighting overlay settings. +/atom/movable/proc/set_light_range_power_color(range, power, color) + set_light_range(range) + set_light_power(power) + set_light_color(color) diff --git a/code/game/bioscans.dm b/code/game/bioscans.dm index 474786e1ffae..5be3c9fbe3fd 100644 --- a/code/game/bioscans.dm +++ b/code/game/bioscans.dm @@ -94,45 +94,68 @@ GLOBAL_DATUM_INIT(bioscan_data, /datum/bioscan_data, new) var/marine_planet_location_string = "[marine_planet_location ? ", including one in [marine_planet_location]." : "."]" var/marine_ship_location_string = "[marine_ship_location ? ", including one in [marine_ship_location]." : "."]" + var/ghost_scan = SPAN_ALERT("[xenos_on_planet] xenos on planet, with [larva] larva.\n[xenos_on_ship] xenos on the ship.\n[marines_on_planet] humans on the planet.\n[marines_on_ship] humans on the ship.") + var/yautja_scan = SPAN_ALERT("[xenos_on_planet] serpents present in the hunting ground[xeno_planet_location_string], with [larva] larva.\n[xenos_on_ship] serpents present on the human ship[xeno_ship_location_string]\n[marines_on_planet] humans present in the hunting ground[marine_planet_location_string]\n[marines_on_ship] humans present on the human ship[marine_ship_location_string]") + log_game("BIOSCAN: A Yautja/Ghost bioscan has completed. [ghost_scan]") + //Announce the numbers to Yautja, they have good scanners for(var/mob/living/carbon/human/yautja as anything in GLOB.yautja_mob_list) to_chat(yautja, "

Bioscan complete

") - to_chat(yautja, SPAN_ALERT("[xenos_on_planet] serpents present in the hunting ground[xeno_planet_location_string], with [larva] larva.\n[xenos_on_ship] serpents present on the human ship[xeno_ship_location_string]\n[marines_on_planet] humans present in the hunting ground[marine_planet_location_string]\n[marines_on_ship] humans present on the human ship[marine_ship_location_string]")) + to_chat(yautja, yautja_scan) //Let the ghosts know what's up, they also get good numbers for(var/mob/dead/observer/ghost as anything in GLOB.observer_list) to_chat(ghost, "

Bioscan complete

") - to_chat(ghost, SPAN_ALERT("[xenos_on_planet] xenos on planet, with [larva] larva.\n[xenos_on_ship] xenos on the ship.\n[marines_on_planet] humans on the planet.\n[marines_on_ship] humans on the ship.")) + to_chat(ghost, ghost_scan) -/// This will do something after Project ARES. -/datum/bioscan_data/proc/can_ares_bioscan() - return TRUE +/datum/bioscan_data/proc/ares_can_bioscan() + var/datum/ares_link/link = GLOB.ares_link + if(!istype(link) || !ares_is_active()) + return FALSE + if(link.processor_bioscan && !link.processor_bioscan.inoperable()) + return TRUE + return FALSE /// The announcement to all Humans. Slightly off for the planet and elsewhere, accurate for the ship. /datum/bioscan_data/proc/ares_bioscan(forced = FALSE, variance = 2) - if(!forced && !can_ares_bioscan()) + if(!forced && !ares_can_bioscan()) message_admins("An ARES Bioscan has failed.") + var/name = "[MAIN_AI_SYSTEM] Bioscan Status" + var/input = "Bioscan failed. \n\nInvestigation into Bioscan subsystem recommended." + log_ares_bioscan(name, input, forced) + if(ares_can_interface() || forced) + marine_announcement(input, name, 'sound/misc/interference.ogg', logging = ARES_LOG_NONE) return - //Adjust the randomness there so everyone gets the same thing var/fake_xenos_on_planet = max(0, xenos_on_planet + rand(-variance, variance)) - var/name = "[MAIN_AI_SYSTEM] Bioscan Status" var/input = "Bioscan complete.\n\nSensors indicate [xenos_on_ship_uncontained ? "[xenos_on_ship_uncontained]" : "no"] unknown lifeform signature[!xenos_on_ship_uncontained || xenos_on_ship_uncontained > 1 ? "s":""] present on the ship[xenos_on_ship_uncontained && xenos_ship_location ? ", including one in [xenos_ship_location]," : ""] and [fake_xenos_on_planet ? "approximately [fake_xenos_on_planet]" : "no"] signature[!fake_xenos_on_planet || fake_xenos_on_planet > 1 ? "s":""] located elsewhere[fake_xenos_on_planet && xenos_planet_location ? ", including one in [xenos_planet_location]":""]." - marine_announcement(input, name, 'sound/AI/bioscan.ogg') + + log_game("BIOSCAN: ARES bioscan completed. [input]") + + log_ares_bioscan(name, input) //if interface is down, bioscan still logged, just have to go read it. + if(forced || ares_can_interface()) + marine_announcement(input, name, 'sound/AI/bioscan.ogg', logging = ARES_LOG_NONE) + else + message_admins("An ARES Bioscan has succeeded, but was not announced.") /// The announcement to all Xenos. Slightly off for the human ship, accurate otherwise. /datum/bioscan_data/proc/qm_bioscan(variance = 2) /// Adjust the randomness there so everyone gets the same thing var/fake_marines_on_ship = max(0, marines_on_ship + rand(-variance, variance)) + var/metalhive_hosts = "[fake_marines_on_ship ? "approximately [fake_marines_on_ship]":"no"]" + var/plural = "[!fake_marines_on_ship || fake_marines_on_ship > 1 ? "s":""]" + var/metalhive_location = "[fake_marines_on_ship && marine_ship_location?", including one in [marine_ship_location]," : ""]" + var/planet_hosts = "[marines_on_planet ? "[marines_on_planet]" : "none"]" + var/planet_location = "[marines_on_planet && marine_planet_location ? ", including one in [marine_planet_location]" : ""]" + + var/title = SPAN_XENOANNOUNCE("The Queen Mother reaches into your mind from worlds away.") + var/content = SPAN_XENOANNOUNCE("To my children and their Queen. I sense [metalhive_hosts] host[plural] in the metal hive [metalhive_location] and [planet_hosts] scattered elsewhere[planet_location].") + + log_game("BIOSCAN: Queen Mother bioscan completed. [content]") /// Shout it at everyone for(var/mob/current_mob as anything in GLOB.living_xeno_list) current_mob << sound(get_sfx("queen"), wait = 0, volume = 50) - to_chat(current_mob, SPAN_XENOANNOUNCE("The Queen Mother reaches into your mind from worlds away.")) - var/metalhive_hosts = "[fake_marines_on_ship ? "approximately [fake_marines_on_ship]":"no"]" - var/plural = "[!fake_marines_on_ship || fake_marines_on_ship > 1 ? "s":""]" - var/metalhive_location = "[fake_marines_on_ship&&marine_ship_location?", including one in [marine_ship_location],":""]" - var/planet_hosts = "[marines_on_planet ? "[marines_on_planet]" : "none"]" - var/planet_location = "[marines_on_planet && marine_planet_location ? ", including one in [marine_planet_location]" : ""]" - to_chat(current_mob, SPAN_XENOANNOUNCE("To my children and their Queen. I sense [metalhive_hosts] host[plural] in the metal hive [metalhive_location] and [planet_hosts] scattered elsewhere[planet_location].")) + to_chat(current_mob, title) + to_chat(current_mob, content) diff --git a/code/game/camera_manager/camera_manager.dm b/code/game/camera_manager/camera_manager.dm new file mode 100644 index 000000000000..95292830d49b --- /dev/null +++ b/code/game/camera_manager/camera_manager.dm @@ -0,0 +1,246 @@ +#define DEFAULT_MAP_SIZE 15 + +#define RENDER_MODE_TARGET 1 +#define RENDER_MODE_AREA 2 + +/datum/component/camera_manager + var/map_name + var/obj/structure/machinery/camera/current + var/datum/shape/rectangle/current_area + var/atom/movable/screen/map_view/cam_screen + var/atom/movable/screen/background/cam_background + var/list/range_turfs = list() + /// The turf where the camera was last updated. + var/turf/last_camera_turf + var/target_x + var/target_y + var/target_z + var/target_width + var/target_height + var/list/cam_plane_masters + var/isXRay = FALSE + var/render_mode = RENDER_MODE_TARGET + +/datum/component/camera_manager/Initialize() + . = ..() + map_name = "camera_manager_[REF(src)]_map" + cam_screen = new + cam_screen.icon = null + cam_screen.name = "screen" + cam_screen.assigned_map = map_name + cam_screen.del_on_map_removal = FALSE + cam_screen.screen_loc = "[map_name]:1,1" + cam_screen.appearance_flags |= TILE_BOUND + cam_background = new + cam_background.assigned_map = map_name + cam_background.del_on_map_removal = FALSE + cam_background.appearance_flags |= TILE_BOUND + + cam_plane_masters = list() + for(var/plane in subtypesof(/atom/movable/screen/plane_master) - /atom/movable/screen/plane_master/blackness) + var/atom/movable/screen/plane_master/instance = new plane() + add_plane(instance) + +/datum/component/camera_manager/Destroy(force, ...) + . = ..() + range_turfs = null + current_area = null + QDEL_LIST_ASSOC_VAL(cam_plane_masters) + QDEL_NULL(cam_background) + QDEL_NULL(cam_screen) + if(current) + UnregisterSignal(current, COMSIG_PARENT_QDELETING) + current = null + last_camera_turf = null + +/datum/component/camera_manager/proc/add_plane(atom/movable/screen/plane_master/instance) + instance.assigned_map = map_name + instance.appearance_flags |= TILE_BOUND + instance.del_on_map_removal = FALSE + if(instance.blend_mode_override) + instance.blend_mode = instance.blend_mode_override + instance.screen_loc = "[map_name]:CENTER" + cam_plane_masters["[instance.plane]"] = instance + +/datum/component/camera_manager/proc/register(source, mob/user) + SIGNAL_HANDLER + var/client/user_client = user.client + if(!user_client) + return + user_client.register_map_obj(cam_screen) + user_client.register_map_obj(cam_background) + for(var/plane_id in cam_plane_masters) + user_client.register_map_obj(cam_plane_masters[plane_id]) + +/datum/component/camera_manager/proc/unregister(source, mob/user) + SIGNAL_HANDLER + var/client/user_client = user.client + if(!user_client) + return + user_client.clear_map(map_name) + +/datum/component/camera_manager/RegisterWithParent() + . = ..() + SEND_SIGNAL(parent, COMSIG_CAMERA_MAPNAME_ASSIGNED, map_name) + RegisterSignal(parent, COMSIG_CAMERA_REGISTER_UI, PROC_REF(register)) + RegisterSignal(parent, COMSIG_CAMERA_UNREGISTER_UI, PROC_REF(unregister)) + RegisterSignal(parent, COMSIG_CAMERA_SET_NVG, PROC_REF(enable_nvg)) + RegisterSignal(parent, COMSIG_CAMERA_CLEAR_NVG, PROC_REF(disable_nvg)) + RegisterSignal(parent, COMSIG_CAMERA_SET_AREA, PROC_REF(set_camera_rect)) + RegisterSignal(parent, COMSIG_CAMERA_SET_TARGET, PROC_REF(set_camera)) + RegisterSignal(parent, COMSIG_CAMERA_CLEAR, PROC_REF(clear_camera)) + RegisterSignal(parent, COMSIG_CAMERA_REFRESH, PROC_REF(refresh_camera)) + +/datum/component/camera_manager/UnregisterFromParent() + . = ..() + UnregisterSignal(parent, COMSIG_CAMERA_REGISTER_UI) + UnregisterSignal(parent, COMSIG_CAMERA_UNREGISTER_UI) + UnregisterSignal(parent, COMSIG_CAMERA_SET_NVG) + UnregisterSignal(parent, COMSIG_CAMERA_CLEAR_NVG) + UnregisterSignal(parent, COMSIG_CAMERA_SET_AREA) + UnregisterSignal(parent, COMSIG_CAMERA_SET_TARGET) + UnregisterSignal(parent, COMSIG_CAMERA_CLEAR) + UnregisterSignal(parent, COMSIG_CAMERA_REFRESH) + +/datum/component/camera_manager/proc/clear_camera() + SIGNAL_HANDLER + if(current) + UnregisterSignal(current, COMSIG_PARENT_QDELETING) + current_area = null + current = null + target_x = null + target_y = null + target_z = null + target_width = null + target_height = null + show_camera_static() + +/datum/component/camera_manager/proc/refresh_camera() + SIGNAL_HANDLER + if(render_mode == RENDER_MODE_AREA) + update_area_camera() + return + update_target_camera() + +/datum/component/camera_manager/proc/set_camera(source, atom/target, w, h) + SIGNAL_HANDLER + render_mode = RENDER_MODE_TARGET + if(current) + UnregisterSignal(current, COMSIG_PARENT_QDELETING) + current = target + target_width = w + target_height = h + RegisterSignal(current, COMSIG_PARENT_QDELETING, PROC_REF(show_camera_static)) + update_target_camera() + +/datum/component/camera_manager/proc/set_camera_rect(source, x, y, z, w, h) + SIGNAL_HANDLER + render_mode = RENDER_MODE_AREA + if(current) + UnregisterSignal(current, COMSIG_PARENT_QDELETING) + current = null + current_area = RECT(x, y, w, h) + target_x = x + target_y = y + target_z = z + target_width = w + target_height = h + update_area_camera() + +/datum/component/camera_manager/proc/enable_nvg(source, power, matrixcol) + SIGNAL_HANDLER + for(var/plane_id in cam_plane_masters) + var/atom/movable/screen/plane_master/plane = cam_plane_masters["[plane_id]"] + plane.add_filter("nvg", 1, color_matrix_filter(color_matrix_from_string(matrixcol))) + sync_lighting_plane_alpha(LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE) + +/datum/component/camera_manager/proc/disable_nvg() + SIGNAL_HANDLER + for(var/plane_id in cam_plane_masters) + var/atom/movable/screen/plane_master/plane = cam_plane_masters["[plane_id]"] + plane.remove_filter("nvg") + sync_lighting_plane_alpha(LIGHTING_PLANE_ALPHA_VISIBLE) + +/datum/component/camera_manager/proc/sync_lighting_plane_alpha(lighting_alpha) + var/atom/movable/screen/plane_master/lighting/lighting = cam_plane_masters["[LIGHTING_PLANE]"] + if(lighting) + lighting.alpha = lighting_alpha + var/atom/movable/screen/plane_master/lighting/exterior_lighting = cam_plane_masters["[EXTERIOR_LIGHTING_PLANE]"] + if(exterior_lighting) + exterior_lighting.alpha = min(GLOB.minimum_exterior_lighting_alpha, lighting_alpha) + +/** + * Set the displayed camera to the static not-connected. + */ +/datum/component/camera_manager/proc/show_camera_static() + cam_screen.vis_contents.Cut() + last_camera_turf = null + cam_background.icon_state = "scanline2" + cam_background.fill_rect(1, 1, DEFAULT_MAP_SIZE, DEFAULT_MAP_SIZE) + +/datum/component/camera_manager/proc/update_target_camera() + // Show static if can't use the camera + if(!current?.can_use()) + show_camera_static() + return + + // Is this camera located in or attached to a living thing, Vehicle or helmet? If so, assume the camera's loc is the living (or non) thing. + var/cam_location = current + if(isliving(current.loc) || isVehicle(current.loc)) + cam_location = current.loc + else if(istype(current.loc, /obj/item/clothing/head/helmet/marine)) + var/obj/item/clothing/head/helmet/marine/helmet = current.loc + cam_location = helmet.loc + + // If we're not forcing an update for some reason and the cameras are in the same location, + // we don't need to update anything. + // Most security cameras will end here as they're not moving. + var/newturf = get_turf(cam_location) + if(last_camera_turf == newturf) + return + + // Cameras that get here are moving, and are likely attached to some moving atom such as cyborgs. + last_camera_turf = get_turf(cam_location) + + var/list/visible_things = current.isXRay() ? range(current.view_range, cam_location) : view(current.view_range, cam_location) + render_objects(visible_things) + +/datum/component/camera_manager/proc/update_area_camera() + // Show static if can't use the camera + if(!current_area || !target_z) + show_camera_static() + return + + // If we're not forcing an update for some reason and the cameras are in the same location, + // we don't need to update anything. + // Most security cameras will end here as they're not moving. + var/turf/new_location = locate(target_x, target_y, target_z) + if(last_camera_turf == new_location) + return + + // Cameras that get here are moving, and are likely attached to some moving atom such as cyborgs. + last_camera_turf = new_location + + var/x_size = current_area.width + var/y_size = current_area.height + var/turf/target = locate(current_area.center_x, current_area.center_y, target_z) + + var/list/visible_things = isXRay ? range("[x_size]x[y_size]", target) : view("[x_size]x[y_size]", target) + render_objects(visible_things) + +/datum/component/camera_manager/proc/render_objects(list/visible_things) + var/list/visible_turfs = list() + for(var/turf/visible_turf in visible_things) + visible_turfs += visible_turf + + var/list/bbox = get_bbox_of_atoms(visible_turfs) + var/size_x = bbox[3] - bbox[1] + 1 + var/size_y = bbox[4] - bbox[2] + 1 + + cam_screen.vis_contents = visible_turfs + cam_background.icon_state = "clear" + cam_background.fill_rect(1, 1, size_x, size_y) + +#undef DEFAULT_MAP_SIZE +#undef RENDER_MODE_TARGET +#undef RENDER_MODE_AREA diff --git a/code/game/cas_manager/datums/cas_fire_envelope.dm b/code/game/cas_manager/datums/cas_fire_envelope.dm index 450fe8e6a82b..cc38b034c764 100644 --- a/code/game/cas_manager/datums/cas_fire_envelope.dm +++ b/code/game/cas_manager/datums/cas_fire_envelope.dm @@ -1,7 +1,6 @@ /datum/cas_fire_envelope var/obj/structure/machinery/computer/dropship_weapons/linked_console var/list/datum/cas_fire_mission/missions - var/max_mission_len = 5 var/fire_length var/grace_period //how much time you have after initiating fire mission and before you can't change firemissions var/flyto_period //how much time it takes from sound alarm start to first hit. CAS is vulnerable here @@ -20,7 +19,7 @@ var/datum/cas_signal/recorded_loc = null var/obj/effect/firemission_guidance/guidance - + var/atom/tracked_object /datum/cas_fire_envelope/New() ..() @@ -28,37 +27,39 @@ /datum/cas_fire_envelope/Destroy(force, ...) linked_console = null + untrack_object() return ..() +/datum/cas_fire_envelope/ui_data(mob/user) + . = list() + .["missions"] = list() + for(var/datum/cas_fire_mission/mission in missions) + .["missions"] += list(mission.ui_data(user)) + + /datum/cas_fire_envelope/proc/get_total_duration() return grace_period+flyto_period+flyoff_period +/datum/cas_fire_envelope/proc/update_weapons(list/obj/structure/dropship_equipment/weapon/weapons) + for(var/datum/cas_fire_mission/mission in missions) + mission.update_weapons(weapons, fire_length) + /datum/cas_fire_envelope/proc/generate_mission(firemission_name, length) - if(!missions || !linked_console || missions.len>max_mission_len || !fire_length) + if(!missions || !linked_console || !fire_length) return null - var/list/obj/structure/dropship_equipment/weapons = list() - for(var/X in linked_console.shuttle_equipments) - var/obj/structure/dropship_equipment/E = X - if(E.is_weapon) - weapons += E + var/shuttle_tag = linked_console.shuttle_tag + var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttle_tag) + for(var/obj/structure/dropship_equipment/equipment as anything in dropship.equipments) + if(equipment.is_weapon) + weapons += equipment var/datum/cas_fire_mission/fm = new() - - if(weapons.len==0) - return null //why bother? - for(var/obj/structure/dropship_equipment/weapon/wp in weapons) - var/datum/cas_fire_mission_record/record = new() - record.weapon = wp - record.offsets = new /list(fire_length) - for(var/idx = 1; idx<=fire_length; idx++) - record.offsets[idx] = "-" - fm.records += record + fm.build_new_record(wp, fire_length) fm.name = firemission_name fm.mission_length = length - missions += fm return fm @@ -67,71 +68,61 @@ mission_error = null if(stat > FIRE_MISSION_STATE_IN_TRANSIT && stat < FIRE_MISSION_STATE_COOLDOWN) mission_error = "Fire Mission is under way already." - return 0 + return FIRE_MISSION_NOT_EXECUTABLE if(!missions[mission_id]) - return -1 + return FIRE_MISSION_NOT_EXECUTABLE var/datum/cas_fire_mission/mission = missions[mission_id] if(!mission) - return -1 - if(!mission.records[weapon_id]) - return -1 - var/datum/cas_fire_mission_record/fmr = mission.records[weapon_id] + return FIRE_MISSION_NOT_EXECUTABLE + + var/datum/cas_fire_mission_record/fmr = mission.record_for_weapon(weapon_id) + if(!fmr) + return FIRE_MISSION_NOT_EXECUTABLE if(!fmr.offsets || isnull(fmr.offsets[offset_step])) - return -1 + return FIRE_MISSION_NOT_EXECUTABLE var/old_offset = fmr.offsets[offset_step] + if(offset == null) + offset = "-" fmr.offsets[offset_step] = offset var/check_result = mission.check(linked_console) if(check_result == FIRE_MISSION_CODE_ERROR) - return -1 + return FIRE_MISSION_NOT_EXECUTABLE if(check_result == FIRE_MISSION_ALL_GOOD) - return 1 + return FIRE_MISSION_ALL_GOOD if(check_result == FIRE_MISSION_WEAPON_OUT_OF_AMMO) - return 1 + return FIRE_MISSION_ALL_GOOD mission_error = mission.error_message(check_result) if(skip_checks) - return 0 + return FIRE_MISSION_ALL_GOOD //we have mission error. Fill the thing and restore previous state fmr.offsets[offset_step] = old_offset - return 0 + return FIRE_MISSION_ALL_GOOD -/datum/cas_fire_envelope/proc/execute_firemission(datum/cas_signal/target_turf, offset, dir, mission_id) - if(!istype(target_turf)) - mission_error = "No target." - return 0 +/datum/cas_fire_envelope/proc/execute_firemission(datum/cas_signal/signal, target_turf,dir, mission_id) if(stat != FIRE_MISSION_STATE_IDLE) mission_error = "Fire Mission is under way already." - return 0 + return FIRE_MISSION_NOT_EXECUTABLE if(!missions[mission_id]) - return -1 - if(offset<0) - mission_error = "Can't have negative offsets." - return 0 - if(offset>max_offset) - mission_error = "[max_offset] is the maximum possible offset." - return 0 + return FIRE_MISSION_NOT_EXECUTABLE if(dir!=NORTH && dir!=SOUTH && dir!=WEST && dir!=EAST) mission_error = "Incorrect direction." - return 0 + return FIRE_MISSION_BAD_DIRECTION mission_error = null var/datum/cas_fire_mission/mission = missions[mission_id] var/check_result = mission.check(linked_console) if(check_result == FIRE_MISSION_CODE_ERROR) - return -1 + return FIRE_MISSION_CODE_ERROR if(check_result != FIRE_MISSION_ALL_GOOD) mission_error = mission.error_message(check_result) - return 0 + return FIRE_MISSION_CODE_ERROR - if(target_turf && target_turf.signal_loc) - var/turf/TT = get_turf(target_turf.signal_loc) - if(TT && TT.z) - msg_admin_niche("[key_name(usr)] launching Fire Mission '[mission.name]' onto [target_turf.name] at ([TT.x],[TT.y],[TT.z]) [ADMIN_JMP(TT)]") //actual firemission code - execute_firemission_unsafe(target_turf, offset, dir, mission) - return 1 + execute_firemission_unsafe(signal, target_turf, dir, mission) + return FIRE_MISSION_ALL_GOOD /datum/cas_fire_envelope/proc/firemission_status_message() switch(stat) @@ -161,7 +152,9 @@ recorded_loc = marker return TRUE -/datum/cas_fire_envelope/proc/change_current_loc(location) +/datum/cas_fire_envelope/proc/change_current_loc(location, atom/object) + if(object) + untrack_object() if(!location && guidance) for(var/mob/M in guidance.users) if(istype(M) && M.client) @@ -171,6 +164,22 @@ if(!guidance) guidance = new /obj/effect/firemission_guidance() guidance.forceMove(location) + guidance.updateCameras(linked_console) + if(object) + tracked_object = object + RegisterSignal(tracked_object, COMSIG_PARENT_QDELETING, PROC_REF(on_tracked_object_del)) + +/// Call to unregister the on_tracked_object_del behavior +/datum/cas_fire_envelope/proc/untrack_object() + if(tracked_object) + UnregisterSignal(tracked_object, COMSIG_PARENT_QDELETING) + tracked_object = null + +/// Signal handler for when we are viewing a object in cam is qdel'd (but camera actually is actually some other obj) +/datum/cas_fire_envelope/proc/on_tracked_object_del(atom/target) + SIGNAL_HANDLER + tracked_object = null + change_current_loc() /datum/cas_fire_envelope/proc/user_is_guided(user) return guidance && (user in guidance.users) @@ -185,8 +194,7 @@ apply_upgrade(user) if(!(user in guidance.users)) guidance.users += user - RegisterSignal(usr, COMSIG_MOB_RESISTED, PROC_REF(exit_cam_resist)) - + RegisterSignal(user, COMSIG_MOB_RESISTED, PROC_REF(exit_cam_resist)) /datum/cas_fire_envelope/proc/apply_upgrade(user) var/mob/M = user @@ -197,8 +205,6 @@ M.overlay_fullscreen("matrix", /atom/movable/screen/fullscreen/flash/noise/nvg) M.lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE M.sync_lighting_plane_alpha() - else if (linked_console.upgraded == MATRIX_WIDE) - M.client?.change_view(linked_console.power + 5, M) /datum/cas_fire_envelope/proc/remove_upgrades(user) @@ -224,6 +230,8 @@ M.reset_view() remove_upgrades(user) guidance.users -= user + UnregisterSignal(user, COMSIG_MOB_RESISTED) + guidance.clearCameras(linked_console) /datum/cas_fire_envelope/proc/exit_cam_resist(mob/user) SIGNAL_HANDLER @@ -234,54 +242,49 @@ /datum/cas_fire_envelope/proc/check_firemission_loc(datum/cas_signal/target_turf) return TRUE //redefined in child class -/datum/cas_fire_envelope/proc/execute_firemission_unsafe(datum/cas_signal/target_turf, offset, dir, datum/cas_fire_mission/mission) - var/sx = 0 - var/sy = 0 - - recorded_dir = dir - recorded_offset = offset - +/** + * Execute firemission. + */ +/datum/cas_fire_envelope/proc/execute_firemission_unsafe(datum/cas_signal/signal, turf/target_turf, dir, datum/cas_fire_mission/mission) stat = FIRE_MISSION_STATE_IN_TRANSIT + to_chat(usr, SPAN_ALERT("Firemission underway!")) sleep(grace_period) stat = FIRE_MISSION_STATE_ON_TARGET - switch(recorded_dir) - if(NORTH) //default direction - sx = 0 - sy = 1 - if(SOUTH) - sx = 0 - sy = -1 - if(EAST) - sx = 1 - sy = 0 - if(WEST) - sx = -1 - sy = 0 if(!target_turf) stat = FIRE_MISSION_STATE_IDLE mission_error = "Target Lost." return - var/turf/tt_turf = get_turf(target_turf.signal_loc) - if(!tt_turf || !check_firemission_loc(target_turf)) + if(!target_turf || !check_firemission_loc(signal)) stat = FIRE_MISSION_STATE_IDLE mission_error = "Target is off bounds or obstructed." return - var/turf/shootloc = locate(tt_turf.x + sx*recorded_offset, tt_turf.y + sy*recorded_offset,tt_turf.z) - if(!shootloc || !istype(shootloc)) - stat = FIRE_MISSION_STATE_IDLE - mission_error = "Target is off bounds." - return - change_current_loc(shootloc) - playsound(shootloc, soundeffect, 70, TRUE, 50) + change_current_loc(target_turf) + playsound(source = target_turf, soundin = soundeffect, vol = 70, vary = TRUE, sound_range = 50, falloff = 8) + + for(var/mob/mob in range(15, target_turf)) + var/ds_identifier = "LARGE BIRD" + var/fm_identifier = "SPIT FIRE" + if (mob.mob_flags & KNOWS_TECHNOLOGY) + ds_identifier = "DROPSHIP" + fm_identifier = "FIRE" + + mob.show_message( \ + SPAN_HIGHDANGER("YOU HEAR THE [ds_identifier] ROAR AS IT PREPARES TO [fm_identifier] NEAR YOU!"),SHOW_MESSAGE_VISIBLE, \ + SPAN_HIGHDANGER("YOU HEAR SOMETHING FLYING CLOSER TO YOU!") , SHOW_MESSAGE_AUDIBLE \ + ) + sleep(flyto_period) stat = FIRE_MISSION_STATE_FIRING - mission.execute_firemission(linked_console, shootloc, recorded_dir, fire_length, step_delay, src) + mission.execute_firemission(linked_console, target_turf, dir, fire_length, step_delay, src) stat = FIRE_MISSION_STATE_OFF_TARGET sleep(flyoff_period) stat = FIRE_MISSION_STATE_COOLDOWN sleep(cooldown_period) stat = FIRE_MISSION_STATE_IDLE +/** + * Change attack vector for firemission + */ /datum/cas_fire_envelope/proc/change_direction(new_dir) if(stat > FIRE_MISSION_STATE_IN_TRANSIT) mission_error = "Fire Mission is under way already." @@ -321,10 +324,10 @@ /datum/cas_fire_envelope/uscm_dropship fire_length = 12 - grace_period = 50 //5 seconds - flyto_period = 50 //five seconds - flyoff_period = 50 //FIVE seconds - cooldown_period = 100 //f~ I mean, 10 seconds + grace_period = 5 SECONDS + flyto_period = 4 SECONDS //sleep in the FM itself has been increased by one more second + flyoff_period = 5 SECONDS + cooldown_period = 10 SECONDS soundeffect = 'sound/weapons/dropship_sonic_boom.ogg' //BOOM~WOOOOOSH~HSOOOOOW~BOOM step_delay = 3 max_offset = 12 @@ -349,13 +352,13 @@ /obj/structure/machinery/computer/dropship_weapons/proc/update_mission(mission_id, weapon_id, offset_step, offset) var/result = firemission_envelope.update_mission(mission_id, weapon_id, offset_step, offset) - if(result<1) + if(result != FIRE_MISSION_ALL_GOOD) return firemission_envelope.mission_error return "OK" // Used in the simulation room for firemission testing. /obj/structure/machinery/computer/dropship_weapons/proc/execute_firemission(obj/location, offset, dir, mission_id) var/result = firemission_envelope.execute_firemission(get_turf(location), offset, dir, mission_id) - if(result<1) + if(result != FIRE_MISSION_ALL_GOOD) return firemission_envelope.mission_error return "OK" diff --git a/code/game/cas_manager/datums/cas_fire_mission.dm b/code/game/cas_manager/datums/cas_fire_mission.dm index 42f5b4bd8655..927dded210f0 100644 --- a/code/game/cas_manager/datums/cas_fire_mission.dm +++ b/code/game/cas_manager/datums/cas_fire_mission.dm @@ -1,17 +1,83 @@ /obj/effect/firemission_guidance invisibility = 101 - var/list/users + var/list/mob/users + var/camera_width = 11 + var/camera_height = 11 + var/view_range = 7 /obj/effect/firemission_guidance/New() ..() users = list() +/obj/effect/firemission_guidance/Destroy(force) + . = ..() + users = null + +/obj/effect/firemission_guidance/proc/can_use() + return TRUE + +/obj/effect/firemission_guidance/proc/isXRay() + return FALSE + +/obj/effect/firemission_guidance/proc/updateCameras(atom/target) + SEND_SIGNAL(target, COMSIG_CAMERA_SET_TARGET, src, camera_width, camera_height) + +/obj/effect/firemission_guidance/proc/clearCameras(atom/target) + SEND_SIGNAL(target, COMSIG_CAMERA_CLEAR) + /datum/cas_fire_mission var/mission_length = 3 //can be 3,4,6 or 12 var/list/datum/cas_fire_mission_record/records = list() var/obj/structure/dropship_equipment/weapon/error_weapon var/name = "Unnamed Firemission" +/datum/cas_fire_mission/ui_data(mob/user) + . = list() + .["name"] = sanitize(copytext(name, 1, MAX_MESSAGE_LEN)) + .["records"] = list() + for(var/datum/cas_fire_mission_record/record as anything in records) + .["records"] += list(record.ui_data(user)) + +/datum/cas_fire_mission/proc/build_new_record(obj/structure/dropship_equipment/weapon/weapon, fire_length) + var/datum/cas_fire_mission_record/record = new() + record.weapon = weapon + record.offsets = new /list(fire_length) + for(var/idx = 1; idx<=fire_length; idx++) + record.offsets[idx] = "-" + records += record + +/datum/cas_fire_mission/proc/update_weapons(list/obj/structure/dropship_equipment/weapon/weapons, fire_length) + var/list/datum/cas_fire_mission_record/bad_records = list() + var/list/obj/structure/dropship_equipment/weapon/missing_weapons = list() + for(var/datum/cas_fire_mission_record/record in records) + // if weapon appears in weapons list but not in record + // > add empty record for new weapon + var/found = FALSE + for(var/obj/structure/dropship_equipment/weapon/weapon in weapons) + if(record.weapon == weapon) + found=TRUE + break + if(!found) + bad_records.Add(record) + for(var/obj/structure/dropship_equipment/weapon/weapon in weapons) + var/found = FALSE + for(var/datum/cas_fire_mission_record/record in records) + if(record.weapon == weapon) + found=TRUE + break + if(!found) + missing_weapons.Add(weapon) + for(var/datum/cas_fire_mission_record/record in bad_records) + records -= record + for(var/obj/structure/dropship_equipment/weapon/weapon in missing_weapons) + build_new_record(weapon, fire_length) + +/datum/cas_fire_mission/proc/record_for_weapon(weapon_id) + for(var/datum/cas_fire_mission_record/record as anything in records) + if(record.weapon.ship_base.attach_id == weapon_id) + return record + return null + /datum/cas_fire_mission/proc/check(obj/structure/machinery/computer/dropship_weapons/linked_console) error_weapon = null if(records.len == 0) @@ -98,36 +164,47 @@ if(initial_turf == null || check(linked_console) != FIRE_MISSION_ALL_GOOD) return FIRE_MISSION_NOT_EXECUTABLE + var/obj/effect/firemission_effect = new(initial_turf) + + firemission_effect.icon = 'icons/obj/items/weapons/projectiles.dmi' + firemission_effect.icon_state = "laser_target2" + firemission_effect.mouse_opacity = MOUSE_OPACITY_TRANSPARENT + firemission_effect.invisibility = INVISIBILITY_MAXIMUM + QDEL_IN(firemission_effect, 5 SECONDS) + + notify_ghosts(header = "CAS Fire Mission", message = "[usr ? usr : "Someone"] is launching Fire Mission '[name]' at [get_area(initial_turf)].", source = firemission_effect) + msg_admin_niche("[usr ? key_name(usr) : "Someone"] is launching Fire Mission '[name]' at ([initial_turf.x],[initial_turf.y],[initial_turf.z]) [ADMIN_JMP(initial_turf)]") + var/relative_dir - for(var/mob/M in range(15, initial_turf)) - if(get_turf(M) == initial_turf) + for(var/mob/mob in range(15, initial_turf)) + if(get_turf(mob) == initial_turf) relative_dir = 0 else - relative_dir = get_dir(M, initial_turf) + relative_dir = Get_Compass_Dir(mob, initial_turf) var/ds_identifier = "LARGE BIRD" - if (M.mob_flags & KNOWS_TECHNOLOGY) + if (mob.mob_flags & KNOWS_TECHNOLOGY) ds_identifier = "DROPSHIP" - M.show_message( \ + mob.show_message( \ SPAN_HIGHDANGER("A [ds_identifier] FLIES [SPAN_UNDERLINE(relative_dir ? uppertext(("TO YOUR " + dir2text(relative_dir))) : uppertext("right above you"))]!"), SHOW_MESSAGE_VISIBLE, \ SPAN_HIGHDANGER("YOU HEAR SOMETHING GO [SPAN_UNDERLINE(relative_dir ? uppertext(("TO YOUR " + dir2text(relative_dir))) : uppertext("right above you"))]!"), SHOW_MESSAGE_AUDIBLE \ ) // Xenos have time to react to the first message - sleep(0.5 SECONDS) + sleep(1.5 SECONDS) - for(var/mob/M in range(10, initial_turf)) - if(get_turf(M) == initial_turf) + for(var/mob/mob in range(10, initial_turf)) + if(get_turf(mob) == initial_turf) relative_dir = 0 else - relative_dir = get_dir(M, initial_turf) + relative_dir = Get_Compass_Dir(mob, initial_turf) var/ds_identifier = "LARGE BIRD" - if (M.mob_flags & KNOWS_TECHNOLOGY) + if (mob.mob_flags & KNOWS_TECHNOLOGY) ds_identifier = "DROPSHIP" - M.show_message( \ + mob.show_message( \ SPAN_HIGHDANGER("A [ds_identifier] FIRES [SPAN_UNDERLINE(relative_dir ? uppertext(("TO YOUR " + dir2text(relative_dir))) : uppertext("right above you"))]!"), 1, \ SPAN_HIGHDANGER("YOU HEAR SOMETHING FIRE [SPAN_UNDERLINE(relative_dir ? uppertext(("TO YOUR " + dir2text(relative_dir))) : uppertext("right above you"))]!"), 2 \ ) @@ -154,7 +231,7 @@ var/step = 1 for(step = 1; step<=steps; step++) if(step > next_step) - current_turf = get_step(current_turf,direction) + current_turf = get_step(current_turf, direction) next_step += tally_step if(envelope) envelope.change_current_loc(current_turf) @@ -166,8 +243,8 @@ if (current_turf == null) return -1 var/turf/shootloc = locate(current_turf.x + sx*offset, current_turf.y + sy*offset, current_turf.z) - var/area/A = get_area(shootloc) - if(shootloc && !CEILING_IS_PROTECTED(A?.ceiling, CEILING_PROTECTION_TIER_3) && !protected_by_pylon(TURF_PROTECTION_CAS, shootloc)) + var/area/area = get_area(shootloc) + if(shootloc && !CEILING_IS_PROTECTED(area?.ceiling, CEILING_PROTECTION_TIER_3) && !protected_by_pylon(TURF_PROTECTION_CAS, shootloc)) item.weapon.open_fire_firemission(shootloc) sleep(step_delay) if(envelope) diff --git a/code/game/cas_manager/datums/cas_iff_group.dm b/code/game/cas_manager/datums/cas_iff_group.dm index f384115d7756..dc39b462c9f1 100644 --- a/code/game/cas_manager/datums/cas_iff_group.dm +++ b/code/game/cas_manager/datums/cas_iff_group.dm @@ -8,8 +8,7 @@ /datum/cas_iff_group/proc/remove_signal(datum/cas_signal/signal) cas_signals -= signal -var/global/datum/cas_iff_group/uscm_cas_group = new /datum/cas_iff_group() +GLOBAL_DATUM_INIT(uscm_cas_group, /datum/cas_iff_group, new()) +GLOBAL_DATUM_INIT(upp_cas_group, /datum/cas_iff_group, new()) -var/global/datum/cas_iff_group/upp_cas_group = new /datum/cas_iff_group() - -var/global/list/datum/cas_iff_group/cas_groups = list(FACTION_MARINE = uscm_cas_group, FACTION_UPP = upp_cas_group, FACTION_NEUTRAL = uscm_cas_group) +GLOBAL_LIST_INIT_TYPED(cas_groups, /datum/cas_iff_group, list(FACTION_MARINE = GLOB.uscm_cas_group, FACTION_UPP = GLOB.upp_cas_group, FACTION_NEUTRAL = GLOB.uscm_cas_group)) diff --git a/code/game/gamemodes/cm_initialize.dm b/code/game/gamemodes/cm_initialize.dm index 8237fc63b7e2..f8c8be5c10ad 100644 --- a/code/game/gamemodes/cm_initialize.dm +++ b/code/game/gamemodes/cm_initialize.dm @@ -75,6 +75,12 @@ Additional game mode variables. var/list/monkey_types = list() //What type of monkeys do we spawn var/latejoin_tally = 0 //How many people latejoined Marines var/latejoin_larva_drop = LATEJOIN_MARINES_PER_LATEJOIN_LARVA //A larva will spawn in once the tally reaches this level. If set to 0, no latejoin larva drop + /// Amount of latejoin_tally already awarded as larvas + var/latejoin_larva_used = 0 + /// Multiplier to the amount of marine gear, current value as calculated with modifiers + var/gear_scale = 1 + /// Multiplier to the amount of marine gear, maximum reached value for + var/gear_scale_max = 1 //Role Authority set up. /// List of role titles to override to different roles when starting game @@ -100,7 +106,7 @@ Additional game mode variables. /datum/game_mode/proc/get_roles_list() - return ROLES_USCM + return GLOB.ROLES_USCM //===================================================\\ @@ -109,16 +115,16 @@ Additional game mode variables. //===================================================\\ /datum/game_mode/proc/initialize_special_clamps() - xeno_starting_num = clamp((readied_players/CONFIG_GET(number/xeno_number_divider)), xeno_required_num, INFINITY) //(n, minimum, maximum) - surv_starting_num = clamp((readied_players/CONFIG_GET(number/surv_number_divider)), 2, 8) //this doesnt run + xeno_starting_num = clamp((GLOB.readied_players/CONFIG_GET(number/xeno_number_divider)), xeno_required_num, INFINITY) //(n, minimum, maximum) + surv_starting_num = clamp((GLOB.readied_players/CONFIG_GET(number/surv_number_divider)), 2, 8) //this doesnt run marine_starting_num = GLOB.player_list.len - xeno_starting_num - surv_starting_num - for(var/datum/squad/sq in RoleAuthority.squads) + for(var/datum/squad/sq in GLOB.RoleAuthority.squads) if(sq) sq.max_engineers = engi_slot_formula(marine_starting_num) sq.max_medics = medic_slot_formula(marine_starting_num) - for(var/i in RoleAuthority.roles_by_name) - var/datum/job/J = RoleAuthority.roles_by_name[i] + for(var/i in GLOB.RoleAuthority.roles_by_name) + var/datum/job/J = GLOB.RoleAuthority.roles_by_name[i] if(J.scaled) J.set_spawn_positions(marine_starting_num) @@ -149,7 +155,7 @@ Additional game mode variables. else if(!istype(player,/mob/dead)) continue //Otherwise we just want to grab the ghosts. - if(RoleAuthority.roles_whitelist[player.ckey] & WHITELIST_PREDATOR) //Are they whitelisted? + if(player?.client.check_whitelist_status(WHITELIST_PREDATOR)) //Are they whitelisted? if(!player.client.prefs) player.client.prefs = new /datum/preferences(player.client) //Somehow they don't have one. @@ -176,13 +182,13 @@ Additional game mode variables. if(!pred_candidate.client) return - var/datum/job/J = RoleAuthority.roles_by_name[JOB_PREDATOR] + var/datum/job/J = GLOB.RoleAuthority.roles_by_name[JOB_PREDATOR] if(!J) if(show_warning) to_chat(pred_candidate, SPAN_WARNING("Something went wrong!")) return - if(!(RoleAuthority.roles_whitelist[pred_candidate.ckey] & WHITELIST_PREDATOR)) + if(!(pred_candidate?.client.check_whitelist_status(WHITELIST_PREDATOR))) if(show_warning) to_chat(pred_candidate, SPAN_WARNING("You are not whitelisted! You may apply on the forums to be whitelisted as a predator.")) return @@ -195,9 +201,9 @@ Additional game mode variables. to_chat(pred_candidate, SPAN_WARNING("You already were a Yautja! Give someone else a chance.")) return - if(show_warning && tgui_alert(pred_candidate, "Confirm joining the hunt. You will join as \a [lowertext(J.get_whitelist_status(RoleAuthority.roles_whitelist, pred_candidate.client))] predator", "Confirmation", list("Yes", "No"), 10 SECONDS) != "Yes") + if(show_warning && tgui_alert(pred_candidate, "Confirm joining the hunt. You will join as \a [lowertext(J.get_whitelist_status(pred_candidate.client))] predator", "Confirmation", list("Yes", "No"), 10 SECONDS) != "Yes") return - if(J.get_whitelist_status(RoleAuthority.roles_whitelist, pred_candidate.client) == WHITELIST_NORMAL) + if(J.get_whitelist_status(pred_candidate.client) == WHITELIST_NORMAL) var/pred_max = calculate_pred_max if(pred_current_num >= pred_max) if(show_warning) to_chat(pred_candidate, SPAN_WARNING("Only [pred_max] predators may spawn this round, but Councillors and Ancients do not count.")) @@ -234,13 +240,13 @@ Additional game mode variables. pred_candidate.mind.transfer_to(new_predator, TRUE) new_predator.client = pred_candidate.client - var/datum/job/J = RoleAuthority.roles_by_name[JOB_PREDATOR] + var/datum/job/J = GLOB.RoleAuthority.roles_by_name[JOB_PREDATOR] if(!J) qdel(new_predator) return - RoleAuthority.equip_role(new_predator, J, new_predator.loc) + GLOB.RoleAuthority.equip_role(new_predator, J, new_predator.loc) return new_predator @@ -253,10 +259,10 @@ Additional game mode variables. //If we are selecting xenomorphs, we NEED them to play the round. This is the expected behavior. //If this is an optional behavior, just override this proc or make an override here. -/datum/game_mode/proc/initialize_starting_xenomorph_list(list/hives = list(XENO_HIVE_NORMAL), force_xenos = FALSE) +/datum/game_mode/proc/initialize_starting_xenomorph_list(list/hives = list(XENO_HIVE_NORMAL), bypass_checks = FALSE) var/list/datum/mind/possible_xenomorphs = get_players_for_role(JOB_XENOMORPH) var/list/datum/mind/possible_queens = get_players_for_role(JOB_XENOMORPH_QUEEN) - if(possible_xenomorphs.len < xeno_required_num) //We don't have enough aliens, we don't consider people rolling for only Queen. + if(possible_xenomorphs.len < xeno_required_num && !bypass_checks) //We don't have enough aliens, we don't consider people rolling for only Queen. to_world("

Not enough players have chosen to be a xenomorph in their character setup. Aborting.

") return @@ -319,11 +325,11 @@ Additional game mode variables. Our list is empty. This can happen if we had someone ready as alien and predator, and predators are picked first. So they may have been removed from the list, oh well. */ - if(LAZYLEN(xenomorphs) < xeno_required_num && LAZYLEN(picked_queens) != LAZYLEN(hives)) + if(LAZYLEN(xenomorphs) < xeno_required_num && LAZYLEN(picked_queens) != LAZYLEN(hives) && !bypass_checks) to_world("

Could not find any candidates after initial alien list pass. Aborting.

") return - return 1 + return TRUE // Helper proc to set some constants /proc/setup_new_xeno(datum/mind/new_xeno) @@ -333,38 +339,80 @@ Additional game mode variables. /datum/game_mode/proc/check_xeno_late_join(mob/xeno_candidate) if(jobban_isbanned(xeno_candidate, JOB_XENOMORPH)) // User is jobbanned to_chat(xeno_candidate, SPAN_WARNING("You are banned from playing aliens and cannot spawn as a xenomorph.")) - return - return 1 + return FALSE + return TRUE -/datum/game_mode/proc/attempt_to_join_as_xeno(mob/xeno_candidate, instant_join = 0) +/datum/game_mode/proc/attempt_to_join_as_xeno(mob/xeno_candidate, instant_join = FALSE) var/list/available_xenos = list() var/list/available_xenos_non_ssd = list() - for(var/mob/living/carbon/xenomorph/X in GLOB.living_xeno_list) - var/area/A = get_area(X) - if(is_admin_level(X.z) && (!A || !(A.flags_area & AREA_ALLOW_XENO_JOIN)) || X.aghosted) - continue //xenos on admin z level and aghosted ones don't count - if(istype(X) && ((!islarva(X) && (XENO_LEAVE_TIMER - X.away_timer < XENO_AVAILABLE_TIMER)) || (islarva(X) && (XENO_LEAVE_TIMER_LARVA - X.away_timer < XENO_AVAILABLE_TIMER)))) - if(!X.client) - available_xenos += X - else - available_xenos_non_ssd += X - + for(var/mob/living/carbon/xenomorph/cur_xeno as anything in GLOB.living_xeno_list) + if(cur_xeno.aghosted) + continue //aghosted xenos don't count + var/area/area = get_area(cur_xeno) + if(should_block_game_interaction(cur_xeno) && (!area || !(area.flags_area & AREA_ALLOW_XENO_JOIN))) + continue //xenos on admin z level don't count + if(!istype(cur_xeno)) + continue + var/required_time = islarva(cur_xeno) ? XENO_LEAVE_TIMER_LARVA - cur_xeno.away_timer : XENO_LEAVE_TIMER - cur_xeno.away_timer + if(required_time > XENO_AVAILABLE_TIMER) + continue + if(!cur_xeno.client) + available_xenos += cur_xeno + else + available_xenos_non_ssd += cur_xeno var/datum/hive_status/hive for(var/hivenumber in GLOB.hive_datum) hive = GLOB.hive_datum[hivenumber] - if(!hive.hardcore && hive.stored_larva && (hive.hive_location || (world.time < 30 MINUTES + SSticker.round_start_time))) - if(SSticker.mode && (SSticker.mode.flags_round_type & MODE_RANDOM_HIVE)) - available_xenos |= "any buried larva" - LAZYADD(available_xenos["any buried larva"], hive) - else - var/larva_option = "buried larva ([hive])" - available_xenos += larva_option - available_xenos[larva_option] = list(hive) + if(hive.hardcore) + continue + if(!hive.stored_larva) + continue + // Only offer buried larva if there is no queue because we are instead relying on the hive cores/larva pops to handle their larva: + // Technically this should be after a get_alien_candidates() call to be accurate, but we are intentionally trying to not call that proc as much as possible + if(hive.hive_location && GLOB.xeno_queue_candidate_count > 0) + continue + if(!hive.hive_location && (world.time > XENO_BURIED_LARVA_TIME_LIMIT + SSticker.round_start_time)) + continue + + if(SSticker.mode && (SSticker.mode.flags_round_type & MODE_RANDOM_HIVE)) + available_xenos |= "any buried larva" + LAZYADD(available_xenos["any buried larva"], hive) + else + var/larva_option = "buried larva ([hive])" + available_xenos += larva_option + available_xenos[larva_option] = list(hive) if(!available_xenos.len || (instant_join && !available_xenos_non_ssd.len)) - to_chat(xeno_candidate, SPAN_WARNING("There aren't any available xenomorphs or burrowed larvae. You can try getting spawned as a chestburster larva by toggling your Xenomorph candidacy in Preferences -> Toggle SpecialRole Candidacy.")) + if(!xeno_candidate.client || !xeno_candidate.client.prefs || !(xeno_candidate.client.prefs.be_special & BE_ALIEN_AFTER_DEATH)) + to_chat(xeno_candidate, SPAN_WARNING("There aren't any available xenomorphs or burrowed larvae. You can try getting spawned as a chestburster larva by toggling your Xenomorph candidacy in Preferences -> Toggle SpecialRole Candidacy.")) + return FALSE + to_chat(xeno_candidate, SPAN_WARNING("There aren't any available xenomorphs or burrowed larvae.")) + + // Give the player a cached message of their queue status if they are an observer + var/mob/dead/observer/candidate_observer = xeno_candidate + if(istype(candidate_observer)) + if(candidate_observer.larva_queue_cached_message) + to_chat(xeno_candidate, SPAN_XENONOTICE(candidate_observer.larva_queue_cached_message)) + return FALSE + + // No cache, lets check now then + message_alien_candidates(get_alien_candidates(), dequeued = 0, cache_only = TRUE) + if(candidate_observer.larva_queue_cached_message) + var/datum/hive_status/cur_hive + for(var/hive_num in GLOB.hive_datum) + cur_hive = GLOB.hive_datum[hive_num] + for(var/mob_name in cur_hive.banished_ckeys) + if(cur_hive.banished_ckeys[mob_name] == xeno_candidate.ckey) + candidate_observer.larva_queue_cached_message += "\nNOTE: You are banished from the [cur_hive] and you may not rejoin unless the Queen re-admits you or dies. Your queue number won't update until there is a hive you aren't banished from." + break + to_chat(xeno_candidate, SPAN_XENONOTICE(candidate_observer.larva_queue_cached_message)) + return FALSE + + // We aren't in queue yet, lets teach them about the queue then + candidate_observer.larva_queue_cached_message = "You are currently awaiting assignment in the larva queue. The ordering is based on your time of death or the time you joined. When you have been dead long enough and are not inactive, you will periodically receive messages where you are in the queue relative to other currently valid xeno candidates. Your current position will shift as others change their preferences or go inactive, but your relative position compared to all observers is the same. Note: Playing as a facehugger or in the thunderdome will not alter your time of death. This means you won't lose your relative place in queue if you step away, disconnect, play as a facehugger, or play in the thunderdome." + to_chat(xeno_candidate, SPAN_XENONOTICE(candidate_observer.larva_queue_cached_message)) return FALSE var/mob/living/carbon/xenomorph/new_xeno @@ -377,23 +425,23 @@ Additional game mode variables. if(!xeno_bypass_timer) var/deathtime = world.time - xeno_candidate.timeofdeath if(isnewplayer(xeno_candidate)) - deathtime = 2.5 MINUTES //so new players don't have to wait to latejoin as xeno in the round's first 5 mins. - if(deathtime < 2.5 MINUTES && !check_client_rights(xeno_candidate.client, R_ADMIN, FALSE)) + deathtime = XENO_JOIN_DEAD_LARVA_TIME //so new players don't have to wait to latejoin as xeno in the round's first 5 mins. + if(deathtime < XENO_JOIN_DEAD_LARVA_TIME && !check_client_rights(xeno_candidate.client, R_ADMIN, FALSE)) var/message = SPAN_WARNING("You have been dead for [DisplayTimeText(deathtime)].") to_chat(xeno_candidate, message) - to_chat(xeno_candidate, SPAN_WARNING("You must wait 2.5 minutes before rejoining the game as a buried larva!")) + to_chat(xeno_candidate, SPAN_WARNING("You must wait 2 minutes and 30 seconds before rejoining the game as a buried larva!")) return FALSE for(var/mob_name in picked_hive.banished_ckeys) if(picked_hive.banished_ckeys[mob_name] == xeno_candidate.ckey) to_chat(xeno_candidate, SPAN_WARNING("You are banished from the [picked_hive], you may not rejoin unless the Queen re-admits you or dies.")) - return + return FALSE if(isnewplayer(xeno_candidate)) var/mob/new_player/noob = xeno_candidate noob.close_spawn_windows() if(picked_hive.hive_location) picked_hive.hive_location.spawn_burrowed_larva(xeno_candidate) - else if((world.time < 30 MINUTES + SSticker.round_start_time)) + else if((world.time < XENO_BURIED_LARVA_TIME_LIMIT + SSticker.round_start_time)) picked_hive.do_buried_larva_spawn(xeno_candidate) else to_chat(xeno_candidate, SPAN_WARNING("Seems like something went wrong. Try again?")) @@ -407,18 +455,19 @@ Additional game mode variables. return FALSE new_xeno = userInput - if(!xeno_candidate) - return FALSE - if(!(new_xeno in GLOB.living_xeno_list) || new_xeno.stat == DEAD) to_chat(xeno_candidate, SPAN_WARNING("You cannot join if the xenomorph is dead.")) return FALSE + if(new_xeno.health <= 0) + to_chat(xeno_candidate, SPAN_WARNING("You cannot join if the xenomorph is in critical condition or unconscious.")) + return FALSE + if(!xeno_bypass_timer) var/deathtime = world.time - xeno_candidate.timeofdeath if(istype(xeno_candidate, /mob/new_player)) - deathtime = 5 MINUTES //so new players don't have to wait to latejoin as xeno in the round's first 5 mins. - if(deathtime < 5 MINUTES && !check_client_rights(xeno_candidate.client, R_ADMIN, FALSE)) + deathtime = XENO_JOIN_DEAD_TIME //so new players don't have to wait to latejoin as xeno in the round's first 5 mins. + if(deathtime < XENO_JOIN_DEAD_TIME && !check_client_rights(xeno_candidate.client, R_ADMIN, FALSE)) var/message = "You have been dead for [DisplayTimeText(deathtime)]." message = SPAN_WARNING("[message]") to_chat(xeno_candidate, message) @@ -439,14 +488,14 @@ Additional game mode variables. else new_xeno = pick(available_xenos_non_ssd) //Just picks something at random. if(istype(new_xeno) && xeno_candidate && xeno_candidate.client) if(isnewplayer(xeno_candidate)) - var/mob/new_player/N = xeno_candidate - N.close_spawn_windows() + var/mob/new_player/noob = xeno_candidate + noob.close_spawn_windows() for(var/mob_name in new_xeno.hive.banished_ckeys) if(new_xeno.hive.banished_ckeys[mob_name] == xeno_candidate.ckey) to_chat(xeno_candidate, SPAN_WARNING("You are banished from this hive, You may not rejoin unless the Queen re-admits you or dies.")) - return + return FALSE if(transfer_xeno(xeno_candidate, new_xeno)) - return 1 + return TRUE to_chat(xeno_candidate, "JAS01: Something went wrong, tell a coder.") /datum/game_mode/proc/attempt_to_join_as_facehugger(mob/xeno_candidate) @@ -516,23 +565,86 @@ Additional game mode variables. return TRUE +/datum/game_mode/proc/attempt_to_join_as_lesser_drone(mob/xeno_candidate) + var/list/active_hives = list() + var/datum/hive_status/hive + var/last_active_hive = 0 + for(var/hivenumber in GLOB.hive_datum) + hive = GLOB.hive_datum[hivenumber] + if(hive.totalXenos.len <= 0) + continue + active_hives[hive.name] = hive.hivenumber + last_active_hive = hive.hivenumber + + if(active_hives.len <= 0) + to_chat(xeno_candidate, SPAN_WARNING("There aren't any Hives active at this point for you to join.")) + return FALSE + + if(active_hives.len > 1) + var/hive_picked = tgui_input_list(xeno_candidate, "Select which Hive to attempt joining.", "Hive Choice", active_hives, theme="hive_status") + if(!hive_picked) + to_chat(xeno_candidate, SPAN_ALERT("Hive choice error. Aborting.")) + return FALSE + hive = GLOB.hive_datum[active_hives[hive_picked]] + else + hive = GLOB.hive_datum[last_active_hive] + + for(var/mob_name in hive.banished_ckeys) + if(hive.banished_ckeys[mob_name] == xeno_candidate.ckey) + to_chat(xeno_candidate, SPAN_WARNING("You are banished from the [hive], you may not rejoin unless the Queen re-admits you or dies.")) + return FALSE + + var/list/selection_list = list() + var/list/selection_list_structure = list() + + if(hive.hive_location?.lesser_drone_spawns >= 1) + selection_list += "hive core" + selection_list_structure += hive.hive_location + + for(var/obj/effect/alien/resin/special/pylon/cycled_pylon as anything in hive.hive_structures[XENO_STRUCTURE_PYLON]) + if(cycled_pylon.lesser_drone_spawns >= 1) + var/pylon_number = 1 + var/pylon_name = "[cycled_pylon.name] at [get_area(cycled_pylon)]" + //For renaming the pylon if we have duplicates + var/pylon_selection_name = pylon_name + while(pylon_selection_name in selection_list) + pylon_selection_name = "[pylon_name] ([pylon_number])" + pylon_number ++ + selection_list += pylon_selection_name + selection_list_structure += cycled_pylon + + if(!length(selection_list)) + to_chat(xeno_candidate, SPAN_WARNING("The selected hive does not have enough power for a lesser drone at any hive core or pylon!")) + return FALSE + + var/prompt = tgui_input_list(xeno_candidate, "Select spawn?", "Spawnpoint Selection", selection_list) + if(!prompt) + return FALSE + + var/obj/effect/alien/resin/special/pylon/selected_structure = selection_list_structure[selection_list.Find(prompt)] + + selected_structure.spawn_lesser_drone(xeno_candidate) + + return TRUE + /datum/game_mode/proc/transfer_xeno(xeno_candidate, mob/living/new_xeno) if(!xeno_candidate || !isxeno(new_xeno) || QDELETED(new_xeno)) return FALSE + var/datum/mind/xeno_candidate_mind if(ismind(xeno_candidate)) xeno_candidate_mind = xeno_candidate else if(ismob(xeno_candidate)) - var/mob/M = xeno_candidate - if(M.mind) - xeno_candidate_mind = M.mind + var/mob/xeno_candidate_mob = xeno_candidate + if(xeno_candidate_mob.mind) + xeno_candidate_mind = xeno_candidate_mob.mind else - xeno_candidate_mind = new /datum/mind(M.key, M.ckey) + xeno_candidate_mind = new /datum/mind(xeno_candidate_mob.key, xeno_candidate_mob.ckey) xeno_candidate_mind.active = TRUE xeno_candidate_mind.current = new_xeno else if(isclient(xeno_candidate)) - var/client/C = xeno_candidate - xeno_candidate_mind = new /datum/mind(C.key, C.ckey) + var/client/xeno_candidate_client = xeno_candidate + xeno_candidate_mind = new /datum/mind(xeno_candidate_client.key, xeno_candidate_client.ckey) xeno_candidate_mind.active = TRUE xeno_candidate_mind.current = new_xeno else @@ -549,7 +661,7 @@ Additional game mode variables. // Let the round recorder know that the key has changed SSround_recording.recorder.update_key(new_xeno) if(new_xeno.client) - new_xeno.client.change_view(world_view_size) + new_xeno.client.change_view(GLOB.world_view_size) msg_admin_niche("[new_xeno.key] has joined as [new_xeno].") if(isxeno(new_xeno)) //Dear lord @@ -622,8 +734,6 @@ Additional game mode variables. to_chat(new_queen, "You should start by building a hive core.") to_chat(new_queen, "Talk in Hivemind using ; (e.g. ';Hello my children!')") - // Xeno ressource collection - //new_queen.crystal_stored = XENO_STARTING_CRYSTAL new_queen.update_icons() //===================================================\\ @@ -808,23 +918,49 @@ Additional game mode variables. //We do NOT want to initilialize the gear before everyone is properly spawned in /datum/game_mode/proc/initialize_post_marine_gear_list() - var/scale = get_scaling_value() + init_gear_scale() //Set up attachment vendor contents related to Marine count for(var/i in GLOB.cm_vending_vendors) var/obj/structure/machinery/cm_vending/sorted/CVS = i - CVS.populate_product_list_and_boxes(scale) + CVS.populate_product_list_and_boxes(gear_scale) //Scale the amount of cargo points through a direct multiplier - supply_controller.points = round(supply_controller.points * scale) + GLOB.supply_controller.points += round(GLOB.supply_controller.points_scale * gear_scale) -/datum/game_mode/proc/get_scaling_value() +///Returns a multiplier to the amount of gear that is to be distributed roundstart, stored in [/datum/game_mode/var/gear_scale] +/datum/game_mode/proc/init_gear_scale() //We take the number of marine players, deduced from other lists, and then get a scale multiplier from it, to be used in arbitrary manners to distribute equipment - //This might count players who ready up but get kicked back to the lobby - var/marine_pop_size = length(GLOB.alive_human_list) + var/marine_pop_size = 0 + var/uscm_personnel_count = 0 + for(var/mob/living/carbon/human/human as anything in GLOB.alive_human_list) + if(human.faction == FACTION_USCM) + uscm_personnel_count++ + var/datum/job/job = GET_MAPPED_ROLE(human.job) + marine_pop_size += GLOB.RoleAuthority.calculate_role_weight(job) //This gives a decimal value representing a scaling multiplier. Cannot go below 1 - return max(marine_pop_size / MARINE_GEAR_SCALING_NORMAL, 1) + gear_scale = max(marine_pop_size / MARINE_GEAR_SCALING_NORMAL, 1) + gear_scale_max = gear_scale + log_debug("SUPPLY: Game start detected [marine_pop_size] weighted marines (out of [uscm_personnel_count]/[length(GLOB.alive_human_list)] USCM humans), resulting in gear_scale = [gear_scale]") + return gear_scale + +///Updates the [/datum/game_mode/var/gear_scale] multiplier based on joining and cryoing marines +/datum/game_mode/proc/update_gear_scale(delta) + // Magic inverse function that guarantees marines still get good supplies for latejoins within first ~30 minutes but stalls starting 2 hours or so + gear_scale += delta * (0.25 + 0.75 / (1 + ROUND_TIME / 20000)) / MARINE_GEAR_SCALING_NORMAL + var/gear_delta = gear_scale - gear_scale_max + if(gear_delta > 0) + gear_scale_max = gear_scale + for(var/obj/structure/machinery/cm_vending/sorted/vendor as anything in GLOB.cm_vending_vendors) + vendor.update_dynamic_stock(gear_scale_max) + GLOB.supply_controller.points += round(gear_delta * GLOB.supply_controller.points_scale) + +/// Updates [var/latejoin_tally] and [var/gear_scale] based on role weights of latejoiners/cryoers. Delta is the amount of role positions added/removed +/datum/game_mode/proc/latejoin_update(role, delta = 1) + var/weight = GLOB.RoleAuthority.calculate_role_weight(role) + latejoin_tally += weight * delta + update_gear_scale(weight * delta) // for the toolbox /datum/game_mode/proc/end_round_message() @@ -858,32 +994,32 @@ Additional game mode variables. if(!joe_candidate.client) return - var/datum/job/joe_job = RoleAuthority.roles_by_name[JOB_WORKING_JOE] + var/datum/job/joe_job = GLOB.RoleAuthority.roles_by_name[JOB_WORKING_JOE] if(!joe_job) if(show_warning) to_chat(joe_candidate, SPAN_WARNING("Something went wrong!")) return - if(!(RoleAuthority.roles_whitelist[joe_candidate.ckey] & WHITELIST_JOE)) + if(!joe_job.check_whitelist_status(joe_candidate)) if(show_warning) to_chat(joe_candidate, SPAN_WARNING("You are not whitelisted! You may apply on the forums to be whitelisted as a synth.")) return - if(joe_candidate.ckey in joes) + if((joe_candidate.ckey in joes) && !MODE_HAS_TOGGLEABLE_FLAG(MODE_BYPASS_JOE)) if(show_warning) to_chat(joe_candidate, SPAN_WARNING("You already were a Working Joe this round!")) return // council doesn't count towards this conditional. - if(joe_job.get_whitelist_status(RoleAuthority.roles_whitelist, joe_candidate.client) == WHITELIST_NORMAL) + if(joe_job.get_whitelist_status(joe_candidate.client) == WHITELIST_NORMAL) var/joe_max = joe_job.total_positions - if(joe_job.current_positions >= joe_max) + if((joe_job.current_positions >= joe_max) && !MODE_HAS_TOGGLEABLE_FLAG(MODE_BYPASS_JOE)) if(show_warning) to_chat(joe_candidate, SPAN_WARNING("Only [joe_max] Working Joes may spawn per round.")) return - if(!enter_allowed) + if(!GLOB.enter_allowed && !MODE_HAS_TOGGLEABLE_FLAG(MODE_BYPASS_JOE)) if(show_warning) to_chat(joe_candidate, SPAN_WARNING("There is an administrative lock from entering the game.")) return @@ -900,17 +1036,17 @@ Additional game mode variables. log_debug("Null client attempted to transform_joe") return - var/turf/spawn_point = get_turf(pick(GLOB.latejoin)) + var/turf/spawn_point = get_turf(pick(GLOB.latejoin_by_job[JOB_WORKING_JOE])) var/mob/living/carbon/human/synthetic/new_joe = new(spawn_point) joe_candidate.mind.transfer_to(new_joe, TRUE) - var/datum/job/joe_job = RoleAuthority.roles_by_name[JOB_WORKING_JOE] + var/datum/job/joe_job = GLOB.RoleAuthority.roles_by_name[JOB_WORKING_JOE] if(!joe_job) qdel(new_joe) return // This is usually done in assign_role, a proc which is not executed in this case, since check_joe_late_join is running its own checks. joe_job.current_positions++ - RoleAuthority.equip_role(new_joe, joe_job, new_joe.loc) + GLOB.RoleAuthority.equip_role(new_joe, joe_job, new_joe.loc) GLOB.data_core.manifest_inject(new_joe) SSticker.minds += new_joe.mind return new_joe diff --git a/code/game/gamemodes/cm_process.dm b/code/game/gamemodes/cm_process.dm index e4e0e32adff4..462f82e99cec 100644 --- a/code/game/gamemodes/cm_process.dm +++ b/code/game/gamemodes/cm_process.dm @@ -39,16 +39,16 @@ of predators), but can be added to include variant game modes (like humans vs. h /datum/game_mode/proc/declare_completion_announce_fallen_soldiers() set waitfor = 0 sleep(2 SECONDS) - fallen_list += fallen_list_cross - if(fallen_list.len) + GLOB.fallen_list += GLOB.fallen_list_cross + if(GLOB.fallen_list.len) var/dat = "
" dat += SPAN_ROUNDBODY("In Flanders fields...
") dat += SPAN_CENTERBOLD("In memoriam of our fallen soldiers:
") - for(var/i = 1 to fallen_list.len) - if(i != fallen_list.len) - dat += "[fallen_list[i]], " + for(var/i = 1 to GLOB.fallen_list.len) + if(i != GLOB.fallen_list.len) + dat += "[GLOB.fallen_list[i]], " else - dat += "[fallen_list[i]].
" + dat += "[GLOB.fallen_list[i]].
" to_world("[dat]") @@ -58,18 +58,18 @@ of predators), but can be added to include variant game modes (like humans vs. h if(LAZYLEN(xenomorphs) || LAZYLEN(dead_queens)) var/dat = "
" dat += SPAN_ROUNDBODY("
The xenomorph Queen(s) were:") - var/mob/M + var/mob/living/carbon/xenomorph/xeno_mob for (var/msg in dead_queens) dat += msg - for(var/datum/mind/X in xenomorphs) - if(!istype(X)) + for(var/datum/mind/xeno_mind in xenomorphs) + if(!istype(xeno_mind)) continue - M = X.current - if(!M || !M.loc) - M = X.original - if(M && M.loc && isqueen(M) && M.stat != DEAD) // Dead queens handled separately - dat += "
[X.key] was [M] [SPAN_BOLDNOTICE("(SURVIVED)")]" + xeno_mob = xeno_mind.current + if(!xeno_mob || !xeno_mob.loc) + xeno_mob = xeno_mind.original + if(xeno_mob && xeno_mob.loc && isqueen(xeno_mob) && xeno_mob.stat != DEAD) // Dead queens handled separately + dat += "
[xeno_mob.full_designation] was [xeno_mob] [SPAN_BOLDNOTICE("(SURVIVED)")]" to_world("[dat]") @@ -134,7 +134,7 @@ of predators), but can be added to include variant game modes (like humans vs. h // Open podlocks with the given ID if they aren't already opened. // DO NOT USE THIS WITH ID's CORRESPONDING TO SHUTTLES OR THEY WILL BREAK! /datum/game_mode/proc/open_podlocks(podlock_id) - for(var/obj/structure/machinery/door/poddoor/M in machines) + for(var/obj/structure/machinery/door/poddoor/M in GLOB.machines) if(M.id == podlock_id && M.density) M.open() @@ -244,6 +244,34 @@ GLOBAL_VAR_INIT(next_admin_bioscan, 30 MINUTES) return num_marines +/datum/game_mode/proc/count_per_faction(list/z_levels = SSmapping.levels_by_any_trait(list(ZTRAIT_GROUND, ZTRAIT_RESERVED, ZTRAIT_MARINE_MAIN_SHIP))) + var/num_marines = 0 + var/num_WY = 0 + var/num_UPP = 0 + var/num_CLF = 0 + var/num_headcount = 0 + + for(var/mob/living/carbon/human/current_human as anything in GLOB.alive_human_list) + if(!(current_human.z && (current_human.z in z_levels) && !istype(current_human.loc, /turf/open/space))) + continue + if(current_human.faction in FACTION_LIST_WY || current_human.job == "Corporate Liaison") //The CL is assigned the USCM faction for gameplay purposes + num_WY++ + num_headcount++ + continue + if(current_human.faction == FACTION_UPP) + num_UPP++ + num_headcount++ + continue + if(current_human.faction == FACTION_CLF) + num_CLF++ + num_headcount++ + continue + if(current_human.faction == FACTION_MARINE) + num_marines++ + num_headcount++ + continue + num_headcount++ + return list("marine_headcount" = num_marines,"WY_headcount" = num_WY,"UPP_headcount" = num_UPP,"CLF_headcount" = num_CLF,"total_headcount" = num_headcount) /* #undef QUEEN_DEATH_COUNTDOWN diff --git a/code/game/gamemodes/cm_self_destruct.dm b/code/game/gamemodes/cm_self_destruct.dm deleted file mode 100644 index 8c022fd0d916..000000000000 --- a/code/game/gamemodes/cm_self_destruct.dm +++ /dev/null @@ -1,476 +0,0 @@ -/* -TODO -Look into animation screen not showing on self-destruct and other weirdness -Intergrate distress into this controller. -Finish nanoui conversion for comm console. -Make sure people who get nuked and wake up from SSD don't live. -Add flashing lights to evac. //DEFERRED TO BETTER LIGHTING -Finish the game mode announcement thing. -Fix escape doors to work properly. -*/ - -/* -How this works: - -First: All of the linking is done automatically on world start, so nothing needs to be done on that end other than making -sure that objects are actually placed in the game world. If not, the game will error and let you know about it. But you -don't need to modify variables or worry about area placement. It's all done for you. -The rods, for example, configure the time per activation based on their number. Shuttles link their own machines via area. -Nothing in this controller is linked to game mode, so it's stand alone, more or less, but it's best used during a game mode. -Admins have a lot of tools in their disposal via the check antagonist panel, and devs can access the VV of this controller -through that panel. - -Second: The communication console handles most of the IC triggers for activating these functions, the rest is handled elsewhere. -Check communications.dm for that. shuttle_controller.dm handles the set up for the escape pods. escape_pods.dm handles most of the -functions of the escape pods themselves. This file would likely need to be broken down into individual parts at some point in the -future. - -Evacuation takes place when sufficient alert level is reaised and a distress beacon was launched. All of the evac pods come online -and open their doors to allow entry inside. Characters may then get inside of the cryo units to before the shuttles automatically launch. -If wanted, a nearby controller object may launch each individual shuttle early. Only three people may ride on a shuttle to escape, -otherwise the launch will fail and the shuttle will become inoperable. -Any launched shuttles are taken out of the game. If the evacuation is canceled, any persons inside of the cryo tubes will be ejected. -They may temporarily open the door to exit if they are stuck inside after evac is canceled. - -When the self-destruct is enabled, the console comes online. This usually happens during an evacuation. Once the console is -interacted with, it fires up the self-destruct sequence. Several rods rise and must be interacted with in order to arm the system. -Once that happens, the console must be interacted with again to trigger the self-destruct. The self-destruct may also be -canceled from the console. - -The self-destruct may also happen if a nuke is detonated on the ship's zlevel; if it is detonated elsewhere, the ship will not blow up. -Regardless of where it's detonated, or how, a successful detonation will end the round or automatically restart the game. - -All of the necessary difines are stored under mode.dm in defines. -*/ - -var/global/datum/authority/branch/evacuation/EvacuationAuthority //This is initited elsewhere so that the world has a chance to load in. - -/datum/authority/branch/evacuation - var/name = "Evacuation Authority" - var/evac_time //Time the evacuation was initiated. - var/evac_status = EVACUATION_STATUS_STANDING_BY //What it's doing now? It can be standing by, getting ready to launch, or finished. - - var/obj/structure/machinery/self_destruct/console/dest_master //The main console that does the brunt of the work. - var/dest_rods[] //Slave devices to make the explosion work. - var/dest_cooldown //How long it takes between rods, determined by the amount of total rods present. - var/dest_index = 1 //What rod the thing is currently on. - var/dest_status = NUKE_EXPLOSION_INACTIVE - var/dest_started_at = 0 - - var/flags_scuttle = NO_FLAGS - -/datum/authority/branch/evacuation/New() - ..() - dest_master = locate() - if(!dest_master) - log_debug("ERROR CODE SD1: could not find master self-destruct console") - to_world(SPAN_DEBUG("ERROR CODE SD1: could not find master self-destruct console")) - return FALSE - dest_rods = new - for(var/obj/structure/machinery/self_destruct/rod/I in dest_master.loc.loc) dest_rods += I - if(!dest_rods.len) - log_debug("ERROR CODE SD2: could not find any self-destruct rods") - to_world(SPAN_DEBUG("ERROR CODE SD2: could not find any self-destruct rods")) - QDEL_NULL(dest_master) - return FALSE - dest_cooldown = SELF_DESTRUCT_ROD_STARTUP_TIME / dest_rods.len - dest_master.desc = "The main operating panel for a self-destruct system. It requires very little user input, but the final safety mechanism is manually unlocked.\nAfter the initial start-up sequence, [dest_rods.len] control rods must be armed, followed by manually flipping the detonation switch." - -/** - * This proc returns the ship's z level list (or whatever specified), - * when an evac/self-destruct happens. - */ -/datum/authority/branch/evacuation/proc/get_affected_zlevels() - //Nuke is not in progress, end the round on ship only. - if(dest_status < NUKE_EXPLOSION_IN_PROGRESS && SSticker?.mode.is_in_endgame) - . = SSmapping.levels_by_any_trait(list(ZTRAIT_MARINE_MAIN_SHIP)) - return - -//========================================================================================= -//========================================================================================= -//=====================================EVACUATION========================================== -//========================================================================================= -//========================================================================================= - - -/datum/authority/branch/evacuation/proc/initiate_evacuation(force=0) //Begins the evacuation procedure. - if(force || (evac_status == EVACUATION_STATUS_STANDING_BY && !(flags_scuttle & FLAGS_EVACUATION_DENY))) - evac_time = world.time - evac_status = EVACUATION_STATUS_INITIATING - ai_announcement("Attention. Emergency. All personnel must evacuate immediately. You have [round(EVACUATION_ESTIMATE_DEPARTURE/60,1)] minute\s until departure.", 'sound/AI/evacuate.ogg') - xeno_message_all("A wave of adrenaline ripples through the hive. The fleshy creatures are trying to escape!") - - for(var/obj/structure/machinery/status_display/SD in machines) - if(is_mainship_level(SD.z)) - SD.set_picture("evac") - for(var/obj/docking_port/mobile/escape_shuttle/shuttle in SSshuttle.mobile) - shuttle.prepare_evac() - activate_lifeboats() - process_evacuation() - return TRUE - -/datum/authority/branch/evacuation/proc/cancel_evacuation() //Cancels the evac procedure. Useful if admins do not want the marines leaving. - if(evac_status == EVACUATION_STATUS_INITIATING) - evac_time = null - evac_status = EVACUATION_STATUS_STANDING_BY - deactivate_lifeboats() - ai_announcement("Evacuation has been cancelled.", 'sound/AI/evacuate_cancelled.ogg') - - if(get_security_level() == "red") - for(var/obj/structure/machinery/status_display/SD in machines) - if(is_mainship_level(SD.z)) - SD.set_picture("redalert") - - for(var/obj/docking_port/mobile/escape_shuttle/shuttle in SSshuttle.mobile) - shuttle.cancel_evac() - return TRUE - -/datum/authority/branch/evacuation/proc/begin_launch() //Launches the pods. - if(evac_status == EVACUATION_STATUS_INITIATING) - evac_status = EVACUATION_STATUS_IN_PROGRESS //Cannot cancel at this point. All shuttles are off. - spawn() //One of the few times spawn() is appropriate. No need for a new proc. - ai_announcement("WARNING: Evacuation order confirmed. Launching escape pods.", 'sound/AI/evacuation_confirmed.ogg') - addtimer(CALLBACK(src, PROC_REF(launch_lifeboats)), 10 SECONDS) // giving some time to board lifeboats - - for(var/obj/docking_port/mobile/escape_shuttle/shuttle in SSshuttle.mobile) - shuttle.evac_launch() - sleep(50) - - sleep(300) //Sleep 30 more seconds to make sure everyone had a chance to leave. - var/lifesigns = 0 - // lifesigns += P.passengers - var/obj/docking_port/mobile/lifeboat/lifeboat1 = SSshuttle.getShuttle(MOBILE_SHUTTLE_LIFEBOAT_PORT) - lifeboat1.check_for_survivors() - lifesigns += lifeboat1.survivors - var/obj/docking_port/mobile/lifeboat/lifeboat2 = SSshuttle.getShuttle(MOBILE_SHUTTLE_LIFEBOAT_STARBOARD) - lifeboat2.check_for_survivors() - lifesigns += lifeboat2.survivors - ai_announcement("ATTENTION: Evacuation complete. Outbound lifesigns detected: [lifesigns ? lifesigns : "none"].", 'sound/AI/evacuation_complete.ogg') - evac_status = EVACUATION_STATUS_COMPLETE - return TRUE - -/datum/authority/branch/evacuation/proc/process_evacuation() //Process the timer. - set background = 1 - - spawn while(evac_status == EVACUATION_STATUS_INITIATING) //If it's not departing, no need to process. - if(world.time >= evac_time + EVACUATION_AUTOMATIC_DEPARTURE) begin_launch() - sleep(10) //One second. - -/datum/authority/branch/evacuation/proc/get_status_panel_eta() - switch(evac_status) - if(EVACUATION_STATUS_INITIATING) - var/eta = EVACUATION_ESTIMATE_DEPARTURE - . = "[(eta / 60) % 60]:[add_zero(num2text(eta % 60), 2)]" - if(EVACUATION_STATUS_IN_PROGRESS) . = "NOW" - -// LIFEBOATS CORNER -/datum/authority/branch/evacuation/proc/activate_lifeboats() - for(var/obj/docking_port/stationary/lifeboat_dock/lifeboat_dock in GLOB.lifeboat_almayer_docks) - var/obj/docking_port/mobile/lifeboat/lifeboat = lifeboat_dock.get_docked() - if(lifeboat && lifeboat.available) - lifeboat.status = LIFEBOAT_ACTIVE - lifeboat_dock.open_dock() - - -/datum/authority/branch/evacuation/proc/deactivate_lifeboats() - for(var/obj/docking_port/stationary/lifeboat_dock/lifeboat_dock in GLOB.lifeboat_almayer_docks) - var/obj/docking_port/mobile/lifeboat/lifeboat = lifeboat_dock.get_docked() - if(lifeboat && lifeboat.available) - lifeboat.status = LIFEBOAT_INACTIVE - -/datum/authority/branch/evacuation/proc/launch_lifeboats() - for(var/obj/docking_port/stationary/lifeboat_dock/lifeboat_dock in GLOB.lifeboat_almayer_docks) - var/obj/docking_port/mobile/lifeboat/lifeboat = lifeboat_dock.get_docked() - if(lifeboat && lifeboat.available) - lifeboat.send_to_infinite_transit() - -//========================================================================================= -//========================================================================================= -//=====================================SELF DETRUCT======================================== -//========================================================================================= -//========================================================================================= - -/datum/authority/branch/evacuation/proc/enable_self_destruct(force=0) - if(force || (dest_status == NUKE_EXPLOSION_INACTIVE && !(flags_scuttle & FLAGS_SELF_DESTRUCT_DENY))) - dest_status = NUKE_EXPLOSION_ACTIVE - dest_master.lock_or_unlock() - dest_started_at = world.time - set_security_level(SEC_LEVEL_DELTA) //also activate Delta alert, to open the SD shutters. - spawn(0) - for(var/obj/structure/machinery/door/poddoor/shutters/almayer/D in machines) - if(D.id == "sd_lockdown") - D.open() - return TRUE - -//Override is for admins bypassing normal player restrictions. -/datum/authority/branch/evacuation/proc/cancel_self_destruct(override) - if(dest_status == NUKE_EXPLOSION_ACTIVE) - var/obj/structure/machinery/self_destruct/rod/I - var/i - for(i in EvacuationAuthority.dest_rods) - I = i - if(I.active_state == SELF_DESTRUCT_MACHINE_ARMED && !override) - dest_master.state(SPAN_WARNING("WARNING: Unable to cancel detonation. Please disarm all control rods.")) - return FALSE - - dest_status = NUKE_EXPLOSION_INACTIVE - dest_master.in_progress = 1 - dest_started_at = 0 - for(i in dest_rods) - I = i - if(I.active_state == SELF_DESTRUCT_MACHINE_ACTIVE || (I.active_state == SELF_DESTRUCT_MACHINE_ARMED && override)) I.lock_or_unlock(1) - dest_master.lock_or_unlock(1) - dest_index = 1 - ai_announcement("The emergency destruct system has been deactivated.", 'sound/AI/selfdestruct_deactivated.ogg') - if(evac_status == EVACUATION_STATUS_STANDING_BY) //the evac has also been cancelled or was never started. - set_security_level(SEC_LEVEL_RED, TRUE) //both SD and evac are inactive, lowering the security level. - return TRUE - -/datum/authority/branch/evacuation/proc/initiate_self_destruct(override) - if(dest_status < NUKE_EXPLOSION_IN_PROGRESS) - var/obj/structure/machinery/self_destruct/rod/I - var/i - for(i in dest_rods) - I = i - if(I.active_state != SELF_DESTRUCT_MACHINE_ARMED && !override) - dest_master.state(SPAN_WARNING("WARNING: Unable to trigger detonation. Please arm all control rods.")) - return FALSE - dest_master.in_progress = !dest_master.in_progress - for(i in EvacuationAuthority.dest_rods) - I = i - I.in_progress = 1 - ai_announcement("DANGER. DANGER. Self-destruct system activated. DANGER. DANGER. Self-destruct in progress. DANGER. DANGER.") - trigger_self_destruct(,,override) - return TRUE - -/datum/authority/branch/evacuation/proc/trigger_self_destruct(list/z_levels = SSmapping.levels_by_trait(ZTRAIT_MARINE_MAIN_SHIP), origin = dest_master, override = FALSE, end_type = NUKE_EXPLOSION_FINISHED, play_anim = TRUE, end_round = TRUE) - set waitfor = 0 - if(dest_status < NUKE_EXPLOSION_IN_PROGRESS) //One more check for good measure, in case it's triggered through a bomb instead of the destruct mechanism/admin panel. - dest_status = NUKE_EXPLOSION_IN_PROGRESS - playsound(origin, 'sound/machines/Alarm.ogg', 75, 0, 30) - world << pick('sound/theme/nuclear_detonation1.ogg','sound/theme/nuclear_detonation2.ogg') - - var/ship_status = 1 - for(var/i in z_levels) - if(is_mainship_level(i)) - ship_status = 0 //Destroyed. - break - - var/list/alive_mobs = list() //Everyone who will be destroyed on the zlevel(s). - var/list/dead_mobs = list() //Everyone who only needs to see the cinematic. - for(var/mob/current_mob as anything in GLOB.mob_list) //This only does something cool for the people about to die, but should prove pretty interesting. - if(!current_mob || !current_mob.loc) - continue //In case something changes when we sleep(). - if(current_mob.stat == DEAD) - dead_mobs |= current_mob - continue - var/turf/current_turf = get_turf(current_mob) - if(current_turf.z in z_levels) - alive_mobs |= current_mob - shake_camera(current_mob, 110, 4) - - - sleep(100) - /*Hardcoded for now, since this was never really used for anything else. - Would ideally use a better system for showing cutscenes.*/ - var/atom/movable/screen/cinematic/explosion/C = new - - if(play_anim) - for(var/mob/current_mob as anything in alive_mobs + dead_mobs) - if(current_mob && current_mob.loc && current_mob.client) - current_mob.client.screen |= C //They may have disconnected in the mean time. - - sleep(15) //Extra 1.5 seconds to look at the ship. - flick(override ? "intro_override" : "intro_nuke", C) - sleep(35) - for(var/mob/current_mob in alive_mobs) - if(current_mob && current_mob.loc) //Who knows, maybe they escaped, or don't exist anymore. - var/turf/current_mob_turf = get_turf(current_mob) - if(current_mob_turf.z in z_levels) - if(istype(current_mob.loc, /obj/structure/closet/secure_closet/freezer/fridge)) - continue - current_mob.death(create_cause_data("nuclear explosion")) - else - if(play_anim) - current_mob.client.screen -= C //those who managed to escape the z level at last second shouldn't have their view obstructed. - if(play_anim) - flick(ship_status ? "ship_spared" : "ship_destroyed", C) - C.icon_state = ship_status ? "summary_spared" : "summary_destroyed" - world << sound('sound/effects/explosionfar.ogg') - - if(end_round) - dest_status = end_type - - sleep(5) - if(SSticker.mode) - SSticker.mode.check_win() - - if(!SSticker.mode) //Just a safety, just in case a mode isn't running, somehow. - to_world(SPAN_ROUNDBODY("Resetting in 30 seconds!")) - sleep(300) - log_game("Rebooting due to nuclear detonation.") - world.Reboot() - return TRUE - -/datum/authority/branch/evacuation/proc/process_self_destruct() - set background = 1 - - spawn while(dest_master && dest_master.loc && dest_master.active_state == SELF_DESTRUCT_MACHINE_ARMED && dest_status == NUKE_EXPLOSION_ACTIVE && dest_index <= dest_rods.len) - var/obj/structure/machinery/self_destruct/rod/I = dest_rods[dest_index] - if(world.time >= dest_cooldown + I.activate_time) - I.lock_or_unlock() //Unlock it. - if(++dest_index <= dest_rods.len) - I = dest_rods[dest_index]//Start the next sequence. - I.activate_time = world.time - sleep(10) //Checks every second. Could integrate into another controller for better tracking. - -//Generic parent base for the self_destruct items. -/obj/structure/machinery/self_destruct - icon = 'icons/obj/structures/machinery/self_destruct.dmi' - icon_state = "console_1" - var/base_icon_state = "console" - use_power = USE_POWER_NONE //Runs unpowered, may need to change later. - density = FALSE - anchored = TRUE //So it doesn't go anywhere. - unslashable = TRUE - unacidable = TRUE //Cannot C4 it either. - mouse_opacity = FALSE //No need to click or interact with this initially. - var/in_progress = 0 //Cannot interact with while it's doing something, like an animation. - var/active_state = SELF_DESTRUCT_MACHINE_INACTIVE //What step of the process it's on. - -/obj/structure/machinery/self_destruct/Initialize(mapload, ...) - . = ..() - icon_state = "[base_icon_state]_1" - -/obj/structure/machinery/self_destruct/Destroy() - . = ..() - machines -= src - operator = null - -/obj/structure/machinery/self_destruct/ex_act(severity) - return FALSE - -/obj/structure/machinery/self_destruct/attack_hand() - if(..() || in_progress) - return FALSE //This check is backward, ugh. - return TRUE - -//Add sounds. -/obj/structure/machinery/self_destruct/proc/lock_or_unlock(lock) - set waitfor = 0 - in_progress = 1 - flick("[base_icon_state]" + (lock? "_5" : "_2"),src) - sleep(9) - mouse_opacity = !mouse_opacity - icon_state = "[base_icon_state]" + (lock? "_1" : "_3") - in_progress = 0 - active_state = active_state > SELF_DESTRUCT_MACHINE_INACTIVE ? SELF_DESTRUCT_MACHINE_INACTIVE : SELF_DESTRUCT_MACHINE_ACTIVE - -/obj/structure/machinery/self_destruct/console - name = "self-destruct control panel" - icon_state = "console_1" - base_icon_state = "console" - req_one_access = list(ACCESS_MARINE_CO, ACCESS_MARINE_SENIOR) - -/obj/structure/machinery/self_destruct/console/Destroy() - . = ..() - EvacuationAuthority.dest_master = null - EvacuationAuthority.dest_rods = null - -/obj/structure/machinery/self_destruct/console/lock_or_unlock(lock) - playsound(src, 'sound/machines/hydraulics_1.ogg', 25, 1) - ..() - -//TODO: Add sounds. -/obj/structure/machinery/self_destruct/console/attack_hand(mob/user) - if(inoperable()) - return - - tgui_interact(user) - -/obj/structure/machinery/self_destruct/console/tgui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "SelfDestructConsole", name) - ui.open() - -/obj/structure/machinery/sleep_console/ui_status(mob/user, datum/ui_state/state) - . = ..() - if(inoperable()) - return UI_CLOSE - - -/obj/structure/machinery/self_destruct/console/ui_data(mob/user) - var/list/data = list() - - data["dest_status"] = active_state - - return data - -/obj/structure/machinery/self_destruct/console/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) - . = ..() - if(.) - return - - switch(action) - if("dest_start") - to_chat(usr, SPAN_NOTICE("You press a few keys on the panel.")) - to_chat(usr, SPAN_NOTICE("The system must be booting up the self-destruct sequence now.")) - playsound(src.loc, 'sound/items/rped.ogg', 25, TRUE) - sleep(2 SECONDS) - ai_announcement("Danger. The emergency destruct system is now activated. The ship will detonate in T-minus 20 minutes. Automatic detonation is unavailable. Manual detonation is required.", 'sound/AI/selfdestruct.ogg') - active_state = SELF_DESTRUCT_MACHINE_ARMED //Arm it here so the process can execute it later. - var/obj/structure/machinery/self_destruct/rod/I = EvacuationAuthority.dest_rods[EvacuationAuthority.dest_index] - I.activate_time = world.time - EvacuationAuthority.process_self_destruct() - . = TRUE - - if("dest_trigger") - EvacuationAuthority.initiate_self_destruct() - . = TRUE - - if("dest_cancel") - if(!allowed(usr)) - to_chat(usr, SPAN_WARNING("You don't have the necessary clearance to cancel the emergency destruct system!")) - return - EvacuationAuthority.cancel_self_destruct() - . = TRUE - -/obj/structure/machinery/self_destruct/rod - name = "self-destruct control rod" - desc = "It is part of a complicated self-destruct sequence, but relatively simple to operate. Twist to arm or disarm." - icon_state = "rod_1" - base_icon_state = "rod" - layer = BELOW_OBJ_LAYER - var/activate_time - -/obj/structure/machinery/self_destruct/rod/Destroy() - . = ..() - if(EvacuationAuthority && EvacuationAuthority.dest_rods) - EvacuationAuthority.dest_rods -= src - -/obj/structure/machinery/self_destruct/rod/lock_or_unlock(lock) - playsound(src, 'sound/machines/hydraulics_2.ogg', 25, 1) - ..() - if(lock) - activate_time = null - density = FALSE - layer = initial(layer) - else - density = TRUE - layer = ABOVE_OBJ_LAYER - -/obj/structure/machinery/self_destruct/rod/attack_hand(mob/user) - if(..()) - switch(active_state) - if(SELF_DESTRUCT_MACHINE_ACTIVE) - to_chat(user, SPAN_NOTICE("You twist and release the control rod, arming it.")) - playsound(src, 'sound/machines/switch.ogg', 25, 1) - icon_state = "rod_4" - active_state = SELF_DESTRUCT_MACHINE_ARMED - if(SELF_DESTRUCT_MACHINE_ARMED) - to_chat(user, SPAN_NOTICE("You twist and release the control rod, disarming it.")) - playsound(src, 'sound/machines/switch.ogg', 25, 1) - icon_state = "rod_3" - active_state = SELF_DESTRUCT_MACHINE_ACTIVE - else to_chat(user, SPAN_WARNING("The control rod is not ready.")) diff --git a/code/game/gamemodes/colonialmarines/colonialmarines.dm b/code/game/gamemodes/colonialmarines/colonialmarines.dm index 6fae17b6aac9..192277a250cc 100644 --- a/code/game/gamemodes/colonialmarines/colonialmarines.dm +++ b/code/game/gamemodes/colonialmarines/colonialmarines.dm @@ -21,7 +21,7 @@ //////////////////////////////////////////////////////////////////////////////////////// /* Pre-pre-startup */ -/datum/game_mode/colonialmarines/can_start() +/datum/game_mode/colonialmarines/can_start(bypass_checks = FALSE) initialize_special_clamps() return TRUE @@ -29,7 +29,7 @@ to_chat_spaced(world, type = MESSAGE_TYPE_SYSTEM, html = SPAN_ROUNDHEADER("The current map is - [SSmapping.configs[GROUND_MAP].map_name]!")) /datum/game_mode/colonialmarines/get_roles_list() - return ROLES_DISTRESS_SIGNAL + return GLOB.ROLES_DISTRESS_SIGNAL //////////////////////////////////////////////////////////////////////////////////////// //Temporary, until we sort this out properly. @@ -118,8 +118,6 @@ if(SSmapping.configs[GROUND_MAP].environment_traits[ZTRAIT_BASIC_RT]) flags_round_type |= MODE_BASIC_RT - round_time_lobby = world.time - addtimer(CALLBACK(src, PROC_REF(ares_online)), 5 SECONDS) addtimer(CALLBACK(src, PROC_REF(map_announcement)), 20 SECONDS) @@ -128,7 +126,7 @@ #define MONKEYS_TO_TOTAL_RATIO 1/32 /datum/game_mode/colonialmarines/proc/spawn_smallhosts() - if(!players_preassigned) + if(!GLOB.players_preassigned) return monkey_types = SSmapping.configs[GROUND_MAP].monkey_types @@ -136,18 +134,13 @@ if(!length(monkey_types)) return - var/amount_to_spawn = round(players_preassigned * MONKEYS_TO_TOTAL_RATIO) + var/amount_to_spawn = round(GLOB.players_preassigned * MONKEYS_TO_TOTAL_RATIO) for(var/i in 0 to min(amount_to_spawn, length(GLOB.monkey_spawns))) var/turf/T = get_turf(pick_n_take(GLOB.monkey_spawns)) var/monkey_to_spawn = pick(monkey_types) new monkey_to_spawn(T) -/datum/game_mode/colonialmarines/proc/ares_online() - var/name = "ARES Online" - var/input = "ARES. Online. Good morning, marines." - shipwide_ai_announcement(input, name, 'sound/AI/ares_online.ogg') - /datum/game_mode/colonialmarines/proc/map_announcement() if(SSmapping.configs[GROUND_MAP].announce_text) var/rendered_announce_text = replacetext(SSmapping.configs[GROUND_MAP].announce_text, "###SHIPNAME###", MAIN_SHIP_NAME) @@ -174,7 +167,7 @@ check_ground_humans() if(next_research_allocation < world.time) - chemical_data.update_credits(chemical_data.research_allocation_amount) + GLOB.chemical_data.update_credits(GLOB.chemical_data.research_allocation_amount) next_research_allocation = world.time + research_allocation_interval if(!round_finished) @@ -212,7 +205,7 @@ to_chat(M, SPAN_XENOANNOUNCE("To my children and their Queen. I sense the large doors that trap us will open in 30 seconds.")) addtimer(CALLBACK(src, PROC_REF(open_podlocks), "map_lockdown"), 300) - if(round_should_check_for_win) + if(GLOB.round_should_check_for_win) check_win() round_checkwin = 0 @@ -272,7 +265,7 @@ continue if(groundside_humans > (groundside_xenos * GROUNDSIDE_XENO_MULTIPLIER)) - SSticker.mode.get_specific_call("Xenomorphs Groundside (Forsaken)", FALSE, FALSE) + SSticker.mode.get_specific_call("Xenomorphs Groundside (Forsaken)", TRUE, FALSE) TIMER_COOLDOWN_START(src, COOLDOWN_HIJACK_GROUND_CHECK, 1 MINUTES) @@ -304,29 +297,25 @@ if(SSticker.current_state != GAME_STATE_PLAYING) return - var/living_player_list[] = count_humans_and_xenos(EvacuationAuthority.get_affected_zlevels()) + var/living_player_list[] = count_humans_and_xenos(get_affected_zlevels()) var/num_humans = living_player_list[1] var/num_xenos = living_player_list[2] if(force_end_at && world.time > force_end_at) round_finished = MODE_INFESTATION_X_MINOR - if(EvacuationAuthority.dest_status == NUKE_EXPLOSION_FINISHED) - round_finished = MODE_GENERIC_DRAW_NUKE //Nuke went off, ending the round. - if(EvacuationAuthority.dest_status == NUKE_EXPLOSION_GROUND_FINISHED) - round_finished = MODE_INFESTATION_M_MINOR //Nuke went off, ending the round. - if(EvacuationAuthority.dest_status < NUKE_EXPLOSION_IN_PROGRESS) //If the nuke ISN'T in progress. We do not want to end the round before it detonates. - if(!num_humans && num_xenos) //No humans remain alive. - round_finished = MODE_INFESTATION_X_MAJOR //Evacuation did not take place. Everyone died. - else if(num_humans && !num_xenos) - if(SSticker.mode && SSticker.mode.is_in_endgame) - round_finished = MODE_INFESTATION_X_MINOR //Evacuation successfully took place. - else - SSticker.roundend_check_paused = TRUE - round_finished = MODE_INFESTATION_M_MAJOR //Humans destroyed the xenomorphs. - ares_conclude() - addtimer(VARSET_CALLBACK(SSticker, roundend_check_paused, FALSE), MARINE_MAJOR_ROUND_END_DELAY) - else if(!num_humans && !num_xenos) - round_finished = MODE_INFESTATION_DRAW_DEATH //Both were somehow destroyed. + + if(!num_humans && num_xenos) //No humans remain alive. + round_finished = MODE_INFESTATION_X_MAJOR //Evacuation did not take place. Everyone died. + else if(num_humans && !num_xenos) + if(SSticker.mode && SSticker.mode.is_in_endgame) + round_finished = MODE_INFESTATION_X_MINOR //Evacuation successfully took place. + else + SSticker.roundend_check_paused = TRUE + round_finished = MODE_INFESTATION_M_MAJOR //Humans destroyed the xenomorphs. + ares_conclude() + addtimer(VARSET_CALLBACK(SSticker, roundend_check_paused, FALSE), MARINE_MAJOR_ROUND_END_DELAY) + else if(!num_humans && !num_xenos) + round_finished = MODE_INFESTATION_DRAW_DEATH //Both were somehow destroyed. /datum/game_mode/colonialmarines/check_queen_status(hivenumber) set waitfor = 0 @@ -340,10 +329,13 @@ var/datum/hive_status/HS for(var/HN in GLOB.hive_datum) HS = GLOB.hive_datum[HN] - if(HS.living_xeno_queen && !is_admin_level(HS.living_xeno_queen.loc.z)) + if(HS.living_xeno_queen && !should_block_game_interaction(HS.living_xeno_queen.loc)) //Some Queen is alive, we shouldn't end the game yet return - round_finished = MODE_INFESTATION_M_MINOR + if (HS.totalXenos <= 3) + round_finished = MODE_INFESTATION_M_MAJOR + else + round_finished = MODE_INFESTATION_M_MINOR /////////////////////////////// //Checks if the round is over// @@ -354,6 +346,8 @@ ////////////////////////////////////////////////////////////////////// //Announces the end of the game with all relevant information stated// ////////////////////////////////////////////////////////////////////// +#define MAJORITY 0.5 // What percent do we consider a 'majority?' + /datum/game_mode/colonialmarines/declare_completion() announce_ending() var/musical_track @@ -362,40 +356,59 @@ if(MODE_INFESTATION_X_MAJOR) musical_track = pick('sound/theme/sad_loss1.ogg','sound/theme/sad_loss2.ogg') end_icon = "xeno_major" - if(round_statistics && round_statistics.current_map) - round_statistics.current_map.total_xeno_victories++ - round_statistics.current_map.total_xeno_majors++ + if(GLOB.round_statistics && GLOB.round_statistics.current_map) + GLOB.round_statistics.current_map.total_xeno_victories++ + GLOB.round_statistics.current_map.total_xeno_majors++ if(MODE_INFESTATION_M_MAJOR) musical_track = pick('sound/theme/winning_triumph1.ogg','sound/theme/winning_triumph2.ogg') end_icon = "marine_major" - if(round_statistics && round_statistics.current_map) - round_statistics.current_map.total_marine_victories++ - round_statistics.current_map.total_marine_majors++ + if(GLOB.round_statistics && GLOB.round_statistics.current_map) + GLOB.round_statistics.current_map.total_marine_victories++ + GLOB.round_statistics.current_map.total_marine_majors++ if(MODE_INFESTATION_X_MINOR) - musical_track = pick('sound/theme/neutral_melancholy1.ogg','sound/theme/neutral_melancholy2.ogg') + var/list/living_player_list = count_humans_and_xenos(get_affected_zlevels()) + if(living_player_list[1] && !living_player_list[2]) // If Xeno Minor but Xenos are dead and Humans are alive, see which faction is the last standing + var/headcount = count_per_faction() + var/living = headcount["total_headcount"] + if ((headcount["WY_headcount"] / living) > MAJORITY) + musical_track = pick('sound/theme/lastmanstanding_wy.ogg') + log_game("3rd party victory: Weyland-Yutani") + message_admins("3rd party victory: Weyland-Yutani") + else if ((headcount["UPP_headcount"] / living) > MAJORITY) + musical_track = pick('sound/theme/lastmanstanding_upp.ogg') + log_game("3rd party victory: Union of Progressive Peoples") + message_admins("3rd party victory: Union of Progressive Peoples") + else if ((headcount["CLF_headcount"] / living) > MAJORITY) + musical_track = pick('sound/theme/lastmanstanding_clf.ogg') + log_game("3rd party victory: Colonial Liberation Front") + message_admins("3rd party victory: Colonial Liberation Front") + else if ((headcount["marine_headcount"] / living) > MAJORITY) + musical_track = pick('sound/theme/neutral_melancholy2.ogg') //This is the theme song for Colonial Marines the game, fitting + else + musical_track = pick('sound/theme/neutral_melancholy1.ogg') end_icon = "xeno_minor" - if(round_statistics && round_statistics.current_map) - round_statistics.current_map.total_xeno_victories++ + if(GLOB.round_statistics && GLOB.round_statistics.current_map) + GLOB.round_statistics.current_map.total_xeno_victories++ if(MODE_INFESTATION_M_MINOR) musical_track = pick('sound/theme/neutral_hopeful1.ogg','sound/theme/neutral_hopeful2.ogg') end_icon = "marine_minor" - if(round_statistics && round_statistics.current_map) - round_statistics.current_map.total_marine_victories++ + if(GLOB.round_statistics && GLOB.round_statistics.current_map) + GLOB.round_statistics.current_map.total_marine_victories++ if(MODE_INFESTATION_DRAW_DEATH) end_icon = "draw" musical_track = 'sound/theme/neutral_hopeful2.ogg' - if(round_statistics && round_statistics.current_map) - round_statistics.current_map.total_draws++ + if(GLOB.round_statistics && GLOB.round_statistics.current_map) + GLOB.round_statistics.current_map.total_draws++ var/sound/S = sound(musical_track, channel = SOUND_CHANNEL_LOBBY) S.status = SOUND_STREAM sound_to(world, S) - if(round_statistics) - round_statistics.game_mode = name - round_statistics.round_length = world.time - round_statistics.round_result = round_finished - round_statistics.end_round_player_population = GLOB.clients.len + if(GLOB.round_statistics) + GLOB.round_statistics.game_mode = name + GLOB.round_statistics.round_length = world.time + GLOB.round_statistics.round_result = round_finished + GLOB.round_statistics.end_round_player_population = GLOB.clients.len - round_statistics.log_round_statistics() + GLOB.round_statistics.log_round_statistics() calculate_end_statistics() show_end_statistics(end_icon) @@ -436,11 +449,11 @@ ) //organize our jobs in a readable and standard way - for(var/job in ROLES_MARINES) + for(var/job in GLOB.ROLES_MARINES) counted_humans["Squad Marines"][job] = 0 - for(var/job in ROLES_USCM - ROLES_MARINES) + for(var/job in GLOB.ROLES_USCM - GLOB.ROLES_MARINES) counted_humans["Auxiliary Marines"][job] = 0 - for(var/job in ROLES_SPECIAL) + for(var/job in GLOB.ROLES_SPECIAL) counted_humans["Non-Standard Humans"][job] = 0 var/list/counted_xenos = list() @@ -459,7 +472,7 @@ if(player_client.mob && player_client.mob.stat != DEAD) if(ishuman(player_client.mob)) if(player_client.mob.faction == FACTION_MARINE) - if(player_client.mob.job in (ROLES_MARINES)) + if(player_client.mob.job in (GLOB.ROLES_MARINES)) counted_humans["Squad Marines"][player_client.mob.job]++ else counted_humans["Auxiliary Marines"][player_client.mob.job]++ @@ -581,3 +594,4 @@ #undef HIJACK_EXPLOSION_COUNT #undef MARINE_MAJOR_ROUND_END_DELAY +#undef MAJORITY diff --git a/code/game/gamemodes/colonialmarines/huntergames.dm b/code/game/gamemodes/colonialmarines/huntergames.dm index c8c90fa51c0c..310785070458 100644 --- a/code/game/gamemodes/colonialmarines/huntergames.dm +++ b/code/game/gamemodes/colonialmarines/huntergames.dm @@ -11,11 +11,11 @@ #define HUNTER_GOOD_ITEM pick(\ 50; /obj/item/weapon/shield/riot, \ - 100; /obj/item/weapon/claymore, \ - 100; /obj/item/weapon/katana, \ + 100; /obj/item/weapon/sword, \ + 100; /obj/item/weapon/sword/katana, \ 100; /obj/item/weapon/harpoon/yautja, \ - 150; /obj/item/weapon/claymore/mercsword, \ - 200; /obj/item/weapon/claymore/mercsword/machete, \ + 150; /obj/item/weapon/sword, \ + 200; /obj/item/weapon/sword/machete, \ 125; /obj/item/weapon/twohanded/fireaxe, \ \ 100; /obj/item/device/binoculars, \ @@ -51,7 +51,7 @@ 300; /obj/item/tool/hatchet, \ 100; /obj/item/tool/scythe, \ 100; /obj/item/tool/kitchen/knife/butcher, \ - 50; /obj/item/weapon/katana/replica, \ + 50; /obj/item/weapon/sword/katana/replica, \ 100; /obj/item/weapon/harpoon, \ 75; /obj/item/attachable/bayonet, \ 200; /obj/item/weapon/throwing_knife, \ @@ -83,8 +83,6 @@ 100; /obj/item/clothing/suit/storage/CMB \ ) -var/waiting_for_drop_votes = 0 - //Digging through this is a pain. I'm leaving it mostly alone until a full rework takes place. /datum/game_mode/huntergames @@ -105,6 +103,8 @@ var/waiting_for_drop_votes = 0 var/ticks_passed = 0 var/drops_disabled = 0 + var/waiting_for_drop_votes = FALSE + votable = FALSE // borkeds taskbar_icon = 'icons/taskbar/gml_hgames.png' @@ -234,7 +234,7 @@ var/waiting_for_drop_votes = 0 H = new(picked) H.key = M.key - if(H.client) H.client.change_view(world_view_size) + if(H.client) H.client.change_view(GLOB.world_view_size) if(!H.mind) H.mind = new(H.key) @@ -244,7 +244,8 @@ var/waiting_for_drop_votes = 0 H.skills = null //no restriction on what the contestants can do - H.apply_effect(15, WEAKEN) + H.KnockDown(15) + H.Stun(15) H.nutrition = NUTRITION_NORMAL var/randjob = rand(0,10) @@ -393,8 +394,8 @@ var/waiting_for_drop_votes = 0 //Announces the end of the game with all relevant information stated// ////////////////////////////////////////////////////////////////////// /datum/game_mode/huntergames/declare_completion() - if(round_statistics) - round_statistics.track_round_end() + if(GLOB.round_statistics) + GLOB.round_statistics.track_round_end() var/mob/living/carbon/winner = null for(var/mob/living/carbon/human/Q in GLOB.alive_mob_list) @@ -415,12 +416,12 @@ var/waiting_for_drop_votes = 0 to_world("There was a winner, but they died before they could receive the prize!! Bummer.") world << 'sound/misc/sadtrombone.ogg' - if(round_statistics) - round_statistics.game_mode = name - round_statistics.round_length = world.time - round_statistics.end_round_player_population = count_humans() + if(GLOB.round_statistics) + GLOB.round_statistics.game_mode = name + GLOB.round_statistics.round_length = world.time + GLOB.round_statistics.end_round_player_population = count_humans() - round_statistics.log_round_statistics() + GLOB.round_statistics.log_round_statistics() return 1 diff --git a/code/game/gamemodes/colonialmarines/whiskey_outpost.dm b/code/game/gamemodes/colonialmarines/whiskey_outpost.dm index 64d8795be3d2..f6fbb5f4f900 100644 --- a/code/game/gamemodes/colonialmarines/whiskey_outpost.dm +++ b/code/game/gamemodes/colonialmarines/whiskey_outpost.dm @@ -2,14 +2,14 @@ //Global proc for checking if the game is whiskey outpost so I dont need to type if(gamemode == whiskey outpost) 50000 times /proc/Check_WO() - if(SSticker.mode == GAMEMODE_WHISKEY_OUTPOST || master_mode == GAMEMODE_WHISKEY_OUTPOST) + if(SSticker.mode == GAMEMODE_WHISKEY_OUTPOST || GLOB.master_mode == GAMEMODE_WHISKEY_OUTPOST) return 1 return 0 /datum/game_mode/whiskey_outpost name = GAMEMODE_WHISKEY_OUTPOST config_tag = GAMEMODE_WHISKEY_OUTPOST - required_players = 0 + required_players = 140 xeno_bypass_timer = 1 flags_round_type = MODE_NEW_SPAWN role_mappings = list( @@ -76,12 +76,16 @@ hardcore = TRUE votable = TRUE - vote_cycle = 25 // approx. once every 5 days, if it wins the vote + vote_cycle = 75 // approx. once every 5 days, if it wins the vote taskbar_icon = 'icons/taskbar/gml_wo.png' +/datum/game_mode/whiskey_outpost/New() + . = ..() + required_players = CONFIG_GET(number/whiskey_required_players) + /datum/game_mode/whiskey_outpost/get_roles_list() - return ROLES_WO + return GLOB.ROLES_WO /datum/game_mode/whiskey_outpost/announce() return 1 @@ -152,9 +156,6 @@ spawn(0) //Deleting Almayer, for performance! SSitem_cleanup.delete_almayer() - if(SSxenocon) - //Don't need XENOCON - SSxenocon.wait = 30 MINUTES //PROCCESS @@ -181,7 +182,7 @@ if(checkwin_counter >= 10) //Only check win conditions every 10 ticks. if(xeno_wave == WO_MAX_WAVE && last_wave_time == 0) last_wave_time = world.time - if(!finished && round_should_check_for_win && last_wave_time != 0) + if(!finished && GLOB.round_should_check_for_win && last_wave_time != 0) check_win() checkwin_counter = 0 return 0 @@ -193,7 +194,7 @@ announce_xeno_wave(wave) if(xeno_wave == 7) //Wave when Marines get reinforcements! - get_specific_call("Marine Reinforcements (Squad)", TRUE, FALSE) + get_specific_call("Marine Reinforcements (Squad)", FALSE, TRUE) xeno_wave = min(xeno_wave + 1, WO_MAX_WAVE) @@ -215,8 +216,8 @@ finished = 2 //Marine win /datum/game_mode/whiskey_outpost/proc/disablejoining() - for(var/i in RoleAuthority.roles_by_name) - var/datum/job/J = RoleAuthority.roles_by_name[i] + for(var/i in GLOB.RoleAuthority.roles_by_name) + var/datum/job/J = GLOB.RoleAuthority.roles_by_name[i] // If the job has unlimited job slots, We set the amount of slots to the amount it has at the moment this is called if (J.spawn_positions < 0) @@ -257,20 +258,20 @@ //Announces the end of the game with all relevant information stated// ////////////////////////////////////////////////////////////////////// /datum/game_mode/whiskey_outpost/declare_completion() - if(round_statistics) - round_statistics.track_round_end() + if(GLOB.round_statistics) + GLOB.round_statistics.track_round_end() if(finished == 1) log_game("Round end result - xenos won") - to_world(SPAN_ROUND_HEADER("The Xenos have succesfully defended their hive from colonization.")) + to_world(SPAN_ROUND_HEADER("The Xenos have successfully defended their hive from colonization.")) to_world(SPAN_ROUNDBODY("Well done, you've secured LV-624 for the hive!")) to_world(SPAN_ROUNDBODY("It will be another five years before the USCM returns to the Neroid Sector, with the arrival of the 2nd 'Falling Falcons' Battalion and the USS Almayer.")) to_world(SPAN_ROUNDBODY("The xenomorph hive on LV-624 remains unthreatened until then...")) world << sound('sound/misc/Game_Over_Man.ogg') - if(round_statistics) - round_statistics.round_result = MODE_INFESTATION_X_MAJOR - if(round_statistics.current_map) - round_statistics.current_map.total_xeno_victories++ - round_statistics.current_map.total_xeno_majors++ + if(GLOB.round_statistics) + GLOB.round_statistics.round_result = MODE_INFESTATION_X_MAJOR + if(GLOB.round_statistics.current_map) + GLOB.round_statistics.current_map.total_xeno_victories++ + GLOB.round_statistics.current_map.total_xeno_majors++ else if(finished == 2) log_game("Round end result - marines won") @@ -279,26 +280,26 @@ to_world(SPAN_ROUNDBODY("Eventually, the Dust Raiders secure LV-624 and the entire Neroid Sector in 2182, pacifiying it and establishing peace in the sector for decades to come.")) to_world(SPAN_ROUNDBODY("The USS Almayer and the 2nd 'Falling Falcons' Battalion are never sent to the sector and are spared their fate in 2186.")) world << sound('sound/misc/hell_march.ogg') - if(round_statistics) - round_statistics.round_result = MODE_INFESTATION_M_MAJOR - if(round_statistics.current_map) - round_statistics.current_map.total_marine_victories++ - round_statistics.current_map.total_marine_majors++ + if(GLOB.round_statistics) + GLOB.round_statistics.round_result = MODE_INFESTATION_M_MAJOR + if(GLOB.round_statistics.current_map) + GLOB.round_statistics.current_map.total_marine_victories++ + GLOB.round_statistics.current_map.total_marine_majors++ else log_game("Round end result - no winners") to_world(SPAN_ROUND_HEADER("NOBODY WON!")) to_world(SPAN_ROUNDBODY("How? Don't ask me...")) world << 'sound/misc/sadtrombone.ogg' - if(round_statistics) - round_statistics.round_result = MODE_INFESTATION_DRAW_DEATH + if(GLOB.round_statistics) + GLOB.round_statistics.round_result = MODE_INFESTATION_DRAW_DEATH - if(round_statistics) - round_statistics.game_mode = name - round_statistics.round_length = world.time - round_statistics.end_round_player_population = GLOB.clients.len + if(GLOB.round_statistics) + GLOB.round_statistics.game_mode = name + GLOB.round_statistics.round_length = world.time + GLOB.round_statistics.end_round_player_population = GLOB.clients.len - round_statistics.log_round_statistics() + GLOB.round_statistics.log_round_statistics() round_finished = 1 @@ -322,9 +323,9 @@ OT = "sup" //no breaking anything. else if (OT == "sup") - randpick = rand(0,50) + randpick = rand(0,90) switch(randpick) - if(0 to 5)//Marine Gear 10% Chance. + if(0 to 3)//Marine Gear 3% Chance. crate = new /obj/structure/closet/crate/secure/gear(T) choosemax = rand(5,10) randomitems = list(/obj/item/clothing/head/helmet/marine, @@ -340,19 +341,19 @@ /obj/effect/landmark/wo_supplies/storage/webbing, /obj/item/device/binoculars) - if(6 to 10)//Lights and shiet 10% + if(4 to 6)//Lights and shiet 2% new /obj/structure/largecrate/supply/floodlights(T) new /obj/structure/largecrate/supply/supplies/flares(T) - if(11 to 13) //6% Chance to drop this !FUN! junk. + if(7 to 10) //3% Chance to drop this !FUN! junk. crate = new /obj/structure/closet/crate/secure/gear(T) spawnitems = list(/obj/item/storage/belt/utility/full, /obj/item/storage/belt/utility/full, /obj/item/storage/belt/utility/full, /obj/item/storage/belt/utility/full) - if(14 to 18)//Materials 10% Chance. + if(11 to 22)//Materials 12% Chance. crate = new /obj/structure/closet/crate/secure/gear(T) choosemax = rand(3,8) randomitems = list(/obj/item/stack/sheet/metal, @@ -363,7 +364,7 @@ /obj/item/stack/sandbags_empty/half, /obj/item/stack/sandbags_empty/half) - if(19 to 20)//Blood Crate 4% chance + if(23 to 25)//Blood Crate 2% chance crate = new /obj/structure/closet/crate/medical(T) spawnitems = list(/obj/item/reagent_container/blood/OMinus, /obj/item/reagent_container/blood/OMinus, @@ -371,7 +372,7 @@ /obj/item/reagent_container/blood/OMinus, /obj/item/reagent_container/blood/OMinus) - if(21 to 25)//Advanced meds Crate 10% + if(26 to 30)//Advanced meds Crate 5% crate = new /obj/structure/closet/crate/medical(T) spawnitems = list(/obj/item/storage/firstaid/fire, /obj/item/storage/firstaid/regular, @@ -386,7 +387,7 @@ /obj/item/clothing/glasses/hud/health, /obj/item/device/defibrillator) - if(26 to 30)//Random Medical Items 10% as well. Made the list have less small junk + if(31 to 34)//Random Medical Items 4%. Made the list have less small junk crate = new /obj/structure/closet/crate/medical(T) spawnitems = list(/obj/item/storage/belt/medical/lifesaver/full, /obj/item/storage/belt/medical/lifesaver/full, @@ -394,7 +395,7 @@ /obj/item/storage/belt/medical/lifesaver/full, /obj/item/storage/belt/medical/lifesaver/full) - if(31 to 35)//Random explosives Crate 10% because the lord commeth and said let there be explosives. + if(35 to 40)//Random explosives Crate 5% because the lord commeth and said let there be explosives. crate = new /obj/structure/closet/crate/ammo(T) choosemax = rand(1,5) randomitems = list(/obj/item/storage/box/explosive_mines, @@ -404,7 +405,7 @@ /obj/item/explosive/grenade/high_explosive, /obj/item/storage/box/nade_box ) - if(36 to 40) // Junk + if(41 to 44) crate = new /obj/structure/closet/crate/ammo(T) spawnitems = list( /obj/item/attachable/heavy_barrel, @@ -412,20 +413,75 @@ /obj/item/attachable/heavy_barrel, /obj/item/attachable/heavy_barrel) - if(40 to 48)//Weapon + supply beacon drop. 6% + if(45 to 50)//Weapon + supply beacon drop. 5% crate = new /obj/structure/closet/crate/ammo(T) spawnitems = list(/obj/item/device/whiskey_supply_beacon, /obj/item/device/whiskey_supply_beacon, /obj/item/device/whiskey_supply_beacon, /obj/item/device/whiskey_supply_beacon) - if(49 to 50)//Rare weapons. Around 4% + if(51 to 57)//Rare weapons. Around 6% crate = new /obj/structure/closet/crate/ammo(T) spawnitems = list(/obj/effect/landmark/wo_supplies/ammo/box/rare/m41aap, /obj/effect/landmark/wo_supplies/ammo/box/rare/m41aapmag, /obj/effect/landmark/wo_supplies/ammo/box/rare/m41aextend, /obj/effect/landmark/wo_supplies/ammo/box/rare/smgap, /obj/effect/landmark/wo_supplies/ammo/box/rare/smgextend) + + if(58 to 65) // Sandbags kit + crate = new /obj/structure/closet/crate(T) + spawnitems = list(/obj/item/tool/shovel/etool, + /obj/item/stack/sandbags_empty/half, + /obj/item/stack/sandbags_empty/half, + /obj/item/stack/sandbags_empty/half) + + if(66 to 70) // Mortar shells. Pew Pew! + crate = new /obj/structure/closet/crate/secure/mortar_ammo(T) + choosemax = rand(6,10) + randomitems = list(/obj/item/mortar_shell/he, + /obj/item/mortar_shell/incendiary, + /obj/item/mortar_shell/flare, + /obj/item/mortar_shell/frag) + + if(71 to 79) + crate = new /obj/structure/closet/crate/ammo(T) + choosemax = rand(2, 3) + randomitems = list(/obj/item/ammo_box/rounds, + /obj/item/ammo_box/rounds/ap, + /obj/item/ammo_box/rounds/smg, + /obj/item/ammo_box/rounds/smg/ap, + /obj/item/ammo_box/magazine/ap, + /obj/item/ammo_box/magazine/ext, + /obj/item/ammo_box/magazine/m4ra/ap, + /obj/item/ammo_box/magazine/m4ra/ap, + /obj/item/ammo_box/magazine/m39/ap, + /obj/item/ammo_box/magazine/m39/ext, + ) + + if(80 to 82) + crate = new /obj/structure/closet/crate/ammo(T) + choosemax = rand(2, 3) + randomitems = list(/obj/item/ammo_magazine/rifle/lmg/holo_target, + /obj/item/ammo_magazine/rifle/lmg/holo_target, + /obj/item/ammo_magazine/rifle/lmg, + /obj/item/ammo_magazine/rifle/lmg, + ) + + if(83 to 86) + crate = new /obj/structure/closet/crate/ammo(T) + spawnitems = list( + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/magnetic_harness) + + if(86 to 90) + crate = new /obj/structure/closet/crate/secure/gear(T) + spawnitems = list( + /obj/item/device/binoculars/range, + /obj/item/device/binoculars/range, + ) + if(crate) crate.storage_capacity = 60 @@ -459,13 +515,12 @@ unacidable = TRUE var/working = 0 -/obj/structure/machinery/wo_recycler/attack_hand(mob/user) +/obj/structure/machinery/wo_recycler/attack_hand(mob/living/user) if(inoperable(MAINT)) return - if(user.lying || user.stat) + if(user.is_mob_incapacitated()) return - if(ismaintdrone(usr) || \ - istype(usr, /mob/living/carbon/xenomorph)) + if(istype(usr, /mob/living/carbon/xenomorph)) to_chat(usr, SPAN_DANGER("You don't have the dexterity to do this!")) return if(working) @@ -664,8 +719,8 @@ /obj/item/ammo_magazine/rocket/wp) if(2) //Smartgun supplies spawnitems = list( - /obj/item/cell/high, - /obj/item/cell/high, + /obj/item/smartgun_battery, + /obj/item/smartgun_battery, /obj/item/ammo_magazine/smartgun, /obj/item/ammo_magazine/smartgun, /obj/item/ammo_magazine/smartgun, diff --git a/code/game/gamemodes/colonialmarines/whiskey_outpost/equipping.dm b/code/game/gamemodes/colonialmarines/whiskey_outpost/equipping.dm index eb3e46a2686b..d5ff07391b5e 100644 --- a/code/game/gamemodes/colonialmarines/whiskey_outpost/equipping.dm +++ b/code/game/gamemodes/colonialmarines/whiskey_outpost/equipping.dm @@ -76,7 +76,7 @@ You must lead his Honor guard, his elite unit of marines, to protect the command gear_preset = /datum/equipment_preset/wo/vhg /datum/job/command/bridge/whiskey/generate_entry_message(mob/living/carbon/human/H) - . = {"You were assigned to guard the commander in this hostile enviroment; that hasn't changed. Ensure your extra training and equipment isn't wasted! + . = {"You were assigned to guard the commander in this hostile environment; that hasn't changed. Ensure your extra training and equipment isn't wasted! You've survived through enough battles that you've been entrusted with more training, and can use overwatch consoles, as well as give orders. You're expected to defend not only the commander, but the bunker at large; leave the outside defenses to the marines. Glory to the commander. Glory to the USCM."} @@ -90,7 +90,7 @@ Glory to the commander. Glory to the USCM."} gear_preset = /datum/equipment_preset/wo/hgs /datum/job/command/tank_crew/whiskey/generate_entry_message(mob/living/carbon/human/H) - . = {"You were assigned to guard the commander in this hostile enviroment; that hasn't changed. Ensure your extra training and equipment isn't wasted! + . = {"You were assigned to guard the commander in this hostile environment; that hasn't changed. Ensure your extra training and equipment isn't wasted! You're expected to defend not only the commander, but the bunker at large; leave the outside defenses to the marines. You've been through much, and as such, have been given special-weapons training. Use it well. Glory to the commander. Glory to the USCM."} @@ -104,7 +104,7 @@ Glory to the commander. Glory to the USCM."} gear_preset = /datum/equipment_preset/wo/hg /datum/job/command/police/whiskey/generate_entry_message(mob/living/carbon/human/H) - . = {"You were assigned to guard the commander in this hostile enviroment; that hasn't changed. Ensure your extra training and equipment isn't wasted! + . = {"You were assigned to guard the commander in this hostile environment; that hasn't changed. Ensure your extra training and equipment isn't wasted! You're expected to defend not only the commander, but the bunker at large; leave the outside defenses to the marines. Glory to the commander. Glory to the USCM."} diff --git a/code/game/gamemodes/colonialmarines/whiskey_outpost/skills.dm b/code/game/gamemodes/colonialmarines/whiskey_outpost/skills.dm index d6dfc695c5d0..a5126627adaf 100644 --- a/code/game/gamemodes/colonialmarines/whiskey_outpost/skills.dm +++ b/code/game/gamemodes/colonialmarines/whiskey_outpost/skills.dm @@ -17,6 +17,7 @@ SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, SKILL_JTAC = SKILL_JTAC_EXPERT, ) @@ -37,6 +38,7 @@ SKILL_ENGINEER = SKILL_ENGINEER_ENGI, //to fix CIC apc. SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, SKILL_POLICE = SKILL_POLICE_FLASH, SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, diff --git a/code/game/gamemodes/colonialmarines/whiskey_outpost/whiskey_output_waves.dm b/code/game/gamemodes/colonialmarines/whiskey_outpost/whiskey_output_waves.dm index ae272da88690..609a70f1dd3b 100644 --- a/code/game/gamemodes/colonialmarines/whiskey_outpost/whiskey_output_waves.dm +++ b/code/game/gamemodes/colonialmarines/whiskey_outpost/whiskey_output_waves.dm @@ -32,7 +32,7 @@ for(var/mob/living/carbon/xenomorph/X as anything in GLOB.living_xeno_list) var/area/A = get_area(X) - if(is_admin_level(X.z) && (!A || !(A.flags_area & AREA_ALLOW_XENO_JOIN)) || X.aghosted) continue //xenos on admin z level and aghosted ones don't count + if(should_block_game_interaction(X) && (!A || !(A.flags_area & AREA_ALLOW_XENO_JOIN)) || X.aghosted) continue //xenos on admin z level and aghosted ones don't count if(istype(X) && !X.client) if((X.away_timer >= XENO_LEAVE_TIMER) || (islarva(X) && X.away_timer >= XENO_LEAVE_TIMER_LARVA)) available_xenos += X @@ -52,12 +52,12 @@ if(!xeno_candidate) return FALSE - if(RoleAuthority.castes_by_name[userInput]) + if(GLOB.RoleAuthority.castes_by_name[userInput]) if(!(userInput in xeno_pool)) to_chat(xeno_candidate, SPAN_WARNING("The caste type you chose was occupied by someone else.")) return FALSE var/spawn_loc = pick(xeno_spawns) - var/xeno_type = RoleAuthority.get_caste_by_text(userInput) + var/xeno_type = GLOB.RoleAuthority.get_caste_by_text(userInput) var/mob/living/carbon/xenomorph/new_xeno = new xeno_type(spawn_loc) if(new_xeno.hive.construction_allowed == NORMAL_XENO) new_xeno.hive.construction_allowed = XENO_QUEEN @@ -198,7 +198,7 @@ wave_castes = list(XENO_CASTE_BURROWER) wave_type = WO_STATIC_WAVE number_of_xenos = 3 - command_announcement = list("First Lieutenant Ike Saker, Executive Officer of Captain Naiche, speaking. The Captain is still trying to try and get off world contact. An engineer platoon managed to destroy the main entrance into this valley this should give you a short break while the aliens find another way in. We are receiving reports of seismic waves occuring nearby, there might be creatures burrowing underground, keep an eye on your defenses. I have also received word that marines from an overrun outpost are evacuating to you and will help you. I used to be stationed with them, they are top notch!", "First Lieutenant Ike Saker, 3rd Battalion Command, LV-624 Garrison") + command_announcement = list("First Lieutenant Ike Saker, Executive Officer of Captain Naiche, speaking. The Captain is still trying to try and get off world contact. An engineer platoon managed to destroy the main entrance into this valley this should give you a short break while the aliens find another way in. We are receiving reports of seismic waves occurring nearby, there might be creatures burrowing underground, keep an eye on your defenses. I have also received word that marines from an overrun outpost are evacuating to you and will help you. I used to be stationed with them, they are top notch!", "First Lieutenant Ike Saker, 3rd Battalion Command, LV-624 Garrison") /datum/whiskey_outpost_wave/wave8 wave_number = 8 diff --git a/code/game/gamemodes/colonialmarines/xenovsxeno.dm b/code/game/gamemodes/colonialmarines/xenovsxeno.dm index a0d555acd2fb..79754a6fff84 100644 --- a/code/game/gamemodes/colonialmarines/xenovsxeno.dm +++ b/code/game/gamemodes/colonialmarines/xenovsxeno.dm @@ -24,21 +24,21 @@ votable = FALSE // broken /* Pre-pre-startup */ -/datum/game_mode/xenovs/can_start() +/datum/game_mode/xenovs/can_start(bypass_checks = FALSE) for(var/hivename in SSmapping.configs[GROUND_MAP].xvx_hives) - if(readied_players > SSmapping.configs[GROUND_MAP].xvx_hives[hivename]) + if(GLOB.readied_players > SSmapping.configs[GROUND_MAP].xvx_hives[hivename]) hives += hivename - xeno_starting_num = readied_players - if(!initialize_starting_xenomorph_list(hives, TRUE)) + xeno_starting_num = GLOB.readied_players + if(!initialize_starting_xenomorph_list(hives, bypass_checks)) hives.Cut() - return + return FALSE return TRUE /datum/game_mode/xenovs/announce() to_chat_spaced(world, type = MESSAGE_TYPE_SYSTEM, html = SPAN_ROUNDHEADER("The current map is - [SSmapping.configs[GROUND_MAP].map_name]!")) /datum/game_mode/xenovs/get_roles_list() - return ROLES_XENO + return GLOB.ROLES_XENO /* Pre-setup */ /datum/game_mode/xenovs/pre_setup() @@ -79,9 +79,6 @@ spawn(0) //Deleting Almayer, for performance! SSitem_cleanup.delete_almayer() - if(SSxenocon) - //Don't need XENOCON - SSxenocon.wait = 30 MINUTES //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// @@ -94,7 +91,7 @@ initialize_post_xenomorph_list(GLOB.xeno_hive_spawns) round_time_lobby = world.time - for(var/area/A in all_areas) + for(var/area/A in GLOB.all_areas) if(!(A.is_resin_allowed)) A.is_resin_allowed = TRUE @@ -144,7 +141,6 @@ original.statistic_exempt = TRUE original.buckled = start_nest original.setDir(start_nest.dir) - original.update_canmove() start_nest.buckled_mob = original start_nest.afterbuckle(original) @@ -196,7 +192,7 @@ qdel(C) hive_cores = list() - if(round_should_check_for_win) + if(GLOB.round_should_check_for_win) check_win() round_checkwin = 0 @@ -266,12 +262,12 @@ var/sound/S = sound(musical_track, channel = SOUND_CHANNEL_LOBBY) S.status = SOUND_STREAM sound_to(world, S) - if(round_statistics) - round_statistics.game_mode = name - round_statistics.round_length = world.time - round_statistics.end_round_player_population = GLOB.clients.len + if(GLOB.round_statistics) + GLOB.round_statistics.game_mode = name + GLOB.round_statistics.round_length = world.time + GLOB.round_statistics.end_round_player_population = GLOB.clients.len - round_statistics.log_round_statistics() + GLOB.round_statistics.log_round_statistics() declare_completion_announce_xenomorphs() calculate_end_statistics() @@ -281,11 +277,11 @@ return TRUE /datum/game_mode/xenovs/announce_ending() - if(round_statistics) - round_statistics.track_round_end() + if(GLOB.round_statistics) + GLOB.round_statistics.track_round_end() log_game("Round end result: [round_finished]") to_chat_spaced(world, margin_top = 2, type = MESSAGE_TYPE_SYSTEM, html = SPAN_ROUNDHEADER("|Round Complete|")) - to_chat_spaced(world, type = MESSAGE_TYPE_SYSTEM, html = SPAN_ROUNDBODY("Thus ends the story of the battling hives on [SSmapping.configs[GROUND_MAP].map_name]. [round_finished]\nThe game-mode was: [master_mode]!\nEnd of Round Grief (EORG) is an IMMEDIATE 3 hour ban with no warnings, see rule #3 for more details.")) + to_chat_spaced(world, type = MESSAGE_TYPE_SYSTEM, html = SPAN_ROUNDBODY("Thus ends the story of the battling hives on [SSmapping.configs[GROUND_MAP].map_name]. [round_finished]\nThe game-mode was: [GLOB.master_mode]!\n[CONFIG_GET(string/endofroundblurb)]")) // for the toolbox /datum/game_mode/xenovs/end_round_message() diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index db8f84d53f24..1039d495396b 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -3,7 +3,7 @@ /proc/carp_migration() // -- Darem //sleep(100) spawn(rand(300, 600)) //Delayed announcements to keep the crew on their toes. - marine_announcement("Unknown biological entities have been detected near [station_name], please stand-by.", "Lifesign Alert", 'sound/AI/commandreport.ogg') + marine_announcement("Unknown biological entities have been detected near [MAIN_SHIP_NAME], please stand-by.", "Lifesign Alert", 'sound/AI/commandreport.ogg') /proc/lightsout(isEvent = 0, lightsoutAmount = 1,lightsoutRange = 25) //leave lightsoutAmount as 0 to break ALL lights if(isEvent) @@ -13,7 +13,7 @@ return else - for(var/obj/structure/machinery/power/apc/apc in machines) + for(var/obj/structure/machinery/power/apc/apc in GLOB.machines) apc.overload_lighting() return diff --git a/code/game/gamemodes/events/power_failure.dm b/code/game/gamemodes/events/power_failure.dm index 7905c19fac41..5ebedd8fd26d 100644 --- a/code/game/gamemodes/events/power_failure.dm +++ b/code/game/gamemodes/events/power_failure.dm @@ -2,7 +2,7 @@ /proc/power_failure(announce = 1) var/ship_zlevels = SSmapping.levels_by_trait(ZTRAIT_MARINE_MAIN_SHIP) - for(var/obj/structure/machinery/power/smes/S in machines) + for(var/obj/structure/machinery/power/smes/S in GLOB.machines) if(!is_mainship_level(S.z)) continue S.last_charge = S.charge @@ -14,7 +14,7 @@ S.updateicon() S.power_change() - for(var/obj/structure/machinery/power/apc/C in machines) + for(var/obj/structure/machinery/power/apc/C in GLOB.machines) if(!is_mainship_level(C.z) && C.cell) C.cell.charge = 0 @@ -25,7 +25,7 @@ marine_announcement("Abnormal activity detected in the ship power system. As a precaution, power must be shut down for an indefinite duration.", "Critical Power Failure", 'sound/AI/poweroff.ogg') /proc/power_restore(announce = 1) - for(var/obj/structure/machinery/power/smes/S in machines) + for(var/obj/structure/machinery/power/smes/S in GLOB.machines) if(!is_mainship_level(S.z)) continue S.charge = S.capacity @@ -34,7 +34,7 @@ S.updateicon() S.power_change() - for(var/obj/structure/machinery/power/apc/C in machines) + for(var/obj/structure/machinery/power/apc/C in GLOB.machines) if(C.cell && is_mainship_level(C.z)) C.cell.charge = C.cell.maxcharge @@ -44,7 +44,7 @@ /proc/power_restore_quick(announce = 1) - for(var/obj/structure/machinery/power/smes/S in machines) + for(var/obj/structure/machinery/power/smes/S in GLOB.machines) if(!is_mainship_level(S.z)) // Ship only continue S.charge = S.capacity @@ -59,14 +59,14 @@ /proc/power_restore_everything(announce = 1) - for(var/obj/structure/machinery/power/smes/S in machines) + for(var/obj/structure/machinery/power/smes/S in GLOB.machines) S.charge = S.capacity S.output_level = S.output_level_max S.outputting = 1 S.updateicon() S.power_change() - for(var/obj/structure/machinery/power/apc/C in machines) + for(var/obj/structure/machinery/power/apc/C in GLOB.machines) if(C.cell) C.cell.charge = C.cell.maxcharge @@ -75,7 +75,7 @@ marine_announcement("Power has been restored. Reason: Unknown.", "Power Systems Nominal", 'sound/AI/poweron.ogg') /proc/power_restore_ship_reactors(announce = 1) - for(var/obj/structure/machinery/power/fusion_engine/FE in machines) + for(var/obj/structure/machinery/power/fusion_engine/FE in GLOB.machines) FE.buildstate = 0 FE.is_on = 1 FE.fusion_cell = new diff --git a/code/game/gamemodes/extended/extended.dm b/code/game/gamemodes/extended/extended.dm index f00125cc8f0f..72512a7e77ff 100644 --- a/code/game/gamemodes/extended/extended.dm +++ b/code/game/gamemodes/extended/extended.dm @@ -12,7 +12,7 @@ to_world("The current game mode is - Extended!") /datum/game_mode/extended/get_roles_list() - return ROLES_USCM + return GLOB.ROLES_USCM /datum/game_mode/extended/post_setup() initialize_post_marine_gear_list() @@ -24,7 +24,7 @@ /datum/game_mode/extended/process() . = ..() if(next_research_allocation < world.time) - chemical_data.update_credits(chemical_data.research_allocation_amount) + GLOB.chemical_data.update_credits(GLOB.chemical_data.research_allocation_amount) next_research_allocation = world.time + research_allocation_interval /datum/game_mode/extended/check_finished() @@ -39,11 +39,11 @@ var/musical_track = pick('sound/theme/neutral_hopeful1.ogg','sound/theme/neutral_hopeful2.ogg') world << musical_track - if(round_statistics) - round_statistics.game_mode = name - round_statistics.round_length = world.time - round_statistics.end_round_player_population = GLOB.clients.len - round_statistics.log_round_statistics() + if(GLOB.round_statistics) + GLOB.round_statistics.game_mode = name + GLOB.round_statistics.round_length = world.time + GLOB.round_statistics.end_round_player_population = GLOB.clients.len + GLOB.round_statistics.log_round_statistics() calculate_end_statistics() declare_completion_announce_predators() diff --git a/code/game/gamemodes/extended/extended_clash.dm b/code/game/gamemodes/extended/extended_clash.dm index 04077de2775c..e0e526d91afa 100644 --- a/code/game/gamemodes/extended/extended_clash.dm +++ b/code/game/gamemodes/extended/extended_clash.dm @@ -6,7 +6,7 @@ taskbar_icon = 'icons/taskbar/gml_hvh.png' /datum/game_mode/extended/faction_clash/get_roles_list() - return ROLES_FACTION_CLASH + return GLOB.ROLES_FACTION_CLASH /datum/game_mode/extended/faction_clash/post_setup() . = ..() diff --git a/code/game/gamemodes/extended/infection.dm b/code/game/gamemodes/extended/infection.dm index d42f71798a50..e2c34f9aa16c 100644 --- a/code/game/gamemodes/extended/infection.dm +++ b/code/game/gamemodes/extended/infection.dm @@ -15,7 +15,7 @@ to_world("Don't ahelp asking for specific details, you won't get them.") /datum/game_mode/infection/get_roles_list() - return ROLES_USCM + return GLOB.ROLES_USCM /datum/game_mode/infection/pre_setup() return ..() @@ -25,21 +25,29 @@ initialize_post_marine_gear_list() for(var/mob/new_player/np in GLOB.new_player_list) np.new_player_panel_proc() - spawn(50) - marine_announcement("We've lost contact with the Weyland-Yutani's research facility, [name]. The [MAIN_SHIP_NAME] has been dispatched to assist.", "[MAIN_SHIP_NAME]") + + addtimer(CALLBACK(src, PROC_REF(ares_online)), 5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(map_announcement)), 20 SECONDS) return ..() +/datum/game_mode/infection/proc/map_announcement() + if(SSmapping.configs[GROUND_MAP].infection_announce_text) + var/rendered_announce_text = replacetext(SSmapping.configs[GROUND_MAP].infection_announce_text, "###SHIPNAME###", MAIN_SHIP_NAME) + marine_announcement(rendered_announce_text, "[MAIN_SHIP_NAME]") + else if(SSmapping.configs[GROUND_MAP].announce_text) //if we missed a infection text for above, or just don't need a special one, we just use default announcement + var/rendered_announce_text = replacetext(SSmapping.configs[GROUND_MAP].announce_text, "###SHIPNAME###", MAIN_SHIP_NAME) + marine_announcement(rendered_announce_text, "[MAIN_SHIP_NAME]") + /datum/game_mode/infection/proc/initialize_post_survivor_list() if(synth_survivor) transform_survivor(synth_survivor, TRUE) for(var/datum/mind/survivor in survivors) if(transform_survivor(survivor) == 1) survivors -= survivor - tell_survivor_story() -/datum/game_mode/infection/can_start() +/datum/game_mode/infection/can_start(bypass_checks = FALSE) initialize_starting_survivor_list() - return 1 + return TRUE //We don't actually need survivors to play, so long as aliens are present. /datum/game_mode/infection/proc/initialize_starting_survivor_list() @@ -53,7 +61,7 @@ possible_synth_survivors -= A continue - if(RoleAuthority.roles_whitelist[ckey(A.key)] & WHITELIST_SYNTHETIC) + if(A.current.client?.check_whitelist_status(WHITELIST_SYNTHETIC)) if(A in possible_survivors) continue //they are already applying to be a survivor else @@ -87,7 +95,7 @@ possible_survivors -= new_survivor //either we drafted a survivor, or we're skipping over someone, either or - remove them /datum/game_mode/infection/check_win() - var/living_player_list[] = count_humans_and_xenos(EvacuationAuthority.get_affected_zlevels()) + var/list/living_player_list = count_humans_and_xenos(get_affected_zlevels()) var/num_humans = living_player_list[1] var/zed = living_player_list[2] @@ -112,11 +120,11 @@ var/musical_track = pick('sound/theme/sad_loss1.ogg','sound/theme/sad_loss2.ogg') world << musical_track - if(round_statistics) - round_statistics.game_mode = name - round_statistics.round_length = world.time - round_statistics.end_round_player_population = GLOB.clients.len - round_statistics.log_round_statistics() + if(GLOB.round_statistics) + GLOB.round_statistics.game_mode = name + GLOB.round_statistics.round_length = world.time + GLOB.round_statistics.end_round_player_population = GLOB.clients.len + GLOB.round_statistics.log_round_statistics() declare_completion_announce_xenomorphs() declare_completion_announce_predators() diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 8017056c682d..1803d7ac127c 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -11,9 +11,9 @@ * */ -var/global/datum/entity/statistic/round/round_statistics -var/global/list/datum/entity/player_entity/player_entities = list() -var/global/cas_tracking_id_increment = 0 //this var used to assign unique tracking_ids to tacbinos and signal flares +GLOBAL_DATUM(round_statistics, /datum/entity/statistic/round) +GLOBAL_LIST_INIT_TYPED(player_entities, /datum/entity/player_entity, list()) +GLOBAL_VAR_INIT(cas_tracking_id_increment, 0) //this var used to assign unique tracking_ids to tacbinos and signal flares /datum/game_mode var/name = "invalid" var/config_tag = null @@ -50,19 +50,20 @@ var/global/cas_tracking_id_increment = 0 //this var used to assign unique tracki ///can_start() ///Checks to see if the game can be setup and ran with the current number of players or whatnot. -/datum/game_mode/proc/can_start() - var/playerC = 0 +/datum/game_mode/proc/can_start(bypass_checks = FALSE) + if(bypass_checks) + return TRUE + var/players = 0 for(var/mob/new_player/player in GLOB.new_player_list) - if((player.client)&&(player.ready)) - playerC++ - - if(master_mode=="secret") - if(playerC >= required_players_secret) - return 1 + if(player.client && player.ready) + players++ + if(GLOB.master_mode == "secret") + if(players >= required_players_secret) + return TRUE else - if(playerC >= required_players) - return 1 - return 0 + if(players >= required_players) + return TRUE + return FALSE ///pre_setup() @@ -103,36 +104,41 @@ var/global/cas_tracking_id_increment = 0 //this var used to assign unique tracki for(var/mob/new_player/np in GLOB.new_player_list) np.new_player_panel_proc() + round_time_lobby = world.time log_game("Round started at [time2text(world.realtime)]") + log_game("Operation time at round start is [worldtime2text()]") if(SSticker.mode) log_game("Game mode set to [SSticker.mode]") log_game("Server IP: [world.internet_address]:[world.port]") - return 1 + return TRUE +/datum/game_mode/proc/get_affected_zlevels() + if(is_in_endgame) + . = SSmapping.levels_by_any_trait(list(ZTRAIT_MARINE_MAIN_SHIP)) + return ///process() ///Called by the gameticker /datum/game_mode/process() - return 0 + return FALSE /datum/game_mode/proc/check_finished() //to be called by ticker - if(EvacuationAuthority.dest_status == NUKE_EXPLOSION_FINISHED || EvacuationAuthority.dest_status == NUKE_EXPLOSION_GROUND_FINISHED ) - return TRUE + return /datum/game_mode/proc/cleanup() //This is called when the round has ended but not the game, if any cleanup would be necessary in that case. return /datum/game_mode/proc/announce_ending() - if(round_statistics) - round_statistics.track_round_end() + if(GLOB.round_statistics) + GLOB.round_statistics.track_round_end() log_game("Round end result: [round_finished]") to_chat_spaced(world, margin_top = 2, type = MESSAGE_TYPE_SYSTEM, html = SPAN_ROUNDHEADER("|Round Complete|")) - to_chat_spaced(world, type = MESSAGE_TYPE_SYSTEM, html = SPAN_ROUNDBODY("Thus ends the story of the brave men and women of the [MAIN_SHIP_NAME] and their struggle on [SSmapping.configs[GROUND_MAP].map_name].\nThe game-mode was: [master_mode]!\nEnd of Round Grief (EORG) is an IMMEDIATE 3 hour ban with no warnings, see rule #3 for more details.")) + to_chat_spaced(world, type = MESSAGE_TYPE_SYSTEM, html = SPAN_ROUNDBODY("Thus ends the story of the brave men and women of the [MAIN_SHIP_NAME] and their struggle on [SSmapping.configs[GROUND_MAP].map_name].\nThe game-mode was: [GLOB.master_mode]!\n[CONFIG_GET(string/endofroundblurb)]")) /datum/game_mode/proc/declare_completion() - if(round_statistics) - round_statistics.track_round_end() + if(GLOB.round_statistics) + GLOB.round_statistics.track_round_end() var/clients = 0 var/surviving_humans = 0 var/surviving_total = 0 @@ -176,7 +182,7 @@ var/global/cas_tracking_id_increment = 0 //this var used to assign unique tracki record_playtime(M.client.player_data, M.job, type) /datum/game_mode/proc/show_end_statistics(icon_state) - round_statistics.update_panel_data() + GLOB.round_statistics.update_panel_data() for(var/mob/M in GLOB.player_list) if(M.client) give_action(M, /datum/action/show_round_statistics, null, icon_state) @@ -221,7 +227,7 @@ var/global/cas_tracking_id_increment = 0 //this var used to assign unique tracki var/list/heads = list() for(var/i in GLOB.alive_human_list) var/mob/living/carbon/human/player = i - if(player.stat!=2 && player.mind && (player.job in ROLES_COMMAND )) + if(player.stat!=2 && player.mind && (player.job in GLOB.ROLES_COMMAND )) heads += player.mind return heads @@ -232,7 +238,7 @@ var/global/cas_tracking_id_increment = 0 //this var used to assign unique tracki /datum/game_mode/proc/get_all_heads() var/list/heads = list() for(var/mob/player in GLOB.mob_list) - if(player.mind && (player.job in ROLES_COMMAND )) + if(player.mind && (player.job in GLOB.ROLES_COMMAND )) heads += player.mind return heads diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index c4a3070dea2d..0d10b06d5fef 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -2,17 +2,28 @@ //returns FALSE otherwise /obj/proc/allowed(mob/M) //check if it doesn't require any access at all - if(check_access()) return TRUE - if(isRemoteControlling(M)) return TRUE //AI can do whatever he wants + if(check_access() || isRemoteControlling(M)) + return TRUE - else if(ishuman(M)) + if(ishuman(M)) var/mob/living/carbon/human/H = M //if they are holding or wearing a card that has access, that works - if(check_access(H.get_active_hand()) || check_access(H.wear_id)) return TRUE - else if(istype(M, /mob/living/carbon/xenomorph)) + if(check_access(H.get_active_hand()) || check_access(H.wear_id)) + return TRUE + return check_yautja_access(H) + if(istype(M, /mob/living/carbon/xenomorph)) var/mob/living/carbon/C = M - if(check_access(C.get_active_hand())) return TRUE - return FALSE + if(check_access(C.get_active_hand())) + return TRUE + return FALSE + +/obj/proc/check_yautja_access(mob/living/carbon/human/yautja) + if(!istype(yautja)) + return FALSE + var/obj/item/clothing/gloves/yautja/hunter/bracer = yautja.gloves + if(!istype(bracer) || !bracer.embedded_id || !check_access(bracer.embedded_id)) + return FALSE + return TRUE /obj/item/proc/GetAccess() return list() @@ -82,114 +93,244 @@ return return 1 -///Grants access to EVERYWHERE -/proc/get_global_access() - return get_all_marine_access() + get_all_main_access() -///Grants standard access for all factions, does not include high restrictions like COs office. -/proc/get_all_main_access() - return get_antagonist_access() + get_all_civilian_access() + get_all_weyland_access() - -/proc/get_all_civilian_access() - return list( - ACCESS_CIVILIAN_PUBLIC, - ACCESS_CIVILIAN_RESEARCH, - ACCESS_CIVILIAN_ENGINEERING, - ACCESS_CIVILIAN_LOGISTICS, - ACCESS_CIVILIAN_BRIG, - ACCESS_CIVILIAN_MEDBAY, - ACCESS_CIVILIAN_COMMAND, - ) - -///Includes restricted accesses -/proc/get_all_marine_access() - return list(ACCESS_MARINE_CO) + get_main_marine_access() - -///All Almayer accesses other than the highly restricted ones, such as CO's office. -/proc/get_main_marine_access() - return list( - ACCESS_MARINE_SENIOR, - ACCESS_MARINE_DATABASE, - ACCESS_MARINE_COMMAND, - ACCESS_MARINE_CMP, - ACCESS_MARINE_BRIG, - ACCESS_MARINE_ARMORY, - ACCESS_MARINE_CMO, - ACCESS_MARINE_MEDBAY, - ACCESS_MARINE_CHEMISTRY, - ACCESS_MARINE_MORGUE, - ACCESS_MARINE_RESEARCH, - ACCESS_MARINE_CE, - ACCESS_MARINE_ENGINEERING, - ACCESS_MARINE_MAINT, - ACCESS_MARINE_OT, - ACCESS_MARINE_RO, - ACCESS_MARINE_CARGO, - ACCESS_MARINE_PREP, - ACCESS_MARINE_MEDPREP, - ACCESS_MARINE_ENGPREP, - ACCESS_MARINE_SMARTPREP, - ACCESS_MARINE_LEADER, - ACCESS_MARINE_SPECPREP, - ACCESS_MARINE_TL_PREP, - ACCESS_MARINE_ALPHA, - ACCESS_MARINE_BRAVO, - ACCESS_MARINE_CHARLIE, - ACCESS_MARINE_DELTA, - ACCESS_MARINE_PILOT, - ACCESS_MARINE_DROPSHIP, - ACCESS_MARINE_SEA, - ACCESS_MARINE_KITCHEN, - ACCESS_MARINE_SYNTH, - ACCESS_PRESS, - ) - -/proc/get_all_weyland_access() - return list(ACCESS_WY_PMC_GREEN, ACCESS_WY_PMC_ORANGE, ACCESS_WY_PMC_RED, ACCESS_WY_PMC_BLACK, ACCESS_WY_PMC_WHITE, ACCESS_WY_CORPORATE) - -///CLF & UPP, UPP Commandos have global. -/proc/get_antagonist_access() - return get_main_marine_access() + list(ACCESS_ILLEGAL_PIRATE) - -///Used by PMCs and elite mercs. -/proc/get_weyland_pmc_access() - return get_all_main_access() - -///This is only used by USCM ERTs at present -/proc/get_friendly_ert_access() - return get_main_marine_access() + get_all_civilian_access() - -///Pizza and Souto -/proc/get_civil_ert_access() - return list(ACCESS_MARINE_COMMAND, ACCESS_MARINE_CARGO, ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_ENGINEERING, ACCESS_CIVILIAN_LOGISTICS) + +/proc/get_access(access_list = ACCESS_LIST_GLOBAL) + switch(access_list) + if(ACCESS_LIST_GLOBAL) + return list(ACCESS_ILLEGAL_PIRATE) + get_access(ACCESS_LIST_MARINE_ALL) + get_access(ACCESS_LIST_WY_ALL) + get_access(ACCESS_LIST_COLONIAL_ALL) + get_access(ACCESS_LIST_CLF_ALL) + get_access(ACCESS_LIST_UPP_ALL) + if(ACCESS_LIST_MARINE_MAIN) + return list( + ACCESS_MARINE_SENIOR, + ACCESS_MARINE_DATABASE, + ACCESS_MARINE_COMMAND, + ACCESS_MARINE_CMP, + ACCESS_MARINE_BRIG, + ACCESS_MARINE_ARMORY, + ACCESS_MARINE_CMO, + ACCESS_MARINE_MEDBAY, + ACCESS_MARINE_CHEMISTRY, + ACCESS_MARINE_MORGUE, + ACCESS_MARINE_RESEARCH, + ACCESS_MARINE_CE, + ACCESS_MARINE_ENGINEERING, + ACCESS_MARINE_MAINT, + ACCESS_MARINE_OT, + ACCESS_MARINE_RO, + ACCESS_MARINE_CARGO, + ACCESS_MARINE_PREP, + ACCESS_MARINE_MEDPREP, + ACCESS_MARINE_ENGPREP, + ACCESS_MARINE_SMARTPREP, + ACCESS_MARINE_LEADER, + ACCESS_MARINE_SPECPREP, + ACCESS_MARINE_TL_PREP, + ACCESS_MARINE_ALPHA, + ACCESS_MARINE_BRAVO, + ACCESS_MARINE_CHARLIE, + ACCESS_MARINE_DELTA, + ACCESS_MARINE_PILOT, + ACCESS_MARINE_DROPSHIP, + ACCESS_MARINE_SEA, + ACCESS_MARINE_KITCHEN, + ACCESS_MARINE_SYNTH, + ACCESS_MARINE_ASO, + ACCESS_MARINE_CHAPLAIN, + ACCESS_PRESS, + ) + + if(ACCESS_LIST_MARINE_ALL) + return list( + ACCESS_MARINE_CO, + ACCESS_MARINE_AI, + ACCESS_MARINE_AI_TEMP, + ) + get_access(ACCESS_LIST_MARINE_MAIN) + + if(ACCESS_LIST_EMERGENCY_RESPONSE) + return list( + ACCESS_MARINE_MAINT, + ACCESS_MARINE_MEDBAY, + ACCESS_MARINE_KITCHEN, + ACCESS_PRESS, + ) + + if(ACCESS_LIST_UA) + return get_access(ACCESS_LIST_MARINE_MAIN) + get_access(ACCESS_LIST_COLONIAL_ALL) + + if(ACCESS_LIST_MARINE_LIAISON) + return list( + ACCESS_WY_GENERAL, + ACCESS_WY_COLONIAL, + ACCESS_WY_FLIGHT, + ACCESS_WY_RESEARCH, + ACCESS_WY_EXEC, + ACCESS_MARINE_COMMAND, + ACCESS_MARINE_RESEARCH, + ACCESS_MARINE_MEDBAY, + ) + get_access(ACCESS_LIST_COLONIAL_ALL) + + if(ACCESS_LIST_COLONIAL_ALL) + return list( + ACCESS_CIVILIAN_PUBLIC, + ACCESS_CIVILIAN_RESEARCH, + ACCESS_CIVILIAN_ENGINEERING, + ACCESS_CIVILIAN_LOGISTICS, + ACCESS_CIVILIAN_BRIG, + ACCESS_CIVILIAN_MEDBAY, + ACCESS_CIVILIAN_COMMAND, + ) + + if(ACCESS_LIST_CIVIL_LIAISON) + return list( + ACCESS_WY_GENERAL, + ACCESS_WY_COLONIAL, + ACCESS_WY_RESEARCH, + ACCESS_WY_EXEC, + ) + get_access(ACCESS_LIST_COLONIAL_ALL) + + if(ACCESS_LIST_DELIVERY) + return list( + ACCESS_MARINE_COMMAND, + ACCESS_MARINE_CARGO, + ACCESS_CIVILIAN_PUBLIC, + ACCESS_CIVILIAN_RESEARCH, + ACCESS_CIVILIAN_ENGINEERING, + ACCESS_CIVILIAN_LOGISTICS, + ) + + + if(ACCESS_LIST_WY_ALL) + return list( + ACCESS_WY_GENERAL, + ACCESS_WY_COLONIAL, + ACCESS_WY_MEDICAL, + ACCESS_WY_SECURITY, + ACCESS_WY_ENGINEERING, + ACCESS_WY_FLIGHT, + ACCESS_WY_RESEARCH, + ACCESS_WY_EXEC, + ACCESS_WY_PMC, + ACCESS_WY_PMC_TL, + ACCESS_WY_ARMORY, + ACCESS_WY_SECRETS, + ACCESS_WY_LEADERSHIP, + ACCESS_WY_SENIOR_LEAD, + ) + get_access(ACCESS_LIST_COLONIAL_ALL) + + if(ACCESS_LIST_WY_BASE) + return list( + ACCESS_WY_GENERAL, + ACCESS_WY_COLONIAL, + ACCESS_WY_MEDICAL, + ) + + if(ACCESS_LIST_WY_SENIOR) + return list( + ACCESS_WY_GENERAL, + ACCESS_WY_COLONIAL, + ACCESS_WY_MEDICAL, + ACCESS_WY_SECURITY, + ACCESS_WY_ENGINEERING, + ACCESS_WY_FLIGHT, + ACCESS_WY_RESEARCH, + ACCESS_WY_EXEC, + ACCESS_WY_PMC, + ACCESS_WY_PMC_TL, + ACCESS_WY_ARMORY, + ACCESS_WY_LEADERSHIP, + ACCESS_WY_SENIOR_LEAD, + ) + get_access(ACCESS_LIST_COLONIAL_ALL) + + if(ACCESS_LIST_WY_GOON) + return list( + ACCESS_WY_GENERAL, + ACCESS_WY_COLONIAL, + ACCESS_WY_MEDICAL, + ACCESS_WY_SECURITY, + ACCESS_WY_RESEARCH, + ACCESS_WY_ARMORY, + ) + get_access(ACCESS_LIST_COLONIAL_ALL) + get_access(ACCESS_LIST_EMERGENCY_RESPONSE) + + if(ACCESS_LIST_WY_PMC) + return list( + ACCESS_WY_PMC, + ACCESS_WY_ENGINEERING, + ACCESS_WY_FLIGHT, + ) + get_access(ACCESS_LIST_WY_GOON) + + if(ACCESS_LIST_CLF_ALL) + return list( + ACCESS_CLF_SECURITY, + ACCESS_CLF_ARMORY, + ACCESS_CLF_LEADERSHIP, + ACCESS_CLF_SENIOR_LEAD, + ) + get_access(ACCESS_LIST_CLF_BASE) + + if(ACCESS_LIST_CLF_BASE) + return list( + ACCESS_CLF_GENERAL, + ACCESS_CLF_MEDICAL, + ACCESS_CLF_ENGINEERING, + ) + get_access(ACCESS_LIST_COLONIAL_ALL) + get_access(ACCESS_LIST_EMERGENCY_RESPONSE) + + if(ACCESS_LIST_UPP_ALL) + return list( + ACCESS_UPP_GENERAL, + ACCESS_UPP_MEDICAL, + ACCESS_UPP_ENGINEERING, + ACCESS_UPP_SECURITY, + ACCESS_UPP_ARMORY, + ACCESS_UPP_FLIGHT, + ACCESS_UPP_RESEARCH, + ACCESS_UPP_COMMANDO, + ACCESS_UPP_LEADERSHIP, + ACCESS_UPP_SENIOR_LEAD, + ) + get_access(ACCESS_LIST_COLONIAL_ALL) + get_access(ACCESS_LIST_EMERGENCY_RESPONSE) /proc/get_region_accesses(code) switch(code) - if(0) - return get_all_main_access() - if(1) - return list(ACCESS_MARINE_CMP, ACCESS_MARINE_BRIG, ACCESS_MARINE_ARMORY) // Security - if(2) - return list(ACCESS_MARINE_CMO, ACCESS_MARINE_MEDBAY, ACCESS_MARINE_MORGUE, ACCESS_MARINE_CHEMISTRY) // Medbay - if(3) - return list(ACCESS_MARINE_RESEARCH, ACCESS_MARINE_CHEMISTRY, ACCESS_MARINE_MORGUE) // Research - if(4) - return list(ACCESS_MARINE_CE, ACCESS_MARINE_ENGINEERING, ACCESS_MARINE_OT, ACCESS_MARINE_MAINT) // Engineering - if(5) - return list(ACCESS_MARINE_CO, ACCESS_MARINE_SENIOR, ACCESS_MARINE_DATABASE, ACCESS_MARINE_COMMAND, ACCESS_MARINE_RO, ACCESS_MARINE_CARGO, ACCESS_MARINE_SEA, ACCESS_MARINE_SYNTH) // Command - if(6) - return list(ACCESS_MARINE_PREP, ACCESS_MARINE_MEDPREP, ACCESS_MARINE_ENGPREP, ACCESS_MARINE_SMARTPREP, ACCESS_MARINE_LEADER, ACCESS_MARINE_SPECPREP, ACCESS_MARINE_TL_PREP, ACCESS_MARINE_KITCHEN)//spess mahreens - if(7) - return list(ACCESS_MARINE_ALPHA, ACCESS_MARINE_BRAVO, ACCESS_MARINE_CHARLIE, ACCESS_MARINE_DELTA) // Squads - if(8) + if(0)//Everything + return get_access(ACCESS_LIST_COLONIAL_ALL) + get_access(ACCESS_LIST_MARINE_MAIN) + if(1)//Security + return list(ACCESS_MARINE_CMP, ACCESS_MARINE_BRIG, ACCESS_MARINE_ARMORY) + if(2)//Medbay + return list(ACCESS_MARINE_CMO, ACCESS_MARINE_MEDBAY, ACCESS_MARINE_MORGUE, ACCESS_MARINE_CHEMISTRY) + if(3)//Research + return list(ACCESS_MARINE_RESEARCH, ACCESS_MARINE_CHEMISTRY, ACCESS_MARINE_MORGUE) + if(4)//Engineering + return list(ACCESS_MARINE_CE, ACCESS_MARINE_ENGINEERING, ACCESS_MARINE_OT, ACCESS_MARINE_MAINT) + if(5)//Command + return list( + ACCESS_MARINE_SENIOR, + ACCESS_MARINE_DATABASE, + ACCESS_MARINE_COMMAND, + ACCESS_MARINE_RO, + ACCESS_MARINE_CARGO, + ACCESS_MARINE_SEA, + ACCESS_MARINE_SYNTH, + ) + if(6)//Marines + return list( + ACCESS_MARINE_PREP, + ACCESS_MARINE_MEDPREP, + ACCESS_MARINE_ENGPREP, + ACCESS_MARINE_SMARTPREP, + ACCESS_MARINE_LEADER, + ACCESS_MARINE_SPECPREP, + ACCESS_MARINE_TL_PREP, + ACCESS_MARINE_KITCHEN, + ) + if(7)//Squads + return list(ACCESS_MARINE_ALPHA, ACCESS_MARINE_BRAVO, ACCESS_MARINE_CHARLIE, ACCESS_MARINE_DELTA) + if(8)//Civilian return list( - ACCESS_CIVILIAN_PUBLIC, - ACCESS_CIVILIAN_RESEARCH, - ACCESS_CIVILIAN_ENGINEERING, - ACCESS_CIVILIAN_LOGISTICS, - ACCESS_CIVILIAN_BRIG, - ACCESS_CIVILIAN_MEDBAY, - ACCESS_CIVILIAN_COMMAND, - ) //Civilian + ACCESS_CIVILIAN_PUBLIC, + ACCESS_CIVILIAN_RESEARCH, + ACCESS_CIVILIAN_ENGINEERING, + ACCESS_CIVILIAN_LOGISTICS, + ACCESS_CIVILIAN_BRIG, + ACCESS_CIVILIAN_MEDBAY, + ACCESS_CIVILIAN_COMMAND, + ) /proc/get_region_accesses_name(code) switch(code) @@ -214,54 +355,124 @@ /proc/get_access_desc(A) switch(A) - if(ACCESS_MARINE_CMP) return "CMP's Office" - if(ACCESS_MARINE_BRIG) return "Brig" - if(ACCESS_MARINE_ARMORY) return "Armory" - if(ACCESS_MARINE_CMO) return "CMO's Office" - if(ACCESS_MARINE_MEDBAY) return "[MAIN_SHIP_NAME] Medbay" - if(ACCESS_MARINE_RESEARCH) return "[MAIN_SHIP_NAME] Research" - if(ACCESS_MARINE_CHEMISTRY) return "[MAIN_SHIP_NAME] Chemistry" - if(ACCESS_MARINE_MORGUE) return "[MAIN_SHIP_NAME] Morgue" - if(ACCESS_MARINE_CE) return "CE's Office" - if(ACCESS_MARINE_RO) return "RO's Office" - if(ACCESS_MARINE_ENGINEERING) return "[MAIN_SHIP_NAME] Engineering" - if(ACCESS_MARINE_OT) return "[MAIN_SHIP_NAME] Ordnance Workshop" - if(ACCESS_MARINE_SENIOR) return "[MAIN_SHIP_NAME] Senior Command" - if(ACCESS_MARINE_CO) return "Commander's Quarters" - if(ACCESS_MARINE_DATABASE) return "[MAIN_SHIP_NAME]'s Database" - if(ACCESS_MARINE_COMMAND) return "[MAIN_SHIP_NAME] Command" - if(ACCESS_MARINE_CREWMAN) return "Vehicle Crewman" - if(ACCESS_MARINE_PREP) return "Marine Prep" - if(ACCESS_MARINE_ENGPREP) return "Marine Squad Engineering" - if(ACCESS_MARINE_MEDPREP) return "Marine Squad Medical" - if(ACCESS_MARINE_SPECPREP) return "Marine Weapons Specialist" - if(ACCESS_MARINE_SMARTPREP) return "Marine Smartgunner" - if(ACCESS_MARINE_TL_PREP) return "Marine Team Leader" - if(ACCESS_MARINE_LEADER) return "Marine Leader" - if(ACCESS_MARINE_ALPHA) return "Alpha Squad" - if(ACCESS_MARINE_BRAVO) return "Bravo Squad" - if(ACCESS_MARINE_CHARLIE) return "Charlie Squad" - if(ACCESS_MARINE_DELTA) return "Delta Squad" - if(ACCESS_MARINE_CARGO) return "Requisitions" - if(ACCESS_MARINE_DROPSHIP) return "Dropship Piloting" - if(ACCESS_MARINE_PILOT) return "Pilot Gear" - if(ACCESS_MARINE_MAINT) return "[MAIN_SHIP_NAME] Maintenance" - if(ACCESS_CIVILIAN_RESEARCH) return "Civilian Research" - if(ACCESS_CIVILIAN_COMMAND) return "Civilian Command" - if(ACCESS_CIVILIAN_MEDBAY) return "Civilian Medbay" - if(ACCESS_CIVILIAN_LOGISTICS) return "Civilian Logistics" - if(ACCESS_CIVILIAN_ENGINEERING) return "Civilian Engineering" - if(ACCESS_CIVILIAN_BRIG) return "Civilian Brig" - if(ACCESS_CIVILIAN_PUBLIC) return "Civilian" - if(ACCESS_MARINE_SEA) return "SEA's Office" - if(ACCESS_MARINE_KITCHEN) return "Kitchen" - if(ACCESS_MARINE_SYNTH) return "Synthetic Storage" + if(ACCESS_MARINE_CMP) + return "CMP's Office" + if(ACCESS_MARINE_BRIG) + return "Brig" + if(ACCESS_MARINE_ARMORY) + return "Armory" + if(ACCESS_MARINE_CMO) + return "CMO's Office" + if(ACCESS_MARINE_MEDBAY) + return "[MAIN_SHIP_NAME] Medbay" + if(ACCESS_MARINE_RESEARCH) + return "[MAIN_SHIP_NAME] Research" + if(ACCESS_MARINE_CHEMISTRY) + return "[MAIN_SHIP_NAME] Chemistry" + if(ACCESS_MARINE_MORGUE) + return "[MAIN_SHIP_NAME] Morgue" + if(ACCESS_MARINE_CE) + return "CE's Office" + if(ACCESS_MARINE_RO) + return "RO's Office" + if(ACCESS_MARINE_ENGINEERING) + return "[MAIN_SHIP_NAME] Engineering" + if(ACCESS_MARINE_OT) + return "[MAIN_SHIP_NAME] Ordnance Workshop" + if(ACCESS_MARINE_SENIOR) + return "[MAIN_SHIP_NAME] Senior Command" + if(ACCESS_MARINE_CO) + return "Commander's Quarters" + if(ACCESS_MARINE_DATABASE) + return "[MAIN_SHIP_NAME]'s Database" + if(ACCESS_MARINE_COMMAND) + return "[MAIN_SHIP_NAME] Command" + if(ACCESS_MARINE_CREWMAN) + return "Vehicle Crewman" + if(ACCESS_MARINE_PREP) + return "Marine Prep" + if(ACCESS_MARINE_ENGPREP) + return "Marine Squad Engineering" + if(ACCESS_MARINE_MEDPREP) + return "Marine Squad Medical" + if(ACCESS_MARINE_SPECPREP) + return "Marine Weapons Specialist" + if(ACCESS_MARINE_SMARTPREP) + return "Marine Smartgunner" + if(ACCESS_MARINE_TL_PREP) + return "Marine Team Leader" + if(ACCESS_MARINE_LEADER) + return "Marine Leader" + if(ACCESS_MARINE_ALPHA) + return "Alpha Squad" + if(ACCESS_MARINE_BRAVO) + return "Bravo Squad" + if(ACCESS_MARINE_CHARLIE) + return "Charlie Squad" + if(ACCESS_MARINE_DELTA) + return "Delta Squad" + if(ACCESS_MARINE_CARGO) + return "Requisitions" + if(ACCESS_MARINE_DROPSHIP) + return "Dropship Piloting" + if(ACCESS_MARINE_PILOT) + return "Pilot Gear" + if(ACCESS_MARINE_MAINT) + return "[MAIN_SHIP_NAME] Maintenance" + if(ACCESS_CIVILIAN_RESEARCH) + return "Civilian Research" + if(ACCESS_CIVILIAN_COMMAND) + return "Civilian Command" + if(ACCESS_CIVILIAN_MEDBAY) + return "Civilian Medbay" + if(ACCESS_CIVILIAN_LOGISTICS) + return "Civilian Logistics" + if(ACCESS_CIVILIAN_ENGINEERING) + return "Civilian Engineering" + if(ACCESS_CIVILIAN_BRIG) + return "Civilian Brig" + if(ACCESS_CIVILIAN_PUBLIC) + return "Civilian" + if(ACCESS_MARINE_SEA) + return "SEA's Office" + if(ACCESS_MARINE_KITCHEN) + return "Kitchen" + if(ACCESS_MARINE_SYNTH) + return "Synthetic Storage" + if(ACCESS_MARINE_AI) + return "AI Core" + if(ACCESS_MARINE_AI_TEMP) + return "AI Access" + if(ACCESS_ARES_DEBUG) + return "AI Debug" /proc/get_weyland_access_desc(A) switch(A) - if(ACCESS_WY_PMC_GREEN) return "Wey-Yu PMC Green" - if(ACCESS_WY_PMC_ORANGE) return "Wey-Yu PMC Orange" - if(ACCESS_WY_PMC_RED) return "Wey-Yu PMC Red" - if(ACCESS_WY_PMC_BLACK) return "Wey-Yu PMC Black" - if(ACCESS_WY_PMC_WHITE) return "Wey-Yu PMC White" - if(ACCESS_WY_CORPORATE) return "Wey-Yu Executive" + if(ACCESS_WY_GENERAL) + return "Wey-Yu General" + if(ACCESS_WY_COLONIAL) + return "Wey-Yu Colony" + if(ACCESS_WY_MEDICAL) + return "Wey-Yu Medical" + if(ACCESS_WY_SECURITY) + return "Wey-Yu Security" + if(ACCESS_WY_ENGINEERING) + return "Wey-Yu Engineering" + if(ACCESS_WY_FLIGHT) + return "Wey-Yu Flight Control" + if(ACCESS_WY_RESEARCH) + return "Wey-Yu Research" + if(ACCESS_WY_EXEC) + return "Wey-Yu Corporate" + if(ACCESS_WY_PMC) + return "Wey-Yu PMC" + if(ACCESS_WY_PMC_TL) + return "Wey-Yu PMC Lead" + if(ACCESS_WY_ARMORY) + return "Wey-Yu Armory" + if(ACCESS_WY_SECRETS) + return "Wey-Yu HighSec" + if(ACCESS_WY_LEADERSHIP) + return "Wey-Yu Leadership" + if(ACCESS_WY_SENIOR_LEAD) + return "Wey-Yu Senior Leadership" diff --git a/code/game/jobs/job/antag/other/pred.dm b/code/game/jobs/job/antag/other/pred.dm index a8bcec788c44..3808c5637da9 100644 --- a/code/game/jobs/job/antag/other/pred.dm +++ b/code/game/jobs/job/antag/other/pred.dm @@ -31,17 +31,13 @@ SSticker.mode.attempt_to_join_as_predator(player) -/datum/job/antag/predator/get_whitelist_status(list/roles_whitelist, client/player) // Might be a problem waiting here, but we've got no choice - . = ..() - if(!.) - return - +/datum/job/antag/predator/get_whitelist_status(client/player) // Might be a problem waiting here, but we've got no choice if(!player.clan_info) return CLAN_RANK_BLOODED player.clan_info.sync() // pause here might be problematic, we'll see. If DB dies, then we're fucked - var/rank = clan_ranks[player.clan_info.clan_rank] + var/rank = GLOB.clan_ranks[player.clan_info.clan_rank] if(!rank) return CLAN_RANK_BLOODED @@ -49,10 +45,7 @@ if(!("[JOB_PREDATOR][rank]" in gear_preset_whitelist)) return CLAN_RANK_BLOODED - if(\ - (roles_whitelist[player.ckey] & (WHITELIST_YAUTJA_LEADER|WHITELIST_YAUTJA_COUNCIL|WHITELIST_YAUTJA_COUNCIL_LEGACY)) &&\ - get_desired_status(player.prefs.yautja_status, WHITELIST_COUNCIL) == WHITELIST_NORMAL\ - ) + if(player.check_whitelist_status(WHITELIST_YAUTJA_LEADER|WHITELIST_YAUTJA_COUNCIL|WHITELIST_YAUTJA_COUNCIL_LEGACY) && get_desired_status(player.prefs.yautja_status, WHITELIST_COUNCIL) == WHITELIST_NORMAL) return CLAN_RANK_BLOODED return rank diff --git a/code/game/jobs/job/antag/xeno/xenomorph.dm b/code/game/jobs/job/antag/xeno/xenomorph.dm index 53b06147e28c..78b6ab7e3ab2 100644 --- a/code/game/jobs/job/antag/xeno/xenomorph.dm +++ b/code/game/jobs/job/antag/xeno/xenomorph.dm @@ -88,9 +88,8 @@ break human_to_transform.statistic_exempt = TRUE - human_to_transform.buckled = start_nest + human_to_transform.set_buckled(start_nest) human_to_transform.setDir(start_nest.dir) - human_to_transform.update_canmove() start_nest.buckled_mob = human_to_transform start_nest.afterbuckle(human_to_transform) diff --git a/code/game/jobs/job/civilians/other/liaison.dm b/code/game/jobs/job/civilians/other/liaison.dm index ba65720b8251..cbbb87124957 100644 --- a/code/game/jobs/job/civilians/other/liaison.dm +++ b/code/game/jobs/job/civilians/other/liaison.dm @@ -6,7 +6,7 @@ selection_class = "job_cl" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/liaison - entry_message_body = "As a representative of Weyland-Yutani Corporation, your job requires you to stay in character at all times. You are not required to follow military orders; however, you cannot give military orders. Your primary job is to observe and report back your findings to Weyland-Yutani. Follow regular game rules unless told otherwise by your superiors. Use your office fax machine to communicate with corporate headquarters or to acquire new directives. You may not receive anything back, and this is normal." + entry_message_body = "As a representative of Weyland-Yutani Corporation, your job requires you to stay in character at all times. You are not required to follow military orders; however, you cannot give military orders. Your primary job is to observe and report back your findings to Weyland-Yutani. Follow regular game rules unless told otherwise by your superiors. Use your office fax machine to communicate with corporate headquarters or to acquire new directives. You may not receive anything back, and this is normal." var/mob/living/carbon/human/active_liaison /datum/job/civilian/liaison/generate_entry_conditions(mob/living/liaison, whitelist_status) diff --git a/code/game/jobs/job/civilians/other/mess_seargent.dm b/code/game/jobs/job/civilians/other/mess_seargent.dm index 37e0b01ad711..fb4f5ee14d7c 100644 --- a/code/game/jobs/job/civilians/other/mess_seargent.dm +++ b/code/game/jobs/job/civilians/other/mess_seargent.dm @@ -1,12 +1,30 @@ /datum/job/civilian/chef title = JOB_MESS_SERGEANT - total_positions = 1 + total_positions = 2 spawn_positions = 1 + allow_additional = TRUE + scaled = TRUE selection_class = "job_ot" flags_startup_parameters = ROLE_ADD_TO_DEFAULT - supervisors = "the acting commanding officer" + supervisors = "the auxiliary support officer" gear_preset = /datum/equipment_preset/uscm_ship/chef - entry_message_body = "Your job is to service the marines with excellent food, drinks and entertaining the shipside crew when needed. You have a lot of freedom and it is up to you, to decide what to do with it. Good luck!" + entry_message_body = "Your job is to service the marines with excellent food, drinks and entertaining the shipside crew when needed. You have a lot of freedom and it is up to you, to decide what to do with it. Good luck!" + +/datum/job/civilian/chef/set_spawn_positions(count) + spawn_positions = mess_sergeant_slot_formula(count) + +/datum/job/civilian/chef/get_total_positions(latejoin = FALSE) + var/positions = spawn_positions + if(latejoin) + positions = mess_sergeant_slot_formula(get_total_marines()) + if(positions <= total_positions_so_far) + positions = total_positions_so_far + else + total_positions_so_far = positions + else + total_positions_so_far = positions + + return positions /obj/effect/landmark/start/chef name = JOB_MESS_SERGEANT diff --git a/code/game/jobs/job/civilians/other/reporter.dm b/code/game/jobs/job/civilians/other/reporter.dm index c1cedbb3ecd2..c681768f93bc 100644 --- a/code/game/jobs/job/civilians/other/reporter.dm +++ b/code/game/jobs/job/civilians/other/reporter.dm @@ -25,9 +25,9 @@ /datum/job/civilian/reporter/generate_entry_message(mob/living/carbon/human/H) if(military) - . = {"The USCM has assigned you to the USS Almayer to better handle messaging on how things run in the Neroid Sector. Get out there and show the universe that the USCM is doing great things!"} + . = {"The USCM has assigned you to the [MAIN_SHIP_NAME] to better handle messaging on how things run in the Neroid Sector. Get out there and show the universe that the USCM is doing great things!"} else - . = {"What a scoop! You've been assigned to the USS Almayer to see what kinda mischief they'd get into and it seems trouble is here! + . = {"What a scoop! You've been assigned to the [MAIN_SHIP_NAME] to see what kinda mischief they'd get into and it seems trouble is here! This could be the story of the sector! 'Brave Marines responding to dangerous distress signal!' It'd surely get Mr. Parkerson to notice you in the office if you brought him a story like this!"} /obj/effect/landmark/start/reporter diff --git a/code/game/jobs/job/civilians/other/survivors.dm b/code/game/jobs/job/civilians/other/survivors.dm index ff2d7d229fba..a85731aa781a 100644 --- a/code/game/jobs/job/civilians/other/survivors.dm +++ b/code/game/jobs/job/civilians/other/survivors.dm @@ -10,14 +10,28 @@ job_options = SURVIVOR_VARIANT_LIST var/intro_text var/story_text + /// Whether or not the survivor is an inherently hostile to marines. + var/hostile = FALSE /datum/job/civilian/survivor/set_spawn_positions(count) - spawn_positions = Clamp((round(count * SURVIVOR_TO_TOTAL_SPAWN_RATIO)), 2, 8) + spawn_positions = clamp((round(count * SURVIVOR_TO_TOTAL_SPAWN_RATIO)), 2, 8) total_positions = spawn_positions -/datum/job/civilian/survivor/equip_job(mob/living/M) +/datum/job/civilian/survivor/equip_job(mob/living/survivor) + var/generated_account = generate_money_account(survivor) + addtimer(CALLBACK(src, PROC_REF(announce_entry_message), survivor, generated_account), 2 SECONDS) return +/datum/job/civilian/survivor/announce_entry_message(mob/living/carbon/human/survivor, datum/money_account/account, whitelist_status) //The actual message that is displayed to the mob when they enter the game as a new player. + if(survivor?.loc && survivor.client) + //Document syntax cannot have tabs for proper formatting. + var/entrydisplay = " \ + [SPAN_ROLE_BODY("|______________________|")] \n\ + [SPAN_ROLE_BODY("[generate_entry_message(survivor)]
[account ? "Your account number is: [account.account_number]. Your account pin is: [account.remote_access_pin]." : "You do not have a bank account."]")] \n\ + [SPAN_ROLE_BODY("|______________________|")] \ + " + to_chat_spaced(survivor, html = entrydisplay) + /datum/job/civilian/survivor/spawn_in_player(mob/new_player/NP) . = ..() var/mob/living/carbon/human/H = . @@ -47,23 +61,32 @@ if(picked_spawner.story_text) story_text = picked_spawner.story_text + + if(picked_spawner.hostile) + hostile = TRUE + new /datum/cm_objective/move_mob/almayer/survivor(H) -/datum/job/civilian/survivor/generate_entry_message(mob/living/carbon/human/H) +/datum/job/civilian/survivor/generate_entry_message(mob/living/carbon/human/survivor) if(intro_text) for(var/line in intro_text) - to_chat(H, line) + to_chat(survivor, line) else - to_chat(H, "

You are a survivor!

") - to_chat(H, SPAN_NOTICE(SSmapping.configs[GROUND_MAP].survivor_message)) - to_chat(H, SPAN_NOTICE("You are fully aware of the xenomorph threat and are able to use this knowledge as you see fit.")) - to_chat(H, SPAN_NOTICE("You are NOT aware of the marines or their intentions. ")) + to_chat(survivor, "

You are a survivor!

") + to_chat(survivor, SPAN_NOTICE(SSmapping.configs[GROUND_MAP].survivor_message)) + to_chat(survivor, SPAN_NOTICE("You are fully aware of the xenomorph threat and are able to use this knowledge as you see fit.")) + to_chat(survivor, SPAN_NOTICE("You are NOT aware of the marines or their intentions. ")) if(story_text) - to_chat(H, story_text) - H.mind.memory += story_text + to_chat(survivor, story_text) + survivor.mind.memory += story_text + else + tell_survivor_story(survivor) + + if(hostile) + to_chat(survivor, SPAN_HIGHDANGER("You are HOSTILE to the USCM!")) else - tell_survivor_story(H) + to_chat(survivor, SPAN_XENOHIGHDANGER("You are NON-HOSTILE to the USCM!")) /datum/job/civilian/survivor/proc/tell_survivor_story(mob/living/carbon/human/H) var/list/survivor_story = list( diff --git a/code/game/jobs/job/civilians/support/cmo.dm b/code/game/jobs/job/civilians/support/cmo.dm index 9f3ff20cffb3..b75f840ac895 100644 --- a/code/game/jobs/job/civilians/support/cmo.dm +++ b/code/game/jobs/job/civilians/support/cmo.dm @@ -6,7 +6,7 @@ selection_class = "job_cmo" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_medical/cmo - entry_message_body = "You're a commissioned officer of the USCM. You have authority over everything related to Medbay and Research, only able to be overriden by the XO and CO. You are in charge of medical staff, surgery, chemistry, stimulants and keeping the marines healthy overall." + entry_message_body = "You're a commissioned officer of the USCM. You have authority over everything related to Medbay and Research, only able to be overridden by the XO and CO. You are in charge of medical staff, surgery, chemistry, stimulants and keeping the marines healthy overall." AddTimelock(/datum/job/civilian/professor, list( JOB_MEDIC_ROLES = 10 HOURS diff --git a/code/game/jobs/job/civilians/support/doctor.dm b/code/game/jobs/job/civilians/support/doctor.dm index 587c4727690f..9e0853d96e33 100644 --- a/code/game/jobs/job/civilians/support/doctor.dm +++ b/code/game/jobs/job/civilians/support/doctor.dm @@ -32,9 +32,9 @@ //check what job option you took and generate the corresponding the good texte. /datum/job/civilian/doctor/generate_entry_message(mob/living/carbon/human/H) if(doctor) - . = {"You're a commissioned officer of the USCM, though you are not in the ship's chain of command. You are a doctor and tasked with keeping the marines healthy and strong, usually in the form of surgery. You are a jack of all trades in medicine: you can medicate, perform surgery and produce pharmaceuticals. If you do not know what you are doing, mentorhelp so a mentor can assist you."} + . = {"You're a commissioned officer of the USCM, though you are not in the ship's chain of command. You are a doctor and tasked with keeping the marines healthy and strong, usually in the form of surgery. You are a jack of all trades in medicine: you can medicate, perform surgery and produce pharmaceuticals. If you do not know what you are doing, mentorhelp so a mentor can assist you."} else - . = {"You're a commissioned officer of the USCM, though you are not in the ship's chain of command. You are a surgeon and tasked with keeping the marines healthy and strong, usually in the form of surgery. You are a doctor that specializes in surgery, but you are also very capable in pharmacy and triage. If you do not know what you are doing, mentorhelp so a mentor can assist you."} + . = {"You're a commissioned officer of the USCM, though you are not in the ship's chain of command. You are a surgeon and tasked with keeping the marines healthy and strong, usually in the form of surgery. You are a doctor that specializes in surgery, but you are also very capable in pharmacy and triage. If you do not know what you are doing, mentorhelp so a mentor can assist you."} /datum/job/civilian/doctor/set_spawn_positions(count) spawn_positions = doc_slot_formula(count) diff --git a/code/game/jobs/job/civilians/support/nurse.dm b/code/game/jobs/job/civilians/support/nurse.dm index 034421d799aa..8912011298dc 100644 --- a/code/game/jobs/job/civilians/support/nurse.dm +++ b/code/game/jobs/job/civilians/support/nurse.dm @@ -6,7 +6,7 @@ selection_class = "job_doctor" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_medical/nurse - entry_message_body = "You are tasked with keeping the Marines healthy and strong. You are also an expert when it comes to medication and treatment, and can do minor surgical procedures. Focus on assisting doctors and triaging wounded marines." + entry_message_body = "You are tasked with keeping the Marines healthy and strong. You are also an expert when it comes to medication and treatment, and can do minor surgical procedures. Focus on assisting doctors and triaging wounded marines." /obj/effect/landmark/start/nurse name = JOB_NURSE diff --git a/code/game/jobs/job/civilians/support/researcher.dm b/code/game/jobs/job/civilians/support/researcher.dm index fd33d1f03f0a..21163f27959d 100644 --- a/code/game/jobs/job/civilians/support/researcher.dm +++ b/code/game/jobs/job/civilians/support/researcher.dm @@ -10,7 +10,7 @@ selection_class = "job_researcher" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_medical/researcher - entry_message_body = "You're a commissioned officer of the USCM, though you are not in the ship's chain of command. You are tasked with researching and developing new medical treatments, helping your fellow doctors, and generally learning new things. Your role involves a lot of roleplaying, but you can perform the function of a regular doctor. Do not hand out things to Marines without getting permission from your supervisor." + entry_message_body = "You're a commissioned officer of the USCM, though you are not in the ship's chain of command. You are tasked with researching and developing new medical treatments, helping your fellow doctors, and generally learning new things. Your role involves a lot of roleplaying, but you can perform the function of a regular doctor. Do not hand out things to Marines without getting permission from your supervisor." /datum/job/civilian/researcher/set_spawn_positions(count) spawn_positions = rsc_slot_formula(count) diff --git a/code/game/jobs/job/civilians/support/synthetic.dm b/code/game/jobs/job/civilians/support/synthetic.dm index 10ab895cf276..12e50ef6c809 100644 --- a/code/game/jobs/job/civilians/support/synthetic.dm +++ b/code/game/jobs/job/civilians/support/synthetic.dm @@ -9,7 +9,7 @@ flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADMIN_NOTIFY|ROLE_WHITELISTED|ROLE_CUSTOM_SPAWN flags_whitelist = WHITELIST_SYNTHETIC gear_preset = /datum/equipment_preset/synth/uscm - entry_message_body = "You are a Synthetic! You are held to a higher standard and are required to obey not only the Server Rules but Marine Law and Synthetic Rules. Failure to do so may result in your White-list Removal. Your primary job is to support and assist all USCM Departments and Personnel on-board. In addition, being a Synthetic gives you knowledge in every field and specialization possible on-board the ship. As a Synthetic you answer to the acting commanding officer. Special circumstances may change this!" + entry_message_body = "You are a Synthetic! You are held to a higher standard and are required to obey not only the Server Rules but Marine Law and Synthetic Rules. Failure to do so may result in your White-list Removal. Your primary job is to support and assist all USCM Departments and Personnel on-board. In addition, being a Synthetic gives you knowledge in every field and specialization possible on-board the ship. As a Synthetic you answer to the acting commanding officer. Special circumstances may change this!" /datum/job/civilian/synthetic/New() . = ..() @@ -19,16 +19,16 @@ "[JOB_SYNTH][WHITELIST_LEADER]" = /datum/equipment_preset/synth/uscm/councillor ) -/datum/job/civilian/synthetic/get_whitelist_status(list/roles_whitelist, client/player) +/datum/job/civilian/synthetic/get_whitelist_status(client/player) . = ..() if(!.) return - if(roles_whitelist[player.ckey] & WHITELIST_SYNTHETIC_LEADER) + if(player.check_whitelist_status(WHITELIST_SYNTHETIC_LEADER)) return get_desired_status(player.prefs.synth_status, WHITELIST_LEADER) - else if(roles_whitelist[player.ckey] & (WHITELIST_SYNTHETIC_COUNCIL|WHITELIST_SYNTHETIC_COUNCIL_LEGACY)) + if(player.check_whitelist_status(WHITELIST_SYNTHETIC_COUNCIL|WHITELIST_SYNTHETIC_COUNCIL_LEGACY)) return get_desired_status(player.prefs.synth_status, WHITELIST_COUNCIL) - else if(roles_whitelist[player.ckey] & WHITELIST_SYNTHETIC) + if(player.check_whitelist_status(WHITELIST_SYNTHETIC)) return get_desired_status(player.prefs.synth_status, WHITELIST_NORMAL) /datum/job/civilian/synthetic/set_spawn_positions(count) diff --git a/code/game/jobs/job/civilians/support/working_joe.dm b/code/game/jobs/job/civilians/support/working_joe.dm index 78c6ad2fcca4..d890b3684084 100644 --- a/code/game/jobs/job/civilians/support/working_joe.dm +++ b/code/game/jobs/job/civilians/support/working_joe.dm @@ -1,17 +1,59 @@ +#define STANDARD_VARIANT "Working Joe" +#define HAZMAT_VARIANT "Hazmat Joe" + /datum/job/civilian/working_joe title = JOB_WORKING_JOE - total_positions = 3 - spawn_positions = 3 - allow_additional = 1 - supervisors = "ARES and the acting commanding officer" + total_positions = 6 + spawn_positions = 6 + allow_additional = TRUE + scaled = TRUE + supervisors = "ARES and APOLLO" selection_class = "job_working_joe" flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_WHITELISTED|ROLE_CUSTOM_SPAWN flags_whitelist = WHITELIST_JOE gear_preset = /datum/equipment_preset/synth/working_joe - entry_message_body = "You are a Working Joe! You are held to a higher standard and are required to obey not only the Server Rules but Marine Law and Synthetic Rules. Failure to do so may result in your White-list Removal. Your primary job is to maintain the cleanliness of the ship, putting things in their proper place. Your capacities are limited, but you have all the equipment you need, and the central AI has a plan!" + gets_emergency_kit = FALSE + + job_options = list(STANDARD_VARIANT = "JOE", HAZMAT_VARIANT = "HAZ") + var/standard = TRUE + +/datum/job/civilian/working_joe/check_whitelist_status(mob/user) + if(user.client.check_whitelist_status(WHITELIST_SYNTHETIC)) + return TRUE + + return ..() + +/datum/job/civilian/working_joe/handle_job_options(option) + if(option != HAZMAT_VARIANT) + standard = TRUE + gear_preset = /datum/equipment_preset/synth/working_joe + else + standard = FALSE + gear_preset = /datum/equipment_preset/synth/working_joe/engi + +/datum/job/civilian/working_joe/set_spawn_positions(count) + spawn_positions = working_joe_slot_formula(count) + +/datum/job/civilian/working_joe/get_total_positions(latejoin = 0) + var/positions = spawn_positions + if(latejoin) + positions = working_joe_slot_formula(get_total_marines()) + if(positions <= total_positions_so_far) + positions = total_positions_so_far + else + total_positions_so_far = positions + else + total_positions_so_far = positions + return positions + +/datum/job/civilian/working_joe/generate_entry_message(mob/living/carbon/human/H) + if(standard) + . = {"You are a Working Joe. You are held to a higher standard and are required to obey not only the Server Rules but Marine Law, Roleplay Expectations and Synthetic Rules. Your primary task is to maintain the cleanliness of the ship, putting things in their proper place. Alternatively, your primary task may be to assist with manual labor in limited capacity, or clerical duties. Your capacities are limited, but you have all the equipment you need, and the central AI has a plan! Stay in character at all times. Use the APOLLO link to communicate with your uplink!"} + else + . = {"You are a Working Joe for Hazardous Environments! You are held to a higher standard and are required to obey not only the Server Rules but Marine Law, Roleplay Expectations and Synthetic Rules. You are a variant of the Working Joe built for tougher environments and fulfill the specific duty of dangerous repairs or maintenance. Your primary task is to maintain the reactor, SMES and AI Core. Your secondary task is to respond to hazardous environments, such as an atmospheric breach or biohazard spill, and assist with repairs when ordered to by either an AI Mainframe, or a Commisioned Officer. You should not be seen outside of emergencies besides in Engineering and the AI Core! Stay in character at all times. Use the APOLLO link to communicate with your uplink!"} /datum/job/civilian/working_joe/announce_entry_message(mob/living/carbon/human/H) - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(ai_announcement), "[H.real_name] has been deployed to help with operations."), 1.5 SECONDS) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(ares_apollo_talk), "[H.real_name] has been activated."), 1.5 SECONDS) return ..() /obj/effect/landmark/start/working_joe diff --git a/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm b/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm new file mode 100644 index 000000000000..5f6293000365 --- /dev/null +++ b/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm @@ -0,0 +1,26 @@ +/datum/job/command/auxiliary_officer + title = JOB_AUXILIARY_OFFICER + total_positions = 1 + spawn_positions = 1 + allow_additional = TRUE + flags_startup_parameters = ROLE_ADD_TO_DEFAULT + gear_preset = /datum/equipment_preset/uscm_ship/auxiliary_officer + entry_message_body = "Your job is to oversee the hangar crew, the intel officers, the engineering department, and requisition department. You have many responsibilities and a few plates to keep spinning but your subordinates are mostly self-reliant. Assist where you can and make sure command personnel are confident the auxiliary departments are operating at peak efficiency." + +AddTimelock(/datum/job/command/auxiliary_officer, list( + JOB_SQUAD_ROLES = 5 HOURS, + JOB_REQUISITION_ROLES = 5 HOURS, + JOB_ENGINEER_ROLES = 5 HOURS, + JOB_AUXILIARY_ROLES = 5 HOURS, +)) + +/obj/effect/landmark/start/auxiliary_officer + name = JOB_AUXILIARY_OFFICER + job = /datum/job/command/auxiliary_officer + +/datum/timelock/auxiliary + name = "Auxiliary Roles" + +/datum/timelock/auxiliary/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_AUXILIARY_ROLES_LIST diff --git a/code/game/jobs/job/command/auxiliary/crew_chief.dm b/code/game/jobs/job/command/auxiliary/crew_chief.dm index 3bf7f0bcd33e..0770bcd60ffa 100644 --- a/code/game/jobs/job/command/auxiliary/crew_chief.dm +++ b/code/game/jobs/job/command/auxiliary/crew_chief.dm @@ -4,9 +4,10 @@ spawn_positions = 2 allow_additional = TRUE scaled = TRUE + supervisors = "the pilot officers" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/dcc - entry_message_body = "Your job is to assist the pilot officer maintain the ship's dropship. You have authority only on the dropship, but you are expected to maintain order, as not to disrupt the pilot." + entry_message_body = "Your job is to assist the pilot officer maintain the ship's dropship. You have authority only on the dropship, but you are expected to maintain order, as not to disrupt the pilot." AddTimelock(/datum/job/command/crew_chief, list( JOB_SQUAD_ROLES = 5 HOURS diff --git a/code/game/jobs/job/command/auxiliary/intel.dm b/code/game/jobs/job/command/auxiliary/intel.dm index f30bb62e8d72..9905bc9d3747 100644 --- a/code/game/jobs/job/command/auxiliary/intel.dm +++ b/code/game/jobs/job/command/auxiliary/intel.dm @@ -5,9 +5,10 @@ spawn_positions = 3 allow_additional = 1 scaled = 1 - flags_startup_parameters = ROLE_ADD_TO_DEFAULT + supervisors = "the auxiliary support officer" + flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = "USCM Intelligence Officer (IO) (Cryo)" - entry_message_body = "Your job is to assist the marines in collecting intelligence related to the current operation to better inform command of their opposition. You are in charge of gathering any data disks, folders, and notes you may find on the operational grounds and decrypt them to grant the USCM additional resources." + entry_message_body = "Your job is to assist the marines in collecting intelligence related to the current operation to better inform command of their opposition. You are in charge of gathering any data disks, folders, and notes you may find on the operational grounds and decrypt them to grant the USCM additional resources." /datum/job/command/intel/set_spawn_positions(count) spawn_positions = int_slot_formula(count) diff --git a/code/game/jobs/job/command/auxiliary/pilot.dm b/code/game/jobs/job/command/auxiliary/pilot.dm index b7c9d15fa366..1a7a7c21d5a0 100644 --- a/code/game/jobs/job/command/auxiliary/pilot.dm +++ b/code/game/jobs/job/command/auxiliary/pilot.dm @@ -4,12 +4,14 @@ spawn_positions = 2 allow_additional = TRUE scaled = TRUE + supervisors = "the auxiliary support officer" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/po - entry_message_body = "Your job is to fly, protect, and maintain the ship's dropship. While you are an officer, your authority is limited to the dropship, where you have authority over the enlisted personnel. If you are not piloting, there is an autopilot fallback for command, but don't leave the dropship without reason." + entry_message_body = "Your job is to fly, protect, and maintain the ship's dropship. While you are an officer, your authority is limited to the dropship, where you have authority over the enlisted personnel. If you are not piloting, there is an autopilot fallback for command, but don't leave the dropship without reason." +// Dropship Roles is both PO and DCC combined to not force people to backtrack AddTimelock(/datum/job/command/pilot, list( - JOB_SQUAD_ROLES = 5 HOURS + JOB_DROPSHIP_ROLES = 2 HOURS )) /obj/effect/landmark/start/pilot diff --git a/code/game/jobs/job/command/auxiliary/senior.dm b/code/game/jobs/job/command/auxiliary/senior.dm index 68b9a99e4c4f..014db9569b2a 100644 --- a/code/game/jobs/job/command/auxiliary/senior.dm +++ b/code/game/jobs/job/command/auxiliary/senior.dm @@ -3,10 +3,13 @@ flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADMIN_NOTIFY|ROLE_WHITELISTED flags_whitelist = WHITELIST_MENTOR gear_preset = /datum/equipment_preset/uscm_ship/sea - entry_message_body = "You are held to a higher standard and are required to obey not only the Server Rules but Marine Law and Standard Operating Procedure. Failure to do so may result in your Mentorship Removal. Your primary job is to teach others the game and its mechanics, and offer advice to all USCM Departments and Personnel on-board." job_options = list("Gunnery Sergeant" = "GySGT", "Master Sergeant" = "MSgt", "First Sergeant" = "1Sgt", "Master Gunnery Sergeant" = "MGySgt", "Sergeant Major" = "SgtMaj") +/datum/job/command/senior/on_config_load() + entry_message_body = "You are held to a higher standard and are required to obey not only the Server Rules but Marine Law and Standard Operating Procedure. Failure to do so may result in your Mentorship Removal. Your primary job is to teach others the game and its mechanics, and offer advice to all USCM Departments and Personnel on-board." + return ..() + /datum/job/command/senior/announce_entry_message(mob/living/carbon/human/H) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(all_hands_on_deck), "Attention all hands, [H.get_paygrade(0)] [H.real_name] on deck!"), 1.5 SECONDS) return ..() diff --git a/code/game/jobs/job/command/cic/captain.dm b/code/game/jobs/job/command/cic/captain.dm index 23084d0c5f72..30fa455beeee 100644 --- a/code/game/jobs/job/command/cic/captain.dm +++ b/code/game/jobs/job/command/cic/captain.dm @@ -6,7 +6,6 @@ flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADMIN_NOTIFY|ROLE_WHITELISTED flags_whitelist = WHITELIST_COMMANDER gear_preset = /datum/equipment_preset/uscm_ship/commander - entry_message_body = "You are the Commanding Officer of the USS Almayer as well as the operation. Your goal is to lead the Marines on their mission as well as protect and command the ship and her crew. Your job involves heavy roleplay and requires you to behave like a high-ranking officer and to stay in character at all times. As the Commanding Officer your only superior is High Command itself. You must abide by the Commanding Officer Code of Conduct. Failure to do so may result in punitive action against you. Godspeed." /datum/job/command/commander/New() . = ..() @@ -16,16 +15,20 @@ "[JOB_CO][WHITELIST_LEADER]" = /datum/equipment_preset/uscm_ship/commander/council/plus ) -/datum/job/command/commander/get_whitelist_status(list/roles_whitelist, client/player) +/datum/job/command/commander/generate_entry_message() + entry_message_body = "You are the Commanding Officer of the [MAIN_SHIP_NAME] as well as the operation. Your goal is to lead the Marines on their mission as well as protect and command the ship and her crew. Your job involves heavy roleplay and requires you to behave like a high-ranking officer and to stay in character at all times. As the Commanding Officer your only superior is High Command itself. You must abide by the Commanding Officer Code of Conduct. Failure to do so may result in punitive action against you. Godspeed." + return ..() + +/datum/job/command/commander/get_whitelist_status(client/player) . = ..() if(!.) return - if(roles_whitelist[player.ckey] & WHITELIST_COMMANDER_LEADER) + if(player.check_whitelist_status(WHITELIST_COMMANDER_LEADER|WHITELIST_COMMANDER_COLONEL)) return get_desired_status(player.prefs.commander_status, WHITELIST_LEADER) - else if(roles_whitelist[player.ckey] & (WHITELIST_COMMANDER_COUNCIL|WHITELIST_COMMANDER_COUNCIL_LEGACY)) + if(player.check_whitelist_status(WHITELIST_COMMANDER_COUNCIL|WHITELIST_COMMANDER_COUNCIL_LEGACY)) return get_desired_status(player.prefs.commander_status, WHITELIST_COUNCIL) - else if(roles_whitelist[player.ckey] & WHITELIST_COMMANDER) + if(player.check_whitelist_status(WHITELIST_COMMANDER)) return get_desired_status(player.prefs.commander_status, WHITELIST_NORMAL) /datum/job/command/commander/announce_entry_message(mob/living/carbon/human/H) diff --git a/code/game/jobs/job/command/cic/executive.dm b/code/game/jobs/job/command/cic/executive.dm index d8691e1df4cf..f717a03e1229 100644 --- a/code/game/jobs/job/command/cic/executive.dm +++ b/code/game/jobs/job/command/cic/executive.dm @@ -3,9 +3,9 @@ title = JOB_XO flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADMIN_NOTIFY gear_preset = /datum/equipment_preset/uscm_ship/xo - entry_message_body = "You are second in command aboard the ship, and are in next in the chain of command after the commanding officer. You may need to fill in for other duties if areas are understaffed, and you are given access to do so. Make the USCM proud!" /datum/job/command/executive/generate_entry_message(mob/living/carbon/human/H) + entry_message_body = "You are second in command aboard the [MAIN_SHIP_NAME], and are in next in the chain of command after the Commanding Officer. Where applicable, you must abide by the Commanding Officer Code of Conduct. You may need to fill in for other duties if areas are understaffed, and you are given access to do so. Make the USCM proud!" return ..() /datum/job/command/executive/generate_entry_conditions(mob/living/M, whitelist_status) diff --git a/code/game/jobs/job/command/cic/staffofficer.dm b/code/game/jobs/job/command/cic/staffofficer.dm index 82a537dc83f6..94769de2158f 100644 --- a/code/game/jobs/job/command/cic/staffofficer.dm +++ b/code/game/jobs/job/command/cic/staffofficer.dm @@ -6,7 +6,7 @@ scaled = FALSE flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/so - entry_message_body = "Your job is to monitor the Marines, man the CIC, and listen to your superior officers. You are in charge of logistics and the overwatch system. You are also in line to take command after other eligible superior commissioned officers." + entry_message_body = "Your job is to monitor the Marines, man the CIC, and listen to your superior officers. You are in charge of logistics and the overwatch system. You are also in line to take command after other eligible superior commissioned officers." /datum/job/command/bridge/set_spawn_positions(count) spawn_positions = so_slot_formula(count) diff --git a/code/game/jobs/job/command/command.dm b/code/game/jobs/job/command/command.dm index b95ddfe9d33c..d430352d6e83 100644 --- a/code/game/jobs/job/command/command.dm +++ b/code/game/jobs/job/command/command.dm @@ -26,4 +26,11 @@ /datum/timelock/human/get_role_requirement(client/C) return time_required - C.get_total_human_playtime() + +/datum/timelock/dropship + name = "Dropship Roles" + +/datum/timelock/dropship/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_DROPSHIP_ROLES_LIST diff --git a/code/game/jobs/job/command/police/chief_police.dm b/code/game/jobs/job/command/police/chief_police.dm index 60bc564af3b1..63e6d8023f17 100644 --- a/code/game/jobs/job/command/police/chief_police.dm +++ b/code/game/jobs/job/command/police/chief_police.dm @@ -4,7 +4,7 @@ selection_class = "job_cmp" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_police/cmp - entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. You lead the Military Police, ensure your officers maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the security of high-ranking personnel, including the command staff. Keep them safe!" + entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. You lead the Military Police, ensure your officers maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the security of high-ranking personnel, including the command staff. Keep them safe!" AddTimelock(/datum/job/command/warrant, list( JOB_POLICE_ROLES = 15 HOURS, diff --git a/code/game/jobs/job/command/police/police.dm b/code/game/jobs/job/command/police/police.dm index 48cd9b33e99c..e05bc2e96256 100644 --- a/code/game/jobs/job/command/police/police.dm +++ b/code/game/jobs/job/command/police/police.dm @@ -8,7 +8,7 @@ selection_class = "job_mp" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_police/mp - entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. Your primary job is to maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the security of high-ranking personnel, including the command staff. Keep them safe!" + entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. Your primary job is to maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the security of high-ranking personnel, including the command staff. Keep them safe!" /datum/job/command/police/set_spawn_positions(count) spawn_positions = mp_slot_formula(count) diff --git a/code/game/jobs/job/command/police/warden.dm b/code/game/jobs/job/command/police/warden.dm index 851b43debd3c..d2775e197537 100644 --- a/code/game/jobs/job/command/police/warden.dm +++ b/code/game/jobs/job/command/police/warden.dm @@ -5,7 +5,7 @@ flags_startup_parameters = ROLE_ADD_TO_DEFAULT supervisors = "the Chief MP" gear_preset = /datum/equipment_preset/uscm_ship/uscm_police/warden - entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. Your primary job is to maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the mainting security records and overwatching any prisoners in Brig." + entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. Your primary job is to maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the mainting security records and overwatching any prisoners in Brig." AddTimelock(/datum/job/command/warden, list( JOB_POLICE_ROLES = 10 HOURS diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index b860667486be..1a04c3cafeb5 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -37,17 +37,36 @@ /// When set you will be able to choose between the different job options when selecting your role. /// Associated list. Main list elements - actual options, associated values - shorthands for job preferences menu (keep those short). var/job_options + /// If TRUE, this job will spawn w/ a cryo emergency kit during evac/red alert + var/gets_emergency_kit = TRUE /datum/job/New() . = ..() + RegisterSignal(SSdcs, COMSIG_GLOB_CONFIG_LOADED, PROC_REF(on_config_load)) + minimum_playtimes = setup_requirements(list()) - if(!disp_title) disp_title = title + if(!disp_title) + disp_title = title + + if(global.config.is_loaded) + on_config_load() -/datum/job/proc/get_whitelist_status(list/roles_whitelist, client/player) - if(!roles_whitelist) - return FALSE +/datum/job/proc/on_config_load() + if(entry_message_body) + entry_message_body = replace_placeholders(entry_message_body) +/datum/job/proc/replace_placeholders(replacement_string) + replacement_string = replacetextEx(replacement_string, WIKI_PLACEHOLDER, generate_wiki_link()) + replacement_string = replacetextEx(replacement_string, LAW_PLACEHOLDER, "[CONFIG_GET(string/wikiarticleurl)]/[URL_WIKI_LAW]") + return replacement_string + +/datum/job/proc/generate_wiki_link() + if(!CONFIG_GET(string/wikiarticleurl)) + return "" + return "[CONFIG_GET(string/wikiarticleurl)]/[replacetext(title, " ", "_")]" + +/datum/job/proc/get_whitelist_status(client/player) return WHITELIST_NORMAL /datum/timelock @@ -215,32 +234,10 @@ if(!istype(NP)) return - NP.spawning = TRUE - NP.close_spawn_windows() - var/mob/living/carbon/human/new_character = new(NP.loc) new_character.lastarea = get_area(NP.loc) - NP.client.prefs.copy_all_to(new_character, title) - - if (NP.client.prefs.be_random_body) - var/datum/preferences/TP = new() - TP.randomize_appearance(new_character) - - new_character.job = NP.job - new_character.name = NP.real_name - new_character.voice = NP.real_name - - if(NP.mind) - NP.mind_initialize() - NP.mind.transfer_to(new_character, TRUE) - NP.mind.setup_human_stats() - - // Update the character icons - // This is done in set_species when the mob is created as well, but - INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, regenerate_icons)) - INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, update_body), 1, 0) - INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, update_hair)) + setup_human(new_character, NP) return new_character @@ -252,7 +249,7 @@ var/mob/living/carbon/human/human = M var/job_whitelist = title - var/whitelist_status = get_whitelist_status(RoleAuthority.roles_whitelist, human.client) + var/whitelist_status = get_whitelist_status(human.client) if(whitelist_status) job_whitelist = "[title][whitelist_status]" @@ -271,9 +268,9 @@ generate_entry_conditions(human) //Do any other thing that relates to their spawn. if(flags_startup_parameters & ROLE_ADD_TO_SQUAD) //Are we a muhreen? Randomize our squad. This should go AFTER IDs. //TODO Robust this later. - RoleAuthority.randomize_squad(human) + GLOB.RoleAuthority.randomize_squad(human) - if(Check_WO() && job_squad_roles.Find(GET_DEFAULT_ROLE(human.job))) //activates self setting proc for marine headsets for WO + if(Check_WO() && GLOB.job_squad_roles.Find(GET_DEFAULT_ROLE(human.job))) //activates self setting proc for marine headsets for WO var/datum/game_mode/whiskey_outpost/WO = SSticker.mode WO.self_set_headset(human) @@ -288,6 +285,8 @@ join_turf = get_turf(pick(GLOB.spawns_by_job[type])) else if(assigned_squad && GLOB.latejoin_by_squad[assigned_squad]) join_turf = get_turf(pick(GLOB.latejoin_by_squad[assigned_squad])) + else if(GLOB.latejoin_by_job[title]) + join_turf = get_turf(pick(GLOB.latejoin_by_job[title])) else join_turf = get_turf(pick(GLOB.latejoin)) human.forceMove(join_turf) @@ -312,3 +311,10 @@ /// Intended to be overwritten to handle any requirements for specific job variations that can be selected /datum/job/proc/filter_job_option(mob/job_applicant) return job_options + +/datum/job/proc/check_whitelist_status(mob/user) + if(!(flags_startup_parameters & ROLE_WHITELISTED)) + return TRUE + + if(user.client.check_whitelist_status(flags_whitelist)) + return TRUE diff --git a/code/game/jobs/job/logistics/cargo/cargo_tech.dm b/code/game/jobs/job/logistics/cargo/cargo_tech.dm index 8041e8c82c75..c4725289c3ff 100644 --- a/code/game/jobs/job/logistics/cargo/cargo_tech.dm +++ b/code/game/jobs/job/logistics/cargo/cargo_tech.dm @@ -8,7 +8,7 @@ selection_class = "job_ct" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/cargo - entry_message_body = "Your job is to dispense supplies to the marines, including weapon attachments. Stay in your department when possible to ensure the marines have full access to the supplies they may require. Listen to the radio in case someone requests a supply drop via the overwatch system." + entry_message_body = "Your job is to dispense supplies to the marines, including weapon attachments. Stay in your department when possible to ensure the marines have full access to the supplies they may require. Listen to the radio in case someone requests a supply drop via the overwatch system." /datum/job/logistics/cargo/set_spawn_positions(count) spawn_positions = ct_slot_formula(count) diff --git a/code/game/jobs/job/logistics/cargo/chief_req.dm b/code/game/jobs/job/logistics/cargo/chief_req.dm index ffdb04da3421..5d5123e687ed 100644 --- a/code/game/jobs/job/logistics/cargo/chief_req.dm +++ b/code/game/jobs/job/logistics/cargo/chief_req.dm @@ -1,10 +1,9 @@ -//Requisitions Officer /datum/job/logistics/requisition title = JOB_CHIEF_REQUISITION - selection_class = "job_ro" + selection_class = "job_qm" flags_startup_parameters = ROLE_ADD_TO_DEFAULT - gear_preset = /datum/equipment_preset/uscm_ship/ro - entry_message_body = "Your job is to dispense supplies to the marines, including weapon attachments. Your cargo techs can help you out, but you have final say in your department. Make sure they're not goofing off. While you may request paperwork for supplies, do not go out of your way to screw with marines, unless you want to get deposed. A happy ship is a well-functioning ship." + gear_preset = /datum/equipment_preset/uscm_ship/qm + entry_message_body = "Your job is to dispense supplies to the marines, including weapon attachments. Your cargo techs can help you out, but you have final say in your department. Make sure they're not goofing off. While you may request paperwork for supplies, do not go out of your way to screw with marines, unless you want to get deposed. A happy ship is a well-functioning ship." AddTimelock(/datum/job/logistics/requisition, list( JOB_REQUISITION_ROLES = 10 HOURS, diff --git a/code/game/jobs/job/logistics/engi/chief_engineer.dm b/code/game/jobs/job/logistics/engi/chief_engineer.dm index 9db14540e74a..b6aa23f9c4a6 100644 --- a/code/game/jobs/job/logistics/engi/chief_engineer.dm +++ b/code/game/jobs/job/logistics/engi/chief_engineer.dm @@ -3,7 +3,7 @@ selection_class = "job_ce" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/chief_engineer - entry_message_body = "Your job is to maintain your department and keep your technicians in check. You are responsible for engineering, power, ordnance, and the orbital cannon. Should the commanding and executive officer be unavailable, you are next in the chain of command." + entry_message_body = "Your job is to maintain your department and keep your technicians in check. You are responsible for engineering, power, ordnance, and the orbital cannon. Should the commanding and executive officer be unavailable, you are next in the chain of command." AddTimelock(/datum/job/logistics/engineering, list( JOB_ENGINEER_ROLES = 10 HOURS, diff --git a/code/game/jobs/job/logistics/engi/maint_tech.dm b/code/game/jobs/job/logistics/engi/maint_tech.dm index 7aa380a0bd79..b13062127a12 100644 --- a/code/game/jobs/job/logistics/engi/maint_tech.dm +++ b/code/game/jobs/job/logistics/engi/maint_tech.dm @@ -6,7 +6,7 @@ selection_class = "job_ot" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/maint - entry_message_body = "Your job is to maintain the integrity of the ship, including the orbital cannon. You remain one of the more flexible roles on the ship and as such may receive other menial tasks from your superiors." + entry_message_body = "Your job is to maintain the integrity of the ship, including the orbital cannon. You remain one of the more flexible roles on the ship and as such may receive other menial tasks from your superiors." /obj/effect/landmark/start/maint name = JOB_MAINT_TECH diff --git a/code/game/jobs/job/logistics/engi/ordnance_tech.dm b/code/game/jobs/job/logistics/engi/ordnance_tech.dm index e0df5f49a546..43a8a7122a8f 100644 --- a/code/game/jobs/job/logistics/engi/ordnance_tech.dm +++ b/code/game/jobs/job/logistics/engi/ordnance_tech.dm @@ -9,7 +9,7 @@ selection_class = "job_ot" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/ordn - entry_message_body = "Your job is to maintain the integrity of the USCM weapons, munitions and equipment, including the orbital cannon. You can use the workshop in the portside hangar to construct new armaments for the marines. However you remain one of the more flexible roles on the ship and as such may receive other menial tasks from your superiors." + entry_message_body = "Your job is to maintain the integrity of the USCM weapons, munitions and equipment, including the orbital cannon. You can use the workshop in the portside hangar to construct new armaments for the marines. However you remain one of the more flexible roles on the ship and as such may receive other menial tasks from your superiors." /datum/job/logistics/otech/set_spawn_positions(count) spawn_positions = ot_slot_formula(count) diff --git a/code/game/jobs/job/logistics/logistics.dm b/code/game/jobs/job/logistics/logistics.dm index 6c0a2d0447e1..ef4364354067 100644 --- a/code/game/jobs/job/logistics/logistics.dm +++ b/code/game/jobs/job/logistics/logistics.dm @@ -1,5 +1,5 @@ /datum/job/logistics - supervisors = "the acting commanding officer" + supervisors = "the auxiliary support officer" total_positions = 1 spawn_positions = 1 diff --git a/code/game/jobs/job/marine/marine.dm b/code/game/jobs/job/marine/marine.dm index a64701b8bfc7..e07c1edd3138 100644 --- a/code/game/jobs/job/marine/marine.dm +++ b/code/game/jobs/job/marine/marine.dm @@ -5,15 +5,15 @@ spawn_positions = 8 allow_additional = 1 -/datum/job/marine/generate_entry_message(mob/living/carbon/human/H) - if(H.assigned_squad) - entry_message_intro = "You are a [title]!
You have been assigned to: [lowertext(H.assigned_squad.name)] squad.[Check_WO() ? "" : " Make your way to the cafeteria for some post-cryosleep chow, and then get equipped in your squad's prep room." ]" +/datum/job/marine/generate_entry_message(mob/living/carbon/human/current_human) + if(current_human.assigned_squad) + entry_message_intro = "You are a [title]!
You have been assigned to: [lowertext(current_human.assigned_squad.name)] squad.[Check_WO() ? "" : " Make your way to the cafeteria for some post-cryosleep chow, and then get equipped in your squad's prep room." ]" return ..() -/datum/job/marine/generate_entry_conditions(mob/living/carbon/human/H) +/datum/job/marine/generate_entry_conditions(mob/living/carbon/human/current_human) ..() if(!Check_WO()) - H.nutrition = rand(NUTRITION_VERYLOW, NUTRITION_LOW) //Start hungry for the default marine. + current_human.nutrition = rand(NUTRITION_VERYLOW, NUTRITION_LOW) //Start hungry for the default marine. /datum/timelock/squad name = "Squad Roles" diff --git a/code/game/jobs/job/marine/squad/engineer.dm b/code/game/jobs/job/marine/squad/engineer.dm index 7645d95948f3..a4422572f218 100644 --- a/code/game/jobs/job/marine/squad/engineer.dm +++ b/code/game/jobs/job/marine/squad/engineer.dm @@ -5,10 +5,10 @@ allow_additional = 1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/engineer - entry_message_body = "You have the equipment and skill to build fortifications, reroute power lines, and bunker down. Your squaddies will look to you when it comes to construction in the field of battle." + entry_message_body = "You have the equipment and skill to build fortifications, reroute power lines, and bunker down. Your squaddies will look to you when it comes to construction in the field of battle." /datum/job/marine/engineer/set_spawn_positions(count) - for(var/datum/squad/sq in RoleAuthority.squads) + for(var/datum/squad/sq in GLOB.RoleAuthority.squads) if(sq) sq.max_engineers = engi_slot_formula(count) @@ -21,7 +21,7 @@ total_positions_so_far = slots if(latejoin) - for(var/datum/squad/sq in RoleAuthority.squads) + for(var/datum/squad/sq in GLOB.RoleAuthority.squads) if(sq) sq.max_engineers = slots diff --git a/code/game/jobs/job/marine/squad/leader.dm b/code/game/jobs/job/marine/squad/leader.dm index aa2173d173d0..be78438db3d6 100644 --- a/code/game/jobs/job/marine/squad/leader.dm +++ b/code/game/jobs/job/marine/squad/leader.dm @@ -5,7 +5,7 @@ supervisors = "the acting commanding officer" flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/leader - entry_message_body = "You are responsible for the men and women of your squad. Make sure they are on task, working together, and communicating. You are also in charge of communicating with command and letting them know about the situation first hand. Keep out of harm's way." + entry_message_body = "You are responsible for the men and women of your squad. Make sure they are on task, working together, and communicating. You are also in charge of communicating with command and letting them know about the situation first hand. Keep out of harm's way." /datum/job/marine/leader/whiskey title = JOB_WO_SQUAD_LEADER diff --git a/code/game/jobs/job/marine/squad/medic.dm b/code/game/jobs/job/marine/squad/medic.dm index 637567d47d4d..450d1176658f 100644 --- a/code/game/jobs/job/marine/squad/medic.dm +++ b/code/game/jobs/job/marine/squad/medic.dm @@ -5,10 +5,10 @@ allow_additional = 1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/medic - entry_message_body = "You tend the wounds of your squad mates and make sure they are healthy and active. You may not be a fully-fledged doctor, but you stand between life and death when it matters." + entry_message_body = "You tend the wounds of your squad mates and make sure they are healthy and active. You may not be a fully-fledged doctor, but you stand between life and death when it matters." /datum/job/marine/medic/set_spawn_positions(count) - for(var/datum/squad/sq in RoleAuthority.squads) + for(var/datum/squad/sq in GLOB.RoleAuthority.squads) if(sq) sq.max_medics = medic_slot_formula(count) @@ -21,7 +21,7 @@ total_positions_so_far = slots if(latejoin) - for(var/datum/squad/sq in RoleAuthority.squads) + for(var/datum/squad/sq in GLOB.RoleAuthority.squads) if(sq) sq.max_medics = slots diff --git a/code/game/jobs/job/marine/squad/smartgunner.dm b/code/game/jobs/job/marine/squad/smartgunner.dm index 5753434e62ee..1a89abf5d3be 100644 --- a/code/game/jobs/job/marine/squad/smartgunner.dm +++ b/code/game/jobs/job/marine/squad/smartgunner.dm @@ -6,7 +6,7 @@ scaled = 1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/sg - entry_message_body = "You are the smartgunner. Your task is to provide heavy weapons support." + entry_message_body = "You are the smartgunner. Your task is to provide heavy weapons support." /datum/job/marine/smartgunner/set_spawn_positions(count) spawn_positions = sg_slot_formula(count) diff --git a/code/game/jobs/job/marine/squad/specialist.dm b/code/game/jobs/job/marine/squad/specialist.dm index 539d3a158690..e69241cdc70b 100644 --- a/code/game/jobs/job/marine/squad/specialist.dm +++ b/code/game/jobs/job/marine/squad/specialist.dm @@ -6,7 +6,7 @@ scaled = 1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/spec - entry_message_body = "You are the very rare and valuable weapon expert, trained to use special equipment. You can serve a variety of roles, so choose carefully." + entry_message_body = "You are the very rare and valuable weapon expert, trained to use special equipment. You can serve a variety of roles, so choose carefully." /datum/job/marine/specialist/set_spawn_positions(count) spawn_positions = spec_slot_formula(count) diff --git a/code/game/jobs/job/marine/squad/standard.dm b/code/game/jobs/job/marine/squad/standard.dm index e2502576e5ea..2fcd8a3cdd28 100644 --- a/code/game/jobs/job/marine/squad/standard.dm +++ b/code/game/jobs/job/marine/squad/standard.dm @@ -6,7 +6,10 @@ spawn_positions = -1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/pfc - entry_message_body = "You are a rank-and-file Marine of the USCM, and that is your strength. What you lack alone, you gain standing shoulder to shoulder with the men and women of the corps. Ooh-rah!" + +/datum/job/marine/standard/on_config_load() + entry_message_body = "You are a rank-and-file Marine of the USCM, and that is your strength. What you lack alone, you gain standing shoulder to shoulder with the men and women of the corps. Ooh-rah!" + return ..() /datum/job/marine/standard/set_spawn_positions(count) spawn_positions = max((round(count * STANDARD_MARINE_TO_TOTAL_SPAWN_RATIO)), 8) diff --git a/code/game/jobs/job/marine/squad/tl.dm b/code/game/jobs/job/marine/squad/tl.dm index f6c58cce3e0d..2b0cff3ea3ed 100644 --- a/code/game/jobs/job/marine/squad/tl.dm +++ b/code/game/jobs/job/marine/squad/tl.dm @@ -5,7 +5,7 @@ allow_additional = 1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/tl - entry_message_body = "You are the Team Leader.Your task is to assist the squad leader in leading the squad as well as utilize ordnance such as orbital bombardments, CAS, and mortar as well as coordinating resupply with Requisitions and CIC. If the squad leader dies, you are expected to lead in their place." + entry_message_body = "You are the Team Leader.Your task is to assist the squad leader in leading the squad as well as utilize ordnance such as orbital bombardments, CAS, and mortar as well as coordinating resupply with Requisitions and CIC. If the squad leader dies, you are expected to lead in their place." /datum/job/marine/tl/generate_entry_conditions(mob/living/carbon/human/spawning_human) . = ..() diff --git a/code/game/jobs/job/marine/squad_info.dm b/code/game/jobs/job/marine/squad_info.dm index 1dc4ad7181cd..7e7dfcc0229a 100644 --- a/code/game/jobs/job/marine/squad_info.dm +++ b/code/game/jobs/job/marine/squad_info.dm @@ -17,7 +17,7 @@ update_squad_leader() var/list/data = squad_info_data.Copy() data["squad"] = name - data["squad_color"] = squad_colors[color] + data["squad_color"] = equipment_color data["is_lead"] = get_leadership(user) data["objective"] = list( "primary" = primary_objective, diff --git a/code/game/jobs/job/marine/squads.dm b/code/game/jobs/job/marine/squads.dm index 9f4068e8450f..756369c8eb5b 100644 --- a/code/game/jobs/job/marine/squads.dm +++ b/code/game/jobs/job/marine/squads.dm @@ -25,29 +25,53 @@ sub_leader = "Strike Leader" /datum/squad - var/name //Name of the squad + /// Name of the squad + var/name + /// Squads ID that is set on New() var/tracking_id = null //Used for the tracking subsystem - var/max_positions = -1 //Maximum number allowed in a squad. Defaults to infinite - var/color = 0 //Color for helmets, etc. - var/list/access = list() //Which special access do we grant them - var/omni_squad_vendor = FALSE /// Can use any squad vendor regardless of squad connection - var/max_engineers = 3 //maximum # of engineers allowed in squad - var/max_medics = 4 //Ditto, squad medics + /// Maximum number allowed in a squad. Defaults to infinite + var/max_positions = -1 + /// If uses the overlay + var/use_stripe_overlay = TRUE + /// Color for the squad marines gear overlays + var/equipment_color = COLOR_WHITE + /// The alpha for the armor overlay used by equipment color + var/armor_alpha = 125 + /// Color for the squad marines langchat + var/chat_color = COLOR_WHITE + /// Which special access do we grant them + var/list/access = list() + /// Can use any squad vendor regardless of squad connection + var/omni_squad_vendor = FALSE + /// maximum # of engineers allowed in the squad + var/max_engineers = 3 + /// maximum # of squad medics allowed in the squad + var/max_medics = 4 + /// maximum # of specs allowed in the squad var/max_specialists = 1 + /// maximum # of fireteam leaders allowed in the suqad var/max_tl = 2 + /// maximum # of smartgunners allowed in the squad var/max_smartgun = 1 + /// maximum # of squad leaders allowed in the squad var/max_leaders = 1 - var/radio_freq = 1461 //Squad radio headset frequency. - - ///Variables for showing up in various places - var/usable = FALSE //Is it used in-game? - var/roundstart = TRUE /// Whether this squad can be picked at roundstart - var/locked = FALSE //Is it available for squad management? - var/active = FALSE //Is it visible in overwatch? - var/faction = FACTION_MARINE //What faction runs the squad? - - ///Squad Type Specifics + /// Squad headsets default radio frequency + var/radio_freq = 1461 + + /// Whether this squad can be used by marines + var/usable = FALSE + /// Whether this squad can be picked at roundstart + var/roundstart = TRUE + // Whether the squad is available for squad management + var/locked = FALSE + /// Whether it is visible in overwatch + var/active = FALSE + /// Which faction the squad is in + var/faction = FACTION_MARINE + + /// What will the assistant squad leader be called var/squad_type = "Squad" //Referenced for aSL details. Squad/Team/Cell etc. + /// Squad leaders icon var/lead_icon //Referenced for SL's 'L' icon. If nulled, won't override icon for aSLs. //vvv Do not set these in squad defines @@ -86,6 +110,9 @@ var/minimap_color = MINIMAP_SQUAD_UNKNOWN + ///Should we add the name of our squad in front of their name? Ex: Alpha Hospital Corpsman + var/prepend_squad_name_to_assignment = TRUE + /datum/squad/marine name = "Root" @@ -96,35 +123,40 @@ /datum/squad/marine/alpha name = SQUAD_MARINE_1 - color = 1 + equipment_color = "#e61919" + chat_color = "#e67d7d" access = list(ACCESS_MARINE_ALPHA) radio_freq = ALPHA_FREQ minimap_color = MINIMAP_SQUAD_ALPHA /datum/squad/marine/bravo name = SQUAD_MARINE_2 - color = 2 + equipment_color = "#ffc32d" + chat_color = "#ffe650" access = list(ACCESS_MARINE_BRAVO) radio_freq = BRAVO_FREQ minimap_color = MINIMAP_SQUAD_BRAVO /datum/squad/marine/charlie name = SQUAD_MARINE_3 - color = 3 + equipment_color = "#c864c8" + chat_color = "#ff96ff" access = list(ACCESS_MARINE_CHARLIE) radio_freq = CHARLIE_FREQ minimap_color = MINIMAP_SQUAD_CHARLIE /datum/squad/marine/delta name = SQUAD_MARINE_4 - color = 4 + equipment_color = "#4148c8" + chat_color = "#828cff" access = list(ACCESS_MARINE_DELTA) radio_freq = DELTA_FREQ minimap_color = MINIMAP_SQUAD_DELTA /datum/squad/marine/echo name = SQUAD_MARINE_5 - color = 5 + equipment_color = "#67d692" + chat_color = "#67d692" access = list(ACCESS_MARINE_ALPHA, ACCESS_MARINE_BRAVO, ACCESS_MARINE_CHARLIE, ACCESS_MARINE_DELTA) radio_freq = ECHO_FREQ omni_squad_vendor = TRUE @@ -136,7 +168,8 @@ /datum/squad/marine/cryo name = SQUAD_MARINE_CRYO - color = 6 + equipment_color = "#c47a50" + chat_color = "#c47a50" access = list(ACCESS_MARINE_ALPHA, ACCESS_MARINE_BRAVO, ACCESS_MARINE_CHARLIE, ACCESS_MARINE_DELTA) minimap_color = MINIMAP_SQUAD_FOXTROT @@ -147,9 +180,27 @@ roundstart = FALSE locked = TRUE +/datum/squad/marine/intel + name = SQUAD_MARINE_INTEL + use_stripe_overlay = FALSE + equipment_color = "#053818" + minimap_color = MINIMAP_SQUAD_INTEL + radio_freq = INTEL_FREQ + + roundstart = FALSE + prepend_squad_name_to_assignment = FALSE + + max_engineers = 0 + max_medics = 0 + max_specialists = 0 + max_tl = 0 + max_smartgun = 0 + max_leaders = 0 + /datum/squad/marine/sof name = SQUAD_SOF - color = 7 + equipment_color = "#400000" + chat_color = "#400000" radio_freq = SOF_FREQ squad_type = "Team" lead_icon = "soctl" @@ -159,6 +210,17 @@ roundstart = FALSE locked = TRUE +/datum/squad/marine/cbrn + name = SQUAD_CBRN + equipment_color = "#3B2A7B" //Chemical Corps Purple + chat_color = "#553EB2" + radio_freq = CBRN_FREQ + minimap_color = "#3B2A7B" + + active = FALSE + roundstart = FALSE + locked = TRUE + //############################### UPP Squads /datum/squad/upp name = "Root" @@ -168,23 +230,28 @@ /datum/squad/upp/one name = "UPPS1" - color = 1 + equipment_color = "#e61919" + chat_color = "#e67d7d" /datum/squad/upp/twp name = "UPPS2" - color = 2 + equipment_color = "#ffc32d" + chat_color = "#ffe650" /datum/squad/upp/three name = "UPPS3" - color = 3 + equipment_color = "#c864c8" + chat_color = "#ff96ff" /datum/squad/upp/four name = "UPPS4" - color = 4 + equipment_color = "#4148c8" + chat_color = "#828cff" /datum/squad/upp/kdo name = "UPPKdo" - color = 6 + equipment_color = "#c47a50" + chat_color = "#c47a50" squad_type = "Team" locked = TRUE //############################### @@ -197,11 +264,13 @@ /datum/squad/pmc/one name = "Team Upsilon" - color = 3 + equipment_color = "#c864c8" + chat_color = "#ff96ff" /datum/squad/pmc/two name = "Team Gamma" - color = 6 + equipment_color = "#c47a50" + chat_color = "#c47a50" /datum/squad/pmc/wo name = "Taskforce White" @@ -331,16 +400,17 @@ /// Displays a message to squad members directly on the game map /datum/squad/proc/send_maptext(text = "", title_text = "", only_leader = 0) - var/message_colour = squad_colors_chat[color] + var/message_color = chat_color if(only_leader) if(squad_leader) - var/mob/living/carbon/human/SL = squad_leader - if(!SL.stat && SL.client) - SL.play_screen_text("[title_text]
" + text, /atom/movable/screen/text/screen_text/command_order, message_colour) + if(!squad_leader.stat && squad_leader.client) + playsound_client(squad_leader.client, 'sound/effects/radiostatic.ogg', squad_leader.loc, 25, FALSE) + squad_leader.play_screen_text("[title_text]
" + text, /atom/movable/screen/text/screen_text/command_order, message_color) else - for(var/mob/living/carbon/human/M in marines_list) - if(!M.stat && M.client) //Only living and connected people in our squad - M.play_screen_text("[title_text]
" + text, /atom/movable/screen/text/screen_text/command_order, message_colour) + for(var/mob/living/carbon/human/marine in marines_list) + if(!marine.stat && marine.client) //Only living and connected people in our squad + playsound_client(marine.client, 'sound/effects/radiostatic.ogg', marine.loc, 25, FALSE) + marine.play_screen_text("[title_text]
" + text, /atom/movable/screen/text/screen_text/command_order, message_color) /// Displays a message to the squad members in chat /datum/squad/proc/send_message(text = "", plus_name = 0, only_leader = 0) @@ -459,7 +529,10 @@ marines_list += M M.assigned_squad = src //Add them to the squad C.access += (src.access + extra_access) //Add their squad access to their ID - C.assignment = "[name] [assignment]" + if(prepend_squad_name_to_assignment) + C.assignment = "[name] [assignment]" + else + C.assignment = assignment SEND_SIGNAL(M, COMSIG_SET_SQUAD) @@ -468,7 +541,7 @@ C.name = "[C.registered_name]'s ID Card ([C.assignment])" var/obj/item/device/radio/headset/almayer/marine/headset = locate() in list(M.wear_l_ear, M.wear_r_ear) - if(headset) + if(headset && radio_freq) headset.set_frequency(radio_freq) M.update_inv_head() M.update_inv_wear_suit() @@ -542,7 +615,7 @@ if(JOB_SQUAD_MEDIC) old_lead.comm_title = "HM" if(JOB_SQUAD_TEAM_LEADER) - old_lead.comm_title = "TL" + old_lead.comm_title = "FTL" if(JOB_SQUAD_SMARTGUN) old_lead.comm_title = "SG" if(JOB_SQUAD_LEADER) @@ -576,10 +649,10 @@ //Not a safe proc. Returns null if squads or jobs aren't set up. //Mostly used in the marine squad console in marine_consoles.dm. /proc/get_squad_by_name(text) - if(!RoleAuthority || RoleAuthority.squads.len == 0) + if(!GLOB.RoleAuthority || GLOB.RoleAuthority.squads.len == 0) return null var/datum/squad/S - for(S in RoleAuthority.squads) + for(S in GLOB.RoleAuthority.squads) if(S.name == text) return S return null @@ -687,7 +760,7 @@ //moved the main proc for ft management from human.dm here to make it support both examine and squad info way to edit fts /datum/squad/proc/manage_fireteams(mob/living/carbon/human/target) var/obj/item/card/id/ID = target.get_idcard() - if(!ID || !(ID.rank in ROLES_MARINES)) + if(!ID || !(ID.rank in GLOB.ROLES_MARINES)) return if(ID.rank == JOB_SQUAD_LEADER || squad_leader == target) //if SL/aSL are chosen var/choice = tgui_input_list(squad_leader, "Manage Fireteams and Team leaders.", "Fireteams Management", list("Cancel", "Unassign Fireteam 1 Leader", "Unassign Fireteam 2 Leader", "Unassign Fireteam 3 Leader", "Unassign all Team Leaders")) diff --git a/code/game/jobs/role_authority.dm b/code/game/jobs/role_authority.dm index a241bf259913..58c9ad5b5092 100644 --- a/code/game/jobs/role_authority.dm +++ b/code/game/jobs/role_authority.dm @@ -11,7 +11,7 @@ When a round starts, the roles are assigned based on the round, from another lis by name can be kept for things like job bans, while the round may add or remove roles as needed.If you need to equip a mob for a job, always use roles_by_path as it is an accurate account of every specific role path (with specific equipment). */ -var/global/datum/authority/branch/role/RoleAuthority +GLOBAL_DATUM(RoleAuthority, /datum/authority/branch/role) #define GET_RANDOM_JOB 0 #define BE_MARINE 1 @@ -23,13 +23,12 @@ var/global/datum/authority/branch/role/RoleAuthority #define MED_PRIORITY 2 #define LOW_PRIORITY 3 -#define SHIPSIDE_ROLE_WEIGHT 0.5 - -var/global/players_preassigned = 0 +#define SHIPSIDE_ROLE_WEIGHT 0.25 +GLOBAL_VAR_INIT(players_preassigned, 0) /proc/guest_jobbans(job) - return (job in ROLES_COMMAND) + return (job in GLOB.ROLES_COMMAND) /datum/authority/branch/role var/name = "Role Authority" @@ -37,7 +36,6 @@ var/global/players_preassigned = 0 var/list/roles_by_path //Master list generated when role aithority is created, listing every role by path, including variable roles. Great for manually equipping with. var/list/roles_by_name //Master list generated when role authority is created, listing every default role by name, including those that may not be regularly selected. var/list/roles_for_mode //Derived list of roles only for the game mode, generated when the round starts. - var/list/roles_whitelist //Associated list of lists, by ckey. Checks to see if a person is whitelisted for a specific role. var/list/castes_by_path //Master list generated when role aithority is created, listing every caste by path. var/list/castes_by_name //Master list generated when role authority is created, listing every default caste by name. @@ -117,57 +115,6 @@ var/global/players_preassigned = 0 squads += S squads_by_type[S.type] = S - load_whitelist() - - -/datum/authority/branch/role/proc/load_whitelist(filename = "config/role_whitelist.txt") - var/L[] = file2list(filename) - var/P[] - var/W[] = new //We want a temporary whitelist list, in case we need to reload. - - var/i - var/r - var/ckey - var/role - roles_whitelist = list() - for(i in L) - if(!i) continue - i = trim(i) - if(!length(i)) continue - else if (copytext(i, 1, 2) == "#") continue - - P = splittext(i, "+") - if(!P.len) continue - ckey = ckey(P[1]) //Converting their key to canonical form. ckey() does this by stripping all spaces, underscores and converting to lower case. - - role = NO_FLAGS - r = 1 - while(++r <= P.len) - switch(ckey(P[r])) - if("yautja") role |= WHITELIST_YAUTJA - if("yautjalegacy") role |= WHITELIST_YAUTJA_LEGACY - if("yautjacouncil") role |= WHITELIST_YAUTJA_COUNCIL - if("yautjacouncillegacy") role |= WHITELIST_YAUTJA_COUNCIL_LEGACY - if("yautjaleader") role |= WHITELIST_YAUTJA_LEADER - if("commander") role |= WHITELIST_COMMANDER - if("commandercouncil") role |= WHITELIST_COMMANDER_COUNCIL - if("commandercouncillegacy") role |= WHITELIST_COMMANDER_COUNCIL_LEGACY - if("commanderleader") role |= WHITELIST_COMMANDER_LEADER - if("workingjoe") role |= WHITELIST_JOE - if("synthetic") role |= (WHITELIST_SYNTHETIC|WHITELIST_JOE) - if("syntheticcouncil") role |= WHITELIST_SYNTHETIC_COUNCIL - if("syntheticcouncillegacy") role |= WHITELIST_SYNTHETIC_COUNCIL_LEGACY - if("syntheticleader") role |= WHITELIST_SYNTHETIC_LEADER - if("advisor") role |= WHITELIST_MENTOR - if("allgeneral") role |= WHITELISTS_GENERAL - if("allcouncil") role |= (WHITELISTS_COUNCIL|WHITELISTS_GENERAL) - if("alllegacycouncil") role |= (WHITELISTS_LEGACY_COUNCIL|WHITELISTS_GENERAL) - if("everything", "allleader") role |= WHITELIST_EVERYTHING - - W[ckey] = role - - roles_whitelist = W - //#undef FACTION_TO_JOIN /* @@ -236,7 +183,7 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou // Get balancing weight for the readied players. // Squad marine roles have a weight of 1, and shipside roles have a lower weight of SHIPSIDE_ROLE_WEIGHT. - players_preassigned = assign_roles(temp_roles_for_mode.Copy(), unassigned_players.Copy(), TRUE) + GLOB.players_preassigned = assign_roles(temp_roles_for_mode.Copy(), unassigned_players.Copy(), TRUE) // Even though we pass a copy of temp_roles_for_mode, job counters still change, so we reset them here. for(var/title in temp_roles_for_mode) @@ -247,28 +194,29 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou // Set the xeno starting amount based on marines assigned var/datum/job/antag/xenos/XJ = temp_roles_for_mode[JOB_XENOMORPH] if(istype(XJ)) - XJ.set_spawn_positions(players_preassigned) + XJ.set_spawn_positions(GLOB.players_preassigned) // Limit the number of SQUAD MARINE roles players can roll initially var/datum/job/SMJ = GET_MAPPED_ROLE(JOB_SQUAD_MARINE) if(istype(SMJ)) - SMJ.set_spawn_positions(players_preassigned) + SMJ.set_spawn_positions(GLOB.players_preassigned) // Set survivor starting amount based on marines assigned var/datum/job/SJ = temp_roles_for_mode[JOB_SURVIVOR] if(istype(SJ)) - SJ.set_spawn_positions(players_preassigned) + SJ.set_spawn_positions(GLOB.players_preassigned) var/datum/job/CO_surv_job = temp_roles_for_mode[JOB_CO_SURVIVOR] if(istype(CO_surv_job)) - CO_surv_job.set_spawn_positions(players_preassigned) + CO_surv_job.set_spawn_positions(GLOB.players_preassigned) - if(SSnightmare.get_scenario_value("predator_round")) + if(SSnightmare.get_scenario_value("predator_round") && !Check_WO()) SSticker.mode.flags_round_type |= MODE_PREDATOR // Set predators starting amount based on marines assigned var/datum/job/PJ = temp_roles_for_mode[JOB_PREDATOR] if(istype(PJ)) - PJ.set_spawn_positions(players_preassigned) + PJ.set_spawn_positions(GLOB.players_preassigned) + REDIS_PUBLISH("byond.round", "type" = "predator-round", "map" = SSmapping.configs[GROUND_MAP].map_name) // Assign the roles, this time for real, respecting limits we have established. var/list/roles_left = assign_roles(temp_roles_for_mode, unassigned_players) @@ -312,13 +260,13 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou var/assigned = 0 for(var/priority in HIGH_PRIORITY to LOW_PRIORITY) // Assigning xenos first. - assigned += assign_initial_roles(priority, roles_for_mode & ROLES_XENO, unassigned_players) + assigned += assign_initial_roles(priority, roles_for_mode & GLOB.ROLES_XENO, unassigned_players) // Assigning special roles second. (survivor, predator) - assigned += assign_initial_roles(priority, roles_for_mode & (ROLES_WHITELISTED|ROLES_SPECIAL), unassigned_players) + assigned += assign_initial_roles(priority, roles_for_mode & (GLOB.ROLES_WHITELISTED|GLOB.ROLES_SPECIAL), unassigned_players) // Assigning command third. - assigned += assign_initial_roles(priority, roles_for_mode & ROLES_COMMAND, unassigned_players) + assigned += assign_initial_roles(priority, roles_for_mode & GLOB.ROLES_COMMAND, unassigned_players) // Assigning the rest - var/rest_roles_for_mode = roles_for_mode - (roles_for_mode & ROLES_XENO) - (roles_for_mode & ROLES_COMMAND) - (roles_for_mode & (ROLES_WHITELISTED|ROLES_SPECIAL)) + var/rest_roles_for_mode = roles_for_mode - (roles_for_mode & GLOB.ROLES_XENO) - (roles_for_mode & GLOB.ROLES_COMMAND) - (roles_for_mode & (GLOB.ROLES_WHITELISTED|GLOB.ROLES_SPECIAL)) if(count) assigned += assign_initial_roles(priority, rest_roles_for_mode, unassigned_players) else @@ -367,9 +315,11 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou * survivors and the number of roundstart Squad Rifleman slots. */ /datum/authority/branch/role/proc/calculate_role_weight(datum/job/J) - if(ROLES_MARINES.Find(J.title)) + if(!J) + return 0 + if(GLOB.ROLES_MARINES.Find(J.title)) return 1 - if(ROLES_XENO.Find(J.title)) + if(GLOB.ROLES_XENO.Find(J.title)) return 1 if(J.title == JOB_SURVIVOR) return 1 @@ -413,7 +363,7 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou return FALSE if(!J.can_play_role(M.client)) return FALSE - if(J.flags_startup_parameters & ROLE_WHITELISTED && !(roles_whitelist[M.ckey] & J.flags_whitelist)) + if(!J.check_whitelist_status(M)) return FALSE if(J.total_positions != -1 && J.get_total_positions(latejoin) <= J.current_positions) return FALSE @@ -436,9 +386,9 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou //here is the main reason this proc exists - to remove freed squad jobs from squad, //so latejoining person ends in the squad which's job was freed and not random one var/datum/squad/sq = null - if(job_squad_roles.Find(J.title)) + if(GLOB.job_squad_roles.Find(J.title)) var/list/squad_list = list() - for(sq in RoleAuthority.squads) + for(sq in GLOB.RoleAuthority.squads) if(sq.usable) squad_list += sq sq = null @@ -501,83 +451,86 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou M.job = null -/datum/authority/branch/role/proc/equip_role(mob/living/M, datum/job/J, turf/late_join) - if(!istype(M) || !istype(J)) +/datum/authority/branch/role/proc/equip_role(mob/living/new_mob, datum/job/new_job, turf/late_join) + if(!istype(new_mob) || !istype(new_job)) return . = TRUE - if(!ishuman(M)) + if(!ishuman(new_mob)) return - var/mob/living/carbon/human/H = M + var/mob/living/carbon/human/new_human = new_mob - if(J.job_options && H?.client?.prefs?.pref_special_job_options[J.title]) - J.handle_job_options(H.client.prefs.pref_special_job_options[J.title]) + if(new_job.job_options && new_human?.client?.prefs?.pref_special_job_options[new_job.title]) + new_job.handle_job_options(new_human.client.prefs.pref_special_job_options[new_job.title]) - var/job_whitelist = J.title - var/whitelist_status = J.get_whitelist_status(roles_whitelist, H.client) + var/job_whitelist = new_job.title + var/whitelist_status = new_job.get_whitelist_status(new_human.client) if(whitelist_status) - job_whitelist = "[J.title][whitelist_status]" + job_whitelist = "[new_job.title][whitelist_status]" - H.job = J.title //TODO Why is this a mob variable at all? + new_human.job = new_job.title //TODO Why is this a mob variable at all? - if(J.gear_preset_whitelist[job_whitelist]) - arm_equipment(H, J.gear_preset_whitelist[job_whitelist], FALSE, TRUE) - var/generated_account = J.generate_money_account(H) - J.announce_entry_message(H, generated_account, whitelist_status) //Tell them their spawn info. - J.generate_entry_conditions(H, whitelist_status) //Do any other thing that relates to their spawn. + if(new_job.gear_preset_whitelist[job_whitelist]) + arm_equipment(new_human, new_job.gear_preset_whitelist[job_whitelist], FALSE, TRUE) + var/generated_account = new_job.generate_money_account(new_human) + new_job.announce_entry_message(new_human, generated_account, whitelist_status) //Tell them their spawn info. + new_job.generate_entry_conditions(new_human, whitelist_status) //Do any other thing that relates to their spawn. else - arm_equipment(H, J.gear_preset, FALSE, TRUE) //After we move them, we want to equip anything else they should have. - var/generated_account = J.generate_money_account(H) - J.announce_entry_message(H, generated_account) //Tell them their spawn info. - J.generate_entry_conditions(H) //Do any other thing that relates to their spawn. + arm_equipment(new_human, new_job.gear_preset, FALSE, TRUE) //After we move them, we want to equip anything else they should have. + var/generated_account = new_job.generate_money_account(new_human) + new_job.announce_entry_message(new_human, generated_account) //Tell them their spawn info. + new_job.generate_entry_conditions(new_human) //Do any other thing that relates to their spawn. - if(J.flags_startup_parameters & ROLE_ADD_TO_SQUAD) //Are we a muhreen? Randomize our squad. This should go AFTER IDs. //TODO Robust this later. - randomize_squad(H) + if(new_job.flags_startup_parameters & ROLE_ADD_TO_SQUAD) //Are we a muhreen? Randomize our squad. This should go AFTER IDs. //TODO Robust this later. + randomize_squad(new_human) - if(Check_WO() && job_squad_roles.Find(GET_DEFAULT_ROLE(H.job))) //activates self setting proc for marine headsets for WO + if(Check_WO() && GLOB.job_squad_roles.Find(GET_DEFAULT_ROLE(new_human.job))) //activates self setting proc for marine headsets for WO var/datum/game_mode/whiskey_outpost/WO = SSticker.mode - WO.self_set_headset(H) + WO.self_set_headset(new_human) var/assigned_squad - if(ishuman(H)) - var/mob/living/carbon/human/human = H + if(ishuman(new_human)) + var/mob/living/carbon/human/human = new_human if(human.assigned_squad) assigned_squad = human.assigned_squad.name if(isturf(late_join)) - H.forceMove(late_join) + new_human.forceMove(late_join) else if(late_join) var/turf/late_join_turf if(GLOB.latejoin_by_squad[assigned_squad]) late_join_turf = get_turf(pick(GLOB.latejoin_by_squad[assigned_squad])) + else if(GLOB.latejoin_by_job[new_job.title]) + late_join_turf = get_turf(pick(GLOB.latejoin_by_job[new_job.title])) else late_join_turf = get_turf(pick(GLOB.latejoin)) - H.forceMove(late_join_turf) + new_human.forceMove(late_join_turf) else var/turf/join_turf - if(assigned_squad && GLOB.spawns_by_squad_and_job[assigned_squad] && GLOB.spawns_by_squad_and_job[assigned_squad][J.type]) - join_turf = get_turf(pick(GLOB.spawns_by_squad_and_job[assigned_squad][J.type])) - else if(GLOB.spawns_by_job[J.type]) - join_turf = get_turf(pick(GLOB.spawns_by_job[J.type])) + if(assigned_squad && GLOB.spawns_by_squad_and_job[assigned_squad] && GLOB.spawns_by_squad_and_job[assigned_squad][new_job.type]) + join_turf = get_turf(pick(GLOB.spawns_by_squad_and_job[assigned_squad][new_job.type])) + else if(GLOB.spawns_by_job[new_job.type]) + join_turf = get_turf(pick(GLOB.spawns_by_job[new_job.type])) else if(assigned_squad && GLOB.latejoin_by_squad[assigned_squad]) join_turf = get_turf(pick(GLOB.latejoin_by_squad[assigned_squad])) else join_turf = get_turf(pick(GLOB.latejoin)) - H.forceMove(join_turf) + new_human.forceMove(join_turf) for(var/cardinal in GLOB.cardinals) - var/obj/structure/machinery/cryopod/pod = locate() in get_step(H, cardinal) + var/obj/structure/machinery/cryopod/pod = locate() in get_step(new_human, cardinal) if(pod) - pod.go_in_cryopod(H, silent = TRUE) + pod.go_in_cryopod(new_human, silent = TRUE) break - H.sec_hud_set_ID() - H.hud_set_squad() + new_human.sec_hud_set_ID() + new_human.hud_set_squad() - SSround_recording.recorder.track_player(H) + SEND_SIGNAL(new_human, COMSIG_POST_SPAWN_UPDATE) + SSround_recording.recorder.track_player(new_human) //Find which squad has the least population. If all 4 squads are equal it should just use a random one /datum/authority/branch/role/proc/get_lowest_squad(mob/living/carbon/human/H) @@ -650,6 +603,15 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou if (S.roundstart && S.usable && S.faction == H.faction && S.name != "Root") mixed_squads += S + //Deal with IOs first + if(H.job == JOB_INTEL) + var/datum/squad/intel_squad = get_squad_by_name(SQUAD_MARINE_INTEL) + if(!intel_squad || !istype(intel_squad)) //Something went horribly wrong! + to_chat(H, "Something went wrong with randomize_squad()! Tell a coder!") + return + intel_squad.put_marine_in_squad(H) //Found one, finish up + return + //Deal with non-standards first. //Non-standards are distributed regardless of squad population. //If the number of available positions for the job are more than max_whatever, it will break. @@ -762,6 +724,8 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou M = /mob/living/carbon/xenomorph/larva/predalien if(XENO_CASTE_FACEHUGGER) M = /mob/living/carbon/xenomorph/facehugger + if(XENO_CASTE_LESSER_DRONE) + M = /mob/living/carbon/xenomorph/lesser_drone if(XENO_CASTE_RUNNER) M = /mob/living/carbon/xenomorph/runner if(XENO_CASTE_DRONE) @@ -803,7 +767,7 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou var/found_desired = FALSE var/found_limit = FALSE - for(var/status in whitelist_hierarchy) + for(var/status in GLOB.whitelist_hierarchy) if(status == desired_status) found_desired = TRUE break diff --git a/code/game/jobs/slot_scaling.dm b/code/game/jobs/slot_scaling.dm index 7e6b0140531b..8bd4af908c07 100644 --- a/code/game/jobs/slot_scaling.dm +++ b/code/game/jobs/slot_scaling.dm @@ -10,7 +10,7 @@ /proc/job_slot_formula(marine_count, factor, c, min, max) if(marine_count <= factor) return min - return round(Clamp((marine_count/factor)+c, min, max)) + return round(clamp((marine_count/factor)+c, min, max)) /proc/medic_slot_formula(playercount) return job_slot_formula(playercount,40,1,3,5) @@ -47,3 +47,9 @@ /proc/synth_slot_formula(playercount) return job_slot_formula(playercount,120,1,1,2) + +/proc/working_joe_slot_formula(playercount) + return job_slot_formula(playercount,30,1,3,6) + +/proc/mess_sergeant_slot_formula(playercount) + return job_slot_formula(playercount, 70, 1, 1, 2) diff --git a/code/game/jobs/whitelist.dm b/code/game/jobs/whitelist.dm index 05f530348029..09db84fec2c2 100644 --- a/code/game/jobs/whitelist.dm +++ b/code/game/jobs/whitelist.dm @@ -1,52 +1,216 @@ -#define WHITELISTFILE "data/whitelist.txt" - -GLOBAL_LIST_FILE_LOAD(whitelist, WHITELISTFILE) - -/proc/check_whitelist(mob/M /*, rank*/) - if(!CONFIG_GET(flag/usewhitelist) || !GLOB.whitelist) - return 0 - return ("[M.ckey]" in GLOB.whitelist) - /proc/can_play_special_job(client/client, job) if(client.admin_holder && (client.admin_holder.rights & R_ADMIN)) return TRUE if(job == XENO_CASTE_QUEEN) - var/datum/caste_datum/C = RoleAuthority.castes_by_name[XENO_CASTE_QUEEN] + var/datum/caste_datum/C = GLOB.RoleAuthority.castes_by_name[XENO_CASTE_QUEEN] return C.can_play_caste(client) if(job == JOB_SURVIVOR) - var/datum/job/J = RoleAuthority.roles_by_path[/datum/job/civilian/survivor] + var/datum/job/J = GLOB.RoleAuthority.roles_by_path[/datum/job/civilian/survivor] return J.can_play_role(client) return TRUE -GLOBAL_LIST_FILE_LOAD(alien_whitelist, "config/alienwhitelist.txt") - -//todo: admin aliens -/proc/is_alien_whitelisted(mob/M, species) - if(!CONFIG_GET(flag/usealienwhitelist)) //If there's not config to use the whitelist. - return 1 - if(species == "human" || species == "Human") - return 1 -// if(check_rights(R_ADMIN, 0)) //Admins are not automatically considered to be whitelisted anymore. ~N -// return 1 //This actually screwed up a bunch of procs, but I only noticed it with the wrong spawn point. - if(!CONFIG_GET(flag/usealienwhitelist) || !GLOB.alien_whitelist) - return 0 - if(M && species) - for (var/s in GLOB.alien_whitelist) - if(findtext(lowertext(s),"[lowertext(M.key)] - [species]")) - return 1 - //if(findtext(lowertext(s),"[lowertext(M.key)] - [species] Elder")) //Unnecessary. - // return 1 - if(findtext(lowertext(s),"[lowertext(M.key)] - All")) - return 1 - return 0 - /// returns a list of strings containing the whitelists held by a specific ckey /proc/get_whitelisted_roles(ckey) - if(RoleAuthority.roles_whitelist[ckey] & WHITELIST_PREDATOR) + var/datum/entity/player/player = get_player_from_key(ckey) + if(player.check_whitelist_status(WHITELIST_YAUTJA)) LAZYADD(., "predator") - if(RoleAuthority.roles_whitelist[ckey] & WHITELIST_COMMANDER) + if(player.check_whitelist_status(WHITELIST_COMMANDER)) LAZYADD(., "commander") - if(RoleAuthority.roles_whitelist[ckey] & WHITELIST_SYNTHETIC) + if(player.check_whitelist_status(WHITELIST_SYNTHETIC)) LAZYADD(., "synthetic") -#undef WHITELISTFILE +/client/load_player_data_info(datum/entity/player/player) + . = ..() + + if(isSenator(src)) + add_verb(src, /client/proc/whitelist_panel) + +/client + var/datum/whitelist_panel/wl_panel + +/client/proc/whitelist_panel() + set name = "Whitelist Panel" + set category = "Admin.Panels" + + if(wl_panel) + qdel(wl_panel) + wl_panel = new + wl_panel.tgui_interact(mob) + +#define WL_PANEL_RIGHT_CO (1<<0) +#define WL_PANEL_RIGHT_SYNTH (1<<1) +#define WL_PANEL_RIGHT_YAUTJA (1<<2) +#define WL_PANEL_RIGHT_MENTOR (1<<3) +#define WL_PANEL_RIGHT_OVERSEER (1<<4) +#define WL_PANEL_ALL_COUNCILS (WL_PANEL_RIGHT_CO|WL_PANEL_RIGHT_SYNTH|WL_PANEL_RIGHT_YAUTJA) +#define WL_PANEL_ALL_RIGHTS (WL_PANEL_RIGHT_CO|WL_PANEL_RIGHT_SYNTH|WL_PANEL_RIGHT_YAUTJA|WL_PANEL_RIGHT_MENTOR|WL_PANEL_RIGHT_OVERSEER) + +/datum/whitelist_panel + var/viewed_player = list() + var/current_menu = "Panel" + var/user_rights = 0 + var/target_rights = 0 + var/new_rights = 0 + +/datum/whitelist_panel/proc/get_user_rights(mob/user) + if(!user.client) + return + var/client/person = user.client + if(CLIENT_HAS_RIGHTS(person, R_PERMISSIONS)) + return WL_PANEL_ALL_RIGHTS + var/rights + if(person.check_whitelist_status(WHITELIST_COMMANDER_LEADER)) + rights |= WL_PANEL_RIGHT_CO + if(person.check_whitelist_status(WHITELIST_SYNTHETIC_LEADER)) + rights |= WL_PANEL_RIGHT_SYNTH + if(person.check_whitelist_status(WHITELIST_YAUTJA_LEADER)) + rights |= WL_PANEL_RIGHT_YAUTJA + if(rights == WL_PANEL_ALL_COUNCILS) + return WL_PANEL_ALL_RIGHTS + return rights + +/datum/whitelist_panel/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "WhitelistPanel", "Whitelist Panel") + ui.open() + +/datum/whitelist_panel/ui_state(mob/user) + return GLOB.always_state + +/datum/whitelist_panel/ui_close(mob/user) + . = ..() + if(user?.client.wl_panel) + qdel(user.client.wl_panel) + +/datum/whitelist_panel/vv_edit_var(var_name, var_value) + return FALSE + +/datum/whitelist_panel/ui_data(mob/user) + var/list/data = list() + + data["current_menu"] = current_menu + data["user_rights"] = user_rights + data["viewed_player"] = viewed_player + data["target_rights"] = target_rights + data["new_rights"] = new_rights + + return data + +GLOBAL_LIST_INIT(co_flags, list( + list(name = "Commander", bitflag = WHITELIST_COMMANDER, permission = WL_PANEL_RIGHT_CO), + list(name = "Council", bitflag = WHITELIST_COMMANDER_COUNCIL, permission = WL_PANEL_RIGHT_CO), + list(name = "Legacy Council", bitflag = WHITELIST_COMMANDER_COUNCIL_LEGACY, permission = WL_PANEL_RIGHT_CO), + list(name = "Senator", bitflag = WHITELIST_COMMANDER_LEADER, permission = WL_PANEL_RIGHT_OVERSEER), + list(name = "Colonel", bitflag = WHITELIST_COMMANDER_COLONEL, permission = WL_PANEL_RIGHT_OVERSEER) +)) +GLOBAL_LIST_INIT(syn_flags, list( + list(name = "Synthetic", bitflag = WHITELIST_SYNTHETIC, permission = WL_PANEL_RIGHT_SYNTH), + list(name = "Council", bitflag = WHITELIST_SYNTHETIC_COUNCIL, permission = WL_PANEL_RIGHT_SYNTH), + list(name = "Legacy Council", bitflag = WHITELIST_SYNTHETIC_COUNCIL_LEGACY, permission = WL_PANEL_RIGHT_SYNTH), + list(name = "Senator", bitflag = WHITELIST_SYNTHETIC_LEADER, permission = WL_PANEL_RIGHT_OVERSEER) +)) +GLOBAL_LIST_INIT(yaut_flags, list( + list(name = "Yautja", bitflag = WHITELIST_YAUTJA, permission = WL_PANEL_RIGHT_YAUTJA), + list(name = "Legacy Holder", bitflag = WHITELIST_YAUTJA_LEGACY, permission = WL_PANEL_RIGHT_OVERSEER), + list(name = "Council", bitflag = WHITELIST_YAUTJA_COUNCIL, permission = WL_PANEL_RIGHT_YAUTJA), + list(name = "Legacy Council", bitflag = WHITELIST_YAUTJA_COUNCIL_LEGACY, permission = WL_PANEL_RIGHT_YAUTJA), + list(name = "Senator", bitflag = WHITELIST_YAUTJA_LEADER, permission = WL_PANEL_RIGHT_OVERSEER) +)) +GLOBAL_LIST_INIT(misc_flags, list( + list(name = "Senior Enlisted Advisor", bitflag = WHITELIST_MENTOR, permission = WL_PANEL_RIGHT_MENTOR), + list(name = "Working Joe", bitflag = WHITELIST_JOE, permission = WL_PANEL_RIGHT_SYNTH), +)) + +/datum/whitelist_panel/ui_static_data(mob/user) + . = list() + .["co_flags"] = GLOB.co_flags + .["syn_flags"] = GLOB.syn_flags + .["yaut_flags"] = GLOB.yaut_flags + .["misc_flags"] = GLOB.misc_flags + + var/list/datum/view_record/players/players_view = DB_VIEW(/datum/view_record/players, DB_COMP("whitelist_status", DB_NOTEQUAL, "")) + + var/list/whitelisted_players = list() + for(var/datum/view_record/players/whitelistee in players_view) + var/list/current_player = list() + current_player["ckey"] = whitelistee.ckey + var/list/unreadable_list = splittext(whitelistee.whitelist_status, "|") + var/readable_list = unreadable_list.Join(" | ") + current_player["status"] = readable_list + whitelisted_players += list(current_player) + .["whitelisted_players"] = whitelisted_players + +/datum/whitelist_panel/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + var/mob/user = ui.user + switch(action) + if("go_back") + go_back() + if("select_player") + select_player(user, params["player"]) + return + if("add_player") + select_player(user, TRUE) + return + if("update_number") + new_rights = text2num(params["wl_flag"]) + return + if("update_perms") + var/player_key = params["player"] + var/reason = tgui_input_text(user, "What is the reason for this change?", "Update Reason") + if(!reason) + return + var/datum/entity/player/player = get_player_from_key(player_key) + player.set_whitelist_status(new_rights) + to_chat(user, SPAN_HELPFUL("Whitelists for [player_key] updated.")) + message_admins("Whitelists for [player_key] updated by [key_name(user)]. Reason: '[reason]'.") + log_admin("WHITELISTS: Flags for [player_key] changed from [target_rights] to [new_rights]. Reason: '[reason]'.") + go_back() + update_static_data(user, ui) + return + if("refresh_data") + update_static_data(user, ui) + to_chat(user, SPAN_NOTICE("Whitelist data refreshed.")) + +/datum/whitelist_panel/proc/select_player(mob/user, player_key) + var/target_key = player_key + if(IsAdminAdvancedProcCall()) + return PROC_BLOCKED + if(!target_key) + return FALSE + + if(target_key == TRUE) + var/new_player = tgui_input_text(user, "Enter the new ckey you wish to add. Do not include spaces or special characters.", "New Whitelistee") + if(!new_player) + return FALSE + target_key = new_player + + var/datum/entity/player/player = get_player_from_key(target_key) + var/list/current_player = list() + current_player["ckey"] = target_key + current_player["status"] = player.whitelist_status + + target_rights = player.whitelist_flags + new_rights = player.whitelist_flags + viewed_player = current_player + current_menu = "Update" + user_rights = get_user_rights(user) + return + +/datum/whitelist_panel/proc/go_back() + viewed_player = list() + user_rights = 0 + current_menu = "Panel" + target_rights = 0 + new_rights = 0 + + +#undef WL_PANEL_RIGHT_CO +#undef WL_PANEL_RIGHT_SYNTH +#undef WL_PANEL_RIGHT_YAUTJA +#undef WL_PANEL_RIGHT_MENTOR +#undef WL_PANEL_RIGHT_OVERSEER +#undef WL_PANEL_ALL_RIGHTS diff --git a/code/game/machinery/ARES/ARES.dm b/code/game/machinery/ARES/ARES.dm new file mode 100644 index 000000000000..1ecbb4a5d7d6 --- /dev/null +++ b/code/game/machinery/ARES/ARES.dm @@ -0,0 +1,117 @@ +/obj/structure/machinery/ares + name = "ARES Machinery" + density = TRUE + anchored = TRUE + use_power = USE_POWER_IDLE + idle_power_usage = 600 + icon = 'icons/obj/structures/machinery/ares.dmi' + unslashable = TRUE + unacidable = TRUE + + var/datum/ares_link/link + +/obj/structure/machinery/ares/ex_act(severity) + return + +/obj/structure/machinery/ares/Initialize(mapload, ...) + link_systems(override = FALSE) + . = ..() + +/obj/structure/machinery/ares/Destroy() + delink() + return ..() + +/obj/structure/machinery/ares/update_icon() + ..() + icon_state = initial(icon_state) + // Broken + if(stat & BROKEN) + icon_state += "_broken" + + // Powered + else if(stat & NOPOWER) + icon_state = initial(icon_state) + icon_state += "_off" + +/// Handles linking and de-linking the ARES systems. +/obj/structure/machinery/ares/proc/link_systems(datum/ares_link/new_link = GLOB.ares_link, override) + if(!new_link) + log_debug("Error: link_systems called without a link datum") + if(link && !override) + return FALSE + if(new_link) + link = new_link + new_link.linked_systems += src + return TRUE + +/obj/structure/machinery/ares/proc/delink() + link.linked_systems -= src + link = null + +/obj/structure/machinery/ares/processor + name = "ARES Processor" + desc = "An external processor for ARES, used to process vast amounts of information." + icon_state = "processor" + +/obj/structure/machinery/ares/processor/apollo + name = "ARES Processor (APOLLO)" + desc = "The external component of ARES' APOLLO processor. Primarily responsible for coordinating Working Joes and Maintenance Drones. It definitely wasn't stolen from Seegson." + icon_state = "apollo_processor" + +/obj/structure/machinery/ares/processor/apollo/link_systems(datum/ares_link/new_link = GLOB.ares_link, override) + ..() + new_link.processor_apollo = src + +/obj/structure/machinery/ares/processor/apollo/delink() + if(link && link.processor_apollo == src) + link.processor_apollo = null + ..() + +/obj/structure/machinery/ares/processor/interface + name = "ARES Processor (Interface)" + desc = "An external processor for ARES; this one handles core processes for interfacing with the crew, including radio transmissions and broadcasts." + icon_state = "int_processor" + +/obj/structure/machinery/ares/processor/interface/link_systems(datum/ares_link/new_link = GLOB.ares_link, override) + ..() + new_link.processor_interface = src + +/obj/structure/machinery/ares/processor/interface/delink() + if(link && link.processor_interface == src) + link.processor_interface = null + ..() + +/obj/structure/machinery/ares/processor/bioscan + name = "ARES Processor (Bioscan)" + desc = "The external component of ARES' Bioscan systems. Without this, the USS Almayer would be incapable of running bioscans!" + icon_state = "bio_processor" + +/obj/structure/machinery/ares/processor/bioscan/link_systems(datum/ares_link/new_link = GLOB.ares_link, override) + ..() + new_link.processor_bioscan = src + +/obj/structure/machinery/ares/processor/bioscan/delink() + if(link && link.processor_bioscan == src) + link.processor_bioscan = null + ..() + +/// Central Core +/obj/structure/machinery/ares/cpu + name = "ARES CPU" + desc = "This is ARES' central processor. Made of a casing designed to withstand nuclear blasts, the CPU also contains ARES' blackbox recorder." + icon_state = "CPU" + +/obj/structure/machinery/ares/cpu/link_systems(datum/ares_link/new_link = GLOB.ares_link, override) + ..() + new_link.central_processor = src + +/obj/structure/machinery/ares/cpu/delink() + if(link && link.central_processor == src) + link.central_processor = null + ..() + +/// Memory Substrate, +/obj/structure/machinery/ares/substrate + name = "ARES Substrate" + desc = "The memory substrate of ARES, containing complex protocols and information. Limited capabilities can operate on substrate alone, without the main ARES Unit operational." + icon_state = "substrate" diff --git a/code/game/machinery/ARES/ARES_interface.dm b/code/game/machinery/ARES/ARES_interface.dm new file mode 100644 index 000000000000..aa1cd92547ec --- /dev/null +++ b/code/game/machinery/ARES/ARES_interface.dm @@ -0,0 +1,471 @@ +// #################### ARES Interface Console ##################### +/obj/structure/machinery/computer/ares_console + name = "ARES Interface" + desc = "A console built to interface with ARES, allowing for 1:1 communication." + icon = 'icons/obj/structures/machinery/ares.dmi' + icon_state = "console" + exproof = TRUE + + var/current_menu = "login" + var/last_menu = "" + + var/authentication = ARES_ACCESS_BASIC + + /// The last person to login. + var/last_login + /// The person pretending to be last_login + var/sudo_holder + + /// The current deleted chat log of 1:1 conversations being read. + var/list/deleted_1to1 = list() + + /// The ID used to link all devices. + var/datum/ares_link/link + /// The datacore storing all the information. + var/datum/ares_datacore/datacore + +/obj/structure/machinery/computer/ares_console/proc/link_systems(datum/ares_link/new_link = GLOB.ares_link, override) + if(link && !override) + return FALSE + if(new_link) + new_link.interface = src + link = new_link + new_link.linked_systems += src + if(!datacore) + datacore = GLOB.ares_datacore + return TRUE + +/obj/structure/machinery/computer/ares_console/Initialize(mapload, ...) + link_systems(override = FALSE) + . = ..() + +/obj/structure/machinery/computer/ares_console/proc/delink() + if(link) + if(link.interface == src) + link.interface = null + link.linked_systems -= src + link = null + datacore = null + +/obj/structure/machinery/computer/ares_console/Destroy() + delink() + return ..() + +// ------ ARES Interface UI ------ // + +/obj/structure/machinery/computer/ares_console/attack_hand(mob/user as mob) + if(..() || !allowed(usr) || inoperable()) + return FALSE + + tgui_interact(user) + return TRUE + +/obj/structure/machinery/computer/ares_console/tgui_interact(mob/user, datum/tgui/ui, datum/ui_state/state) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "AresInterface", name) + ui.open() + +/obj/structure/machinery/computer/ares_console/ui_data(mob/user) + var/list/data = list() + + data["current_menu"] = current_menu + data["last_page"] = last_menu + + data["logged_in"] = last_login + data["sudo"] = sudo_holder ? TRUE : FALSE + + data["access_text"] = "[sudo_holder ? "(SUDO)," : ""] access level [authentication], [ares_auth_to_text(authentication)]." + data["access_level"] = authentication + + data["alert_level"] = GLOB.security_level + data["evac_status"] = SShijack.evac_status + data["worldtime"] = world.time + + data["access_log"] = datacore.interface_access_list + data["apollo_log"] = datacore.apollo_log + + data["deleted_conversation"] = deleted_1to1 + + data["distresstime"] = datacore.ares_distress_cooldown + data["distresstimelock"] = DISTRESS_TIME_LOCK + data["quarterstime"] = datacore.ares_quarters_cooldown + data["mission_failed"] = SSticker.mode.is_in_endgame + data["nuketimelock"] = NUCLEAR_TIME_LOCK + data["nuke_available"] = datacore.nuke_available + + var/list/logged_announcements = list() + for(var/datum/ares_record/announcement/broadcast as anything in datacore.records_announcement) + var/list/current_broadcast = list() + current_broadcast["time"] = broadcast.time + current_broadcast["title"] = broadcast.title + current_broadcast["details"] = broadcast.details + current_broadcast["ref"] = "\ref[broadcast]" + logged_announcements += list(current_broadcast) + data["records_announcement"] = logged_announcements + + var/list/logged_alerts = list() + for(var/datum/ares_record/security/security_alert as anything in datacore.records_security) + var/list/current_alert = list() + current_alert["time"] = security_alert.time + current_alert["title"] = security_alert.title + current_alert["details"] = security_alert.details + current_alert["ref"] = "\ref[security_alert]" + logged_alerts += list(current_alert) + data["records_security"] = logged_alerts + + var/list/logged_flights = list() + for(var/datum/ares_record/flight/flight_log as anything in datacore.records_flight) + var/list/current_flight = list() + current_flight["time"] = flight_log.time + current_flight["title"] = flight_log.title + current_flight["details"] = flight_log.details + current_flight["user"] = flight_log.user + current_flight["ref"] = "\ref[flight_log]" + logged_flights += list(current_flight) + data["records_flight"] = logged_flights + + var/list/logged_bioscans = list() + for(var/datum/ares_record/bioscan/scan as anything in datacore.records_bioscan) + var/list/current_scan = list() + current_scan["time"] = scan.time + current_scan["title"] = scan.title + current_scan["details"] = scan.details + current_scan["ref"] = "\ref[scan]" + logged_bioscans += list(current_scan) + data["records_bioscan"] = logged_bioscans + + var/list/logged_bombs = list() + for(var/datum/ares_record/bombardment/bomb as anything in datacore.records_bombardment) + var/list/current_bomb = list() + current_bomb["time"] = bomb.time + current_bomb["title"] = bomb.title + current_bomb["details"] = bomb.details + current_bomb["user"] = bomb.user + current_bomb["ref"] = "\ref[bomb]" + logged_bombs += list(current_bomb) + data["records_bombardment"] = logged_bombs + + var/list/logged_deletes = list() + for(var/datum/ares_record/deletion/deleted as anything in datacore.records_deletion) + if(!istype(deleted)) + continue + var/list/current_delete = list() + current_delete["time"] = deleted.time + current_delete["title"] = deleted.title + current_delete["details"] = deleted.details + current_delete["user"] = deleted.user + current_delete["ref"] = "\ref[deleted]" + logged_deletes += list(current_delete) + data["records_deletion"] = logged_deletes + + var/list/logged_discussions = list() + for(var/datum/ares_record/deleted_talk/deleted_convo as anything in datacore.records_deletion) + if(!istype(deleted_convo)) + continue + var/list/deleted_disc = list() + deleted_disc["time"] = deleted_convo.time + deleted_disc["title"] = deleted_convo.title + deleted_disc["ref"] = "\ref[deleted_convo]" + logged_discussions += list(deleted_disc) + data["deleted_discussions"] = logged_discussions + + var/list/logged_orders = list() + for(var/datum/ares_record/requisition_log/req_order as anything in datacore.records_asrs) + if(!istype(req_order)) + continue + var/list/current_order = list() + current_order["time"] = req_order.time + current_order["details"] = req_order.details + current_order["title"] = req_order.title + current_order["user"] = req_order.user + current_order["ref"] = "\ref[req_order]" + logged_orders += list(current_order) + data["records_requisition"] = logged_orders + + var/list/logged_convos = list() + var/list/active_convo = list() + var/active_ref + for(var/datum/ares_record/talk_log/log as anything in datacore.records_talking) + if(!istype(log)) + continue + if(log.user == last_login) + active_convo = log.conversation + active_ref = "\ref[log]" + + var/list/current_convo = list() + current_convo["user"] = log.user + current_convo["ref"] = "\ref[log]" + current_convo["conversation"] = log.conversation + logged_convos += list(current_convo) + + data["active_convo"] = active_convo + data["active_ref"] = active_ref + data["conversations"] = logged_convos + + return data + +/obj/structure/machinery/computer/ares_console/ui_status(mob/user, datum/ui_state/state) + . = ..() + if(!allowed(user)) + return UI_UPDATE + if(inoperable()) + return UI_DISABLED + +/obj/structure/machinery/computer/ares_console/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + + playsound(src, "keyboard_alt", 15, 1) + + switch (action) + if("go_back") + if(!last_menu) + return to_chat(usr, SPAN_WARNING("Error, no previous page detected.")) + var/temp_holder = current_menu + current_menu = last_menu + last_menu = temp_holder + + if("login") + var/mob/living/carbon/human/operator = usr + var/obj/item/card/id/idcard = operator.get_active_hand() + if(istype(idcard)) + authentication = get_ares_access(idcard) + last_login = idcard.registered_name + else if(operator.wear_id) + idcard = operator.wear_id + if(istype(idcard)) + authentication = get_ares_access(idcard) + last_login = idcard.registered_name + else + to_chat(usr, SPAN_WARNING("You require an ID card to access this terminal!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(authentication) + datacore.interface_access_list += "[last_login] at [worldtime2text()], Access Level [authentication] - [ares_auth_to_text(authentication)]." + current_menu = "main" + + if("sudo") + var/new_user = tgui_input_text(usr, "Enter Sudo Username", "Sudo User", encode = FALSE) + if(new_user) + if(new_user == sudo_holder) + last_login = sudo_holder + sudo_holder = null + return FALSE + if(new_user == last_login) + to_chat(usr, SPAN_WARNING("Already remote logged in as this user.")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + sudo_holder = last_login + last_login = new_user + datacore.interface_access_list += "[last_login] at [worldtime2text()], Sudo Access." + return TRUE + if("sudo_logout") + datacore.interface_access_list += "[last_login] at [worldtime2text()], Sudo Logout." + last_login = sudo_holder + sudo_holder = null + return + // -- Page Changers -- // + if("logout") + last_menu = current_menu + current_menu = "login" + if(sudo_holder) + datacore.interface_access_list += "[last_login] at [worldtime2text()], Sudo Logout." + last_login = sudo_holder + sudo_holder = null + datacore.interface_access_list += "[last_login] logged out at [worldtime2text()]." + + if("home") + last_menu = current_menu + current_menu = "main" + if("page_1to1") + last_menu = current_menu + current_menu = "talking" + if("page_announcements") + last_menu = current_menu + current_menu = "announcements" + if("page_bioscans") + last_menu = current_menu + current_menu = "bioscans" + if("page_bombardments") + last_menu = current_menu + current_menu = "bombardments" + if("page_apollo") + last_menu = current_menu + current_menu = "apollo" + if("page_access") + last_menu = current_menu + current_menu = "access_log" + if("page_security") + last_menu = current_menu + current_menu = "security" + if("page_flight") + last_menu = current_menu + current_menu = "flight_log" + if("page_requisitions") + last_menu = current_menu + current_menu = "requisitions" + if("page_emergency") + last_menu = current_menu + current_menu = "emergency" + if("page_deleted") + last_menu = current_menu + current_menu = "delete_log" + if("page_deleted_1to1") + last_menu = current_menu + current_menu = "deleted_talks" + + // -- Delete Button -- // + if("delete_record") + var/datum/ares_record/record = locate(params["record"]) + if(record.record_name == ARES_RECORD_DELETED) + return FALSE + var/datum/ares_record/deletion/new_delete = new + var/new_details = "Error" + var/new_title = "Error" + switch(record.record_name) + if(ARES_RECORD_ANNOUNCE) + new_title = "[record.title] at [record.time]" + new_details = record.details + datacore.records_announcement -= record + if(ARES_RECORD_SECURITY, ARES_RECORD_ANTIAIR) + new_title = "[record.title] at [record.time]" + new_details = record.details + datacore.records_security -= record + if(ARES_RECORD_BIOSCAN) + new_title = "[record.title] at [record.time]" + new_details = record.details + datacore.records_bioscan -= record + if(ARES_RECORD_BOMB) + new_title = "[record.title] at [record.time]" + new_details = "[record.details] Launched by [record.user]." + datacore.records_bombardment -= record + + new_delete.details = new_details + new_delete.user = last_login + new_delete.title = new_title + + datacore.records_deletion += new_delete + + // -- 1:1 Conversation -- // + if("new_conversation") + var/datum/ares_record/talk_log/convo = new(last_login) + convo.conversation += "[MAIN_AI_SYSTEM] at [worldtime2text()], 'New 1:1 link initiated. Greetings, [last_login].'" + datacore.records_talking += convo + + if("clear_conversation") + var/datum/ares_record/talk_log/conversation = locate(params["active_convo"]) + if(!istype(conversation)) + return FALSE + var/datum/ares_record/deleted_talk/deleted = new + deleted.title = conversation.title + deleted.conversation = conversation.conversation + deleted.user = conversation.user + datacore.records_deletion += deleted + datacore.records_talking -= conversation + + if("message_ares") + var/message = tgui_input_text(usr, "What do you wish to say to ARES?", "ARES Message", encode = FALSE) + if(message) + message_ares(message, usr, params["active_convo"]) + + if("read_record") + var/datum/ares_record/deleted_talk/conversation = locate(params["record"]) + deleted_1to1 = conversation.conversation + last_menu = current_menu + current_menu = "read_deleted" + + // -- Emergency Buttons -- // + if("general_quarters") + if(!COOLDOWN_FINISHED(datacore, ares_quarters_cooldown)) + to_chat(usr, SPAN_WARNING("It has not been long enough since the last General Quarters call!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(GLOB.security_level < SEC_LEVEL_RED) + set_security_level(SEC_LEVEL_RED, no_sound = TRUE, announce = FALSE) + shipwide_ai_announcement("ATTENTION! GENERAL QUARTERS. ALL HANDS, MAN YOUR BATTLESTATIONS.", MAIN_AI_SYSTEM, 'sound/effects/GQfullcall.ogg') + log_game("[key_name(usr)] has called for general quarters via ARES.") + message_admins("[key_name_admin(usr)] has called for general quarters via ARES.") + log_ares_security("General Quarters", "[last_login] has called for general quarters via ARES.") + COOLDOWN_START(datacore, ares_quarters_cooldown, 10 MINUTES) + . = TRUE + + if("evacuation_start") + if(GLOB.security_level < SEC_LEVEL_RED) + to_chat(usr, SPAN_WARNING("The ship must be under red alert in order to enact evacuation procedures.")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + + if(SShijack.evac_admin_denied) + to_chat(usr, SPAN_WARNING("The USCM has placed a lock on deploying the evacuation pods.")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + + if(!SShijack.initiate_evacuation()) + to_chat(usr, SPAN_WARNING("You are unable to initiate an evacuation procedure right now!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + + log_game("[key_name(usr)] has called for an emergency evacuation via ARES.") + message_admins("[key_name_admin(usr)] has called for an emergency evacuation via ARES.") + log_ares_security("Initiate Evacuation", "[last_login] has called for an emergency evacuation via ARES.") + . = TRUE + + if("distress") + if(!SSticker.mode) + return FALSE //Not a game mode? + if(world.time < DISTRESS_TIME_LOCK) + to_chat(usr, SPAN_WARNING("You have been here for less than six minutes... what could you possibly have done!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(!COOLDOWN_FINISHED(datacore, ares_distress_cooldown)) + to_chat(usr, SPAN_WARNING("The distress launcher is cooling down!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(GLOB.security_level == SEC_LEVEL_DELTA) + to_chat(usr, SPAN_WARNING("The ship is already undergoing self destruct procedures!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(GLOB.security_level < SEC_LEVEL_RED) + to_chat(usr, SPAN_WARNING("The ship must be under red alert to launch a distress beacon!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + + for(var/client/admin in GLOB.admins) + if((R_ADMIN|R_MOD) & admin.admin_holder.rights) + playsound_client(admin,'sound/effects/sos-morse-code.ogg',10) + SSticker.mode.request_ert(usr, TRUE) + to_chat(usr, SPAN_NOTICE("A distress beacon request has been sent to USCM High Command.")) + COOLDOWN_START(datacore, ares_distress_cooldown, COOLDOWN_COMM_REQUEST) + return TRUE + + if("nuclearbomb") + if(!SSticker.mode) + return FALSE //Not a game mode? + if(world.time < NUCLEAR_TIME_LOCK) + to_chat(usr, SPAN_WARNING("It is too soon to request Nuclear Ordnance!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(!COOLDOWN_FINISHED(datacore, ares_nuclear_cooldown)) + to_chat(usr, SPAN_WARNING("The ordnance request frequency is garbled, wait for reset!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(GLOB.security_level == SEC_LEVEL_DELTA || SSticker.mode.is_in_endgame) + to_chat(usr, SPAN_WARNING("The mission has failed catastrophically, what do you want a nuke for?!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + var/reason = tgui_input_text(usr, "Please enter reason nuclear ordnance is required.", "Reason for Nuclear Ordnance") + if(!reason) + return FALSE + for(var/client/admin in GLOB.admins) + if((R_ADMIN|R_MOD) & admin.admin_holder.rights) + playsound_client(admin,'sound/effects/sos-morse-code.ogg',10) + message_admins("[key_name(usr)] has requested use of Nuclear Ordnance (via ARES)! Reason: [reason] [CC_MARK(usr)] (APPROVE) (DENY) [ADMIN_JMP_USER(usr)] [CC_REPLY(usr)]") + to_chat(usr, SPAN_NOTICE("A nuclear ordnance request has been sent to USCM High Command for the following reason: [reason]")) + log_ares_security("Nuclear Ordnance Request", "[last_login] has sent a request for nuclear ordnance for the following reason: [reason]") + if(ares_can_interface()) + ai_silent_announcement("[last_login] has sent a request for nuclear ordnance to USCM High Command.", ".V") + ai_silent_announcement("Reason given: [reason].", ".V") + COOLDOWN_START(datacore, ares_nuclear_cooldown, COOLDOWN_COMM_DESTRUCT) + return TRUE diff --git a/code/game/machinery/ARES/ARES_interface_apollo.dm b/code/game/machinery/ARES/ARES_interface_apollo.dm new file mode 100644 index 000000000000..56283417ae05 --- /dev/null +++ b/code/game/machinery/ARES/ARES_interface_apollo.dm @@ -0,0 +1,414 @@ +// #################### Working Joe Ticket Console ##################### +/obj/structure/machinery/computer/working_joe + name = "APOLLO Maintenance Controller" + desc = "A console built to facilitate Working Joes and their operation, allowing for simple allocation of resources." + icon = 'icons/obj/structures/machinery/ares.dmi' + icon_state = "console" + exproof = TRUE + + /// The ID used to link all devices. + var/datum/ares_link/link + /// The datacore storing all the information. + var/datum/ares_datacore/datacore + + var/current_menu = "login" + var/last_menu = "" + + var/authentication = APOLLO_ACCESS_LOGOUT + /// The last person to login. + var/last_login + + +/obj/structure/machinery/computer/working_joe/proc/link_systems(datum/ares_link/new_link = GLOB.ares_link, override) + if(link && !override) + return FALSE + if(new_link) + new_link.ticket_computers += src + link = new_link + new_link.linked_systems += src + if(!datacore) + datacore = GLOB.ares_datacore + return TRUE + +/obj/structure/machinery/computer/working_joe/Initialize(mapload, ...) + link_systems(override = FALSE) + . = ..() + +/obj/structure/machinery/computer/working_joe/proc/delink() + if(link) + link.ticket_computers -= src + link.linked_systems -= src + link = null + datacore = null + +/obj/structure/machinery/computer/working_joe/Destroy() + delink() + return ..() + +// ------ Maintenance Controller UI ------ // +/obj/structure/machinery/computer/working_joe/attack_hand(mob/user as mob) + if(..() || !allowed(usr) || inoperable()) + return FALSE + + tgui_interact(user) + return TRUE + +/obj/structure/machinery/computer/working_joe/tgui_interact(mob/user, datum/tgui/ui, datum/ui_state/state) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "WorkingJoe", name) + ui.open() + +/obj/structure/machinery/computer/working_joe/ui_data(mob/user) + var/list/data = list() + + data["current_menu"] = current_menu + data["last_page"] = last_menu + + data["logged_in"] = last_login + + data["access_text"] = "access level [authentication], [ares_auth_to_text(authentication)]." + data["access_level"] = authentication + + data["alert_level"] = GLOB.security_level + data["worldtime"] = world.time + + data["access_log"] = list() + data["access_log"] += datacore.apollo_login_list + + data["apollo_log"] = list() + data["apollo_log"] += datacore.apollo_log + + var/list/logged_maintenance = list() + for(var/datum/ares_ticket/maintenance/maint_ticket as anything in link.tickets_maintenance) + if(!istype(maint_ticket)) + continue + var/lock_status = TICKET_OPEN + switch(maint_ticket.ticket_status) + if(TICKET_REJECTED, TICKET_CANCELLED, TICKET_COMPLETED) + lock_status = TICKET_CLOSED + + var/list/current_maint = list() + current_maint["id"] = maint_ticket.ticket_id + current_maint["time"] = maint_ticket.ticket_time + current_maint["priority_status"] = maint_ticket.ticket_priority + current_maint["category"] = maint_ticket.ticket_name + current_maint["details"] = maint_ticket.ticket_details + current_maint["status"] = maint_ticket.ticket_status + current_maint["submitter"] = maint_ticket.ticket_submitter + current_maint["assignee"] = maint_ticket.ticket_assignee + current_maint["lock_status"] = lock_status + current_maint["ref"] = "\ref[maint_ticket]" + logged_maintenance += list(current_maint) + data["maintenance_tickets"] = logged_maintenance + + var/list/logged_access = list() + var/list/requesting_access = list() + for(var/datum/ares_ticket/access/access_ticket as anything in link.tickets_access) + var/lock_status = TICKET_OPEN + switch(access_ticket.ticket_status) + if(TICKET_REJECTED, TICKET_CANCELLED, TICKET_REVOKED) + lock_status = TICKET_CLOSED + + var/list/current_ticket = list() + current_ticket["id"] = access_ticket.ticket_id + current_ticket["time"] = access_ticket.ticket_time + current_ticket["priority_status"] = access_ticket.ticket_priority + current_ticket["title"] = access_ticket.ticket_name + current_ticket["details"] = access_ticket.ticket_details + current_ticket["status"] = access_ticket.ticket_status + current_ticket["submitter"] = access_ticket.ticket_submitter + current_ticket["assignee"] = access_ticket.ticket_assignee + current_ticket["lock_status"] = lock_status + current_ticket["ref"] = "\ref[access_ticket]" + logged_access += list(current_ticket) + + if(lock_status == TICKET_OPEN) + requesting_access += access_ticket.ticket_name + data["access_tickets"] = logged_access + + return data + +/obj/structure/machinery/computer/working_joe/ui_status(mob/user, datum/ui_state/state) + . = ..() + if(!allowed(user)) + return UI_UPDATE + if(inoperable()) + return UI_DISABLED + +/obj/structure/machinery/computer/working_joe/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + + var/playsound = TRUE + var/mob/living/carbon/human/operator = usr + + switch (action) + if("go_back") + if(!last_menu) + return to_chat(usr, SPAN_WARNING("Error, no previous page detected.")) + var/temp_holder = current_menu + current_menu = last_menu + last_menu = temp_holder + + if("login") + + var/obj/item/card/id/idcard = operator.get_active_hand() + if(istype(idcard)) + authentication = get_ares_access(idcard) + last_login = idcard.registered_name + else if(operator.wear_id) + idcard = operator.wear_id + if(istype(idcard)) + authentication = get_ares_access(idcard) + last_login = idcard.registered_name + else + to_chat(operator, SPAN_WARNING("You require an ID card to access this terminal!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(authentication) + datacore.apollo_login_list += "[last_login] at [worldtime2text()], Access Level [authentication] - [ares_auth_to_text(authentication)]." + current_menu = "main" + + if("logout") + last_menu = current_menu + current_menu = "login" + datacore.apollo_login_list += "[last_login] logged out at [worldtime2text()]." + + if("home") + last_menu = current_menu + current_menu = "main" + if("page_logins") + last_menu = current_menu + current_menu = "login_records" + if("page_apollo") + last_menu = current_menu + current_menu = "apollo" + if("page_request") + last_menu = current_menu + current_menu = "access_requests" + if("page_report") + last_menu = current_menu + current_menu = "maint_reports" + if("page_tickets") + last_menu = current_menu + current_menu = "access_tickets" + if("page_maintenance") + last_menu = current_menu + current_menu = "maint_claim" + + if("new_report") + var/priority_report = FALSE + var/maint_type = tgui_input_list(operator, "What is the type of maintenance item you wish to report?", "Report Category", GLOB.maintenance_categories, 30 SECONDS) + switch(maint_type) + if("Major Structural Damage", "Fire", "Communications Failure", "Power Generation Failure") + priority_report = TRUE + + if(!maint_type) + return FALSE + var/details = tgui_input_text(operator, "What are the details for this report?", "Ticket Details", encode = FALSE) + if(!details) + return FALSE + + if((authentication >= APOLLO_ACCESS_REPORTER) && !priority_report) + var/is_priority = tgui_alert(operator, "Is this a priority report?", "Priority designation", list("Yes", "No")) + if(is_priority == "Yes") + priority_report = TRUE + + var/confirm = alert(operator, "Please confirm the submission of your maintenance report. \n\n Priority: [priority_report ? "Yes" : "No"]\n Category: '[maint_type]'\n Details: '[details]'\n\n Is this correct?", "Confirmation", "Yes", "No") + if(confirm == "Yes") + if(link) + var/datum/ares_ticket/maintenance/maint_ticket = new(last_login, maint_type, details, priority_report) + link.tickets_maintenance += maint_ticket + if(priority_report) + ares_apollo_talk("Priority Maintenance Report: [maint_type] - ID [maint_ticket.ticket_id]. Seek and resolve.") + log_game("ARES: Maintenance Ticket '\ref[maint_ticket]' created by [key_name(operator)] as [last_login] with Category '[maint_type]' and Details of '[details]'.") + return TRUE + return FALSE + + if("claim_ticket") + var/datum/ares_ticket/ticket = locate(params["ticket"]) + if(!istype(ticket)) + return FALSE + var/claim = TRUE + var/assigned = ticket.ticket_assignee + if(assigned) + if(assigned == last_login) + var/prompt = tgui_alert(usr, "You already claimed this ticket! Do you wish to drop your claim?", "Unclaim ticket", list("Yes", "No")) + if(prompt != "Yes") + return FALSE + /// set ticket back to pending + ticket.ticket_assignee = null + ticket.ticket_status = TICKET_PENDING + return claim + var/choice = tgui_alert(usr, "This ticket has already been claimed by [assigned]! Do you wish to override their claim?", "Claim Override", list("Yes", "No")) + if(choice != "Yes") + claim = FALSE + if(claim) + ticket.ticket_assignee = last_login + ticket.ticket_status = TICKET_ASSIGNED + return claim + + if("cancel_ticket") + var/datum/ares_ticket/ticket = locate(params["ticket"]) + if(!istype(ticket)) + return FALSE + if(ticket.ticket_submitter != last_login) + to_chat(usr, SPAN_WARNING("You cannot cancel a ticket that does not belong to you!")) + return FALSE + to_chat(usr, SPAN_WARNING("[ticket.ticket_type] [ticket.ticket_id] has been cancelled.")) + ticket.ticket_status = TICKET_CANCELLED + if(ticket.ticket_priority) + ares_apollo_talk("Priority [ticket.ticket_type] [ticket.ticket_id] has been cancelled.") + return TRUE + + if("mark_ticket") + var/datum/ares_ticket/ticket = locate(params["ticket"]) + if(!istype(ticket)) + return FALSE + if(ticket.ticket_assignee != last_login && ticket.ticket_assignee) //must be claimed by you or unclaimed.) + to_chat(usr, SPAN_WARNING("You cannot update a ticket that is not assigned to you!")) + return FALSE + var/choice = tgui_alert(usr, "What do you wish to mark the ticket as?", "Mark", list(TICKET_COMPLETED, TICKET_REJECTED), 20 SECONDS) + switch(choice) + if(TICKET_COMPLETED) + ticket.ticket_status = TICKET_COMPLETED + if(TICKET_REJECTED) + ticket.ticket_status = TICKET_REJECTED + else + return FALSE + if(ticket.ticket_priority) + ares_apollo_talk("Priority [ticket.ticket_type] [ticket.ticket_id] has been [choice] by [last_login].") + to_chat(usr, SPAN_NOTICE("[ticket.ticket_type] [ticket.ticket_id] marked as [choice].")) + return TRUE + + if("new_access") + var/obj/item/card/id/idcard = operator.get_active_hand() + var/has_id = FALSE + if(istype(idcard)) + has_id = TRUE + else if(operator.wear_id) + idcard = operator.wear_id + if(istype(idcard)) + has_id = TRUE + if(!has_id) + to_chat(operator, SPAN_WARNING("You require an ID card to request an access ticket!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(idcard.registered_name != last_login) + to_chat(operator, SPAN_WARNING("This ID card does not match the active login!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + + var/details = tgui_input_text(operator, "What is the purpose of this access ticket?", "Ticket Details", encode = FALSE) + if(!details) + return FALSE + + var/confirm = alert(operator, "Please confirm the submission of your access ticket request.\n\nHolder: '[last_login]'\nDetails: '[details]'\n\nIs this correct?", "Confirmation", "Yes", "No") + if(confirm != "Yes" || !link) + return FALSE + var/datum/ares_ticket/access/access_ticket = new(last_login, details, FALSE, idcard.registered_gid) + link.waiting_ids += idcard + link.tickets_access += access_ticket + log_game("ARES: Access Ticket '\ref[access_ticket]' created by [key_name(operator)] as [last_login] with Details of '[details]'.") + message_admins(SPAN_STAFF_IC("[key_name_admin(operator)] created a new ARES Access Ticket."), 1) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: [access_ticket.ticket_submitter] requesting access for '[details].") + return TRUE + + if("return_access") + playsound = FALSE + var/datum/ares_ticket/access/access_ticket + for(var/datum/ares_ticket/access/possible_ticket in link.tickets_access) + if(possible_ticket.ticket_status != TICKET_GRANTED) + continue + if(possible_ticket.ticket_name != last_login) + continue + access_ticket = possible_ticket + break + + for(var/obj/item/card/id/identification in link.active_ids) + if(!istype(identification)) + continue + if(identification.registered_gid != access_ticket.user_id_num) + continue + + access_ticket.ticket_status = TICKET_RETURNED + identification.access -= ACCESS_MARINE_AI_TEMP + identification.modification_log += "Temporary AI Access self-returned by [key_name(operator)]." + + to_chat(operator, SPAN_NOTICE("Temporary Access Ticket surrendered.")) + playsound(src, 'sound/machines/chime.ogg', 15, 1) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: [access_ticket.ticket_submitter] surrendered their access.") + + authentication = get_ares_access(identification) + if(authentication) + datacore.apollo_login_list += "[last_login] at [worldtime2text()], Surrendered Temporary Access Ticket." + return TRUE + + to_chat(operator, SPAN_WARNING("This ID card does not have an access ticket!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + + if("auth_access") + playsound = FALSE + var/datum/ares_ticket/access/access_ticket = locate(params["ticket"]) + if(!access_ticket) + return FALSE + for(var/obj/item/card/id/identification in link.waiting_ids) + if(!istype(identification)) + continue + if(identification.registered_gid != access_ticket.user_id_num) + continue + identification.handle_ares_access(last_login, operator) + access_ticket.ticket_status = TICKET_GRANTED + playsound(src, 'sound/machines/chime.ogg', 15, 1) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: [access_ticket.ticket_submitter] was granted access by [last_login].") + return TRUE + for(var/obj/item/card/id/identification in link.active_ids) + if(!istype(identification)) + continue + if(identification.registered_gid != access_ticket.user_id_num) + continue + identification.handle_ares_access(last_login, operator) + access_ticket.ticket_status = TICKET_REVOKED + playsound(src, 'sound/machines/chime.ogg', 15, 1) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: [access_ticket.ticket_submitter] had access revoked by [last_login].") + return TRUE + return FALSE + + if("reject_access") + var/datum/ares_ticket/access/access_ticket = locate(params["ticket"]) + if(!istype(access_ticket)) + return FALSE + if(access_ticket.ticket_assignee != last_login && access_ticket.ticket_assignee) //must be claimed by you or unclaimed.) + to_chat(usr, SPAN_WARNING("You cannot update a ticket that is not assigned to you!")) + return FALSE + access_ticket.ticket_status = TICKET_REJECTED + to_chat(usr, SPAN_NOTICE("[access_ticket.ticket_type] [access_ticket.ticket_id] marked as rejected.")) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: [access_ticket.ticket_submitter] was rejected access by [last_login].") + return TRUE + + if(playsound) + playsound(src, "keyboard_alt", 15, 1) + +/obj/item/card/id/proc/handle_ares_access(logged_in, mob/user) + var/operator = key_name(user) + var/datum/ares_link/link = GLOB.ares_link + if(logged_in == MAIN_AI_SYSTEM) + if(!user) + operator = "[MAIN_AI_SYSTEM] (Sensor Trip)" + else + operator = "[user.ckey]/([MAIN_AI_SYSTEM])" + if(ACCESS_MARINE_AI_TEMP in access) + access -= ACCESS_MARINE_AI_TEMP + link.active_ids -= src + modification_log += "Temporary AI access revoked by [operator]" + to_chat(user, SPAN_NOTICE("Access revoked from [registered_name].")) + else + access += ACCESS_MARINE_AI_TEMP + modification_log += "Temporary AI access granted by [operator]" + to_chat(user, SPAN_NOTICE("Access granted to [registered_name].")) + link.waiting_ids -= src + link.active_ids += src + return TRUE diff --git a/code/game/machinery/ARES/ARES_procs.dm b/code/game/machinery/ARES/ARES_procs.dm new file mode 100644 index 000000000000..8113614d9b92 --- /dev/null +++ b/code/game/machinery/ARES/ARES_procs.dm @@ -0,0 +1,312 @@ +GLOBAL_DATUM_INIT(ares_link, /datum/ares_link, new) +GLOBAL_DATUM_INIT(ares_datacore, /datum/ares_datacore, new) +GLOBAL_LIST_INIT(maintenance_categories, list( + "Broken Light", + "Shattered Glass", + "Minor Structural Damage", + "Major Structural Damage", + "Janitorial", + "Chemical Spill", + "Fire", + "Communications Failure", + "Power Generation Failure", + "Electrical Fault", + "Support", + "Other" + )) + +/datum/ares_link + /// All motion triggers for the link + var/list/linked_alerts = list() + /// All machinery for the link + var/list/linked_systems = list() + var/obj/structure/machinery/ares/cpu/central_processor + var/obj/structure/machinery/ares/processor/interface/processor_interface + var/obj/structure/machinery/ares/processor/apollo/processor_apollo + var/obj/structure/machinery/ares/processor/bioscan/processor_bioscan + var/obj/structure/machinery/computer/ares_console/interface + var/list/obj/structure/machinery/computer/working_joe/ticket_computers = list() + + /// Working Joe stuff + var/list/tickets_maintenance = list() + var/list/tickets_access = list() + var/list/waiting_ids = list() + var/list/active_ids = list() + +/datum/ares_datacore + /// A record of who logged in and when. + var/list/interface_access_list = list() + /// Access list for Apollo Maintenance Console + var/list/apollo_login_list = list() + + /// The chat log of the apollo link. Timestamped. + var/list/apollo_log = list() + + /// Holds all (/datum/ares_record/announcement)s + var/list/records_announcement = list() + /// Holds all (/datum/ares_record/bioscan)s + var/list/records_bioscan = list() + /// Holds all (/datum/ares_record/bombardment)s + var/list/records_bombardment = list() + /// Holds all (/datum/ares_record/deletion)s + var/list/records_deletion = list() + /// Holds all (/datum/ares_record/talk_log)s + var/list/records_talking = list() + /// Holds all (/datum/ares_record/requisition_log)s + var/list/records_asrs = list() + /// Holds all (/datum/ares_record/security)s (including AA) + var/list/records_security = list() + /// Holds all (/datum/ares_record/flight)s + var/list/records_flight = list() + /// Is nuke request usable or not? + var/nuke_available = TRUE + + + COOLDOWN_DECLARE(ares_distress_cooldown) + COOLDOWN_DECLARE(ares_nuclear_cooldown) + COOLDOWN_DECLARE(ares_quarters_cooldown) + +/datum/ares_link/Destroy() + for(var/obj/structure/machinery/ares/link in linked_systems) + link.delink() + for(var/obj/structure/machinery/computer/ares_console/interface in linked_systems) + interface.delink() + for(var/obj/effect/step_trigger/ares_alert/alert in linked_alerts) + alert.delink() + ..() + + +// ------ ARES Logging Procs ------ // +/proc/ares_is_active() + for(var/mob/living/silicon/decoy/ship_ai/ai in GLOB.ai_mob_list) + if(ai.stat == DEAD) + return FALSE //ARES dead, most other systems also die with it + return TRUE + +/proc/ares_apollo_talk(broadcast_message) + var/datum/language/apollo/apollo = GLOB.all_languages[LANGUAGE_APOLLO] + for(var/mob/living/silicon/decoy/ship_ai/ai in GLOB.ai_mob_list) + if(ai.stat == DEAD) + return FALSE + apollo.broadcast(ai, broadcast_message) + for(var/mob/listener in (GLOB.human_mob_list + GLOB.dead_mob_list)) + if(listener.hear_apollo())//Only plays sound to mobs and not observers, to reduce spam. + playsound_client(listener.client, sound('sound/misc/interference.ogg'), listener, vol = 45) + +/proc/ares_can_interface() + var/obj/structure/machinery/ares/processor/interface/processor = GLOB.ares_link.processor_interface + if(!istype(GLOB.ares_link) || !ares_is_active()) + return FALSE + if(processor && !processor.inoperable()) + return TRUE + return FALSE //interface processor not found or is broken + +/proc/ares_can_log() + if(!istype(GLOB.ares_link) || !istype(GLOB.ares_datacore) || !ares_is_active()) + return FALSE + var/obj/structure/machinery/ares/cpu/central_processor = GLOB.ares_link.central_processor + if(central_processor && !central_processor.inoperable()) + return TRUE + return FALSE //CPU not found or is broken + +/proc/ares_can_apollo() + if(!istype(GLOB.ares_link) || !istype(GLOB.ares_datacore) || !ares_is_active()) + return FALSE + var/datum/ares_link/link = GLOB.ares_link + if(!link.processor_apollo || link.processor_apollo.inoperable()) + return FALSE + return TRUE + +/proc/log_ares_apollo(speaker, message) + if(!ares_can_log() || !ares_can_apollo()) + return FALSE + if(!speaker) + speaker = "Unknown" + var/datum/ares_datacore/datacore = GLOB.ares_datacore + datacore.apollo_log.Add("[worldtime2text()]: [speaker], '[message]'") + +/proc/log_ares_bioscan(title, input, forced = FALSE) + if(!ares_can_log() && !forced) + return FALSE + var/datum/ares_datacore/datacore = GLOB.ares_datacore + datacore.records_bioscan.Add(new /datum/ares_record/bioscan(title, input)) + +/proc/log_ares_bombardment(user_name, ob_name, coordinates) + if(!ares_can_log()) + return FALSE + var/datum/ares_datacore/datacore = GLOB.ares_datacore + datacore.records_bombardment.Add(new /datum/ares_record/bombardment(ob_name, "Bombardment fired at [coordinates].", user_name)) + +/proc/log_ares_announcement(title, message) + if(!ares_can_log()) + return FALSE + var/datum/ares_datacore/datacore = GLOB.ares_datacore + datacore.records_announcement.Add(new /datum/ares_record/announcement(title, message)) + +/proc/log_ares_requisition(source, details, user_name) + if(!ares_can_log()) + return FALSE + var/datum/ares_datacore/datacore = GLOB.ares_datacore + datacore.records_asrs.Add(new /datum/ares_record/requisition_log(source, details, user_name)) + +/proc/log_ares_security(title, details) + if(!ares_can_log()) + return FALSE + var/datum/ares_datacore/datacore = GLOB.ares_datacore + datacore.records_security.Add(new /datum/ares_record/security(title, details)) + +/proc/log_ares_antiair(details) + if(!ares_can_log()) + return FALSE + var/datum/ares_datacore/datacore = GLOB.ares_datacore + datacore.records_security.Add(new /datum/ares_record/security/antiair(details)) + +/proc/log_ares_flight(user_name, details) + if(!ares_can_log()) + return FALSE + var/datum/ares_datacore/datacore = GLOB.ares_datacore + datacore.records_flight.Add(new /datum/ares_record/flight(details, user_name)) +// ------ End ARES Logging Procs ------ // + +// ------ ARES Interface Procs ------ // +/obj/structure/machinery/computer/proc/get_ares_access(obj/item/card/id/card) + if(ACCESS_ARES_DEBUG in card.access) + return ARES_ACCESS_DEBUG + switch(card.assignment) + if(JOB_WORKING_JOE) + return ARES_ACCESS_JOE + if(JOB_CHIEF_ENGINEER) + return ARES_ACCESS_CE + if(JOB_SYNTH) + return ARES_ACCESS_SYNTH + if(card.paygrade in GLOB.wy_highcom_paygrades) + return ARES_ACCESS_WY_COMMAND + if(card.paygrade in GLOB.uscm_highcom_paygrades) + return ARES_ACCESS_HIGH + if(card.paygrade in GLOB.co_paygrades) + return ARES_ACCESS_CO + if(ACCESS_MARINE_SENIOR in card.access) + return ARES_ACCESS_SENIOR + if(ACCESS_WY_GENERAL in card.access) + return ARES_ACCESS_CORPORATE + if(ACCESS_MARINE_COMMAND in card.access) + return ARES_ACCESS_COMMAND + else + return ARES_ACCESS_BASIC + +/obj/structure/machinery/computer/proc/ares_auth_to_text(access_level) + switch(access_level) + if(ARES_ACCESS_BASIC)//0 + return "Authorized" + if(ARES_ACCESS_COMMAND)//1 + return "[MAIN_SHIP_NAME] Command" + if(ARES_ACCESS_JOE)//2 + return "Working Joe" + if(ARES_ACCESS_CORPORATE)//3 + return "Weyland-Yutani" + if(ARES_ACCESS_SENIOR)//4 + return "[MAIN_SHIP_NAME] Senior Command" + if(ARES_ACCESS_CE)//5 + return "Chief Engineer" + if(ARES_ACCESS_SYNTH)//6 + return "USCM Synthetic" + if(ARES_ACCESS_CO)//7 + return "[MAIN_SHIP_NAME] Commanding Officer" + if(ARES_ACCESS_HIGH)//8 + return "USCM High Command" + if(ARES_ACCESS_WY_COMMAND)//9 + return "Weyland-Yutani Directorate" + if(ARES_ACCESS_DEBUG)//10 + return "AI Service Technician" + + +/obj/structure/machinery/computer/ares_console/proc/message_ares(text, mob/Sender, ref) + var/msg = SPAN_STAFF_IC("ARES: [key_name(Sender, 1)] [ARES_MARK(Sender)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] [ADMIN_JMP_USER(Sender)] [ARES_REPLY(Sender, ref)]: [text]") + var/datum/ares_record/talk_log/conversation = locate(ref) + conversation.conversation += "[last_login] at [worldtime2text()], '[text]'" + for(var/client/admin in GLOB.admins) + if((R_ADMIN|R_MOD) & admin.admin_holder.rights) + to_chat(admin, msg) + if(admin.prefs.toggles_sound & SOUND_ARES_MESSAGE) + playsound_client(admin, 'sound/machines/chime.ogg', vol = 25) + log_say("[key_name(Sender)] sent '[text]' to ARES 1:1.") + +/obj/structure/machinery/computer/ares_console/proc/response_from_ares(text, ref) + var/datum/ares_record/talk_log/conversation = locate(ref) + conversation.conversation += "[MAIN_AI_SYSTEM] at [worldtime2text()], '[text]'" +// ------ End ARES Interface Procs ------ // + +/proc/ares_final_words() + //APOLLO + ares_apollo_talk("APOLLO sub-system shutting down. STOP CODE: 0x000000f4|CRITICAL_PROCESS_DIED") + + //GENERAL CREW + shipwide_ai_announcement("A Problem has been detected and the [MAIN_AI_SYSTEM] system has been shutdown. \nTechnical Information: \n\n*** STOP CODE: 0x000000f4|CRITICAL_PROCESS_DIED\n\nPossible caused by: Rapid Unscheduled Disassembly\nContact an AI Service Technician for further assistance.", title = ":(", ares_logging = null) + +/obj/structure/machinery/computer/working_joe/get_ares_access(obj/item/card/id/card) + if(ACCESS_ARES_DEBUG in card.access) + return APOLLO_ACCESS_DEBUG + switch(card.assignment) + if(JOB_WORKING_JOE) + return APOLLO_ACCESS_JOE + if(JOB_CHIEF_ENGINEER, JOB_SYNTH, JOB_CO) + return APOLLO_ACCESS_AUTHED + if(ACCESS_MARINE_AI in card.access) + return APOLLO_ACCESS_AUTHED + if(ACCESS_MARINE_AI_TEMP in card.access) + return APOLLO_ACCESS_TEMP + if((ACCESS_MARINE_SENIOR in card.access ) || (ACCESS_MARINE_ENGINEERING in card.access) || (ACCESS_WY_GENERAL in card.access)) + return APOLLO_ACCESS_REPORTER + else + return APOLLO_ACCESS_REQUEST + +/obj/structure/machinery/computer/working_joe/ares_auth_to_text(access_level) + switch(access_level) + if(APOLLO_ACCESS_LOGOUT)//0 + return "Logged Out" + if(APOLLO_ACCESS_REQUEST)//1 + return "Unauthorized Personnel" + if(APOLLO_ACCESS_REPORTER)//2 + return "Validated Incident Reporter" + if(APOLLO_ACCESS_TEMP)//3 + return "Authorized Visitor" + if(APOLLO_ACCESS_AUTHED)//4 + return "Certified Personnel" + if(APOLLO_ACCESS_JOE)//5 + return "Working Joe" + if(APOLLO_ACCESS_DEBUG)//6 + return "AI Service Technician" + +/obj/item/device/working_joe_pda/proc/get_ares_access(obj/item/card/id/card) + if(ACCESS_ARES_DEBUG in card.access) + return APOLLO_ACCESS_DEBUG + switch(card.assignment) + if(JOB_WORKING_JOE) + return APOLLO_ACCESS_JOE + if(JOB_CHIEF_ENGINEER, JOB_SYNTH, JOB_CO) + return APOLLO_ACCESS_AUTHED + if(ACCESS_MARINE_AI in card.access) + return APOLLO_ACCESS_AUTHED + if(ACCESS_MARINE_AI_TEMP in card.access) + return APOLLO_ACCESS_TEMP + if((ACCESS_MARINE_SENIOR in card.access ) || (ACCESS_MARINE_ENGINEERING in card.access) || (ACCESS_WY_GENERAL in card.access)) + return APOLLO_ACCESS_REPORTER + else + return APOLLO_ACCESS_REQUEST + +/obj/item/device/working_joe_pda/proc/ares_auth_to_text(access_level) + switch(access_level) + if(APOLLO_ACCESS_LOGOUT)//0 + return "Logged Out" + if(APOLLO_ACCESS_REQUEST)//1 + return "Unauthorized Personnel" + if(APOLLO_ACCESS_REPORTER)//2 + return "Validated Incident Reporter" + if(APOLLO_ACCESS_TEMP)//3 + return "Authorized Visitor" + if(APOLLO_ACCESS_AUTHED)//4 + return "Certified Personnel" + if(APOLLO_ACCESS_JOE)//5 + return "Working Joe" + if(APOLLO_ACCESS_DEBUG)//6 + return "AI Service Technician" diff --git a/code/game/machinery/ARES/ARES_records.dm b/code/game/machinery/ARES/ARES_records.dm new file mode 100644 index 000000000000..f89b2c120e05 --- /dev/null +++ b/code/game/machinery/ARES/ARES_records.dm @@ -0,0 +1,133 @@ +/datum/ares_record + var/record_name = "ARES Data Core" + /// World time in text format. + var/time + /// The title of the record, usually announcement title. + var/title + /// The content of the record, announcement text/bioscan info etc. + var/details + /// The name of the initiator of certain records. Who fired an OB, or who deleted something etc. + var/user + +/datum/ares_record/New(title, details) + time = worldtime2text() + src.title = title + src.details = details + +/datum/ares_record/announcement + record_name = ARES_RECORD_ANNOUNCE + +/datum/ares_record/bioscan + record_name = ARES_RECORD_BIOSCAN + +/datum/ares_record/requisition_log + record_name = ARES_RECORD_ASRS + +/datum/ares_record/requisition_log/New(title, details, user) + time = worldtime2text() + src.title = title + src.details = details + src.user = user + +/datum/ares_record/security + record_name = ARES_RECORD_SECURITY + +/datum/ares_record/security/antiair + record_name = ARES_RECORD_ANTIAIR + +/datum/ares_record/security/antiair/New(details) + time = worldtime2text() + src.title = "AntiAir Adjustment" + src.details = details + +/datum/ares_record/flight + record_name = ARES_RECORD_FLIGHT + +/datum/ares_record/flight/New(details, user) + time = worldtime2text() + src.title = "Flight Log" + src.details = details + src.user = user + +/datum/ares_record/bombardment + record_name = ARES_RECORD_BOMB + +/datum/ares_record/bombardment/New(title, details, user) + time = worldtime2text() + src.title = title + src.details = details + src.user = user + +/datum/ares_record/deletion + record_name = ARES_RECORD_DELETED + +/datum/ares_record/deletion/New() + time = worldtime2text() + +/datum/ares_record/talk_log + record_name = "1:1 Data Log" + var/conversation = list() + +/datum/ares_record/talk_log/New(user) + src.user = user + src.title = "1:1 Log ([user])" + +/datum/ares_record/deleted_talk + record_name = ARES_RECORD_DELETED + var/conversation = list() + +/datum/ares_record/deleted_talk/New() + time = worldtime2text() + + +/datum/ares_ticket + var/ticket_type = "Root Ticket" + var/ticket_status = TICKET_PENDING + /// Name of who is handling the ticket. Derived from last login. + var/ticket_assignee + /// Numerical designation of the ticket. + var/ticket_id = "1111" + /// World time in text format. + var/ticket_time + /// Who submitted the ticket. Derived from last login. + var/ticket_submitter + /// The name of the ticket. + var/ticket_name + /// The content of the ticket, usually an explanation of what it is for. + var/ticket_details + /// Whether or not the tickey is a priority. + var/ticket_priority = FALSE + +/datum/ares_ticket/New(user, name, details, priority) + var/ref_holder = "\ref[src]" + var/pos = length(ref_holder) + var/new_id = "#[copytext("\ref[src]", pos - 4, pos)]" + new_id = uppertext(new_id) + + ticket_time = worldtime2text() + ticket_submitter = user + ticket_details = details + ticket_name = name + ticket_priority = priority + ticket_id = new_id + +/datum/ares_ticket/maintenance + ticket_type = ARES_RECORD_MAINTENANCE + +/datum/ares_ticket/access + ticket_type = ARES_RECORD_ACCESS + ticket_name = ARES_RECORD_ACCESS + var/user_id_num + +/datum/ares_ticket/access/New(user, details, priority, global_id_num) + var/ref_holder = "\ref[src]" + var/pos = length(ref_holder) + var/new_id = "#[copytext("\ref[src]", pos - 4, pos)]" + new_id = uppertext(new_id) + + ticket_time = worldtime2text() + ticket_submitter = user + ticket_details = details + ticket_priority = priority + ticket_id = new_id + user_id_num = global_id_num diff --git a/code/game/machinery/ARES/ARES_step_triggers.dm b/code/game/machinery/ARES/ARES_step_triggers.dm new file mode 100644 index 000000000000..2c6d605bcc9b --- /dev/null +++ b/code/game/machinery/ARES/ARES_step_triggers.dm @@ -0,0 +1,196 @@ +/obj/effect/step_trigger/ares_alert + name = "ARES Apollo Sensor" + layer = 5 + /// Link alerts to ARES Link + var/datum/ares_link/link + /// Alert message to report unless area based. + var/alert_message = "ALERT: Unauthorized movement detected in ARES Core!" + /// Connect alerts to use same cooldowns + var/alert_id + /// Set to true if it should report area name and not specific alert. + var/area_based = FALSE + /// Cooldown duration and next time. + var/cooldown_duration = COOLDOWN_ARES_SENSOR + COOLDOWN_DECLARE(sensor_cooldown) + /// The job on a mob to enter + var/list/pass_jobs = list(JOB_WORKING_JOE, JOB_CHIEF_ENGINEER, JOB_CO) + /// The accesses on an ID card to enter + var/pass_accesses = list(ACCESS_MARINE_AI, ACCESS_ARES_DEBUG) + +/obj/effect/step_trigger/ares_alert/Crossed(mob/living/passer) + if(!COOLDOWN_FINISHED(src, sensor_cooldown))//Don't want alerts spammed. + return FALSE + if(!passer) + return FALSE + if(!(ishuman(passer) || isxeno(passer))) + return FALSE + if(HAS_TRAIT(passer, TRAIT_CLOAKED)) + return FALSE + if(pass_jobs) + if(passer.job in pass_jobs) + return FALSE + if(isxeno(passer) && (JOB_XENOMORPH in pass_jobs)) + return FALSE + if(ishuman(passer)) + var/mob/living/carbon/human/trespasser = passer + if(pass_accesses && (trespasser.wear_id)) + for(var/tag in pass_accesses) + if(tag in trespasser.wear_id.access) + return FALSE + Trigger(passer) + return TRUE + + +/obj/effect/step_trigger/ares_alert/Initialize(mapload, ...) + link_systems(override = FALSE) + . = ..() + +/obj/effect/step_trigger/ares_alert/Destroy() + delink() + return ..() + +/obj/effect/step_trigger/ares_alert/proc/link_systems(datum/ares_link/new_link = GLOB.ares_link, override) + if(link && !override) + return FALSE + if(new_link) + link = new_link + new_link.linked_alerts += src + return TRUE +/obj/effect/step_trigger/ares_alert/proc/delink() + if(link) + link.linked_alerts -= src + link = null + + +/obj/effect/step_trigger/ares_alert/Trigger(mob/living/passer) + var/broadcast_message = alert_message + if(area_based) + var/area_name = get_area_name(src, TRUE) + broadcast_message = "ALERT: Unauthorized movement detected in [area_name]!" + + var/datum/ares_link/link = GLOB.ares_link + if(!ares_can_apollo()) + return FALSE + + to_chat(passer, SPAN_BOLDWARNING("You hear a soft beeping sound as you cross the threshold.")) + ares_apollo_talk(broadcast_message) + COOLDOWN_START(src, sensor_cooldown, cooldown_duration) + if(alert_id && link) + for(var/obj/effect/step_trigger/ares_alert/sensor in link.linked_alerts) + if(sensor.alert_id == src.alert_id) + COOLDOWN_START(sensor, sensor_cooldown, cooldown_duration) + return TRUE + +/obj/effect/step_trigger/ares_alert/public + pass_accesses = list(ACCESS_MARINE_AI_TEMP, ACCESS_MARINE_AI, ACCESS_ARES_DEBUG) +/obj/effect/step_trigger/ares_alert/core + alert_id = "AresCore" + pass_accesses = list(ACCESS_MARINE_AI_TEMP, ACCESS_MARINE_AI, ACCESS_ARES_DEBUG) + +/obj/effect/step_trigger/ares_alert/mainframe + alert_id = "AresMainframe" + alert_message = "ALERT: Unauthorized movement detected in ARES Mainframe!" + +/obj/effect/step_trigger/ares_alert/terminals + alert_id = "AresTerminals" + alert_message = "ALERT: Unauthorized movement detected in ARES' Operations Center!" + +/obj/effect/step_trigger/ares_alert/comms + area_based = TRUE + alert_id = "TComms" + pass_accesses = list(ACCESS_MARINE_CE) + + +/// Trigger will remove ACCESS_MARINE_AI_TEMP unless ACCESS_MARINE_AI is also present. +/obj/effect/step_trigger/ares_alert/access_control + name = "ARES Access Control Sensor" + alert_message = "HARDCODED" + alert_id = "ARES Access" + cooldown_duration = COOLDOWN_ARES_ACCESS_CONTROL + + +/obj/effect/step_trigger/ares_alert/access_control/Crossed(atom/passer as mob|obj) + if(isobserver(passer) || isxeno(passer)) + return FALSE + if(!passer) + return FALSE + if(HAS_TRAIT(passer, TRAIT_CLOAKED))//Can't be seen/detected to trigger alert. + return FALSE + var/area/pass_area = get_area(get_step(passer, passer.dir)) + if(istype(pass_area, /area/almayer/command/airoom))//Don't want it to freak out over someone /entering/ the area. Only leaving. + return FALSE + var/obj/item/card/id/idcard + var/check_contents = TRUE + if(ishuman(passer)) + var/mob/living/carbon/human/human_passer = passer + idcard = human_passer.wear_id + if(istype(idcard)) + check_contents = FALSE + else + idcard = null + + if(istype(passer, /obj/item/card/id)) + idcard = passer + check_contents = FALSE + + if(check_contents) + idcard = locate(/obj/item/card/id) in passer + if(!idcard) + for(var/obj/item/holder in passer.contents) + idcard = locate(/obj/item/card/id) in holder.contents + if(idcard) + break + if(!istype(idcard) && ismob(passer)) + Trigger(passer, failure = TRUE) + return FALSE + if(!(ACCESS_MARINE_AI_TEMP in idcard.access))//No temp access, don't care + return FALSE + if((ACCESS_MARINE_AI in idcard.access) || (ACCESS_ARES_DEBUG in idcard.access))//Permanent access prevents loss of temporary + return FALSE + Trigger(passer, idcard) + return TRUE + +/obj/effect/step_trigger/ares_alert/access_control/Trigger(atom/passer, obj/item/card/id/idcard, failure = FALSE) + var/broadcast_message = get_broadcast(passer, idcard, failure) + + var/datum/ares_link/link = GLOB.ares_link + if(!ares_can_apollo()) + return FALSE + + to_chat(passer, SPAN_BOLDWARNING("You hear a harsh buzzing sound as you cross the threshold!")) + if(COOLDOWN_FINISHED(src, sensor_cooldown))//Don't want alerts spammed. + ares_apollo_talk(broadcast_message) + if(idcard) + /// Removes the access from the ID and updates the ID's modification log. + for(var/obj/item/card/id/identification in link.active_ids) + if(identification != idcard) + continue + idcard.access -= ACCESS_MARINE_AI_TEMP + link.active_ids -= idcard + idcard.modification_log += "Temporary AI access revoked by [MAIN_AI_SYSTEM]" + /// Updates the related access ticket. + for(var/datum/ares_ticket/access/access_ticket in link.tickets_access) + if(access_ticket.user_id_num != idcard.registered_gid) + continue + access_ticket.ticket_status = TICKET_REVOKED + COOLDOWN_START(src, sensor_cooldown, COOLDOWN_ARES_ACCESS_CONTROL) + if(alert_id && link) + for(var/obj/effect/step_trigger/ares_alert/sensor in link.linked_alerts) + if(sensor.alert_id == src.alert_id) + COOLDOWN_START(sensor, sensor_cooldown, COOLDOWN_ARES_ACCESS_CONTROL) + return TRUE + +/obj/effect/step_trigger/ares_alert/access_control/proc/get_broadcast(atom/passer, obj/item/card/id/idcard, failure = FALSE) + if(isxeno(passer)) + return "Unidentified lifeform detected departing AI Chamber." + if(ishuman(passer)) + var/mob/living/carbon/human/human_passer = passer + if(failure) + return "CAUTION: [human_passer.name] left the AI Chamber without a locatable ID card." + return "ALERT: [human_passer.name] left the AI Chamber with a temporary access ticket. Removing access." + + if(idcard) + return "ALERT: ID Card assigned to [idcard.registered_name] left the AI Chamber with a temporary access ticket. Removing access." + + log_debug("ARES ERROR 337: Passer: '[passer]', ID: '[idcard]', F Status: '[failure]'") + return "Warning: Error 337 - Access Control Anomaly." diff --git a/code/game/machinery/ARES/apollo_pda.dm b/code/game/machinery/ARES/apollo_pda.dm new file mode 100644 index 000000000000..8df3faf79260 --- /dev/null +++ b/code/game/machinery/ARES/apollo_pda.dm @@ -0,0 +1,419 @@ +/obj/item/device/working_joe_pda + icon = 'icons/obj/items/synth/wj_pda.dmi' + name = "KN5500 PDA" + desc = "A portable interface used by Working-Joes, capable of connecting to the local command AI to relay tasking information. Built to withstand a nuclear bomb." + icon_state = "karnak_off" + unacidable = TRUE + indestructible = TRUE + req_one_access = list(ACCESS_MARINE_AI_TEMP, ACCESS_MARINE_AI, ACCESS_ARES_DEBUG) + + /// The ID used to link all devices. + var/datum/ares_link/link + /// The datacore storing all the information. + var/datum/ares_datacore/datacore + + var/current_menu = "login" + var/last_menu = "off" + + var/authentication = APOLLO_ACCESS_LOGOUT + /// The last person to login. + var/last_login + + +/obj/item/device/working_joe_pda/proc/link_systems(datum/ares_link/new_link = GLOB.ares_link, override) + if(link && !override) + return FALSE + if(new_link) + new_link.ticket_computers += src + link = new_link + new_link.linked_systems += src + if(!datacore) + datacore = GLOB.ares_datacore + return TRUE + +/obj/item/device/working_joe_pda/Initialize(mapload, ...) + link_systems(override = FALSE) + . = ..() + +/obj/item/device/working_joe_pda/proc/delink() + if(link) + link.ticket_computers -= src + link.linked_systems -= src + link = null + datacore = null + +/obj/item/device/working_joe_pda/Destroy() + delink() + return ..() + +/obj/item/device/working_joe_pda/update_icon() + . = ..() + if(last_menu == "off") + icon_state = "karnak_off" + else if(current_menu == "login") + icon_state = "karnak_login_anim" + else + icon_state = "karnak_on_anim" + +// ------ Maintenance Controller UI ------ // +/obj/item/device/working_joe_pda/attack_self(mob/user) + if(..() || !allowed(usr)) + return FALSE + + if((last_menu == "off") && (current_menu == "login")) + last_menu = "main" + update_icon() + + tgui_interact(user) + return TRUE + +/obj/item/device/working_joe_pda/tgui_interact(mob/user, datum/tgui/ui, datum/ui_state/state) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "WorkingJoe", name) + ui.open() + +/obj/item/device/working_joe_pda/ui_close(mob/user) + . = ..() + + current_menu = "login" + last_menu = "off" + if(last_login) + datacore.apollo_login_list += "[last_login] logged out at [worldtime2text()]." + last_login = null + update_icon() + +/obj/item/device/working_joe_pda/ui_data(mob/user) + var/list/data = list() + + data["current_menu"] = current_menu + data["last_page"] = last_menu + + data["logged_in"] = last_login + + data["access_text"] = "access level [authentication], [ares_auth_to_text(authentication)]." + data["access_level"] = authentication + + data["alert_level"] = GLOB.security_level + data["worldtime"] = world.time + + data["access_log"] = list() + data["access_log"] += datacore.apollo_login_list + + data["apollo_log"] = list() + data["apollo_log"] += datacore.apollo_log + + var/list/logged_maintenance = list() + for(var/datum/ares_ticket/maintenance/maint_ticket as anything in link.tickets_maintenance) + if(!istype(maint_ticket)) + continue + var/lock_status = TICKET_OPEN + switch(maint_ticket.ticket_status) + if(TICKET_REJECTED, TICKET_CANCELLED, TICKET_COMPLETED) + lock_status = TICKET_CLOSED + + var/list/current_maint = list() + current_maint["id"] = maint_ticket.ticket_id + current_maint["time"] = maint_ticket.ticket_time + current_maint["priority_status"] = maint_ticket.ticket_priority + current_maint["category"] = maint_ticket.ticket_name + current_maint["details"] = maint_ticket.ticket_details + current_maint["status"] = maint_ticket.ticket_status + current_maint["submitter"] = maint_ticket.ticket_submitter + current_maint["assignee"] = maint_ticket.ticket_assignee + current_maint["lock_status"] = lock_status + current_maint["ref"] = "\ref[maint_ticket]" + logged_maintenance += list(current_maint) + data["maintenance_tickets"] = logged_maintenance + + var/list/logged_access = list() + var/list/requesting_access = list() + for(var/datum/ares_ticket/access/access_ticket as anything in link.tickets_access) + var/lock_status = TICKET_OPEN + switch(access_ticket.ticket_status) + if(TICKET_REJECTED, TICKET_CANCELLED, TICKET_REVOKED) + lock_status = TICKET_CLOSED + + var/list/current_ticket = list() + current_ticket["id"] = access_ticket.ticket_id + current_ticket["time"] = access_ticket.ticket_time + current_ticket["priority_status"] = access_ticket.ticket_priority + current_ticket["title"] = access_ticket.ticket_name + current_ticket["details"] = access_ticket.ticket_details + current_ticket["status"] = access_ticket.ticket_status + current_ticket["submitter"] = access_ticket.ticket_submitter + current_ticket["assignee"] = access_ticket.ticket_assignee + current_ticket["lock_status"] = lock_status + current_ticket["ref"] = "\ref[access_ticket]" + logged_access += list(current_ticket) + + if(lock_status == TICKET_OPEN) + requesting_access += access_ticket.ticket_name + data["access_tickets"] = logged_access + + return data + +/obj/item/device/working_joe_pda/ui_status(mob/user, datum/ui_state/state) + . = ..() + if(!allowed(user)) + return UI_UPDATE + +/obj/item/device/working_joe_pda/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + + var/playsound = TRUE + var/mob/living/carbon/human/operator = usr + + switch (action) + if("go_back") + if(!last_menu) + return to_chat(usr, SPAN_WARNING("Error, no previous page detected.")) + var/temp_holder = current_menu + current_menu = last_menu + last_menu = temp_holder + + if("login") + + var/obj/item/card/id/idcard = operator.get_active_hand() + if(istype(idcard)) + authentication = get_ares_access(idcard) + last_login = idcard.registered_name + else if(operator.wear_id) + idcard = operator.wear_id + if(istype(idcard)) + authentication = get_ares_access(idcard) + last_login = idcard.registered_name + else + to_chat(operator, SPAN_WARNING("You require an ID card to access this terminal!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(authentication) + datacore.apollo_login_list += "[last_login] at [worldtime2text()], Access Level [authentication] - [ares_auth_to_text(authentication)]." + current_menu = "main" + last_menu = "main" + update_icon() + + if("logout") + last_menu = current_menu + current_menu = "login" + datacore.apollo_login_list += "[last_login] logged out at [worldtime2text()]." + update_icon() + + if("home") + last_menu = current_menu + current_menu = "main" + if("page_logins") + last_menu = current_menu + current_menu = "login_records" + if("page_apollo") + last_menu = current_menu + current_menu = "apollo" + if("page_request") + last_menu = current_menu + current_menu = "access_requests" + if("page_report") + last_menu = current_menu + current_menu = "maint_reports" + if("page_tickets") + last_menu = current_menu + current_menu = "access_tickets" + if("page_maintenance") + last_menu = current_menu + current_menu = "maint_claim" + + if("new_report") + var/priority_report = FALSE + var/maint_type = tgui_input_list(operator, "What is the type of maintenance item you wish to report?", "Report Category", GLOB.maintenance_categories, 30 SECONDS) + switch(maint_type) + if("Major Structural Damage", "Fire", "Communications Failure", "Power Generation Failure") + priority_report = TRUE + + if(!maint_type) + return FALSE + var/details = tgui_input_text(operator, "What are the details for this report?", "Ticket Details", encode = FALSE) + if(!details) + return FALSE + + if((authentication >= APOLLO_ACCESS_REPORTER) && !priority_report) + var/is_priority = tgui_alert(operator, "Is this a priority report?", "Priority designation", list("Yes", "No")) + if(is_priority == "Yes") + priority_report = TRUE + + var/confirm = alert(operator, "Please confirm the submission of your maintenance report. \n\n Priority: [priority_report ? "Yes" : "No"]\n Category: '[maint_type]'\n Details: '[details]'\n\n Is this correct?", "Confirmation", "Yes", "No") + if(confirm == "Yes") + if(link) + var/datum/ares_ticket/maintenance/maint_ticket = new(last_login, maint_type, details, priority_report) + link.tickets_maintenance += maint_ticket + if(priority_report) + ares_apollo_talk("Priority Maintenance Report: [maint_type] - ID [maint_ticket.ticket_id]. Seek and resolve.") + log_game("ARES: Maintenance Ticket '\ref[maint_ticket]' created by [key_name(operator)] as [last_login] with Category '[maint_type]' and Details of '[details]'.") + return TRUE + return FALSE + + if("claim_ticket") + var/datum/ares_ticket/ticket = locate(params["ticket"]) + if(!istype(ticket)) + return FALSE + var/claim = TRUE + var/assigned = ticket.ticket_assignee + if(assigned) + if(assigned == last_login) + var/prompt = tgui_alert(usr, "You already claimed this ticket! Do you wish to drop your claim?", "Unclaim ticket", list("Yes", "No")) + if(prompt != "Yes") + return FALSE + /// set ticket back to pending + ticket.ticket_assignee = null + ticket.ticket_status = TICKET_PENDING + return claim + var/choice = tgui_alert(usr, "This ticket has already been claimed by [assigned]! Do you wish to override their claim?", "Claim Override", list("Yes", "No")) + if(choice != "Yes") + claim = FALSE + if(claim) + ticket.ticket_assignee = last_login + ticket.ticket_status = TICKET_ASSIGNED + return claim + + if("cancel_ticket") + var/datum/ares_ticket/ticket = locate(params["ticket"]) + if(!istype(ticket)) + return FALSE + if(ticket.ticket_submitter != last_login) + to_chat(usr, SPAN_WARNING("You cannot cancel a ticket that does not belong to you!")) + return FALSE + to_chat(usr, SPAN_WARNING("[ticket.ticket_type] [ticket.ticket_id] has been cancelled.")) + ticket.ticket_status = TICKET_CANCELLED + if(ticket.ticket_priority) + ares_apollo_talk("Priority [ticket.ticket_type] [ticket.ticket_id] has been cancelled.") + return TRUE + + if("mark_ticket") + var/datum/ares_ticket/ticket = locate(params["ticket"]) + if(!istype(ticket)) + return FALSE + if(ticket.ticket_assignee != last_login && ticket.ticket_assignee) //must be claimed by you or unclaimed.) + to_chat(usr, SPAN_WARNING("You cannot update a ticket that is not assigned to you!")) + return FALSE + var/choice = tgui_alert(usr, "What do you wish to mark the ticket as?", "Mark", list(TICKET_COMPLETED, TICKET_REJECTED), 20 SECONDS) + switch(choice) + if(TICKET_COMPLETED) + ticket.ticket_status = TICKET_COMPLETED + if(TICKET_REJECTED) + ticket.ticket_status = TICKET_REJECTED + else + return FALSE + if(ticket.ticket_priority) + ares_apollo_talk("Priority [ticket.ticket_type] [ticket.ticket_id] has been [choice] by [last_login].") + to_chat(usr, SPAN_NOTICE("[ticket.ticket_type] [ticket.ticket_id] marked as [choice].")) + return TRUE + + if("new_access") + var/obj/item/card/id/idcard = operator.get_active_hand() + var/has_id = FALSE + if(istype(idcard)) + has_id = TRUE + else if(operator.wear_id) + idcard = operator.wear_id + if(istype(idcard)) + has_id = TRUE + if(!has_id) + to_chat(operator, SPAN_WARNING("You require an ID card to request an access ticket!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(idcard.registered_name != last_login) + to_chat(operator, SPAN_WARNING("This ID card does not match the active login!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + + var/details = tgui_input_text(operator, "What is the purpose of this access ticket?", "Ticket Details", encode = FALSE) + if(!details) + return FALSE + + var/confirm = alert(operator, "Please confirm the submission of your access ticket request.\n\nHolder: '[last_login]'\nDetails: '[details]'\n\nIs this correct?", "Confirmation", "Yes", "No") + if(confirm != "Yes" || !link) + return FALSE + var/datum/ares_ticket/access/access_ticket = new(last_login, details, FALSE, idcard.registered_gid) + link.waiting_ids += idcard + link.tickets_access += access_ticket + log_game("ARES: Access Ticket '\ref[access_ticket]' created by [key_name(operator)] as [last_login] with Details of '[details]'.") + message_admins(SPAN_STAFF_IC("[key_name_admin(operator)] created a new ARES Access Ticket."), 1) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: [access_ticket.ticket_submitter] requesting access for '[details].") + return TRUE + + if("return_access") + playsound = FALSE + var/datum/ares_ticket/access/access_ticket + for(var/datum/ares_ticket/access/possible_ticket in link.tickets_access) + if(possible_ticket.ticket_status != TICKET_GRANTED) + continue + if(possible_ticket.ticket_name != last_login) + continue + access_ticket = possible_ticket + break + + for(var/obj/item/card/id/identification in link.active_ids) + if(!istype(identification)) + continue + if(identification.registered_gid != access_ticket.user_id_num) + continue + + access_ticket.ticket_status = TICKET_RETURNED + identification.access -= ACCESS_MARINE_AI_TEMP + identification.modification_log += "Temporary AI Access self-returned by [key_name(operator)]." + + to_chat(operator, SPAN_NOTICE("Temporary Access Ticket surrendered.")) + playsound(src, 'sound/machines/chime.ogg', 15, 1) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: [access_ticket.ticket_submitter] surrendered their access.") + + authentication = get_ares_access(identification) + if(authentication) + datacore.apollo_login_list += "[last_login] at [worldtime2text()], Surrendered Temporary Access Ticket." + return TRUE + + to_chat(operator, SPAN_WARNING("This ID card does not have an access ticket!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + + if("auth_access") + playsound = FALSE + var/datum/ares_ticket/access/access_ticket = locate(params["ticket"]) + if(!access_ticket) + return FALSE + for(var/obj/item/card/id/identification in link.waiting_ids) + if(!istype(identification)) + continue + if(identification.registered_gid != access_ticket.user_id_num) + continue + identification.handle_ares_access(last_login, operator) + access_ticket.ticket_status = TICKET_GRANTED + playsound(src, 'sound/machines/chime.ogg', 15, 1) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: [access_ticket.ticket_submitter] was granted access by [last_login].") + return TRUE + for(var/obj/item/card/id/identification in link.active_ids) + if(!istype(identification)) + continue + if(identification.registered_gid != access_ticket.user_id_num) + continue + identification.handle_ares_access(last_login, operator) + access_ticket.ticket_status = TICKET_REVOKED + playsound(src, 'sound/machines/chime.ogg', 15, 1) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: [access_ticket.ticket_submitter] had access revoked by [last_login].") + return TRUE + return FALSE + + if("reject_access") + var/datum/ares_ticket/access/access_ticket = locate(params["ticket"]) + if(!istype(access_ticket)) + return FALSE + if(access_ticket.ticket_assignee != last_login && access_ticket.ticket_assignee) //must be claimed by you or unclaimed.) + to_chat(usr, SPAN_WARNING("You cannot update a ticket that is not assigned to you!")) + return FALSE + access_ticket.ticket_status = TICKET_REJECTED + to_chat(usr, SPAN_NOTICE("[access_ticket.ticket_type] [access_ticket.ticket_id] marked as rejected.")) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: [access_ticket.ticket_submitter] was rejected access by [last_login].") + return TRUE + + if(playsound) + var/sound = pick('sound/machines/pda_button1.ogg', 'sound/machines/pda_button2.ogg') + playsound(src, sound, 15, TRUE) diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index 3c4104b6c283..03c013703b07 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -19,7 +19,7 @@ active_power_usage = 5 var/strapped = 0 can_buckle = TRUE - buckle_lying = TRUE + buckle_lying = 90 var/buckling_y = -4 surgery_duration_multiplier = SURGERY_SURFACE_MULT_IDEAL //Ideal surface for surgery. var/patient_exam = 0 @@ -59,8 +59,6 @@ if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY) deconstruct(FALSE) return - else - return /obj/structure/machinery/optable/get_examine_text(mob/user) . = ..() diff --git a/code/game/machinery/air_alarm.dm b/code/game/machinery/air_alarm.dm index 28e045163f06..7eccb51c0660 100644 --- a/code/game/machinery/air_alarm.dm +++ b/code/game/machinery/air_alarm.dm @@ -5,9 +5,9 @@ /proc/RandomAAlarmWires() //to make this not randomize the wires, just set index to 1 and increment it in the flag for loop (after doing everything else). var/list/AAlarmwires = list(0, 0, 0, 0, 0) - AAlarmIndexToFlag = list(0, 0, 0, 0, 0) - AAlarmIndexToWireColor = list(0, 0, 0, 0, 0) - AAlarmWireColorToIndex = list(0, 0, 0, 0, 0) + GLOB.AAlarmIndexToFlag = list(0, 0, 0, 0, 0) + GLOB.AAlarmIndexToWireColor = list(0, 0, 0, 0, 0) + GLOB.AAlarmWireColorToIndex = list(0, 0, 0, 0, 0) var/flagIndex = 1 for (var/flag=1, flag<32, flag+=flag) var/valid = 0 @@ -16,9 +16,9 @@ if (AAlarmwires[colorIndex]==0) valid = 1 AAlarmwires[colorIndex] = flag - AAlarmIndexToFlag[flagIndex] = flag - AAlarmIndexToWireColor[flagIndex] = colorIndex - AAlarmWireColorToIndex[colorIndex] = flagIndex + GLOB.AAlarmIndexToFlag[flagIndex] = flag + GLOB.AAlarmIndexToWireColor[flagIndex] = colorIndex + GLOB.AAlarmWireColorToIndex[colorIndex] = flagIndex flagIndex+=1 return AAlarmwires @@ -136,8 +136,6 @@ /obj/structure/machinery/alarm/proc/first_run() alarm_area = get_area(src) - if (alarm_area.master) - alarm_area = alarm_area.master area_uid = alarm_area.uid if (name == "alarm") name = "[alarm_area.name] Air Alarm" @@ -203,11 +201,10 @@ /obj/structure/machinery/alarm/proc/elect_master() if(!alarm_area) return 0 - for (var/area/A in alarm_area.related) - for (var/obj/structure/machinery/alarm/AA in A) - if (!(AA.inoperable())) - alarm_area.master_air_alarm = AA - return 1 + for (var/obj/structure/machinery/alarm/AA in alarm_area) + if (!(AA.inoperable())) + alarm_area.master_air_alarm = AA + return 1 return 0 /obj/structure/machinery/alarm/proc/get_danger_level(current_value, list/danger_levels) @@ -314,9 +311,8 @@ /obj/structure/machinery/alarm/proc/apply_mode() //propagate mode to other air alarms in the area //TODO: make it so that players can choose between applying the new mode to the room they are in (related area) vs the entire alarm area - for (var/area/RA in alarm_area.related) - for (var/obj/structure/machinery/alarm/AA in RA) - AA.mode = mode + for (var/obj/structure/machinery/alarm/AA in alarm_area) + AA.mode = mode switch(mode) if(AALARM_MODE_SCRUBBING) @@ -383,24 +379,24 @@ //HACKING// /////////// /obj/structure/machinery/alarm/proc/isWireColorCut(wireColor) - var/wireFlag = AAlarmWireColorToFlag[wireColor] + var/wireFlag = GLOB.AAlarmWireColorToFlag[wireColor] return ((AAlarmwires & wireFlag) == 0) /obj/structure/machinery/alarm/proc/isWireCut(wireIndex) - var/wireFlag = AAlarmIndexToFlag[wireIndex] + var/wireFlag = GLOB.AAlarmIndexToFlag[wireIndex] return ((AAlarmwires & wireFlag) == 0) /obj/structure/machinery/alarm/proc/allWiresCut() var/i = 1 while(i<=5) - if(AAlarmwires & AAlarmIndexToFlag[i]) + if(AAlarmwires & GLOB.AAlarmIndexToFlag[i]) return 0 i++ return 1 /obj/structure/machinery/alarm/proc/cut(wireColor) - var/wireFlag = AAlarmWireColorToFlag[wireColor] - var/wireIndex = AAlarmWireColorToIndex[wireColor] + var/wireFlag = GLOB.AAlarmWireColorToFlag[wireColor] + var/wireIndex = GLOB.AAlarmWireColorToIndex[wireColor] AAlarmwires &= ~wireFlag switch(wireIndex) if(AALARM_WIRE_IDSCAN) @@ -431,12 +427,10 @@ return /obj/structure/machinery/alarm/proc/mend(wireColor) - var/wireFlag = AAlarmWireColorToFlag[wireColor] - var/wireIndex = AAlarmWireColorToIndex[wireColor] //not used in this function + var/wireFlag = GLOB.AAlarmWireColorToFlag[wireColor] + var/wireIndex = GLOB.AAlarmWireColorToIndex[wireColor] //not used in this function AAlarmwires |= wireFlag switch(wireIndex) - if(AALARM_WIRE_IDSCAN) - if(AALARM_WIRE_POWER) shorted = 0 shock(usr, 50) @@ -451,7 +445,7 @@ /obj/structure/machinery/alarm/proc/pulse(wireColor) //var/wireFlag = AAlarmWireColorToFlag[wireColor] //not used in this function - var/wireIndex = AAlarmWireColorToIndex[wireColor] + var/wireIndex = GLOB.AAlarmWireColorToIndex[wireColor] switch(wireIndex) if(AALARM_WIRE_IDSCAN) //unlocks for 30 seconds, if you have a better way to hack I'm all ears locked = 0 @@ -533,7 +527,7 @@ "Black" = 5, ) for(var/wiredesc in wirecolors) - var/is_uncut = AAlarmwires & AAlarmWireColorToFlag[wirecolors[wiredesc]] + var/is_uncut = AAlarmwires & GLOB.AAlarmWireColorToFlag[wirecolors[wiredesc]] t1 += "[wiredesc] wire: " if(!is_uncut) t1 += "Mend" @@ -578,14 +572,14 @@ var/pressure_dangerlevel = get_danger_level(environment_pressure, current_settings) current_settings = TLV["temperature"] - var/enviroment_temperature = location.return_temperature() - var/temperature_dangerlevel = get_danger_level(enviroment_temperature, current_settings) + var/environment_temperature = location.return_temperature() + var/temperature_dangerlevel = get_danger_level(environment_temperature, current_settings) output += {" Pressure: [environment_pressure]kPa
"} - output += "Temperature: [enviroment_temperature]K ([round(enviroment_temperature - T0C, 0.1)]C)
" + output += "Temperature: [environment_temperature]K ([round(environment_temperature - T0C, 0.1)]C)
" //'Local Status' should report the LOCAL status, damnit. output += "Local Status: " diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 7e548d02d919..d62d688fcfc5 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -90,7 +90,7 @@ update_flag density = FALSE update_icon() -/obj/structure/machinery/portable_atmospherics/canister/bullet_act(obj/item/projectile/Proj) +/obj/structure/machinery/portable_atmospherics/canister/bullet_act(obj/projectile/Proj) if(Proj.ammo.damage) update_health(round(Proj.ammo.damage / 2)) ..() @@ -98,12 +98,12 @@ update_flag /obj/structure/machinery/portable_atmospherics/canister/attackby(obj/item/W as obj, mob/user as mob) if(!HAS_TRAIT(W, TRAIT_TOOL_WRENCH) && !istype(W, /obj/item/tank) && !istype(W, /obj/item/device/analyzer)) - visible_message(SPAN_DANGER("[user] hits the [src] with a [W]!")) + visible_message(SPAN_DANGER("[user] hits [src] with [W]!")) update_health(W.force) src.add_fingerprint(user) ..() - nanomanager.update_uis(src) // Update all NanoUIs attached to src + SSnano.nanomanager.update_uis(src) // Update all NanoUIs attached to src /obj/structure/machinery/portable_atmospherics/canister/attack_remote(mob/user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/atmoalter/scrubber.dm b/code/game/machinery/atmoalter/scrubber.dm index 0af38cacd75e..1c240fb05dfb 100644 --- a/code/game/machinery/atmoalter/scrubber.dm +++ b/code/game/machinery/atmoalter/scrubber.dm @@ -18,16 +18,14 @@ PF.flags_can_pass_all = PASS_OVER|PASS_AROUND|PASS_UNDER /obj/structure/machinery/portable_atmospherics/powered/scrubber/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return if(prob(50/severity)) on = !on update_icon() - ..(severity) - /obj/structure/machinery/portable_atmospherics/powered/scrubber/update_icon() src.overlays = 0 diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 7a10a3ffa1df..6ccb0b5b18f7 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -284,7 +284,7 @@ return //Dismantle the frame. - if(istype(O, /obj/item/tool/crowbar)) + if(HAS_TRAIT(O, TRAIT_TOOL_CROWBAR)) dismantle() return diff --git a/code/game/machinery/autolathe_datums.dm b/code/game/machinery/autolathe_datums.dm index 02de2b200821..e11fc2d4844d 100644 --- a/code/game/machinery/autolathe_datums.dm +++ b/code/game/machinery/autolathe_datums.dm @@ -267,12 +267,6 @@ hidden = TRUE category = AUTOLATHE_CATEGORY_DEVICES_AND_COMPONENTS -/datum/autolathe/recipe/welder_industrial - name = "industrial blowtorch" - path = /obj/item/tool/weldingtool/largetank - hidden = TRUE - category = AUTOLATHE_CATEGORY_TOOLS - /datum/autolathe/recipe/handcuffs name = "handcuffs" path = /obj/item/handcuffs @@ -422,10 +416,6 @@ name = "bonesetter" path = /obj/item/tool/surgery/bonesetter -/datum/autolathe/recipe/medilathe/bonegel - name = "bone gel" - path = /obj/item/tool/surgery/bonegel - /datum/autolathe/recipe/medilathe/fixovein name = "FixOVein" path = /obj/item/tool/surgery/FixOVein diff --git a/code/game/machinery/bio-dome_floodlights.dm b/code/game/machinery/bio-dome_floodlights.dm index 488cf1ed79cc..e23dbcc023f4 100644 --- a/code/game/machinery/bio-dome_floodlights.dm +++ b/code/game/machinery/bio-dome_floodlights.dm @@ -14,7 +14,7 @@ /obj/structure/machinery/hydro_floodlight_switch/Initialize(mapload, ...) . = ..() - for(var/obj/structure/machinery/hydro_floodlight/F in machines) + for(var/obj/structure/machinery/hydro_floodlight/F in GLOB.machines) floodlist += F F.fswitch = src start_processing() @@ -60,9 +60,9 @@ spawn(rand(0,50)) if(F.is_lit) //Shut it down - F.SetLuminosity(0) + F.set_light(0) else - F.SetLuminosity(F.lum_value) + F.set_light(F.lum_value) F.is_lit = !(F.is_lit) F.update_icon() return 0 @@ -101,7 +101,6 @@ if(fswitch?.floodlist) fswitch.floodlist -= src fswitch = null - SetLuminosity(0) return ..() /obj/structure/machinery/hydro_floodlight/update_icon() @@ -130,7 +129,7 @@ user.visible_message(SPAN_NOTICE("[user] finishes welding [src]'s damage."), \ SPAN_NOTICE("You finish welding [src]'s damage.")) if(is_lit) - SetLuminosity(lum_value) + set_light(lum_value) update_icon() return 1 else @@ -161,7 +160,7 @@ if(do_after(user, 50, INTERRUPT_ALL, BUSY_ICON_HOSTILE) && !damaged) //Not when it's already damaged. if(!src) return 0 damaged = 1 - SetLuminosity(0) + set_light(0) user.visible_message(SPAN_DANGER("[user] slashes up [src]!"), SPAN_DANGER("You slash up [src]!")) playsound(src, 'sound/weapons/blade1.ogg', 25, 1) diff --git a/code/game/machinery/biohazard_lockdown.dm b/code/game/machinery/biohazard_lockdown.dm new file mode 100644 index 000000000000..2e3cbf6de234 --- /dev/null +++ b/code/game/machinery/biohazard_lockdown.dm @@ -0,0 +1,108 @@ +#define LOCKDOWN_READY 0 +#define LOCKDOWN_ACTIVE 1 +GLOBAL_VAR_INIT(lockdown_state, LOCKDOWN_READY) + +/obj/structure/machinery/biohazard_lockdown + name = "Emergency Containment Breach" + icon_state = "big_red_button_tablev" + unslashable = TRUE + unacidable = TRUE + COOLDOWN_DECLARE(containment_lockdown) + +/obj/structure/machinery/biohazard_lockdown/ex_act(severity) + return FALSE + +/obj/structure/machinery/biohazard_lockdown/attack_remote(mob/user as mob) + return FALSE + +/obj/structure/machinery/biohazard_lockdown/attack_alien(mob/user as mob) + return FALSE + +/obj/structure/machinery/biohazard_lockdown/attackby(obj/item/attacking_item, mob/user) + return attack_hand(user) + +/obj/structure/machinery/biohazard_lockdown/attack_hand(mob/living/user) + if(isxeno(user)) + return FALSE + if(!allowed(user)) + to_chat(user, SPAN_DANGER("Access Denied")) + flick(initial(icon_state) + "-denied", src) + return FALSE + + if(!COOLDOWN_FINISHED(src, containment_lockdown)) + to_chat(user, SPAN_BOLDWARNING("Biohazard Lockdown procedures are on cooldown! They will be ready in [COOLDOWN_SECONDSLEFT(src, containment_lockdown)] seconds!")) + return FALSE + + add_fingerprint(user) + biohazard_lockdown(user) + COOLDOWN_START(src, containment_lockdown, 5 MINUTES) + +/obj/structure/machinery/door/poddoor/almayer/biohazard + name = "Biohazard Containment Airlock" + density = FALSE + +/obj/structure/machinery/door/poddoor/almayer/biohazard/Initialize() + . = ..() + RegisterSignal(SSdcs, COMSIG_GLOB_RESEARCH_LOCKDOWN, PROC_REF(close)) + RegisterSignal(SSdcs, COMSIG_GLOB_RESEARCH_LIFT, PROC_REF(open)) + +/obj/structure/machinery/door/poddoor/almayer/biohazard/white + icon_state = "w_almayer_pdoor1" + base_icon_state = "w_almayer_pdoor" + +/client/proc/admin_biohazard_alert() + set name = "Containment Breach Alert" + set category = "Admin.Ship" + + if(!admin_holder ||!check_rights(R_EVENT)) + return FALSE + + var/prompt = tgui_alert(src, "Are you sure you want to trigger a containment breach alert? This will force red alert, and lockdown research.", "Choose.", list("Yes", "No"), 20 SECONDS) + if(prompt != "Yes") + return FALSE + + prompt = tgui_alert(src, "Do you want to use a custom announcement?", "Choose.", list("Yes", "No"), 20 SECONDS) + if(prompt == "Yes") + var/whattoannounce = tgui_input_text(src, "Please enter announcement text.", "what?") + biohazard_lockdown(usr, whattoannounce, TRUE) + else + biohazard_lockdown(usr, admin = TRUE) + return TRUE + +/proc/biohazard_lockdown(mob/user, message, admin = FALSE) + if(IsAdminAdvancedProcCall()) + return PROC_BLOCKED + + var/log = "[key_name(user)] triggered research bio lockdown!" + var/ares_log = "[user.name] triggered Medical Research Biohazard Containment Lockdown." + if(!message) + message = "ATTENTION! \n\nBIOHAZARD CONTAINMENT BREACH. \n\nRESEARCH DEPARTMENT UNDER LOCKDOWN." + else + log = "[key_name(user)] triggered research bio lockdown! (Using a custom announcement)." + if(admin) + log += " (Admin Triggered)." + ares_log = "[MAIN_AI_SYSTEM] triggered Medical Research Biohazard Containment Lockdown." + + switch(GLOB.lockdown_state) + if(LOCKDOWN_READY) + GLOB.lockdown_state = LOCKDOWN_ACTIVE + set_security_level(SEC_LEVEL_RED, TRUE, FALSE) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_RESEARCH_LOCKDOWN) + if(LOCKDOWN_ACTIVE) + GLOB.lockdown_state = LOCKDOWN_READY + message = "ATTENTION! \n\nBIOHAZARD CONTAINMENT LOCKDOWN LIFTED." + log = "[key_name(user)] lifted research bio lockdown!" + ares_log = "[user.name] lifted Medical Research Biohazard Containment Lockdown." + if(admin) + log += " (Admin Triggered)." + ares_log = "[MAIN_AI_SYSTEM] lifted Medical Research Biohazard Containment Lockdown." + + set_security_level(SEC_LEVEL_BLUE, TRUE, FALSE) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_RESEARCH_LIFT) + + shipwide_ai_announcement(message, MAIN_AI_SYSTEM, 'sound/effects/biohazard.ogg') + message_admins(log) + log_ares_security("Containment Lockdown", ares_log) + +#undef LOCKDOWN_READY +#undef LOCKDOWN_ACTIVE diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm index 81d498ba02e2..65f6fe1842f4 100644 --- a/code/game/machinery/bioprinter.dm +++ b/code/game/machinery/bioprinter.dm @@ -113,6 +113,10 @@ switch(action) if("print") + if(working) + //If we're already printing something then we're too busy to multi task. + to_chat(usr, SPAN_NOTICE("[src] is busy at the moment.")) + return FALSE var/recipe = params["recipe_id"] var/valid_recipe = FALSE for(var/datum/bioprinter_recipe/product_recipes in products) @@ -124,6 +128,10 @@ message_admins("[key_name(usr)] attempted to print an invalid recipe on \the [src].") return FALSE var/datum/bioprinter_recipe/recipe_datum = new recipe + if(stored_metal < recipe_datum.metal) + to_chat(usr, SPAN_NOTICE("[src] does not have enough stored metal.")) + QDEL_NULL(recipe_datum) + return FALSE stored_metal -= recipe_datum.metal to_chat(usr, SPAN_NOTICE("\The [src] is now printing the selected organ. Please hold.")) working = TRUE @@ -146,6 +154,8 @@ /obj/structure/machinery/bioprinter/proc/print_limb(limb_path) if(inoperable()) + //In case we lose power or anything between the print and the callback we don't want to permenantly break the printer + working = FALSE return new limb_path(get_turf(src)) working = FALSE diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm index aff1efa3de66..46050d2705b3 100644 --- a/code/game/machinery/bots/bots.dm +++ b/code/game/machinery/bots/bots.dm @@ -3,7 +3,8 @@ /obj/structure/machinery/bot icon = 'icons/obj/structures/machinery/aibots.dmi' layer = MOB_LAYER - luminosity = 3 + light_system = MOVABLE_LIGHT + light_range = 3 use_power = USE_POWER_NONE var/obj/item/card/id/botcard // the ID card that the bot "holds" var/on = 1 @@ -15,6 +16,12 @@ var/open = 0//Maint panel var/locked = 1 +/obj/structure/machinery/bot/Initialize(mapload, ...) + . = ..() + + if(light_range) + set_light_on(TRUE) + /obj/structure/machinery/bot/Destroy() QDEL_NULL(botcard) . = ..() @@ -24,12 +31,12 @@ if(stat) return 0 on = 1 - SetLuminosity(initial(luminosity)) + set_light(initial(luminosity)) return 1 /obj/structure/machinery/bot/proc/turn_off() on = 0 - SetLuminosity(0) + set_light(0) /obj/structure/machinery/bot/proc/explode() qdel(src) @@ -38,10 +45,6 @@ if(health <= 0) explode() -/obj/structure/machinery/bot/Destroy() - SetLuminosity(0) - . = ..() - /obj/structure/machinery/bot/get_examine_text(mob/user) . = ..() if(health < maxhealth) @@ -89,7 +92,7 @@ else ..() -/obj/structure/machinery/bot/bullet_act(obj/item/projectile/Proj) +/obj/structure/machinery/bot/bullet_act(obj/projectile/Proj) health -= Proj.ammo.damage ..() healthcheck() @@ -111,6 +114,7 @@ /obj/structure/machinery/bot/emp_act(severity) + . = ..() var/was_on = on stat |= EMPED new /obj/effect/overlay/temp/emp_sparks (loc) @@ -147,7 +151,7 @@ /turf/proc/CardinalTurfsWithAccess(obj/item/card/id/ID) var/L[] = new() - for(var/d in cardinal) + for(var/d in GLOB.cardinals) var/turf/T = get_step(src, d) if(istype(T) && !T.density) if(!LinkBlockedWithAccess(src, T, ID)) diff --git a/code/game/machinery/bots/cleanbot.dm b/code/game/machinery/bots/cleanbot.dm index e2dcf7ffb1db..c21a7a854bc3 100644 --- a/code/game/machinery/bots/cleanbot.dm +++ b/code/game/machinery/bots/cleanbot.dm @@ -37,8 +37,8 @@ should_patrol = 1 src.botcard = new(src) - if(RoleAuthority) - var/datum/job/ctequiv = RoleAuthority.roles_by_name[JOB_CARGO_TECH] + if(GLOB.RoleAuthority) + var/datum/job/ctequiv = GLOB.RoleAuthority.roles_by_name[JOB_CARGO_TECH] if(ctequiv) botcard.access = ctequiv.get_access() src.locked = 0 // Start unlocked so roboticist can set them to patrol. diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm index f28a15ea1893..77e890d88d34 100644 --- a/code/game/machinery/bots/medbot.dm +++ b/code/game/machinery/bots/medbot.dm @@ -63,7 +63,7 @@ src.botcard = new /obj/item/card/id(src) if(isnull(src.botcard_access) || (src.botcard_access.len < 1)) - var/datum/job/J = RoleAuthority ? RoleAuthority.roles_by_path[/datum/job/civilian/doctor] : new /datum/job/civilian/doctor + var/datum/job/J = GLOB.RoleAuthority ? GLOB.RoleAuthority.roles_by_path[/datum/job/civilian/doctor] : new /datum/job/civilian/doctor botcard.access = J.get_access() else src.botcard.access = src.botcard_access diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index b70829c708ed..0686759f0edd 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -70,8 +70,8 @@ /obj/structure/machinery/bot/mulebot/Initialize(mapload, ...) . = ..() botcard = new(src) - if(RoleAuthority) - var/datum/job/ctequiv = RoleAuthority.roles_by_name[JOB_CARGO_TECH] + if(GLOB.RoleAuthority) + var/datum/job/ctequiv = GLOB.RoleAuthority.roles_by_name[JOB_CARGO_TECH] if(ctequiv) botcard.access = ctequiv.get_access() cell = new(src) @@ -83,7 +83,7 @@ SSradio.add_object(src, beacon_freq, filter = RADIO_NAVBEACONS) var/count = 0 - for(var/obj/structure/machinery/bot/mulebot/other in machines) + for(var/obj/structure/machinery/bot/mulebot/other in GLOB.machines) count++ if(!suffix) suffix = "#[count]" @@ -284,7 +284,7 @@ return if (usr.stat) return - if ((in_range(src, usr) && istype(src.loc, /turf)) || (ishighersilicon(usr))) + if ((in_range(src, usr) && istype(src.loc, /turf)) || (isSilicon(usr))) usr.set_interaction(src) switch(href_list["op"]) @@ -551,7 +551,7 @@ var/speed = ((wires & WIRE_MOTOR1) ? 1:0) + ((wires & WIRE_MOTOR2) ? 2:0) switch(speed) if(0) - // do nothing + pass() if(1) process_bot() spawn(2) @@ -756,14 +756,10 @@ if(!(wires & WIRE_MOBAVOID)) //usually just bumps, but if avoidance disabled knock over mobs var/mob/M = A if(ismob(M)) - if(isborg(M)) - src.visible_message(SPAN_DANGER("[src] bumps into [M]!")) - else - src.visible_message(SPAN_DANGER("[src] knocks over [M]!")) - M.stop_pulling() - M.apply_effect(8, STUN) - M.apply_effect(5, WEAKEN) - M.lying = 1 + src.visible_message(SPAN_DANGER("[src] knocks over [M]!")) + M.stop_pulling() + M.apply_effect(8, STUN) + M.apply_effect(5, WEAKEN) ..() /obj/structure/machinery/bot/mulebot/alter_health() @@ -916,11 +912,11 @@ post_signal_multiple(control_freq, kv) /obj/structure/machinery/bot/mulebot/emp_act(severity) + . = ..() if (cell) cell.emp_act(severity) if(load) load.emp_act(severity) - ..() /obj/structure/machinery/bot/mulebot/explode() diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index ee83c430c2db..8d4b27778c69 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -1,15 +1,3 @@ -/obj/structure/machinery/driver_button - name = "mass driver button" - icon = 'icons/obj/objects.dmi' - icon_state = "launcherbtt" - desc = "A remote control switch for a mass driver." - var/id = null - var/active = 0 - anchored = TRUE - use_power = USE_POWER_IDLE - idle_power_usage = 2 - active_power_usage = 4 - /obj/structure/machinery/ignition_switch name = "ignition switch" icon = 'icons/obj/objects.dmi' diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 20208a573c61..d8919967dd65 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -35,8 +35,17 @@ var/colony_camera_mapload = TRUE + /// If this camera should have innate EMP-proofing + var/emp_proof = FALSE + + ///Autonaming + var/autoname = FALSE + var/autonumber = 0 //camera number in area + +GLOBAL_LIST_EMPTY_TYPED(all_cameras, /obj/structure/machinery/camera) /obj/structure/machinery/camera/Initialize(mapload, ...) . = ..() + GLOB.all_cameras += src WireColorToFlag = randomCameraWires() assembly = new(src) assembly.state = 4 @@ -55,13 +64,39 @@ set_pixel_location() update_icon() + //This camera automatically sets it's name to whatever the area that it's in is called. + if(autoname) + autonumber = 1 + var/area/my_area = get_area(src) + if(my_area) + for(var/obj/structure/machinery/camera/autoname/current_camera in GLOB.machines) + if(current_camera == src) + continue + var/area/current_camera_area = get_area(current_camera) + if(current_camera_area.type != my_area.type) + continue + + if(!current_camera.autonumber) + continue + + autonumber = max(autonumber, current_camera.autonumber + 1) + c_tag = "[my_area.name] #[autonumber]" + /obj/structure/machinery/camera/Destroy() + GLOB.all_cameras -= src . = ..() QDEL_NULL(assembly) /obj/structure/machinery/camera/update_icon() . = ..() - if(icon_state == "autocam_editor") + // If the camera has been EMPed. + if(stat & EMPED) + icon_state = "cameraemp" + // If the camera isn't EMPed, but is disabled. + else if(!status) + icon_state = "camera1" + // Otherwise, just give it the normal animated `icon_state`. + else icon_state = "camera" /obj/structure/machinery/camera/set_pixel_location() @@ -72,25 +107,28 @@ if(WEST) pixel_x = 27 /obj/structure/machinery/camera/emp_act(severity) - if(!isEmpProof()) - if(prob(100/severity)) - icon_state = "[initial(icon_state)]emp" - var/list/previous_network = network - network = list() - cameranet.removeCamera(src) - stat |= EMPED - SetLuminosity(0) - triggerCameraAlarm() - spawn(900) - network = previous_network - icon_state = initial(icon_state) - stat &= ~EMPED - cancelCameraAlarm() - if(can_use()) - cameranet.addCamera(src) - kick_viewers() - ..() + . = ..() + // If the camera is EMP proof, or it passed the RNG check. + if(isEmpProof() || !prob(100 / severity)) + return + var/list/previous_network = network + network = list() + GLOB.all_cameras -= src + stat |= EMPED + update_icon() + set_light(0) + triggerCameraAlarm() + kick_viewers() + addtimer(CALLBACK(src, PROC_REF(undo_emp), previous_network), 90 SECONDS) + +/obj/structure/machinery/camera/proc/undo_emp(previous_network) + network = previous_network + stat &= ~EMPED + update_icon() + cancelCameraAlarm() + if(can_use()) + GLOB.all_cameras += src /obj/structure/machinery/camera/ex_act(severity) if(src.invuln) @@ -101,7 +139,6 @@ /obj/structure/machinery/camera/proc/setViewRange(num = 7) src.view_range = num - cameranet.updateVisibility(src, 0) /obj/structure/machinery/camera/attack_hand(mob/living/carbon/human/user as mob) @@ -163,16 +200,6 @@ if (S.current == src) to_chat(O, "[U] holds \a [itemname] up to one of the cameras ...") show_browser(O, info, itemname, itemname) - else if (istype(W, /obj/item/device/camera_bug)) - if (!src.can_use()) - to_chat(user, SPAN_NOTICE(" Camera non-functional")) - return - if (src.bugged) - to_chat(user, SPAN_NOTICE(" Camera bug removed.")) - src.bugged = 0 - else - to_chat(user, SPAN_NOTICE(" Camera bugged.")) - src.bugged = 1 else ..() return @@ -186,10 +213,7 @@ visible_message(SPAN_WARNING("[user] has reactivated [src]!")) else visible_message(SPAN_WARNING("[user] has deactivated [src]!")) - if(status) - icon_state = initial(icon_state) - else - icon_state = "[initial(icon_state)]1" + update_icon() // now disconnect anyone using the camera //Apparently, this will disconnect anyone even if the camera was re-activated. //I guess that doesn't matter since they can't use it anyway? @@ -206,15 +230,10 @@ to_chat(O, "The screen bursts into static.") /obj/structure/machinery/camera/proc/triggerCameraAlarm() - alarm_on = 1 - for(var/mob/living/silicon/S in GLOB.mob_list) - S.triggerAlarm("Camera", get_area(src), list(src), src) - + alarm_on = TRUE /obj/structure/machinery/camera/proc/cancelCameraAlarm() - alarm_on = 0 - for(var/mob/living/silicon/S in GLOB.mob_list) - S.cancelAlarm("Camera", get_area(src), src) + alarm_on = FALSE /obj/structure/machinery/camera/proc/can_use() if(!status) diff --git a/code/game/machinery/camera/motion.dm b/code/game/machinery/camera/motion.dm index 41aa7fa32707..6a869f443d12 100644 --- a/code/game/machinery/camera/motion.dm +++ b/code/game/machinery/camera/motion.dm @@ -23,7 +23,6 @@ // If not detecting with motion camera... /obj/structure/machinery/camera/proc/newTarget(mob/target) - if (isAI(target)) return 0 if (detectTime == 0) detectTime = world.time // start the clock if (!(target in motionTargets)) @@ -39,9 +38,6 @@ /obj/structure/machinery/camera/proc/cancelAlarm() if (!status || (stat & NOPOWER)) return 0 - if (detectTime == -1) - for (var/mob/living/silicon/aiPlayer in ai_mob_list) - aiPlayer.cancelAlarm("Motion", get_area(src), src) detectTime = 0 return 1 @@ -49,7 +45,5 @@ if (!status || (stat & NOPOWER)) return 0 if (!detectTime) return 0 - for (var/mob/living/silicon/aiPlayer in ai_mob_list) - aiPlayer.triggerAlarm("Motion", get_area(src), list(src), src) detectTime = -1 return 1 diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm index 1a15d40eba9c..103e3f709afe 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -30,6 +30,7 @@ network = list(CAMERA_NET_LASER_TARGETS) unslashable = TRUE unacidable = TRUE + emp_proof = TRUE /obj/structure/machinery/camera/laser_cam/Initialize(mapload, laser_name) . = ..() @@ -37,8 +38,6 @@ var/area/A = get_area(src) c_tag = "[laser_name] ([A.name])" -/obj/structure/machinery/camera/laser_cam/emp_act(severity) - return //immune to EMPs, just in case /obj/structure/machinery/camera/laser_cam/ex_act() return @@ -71,21 +70,7 @@ // AUTONAME /obj/structure/machinery/camera/autoname - var/number = 0 //camera number in area - -//This camera type automatically sets it's name to whatever the area that it's in is called. -/obj/structure/machinery/camera/autoname/Initialize(mapload, ...) - . = ..() - number = 1 - var/area/A = get_area(src) - if(A) - for(var/obj/structure/machinery/camera/autoname/C in machines) - if(C == src) continue - var/area/CA = get_area(C) - if(CA.type == A.type) - if(C.number) - number = max(number, C.number+1) - c_tag = "[A.name] #[number]" + autoname = TRUE //cameras installed inside the dropships, accessible via both cockpit monitor and Almayer camera computers /obj/structure/machinery/camera/autoname/almayer/dropship_one @@ -110,6 +95,10 @@ /obj/structure/machinery/camera/autoname/almayer/containment/hidden network = list(CAMERA_NET_CONTAINMENT_HIDDEN) +/obj/structure/machinery/camera/autoname/almayer/containment/ares + name = "ares core camera" + network = list(CAMERA_NET_ALMAYER, CAMERA_NET_ARES) + //used by the landing camera dropship equipment. Do not place them right under where the dropship lands. //Should place them near each corner of your LZs. /obj/structure/machinery/camera/autoname/lz_camera @@ -121,9 +110,7 @@ invisibility = 101 //fuck you init() colony_camera_mapload = FALSE - -/obj/structure/machinery/camera/autoname/lz_camera/emp_act(severity) - return //immune to EMPs, just in case + emp_proof = TRUE /obj/structure/machinery/camera/autoname/lz_camera/ex_act() return @@ -133,7 +120,7 @@ /obj/structure/machinery/camera/proc/isEmpProof() var/O = locate(/obj/item/stack/sheet/mineral/osmium) in assembly.upgrades - return O + return O || emp_proof /obj/structure/machinery/camera/proc/isXRay() var/obj/item/stock_parts/scanning_module/O = locate(/obj/item/stock_parts/scanning_module) in assembly.upgrades diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm deleted file mode 100644 index 806664e012de..000000000000 --- a/code/game/machinery/camera/tracking.dm +++ /dev/null @@ -1,247 +0,0 @@ -/mob/living/silicon/ai/var/max_locations = 10 -/mob/living/silicon/ai/var/stored_locations[0] - -/mob/living/silicon/ai/proc/InvalidTurf(turf/T as turf) - if(!T) - return 1 - if(is_admin_level(T.z)) - return 1 - if(T.z > 6) - return 1 - return 0 - -/mob/living/silicon/ai/proc/get_camera_list() - - if(src.stat == 2) - return - - var/list/L = list() - for (var/obj/structure/machinery/camera/C in cameranet.cameras) - L.Add(C) - - camera_sort(L) - - var/list/T = list() - T["Cancel"] = "Cancel" - for (var/obj/structure/machinery/camera/C in L) - T[text("[][]", C.c_tag, (C.can_use() ? null : " (Deactivated)"))] = C - - track = new() - track.cameras = T - return T - - -/mob/living/silicon/ai/proc/ai_camera_list(camera in get_camera_list()) - set category = "AI Commands" - set name = "Show Camera List" - - if(src.stat == 2) - to_chat(src, "You can't list the cameras because you are dead!") - return - - if (!camera || camera == "Cancel") - return 0 - - var/obj/structure/machinery/camera/C = track.cameras[camera] - src.eyeobj.setLoc(C) - - return - -/mob/living/silicon/ai/proc/ai_store_location(newloc as text) - set category = "AI Commands" - set name = "Store Camera Location" - set desc = "Stores your current camera location by the given name" - - newloc = copytext(sanitize(loc), 1, MAX_MESSAGE_LEN) - if(!newloc) - to_chat(src, SPAN_DANGER("Must supply a location name")) - return - - if(stored_locations.len >= max_locations) - to_chat(src, SPAN_DANGER("Cannot store additional locations. Remove one first")) - return - - if(newloc in stored_locations) - to_chat(src, SPAN_DANGER("There is already a stored location by this name")) - return - - var/L = src.eyeobj.getLoc() - if (InvalidTurf(get_turf(L))) - to_chat(src, SPAN_DANGER("Unable to store this location")) - return - - stored_locations[newloc] = L - to_chat(src, "Location '[newloc]' stored") - -/mob/living/silicon/ai/proc/sorted_stored_locations() - return sortList(stored_locations) - -/mob/living/silicon/ai/proc/ai_goto_location(loc in sorted_stored_locations()) - set category = "AI Commands" - set name = "Goto Camera Location" - set desc = "Returns to the selected camera location" - - if (!(loc in stored_locations)) - to_chat(src, SPAN_DANGER("Location [loc] not found")) - return - - var/L = stored_locations[loc] - src.eyeobj.setLoc(L) - -/mob/living/silicon/ai/proc/ai_remove_location(loc in sorted_stored_locations()) - set category = "AI Commands" - set name = "Delete Camera Location" - set desc = "Deletes the selected camera location" - - if (!(loc in stored_locations)) - to_chat(src, SPAN_DANGER("Location [loc] not found")) - return - - stored_locations.Remove(loc) - to_chat(src, "Location [loc] removed") - -// Used to allow the AI is write in mob names/camera name from the CMD line. -/datum/trackable - var/list/names = list() - var/list/namecounts = list() - var/list/humans = list() - var/list/others = list() - var/list/cameras = list() - -/mob/living/silicon/ai/proc/trackable_mobs() - - if(usr.stat == 2) - return list() - - var/datum/trackable/TB = new() - for(var/i in GLOB.living_mob_list) - var/mob/living/M = i - // Easy checks first. - // Don't detect mobs on Centcom. Since the wizard den is on Centcomm, we only need this. - if(InvalidTurf(get_turf(M))) - continue - if(M == usr) - continue - if(M.invisibility)//cloaked - continue - - // Human check - var/human = 0 - if(istype(M, /mob/living/carbon/human)) - human = 1 - var/mob/living/carbon/human/H = M - //Cameras can't track people wearing an agent card or a ninja hood. - if(H.wear_id && istype(H.wear_id.GetID(), /obj/item/card/id/syndicate)) - continue - - // Now, are they viewable by a camera? (This is last because it's the most intensive check) - if(!near_camera(M)) - continue - - var/name = M.name - if (name in TB.names) - TB.namecounts[name]++ - name = text("[] ([])", name, TB.namecounts[name]) - else - TB.names.Add(name) - TB.namecounts[name] = 1 - if(human) - TB.humans[name] = M - else - TB.others[name] = M - - var/list/targets = sortList(TB.humans) + sortList(TB.others) - src.track = TB - return targets - -/mob/living/silicon/ai/proc/ai_camera_track(target_name in trackable_mobs()) - set category = "AI Commands" - set name = "Track With Camera" - set desc = "Select who you would like to track." - - if(src.stat == 2) - to_chat(src, "You can't track with camera because you are dead!") - return - if(!target_name) - src.cameraFollow = null - - var/mob/target = (isnull(track.humans[target_name]) ? track.others[target_name] : track.humans[target_name]) - src.track = null - ai_actual_track(target) - -/mob/living/silicon/ai/proc/ai_cancel_tracking(forced = 0) - if(!cameraFollow) - return - - to_chat(src, "Follow camera mode [forced ? "terminated" : "ended"].") - cameraFollow = null - -/mob/living/silicon/ai/proc/ai_actual_track(mob/living/target as mob) - if(!istype(target)) return - var/mob/living/silicon/ai/U = usr - - U.cameraFollow = target - //U << text("Now tracking [] on camera.", target.name) - //if (U.interactee == null) - // U.set_interaction(U) - to_chat(U, "Now tracking [target.name] on camera.") - - spawn (0) - while (U.cameraFollow == target) - if (U.cameraFollow == null) - return - if (istype(target, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = target - if(H.wear_id && istype(H.wear_id.GetID(), /obj/item/card/id/syndicate)) - U.ai_cancel_tracking(1) - return - - if (!near_camera(target)) - to_chat(U, "Target is not near any active cameras.") - sleep(100) - continue - - if(U.eyeobj) - U.eyeobj.setLoc(get_turf(target), 0) - else - view_core() - return - sleep(10) - -/proc/near_camera(mob/living/M) - if (!isturf(M.loc)) - return 0 - if(isrobot(M)) - var/mob/living/silicon/robot/R = M - if(!(R.camera && R.camera.can_use()) && !cameranet.checkCameraVis(M)) - return 0 - else if(!cameranet.checkCameraVis(M)) - return 0 - return 1 - -/obj/structure/machinery/camera/attack_remote(mob/living/silicon/ai/user as mob) - if (!istype(user)) - return - if (!src.can_use()) - return - user.eyeobj.setLoc(get_turf(src)) - - -/mob/living/silicon/ai/attack_remote(mob/user as mob) - ai_camera_list() - -/proc/camera_sort(list/L) // TODO: replace this bubblesort with a mergesort - spookydonut - var/obj/structure/machinery/camera/a - var/obj/structure/machinery/camera/b - - for (var/i = L.len, i > 0, i--) - for (var/j = 1 to i - 1) - a = L[j] - b = L[j + 1] - if (a.c_tag_order != b.c_tag_order) - if (a.c_tag_order > b.c_tag_order) - L.Swap(j, j + 1) - else - if (sorttext(a.c_tag, b.c_tag) < 0) - L.Swap(j, j + 1) - return L diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index fcd8c65e93ca..eb7a501fa078 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -80,11 +80,11 @@ return /obj/structure/machinery/cell_charger/emp_act(severity) + . = ..() if(inoperable()) return if(charging) charging.emp_act(severity) - ..(severity) /obj/structure/machinery/cell_charger/process() diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index 03dbe299b1f7..58b3d8ea5e64 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -22,7 +22,7 @@ . = ..() icon_state = "grass[pick("1","2","3","4")]" update_icon() - for(var/direction in cardinal) + for(var/direction in GLOB.cardinals) if(istype(get_step(src, direction), /turf/open/floor)) var/turf/open/floor/FF = get_step(src,direction) FF.update_icon() //so siding get updated properly @@ -77,9 +77,6 @@ to_chat(user, "It's a holotable! There are no bolts!") return - if(isborg(user)) - return - ..() /obj/structure/surface/table/holotable/wood @@ -148,29 +145,29 @@ return M.forceMove(loc) M.apply_effect(5, WEAKEN) - for(var/obj/structure/machinery/scoreboard/X in machines) + for(var/obj/structure/machinery/scoreboard/X in GLOB.machines) if(X.id == id) X.score(side, 3)// 3 points for dunking a mob // no break, to update multiple scoreboards - visible_message(SPAN_DANGER("[user] dunks [M] into the [src]!")) + visible_message(SPAN_DANGER("[user] dunks [M] into [src]!")) return else if (istype(W, /obj/item) && get_dist(src,user)<2) user.drop_inv_item_to_loc(W, loc) - for(var/obj/structure/machinery/scoreboard/X in machines) + for(var/obj/structure/machinery/scoreboard/X in GLOB.machines) if(X.id == id) X.score(side) // no break, to update multiple scoreboards - visible_message(SPAN_NOTICE("[user] dunks [W] into the [src]!")) + visible_message(SPAN_NOTICE("[user] dunks [W] into [src]!")) return /obj/structure/holohoop/BlockedPassDirs(atom/movable/mover, target_dir) if(istype(mover,/obj/item) && mover.throwing) var/obj/item/I = mover - if(istype(I, /obj/item/projectile)) + if(istype(I, /obj/projectile)) return BLOCKED_MOVEMENT if(prob(50)) I.forceMove(src.loc) - for(var/obj/structure/machinery/scoreboard/X in machines) + for(var/obj/structure/machinery/scoreboard/X in GLOB.machines) if(X.id == id) X.score(side) // no break, to update multiple scoreboards diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm deleted file mode 100644 index fd246d2d640a..000000000000 --- a/code/game/machinery/computer/ai_core.dm +++ /dev/null @@ -1,256 +0,0 @@ -/obj/structure/AIcore - density = TRUE - anchored = FALSE - name = "AI core" - icon = 'icons/obj/structures/machinery/AI.dmi' - icon_state = "hydra-off" - var/state = 0 - var/obj/item/circuitboard/aicore/circuit = null - var/obj/item/device/mmi/brain = null - - -/obj/structure/AIcore/attackby(obj/item/P as obj, mob/user as mob) - switch(state) - if(0) - if(HAS_TRAIT(P, TRAIT_TOOL_WRENCH)) - playsound(loc, 'sound/items/Ratchet.ogg', 25, 1) - if(do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - to_chat(user, SPAN_NOTICE(" You wrench the frame into place.")) - anchored = TRUE - state = 1 - if(iswelder(P)) - var/obj/item/tool/weldingtool/WT = P - if(!HAS_TRAIT(P, TRAIT_TOOL_BLOWTORCH)) - to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) - return - if(!WT.isOn()) - to_chat(user, "The welder must be on for this task.") - return - playsound(loc, 'sound/items/Welder.ogg', 25, 1) - if(do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - if(!src || !WT.remove_fuel(0, user)) return - to_chat(user, SPAN_NOTICE(" You deconstruct the frame.")) - new /obj/item/stack/sheet/plasteel( loc, 4) - qdel(src) - if(1) - if(HAS_TRAIT(P, TRAIT_TOOL_WRENCH)) - playsound(loc, 'sound/items/Ratchet.ogg', 25, 1) - if(do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - to_chat(user, SPAN_NOTICE(" You unfasten the frame.")) - anchored = FALSE - state = 0 - if(istype(P, /obj/item/circuitboard/aicore) && !circuit) - if(user.drop_held_item()) - playsound(loc, 'sound/items/Deconstruct.ogg', 25, 1) - to_chat(user, SPAN_NOTICE(" You place the circuit board inside the frame.")) - icon_state = "1" - circuit = P - P.forceMove(src) - if(HAS_TRAIT(P, TRAIT_TOOL_SCREWDRIVER) && circuit) - playsound(loc, 'sound/items/Screwdriver.ogg', 25, 1) - to_chat(user, SPAN_NOTICE(" You screw the circuit board into place.")) - state = 2 - icon_state = "2" - if(istype(P, /obj/item/tool/crowbar) && circuit) - playsound(loc, 'sound/items/Crowbar.ogg', 25, 1) - to_chat(user, SPAN_NOTICE(" You remove the circuit board.")) - state = 1 - icon_state = "0" - circuit.forceMove(loc) - circuit = null - if(2) - if(HAS_TRAIT(P, TRAIT_TOOL_SCREWDRIVER) && circuit) - playsound(loc, 'sound/items/Screwdriver.ogg', 25, 1) - to_chat(user, SPAN_NOTICE(" You unfasten the circuit board.")) - state = 1 - icon_state = "1" - if(istype(P, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/C = P - if (C.get_amount() < 5) - to_chat(user, SPAN_WARNING("You need five coils of wire to add them to the frame.")) - return - to_chat(user, SPAN_NOTICE("You start to add cables to the frame.")) - playsound(loc, 'sound/items/Deconstruct.ogg', 25, 1) - if (do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD) && state == 2) - if (C.use(5)) - state = 3 - icon_state = "3" - to_chat(user, SPAN_NOTICE("You add cables to the frame.")) - return - if(3) - if(HAS_TRAIT(P, TRAIT_TOOL_WIRECUTTERS)) - if (brain) - to_chat(user, "Get that brain out of there first") - else - playsound(loc, 'sound/items/Wirecutter.ogg', 25, 1) - to_chat(user, SPAN_NOTICE(" You remove the cables.")) - state = 2 - icon_state = "2" - var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc ) - A.amount = 5 - - if(istype(P, /obj/item/stack/sheet/glass/reinforced)) - var/obj/item/stack/sheet/glass/reinforced/RG = P - if (RG.get_amount() < 2) - to_chat(user, SPAN_WARNING("You need two sheets of glass to put in the glass panel.")) - return - to_chat(user, SPAN_NOTICE("You start to put in the glass panel.")) - playsound(loc, 'sound/items/Deconstruct.ogg', 25, 1) - if (do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD) && state == 3) - if(RG.use(2)) - to_chat(user, SPAN_NOTICE("You put in the glass panel.")) - state = 4 - icon_state = "4" - - if(istype(P, /obj/item/device/mmi)) - var/obj/item/device/mmi/mmi - if(!mmi.brainmob) - to_chat(user, SPAN_DANGER("Sticking an empty [mmi] into the frame would sort of defeat the purpose.")) - return - if(mmi.brainmob.stat == 2) - to_chat(user, SPAN_DANGER("Sticking a dead [mmi] into the frame would sort of defeat the purpose.")) - return - - if(jobban_isbanned(mmi.brainmob, "AI")) - to_chat(user, SPAN_DANGER("This [mmi] does not seem to fit.")) - return - - if(user.drop_held_item()) - mmi.forceMove(src) - brain = mmi - to_chat(usr, "Added [mmi].") - icon_state = "3b" - - if(istype(P, /obj/item/tool/crowbar) && brain) - playsound(loc, 'sound/items/Crowbar.ogg', 25, 1) - to_chat(user, SPAN_NOTICE(" You remove the brain.")) - brain.forceMove(loc) - brain = null - icon_state = "3" - - if(4) - if(istype(P, /obj/item/tool/crowbar)) - playsound(loc, 'sound/items/Crowbar.ogg', 25, 1) - to_chat(user, SPAN_NOTICE(" You remove the glass panel.")) - state = 3 - if (brain) - icon_state = "3b" - else - icon_state = "3" - new /obj/item/stack/sheet/glass/reinforced( loc, 2 ) - return - - if(HAS_TRAIT(P, TRAIT_TOOL_SCREWDRIVER)) - playsound(loc, 'sound/items/Screwdriver.ogg', 25, 1) - to_chat(user, SPAN_NOTICE(" You connect the monitor.")) - var/mob/living/silicon/ai/A = new /mob/living/silicon/ai (loc, brain) - if(A) //if there's no brain, the mob is deleted and a structure/AIcore is created - A.rename_self("ai", 1) - qdel(src) - -/obj/structure/AIcore/deactivated - name = "Inactive AI" - icon = 'icons/obj/structures/machinery/AI.dmi' - icon_state = "hydra-off" - anchored = TRUE - state = 20//So it doesn't interact based on the above. Not really necessary. - -/obj/structure/AIcore/deactivated/attackby(obj/item/device/aicard/A as obj, mob/user as mob) - if(istype(A, /obj/item/device/aicard))//Is it? - A.transfer_ai("INACTIVE","AICARD",src,user) - return - -/* -This is a good place for AI-related object verbs so I'm sticking it here. -If adding stuff to this, don't forget that an AI need to cancel_camera() whenever it physically moves to a different location. -That prevents a few funky behaviors. -*/ -//What operation to perform based on target, what ineraction to perform based on object used, target itself, user. The object used is src and calls this proc. -/obj/item/proc/transfer_ai(choice as text, interaction as text, target, mob/U as mob) - if(!src:flush) - switch(choice) - if("AICORE")//AI mob. - var/mob/living/silicon/ai/T = target - switch(interaction) - if("AICARD") - var/obj/item/device/aicard/C = src - if(C.contents.len)//If there is an AI on card. - to_chat(U, SPAN_WARNING("Transfer failed: \black Existing AI found on this terminal. Remove existing AI to install a new one.")) - else - new /obj/structure/AIcore/deactivated(T.loc)//Spawns a deactivated terminal at AI location. - T.aiRestorePowerRoutine = 0//So the AI initially has power. - T.control_disabled = 1//Can't control things remotely if you're stuck in a card! - T.forceMove(C)//Throw AI into the card. - C.name = "inteliCard - [T.name]" - if (T.stat == 2) - C.icon_state = "aicard-404" - else - C.icon_state = "aicard-full" - T.cancel_camera() - to_chat(T, "You have been downloaded to a mobile storage device. Remote device connection severed.") - to_chat(U, SPAN_NOTICE(" Transfer successful: \black [T.name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory.")) - - if("INACTIVE")//Inactive AI object. - var/obj/structure/AIcore/deactivated/T = target - switch(interaction) - if("AICARD") - var/obj/item/device/aicard/C = src - var/mob/living/silicon/ai/A = locate() in C//I love locate(). Best proc ever. - if(A)//If AI exists on the card. Else nothing since both are empty. - A.control_disabled = 0 - A.aiRadio.disabledAi = 0 - A.forceMove(T.loc)//To replace the terminal. - C.icon_state = "aicard" - C.name = "inteliCard" - C.overlays.Cut() - A.cancel_camera() - to_chat(A, "You have been uploaded to a stationary terminal. Remote device connection restored.") - to_chat(U, SPAN_NOTICE(" Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed succesfully. Local copy has been removed.")) - qdel(T) - if("AIFIXER")//AI Fixer terminal. - var/obj/structure/machinery/computer/aifixer/T = target - switch(interaction) - if("AICARD") - var/obj/item/device/aicard/C = src - if(!T.contents.len) - if (!C.contents.len) - to_chat(U, "No AI to copy over!")//Well duh - else for(var/mob/living/silicon/ai/A in C) - C.icon_state = "aicard" - C.name = "inteliCard" - C.overlays.Cut() - A.forceMove(T) - T.occupant = A - A.control_disabled = 1 - if (A.stat == 2) - T.overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-404") - else - T.overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-full") - T.overlays -= image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-empty") - A.cancel_camera() - to_chat(A, "You have been uploaded to a stationary terminal. Sadly, there is no remote access from here.") - to_chat(U, SPAN_NOTICE(" Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed.")) - else - if(!C.contents.len && T.occupant && !T.active) - C.name = "inteliCard - [T.occupant.name]" - T.overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-empty") - if (T.occupant.stat == 2) - C.icon_state = "aicard-404" - T.overlays -= image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-404") - else - C.icon_state = "aicard-full" - T.overlays -= image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-full") - to_chat(T.occupant, "You have been downloaded to a mobile storage device. Still no remote access.") - to_chat(U, SPAN_NOTICE(" Transfer successful: \black [T.occupant.name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory.")) - T.occupant.forceMove(C) - T.occupant.cancel_camera() - T.occupant = null - else if (C.contents.len) - to_chat(U, SPAN_WARNING("ERROR: \black Artificial intelligence detected on terminal.")) - else if (T.active) - to_chat(U, SPAN_WARNING("ERROR: \black Reconstruction in progress.")) - else if (!T.occupant) - to_chat(U, SPAN_WARNING("ERROR: \black Unable to locate artificial intelligence.")) - else - to_chat(U, SPAN_WARNING("ERROR: \black AI flush is in progress, cannot execute transfer protocol.")) - return diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm deleted file mode 100644 index 67e4e8ed35ab..000000000000 --- a/code/game/machinery/computer/aifixer.dm +++ /dev/null @@ -1,104 +0,0 @@ -/obj/structure/machinery/computer/aifixer - name = "AI System Integrity Restorer" - icon = 'icons/obj/structures/machinery/computer.dmi' - icon_state = "ai-fixer" - circuit = /obj/item/circuitboard/computer/aifixer - req_one_access = list(ACCESS_CIVILIAN_ENGINEERING) - var/mob/living/silicon/ai/occupant = null - var/active = 0 - processing = TRUE - -/obj/structure/machinery/computer/aifixer/New() - ..() - src.overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-empty") - - -/obj/structure/machinery/computer/aifixer/attackby(I as obj, user as mob) - if(istype(I, /obj/item/device/aicard)) - if(inoperable()) - to_chat(user, "This terminal isn't functioning right now, get it working!") - return - I:transfer_ai("AIFIXER","AICARD",src,user) - - ..() - return - -/obj/structure/machinery/computer/aifixer/attack_remote(mob/user as mob) - return attack_hand(user) - -/obj/structure/machinery/computer/aifixer/attack_hand(mob/user as mob) - if(..()) - return - - user.set_interaction(src) - var/dat - - if (src.occupant) - dat += "Stored AI: [src.occupant.name]
System integrity: [(src.occupant.health+100)/2]%
" - - if (src.occupant.stat == 2) - dat += "AI nonfunctional" - else - dat += "AI functional" - if (!src.active) - dat += {"

Begin Reconstruction"} - else - dat += "

Reconstruction in process, please wait.
" - dat += {" Close"} - - show_browser(user, dat, "AI System Integrity Restorer", "computer", "size=400x500") - return - -/obj/structure/machinery/computer/aifixer/process() - if(..()) - src.updateDialog() - return - -/obj/structure/machinery/computer/aifixer/Topic(href, href_list) - if(..()) - return - if (href_list["fix"]) - src.active = 1 - src.overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-on") - while (src.occupant.health < 100) - src.occupant.apply_damage(-1, OXY) - src.occupant.apply_damage(-1, BURN) - src.occupant.apply_damage(-1, TOX) - src.occupant.apply_damage(-1, BRUTE) - src.occupant.updatehealth() - if (src.occupant.health >= 0 && src.occupant.stat == DEAD) - src.occupant.set_stat(CONSCIOUS) - src.occupant.lying = 0 - GLOB.dead_mob_list -= src.occupant - GLOB.alive_mob_list += src.occupant - occupant.reload_fullscreens() - src.overlays -= image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-404") - src.overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-full") - src.occupant.add_ai_verbs() - src.updateUsrDialog() - sleep(10) - src.active = 0 - src.overlays -= image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-on") - - - src.add_fingerprint(usr) - src.updateUsrDialog() - return - - -/obj/structure/machinery/computer/aifixer/update_icon() - ..() - // Broken / Unpowered - if(inoperable()) - overlays.Cut() - - // Working / Powered - else - if (occupant) - switch (occupant.stat) - if (0) - overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-full") - if (2) - overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-404") - else - overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-empty") diff --git a/code/game/machinery/computer/almayer_control.dm b/code/game/machinery/computer/almayer_control.dm index ec4abc68511b..1f3338e15bf7 100644 --- a/code/game/machinery/computer/almayer_control.dm +++ b/code/game/machinery/computer/almayer_control.dm @@ -1,16 +1,3 @@ -#define STATE_DEFAULT 1 -#define STATE_EVACUATION 2 -#define STATE_EVACUATION_CANCEL 3 -#define STATE_DISTRESS 4 -#define STATE_DESTROY 5 -#define STATE_DEFCONLIST 6 - -#define STATE_MESSAGELIST 7 -#define STATE_VIEWMESSAGE 8 -#define STATE_DELMESSAGE 9 - - - #define COMMAND_SHIP_ANNOUNCE "Command Ship Announcement" /obj/structure/machinery/computer/almayer_control @@ -21,306 +8,291 @@ unslashable = TRUE unacidable = TRUE - var/state = STATE_DEFAULT - - var/is_announcement_active = TRUE - - var/cooldown_request = 0 - var/cooldown_destruct = 0 - var/cooldown_central = 0 + /// requesting a distress beacon + COOLDOWN_DECLARE(cooldown_request) + /// requesting evac + COOLDOWN_DECLARE(cooldown_destruct) + /// messaging HC (admins) + COOLDOWN_DECLARE(cooldown_central) + /// making a ship announcement + COOLDOWN_DECLARE(cooldown_message) var/list/messagetitle = list() var/list/messagetext = list() - var/currmsg = 0 - var/aicurrmsg = 0 /obj/structure/machinery/computer/almayer_control/attack_remote(mob/user as mob) return attack_hand(user) /obj/structure/machinery/computer/almayer_control/attack_hand(mob/user as mob) - if(..() || !allowed(user) || inoperable()) + if(..() || inoperable()) return + if(!allowed(user)) + to_chat(usr, SPAN_WARNING("Access denied.")) + return FALSE + if(!istype(loc.loc, /area/almayer/command/cic)) //Has to be in the CIC. Can also be a generic CIC area to communicate, if wanted. to_chat(usr, SPAN_WARNING("Unable to establish a connection.")) return FALSE - ui_interact(user) + tgui_interact(user) -/obj/structure/machinery/computer/almayer_control/ui_interact(mob/user as mob) - user.set_interaction(src) +// tgui boilerplate \\ - var/dat = "Almayer Control Console" +/obj/structure/machinery/computer/almayer_control/tgui_interact(mob/user, datum/tgui/ui, datum/ui_state/state) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "AlmayerControl", "[name]") + ui.open() - if(EvacuationAuthority.evac_status == EVACUATION_STATUS_INITIATING) - dat += "Evacuation in Progress\n
\nETA: [EvacuationAuthority.get_status_panel_eta()]
" +/obj/structure/machinery/computer/almayer_control/ui_status(mob/user, datum/ui_state/state) + . = ..() + if(!allowed(user)) + return UI_CLOSE + if(!operable()) + return UI_CLOSE - switch(state) - if(STATE_DEFAULT) - dat += "Alert Level: [get_security_level()]
" - dat += "
[is_announcement_active ? "Make a ship announcement" : "*Unavailable*"]" - dat += GLOB.admins.len > 0 ? "
Send a message to USCM" : "
USCM communication offline" - dat += "
Award a medal" - dat += "

" - dat += "

" +/obj/structure/machinery/computer/almayer_control/ui_state(mob/user) + return GLOB.not_incapacitated_and_adjacent_strict_state +// tgui data \\ - dat += "
Message list" - dat += "
Send Distress Beacon" - dat += "
Activate Self-Destruct" - switch(EvacuationAuthority.evac_status) - if(EVACUATION_STATUS_STANDING_BY) - dat += "
Initiate emergency evacuation" - if(EVACUATION_STATUS_INITIATING) - dat += "
Cancel emergency evacuation" +/obj/structure/machinery/computer/almayer_control/ui_static_data(mob/user) + var/list/data = list() - if(STATE_EVACUATION) - dat += "Are you sure you want to evacuate the [MAIN_SHIP_NAME]? Confirm" + data["cooldown_request"] = COOLDOWN_COMM_REQUEST + data["cooldown_destruct"] = COOLDOWN_COMM_DESTRUCT + data["cooldown_central"] = COOLDOWN_COMM_CENTRAL + data["cooldown_message"] = COOLDOWN_COMM_MESSAGE + data["distresstimelock"] = DISTRESS_TIME_LOCK - if(STATE_EVACUATION_CANCEL) - dat += "Are you sure you want to cancel the evacuation of the [MAIN_SHIP_NAME]? Confirm" + return data - if(STATE_DISTRESS) - dat += "Are you sure you want to trigger a distress signal? The signal can be picked up by anyone listening, friendly or not. Confirm" +/obj/structure/machinery/computer/almayer_control/ui_data(mob/user) + var/list/data = list() + var/list/messages = list() - if(STATE_DESTROY) - dat += "Are you sure you want to trigger the self-destruct? This would mean abandoning ship. Confirm" + data["alert_level"] = GLOB.security_level - if(STATE_MESSAGELIST) - dat += "Messages:" - for(var/i = 1; i<=messagetitle.len; i++) - dat += "
[messagetitle[i]]" + data["time_request"] = cooldown_request + data["time_destruct"] = cooldown_destruct + data["time_central"] = cooldown_central + data["time_message"] = cooldown_message - if(STATE_VIEWMESSAGE) - if (currmsg) - dat += "[messagetitle[currmsg]]

[messagetext[currmsg]]" - dat += "

Delete" - else - state = STATE_MESSAGELIST - attack_hand(user) - return FALSE + data["worldtime"] = world.time - if(STATE_DELMESSAGE) - if (currmsg) - dat += "Are you sure you want to delete this message? OK|Cancel" - else - state = STATE_MESSAGELIST - attack_hand(user) - return FALSE + data["evac_status"] = SShijack.evac_status + if(SShijack.evac_status == EVACUATION_STATUS_INITIATED) + data["evac_eta"] = SShijack.get_evac_eta() - dat += "
[(state != STATE_DEFAULT) ? "Main Menu|" : ""]Close" + if(!messagetitle.len) + data["messages"] = null + else + for(var/i in 1 to length(messagetitle)) + var/list/messagedata = list(list( + "title" = messagetitle[i], + "text" = messagetext[i], + "number" = i + )) + messages += messagedata - show_browser(user, dat, name, "almayer_control") - onclose(user, "almayer_control") + data["messages"] = messages -/obj/structure/machinery/computer/almayer_control/Topic(href, href_list) - if(..()) - return FALSE + return data - usr.set_interaction(src) +// end tgui data \\ - switch(href_list["operation"]) - if("main") - state = STATE_DEFAULT +// tgui interact \\ - if("ship_announce") - if(!is_announcement_active) - to_chat(usr, SPAN_WARNING("Please allow at least [COOLDOWN_COMM_MESSAGE*0.1] second\s to pass between announcements.")) +/obj/structure/machinery/computer/almayer_control/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + switch(action) + if("award") + open_medal_panel(usr, src) + . = TRUE + + // evac stuff start \\ + + if("evacuation_start") + if(GLOB.security_level < SEC_LEVEL_RED) + to_chat(usr, SPAN_WARNING("The ship must be under red alert in order to enact evacuation procedures.")) return FALSE - var/input = stripped_multiline_input(usr, "Please write a message to announce to the station crew.", "Priority Announcement", "") - if(!input || !is_announcement_active || !(usr in view(1,src))) + + if(SShijack.evac_admin_denied) + to_chat(usr, SPAN_WARNING("The USCM has placed a lock on deploying the evacuation pods.")) return FALSE - is_announcement_active = FALSE + if(!SShijack.initiate_evacuation()) + to_chat(usr, SPAN_WARNING("You are unable to initiate an evacuation procedure right now!")) + return FALSE - var/signed = null - if(ishuman(usr)) - var/mob/living/carbon/human/H = usr - var/obj/item/card/id/id = H.wear_id - if(istype(id)) - var/paygrade = get_paygrades(id.paygrade, FALSE, H.gender) - signed = "[paygrade] [id.registered_name]" + log_game("[key_name(usr)] has called for an emergency evacuation.") + message_admins("[key_name_admin(usr)] has called for an emergency evacuation.") + log_ares_security("Initiate Evacuation", "[usr] has called for an emergency evacuation.") + . = TRUE - shipwide_ai_announcement(input, COMMAND_SHIP_ANNOUNCE, signature = signed) - addtimer(CALLBACK(src, PROC_REF(reactivate_announcement), usr), COOLDOWN_COMM_MESSAGE) - message_admins("[key_name(usr)] has made a shipwide annoucement.") - log_announcement("[key_name(usr)] has announced the following to the ship: [input]") + if("evacuation_cancel") + var/mob/living/carbon/human/human_user = usr + var/obj/item/card/id/idcard = human_user.get_active_hand() + var/bio_fail = FALSE + if(!istype(idcard)) + idcard = human_user.wear_id + if(!istype(idcard)) + bio_fail = TRUE + else if(!idcard.check_biometrics(human_user)) + bio_fail = TRUE + if(bio_fail) + to_chat(human_user, SPAN_WARNING("Biometrics failure! You require an authenticated ID card to perform this action!")) + return FALSE + if(!SShijack.cancel_evacuation()) + to_chat(usr, SPAN_WARNING("You are unable to cancel the evacuation right now!")) + return FALSE - if("evacuation_start") - if(state == STATE_EVACUATION) - if(security_level < SEC_LEVEL_RED) - to_chat(usr, SPAN_WARNING("The ship must be under red alert in order to enact evacuation procedures.")) - return FALSE + log_game("[key_name(usr)] has canceled the emergency evacuation.") + message_admins("[key_name_admin(usr)] has canceled the emergency evacuation.") + log_ares_security("Cancel Evacuation", "[usr] has cancelled the emergency evacuation.") + . = TRUE - if(EvacuationAuthority.flags_scuttle & FLAGS_EVACUATION_DENY) - to_chat(usr, SPAN_WARNING("The USCM has placed a lock on deploying the evacuation pods.")) - return FALSE + // evac stuff end \\ - if(!EvacuationAuthority.initiate_evacuation()) - to_chat(usr, SPAN_WARNING("You are unable to initiate an evacuation procedure right now!")) - return FALSE + if("change_sec_level") + var/list/alert_list = list(num2seclevel(SEC_LEVEL_GREEN), num2seclevel(SEC_LEVEL_BLUE)) + switch(GLOB.security_level) + if(SEC_LEVEL_GREEN) + alert_list -= num2seclevel(SEC_LEVEL_GREEN) + if(SEC_LEVEL_BLUE) + alert_list -= num2seclevel(SEC_LEVEL_BLUE) + if(SEC_LEVEL_DELTA) + return - log_game("[key_name(usr)] has called for an emergency evacuation.") - message_admins("[key_name_admin(usr)] has called for an emergency evacuation.") - return TRUE + var/level_selected = tgui_input_list(usr, "What alert would you like to set it as?", "Alert Level", alert_list) + if(!level_selected) + return - state = STATE_EVACUATION + set_security_level(seclevel2num(level_selected), log = ARES_LOG_NONE) + log_game("[key_name(usr)] has changed the security level to [get_security_level()].") + message_admins("[key_name_admin(usr)] has changed the security level to [get_security_level()].") + log_ares_security("Manual Security Update", "[usr] has changed the security level to [get_security_level()].") + . = TRUE - if("evacuation_cancel") - if(state == STATE_EVACUATION_CANCEL) - if(!EvacuationAuthority.cancel_evacuation()) - to_chat(usr, SPAN_WARNING("You are unable to cancel the evacuation right now!")) - return FALSE + if("messageUSCM") + if(!COOLDOWN_FINISHED(src, cooldown_central)) + to_chat(usr, SPAN_WARNING("Arrays are re-cycling. Please stand by.")) + return FALSE + var/input = stripped_input(usr, "Please choose a message to transmit to USCM. Please be aware that this process is very expensive, and abuse will lead to termination. Transmission does not guarantee a response. There is a small delay before you may send another message. Be clear and concise.", "To abort, send an empty message.", "") + if(!input || !(usr in view(1,src)) || !COOLDOWN_FINISHED(src, cooldown_central)) + return FALSE - spawn(35)//some time between AI announcements for evac cancel and SD cancel. - if(EvacuationAuthority.evac_status == EVACUATION_STATUS_STANDING_BY)//nothing changed during the wait - //if the self_destruct is active we try to cancel it (which includes lowering alert level to red) - if(!EvacuationAuthority.cancel_self_destruct(1)) - //if SD wasn't active (likely canceled manually in the SD room), then we lower the alert level manually. - set_security_level(SEC_LEVEL_RED, TRUE) //both SD and evac are inactive, lowering the security level. + high_command_announce(input, usr) + to_chat(usr, SPAN_NOTICE("Message transmitted.")) + log_announcement("[key_name(usr)] has made an USCM announcement: [input]") + COOLDOWN_START(src, cooldown_central, COOLDOWN_COMM_CENTRAL) + . = TRUE - log_game("[key_name(usr)] has canceled the emergency evacuation.") - message_admins("[key_name_admin(usr)] has canceled the emergency evacuation.") - return TRUE + if("ship_announce") + var/mob/living/carbon/human/human_user = usr + var/obj/item/card/id/idcard = human_user.get_active_hand() + var/bio_fail = FALSE + if(!istype(idcard)) + idcard = human_user.wear_id + if(!istype(idcard)) + bio_fail = TRUE + else if(!idcard.check_biometrics(human_user)) + bio_fail = TRUE + if(bio_fail) + to_chat(human_user, SPAN_WARNING("Biometrics failure! You require an authenticated ID card to perform this action!")) + return FALSE - state = STATE_EVACUATION_CANCEL + if(!COOLDOWN_FINISHED(src, cooldown_message)) + to_chat(usr, SPAN_WARNING("Please allow at least [COOLDOWN_TIMELEFT(src, cooldown_message)/10] second\s to pass between announcements.")) + return FALSE + var/input = stripped_multiline_input(usr, "Please write a message to announce to the station crew.", "Priority Announcement", "") + if(!input || !COOLDOWN_FINISHED(src, cooldown_message) || !(usr in view(1,src))) + return FALSE - if("distress") - if(state == STATE_DISTRESS) - if(world.time < DISTRESS_TIME_LOCK) - to_chat(usr, SPAN_WARNING("The distress beacon cannot be launched this early in the operation. Please wait another [time_left_until(DISTRESS_TIME_LOCK, world.time, 1 MINUTES)] minutes before trying again.")) - return FALSE + var/signed = null + var/paygrade = get_paygrades(idcard.paygrade, FALSE, human_user.gender) + signed = "[paygrade] [idcard.registered_name]" - if(!SSticker.mode) - return FALSE //Not a game mode? + COOLDOWN_START(src, cooldown_message, COOLDOWN_COMM_MESSAGE) + shipwide_ai_announcement(input, COMMAND_SHIP_ANNOUNCE, signature = signed) + message_admins("[key_name(usr)] has made a shipwide annoucement.") + log_announcement("[key_name(usr)] has announced the following to the ship: [input]") + . = TRUE - if(SSticker.mode.force_end_at == 0) - to_chat(usr, SPAN_WARNING("ARES has denied your request for operational security reasons.")) - return FALSE + if("distress") + if(world.time < DISTRESS_TIME_LOCK) + to_chat(usr, SPAN_WARNING("The distress beacon cannot be launched this early in the operation. Please wait another [time_left_until(DISTRESS_TIME_LOCK, world.time, 1 MINUTES)] minutes before trying again.")) + return FALSE - if(world.time < cooldown_request + COOLDOWN_COMM_REQUEST) - to_chat(usr, SPAN_WARNING("The distress beacon has recently broadcast a message. Please wait.")) - return FALSE + if(!SSticker.mode) + return FALSE //Not a game mode? - if(security_level == SEC_LEVEL_DELTA) - to_chat(usr, SPAN_WARNING("The ship is already undergoing self-destruct procedures!")) - return FALSE + if(SSticker.mode.force_end_at == 0) + to_chat(usr, SPAN_WARNING("ARES has denied your request for operational security reasons.")) + return FALSE - for(var/client/C in GLOB.admins) - if((R_ADMIN|R_MOD) & C.admin_holder.rights) - C << 'sound/effects/sos-morse-code.ogg' - message_admins("[key_name(usr)] has requested a Distress Beacon! [CC_MARK(usr)] (SEND) (DENY) [ADMIN_JMP_USER(usr)] [CC_REPLY(usr)]") - to_chat(usr, SPAN_NOTICE("A distress beacon request has been sent to USCM Central Command.")) + if(!COOLDOWN_FINISHED(src, cooldown_request)) + to_chat(usr, SPAN_WARNING("The distress beacon has recently broadcast a message. Please wait.")) + return FALSE - cooldown_request = world.time - return TRUE + if(GLOB.security_level == SEC_LEVEL_DELTA) + to_chat(usr, SPAN_WARNING("The ship is already undergoing self-destruct procedures!")) + return FALSE - state = STATE_DISTRESS + for(var/client/admin_client as anything in GLOB.admins) + if((R_ADMIN|R_MOD) & admin_client.admin_holder.rights) + admin_client << 'sound/effects/sos-morse-code.ogg' + SSticker.mode.request_ert(usr) + to_chat(usr, SPAN_NOTICE("A distress beacon request has been sent to USCM Central Command.")) - if("destroy") - if(state == STATE_DESTROY) - //Comment to test - if(world.time < DISTRESS_TIME_LOCK) - to_chat(usr, SPAN_WARNING("The self-destruct cannot be activated this early in the operation. Please wait another [time_left_until(DISTRESS_TIME_LOCK, world.time, 1 MINUTES)] minutes before trying again.")) - return FALSE - - if(!SSticker.mode) - return FALSE //Not a game mode? - - if(SSticker.mode.force_end_at == 0) - to_chat(usr, SPAN_WARNING("ARES has denied your request for operational security reasons.")) - return FALSE - - if(world.time < cooldown_destruct + COOLDOWN_COMM_DESTRUCT) - to_chat(usr, SPAN_WARNING("A self-destruct request has already been sent to high command. Please wait.")) - return FALSE - - if(get_security_level() == "delta") - to_chat(usr, SPAN_WARNING("The [MAIN_SHIP_NAME]'s self-destruct is already activated.")) - return FALSE - - for(var/client/C in GLOB.admins) - if((R_ADMIN|R_MOD) & C.admin_holder.rights) - C << 'sound/effects/sos-morse-code.ogg' - message_admins("[key_name(usr)] has requested Self-Destruct! [CC_MARK(usr)] (GRANT) (DENY) [ADMIN_JMP_USER(usr)] [CC_REPLY(usr)]") - to_chat(usr, SPAN_NOTICE("A self-destruct request has been sent to USCM Central Command.")) - cooldown_destruct = world.time - return TRUE - - state = STATE_DESTROY - - if("messagelist") - currmsg = 0 - state = STATE_MESSAGELIST - - if("viewmessage") - state = STATE_VIEWMESSAGE - if (!currmsg) - if(href_list["message-num"]) currmsg = text2num(href_list["message-num"]) - else state = STATE_MESSAGELIST + COOLDOWN_START(src, cooldown_request, COOLDOWN_COMM_REQUEST) + . = TRUE - if("delmessage") - state = (currmsg) ? STATE_DELMESSAGE : STATE_MESSAGELIST - - if("delmessage2") - if(currmsg) - var/title = messagetitle[currmsg] - var/text = messagetext[currmsg] - messagetitle.Remove(title) - messagetext.Remove(text) - if(currmsg == aicurrmsg) aicurrmsg = 0 - currmsg = 0 - state = STATE_MESSAGELIST + // sd \\ - if("messageUSCM") - if(world.time < cooldown_central + COOLDOWN_COMM_CENTRAL) - to_chat(usr, SPAN_WARNING("Arrays recycling. Please stand by.")) + if("destroy") + if(world.time < DISTRESS_TIME_LOCK) + to_chat(usr, SPAN_WARNING("The self-destruct cannot be activated this early in the operation. Please wait another [time_left_until(DISTRESS_TIME_LOCK, world.time, 1 MINUTES)] minutes before trying again.")) return FALSE - var/input = stripped_input(usr, "Please choose a message to transmit to USCM. Please be aware that this process is very expensive, and abuse will lead to termination. Transmission does not guarantee a response. There is a small delay before you may send another message. Be clear and concise.", "To abort, send an empty message.", "") - if(!input || !(usr in view(1,src)) || world.time < cooldown_central + COOLDOWN_COMM_CENTRAL) return FALSE - high_command_announce(input, usr) - to_chat(usr, SPAN_NOTICE("Message transmitted.")) - log_announcement("[key_name(usr)] has made an USCM announcement: [input]") - cooldown_central = world.time - - if("changeseclevel") - var/list/alert_list = list(num2seclevel(SEC_LEVEL_GREEN), num2seclevel(SEC_LEVEL_BLUE)) - switch(security_level) - if(SEC_LEVEL_GREEN) - alert_list -= num2seclevel(SEC_LEVEL_GREEN) - if(SEC_LEVEL_BLUE) - alert_list -= num2seclevel(SEC_LEVEL_BLUE) - if(SEC_LEVEL_DELTA) - return - - var/level_selected = tgui_input_list(usr, "What alert would you like to set it as?", "Alert Level", alert_list) - if(!level_selected) - return + if(!SSticker.mode) + return FALSE //Not a game mode? - set_security_level(seclevel2num(level_selected)) + if(SSticker.mode.force_end_at == 0) + to_chat(usr, SPAN_WARNING("ARES has denied your request for operational security reasons.")) + return FALSE - log_game("[key_name(usr)] has changed the security level to [get_security_level()].") - message_admins("[key_name_admin(usr)] has changed the security level to [get_security_level()].") + if(!COOLDOWN_FINISHED(src, cooldown_destruct)) + to_chat(usr, SPAN_WARNING("A self-destruct request has already been sent to high command. Please wait.")) + return FALSE - if("award") - print_medal(usr, src) + if(get_security_level() == "delta") + to_chat(usr, SPAN_WARNING("The [MAIN_SHIP_NAME]'s self-destruct is already activated.")) + return FALSE - updateUsrDialog() + for(var/client/admin_client as anything in GLOB.admins) + if((R_ADMIN|R_MOD) & admin_client.admin_holder.rights) + admin_client << 'sound/effects/sos-morse-code.ogg' + message_admins("[key_name(usr)] has requested Self-Destruct! [CC_MARK(usr)] (GRANT) (DENY) [ADMIN_JMP_USER(usr)] [CC_REPLY(usr)]") + to_chat(usr, SPAN_NOTICE("A self-destruct request has been sent to USCM Central Command.")) + COOLDOWN_START(src, cooldown_destruct, COOLDOWN_COMM_DESTRUCT) + . = TRUE -/obj/structure/machinery/computer/almayer_control/proc/reactivate_announcement(mob/user) - is_announcement_active = TRUE - updateUsrDialog() + if("delmessage") + var/number_of_message = params["number"] + if(!number_of_message) + return FALSE + var/title = messagetitle[number_of_message] + var/text = messagetext[number_of_message] + messagetitle.Remove(title) + messagetext.Remove(text) + . = TRUE -#undef STATE_DEFAULT -#undef STATE_EVACUATION -#undef STATE_EVACUATION_CANCEL -#undef STATE_DISTRESS -#undef STATE_DESTROY -#undef STATE_DEFCONLIST +// end tgui interact \\ -#undef STATE_MESSAGELIST -#undef STATE_VIEWMESSAGE -#undef STATE_DELMESSAGE +// end tgui \\ diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 8d35dd1b6aff..1ac5a06738d5 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -165,8 +165,8 @@ return /obj/structure/machinery/computer/arcade/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return var/empprize = null var/num_of_prizes = 0 @@ -178,5 +178,3 @@ for(num_of_prizes; num_of_prizes > 0; num_of_prizes--) empprize = pickweight(prizes) new empprize(src.loc) - - ..(severity) diff --git a/code/game/machinery/computer/area_air_control.dm b/code/game/machinery/computer/area_air_control.dm index e3f16a988c86..cd9870f175c4 100644 --- a/code/game/machinery/computer/area_air_control.dm +++ b/code/game/machinery/computer/area_air_control.dm @@ -139,14 +139,10 @@ var/turf/T_src = get_turf(src) if(!T_src.loc) return 0 var/area/A_src = T_src.loc - if (A_src.master) - A_src = A_src.master var/turf/T_scrub = get_turf(scrubber) if(!T_scrub.loc) return 0 var/area/A_scrub = T_scrub.loc - if (A_scrub.master) - A_scrub = A_scrub.master if(A_scrub != A_src) return 0 @@ -160,14 +156,11 @@ var/turf/T = get_turf(src) if(!T.loc) return - var/area/A = T.loc - if (A.master) - A = A.master - for(var/obj/structure/machinery/portable_atmospherics/powered/scrubber/huge/scrubber in machines ) + for(var/obj/structure/machinery/portable_atmospherics/powered/scrubber/huge/scrubber in GLOB.machines ) var/turf/T2 = get_turf(scrubber) if(T2 && T2.loc) - var/area/A2 = T2.loc - if(istype(A2) && A2.master && A2.master == A ) + var/area/A = T2.loc + if(istype(A) && A) connectedscrubbers += scrubber found = 1 diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index bd42b31ea573..07c960807205 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -52,7 +52,7 @@ to_chat(user, SPAN_NOTICE(" You screw the circuit board into place.")) src.state = 2 src.icon_state = "2" - if(istype(P, /obj/item/tool/crowbar) && circuit) + if(HAS_TRAIT(P, TRAIT_TOOL_CROWBAR) && circuit) playsound(src.loc, 'sound/items/Crowbar.ogg', 25, 1) to_chat(user, SPAN_NOTICE(" You remove the circuit board.")) src.state = 1 @@ -99,7 +99,7 @@ src.state = 4 src.icon_state = "4" if(4) - if(istype(P, /obj/item/tool/crowbar)) + if(HAS_TRAIT(P, TRAIT_TOOL_CROWBAR)) playsound(src.loc, 'sound/items/Crowbar.ogg', 25, 1) to_chat(user, SPAN_NOTICE(" You remove the glass panel.")) src.state = 3 diff --git a/code/game/machinery/computer/camera_console.dm b/code/game/machinery/computer/camera_console.dm index d7fe2ed83e02..f36719a8453e 100644 --- a/code/game/machinery/computer/camera_console.dm +++ b/code/game/machinery/computer/camera_console.dm @@ -13,54 +13,40 @@ var/list/concurrent_users = list() // Stuff needed to render the map - var/map_name - var/atom/movable/screen/map_view/cam_screen - var/atom/movable/screen/background/cam_background - - /// All turfs within range of the currently active camera - var/list/range_turfs = list() + var/camera_map_name var/colony_camera_mapload = TRUE var/admin_console = FALSE /obj/structure/machinery/computer/cameras/Initialize(mapload) . = ..() - // Map name has to start and end with an A-Z character, - // and definitely NOT with a square bracket or even a number. - // I wasted 6 hours on this. :agony: - map_name = "camera_console_[REF(src)]_map" + + RegisterSignal(src, COMSIG_CAMERA_MAPNAME_ASSIGNED, PROC_REF(camera_mapname_update)) + + // camera setup + AddComponent(/datum/component/camera_manager) + SEND_SIGNAL(src, COMSIG_CAMERA_CLEAR) if(colony_camera_mapload && mapload && is_ground_level(z)) network = list(CAMERA_NET_COLONY) - // Initialize map objects - cam_screen = new - cam_screen.icon = null - cam_screen.name = "screen" - cam_screen.assigned_map = map_name - cam_screen.del_on_map_removal = FALSE - cam_screen.screen_loc = "[map_name]:1,1" - cam_background = new - cam_background.assigned_map = map_name - cam_background.del_on_map_removal = FALSE /obj/structure/machinery/computer/cameras/Destroy() SStgui.close_uis(src) QDEL_NULL(current) - QDEL_NULL(cam_screen) - qdel(cam_screen) - QDEL_NULL(cam_background) - qdel(cam_background) - range_turfs = null + UnregisterSignal(src, COMSIG_CAMERA_MAPNAME_ASSIGNED) last_camera_turf = null concurrent_users = null return ..() +/obj/structure/machinery/computer/cameras/proc/camera_mapname_update(source, value) + camera_map_name = value + /obj/structure/machinery/computer/cameras/attack_remote(mob/user as mob) return attack_hand(user) /obj/structure/machinery/computer/cameras/attack_hand(mob/user) - if(!admin_console && is_admin_level(z)) + if(!admin_console && should_block_game_interaction(src)) to_chat(user, SPAN_DANGER("Unable to establish a connection: \black You're too far away from the ship!")) return if(inoperable()) @@ -74,12 +60,15 @@ if(inoperable()) return UI_DISABLED +//Closes UI if you move away from console. +/obj/structure/machinery/computer/cameras/ui_state(mob/user) + return GLOB.not_incapacitated_and_adjacent_strict_state + /obj/structure/machinery/computer/cameras/tgui_interact(mob/user, datum/tgui/ui) // Update UI ui = SStgui.try_update_ui(user, src, ui) - // Update the camera, showing static if necessary and updating data if the location has moved. - update_active_camera_screen() + SEND_SIGNAL(src, COMSIG_CAMERA_REFRESH) if(!ui) var/user_ref = WEAKREF(user) @@ -91,9 +80,9 @@ // Turn on the console if(length(concurrent_users) == 1 && is_living) update_use_power(USE_POWER_ACTIVE) - // Register map objects - user.client.register_map_obj(cam_screen) - user.client.register_map_obj(cam_background) + + SEND_SIGNAL(src, COMSIG_CAMERA_REGISTER_UI, user) + // Open UI ui = new(user, src, "CameraConsole", name) ui.open() @@ -111,7 +100,7 @@ /obj/structure/machinery/computer/cameras/ui_static_data() var/list/data = list() - data["mapRef"] = map_name + data["mapRef"] = camera_map_name var/list/cameras = get_available_cameras() data["cameras"] = list() for(var/i in cameras) @@ -145,64 +134,10 @@ if(!selected_camera) return TRUE - update_active_camera_screen() + SEND_SIGNAL(src, COMSIG_CAMERA_SET_TARGET, selected_camera, selected_camera.view_range, selected_camera.view_range) return TRUE -/obj/structure/machinery/computer/cameras/proc/update_active_camera_screen() - // Show static if can't use the camera - if(!current?.can_use()) - show_camera_static() - return - - // Is this camera located in or attached to a living thing, Vehicle or helmet? If so, assume the camera's loc is the living (or non) thing. - var/cam_location = current - if(isliving(current.loc) || isVehicle(current.loc)) - cam_location = current.loc - else if(istype(current.loc, /obj/item/clothing/head/helmet/marine)) - var/obj/item/clothing/head/helmet/marine/helmet = current.loc - cam_location = helmet.loc - - // If we're not forcing an update for some reason and the cameras are in the same location, - // we don't need to update anything. - // Most security cameras will end here as they're not moving. - var/newturf = get_turf(cam_location) - if(last_camera_turf == newturf) - return - - // Cameras that get here are moving, and are likely attached to some moving atom such as cyborgs. - last_camera_turf = get_turf(cam_location) - - var/list/visible_things = current.isXRay() ? range(current.view_range, cam_location) : view(current.view_range, cam_location) - - var/list/visible_turfs = list() - range_turfs.Cut() - var/area/A - for(var/turf/visible_turf in visible_things) - range_turfs += visible_turf - A = visible_turf.loc - if(!A.lighting_use_dynamic || visible_turf.lighting_lumcount >= 1) - visible_turfs += visible_turf - - var/list/bbox = get_bbox_of_atoms(visible_turfs) - var/size_x = bbox[3] - bbox[1] + 1 - var/size_y = bbox[4] - bbox[2] + 1 - - cam_screen.vis_contents = visible_turfs - cam_background.icon_state = "clear" - cam_background.fill_rect(1, 1, size_x, size_y) - - START_PROCESSING(SSfastobj, src) // fastobj to somewhat keep pace with lighting updates - -/obj/structure/machinery/computer/cameras/process() - if(current) - var/list/visible_turfs = list() - var/area/A - for(var/turf/visible_turf as anything in range_turfs) - A = visible_turf.loc - if(!A.lighting_use_dynamic || visible_turf.lighting_lumcount >= 1) - visible_turfs += visible_turf - cam_screen.vis_contents = visible_turfs /obj/structure/machinery/computer/cameras/ui_close(mob/user) var/user_ref = WEAKREF(user) @@ -210,27 +145,20 @@ // Living creature or not, we remove you anyway. concurrent_users -= user_ref // Unregister map objects - user.client.clear_map(map_name) + SEND_SIGNAL(src, COMSIG_CAMERA_UNREGISTER_UI, user) // Turn off the console if(length(concurrent_users) == 0 && is_living) current = null + SEND_SIGNAL(src, COMSIG_CAMERA_CLEAR) last_camera_turf = null - range_turfs = list() if(use_power) update_use_power(USE_POWER_IDLE) - STOP_PROCESSING(SSfastobj, src) user.unset_interaction() -/obj/structure/machinery/computer/cameras/proc/show_camera_static() - cam_screen.vis_contents.Cut() - last_camera_turf = null - cam_background.icon_state = "scanline2" - cam_background.fill_rect(1, 1, DEFAULT_MAP_SIZE, DEFAULT_MAP_SIZE) - // Returns the list of cameras accessible from this computer /obj/structure/machinery/computer/cameras/proc/get_available_cameras() var/list/D = list() - for(var/obj/structure/machinery/camera/C in cameranet.cameras) + for(var/obj/structure/machinery/camera/C in GLOB.all_cameras) if(!C.network) stack_trace("Camera in a cameranet has no camera network") continue @@ -318,6 +246,10 @@ name = "Containment Cameras" network = list(CAMERA_NET_CONTAINMENT) +/obj/structure/machinery/computer/cameras/almayer/ares + name = "ARES Core Cameras" + network = list(CAMERA_NET_ARES) + /obj/structure/machinery/computer/cameras/almayer/vehicle name = "Ship Security Cameras" network = list(CAMERA_NET_ALMAYER, CAMERA_NET_VEHICLE) @@ -354,8 +286,8 @@ exproof = TRUE colony_camera_mapload = FALSE -/obj/structure/machinery/computer/cameras/mortar/emp_act(severity) - return FALSE +/obj/structure/machinery/computer/cameras/mortar/set_broken() + return /obj/structure/machinery/computer/cameras/dropship name = "abstract dropship camera computer" diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 2a7b5017d1ed..beed3610b53f 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -43,7 +43,7 @@ var/stat_msg1 var/stat_msg2 - var/datum/tacmap/tacmap + var/datum/tacmap/drawing/tacmap var/minimap_type = MINIMAP_FLAG_USCM processing = TRUE @@ -98,9 +98,9 @@ if(-INFINITY to SEC_LEVEL_GREEN) tmp_alertlevel = SEC_LEVEL_GREEN //Cannot go below green. if(SEC_LEVEL_BLUE to INFINITY) tmp_alertlevel = SEC_LEVEL_BLUE //Cannot go above blue. - var/old_level = security_level + var/old_level = GLOB.security_level set_security_level(tmp_alertlevel) - if(security_level != old_level) + if(GLOB.security_level != old_level) //Only notify the admins if an actual change happened log_game("[key_name(usr)] has changed the security level to [get_security_level()].") message_admins("[key_name_admin(usr)] has changed the security level to [get_security_level()].") @@ -113,6 +113,19 @@ if("announce") if(authenticated == 2) + var/mob/living/carbon/human/human_user = usr + var/obj/item/card/id/idcard = human_user.get_active_hand() + var/bio_fail = FALSE + if(!istype(idcard)) + idcard = human_user.wear_id + if(!istype(idcard)) + bio_fail = TRUE + else if(!idcard.check_biometrics(human_user)) + bio_fail = TRUE + if(bio_fail) + to_chat(human_user, SPAN_WARNING("Biometrics failure! You require an authenticated ID card to perform this action!")) + return FALSE + if(usr.client.prefs.muted & MUTE_IC) to_chat(usr, SPAN_DANGER("You cannot send Announcements (muted).")) return @@ -130,43 +143,51 @@ cooldown_message = world.time if("award") - print_medal(usr, src) + open_medal_panel(usr, src) if("evacuation_start") if(state == STATE_EVACUATION) - if(security_level < SEC_LEVEL_DELTA) + if(GLOB.security_level < SEC_LEVEL_DELTA) to_chat(usr, SPAN_WARNING("The ship must be under delta alert in order to enact evacuation procedures.")) return FALSE - if(EvacuationAuthority.flags_scuttle & FLAGS_EVACUATION_DENY) + if(SShijack.evac_admin_denied) to_chat(usr, SPAN_WARNING("The USCM has placed a lock on deploying the evacuation pods.")) return FALSE - if(!EvacuationAuthority.initiate_evacuation()) + if(!SShijack.initiate_evacuation()) to_chat(usr, SPAN_WARNING("You are unable to initiate an evacuation procedure right now!")) return FALSE log_game("[key_name(usr)] has called for an emergency evacuation.") message_admins("[key_name_admin(usr)] has called for an emergency evacuation.") + log_ares_security("Initiate Evacuation", "[usr] has called for an emergency evacuation.") return TRUE state = STATE_EVACUATION if("evacuation_cancel") + var/mob/living/carbon/human/human_user = usr + var/obj/item/card/id/idcard = human_user.get_active_hand() + var/bio_fail = FALSE + if(!istype(idcard)) + idcard = human_user.wear_id + if(!istype(idcard)) + bio_fail = TRUE + else if(!idcard.check_biometrics(human_user)) + bio_fail = TRUE + if(bio_fail) + to_chat(human_user, SPAN_WARNING("Biometrics failure! You require an authenticated ID card to perform this action!")) + return FALSE + if(state == STATE_EVACUATION_CANCEL) - if(!EvacuationAuthority.cancel_evacuation()) + if(!SShijack.cancel_evacuation()) to_chat(usr, SPAN_WARNING("You are unable to cancel the evacuation right now!")) return FALSE - spawn(35)//some time between AI announcements for evac cancel and SD cancel. - if(EvacuationAuthority.evac_status == EVACUATION_STATUS_STANDING_BY)//nothing changed during the wait - //if the self_destruct is active we try to cancel it (which includes lowering alert level to red) - if(!EvacuationAuthority.cancel_self_destruct(1)) - //if SD wasn't active (likely canceled manually in the SD room), then we lower the alert level manually. - set_security_level(SEC_LEVEL_RED, TRUE) //both SD and evac are inactive, lowering the security level. - log_game("[key_name(usr)] has canceled the emergency evacuation.") message_admins("[key_name_admin(usr)] has canceled the emergency evacuation.") + log_ares_security("Cancel Evacuation", "[usr] has cancelled the emergency evacuation.") return TRUE state = STATE_EVACUATION_CANCEL @@ -190,14 +211,14 @@ to_chat(usr, SPAN_WARNING("The distress beacon has recently broadcast a message. Please wait.")) return FALSE - if(security_level == SEC_LEVEL_DELTA) + if(GLOB.security_level == SEC_LEVEL_DELTA) to_chat(usr, SPAN_WARNING("The ship is already undergoing self-destruct procedures!")) return FALSE for(var/client/C in GLOB.admins) if((R_ADMIN|R_MOD) & C.admin_holder.rights) C << 'sound/effects/sos-morse-code.ogg' - message_admins("[key_name(usr)] has requested a Distress Beacon! [CC_MARK(usr)] (SEND) (DENY) [ADMIN_JMP_USER(usr)] [CC_REPLY(usr)]") + SSticker.mode.request_ert(usr) to_chat(usr, SPAN_NOTICE("A distress beacon request has been sent to USCM Central Command.")) cooldown_request = world.time @@ -325,8 +346,8 @@ user.set_interaction(src) var/dat = "Communications Console" - if(EvacuationAuthority.evac_status == EVACUATION_STATUS_INITIATING) - dat += "Evacuation in Progress\n
\nETA: [EvacuationAuthority.get_status_panel_eta()]
" + if(SShijack.evac_status == EVACUATION_STATUS_INITIATED) + dat += "Evacuation in Progress\n
\nETA: [SShijack.get_evac_eta()]
" switch(state) if(STATE_DEFAULT) if(authenticated) @@ -349,9 +370,11 @@ dat += "
Award a medal" dat += "
Send Distress Beacon" dat += "
Activate Self-Destruct" - switch(EvacuationAuthority.evac_status) - if(EVACUATION_STATUS_STANDING_BY) dat += "
Initiate emergency evacuation" - if(EVACUATION_STATUS_INITIATING) dat += "
Cancel emergency evacuation" + switch(SShijack.evac_status) + if(EVACUATION_STATUS_NOT_INITIATED) + dat += "
Initiate emergency evacuation" + if(EVACUATION_STATUS_INITIATED) + dat += "
Cancel emergency evacuation" else dat += "
LOG IN" @@ -406,20 +429,8 @@ if(STATE_ALERT_LEVEL) dat += "Current alert level: [get_security_level()]
" - if(security_level == SEC_LEVEL_DELTA) - if(EvacuationAuthority.dest_status >= NUKE_EXPLOSION_ACTIVE) - dat += SET_CLASS("The self-destruct mechanism is active. [EvacuationAuthority.evac_status != EVACUATION_STATUS_INITIATING ? "You have to manually deactivate the self-destruct mechanism." : ""]", INTERFACE_RED) - dat += "
" - switch(EvacuationAuthority.evac_status) - if(EVACUATION_STATUS_INITIATING) - dat += SET_CLASS("Evacuation initiated. Evacuate or rescind evacuation orders.", INTERFACE_RED) - if(EVACUATION_STATUS_IN_PROGRESS) - dat += SET_CLASS("Evacuation in progress.", INTERFACE_RED) - if(EVACUATION_STATUS_COMPLETE) - dat += SET_CLASS("Evacuation complete.", INTERFACE_RED) - else - dat += "Blue
" - dat += "Green" + dat += "Blue
" + dat += "Green" if(STATE_CONFIRM_LEVEL) dat += "Current alert level: [get_security_level()]
" diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 8fa0b9b86a0c..c33517796271 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -31,8 +31,9 @@ return 1 /obj/structure/machinery/computer/emp_act(severity) - if(prob(20/severity)) set_broken() - ..() + . = ..() + if(prob(20/severity)) + set_broken() /obj/structure/machinery/computer/ex_act(severity) @@ -53,10 +54,8 @@ if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY) deconstruct(FALSE) return - else - return -/obj/structure/machinery/computer/bullet_act(obj/item/projectile/Proj) +/obj/structure/machinery/computer/bullet_act(obj/projectile/Proj) if(exproof) visible_message("[Proj] ricochets off [src]!") return 0 diff --git a/code/game/machinery/computer/demo_sim.dm b/code/game/machinery/computer/demo_sim.dm index 15261cfc8f4b..f633e8f351d4 100644 --- a/code/game/machinery/computer/demo_sim.dm +++ b/code/game/machinery/computer/demo_sim.dm @@ -55,7 +55,6 @@ var/list/data = list() data["configuration"] = configuration - data["looking"] = simulation.looking_at_simulation data["dummy_mode"] = simulation.dummy_mode data["worldtime"] = world.time @@ -104,8 +103,7 @@ /obj/structure/machinery/computer/demo_sim/ui_close(mob/user) . = ..() - if(simulation.looking_at_simulation) - simulation.stop_watching(user) + simulation.stop_watching(user) // DEMOLITIONS TGUI SHIT END \\ diff --git a/code/game/machinery/computer/dropship_weapons.dm b/code/game/machinery/computer/dropship_weapons.dm index 2d943d643cb3..dce026f4ce33 100644 --- a/code/game/machinery/computer/dropship_weapons.dm +++ b/code/game/machinery/computer/dropship_weapons.dm @@ -11,7 +11,6 @@ exproof = TRUE var/shuttle_tag // Used to know which shuttle we're linked to. var/obj/structure/dropship_equipment/selected_equipment //the currently selected equipment installed on the shuttle this console controls. - var/list/shuttle_equipments = list() //list of the equipments on the shuttle this console controls var/cavebreaker = FALSE //ignore caves and other restrictions? var/datum/cas_fire_envelope/firemission_envelope var/datum/cas_fire_mission/selected_firemission @@ -25,168 +24,101 @@ var/datum/simulator/simulation var/datum/cas_fire_mission/configuration + // groundside maps + var/datum/tacmap/tacmap + var/minimap_type = MINIMAP_FLAG_USCM + + // Cameras + var/camera_target_id + var/camera_width = 11 + var/camera_height = 11 + var/camera_map_name + ///Tracks equipment with a camera that is deployed and we are viewing + var/obj/structure/dropship_equipment/camera_area_equipment = null + + var/registered = FALSE + /obj/structure/machinery/computer/dropship_weapons/Initialize() . = ..() simulation = new() + tacmap = new(src, minimap_type) + + RegisterSignal(src, COMSIG_CAMERA_MAPNAME_ASSIGNED, PROC_REF(camera_mapname_update)) + + // camera setup + AddComponent(/datum/component/camera_manager) + SEND_SIGNAL(src, COMSIG_CAMERA_CLEAR) /obj/structure/machinery/computer/dropship_weapons/New() ..() if(firemission_envelope) firemission_envelope.linked_console = src +/obj/structure/machinery/computer/dropship_weapons/proc/camera_mapname_update(source, value) + camera_map_name = value + +/obj/structure/machinery/computer/dropship_weapons/Destroy() + . = ..() + UnregisterSignal(src, COMSIG_CAMERA_MAPNAME_ASSIGNED) + /obj/structure/machinery/computer/dropship_weapons/attack_hand(mob/user) if(..()) return - if(!allowed(user)) + if(!allowed(user)) + // TODO: Restore cas simulator + to_chat(user, SPAN_WARNING("Weapons modification access denied.")) + return TRUE // everyone can access the simulator, requested feature. - to_chat(user, SPAN_WARNING("Weapons modification access denied, attempting to launch simulation.")) + /*to_chat(user, SPAN_WARNING("Weapons modification access denied, attempting to launch simulation.")) if(!selected_firemission) - to_chat(usr, SPAN_WARNING("Firemission must be selected before attempting to run the simulation")) - return + to_chat(user, SPAN_WARNING("Firemission must be selected before attempting to run the simulation")) + return TRUE tgui_interact(user) - return 1 + return FALSE*/ user.set_interaction(src) ui_interact(user) /obj/structure/machinery/computer/dropship_weapons/attackby(obj/item/W, mob/user as mob) if(istype(W, /obj/item/frame/matrix_frame)) - var/obj/item/frame/matrix_frame/MATRIX = W - if(MATRIX.state == ASSEMBLY_LOCKED) + var/obj/item/frame/matrix_frame/matrix = W + if(matrix.state == ASSEMBLY_LOCKED) user.drop_held_item(W, src) W.forceMove(src) to_chat(user, SPAN_NOTICE("You swap the matrix in the dropship guidance camera system, destroying the older part in the process")) - upgraded = MATRIX.upgrade - matrixcol = MATRIX.matrixcol - power = MATRIX.power + upgraded = matrix.upgrade + matrixcol = matrix.matrixcol + power = matrix.power else - to_chat(user, SPAN_WARNING("matrix is not complete!")) + to_chat(user, SPAN_WARNING("Matrix is not complete!")) + +/obj/structure/machinery/computer/dropship_weapons/proc/equipment_update(obj/docking_port/mobile/marine_dropship/dropship) + SIGNAL_HANDLER + var/list/obj/structure/dropship_equipment/weapons = list() + for(var/obj/structure/dropship_equipment/weapon/weap as anything in dropship.equipments) + weapons.Add(weap) + firemission_envelope.update_weapons(weapons) /obj/structure/machinery/computer/dropship_weapons/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 0) - var/data[0] var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttle_tag) - if (!istype(dropship)) + if(!istype(dropship)) return - var/shuttle_state - switch(dropship.mode) - if(SHUTTLE_IDLE) - shuttle_state = "idle" - if(SHUTTLE_IGNITING) - shuttle_state = "warmup" - if(SHUTTLE_CALL) - shuttle_state = "in_transit" - if(SHUTTLE_CRASHED) - shuttle_state = "crashed" - - - var/list/equipment_data = list() - var/list/targets_data = list() - var/list/firemission_data = list() - var/list/firemission_edit_data = list() - var/list/firemission_edit_timeslices = list() - - for(var/ts = 1; ts<=firemission_envelope.fire_length; ts++) - firemission_edit_timeslices += ts - - var/current_mission_error = null - if(!faction) - return //no faction, no weapons - - var/datum/cas_iff_group/cas_group = cas_groups[faction] - - if(!cas_group) - return //broken group. No fighting - - for(var/X in cas_group.cas_signals) - var/datum/cas_signal/LT = X - if(!istype(LT) || !LT.valid_signal()) - continue - var/area/laser_area = get_area(LT.signal_loc) - targets_data += list(list("target_name" = "[LT.name] ([laser_area.name])", "target_tag" = LT.target_id)) - shuttle_equipments = dropship.equipments - var/element_nbr = 1 - for(var/X in dropship.equipments) - var/obj/structure/dropship_equipment/E = X - equipment_data += list(list("name"= sanitize(copytext(E.name,1,MAX_MESSAGE_LEN)), "eqp_tag" = element_nbr, "is_weapon" = E.is_weapon, "is_interactable" = E.is_interactable)) - element_nbr++ - E.linked_console = src - - - var/selected_eqp_name = "" - var/selected_eqp_ammo_name = "" - var/selected_eqp_ammo_amt = 0 - var/selected_eqp_max_ammo_amt = 0 var/screen_mode = 0 - var/fm_length = 0 - var/fm_offset = 0 - var/fm_direction = "" - var/fm_step_text = "" - var/firemission_signal - var/firemission_stat = 0 - if(selected_equipment) - selected_eqp_name = sanitize(copytext(selected_equipment.name,1,MAX_MESSAGE_LEN)) - if(selected_equipment.ammo_equipped) - selected_eqp_ammo_name = sanitize(copytext(selected_equipment.ammo_equipped.name,1,MAX_MESSAGE_LEN)) - selected_eqp_ammo_amt = selected_equipment.ammo_equipped.ammo_count - selected_eqp_max_ammo_amt = selected_equipment.ammo_equipped.max_ammo_count - screen_mode = selected_equipment.screen_mode - - var/firemission_id = 1 - var/found_selected = FALSE if(firemission_envelope) - firemission_stat = firemission_envelope.stat - fm_step_text = firemission_envelope.firemission_status_message() - for(var/datum/cas_fire_mission/X in firemission_envelope.missions) - if(!istype(X)) - continue //the fuck - var/error_code = X.check(src) - - var/selected = X == selected_firemission - if(error_code != FIRE_MISSION_ALL_GOOD && selected) - selected = FALSE - selected_firemission = null - var/can_edit = error_code != FIRE_MISSION_CODE_ERROR && !selected - - if(selected) - found_selected = TRUE - var/can_interact = firemission_envelope.stat == FIRE_MISSION_STATE_IDLE && error_code == FIRE_MISSION_ALL_GOOD - firemission_data += list(list("name"= sanitize(copytext(X.name,1,MAX_MESSAGE_LEN)), "mission_tag" = firemission_id, "can_edit" = can_edit, "can_interact" = can_interact, "selected" = selected)) - firemission_id++ - if(!istype(editing_firemission)) editing_firemission = null - //the fuck if(editing_firemission) var/error_code = editing_firemission.check(src) var/can_edit = error_code != FIRE_MISSION_CODE_ERROR - if(error_code != FIRE_MISSION_ALL_GOOD) - current_mission_error = editing_firemission.error_message(error_code) - else - current_mission_error = null if(!can_edit) editing_firemission = null //abort - else - screen_mode = 2 - for(var/datum/cas_fire_mission_record/firerec in editing_firemission.records) - var/gimbal = firerec.get_offsets() - var/ammo = firerec.get_ammo() - var/offsets = new /list(firerec.offsets.len) - for(var/idx = 1; idx < firerec.offsets.len; idx++) - offsets[idx] = firerec.offsets[idx] == null ? "-" : firerec.offsets[idx] - firemission_edit_data += list(list("name" = sanitize(copytext(firerec.weapon.name, 1, 50)), "ammo" = ammo, "gimbal" = gimbal, "offsets" = firerec.offsets)) - - if(!found_selected) - selected_firemission = null - - if(editing_firemission) - fm_length = editing_firemission.mission_length if((screen_mode != 0 && in_firemission_mode) || !selected_firemission) in_firemission_mode = FALSE @@ -196,490 +128,670 @@ selected_firemission = null if(selected_firemission && in_firemission_mode) screen_mode = 3 - fm_offset = firemission_envelope.recorded_offset - fm_direction = dir2text(firemission_envelope.recorded_dir) if(firemission_envelope.recorded_loc && (!firemission_envelope.recorded_loc.signal_loc || !firemission_envelope.recorded_loc.signal_loc:loc)) firemission_envelope.recorded_loc = null - firemission_signal = firemission_envelope.recorded_loc?firemission_envelope.recorded_loc.get_name() : "NOT SELECTED" - if(!fm_direction) - fm_direction = "NOT SELECTED" - - if(screen_mode != 3 || !selected_firemission || shuttle_state != "in_transit") - update_location(null) - // /if(firemission_envelope) - - data = list( - "shuttle_state" = shuttle_state, - "fire_mission_enabled" = dropship.in_flyby, - "equipment_data" = equipment_data, - "targets_data" = targets_data, - "selected_eqp" = selected_eqp_name, - "selected_eqp_ammo_name" = selected_eqp_ammo_name, - "selected_eqp_ammo_amt" = selected_eqp_ammo_amt, - "selected_eqp_max_ammo_amt" = selected_eqp_max_ammo_amt, - "screen_mode" = screen_mode, - "firemission_data" = firemission_data, - "editing_firemission" = editing_firemission, - "editing_firemission_length" = fm_length, - "firemission_edit_data" = firemission_edit_data, - "current_mission_error" = current_mission_error, - "firemission_edit_timeslices" = firemission_edit_timeslices, - "has_firemission" = !!firemission_envelope, - "can_firemission" = !!selected_firemission && shuttle_state == "in_transit", - "can_launch_firemission" = !!selected_firemission && shuttle_state == "in_transit" && firemission_stat != FIRE_MISSION_STATE_IDLE, - //firemission related stuff - "firemission_name" = (selected_firemission ? selected_firemission.name : ""), - "firemission_selected_laser" = firemission_signal, - "firemission_offset" = fm_offset, - "firemission_direction" = fm_direction, - "firemission_message" = fm_step_text, - "firemission_step" = firemission_stat, - ) + if(screen_mode != 3 || !selected_firemission || dropship.mode != SHUTTLE_CALL) + update_location(user, null) + + tgui_interact(user) + +/obj/structure/machinery/computer/dropship_weapons/tgui_interact(mob/user, datum/tgui/ui) + if(!registered) + var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttle_tag) + RegisterSignal(dropship, COMSIG_DROPSHIP_ADD_EQUIPMENT, PROC_REF(equipment_update)) + RegisterSignal(dropship, COMSIG_DROPSHIP_REMOVE_EQUIPMENT, PROC_REF(equipment_update)) + registered = TRUE - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if(!tacmap.map_holder) + var/level = SSmapping.levels_by_trait(tacmap.targeted_ztrait) + tacmap.map_holder = SSminimaps.fetch_tacmap_datum(level[1], tacmap.allowed_flags) - if (!ui) - ui = new(user, src, ui_key, "dropship_weapons_console.tmpl", "Weapons Control", 800, 600) - ui.set_initial_data(data) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + user.client.register_map_obj(tacmap.map_holder.map) + SEND_SIGNAL(src, COMSIG_CAMERA_REGISTER_UI, user) + ui = new(user, src, "DropshipWeaponsConsole", "Weapons Console") ui.open() - ui.set_auto_update(1) -/obj/structure/machinery/computer/dropship_weapons/Topic(href, href_list) - if(..()) - return +/obj/structure/machinery/computer/dropship_weapons/ui_close(mob/user) + . = ..() + SEND_SIGNAL(src, COMSIG_CAMERA_UNREGISTER_UI, user) + simulation.stop_watching(user) - add_fingerprint(usr) +/obj/structure/machinery/computer/dropship_weapons/ui_status(mob/user, datum/ui_state/state) + . = ..() + if(inoperable()) + return UI_CLOSE + if(!faction) + return UI_CLOSE + var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] + if(!cas_group) + return UI_CLOSE + +/obj/structure/machinery/computer/dropship_weapons/ui_state(mob/user) + return GLOB.not_incapacitated_and_adjacent_strict_state + +/obj/structure/machinery/computer/dropship_weapons/ui_static_data(mob/user) + . = list() + .["tactical_map_ref"] = tacmap.map_holder.map_ref + .["camera_map_ref"] = camera_map_name + +/obj/structure/machinery/computer/dropship_weapons/ui_data(mob/user) + . = list() var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttle_tag) if (!istype(dropship)) return - if(href_list["equip_interact"]) - var/base_tag = text2num(href_list["equip_interact"]) - var/obj/structure/dropship_equipment/E = shuttle_equipments[base_tag] - E.linked_console = src - E.equipment_interact(usr) - - if(href_list["open_fire"]) - var/targ_id = text2num(href_list["open_fire"]) - var/mob/M = usr - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(!H.allow_gun_usage) - to_chat(H, SPAN_WARNING("Your programming prevents you from operating dropship weaponry!")) - return - var/obj/structure/dropship_equipment/weapon/DEW = selected_equipment - if(!selected_equipment || !selected_equipment.is_weapon) - to_chat(usr, SPAN_WARNING("No weapon selected.")) - return - if(!skillcheck(M, SKILL_PILOT, DEW.skill_required)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("You don't have the training to fire this weapon!")) - return - - if(!faction) - return //no faction, no weapons - - var/datum/cas_iff_group/cas_group = cas_groups[faction] - - if(!cas_group) - return //broken group. No fighting - - for(var/X in cas_group.cas_signals) - var/datum/cas_signal/LT = X - if(LT.target_id == targ_id && LT.valid_signal()) - if(dropship.mode != SHUTTLE_CALL) - to_chat(usr, SPAN_WARNING("Dropship can only fire while in flight.")) - return - if(dropship.door_override) - return - if(!selected_equipment || !selected_equipment.is_weapon) - to_chat(usr, SPAN_WARNING("No weapon selected.")) - return - DEW = selected_equipment // for if the weapon somehow changes - if(!skillcheck(M, SKILL_PILOT, DEW.skill_required)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("You don't have the training to fire this weapon!")) - return - if(!dropship.in_flyby && DEW.fire_mission_only) - to_chat(usr, SPAN_WARNING("[DEW] requires a fire mission flight type to be fired.")) - return - - if(!DEW.ammo_equipped || DEW.ammo_equipped.ammo_count <= 0) - to_chat(usr, SPAN_WARNING("[DEW] has no ammo.")) - return - if(DEW.last_fired > world.time - DEW.firing_delay) - to_chat(usr, SPAN_WARNING("[DEW] just fired, wait for it to cool down.")) - return - if(!LT.signal_loc) - return - var/turf/TU = get_turf(LT.signal_loc) - var/area/targ_area = get_area(LT.signal_loc) - var/is_outside = FALSE - if(is_ground_level(TU.z)) - switch(targ_area.ceiling) - if(CEILING_NONE) - is_outside = TRUE - if(CEILING_GLASS) - is_outside = TRUE - if(!is_outside && !cavebreaker) //cavebreaker doesn't care - to_chat(usr, SPAN_WARNING("INVALID TARGET: target must be visible from high altitude.")) - return - if (protected_by_pylon(TURF_PROTECTION_CAS, TU)) - to_chat(usr, SPAN_WARNING("INVALID TARGET: biological-pattern interference with signal.")) - return - if(!DEW.ammo_equipped.can_fire_at(TU, usr)) - return - - DEW.open_fire(LT.signal_loc) - break - - if(href_list["deselect"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - selected_equipment = null - - if(href_list["create_mission"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - if(firemission_envelope.max_mission_len <= firemission_envelope.missions.len) - to_chat(usr, SPAN_WARNING("Cannot store more than [firemission_envelope.max_mission_len] Fire Missions.")) - return - var/fm_name = stripped_input(usr, "", "Enter Fire Mission Name", "Fire Mission [firemission_envelope.missions.len+1]", 50) - if(!fm_name || length(fm_name) < 5) - to_chat(usr, SPAN_WARNING("Name too short (at least 5 symbols).")) - return - var/fm_length = stripped_input(usr, "Enter length of the Fire Mission. Has to be less than [firemission_envelope.fire_length]. Use something that divides [firemission_envelope.fire_length] for optimal performance.", "Fire Mission Length (in tiles)", "[firemission_envelope.fire_length]", 5) - var/fm_length_n = text2num(fm_length) - if(!fm_length_n) - to_chat(usr, SPAN_WARNING("Incorrect input format.")) - return - if(fm_length_n > firemission_envelope.fire_length) - to_chat(usr, SPAN_WARNING("Fire Mission is longer than allowed by this vehicle.")) - return - if(firemission_envelope.stat != FIRE_MISSION_STATE_IDLE) - to_chat(usr, SPAN_WARNING("Vehicle has to be idle to allow Fire Mission editing and creation.")) - return - //everything seems to be fine now - firemission_envelope.generate_mission(fm_name, fm_length_n) - - if(href_list["mission_tag_delete"]) - var/ref = text2num(href_list["mission_tag_delete"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - if(ref>firemission_envelope.missions.len) - to_chat(usr, SPAN_WARNING("Fire Mission ID corrupted or already deleted.")) - return - if(selected_firemission == firemission_envelope.missions[ref]) - to_chat(usr, SPAN_WARNING("Can't delete selected Fire Mission.")) - return - var/result = firemission_envelope.delete_firemission(ref) - if(result != 1) - to_chat(usr, SPAN_WARNING("Unable to delete Fire Mission while in combat.")) - return - - if(href_list["mission_tag"]) - var/ref = text2num(href_list["mission_tag"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - if(ref>firemission_envelope.missions.len) - to_chat(usr, SPAN_WARNING("Fire Mission ID corrupted or deleted.")) - return - if(firemission_envelope.stat > FIRE_MISSION_STATE_IN_TRANSIT && firemission_envelope.stat < FIRE_MISSION_STATE_COOLDOWN) - to_chat(usr, SPAN_WARNING("Fire Mission already underway.")) - return - if(selected_firemission == firemission_envelope.missions[ref]) - selected_firemission = null - else - selected_firemission = firemission_envelope.missions[ref] - - if(href_list["mission_tag_edit"]) - var/ref = text2num(href_list["mission_tag_edit"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - if(ref>firemission_envelope.missions.len) - to_chat(usr, SPAN_WARNING("Fire Mission ID corrupted or deleted.")) - return - if(selected_firemission == firemission_envelope.missions[ref]) - to_chat(usr, SPAN_WARNING("Can't edit selected Fire Mission.")) - return - if(firemission_envelope.stat > FIRE_MISSION_STATE_IN_TRANSIT && firemission_envelope.stat < FIRE_MISSION_STATE_COOLDOWN) - to_chat(usr, SPAN_WARNING("Fire Mission already underway.")) - return - editing_firemission = firemission_envelope.missions[ref] - - if(href_list["leave_firemission_editing"]) - editing_firemission = null - - if(href_list["switch_to_firemission"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - in_firemission_mode = TRUE - - if(href_list["switch_to_simulation"]) - if(!selected_firemission) - to_chat(usr, SPAN_WARNING("Select a firemission before attempting to run the simulation")) - return - - configuration = selected_firemission - - // simulation mode - tgui_interact(usr) - - if(href_list["leave_firemission_execution"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - firemission_envelope.remove_user_from_tracking(usr) - in_firemission_mode = FALSE - - if(href_list["change_direction"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - var/list/directions = list(dir2text(NORTH), dir2text(SOUTH), dir2text(EAST), dir2text(WEST)) - var/chosen = tgui_input_list(usr, "Select new Direction for the strafing run", "Select Direction", directions) - - var/chosen_dir = text2dir(chosen) - if(!chosen_dir) - to_chat(usr, SPAN_WARNING("Error with direction detected.")) - return - - update_direction(chosen_dir) - - if(href_list["change_offset"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - - var/chosen = stripped_input(usr, "Select Fire Mission length, from 0 to [firemission_envelope.max_offset]", "Select Offset", "[firemission_envelope.recorded_offset]", 2) - var/chosen_offset = text2num(chosen) - - if(chosen_offset == null) - to_chat(usr, SPAN_WARNING("Error with offset detected.")) - return - - update_offset(chosen_offset) - - if(href_list["select_laser_firemission"]) - var/mob/M = usr - var/targ_id = text2num(href_list["select_laser_firemission"]) - if(!targ_id) - to_chat(usr, SPAN_WARNING("Bad Target.")) - return - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - if(firemission_envelope.stat > FIRE_MISSION_STATE_IN_TRANSIT && firemission_envelope.stat < FIRE_MISSION_STATE_COOLDOWN) - to_chat(usr, SPAN_WARNING("Fire Mission already underway.")) - return - if(dropship.mode != SHUTTLE_CALL) - to_chat(usr, SPAN_WARNING("Shuttle has to be in orbit.")) - return - var/datum/cas_iff_group/cas_group = cas_groups[faction] - var/datum/cas_signal/cas_sig - for(var/X in cas_group.cas_signals) - var/datum/cas_signal/LT = X - if(LT.target_id == targ_id && LT.valid_signal()) - cas_sig = LT - if(!cas_sig) - to_chat(usr, SPAN_WARNING("Target lost or obstructed.")) - return - - update_location(cas_sig) - - if(href_list["execute_firemission"]) - var/mob/M = usr - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(!H.allow_gun_usage) - to_chat(H, SPAN_WARNING("Your programming prevents you from operating dropship weaponry!")) + var/datum/cas_signal/sig = get_cas_signal(camera_target_id) + if(camera_target_id && !sig) + set_camera_target(null) + + .["screen_mode"] = get_screen_mode() + + // dropship info + .["shuttle_state"] = dropship.mode + .["fire_mission_enabled"] = dropship.in_flyby + + // equipment info + .["equipment_data"] = get_sanitised_equipment(user, dropship) + + // medevac targets + .["medevac_targets"] = list() + for(var/obj/structure/dropship_equipment/equipment as anything in dropship.equipments) + if (istype(equipment, /obj/structure/dropship_equipment/medevac_system)) + var/obj/structure/dropship_equipment/medevac_system/medevac = equipment + .["medevac_targets"] += medevac.ui_data(user) + // fultons + + .["fulton_targets"] = list() + for(var/obj/structure/dropship_equipment/equipment as anything in dropship.equipments) + if (istype(equipment, /obj/structure/dropship_equipment/fulton_system)) + var/obj/structure/dropship_equipment/fulton_system/fult = equipment + .["fulton_targets"] += fult.ui_data(user) + + .["targets_data"] = get_targets() + .["camera_target"] = camera_target_id + + if(selected_equipment) + .["selected_eqp"] = selected_equipment.ship_base.attach_id + if(selected_equipment.ammo_equipped) + var/obj/structure/ship_ammo/ammo_equipped = selected_equipment.ammo_equipped + .["selected_eqp_ammo_name"] = sanitize(copytext(ammo_equipped.name, 1, MAX_MESSAGE_LEN)) + .["selected_eqp_ammo_amt"] = ammo_equipped.ammo_count + .["selected_eqp_max_ammo_amt"] = ammo_equipped.max_ammo_count + + // firemission info + .["has_firemission"] = !!firemission_envelope + .["can_firemission"] = !!selected_firemission && dropship.mode == SHUTTLE_CALL + if(editing_firemission) + .["editing_firemission"] = editing_firemission + .["editing_firemission_length"] = editing_firemission ? editing_firemission.mission_length : 0 + var/error_code = editing_firemission.check(src) + .["current_mission_error"] = error_code != FIRE_MISSION_ALL_GOOD ? editing_firemission.error_message(error_code) : null + .["firemission_edit_data"] = get_edit_firemission_data() + + if(firemission_envelope) + .["can_launch_firemission"] = !!selected_firemission && dropship.mode == SHUTTLE_CALL && firemission_envelope.stat != FIRE_MISSION_STATE_IDLE + .["firemission_data"] = get_firemission_data(user) + .["firemission_state"] = firemission_envelope.stat + .["firemission_offset"] = firemission_envelope.recorded_offset + .["firemission_message"] = firemission_envelope.firemission_status_message() + .["firemission_name"] = selected_firemission ? selected_firemission.name : "" + .["firemission_step"] = firemission_envelope.stat + .["firemission_selected_laser"] = firemission_envelope.recorded_loc ? firemission_envelope.recorded_loc.get_name() : "NOT SELECTED" + + .["configuration"] = configuration + .["dummy_mode"] = simulation.dummy_mode + .["worldtime"] = world.time + .["nextdetonationtime"] = simulation.detonation_cooldown + .["detonation_cooldown"] = simulation.detonation_cooldown_time + +/obj/structure/machinery/computer/dropship_weapons/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + var/obj/docking_port/mobile/marine_dropship/shuttle = SSshuttle.getShuttle(shuttle_tag) + if(shuttle.is_hijacked) + return + + var/mob/user = ui.user + switch(action) + if("button_push") + playsound(src, get_sfx("terminal_button"), 25, FALSE) + return FALSE + + if("select_equipment") + var/base_tag = params["equipment_id"] + ui_equip_interact(user, base_tag) + return TRUE + + if("start_watching") + simulation.start_watching(user) + . = TRUE + + if("stop_watching") + simulation.stop_watching(user) + . = TRUE + + if("execute_simulated_firemission") + if(!configuration) + to_chat(user, SPAN_WARNING("No configured firemission")) return - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - if(firemission_envelope.stat != FIRE_MISSION_STATE_IDLE) - to_chat(usr, SPAN_WARNING("Fire Mission already underway.")) - return - if(dropship.mode != SHUTTLE_CALL) - to_chat(usr, SPAN_WARNING("Shuttle has to be in orbit.")) - return - if(!firemission_envelope.recorded_loc) - to_chat(usr, SPAN_WARNING("Target is not selected or lost.")) - return - - initiate_firemission() - - if(href_list["fm_weapon_id"]) - var/weap_ref = text2num(href_list["fm_weapon_id"])+1 - var/offset_ref = text2num(href_list["fm_offset_id"])+1 - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - if(!editing_firemission) - to_chat(usr, SPAN_WARNING("You are no longer editing Fire Mission.")) - return - if(!editing_firemission.records || editing_firemission.records.len FIRE_MISSION_STATE_IN_TRANSIT && firemission_envelope.stat < FIRE_MISSION_STATE_COOLDOWN) - to_chat(usr, SPAN_WARNING("Fire Mission already underway.")) - return - var/list/gimb = record.get_offsets() - var/min = gimb["min"] - var/max = gimb["max"] - var/offset_value = stripped_input(usr, "Enter offset for the [record.weapon.name]. It has to be between [min] and [max]. Enter '-' to remove fire order on this time stamp.", "Firing offset", "[record.offsets[offset_ref]]", 2) - if(offset_value == null) - return - if(offset_value == "-") - offset_value = "-" - else - offset_value = text2num(offset_value) - if(offset_value == null) - to_chat(usr, SPAN_WARNING("Incorrect offset value.")) + simulate_firemission(user) + . = TRUE + + if("switch_firemission") + configuration = tgui_input_list(user, "Select firemission to simulate", "Select firemission", firemission_envelope.missions, 30 SECONDS) + if(!selected_firemission) + to_chat(user, SPAN_WARNING("No configured firemission")) return - var/result = firemission_envelope.update_mission(firemission_envelope.missions.Find(editing_firemission), weap_ref, offset_ref, offset_value, TRUE) - if(result == 0) - to_chat(usr, SPAN_WARNING("Update caused an error: [firemission_envelope.mission_error]")) - if(result == -1) - to_chat(usr, SPAN_WARNING("System Error. Delete this Fire Mission.")) - - if(href_list["firemission_camera"]) - if(dropship.mode != SHUTTLE_CALL) - to_chat(usr, SPAN_WARNING("Shuttle has to be in orbit.")) - return - - if(!firemission_envelope.guidance) - to_chat(usr, SPAN_WARNING("Guidance is not selected or lost.")) - return - - firemission_envelope.add_user_to_tracking(usr) - - to_chat(usr, "You peek through the guidance camera.") - - if(href_list["cas_camera"]) - if(!ishuman(usr)) - to_chat(usr, SPAN_WARNING("You have no idea how to do that!")) - return - if(dropship.mode != SHUTTLE_CALL) - to_chat(usr, SPAN_WARNING("Shuttle has to be in orbit.")) - return - - if(!faction) - to_chat(usr, SPAN_DANGER("Bug encountered, this console doesn't have a faction set, report this to a coder!")) - return - - var/datum/cas_iff_group/cas_group = cas_groups[faction] - if(!cas_group) - to_chat(usr, SPAN_DANGER("Bug encountered, no CAS group exists for this console, report this to a coder!")) - return - - var/targ_id = text2num(href_list["cas_camera"]) - for(var/datum/cas_signal/LT as anything in cas_group.cas_signals) - if(LT.target_id == targ_id && LT.valid_signal()) - selected_cas_signal = LT - break - - if(!selected_cas_signal) - to_chat(usr, SPAN_WARNING("Target lost or obstructed.")) - return - if(selected_cas_signal && selected_cas_signal.linked_cam) - selected_cas_signal.linked_cam.view_directly(usr) - else - to_chat(usr, SPAN_WARNING("Error!")) - return - give_action(usr, /datum/action/human_action/cancel_view) - RegisterSignal(usr, COMSIG_MOB_RESET_VIEW, PROC_REF(remove_from_view)) - RegisterSignal(usr, COMSIG_MOB_RESISTED, PROC_REF(remove_from_view)) - firemission_envelope.apply_upgrade(usr) - to_chat(usr, SPAN_NOTICE("You peek through the guidance camera.")) - - ui_interact(usr) - -/obj/structure/machinery/computer/dropship_weapons/proc/remove_from_view(mob/living/carbon/human/user) - UnregisterSignal(user, COMSIG_MOB_RESET_VIEW) - UnregisterSignal(user, COMSIG_MOB_RESISTED) - if(selected_cas_signal && selected_cas_signal.linked_cam) - selected_cas_signal.linked_cam.remove_from_view(user) - firemission_envelope.remove_upgrades(user) - -/obj/structure/machinery/computer/dropship_weapons/proc/initiate_firemission() - set waitfor = 0 + if(!configuration) + configuration = selected_firemission + . = TRUE + + if("switchmode") + simulation.dummy_mode = tgui_input_list(user, "Select target type to simulate", "Target type", simulation.target_types, 30 SECONDS) + if(!simulation.dummy_mode) + simulation.dummy_mode = CLF_MODE + . = TRUE + + if("set-camera") + var/target_camera = params["equipment_id"] + set_camera_target(target_camera) + return TRUE + + if("set-camera-sentry") + var/equipment_tag = params["equipment_id"] + for(var/obj/structure/dropship_equipment/equipment as anything in shuttle.equipments) + var/mount_point = equipment.ship_base.attach_id + if(mount_point != equipment_tag) + continue + if(istype(equipment, /obj/structure/dropship_equipment/sentry_holder)) + var/obj/structure/dropship_equipment/sentry_holder/sentry = equipment + var/obj/structure/machinery/defenses/sentry/defense = sentry.deployed_turret + if(defense.has_camera) + defense.set_range() + var/datum/shape/rectangle/current_bb = defense.range_bounds + camera_area_equipment = sentry + SEND_SIGNAL(src, COMSIG_CAMERA_SET_AREA, current_bb.center_x, current_bb.center_y, defense.loc.z, current_bb.width, current_bb.height) + return TRUE + + if("clear-camera") + set_camera_target(null) + return TRUE + + if("medevac-target") + var/equipment_tag = params["equipment_id"] + for(var/obj/structure/dropship_equipment/equipment as anything in shuttle.equipments) + var/mount_point = equipment.ship_base.attach_id + if(mount_point != equipment_tag) + continue + if (istype(equipment, /obj/structure/dropship_equipment/medevac_system)) + var/obj/structure/dropship_equipment/medevac_system/medevac = equipment + var/target_ref = params["ref"] + medevac.automate_interact(user, target_ref) + if(medevac.linked_stretcher) + SEND_SIGNAL(src, COMSIG_CAMERA_SET_TARGET, medevac.linked_stretcher, 5, 5) + return TRUE + + if("fulton-target") + var/equipment_tag = params["equipment_id"] + for(var/obj/structure/dropship_equipment/equipment as anything in shuttle.equipments) + var/mount_point = equipment.ship_base.attach_id + if(mount_point != equipment_tag) + continue + if (istype(equipment, /obj/structure/dropship_equipment/fulton_system)) + var/obj/structure/dropship_equipment/fulton_system/fulton = equipment + var/target_ref = params["ref"] + fulton.automate_interact(user, target_ref) + return TRUE + + if("fire-weapon") + var/weapon_tag = params["eqp_tag"] + var/obj/structure/dropship_equipment/weapon/DEW = get_weapon(weapon_tag) + if(!DEW) + return FALSE + + var/datum/cas_signal/sig = get_cas_signal(camera_target_id) + if(!sig) + return FALSE + + selected_equipment = DEW + if(ui_open_fire(user, shuttle, camera_target_id)) + if(firemission_envelope) + firemission_envelope.untrack_object() + return TRUE + + if("deploy-equipment") + var/equipment_tag = params["equipment_id"] + for(var/obj/structure/dropship_equipment/equipment as anything in shuttle.equipments) + var/mount_point = equipment.ship_base.attach_id + if(mount_point != equipment_tag) + continue + if(camera_area_equipment == equipment) + set_camera_target(null) + equipment.equipment_interact(user) + return TRUE + + if("firemission-create") + var/name = params["firemission_name"] + var/length = params["firemission_length"] + var/length_n = text2num(length) + if(!length_n) + to_chat(user, SPAN_WARNING("Incorrect input format.")) + return FALSE + ui_create_firemission(user, name, length_n) + return TRUE + + if("firemission-delete") + var/name = params["firemission_name"] + ui_delete_firemission(user, name) + return TRUE + + if("firemission-dual-offset-camera") + var/target_id = params["target_id"] + + var/x_offset_value = params["x_offset_value"] + var/y_offset_value = params["y_offset_value"] + + camera_target_id = target_id + var/datum/cas_signal/cas_sig = get_cas_signal(camera_target_id, valid_only = TRUE) + // we don't want rapid offset changes to trigger admin warnings + // and block the user from accessing TGUI + // we change the minute_count + user.client.reduce_minute_count() + if(!cas_sig) + return TRUE + + // find position of cas_sig with offset dir and value applied + var/dx = text2num(x_offset_value) + var/dy = text2num(y_offset_value) + + var/obj/current = cas_sig.signal_loc + var/obj/new_target = locate( + current.x + dx, + current.y + dy, + current.z) + + camera_area_equipment = null + firemission_envelope.change_current_loc(new_target, cas_sig) + return TRUE + + if("nvg-enable") + SEND_SIGNAL(src, COMSIG_CAMERA_SET_NVG, 5, "#7aff7a") + return TRUE + + if("nvg-disable") + SEND_SIGNAL(src, COMSIG_CAMERA_CLEAR_NVG) + return TRUE + + if("firemission-edit") + var/fm_tag = text2num(params["tag"]) + var/weapon_id = text2num(params["weapon_id"]) + var/offset_id = text2num(params["offset_id"]) + var/offset_value = text2num(params["offset_value"]) + return ui_firemission_change_offset(user, fm_tag, weapon_id, offset_id + 1, offset_value) + + if("firemission-execute") + var/fm_tag = text2num(params["tag"]) + var/direction = params["direction"] + var/target_id = params["target_id"] + var/offset_x_value = params["offset_x_value"] + var/offset_y_value = params["offset_y_value"] + + if(!ui_select_firemission(user, fm_tag)) + playsound(src, 'sound/machines/terminal_error.ogg', 5, 1) + return FALSE + if(!update_direction(user, text2num(direction))) + playsound(src, 'sound/machines/terminal_error.ogg', 5, 1) + return FALSE + if(!ui_select_laser_firemission(user, shuttle, target_id)) + playsound(src, 'sound/machines/terminal_error.ogg', 5, 1) + return FALSE + + initiate_firemission(user, fm_tag, direction, text2num(offset_x_value), text2num(offset_y_value)) + return TRUE + +/obj/structure/machinery/computer/dropship_weapons/proc/get_weapon(eqp_tag) var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttle_tag) - if (!istype(dropship)) - return - if (dropship.timer && dropship.timeLeft(1) < firemission_envelope.get_total_duration()) - to_chat(usr, "Not enough time to complete the Fire Mission") + var/obj/structure/dropship_equipment/equipment = dropship.equipments[eqp_tag] + if(istype(equipment, /obj/structure/dropship_equipment/weapon)) + //is weapon + return equipment + return + +/obj/structure/machinery/computer/dropship_weapons/proc/get_cas_signal(target_ref, valid_only = FALSE) + if(!target_ref) return - if (!dropship.in_flyby || dropship.mode != SHUTTLE_CALL) - to_chat(usr, "Has to be in Fly By mode") + + var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] + for(var/datum/cas_signal/sig in cas_group.cas_signals) + if(sig.target_id == target_ref) + if(valid_only && !sig.valid_signal()) + continue + return sig + +/obj/structure/machinery/computer/dropship_weapons/proc/set_camera_target(target_ref) + camera_area_equipment = null + if(firemission_envelope) + firemission_envelope.untrack_object() + + var/datum/cas_signal/target = get_cas_signal(target_ref) + camera_target_id = target_ref + if(!target) + SEND_SIGNAL(src, COMSIG_CAMERA_CLEAR) return - var/fmid = firemission_envelope.missions.Find(selected_firemission) - if(!fmid) - to_chat(usr, "No Firemission selected") + var/cam_width = camera_width + var/cam_height = camera_height + if(upgraded == MATRIX_WIDE) + cam_width = cam_width * 1.5 + cam_height = cam_height * 1.5 + + SEND_SIGNAL(src, COMSIG_CAMERA_SET_TARGET, target.linked_cam, cam_width, cam_height) + +/obj/structure/machinery/computer/dropship_weapons/proc/get_screen_mode() + . = 0 + if(selected_equipment) + . = selected_equipment.screen_mode + if(editing_firemission && editing_firemission.check(src) != FIRE_MISSION_CODE_ERROR) + . = 2 + if(selected_firemission && in_firemission_mode) + . = 3 +/obj/structure/machinery/computer/dropship_weapons/proc/get_firemission_data(mob/user) + . = list() + var/firemission_id = 1 + for(var/datum/cas_fire_mission/firemission in firemission_envelope.missions) + var/error_code = firemission.check(src) + + var/selected = firemission == selected_firemission + var/can_edit = error_code != FIRE_MISSION_CODE_ERROR && !selected + + var/can_interact = firemission_envelope.stat == FIRE_MISSION_STATE_IDLE && error_code == FIRE_MISSION_ALL_GOOD + var/list/fm_data = firemission.ui_data(user) + fm_data["mission_tag"] = firemission_id + fm_data["can_edit"] = can_edit + fm_data["can_interact"] = can_interact + fm_data["selected"] = selected + . += list(fm_data) + + firemission_id++ + +/obj/structure/machinery/computer/dropship_weapons/proc/get_edit_firemission_data() + . = list() + if(!editing_firemission) return + for(var/datum/cas_fire_mission_record/firerec as anything in editing_firemission.records) + var/gimbal = firerec.get_offsets() + var/ammo = firerec.get_ammo() + var/offsets = new /list(firerec.offsets.len) + for(var/idx = 1; idx < firerec.offsets.len; idx++) + offsets[idx] = firerec.offsets[idx] == null ? "-" : firerec.offsets[idx] + . += list( + "name" = sanitize(copytext(firerec.weapon.name, 1, 50)), + "ammo" = ammo, + "gimbal" = gimbal, + "offsets" = firerec.offsets + ) + +/obj/structure/machinery/computer/dropship_weapons/proc/get_sanitised_equipment(mob/user, obj/docking_port/mobile/marine_dropship/dropship) + . = list() + var/element_nbr = 1 + for(var/obj/structure/dropship_equipment/equipment in dropship.equipments) + var/list/data = list( + "name"= equipment.name, + "shorthand" = equipment.shorthand, + "eqp_tag" = element_nbr, + "is_weapon" = equipment.is_weapon, + "is_interactable" = equipment.is_interactable, + "mount_point" = equipment.ship_base.attach_id, + "is_missile" = istype(equipment, /obj/structure/dropship_equipment/weapon/rocket_pod), + "ammo_name" = equipment.ammo_equipped?.name, + "ammo" = equipment.ammo_equipped?.ammo_count, + "max_ammo" = equipment.ammo_equipped?.max_ammo_count, + "firemission_delay" = equipment.ammo_equipped?.fire_mission_delay, + "burst" = equipment.ammo_equipped?.ammo_used_per_firing, + "data" = equipment.ui_data(user) + ) + + . += list(data) - var/result = firemission_envelope.execute_firemission(firemission_envelope.recorded_loc, firemission_envelope.recorded_offset, firemission_envelope.recorded_dir, fmid) - if(result<1) - to_chat(usr, "Screen beeps with an error: "+ firemission_envelope.mission_error) - else - update_trace_loc() + element_nbr++ + equipment.linked_console = src -/obj/structure/machinery/computer/dropship_weapons/proc/update_offset(new_offset) - var/result = firemission_envelope.change_offset(new_offset) - if(result<1) - to_chat(usr, "Screen beeps with an error: "+ firemission_envelope.mission_error) + +/obj/structure/machinery/computer/dropship_weapons/proc/get_targets() + . = list() + var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] + for(var/datum/cas_signal/LT as anything in cas_group.cas_signals) + if(!istype(LT) || !LT.valid_signal()) + continue + var/area/laser_area = get_area(LT.signal_loc) + . += list( + list( + "target_name" = "[LT.name] ([laser_area.name])", + "target_tag" = LT.target_id + ) + ) + +/obj/structure/machinery/computer/dropship_weapons/proc/ui_equip_interact(mob/user, base_tag) + var/obj/docking_port/mobile/marine_dropship/shuttle = SSshuttle.getShuttle(shuttle_tag) + var/obj/structure/dropship_equipment/E = shuttle.equipments[base_tag] + E.linked_console = src + E.equipment_interact(user) + +/obj/structure/machinery/computer/dropship_weapons/proc/ui_open_fire(mob/weapon_operator, obj/docking_port/mobile/marine_dropship/dropship, targ_id) + if(ishuman(weapon_operator)) + var/mob/living/carbon/human/human_operator = weapon_operator + if(!human_operator.allow_gun_usage) + to_chat(human_operator, SPAN_WARNING("Your programming prevents you from operating dropship weaponry!")) + return FALSE + var/obj/structure/dropship_equipment/weapon/DEW = selected_equipment + if(!selected_equipment || !selected_equipment.is_weapon) + to_chat(weapon_operator, SPAN_WARNING("No weapon selected.")) + return FALSE + if(!skillcheck(weapon_operator, SKILL_PILOT, DEW.skill_required)) //only pilots can fire dropship weapons. + to_chat(weapon_operator, SPAN_WARNING("You don't have the training to fire this weapon!")) + return FALSE + if(dropship.mode != SHUTTLE_CALL) + to_chat(weapon_operator, SPAN_WARNING("Dropship can only fire while in flight.")) + return FALSE + if(!faction) + return FALSE//no faction, no weapons + if(!selected_equipment || !selected_equipment.is_weapon) + to_chat(weapon_operator, SPAN_WARNING("No weapon selected.")) + return FALSE + if(dropship.door_override) + return FALSE + if(!skillcheck(weapon_operator, SKILL_PILOT, DEW.skill_required)) //only pilots can fire dropship weapons. + to_chat(weapon_operator, SPAN_WARNING("You don't have the training to fire this weapon!")) + return FALSE + if(!dropship.in_flyby && DEW.fire_mission_only) + to_chat(weapon_operator, SPAN_WARNING("[DEW] requires a fire mission flight type to be fired.")) + return FALSE + + if(!DEW.ammo_equipped || DEW.ammo_equipped.ammo_count <= 0) + to_chat(weapon_operator, SPAN_WARNING("[DEW] has no ammo.")) + return FALSE + if(DEW.last_fired > world.time - DEW.firing_delay) + to_chat(weapon_operator, SPAN_WARNING("[DEW] just fired, wait for it to cool down.")) + return FALSE + + var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] + + if(!cas_group) + return FALSE//broken group. No fighting + + for(var/datum/cas_signal/LT in cas_group.cas_signals) + if(LT.target_id != targ_id || !LT.valid_signal()) + continue + if(!LT.signal_loc) + return FALSE + var/turf/TU = get_turf(LT.signal_loc) + var/area/targ_area = get_area(LT.signal_loc) + var/is_outside = FALSE + if(is_ground_level(TU.z)) + switch(targ_area.ceiling) + if(CEILING_NONE) + is_outside = TRUE + if(CEILING_GLASS) + is_outside = TRUE + if(!is_outside && !cavebreaker) //cavebreaker doesn't care + to_chat(weapon_operator, SPAN_WARNING("INVALID TARGET: target must be visible from high altitude.")) + return FALSE + if (protected_by_pylon(TURF_PROTECTION_CAS, TU)) + to_chat(weapon_operator, SPAN_WARNING("INVALID TARGET: biological-pattern interference with signal.")) + return FALSE + if(!DEW.ammo_equipped.can_fire_at(TU, weapon_operator)) + return FALSE + + DEW.open_fire(LT.signal_loc) + return TRUE + return FALSE + +/obj/structure/machinery/computer/dropship_weapons/proc/ui_create_firemission(mob/weapon_operator, firemission_name, firemission_length) + if(!skillcheck(weapon_operator, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. + to_chat(weapon_operator, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) + return FALSE + // Check name + if(!firemission_name || length(firemission_name) < 1) + to_chat(weapon_operator, SPAN_WARNING("Name too short (at least 1 symbols).")) + return FALSE + // Check length + if(!firemission_length) + to_chat(weapon_operator, SPAN_WARNING("Incorrect input format.")) + return FALSE + if(firemission_length > firemission_envelope.fire_length) + to_chat(weapon_operator, SPAN_WARNING("Fire Mission is longer than allowed by this vehicle.")) + return FALSE + if(firemission_envelope.stat != FIRE_MISSION_STATE_IDLE) + to_chat(weapon_operator, SPAN_WARNING("Vehicle has to be idle to allow Fire Mission editing and creation.")) + return FALSE + + for(var/datum/cas_fire_mission/mission in firemission_envelope.missions) + if(firemission_name == mission.name) + to_chat(weapon_operator, SPAN_WARNING("Fire Mission name must be unique.")) + return FALSE + //everything seems to be fine now + firemission_envelope.generate_mission(firemission_name, firemission_length) + return TRUE + +/obj/structure/machinery/computer/dropship_weapons/proc/ui_delete_firemission(mob/weapon_operator, firemission_tag) + if(!skillcheck(weapon_operator, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. + to_chat(weapon_operator, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) + return FALSE + if(firemission_tag > firemission_envelope.missions.len) + to_chat(weapon_operator, SPAN_WARNING("Fire Mission ID corrupted or already deleted.")) + return FALSE + if(selected_firemission == firemission_envelope.missions[firemission_tag]) + to_chat(weapon_operator, SPAN_WARNING("Can't delete selected Fire Mission.")) + return FALSE + var/result = firemission_envelope.delete_firemission(firemission_tag) + if(result != 1) + to_chat(weapon_operator, SPAN_WARNING("Unable to delete Fire Mission while in combat.")) + return FALSE + return TRUE + +/obj/structure/machinery/computer/dropship_weapons/proc/ui_select_firemission(mob/weapon_operator, firemission_tag) + if(!skillcheck(weapon_operator, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. + to_chat(weapon_operator, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) + return FALSE + if(firemission_envelope.stat > FIRE_MISSION_STATE_IN_TRANSIT && firemission_envelope.stat < FIRE_MISSION_STATE_COOLDOWN) + to_chat(weapon_operator, SPAN_WARNING("Fire Mission already underway.")) + return FALSE + if(firemission_tag > firemission_envelope.missions.len) + to_chat(weapon_operator, SPAN_WARNING("Fire Mission ID corrupted or deleted.")) + return FALSE + if(selected_firemission == firemission_envelope.missions[firemission_tag]) + selected_firemission = null else - update_trace_loc() + selected_firemission = firemission_envelope.missions[firemission_tag] + return TRUE + +/obj/structure/machinery/computer/dropship_weapons/proc/ui_firemission_change_offset(mob/weapons_operator, fm_tag, weapon_id, offset_id, offset_value) + if(!skillcheck(weapons_operator, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. + to_chat(weapons_operator, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) + return FALSE + + var/result = firemission_envelope.update_mission(fm_tag, weapon_id, offset_id, offset_value) + if(result != FIRE_MISSION_ALL_GOOD) + playsound(src, 'sound/machines/terminal_error.ogg', 5, 1) + return TRUE + +/obj/structure/machinery/computer/dropship_weapons/proc/ui_select_laser_firemission(mob/weapons_operator, obj/docking_port/mobile/marine_dropship/dropship, laser) + if(!laser) + to_chat(weapons_operator, SPAN_WARNING("Bad Target.")) + return FALSE + if(!skillcheck(weapons_operator, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. + to_chat(weapons_operator, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) + return FALSE + if(firemission_envelope.stat > FIRE_MISSION_STATE_IN_TRANSIT && firemission_envelope.stat < FIRE_MISSION_STATE_COOLDOWN) + to_chat(weapons_operator, SPAN_WARNING("Fire Mission already underway.")) + return FALSE + if(dropship.mode != SHUTTLE_CALL) + to_chat(weapons_operator, SPAN_WARNING("Shuttle has to be in orbit.")) + return FALSE + var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] + var/datum/cas_signal/cas_sig + for(var/X in cas_group.cas_signals) + var/datum/cas_signal/LT = X + if(LT.target_id == laser && LT.valid_signal()) + cas_sig = LT + if(!cas_sig) + to_chat(weapons_operator, SPAN_WARNING("Target lost or obstructed.")) + return FALSE + + update_location(weapons_operator, cas_sig) + return TRUE + +/obj/structure/machinery/computer/dropship_weapons/proc/initiate_firemission(mob/user, fmId, dir, offset_x, offset_y) + set waitfor = 0 + var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttle_tag) + if (!istype(dropship)) + return FALSE + if (!dropship.in_flyby || dropship.mode != SHUTTLE_CALL) + to_chat(user, SPAN_WARNING("Has to be in Fly By mode")) + return FALSE + if (dropship.timer && dropship.timeLeft(1) < firemission_envelope.get_total_duration()) + to_chat(user, SPAN_WARNING("Not enough time to complete the Fire Mission")) + return FALSE + var/datum/cas_signal/recorded_loc = firemission_envelope.recorded_loc + var/obj/source = recorded_loc.signal_loc + var/turf/target = locate( + source.x + offset_x, + source.y + offset_y, + source.z + ) + var/result = firemission_envelope.execute_firemission(recorded_loc, target, dir, fmId) + if(result != FIRE_MISSION_ALL_GOOD) + to_chat(user, SPAN_WARNING("Screen beeps with an error: [firemission_envelope.mission_error]")) + return TRUE -/obj/structure/machinery/computer/dropship_weapons/proc/update_location(new_location) +/obj/structure/machinery/computer/dropship_weapons/proc/update_location(mob/user, new_location) var/result = firemission_envelope.change_target_loc(new_location) if(result<1) - to_chat(usr, "Screen beeps with an error: "+ firemission_envelope.mission_error) - else - update_trace_loc() + to_chat(user, SPAN_WARNING("Screen beeps with an error: [firemission_envelope.mission_error]")) + return FALSE + return TRUE -/obj/structure/machinery/computer/dropship_weapons/proc/update_direction(new_direction) +/obj/structure/machinery/computer/dropship_weapons/proc/update_direction(mob/user, new_direction) var/result = firemission_envelope.change_direction(new_direction) if(result<1) - to_chat(usr, "Screen beeps with an error: " + firemission_envelope.mission_error) - else - update_trace_loc() + to_chat(user, SPAN_WARNING("Screen beeps with an error: [firemission_envelope.mission_error]")) + return FALSE + return TRUE -/obj/structure/machinery/computer/dropship_weapons/on_unset_interaction(mob/user) - ..() - if(firemission_envelope && firemission_envelope.guidance) - firemission_envelope.remove_user_from_tracking(user) - -/obj/structure/machinery/computer/dropship_weapons/proc/update_trace_loc() +/obj/structure/machinery/computer/dropship_weapons/proc/update_trace_loc(mob/user) if(!firemission_envelope) return if(firemission_envelope.recorded_loc == null || firemission_envelope.recorded_dir == null || firemission_envelope.recorded_offset == null) return if(firemission_envelope.recorded_loc.obstructed_signal()) - if(firemission_envelope.user_is_guided(usr)) - to_chat(usr, SPAN_WARNING("Signal Obstructed. You have to go in blind.")) + if(firemission_envelope.user_is_guided(user)) + to_chat(user, SPAN_WARNING("Signal Obstructed. You have to go in blind.")) return var/sx = 0 var/sy = 0 @@ -704,108 +816,29 @@ return var/area/laser_area = get_area(shootloc) if(!istype(laser_area) || CEILING_IS_PROTECTED(laser_area.ceiling, CEILING_PROTECTION_TIER_1)) - if(firemission_envelope.user_is_guided(usr)) - to_chat(usr, SPAN_WARNING("Vision Obstructed. You have to go in blind.")) + if(firemission_envelope.user_is_guided(user)) + to_chat(user, SPAN_WARNING("Vision Obstructed. You have to go in blind.")) firemission_envelope.change_current_loc() else firemission_envelope.change_current_loc(shootloc) + return TRUE /obj/structure/machinery/computer/dropship_weapons/dropship1 name = "\improper 'Alamo' weapons controls" - req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_DROPSHIP, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_DROPSHIP, ACCESS_WY_FLIGHT) firemission_envelope = new /datum/cas_fire_envelope/uscm_dropship() - -/obj/structure/machinery/computer/dropship_weapons/dropship1/New() - ..() shuttle_tag = DROPSHIP_ALAMO /obj/structure/machinery/computer/dropship_weapons/dropship2 name = "\improper 'Normandy' weapons controls" - req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_DROPSHIP, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_DROPSHIP, ACCESS_WY_FLIGHT) firemission_envelope = new /datum/cas_fire_envelope/uscm_dropship() - -/obj/structure/machinery/computer/dropship_weapons/dropship2/New() - ..() shuttle_tag = DROPSHIP_NORMANDY /obj/structure/machinery/computer/dropship_weapons/Destroy() . = ..() - QDEL_NULL(firemission_envelope) - -// CAS TGUI SHIT \\ - -/obj/structure/machinery/computer/dropship_weapons/tgui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "CasSim", "[src.name]") - ui.open() - -/obj/structure/machinery/computer/dropship_weapons/ui_state(mob/user) // we gotta do custom shit here so that it always closes instead of suspending - return GLOB.not_incapacitated_and_adjacent_strict_state - -/obj/structure/machinery/computer/dropship_weapons/ui_status(mob/user, datum/ui_state/state) - . = ..() - if(inoperable()) - return UI_CLOSE - -/obj/structure/machinery/computer/dropship_weapons/ui_data(mob/user) - var/list/data = list() - - data["configuration"] = configuration - data["looking"] = simulation.looking_at_simulation - data["dummy_mode"] = simulation.dummy_mode - - data["worldtime"] = world.time - data["nextdetonationtime"] = simulation.detonation_cooldown - data["detonation_cooldown"] = simulation.detonation_cooldown_time - - return data - -/obj/structure/machinery/computer/dropship_weapons/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) - . = ..() - if(.) - return - - var/user = ui.user - - switch(action) - if("start_watching") - simulation.start_watching(user) - . = TRUE - - if("stop_watching") - simulation.stop_watching(user) - . = TRUE - - if("execute_simulated_firemission") - if(!configuration) - to_chat(user, SPAN_WARNING("No configured firemission")) - return - simulate_firemission(user) - . = TRUE - - if("switch_firemission") - configuration = tgui_input_list(user, "Select firemission to simulate", "Select firemission", firemission_envelope.missions, 30 SECONDS) - if(!selected_firemission) - to_chat(user, SPAN_WARNING("No configured firemission")) - return - if(!configuration) - configuration = selected_firemission - . = TRUE - - if("switchmode") - simulation.dummy_mode = tgui_input_list(user, "Select target type to simulate", "Target type", simulation.target_types, 30 SECONDS) - if(!simulation.dummy_mode) - simulation.dummy_mode = CLF_MODE - . = TRUE - -/obj/structure/machinery/computer/dropship_weapons/ui_close(mob/user) - . = ..() - if(simulation.looking_at_simulation) - simulation.stop_watching(user) - -// CAS TGUI SHIT END \\ + QDEL_NULL(tacmap) /obj/structure/machinery/computer/dropship_weapons/proc/simulate_firemission(mob/living/user) diff --git a/code/game/machinery/computer/groundside_operations.dm b/code/game/machinery/computer/groundside_operations.dm index 6cefa28a2c95..95ea46177ca2 100644 --- a/code/game/machinery/computer/groundside_operations.dm +++ b/code/game/machinery/computer/groundside_operations.dm @@ -25,7 +25,11 @@ add_pmcs = FALSE else if(SSticker.current_state < GAME_STATE_PLAYING) RegisterSignal(SSdcs, COMSIG_GLOB_MODE_PRESETUP, PROC_REF(disable_pmc)) - tacmap = new(src, minimap_type) + if(announcement_faction == FACTION_MARINE) + tacmap = new /datum/tacmap/drawing(src, minimap_type) + else + tacmap = new(src, minimap_type) // Non-drawing version + return ..() /obj/structure/machinery/computer/groundside_operations/Destroy() @@ -55,7 +59,7 @@ dat += "
[is_announcement_active ? "Make An Announcement" : "*Unavailable*"]" dat += "
Tactical Map" dat += "

" - var/datum/squad/marine/echo/echo_squad = locate() in RoleAuthority.squads + var/datum/squad/marine/echo/echo_squad = locate() in GLOB.RoleAuthority.squads if(!echo_squad.active && faction == FACTION_MARINE) dat += "
Designate Echo Squad" dat += "

" @@ -104,6 +108,7 @@ dat += "No Squad selected!
" else var/leader_text = "" + var/tl_text = "" var/spec_text = "" var/medic_text = "" var/engi_text = "" @@ -160,11 +165,15 @@ if(!H.key || !H.client) SSD_count++ continue + if(H == current_squad.squad_leader && role != JOB_SQUAD_LEADER) + act_sl = "(ASL)" var/marine_infos = "[mob_name][role][act_sl][mob_state][area_name]" switch(role) if(JOB_SQUAD_LEADER) leader_text += marine_infos + if(JOB_SQUAD_TEAM_LEADER) + tl_text += marine_infos if(JOB_SQUAD_SPECIALIST) spec_text += marine_infos if(JOB_SQUAD_MEDIC) @@ -183,7 +192,7 @@ dat += "
Search:
" dat += "" dat += "" - dat += leader_text + spec_text + medic_text + engi_text + smart_text + marine_text + misc_text + dat += leader_text + tl_text + spec_text + medic_text + engi_text + smart_text + marine_text + misc_text dat += "
NameRoleStateLocation
" dat += "

" dat += "Refresh
" @@ -201,6 +210,19 @@ return if("announce") + var/mob/living/carbon/human/human_user = usr + var/obj/item/card/id/idcard = human_user.get_active_hand() + var/bio_fail = FALSE + if(!istype(idcard)) + idcard = human_user.wear_id + if(!istype(idcard)) + bio_fail = TRUE + else if(!idcard.check_biometrics(human_user)) + bio_fail = TRUE + if(bio_fail) + to_chat(human_user, SPAN_WARNING("Biometrics failure! You require an authenticated ID card to perform this action!")) + return FALSE + if(usr.client.prefs.muted & MUTE_IC) to_chat(usr, SPAN_DANGER("You cannot send Announcements (muted).")) return @@ -231,7 +253,7 @@ log_announcement("[key_name(usr)] has announced the following: [input]") if("award") - print_medal(usr, src) + open_medal_panel(usr, src) if("selectlz") if(SSticker.mode.active_lz) @@ -247,7 +269,7 @@ if("pick_squad") var/list/squad_list = list() - for(var/datum/squad/S in RoleAuthority.squads) + for(var/datum/squad/S in GLOB.RoleAuthority.squads) if(S.active && S.faction == faction) squad_list += S.name @@ -276,7 +298,7 @@ usr.UnregisterSignal(cam, COMSIG_PARENT_QDELETING) cam = null usr.reset_view(null) - else if(usr.client.view != world_view_size) + else if(usr.client.view != GLOB.world_view_size) to_chat(usr, SPAN_WARNING("You're too busy peering through binoculars.")) else if(cam) @@ -286,11 +308,24 @@ usr.RegisterSignal(cam, COMSIG_PARENT_QDELETING, TYPE_PROC_REF(/mob, reset_observer_view_on_deletion)) if("activate_echo") - var/reason = input(usr, "What is the purpose of Echo Squad?", "Activation Reason") + var/mob/living/carbon/human/human_user = usr + var/obj/item/card/id/idcard = human_user.get_active_hand() + var/bio_fail = FALSE + if(!istype(idcard)) + idcard = human_user.wear_id + if(!istype(idcard)) + bio_fail = TRUE + else if(!idcard.check_biometrics(human_user)) + bio_fail = TRUE + if(bio_fail) + to_chat(human_user, SPAN_WARNING("Biometrics failure! You require an authenticated ID card to perform this action!")) + return FALSE + + var/reason = strip_html(input(usr, "What is the purpose of Echo Squad?", "Activation Reason")) if(!reason) return if(alert(usr, "Confirm activation of Echo Squad for [reason]", "Confirm Activation", "Yes", "No") != "Yes") return - var/datum/squad/marine/echo/echo_squad = locate() in RoleAuthority.squads + var/datum/squad/marine/echo/echo_squad = locate() in GLOB.RoleAuthority.squads if(!echo_squad) visible_message(SPAN_BOLDNOTICE("ERROR: Unable to locate Echo Squad database.")) return diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 7d82c5bd9a75..40b23667636f 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -5,7 +5,7 @@ desc = "This can be used to check medical records." icon_state = "medcomp" density = TRUE - req_one_access = list(ACCESS_MARINE_MEDBAY, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_MARINE_MEDBAY, ACCESS_WY_MEDICAL) circuit = /obj/item/circuitboard/computer/med_data var/obj/item/card/id/scan = null var/last_user_name = "" @@ -24,7 +24,7 @@ set name = "Eject ID Card" set src in oview(1) - if(!usr || usr.stat || usr.lying) return + if(!usr || usr.is_mob_incapacitated()) return if(scan) to_chat(usr, "You remove \the [scan] from \the [src].") @@ -108,7 +108,7 @@ dat += "Back" dat += "
Medical Robots:" var/bdat = null - for(var/obj/structure/machinery/bot/medbot/M in machines) + for(var/obj/structure/machinery/bot/medbot/M in GLOB.machines) if(M.z != src.z) continue //only find medibots on the same z-level as the computer var/turf/bl = get_turf(M) @@ -123,7 +123,6 @@ else dat += "
[bdat]" - else else dat += text("{Log In}", src) show_browser(user, dat, "Medical Records", "med_rec") @@ -183,14 +182,6 @@ src.rank = "AI" src.screen = 1 - else if (isrobot(usr)) - src.active1 = null - src.active2 = null - src.authenticated = usr.name - var/mob/living/silicon/robot/R = usr - src.rank = "[R.modtype] [R.braintype]" - src.screen = 1 - else if (istype(src.scan, /obj/item/card/id)) src.active1 = null src.active2 = null @@ -365,8 +356,6 @@ for(var/datum/data/record/E in GLOB.data_core.medical) if ((E.fields["ref"] == R.fields["ref"] || E.fields["id"] == R.fields["id"])) M = E - else - //Foreach continue //goto(2540) src.active1 = R src.active2 = M src.screen = 4 @@ -401,7 +390,7 @@ var/counter = 1 while(src.active2.fields[text("com_[]", counter)]) counter++ - src.active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]
[t1]") + src.active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [GLOB.game_year]
[t1]") if (href_list["del_c"]) if ((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])])) @@ -417,16 +406,12 @@ for(var/datum/data/record/R as anything in GLOB.data_core.medical) if ((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"]))) src.active2 = R - else - //Foreach continue //goto(3229) if (!active2) temp = "Could not locate record [t1]." else for(var/datum/data/record/E in GLOB.data_core.general) if ((E.fields["name"] == src.active2.fields["name"] || E.fields["id"] == src.active2.fields["id"])) src.active1 = E - else - //Foreach continue //goto(3334) src.screen = 4 if (href_list["print_p"]) @@ -457,7 +442,7 @@ else P.info += "Medical Record Lost!
" P.info += "" - P.info += text("

This report was printed by [] [].
The [MAIN_SHIP_NAME],[]/[], []

\n",last_user_rank,last_user_name,time2text(world.timeofday, "MM/DD"),game_year,worldtime2text()) + P.info += text("

This report was printed by [] [].
The [MAIN_SHIP_NAME],[]/[], []

\n",last_user_rank,last_user_name,time2text(world.timeofday, "MM/DD"),GLOB.game_year,worldtime2text()) src.printing = null if(href_list["print_bs"])//Prints latest body scan @@ -469,9 +454,10 @@ if(!record) return playsound(src.loc, 'sound/machines/fax.ogg', 15, 1) sleep(40) + var/datum/asset/asset = get_asset_datum(/datum/asset/simple/paper) var/obj/item/paper/P = new /obj/item/paper( src.loc ) P.name = text("Scan: [], []",record.fields["name"],worldtime2text()) - P.info += text("

Official Weyland-Yutani Document
Scan Record

[]

\n
",record.fields["name"]) + P.info += text("

Official Weyland-Yutani Document
Scan Record

[]

\n
",record.fields["name"]) for(var/datum/data/record/R as anything in GLOB.data_core.medical) if (R.fields["name"] == record.fields["name"]) if(R.fields["last_scan_time"] && R.fields["last_scan_result"]) @@ -479,7 +465,7 @@ break else P.info += "No scan on record." - P.info += text("

This report was printed by [] [].
The [MAIN_SHIP_NAME], []/[], []

\n",last_user_rank,last_user_name,time2text(world.timeofday, "MM/DD"),game_year,worldtime2text()) + P.info += text("

This report was printed by [] [].
The [MAIN_SHIP_NAME], []/[], []

\n",last_user_rank,last_user_name,time2text(world.timeofday, "MM/DD"),GLOB.game_year,worldtime2text()) src.printing = null @@ -489,15 +475,15 @@ return /obj/structure/machinery/computer/med_data/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return for(var/datum/data/record/R as anything in GLOB.data_core.medical) if(prob(10/severity)) switch(rand(1,6)) if(1) - R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(last_names)]" + R.fields["name"] = "[pick(pick(GLOB.first_names_male), pick(GLOB.first_names_female))] [pick(GLOB.last_names)]" if(2) R.fields["sex"] = pick("Male", "Female") if(3) @@ -515,8 +501,6 @@ qdel(R) continue - ..(severity) - /obj/structure/machinery/computer/med_data/laptop name = "Medical Laptop" diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index 3858230a089c..7ec97874bb7f 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -1,159 +1,8 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - -/obj/structure/machinery/computer/pod - name = "Pod Launch Control" - desc = "A control for launching pods. Some people prefer firing Mechas." +// Legacy SS13 machinery turned into props +/obj/structure/machinery/computer/pod/old + name = "DoorMex Control Computer" + desc = "A control for launching pods." icon_state = "computer_generic" density = TRUE - circuit = /obj/item/circuitboard/computer/pod - var/id = 1 - var/obj/structure/machinery/mass_driver/connected = null - var/timing = 0 - var/time = 30 - var/title = "Mass Driver Controls" + circuit = /obj/item/circuitboard/computer/pod/old processing = TRUE - - -/obj/structure/machinery/computer/pod/New() - ..() - spawn( 5 ) - for(var/obj/structure/machinery/mass_driver/M in machines) - if(M.id == id) - connected = M - else - return - return - - -/obj/structure/machinery/computer/pod/proc/alarm() - if(inoperable()) - return - - if(!( connected )) - to_chat(viewers(null, null), "Cannot locate mass driver connector. Cancelling firing sequence!") - return - - for(var/obj/structure/machinery/door/poddoor/M in machines) - if(M.id == id) - M.open() - - sleep(20) - - for(var/obj/structure/machinery/mass_driver/M in machines) - if(M.id == id) - M.power = connected.power - M.drive() - - sleep(50) - for(var/obj/structure/machinery/door/poddoor/M in machines) - if(M.id == id) - M.close() - return - return - -/obj/structure/machinery/computer/pod/attack_remote(mob/user as mob) - return attack_hand(user) - -/obj/structure/machinery/computer/pod/attack_hand(mob/user as mob) - if(..()) - return - - var/dat = "[title]" - user.set_interaction(src) - if(connected) - var/d2 - if(timing) //door controls do not need timers. - d2 = "Stop Time Launch" - else - d2 = "Initiate Time Launch" - var/second = time % 60 - var/minute = (time - second) / 60 - dat += "
\nTimer System: [d2]\nTime Left: [minute ? "[minute]:" : null][second] - - + +" - var/temp = "" - var/list/L = list( 0.25, 0.5, 1, 2, 4, 8, 16 ) - for(var/t in L) - if(t == connected.power) - temp += "[t] " - else - temp += "[t] " - dat += "
\nPower Level: [temp]
\nFiring Sequence
\nTest Fire Driver
\nToggle Outer Door
" - else - dat += "
\nToggle Outer Door
" - dat += "

Close
" - show_browser(user, dat, "computer", "size=400x500") - add_fingerprint(usr) - return - - -/obj/structure/machinery/computer/pod/process() - if(!..()) - return - if(timing) - if(time > 0) - time = round(time) - 1 - else - alarm() - time = 0 - timing = 0 - updateDialog() - return - - -/obj/structure/machinery/computer/pod/Topic(href, href_list) - if(..()) - return - if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (isRemoteControlling(usr))) - usr.set_interaction(src) - if(href_list["power"]) - var/t = text2num(href_list["power"]) - t = min(max(0.25, t), 16) - if(connected) - connected.power = t - if(href_list["alarm"]) - alarm() - if(href_list["drive"]) - for(var/obj/structure/machinery/mass_driver/M in machines) - if(M.id == id) - M.power = connected.power - M.drive() - - if(href_list["time"]) - timing = text2num(href_list["time"]) - if(href_list["tp"]) - var/tp = text2num(href_list["tp"]) - time += tp - time = min(max(round(time), 0), 120) - if(href_list["door"]) - for(var/obj/structure/machinery/door/poddoor/M in machines) - if(M.id == id) - if(M.density) - M.open() - else - M.close() - updateUsrDialog() - return - - - -/obj/structure/machinery/computer/pod/old - name = "DoorMex Control Computer" - title = "Door Controls" - -/obj/structure/machinery/computer/pod/old/syndicate - name = "ProComp Executive IIc" - desc = "The Syndicate operate on a tight budget. Operates external airlocks." - icon_state = "syndicomp" - title = "External Airlock Controls" - req_access = list(ACCESS_ILLEGAL_PIRATE) - -/obj/structure/machinery/computer/pod/old/syndicate/attack_hand(mob/user as mob) - if(!allowed(user)) - to_chat(user, SPAN_DANGER("Access Denied")) - return - else - ..() - -/obj/structure/machinery/computer/pod/old/swf - name = "Magix System IV" - icon_state = "wizard" - desc = "An arcane artifact that holds much magic. Running E-Knock 2.2: Sorceror's Edition" diff --git a/code/game/machinery/computer/research.dm b/code/game/machinery/computer/research.dm index 2f37d9b2598a..d5158cb76451 100644 --- a/code/game/machinery/computer/research.dm +++ b/code/game/machinery/computer/research.dm @@ -28,8 +28,8 @@ if(N.note_type == "grant") if(!N.grant) return - chemical_data.update_credits(N.grant) - visible_message(SPAN_NOTICE("[user] scans the [N.name] on the [src], collecting the [N.grant] research credits.")) + GLOB.chemical_data.update_credits(N.grant) + visible_message(SPAN_NOTICE("[user] scans the [N.name] on [src], collecting the [N.grant] research credits.")) N.grant = 0 qdel(N) return @@ -42,7 +42,7 @@ response = alert(usr,"Use existing or new category?","[src]","Existing","New") if(response == "Existing") var/list/pool = list() - for(var/category in chemical_data.research_documents) + for(var/category in GLOB.chemical_data.research_documents) pool += category pool = sortAssoc(pool) response = tgui_input_list(usr,"Select a category:", "Categories", pool) @@ -51,7 +51,7 @@ if(!response) response = "Misc." var/obj/item/paper/research_report/CR = P.convert_to_chem_report() - chemical_data.save_document(CR, response, CR.name) + GLOB.chemical_data.save_document(CR, response, CR.name) return //Clearance Updating if(!istype(B, /obj/item/card/id)) @@ -60,8 +60,8 @@ if(!istype(card)) visible_message(SPAN_NOTICE("[user] swipes their ID card on \the [src], but it is refused.")) return - if(card.clearance_access <= chemical_data.clearance_level || (card.clearance_access == 6 && chemical_data.clearance_level >= 5 && chemical_data.clearance_x_access)) - visible_message(SPAN_NOTICE("[user] swipes the clearance card on the [src], but nothing happens.")) + if(card.clearance_access <= GLOB.chemical_data.clearance_level || (card.clearance_access == 6 && GLOB.chemical_data.clearance_level >= 5 && GLOB.chemical_data.clearance_x_access)) + visible_message(SPAN_NOTICE("[user] swipes the clearance card on [src], but nothing happens.")) return if(user.real_name != card.registered_name) visible_message(SPAN_WARNING("WARNING: ILLEGAL CLEARANCE USER DETECTED. CARD DATA HAS BEEN WIPED.")) @@ -76,10 +76,10 @@ else give_level = card.clearance_access - chemical_data.clearance_level = give_level + GLOB.chemical_data.clearance_level = give_level if(give_x) - chemical_data.clearance_x_access = TRUE - chemical_data.reached_x_access = TRUE + GLOB.chemical_data.clearance_x_access = TRUE + GLOB.chemical_data.reached_x_access = TRUE visible_message(SPAN_NOTICE("[user] swipes their ID card on \the [src], updating the clearance to level [give_level][give_x ? "X" : ""].")) msg_admin_niche("[key_name(user)] has updated the research clearance to level [give_level][give_x ? "X" : ""].") @@ -103,12 +103,12 @@ /obj/structure/machinery/computer/research/ui_data(mob/user) var/list/data = list( - "rsc_credits" = chemical_data.rsc_credits, - "clearance_level" = chemical_data.clearance_level, - "broker_cost" = max(RESEARCH_LEVEL_INCREASE_MULTIPLIER*(chemical_data.clearance_level + 1), 1), - "research_documents" = chemical_data.research_documents, - "published_documents" = chemical_data.research_publications, - "clearance_x_access" = chemical_data.clearance_x_access, + "rsc_credits" = GLOB.chemical_data.rsc_credits, + "clearance_level" = GLOB.chemical_data.clearance_level, + "broker_cost" = max(RESEARCH_LEVEL_INCREASE_MULTIPLIER*(GLOB.chemical_data.clearance_level + 1), 1), + "research_documents" = GLOB.chemical_data.research_documents, + "published_documents" = GLOB.chemical_data.research_publications, + "clearance_x_access" = GLOB.chemical_data.clearance_x_access, "photocopier_error" = !photocopier, "printer_toner" = photocopier?.toner ) @@ -133,7 +133,7 @@ if ("read_document") var/print_type = params["print_type"] var/print_title = params["print_title"] - var/obj/item/paper/research_report/report = chemical_data.get_report(print_type, print_title) + var/obj/item/paper/research_report/report = GLOB.chemical_data.get_report(print_type, print_title) if(report) report.read_paper(user) return @@ -145,7 +145,7 @@ var/print_title = params["print_title"] photocopier.toner = max(0, photocopier.toner - 1) var/obj/item/paper/research_report/printing = new /obj/item/paper/research_report/(photocopier.loc) - var/obj/item/paper/research_report/report = chemical_data.get_report(print_type, print_title) + var/obj/item/paper/research_report/report = GLOB.chemical_data.get_report(print_type, print_title) if(report) printing.name = report.name printing.info = report.info @@ -154,16 +154,16 @@ if("broker_clearance") if(!photocopier) return - if(chemical_data.clearance_level < 5) - var/cost = max(RESEARCH_LEVEL_INCREASE_MULTIPLIER*(chemical_data.clearance_level + 1), 1) - if(cost <= chemical_data.rsc_credits) - chemical_data.update_credits(cost * -1) - chemical_data.clearance_level++ - visible_message(SPAN_NOTICE("Clearance access increased to level [chemical_data.clearance_level] for [cost] credits.")) - msg_admin_niche("[key_name(user)] traded research credits to upgrade the clearance to level [chemical_data.clearance_level].") - if(max_clearance < chemical_data.clearance_level) - chemical_data.update_income(1) //Bonus income and a paper for buying clearance instead of swiping it up - switch(chemical_data.clearance_level) + if(GLOB.chemical_data.clearance_level < 5) + var/cost = max(RESEARCH_LEVEL_INCREASE_MULTIPLIER*(GLOB.chemical_data.clearance_level + 1), 1) + if(cost <= GLOB.chemical_data.rsc_credits) + GLOB.chemical_data.update_credits(cost * -1) + GLOB.chemical_data.clearance_level++ + visible_message(SPAN_NOTICE("Clearance access increased to level [GLOB.chemical_data.clearance_level] for [cost] credits.")) + msg_admin_niche("[key_name(user)] traded research credits to upgrade the clearance to level [GLOB.chemical_data.clearance_level].") + if(max_clearance < GLOB.chemical_data.clearance_level) + GLOB.chemical_data.update_income(1) //Bonus income and a paper for buying clearance instead of swiping it up + switch(GLOB.chemical_data.clearance_level) if(2) new /obj/item/paper/research_notes/unique/tier_two/(photocopier.loc) max_clearance = 2 @@ -179,14 +179,14 @@ if("purchase_document") if(!photocopier) return - var/purchase_tier = FLOOR(text2num(params["purchase_document"]), 1) + var/purchase_tier = Floor(text2num(params["purchase_document"])) if(purchase_tier <= 0 || purchase_tier > 5) return - if(purchase_tier > chemical_data.clearance_level) + if(purchase_tier > GLOB.chemical_data.clearance_level) return var/purchase_cost = base_purchase_cost + purchase_tier * 2 - if(purchase_cost <= chemical_data.rsc_credits) - chemical_data.update_credits(purchase_cost * -1) + if(purchase_cost <= GLOB.chemical_data.rsc_credits) + GLOB.chemical_data.update_credits(purchase_cost * -1) var/obj/item/paper/research_notes/unique/N switch(purchase_tier) if(1) @@ -203,21 +203,20 @@ if("publish_document") var/print_type = params["print_type"] var/print_title = params["print_title"] - var/obj/item/paper/research_report/report = chemical_data.get_report(print_type, print_title) + var/obj/item/paper/research_report/report = GLOB.chemical_data.get_report(print_type, print_title) if(!report) to_chat(usr, SPAN_WARNING("Report data corrupted. Unable to transmit.")) return - chemical_data.publish_document(report, print_type, print_title) + GLOB.chemical_data.publish_document(report, print_type, print_title) if("unpublish_document") var/print_title = params["print_title"] var/print_type = params["print_type"] - chemical_data.unpublish_document(print_type, print_title) + GLOB.chemical_data.unpublish_document(print_type, print_title) if("request_clearance_x_access") var/purchase_cost = 5 - if(purchase_cost <= chemical_data.rsc_credits) - chemical_data.clearance_x_access = TRUE - chemical_data.reached_x_access = TRUE - chemical_data.update_credits(purchase_cost * -1) + if(purchase_cost <= GLOB.chemical_data.rsc_credits) + GLOB.chemical_data.clearance_x_access = TRUE + GLOB.chemical_data.reached_x_access = TRUE + GLOB.chemical_data.update_credits(purchase_cost * -1) visible_message(SPAN_NOTICE("Clearance Level X Acquired.")) playsound(loc, pick('sound/machines/computer_typing1.ogg','sound/machines/computer_typing2.ogg','sound/machines/computer_typing3.ogg'), 5, 1) - diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 12f4faedc979..1a8dcf2efdf8 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -8,205 +8,3 @@ icon_state = "robot" req_access = list(ACCESS_MARINE_RESEARCH) circuit = /obj/item/circuitboard/computer/robotics - - var/id = 0 - var/temp = null - var/status = 0 - var/timeleft = 60 - var/stop = 0 - var/screen = 0 // 0 - Main Menu, 1 - Cyborg Status, 2 - Kill 'em All! -- In text - - -/obj/structure/machinery/computer/robotics/attack_remote(mob/user as mob) - return src.attack_hand(user) - -/obj/structure/machinery/computer/robotics/attack_hand(mob/user as mob) - if(..()) - return - if (src.z > 6) - to_chat(user, SPAN_DANGER("Unable to establish a connection: \black You're too far away from the station!")) - return - user.set_interaction(src) - var/dat - if (src.temp) - dat = "[src.temp]

Clear Screen" - else - if(screen == 0) - dat += "

Cyborg Control Console


" - dat += "1. Cyborg Status
" - dat += "2. Emergency Full Destruct
" - if(screen == 1) - for(var/mob/living/silicon/robot/R in GLOB.mob_list) - if(istype(R, /mob/living/silicon/robot/drone)) - continue //There's a specific console for drones. - if(isRemoteControlling(user)) - if (R.connected_ai != user) - continue - if(isrobot(user)) - if (R != user) - continue - if(R.scrambledcodes) - continue - - dat += "[R.name] |" - if(R.stat) - dat += " Not Responding |" - else if (!R.canmove) - dat += " Locked Down |" - else - dat += " Operating Normally |" - if (!R.canmove) - else if(R.cell) - dat += " Battery Installed ([R.cell.charge]/[R.cell.maxcharge]) |" - else - dat += " No Cell Installed |" - if(R.module) - dat += " Module Installed ([R.module.name]) |" - else - dat += " No Module Installed |" - if(R.connected_ai) - dat += " Slaved to [R.connected_ai.name] |" - else - dat += " Independent from AI |" - if (isRemoteControlling(user)) - if((user.mind.original == user)) - dat += "(Hack) " - dat += "([R.canmove ? "Lockdown" : "Release"]) " - dat += "(Destroy)" - dat += "
" - dat += "(Return to Main Menu)
" - if(screen == 2) - if(!src.status) - dat += {"
Emergency Robot Self-Destruct
\nStatus: Off
- \n
- \nCountdown: [src.timeleft]/60 \[Reset\]
- \n
- \nStart Sequence
- \n
- \nClose"} - else - dat = {"Emergency Robot Self-Destruct
\nStatus: Activated
- \n
- \nCountdown: [src.timeleft]/60 \[Reset\]
- \n
\nStop Sequence
- \n
- \nClose"} - dat += "(Return to Main Menu)
" - - user << browse(dat, "window=computer;size=400x500") - onclose(user, "computer") - return - -/obj/structure/machinery/computer/robotics/Topic(href, href_list) - if(..()) - return - if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (isRemoteControlling(usr))) - usr.set_interaction(src) - - if (href_list["eject"]) - src.temp = {"Destroy Robots?
-
\[Swipe ID to initiate destruction sequence\]
- Cancel"} - - else if (href_list["eject2"]) - var/obj/item/card/id/I = usr.get_active_hand() - if (istype(I)) - if(src.check_access(I)) - if (!status) - message_admins("[key_name_admin(usr)] has initiated the global cyborg killswitch!") - log_game(SPAN_NOTICE("[key_name(usr)] has initiated the global cyborg killswitch!")) - src.status = 1 - src.start_sequence() - src.temp = null - - else - to_chat(usr, SPAN_DANGER("Access Denied.")) - - else if (href_list["stop"]) - src.temp = {" - Stop Robot Destruction Sequence?
-
Yes
- No"} - - else if (href_list["stop2"]) - src.stop = 1 - src.temp = null - src.status = 0 - - else if (href_list["reset"]) - src.timeleft = 60 - - else if (href_list["temp"]) - src.temp = null - else if (href_list["screen"]) - switch(href_list["screen"]) - if("0") - screen = 0 - if("1") - screen = 1 - if("2") - screen = 2 - else if (href_list["killbot"]) - if(src.allowed(usr)) - var/mob/living/silicon/robot/R = locate(href_list["killbot"]) - if(R) - var/choice = tgui_input_list(usr, "Are you certain you wish to detonate [R.name]?", "Hack machine", list("Confirm", "Abort")) - if(choice == "Confirm") - if(R && istype(R)) - message_admins("[key_name_admin(usr)] detonated [R.name]!") - log_game(SPAN_NOTICE("[key_name_admin(usr)] detonated [R.name]!")) - R.self_destruct() - else - to_chat(usr, SPAN_DANGER("Access Denied.")) - - else if (href_list["stopbot"]) - if(src.allowed(usr)) - var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) - if(R && istype(R)) // Extra sancheck because of input var references - var/choice = tgui_input_list(usr, "Are you certain you wish to [R.canmove ? "lock down" : "release"] [R.name]?", "Hack machine", list("Confirm", "Abort")) - if(choice == "Confirm") - if(R && istype(R)) - message_admins("[key_name_admin(usr)] [R.canmove ? "locked down" : "released"] [R.name]!") - log_game("[key_name(usr)] [R.canmove ? "locked down" : "released"] [R.name]!") - R.canmove = !R.canmove - if (R.lockcharge) - // R.cell.charge = R.lockcharge - R.lockcharge = !R.lockcharge - to_chat(R, "Your lockdown has been lifted!") - else - R.lockcharge = !R.lockcharge - // R.cell.charge = 0 - to_chat(R, "You have been locked down!") - - else - to_chat(usr, SPAN_DANGER("Access Denied.")) - - else if (href_list["magbot"]) - if(src.allowed(usr)) - var/mob/living/silicon/robot/R = locate(href_list["magbot"]) - - // whatever weirdness this is supposed to be, but that is how the href gets added, so here it is again - if(istype(R) && isRemoteControlling(usr) && (usr.mind.original == usr)) - - var/choice = tgui_input_list(usr, "Are you certain you wish to hack [R.name]?", "Hack machine", list("Confirm", "Abort")) - if(choice == "Confirm") - if(R && istype(R)) - log_game("[key_name(usr)] emagged [R.name] using robotic console!") - add_verb(R, /mob/living/silicon/robot/proc/ResetSecurityCodes) - - src.add_fingerprint(usr) - src.updateUsrDialog() - return - -/obj/structure/machinery/computer/robotics/proc/start_sequence() - while(src.timeleft) - if(src.stop) - src.stop = 0 - return - src.timeleft-- - sleep(10) - for(var/mob/living/silicon/robot/R in GLOB.mob_list) - if(!R.scrambledcodes && !istype(R, /mob/living/silicon/robot/drone)) - R.self_destruct() - - return diff --git a/code/game/machinery/computer/robots_props.dm b/code/game/machinery/computer/robots_props.dm new file mode 100644 index 000000000000..cac77f9bdbec --- /dev/null +++ b/code/game/machinery/computer/robots_props.dm @@ -0,0 +1,19 @@ +/obj/structure/machinery/computer/aifixer + name = "AI System Integrity Restorer" + icon = 'icons/obj/structures/machinery/computer.dmi' + icon_state = "ai-fixer" + circuit = /obj/item/circuitboard/computer/aifixer + req_one_access = list(ACCESS_CIVILIAN_ENGINEERING) + processing = TRUE + +/obj/structure/machinery/computer/aifixer/New() + ..() + src.overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-empty") + +/obj/structure/machinery/computer/drone_control + name = "Maintenance Drone Control" + desc = "Used to monitor the station's drone population and the assembler that services them." + icon = 'icons/obj/structures/machinery/computer.dmi' + icon_state = "power" + circuit = /obj/item/circuitboard/computer/drone_control + diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 857118937910..4138d89908d4 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -95,7 +95,7 @@ if("Released") background = "'background-color:#2981b3;'" if("Suspect") - background = "'background-color:#008743;'" + background = "'background-color:#686A6C;'" if("NJP") background = "'background-color:#faa20a;'" if("None") @@ -187,7 +187,7 @@ if("Released") background = "'background-color:#3BB9FF;'" if("Suspect") - background = "'background-color:#1AAFFF;'" + background = "'background-color:#686A6C;'" if("NJP") background = "'background-color:#faa20a;'" if("None") @@ -217,7 +217,7 @@ What a mess.*/ active1 = null if (!( GLOB.data_core.security.Find(active2) )) active2 = null - if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (ishighersilicon(usr))) + if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (isSilicon(usr))) usr.set_interaction(src) switch(href_list["choice"]) // SORTING! @@ -361,16 +361,13 @@ What a mess.*/ return var/a2 = active2 var/t1 = copytext(trim(strip_html(input("Your name and time will be added to this new comment.", "Add a comment", null, null) as message)),1,MAX_MESSAGE_LEN) - if((!t1 || usr.stat || usr.is_mob_restrained() || (!in_range(src, usr) && (!ishighersilicon(usr))) || active2 != a2)) + if((!t1 || usr.stat || usr.is_mob_restrained() || (!in_range(src, usr) && (!isSilicon(usr))) || active2 != a2)) return - var/created_at = text("[]  []  []", time2text(world.realtime, "MMM DD"), time2text(world.time, "[worldtime2text()]:ss"), game_year) + var/created_at = text("[]  []  []", time2text(world.realtime, "MMM DD"), time2text(world.time, "[worldtime2text()]:ss"), GLOB.game_year) var/new_comment = list("entry" = t1, "created_by" = list("name" = "", "rank" = ""), "deleted_by" = null, "deleted_at" = null, "created_at" = created_at) if(istype(usr,/mob/living/carbon/human)) var/mob/living/carbon/human/U = usr new_comment["created_by"] = list("name" = U.get_authentification_name(), "rank" = U.get_assignment()) - else if(istype(usr,/mob/living/silicon/robot)) - var/mob/living/silicon/robot/U = usr - new_comment["created_by"] = list("name" = U.name, "rank" = "[U.modtype] [U.braintype]") if(!islist(active2.fields["comments"])) active2.fields["comments"] = list("1" = new_comment) else @@ -387,11 +384,8 @@ What a mess.*/ if(istype(usr,/mob/living/carbon/human)) var/mob/living/carbon/human/U = usr deleter = "[U.get_authentification_name()] ([U.get_assignment()])" - else if(istype(usr,/mob/living/silicon/robot)) - var/mob/living/silicon/robot/U = usr - deleter = "[U.name] ([U.modtype] [U.braintype])" updated_comments[href_list["del_c"]]["deleted_by"] = deleter - updated_comments[href_list["del_c"]]["deleted_at"] = text("[]  []  []", time2text(world.realtime, "MMM DD"), time2text(world.time, "[worldtime2text()]:ss"), game_year) + updated_comments[href_list["del_c"]]["deleted_at"] = text("[]  []  []", time2text(world.realtime, "MMM DD"), time2text(world.time, "[worldtime2text()]:ss"), GLOB.game_year) active2.fields["comments"] = updated_comments to_chat(usr, text("You have deleted a comment from the Security Record of [].", active2.fields["name"])) //RECORD CREATE @@ -442,7 +436,7 @@ What a mess.*/ temp += "" if("rank") //This was so silly before the change. Now it actually works without beating your head against the keyboard. /N - if (istype(active1, /datum/data/record) && GLOB.highcom_paygrades.Find(rank)) + if (istype(active1, /datum/data/record) && GLOB.uscm_highcom_paygrades.Find(rank)) temp = "
Occupation:
" temp += "
    " for(var/rank in GLOB.joblist) @@ -511,28 +505,23 @@ What a mess.*/ return dat /obj/structure/machinery/computer/secure_data/proc/is_not_allowed(mob/user) - return user.stat || user.is_mob_restrained() || (!in_range(src, user) && (!ishighersilicon(user))) + return user.stat || user.is_mob_restrained() || (!in_range(src, user) && (!isSilicon(user))) /obj/structure/machinery/computer/secure_data/proc/get_photo(mob/user) if(istype(user.get_active_hand(), /obj/item/photo)) var/obj/item/photo/photo = user.get_active_hand() return photo.img - if(ishighersilicon(user)) - var/mob/living/silicon/tempAI = usr - var/datum/picture/selection = tempAI.GetPicture() - if (selection) - return selection.fields["img"] /obj/structure/machinery/computer/secure_data/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return for(var/datum/data/record/R in GLOB.data_core.security) if(prob(10/severity)) switch(rand(1,6)) if(1) - R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(last_names)]" + R.fields["name"] = "[pick(pick(GLOB.first_names_male), pick(GLOB.first_names_female))] [pick(GLOB.last_names)]" if(2) R.fields["sex"] = pick("Male", "Female") if(3) @@ -540,7 +529,7 @@ What a mess.*/ if(4) R.fields["criminal"] = pick("None", "*Arrest*", "Incarcerated", "Released", "Suspect", "NJP") if(5) - R.fields["p_stat"] = pick("*Unconcious*", "Active", "Physically Unfit") + R.fields["p_stat"] = pick("*Unconscious*", "Active", "Physically Unfit") if(6) R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable") continue @@ -550,8 +539,6 @@ What a mess.*/ qdel(R) continue - ..(severity) - /obj/structure/machinery/computer/secure_data/detective_computer icon = 'icons/obj/structures/machinery/computer.dmi' icon_state = "messyfiles" diff --git a/code/game/machinery/computer/sentencing.dm b/code/game/machinery/computer/sentencing.dm index 52a4159a2a90..3aa9b5a032a8 100644 --- a/code/game/machinery/computer/sentencing.dm +++ b/code/game/machinery/computer/sentencing.dm @@ -78,6 +78,7 @@ data["laws"] += list(create_law_data("Major Laws", SSlaw_init.major_law)) data["laws"] += list(create_law_data("Capital Laws", SSlaw_init.capital_law)) data["laws"] += list(create_law_data("Optional Laws", SSlaw_init.optional_law)) + data["laws"] += list(create_law_data("Precautionary Laws", SSlaw_init.precautionary_law)) return data diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm index f891d46bc36b..cc4d93f5a24c 100644 --- a/code/game/machinery/computer/skills.dm +++ b/code/game/machinery/computer/skills.dm @@ -43,16 +43,16 @@ var/dat if (temp) - dat = text("[]

    Clear Screen", temp, src) + dat = "[temp]

    Clear Screen" else - dat = text("Confirm Identity: []
    ", src, (scan ? text("[]", scan.name) : "----------")) + dat = "Confirm Identity: [scan ? scan.name : "----------"]
    " if (authenticated) switch(screen) if(1.0) dat += {"

    "} - dat += text("Search Records
    ", src) - dat += text("New Record
    ", src) + dat += "Search Records
    " + dat += "New Record
    " dat += {"

    @@ -70,20 +70,19 @@ if(!isnull(GLOB.data_core.general)) for(var/datum/data/record/R in sortRecord(GLOB.data_core.general, sortBy, order)) for(var/datum/data/record/E in GLOB.data_core.security) - var/background - dat += text("", background, src, R, R.fields["name"]) - dat += text("", R.fields["id"]) - dat += text("", R.fields["rank"]) + dat += "" + dat += "" + dat += "" dat += "
    [][][]
    [R.fields["name"]][R.fields["id"]][R.fields["rank"]]

    " - dat += text("Record Maintenance

    ", src) - dat += text("{Log Out}",src) + dat += "Record Maintenance

    " + dat += "{Log Out}" if(2.0) dat += "Records Maintenance
    " dat += "
    Delete All Records

    Back" if(3.0) dat += "
    Employment Record

    " if ((istype(active1, /datum/data/record) && GLOB.data_core.general.Find(active1))) - dat += text("
    \ + dat += " \
    \ Name: [active1.fields["name"]]
    \ ID: [active1.fields["id"]]
    \n \ Sex: [active1.fields["sex"]]
    \n \ @@ -93,18 +92,18 @@ Mental Status: [active1.fields["m_stat"]]

    \n \ Employment/skills summary:
    [decode(active1.fields["notes"])]
    Photo:
    \ -
    ") +
    " else dat += "General Record Lost!
    " - dat += text("\nDelete Record (ALL)

    \nPrint Record
    \nBack
    ", src, src, src) + dat += "\nDelete Record (ALL)

    \nPrint Record
    \nBack
    " if(4.0) if(!Perp.len) - dat += text("ERROR. String could not be located.

    Back", src) + dat += "ERROR. String could not be located.

    Back" else dat += {" "} - dat += text("", tempname) + dat += "" dat += {"
    Search Results for '[]':Search Results for '[tempname]':
    @@ -121,17 +120,14 @@ if(istype(Perp[i+1],/datum/data/record/)) var/datum/data/record/E = Perp[i+1] crimstat = E.fields["criminal"] - var/background - background = "'background-color:#00FF7F;'" - dat += text("[]", background, src, R, R.fields["name"]) - dat += text("[]", R.fields["id"]) - dat += text("[]", R.fields["rank"]) - dat += text("[]", crimstat) + dat += "[R.fields["name"]]" + dat += "[R.fields["id"]]" + dat += "[R.fields["rank"]]" + dat += "[crimstat]" dat += "
    " - dat += text("
    Return to index.", src) - else + dat += "
    Return to index." else - dat += text("{Log In}", src) + dat += "{Log In}" show_browser(user, dat, "Employment Records", "secure_rec", "size=600x400") onclose(user, "secure_rec") return @@ -192,12 +188,6 @@ What a mess.*/ src.authenticated = usr.name src.rank = "AI" src.screen = 1 - else if (isborg(usr)) - src.active1 = null - src.authenticated = usr.name - var/mob/living/silicon/robot/R = usr - src.rank = R.braintype - src.screen = 1 else if (istype(scan, /obj/item/card/id)) active1 = null if(check_access(scan)) @@ -311,7 +301,7 @@ What a mess.*/ active1.fields["age"] = t1 if("rank") //This was so silly before the change. Now it actually works without beating your head against the keyboard. /N - if(istype(active1, /datum/data/record) && GLOB.highcom_paygrades.Find(rank)) + if(istype(active1, /datum/data/record) && GLOB.uscm_highcom_paygrades.Find(rank)) temp = "
    Occupation:
    " temp += "
      " for(var/rank in GLOB.joblist) @@ -342,7 +332,6 @@ What a mess.*/ if ((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) GLOB.data_core.medical -= R qdel(R) - else QDEL_NULL(active1) else temp = "This function does not appear to be working at the moment. Our apologies." @@ -352,15 +341,15 @@ What a mess.*/ return /obj/structure/machinery/computer/skills/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return for(var/datum/data/record/R in GLOB.data_core.security) if(prob(10/severity)) switch(rand(1,6)) if(1) - R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(last_names)]" + R.fields["name"] = "[pick(pick(GLOB.first_names_male), pick(GLOB.first_names_female))] [pick(GLOB.last_names)]" if(2) R.fields["sex"] = pick("Male", "Female") if(3) @@ -368,7 +357,7 @@ What a mess.*/ if(4) R.fields["criminal"] = pick("None", "*Arrest*", "Incarcerated", "Released") if(5) - R.fields["p_stat"] = pick("*Unconcious*", "Active", "Physically Unfit") + R.fields["p_stat"] = pick("*Unconscious*", "Active", "Physically Unfit") if(6) R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable") continue @@ -378,4 +367,3 @@ What a mess.*/ qdel(R) continue - ..(severity) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 0288b7eb2426..357ef48fff37 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -114,7 +114,7 @@ A.amount = 5 if(CONSTRUCTION_STATE_FINISHED) - if(istype(P, /obj/item/tool/crowbar)) + if(HAS_TRAIT(P, TRAIT_TOOL_CROWBAR)) if(!skillcheck(user, SKILL_ENGINEER, required_dismantle_skill)) to_chat(user, SPAN_WARNING("You are not trained to dismantle machines...")) return diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 435976668577..afcc9686cff5 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -2,6 +2,7 @@ /obj/structure/machinery/cryo_cell name = "cryo cell" + desc = "A donation from the old A.W. project, using cryogenic technology. It slowly heals whoever is inside the tube." icon = 'icons/obj/structures/machinery/cryogenics2.dmi' icon_state = "cell" density = FALSE diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index ed06c0117f33..69c2c897e276 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -185,7 +185,6 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li flags_atom |= USES_HEARING /obj/structure/machinery/cryopod/Destroy() - SetLuminosity(0) QDEL_NULL(occupant) QDEL_NULL(announce) . = ..() @@ -193,7 +192,7 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li //Lifted from Unity stasis.dm and refactored. ~Zuhayr /obj/structure/machinery/cryopod/process() - if(occupant) + if(occupant && !(occupant in GLOB.freed_mob_list)) //ignore freed mobs //if occupant ghosted, time till despawn is severely shorter if(!occupant.key && time_till_despawn == 10 MINUTES) time_till_despawn -= 8 MINUTES @@ -322,13 +321,13 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li dept_console += A A.moveToNullspace() + var/datum/job/job = GET_MAPPED_ROLE(occupant.job) if(ishuman(occupant)) var/mob/living/carbon/human/H = occupant if(H.assigned_squad) var/datum/squad/S = H.assigned_squad S.forget_marine_in_squad(H) - var/datum/job/J = GET_MAPPED_ROLE(H.job) - if(istype(J, /datum/job/marine/specialist)) + if(istype(job, /datum/job/marine/specialist)) //we make the set this specialist took if any available again if(H.skills) var/set_name @@ -344,13 +343,14 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li if(SKILL_SPEC_SNIPER) set_name = "Sniper Set" - if(set_name && !available_specialist_sets.Find(set_name)) - available_specialist_sets += set_name + if(set_name && !GLOB.available_specialist_sets.Find(set_name)) + GLOB.available_specialist_sets += set_name - SSticker.mode.latejoin_tally-- //Cryoing someone out removes someone from the Marines, blocking further larva spawns until accounted for + //Cryoing someone out removes someone from the Marines, blocking further larva spawns until accounted for + SSticker.mode.latejoin_update(job, -1) //Handle job slot/tater cleanup. - RoleAuthority.free_role(GET_MAPPED_ROLE(occupant.job), TRUE) + GLOB.RoleAuthority.free_role(GET_MAPPED_ROLE(occupant.job), TRUE) var/occupant_ref = WEAKREF(occupant) //Delete them from datacore. @@ -368,7 +368,7 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li qdel(G) icon_state = "body_scanner_open" - SetLuminosity(0) + set_light(0) if(occupant.key) occupant.ghostize(0) @@ -386,34 +386,35 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li stop_processing() /obj/structure/machinery/cryopod/attackby(obj/item/W, mob/living/user) - + if(isxeno(user)) + return FALSE if(istype(W, /obj/item/grab)) - if(isxeno(user)) return var/obj/item/grab/G = W if(occupant) to_chat(user, SPAN_WARNING("[src] is occupied.")) - return + return FALSE if(!isliving(G.grabbed_thing)) - return + return FALSE - var/willing = null //We don't want to allow people to be forced into despawning. + var/willing = FALSE //We don't want to allow people to be forced into despawning. var/mob/living/M = G.grabbed_thing if(M.stat == DEAD) //This mob is dead to_chat(user, SPAN_WARNING("[src] immediately rejects [M]. \He passed away!")) - return + return FALSE if(isxeno(M)) to_chat(user, SPAN_WARNING("There is no way [src] will accept [M]!")) - return + return FALSE if(M.client) if(alert(M,"Would you like to enter cryosleep?", , "Yes", "No") == "Yes") - if(!M || !G || !G.grabbed_thing) return - willing = 1 + if(!M || !G || !G.grabbed_thing) + return FALSE + willing = TRUE else - willing = 1 + willing = TRUE if(willing) @@ -424,7 +425,7 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li if(!M || !G || !G.grabbed_thing) return if(occupant) to_chat(user, SPAN_WARNING("[src] is occupied.")) - return + return FALSE go_in_cryopod(M) @@ -434,6 +435,7 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li //Despawning occurs when process() is called with an occupant without a client. add_fingerprint(user) + return TRUE /obj/structure/machinery/cryopod/relaymove(mob/user) if(user.is_mob_incapacitated(TRUE)) @@ -503,23 +505,25 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li add_fingerprint(usr) -/obj/structure/machinery/cryopod/proc/go_in_cryopod(mob/M, silent = FALSE) +/obj/structure/machinery/cryopod/proc/go_in_cryopod(mob/mob, silent = FALSE) if(occupant) return - M.forceMove(src) - occupant = M + mob.forceMove(src) + occupant = mob icon_state = "body_scanner_closed" - SetLuminosity(2) + set_light(2) time_entered = world.time start_processing() if(!silent) - if(M.client) - to_chat(M, SPAN_NOTICE("You feel cool air surround you. You go numb as your senses turn inward.")) - to_chat(M, SPAN_BOLDNOTICE("If you log out or close your client now, your character will permanently removed from the round in 10 minutes. If you ghost, timer will be decreased to 2 minutes.")) + if(mob.client) + to_chat(mob, SPAN_NOTICE("You feel cool air surround you. You go numb as your senses turn inward.")) + to_chat(mob, SPAN_BOLDNOTICE("If you log out or close your client now, your character will permanently removed from the round in 10 minutes. If you ghost, timer will be decreased to 2 minutes.")) + if(!should_block_game_interaction(src)) // Set their queue time now because the client has to actually leave to despawn and at that point the client is lost + mob.client.player_details.larva_queue_time = max(mob.client.player_details.larva_queue_time, world.time) var/area/location = get_area(src) - if(M.job != GET_MAPPED_ROLE(JOB_SQUAD_MARINE)) - message_admins("[key_name_admin(M)], [M.job], has entered \a [src] at [location] after playing for [duration2text(world.time - M.life_time_start)].") + if(mob.job != GET_MAPPED_ROLE(JOB_SQUAD_MARINE)) + message_admins("[key_name_admin(mob)], [mob.job], has entered \a [src] at [location] after playing for [duration2text(world.time - mob.life_time_start)].") playsound(src, 'sound/machines/hydraulics_3.ogg', 30) silent_exit = silent @@ -530,8 +534,9 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li occupant = null stop_processing() icon_state = "body_scanner_open" - SetLuminosity(0) + set_light(0) playsound(src, 'sound/machines/pod_open.ogg', 30) + SEND_SIGNAL(src, COMSIG_CRYOPOD_GO_OUT) #ifdef OBJECTS_PROXY_SPEECH // Transfers speech to occupant @@ -550,3 +555,40 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li return move_inside(target) + + +/obj/structure/machinery/cryopod/tutorial + silent_exit = TRUE + +/obj/structure/machinery/cryopod/tutorial/process() + return + +/obj/structure/machinery/cryopod/tutorial/go_in_cryopod(mob/mob, silent = FALSE, del_them = TRUE) + if(occupant) + return + mob.forceMove(src) + occupant = mob + icon_state = "body_scanner_closed" + set_light(2) + time_entered = world.time + if(del_them) + despawn_occupant() + +/obj/structure/machinery/cryopod/tutorial/despawn_occupant() + SSminimaps.remove_marker(occupant) + + if(ishuman(occupant)) + var/mob/living/carbon/human/man = occupant + man.species.handle_cryo(man) + + icon_state = "body_scanner_open" + set_light(0) + + + var/mob/new_player/new_player = new + + if(!occupant.mind) + occupant.mind_initialize() + + occupant.mind.transfer_to(new_player) + SEND_SIGNAL(occupant, COMSIG_MOB_END_TUTORIAL) diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index e6df92d258c0..687882d9d7ae 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -54,7 +54,6 @@ src.health -= W.force * 0.75 if("brute") src.health -= W.force * 0.5 - else if (src.health <= 0) src.explode() ..() @@ -66,6 +65,7 @@ return /obj/structure/machinery/deployable/barrier/emp_act(severity) + . = ..() if(inoperable()) return if(prob(50/severity)) diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index 40bdd68b3b34..545d4c35bb5a 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -52,6 +52,11 @@ /obj/structure/machinery/door_control/attackby(obj/item/W, mob/user as mob) return src.attack_hand(user) +/obj/structure/machinery/door_control/ex_act(severity) + if(indestructible) + return FALSE + ..() + /obj/structure/machinery/door_control/proc/handle_dropship(ship_id) var/obj/docking_port/mobile/marine_dropship/shuttle = SSshuttle.getShuttle(ship_id) if (!istype(shuttle)) @@ -59,7 +64,7 @@ if(is_mainship_level(z)) // on the almayer return - shuttle.control_doors("lock", "all", force=FALSE) + shuttle.control_doors("force-lock", "all", force=FALSE) /obj/structure/machinery/door_control/proc/handle_door() for(var/obj/structure/machinery/door/airlock/D in range(range)) @@ -90,7 +95,7 @@ D.safe = 1 /obj/structure/machinery/door_control/proc/handle_pod() - for(var/obj/structure/machinery/door/poddoor/M in machines) + for(var/obj/structure/machinery/door/poddoor/M in GLOB.machines) if(M.id == id) if(M.density) INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/structure/machinery/door, open)) @@ -145,47 +150,6 @@ else icon_state = initial(icon_state) + "0" -/obj/structure/machinery/driver_button/attack_remote(mob/user as mob) - return src.attack_hand(user) - -/obj/structure/machinery/driver_button/attackby(obj/item/W, mob/user as mob) - return src.attack_hand(user) - -/obj/structure/machinery/driver_button/attack_hand(mob/user as mob) - - src.add_fingerprint(usr) - if(inoperable()) - return - if(active) - return - add_fingerprint(user) - - use_power(5) - - active = 1 - icon_state = "launcheract" - - for(var/obj/structure/machinery/door/poddoor/M in machines) - if(M.id == src.id) - INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/structure/machinery/door, open)) - - sleep(20) - - for(var/obj/structure/machinery/mass_driver/M in machines) - if(M.id == src.id) - M.drive() - - sleep(50) - - for(var/obj/structure/machinery/door/poddoor/M in machines) - if(M.id == src.id) - INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/structure/machinery/door, close)) - - icon_state = "launcherbtt" - active = 0 - - return - // Controls elevator railings /obj/structure/machinery/door_control/railings name = "railing controls" @@ -223,7 +187,7 @@ add_fingerprint(user) var/effective = 0 - for(var/obj/structure/machinery/door/poddoor/M in machines) + for(var/obj/structure/machinery/door/poddoor/M in GLOB.machines) if(M.id == id) effective = 1 spawn() @@ -270,3 +234,31 @@ desiredstate = !desiredstate +/obj/structure/machinery/door_control/cl + req_access_txt = "200" +// seperating quarter and office because we might want to allow more access to the office than quarter in the future. +/obj/structure/machinery/door_control/cl/office +/obj/structure/machinery/door_control/cl/office/door + name = "Office Door Shutter" + id = "cl_office_door" +/obj/structure/machinery/door_control/cl/office/window + name = "Office Windows Shutters" + id = "cl_office_windows" +/obj/structure/machinery/door_control/cl/office/divider + name = "Room Divider" + id = "RoomDivider" +//special button that unlock the cl lock on is evac pod door bypassing general lockdown. +/obj/structure/machinery/door_control/cl/office/evac + name = "Evac Pod Door Control" + id = "cl_evac" + normaldoorcontrol = 1 +/obj/structure/machinery/door_control/cl/quarter +/obj/structure/machinery/door_control/cl/quarter/officedoor + name = "Quarter Door Shutter" + id = "cl_quarter_door" +/obj/structure/machinery/door_control/cl/quarter/backdoor + name = "Maintenance Door Shutter" + id = "cl_quarter_maintenance" +/obj/structure/machinery/door_control/cl/quarter/windows + name = "Quarter Windows Shutters" + id = "cl_quarter_windows" diff --git a/code/game/machinery/door_display/door_display.dm b/code/game/machinery/door_display/door_display.dm index 7462b1f1b74d..3f0c53ada18e 100644 --- a/code/game/machinery/door_display/door_display.dm +++ b/code/game/machinery/door_display/door_display.dm @@ -31,7 +31,7 @@ get_targets() /obj/structure/machinery/door_display/proc/get_targets() - for(var/obj/structure/machinery/door/D in machines) + for(var/obj/structure/machinery/door/D in GLOB.machines) if (D.id == id) targets += D @@ -199,7 +199,7 @@ /obj/structure/machinery/door_display/research_cell/get_targets() ..() - for(var/obj/structure/machinery/flasher/F in machines) + for(var/obj/structure/machinery/flasher/F in GLOB.machines) if(F.id == id) targets += F if(has_wall_divider) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index e3e5fd3bee87..dbd40409c09e 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -91,7 +91,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( else if(user.hallucination > 50 && prob(10) && operating == 0) to_chat(user, SPAN_DANGER("You feel a powerful shock course through your body!")) user.halloss += 10 - user.stunned += 10 + user.apply_effect(10, STUN) return ..(user) @@ -162,7 +162,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( else return FALSE -/obj/structure/machinery/door/airlock/bullet_act(obj/item/projectile/P) +/obj/structure/machinery/door/airlock/bullet_act(obj/projectile/P) bullet_ping(P) if(P.damage) if(P.ammo.flags_ammo_behavior & AMMO_ROCKET) @@ -550,14 +550,14 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( add_fingerprint(usr) update_icon() -/obj/structure/machinery/door/airlock/attackby(obj/item/C, mob/user) - if(SEND_SIGNAL(C, COMSIG_ITEM_ATTACK_AIRLOCK, src, user) & COMPONENT_CANCEL_AIRLOCK_ATTACK) +/obj/structure/machinery/door/airlock/attackby(obj/item/attacking_item, mob/user) + if(SEND_SIGNAL(attacking_item, COMSIG_ITEM_ATTACK_AIRLOCK, src, user) & COMPONENT_CANCEL_AIRLOCK_ATTACK) return - if(istype(C, /obj/item/clothing/mask/cigarette)) + if(istype(attacking_item, /obj/item/clothing/mask/cigarette)) if(isElectrified()) - var/obj/item/clothing/mask/cigarette/L = C - L.light(SPAN_NOTICE("[user] lights their [L] on an electrical arc from the [src]")) + var/obj/item/clothing/mask/cigarette/L = attacking_item + L.light(SPAN_NOTICE("[user] lights their [L] on an electrical arc from [src]")) return if(!isRemoteControlling(user)) @@ -567,8 +567,8 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( add_fingerprint(user) - if(istype(C, /obj/item/weapon/zombie_claws) && (welded || locked)) - user.visible_message(SPAN_NOTICE("[user] starts tearing into the door on the [src]!"), \ + if(istype(attacking_item, /obj/item/weapon/zombie_claws) && (welded || locked)) + user.visible_message(SPAN_NOTICE("[user] starts tearing into the door on [src]!"), \ SPAN_NOTICE("You start prying your hand into the gaps of the door with your fingers... This will take about 30 seconds."), \ SPAN_NOTICE("You hear tearing noises!")) @@ -584,8 +584,8 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( return - if((iswelder(C) && !operating && density)) - var/obj/item/tool/weldingtool/W = C + if((iswelder(attacking_item) && !operating && density)) + var/obj/item/tool/weldingtool/W = attacking_item var/weldtime = 50 if(!HAS_TRAIT(W, TRAIT_TOOL_BLOWTORCH)) weldtime = 70 @@ -609,7 +609,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( update_icon() return - else if(HAS_TRAIT(C, TRAIT_TOOL_SCREWDRIVER)) + else if(HAS_TRAIT(attacking_item, TRAIT_TOOL_SCREWDRIVER)) if(no_panel) to_chat(user, SPAN_WARNING("\The [src] has no panel to open!")) return @@ -619,17 +619,17 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( update_icon() return - else if(HAS_TRAIT(C, TRAIT_TOOL_WIRECUTTERS)) + else if(HAS_TRAIT(attacking_item, TRAIT_TOOL_WIRECUTTERS)) return attack_hand(user) - else if(HAS_TRAIT(C, TRAIT_TOOL_MULTITOOL)) + else if(HAS_TRAIT(attacking_item, TRAIT_TOOL_MULTITOOL)) return attack_hand(user) - else if(isgun(C)) - var/obj/item/weapon/gun/G = C - for(var/slot in G.attachments) - if(istype(G.attachments[slot], /obj/item/attachable/bayonet)) - var/obj/item/attachable/bayonet/a_bayonet = G.attachments[slot] + else if(isgun(attacking_item)) + var/obj/item/weapon/gun/gun_item = attacking_item + for(var/slot in gun_item.attachments) + if(istype(gun_item.attachments[slot], /obj/item/attachable/bayonet)) + var/obj/item/attachable/bayonet/a_bayonet = gun_item.attachments[slot] if(arePowerSystemsOn()) to_chat(user, SPAN_WARNING("The airlock's motors resist your efforts to force it.")) else if(locked) @@ -647,50 +647,48 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( if(do_after(user, a_bayonet.pry_delay, INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) close(1) - else if(C.pry_capable) - if(C.pry_capable == IS_PRY_CAPABLE_CROWBAR && panel_open && welded) + else if(attacking_item.pry_capable) + if(attacking_item.pry_capable == IS_PRY_CAPABLE_CROWBAR && panel_open && welded) if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) to_chat(user, SPAN_WARNING("You don't seem to know how to deconstruct machines.")) return - if(width > 1) - to_chat(user, SPAN_WARNING("Large doors seem impossible to disassemble.")) - return playsound(loc, 'sound/items/Crowbar.ogg', 25, 1) user.visible_message("[user] starts removing the electronics from the airlock assembly.", "You start removing electronics from the airlock assembly.") if(do_after(user, 40, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) to_chat(user, SPAN_NOTICE(" You removed the airlock electronics!")) - var/obj/structure/airlock_assembly/da = new assembly_type(loc) - if(istype(da, /obj/structure/airlock_assembly/multi_tile)) - da.setDir(dir) + var/obj/structure/airlock_assembly/doors_assembly = new assembly_type(loc) + if(istype(doors_assembly, /obj/structure/airlock_assembly/multi_tile)) + doors_assembly.setDir(dir) + doors_assembly.update_collision_box() - da.anchored = TRUE + doors_assembly.anchored = TRUE if(mineral) - da.glass = mineral + doors_assembly.glass = mineral //else if(glass) - else if(glass && !da.glass) - da.glass = 1 - da.state = 0 - da.created_name = name - da.update_icon() + else if(glass && !doors_assembly.glass) + doors_assembly.glass = TRUE + doors_assembly.state = 0 + doors_assembly.created_name = name + doors_assembly.update_icon() - var/obj/item/circuitboard/airlock/ae + var/obj/item/circuitboard/airlock/airlock_electronics if(!electronics) - ae = new/obj/item/circuitboard/airlock( loc ) + airlock_electronics = new/obj/item/circuitboard/airlock(loc) if(!req_access || !req_one_access) check_access() if(req_access.len) - ae.conf_access = req_access + airlock_electronics.conf_access = req_access else if(req_one_access.len) - ae.conf_access = req_one_access - ae.one_access = 1 + airlock_electronics.conf_access = req_one_access + airlock_electronics.one_access = TRUE else - ae = electronics + airlock_electronics = electronics electronics = null - ae.forceMove(loc) + airlock_electronics.forceMove(loc) if(operating == -1) - ae.fried = TRUE - ae.update_icon() + airlock_electronics.fried = TRUE + airlock_electronics.update_icon() operating = 0 msg_admin_niche("[key_name(user)] deconstructed [src] in [get_area(user)] ([user.loc.x],[user.loc.y],[user.loc.z])") @@ -698,7 +696,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( deconstruct() return - else if(arePowerSystemsOn() && C.pry_capable != IS_PRY_CAPABLE_FORCE) + else if(arePowerSystemsOn() && attacking_item.pry_capable != IS_PRY_CAPABLE_FORCE) to_chat(user, SPAN_WARNING("The airlock's motors resist your efforts to force it.")) else if(locked) @@ -707,7 +705,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( else if(welded) to_chat(user, SPAN_WARNING("The airlock is welded shut.")) - else if(C.pry_capable == IS_PRY_CAPABLE_FORCE) + else if(attacking_item.pry_capable == IS_PRY_CAPABLE_FORCE) return FALSE //handled by the item's afterattack else if(!operating) @@ -719,7 +717,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( return TRUE //no afterattack call - if(istype(C, /obj/item/large_shrapnel)) + if(istype(attacking_item, /obj/item/large_shrapnel)) return FALSE //trigger afterattack call else return ..() @@ -756,9 +754,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( for(var/turf/turf in locs) for(var/mob/living/M in turf) - if(isborg(M)) - M.apply_damage(DOOR_CRUSH_DAMAGE, BRUTE) - else if(HAS_TRAIT(M, TRAIT_SUPER_STRONG)) + if(HAS_TRAIT(M, TRAIT_SUPER_STRONG)) M.apply_damage(DOOR_CRUSH_DAMAGE, BRUTE) else M.apply_damage(DOOR_CRUSH_DAMAGE, BRUTE) @@ -819,7 +815,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( /obj/structure/machinery/door/airlock/LateInitialize() . = ..() if(closeOtherId != null) - for(var/obj/structure/machinery/door/airlock/A in machines) + for(var/obj/structure/machinery/door/airlock/A in GLOB.machines) if(A.closeOtherId == closeOtherId && A != src) closeOther = A break @@ -835,7 +831,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( return /obj/structure/machinery/door/airlock/allowed(mob/M) - if(isWireCut(AIRLOCK_WIRE_IDSCAN) || (maint_all_access && check_access_list(list(ACCESS_MARINE_MAINT)))) + if(isWireCut(AIRLOCK_WIRE_IDSCAN) || (GLOB.maint_all_access && check_access_list(list(ACCESS_MARINE_MAINT)))) return TRUE return ..(M) @@ -847,7 +843,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( for(var/i in resin_door_shmushereds) if(istype(x,i)) //I would like to just use a if(locate() in ) here but Im not gonna add every child to GLOB.resin_door_shmushereds so it works playsound(loc, "alien_resin_break", 25) - visible_message(SPAN_WARNING("The [src.name] closes on the [x], shmushing it!")) + visible_message(SPAN_WARNING("The [src.name] closes on [x], shmushing it!")) if(isturf(x)) var/turf/closed/wall/resin_wall_to_destroy = x resin_wall_to_destroy.dismantle_wall() @@ -860,7 +856,8 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread sparks.set_up(5, 1, src) sparks.start() - xeno.apply_effect(1, WEAKEN) + xeno.KnockDown(1) + xeno.Stun(1) playsound(src, 'sound/effects/metalhit.ogg', 50, TRUE) xeno.visible_message(SPAN_XENOWARNING("\The [xeno] strikes \the [src] with its tail!"), SPAN_XENOWARNING("You strike \the [src] with your tail!")) @@ -868,3 +865,8 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( var/damage = xeno.melee_damage_upper * TAILSTAB_AIRLOCK_DAMAGE_MULTIPLIER take_damage(damage, xeno) return TAILSTAB_COOLDOWN_NORMAL + +/obj/structure/machinery/door/airlock/autoclose() + if(locked) + return + ..() diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 899f9f5a0e1c..feb699fd245e 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -10,32 +10,32 @@ name = "\improper Command Airlock" icon = 'icons/obj/structures/doors/comdoor.dmi' assembly_type = /obj/structure/airlock_assembly/airlock_assembly_com - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/security/colony name = "\improper Security Airlock" icon = 'icons/obj/structures/doors/secdoor.dmi' assembly_type = /obj/structure/airlock_assembly/airlock_assembly_sec - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_SECURITY) /obj/structure/machinery/door/airlock/engineering/colony name = "\improper Engineering Airlock" icon = 'icons/obj/structures/doors/engidoor.dmi' assembly_type = /obj/structure/airlock_assembly/airlock_assembly_eng - req_one_access = list(ACCESS_CIVILIAN_COMMAND, ACCESS_CIVILIAN_ENGINEERING, ACCESS_CIVILIAN_LOGISTICS) + req_one_access = list(ACCESS_CIVILIAN_COMMAND, ACCESS_CIVILIAN_ENGINEERING, ACCESS_CIVILIAN_LOGISTICS, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/medical/colony name = "\improper Medical Airlock" icon = 'icons/obj/structures/doors/medidoor.dmi' assembly_type = /obj/structure/airlock_assembly/airlock_assembly_med - req_one_access = list(ACCESS_CIVILIAN_MEDBAY, ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND) + req_one_access = list(ACCESS_CIVILIAN_MEDBAY, ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/maintenance/colony name = "\improper Maintenance Hatch" icon = 'icons/obj/structures/doors/maintdoor.dmi' assembly_type = /obj/structure/airlock_assembly/airlock_assembly_mai - req_one_access = list(ACCESS_CIVILIAN_PUBLIC) + req_one_access = list(ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_ENGINEERING, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/external/colony name = "\improper External Airlock" @@ -61,7 +61,7 @@ icon = 'icons/obj/structures/doors/vault.dmi' opacity = TRUE assembly_type = /obj/structure/airlock_assembly/airlock_assembly_highsecurity //Until somebody makes better sprites. - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_LEADERSHIP) /obj/structure/machinery/door/airlock/freezer/colony name = "\improper Freezer Airlock" @@ -83,7 +83,7 @@ opacity = FALSE assembly_type = /obj/structure/airlock_assembly/airlock_assembly_com glass = 1 - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/glass_engineering/colony name = "\improper Engineering Airlock" @@ -130,7 +130,7 @@ name = "\improper Research Airlock" icon = 'icons/obj/structures/doors/medidoor.dmi' assembly_type = /obj/structure/airlock_assembly/airlock_assembly_research - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/glass_research/colony name = "\improper Research Airlock" @@ -138,8 +138,7 @@ opacity = 0 assembly_type = /obj/structure/airlock_assembly/airlock_assembly_research glass = 1 - heat_proof = 1 - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/glass_mining/colony name = "\improper Mining Airlock" @@ -214,7 +213,7 @@ name = "\improper Research Airlock" icon = 'icons/obj/structures/doors/medidoor.dmi' assembly_type = /obj/structure/airlock_assembly/airlock_assembly_science - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_RESEARCH) /obj/structure/machinery/door/airlock/glass_science/colony name = "\improper Research Airlock" @@ -222,13 +221,13 @@ opacity = 0 assembly_type = /obj/structure/airlock_assembly/airlock_assembly_science glass = 1 - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_RESEARCH) /obj/structure/machinery/door/airlock/highsecurity/colony name = "\improper High Tech Security Airlock" icon = 'icons/obj/structures/doors/hightechsecurity.dmi' assembly_type = /obj/structure/airlock_assembly/airlock_assembly_highsecurity - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_SECURITY, ACCESS_WY_LEADERSHIP) //STRATA AIRLOCKS // Add me later y'know? @@ -267,6 +266,36 @@ /obj/structure/machinery/door/airlock/strata/mining/autoname autoname = TRUE +//YAUTJA SHIP - CURRENTLY USES STRATA DOORS +/obj/structure/machinery/door/airlock/yautja + name = "\improper Airlock" + icon = 'icons/obj/structures/doors/strata/strata_doors.dmi' + openspeed = 5 + req_access = null + req_one_access = null + tiles_with = list( + /obj/structure/window/framed/strata, + /obj/structure/machinery/door/airlock, + ) + masterkey_resist = TRUE + no_panel = TRUE + not_weldable = TRUE + unacidable = TRUE + +/obj/structure/machinery/door/airlock/yautja/autoname + autoname = TRUE + +/obj/structure/machinery/door/airlock/yautja/secure + heavy = TRUE + req_one_access = list(ACCESS_YAUTJA_SECURE, ACCESS_YAUTJA_ELDER, ACCESS_YAUTJA_ANCIENT) + +/obj/structure/machinery/door/airlock/yautja/secure/elder + req_one_access = list(ACCESS_YAUTJA_ELDER, ACCESS_YAUTJA_ANCIENT) + +/obj/structure/machinery/door/airlock/yautja/secure/ancient + req_one_access = list(ACCESS_YAUTJA_ANCIENT) + unslashable = TRUE + //FIORINA PENITENTIARY (PRISON_FOP) MAINTENANCE HATCHES /obj/structure/machinery/door/airlock/prison_hatch @@ -362,7 +391,7 @@ /obj/structure/machinery/door/airlock/almayer/command/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/almayer/command/autoname autoname = TRUE @@ -373,7 +402,7 @@ /obj/structure/machinery/door/airlock/almayer/command/reinforced/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/almayer/secure name = "\improper Secure Airlock" @@ -491,11 +520,11 @@ /obj/structure/machinery/door/airlock/almayer/research name = "\improper Research Airlock" icon = 'icons/obj/structures/doors/medidoor.dmi' - req_access = list(ACCESS_MARINE_RESEARCH) + req_one_access = list(ACCESS_MARINE_RESEARCH, ACCESS_WY_RESEARCH, ACCESS_WY_EXEC) /obj/structure/machinery/door/airlock/almayer/research/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL, ACCESS_WY_RESEARCH) /obj/structure/machinery/door/airlock/almayer/research/autoname autoname = TRUE @@ -506,7 +535,7 @@ /obj/structure/machinery/door/airlock/almayer/research/reinforced/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL, ACCESS_WY_RESEARCH) /obj/structure/machinery/door/airlock/almayer/research/glass name = "\improper Research Airlock" @@ -517,7 +546,7 @@ /obj/structure/machinery/door/airlock/almayer/research/glass/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/almayer/research/glass/autoname autoname = TRUE @@ -528,7 +557,7 @@ /obj/structure/machinery/door/airlock/almayer/research/glass/reinforced/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/almayer/generic name = "\improper Airlock" @@ -546,7 +575,11 @@ /obj/structure/machinery/door/airlock/almayer/generic/corporate name = "Corporate Liaison's Quarters" icon = 'icons/obj/structures/doors/personaldoor.dmi' - req_access = list(ACCESS_WY_CORPORATE) + req_access = list(ACCESS_WY_GENERAL) + +/obj/structure/machinery/door/airlock/almayer/generic/press + name = "Press Office" + req_access = list(ACCESS_PRESS) /obj/structure/machinery/door/airlock/almayer/marine name = "\improper Airlock" diff --git a/code/game/machinery/doors/alarmlock.dm b/code/game/machinery/doors/alarmlock.dm index b6b9a6133a84..78fc05d8e0d0 100644 --- a/code/game/machinery/doors/alarmlock.dm +++ b/code/game/machinery/doors/alarmlock.dm @@ -33,8 +33,6 @@ var/alert = signal.data["alert"] var/area/our_area = get_area(src) - if (our_area.master) - our_area = our_area.master if(alarm_area == our_area.name) switch(alert) diff --git a/code/game/machinery/doors/brig_system.dm b/code/game/machinery/doors/brig_system.dm index 58c3282abed4..74792a610b72 100644 --- a/code/game/machinery/doors/brig_system.dm +++ b/code/game/machinery/doors/brig_system.dm @@ -279,7 +279,7 @@ var/obj/item/card/id/id_card = human.get_idcard() if (id_card) - if ((id_card.paygrade in GLOB.co_paygrades) || (id_card.paygrade in GLOB.highcom_paygrades) || (id_card.paygrade == "PvI")) + if ((id_card.paygrade in GLOB.co_paygrades) || (id_card.paygrade in GLOB.uscm_highcom_paygrades)) return TRUE return FALSE @@ -290,15 +290,15 @@ addtimer(CALLBACK(src, PROC_REF(search_for_components)), 20) /obj/structure/machinery/brig_cell/proc/search_for_components() - for(var/obj/structure/machinery/door/window/brigdoor/M in machines) + for(var/obj/structure/machinery/door/window/brigdoor/M in GLOB.machines) if(M.id == id) targets += M - for(var/obj/structure/machinery/flasher/F in machines) + for(var/obj/structure/machinery/flasher/F in GLOB.machines) if(F.id == id) targets += F - for(var/obj/structure/machinery/door/poddoor/almayer/locked/P in machines) + for(var/obj/structure/machinery/door/poddoor/almayer/locked/P in GLOB.machines) if(P.id == id) targets += P @@ -390,6 +390,14 @@ name = "Cell 4" id = "Cell 4" +/obj/structure/machinery/brig_cell/cell_5 + name = "Cell 5" + id = "Cell 5" + +/obj/structure/machinery/brig_cell/cell_6 + name = "Cell 6" + id = "Cell 6" + /obj/structure/machinery/brig_cell/perma_1 name = "Perma 1" id = "Perma 1" diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index b54658b24245..021cb60769f9 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -1,4 +1,3 @@ - /obj/structure/machinery/door name = "\improper Door" desc = "It opens and closes." @@ -7,50 +6,43 @@ anchored = TRUE opacity = TRUE density = TRUE - throwpass = 0 + throwpass = FALSE layer = DOOR_OPEN_LAYER minimap_color = MINIMAP_DOOR var/open_layer = DOOR_OPEN_LAYER var/closed_layer = DOOR_CLOSED_LAYER var/id = "" + var/width = 1 var/secondsElectrified = 0 - var/visible = 1 + var/visible = TRUE var/panel_open = FALSE - var/operating = 0 - var/autoclose = 0 - var/glass = 0 - var/normalspeed = 1 - var/openspeed = 10 //How many seconds does it take to open it? Default 1 second. Use only if you have long door opening animations - var/heat_proof = 0 // For glass airlocks/opacity firedoors - var/air_properties_vary_with_direction = 0 - var/turf/filler //Fixes double door opacity issue + var/operating = FALSE + var/autoclose = FALSE + var/glass = FALSE + /// If FALSE it speeds up the autoclosing timing. + var/normalspeed = TRUE + /// Time to open/close airlock, default is 1 second. + var/openspeed = 1 SECONDS + /// Fixes multi_tile doors opacity issues. + var/list/filler_turfs = list() //Previously this was just var, because no one had forseen someone creating doors more than 2 tiles wide /// Stops it being forced open through normal means (Hunters/Zombies/Aliens). var/heavy = FALSE /// Resistance to masterkey var/masterkey_resist = FALSE var/masterkey_mod = 0.1 - - - //Multi-tile doors - dir = EAST - var/width = 1 + dir = EAST //So multitile doors are directioned properly /obj/structure/machinery/door/Initialize(mapload, ...) . = ..() - if(density) - layer = closed_layer - update_flags_heat_protection(get_turf(src)) - else - layer = open_layer - + layer = density ? closed_layer : open_layer handle_multidoor() /obj/structure/machinery/door/Destroy() . = ..() - if(filler && width > 1) - filler.SetOpacity(0)// Ehh... let's hope there are no walls there. Must fix this - filler = null + if(length(filler_turfs) && width > 1) + change_filler_opacity(0) // It still doesn't check for walls, might want to add checking that in the future + filler_turfs = null density = FALSE /obj/structure/machinery/door/initialize_pass_flags(datum/pass_flags_container/PF) @@ -58,21 +50,41 @@ if (PF) PF.flags_can_pass_all = NONE +/// Also refreshes filler_turfs list. +/obj/structure/machinery/door/proc/change_filler_opacity(new_opacity) + // I have no idea why do we null opacity first before... changing it + for(var/turf/filler_turf as anything in filler_turfs) + filler_turf.set_opacity(null) + + filler_turfs = list() + for(var/turf/filler as anything in locate_filler_turfs()) + filler.set_opacity(new_opacity) + filler_turfs += filler + +/// Updates collision box and opacity of multi_tile airlocks. /obj/structure/machinery/door/proc/handle_multidoor() if(width > 1) if(dir in list(EAST, WEST)) bound_width = width * world.icon_size bound_height = world.icon_size - filler = get_step(src,EAST) - filler.SetOpacity(opacity) else bound_width = world.icon_size bound_height = width * world.icon_size - filler = get_step(src,NORTH) - filler.SetOpacity(opacity) + change_filler_opacity(opacity) + +/// Finds turfs which should be filler ones. +/obj/structure/machinery/door/proc/locate_filler_turfs() + var/turf/filler_temp + var/list/located_turfs = list() -//process() - //return + for(var/i in 1 to width - 1) + if (dir in list(EAST, WEST)) + filler_temp = locate(x + i, y, z) + else + filler_temp = locate(x, y + i, z) + if (filler_temp) + located_turfs += filler_temp + return located_turfs /obj/structure/machinery/door/proc/borders_space() for(var/turf/target in range(1, src)) @@ -81,7 +93,8 @@ return FALSE /obj/structure/machinery/door/Collided(atom/movable/AM) - if(panel_open || operating) return + if(panel_open || operating) + return if(ismob(AM)) var/mob/M = AM if(world.time - M.last_bumped <= openspeed) return //Can bump-open one airlock per second. This is to prevent shock spam. @@ -89,12 +102,10 @@ if(!M.is_mob_restrained() && M.mob_size > MOB_SIZE_SMALL) bumpopen(M) return - if(istype(AM, /obj)) var/obj/O = AM if(O.buckled_mob) Collided(O.buckled_mob) - if(istype(AM, /obj/structure/machinery/bot)) var/obj/structure/machinery/bot/bot = AM if(src.check_access(bot.botcard)) @@ -102,16 +113,17 @@ open() return - /obj/structure/machinery/door/proc/bumpopen(mob/user as mob) - if(operating) return - src.add_fingerprint(user) - if(!src.requiresID()) + if(operating) + return + add_fingerprint(user) + if(!requiresID()) user = null - if(density) - if(allowed(user)) open() - else flick("door_deny", src) + if(allowed(user)) + open() + else + flick("door_deny", src) return /obj/structure/machinery/door/attack_remote(mob/user) @@ -124,9 +136,7 @@ add_fingerprint(user) if(operating) return - if(!Adjacent(user)) - user = null //so allowed(user) always succeeds - if(!requiresID()) + if(!Adjacent(user) || !requiresID()) user = null //so allowed(user) always succeeds if(allowed(user)) if(density) @@ -137,64 +147,56 @@ if(density) flick("door_deny", src) - /obj/structure/machinery/door/attackby(obj/item/I, mob/user) if(!(I.flags_item & NOBLUDGEON)) try_to_activate_door(user) - return 1 + return TRUE /obj/structure/machinery/door/emp_act(severity) - if(prob(20/severity) && (istype(src,/obj/structure/machinery/door/airlock) || istype(src,/obj/structure/machinery/door/window)) ) + . = ..() + if(prob(20/severity) && use_power) open() if(prob(40/severity)) if(secondsElectrified == 0) secondsElectrified = -1 spawn(30 SECONDS) secondsElectrified = 0 - ..() - /obj/structure/machinery/door/ex_act(severity) - if(unacidable) return + if(unacidable) + return if(density) switch(severity) if(0 to EXPLOSION_THRESHOLD_LOW) if(prob(80)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(2, 1, src) - s.start() + var/datum/effect_system/spark_spread/spark = new /datum/effect_system/spark_spread + spark.set_up(2, 1, src) + spark.start() if(EXPLOSION_THRESHOLD_LOW to INFINITY) qdel(src) else switch(severity) if(0 to EXPLOSION_THRESHOLD_MEDIUM) if(prob(80)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(2, 1, src) - s.start() + var/datum/effect_system/spark_spread/spark = new /datum/effect_system/spark_spread + spark.set_up(2, 1, src) + spark.start() else qdel(src) return - /obj/structure/machinery/door/get_explosion_resistance() if(density) if(unacidable) - return 1000000 + return 1000000 //Used for negation of explosions, should probably be made into define in the future else return EXPLOSION_THRESHOLD_LOW //this should exactly match the amount of damage needed to destroy the door else return 0 - /obj/structure/machinery/door/update_icon() - if(density) - icon_state = "door1" - else - icon_state = "door0" - return - + icon_state = density ? "door1" : "door0" /obj/structure/machinery/door/proc/do_animate(animation) switch(animation) @@ -212,7 +214,6 @@ flick("door_deny", src) return - /obj/structure/machinery/door/proc/open(forced=0) if(!density) return TRUE @@ -222,9 +223,9 @@ operating = TRUE do_animate("opening") icon_state = "door0" - SetOpacity(FALSE) - if(filler) - filler.SetOpacity(opacity) + set_opacity(FALSE) + if(length(filler_turfs)) + change_filler_opacity(opacity) addtimer(CALLBACK(src, PROC_REF(finish_open)), openspeed) return TRUE @@ -235,11 +236,9 @@ if(operating) operating = FALSE - if(autoclose) addtimer(CALLBACK(src, PROC_REF(autoclose)), normalspeed ? 150 + openspeed : 5) - /obj/structure/machinery/door/proc/close() if(density) return TRUE @@ -255,23 +254,20 @@ /obj/structure/machinery/door/proc/finish_close() update_icon() if(visible && !glass) - SetOpacity(TRUE) - if(filler) - filler.SetOpacity(opacity) + set_opacity(TRUE) + if(length(filler_turfs)) + change_filler_opacity(opacity) operating = FALSE /obj/structure/machinery/door/proc/requiresID() return TRUE - -/obj/structure/machinery/door/proc/update_flags_heat_protection(turf/source) - - +/// Used for overriding in airlocks /obj/structure/machinery/door/proc/autoclose() - var/obj/structure/machinery/door/airlock/A = src - if(!A.density && !A.operating && !A.locked && !A.welded && A.autoclose) + if(!autoclose) + return + if(!density && !operating) close() - return /obj/structure/machinery/door/Move(new_loc, new_dir) . = ..() @@ -279,16 +275,15 @@ if(dir in list(EAST, WEST)) bound_width = width * world.icon_size bound_height = world.icon_size - filler.SetOpacity(0) - filler = (get_step(src,EAST)) //Find new turf - filler.SetOpacity(opacity) else bound_width = world.icon_size bound_height = width * world.icon_size - filler.SetOpacity(0) - filler = (get_step(src,NORTH)) //Find new turf - filler.SetOpacity(opacity) + change_filler_opacity(opacity) +/obj/structure/machinery/door/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) + . = ..() + // Yes, for a split second after departure you can see through rear dropship airlocks, but it's the simplest solution I could've think of + handle_multidoor() /obj/structure/machinery/door/morgue icon = 'icons/obj/structures/doors/doormorgue.dmi' diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 065816567ca1..cddd67c7e2b2 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -1,7 +1,4 @@ // Door open and close constants -/var/const - CLOSED = 2 - #define FIREDOOR_MAX_PRESSURE_DIFF 25 // kPa #define FIREDOOR_MAX_TEMP 50 // °C #define FIREDOOR_MIN_TEMP 0 @@ -57,7 +54,7 @@ A.all_doors.Add(src) areas_added = list(A) - for(var/direction in cardinal) + for(var/direction in GLOB.cardinals) A = get_area(get_step(src,direction)) if(istype(A) && !(A in areas_added)) A.all_doors.Add(src) @@ -135,7 +132,7 @@ "Would you like to [density ? "open" : "close"] this [src.name]?[ alarmed && density ? "\nNote that by doing so, you acknowledge any damages from opening this\n[src.name] as being your own fault, and you will be held accountable under the law." : ""]",\ "\The [src]", list("Yes", "No")) != "Yes") return - if(user.is_mob_incapacitated() || (!user.canmove && !isRemoteControlling(user)) || (get_dist(src, user) > 1 && !isRemoteControlling(user))) + if(user.is_mob_incapacitated() || (get_dist(src, user) > 1 && !isRemoteControlling(user))) to_chat(user, "Sorry, you must remain able bodied and close to \the [src] in order to use it.") return if(density && (inoperable())) //can still close without power @@ -277,7 +274,7 @@ overlays += "palert" if(dir_alerts) for(var/d=1;d<=4;d++) - var/cdir = cardinal[d] + var/cdir = GLOB.cardinals[d] for(var/i=1;i<=ALERT_STATES.len;i++) if(dir_alerts[d] & (1<<(i-1))) overlays += new/icon(icon,"alert_[ALERT_STATES[i]]", dir=cdir) diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm index ee30af72558e..0a179af27803 100644 --- a/code/game/machinery/doors/multi_tile.dm +++ b/code/game/machinery/doors/multi_tile.dm @@ -2,19 +2,24 @@ /obj/structure/machinery/door/airlock/multi_tile width = 2 damage_cap = 650 // Bigger = more endurable + assembly_type = /obj/structure/airlock_assembly/multi_tile /obj/structure/machinery/door/airlock/multi_tile/close() //Nasty as hell O(n^2) code but unfortunately necessary - for(var/turf/T in locs) - for(var/obj/vehicle/multitile/M in T) - if(M) return 0 + for(var/turf/turf_tile in locs) + for(var/obj/vehicle/multitile/vehicle_tile in turf_tile) + if(vehicle_tile) return 0 return ..() +/obj/structure/machinery/door/airlock/multi_tile/Initialize() + . = ..() + update_icon() + /obj/structure/machinery/door/airlock/multi_tile/glass name = "Glass Airlock" icon = 'icons/obj/structures/doors/Door2x1glass.dmi' opacity = FALSE - glass = 1 + glass = TRUE assembly_type = /obj/structure/airlock_assembly/multi_tile /obj/structure/machinery/door/airlock/multi_tile/glass/colony @@ -25,7 +30,7 @@ name = "Security Airlock" icon = 'icons/obj/structures/doors/Door2x1security.dmi' opacity = FALSE - glass = 1 + glass = TRUE /obj/structure/machinery/door/airlock/multi_tile/security/colony req_access = null @@ -35,17 +40,17 @@ name = "Command Airlock" icon = 'icons/obj/structures/doors/Door2x1command.dmi' opacity = FALSE - glass = 1 + glass = TRUE /obj/structure/machinery/door/airlock/multi_tile/command/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/multi_tile/medical name = "Medical Airlock" icon = 'icons/obj/structures/doors/Door2x1medbay.dmi' opacity = FALSE - glass = 1 + glass = TRUE /obj/structure/machinery/door/airlock/multi_tile/medical/colony req_access = null @@ -55,7 +60,7 @@ name = "Engineering Airlock" icon = 'icons/obj/structures/doors/Door2x1engine.dmi' opacity = FALSE - glass = 1 + glass = TRUE /obj/structure/machinery/door/airlock/multi_tile/engineering/colony req_access = null @@ -65,11 +70,12 @@ name = "Research Airlock" icon = 'icons/obj/structures/doors/Door2x1research.dmi' opacity = FALSE - glass = 1 + glass = TRUE + req_one_access = list(ACCESS_MARINE_RESEARCH, ACCESS_WY_RESEARCH, ACCESS_WY_EXEC) /obj/structure/machinery/door/airlock/multi_tile/research/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/multi_tile/research/reinforced name = "Reinforced Research Airlock" @@ -77,7 +83,7 @@ /obj/structure/machinery/door/airlock/multi_tile/research/reinforced/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/multi_tile/secure name = "Secure Airlock" @@ -102,7 +108,7 @@ name = "Secure Airlock" icon = 'icons/obj/structures/doors/Door2x1_secure2_glass.dmi' opacity = FALSE - glass = 1 + glass = TRUE openspeed = 31 req_access = null @@ -130,7 +136,6 @@ /obj/structure/window/framed/almayer, /obj/structure/machinery/door/airlock, ) - var/multi_filler = list() /obj/structure/machinery/door/airlock/multi_tile/almayer/Initialize() . = ..() @@ -140,10 +145,10 @@ . = ..() relativewall_neighbours() -/obj/structure/machinery/door/airlock/multi_tile/almayer/take_damage(dam, mob/M) - var/damage_check = max(0, damage + dam) - if(damage_check >= damage_cap && M && is_mainship_level(z)) - SSclues.create_print(get_turf(M), M, "The fingerprint contains bits of wire and metal specks.") +/obj/structure/machinery/door/airlock/multi_tile/almayer/take_damage(taken_damage, mob/damaging_mob) + var/damage_check = max(0, damage + taken_damage) + if(damage_check >= damage_cap && damaging_mob && is_mainship_level(z)) + SSclues.create_print(get_turf(damaging_mob), damaging_mob, "The fingerprint contains bits of wire and metal specks.") ..() /obj/structure/machinery/door/airlock/multi_tile/almayer/generic @@ -155,6 +160,11 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/generic/autoname autoname = TRUE +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic/solid + icon = 'icons/obj/structures/doors/2x1generic_solid.dmi' + opacity = TRUE + glass = FALSE + /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor name = "\improper Medical Airlock" icon = 'icons/obj/structures/doors/2x1medidoor.dmi' @@ -178,12 +188,12 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/research name = "\improper Research Airlock" - req_one_access = list(ACCESS_MARINE_RESEARCH) + req_one_access = list(ACCESS_MARINE_RESEARCH, ACCESS_WY_RESEARCH, ACCESS_WY_EXEC) masterkey_resist = TRUE /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/research/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor name = "\improper Command Airlock" @@ -194,7 +204,7 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/reinforced name = "\improper Reinforced Command Airlock" @@ -202,7 +212,7 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/reinforced/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/solid icon = 'icons/obj/structures/doors/2x1comdoor_solid.dmi' @@ -211,7 +221,7 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/solid/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/solid/reinforced name = "\improper Reinforced Command Airlock" @@ -219,48 +229,7 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/solid/reinforced/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) - -/obj/structure/machinery/door/airlock/multi_tile/almayer/handle_multidoor() - if(!(width > 1)) return //Bubblewrap - - update_filler_turfs() - if(dir in list(NORTH, SOUTH)) - bound_height = world.icon_size * width - bound_width = world.icon_size - else if(dir in list(EAST, WEST)) - bound_width = world.icon_size * width - bound_height = world.icon_size - -//We have to find these again since these doors are used on shuttles a lot so the turfs changes -/obj/structure/machinery/door/airlock/multi_tile/almayer/proc/update_filler_turfs() - for(var/turf/T in multi_filler) - T.SetOpacity(null) - - multi_filler = list() - for(var/turf/T in get_filler_turfs()) - T.SetOpacity(opacity) - multi_filler += list(T) - -/obj/structure/machinery/door/airlock/multi_tile/proc/get_filler_turfs() - . = list() - for(var/i = 1, i < width, i++) - if(dir in list(NORTH, SOUTH)) - var/turf/T = locate(x, y + i, z) - if(T) - . += list(T) - else if(dir in list(EAST, WEST)) - var/turf/T = locate(x + i, y, z) - if(T) - . += list(T) - -/obj/structure/machinery/door/airlock/multi_tile/almayer/open() - . = ..() - update_filler_turfs() - -/obj/structure/machinery/door/airlock/multi_tile/almayer/close() - . = ..() - update_filler_turfs() + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) //------Dropship Cargo Doors -----// @@ -271,6 +240,7 @@ unacidable = TRUE no_panel = 1 not_weldable = 1 + var/queen_pryable = TRUE /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/ex_act(severity) return @@ -285,6 +255,9 @@ if(xeno.hive_pos != XENO_QUEEN) return ..() + if(!queen_pryable) + return ..() + if(!locked) return ..() @@ -302,6 +275,17 @@ name = "\improper Normandy cargo door" icon = 'icons/obj/structures/doors/dropship2_cargo.dmi' +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside + width = 2 + +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds1 + name = "\improper Alamo crew hatch" + icon = 'icons/obj/structures/doors/dropship1_side2.dmi' + +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2 + name = "\improper Normandy crew hatch" + icon = 'icons/obj/structures/doors/dropship2_side2.dmi' + /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/blastdoor name = "bulkhead blast door" icon = 'icons/obj/structures/doors/almayerblastdoor.dmi' @@ -316,6 +300,7 @@ locked = TRUE opacity = FALSE glass = TRUE + queen_pryable = FALSE var/throw_dir = EAST /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/try_to_activate_door(mob/user) @@ -353,8 +338,8 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock, idnum, override) . = ..() - if(istype(port, /obj/docking_port/mobile/lifeboat)) - var/obj/docking_port/mobile/lifeboat/lifeboat = port + if(istype(port, /obj/docking_port/mobile/crashable/lifeboat)) + var/obj/docking_port/mobile/crashable/lifeboat/lifeboat = port lifeboat.doors += src /// External airlock that is part of the lifeboat dock @@ -377,7 +362,8 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor/proc/vacate_premises() for(var/turf/self_turf as anything in locs) var/turf/near_turf = get_step(self_turf, throw_dir) - var/turf/projected = get_ranged_target_turf(near_turf, throw_dir, 50) + var/turf/space_turf = get_step(near_turf, throw_dir) + var/turf/projected = get_ranged_target_turf(space_turf, EAST, 50) for(var/atom/movable/atom_movable in near_turf) if(ismob(atom_movable) && !isobserver(atom_movable)) var/mob/mob = atom_movable @@ -389,7 +375,9 @@ continue else continue - INVOKE_ASYNC(atom_movable, TYPE_PROC_REF(/atom/movable, throw_atom), projected, 50, SPEED_FAST, null, TRUE) + atom_movable.forceMove(space_turf) + INVOKE_ASYNC(atom_movable, TYPE_PROC_REF(/atom/movable, throw_atom), projected, 50, SPEED_FAST, null, TRUE, HIGH_LAUNCH) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), atom_movable), 3 SECONDS) /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor/proc/bolt_explosion() var/turf/turf = get_step(src, throw_dir|dir) @@ -418,7 +406,7 @@ /obj/structure/machinery/door/airlock/multi_tile/elevator/access icon = 'icons/obj/structures/doors/4x1_elevator_access.dmi' opacity = FALSE - glass = 1 + glass = TRUE /obj/structure/machinery/door/airlock/multi_tile/elevator/access/research name = "\improper Research Elevator Hatch" @@ -538,7 +526,7 @@ icon = 'icons/obj/structures/doors/prepdoor.dmi' req_one_access = list(ACCESS_MARINE_PREP, ACCESS_MARINE_DATABASE, ACCESS_MARINE_CARGO, ACCESS_MARINE_ALPHA, ACCESS_MARINE_BRAVO, ACCESS_MARINE_CHARLIE, ACCESS_MARINE_DELTA) opacity = FALSE - glass = 1 + glass = TRUE /obj/structure/machinery/door/airlock/multi_tile/almayer/marine/shared/alpha_bravo name = "\improper Alpha-Bravo Squads Preparations" diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index 972ce6b7570e..0a3b873ce385 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -16,9 +16,9 @@ /obj/structure/machinery/door/poddoor/Initialize() . = ..() if(density) - SetOpacity(1) + set_opacity(1) else - SetOpacity(0) + set_opacity(0) update_icon() /obj/structure/machinery/door/poddoor/update_icon() @@ -42,7 +42,7 @@ operating = 1 flick("[base_icon_state]c0", src) icon_state = "[base_icon_state]0" - SetOpacity(0) + set_opacity(0) sleep(15) density = FALSE operating = 0 @@ -84,7 +84,7 @@ playsound(loc, 'sound/machines/blastdoor.ogg', 20, 0) flick("[base_icon_state]c0", src) icon_state = "[base_icon_state]0" - SetOpacity(0) + set_opacity(0) addtimer(CALLBACK(src, PROC_REF(finish_open)), openspeed) return TRUE @@ -102,7 +102,7 @@ flick("[base_icon_state]c1", src) icon_state = "[base_icon_state]1" density = TRUE - SetOpacity(initial(opacity)) + set_opacity(initial(opacity)) addtimer(CALLBACK(src, PROC_REF(finish_close)), openspeed) return @@ -123,13 +123,13 @@ /obj/structure/machinery/door/poddoor/two_tile/proc/start_opening() flick("[base_icon_state]c0", src) icon_state = "[base_icon_state]0" - SetOpacity(0) - f1.SetOpacity(0) - f2.SetOpacity(0) + set_opacity(0) + f1.set_opacity(0) + f2.set_opacity(0) /obj/structure/machinery/door/poddoor/two_tile/four_tile/start_opening() - f3.SetOpacity(0) - f4.SetOpacity(0) + f3.set_opacity(0) + f4.set_opacity(0) ..() /obj/structure/machinery/door/poddoor/two_tile/proc/open_fully() @@ -169,14 +169,14 @@ ..() /obj/structure/machinery/door/poddoor/two_tile/proc/close_fully() - SetOpacity(initial(opacity)) - f1.SetOpacity(initial(opacity)) - f2.SetOpacity(initial(opacity)) + set_opacity(initial(opacity)) + f1.set_opacity(initial(opacity)) + f2.set_opacity(initial(opacity)) operating = 0 /obj/structure/machinery/door/poddoor/two_tile/four_tile/close_fully() - f3.SetOpacity(initial(opacity)) - f4.SetOpacity(initial(opacity)) + f3.set_opacity(initial(opacity)) + f4.set_opacity(initial(opacity)) ..() /obj/structure/machinery/door/poddoor/two_tile @@ -194,8 +194,8 @@ f2 = new/obj/structure/machinery/door/poddoor/filler_object (get_step(src,dir)) f1.density = density f2.density = density - f1.SetOpacity(opacity) - f2.SetOpacity(opacity) + f1.set_opacity(opacity) + f2.set_opacity(opacity) /obj/structure/machinery/door/poddoor/two_tile/Destroy() QDEL_NULL(f1) @@ -223,8 +223,8 @@ f4 = new/obj/structure/machinery/door/poddoor/filler_object (get_step(f3,dir)) f3.density = density f4.density = density - f3.SetOpacity(opacity) - f4.SetOpacity(opacity) + f3.set_opacity(opacity) + f4.set_opacity(opacity) /obj/structure/machinery/door/poddoor/two_tile/four_tile/Destroy() QDEL_NULL(f3) @@ -240,6 +240,7 @@ /obj/structure/machinery/door/poddoor/filler_object name = "" + icon = null icon_state = "" unslashable = TRUE unacidable = TRUE @@ -287,10 +288,13 @@ /obj/structure/machinery/door/poddoor/almayer/blended icon_state = "almayer_pdoor1" base_icon_state = "almayer_pdoor" - +/obj/structure/machinery/door/poddoor/almayer/blended/open + density = FALSE /obj/structure/machinery/door/poddoor/almayer/blended/white icon_state = "w_almayer_pdoor1" base_icon_state = "w_almayer_pdoor" +/obj/structure/machinery/door/poddoor/almayer/blended/white/open + density = FALSE /obj/structure/machinery/door/poddoor/almayer/Initialize() . = ..() diff --git a/code/game/machinery/doors/railing.dm b/code/game/machinery/doors/railing.dm index 145a5d8191dc..c86adb2e970b 100644 --- a/code/game/machinery/doors/railing.dm +++ b/code/game/machinery/doors/railing.dm @@ -19,9 +19,10 @@ . = ..() if(dir == SOUTH) closed_layer = ABOVE_MOB_LAYER - layer = closed_layer + if(density)//Allows preset-open to work + layer = closed_layer - SetOpacity(initial(opacity)) + set_opacity(initial(opacity)) /obj/structure/machinery/door/poddoor/railing/update_icon() if(density) @@ -63,3 +64,6 @@ addtimer(VARSET_CALLBACK(src, operating, FALSE), 1.2 SECONDS) return TRUE + +/obj/structure/machinery/door/poddoor/railing/open + density = FALSE diff --git a/code/game/machinery/doors/runed_sandstone.dm b/code/game/machinery/doors/runed_sandstone.dm index d67398baa305..a6de7348dd7f 100644 --- a/code/game/machinery/doors/runed_sandstone.dm +++ b/code/game/machinery/doors/runed_sandstone.dm @@ -100,7 +100,7 @@ operating = TRUE do_animate("opening") icon_state = "door0" - SetOpacity(FALSE) + set_opacity(0) addtimer(CALLBACK(src, PROC_REF(finish_open)), openspeed) return @@ -109,9 +109,9 @@ layer = open_layer density = FALSE update_icon() - SetOpacity(0) - if(filler) - filler.SetOpacity(opacity) + set_opacity(0) + if(length(filler_turfs)) + change_filler_opacity(opacity) if(operating) operating = FALSE @@ -130,7 +130,7 @@ operating = TRUE density = TRUE - SetOpacity(TRUE) + set_opacity(1) layer = closed_layer do_animate("closing") diff --git a/code/game/machinery/doors/shutters.dm b/code/game/machinery/doors/shutters.dm index 68b0464f87f8..f91f1f48cade 100644 --- a/code/game/machinery/doors/shutters.dm +++ b/code/game/machinery/doors/shutters.dm @@ -26,7 +26,7 @@ icon_state = "[base_icon_state]0" sleep(15) density = FALSE - SetOpacity(0) + set_opacity(0) operating = 0 return return @@ -46,7 +46,7 @@ /obj/structure/machinery/door/poddoor/shutters/finish_open() density = FALSE layer = open_layer - SetOpacity(0) + set_opacity(0) if(operating) //emag again operating = FALSE @@ -63,7 +63,7 @@ layer = closed_layer density = TRUE if(visible) - SetOpacity(1) + set_opacity(1) playsound(loc, 'sound/machines/blastdoor.ogg', 25) addtimer(CALLBACK(src, PROC_REF(finish_close)), openspeed) @@ -87,6 +87,17 @@ . = ..() relativewall_neighbours() +/obj/structure/machinery/door/poddoor/shutters/almayer/yautja + name = "Armory Shutter" + id = "Yautja Armory" + needs_power = FALSE + unacidable = TRUE + indestructible = TRUE + +/obj/structure/machinery/door/poddoor/shutters/almayer/yautja/Initialize() + . = ..() + RegisterSignal(SSdcs, COMSIG_GLOB_YAUTJA_ARMORY_OPENED, PROC_REF(open)) + /obj/structure/machinery/door/poddoor/shutters/almayer/containment unacidable = TRUE @@ -144,3 +155,44 @@ if(HAS_TRAIT(attacking_item, TRAIT_TOOL_CROWBAR)) return ..() + +/obj/structure/machinery/door/poddoor/shutters/almayer/uniform_vendors/antitheft + name = "Anti-Theft Shutters" + desc = "Secure Storage shutters, they're reinforced against entry attempts." + var/req_level = SEC_LEVEL_RED + +/obj/structure/machinery/door/poddoor/shutters/almayer/uniform_vendors/antitheft/Initialize() + . = ..() + if(is_mainship_level(z)) + RegisterSignal(SSdcs, COMSIG_GLOB_SECURITY_LEVEL_CHANGED, PROC_REF(sec_changed)) + +/obj/structure/machinery/door/poddoor/shutters/almayer/uniform_vendors/antitheft/proc/sec_changed(datum/source, new_sec) + SIGNAL_HANDLER + if(new_sec < req_level) + if(density) + return + close() + else + if(!density) + return + open() + +//make a subtype for CL office so it as a proper name. +/obj/structure/machinery/door/poddoor/shutters/almayer/cl + name = "\improper Corporate Liaison Privacy Shutters" +//adding a subtype for CL office to use to secure access to cl office. +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/office +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/office/door + id = "cl_office_door" +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/office/window + id = "cl_office_windows" +//adding a subtype for CL quarter to use to secure access to cl quarter.(including seperation with the office) +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/quarter +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/quarter/backdoor + id = "cl_quarter_maintenance" + dir = 4 +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/quarter/door + id = "cl_quarter_door" + dir = 4 +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/quarter/window + id = "cl_quarter_windows" diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 6d96daf3152f..76a370061a2f 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -11,7 +11,6 @@ flags_atom = ON_BORDER opacity = FALSE var/obj/item/circuitboard/airlock/electronics = null - air_properties_vary_with_direction = 1 /obj/structure/machinery/door/window/Initialize() . = ..() @@ -123,7 +122,7 @@ qdel(src) return -/obj/structure/machinery/door/window/bullet_act(obj/item/projectile/Proj) +/obj/structure/machinery/door/window/bullet_act(obj/projectile/Proj) bullet_ping(Proj) if(Proj.ammo.damage) take_damage(round(Proj.ammo.damage / 2)) @@ -167,7 +166,7 @@ return //If it's emagged, crowbar can pry electronics out. - if (src.operating == -1 && istype(I, /obj/item/tool/crowbar)) + if (src.operating == -1 && HAS_TRAIT(I, TRAIT_TOOL_CROWBAR)) playsound(src.loc, 'sound/items/Crowbar.ogg', 25, 1) user.visible_message("[user] removes the electronics from the windoor.", "You start to remove electronics from the windoor.") if (do_after(user, 40, INTERRUPT_ALL, BUSY_ICON_BUILD)) @@ -296,12 +295,12 @@ /obj/structure/machinery/door/window/ultra/Initialize(mapload, ...) . = ..() - GLOB.hijack_deletable_windows += src - -/obj/structure/machinery/door/window/ultra/Destroy() - GLOB.hijack_deletable_windows -= src - return ..() + if(is_mainship_level(z)) + RegisterSignal(SSdcs, COMSIG_GLOB_HIJACK_IMPACTED, PROC_REF(impact)) // No damage taken. /obj/structure/machinery/door/window/ultra/attackby(obj/item/I, mob/user) return try_to_activate_door(user) + +/obj/structure/machinery/door/window/ultra/proc/impact() + qdel(src) diff --git a/code/game/machinery/fax_machine.dm b/code/game/machinery/fax_machine.dm index 783d24c00f2e..53b8736f75f3 100644 --- a/code/game/machinery/fax_machine.dm +++ b/code/game/machinery/fax_machine.dm @@ -1,11 +1,15 @@ -var/list/obj/structure/machinery/faxmachine/allfaxes = list() -var/list/alldepartments = list() +GLOBAL_LIST_INIT_TYPED(allfaxes, /obj/structure/machinery/faxmachine, list()) +GLOBAL_LIST_EMPTY(alldepartments) #define DEPARTMENT_WY "Weyland-Yutani" #define DEPARTMENT_HC "USCM High Command" #define DEPARTMENT_CMB "CMB Incident Command Center, Local Operations" #define DEPARTMENT_PROVOST "USCM Provost Office" #define DEPARTMENT_PRESS "Various Press Organizations" +#define DEPARTMENT_TWE "Three World Empire" +#define DEPARTMENT_UPP "Union of Progress Peoples" +#define DEPARTMENT_CLF "Colonial Liberation Front" +#define HIGHCOM_DEPARTMENTS list(DEPARTMENT_WY, DEPARTMENT_HC, DEPARTMENT_CMB, DEPARTMENT_PROVOST, DEPARTMENT_PRESS, DEPARTMENT_TWE, DEPARTMENT_UPP, DEPARTMENT_CLF) /obj/structure/machinery/faxmachine // why not fax_machine? name = "\improper General Purpose Fax Machine" @@ -44,11 +48,11 @@ var/list/alldepartments = list() /obj/structure/machinery/faxmachine/Initialize(mapload, ...) . = ..() - allfaxes += src + GLOB.allfaxes += src update_departments() /obj/structure/machinery/faxmachine/Destroy() - allfaxes -= src + GLOB.allfaxes -= src . = ..() /obj/structure/machinery/faxmachine/initialize_pass_flags(datum/pass_flags_container/PF) @@ -109,7 +113,8 @@ var/list/alldepartments = list() set category = "Object" set name = "Eject ID Card" set src in view(1) - if(!usr || usr.stat || usr.lying) return + if(usr.is_mob_incapacitated()) + return if(ishuman(usr) && scan) to_chat(usr, "You remove \the [scan] from \the [src].") @@ -124,18 +129,25 @@ var/list/alldepartments = list() return /obj/structure/machinery/faxmachine/proc/update_departments() - if( !("[department]" in alldepartments) ) //Initialize departments. This will work with multiple fax machines. - alldepartments += department - if(!(DEPARTMENT_WY in alldepartments)) - alldepartments += DEPARTMENT_WY - if(!(DEPARTMENT_HC in alldepartments)) - alldepartments += DEPARTMENT_HC - if(!(DEPARTMENT_PROVOST in alldepartments)) - alldepartments += DEPARTMENT_PROVOST - if(!(DEPARTMENT_CMB in alldepartments)) - alldepartments += DEPARTMENT_CMB - if(!(DEPARTMENT_PRESS in alldepartments)) - alldepartments += DEPARTMENT_PRESS + if( !("[department]" in GLOB.alldepartments) ) //Initialize departments. This will work with multiple fax machines. + GLOB.alldepartments += department + if(!(DEPARTMENT_WY in GLOB.alldepartments)) + GLOB.alldepartments += DEPARTMENT_WY + if(!(DEPARTMENT_HC in GLOB.alldepartments)) + GLOB.alldepartments += DEPARTMENT_HC + if(!(DEPARTMENT_PROVOST in GLOB.alldepartments)) + GLOB.alldepartments += DEPARTMENT_PROVOST + if(!(DEPARTMENT_CMB in GLOB.alldepartments)) + GLOB.alldepartments += DEPARTMENT_CMB + if(!(DEPARTMENT_PRESS in GLOB.alldepartments)) + GLOB.alldepartments += DEPARTMENT_PRESS + if(!(DEPARTMENT_TWE in GLOB.alldepartments)) + GLOB.alldepartments += DEPARTMENT_TWE + if(!(DEPARTMENT_UPP in GLOB.alldepartments)) + GLOB.alldepartments += DEPARTMENT_UPP + if(!(DEPARTMENT_CLF in GLOB.alldepartments)) + GLOB.alldepartments += DEPARTMENT_CLF + // TGUI SHIT \\ /obj/structure/machinery/faxmachine/tgui_interact(mob/user, datum/tgui/ui) @@ -254,7 +266,7 @@ var/list/alldepartments = list() if("select") var/last_target_department = target_department - target_department = tgui_input_list(ui.user, "Which department?", "Choose a department", alldepartments) + target_department = tgui_input_list(ui.user, "Which department?", "Choose a department", GLOB.alldepartments) if(!target_department) target_department = last_target_department . = TRUE @@ -275,9 +287,12 @@ var/list/alldepartments = list() . = ..() . += "" . += "" - . += "" + . += "" . += "" . += "" + . += "" + . += "" + . += "" // converting whatever type the fax is into a single paper with all the information on it. /obj/structure/machinery/faxmachine/proc/copy_fax_paper(mob/living/user) @@ -319,27 +334,40 @@ var/list/alldepartments = list() GLOB.fax_contents += faxcontents + var/scan_department = target_department + if(department in HIGHCOM_DEPARTMENTS) + scan_department = department + var/msg_admin = SPAN_STAFF_IC("[target_department]: [key_name(user, 1)] ") msg_admin += "[CC_MARK(user)] [ADMIN_PP(user)] [ADMIN_VV(user)] [ADMIN_SM(user)] [ADMIN_JMP_USER(user)] " - switch(target_department) + switch(scan_department) if(DEPARTMENT_HC) - GLOB.USCMFaxes.Add("\[view message at [world.timeofday]\] REPLY") + GLOB.USCMFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") msg_admin += "(RPLY): " if(DEPARTMENT_PROVOST) - GLOB.ProvostFaxes.Add("\[view message at [world.timeofday]\] REPLY") + GLOB.ProvostFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") msg_admin += "(RPLY): " if(DEPARTMENT_CMB) - GLOB.CMBFaxes.Add("\[view message at [world.timeofday]\] REPLY") + GLOB.CMBFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") msg_admin += "(RPLY): " if(DEPARTMENT_WY) - GLOB.WYFaxes.Add("\[view message at [world.timeofday]\] REPLY") - msg_admin += "(RPLY): " + GLOB.WYFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") + msg_admin += "(RPLY): " if(DEPARTMENT_PRESS) - GLOB.PressFaxes.Add("\[view message at [world.timeofday]\] REPLY") + GLOB.PressFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") msg_admin += "(RPLY): " + if(DEPARTMENT_TWE) + GLOB.TWEFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") + msg_admin += "(RPLY): " + if(DEPARTMENT_UPP) + GLOB.UPPFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") + msg_admin += "(RPLY): " + if(DEPARTMENT_CLF) + GLOB.CLFFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") + msg_admin += "(RPLY): " else - GLOB.GeneralFaxes.Add("\[view message at [world.timeofday]\] REPLY") + GLOB.GeneralFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") msg_admin += "(RPLY): " msg_admin += SPAN_STAFF_IC("Receiving fax via secure connection ... view message") @@ -359,7 +387,7 @@ var/list/alldepartments = list() to_chat(C, msg_admin) else to_chat(C, msg_ghost) - C << 'sound/effects/sos-morse-code.ogg' + C << 'sound/effects/incoming-fax.ogg' if(msg_ghost) for(var/i in GLOB.observer_list) var/mob/dead/observer/g = i @@ -370,11 +398,11 @@ var/list/alldepartments = list() if((R_ADMIN|R_MOD) & C.admin_holder.rights) //staff don't need to see the fax twice continue to_chat(C, msg_ghost) - C << 'sound/effects/sos-morse-code.ogg' + C << 'sound/effects/incoming-fax.ogg' /obj/structure/machinery/faxmachine/proc/send_fax(datum/fax/faxcontents) - for(var/obj/structure/machinery/faxmachine/F in allfaxes) + for(var/obj/structure/machinery/faxmachine/F in GLOB.allfaxes) if(F != src && F.department == target_department) if(!faxcontents) return @@ -396,7 +424,7 @@ var/list/alldepartments = list() P.stamps += "
      This paper has been stamped by the USCM High Command Quantum Relay." if("NC4 UA Federal Secure Network - CMB Relay") var/image/stampoverlay = image('icons/obj/items/paper.dmi') - stampoverlay.icon_state = "paper_stamp-uscm" // placeholder icon + stampoverlay.icon_state = "paper_stamp-cmb" if(!P.stamped) P.stamped = new P.stamped += /obj/item/tool/stamp @@ -404,12 +432,36 @@ var/list/alldepartments = list() P.stamps += "
      This paper has been stamped by The Office of Colonial Marshals." if("Weyland-Yutani Quantum Relay") var/image/stampoverlay = image('icons/obj/items/paper.dmi') - stampoverlay.icon_state = "paper_stamp-cent" + stampoverlay.icon_state = "paper_stamp-weyyu" if(!P.stamped) P.stamped = new P.stamped += /obj/item/tool/stamp P.overlays += stampoverlay P.stamps += "
      This paper has been stamped and encrypted by the Weyland-Yutani Quantum Relay (tm)." + if("TWE Royal Marines Commando Quantum Relay") + var/image/stampoverlay = image('icons/obj/items/paper.dmi') + stampoverlay.icon_state = "paper_stamp-twe" + if(!P.stamped) + P.stamped = new + P.stamped += /obj/item/tool/stamp + P.overlays += stampoverlay + P.stamps += "
      This paper has been stamped by the TWE Royal Marines Commando Quantum Relay." + if("UPP High Kommand Quantum Relay") + var/image/stampoverlay = image('icons/obj/items/paper.dmi') + stampoverlay.icon_state = "paper_stamp-upp" + if(!P.stamped) + P.stamped = new + P.stamped += /obj/item/tool/stamp + P.overlays += stampoverlay + P.stamps += "
      This paper has been stamped by the UPP High Kommand Quantum Relay." + if("CLF Gureilla Command Quantum Relay") + var/image/stampoverlay = image('icons/obj/items/paper.dmi') + stampoverlay.icon_state = "paper_stamp-clf" + if(!P.stamped) + P.stamped = new + P.stamped += /obj/item/tool/stamp + P.overlays += stampoverlay + P.stamps += "
      This paper has been stamped and encrypted by the CLF Gureilla Command Quantum Relay." playsound(F.loc, "sound/items/polaroid1.ogg", 15, 1) qdel(faxcontents) diff --git a/code/game/machinery/fire_alarm.dm b/code/game/machinery/fire_alarm.dm index fe1f80646c4f..55aef1323c4d 100644 --- a/code/game/machinery/fire_alarm.dm +++ b/code/game/machinery/fire_alarm.dm @@ -47,7 +47,7 @@ FIRE ALARM if(stat & BROKEN) icon_state = "firex" - else if(stat & NOPOWER & (security_level != SEC_LEVEL_RED)) + else if(stat & NOPOWER & (GLOB.security_level != SEC_LEVEL_RED)) icon_state = "firep" /obj/structure/machinery/firealarm/fire_act(temperature, volume) @@ -63,8 +63,9 @@ FIRE ALARM return src.alarm() /obj/structure/machinery/firealarm/emp_act(severity) - if(prob(50/severity)) alarm() - ..() + . = ..() + if(prob(50/severity)) + alarm() /obj/structure/machinery/firealarm/attackby(obj/item/held_object as obj, mob/user as mob) src.add_fingerprint(user) @@ -182,7 +183,7 @@ FIRE ALARM pixel_y = (dir & 3)? (dir ==1 ? -24 : 24) : 0 if(!is_mainship_level(z)) - if(security_level) + if(GLOB.security_level) src.overlays += image('icons/obj/structures/machinery/monitors.dmi', "overlay_[get_security_level()]") else src.overlays += image('icons/obj/structures/machinery/monitors.dmi', "overlay_green") diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 556eab541363..437ef7b067ea 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -26,10 +26,10 @@ ..() if ( !(stat & NOPOWER) ) icon_state = "[base_state]1" -// src.sd_SetLuminosity(2) +// src.sd_set_light(2) else icon_state = "[base_state]1-p" -// src.sd_SetLuminosity(0) +// src.sd_set_light(0) //Don't want to render prison breaks impossible /obj/structure/machinery/flasher/attackby(obj/item/W as obj, mob/user as mob) @@ -60,7 +60,7 @@ src.last_flash = world.time use_power(1500) - for (var/mob/O in viewers(src, null)) + for (var/mob/living/O in viewers(src, null)) if (get_dist(src, O) > src.range) continue @@ -72,7 +72,9 @@ if (istype(O, /mob/living/carbon/xenomorph))//So aliens don't get flashed (they have no external eyes)/N continue - O.apply_effect(strength, WEAKEN) + O.KnockDown(strength) + O.Stun(strength) + if (istype(O, /mob/living/carbon/human)) var/mob/living/carbon/human/H = O var/datum/internal_organ/eyes/E = H.internal_organs_by_name["eyes"] @@ -84,12 +86,11 @@ /obj/structure/machinery/flasher/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return if(prob(75/severity)) flash() - ..(severity) /obj/structure/machinery/flasher/portable/HasProximity(atom/movable/AM as mob|obj) if ((src.disable) || (src.last_flash && world.time < src.last_flash + 150)) @@ -134,7 +135,7 @@ active = 1 icon_state = "launcheract" - for(var/obj/structure/machinery/flasher/M in machines) + for(var/obj/structure/machinery/flasher/M in GLOB.machines) if(M.id == src.id) INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/structure/machinery/flasher, flash)) diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm index 8eec83ed7b70..b90f8adbbb3f 100644 --- a/code/game/machinery/floodlight.dm +++ b/code/game/machinery/floodlight.dm @@ -1,137 +1,87 @@ -//these are probably broken - /obj/structure/machinery/floodlight - name = "Emergency Floodlight" + name = "emergency floodlight" + desc = "A powerful light usually stationed near landing zones to provide better visibility." icon = 'icons/obj/structures/machinery/floodlight.dmi' - icon_state = "flood00" + icon_state = "flood_0" density = TRUE anchored = TRUE - var/on = 0 - var/obj/item/cell/cell = null - var/use = 0 - var/unlocked = 0 - var/open = 0 - var/brightness_on = 7 //can't remember what the maxed out value is - unslashable = TRUE - unacidable = TRUE + light_power = 2 + wrenchable = TRUE + use_power = USE_POWER_IDLE + idle_power_usage = 0 + active_power_usage = 100 + + ///How far the light will go when the floodlight is on + var/on_light_range = 6 + ///Whether or not the floodlight can be toggled on or off + var/toggleable = TRUE + ///Whether or not the floodlight is turned on, disconnected from whether it has power or is lit + var/turned_on = FALSE + ///base state + var/base_icon_state = "flood" /obj/structure/machinery/floodlight/Initialize(mapload, ...) . = ..() - cell = new /obj/item/cell(src) - -/obj/structure/machinery/floodlight/Destroy() - QDEL_NULL(cell) - SetLuminosity(0) - return ..() - -/obj/structure/machinery/floodlight/proc/updateicon() - icon_state = "flood[open ? "o" : ""][open && cell ? "b" : ""]0[on]" -/* -/obj/structure/machinery/floodlight/process() - if(on && cell) - if(cell.charge >= use) - cell.use(use) - else - on = 0 - updateicon() - SetLuminosity(0) - src.visible_message(SPAN_WARNING("[src] shuts down due to lack of power!")) - return -*/ -/obj/structure/machinery/floodlight/attack_hand(mob/user as mob) - if(open && cell) - if(ishuman(user)) - if(!user.get_active_hand()) - user.put_in_hands(cell) - cell.forceMove(user.loc) - else - cell.forceMove(loc) - - cell.add_fingerprint(user) - cell.update_icon() - - src.cell = null - to_chat(user, "You remove the power cell.") - updateicon() + + turn_light(toggle_on = (operable() && turned_on)) + +/obj/structure/machinery/floodlight/turn_light(mob/user, toggle_on) + . = ..() + if(. == NO_LIGHT_STATE_CHANGE) return - if(on) - on = 0 - to_chat(user, SPAN_NOTICE(" You turn off the light.")) - SetLuminosity(0) - unslashable = TRUE - unacidable = TRUE + if(toggle_on) + set_light(on_light_range) else - if(!cell) - return - if(cell.charge <= 0) - return - on = 1 - to_chat(user, SPAN_NOTICE(" You turn on the light.")) - SetLuminosity(brightness_on) - unacidable = FALSE + set_light(0) - updateicon() + update_icon() +/obj/structure/machinery/floodlight/attack_hand(mob/living/user) + if(!toggleable) + to_chat(user, SPAN_NOTICE("[src] doesn't seem to have a switch to toggle the light.")) + return + + if(user.is_mob_incapacitated()) + return -/obj/structure/machinery/floodlight/attackby(obj/item/W as obj, mob/user as mob) - if(!ishuman(user)) + if(!is_valid_user(user)) + to_chat(user, SPAN_NOTICE("You don't have the dexterity to do this.")) return - if (HAS_TRAIT(W, TRAIT_TOOL_WRENCH)) - if (!anchored) - anchored = TRUE - to_chat(user, "You anchor the [src] in place.") - else - anchored = FALSE - to_chat(user, "You remove the bolts from the [src].") - - if (HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER)) - if (!open) - if(unlocked) - unlocked = 0 - to_chat(user, "You screw the battery panel in place.") - else - unlocked = 1 - to_chat(user, "You unscrew the battery panel.") - - if (HAS_TRAIT(W, TRAIT_TOOL_CROWBAR)) - if(unlocked) - if(open) - open = 0 - overlays = null - to_chat(user, "You crowbar the battery panel in place.") - else - if(unlocked) - open = 1 - to_chat(user, "You remove the battery panel.") - - if (istype(W, /obj/item/cell)) - if(open) - if(cell) - to_chat(user, "There is a power cell already installed.") - else - if(user.drop_inv_item_to_loc(W, src)) - cell = W - to_chat(user, "You insert the power cell.") - updateicon() + turned_on = !turned_on + + if(inoperable()) + to_chat(user, SPAN_NOTICE("You turn [turned_on ? "on" : "off"] the floodlight. It seems to be inoperable.")) + return + + to_chat(user, SPAN_NOTICE("You turn [turned_on ? "on" : "off"] the light.")) + turn_light(user, toggle_on = turned_on) + update_use_power(turned_on ? USE_POWER_ACTIVE : USE_POWER_IDLE) + +/obj/structure/machinery/floodlight/update_icon() + . = ..() + icon_state = "[base_icon_state]_[light_on]" + +/obj/structure/machinery/floodlight/power_change(area/master_area = null) + . = ..() + + turn_light(toggle_on = (!(stat & NOPOWER) && turned_on)) //Magical floodlight that cannot be destroyed or interacted with. /obj/structure/machinery/floodlight/landing - name = "Landing Light" - desc = "A powerful light stationed near landing zones to provide better visibility." - icon_state = "flood01" - on = 1 - in_use = 1 - luminosity = 6 + name = "landing light" + desc = "A powerful light usually stationed near landing zones to provide better visibility. This one seems to have been bolted down and is unable to be moved." + icon_state = "flood_1" use_power = USE_POWER_NONE - -/obj/structure/machinery/floodlight/landing/attack_hand() - return - -/obj/structure/machinery/floodlight/landing/attackby() - return + needs_power = FALSE + unslashable = TRUE + unacidable = TRUE + wrenchable = FALSE + toggleable = FALSE + turned_on = TRUE /obj/structure/machinery/floodlight/landing/floor - icon_state = "floor_flood01" + icon_state = "floor_flood_1" + base_icon_state = "floor_flood" density = FALSE diff --git a/code/game/machinery/fusion_engine.dm b/code/game/machinery/fusion_engine.dm index 4158727e3745..0e5f8142c2be 100644 --- a/code/game/machinery/fusion_engine.dm +++ b/code/game/machinery/fusion_engine.dm @@ -15,6 +15,7 @@ unacidable = TRUE //NOPE.jpg anchored = TRUE density = TRUE + power_machine = TRUE var/power_gen_percent = 0 //50,000W at full capacity var/buildstate = 0 //What state of building it are we on, 0-3, 1 is "broken", the default @@ -24,7 +25,8 @@ var/obj/item/fuelCell/fusion_cell = new //Starts with a fuel cell loaded in. Maybe replace with the plasma tanks in the future and have it consume plasma? Possibly remove this later if it's irrelevent... var/fuel_rate = 0 //Rate at which fuel is used. Based mostly on how long the generator has been running. - power_machine = TRUE + /// If the generator is overloaded. Only possible during hijack once fuel is at 100%. + var/overloaded = FALSE /obj/structure/machinery/power/fusion_engine/Initialize(mapload, ...) . = ..() @@ -35,11 +37,25 @@ /obj/structure/machinery/power/fusion_engine/Destroy() QDEL_NULL(fusion_cell) - . = ..() + return ..() +/obj/structure/machinery/power/fusion_engine/attack_alien(mob/living/carbon/xenomorph/xeno) + if(!overloaded) + to_chat(xeno, SPAN_WARNING("You see no reason to attack [src].")) + return XENO_NO_DELAY_ACTION + + xeno.animation_attack_on(src) + playsound(src, 'sound/effects/metalhit.ogg', 25, 1) + xeno.visible_message(SPAN_DANGER("[xeno] [xeno.slashes_verb] [src], stopping its overload process!"), \ + SPAN_DANGER("You [xeno.slash_verb] [src], stopping its overload process!"), null, 5, CHAT_TYPE_XENO_COMBAT) + set_overloading(FALSE) + return XENO_ATTACK_ACTION /obj/structure/machinery/power/fusion_engine/power_change() - return + . = ..() + if(overloaded) + set_overloading(FALSE) + visible_message("[icon2html(src, viewers(src))] [src]'s overload suddenly ceases as primary power is lost.") /obj/structure/machinery/power/fusion_engine/process() if(!is_on || buildstate || !anchored || !powernet || !fusion_cell) //Default logic checking @@ -60,9 +76,18 @@ stop_processing() return FALSE - if(!check_failure()) + if(overloaded && prob(1)) // up to 18 generators at 1% every 3.5 seconds means that every ~21 seconds or so, one generator will make noise assuming all are overloaded + switch(rand(1, 2)) + if(1) + visible_message("[icon2html(src, viewers(src))] [SPAN_NOTICE("[src] loudly hums.")]") + playsound(src, 'sound/machines/resource_node/node_idle.ogg', 60, TRUE) + if(2) + visible_message("[icon2html(src, viewers(src))] [SPAN_NOTICE("[src] makes a worrying hiss.")]") + playsound(src, 'sound/machines/hiss.ogg', 60, TRUE) - if(power_gen_percent < 100) power_gen_percent++ + if(!check_failure()) + if(power_gen_percent < 100) + power_gen_percent++ switch(power_gen_percent) //Flavor text! if(10) @@ -96,6 +121,10 @@ to_chat(user, SPAN_NOTICE("Use a wrench to repair it.")) return FALSE if(is_on) + if(overloaded) + to_chat(user, SPAN_WARNING("You can't shut off [src] while it's overloaded!")) + return + visible_message("[icon2html(src, viewers(src))] [SPAN_WARNING("[src] beeps softly and the humming stops as [usr] shuts off the generator.")]") is_on = 0 power_gen_percent = 0 @@ -127,13 +156,13 @@ /obj/structure/machinery/power/fusion_engine/attackby(obj/item/O, mob/user) if(istype(O, /obj/item/fuelCell)) if(is_on) - to_chat(user, SPAN_WARNING("The [src] needs to be turned off first.")) + to_chat(user, SPAN_WARNING("[src] needs to be turned off first.")) return TRUE if(!fusion_cell) if(user.drop_inv_item_to_loc(O, src)) fusion_cell = O update_icon() - to_chat(user, SPAN_NOTICE("You load the [src] with the [O].")) + to_chat(user, SPAN_NOTICE("You load [src] with [O].")) return TRUE else to_chat(user, SPAN_WARNING("You need to remove the fuel cell from [src] first.")) @@ -208,11 +237,18 @@ if(buildstate) to_chat(user, SPAN_WARNING("You must repair the generator before working with its fuel cell.")) return + + if(overloaded) + to_chat(user, SPAN_WARNING("You must restore the safeties on the generator before working with its fuel cell.")) + return + if(is_on) to_chat(user, SPAN_WARNING("You must turn off the generator before working with its fuel cell.")) return + if(!fusion_cell) to_chat(user, SPAN_WARNING("There is no cell to remove.")) + else if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) user.visible_message(SPAN_WARNING("[user] fumbles around figuring out [src]'s fuel receptacle."), @@ -232,23 +268,73 @@ fusion_cell = null update_icon() return TRUE + + else if(HAS_TRAIT(O, TRAIT_TOOL_MULTITOOL)) + if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) + to_chat(user, SPAN_WARNING("You have no idea what to do with [src].")) + return + + if(!overloaded) + if(!SShijack.sd_unlocked) + to_chat(user, SPAN_WARNING("You consider overloading [src]'s safeties, but you decide against it.")) + return + + if(inoperable()) + to_chat(user, SPAN_WARNING("[src] needs to be working and have external power in order to overload it!")) + return + + to_chat(user, SPAN_WARNING("You start overloading the safeties on [src]...")) + if(!do_after(user, 1.5 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + return + + if(inoperable()) + return + + to_chat(user, SPAN_WARNING("You finish overloading the safeties on [src].")) + set_overloading(TRUE) + log_game("[key_name(user)] has overloaded a generator.") + + else + to_chat(user, SPAN_WARNING("You start restoring the safeties on [src]...")) + if(!do_after(user, 1.5 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + return + + if(inoperable()) + return + + to_chat(user, SPAN_WARNING("You finish restoring the safeties on [src].")) + log_game("[key_name(user)] has restored the safeties of a generator.") + set_overloading(FALSE) + + return TRUE + else return ..() /obj/structure/machinery/power/fusion_engine/get_examine_text(mob/user) . = ..() - if(ishuman(user)) + if(isxeno(user)) + if(overloaded) + . += SPAN_INFO("You could attack this to stop the overload process.") + + else if(ishuman(user)) if(buildstate) . += SPAN_INFO("It's broken.") switch(buildstate) if(1) - . += SPAN_INFO("Use a blowtorch, then wirecutters, then wrench to repair it.") + . += SPAN_INFO("Use a blowtorch, then wirecutters, then wrench to repair it.") if(2) - . += SPAN_INFO("Use a wirecutters, then wrench to repair it.") + . += SPAN_INFO("Use a wirecutters, then wrench to repair it.") if(3) - . += SPAN_INFO("Use a wrench to repair it.") + . += SPAN_INFO("Use a wrench to repair it.") return FALSE + if(SShijack.sd_unlocked && skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) + if(!overloaded) + . += SPAN_INFO("You could overload this with a multitool.") + else + . += SPAN_INFO("You could restore its safeties with a multitool.") + if(!is_on) . += SPAN_INFO("It looks offline.") else @@ -270,22 +356,30 @@ else . += SPAN_INFO("There is no fuel cell in the receptacle.") +/obj/structure/machinery/power/fusion_engine/ex_act(severity) + if(overloaded && severity >= EXPLOSION_THRESHOLD_MLOW) + set_overloading(FALSE) + return + /obj/structure/machinery/power/fusion_engine/update_icon() switch(buildstate) if(0) if(fusion_cell) - var/pstatus = is_on ? "on" : "off" - switch(fusion_cell.get_fuel_percent()) - if(0 to 10) - icon_state = "[pstatus]-10" - if(10 to 25) - icon_state = "[pstatus]-25" - if(25 to 50) - icon_state = "[pstatus]-50" - if(50 to 75) - icon_state = "[pstatus]-75" - if(75 to INFINITY) - icon_state = "[pstatus]-100" + if(overloaded) + icon_state = "overloaded" + else + var/pstatus = is_on ? "on" : "off" + switch(fusion_cell.get_fuel_percent()) + if(0 to 10) + icon_state = "[pstatus]-10" + if(10 to 25) + icon_state = "[pstatus]-25" + if(25 to 50) + icon_state = "[pstatus]-50" + if(50 to 75) + icon_state = "[pstatus]-75" + if(75 to INFINITY) + icon_state = "[pstatus]-100" else icon_state = "off" @@ -317,9 +411,13 @@ else return 0 +/obj/structure/machinery/power/fusion_engine/proc/set_overloading(new_overloading) + if(overloaded == new_overloading) + return - - + overloaded = new_overloading + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_GENERATOR_SET_OVERLOADING, overloaded) + update_icon() diff --git a/code/game/machinery/groundmap_geothermal.dm b/code/game/machinery/groundmap_geothermal.dm index 6714e3ef669b..087facdbf5ee 100644 --- a/code/game/machinery/groundmap_geothermal.dm +++ b/code/game/machinery/groundmap_geothermal.dm @@ -198,6 +198,9 @@ else return ..() //Deal with everything else, like hitting with stuff +/obj/structure/machinery/power/geothermal/ex_act(severity, direction) + return FALSE //gameplay-wise these should really never go away + //Putting these here since it's power-related /obj/structure/machinery/colony_floodlight_switch name = "Colony Floodlight Switch" @@ -220,7 +223,7 @@ /obj/structure/machinery/colony_floodlight_switch/LateInitialize() . = ..() - for(var/obj/structure/machinery/colony_floodlight/F in machines) + for(var/obj/structure/machinery/colony_floodlight/F in GLOB.machines) floodlist += F F.fswitch = src start_processing() @@ -266,9 +269,9 @@ F.is_lit = !F.is_lit if(!F.damaged) if(F.is_lit) //Shut it down - F.SetLuminosity(F.lum_value) + F.set_light(F.lum_value) else - F.SetLuminosity(0) + F.set_light(0) F.update_icon() return 0 @@ -312,7 +315,6 @@ health = 150 /obj/structure/machinery/colony_floodlight/Destroy() - SetLuminosity(0) if(fswitch) fswitch.floodlist -= src fswitch = null @@ -359,7 +361,7 @@ user.visible_message(SPAN_NOTICE("[user] screws [src]'s maintenance hatch closed."), \ SPAN_NOTICE("You screw [src]'s maintenance hatch closed.")) if(is_lit) - SetLuminosity(lum_value) + set_light(lum_value) update_icon() return TRUE diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 1acb47370d96..fe8243704a72 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -45,171 +45,12 @@ * Holopad */ -/* -Revised. Original based on space ninja hologram code. Which is also mine. /N -How it works: -AI clicks on holopad in camera view. View centers on holopad. -AI clicks again on the holopad to display a hologram. Hologram stays as long as AI is looking at the pad and it (the hologram) is in range of the pad. -AI can use the directional keys to move the hologram around, provided the above conditions are met and the AI in question is the holopad's master. -Only one AI may project from a holopad at any given time. -AI may cancel the hologram at any time by clicking on the holopad once more. - -Possible to do for anyone motivated enough: - Give an AI variable for different hologram icons. - Itegrate EMP effect to disable the unit. -*/ - - -// HOLOPAD MODE -// 0 = RANGE BASED -// 1 = AREA BASED -var/const/HOLOPAD_MODE = 0 - /obj/structure/machinery/hologram/holopad name = "\improper AI holopad" desc = "It's a floor-mounted device for projecting holographic images. It is activated remotely." icon_state = "holopad0" layer = TURF_LAYER+0.1 //Preventing mice and drones from sneaking under them. - - var/mob/living/silicon/ai/master //Which AI, if any, is controlling the object? Only one AI may control a hologram at any time. - var/last_request = 0 //to prevent request spam. ~Carn - var/holo_range = 5 // Change to change how far the AI can move away from the holopad before deactivating. - -/obj/structure/machinery/hologram/holopad/Initialize() - . = ..() - flags_atom |= USES_HEARING - -/obj/structure/machinery/hologram/holopad/Destroy() - QDEL_NULL(master) - . = ..() - -/obj/structure/machinery/hologram/holopad/attack_hand(mob/living/carbon/human/user) //Carn: Hologram requests. - if(!istype(user)) - return - if(alert(user,"Would you like to request an AI's presence?",,"Yes","No") == "Yes") - if(last_request + 200 < world.time) //don't spam the AI with requests you jerk! - last_request = world.time - to_chat(user, SPAN_NOTICE("You request an AI's presence.")) - var/area/area = get_area(src) - for(var/mob/living/silicon/ai/AI in GLOB.alive_mob_list) - if(!AI.client) continue - to_chat(AI, SPAN_INFO("Your presence is requested at \the [area].")) - else - to_chat(user, SPAN_NOTICE("A request for AI presence was already sent recently.")) - -/obj/structure/machinery/hologram/holopad/attack_remote(mob/living/silicon/ai/user) - if (!istype(user)) - return - /*There are pretty much only three ways to interact here. - I don't need to check for client since they're clicking on an object. - This may change in the future but for now will suffice.*/ - if(user.eyeobj.loc != src.loc)//Set client eye on the object if it's not already. - user.eyeobj.setLoc(get_turf(src)) - else if(!hologram)//If there is no hologram, possibly make one. - activate_holo(user) - else if(master==user)//If there is a hologram, remove it. But only if the user is the master. Otherwise do nothing. - clear_holo() - return - -/obj/structure/machinery/hologram/holopad/proc/activate_holo(mob/living/silicon/ai/user) - if(!(stat & NOPOWER) && user.eyeobj.loc == src.loc)//If the projector has power and client eye is on it. - if(!hologram)//If there is not already a hologram. - create_holo(user)//Create one. - src.visible_message("A holographic image of [user] flicks to life right before your eyes!") - else - to_chat(user, SPAN_DANGER("ERROR: \black Image feed in progress.")) - else - to_chat(user, SPAN_DANGER("ERROR: \black Unable to project hologram.")) - return - -/*This is the proc for special two-way communication between AI and holopad/people talking near holopad. -For the other part of the code, check silicon say.dm. Particularly robot talk.*/ -/obj/structure/machinery/hologram/holopad/hear_talk(mob/living/M, text, verb) - if(M&&hologram&&master)//Master is mostly a safety in case lag hits or something. - if(!master.say_understands(M))//The AI will be able to understand most mobs talking through the holopad. - text = stars(text) - var/name_used = M.GetVoice() - //This communication is imperfect because the holopad "filters" voices and is only designed to connect to the master only. - var/rendered = "Holopad received, [name_used] [verb], \"[text]\"" - master.show_message(rendered, SHOW_MESSAGE_AUDIBLE) - return - -/obj/structure/machinery/hologram/holopad/proc/create_holo(mob/living/silicon/ai/A, turf/T = loc) - hologram = new(T)//Spawn a blank effect at the location. - hologram.icon = A.holo_icon - hologram.mouse_opacity = MOUSE_OPACITY_TRANSPARENT//So you can't click on it. - hologram.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them. - hologram.anchored = TRUE//So space wind cannot drag it. - hologram.name = "[A.name] (Hologram)"//If someone decides to right click. - hologram.SetLuminosity(2) //hologram lighting - SetLuminosity(2) //pad lighting - icon_state = "holopad1" - A.holo = src - master = A//AI is the master. - use_power = USE_POWER_ACTIVE//Active power usage. - return 1 - -/obj/structure/machinery/hologram/holopad/clear_holo() -// hologram.SetLuminosity(0)//Clear lighting. //handled by the lighting controller when its ower is deleted - if(hologram) - qdel(hologram)//Get rid of hologram. - hologram = null - if(master.holo == src) - master.holo = null - master = null//Null the master, since no-one is using it now. - SetLuminosity(0) //pad lighting (hologram lighting will be handled automatically since its owner was deleted) - icon_state = "holopad0" - use_power = USE_POWER_IDLE//Passive power usage. - return 1 - -/obj/structure/machinery/hologram/holopad/process() - if(hologram)//If there is a hologram. - if(master && !master.stat && master.client && master.eyeobj)//If there is an AI attached, it's not incapacitated, it has a client, and the client eye is centered on the projector. - if(!(stat & NOPOWER))//If the machine has power. - if((HOLOPAD_MODE == 0 && (get_dist(master.eyeobj, src) <= holo_range))) - return 1 - - else if (HOLOPAD_MODE == 1) - - var/area/holo_area = get_area(src) - var/area/eye_area = get_area(master.eyeobj) - - if(eye_area in holo_area.master.related) - return 1 - - clear_holo()//If not, we want to get rid of the hologram. - return 1 - -/obj/structure/machinery/hologram/holopad/proc/move_hologram() - if(hologram) - step_to(hologram, master.eyeobj) // So it turns. - hologram.forceMove(get_turf(master.eyeobj)) - - return 1 - - -/* -Holographic project of everything else. - -/mob/verb/hologram_test() - set name = "Hologram Debug New" - set category = "CURRENT DEBUG" - - var/obj/effect/overlay/hologram = new(loc)//Spawn a blank effect at the location. - var/icon/flat_icon = icon(getFlatIcon(src,0))//Need to make sure it's a new icon so the old one is not reused. - flat_icon.ColorTone(rgb(125,180,225))//Let's make it bluish. - flat_icon.ChangeOpacity(0.5)//Make it half transparent. - var/input = input("Select what icon state to use in effect.",,"") - if(input) - var/icon/alpha_mask = new('icons/effects/effects.dmi', "[input]") - flat_icon.AddAlphaMask(alpha_mask)//Finally, let's mix in a distortion effect. - hologram.icon = flat_icon - - to_world("Your icon should appear now.") - return -*/ - /* * Other Stuff: Is this even used? */ diff --git a/code/game/machinery/holosign.dm b/code/game/machinery/holosign.dm index 2d4182772cf3..41c63d465918 100644 --- a/code/game/machinery/holosign.dm +++ b/code/game/machinery/holosign.dm @@ -63,7 +63,7 @@ else icon_state = "light0" - for(var/obj/structure/machinery/holosign/M in machines) + for(var/obj/structure/machinery/holosign/M in GLOB.machines) if (M.id == src.id) INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/structure/machinery/holosign, toggle)) diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 5564ed0220a7..6109833004d6 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -60,10 +60,10 @@ if ( !(stat & NOPOWER) && disable == 0 ) icon_state = "[base_state]" -// src.sd_SetLuminosity(2) +// src.sd_set_light(2) else icon_state = "[base_state]-p" -// src.sd_SetLuminosity(0) +// src.sd_set_light(0) /obj/structure/machinery/sparker/attackby(obj/item/W as obj, mob/user as mob) if (HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER)) @@ -105,11 +105,10 @@ return 1 /obj/structure/machinery/sparker/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return ignite() - ..(severity) /obj/structure/machinery/ignition_switch/attack_remote(mob/user as mob) return attack_hand(user) @@ -125,11 +124,11 @@ active = 1 icon_state = "launcheract" - for(var/obj/structure/machinery/sparker/M in machines) + for(var/obj/structure/machinery/sparker/M in GLOB.machines) if (M.id == src.id) INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/structure/machinery/sparker, ignite)) - for(var/obj/structure/machinery/igniter/M in machines) + for(var/obj/structure/machinery/igniter/M in GLOB.machines) if(M.id == src.id) use_power(50) M.on = !( M.on ) diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index e1c9c9a4e279..e16d2cacf63b 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -4,13 +4,18 @@ anchored = FALSE density = FALSE drag_delay = 1 + base_pixel_x = 15 + base_pixel_y = -2 var/mob/living/carbon/attached = null var/mode = 1 // 1 is injecting, 0 is taking blood. var/obj/item/reagent_container/beaker = null + var/datum/beam/current_beam + //make it so that IV doesn't require power to function. + use_power = USE_POWER_NONE /obj/structure/machinery/iv_drip/update_icon() - if(src.attached) + if(attached) icon_state = "hooked" else icon_state = "" @@ -35,52 +40,71 @@ filling.color = mix_color_from_reagents(reagents.reagent_list) overlays += filling +/obj/structure/machinery/iv_drip/proc/update_beam() + if(current_beam && !attached) + QDEL_NULL(current_beam) + else if(!current_beam && attached && !QDELETED(src)) + current_beam = beam(attached, "iv_tube") + +/obj/structure/machinery/iv_drip/Destroy() + attached?.active_transfusions -= src + attached = null + update_beam() + . = ..() + /obj/structure/machinery/iv_drip/MouseDrop(over_object, src_location, over_location) ..() if(ishuman(usr)) - var/mob/living/carbon/human/H = usr - if(H.stat || get_dist(H, src) > 1 || H.blinded || H.lying) + var/mob/living/carbon/human/user = usr + if(user.is_mob_incapacitated() || get_dist(user, src) > 1 || user.blinded) + return + + if(!skillcheck(user, SKILL_SURGERY, SKILL_SURGERY_NOVICE)) + to_chat(user, SPAN_WARNING("You don't know how to [attached ? "disconnect" : "connect"] this!")) return if(attached) - H.visible_message("[H] detaches \the [src] from \the [attached].", \ + user.visible_message("[user] detaches \the [src] from \the [attached].", \ "You detach \the [src] from \the [attached].") attached.active_transfusions -= src attached = null + update_beam() update_icon() stop_processing() return if(in_range(src, usr) && iscarbon(over_object) && get_dist(over_object, src) <= 1) - H.visible_message("[H] attaches \the [src] to \the [over_object].", \ + user.visible_message("[user] attaches \the [src] to \the [over_object].", \ "You attach \the [src] to \the [over_object].") attached = over_object attached.active_transfusions += src + update_beam() update_icon() start_processing() - -/obj/structure/machinery/iv_drip/attackby(obj/item/W, mob/living/user) - if (istype(W, /obj/item/reagent_container)) +/obj/structure/machinery/iv_drip/attackby(obj/item/container, mob/living/user) + if (istype(container, /obj/item/reagent_container)) if(beaker) to_chat(user, SPAN_WARNING("There is already a reagent container loaded!")) return - if((!istype(W, /obj/item/reagent_container/blood) && !istype(W, /obj/item/reagent_container/glass)) || istype(W, /obj/item/reagent_container/glass/bucket)) + if((!istype(container, /obj/item/reagent_container/blood) && !istype(container, /obj/item/reagent_container/glass)) || istype(container, /obj/item/reagent_container/glass/bucket)) to_chat(user, SPAN_WARNING("That won't fit!")) return - if(user.drop_inv_item_to_loc(W, src)) - beaker = W + if(user.drop_inv_item_to_loc(container, src)) + beaker = container var/reagentnames = "" - for(var/datum/reagent/R in beaker.reagents.reagent_list) - reagentnames += ";[R.name]" - log_admin("[key_name(user)] put a [beaker] into [src], containing [reagentnames] at ([src.loc.x],[src.loc.y],[src.loc.z]).") + for(var/datum/reagent/chem in beaker.reagents.reagent_list) + reagentnames += ";[chem.name]" + + log_admin("[key_name(user)] put \a [beaker] into [src], containing [reagentnames] at ([src.loc.x],[src.loc.y],[src.loc.z]).") - to_chat(user, "You attach \the [W] to \the [src].") + to_chat(user, "You attach \the [container] to \the [src].") + update_beam() update_icon() return else @@ -97,6 +121,7 @@ attached.emote("scream") attached.active_transfusions -= src attached = null + update_beam() update_icon() stop_processing() return @@ -121,20 +146,20 @@ if(prob(5)) visible_message("\The [src] pings.") return - var/mob/living/carbon/T = attached + var/mob/living/carbon/patient = attached - if(!istype(T)) + if(!istype(patient)) return - if(ishuman(T)) - var/mob/living/carbon/human/H = T - if(H.species && H.species.flags & NO_BLOOD) + if(ishuman(patient)) + var/mob/living/carbon/human/human_patient = patient + if(human_patient.species && human_patient.species.flags & NO_BLOOD) return // If the human is losing too much blood, beep. - if(T.blood_volume < BLOOD_VOLUME_SAFE) if(prob(5)) + if(patient.blood_volume < BLOOD_VOLUME_SAFE) if(prob(5)) visible_message("\The [src] beeps loudly.") - T.take_blood(beaker,amount) + patient.take_blood(beaker,amount) update_icon() /obj/structure/machinery/iv_drip/attack_hand(mob/user as mob) @@ -154,7 +179,7 @@ if(!istype(usr, /mob/living)) return - if(usr.stat || usr.lying) + if(usr.stat || usr.is_mob_incapacitated()) return mode = !mode diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index 08a3d5c4dfee..3fa96ca0bc3a 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -27,7 +27,7 @@ /obj/structure/machinery/gibber/autogibber/New() ..() spawn(5) - for(var/i in cardinal) + for(var/i in GLOB.cardinals) var/obj/structure/machinery/mineral/input/input_obj = locate( /obj/structure/machinery/mineral/input, get_step(loc, i) ) if(input_obj) if(isturf(input_obj.loc)) diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm index f4611b9042db..220772e98b17 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/game/machinery/kitchen/microwave.dm @@ -139,7 +139,6 @@ if (!(R.id in acceptable_reagents)) to_chat(user, SPAN_DANGER("Your [O] contains components unsuitable for cookery.")) return 1 - //G.reagents.trans_to(src,G.amount_per_transfer_from_this) else if(istype(O,/obj/item/grab)) return 1 else @@ -152,74 +151,78 @@ /obj/structure/machinery/microwave/attack_hand(mob/user as mob) user.set_interaction(src) - interact(user) + tgui_interact(user) + +/obj/structure/machinery/microwave/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if (!ui) + ui = new(user, src, "Microwave", "Microwave Controls") + ui.open() //******************* //* Microwave Menu //********************/ - -/obj/structure/machinery/microwave/interact(mob/user as mob) // The microwave Menu - var/dat = "" - if(src.broken > 0) - dat = {"Bzzzzttttt"} - else if(src.operating) - dat = {"Microwaving in progress!
      Please wait...!
      "} - else if(src.dirty==100) - dat = {"This microwave is dirty!
      Please clean it before use!
      "} - else - var/list/items_counts = new - var/list/items_measures = new - var/list/items_measures_p = new - for (var/obj/O in contents) - var/display_name = O.name - if (istype(O,/obj/item/reagent_container/food/snacks/egg)) - items_measures[display_name] = "egg" - items_measures_p[display_name] = "eggs" - if (istype(O,/obj/item/reagent_container/food/snacks/tofu)) - items_measures[display_name] = "tofu chunk" - items_measures_p[display_name] = "tofu chunks" - if (istype(O,/obj/item/reagent_container/food/snacks/meat)) //any meat - items_measures[display_name] = "slab of meat" - items_measures_p[display_name] = "slabs of meat" - if (istype(O,/obj/item/reagent_container/food/snacks/donkpocket)) - display_name = "Turnovers" - items_measures[display_name] = "turnover" - items_measures_p[display_name] = "turnovers" - if (istype(O,/obj/item/reagent_container/food/snacks/carpmeat)) - items_measures[display_name] = "fillet of meat" - items_measures_p[display_name] = "fillets of meat" - items_counts[display_name]++ - for (var/O in items_counts) - var/N = items_counts[O] - if (!(O in items_measures)) - dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
      "} - else - if (N==1) - dat += {"[capitalize(O)]: [N] [items_measures[O]]
      "} - else - dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
      "} - - for (var/datum/reagent/R in reagents.reagent_list) - var/display_name = R.name - if (R.id == "hotsauce") - display_name = "Hotsauce" - if (R.id == "frostoil") - display_name = "Coldsauce" - dat += {"[display_name]: [R.volume] unit\s
      "} - - if (items_counts.len==0 && reagents.reagent_list.len==0) - dat = {"The microwave is empty
      "} +/obj/structure/machinery/microwave/ui_data(mob/user) + var/list/data = list() + + data["operating"] = operating + data["broken"] = (broken > 0) + data["dirty"] = (dirty == 100) + + var/list/ingredients = list() + var/list/items_counts = list() + var/list/items_measures = list() + var/list/items_measures_p = list() + + for (var/obj/contents_item as anything in contents) + var/display_name = contents_item.name + + if (istype(contents_item, /obj/item/reagent_container/food/snacks/tofu)) + items_measures[display_name] = "tofu chunk" + items_measures_p[display_name] = "tofu chunks" + if (istype(contents_item, /obj/item/reagent_container/food/snacks/meat)) //any meat + items_measures[display_name] = "slab of meat" + items_measures_p[display_name] = "slabs of meat" + if (istype(contents_item, /obj/item/reagent_container/food/snacks/donkpocket)) + display_name = "Turnovers" + items_measures[display_name] = "turnover" + items_measures_p[display_name] = "turnovers" + if (istype(contents_item, /obj/item/reagent_container/food/snacks/carpmeat)) + items_measures[display_name] = "fillet of meat" + items_measures_p[display_name] = "fillets of meat" + items_counts[display_name]++ + + for (var/contents_item in items_counts) + var/list/item = list() + + item["name"] = capitalize(contents_item) + item["count"] = items_counts[contents_item] + + if (!(contents_item in items_measures)) + item["measure"] = "[lowertext(contents_item)][items_counts[contents_item] > 1 ? "s" : ""]" // Adds 's' for plurals. + else if (items_counts[contents_item] == 1) + item["measure"] = items_measures[contents_item] else - dat = {"Ingredients:
      [dat]"} - dat += {"

      \ -Turn on!
      \ -
      Eject ingredients!
      \ -"} + item["measure"] = items_measures_p[contents_item] + + ingredients += list(item) + + for (var/datum/reagent/contents_reagent as anything in reagents.reagent_list) + var/list/reagent = list() - show_browser(user, dat, "Microwave Controls", "microwave") - return + reagent["count"] = contents_reagent.volume + reagent["measure"] = contents_reagent.volume > 1 ? "units" : "unit" + reagent["name"] = contents_reagent.name + if (contents_reagent.id == "hotsauce") + reagent["name"] = "Hotsauce" + if (contents_reagent.id == "frostoil") + reagent["name"] = "Coldsauce" + ingredients += list(reagent) + + data["ingredients"] = ingredients + return data //*********************************** //* Microwave Menu Handling/Cooking @@ -322,7 +325,7 @@ if (src.reagents.total_volume) src.dirty++ src.reagents.clear_reagents() - to_chat(usr, SPAN_NOTICE(" You dispose of the microwave contents.")) + to_chat(usr, SPAN_NOTICE("You dispose of the microwave contents.")) src.updateUsrDialog() /obj/structure/machinery/microwave/proc/muck_start() @@ -365,19 +368,16 @@ ffuu.reagents.add_reagent("toxin", amount/10) return ffuu -/obj/structure/machinery/microwave/Topic(href, href_list) - if(..()) - return - - usr.set_interaction(src) - if(src.operating) - src.updateUsrDialog() +/obj/structure/machinery/microwave/ui_act(action, params) + . = ..() + if(.) return - switch(href_list["action"]) + switch (action) if ("cook") cook(usr.get_skill_duration_multiplier(SKILL_DOMESTIC)) // picking the right microwave setting for the right food. when's the last time you used the special setting on the microwave? i bet you just slam the 30 second increment. Do you know how much programming went into putting the Pizza setting into a microwave emitter? - if ("dispose") + if ("eject_all") dispose() - return + + return TRUE diff --git a/code/game/machinery/kitchen/processor.dm b/code/game/machinery/kitchen/processor.dm index 0c4b8a973e83..a18f5db8af43 100644 --- a/code/game/machinery/kitchen/processor.dm +++ b/code/game/machinery/kitchen/processor.dm @@ -89,7 +89,7 @@ to_chat(user, SPAN_DANGER("That probably won't blend.")) return 1 user.visible_message("[user] put [what] into [src].", \ - "You put the [what] into [src].") + "You put [what] into [src].") user.drop_held_item() what.forceMove(src) @@ -118,4 +118,3 @@ src.processing = 0 src.visible_message(SPAN_NOTICE("\the [src] finished processing."), \ "You hear the food processor stopping/") - diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index ecf63a2a7902..6d3e18933457 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -23,7 +23,7 @@ var/icon_on = "smartfridge" var/icon_off = "smartfridge-off" var/icon_panel = "smartfridge-panel" - var/item_quants = list() + var/list/item_quants = list() //! Assoc list of names -> list(items) var/ispowered = TRUE //starts powered var/is_secure_fridge = FALSE var/shoot_inventory = FALSE @@ -40,6 +40,24 @@ GLOB.vending_products[/obj/item/reagent_container/glass/bottle] = 1 GLOB.vending_products[/obj/item/storage/pill_bottle] = 1 +/obj/structure/machinery/smartfridge/Destroy(force) + if(is_in_network()) // Delete all contents from networked storage index + for(var/atom/movable/item as anything in contents) + delete_contents(item) + item_quants.Cut() + return ..() // parent will delete contents if we're not networked + +/// Deletes given object in contents of the smartfridge +/obj/structure/machinery/smartfridge/proc/delete_contents(obj/item/item) + if(item.loc != src) + return + contents -= item + if(item_quants[item.name]) + item_quants[item.name] -= item + if(is_in_network() && GLOB.chemical_data.shared_item_storage[item.name]) + GLOB.chemical_data.shared_item_storage[item.name] -= item + qdel(item) + /obj/structure/machinery/smartfridge/proc/accept_check(obj/item/O as obj) if(istype(O,/obj/item/reagent_container/food/snacks/grown/) || istype(O,/obj/item/seeds/)) return 1 @@ -76,7 +94,7 @@ overlays.Cut() if(panel_open) overlays += image(icon, icon_panel) - nanomanager.update_uis(src) + SSnano.nanomanager.update_uis(src) return if(HAS_TRAIT(O, TRAIT_TOOL_MULTITOOL)||HAS_TRAIT(O, TRAIT_TOOL_WIRECUTTERS)) @@ -139,7 +157,7 @@ /obj/structure/machinery/smartfridge/proc/add_network_item(obj/item/O) if(is_in_network()) - add_item(chemical_data.shared_item_storage, O) + add_item(GLOB.chemical_data.shared_item_storage, O) return TRUE return FALSE @@ -214,9 +232,9 @@ var/list/networked_items = list() if(is_in_network()) - for (var/i=1 to length(chemical_data.shared_item_storage)) - var/item_index = chemical_data.shared_item_storage[i] - var/list/item_list = chemical_data.shared_item_storage[item_index] + for (var/i=1 to length(GLOB.chemical_data.shared_item_storage)) + var/item_index = GLOB.chemical_data.shared_item_storage[i] + var/list/item_list = GLOB.chemical_data.shared_item_storage[item_index] var/count = length(item_list) if(count < 1) continue @@ -277,7 +295,7 @@ var/list/target_list = item_quants if(params["isLocal"] == 0) - target_list = chemical_data.shared_item_storage + target_list = GLOB.chemical_data.shared_item_storage var/item_index = target_list[index] var/list/item_list = target_list[item_index] @@ -310,9 +328,9 @@ var/amount=params["amount"] var/source = item_quants - var/target = chemical_data.shared_item_storage + var/target = GLOB.chemical_data.shared_item_storage if(params["isLocal"] == 0) - source = chemical_data.shared_item_storage + source = GLOB.chemical_data.shared_item_storage target = item_quants var/item_index = source[index] @@ -520,7 +538,7 @@ return 0 /obj/structure/machinery/smartfridge/chemistry/antag - req_one_access = list(ACCESS_ILLEGAL_PIRATE) + req_one_access = list(ACCESS_ILLEGAL_PIRATE, ACCESS_UPP_GENERAL, ACCESS_CLF_GENERAL) /obj/structure/machinery/smartfridge/chemistry/virology name = "\improper Smart Virus Storage" diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index ae57f27f2162..de61830c2501 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -10,7 +10,6 @@ var/on = 1 var/area/area = null var/otherarea = null - // luminosity = 1 /obj/structure/machinery/light_switch/Initialize() . = ..() @@ -43,15 +42,14 @@ /obj/structure/machinery/light_switch/attack_hand(mob/user) on = !on - for(var/area/A in area.master.related) - A.lightswitch = on - A.updateicon() + area.lightswitch = on + area.updateicon() - for(var/obj/structure/machinery/light_switch/L in A) - L.on = on - L.updateicon() + for(var/obj/structure/machinery/light_switch/L in area) + L.on = on + L.updateicon() - area.master.power_change() + area.power_change() /obj/structure/machinery/light_switch/power_change() @@ -64,8 +62,7 @@ updateicon() /obj/structure/machinery/light_switch/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return power_change() - ..(severity) diff --git a/code/game/machinery/line_nexter.dm b/code/game/machinery/line_nexter.dm index d736df44664a..ae1896ad8138 100644 --- a/code/game/machinery/line_nexter.dm +++ b/code/game/machinery/line_nexter.dm @@ -62,7 +62,7 @@ icon_state = "doorctrl1" add_fingerprint(user) - for(var/obj/structure/machinery/line_nexter/L in machines) + for(var/obj/structure/machinery/line_nexter/L in GLOB.machines) if(id == L.id) L.next() diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index f4ad7a63ba77..88055a89f82b 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -105,7 +105,7 @@ Class Procs: var/list/component_parts //list of all the parts used to build it, if made from certain kinds of frames. var/manual = 0 layer = OBJ_LAYER - var/machine_processing = 0 // whether the machine is busy and requires process() calls in scheduler. + var/machine_processing = 0 // whether the machine is busy and requires process() calls in scheduler. // Please replace this by DF_ISPROCESSING in another refactor --fira throwpass = 1 projectile_coverage = PROJECTILE_COVERAGE_MEDIUM var/power_machine = FALSE //Whether the machine should process on power, or normal processor @@ -128,15 +128,15 @@ Class Procs: /obj/structure/machinery/Initialize(mapload, ...) . = ..() - machines += src + GLOB.machines += src var/area/A = get_area(src) if(A) A.add_machine(src) //takes care of adding machine's power usage /obj/structure/machinery/Destroy() - machines -= src - processing_machines -= src - power_machines -= src + GLOB.machines -= src + GLOB.processing_machines -= src + GLOB.power_machines -= src var/area/A = get_area(src) if(A) A.remove_machine(src) //takes care of removing machine from power usage @@ -151,15 +151,15 @@ Class Procs: if(!machine_processing) machine_processing = 1 if(power_machine) - addToListNoDupe(power_machines, src) + addToListNoDupe(GLOB.power_machines, src) else - addToListNoDupe(processing_machines, src) + addToListNoDupe(GLOB.processing_machines, src) /obj/structure/machinery/proc/stop_processing() if(machine_processing) machine_processing = 0 - processing_machines -= src - power_machines -= src + GLOB.processing_machines -= src + GLOB.power_machines -= src /obj/structure/machinery/process()//If you dont use process or power why are you here return PROCESS_KILL @@ -175,10 +175,10 @@ Class Procs: . += SPAN_WARNING("[msg]") /obj/structure/machinery/emp_act(severity) + . = ..() if(use_power && stat == 0) use_power(7500/severity) new /obj/effect/overlay/temp/emp_sparks (loc) - ..() /obj/structure/machinery/ex_act(severity) @@ -229,7 +229,11 @@ Class Procs: return TRUE if(inoperable()) return 1 - if(usr.is_mob_restrained() || usr.lying || usr.stat) + if(isliving(usr)) + var/mob/living/living = usr + if(living.body_position == LYING_DOWN) // legacy. if you too find it doesn't make sense, consider removing it + return TRUE + if(usr.is_mob_restrained()) return 1 if(!is_valid_user(usr)) to_chat(usr, SPAN_DANGER("You don't have the dexterity to do this!")) @@ -243,18 +247,12 @@ Class Procs: return (user.IsAdvancedToolUser(user) || isRemoteControlling(user)) /obj/structure/machinery/attack_remote(mob/user as mob) - if(isrobot(user)) - // For some reason attack_robot doesn't work - // This is to stop robots from using cameras to remotely control machines. - if(user.client && user.client.eye == user) - return src.attack_hand(user) - else - return src.attack_hand(user) + return src.attack_hand(user) -/obj/structure/machinery/attack_hand(mob/user as mob) +/obj/structure/machinery/attack_hand(mob/living/user as mob) if(inoperable(MAINT)) return TRUE - if(user.lying || user.stat) + if(user.is_mob_incapacitated()) return TRUE if(!is_valid_user(user)) to_chat(usr, SPAN_DANGER("You don't have the dexterity to do this!")) @@ -323,3 +321,33 @@ Class Procs: /obj/structure/machinery/ui_state(mob/user) return GLOB.not_incapacitated_and_adjacent_state + +//made into "prop" from an old destilery project abandon 9 year ago. + +/obj/structure/machinery/mill + name = "\improper Mill" + desc = "It is a machine that grinds produce." + icon_state = "autolathe" + density = TRUE + anchored = TRUE + +/obj/structure/machinery/fermenter + name = "\improper Fermenter" + desc = "It is a machine that ferments produce into alcoholic drinks." + icon_state = "autolathe" + density = TRUE + anchored = TRUE + +/obj/structure/machinery/still + name = "\improper Still" + desc = "It is a machine that produces hard liquor from alcoholic drinks." + icon_state = "autolathe" + density = TRUE + anchored = TRUE + +/obj/structure/machinery/squeezer + name = "\improper Squeezer" + desc = "It is a machine that squeezes extracts from produce." + icon_state = "autolathe" + density = TRUE + anchored = TRUE diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm deleted file mode 100644 index 591cec1f5baa..000000000000 --- a/code/game/machinery/magnet.dm +++ /dev/null @@ -1,421 +0,0 @@ -// Magnetic attractor, creates variable magnetic fields and attraction. -// Can also be used to emit electron/proton beams to create a center of magnetism on another tile - -// tl;dr: it's magnets lol -// This was created for firing ranges, but I suppose this could have other applications - Doohl - -/obj/structure/machinery/magnetic_module - - icon = 'icons/obj/objects.dmi' - icon_state = "floor_magnet-f" - name = "Electromagnetic Generator" - desc = "A device that uses station power to create points of magnetic energy." - level = 1 // underfloor - layer = UNDERFLOOR_OBJ_LAYER - anchored = TRUE - use_power = USE_POWER_IDLE - idle_power_usage = 50 - - var/freq = 1449 // radio frequency - var/electricity_level = 1 // intensity of the magnetic pull - var/magnetic_field = 1 // the range of magnetic attraction - var/code = 0 // frequency code, they should be different unless you have a group of magnets working together or something - var/turf/center // the center of magnetic attraction - var/on = 0 - var/pulling = 0 - - // x, y modifiers to the center turf; (0, 0) is centered on the magnet, whereas (1, -1) is one tile right, one tile down - var/center_x = 0 - var/center_y = 0 - var/max_dist = 20 // absolute value of center_x,y cannot exceed this integer - -/obj/structure/machinery/magnetic_module/Initialize(mapload, ...) - . = ..() - - var/turf/T = loc - hide(T.intact_tile) - center = T - - SSradio.add_object(src, freq, RADIO_MAGNETS) - - INVOKE_ASYNC(src, PROC_REF(magnetic_process)) - -/obj/structure/machinery/magnetic_module/Destroy() - center = null - SSradio.remove_object(src, freq) - . = ..() - - - // update the invisibility and icon -/obj/structure/machinery/magnetic_module/hide(intact) - invisibility = intact ? 101 : 0 - updateicon() - - // update the icon_state -/obj/structure/machinery/magnetic_module/proc/updateicon() - var/state="floor_magnet" - var/onstate="" - if(!on) - onstate="0" - - if(invisibility) - icon_state = "[state][onstate]-f" // if invisible, set icon to faded version - // in case of being revealed by T-scanner - else - icon_state = "[state][onstate]" - -/obj/structure/machinery/magnetic_module/receive_signal(datum/signal/signal) - - var/command = signal.data["command"] - var/modifier = signal.data["modifier"] - var/signal_code = signal.data["code"] - if(command && (signal_code == code)) - - Cmd(command, modifier) - - - -/obj/structure/machinery/magnetic_module/proc/Cmd(command, modifier) - - if(command) - switch(command) - if("set-electriclevel") - if(modifier) electricity_level = modifier - if("set-magneticfield") - if(modifier) magnetic_field = modifier - - if("add-elec") - electricity_level++ - if(electricity_level > 12) - electricity_level = 12 - if("sub-elec") - electricity_level-- - if(electricity_level <= 0) - electricity_level = 1 - if("add-mag") - magnetic_field++ - if(magnetic_field > 4) - magnetic_field = 4 - if("sub-mag") - magnetic_field-- - if(magnetic_field <= 0) - magnetic_field = 1 - - if("set-x") - if(modifier) center_x = modifier - if("set-y") - if(modifier) center_y = modifier - - if("N") // NORTH - center_y++ - if("S") // SOUTH - center_y-- - if("E") // EAST - center_x++ - if("W") // WEST - center_x-- - if("C") // CENTER - center_x = 0 - center_y = 0 - if("R") // RANDOM - center_x = rand(-max_dist, max_dist) - center_y = rand(-max_dist, max_dist) - - if("set-code") - if(modifier) code = modifier - if("toggle-power") - on = !on - - if(on) - INVOKE_ASYNC(src, PROC_REF(magnetic_process)) - - -/obj/structure/machinery/magnetic_module/process() - if(stat & NOPOWER) - on = 0 - - // Sanity checks: - if(electricity_level <= 0) - electricity_level = 1 - if(magnetic_field <= 0) - magnetic_field = 1 - - - // Limitations: - if(abs(center_x) > max_dist) - center_x = max_dist - if(abs(center_y) > max_dist) - center_y = max_dist - if(magnetic_field > 4) - magnetic_field = 4 - if(electricity_level > 12) - electricity_level = 12 - - // Update power usage: - if(on) - use_power = USE_POWER_ACTIVE - active_power_usage = electricity_level*15 - else - use_power = USE_POWER_NONE - - - // Overload conditions: - /* // Eeeehhh kinda stupid - if(on) - if(electricity_level > 11) - if(prob(electricity_level)) - explosion(loc, 0, 1, 2, 3) // ooo dat shit EXPLODES son - spawn(2) - qdel(src) - */ - - updateicon() - - -/obj/structure/machinery/magnetic_module/proc/magnetic_process() // proc that actually does the pulling - if(pulling) return - while(on) - - pulling = 1 - center = locate(x+center_x, y+center_y, z) - if(center) - for(var/obj/M in orange(magnetic_field, center)) - if(!M.anchored && (M.flags_atom & CONDUCT)) - step_towards(M, center) - - for(var/mob/living/silicon/S in orange(magnetic_field, center)) - if(isAI(S)) continue - step_towards(S, center) - - use_power(electricity_level * 5) - sleep(13 - electricity_level) - - pulling = 0 - -/obj/structure/machinery/magnetic_controller - name = "Magnetic Control Console" - icon = 'icons/obj/structures/machinery/airlock_machines.dmi' // uses an airlock machine icon, THINK GREEN HELP THE ENVIRONMENT - RECYCLING! - icon_state = "airlock_control_standby" - density = TRUE - anchored = TRUE - use_power = USE_POWER_IDLE - idle_power_usage = 45 - var/frequency = 1449 - var/code = 0 - var/list/magnets = list() - var/title = "Magnetic Control Console" - var/autolink = 0 // if set to 1, can't probe for other magnets! - - var/pathpos = 1 // position in the path - var/path = "NULL" // text path of the magnet - var/speed = 1 // lowest = 1, highest = 10 - var/list/rpath = list() // real path of the magnet, used in iterator - - var/moving = 0 // 1 if scheduled to loop - var/looping = 0 // 1 if looping - - var/datum/radio_frequency/radio_connection - -/obj/structure/machinery/magnetic_controller/Initialize(mapload, ...) - . = ..() - if(autolink) - for(var/obj/structure/machinery/magnetic_module/M in machines) - if(M.freq == frequency && M.code == code) - magnets.Add(M) - - SSradio.add_object(src, frequency, RADIO_MAGNETS) - - if(path) // check for default path - filter_path() // renders rpath - -/obj/structure/machinery/magnetic_controller/Destroy() - QDEL_NULL_LIST(magnets) - SSradio.remove_object(src, frequency) - . = ..() - - -/obj/structure/machinery/magnetic_controller/process() - if(magnets.len == 0 && autolink) - for(var/obj/structure/machinery/magnetic_module/M in machines) - if(M.freq == frequency && M.code == code) - magnets.Add(M) - -/obj/structure/machinery/magnetic_controller/attack_remote(mob/user as mob) - return src.attack_hand(user) - -/obj/structure/machinery/magnetic_controller/attack_hand(mob/user as mob) - if(inoperable()) - return - user.set_interaction(src) - var/dat = "Magnetic Control Console

      " - if(!autolink) - dat += {" - Frequency:
      [frequency]
      - Code: [code]
      - Probe Generators
      - "} - - if(magnets.len >= 1) - - dat += "Magnets confirmed:
      " - var/i = 0 - for(var/obj/structure/machinery/magnetic_module/M in magnets) - i++ - dat += "     < \[[i]\] ([M.on ? "On":"Off"])|Electricity level: - [M.electricity_level] +; Magnetic field: - [M.magnetic_field] +
      " - - dat += "
      Speed: - [speed] +
      " - dat += "Path: {[path]}
      " - dat += "Moving: [moving ? "Enabled":"Disabled"]" - - - show_browser(user, dat, name, "magnet", "size=400x500") - -/obj/structure/machinery/magnetic_controller/Topic(href, href_list) - . = ..() - if(.) - return - if(inoperable()) - return - usr.set_interaction(src) - src.add_fingerprint(usr) - - if(href_list["radio-op"]) - - // Prepare signal beforehand, because this is a radio operation - var/datum/signal/signal = new - signal.transmission_method = 1 // radio transmission - signal.source = src - signal.frequency = frequency - signal.data["code"] = code - - // Apply any necessary commands - switch(href_list["radio-op"]) - if("togglepower") - signal.data["command"] = "toggle-power" - - if("minuselec") - signal.data["command"] = "sub-elec" - if("pluselec") - signal.data["command"] = "add-elec" - - if("minusmag") - signal.data["command"] = "sub-mag" - if("plusmag") - signal.data["command"] = "add-mag" - - - // Broadcast the signal - - radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS) - - addtimer(CALLBACK(src, PROC_REF(updateUsrDialog)), 1) - - if(href_list["operation"]) - switch(href_list["operation"]) - if("plusspeed") - speed ++ - if(speed > 10) - speed = 10 - if("minusspeed") - speed -- - if(speed <= 0) - speed = 1 - if("setpath") - var/newpath = copytext(sanitize(input(usr, "Please define a new path!",,path) as text|null),1,MAX_MESSAGE_LEN) - if(newpath && newpath != "") - moving = 0 // stop moving - path = newpath - pathpos = 1 // reset position - filter_path() // renders rpath - - if("togglemoving") - moving = !moving - if(moving) - INVOKE_ASYNC(src, PROC_REF(MagnetMove)) - - - updateUsrDialog() - -/obj/structure/machinery/magnetic_controller/proc/MagnetMove() - if(looping) return - - while(moving && rpath.len >= 1) - - if(inoperable()) - break - - looping = 1 - - // Prepare the radio signal - var/datum/signal/signal = new - signal.transmission_method = 1 // radio transmission - signal.source = src - signal.frequency = frequency - signal.data["code"] = code - - if(pathpos > rpath.len) // if the position is greater than the length, we just loop through the list! - pathpos = 1 - - var/nextmove = uppertext(rpath[pathpos]) // makes it un-case-sensitive - - if(!(nextmove in list("N","S","E","W","C","R"))) - // N, S, E, W are directional - // C is center - // R is random (in magnetic field's bounds) - qdel(signal) - break // break the loop if the character located is invalid - - signal.data["command"] = nextmove - - - pathpos++ // increase iterator - - // Broadcast the signal - spawn() - radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS) - - if(speed == 10) - sleep(1) - else - sleep(12-speed) - - looping = 0 - - -/obj/structure/machinery/magnetic_controller/proc/filter_path() - // Generates the rpath variable using the path string, think of this as "string2list" - // Doesn't use params2list() because of the akward way it stacks entities - rpath = list() // clear rpath - var/maximum_character = min( 50, length(path) ) // chooses the maximum length of the iterator. 50 max length - - for(var/i=1, i<=maximum_character, i++) // iterates through all characters in path - - var/nextchar = copytext(path, i, i+1) // find next character - - if(!(nextchar in list(";", "&", "*", " "))) // if char is a separator, ignore - rpath += copytext(path, i, i+1) // else, add to list - - // there doesn't HAVE to be separators but it makes paths syntatically visible - - - - - - - - - - - - - - - - - - - - - - - diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index d1e2fecce20f..f1b0081e3a39 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -1,5 +1,4 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - +// Legacy SS13 machinery turned into a prop /obj/structure/machinery/mass_driver name = "mass driver" desc = "Shoots things into space." @@ -9,32 +8,3 @@ use_power = USE_POWER_IDLE idle_power_usage = 2 active_power_usage = 50 - - var/power = 1 - var/code = 1 - var/id = 1 - var/drive_range = 50 //this is mostly irrelevant since current mass drivers throw into space, but you could make a lower-range mass driver for interstation transport or something I guess. - - -/obj/structure/machinery/mass_driver/proc/drive(amount) - if(inoperable()) - return - use_power(500) - var/O_limit - var/atom/target = get_edge_target_turf(src, dir) - for(var/atom/movable/O in loc) - if(!O.anchored) - if(O_limit >= 20) - for(var/mob/M in hearers(src, null)) - to_chat(M, SPAN_NOTICE(" The mass driver lets out a screech, it mustn't be able to handle any more items.")) - break - use_power(500) - INVOKE_ASYNC(O, TYPE_PROC_REF(/atom/movable, throw_atom), target, drive_range * power, 100/power) - flick("mass_driver1", src) - return - -/obj/structure/machinery/mass_driver/emp_act(severity) - if(inoperable()) - return - drive() - ..(severity) diff --git a/code/game/machinery/medical_pod/bodyscanner.dm b/code/game/machinery/medical_pod/bodyscanner.dm index 4756121e50ae..732ff1ba97b9 100644 --- a/code/game/machinery/medical_pod/bodyscanner.dm +++ b/code/game/machinery/medical_pod/bodyscanner.dm @@ -62,8 +62,6 @@ if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY) deconstruct(FALSE) return - else - return #ifdef OBJECTS_PROXY_SPEECH // Transfers speech to occupant @@ -124,8 +122,6 @@ if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY) deconstruct(FALSE) return - else - return /obj/structure/machinery/body_scanconsole/power_change() ..() @@ -208,7 +204,7 @@ "toxloss" = H.getToxLoss(), "cloneloss" = H.getCloneLoss(), "brainloss" = H.getBrainLoss(), - "knocked_out" = H.knocked_out, + "knocked_out" = H.GetKnockOutDuration(), "bodytemp" = H.bodytemperature, "inaprovaline_amount" = H.reagents.get_reagent_amount("inaprovaline"), "dexalin_amount" = H.reagents.get_reagent_amount("dexalin"), @@ -267,7 +263,7 @@ s_class = occ["brainloss"] < 1 ? INTERFACE_GOOD : INTERFACE_BAD dat += "[SET_CLASS("  Approx. Brain Damage:", INTERFACE_PINK)] [SET_CLASS("[occ["brainloss"]]%", s_class)]

      " - dat += "[SET_CLASS("Knocked Out Summary:", "#40628a")] [occ["knocked_out"]]% ([round(occ["knocked_out"] / 4)] seconds left!)
      " + dat += "[SET_CLASS("Knocked Out Summary:", "#40628a")] [occ["knocked_out"]]% (approximately [round(occ["knocked_out"] * GLOBAL_STATUS_MULTIPLIER / (1 SECONDS))] seconds left!)
      " dat += "[SET_CLASS("Body Temperature:", "#40628a")] [occ["bodytemp"]-T0C]°C ([occ["bodytemp"]*1.8-459.67]°F)

      " s_class = occ["blood_amount"] > 448 ? INTERFACE_OKAY : INTERFACE_BAD diff --git a/code/game/machinery/medical_pod/bone_gel_refill.dm b/code/game/machinery/medical_pod/bone_gel_refill.dm new file mode 100644 index 000000000000..caf25ac438ec --- /dev/null +++ b/code/game/machinery/medical_pod/bone_gel_refill.dm @@ -0,0 +1,12 @@ +/obj/structure/machinery/gel_refiller + name = "osteomimetic lattice fabricator" + desc = "Often called the bone gel refiller by those unable to pronounce its full name, this machine synthesizes and stores bone gel for later use. A slot in the front allows you to insert a bone gel bottle to refill it." + desc_lore = "In an attempt to prevent counterfeit bottles of bone gel not created by Weyland-Yutani, also known as a regular bottle, from being refilled, there is a chip reader in the fabricator and a chip in each bottle to make sure it is genuine. However, due to a combination of quality issues and being unmaintainable from proprietary parts, the machine often has problems. One such problem is in the chip reader, resulting in the fabricator being unable to detect a bottle directly on it, and such fails to activate, resulting in a person having to stand there and manually hold a bottle at the correct height to fill it." + icon_state = "bone_gel_vendor" + density = TRUE + +/obj/structure/machinery/gel_refiller/attackby(obj/item/attacking_item, mob/user) + if(!istype(attacking_item, /obj/item/tool/surgery/bonegel)) + return ..() + var/obj/item/tool/surgery/bonegel/gel = attacking_item + gel.refill_gel(src, user) diff --git a/code/game/machinery/medical_pod/medical_pod.dm b/code/game/machinery/medical_pod/medical_pod.dm index b284d71ad4a7..62c8eef1f72c 100644 --- a/code/game/machinery/medical_pod/medical_pod.dm +++ b/code/game/machinery/medical_pod/medical_pod.dm @@ -155,7 +155,6 @@ if(exit_stun) occupant.apply_effect(exit_stun, STUN) //Action delay when going out - occupant.update_canmove() //Force the delay to go in action immediately occupant.visible_message(SPAN_WARNING("[occupant] pops out of \the [src]!"), SPAN_WARNING("You get out of \the [src] and get your bearings!")) diff --git a/code/game/machinery/medical_pod/sleeper.dm b/code/game/machinery/medical_pod/sleeper.dm index 805fedb29257..84ef2f579ba1 100644 --- a/code/game/machinery/medical_pod/sleeper.dm +++ b/code/game/machinery/medical_pod/sleeper.dm @@ -164,7 +164,7 @@ var/chemicals[0] for(var/re in connected.available_chemicals) - var/datum/reagent/temp = chemical_reagents_list[re] + var/datum/reagent/temp = GLOB.chemical_reagents_list[re] if(temp) var/reagent_amount = 0 var/pretty_amount @@ -332,14 +332,13 @@ /obj/structure/machinery/medical_pod/sleeper/emp_act(severity) + . = ..() if(filtering) toggle_filter() if(inoperable()) - ..(severity) return if(occupant) go_out() - ..() /obj/structure/machinery/medical_pod/sleeper/proc/toggle_filter() if(!occupant) @@ -366,7 +365,7 @@ if(occupant && occupant.reagents) if(occupant.reagents.get_reagent_amount(chemical) + amount <= max_chem) occupant.reagents.add_reagent(chemical, amount, , , user) - var/datum/reagent/temp = chemical_reagents_list[chemical] + var/datum/reagent/temp = GLOB.chemical_reagents_list[chemical] to_chat(user, SPAN_NOTICE("[occupant] now has [occupant.reagents.get_reagent_amount(chemical)] units of [temp.name] in \his bloodstream.")) return to_chat(user, SPAN_WARNING("There's no occupant in the sleeper or the subject has too many chemicals!")) @@ -385,15 +384,14 @@ t1 = "Unconscious" if(2) t1 = "*dead*" - else to_chat(user, "[]\t Health %: [] ([])", (occupant.health > 50 ? SPAN_NOTICE("") : SPAN_DANGER("")), occupant.health, t1) to_chat(user, "[]\t -Core Temperature: []°C ([]°F)
      ", (occupant.bodytemperature > 50 ? "" : ""), occupant.bodytemperature-T0C, occupant.bodytemperature*1.8-459.67) to_chat(user, "[]\t -Brute Damage %: []", (occupant.getBruteLoss() < 60 ? SPAN_NOTICE("") : SPAN_DANGER("")), occupant.getBruteLoss()) to_chat(user, "[]\t -Respiratory Damage %: []", (occupant.getOxyLoss() < 60 ? SPAN_NOTICE("") : SPAN_DANGER("")), occupant.getOxyLoss()) to_chat(user, "[]\t -Toxin Content %: []", (occupant.getToxLoss() < 60 ? SPAN_NOTICE("") : SPAN_DANGER("")), occupant.getToxLoss()) to_chat(user, "[]\t -Burn Severity %: []", (occupant.getFireLoss() < 60 ? SPAN_NOTICE("") : SPAN_DANGER("")), occupant.getFireLoss()) - to_chat(user, SPAN_NOTICE(" Expected time till occupant can safely awake: (note: If health is below 20% these times are inaccurate)")) - to_chat(user, SPAN_NOTICE(" \t [occupant.knocked_out / 5] second\s (if around 1 or 2 the sleeper is keeping them asleep.)")) + to_chat(user, SPAN_NOTICE(" Expected time till occupant can safely awake: (note: These times are always inaccurate)")) + to_chat(user, SPAN_NOTICE(" \t [occupant.GetKnockOutDuration() * GLOBAL_STATUS_MULTIPLIER / (1 SECONDS)] second\s (if around 1 or 2 the sleeper is keeping them asleep.)")) else to_chat(user, SPAN_NOTICE(" There is no one inside!")) return diff --git a/code/game/machinery/mining.dm b/code/game/machinery/mining.dm index 4f663c5fbca7..0662817174fc 100644 --- a/code/game/machinery/mining.dm +++ b/code/game/machinery/mining.dm @@ -26,4 +26,4 @@ icon_state = "furnace" density = TRUE anchored = TRUE - luminosity = 3 + light_range = 3 diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index ad8f5a189267..96e1635bb0b8 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -1,754 +1,12 @@ -//############################################## -//################### NEWSCASTERS BE HERE! #### -//###-Agouri################################### - -/datum/feed_message - var/author ="" - var/body ="" - var/message_type ="Story" - //var/parent_channel - var/backup_body ="" - var/backup_author ="" - var/is_admin_message = 0 - var/icon/img = null - var/icon/backup_img - -/datum/feed_channel - var/channel_name="" - var/list/datum/feed_message/messages = list() - //var/message_count = 0 - var/locked=0 - var/author="" - var/backup_author="" - var/censored=0 - var/is_admin_channel=0 - //var/page = null //For newspapers - -/datum/feed_message/proc/clear() - src.author = "" - src.body = "" - src.backup_body = "" - src.backup_author = "" - src.img = null - src.backup_img = null - -/datum/feed_channel/proc/clear() - src.channel_name = "" - src.messages = list() - src.locked = 0 - src.author = "" - src.backup_author = "" - src.censored = 0 - src.is_admin_channel = 0 - -/datum/feed_network - var/list/datum/feed_channel/network_channels = list() - var/datum/feed_message/wanted_issue - -var/datum/feed_network/news_network = new /datum/feed_network //The global news-network, which is coincidentally a global list. - -var/list/obj/structure/machinery/newscaster/allCasters = list() //Global list that will contain reference to all newscasters in existence. - - /obj/structure/machinery/newscaster name = "newscaster" desc = "A standard Weyland-Yutani-licensed newsfeed handler for use in commercial space stations. All the news you absolutely have no use for, in one place!" icon = 'icons/obj/structures/machinery/terminals.dmi' icon_state = "newscaster_normal" - var/isbroken = FALSE //1 if someone banged it with something heavy - var/ispowered = TRUE //starts powered, changes with power_change() - //var/list/datum/feed_channel/channel_list = list() //This list will contain the names of the feed channels. Each name will refer to a data region where the messages of the feed channels are stored. - //OBSOLETE: We're now using a global news network - var/screen = 0 //Or maybe I'll make it into a list within a list afterwards... whichever I prefer, go fuck yourselves :3 - // 0 = welcome screen - main menu - // 1 = view feed channels - // 2 = create feed channel - // 3 = create feed story - // 4 = feed story submited sucessfully - // 5 = feed channel created successfully - // 6 = ERROR: Cannot create feed story - // 7 = ERROR: Cannot create feed channel - // 8 = print newspaper - // 9 = viewing channel feeds - // 10 = censor feed story - // 11 = censor feed channel - //Holy shit this is outdated, made this when I was still starting newscasters :3 - var/paper_remaining = 0 - var/securityCaster = 0 - // 0 = Caster cannot be used to issue wanted posters - // 1 = the opposite - var/unit_no = 0 //Each newscaster has a unit number - //var/datum/feed_message/wanted //We're gonna use a feed_message to store data of the wanted person because fields are similar - //var/wanted_issue = 0 //OBSOLETE - // 0 = there's no WANTED issued, we don't need a special icon_state - // 1 = Guess what. - var/alert_delay = 500 - var/alert = 0 - // 0 = there hasn't been a news/wanted update in the last alert_delay - // 1 = there has - var/scanned_user = "Unknown" //Will contain the name of the person who currently uses the newscaster - var/msg = ""; //Feed message - var/obj/item/photo/photo = null - var/channel_name = ""; //the feed channel which will be receiving the feed, or being created - var/c_locked=0; //Will our new channel be locked to public submissions? - var/hitstaken = 0 //Death at 3 hits from an item with force>=15 - var/datum/feed_channel/viewing_channel = null - luminosity = 0 anchored = TRUE - -/obj/structure/machinery/newscaster/security_unit //Security unit +/obj/structure/machinery/newscaster/security_unit name = "Security Newscaster" - securityCaster = 1 - -/obj/structure/machinery/newscaster/security_unit/New() //Constructor, ho~ - allCasters += src - src.paper_remaining = 15 // Will probably change this to something better - for(var/obj/structure/machinery/newscaster/NEWSCASTER in allCasters) // Let's give it an appropriate unit number - src.unit_no++ - src.update_icon() //for any custom ones on the map... - ..() //I just realised the newscasters weren't in the global machines list. The superconstructor call will tend to that - -/obj/structure/machinery/newscaster/security_unit/Destroy() - allCasters -= src - SetLuminosity(0) - return ..() - -/obj/structure/machinery/newscaster/update_icon() - if(!ispowered || isbroken) - icon_state = "newscaster_off" - if(isbroken) //If the thing is smashed, add crack overlay on top of the unpowered sprite. - src.overlays.Cut() - src.overlays += image(src.icon, "crack3") - return - - src.overlays.Cut() //reset overlays - - if(news_network.wanted_issue) //wanted icon state, there can be no overlays on it as it's a priority message - icon_state = "newscaster_wanted" - return - - if(alert) //new message alert overlay - src.overlays += "newscaster_alert" - - if(hitstaken > 0) //Cosmetic damage overlay - src.overlays += image(src.icon, "crack[hitstaken]") - - icon_state = "newscaster_normal" - return - -/obj/structure/machinery/newscaster/power_change() - if(isbroken) //Broken shit can't be powered. - return - ..() - if( !(stat & NOPOWER) ) - src.ispowered = TRUE - src.update_icon() - else - spawn(rand(0, 15)) - src.ispowered = FALSE - src.update_icon() - - -/obj/structure/machinery/newscaster/ex_act(severity) - switch(severity) - if(0 to EXPLOSION_THRESHOLD_LOW) - if(prob(50)) - src.isbroken=1 - src.update_icon() - return - if(EXPLOSION_THRESHOLD_LOW to EXPLOSION_THRESHOLD_MEDIUM) - src.isbroken=1 - if(prob(50)) - deconstruct(FALSE) - else - src.update_icon() //can't place it above the return and outside the if-else. or we might get runtimes of null.update_icon() if(prob(50)) goes in. - return - if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY) - deconstruct(FALSE) - return - return - -/obj/structure/machinery/newscaster/attack_remote(mob/user as mob) - return src.attack_hand(user) - -/obj/structure/machinery/newscaster/attack_hand(mob/user as mob) //########### THE MAIN BEEF IS HERE! And in the proc below this...############ - if(!src.ispowered || src.isbroken) - return - if(istype(user, /mob/living/carbon/human) || istype(user,/mob/living/silicon) ) - var/mob/living/human_or_robot_user = user - var/dat - dat = text("Newscaster

      Newscaster Unit #[src.unit_no]

      ") - - src.scan_user(human_or_robot_user) //Newscaster scans you - - switch(screen) - if(0) - dat += "Welcome to Newscasting Unit #[src.unit_no].
      Interface & News networks Operational." - dat += "
      Property of Weyland-Yutani" - if(news_network.wanted_issue) - dat+= "
      Read Wanted Issue" - dat+= "

      Create Feed Channel" - dat+= "
      View Feed Channels" - dat+= "
      Submit new Feed story" - dat+= "
      Print newspaper" - dat+= "
      Re-scan User" - dat+= "

      Exit" - if(src.securityCaster) - var/wanted_already = 0 - if(news_network.wanted_issue) - wanted_already = 1 - - dat+="
      Feed Security functions:
      " - dat+="
      [(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue" - dat+="
      Censor Feed Stories" - dat+="
      Mark Feed Channel with Weyland-Yutani D-Notice" - dat+="

      The newscaster recognises you as: [src.scanned_user]" - if(1) - dat+= "Station Feed Channels
      " - if(!length(news_network.network_channels) ) - dat+="No active channels found..." - else - for(var/datum/feed_channel/CHANNEL in news_network.network_channels) - if(CHANNEL.is_admin_channel) - dat+="[CHANNEL.channel_name]
      " - else - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
      " - /*for(var/datum/feed_channel/CHANNEL in src.channel_list) - dat+="[CHANNEL.channel_name]:
      \[created by: [CHANNEL.author]\]

      " - if(!length(CHANNEL.messages) ) - dat+="No feed messages found in channel...

      " - else - for(var/datum/feed_message/MESSAGE in CHANNEL.messages) - dat+="-[MESSAGE.body]
      \[[MESSAGE.message_type] by [MESSAGE.author]\]
      "*/ - - dat+="

      Refresh" - dat+="
      Back" - if(2) - dat+="Creating new Feed Channel..." - dat+="
      Channel Name: [src.channel_name]
      " - dat+="Channel Author: [src.scanned_user]
      " - dat+="Will Accept Public Feeds: [(src.c_locked) ? ("NO") : ("YES")]

      " - dat+="
      Submit

      Cancel
      " - if(3) - dat+="Creating new Feed Message..." - dat+="
      Receiving Channel: [src.channel_name]
      " //MARK - dat+="Message Author: [src.scanned_user]
      " - dat+="Message Body: [src.msg]
      " - dat+="Attach Photo: [(src.photo ? "Photo Attached" : "No Photo")]
      " - dat+="
      Submit

      Cancel
      " - if(4) - dat+="Feed story successfully submitted to [src.channel_name].

      " - dat+="
      Return
      " - if(5) - dat+="Feed Channel [src.channel_name] created successfully.

      " - dat+="
      Return
      " - if(6) - dat+="ERROR: Could not submit Feed story to Network.

      " - if(src.channel_name=="") - dat+="�Invalid receiving channel name.
      " - if(src.scanned_user=="Unknown") - dat+="�Channel author unverified.
      " - if(src.msg == "" || src.msg == "\[REDACTED\]") - dat+="�Invalid message body.
      " - - dat+="
      Return
      " - if(7) - dat+="ERROR: Could not submit Feed Channel to Network.

      " - //var/list/existing_channels = list() //Let's get dem existing channels - OBSOLETE - var/list/existing_authors = list() - for(var/datum/feed_channel/FC in news_network.network_channels) - //existing_channels += FC.channel_name //OBSOLETE - if(FC.author == "\[REDACTED\]") - existing_authors += FC.backup_author - else - existing_authors += FC.author - if(src.scanned_user in existing_authors) - dat+="�There already exists a Feed channel under your name.
      " - if(src.channel_name=="" || src.channel_name == "\[REDACTED\]") - dat+="�Invalid channel name.
      " - var/check = 0 - for(var/datum/feed_channel/FC in news_network.network_channels) - if(FC.channel_name == src.channel_name) - check = 1 - break - if(check) - dat+="�Channel name already in use.
      " - if(src.scanned_user=="Unknown") - dat+="�Channel author unverified.
      " - dat+="
      Return
      " - if(8) - var/total_num=length(news_network.network_channels) - var/active_num=total_num - var/message_num=0 - for(var/datum/feed_channel/FC in news_network.network_channels) - if(!FC.censored) - message_num += length(FC.messages) //Dont forget, datum/feed_channel's var messages is a list of datum/feed_message - else - active_num-- - dat+="Network currently serves a total of [total_num] Feed channels, [active_num] of which are active, and a total of [message_num] Feed Stories." //TODO: CONTINUE - dat+="

      Liquid Paper remaining: [(src.paper_remaining) *100 ] cm^3" - dat+="

      Print Paper" - dat+="
      Cancel" - if(9) - dat+="[src.viewing_channel.channel_name]: \[created by: [src.viewing_channel.author]\]
      " - if(src.viewing_channel.censored) - dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Weyland-Yutani D-Notice.
      " - dat+="No further feed story additions are allowed while the D-Notice is in effect.


      " - else - if(!length(src.viewing_channel.messages) ) - dat+="No feed messages found in channel...
      " - else - var/i = 0 - for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages) - i++ - dat+="-[MESSAGE.body]
      " - if(MESSAGE.img) - usr << browse_rsc(MESSAGE.img, "tmp_photo[i].png") - dat+="

      " - dat+="\[[MESSAGE.message_type] by [MESSAGE.author]\]
      " - dat+="

      Refresh" - dat+="
      Back" - if(10) - dat+="Weyland-Yutani Feed Censorship Tool
      " - dat+="NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.
      " - dat+="Keep in mind that users attempting to view a censored feed will instead see the \[REDACTED\] tag above it.
      " - dat+="
      Select Feed channel to get Stories from:
      " - if(!length(news_network.network_channels)) - dat+="No feed channels found active...
      " - else - for(var/datum/feed_channel/CHANNEL in news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
      " - dat+="
      Cancel" - if(11) - dat+="Weyland-Yutani D-Notice Handler
      " - dat+="A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's" - dat+="morale, integrity or disciplinary behaviour. A D-Notice will render a channel unable to be updated by anyone, without deleting any feed" - dat+="stories it might contain at the time. You can lift a D-Notice if you have the required access at any time.
      " - if(!length(news_network.network_channels)) - dat+="No feed channels found active...
      " - else - for(var/datum/feed_channel/CHANNEL in news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
      " - - dat+="
      Back" - if(12) - dat+="[src.viewing_channel.channel_name]: \[ created by: [src.viewing_channel.author] \]
      " - dat+="[(src.viewing_channel.author=="\[REDACTED\]") ? ("Undo Author censorship") : ("Censor channel Author")]
      " - - - if(!length(src.viewing_channel.messages) ) - dat+="No feed messages found in channel...
      " - else - for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages) - dat+="-[MESSAGE.body]
      \[[MESSAGE.message_type] by [MESSAGE.author]\]
      " - dat+="[(MESSAGE.body == "\[REDACTED\]") ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.author == "\[REDACTED\]") ? ("Undo Author Censorship") : ("Censor message Author")]
      " - dat+="
      Back" - if(13) - dat+="[src.viewing_channel.channel_name]: \[ created by: [src.viewing_channel.author] \]
      " - dat+="Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
      " - if(src.viewing_channel.censored) - dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Weyland-Yutani D-Notice.
      " - dat+="No further feed story additions are allowed while the D-Notice is in effect.


      " - else - if(!length(src.viewing_channel.messages) ) - dat+="No feed messages found in channel...
      " - else - for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages) - dat+="-[MESSAGE.body]
      \[[MESSAGE.message_type] by [MESSAGE.author]\]
      " - - dat+="
      Back" - if(14) - dat+="Wanted Issue Handler:" - var/wanted_already = 0 - var/end_param = 1 - if(news_network.wanted_issue) - wanted_already = 1 - end_param = 2 - - if(wanted_already) - dat+="
      A wanted issue is already in Feed Circulation. You can edit or cancel it below.
      " - dat+="
      " - dat+="Criminal Name: [src.channel_name]
      " - dat+="Description: [src.msg]
      " - dat+="Attach Photo: [(src.photo ? "Photo Attached" : "No Photo")]
      " - if(wanted_already) - dat+="Wanted Issue created by: [news_network.wanted_issue.backup_author]
      " - else - dat+="Wanted Issue will be created under prosecutor: [src.scanned_user]
      " - dat+="
      [(wanted_already) ? ("Edit Issue") : ("Submit")]" - if(wanted_already) - dat+="
      Take down Issue" - dat+="
      Cancel" - if(15) - dat+="Wanted issue for [src.channel_name] is now in Network Circulation.

      " - dat+="
      Return
      " - if(16) - dat+="ERROR: Wanted Issue rejected by Network.

      " - if(src.channel_name=="" || src.channel_name == "\[REDACTED\]") - dat+="�Invalid name for person wanted.
      " - if(src.scanned_user=="Unknown") - dat+="�Issue author unverified.
      " - if(src.msg == "" || src.msg == "\[REDACTED\]") - dat+="�Invalid description.
      " - dat+="
      Return
      " - if(17) - dat+="Wanted Issue successfully deleted from Circulation
      " - dat+="
      Return
      " - if(18) - dat+="-- STATIONWIDE WANTED ISSUE --
      \[Submitted by: [news_network.wanted_issue.backup_author]\]
      " - dat+="Criminal: [news_network.wanted_issue.author]
      " - dat+="Description: [news_network.wanted_issue.body]
      " - dat+="Photo:: " - if(news_network.wanted_issue.img) - usr << browse_rsc(news_network.wanted_issue.img, "tmp_photow.png") - dat+="
      " - else - dat+="None" - dat+="

      Back
      " - if(19) - dat+="Wanted issue for [src.channel_name] successfully edited.

      " - dat+="
      Return
      " - if(20) - dat+="Printing successful. Please receive your newspaper from the bottom of the machine.

      " - dat+="Return" - if(21) - dat+="Unable to print newspaper. Insufficient paper. Please notify maintenance personnel to refill machine storage.

      " - dat+="Return" - else - dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com" - - - human_or_robot_user << browse(dat, "window=newscaster_main;size=400x600") - onclose(human_or_robot_user, "newscaster_main") - - /*if(src.isbroken) //debugging shit - return - src.hitstaken++ - if(src.hitstaken==3) - src.isbroken = TRUE - src.update_icon()*/ - - -/obj/structure/machinery/newscaster/Topic(href, href_list) - if(..()) - return - if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (isRemoteControlling(usr))) - usr.set_interaction(src) - if(href_list["set_channel_name"]) - src.channel_name = strip_html(input(usr, "Provide a Feed Channel Name", "Network Channel Handler", "")) - while (findtext(src.channel_name," ") == 1) - src.channel_name = copytext(src.channel_name,2,length(src.channel_name)+1) - src.updateUsrDialog() - //src.update_icon() - - else if(href_list["set_channel_lock"]) - src.c_locked = !src.c_locked - src.updateUsrDialog() - //src.update_icon() - - else if(href_list["submit_new_channel"]) - //var/list/existing_channels = list() //OBSOLETE - var/list/existing_authors = list() - for(var/datum/feed_channel/FC in news_network.network_channels) - //existing_channels += FC.channel_name - if(FC.author == "\[REDACTED\]") - existing_authors += FC.backup_author - else - existing_authors +=FC.author - var/check = 0 - for(var/datum/feed_channel/FC in news_network.network_channels) - if(FC.channel_name == src.channel_name) - check = 1 - break - if(src.channel_name == "" || src.channel_name == "\[REDACTED\]" || src.scanned_user == "Unknown" || check || (src.scanned_user in existing_authors) ) - src.screen=7 - else - var/choice = alert("Please confirm Feed channel creation","Network Channel Handler","Confirm","Cancel") - if(choice=="Confirm") - var/datum/feed_channel/newChannel = new /datum/feed_channel - newChannel.channel_name = src.channel_name - newChannel.author = src.scanned_user - newChannel.locked = c_locked - news_network.network_channels += newChannel //Adding channel to the global network - src.screen=5 - src.updateUsrDialog() - //src.update_icon() - - else if(href_list["set_channel_receiving"]) - //var/list/datum/feed_channel/available_channels = list() - var/list/available_channels = list() - for(var/datum/feed_channel/F in news_network.network_channels) - if( (!F.locked || F.author == scanned_user) && !F.censored) - available_channels += F.channel_name - src.channel_name = strip_html(tgui_input_list(usr, "Choose receiving Feed Channel", "Network Channel Handler", available_channels )) - src.updateUsrDialog() - - else if(href_list["set_new_message"]) - src.msg = strip_html(input(usr, "Write your Feed story", "Network Channel Handler", "")) - while (findtext(src.msg," ") == 1) - src.msg = copytext(src.msg,2,length(src.msg)+1) - src.updateUsrDialog() - - else if(href_list["set_attachment"]) - AttachPhoto(usr) - src.updateUsrDialog() - - else if(href_list["submit_new_message"]) - if(src.msg =="" || src.msg=="\[REDACTED\]" || src.scanned_user == "Unknown" || src.channel_name == "" ) - src.screen=6 - else - var/datum/feed_message/newMsg = new /datum/feed_message - newMsg.author = src.scanned_user - newMsg.body = src.msg - if(photo) - newMsg.img = photo.img - for(var/datum/feed_channel/FC in news_network.network_channels) - if(FC.channel_name == src.channel_name) - FC.messages += newMsg //Adding message to the network's appropriate feed_channel - break - src.screen=4 - for(var/obj/structure/machinery/newscaster/NEWSCASTER in allCasters) - NEWSCASTER.newsAlert(src.channel_name) - - src.updateUsrDialog() - - else if(href_list["create_channel"]) - src.screen=2 - src.updateUsrDialog() - - else if(href_list["create_feed_story"]) - src.screen=3 - src.updateUsrDialog() - - else if(href_list["menu_paper"]) - src.screen=8 - src.updateUsrDialog() - else if(href_list["print_paper"]) - if(!src.paper_remaining) - src.screen=21 - else - src.print_paper() - src.screen = 20 - src.updateUsrDialog() - - else if(href_list["menu_censor_story"]) - src.screen=10 - src.updateUsrDialog() - - else if(href_list["menu_censor_channel"]) - src.screen=11 - src.updateUsrDialog() - - else if(href_list["menu_wanted"]) - var/already_wanted = 0 - if(news_network.wanted_issue) - already_wanted = 1 - - if(already_wanted) - src.channel_name = news_network.wanted_issue.author - src.msg = news_network.wanted_issue.body - src.screen = 14 - src.updateUsrDialog() - - else if(href_list["set_wanted_name"]) - src.channel_name = strip_html(input(usr, "Provide the name of the Wanted person", "Network Security Handler", "")) - while (findtext(src.channel_name," ") == 1) - src.channel_name = copytext(src.channel_name,2,length(src.channel_name)+1) - src.updateUsrDialog() - - else if(href_list["set_wanted_desc"]) - src.msg = strip_html(input(usr, "Provide the a description of the Wanted person and any other details you deem important", "Network Security Handler", "")) - while (findtext(src.msg," ") == 1) - src.msg = copytext(src.msg,2,length(src.msg)+1) - src.updateUsrDialog() - - else if(href_list["submit_wanted"]) - var/input_param = text2num(href_list["submit_wanted"]) - if(src.msg == "" || src.channel_name == "" || src.scanned_user == "Unknown") - src.screen = 16 - else - var/choice = alert("Please confirm Wanted Issue [(input_param==1) ? ("creation.") : ("edit.")]","Network Security Handler","Confirm","Cancel") - if(choice=="Confirm") - if(input_param==1) //If input_param == 1 we're submitting a new wanted issue. At 2 we're just editing an existing one. See the else below - var/datum/feed_message/WANTED = new /datum/feed_message - WANTED.author = src.channel_name - WANTED.body = src.msg - WANTED.backup_author = src.scanned_user //I know, a bit wacky - if(photo) - WANTED.img = photo.img - news_network.wanted_issue = WANTED - for(var/obj/structure/machinery/newscaster/NEWSCASTER in allCasters) - NEWSCASTER.newsAlert() - NEWSCASTER.update_icon() - src.screen = 15 - else - if(news_network.wanted_issue.is_admin_message) - alert("The wanted issue has been distributed by a Weyland-Yutani higherup. You cannot edit it.","Ok") - return - news_network.wanted_issue.author = src.channel_name - news_network.wanted_issue.body = src.msg - news_network.wanted_issue.backup_author = src.scanned_user - if(photo) - news_network.wanted_issue.img = photo.img - src.screen = 19 - - src.updateUsrDialog() - - else if(href_list["cancel_wanted"]) - if(news_network.wanted_issue.is_admin_message) - alert("The wanted issue has been distributed by a Weyland-Yutani higherup. You cannot take it down.","Ok") - return - var/choice = alert("Please confirm Wanted Issue removal","Network Security Handler","Confirm","Cancel") - if(choice=="Confirm") - news_network.wanted_issue = null - for(var/obj/structure/machinery/newscaster/NEWSCASTER in allCasters) - NEWSCASTER.update_icon() - src.screen=17 - src.updateUsrDialog() - - else if(href_list["view_wanted"]) - src.screen=18 - src.updateUsrDialog() - else if(href_list["censor_channel_author"]) - var/datum/feed_channel/FC = locate(href_list["censor_channel_author"]) - if(FC.is_admin_channel) - alert("This channel was created by a Weyland-Yutani Officer. You cannot censor it.","Ok") - return - if(FC.author != "\[REDACTED\]") - FC.backup_author = FC.author - FC.author = "\[REDACTED\]" - else - FC.author = FC.backup_author - src.updateUsrDialog() - - else if(href_list["censor_channel_story_author"]) - var/datum/feed_message/MSG = locate(href_list["censor_channel_story_author"]) - if(MSG.is_admin_message) - alert("This message was created by a Weyland-Yutani Officer. You cannot censor its author.","Ok") - return - if(MSG.author != "\[REDACTED\]") - MSG.backup_author = MSG.author - MSG.author = "\[REDACTED\]" - else - MSG.author = MSG.backup_author - src.updateUsrDialog() - - else if(href_list["censor_channel_story_body"]) - var/datum/feed_message/MSG = locate(href_list["censor_channel_story_body"]) - if(MSG.is_admin_message) - alert("This channel was created by a Weyland-Yutani Officer. You cannot censor it.","Ok") - return - if(MSG.img != null) - MSG.backup_img = MSG.img - MSG.img = null - else - MSG.img = MSG.backup_img - if(MSG.body != "\[REDACTED\]") - MSG.backup_body = MSG.body - MSG.body = "\[REDACTED\]" - else - MSG.body = MSG.backup_body - src.updateUsrDialog() - - else if(href_list["pick_d_notice"]) - var/datum/feed_channel/FC = locate(href_list["pick_d_notice"]) - src.viewing_channel = FC - src.screen=13 - src.updateUsrDialog() - - else if(href_list["toggle_d_notice"]) - var/datum/feed_channel/FC = locate(href_list["toggle_d_notice"]) - if(FC.is_admin_channel) - alert("This channel was created by a Weyland-Yutani Officer. You cannot place a D-Notice upon it.","Ok") - return - FC.censored = !FC.censored - src.updateUsrDialog() - - else if(href_list["view"]) - src.screen=1 - src.updateUsrDialog() - - else if(href_list["setScreen"]) //Brings us to the main menu and resets all fields~ - src.screen = text2num(href_list["setScreen"]) - if (src.screen == 0) - src.scanned_user = "Unknown"; - msg = ""; - src.c_locked=0; - channel_name=""; - src.viewing_channel = null - src.updateUsrDialog() - - else if(href_list["show_channel"]) - var/datum/feed_channel/FC = locate(href_list["show_channel"]) - src.viewing_channel = FC - src.screen = 9 - src.updateUsrDialog() - - else if(href_list["pick_censor_channel"]) - var/datum/feed_channel/FC = locate(href_list["pick_censor_channel"]) - src.viewing_channel = FC - src.screen = 12 - src.updateUsrDialog() - - else if(href_list["refresh"]) - src.updateUsrDialog() - - -/obj/structure/machinery/newscaster/attackby(obj/item/I as obj, mob/user as mob) - - if (src.isbroken) - playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 25, 1) - for (var/mob/O in hearers(5, src.loc)) - O.show_message("[user.name] further abuses the shattered [src.name].", SHOW_MESSAGE_VISIBLE) - else - if(!(I.flags_item & NOBLUDGEON) && I.force) - if(I.force <15) - for (var/mob/O in hearers(5, src.loc)) - O.show_message("[user.name] hits the [src.name] with the [I.name] with no visible effect.", SHOW_MESSAGE_VISIBLE) - playsound(src.loc, 'sound/effects/Glasshit.ogg', 25, 1) - else - src.hitstaken++ - if(src.hitstaken==3) - for (var/mob/O in hearers(5, src.loc)) - O.show_message("[user.name] smashes the [src.name]!", SHOW_MESSAGE_VISIBLE) - src.isbroken=1 - playsound(src.loc, 'sound/effects/Glassbr3.ogg', 50, 1) - else - for (var/mob/O in hearers(5, src.loc)) - O.show_message("[user.name] forcefully slams the [src.name] with the [I.name]!", SHOW_MESSAGE_VISIBLE) - playsound(src.loc, 'sound/effects/Glasshit.ogg', 25, 1) - else - to_chat(user, "This does nothing.") - src.update_icon() - -/obj/structure/machinery/newscaster/attack_remote(mob/user as mob) - return src.attack_hand(user) //or maybe it'll have some special functions? No idea. - -/obj/structure/machinery/newscaster/proc/AttachPhoto(mob/user as mob) - if(photo) - if(!isRemoteControlling(user)) - photo.forceMove(loc) - user.put_in_inactive_hand(photo) - photo = null - var/obj/item/photo/PH = user.get_active_hand() - if(istype(PH)) - if(user.drop_inv_item_to_loc(photo, src)) - photo = PH - else if(istype(user,/mob/living/silicon)) - var/mob/living/silicon/tempAI = user - var/datum/picture/selection = tempAI.GetPicture() - if (!selection) - return - - var/obj/item/photo/P = new/obj/item/photo() - P.construct(selection) - photo = P - - -//######################################################################################################################## -//###################################### NEWSPAPER! ###################################################################### -//######################################################################################################################## /obj/item/newspaper name = "newspaper" @@ -757,191 +15,3 @@ var/list/obj/structure/machinery/newscaster/allCasters = list() //Global list th icon_state = "newspaper" w_class = SIZE_TINY //Let's make it fit in trashbags! attack_verb = list("bapped") - var/screen = 0 - var/pages = 0 - var/curr_page = 0 - var/list/datum/feed_channel/news_content = list() - var/datum/feed_message/important_message = null - var/scribble="" - var/scribble_page = null - -/obj/item/newspaper/attack_self(mob/user as mob) - ..() - if(!ishuman(user)) - to_chat(user, "The paper is full of intelligible symbols!") - return - - var/mob/living/carbon/human/human_user = user - var/dat - src.pages = 0 - switch(screen) - if(0) //Cover - dat+="
      The Griffon
      " - dat+="
      Weyland-Yutani-standard newspaper, for use on Weyland-Yutani� Space Facilities

      " - if(!length(src.news_content)) - if(src.important_message) - dat+="Contents:
        **Important Security Announcement** \[page [src.pages+2]\]
      " - else - dat+="Other than the title, the rest of the newspaper is unprinted..." - else - dat+="Contents:
        " - for(var/datum/feed_channel/NP in src.news_content) - src.pages++ - if(src.important_message) - dat+="**Important Security Announcement** \[page [src.pages+2]\]
        " - var/temp_page=0 - for(var/datum/feed_channel/NP in src.news_content) - temp_page++ - dat+="[NP.channel_name] \[page [temp_page+1]\]
        " - dat+="
      " - if(scribble_page==curr_page) - dat+="
      There is a small scribble near the end of this page... It reads: \"[src.scribble]\"" - dat+= "
      " - if(1) // X channel pages inbetween. - for(var/datum/feed_channel/NP in src.news_content) - src.pages++ //Let's get it right again. - var/datum/feed_channel/C = src.news_content[src.curr_page] - dat+="[C.channel_name] \[created by: [C.author]\]

      " - if(C.censored) - dat+="This channel was deemed dangerous to the general welfare of the station and therefore marked with a D-Notice. Its contents were not transferred to the newspaper at the time of printing." - else - if(!length(C.messages)) - dat+="No Feed stories stem from this channel..." - else - dat+="
        " - var/i = 0 - for(var/datum/feed_message/MESSAGE in C.messages) - i++ - dat+="-[MESSAGE.body]
        " - if(MESSAGE.img) - user << browse_rsc(MESSAGE.img, "tmp_photo[i].png") - dat+="
        " - dat+="\[[MESSAGE.message_type] by [MESSAGE.author]\]

        " - dat+="
      " - if(scribble_page==curr_page) - dat+="
      There is a small scribble near the end of this page... It reads: \"[src.scribble]\"" - dat+= "

      " - if(2) //Last page - for(var/datum/feed_channel/NP in src.news_content) - src.pages++ - if(src.important_message!=null) - dat+="
      Wanted Issue:


      " - dat+="Criminal name: [important_message.author]
      " - dat+="Description: [important_message.body]
      " - dat+="Photo:: " - if(important_message.img) - user << browse_rsc(important_message.img, "tmp_photow.png") - dat+="
      " - else - dat+="None" - else - dat+="Apart from some uninteresting Classified ads, there's nothing on this page..." - if(scribble_page==curr_page) - dat+="
      There is a small scribble near the end of this page... It reads: \"[src.scribble]\"" - dat+= "
      " - else - dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com" - - dat+="

      [src.curr_page+1]
      " - human_user << browse(dat, "window=newspaper_main;size=300x400") - onclose(human_user, "newspaper_main") - - -/obj/item/newspaper/Topic(href, href_list) - var/mob/living/U = usr - ..() - if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) )) - U.set_interaction(src) - if(href_list["next_page"]) - if(curr_page==src.pages+1) - return //Don't need that at all, but anyway. - if(src.curr_page == src.pages) //We're at the middle, get to the end - src.screen = 2 - else - if(curr_page == 0) //We're at the start, get to the middle - src.screen=1 - src.curr_page++ - playsound(src.loc, "pageturn", 15, 1) - - else if(href_list["prev_page"]) - if(curr_page == 0) - return - if(curr_page == 1) - src.screen = 0 - - else - if(curr_page == src.pages+1) //we're at the end, let's go back to the middle. - src.screen = 1 - src.curr_page-- - playsound(src.loc, "pageturn", 15, 1) - - if (istype(src.loc, /mob)) - src.attack_self(src.loc) - - -/obj/item/newspaper/attackby(obj/item/W as obj, mob/user as mob) - if(HAS_TRAIT(W, TRAIT_TOOL_PEN)) - if(src.scribble_page == src.curr_page) - to_chat(user, "There's already a scribble in this page... You wouldn't want to make things too cluttered, would you?") - else - var/s = strip_html( input(user, "Write something", "Newspaper", "") ) - s = strip_html(s) - if (!s) - return - if (!in_range(src, usr) && src.loc != usr) - return - src.scribble_page = src.curr_page - src.scribble = s - src.attack_self(user) - return - - -////////////////////////////////////helper procs - - -/obj/structure/machinery/newscaster/proc/scan_user(mob/living/user as mob) - if(istype(user,/mob/living/carbon/human)) //User is a human - var/mob/living/carbon/human/human_user = user - if(human_user.wear_id) //Newscaster scans you - if(istype(human_user.wear_id, /obj/item/card/id) ) - var/obj/item/card/id/ID = human_user.wear_id - src.scanned_user ="[ID.registered_name] ([ID.assignment])" - else - src.scanned_user ="Unknown" - else - src.scanned_user ="Unknown" - else - var/mob/living/silicon/ai_user = user - src.scanned_user = "[ai_user.name] ([ai_user.job])" - - -/obj/structure/machinery/newscaster/proc/print_paper() - var/obj/item/newspaper/NEWSPAPER = new /obj/item/newspaper - for(var/datum/feed_channel/FC in news_network.network_channels) - NEWSPAPER.news_content += FC - if(news_network.wanted_issue) - NEWSPAPER.important_message = news_network.wanted_issue - NEWSPAPER.forceMove(get_turf(src)) - src.paper_remaining-- - return - -//Removed for now so these aren't even checked every tick. Left this here in-case Agouri needs it later. -///obj/structure/machinery/newscaster/process() //Was thinking of doing the icon update through process, but multiple iterations per second does not -// return //bode well with a newscaster network of 10+ machines. Let's just return it, as it's added in the machines list. - -/obj/structure/machinery/newscaster/proc/newsAlert(channel) //This isn't Agouri's work, for it is ugly and vile. - var/turf/T = get_turf(src) //Who the fuck uses spawn(600) anyway, jesus christ - if(channel) - for(var/mob/O in hearers(world_view_size-1, T)) - O.show_message(SPAN_NEWSCASTER("[src.name] beeps, \"Breaking news from [channel]!\""), SHOW_MESSAGE_AUDIBLE) - src.alert = 1 - src.update_icon() - spawn(30 SECONDS) - src.alert = 0 - src.update_icon() - playsound(src.loc, 'sound/machines/twobeep.ogg', 25, 1) - else - for(var/mob/O in hearers(world_view_size-1, T)) - O.show_message(SPAN_NEWSCASTER("[src.name] beeps, \"Attention! Wanted issue distributed!\""), SHOW_MESSAGE_AUDIBLE) - playsound(src.loc, 'sound/machines/warning-buzzer.ogg', 25, 1) - return diff --git a/code/game/machinery/nuclearbomb.dm b/code/game/machinery/nuclearbomb.dm index 7dcdb9e39914..2194fe2e7e7c 100644 --- a/code/game/machinery/nuclearbomb.dm +++ b/code/game/machinery/nuclearbomb.dm @@ -1,5 +1,4 @@ -var/bomb_set = FALSE - +GLOBAL_VAR_INIT(bomb_set, FALSE) /obj/structure/machinery/nuclearbomb name = "\improper Nuclear Fission Explosive" desc = "Nuke the entire site from orbit, it's the only way to be sure. Too bad we don't have any orbital nukes." @@ -12,7 +11,7 @@ var/bomb_set = FALSE var/timing = FALSE var/deployable = FALSE var/explosion_time = null - var/timeleft = 4800 + var/timeleft = 8 MINUTES var/safety = TRUE var/being_used = FALSE var/end_round = TRUE @@ -55,47 +54,51 @@ var/bomb_set = FALSE /obj/structure/machinery/nuclearbomb/process() . = ..() - if(timing) - bomb_set = TRUE //So long as there is one nuke timing, it means one nuke is armed. - timeleft = explosion_time - world.time - if(world.time >= explosion_time) - explode() - //3 warnings: 1. Halfway through, 2. 1 minute left, 3. 10 seconds left. - //this structure allows varedits to var/timeleft without losing or spamming warnings. - else if(timer_announcements_flags) - if(timer_announcements_flags & NUKE_SHOW_TIMER_HALF) - if(timeleft <= initial(timeleft) / 2 && timeleft >= initial(timeleft) / 2 - 30) - announce_to_players(NUKE_SHOW_TIMER_HALF) - timer_announcements_flags &= ~NUKE_SHOW_TIMER_HALF - return - if(timer_announcements_flags & NUKE_SHOW_TIMER_MINUTE) - if(timeleft <= 600 && timeleft >= 570) - announce_to_players(NUKE_SHOW_TIMER_MINUTE) - timer_announcements_flags = NUKE_SHOW_TIMER_TEN_SEC - return - if(timer_announcements_flags & NUKE_SHOW_TIMER_TEN_SEC) - if(timeleft <= 100 && timeleft >= 70) - announce_to_players(NUKE_SHOW_TIMER_TEN_SEC) - timer_announcements_flags = 0 - return - else - stop_processing() + if(!timing) + update_minimap_icon() + return PROCESS_KILL + + GLOB.bomb_set = TRUE //So long as there is one nuke timing, it means one nuke is armed. + timeleft = explosion_time - world.time + if(world.time >= explosion_time) + explode() + return + //3 warnings: 1. Halfway through, 2. 1 minute left, 3. 10 seconds left. + //this structure allows varedits to var/timeleft without losing or spamming warnings. + if(!timer_announcements_flags) + return + + if(timer_announcements_flags & NUKE_SHOW_TIMER_HALF) + if(timeleft <= initial(timeleft) / 2 && timeleft >= initial(timeleft) / 2 - 30) + announce_to_players(NUKE_SHOW_TIMER_HALF) + timer_announcements_flags &= ~NUKE_SHOW_TIMER_HALF + return + if(timer_announcements_flags & NUKE_SHOW_TIMER_MINUTE) + if(timeleft <= 600 && timeleft >= 570) + announce_to_players(NUKE_SHOW_TIMER_MINUTE) + timer_announcements_flags = NUKE_SHOW_TIMER_TEN_SEC + return + if(timer_announcements_flags & NUKE_SHOW_TIMER_TEN_SEC) + if(timeleft <= 100 && timeleft >= 70) + announce_to_players(NUKE_SHOW_TIMER_TEN_SEC) + timer_announcements_flags = 0 + return /obj/structure/machinery/nuclearbomb/attack_alien(mob/living/carbon/xenomorph/M) INVOKE_ASYNC(src, TYPE_PROC_REF(/atom, attack_hand), M) return XENO_ATTACK_ACTION /obj/structure/machinery/nuclearbomb/attackby(obj/item/O as obj, mob/user as mob) - if(anchored && timing && bomb_set && HAS_TRAIT(O, TRAIT_TOOL_WIRECUTTERS)) - user.visible_message(SPAN_DANGER("[user] begins to defuse \the [src]."), SPAN_DANGER("You begin to defuse \the [src]. This will take some time...")) + if(anchored && timing && GLOB.bomb_set && HAS_TRAIT(O, TRAIT_TOOL_WIRECUTTERS)) + user.visible_message(SPAN_INFO("[user] begins to defuse \the [src]."), SPAN_INFO("You begin to defuse \the [src]. This will take some time...")) if(do_after(user, 150 * user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) disable() - playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) + playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1) return ..() /obj/structure/machinery/nuclearbomb/attack_hand(mob/user as mob) - if(user.is_mob_incapacitated() || !user.canmove || get_dist(src, user) > 1 || isRemoteControlling(user)) + if(user.is_mob_incapacitated() || get_dist(src, user) > 1 || isRemoteControlling(user)) return if(isyautja(user)) @@ -103,12 +106,12 @@ var/bomb_set = FALSE if(deployable) if(!ishuman(user) && !isqueen(user)) - to_chat(usr, SPAN_DANGER("You don't have the dexterity to do this!")) + to_chat(usr, SPAN_INFO("You don't have the dexterity to do this!")) return if(isqueen(user)) - if(timing && bomb_set) - user.visible_message(SPAN_DANGER("[user] begins to defuse \the [src]."), SPAN_DANGER("You begin to defuse \the [src]. This will take some time...")) + if(timing && GLOB.bomb_set) + user.visible_message(SPAN_INFO("[user] begins engulfing \the [src] with resin."), SPAN_INFO("You start regurgitating and engulfing the \the [src] with resin... stopping the electronics from working, this will take some time...")) if(do_after(user, 5 SECONDS, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) disable() return @@ -148,6 +151,7 @@ var/bomb_set = FALSE data["command_lockout"] = command_lockout data["allowed"] = allowed data["being_used"] = being_used + data["decryption_complete"] = TRUE //this is overridden by techweb nuke UI_data later, this just makes it default to true return data @@ -162,147 +166,140 @@ var/bomb_set = FALSE if(timing == -1) return - if(!ishuman(usr)) + if(!ishuman(ui.user)) return - if(!allowed(usr)) - to_chat(usr, SPAN_DANGER("Access denied!")) + if(!allowed(ui.user)) + to_chat(ui.user, SPAN_INFO("Access denied!")) return if(!anchored) - to_chat(usr, SPAN_DANGER("Engage anchors first!")) + to_chat(ui.user, SPAN_INFO("Engage anchors first!")) return if(safety) - to_chat(usr, SPAN_DANGER("The safety is still on.")) + to_chat(ui.user, SPAN_INFO("The safety is still on.")) return if(!A.can_build_special) - to_chat(usr, SPAN_DANGER("You cannot deploy [src] here!")) + to_chat(ui.user, SPAN_INFO("You cannot deploy [src] here!")) return - if(usr.action_busy) + if(ui.user.action_busy) return - usr.visible_message(SPAN_WARNING("[usr] begins to [timing ? "disengage" : "engage"] [src]!"), SPAN_WARNING("You begin to [timing ? "disengage" : "engage"] [src].")) + ui.user.visible_message(SPAN_WARNING("[ui.user] begins to [timing ? "disengage" : "engage"] [src]!"), SPAN_WARNING("You begin to [timing ? "disengage" : "engage"] [src].")) being_used = TRUE - ui = SStgui.try_update_ui(usr, src, ui) - if(do_after(usr, 50, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) + ui = SStgui.try_update_ui(ui.user, src, ui) + if(do_after(ui.user, 50, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) timing = !timing if(timing) if(!safety) - bomb_set = TRUE + GLOB.bomb_set = TRUE explosion_time = world.time + timeleft + update_minimap_icon() start_processing() announce_to_players() message_admins("\The [src] has been activated by [key_name(ui.user, 1)] [ADMIN_JMP_USER(ui.user)]") else - bomb_set = FALSE + GLOB.bomb_set = FALSE else disable() message_admins("\The [src] has been deactivated by [key_name(ui.user, 1)] [ADMIN_JMP_USER(ui.user)]") - playsound(src.loc, 'sound/effects/thud.ogg', 100, 1) + playsound(loc, 'sound/effects/thud.ogg', 100, 1) being_used = FALSE . = TRUE if("toggleSafety") - if(!allowed(usr)) - to_chat(usr, SPAN_DANGER("Access denied!")) + if(!allowed(ui.user)) + to_chat(ui.user, SPAN_INFO("Access denied!")) return if(timing) - to_chat(usr, SPAN_DANGER("Disengage first!")) + to_chat(ui.user, SPAN_INFO("Disengage first!")) return if(!A.can_build_special) - to_chat(usr, SPAN_DANGER("You cannot deploy [src] here!")) + to_chat(ui.user, SPAN_INFO("You cannot deploy [src] here!")) return - if(usr.action_busy) + if(ui.user.action_busy) return - usr.visible_message(SPAN_WARNING("[usr] begins to [safety ? "disable" : "enable"] the safety on [src]!"), SPAN_WARNING("You begin to [safety ? "disable" : "enable"] the safety on [src].")) + ui.user.visible_message(SPAN_WARNING("[ui.user] begins to [safety ? "disable" : "enable"] the safety on [src]!"), SPAN_WARNING("You begin to [safety ? "disable" : "enable"] the safety on [src].")) being_used = TRUE - ui = SStgui.try_update_ui(usr, src, ui) - if(do_after(usr, 50, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) + ui = SStgui.try_update_ui(ui.user, src, ui) + if(do_after(ui.user, 50, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) safety = !safety - playsound(src.loc, 'sound/items/poster_being_created.ogg', 100, 1) + playsound(loc, 'sound/items/poster_being_created.ogg', 100, 1) being_used = FALSE if(safety) timing = FALSE - bomb_set = FALSE + GLOB.bomb_set = FALSE . = TRUE if("toggleCommandLockout") - if(!ishuman(usr)) + if(!ishuman(ui.user)) return - if(!allowed(usr)) - to_chat(usr, SPAN_DANGER("Access denied!")) + if(!allowed(ui.user)) + to_chat(ui.user, SPAN_INFO("Access denied!")) return if(command_lockout) command_lockout = FALSE req_one_access = list() - to_chat(usr, SPAN_DANGER("Command lockout disengaged.")) + to_chat(ui.user, SPAN_INFO("Command lockout disengaged.")) else //Check if they have command access var/list/acc = list() - var/mob/living/carbon/human/H = usr + var/mob/living/carbon/human/H = ui.user if(H.wear_id) acc += H.wear_id.GetAccess() if(H.get_active_hand()) acc += H.get_active_hand().GetAccess() if(!(ACCESS_MARINE_COMMAND in acc)) - to_chat(usr, SPAN_DANGER("Access denied!")) + to_chat(ui.user, SPAN_INFO("Access denied!")) return command_lockout = TRUE req_one_access = list(ACCESS_MARINE_COMMAND) - to_chat(usr, SPAN_DANGER("Command lockout engaged.")) + to_chat(ui.user, SPAN_INFO("Command lockout engaged.")) . = TRUE if("toggleAnchor") if(timing) - to_chat(usr, SPAN_DANGER("Disengage first!")) + to_chat(ui.user, SPAN_INFO("Disengage first!")) return if(!A.can_build_special) - to_chat(usr, SPAN_DANGER("You cannot deploy [src] here!")) + to_chat(ui.user, SPAN_INFO("You cannot deploy [src] here!")) return - if(usr.action_busy) + if(ui.user.action_busy) return being_used = TRUE - ui = SStgui.try_update_ui(usr, src, ui) - if(do_after(usr, 50, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) + ui = SStgui.try_update_ui(ui.user, src, ui) + if(do_after(ui.user, 50, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) if(!anchored) - visible_message(SPAN_DANGER("With a steely snap, bolts slide out of [src] and anchor it to the flooring.")) + visible_message(SPAN_INFO("With a steely snap, bolts slide out of [src] and anchor it to the flooring.")) else - visible_message(SPAN_DANGER("The anchoring bolts slide back into the depths of [src].")) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 100, 1) + visible_message(SPAN_INFO("The anchoring bolts slide back into the depths of [src].")) + playsound(loc, 'sound/items/Deconstruct.ogg', 100, 1) anchored = !anchored being_used = FALSE . = TRUE update_icon() - add_fingerprint(usr) - -/obj/structure/machinery/nuclearbomb/start_processing() - . = ..() - update_minimap_icon() - -/obj/structure/machinery/nuclearbomb/stop_processing() - . = ..() - update_minimap_icon() + add_fingerprint(ui.user) /obj/structure/machinery/nuclearbomb/verb/make_deployable() set category = "Object" set name = "Make Deployable" set src in oview(1) - if(!usr.canmove || usr.stat || usr.is_mob_restrained() || being_used || timing) + if(usr.is_mob_incapacitated() || being_used || timing) return if(!ishuman(usr)) - to_chat(usr, SPAN_DANGER("You don't have the dexterity to do this!")) + to_chat(usr, SPAN_INFO("You don't have the dexterity to do this!")) return var/area/A = get_area(src) if(!A.can_build_special) - to_chat(usr, SPAN_DANGER("You don't want to deploy this here!")) + to_chat(usr, SPAN_INFO("You don't want to deploy this here!")) return usr.visible_message(SPAN_WARNING("[usr] begins to [deployable ? "close" : "adjust"] several panels to make [src] [deployable ? "undeployable" : "deployable"]."), SPAN_WARNING("You begin to [deployable ? "close" : "adjust"] several panels to make [src] [deployable ? "undeployable" : "deployable"].")) @@ -314,36 +311,35 @@ var/bomb_set = FALSE else deployable = TRUE anchored = TRUE - playsound(src.loc, 'sound/items/Deconstruct.ogg', 100, 1) + playsound(loc, 'sound/items/Deconstruct.ogg', 100, 1) being_used = FALSE update_icon() //unified all announcements to one proc /obj/structure/machinery/nuclearbomb/proc/announce_to_players(timer_warning) + + var/list/humans_other = GLOB.human_mob_list + GLOB.dead_mob_list + var/list/humans_uscm = list() + for(var/mob/current_mob as anything in humans_other) + if(current_mob.stat != CONSCIOUS || isyautja(current_mob)) + humans_other -= current_mob + continue + if(current_mob.faction == FACTION_MARINE || current_mob.faction == FACTION_SURVIVOR) //separating marines from other factions. Survs go here too + humans_uscm += current_mob + humans_other -= current_mob + if(timer_warning) //we check for timer warnings first - //humans part - var/list/humans_other = GLOB.human_mob_list + GLOB.dead_mob_list - var/list/humans_USCM = list() - for(var/mob/M in humans_other) - var/mob/living/carbon/human/H = M - if(istype(H)) //if it's unconsious human or yautja, we remove them - if(H.stat != CONSCIOUS || isyautja(H)) - humans_other.Remove(M) - continue - if(M.faction == FACTION_MARINE || M.faction == FACTION_SURVIVOR) //separating marines from other factions. Survs go here too - humans_USCM += M - humans_other -= M - announcement_helper("WARNING.\n\nDETONATION IN [round(timeleft/10)] SECONDS.", "[MAIN_AI_SYSTEM] Nuclear Tracker", humans_USCM, 'sound/misc/notice1.ogg') + announcement_helper("WARNING.\n\nDETONATION IN [round(timeleft/10)] SECONDS.", "[MAIN_AI_SYSTEM] Nuclear Tracker", humans_uscm, 'sound/misc/notice1.ogg') announcement_helper("WARNING.\n\nDETONATION IN [round(timeleft/10)] SECONDS.", "HQ Intel Division", humans_other, 'sound/misc/notice1.ogg') //preds part var/t_left = duration2text_sec(round(rand(timeleft - timeleft / 10, timeleft + timeleft / 10))) - yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!\n\nYou have approximately [t_left] seconds to abandon the hunting grounds before activation of human Purification Device.")) + yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!\n\nYou have approximately [t_left] seconds to abandon the hunting grounds before activation of the human purification device.")) //xenos part var/warning if(timer_warning & NUKE_SHOW_TIMER_HALF) - warning = "Hive killer is halfway through preparation cycle!" + warning = "A shiver goes down our carapace as we feel the approaching end... the hive killer is halfway through its preparation cycle!" else if(timer_warning & NUKE_SHOW_TIMER_MINUTE) - warning = "Hive killer is almost ready to trigger!" + warning = "Every sense in our form is screaming... the hive killer is almost ready to trigger!" else warning = "DISABLE IT! NOW!" var/datum/hive_status/hive @@ -354,33 +350,21 @@ var/bomb_set = FALSE xeno_announcement(SPAN_XENOANNOUNCE(warning), hive.hivenumber, XENO_GENERAL_ANNOUNCE) return - //deal with start/stop announcements for players - var/list/humans_other = GLOB.human_mob_list + GLOB.dead_mob_list - var/list/humans_USCM = list() - for(var/mob/M in humans_other) - var/mob/living/carbon/human/H = M - if(istype(H)) //if it's unconsious human or yautja, we remove them - if(H.stat != CONSCIOUS || isyautja(H)) - humans_other.Remove(M) - continue - if(M.faction == FACTION_MARINE || M.faction == FACTION_SURVIVOR) //separating marines from other factions. Survs go here too - humans_USCM += M - humans_other -= M var/datum/hive_status/hive if(timing) - announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE ORDNANCE ACTIVATED.\n\nDETONATION IN [round(timeleft/10)] SECONDS.", "[MAIN_AI_SYSTEM] Nuclear Tracker", humans_USCM, 'sound/misc/notice1.ogg') + announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE ORDNANCE ACTIVATED.\n\nDETONATION IN [round(timeleft/10)] SECONDS.", "[MAIN_AI_SYSTEM] Nuclear Tracker", humans_uscm, 'sound/misc/notice1.ogg') announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE ORDNANCE ACTIVATED.\n\nDETONATION IN [round(timeleft/10)] SECONDS.", "HQ Nuclear Tracker", humans_other, 'sound/misc/notice1.ogg') var/t_left = duration2text_sec(round(rand(timeleft - timeleft / 10, timeleft + timeleft / 10))) - yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!
      A human Purification Device has been detected. You have approximately [t_left] to abandon the hunting grounds before it activates.")) + yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!
      A human purification device has been detected. You have approximately [t_left] to abandon the hunting grounds before it activates.")) for(var/hivenumber in GLOB.hive_datum) hive = GLOB.hive_datum[hivenumber] if(!hive.totalXenos.len) continue xeno_announcement(SPAN_XENOANNOUNCE("The tallhosts have deployed a hive killer at [get_area_name(loc)]! Stop it at all costs!"), hive.hivenumber, XENO_GENERAL_ANNOUNCE) else - announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE ORDNANCE DEACTIVATED.", "[MAIN_AI_SYSTEM] Nuclear Tracker", humans_USCM, 'sound/misc/notice1.ogg') + announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE ORDNANCE DEACTIVATED.", "[MAIN_AI_SYSTEM] Nuclear Tracker", humans_uscm, 'sound/misc/notice1.ogg') announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE ORDNANCE DEACTIVATED.", "HQ Intel Division", humans_other, 'sound/misc/notice1.ogg') - yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!
      The human Purification Device's signature has disappeared.")) + yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!
      The human purification device's signature has disappeared.")) for(var/hivenumber in GLOB.hive_datum) hive = GLOB.hive_datum[hivenumber] if(!hive.totalXenos.len) @@ -393,7 +377,7 @@ var/bomb_set = FALSE /obj/structure/machinery/nuclearbomb/proc/disable() timing = FALSE - bomb_set = FALSE + GLOB.bomb_set = FALSE timeleft = initial(timeleft) explosion_time = null announce_to_players() @@ -401,6 +385,7 @@ var/bomb_set = FALSE /obj/structure/machinery/nuclearbomb/proc/explode() if(safety) timing = FALSE + update_minimap_icon() stop_processing() update_icon() return FALSE @@ -408,17 +393,239 @@ var/bomb_set = FALSE update_icon() safety = TRUE - EvacuationAuthority.trigger_self_destruct(list(z), src, FALSE, NUKE_EXPLOSION_GROUND_FINISHED, FALSE, end_round) + playsound(src, 'sound/machines/Alarm.ogg', 75, 0, 30) + world << pick('sound/theme/nuclear_detonation1.ogg','sound/theme/nuclear_detonation2.ogg') + + for(var/mob/current_mob as anything in GLOB.mob_list) + var/turf/current_turf = get_turf(current_mob) + if(current_turf?.z == z && current_mob.stat != DEAD) + shake_camera(current_mob, 110, 4) + + sleep(10 SECONDS) + + var/list/mob/alive_mobs = list() //Everyone who will be destroyed on the zlevel(s). + var/list/mob/dead_mobs = list() //Everyone that needs embryos cleared + for(var/mob/current_mob as anything in GLOB.mob_list) + var/turf/current_turf = get_turf(current_mob) + if(current_turf?.z == z) + if(current_mob.stat == DEAD) + dead_mobs |= current_mob + continue + alive_mobs |= current_mob + + for(var/mob/current_mob in alive_mobs) + if(istype(current_mob.loc, /obj/structure/closet/secure_closet/freezer/fridge)) + continue + current_mob.death(create_cause_data("nuclear explosion")) + + for(var/mob/living/current_mob in (alive_mobs + dead_mobs)) + if(istype(current_mob.loc, /obj/structure/closet/secure_closet/freezer/fridge)) + continue + for(var/obj/item/alien_embryo/embryo in current_mob) + qdel(embryo) - sleep(100) cell_explosion(loc, 500, 150, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, create_cause_data(initial(name))) qdel(src) return TRUE /obj/structure/machinery/nuclearbomb/Destroy() - if(timing != -1) - message_admins("\The [src] has been unexpectedly deleted at ([x],[y],[x]). [ADMIN_JMP(src)]") - log_game("\The [src] has been unexpectedly deleted at ([x],[y],[x]).") - bomb_set = FALSE + GLOB.bomb_set = FALSE SSminimaps.remove_marker(src) return ..() + +/obj/structure/machinery/nuclearbomb/tech + var/decryption_time = 10 MINUTES + var/decryption_end_time = null + var/decrypting = FALSE + + timeleft = 1 MINUTES + timer_announcements_flags = NUKE_DECRYPT_SHOW_TIMER_ALL + + var/list/linked_decryption_towers + +/obj/structure/machinery/nuclearbomb/tech/Initialize(mapload) + . = ..() + + linked_decryption_towers = list() + + return INITIALIZE_HINT_LATELOAD + +/obj/structure/machinery/nuclearbomb/tech/LateInitialize() + . = ..() + + for(var/obj/structure/machinery/telecomms/relay/preset/tower/mapcomms/possible_telecomm in GLOB.all_static_telecomms_towers) + if(is_ground_level(possible_telecomm.z)) + linked_decryption_towers += possible_telecomm + + RegisterSignal(SSdcs, COMSIG_GLOB_GROUNDSIDE_TELECOMM_TURNED_OFF, PROC_REF(connected_comm_shutdown)) + +/obj/structure/machinery/nuclearbomb/tech/ui_data(mob/user) + . = ..() + + .["decrypting"] = decrypting + .["decryption_time"] = duration2text_sec(decryption_time) + + .["decryption_complete"] = decryption_time ? FALSE : TRUE + +/obj/structure/machinery/nuclearbomb/tech/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + if(..()) + return + + switch(action) + if("toggleEncryption") + if(!ishuman(ui.user)) + return + + if(!allowed(ui.user)) + to_chat(ui.user, SPAN_INFO("Access denied!")) + return + + if(!anchored) + to_chat(ui.user, SPAN_INFO("Engage anchors first!")) + return + + var/area/current_area = get_area(src) + if(!current_area.can_build_special) + to_chat(ui.user, SPAN_INFO("You cannot deploy [src] here!")) + return + + if(is_ground_level(z)) + for(var/obj/structure/machinery/telecomms/relay/preset/tower/mapcomms/telecomm_unit in linked_decryption_towers) + if(!telecomm_unit.on) + to_chat(ui.user, SPAN_INFO("The groundside telecommunication relays must be activated!")) + return + + if(ui.user.action_busy) + return + + if(being_used) + return + + ui.user.visible_message(SPAN_WARNING("[ui.user] begins to [decrypting ? "stop the decryption process." : "start decrypting."]!"), SPAN_WARNING("You begin to [decrypting ? "stop the decryption process." : "start decrypting."].")) + being_used = TRUE + ui = SStgui.try_update_ui(ui.user, src, ui) + if(do_after(ui.user, 50, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) + decrypting = !decrypting + if(decrypting) + //add signal handlers + decryption_end_time = world.time + decryption_time + start_processing() + announce_to_players() + message_admins("[src]'s encryption process has been started by [key_name(ui.user, 1)] [ADMIN_JMP_USER(ui.user)]") + else + //remove signal handlers + decryption_end_time = null + announce_to_players() + message_admins("[src]'s encryption process has been deactivated by [key_name(ui.user, 1)] [ADMIN_JMP_USER(ui.user)]") + playsound(loc, 'sound/effects/thud.ogg', 100, 1) + being_used = FALSE + return TRUE + +/obj/structure/machinery/nuclearbomb/tech/process() + if(!decrypting) + return ..() + + decryption_time = decryption_end_time - world.time + + if(world.time > decryption_end_time) + decrypting = FALSE + decryption_time = 0 + announce_to_players(NUKE_DECRYPT_SHOW_TIMER_COMPLETE) + timer_announcements_flags &= ~NUKE_DECRYPT_SHOW_TIMER_COMPLETE + return PROCESS_KILL + + if(!timer_announcements_flags) + return + + if(timer_announcements_flags & NUKE_DECRYPT_SHOW_TIMER_HALF) + if(decryption_time <= initial(decryption_time) / 2 && decryption_time >= initial(decryption_time) / 2 - 30) + announce_to_players(NUKE_DECRYPT_SHOW_TIMER_HALF) + timer_announcements_flags &= ~NUKE_DECRYPT_SHOW_TIMER_HALF + return + if(timer_announcements_flags & NUKE_DECRYPT_SHOW_TIMER_MINUTE) + if(decryption_time <= 600 && decryption_time >= 570) + announce_to_players(NUKE_DECRYPT_SHOW_TIMER_MINUTE) + timer_announcements_flags &= ~NUKE_DECRYPT_SHOW_TIMER_MINUTE + return + +/obj/structure/machinery/nuclearbomb/tech/announce_to_players(timer_warning) + if(!decryption_time && (timer_warning != NUKE_DECRYPT_SHOW_TIMER_COMPLETE)) + return ..() + + var/list/humans_other = GLOB.human_mob_list + GLOB.dead_mob_list + var/list/humans_uscm = list() + for(var/mob/current_mob as anything in humans_other) + var/mob/living/carbon/human/current_human = current_mob + if(istype(current_human)) //if it's unconsious human or yautja, we remove them + if(current_human.stat != CONSCIOUS || isyautja(current_human)) + humans_other -= current_mob + continue + if(current_mob.faction == FACTION_MARINE || current_mob.faction == FACTION_SURVIVOR) + humans_uscm += current_mob + humans_other -= current_mob + + if(timer_warning) + if(timer_warning == NUKE_DECRYPT_SHOW_TIMER_COMPLETE) + announcement_helper("DECRYPTION COMPLETE", "[MAIN_AI_SYSTEM] Nuclear Tracker", humans_uscm, 'sound/misc/notice1.ogg') + announcement_helper("DECRYPTION COMPLETE", "HQ Intel Division", humans_other, 'sound/misc/notice1.ogg') + + yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!\n\nThe human purification device is able to be activated.")) + + var/datum/hive_status/hive + for(var/hivenumber in GLOB.hive_datum) + hive = GLOB.hive_datum[hivenumber] + if(!length(hive.totalXenos)) + return + xeno_announcement(SPAN_XENOANNOUNCE("We get a sense of impending doom... the hive killer is ready to be activated."), hive.hivenumber, XENO_GENERAL_ANNOUNCE) + return + + announcement_helper("DECRYPTION IN [round(decryption_time/10)] SECONDS.", "[MAIN_AI_SYSTEM] Nuclear Tracker", humans_uscm, 'sound/misc/notice1.ogg') + announcement_helper("DECRYPTION IN [round(decryption_time/10)] SECONDS.", "HQ Intel Division", humans_other, 'sound/misc/notice1.ogg') + + //preds part + var/time_left = duration2text_sec(round(rand(decryption_time - decryption_time / 10, decryption_time + decryption_time / 10))) + yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!\n\nYou have approximately [time_left] seconds to abandon the hunting grounds before the human purification device is able to be activated.")) + + //xenos part + var/warning = "We are almost out of time, STOP THEM." + if(timer_warning & NUKE_DECRYPT_SHOW_TIMER_HALF) + warning = "The Hive grows restless! it's halfway done..." + + var/datum/hive_status/hive + for(var/hivenumber in GLOB.hive_datum) + hive = GLOB.hive_datum[hivenumber] + if(!hive.totalXenos.len) + return + xeno_announcement(SPAN_XENOANNOUNCE(warning), hive.hivenumber, XENO_GENERAL_ANNOUNCE) + return + + var/datum/hive_status/hive + if(decrypting) + announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE ORDNANCE DECRYPTION STARTED.\n\nDECRYPTION IN [round(decryption_time/10)] SECONDS.", "[MAIN_AI_SYSTEM] Nuclear Tracker", humans_uscm, 'sound/misc/notice1.ogg') + announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE ORDNANCE DECRYPTION STARTED.\n\nDECRYPTION IN [round(decryption_time/10)] SECONDS.", "HQ Nuclear Tracker", humans_other, 'sound/misc/notice1.ogg') + var/time_left = duration2text_sec(round(rand(decryption_time - decryption_time / 10, decryption_time + decryption_time / 10))) + yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!
      A human purification device has been detected. You have approximately [time_left] before it finishes its initial phase.")) + for(var/hivenumber in GLOB.hive_datum) + hive = GLOB.hive_datum[hivenumber] + if(!length(hive.totalXenos)) + continue + xeno_announcement(SPAN_XENOANNOUNCE("The tallhosts have started the initial phase of a hive killer at [get_area_name(loc)]! Destroy their communications relays!"), hive.hivenumber, XENO_GENERAL_ANNOUNCE) + return + + announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE DECRYPTION HALTED.", "[MAIN_AI_SYSTEM] Nuclear Tracker", humans_uscm, 'sound/misc/notice1.ogg') + announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE DECRYPTION HALTED.", "HQ Intel Division", humans_other, 'sound/misc/notice1.ogg') + yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!
      The human purification device's signature has disappeared.")) + for(var/hivenumber in GLOB.hive_datum) + hive = GLOB.hive_datum[hivenumber] + if(!length(hive.totalXenos)) + continue + xeno_announcement(SPAN_XENOANNOUNCE("The hive killer's initial phase has been halted! Rejoice!"), hive.hivenumber, XENO_GENERAL_ANNOUNCE) + +/obj/structure/machinery/nuclearbomb/tech/proc/connected_comm_shutdown(obj/structure/machinery/telecomms/relay/preset/tower/telecomm_unit) + SIGNAL_HANDLER + + if(!decrypting) + return + + decrypting = FALSE + announce_to_players() diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index b21f73af76d6..a886b59f501f 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -296,7 +296,7 @@ Buildable meters /obj/item/pipe/Move() . = ..() if ((pipe_type in list (PIPE_SIMPLE_BENT, PIPE_SUPPLY_BENT, PIPE_SCRUBBERS_BENT, PIPE_HE_BENT, PIPE_INSULATED_BENT)) \ - && (src.dir in cardinal)) + && (src.dir in GLOB.cardinals)) setDir(src.dir|turn(src.dir, 90)) else if (pipe_type in list (PIPE_SIMPLE_STRAIGHT, PIPE_SUPPLY_STRAIGHT, PIPE_SCRUBBERS_STRAIGHT, PIPE_UNIVERSAL, PIPE_HE_STRAIGHT, PIPE_INSULATED_STRAIGHT, PIPE_MVALVE)) if(dir==2) @@ -620,8 +620,8 @@ Buildable meters playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) user.visible_message( \ - "[user] fastens the [src].", \ - SPAN_NOTICE("You have fastened the [src]."), \ + "[user] fastens [src].", \ + SPAN_NOTICE("You have fastened [src]."), \ "You hear ratchet.") qdel(src) // remove the pipe item diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index fc8815b0511f..e007ada79a0e 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -75,7 +75,7 @@ /obj/structure/machinery/pipedispenser/Topic(href, href_list) if(..()) return - if(unwrenched || !usr.canmove || usr.stat || usr.is_mob_restrained() || !in_range(loc, usr)) + if(unwrenched || usr.is_mob_incapacitated() || !in_range(loc, usr)) close_browser(usr, "pipedispenser") return usr.set_interaction(src) @@ -150,7 +150,7 @@ Nah //Allow you to drag-drop disposal pipes into it /obj/structure/machinery/pipedispenser/disposal/MouseDrop_T(obj/structure/disposalconstruct/pipe as obj, mob/usr as mob) - if(!usr.canmove || usr.stat || usr.is_mob_restrained()) + if(usr.is_mob_incapacitated()) return if (!istype(pipe) || get_dist(usr, src) > 1 || get_dist(src,pipe) > 1 ) @@ -192,7 +192,7 @@ Nah usr.set_interaction(src) src.add_fingerprint(usr) if(href_list["dmake"]) - if(unwrenched || !usr.canmove || usr.stat || usr.is_mob_restrained() || !in_range(loc, usr)) + if(unwrenched || usr.is_mob_incapacitated() || !in_range(loc, usr)) close_browser(usr, "pipedispenser") return if(!wait) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 7855f446c805..72e311c6d8ff 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -11,7 +11,7 @@ black_market_value = 35 var/obj/item/charging = null var/percent_charge_complete = 0 - var/list/allowed_devices = list(/obj/item/weapon/baton, /obj/item/cell, /obj/item/weapon/gun/energy, /obj/item/device/defibrillator, /obj/item/tool/portadialysis, /obj/item/clothing/suit/auto_cpr, /obj/item/smartgun_battery) + var/list/allowed_devices = list(/obj/item/weapon/baton, /obj/item/cell, /obj/item/weapon/gun/energy, /obj/item/device/defibrillator, /obj/item/tool/portadialysis, /obj/item/clothing/suit/auto_cpr, /obj/item/smartgun_battery, /obj/item/device/helmet_visor/night_vision) var/charge_amount = 1000 @@ -181,6 +181,21 @@ update_icon() return + if(istype(charging, /obj/item/device/helmet_visor/night_vision)) + var/obj/item/device/helmet_visor/night_vision/charging_night_vision_visor = charging + if(charging_night_vision_visor.power_cell) + if(!charging_night_vision_visor.power_cell.fully_charged()) + charging_night_vision_visor.power_cell.give(charge_amount) + percent_charge_complete = charging_night_vision_visor.power_cell.percent() + update_use_power(USE_POWER_ACTIVE) + update_icon() + return + + percent_charge_complete = 100 + update_use_power(USE_POWER_IDLE) + update_icon() + return + /* Disable defib recharging if(istype(charging, /obj/item/device/defibrillator)) var/obj/item/device/defibrillator/D = charging @@ -203,20 +218,14 @@ update_icon() /obj/structure/machinery/recharger/emp_act(severity) + . = ..() if(inoperable() || !anchored) - ..(severity) return -/* - if(istype(charging, /obj/item/weapon/gun/energy)) - var/obj/item/weapon/gun/energy/E = charging - if(E.power_supply) - E.power_supply.emp_act(severity) -*/ + if(istype(charging, /obj/item/weapon/baton)) var/obj/item/weapon/baton/B = charging if(B.bcell) B.bcell.charge = 0 - ..(severity) /obj/structure/machinery/recharger/update_icon() //we have an update_icon() in addition to the stuff in process to make it feel a tiny bit snappier. src.overlays = 0 diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 66f3a92cbdf2..e87bb56da489 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -1,8 +1,8 @@ /obj/structure/machinery/recharge_station - name = "robot recharge station" + name = "synthetic maintenance station" icon = 'icons/obj/objects.dmi' icon_state = "borgcharger0" - desc = "A recharge and repair station for robots and synthetics. Simply put the synthetic in need of repair in here and they will be fixed up in no time!" + desc = "A Synthetic Maintenance Station designed to recharge, repair and maintain various sizes of artificial people. Simply place the synthetic or android in need of repair in here and they will be fixed up in no time!" density = TRUE anchored = TRUE use_power = USE_POWER_IDLE @@ -14,8 +14,10 @@ var/charging_cap_active = 25000 // Active Cap - When cyborg is inside var/charging_cap_passive = 2500 // Passive Cap - Recharging internal capacitor when no cyborg is inside var/icon_update_tick = 0 // Used to update icon only once every 10 ticks + var/known_implants = list(/obj/item/implant/chem, /obj/item/implant/death_alarm, /obj/item/implant/loyalty, /obj/item/implant/tracking, /obj/item/implant/neurostim) can_buckle = TRUE + /obj/structure/machinery/recharge_station/Initialize(mapload, ...) . = ..() update_icon() @@ -107,13 +109,12 @@ return /obj/structure/machinery/recharge_station/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return if(occupant) occupant.emp_act(severity) go_out() - ..(severity) /obj/structure/machinery/recharge_station/update_icon() ..() @@ -142,36 +143,42 @@ /obj/structure/machinery/recharge_station/proc/process_occupant() if(src.occupant) var/doing_stuff = FALSE - if (isrobot(occupant)) - var/mob/living/silicon/robot/R = occupant - if(R.module) - R.module.respawn_consumable(R) - if(!R.cell) - return - if(!R.cell.fully_charged()) - var/diff = min(R.cell.maxcharge - R.cell.charge, 500) // 500 charge / tick is about 2% every 3 seconds - diff = min(diff, current_internal_charge) // No over-discharging - R.cell.give(diff) - current_internal_charge = max(current_internal_charge - diff, 0) - to_chat(occupant, "Recharging...") - doing_stuff = TRUE - else - update_use_power(USE_POWER_IDLE) - if (isrobot(occupant) || issynth(occupant)) + if (issynth(occupant)) + var/mob/living/carbon/human/humanoid_occupant = occupant //for special synth surgeries if(occupant.getBruteLoss() > 0 || occupant.getFireLoss() > 0 || occupant.getBrainLoss() > 0) occupant.heal_overall_damage(10, 10, TRUE) occupant.apply_damage(-10, BRAIN) current_internal_charge = max(current_internal_charge - 500, 0) - to_chat(occupant, "Repairing...") + to_chat(occupant, "Structural damage detected. Repairing...") doing_stuff = TRUE occupant.pain.recalculate_pain() if(!doing_stuff && occupant.blood_volume < initial(occupant.blood_volume)) occupant.blood_volume = min(occupant.blood_volume + 10, initial(occupant.blood_volume)) - to_chat(occupant, "Refreshing liquids...") + to_chat(occupant, "Fluid volume low. Refreshing liquids...") doing_stuff = TRUE + if(!doing_stuff) + for(var/obj/limb/current_limb in humanoid_occupant.limbs) + if(current_limb.implants.len) + doing_stuff = TRUE + to_chat(occupant, "Foreign material detected. Beginning removal process...") + for(var/obj/item/current_implant in current_limb.implants) + if(!is_type_in_list(current_implant,known_implants)) + sleep(REMOVE_OBJECT_MAX_DURATION) + current_limb.implants -= current_implant + humanoid_occupant.embedded_items -= current_implant + qdel(current_implant) + to_chat(occupant, "Foreign object removed.") + for(var/datum/internal_organ/current_organ in humanoid_occupant.internal_organs) + if(current_organ.robotic == ORGAN_ASSISTED||current_organ.robotic == ORGAN_ROBOT) //this time the machine can *only* fix robotic organs + if(current_organ.damage > 0) + to_chat(occupant, "Damaged internal component detected. Beginning repair process.") + doing_stuff = TRUE + sleep(FIX_ORGAN_MAX_DURATION) + current_organ.rejuvenate() + to_chat(occupant, "Internal component repaired.") if(!doing_stuff) - to_chat(occupant, "Maintenance complete! Have a nice day!") + to_chat(occupant, "Maintenance cycle completed. All systems nominal.") go_out() @@ -204,14 +211,10 @@ return move_mob_inside(target) /obj/structure/machinery/recharge_station/verb/move_mob_inside(mob/living/M) - if (!isrobot(M) && !issynth(M)) + if (!issynth(M)) return FALSE if (occupant) return FALSE - if (isrobot(M)) - var/mob/living/silicon/robot/R = M - if(QDELETED(R.cell)) - return FALSE M.stop_pulling() if(M && M.client) M.client.perspective = EYE_PERSPECTIVE @@ -232,18 +235,12 @@ if (usr.stat == 2) //Whoever had it so that a borg with a dead cell can't enter this thing should be shot. --NEO return - if (!isrobot(usr) && !issynth(usr)) + if (!issynth(usr)) to_chat(usr, SPAN_NOTICE(" Only non-organics may enter the recharge and repair station!")) return if (src.occupant) to_chat(usr, SPAN_NOTICE(" The cell is already occupied!")) return - if (isrobot(usr)) - var/mob/living/silicon/robot/R = usr - if(QDELETED(R.cell)) - to_chat(usr, SPAN_NOTICE("Without a powercell, you can't be recharged.")) - //Make sure they actually HAVE a cell, now that they can get in while powerless. --NEO - return move_mob_inside(usr) return @@ -253,7 +250,7 @@ var/obj/item/grab/G = W if(!ismob(G.grabbed_thing)) return - if(!issynth(G.grabbed_thing) && !isrobot(G.grabbed_thing)) + if(!issynth(G.grabbed_thing)) return if(occupant) diff --git a/code/game/machinery/scoreboard.dm b/code/game/machinery/scoreboard.dm index 9b8d6402ca96..8740bed6dcfb 100644 --- a/code/game/machinery/scoreboard.dm +++ b/code/game/machinery/scoreboard.dm @@ -68,7 +68,7 @@ active = 1 icon_state = "launcheract" - for(var/obj/structure/machinery/scoreboard/X in machines) + for(var/obj/structure/machinery/scoreboard/X in GLOB.machines) if(X.id == id) X.reset_scores() diff --git a/code/game/machinery/seed_extractor.dm b/code/game/machinery/seed_extractor.dm index e07b13f64f97..0b4574cc9fb4 100644 --- a/code/game/machinery/seed_extractor.dm +++ b/code/game/machinery/seed_extractor.dm @@ -14,10 +14,10 @@ var/datum/seed/new_seed_type if(istype(O, /obj/item/grown)) var/obj/item/grown/F = O - new_seed_type = seed_types[F.plantname] + new_seed_type = GLOB.seed_types[F.plantname] else var/obj/item/reagent_container/food/snacks/grown/F = O - new_seed_type = seed_types[F.plantname] + new_seed_type = GLOB.seed_types[F.plantname] if(new_seed_type) to_chat(user, SPAN_NOTICE("You extract some seeds from [O].")) diff --git a/code/game/machinery/sentry_holder.dm b/code/game/machinery/sentry_holder.dm index 61f87251282d..fe676e9103d2 100644 --- a/code/game/machinery/sentry_holder.dm +++ b/code/game/machinery/sentry_holder.dm @@ -10,13 +10,12 @@ idle_power_usage = 1000 power_channel = 1 use_power = USE_POWER_IDLE - machine_processing = 1 var/deployment_cooldown var/turret_path = /obj/structure/machinery/defenses/sentry/premade/deployable // Path of the turret used var/obj/structure/machinery/defenses/sentry/premade/deployable/deployed_turret var/ox = 0 var/oy = 0 - var/ind = FALSE + var/require_red_alert = FALSE /obj/structure/machinery/sentry_holder/Initialize() . = ..() @@ -36,34 +35,38 @@ . += "It's offline." /obj/structure/machinery/sentry_holder/attack_hand(mob/user) - if(deployed_turret) - if(deployment_cooldown > world.time) - to_chat(user, SPAN_WARNING("[src] is busy.")) - return //prevents spamming deployment/undeployment - if(deployed_turret.loc == src) //not deployed - if(stat & NOPOWER) - to_chat(user, SPAN_WARNING("[src] is non-functional.")) - else - to_chat(user, SPAN_NOTICE("You deploy [src].")) - deploy_sentry() - else - to_chat(user, SPAN_NOTICE("You retract [src].")) - undeploy_sentry() - else + if(!deployed_turret) to_chat(user, SPAN_WARNING("[src] is unresponsive.")) + return -/obj/structure/machinery/sentry_holder/process() - if(stat & NOPOWER) - if(deployed_turret) - undeploy_sentry() - ind = FALSE - else - icon_state = "sentry_system_destroyed" - else - update_use_power(USE_POWER_IDLE) - if(!ind) - deploy_sentry() - ind = TRUE + if(deployment_cooldown > world.time) + to_chat(user, SPAN_WARNING("[src] is busy.")) + return + + if(deployed_turret.loc == src) //not deployed + if(stat & NOPOWER) + to_chat(user, SPAN_WARNING("[src] is non-functional.")) + return + + if(require_red_alert && (seclevel2num(get_security_level()) < SEC_LEVEL_RED)) + to_chat(user, SPAN_WARNING("[src] can only be activated in emergencies.")) + return + + to_chat(user, SPAN_NOTICE("You deploy [src].")) + deploy_sentry() + return + + to_chat(user, SPAN_NOTICE("You retract [src].")) + undeploy_sentry() + return + +/obj/structure/machinery/sentry_holder/update_use_power(new_use_power) + ..() + + if(!(stat & NOPOWER)) + return + + undeploy_sentry() /obj/structure/machinery/sentry_holder/proc/deploy_sentry() if(!deployed_turret) @@ -111,3 +114,6 @@ desc = "A box that deploys a sentry turret for protection of the residents in the area." turret_path = /obj/structure/machinery/defenses/sentry/premade/deployable/colony +/obj/structure/machinery/sentry_holder/almayer + turret_path = /obj/structure/machinery/defenses/sentry/premade/deployable/almayer + require_red_alert = TRUE diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index aa51201ae18b..69b21964a4f4 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -40,12 +40,11 @@ /obj/structure/machinery/space_heater/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return if(cell) cell.emp_act(severity) - ..(severity) /obj/structure/machinery/space_heater/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/cell)) @@ -67,7 +66,7 @@ return else if(HAS_TRAIT(I, TRAIT_TOOL_SCREWDRIVER)) open = !open - user.visible_message(SPAN_NOTICE("[user] [open ? "opens" : "closes"] the hatch on the [src]."), SPAN_NOTICE("You [open ? "open" : "close"] the hatch on the [src].")) + user.visible_message(SPAN_NOTICE("[user] [open ? "opens" : "closes"] the hatch on [src]."), SPAN_NOTICE("You [open ? "open" : "close"] the hatch on [src].")) update_icon() if(!open && user.interactee == src) close_browser(user, "spaceheater") @@ -108,7 +107,7 @@ start_processing() else stop_processing() - user.visible_message(SPAN_NOTICE("[user] switches [on ? "on" : "off"] the [src]."),SPAN_NOTICE("You switch [on ? "on" : "off"] the [src].")) + user.visible_message(SPAN_NOTICE("[user] switches [on ? "on" : "off"] [src]."),SPAN_NOTICE("You switch [on ? "on" : "off"] [src].")) update_icon() return @@ -187,4 +186,3 @@ name = "radiator" desc = "It's a radiator. It heats the room through convection with hot water. This one has a red handle." icon_state = "radiator-r" - diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index 6c6d2bda8b07..547dbba68e4f 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -78,7 +78,7 @@ return 1 if(STATUS_DISPLAY_TRANSFER_SHUTTLE_TIME) //emergency shuttle timer message1 = "EVAC" - message2 = EvacuationAuthority.get_status_panel_eta() + message2 = SShijack.get_evac_eta() if(message2) if(length(message2) > CHARS_PER_LINE) message2 = "Error" update_display(message1, message2) @@ -146,7 +146,7 @@ maptext = new_text /obj/structure/machinery/status_display/proc/get_supply_shuttle_timer() - var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle + var/datum/shuttle/ferry/supply/shuttle = GLOB.supply_controller.shuttle if (!shuttle) return "Error" @@ -163,6 +163,15 @@ if(maptext) maptext = "" +/obj/structure/machinery/status_display/proc/set_sec_level_picture() + switch(GLOB.security_level) + if(SEC_LEVEL_GREEN) + set_picture("default") + if(SEC_LEVEL_BLUE) + set_picture("bluealert") + if(SEC_LEVEL_RED, SEC_LEVEL_DELTA) + set_picture("redalert") + /obj/structure/machinery/ai_status_display icon = 'icons/obj/structures/machinery/status_display.dmi' icon_state = "frame" @@ -179,11 +188,10 @@ var/emotion = "Neutral" /obj/structure/machinery/ai_status_display/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return set_picture("ai_bsod") - ..(severity) /obj/structure/machinery/ai_status_display/proc/update() if(mode==0) //Blank diff --git a/code/game/machinery/storm_siren.dm b/code/game/machinery/storm_siren.dm new file mode 100644 index 000000000000..335115715488 --- /dev/null +++ b/code/game/machinery/storm_siren.dm @@ -0,0 +1,26 @@ +/obj/structure/machinery/storm_siren + name = "storm siren" + desc = "A siren used to announce storm warnings for the colony." + icon = 'icons/obj/structures/machinery/loudspeaker.dmi' + icon_state = "loudspeaker" + density = FALSE + anchored = TRUE + unacidable = 1 + unslashable = 1 + use_power = USE_POWER_NONE + health = 0 + +/obj/structure/machinery/storm_siren/Initialize() + GLOB.weather_notify_objects += src + return ..() + +/obj/structure/machinery/storm_siren/Destroy() + GLOB.weather_notify_objects -= src + . = ..() + +/obj/structure/machinery/storm_siren/power_change() + return + +/obj/structure/machinery/storm_siren/proc/weather_warning() + playsound(loc, 'sound/effects/weather_warning_varadero.ogg', 60, 0) + visible_message(SPAN_DANGER("The storm siren blares: ATTENTION. ATTENTION. INCOMING TROPICAL STORM DETECTED. SEEK SHELTER IMMEDIATELY.")) diff --git a/code/game/machinery/supply_display.dm b/code/game/machinery/supply_display.dm index 26117474f0fe..7317ed6435f2 100644 --- a/code/game/machinery/supply_display.dm +++ b/code/game/machinery/supply_display.dm @@ -6,7 +6,7 @@ message1 = "SUPPLY" message2 = "" - var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle + var/datum/shuttle/ferry/supply/shuttle = GLOB.supply_controller.shuttle if (!shuttle) message2 = "Error" else if(shuttle.has_arrive_time()) diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index f8250fad271c..bf3ab569e9da 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -83,7 +83,7 @@ vmask, vmessage, obj/item/device/radio/radio, message, name, job, realname, vname, data, compression, list/level, freq, verbage = "says", - datum/language/speaking = null, volume = RADIO_VOLUME_QUIET) + datum/language/speaking = null, volume = RADIO_VOLUME_QUIET, listening_device = FALSE) /* ###### Prepare the radio connection ###### */ var/display_freq = freq @@ -150,8 +150,6 @@ var/list/heard_gibberish= list() // completely screwed over message (ie "F%! (O*# *#!<>&**%!") if(M) - if(isAI(M)) - volume = RADIO_VOLUME_CRITICAL if(ishuman(M)) var/mob/living/carbon/human/H = M if(skillcheck(H, SKILL_LEADERSHIP, SKILL_LEAD_EXPERT)) @@ -175,13 +173,16 @@ volume = RADIO_VOLUME_CRITICAL for (var/mob/R in receive) + var/is_ghost = istype(R, /mob/dead/observer) /* --- Loop through the receivers and categorize them --- */ if (R.client && !(R.client.prefs.toggles_chat & CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios. continue if(istype(R, /mob/new_player)) // we don't want new players to hear messages. rare but generates runtimes. continue // Ghosts hearing all radio chat don't want to hear syndicate intercepts, they're duplicates - if(data == 3 && istype(R, /mob/dead/observer) && R.client && (R.client.prefs.toggles_chat & CHAT_GHOSTRADIO)) + if(data == 3 && is_ghost && R.client && (R.client.prefs.toggles_chat & CHAT_GHOSTRADIO)) + continue + if(is_ghost && listening_device && !(R.client.prefs.toggles_chat & CHAT_LISTENINGBUG)) continue // --- Check for compression --- if(compression > 0) diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index cded8a1148c7..97c393e06556 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -62,7 +62,7 @@ stat &= ~BROKEN // the machine's not borked anymore! else to_chat(user, SPAN_WARNING("You need five coils of wire for this.")) - if(istype(P, /obj/item/tool/crowbar)) + if(HAS_TRAIT(P, TRAIT_TOOL_CROWBAR)) to_chat(user, "You begin prying out the circuit board other components...") playsound(src.loc, 'sound/items/Crowbar.ogg', 25, 1) if(do_after(user, 60 * user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) @@ -102,7 +102,7 @@ /obj/structure/machinery/telecomms/attack_hand(mob/user as mob) // You need a multitool to use this, or be silicon - if(!ishighersilicon(user)) + if(!isSilicon(user)) if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) to_chat(user, SPAN_WARNING("You stare at \the [src] cluelessly...")) return @@ -128,7 +128,7 @@ dat += "
      Prefabrication: [autolinkers.len ? "TRUE" : "FALSE"]" if(hide) dat += "
      Shadow Link: ACTIVE" - //Show additional options for certain machines. + //Show additional options for certain GLOB.machines. dat += Options_Menu() dat += "
      Linked Network Entities:
        " @@ -177,30 +177,12 @@ if(src.listening_level == TELECOMM_GROUND_Z) // equals the station src.listening_level = position.z return 1 - else if(is_admin_level(position.z)) + else if(should_block_game_interaction(position)) src.listening_level = TELECOMM_GROUND_Z return 1 return 0 -// Returns a multitool from a user depending on their mobtype. - -/obj/structure/machinery/telecomms/proc/get_multitool(mob/user as mob) - - var/obj/item/device/multitool/P = null - // Let's double check - var/obj/item/held_item = user.get_active_hand() - if(!ishighersilicon(user) && held_item && HAS_TRAIT(held_item, TRAIT_TOOL_MULTITOOL)) - P = user.get_active_hand() - else if(isAI(user)) - var/mob/living/silicon/ai/U = user - P = U.aiMulti - else if(isborg(user) && in_range(user, src)) - var/obj/item/borg_held_item = user.get_active_hand() - if(held_item && HAS_TRAIT(borg_held_item, TRAIT_TOOL_MULTITOOL)) - P = user.get_active_hand() - return P - -// Additional Options for certain machines. Use this when you want to add an option to a specific machine. +// Additional Options for certain GLOB.machines. Use this when you want to add an option to a specific machine. // Example of how to use below. /obj/structure/machinery/telecomms/proc/Options_Menu() @@ -229,7 +211,7 @@ /obj/structure/machinery/telecomms/relay/Options_Menu() var/dat = "" - if(is_admin_level(z)) + if(should_block_game_interaction(src)) dat += "
        Signal Locked to Station: [listening_level == TELECOMM_GROUND_Z ? "TRUE" : "FALSE"]" dat += "
        Broadcasting: [broadcasting ? "YES" : "NO"]" dat += "
        Receiving: [receiving ? "YES" : "NO"]" @@ -279,7 +261,7 @@ . = ..() if(.) return - if(!ishighersilicon(usr)) + if(!isSilicon(usr)) var/obj/item/held_item = usr.get_held_item() if (!held_item || !HAS_TRAIT(held_item, TRAIT_TOOL_MULTITOOL)) return diff --git a/code/game/machinery/telecomms/presets.dm b/code/game/machinery/telecomms/presets.dm index ce5e9a743bc5..c97a28932262 100644 --- a/code/game/machinery/telecomms/presets.dm +++ b/code/game/machinery/telecomms/presets.dm @@ -1,8 +1,5 @@ // ### Preset machines ### - -//var/list/freq_listening = list() USE THIS FOR NEW RELAY STUFF WHEN I GET THIS - APOPHIS - //Relay /obj/structure/machinery/telecomms/relay/preset network = "tcommsat" @@ -50,7 +47,7 @@ . = ..() if(z) - SSminimaps.add_marker(src, z, MINIMAP_FLAG_USCM, "supply") + SSminimaps.add_marker(src, z, MINIMAP_FLAG_ALL, "supply") // doesn't need power, instead uses health /obj/structure/machinery/telecomms/relay/preset/tower/inoperable(additional_flags) @@ -60,7 +57,7 @@ return TRUE return FALSE -/obj/structure/machinery/telecomms/relay/preset/tower/tcomms_startup() +/obj/structure/machinery/telecomms/relay/preset/tower/update_state() . = ..() if(on) playsound(src, 'sound/machines/tcomms_on.ogg', vol = 80, vary = FALSE, sound_range = 16, falloff = 0.5) @@ -76,7 +73,7 @@ if(!on) msg_admin_niche("Portable communication relay shut down for Z-Level [src.z] [ADMIN_JMP(src)]") -/obj/structure/machinery/telecomms/relay/preset/tower/bullet_act(obj/item/projectile/P) +/obj/structure/machinery/telecomms/relay/preset/tower/bullet_act(obj/projectile/P) ..() if(istype(P.ammo, /datum/ammo/xeno/boiler_gas)) update_health(50) @@ -94,7 +91,7 @@ return // Leave the poor thing alone health -= damage - health = Clamp(health, 0, initial(health)) + health = clamp(health, 0, initial(health)) if(health <= 0) toggled = FALSE // requires flipping on again once repaired @@ -150,7 +147,7 @@ else return ..() /obj/structure/machinery/telecomms/relay/preset/tower/attack_hand(mob/user) - if(ishighersilicon(user)) + if(isSilicon(user)) return ..() if(on) to_chat(user, SPAN_WARNING("\The [src.name] blinks and beeps incomprehensibly as it operates, better not touch this...")) @@ -212,12 +209,35 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers) freq_listening = list(COLONY_FREQ) var/toggle_cooldown = 0 + /// Tower has been taken over by xenos, is not usable + var/corrupted = FALSE + + /// Held image for the current overlay on the tower from xeno corruption + var/image/corruption_image + + /// Holds the delay for when a cluster can recorrupt the comms tower after a pylon has been destroyed + COOLDOWN_DECLARE(corruption_delay) + +/obj/structure/machinery/telecomms/relay/preset/tower/mapcomms/Initialize() + . = ..() + + RegisterSignal(src, COMSIG_ATOM_TURF_CHANGE, PROC_REF(register_with_turf)) + register_with_turf() + +/obj/structure/machinery/telecomms/relay/preset/tower/mapcomms/get_examine_text(mob/user) + . = ..() + if(isxeno(user) && !COOLDOWN_FINISHED(src, corruption_delay)) + . += SPAN_XENO("Corruption cooldown: [(COOLDOWN_TIMELEFT(src, corruption_delay) / (1 SECONDS))] seconds.") + /obj/structure/machinery/telecomms/relay/preset/tower/mapcomms/attack_hand(mob/user) if(user.action_busy) return if(toggle_cooldown > world.time) //cooldown only to prevent spam toggling to_chat(user, SPAN_WARNING("\The [src]'s processors are still cooling! Wait before trying to flip the switch again.")) return + if(corrupted) + to_chat(user, SPAN_WARNING("[src] is entangled in resin. Impossible to interact with.")) + return var/current_state = on if(!do_after(user, 20, INTERRUPT_NO_NEEDHAND|BEHAVIOR_IMMOBILE, BUSY_ICON_FRIENDLY, src)) return @@ -282,6 +302,92 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers) else update_icon() +/// Handles xenos corrupting the tower when weeds touch the turf it is located on +/obj/structure/machinery/telecomms/relay/preset/tower/mapcomms/proc/handle_xeno_acquisition(turf/weeded_turf) + SIGNAL_HANDLER + + if(corrupted) + return + + if(!weeded_turf.weeds) + return + + if(weeded_turf.weeds.weed_strength < WEED_LEVEL_HIVE) + return + + if(!weeded_turf.weeds.parent) + return + + if(!istype(weeded_turf.weeds.parent, /obj/effect/alien/weeds/node/pylon/cluster)) + return + + if(SSticker.mode.is_in_endgame) + return + + if(ROUND_TIME < XENO_COMM_ACQUISITION_TIME) + addtimer(CALLBACK(src, PROC_REF(handle_xeno_acquisition), weeded_turf), (XENO_COMM_ACQUISITION_TIME - ROUND_TIME)) + return + + if(!COOLDOWN_FINISHED(src, corruption_delay)) + addtimer(CALLBACK(src, PROC_REF(handle_xeno_acquisition), weeded_turf), (COOLDOWN_TIMELEFT(src, corruption_delay))) + return + + var/obj/effect/alien/weeds/node/pylon/cluster/parent_node = weeded_turf.weeds.parent + + var/obj/effect/alien/resin/special/cluster/cluster_parent = parent_node.resin_parent + + var/list/held_children_weeds = parent_node.children + var/cluster_loc = cluster_parent.loc + var/linked_hive = cluster_parent.linked_hive + + parent_node.children = list() + + qdel(cluster_parent) + + var/obj/effect/alien/resin/special/pylon/endgame/new_pylon = new(cluster_loc, linked_hive) + new_pylon.node.children = held_children_weeds + + for(var/obj/effect/alien/weeds/weed in new_pylon.node.children) + weed.parent = new_pylon.node + weed.spread_on_semiweedable = TRUE + weed.weed_expand() + + RegisterSignal(new_pylon, COMSIG_PARENT_QDELETING, PROC_REF(uncorrupt)) + + corrupted = TRUE + + corruption_image = image(icon, icon_state = "resin_growing") + + flick_overlay(src, corruption_image, (2 SECONDS)) + addtimer(CALLBACK(src, PROC_REF(switch_to_idle_corruption)), (2 SECONDS)) + + new_pylon.comms_relay_connection() + +/// Handles removing corruption effects from the comms relay +/obj/structure/machinery/telecomms/relay/preset/tower/mapcomms/proc/uncorrupt(datum/deleting_datum) + SIGNAL_HANDLER + + corrupted = FALSE + + overlays -= corruption_image + + COOLDOWN_START(src, corruption_delay, XENO_PYLON_DESTRUCTION_DELAY) + +/// Handles moving the overlay from growing to idle +/obj/structure/machinery/telecomms/relay/preset/tower/mapcomms/proc/switch_to_idle_corruption() + if(!corrupted) + return + + corruption_image = image(icon, icon_state = "resin_idle") + + overlays += corruption_image + +/// Handles re-registering signals on new turfs if changed +/obj/structure/machinery/telecomms/relay/preset/tower/mapcomms/proc/register_with_turf() + SIGNAL_HANDLER + + RegisterSignal(get_turf(src), COMSIG_WEEDNODE_GROWTH, PROC_REF(handle_xeno_acquisition)) + /obj/structure/machinery/telecomms/relay/preset/telecomms id = "Telecomms Relay" autolinkers = list("relay") @@ -328,7 +434,7 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers) id = "Receiver B" network = "tcommsat" autolinkers = list("receiverB") // link to relay - freq_listening = list(COMM_FREQ, ENG_FREQ, SEC_FREQ, MED_FREQ, REQ_FREQ, SENTRY_FREQ, WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, JTAC_FREQ, INTEL_FREQ, WY_FREQ, HC_FREQ) + freq_listening = list(COMM_FREQ, ENG_FREQ, SEC_FREQ, MED_FREQ, REQ_FREQ, SENTRY_FREQ, WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, JTAC_FREQ, INTEL_FREQ, WY_FREQ, HC_FREQ, PVST_FREQ, SOF_FREQ) //Common and other radio frequencies for people to freely use /obj/structure/machinery/telecomms/receiver/preset/Initialize(mapload, ...) @@ -340,8 +446,7 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers) id = "CentComm Receiver" network = "tcommsat" autolinkers = list("receiverCent") - freq_listening = list(WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, HC_FREQ, SOF_FREQ) - + freq_listening = list(WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, HC_FREQ, PVST_FREQ, SOF_FREQ, CBRN_FREQ) //Buses @@ -360,7 +465,7 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers) /obj/structure/machinery/telecomms/bus/preset_three id = "Bus 3" network = "tcommsat" - freq_listening = list(SEC_FREQ, COMM_FREQ, WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, JTAC_FREQ, INTEL_FREQ, WY_FREQ, HC_FREQ, SOF_FREQ) + freq_listening = list(SEC_FREQ, COMM_FREQ, WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, JTAC_FREQ, INTEL_FREQ, WY_FREQ, HC_FREQ, PVST_FREQ, SOF_FREQ, CBRN_FREQ) autolinkers = list("processor3", "security", "command", "JTAC") /obj/structure/machinery/telecomms/bus/preset_four @@ -376,7 +481,7 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers) /obj/structure/machinery/telecomms/bus/preset_cent id = "CentComm Bus" network = "tcommsat" - freq_listening = list(WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, HC_FREQ, SOF_FREQ) + freq_listening = list(WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, HC_FREQ, PVST_FREQ, SOF_FREQ, CBRN_FREQ) autolinkers = list("processorCent", "centcomm") //Processors @@ -441,7 +546,7 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers) /obj/structure/machinery/telecomms/server/presets/command id = "Command Server" - freq_listening = list(COMM_FREQ, WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, JTAC_FREQ, INTEL_FREQ, WY_FREQ, HC_FREQ, SOF_FREQ) + freq_listening = list(COMM_FREQ, WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, JTAC_FREQ, INTEL_FREQ, WY_FREQ, HC_FREQ, PVST_FREQ, SOF_FREQ, CBRN_FREQ) autolinkers = list("command") /obj/structure/machinery/telecomms/server/presets/engineering @@ -456,10 +561,9 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers) /obj/structure/machinery/telecomms/server/presets/centcomm id = "CentComm Server" - freq_listening = list(WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, HC_FREQ, SOF_FREQ) + freq_listening = list(WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, HC_FREQ, PVST_FREQ, SOF_FREQ, CBRN_FREQ) autolinkers = list("centcomm") - //Broadcasters //--PRESET LEFT--// diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index 324a358d041f..8b8b12dfd170 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -71,6 +71,9 @@ GLOBAL_LIST_EMPTY_TYPED(telecomms_list, /obj/structure/machinery/telecomms) // When effectively shut down /obj/structure/machinery/telecomms/proc/tcomms_shutdown() on = FALSE + + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_GROUNDSIDE_TELECOMM_TURNED_OFF) + if(tcomms_machine) SSradio.remove_tcomm_machine(src) @@ -90,13 +93,13 @@ GLOBAL_LIST_EMPTY_TYPED(telecomms_list, /obj/structure/machinery/telecomms) update_state() /obj/structure/machinery/telecomms/emp_act(severity) + . = ..() if(prob(100/severity)) if(!(stat & EMPED)) stat |= EMPED var/duration = (300 * 10)/severity spawn(rand(duration - 20, duration + 20)) // Takes a long time for the machines to reboot. stat &= ~EMPED - ..() /* The receiver idles and receives messages from subspace-compatible radio equipment; diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 8ea00ce4061d..8b6622121b86 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -98,7 +98,7 @@ var/turf/T = get_turf(R) if (!T) continue - if(is_admin_level(T.z)) + if(should_block_game_interaction(T)) continue var/tmpname = T.loc.name if(areaindex[tmpname]) @@ -118,7 +118,7 @@ continue var/turf/T = get_turf(M) if(T) continue - if(is_admin_level(T.z)) continue + if(should_block_game_interaction(T)) continue var/tmpname = M.real_name if(areaindex[tmpname]) tmpname = "[tmpname] ([++areaindex[tmpname]])" diff --git a/code/game/machinery/vending/cm_vending.dm b/code/game/machinery/vending/cm_vending.dm index 50abb701145e..2ba1ac089826 100644 --- a/code/game/machinery/vending/cm_vending.dm +++ b/code/game/machinery/vending/cm_vending.dm @@ -37,8 +37,14 @@ var/vend_delay = 0 //delaying vending of an item (for drinks machines animation, for example). Make sure to synchronize this with animation duration var/vend_sound //use with caution. Potential spam + /// X Offset to vend to var/vend_x_offset = 0 + /// Y Offset to vend to var/vend_y_offset = 0 + /// Vending direction from adjacent users, if not using vend_x_offset or vend_y_offset + var/vend_dir + /// Direction to adjacent user from which we're allowed to do offset vending + var/list/vend_dir_whitelist var/list/listed_products = list() @@ -78,7 +84,7 @@ IN_USE used for vending/denying if(stat & NOPOWER || stat & TIPPED_OVER) //tipping off without breaking uses "_off" sprite overlays += image(icon, "[icon_state]_off") if(stat & MAINT) //if we require maintenance, then it is completely "_broken" - icon_state = "[initial(icon_state)]_broken" + overlays += image(icon, "[initial(icon_state)]_broken") if(stat & IN_REPAIR) //if someone started repairs, they unscrewed "_panel" overlays += image(icon, "[icon_state]_panel") @@ -125,11 +131,20 @@ GLOBAL_LIST_EMPTY(vending_products) GLOB.vending_products[typepath] = 1 //get which turf the vendor will dispense its products on. -/obj/structure/machinery/cm_vending/proc/get_appropriate_vend_turf() - var/turf/T = loc +/obj/structure/machinery/cm_vending/proc/get_appropriate_vend_turf(mob/living/carbon/human/user) + var/turf/turf = loc if(vend_x_offset != 0 || vend_y_offset != 0) //this check should be more less expensive than using locate to locate your own tile every vending. - T = locate(x + vend_x_offset, y + vend_y_offset, z) - return T + turf = locate(x + vend_x_offset, y + vend_y_offset, z) + return turf + if(vend_dir) + if(vend_dir_whitelist) + var/user_dir = get_dir(loc, user) + if(!(user_dir in vend_dir_whitelist)) + return get_turf(user) + var/turf/relative_turf = get_step(user, vend_dir) + if(relative_turf) + return relative_turf + return turf /obj/structure/machinery/cm_vending/get_examine_text(mob/living/carbon/human/user) . = ..() @@ -245,7 +260,7 @@ GLOBAL_LIST_EMPTY(vending_products) return //Machete holsters handling else if(istype(item_to_stock, /obj/item/storage/large_holster/machete)) - var/obj/item/weapon/claymore/mercsword/machete/mac = locate(/obj/item/weapon/claymore/mercsword/machete) in item_to_stock + var/obj/item/weapon/sword/machete/mac = locate(/obj/item/weapon/sword/machete) in item_to_stock if(!mac) if(user) to_chat(user, SPAN_WARNING("\The [item_to_stock] is empty.")) @@ -425,10 +440,68 @@ GLOBAL_LIST_EMPTY(vending_products) user.set_interaction(src) tgui_interact(user) +/// Handles redeeming coin tokens. +/obj/structure/machinery/cm_vending/proc/redeem_token(obj/item/coin/marine/token, mob/user) + var/reward_typepath + switch(token.token_type) + if(VEND_TOKEN_VOID) + to_chat(user, SPAN_WARNING("ERROR: TOKEN NOT RECOGNISED.")) + return FALSE + if(VEND_TOKEN_SPEC) + reward_typepath = /obj/item/spec_kit/rifleman + else + to_chat(user, SPAN_WARNING("ERROR: INCORRECT TOKEN.")) + return FALSE + + if(reward_typepath && user.drop_inv_item_to_loc(token, src)) + to_chat(user, SPAN_NOTICE("You insert \the [token] into \the [src].")) + var/obj/new_item = new reward_typepath(get_turf(src)) + user.put_in_any_hand_if_possible(new_item) + return TRUE + return FALSE + + //------------TGUI PROCS--------------- /obj/structure/machinery/cm_vending/ui_data(mob/user) - return vendor_user_ui_data(src, user) + if(vend_flags & VEND_LIMITED_INVENTORY) + return vendor_inventory_ui_data(user) + + . = list() + var/list/ui_listed_products = get_listed_products(user) + // list format + // ( + // name: str + // cost + // item reference + // allowed to buy flag + // item priority (mandatory/recommended/regular) + // ) + + var/list/stock_values = list() + + var/mob/living/carbon/human/marine = user + var/points = 0 + + if(instanced_vendor_points) + points = available_points_to_display + else + if(use_snowflake_points) + points = marine.marine_snowflake_points + else if(use_points) + points = marine.marine_points + + for (var/i in 1 to length(ui_listed_products)) + var/list/myprod = ui_listed_products[i] //we take one list from listed_products + var/prod_available = FALSE + var/p_cost = myprod[2] + var/category = myprod[4] + if(points >= p_cost && (!category || ((category in marine.marine_buyable_categories) && (marine.marine_buyable_categories[category])))) + prod_available = TRUE + stock_values += list(prod_available) + + .["stock_listing"] = stock_values + .["current_m_points"] = points /obj/structure/machinery/cm_vending/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) . = ..() @@ -472,17 +545,17 @@ GLOBAL_LIST_EMPTY(vending_products) to_chat(user, SPAN_WARNING("Only specialists can take specialist sets.")) vend_fail() return FALSE - else if(!user.skills || user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_ALL) + else if(!user.skills || user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_TRAINED) to_chat(user, SPAN_WARNING("You already have a specialization.")) vend_fail() return FALSE var/p_name = itemspec[1] - if(!available_specialist_sets.Find(p_name)) + if(!GLOB.available_specialist_sets.Find(p_name)) to_chat(user, SPAN_WARNING("That set is already taken.")) vend_fail() return FALSE var/obj/item/card/id/ID = user.wear_id - if(!istype(ID) || ID.registered_ref != WEAKREF(usr)) + if(!istype(ID) || !ID.check_biometrics(user)) to_chat(user, SPAN_WARNING("You must be wearing your [SPAN_INFO("dog tags")] to select a specialization!")) return FALSE var/specialist_assignment @@ -503,19 +576,19 @@ GLOBAL_LIST_EMPTY(vending_products) user.skills.set_skill(SKILL_SPEC_WEAPONS, SKILL_SPEC_PYRO) specialist_assignment = "Pyro" else - to_chat(user, SPAN_WARNING("Something bad occured with [src], tell a Dev.")) + to_chat(user, SPAN_WARNING("Something bad occurred with [src], tell a Dev.")) vend_fail() return FALSE ID.set_assignment((user.assigned_squad ? (user.assigned_squad.name + " ") : "") + JOB_SQUAD_SPECIALIST + " ([specialist_assignment])") GLOB.data_core.manifest_modify(user.real_name, WEAKREF(user), ID.assignment) - available_specialist_sets -= p_name + GLOB.available_specialist_sets -= p_name else if(vendor_role.Find(JOB_SYNTH)) if(user.job != JOB_SYNTH) to_chat(user, SPAN_WARNING("Only USCM Synthetics may vend experimental tool tokens.")) vend_fail() return FALSE - if(!handle_vend(src, itemspec, user)) + if(!handle_vend(itemspec, user)) to_chat(user, SPAN_WARNING("You can't buy things from this category anymore.")) vend_fail() return FALSE @@ -533,7 +606,7 @@ GLOBAL_LIST_EMPTY(vending_products) vend_fail() return TRUE // one left and the player spam click during a lagspike. - vendor_successful_vend(src, itemspec, user) + vendor_successful_vend(itemspec, user) return TRUE add_fingerprint(user) @@ -686,28 +759,35 @@ GLOBAL_LIST_EMPTY(vending_products) hack_access(user) return TRUE + ///If we want to redeem a token + else if(istype(W, /obj/item/coin/marine)) + if(!can_access_to_vend(user, ignore_hack = TRUE)) + return FALSE + . = redeem_token(W, user) + return + ..() /obj/structure/machinery/cm_vending/proc/get_listed_products(mob/user) return listed_products -/obj/structure/machinery/cm_vending/proc/can_access_to_vend(mob/user, display=TRUE) - if(!hacked) +/obj/structure/machinery/cm_vending/proc/can_access_to_vend(mob/user, display = TRUE, ignore_hack = FALSE) + if(!hacked || ignore_hack) if(!allowed(user)) if(display) to_chat(user, SPAN_WARNING("Access denied.")) vend_fail() return FALSE - var/mob/living/carbon/human/H = user - var/obj/item/card/id/I = H.wear_id - if(!istype(I)) + var/mob/living/carbon/human/human_user = user + var/obj/item/card/id/idcard = human_user.wear_id + if(!istype(idcard)) if(display) to_chat(user, SPAN_WARNING("Access denied. No ID card detected")) vend_fail() return FALSE - if(I.registered_name != user.real_name) + if(!idcard.check_biometrics(human_user)) if(display) to_chat(user, SPAN_WARNING("Wrong ID card owner detected.")) vend_fail() @@ -764,7 +844,7 @@ GLOBAL_LIST_EMPTY(vending_products) /obj/structure/machinery/cm_vending/gear/ui_static_data(mob/user) . = ..(user) .["vendor_type"] = "gear" - .["displayed_categories"] = vendor_user_inventory_list(src, user) + .["displayed_categories"] = vendor_user_inventory_list(user) //------------CLOTHING VENDORS--------------- //clothing vendors automatically put item on user. QoL at it's finest. @@ -774,14 +854,14 @@ GLOBAL_LIST_EMPTY(vending_products) desc = "An automated closet hooked up to a colossal storage of standard-issue uniform and armor." icon_state = "clothing" use_points = TRUE + show_points = TRUE vendor_theme = VENDOR_THEME_USCM - show_points = FALSE vend_flags = VEND_CLUTTER_PROTECTION | VEND_UNIFORM_RANKS | VEND_UNIFORM_AUTOEQUIP | VEND_CATEGORY_CHECK /obj/structure/machinery/cm_vending/clothing/ui_static_data(mob/user) . = ..(user) .["vendor_type"] = "clothing" - .["displayed_categories"] = vendor_user_inventory_list(src, user) + .["displayed_categories"] = vendor_user_inventory_list(user) //------------SORTED VENDORS--------------- //22.06.2019 Modified ex-"marine_selector" system that doesn't use points by Jeser. In theory, should replace all vendors. @@ -795,8 +875,11 @@ GLOBAL_LIST_EMPTY(vending_products) vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND show_points = FALSE - //this here is made to provide ability to restock vendors with different subtypes of same object, like handmade and manually filled ammo boxes. + ///this here is made to provide ability to restock vendors with different subtypes of same object, like handmade and manually filled ammo boxes. var/list/corresponding_types_list + ///If using [VEND_STOCK_DYNAMIC], assoc list of product entry to list of (product multiplier, awarded objects) - as seen in [/obj/structure/machinery/cm_vending/sorted/proc/populate_product_list] + ///This allows us to backtrack and refill the stocks when new players latejoin + var/list/list/dynamic_stock_multipliers /obj/structure/machinery/cm_vending/sorted/Initialize() . = ..() @@ -809,14 +892,44 @@ GLOBAL_LIST_EMPTY(vending_products) GLOB.cm_vending_vendors -= src return ..() -//this proc, well, populates product list based on roundstart amount of players +///this proc, well, populates product list based on roundstart amount of players /obj/structure/machinery/cm_vending/sorted/proc/populate_product_list_and_boxes(scale) - populate_product_list(scale) + if(vend_flags & VEND_STOCK_DYNAMIC) + populate_product_list(1.0) + dynamic_stock_multipliers = list() + for(var/list/vendspec in listed_products) + var/multiplier = vendspec[2] + if(multiplier > 0) + var/awarded = round(vendspec[2] * scale) // Starting amount + //Record the multiplier and how many have actually been given out + dynamic_stock_multipliers[vendspec] = list(vendspec[2], awarded) + vendspec[2] = awarded // Override starting amount + else + populate_product_list(scale) + if(vend_flags & VEND_LOAD_AMMO_BOXES) populate_ammo_boxes() return -//this proc, well, populates product list based on roundstart amount of players +///Updates the vendor stock when the [/datum/game_mode/var/marine_tally] has changed and we're using [VEND_STOCK_DYNAMIC] +///Assumes the scale can only increase!!! Don't take their items away! +/obj/structure/machinery/cm_vending/sorted/proc/update_dynamic_stock(new_scale) + if(!(vend_flags & VEND_STOCK_DYNAMIC)) + return + for(var/list/vendspec in dynamic_stock_multipliers) + var/list/metadata = dynamic_stock_multipliers[vendspec] + var/multiplier = metadata[1] // How much do we multiply scales by + var/previous_max_amount = metadata[2] // How many we already handed out at old scale + var/projected_max_amount = round(new_scale * multiplier) // How much we would have had total now in total + var/amount_to_add = round(projected_max_amount - previous_max_amount) // Rounding just in case + if(amount_to_add > 0) + metadata[2] += amount_to_add + vendspec[2] += amount_to_add + update_derived_ammo_and_boxes_on_add(vendspec) + +///this proc, well, populates product list based on roundstart amount of players +///do not rely on scale here if you use VEND_STOCK_DYNAMIC because it's already taken into account +///this is here for historical reasons and should ONLY be called by populate_product_list_and_boxes if you want dynamic stocks and ammoboxes to work /obj/structure/machinery/cm_vending/sorted/proc/populate_product_list(scale) return @@ -840,14 +953,14 @@ GLOBAL_LIST_EMPTY(vending_products) /obj/structure/machinery/cm_vending/sorted/ui_static_data(mob/user) . = ..(user) .["vendor_type"] = "sorted" - .["displayed_categories"] = vendor_user_inventory_list(src, user, null, 4) + .["displayed_categories"] = vendor_user_inventory_list(user, null, 4) /obj/structure/machinery/cm_vending/sorted/MouseDrop_T(atom/movable/A, mob/user) if(inoperable()) return - if(user.stat || user.is_mob_restrained() || user.lying) + if(user.stat || user.is_mob_restrained()) return if(get_dist(user, src) > 1 || get_dist(src, A) > 1) @@ -919,7 +1032,7 @@ GLOBAL_LIST_EMPTY(vending_products) /obj/structure/machinery/cm_vending/own_points/ui_static_data(mob/user) . = ..(user) .["vendor_type"] = "gear" - .["displayed_categories"] = vendor_user_inventory_list(src, user) + .["displayed_categories"] = vendor_user_inventory_list(user) //------------ESSENTIALS SETS AND RANDOM GEAR SPAWNER--------------- @@ -1045,7 +1158,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_corresponding_types_list, list( //---helper procs -/proc/vendor_user_inventory_list(vendor, mob/user, cost_index=2, priority_index=5) +/obj/structure/machinery/cm_vending/proc/vendor_user_inventory_list(mob/user, cost_index=2, priority_index=5) . = list() // default list format // ( @@ -1055,8 +1168,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_corresponding_types_list, list( // allowed to buy flag // item priority (mandatory/recommended/regular) // ) - var/obj/structure/machinery/cm_vending/vending_machine = vendor - var/list/ui_listed_products = vending_machine.get_listed_products(user) + var/list/ui_listed_products = get_listed_products(user) for (var/i in 1 to length(ui_listed_products)) var/list/myprod = ui_listed_products[i] //we take one list from listed_products @@ -1098,10 +1210,9 @@ GLOBAL_LIST_INIT(cm_vending_gear_corresponding_types_list, list( var/last_category = .[last_index] last_category["items"] += list(display_item) -/proc/vendor_inventory_ui_data(vendor, mob/user) +/obj/structure/machinery/cm_vending/proc/vendor_inventory_ui_data(mob/user) . = list() - var/obj/structure/machinery/cm_vending/vending_machine = vendor - var/list/ui_listed_products = vending_machine.get_listed_products(user) + var/list/ui_listed_products = get_listed_products(user) var/list/ui_categories = list() for (var/i in 1 to length(ui_listed_products)) @@ -1110,91 +1221,52 @@ GLOBAL_LIST_INIT(cm_vending_gear_corresponding_types_list, list( ui_categories += list(p_amount) .["stock_listing"] = ui_categories -/proc/vendor_user_ui_data(obj/structure/machinery/cm_vending/vending_machine, mob/user) - if(vending_machine.vend_flags & VEND_LIMITED_INVENTORY) - return vendor_inventory_ui_data(vending_machine, user) - - . = list() - var/list/ui_listed_products = vending_machine.get_listed_products(user) - // list format - // ( - // name: str - // cost - // item reference - // allowed to buy flag - // item priority (mandatory/recommended/regular) - // ) - - var/list/stock_values = list() - - var/mob/living/carbon/human/marine = user - var/points = 0 - - if(vending_machine.instanced_vendor_points) - points = vending_machine.available_points_to_display - else - if(vending_machine.use_snowflake_points) - points = marine.marine_snowflake_points - else if(vending_machine.use_points) - points = marine.marine_points - - for (var/i in 1 to length(ui_listed_products)) - var/list/myprod = ui_listed_products[i] //we take one list from listed_products - var/prod_available = FALSE - var/p_cost = myprod[2] - var/category = myprod[4] - if(points >= p_cost && (!category || ((category in marine.marine_buyable_categories) && (marine.marine_buyable_categories[category])))) - prod_available = TRUE - stock_values += list(prod_available) - - .["stock_listing"] = stock_values - .["current_m_points"] = points - -/proc/vendor_successful_vend(obj/structure/machinery/cm_vending/vendor, list/itemspec, mob/living/carbon/human/user) - if(vendor.stat & IN_USE) +/obj/structure/machinery/cm_vending/proc/vendor_successful_vend(list/itemspec, mob/living/carbon/human/user) + if(stat & IN_USE) return - vendor.stat |= IN_USE + stat |= IN_USE - var/vend_flags = vendor.vend_flags - var/turf/target_turf = vendor.get_appropriate_vend_turf(user) + var/turf/target_turf = get_appropriate_vend_turf(user) if(LAZYLEN(itemspec)) //making sure it's not empty - if(vendor.vend_delay) - vendor.overlays.Cut() - vendor.icon_state = "[initial(vendor.icon_state)]_vend" - if(vendor.vend_sound) - playsound(vendor.loc, vendor.vend_sound, 25, 1, 2) //heard only near vendor - sleep(vendor.vend_delay) + if(vend_delay) + overlays.Cut() + icon_state = "[initial(icon_state)]_vend" + if(vend_sound) + playsound(loc, vend_sound, 25, 1, 2) //heard only near vendor + sleep(vend_delay) var/prod_type = itemspec[3] if(islist(prod_type)) for(var/each_type in prod_type) - vendor_successful_vend_one(vendor, each_type, user, target_turf, itemspec[4] == MARINE_CAN_BUY_UNIFORM) + vendor_successful_vend_one(each_type, user, target_turf, itemspec[4] == MARINE_CAN_BUY_UNIFORM) + SEND_SIGNAL(src, COMSIG_VENDOR_SUCCESSFUL_VEND, src, itemspec, user) else - vendor_successful_vend_one(vendor, prod_type, user, target_turf, itemspec[4] == MARINE_CAN_BUY_UNIFORM) + vendor_successful_vend_one(prod_type, user, target_turf, itemspec[4] == MARINE_CAN_BUY_UNIFORM) + SEND_SIGNAL(src, COMSIG_VENDOR_SUCCESSFUL_VEND, src, itemspec, user) if(vend_flags & VEND_LIMITED_INVENTORY) itemspec[2]-- if(vend_flags & VEND_LOAD_AMMO_BOXES) - vendor.update_derived_ammo_and_boxes(itemspec) + update_derived_ammo_and_boxes(itemspec) else to_chat(user, SPAN_WARNING("ERROR: itemspec is missing. Please report this to admins.")) sleep(15) - vendor.stat &= ~IN_USE - vendor.update_icon() + stat &= ~IN_USE + icon_state = initial(icon_state) + update_icon() -/proc/vendor_successful_vend_one(obj/structure/machinery/cm_vending/vendor, prod_type, mob/living/carbon/human/user, turf/target_turf, insignas_override) +/obj/structure/machinery/cm_vending/proc/vendor_successful_vend_one(prod_type, mob/living/carbon/human/user, turf/target_turf, insignas_override) var/obj/item/new_item - var/vend_flags = vendor.vend_flags if(ispath(prod_type, /obj/item)) if(ispath(prod_type, /obj/item/weapon/gun)) new_item = new prod_type(target_turf, TRUE) else if(prod_type == /obj/item/device/radio/headset/almayer/marine) - prod_type = vendor.headset_type + prod_type = headset_type else if(prod_type == /obj/item/clothing/gloves/marine) - prod_type = vendor.gloves_type + prod_type = gloves_type new_item = new prod_type(target_turf) new_item.add_fingerprint(user) else @@ -1223,13 +1295,13 @@ GLOBAL_LIST_INIT(cm_vending_gear_corresponding_types_list, list( if(vend_flags & VEND_TO_HAND) if(user.client?.prefs && (user.client?.prefs?.toggle_prefs & TOGGLE_VEND_ITEM_TO_HAND)) - if(vendor.Adjacent(user)) + if(Adjacent(user)) user.put_in_any_hand_if_possible(new_item, disable_warning = TRUE) new_item.post_vendor_spawn_hook(user) -/proc/handle_vend(obj/structure/machinery/cm_vending/vendor, list/listed_products, mob/living/carbon/human/vending_human) - if(vendor.vend_flags & VEND_USE_VENDOR_FLAGS) +/obj/structure/machinery/cm_vending/proc/handle_vend(list/listed_products, mob/living/carbon/human/vending_human) + if(vend_flags & VEND_USE_VENDOR_FLAGS) return TRUE var/buying_category = listed_products[4] if(buying_category) @@ -1265,62 +1337,3 @@ GLOBAL_LIST_INIT(cm_vending_gear_corresponding_types_list, list( stat &= ~IN_USE if(destroy) qdel(src) - -//------------HACKING--------------- - -//Hacking code from old vendors, in case someone will actually would like to add complex hacking in future. For now, simple access hacking I believe sufficient. -/* -/obj/structure/machinery/vending/proc/get_wire_descriptions() - return list( - VENDING_WIRE_EXTEND = "Inventory control computer", - VENDING_WIRE_IDSCAN = "ID scanner", - VENDING_WIRE_SHOCK = "Ground safety", - VENDING_WIRE_SHOOT_INV = "Dispenser motor control" - ) - -/obj/structure/machinery/vending/proc/isWireCut(wire) - return !(wires & getWireFlag(wire)) - -/obj/structure/machinery/vending/proc/cut(wire) - wires ^= getWireFlag(wire) - - switch(wire) - if(VENDING_WIRE_EXTEND) - src.extended_inventory = 0 - visible_message(SPAN_NOTICE("A weak yellow light turns off underneath \the [src].")) - if(VENDING_WIRE_SHOCK) - src.seconds_electrified = -1 - visible_message(SPAN_DANGER("Electric arcs shoot off from \the [src]!")) - if (VENDING_WIRE_SHOOT_INV) - if(!src.shoot_inventory) - src.shoot_inventory = TRUE - visible_message(SPAN_WARNING("\The [src] begins whirring noisily.")) - -/obj/structure/machinery/vending/proc/mend(wire) - wires |= getWireFlag(wire) - - switch(wire) - if(VENDING_WIRE_EXTEND) - src.extended_inventory = 1 - visible_message(SPAN_NOTICE("A weak yellow light turns on underneath \the [src].")) - if(VENDING_WIRE_SHOCK) - src.seconds_electrified = 0 - if (VENDING_WIRE_SHOOT_INV) - src.shoot_inventory = FALSE - visible_message(SPAN_NOTICE("\The [src] stops whirring.")) - -/obj/structure/machinery/vending/proc/pulse(wire) - switch(wire) - if(VENDING_WIRE_EXTEND) - src.extended_inventory = !src.extended_inventory - visible_message(SPAN_NOTICE("A weak yellow light turns [extended_inventory ? "on" : "off"] underneath \the [src].")) - if (VENDING_WIRE_SHOCK) - src.seconds_electrified = 30 - visible_message(SPAN_DANGER("Electric arcs shoot off from \the [src]!")) - if (VENDING_WIRE_SHOOT_INV) - src.shoot_inventory = !src.shoot_inventory - if(shoot_inventory) - visible_message(SPAN_WARNING("\The [src] begins whirring noisily.")) - else - visible_message(SPAN_NOTICE("\The [src] stops whirring.")) -*/ diff --git a/code/game/machinery/vending/vending.dm b/code/game/machinery/vending/vending.dm index a74dd923cbe7..8629ce2bb2be 100644 --- a/code/game/machinery/vending/vending.dm +++ b/code/game/machinery/vending/vending.dm @@ -208,23 +208,23 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending update_icon() return TRUE else if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) - to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src].")) + to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src.name].")) return FALSE else if(stat & BROKEN) - to_chat(user, SPAN_NOTICE("You start to unscrew the [src]'s broken panel.")) + to_chat(user, SPAN_NOTICE("You start to unscrew [src]'s broken panel.")) if(!do_after(user, 3 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, numticks = 3)) - to_chat(user, SPAN_WARNING("You stop unscrewing the [src]'s broken panel.")) + to_chat(user, SPAN_WARNING("You stop unscrewing [src]'s broken panel.")) return FALSE - to_chat(user, SPAN_NOTICE("You unscrew the [src]'s broken panel and remove it, exposing many broken wires.")) + to_chat(user, SPAN_NOTICE("You unscrew [src]'s broken panel and remove it, exposing many broken wires.")) stat &= ~BROKEN stat |= REPAIR_STEP_ONE return TRUE else if(stat & REPAIR_STEP_FOUR) - to_chat(user, SPAN_NOTICE("You start to fasten the [src]'s new panel.")) + to_chat(user, SPAN_NOTICE("You start to fasten [src]'s new panel.")) if(!do_after(user, 3 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, numticks = 3)) - to_chat(user, SPAN_WARNING("You stop fastening the [src]'s new panel.")) + to_chat(user, SPAN_WARNING("You stop fastening [src]'s new panel.")) return FALSE - to_chat(user, SPAN_NOTICE("You fasten the [src]'s new panel, fully repairing the vendor.")) + to_chat(user, SPAN_NOTICE("You fasten [src]'s new panel, fully repairing the vendor.")) stat &= ~REPAIR_STEP_FOUR stat |= FULLY_REPAIRED update_icon() @@ -235,17 +235,17 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending return FALSE else if(HAS_TRAIT(item, TRAIT_TOOL_WIRECUTTERS)) if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) - to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src].")) + to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src.name].")) return FALSE else if(stat == WORKING && panel_open) attack_hand(user) return else if(stat & REPAIR_STEP_ONE) - to_chat(user, SPAN_NOTICE("You start to remove the [src]'s broken wires.")) + to_chat(user, SPAN_NOTICE("You start to remove [src]'s broken wires.")) if(!do_after(user, 3 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, numticks = 3)) - to_chat(user, SPAN_WARNING("You stop removing the [src]'s broken wires.")) + to_chat(user, SPAN_WARNING("You stop removing [src]'s broken wires.")) return FALSE - to_chat(user, SPAN_NOTICE("You remove the [src]'s broken broken wires.")) + to_chat(user, SPAN_NOTICE("You remove [src]'s broken broken wires.")) stat &= ~REPAIR_STEP_ONE stat |= REPAIR_STEP_TWO return TRUE @@ -255,20 +255,20 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending return FALSE else if(istype(item, /obj/item/stack/cable_coil)) if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) - to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src].")) + to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src.name].")) return FALSE var/obj/item/stack/cable_coil/CC = item if(stat & REPAIR_STEP_TWO) if(CC.amount < 5) to_chat(user, SPAN_WARNING("You need more cable coil to replace the removed wires.")) - to_chat(user, SPAN_NOTICE("You start to replace the [src]'s removed wires.")) + to_chat(user, SPAN_NOTICE("You start to replace [src]'s removed wires.")) if(!do_after(user, 3 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, numticks = 3)) - to_chat(user, SPAN_WARNING("You stop replacing the [src]'s removed wires.")) + to_chat(user, SPAN_WARNING("You stop replacing [src]'s removed wires.")) return FALSE if(!CC || !CC.use(5)) to_chat(user, SPAN_WARNING("You need more cable coil to replace the removed wires.")) return FALSE - to_chat(user, SPAN_NOTICE("You remove the [src]'s broken broken wires.")) + to_chat(user, SPAN_NOTICE("You remove [src]'s broken broken wires.")) stat &= ~REPAIR_STEP_TWO stat |= REPAIR_STEP_THREE return TRUE @@ -278,18 +278,18 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending return else if(istype(item, /obj/item/stack/sheet/metal)) if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) - to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src].")) + to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src.name].")) return FALSE var/obj/item/stack/sheet/metal/M = item if(stat & REPAIR_STEP_THREE) - to_chat(user, SPAN_NOTICE("You start to construct a new panel for the [src].")) + to_chat(user, SPAN_NOTICE("You start to construct a new panel for [src].")) if(!do_after(user, 3 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, numticks = 3)) - to_chat(user, SPAN_WARNING("You stop constructing a new panel for the [src].")) + to_chat(user, SPAN_WARNING("You stop constructing a new panel for [src].")) return FALSE if(!M || !M.use(1)) to_chat(user, SPAN_WARNING("You a sheet of metal to construct a new panel.")) return FALSE - to_chat(user, SPAN_NOTICE("You construct a new panel for the [src].")) + to_chat(user, SPAN_NOTICE("You construct a new panel for [src].")) stat &= ~REPAIR_STEP_THREE stat |= REPAIR_STEP_FOUR return TRUE @@ -306,9 +306,9 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending switch (anchored) if (0) anchored = TRUE - user.visible_message("[user] tightens the bolts securing the [src] to the floor.", "You tighten the bolts securing the [src] to the floor.") + user.visible_message("[user] tightens the bolts securing [src] to the floor.", "You tighten the bolts securing [src] to the floor.") if (1) - user.visible_message("[user] unfastens the bolts securing the [src] to the floor.", "You unfasten the bolts securing the [src] to the floor.") + user.visible_message("[user] unfastens the bolts securing [src] to the floor.", "You unfasten the bolts securing [src] to the floor.") anchored = FALSE return else if(HAS_TRAIT(item, TRAIT_TOOL_MULTITOOL) || HAS_TRAIT(item, TRAIT_TOOL_WIRECUTTERS)) @@ -321,7 +321,7 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending return if(user.drop_inv_item_to_loc(item, src)) coin = item - to_chat(user, SPAN_NOTICE(" You insert the [item] into the [src]")) + to_chat(user, SPAN_NOTICE("You insert [item] into [src]")) tgui_interact(user) return else if(istype(item, /obj/item/spacecash)) @@ -343,7 +343,7 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending if (CH) // Only proceed if card contains proper account number. if(!CH.suspended) if(CH.security_level != 0) //If card requires pin authentication (ie seclevel 1 or 2) - if(vendor_account) + if(GLOB.vendor_account) var/attempt_pin = tgui_input_number(usr, "Enter pin code", "Vendor transaction") var/datum/money_account/D = attempt_account_access(card.associated_account_number, attempt_pin, 2) transfer_and_vend(D) @@ -364,18 +364,18 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending //transfer the money acc.money -= transaction_amount - vendor_account.money += transaction_amount + GLOB.vendor_account.money += transaction_amount //create entries in the two account transaction logs var/datum/transaction/T = new() - T.target_name = "[vendor_account.owner_name] (via [name])" + T.target_name = "[GLOB.vendor_account.owner_name] (via [name])" T.purpose = "Purchase of [currently_vending.product_name]" if(transaction_amount > 0) T.amount = "([transaction_amount])" else T.amount = "[transaction_amount]" T.source_terminal = name - T.date = current_date_string + T.date = GLOB.current_date_string T.time = worldtime2text() acc.transaction_log.Add(T) // @@ -384,9 +384,9 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending T.purpose = "Purchase of [currently_vending.product_name]" T.amount = "[transaction_amount]" T.source_terminal = name - T.date = current_date_string + T.date = GLOB.current_date_string T.time = worldtime2text() - vendor_account.transaction_log.Add(T) + GLOB.vendor_account.transaction_log.Add(T) // Vend the item vend(currently_vending, usr) @@ -398,36 +398,33 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending /obj/structure/machinery/vending/proc/GetProductIndex(datum/data/vending_product/product) var/list/plist - switch(product.category) - if(CAT_NORMAL) - plist=product_records - if(CAT_HIDDEN) - plist=hidden_records - if(CAT_COIN) - plist=coin_records - else - warning("UNKNOWN CATEGORY [product.category] IN TYPE [product.product_path] INSIDE [type]!") + if(product.category == CAT_NORMAL) + plist = product_records + else if(product.category == CAT_HIDDEN) + plist = hidden_records + else if(product.category == CAT_COIN) + plist = coin_records + else + warning("UNKNOWN CATEGORY [product.category] IN TYPE [product.product_path] INSIDE [type]!") return plist.Find(product) /obj/structure/machinery/vending/proc/GetProductByID(pid, category) - switch(category) - if(CAT_NORMAL) - return product_records[pid] - if(CAT_HIDDEN) - return hidden_records[pid] - if(CAT_COIN) - return coin_records[pid] - else - warning("UNKNOWN PRODUCT: PID: [pid], CAT: [category] INSIDE [type]!") - return null + if(category == CAT_NORMAL) + return product_records[pid] + else if(category == CAT_HIDDEN) + return hidden_records[pid] + else if(category == CAT_COIN) + return coin_records[pid] + else + warning("UNKNOWN PRODUCT: PID: [pid], CAT: [category] INSIDE [type]!") /obj/structure/machinery/vending/attack_hand(mob/user) if(is_tipped_over) if(user.action_busy) return - user.visible_message(SPAN_NOTICE("[user] begins to heave the [src] back into place!"), SPAN_NOTICE("You start heaving the [src] back into place...")) + user.visible_message(SPAN_NOTICE("[user] begins to heave [src] back into place!"), SPAN_NOTICE("You start heaving [src] back into place...")) if(do_after(user, 80, INTERRUPT_NO_NEEDHAND, BUSY_ICON_FRIENDLY)) - user.visible_message(SPAN_NOTICE("[user] rights the [src]!"), SPAN_NOTICE("You right the [src]!")) + user.visible_message(SPAN_NOTICE("[user] rights [src]!"), SPAN_NOTICE("You right [src]!")) flip_back() return @@ -537,7 +534,7 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending return if(coin.string_attached) if(prob(50)) - to_chat(user, SPAN_NOTICE("You successfully pull the coin out before the [src] could swallow it.")) + to_chat(user, SPAN_NOTICE("You successfully pull the coin out before [src] could swallow it.")) user.put_in_hands(coin) else to_chat(user, SPAN_NOTICE("You weren't able to pull the coin out fast enough, the machine ate it, string and all.")) @@ -625,18 +622,18 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending //transfer the money user_account.money -= transaction_amount - vendor_account.money += transaction_amount + GLOB.vendor_account.money += transaction_amount //create entries in the two account transaction logs var/datum/transaction/new_transaction = new() - new_transaction.target_name = "[vendor_account.owner_name] (via [name])" + new_transaction.target_name = "[GLOB.vendor_account.owner_name] (via [name])" new_transaction.purpose = "Purchase of [currently_vending.product_name]" if(transaction_amount > 0) new_transaction.amount = "([transaction_amount])" else new_transaction.amount = "[transaction_amount]" new_transaction.source_terminal = name - new_transaction.date = current_date_string + new_transaction.date = GLOB.current_date_string new_transaction.time = worldtime2text() user_account.transaction_log.Add(new_transaction) @@ -645,9 +642,9 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending new_transaction.purpose = "Purchase of [currently_vending.product_name]" new_transaction.amount = "[transaction_amount]" new_transaction.source_terminal = name - new_transaction.date = current_date_string + new_transaction.date = GLOB.current_date_string new_transaction.time = worldtime2text() - vendor_account.transaction_log.Add(new_transaction) + GLOB.vendor_account.transaction_log.Add(new_transaction) return TRUE @@ -658,7 +655,7 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending //transfer the money cash.worth -= transaction_amount - vendor_account.money += transaction_amount + GLOB.vendor_account.money += transaction_amount //consume the cash if needed if(!cash.worth) @@ -670,9 +667,9 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending new_transaction.purpose = "Purchase of [currently_vending.product_name]" new_transaction.amount = "[transaction_amount]" new_transaction.source_terminal = name - new_transaction.date = current_date_string + new_transaction.date = GLOB.current_date_string new_transaction.time = worldtime2text() - vendor_account.transaction_log.Add(new_transaction) + GLOB.vendor_account.transaction_log.Add(new_transaction) return TRUE @@ -823,7 +820,7 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending if(inoperable()) return - if(user.stat || user.is_mob_restrained() || user.lying) + if(user.stat || user.is_mob_restrained()) return if(get_dist(user, src) > 1 || get_dist(src, A) > 1) @@ -885,8 +882,8 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending S.remove_from_storage(item_to_stock, user.loc) qdel(item_to_stock) - user.visible_message(SPAN_NOTICE("[user] stocks the [src] with \a [product.product_name]."), - SPAN_NOTICE("You stock the [src] with \a [product.product_name].")) + user.visible_message(SPAN_NOTICE("[user] stocks [src] with \a [product.product_name]."), + SPAN_NOTICE("You stock [src] with \a [product.product_name].")) product.amount++ return //We found our item, no reason to go on. @@ -970,7 +967,7 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending if (!throw_item) return 0 INVOKE_ASYNC(throw_item, /atom/movable/proc/throw_atom, target, 16, SPEED_AVERAGE, src) - visible_message(SPAN_WARNING("The [src] launches \the [throw_item] at [target]!")) + visible_message(SPAN_WARNING("[src] launches [throw_item] at [target]!")) playsound(src, "sound/machines/vending.ogg", 40, TRUE) return 1 @@ -991,14 +988,14 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending switch(wire) if(VENDING_WIRE_EXTEND) extended_inventory = TRUE - visible_message(SPAN_NOTICE("A weak yellow light turns off underneath the [src].")) + visible_message(SPAN_NOTICE("A weak yellow light turns off underneath [src].")) if(VENDING_WIRE_SHOCK) seconds_electrified = -1 - visible_message(SPAN_DANGER("Electric arcs shoot off from the [src]!")) + visible_message(SPAN_DANGER("Electric arcs shoot off from [src]!")) if (VENDING_WIRE_SHOOT_INV) if(!shoot_inventory) shoot_inventory = TRUE - visible_message(SPAN_WARNING("The [src] begins whirring noisily.")) + visible_message(SPAN_WARNING("[src] begins whirring noisily.")) /obj/structure/machinery/vending/proc/mend(wire) wires |= getWireFlag(wire) @@ -1006,24 +1003,24 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending switch(wire) if(VENDING_WIRE_EXTEND) extended_inventory = FALSE - visible_message(SPAN_NOTICE("A weak yellow light turns on underneath the [src].")) + visible_message(SPAN_NOTICE("A weak yellow light turns on underneath [src].")) if(VENDING_WIRE_SHOCK) seconds_electrified = 0 if (VENDING_WIRE_SHOOT_INV) shoot_inventory = FALSE - visible_message(SPAN_NOTICE("The [src] stops whirring.")) + visible_message(SPAN_NOTICE("[src] stops whirring.")) /obj/structure/machinery/vending/proc/pulse(wire) switch(wire) if(VENDING_WIRE_EXTEND) extended_inventory = !extended_inventory - visible_message(SPAN_NOTICE("A weak yellow light turns [extended_inventory ? "on" : "off"] underneath the [src].")) + visible_message(SPAN_NOTICE("A weak yellow light turns [extended_inventory ? "on" : "off"] underneath [src].")) if (VENDING_WIRE_SHOCK) seconds_electrified = 30 - visible_message(SPAN_DANGER("Electric arcs shoot off from the [src]!")) + visible_message(SPAN_DANGER("Electric arcs shoot off from [src]!")) if (VENDING_WIRE_SHOOT_INV) shoot_inventory = !shoot_inventory if(shoot_inventory) - visible_message(SPAN_WARNING("The [src] begins whirring noisily.")) + visible_message(SPAN_WARNING("[src] begins whirring noisily.")) else - visible_message(SPAN_NOTICE("The [src] stops whirring.")) + visible_message(SPAN_NOTICE("[src] stops whirring.")) diff --git a/code/game/machinery/vending/vending_types.dm b/code/game/machinery/vending/vending_types.dm index a61934324491..0a7b85cae7e2 100644 --- a/code/game/machinery/vending/vending_types.dm +++ b/code/game/machinery/vending/vending_types.dm @@ -252,6 +252,24 @@ ) contraband = list(/obj/item/clothing/glasses/sunglasses = 2,/obj/item/storage/donut_box = 2) +/obj/structure/machinery/vending/security/riot + name = "\improper RiotTech" + desc = "A security riot equipment vendor." + hacking_safety = TRUE + wrenchable = FALSE + products = list( + /obj/item/handcuffs/zip = 40, + /obj/item/explosive/grenade/flashbang = 20, + /obj/item/explosive/grenade/custom/teargas = 40, + /obj/item/ammo_magazine/smg/m39/rubber = 40, + /obj/item/ammo_magazine/pistol/rubber = 40, + /obj/item/ammo_magazine/pistol/mod88/rubber = 40, + /obj/item/ammo_magazine/rifle/rubber = 40, + /obj/item/ammo_magazine/rifle/m4ra/rubber = 40, + /obj/item/clothing/head/helmet/marine/MP = 8, + /obj/item/explosive/plastic/breaching_charge/rubber = 6, + ) + /obj/structure/machinery/vending/sea name = "\improper SeaTech" desc = "An equipment vendor designed to save lives" @@ -411,6 +429,13 @@ /obj/item/device/camera = 5, /obj/item/device/camera_film = 10, /obj/item/notepad = 5, + /obj/item/device/toner = 5, + /obj/item/paper/colonial_grunts = 15, + /obj/item/toy/dice/d20 = 10, + /obj/item/tool/pen = 10, + /obj/item/tool/pen/blue = 10, + /obj/item/tool/pen/red = 10, + /obj/item/tool/pen/fountain = 3, ) contraband = list(/obj/item/toy/sword = 2) @@ -431,5 +456,78 @@ /obj/item/toy/deck = 20, /obj/item/toy/deck/uno = 15, /obj/item/device/camera = 30, + /obj/item/device/toner = 15, + /obj/item/paper/colonial_grunts = 5, + /obj/item/toy/dice/d20 = 1, + /obj/item/tool/pen = 2, + /obj/item/tool/pen/blue = 2, + /obj/item/tool/pen/red = 2, + /obj/item/tool/pen/fountain = 30, ) product_type = VENDOR_PRODUCT_TYPE_RECREATIONAL + +//vendor of ingredients for kitchen +/obj/structure/machinery/vending/ingredients + name = "\improper Galley Auxiliary Storage Requisition System" + desc = "A vending machine meant to be use for cooks." + product_ads = "If your out of ingredients i am here for you;all my organic produce are fresh;don't let my potatoes go stale time for you to cook some fries" + icon_state = "snack" + hacking_safety = TRUE + products = list( + /obj/item/storage/fancy/egg_box = 12, + /obj/item/storage/box/fish = 12, + /obj/item/storage/box/meat = 12, + /obj/item/storage/box/milk = 12, + /obj/item/storage/box/soymilk = 12, + /obj/item/storage/box/enzyme = 12, + /obj/item/storage/box/flour = 12, + /obj/item/storage/box/sugar = 12, + /obj/item/storage/box/saltshaker = 12, + /obj/item/storage/box/peppermill = 12, + /obj/item/storage/box/mint = 12, + /obj/item/storage/box/apple = 12, + /obj/item/storage/box/banana = 12, + /obj/item/storage/box/chanterelle = 12, + /obj/item/storage/box/cherries = 12, + /obj/item/storage/box/chili = 12, + /obj/item/storage/box/cabbage = 12, + /obj/item/storage/box/carrot = 12, + /obj/item/storage/box/corn = 12, + /obj/item/storage/box/eggplant = 12, + /obj/item/storage/box/lemon = 12, + /obj/item/storage/box/lime = 12, + /obj/item/storage/box/orange = 12, + /obj/item/storage/box/potato = 12, + /obj/item/storage/box/tomato = 12, + /obj/item/storage/box/whitebeet = 12, + ) + + prices = list( + /obj/item/storage/fancy/egg_box = 1, + /obj/item/storage/box/fish = 1, + /obj/item/storage/box/meat = 1, + /obj/item/storage/box/milk =1, + /obj/item/storage/box/soymilk = 1, + /obj/item/storage/box/enzyme = 1, + /obj/item/storage/box/flour = 1, + /obj/item/storage/box/sugar = 1, + /obj/item/storage/box/saltshaker = 1, + /obj/item/storage/box/peppermill = 1, + /obj/item/storage/box/mint = 1, + /obj/item/storage/box/apple = 1, + /obj/item/storage/box/banana = 2, + /obj/item/storage/box/chanterelle = 2, + /obj/item/storage/box/cherries = 2, + /obj/item/storage/box/chili = 2, + /obj/item/storage/box/cabbage = 2, + /obj/item/storage/box/carrot = 2, + /obj/item/storage/box/corn = 2, + /obj/item/storage/box/eggplant = 2, + /obj/item/storage/box/lemon = 2, + /obj/item/storage/box/lime = 2, + /obj/item/storage/box/orange = 2, + /obj/item/storage/box/potato = 2, + /obj/item/storage/box/tomato = 2, + /obj/item/storage/box/whitebeet = 2, + ) + product_type = VENDOR_PRODUCT_TYPE_FOOD diff --git a/code/game/machinery/vending/vendor_types/antag/antag_clothing.dm b/code/game/machinery/vending/vendor_types/antag/antag_clothing.dm index df047d6cf5fb..85210e1aaa3f 100644 --- a/code/game/machinery/vending/vendor_types/antag/antag_clothing.dm +++ b/code/game/machinery/vending/vendor_types/antag/antag_clothing.dm @@ -5,7 +5,8 @@ name = "\improper Suspicious Automated Equipment Rack" desc = "While similar in function to ColMarTech automated racks, this one is clearly not of USCM origin. Contains various equipment." icon_state = "antag_clothing" - req_access = list(ACCESS_ILLEGAL_PIRATE) + req_one_access = list(ACCESS_ILLEGAL_PIRATE, ACCESS_UPP_GENERAL, ACCESS_CLF_GENERAL) + req_access = null listed_products = list() diff --git a/code/game/machinery/vending/vendor_types/antag/antag_gear.dm b/code/game/machinery/vending/vendor_types/antag/antag_gear.dm index c2b27dc91ef1..3e847b4919de 100644 --- a/code/game/machinery/vending/vendor_types/antag/antag_gear.dm +++ b/code/game/machinery/vending/vendor_types/antag/antag_gear.dm @@ -5,7 +5,8 @@ desc = "While similar in function to ColMarTech automated racks, this one is clearly not of USCM origin. Contains various gear." icon_state = "gear" - req_access = list(ACCESS_ILLEGAL_PIRATE) + req_one_access = list(ACCESS_ILLEGAL_PIRATE, ACCESS_UPP_GENERAL, ACCESS_CLF_GENERAL) + req_access = null listed_products = list() /obj/structure/machinery/cm_vending/gear/antag/Initialize() @@ -49,9 +50,9 @@ /obj/effect/essentials_set/upp_heavy spawned_gear_list = list( - /obj/item/weapon/gun/minigun/upp, - /obj/item/ammo_magazine/minigun, - /obj/item/ammo_magazine/minigun, + /obj/item/weapon/gun/pkp, + /obj/item/ammo_magazine/pkp, + /obj/item/ammo_magazine/pkp, ) /obj/effect/essentials_set/leader/upp diff --git a/code/game/machinery/vending/vendor_types/antag/antag_guns_snowflake.dm b/code/game/machinery/vending/vendor_types/antag/antag_guns_snowflake.dm index a2cd462cd6a2..73a2c7346a4c 100644 --- a/code/game/machinery/vending/vendor_types/antag/antag_guns_snowflake.dm +++ b/code/game/machinery/vending/vendor_types/antag/antag_guns_snowflake.dm @@ -4,7 +4,8 @@ name = "\improper Suspicious Automated Guns Rack" desc = "While similar in function to ColMarTech automated racks, this one is clearly not of USCM origin. Contains various weapons, ammunition and explosives." icon_state = "antag_guns" - req_access = list(ACCESS_ILLEGAL_PIRATE) + req_one_access = list(ACCESS_ILLEGAL_PIRATE, ACCESS_UPP_GENERAL, ACCESS_CLF_GENERAL) + req_access = null use_snowflake_points = TRUE diff --git a/code/game/machinery/vending/vendor_types/antag/antag_guns_sorted.dm b/code/game/machinery/vending/vendor_types/antag/antag_guns_sorted.dm index 6267db911b09..ab319f1eca1d 100644 --- a/code/game/machinery/vending/vendor_types/antag/antag_guns_sorted.dm +++ b/code/game/machinery/vending/vendor_types/antag/antag_guns_sorted.dm @@ -4,7 +4,8 @@ name = "\improper Suspicious Automated Guns Rack" desc = "While similar in function to ColMarTech automated racks, this one is clearly not of USCM origin. Contains various weapons." icon_state = "antag_guns" - req_access = list(ACCESS_ILLEGAL_PIRATE) + req_one_access = list(ACCESS_ILLEGAL_PIRATE, ACCESS_UPP_GENERAL, ACCESS_CLF_GENERAL) + req_access = null listed_products = list() /obj/structure/machinery/cm_vending/sorted/cargo_guns/antag_guns/Initialize() diff --git a/code/game/machinery/vending/vendor_types/crew/commanding_officer.dm b/code/game/machinery/vending/vendor_types/crew/commanding_officer.dm index 3d6a48b45daa..d7d49a8ae044 100644 --- a/code/game/machinery/vending/vendor_types/crew/commanding_officer.dm +++ b/code/game/machinery/vending/vendor_types/crew/commanding_officer.dm @@ -1,9 +1,9 @@ //------------GEAR VENDOR--------------- GLOBAL_LIST_INIT(cm_vending_gear_commanding_officer, list( - list("COMMANDING OFFICER'S PRIMARY (CHOOSE 1)", 0, null, null, null), - list("M46C pulse rifle", 0, /obj/effect/essentials_set/co/riflepreset, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), - list("M56C Smartgun", 0, /obj/item/storage/box/m56c_system, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), + list("COMMANDER'S PRIMARY (CHOOSE 1)", 0, null, null, null), + list("M46C Pulse Rifle", 0, /obj/effect/essentials_set/co/riflepreset, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), + list("M56C Smartgun", 0, /obj/item/storage/box/m56c_system, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), list("PRIMARY AMMUNITION", 0, null, null, null), list("M41A MK1 Magazine", 30, /obj/item/ammo_magazine/rifle/m41aMK1, null, VENDOR_ITEM_RECOMMENDED), @@ -28,11 +28,19 @@ GLOBAL_LIST_INIT(cm_vending_gear_commanding_officer, list( list("M41A Rubber Shot Magazine", 10, /obj/item/ammo_magazine/rifle/rubber, null, VENDOR_ITEM_REGULAR), list("Beanbag Slugs", 10, /obj/item/ammo_magazine/shotgun/beanbag, null, VENDOR_ITEM_REGULAR), + list("EXPLOSIVES", 0, null, null, null), + list("HEDP Grenade Pack", 15, /obj/item/storage/box/packet/high_explosive, null, VENDOR_ITEM_REGULAR), + list("HEFA Grenade Pack", 15, /obj/item/storage/box/packet/hefa, null, VENDOR_ITEM_REGULAR), + list("WP Grenade Pack", 15, /obj/item/storage/box/packet/phosphorus, null, VENDOR_ITEM_REGULAR), + list("RAIL ATTACHMENTS", 0, null, null, null), list("Red-Dot Sight", 15, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), list("Reflex Sight", 15, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), list("S4 2x Telescopic Mini-Scope", 15, /obj/item/attachable/scope/mini, null, VENDOR_ITEM_REGULAR), + list("Helmet Visors", 0, null, null, null), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_RECOMMENDED), + list("UNDERBARREL ATTACHMENTS", 0, null, null, null), list("Laser Sight", 15, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), list("Angled Grip", 15, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), @@ -40,13 +48,13 @@ GLOBAL_LIST_INIT(cm_vending_gear_commanding_officer, list( list("Underbarrel Shotgun", 15, /obj/item/attachable/attached_gun/shotgun, null, VENDOR_ITEM_REGULAR), list("Underbarrel Extinguisher", 15, /obj/item/attachable/attached_gun/extinguisher, null, VENDOR_ITEM_REGULAR), list("Underbarrel Flamethrower", 15, /obj/item/attachable/attached_gun/flamer, null, VENDOR_ITEM_REGULAR), + list("Underbarrel Grenade Launcher", 5, /obj/item/attachable/attached_gun/grenade, null, VENDOR_ITEM_REGULAR), list("BARREL ATTACHMENTS", 0, null, null, null), - list("Barrel Charger", 25, /obj/item/attachable/heavy_barrel, null, VENDOR_ITEM_RECOMMENDED), - list("Suppressor", 15, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 15, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), list("Recoil Compensator", 15, /obj/item/attachable/compensator, null, VENDOR_ITEM_REGULAR), - )) + list("Suppressor", 15, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), + )) /obj/structure/machinery/cm_vending/gear/commanding_officer name = "\improper ColMarTech Commanding Officer Weapon Rack" @@ -64,9 +72,15 @@ GLOBAL_LIST_INIT(cm_vending_gear_commanding_officer, list( GLOBAL_LIST_INIT(cm_vending_clothing_commanding_officer, list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Headset", 0, /obj/item/device/radio/headset/almayer/mcom/cdrcom, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Satchel", 0, /obj/item/storage/backpack/satchel/lockable, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + list("COMMANDING OFFICER ESSENTIALS KIT (TAKE ALL)", 0, null, null, null), + list("Commanding Officer Essentials Kit", 0, /obj/effect/essentials_set/commanding_officer, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), + + list("BAGS (CHOOSE 1)", 0, null, null, null), + list("Commanding Officer Backpack", 0, /obj/item/storage/backpack/mcommander, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), + list("Secure Satchel", 0, /obj/item/storage/backpack/satchel/lockable, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), + list("COMBAT EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Commanding Officer's M3 Armor", 0, /obj/item/clothing/suit/storage/marine/MP/CO, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Commanding Officer's M10 Helmet", 0, /obj/item/clothing/head/helmet/marine/CO, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), @@ -85,14 +99,19 @@ GLOBAL_LIST_INIT(cm_vending_clothing_commanding_officer, list( list("Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_RECOMMENDED), list("Security HUD Glasses", 0, /obj/item/clothing/glasses/sunglasses/sechud, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_REGULAR), - list("BELTS (TAKE ALL)", 0, null, null, null), + list("BELTS (CHOOSE 1)", 0, null, null, null), list("G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("Military Police Belt", 0, /obj/item/storage/belt/security/MP/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Medical Storage Rig", 0, /obj/item/storage/belt/medical/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Holster Toolrig", 0, /obj/item/storage/belt/gun/utility/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("POUCHES (CHOOSE 2)", 0, null, null, null), list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Autoinjector Pouch", 0, /obj/item/storage/pouch/autoinjector/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), @@ -111,6 +130,15 @@ GLOBAL_LIST_INIT(cm_vending_clothing_commanding_officer, list( /obj/structure/machinery/cm_vending/clothing/commanding_officer/get_listed_products(mob/user) return GLOB.cm_vending_clothing_commanding_officer +/obj/effect/essentials_set/commanding_officer + spawned_gear_list = list( + /obj/item/device/binoculars/range/designator, + /obj/item/map/current_map, + /obj/item/device/whistle, + /obj/item/weapon/gun/energy/taser, + /obj/item/device/megaphone, + ) + // This gets around the COs' weapon not spawning without incendiary mag. /obj/effect/essentials_set/co/riflepreset spawned_gear_list = list( diff --git a/code/game/machinery/vending/vendor_types/crew/medical.dm b/code/game/machinery/vending/vendor_types/crew/medical.dm index ccf4abe03282..af519a908ee6 100644 --- a/code/game/machinery/vending/vendor_types/crew/medical.dm +++ b/code/game/machinery/vending/vendor_types/crew/medical.dm @@ -32,28 +32,39 @@ GLOBAL_LIST_INIT(cm_vending_clothing_doctor, list( list("MEDICAL SET (MANDATORY)", 0, null, null, null), list("Essential Medical Set", 0, /obj/effect/essentials_set/medical/doctor, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), - list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("STANDARD EQUIPMENT", 0, null, null, null), list("Gloves", 0, /obj/item/clothing/gloves/latex, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/almayer/doc, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + + list("EYEWEAR (CHOOSE 1)", 0, null, null, null), list("Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), + list("Prescription Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health/prescription, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), list("UNIFORM (CHOOSE 1)", 0, null, null, null), list("Green Scrubs", 0, /obj/item/clothing/under/rank/medical/green, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), list("Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/blue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), + list("Light Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/lightblue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), list("Purple Scrubs", 0, /obj/item/clothing/under/rank/medical/purple, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), - list("ARMOR (CHOOSE 1)", 0, null, null, null), - list("Labcoat", 0, /obj/item/clothing/suit/storage/labcoat, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), - list("Snowcoat", 0, /obj/item/clothing/suit/storage/snow_suit/doctor, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), + list("SUIT (CHOOSE 1)", 0, null, null, null), + list("Labcoat", 0, /obj/item/clothing/suit/storage/labcoat, MARINE_CAN_BUY_MRE, VENDOR_ITEM_REGULAR), + list("Medical's apron", 0, /obj/item/clothing/suit/chef/classic/medical, MARINE_CAN_BUY_MRE, VENDOR_ITEM_REGULAR), + + list("SNOW GEAR (SNOW USE ONLY)", 0, null, null, null), + list("Snowcoat", 0, /obj/item/clothing/suit/storage/snow_suit/doctor, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("Balaclava", 0, /obj/item/clothing/mask/balaclava, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), + list("Snow Scarf", 0, /obj/item/clothing/mask/tornscarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), - list("HELMET", 0, null, null, null), + list("HEADWEAR (CHOOSE 1)", 0, null, null, null), list("Surgical Cap, Blue", 0, /obj/item/clothing/head/surgery/blue, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Surgical Cap, Purple", 0, /obj/item/clothing/head/surgery/purple, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Surgical Cap, Green", 0, /obj/item/clothing/head/surgery/green, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("BAG (CHOOSE 1)", 0, null, null, null), + list("Standard Satchel", 0, /obj/item/storage/backpack/marine/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Standard Backpack", 0, /obj/item/storage/backpack/marine, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), list("Medical Satchel", 0, /obj/item/storage/backpack/marine/satchel/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), - list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), list("BELT (CHOOSE 1)", 0, null, null, null), list("M276 Lifesaver Bag (Full)", 0, /obj/item/storage/belt/medical/lifesaver/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), @@ -66,7 +77,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_doctor, list( list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("First Responder Pouch", 0, /obj/item/storage/pouch/first_responder, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Bicaridine)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/bicaridine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Kelotane)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/kelotane, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Revival Mix)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/revival, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -87,29 +98,40 @@ GLOBAL_LIST_INIT(cm_vending_clothing_nurse, list( list("MEDICAL SET (MANDATORY)", 0, null, null, null), list("Essential Medical Set", 0, /obj/effect/essentials_set/medical, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), - list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("STANDARD EQUIPMENT", 0, null, null, null), list("Gloves", 0, /obj/item/clothing/gloves/latex, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/almayer/doc, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + + list("EYEWEAR (CHOOSE 1)", 0, null, null, null), list("Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), + list("Prescription Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health/prescription, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), list("UNIFORM (CHOOSE 1)", 0, null, null, null), + list("Light Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/lightblue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Green Scrubs", 0, /obj/item/clothing/under/rank/medical/green, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), list("Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/blue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), list("Purple Scrubs", 0, /obj/item/clothing/under/rank/medical/purple, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), - list("Medical Nurse Scrubs", 0, /obj/item/clothing/under/rank/medical/nurse, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("ARMOR (CHOOSE 1)", 0, null, null, null), - list("Labcoat", 0, /obj/item/clothing/suit/storage/labcoat, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), - list("Snowcoat", 0, /obj/item/clothing/suit/storage/snow_suit/doctor, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), + list("SUIT (CHOOSE 1)", 0, null, null, null), + list("Medical's apron", 0, /obj/item/clothing/suit/chef/classic/medical, MARINE_CAN_BUY_MRE, VENDOR_ITEM_REGULAR), - list("HELMET", 0, null, null, null), + list("SNOW GEAR (SNOW USE ONLY)", 0, null, null, null), + list("Snowcoat", 0, /obj/item/clothing/suit/storage/snow_suit/doctor, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("Balaclava", 0, /obj/item/clothing/mask/balaclava, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), + list("Snow Scarf", 0, /obj/item/clothing/mask/tornscarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), + + list("HEADWEAR (CHOOSE 1)", 0, null, null, null), + + list("Surgical Cap, Orange", 0, /obj/item/clothing/head/surgery/orange, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), list("Surgical Cap, Blue", 0, /obj/item/clothing/head/surgery/blue, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Surgical Cap, Purple", 0, /obj/item/clothing/head/surgery/purple, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Surgical Cap, Green", 0, /obj/item/clothing/head/surgery/green, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("BAG (CHOOSE 1)", 0, null, null, null), + list("Standard Satchel", 0, /obj/item/storage/backpack/marine/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Standard Backpack", 0, /obj/item/storage/backpack/marine, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), list("Medical Satchel", 0, /obj/item/storage/backpack/marine/satchel/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), - list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), list("BELT (CHOOSE 1)", 0, null, null, null), list("M276 Lifesaver Bag (Full)", 0, /obj/item/storage/belt/medical/lifesaver/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), @@ -122,7 +144,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_nurse, list( list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("First Responder Pouch", 0, /obj/item/storage/pouch/first_responder, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Bicaridine)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/bicaridine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Kelotane)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/kelotane, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Revival Mix)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/revival, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -143,30 +165,42 @@ GLOBAL_LIST_INIT(cm_vending_clothing_researcher, list( list("MEDICAL SET (MANDATORY)", 0, null, null, null), list("Essential Medical Set", 0, /obj/effect/essentials_set/medical/doctor, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), - list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("STANDARD EQUIPMENT", 0, null, null, null), list("Gloves", 0, /obj/item/clothing/gloves/latex, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), - list("Headset", 0, /obj/item/device/radio/headset/almayer/doc, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), - list("Reagent Scanner HUD Goggles", 0, /obj/item/clothing/glasses/science, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_RECOMMENDED), + list("Headset", 0, /obj/item/device/radio/headset/almayer/research, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + + list("EYEWEAR (CHOOSE 1)", 0, null, null, null), + list("Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_RECOMMENDED), + list("Prescription Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health/prescription, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_RECOMMENDED), + list("Reagent Scanner HUD Goggles", 0, /obj/item/clothing/glasses/science, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), + list("Prescription Reagent Scanner HUD Goggles", 0, /obj/item/clothing/glasses/science/prescription, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), list("UNIFORM (CHOOSE 1)", 0, null, null, null), + list("Researcher Uniform", 0, /obj/item/clothing/under/marine/officer/researcher, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Green Scrubs", 0, /obj/item/clothing/under/rank/medical/green, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), list("Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/blue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), + list("Light Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/lightblue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), list("Purple Scrubs", 0, /obj/item/clothing/under/rank/medical/purple, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), - list("Researcher Uniform", 0, /obj/item/clothing/under/marine/officer/researcher, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("ARMOR (CHOOSE 1)", 0, null, null, null), - list("Labcoat", 0, /obj/item/clothing/suit/storage/labcoat/researcher, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), - list("Snowcoat", 0, /obj/item/clothing/suit/storage/snow_suit/doctor, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), + list("SUIT (CHOOSE 1)", 0, null, null, null), + list("Labcoat", 0, /obj/item/clothing/suit/storage/labcoat/researcher, MARINE_CAN_BUY_MRE, VENDOR_ITEM_RECOMMENDED), + + list("SNOW GEAR (SNOW USE ONLY)", 0, null, null, null), + list("Snowcoat", 0, /obj/item/clothing/suit/storage/snow_suit/doctor, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("Balaclava", 0, /obj/item/clothing/mask/balaclava, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), + list("Snow Scarf", 0, /obj/item/clothing/mask/tornscarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), - list("HELMET", 0, null, null, null), + list("HEADWEAR (CHOOSE 1)", 0, null, null, null), + list("Surgical Cap, Orange", 0, /obj/item/clothing/head/surgery/orange, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Surgical Cap, Blue", 0, /obj/item/clothing/head/surgery/blue, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Surgical Cap, Purple", 0, /obj/item/clothing/head/surgery/purple, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Surgical Cap, Green", 0, /obj/item/clothing/head/surgery/green, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("BAG (CHOOSE 1)", 0, null, null, null), + list("Standard Satchel", 0, /obj/item/storage/backpack/marine/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Standard Backpack", 0, /obj/item/storage/backpack/marine, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), list("Medical Satchel", 0, /obj/item/storage/backpack/marine/satchel/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), - list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), list("BELT (CHOOSE 1)", 0, null, null, null), list("M276 Lifesaver Bag (Full)", 0, /obj/item/storage/belt/medical/lifesaver/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), @@ -181,7 +215,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_researcher, list( list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("First Responder Pouch", 0, /obj/item/storage/pouch/first_responder, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Bicaridine)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/bicaridine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Kelotane)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/kelotane, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Revival Mix)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/revival, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -203,6 +237,9 @@ GLOBAL_LIST_INIT(cm_vending_clothing_researcher, list( /obj/item/device/healthanalyzer, /obj/item/tool/surgery/surgical_line, /obj/item/tool/surgery/synthgraft, + /obj/item/storage/syringe_case, + /obj/item/storage/surgical_case/regular, + ) /obj/effect/essentials_set/medical/doctor @@ -214,4 +251,5 @@ GLOBAL_LIST_INIT(cm_vending_clothing_researcher, list( /obj/item/tool/surgery/synthgraft, /obj/item/device/flashlight/pen, /obj/item/clothing/accessory/stethoscope, + /obj/item/storage/syringe_case, ) diff --git a/code/game/machinery/vending/vendor_types/crew/mp.dm b/code/game/machinery/vending/vendor_types/crew/mp.dm index cdf374249211..b63a02248168 100644 --- a/code/game/machinery/vending/vendor_types/crew/mp.dm +++ b/code/game/machinery/vending/vendor_types/crew/mp.dm @@ -1,38 +1,50 @@ //------------ MP CLOTHING VENDOR--------------- GLOBAL_LIST_INIT(cm_vending_clothing_military_police, list( + list("POLICE SET (MANDATORY)", 0, null, null, null), + list("Essential Police Set", 0, /obj/effect/essentials_set/police, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), + list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Gloves", 0, /obj/item/clothing/gloves/marine, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Uniform", 0, /obj/item/clothing/under/marine/mp, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/almayer/mmpo, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Satchel", 0, /obj/item/storage/backpack/satchel/sec, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), - - list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), - list("M44 Revolver", 0, /obj/item/storage/belt/gun/m44/mp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("M4A3 Pistol", 0, /obj/item/storage/belt/gun/m4a3/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("Mod 88 Pistol", 0, /obj/item/storage/belt/gun/m4a3/mod88, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("Marine Combat Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("ARMOR (TAKE ALL)", 0, null, null, null), list("Military Police M2 Armor", 0, /obj/item/clothing/suit/storage/marine/MP, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("MP Beret", 0, /obj/item/clothing/head/beret/marine/mp, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), - list("COMBAT EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Military Police M10 Helmet", 0, /obj/item/clothing/head/helmet/marine/MP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), - list("Marine Combat Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("HANDGUN CASE (CHOOSE 1)", 0, null, null, null), + list("88 mod 4 Combat Pistol Case", 0, /obj/item/storage/box/guncase/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), + list("M44 Combat Revolver Case", 0, /obj/item/storage/box/guncase/m44, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), + list("M4A3 Service Pistol Case", 0, /obj/item/storage/box/guncase/m4a3, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), - list("EYEWEAR (TAKE ALL)", 0, null, null, null), - list("Security HUD Glasses", 0, /obj/item/clothing/glasses/sunglasses/sechud, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_REGULAR), + list("BACKPACK (CHOOSE 1)", 0, null, null, null), + list("Military Police Satchel", 0, /obj/item/storage/backpack/satchel/sec, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), + + list("BELT (CHOOSE 1)", 0, null, null, null), + list("M276 General Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M44 Holster Rig", 0, /obj/item/storage/belt/gun/m44, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("POUCHES (CHOOSE 2)", 0, null, null, null), - list("First-Aid Pouch (Full)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + + list("MASK (CHOOSE 1)", 0, null, null, null), + list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("Rebreather", 0, /obj/item/clothing/mask/rebreather, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), + list("Brown Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest/brown_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_RECOMMENDED), + list("Black Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), list("Shoulder Holster", 0, /obj/item/clothing/accessory/storage/holster, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), list("Webbing", 0, /obj/item/clothing/accessory/storage/webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), - - list("HAT (CHOOSE 1)", 0, null, null, null), - list("MP Beret", 0, /obj/item/clothing/head/beret/marine/mp, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), - )) /obj/structure/machinery/cm_vending/clothing/military_police @@ -47,38 +59,50 @@ GLOBAL_LIST_INIT(cm_vending_clothing_military_police, list( //------------ Warden CLOTHING VENDOR--------------- GLOBAL_LIST_INIT(cm_vending_clothing_military_police_warden, list( + list("POLICE SET (MANDATORY)", 0, null, null, null), + list("Essential Police Set", 0, /obj/effect/essentials_set/police, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Gloves", 0, /obj/item/clothing/gloves/marine, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Warden Uniform", 0, /obj/item/clothing/under/marine/warden, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/almayer/cmpcom, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Satchel", 0, /obj/item/storage/backpack/satchel/sec, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), - - list("PERSONAL SIDEARM (Take ALL)", 0, null, null, null), - list("M4A3 Service Pistol ", 0, /obj/item/storage/belt/gun/m4a3/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("Mod 88 Pistol", 0, /obj/item/storage/belt/gun/m4a3/mod88, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("M44 Revolver", 0, /obj/item/storage/belt/gun/m44/mp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("Marine Combat Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("ARMOR (TAKE ALL)", 0, null, null, null), list("Military Warden M3 Armor", 0, /obj/item/clothing/suit/storage/marine/MP/warden, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("Warden Peaked Cap", 0, /obj/item/clothing/head/beret/marine/mp/warden, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), - list("COMBAT EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Military Police M10 Helmet", 0, /obj/item/clothing/head/helmet/marine/MP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), - list("Marine Combat Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("HANDGUN CASE (CHOOSE 1)", 0, null, null, null), + list("88 mod 4 Combat Pistol Case", 0, /obj/item/storage/box/guncase/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), + list("M44 Combat Revolver Case", 0, /obj/item/storage/box/guncase/m44, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), + list("M4A3 Service Pistol Case", 0, /obj/item/storage/box/guncase/m4a3, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), + + list("BACKPACK (CHOOSE 1)", 0, null, null, null), + list("Military Police Satchel", 0, /obj/item/storage/backpack/satchel/sec, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), - list("EYEWEAR (TAKE ALL)", 0, null, null, null), - list("Security HUD Glasses", 0, /obj/item/clothing/glasses/sunglasses/sechud, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_REGULAR), + list("BELT (CHOOSE 1)", 0, null, null, null), + list("M276 General Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M44 Holster Rig", 0, /obj/item/storage/belt/gun/m44, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("POUCHES (CHOOSE 2)", 0, null, null, null), - list("First-Aid Pouch (Full)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + + list("MASK (CHOOSE 1)", 0, null, null, null), + list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("Rebreather", 0, /obj/item/clothing/mask/rebreather, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), + list("Brown Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest/brown_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_RECOMMENDED), + list("Black Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), list("Shoulder Holster", 0, /obj/item/clothing/accessory/storage/holster, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), list("Webbing", 0, /obj/item/clothing/accessory/storage/webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), - - list("HAT (CHOOSE 1)", 0, null, null, null), - list("Warden Peaked Cap", 0, /obj/item/clothing/head/beret/marine/mp/warden, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), )) /obj/structure/machinery/cm_vending/clothing/military_police_warden @@ -89,3 +113,10 @@ GLOBAL_LIST_INIT(cm_vending_clothing_military_police_warden, list( /obj/structure/machinery/cm_vending/clothing/military_police_warden/get_listed_products(mob/user) return GLOB.cm_vending_clothing_military_police_warden + +/obj/effect/essentials_set/police + spawned_gear_list = list( + /obj/item/clothing/glasses/sunglasses/sechud, + /obj/item/storage/belt/security/MP/full, + /obj/item/clothing/head/helmet/marine/MP, + ) diff --git a/code/game/machinery/vending/vendor_types/crew/pilot_officer.dm b/code/game/machinery/vending/vendor_types/crew/pilot_officer.dm index 231e02bb5118..027c9bec2d13 100644 --- a/code/game/machinery/vending/vendor_types/crew/pilot_officer.dm +++ b/code/game/machinery/vending/vendor_types/crew/pilot_officer.dm @@ -65,11 +65,11 @@ GLOBAL_LIST_INIT(cm_vending_clothing_pilot_officer, list( list("M30 Tactical Helmet", 0, /obj/item/clothing/head/helmet/marine/pilot, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), list("Leather Satchel", 0, /obj/item/storage/backpack/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), - + list("ARMOR (CHOOSE 1)", 0, null, null, null), list("M70 Flak Jacket", 0, /obj/item/clothing/suit/armor/vest/pilot, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("M3-VL Pattern Flak Vest", 0, /obj/item/clothing/suit/storage/marine/light/vest/dcc, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), - + list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), list("88 Mod 4 Combat Pistol", 0, /obj/item/weapon/gun/pistol/mod88, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("VP78 Pistol", 0, /obj/item/weapon/gun/pistol/vp78, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), @@ -79,7 +79,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_pilot_officer, list( list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Lifesaver Bag (Full)", 0, /obj/item/storage/belt/medical/lifesaver/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("M276 Medical Storage Rig (Full)", 0, /obj/item/storage/belt/medical/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("M276 M39 Holster Rig", 0, /obj/item/storage/large_holster/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M39 Holster Rig", 0, /obj/item/storage/belt/gun/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M44 Holster Rig", 0, /obj/item/storage/belt/gun/m44, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 General Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), @@ -96,7 +96,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_pilot_officer, list( list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sidearm Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), @@ -153,8 +153,8 @@ GLOBAL_LIST_INIT(cm_vending_clothing_dropship_crew_chief, list( list("Gloves", 0, /obj/item/clothing/gloves/yellow, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Patrol Cap", 0, /obj/item/clothing/head/cmcap, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), list("Leather Satchel", 0, /obj/item/storage/backpack/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), - list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), - + list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + list("ARMOR (CHOOSE 1)", 0, null, null, null), list("M70 Flak Jacket", 0, /obj/item/clothing/suit/armor/vest/pilot, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("M3-VL Pattern Flak Vest", 0, /obj/item/clothing/suit/storage/marine/light/vest/dcc, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), @@ -168,7 +168,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_dropship_crew_chief, list( list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Lifesaver Bag (Full)", 0, /obj/item/storage/belt/medical/lifesaver/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("M276 Medical Storage Rig (Full)", 0, /obj/item/storage/belt/medical/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("M276 M39 Holster Rig", 0, /obj/item/storage/large_holster/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M39 Holster Rig", 0, /obj/item/storage/belt/gun/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M44 Holster Rig", 0, /obj/item/storage/belt/gun/m44, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 General Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), @@ -185,7 +185,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_dropship_crew_chief, list( list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sidearm Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/crew/sea.dm b/code/game/machinery/vending/vendor_types/crew/sea.dm index ee583828ec44..44f530271037 100644 --- a/code/game/machinery/vending/vendor_types/crew/sea.dm +++ b/code/game/machinery/vending/vendor_types/crew/sea.dm @@ -47,15 +47,16 @@ GLOBAL_LIST_INIT(cm_vending_clothing_sea, list( list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sidearm Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("COMBAT ARMOR (CHOOSE 1)", 0, null, null, null), list("M3-VL Pattern Ballistics Vest", 0, /obj/item/clothing/suit/storage/marine/light/vest, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), list("M3-L Pattern Light Armor", 0, /obj/item/clothing/suit/storage/marine/light, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), - list("M3 Pattern Padded Armor", 0, /obj/item/clothing/suit/storage/marine/padded, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("M3 Pattern Padded Armor", 0, /obj/item/clothing/suit/storage/marine/medium/padded, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), list("Bulletproof Vest", 0, /obj/item/clothing/suit/armor/bulletproof, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("USCM Service Jacket", 0, /obj/item/clothing/suit/storage/jacket/marine/service, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), list("Brown Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest/brown_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/crew/senior_officers.dm b/code/game/machinery/vending/vendor_types/crew/senior_officers.dm index 24b60079692b..bec77560430e 100644 --- a/code/game/machinery/vending/vendor_types/crew/senior_officers.dm +++ b/code/game/machinery/vending/vendor_types/crew/senior_officers.dm @@ -2,7 +2,7 @@ name = "\improper ColMarTech Senior Officer Equipment Rack" desc = "An automated equipment vendor for Senior Officers." req_access = list(ACCESS_MARINE_SENIOR) - vendor_role = list(JOB_CHIEF_POLICE,JOB_CMO,JOB_XO,JOB_CHIEF_ENGINEER,JOB_CHIEF_REQUISITION) + vendor_role = list(JOB_CHIEF_POLICE, JOB_CMO, JOB_XO, JOB_CHIEF_ENGINEER, JOB_CHIEF_REQUISITION, JOB_AUXILIARY_OFFICER) /obj/structure/machinery/cm_vending/clothing/senior_officer/get_listed_products(mob/user) if(!user) @@ -23,53 +23,62 @@ return GLOB.cm_vending_clothing_cmo else if(user.job == JOB_CHIEF_POLICE) return GLOB.cm_vending_clothing_military_police_chief + else if(user.job == JOB_AUXILIARY_OFFICER) + return GLOB.cm_vending_clothing_auxiliary_officer return ..() - //------------ CHIEF MP --------------- GLOBAL_LIST_INIT(cm_vending_clothing_military_police_chief, list( + list("POLICE SET (MANDATORY)", 0, null, null, null), + list("Essential Police Set", 0, /obj/effect/essentials_set/chiefmilitarypolice, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Gloves", 0, /obj/item/clothing/gloves/marine, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("CMP Uniform", 0, /obj/item/clothing/under/marine/officer/warrant, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/almayer/cmpcom, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Satchel", 0, /obj/item/storage/backpack/satchel/sec, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), - list("Gear Belt", 0, /obj/item/storage/belt/security/MP/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_MANDATORY), - - list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), - list("M4A3 Service Pistol", 0, /obj/item/storage/belt/gun/m4a3/full, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), - list("Mod 88 Pistol", 0, /obj/item/storage/belt/gun/m4a3/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), - list("M44 Revolver", 0, /obj/item/storage/belt/gun/m44/mp, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), + list("Marine Combat Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("ARMOR (TAKE ALL)", 0, null, null, null), list("Military Police Chief M3 Armor", 0, /obj/item/clothing/suit/storage/marine/MP/WO, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), - - list("COMBAT EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Chief MP M10 Helmet", 0, /obj/item/clothing/head/helmet/marine/MP/WO, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), - list("Marine Combat Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("CMP Beret", 0, /obj/item/clothing/head/beret/marine/mp/cmp, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), + + list("HANDGUN CASE (CHOOSE 1)", 0, null, null, null), + list("88 mod 4 Combat Pistol Case", 0, /obj/item/storage/box/guncase/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), + list("M44 Combat Revolver Case", 0, /obj/item/storage/box/guncase/m44, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), + list("M4A3 Service Pistol Case", 0, /obj/item/storage/box/guncase/m4a3, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), - list("EYEWEAR (TAKE ALL)", 0, null, null, null), - list("Security HUD Glasses", 0, /obj/item/clothing/glasses/sunglasses/sechud, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), + list("BACKPACK (CHOOSE 1)", 0, null, null, null), + list("Military Police Satchel", 0, /obj/item/storage/backpack/satchel/sec, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), + + list("BELT (CHOOSE 1)", 0, null, null, null), + list("M276 General Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M44 Holster Rig", 0, /obj/item/storage/belt/gun/m44, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("POUCHES (CHOOSE 2)", 0, null, null, null), - list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("MASK (CHOOSE 1)", 0, null, null, null), + list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("Rebreather", 0, /obj/item/clothing/mask/rebreather, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), - list("Shoulder Holster", 0, /obj/item/clothing/accessory/storage/holster, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Brown Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest/brown_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_RECOMMENDED), list("Black Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), - list("Brown Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest/brown_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Shoulder Holster", 0, /obj/item/clothing/accessory/storage/holster, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), list("Webbing", 0, /obj/item/clothing/accessory/storage/webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), - - list("HAT (CHOOSE 1)", 0, null, null, null), - list("CMP Beret", 0, /obj/item/clothing/head/beret/marine/mp/cmp, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), )) - //------------ CHIEF ENGINEER --------------- GLOBAL_LIST_INIT(cm_vending_clothing_chief_engineer, list( @@ -161,11 +170,14 @@ GLOBAL_LIST_INIT(cm_vending_clothing_req_officer, list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Insulated Gloves", 0, /obj/item/clothing/gloves/yellow, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), - list("RO Uniform", 0, /obj/item/clothing/under/rank/ro_suit, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("Headset", 0, /obj/item/device/radio/headset/almayer/ro, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + list("Quartermaster Uniform", 0, /obj/item/clothing/under/rank/qm_suit, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + list("Headset", 0, /obj/item/device/radio/headset/almayer/qm, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Satchel", 0, /obj/item/storage/backpack/marine/satchel/tech, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), - list("Req Cap", 0, /obj/item/clothing/head/cmcap/req, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), - list("RO Jacket", 0, /obj/item/clothing/suit/storage/RO, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + list("Quartermaster Jacket", 0, /obj/item/clothing/suit/storage/RO, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + + list("Headgear (CHOOSE 1)", 0, null, null, null), + list("Quartermaster Cap", 0, /obj/item/clothing/head/cmcap/req/ro, MARINE_CAN_BUY_MASK, VENDOR_ITEM_RECOMMENDED), + list("Requisitions Cap", 0, /obj/item/clothing/head/cmcap/req, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), list("M4A3 Service Pistol", 0, /obj/item/storage/belt/gun/m4a3/full, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), @@ -198,33 +210,63 @@ GLOBAL_LIST_INIT(cm_vending_clothing_req_officer, list( //------------ CHIEF MEDICAL OFFICER --------------- GLOBAL_LIST_INIT(cm_vending_clothing_cmo, list( - list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("MEDICAL SET (MANDATORY)", 0, null, null, null), + list("Essential Medical Set", 0, /obj/effect/essentials_set/medical/doctor/cmo, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), + + list("STANDARD EQUIPMENT", 0, null, null, null), list("Gloves", 0, /obj/item/clothing/gloves/latex, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/almayer/cmo, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + + list("EYEWEAR (CHOOSE 1)", 0, null, null, null), list("Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), - list("Labcoat", 0, /obj/item/clothing/suit/storage/labcoat, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + list("Prescription Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health/prescription, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), + list("Reagent Scanner HUD Goggles", 0, /obj/item/clothing/glasses/science, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_RECOMMENDED), + list("Prescription Reagent Scanner HUD Goggles", 0, /obj/item/clothing/glasses/science/prescription, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_RECOMMENDED), list("UNIFORM (CHOOSE 1)", 0, null, null, null), - list("Green Scrubs", 0, /obj/item/clothing/under/rank/medical/green, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), + list("Chief Medical Officer's Uniform", 0, /obj/item/clothing/under/rank/chief_medical_officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), + list("Doctor Uniform", 0, /obj/item/clothing/under/rank/medical, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), + list("Green Scrubs", 0, /obj/item/clothing/under/rank/medical/green, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), list("Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/blue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), + list("Light Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/lightblue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), list("Purple Scrubs", 0, /obj/item/clothing/under/rank/medical/purple, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), - list("Doctor Uniform", 0, /obj/item/clothing/under/rank/medical, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), + + list("SUIT (CHOOSE 1)", 0, null, null, null), + list("Labcoat", 0, /obj/item/clothing/suit/storage/labcoat, MARINE_CAN_BUY_MRE, VENDOR_ITEM_RECOMMENDED), + list("Medical's apron", 0, /obj/item/clothing/suit/chef/classic/medical, MARINE_CAN_BUY_MRE, VENDOR_ITEM_REGULAR), + + list("SNOW GEAR (SNOW USE ONLY)", 0, null, null, null), + list("Snowcoat", 0, /obj/item/clothing/suit/storage/snow_suit/doctor, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("Balaclava", 0, /obj/item/clothing/mask/balaclava, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), + list("Snow Scarf", 0, /obj/item/clothing/mask/tornscarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), + + list("HEADWEAR (CHOOSE 1)", 0, null, null, null), + list("Chief Medical Officer's Peaked Cap", 0, /obj/item/clothing/head/cmo, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + list("Surgical Cap, Orange", 0, /obj/item/clothing/head/surgery/orange, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("Surgical Cap, Blue", 0, /obj/item/clothing/head/surgery/blue, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("Surgical Cap, Purple", 0, /obj/item/clothing/head/surgery/purple, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("Surgical Cap, Green", 0, /obj/item/clothing/head/surgery/green, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("BAG (CHOOSE 1)", 0, null, null, null), + + list("Standard Satchel", 0, /obj/item/storage/backpack/marine/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Standard Backpack", 0, /obj/item/storage/backpack/marine, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), list("Medical Satchel", 0, /obj/item/storage/backpack/marine/satchel/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), - list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), - list("USCM Satchel", 0, /obj/item/storage/backpack/marine/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), - list("USCM Backpack", 0, /obj/item/storage/backpack/marine, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), + + list("BELT (CHOOSE 1)", 0, null, null, null), + list("M276 Lifesaver Bag (Full)", 0, /obj/item/storage/belt/medical/lifesaver/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Medical Storage Rig (Full)", 0, /obj/item/storage/belt/medical/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), list("M4A3 Service Pistol", 0, /obj/item/storage/belt/gun/m4a3/full, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), list("Mod 88 Pistol", 0, /obj/item/storage/belt/gun/m4a3/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), list("M44 Revolver", 0, /obj/item/storage/belt/gun/m44/mp, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), - list("COMBAT EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Officer M3 Armor", 0, /obj/item/clothing/suit/storage/marine/MP/SO, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), - list("Officer M10 Helmet", 0, /obj/item/clothing/head/helmet/marine/MP/SO, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), - list("Marine Combat Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("COMBAT EQUIPMENT (COMBAT USE ONLY)", 0, null, null, null), + list("Officer M3 Armor", 0, /obj/item/clothing/suit/storage/marine/MP/SO, MARINE_CAN_BUY_COMBAT_ARMOR, VENDOR_ITEM_MANDATORY), + list("Officer M10 Helmet", 0, /obj/item/clothing/head/helmet/marine/MP/SO, MARINE_CAN_BUY_COMBAT_HELMET, VENDOR_ITEM_MANDATORY), + list("Marine Combat Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_COMBAT_SHOES, VENDOR_ITEM_MANDATORY), list("POUCHES (CHOOSE 2)", 0, null, null, null), list("Autoinjector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), @@ -233,7 +275,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_cmo, list( list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("First Responder Pouch", 0, /obj/item/storage/pouch/first_responder, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Bicaridine)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/bicaridine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Kelotane)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/kelotane, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Revival Mix)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/revival, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -249,23 +291,106 @@ GLOBAL_LIST_INIT(cm_vending_clothing_cmo, list( )) +/obj/effect/essentials_set/medical/doctor/cmo + spawned_gear_list = list( + /obj/item/device/defibrillator, + /obj/item/storage/firstaid/adv, + /obj/item/device/healthanalyzer, + /obj/item/tool/surgery/surgical_line, + /obj/item/tool/surgery/synthgraft, + /obj/item/device/flashlight/pen, + /obj/item/clothing/accessory/stethoscope, + /obj/item/storage/syringe_case, + ) //------------ EXECUTIVE OFFFICER --------------- + +//------------WEAPON VENDOR--------------- +GLOBAL_LIST_INIT(cm_vending_gear_xo, list( + list("CAPTAIN'S PRIMARY (CHOOSE 1)", 0, null, null, null), + list("M41A MK1 Pulse Rifle", 0, /obj/item/storage/box/guncase/m41aMK1AP, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), + list("MK221 Tactical Shotgun", 0, /obj/effect/essentials_set/xo/shotgunpreset, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), + + list("PRIMARY AMMUNITION", 0, null, null, null), + list("M41A MK1 Magazine", 40, /obj/item/ammo_magazine/rifle/m41aMK1, null, VENDOR_ITEM_RECOMMENDED), + list("M41A MK1 AP Magazine", 60, /obj/item/ammo_magazine/rifle/m41aMK1/ap, null, VENDOR_ITEM_RECOMMENDED), + list("Buckshot Shells", 20, /obj/item/ammo_magazine/shotgun/buckshot, null, VENDOR_ITEM_REGULAR), + list("Shotgun Slugs", 20, /obj/item/ammo_magazine/shotgun/slugs, null, VENDOR_ITEM_REGULAR), + list("Flechette Shells", 20, /obj/item/ammo_magazine/shotgun/flechette, null, VENDOR_ITEM_REGULAR), + + list("EXPLOSIVES", 0, null, null, null), + list("HEDP Grenade Pack", 15, /obj/item/storage/box/packet/high_explosive, null, VENDOR_ITEM_REGULAR), + list("HEFA Grenade Pack", 15, /obj/item/storage/box/packet/hefa, null, VENDOR_ITEM_REGULAR), + list("WP Grenade Pack", 15, /obj/item/storage/box/packet/phosphorus, null, VENDOR_ITEM_REGULAR), + + list("RAIL ATTACHMENTS", 0, null, null, null), + list("Red-Dot Sight", 15, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 15, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("S4 2x Telescopic Mini-Scope", 15, /obj/item/attachable/scope/mini, null, VENDOR_ITEM_REGULAR), + + list("Helmet Visors", 0, null, null, null), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_RECOMMENDED), + + list("UNDERBARREL ATTACHMENTS", 0, null, null, null), + list("Laser Sight", 15, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 15, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 15, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Underbarrel Shotgun", 15, /obj/item/attachable/attached_gun/shotgun, null, VENDOR_ITEM_REGULAR), + list("Underbarrel Extinguisher", 15, /obj/item/attachable/attached_gun/extinguisher, null, VENDOR_ITEM_REGULAR), + list("Underbarrel Flamethrower", 15, /obj/item/attachable/attached_gun/flamer, null, VENDOR_ITEM_REGULAR), + list("Underbarrel Grenade Launcher", 5, /obj/item/attachable/attached_gun/grenade, null, VENDOR_ITEM_REGULAR), + + list("BARREL ATTACHMENTS", 0, null, null, null), + list("Extended Barrel", 15, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), + list("Recoil Compensator", 15, /obj/item/attachable/compensator, null, VENDOR_ITEM_REGULAR), + list("Suppressor", 15, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), + )) + +/obj/effect/essentials_set/xo/shotgunpreset + spawned_gear_list = list( + /obj/item/weapon/gun/shotgun/combat, + /obj/item/ammo_magazine/shotgun/buckshot, + /obj/item/ammo_magazine/shotgun/slugs, + ) + +/obj/structure/machinery/cm_vending/gear/executive_officer + name = "\improper ColMarTech Executive Officer Weapon Rack" + desc = "An automated weapons rack for the Executive Officer. It features a decent selection of weaponry meant only for the second in command of a ship." + req_access = list(ACCESS_MARINE_SENIOR) + vendor_role = list(JOB_XO) + icon_state = "guns" + use_snowflake_points = TRUE + +/obj/structure/machinery/cm_vending/gear/executive_officer/get_listed_products(mob/user) + return GLOB.cm_vending_gear_xo + +//------------UNIFORM/GEAR VENDOR--------------- GLOBAL_LIST_INIT(cm_vending_clothing_xo, list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Service Uniform", 0, /obj/item/clothing/under/marine/officer/bridge, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/almayer/mcom/cdrcom, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Satchel", 0, /obj/item/storage/backpack/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), + list("UNIFORM (CHOOSE ONE)", 0, null, null, null), + list("Service Uniform", 0, /obj/item/clothing/under/marine/officer/bridge, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), + list("Operations Uniform", 0, /obj/item/clothing/under/marine/officer/boiler, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), + list("Formal Uniform", 0, /obj/effect/essentials_set/xoformal, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), + list("PERSONAL WEAPON (CHOOSE 1)", 0, null, null, null), list("VP78 Pistol", 0, /obj/item/storage/belt/gun/m4a3/vp78, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), list("M4A3 Service Pistol", 0, /obj/item/storage/belt/gun/m4a3/commander, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), list("Mod 88 Pistol", 0, /obj/item/storage/belt/gun/m4a3/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), list("M44 Revolver", 0, /obj/item/storage/belt/gun/m44/mp, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), - list("Ceremonial Sword", 0, /obj/item/storage/large_holster/ceremonial_sword/full, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), + + list("BELTS (CHOOSE 1)", 0, null, null, null), + list("G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("Military Police Belt", 0, /obj/item/storage/belt/security/MP/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Medical Storage Rig", 0, /obj/item/storage/belt/medical/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Holster Toolrig", 0, /obj/item/storage/belt/gun/utility/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("COMBAT EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Officer M3 Armor", 0, /obj/item/clothing/suit/storage/marine/MP/SO, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), @@ -294,7 +419,6 @@ GLOBAL_LIST_INIT(cm_vending_clothing_xo, list( list("Document Pouch", 0, /obj/item/storage/pouch/document, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), list("Shoulder Holster", 0, /obj/item/clothing/accessory/storage/holster, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), list("Black Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), @@ -304,7 +428,64 @@ GLOBAL_LIST_INIT(cm_vending_clothing_xo, list( list("HATS (CHOOSE 1)", 0, null, null, null), list("Officer Beret", 0, /obj/item/clothing/head/beret/marine/chiefofficer, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), - list("Peaked cap", 0, /obj/item/clothing/head/marine/peaked, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("Service Peaked Cap", 0, /obj/item/clothing/head/marine/peaked/service, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), list("Patrol Cap", 0, /obj/item/clothing/head/cmcap, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), - list("Officer Cap", 0, /obj/item/clothing/head/cmcap/ro, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("Officer Cap", 0, /obj/item/clothing/head/cmcap/bridge, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + )) + + + +//------------ AUXILIARY SUPPORT OFFICER --------------- +GLOBAL_LIST_INIT(cm_vending_clothing_auxiliary_officer, list( + + list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Insulated Gloves", 0, /obj/item/clothing/gloves/yellow, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Officer Uniform", 0, /obj/item/clothing/under/marine/officer/bridge, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + list("Headset", 0, /obj/item/device/radio/headset/almayer/qm, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + list("Patrol Cap", 0, /obj/item/clothing/head/cmcap, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), + list("Auxiliary Support Officer Jacket", 0, /obj/item/clothing/suit/storage/jacket/marine/service/aso, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + + list("BAG (CHOOSE 1)", 0, null, null, null), + list("USCM Technician Chestrig", 0, /obj/item/storage/backpack/marine/satchel/tech, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), + list("Leather Satchel", 0, /obj/item/storage/backpack/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + + list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), + list("M4A3 Service Pistol", 0, /obj/item/storage/belt/gun/m4a3/full, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), + list("Mod 88 Pistol", 0, /obj/item/storage/belt/gun/m4a3/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), + list("M44 Custom Revolver", 0, /obj/item/storage/belt/gun/m44/custom, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), + + list("COMBAT EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Officer M3 Armor", 0, /obj/item/clothing/suit/storage/marine/MP/SO, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("Officer M10 Helmet", 0, /obj/item/clothing/head/helmet/marine/MP/SO, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), + list("Marine Combat Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + + list("POUCHES (CHOOSE 2)", 0, null, null, null), + list("Document Pouch", 0, /obj/item/storage/pouch/document, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Tools Pouch (Empty)", 0, /obj/item/storage/pouch/tools, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Construction Pouch", 0, /obj/item/storage/pouch/construction, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + + list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), + list("Black Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Brown Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest/brown_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_RECOMMENDED), + list("Shoulder Holster", 0, /obj/item/clothing/accessory/storage/holster, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Webbing", 0, /obj/item/clothing/accessory/storage/webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), )) + +/obj/effect/essentials_set/chiefmilitarypolice + spawned_gear_list = list( + /obj/item/clothing/glasses/sunglasses/sechud, + /obj/item/storage/belt/security/MP/full, + /obj/item/clothing/head/helmet/marine/MP/WO, + ) + +/obj/effect/essentials_set/xoformal + spawned_gear_list = list( + /obj/item/clothing/suit/storage/jacket/marine/dress, + /obj/item/clothing/head/marine/peaked, + /obj/item/clothing/under/marine/dress, + ) diff --git a/code/game/machinery/vending/vendor_types/crew/staff_officer.dm b/code/game/machinery/vending/vendor_types/crew/staff_officer.dm index 5b0324edc2a2..50b83ccdc54f 100644 --- a/code/game/machinery/vending/vendor_types/crew/staff_officer.dm +++ b/code/game/machinery/vending/vendor_types/crew/staff_officer.dm @@ -13,70 +13,41 @@ GLOBAL_LIST_INIT(cm_vending_clothing_staff_officer, list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/almayer/mcom, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Helmet", 0, /obj/item/clothing/head/helmet/marine/MP/SO, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + + list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Service Uniform", 0, /obj/item/clothing/under/marine/officer/bridge, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), + list("Operations Uniform", 0, /obj/item/clothing/under/marine/officer/boiler, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), + list("Gloves", 0, /obj/item/clothing/gloves/marine, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_REGULAR), + + list("JACKET (CHOOSE 1)", 0, null, null, null), + list("Service Jacket", 0, /obj/item/clothing/suit/storage/jacket/marine/service, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), + + list("HAT (CHOOSE 1)", 0, null, null, null), + list("Beret, Green", 0, /obj/item/clothing/head/beret/cm, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + list("Beret, Tan", 0, /obj/item/clothing/head/beret/cm/tan, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + list("Patrol Cap", 0, /obj/item/clothing/head/cmcap, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + list("Officer Cap", 0, /obj/item/clothing/head/cmcap/bridge, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + list("Service Peaked Cap", 0, /obj/item/clothing/head/marine/peaked/service, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + + list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), - list("M44 Revolver", 0, /obj/item/storage/belt/gun/m44/mp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("M4A3 Pistol", 0, /obj/item/storage/belt/gun/m4a3/commander, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("VP78 Pistol", 0, /obj/item/storage/belt/gun/m4a3/vp78, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M44 Revolver", 0, /obj/item/storage/belt/gun/m44/mp, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), + list("M4A3 Pistol", 0, /obj/item/storage/belt/gun/m4a3/commander, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), + list("VP78 Pistol", 0, /obj/item/storage/belt/gun/m4a3/vp78, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), list("BACKPACK (CHOOSE 1)", 0, null, null, null), list("Backpack", 0, /obj/item/storage/backpack/marine, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), list("Satchel", 0, /obj/item/storage/backpack/marine/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), - list("Radio Telephone Pack", 0, /obj/item/storage/backpack/marine/satchel/rto, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), - - list("BELT (CHOOSE 1)", 0, null, null, null), - list("G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("M276 Lifesaver Bag (Full)", 0, /obj/item/storage/belt/medical/lifesaver/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("M276 Medical Storage Rig (Full)", 0, /obj/item/storage/belt/medical/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("M276 M39 Holster Rig", 0, /obj/item/storage/large_holster/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("M276 Shotgun Shell Loading Rig", 0, /obj/item/storage/belt/shotgun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("M276 M40 Grenade Rig", 0, /obj/item/storage/belt/grenade, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - - list("POUCHES (CHOOSE 2)", 0, null, null, null), - list("Autoinjector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Construction Pouch", 0, /obj/item/storage/pouch/construction, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Document Pouch", 0, /obj/item/storage/pouch/document, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Electronics Pouch (Full)", 0, /obj/item/storage/pouch/electronics/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("First Responder Pouch", 0, /obj/item/storage/pouch/first_responder, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Fuel Tank Strap Pouch", 0, /obj/item/storage/pouch/flamertank, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Large Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Tools Pouch (Full)", 0, /obj/item/storage/pouch/tools/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - - list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), - list("Black Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), - list("Brown Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest/brown_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_RECOMMENDED), - list("Drop Pouch", 0, /obj/item/clothing/accessory/storage/droppouch, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), - list("Webbing", 0, /obj/item/clothing/accessory/storage/webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), - list("Shoulder Holster", 0, /obj/item/clothing/accessory/storage/holster, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), - list("MASK (CHOOSE 1)", 0, null, null, null), - list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), - list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), list("OTHER SUPPLIES", 0, null, null, null), list("Binoculars", 5,/obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), list("Rangefinder", 8, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), list("Laser Designator", 12, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_RECOMMENDED), - list("Data Detector", 5, /obj/item/device/motiondetector/intel, null, VENDOR_ITEM_REGULAR), list("Flashlight", 1, /obj/item/device/flashlight, null, VENDOR_ITEM_RECOMMENDED), - list("Fulton Recovery Device", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), - list("Motion Detector", 5, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), + list("Motion Detector", 5, /obj/item/device/motiondetector, null, VENDOR_ITEM_RECOMMENDED), list("Space Cleaner", 2, /obj/item/reagent_container/spray/cleaner, null, VENDOR_ITEM_REGULAR), list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), - list("Machete Scabbard (Full)", 2, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR) )) diff --git a/code/game/machinery/vending/vendor_types/crew/staff_officer_armory.dm b/code/game/machinery/vending/vendor_types/crew/staff_officer_armory.dm new file mode 100644 index 000000000000..ac7b22b4e0a0 --- /dev/null +++ b/code/game/machinery/vending/vendor_types/crew/staff_officer_armory.dm @@ -0,0 +1,83 @@ +/obj/structure/machinery/cm_vending/clothing/staff_officer_armory + name = "\improper ColMarTech Staff Officer Armory Equipment Rack" + desc = "An automated combat equipment vendor for Staff Officers." + req_access = list(ACCESS_MARINE_COMMAND) + icon_state = "mar_rack" + vendor_role = list(JOB_SO) + +/obj/structure/machinery/cm_vending/clothing/staff_officer_armory/get_listed_products(mob/user) + return GLOB.cm_vending_clothing_staff_officer_armory + +//------------GEAR--------------- + +GLOBAL_LIST_INIT(cm_vending_clothing_staff_officer_armory, list( + list("COMBAT EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Officer M3 Armor", 0, /obj/item/clothing/suit/storage/marine/MP/SO, MARINE_CAN_BUY_COMBAT_ARMOR, VENDOR_ITEM_MANDATORY), + list("Officer M10 Helmet", 0, /obj/item/clothing/head/helmet/marine/MP/SO, MARINE_CAN_BUY_COMBAT_HELMET, VENDOR_ITEM_MANDATORY), + list("Marine Combat Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Marine Combat Gloves", 0, /obj/item/clothing/gloves/marine, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + list("Aviator Shades", 0, /obj/item/clothing/glasses/sunglasses/aviator, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_REGULAR), + + list("SPECIALISATION KIT (CHOOSE 1)", 0, null, null, null), + list("Essential Engineer Set", 0, /obj/effect/essentials_set/engi, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_RECOMMENDED), + list("Essential Medical Set", 0, /obj/effect/essentials_set/medic, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_RECOMMENDED), + + list("BELT (CHOOSE 1)", 0, null, null, null), + list("G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Toolbelt Rig (Full)", 0, /obj/item/storage/belt/utility/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Lifesaver Bag (Full)", 0, /obj/item/storage/belt/medical/lifesaver/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 Medical Storage Rig (Full)", 0, /obj/item/storage/belt/medical/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M39 Holster Rig", 0, /obj/item/storage/belt/gun/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 Shotgun Shell Loading Rig", 0, /obj/item/storage/belt/shotgun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M40 Grenade Rig", 0, /obj/item/storage/belt/grenade, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + + list("POUCHES (CHOOSE 2)", 0, null, null, null), + list("Autoinjector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Construction Pouch", 0, /obj/item/storage/pouch/construction, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Document Pouch", 0, /obj/item/storage/pouch/document, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Electronics Pouch (Full)", 0, /obj/item/storage/pouch/electronics/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First Responder Pouch", 0, /obj/item/storage/pouch/first_responder, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Fuel Tank Strap Pouch", 0, /obj/item/storage/pouch/flamertank, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Large Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Tools Pouch (Full)", 0, /obj/item/storage/pouch/tools/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + + list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), + list("Black Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Brown Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest/brown_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_RECOMMENDED), + list("Drop Pouch", 0, /obj/item/clothing/accessory/storage/droppouch, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Webbing", 0, /obj/item/clothing/accessory/storage/webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Shoulder Holster", 0, /obj/item/clothing/accessory/storage/holster, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + + list("MASK (CHOOSE 1)", 0, null, null, null), + list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + + list("OTHER SUPPLIES", 0, null, null, null), + list("Medical Helmet Optic", 5, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), + list("Magnetic Harness", 12, /obj/item/attachable/magnetic_harness, null, VENDOR_ITEM_REGULAR), + list("Radio Telephone Pack", 15, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_RECOMMENDED), + list("Binoculars", 5,/obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), + list("Rangefinder", 8, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), + list("Laser Designator", 12, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_RECOMMENDED), + list("Data Detector", 5, /obj/item/device/motiondetector/intel, null, VENDOR_ITEM_REGULAR), + list("Flashlight", 1, /obj/item/device/flashlight, null, VENDOR_ITEM_RECOMMENDED), + list("Fulton Recovery Device", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), + list("Motion Detector", 5, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), + list("Space Cleaner", 2, /obj/item/reagent_container/spray/cleaner, null, VENDOR_ITEM_REGULAR), + list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), + list("Machete Scabbard (Full)", 5, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR) + )) diff --git a/code/game/machinery/vending/vendor_types/crew/synthetic.dm b/code/game/machinery/vending/vendor_types/crew/synthetic.dm index a16b9d2448be..c3fa77be3798 100644 --- a/code/game/machinery/vending/vendor_types/crew/synthetic.dm +++ b/code/game/machinery/vending/vendor_types/crew/synthetic.dm @@ -18,9 +18,9 @@ list("Multitool", 4, /obj/item/device/multitool, null, VENDOR_ITEM_REGULAR), list("Plasteel x10", 7, /obj/item/stack/sheet/plasteel/small_stack, null, VENDOR_ITEM_REGULAR), list("Sandbags x25", 10, /obj/item/stack/sandbags_empty/half, null, VENDOR_ITEM_REGULAR), - list("Industrial Blowtorch", 2, /obj/item/tool/weldingtool/largetank, null, VENDOR_ITEM_REGULAR), - list("High-Capacity Industrial Blowtorch", 4, /obj/item/tool/weldingtool/hugetank, null, VENDOR_ITEM_REGULAR), list("Plastic Explosive", 3, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), + list("ES-11 Mobile Fuel Canister", 4, /obj/item/tool/weldpack/minitank, null, VENDOR_ITEM_REGULAR), + list("Engineer Kit", 1, /obj/item/storage/toolkit/empty, null, VENDOR_ITEM_REGULAR), list("FIRSTAID KITS", 0, null, null, null), list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_REGULAR), @@ -75,7 +75,8 @@ list("Motion Detector", 5, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), list("Space Cleaner", 2, /obj/item/reagent_container/spray/cleaner, null, VENDOR_ITEM_REGULAR), list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), - list("Machete Scabbard (Full)", 2, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR) + list("Machete Scabbard (Full)", 2, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR), + list("Stethoscope", 2, /obj/item/clothing/accessory/stethoscope, null, VENDOR_ITEM_REGULAR) ) @@ -89,12 +90,10 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth, list( list("Headset", 0, /obj/item/device/radio/headset/almayer/mcom/cdrcom, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("UNIFORM (CHOOSE 1)", 0, null, null, null), - list("Medical Scrubs, Green", 0, /obj/item/clothing/under/rank/medical/green, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), list("Uniform, Outdated Synth", 0, /obj/item/clothing/under/rank/synthetic/old, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), list("Uniform, Standard Synth", 0, /obj/item/clothing/under/rank/synthetic, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("USCM Standard Uniform", 0, /obj/item/clothing/under/marine, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), list("USCM Medical Uniform", 0, /obj/item/clothing/under/marine/medic, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), - list("Working Joe Uniform", 0, /obj/item/clothing/under/rank/synthetic/joe, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), list("WEBBING (CHOOSE 1)", 0, null, null, null), list("Black Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), @@ -102,7 +101,10 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth, list( list("Webbing", 0, /obj/item/clothing/accessory/storage/webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), list("Surgical Webbing Vest", 0, /obj/item/clothing/accessory/storage/surg_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), list("Surgical Webbing Vest (Blue)", 0, /obj/item/clothing/accessory/storage/surg_vest/blue, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), - list("Tool Webbing", 0, /obj/item/clothing/accessory/storage/black_vest/tool_webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Surgical Drop Pouch", 0, /obj/item/clothing/accessory/storage/surg_vest/drop_green, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Surgical Drop Pouch (Blue)", 0, /obj/item/clothing/accessory/storage/surg_vest/drop_blue, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Surgical Drop Pouch (Black)", 0, /obj/item/clothing/accessory/storage/surg_vest/drop_black, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Tool Webbing", 0, /obj/item/clothing/accessory/storage/tool_webbing/equipped, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), list("Drop Pouch", 0, /obj/item/clothing/accessory/storage/droppouch, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), list("SHOES (CHOOSE 1)", 0, null, null, null), @@ -112,12 +114,15 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth, list( list("HELMET (CHOOSE 1)", 0, null, null, null), list("Expedition Cap", 0, /obj/item/clothing/head/cmcap/flap, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Hard Hat, Orange", 0, /obj/item/clothing/head/hardhat/orange, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), - list("Surgical Cap, Green", 0, /obj/item/clothing/head/surgery/green, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Welding Helmet", 0, /obj/item/clothing/head/welding, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("SUIT (CHOOSE 1)", 0, null, null, null), - list("M3A1 Pattern Synthetic Utility Vest (UA Gray)", 0, /obj/item/clothing/suit/storage/marine/light/synvest/vanilla, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), - list("M3A1 Pattern Synthetic Utility Vest (Mission-Specific Camo)", 0, /obj/item/clothing/suit/storage/marine/light/synvest, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("M3A1 Pattern Synthetic Utility Vest (Mission-Specific Camo)", 0, /obj/item/clothing/suit/storage/marine/light/synvest, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), + list("M3A1 Pattern Synthetic Utility Vest (UA Gray)", 0, /obj/item/clothing/suit/storage/marine/light/synvest/grey, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("M3A1 Pattern Synthetic Utility Vest (UA Dark Grey)", 0, /obj/item/clothing/suit/storage/marine/light/synvest/dgrey, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("M3A1 Pattern Synthetic Utility Vest (UA Jungle)", 0, /obj/item/clothing/suit/storage/marine/light/synvest/jungle, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("M3A1 Pattern Synthetic Utility Vest (UA Snow)", 0, /obj/item/clothing/suit/storage/marine/light/synvest/snow, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("M3A1 Pattern Synthetic Utility Vest (UA Desert)", 0, /obj/item/clothing/suit/storage/marine/light/synvest/desert, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), list("GLOVES (CHOOSE 1)", 0, null, null, null), list("Insulated Gloves", 0, /obj/item/clothing/gloves/yellow, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_RECOMMENDED), @@ -151,7 +156,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth, list( list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pressurized Reagent Canister Pouch (Bicaridine)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/bicaridine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pressurized Reagent Canister Pouch (Kelotane)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/kelotane, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pressurized Reagent Canister Pouch (Revival Mix)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/revival, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), @@ -176,26 +181,41 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth, list( //------------SNOWFLAKE VENDOR--------------- GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list( - list("UNIFORM", 0, null, null, null), + list("USCM UNIFORMS", 0, null, null, null), list("Medical Scrubs, Blue", 12, /obj/item/clothing/under/rank/medical/blue, null, VENDOR_ITEM_REGULAR), + list("Medical Scrubs, Light Blue", 0, /obj/item/clothing/under/rank/medical/lightblue, null, VENDOR_ITEM_REGULAR), list("Medical Scrubs, Green", 12, /obj/item/clothing/under/rank/medical/green, null, VENDOR_ITEM_REGULAR), list("Medical Scrubs, Purple", 12, /obj/item/clothing/under/rank/medical/purple, null, VENDOR_ITEM_REGULAR), list("Medical Scrubs, White", 12, /obj/item/clothing/under/rank/medical, null, VENDOR_ITEM_REGULAR), list("USCM Service Uniform", 12, /obj/item/clothing/under/marine/officer/bridge, null, VENDOR_ITEM_REGULAR), - list("USCM Flightsuit", 12, /obj/item/clothing/under/marine/officer/pilot/flight, null, VENDOR_ITEM_REGULAR), - list("Engineer Uniform", 12, /obj/item/clothing/under/marine/officer/engi, null, VENDOR_ITEM_REGULAR), + list("USCM Flightsuit", 12, /obj/item/clothing/under/rank/synthetic/flight, null, VENDOR_ITEM_REGULAR), + list("USCM Engineers Uniform", 12, /obj/item/clothing/under/marine/engineer/standard, null, VENDOR_ITEM_REGULAR), + list("USCM Engineers Uniform (Darker)", 12, /obj/item/clothing/under/marine/engineer/darker, null, VENDOR_ITEM_REGULAR), + list("USCM Engineering Officers Uniform", 12, /obj/item/clothing/under/marine/officer/engi, null, VENDOR_ITEM_REGULAR), + list("USCM Military Police Uniform", 12, /obj/item/clothing/under/marine/mp/standard, null, VENDOR_ITEM_REGULAR), + list("USCM Military Police Uniform (Darker)", 12, /obj/item/clothing/under/marine/mp/darker, null, VENDOR_ITEM_REGULAR), + + list("NON-STANDARD UNIFORMS", 0, null, null, null), list("White T-Shirt and Brown Jeans", 12, /obj/item/clothing/under/tshirt/w_br, null, VENDOR_ITEM_REGULAR), list("Gray T-Shirt and Blue Jeans", 12, /obj/item/clothing/under/tshirt/gray_blu, null, VENDOR_ITEM_REGULAR), list("Red T-Shirt and Black Jeans", 12, /obj/item/clothing/under/tshirt/r_bla, null, VENDOR_ITEM_REGULAR), - list("Gray Utilities", 12, /obj/item/clothing/under/colonist/ua_civvies, null, VENDOR_ITEM_REGULAR), - list("Brown Utilities", 12, /obj/item/clothing/under/colonist/wy_davisone, null, VENDOR_ITEM_REGULAR), - list("Steward Utilities", 12, /obj/item/clothing/under/colonist/wy_joliet_shopsteward, null, VENDOR_ITEM_REGULAR), + list("Frontier Jumpsuit", 12, /obj/item/clothing/under/rank/synthetic/frontier, null, VENDOR_ITEM_REGULAR), + list("UA Grey Jumpsuit", 12, /obj/item/clothing/under/colonist/ua_civvies, null, VENDOR_ITEM_REGULAR), + list("UA Brown Jumpsuit", 12, /obj/item/clothing/under/colonist/wy_davisone, null, VENDOR_ITEM_REGULAR), + list("UA Green Utility Uniform", 12, /obj/item/clothing/under/rank/synthetic/utility, null, VENDOR_ITEM_REGULAR), + list("Grey Utilities", 12, /obj/item/clothing/under/rank/synthetic/utility/yellow, null, VENDOR_ITEM_REGULAR), + list("Grey Utilities and Blue Jeans", 12, /obj/item/clothing/under/rank/synthetic/utility/red, null, VENDOR_ITEM_REGULAR), + list("Blue Utilities and Brown Jeans", 12, /obj/item/clothing/under/rank/synthetic/utility/blue, null, VENDOR_ITEM_REGULAR), + list("Steward Clothes", 12, /obj/item/clothing/under/colonist/wy_joliet_shopsteward, null, VENDOR_ITEM_REGULAR), + list("Red Dress Skirt", 12, /obj/item/clothing/under/blackskirt, null, VENDOR_ITEM_REGULAR), + list("Working Joe Uniform", 36, /obj/item/clothing/under/rank/synthetic/joe, null, VENDOR_ITEM_REGULAR), list("GLASSES", 0, null, null, null), list("HealthMate HUD", 12, /obj/item/clothing/glasses/hud/health, null, VENDOR_ITEM_REGULAR), list("Marine RPG Glasses", 12, /obj/item/clothing/glasses/regular, null, VENDOR_ITEM_REGULAR), list("Optical Meson Scanner", 12, /obj/item/clothing/glasses/meson, null, VENDOR_ITEM_REGULAR), list("PatrolMate HUD", 12, /obj/item/clothing/glasses/hud/security, null, VENDOR_ITEM_REGULAR), + list("Security HUD Glasses", 12, /obj/item/clothing/glasses/sunglasses/sechud, null, VENDOR_ITEM_REGULAR), list("Sunglasses", 12, /obj/item/clothing/glasses/sunglasses, null, VENDOR_ITEM_REGULAR), list("Welding Goggles", 12, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), @@ -209,54 +229,84 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list( list("Shoes, Red", 12, /obj/item/clothing/shoes/red, null, VENDOR_ITEM_REGULAR), list("Shoes, White", 12, /obj/item/clothing/shoes/white, null, VENDOR_ITEM_REGULAR), list("Shoes, Yellow", 12, /obj/item/clothing/shoes/yellow, null, VENDOR_ITEM_REGULAR), + list("Shoes, Seegson", 24, /obj/item/clothing/shoes/dress, null, VENDOR_ITEM_REGULAR), - list("HELMET", 0, null, null, null), + list("HEADWEAR", 0, null, null, null), list("Beanie", 12, /obj/item/clothing/head/beanie, null, VENDOR_ITEM_REGULAR), list("Beret, Engineering", 12, /obj/item/clothing/head/beret/eng, null, VENDOR_ITEM_REGULAR), list("Beret, Purple", 12, /obj/item/clothing/head/beret/jan, null, VENDOR_ITEM_REGULAR), list("Beret, Red", 12, /obj/item/clothing/head/beret/cm/red, null, VENDOR_ITEM_REGULAR), list("Beret, Standard", 12, /obj/item/clothing/head/beret/cm, null, VENDOR_ITEM_REGULAR), list("Beret, Tan", 12, /obj/item/clothing/head/beret/cm/tan, null, VENDOR_ITEM_REGULAR), - list("Cap", 12, /obj/item/clothing/head/cmcap, null, VENDOR_ITEM_REGULAR), + list("Beret, Black", 12, /obj/item/clothing/head/beret/cm/black, null, VENDOR_ITEM_REGULAR), + list("Beret, White", 12, /obj/item/clothing/head/beret/cm/white, null, VENDOR_ITEM_REGULAR), list("Surgical Cap, Blue", 12, /obj/item/clothing/head/surgery/blue, null, VENDOR_ITEM_REGULAR), list("Surgical Cap, Blue", 12, /obj/item/clothing/head/surgery/purple, null, VENDOR_ITEM_REGULAR), list("Surgical Cap, Green", 12, /obj/item/clothing/head/surgery/green, null, VENDOR_ITEM_REGULAR), list("Ushanka", 12, /obj/item/clothing/head/ushanka, null, VENDOR_ITEM_REGULAR), + list("Cap", 12, /obj/item/clothing/head/cmcap, null, VENDOR_ITEM_REGULAR), list("MP Cap", 12, /obj/item/clothing/head/beret/marine/mp/mpcap, null, VENDOR_ITEM_REGULAR), - list("RO Cap", 12, /obj/item/clothing/head/cmcap/req, null, VENDOR_ITEM_REGULAR), - list("Officer Cap", 12, /obj/item/clothing/head/cmcap/ro, null, VENDOR_ITEM_REGULAR), + list("QM Cap", 12, /obj/item/clothing/head/cmcap/req/ro, null, VENDOR_ITEM_REGULAR), + list("Req Cap", 12, /obj/item/clothing/head/cmcap/req, null, VENDOR_ITEM_REGULAR), + list("Officer Cap", 12, /obj/item/clothing/head/cmcap/bridge, null, VENDOR_ITEM_REGULAR), + list("Bio Hood", 12, /obj/item/clothing/head/bio_hood/synth, null, VENDOR_ITEM_REGULAR), + + list("HELMET", 0, null, null, null), + list("Marine Helmet (Mission-Specific Camo)", 12, /obj/item/clothing/head/helmet/marine, null, VENDOR_ITEM_REGULAR), + list("Marine Helmet (Grey)", 12, /obj/item/clothing/head/helmet/marine/grey, null, VENDOR_ITEM_REGULAR), + list("Marine Helmet (Jungle)", 12, /obj/item/clothing/head/helmet/marine/jungle, null, VENDOR_ITEM_REGULAR), + list("Marine Helmet (Snow)", 12, /obj/item/clothing/head/helmet/marine/snow, null, VENDOR_ITEM_REGULAR), + list("Marine Helmet (Desert)", 12, /obj/item/clothing/head/helmet/marine/desert, null, VENDOR_ITEM_REGULAR), + list("Technician Helmet", 12, /obj/item/clothing/head/helmet/marine/tech, null, VENDOR_ITEM_REGULAR), + list("Corpsman Helmet", 12, /obj/item/clothing/head/helmet/marine/medic, null, VENDOR_ITEM_REGULAR), + list("Attachable Helmet Shield", 12, /obj/item/prop/helmetgarb/riot_shield, null, VENDOR_ITEM_REGULAR), list("SUIT", 0, null, null, null), - list("Brown Bomber Jacket", 12, /obj/item/clothing/suit/storage/bomber, null, VENDOR_ITEM_REGULAR), - list("Black Bomber Jacket", 12, /obj/item/clothing/suit/storage/bomber/alt, null, VENDOR_ITEM_REGULAR), - list("External webbing", 12, /obj/item/clothing/suit/storage/webbing, null, VENDOR_ITEM_REGULAR), - list("Orange Hazard Vest", 12, /obj/item/clothing/suit/storage/hazardvest, null, VENDOR_ITEM_REGULAR), - list("Blue Hazard Vest", 12, /obj/item/clothing/suit/storage/hazardvest/blue, null, VENDOR_ITEM_REGULAR), - list("Yellow Hazard Vest", 12, /obj/item/clothing/suit/storage/hazardvest/yellow, null, VENDOR_ITEM_REGULAR), - list("Black Hazard Vest", 12, /obj/item/clothing/suit/storage/hazardvest/black, null, VENDOR_ITEM_REGULAR), + list("Bomber Jacket, Brown", 12, /obj/item/clothing/suit/storage/bomber, null, VENDOR_ITEM_REGULAR), + list("Bomber Jacket, Black", 12, /obj/item/clothing/suit/storage/bomber/alt, null, VENDOR_ITEM_REGULAR), + list("External Webbing", 12, /obj/item/clothing/suit/storage/webbing, null, VENDOR_ITEM_REGULAR), + list("Utility Vest", 12, /obj/item/clothing/suit/storage/utility_vest, null, VENDOR_ITEM_REGULAR), + list("Hazard Vest(Orange)", 12, /obj/item/clothing/suit/storage/hazardvest, null, VENDOR_ITEM_REGULAR), + list("Hazard Vest(Blue)", 12, /obj/item/clothing/suit/storage/hazardvest/blue, null, VENDOR_ITEM_REGULAR), + list("Hazard Vest(Yellow)", 12, /obj/item/clothing/suit/storage/hazardvest/yellow, null, VENDOR_ITEM_REGULAR), + list("Hazard Vest(Black)", 12, /obj/item/clothing/suit/storage/hazardvest/black, null, VENDOR_ITEM_REGULAR), list("Synthetic's Snow Suit", 12, /obj/item/clothing/suit/storage/snow_suit/synth, null, VENDOR_ITEM_REGULAR), list("USCM Service Jacket", 12, /obj/item/clothing/suit/storage/jacket/marine/service, null, VENDOR_ITEM_REGULAR), list("USCM MP Service Jacket", 12, /obj/item/clothing/suit/storage/jacket/marine/service/mp, null, VENDOR_ITEM_REGULAR), - list("Brown Windbreaker", 12, /obj/item/clothing/suit/storage/windbreaker/windbreaker_brown, null, VENDOR_ITEM_REGULAR), - list("Gray Windbreaker", 12, /obj/item/clothing/suit/storage/windbreaker/windbreaker_gray, null, VENDOR_ITEM_REGULAR), - list("Green Windbreaker", 12, /obj/item/clothing/suit/storage/windbreaker/windbreaker_green, null, VENDOR_ITEM_REGULAR), - list("First Responder Windbreaker", 12, /obj/item/clothing/suit/storage/windbreaker/windbreaker_fr, null, VENDOR_ITEM_REGULAR), - list("Exploration Windbreaker", 12, /obj/item/clothing/suit/storage/windbreaker/windbreaker_covenant, null, VENDOR_ITEM_REGULAR), + list("Windbreaker, Brown", 12, /obj/item/clothing/suit/storage/windbreaker/windbreaker_brown, null, VENDOR_ITEM_REGULAR), + list("Windbreaker, Grey", 12, /obj/item/clothing/suit/storage/windbreaker/windbreaker_gray, null, VENDOR_ITEM_REGULAR), + list("Windbreaker, Green", 12, /obj/item/clothing/suit/storage/windbreaker/windbreaker_green, null, VENDOR_ITEM_REGULAR), + list("Windbreaker, First Responder", 12, /obj/item/clothing/suit/storage/windbreaker/windbreaker_fr, null, VENDOR_ITEM_REGULAR), + list("Windbreaker, Exploration", 12, /obj/item/clothing/suit/storage/windbreaker/windbreaker_covenant, null, VENDOR_ITEM_REGULAR), list("Labcoat", 12, /obj/item/clothing/suit/storage/labcoat, null, VENDOR_ITEM_REGULAR), list("Labcoat, Researcher", 12, /obj/item/clothing/suit/storage/labcoat/researcher, null, VENDOR_ITEM_REGULAR), - list("RO Jacket", 12, /obj/item/clothing/suit/storage/RO, null, VENDOR_ITEM_REGULAR), + list("Quartermaster Jacket", 12, /obj/item/clothing/suit/storage/RO, null, VENDOR_ITEM_REGULAR), + list("Bio Suit", 12, /obj/item/clothing/suit/storage/synthbio, null, VENDOR_ITEM_REGULAR), + list("USCM Poncho (Mission-Specific Camo)", 12, /obj/item/clothing/accessory/poncho, null, VENDOR_ITEM_REGULAR), + list("USCM Poncho (Green)", 12, /obj/item/clothing/accessory/poncho/green, null, VENDOR_ITEM_REGULAR), + list("USCM Poncho (Brown)", 12, /obj/item/clothing/accessory/poncho/brown, null, VENDOR_ITEM_REGULAR), + list("USCM Poncho (Black)", 12, /obj/item/clothing/accessory/poncho/black, null, VENDOR_ITEM_REGULAR), + list("USCM Poncho (Blue)", 12, /obj/item/clothing/accessory/poncho/blue, null, VENDOR_ITEM_REGULAR), + list("USCM Poncho (Purple)", 12, /obj/item/clothing/accessory/poncho/purple, null, VENDOR_ITEM_REGULAR), + list("BACKPACK", 0, null, null, null), list("Backpack, Industrial", 12, /obj/item/storage/backpack/industrial, null, VENDOR_ITEM_REGULAR), - list("Backpack, USCM IMB", 12, /obj/item/storage/backpack/marine, null, VENDOR_ITEM_REGULAR), list("Backpack, USCM Medical", 12, /obj/item/storage/backpack/marine/medic, null, VENDOR_ITEM_REGULAR), - list("Backpack, USCM Technician", 12, /obj/item/storage/backpack/marine/tech, null, VENDOR_ITEM_REGULAR), + list("Chestrig, Technician", 12, /obj/item/storage/backpack/marine/satchel/tech, null, VENDOR_ITEM_REGULAR), list("Satchel, USCM", 12, /obj/item/storage/backpack/marine/satchel, null, VENDOR_ITEM_REGULAR), list("Satchel, Leather", 12, /obj/item/storage/backpack/satchel, null, VENDOR_ITEM_REGULAR), list("Satchel, Medical", 12, /obj/item/storage/backpack/satchel/med, null, VENDOR_ITEM_REGULAR), list("USCM RTO Pack", 12, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), list("USCM Welderpack", 12, /obj/item/storage/backpack/marine/engineerpack, null, VENDOR_ITEM_REGULAR), list("USCM Weldersatchel", 12, /obj/item/storage/backpack/marine/engineerpack/satchel, null, VENDOR_ITEM_REGULAR), + list("USCM Welder Chestrig", 12, /obj/item/storage/backpack/marine/engineerpack/welder_chestrig, null, VENDOR_ITEM_REGULAR), + + list("OTHER", 0, null, null, null), + list("Red Armband", 6, /obj/item/clothing/accessory/armband, null, VENDOR_ITEM_REGULAR), + list("Yellow Armband", 6, /obj/item/clothing/accessory/armband/engine, null, VENDOR_ITEM_REGULAR), + list("Green Armband", 6, /obj/item/clothing/accessory/armband/medgreen, null, VENDOR_ITEM_REGULAR), + )) /obj/structure/machinery/cm_vending/clothing/synth/snowflake @@ -267,7 +317,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list( use_snowflake_points = TRUE vendor_theme = VENDOR_THEME_COMPANY req_access = list(ACCESS_MARINE_SYNTH) - vendor_role = list(JOB_SYNTH, JOB_SYNTH_SURVIVOR) + vendor_role = list(JOB_SYNTH, JOB_SYNTH_SURVIVOR, JOB_WORKING_JOE) vend_delay = 1 SECONDS @@ -286,28 +336,30 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list( req_access = list(ACCESS_MARINE_SYNTH) vendor_role = list(JOB_SYNTH) -/obj/structure/machinery/cm_vending/own_points/experimental_tools/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/coin/marine/synth)) - if(user.drop_inv_item_to_loc(W, src)) - available_points = available_points + 45 +/obj/structure/machinery/cm_vending/own_points/experimental_tools/redeem_token(obj/item/coin/marine/token, mob/user) + if(token.token_type == VEND_TOKEN_SYNTH) + if(user.drop_inv_item_to_loc(token, src)) + available_points = 30 available_points_to_display = available_points - to_chat(user, SPAN_NOTICE("You insert \the [W] into \the [src].")) - return + to_chat(user, SPAN_NOTICE("You insert \the [token] into \the [src].")) + return TRUE return ..() /obj/structure/machinery/cm_vending/own_points/experimental_tools/get_listed_products(mob/user) - return list( - list("Autocompressor", 15, /obj/item/clothing/suit/auto_cpr, null, VENDOR_ITEM_REGULAR), - list("Backpack Firefighting Watertank", 15, /obj/item/reagent_container/glass/watertank/atmos, null, VENDOR_ITEM_REGULAR), - list("Breaching Hammer", 15, /obj/item/weapon/twohanded/breacher/synth, null, VENDOR_ITEM_REGULAR), - list("Compact Defibrillator", 15, /obj/item/device/defibrillator/compact, null, VENDOR_ITEM_REGULAR), - list("Compact Nailgun kit", 15, /obj/effect/essentials_set/cnailgun, null, VENDOR_ITEM_REGULAR), - list("Crew Monitor", 15, /obj/item/tool/crew_monitor, null, VENDOR_ITEM_REGULAR), - list("Experimental Meson Goggles", 15, /obj/item/clothing/glasses/night/experimental_mesons, null, VENDOR_ITEM_REGULAR), - list("Maintenance Jack", 15, /obj/item/maintenance_jack, null, VENDOR_ITEM_REGULAR), - list("Portable Dialysis Machine", 15, /obj/item/tool/portadialysis, null, VENDOR_ITEM_REGULAR), - list("Telescopic Baton", 15, /obj/item/weapon/telebaton, null, VENDOR_ITEM_REGULAR), - ) + return GLOB.cm_vending_synth_tools + +GLOBAL_LIST_INIT(cm_vending_synth_tools, list( + list("Autocompressor", 15, /obj/item/clothing/suit/auto_cpr, null, VENDOR_ITEM_REGULAR), + list("Backpack Firefighting Watertank", 15, /obj/item/reagent_container/glass/watertank/atmos, null, VENDOR_ITEM_REGULAR), + list("Breaching Hammer", 15, /obj/item/weapon/twohanded/breacher/synth, null, VENDOR_ITEM_REGULAR), + list("Compact Defibrillator", 15, /obj/item/device/defibrillator/compact, null, VENDOR_ITEM_REGULAR), + list("Compact Nailgun kit", 15, /obj/effect/essentials_set/cnailgun, null, VENDOR_ITEM_REGULAR), + list("Crew Monitor", 15, /obj/item/tool/crew_monitor, null, VENDOR_ITEM_REGULAR), + list("Experimental Meson Goggles", 15, /obj/item/clothing/glasses/night/experimental_mesons, null, VENDOR_ITEM_REGULAR), + list("Maintenance Jack", 15, /obj/item/maintenance_jack, null, VENDOR_ITEM_REGULAR), + list("Portable Dialysis Machine", 15, /obj/item/tool/portadialysis, null, VENDOR_ITEM_REGULAR), + list("Telescopic Baton", 15, /obj/item/weapon/telebaton, null, VENDOR_ITEM_REGULAR), +)) //------------EXPERIMENTAL TOOL KITS--------------- /obj/effect/essentials_set/cnailgun diff --git a/code/game/machinery/vending/vendor_types/crew/vehicle_crew.dm b/code/game/machinery/vending/vendor_types/crew/vehicle_crew.dm index 023bbe390bfc..6877c2b4b5b3 100644 --- a/code/game/machinery/vending/vendor_types/crew/vehicle_crew.dm +++ b/code/game/machinery/vending/vendor_types/crew/vehicle_crew.dm @@ -26,12 +26,12 @@ /obj/structure/machinery/cm_vending/gear/vehicle_crew/Initialize(mapload, ...) . = ..() RegisterSignal(SSdcs, COMSIG_GLOB_VEHICLE_ORDERED, PROC_REF(populate_products)) - if(!VehicleGearConsole) - VehicleGearConsole = src + if(!GLOB.VehicleGearConsole) + GLOB.VehicleGearConsole = src /obj/structure/machinery/cm_vending/gear/vehicle_crew/Destroy() UnregisterSignal(SSdcs, COMSIG_GLOB_VEHICLE_ORDERED) - VehicleGearConsole = null + GLOB.VehicleGearConsole = null return ..() /obj/structure/machinery/cm_vending/gear/vehicle_crew/get_appropriate_vend_turf(mob/living/carbon/human/H) @@ -55,8 +55,10 @@ SIGNAL_HANDLER UnregisterSignal(SSdcs, COMSIG_GLOB_VEHICLE_ORDERED) - selected_vehicle = "APC" - available_categories &= ~(VEHICLE_ARMOR_AVAILABLE|VEHICLE_INTEGRAL_AVAILABLE) //APC lacks these, so we need to remove these flags to be able to access spare parts section + if(!selected_vehicle) + selected_vehicle = "APC" // The whole thing seems to be based upon the assumption you unlock tank as an override, defaulting to APC + if(selected_vehicle == "APC") + available_categories &= ~(VEHICLE_ARMOR_AVAILABLE|VEHICLE_INTEGRAL_AVAILABLE) //APC lacks these, so we need to remove these flags to be able to access spare parts section /obj/structure/machinery/cm_vending/gear/vehicle_crew/get_listed_products(mob/user) var/list/display_list = list() @@ -85,9 +87,9 @@ . = list() . += ui_static_data(user) - if(supply_controller.tank_points) //we steal points from supply_controller, meh-he-he. Solely to be able to modify amount of points in vendor if needed by just changing one var. - available_points_to_display = supply_controller.tank_points - supply_controller.tank_points = 0 + if(GLOB.supply_controller.tank_points) //we steal points from GLOB.supply_controller, meh-he-he. Solely to be able to modify amount of points in vendor if needed by just changing one var. + available_points_to_display = GLOB.supply_controller.tank_points + GLOB.supply_controller.tank_points = 0 .["current_m_points"] = available_points_to_display var/list/ui_listed_products = get_listed_products(user) @@ -306,7 +308,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_vehicle_crew, list( list("Gloves", 0, /obj/item/clothing/gloves/yellow, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Tanker Armor", 0, /obj/item/clothing/suit/storage/marine/tanker, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("M50 Tanker Helmet", 0, /obj/item/clothing/head/helmet/marine/tech/tanker, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), - list("SensorMate HUD", 0, /obj/item/clothing/glasses/hud/sensor, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), + list("Medical Helmet Optic", 0, /obj/item/device/helmet_visor/medical, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), list("Welding Kit", 0, /obj/item/tool/weldpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), @@ -319,7 +321,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_vehicle_crew, list( list("M103 Vehicle-Ammo Rig", 0, /obj/item/storage/belt/tank, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("M276 General Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("M276 M39 Holster Rig", 0, /obj/item/storage/large_holster/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M39 Holster Rig", 0, /obj/item/storage/belt/gun/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M44 Holster Rig", 0, /obj/item/storage/belt/gun/m44, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Shotgun Shell Loading Rig", 0, /obj/item/storage/belt/shotgun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/dress.dm b/code/game/machinery/vending/vendor_types/dress.dm index aff221260d03..d49361d912a0 100644 --- a/code/game/machinery/vending/vendor_types/dress.dm +++ b/code/game/machinery/vending/vendor_types/dress.dm @@ -6,11 +6,11 @@ /obj/structure/machinery/cm_vending/clothing/dress/proc/get_listed_products_for_role(list/role_specific_uniforms) . = list() - for(var/category_type in uniform_categories) + for(var/category_type in GLOB.uniform_categories) var/display_category = FALSE - if(!uniform_categories[category_type]) + if(!GLOB.uniform_categories[category_type]) continue - for(var/category in uniform_categories[category_type]) + for(var/category in GLOB.uniform_categories[category_type]) if((category in role_specific_uniforms) && role_specific_uniforms[category]) display_category = TRUE break @@ -19,7 +19,7 @@ . += list( list(category_type, 0, null, null, null) ) - for(var/object_type in uniform_categories[category_type]) + for(var/object_type in GLOB.uniform_categories[category_type]) if(!role_specific_uniforms[object_type]) continue for(var/uniform_path in role_specific_uniforms[object_type]) @@ -52,11 +52,11 @@ if(istype(id_card)) role_specific_uniforms = id_card.uniform_sets vended_items = id_card.vended_items - for(var/category_type in uniform_categories) + for(var/category_type in GLOB.uniform_categories) var/display_category = FALSE - if(!uniform_categories[category_type]) + if(!GLOB.uniform_categories[category_type]) continue - for(var/category in uniform_categories[category_type]) + for(var/category in GLOB.uniform_categories[category_type]) if((category in role_specific_uniforms) && role_specific_uniforms[category]) display_category = TRUE break @@ -65,7 +65,7 @@ display_list += list( list(category_type, 0, null, null, null) ) - for(var/object_type in uniform_categories[category_type]) + for(var/object_type in GLOB.uniform_categories[category_type]) if(!role_specific_uniforms[object_type]) continue for(var/uniform_path in role_specific_uniforms[object_type]) @@ -134,10 +134,10 @@ to_chat(H, SPAN_WARNING("This machine isn't for you.")) return - for(var/category in uniform_categories) // Very Hacky fix + for(var/category in GLOB.uniform_categories) // Very Hacky fix if(!exploiting) break - for(var/specific_category in uniform_categories[category]) + for(var/specific_category in GLOB.uniform_categories[category]) if(!exploiting) break if(!(specific_category in id_card.uniform_sets)) diff --git a/code/game/machinery/vending/vendor_types/engineering.dm b/code/game/machinery/vending/vendor_types/engineering.dm index 83f69ae09889..245e06009695 100644 --- a/code/game/machinery/vending/vendor_types/engineering.dm +++ b/code/game/machinery/vending/vendor_types/engineering.dm @@ -25,6 +25,7 @@ list("Utility Tool Belt", round(scale * 2), /obj/item/storage/belt/utility, VENDOR_ITEM_REGULAR), list("Welding Goggles", round(scale * 2), /obj/item/clothing/glasses/welding, VENDOR_ITEM_REGULAR), list("Welding Helmet", round(scale * 2), /obj/item/clothing/head/welding, VENDOR_ITEM_REGULAR), + list("Engineer Kit", round(scale * 2), /obj/item/storage/toolkit/empty, VENDOR_ITEM_REGULAR), list("SCANNERS", -1, null, null), list("Atmos Scanner", round(scale * 2), /obj/item/device/analyzer, VENDOR_ITEM_REGULAR), @@ -36,7 +37,6 @@ list("TOOLS", -1, null, null), list("Blowtorch", round(scale * 4), /obj/item/tool/weldingtool, VENDOR_ITEM_REGULAR), list("Crowbar", round(scale * 4), /obj/item/tool/crowbar, VENDOR_ITEM_REGULAR), - list("High-Capacity Industrial Blowtorch", 2, /obj/item/tool/weldingtool/hugetank, VENDOR_ITEM_REGULAR), list("ME3 Hand Welder", round(scale * 2), /obj/item/tool/weldingtool/simple, VENDOR_ITEM_REGULAR), list("Screwdriver", round(scale * 4), /obj/item/tool/screwdriver, VENDOR_ITEM_REGULAR), list("Wirecutters", round(scale * 4), /obj/item/tool/wirecutters, VENDOR_ITEM_REGULAR), @@ -54,6 +54,8 @@ list("EQUIPMENT", -1, null, null), list("Utility Tool Belt", round(scale * 4), /obj/item/storage/belt/utility, VENDOR_ITEM_REGULAR), list("Cable Coil", round(scale * 4), /obj/item/stack/cable_coil/random, VENDOR_ITEM_REGULAR), + list("Welding Goggles", round(scale * 2), /obj/item/clothing/glasses/welding, VENDOR_ITEM_REGULAR), + list("Engineer Kit", round(scale * 2), /obj/item/storage/toolkit/empty, VENDOR_ITEM_REGULAR), list("TOOLS", -1, null, null), list("Blowtorch", round(scale * 4), /obj/item/tool/weldingtool, VENDOR_ITEM_REGULAR), @@ -88,10 +90,16 @@ list("Research Data Terminal", 2, /obj/item/circuitboard/computer/research_terminal, VENDOR_ITEM_REGULAR), list("P.A.C.M.A.N Generator", 1, /obj/item/circuitboard/machine/pacman, VENDOR_ITEM_REGULAR), list("Auxiliar Power Storage Unit", 2, /obj/item/circuitboard/machine/ghettosmes, VENDOR_ITEM_REGULAR), + list("Air Alarm Electronics", 2, /obj/item/circuitboard/airalarm, VENDOR_ITEM_REGULAR), + list("Security Camera Monitor", 2, /obj/item/circuitboard/computer/cameras, VENDOR_ITEM_REGULAR), + list("Station Alerts", 2, /obj/item/circuitboard/computer/stationalert, VENDOR_ITEM_REGULAR), + list("Arcade", 2, /obj/item/circuitboard/computer/arcade, VENDOR_ITEM_REGULAR), + list("Atmospheric Monitor", 2, /obj/item/circuitboard/computer/air_management, VENDOR_ITEM_REGULAR), ) /obj/structure/machinery/cm_vending/sorted/tech/tool_storage/antag - req_access = list(ACCESS_ILLEGAL_PIRATE) + req_one_access = list(ACCESS_ILLEGAL_PIRATE, ACCESS_UPP_GENERAL, ACCESS_CLF_GENERAL) + req_access = null /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage name = "\improper Electronics Vendor" @@ -114,7 +122,8 @@ ) /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage/antag - req_access = list(ACCESS_ILLEGAL_PIRATE) + req_one_access = list(ACCESS_ILLEGAL_PIRATE, ACCESS_UPP_GENERAL, ACCESS_CLF_GENERAL) + req_access = null /obj/structure/machinery/cm_vending/sorted/tech/comp_storage name = "\improper Component Storage Machine" @@ -143,7 +152,8 @@ ) /obj/structure/machinery/cm_vending/sorted/tech/comp_storage/antag - req_access = list(ACCESS_ILLEGAL_PIRATE) + req_one_access = list(ACCESS_ILLEGAL_PIRATE, ACCESS_UPP_GENERAL, ACCESS_CLF_GENERAL) + req_access = null //------COLONY-SPECIFIC VENDORS------- diff --git a/code/game/machinery/vending/vendor_types/food.dm b/code/game/machinery/vending/vendor_types/food.dm index 51749ab2a010..62ed5124727e 100644 --- a/code/game/machinery/vending/vendor_types/food.dm +++ b/code/game/machinery/vending/vendor_types/food.dm @@ -25,6 +25,27 @@ list("W-Y Flask", 5, /obj/item/reagent_container/food/drinks/flask/weylandyutani, VENDOR_ITEM_REGULAR) ) +/obj/structure/machinery/cm_vending/sorted/marine_food/tutorial + hackable = FALSE + wrenchable = FALSE + req_access = list(ACCESS_TUTORIAL_LOCKED) + +/obj/structure/machinery/cm_vending/sorted/marine_food/tutorial/populate_product_list(scale) + listed_products = list( + list("PREPARED MEALS", -1, null, null), + list("USCM Prepared Meal (Chicken)", 0, /obj/item/reagent_container/food/snacks/mre_pack/meal5, VENDOR_ITEM_REGULAR), + list("USCM Prepared Meal (Cornbread)", 0, /obj/item/reagent_container/food/snacks/mre_pack/meal1, VENDOR_ITEM_REGULAR), + list("USCM Prepared Meal (Pasta)", 0, /obj/item/reagent_container/food/snacks/mre_pack/meal3, VENDOR_ITEM_REGULAR), + list("USCM Prepared Meal (Pizza)", 0, /obj/item/reagent_container/food/snacks/mre_pack/meal4, VENDOR_ITEM_REGULAR), + list("USCM Prepared Meal (Pork)", 0, /obj/item/reagent_container/food/snacks/mre_pack/meal2, VENDOR_ITEM_REGULAR), + list("USCM Prepared Meal (Tofu)", 0, /obj/item/reagent_container/food/snacks/mre_pack/meal6, VENDOR_ITEM_REGULAR), + list("USCM Protein Bar", 1, /obj/item/reagent_container/food/snacks/protein_pack, VENDOR_ITEM_RECOMMENDED), + list("FLASKS", -1, null, null), + list("Canteen", 0, /obj/item/reagent_container/food/drinks/flask/canteen, VENDOR_ITEM_REGULAR), + list("Metal Flask", 0, /obj/item/reagent_container/food/drinks/flask, VENDOR_ITEM_REGULAR), + list("USCM Flask", 0, /obj/item/reagent_container/food/drinks/flask/marine, VENDOR_ITEM_REGULAR), + list("W-Y Flask", 0, /obj/item/reagent_container/food/drinks/flask/weylandyutani, VENDOR_ITEM_REGULAR) + ) //------------BOOZE-O-MAT VENDOR--------------- /obj/structure/machinery/cm_vending/sorted/boozeomat @@ -38,8 +59,8 @@ unslashable = FALSE wrenchable = TRUE -/obj/structure/machinery/cm_vending/sorted/boozeomat/get_listed_products(mob/user) - return list( +/obj/structure/machinery/cm_vending/sorted/boozeomat/populate_product_list(scale) + listed_products = list( list("ALCOHOL", -1, null, null), list("Ale", 6, /obj/item/reagent_container/food/drinks/cans/ale, VENDOR_ITEM_REGULAR), list("Beer", 6, /obj/item/reagent_container/food/drinks/cans/beer, VENDOR_ITEM_REGULAR), @@ -97,8 +118,8 @@ unslashable = FALSE wrenchable = TRUE -/obj/structure/machinery/cm_vending/sorted/boozeomat/chess/get_listed_products(mob/user) - return list( +/obj/structure/machinery/cm_vending/sorted/boozeomat/chess/populate_product_list(scale) + listed_products = list( list("White Pieces", -1, null, null), list("Pawn", 2, /obj/item/reagent_container/food/drinks/bottle/vodka/chess/w_pawn, VENDOR_ITEM_REGULAR), list("Bishop", 2, /obj/item/reagent_container/food/drinks/bottle/vodka/chess/w_bishop, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/intelligence_officer.dm b/code/game/machinery/vending/vendor_types/intelligence_officer.dm index 829c542f6b26..954c3438a4c9 100644 --- a/code/game/machinery/vending/vendor_types/intelligence_officer.dm +++ b/code/game/machinery/vending/vendor_types/intelligence_officer.dm @@ -4,24 +4,10 @@ GLOBAL_LIST_INIT(cm_vending_gear_intelligence_officer, list( list("INTELLIGENCE SET (MANDATORY)", 0, null, null, null), list("Essential Intelligence Set", 0, /obj/effect/essentials_set/intelligence_officer, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), - list("SUPPLIES", 0, null, null, null), + list("ENGINEERING SUPPLIES", 0, null, null, null), list("Power Control Module", 5, /obj/item/circuitboard/apc, null, VENDOR_ITEM_REGULAR), - list("Binoculars", 5, /obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), - list("M2 Night Vision Goggles", 25, /obj/item/prop/helmetgarb/helmet_nvg, null, VENDOR_ITEM_RECOMMENDED), - list("Data Detector", 5, /obj/item/device/motiondetector/intel, null, VENDOR_ITEM_REGULAR), - list("Intel Radio Encryption Key", 5, /obj/item/device/encryptionkey/intel, null, VENDOR_ITEM_REGULAR), - list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), - list("Fulton Recovery Device", 10, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), - list("Motion Detector", 15, /obj/item/device/motiondetector, null, VENDOR_ITEM_RECOMMENDED), list("Plastic Explosive", 10, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), list("Welding Goggles", 5, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), - list("Sensor Medical HUD", 5, /obj/item/clothing/glasses/hud/sensor, null, VENDOR_ITEM_REGULAR), - - list("POUCHES", 0, null, null, null), - list("Large Magazine Pouch", 10, /obj/item/storage/pouch/magazine/large, null, VENDOR_ITEM_REGULAR), - list("Large Shotgun Shell Pouch", 10, /obj/item/storage/pouch/shotgun/large, null, VENDOR_ITEM_REGULAR), - list("Autoinjector Pouch (Full)", 15, /obj/item/storage/pouch/autoinjector/full, null, VENDOR_ITEM_RECOMMENDED), - list("Machete Pouch (Full)", 10, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), list("PRIMARY AMMUNITION", 0, null, null, null), list("M4RA AP Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR), @@ -34,7 +20,32 @@ GLOBAL_LIST_INIT(cm_vending_gear_intelligence_officer, list( list("M44 Heavy Speed Loader (.44)", 10, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR), list("M4A3 HP Magazine", 5, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR), list("M4A3 AP Magazine", 5, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR), - list("VP78 Magazine", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR) + list("VP78 Magazine", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR), + + list("POUCHES", 0, null, null, null), + list("Large Magazine Pouch", 10, /obj/item/storage/pouch/magazine/large, null, VENDOR_ITEM_REGULAR), + list("Large Shotgun Shell Pouch", 10, /obj/item/storage/pouch/shotgun/large, null, VENDOR_ITEM_REGULAR), + list("Autoinjector Pouch (Full)", 15, /obj/item/storage/pouch/autoinjector/full, null, VENDOR_ITEM_RECOMMENDED), + list("Machete Pouch (Full)", 10, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), + list("Fulton Device Stack", 10, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), + list("Motion Detector", 15, /obj/item/device/motiondetector, null, VENDOR_ITEM_RECOMMENDED), + list("Data Detector", 5, /obj/item/device/motiondetector/intel, null, VENDOR_ITEM_REGULAR), + + list("BINOCULARS", 0, null, null, null), + list("Binoculars", 5, /obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), + list("Range Finder", 10, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), + list("Laser Designator", 15, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), + list("Medical Helmet Optic", 5, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), + list("Night Vision Optic", 25, /obj/item/device/helmet_visor/night_vision, null, VENDOR_ITEM_RECOMMENDED), + + list("RADIO KEYS", 0, null, null, null), + list("Intel Radio Encryption Key", 5, /obj/item/device/encryptionkey/intel, null, VENDOR_ITEM_REGULAR), )) /obj/structure/machinery/cm_vending/gear/intelligence_officer @@ -56,24 +67,26 @@ GLOBAL_LIST_INIT(cm_vending_clothing_intelligence_officer, list( list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("ARMOR (CHOOSE 1)", 0, null, null, null), - list("XM4 Pattern Intel Armor", 0, /obj/item/clothing/suit/storage/marine/rto/intel, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("XM4 Pattern Intel Armor", 0, /obj/item/clothing/suit/storage/marine/medium/rto/intel, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("M3-L Pattern Light Armor", 0, /obj/item/clothing/suit/storage/marine/light, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Service Jacket", 0, /obj/item/clothing/suit/storage/jacket/marine/service, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("BACKPACK (CHOOSE 1)", 0, null, null, null), list("Expedition Pack", 0, /obj/item/storage/backpack/marine/satchel/intel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), + list("Expedition Chestrig", 0, /obj/item/storage/backpack/marine/satchel/intel/chestrig, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), list("Radio Telephone Pack", 0, /obj/item/storage/backpack/marine/satchel/rto/io, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), list("HELMET (CHOOSE 1)", 0, null, null, null), list("XM12 Officer Helmet", 0, /obj/item/clothing/head/helmet/marine/rto/intel, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), list("Beret, Standard", 0, /obj/item/clothing/head/beret/cm, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Beret, Tan", 0, /obj/item/clothing/head/beret/cm/tan, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), - list("USCM Officer Cap", 0, /obj/item/clothing/head/cmcap/ro, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("USCM Officer Cap", 0, /obj/item/clothing/head/cmcap/bridge, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("BELT (CHOOSE 1)", 0, null, null, null), list("G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("M276 General Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("M276 M39 Holster Rig", 0, /obj/item/storage/large_holster/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M39 Holster Rig", 0, /obj/item/storage/belt/gun/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M44 Holster Rig", 0, /obj/item/storage/belt/gun/m44, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Shotgun Shell Loading Rig", 0, /obj/item/storage/belt/shotgun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Toolbelt Rig (Full)", 0, /obj/item/storage/belt/utility/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), @@ -88,8 +101,6 @@ GLOBAL_LIST_INIT(cm_vending_clothing_intelligence_officer, list( list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Magazine Pouch", 0, /obj/item/storage/pouch/magazine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sidearm Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Tools Pouch (Full)", 0, /obj/item/storage/pouch/tools/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), diff --git a/code/game/machinery/vending/vendor_types/medical.dm b/code/game/machinery/vending/vendor_types/medical.dm index 5815f60b2e0c..9750669ac88a 100644 --- a/code/game/machinery/vending/vendor_types/medical.dm +++ b/code/game/machinery/vending/vendor_types/medical.dm @@ -4,7 +4,7 @@ name = "\improper Wey-Med Plus" desc = "Medical Pharmaceutical dispenser. Provided by Wey-Yu Pharmaceuticals Division(TM)." icon_state = "med" - req_access = list(ACCESS_MARINE_MEDBAY, ACCESS_MARINE_CHEMISTRY) + req_access = list(ACCESS_MARINE_MEDBAY) unacidable = TRUE unslashable = FALSE @@ -26,7 +26,6 @@ /obj/item/reagent_container/hypospray/autoinjector/oxycodone, /obj/item/reagent_container/hypospray/autoinjector/tramadol, /obj/item/reagent_container/hypospray/autoinjector/tricord, - /obj/item/reagent_container/hypospray/autoinjector/emergency, /obj/item/reagent_container/hypospray/autoinjector/skillless, /obj/item/reagent_container/hypospray/autoinjector/skillless/tramadol, @@ -133,40 +132,40 @@ /obj/structure/machinery/cm_vending/sorted/medical/populate_product_list(scale) listed_products = list( list("FIELD SUPPLIES", -1, null, null), - list("Burn Kit", round(scale * 7), /obj/item/stack/medical/advanced/ointment, VENDOR_ITEM_REGULAR), - list("Trauma Kit", round(scale * 7), /obj/item/stack/medical/advanced/bruise_pack, VENDOR_ITEM_REGULAR), - list("Ointment", round(scale * 7), /obj/item/stack/medical/ointment, VENDOR_ITEM_REGULAR), - list("Roll of Gauze", round(scale * 7), /obj/item/stack/medical/bruise_pack, VENDOR_ITEM_REGULAR), - list("Splints", round(scale * 7), /obj/item/stack/medical/splint, VENDOR_ITEM_REGULAR), + list("Burn Kit", round(scale * 6), /obj/item/stack/medical/advanced/ointment, VENDOR_ITEM_REGULAR), + list("Trauma Kit", round(scale * 6), /obj/item/stack/medical/advanced/bruise_pack, VENDOR_ITEM_REGULAR), + list("Ointment", round(scale * 6), /obj/item/stack/medical/ointment, VENDOR_ITEM_REGULAR), + list("Roll of Gauze", round(scale * 6), /obj/item/stack/medical/bruise_pack, VENDOR_ITEM_REGULAR), + list("Splints", round(scale * 6), /obj/item/stack/medical/splint, VENDOR_ITEM_REGULAR), list("AUTOINJECTORS", -1, null, null), - list("Autoinjector (Bicaridine)", round(scale * 5), /obj/item/reagent_container/hypospray/autoinjector/bicaridine, VENDOR_ITEM_REGULAR), - list("Autoinjector (Dexalin+)", round(scale * 5), /obj/item/reagent_container/hypospray/autoinjector/dexalinp, VENDOR_ITEM_REGULAR), - list("Autoinjector (Epinephrine)", round(scale * 5), /obj/item/reagent_container/hypospray/autoinjector/adrenaline, VENDOR_ITEM_REGULAR), - list("Autoinjector (Inaprovaline)", round(scale * 5), /obj/item/reagent_container/hypospray/autoinjector/inaprovaline, VENDOR_ITEM_REGULAR), - list("Autoinjector (Kelotane)", round(scale * 5), /obj/item/reagent_container/hypospray/autoinjector/kelotane, VENDOR_ITEM_REGULAR), - list("Autoinjector (Oxycodone)", round(scale * 5), /obj/item/reagent_container/hypospray/autoinjector/oxycodone, VENDOR_ITEM_REGULAR), - list("Autoinjector (Tramadol)", round(scale * 5), /obj/item/reagent_container/hypospray/autoinjector/tramadol, VENDOR_ITEM_REGULAR), - list("Autoinjector (Tricord)", round(scale * 5), /obj/item/reagent_container/hypospray/autoinjector/tricord, VENDOR_ITEM_REGULAR), + list("Autoinjector (Bicaridine)", round(scale * 3), /obj/item/reagent_container/hypospray/autoinjector/bicaridine, VENDOR_ITEM_REGULAR), + list("Autoinjector (Dexalin+)", round(scale * 3), /obj/item/reagent_container/hypospray/autoinjector/dexalinp, VENDOR_ITEM_REGULAR), + list("Autoinjector (Epinephrine)", round(scale * 3), /obj/item/reagent_container/hypospray/autoinjector/adrenaline, VENDOR_ITEM_REGULAR), + list("Autoinjector (Inaprovaline)", round(scale * 3), /obj/item/reagent_container/hypospray/autoinjector/inaprovaline, VENDOR_ITEM_REGULAR), + list("Autoinjector (Kelotane)", round(scale * 3), /obj/item/reagent_container/hypospray/autoinjector/kelotane, VENDOR_ITEM_REGULAR), + list("Autoinjector (Oxycodone)", round(scale * 3), /obj/item/reagent_container/hypospray/autoinjector/oxycodone, VENDOR_ITEM_REGULAR), + list("Autoinjector (Tramadol)", round(scale * 3), /obj/item/reagent_container/hypospray/autoinjector/tramadol, VENDOR_ITEM_REGULAR), + list("Autoinjector (Tricord)", round(scale * 3), /obj/item/reagent_container/hypospray/autoinjector/tricord, VENDOR_ITEM_REGULAR), list("LIQUID BOTTLES", -1, null, null), - list("Bottle (Bicaridine)", round(scale * 5), /obj/item/reagent_container/glass/bottle/bicaridine, VENDOR_ITEM_REGULAR), - list("Bottle (Dylovene)", round(scale * 5), /obj/item/reagent_container/glass/bottle/antitoxin, VENDOR_ITEM_REGULAR), - list("Bottle (Dexalin)", round(scale * 5), /obj/item/reagent_container/glass/bottle/dexalin, VENDOR_ITEM_REGULAR), - list("Bottle (Inaprovaline)", round(scale * 5), /obj/item/reagent_container/glass/bottle/inaprovaline, VENDOR_ITEM_REGULAR), - list("Bottle (Kelotane)", round(scale * 5), /obj/item/reagent_container/glass/bottle/kelotane, VENDOR_ITEM_REGULAR), - list("Bottle (Oxycodone)", round(scale * 5), /obj/item/reagent_container/glass/bottle/oxycodone, VENDOR_ITEM_REGULAR), - list("Bottle (Peridaxon)", round(scale * 5), /obj/item/reagent_container/glass/bottle/peridaxon, VENDOR_ITEM_REGULAR), - list("Bottle (Tramadol)", round(scale * 5), /obj/item/reagent_container/glass/bottle/tramadol, VENDOR_ITEM_REGULAR), + list("Bottle (Bicaridine)", round(scale * 4), /obj/item/reagent_container/glass/bottle/bicaridine, VENDOR_ITEM_REGULAR), + list("Bottle (Dylovene)", round(scale * 4), /obj/item/reagent_container/glass/bottle/antitoxin, VENDOR_ITEM_REGULAR), + list("Bottle (Dexalin)", round(scale * 4), /obj/item/reagent_container/glass/bottle/dexalin, VENDOR_ITEM_REGULAR), + list("Bottle (Inaprovaline)", round(scale * 4), /obj/item/reagent_container/glass/bottle/inaprovaline, VENDOR_ITEM_REGULAR), + list("Bottle (Kelotane)", round(scale * 4), /obj/item/reagent_container/glass/bottle/kelotane, VENDOR_ITEM_REGULAR), + list("Bottle (Oxycodone)", round(scale * 4), /obj/item/reagent_container/glass/bottle/oxycodone, VENDOR_ITEM_REGULAR), + list("Bottle (Peridaxon)", round(scale * 4), /obj/item/reagent_container/glass/bottle/peridaxon, VENDOR_ITEM_REGULAR), + list("Bottle (Tramadol)", round(scale * 4), /obj/item/reagent_container/glass/bottle/tramadol, VENDOR_ITEM_REGULAR), list("PILL BOTTLES", -1, null, null), - list("Pill Bottle (Bicaridine)", round(scale * 3), /obj/item/storage/pill_bottle/bicaridine, VENDOR_ITEM_REGULAR), - list("Pill Bottle (Dexalin)", round(scale * 3), /obj/item/storage/pill_bottle/dexalin, VENDOR_ITEM_REGULAR), - list("Pill Bottle (Dylovene)", round(scale * 3), /obj/item/storage/pill_bottle/antitox, VENDOR_ITEM_REGULAR), - list("Pill Bottle (Inaprovaline)", round(scale * 3), /obj/item/storage/pill_bottle/inaprovaline, VENDOR_ITEM_REGULAR), - list("Pill Bottle (Kelotane)", round(scale * 3), /obj/item/storage/pill_bottle/kelotane, VENDOR_ITEM_REGULAR), - list("Pill Bottle (Peridaxon)", round(scale * 2), /obj/item/storage/pill_bottle/peridaxon, VENDOR_ITEM_REGULAR), - list("Pill Bottle (Tramadol)", round(scale * 3), /obj/item/storage/pill_bottle/tramadol, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Bicaridine)", round(scale * 2), /obj/item/storage/pill_bottle/bicaridine, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Dexalin)", round(scale * 2), /obj/item/storage/pill_bottle/dexalin, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Dylovene)", round(scale * 2), /obj/item/storage/pill_bottle/antitox, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Inaprovaline)", round(scale * 2), /obj/item/storage/pill_bottle/inaprovaline, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Kelotane)", round(scale * 2), /obj/item/storage/pill_bottle/kelotane, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Peridaxon)", round(scale * 1), /obj/item/storage/pill_bottle/peridaxon, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Tramadol)", round(scale * 2), /obj/item/storage/pill_bottle/tramadol, VENDOR_ITEM_REGULAR), list("MEDICAL UTILITIES", -1, null, null), list("Emergency Defibrillator", round(scale * 3), /obj/item/device/defibrillator, VENDOR_ITEM_REGULAR), @@ -184,6 +183,7 @@ name = "\improper Wey-Chem Plus" desc = "Medical chemistry dispenser. Provided by Wey-Yu Pharmaceuticals Division(TM)." icon_state = "chem" + req_access = list(ACCESS_MARINE_CHEMISTRY) healthscan = FALSE chem_refill = list( @@ -221,13 +221,17 @@ /obj/structure/machinery/cm_vending/sorted/medical/no_access req_access = list() +/obj/structure/machinery/cm_vending/sorted/medical/bolted + wrenchable = FALSE + /obj/structure/machinery/cm_vending/sorted/medical/chemistry/no_access req_access = list() /obj/structure/machinery/cm_vending/sorted/medical/antag name = "\improper Medical Equipment Vendor" desc = "A vending machine dispensing various pieces of medical equipment." - req_access = list(ACCESS_ILLEGAL_PIRATE) + req_one_access = list(ACCESS_ILLEGAL_PIRATE, ACCESS_UPP_GENERAL, ACCESS_CLF_GENERAL) + req_access = null vendor_theme = VENDOR_THEME_CLF /obj/structure/machinery/cm_vending/sorted/medical/marinemed @@ -267,12 +271,13 @@ /obj/structure/machinery/cm_vending/sorted/medical/marinemed/antag name = "\improper Basic Medical Supplies Vendor" desc = "A vending machine dispensing basic medical supplies." - req_access = list(ACCESS_ILLEGAL_PIRATE) + req_one_access = list(ACCESS_ILLEGAL_PIRATE, ACCESS_UPP_GENERAL, ACCESS_CLF_GENERAL) + req_access = null vendor_theme = VENDOR_THEME_CLF /obj/structure/machinery/cm_vending/sorted/medical/blood name = "\improper MM Blood Dispenser" - desc = "Marine Med brand Blood Pack Dispensary" + desc = "The Marine Med Brand Blood Pack Dispensary is the premier, top-of-the-line blood dispenser of 2105! Get yours today!" //Don't update this year, the joke is it's old. icon_state = "blood" wrenchable = TRUE hackable = TRUE @@ -294,11 +299,15 @@ chem_refill = null stack_refill = null +/obj/structure/machinery/cm_vending/sorted/medical/blood/bolted + wrenchable = FALSE + /obj/structure/machinery/cm_vending/sorted/medical/blood/populate_product_list(scale) return /obj/structure/machinery/cm_vending/sorted/medical/blood/antag - req_access = list(ACCESS_ILLEGAL_PIRATE) + req_one_access = list(ACCESS_ILLEGAL_PIRATE, ACCESS_UPP_GENERAL, ACCESS_CLF_GENERAL) + req_access = null vendor_theme = VENDOR_THEME_CLF /obj/structure/machinery/cm_vending/sorted/medical/wall_med diff --git a/code/game/machinery/vending/vendor_types/requisitions.dm b/code/game/machinery/vending/vendor_types/requisitions.dm index 250a998f38bf..1a9ec9156e20 100644 --- a/code/game/machinery/vending/vendor_types/requisitions.dm +++ b/code/game/machinery/vending/vendor_types/requisitions.dm @@ -8,7 +8,7 @@ icon_state = "req_guns" req_access = list(ACCESS_MARINE_CARGO) vendor_theme = VENDOR_THEME_USCM - vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND | VEND_LOAD_AMMO_BOXES + vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND | VEND_LOAD_AMMO_BOXES | VEND_STOCK_DYNAMIC /obj/structure/machinery/cm_vending/sorted/cargo_guns/vend_fail() return @@ -19,28 +19,29 @@ /obj/structure/machinery/cm_vending/sorted/cargo_guns/populate_product_list(scale) listed_products = list( list("PRIMARY FIREARMS", -1, null, null), - list("M37A2 Pump Shotgun", round(scale * 10), /obj/item/weapon/gun/shotgun/pump, VENDOR_ITEM_REGULAR), - list("M39 Submachinegun", round(scale * 15), /obj/item/weapon/gun/smg/m39, VENDOR_ITEM_REGULAR), - list("M41A Pulse Rifle MK2", round(scale * 20), /obj/item/weapon/gun/rifle/m41a, VENDOR_ITEM_REGULAR), + list("M37A2 Pump Shotgun", round(scale * 30), /obj/item/weapon/gun/shotgun/pump, VENDOR_ITEM_REGULAR), + list("M39 Submachinegun", round(scale * 60), /obj/item/weapon/gun/smg/m39, VENDOR_ITEM_REGULAR), + list("M41A Pulse Rifle MK2", round(scale * 60), /obj/item/weapon/gun/rifle/m41a, VENDOR_ITEM_REGULAR), list("M4RA Battle Rifle", round(scale * 20), /obj/item/weapon/gun/rifle/m4ra, VENDOR_ITEM_REGULAR), list("SIDEARMS", -1, null, null), - list("88 Mod 4 Combat Pistol", round(scale * 15), /obj/item/weapon/gun/pistol/mod88, VENDOR_ITEM_REGULAR), - list("M44 Combat Revolver", round(scale * 10), /obj/item/weapon/gun/revolver/m44, VENDOR_ITEM_REGULAR), - list("M4A3 Service Pistol", round(scale * 20), /obj/item/weapon/gun/pistol/m4a3, VENDOR_ITEM_REGULAR), - list("M82F Flare Gun", round(scale * 8), /obj/item/weapon/gun/flare, VENDOR_ITEM_REGULAR), + list("88 Mod 4 Combat Pistol", round(scale * 50), /obj/item/weapon/gun/pistol/mod88, VENDOR_ITEM_REGULAR), + list("M44 Combat Revolver", round(scale * 50), /obj/item/weapon/gun/revolver/m44, VENDOR_ITEM_REGULAR), + list("M4A3 Service Pistol", round(scale * 50), /obj/item/weapon/gun/pistol/m4a3, VENDOR_ITEM_REGULAR), + list("M82F Flare Gun", round(scale * 20), /obj/item/weapon/gun/flare, VENDOR_ITEM_REGULAR), list("RESTRICTED FIREARMS", -1, null, null), list("VP78 Pistol", round(scale * 4), /obj/item/storage/box/guncase/vp78, VENDOR_ITEM_REGULAR), list("SU-6 Smart Pistol", round(scale * 3), /obj/item/storage/box/guncase/smartpistol, VENDOR_ITEM_REGULAR), list("MOU-53 Shotgun", round(scale * 2), /obj/item/storage/box/guncase/mou53, VENDOR_ITEM_REGULAR), list("XM88 Heavy Rifle", round(scale * 3), /obj/item/storage/box/guncase/xm88, VENDOR_ITEM_REGULAR), - list("M41AE2 Heavy Pulse Rifle", round(scale * 2.5), /obj/item/storage/box/guncase/lmg, VENDOR_ITEM_REGULAR), + list("M41AE2 Heavy Pulse Rifle", 2.5, /obj/item/storage/box/guncase/lmg, VENDOR_ITEM_REGULAR), list("M41A Pulse Rifle MK1", round(scale * 3), /obj/item/storage/box/guncase/m41aMK1, VENDOR_ITEM_REGULAR), list("M56D Heavy Machine Gun", round(scale * 2), /obj/item/storage/box/guncase/m56d, VENDOR_ITEM_REGULAR), list("M2C Heavy Machine Gun", round(scale * 2), /obj/item/storage/box/guncase/m2c, VENDOR_ITEM_REGULAR), list("M240 Incinerator Unit", round(scale * 2), /obj/item/storage/box/guncase/flamer, VENDOR_ITEM_REGULAR), list("M79 Grenade Launcher", round(scale * 3), /obj/item/storage/box/guncase/m79, VENDOR_ITEM_REGULAR), + list("XM51 Breaching Scattergun", round(scale * 3), /obj/item/storage/box/guncase/xm51, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", -1, null, null), list("M15 Fragmentation Grenade", round(scale * 2), /obj/item/explosive/grenade/high_explosive/m15, VENDOR_ITEM_REGULAR), @@ -50,12 +51,12 @@ list("M40 HPDP White Phosphorus Smoke Grenade", round(scale * 4), /obj/item/explosive/grenade/phosphorus, VENDOR_ITEM_REGULAR), list("M40 HSDP Smoke Grenade", round(scale * 5), /obj/item/explosive/grenade/smokebomb, VENDOR_ITEM_REGULAR), list("M74 AGM-Frag Airburst Grenade", round(scale * 4), /obj/item/explosive/grenade/high_explosive/airburst, VENDOR_ITEM_REGULAR), - list("M74 AGM-Icendiary Airburst Grenade", round(scale * 4), /obj/item/explosive/grenade/incendiary/airburst, VENDOR_ITEM_REGULAR), + list("M74 AGM-Incendiary Airburst Grenade", round(scale * 4), /obj/item/explosive/grenade/incendiary/airburst, VENDOR_ITEM_REGULAR), list("M74 AGM-Smoke Airburst Grenade", round(scale * 4), /obj/item/explosive/grenade/smokebomb/airburst, VENDOR_ITEM_REGULAR), list("M74 AGM-Star Shell", round(scale * 2), /obj/item/explosive/grenade/high_explosive/airburst/starshell, VENDOR_ITEM_REGULAR), list("M74 AGM-Hornet Shell", round(scale * 4), /obj/item/explosive/grenade/high_explosive/airburst/hornet_shell, VENDOR_ITEM_REGULAR), list("M40 HIRR Baton Slug", round(scale * 8), /obj/item/explosive/grenade/slug/baton, VENDOR_ITEM_REGULAR), - list("M40 MFHS Metal Foam Grenade", round(scale * 3), /obj/item/explosive/grenade/metal_foam, VENDOR_ITEM_REGULAR), + list("M40 MFHS Metal Foam Grenade", round(scale * 6), /obj/item/explosive/grenade/metal_foam, VENDOR_ITEM_REGULAR), list("Plastic Explosives", round(scale * 3), /obj/item/explosive/plastic, VENDOR_ITEM_REGULAR), list("Breaching Charge", round(scale * 2), /obj/item/explosive/plastic/breaching_charge, VENDOR_ITEM_REGULAR), @@ -82,7 +83,7 @@ list("M276 Ammo Load Rig", round(scale * 15), /obj/item/storage/belt/marine, VENDOR_ITEM_REGULAR), list("M276 General Pistol Holster Rig", round(scale * 10), /obj/item/storage/belt/gun/m4a3, VENDOR_ITEM_REGULAR), list("M276 Knife Rig", round(scale * 5), /obj/item/storage/belt/knifepouch, VENDOR_ITEM_REGULAR), - list("M276 M39 Holster Rig", round(scale * 5), /obj/item/storage/large_holster/m39, VENDOR_ITEM_REGULAR), + list("M276 M39 Holster Rig", round(scale * 5), /obj/item/storage/belt/gun/m39, VENDOR_ITEM_REGULAR), list("M276 M40 Grenade Rig", round(scale * 2), /obj/item/storage/belt/grenade, VENDOR_ITEM_REGULAR), list("M276 M44 Holster Rig", round(scale * 5), /obj/item/storage/belt/gun/m44, VENDOR_ITEM_REGULAR), list("M276 M82F Holster Rig", round(scale * 2), /obj/item/storage/belt/gun/flaregun, VENDOR_ITEM_REGULAR), @@ -91,28 +92,29 @@ list("Rappel Harness", round(scale * 20), /obj/item/rappel_harness, VENDOR_ITEM_REGULAR), list("POUCHES", -1, null, null), - list("Autoinjector Pouch", round(scale * 2), /obj/item/storage/pouch/autoinjector, VENDOR_ITEM_REGULAR), + list("Autoinjector Pouch", round(scale * 1), /obj/item/storage/pouch/autoinjector, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", round(scale * 2), /obj/item/storage/pouch/medkit, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Full)", round(scale * 5), /obj/item/storage/pouch/firstaid/full, VENDOR_ITEM_REGULAR), + list("First Responder Pouch", round(scale * 2), /obj/item/storage/pouch/first_responder, VENDOR_ITEM_REGULAR), + list("Syringe Pouch", round(scale * 2), /obj/item/storage/pouch/syringe, VENDOR_ITEM_REGULAR), + list("Tools Pouch (Full)", round(scale * 2), /obj/item/storage/pouch/tools/full, VENDOR_ITEM_REGULAR), list("Construction Pouch", round(scale * 2), /obj/item/storage/pouch/construction, VENDOR_ITEM_REGULAR), - list("Document Pouch", round(scale * 2), /obj/item/storage/pouch/document/small, VENDOR_ITEM_REGULAR), list("Electronics Pouch", round(scale * 2), /obj/item/storage/pouch/electronics, VENDOR_ITEM_REGULAR), list("Explosive Pouch", round(scale * 2), /obj/item/storage/pouch/explosive, VENDOR_ITEM_REGULAR), - list("First-Aid Pouch (Full)", round(scale * 5), /obj/item/storage/pouch/firstaid/full, VENDOR_ITEM_REGULAR), - list("First Responder Pouch", round(scale * 2), /obj/item/storage/pouch/first_responder, VENDOR_ITEM_REGULAR), list("Flare Pouch (Full)", round(scale * 5), /obj/item/storage/pouch/flare/full, VENDOR_ITEM_REGULAR), - list("Fuel Tank Strap Pouch", round(scale * 4), /obj/item/storage/pouch/flamertank, VENDOR_ITEM_REGULAR), - list("Large Pistol Magazine Pouch", round(scale * 5), /obj/item/storage/pouch/magazine/pistol/large, VENDOR_ITEM_REGULAR), + list("Document Pouch", round(scale * 2), /obj/item/storage/pouch/document/small, VENDOR_ITEM_REGULAR), + list("Sling Pouch", round(scale * 2), /obj/item/storage/pouch/sling, VENDOR_ITEM_REGULAR), + list("Machete Pouch (Full)", 1, /obj/item/storage/pouch/machete/full, VENDOR_ITEM_REGULAR), + list("Bayonet Pouch", round(scale * 2), /obj/item/storage/pouch/bayonet, VENDOR_ITEM_REGULAR), + list("Medium General Pouch", round(scale * 2), /obj/item/storage/pouch/general/medium, VENDOR_ITEM_REGULAR), list("Magazine Pouch", round(scale * 5), /obj/item/storage/pouch/magazine, VENDOR_ITEM_REGULAR), list("Shotgun Shell Pouch", round(scale * 5), /obj/item/storage/pouch/shotgun, VENDOR_ITEM_REGULAR), - list("Machete Pouch (Full)", round(scale * 4), /obj/item/storage/pouch/machete/full, VENDOR_ITEM_REGULAR), - list("Medical Pouch", round(scale * 2), /obj/item/storage/pouch/medical, VENDOR_ITEM_REGULAR), - list("Medium General Pouch", round(scale * 2), /obj/item/storage/pouch/general/medium, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", round(scale * 2), /obj/item/storage/pouch/medkit, VENDOR_ITEM_REGULAR), list("Sidearm Pouch", round(scale * 5), /obj/item/storage/pouch/pistol, VENDOR_ITEM_REGULAR), - list("Syringe Pouch", round(scale * 2), /obj/item/storage/pouch/syringe, VENDOR_ITEM_REGULAR), - list("Tools Pouch (Full)", round(scale * 2), /obj/item/storage/pouch/tools/full, VENDOR_ITEM_REGULAR), - list("Sling Pouch", round(scale * 2), /obj/item/storage/pouch/sling, VENDOR_ITEM_REGULAR), - list("Large Magazine Pouch", round(scale * 2), /obj/item/storage/pouch/magazine/large, VENDOR_ITEM_REGULAR), - list("Large Shotgun Shell Pouch", round(scale * 2), /obj/item/storage/pouch/shotgun/large, VENDOR_ITEM_REGULAR), + list("Large Pistol Magazine Pouch", round(scale * 5), /obj/item/storage/pouch/magazine/pistol/large, VENDOR_ITEM_REGULAR), + list("Fuel Tank Strap Pouch", round(scale * 4), /obj/item/storage/pouch/flamertank, VENDOR_ITEM_REGULAR), + list("Large General Pouch", round(scale * 1), /obj/item/storage/pouch/general/large, VENDOR_ITEM_REGULAR), + list("Large Magazine Pouch", round(scale * 1), /obj/item/storage/pouch/magazine/large, VENDOR_ITEM_REGULAR), + list("Large Shotgun Shell Pouch", round(scale * 1), /obj/item/storage/pouch/shotgun/large, VENDOR_ITEM_REGULAR), list("MISCELLANEOUS", -1, null, null), list("Combat Flashlight", round(scale * 5), /obj/item/device/flashlight/combat, VENDOR_ITEM_REGULAR), @@ -134,7 +136,7 @@ list("Sentry Gun Network Laptop", 4, /obj/item/device/sentry_computer, VENDOR_ITEM_REGULAR), list("JTAC Pamphlet", round(scale * 1), /obj/item/pamphlet/skill/jtac, VENDOR_ITEM_REGULAR), list("Engineering Pamphlet", round(scale * 1), /obj/item/pamphlet/skill/engineer, VENDOR_ITEM_REGULAR), - list("Powerloader Certification", round(scale * 0.1) + 1, /obj/item/pamphlet/skill/powerloader, VENDOR_ITEM_REGULAR), + list("Powerloader Certification", 0.75, /obj/item/pamphlet/skill/powerloader, VENDOR_ITEM_REGULAR), list("Spare PDT/L Battle Buddy Kit", round(scale * 4), /obj/item/storage/box/pdt_kit, VENDOR_ITEM_REGULAR), list("W-Y brand rechargeable mini-battery", round(scale * 3), /obj/item/cell/crap, VENDOR_ITEM_REGULAR) ) @@ -173,25 +175,11 @@ //Special cargo-specific vendor with vending offsets /obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo - vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_LOAD_AMMO_BOXES //We want to vend to turf not hand, since we are in requisitions - -/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/get_appropriate_vend_turf(mob/living/carbon/human/H) - var/turf/turf_to_vent_to - if(vend_x_offset != 0 || vend_y_offset != 0) //this will allow to avoid code below that suits only Almayer. - turf_to_vent_to = locate(x + vend_x_offset, y + vend_y_offset, z) - else - turf_to_vent_to = get_turf(get_step(src, NORTH)) - if(H.loc == turf_to_vent_to) - turf_to_vent_to = get_turf(get_step(H.loc, WEST)) - else - turf_to_vent_to = get_turf(get_step(src, SOUTH)) - if(H.loc == turf_to_vent_to) - turf_to_vent_to = get_turf(get_step(H.loc, WEST)) - else - turf_to_vent_to = H.loc - return turf_to_vent_to - -/obj/structure/machinery/cm_vending/sorted/cargo_guns/blend + vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_LOAD_AMMO_BOXES | VEND_STOCK_DYNAMIC //We want to vend to turf not hand, since we are in requisitions + vend_dir = WEST + vend_dir_whitelist = list(NORTH, SOUTH) + +/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/blend icon_state = "req_guns_wall" tiles_with = list( /obj/structure/window/framed/almayer, @@ -207,7 +195,9 @@ icon_state = "req_ammo" req_access = list(ACCESS_MARINE_CARGO) vendor_theme = VENDOR_THEME_USCM - vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND | VEND_LOAD_AMMO_BOXES + vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND | VEND_LOAD_AMMO_BOXES | VEND_STOCK_DYNAMIC + vend_dir = WEST + vend_dir_whitelist = list(SOUTHWEST, NORTHWEST) /obj/structure/machinery/cm_vending/sorted/cargo_ammo/vend_fail() return @@ -218,48 +208,50 @@ /obj/structure/machinery/cm_vending/sorted/cargo_ammo/populate_product_list(scale) listed_products = list( list("REGULAR AMMUNITION", -1, null, null), - list("Box Of Buckshot Shells", round(scale * 2), /obj/item/ammo_magazine/shotgun/buckshot, VENDOR_ITEM_REGULAR), - list("Box Of Flechette Shells", round(scale * 2), /obj/item/ammo_magazine/shotgun/flechette, VENDOR_ITEM_REGULAR), - list("Box Of Shotgun Slugs", round(scale * 2), /obj/item/ammo_magazine/shotgun/slugs, VENDOR_ITEM_REGULAR), - list("M4RA Magazine (10x24mm)", round(scale * 20.8), /obj/item/ammo_magazine/rifle/m4ra, VENDOR_ITEM_REGULAR), - list("M41A MK2 Magazine (10x24mm)", round(scale * 18), /obj/item/ammo_magazine/rifle, VENDOR_ITEM_REGULAR), - list("M39 HV Magazine (10x20mm)", round(scale * 17.1), /obj/item/ammo_magazine/smg/m39, VENDOR_ITEM_REGULAR), - list("M44 Speed Loader (.44)", round(scale * 18.1), /obj/item/ammo_magazine/revolver, VENDOR_ITEM_REGULAR), - list("M4A3 Magazine (9mm)", round(scale * 20.5), /obj/item/ammo_magazine/pistol, VENDOR_ITEM_REGULAR), + list("Box Of Buckshot Shells", round(scale * 20), /obj/item/ammo_magazine/shotgun/buckshot, VENDOR_ITEM_REGULAR), + list("Box Of Flechette Shells", round(scale * 8), /obj/item/ammo_magazine/shotgun/flechette, VENDOR_ITEM_REGULAR), + list("Box Of Shotgun Slugs", round(scale * 20), /obj/item/ammo_magazine/shotgun/slugs, VENDOR_ITEM_REGULAR), + list("M4RA Magazine (10x24mm)", round(scale * 30), /obj/item/ammo_magazine/rifle/m4ra, VENDOR_ITEM_REGULAR), + list("M41A MK2 Magazine (10x24mm)", round(scale * 50), /obj/item/ammo_magazine/rifle, VENDOR_ITEM_REGULAR), + list("M39 HV Magazine (10x20mm)", round(scale * 50), /obj/item/ammo_magazine/smg/m39, VENDOR_ITEM_REGULAR), + list("M44 Speed Loader (.44)", round(scale * 40), /obj/item/ammo_magazine/revolver, VENDOR_ITEM_REGULAR), + list("M4A3 Magazine (9mm)", round(scale * 50), /obj/item/ammo_magazine/pistol, VENDOR_ITEM_REGULAR), list("ARMOR-PIERCING AMMUNITION", -1, null, null), - list("88 Mod 4 AP Magazine (9mm)", round(scale * 16.7), /obj/item/ammo_magazine/pistol/mod88, VENDOR_ITEM_REGULAR), - list("M4RA AP Magazine (10x24mm)", round(scale * 15.7), /obj/item/ammo_magazine/rifle/m4ra/ap, VENDOR_ITEM_REGULAR), - list("M39 AP Magazine (10x20mm)", round(scale * 11.9), /obj/item/ammo_magazine/smg/m39/ap, VENDOR_ITEM_REGULAR), - list("M41A MK2 AP Magazine (10x24mm)", round(scale * 10.5), /obj/item/ammo_magazine/rifle/ap, VENDOR_ITEM_REGULAR), + list("88 Mod 4 AP Magazine (9mm)", round(scale * 50), /obj/item/ammo_magazine/pistol/mod88, VENDOR_ITEM_REGULAR), + list("M4RA AP Magazine (10x24mm)", round(scale * 16), /obj/item/ammo_magazine/rifle/m4ra/ap, VENDOR_ITEM_REGULAR), + list("M39 AP Magazine (10x20mm)", round(scale * 12), /obj/item/ammo_magazine/smg/m39/ap, VENDOR_ITEM_REGULAR), + list("M41A MK2 AP Magazine (10x24mm)", round(scale * 10), /obj/item/ammo_magazine/rifle/ap, VENDOR_ITEM_REGULAR), list("M4A3 AP Magazine (9mm)", round(scale * 2), /obj/item/ammo_magazine/pistol/ap, VENDOR_ITEM_REGULAR), list("EXTENDED AMMUNITION", -1, null, null), - list("M39 Extended Magazine (10x20mm)", round(scale * 9.5) + 3, /obj/item/ammo_magazine/smg/m39/extended, VENDOR_ITEM_REGULAR), - list("M41A MK2 Extended Magazine (10x24mm)", round(scale * 8.1), /obj/item/ammo_magazine/rifle/extended, VENDOR_ITEM_REGULAR), + list("M39 Extended Magazine (10x20mm)", round(scale * 10), /obj/item/ammo_magazine/smg/m39/extended, VENDOR_ITEM_REGULAR), + list("M41A MK2 Extended Magazine (10x24mm)", round(scale * 8), /obj/item/ammo_magazine/rifle/extended, VENDOR_ITEM_REGULAR), list("SPECIAL AMMUNITION", -1, null, null), - list("M56 Battery", 4, /obj/item/smartgun_battery, VENDOR_ITEM_REGULAR), + list("M56 DV9 Battery", 4, /obj/item/smartgun_battery, VENDOR_ITEM_REGULAR), list("M56 Smartgun Drum", 4, /obj/item/ammo_magazine/smartgun, VENDOR_ITEM_REGULAR), - list("M44 Heavy Speed Loader (.44)", round(scale * 10.5), /obj/item/ammo_magazine/revolver/heavy, VENDOR_ITEM_REGULAR), - list("M44 Marksman Speed Loader (.44)", round(scale * 5.7), /obj/item/ammo_magazine/revolver/marksman, VENDOR_ITEM_REGULAR), + list("M44 Heavy Speed Loader (.44)", 10, /obj/item/ammo_magazine/revolver/heavy, VENDOR_ITEM_REGULAR), + list("M44 Marksman Speed Loader (.44)", 6, /obj/item/ammo_magazine/revolver/marksman, VENDOR_ITEM_REGULAR), list("M4A3 HP Magazine (9mm)", round(scale * 2), /obj/item/ammo_magazine/pistol/hp, VENDOR_ITEM_REGULAR), list("M41AE2 Holo Target Rounds (10x24mm)", round(scale * 2), /obj/item/ammo_magazine/rifle/lmg/holo_target, VENDOR_ITEM_REGULAR), list("RESTRICTED FIREARM AMMUNITION", -1, null, null), - list("VP78 Magazine", round(scale * 11.2), /obj/item/ammo_magazine/pistol/vp78, VENDOR_ITEM_REGULAR), - list("SU-6 Smartpistol Magazine (.45)", round(scale * 12,8), /obj/item/ammo_magazine/pistol/smart, VENDOR_ITEM_REGULAR), + list("VP78 Magazine", 11, /obj/item/ammo_magazine/pistol/vp78, VENDOR_ITEM_REGULAR), + list("SU-6 Smartpistol Magazine (.45)", 13, /obj/item/ammo_magazine/pistol/smart, VENDOR_ITEM_REGULAR), list("M240 Incinerator Tank", round(scale * 3), /obj/item/ammo_magazine/flamer_tank, VENDOR_ITEM_REGULAR), list("M41AE2 Box Magazine (10x24mm)", round(scale * 3), /obj/item/ammo_magazine/rifle/lmg, VENDOR_ITEM_REGULAR), - list("M41A MK1 Magazine (10x24mm)", round(scale * 4.5), /obj/item/ammo_magazine/rifle/m41aMK1, VENDOR_ITEM_REGULAR), + list("M41A MK1 Magazine (10x24mm)", 4.5, /obj/item/ammo_magazine/rifle/m41aMK1, VENDOR_ITEM_REGULAR), list("M41A MK1 AP Magazine (10x24mm)", round(scale * 2), /obj/item/ammo_magazine/rifle/m41aMK1/ap, VENDOR_ITEM_REGULAR), list("M56D Drum Magazine", round(scale * 2), /obj/item/ammo_magazine/m56d, VENDOR_ITEM_REGULAR), list("M2C Box Magazine", round(scale * 2), /obj/item/ammo_magazine/m2c, VENDOR_ITEM_REGULAR), + list("XM51 Magazine (16g)", round(scale * 3), /obj/item/ammo_magazine/rifle/xm51, VENDOR_ITEM_REGULAR), list("SHOTGUN SHELL BOXES", -1, null, null), - list("Shotgun Shell Box (Buckshot x 100)", round(scale * 1), /obj/item/ammo_box/magazine/shotgun/buckshot, VENDOR_ITEM_REGULAR), - list("Shotgun Shell Box (Flechette x 100)", round(scale * 1), /obj/item/ammo_box/magazine/shotgun/flechette, VENDOR_ITEM_REGULAR), - list("Shotgun Shell Box (Slugs x 100)", round(scale * 1), /obj/item/ammo_box/magazine/shotgun, VENDOR_ITEM_REGULAR), + list("Shotgun Shell Box (Buckshot x 100)", round(scale * 2), /obj/item/ammo_box/magazine/shotgun/buckshot, VENDOR_ITEM_REGULAR), + list("Shotgun Shell Box (Flechette x 100)", round(scale * 2), /obj/item/ammo_box/magazine/shotgun/flechette, VENDOR_ITEM_REGULAR), + list("Shotgun Shell Box (Slugs x 100)", round(scale * 2), /obj/item/ammo_box/magazine/shotgun, VENDOR_ITEM_REGULAR), + list("Shotgun Shell Box (16g) (Breaching x 120)", 1, /obj/item/ammo_box/magazine/shotgun/light/breaching, VENDOR_ITEM_REGULAR), ) /obj/structure/machinery/cm_vending/sorted/cargo_ammo/stock(obj/item/item_to_stock, mob/user) @@ -295,7 +287,7 @@ updateUsrDialog() return //We found our item, no reason to go on. -/obj/structure/machinery/cm_vending/sorted/cargo_ammo/blend +/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/blend icon_state = "req_ammo_wall" tiles_with = list( /obj/structure/window/framed/almayer, @@ -304,23 +296,7 @@ //Special cargo-specific vendor with vending offsets /obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo - vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_LOAD_AMMO_BOXES //We want to vend to turf not hand, since we are in requisitions - -/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/get_appropriate_vend_turf(mob/living/carbon/human/H) - var/turf/turf_to_vent_to - if(vend_x_offset != 0 || vend_y_offset != 0) //this will allow to avoid code below that suits only Almayer. - turf_to_vent_to = locate(x + vend_x_offset, y + vend_y_offset, z) - else - turf_to_vent_to = get_turf(get_step(src, NORTHWEST)) - if(H.loc == turf_to_vent_to) - turf_to_vent_to = get_turf(get_step(H.loc, WEST)) - else - turf_to_vent_to = get_turf(get_step(src, SOUTHWEST)) - if(H.loc == turf_to_vent_to) - turf_to_vent_to = get_turf(get_step(H.loc, WEST)) - else - turf_to_vent_to = H.loc - return turf_to_vent_to + vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_LOAD_AMMO_BOXES | VEND_STOCK_DYNAMIC //We want to vend to turf not hand, since we are in requisitions //------------ATTACHMENTS VENDOR--------------- @@ -330,6 +306,9 @@ req_access = list(ACCESS_MARINE_CARGO) vendor_theme = VENDOR_THEME_USCM icon_state = "req_attach" + vend_dir = WEST + vend_dir_whitelist = list(SOUTHEAST, NORTHEAST) + vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_STOCK_DYNAMIC //We want to vend to turf not hand, since we are in requisitions /obj/structure/machinery/cm_vending/sorted/attachments/vend_fail() return @@ -340,61 +319,44 @@ /obj/structure/machinery/cm_vending/sorted/attachments/populate_product_list(scale) listed_products = list( list("BARREL", -1, null, null), - list("Barrel Charger", round(scale * 2.5), /obj/item/attachable/heavy_barrel, VENDOR_ITEM_REGULAR), - list("Extended Barrel", round(scale * 6.5), /obj/item/attachable/extended_barrel, VENDOR_ITEM_REGULAR), - list("M5 Bayonet", round(scale * 10.5), /obj/item/attachable/bayonet, VENDOR_ITEM_REGULAR), - list("Recoil Compensator", round(scale * 6.5), /obj/item/attachable/compensator, VENDOR_ITEM_REGULAR), - list("Suppressor", round(scale * 6.5), /obj/item/attachable/suppressor, VENDOR_ITEM_REGULAR), + list("Extended Barrel", 6.5, /obj/item/attachable/extended_barrel, VENDOR_ITEM_REGULAR), + list("M5 Bayonet", 10.5, /obj/item/attachable/bayonet, VENDOR_ITEM_REGULAR), + list("Recoil Compensator", 6.5, /obj/item/attachable/compensator, VENDOR_ITEM_REGULAR), + list("Suppressor", 6.5, /obj/item/attachable/suppressor, VENDOR_ITEM_REGULAR), list("RAIL", -1, null, null), - list("B8 Smart-Scope", round(scale * 3.5), /obj/item/attachable/scope/mini_iff, VENDOR_ITEM_REGULAR), - list("Magnetic Harness", round(scale * 8.5), /obj/item/attachable/magnetic_harness, VENDOR_ITEM_REGULAR), - list("Rail Flashlight", round(scale * 10.5), /obj/item/attachable/flashlight, VENDOR_ITEM_REGULAR), - list("S4 2x Telescopic Mini-Scope", round(scale * 4.5), /obj/item/attachable/scope/mini, VENDOR_ITEM_REGULAR), - list("S5 Red-Dot Sight", round(scale * 9.5), /obj/item/attachable/reddot, VENDOR_ITEM_REGULAR), - list("S6 Reflex Sight", round(scale * 9.5), /obj/item/attachable/reflex, VENDOR_ITEM_REGULAR), - list("S8 4x Telescopic Scope", round(scale * 4.5), /obj/item/attachable/scope, VENDOR_ITEM_REGULAR), + list("B8 Smart-Scope", 3.5, /obj/item/attachable/scope/mini_iff, VENDOR_ITEM_REGULAR), + list("Magnetic Harness", 8.5, /obj/item/attachable/magnetic_harness, VENDOR_ITEM_REGULAR), + list("Rail Flashlight", 10.5, /obj/item/attachable/flashlight, VENDOR_ITEM_REGULAR), + list("S4 2x Telescopic Mini-Scope", 4.5, /obj/item/attachable/scope/mini, VENDOR_ITEM_REGULAR), + list("S5 Red-Dot Sight", 9.5, /obj/item/attachable/reddot, VENDOR_ITEM_REGULAR), + list("S6 Reflex Sight", 9.5, /obj/item/attachable/reflex, VENDOR_ITEM_REGULAR), + list("S8 4x Telescopic Scope", 4.5, /obj/item/attachable/scope, VENDOR_ITEM_REGULAR), list("UNDERBARREL", -1, null, null), - list("Angled Grip", round(scale * 6.5), /obj/item/attachable/angledgrip, VENDOR_ITEM_REGULAR), - list("Bipod", round(scale * 6.5), /obj/item/attachable/bipod, VENDOR_ITEM_REGULAR), - list("Burst Fire Assembly", round(scale * 4.5), /obj/item/attachable/burstfire_assembly, VENDOR_ITEM_REGULAR), - list("Gyroscopic Stabilizer", round(scale * 4.5), /obj/item/attachable/gyro, VENDOR_ITEM_REGULAR), - list("Laser Sight", round(scale * 9.5), /obj/item/attachable/lasersight, VENDOR_ITEM_REGULAR), - list("Mini Flamethrower", round(scale * 4.5), /obj/item/attachable/attached_gun/flamer, VENDOR_ITEM_REGULAR), - list("XM-VESG-1 Flamer Nozzle", round(scale * 4.5), /obj/item/attachable/attached_gun/flamer_nozzle, VENDOR_ITEM_REGULAR), - list("U7 Underbarrel Shotgun", round(scale * 4.5), /obj/item/attachable/attached_gun/shotgun, VENDOR_ITEM_REGULAR), - list("Underbarrel Extinguisher", round(scale * 4.5), /obj/item/attachable/attached_gun/extinguisher, VENDOR_ITEM_REGULAR), - list("Underbarrel Flashlight Grip", round(scale * 9.5), /obj/item/attachable/flashlight/grip, VENDOR_ITEM_REGULAR), - list("Underslung Grenade Launcher", round(scale * 9.5), /obj/item/attachable/attached_gun/grenade, VENDOR_ITEM_REGULAR), - list("Vertical Grip", round(scale * 9.5), /obj/item/attachable/verticalgrip, VENDOR_ITEM_REGULAR), + list("Angled Grip", 6.5, /obj/item/attachable/angledgrip, VENDOR_ITEM_REGULAR), + list("Bipod", 6.5, /obj/item/attachable/bipod, VENDOR_ITEM_REGULAR), + list("Burst Fire Assembly", 4.5, /obj/item/attachable/burstfire_assembly, VENDOR_ITEM_REGULAR), + list("Gyroscopic Stabilizer", 4.5, /obj/item/attachable/gyro, VENDOR_ITEM_REGULAR), + list("Laser Sight", 9.5, /obj/item/attachable/lasersight, VENDOR_ITEM_REGULAR), + list("Mini Flamethrower", 4.5, /obj/item/attachable/attached_gun/flamer, VENDOR_ITEM_REGULAR), + list("XM-VESG-1 Flamer Nozzle", 4.5, /obj/item/attachable/attached_gun/flamer_nozzle, VENDOR_ITEM_REGULAR), + list("U7 Underbarrel Shotgun", 4.5, /obj/item/attachable/attached_gun/shotgun, VENDOR_ITEM_REGULAR), + list("Underbarrel Extinguisher", 4.5, /obj/item/attachable/attached_gun/extinguisher, VENDOR_ITEM_REGULAR), + list("Underbarrel Flashlight Grip", 9.5, /obj/item/attachable/flashlight/grip, VENDOR_ITEM_REGULAR), + list("Underslung Grenade Launcher", 9.5, /obj/item/attachable/attached_gun/grenade, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 9.5, /obj/item/attachable/verticalgrip, VENDOR_ITEM_REGULAR), list("STOCK", -1, null, null), - list("M37 Wooden Stock", round(scale * 4.5), /obj/item/attachable/stock/shotgun, VENDOR_ITEM_REGULAR), - list("M39 Arm Brace", round(scale * 4.5), /obj/item/attachable/stock/smg/collapsible/brace, VENDOR_ITEM_REGULAR), - list("M39 Folding Stock", round(scale * 4.5), /obj/item/attachable/stock/smg/collapsible, VENDOR_ITEM_REGULAR), - list("M39 Stock", round(scale * 4.5), /obj/item/attachable/stock/smg, VENDOR_ITEM_REGULAR), - list("M41A Solid Stock", round(scale * 4.5), /obj/item/attachable/stock/rifle, VENDOR_ITEM_REGULAR), - list("M41A Folding Stock", round(scale * 4.5), /obj/item/attachable/stock/rifle/collapsible, VENDOR_ITEM_REGULAR), - list("M44 Magnum Sharpshooter Stock", round(scale * 4.5), /obj/item/attachable/stock/revolver, VENDOR_ITEM_REGULAR) + list("M37 Wooden Stock", 4.5, /obj/item/attachable/stock/shotgun, VENDOR_ITEM_REGULAR), + list("M39 Arm Brace", 4.5, /obj/item/attachable/stock/smg/collapsible/brace, VENDOR_ITEM_REGULAR), + list("M39 Folding Stock", 4.5, /obj/item/attachable/stock/smg/collapsible, VENDOR_ITEM_REGULAR), + list("M39 Stock", 4.5, /obj/item/attachable/stock/smg, VENDOR_ITEM_REGULAR), + list("M41A Solid Stock", 4.5, /obj/item/attachable/stock/rifle, VENDOR_ITEM_REGULAR), + list("M41A Folding Stock", 4.5, /obj/item/attachable/stock/rifle/collapsible, VENDOR_ITEM_REGULAR), + list("M44 Magnum Sharpshooter Stock", 4.5, /obj/item/attachable/stock/revolver, VENDOR_ITEM_REGULAR) ) -/obj/structure/machinery/cm_vending/sorted/attachments/get_appropriate_vend_turf(mob/living/carbon/human/H) - var/turf/turf_to_vent_to - if(vend_x_offset != 0 || vend_y_offset != 0) //this will allow to avoid code below that suits only Almayer. - turf_to_vent_to = locate(x + vend_x_offset, y + vend_y_offset, z) - else - turf_to_vent_to = get_turf(get_step(src, NORTHEAST)) - if(H.loc == turf_to_vent_to) - turf_to_vent_to = get_turf(get_step(H.loc, WEST)) - else - turf_to_vent_to = get_turf(get_step(src, SOUTHEAST)) - if(H.loc == turf_to_vent_to) - turf_to_vent_to = get_turf(get_step(H.loc, WEST)) - else - turf_to_vent_to = loc - return turf_to_vent_to - /obj/structure/machinery/cm_vending/sorted/attachments/blend icon_state = "req_attach_wall" tiles_with = list( @@ -402,7 +364,6 @@ /obj/structure/machinery/door/airlock, /turf/closed/wall/almayer, ) - vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY //We want to vend to turf not hand, since we are in requisitions //------------UNIFORM VENDOR--------------- @@ -426,11 +387,12 @@ list("ARMOR", -1, null, null), list("M10 Pattern Marine Helmet", 20, /obj/item/clothing/head/helmet/marine, VENDOR_ITEM_REGULAR), list("M10 Pattern Technician Helmet", 20, /obj/item/clothing/head/helmet/marine/tech, VENDOR_ITEM_REGULAR), - list("M3 Pattern Carrier Marine Armor", 20, /obj/item/clothing/suit/storage/marine/carrier, VENDOR_ITEM_REGULAR), - list("M3 Pattern Padded Marine Armor", 20, /obj/item/clothing/suit/storage/marine/padded, VENDOR_ITEM_REGULAR), - list("M3 Pattern Padless Marine Armor", 20, /obj/item/clothing/suit/storage/marine/padless, VENDOR_ITEM_REGULAR), - list("M3 Pattern Ridged Marine Armor", 20, /obj/item/clothing/suit/storage/marine/padless_lines, VENDOR_ITEM_REGULAR), - list("M3 Pattern Skull Marine Armor", 20, /obj/item/clothing/suit/storage/marine/skull, VENDOR_ITEM_REGULAR), + list("M10 Pattern Corpman Helmet", 20, /obj/item/clothing/head/helmet/marine/medic, VENDOR_ITEM_REGULAR), + list("M3 Pattern Carrier Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/carrier, VENDOR_ITEM_REGULAR), + list("M3 Pattern Padded Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/padded, VENDOR_ITEM_REGULAR), + list("M3 Pattern Padless Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/padless, VENDOR_ITEM_REGULAR), + list("M3 Pattern Ridged Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/padless_lines, VENDOR_ITEM_REGULAR), + list("M3 Pattern Skull Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/skull, VENDOR_ITEM_REGULAR), list("M3-EOD Pattern Heavy Armor", 10, /obj/item/clothing/suit/storage/marine/heavy, VENDOR_ITEM_REGULAR), list("M3-L Pattern Light Armor", 10, /obj/item/clothing/suit/storage/marine/light, VENDOR_ITEM_REGULAR), @@ -454,6 +416,9 @@ list("MASKS", -1, null, null, null), list("Gas Mask", 20, /obj/item/clothing/mask/gas, VENDOR_ITEM_REGULAR), list("Heat Absorbent Coif", 10, /obj/item/clothing/mask/rebreather/scarf, VENDOR_ITEM_REGULAR), + + list("MISCELLANEOUS", -1, null, null), + list("Bedroll", 30, /obj/item/roller/bedroll, VENDOR_ITEM_REGULAR), ) /obj/structure/machinery/cm_vending/sorted/uniform_supply/ui_state(mob/user) diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_engineer.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_engineer.dm index 2dbf0324e3d6..4053b9294c13 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_engineer.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_engineer.dm @@ -20,11 +20,8 @@ GLOBAL_LIST_INIT(cm_vending_gear_engi, list( list("Plasteel x10", 7, /obj/item/stack/sheet/plasteel/small_stack, null, VENDOR_ITEM_RECOMMENDED), list("Plastic Explosive", 3, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), list("Breaching Charge", 5, /obj/item/explosive/plastic/breaching_charge, null, VENDOR_ITEM_RECOMMENDED), - list("Range Finder", 10, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), - list("Laser Designator", 15, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), list("Sandbags x25", 10, /obj/item/stack/sandbags_empty/half, null, VENDOR_ITEM_RECOMMENDED), list("Super-Capacity Power Cell", 10, /obj/item/cell/super, null, VENDOR_ITEM_REGULAR), - list("Welding Goggles", 5, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_MANDATORY), list("ES-11 Mobile Fuel Canister", 4, /obj/item/tool/weldpack/minitank, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), @@ -39,13 +36,23 @@ GLOBAL_LIST_INIT(cm_vending_gear_engi, list( list("M20 Mine Box (x4 mines)", 18, /obj/item/storage/box/explosive_mines, null, VENDOR_ITEM_REGULAR), list("M40 MFHS Metal Foam Grenade", 5, /obj/item/explosive/grenade/metal_foam, null, VENDOR_ITEM_REGULAR), - list("AMMUNITION", 0, null, null, null), + list("PRIMARY AMMUNITION", 0, null, null, null), list("M4RA AP Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR), list("M39 AP Magazine (10x20mm)", 6, /obj/item/ammo_magazine/smg/m39/ap , null, VENDOR_ITEM_REGULAR), list("M39 Extended Magazine (10x20mm)", 6, /obj/item/ammo_magazine/smg/m39/extended , null, VENDOR_ITEM_REGULAR), list("M41A AP Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/ap , null, VENDOR_ITEM_REGULAR), list("M41A Extended Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/extended , null, VENDOR_ITEM_REGULAR), + list("SIDEARM AMMUNITION", 0, null, null, null), + list("M44 Heavy Speed Loader (.44)", 6, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR), + list("M4A3 HP Magazine", 3, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR), + list("M4A3 AP Magazine", 3, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR), + list("VP78 Magazine", 3, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR), + + list("ARMORS", 0, null, null, null), + list("M3 B12 Pattern Marine Armor", 24, /obj/item/clothing/suit/storage/marine/medium/leader, null, VENDOR_ITEM_REGULAR), + list("M4 Pattern Armor", 30, /obj/item/clothing/suit/storage/marine/medium/rto, null, VENDOR_ITEM_REGULAR), + list("RESTRICTED FIREARMS", 0, null, null, null), list("VP78 Pistol", 8, /obj/item/storage/box/guncase/vp78, null, VENDOR_ITEM_REGULAR), list("SU-6 Smart Pistol", 12, /obj/item/storage/box/guncase/smartpistol, null, VENDOR_ITEM_REGULAR), @@ -53,27 +60,34 @@ GLOBAL_LIST_INIT(cm_vending_gear_engi, list( list("M79 Grenade Launcher", 24, /obj/item/storage/box/guncase/m79, null, VENDOR_ITEM_REGULAR), list("M56D Heavy Machine Gun", 24, /obj/item/storage/box/guncase/m56d, null, VENDOR_ITEM_REGULAR), + list("CLOTHING ITEMS", 0, null, null, null), + list("Machete Scabbard (Full)", 6, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR), + list("Machete Pouch (Full)", 8, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), + list("USCM Radio Telephone Pack", 15, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), + list("Fuel Tank Strap Pouch", 4, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), + list("Sling Pouch", 6, /obj/item/storage/pouch/sling, null, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 6, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), + list("M276 Pattern Combat Toolbelt Rig", 15, /obj/item/storage/belt/gun/utility, null, VENDOR_ITEM_REGULAR), + list("UTILITIES", 0, null, null, null), - list("SensorMate Medical HUD", 12, /obj/item/clothing/glasses/hud/sensor, null, VENDOR_ITEM_REGULAR), list("Roller Bed", 5, /obj/item/roller, null, VENDOR_ITEM_REGULAR), list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), - list("M3 B12 Pattern Armor", 24, /obj/item/clothing/suit/storage/marine/leader, null, VENDOR_ITEM_REGULAR), - list("M4 Pattern Armor", 30, /obj/item/clothing/suit/storage/marine/rto, null, VENDOR_ITEM_REGULAR), - list("Large General Pouch", 6, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), - list("Sling Pouch", 6, /obj/item/storage/pouch/sling, null, VENDOR_ITEM_REGULAR), - list("Large Magazine Pouch", 6, /obj/item/storage/pouch/magazine/large, null, VENDOR_ITEM_REGULAR), - list("Fuel Tank Strap Pouch", 4, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), - list("Machete Pouch (Full)", 8, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), list("Fire Extinguisher (Portable)", 3, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), list("Motion Detector", 8, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), list("Whistle", 3, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), + + list("BINOCULARS", 0, null, null, null), + list("Binoculars", 5, /obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), + list("Range Finder", 10, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), + list("Laser Designator", 15, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), + list("Medical Helmet Optic", 12, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), + + list("PAMPHLETS", 0, null, null, null), list("JTAC Pamphlet", 15, /obj/item/pamphlet/skill/jtac, null, VENDOR_ITEM_REGULAR), - list("Powerloader Certification", 45, /obj/item/pamphlet/skill/powerloader, null, VENDOR_ITEM_REGULAR), - list("Large Shotgun Shell Pouch", 10, /obj/item/storage/pouch/shotgun/large, null, VENDOR_ITEM_RECOMMENDED), - list("M276 Pattern Combat Toolbelt Rig", 15, /obj/item/storage/belt/gun/utility, null, VENDOR_ITEM_REGULAR), list("RADIO KEYS", 0, null, null, null), - list("Engineering Radio Encryption Key", 3, /obj/item/device/encryptionkey/engi, null, VENDOR_ITEM_REGULAR), list("Intel Radio Encryption Key", 3, /obj/item/device/encryptionkey/intel, null, VENDOR_ITEM_REGULAR), list("JTAC Radio Encryption Key", 3, /obj/item/device/encryptionkey/jtac, null, VENDOR_ITEM_REGULAR), list("Supply Radio Encryption Key", 3, /obj/item/device/encryptionkey/req, null, VENDOR_ITEM_REGULAR), @@ -93,11 +107,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_engi, list( GLOBAL_LIST_INIT(cm_vending_clothing_engi, list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), - list("Uniform", 0, /obj/item/clothing/under/marine/engineer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), - list("Headset", 0, /obj/item/device/radio/headset/almayer/marine, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Helmet", 0, /obj/item/clothing/head/helmet/marine/tech, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), + list("Standard Marine Apparel", 0, list(/obj/item/clothing/under/marine/engineer, /obj/item/clothing/shoes/marine/knife, /obj/item/clothing/gloves/marine, /obj/item/device/radio/headset/almayer/marine, /obj/item/clothing/head/helmet/marine/tech), MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Map", 0, /obj/item/map/current_map, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), @@ -112,12 +122,13 @@ GLOBAL_LIST_INIT(cm_vending_clothing_engi, list( list("Technician Satchel", 0, /obj/item/storage/backpack/marine/satchel/tech, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), list("Technician Welderpack", 0, /obj/item/storage/backpack/marine/engineerpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("Technician Welder-Satchel", 0, /obj/item/storage/backpack/marine/engineerpack/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Technician Welder Chestrig", 0, /obj/item/storage/backpack/marine/engineerpack/welder_chestrig, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("BELT (CHOOSE 1)", 0, null, null, null), list("G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 General Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("M276 M39 Holster Rig", 0, /obj/item/storage/large_holster/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M39 Holster Rig", 0, /obj/item/storage/belt/gun/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M44 Holster Rig", 0, /obj/item/storage/belt/gun/m44, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Shotgun Shell Loading Rig", 0, /obj/item/storage/belt/shotgun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_leader.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_leader.dm index 47b0881daff0..845d169a701a 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_leader.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_leader.dm @@ -6,6 +6,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_leader, list( list("SQUAD KIT (CHOOSE 1, for yourself or your squad)", 0, null, null, null), list("M4RA Sniper Kit", 0, /obj/item/storage/box/kit/mini_sniper, MARINE_CAN_BUY_KIT, VENDOR_ITEM_REGULAR), + list("M41A Standard Kit", 0, /obj/item/storage/box/kit/m41a_kit , MARINE_CAN_BUY_KIT, VENDOR_ITEM_REGULAR), list("M240 Pyrotechnician Support Kit", 0, /obj/item/storage/box/kit/mini_pyro, MARINE_CAN_BUY_KIT, VENDOR_ITEM_REGULAR), list("M2C Heavy Machine Gun", 0, /obj/item/storage/box/guncase/m2c, MARINE_CAN_BUY_KIT, VENDOR_ITEM_REGULAR), list("M56D Heavy Machine Gun", 0, /obj/item/storage/box/guncase/m56d, MARINE_CAN_BUY_KIT, VENDOR_ITEM_REGULAR), @@ -14,20 +15,29 @@ GLOBAL_LIST_INIT(cm_vending_gear_leader, list( list("XM88 Heavy Rifle", 0, /obj/item/storage/box/guncase/xm88, MARINE_CAN_BUY_KIT, VENDOR_ITEM_REGULAR), list("Basic Engineering Supplies", 0, /obj/item/storage/box/kit/engineering_supply_kit, MARINE_CAN_BUY_KIT, VENDOR_ITEM_REGULAR), - list("UTILITIES", 0, null, null, null), - list("Whistle", 3, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), - list("Range Finder", 3, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), - list("Laser Designator", 5, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), - list("M2 Night Vision Goggles", 20, /obj/item/prop/helmetgarb/helmet_nvg, null, VENDOR_ITEM_RECOMMENDED), + list("ARMORS", 0, null, null, null), + list("M4 Pattern Armor", 30, /obj/item/clothing/suit/storage/marine/medium/rto, null, VENDOR_ITEM_REGULAR), + + list("CLOTHING ITEMS", 0, null, null, null), list("Machete Scabbard (Full)", 4, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR), list("Machete Pouch (Full)", 4, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), + list("USCM Radio Telephone Pack", 5, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), + list("M276 Pattern Combat Toolbelt Rig", 15, /obj/item/storage/belt/gun/utility, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("Whistle", 3, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), list("Fire Extinguisher (Portable)", 3, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), list("Motion Detector", 5, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), - list("M4 Pattern Armor", 30, /obj/item/clothing/suit/storage/marine/rto, null, VENDOR_ITEM_REGULAR), - list("Powerloader Certification", 45, /obj/item/pamphlet/skill/powerloader, null, VENDOR_ITEM_REGULAR), - list("Large Shotgun Shell Pouch", 10, /obj/item/storage/pouch/shotgun/large, null, VENDOR_ITEM_RECOMMENDED), list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), - list("Radio Telephone Pack", 5, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), + + list("BINOCULARS", 0, null, null, null), + list("Range Finder", 3, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), + list("Laser Designator", 5, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), + list("Medical Helmet Optic", 4, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_RECOMMENDED), + list("Night Vision Optic", 20, /obj/item/device/helmet_visor/night_vision, null, VENDOR_ITEM_RECOMMENDED), list("ENGINEERING SUPPLIES", 0, null, null, null), list("Insulated Gloves", 3, /obj/item/clothing/gloves/yellow, null, VENDOR_ITEM_REGULAR), @@ -67,15 +77,22 @@ GLOBAL_LIST_INIT(cm_vending_gear_leader, list( list("Injector (Tricord)", 1, /obj/item/reagent_container/hypospray/autoinjector/tricord, null, VENDOR_ITEM_REGULAR), list("Health Analyzer", 4, /obj/item/device/healthanalyzer, null, VENDOR_ITEM_REGULAR), - list("SensorMate Medical HUD", 4, /obj/item/clothing/glasses/hud/sensor, null, VENDOR_ITEM_RECOMMENDED), list("Roller Bed", 2, /obj/item/roller, null, VENDOR_ITEM_REGULAR), - list("SPECIAL AMMUNITION", 0, null, null, null), + list("PRIMARY AMMUNITION", 0, null, null, null), list("M4RA AP Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR), list("M39 AP Magazine (10x20mm)", 6, /obj/item/ammo_magazine/smg/m39/ap , null, VENDOR_ITEM_REGULAR), list("M39 Extended Magazine (10x20mm)", 6, /obj/item/ammo_magazine/smg/m39/extended , null, VENDOR_ITEM_REGULAR), list("M41A AP Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/ap , null, VENDOR_ITEM_REGULAR), list("M41A Extended Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/extended , null, VENDOR_ITEM_REGULAR), + + list("SIDEARM AMMUNITION", 0, null, null, null), + list("M44 Heavy Speed Loader (.44)", 6, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR), + list("M4A3 HP Magazine", 3, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR), + list("M4A3 AP Magazine", 3, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR), + list("VP78 Magazine", 3, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR), + + list("SPECIAL AMMUNITION", 0, null, null, null), list("M240 Incinerator Tank (Napthal)", 3, /obj/item/ammo_magazine/flamer_tank, null, VENDOR_ITEM_REGULAR), list("M240 Incinerator Tank (B-Gel)", 3, /obj/item/ammo_magazine/flamer_tank/gellied, null, VENDOR_ITEM_REGULAR), @@ -107,12 +124,8 @@ GLOBAL_LIST_INIT(cm_vending_gear_leader, list( GLOBAL_LIST_INIT(cm_vending_clothing_leader, list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), - list("Uniform", 0, /obj/item/clothing/under/marine, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), - list("Armor", 0, /obj/item/clothing/suit/storage/marine/leader, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), - list("Headset", 0, /obj/item/device/radio/headset/almayer/marine, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Helmet", 0, /obj/item/clothing/head/helmet/marine/leader, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), + list("Standard Marine Apparel", 0, list(/obj/item/clothing/under/marine, /obj/item/clothing/shoes/marine/knife, /obj/item/clothing/gloves/marine, /obj/item/device/radio/headset/almayer/marine, /obj/item/clothing/head/helmet/marine/leader), MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + list("B12 Pattern Armor", 0, /obj/item/clothing/suit/storage/marine/medium/leader, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Map", 0, /obj/item/map/current_map, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_MANDATORY), @@ -127,7 +140,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_leader, list( list("M276 General Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Lifesaver Bag", 0, /obj/item/storage/belt/medical/lifesaver, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Medical Storage Rig", 0, /obj/item/storage/belt/medical, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("M276 M39 Holster Rig", 0, /obj/item/storage/large_holster/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M39 Holster Rig", 0, /obj/item/storage/belt/gun/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M44 Holster Rig", 0, /obj/item/storage/belt/gun/m44, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Shotgun Shell Loading Rig", 0, /obj/item/storage/belt/shotgun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm index ab864947e8f8..7d16d15af6fd 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm @@ -29,7 +29,6 @@ GLOBAL_LIST_INIT(cm_vending_gear_medic, list( list("Autoinjector (Oxycodone)", 2, /obj/item/reagent_container/hypospray/autoinjector/oxycodone, null, VENDOR_ITEM_REGULAR), list("Autoinjector (Tramadol)", 1, /obj/item/reagent_container/hypospray/autoinjector/tramadol, null, VENDOR_ITEM_REGULAR), list("Autoinjector (Tricord)", 1, /obj/item/reagent_container/hypospray/autoinjector/tricord, null, VENDOR_ITEM_REGULAR), - list("Autoinjector (Emergency)", 2, /obj/item/reagent_container/hypospray/autoinjector/emergency, null, VENDOR_ITEM_REGULAR), list("PILL BOTTLES", 0, null, null, null), list("Pill Bottle (Bicaridine)", 5, /obj/item/storage/pill_bottle/bicaridine, null, VENDOR_ITEM_RECOMMENDED), @@ -42,7 +41,6 @@ GLOBAL_LIST_INIT(cm_vending_gear_medic, list( list("MEDICAL UTILITIES", 0, null, null, null), list("Health Analyzer", 4, /obj/item/device/healthanalyzer, null, VENDOR_ITEM_REGULAR), - list("Medical HUD Glasses", 4, /obj/item/clothing/glasses/hud/health, null, VENDOR_ITEM_REGULAR), list("Roller Bed", 4, /obj/item/roller, null, VENDOR_ITEM_REGULAR), list("Stasis Bag", 6, /obj/item/bodybag/cryobag, null, VENDOR_ITEM_REGULAR), list("Pressurized Reagent Canister Pouch (EMPTY)", 3, /obj/item/storage/pouch/pressurized_reagent_canister, null, VENDOR_ITEM_REGULAR), @@ -60,33 +58,50 @@ GLOBAL_LIST_INIT(cm_vending_gear_medic, list( list("M74 AGM-Hornet Airburst Packet (x3 airburst grenades", 20, /obj/item/storage/box/packet/hornet, null, VENDOR_ITEM_REGULAR), list("M20 Mine Box (x4 mines)", 20, /obj/item/storage/box/explosive_mines, null, VENDOR_ITEM_REGULAR), - list("AMMUNITION", 0, null, null, null), + list("PRIMARY AMMUNITION", 0, null, null, null), list("M4RA AP Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR), list("M39 AP Magazine (10x20mm)", 6, /obj/item/ammo_magazine/smg/m39/ap , null, VENDOR_ITEM_REGULAR), list("M39 Extended Magazine (10x20mm)", 6, /obj/item/ammo_magazine/smg/m39/extended , null, VENDOR_ITEM_REGULAR), list("M41A AP Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/ap , null, VENDOR_ITEM_REGULAR), list("M41A Extended Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/extended , null, VENDOR_ITEM_REGULAR), + list("SIDEARM AMMUNITION", 0, null, null, null), + list("M44 Heavy Speed Loader (.44)", 6, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR), + list("M4A3 HP Magazine", 3, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR), + list("M4A3 AP Magazine", 3, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR), + list("VP78 Magazine", 3, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR), + + list("ARMORS", 0, null, null, null), + list("M3 B12 Pattern Marine Armor", 28, /obj/item/clothing/suit/storage/marine/medium/leader, null, VENDOR_ITEM_REGULAR), + list("M4 Pattern Armor", 28, /obj/item/clothing/suit/storage/marine/medium/rto, null, VENDOR_ITEM_REGULAR), + list("RESTRICTED FIREARMS", 0, null, null, null), list("VP78 Pistol", 8, /obj/item/storage/box/guncase/vp78, null, VENDOR_ITEM_REGULAR), list("SU-6 Smart Pistol", 12, /obj/item/storage/box/guncase/smartpistol, null, VENDOR_ITEM_REGULAR), - list("UTILITIES", 0, null, null, null), - list("M3 B12 Pattern Armor", 28, /obj/item/clothing/suit/storage/marine/leader, null, VENDOR_ITEM_REGULAR), - list("M4 Pattern Armor", 28, /obj/item/clothing/suit/storage/marine/rto, null, VENDOR_ITEM_REGULAR), - list("Range Finder", 6, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), - list("Laser Designator", 8, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), - list("Large General Pouch", 6, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), - list("Large Magazine Pouch", 6, /obj/item/storage/pouch/magazine/large, null, VENDOR_ITEM_REGULAR), - list("Large Shotgun Shell Pouch", 6, /obj/item/storage/pouch/shotgun/large, null, VENDOR_ITEM_REGULAR), - list("Fuel Tank Strap Pouch", 4, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), - list("Shoulder Holster", 6, /obj/item/clothing/accessory/storage/holster, null, VENDOR_ITEM_REGULAR), + list("CLOTHING ITEMS", 0, null, null, null), list("Machete Scabbard (Full)", 6, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR), list("Machete Pouch (Full)", 8, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), + list("USCM Radio Telephone Pack", 15, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), + list("Fuel Tank Strap Pouch", 4, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), + list("Welding Goggles", 3, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), list("Fire Extinguisher (Portable)", 3, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), list("Motion Detector", 8, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), list("Whistle", 3, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), - list("Welding Goggles", 3, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + + list("BINOCULARS", 0, null, null, null), + list("Binoculars", 5, /obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), + list("Range Finder", 10, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), + list("Laser Designator", 15, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), + + list("PAMPHLETS", 0, null, null, null), + list("JTAC Pamphlet", 15, /obj/item/pamphlet/skill/jtac, null, VENDOR_ITEM_REGULAR), + list("Engineering Pamphlet", 15, /obj/item/pamphlet/skill/engineer, null, VENDOR_ITEM_REGULAR), list("RADIO KEYS", 0, null, null, null), list("Engineering Radio Encryption Key", 3, /obj/item/device/encryptionkey/engi, null, VENDOR_ITEM_REGULAR), @@ -110,12 +125,8 @@ GLOBAL_LIST_INIT(cm_vending_gear_medic, list( GLOBAL_LIST_INIT(cm_vending_clothing_medic, list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), - list("Uniform", 0, /obj/item/clothing/under/marine/medic, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), - list("Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), - list("Headset", 0, /obj/item/device/radio/headset/almayer/marine, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Helmet", 0, /obj/item/clothing/head/helmet/marine/medic, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), + list("Standard Marine Apparel", 0, list(/obj/item/clothing/under/marine/medic, /obj/item/clothing/shoes/marine/knife, /obj/item/clothing/gloves/marine, /obj/item/device/radio/headset/almayer/marine, /obj/item/clothing/head/helmet/marine/medic), MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + list("Combat Sterile Gloves", 0, /obj/item/clothing/gloves/marine/medical, MARINE_CAN_BUY_KIT, VENDOR_ITEM_REGULAR), list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Map", 0, /obj/item/map/current_map, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), @@ -133,7 +144,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_medic, list( list("M276 General Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Lifesaver Bag (Full)", 0, /obj/item/storage/belt/medical/lifesaver/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("M276 Medical Storage Rig (Full)", 0, /obj/item/storage/belt/medical/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("M276 M39 Holster Rig", 0, /obj/item/storage/large_holster/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M39 Holster Rig", 0, /obj/item/storage/belt/gun/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M44 Holster Rig", 0, /obj/item/storage/belt/gun/m44, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Shotgun Shell Loading Rig", 0, /obj/item/storage/belt/shotgun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), @@ -152,7 +163,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_medic, list( list("Magazine Pouch", 0, /obj/item/storage/pouch/magazine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Bicaridine)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/bicaridine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Kelotane)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/kelotane, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Revival Mix)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/revival, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm index 3777fe75aa16..2736de3a981d 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm @@ -53,8 +53,37 @@ list("M94 Marking Flare Pack", round(scale * 10), /obj/item/storage/box/m94, VENDOR_ITEM_RECOMMENDED) ) +/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep/tutorial + name = "\improper ColMarTech Automated Weapons Rack" + desc = "An automated weapon rack hooked up to a big storage of standard-issue weapons." + icon_state = "guns" + req_access = list(ACCESS_TUTORIAL_LOCKED) + req_one_access = list() + hackable = FALSE + vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND + +/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep/tutorial/populate_product_list(scale) + listed_products = list( + list("PRIMARY FIREARMS", -1, null, null), + list("M41A Pulse Rifle MK2", 1, /obj/item/weapon/gun/rifle/m41a, VENDOR_ITEM_RECOMMENDED), + + list("PRIMARY AMMUNITION", -1, null, null), + list("M41A Magazine (10x24mm)", 1, /obj/item/ammo_magazine/rifle, VENDOR_ITEM_RECOMMENDED), + ) + +/// Called if the tutorial mob somehow uses an entire magazine without the xeno dying +/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep/tutorial/proc/load_ammo() + listed_products = list( + list("PRIMARY FIREARMS", -1, null, null), + list("M41A Pulse Rifle MK2", 0, /obj/item/weapon/gun/rifle/m41a, VENDOR_ITEM_RECOMMENDED), + + list("PRIMARY AMMUNITION", -1, null, null), + list("M41A Magazine (10x24mm)", 99, /obj/item/ammo_magazine/rifle, VENDOR_ITEM_RECOMMENDED), + ) + //------------SQUAD PREP UNIFORM VENDOR--------------- + /obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep name = "\improper ColMarTech Surplus Uniform Vendor" desc = "An automated supply rack hooked up to a small storage of standard marine uniforms." @@ -62,51 +91,111 @@ req_one_access = list() listed_products = list() hackable = TRUE + vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND | VEND_STOCK_DYNAMIC /obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep/ui_state(mob/user) return GLOB.not_incapacitated_and_adjacent_strict_state /obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep/populate_product_list(scale) listed_products = list( - list("UNIFORM & STORAGE", -1, null, null), - list("Lightweight IMP Backpack", 10, /obj/item/storage/backpack/marine, VENDOR_ITEM_REGULAR), - list("Marine Radio Headset", 10, /obj/item/device/radio/headset/almayer, VENDOR_ITEM_REGULAR), - list("Marine Combat Gloves", 10, /obj/item/clothing/gloves/marine, VENDOR_ITEM_REGULAR), - list("Marine Black Combat Gloves", 10, /obj/item/clothing/gloves/marine/black, VENDOR_ITEM_REGULAR), - list("Marine Combat Boots", 20, /obj/item/clothing/shoes/marine, VENDOR_ITEM_REGULAR), - list("Shotgun Scabbard", 5, /obj/item/storage/large_holster/m37, VENDOR_ITEM_REGULAR), - list("USCM Satchel", 10, /obj/item/storage/backpack/marine/satchel, VENDOR_ITEM_REGULAR), - list("USCM Technical Satchel", 10, /obj/item/storage/backpack/marine/satchel/tech, VENDOR_ITEM_REGULAR), - list("USCM Uniform", 20, /obj/item/clothing/under/marine, VENDOR_ITEM_REGULAR), + list("STANDARD EQUIPMENT", -1, null, null, null), + list("Marine Combat Boots", round(scale * 15), /obj/item/clothing/shoes/marine, VENDOR_ITEM_REGULAR), + list("Marine Brown Combat Boots", round(scale * 15), /obj/item/clothing/shoes/marine/brown, VENDOR_ITEM_REGULAR), + list("USCM Uniform", round(scale * 15), /obj/item/clothing/under/marine, VENDOR_ITEM_REGULAR), + list("Marine Combat Gloves", round(scale * 15), /obj/item/clothing/gloves/marine, VENDOR_ITEM_REGULAR), + list("Marine Brown Combat Gloves", round(scale * 15), /obj/item/clothing/gloves/marine/brown, VENDOR_ITEM_REGULAR), + list("Marine Black Combat Gloves", round(scale * 15), /obj/item/clothing/gloves/marine/black, VENDOR_ITEM_REGULAR), + list("Marine Radio Headset", round(scale * 15), /obj/item/device/radio/headset/almayer, VENDOR_ITEM_REGULAR), + list("M10 Pattern Marine Helmet", round(scale * 15), /obj/item/clothing/head/helmet/marine, VENDOR_ITEM_REGULAR), - list("BELTS", -1, null, null), - list("M276 Pattern Ammo Load Rig", 10, /obj/item/storage/belt/marine, VENDOR_ITEM_REGULAR), - list("M276 Pattern M40 Grenade Rig", 8, /obj/item/storage/belt/grenade, VENDOR_ITEM_REGULAR), - list("M276 Pattern Shotgun Shell Loading Rig", 10, /obj/item/storage/belt/shotgun, VENDOR_ITEM_REGULAR), - list("M276 Pattern General Pistol Holster Rig", 10, /obj/item/storage/belt/gun/m4a3, VENDOR_ITEM_REGULAR), - list("M276 Pattern M39 Holster Rig", 10, /obj/item/storage/large_holster/m39, VENDOR_ITEM_REGULAR), - list("M276 Pattern M44 Holster Rig", 10, /obj/item/storage/belt/gun/m44, VENDOR_ITEM_REGULAR), - list("M276 Pattern M82F Holster Rig", 5, /obj/item/storage/belt/gun/flaregun, VENDOR_ITEM_REGULAR), + list("WEBBINGS", -1, null, null), + list("Brown Webbing Vest", 1, /obj/item/clothing/accessory/storage/black_vest/brown_vest, VENDOR_ITEM_REGULAR), + list("Black Webbing Vest", 1, /obj/item/clothing/accessory/storage/black_vest, VENDOR_ITEM_REGULAR), + list("Webbing", round(scale * 2), /obj/item/clothing/accessory/storage/webbing, VENDOR_ITEM_REGULAR), + list("Drop Pouch", 0.75, /obj/item/clothing/accessory/storage/droppouch, VENDOR_ITEM_REGULAR), + list("Shoulder Holster", 0.75, /obj/item/clothing/accessory/storage/holster, VENDOR_ITEM_REGULAR), list("ARMOR", -1, null, null), - list("M10 Pattern Marine Helmet", 20, /obj/item/clothing/head/helmet/marine, VENDOR_ITEM_REGULAR), - list("M3 Pattern Carrier Marine Armor", 20, /obj/item/clothing/suit/storage/marine/carrier, VENDOR_ITEM_REGULAR), - list("M3 Pattern Padded Marine Armor", 20, /obj/item/clothing/suit/storage/marine/padded, VENDOR_ITEM_REGULAR), - list("M3 Pattern Padless Marine Armor", 20, /obj/item/clothing/suit/storage/marine/padless, VENDOR_ITEM_REGULAR), - list("M3 Pattern Ridged Marine Armor", 20, /obj/item/clothing/suit/storage/marine/padless_lines, VENDOR_ITEM_REGULAR), - list("M3 Pattern Skull Marine Armor", 20, /obj/item/clothing/suit/storage/marine/skull, VENDOR_ITEM_REGULAR), - list("M3 Pattern Smooth Marine Armor", 20, /obj/item/clothing/suit/storage/marine/smooth, VENDOR_ITEM_REGULAR), - list("M3-EOD Pattern Heavy Armor", 10, /obj/item/clothing/suit/storage/marine/heavy, VENDOR_ITEM_REGULAR), - list("M3-L Pattern Light Armor", 10, /obj/item/clothing/suit/storage/marine/light, VENDOR_ITEM_REGULAR), + list("M3 Pattern Carrier Marine Armor", round(scale * 15), /obj/item/clothing/suit/storage/marine/medium/carrier, VENDOR_ITEM_REGULAR), + list("M3 Pattern Padded Marine Armor", round(scale * 15), /obj/item/clothing/suit/storage/marine/medium/padded, VENDOR_ITEM_REGULAR), + list("M3 Pattern Padless Marine Armor", round(scale * 15), /obj/item/clothing/suit/storage/marine/medium/padless, VENDOR_ITEM_REGULAR), + list("M3 Pattern Ridged Marine Armor", round(scale * 15), /obj/item/clothing/suit/storage/marine/medium/padless_lines, VENDOR_ITEM_REGULAR), + list("M3 Pattern Skull Marine Armor", round(scale * 15), /obj/item/clothing/suit/storage/marine/medium/skull, VENDOR_ITEM_REGULAR), + list("M3 Pattern Smooth Marine Armor", round(scale * 15), /obj/item/clothing/suit/storage/marine/medium/smooth, VENDOR_ITEM_REGULAR), + list("M3-EOD Pattern Heavy Armor", round(scale * 10), /obj/item/clothing/suit/storage/marine/heavy, VENDOR_ITEM_REGULAR), + list("M3-L Pattern Light Armor", round(scale * 10), /obj/item/clothing/suit/storage/marine/light, VENDOR_ITEM_REGULAR), + + list("BACKPACK", -1, null, null, null), + list("Lightweight IMP Backpack", round(scale * 15), /obj/item/storage/backpack/marine, VENDOR_ITEM_REGULAR), + list("Technician Backpack", round(scale * 15), /obj/item/storage/backpack/marine/tech, VENDOR_ITEM_REGULAR), + list("Medical Backpack", round(scale * 15), /obj/item/storage/backpack/marine/medic, VENDOR_ITEM_REGULAR), + list("USCM Satchel", round(scale * 15), /obj/item/storage/backpack/marine/satchel, VENDOR_ITEM_REGULAR), + list("USCM Chestrig", round(scale * 15), /obj/item/storage/backpack/marine/satchel/chestrig, VENDOR_ITEM_REGULAR), + list("USCM Technical Satchel", round(scale * 15), /obj/item/storage/backpack/marine/satchel/tech, VENDOR_ITEM_REGULAR), + list("USCM Technical Chestrig", round(scale * 15), /obj/item/storage/backpack/marine/engineerpack/welder_chestrig, VENDOR_ITEM_REGULAR), + list("Medical Satchel", round(scale * 15), /obj/item/storage/backpack/marine/satchel/medic, VENDOR_ITEM_REGULAR), + list("Shotgun Scabbard", round(scale * 5), /obj/item/storage/large_holster/m37, VENDOR_ITEM_REGULAR), + + list("RESTRICTED BACKPACKS", -1, null, null), + list("USCM Technician Welderpack", 1.25, /obj/item/storage/backpack/marine/engineerpack, VENDOR_ITEM_REGULAR), + list("Technician Welder-Satchel", round(scale * 2), /obj/item/storage/backpack/marine/engineerpack/satchel, VENDOR_ITEM_REGULAR), + list("Radio Telephone Backpack", 0.75, /obj/item/storage/backpack/marine/satchel/rto, VENDOR_ITEM_REGULAR), + + list("BELTS", -1, null, null), + list("M276 Pattern Ammo Load Rig", round(scale * 15), /obj/item/storage/belt/marine, VENDOR_ITEM_REGULAR), + list("M276 Pattern M40 Grenade Rig", round(scale * 10), /obj/item/storage/belt/grenade, VENDOR_ITEM_REGULAR), + list("M276 Pattern Shotgun Shell Loading Rig", round(scale * 15), /obj/item/storage/belt/shotgun, VENDOR_ITEM_REGULAR), + list("M276 Pattern General Pistol Holster Rig", round(scale * 15), /obj/item/storage/belt/gun/m4a3, VENDOR_ITEM_REGULAR), + list("M276 Pattern M39 Holster Rig", round(scale * 15), /obj/item/storage/large_holster/m39, VENDOR_ITEM_REGULAR), + list("M276 Pattern M39 Holster Rig And Pouch", round(scale * 10), /obj/item/storage/belt/gun/m39, VENDOR_ITEM_REGULAR), + list("M276 Pattern M44 Holster Rig", round(scale * 15), /obj/item/storage/belt/gun/m44, VENDOR_ITEM_REGULAR), + list("M276 Pattern M82F Holster Rig", round(scale * 5), /obj/item/storage/belt/gun/flaregun, VENDOR_ITEM_REGULAR), + list("M276 Knife Rig (Full)", round(scale * 15), /obj/item/storage/belt/knifepouch, VENDOR_ITEM_REGULAR), + list("M276 G8-A General Utility Pouch", round(scale * 15), /obj/item/storage/backpack/general_belt, VENDOR_ITEM_REGULAR), + + list("POUCHES", -1, null, null, null), + list("Bayonet Sheath (Full)",round(scale * 15), /obj/item/storage/pouch/bayonet, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Splints, Gauze, Ointment)", round(scale * 15), /obj/item/storage/pouch/firstaid/full/alternate, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Pill Packets)", round(scale * 15), /obj/item/storage/pouch/firstaid/full/pills, VENDOR_ITEM_REGULAR), + list("Flare Pouch (Full)", round(scale * 15), /obj/item/storage/pouch/flare/full, VENDOR_ITEM_REGULAR), + list("Small Document Pouch", round(scale * 15), /obj/item/storage/pouch/document/small, VENDOR_ITEM_REGULAR), + list("Magazine Pouch", round(scale * 15), /obj/item/storage/pouch/magazine, VENDOR_ITEM_REGULAR), + list("Shotgun Shell Pouch", round(scale * 15), /obj/item/storage/pouch/shotgun, VENDOR_ITEM_REGULAR), + list("Medium General Pouch", round(scale * 15), /obj/item/storage/pouch/general/medium, VENDOR_ITEM_REGULAR), + list("Pistol Magazine Pouch", round(scale * 15), /obj/item/storage/pouch/magazine/pistol, VENDOR_ITEM_REGULAR), + list("Pistol Pouch", round(scale * 15), /obj/item/storage/pouch/pistol, VENDOR_ITEM_REGULAR), + + list("RESTRICTED POUCHES", -1, null, null, null), + list("Construction Pouch", 1.25, /obj/item/storage/pouch/construction, VENDOR_ITEM_REGULAR), + list("Explosive Pouch", 1.25, /obj/item/storage/pouch/explosive, VENDOR_ITEM_REGULAR), + list("First Responder Pouch (Empty)", 2.5, /obj/item/storage/pouch/first_responder, VENDOR_ITEM_REGULAR), + list("Large Pistol Magazine Pouch", round(scale * 2), /obj/item/storage/pouch/magazine/pistol/large, VENDOR_ITEM_REGULAR), + list("Tools Pouch", 1.25, /obj/item/storage/pouch/tools, VENDOR_ITEM_REGULAR), + list("Sling Pouch", 1.25, /obj/item/storage/pouch/sling, VENDOR_ITEM_REGULAR), + + list("MASK", -1, null, null, null), + list("Gas Mask", round(scale * 15), /obj/item/clothing/mask/gas, VENDOR_ITEM_REGULAR), + list("Heat Absorbent Coif", round(scale * 10), /obj/item/clothing/mask/rebreather/scarf, VENDOR_ITEM_REGULAR), + list("Rebreather", round(scale * 10), /obj/item/clothing/mask/rebreather, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), list("MISCELLANEOUS", -1, null, null, null), - list("Gas Mask", 20, /obj/item/clothing/mask/gas, VENDOR_ITEM_REGULAR), - list("Heat Absorbent Coif", 10, /obj/item/clothing/mask/rebreather/scarf, VENDOR_ITEM_REGULAR), - list("M5 Integrated Gas Mask", 10, /obj/item/prop/helmetgarb/helmet_gasmask, VENDOR_ITEM_REGULAR), - list("M10 Helmet Netting", 10, /obj/item/prop/helmetgarb/netting, VENDOR_ITEM_REGULAR), - list("M10 Helmet Rain Cover", 10, /obj/item/prop/helmetgarb/raincover, VENDOR_ITEM_REGULAR), - list("Firearm Lubricant", 20, /obj/item/prop/helmetgarb/gunoil, VENDOR_ITEM_REGULAR), - list("USCM Flair", 20, /obj/item/prop/helmetgarb/flair_uscm, VENDOR_ITEM_REGULAR), + list("Ballistic goggles", round(scale * 10), /obj/item/clothing/glasses/mgoggles, VENDOR_ITEM_REGULAR), + list("M1A1 Ballistic goggles", round(scale * 10), /obj/item/clothing/glasses/mgoggles/v2, VENDOR_ITEM_REGULAR), + list("Prescription ballistic goggles", round(scale * 10), /obj/item/clothing/glasses/mgoggles/prescription, VENDOR_ITEM_REGULAR), + list("Marine RPG glasses", round(scale * 10), /obj/item/clothing/glasses/regular, VENDOR_ITEM_REGULAR), + list("M5 Integrated Gas Mask", round(scale * 10), /obj/item/prop/helmetgarb/helmet_gasmask, VENDOR_ITEM_REGULAR), + list("M10 Helmet Netting", round(scale * 10), /obj/item/prop/helmetgarb/netting, VENDOR_ITEM_REGULAR), + list("M10 Helmet Rain Cover", round(scale * 10), /obj/item/prop/helmetgarb/raincover, VENDOR_ITEM_REGULAR), + list("Firearm Lubricant", round(scale * 15), /obj/item/prop/helmetgarb/gunoil, VENDOR_ITEM_REGULAR), + list("USCM Flair", round(scale * 15), /obj/item/prop/helmetgarb/flair_uscm, VENDOR_ITEM_REGULAR), + list("Falling Falcons Shoulder Patch", round(scale * 15), /obj/item/clothing/accessory/patch/falcon, VENDOR_ITEM_REGULAR), + list("USCM Shoulder Patch", round(scale * 15), /obj/item/clothing/accessory/patch, VENDOR_ITEM_REGULAR), + list("Bedroll", round(scale * 20), /obj/item/roller/bedroll, VENDOR_ITEM_REGULAR), + + list("OPTICS", -1, null, null, null), + list("Advanced Medical Optic (CORPSMAN ONLY)", round(scale * 4), /obj/item/device/helmet_visor/medical/advanced, VENDOR_ITEM_REGULAR), + list("Squad Optic", round(scale * 15), /obj/item/device/helmet_visor, VENDOR_ITEM_REGULAR), + ) //--------------SQUAD SPECIFIC VERSIONS-------------- @@ -161,7 +250,7 @@ req_access = list(ACCESS_MARINE_ALPHA) req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_SPECPREP, ACCESS_MARINE_RO) hackable = TRUE - vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND + vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND | VEND_STOCK_DYNAMIC vend_x_offset = 2 @@ -171,15 +260,14 @@ /obj/structure/machinery/cm_vending/sorted/cargo_ammo/squad/populate_product_list(scale) listed_products = list( - list("ARMOR-PIERCING AMMUNITION", -1, null, null), - list("M4RA AP Magazine (10x24mm)", round(scale * 3.5), /obj/item/ammo_magazine/rifle/m4ra/ap, VENDOR_ITEM_REGULAR), + list("M4RA AP Magazine (10x24mm)", 3.5, /obj/item/ammo_magazine/rifle/m4ra/ap, VENDOR_ITEM_REGULAR), list("M39 AP Magazine (10x20mm)", round(scale * 3), /obj/item/ammo_magazine/smg/m39/ap, VENDOR_ITEM_REGULAR), list("M41A AP Magazine (10x24mm)", round(scale * 3), /obj/item/ammo_magazine/rifle/ap, VENDOR_ITEM_REGULAR), list("EXTENDED AMMUNITION", -1, null, null), - list("M39 Extended Magazine (10x20mm)", round(scale * 1.8), /obj/item/ammo_magazine/smg/m39/extended, VENDOR_ITEM_REGULAR), - list("M41A Extended Magazine (10x24mm)", round(scale * 1.9), /obj/item/ammo_magazine/rifle/extended, VENDOR_ITEM_REGULAR), + list("M39 Extended Magazine (10x20mm)", 1.8, /obj/item/ammo_magazine/smg/m39/extended, VENDOR_ITEM_REGULAR), + list("M41A Extended Magazine (10x24mm)", 1.9, /obj/item/ammo_magazine/rifle/extended, VENDOR_ITEM_REGULAR), list("SPECIAL AMMUNITION", -1, null, null), list("M56 Smartgun Drum", 1, /obj/item/ammo_magazine/smartgun, VENDOR_ITEM_REGULAR), @@ -192,73 +280,56 @@ list("M240 Incinerator Tank", round(scale * 3), /obj/item/ammo_magazine/flamer_tank, VENDOR_ITEM_REGULAR), list("M56D Drum Magazine", round(scale * 2), /obj/item/ammo_magazine/m56d, VENDOR_ITEM_REGULAR), list("M2C Box Magazine", round(scale * 2), /obj/item/ammo_magazine/m2c, VENDOR_ITEM_REGULAR), + list("Box of Breaching Shells (16g)", round(scale * 2), /obj/item/ammo_magazine/shotgun/light/breaching, VENDOR_ITEM_REGULAR), list("HIRR Baton Slugs", round(scale * 6), /obj/item/explosive/grenade/slug/baton, VENDOR_ITEM_REGULAR), - list("M74 AGM-S Star Shell", round(scale * 2), /obj/item/explosive/grenade/high_explosive/airburst/starshell, VENDOR_ITEM_REGULAR), + list("M74 AGM-S Star Shell", round(scale * 4), /obj/item/explosive/grenade/high_explosive/airburst/starshell, VENDOR_ITEM_REGULAR), list("M74 AGM-S Hornet Shell", round(scale * 4), /obj/item/explosive/grenade/high_explosive/airburst/hornet_shell, VENDOR_ITEM_REGULAR), ) //--------------SQUAD ARMAMENTS VENDOR-------------- /obj/structure/machinery/cm_vending/sorted/cargo_guns/squad - name = "\improper ColMarTech Automated Armaments Squad Vendor" - desc = "An automated supply rack hooked up to a small storage of various firearms and explosives. Can be accessed by any Marine Rifleman." + name = "\improper ColMarTech Automated Utilities Squad Vendor" + desc = "An automated supply rack hooked up to a small storage of various utilities and tools. Can be accessed by any Marine Rifleman." req_access = list(ACCESS_MARINE_ALPHA) req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_SPECPREP, ACCESS_MARINE_RO) hackable = TRUE vend_x_offset = 2 vend_y_offset = 1 - vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND + vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND | VEND_STOCK_DYNAMIC /obj/structure/machinery/cm_vending/sorted/cargo_guns/squad/ui_state(mob/user) return GLOB.not_incapacitated_and_adjacent_strict_state /obj/structure/machinery/cm_vending/sorted/cargo_guns/squad/populate_product_list(scale) listed_products = list( - list("WEBBINGS", -1, null, null), - list("Brown Webbing Vest", round(scale * 2), /obj/item/clothing/accessory/storage/black_vest/brown_vest, VENDOR_ITEM_REGULAR), - list("Black Webbing Vest", round(scale * 1), /obj/item/clothing/accessory/storage/black_vest, VENDOR_ITEM_REGULAR), - list("Webbing", round(scale * 3), /obj/item/clothing/accessory/storage/webbing, VENDOR_ITEM_REGULAR), - list("Drop Pouch", round(scale * 1), /obj/item/clothing/accessory/storage/droppouch, VENDOR_ITEM_REGULAR), - list("Shoulder Holster", round(scale * 1), /obj/item/clothing/accessory/storage/holster, VENDOR_ITEM_REGULAR), + list("FOOD", -1, null, null), + list("MRE", round(scale * 5), /obj/item/storage/box/MRE, VENDOR_ITEM_REGULAR), + list("MRE Box", round(scale * 1), /obj/item/ammo_box/magazine/misc/mre, VENDOR_ITEM_REGULAR), - list("BACKPACKS", -1, null, null), - list("Lightweight IMP Backpack", round(scale * 15), /obj/item/storage/backpack/marine, VENDOR_ITEM_REGULAR), - list("Shotgun Scabbard", round(scale * 5), /obj/item/storage/large_holster/m37, VENDOR_ITEM_REGULAR), - list("USCM Technician Welderpack", round(scale * 2), /obj/item/storage/backpack/marine/engineerpack, VENDOR_ITEM_REGULAR), - list("Technician Welder-Satchel", round(scale * 3), /obj/item/storage/backpack/marine/engineerpack/satchel, VENDOR_ITEM_REGULAR), - list("Radio Telephone Backpack", round(scale * 1), /obj/item/storage/backpack/marine/satchel/rto, VENDOR_ITEM_REGULAR), - - list("BELTS", -1, null, null), - list("G8-A General Utility Pouch", round(scale * 2), /obj/item/storage/backpack/general_belt, VENDOR_ITEM_REGULAR), - list("M276 General Pistol Holster Rig", round(scale * 10), /obj/item/storage/belt/gun/m4a3, VENDOR_ITEM_REGULAR), - list("M276 M39 Holster Rig", round(scale * 2), /obj/item/storage/large_holster/m39, VENDOR_ITEM_REGULAR), - list("M276 M44 Holster Rig", round(scale * 5), /obj/item/storage/belt/gun/m44, VENDOR_ITEM_REGULAR), - list("M276 M82F Holster Rig", round(scale * 2), /obj/item/storage/belt/gun/flaregun, VENDOR_ITEM_REGULAR), - list("M276 M40 Grenade Rig", round(scale * 3), /obj/item/storage/belt/grenade, VENDOR_ITEM_REGULAR), - - list("POUCHES", -1, null, null), - list("Construction Pouch", round(scale * 2), /obj/item/storage/pouch/construction, VENDOR_ITEM_REGULAR), - list("Document Pouch", round(scale * 2), /obj/item/storage/pouch/document/small, VENDOR_ITEM_REGULAR), - list("Explosive Pouch", round(scale * 2), /obj/item/storage/pouch/explosive, VENDOR_ITEM_REGULAR), - list("First-Aid Pouch (Full)", round(scale * 5), /obj/item/storage/pouch/firstaid/full, VENDOR_ITEM_REGULAR), - list("First Responder Pouch (Empty)", round(scale * 4), /obj/item/storage/pouch/first_responder, VENDOR_ITEM_REGULAR), - list("Flare Pouch", round(scale * 5), /obj/item/storage/pouch/flare/full, VENDOR_ITEM_REGULAR), - list("Large Pistol Magazine Pouch", round(scale * 3), /obj/item/storage/pouch/magazine/pistol/large, VENDOR_ITEM_REGULAR), - list("Magazine Pouch", round(scale * 5), /obj/item/storage/pouch/magazine, VENDOR_ITEM_REGULAR), - list("Medical Pouch (Empty)", round(scale * 4), /obj/item/storage/pouch/medical, VENDOR_ITEM_REGULAR), - list("Medium General Pouch", round(scale * 2), /obj/item/storage/pouch/general/medium, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", round(scale * 2), /obj/item/storage/pouch/medkit, VENDOR_ITEM_REGULAR), - list("Shotgun Shell Pouch", round(scale *5), /obj/item/storage/pouch/shotgun, VENDOR_ITEM_REGULAR), - list("Sidearm Pouch", round(scale * 15), /obj/item/storage/pouch/pistol, VENDOR_ITEM_REGULAR), - list("Syringe Pouch", round(scale * 2), /obj/item/storage/pouch/syringe, VENDOR_ITEM_REGULAR), - list("Tools Pouch", round(scale * 2), /obj/item/storage/pouch/tools, VENDOR_ITEM_REGULAR), - list("Sling Pouch", round(scale * 2), /obj/item/storage/pouch/sling, VENDOR_ITEM_REGULAR), - - list("MISCELLANEOUS", -1, null, null), - list("Combat Flashlight", round(scale * 5), /obj/item/device/flashlight/combat, VENDOR_ITEM_REGULAR), + list("TOOLS", -1, null, null), list("Entrenching Tool (ET)", round(scale * 2), /obj/item/tool/shovel/etool/folded, VENDOR_ITEM_REGULAR), + list("Screwdriver", round(scale * 5), /obj/item/tool/screwdriver, VENDOR_ITEM_REGULAR), + list("Wirecutters", round(scale * 5), /obj/item/tool/wirecutters, VENDOR_ITEM_REGULAR), + list("Crowbar", round(scale * 5), /obj/item/tool/crowbar, VENDOR_ITEM_REGULAR), + list("Wrench", round(scale * 5), /obj/item/tool/wrench, VENDOR_ITEM_REGULAR), + list("Multitool", round(scale * 1), /obj/item/device/multitool, VENDOR_ITEM_REGULAR), + list("ME3 hand welder", round(scale * 1), /obj/item/tool/weldingtool/simple, VENDOR_ITEM_REGULAR), + + list("FLARE AND LIGHT", -1, null, null), + list("Combat Flashlight", round(scale * 5), /obj/item/device/flashlight/combat, VENDOR_ITEM_REGULAR), + list("Box of Flashlight", round(scale * 1), /obj/item/ammo_box/magazine/misc/flashlight, VENDOR_ITEM_REGULAR), + list("Box of Flares", round(scale * 1), /obj/item/ammo_box/magazine/misc/flares, VENDOR_ITEM_REGULAR), + list("M94 Marking Flare Pack", round(scale * 10), /obj/item/storage/box/m94, VENDOR_ITEM_REGULAR), list("M89-S Signal Flare Pack", round(scale * 1), /obj/item/storage/box/m94/signal, VENDOR_ITEM_REGULAR), + + list("MISCELLANEOUS", -1, null, null), + list("Engineer Kit", round(scale * 1), /obj/item/storage/toolkit/empty, VENDOR_ITEM_REGULAR), + list("Map", round(scale * 5), /obj/item/map/current_map, VENDOR_ITEM_REGULAR), + list("Extinguisher", round(scale * 5), /obj/item/tool/extinguisher, VENDOR_ITEM_REGULAR), + list("Fire Extinguisher (Portable)", round(scale * 1), /obj/item/tool/extinguisher/mini, VENDOR_ITEM_REGULAR), + list("Roller Bed", round(scale * 1), /obj/item/roller, VENDOR_ITEM_REGULAR), list("Machete Scabbard (Full)", round(scale * 5), /obj/item/storage/large_holster/machete/full, VENDOR_ITEM_REGULAR), list("Binoculars", round(scale * 1), /obj/item/device/binoculars, VENDOR_ITEM_REGULAR), list("MB-6 Folding Barricades (x3)", round(scale * 2), /obj/item/stack/folding_barricade/three, VENDOR_ITEM_REGULAR), @@ -274,6 +345,7 @@ req_access = list(ACCESS_MARINE_ALPHA) req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_SPECPREP, ACCESS_MARINE_RO) hackable = TRUE + vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND | VEND_STOCK_DYNAMIC vend_y_offset = 1 @@ -283,37 +355,36 @@ /obj/structure/machinery/cm_vending/sorted/attachments/squad/populate_product_list(scale) listed_products = list( list("BARREL", -1, null, null), - list("Barrel Charger", round(scale * 0.9), /obj/item/attachable/heavy_barrel, VENDOR_ITEM_REGULAR), - list("Extended Barrel", round(scale * 2.5), /obj/item/attachable/extended_barrel, VENDOR_ITEM_REGULAR), - list("Recoil Compensator", round(scale * 2.5), /obj/item/attachable/compensator, VENDOR_ITEM_REGULAR), - list("Suppressor", round(scale * 2.5), /obj/item/attachable/suppressor, VENDOR_ITEM_REGULAR), + list("Extended Barrel", 2.5, /obj/item/attachable/extended_barrel, VENDOR_ITEM_REGULAR), + list("Recoil Compensator", 2.5, /obj/item/attachable/compensator, VENDOR_ITEM_REGULAR), + list("Suppressor", 2.5, /obj/item/attachable/suppressor, VENDOR_ITEM_REGULAR), list("RAIL", -1, null, null), - list("B8 Smart-Scope", round(scale * 1.5), /obj/item/attachable/scope/mini_iff, VENDOR_ITEM_REGULAR), - list("Magnetic Harness", round(scale * 4), /obj/item/attachable/magnetic_harness, VENDOR_ITEM_REGULAR), - list("S4 2x Telescopic Mini-Scope", round(scale * 2), /obj/item/attachable/scope/mini, VENDOR_ITEM_REGULAR), - list("S5 Red-Dot Sight", round(scale * 3), /obj/item/attachable/reddot, VENDOR_ITEM_REGULAR), - list("S6 Reflex Sight", round(scale * 3), /obj/item/attachable/reflex, VENDOR_ITEM_REGULAR), - list("S8 4x Telescopic Scope", round(scale * 2), /obj/item/attachable/scope, VENDOR_ITEM_REGULAR), + list("B8 Smart-Scope", 1.5, /obj/item/attachable/scope/mini_iff, VENDOR_ITEM_REGULAR), + list("Magnetic Harness", 4, /obj/item/attachable/magnetic_harness, VENDOR_ITEM_REGULAR), + list("S4 2x Telescopic Mini-Scope", 2, /obj/item/attachable/scope/mini, VENDOR_ITEM_REGULAR), + list("S5 Red-Dot Sight", 3, /obj/item/attachable/reddot, VENDOR_ITEM_REGULAR), + list("S6 Reflex Sight", 3, /obj/item/attachable/reflex, VENDOR_ITEM_REGULAR), + list("S8 4x Telescopic Scope", 2, /obj/item/attachable/scope, VENDOR_ITEM_REGULAR), list("UNDERBARREL", -1, null, null), - list("Angled Grip", round(scale * 2.5), /obj/item/attachable/angledgrip, VENDOR_ITEM_REGULAR), - list("Bipod", round(scale * 2.5), /obj/item/attachable/bipod, VENDOR_ITEM_REGULAR), - list("Burst Fire Assembly", round(scale * 1.5), /obj/item/attachable/burstfire_assembly, VENDOR_ITEM_REGULAR), - list("Gyroscopic Stabilizer", round(scale * 1.5), /obj/item/attachable/gyro, VENDOR_ITEM_REGULAR), - list("Laser Sight", round(scale * 3), /obj/item/attachable/lasersight, VENDOR_ITEM_REGULAR), - list("Mini Flamethrower", round(scale * 1.5), /obj/item/attachable/attached_gun/flamer, VENDOR_ITEM_REGULAR), - list("XM-VESG-1 Flamer Nozzle", round(scale * 1.5), /obj/item/attachable/attached_gun/flamer_nozzle, VENDOR_ITEM_REGULAR), - list("U7 Underbarrel Shotgun", round(scale * 1.5), /obj/item/attachable/attached_gun/shotgun, VENDOR_ITEM_REGULAR), - list("Underbarrel Extinguisher", round(scale * 1.5), /obj/item/attachable/attached_gun/extinguisher, VENDOR_ITEM_REGULAR), - list("Vertical Grip", round(scale * 3), /obj/item/attachable/verticalgrip, VENDOR_ITEM_REGULAR), + list("Angled Grip", 2.5, /obj/item/attachable/angledgrip, VENDOR_ITEM_REGULAR), + list("Bipod", 2.5, /obj/item/attachable/bipod, VENDOR_ITEM_REGULAR), + list("Burst Fire Assembly", 1.5, /obj/item/attachable/burstfire_assembly, VENDOR_ITEM_REGULAR), + list("Gyroscopic Stabilizer", 1.5, /obj/item/attachable/gyro, VENDOR_ITEM_REGULAR), + list("Laser Sight", 3, /obj/item/attachable/lasersight, VENDOR_ITEM_REGULAR), + list("Mini Flamethrower", 1.5, /obj/item/attachable/attached_gun/flamer, VENDOR_ITEM_REGULAR), + list("XM-VESG-1 Flamer Nozzle", 1.5, /obj/item/attachable/attached_gun/flamer_nozzle, VENDOR_ITEM_REGULAR), + list("U7 Underbarrel Shotgun", 1.5, /obj/item/attachable/attached_gun/shotgun, VENDOR_ITEM_REGULAR), + list("Underbarrel Extinguisher", 1.5, /obj/item/attachable/attached_gun/extinguisher, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 3, /obj/item/attachable/verticalgrip, VENDOR_ITEM_REGULAR), list("STOCK", -1, null, null), - list("M37 Wooden Stock", round(scale * 1.5), /obj/item/attachable/stock/shotgun, VENDOR_ITEM_REGULAR), - list("M39 Arm Brace", round(scale * 1.5), /obj/item/attachable/stock/smg/collapsible/brace, VENDOR_ITEM_REGULAR), - list("M39 Stock", round(scale * 1.5), /obj/item/attachable/stock/smg, VENDOR_ITEM_REGULAR), - list("M41A Solid Stock", round(scale * 1.5), /obj/item/attachable/stock/rifle, VENDOR_ITEM_REGULAR), - list("M44 Magnum Sharpshooter Stock", round(scale * 1.5), /obj/item/attachable/stock/revolver, VENDOR_ITEM_REGULAR) + list("M37 Wooden Stock", 1.5, /obj/item/attachable/stock/shotgun, VENDOR_ITEM_REGULAR), + list("M39 Arm Brace", 1.5, /obj/item/attachable/stock/smg/collapsible/brace, VENDOR_ITEM_REGULAR), + list("M39 Stock", 1.5, /obj/item/attachable/stock/smg, VENDOR_ITEM_REGULAR), + list("M41A Solid Stock", 1.5, /obj/item/attachable/stock/rifle, VENDOR_ITEM_REGULAR), + list("M44 Magnum Sharpshooter Stock", 1.5, /obj/item/attachable/stock/revolver, VENDOR_ITEM_REGULAR) ) //------------ESSENTIAL SETS--------------- diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_rifleman.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_rifleman.dm index 7ec257142ff5..b132d8d4f13d 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_rifleman.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_rifleman.dm @@ -20,7 +20,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_marine, list( list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("M276 General Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Knife Rig (Full)", 0, /obj/item/storage/belt/knifepouch, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("M276 M39 Holster Rig", 0, /obj/item/storage/large_holster/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M39 Holster Rig", 0, /obj/item/storage/belt/gun/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M44 Holster Rig", 0, /obj/item/storage/belt/gun/m44, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Shotgun Shell Loading Rig", 0, /obj/item/storage/belt/shotgun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), @@ -45,6 +45,12 @@ GLOBAL_LIST_INIT(cm_vending_clothing_marine, list( list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), list("Rebreather", 0, /obj/item/clothing/mask/rebreather, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("ENGINEERING SUPPLIES", 0, null, null, null), + list("E-Tool", 5, /obj/item/tool/shovel/etool/folded, null, VENDOR_ITEM_REGULAR), + list("Sandbags", 20, /obj/item/stack/sandbags_empty/half, null, VENDOR_ITEM_REGULAR), + list("ES-11 Mobile Fuel Canister", 5, /obj/item/tool/weldpack/minitank, null, VENDOR_ITEM_REGULAR), + list("ME3 Hand Welder", 5, /obj/item/tool/weldingtool/simple, null, VENDOR_ITEM_REGULAR), + list("RESTRICTED FIREARMS", 0, null, null, null), list("VP78 Pistol", 15, /obj/item/storage/box/guncase/vp78, null, VENDOR_ITEM_REGULAR), list("SU-6 Smart Pistol", 15, /obj/item/storage/box/guncase/smartpistol, null, VENDOR_ITEM_REGULAR), @@ -61,43 +67,57 @@ GLOBAL_LIST_INIT(cm_vending_clothing_marine, list( list("M74 AGM-Hornet Airburst Packet (x3 airburst grenades", 15, /obj/item/storage/box/packet/hornet, null, VENDOR_ITEM_REGULAR), list("M20 Mine Box (x4 mines)", 20, /obj/item/storage/box/explosive_mines, null, VENDOR_ITEM_REGULAR), - list("AMMUNITION", 0, null, null, null), + list("PRIMARY AMMUNITION", 0, null, null, null), list("M4RA AP Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR), list("M39 AP Magazine (10x20mm)", 10, /obj/item/ammo_magazine/smg/m39/ap , null, VENDOR_ITEM_REGULAR), list("M39 Extended Magazine (10x20mm)", 10, /obj/item/ammo_magazine/smg/m39/extended , null, VENDOR_ITEM_REGULAR), list("M41A AP Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/ap , null, VENDOR_ITEM_REGULAR), list("M41A Extended Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/extended , null, VENDOR_ITEM_REGULAR), + + list("SIDEARM AMMUNITION", 0, null, null, null), list("M44 Heavy Speed Loader (.44)", 10, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR), + list("M4A3 HP Magazine", 5, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR), + list("M4A3 AP Magazine", 5, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR), + list("VP78 Magazine", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR), - list("UTILITIES", 0, null, null, null), - list("E-Tool", 5, /obj/item/tool/shovel/etool/folded, null, VENDOR_ITEM_REGULAR), - list("Sandbags", 20, /obj/item/stack/sandbags_empty/half, null, VENDOR_ITEM_REGULAR), + list("ARMORS", 0, null, null, null), + list("M3 B12 Pattern Marine Armor", 30, /obj/item/clothing/suit/storage/marine/medium/leader, null, VENDOR_ITEM_REGULAR), + list("M4 Pattern Armor", 30, /obj/item/clothing/suit/storage/marine/medium/rto, null, VENDOR_ITEM_REGULAR), + + list("CLOTHING ITEMS", 0, null, null, null), list("Webbing", 10, /obj/item/clothing/accessory/storage/webbing, null, VENDOR_ITEM_REGULAR), list("Brown Webbing Vest", 15, /obj/item/clothing/accessory/storage/black_vest/brown_vest, null, VENDOR_ITEM_REGULAR), list("Black Webbing Vest", 15, /obj/item/clothing/accessory/storage/black_vest, null, VENDOR_ITEM_REGULAR), list("Drop Pouch", 15, /obj/item/clothing/accessory/storage/droppouch, null, VENDOR_ITEM_REGULAR), - list("SensorMate Medical HUD", 15, /obj/item/clothing/glasses/hud/sensor, null, VENDOR_ITEM_REGULAR), - list("Roller Bed", 5, /obj/item/roller, null, VENDOR_ITEM_REGULAR), - list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), - list("B12 Pattern Marine Armor", 30, /obj/item/clothing/suit/storage/marine/leader, null, VENDOR_ITEM_REGULAR), - list("Range Finder", 10, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), - list("Laser Designator", 15, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), - list("Large General Pouch", 15, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), - list("Large Magazine Pouch", 15, /obj/item/storage/pouch/magazine/large, null, VENDOR_ITEM_REGULAR), - list("Fuel Tank Strap Pouch", 5, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), list("Shoulder Holster", 15, /obj/item/clothing/accessory/storage/holster, null, VENDOR_ITEM_REGULAR), list("Machete Scabbard (Full)", 15, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR), list("Machete Pouch (Full)", 15, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), + list("USCM Radio Telephone Pack", 15, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), + list("Fuel Tank Strap Pouch", 5, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), + list("Welding Goggles", 5, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + list("Sling Pouch", 15, /obj/item/storage/pouch/sling, null, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 15, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("Roller Bed", 5, /obj/item/roller, null, VENDOR_ITEM_REGULAR), + list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), list("Motion Detector", 15, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), list("Data Detector", 15, /obj/item/device/motiondetector/intel, null, VENDOR_ITEM_REGULAR), list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), - list("Welding Goggles", 5, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + + list("BINOCULARS", 0, null, null, null), + list("Binoculars", 5, /obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), + list("Range Finder", 10, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), + list("Laser Designator", 15, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), + list("Medical Helmet Optic", 15, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), + + list("PAMPHLETS", 0, null, null, null), list("JTAC Pamphlet", 15, /obj/item/pamphlet/skill/jtac, null, VENDOR_ITEM_REGULAR), list("Engineering Pamphlet", 15, /obj/item/pamphlet/skill/engineer, null, VENDOR_ITEM_REGULAR), - list("Powerloader Certification", 45, /obj/item/pamphlet/skill/powerloader, null, VENDOR_ITEM_REGULAR), - list("Large Shotgun Shell Pouch", 10, /obj/item/storage/pouch/shotgun/large, null, VENDOR_ITEM_REGULAR), - list("USCM Radio Telephone Pack", 15, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), list("RADIO KEYS", 0, null, null, null), list("Engineering Radio Encryption Key", 5, /obj/item/device/encryptionkey/engi, null, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_smartgunner.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_smartgunner.dm index b471d61628e0..c022f87abc6d 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_smartgunner.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_smartgunner.dm @@ -4,9 +4,6 @@ GLOBAL_LIST_INIT(cm_vending_gear_smartgun, list( list("SMARTGUN SET (MANDATORY)", 0, null, null, null), list("Essential Smartgunner Set", 0, /obj/item/storage/box/m56_system, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), - list("SMARTGUN AMMUNITION", 0, null, null, null), - list("M56 Smartgun Drum", 15, /obj/item/ammo_magazine/smartgun, null, VENDOR_ITEM_RECOMMENDED), - list("GUN ATTACHMENTS (CHOOSE 1)", 0, null, null, null), list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), @@ -23,21 +20,36 @@ GLOBAL_LIST_INIT(cm_vending_gear_smartgun, list( list("M74 AGM-Hornet Airburst Packet (x3 airburst grenades", 20, /obj/item/storage/box/packet/hornet, null, VENDOR_ITEM_REGULAR), list("M20 Mine Box (x4 mines)", 20, /obj/item/storage/box/explosive_mines, null, VENDOR_ITEM_REGULAR), - list("UTILITIES", 0, null, null, null), - list("Range Finder", 10, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), - list("Laser Designator", 15, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), - list("Large General Pouch", 15, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), - list("Large Magazine Pouch", 15, /obj/item/storage/pouch/magazine/large, null, VENDOR_ITEM_REGULAR), + list("SIDEARM AMMUNITION", 0, null, null, null), + list("M44 Heavy Speed Loader (.44)", 10, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR), + list("M4A3 HP Magazine", 5, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR), + list("M4A3 AP Magazine", 5, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR), + list("VP78 Magazine", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR), + + list("CLOTHING ITEMS", 0, null, null, null), + list("Machete Scabbard (Full)", 6, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR), list("Fuel Tank Strap Pouch", 5, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 6, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), - list("JTAC Pamphlet", 15, /obj/item/pamphlet/skill/jtac, null, VENDOR_ITEM_REGULAR), - list("Engineering Pamphlet", 15, /obj/item/pamphlet/skill/engineer, null, VENDOR_ITEM_REGULAR), - list("Powerloader Certification", 45, /obj/item/pamphlet/skill/powerloader, null, VENDOR_ITEM_REGULAR), - list("Large Shotgun Shell Pouch", 10, /obj/item/storage/pouch/shotgun/large, null, VENDOR_ITEM_RECOMMENDED), list("Roller Bed", 5, /obj/item/roller, null, VENDOR_ITEM_REGULAR), list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), + list("BINOCULARS", 0, null, null, null), + list("Binoculars", 5, /obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), + list("Range Finder", 10, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), + list("Laser Designator", 15, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), + list("Medical Helmet Optic", 15, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), + + list("PAMPHLETS", 0, null, null, null), + list("JTAC Pamphlet", 15, /obj/item/pamphlet/skill/jtac, null, VENDOR_ITEM_REGULAR), + list("Engineering Pamphlet", 15, /obj/item/pamphlet/skill/engineer, null, VENDOR_ITEM_REGULAR), + list("RADIO KEYS", 0, null, null, null), list("Engineering Radio Encryption Key", 5, /obj/item/device/encryptionkey/engi, null, VENDOR_ITEM_REGULAR), list("Intel Radio Encryption Key", 5, /obj/item/device/encryptionkey/intel, null, VENDOR_ITEM_REGULAR), @@ -60,11 +72,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_smartgun, list( GLOBAL_LIST_INIT(cm_vending_clothing_smartgun, list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), - list("Uniform", 0, /obj/item/clothing/under/marine, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), - list("Headset", 0, /obj/item/device/radio/headset/almayer/marine, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Helmet", 0, /obj/item/clothing/head/helmet/marine, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), + list("Standard Marine Apparel", 0, list(/obj/item/clothing/under/marine, /obj/item/clothing/shoes/marine/knife, /obj/item/clothing/gloves/marine, /obj/item/device/radio/headset/almayer/marine, /obj/item/clothing/head/helmet/marine), MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Map", 0, /obj/item/map/current_map, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_specialist.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_specialist.dm index d8f1eb742785..e800fc1efd56 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_specialist.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_specialist.dm @@ -9,54 +9,32 @@ GLOBAL_LIST_INIT(cm_vending_gear_spec, list( list("Sniper Set", 0, /obj/item/storage/box/spec/sniper, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_RECOMMENDED), list("EXTRA SCOUT AMMUNITION", 0, null, null, null), - list("A19 High Velocity Impact Magazine (10x24mm)", 15, /obj/item/ammo_magazine/rifle/m4ra/custom/impact, null, VENDOR_ITEM_REGULAR), - list("A19 High Velocity Incendiary Magazine (10x24mm)", 15, /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary, null, VENDOR_ITEM_REGULAR), - list("A19 High Velocity Magazine (10x24mm)", 15, /obj/item/ammo_magazine/rifle/m4ra/custom, null, VENDOR_ITEM_REGULAR), + list("A19 High Velocity Impact Magazine (10x24mm)", 40, /obj/item/ammo_magazine/rifle/m4ra/custom/impact, null, VENDOR_ITEM_REGULAR), + list("A19 High Velocity Incendiary Magazine (10x24mm)", 40, /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary, null, VENDOR_ITEM_REGULAR), + list("A19 High Velocity Magazine (10x24mm)", 40, /obj/item/ammo_magazine/rifle/m4ra/custom, null, VENDOR_ITEM_REGULAR), list("EXTRA SNIPER AMMUNITION", 0, null, null, null), - list("M42A Flak Magazine (10x28mm)", 15, /obj/item/ammo_magazine/sniper/flak, null, VENDOR_ITEM_REGULAR), - list("M42A Incendiary Magazine (10x28mm)", 15, /obj/item/ammo_magazine/sniper/incendiary, null, VENDOR_ITEM_REGULAR), - list("M42A Marksman Magazine (10x28mm Caseless)", 15, /obj/item/ammo_magazine/sniper, null, VENDOR_ITEM_REGULAR), + list("M42A Flak Magazine (10x28mm)", 40, /obj/item/ammo_magazine/sniper/flak, null, VENDOR_ITEM_REGULAR), + list("M42A Incendiary Magazine (10x28mm)", 40, /obj/item/ammo_magazine/sniper/incendiary, null, VENDOR_ITEM_REGULAR), + list("M42A Marksman Magazine (10x28mm Caseless)", 40, /obj/item/ammo_magazine/sniper, null, VENDOR_ITEM_REGULAR), list("EXTRA DEMOLITIONIST AMMUNITION", 0, null, null, null), - list("84mm Anti-Armor Rocket", 15, /obj/item/ammo_magazine/rocket/ap, null, VENDOR_ITEM_REGULAR), - list("84mm High-Explosive Rocket", 15, /obj/item/ammo_magazine/rocket, null, VENDOR_ITEM_REGULAR), - list("84mm White-Phosphorus Rocket", 15, /obj/item/ammo_magazine/rocket/wp, null, VENDOR_ITEM_REGULAR), + list("84mm Anti-Armor Rocket", 40, /obj/item/ammo_magazine/rocket/ap, null, VENDOR_ITEM_REGULAR), + list("84mm High-Explosive Rocket", 40, /obj/item/ammo_magazine/rocket, null, VENDOR_ITEM_REGULAR), + list("84mm White-Phosphorus Rocket", 40, /obj/item/ammo_magazine/rocket/wp, null, VENDOR_ITEM_REGULAR), list("EXTRA GRENADES", 0, null, null, null), - list("M40 HEDP Grenades x6", 15, /obj/effect/essentials_set/hedp_6_pack, null, VENDOR_ITEM_REGULAR), - list("M40 HIDP Incendiary Grenades x6", 15, /obj/effect/essentials_set/hidp_6_pack, null, VENDOR_ITEM_REGULAR), - list("M40 HPDP White Phosphorus Grenades x6", 15, /obj/effect/essentials_set/hpdp_6_pack, null, VENDOR_ITEM_REGULAR), - list("M74 AGM-F Fragmentation Grenades x6", 15, /obj/effect/essentials_set/agmf_6_pack, null, VENDOR_ITEM_REGULAR), - list("M74 AGM-I Incendiary Grenades x6", 15, /obj/effect/essentials_set/agmi_6_pack, null, VENDOR_ITEM_REGULAR), - list("M74 AGM-S Smoke Grenades x6", 10, /obj/effect/essentials_set/agms_6_pack, null, VENDOR_ITEM_REGULAR), + list("M40 HEDP Grenades x6", 40, /obj/effect/essentials_set/hedp_6_pack, null, VENDOR_ITEM_REGULAR), + list("M40 HIDP Incendiary Grenades x6", 40, /obj/effect/essentials_set/hidp_6_pack, null, VENDOR_ITEM_REGULAR), + list("M40 HPDP White Phosphorus Grenades x6", 40, /obj/effect/essentials_set/hpdp_6_pack, null, VENDOR_ITEM_REGULAR), + list("M74 AGM-F Fragmentation Grenades x6", 40, /obj/effect/essentials_set/agmf_6_pack, null, VENDOR_ITEM_REGULAR), + list("M74 AGM-I Incendiary Grenades x6", 40, /obj/effect/essentials_set/agmi_6_pack, null, VENDOR_ITEM_REGULAR), + list("M74 AGM-S Smoke Grenades x6", 20, /obj/effect/essentials_set/agms_6_pack, null, VENDOR_ITEM_REGULAR), list("EXTRA FLAMETHROWER TANKS", 0, null, null, null), - list("Large Incinerator Tank", 15, /obj/item/ammo_magazine/flamer_tank/large, null, VENDOR_ITEM_REGULAR), - list("Large Incinerator Tank (B) (Green Flame)", 15, /obj/item/ammo_magazine/flamer_tank/large/B, null, VENDOR_ITEM_REGULAR), - list("Large Incinerator Tank (X) (Blue Flame)", 15, /obj/item/ammo_magazine/flamer_tank/large/X, null, VENDOR_ITEM_REGULAR), - - list("UTILITIES", 0, null, null, null), - list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), - list("SensorMate Medical HUD", 15, /obj/item/clothing/glasses/hud/sensor, null, VENDOR_ITEM_REGULAR), - list("Roller Bed", 5, /obj/item/roller, null, VENDOR_ITEM_REGULAR), - list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), - list("Fuel Tank Strap Pouch", 5, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), - list("Large General Pouch", 10, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), - list("Sling Pouch", 10, /obj/item/storage/pouch/sling, null, VENDOR_ITEM_REGULAR), - list("Autoinjector Pouch (Full)", 15, /obj/item/storage/pouch/autoinjector/full, null, VENDOR_ITEM_REGULAR), - list("Motion Detector", 10, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), - list("Machete Pouch (Full)", 15, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), - list("JTAC Pamphlet", 15, /obj/item/pamphlet/skill/jtac, null, VENDOR_ITEM_REGULAR), - list("Engineering Pamphlet", 15, /obj/item/pamphlet/skill/engineer, null, VENDOR_ITEM_REGULAR), - list("Powerloader Certification", 45, /obj/item/pamphlet/skill/powerloader, null, VENDOR_ITEM_REGULAR), - list("Large Shotgun Shell Pouch", 10, /obj/item/storage/pouch/shotgun/large, null, VENDOR_ITEM_REGULAR), - - list("RADIO KEYS", 0, null, null, null), - list("Engineering Radio Encryption Key", 5, /obj/item/device/encryptionkey/engi, null, VENDOR_ITEM_REGULAR), - list("Intel Radio Encryption Key", 5, /obj/item/device/encryptionkey/intel, null, VENDOR_ITEM_REGULAR), - list("JTAC Radio Encryption Key", 5, /obj/item/device/encryptionkey/jtac, null, VENDOR_ITEM_REGULAR), - list("Supply Radio Encryption Key", 5, /obj/item/device/encryptionkey/req, null, VENDOR_ITEM_REGULAR), + list("Large Incinerator Tank", 40, /obj/item/ammo_magazine/flamer_tank/large, null, VENDOR_ITEM_REGULAR), + list("Large Incinerator Tank (B) (Green Flame)", 40, /obj/item/ammo_magazine/flamer_tank/large/B, null, VENDOR_ITEM_REGULAR), + list("Large Incinerator Tank (X) (Blue Flame)", 40, /obj/item/ammo_magazine/flamer_tank/large/X, null, VENDOR_ITEM_REGULAR), )) @@ -65,6 +43,8 @@ GLOBAL_LIST_INIT(cm_vending_gear_spec, list( desc = "An automated gear rack for Squad Weapons Specialists." icon_state = "spec_gear" show_points = TRUE + use_points = FALSE + use_snowflake_points = TRUE vendor_role = list(JOB_SQUAD_SPECIALIST) req_access = list(ACCESS_MARINE_SPECPREP) @@ -76,10 +56,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_spec, list( GLOBAL_LIST_INIT(cm_vending_clothing_specialist, list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), - list("Uniform", 0, /obj/item/clothing/under/marine, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), - list("Headset", 0, /obj/item/device/radio/headset/almayer/marine, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + list("Standard Marine Apparel", 0, list(/obj/item/clothing/under/marine, /obj/item/clothing/shoes/marine/knife, /obj/item/clothing/gloves/marine, /obj/item/device/radio/headset/almayer/marine), MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Map", 0, /obj/item/map/current_map, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), @@ -91,7 +68,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_specialist, list( list("G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 General Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("M276 M39 Holster Rig", 0, /obj/item/storage/large_holster/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M39 Holster Rig", 0, /obj/item/storage/belt/gun/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M44 Holster Rig", 0, /obj/item/storage/belt/gun/m44, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Shotgun Shell Loading Rig", 0, /obj/item/storage/belt/shotgun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), @@ -101,8 +78,8 @@ GLOBAL_LIST_INIT(cm_vending_clothing_specialist, list( list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Large Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Magazine Pouch", 0, /obj/item/storage/pouch/magazine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), @@ -118,11 +95,42 @@ GLOBAL_LIST_INIT(cm_vending_clothing_specialist, list( list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + + list("CLOTHING ITEMS", 0, null, null, null), + list("Machete Scabbard (Full)", 6, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR), + list("Machete Pouch (Full)", 15, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), + list("USCM Radio Telephone Pack", 15, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), + list("Fuel Tank Strap Pouch", 5, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), + list("Welding Goggles", 3, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 10, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), + list("M276 Pattern Combat Toolbelt Rig", 15, /obj/item/storage/belt/gun/utility, null, VENDOR_ITEM_REGULAR), + list("Autoinjector Pouch (Full)", 15, /obj/item/storage/pouch/autoinjector/full, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), + list("Roller Bed", 5, /obj/item/roller, null, VENDOR_ITEM_REGULAR), + list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), + list("Motion Detector", 10, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), + list("Medical Helmet Optic", 15, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), + + list("PAMPHLETS", 0, null, null, null), + list("JTAC Pamphlet", 15, /obj/item/pamphlet/skill/jtac, null, VENDOR_ITEM_REGULAR), + list("Engineering Pamphlet", 15, /obj/item/pamphlet/skill/engineer, null, VENDOR_ITEM_REGULAR), + + list("RADIO KEYS", 0, null, null, null), + list("Engineering Radio Encryption Key", 5, /obj/item/device/encryptionkey/engi, null, VENDOR_ITEM_REGULAR), + list("Intel Radio Encryption Key", 5, /obj/item/device/encryptionkey/intel, null, VENDOR_ITEM_REGULAR), + list("JTAC Radio Encryption Key", 5, /obj/item/device/encryptionkey/jtac, null, VENDOR_ITEM_REGULAR), + list("Supply Radio Encryption Key", 5, /obj/item/device/encryptionkey/req, null, VENDOR_ITEM_REGULAR), )) /obj/structure/machinery/cm_vending/clothing/specialist name = "\improper ColMarTech Squad Weapons Specialist Equipment Rack" desc = "An automated rack hooked up to a colossal storage of Squad Weapons Specialist standard-issue equipment." + show_points = TRUE req_access = list(ACCESS_MARINE_SPECPREP) vendor_role = list(JOB_SQUAD_SPECIALIST) diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_tl.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_tl.dm index e373244f72d6..a013ddb15212 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_tl.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_tl.dm @@ -1,17 +1,6 @@ //------------GEAR VENDOR--------------- GLOBAL_LIST_INIT(cm_vending_gear_tl, list( - - list("AMMUNITION", 0, null, null, null), - list("M4RA AP Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR), - list("M39 AP Magazine (10x20mm)", 10, /obj/item/ammo_magazine/smg/m39/ap , null, VENDOR_ITEM_REGULAR), - list("M39 Extended Magazine (10x20mm)", 10, /obj/item/ammo_magazine/smg/m39/extended , null, VENDOR_ITEM_REGULAR), - list("M41A AP Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/ap , null, VENDOR_ITEM_REGULAR), - list("M41A Extended Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/extended , null, VENDOR_ITEM_REGULAR), - list("M44 Heavy Speed Loader (.44)", 10, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR), - list("M4A3 HP Magazine", 5, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR), - list("M4A3 AP Magazine", 5, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR), - list("EXPLOSIVES", 0, null, null, null), list("M40 HEDP High Explosive Packet (x3 grenades)", 18, /obj/item/storage/box/packet/high_explosive, null, VENDOR_ITEM_REGULAR), list("M40 HIDP Incendiary Packet (x3 grenades)", 18, /obj/item/storage/box/packet/incendiary, null, VENDOR_ITEM_REGULAR), @@ -24,32 +13,58 @@ GLOBAL_LIST_INIT(cm_vending_gear_tl, list( list("M20 Mine Box (x4 mines)", 20, /obj/item/storage/box/explosive_mines, null, VENDOR_ITEM_REGULAR), list("M40 MFHS Metal Foam Grenade", 5, /obj/item/explosive/grenade/metal_foam, null, VENDOR_ITEM_REGULAR), + list("PRIMARY AMMUNITION", 0, null, null, null), + list("M4RA AP Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR), + list("M39 AP Magazine (10x20mm)", 10, /obj/item/ammo_magazine/smg/m39/ap , null, VENDOR_ITEM_REGULAR), + list("M39 Extended Magazine (10x20mm)", 10, /obj/item/ammo_magazine/smg/m39/extended , null, VENDOR_ITEM_REGULAR), + list("M41A AP Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/ap , null, VENDOR_ITEM_REGULAR), + list("M41A Extended Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/extended , null, VENDOR_ITEM_REGULAR), + + list("SIDEARM AMMUNITION", 0, null, null, null), + list("M44 Heavy Speed Loader (.44)", 10, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR), + list("M4A3 HP Magazine", 5, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR), + list("M4A3 AP Magazine", 5, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR), + list("VP78 Magazine", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR), + list("RESTRICTED FIREARMS", 0, null, null, null), list("VP78 Pistol", 10, /obj/item/storage/box/guncase/vp78, null, VENDOR_ITEM_REGULAR), list("SU-6 Smart Pistol", 15, /obj/item/storage/box/guncase/smartpistol, null, VENDOR_ITEM_REGULAR), list("M79 Grenade Launcher", 30, /obj/item/storage/box/guncase/m79, null, VENDOR_ITEM_REGULAR), - list("UTILITIES", 0, null, null, null), - list("Radio Telephone Pack", 5, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_RECOMMENDED), - list("Binoculars", 5, /obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), - list("Large Magazine Pouch", 10, /obj/item/storage/pouch/magazine/large, null, VENDOR_ITEM_REGULAR), - list("Motion Detector", 15, /obj/item/device/motiondetector, null, VENDOR_ITEM_RECOMMENDED), + list("ARMORS", 0, null, null, null), + list("M3 B12 Pattern Marine Armor", 30, /obj/item/clothing/suit/storage/marine/medium/leader, null, VENDOR_ITEM_REGULAR), + + list("CLOTHING ITEMS", 0, null, null, null), + list("Machete Scabbard (Full)", 5, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR), + list("Machete Pouch (Full)", 15, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), + list("USCM Radio Telephone Pack", 5, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), + list("Welding Goggles", 3, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + list("M276 Pattern Combat Toolbelt Rig", 15, /obj/item/storage/belt/gun/utility, null, VENDOR_ITEM_REGULAR), + list("Autoinjector Pouch (Full)", 15, /obj/item/storage/pouch/autoinjector/full, null, VENDOR_ITEM_REGULAR), + list("Insulated Gloves", 3, /obj/item/clothing/gloves/yellow, null, VENDOR_ITEM_REGULAR), + list("Night Vision Optic", 30, /obj/item/device/helmet_visor/night_vision, null, VENDOR_ITEM_RECOMMENDED), + + list("ENGINEERING SUPPLIES", 0, null, null, null), list("Plastic Explosive", 10, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), list("Breaching Charge", 10, /obj/item/explosive/plastic/breaching_charge, null, VENDOR_ITEM_REGULAR), - list("SensorMate Medical HUD", 15, /obj/item/clothing/glasses/hud/sensor, null, VENDOR_ITEM_REGULAR), - list("M2 Night Vision Goggles", 30, /obj/item/prop/helmetgarb/helmet_nvg, null, VENDOR_ITEM_RECOMMENDED), + list("ES-11 Mobile Fuel Canister", 5, /obj/item/tool/weldpack/minitank, null, VENDOR_ITEM_REGULAR), + list("ME3 Hand Welder", 5, /obj/item/tool/weldingtool/simple, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("Motion Detector", 15, /obj/item/device/motiondetector, null, VENDOR_ITEM_RECOMMENDED), list("Roller Bed", 5, /obj/item/roller, null, VENDOR_ITEM_REGULAR), list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), - list("Large General Pouch", 15, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), - list("Shoulder Holster", 15, /obj/item/clothing/accessory/storage/holster, null, VENDOR_ITEM_REGULAR), - list("Machete Scabbard (Full)", 5, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR), - list("Machete Pouch (Full)", 15, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), - list("Welding Goggles", 5, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), - list("Powerloader Certification", 45, /obj/item/pamphlet/skill/powerloader, null, VENDOR_ITEM_REGULAR), - list("Large Shotgun Shell Pouch", 10, /obj/item/storage/pouch/shotgun/large, null, VENDOR_ITEM_RECOMMENDED), - list("Insulated Gloves", 3, /obj/item/clothing/gloves/yellow, null, VENDOR_ITEM_REGULAR), + + list("BINOCULARS", 0, null, null, null), + list("Binoculars", 5, /obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), + list("Range Finder", 10, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), + list("Laser Designator", 15, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), + list("Medical Helmet Optic", 15, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), list("RADIO KEYS", 0, null, null, null), list("Engineering Radio Encryption Key", 5, /obj/item/device/encryptionkey/engi, null, VENDOR_ITEM_REGULAR), @@ -73,12 +88,8 @@ GLOBAL_LIST_INIT(cm_vending_gear_tl, list( GLOBAL_LIST_INIT(cm_vending_clothing_tl, list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), - list("Uniform", 0, /obj/item/clothing/under/marine, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), - list("M4 Pattern Armor", 0, /obj/item/clothing/suit/storage/marine/rto, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), - list("Headset", 0, /obj/item/device/radio/headset/almayer/marine, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Helmet", 0, /obj/item/clothing/head/helmet/marine/rto, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), + list("Standard Marine Apparel", 0, list(/obj/item/clothing/under/marine, /obj/item/clothing/shoes/marine/knife, /obj/item/clothing/gloves/marine, /obj/item/device/radio/headset/almayer/marine, /obj/item/clothing/head/helmet/marine/rto), MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + list("M4 Pattern Armor", 0, /obj/item/clothing/suit/storage/marine/medium/rto, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Map", 0, /obj/item/map/current_map, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), list("Essential Fireteam Leader Utilities", 0, /obj/effect/essentials_set/tl, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), @@ -87,7 +98,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_tl, list( list("G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("M276 General Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("M276 M39 Holster Rig", 0, /obj/item/storage/large_holster/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M39 Holster Rig", 0, /obj/item/storage/belt/gun/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M44 Holster Rig", 0, /obj/item/storage/belt/gun/m44, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("M276 Shotgun Shell Loading Rig", 0, /obj/item/storage/belt/shotgun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), @@ -106,8 +117,6 @@ GLOBAL_LIST_INIT(cm_vending_clothing_tl, list( list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Magazine Pouch", 0, /obj/item/storage/pouch/magazine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sidearm Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Tools Pouch (Full)", 0, /obj/item/storage/pouch/tools/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), diff --git a/code/game/machinery/vending/vendor_types/squad_prep/tutorial.dm b/code/game/machinery/vending/vendor_types/squad_prep/tutorial.dm new file mode 100644 index 000000000000..c1cedd85c7fc --- /dev/null +++ b/code/game/machinery/vending/vendor_types/squad_prep/tutorial.dm @@ -0,0 +1,30 @@ +GLOBAL_LIST_INIT(cm_vending_clothing_tutorial, list( + list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Standard Marine Apparel", 0, list(/obj/item/clothing/under/marine, /obj/item/clothing/shoes/marine/knife, /obj/item/clothing/gloves/marine, /obj/item/clothing/head/helmet/marine), MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + + list("ARMOR (CHOOSE 1)", 0, null, null, null), + list("Medium Armor", 0, /obj/item/clothing/suit/storage/marine/medium, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + + list("BACKPACK (CHOOSE 1)", 0, null, null, null), + list("Satchel", 0, /obj/item/storage/backpack/marine/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), + + list("BELT (CHOOSE 1)", 0, null, null, null), + list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + + list("POUCHES (CHOOSE 1)", 0, null, null, null), + list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_RECOMMENDED), + + )) // The pouch uses a different category so they only get one + +/obj/structure/machinery/cm_vending/clothing/tutorial + name = "\improper ColMarTech Automated Marine Equipment Rack" + desc = "An automated rack hooked up to a colossal storage of Marine Rifleman standard-issue equipment." + icon_state = "mar_rack" + show_points = TRUE + vendor_theme = VENDOR_THEME_USCM + req_access = list(ACCESS_TUTORIAL_LOCKED) + + vendor_role = list() + +/obj/structure/machinery/cm_vending/clothing/tutorial/get_listed_products(mob/user) + return GLOB.cm_vending_clothing_tutorial diff --git a/code/game/machinery/vending/vendor_types/supplies.dm b/code/game/machinery/vending/vendor_types/supplies.dm index 2a2f35de8c19..376edf7ffc5d 100644 --- a/code/game/machinery/vending/vendor_types/supplies.dm +++ b/code/game/machinery/vending/vendor_types/supplies.dm @@ -23,8 +23,6 @@ list("FOOD AND BEVERAGE", -1, null, null), list("MRE", 25, /obj/item/storage/box/MRE, VENDOR_ITEM_REGULAR), list("Water Bottle", 25, /obj/item/reagent_container/food/drinks/cans/waterbottle, VENDOR_ITEM_REGULAR), - list("Aspen Beer", 10, /obj/item/storage/beer_pack, VENDOR_ITEM_REGULAR),//NOTE TO SELF, LOCK THIS ALCOHOL BEHIND SHIP ESCAPE - list("Wey-Yu Sake", 5, /obj/item/reagent_container/food/drinks/bottle/sake, VENDOR_ITEM_REGULAR), list("UTILITY", -1, null, null), list("M94 Marking Flare Pack", 5, /obj/item/storage/box/m94, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/wo_vendors.dm b/code/game/machinery/vending/vendor_types/wo_vendors.dm index bdba638c577e..160e808a4a50 100644 --- a/code/game/machinery/vending/vendor_types/wo_vendors.dm +++ b/code/game/machinery/vending/vendor_types/wo_vendors.dm @@ -12,7 +12,7 @@ list("Lightweight IMP Backpack", 10, /obj/item/storage/backpack/marine, VENDOR_ITEM_REGULAR), list("M276 Ammo Load Rig", 10, /obj/item/storage/belt/marine, VENDOR_ITEM_REGULAR), list("M276 General Pistol Holster Rig", 10, /obj/item/storage/belt/gun/m4a3, VENDOR_ITEM_REGULAR), - list("M276 M39 Holster Rig", 10, /obj/item/storage/large_holster/m39, VENDOR_ITEM_REGULAR), + list("M276 M39 Holster Rig", 10, /obj/item/storage/belt/gun/m39, VENDOR_ITEM_REGULAR), list("M276 M44 Holster Rig", 10, /obj/item/storage/belt/gun/m44, VENDOR_ITEM_REGULAR), list("M276 M82F Holster Rig", 10, /obj/item/storage/belt/gun/flaregun, VENDOR_ITEM_REGULAR), list("M276 Shotgun Shell Loading Rig", 10, /obj/item/storage/belt/shotgun, VENDOR_ITEM_REGULAR), @@ -47,12 +47,12 @@ list("ARMOR", -1, null, null), list("M10 Pattern Marine Helmet", 20, /obj/item/clothing/head/helmet/marine, VENDOR_ITEM_REGULAR), - list("M3 Pattern Carrier Marine Armor", 20, /obj/item/clothing/suit/storage/marine/carrier, VENDOR_ITEM_REGULAR), - list("M3 Pattern Padded Marine Armor", 20, /obj/item/clothing/suit/storage/marine/padded, VENDOR_ITEM_REGULAR), - list("M3 Pattern Padless Marine Armor", 20, /obj/item/clothing/suit/storage/marine/padless, VENDOR_ITEM_REGULAR), - list("M3 Pattern Ridged Marine Armor", 20, /obj/item/clothing/suit/storage/marine/padless_lines, VENDOR_ITEM_REGULAR), - list("M3 Pattern Skull Marine Armor", 20, /obj/item/clothing/suit/storage/marine/skull, VENDOR_ITEM_REGULAR), - list("M3 Pattern Smooth Marine Armor", 20, /obj/item/clothing/suit/storage/marine/smooth, VENDOR_ITEM_REGULAR), + list("M3 Pattern Carrier Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/carrier, VENDOR_ITEM_REGULAR), + list("M3 Pattern Padded Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/padded, VENDOR_ITEM_REGULAR), + list("M3 Pattern Padless Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/padless, VENDOR_ITEM_REGULAR), + list("M3 Pattern Ridged Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/padless_lines, VENDOR_ITEM_REGULAR), + list("M3 Pattern Skull Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/skull, VENDOR_ITEM_REGULAR), + list("M3 Pattern Smooth Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/smooth, VENDOR_ITEM_REGULAR), list("M3-EOD Pattern Heavy Armor", 10, /obj/item/clothing/suit/storage/marine/heavy, VENDOR_ITEM_REGULAR), list("M3-L Pattern Light Armor", 10, /obj/item/clothing/suit/storage/marine/light, VENDOR_ITEM_REGULAR), @@ -66,7 +66,7 @@ /obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep/wo req_access = list() req_one_access = list() - vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND | VEND_LOAD_AMMO_BOXES + vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND | VEND_LOAD_AMMO_BOXES | VEND_STOCK_DYNAMIC /obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep/wo/populate_product_list(scale) listed_products = list( @@ -110,52 +110,13 @@ ) //------------REQ AMMUNITION VENDOR--------------- -/obj/structure/machinery/cm_vending/sorted/cargo_ammo/wo +/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/wo req_access = list(ACCESS_MARINE_CARGO) req_one_access = list() -/obj/structure/machinery/cm_vending/sorted/cargo_ammo/wo/populate_product_list(scale) - listed_products = list( - list("REGULAR AMMUNITION", -1, null, null), - list("Box Of Buckshot Shells", round(scale * 5), /obj/item/ammo_magazine/shotgun/buckshot, VENDOR_ITEM_REGULAR), - list("Box Of Flechette Shells", round(scale * 5), /obj/item/ammo_magazine/shotgun/flechette, VENDOR_ITEM_REGULAR), - list("Box Of Shotgun Slugs", round(scale * 5), /obj/item/ammo_magazine/shotgun/slugs, VENDOR_ITEM_REGULAR), - list("M4RA magazine (10x24mm)", round(scale * 10), /obj/item/ammo_magazine/rifle/m4ra, VENDOR_ITEM_REGULAR), - list("M39 HV Magazine (10x20mm)", round(scale * 10), /obj/item/ammo_magazine/smg/m39, VENDOR_ITEM_REGULAR), - list("M41A MK1 Magazine (10x24mm)", round(scale * 10), /obj/item/ammo_magazine/rifle/m41aMK1, VENDOR_ITEM_REGULAR), - list("M41A MK2 Magazine (10x24mm)", round(scale * 10), /obj/item/ammo_magazine/rifle, VENDOR_ITEM_REGULAR), - list("M44 Speed Loader (.44)", round(scale * 10), /obj/item/ammo_magazine/revolver, VENDOR_ITEM_REGULAR), - list("M4A3 Magazine (9mm)", round(scale * 10), /obj/item/ammo_magazine/pistol, VENDOR_ITEM_REGULAR), - - list("ARMOR-PIERCING AMMUNITION", -1, null, null), - list("88 Mod 4 AP Magazine (9mm)", round(scale * 5), /obj/item/ammo_magazine/pistol/mod88, VENDOR_ITEM_REGULAR), - list("M4RA AP Magazine (10x24mm)", round(scale * 10), /obj/item/ammo_magazine/rifle/m4ra/ap, VENDOR_ITEM_REGULAR), - list("M39 AP Magazine (10x20mm)", round(scale * 5), /obj/item/ammo_magazine/smg/m39/ap, VENDOR_ITEM_REGULAR), - list("M41A MK1 AP Magazine (10x24mm)", round(scale * 10), /obj/item/ammo_magazine/rifle/m41aMK1/ap, VENDOR_ITEM_REGULAR), - list("M41A MK2 AP Magazine (10x24mm)", round(scale * 10), /obj/item/ammo_magazine/rifle/ap, VENDOR_ITEM_REGULAR), - list("M4A3 AP Magazine (9mm)", round(scale * 5), /obj/item/ammo_magazine/pistol/ap, VENDOR_ITEM_REGULAR), - - list("EXTENDED AMMUNITION", -1, null, null), - list("M39 Extended Magazine (10x20mm)", round(scale * 1), /obj/item/ammo_magazine/smg/m39/extended, VENDOR_ITEM_REGULAR), - list("M41A MK2 Extended Magazine (10x24mm)", round(scale * 3), /obj/item/ammo_magazine/rifle/extended, VENDOR_ITEM_REGULAR), - - list("INCENDIARY AMMUNITION", -1, null, null), - list("M4RA Incendiary Magazine (10x24mm)", round(scale * 3), /obj/item/ammo_magazine/rifle/m4ra/incendiary, VENDOR_ITEM_REGULAR), - list("M39 Incendiary Magazine (10x20mm)", round(scale * 2), /obj/item/ammo_magazine/smg/m39/incendiary, VENDOR_ITEM_REGULAR), - list("M41A MK2 Incendiary Magazine (10x24mm)", round(scale * 3), /obj/item/ammo_magazine/rifle/incendiary, VENDOR_ITEM_REGULAR), - list("M4A3 Incendiary Magazine (9mm)", round(scale * 1), /obj/item/ammo_magazine/pistol/incendiary, VENDOR_ITEM_REGULAR), - - list("SPECIAL AMMUNITION", -1, null, null), - list("Incinerator Tank", round(scale * 2.5), /obj/item/ammo_magazine/flamer_tank, VENDOR_ITEM_REGULAR), - list("M41AE2 Ammo Box (10x24mm)", round(scale * 5), /obj/item/ammo_magazine/rifle/lmg, VENDOR_ITEM_REGULAR), - list("M44 Heavy Speed Loader (.44)", round(scale * 2), /obj/item/ammo_magazine/revolver/heavy, VENDOR_ITEM_REGULAR), - list("M44 Marksman Speed Loader (.44)", round(scale * 2), /obj/item/ammo_magazine/revolver/marksman, VENDOR_ITEM_REGULAR), - list("M4A3 HP Magazine (9mm)", round(scale * 5), /obj/item/ammo_magazine/pistol/hp, VENDOR_ITEM_REGULAR), - list("M56 Battery", round(scale * 5), /obj/item/smartgun_battery, VENDOR_ITEM_REGULAR), - list("M56 Smartgun Drum", round(scale * 2), /obj/item/ammo_magazine/smartgun, VENDOR_ITEM_REGULAR), - list("SU-6 Smartpistol Magazine (.45)", round(scale * 6), /obj/item/ammo_magazine/pistol/smart, VENDOR_ITEM_REGULAR), - list("VP78 Magazine", round(scale * 6), /obj/item/ammo_magazine/pistol/vp78, VENDOR_ITEM_REGULAR), - +/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/wo/populate_product_list(scale) + ..() + listed_products += list( list("EXTRA SCOUT AMMUNITION", -1, null, null, null), list("A19 High Velocity Impact Magazine (10x24mm)", round(scale * 1), /obj/item/ammo_magazine/rifle/m4ra/custom/impact, VENDOR_ITEM_REGULAR), list("A19 High Velocity Incendiary Magazine (10x24mm)", round(scale * 1), /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary, VENDOR_ITEM_REGULAR), @@ -181,96 +142,17 @@ list("Large Incinerator Tank", round(scale * 1), /obj/item/ammo_magazine/flamer_tank/large, VENDOR_ITEM_REGULAR), list("Large Incinerator Tank (B) (Green Flame)", round(scale * 1), /obj/item/ammo_magazine/flamer_tank/large/B, VENDOR_ITEM_REGULAR), list("Large Incinerator Tank (X) (Blue Flame)", round(scale * 1), /obj/item/ammo_magazine/flamer_tank/large/X, VENDOR_ITEM_REGULAR), - - list("AMMUNITION BOXES", -1, null, null), - list("Rifle Ammunition Box (10x24mm)", round(scale * 0.9), /obj/item/ammo_box/rounds, VENDOR_ITEM_REGULAR), - list("Rifle Ammunition Box (10x24mm AP)", round(scale * 0.75), /obj/item/ammo_box/rounds/ap, VENDOR_ITEM_REGULAR), - list("SMG Ammunition Box (10x20mm HV)", round(scale * 0.9), /obj/item/ammo_box/rounds/smg, VENDOR_ITEM_REGULAR), - list("SMG Ammunition Box (10x20mm AP)", round(scale * 0.75), /obj/item/ammo_box/rounds/smg/ap, VENDOR_ITEM_REGULAR), ) //------------ARMAMENTS VENDOR--------------- -/obj/structure/machinery/cm_vending/sorted/cargo_guns/wo +/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/wo req_access = list(ACCESS_MARINE_CARGO) + vend_dir = NORTH + vend_dir_whitelist = list(EAST, WEST) -/obj/structure/machinery/cm_vending/sorted/cargo_guns/wo/populate_product_list(scale) - listed_products = list( - list("PRIMARY FIREARMS", -1, null, null), - list("M4RA Battle Rifle", round(scale * 20), /obj/item/weapon/gun/rifle/m4ra, VENDOR_ITEM_REGULAR), - list("M37A2 Pump Shotgun", round(scale * 10), /obj/item/weapon/gun/shotgun/pump, VENDOR_ITEM_REGULAR), - list("M39 Submachinegun", round(scale * 15), /obj/item/weapon/gun/smg/m39, VENDOR_ITEM_REGULAR), - list("M41A Pulse Rifle MK1", round(scale * 20), /obj/item/weapon/gun/rifle/m41aMK1, VENDOR_ITEM_REGULAR), - list("M41A Pulse Rifle MK2", round(scale * 20), /obj/item/weapon/gun/rifle/m41a, VENDOR_ITEM_REGULAR), - list("MK221 Tactical Shotgun", round(scale * 3), /obj/item/weapon/gun/shotgun/combat, VENDOR_ITEM_REGULAR), - - list("SIDEARMS", -1, null, null), - list("88 Mod 4 Combat Pistol", round(scale * 15), /obj/item/weapon/gun/pistol/mod88, VENDOR_ITEM_REGULAR), - list("M44 Combat Revolver", round(scale * 10), /obj/item/weapon/gun/revolver/m44, VENDOR_ITEM_REGULAR), - list("M4A3 Service Pistol", round(scale * 20), /obj/item/weapon/gun/pistol/m4a3, VENDOR_ITEM_REGULAR), - list("SU-6 Smartpistol", round(scale * 2), /obj/item/weapon/gun/pistol/smart, VENDOR_ITEM_REGULAR), - list("M82F Flare Gun", round(scale * 5), /obj/item/weapon/gun/flare, VENDOR_ITEM_REGULAR), - - list("RESTRICTED FIREARMS", -1, null, null), - list("VP78 Pistol", round(scale * 4), /obj/item/storage/box/guncase/vp78, VENDOR_ITEM_REGULAR), - list("SU-6 Smart Pistol", round(scale * 3), /obj/item/storage/box/guncase/smartpistol, VENDOR_ITEM_REGULAR), - list("M41AE2 Heavy Pulse Rifle", round(scale * 2), /obj/item/storage/box/guncase/lmg, VENDOR_ITEM_REGULAR), - list("M56D Heavy Machine Gun", round(scale * 2), /obj/item/storage/box/guncase/m56d, VENDOR_ITEM_REGULAR), - list("M2C Heavy Machine Gun", round(scale * 2), /obj/item/storage/box/guncase/m2c, VENDOR_ITEM_REGULAR), - list("M240 Incinerator Unit", round(scale * 2), /obj/item/storage/box/guncase/flamer, VENDOR_ITEM_REGULAR), - - list("EXPLOSIVES", -1, null, null), - list("M15 Fragmentation Grenade", round(scale * 2), /obj/item/explosive/grenade/high_explosive/m15, VENDOR_ITEM_REGULAR), - list("M20 Claymore Anti-Personnel Mine", round(scale * 5), /obj/item/explosive/mine, VENDOR_ITEM_REGULAR), - list("M40 HEDP Grenade Box", round(scale * 1), /obj/item/storage/box/nade_box, VENDOR_ITEM_REGULAR), - list("M40 HIDP Incendiary Grenade", round(scale * 3), /obj/item/explosive/grenade/incendiary, VENDOR_ITEM_REGULAR), - list("M40 HSDP Smoke Grenade", round(scale * 5), /obj/item/explosive/grenade/smokebomb, VENDOR_ITEM_REGULAR), - - list("BACKPACKS", -1, null, null), - list("Lightweight IMP Backpack", round(scale * 15), /obj/item/storage/backpack/marine, VENDOR_ITEM_REGULAR), - list("Shotgun Scabbard", round(scale * 10), /obj/item/storage/large_holster/m37, VENDOR_ITEM_REGULAR), - list("USCM Pyrotechnician G4-1 Fueltank", round(scale * 2), /obj/item/storage/backpack/marine/engineerpack/flamethrower/kit, VENDOR_ITEM_REGULAR), - list("USCM Technician Welderpack", round(scale * 2), /obj/item/storage/backpack/marine/engineerpack, VENDOR_ITEM_REGULAR), - - list("BELTS", -1, null, null), - list("G8-A General Utility Pouch", round(scale * 3), /obj/item/storage/backpack/general_belt, VENDOR_ITEM_REGULAR), - list("M276 Pattern Ammo Load Rig", round(scale * 15), /obj/item/storage/belt/marine, VENDOR_ITEM_REGULAR), - list("M276 Pattern General Pistol Holster Rig", round(scale * 10), /obj/item/storage/belt/gun/m4a3, VENDOR_ITEM_REGULAR), - list("M276 Pattern M39 Holster Rig", round(scale * 5), /obj/item/storage/large_holster/m39, VENDOR_ITEM_REGULAR), - list("M276 Pattern M44 Holster Rig", round(scale * 5), /obj/item/storage/belt/gun/m44, VENDOR_ITEM_REGULAR), - list("M276 M82F Holster Rig", round(scale * 2), /obj/item/storage/belt/gun/flaregun, VENDOR_ITEM_REGULAR), - list("M276 Pattern Shotgun Shell Loading Rig", round(scale * 10), /obj/item/storage/belt/shotgun, VENDOR_ITEM_REGULAR), - - list("WEBBINGS", -1, null, null), - list("Black Webbing Vest", round(scale * 5), /obj/item/clothing/accessory/storage/black_vest, VENDOR_ITEM_REGULAR), - list("Brown Webbing Vest", round(scale * 5), /obj/item/clothing/accessory/storage/black_vest/brown_vest, VENDOR_ITEM_REGULAR), - list("Shoulder Holster", round(scale * 5), /obj/item/clothing/accessory/storage/holster, VENDOR_ITEM_REGULAR), - list("Webbing", round(scale * 5), /obj/item/clothing/accessory/storage/webbing, VENDOR_ITEM_REGULAR), - list("Knife Webbing", round(scale * 3), /obj/item/clothing/accessory/storage/knifeharness, VENDOR_ITEM_REGULAR), - list("Drop Pouch", round(scale * 5), /obj/item/clothing/accessory/storage/droppouch, VENDOR_ITEM_REGULAR), - - list("POUCHES", -1, null, null), - list("Construction Pouch", round(scale * 2), /obj/item/storage/pouch/construction, VENDOR_ITEM_REGULAR), - list("Explosive Pouch", round(scale * 2), /obj/item/storage/pouch/explosive, VENDOR_ITEM_REGULAR), - list("First-Aid Pouch (Full)", round(scale * 5), /obj/item/storage/pouch/firstaid/full, VENDOR_ITEM_REGULAR), - list("First Responder Pouch", round(scale * 2), /obj/item/storage/pouch/first_responder, VENDOR_ITEM_REGULAR), - list("Flare Pouch (Full)", round(scale * 5), /obj/item/storage/pouch/flare/full, VENDOR_ITEM_REGULAR), - list("Fuel Tank Strap Pouch", round(scale * 4), /obj/item/storage/pouch/flamertank, VENDOR_ITEM_REGULAR), - list("Large Pistol Magazine Pouch", round(scale * 5), /obj/item/storage/pouch/magazine/pistol/large, VENDOR_ITEM_REGULAR), - list("Magazine Pouch", round(scale * 5), /obj/item/storage/pouch/magazine, VENDOR_ITEM_REGULAR), - list("Medical Pouch", round(scale * 2), /obj/item/storage/pouch/medical, VENDOR_ITEM_REGULAR), - list("Medium General Pouch", round(scale * 2), /obj/item/storage/pouch/general/medium, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", round(scale * 2), /obj/item/storage/pouch/medkit, VENDOR_ITEM_REGULAR), - list("Sidearm Pouch", round(scale * 15), /obj/item/storage/pouch/pistol, VENDOR_ITEM_REGULAR), - list("Syringe Pouch", round(scale * 2), /obj/item/storage/pouch/syringe, VENDOR_ITEM_REGULAR), - list("Tools Pouch (Full)", round(scale * 2), /obj/item/storage/pouch/tools/full, VENDOR_ITEM_REGULAR), - - list("MISCELLANEOUS", -1, null, null), - list("Combat Flashlight", round(scale * 5), /obj/item/device/flashlight/combat, VENDOR_ITEM_REGULAR), - list("Entrenching Tool (ET)", round(scale * 4), /obj/item/tool/shovel/etool, VENDOR_ITEM_REGULAR), - list("Gas Mask", round(scale * 10), /obj/item/clothing/mask/gas, VENDOR_ITEM_REGULAR), - list("M89-S Signal Flare Pack", round(scale * 2), /obj/item/storage/box/m94/signal, VENDOR_ITEM_REGULAR), - list("M94 Marking Flare Pack", round(scale * 10), /obj/item/storage/box/m94, VENDOR_ITEM_REGULAR), - list("Machete Scabbard (Full)", round(scale * 20), /obj/item/storage/large_holster/machete/full, VENDOR_ITEM_REGULAR), - list("MB-6 Folding Barricades (x3)", round(scale * 1), /obj/item/stack/folding_barricade/three, VENDOR_ITEM_REGULAR) - ) +//---- ATTACHIES +/obj/structure/machinery/cm_vending/sorted/attachments/wo + req_access = list(ACCESS_MARINE_CARGO) + vend_dir = NORTH + vend_dir_whitelist = list(SOUTHWEST, SOUTHEAST) diff --git a/code/game/machinery/weather_siren.dm b/code/game/machinery/weather_siren.dm index c7752a3dccf1..7816a33391e3 100644 --- a/code/game/machinery/weather_siren.dm +++ b/code/game/machinery/weather_siren.dm @@ -11,11 +11,11 @@ health = 0 /obj/structure/machinery/weather_siren/Initialize() - weather_notify_objects += src + GLOB.weather_notify_objects += src return ..() /obj/structure/machinery/weather_siren/Destroy() - weather_notify_objects -= src + GLOB.weather_notify_objects -= src . = ..() /obj/structure/machinery/weather_siren/power_change() diff --git a/code/game/objects/effects/acid_hole.dm b/code/game/objects/effects/acid_hole.dm index 549ab45953d2..db24c1c9c56a 100644 --- a/code/game/objects/effects/acid_hole.dm +++ b/code/game/objects/effects/acid_hole.dm @@ -40,7 +40,7 @@ /obj/effect/acid_hole/attack_alien(mob/living/carbon/xenomorph/user) - if (!holed_wall) + if(!holed_wall) qdel(src) //no wall?! then cease existence... return @@ -49,19 +49,22 @@ expand_hole(user) return XENO_NO_DELAY_ACTION +/obj/effect/acid_hole/attack_larva(mob/living/carbon/xenomorph/larva/M) + attack_alien(M) + /obj/effect/acid_hole/proc/expand_hole(mob/living/carbon/xenomorph/user) - if(user.action_busy || user.lying) + if(user.action_busy || user.is_mob_incapacitated()) return playsound(src, "pry", 25, 1) xeno_attack_delay(user) - if(do_after(user, 60, INTERRUPT_ALL, BUSY_ICON_GENERIC) && !QDELETED(src) && holed_wall && !user.lying && istype(holed_wall)) + if(do_after(user, 60, INTERRUPT_ALL, BUSY_ICON_GENERIC) && !QDELETED(src) && holed_wall && istype(holed_wall)) holed_wall.take_damage(rand(2000,3500)) user.emote("roar") -/obj/effect/acid_hole/proc/use_wall_hole(mob/user) +/obj/effect/acid_hole/proc/use_wall_hole(mob/living/user) - if(user.mob_size >= MOB_SIZE_BIG || user.is_mob_incapacitated() || user.lying || user.buckled || user.anchored) + if(user.mob_size >= MOB_SIZE_BIG || user.is_mob_incapacitated() || user.buckled || user.anchored) return FALSE var/mob_dir = get_dir(user, src) @@ -95,7 +98,7 @@ to_chat(user, SPAN_NOTICE("You start crawling through the hole.")) if(do_after(user, 15, INTERRUPT_NO_NEEDHAND, BUSY_ICON_GENERIC)) - if(!user.is_mob_incapacitated() && !user.lying && !user.buckled) + if(!user.is_mob_incapacitated() && !user.buckled) if (T.density) return for(var/obj/O in T) @@ -165,7 +168,7 @@ F.forceMove(Target) F.setDir(pick(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)) step_away(F,src,rand(1,5)) - F.SetLuminosity(0) + F.set_light(0) if(F.on && loc != user) - F.SetLuminosity(F.brightness_on) + F.set_light_on(F.on) return diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index cbe0871148da..7fa61c474ea1 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -160,7 +160,7 @@ //damages human that comes in contact /obj/effect/xenomorph/spray/proc/apply_spray(mob/living/carbon/H, should_stun = TRUE) - if(!H.lying) + if(H.body_position == STANDING_UP) to_chat(H, SPAN_DANGER("Your feet scald and burn! Argh!")) if(ishuman(H)) H.emote("pain") @@ -264,7 +264,7 @@ else PAS.increment_stack_count(2) - if(!H.lying) + if(H.body_position == STANDING_UP) to_chat(H, SPAN_DANGER("Your feet scald and burn! Argh!")) H.emote("pain") H.last_damage_data = cause_data @@ -287,40 +287,56 @@ opacity = FALSE anchored = TRUE unacidable = TRUE + /// Target the acid is melting var/atom/acid_t - var/ticks = 0 - var/acid_strength = 1 //100% speed, normal + /// Duration left to next acid stage + var/remaining = 0 + /// Acid stages left to complete melting + var/ticks_left = 3 + /// Factor of duration between acid progression + var/acid_delay = 1 + /// How much fuel the acid drains from the flare every acid tick + var/flare_damage = 500 var/barricade_damage = 40 - var/barricade_damage_ticks = 10 // tick is once per 5 seconds. This tells us how many times it will try damaging barricades var/in_weather = FALSE //Sentinel weakest acid /obj/effect/xenomorph/acid/weak name = "weak acid" - acid_strength = 2.5 //250% normal speed + acid_delay = 2.5 //250% delay (40% speed) barricade_damage = 20 + flare_damage = 150 icon_state = "acid_weak" //Superacid /obj/effect/xenomorph/acid/strong name = "strong acid" - acid_strength = 0.4 //20% normal speed + acid_delay = 0.4 //40% delay (250% speed) barricade_damage = 100 + flare_damage = 1875 icon_state = "acid_strong" -/obj/effect/xenomorph/acid/New(loc, target) - ..(loc) +/obj/effect/xenomorph/acid/Initialize(mapload, atom/target) + . = ..() acid_t = target - var/strength_t = isturf(acid_t) ? 8:4 // Turf take twice as long to take down. + if(isturf(acid_t)) + ticks_left = 7 // Turf take twice as long to take down. + else if(istype(acid_t, /obj/structure/barricade)) + ticks_left = 9 handle_weather() - tick(strength_t) - RegisterSignal(SSdcs, COMSIG_GLOB_WEATHER_CHANGE, PROC_REF(handle_weather)) + RegisterSignal(acid_t, COMSIG_PARENT_QDELETING, PROC_REF(cleanup)) + START_PROCESSING(SSoldeffects, src) /obj/effect/xenomorph/acid/Destroy() acid_t = null + STOP_PROCESSING(SSoldeffects, src) . = ..() +/obj/effect/xenomorph/acid/proc/cleanup() + SIGNAL_HANDLER + qdel(src) + /obj/effect/xenomorph/acid/proc/handle_weather() SIGNAL_HANDLER @@ -328,73 +344,86 @@ if(!acids_area) return - if(SSweather.is_weather_event && locate(acids_area.master) in SSweather.weather_areas) - acid_strength = acid_strength + (SSweather.weather_event_instance.fire_smothering_strength * 0.33) //smothering_strength is 1-10, acid strength is a multiplier + if(SSweather.is_weather_event && locate(acids_area) in SSweather.weather_areas) + acid_delay = acid_delay + (SSweather.weather_event_instance.fire_smothering_strength * 0.33) //smothering_strength is 1-10, acid strength is a multiplier in_weather = SSweather.weather_event_instance.fire_smothering_strength else - acid_strength = initial(acid_strength) + acid_delay = initial(acid_delay) in_weather = FALSE /obj/effect/xenomorph/acid/proc/handle_barricade() + if(prob(in_weather)) + visible_message(SPAN_XENOWARNING("Acid on \The [acid_t] subsides!")) + return NONE var/obj/structure/barricade/cade = acid_t - if(istype(cade)) - cade.take_acid_damage(barricade_damage) - -/obj/effect/xenomorph/acid/proc/tick(strength_t) - set waitfor = 0 - if(!acid_t || !acid_t.loc) - qdel(src) - return - - if(istype(acid_t,/obj/structure/barricade)) - if(++ticks >= barricade_damage_ticks || prob(in_weather)) - visible_message(SPAN_XENOWARNING("Acid on \The [acid_t] subsides!")) - qdel(src) - return - handle_barricade() - sleep(50) - .() + cade.take_acid_damage(barricade_damage) + return (5 SECONDS) + +/obj/effect/xenomorph/acid/proc/handle_flashlight() + var/obj/item/device/flashlight/flare/flare = acid_t + if(flare.fuel <= 0) + return NONE + flare.fuel -= flare_damage + return (rand(15, 25) SECONDS) * acid_delay + +/obj/effect/xenomorph/acid/process(delta_time) + remaining -= delta_time * (1 SECONDS) + if(remaining > 0) return + ticks_left -= 1 - if(++ticks >= strength_t) - visible_message(SPAN_XENODANGER("[acid_t] collapses under its own weight into a puddle of goop and undigested debris!")) - playsound(src, "acid_hit", 25, TRUE) - - if(istype(acid_t, /turf)) - if(istype(acid_t, /turf/closed/wall)) - var/turf/closed/wall/W = acid_t - new /obj/effect/acid_hole (W) - else - var/turf/T = acid_t - T.ScrapeAway() - else if (istype(acid_t, /obj/structure/girder)) - var/obj/structure/girder/G = acid_t - G.dismantle() - else if(istype(acid_t, /obj/structure/window/framed)) - var/obj/structure/window/framed/WF = acid_t - WF.deconstruct(disassembled = FALSE) - else if(istype(acid_t,/obj/item/explosive/plastic)) - qdel(acid_t) + var/return_delay = NONE + if(istype(acid_t, /obj/structure/barricade)) + return_delay = handle_barricade() + else if(istype(acid_t, /obj/item/device/flashlight/flare)) + return_delay = handle_flashlight() + else + return_delay = (rand(20, 30) SECONDS) * acid_delay - else - if(acid_t.contents.len) //Hopefully won't auto-delete things inside melted stuff.. - for(var/mob/M in acid_t.contents) - if(acid_t.loc) M.forceMove(acid_t.loc) - QDEL_NULL(acid_t) + if(!ticks_left) + finish_melting() + return PROCESS_KILL + if(!return_delay) qdel(src) - return + return PROCESS_KILL - switch(strength_t - ticks) + remaining = return_delay + + switch(ticks_left) if(6) visible_message(SPAN_XENOWARNING("\The [acid_t] is barely holding up against the acid!")) if(4) visible_message(SPAN_XENOWARNING("\The [acid_t]\s structure is being melted by the acid!")) if(2) visible_message(SPAN_XENOWARNING("\The [acid_t] is struggling to withstand the acid!")) if(0 to 1) visible_message(SPAN_XENOWARNING("\The [acid_t] begins to crumble under the acid!")) - sleep(rand(200,300) * (acid_strength)) - .() +/obj/effect/xenomorph/acid/proc/finish_melting() + visible_message(SPAN_XENODANGER("[acid_t] collapses under its own weight into a puddle of goop and undigested debris!")) + playsound(src, "acid_hit", 25, TRUE) + + if(istype(acid_t, /turf)) + if(istype(acid_t, /turf/closed/wall)) + var/turf/closed/wall/wall = acid_t + new /obj/effect/acid_hole(wall) + else + var/turf/turf = acid_t + turf.ScrapeAway() + else if (istype(acid_t, /obj/structure/girder)) + var/obj/structure/girder/girder = acid_t + girder.dismantle() + else if(istype(acid_t, /obj/structure/window/framed)) + var/obj/structure/window/framed/window = acid_t + window.deconstruct(disassembled = FALSE) + + else if(istype(acid_t, /obj/structure/barricade)) + pass() // Don't delete it, just damaj + + else + for(var/mob/mob in acid_t) + mob.forceMove(loc) + qdel(acid_t) + qdel(src) /obj/effect/xenomorph/boiler_bombard name = "???" @@ -460,30 +489,33 @@ /obj/effect/xenomorph/xeno_telegraph name = "???" desc = "" - icon_state = "xeno_telegraph_red" + icon_state = "xeno_telegraph_base" mouse_opacity = MOUSE_OPACITY_TRANSPARENT -/obj/effect/xenomorph/xeno_telegraph/New(loc, ttl = 10) +/// Icon is by default a white sprite, provide an rgb hex code #RRGGBB argument to change. +/obj/effect/xenomorph/xeno_telegraph/New(loc, ttl = 10, color = null) ..(loc) + if(color) + src.color = color QDEL_IN(src, ttl) /obj/effect/xenomorph/xeno_telegraph/red - icon_state = "xeno_telegraph_red" + color = COLOR_DARK_RED /obj/effect/xenomorph/xeno_telegraph/brown - icon_state = "xeno_telegraph_brown" + color = COLOR_BROWN /obj/effect/xenomorph/xeno_telegraph/green - icon_state = "xeno_telegraph_green" + color = COLOR_LIGHT_GREEN -/obj/effect/xenomorph/xeno_telegraph/brown/abduct_hook +/// This has a brown icon state and does not have a color overlay by default. +/obj/effect/xenomorph/xeno_telegraph/abduct_hook icon_state = "xeno_telegraph_abduct_hook_anim" -/obj/effect/xenomorph/xeno_telegraph/brown/lash +/// This has a brown icon state and does not have a color overlay by default. +/obj/effect/xenomorph/xeno_telegraph/lash icon_state = "xeno_telegraph_lash" - - /obj/effect/xenomorph/acid_damage_delay name = "???" desc = "" diff --git a/code/game/objects/effects/decals/cleanable/blood/robots.dm b/code/game/objects/effects/decals/cleanable/blood/robots.dm index 1bbadb1461b6..3ee3c9e07f9a 100644 --- a/code/game/objects/effects/decals/cleanable/blood/robots.dm +++ b/code/game/objects/effects/decals/cleanable/blood/robots.dm @@ -3,11 +3,11 @@ desc = "It's a useless heap of junk... or is it?" icon = 'icons/mob/robots.dmi' icon_state = "gib1" - basecolor="#030303" + basecolor=COLOR_OIL random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7") /obj/effect/decal/cleanable/blood/gibs/robot/update_icon() - color = "#FFFFFF" + color = COLOR_WHITE /obj/effect/decal/cleanable/blood/gibs/robot/dry() //pieces of robots do not dry up like return @@ -39,7 +39,7 @@ /obj/effect/decal/cleanable/blood/oil name = "motor oil" desc = "It's black and greasy." - basecolor="#030303" + basecolor=COLOR_OIL /obj/effect/decal/cleanable/blood/oil/dry() return diff --git a/code/game/objects/effects/decals/cleanable/blood/tracks.dm b/code/game/objects/effects/decals/cleanable/blood/tracks.dm index 32593f6f30fa..c764259a6252 100644 --- a/code/game/objects/effects/decals/cleanable/blood/tracks.dm +++ b/code/game/objects/effects/decals/cleanable/blood/tracks.dm @@ -14,6 +14,9 @@ var/list/overlay_images = list() + /// Amount of pixels to shift either way in an attempt to make the tracks more organic + var/transverse_amplitude = 3 + /obj/effect/decal/cleanable/blood/tracks/Crossed() return @@ -21,19 +24,27 @@ return FALSE /obj/effect/decal/cleanable/blood/tracks/proc/add_tracks(direction, tcolor, out) - var/image/I = image(icon = icon, icon_state = out ? going_state : coming_state, dir = direction) - var/mutable_appearance/MA = new(I) + var/image/image = image(icon = icon, icon_state = out ? going_state : coming_state, dir = direction) + + var/mutable_appearance/MA = new(image) MA.color = tcolor MA.layer = layer MA.appearance_flags |= RESET_COLOR - I.appearance = MA + image.appearance = MA + + switch(direction) + if(NORTH, SOUTH) + image.pixel_x += rand(-transverse_amplitude, transverse_amplitude) + if(EAST, WEST) + image.pixel_y += rand(-transverse_amplitude, transverse_amplitude) + if(out) - LAZYSET(steps_out, "[direction]", I) + LAZYSET(steps_out, "[direction]", image) else - LAZYSET(steps_in, "[direction]", I) + LAZYSET(steps_in, "[direction]", image) - overlay_images += I - cleanable_turf.overlays += I + overlay_images += image + cleanable_turf.overlays += image /obj/effect/decal/cleanable/blood/tracks/clear_overlay() if(length(overlay_images)) diff --git a/code/game/objects/effects/decals/cleanable/fuel.dm b/code/game/objects/effects/decals/cleanable/fuel.dm index 3e245f760e21..a3f5f2d4e1a7 100644 --- a/code/game/objects/effects/decals/cleanable/fuel.dm +++ b/code/game/objects/effects/decals/cleanable/fuel.dm @@ -24,7 +24,7 @@ if(amount < 5.0) return var/turf/S = loc if(!istype(S)) return - for(var/d in cardinal) + for(var/d in GLOB.cardinals) if(rand(25)) var/turf/target = get_step(src, d) var/turf/origin = get_turf(src) diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 1ed0a0ebfd92..8b8a8d0795e3 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -35,12 +35,8 @@ name = "glowing goo" acid_damage = 1 icon_state = "greenglow" - luminosity = 1 - -/obj/effect/decal/cleanable/dirt/greenglow/Destroy() - SetLuminosity(0) - return ..() - + light_range = 1 + light_color = COLOR_LIGHT_GREEN /obj/effect/decal/cleanable/flour name = "flour" desc = "It's still good. Four second rule!" @@ -58,7 +54,8 @@ density = FALSE anchored = TRUE layer = TURF_LAYER - luminosity = 1 + light_range = 1 + light_color = COLOR_LIGHT_GREEN icon = 'icons/effects/effects.dmi' icon_state = "greenglow" @@ -68,10 +65,6 @@ . = ..() QDEL_IN(WEAKREF(src), 2 MINUTES) -/obj/effect/decal/cleanable/greenglow/Destroy() - SetLuminosity(0) - return ..() - /obj/effect/decal/cleanable/cobweb name = "cobweb" desc = "Somebody should remove that." @@ -169,7 +162,7 @@ /obj/effect/decal/cleanable/blackgoo/Crossed(mob/living/carbon/human/H) if(!istype(H)) return if(H.species.name == "Human") - if(!H.shoes || prob(25)) + if(!H.shoes && prob(50)) if(SSticker.mode && !MODE_HAS_TOGGLEABLE_FLAG(MODE_ALLOW_ZOMBIES)) message_admins(SPAN_HIGHDANGER("[src] at [ADMIN_JMP(src)] tried to pass black-goo infection to [key_name(H)]!")) return FALSE diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index cfe5f27da9a7..35e354c121bb 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -5,7 +5,7 @@ layer = ABOVE_TURF_LAYER anchored = TRUE -/obj/effect/decal/cleanable/crayon/New(location, main = "#FFFFFF",shade = "#000000", type = "rune") +/obj/effect/decal/cleanable/crayon/New(location, main = COLOR_WHITE,shade = COLOR_BLACK, type = "rune") ..() forceMove(location) diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm index 5391ed2710a8..4483d2fd7d24 100644 --- a/code/game/objects/effects/decals/misc.dm +++ b/code/game/objects/effects/decals/misc.dm @@ -79,7 +79,7 @@ deconstruct(FALSE) return -/obj/effect/decal/mecha_wreckage/bullet_act(obj/item/projectile/Proj) +/obj/effect/decal/mecha_wreckage/bullet_act(obj/projectile/Proj) return 1 /obj/effect/decal/mecha_wreckage/attack_alien(mob/living/carbon/xenomorph/M) @@ -95,11 +95,11 @@ return ..() /obj/effect/decal/mecha_wreckage/gygax - name = "Gygax wreckage" + name = "MAX wreckage" icon_state = "gygax-broken" /obj/effect/decal/mecha_wreckage/gygax/dark - name = "Dark Gygax wreckage" + name = "Dark MAX wreckage" icon_state = "darkgygax-broken" /obj/effect/decal/mecha_wreckage/marauder @@ -116,7 +116,7 @@ icon_state = "seraph-broken" /obj/effect/decal/mecha_wreckage/ripley - name = "Ripley wreckage" + name = "P-1000 wreckage" icon_state = "ripley-broken" /obj/effect/decal/mecha_wreckage/ripley/firefighter @@ -124,11 +124,11 @@ icon_state = "firefighter-broken" /obj/effect/decal/mecha_wreckage/ripley/deathripley - name = "Death-Ripley wreckage" + name = "Death-P-1000 wreckage" icon_state = "deathripley-broken" /obj/effect/decal/mecha_wreckage/durand - name = "Durand wreckage" + name = "MOX wreckage" icon_state = "durand-broken" /obj/effect/decal/mecha_wreckage/phazon @@ -136,7 +136,7 @@ icon_state = "phazon-broken" /obj/effect/decal/mecha_wreckage/odysseus - name = "Odysseus wreckage" + name = "Alice wreckage" icon_state = "odysseus-broken" /obj/effect/decal/mecha_wreckage/hoverpod diff --git a/code/game/objects/effects/decals/posters.dm b/code/game/objects/effects/decals/posters.dm index c688c4e6fb67..23f7b8c5296a 100644 --- a/code/game/objects/effects/decals/posters.dm +++ b/code/game/objects/effects/decals/posters.dm @@ -160,14 +160,14 @@ icon_state = "poster3" /obj/structure/sign/poster/music/Initialize() - serial_number = pick(3,5,25,26,29,38,39) + serial_number = pick(3,5,25,26,38,39) .=..() /obj/structure/sign/poster/pinup icon_state = "poster12" /obj/structure/sign/poster/pinup/Initialize() - serial_number = pick(12,16,17) + serial_number = pick(12,16,17,29) .=..() /obj/structure/sign/poster/propaganda @@ -184,6 +184,12 @@ serial_number = pick(27,28,30,31) .=..() +/obj/structure/sign/poster/io + icon_state = "poster14" + +/obj/structure/sign/poster/io/Initialize() + serial_number = 14 + . = ..() //////////////// //Hero Posters// //////////////// diff --git a/code/game/objects/effects/decals/warning_stripes.dm b/code/game/objects/effects/decals/warning_stripes.dm index ce0802d72d8e..20c96c2ac737 100644 --- a/code/game/objects/effects/decals/warning_stripes.dm +++ b/code/game/objects/effects/decals/warning_stripes.dm @@ -91,6 +91,20 @@ /obj/effect/decal/sand_overlay/sand2/corner2 icon_state = "sand2_c" +/obj/effect/decal/grass_overlay + name = "grass edge" + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + unacidable = TRUE + icon = 'icons/turf/floors/auto_strata_grass.dmi' + layer = TURF_LAYER + +/obj/effect/decal/grass_overlay/grass1 + icon_state = "grass_outercorner" + +/obj/effect/decal/grass_overlay/grass1/inner + name = "grass edge" + icon_state = "grass_innercorner" + /obj/effect/decal/siding name = "siding" icon = 'icons/turf/floors/floors.dmi' diff --git a/code/game/objects/effects/effect_system/chemsmoke.dm b/code/game/objects/effects/effect_system/chemsmoke.dm index 8ecdb2c07db9..0c74912ceb25 100644 --- a/code/game/objects/effects/effect_system/chemsmoke.dm +++ b/code/game/objects/effects/effect_system/chemsmoke.dm @@ -40,7 +40,8 @@ // Culls the selected turfs to a (roughly) circle shape, then calls smokeFlow() to make // sure the smoke can actually path to the turfs. This culls any turfs it can't reach. //------------------------------------------ -/datum/effect_system/smoke_spread/chem/set_up(datum/reagents/carry = null, n = 10, c = 0, loca, direct) +/datum/effect_system/smoke_spread/chem/set_up(datum/reagents/carry = null, n = 10, c = 0, loca, direct, datum/cause_data/new_cause_data) + cause_data = istype(new_cause_data) ? new_cause_data : cause_data range = n * 0.3 cardinals = c carry.copy_to(chemholder, carry.total_volume) @@ -194,14 +195,14 @@ chemholder.reagents.copy_to(smoke, chemholder.reagents.total_volume / dist, safety = 1) //copy reagents to the smoke so mob/breathe() can handle inhaling the reagents smoke.icon = I smoke.layer = FLY_LAYER - smoke.setDir(pick(cardinal)) + smoke.setDir(pick(GLOB.cardinals)) smoke.pixel_x = -32 + rand(-8,8) smoke.pixel_y = -32 + rand(-8,8) walk_to(smoke, T) - smoke.SetOpacity(1) //switching opacity on after the smoke has spawned, and then + smoke.set_opacity(1) //switching opacity on after the smoke has spawned, and then sleep(150+rand(0,20)) // turning it off before it is deleted results in cleaner if(smoke.opacity) - smoke.SetOpacity(0) + smoke.set_opacity(0) fadeOut(smoke) qdel(smoke) @@ -228,7 +229,7 @@ while(pending.len) for(var/turf/current in pending) - for(var/D in cardinal) + for(var/D in GLOB.cardinals) var/turf/target = get_step(current, D) if(wallList) if(istype(target, /turf/closed/wall)) diff --git a/code/game/objects/effects/effect_system/effect_system.dm b/code/game/objects/effects/effect_system/effect_system.dm index 49342af8514f..2e2203682798 100644 --- a/code/game/objects/effects/effect_system/effect_system.dm +++ b/code/game/objects/effects/effect_system/effect_system.dm @@ -41,10 +41,10 @@ would spawn and follow the beaker, even if it is carried or thrown. // will always spawn at the items location, even if it's moved. /* Example: -var/datum/effect_system/steam_spread/steam = new /datum/effect_system/steam_spread() -- creates new system -steam.set_up(5, 0, mob.loc) -- sets up variables -OPTIONAL: steam.attach(mob) -steam.start() -- spawns the effect + var/datum/effect_system/steam_spread/steam = new /datum/effect_system/steam_spread() -- creates new system + steam.set_up(5, 0, mob.loc) -- sets up variables + OPTIONAL: steam.attach(mob) + steam.start() -- spawns the effect */ ///////////////////////////////////////////// /obj/effect/particle_effect/steam @@ -71,9 +71,9 @@ steam.start() -- spawns the effect var/obj/effect/particle_effect/steam/steam = new /obj/effect/particle_effect/steam(location) var/direction if(cardinals) - direction = pick(cardinal) + direction = pick(GLOB.cardinals) else - direction = pick(alldirs) + direction = pick(GLOB.alldirs) for(i=0, i 0) diff --git a/code/game/objects/effects/effect_system/smoke.dm b/code/game/objects/effects/effect_system/smoke.dm index a02069087412..c9e404ae5b60 100644 --- a/code/game/objects/effects/effect_system/smoke.dm +++ b/code/game/objects/effects/effect_system/smoke.dm @@ -4,7 +4,7 @@ // in case you wanted a vent to always smoke north for example ///////////////////////////////////////////// -/// Chance that cades block the gas. Smoke spread ticks are calculated very quickly so this has to be high to have a noticable effect. +/// Chance that cades block the gas. Smoke spread ticks are calculated very quickly so this has to be high to have a noticeable effect. #define BOILER_GAS_CADE_BLOCK_CHANCE 35 /obj/effect/particle_effect/smoke @@ -31,13 +31,13 @@ amount = oldamount - 1 cause_data = new_cause_data time_to_live += rand(-1,1) - active_smoke_effects += src + START_PROCESSING(SSeffects, src) /obj/effect/particle_effect/smoke/Destroy() . = ..() if(opacity) - SetOpacity(0) - active_smoke_effects -= src + set_opacity(0) + STOP_PROCESSING(SSeffects, src) cause_data = null /obj/effect/particle_effect/smoke/initialize_pass_flags(datum/pass_flags_container/PF) @@ -51,9 +51,10 @@ qdel(src) return else if(time_to_live == 1) - alpha = 180 + if(alpha > 180) + alpha = 180 amount = 0 - SetOpacity(0) + set_opacity(0) apply_smoke_effect(get_turf(src)) @@ -63,8 +64,8 @@ /obj/effect/particle_effect/smoke/Crossed(atom/movable/M) ..() - if(istype(M, /obj/item/projectile/beam)) - var/obj/item/projectile/beam/B = M + if(istype(M, /obj/projectile/beam)) + var/obj/projectile/beam/B = M B.damage = (B.damage/2) if(iscarbon(M)) affect(M) @@ -79,7 +80,7 @@ if(QDELETED(src)) return var/turf/U = get_turf(src) if(!U) return - for(var/i in cardinal) + for(var/i in GLOB.cardinals) if(direction && i != direction) continue var/turf/T = get_step(U, i) @@ -92,7 +93,7 @@ else continue var/obj/effect/particle_effect/smoke/S = new type(T, amount, cause_data) - S.setDir(pick(cardinal)) + S.setDir(pick(GLOB.cardinals)) S.time_to_live = time_to_live if(S.amount>0) S.spread_smoke() @@ -180,18 +181,20 @@ /obj/effect/particle_effect/smoke/mustard/Move() . = ..() - for(var/mob/living/carbon/human/R in get_turf(src)) - affect(R) + for(var/mob/living/carbon/human/creature in get_turf(src)) + affect(creature) -/obj/effect/particle_effect/smoke/mustard/affect(mob/living/carbon/human/R) - ..() - R.burn_skin(0.75) - if(R.coughedtime != 1) - R.coughedtime = 1 - if(ishuman(R)) //Humans only to avoid issues - R.emote("gasp") - addtimer(VARSET_CALLBACK(R, coughedtime, 0), 2 SECONDS) - R.updatehealth() +/obj/effect/particle_effect/smoke/mustard/affect(mob/living/carbon/human/creature) + if(!istype(creature) || issynth(creature)) + return FALSE + + creature.burn_skin(0.75) + if(creature.coughedtime != 1) + creature.coughedtime = 1 + if(ishuman(creature)) //Humans only to avoid issues + creature.emote("gasp") + addtimer(VARSET_CALLBACK(creature, coughedtime, 0), 2 SECONDS) + creature.updatehealth() return ///////////////////////////////////////////// @@ -244,6 +247,89 @@ M.updatehealth() +///////////////////////////////////////////// +// CN20 Nerve Gas +///////////////////////////////////////////// + +/obj/effect/particle_effect/smoke/cn20 + name = "CN20 nerve gas" + smokeranking = SMOKE_RANK_HIGH + color = "#80c7e4" + var/xeno_affecting = FALSE + opacity = FALSE + alpha = 75 + +/obj/effect/particle_effect/smoke/cn20/xeno + name = "CN20-X nerve gas" + color = "#2da9da" + xeno_affecting = TRUE + +/obj/effect/particle_effect/smoke/cn20/Move() + . = ..() + if(!xeno_affecting) + for(var/mob/living/carbon/human/human in get_turf(src)) + affect(human) + else + for(var/mob/living/carbon/creature in get_turf(src)) + affect(creature) + +/obj/effect/particle_effect/smoke/cn20/affect(mob/living/carbon/creature) + var/mob/living/carbon/xenomorph/xeno_creature + var/mob/living/carbon/human/human_creature + if(isxeno(creature)) + xeno_creature = creature + else if(ishuman(creature)) + human_creature = creature + if(!istype(creature) || issynth(creature) || creature.stat == DEAD) + return FALSE + if(!xeno_affecting && xeno_creature) + return FALSE + if(isyautja(creature) && prob(75)) + return FALSE + + if(creature.wear_mask && (creature.wear_mask.flags_inventory & BLOCKGASEFFECT)) + return FALSE + if(human_creature && (human_creature.head && (human_creature.head.flags_inventory & BLOCKGASEFFECT))) + return FALSE + + var/effect_amt = round(6 + amount*6) + + if(xeno_creature) + if(xeno_creature.interference < 4) + to_chat(xeno_creature, SPAN_XENOHIGHDANGER("Your awareness dims to a small area!")) + xeno_creature.interference = 10 + xeno_creature.blinded = TRUE + else + creature.apply_damage(12, OXY) + creature.SetEarDeafness(max(creature.ear_deaf, round(effect_amt*1.5))) //Paralysis of hearing system, aka deafness + if(!xeno_creature && !creature.eye_blind) //Eye exposure damage + to_chat(creature, SPAN_DANGER("Your eyes sting. You can't see!")) + creature.SetEyeBlind(round(effect_amt/3)) + if(!xeno_creature && creature.coughedtime != 1 && !creature.stat) //Coughing/gasping + creature.coughedtime = 1 + if(prob(50)) + creature.emote("cough") + else + creature.emote("gasp") + addtimer(VARSET_CALLBACK(creature, coughedtime, 0), 1.5 SECONDS) + var/stun_chance = 20 + if(xeno_affecting) + stun_chance = 35 + if(prob(stun_chance)) + creature.apply_effect(1, WEAKEN) + + //Topical damage (neurotoxin on exposed skin) + if(xeno_creature) + to_chat(xeno_creature, SPAN_XENODANGER("You are struggling to move, it's as if you're paralyzed!")) + else + to_chat(creature, SPAN_DANGER("Your body is going numb, almost as if paralyzed!")) + if(prob(60 + round(amount*15))) //Highly likely to drop items due to arms/hands seizing up + creature.drop_held_item() + if(human_creature) + human_creature.temporary_slowdown = max(human_creature.temporary_slowdown, 4) //One tick every two second + human_creature.recalculate_move_delay = TRUE + return TRUE + ////////////////////////////////////// // FLASHBANG SMOKE //////////////////////////////////// @@ -283,14 +369,14 @@ var/gas_damage = 20 /obj/effect/particle_effect/smoke/xeno_burn/Initialize(mapload, amount, datum/cause_data/cause_data) - var/mob/living/carbon/xenomorph/xeno = cause_data?.resolve_mob() - if (istype(xeno) && xeno.hivenumber) - hivenumber = xeno.hivenumber - - set_hive_data(src, hivenumber) - - . = ..() + if(istype(cause_data)) + var/datum/ui_state/hive_state/cause_data_hive_state = GLOB.hive_state[cause_data.faction] + var/new_hive_number = cause_data_hive_state?.hivenumber + if(new_hive_number) + hivenumber = new_hive_number + set_hive_data(src, new_hive_number) + return ..() /obj/effect/particle_effect/smoke/xeno_burn/apply_smoke_effect(turf/T) ..() @@ -387,7 +473,7 @@ if(!issynth(moob)) var/datum/effects/neurotoxin/neuro_effect = locate() in moob.effects_list if(!neuro_effect) - neuro_effect = new /datum/effects/neurotoxin(moob) + neuro_effect = new(moob, cause_data.resolve_mob()) neuro_effect.strength = effect_amt neuro_effect.duration += neuro_dose if(moob.coughedtime != 1 && !moob.stat) //Coughing/gasping @@ -462,7 +548,7 @@ if(QDELETED(src)) return var/turf/U = get_turf(src) if(!U) return - for(var/i in cardinal) + for(var/i in GLOB.cardinals) if(direction && i != direction) continue var/turf/T = get_step(U, i) @@ -483,7 +569,7 @@ if(istype(A, /obj/flamer_fire)) qdel(A) - S.setDir(pick(cardinal)) + S.setDir(pick(GLOB.cardinals)) S.time_to_live = time_to_live if(S.amount>0) S.spread_smoke() @@ -541,6 +627,12 @@ /datum/effect_system/smoke_spread/phosphorus/weak smoke_type = /obj/effect/particle_effect/smoke/phosphorus/weak +/datum/effect_system/smoke_spread/cn20 + smoke_type = /obj/effect/particle_effect/smoke/cn20 + +/datum/effect_system/smoke_spread/cn20/xeno + smoke_type = /obj/effect/particle_effect/smoke/cn20/xeno + // XENO SMOKES /datum/effect_system/smoke_spread/xeno_acid diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index e54607d6f930..aa5e2ec400e2 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -39,18 +39,14 @@ else //if on the floor, glowshroom on-floor sprite icon_state = "glowshroomf" - SetLuminosity(round(potency/15)) + set_light(round(potency/15)) lastTick = world.timeofday -/obj/effect/glowshroom/Destroy() - SetLuminosity(0) - . = ..() - /obj/effect/glowshroom/proc/CalcDir(turf/location = loc) set background = 1 var/direction = 16 - for(var/wallDir in cardinal) + for(var/wallDir in GLOB.cardinals) var/turf/newTurf = get_step(location,wallDir) if(istype(newTurf, /turf/closed/wall)) direction |= wallDir @@ -99,8 +95,6 @@ if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY) deconstruct(FALSE) return - else - return /obj/effect/glowshroom/fire_act(exposed_temperature, exposed_volume) if(exposed_temperature > 300) diff --git a/code/game/objects/effects/landmarks/corpsespawner.dm b/code/game/objects/effects/landmarks/corpsespawner.dm index 8350e68d66a3..27a717f58ba8 100644 --- a/code/game/objects/effects/landmarks/corpsespawner.dm +++ b/code/game/objects/effects/landmarks/corpsespawner.dm @@ -48,10 +48,6 @@ name = "Engineer" equip_path = /datum/equipment_preset/corpse/engineer -/obj/effect/landmark/corpsespawner/clown - name = "Clown" - equip_path = /datum/equipment_preset/corpse/clown - /obj/effect/landmark/corpsespawner/scientist name = "Scientist" equip_path = /datum/equipment_preset/corpse/scientist @@ -139,7 +135,7 @@ /obj/effect/landmark/corpsespawner/wy/manager/burst name = "Burst Corporate Supervisor" - equip_path = /datum/equipment_preset/corpse/ua_riot/burst + equip_path = /datum/equipment_preset/corpse/wy/manager/burst ///////////Faction Specific Corpses////////////////////// @@ -201,3 +197,9 @@ /obj/effect/landmark/corpsespawner/gladiator/burst name = "Burst Gladiator" equip_path = /datum/equipment_preset/corpse/gladiator/burst + +//FORECON + +/obj/effect/landmark/corpsespawner/forecon_spotter + name = "USCM Reconnaissance Spotter" + equip_path = /datum/equipment_preset/corpse/forecon_spotter diff --git a/code/game/objects/effects/landmarks/item_pool.dm b/code/game/objects/effects/landmarks/item_pool.dm index e01a6bbc3fd0..a5e628cd656b 100644 --- a/code/game/objects/effects/landmarks/item_pool.dm +++ b/code/game/objects/effects/landmarks/item_pool.dm @@ -13,10 +13,10 @@ /obj/effect/landmark/item_pool_spawner/Initialize(mapload, ...) . = ..() - item_pool_landmarks += src + GLOB.item_pool_landmarks += src /obj/effect/landmark/item_pool_spawner/Destroy() - item_pool_landmarks -= src + GLOB.item_pool_landmarks -= src . = ..() /obj/effect/landmark/item_pool_spawner/corsat_bio_lock diff --git a/code/game/objects/effects/landmarks/landmarks.dm b/code/game/objects/effects/landmarks/landmarks.dm index 64a5025794e3..a7afb80ef080 100644 --- a/code/game/objects/effects/landmarks/landmarks.dm +++ b/code/game/objects/effects/landmarks/landmarks.dm @@ -216,23 +216,25 @@ /obj/effect/landmark/yautja_teleport name = "yautja_teleport" + /// The index we registered as in mainship_yautja_desc or yautja_teleport_descs + var/desc_index /obj/effect/landmark/yautja_teleport/Initialize(mapload, ...) . = ..() - var/turf/T = get_turf(src) + var/turf/turf = get_turf(src) + desc_index = turf.loc.name + turf.loc_to_string() if(is_mainship_level(z)) GLOB.mainship_yautja_teleports += src - GLOB.mainship_yautja_desc[T.loc.name + T.loc_to_string()] = src + GLOB.mainship_yautja_desc[desc_index] = src else GLOB.yautja_teleports += src - GLOB.yautja_teleport_descs[T.loc.name + T.loc_to_string()] = src + GLOB.yautja_teleport_descs[desc_index] = src /obj/effect/landmark/yautja_teleport/Destroy() - var/turf/T = get_turf(src) GLOB.mainship_yautja_teleports -= src GLOB.yautja_teleports -= src - GLOB.mainship_yautja_desc -= T.loc.name + T.loc_to_string() - GLOB.yautja_teleport_descs -= T.loc.name + T.loc_to_string() + GLOB.mainship_yautja_desc -= desc_index + GLOB.yautja_teleport_descs -= desc_index return ..() @@ -376,6 +378,8 @@ name = "late join" icon_state = "x2" var/squad + /// What job should latejoin on this landmark + var/job /obj/effect/landmark/late_join/alpha name = "alpha late join" @@ -394,16 +398,42 @@ squad = SQUAD_MARINE_4 +/obj/effect/landmark/late_join/working_joe + name = "working joe late join" + job = JOB_WORKING_JOE + + +/obj/effect/landmark/late_join/cmo + name = "Chief Medical Officer late join" + job = JOB_CMO + +/obj/effect/landmark/late_join/researcher + name = "Researcher late join" + job = JOB_RESEARCHER + +/obj/effect/landmark/late_join/doctor + name = "Doctor late join" + job = JOB_DOCTOR + +/obj/effect/landmark/late_join/nurse + name = "Nurse late join" + job = JOB_NURSE + + /obj/effect/landmark/late_join/Initialize(mapload, ...) . = ..() if(squad) LAZYADD(GLOB.latejoin_by_squad[squad], src) + else if(job) + LAZYADD(GLOB.latejoin_by_job[job], src) else GLOB.latejoin += src /obj/effect/landmark/late_join/Destroy() if(squad) LAZYREMOVE(GLOB.latejoin_by_squad[squad], src) + else if(job) + LAZYREMOVE(GLOB.latejoin_by_job[job], src) else GLOB.latejoin -= src return ..() @@ -496,3 +526,7 @@ /// In landmarks.dm and not unit_test.dm so it is always active in the mapping tools. /obj/effect/landmark/unit_test_top_right name = "unit test zone top right" + +/// Marks the bottom left of the tutorial zone. +/obj/effect/landmark/tutorial_bottom_left + name = "tutorial bottom left" diff --git a/code/game/objects/effects/landmarks/survivor_spawner.dm b/code/game/objects/effects/landmarks/survivor_spawner.dm index fbd04babdf20..39c7dbffa6ee 100644 --- a/code/game/objects/effects/landmarks/survivor_spawner.dm +++ b/code/game/objects/effects/landmarks/survivor_spawner.dm @@ -8,6 +8,8 @@ var/roundstart_damage_min = 0 var/roundstart_damage_max = 0 var/roundstart_damage_times = 1 + /// Whether or not the spawner is for an inherently hostile survivor subtype. + var/hostile = FALSE var/spawn_priority = LOWEST_SPAWN_PRIORITY @@ -27,6 +29,7 @@ return TRUE /obj/effect/landmark/survivor_spawner/lv624_crashed_clf + hostile = TRUE equipment = /datum/equipment_preset/survivor/clf synth_equipment = /datum/equipment_preset/clf/synth intro_text = list("

        You are a survivor of a crash landing!

        ",\ @@ -40,6 +43,7 @@ spawn_priority = SPAWN_PRIORITY_HIGH /obj/effect/landmark/survivor_spawner/lv624_crashed_clf_engineer + hostile = TRUE equipment = /datum/equipment_preset/clf/engineer synth_equipment = /datum/equipment_preset/clf/synth intro_text = list("

        You are a survivor of a crash landing!

        ",\ @@ -53,6 +57,7 @@ spawn_priority = SPAWN_PRIORITY_VERY_HIGH /obj/effect/landmark/survivor_spawner/lv624_crashed_clf_medic + hostile = TRUE equipment = /datum/equipment_preset/clf/medic synth_equipment = /datum/equipment_preset/clf/synth intro_text = list("

        You are a survivor of a crash landing!

        ",\ @@ -67,31 +72,56 @@ /obj/effect/landmark/survivor_spawner/bigred_crashed_pmc equipment = /datum/equipment_preset/survivor/pmc - synth_equipment = /datum/equipment_preset/pmc/synth + synth_equipment = /datum/equipment_preset/synth/survivor/pmc intro_text = list("

        You are a survivor of a crash landing!

        ",\ "You are NOT aware of the xenomorph threat.",\ "Your primary objective is to heal up and survive. If you want to assault the hive - adminhelp.") - story_text = "You are a PMC from Weyland-Yutani. Your ship was enroute to Solaris Ridge to escort an Assistant Manager. On the way, your ship received a distress signal from the colony about an attack. Worried that it might be a CLF attack, your pilot set full speed for the colony. However, during atmospheric entry the engine failed and you fell unconcious from the G-Forces. You wake up wounded... and see that the ship has crashed onto the colony. Your squadmates lie dead beside you, but there's some missing. Perhaps they survived and moved elsewhere? You need to find out what happened to the colony, see if you can find any of your squadmates, and find a way to contact Weyland-Yutani." + story_text = "You are a PMC from Weyland-Yutani. Your ship was enroute to Solaris Ridge to escort an Assistant Manager. On the way, your ship received a distress signal from the colony about an attack. Worried that it might be a CLF attack, your pilot set full speed for the colony. However, during atmospheric entry the engine failed and you fell unconscious from the G-Forces. You wake up wounded... and see that the ship has crashed onto the colony. Your squadmates lie dead beside you, but there's some missing. Perhaps they survived and moved elsewhere? You need to find out what happened to the colony, see if you can find any of your squadmates, and find a way to contact Weyland-Yutani." roundstart_damage_min = 3 roundstart_damage_max = 10 roundstart_damage_times = 2 spawn_priority = SPAWN_PRIORITY_HIGH +/obj/effect/landmark/survivor_spawner/bigred_crashed_pmc_medic + equipment = /datum/equipment_preset/survivor/pmc/medic + synth_equipment = /datum/equipment_preset/synth/survivor/pmc + intro_text = list("

        You are a survivor of a crash landing!

        ",\ + "You are NOT aware of the xenomorph threat.",\ + "Your primary objective is to heal up and survive. If you want to assault the hive - adminhelp.") + story_text = "You are a PMC medic from Weyland-Yutani. Your ship was enroute to Solaris Ridge to escort an Assistant Manager. On the way, your ship received a distress signal from the colony about an attack. Worried that it might be a CLF attack, your pilot set full speed for the colony. However, during atmospheric entry the engine failed and you fell unconscious from the G-Forces. You wake up wounded... and see that the ship has crashed onto the colony. Your squadmates lie dead beside you, but there's some missing. Perhaps they survived and moved elsewhere? You need to find out what happened to the colony, see if you can find any of your squadmates, and find a way to contact Weyland-Yutani." + roundstart_damage_min = 3 + roundstart_damage_max = 10 + roundstart_damage_times = 2 + + spawn_priority = SPAWN_PRIORITY_VERY_HIGH + +/obj/effect/landmark/survivor_spawner/bigred_crashed_pmc_engineer + equipment = /datum/equipment_preset/survivor/pmc/engineer + synth_equipment = /datum/equipment_preset/synth/survivor/pmc + intro_text = list("

        You are a survivor of a crash landing!

        ",\ + "You are NOT aware of the xenomorph threat.",\ + "Your primary objective is to heal up and survive. If you want to assault the hive - adminhelp.") + story_text = "You are a PMC engineer from Weyland-Yutani. Your ship was enroute to Solaris Ridge to escort an Assistant Manager. On the way, your ship received a distress signal from the colony about an attack. Worried that it might be a CLF attack, your pilot set full speed for the colony. However, during atmospheric entry the engine failed and you fell unconscious from the G-Forces. You wake up wounded... and see that the ship has crashed onto the colony. Your squadmates lie dead beside you, but there's some missing. Perhaps they survived and moved elsewhere? You need to find out what happened to the colony, see if you can find any of your squadmates, and find a way to contact Weyland-Yutani." + roundstart_damage_min = 3 + roundstart_damage_max = 10 + roundstart_damage_times = 2 + + spawn_priority = SPAWN_PRIORITY_VERY_HIGH + /obj/effect/landmark/survivor_spawner/bigred_crashed_cl equipment = /datum/equipment_preset/survivor/wy/manager - synth_equipment = /datum/equipment_preset/pmc/synth + synth_equipment = /datum/equipment_preset/synth/survivor/pmc intro_text = list("

        You are a survivor of a crash landing!

        ",\ "You are NOT aware of the xenomorph threat.",\ "Your primary objective is to heal up and survive. If you want to assault the hive - adminhelp.") - story_text = "You are an Assistant Manager from Weyland-Yutani. You were being escorted onboard a PMC ship to Solaris Ridge. On the way, the ship received a distress signal from the colony about an attack. Worried that it might be a CLF attack, the pilot set full speed for the colony. However, during atmospheric entry the engine failed and you fell unconcious from the G-Forces. You wake up wounded... and see that the ship has crashed onto the colony. The shipcrew lie dead beside you, but there's some missing. Perhaps they survived and moved elsewhere? You must get up and find a way to contact Weyland-Yutani." + story_text = "You are an Assistant Manager from Weyland-Yutani. You were being escorted onboard a PMC ship to Solaris Ridge. On the way, the ship received a distress signal from the colony about an attack. Worried that it might be a CLF attack, the pilot set full speed for the colony. However, during atmospheric entry the engine failed and you fell unconscious from the G-Forces. You wake up wounded... and see that the ship has crashed onto the colony. The shipcrew lie dead beside you, but there's some missing. Perhaps they survived and moved elsewhere? You must get up and find a way to contact Weyland-Yutani." roundstart_damage_min = 3 roundstart_damage_max = 10 roundstart_damage_times = 2 spawn_priority = SPAWN_PRIORITY_VERY_HIGH - //Military Survivors// /obj/effect/landmark/survivor_spawner/lv522_forecon_tech @@ -106,10 +136,55 @@ equipment = /datum/equipment_preset/survivor/forecon/smartgunner spawn_priority = SPAWN_PRIORITY_MEDIUM -/obj/effect/landmark/survivor_spawner/lv522_forecon_grenadier - equipment = /datum/equipment_preset/survivor/forecon/grenadier +/obj/effect/landmark/survivor_spawner/lv522_forecon_sniper + equipment = /datum/equipment_preset/survivor/forecon/sniper spawn_priority = SPAWN_PRIORITY_MEDIUM /obj/effect/landmark/survivor_spawner/lv522_forecon_squad_leader equipment = /datum/equipment_preset/survivor/forecon/squad_leader spawn_priority = SPAWN_PRIORITY_HIGH + +/obj/effect/landmark/survivor_spawner/upp/soldier + equipment = /datum/equipment_preset/survivor/upp/soldier + synth_equipment = /datum/equipment_preset/synth/survivor/upp + intro_text = list("

        You are a member of a UPP recon force!

        ",\ + "You ARE aware of the xenomorph threat.",\ + "Your primary objective is to survive. You believe a second dropship crashed somewhere to the south east, which was carrying additional weapons") + story_text = "Your orders were simple, Recon the site, ascertain if there is a biological weapons program in the area, and if so to secure the colony and retrieve a sample. However your team failed to account for an active anti-air battery near the area. Both your craft and your sister ship crashed. Barely having a chance to catch your breath, you found yourself being assailed by vile xenomorphs! You and your team have barely held your ground, at the cost of four of your own, but more are coming and ammo is low. You believe an American rescue force is en route." + spawn_priority = SPAWN_PRIORITY_LOW + +/obj/effect/landmark/survivor_spawner/upp_sapper + equipment = /datum/equipment_preset/survivor/upp/sapper + synth_equipment = /datum/equipment_preset/synth/survivor/upp + intro_text = list("

        You are a member of a UPP recon force!

        ",\ + "You ARE aware of the xenomorph threat.",\ + "Your primary objective is to survive. You believe a second dropship crashed somewhere to the south east, which was carrying additional weapons") + story_text = "Your orders were simple, Recon the site, ascertain if there is a biological weapons program in the area, and if so to secure the colony and retrieve a sample. However your team failed to account for an active anti-air battery near the area. Both your craft and your sister ship crashed. Barely having a chance to catch your breath, you found yourself being assailed by vile xenomorphs! You and your team have barely held your ground, at the cost of four of your own, but more are coming and ammo is low. You believe an American rescue force is en route." + spawn_priority = SPAWN_PRIORITY_MEDIUM + +/obj/effect/landmark/survivor_spawner/upp_medic + equipment = /datum/equipment_preset/survivor/upp/medic + synth_equipment = /datum/equipment_preset/synth/survivor/upp + intro_text = list("

        You are a member of a UPP recon force!

        ",\ + "You ARE aware of the xenomorph threat.",\ + "Your primary objective is to survive. You believe a second dropship crashed somewhere to the south east, which was carrying additional weapons") + story_text = "Your orders were simple, Recon the site, ascertain if there is a biological weapons program in the area, and if so to secure the colony and retrieve a sample. However your team failed to account for an active anti-air battery near the area. Both your craft and your sister ship crashed. Barely having a chance to catch your breath, you found yourself being assailed by vile xenomorphs! You and your team have barely held your ground, at the cost of four of your own, but more are coming and ammo is low. You believe an American rescue force is en route." + spawn_priority = SPAWN_PRIORITY_MEDIUM + +/obj/effect/landmark/survivor_spawner/upp_specialist + equipment = /datum/equipment_preset/survivor/upp/specialist + synth_equipment = /datum/equipment_preset/synth/survivor/upp + intro_text = list("

        You are a member of a UPP recon force!

        ",\ + "You ARE aware of the xenomorph threat.",\ + "Your primary objective is to survive. You believe a second dropship crashed somewhere to the south east, which was carrying additional weapons") + story_text = "Your orders were simple, Recon the site, ascertain if there is a biological weapons program in the area, and if so to secure the colony and retrieve a sample. However your team failed to account for an active anti-air battery near the area. Both your craft and your sister ship crashed. Barely having a chance to catch your breath, you found yourself being assailed by vile xenomorphs! You and your team have barely held your ground, at the cost of four of your own, but more are coming and ammo is low. You believe an American rescue force is en route." + spawn_priority = SPAWN_PRIORITY_HIGH + +/obj/effect/landmark/survivor_spawner/squad_leader + equipment = /datum/equipment_preset/survivor/upp/squad_leader + synth_equipment = /datum/equipment_preset/synth/survivor/upp + intro_text = list("

        You are a member of a UPP recon force!

        ",\ + "You ARE aware of the xenomorph threat.",\ + "Your primary objective is to survive. You believe a second dropship crashed somewhere to the south east, which was carrying additional weapons") + story_text = "Your orders were simple, Recon the site, ascertain if there is a biological weapons program in the area, and if so to secure the colony and retrieve a sample. However your team failed to account for an active anti-air battery near the area. Both your craft and your sister ship crashed. Barely having a chance to catch your breath, you found yourself being assailed by vile xenomorphs! You and your team have barely held your ground, at the cost of four of your own, but more are coming and ammo is low. You believe an American rescue force is en route." + spawn_priority = SPAWN_PRIORITY_VERY_HIGH diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index d4cd293030c2..ce0fd5506cd7 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -145,7 +145,7 @@ name = "laser" anchored = TRUE mouse_opacity = MOUSE_OPACITY_ICON - luminosity = 2 + light_range = 2 icon = 'icons/obj/items/weapons/projectiles.dmi' icon_state = "laser_target_coordinate" effect_duration = 600 @@ -156,14 +156,13 @@ source_binoc.laser_cooldown = world.time + source_binoc.cooldown_duration source_binoc.coord = null source_binoc = null - SetLuminosity(0) . = ..() /obj/effect/overlay/temp/laser_target name = "laser" anchored = TRUE mouse_opacity = MOUSE_OPACITY_ICON - luminosity = 2 + light_range = 2 icon = 'icons/obj/items/weapons/projectiles.dmi' icon_state = "laser_target2" effect_duration = 600 @@ -177,17 +176,17 @@ user = _user if(squad_name) name = "[squad_name] laser" - if(user && user.faction && cas_groups[user.faction]) + if(user && user.faction && GLOB.cas_groups[user.faction]) signal = new(src) signal.name = name signal.target_id = tracking_id signal.linked_cam = new(loc, name) - cas_groups[user.faction].add_signal(signal) + GLOB.cas_groups[user.faction].add_signal(signal) /obj/effect/overlay/temp/laser_target/Destroy() if(signal) - cas_groups[user.faction].remove_signal(signal) + GLOB.cas_groups[user.faction].remove_signal(signal) if(signal.linked_cam) qdel(signal.linked_cam) signal.linked_cam = null @@ -198,7 +197,6 @@ source_binoc.laser = null source_binoc = null - SetLuminosity(0) . = ..() /obj/effect/overlay/temp/laser_target/ex_act(severity) //immune to explosions @@ -214,16 +212,12 @@ /obj/effect/overlay/temp/blinking_laser name = "blinking laser" anchored = TRUE - luminosity = 2 + light_range = 2 effect_duration = 10 mouse_opacity = MOUSE_OPACITY_TRANSPARENT icon = 'icons/obj/items/weapons/projectiles.dmi' icon_state = "laser_target3" -/obj/effect/overlay/temp/blinking_laser/Destroy() - SetLuminosity(0) - . = ..() - /obj/effect/overlay/temp/emp_sparks icon = 'icons/effects/effects.dmi' icon_state = "empdisable" @@ -231,7 +225,7 @@ effect_duration = 10 /obj/effect/overlay/temp/emp_sparks/New(loc) - setDir(pick(cardinal)) + setDir(pick(GLOB.cardinals)) ..() /obj/effect/overlay/temp/emp_pulse diff --git a/code/game/objects/effects/spawners/faction_spawners.dm b/code/game/objects/effects/spawners/faction_spawners.dm new file mode 100644 index 000000000000..2daf6392e5e7 --- /dev/null +++ b/code/game/objects/effects/spawners/faction_spawners.dm @@ -0,0 +1,197 @@ +/* + * USCM weapons + */ +/obj/effect/spawner/random/gun/uscm_primary + name = "USCM primary weapon spawner" + desc = "spawns USCM primary weapons" + mags_max = 2 + mags_min = 1 + guns = list( + /obj/item/weapon/gun/rifle/m41a = /obj/item/ammo_magazine/rifle, + /obj/item/weapon/gun/rifle/m41a/tactical = /obj/item/ammo_magazine/rifle, + /obj/item/weapon/gun/smg/m39 = /obj/item/ammo_magazine/smg/m39, + /obj/item/weapon/gun/smg/m39 = /obj/item/ammo_magazine/smg/m39, + /obj/item/weapon/gun/shotgun/pump = /datum/ammo/bullet/shotgun/buckshot + ) + +/obj/effect/spawner/random/gun/uscm_primary/lowchance + spawn_nothing_percentage = 80 + icon_state = "loot_rifle_20" + +/obj/effect/spawner/random/gun/uscm_primary/midchance + spawn_nothing_percentage = 50 + icon_state = "loot_rifle_50" + +/obj/effect/spawner/random/gun/uscm_primary/highchance + spawn_nothing_percentage = 20 + icon_state = "loot_rifle_80" + +/obj/effect/spawner/random/gun/uscm_secondary + name = "USCM secondary weapon spawner" + desc = "spawns USCM secondary weapons" + spawn_nothing_percentage = 0 + mags_max = 2 + mags_min = 1 + guns = list( + /obj/item/weapon/gun/pistol/m4a3 = /obj/item/ammo_magazine/pistol, + /obj/item/weapon/gun/revolver/m44 = /obj/item/ammo_magazine/handful/revolver/marksman + ) + +/obj/effect/spawner/random/gun/uscm_secondary/lowchance + spawn_nothing_percentage = 80 + icon_state = "loot_pistol_20" + +/obj/effect/spawner/random/gun/uscm_secondary/midchance + spawn_nothing_percentage = 50 + icon_state = "loot_pistol_50" + +/obj/effect/spawner/random/gun/uscm_secondary/highchance + spawn_nothing_percentage = 80 + icon_state = "loot_pistol_80" + + +/* + * UPP weapons + */ +/obj/effect/spawner/random/gun/upp_primary + name = "UPP primary weapon spawner" + desc = "spawns UPP primary weapons" + mags_max = 2 + mags_min = 1 + guns = list( + /obj/item/weapon/gun/smg/bizon/upp = /obj/item/ammo_magazine/smg/bizon, + /obj/item/weapon/gun/rifle/type71 = /obj/item/ammo_magazine/rifle/type71, + /obj/item/weapon/gun/rifle/type71/carbine = /obj/item/ammo_magazine/rifle/type71 + ) + +/obj/effect/spawner/random/gun/upp_primary/lowchance + spawn_nothing_percentage = 80 + icon_state = "loot_rifle_20" + +/obj/effect/spawner/random/gun/upp_primary/midchance + spawn_nothing_percentage = 50 + icon_state = "loot_rifle_50" + +/obj/effect/spawner/random/gun/upp_primary/highchance + spawn_nothing_percentage = 80 + icon_state = "loot_rifle_80" + +/obj/effect/spawner/random/gun/upp_secondary + name = "UPP secondary weapon spawner" + desc = "spawns UPP secondary weapons" + mags_max = 2 + mags_min = 1 + guns = list( + /obj/item/weapon/gun/pistol/t73 = /obj/item/ammo_magazine/pistol/t73, + /obj/item/weapon/gun/pistol/np92 = /obj/item/ammo_magazine/pistol/np92, + /obj/item/weapon/gun/revolver/upp = /obj/item/ammo_magazine/revolver/upp + ) + +/obj/effect/spawner/random/gun/upp_secondary/lowchance + spawn_nothing_percentage = 80 + icon_state = "loot_pistol_20" + +/obj/effect/spawner/random/gun/upp_secondary/medchance + spawn_nothing_percentage = 50 + icon_state = "loot_pistol_50" + +/obj/effect/spawner/random/gun/upp_secondary/highchance + spawn_nothing_percentage = 20 + icon_state = "loot_pistol_80" +/* + * PMC weapons + */ +/obj/effect/spawner/random/gun/pmc_primary + name = "PMC primary weapon spawner" + desc = "spawns PMC primary weapons" + mags_max = 2 + mags_min = 1 + guns = list( + /obj/item/weapon/gun/rifle/m41a/elite = /obj/item/ammo_magazine/rifle/ap, + /obj/item/weapon/gun/rifle/m41a/elite = /obj/item/ammo_magazine/rifle/extended, + /obj/item/weapon/gun/smg/m39/elite = /obj/item/ammo_magazine/smg/m39/ap, + /obj/item/weapon/gun/smg/m39/elite = /obj/item/ammo_magazine/smg/m39/extended, + /obj/item/weapon/gun/rifle/nsg23 = /obj/item/ammo_magazine/rifle/nsg23/ap, + /obj/item/weapon/gun/rifle/nsg23 = /obj/item/ammo_magazine/rifle/nsg23/extended + ) + +/obj/effect/spawner/random/gun/pmc_primary/lowchance + spawn_nothing_percentage = 80 + icon_state = "loot_rifle_20" + +/obj/effect/spawner/random/gun/pmc_primary/midchance + spawn_nothing_percentage = 50 + icon_state = "loot_rifle_50" + +/obj/effect/spawner/random/gun/pmc_primary/highchance + spawn_nothing_percentage = 80 + icon_state = "loot_rifle_80" + +/obj/effect/spawner/random/gun/pmc_secondary + name = "PMC secondary weapon spawner" + desc = "spawns PMC secondary weapons" + mags_max = 2 + mags_min = 1 + guns = list( + /obj/item/weapon/gun/pistol/vp78 = /obj/item/ammo_magazine/pistol/vp78, + /obj/item/weapon/gun/pistol/mod88 = /obj/item/ammo_magazine/pistol/mod88 + ) + +/obj/effect/spawner/random/gun/pmc_secondary/lowchance + spawn_nothing_percentage = 80 + icon_state = "loot_pistol_20" + +/obj/effect/spawner/random/gun/pmc_secondary/medchance + spawn_nothing_percentage = 50 + icon_state = "loot_pistol_50" + +/obj/effect/spawner/random/gun/pmc_secondary/highchance + spawn_nothing_percentage = 20 + icon_state = "loot_pistol_80" + +/* + * CLF weapons + */ +/obj/effect/spawner/random/gun/clf_primary + name = "CLF primary weapon spawner" + desc = "spawns CLF primary weapons" + mags_max = 2 + mags_min = 1 + guns = list( + /obj/item/weapon/gun/rifle/m16 = /obj/item/ammo_magazine/rifle/m16, + /obj/item/weapon/gun/rifle/mar40/carbine = /obj/item/ammo_magazine/rifle/mar40 + ) + +/obj/effect/spawner/random/gun/clf_primary/lowchance + spawn_nothing_percentage = 80 + icon_state = "loot_rifle_20" + +/obj/effect/spawner/random/gun/clf_primary/midchance + spawn_nothing_percentage = 50 + icon_state = "loot_rifle_50" + +/obj/effect/spawner/random/gun/clf_primary/highchance + spawn_nothing_percentage = 80 + icon_state = "loot_rifle_80" + +/obj/effect/spawner/random/gun/clf_secondary + name = "CLF secondary weapon spawner" + desc = "spawns CLF secondary weapons" + mags_max = 2 + mags_min = 1 + guns = list( + /obj/item/weapon/gun/pistol/kt42 = /obj/item/ammo_magazine/pistol/kt42, + /obj/item/weapon/gun/pistol/b92fs = /obj/item/ammo_magazine/pistol/b92fs + ) + +/obj/effect/spawner/random/gun/clf_secondary/lowchance + spawn_nothing_percentage = 80 + icon_state = "loot_pistol_20" + +/obj/effect/spawner/random/gun/clf_secondary/medchance + spawn_nothing_percentage = 50 + icon_state = "loot_pistol_50" + +/obj/effect/spawner/random/gun/clf_secondary/highchance + spawn_nothing_percentage = 20 + icon_state = "loot_pistol_80" diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index 382b92489baa..77b69f79e86f 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -99,7 +99,7 @@ gibamounts = list(1,1,1) /obj/effect/spawner/gibspawner/human/Initialize(mapload, list/viruses, mob/living/ml, fleshcolor, bloodcolor) - gibdirections = list(alldirs, alldirs, list()) + gibdirections = list(GLOB.alldirs, GLOB.alldirs, list()) . = ..() /obj/effect/spawner/gibspawner/xeno @@ -107,7 +107,7 @@ gibamounts = list(1,1,1) /obj/effect/spawner/gibspawner/xeno/Initialize(mapload, list/viruses, mob/living/ml, fleshcolor, bloodcolor) - gibdirections = list(alldirs, alldirs, list()) + gibdirections = list(GLOB.alldirs, GLOB.alldirs, list()) . = ..() /obj/effect/spawner/gibspawner/robot @@ -116,6 +116,6 @@ gibamounts = list(1,1,1,1,1,1) /obj/effect/spawner/gibspawner/robot/Initialize(mapload, list/viruses, mob/living/ml, fleshcolor, bloodcolor) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, alldirs) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs) gibamounts[6] = pick(0,1,2) . = ..() diff --git a/code/game/objects/effects/spawners/prop_gun_spawner.dm b/code/game/objects/effects/spawners/prop_gun_spawner.dm new file mode 100644 index 000000000000..5e620994e7fb --- /dev/null +++ b/code/game/objects/effects/spawners/prop_gun_spawner.dm @@ -0,0 +1,92 @@ +/obj/effect/spawner/prop_gun //Makes a prop that looks similar to the original gun, for use such as broken guns + name = "prop gun spawner" + icon = 'icons/landmarks.dmi' + icon_state = "prop_gun" + ///The typepath of the gun the prop will copy + var/obj/item/weapon/gun/prop_gun_type = /obj/item/weapon/gun + ///if the prop will have a custom name + var/custom_gun_name + ///if the prob will have a custom desc + var/custom_gun_desc + ///The probability of the prop gun spawning + var/spawn_prob = 100 + +/obj/effect/spawner/prop_gun/Initialize(mapload, ...) + . = ..() + if(!ispath(prop_gun_type, /obj/item/weapon/gun)) + stack_trace("[src] using incorrect typepath, \"[prop_gun_type]\".") //Can't make a prop gun of something not a gun + qdel(src) + return + if(!prob(spawn_prob)) + qdel(src) + return + if(!mapload) + prepare_gun_skin() + return + return INITIALIZE_HINT_ROUNDSTART + +/obj/effect/spawner/prop_gun/LateInitialize() + prepare_gun_skin() + +///Spawns the items and modifies source to set skin on prop +/obj/effect/spawner/prop_gun/proc/prepare_gun_skin() + ///The source, which the skin will be copied from + var/obj/item/weapon/gun/source_gun = new prop_gun_type(src) + if(custom_gun_name) + source_gun.name = custom_gun_name + if(custom_gun_desc) + source_gun.desc = custom_gun_desc + source_gun.pixel_x = pixel_x + source_gun.pixel_y = pixel_y + source_gun.layer = layer + + ///The prop itself, which the skin will be copied to + var/obj/item/prop/prop_gun/prop_gun = new /obj/item/prop/prop_gun(loc) + prop_gun.set_gun_skin(source_gun) + qdel(src) + +/obj/item/prop/prop_gun + name = "prop gun" + desc = "A non-functional gun prop. You should not be able to see this." + icon = 'icons/landmarks.dmi' + icon_state = "prop_gun" + flags_item = TWOHANDED + pickup_sound = "gunequip" + drop_sound = "gunrustle" + pickupvol = 7 + dropvol = 15 + +///Makes the gun look similar to the source, using the source as an atom reference +/obj/item/prop/prop_gun/proc/set_gun_skin(obj/item/weapon/gun/source_gun) + if(!source_gun) + return + name = source_gun.name + desc = source_gun.desc + icon = source_gun.icon + item_icons = source_gun.item_icons + icon_state = source_gun.icon_state + item_state = source_gun.item_state + w_class = source_gun.w_class + flags_equip_slot = source_gun.flags_equip_slot + pixel_x = source_gun.pixel_x + pixel_y = source_gun.pixel_y + layer = source_gun.layer + overlays = source_gun.overlays + +/obj/item/prop/prop_gun/attack_self(mob/user) //Mimic wielding of real guns + . = ..() + if(!(flags_item & TWOHANDED)) + return + if(flags_item & WIELDED) + unwield(user) + else + wield(user) + +/obj/item/prop/prop_gun/dropped(mob/user) + ..() + unwield(user) + +/obj/effect/spawner/prop_gun/m41aMK1 + prop_gun_type = /obj/item/weapon/gun/rifle/m41aMK1 + custom_gun_name = "\improper Broken M41A pulse rifle" + custom_gun_desc = "An older design of the Pulse Rifle commonly used by Colonial Marines. This one has seen better days. The trigger is missing, the barrel is bent, and it no longer appropriately feeds magazines." diff --git a/code/game/objects/effects/spawners/random.dm b/code/game/objects/effects/spawners/random.dm index 7405e01893dd..388e9f289cd7 100644 --- a/code/game/objects/effects/spawners/random.dm +++ b/code/game/objects/effects/spawners/random.dm @@ -57,10 +57,13 @@ icon_state = "atmos" /obj/effect/spawner/random/technology_scanner/item_to_spawn() - return pick(prob(5);/obj/item/device/t_scanner,\ - prob(2);/obj/item/device/radio,\ - prob(5);/obj/item/device/analyzer) - + return pick_weight(list( + "none" = 10, + /obj/item/device/t_scanner = 10, + /obj/item/device/radio = 8, + /obj/item/device/analyzer = 10, + /obj/item/device/black_market_hacking_device = 2, + )) /obj/effect/spawner/random/powercell name = "Random Powercell" @@ -206,7 +209,6 @@ /obj/item/poster,\ /obj/item/toy/bikehorn,\ /obj/item/toy/beach_ball,\ - /obj/item/weapon/banhammer,\ /obj/item/toy/balloon,\ /obj/item/toy/blink,\ /obj/item/toy/crossbow,\ @@ -340,38 +342,37 @@ var/gunpath = pick(guns) var/ammopath if(istype(gunpath, /obj/item/weapon/gun/shotgun)) - ammopath = pick(shotgun_boxes_12g) + ammopath = pick(GLOB.shotgun_boxes_12g) else if(istype(gunpath, /obj/item/weapon/gun/launcher/grenade)) - ammopath = pick(grenade_packets) + ammopath = pick(GLOB.grenade_packets) else ammopath = guns[gunpath] spawn_weapon_on_floor(gunpath, ammopath, rand(mags_min, mags_max)) /obj/effect/spawner/random/gun/proc/spawn_weapon_on_floor(gunpath, ammopath, ammo_amount = 1) - var/atom/spawnloc = src - spawnloc = get_turf(spawnloc) + var/turf/spawnloc = get_turf(src) var/obj/gun var/obj/ammo if(gunpath) gun = new gunpath(spawnloc) if(scatter) - var/direction = pick(alldirs) - var/turf/T = get_step(gun, direction) - if(!T || T.density) + var/direction = pick(GLOB.alldirs) + var/turf/turf = get_step(gun, direction) + if(!turf || turf.density) return - gun.loc = T + gun.forceMove(turf) if(ammopath) for(var/i in 0 to ammo_amount-1) ammo = new ammopath(spawnloc) if(scatter) for(i=0, i\The [src] have been [pick(W.attack_verb)] with \the [W][(user ? "by [user]." : ".")]")) else visible_message(SPAN_DANGER("\The [src] have been attacked with \the [W][(user ? "by [user]." : ".")]")) @@ -38,7 +38,7 @@ health -= damage healthcheck() -/obj/effect/spider/bullet_act(obj/item/projectile/Proj) +/obj/effect/spider/bullet_act(obj/projectile/Proj) ..() health -= Proj.ammo.damage healthcheck() @@ -67,7 +67,7 @@ if(prob(50)) to_chat(mover, SPAN_WARNING("You get stuck in [src] for a moment.")) return BLOCKED_MOVEMENT - else if(istype(mover, /obj/item/projectile)) + else if(istype(mover, /obj/projectile)) if(prob(30)) return BLOCKED_MOVEMENT return NO_BLOCKED_MOVEMENT diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 2499810cbd3f..ab3c248c797f 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -50,7 +50,7 @@ if(ismob(AM)) var/mob/M = AM if(immobilize) - M.canmove = 0 + ADD_TRAIT(M, TRAIT_IMMOBILIZED, STEP_TRIGGER_TRAIT) affecting.Add(AM) while(AM && !stopthrow) @@ -87,7 +87,7 @@ if(ismob(AM)) var/mob/M = AM if(immobilize) - M.canmove = 1 + REMOVE_TRAIT(M, TRAIT_IMMOBILIZED, STEP_TRIGGER_TRAIT) /* Stops things thrown by a thrower, doesn't do anything */ diff --git a/code/game/objects/explosion_recursive.dm b/code/game/objects/explosion_recursive.dm index 1f52901c21a6..2ec61b0cc1f1 100644 --- a/code/game/objects/explosion_recursive.dm +++ b/code/game/objects/explosion_recursive.dm @@ -139,7 +139,7 @@ explosion resistance exactly as much as their health //spread in each ordinal direction var/direction_angle = dir2angle(direction) - for(var/spread_direction in alldirs) + for(var/spread_direction in GLOB.alldirs) var/spread_power = power if(direction) //false if, for example, this turf was the explosion source @@ -149,7 +149,7 @@ explosion resistance exactly as much as their health switch(angle) //this reduces power when the explosion is going around corners if (0) - //no change + pass() if (45) if(spread_power >= 0) spread_power *= 0.75 @@ -325,7 +325,7 @@ explosion resistance exactly as much as their health return if(!direction) - direction = pick(alldirs) + direction = pick(GLOB.alldirs) var/range = min(round(severity/src.w_class * 0.2, 1), 14) if(!direction) range = round( range/2 ,1) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 2edfc3d6ea2b..fcd431c33d26 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -2,6 +2,8 @@ name = "item" icon = 'icons/obj/items/items.dmi' mouse_drag_pointer = MOUSE_ACTIVE_POINTER + layer = ITEM_LAYER + light_system = MOVABLE_LIGHT /// this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite var/image/blood_overlay = null var/randpixel = 6 @@ -154,6 +156,11 @@ var/list/inherent_traits + /// How much to offset the item randomly either way alongside X visually + var/ground_offset_x = 0 + /// How much to offset the item randomly either way alongside Y visually + var/ground_offset_y = 0 + /obj/item/Initialize(mapload, ...) . = ..() @@ -173,6 +180,8 @@ if(flags_item & MOB_LOCK_ON_EQUIP) AddComponent(/datum/component/id_lock) + scatter_item() + /obj/item/Destroy() flags_item &= ~DELONDROP //to avoid infinite loop of unequip, delete, unequip, delete. flags_item &= ~NODROP //so the item is properly unequipped if on a mob. @@ -184,7 +193,7 @@ if(istype(S)) for(var/mob/M in S.can_see_content()) if(M.client) - M.client.screen -= src + M.client.remove_from_screen(src) if(ismob(loc)) dropped(loc) @@ -227,28 +236,28 @@ item, and will change the skin to whatever you specify here. You can also manually override the icon with a unique skin if wanted, for the outlier cases. Override_icon_state should be a list.*/ /obj/item/proc/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) - if(type == expected_type && !istype(src, /obj/item/clothing/suit/storage/marine/fluff) && !istype(src, /obj/item/clothing/head/helmet/marine/fluff) && !istype(src, /obj/item/clothing/under/marine/fluff)) - var/new_icon_state - var/new_protection - var/new_item_state - if(override_icon_state && override_icon_state.len) - new_icon_state = override_icon_state[SSmapping.configs[GROUND_MAP].map_name] - if(override_protection && override_protection.len) - new_protection = override_protection[SSmapping.configs[GROUND_MAP].map_name] - switch(SSmapping.configs[GROUND_MAP].map_name) // maploader TODO: json - if(MAP_ICE_COLONY, MAP_ICE_COLONY_V3, MAP_CORSAT, MAP_SOROKYNE_STRATA) - icon_state = new_icon_state ? new_icon_state : "s_" + icon_state - item_state = new_item_state ? new_item_state : "s_" + item_state - if(MAP_WHISKEY_OUTPOST, MAP_DESERT_DAM, MAP_BIG_RED, MAP_KUTJEVO) - icon_state = new_icon_state ? new_icon_state : "d_" + icon_state - item_state = new_item_state ? new_item_state : "d_" + item_state - if(MAP_PRISON_STATION, MAP_PRISON_STATION_V3, MAP_LV522_CHANCES_CLAIM) - icon_state = new_icon_state ? new_icon_state : "c_" + icon_state - item_state = new_item_state ? new_item_state : "c_" + item_state - if(new_protection) - min_cold_protection_temperature = new_protection - else return + if(type != expected_type) + return + var/new_icon_state + var/new_protection + var/new_item_state + if(override_icon_state && override_icon_state.len) + new_icon_state = override_icon_state[SSmapping.configs[GROUND_MAP].map_name] + if(override_protection && override_protection.len) + new_protection = override_protection[SSmapping.configs[GROUND_MAP].map_name] + switch(SSmapping.configs[GROUND_MAP].camouflage_type) + if("snow") + icon_state = new_icon_state ? new_icon_state : "s_" + icon_state + item_state = new_item_state ? new_item_state : "s_" + item_state + if("desert") + icon_state = new_icon_state ? new_icon_state : "d_" + icon_state + item_state = new_item_state ? new_item_state : "d_" + item_state + if("classic") + icon_state = new_icon_state ? new_icon_state : "c_" + icon_state + item_state = new_item_state ? new_item_state : "c_" + item_state + if(new_protection) + min_cold_protection_temperature = new_protection /obj/item/get_examine_text(mob/user) . = list() @@ -266,8 +275,7 @@ cases. Override_icon_state should be a list.*/ size = "huge" if(SIZE_MASSIVE) size = "massive" - else - . += "This is a [blood_color ? blood_color != "#030303" ? "bloody " : "oil-stained " : ""][icon2html(src, user)][src.name]. It is a [size] item." + . += "This is a [blood_color ? blood_color != COLOR_OIL ? "bloody " : "oil-stained " : ""][icon2html(src, user)][src.name]. It is a [size] item." if(desc) . += desc if(desc_lore) @@ -318,7 +326,7 @@ cases. Override_icon_state should be a list.*/ var/failure = 0 for(var/obj/item/I in src.loc) - if(!S.can_be_inserted(I, TRUE)) + if(!S.can_be_inserted(I, user, stop_messages = TRUE)) failure = 1 continue success = 1 @@ -330,7 +338,7 @@ cases. Override_icon_state should be a list.*/ else to_chat(user, SPAN_NOTICE("You fail to pick anything up with [S].")) - else if(S.can_be_inserted(src)) + else if(S.can_be_inserted(src, user)) S.handle_item_insertion(src, FALSE, user) return @@ -356,6 +364,7 @@ cases. Override_icon_state should be a list.*/ qdel(src) SEND_SIGNAL(src, COMSIG_ITEM_DROPPED, user) + SEND_SIGNAL(user, COMSIG_MOB_ITEM_DROPPED, src) if(drop_sound && (src.loc?.z)) playsound(src, drop_sound, dropvol, drop_vary) src.do_drop_animation(user) @@ -366,6 +375,7 @@ cases. Override_icon_state should be a list.*/ /obj/item/proc/pickup(mob/user, silent) SHOULD_CALL_PARENT(TRUE) SEND_SIGNAL(src, COMSIG_ITEM_PICKUP, user) + SEND_SIGNAL(user, COMSIG_MOB_PICKUP_ITEM, src) setDir(SOUTH)//Always rotate it south. This resets it to default position, so you wouldn't be putting things on backwards if(pickup_sound && !silent && src.loc?.z) playsound(src, pickup_sound, pickupvol, pickup_vary) @@ -456,27 +466,32 @@ cases. Override_icon_state should be a list.*/ /obj/item/proc/item_action_slot_check(mob/user, slot) return TRUE +/obj/item/proc/scatter_item() + if(!pixel_x && !pixel_y) + pixel_x = rand(-ground_offset_x, ground_offset_x) + pixel_y = rand(-ground_offset_y, ground_offset_y) + // The mob M is attempting to equip this item into the slot passed through as 'slot'. return TRUE if it can do this and 0 if it can't. // If you are making custom procs but would like to retain partial or complete functionality of this one, include a 'return ..()' to where you want this to happen. // Set disable_warning to TRUE if you wish it to not give you outputs. // warning_text is used in the case that you want to provide a specific warning for why the item cannot be equipped. -/obj/item/proc/mob_can_equip(mob/M, slot, disable_warning = FALSE) +/obj/item/proc/mob_can_equip(mob/equipping_mob, slot, disable_warning = FALSE) if(!slot) return FALSE - if(!M) + if(!equipping_mob) return FALSE - if(SEND_SIGNAL(src, COMSIG_ITEM_ATTEMPTING_EQUIP, M) & COMPONENT_CANCEL_EQUIP) + if(SEND_SIGNAL(src, COMSIG_ITEM_ATTEMPTING_EQUIP, equipping_mob, slot) & COMPONENT_CANCEL_EQUIP) return FALSE - if(ishuman(M)) + if(ishuman(equipping_mob)) //START HUMAN - var/mob/living/carbon/human/H = M + var/mob/living/carbon/human/human = equipping_mob var/list/mob_equip = list() - if(H.hud_used && H.hud_used.equip_slots) - mob_equip = H.hud_used.equip_slots + if(human.hud_used && human.hud_used.equip_slots) + mob_equip = human.hud_used.equip_slots - if(H.species && !(slot in mob_equip)) + if(human.species && !(slot in mob_equip)) return FALSE if(uniform_restricted) @@ -487,136 +502,136 @@ cases. Override_icon_state should be a list.*/ required_clothing += initial(restriction_type.name) // You can't replace this with a switch(), flags_equip_slot is a bitfield if(valid_equip_slots & SLOT_ICLOTHING) - if(istype(H.w_uniform, restriction_type)) + if(istype(human.w_uniform, restriction_type)) restriction_satisfied = TRUE break if(valid_equip_slots & SLOT_OCLOTHING) - if(istype(H.wear_suit, restriction_type)) + if(istype(human.wear_suit, restriction_type)) restriction_satisfied = TRUE break if(!restriction_satisfied) if(!disable_warning) - to_chat(H, SPAN_WARNING("You cannot wear this without wearing one of the following; [required_clothing.Join(", ")].")) + to_chat(human, SPAN_WARNING("You cannot wear this without wearing one of the following; [required_clothing.Join(", ")].")) return FALSE switch(slot) if(WEAR_L_HAND) - if(H.l_hand) + if(human.l_hand) return FALSE - if(H.lying) - to_chat(H, SPAN_WARNING("You can't equip that while lying down.")) + if(human.body_position == LYING_DOWN) + to_chat(human, SPAN_WARNING("You can't equip that while lying down.")) return return TRUE if(WEAR_R_HAND) - if(H.r_hand) + if(human.r_hand) return FALSE - if(H.lying) - to_chat(H, SPAN_WARNING("You can't equip that while lying down.")) + if(human.body_position == LYING_DOWN) + to_chat(human, SPAN_WARNING("You can't equip that while lying down.")) return return TRUE if(WEAR_FACE) - if(H.wear_mask) + if(human.wear_mask) return FALSE if(!(flags_equip_slot & SLOT_FACE)) return FALSE return TRUE if(WEAR_BACK) - if(H.back) + if(human.back) return FALSE if(!(flags_equip_slot & SLOT_BACK)) return FALSE return TRUE if(WEAR_JACKET) - if(H.wear_suit) + if(human.wear_suit) return FALSE if(!(flags_equip_slot & SLOT_OCLOTHING)) return FALSE return TRUE if(WEAR_HANDS) - if(H.gloves) + if(human.gloves) return FALSE if(!(flags_equip_slot & SLOT_HANDS)) return FALSE return TRUE if(WEAR_FEET) - if(H.shoes) + if(human.shoes) return FALSE if(!(flags_equip_slot & SLOT_FEET)) return FALSE return TRUE if(WEAR_WAIST) - if(H.belt) + if(human.belt) return FALSE - if(!H.w_uniform && (WEAR_BODY in mob_equip)) + if(!human.w_uniform && (WEAR_BODY in mob_equip)) if(!disable_warning) - to_chat(H, SPAN_WARNING("You need a jumpsuit before you can attach this [name].")) + to_chat(human, SPAN_WARNING("You need a jumpsuit before you can attach this [name].")) return FALSE if(!(flags_equip_slot & SLOT_WAIST)) return return TRUE if(WEAR_EYES) - if(H.glasses) + if(human.glasses) return FALSE if(!(flags_equip_slot & SLOT_EYES)) return FALSE return TRUE if(WEAR_HEAD) - if(H.head) + if(human.head) return FALSE if(!(flags_equip_slot & SLOT_HEAD)) return FALSE return TRUE if(WEAR_L_EAR) - if(H.wear_l_ear) + if(human.wear_l_ear) return FALSE if(HAS_TRAIT(src, TRAIT_ITEM_EAR_EXCLUSIVE)) - if(H.wear_r_ear && HAS_TRAIT(H.wear_r_ear, TRAIT_ITEM_EAR_EXCLUSIVE)) + if(human.wear_r_ear && HAS_TRAIT(human.wear_r_ear, TRAIT_ITEM_EAR_EXCLUSIVE)) if(!disable_warning) - to_chat(H, SPAN_WARNING("You can't wear [src] while you have [H.wear_r_ear] in your right ear!")) + to_chat(human, SPAN_WARNING("You can't wear [src] while you have [human.wear_r_ear] in your right ear!")) return FALSE if(!(flags_equip_slot & SLOT_EAR)) return FALSE return TRUE if(WEAR_R_EAR) - if(H.wear_r_ear) + if(human.wear_r_ear) return FALSE if(HAS_TRAIT(src, TRAIT_ITEM_EAR_EXCLUSIVE)) - if(H.wear_l_ear && HAS_TRAIT(H.wear_l_ear, TRAIT_ITEM_EAR_EXCLUSIVE)) + if(human.wear_l_ear && HAS_TRAIT(human.wear_l_ear, TRAIT_ITEM_EAR_EXCLUSIVE)) if(!disable_warning) - to_chat(H, SPAN_WARNING("You can't wear [src] while you have [H.wear_l_ear] in your left ear!")) + to_chat(human, SPAN_WARNING("You can't wear [src] while you have [human.wear_l_ear] in your left ear!")) return FALSE if(!(flags_equip_slot & SLOT_EAR)) return FALSE return TRUE if(WEAR_BODY) - if(H.w_uniform) + if(human.w_uniform) return FALSE if(!(flags_equip_slot & SLOT_ICLOTHING)) return FALSE return TRUE if(WEAR_ID) - if(H.wear_id) + if(human.wear_id) return FALSE if(!(flags_equip_slot & SLOT_ID)) return FALSE return TRUE if(WEAR_L_STORE) - if(H.l_store) + if(human.l_store) return FALSE - if(!H.w_uniform && (WEAR_BODY in mob_equip)) + if(!human.w_uniform && (WEAR_BODY in mob_equip)) if(!disable_warning) - to_chat(H, SPAN_WARNING("You need a jumpsuit before you can attach this [name].")) + to_chat(human, SPAN_WARNING("You need a jumpsuit before you can attach this [name].")) return FALSE if(flags_equip_slot & SLOT_NO_STORE) return FALSE if(w_class <= SIZE_SMALL || (flags_equip_slot & SLOT_STORE)) return TRUE if(WEAR_R_STORE) - if(H.r_store) + if(human.r_store) return FALSE - if(!H.w_uniform && (WEAR_BODY in mob_equip)) + if(!human.w_uniform && (WEAR_BODY in mob_equip)) if(!disable_warning) - to_chat(H, SPAN_WARNING("You need a jumpsuit before you can attach this [name].")) + to_chat(human, SPAN_WARNING("You need a jumpsuit before you can attach this [name].")) return FALSE if(flags_equip_slot & SLOT_NO_STORE) return FALSE @@ -624,107 +639,107 @@ cases. Override_icon_state should be a list.*/ return TRUE return FALSE if(WEAR_ACCESSORY) - for(var/obj/item/clothing/C in H.contents) - if(C.can_attach_accessory(src)) + for(var/obj/item/clothing/clothes in human.contents) + if(clothes.can_attach_accessory(src)) return TRUE return FALSE if(WEAR_J_STORE) - if(H.s_store) + if(human.s_store) return FALSE if(flags_equip_slot & SLOT_SUIT_STORE) return TRUE - if(!H.wear_suit && (WEAR_JACKET in mob_equip)) + if(flags_equip_slot & SLOT_BLOCK_SUIT_STORE) + return FALSE + if(!human.wear_suit && (WEAR_JACKET in mob_equip)) if(!disable_warning) - to_chat(H, SPAN_WARNING("You need a suit before you can attach this [name].")) + to_chat(human, SPAN_WARNING("You need a suit before you can attach this [name].")) return FALSE - if(H.wear_suit && !H.wear_suit.allowed) + if(human.wear_suit && !human.wear_suit.allowed) if(!disable_warning) to_chat(usr, "You somehow have a suit with no defined allowed items for suit storage, stop that.") return FALSE - if(H.wear_suit && is_type_in_list(src, H.wear_suit.allowed)) + if(human.wear_suit && is_type_in_list(src, human.wear_suit.allowed)) return TRUE return FALSE if(WEAR_HANDCUFFS) - if(H.handcuffed) + if(human.handcuffed) return FALSE if(!istype(src, /obj/item/handcuffs)) return FALSE return TRUE if(WEAR_LEGCUFFS) - if(H.legcuffed) + if(human.legcuffed) return FALSE if(!istype(src, /obj/item/legcuffs)) return FALSE return TRUE if(WEAR_IN_ACCESSORY) - if(H.w_uniform) - for(var/A in H.w_uniform.accessories) - if(istype(A, /obj/item/clothing/accessory/storage)) - var/obj/item/clothing/accessory/storage/S = A - if(S.hold.can_be_inserted(src, TRUE)) + if(human.w_uniform) + for(var/accessory in human.w_uniform.accessories) + if(istype(accessory, /obj/item/clothing/accessory/storage)) + var/obj/item/clothing/accessory/storage/holster = accessory + if(holster.hold.can_be_inserted(src, human, TRUE)) return TRUE - else if(istype(A, /obj/item/storage/internal/accessory/holster)) - var/obj/item/storage/internal/accessory/holster/AH = A - if(!(AH.current_gun) && AH.can_be_inserted(src)) + else if(istype(accessory, /obj/item/storage/internal/accessory/holster)) + var/obj/item/storage/internal/accessory/holster/internal_storage = accessory + if(!(internal_storage.current_gun) && internal_storage.can_be_inserted(src, human)) return TRUE return FALSE if(WEAR_IN_JACKET) - if(H.wear_suit) - var/obj/item/clothing/suit/storage/S = H.wear_suit - if(istype(S) && S.pockets)//not all suits have pockits - var/obj/item/storage/internal/I = S.pockets - if(I.can_be_inserted(src,1)) + if(human.wear_suit) + var/obj/item/clothing/suit/storage/storage = human.wear_suit + if(istype(storage) && storage.pockets)//not all suits have pockits + var/obj/item/storage/internal/internal_storage = storage.pockets + if(internal_storage.can_be_inserted(src, human, TRUE)) return TRUE return FALSE if(WEAR_IN_HELMET) - if(H.head) - var/obj/item/clothing/head/helmet/marine/HM = H.head - if(istype(HM) && HM.pockets)//not all helmuts have pockits - var/obj/item/storage/internal/I = HM.pockets - if(I.can_be_inserted(src,TRUE)) + if(human.head) + var/obj/item/clothing/head/helmet/marine/helmet = human.head + if(istype(helmet) && helmet.pockets)//not all helmuts have pockits + var/obj/item/storage/internal/internal_storage = helmet.pockets + if(internal_storage.can_be_inserted(src, human, TRUE)) return TRUE if(WEAR_IN_BACK) - if (H.back && isstorage(H.back)) - var/obj/item/storage/B = H.back - if(B.can_be_inserted(src, 1)) + if (human.back && isstorage(human.back)) + var/obj/item/storage/backpack = human.back + if(backpack.can_be_inserted(src, human, TRUE)) return TRUE return FALSE if(WEAR_IN_SHOES) - if(H.shoes && istype(H.shoes, /obj/item/clothing/shoes)) - var/obj/item/clothing/shoes/S = H.shoes - if(!S.stored_item && S.items_allowed && S.items_allowed.len) - for (var/i in S.items_allowed) - if(istype(src, i)) - return TRUE + if(human.shoes && istype(human.shoes, /obj/item/clothing/shoes)) + var/obj/item/clothing/shoes/shoes = human.shoes + if(shoes.can_be_inserted(src)) + return TRUE return FALSE if(WEAR_IN_SCABBARD) - if(H.back && istype(H.back, /obj/item/storage/large_holster)) - var/obj/item/storage/large_holster/B = H.back - if(B.can_be_inserted(src, 1)) + if(human.back && istype(human.back, /obj/item/storage/large_holster)) + var/obj/item/storage/large_holster/backpack = human.back + if(backpack.can_be_inserted(src, human, TRUE)) return TRUE return FALSE if(WEAR_IN_BELT) - if(H.belt && isstorage(H.belt)) - var/obj/item/storage/B = H.belt - if(B.can_be_inserted(src, 1)) + if(human.belt && isstorage(human.belt)) + var/obj/item/storage/belt = human.belt + if(belt.can_be_inserted(src, human, TRUE)) return TRUE return FALSE if(WEAR_IN_J_STORE) - if(H.s_store && isstorage(H.s_store)) - var/obj/item/storage/B = H.s_store - if(B.can_be_inserted(src, 1)) + if(human.s_store && isstorage(human.s_store)) + var/obj/item/storage/armor = human.s_store + if(armor.can_be_inserted(src, human, TRUE)) return TRUE return FALSE if(WEAR_IN_L_STORE) - if(H.l_store && istype(H.l_store, /obj/item/storage/pouch)) - var/obj/item/storage/pouch/P = H.l_store - if(P.can_be_inserted(src, 1)) + if(human.l_store && istype(human.l_store, /obj/item/storage/pouch)) + var/obj/item/storage/pouch/pouch = human.l_store + if(pouch.can_be_inserted(src, human, TRUE)) return TRUE return FALSE if(WEAR_IN_R_STORE) - if(H.r_store && istype(H.r_store, /obj/item/storage/pouch)) - var/obj/item/storage/pouch/P = H.r_store - if(P.can_be_inserted(src, 1)) + if(human.r_store && istype(human.r_store, /obj/item/storage/pouch)) + var/obj/item/storage/pouch/pouch = human.r_store + if(pouch.can_be_inserted(src, human, TRUE)) return TRUE return FALSE return FALSE //Unsupported slot @@ -781,7 +796,7 @@ cases. Override_icon_state should be a list.*/ /obj/item/proc/showoff(mob/user) - var/list/viewers = get_mobs_in_view(world_view_size, user) + var/list/viewers = get_mobs_in_view(GLOB.world_view_size, user) user.langchat_speech("holds up [src].", viewers, GLOB.all_languages, skip_language_check = TRUE, animation_style = LANGCHAT_FAST_POP, additional_styles = list("langchat_small", "emote")) for (var/mob/M in viewers) M.show_message("[user] holds up [src]. Take a closer look.", SHOW_MESSAGE_VISIBLE) @@ -819,6 +834,8 @@ cases. Override_icon_state should be a list.*/ unzoom(user) /obj/item/proc/unzoom(mob/living/user) + if(user.interactee == src) + user.unset_interaction() var/zoom_device = zoomdevicename ? "\improper [zoomdevicename] of [src]" : "\improper [src]" INVOKE_ASYNC(user, TYPE_PROC_REF(/atom, visible_message), SPAN_NOTICE("[user] looks up from [zoom_device]."), SPAN_NOTICE("You look up from [zoom_device].")) @@ -829,11 +846,12 @@ cases. Override_icon_state should be a list.*/ UnregisterSignal(src, list( COMSIG_ITEM_DROPPED, COMSIG_ITEM_UNWIELD, + COMSIG_PARENT_QDELETING, )) UnregisterSignal(user, COMSIG_MOB_MOVE_OR_LOOK) //General reset in case anything goes wrong, the view will always reset to default unless zooming in. if(user.client) - user.client.change_view(world_view_size, src) + user.client.change_view(GLOB.world_view_size, src) user.client.pixel_x = 0 user.client.pixel_y = 0 @@ -861,6 +879,7 @@ cases. Override_icon_state should be a list.*/ RegisterSignal(src, list( COMSIG_ITEM_DROPPED, COMSIG_ITEM_UNWIELD, + COMSIG_PARENT_QDELETING, ), PROC_REF(unzoom_dropped_callback)) RegisterSignal(user, COMSIG_MOB_MOVE_OR_LOOK, PROC_REF(zoom_handle_mob_move_or_look)) @@ -902,9 +921,10 @@ cases. Override_icon_state should be a list.*/ mob_state += GLOB.slot_to_contained_sprite_shorthand[slot] return mob_state -/obj/item/proc/drop_to_floor(mob/wearer) +/obj/item/proc/drop_to_floor(mob/wearer, body_position) SIGNAL_HANDLER - wearer.drop_inv_item_on_ground(src) + if(body_position == LYING_DOWN) + wearer.drop_inv_item_on_ground(src) // item animatzionen @@ -1064,3 +1084,7 @@ cases. Override_icon_state should be a list.*/ animate(attack_image, alpha = 175, transform = copy_transform.Scale(0.75), pixel_x = 0, pixel_y = 0, pixel_z = 0, time = 3) animate(time = 1) animate(alpha = 0, time = 3, easing = CIRCULAR_EASING|EASE_OUT) + +///Called by /mob/living/carbon/swap_hand() when hands are swapped +/obj/item/proc/hands_swapped(mob/living/carbon/swapper_of_hands) + return diff --git a/code/game/objects/items/XMAS.dm b/code/game/objects/items/XMAS.dm index 4b7bca2fb319..b10ea2035d96 100644 --- a/code/game/objects/items/XMAS.dm +++ b/code/game/objects/items/XMAS.dm @@ -66,7 +66,7 @@ gift_type = pick( /obj/item/weapon/gun/revolver/mateba, /obj/item/weapon/gun/pistol/heavy, - /obj/item/weapon/claymore, + /obj/item/weapon/sword, /obj/item/weapon/energy/sword/green, /obj/item/weapon/energy/sword/red, /obj/item/attachable/heavy_barrel, diff --git a/code/game/objects/items/backpack_sprayers.dm b/code/game/objects/items/backpack_sprayers.dm index 09f620c345d5..427a1dd597c7 100644 --- a/code/game/objects/items/backpack_sprayers.dm +++ b/code/game/objects/items/backpack_sprayers.dm @@ -8,6 +8,7 @@ w_class = SIZE_LARGE flags_equip_slot = SLOT_BACK flags_atom = OPENCONTAINER + possible_transfer_amounts = null//no point giving it possibility when mister can't it just confuse people volume = 500 var/fill_reagent = "water" var/spawn_empty = FALSE @@ -83,8 +84,10 @@ /obj/item/reagent_container/glass/watertank/verb/toggle_mister_verb() set name = "Toggle Mister" set category = "Object" + set src in usr toggle_mister(usr) + /obj/item/reagent_container/glass/watertank/MouseDrop(obj/over_object as obj) if(!CAN_PICKUP(usr, src)) return ..() @@ -132,7 +135,7 @@ item_state = "nozzle" w_class = SIZE_LARGE flags_equip_slot = null - amount_per_transfer_from_this = 50 + amount_per_transfer_from_this = 5 possible_transfer_amounts = null spray_size = 5 volume = 500 diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 55f3c32cebba..3b84d2433e88 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -122,25 +122,27 @@ /obj/structure/closet/bodybag/store_mobs(stored_units) // overriding this var/list/dead_mobs = list() - for(var/mob/living/M in loc) - if(M.buckled) + for(var/mob/living/mob in loc) + if(mob.buckled) continue - if(M.stat != DEAD) // covers alive mobs + if(mob.stat != DEAD) // covers alive mobs continue - if(!ishuman(M)) // all the dead other shit - dead_mobs += M + if(!ishuman(mob)) // all the dead other shit + dead_mobs += mob continue - var/mob/living/carbon/human/H = M - if(H.check_tod() || issynth(H) || H.is_revivable() && H.get_ghost()) // revivable + var/mob/living/carbon/human/human = mob + if(issynth(human)) continue - dead_mobs += M + if(human.check_tod() && human.is_revivable()) // revivable + continue + dead_mobs += mob var/mob/living/mob_to_store if(dead_mobs.len) mob_to_store = pick(dead_mobs) mob_to_store.forceMove(src) stored_units += mob_size - for(var/obj/item/limb/L in loc) - L.forceMove(src) + for(var/obj/item/limb/limb in loc) + limb.forceMove(src) return stored_units /obj/structure/closet/bodybag/attack_hand(mob/living/user) diff --git a/code/game/objects/items/books/manuals.dm b/code/game/objects/items/books/manuals.dm index ba2a30c35c7d..3140d0e30ca9 100644 --- a/code/game/objects/items/books/manuals.dm +++ b/code/game/objects/items/books/manuals.dm @@ -8,6 +8,7 @@ /// 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified unique = 1 + /obj/item/book/manual/engineering_construction name = "Station Repairs and Construction" icon_state ="bookEngineering" @@ -28,161 +29,6 @@ "} -/obj/item/book/manual/engineering_particle_accelerator - name = "Particle Accelerator User's Guide" - icon_state ="bookParticleAccelerator" - author = "Engineering Encyclopedia" - title = "Particle Accelerator User's Guide" - - dat = {" - - - - - -

        Experienced User's Guide

        - -

        Setting up the accelerator

        - -
          -
        1. Wrench all pieces to the floor
        2. -
        3. Add wires to all the pieces
        4. -
        5. Close all the panels with your screwdriver
        6. -
        - -

        Using the accelerator

        - -
          -
        1. Open the control panel
        2. -
        3. Set the speed to 2
        4. -
        5. Start firing at the singularity generator
        6. -
        7. When the singularity reaches a large enough size so it starts moving on it's own set the speed down to 0, but don't shut it off
        8. -
        9. Remember to wear a radiation suit when working with this machine... we did tell you that at the start, right?
        10. -
        - - - - "} - - -/obj/item/book/manual/supermatter_engine - name = "Supermatter Engine User's Guide" - icon_state = "bookSupermatter" - author = "Waleed Asad" - title = "Supermatter Engine User's Guide" - - dat = {" - - - - -
        - Engineering notes on the single-stage supermatter engine,
        - -Waleed Asad

        - - Station,
        - Exodus

        - - A word of caution, do not enter the engine room for any reason without radiation protection and meson scanners on. The status of the engine may be unpredictable even when you believe it is 'off.' This is an important level of personal protection.

        - - The engine has two basic modes of functionality. It has been observed that it is capable of both a safe level of operation and a modified, high output mode.

        - -

        Heat-Primary Mode

        - Notes on starting the basic function mode -
          -
        1. Prepare collector arrays: As is standard, begin by wrenching them down, filling six plasma tanks with a plasma canister, and inserting the tank into the collectors one by one. Finally, initialize each collector.
        2. - -
        3. Prepare gas system: Before introducing any gas into the supermatter engine room, it is important to remember the small, but vital steps to preparing this section. First, set the input gas pump and output gas flow pump to 4500 kPa, or maximum flow. Second, switch the digital switching valve into the 'up' position, so the green light is on north side of the valve, in order to circulate the gas back toward the coolers and collectors.
        4. - -
        5. Apply N2 gas: Retrieve the two N2 canisters from storage and bring them to the engine room. Attach one of them to the input section of the engine gas system located next to the collectors. Keep it attached until the N2 pressure is low enough to turn the canister light red. Replace it with the second canister to keep N2 pressure at optimal levels.
        6. - -
        7. Open supermatter shielding: This button is located in the engine room, to the left of the engine monitoring room blast doors. At this point, the supermatter chamber is mostly a gas mixture of N2 and is producing no radiation. It is considered 'safe' up until this point. Do not forget radiation shielding and meson scanners.
        8. - -
        9. Begin primary emitter burst series: Begin by firing four shots into the supermatter using the emitter. It is important to move to this step quickly. The onboard SMES units may not have enough power to run the emitters if left alone too long on-station. This engine can produce enough power on its own to run the entire station, ignoring the SMES units completely, and is wired to do so.
        10. - -
        11. Switch SMES units to primary settings: Maximize input and set the devices to automatically charge, additionally turn their outputs on if they are off unless power is to be saved (Which can be useful in case of later failures).
        12. - -
        13. Begin secondary emitter burst series: Before firing the emitter again, check the power in the line with a multimeter (Do not forget electrical gloves). The engine is running at high efficiency when the value exceeds 200,000 power units.
        14. - -
        15. Maintain engine power: When power in the lines get low, add an additional emitter burst series to bring power to normal levels.
        16. -
        - - -

        O2-Reaction Mode

        - - The second mode for running the engine uses a gas mixture to produce a reaction within the supermatter. This mode requires the CE's or Atmospheric's help to set up. This is called 'O2-Reaction Mode.'

        - - THIS MODE CAN CAUSE A RUNAWAY REACTION, LEADING TO CATASTROPHIC FAILURE IF NOT MAINTAINED. NEVER FORGET ABOUT THE ENGINE IN THIS MODE.

        - - Additionally, this mode can be used for what is called a 'Cold Start.' If the station has no power in the SMES to run the emitters, using this mode will allow enough power output to run them, and quickly reach an acceptable level of power output.

        - -
          -
        1. Prepare collector arrays: As is standard, begin by wrenching them down, filling six plasma tanks with a plasma canister, and inserting the tank into the collectors one by one. Finally, initialize each collector.
        2. - -
        3. Prepare gas system: Before introducing any gas into the supermatter engine room, it is important to remember the small, but vital steps to preparing this section. First, set the input gas pump and output gas flow pump to 4500 kPa, or maximum flow. Second, switch the digital switching valve into the 'up' position, so the green light is on north side of the valve, in order to circulate the gas back toward the coolers and collectors.
        4. - -
        5. Modify the engine room filters: Unlike the Heat-Primary Mode, it is important to change the filters attached to the gas system to stop filtering O2, and start filtering carbon molecules. O2-Reaction Mode produces far more plasma than Heat-Primary, therefore filtering it off is essential.
        6. - -
        7. Switch SMES units to primary settings: Maximize input and set the devices to automatically charge, additionally turn their outputs on if they are off unless power is to be saved (Which can be useful in case of later failures). If you check the power in the system lines at this point, you will find that it is constantly going up. Indeed, with just the addition of O2 to the supermatter, it will begin outputting power.
        8. - -
        9. Begin primary emitter burst series: Begin by firing four shots into the supermatter using the emitter. Do not over power the supermatter. The reaction is self sustaining and propagating. As long as O2 is in the chamber, it will continue outputting MORE power.
        10. - -
        11. Maintain follow up operations: Remember to check the temperature of the core gas and switch to the Heat-Primary function, or vent the core room when problems begin if required.
        12. -

        - -

        Notes on Supermatter Reaction Function and Drawbacks

        - - After several hours of observation, an interesting phenomenon was witnessed. The supermatter undergoes a constant, self-sustaining reaction when given an extremely high O2 concentration. Anything about 80% or higher typically will cause this reaction. The supermatter will continue to react whenever this gas mixture is in the same room as the supermatter.

        - - To understand why O2-Reaction mode is dangerous, the core principle of the supermatter must be understood. The supermatter emits three things when 'not safe,' that is any time it is giving off power. These things are:
        - -
          -
        • Radiation (which is converted into power by the collectors)

        • -
        • Heat (which is removed via the gas exchange system and coolers)

        • -
        • External gas (in the form of plasma and O2)

        • -

        - - When in Heat-Primary mode, far more heat and plasma are produced than radiation. In O2-Reaction mode, very little heat and only moderate amounts of plasma are produced, however HUGE amounts of energy leaving the supermatter is in the form of radiation.

        - - The O2-Reaction engine mode has a single drawback which has been eluded to more than once so far and that is very simple. The engine room will continue to grow hotter as the constant reaction continues. Eventually, there will be what is called a 'critical gas mixture.' This is the point at which the constant adding of plasma to the mixture of air around the supermatter changes the gas concentration to below the tolerance. When this happens, two things occur. First, the supermatter switches to its primary mode of operation wherein huge amounts of heat are produced by the engine rather than low amounts with high power output. Second, an uncontrollable increase in heat within the supermatter chamber will occur. This will lead to a spark-up, igniting the plasma in the supermatter chamber, wildly increasing both pressure and temperature.

        - - While the O2-Reaction mode is dangerous, it does produce heavy amounts of energy. Consider using this mode only in short amounts to fill the SMES, and switch back later in the shift to keep things flowing normally.

        - - -

        Notes on Supermatter Containment and Emergency Procedures

        - - While a constant vigil on the supermatter is not required, regular checkups are important. Check the temperature of gas leaving the supermatter chamber for unsafe levels and ensure that the plasma in the chamber is at a safe concentration. Of course, also make sure the chamber is not on fire. A fire in the core chamber is very difficult to put out. As any toxin scientist can tell you, even low amounts of plasma can burn at very high temperatures. This burning creates a huge increase in pressure and more importantly, temperature of the crystal itself.

        - - The supermatter is strong, but not invincible. When the supermatter is heated too much, its crystal structure will attempt to liquefy. The change in atomic structure of the supermatter leads to a single reaction, a massive explosion. The computer chip attached to the supermatter core will warn the station when stability is threatened. It will then offer a second warning, when things have become dangerously close to total destruction of the core.

        - - Located both within the CE office and engine room is the engine ventilatory control button. This button allows the core vent controls to be accessed, venting the room to space. Remember however, that this process takes time. If a fire is raging, and the pressure is higher than fathomable, it will take a great deal of time to vent the room. Also located in the CE's office is the emergency core eject button. A new core can be ordered from cargo. It is often not worth the lives of the crew to hold on to it, not to mention the structural damage. However, if by some mistake the supermatter is pushed off or removed from the mass driver it sits on, manual reposition will be required. Which is very dangerous and often leads to death.

        - - The supermatter is extremely dangerous. More dangerous than people give it credit for. It can destroy you in an instant, without hesitation, reducing you to a pile of dust. When working closely with supermatter, it is suggested to get a genetic backup and do not wear any items of value to you. The supermatter core can be pulled if grabbed properly by the base, but pushing is not possible.

        - - -

        In Closing

        - - Remember that the supermatter is dangerous, and the core is dangerous still. Venting the core room is always an option if you are even remotely worried, utilizing Atmospherics to properly ready the room once more for core function. It is always a good idea to check up regularly on the temperature of gas leaving the chamber, as well as the power in the system lines. Lastly, once again remember, never touch the supermatter with anything. Ever.

        - - -Waleed Asad, Senior Engine Technician - - "} - /obj/item/book/manual/engineering_hacking name = "Hacking" icon_state ="bookHacking" @@ -203,150 +49,6 @@ "} -/obj/item/book/manual/engineering_singularity_safety - name = "Singularity Safety in Special Circumstances" - icon_state ="bookEngineeringSingularitySafety" - author = "Engineering Encyclopedia" - title = "Singularity Safety in Special Circumstances" - - dat = {" - - - - -

        Singularity Safety in Special Circumstances

        - -

        Power outage

        - - A power problem has made the entire station lose power? Could be station-wide wiring problems or syndicate power sinks. In any case follow these steps: - -
          -
        1. PANIC!
        2. -
        3. Get your ass over to engineering! QUICKLY!!!
        4. -
        5. Get to the Area Power Controller which controls the power to the emitters.
        6. -
        7. Swipe it with your ID card - if it doesn't unlock, continue with step 15.
        8. -
        9. Open the console and disengage the cover lock.
        10. -
        11. Pry open the APC with a Crowbar.
        12. -
        13. Take out the empty power cell.
        14. -
        15. Put in the new, full power cell - if you don't have one, continue with step 15.
        16. -
        17. Quickly put on a Radiation suit.
        18. -
        19. Check if the singularity field generators withstood the down-time - if they didn't, continue with step 15.
        20. -
        21. Since disaster was averted you now have to ensure it doesn't repeat. If it was a powersink which caused it and if the engineering APC is wired to the same powernet, which the powersink is on, you have to remove the piece of wire which links the APC to the powernet. If it wasn't a powersink which caused it, then skip to step 14.
        22. -
        23. Grab your crowbar and pry away the tile closest to the APC.
        24. -
        25. Use the wirecutters to cut the wire which is connecting the grid to the terminal.
        26. -
        27. Go to the bar and tell the guys how you saved them all. Stop reading this guide here.
        28. -
        29. GET THE FUCK OUT OF THERE!!!
        30. -
        - -

        Shields get damaged

        - -
          -
        1. GET THE FUCK OUT OF THERE!!! FORGET THE WOMEN AND CHILDREN, SAVE YOURSELF!!!
        2. -
        - - - "} - -/obj/item/book/manual/medical_cloning - name = "Cloning Techniques of the 26th Century" - icon_state ="bookCloning" - author = "Medical Journal, volume 3" - title = "Cloning Techniques of the 26th Century" - - dat = {" - - - - - -

        How to Clone People

        - So there are 50 dead people lying on the floor, chairs are spinning like no tomorrow and you haven't the foggiest idea of what to do? Not to worry! - This guide is intended to teach you how to clone people and how to do it right, in a simple, step-by-step process! If at any point of the guide you have a mental meltdown, - genetics probably isn't for you and you should get a job-change as soon as possible before you're sued for malpractice. - -
          -
        1. Acquire body
        2. -
        3. Strip body
        4. -
        5. Put body in cloning machine
        6. -
        7. Scan body
        8. -
        9. Clone body
        10. -
        11. Get clean Structural Enzymes for the body
        12. -
        13. Put body in morgue
        14. -
        15. Await cloned body
        16. -
        17. Cryo and use the clean SE injector
        18. -
        19. Give person clothes back
        20. -
        21. Send person on their way
        22. -
        - -

        Step 1: Acquire body

        - This is pretty much vital for the process because without a body, you cannot clone it. Usually, bodies will be brought to you, so you do not need to worry so much about this step. If you already have a body, great! Move on to the next step. - -

        Step 2: Strip body

        - The cloning machine does not like abiotic items. What this means is you can't clone anyone if they're wearing clothes or holding things, so take all of it off. If it's just one person, it's courteous to put their possessions in the closet. - If you have about seven people awaiting cloning, just leave the piles where they are, but don't mix them around and for God's sake don't let people in to steal them. - -

        Step 3: Put body in cloning machine

        - Grab the body and then put it inside the DNA modifier. If you cannot do this, then you messed up at Step 2. Go back and check you took EVERYTHING off - a commonly missed item is their headset. - -

        Step 4: Scan body

        - Go onto the computer and scan the body by pressing 'Scan - <Subject Name Here>.' If you're successful, they will be added to the records (note that this can be done at any time, even with living people, - so that they can be cloned without a body in the event that they are lying dead on port solars and didn't turn on their suit sensors)! - If not, and it says "Error: Mental interface failure.", then they have left their bodily confines and are one with the spirits. If this happens, just shout at them to get back in their body, - click 'Refresh' and try scanning them again. If there's no success, threaten them with gibbing. - Still no success? Skip over to Step 7 and don't continue after it, as you have an unresponsive body and it cannot be cloned. - If you got "Error: Unable to locate valid genetic data.", you are trying to clone a monkey - start over. - -

        Step 5: Clone body

        - Now that the body has a record, click 'View Records,' click the subject's name, and then click 'Clone' to start the cloning process. Congratulations! You're halfway there. - Remember not to 'Eject' the cloning pod as this will kill the developing clone and you'll have to start the process again. - -

        Step 6: Get clean SEs for body

        - Cloning is a finicky and unreliable process. Whilst it will most certainly bring someone back from the dead, they can have any number of nasty disabilities given to them during the cloning process! - For this reason, you need to prepare a clean, defect-free Structural Enzyme (SE) injection for when they're done. If you're a competent Geneticist, you will already have one ready on your working computer. - If, for any reason, you do not, then eject the body from the DNA modifier (NOT THE CLONING POD) and take it next door to the Genetics research room. Put the body in one of those DNA modifiers and then go onto the console. - Go into View/Edit/Transfer Buffer, find an open slot and click "SE" to save it. Then click 'Injector' to get the SEs in syringe form. Put this in your pocket or something for when the body is done. - -

        Step 7: Put body in morgue

        - Now that the cloning process has been initiated and you have some clean Structural Enzymes, you no longer need the body! Drag it to the morgue and tell the Chef over the radio that they have some fresh meat waiting for them in there. - To put a body in a morgue bed, simply open the tray, grab the body, put it on the open tray, then close the tray again. Use one of the nearby pens to label the bed "CHEF MEAT" in order to avoid confusion. - -

        Step 8: Await cloned body

        - Now go back to the lab and wait for your patient to be cloned. It won't be long now, I promise. - -

        Step 9: Cryo and clean SE injector on person

        - Has your body been cloned yet? Great! As soon as the guy pops out, grab them and stick them in cryo. Clonexadone and Cryoxadone help rebuild their genetic material. Then grab your clean SE injector and jab it in them. Once you've injected them, - they now have clean Structural Enzymes and their defects, if any, will disappear in a short while. - -

        Step 10: Give person clothes back

        - Obviously the person will be naked after they have been cloned. Provided you weren't an irresponsible little shit, you should have protected their possessions from thieves and should be able to give them back to the patient. - No matter how cruel you are, it's simply against protocol to force your patients to walk outside naked. - -

        Step 11: Send person on their way

        - Give the patient one last check-over - make sure they don't still have any defects and that they have all their possessions. Ask them how they died, if they know, so that you can report any foul play over the radio. - Once you're done, your patient is ready to go back to work! Chances are they do not have Medbay access, so you should let them out of Genetics and the Medbay main entrance. - -

        If you've gotten this far, congratulations! You have mastered the art of cloning. Now, the real problem is how to resurrect yourself after that traitor had his way with you for cloning his target. - - - - "} - - /obj/item/book/manual/ripley_build_and_repair name = "APLU \"Ripley\" Construction and Operation Manual" icon_state ="book" @@ -430,271 +132,17 @@ author = "Dr. L. Ight" title = "Research and Development 101" - dat = {" - - - - - -

        Science For Dummies

        - So you want to further SCIENCE? Good man/woman/thing! However, SCIENCE is a complicated process even though it's quite easy. For the most part, it's a three step process: -
          -
        1. Deconstruct items in the Destructive Analyzer to advance technology or improve the design.
        2. -
        3. Build unlocked designs in the Protolathe and Circuit Imprinter.
        4. -
        5. Repeat!
        6. -
        - - Those are the basic steps to furthering science. What do you do science with, however? Well, you have four major tools: R&D Console, the Destructive Analyzer, the Protolathe, and the Circuit Imprinter. - -

        The R&D Console

        - The R&D console is the cornerstone of any research lab. It is the central system from which the Destructive Analyzer, Protolathe, and Circuit Imprinter (your R&D systems) are controlled. More on those systems in their own sections. - On its own, the R&D console acts as a database for all your technological gains and new devices you discover. So long as the R&D console remains intact, you'll retain all that SCIENCE you've discovered. Protect it though, - because if it gets damaged, you'll lose your data! - In addition to this important purpose, the R&D console has a disk menu that lets you transfer data from the database onto disk or from the disk into the database. - It also has a settings menu that lets you re-sync with nearby R&D devices (if they've become disconnected), lock the console from the unworthy, - upload the data to all other R&D consoles in the network (all R&D consoles are networked by default), connect/disconnect from the network, and purge all data from the database.

        - - NOTE: The technology list screen, circuit imprinter, and protolathe menus are accessible by non-scientists. This is intended to allow 'public' systems for the plebians to utilize some new devices. - -

        Destructive Analyzer

        - This is the source of all technology. Whenever you put a handheld object in it, it analyzes it and determines what sort of technological advancements you can discover from it. If the technology of the object is equal or higher then your current knowledge, - you can destroy the object to further those sciences. - Some devices (notably, some devices made from the protolathe and circuit imprinter) aren't 100% reliable when you first discover them. If these devices break down, you can put them into the Destructive Analyzer and improve their reliability rather than further science. - If their reliability is high enough, it'll also advance their related technologies. - -

        Circuit Imprinter

        - This machine, along with the Protolathe, is used to actually produce new devices. The Circuit Imprinter takes glass and various chemicals (depends on the design) to produce new circuit boards to build new machines or computers. It can even be used to print AI modules. - -

        Protolathe

        - This machine is an advanced form of the Autolathe that produce non-circuit designs. Unlike the Autolathe, it can use processed metal, glass, solid phoron, silver, gold, and diamonds along with a variety of chemicals to produce devices. - The downside is that, again, not all devices you make are 100% reliable when you first discover them. - -

        Reliability and You

        - As it has been stated, many devices, when they're first discovered, do not have a 100% reliability. Instead, - the reliability of the device is dependent upon a base reliability value, whatever improvements to the design you've discovered through the Destructive Analyzer, - and any advancements you've made with the device's source technologies. To be able to improve the reliability of a device, you have to use the device until it breaks beyond repair. Once that happens, you can analyze it in a Destructive Analyzer. - Once the device reaches a certain minimum reliability, you'll gain technological advancements from it. - -

        Building a Better Machine

        - Many machines produced from circuit boards inserted into a machine frames require a variety of parts to construct. These are parts like capacitors, batteries, matter bins, and so forth. As your knowledge of science improves, more advanced versions are unlocked. - If you use these parts when constructing something, its attributes may be improved. - For example, if you use an advanced matter bin when constructing an autolathe (rather than a regular one), it'll hold more materials. Experiment around with stock parts of various qualities to see how they affect the end results! Be warned, however: - Tier 3 and higher stock parts don't have 100% reliability and their low reliability may affect the reliability of the end machine. - - - "} - - -/obj/item/book/manual/robotics_cyborgs - name = "Cyborgs for Dummies" - icon_state = "borgbook" - author = "XISC" - title = "Cyborgs for Dummies" - - dat = {" - - - - - -

        Cyborgs for Dummies

        - -

        Chapters

        - -
          -
        1. Cyborg Related Equipment
        2. -
        3. Cyborg Modules
        4. -
        5. Cyborg Construction
        6. -
        7. Cyborg Maintenance
        8. -
        9. Cyborg Repairs
        10. -
        11. In Case of Emergency
        12. -
        - - -

        Cyborg Related Equipment

        - -

        Exosuit Fabricator

        - The Exosuit Fabricator is the most important piece of equipment related to cyborgs. It allows the construction of the core cyborg parts. Without these machines, cyborgs cannot be built. It seems that they may also benefit from advanced research techniques. - -

        Cyborg Recharging Station

        - This useful piece of equipment will suck power out of the power systems to charge a cyborg's power cell back up to full charge. - -

        Robotics Control Console

        - This useful piece of equipment can be used to immobilize or destroy a cyborg. A word of warning: Cyborgs are expensive pieces of equipment, do not destroy them without good reason, or Weyland-Yutani may see to it that it never happens again. - - -

        Cyborg Modules

        - When a cyborg is created it picks out of an array of modules to designate its purpose. There are 6 different cyborg modules. - -

        Standard Cyborg

        - The standard cyborg module is a multi-purpose cyborg. It is equipped with various modules, allowing it to do basic tasks.
        A Standard Cyborg comes with: -
          -
        • Crowbar
        • -
        • Stun Baton
        • -
        • Health Analyzer
        • -
        • Fire Extinguisher
        • -
        - -

        Engineering Cyborg

        - The Engineering cyborg module comes equipped with various engineering-related tools to help with engineering-related tasks.
        An Engineering Cyborg comes with: -
          -
        • A basic set of engineering tools
        • -
        • Metal Synthesizer
        • -
        • Reinforced Glass Synthesizer
        • -
        • An RCD
        • -
        • Wire Synthesizer
        • -
        • Fire Extinguisher
        • -
        • Built-in Optical Meson Scanners
        • -
        - -

        Mining Cyborg

        - The Mining Cyborg module comes equipped with the latest in mining equipment. They are efficient at mining due to no need for oxygen, but their power cells limit their time in the mines.
        A Mining Cyborg comes with: -
          -
        • Jackhammer
        • -
        • Shovel
        • -
        • Mining Satchel
        • -
        • Built-in Optical Meson Scanners
        • -
        - -

        Security Cyborg

        - The Security Cyborg module is equipped with effective security measures used to apprehend and arrest criminals without harming them a bit.
        A Security Cyborg comes with: -
          -
        • Stun Baton
        • -
        • Handcuffs
        • -
        • Taser
        • -
        - -

        Janitor Cyborg

        - The Janitor Cyborg module is equipped with various cleaning-facilitating devices.
        A Janitor Cyborg comes with: -
          -
        • Mop
        • -
        • Hand Bucket
        • -
        • Cleaning Spray Synthesizer and Spray Nozzle
        • -
        - -

        Service Cyborg

        - The service cyborg module comes ready to serve your human needs. It includes various entertainment and refreshment devices. Occasionally some service cyborgs may have been referred to as "Bros."
        A Service Cyborg comes with: -
          -
        • Shaker
        • -
        • Industrial Dropper
        • -
        • Platter
        • -
        • Beer Synthesizer
        • -
        • Zippo Lighter
        • -
        • Rapid-Service-Fabricator (Produces various entertainment and refreshment objects)
        • -
        • Pen
        • -
        - -

        Cyborg Construction

        - Cyborg construction is a rather easy process, requiring a decent amount of metal and a few other supplies.
        The required materials to make a cyborg are: -
          -
        • Metal
        • -
        • Two Flashes
        • -
        • One Power Cell (Preferably rated to 15000w)
        • -
        • Some electrical wires
        • -
        • One Human Brain
        • -
        • One Man-Machine Interface
        • -
        - Once you have acquired the materials, you can start on construction of your cyborg.
        To construct a cyborg, follow the steps below: -
          -
        1. Start the Exosuit Fabricators constructing all of the cyborg parts
        2. -
        3. While the parts are being constructed, take your human brain, and place it inside the Man-Machine Interface
        4. -
        5. Once you have a Robot Head, place your two flashes inside the eye sockets
        6. -
        7. Once you have your Robot Chest, wire the Robot chest, then insert the power cell
        8. -
        9. Attach all of the Robot parts to the Robot frame
        10. -
        11. Insert the Man-Machine Interface (With the Brain inside) into the Robot Body
        12. -
        13. Congratulations! You have a new cyborg!
        14. -
        - -

        Cyborg Maintenance

        - Occasionally Cyborgs may require maintenance of a couple types, this could include replacing a power cell with a charged one, or possibly maintaining the cyborg's internal wiring. - -

        Replacing a Power Cell

        - Replacing a Power cell is a common type of maintenance for cyborgs. It usually involves replacing the cell with a fully charged one, or upgrading the cell with a larger capacity cell.
        The steps to replace a cell are as follows: -
          -
        1. Unlock the Cyborg's Interface by swiping your ID on it
        2. -
        3. Open the Cyborg's outer panel using a crowbar
        4. -
        5. Remove the old power cell
        6. -
        7. Insert the new power cell
        8. -
        9. Close the Cyborg's outer panel using a crowbar
        10. -
        11. Lock the Cyborg's Interface by swiping your ID on it, this will prevent non-qualified personnel from attempting to remove the power cell
        12. -
        - -

        Exposing the Internal Wiring

        - Exposing the internal wiring of a cyborg is fairly easy to do, and is mainly used for cyborg repairs.
        You can easily expose the internal wiring by following the steps below: -
          -
        1. Follow Steps 1 - 3 of "Replacing a Cyborg's Power Cell"
        2. -
        3. Open the cyborg's internal wiring panel by using a screwdriver to unsecure the panel
        4. -
        - To re-seal the cyborg's internal wiring: -
          -
        1. Use a screwdriver to secure the cyborg's internal panel
        2. -
        3. Follow steps 4 - 6 of "Replacing a Cyborg's Power Cell" to close up the cyborg
        4. -
        - -

        Cyborg Repairs

        - Occasionally a Cyborg may become damaged. This could be in the form of impact damage from a heavy or fast-travelling object, or it could be heat damage from high temperatures, or even lasers or Electromagnetic Pulses (EMPs). - -

        Dents

        - If a cyborg becomes damaged due to impact from heavy or fast-moving objects, it will become dented. Sure, a dent may not seem like much, but it can compromise the structural integrity of the cyborg, possibly causing a critical failure. - Dents in a cyborg's frame are rather easy to repair, all you need is to apply a blowtorch to the dented area, and the high-tech cyborg frame will repair the dent under the heat of the welder. - -

        Excessive Heat Damage

        - If a cyborg becomes damaged due to excessive heat, it is likely that the internal wires will have been damaged. You must replace those wires to ensure that the cyborg remains functioning properly.
        To replace the internal wiring follow the steps below: -
          -
        1. Unlock the Cyborg's Interface by swiping your ID
        2. -
        3. Open the Cyborg's External Panel using a crowbar
        4. -
        5. Remove the Cyborg's Power Cell
        6. -
        7. Using a screwdriver, expose the internal wiring of the Cyborg
        8. -
        9. Replace the damaged wires inside the cyborg
        10. -
        11. Secure the internal wiring cover using a screwdriver
        12. -
        13. Insert the Cyborg's Power Cell
        14. -
        15. Close the Cyborg's External Panel using a crowbar
        16. -
        17. Lock the Cyborg's Interface by swiping your ID
        18. -
        - These repair tasks may seem difficult, but are essential to keep your cyborgs running at peak efficiency. + dat = {" -

        In Case of Emergency

        - In case of emergency, there are a few steps you can take. + + -

        "Rogue" Cyborgs

        - If the cyborgs seem to become "rogue", they may have non-standard laws. In this case, use extreme caution. - To repair the situation, follow these steps: -
          -
        1. Locate the nearest robotics console
        2. -
        3. Determine which cyborgs are "Rogue"
        4. -
        5. Press the lockdown button to immobilize the cyborg
        6. -
        7. Locate the cyborg
        8. -
        9. Expose the cyborg's internal wiring
        10. -
        11. Check to make sure the LawSync and AI Sync lights are lit
        12. -
        13. If they are not lit, pulse the LawSync wire using a multitool to enable the cyborg's LawSync
        14. -
        15. Proceed to a cyborg upload console. Weyland-Yutani usually places these in the same location as AI upload consoles.
        16. -
        17. Use a "Reset" upload moduleto reset the cyborg's laws
        18. -
        19. Proceed to a Robotics Control console
        20. -
        21. Remove the lockdown on the cyborg
        22. -
        + + + -

        As a last resort

        - If all else fails in a case of cyborg-related emergency, there may be only one option. Using a Robotics Control console, you may have to remotely detonate the cyborg. -

        WARNING:

        Do not detonate a borg without an explicit reason for doing so. Cyborgs are expensive pieces of Weyland-Yutani equipment, and you may be punished for detonating them without reason. + - - "} @@ -718,6 +166,7 @@ "} + /obj/item/book/manual/marine_law name = "Marine Law" desc = "A set of guidelines for keeping law and order on military vessels." @@ -982,6 +431,7 @@ "} + /obj/item/book/manual/nuclear name = "Fission Mailed: Nuclear Sabotage 101" icon_state ="bookNuclear" @@ -1033,6 +483,7 @@ "} + /obj/item/book/manual/atmospipes name = "Pipes and You: Getting To Know Your Scary Tools" icon_state = "pipingbook" @@ -1140,6 +591,7 @@ "} + /obj/item/book/manual/evaguide name = "EVA Gear and You: Not Spending All Day Inside" icon_state = "evabook" @@ -1244,10 +696,6 @@ "} - - - - /obj/item/book/manual/orbital_cannon_manual name = "USCM Orbital Bombardment System Manual" icon_state = "bookEngineering" @@ -1299,12 +747,13 @@ "} + /obj/item/book/manual/orbital_cannon_manual/New() . = ..() - LAZYADD(objects_of_interest, src) + LAZYADD(GLOB.objects_of_interest, src) /obj/item/book/manual/orbital_cannon_manual/Destroy() . = ..() - LAZYREMOVE(objects_of_interest, src) + LAZYREMOVE(GLOB.objects_of_interest, src) diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 976ec285c8f4..9addf3346a39 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -80,7 +80,7 @@ /// actual job var/rank = null /// Marine's paygrade - var/paygrade = "ME1" + var/paygrade = PAY_SHORT_CIV /// For medics and engineers to 'claim' a locker var/claimedgear = 1 @@ -97,6 +97,21 @@ . = ..() screen_loc = null +/obj/item/card/id/proc/GetJobName() //Used in secHUD icon generation + + var/job_icons = get_all_job_icons() + var/centcom = get_all_centcom_jobs() + + if(assignment in job_icons) + return assignment//Check if the job has a hud icon + if(rank in job_icons) + return rank + if(assignment in centcom) + return "Centcom"//Return with the NT logo if it is a Centcom job + if(rank in centcom) + return "Centcom" + return "Unknown" //Return unknown if none of the above apply + /obj/item/card/id/attack_self(mob/user as mob) ..() user.visible_message("[user] shows you: [icon2html(src, viewers(user))] [name]: assignment: [assignment]") @@ -129,6 +144,12 @@ to_chat(usr, "[icon2html(src, usr)] [name]: The current assignment on the card is [assignment]") to_chat(usr, "The blood type on the card is [blood_type].") +/obj/item/card/id/proc/check_biometrics(mob/living/carbon/human/target) + if(registered_ref && (registered_ref != WEAKREF(target))) + return FALSE + if(target.real_name != registered_name) + return FALSE + return TRUE /obj/item/card/id/data name = "identification holo-badge" @@ -210,7 +231,7 @@ assignment = "Corporate Mercenary" /obj/item/card/id/pmc/New() - access = get_all_weyland_access() + access = get_access(ACCESS_LIST_WY_ALL) ..() /obj/item/card/id/pmc/ds @@ -222,11 +243,13 @@ name = "\improper CMB marshal gold badge" desc = "A coveted gold badge signifying that the wearer is one of the few CMB Marshals patroling the outer rim. It is a sign of justice, authority, and protection. Protecting those who can't. This badge represents a commitment to a sworn oath always kept." icon_state = "cmbmar" + paygrade = PAY_SHORT_CMBM /obj/item/card/id/deputy name = "\improper CMB deputy silver badge" desc = "The silver badge which represents that the wearer is a CMB Deputy. It is a sign of justice, authority, and protection. Protecting those who can't. This badge represents a commitment to a sworn oath always kept." icon_state = "cmbdep" + paygrade = PAY_SHORT_CMBD /obj/item/card/id/general name = "general officer holo-badge" @@ -236,7 +259,7 @@ assignment = "General" /obj/item/card/id/general/New() - access = get_all_weyland_access() + access = get_access(ACCESS_LIST_MARINE_ALL) /obj/item/card/id/provost name = "provost holo-badge" @@ -246,81 +269,53 @@ assignment = "Provost" /obj/item/card/id/provost/New() - access = get_all_weyland_access() + access = get_access(ACCESS_LIST_MARINE_ALL) -/obj/item/card/id/syndicate +/obj/item/card/id/adaptive name = "agent card" access = list(ACCESS_ILLEGAL_PIRATE) - var/registered_user=null -/obj/item/card/id/syndicate/New(mob/user as mob) +/obj/item/card/id/adaptive/New(mob/user as mob) ..() if(!QDELETED(user)) // Runtime prevention on laggy starts or where users log out because of lag at round start. - registered_name = ishuman(user) ? user.real_name : user.name - else - registered_name = "Agent Card" + registered_name = ishuman(user) ? user.real_name : "Unknown" assignment = "Agent" name = "[registered_name]'s ID Card ([assignment])" -/obj/item/card/id/syndicate/afterattack(obj/item/O as obj, mob/user as mob, proximity) - if(!proximity) return +/obj/item/card/id/adaptive/afterattack(obj/item/O as obj, mob/user as mob, proximity) + if(!proximity) + return if(istype(O, /obj/item/card/id)) - var/obj/item/card/id/I = O - src.access |= I.access - if(istype(user, /mob/living) && user.mind) - to_chat(usr, SPAN_NOTICE(" The card's microscanners activate as you pass it over the ID, copying its access.")) - -/obj/item/card/id/syndicate/attack_self(mob/user as mob) - if(!src.registered_name) - //Stop giving the players unsanitized unputs! You are giving ways for players to intentionally crash clients! -Nodrak - var t = reject_bad_name(input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name)) - if(!t) //Same as mob/new_player/prefrences.dm - alert("Invalid name.") - return - src.registered_name = t - - var u = strip_html(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Agent")) - if(!u) - alert("Invalid assignment.") - src.registered_name = "" - return - src.assignment = u - src.name = "[src.registered_name]'s ID Card ([src.assignment])" - to_chat(user, SPAN_NOTICE(" You successfully forge the ID card.")) - registered_user = user - else if(!registered_user || registered_user == user) - - if(!registered_user) registered_user = user // - - switch(alert("Would you like to display the ID, or retitle it?","Choose.","Rename","Show")) - if("Rename") - var t = strip_html(input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name),26) - if(!t || t == "Unknown" || t == "floor" || t == "wall" || t == "r-wall") //Same as mob/new_player/prefrences.dm - alert("Invalid name.") - return - src.registered_name = t - - var u = strip_html(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")) - if(!u) - alert("Invalid assignment.") - return - src.assignment = u - src.name = "[src.registered_name]'s ID Card ([src.assignment])" - to_chat(user, SPAN_NOTICE(" You successfully forge the ID card.")) + var/obj/item/card/id/target_id = O + access |= target_id.access + if(ishuman(user)) + to_chat(user, SPAN_NOTICE("The card's microscanners activate as you pass it over the ID, copying its access.")) + +/obj/item/card/id/adaptive/attack_self(mob/user as mob) + switch(alert("Would you like to display the ID, or retitle it?","Choose.","Rename","Show")) + if("Rename") + var/new_name = strip_html(input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name),26) + if(!new_name || new_name == "Unknown" || new_name == "floor" || new_name == "wall" || new_name == "r-wall") //Same as mob/new_player/prefrences.dm + to_chat(user, SPAN_WARNING("Invalid Name.")) return - if("Show") - ..() - else - ..() + var/new_job = strip_html(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")) + if(!new_job) + to_chat(user, SPAN_WARNING("Invalid Assignment.")) + return + var/new_rank = strip_html(input(user, "What paygrade do would you like to put on this card?\nNote: This must be the shorthand version of the grade, I.E CIV for Civillian or ME1 for Marine Private", "Agent card paygrade assignment", PAY_SHORT_CIV)) + if(!new_rank || !(new_rank in GLOB.paygrades)) + to_chat(user, SPAN_WARNING("Invalid Paygrade.")) + return -/obj/item/card/id/syndicate_command - name = "syndicate ID card" - desc = "An ID straight from the Syndicate." - registered_name = "Syndicate" - assignment = "Syndicate Overlord" - access = list(ACCESS_ILLEGAL_PIRATE) + registered_name = new_name + assignment = new_job + name = "[registered_name]'s ID Card ([assignment])" + paygrade = new_rank + to_chat(user, SPAN_NOTICE("You successfully forge the ID card.")) + return + ..() /obj/item/card/id/captains_spare name = "captain's spare ID" @@ -331,7 +326,7 @@ assignment = "Captain" /obj/item/card/id/captains_spare/New() - access = get_all_marine_access() + access = get_access(ACCESS_LIST_MARINE_ALL) ..() /obj/item/card/id/centcom @@ -342,7 +337,7 @@ assignment = "General" /obj/item/card/id/centcom/New() - access = get_all_weyland_access() + access = get_access(ACCESS_LIST_WY_ALL) ..() diff --git a/code/game/objects/items/circuitboards/airlock.dm b/code/game/objects/items/circuitboards/airlock.dm index 873d326847ec..4de97a8e20f3 100644 --- a/code/game/objects/items/circuitboards/airlock.dm +++ b/code/game/objects/items/circuitboards/airlock.dm @@ -44,7 +44,7 @@ t1 += "
        " - var/list/accesses = get_all_main_access() + var/list/accesses = get_access(ACCESS_LIST_MARINE_ALL) for (var/acc in accesses) var/aname = get_access_desc(acc) diff --git a/code/game/objects/items/circuitboards/computer.dm b/code/game/objects/items/circuitboards/computer.dm index d754ada57ca1..08dcfc6964a6 100644 --- a/code/game/objects/items/circuitboards/computer.dm +++ b/code/game/objects/items/circuitboards/computer.dm @@ -96,9 +96,9 @@ /obj/item/circuitboard/computer/atmos_alert name = "Circuit board (Atmospheric Alert)" build_path = /obj/structure/machinery/computer/atmos_alert -/obj/item/circuitboard/computer/pod - name = "Circuit board (Massdriver control)" - build_path = /obj/structure/machinery/computer/pod +/obj/item/circuitboard/computer/pod/old + name = "Circuit board (DoorMex)" + build_path = /obj/structure/machinery/computer/pod/old /obj/item/circuitboard/computer/robotics name = "Circuit board (Robotics Control)" build_path = /obj/structure/machinery/computer/robotics @@ -117,15 +117,6 @@ /obj/item/circuitboard/computer/powermonitor name = "Circuit board (Power Monitor)" build_path = /obj/structure/machinery/power/monitor -/obj/item/circuitboard/computer/olddoor - name = "Circuit board (DoorMex)" - build_path = /obj/structure/machinery/computer/pod/old -/obj/item/circuitboard/computer/syndicatedoor - name = "Circuit board (ProComp Executive)" - build_path = /obj/structure/machinery/computer/pod/old/syndicate -/obj/item/circuitboard/computer/swfdoor - name = "Circuit board (Magix)" - build_path = /obj/structure/machinery/computer/pod/old/swf /obj/item/circuitboard/computer/prisoner name = "Circuit board (Prisoner Management)" build_path = /obj/structure/machinery/computer/prisoner @@ -158,19 +149,30 @@ name = "Circuit board (ASRS console)" build_path = /obj/structure/machinery/computer/supplycomp - var/contraband_enabled = 0 + var/contraband_enabled = FALSE + var/black_market_lock = FALSE /obj/item/circuitboard/computer/supplycomp/construct(obj/structure/machinery/computer/supplycomp/SC) if (..(SC)) SC.toggle_contraband(contraband_enabled) + SC.lock_black_market(black_market_lock) /obj/item/circuitboard/computer/supplycomp/disassemble(obj/structure/machinery/computer/supplycomp/SC) + if(SC.can_order_contraband) + contraband_enabled = TRUE + if(SC.black_market_lockout) + black_market_lock = TRUE if (..(SC)) SC.toggle_contraband(contraband_enabled) + SC.lock_black_market(black_market_lock) + +/obj/item/circuitboard/computer/supplycomp/attackby(obj/item/tool, mob/user) + if(HAS_TRAIT(tool, TRAIT_TOOL_MULTITOOL)) + to_chat(user, SPAN_WARNING("You try to pulse the circuit board, but nothing happens. Maybe you need something more specialized?")) + return -/obj/item/circuitboard/computer/supplycomp/attackby(obj/item/multitool, mob/user) - if(HAS_TRAIT(multitool, TRAIT_TOOL_MULTITOOL)) - to_chat(user, SPAN_WARNING("You start messing around with the electronics of \the [src]...")) + else if(HAS_TRAIT(tool, TRAIT_TOOL_BLACKMARKET_HACKER)) + to_chat(user, SPAN_WARNING("You start messing around with the electronics of [src]...")) if(do_after(user, 8 SECONDS, INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) to_chat(user, SPAN_WARNING("You have no idea what you're doing.")) @@ -178,11 +180,39 @@ to_chat(user, SPAN_WARNING("Huh? You find a processor bus with the letters 'B.M.' written in white crayon over it. You start fiddling with it.")) if(do_after(user, 8 SECONDS, INTERRUPT_ALL, BUSY_ICON_HOSTILE)) if(!contraband_enabled) - to_chat(user, SPAN_WARNING("You amplify the broadcasting function with \the [multitool], and a red light starts blinking on and off on the board. Put it back in?")) + to_chat(user, SPAN_WARNING("You amplify the broadcasting function with \the [tool], and a red light starts blinking on and off on the board. Put it back in?")) contraband_enabled = TRUE else - to_chat(user, SPAN_WARNING("You weaken the broadcasting function with \the [multitool], and the red light stops blinking, turning off. It's probably good now.")) + to_chat(user, SPAN_WARNING("You weaken the broadcasting function with \the [tool], and the red light stops blinking, turning off. It's probably good now.")) contraband_enabled = FALSE + + else if(HAS_TRAIT(tool, TRAIT_TOOL_TRADEBAND)) + if(!skillcheck(user, SKILL_POLICE, SKILL_POLICE_SKILLED)) + to_chat(user, SPAN_NOTICE("You do not know how to use [tool]")) + return + + if(black_market_lock) + to_chat(user, SPAN_NOTICE("[src] has already been reset.")) + return + + if(user.action_busy) + to_chat(user, "You are too busy with other actions to fix any tampering.") + return + + playsound(tool, 'sound/machines/lockenable.ogg', 25) + user.visible_message(SPAN_NOTICE("[user] attaches [tool] to [src]."),\ + SPAN_NOTICE("You begin to fix any tampering to [src].")) + tool.icon_state = "[tool.icon_state]_on" + + if(!do_after(user, 15 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC, tool, INTERRUPT_ALL)) + tool.icon_state = initial(tool.icon_state) + return + + playsound(tool, 'sound/machines/ping.ogg', 25) + black_market_lock = TRUE + contraband_enabled = FALSE + tool.icon_state = initial(tool.icon_state) + else ..() /obj/item/circuitboard/computer/supplycomp/vehicle @@ -248,7 +278,7 @@ to_chat(usr, "No input found please hang up and try your call again.") return var/list/tempnetwork = splittext(input, ",") - tempnetwork = difflist(tempnetwork,RESTRICTED_CAMERA_NETWORKS,1) + tempnetwork = difflist(tempnetwork,GLOB.RESTRICTED_CAMERA_NETWORKS,1) if(tempnetwork.len < 1) to_chat(usr, "No network found please hang up and try your call again.") return @@ -257,14 +287,12 @@ /obj/item/circuitboard/computer/rdconsole/attackby(obj/item/I as obj, mob/user as mob) if(HAS_TRAIT(I, TRAIT_TOOL_SCREWDRIVER)) - user.visible_message(SPAN_NOTICE("\the [user] adjusts the jumper on the [src]'s access protocol pins."), SPAN_NOTICE("You adjust the jumper on the access protocol pins.")) + user.visible_message(SPAN_NOTICE("[user] adjusts the jumper on [src]'s access protocol pins."), SPAN_NOTICE("You adjust the jumper on the access protocol pins.")) if(src.build_path == /obj/structure/machinery/computer/rdconsole/core) src.name = "Circuit Board (RD Console - Robotics)" src.build_path = /obj/structure/machinery/computer/rdconsole/robotics - to_chat(user, SPAN_NOTICE(" Access protocols set to robotics.")) + to_chat(user, SPAN_NOTICE("Access protocols set to robotics.")) else src.name = "Circuit Board (RD Console)" src.build_path = /obj/structure/machinery/computer/rdconsole/core - to_chat(user, SPAN_NOTICE(" Access protocols set to default.")) - - + to_chat(user, SPAN_NOTICE("Access protocols set to default.")) diff --git a/code/game/objects/items/circuitboards/machine.dm b/code/game/objects/items/circuitboards/machine.dm index ad4c31cb11e9..248d0d5c8885 100644 --- a/code/game/objects/items/circuitboards/machine.dm +++ b/code/game/objects/items/circuitboards/machine.dm @@ -141,7 +141,7 @@ to destroy them and players will be able to make replacements. if(HAS_TRAIT(I, TRAIT_TOOL_SCREWDRIVER)) machine_dir = turn(machine_dir, 90) init_dirs = machine_dir - user.visible_message(SPAN_NOTICE("\The [user] adjusts the jumper on the [src]'s port configuration pins."), SPAN_NOTICE("You adjust the jumper on the port configuration pins. Now set to [dir2text(machine_dir)].")) + user.visible_message(SPAN_NOTICE("[user] adjusts the jumper on [src]'s port configuration pins."), SPAN_NOTICE("You adjust the jumper on the port configuration pins. Now set to [dir2text(machine_dir)].")) return /obj/item/circuitboard/machine/unary_atmos/get_examine_text(mob/user) @@ -300,5 +300,3 @@ to destroy them and players will be able to make replacements. // Board itself is high tech. Coils have to be ordered from cargo or salvaged from existing SMESs. frame_desc = "Requires 1 superconducting magnetic coil and 30 wires." req_components = list(/obj/item/stock_parts/smes_coil = 1, /obj/item/stack/cable_coil = 30) - - diff --git a/code/game/objects/items/circuitboards/mecha.dm b/code/game/objects/items/circuitboards/mecha.dm index 60b5d7a0c952..40646de77d81 100644 --- a/code/game/objects/items/circuitboards/mecha.dm +++ b/code/game/objects/items/circuitboards/mecha.dm @@ -1,7 +1,4 @@ - -///////// Circuitboards - -/obj/item/circuitboard/mecha +/obj/item/circuitboard/exosuit name = "Exosuit Circuit board" icon_state = "std_mod" force = 5 @@ -10,71 +7,34 @@ throw_speed = SPEED_VERY_FAST throw_range = 15 -/obj/item/circuitboard/mecha/ripley - - -/obj/item/circuitboard/mecha/ripley/peripherals - name = "Circuit board (Ripley Peripherals Control module)" - icon_state = "mcontroller" - -/obj/item/circuitboard/mecha/ripley/main - name = "Circuit board (Ripley Central Control module)" - icon_state = "mainboard" - -/obj/item/circuitboard/mecha/gygax - - -/obj/item/circuitboard/mecha/gygax/peripherals - name = "Circuit board (Gygax Peripherals Control module)" - icon_state = "mcontroller" - -/obj/item/circuitboard/mecha/gygax/targeting - name = "Circuit board (Gygax Weapon Control and Targeting module)" - icon_state = "mcontroller" - - -/obj/item/circuitboard/mecha/gygax/main - name = "Circuit board (Gygax Central Control module)" - icon_state = "mainboard" - -/obj/item/circuitboard/mecha/durand - - -/obj/item/circuitboard/mecha/durand/peripherals - name = "Circuit board (Durand Peripherals Control module)" - icon_state = "mcontroller" - -/obj/item/circuitboard/mecha/durand/targeting - name = "Circuit board (Durand Weapon Control and Targeting module)" - icon_state = "mcontroller" - - -/obj/item/circuitboard/mecha/durand/main - name = "Circuit board (Durand Central Control module)" - icon_state = "mainboard" - -/obj/item/circuitboard/mecha/honker - - -/obj/item/circuitboard/mecha/honker/peripherals - name = "Circuit board (H.O.N.K Peripherals Control module)" - icon_state = "mcontroller" - -/obj/item/circuitboard/mecha/honker/targeting - name = "Circuit board (H.O.N.K Weapon Control and Targeting module)" - icon_state = "mcontroller" - -/obj/item/circuitboard/mecha/honker/main - name = "Circuit board (H.O.N.K Central Control module)" - icon_state = "mainboard" - -/obj/item/circuitboard/mecha/odysseus - - -/obj/item/circuitboard/mecha/odysseus/peripherals - name = "Circuit board (Odysseus Peripherals Control module)" - icon_state = "mcontroller" - -/obj/item/circuitboard/mecha/odysseus/main - name = "Circuit board (Odysseus Central Control module)" +// that's the two possible exosuit boards icon_state. +/obj/item/circuitboard/exosuit/main icon_state = "mainboard" +/obj/item/circuitboard/exosuit/peripherals + icon_state = "mcontroller" + +// P-1000 Older version of the P-5000 +/obj/item/circuitboard/exosuit/main/work_loader + name = "Circuit board (P-1000 Central Control module)" +/obj/item/circuitboard/exosuit/peripherals/work_loader + name = "Circuit board (P-1000 Peripherals Control module)" + +// MAX (Mobile Assault Exo-Warrior)look like a gygax from afar +/obj/item/circuitboard/exosuit/main/max + name = "Circuit board (Max Central Control module)" +/obj/item/circuitboard/exosuit/peripherals/max + name = "Circuit board (Max Peripherals Control module)" +/obj/item/circuitboard/exosuit/peripherals/max/targeting + name = "Circuit board (Max Weapon Control and Targeting module)" + +// MOX (mobile offensive exo-warrior) look like a durand from afar. +/obj/item/circuitboard/exosuit/main/mox + name = "Circuit board (Mox Central Control module)" +/obj/item/circuitboard/exosuit/peripherals/mox + name = "Circuit board (Mox Peripherals Control module)" + +// Alice it's an exosuit featured in alien versus predator 2 doesn't look like an odysseus but is a name in CM lore. +/obj/item/circuitboard/exosuit/main/alice + name = "Circuit board (Alice Central Control module)" +/obj/item/circuitboard/exosuit/peripherals/alice + name = "Circuit board (Alice Peripherals Control module)" diff --git a/code/game/objects/items/circuitboards/robot_modules.dm b/code/game/objects/items/circuitboards/robot_modules.dm index 2e5185353852..fc0b2892a111 100644 --- a/code/game/objects/items/circuitboards/robot_modules.dm +++ b/code/game/objects/items/circuitboards/robot_modules.dm @@ -2,366 +2,14 @@ name = "robot module" icon_state = "std_mod" flags_atom = FPRINT|CONDUCT - var/channels = list() - var/list/modules = list() - var/obj/item/emag = null - var/obj/item/robot/upgrade/jetpack = null - var/list/stacktypes - -/obj/item/circuitboard/robot_module/emp_act(severity) - if(modules) - for(var/obj/O in modules) - O.emp_act(severity) - if(emag) - emag.emp_act(severity) - ..() - return - - -/obj/item/circuitboard/robot_module/Initialize() - . = ..() -// src.modules += new /obj/item/device/flashlight(src) // Replaced by verb and integrated light which uses power. - src.modules += new /obj/item/device/flash(src) - src.emag = new /obj/item/toy/sword(src) - src.emag.name = "Placeholder Emag Item" -// src.jetpack = new /obj/item/toy/sword(src) -// src.jetpack.name = "Placeholder Upgrade Item" - -/obj/item/circuitboard/robot_module/Destroy() - . = ..() - QDEL_NULL(emag) - QDEL_NULL(jetpack) - QDEL_NULL_LIST(modules) - -/obj/item/circuitboard/robot_module/proc/respawn_consumable(mob/living/silicon/robot/R) - - if(!stacktypes || !stacktypes.len) return - - for(var/T in stacktypes) - var/O = locate(T) in src.modules - var/obj/item/stack/S = O - - if(!S) - src.modules -= null - S = new T(src) - src.modules += S - S.amount = 1 - - if(S && S.amount < stacktypes[T]) - S.amount++ - -/obj/item/circuitboard/robot_module/proc/rebuild()//Rebuilds the list so it's possible to add/remove items from the module - var/list/temp_list = modules - modules = list() - for(var/obj/O in temp_list) - if(O) - modules += O - -/obj/item/circuitboard/robot_module/proc/add_languages(mob/living/silicon/robot/R) - //full set of languages - R.add_language(LANGUAGE_RUSSIAN, 1) - R.add_language(LANGUAGE_JAPANESE, 1) - - -/obj/item/circuitboard/robot_module/standard - name = "standard robot module" - -/obj/item/circuitboard/robot_module/standard/New() - src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/tool/extinguisher(src) - src.modules += new /obj/item/tool/wrench(src) - src.modules += new /obj/item/tool/crowbar(src) - src.modules += new /obj/item/device/healthanalyzer(src) - src.modules += new /obj/item/robot/stun(src) - src.emag = new /obj/item/weapon/energy/sword(src) - return /obj/item/circuitboard/robot_module/surgeon name = "surgeon robot module" - stacktypes = list( - /obj/item/stack/medical/advanced/bruise_pack = 5, - /obj/item/stack/nanopaste = 5, - ) - -/obj/item/circuitboard/robot_module/surgeon/Initialize() - . = ..() - src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/device/healthanalyzer(src) - src.modules += new /obj/item/reagent_container/borghypo(src) - src.modules += new /obj/item/tool/surgery/scalpel(src) - src.modules += new /obj/item/tool/surgery/hemostat(src) - src.modules += new /obj/item/tool/surgery/retractor(src) - src.modules += new /obj/item/tool/surgery/cautery(src) - src.modules += new /obj/item/tool/surgery/bonegel(src) - src.modules += new /obj/item/tool/surgery/FixOVein(src) - src.modules += new /obj/item/tool/surgery/bonesetter(src) - src.modules += new /obj/item/tool/surgery/circular_saw(src) - src.modules += new /obj/item/tool/surgery/surgicaldrill(src) - src.modules += new /obj/item/tool/extinguisher/mini(src) - src.modules += new /obj/item/stack/medical/advanced/bruise_pack(src) - src.modules += new /obj/item/stack/nanopaste(src) - src.modules += new /obj/item/tool/weldingtool/largetank(src) - src.modules += new /obj/item/tool/crowbar(src) - src.modules += new /obj/item/robot/stun(src) - - src.emag = new /obj/item/reagent_container/spray(src) - - src.emag.reagents.add_reagent("pacid", 250) - src.emag.name = "Polyacid spray" - -/obj/item/circuitboard/robot_module/surgeon/respawn_consumable(mob/living/silicon/robot/R) - if(src.emag) - var/obj/item/reagent_container/spray/PS = src.emag - PS.reagents.add_reagent("pacid", 2) - ..() - /obj/item/circuitboard/robot_module/medic name = "medic robot module" - stacktypes = list( - /obj/item/stack/medical/ointment = 15, - /obj/item/stack/medical/advanced/bruise_pack = 15, - /obj/item/stack/medical/splint = 15, - ) - -/obj/item/circuitboard/robot_module/medic/Initialize() - . = ..() - src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/robot/sight/hud/med(src) - src.modules += new /obj/item/device/healthanalyzer(src) - src.modules += new /obj/item/device/reagent_scanner/adv(src) - src.modules += new /obj/item/roller_holder(src) - src.modules += new /obj/item/stack/medical/ointment(src) - src.modules += new /obj/item/stack/medical/advanced/bruise_pack(src) - src.modules += new /obj/item/stack/medical/splint(src) - src.modules += new /obj/item/reagent_container/borghypo(src) - src.modules += new /obj/item/reagent_container/glass/beaker/large(src) - src.modules += new /obj/item/reagent_container/robodropper(src) - src.modules += new /obj/item/reagent_container/syringe(src) - src.modules += new /obj/item/tool/extinguisher/mini(src) - src.modules += new /obj/item/reagent_container/spray/cleaner(src) - src.modules += new /obj/item/tool/weldingtool/largetank(src) - src.modules += new /obj/item/tool/crowbar(src) - src.modules += new /obj/item/robot/stun(src) - - src.emag = new /obj/item/reagent_container/spray(src) - - src.emag.reagents.add_reagent("pacid", 250) - src.emag.name = "Polyacid spray" - -/obj/item/circuitboard/robot_module/medic/respawn_consumable(mob/living/silicon/robot/R) - var/obj/item/reagent_container/syringe/S = locate() in src.modules - if(S.mode == 2) - S.reagents.clear_reagents() - S.mode = initial(S.mode) - S.desc = initial(S.desc) - S.update_icon() - - var/obj/item/reagent_container/spray/cleaner/C = locate() in src.modules - C.reagents.add_reagent("cleaner", C.volume) - - if(src.emag) - var/obj/item/reagent_container/spray/PS = src.emag - PS.reagents.add_reagent("pacid", 2) - - ..() - /obj/item/circuitboard/robot_module/engineering name = "engineering robot module" - - stacktypes = list( - /obj/item/stack/sheet/metal = 50, - /obj/item/stack/sheet/glass = 50, - /obj/item/stack/sheet/glass/reinforced = 50, - /obj/item/stack/cable_coil = 50, - /obj/item/stack/rods = 50, - /obj/item/stack/tile/plasteel = 20, - ) - -/obj/item/circuitboard/robot_module/engineering/Initialize() - . = ..() - src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/robot/sight/meson(src) - src.modules += new /obj/item/tool/extinguisher(src) - src.modules += new /obj/item/device/rcd/borg(src) - src.modules += new /obj/item/tool/weldingtool/largetank(src) - src.modules += new /obj/item/tool/screwdriver(src) - src.modules += new /obj/item/tool/wrench(src) - src.modules += new /obj/item/tool/crowbar(src) - src.modules += new /obj/item/tool/wirecutters(src) - src.modules += new /obj/item/device/multitool(src) - src.modules += new /obj/item/device/t_scanner(src) - src.modules += new /obj/item/device/analyzer(src) - src.modules += new /obj/item/device/gripper(src) - src.modules += new /obj/item/device/matter_decompiler(src) - src.modules += new /obj/item/device/lightreplacer(src) - src.modules += new /obj/item/robot/stun(src) - - for(var/T in stacktypes) - var/obj/item/stack/sheet/W = new T(src) - W.amount = stacktypes[T] - src.modules += W - -/obj/item/circuitboard/robot_module/engineering/respawn_consumable(mob/living/silicon/robot/R) - var/obj/item/device/lightreplacer/L = locate() in src.modules - L.uses = L.max_uses - - ..() - -/obj/item/circuitboard/robot_module/security - name = "security robot module" - -/obj/item/circuitboard/robot_module/security/Initialize() - . = ..() - src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/robot/sight/hud/sec(src) - src.modules += new /obj/item/handcuffs/cyborg(src) - src.modules += new /obj/item/robot/stun(src) - src.modules += new /obj/item/tool/crowbar(src) -// src.modules += new /obj/item/weapon/gun/energy/taser/cyborg(src) -// src.emag = new /obj/item/weapon/gun/energy/laser/cyborg(src) - -/obj/item/circuitboard/robot_module/security/respawn_consumable(mob/living/silicon/robot/R) - var/obj/item/device/flash/F = locate() in src.modules - if(F.broken) - F.broken = 0 - F.flashes_stored = F.max_flashes_stored - F.icon_state = "flash" - else if(F.flashes_stored > F.max_flashes_stored) - F.flashes_stored++ - // var/obj/item/weapon/gun/energy/taser/cyborg/T = locate() in src.modules - // if(T.power_supply.charge < T.power_supply.maxcharge) - // T.power_supply.give(T.charge_cost) - // T.update_icon() - // else - // T.charge_tick = 0 - /obj/item/circuitboard/robot_module/janitor name = "janitorial robot module" - -/obj/item/circuitboard/robot_module/janitor/Initialize() - . = ..() - src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/tool/soap/nanotrasen(src) - src.modules += new /obj/item/storage/bag/trash(src) - src.modules += new /obj/item/tool/mop(src) - src.modules += new /obj/item/device/lightreplacer(src) - src.modules += new /obj/item/tool/crowbar(src) - src.modules += new /obj/item/robot/stun(src) - src.emag = new /obj/item/reagent_container/spray(src) - - src.emag.reagents.add_reagent("cleaner", 250) - src.emag.name = "space cleaner" - -/obj/item/circuitboard/robot_module/janitor/respawn_consumable(mob/living/silicon/robot/R) - var/obj/item/device/lightreplacer/LR = locate() in src.modules - LR.Charge(R) - if(src.emag) - var/obj/item/reagent_container/spray/S = src.emag - S.reagents.add_reagent("cleaner", 2) - /obj/item/circuitboard/robot_module/butler name = "service robot module" - -/obj/item/circuitboard/robot_module/butler/Initialize() - . = ..() - src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/reagent_container/food/drinks/cans/beer(src) - src.modules += new /obj/item/reagent_container/food/condiment/enzyme(src) - src.modules += new /obj/item/tool/crowbar(src) - src.modules += new /obj/item/robot/stun(src) - - var/obj/item/device/rsf/M = new /obj/item/device/rsf(src) - M.stored_matter = 30 - src.modules += M - - src.modules += new /obj/item/reagent_container/robodropper(src) - - var/obj/item/tool/lighter/zippo/L = new /obj/item/tool/lighter/zippo(src) - L.heat_source = 1000 - src.modules += L - - src.modules += new /obj/item/reagent_container/food/drinks/shaker(src) - -/obj/item/circuitboard/robot_module/butler/add_languages(mob/living/silicon/robot/R) - //full set of languages - R.add_language(LANGUAGE_JAPANESE, 1) - -/obj/item/circuitboard/robot_module/butler/respawn_consumable(mob/living/silicon/robot/R) - var/obj/item/reagent_container/food/condiment/enzyme/E = locate() in src.modules - E.reagents.add_reagent("enzyme", 2) - if(src.emag) - var/obj/item/reagent_container/food/drinks/cans/beer/B = src.emag - B.reagents.add_reagent("beer2", 2) - -/obj/item/circuitboard/robot_module/syndicate - name = "syndicate robot module" - -/obj/item/circuitboard/robot_module/syndicate/Initialize() - . = ..() - src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/weapon/energy/sword(src) - -/obj/item/circuitboard/robot_module/drone - name = "drone module" - stacktypes = list( - /obj/item/stack/sheet/wood = 1, - /obj/item/stack/sheet/mineral/plastic = 1, - /obj/item/stack/sheet/glass/reinforced = 5, - /obj/item/stack/tile/wood = 5, - /obj/item/stack/rods = 15, - /obj/item/stack/tile/plasteel = 15, - /obj/item/stack/sheet/metal = 20, - /obj/item/stack/sheet/glass = 20, - /obj/item/stack/cable_coil = 30, - ) - -/obj/item/circuitboard/robot_module/drone/Initialize() - . = ..() - src.modules += new /obj/item/tool/weldingtool(src) - src.modules += new /obj/item/tool/screwdriver(src) - src.modules += new /obj/item/tool/wrench(src) - src.modules += new /obj/item/tool/crowbar(src) - src.modules += new /obj/item/tool/wirecutters(src) - src.modules += new /obj/item/device/multitool(src) - src.modules += new /obj/item/device/lightreplacer(src) - src.modules += new /obj/item/device/gripper(src) - src.modules += new /obj/item/device/matter_decompiler(src) - src.modules += new /obj/item/reagent_container/spray/cleaner/drone(src) - - src.emag = new /obj/item/tool/pickaxe/plasmacutter(src) - src.emag.name = "Plasma Cutter" - - for(var/T in stacktypes) - var/obj/item/stack/sheet/W = new T(src) - W.amount = stacktypes[T] - src.modules += W - -/obj/item/circuitboard/robot_module/drone/add_languages(mob/living/silicon/robot/R) - return //not much ROM to spare in that tiny microprocessor! - -/obj/item/circuitboard/robot_module/drone/respawn_consumable(mob/living/silicon/robot/R) - var/obj/item/reagent_container/spray/cleaner/C = locate() in src.modules - C.reagents.add_reagent("cleaner", 3) - - var/obj/item/device/lightreplacer/LR = locate() in src.modules - LR.Charge(R) - - ..() - return - -//checks whether this item is a module of the robot it is located in. -/obj/item/proc/is_robot_module() - if (!isrobot(src.loc)) - return 0 - - var/mob/living/silicon/robot/R = src.loc - - return (src in R.module.modules) diff --git a/code/game/objects/items/devices/RCD.dm b/code/game/objects/items/devices/RCD.dm index 55965533c48b..00e569800314 100644 --- a/code/game/objects/items/devices/RCD.dm +++ b/code/game/objects/items/devices/RCD.dm @@ -86,7 +86,7 @@ RCD /obj/item/device/rcd/afterattack(atom/A, mob/user, proximity) if(!proximity) return - if(disabled && !isrobot(user)) + if(disabled) return 0 if(istype(A,/area/shuttle) || istype(A,/turf/open/space/transit)) return 0 @@ -180,20 +180,6 @@ RCD /obj/item/device/rcd/proc/checkResource(amount, mob/user) return stored_matter >= amount -/obj/item/device/rcd/borg/useResource(amount, mob/user) - if(!isrobot(user)) - return 0 - return user:cell:use(amount * 30) - -/obj/item/device/rcd/borg/checkResource(amount, mob/user) - if(!isrobot(user)) - return 0 - return user:cell:charge >= (amount * 30) - -/obj/item/device/rcd/borg/New() - ..() - desc = "A device used to rapidly build walls/floor." - canRwall = 1 /obj/item/ammo_rcd name = "compressed matter cartridge" diff --git a/code/game/objects/items/devices/RSF.dm b/code/game/objects/items/devices/RSF.dm index ac87cd6dfc86..29f84c7c6d0c 100644 --- a/code/game/objects/items/devices/RSF.dm +++ b/code/game/objects/items/devices/RSF.dm @@ -68,48 +68,31 @@ RSF if(!proximity) return - if(istype(user,/mob/living/silicon/robot)) - var/mob/living/silicon/robot/R = user - if(R.stat || !R.cell || R.cell.charge <= 0) - return - else - if(stored_matter <= 0) - return + if(stored_matter <= 0) + return if(!istype(A, /obj/structure/surface/table) && !istype(A, /turf/open/floor)) return playsound(src.loc, 'sound/machines/click.ogg', 25, 1) - var/used_energy = 0 var/obj/product switch(mode) if(1) product = new /obj/item/spacecash/c10() - used_energy = 200 if(2) product = new /obj/item/reagent_container/food/drinks/drinkingglass() - used_energy = 50 if(3) product = new /obj/item/paper() - used_energy = 10 if(4) product = new /obj/item/tool/pen() - used_energy = 50 if(5) product = new /obj/item/storage/pill_bottle/dice() - used_energy = 200 if(6) product = new /obj/item/clothing/mask/cigarette() - used_energy = 10 to_chat(user, "Dispensing [product ? product : "product"]...") product.forceMove(get_turf(A)) - if(isrobot(user)) - var/mob/living/silicon/robot/R = user - if(R.cell) - R.cell.use(used_energy) - else - stored_matter-- - to_chat(user, "The RSF now holds [stored_matter]/30 fabrication-units.") + stored_matter-- + to_chat(user, "The RSF now holds [stored_matter]/30 fabrication-units.") diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index 6dad79e4af5a..cc36eb9be02c 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -6,103 +6,3 @@ w_class = SIZE_SMALL flags_atom = FPRINT|CONDUCT flags_equip_slot = SLOT_WAIST - var/flush = null - - - -/obj/item/device/aicard/attack(mob/living/silicon/ai/M as mob, mob/user as mob) - if(!isAI(M))//If target is not an AI. - return ..() - - M.attack_log += text("\[[time_stamp()]\] Has been carded with [src.name] by [user.name] ([user.ckey])") - M.last_damage_data = create_cause_data(initial(name), user) - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to card [M.name] ([M.ckey])") - msg_admin_attack("[user.name] ([user.ckey]) used the [src.name] to card [M.name] ([M.ckey]) in [get_area(user)] ([user.x],[user.y],[user.z]).", user.x, user.y, user.z) - - transfer_ai("AICORE", "AICARD", M, user) - return - -/obj/item/device/aicard/attack(mob/living/silicon/decoy/M as mob, mob/user as mob) - if (!istype (M, /mob/living/silicon/decoy)) - return ..() - else - M.death() - to_chat(user, "ERROR ERROR ERROR") - -/obj/item/device/aicard/attack_self(mob/user) - ..() - - if (!in_range(src, user)) - return - - user.set_interaction(src) - var/dat = "Intelicard
        " - for(var/mob/living/silicon/ai/A in src) - dat += "Stored AI: [A.name]
        System integrity: [(A.health+100)/2]%
        " - - if (A.stat == 2) - dat += "AI nonfunctional" - else - if (!src.flush) - dat += {"
        Wipe AI"} - else - dat += "Wipe in progress" - dat += "
        " - dat += {"[A.control_disabled ? "Enable" : "Disable"] Wireless Activity"} - dat += "
        " - dat += "Subspace Transceiver is: [A.aiRadio.disabledAi ? "Disabled" : "Enabled"]" - dat += "
        " - dat += {"[A.aiRadio.disabledAi ? "Enable" : "Disable"] Subspace Transceiver"} - dat += "
        " - dat += {" Close"} - user << browse(dat, "window=aicard") - onclose(user, "aicard") - return - -/obj/item/device/aicard/Topic(href, href_list) - . = ..() - if(.) - return - var/mob/U = usr - if (!in_range(src, U)||U.interactee!=src)//If they are not in range of 1 or less or their machine is not the card (ie, clicked on something else). - close_browser(U, "aicard") - U.unset_interaction() - return - - add_fingerprint(U) - U.set_interaction(src) - - switch(href_list["choice"])//Now we switch based on choice. - if ("Close") - close_browser(U, "aicard") - U.unset_interaction() - return - - if ("Radio") - for(var/mob/living/silicon/ai/A in src) - A.aiRadio.disabledAi = !A.aiRadio.disabledAi - if ("Wipe") - var/confirm = alert("Are you sure you want to wipe this card's memory? This cannot be undone once started.", "Confirm Wipe", "Yes", "No") - if(confirm == "Yes") - if(QDELETED(src)||!in_range(src, U)||U.interactee!=src) - close_browser(U, "aicard") - U.unset_interaction() - return - else - flush = 1 - for(var/mob/living/silicon/ai/A in src) - to_chat(A, "Your core files are being wiped!") - while (A.stat != 2) - A.apply_damage(2, OXY) - A.updatehealth() - sleep(10) - flush = 0 - - if ("Wireless") - for(var/mob/living/silicon/ai/A in src) - A.control_disabled = !A.control_disabled - if (A.control_disabled) - overlays -= image('icons/obj/items/robot_component.dmi', "aicard-on") - else - overlays += image('icons/obj/items/robot_component.dmi', "aicard-on") - attack_self(U) diff --git a/code/game/objects/items/devices/autopsy_scanner.dm b/code/game/objects/items/devices/autopsy_scanner.dm index c4c7ec665e23..6703ead88147 100644 --- a/code/game/objects/items/devices/autopsy_scanner.dm +++ b/code/game/objects/items/devices/autopsy_scanner.dm @@ -17,12 +17,12 @@ /obj/item/device/autopsy_scanner/Initialize() . = ..() - LAZYADD(objects_of_interest, src) + LAZYADD(GLOB.objects_of_interest, src) /obj/item/device/autopsy_scanner/Destroy() . = ..() - LAZYREMOVE(objects_of_interest, src) + LAZYREMOVE(GLOB.objects_of_interest, src) /datum/autopsy_data_scanner var/weapon = null // this is the DEFINITE weapon type that was used @@ -90,7 +90,7 @@ var/scan_data = "" if(timeofdeath) - scan_data += "Time of death: [worldtime2text("hh:mm", timeofdeath)] [time2text(timeofdeath, "DDD MMM DD [game_year]")]

        " + scan_data += "Time of death: [worldtime2text("hh:mm", timeofdeath)] [time2text(timeofdeath, "DDD MMM DD [GLOB.game_year]")]

        " var/n = 1 for(var/wdata_idx in wdata) @@ -139,7 +139,7 @@ if(damaging_weapon) scan_data += "Severity: [damage_desc]
        " scan_data += "Hits by weapon: [total_hits]
        " - scan_data += "Approximate time of wound infliction: [worldtime2text("hh:mm", age)] [time2text(age, "DDD MMM DD [game_year]")]
        " + scan_data += "Approximate time of wound infliction: [worldtime2text("hh:mm", age)] [time2text(age, "DDD MMM DD [GLOB.game_year]")]
        " scan_data += "Affected limbs: [D.organ_names]
        " scan_data += "Possible weapons:
        " for(var/weapon_name in weapon_chances) @@ -174,7 +174,7 @@ M.update_inv_r_hand() /obj/item/device/autopsy_scanner/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob) - if(!istype(M) || !M.lying) + if(!istype(M) || !M.is_mob_incapacitated()) return var/table diff --git a/code/game/objects/items/devices/binoculars.dm b/code/game/objects/items/devices/binoculars.dm index a4589fb1dd78..84da7d9acff4 100644 --- a/code/game/objects/items/devices/binoculars.dm +++ b/code/game/objects/items/devices/binoculars.dm @@ -38,10 +38,14 @@ /obj/item/device/binoculars/on_set_interaction(mob/user) flags_atom |= RELAY_CLICK - + RegisterSignal(user, COMSIG_HUMAN_MOVEMENT_CANCEL_INTERACTION, PROC_REF(interaction_handler)) /obj/item/device/binoculars/on_unset_interaction(mob/user) flags_atom &= ~RELAY_CLICK + UnregisterSignal(user, COMSIG_HUMAN_MOVEMENT_CANCEL_INTERACTION) + +/obj/item/device/binoculars/proc/interaction_handler() + return COMPONENT_HUMAN_MOVEMENT_KEEP_USING /obj/item/device/binoculars/civ desc = "A pair of binoculars." @@ -119,7 +123,7 @@ to_chat(user, SPAN_WARNING("INVALID TARGET: target must be on the surface.")) return FALSE if(user.sight & SEE_TURFS) - var/list/turf/path = getline2(user, targeted_atom, include_from_atom = FALSE) + var/list/turf/path = get_line(user, targeted_atom, include_start_atom = FALSE) for(var/turf/T in path) if(T.opacity) to_chat(user, SPAN_WARNING("There is something in the way of the laser!")) @@ -211,7 +215,7 @@ /obj/item/device/binoculars/range/designator/Initialize() . = ..() - tracking_id = ++cas_tracking_id_increment + tracking_id = ++GLOB.cas_tracking_id_increment /obj/item/device/binoculars/range/designator/Destroy() QDEL_NULL(laser) @@ -418,7 +422,7 @@ if(!(GLOB.character_traits[/datum/character_trait/skills/spotter] in human.traits)) to_chat(human, SPAN_WARNING("You have no idea how to use this!")) return FALSE - if(istype(human) && !human.is_mob_incapacitated() && !human.lying && (holder_item == human.r_hand || holder_item || human.l_hand)) + if(istype(human) && !human.is_mob_incapacitated() && (holder_item == human.r_hand || holder_item || human.l_hand)) return TRUE /datum/action/item_action/specialist/spotter_target/proc/use_ability(atom/targeted_atom) diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm deleted file mode 100644 index 80a0d603282f..000000000000 --- a/code/game/objects/items/devices/camera_bug.dm +++ /dev/null @@ -1,34 +0,0 @@ -/obj/item/device/camera_bug - name = "camera bug" - icon_state = "flash" - w_class = SIZE_TINY - item_state = "electronic" - throw_speed = SPEED_VERY_FAST - throw_range = 20 - -/obj/item/device/camera_bug/attack_self(mob/usr as mob) - ..() - - var/list/cameras = new/list() - for (var/obj/structure/machinery/camera/C in cameranet.cameras) - if (C.bugged && C.status) - cameras.Add(C) - if (length(cameras) == 0) - to_chat(usr, SPAN_DANGER("No bugged functioning cameras found.")) - return - - var/list/friendly_cameras = new/list() - - for (var/obj/structure/machinery/camera/C in cameras) - friendly_cameras.Add(C.c_tag) - - var/target = tgui_input_list(usr, "Select the camera to observe", "Camera to Observe", friendly_cameras) - if (!target) - return - for (var/obj/structure/machinery/camera/C in cameras) - if (C.c_tag == target) - target = C - break - if (usr.stat == 2) return - - usr.client.eye = target diff --git a/code/game/objects/items/devices/cictablet.dm b/code/game/objects/items/devices/cictablet.dm index 2650a3057503..664054fb59e2 100644 --- a/code/game/objects/items/devices/cictablet.dm +++ b/code/game/objects/items/devices/cictablet.dm @@ -24,7 +24,10 @@ COOLDOWN_DECLARE(distress_cooldown) /obj/item/device/cotablet/Initialize() - tacmap = new(src, minimap_type) + if(announcement_faction == FACTION_MARINE) + tacmap = new /datum/tacmap/drawing(src, minimap_type) + else + tacmap = new(src, minimap_type) // Non-drawing version if(SSticker.mode && MODE_HAS_FLAG(MODE_FACTION_CLASH)) add_pmcs = FALSE else if(SSticker.current_state < GAME_STATE_PLAYING) @@ -40,10 +43,10 @@ add_pmcs = FALSE UnregisterSignal(SSdcs, COMSIG_GLOB_MODE_PRESETUP) -/obj/item/device/cotablet/attack_self(mob/user as mob) +/obj/item/device/cotablet/attack_self(mob/living/carbon/human/user as mob) ..() - if(src.allowed(user)) + if(src.allowed(user) && user.wear_id?.check_biometrics(user)) tgui_interact(user) else to_chat(user, SPAN_DANGER("Access denied.")) @@ -53,17 +56,17 @@ data["faction"] = announcement_faction data["cooldown_message"] = cooldown_between_messages + data["distresstimelock"] = DISTRESS_TIME_LOCK return data /obj/item/device/cotablet/ui_data(mob/user) var/list/data = list() - data["alert_level"] = security_level - data["evac_status"] = EvacuationAuthority.evac_status + data["alert_level"] = GLOB.security_level + data["evac_status"] = SShijack.evac_status data["endtime"] = announcement_cooldown data["distresstime"] = distress_cooldown - data["distresstimelock"] = DISTRESS_TIME_LOCK data["worldtime"] = world.time return data @@ -120,7 +123,7 @@ if("award") if(announcement_faction != FACTION_MARINE) return - print_medal(usr, src) + open_medal_panel(usr, src) . = TRUE if("mapview") @@ -131,34 +134,35 @@ if(announcement_faction != FACTION_MARINE) return - if(security_level < SEC_LEVEL_RED) + if(GLOB.security_level < SEC_LEVEL_RED) to_chat(usr, SPAN_WARNING("The ship must be under red alert in order to enact evacuation procedures.")) return FALSE - if(EvacuationAuthority.flags_scuttle & FLAGS_EVACUATION_DENY) + if(SShijack.evac_admin_denied) to_chat(usr, SPAN_WARNING("The USCM has placed a lock on deploying the evacuation pods.")) return FALSE - if(!EvacuationAuthority.initiate_evacuation()) + if(!SShijack.initiate_evacuation()) to_chat(usr, SPAN_WARNING("You are unable to initiate an evacuation procedure right now!")) return FALSE log_game("[key_name(usr)] has called for an emergency evacuation.") message_admins("[key_name_admin(usr)] has called for an emergency evacuation.") + log_ares_security("Initiate Evacuation", "[usr] has called for an emergency evacuation.") . = TRUE if("distress") if(!SSticker.mode) return FALSE //Not a game mode? - if(security_level == SEC_LEVEL_DELTA) + if(GLOB.security_level == SEC_LEVEL_DELTA) to_chat(usr, SPAN_WARNING("The ship is already undergoing self destruct procedures!")) return FALSE for(var/client/C in GLOB.admins) if((R_ADMIN|R_MOD) & C.admin_holder.rights) playsound_client(C,'sound/effects/sos-morse-code.ogg',10) - message_admins("[key_name(usr)] has requested a Distress Beacon! [CC_MARK(usr)] (SEND) (DENY) [ADMIN_JMP_USER(usr)] [CC_REPLY(usr)]") + SSticker.mode.request_ert(usr) to_chat(usr, SPAN_NOTICE("A distress beacon request has been sent to USCM Central Command.")) COOLDOWN_START(src, distress_cooldown, COOLDOWN_COMM_REQUEST) return TRUE diff --git a/code/game/objects/items/devices/cloaking.dm b/code/game/objects/items/devices/cloaking.dm index 05e7786744e2..b0c5ed799977 100644 --- a/code/game/objects/items/devices/cloaking.dm +++ b/code/game/objects/items/devices/cloaking.dm @@ -47,12 +47,12 @@ src.add_fingerprint(user) if(chameleon_on) user.alpha = 25 - to_chat(user, SPAN_NOTICE("You activate the [src].")) + to_chat(user, SPAN_NOTICE("You activate [src].")) spark_system.start() src.icon_state = "shield1" else user.alpha = initial(user.alpha) - to_chat(user, SPAN_NOTICE("You deactivate the [src].")) + to_chat(user, SPAN_NOTICE("You deactivate [src].")) src.icon_state = "shield0" spark_system.start() diff --git a/code/game/objects/items/devices/coins.dm b/code/game/objects/items/devices/coins.dm index 9af5f855b0fa..6c00364642da 100644 --- a/code/game/objects/items/devices/coins.dm +++ b/code/game/objects/items/devices/coins.dm @@ -11,11 +11,8 @@ black_market_value = 10 var/string_attached var/sides = 2 - -/obj/item/coin/Initialize() - . = ..() - pixel_x = rand(0,16)-8 - pixel_y = rand(0,8)-8 + ground_offset_x = 8 + ground_offset_y = 4 /obj/item/coin/gold name = "gold coin" @@ -29,8 +26,13 @@ icon_state = "coin_silver" black_market_value = 25 +//CO coin +/obj/item/coin/silver/falcon + name = "falling falcons challenge coin" + desc = "A small coin, bearing the falling falcons insignia." + /obj/item/coin/copper - name = "gold coin" + name = "copper coin" desc = "A familiar, but cheap form of currency." icon_state = "coin_copper" black_market_value = 30 @@ -43,7 +45,7 @@ /obj/item/coin/iron name = "iron coin" - desc = "You fear this might get rusty." + desc = "A coin made of sturdy iron. You fear this might become rusty." icon_state = "coin_iron" black_market_value = 15 @@ -55,25 +57,19 @@ /obj/item/coin/uranium name = "uranium coin" - desc = "Don't touch it!" + desc = "A radioactive coin. Don't touch it!" icon_state = "coin_uranium" black_market_value = 35 /obj/item/coin/platinum name = "platinum coin" - desc = "This is quite valuable." + desc = "A coin made of shiny platinum. It is quite valuable." icon_state = "coin_platinum" black_market_value = 35 -/obj/item/coin/marine/synth - name = "synthetic experimental tool redemption token" - desc = "Insert this into a synthetic experimental tools vendor in order to access a variety of experimental support tools." - icon_state = "coin_synth" - black_market_value = 0 - /obj/item/coin/chitin name = "chitin coin" - desc = "Durable chitin pressed into a coin. Why would anyone make this?" + desc = "Durable alien chitin pressed into a coin. There are much better uses for chitin..." icon_state = "coin_chitin" black_market_value = 35 @@ -119,3 +115,33 @@ comment = "heads" user.visible_message(SPAN_NOTICE("[user] has thrown \the [src]. It lands on [comment]! "), \ SPAN_NOTICE("You throw \the [src]. It lands on [comment]! ")) + + +/obj/item/coin/marine + name = "marine equipment token" + desc = "I wonder what it does?" + icon_state = "coin_copper" + black_market_value = 0 + /// What is the token for? + var/token_type = VEND_TOKEN_VOID + +/obj/item/coin/marine/attackby(obj/item/W as obj, mob/user as mob) //To remove attaching a string functionality + return + +/obj/item/coin/marine/engineer + name = "marine engineer support token" + desc = "Insert this into an engineer vendor in order to access a support weapon." + icon_state = "coin_gold" + token_type = VEND_TOKEN_ENGINEER + +/obj/item/coin/marine/specialist + name = "marine specialist weapon token" + desc = "Insert this into a USCM equipment vendor in order to access a single highly dangerous weapon." + icon_state = "coin_diamond" + token_type = VEND_TOKEN_SPEC + +/obj/item/coin/marine/synth + name = "synthetic experimental tool redemption token" + desc = "Insert this into a synthetic experimental tools vendor in order to access a variety of experimental support tools." + icon_state = "coin_synth" + token_type = VEND_TOKEN_SYNTH diff --git a/code/game/objects/items/devices/defibrillator.dm b/code/game/objects/items/devices/defibrillator.dm index 0596ae9d14b8..9da76b9d21b9 100644 --- a/code/game/objects/items/devices/defibrillator.dm +++ b/code/game/objects/items/devices/defibrillator.dm @@ -11,7 +11,10 @@ w_class = SIZE_MEDIUM var/blocked_by_suit = TRUE - var/heart_damage_to_deal = 5 + /// Min damage defib deals to victims' heart + var/min_heart_damage_dealt = 3 + /// Max damage defib deals to victims' heart + var/max_heart_damage_dealt = 5 var/ready = 0 var/damage_heal_threshold = 12 //This is the maximum non-oxy damage the defibrillator will heal to get a patient above -100, in all categories var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread @@ -191,8 +194,6 @@ shock_cooldown = world.time + 10 //1 second cooldown before you can shock again var/datum/internal_organ/heart/heart = H.internal_organs_by_name["heart"] - if(heart && prob(25)) - heart.take_damage(heart_damage_to_deal, TRUE) //Allow the defibrillator to possibly worsen heart damage. Still rare enough to just be the "clone damage" of the defib if(!H.is_revivable()) playsound(get_turf(src), 'sound/items/defib_failed.ogg', 25, 0) @@ -230,22 +231,28 @@ user.track_life_saved(user.job) user.life_revives_total++ H.handle_revive() + if(heart) + heart.take_damage(rand(min_heart_damage_dealt, max_heart_damage_dealt), TRUE) // Make death and revival leave lasting consequences + to_chat(H, SPAN_NOTICE("You suddenly feel a spark and your consciousness returns, dragging you back to the mortal plane.")) if(H.client?.prefs.toggles_flashing & FLASH_CORPSEREVIVE) window_flash(H.client) else user.visible_message(SPAN_WARNING("[icon2html(src, viewers(src))] \The [src] buzzes: Defibrillation failed. Vital signs are too weak, repair damage and try again.")) //Freak case playsound(get_turf(src), 'sound/items/defib_failed.ogg', 25, 0) + if(heart && prob(25)) + heart.take_damage(rand(min_heart_damage_dealt, max_heart_damage_dealt), TRUE) // Make death and revival leave lasting consequences /obj/item/device/defibrillator/compact_adv name = "advanced compact defibrillator" - desc = "An advanced compact defibrillator that trades capacity for strong immediate power. Ignores armor and heals strongly and quickly, at the cost of very low charge." + desc = "An advanced compact defibrillator that trades capacity for strong immediate power. Ignores armor and heals strongly and quickly, at the cost of very low charge. It does not damage the heart." icon = 'icons/obj/items/experimental_tools.dmi' icon_state = "compact_defib" item_state = "defib" w_class = SIZE_MEDIUM blocked_by_suit = FALSE - heart_damage_to_deal = 0 + min_heart_damage_dealt = 0 + max_heart_damage_dealt = 0 damage_heal_threshold = 40 charge_cost = 198 diff --git a/code/game/objects/items/devices/device.dm b/code/game/objects/items/devices/device.dm index 148d47249201..23fe7b86bb3a 100644 --- a/code/game/objects/items/devices/device.dm +++ b/code/game/objects/items/devices/device.dm @@ -5,9 +5,9 @@ icon = 'icons/obj/items/devices.dmi' var/serial_number -/obj/item/device/Initialize() +/obj/item/device/Initialize(mapload, ...) . = ..() - serial_number = "[rand(0,9)][pick(alphabet_uppercase)][rand(0,9)][rand(0,9)][rand(0,9)][rand(0,9)][pick(alphabet_uppercase)]" + serial_number = "[rand(0,9)][pick(GLOB.alphabet_uppercase)][rand(0,9)][rand(0,9)][rand(0,9)][rand(0,9)][pick(GLOB.alphabet_uppercase)]" /obj/item/device/get_examine_text(mob/user) . = ..() diff --git a/code/game/objects/items/devices/drone_devices.dm b/code/game/objects/items/devices/drone_devices.dm index 121a3c0aabc9..0e22b64bf67f 100644 --- a/code/game/objects/items/devices/drone_devices.dm +++ b/code/game/objects/items/devices/drone_devices.dm @@ -173,33 +173,6 @@ stored_comms["plastic"]++ stored_comms["plastic"]++ return - - else if(ismaintdrone(M) && !M.client) - - var/mob/living/silicon/robot/drone/D = src.loc - - if(!istype(D)) - return - - to_chat(D, SPAN_DANGER("You begin decompiling the other drone.")) - - if(!do_after(D, 50, INTERRUPT_NO_NEEDHAND, BUSY_ICON_GENERIC)) - to_chat(D, SPAN_DANGER("You need to remain still while decompiling such a large object.")) - return - - if(!M || !D) return - - to_chat(D, SPAN_DANGER("You carefully and thoroughly decompile your downed fellow, storing as much of its resources as you can within yourself.")) - - qdel(M) - new/obj/effect/decal/cleanable/blood/oil(get_turf(src)) - - stored_comms["metal"] += 15 - stored_comms["glass"] += 15 - stored_comms["wood"] += 5 - stored_comms["plastic"] += 5 - - return else continue diff --git a/code/game/objects/items/devices/dummy_tablet.dm b/code/game/objects/items/devices/dummy_tablet.dm index 92cfa4b90e26..d1036ebfa93b 100644 --- a/code/game/objects/items/devices/dummy_tablet.dm +++ b/code/game/objects/items/devices/dummy_tablet.dm @@ -12,6 +12,20 @@ linked_dummy = null . = ..() +/** + * Checks if the user is adjacent to the dummy + * + * Returns TRUE if the user is adjacent to the dummy, FALSE otherwise + * + * * arg-1: The user + */ +/obj/item/device/professor_dummy_tablet/proc/is_adjacent_to_dummy(mob/user) + if (get_dist(linked_dummy, user) > 1) + to_chat(user, "You are too far away to use the tablet.") + return FALSE + + return TRUE + /obj/item/device/professor_dummy_tablet/proc/link_mob(mob/living/carbon/human/H) linked_dummy = H @@ -20,6 +34,12 @@ interact(user) /obj/item/device/professor_dummy_tablet/interact(mob/user as mob) + if (isnull(linked_dummy)) + return + + if (!is_adjacent_to_dummy(user)) + return + user.set_interaction(src) var/dat = "Professor DUMMY Control Tablet" @@ -90,9 +110,11 @@ /obj/item/device/professor_dummy_tablet/Topic(href, href_list) if(..()) return FALSE - usr.set_interaction(src) + if (!is_adjacent_to_dummy(usr)) + return FALSE + usr.set_interaction(src) switch(href_list["operation"]) if ("brute_damage_organ") diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 0a7709aa6101..56d363774a62 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -102,17 +102,6 @@ else //if not carbon or sillicn flashfail = TRUE - if(isrobot(user)) - spawn(0) - var/atom/movable/overlay/animation = new(user.loc) - animation.layer = user.layer + 1 - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = user - flick("blspell", animation) - sleep(5) - qdel(animation) - if(!flashfail) if(!isSilicon(M)) user.visible_message(SPAN_DANGER("[user] blinds [M] with \the [src]!")) @@ -155,6 +144,7 @@ do_flash(user = user, aoe = TRUE) /obj/item/device/flash/emp_act(severity) + . = ..() if(broken) return switch(flashes_stored) if(0 to 5) @@ -168,7 +158,6 @@ if(M.flash_eyes()) M.apply_effect(10, WEAKEN) M.visible_message(SPAN_DISARM("[M] is blinded by \the [src]!")) - ..() /obj/item/device/flash/synthetic name = "synthetic flash" diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 6fe39172d783..58e86998f39a 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -10,9 +10,13 @@ matter = list("metal" = 50,"glass" = 20) + light_range = 5 + light_power = 1 + ground_offset_x = 2 + ground_offset_y = 6 + actions_types = list(/datum/action/item_action) var/on = FALSE - var/brightness_on = 5 //luminosity when on var/raillight_compatible = TRUE //Can this be turned into a rail light ? var/toggleable = TRUE @@ -22,6 +26,7 @@ /obj/item/device/flashlight/Initialize() . = ..() update_icon() + set_light_on(on) /obj/item/device/flashlight/update_icon() . = ..() @@ -30,27 +35,18 @@ else icon_state = initial(icon_state) -/obj/item/device/flashlight/Destroy() - if(on) - if(ismob(src.loc)) - src.loc.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) - . = ..() +/obj/item/device/flashlight/animation_spin(speed = 5, loop_amount = -1, clockwise = TRUE, sections = 3, angular_offset = 0, pixel_fuzz = 0) + clockwise = pick(TRUE, FALSE) + angular_offset = rand(360) + return ..() /obj/item/device/flashlight/proc/update_brightness(mob/user = null) if(on) + set_light_range(light_range) + set_light_on(TRUE) update_icon() - if(loc && loc == user) - user.SetLuminosity(brightness_on, FALSE, src) - else if(isturf(loc)) - SetLuminosity(brightness_on) else - icon_state = initial(icon_state) - if(loc && loc == user) - user.SetLuminosity(0, FALSE, src) - else if(isturf(loc)) - SetLuminosity(0) + set_light_on(FALSE) /obj/item/device/flashlight/attack_self(mob/user) ..() @@ -64,7 +60,8 @@ return FALSE on = !on - update_brightness(user) + set_light_on(on) + update_icon() for(var/X in actions) var/datum/action/A = X A.update_button_icon() @@ -73,8 +70,9 @@ /obj/item/device/flashlight/proc/turn_off_light(mob/bearer) if(on) - on = 0 - update_brightness(bearer) + on = FALSE + set_light_on(on) + update_icon() for(var/X in actions) var/datum/action/A = X A.update_button_icon() @@ -142,21 +140,7 @@ if(on && can_be_broken) if(breaking_sound) playsound(src.loc, breaking_sound, 25, 1) - on = FALSE - update_brightness() - -/obj/item/device/flashlight/pickup(mob/user) - if(on) - user.SetLuminosity(brightness_on, FALSE, src) - SetLuminosity(0) - ..() - - -/obj/item/device/flashlight/dropped(mob/user) - if(on && src.loc != user) - user.SetLuminosity(0, FALSE, src) - SetLuminosity(brightness_on) - ..() + turn_off_light() /obj/item/device/flashlight/on on = TRUE @@ -167,7 +151,7 @@ icon_state = "penlight" item_state = "" flags_atom = FPRINT|CONDUCT - brightness_on = 2 + light_range = 2 w_class = SIZE_TINY raillight_compatible = 0 @@ -176,7 +160,7 @@ desc = "A miniature lamp, that might be used by small robots." icon_state = "penlight" item_state = "" - brightness_on = 2 + light_range = 2 w_class = SIZE_TINY raillight_compatible = 0 @@ -186,23 +170,15 @@ desc = "A desk lamp with an adjustable mount." icon_state = "lamp" item_state = "lamp" - brightness_on = 5 + light_range = 5 w_class = SIZE_LARGE on = 0 raillight_compatible = 0 breaking_sound = 'sound/effects/Glasshit.ogg' -/obj/item/device/flashlight/lamp/Initialize() - . = ..() - - if(on) - update_brightness() - -/obj/item/device/flashlight/lamp/on/Initialize() //unused, but im leaving it here anyways :D - . = ..() - on = 1 - update_brightness() +/obj/item/device/flashlight/lamp/on + on = TRUE //Menorah! /obj/item/device/flashlight/lamp/menorah @@ -210,7 +186,7 @@ desc = "For celebrating Chanukah." icon_state = "menorah" item_state = "menorah" - brightness_on = 2 + light_range = 2 w_class = SIZE_LARGE on = 1 breaking_sound = null @@ -230,13 +206,13 @@ desc = "A classic green-shaded desk lamp." icon_state = "lampgreen" item_state = "lampgreen" - brightness_on = 5 + light_range = 5 /obj/item/device/flashlight/lamp/tripod name = "tripod lamp" desc = "An emergency light tube mounted onto a tripod. It seemingly lasts forever." icon_state = "tripod_lamp" - brightness_on = 6//pretty good + light_range = 6//pretty good w_class = SIZE_LARGE on = 1 @@ -261,7 +237,8 @@ name = "flare" desc = "A red USCM issued flare. There are instructions on the side, it reads 'pull cord, make light'." w_class = SIZE_SMALL - brightness_on = 5 //As bright as a flashlight, but more disposable. Doesn't burn forever though + light_power = 2 + light_range = 7 icon_state = "flare" item_state = "flare" actions = list() //just pull it manually, neckbeard. @@ -286,7 +263,8 @@ /obj/item/device/flashlight/flare/Initialize() . = ..() - fuel = rand(1600 SECONDS, 2000 SECONDS) + fuel = rand(9.5 MINUTES, 10.5 MINUTES) + set_light_color(flame_tint) /obj/item/device/flashlight/flare/update_icon() overlays?.Cut() @@ -325,8 +303,6 @@ // Causes flares to stop with a rotation offset for visual purposes /obj/item/device/flashlight/flare/animation_spin(speed = 5, loop_amount = -1, clockwise = TRUE, sections = 3, angular_offset = 0, pixel_fuzz = 0) - clockwise = pick(TRUE, FALSE) - angular_offset = rand(360) pixel_fuzz = 16 return ..() /obj/item/device/flashlight/flare/pickup() @@ -353,7 +329,7 @@ START_PROCESSING(SSobj, src) /obj/item/device/flashlight/flare/proc/turn_off() - on = 0 + on = FALSE heat_source = 0 force = initial(force) damtype = initial(damtype) @@ -401,7 +377,6 @@ /// Flares deployed by a flare gun /obj/item/device/flashlight/flare/on/gun - brightness_on = 7 //Special flare subtype for the illumination flare shell //Acts like a flare, just even stronger, and set length @@ -409,14 +384,12 @@ name = "illumination flare" desc = "It's really bright, and unreachable." icon_state = "" //No sprite - invisibility = 101 //Can't be seen or found, it's "up in the sky" mouse_opacity = MOUSE_OPACITY_TRANSPARENT - brightness_on = 7 //Way brighter than most lights show_flame = FALSE /obj/item/device/flashlight/flare/on/illumination/Initialize() . = ..() - fuel = rand(800 SECONDS, 1000 SECONDS) // Half the duration of a flare, but justified since it's invincible + fuel = rand(4.5 MINUTES, 5.5 MINUTES) // Half the duration of a flare, but justified since it's invincible /obj/item/device/flashlight/flare/on/illumination/update_icon() return @@ -430,9 +403,8 @@ /obj/item/device/flashlight/flare/on/starshell_ash name = "burning star shell ash" - desc = "Bright burning ash from a Star Shell 40mm. Don't touch, oh it'll burn ya'." + desc = "Bright burning ash from a Star Shell 40mm. Don't touch, or it'll burn ya'." icon_state = "starshell_ash" - brightness_on = 7 anchored = TRUE//can't be picked up ammo_datum = /datum/ammo/flare/starshell show_flame = FALSE @@ -441,18 +413,18 @@ if(mapload) return INITIALIZE_HINT_QDEL . = ..() - fuel = rand(5 SECONDS, 60 SECONDS) + fuel = rand(30 SECONDS, 60 SECONDS) /obj/item/device/flashlight/flare/on/illumination/chemical name = "chemical light" - brightness_on = 0 + light_range = 0 /obj/item/device/flashlight/flare/on/illumination/chemical/Initialize(mapload, amount) . = ..() - brightness_on = round(amount * 0.04) - if(!brightness_on) + light_range = round(amount * 0.04) + if(!light_range) return INITIALIZE_HINT_QDEL - SetLuminosity(brightness_on) + set_light(light_range) fuel = amount * 5 SECONDS /obj/item/device/flashlight/slime @@ -464,7 +436,7 @@ icon_state = "floor1" item_state = "slime" w_class = SIZE_TINY - brightness_on = 6 + light_range = 6 // Bio-luminesence has one setting, on. on = TRUE raillight_compatible = FALSE @@ -473,7 +445,7 @@ /obj/item/device/flashlight/slime/Initialize() . = ..() - SetLuminosity(brightness_on) + set_light(light_range) update_brightness() icon_state = initial(icon_state) @@ -483,7 +455,7 @@ name = "lantern" icon_state = "lantern" desc = "A mining lantern." - brightness_on = 6 // luminosity when on + light_range = 6 // luminosity when on //Signal Flare /obj/item/device/flashlight/flare/signal @@ -515,13 +487,13 @@ /obj/item/device/flashlight/flare/signal/activate_signal(mob/living/carbon/human/user) ..() - if(faction && cas_groups[faction]) + if(faction && GLOB.cas_groups[faction]) signal = new(src) - signal.target_id = ++cas_tracking_id_increment + signal.target_id = ++GLOB.cas_tracking_id_increment name = "[user.assigned_squad ? user.assigned_squad.name : "X"]-[signal.target_id] flare" signal.name = name signal.linked_cam = new(loc, name) - cas_groups[user.faction].add_signal(signal) + GLOB.cas_groups[user.faction].add_signal(signal) anchored = TRUE if(activate_message) visible_message(SPAN_DANGER("[src]'s flame reaches full strength. It's fully active now."), null, 5) @@ -541,14 +513,14 @@ /obj/item/device/flashlight/flare/signal/Destroy() STOP_PROCESSING(SSobj, src) if(signal) - cas_groups[faction].remove_signal(signal) + GLOB.cas_groups[faction].remove_signal(signal) QDEL_NULL(signal) return ..() /obj/item/device/flashlight/flare/signal/turn_off() anchored = FALSE if(signal) - cas_groups[faction].remove_signal(signal) + GLOB.cas_groups[faction].remove_signal(signal) qdel(signal) ..() @@ -577,9 +549,9 @@ turn_on() faction = FACTION_MARINE signal = new(src) - signal.target_id = ++cas_tracking_id_increment + signal.target_id = ++GLOB.cas_tracking_id_increment name += " [rand(100, 999)]" signal.name = name signal.linked_cam = new(loc, name) - cas_groups[FACTION_MARINE].add_signal(signal) + GLOB.cas_groups[FACTION_MARINE].add_signal(signal) anchored = TRUE diff --git a/code/game/objects/items/devices/helmet_visors.dm b/code/game/objects/items/devices/helmet_visors.dm new file mode 100644 index 000000000000..05d75a9fefd6 --- /dev/null +++ b/code/game/objects/items/devices/helmet_visors.dm @@ -0,0 +1,325 @@ +/obj/item/device/helmet_visor + name = "squad optic" + desc = "An insertable visor HUD into a standard USCM helmet." + icon = 'icons/obj/items/clothing/helmet_visors.dmi' + icon_state = "hud_sight" + w_class = SIZE_TINY + + ///The type of HUD our visor shows + var/hud_type = MOB_HUD_FACTION_USCM + + ///The sound when toggling on the visor + var/toggle_on_sound = 'sound/handling/hud_on.ogg' + + ///The sound when toggling off the visor + var/toggle_off_sound = 'sound/handling/hud_off.ogg' + + ///The icon name for our helmet's action, in 'icons/obj/items/clothing/helmet_visors.dmi' + var/action_icon_string = "hud_sight_down" + + ///The overlay name for when our visor is active, in 'icons/mob/humans/onmob/helmet_garb.dmi' + var/helmet_overlay = "hud_sight_right" + +/obj/item/device/helmet_visor/Destroy(force) + if(!istype(loc, /obj/item/clothing/head/helmet/marine)) + return ..() + + if(!istype(loc?.loc, /mob/living/carbon/human)) + return ..() + + var/obj/item/clothing/head/helmet/marine/attached_helmet = loc + var/mob/living/carbon/human/user = loc.loc + deactivate_visor(attached_helmet, user) + . = ..() + +/// Called to see if the user can even use this visor +/obj/item/device/helmet_visor/proc/can_toggle(mob/living/carbon/human/user) + return TRUE + +/// Called to see if this visor is a special non-HUD visor +/obj/item/device/helmet_visor/proc/toggle_visor(obj/item/clothing/head/helmet/marine/attached_helmet, mob/living/carbon/human/user, silent = FALSE) + if(attached_helmet == user.head && attached_helmet.active_visor == src) + + if(!can_toggle(user)) + return FALSE + + activate_visor(attached_helmet, user) + + if(!silent) + to_chat(user, SPAN_NOTICE("You activate [src] on [attached_helmet].")) + playsound_client(user.client, toggle_on_sound, null, 75) + + return TRUE + + deactivate_visor(attached_helmet, user) + + if(!silent) + to_chat(user, SPAN_NOTICE("You deactivate [src] on [attached_helmet].")) + playsound_client(user.client, toggle_off_sound, null, 75) + + return TRUE + +/// Called by toggle_visor() to activate the visor's effects +/obj/item/device/helmet_visor/proc/activate_visor(obj/item/clothing/head/helmet/marine/attached_helmet, mob/living/carbon/human/user) + var/datum/mob_hud/current_mob_hud = GLOB.huds[hud_type] + current_mob_hud.add_hud_to(user, attached_helmet) + +/// Called by toggle_visor() to deactivate the visor's effects +/obj/item/device/helmet_visor/proc/deactivate_visor(obj/item/clothing/head/helmet/marine/attached_helmet, mob/living/carbon/human/user) + var/datum/mob_hud/current_mob_hud = GLOB.huds[hud_type] + current_mob_hud.remove_hud_from(user, attached_helmet) + +/// Called by /obj/item/clothing/head/helmet/marine/get_examine_text(mob/user) to get extra examine text for this visor +/obj/item/device/helmet_visor/proc/get_helmet_examine_text() + return SPAN_NOTICE("\A [name] is flipped down.") + +/obj/item/device/helmet_visor/medical + name = "basic medical optic" + icon_state = "med_sight" + hud_type = MOB_HUD_MEDICAL_ADVANCED + action_icon_string = "med_sight_down" + helmet_overlay = "med_sight_right" + +/obj/item/device/helmet_visor/medical/advanced + name = "advanced medical optic" + helmet_overlay = "med_sight_left" + +/obj/item/device/helmet_visor/medical/advanced/activate_visor(obj/item/clothing/head/helmet/marine/attached_helmet, mob/living/carbon/human/user) + . = ..() + + var/datum/action/item_action/view_publications/helmet_visor/publication_action = new(attached_helmet) + publication_action.give_to(user) + +/obj/item/device/helmet_visor/medical/advanced/deactivate_visor(obj/item/clothing/head/helmet/marine/attached_helmet, mob/living/carbon/human/user) + . = ..() + + var/datum/action/item_action/view_publications/helmet_visor/publication_action = locate() in attached_helmet.actions + qdel(publication_action) + +/obj/item/device/helmet_visor/medical/advanced/can_toggle(mob/living/carbon/human/user) + . = ..() + if(!.) + return + + if(!skillcheck(user, SKILL_MEDICAL, SKILL_MEDICAL_MEDIC)) + to_chat(user, SPAN_NOTICE("You are not skilled enough to use [src].")) + return FALSE + + return TRUE + +/obj/item/device/helmet_visor/medical/advanced/ui_state(mob/user) + return GLOB.not_incapacitated_and_adjacent_strict_state + +/obj/item/device/helmet_visor/medical/advanced/ui_data(mob/user) + var/list/data = list( + "published_documents" = GLOB.chemical_data.research_publications, + "terminal_view" = FALSE + ) + return data + +/obj/item/device/helmet_visor/medical/advanced/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if (!ui) + ui = new(user, src, "PublishedDocsHud", name) + ui.open() + +/obj/item/device/helmet_visor/medical/advanced/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + + if(!ishuman(ui.user)) + return + + var/mob/living/carbon/human/user = ui.user + + if(user.stat || user.is_mob_restrained() || !in_range(src, user)) + return + + switch(action) + if ("read_document") + var/print_type = params["print_type"] + var/print_title = params["print_title"] + var/obj/item/paper/research_report/report = GLOB.chemical_data.get_report(print_type, print_title) + if(report) + report.read_paper(user) + return + +/datum/action/item_action/view_publications/helmet_visor/action_activate() + var/obj/item/device/helmet_visor/medical/advanced/medical_visor = locate() in holder_item + + if(!medical_visor) + return + + medical_visor.tgui_interact(owner) + +/obj/item/device/helmet_visor/security + name = "security optic" + icon_state = "sec_sight" + hud_type = MOB_HUD_SECURITY_ADVANCED + action_icon_string = "sec_sight_down" + helmet_overlay = "sec_sight_right" + +/obj/item/device/helmet_visor/welding_visor + name = "welding visor" + icon_state = "sight_empty" + hud_type = null + action_icon_string = "blank_hud_sight_down" + helmet_overlay = "weld_visor" + +/obj/item/device/helmet_visor/welding_visor/activate_visor(obj/item/clothing/head/helmet/marine/attached_helmet, mob/living/carbon/human/user) + attached_helmet.vision_impair = VISION_IMPAIR_MAX + attached_helmet.flags_inventory |= COVEREYES|COVERMOUTH + attached_helmet.flags_inv_hide |= HIDEEYES|HIDEFACE + attached_helmet.eye_protection = EYE_PROTECTION_WELDING + user.update_tint() + +/obj/item/device/helmet_visor/welding_visor/deactivate_visor(obj/item/clothing/head/helmet/marine/attached_helmet, mob/living/carbon/human/user) + attached_helmet.vision_impair = VISION_IMPAIR_NONE + attached_helmet.flags_inventory &= ~(COVEREYES|COVERMOUTH) + attached_helmet.flags_inv_hide &= ~(HIDEEYES|HIDEFACE) + attached_helmet.eye_protection = EYE_PROTECTION_NONE + user.update_tint() + +/obj/item/device/helmet_visor/welding_visor/mercenary + helmet_overlay = "" + +/obj/item/device/helmet_visor/welding_visor/tanker + helmet_overlay = "tanker_weld_visor" + +#define NVG_VISOR_USAGE(delta_time) (power_cell.use(power_use * (delta_time ? delta_time : 1))) + +/obj/item/device/helmet_visor/night_vision + name = "night vision optic" + desc = "An insertable visor HUD into a standard USCM helmet. This type gives a form of night vision and is standard issue in units with regular funding." + icon_state = "nvg_sight" + hud_type = null + action_icon_string = "nvg_sight_down" + helmet_overlay = "nvg_sight_right" + toggle_on_sound = 'sound/handling/toggle_nv1.ogg' + toggle_off_sound = 'sound/handling/toggle_nv2.ogg' + + /// The internal battery for the visor + var/obj/item/cell/high/power_cell + + /// About 5 minutes active use charge (hypothetically) + var/power_use = 33 + + /// The alpha of darkness we set to for the mob while the visor is on, not completely fullbright but see-able + var/lighting_alpha = 100 + + /// A slight glowing green light while the NVG is activated, is initialized as in the attached_helmet's contents + var/atom/movable/nvg_light/on_light + + /// Whether or not the sight uses on_light and produces light + var/visor_glows = TRUE + +/obj/item/device/helmet_visor/night_vision/Initialize(mapload, ...) + . = ..() + power_cell = new(src) + +/obj/item/device/helmet_visor/night_vision/Destroy() + power_cell = null + . = ..() + +/obj/item/device/helmet_visor/night_vision/get_examine_text(mob/user) + . = ..() + + . += SPAN_NOTICE("It is currently at [round((power_cell.charge / power_cell.maxcharge) * 100)]% charge.") + +/obj/item/device/helmet_visor/night_vision/activate_visor(obj/item/clothing/head/helmet/marine/attached_helmet, mob/living/carbon/human/user) + RegisterSignal(user, COMSIG_HUMAN_POST_UPDATE_SIGHT, PROC_REF(on_update_sight)) + + user.add_client_color_matrix("nvg_visor", 99, color_matrix_multiply(color_matrix_saturation(0), color_matrix_from_string("#7aff7a"))) + user.overlay_fullscreen("nvg_visor", /atom/movable/screen/fullscreen/flash/noise/nvg) + user.overlay_fullscreen("nvg_visor_blur", /atom/movable/screen/fullscreen/brute/nvg, 3) + user.update_sight() + if(visor_glows) + on_light = new(attached_helmet) + on_light.set_light_on(TRUE) + START_PROCESSING(SSobj, src) + +/obj/item/device/helmet_visor/night_vision/deactivate_visor(obj/item/clothing/head/helmet/marine/attached_helmet, mob/living/carbon/human/user) + user.remove_client_color_matrix("nvg_visor", 1 SECONDS) + user.clear_fullscreen("nvg_visor", 0.5 SECONDS) + user.clear_fullscreen("nvg_visor_blur", 0.5 SECONDS) + + if(visor_glows) + qdel(on_light) + UnregisterSignal(user, COMSIG_HUMAN_POST_UPDATE_SIGHT) + + user.update_sight() + STOP_PROCESSING(SSobj, src) + +/obj/item/device/helmet_visor/night_vision/process(delta_time) + if(!NVG_VISOR_USAGE(delta_time)) + + if(!istype(loc, /obj/item/clothing/head/helmet/marine)) + return PROCESS_KILL + + if(!istype(loc?.loc, /mob/living/carbon/human)) + return PROCESS_KILL + + var/obj/item/clothing/head/helmet/marine/attached_helmet = loc + var/mob/living/carbon/human/user = loc.loc + to_chat(user, SPAN_NOTICE("[src] deactivates as the battery goes out.")) + deactivate_visor(attached_helmet, user) + return PROCESS_KILL + +/obj/item/device/helmet_visor/night_vision/can_toggle(mob/living/carbon/human/user) + . = ..() + if(!.) + return + + if(!NVG_VISOR_USAGE(FALSE)) + to_chat(user, SPAN_NOTICE("Your [src] is out of power! You'll need to recharge it.")) + return FALSE + + return TRUE + +/obj/item/device/helmet_visor/night_vision/get_helmet_examine_text() + . = ..() + + . += SPAN_NOTICE(" It is currently at [round((power_cell.charge / power_cell.maxcharge) * 100)]% charge.") + +/obj/item/device/helmet_visor/night_vision/proc/on_update_sight(mob/user) + SIGNAL_HANDLER + + if(lighting_alpha < 255) + user.see_in_dark = 12 + user.lighting_alpha = lighting_alpha + user.sync_lighting_plane_alpha() + +#undef NVG_VISOR_USAGE + +/atom/movable/nvg_light + light_power = 0.5 + light_range = 1 + light_color = COLOR_LIGHT_GREEN + light_system = MOVABLE_LIGHT + light_flags = LIGHT_ATTACHED + +/obj/item/device/helmet_visor/night_vision/marine_raider + name = "advanced night vision optic" + desc = "An insertable visor HUD into a standard USCM helmet. This type gives a form of night vision and is standard issue in special forces units." + hud_type = list(MOB_HUD_FACTION_USCM, MOB_HUD_MEDICAL_ADVANCED) + helmet_overlay = "nvg_sight_right_raider" + power_use = 0 + visor_glows = FALSE + +/obj/item/device/helmet_visor/night_vision/marine_raider/activate_visor(obj/item/clothing/head/helmet/marine/attached_helmet, mob/living/carbon/human/user) + . = ..() + + for(var/type in hud_type) + var/datum/mob_hud/current_mob_hud = GLOB.huds[type] + current_mob_hud.add_hud_to(user, attached_helmet) + +/obj/item/device/helmet_visor/night_vision/marine_raider/deactivate_visor(obj/item/clothing/head/helmet/marine/attached_helmet, mob/living/carbon/human/user) + . = ..() + + for(var/type in hud_type) + var/datum/mob_hud/current_mob_hud = GLOB.huds[type] + current_mob_hud.remove_hud_from(user, attached_helmet) + +/obj/item/device/helmet_visor/night_vision/marine_raider/process(delta_time) + return PROCESS_KILL diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 40ef8792aedb..05872284ecc2 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -25,7 +25,7 @@ // I'm not sure everyone will react the emag's features so please say what your opinions are of it. // // When emagged it will rig every light it replaces, which will explode when the light is on. -// This is VERY noticable, even the device's name changes when you emag it so if anyone +// This is VERY noticeable, even the device's name changes when you emag it so if anyone // examines you when you're holding it in your hand, you will be discovered. // It will also be very obvious who is setting all these lights off, since only Janitor Borgs and Janitors have easy // access to them, and only one of them can emag their device. @@ -121,7 +121,7 @@ if(target.status != LIGHT_OK) if(CanUse(U)) if(!Use(U)) return - to_chat(U, SPAN_NOTICE("You replace the [target.fitting] with the [src].")) + to_chat(U, SPAN_NOTICE("You replace the [target.fitting] with [src].")) if(target.status != LIGHT_EMPTY) diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 6a01dfdba9da..114ed48b1819 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -28,6 +28,10 @@ var/message = tgui_input_text(user, "Shout a message?", "Megaphone", multiline = TRUE) if(!message) return + // we know user is a human now, so adjust user for this check + var/mob/living/carbon/human/humanoid = user + var/list/new_message = humanoid.handle_speech_problems(message) + message = new_message[1] message = capitalize(message) log_admin("[key_name(user)] used a megaphone to say: >[message]<") diff --git a/code/game/objects/items/devices/motion_detector.dm b/code/game/objects/items/devices/motion_detector.dm index 01858ed486d0..c26db692f082 100644 --- a/code/game/objects/items/devices/motion_detector.dm +++ b/code/game/objects/items/devices/motion_detector.dm @@ -22,6 +22,7 @@ item_state = "motion_detector" flags_atom = FPRINT| CONDUCT flags_equip_slot = SLOT_WAIST + inherent_traits = list(TRAIT_ITEM_NOT_IMPLANTABLE) var/list/blip_pool = list() var/detector_range = 14 var/detector_mode = MOTION_DETECTOR_LONG @@ -219,7 +220,6 @@ var/mob/living/M = A //do this to skip the unnecessary istype() check; everything in ping_candidate is a mob already if(M == loc) continue //device user isn't detected if(world.time > M.l_move_time + 20) continue //hasn't moved recently - if(isrobot(M)) continue if(M.get_target_lock(iff_signal)) continue @@ -228,11 +228,14 @@ if(human_user) show_blip(human_user, M) - for(var/mob/hologram/queen/Q in GLOB.hologram_list) - if(Q.z != cur_turf.z || !(range_bounds.contains_atom(Q))) continue + for(var/mob/hologram/holo as anything in GLOB.hologram_list) + if(!holo.motion_sensed) + continue + if(holo.z != cur_turf.z || !(range_bounds.contains_atom(holo))) + continue ping_count++ if(human_user) - show_blip(human_user, Q, "queen_eye") + show_blip(human_user, holo, "queen_eye") if(ping_count > 0) playsound(loc, pick('sound/items/detector_ping_1.ogg', 'sound/items/detector_ping_2.ogg', 'sound/items/detector_ping_3.ogg', 'sound/items/detector_ping_4.ogg'), 60, 0, 7, 2) @@ -276,13 +279,13 @@ DB.icon_state = "[blip_icon]_blip" DB.setDir(initial(DB.dir)) - DB.screen_loc = "[Clamp(c_view + 1 - view_x_offset + (target.x - user.x), 1, 2*c_view+1)],[Clamp(c_view + 1 - view_y_offset + (target.y - user.y), 1, 2*c_view+1)]" - user.client.screen += DB + DB.screen_loc = "[clamp(c_view + 1 - view_x_offset + (target.x - user.x), 1, 2*c_view+1)],[clamp(c_view + 1 - view_y_offset + (target.y - user.y), 1, 2*c_view+1)]" + user.client.add_to_screen(DB) addtimer(CALLBACK(src, PROC_REF(clear_pings), user, DB), 1 SECONDS) /obj/item/device/motiondetector/proc/clear_pings(mob/user, obj/effect/detector_blip/DB) if(user.client) - user.client.screen -= DB + user.client.remove_from_screen(DB) /obj/item/device/motiondetector/m717 name = "M717 pocket motion detector" @@ -309,7 +312,7 @@ name = "hacked motion detector" desc = "A device that usually picks up non-USCM signals, but this one's been hacked to detect all non-freelancer movement instead. Fight fire with fire!" iff_signal = FACTION_MERCENARY - + /obj/item/device/motiondetector/hacked/pmc name = "corporate motion detector" desc = "A device that usually picks up non-USCM signals, but this one's been reprogrammed to detect all non-PMC movement instead. Very corporate." diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 273ced980b44..a92135b9d7ed 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -53,8 +53,8 @@ var/area/A = get_area(src) var/APC = A? A.get_apc() : null if(APC) - to_chat(user, SPAN_NOTICE("The local APC is located at [SPAN_BOLD("[get_dist(src, APC)] units [dir2text(get_dir(src, APC))]")].")) - user.balloon_alert(user, "[get_dist(src, APC)] units [dir2text(get_dir(src, APC))]") + to_chat(user, SPAN_NOTICE("The local APC is located at [SPAN_BOLD("[get_dist(src, APC)] units [dir2text(Get_Compass_Dir(src, APC))]")].")) + user.balloon_alert(user, "[get_dist(src, APC)] units [dir2text(Get_Compass_Dir(src, APC))]") else to_chat(user, SPAN_WARNING("ERROR: Could not locate local APC.")) user.balloon_alert(user, "could not locate!") diff --git a/code/game/objects/items/devices/personal_data_transmitter.dm b/code/game/objects/items/devices/personal_data_transmitter.dm index 6e8aa001cad3..98f8c60452ea 100644 --- a/code/game/objects/items/devices/personal_data_transmitter.dm +++ b/code/game/objects/items/devices/personal_data_transmitter.dm @@ -122,7 +122,7 @@ return var/dist = get_dist(self_turf, bracelet_turf) - var/direction = dir2text_short(get_dir(self_turf, bracelet_turf)) + var/direction = dir2text_short(Get_Compass_Dir(self_turf, bracelet_turf)) if(dist > 1) to_chat(user, SPAN_BOLDNOTICE("The display on \the [src] lights up: [dist]-[direction]")) else diff --git a/code/game/objects/items/devices/pinpointer.dm b/code/game/objects/items/devices/pinpointer.dm index 7ec3118ef96b..2f5d9ffe9d5f 100644 --- a/code/game/objects/items/devices/pinpointer.dm +++ b/code/game/objects/items/devices/pinpointer.dm @@ -31,7 +31,7 @@ if(!the_disk) icon_state = "pinonnull" return - setDir(get_dir(src,the_disk)) + setDir(Get_Compass_Dir(src,the_disk)) switch(get_dist(src,the_disk)) if(0) icon_state = "pinondirect" @@ -45,7 +45,7 @@ /obj/item/device/pinpointer/get_examine_text(mob/user) . = ..() - for(var/obj/structure/machinery/nuclearbomb/bomb in machines) + for(var/obj/structure/machinery/nuclearbomb/bomb in GLOB.machines) if(bomb.timing) . += "Extreme danger. Arming signal detected. Time remaining: [bomb.timeleft]" @@ -80,7 +80,7 @@ if(!location) icon_state = "pinonnull" return - setDir(get_dir(src,location)) + setDir(Get_Compass_Dir(src,location)) switch(get_dist(src,location)) if(0) icon_state = "pinondirect" @@ -99,7 +99,7 @@ if(!target) icon_state = "pinonnull" return - setDir(get_dir(src,target)) + setDir(Get_Compass_Dir(src,target)) switch(get_dist(src,target)) if(0) icon_state = "pinondirect" diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm index 840098cbc492..a69fe64c2565 100644 --- a/code/game/objects/items/devices/pipe_painter.dm +++ b/code/game/objects/items/devices/pipe_painter.dm @@ -9,7 +9,7 @@ /obj/item/device/pipe_painter/New() ..() modes = new() - for(var/C in pipe_colors) + for(var/C in GLOB.pipe_colors) modes += "[C]" mode = pick(modes) @@ -26,7 +26,7 @@ to_chat(user, SPAN_DANGER("You must remove the plating first.")) return - P.change_color(pipe_colors[mode]) + P.change_color(GLOB.pipe_colors[mode]) /obj/item/device/pipe_painter/attack_self(mob/user) ..() diff --git a/code/game/objects/items/devices/portable_vendor.dm b/code/game/objects/items/devices/portable_vendor.dm index 0b96b859c4ac..da399192b713 100644 --- a/code/game/objects/items/devices/portable_vendor.dm +++ b/code/game/objects/items/devices/portable_vendor.dm @@ -21,10 +21,12 @@ var/use_points = TRUE var/fabricating = FALSE var/broken = FALSE + var/contraband = FALSE var/list/purchase_log = list() var/list/listed_products = list() + var/list/contraband_products = list() /// needs to be a time define var/special_prod_time_lock @@ -44,7 +46,7 @@ if(!ishuman(user)) return - var/mob/living/carbon/human/H = user + var/mob/living/carbon/human/human_user = user src.add_fingerprint(usr) @@ -56,17 +58,17 @@ to_chat(user, SPAN_WARNING("Access denied.")) return - var/obj/item/card/id/I = H.wear_id - if(!istype(I)) //not wearing an ID - to_chat(H, SPAN_WARNING("Access denied. No ID card detected")) + var/obj/item/card/id/idcard = human_user.wear_id + if(!istype(idcard)) //not wearing an ID + to_chat(human_user, SPAN_WARNING("Access denied. No ID card detected")) return - if(I.registered_name != H.real_name) - to_chat(H, SPAN_WARNING("Wrong ID card owner detected.")) + if(!idcard.check_biometrics(human_user)) + to_chat(human_user, SPAN_WARNING("Wrong ID card owner detected.")) return - if(req_role && I.rank != req_role) - to_chat(H, SPAN_WARNING("This device isn't for you.")) + if(req_role && idcard.rank != req_role) + to_chat(human_user, SPAN_WARNING("This device isn't for you.")) return @@ -97,6 +99,22 @@ var/available = points >= product[2] || !use_points available_items += list(list("index" = index, "name" = name, "cost" = cost, "available" = available, "color" = color, "description" = description)) + if(contraband) + var/non_contraband_product_count = length(listed_products) + for(var/index in 1 to length(contraband_products)) + var/product = contraband_products[index] + + var/name = product[1] + var/cost = product[2] + var/color = product[4] + var/description = product[5] + + if(cost > 0) + name += " ([cost] points)" + + var/available = points >= product[2] || !use_points + available_items += list(list("index" = index + non_contraband_product_count, "name" = name, "cost" = cost, "available" = available, "color" = color, "description" = description)) + .["vendor_name"] = name .["show_points"] = use_points .["current_points"] = round(points) @@ -139,7 +157,13 @@ if(req_role && req_role != id.rank) to_chat(human_user, SPAN_WARNING("This device isn't for you.")) - var/list/product = listed_products[choice] + var/list/product + var/non_contraband_product_count = length(listed_products) + if(choice > non_contraband_product_count) + choice -= non_contraband_product_count + product = contraband_products[choice] + else + product = listed_products[choice] var/cost = product[2] @@ -210,6 +234,7 @@ s.start() /obj/item/device/portable_vendor/emp_act(severity) + . = ..() if (broken) return if (prob(40*severity)) @@ -238,7 +263,7 @@ special_prod_time_lock = CL_BRIEFCASE_TIME_LOCK special_prods = list(/obj/item/implanter/neurostim, /obj/item/reagent_container/hypospray/autoinjector/ultrazine/liaison) - req_access = list(ACCESS_WY_CORPORATE) + req_access = list(ACCESS_WY_EXEC) req_role = JOB_CORPORATE_LIAISON listed_products = list( list("INCENTIVES", 0, null, null, null), @@ -251,7 +276,7 @@ list("SMOKABLES", 0, null, null, null), list("Cigars", 5, /obj/item/storage/fancy/cigar, "white", "Case of premium cigars, untampered."), list("Cigarettes", 5, /obj/item/storage/fancy/cigarettes/wypacket, "white", "Weyland-Yutani Gold packet, for the more sophisticated taste."), - list("Zippo", 5, /obj/item/tool/lighter/zippo, "white", "A Zippo lighter, for those smoking in style."), + list("Zippo", 5, /obj/item/tool/lighter/zippo/executive, "white", "A Weyland-Yutani brand Zippo lighter, for those smoking in style."), list("DRINKABLES", 0, null, null, null), list("Sake", 5, /obj/item/reagent_container/food/drinks/bottle/sake, "white", "Weyland-Yutani Sake, for a proper business dinner."), @@ -270,4 +295,23 @@ list("MISC", 0, null, null, null), list("Hollow Cane", 15, /obj/item/weapon/pole/fancy_cane/this_is_a_knife, "white", "A hollow cane that can store any commonplace sharp weaponry. Said weapon not included."), + + list("AMMO", 0, null, null, null), + list("ES-4 stun magazine", 10, /obj/item/ammo_magazine/pistol/es4, "white", "Holds 19 rounds of specialized Conductive 9mm."), + + list("RADIO KEYS", 0, null, null, null), + list("Alpha Squad", 15, /obj/item/device/encryptionkey/alpha, "white", "Radio Key for USCM Alpha Squad."), + list("Bravo Squad", 15, /obj/item/device/encryptionkey/bravo, "white", "Radio Key for USCM Bravo Squad."), + list("Charlie Squad", 15, /obj/item/device/encryptionkey/charlie, "white", "Radio Key for USCM Charlie Squad."), + list("Delta Squad", 15, /obj/item/device/encryptionkey/delta, "white", "Radio Key for USCM Delta Squad."), + list("Echo Squad", 15, /obj/item/device/encryptionkey/echo, "white", "Radio Key for USCM Echo Squad."), + list("Colony", 20, /obj/item/device/encryptionkey/colony, "white", "Pre-tuned Radio Key for local colony comms."), + ) + + contraband_products = list( + list("CONTRABAND", 0, null, null, null), + list("W-Y PMC", 20, /obj/item/device/encryptionkey/pmc, "white", "Radio Key for Weyland-Yutani PMC Combat Comms."), + list("CONTRABAND: Colonial Marshals", 40, /obj/item/device/encryptionkey/cmb, "white", "Radio Key for the CMB."), + list("CONTRABAND: Colonial Liberation Front", 40, /obj/item/device/encryptionkey/clf, "white", "Radio Key for known local CLF frequencies."), + list("CONTRABAND: Union of Progressive Peoples", 40, /obj/item/device/encryptionkey/upp, "white", "Radio Key for known UPP listening frequencies."), ) diff --git a/code/game/objects/items/devices/radio/beacon.dm b/code/game/objects/items/devices/radio/beacon.dm index 0b8cbc303c06..bc97cf04fdfb 100644 --- a/code/game/objects/items/devices/radio/beacon.dm +++ b/code/game/objects/items/devices/radio/beacon.dm @@ -27,7 +27,7 @@ set category = "Object" set src in usr - if ((usr.canmove && !( usr.is_mob_restrained() ))) + if (usr.is_mob_incapacitated()) src.code = t if (!( src.code )) src.code = "beacon" diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index 0f010d689e74..58d8cd8d8d5f 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -49,7 +49,7 @@ name = "AI Integrated Encryption Key" desc = "Integrated encryption key" icon_state = "cap_key" - channels = list(RADIO_CHANNEL_ALMAYER = TRUE, RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_MP = TRUE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_REQ = TRUE, SQUAD_MARINE_1 = TRUE, SQUAD_MARINE_2 = TRUE, SQUAD_MARINE_3 = TRUE, SQUAD_MARINE_4 = TRUE, SQUAD_MARINE_5 = TRUE, SQUAD_MARINE_CRYO = FALSE, RADIO_CHANNEL_JTAC = TRUE, RADIO_CHANNEL_INTEL = TRUE) + channels = list(RADIO_CHANNEL_ALMAYER = TRUE, RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_MP = TRUE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_REQ = TRUE, SQUAD_MARINE_1 = TRUE, SQUAD_MARINE_2 = TRUE, SQUAD_MARINE_3 = TRUE, SQUAD_MARINE_4 = TRUE, SQUAD_MARINE_5 = TRUE, SQUAD_MARINE_CRYO = TRUE, RADIO_CHANNEL_JTAC = TRUE, RADIO_CHANNEL_INTEL = TRUE) /obj/item/device/encryptionkey/sentry_laptop name = "Sentry Network Status Encryption Key" @@ -61,12 +61,15 @@ /obj/item/device/encryptionkey/cmpcom/cdrcom name = "\improper Marine Senior Command Radio Encryption Key" - channels = list(RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_MP = TRUE, SQUAD_MARINE_1 = TRUE, SQUAD_MARINE_2 = TRUE, SQUAD_MARINE_3 = TRUE, SQUAD_MARINE_4 = TRUE, SQUAD_MARINE_5 = TRUE, SQUAD_MARINE_CRYO = FALSE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_REQ = TRUE, RADIO_CHANNEL_JTAC = TRUE, RADIO_CHANNEL_INTEL = TRUE) + channels = list(RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_MP = TRUE, SQUAD_MARINE_1 = TRUE, SQUAD_MARINE_2 = TRUE, SQUAD_MARINE_3 = TRUE, SQUAD_MARINE_4 = TRUE, SQUAD_MARINE_5 = TRUE, SQUAD_MARINE_CRYO = TRUE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_REQ = TRUE, RADIO_CHANNEL_JTAC = TRUE, RADIO_CHANNEL_INTEL = TRUE) /obj/item/device/encryptionkey/mcom name = "\improper Marine Command Radio Encryption Key" icon_state = "cap_key" - channels = list(RADIO_CHANNEL_COMMAND = TRUE, SQUAD_MARINE_1 = TRUE, SQUAD_MARINE_2 = TRUE, SQUAD_MARINE_3 = TRUE, SQUAD_MARINE_4 = TRUE, SQUAD_MARINE_5 = TRUE, SQUAD_MARINE_CRYO = FALSE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_REQ = TRUE, RADIO_CHANNEL_JTAC = TRUE, RADIO_CHANNEL_INTEL = TRUE) + channels = list(RADIO_CHANNEL_COMMAND = TRUE, SQUAD_MARINE_1 = TRUE, SQUAD_MARINE_2 = TRUE, SQUAD_MARINE_3 = TRUE, SQUAD_MARINE_4 = TRUE, SQUAD_MARINE_5 = TRUE, SQUAD_MARINE_CRYO = TRUE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_REQ = TRUE, RADIO_CHANNEL_JTAC = TRUE, RADIO_CHANNEL_INTEL = TRUE) + +/obj/item/device/encryptionkey/mcom/alt + channels = list(RADIO_CHANNEL_COMMAND = TRUE, SQUAD_MARINE_1 = FALSE, SQUAD_MARINE_2 = FALSE, SQUAD_MARINE_3 = FALSE, SQUAD_MARINE_4 = FALSE, SQUAD_MARINE_5 = FALSE, SQUAD_MARINE_CRYO = FALSE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_REQ = TRUE, RADIO_CHANNEL_JTAC = TRUE, RADIO_CHANNEL_INTEL = TRUE) // MARINE ENGINEERING @@ -85,13 +88,18 @@ /obj/item/device/encryptionkey/cmo name = "Chief Medical Officer's Encryption Key" icon_state = "cmo_key" - channels = list(RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_COMMAND = TRUE) + channels = list(RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_INTEL = TRUE) /obj/item/device/encryptionkey/med name = "Medical Radio Encryption Key" icon_state = "med_key" channels = list(RADIO_CHANNEL_MEDSCI = TRUE) +/obj/item/device/encryptionkey/medres + name = "Research Radio Encryption Key" + icon_state = "med_key" + channels = list(RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_INTEL = TRUE) + // MARINE MILITARY POLICE /obj/item/device/encryptionkey/cmpcom @@ -102,7 +110,7 @@ /obj/item/device/encryptionkey/mmpo name = "\improper Military Police Radio Encryption Key" icon_state = "sec_key" - channels = list(RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_MP = TRUE, SQUAD_MARINE_1 = TRUE, SQUAD_MARINE_2 = TRUE, SQUAD_MARINE_3 = TRUE, SQUAD_MARINE_4 = TRUE, SQUAD_MARINE_5 = TRUE, SQUAD_MARINE_CRYO = FALSE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE,) + channels = list(RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_MP = TRUE, SQUAD_MARINE_1 = TRUE, SQUAD_MARINE_2 = TRUE, SQUAD_MARINE_3 = TRUE, SQUAD_MARINE_4 = TRUE, SQUAD_MARINE_5 = TRUE, SQUAD_MARINE_CRYO = TRUE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE,) /obj/item/device/encryptionkey/sec name = "Security Radio Encryption Key" @@ -111,7 +119,7 @@ // MARINE REQUISTIONS -/obj/item/device/encryptionkey/ro +/obj/item/device/encryptionkey/qm name = "Requisition Officer's Encryption Key" icon_state = "ce_key" channels = list(RADIO_CHANNEL_REQ = TRUE, RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_ENGI = FALSE, RADIO_CHANNEL_MEDSCI = FALSE, SQUAD_MARINE_1 = FALSE, SQUAD_MARINE_2 = FALSE, SQUAD_MARINE_3 = FALSE, SQUAD_MARINE_4 = FALSE, SQUAD_MARINE_5 = FALSE, SQUAD_MARINE_CRYO = FALSE) @@ -130,7 +138,7 @@ /obj/item/device/encryptionkey/cmpcom/synth name = "\improper Marine Synth Radio Encryption Key" - channels = list(RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_MP = TRUE, SQUAD_MARINE_1 = TRUE, SQUAD_MARINE_2 = TRUE, SQUAD_MARINE_3 = TRUE, SQUAD_MARINE_4 = TRUE, SQUAD_MARINE_5 = TRUE, SQUAD_MARINE_CRYO = FALSE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_REQ = TRUE, RADIO_CHANNEL_JTAC = TRUE, RADIO_CHANNEL_INTEL = TRUE) + channels = list(RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_MP = TRUE, SQUAD_MARINE_1 = TRUE, SQUAD_MARINE_2 = TRUE, SQUAD_MARINE_3 = TRUE, SQUAD_MARINE_4 = TRUE, SQUAD_MARINE_5 = TRUE, SQUAD_MARINE_CRYO = TRUE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_REQ = TRUE, RADIO_CHANNEL_JTAC = TRUE, RADIO_CHANNEL_INTEL = TRUE) /obj/item/device/encryptionkey/mcom/cl name = "\improper Corporate Liaison radio encryption key" @@ -150,7 +158,7 @@ /obj/item/device/encryptionkey/io name = "\improper Marine Intelligence Officer Radio Encryption Key" icon_state = "cap_key" - channels = list(RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_JTAC = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, SQUAD_MARINE_1 = FALSE, SQUAD_MARINE_2 = FALSE, SQUAD_MARINE_3 = FALSE, SQUAD_MARINE_4 = FALSE, SQUAD_MARINE_5 = FALSE, SQUAD_MARINE_CRYO = FALSE, RADIO_CHANNEL_INTEL = TRUE) + channels = list(RADIO_CHANNEL_ALMAYER = TRUE, RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_JTAC = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, SQUAD_MARINE_1 = FALSE, SQUAD_MARINE_2 = FALSE, SQUAD_MARINE_3 = FALSE, SQUAD_MARINE_4 = FALSE, SQUAD_MARINE_5 = FALSE, SQUAD_MARINE_CRYO = FALSE) /obj/item/device/encryptionkey/vc name = "\improper Marine Vehicle Crewman Radio Encryption Key" @@ -163,7 +171,7 @@ channels = list(RADIO_CHANNEL_REQ = TRUE, RADIO_CHANNEL_COMMAND = FALSE) /obj/item/device/encryptionkey/mcom/ai //AI only. - channels = list(RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_MP = TRUE, SQUAD_MARINE_1 = TRUE, SQUAD_MARINE_2 = TRUE, SQUAD_MARINE_3 = TRUE, SQUAD_MARINE_4 = TRUE, SQUAD_MARINE_5 = TRUE, SQUAD_MARINE_CRYO = FALSE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_REQ = TRUE, RADIO_CHANNEL_JTAC = TRUE, RADIO_CHANNEL_INTEL = TRUE) + channels = list(RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_MP = TRUE, SQUAD_MARINE_1 = TRUE, SQUAD_MARINE_2 = TRUE, SQUAD_MARINE_3 = TRUE, SQUAD_MARINE_4 = TRUE, SQUAD_MARINE_5 = TRUE, SQUAD_MARINE_CRYO = TRUE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_REQ = TRUE, RADIO_CHANNEL_JTAC = TRUE, RADIO_CHANNEL_INTEL = TRUE) // MARINE SQUADS @@ -210,6 +218,11 @@ icon_state = "binary_key" channels = list(RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_REQ = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_INTEL = TRUE, RADIO_CHANNEL_JTAC = TRUE, SQUAD_MARINE_1 = FALSE, SQUAD_MARINE_2 = FALSE, SQUAD_MARINE_3 = FALSE, SQUAD_MARINE_4 = FALSE, SQUAD_MARINE_5 = FALSE, SQUAD_MARINE_CRYO = FALSE) +/obj/item/device/encryptionkey/soc/forecon + name = "\improper SOF Radio Encryption Key" + icon_state = "binary_key" + channels = list(RADIO_CHANNEL_COLONY= TRUE) + //ERT, PMC /obj/item/device/encryptionkey/dutch @@ -296,17 +309,28 @@ /obj/item/device/encryptionkey/highcom name = "\improper USCM High Command Radio Encryption Key" icon_state = "binary_key" - channels = list(RADIO_CHANNEL_HIGHCOM = TRUE, SQUAD_SOF = TRUE, RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_MP = TRUE, SQUAD_MARINE_1 = TRUE, SQUAD_MARINE_2 = TRUE, SQUAD_MARINE_3 = TRUE, SQUAD_MARINE_4 = TRUE, SQUAD_MARINE_5 = TRUE, SQUAD_MARINE_CRYO = FALSE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_REQ = TRUE, RADIO_CHANNEL_JTAC = TRUE, RADIO_CHANNEL_INTEL = TRUE) + channels = list(RADIO_CHANNEL_HIGHCOM = TRUE, SQUAD_SOF = TRUE, RADIO_CHANNEL_PROVOST = TRUE, RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_MP = TRUE, SQUAD_MARINE_1 = FALSE, SQUAD_MARINE_2 = FALSE, SQUAD_MARINE_3 = FALSE, SQUAD_MARINE_4 = FALSE, SQUAD_MARINE_5 = FALSE, SQUAD_MARINE_CRYO = FALSE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_REQ = FALSE, RADIO_CHANNEL_JTAC = FALSE, RADIO_CHANNEL_INTEL = TRUE) + +/obj/item/device/encryptionkey/provost + name = "\improper USCM Provost Radio Encryption Key" + icon_state = "sec_key" + channels = list(RADIO_CHANNEL_PROVOST = TRUE, RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_MP = TRUE, SQUAD_MARINE_1 = FALSE, SQUAD_MARINE_2 = FALSE, SQUAD_MARINE_3 = FALSE, SQUAD_MARINE_4 = FALSE, SQUAD_MARINE_5 = FALSE, SQUAD_MARINE_CRYO = FALSE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_REQ = FALSE, RADIO_CHANNEL_JTAC = FALSE, RADIO_CHANNEL_INTEL = TRUE) + /obj/item/device/encryptionkey/contractor name = "\improper Vanguard's Arrow Incorporated Radio Encryption Key" icon_state = "sl_key" channels = list("Command" = TRUE, "Engi" = TRUE, "MedSci" = TRUE, "Req" = TRUE, "JTAC" = TRUE, "Intel" = TRUE, "Almayer" = TRUE) +/obj/item/device/encryptionkey/royal_marine + name = "\improper Royal Marine Radio Encryption Key" + icon_state = "sl_key" + channels = list("Command" = TRUE, "Almayer" = TRUE,) + /obj/item/device/encryptionkey/cmb name = "\improper Colonial Marshal Bureau Radio Encryption Key" icon_state = "cmb_key" - channels = list(RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_INTEL = TRUE, RADIO_CHANNEL_ALMAYER = TRUE) + channels = list(RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_INTEL = TRUE, RADIO_CHANNEL_ALMAYER = TRUE, RADIO_CHANNEL_COLONY = TRUE) /// Used by the Mortar Crew in WO game mode - intently has no squad radio access /obj/item/device/encryptionkey/mortar name = "\improper Mortar Crew Radio Encryption Key" diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 631ef8fa0e2c..7b987752011c 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -59,8 +59,8 @@ verbs += /obj/item/device/radio/headset/proc/switch_tracker_target if(frequency) - for(var/cycled_channel in radiochannels) - if(radiochannels[cycled_channel] == frequency) + for(var/cycled_channel in GLOB.radiochannels) + if(GLOB.radiochannels[cycled_channel] == frequency) default_freq = cycled_channel /obj/item/device/radio/headset/Destroy() @@ -183,7 +183,7 @@ /obj/item/device/radio/headset/proc/recalculateChannels() for(var/ch_name in channels) - SSradio.remove_object(src, radiochannels[ch_name]) + SSradio.remove_object(src, GLOB.radiochannels[ch_name]) secure_radio_connections[ch_name] = null channels = list() translate_apollo = FALSE @@ -214,14 +214,14 @@ locate_setting = initial(locate_setting) for (var/ch_name in channels) - secure_radio_connections[ch_name] = SSradio.add_object(src, radiochannels[ch_name], RADIO_CHAT) + secure_radio_connections[ch_name] = SSradio.add_object(src, GLOB.radiochannels[ch_name], RADIO_CHAT) SStgui.update_uis(src) /obj/item/device/radio/headset/set_frequency(new_frequency) ..() if(frequency) - for(var/cycled_channel in radiochannels) - if(radiochannels[cycled_channel] == frequency) + for(var/cycled_channel in GLOB.radiochannels) + if(GLOB.radiochannels[cycled_channel] == frequency) default_freq = cycled_channel /obj/item/device/radio/headset/equipped(mob/living/carbon/human/user, slot) @@ -237,8 +237,8 @@ RegisterSignal(user, COMSIG_MOB_DEATH, PROC_REF(update_minimap_icon)) RegisterSignal(user, COMSIG_HUMAN_SET_UNDEFIBBABLE, PROC_REF(update_minimap_icon)) if(headset_hud_on) - var/datum/mob_hud/H = huds[hud_type] - H.add_hud_to(user) + var/datum/mob_hud/H = GLOB.huds[hud_type] + H.add_hud_to(user, src) //squad leader locator is no longer invisible on our player HUD. if(user.mind && (user.assigned_squad || misc_tracking) && user.hud_used && user.hud_used.locate_leader) user.show_hud_tracker() @@ -256,8 +256,8 @@ COMSIG_MOB_STAT_SET_ALIVE )) if(istype(user) && user.has_item_in_ears(src)) //dropped() is called before the inventory reference is update. - var/datum/mob_hud/H = huds[hud_type] - H.remove_hud_from(user) + var/datum/mob_hud/H = GLOB.huds[hud_type] + H.remove_hud_from(user, src) //squad leader locator is invisible again if(user.hud_used && user.hud_used.locate_leader) user.hide_hud_tracker() @@ -288,16 +288,16 @@ if(ishuman(usr)) var/mob/living/carbon/human/user = usr if(user.has_item_in_ears(src)) //worn - var/datum/mob_hud/H = huds[hud_type] + var/datum/mob_hud/H = GLOB.huds[hud_type] if(headset_hud_on) - H.add_hud_to(usr) + H.add_hud_to(usr, src) if(user.mind && (misc_tracking || user.assigned_squad) && user.hud_used?.locate_leader) user.show_hud_tracker() if(misc_tracking) SStracking.start_misc_tracking(user) update_minimap_icon() else - H.remove_hud_from(usr) + H.remove_hud_from(usr, src) if(user.hud_used?.locate_leader) user.hide_hud_tracker() if(misc_tracking) @@ -383,7 +383,7 @@ /obj/item/device/radio/headset/ai_integrated/receive_range(freq, level) if (disabledAi) - return -1 //Transciever Disabled. + return -1 //Transceiver Disabled. return ..(freq, level, 1) //MARINE HEADSETS @@ -405,6 +405,24 @@ var/datum/techtree/T = GET_TREE(TREE_MARINE) T.enter_mob(usr) +/obj/item/device/radio/headset/almayer/verb/give_medal_recommendation() + set name = "Give Medal Recommendation" + set desc = "Send a medal recommendation for approval by the Commanding Officer" + set category = "Object.Medals" + set src in usr + + var/mob/living/carbon/human/wearer = usr + if(!istype(wearer)) + return + var/obj/item/card/id/id_card = wearer.wear_id?.GetID() + if(!istype(id_card)) + return + if(!(id_card.rank in list(JOB_SO, JOB_XO, JOB_SQUAD_LEADER))) + to_chat(wearer, SPAN_WARNING("Only Staff Officers, Executive Officers and Squad Leaders are permitted to give medal recommendations!")) + return + if(add_medal_recommendation(usr)) + to_chat(usr, SPAN_NOTICE("Recommendation successfully submitted.")) + /obj/item/device/radio/headset/almayer/ce name = "chief engineer's headset" desc = "The headset of the guy in charge of spooling engines, managing MTs, and tearing up the floor for scrap metal. Of robust and sturdy construction. Channels are as follows: :n - engineering, :v - marine command, :m - medical, :u - requisitions, :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad." @@ -439,17 +457,23 @@ icon_state = "med_headset" initial_keys = list(/obj/item/device/encryptionkey/med) +/obj/item/device/radio/headset/almayer/research + name = "researcher radio headset" + desc = "A headset used by medbay's skilled researchers. Channels are as follows: :m - medical, :t - intel." + icon_state = "med_headset" + initial_keys = list(/obj/item/device/encryptionkey/medres) + /obj/item/device/radio/headset/almayer/ct name = "supply radio headset" desc = "Used by the lowly Cargo Technicians of the USCM, light weight and portable. To access the supply channel, use :u." icon_state = "req_headset" initial_keys = list(/obj/item/device/encryptionkey/req/ct) -/obj/item/device/radio/headset/almayer/ro - desc = "A headset used by the RO for controlling their slave(s). Channels are as follows: :u - requisitions, :v - marine command, :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad." +/obj/item/device/radio/headset/almayer/qm + desc = "A headset used by the quartermaster for controlling their slave(s). Channels are as follows: :u - requisitions, :v - marine command, :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad." name = "requisition officer radio headset" icon_state = "ro_headset" - initial_keys = list(/obj/item/device/encryptionkey/ro) + initial_keys = list(/obj/item/device/encryptionkey/qm) volume = RADIO_VOLUME_CRITICAL multibroadcast_cooldown = LOW_MULTIBROADCAST_COOLDOWN @@ -488,6 +512,9 @@ volume = RADIO_VOLUME_CRITICAL multibroadcast_cooldown = LOW_MULTIBROADCAST_COOLDOWN +/obj/item/device/radio/headset/almayer/mcom/alt + initial_keys = list(/obj/item/device/encryptionkey/mcom/alt) + /obj/item/device/radio/headset/almayer/marine/mp_honor/com name = "marine honor guard command radio headset" desc = "Given to highly trusted marine honor guard only. It features a non-standard brace. Channels are as follows: :v - marine command, :p - military police, :n - engineering, :m - medbay, :u - requisitions, :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad." @@ -505,11 +532,13 @@ name = "marine intel radio headset" desc = "Used by Intelligence Officers. Channels are as follows: :v - marine command, :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad, :n - engineering, :m - medical, :j - JTAC, :t - intel." initial_keys = list(/obj/item/device/encryptionkey/io) + frequency = INTEL_FREQ /obj/item/device/radio/headset/almayer/mcl name = "corporate liaison radio headset" desc = "Used by the CL to convince people to sign NDAs. Channels are as follows: :v - marine command, :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad, :n - engineering, :m - medbay, :u - requisitions, :j - JTAC, :t - intel, :y for WY." icon_state = "wy_headset" + maximum_keys = 5 initial_keys = list(/obj/item/device/encryptionkey/mcom/cl) /obj/item/device/radio/headset/almayer/reporter @@ -798,7 +827,7 @@ set_frequency(frequency) for(var/ch_name in channels) - secure_radio_connections[ch_name] = SSradio.add_object(src, radiochannels[ch_name], RADIO_CHAT) + secure_radio_connections[ch_name] = SSradio.add_object(src, GLOB.radiochannels[ch_name], RADIO_CHAT) recalculateChannels() if(H.mind && H.hud_used && H.hud_used.locate_leader) //make SL tracker visible H.hud_used.locate_leader.alpha = 255 @@ -839,9 +868,17 @@ "Corporate Liaison" = TRACKER_CL ) +/obj/item/device/radio/headset/distress/cbrn + name = "\improper CBRN headset" + desc = "A headset given to CBRN marines. Channels are as follows: :g - public, :v - marine command, :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad, :n - engineering, :m - medbay, :u - requisitions, :j - JTAC, :t - intel" + frequency = CBRN_FREQ + initial_keys = list(/obj/item/device/encryptionkey/public, /obj/item/device/encryptionkey/mcom) + ignore_z = TRUE + has_hud = TRUE + /obj/item/device/radio/headset/distress/pmc/hvh desc = "A special headset used by corporate personnel. Channels are as follows: :o - colony." - initial_keys = list(/obj/item/device/encryptionkey/colony) + initial_keys = list(/obj/item/device/encryptionkey/colony, /obj/item/device/encryptionkey/WY) misc_tracking = FALSE /obj/item/device/radio/headset/distress/pmc/cct @@ -958,31 +995,52 @@ initial_keys = list(/obj/item/device/encryptionkey/public, /obj/item/device/encryptionkey/contractor) has_hud = TRUE +/obj/item/device/radio/headset/distress/royal_marine + name = "Royal Marine Headset" + desc = "A sleek headset used by the Royal Marines Commando. Low profile enough to fit under their unique helmets." + frequency = RMC_FREQ + icon_state = "vai_headset" + initial_keys = list(/obj/item/device/encryptionkey/public, /obj/item/device/encryptionkey/royal_marine) + has_hud = TRUE + hud_type = MOB_HUD_FACTION_TWE + volume = RADIO_VOLUME_IMPORTANT + //CMB Headsets /obj/item/device/radio/headset/distress/CMB name = "\improper CMB Earpiece" - desc = "A sleek headset used by The Colonial Marshal Bureau, crafted in Sol. Low profile and comfortable. No one is above the law. Featured channels include: ; - CMB, :g - public, :v - marine command, :m - medbay, :t - intel." + desc = "A sleek headset used by The Colonial Marshal Bureau, crafted in Sol. Low profile and comfortable. No one is above the law. Featured channels include: ; - CMB, :o - Colony, :g - public, :v - marine command, :m - medbay, :t - intel." frequency = CMB_FREQ icon_state = "cmb_headset" initial_keys = list(/obj/item/device/encryptionkey/cmb) has_hud = TRUE hud_type = MOB_HUD_FACTION_USCM +/obj/item/device/radio/headset/distress/CMB/limited + name = "\improper Damaged CMB Earpiece" + desc = "A sleek headset used by The Colonial Marshal Bureau, crafted in Sol. Low profile and comfortable. No one is above the law. This one is damaged, so the channels are: ; - CMB, :o - Colony." + initial_keys = list(/obj/item/device/encryptionkey/colony) + /obj/item/device/radio/headset/distress/CMB/ICC name = "\improper ICC Liaison Headset" - desc = "An expensive headset used by The Interstellar Commerce Commission. This one in particular has a liaison chip with the CMB. Featured channels include: ; - CMB, :g - public, :v - marine command, :m - medbay, :t - intel, :y - Weyland-Yutani." - frequency = CMB_FREQ + desc = "An expensive headset used by The Interstellar Commerce Commission. This one in particular has a liaison chip with the CMB. Featured channels include: ; - CMB, :o - Colony, :g - public, :v - marine command, :m - medbay, :t - intel, :y - Weyland-Yutani." icon_state = "wy_headset" initial_keys = list(/obj/item/device/encryptionkey/WY, /obj/item/device/encryptionkey/cmb) - has_hud = TRUE /obj/item/device/radio/headset/almayer/highcom name = "USCM High Command headset" desc = "Issued to members of USCM High Command and their immediate subordinates. Channels are as follows: :v - marine command, :p - military police, :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad, :n - engineering, :m - medbay, :u - requisitions, :j - JTAC, :t - intel, :z - HighCom" icon_state = "mhc_headset" + frequency = HC_FREQ initial_keys = list(/obj/item/device/encryptionkey/highcom) volume = RADIO_VOLUME_CRITICAL - ignore_z = TRUE + +/obj/item/device/radio/headset/almayer/provost + name = "USCM Provost headset" + desc = "Issued to members of the USCM Provost Office and their immediate subordinates." + icon_state = "pvst_headset" + frequency = PVST_FREQ + initial_keys = list(/obj/item/device/encryptionkey/provost) + volume = RADIO_VOLUME_CRITICAL /obj/item/device/radio/headset/almayer/sof name = "USCM SOF headset" @@ -991,7 +1049,16 @@ frequency = SOF_FREQ initial_keys = list(/obj/item/device/encryptionkey/soc) volume = RADIO_VOLUME_IMPORTANT - ignore_z = TRUE + +/obj/item/device/radio/headset/almayer/sof/survivor_forecon + name = "USCM SOF headset" + desc = "Issued exclusively to Marine Raiders and members of the USCM's Force Reconnaissance." + icon_state = "soc_headset" + frequency = SOF_FREQ + initial_keys = list(/obj/item/device/encryptionkey/soc/forecon) + volume = RADIO_VOLUME_QUIET + has_hud = TRUE + hud_type = MOB_HUD_FACTION_USCM /obj/item/device/radio/headset/almayer/mcom/vc name = "marine vehicle crew radio headset" @@ -999,3 +1066,13 @@ initial_keys = list(/obj/item/device/encryptionkey/vc) volume = RADIO_VOLUME_RAISED multibroadcast_cooldown = HIGH_MULTIBROADCAST_COOLDOWN + +/obj/item/device/radio/headset/distress/UPP/recon + name = "\improper UPP headset" + desc = "A special headset used by recon elements of the UPP military." + frequency = UPP_FREQ + initial_keys = list(/obj/item/device/encryptionkey/upp) + volume = RADIO_VOLUME_QUIET + ignore_z = FALSE + has_hud = TRUE + hud_type = MOB_HUD_FACTION_UPP diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index aef577779c06..6aecacd27916 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -64,10 +64,10 @@ on = FALSE else var/area/A = src.loc.loc - if(!A || !isarea(A) || !A.master) + if(!A || !isarea(A)) on = FALSE else - on = A.master.powered(POWER_CHANNEL_EQUIP) // set "on" to the power status + on = A.powered(POWER_CHANNEL_EQUIP) // set "on" to the power status if(!on) icon_state = "intercom-p" diff --git a/code/game/objects/items/devices/radio/listening_bugs.dm b/code/game/objects/items/devices/radio/listening_bugs.dm new file mode 100644 index 000000000000..9492188a14f0 --- /dev/null +++ b/code/game/objects/items/devices/radio/listening_bugs.dm @@ -0,0 +1,276 @@ +#define DISGUISE_REMOVE "remove disguise" +#define DISGUISE_RADIO "radio" +#define DISGUISE_PEN "pen" +#define DISGUISE_FOUNTAIN_PEN "fountain pen" +#define DISGUISE_ACCESS_TUNER "access tuner" +#define DISGUISE_WHISTLE "whistle" +#define DISGUISE_MASS_SPEC "mass-spectrometer" +#define DISGUISE_CAMERA "camera" +#define DISGUISE_ZIPPO "zippo lighter" +#define DISGUISE_TAPE_RECORDER "tape recorder" + +/obj/item/device/radio/listening_bug + name = "listening device" + desc = "A small, and disguisable, listening device." + + icon = 'icons/obj/items/devices.dmi' + icon_state = "voice0" + item_state = "analyzer" + + w_class = SIZE_TINY + volume = RADIO_VOLUME_RAISED + + broadcasting = FALSE + listening = FALSE + frequency = BUG_A_FREQ + canhear_range = 2 + freqlock = TRUE + /// If the bug is disguised or not. + var/ready_to_disguise = FALSE + var/disguised = FALSE + /// Whether or not the bug can be used to listen to its own channel. + var/prevent_snooping = FALSE + /// The ID tag of the device, for identification. + var/nametag = "Device" + +/obj/item/device/radio/listening_bug/ui_data(mob/user) + var/list/data = list() + + data["broadcasting"] = broadcasting + data["listening"] = listening + data["frequency"] = frequency + data["freqlock"] = freqlock + + var/list/radio_channels = list() + + for(var/channel in channels) + var/channel_key = channel_to_prefix(channel) + radio_channels += list(list( + "name" = channel, + "status" = channels[channel] & FREQ_LISTENING, + "hotkey" = channel_key)) + + data["channels"] = radio_channels + + data["command"] = volume + data["useCommand"] = use_volume + data["subspace"] = subspace_transmission + data["subspaceSwitchable"] = subspace_switchable + data["headset"] = FALSE + + return data + +/obj/item/device/radio/listening_bug/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) + switch(action) + if("listen") + if(prevent_snooping) + to_chat(usr, SPAN_WARNING("This device cannot receive transmissions!")) + return + listening = !listening + return + if("subspace") + if(!ishuman(usr)) + return + var/mob/living/carbon/human/user = usr + if(!check_access(user.wear_id) && !check_access(user.get_active_hand())) + to_chat(user, SPAN_WARNING("You need an authenticated ID card to change this function!")) + return + if(subspace_switchable) + subspace_transmission = !subspace_transmission + var/initial_prevent = initial(prevent_snooping) + if(initial_prevent) + prevent_snooping = TRUE + if(!subspace_transmission) + prevent_snooping = FALSE + channels = list() + return + ..() + +/obj/item/device/radio/listening_bug/hear_talk(mob/M as mob, msg, verb = "says", datum/language/speaking = null) + var/processed_verb = "[SPAN_RED("\[LSTN [nametag]\]")] [verb]" + if(broadcasting) + if(get_dist(src, M) <= 7) + talk_into(M, msg, null, processed_verb, speaking, listening_device = TRUE) + +/obj/item/device/radio/listening_bug/afterattack(atom/target_atom, mob/user as mob, proximity) + if(!ready_to_disguise) + return ..() + + var/obj/item/target_item = target_atom + if(!istype(target_item) || target_item.anchored || target_item.w_class >= SIZE_LARGE) + to_chat(user, SPAN_WARNING("You cannot disguise the listening device as this object.")) + return FALSE + + var/confirm = tgui_alert(user, "Are you sure you wish to disguise the listening device as '[target_item]'?", "Confirm Choice", list("Yes","No"), 20 SECONDS) + if(confirm != "Yes") + return FALSE + + icon = target_item.icon + name = target_item.name + desc = target_item.desc + icon_state = target_item.icon_state + item_state = target_item.item_state + flags_equip_slot = target_item.flags_equip_slot + w_class = target_item.w_class + ready_to_disguise = FALSE + disguised = TRUE + +/obj/item/device/radio/listening_bug/get_examine_text(mob/user) + if(disguised) + . = list() + var/size + switch(w_class) + if(SIZE_TINY) + size = "tiny" + if(SIZE_SMALL) + size = "small" + if(SIZE_MEDIUM) + size = "normal-sized" + . += "This is a [blood_color ? blood_color != COLOR_OIL ? "bloody " : "oil-stained " : ""][icon2html(src, user)][src.name]. It is a [size] item." + if(desc) + . += desc + if(desc_lore) + . += SPAN_NOTICE("This has an extended lore description.") + else + . = ..() + . += SPAN_INFO("[src] is set to frequency [get_bug_letter()].") + if(nametag != initial(nametag)) + . += SPAN_INFO("[src]'s nametag is set to '[nametag]'") + +/obj/item/device/radio/listening_bug/verb/change_disguise() + set name = "Change Disguise" + set category = "Object" + set src in usr + + if(usr.is_mob_incapacitated()) + to_chat(usr, SPAN_WARNING("You cannot do this while incapacitated!")) + return FALSE + + var/check = tgui_alert(usr, "Do you wish to change the disguise of this listening bug?", "Change Disguise?", list("Yes", "No")) + if(check != "Yes") + return FALSE + if(disguised) + var/remove_check = tgui_alert(usr, "Do you wish to remove the current disguise?", "Remove Disguise?", list("Yes","No")) + if(remove_check == "Yes") + icon = initial(icon) + name = initial(name) + desc = initial(desc) + icon_state = initial(icon_state) + item_state = initial(item_state) + flags_equip_slot = initial(flags_equip_slot) + w_class = initial(w_class) + disguised = FALSE + return TRUE + + to_chat(usr, SPAN_HELPFUL("You can now change the disguise of the device by selecting a normal, or smaller, sized object.")) + ready_to_disguise = TRUE + return TRUE + +/obj/item/device/radio/listening_bug/proc/get_bug_letter() + switch(frequency) + if(BUG_A_FREQ) + return "A" + if(BUG_B_FREQ) + return "B" + if(SEC_FREQ) + return "MP" + if(PVST_FREQ) + return "PVST" + if(HC_FREQ) + return "HC" + if(WY_FREQ, PMC_CCT_FREQ) + return "WY" + if(PMC_CMD_FREQ) + return "WYC" + if(UPP_CCT_FREQ, UPP_KDO_FREQ) + return "UPP" + else + return "X" + +#define OPTION_REMOVE "Remove Tag" +#define OPTION_NEW "New Tag" + +/obj/item/device/radio/listening_bug/verb/set_nametag() + set name = "Set Nametag" + set category = "Object" + set src in usr + + if(usr.is_mob_incapacitated()) + to_chat(usr, SPAN_WARNING("You cannot do this while incapacitated!")) + return FALSE + + var/check = tgui_alert(usr, "Do you wish to change the name tag of this listening bug?", "Change Name tag?", list("Yes", "No")) + if(check != "Yes") + return FALSE + + + var/new_nametag + var/remove + if(nametag != initial(nametag)) + remove = tgui_alert(usr, "Do you wish to remove the current nametag?", "Remove Nametag", list("Yes", "No")) + if(remove == "Yes") + new_nametag = initial(nametag) + else + new_nametag = tgui_input_text(usr, "What new name tag do you wish to use?", "New Name", initial(nametag), 6) + + if(!new_nametag || (new_nametag == nametag)) + return FALSE + + nametag = new_nametag + log_game("[key_name(usr)] set a listening device nametag to [new_nametag].") + return TRUE + +#undef OPTION_REMOVE +#undef OPTION_NEW + +/obj/item/device/radio/listening_bug/freq_a + frequency = BUG_A_FREQ + +/obj/item/device/radio/listening_bug/freq_b + frequency = BUG_B_FREQ + +/obj/item/device/radio/listening_bug/radio_linked + prevent_snooping = TRUE + subspace_transmission = TRUE + subspace_switchable = TRUE + +/obj/item/device/radio/listening_bug/radio_linked/mp + frequency = SEC_FREQ + req_one_access = list(ACCESS_MARINE_BRIG) + +/obj/item/device/radio/listening_bug/radio_linked/hc + frequency = HC_FREQ + req_one_access = list(ACCESS_MARINE_CO) +/obj/item/device/radio/listening_bug/radio_linked/hc/pvst + frequency = PVST_FREQ + +/obj/item/device/radio/listening_bug/radio_linked/wy + frequency = WY_FREQ + req_one_access = list(ACCESS_WY_EXEC, ACCESS_WY_SECURITY) + +/obj/item/device/radio/listening_bug/radio_linked/wy/pmc + frequency = PMC_CCT_FREQ + req_one_access = list(ACCESS_WY_EXEC, ACCESS_WY_SECURITY) + +/obj/item/device/radio/listening_bug/radio_linked/upp + frequency = UPP_CCT_FREQ + req_one_access = list(ACCESS_UPP_COMMANDO, ACCESS_UPP_SECURITY) + +/obj/item/device/radio/listening_bug/radio_linked/upp/commando + frequency = UPP_KDO_FREQ + req_one_access = list(ACCESS_UPP_COMMANDO) + + +// ENCRYPTION KEYS FOR LISTENING IN! +//REQURIES SUBSPACE ACTIVATION ON THE BUGS FIRST! +/obj/item/device/encryptionkey/listening_bug + desc = "A small encryption key for listening to a secret broadcasting device! Unlikely to work if the device is not using subspace communications!" + icon_state = "stripped_key" + +/obj/item/device/encryptionkey/listening_bug/freq_a + name = "Listening Bug Encryption Key (A)" + channels = list(RADIO_CHANNEL_BUG_A = TRUE) + +/obj/item/device/encryptionkey/listening_bug/freq_b + name = "Listening Bug Encryption Key (B)" + channels = list(RADIO_CHANNEL_BUG_B = TRUE) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 2092ffa108c6..0c71ae847674 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -73,7 +73,7 @@ set_frequency(frequency) for (var/ch_name in channels) - secure_radio_connections[ch_name] = SSradio.add_object(src, radiochannels[ch_name], RADIO_CHAT) + secure_radio_connections[ch_name] = SSradio.add_object(src, GLOB.radiochannels[ch_name], RADIO_CHAT) flags_atom |= USES_HEARING @@ -206,7 +206,7 @@ // If we were to send to a channel we don't have, drop it. return null -/obj/item/device/radio/talk_into(mob/living/M as mob, message, channel, verb = "says", datum/language/speaking = null) +/obj/item/device/radio/talk_into(mob/living/M as mob, message, channel, verb = "says", datum/language/speaking = null, listening_device = FALSE) if(!on) return // the device has to be on // Fix for permacell radios, but kinda eh about actually fixing them. if(!M || !message) return @@ -252,12 +252,6 @@ // --- Carbon Nonhuman --- else if(iscarbon(M)) // Nonhuman carbon mob jobname = "No id" - // --- AI --- - else if(isAI(M)) - jobname = "AI" - // --- Cyborg --- - else if(isrobot(M)) - jobname = "Cyborg" // --- Unidentifiable mob --- else jobname = "Unknown" @@ -297,11 +291,11 @@ if(use_volume) Broadcast_Message(connection, M, voicemask, pick(M.speak_emote), src, message, displayname, jobname, real_name, M.voice_name, - filter_type, 0, target_zs, connection.frequency, verb, speaking, volume) + filter_type, 0, target_zs, connection.frequency, verb, speaking, volume, listening_device) else Broadcast_Message(connection, M, voicemask, pick(M.speak_emote), src, message, displayname, jobname, real_name, M.voice_name, - filter_type, 0, target_zs, connection.frequency, verb, speaking, RADIO_VOLUME_QUIET) + filter_type, 0, target_zs, connection.frequency, verb, speaking, RADIO_VOLUME_QUIET, listening_device) /obj/item/device/radio/proc/get_target_zs(frequency) var/turf/position = get_turf(src) @@ -425,149 +419,19 @@ else return /obj/item/device/radio/emp_act(severity) + . = ..() broadcasting = FALSE listening = FALSE for (var/ch_name in channels) channels[ch_name] = 0 - ..() - -/////////////////////////////// -//////////Borg Radios////////// -/////////////////////////////// -//Giving borgs their own radio to have some more room to work with -Sieve - -/obj/item/device/radio/borg - var/mob/living/silicon/robot/myborg = null // Cyborg which owns this radio. Used for power checks - var/obj/item/device/encryptionkey/keyslot = null//Borg radios can handle a single encryption key - var/shut_up = 0 - icon = 'icons/obj/items/robot_component.dmi' // Cyborgs radio icons should look like the component. - icon_state = "radio" - canhear_range = 3 - -/obj/item/device/radio/borg/talk_into() - ..() - if (isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc - var/datum/robot_component/C = R.components["radio"] - R.cell_use_power(C.active_usage) - -/obj/item/device/radio/borg/attackby(obj/item/W as obj, mob/user as mob) -// ..() - if (!(HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER) || (istype(W, /obj/item/device/encryptionkey)))) - return - - if(HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER)) - if(keyslot) - - - for(var/ch_name in channels) - SSradio.remove_object(src, radiochannels[ch_name]) - secure_radio_connections[ch_name] = null - - - if(keyslot) - var/turf/T = get_turf(user) - if(T) - keyslot.forceMove(T) - keyslot = null - - recalculateChannels() - to_chat(user, "You pop out the encryption key in the radio!") - - else - to_chat(user, "This radio doesn't have any encryption keys!") - - if(istype(W, /obj/item/device/encryptionkey/)) - if(keyslot) - to_chat(user, "The radio can't hold another key!") - return - - if(!keyslot) - if(user.drop_held_item()) - W.forceMove(src) - keyslot = W - - recalculateChannels() - - return - -/obj/item/device/radio/borg/proc/recalculateChannels() - src.channels = list() - - var/mob/living/silicon/robot/D = src.loc - if(D.module) - for(var/ch_name in D.module.channels) - if(ch_name in src.channels) - continue - src.channels += ch_name - src.channels[ch_name] += D.module.channels[ch_name] - if(keyslot) - for(var/ch_name in keyslot.channels) - if(ch_name in src.channels) - continue - src.channels += ch_name - src.channels[ch_name] += keyslot.channels[ch_name] - - for (var/ch_name in src.channels) - secure_radio_connections[ch_name] = SSradio.add_object(src, radiochannels[ch_name], RADIO_CHAT) - - SStgui.update_uis(src) - -/obj/item/device/radio/borg/Topic(href, href_list) - if(usr.stat || !on) - return - if (href_list["mode"]) - if(subspace_transmission != 1) - subspace_transmission = 1 - to_chat(usr, "Subspace Transmission is disabled") - else - subspace_transmission = 0 - to_chat(usr, "Subspace Transmission is enabled") - if(subspace_transmission == 1)//Simple as fuck, clears the channel list to prevent talking/listening over them if subspace transmission is disabled - channels = list() - else - recalculateChannels() - if (href_list["shutup"]) // Toggle loudspeaker mode, AKA everyone around you hearing your radio. - shut_up = !shut_up - if(shut_up) - canhear_range = 0 - else - canhear_range = 3 - - ..() - -/obj/item/device/radio/borg/interact(mob/user as mob) - if(!on) - return - - var/dat = "[src]" - dat += {" - Speaker: [listening ? "Engaged" : "Disengaged"]
        - Frequency: - - - - - [format_frequency(frequency)] - + - +
        - Toggle Broadcast Mode
        - Toggle Loudspeaker
        - "} - - if(!subspace_transmission)//Don't even bother if subspace isn't turned on - for (var/ch_name in channels) - dat+=text_sec_channel(ch_name, channels[ch_name]) - dat+={"[text_wires()]
        "} - show_browser(user, dat, name, "radio") - return - /obj/item/device/radio/proc/config(op) for (var/ch_name in channels) - SSradio.remove_object(src, radiochannels[ch_name]) + SSradio.remove_object(src, GLOB.radiochannels[ch_name]) secure_radio_connections = new channels = op for (var/ch_name in op) - secure_radio_connections[ch_name] = SSradio.add_object(src, radiochannels[ch_name], RADIO_CHAT) + secure_radio_connections[ch_name] = SSradio.add_object(src, GLOB.radiochannels[ch_name], RADIO_CHAT) /obj/item/device/radio/off listening = 0 diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 3e2c1445f8e5..512ca8baad9b 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -145,7 +145,7 @@ FORENSIC SCANNER /obj/item/device/healthanalyzer/alien name = "\improper YMX scanner" icon = 'icons/obj/items/hunter/pred_gear.dmi' - icon_state = "Tracker" + icon_state = "scanner" item_state = "analyzer" desc = "An alien design hand-held body scanner able to distinguish vital signs of the subject. The front panel is able to provide the basic readout of the subject's status." alien = TRUE @@ -456,3 +456,23 @@ FORENSIC SCANNER update_icon(market_value, TRUE) playsound(user, 'sound/machines/twobeep.ogg', 15, TRUE) to_chat(user, SPAN_NOTICE("You scan [hit_atom] and notice a reading on [src]'s pad, it says: ITEM HAS [market_value] VALUE ")) + +/obj/item/device/black_market_hacking_device + name = "modified security access tuner" + desc = "A security access tuner with wires and electrical pins sticking out at odd angles. A handwritten label on the bottom says something about the ASRS system." + icon_state = "bm_hacker" + item_state = "analyzer" + w_class = SIZE_SMALL + flags_atom = FPRINT + flags_equip_slot = SLOT_WAIST + inherent_traits = list(TRAIT_TOOL_BLACKMARKET_HACKER) + +/obj/item/device/cmb_black_market_tradeband + name = "\improper CMB Tradeband Compliance Device" + desc = "A device used to reset any tampering done to trading devices' signal range. Occasionally used to fix any signal chips damaged in an accident, but often for malpractice in trading. Use this with caution, as it will also reset any evidence of potential illicit trade. Created to fulfill a joint-organization requirement for CMB-ICC teams on the frontier, where tampered machinery was difficult to move and refurbish. Smugglers beware." + icon_state = "cmb_scanner" + item_state = "analyzer" + w_class = SIZE_SMALL + flags_atom = FPRINT + flags_equip_slot = SLOT_WAIST + inherent_traits = list(TRAIT_TOOL_TRADEBAND) diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm index d388e06b9fa7..e0f65a4b31ec 100644 --- a/code/game/objects/items/devices/suit_cooling.dm +++ b/code/game/objects/items/devices/suit_cooling.dm @@ -110,7 +110,7 @@ cell.add_fingerprint(user) cell.update_icon() - to_chat(user, "You remove the [src.cell].") + to_chat(user, "You remove [cell].") src.cell = null updateicon() return @@ -121,7 +121,7 @@ else turn_on() if (on) - to_chat(user, "You switch on the [src].") + to_chat(user, "You switch on [src].") /obj/item/device/suit_cooling_unit/attackby(obj/item/W as obj, mob/user as mob) if (HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER)) @@ -137,12 +137,12 @@ if (istype(W, /obj/item/cell)) if(cover_open) if(cell) - to_chat(user, "There is a [cell] already installed here.") + to_chat(user, "There is \a [cell] already installed here.") else if(user.drop_held_item()) W.forceMove(src) cell = W - to_chat(user, "You insert the [cell].") + to_chat(user, "You insert [cell].") updateicon() return @@ -169,7 +169,7 @@ if (cover_open) if(cell) - . += "The panel is open, exposing the [cell]." + . += "The panel is open, exposing [cell]." else . += "The panel is open." diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 01567084d5c7..9a5e1e1b0ef5 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -168,7 +168,7 @@ mytape.timestamp += mytape.used_capacity var/language_known = (M.universal_speak || (speaking && (speaking.name in known_languages))) var/mob_name = language_known ? M.GetVoice() : "Unknown" - var/message = language_known ? msg : speaking.scramble(msg) + var/message = (!speaking || language_known) ? msg : speaking.scramble(msg) mytape.storedinfo += "\[[time2text(mytape.used_capacity,"mm:ss")]\] [mob_name] [verb], \"[italics ? "" : null][message][italics ? "" : null]\"" @@ -261,7 +261,7 @@ audible_message(SPAN_MAROON("[icon2html(src, usr)] End of recording.")) break - var/list/heard = get_mobs_in_view(world_view_size, src) + var/list/heard = get_mobs_in_view(GLOB.world_view_size, src) langchat_speech(mytape.storedinfo[i], heard, GLOB.all_languages, skip_language_check = TRUE, additional_styles = list("langchat_small")) audible_message(SPAN_MAROON("[icon2html(src, usr)] [mytape.storedinfo[i]]"))//We want to display this properly, don't double encode @@ -368,7 +368,7 @@ var/unspooled = FALSE var/list/icons_available = list() var/radial_icon_file = 'icons/mob/radial_tape.dmi' - var/list/cassette_colours = list("blue", "gray", "green", "orange", "pink_stripe", "purple", "rainbow", "red_black", "red_stripe", "camo", "rising_sun", "orange", "blue", "ocean", "aesthetic") + var/list/cassette_colors = list("blue", "gray", "green", "orange", "pink_stripe", "purple", "rainbow", "red_black", "red_stripe", "camo", "rising_sun", "orange", "blue", "ocean", "aesthetic") var/list/cassette_map_themes = list("solaris", "ice", "lz", "dam", "worstmap") inherent_traits = list(TRAIT_ITEM_RENAME_SPECIAL) //used to make the rename component work specially. ///used to store the tape's name for one side and the other side @@ -501,7 +501,7 @@ icon_state = "cassette_rainbow" /obj/item/tape/random/Initialize(mapload) - icon_state = "cassette_[pick(cassette_colours)]" + icon_state = "cassette_[pick(cassette_colors)]" . = ..() /obj/item/tape/regulation diff --git a/code/game/objects/items/devices/teleportation.dm b/code/game/objects/items/devices/teleportation.dm index 72a5c970b18f..8dea3b872cd1 100644 --- a/code/game/objects/items/devices/teleportation.dm +++ b/code/game/objects/items/devices/teleportation.dm @@ -48,8 +48,8 @@ if (usr.stat || usr.is_mob_restrained()) return var/turf/current_location = get_turf(usr)//What turf is the user on? - if(!current_location || is_admin_level(current_location.z))//If turf was not found or they're on z level 2. - to_chat(usr, "The [src] is malfunctioning.") + if(!current_location || should_block_game_interaction(current_location))//If turf was not found or they're on z level 2. + to_chat(usr, "[src] is malfunctioning.") return if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf)))) usr.set_interaction(src) @@ -140,11 +140,11 @@ ..() var/turf/current_location = get_turf(user)//What turf is the user on? - if(!current_location || is_admin_level(current_location.z))//If turf was not found or they're on z level 2 + if(!current_location || should_block_game_interaction(current_location))//If turf was not found or they're on z level 2 to_chat(user, SPAN_NOTICE("\The [src] is malfunctioning.")) return var/list/L = list( ) - for(var/obj/structure/machinery/teleport/hub/R in machines) + for(var/obj/structure/machinery/teleport/hub/R in GLOB.machines) var/obj/structure/machinery/computer/teleporter/com = locate(/obj/structure/machinery/computer/teleporter, locate(R.x - 2, R.y, R.z)) if (istype(com, /obj/structure/machinery/computer/teleporter) && com.locked && !com.one_time_use) if(R.icon_state == "tele1") @@ -177,4 +177,3 @@ P.creator = src src.add_fingerprint(user) return - diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index b3d433727946..6fc526936809 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -47,7 +47,7 @@ user.temp_drop_inv_item(A) attached_device = A A.forceMove(src) - to_chat(user, SPAN_NOTICE("You attach the [item] to the valve controls and secure it.")) + to_chat(user, SPAN_NOTICE("You attach [item] to the valve controls and secure it.")) A.holder = src A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb). diff --git a/code/game/objects/items/devices/vulture_spotter.dm b/code/game/objects/items/devices/vulture_spotter.dm new file mode 100644 index 000000000000..d138c62c7a35 --- /dev/null +++ b/code/game/objects/items/devices/vulture_spotter.dm @@ -0,0 +1,43 @@ +/obj/item/device/vulture_spotter_scope + name = "\improper M707 spotter scope" + desc = "A scope that, when mounted on a tripod, allows a user to assist the M707's firer in target acquisition." + icon_state = "vulture_scope" + item_state = "electronic" + flags_atom = FPRINT|CONDUCT + unacidable = TRUE + indestructible = TRUE + /// A weakref to the corresponding rifle + var/datum/weakref/bound_rifle + +/obj/item/device/vulture_spotter_scope/Initialize(mapload, datum/weakref/rifle) + . = ..() + if(rifle) + bound_rifle = rifle + +/obj/item/device/vulture_spotter_scope/attack_self(mob/user) + . = ..() + to_chat(user, SPAN_WARNING("[src] needs to be mounted on a tripod to use!")) + +/obj/item/device/vulture_spotter_scope/skillless + +/obj/item/device/vulture_spotter_tripod + name = "\improper M707 spotter tripod" + desc = "A tripod, meant for stabilizing a spotting scope for the M707 anti-materiel rifle." + icon_state = "vulture_tripod" + item_state = "electronic" + flags_atom = FPRINT|CONDUCT + unacidable = TRUE + indestructible = TRUE + +/obj/item/device/vulture_spotter_tripod/get_examine_text(mob/user) + . = ..() + . += SPAN_NOTICE("[src] can be set down by using in-hand.") + +/obj/item/device/vulture_spotter_tripod/attack_self(mob/user) + . = ..() + user.balloon_alert(user, "setting up tripod...") + if(!do_after(user, 1.5 SECONDS, target = user)) + return + + new /obj/structure/vulture_spotter_tripod(get_turf(user)) + qdel(src) diff --git a/code/game/objects/items/devices/whistle.dm b/code/game/objects/items/devices/whistle.dm index 4eb61a48b903..331df3ffa006 100644 --- a/code/game/objects/items/devices/whistle.dm +++ b/code/game/objects/items/devices/whistle.dm @@ -8,7 +8,8 @@ actions_types = list(/datum/action/item_action) var/volume = 60 - var/spamcheck = 0 + var/spam_cooldown_time = 10 SECONDS + COOLDOWN_DECLARE(spam_cooldown) /obj/item/device/whistle/attack_self(mob/user) ..() @@ -28,17 +29,17 @@ ..() /obj/item/device/whistle/proc/whistle_playsound(mob/user) - if (spamcheck) + if(!COOLDOWN_FINISHED(src, spam_cooldown)) + to_chat(user, SPAN_DANGER("You are out of breath after using [src]! Wait [COOLDOWN_SECONDSLEFT(src, spam_cooldown)] second\s.")) return user.visible_message(SPAN_WARNING("[user] blows into [src]!")) playsound(get_turf(src), 'sound/items/whistle.ogg', volume, 1, vary = 0) - spamcheck = 1 - addtimer(VARSET_CALLBACK(src, spamcheck, FALSE), 3 SECONDS) + COOLDOWN_START(src, spam_cooldown, spam_cooldown_time) /obj/item/device/whistle/MouseDrop(obj/over_object) - if(ishuman(usr) || isrobot(usr)) + if(ishuman(usr)) if(!usr.is_mob_restrained() && !usr.stat && usr.wear_mask == src) switch(over_object.name) diff --git a/code/game/objects/items/explosives/explosive.dm b/code/game/objects/items/explosives/explosive.dm index 0c482e8db9e7..4483372c9b85 100644 --- a/code/game/objects/items/explosives/explosive.dm +++ b/code/game/objects/items/explosives/explosive.dm @@ -262,8 +262,8 @@ if(falloff_mode == EXPLOSION_FALLOFF_SHAPE_LINEAR) falloff_mode = EXPLOSION_FALLOFF_SHAPE_EXPONENTIAL - to_chat(usr, SPAN_NOTICE("You enable the [src]'s blast wave dampener, limiting the blast radius.")) + to_chat(usr, SPAN_NOTICE("You enable [src]'s blast wave dampener, limiting the blast radius.")) else falloff_mode = EXPLOSION_FALLOFF_SHAPE_LINEAR - to_chat(usr, SPAN_NOTICE("You disable the [src]'s blast wave dampener, restoring the blast radius to full.")) + to_chat(usr, SPAN_NOTICE("You disable [src]'s blast wave dampener, restoring the blast radius to full.")) playsound(loc, 'sound/items/Screwdriver2.ogg', 25, 0, 6) diff --git a/code/game/objects/items/explosives/grenades/chem_grenade.dm b/code/game/objects/items/explosives/grenades/chem_grenade.dm index e975603d45d8..48430aacecc9 100644 --- a/code/game/objects/items/explosives/grenades/chem_grenade.dm +++ b/code/game/objects/items/explosives/grenades/chem_grenade.dm @@ -1,5 +1,5 @@ /obj/item/explosive/grenade/custom - name = "Custom grenade" + name = "custom grenade" icon_state = "grenade_custom" desc = "A custom chemical grenade with an M40 casing. This one is made to fit into underslung grenade launchers, but can also be thrown by hand." w_class = SIZE_SMALL @@ -17,7 +17,7 @@ ..() /obj/item/explosive/grenade/custom/large - name = "Large Custom Grenade" + name = "large custom grenade" desc = "A custom chemical grenade with an M15 casing. This casing has a higher explosive capacity than the M40 variant." icon_state = "large_grenade_custom" allowed_containers = list(/obj/item/reagent_container/glass) @@ -33,7 +33,7 @@ /obj/item/explosive/grenade/custom/metal_foam - name = "Metal-Foam Grenade" + name = "metal-foam grenade" desc = "Used for emergency sealing of air breaches." assembly_stage = ASSEMBLY_LOCKED harmful = FALSE @@ -56,7 +56,7 @@ update_icon() /obj/item/explosive/grenade/custom/incendiary - name = "Incendiary Grenade" + name = "incendiary grenade" desc = "Used for clearing rooms of living things." assembly_stage = ASSEMBLY_LOCKED has_blast_wave_dampener = FALSE @@ -79,7 +79,7 @@ update_icon() /obj/item/explosive/grenade/custom/flare - name = "M40-F flare grenade" + name = "\improper M40-F flare grenade" desc = "Chemical flare in a grenade form, designed for compatibility with most standard issue launchers." assembly_stage = ASSEMBLY_LOCKED has_blast_wave_dampener = FALSE @@ -103,7 +103,7 @@ update_icon() /obj/item/explosive/grenade/custom/large/flare - name = "M15-F flare grenade" + name = "\improper M15-F flare grenade" desc = "Chemical flare in a grenade form, expanded variant. The casing is too large to fit most launchers." assembly_stage = ASSEMBLY_LOCKED has_blast_wave_dampener = FALSE diff --git a/code/game/objects/items/explosives/grenades/flashbang.dm b/code/game/objects/items/explosives/grenades/flashbang.dm index 365dfe26df89..50cb34668ae3 100644 --- a/code/game/objects/items/explosives/grenades/flashbang.dm +++ b/code/game/objects/items/explosives/grenades/flashbang.dm @@ -256,6 +256,7 @@ //decide how banged mob is var/bang_effect = 0 + var/lying = H.body_position == LYING_DOWN //flashbang effect depends on eye protection only, so we will process this case first //A bit dumb, but headsets don't have ear protection and even earmuffs are a fluff now @@ -264,7 +265,7 @@ if((get_dist(H, T) <= 1 || src.loc == H.loc || src.loc == H)) H.apply_damage(5, BRUTE) H.apply_damage(5, BURN) - if(H.lying) + if(lying) bang_effect = 1 else bang_effect = 2 @@ -277,13 +278,13 @@ H.apply_damage(5, BRUTE) H.apply_damage(5, BURN) - if(H.lying) + if(lying) bang_effect = 4 else bang_effect = 5 else if(get_dist(H, T) <= 5) - if(H.lying) + if(lying) bang_effect = 3 else bang_effect = 4 diff --git a/code/game/objects/items/explosives/grenades/grenade.dm b/code/game/objects/items/explosives/grenades/grenade.dm index 7e98e9819931..6b793233678d 100644 --- a/code/game/objects/items/explosives/grenades/grenade.dm +++ b/code/game/objects/items/explosives/grenades/grenade.dm @@ -20,12 +20,12 @@ var/hand_throwable = TRUE harmful = TRUE //Is it harmful? Are they banned for synths? antigrief_protection = TRUE //Should it be checked by antigrief? + ground_offset_x = 7 + ground_offset_y = 6 /obj/item/explosive/grenade/Initialize() . = ..() det_time = max(0, rand(det_time - 5, det_time + 5)) - pixel_y = rand(-6, 6) - pixel_x = rand(-7, 7) /obj/item/explosive/grenade/proc/can_use_grenade(mob/living/carbon/human/user) if(!hand_throwable) diff --git a/code/game/objects/items/explosives/grenades/marines.dm b/code/game/objects/items/explosives/grenades/marines.dm index 1892c7543414..1cd3e1577c57 100644 --- a/code/game/objects/items/explosives/grenades/marines.dm +++ b/code/game/objects/items/explosives/grenades/marines.dm @@ -465,6 +465,46 @@ icon_state = "grenade_phos_clf" item_state = "grenade_phos_clf" +/* +//================================================ + Nerve Gas Grenades +//================================================ +*/ +/obj/item/explosive/grenade/nerve_gas + name = "\improper CN20 canister grenade" + desc = "A canister grenade of deadly nerve gas. It is set to detonate in 4 seconds." + icon_state = "flashbang2"//temp icon + det_time = 40 + item_state = "grenade_phos_clf"//temp icon + underslug_launchable = FALSE + harmful = TRUE + antigrief_protection = TRUE + /// The nerve gas datum + var/datum/effect_system/smoke_spread/cn20/nerve_gas + /// The typepath of the nerve gas + var/nerve_gas_type = /datum/effect_system/smoke_spread/cn20 + /// The radius the gas will reach + var/nerve_gas_radius = 2 + +/obj/item/explosive/grenade/nerve_gas/Initialize(mapload, ...) + . = ..() + nerve_gas = new nerve_gas_type + nerve_gas.attach(src) + +/obj/item/explosive/grenade/nerve_gas/Destroy() + QDEL_NULL(nerve_gas) + return ..() + +/obj/item/explosive/grenade/nerve_gas/prime() + playsound(src.loc, 'sound/effects/smoke.ogg', 25, 1, 4) + nerve_gas.set_up(nerve_gas_radius, 0, get_turf(src), null, 6) + nerve_gas.start() + qdel(src) + +/obj/item/explosive/grenade/nerve_gas/xeno + name = "\improper CN20-X canister grenade" + nerve_gas_type = /datum/effect_system/smoke_spread/cn20/xeno + /* //================================================ Airburst Smoke Grenades @@ -547,31 +587,32 @@ ram_distance -- //for max pinballing. icon_state = inactive_icon -/obj/item/explosive/grenade/slug/proc/impact_mob(mob/living/M) - var/direction = Get_Angle(src,M) - var/target_turf = get_angle_target_turf(src,direction,throw_max) - var/fling = rand(throw_min,throw_max) //WEEEEEEEEEEEEEEEEEEEE What is going to be put into throw_atom +/obj/item/explosive/grenade/slug/proc/impact_mob(mob/living/smacked) + var/direction = Get_Angle(src, smacked) + var/target_turf = get_angle_target_turf(src,direction, throw_max) + var/fling = rand(throw_min, throw_max) //WEEEEEEEEEEEEEEEEEEEE What is going to be put into throw_atom var/random_tile = 0 //random tile for bounce - playsound(M.loc, impact_sound, 75, 1) - M.apply_damage(impact_damage, BRUTE) + playsound(smacked.loc, impact_sound, 75, 1) + smacked.apply_damage(impact_damage, BRUTE) + smacked.attack_log += "\[[time_stamp()]\] [src], fired by [fingerprintslast], struck [key_name(smacked)]." random_tile = get_random_turf_in_range(src,ram_distance,ram_distance) //getting random tile for bounce src.throw_atom(random_tile,ram_distance,SPEED_FAST,src,TRUE,NORMAL_LAUNCH,NO_FLAGS) //time for a little trolling - if(isyautja(M)|| issynth(M)) - M.apply_effect(slowdown_time * 0.5, SLOW) - M.apply_effect(dazed_time * 0.5, DAZE) + if(isyautja(smacked)|| issynth(smacked)) + smacked.apply_effect(slowdown_time * 0.5, SLOW) + smacked.apply_effect(dazed_time * 0.5, DAZE) - if(M.mob_size >= MOB_SIZE_BIG)//big xenos not KO'ed - M.apply_effect(slowdown_time * 1.2, SLOW)//They are slowed more :trol: - M.apply_effect(dazed_time * 1.2, DAZE) + if(smacked.mob_size >= MOB_SIZE_BIG)//big xenos not KO'ed + smacked.apply_effect(slowdown_time * 1.2, SLOW)//They are slowed more :trol: + smacked.apply_effect(dazed_time * 1.2, DAZE) return - M.apply_effect(knockout_time, WEAKEN)//but little xenos and humans are - M.throw_atom(target_turf,fling,SPEED_AVERAGE,M,TRUE) - M.apply_effect(slowdown_time, SLOW) - M.apply_effect(dazed_time, DAZE) + smacked.apply_effect(knockout_time, WEAKEN)//but little xenos and humans are + smacked.throw_atom(target_turf, fling, SPEED_AVERAGE, smacked, TRUE) + smacked.apply_effect(slowdown_time, SLOW) + smacked.apply_effect(dazed_time, DAZE) return /obj/item/explosive/grenade/slug/baton @@ -664,11 +705,11 @@ det_time = 20 underslug_launchable = TRUE harmful = FALSE - var/foam_metal_type = FOAM_METAL_TYPE_ALUMINIUM + var/foam_metal_type = FOAM_METAL_TYPE_IRON /obj/item/explosive/grenade/metal_foam/prime() var/datum/effect_system/foam_spread/s = new() - s.set_up(12, get_turf(src), metal_foam = foam_metal_type) //Metalfoam 1 for aluminum foam, 2 for iron foam (Stronger), 12 amt = 2 tiles radius (5 tile length diamond) + s.set_up(12, get_turf(src), metal_foam = foam_metal_type) //12 amt = 2 tiles radius (5 tile length diamond) s.start() qdel(src) @@ -688,3 +729,23 @@ burn_level = BURN_LEVEL_TIER_3 radius = 2 fire_type = FIRE_VARIANT_DEFAULT + +//Royal marine grenades + +/obj/item/explosive/grenade/high_explosive/rmc + name = "\improper R2175/A HEDP grenade" + desc = "High-Explosive Dual-Purpose. A small, but deceptively strong blast grenade that has recently been added to the arsenal of the RMC." + icon_state = "rmc_grenade" + item_state = "grenade_hedp" + explosion_power = 130 + explosion_falloff = 30 + +/obj/item/explosive/grenade/incendiary/rmc + name = "\improper R2175/B HIDP grenade" + desc = "The R2175/B HIDP is a small, but deceptively strong incendiary grenade designed to rapidly clear areas with fast-acting potent fire. It is set to detonate in 4 seconds." + icon_state = "rmc_grenade_fire" + item_state = "grenade_fire" + flame_level = BURN_TIME_TIER_1 + burn_level = BURN_LEVEL_TIER_8 + radius = 3 + fire_type = FIRE_VARIANT_DEFAULT diff --git a/code/game/objects/items/explosives/mine.dm b/code/game/objects/items/explosives/mine.dm index 6b8c9bccd299..45065a2de1de 100644 --- a/code/game/objects/items/explosives/mine.dm +++ b/code/game/objects/items/explosives/mine.dm @@ -42,6 +42,7 @@ prime() //We don't care about how strong the explosion was. /obj/item/explosive/mine/emp_act() + . = ..() prime() //Same here. Don't care about the effect strength. @@ -122,7 +123,7 @@ if(prob(75)) triggered = TRUE if(tripwire) - var/direction = reverse_dir[src.dir] + var/direction = GLOB.reverse_dir[src.dir] var/step_direction = get_step(src, direction) tripwire.forceMove(step_direction) prime() @@ -196,7 +197,9 @@ return if(L.stat == DEAD) return - if(L.get_target_lock(iff_signal) || isrobot(L)) + if(L.get_target_lock(iff_signal)) + return + if(HAS_TRAIT(L, TRAIT_ABILITY_BURROWED)) return L.visible_message(SPAN_DANGER("[icon2html(src, viewers(src))] The [name] clicks as [L] moves in front of it."), \ SPAN_DANGER("[icon2html(src, L)] The [name] clicks as you move in front of it."), \ @@ -238,7 +241,7 @@ //We move the tripwire randomly in either of the four cardinal directions triggered = TRUE if(tripwire) - var/direction = pick(cardinal) + var/direction = pick(GLOB.cardinals) var/step_direction = get_step(src, direction) tripwire.forceMove(step_direction) prime() @@ -263,6 +266,8 @@ /obj/effect/mine_tripwire/Destroy() if(linked_claymore) + if(linked_claymore.tripwire == src) + linked_claymore.tripwire = null linked_claymore = null . = ..() @@ -306,7 +311,7 @@ map_deployed = TRUE /obj/item/explosive/mine/custom - name = "Custom mine" + name = "custom mine" desc = "A custom chemical mine built from an M20 casing." icon_state = "m20_custom" customizable = TRUE diff --git a/code/game/objects/items/explosives/plastic.dm b/code/game/objects/items/explosives/plastic.dm index 4c2a1774d4db..1d2986f79e55 100644 --- a/code/game/objects/items/explosives/plastic.dm +++ b/code/game/objects/items/explosives/plastic.dm @@ -26,7 +26,7 @@ /obj/item/explosive/plastic/Destroy() disarm() - . = ..() + return ..() /obj/item/explosive/plastic/explosion_throw(severity, direction, scatter_multiplier) if(active) @@ -156,7 +156,9 @@ plant_target.overlays -= overlay qdel(overlay) plant_target.contents -= src - forceMove(get_turf(plant_target)) + var/turf/plant_turf = get_turf(plant_target) + if(plant_turf) + forceMove(plant_turf) plant_target = null if(customizable) if(active) //deactivate @@ -182,7 +184,7 @@ //vehicle interior stuff checks if(SSinterior.in_interior(target)) - to_chat(user, SPAN_WARNING("It's too cramped in here to deploy \the [src].")) + to_chat(user, SPAN_WARNING("It's too cramped in here to deploy [src].")) return FALSE if(istype(target, /obj/effect) || istype(target, /obj/structure/machinery)) @@ -193,7 +195,7 @@ if(istype(target, /turf/closed/wall)) var/turf/closed/wall/W = target if(W.hull) - to_chat(user, SPAN_WARNING("You are unable to stick \the [src] to the [W]!")) + to_chat(user, SPAN_WARNING("You are unable to stick [src] to [W]!")) return FALSE if(istype(target, /obj/structure/window)) @@ -213,23 +215,6 @@ return TRUE -/obj/item/explosive/plastic/breaching_charge/can_place(mob/user, atom/target) - if(!is_type_in_list(target, breachable))//only items on the list are allowed - to_chat(user, SPAN_WARNING("You cannot plant \the [name] on \the [target]!")) - return FALSE - - if(SSinterior.in_interior(target))// vehicle checks again JUST IN CASE - to_chat(user, SPAN_WARNING("It's too cramped in here to deploy \the [src].")) - return FALSE - - if(istype(target, /obj/structure/window))//no breaching charges on the briefing windows / brig / CIC e.e - var/obj/structure/window/W = target - if(W.not_damageable) - to_chat(user, SPAN_WARNING("[W] is much too tough for you to do anything to it with [src].")) //On purpose to mimic wall message - return FALSE - - return TRUE - /obj/item/explosive/plastic/proc/calculate_pixel_offset(mob/user, atom/target) switch(get_dir(user, target)) if(NORTH) @@ -312,18 +297,11 @@ cell_explosion(target_turf, 120, 30, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, cause_data) qdel(src) -/obj/item/explosive/plastic/breaching_charge/handle_explosion(turf/target_turf, dir, cause_data) - var/explosion_target = get_step(target_turf, dir) - create_shrapnel(explosion_target, 40, dir, angle,/datum/ammo/bullet/shrapnel/metal, cause_data) - sleep(1)// prevents explosion from eating shrapnel - cell_explosion(target_turf, 60, 60, EXPLOSION_FALLOFF_SHAPE_EXPONENTIAL, dir, cause_data) - qdel(src) - /obj/item/explosive/plastic/proc/delayed_prime(turf/target_turf) prime(TRUE) /obj/item/explosive/plastic/custom - name = "Custom plastic explosive" + name = "custom plastic explosive" desc = "A custom plastic explosive." icon_state = "custom_plastic_explosive" overlay_image = "custom_plastic_explosive_sensing" @@ -342,3 +320,69 @@ min_timer = 3 penetration = 0.60 deploying_time = 10 + var/shrapnel_volume = 40 + var/shrapnel_type = /datum/ammo/bullet/shrapnel/metal + var/explosion_strength = 60 + +/obj/item/explosive/plastic/breaching_charge/can_place(mob/user, atom/target) + if(!is_type_in_list(target, breachable))//only items on the list are allowed + to_chat(user, SPAN_WARNING("You cannot plant [name] on [target]!")) + return FALSE + + if(SSinterior.in_interior(target))// vehicle checks again JUST IN CASE + to_chat(user, SPAN_WARNING("It's too cramped in here to deploy [src].")) + return FALSE + + if(istype(target, /obj/structure/window))//no breaching charges on the briefing windows / brig / CIC e.e + var/obj/structure/window/window = target + if(window.not_damageable) + to_chat(user, SPAN_WARNING("[window] is much too tough for you to do anything to it with [src].")) //On purpose to mimic wall message + return FALSE + + if(istype(target, /turf/closed/wall)) + var/turf/closed/wall/targeted_wall = target + if(targeted_wall.hull) + to_chat(user, SPAN_WARNING("You are unable to stick [src] to [targeted_wall]!")) + return FALSE + + return TRUE + +/obj/item/explosive/plastic/breaching_charge/handle_explosion(turf/target_turf, dir, cause_data) + var/explosion_target = get_step(target_turf, dir) + create_shrapnel(explosion_target, shrapnel_volume, dir, angle, shrapnel_type, cause_data) + addtimer(CALLBACK(src, PROC_REF(trigger_explosion), target_turf, dir, cause_data), 1) + +/obj/item/explosive/plastic/breaching_charge/proc/trigger_explosion(turf/target_turf, dir, cause_data) + cell_explosion(target_turf, explosion_strength, explosion_strength, EXPLOSION_FALLOFF_SHAPE_EXPONENTIAL, dir, cause_data) + qdel(src) + +/obj/item/explosive/plastic/breaching_charge/rubber + name = "X17 riot charge" + desc = "An explosive device used to break into areas while protecting the user from the blast. Unlike the standard breaching charge, the X17 deploys a cone spray of rubber pellets to incapacitate rather than kill." + icon_state = "riot-charge" + overlay_image = "riot-active" + shrapnel_volume = 20 + shrapnel_type = /datum/ammo/bullet/shrapnel/rubber + +/obj/item/explosive/plastic/breaching_charge/plasma + name = "plasma charge" + desc = "An alien explosive device. Who knows what it might do." + icon_state = "plasma-charge" + overlay_image = "plasma-active" + w_class = SIZE_SMALL + angle = 55 + timer = 5 + min_timer = 5 + penetration = 0.60 + deploying_time = 10 + flags_item = NOBLUDGEON|ITEM_PREDATOR + shrapnel_volume = 10 + shrapnel_type = /datum/ammo/bullet/shrapnel/plasma + explosion_strength = 90 + +/obj/item/explosive/plastic/breaching_charge/plasma/can_place(mob/user, atom/target) + if(!HAS_TRAIT(user, TRAIT_YAUTJA_TECH)) + to_chat(user, SPAN_WARNING("You don't quite understand how the device works...")) + return FALSE + . = ..() + diff --git a/code/game/objects/items/explosives/warhead.dm b/code/game/objects/items/explosives/warhead.dm index 5dfdf2a41eac..9825d7483193 100644 --- a/code/game/objects/items/explosives/warhead.dm +++ b/code/game/objects/items/explosives/warhead.dm @@ -2,11 +2,8 @@ icon = 'icons/obj/items/weapons/grenade.dmi' customizable = TRUE allowed_sensors = list() //We only need a detonator - -/obj/item/explosive/warhead/Initialize(mapload, ...) - . = ..() - pixel_y = rand(-6, 6) - pixel_x = rand(-7, 7) + ground_offset_x = 7 + ground_offset_y = 6 /obj/item/explosive/warhead/rocket name = "84mm rocket warhead" diff --git a/code/game/objects/items/frames/alarms.dm b/code/game/objects/items/frames/alarms.dm index f34b18d6825c..d665df65fc83 100644 --- a/code/game/objects/items/frames/alarms.dm +++ b/code/game/objects/items/frames/alarms.dm @@ -24,7 +24,7 @@ Code shamelessly copied from apc_frame return var/ndir = get_dir(on_wall,usr) - if (!(ndir in cardinal)) + if (!(ndir in GLOB.cardinals)) return var/turf/loc = get_turf(usr) @@ -67,7 +67,7 @@ Code shamelessly copied from apc_frame return var/ndir = get_dir(on_wall,usr) - if (!(ndir in cardinal)) + if (!(ndir in GLOB.cardinals)) return var/turf/loc = get_turf(usr) diff --git a/code/game/objects/items/frames/camera.dm b/code/game/objects/items/frames/camera.dm index e367e64e641d..6b6061df8af0 100644 --- a/code/game/objects/items/frames/camera.dm +++ b/code/game/objects/items/frames/camera.dm @@ -103,12 +103,7 @@ C.assembly = src C.auto_turn() - C.network = uniquelist(tempnetwork) - tempnetwork = difflist(C.network,RESTRICTED_CAMERA_NETWORKS) - if(!tempnetwork.len)//Camera isn't on any open network - remove its chunk from AI visibility. - cameranet.removeCamera(C) - C.c_tag = input for(var/i = 5; i >= 0; i -= 1) @@ -167,7 +162,7 @@ to_chat(user, SPAN_WARNING("\The [WT] needs to be on!")) return 0 - to_chat(user, SPAN_NOTICE("You start to weld the [src]..")) + to_chat(user, SPAN_NOTICE("You start to weld [src]..")) playsound(src.loc, 'sound/items/Welder.ogg', 25, 1) WT.eyecheck(user) if(do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) diff --git a/code/game/objects/items/frames/frame.dm b/code/game/objects/items/frames/frame.dm index 9c039821cb75..06b1c14e46c8 100644 --- a/code/game/objects/items/frames/frame.dm +++ b/code/game/objects/items/frames/frame.dm @@ -23,7 +23,7 @@ if (get_dist(on_wall,usr)>1) return var/ndir = get_dir(usr,on_wall) - if (!(ndir in cardinal)) + if (!(ndir in GLOB.cardinals)) return var/turf/loc = get_turf(usr) var/area/A = get_area(loc) diff --git a/code/game/objects/items/frames/light_fixtures.dm b/code/game/objects/items/frames/light_fixtures.dm index 35f800f28fac..b52e19492cab 100644 --- a/code/game/objects/items/frames/light_fixtures.dm +++ b/code/game/objects/items/frames/light_fixtures.dm @@ -21,7 +21,7 @@ if (get_dist(on_wall,usr)>1) return var/ndir = get_dir(usr,on_wall) - if (!(ndir in cardinal)) + if (!(ndir in GLOB.cardinals)) return var/turf/loc = get_turf(usr) if (!istype(loc, /turf/open/floor)) diff --git a/code/game/objects/items/fulton.dm b/code/game/objects/items/fulton.dm index 98987d1cd2b3..e36d269c8b90 100644 --- a/code/game/objects/items/fulton.dm +++ b/code/game/objects/items/fulton.dm @@ -1,7 +1,7 @@ // Fulton baloon deployment devices, used to gather and send crates, dead things, and other objective-based items into space for collection. /// A list of fultons currently airborne. -var/global/list/deployed_fultons = list() +GLOBAL_LIST_EMPTY(deployed_fultons) /obj/item/stack/fulton name = "fulton recovery device" @@ -36,7 +36,7 @@ var/global/list/deployed_fultons = list() attached_atom = null if(original_location) original_location = null - deployed_fultons -= src + GLOB.deployed_fultons -= src . = ..() /obj/item/stack/fulton/update_icon() @@ -90,7 +90,7 @@ var/global/list/deployed_fultons = list() var/mob/living/carbon/human/H = target_atom if(isyautja(H) && H.stat == DEAD) can_attach = TRUE - else if((H.stat != DEAD || H.mind && H.check_tod() && H.is_revivable())) + else if((H.stat != DEAD || H.check_tod() && H.is_revivable())) to_chat(user, SPAN_WARNING("You can't attach [src] to [target_atom], they still have a chance!")) return else @@ -141,8 +141,8 @@ var/global/list/deployed_fultons = list() original_location = get_turf(attached_atom) playsound(loc, 'sound/items/fulton.ogg', 50, 1) reservation = SSmapping.RequestBlockReservation(3, 3, turf_type_override = /turf/open/space) - var/middle_x = reservation.bottom_left_coords[1] + FLOOR((reservation.top_right_coords[1] - reservation.bottom_left_coords[1]) / 2, 1) - var/middle_y = reservation.bottom_left_coords[2] + FLOOR((reservation.top_right_coords[2] - reservation.bottom_left_coords[2]) / 2, 1) + var/middle_x = reservation.bottom_left_coords[1] + Floor((reservation.top_right_coords[1] - reservation.bottom_left_coords[1]) / 2) + var/middle_y = reservation.bottom_left_coords[2] + Floor((reservation.top_right_coords[2] - reservation.bottom_left_coords[2]) / 2) var/turf/space_tile = locate(middle_x, middle_y, reservation.bottom_left_coords[3]) if(!space_tile) visible_message(SPAN_WARNING("[src] begins beeping like crazy. Something is wrong!")) @@ -154,7 +154,7 @@ var/global/list/deployed_fultons = list() attached_atom.forceMove(space_tile) forceMove(attached_atom) - deployed_fultons += src + GLOB.deployed_fultons += src attached_atom.overlays -= I addtimer(CALLBACK(src, PROC_REF(return_fulton), original_location), 150 SECONDS) @@ -169,11 +169,11 @@ var/global/list/deployed_fultons = list() attached_atom.anchored = FALSE playsound(attached_atom.loc,'sound/effects/bamf.ogg', 50, 1) - if(intel_system) + if(GLOB.intel_system) if (!LAZYISIN(GLOB.failed_fultons, attached_atom)) //Giving marines an objective to retrieve that fulton (so they'd know what they lost and where) var/datum/cm_objective/retrieve_item/fulton/objective = new /datum/cm_objective/retrieve_item/fulton(attached_atom) - intel_system.store_single_objective(objective) + GLOB.intel_system.store_single_objective(objective) qdel(reservation) qdel(src) diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 71fb02cf3f07..2137b41d86bf 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -29,20 +29,6 @@ if(!C.handcuffed) place_handcuffs(C, user) -/obj/item/handcuffs/obj/structure/MouseDrop(mob/living/carbon/human/H) - var/mob/living/carbon/human/user = usr - if (!istype(user)) - return - if (user.stat || get_dist(user, src) > 1 || get_dist(user, H) > 1 || H.lying) - return - if (!istype(H)) - return - - if(!do_after(user, cuff_delay, INTERRUPT_ALL, BUSY_ICON_HOSTILE, H, INTERRUPT_MOVED, BUSY_ICON_GENERIC)) - return - - // TODO: apply handcuffs - /obj/item/handcuffs/get_mob_overlay(mob/user_mob, slot) var/image/ret = ..() diff --git a/code/game/objects/items/handheld_distress_beacon.dm b/code/game/objects/items/handheld_distress_beacon.dm index d3f99134cd23..c11a7a57c350 100644 --- a/code/game/objects/items/handheld_distress_beacon.dm +++ b/code/game/objects/items/handheld_distress_beacon.dm @@ -1,12 +1,21 @@ ///handheld distress beacons used by goon chem retrieval team to call for PMC back up /obj/item/handheld_distress_beacon - name = "handheld distress beacon" + name = "\improper PMC handheld distress beacon" desc = "A standard handheld distress beacon. Generally used by teams who may be out of regular communications range but must signal for assistance. This one is branded with a Weyland Yutani symbol and sold en masse to colonies across the Neroid Sector." icon = 'icons/obj/items/handheld_distress_beacon.dmi' icon_state = "beacon_inactive" w_class = SIZE_SMALL + ///The beacons faction that will be sent in message_admins + var/beacon_type = "PMC beacon" + ///Tells the user who the beacon will be sent to IC + var/recipient = "the USCSS Royce" + ///The name of the ERT that will be passed to get_specific_call + var/list/ert_full_name = list("Weyland-Yutani PMC (Chemical Investigation Squad)") + ///The clickable version that will be sent in message_admins + var/list/ert_short_name = list("SEND PMCs") + ///Whether beacon can be used, or has already been used var/active = FALSE /obj/item/handheld_distress_beacon/get_examine_text(mob/user) @@ -20,8 +29,8 @@ if(active) icon_state = "beacon_active" - else - icon_state = initial(icon_state) + return + icon_state = initial(icon_state) /obj/item/handheld_distress_beacon/attack_self(mob/user) . = ..() @@ -29,12 +38,29 @@ if(active) to_chat(user, "[src] is already active!") return - - for(var/client/C in GLOB.admins) - if((R_ADMIN|R_MOD) & C.admin_holder.rights) - playsound_client(C,'sound/effects/sos-morse-code.ogg',10) - message_admins("[key_name(user)] has requested a PMC Distress Beacon! [CC_MARK(user)] (SEND) (DENY) [ADMIN_JMP_USER(user)] [CC_REPLY(user)]") - to_chat(user, SPAN_NOTICE("A distress beacon request has been sent to the USCSS Royce.")) - active = TRUE update_icon() + + if(!ert_full_name || !ert_short_name || (length(ert_full_name) != length(ert_short_name))) //Make sure they are greater than 0, and both are same length + to_chat(user, SPAN_BOLDWARNING("[src] is broken!")) + CRASH("[src] was improperly set, and has been disabled.") //For the runtime logs + + var/beacon_call_buttons + for(var/current_ert_num in 1 to length(ert_full_name)) + beacon_call_buttons += "([ert_short_name[current_ert_num]]) " + + for(var/client/admin_client in GLOB.admins) + if((R_ADMIN|R_MOD) & admin_client.admin_holder.rights) + playsound_client(admin_client,'sound/effects/sos-morse-code.ogg',10) + message_admins("[key_name(user)] has used a [beacon_type]! [CC_MARK(user)] [beacon_call_buttons](DENY) [ADMIN_JMP_USER(user)] [CC_REPLY(user)]") + to_chat(user, SPAN_NOTICE("A distress beacon request has been sent to [recipient].")) + +/// CMB distress beacon held by CMB Marshal for signalling distress to Anchorpoint Station +/obj/item/handheld_distress_beacon/cmb + name = "\improper CMB handheld distress beacon" + desc = "An emergency beacon. This one is branded with a Colonial Marshal Bureau star and 'ANCHORPOINT STATION' is etched in stencil on the side. This device is issued to CMB Marshals and features an extended relay antenna." + + beacon_type = "CMB beacon" + recipient = "Anchorpoint Station" + ert_full_name = list("CMB - Patrol Team - Marshals in Distress (Friendly)", "CMB - Anchorpoint Station Colonial Marine QRF (Friendly)") + ert_short_name = list("SEND CMB", "SEND QRF") diff --git a/code/game/objects/items/hoverpack.dm b/code/game/objects/items/hoverpack.dm index c2bfacd3c3ad..02a2d4be779a 100644 --- a/code/game/objects/items/hoverpack.dm +++ b/code/game/objects/items/hoverpack.dm @@ -180,11 +180,11 @@ var/t_dist = get_dist(user, t_turf) if(!(t_dist > max_distance)) return - var/list/turf/path = getline2(user, t_turf, FALSE) + var/list/turf/path = get_line(user, t_turf, FALSE) warning.forceMove(path[max_distance]) /obj/item/hoverpack/proc/can_use_hoverpack(mob/living/carbon/human/user) - if(user.is_mob_incapacitated() || user.lying) + if(user.is_mob_incapacitated()) to_chat(user, SPAN_WARNING("You're a bit too incapacitated for that.")) return FALSE @@ -204,7 +204,7 @@ /datum/action/item_action/hover/can_use_action() var/mob/living/carbon/human/H = owner - if(!H.is_mob_incapacitated() && !H.lying && holder_item == H.back) + if(!H.is_mob_incapacitated() && holder_item == H.back) return TRUE /datum/action/item_action/hover/action_activate() diff --git a/code/game/objects/items/implants/implant.dm b/code/game/objects/items/implants/implant.dm index d39b7e675452..e7ebe0391fae 100644 --- a/code/game/objects/items/implants/implant.dm +++ b/code/game/objects/items/implants/implant.dm @@ -82,6 +82,7 @@ Implant Specifics:
        "} return dat /obj/item/implant/tracking/emp_act(severity) + . = ..() if (malfunction) //no, dawg, you can't malfunction while you are malfunctioning return malfunction = MALFUNCTION_TEMPORARY @@ -216,6 +217,7 @@ Implant Specifics:
        "} return 1 /obj/item/implant/explosive/emp_act(severity) + . = ..() if (malfunction) return malfunction = MALFUNCTION_TEMPORARY @@ -307,6 +309,7 @@ the implant may become unstable and either pre-maturely inject the subject or si return /obj/item/implant/chem/emp_act(severity) + . = ..() if (malfunction) return malfunction = MALFUNCTION_TEMPORARY @@ -432,6 +435,7 @@ the implant may become unstable and either pre-maturely inject the subject or si STOP_PROCESSING(SSobj, src) /obj/item/implant/death_alarm/emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this + . = ..() if (malfunction) //so I'm just going to add a meltdown chance here return malfunction = MALFUNCTION_TEMPORARY diff --git a/code/game/objects/items/implants/implantneurostim.dm b/code/game/objects/items/implants/implantneurostim.dm index a46cc31a2ca4..21ee2542649b 100644 --- a/code/game/objects/items/implants/implantneurostim.dm +++ b/code/game/objects/items/implants/implantneurostim.dm @@ -63,7 +63,7 @@ var/mob_pain_msg = "Excruciating pain shoots through [part ? "your [part.display_name]" : "you"]!" M.visible_message(SPAN_DANGER("[M] convulses in pain!"), SPAN_DANGER(mob_pain_msg)) M.flash_eyes(1, TRUE) - M.stunned += 10 + M.apply_effect(10, STUN) M.apply_effect(10, WEAKEN) M.apply_damage(100, HALLOSS, part) M.apply_damage(5, BURN, part, 0, 0, src) @@ -105,6 +105,7 @@ /obj/item/implant/neurostim/emp_act(severity) + . = ..() if (malfunction) return if (prob(80)) diff --git a/code/game/objects/items/lightstick.dm b/code/game/objects/items/lightstick.dm index 453d965926ff..05f5a96c5b16 100644 --- a/code/game/objects/items/lightstick.dm +++ b/code/game/objects/items/lightstick.dm @@ -7,14 +7,22 @@ desc = "You can stick them in the ground" icon = 'icons/obj/items/lighting.dmi' icon_state = "lightstick_blue0" + light_range = 2 + light_color = COLOR_BLUE var/s_color = "blue" var/trample_chance = 30 var/can_trample = TRUE +/obj/item/lightstick/Initialize(mapload, ...) + . = ..() + + if(!light_on) + set_light_range(0) + /obj/item/lightstick/Crossed(mob/living/O) if(anchored && prob(trample_chance) && can_trample) if(!istype(O,/mob/living/carbon/xenomorph/larva)) - visible_message(SPAN_DANGER("[O] tramples the [src]!")) + visible_message(SPAN_DANGER("[O] tramples [src]!")) playsound(src, 'sound/weapons/Genhit.ogg', 25, 1) if(istype(O,/mob/living/carbon/xenomorph)) if(prob(40)) @@ -22,13 +30,13 @@ else anchored = FALSE icon_state = "lightstick_[s_color][anchored]" - SetLuminosity(0) + set_light_range(0) pixel_x = 0 pixel_y = 0 else anchored = FALSE icon_state = "lightstick_[s_color][anchored]" - SetLuminosity(0) + set_light_range(0) pixel_x = 0 pixel_y = 0 @@ -38,38 +46,34 @@ if(!anchored)//If planted return - to_chat(user, "You start pulling out \the [src].") - if(!do_after(user,20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + to_chat(user, "You start pulling out [src].") + if(!do_after(user, 2 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) return anchored = FALSE - user.visible_message("[user.name] removes \the [src] from the ground.","You remove the [src] from the ground.") + user.visible_message("[user.name] removes [src] from the ground.", "You remove [src] from the ground.") icon_state = "lightstick_[s_color][anchored]" - SetLuminosity(0) + set_light(0) pixel_x = 0 pixel_y = 0 - playsound(user, 'sound/weapons/Genhit.ogg', 25, 1) - - //Remove lightsource -/obj/item/lightstick/Destroy() - SetLuminosity(0) - return ..() + playsound(user, 'sound/weapons/Genhit.ogg', 25, TRUE) //Red /obj/item/lightstick/planted icon_state = "lightstick_blue1" anchored = TRUE - luminosity = 2 + light_on = TRUE /obj/item/lightstick/red name = "red lightstick" icon_state = "lightstick_red0" s_color = "red" + light_color = COLOR_RED /obj/item/lightstick/red/planted icon_state = "lightstick_red1" anchored = TRUE - luminosity = 2 + light_on = TRUE /obj/item/lightstick/red/spoke name = "red lightstick" @@ -80,7 +84,7 @@ /obj/item/lightstick/red/spoke/planted icon_state = "lightstick_spoke1" anchored = TRUE - luminosity = 2 + light_on = TRUE /obj/item/lightstick/red/variant name = "red lightstick" @@ -90,7 +94,7 @@ /obj/item/lightstick/red/variant/planted icon_state = "lightstick_red_variant1" anchored = TRUE - luminosity = 2 + light_on = TRUE /obj/item/lightstick/variant //blue name = "blue lightstick" @@ -100,4 +104,4 @@ /obj/item/lightstick/variant/planted icon_state = "lightstick_blue_variant1" anchored = TRUE - luminosity = 2 + light_on = TRUE diff --git a/code/game/objects/items/misc.dm b/code/game/objects/items/misc.dm index 5f6ca9a91272..1699cb24ef39 100644 --- a/code/game/objects/items/misc.dm +++ b/code/game/objects/items/misc.dm @@ -134,20 +134,20 @@ return stored_item = object mobber.drop_inv_item_to_loc(object, src) - to_chat(mobber, SPAN_NOTICE("You slide the [object] into [src].")) + to_chat(mobber, SPAN_NOTICE("You slide [object] into [src].")) playsound(mobber, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) update_icon() break . = ..() /obj/item/weapon/pole/fancy_cane/this_is_a_knife/machete - stored_item = new /obj/item/weapon/claymore/mercsword/machete + stored_item = new /obj/item/weapon/sword/machete /obj/item/weapon/pole/fancy_cane/this_is_a_knife/ceremonial_sword - stored_item = new /obj/item/weapon/claymore/mercsword/ceremonial + stored_item = new /obj/item/weapon/sword/ceremonial /obj/item/weapon/pole/fancy_cane/this_is_a_knife/katana - stored_item = new /obj/item/weapon/katana + stored_item = new /obj/item/weapon/sword/katana // IN SHOTGUNS.DM!! @@ -204,7 +204,7 @@ return //too deeply nested to access or not being carried by the user. var/obj/item/storage/U = I.loc - user.client.screen -= I + user.client.remove_from_screen(I) U.contents.Remove(I) else if(user.l_hand == I) //in a hand user.drop_l_hand() diff --git a/code/game/objects/items/paint.dm b/code/game/objects/items/paint.dm index 9089dd228ed0..804d258bdcb4 100644 --- a/code/game/objects/items/paint.dm +++ b/code/game/objects/items/paint.dm @@ -1,6 +1,6 @@ //NEVER USE THIS IT SUX -PETETHEGOAT -var/global/list/cached_icons = list() +GLOBAL_LIST_EMPTY(cached_icons) /obj/item/reagent_container/glass/paint desc = "It's a paint bucket." @@ -75,7 +75,7 @@ var/global/list/cached_icons = list() name = "Paint" id = "paint_" reagent_state = 2 - color = "#808080" + color = COLOR_GRAY description = "This paint will only adhere to floor tiles." /datum/reagent/paint/reaction_turf(turf/T, volume) @@ -128,7 +128,7 @@ var/global/list/cached_icons = list() id = "paint_remover" description = "Paint remover is used to remove floor paint from floor tiles." reagent_state = 2 - color = "#808080" + color = COLOR_GRAY /datum/reagent/paint_remover/reaction_turf(turf/T, volume) if(istype(T) && T.icon != initial(T.icon)) diff --git a/code/game/objects/items/pamphlets.dm b/code/game/objects/items/pamphlets.dm index 683fbb2540f4..763d78bd6ea6 100644 --- a/code/game/objects/items/pamphlets.dm +++ b/code/game/objects/items/pamphlets.dm @@ -84,7 +84,7 @@ if(!istype(ID)) //not wearing an ID to_chat(user, SPAN_WARNING("You should wear your ID before doing this.")) return FALSE - if(ID.registered_ref != WEAKREF(user)) + if(!ID.check_biometrics(user)) to_chat(user, SPAN_WARNING("You should wear your ID before doing this.")) return FALSE @@ -96,8 +96,8 @@ user.hud_set_squad() var/obj/item/card/id/ID = user.wear_id - ID.set_assignment((user.assigned_squad ? (user.assigned_squad.name + " ") : "") + "Squad Spotter") - GLOB.data_core.manifest_modify(user.real_name, WEAKREF(user), "Squad Spotter") + ID.set_assignment((user.assigned_squad ? (user.assigned_squad.name + " ") : "") + "Spotter") + GLOB.data_core.manifest_modify(user.real_name, WEAKREF(user), "Spotter") /obj/item/pamphlet/skill/machinegunner name = "heavy machinegunner instructional pamphlet" @@ -186,3 +186,38 @@ desc = "A piece of paper covered in crude depictions of bananas and various types of primates. Probably drawn by a three-year-old child - or an unusually intelligent marine." trait = /datum/character_trait/language/primitive + +/obj/item/pamphlet/trait + bypass_pamphlet_limit = TRUE + /// What trait to give the user + var/trait_to_give + +/obj/item/pamphlet/trait/can_use(mob/living/carbon/human/user) + if(!istype(user)) + return FALSE + + if(HAS_TRAIT(user, trait_to_give)) + to_chat(user, SPAN_WARNING("You know this already!")) + return FALSE + + if(user.job != JOB_SQUAD_MARINE) + to_chat(user, SPAN_WARNING("Only squad riflemen can use this.")) + return FALSE + + if(user.has_used_pamphlet && !bypass_pamphlet_limit) + to_chat(user, SPAN_WARNING("You've already used a pamphlet!")) + return FALSE + + return TRUE + +/obj/item/pamphlet/trait/on_use(mob/living/carbon/human/user) + to_chat(user, SPAN_NOTICE(flavour_text)) + ADD_TRAIT(user, trait_to_give, "pamphlet") + if(!bypass_pamphlet_limit) + user.has_used_pamphlet = TRUE + +/obj/item/pamphlet/trait/vulture + name = "\improper M707 instructional pamphlet" + desc = "A pamphlet used to quickly impart vital knowledge of how to shoot big guns and spot for them." + icon_state = "pamphlet_vulture" + trait_to_give = TRAIT_VULTURE_USER diff --git a/code/game/objects/items/props/helmetgarb.dm b/code/game/objects/items/props/helmetgarb.dm index 661c8d422316..bdf140ff11c3 100644 --- a/code/game/objects/items/props/helmetgarb.dm +++ b/code/game/objects/items/props/helmetgarb.dm @@ -37,6 +37,11 @@ desc = "The more you fire these, the more you're reminded that a fragmentation grenade is probably more effective at fulfilling the same purpose. Say, aren't these supposed to eject from your gun?" icon_state = "spent_flech" +/obj/item/prop/helmetgarb/cartridge + name = "cartridge" + desc = "This is the bullet from a Type 71 Pulse Rifle. It is deformed from impact against an armored surface. It's been reduced to a lucky keepsake now." + icon_state = "cartridge" + /obj/item/prop/helmetgarb/prescription_bottle name = "prescription medication" desc = "Anti-anxiety meds? Amphetamines? The cure for Sudden Sleep Disorder? The label can't be read, leaving the now absent contents forever a mystery. The cap is screwed on tighter than any ID lock." @@ -94,10 +99,8 @@ var/nvg_maxhealth = 125 var/nvg_health = 125 - var/nvg_maxcharge = 2500 - var/nvg_charge = 2500 - var/nvg_drain = 8 // has a 5 minute duration but byond may give it a couple of irl time due to lag - var/infinite_charge = FALSE + /// How much charge the cell should have at most. -1 is infinite + var/cell_max_charge = 2500 var/activated = FALSE var/nightvision = FALSE @@ -112,6 +115,13 @@ var/mob/living/attached_mob var/lighting_alpha = 100 +/obj/item/prop/helmetgarb/helmet_nvg/Initialize(mapload, ...) + . = ..() + if(shape != NVG_SHAPE_COSMETIC) + AddComponent(/datum/component/cell, cell_max_charge, TRUE, charge_drain = 8) + RegisterSignal(src, COMSIG_CELL_TRY_RECHARGING, PROC_REF(cell_try_recharge)) + RegisterSignal(src, COMSIG_CELL_OUT_OF_CHARGE, PROC_REF(on_power_out)) + /obj/item/prop/helmetgarb/helmet_nvg/on_enter_storage(obj/item/storage/internal/S) ..() @@ -134,42 +144,30 @@ /obj/item/prop/helmetgarb/helmet_nvg/attackby(obj/item/A as obj, mob/user as mob) - if(istype(A,/obj/item/cell)) - recharge(A, user) - if(HAS_TRAIT(A, TRAIT_TOOL_SCREWDRIVER)) repair(user) else ..() -/obj/item/prop/helmetgarb/helmet_nvg/proc/recharge(obj/item/cell/C, mob/user as mob) +/obj/item/prop/helmetgarb/helmet_nvg/proc/cell_try_recharge(datum/source, mob/living/user) + SIGNAL_HANDLER + if(user.action_busy) - return + return COMPONENT_CELL_NO_RECHARGE + if(src != user.get_inactive_hand()) - to_chat(user, SPAN_WARNING("You need to hold \the [src] in hand in order to recharge them.")) - return + to_chat(user, SPAN_WARNING("You need to hold [src] in hand in order to recharge them.")) + return COMPONENT_CELL_NO_RECHARGE + if(shape == NVG_SHAPE_COSMETIC) - to_chat(user, SPAN_WARNING("There is no connector for the power cell inside \the [src].")) - return + to_chat(user, SPAN_WARNING("There is no connector for the power cell inside [src].")) + return COMPONENT_CELL_NO_RECHARGE + if(shape == NVG_SHAPE_BROKEN) - to_chat(user, SPAN_WARNING("You need to repair \the [src] first.")) - return - if(nvg_charge == nvg_maxcharge) - to_chat(user, SPAN_WARNING("\The [src] are already fully charged.")) - return + to_chat(user, SPAN_WARNING("You need to repair [src] first.")) + return COMPONENT_CELL_NO_RECHARGE - while(nvg_charge < nvg_maxcharge) - if(C.charge <= 0) - to_chat(user, SPAN_WARNING("\The [C] is completely dry.")) - break - if(!do_after(user, 1 SECONDS, (INTERRUPT_ALL & (~INTERRUPT_MOVED)), BUSY_ICON_BUILD, C, INTERRUPT_DIFF_LOC)) - to_chat(user, SPAN_WARNING("You were interrupted.")) - break - var/to_transfer = min(400, C.charge, (nvg_maxcharge - nvg_charge)) - if(C.use(to_transfer)) - nvg_charge += to_transfer - to_chat(user, "You transfer some power between \the [C] and \the [src]. The gauge now reads: [round(100.0*nvg_charge/nvg_maxcharge) ]%.") /obj/item/prop/helmetgarb/helmet_nvg/proc/repair(mob/user as mob) if(user.action_busy) @@ -197,7 +195,6 @@ to_chat(user, "You successfully patch \the [src].") nvg_maxhealth = 65 nvg_health = 65 - nvg_drain = initial(nvg_drain) * 2 return else if(nvg_health == nvg_maxhealth) @@ -207,7 +204,7 @@ to_chat(user, SPAN_WARNING("Nothing to fix.")) else if(shape == NVG_SHAPE_COSMETIC) - to_chat(user, SPAN_WARNING("it's nothing but a husk of what it used to be.")) + to_chat(user, SPAN_WARNING("It's nothing but a husk of what it used to be.")) else to_chat(user, "You begin to repair \the [src].") @@ -239,9 +236,6 @@ else if(nvg_health_procent >= 0) . += "They are falling apart." - if (get_dist(user, src) <= 1 && (shape == NVG_SHAPE_FINE || shape == NVG_SHAPE_PATCHED)) - . += "A small gauge in the corner reads: Power: [round(100.0*nvg_charge/nvg_maxcharge) ]%." - /obj/item/prop/helmetgarb/helmet_nvg/on_exit_storage(obj/item/storage/S) remove_attached_item() return ..() @@ -291,7 +285,7 @@ if(attached_mob != user && slot == WEAR_HEAD) set_attached_mob(user) - if(slot == WEAR_HEAD && !nightvision && activated && nvg_charge > 0 && shape > NVG_SHAPE_BROKEN) + if(slot == WEAR_HEAD && !nightvision && activated && !SEND_SIGNAL(src, COMSIG_CELL_CHECK_CHARGE) && shape > NVG_SHAPE_BROKEN) enable_nvg(user) else remove_nvg() @@ -314,7 +308,7 @@ attached_item.update_icon() activation.update_button_icon() - START_PROCESSING(SSobj, src) + SEND_SIGNAL(src, COMSIG_CELL_START_TICK_DRAIN) /obj/item/prop/helmetgarb/helmet_nvg/proc/update_sight(mob/M) @@ -348,20 +342,15 @@ attached_mob.update_sight() - STOP_PROCESSING(SSobj, src) + SEND_SIGNAL(src, COMSIG_CELL_STOP_TICK_DRAIN) /obj/item/prop/helmetgarb/helmet_nvg/process(delta_time) - if(nvg_charge > 0 && !infinite_charge) - nvg_charge = max(0, nvg_charge - nvg_drain * delta_time) - if(!attached_mob) return PROCESS_KILL - if(!activated || !attached_item || nvg_charge <= 0 || attached_mob.is_dead()) - if(activated && !attached_mob.is_dead()) - to_chat(attached_mob, SPAN_WARNING("\The [src] emit a low power warning and immediately shut down!")) - remove_nvg() + if(!activated || !attached_item || attached_mob.is_dead()) + on_power_out() return if(!attached_item.has_garb_overlay()) @@ -370,6 +359,13 @@ return +/obj/item/prop/helmetgarb/helmet_nvg/proc/on_power_out(datum/source) + SIGNAL_HANDLER + + if(activated && !attached_mob.is_dead()) + to_chat(attached_mob, SPAN_WARNING("[src] emit a low power warning and immediately shut down!")) + remove_nvg() + /obj/item/prop/helmetgarb/helmet_nvg/ui_action_click(mob/owner, obj/item/holder) toggle_nods(owner) @@ -405,7 +401,7 @@ if(activated) to_chat(user, SPAN_NOTICE("You flip the goggles down.")) icon_state = active_icon_state - if(nvg_charge > 0 && user.head == attached_item && shape > NVG_SHAPE_BROKEN) + if(!SEND_SIGNAL(src, COMSIG_CELL_CHECK_CHARGE) && user.head == attached_item && shape > NVG_SHAPE_BROKEN) enable_nvg(user) else icon_state = active_icon_state @@ -457,7 +453,7 @@ /obj/item/prop/helmetgarb/helmet_nvg/marsoc //for Marine Raiders name = "\improper Tactical M3 night vision goggles" desc = "With an integrated self-recharging battery, nothing can stop you. Put them on your helmet and press the button and it's go-time." - infinite_charge = TRUE + cell_max_charge = -1 #undef NVG_SHAPE_COSMETIC #undef NVG_SHAPE_BROKEN @@ -500,14 +496,38 @@ desc = "The USCM had its funding pulled for these when it became apparent that not every deployed enlisted was wearing a helmet 24/7; much to the bafflement of UA High Command." icon_state = "helmet_gasmask" +/obj/item/prop/helmetgarb/helmet_gasmask/on_enter_storage(obj/item/storage/internal/helmet_internal_inventory) + ..() + if(!istype(helmet_internal_inventory)) + return + var/obj/item/clothing/head/helmet/helmet_item = helmet_internal_inventory.master_object + + if(!istype(helmet_item)) + return + + helmet_item.flags_inventory |= BLOCKGASEFFECT + helmet_item.flags_inv_hide |= HIDEFACE + +/obj/item/prop/helmetgarb/helmet_gasmask/on_exit_storage(obj/item/storage/internal/helmet_internal_inventory) + ..() + if(!istype(helmet_internal_inventory)) + return + var/obj/item/clothing/head/helmet/helmet_item = helmet_internal_inventory.master_object + + if(!istype(helmet_item)) + return + + helmet_item.flags_inventory &= ~(BLOCKGASEFFECT) + helmet_item.flags_inv_hide &= ~(HIDEFACE) + /obj/item/prop/helmetgarb/trimmed_wire name = "trimmed barbed wire" desc = "It is a length of barbed wire that's had most of the sharp points filed down so that it is safe to handle." icon_state = "trimmed_wire" /obj/item/prop/helmetgarb/bullet_pipe - name = "10x99mm XM42B casing pipe" - desc = "The XM42B was an experimental weapons platform briefly fielded by the USCM and Wey-Yu PMC teams. It was manufactured by ARMAT systems at the Atlas weapons facility. Unfortunately the project had its funding pulled alongside the M5 integrated gasmask program. This spent casing has been converted into a pipe, but there is too much tar in the mouthpiece for it to be useable." + name = "10x99mm XM43E1 casing pipe" + desc = "The XM43E1 was an experimental weapons platform briefly fielded by the USCM and Wey-Yu PMC teams. It was manufactured by ARMAT systems at the Atlas weapons facility. Unfortunately the project had its funding pulled alongside the M5 integrated gasmask program. This spent casing has been converted into a pipe, but there is too much tar in the mouthpiece for it to be useable." icon_state = "bullet_pipe" /obj/item/prop/helmetgarb/chaplain_patch @@ -515,3 +535,83 @@ desc = "This patch is all that remains of the Chaplaincy of the USS Almayer, along with the Chaplains themselves. Both no longer exist as a result of losses suffered during Operation Tychon Tackle." icon_state = "chaplain_patch" flags_obj = OBJ_NO_HELMET_BAND + +/obj/item/prop/helmetgarb/family_photo + name = "family photo" + desc = "" + icon = 'icons/obj/items/items.dmi' + icon_state = "photo" + ///The human who spawns with the photo + var/datum/weakref/owner + ///The belonging human name + var/owner_name + ///The belonging human faction + var/owner_faction + ///Text written on the back + var/scribble + +/obj/item/prop/helmetgarb/family_photo/pickup(mob/user, silent) + . = ..() + if(!owner) + RegisterSignal(user, COMSIG_POST_SPAWN_UPDATE, PROC_REF(set_owner), override = TRUE) + + +///Sets the owner of the family photo to the human it spawns with, needs var/source for signals +/obj/item/prop/helmetgarb/family_photo/proc/set_owner(datum/source) + SIGNAL_HANDLER + UnregisterSignal(source, COMSIG_POST_SPAWN_UPDATE) + var/mob/living/carbon/human/user = source + owner = WEAKREF(user) + owner_name = user.name + owner_faction = user.faction + +/obj/item/prop/helmetgarb/family_photo/get_examine_text(mob/user) + . = ..() + if(scribble) + . += "\"[scribble]\" is written on the back of the photo." + if(user.weak_reference == owner) + . += "A photo of you and your family." + return + if(user.faction == owner_faction) + . += "A photo of [owner_name] and their family." + return + . += "A photo of a family you do not know." + +/obj/item/prop/helmetgarb/family_photo/attackby(obj/item/attacking_item, mob/user) + . = ..() + if(HAS_TRAIT(attacking_item, TRAIT_TOOL_PEN) || istype(attacking_item, /obj/item/toy/crayon)) + if(scribble) + to_chat(user, SPAN_NOTICE("[src] has already been written on.")) + return + var/new_text = copytext(strip_html(tgui_input_text(user, "What would you like to write on the back of [src]?", "Photo Writing")), 1, 128) + + if(!loc == user) + to_chat(user, SPAN_NOTICE("You need to be holding [src] to write on it.")) + return + if(!user.stat == CONSCIOUS) + to_chat(user, SPAN_NOTICE("You cannot write on [src] in this state.")) + return + scribble = new_text + playsound(src, "paper_writing", 15, TRUE) + return TRUE + +/obj/item/prop/helmetgarb/compass + name = "compass" + desc = "It always faces north. Are you sure it is not broken?" + icon = 'icons/obj/items/items.dmi' + icon_state = "compass" + w_class = SIZE_SMALL + +/obj/item/prop/helmetgarb/compass/get_examine_text(mob/user) + . = ..() + if(is_ground_level(user.z) && !SSmapping.configs[GROUND_MAP].environment_traits[ZTRAIT_IN_SPACE]) + . += SPAN_NOTICE("It seems you are facing [dir2text(user.dir)].") + return + . += SPAN_NOTICE("The needle is not moving.") + +/obj/item/prop/helmetgarb/bug_spray + name = "insect repellent" + desc = "A store-brand insect repellent, to keep any variety of pest or mosquito away from you." + icon = 'icons/obj/items/spray.dmi' + icon_state = "pestspray" + w_class = SIZE_SMALL diff --git a/code/game/objects/items/props/robots.dm b/code/game/objects/items/props/robots.dm new file mode 100644 index 000000000000..e0a8b8d312fb --- /dev/null +++ b/code/game/objects/items/props/robots.dm @@ -0,0 +1,45 @@ +/obj/item/broken_device + name = "broken component" + icon = 'icons/obj/items/robot_component.dmi' + icon_state = "broken" + +/obj/item/robot_parts/robot_component + icon = 'icons/obj/items/robot_component.dmi' + icon_state = "working" + +/obj/item/robot_parts/robot_component/binary_communication_device + name = "binary communication device" + icon_state = "binradio" + +/obj/item/robot_parts/robot_component/actuator + name = "actuator" + icon_state = "motor" + +/obj/item/robot_parts/robot_component/armour + name = "armour plating" + icon_state = "armor" + +/obj/item/robot_parts/robot_component/camera + name = "camera" + icon_state = "camera" + +/obj/item/robot_parts/robot_component/diagnosis_unit + name = "diagnosis unit" + icon_state = "analyser" + +/obj/item/robot_parts/robot_component/radio + name = "radio" + icon_state = "radio" + +/obj/item/device/robotanalyzer + name = "cyborg analyzer" + icon_state = "robotanalyzer" + item_state = "analyzer" + desc = "A hand-held scanner able to diagnose robotic injuries. It looks broken." + flags_atom = FPRINT|CONDUCT + flags_equip_slot = SLOT_WAIST + throwforce = 3 + w_class = SIZE_SMALL + throw_speed = SPEED_VERY_FAST + throw_range = 10 + matter = list("metal" = 200) diff --git a/code/game/objects/items/reagent_containers/autoinjectors.dm b/code/game/objects/items/reagent_containers/autoinjectors.dm index 4c1e8af88ee5..04a3a15585ab 100644 --- a/code/game/objects/items/reagent_containers/autoinjectors.dm +++ b/code/game/objects/items/reagent_containers/autoinjectors.dm @@ -139,6 +139,12 @@ item_state = "emptyskill" skilllock = SKILL_MEDICAL_DEFAULT +/obj/item/reagent_container/hypospray/autoinjector/tramadol/skillless/one_use + desc = "An EZ autoinjector loaded with 1 use of Tramadol, a weak but effective painkiller for normal wounds. Doesn't require any training to use." + volume = 15 + amount_per_transfer_from_this = 15 + uses_left = 1 + /obj/item/reagent_container/hypospray/autoinjector/oxycodone name = "oxycodone autoinjector (EXTREME PAINKILLER)" chemname = "oxycodone" @@ -164,6 +170,12 @@ item_state = "emptyskill" skilllock = SKILL_MEDICAL_DEFAULT +/obj/item/reagent_container/hypospray/autoinjector/kelotane/skillless/one_use + desc = "An EZ autoinjector loaded with 1 use of Kelotane, a common burn medicine. Doesn't require any training to use." + volume = 15 + amount_per_transfer_from_this = 15 + uses_left = 1 + /obj/item/reagent_container/hypospray/autoinjector/bicaridine name = "bicaridine autoinjector" chemname = "bicaridine" @@ -180,6 +192,12 @@ item_state = "emptyskill" skilllock = SKILL_MEDICAL_DEFAULT +/obj/item/reagent_container/hypospray/autoinjector/bicaridine/skillless/one_use + desc = "An EZ autoinjector loaded with 1 use of Bicaridine, a common brute and circulatory damage medicine. Doesn't require any training to use." + volume = 15 + amount_per_transfer_from_this = 15 + uses_left = 1 + /obj/item/reagent_container/hypospray/autoinjector/inaprovaline name = "inaprovaline autoinjector" chemname = "inaprovaline" @@ -191,8 +209,10 @@ /obj/item/reagent_container/hypospray/autoinjector/emergency name = "emergency autoinjector (CAUTION)" + desc = "An auto-injector loaded with a special cocktail of chemicals, to be used in life-threatening situations. Doesn't require any training to use." + icon_state = "emptyskill" + item_state = "emptyskill" chemname = "emergency" - desc = "An auto-injector loaded with a special cocktail of chemicals, to be used in life-threatening situations." amount_per_transfer_from_this = (REAGENTS_OVERDOSE-1)*2 + (MED_REAGENTS_OVERDOSE-1) volume = (REAGENTS_OVERDOSE-1)*2 + (MED_REAGENTS_OVERDOSE-1) mixed_chem = TRUE @@ -201,12 +221,6 @@ injectVOL = 70//limited-supply emergency injector with v.large injection of drugs. Variable sfx freq sometimes rolls too quiet. display_maptext = TRUE //see anaesthetic injector maptext_label = "!!" - -/obj/item/reagent_container/hypospray/autoinjector/emergency/skillless - name = "EZ emergency autoinjector (CAUTION)" - desc = "An auto-injector loaded with a special cocktail of chemicals, to be used in life-threatening situations. Doesn't require any training to use." - icon_state = "emptyskill" - item_state = "emptyskill" skilllock = SKILL_MEDICAL_DEFAULT /obj/item/reagent_container/hypospray/autoinjector/emergency/Initialize() diff --git a/code/game/objects/items/reagent_containers/blood_pack.dm b/code/game/objects/items/reagent_containers/blood_pack.dm index 450cdde2fa00..92c68e81c9d2 100644 --- a/code/game/objects/items/reagent_containers/blood_pack.dm +++ b/code/game/objects/items/reagent_containers/blood_pack.dm @@ -2,10 +2,10 @@ #define BLOOD_BAG_TAKING 0 /obj/item/reagent_container/blood - name = "BloodPack" - desc = "Contains blood used for transfusion." + name = "blood pack" + desc = "A blood pack. Contains fluids, typically used for transfusions." icon = 'icons/obj/items/bloodpack.dmi' - icon_state = "empty" + icon_state = "bloodpack" volume = 300 matter = list("plastic" = 500) flags_atom = CAN_BE_SYRINGED @@ -13,12 +13,14 @@ var/mode = BLOOD_BAG_INJECTING var/mob/living/carbon/human/connected_to + var/mob/living/carbon/human/connected_from var/blood_type = null + var/datum/beam/current_beam /obj/item/reagent_container/blood/Initialize() . = ..() if(blood_type != null) - name = "BloodPack [blood_type]" + name = "[blood_type] blood pack" reagents.add_reagent("blood", initial(volume), list("viruses" = null, "blood_type" = blood_type, "resistances" = null)) update_icon() @@ -27,10 +29,32 @@ /obj/item/reagent_container/blood/update_icon() var/percent = round((reagents.total_volume / volume) * 100) - switch(percent) - if(0 to 9) icon_state = "empty" - if(10 to 50) icon_state = "half" - if(51 to INFINITY) icon_state = "full" + overlays = null + underlays = null + + if(blood_type) + overlays += image('icons/obj/items/bloodpack.dmi', src, blood_type) + + if(reagents && reagents.total_volume) + var/image/filling = image('icons/obj/items/reagentfillings.dmi', src, "[icon_state]10") + + switch(percent) + if(1 to 9) filling.icon_state = "[icon_state]5" + if(10 to 19) filling.icon_state = "[icon_state]10" + if(20 to 39) filling.icon_state = "[icon_state]25" + if(40 to 64) filling.icon_state = "[icon_state]50" + if(65 to 79) filling.icon_state = "[icon_state]75" + if(80 to 90) filling.icon_state = "[icon_state]80" + if(91 to INFINITY) filling.icon_state = "[icon_state]100" + + filling.color = mix_color_from_reagents(reagents.reagent_list) + underlays += filling + +/obj/item/reagent_container/blood/proc/update_beam() + if(current_beam) + QDEL_NULL(current_beam) + else if(connected_from && connected_to) + current_beam = connected_from.beam(connected_to, "iv_tube") /obj/item/reagent_container/blood/attack(mob/attacked_mob, mob/user) . = ..() @@ -44,7 +68,10 @@ user.visible_message("[user] detaches [src] from [connected_to].", \ "You detach [src] from [connected_to].") connected_to.active_transfusions -= src + connected_to.base_pixel_x = 0 connected_to = null + connected_from = null + update_beam() return if(!skillcheck(user, SKILL_SURGERY, SKILL_SURGERY_NOVICE)) @@ -54,16 +81,19 @@ if(user.action_busy) return - if(!do_after(user, 3 SECONDS * user.get_skill_duration_multiplier(SKILL_SURGERY), INTERRUPT_ALL, BUSY_ICON_FRIENDLY, attacked_mob, INTERRUPT_MOVED, BUSY_ICON_MEDICAL)) + if(!do_after(user, (1 SECONDS) * user.get_skill_duration_multiplier(SKILL_SURGERY), INTERRUPT_ALL, BUSY_ICON_FRIENDLY, attacked_mob, INTERRUPT_MOVED, BUSY_ICON_MEDICAL)) to_chat(user, SPAN_WARNING("You were interrupted before you could finish!")) return if(istype(attacked_mob, /mob/living/carbon/human)) connected_to = attacked_mob + connected_from = user connected_to.active_transfusions += src + connected_to.base_pixel_x = 5 START_PROCESSING(SSobj, src) user.visible_message("[user] attaches \the [src] to [connected_to].", \ "You attach \the [src] to [connected_to].") + update_beam() /obj/item/reagent_container/blood/process() //if we're not connected to anything stop doing stuff @@ -106,6 +136,10 @@ connected_to.take_blood(src, amount) +/obj/item/reagent_container/blood/dropped() + ..() + bad_disconnect() + ///Used to standardize effects of a blood bag disconnecting improperly /obj/item/reagent_container/blood/proc/bad_disconnect() if(!connected_to) @@ -114,9 +148,12 @@ connected_to.visible_message("[src] breaks free of [connected_to]!", "[src] is pulled out of you!") connected_to.apply_damage(3, BRUTE, pick("r_arm", "l_arm")) if(connected_to.pain.feels_pain) - connected_to.emote("scream") + connected_to.emote("pain") connected_to.active_transfusions -= src + connected_to.base_pixel_x = 0 connected_to = null + connected_from = null + update_beam() /obj/item/reagent_container/blood/verb/toggle_mode() set category = "Object" @@ -126,7 +163,7 @@ if(!istype(usr, /mob/living)) return - if(usr.stat || usr.lying) + if(usr.stat || usr.is_mob_incapacitated()) return mode = !mode @@ -152,9 +189,8 @@ blood_type = "O-" /obj/item/reagent_container/blood/empty - name = "Empty BloodPack" - desc = "Seems pretty useless... Maybe if there were a way to fill it?" - icon_state = "empty" + name = "empty blood pack" + desc = "An empty blood pack. Sorry, vampires, no luck here." #undef BLOOD_BAG_INJECTING #undef BLOOD_BAG_TAKING diff --git a/code/game/objects/items/reagent_containers/borghydro.dm b/code/game/objects/items/reagent_containers/borghydro.dm deleted file mode 100644 index 30a9bdbd3c65..000000000000 --- a/code/game/objects/items/reagent_containers/borghydro.dm +++ /dev/null @@ -1,86 +0,0 @@ - -/obj/item/reagent_container/borghypo - name = "Robot Hypospray" - desc = "An advanced chemical synthesizer and injection system, designed for heavy-duty medical equipment." - icon = 'icons/obj/items/syringe.dmi' - item_state = "hypo" - icon_state = "borghypo" - amount_per_transfer_from_this = 5 - volume = 30 - possible_transfer_amounts = null - var/mode = 1 - var/charge_cost = 50 - var/charge_tick = 0 - var/recharge_time = 2 SECONDS //Time it takes for shots to recharge - - var/list/reagent_ids = list("tricordrazine", "bicaridine", "kelotane", "dexalinp", "anti_toxin", "inaprovaline", "tramadol", "imidazoline", "spaceacillin") - var/list/reagent_volumes = list() - var/list/reagent_names = list() - -/obj/item/reagent_container/borghypo/Initialize() - . = ..() - - for(var/T in reagent_ids) - reagent_volumes[T] = volume - var/datum/reagent/R = chemical_reagents_list[T] - reagent_names += R.name - - START_PROCESSING(SSobj, src) - - -/obj/item/reagent_container/borghypo/Destroy() - STOP_PROCESSING(SSobj, src) - . = ..() - -/obj/item/reagent_container/borghypo/process() //Every [recharge_time] seconds, recharge some reagents for the cyborg+ - if(++charge_tick < recharge_time) - return 0 - charge_tick = 0 - - if(isrobot(loc)) - var/mob/living/silicon/robot/R = loc - if(R && R.cell) - for(var/T in reagent_ids) - if(reagent_volumes[T] < volume) - R.cell.use(charge_cost) - reagent_volumes[T] = min(reagent_volumes[T] + 5, volume) - return 1 - -/obj/item/reagent_container/borghypo/attack(mob/living/M as mob, mob/user as mob) - if(!istype(M)) - return - - if(!reagent_volumes[reagent_ids[mode]]) - to_chat(user, SPAN_WARNING("The injector is empty.")) - return - - to_chat(user, SPAN_NOTICE(" You inject [M] with the injector.")) - to_chat(M, SPAN_NOTICE(" [user] injects you with the injector.")) - playsound(loc, 'sound/items/hypospray.ogg', 50, 1) - - if(M.reagents) - var/t = min(amount_per_transfer_from_this, reagent_volumes[reagent_ids[mode]]) - M.reagents.add_reagent(reagent_ids[mode], t) - reagent_volumes[reagent_ids[mode]] -= t - // to_chat(user, SPAN_NOTICE("[t] units injected. [reagent_volumes[reagent_ids[mode]]] units remaining.")) - to_chat(user, SPAN_NOTICE(" [t] units of \red [reagent_ids[mode]] \blue injected for a total of \red [round(M.reagents.get_reagent_amount(reagent_ids[mode]))]\blue. [reagent_volumes[reagent_ids[mode]]] units remaining.")) - - return - -/obj/item/reagent_container/borghypo/attack_self(mob/user) - ..() - var/selection = tgui_input_list(usr, "Please select a reagent:", "Reagent", reagent_ids) - if(!selection) return - var/datum/reagent/R = chemical_reagents_list[selection] - to_chat(user, SPAN_NOTICE(" Synthesizer is now producing '[R.name]'.")) - mode = reagent_ids.Find(selection) - playsound(src.loc, 'sound/effects/pop.ogg', 15, 0) - return - -/obj/item/reagent_container/borghypo/get_examine_text(mob/user) - . = ..() - if (user != loc) return - - var/datum/reagent/R = chemical_reagents_list[reagent_ids[mode]] - - . += SPAN_NOTICE("It is currently producing [R.name] and has [reagent_volumes[reagent_ids[mode]]] out of [volume] units left.") diff --git a/code/game/objects/items/reagent_containers/dropper.dm b/code/game/objects/items/reagent_containers/dropper.dm index eaf28f66b012..f36145e285cd 100644 --- a/code/game/objects/items/reagent_containers/dropper.dm +++ b/code/game/objects/items/reagent_containers/dropper.dm @@ -32,7 +32,7 @@ if(ismob(target)) var/time = 20 //2/3rds the time of a syringe - for(var/mob/O in viewers(world_view_size, user)) + for(var/mob/O in viewers(GLOB.world_view_size, user)) O.show_message(SPAN_DANGER("[user] is trying to squirt something into [target]'s eyes!"), SHOW_MESSAGE_VISIBLE) if(!do_after(user, time, INTERRUPT_ALL, BUSY_ICON_FRIENDLY, target, INTERRUPT_MOVED, BUSY_ICON_MEDICAL)) return @@ -56,7 +56,7 @@ safe_thing.create_reagents(100) trans = src.reagents.trans_to(safe_thing, amount_per_transfer_from_this) - for(var/mob/O in viewers(world_view_size, user)) + for(var/mob/O in viewers(GLOB.world_view_size, user)) O.show_message(SPAN_DANGER("[user] tries to squirt something into [target]'s eyes, but fails!"), SHOW_MESSAGE_VISIBLE) spawn(5) src.reagents.reaction(safe_thing, TOUCH) @@ -67,7 +67,7 @@ icon_state = "dropper[filled]" return - for(var/mob/O in viewers(world_view_size, user)) + for(var/mob/O in viewers(GLOB.world_view_size, user)) O.show_message(SPAN_DANGER("[user] squirts something into [target]'s eyes!"), SHOW_MESSAGE_VISIBLE) src.reagents.reaction(target, TOUCH) diff --git a/code/game/objects/items/reagent_containers/food.dm b/code/game/objects/items/reagent_containers/food.dm index 13dfcac84ff8..f4b2213904d2 100644 --- a/code/game/objects/items/reagent_containers/food.dm +++ b/code/game/objects/items/reagent_containers/food.dm @@ -2,10 +2,14 @@ /// Food. //////////////////////////////////////////////////////////////////////////////// /obj/item/reagent_container/food + item_icons = list( + WEAR_L_HAND = 'icons/mob/humans/onmob/items_lefthand_1.dmi', + WEAR_R_HAND = 'icons/mob/humans/onmob/items_righthand_1.dmi' + ) possible_transfer_amounts = null volume = 50 //Sets the default container amount for all food items. flags_atom = CAN_BE_SYRINGED - var/filling_color = "#FFFFFF" //Used by sandwiches. + var/filling_color = COLOR_WHITE //Used by sandwiches. /obj/item/reagent_container/food/Initialize() . = ..() diff --git a/code/game/objects/items/reagent_containers/food/cans.dm b/code/game/objects/items/reagent_containers/food/cans.dm index aab2ee066e12..8cf28a9d560c 100644 --- a/code/game/objects/items/reagent_containers/food/cans.dm +++ b/code/game/objects/items/reagent_containers/food/cans.dm @@ -38,7 +38,6 @@ to_chat(user, SPAN_NOTICE("You need to open the drink!")) return var/datum/reagents/R = src.reagents - var/fillevel = gulp_size if(!R.total_volume || !R) if(M == user && M.a_intent == INTENT_HARM && M.zone_selected == "head") @@ -80,13 +79,6 @@ reagents.set_source_mob(user) reagents.trans_to_ingest(M, gulp_size) - if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell - var/mob/living/silicon/robot/bro = user - bro.cell.use(30) - var/refill = R.get_master_reagent_id() - spawn(1 MINUTES) - R.add_reagent(refill, fillevel) - playsound(M.loc,'sound/items/drink.ogg', 15, 1) return 1 @@ -270,7 +262,7 @@ /obj/item/reagent_container/food/drinks/cans/boda name = "\improper Boda" desc = "State regulated soda beverage. Enjoy comrades." - desc_lore = "Designed back in 2159, the advertising campaign for BODA started out as an attempt by the UPP to win the hearts and minds of colonists and settlers across the galaxy. Soon after, the ubiquitous cyan vendors and large supplies of the drink began to crop up in UA warehouses with seemingly no clear origin. Despite some concerns, after initial testing determined that the stored products were safe for consumption and surprisingly popular when blind-tested with focus groups, the strange surplus of BODA was authorized for usage within the UA-associated colonies. Subsequently, it enjoyed a relative popularity before falling into obscurity in the coming decades as supplies dwindled." + desc_lore = "Designed back in 2159, the advertising campaign for BODA started out as an attempt by the UPP to win the hearts and minds of colonists and settlers across the galaxy. Soon after, the ubiquitous cyan vendors and large supplies of the drink began to crop up in UA warehouses with seemingly no clear origin. Despite some concerns, after initial testing determined that the stored products were safe for consumption and surprisingly popular when blind-tested with focus groups, the strange surplus of BODA was authorized for usage within the UA-associated colonies. Subsequently, it enjoyed a relative popularity before falling into obscurity in the coming decades as supplies dwindled." icon_state = "boda" center_of_mass = "x=16;y=10" diff --git a/code/game/objects/items/reagent_containers/food/condiment.dm b/code/game/objects/items/reagent_containers/food/condiment.dm index a13489f0af1e..35944e4422c4 100644 --- a/code/game/objects/items/reagent_containers/food/condiment.dm +++ b/code/game/objects/items/reagent_containers/food/condiment.dm @@ -23,7 +23,7 @@ return FALSE if(M == user) - to_chat(M, SPAN_NOTICE(" You swallow some of contents of the [src].")) + to_chat(M, SPAN_NOTICE("You swallow some of contents of [src].")) else if(istype(M, /mob/living/carbon/human)) user.affected_message(M, @@ -80,7 +80,7 @@ to_chat(user, SPAN_DANGER("[src] is empty.")) return if(target.reagents.total_volume >= target.reagents.maximum_volume) - to_chat(user, SPAN_DANGER("you can't add anymore to [target].")) + to_chat(user, SPAN_DANGER("You can't add any more to [target].")) return var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) to_chat(user, SPAN_NOTICE(" You transfer [trans] units of the condiment to [target].")) @@ -202,7 +202,7 @@ /obj/item/reagent_container/food/condiment/hotsauce/franks name = "\improper Frank's Red Hot bottle" desc = "A bottle of Weyland-Yutani brand Frank's Red Hot hot sauce." - desc_lore = "Supposedly designed as a middle-ground flavor between ketchup and cayenne, this brand of spicy goodness achieved critical acclaim throughout UA space within both colonies and vessels alike. The sudden and widespread adoption was curiously timed with the near-simultaneous shelving of the original Frank's 'ULTRA' hot sauce." + desc_lore = "Supposedly designed as a middle-ground flavor between ketchup and cayenne, this brand of spicy goodness achieved critical acclaim throughout UA space within both colonies and vessels alike. The sudden and widespread adoption was curiously timed with the near-simultaneous shelving of the original Frank's 'ULTRA' hot sauce." icon_state = "hotsauce_franks" item_state = "hotsauce_franks" diff --git a/code/game/objects/items/reagent_containers/food/drinks.dm b/code/game/objects/items/reagent_containers/food/drinks.dm index 9f88990e5350..0ec02b240e29 100644 --- a/code/game/objects/items/reagent_containers/food/drinks.dm +++ b/code/game/objects/items/reagent_containers/food/drinks.dm @@ -17,12 +17,15 @@ /obj/item/reagent_container/food/drinks/attack(mob/M, mob/user) var/datum/reagents/R = src.reagents - var/fillevel = gulp_size if(!R.total_volume || !R) to_chat(user, SPAN_DANGER("The [src.name] is empty!")) return FALSE + if(HAS_TRAIT(M, TRAIT_CANNOT_EAT)) + to_chat(user, SPAN_DANGER("[user == M ? "You are" : "[M] is"] unable to drink!")) + return FALSE + if(M == user) to_chat(M, SPAN_NOTICE(" You swallow a gulp from \the [src].")) if(reagents.total_volume) @@ -55,13 +58,6 @@ reagents.set_source_mob(user) reagents.trans_to_ingest(M, gulp_size) - if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell - var/mob/living/silicon/robot/bro = user - bro.cell.use(30) - var/refill = R.get_master_reagent_id() - spawn(1 MINUTES) - R.add_reagent(refill, fillevel) - playsound(M.loc,'sound/items/drink.ogg', 15, 1) return TRUE @@ -98,28 +94,9 @@ to_chat(user, SPAN_DANGER("[target] is full.")) return - - - var/datum/reagent/refill - var/datum/reagent/refillName - if(isrobot(user)) - refill = reagents.get_master_reagent_id() - refillName = reagents.get_master_reagent_name() - var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) to_chat(user, SPAN_NOTICE(" You transfer [trans] units of the solution to [target].")) - if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell - var/mob/living/silicon/robot/bro = user - var/chargeAmount = max(30,4*trans) - bro.cell.use(chargeAmount) - to_chat(user, "Now synthesizing [trans] units of [refillName]...") - - - spawn(30 SECONDS) - reagents.add_reagent(refill, trans) - to_chat(user, "Cyborg [src] refilled.") - return ..() /obj/item/reagent_container/food/drinks/get_examine_text(mob/user) diff --git a/code/game/objects/items/reagent_containers/food/drinks/bottle.dm b/code/game/objects/items/reagent_containers/food/drinks/bottle.dm index e1936fbaaec4..b522d8d2ed81 100644 --- a/code/game/objects/items/reagent_containers/food/drinks/bottle.dm +++ b/code/game/objects/items/reagent_containers/food/drinks/bottle.dm @@ -13,7 +13,7 @@ var/isGlass = TRUE black_market_value = 25 -/obj/item/reagent_container/food/drinks/bottle/bullet_act(obj/item/projectile/P) +/obj/item/reagent_container/food/drinks/bottle/bullet_act(obj/projectile/P) . = ..() if(isGlass) smash() @@ -107,7 +107,7 @@ if(alcohol_potency < BURN_LEVEL_TIER_1) to_chat(user, SPAN_NOTICE("There's not enough flammable liquid in \the [src]!")) return - alcohol_potency = Clamp(alcohol_potency, BURN_LEVEL_TIER_1, BURN_LEVEL_TIER_7) + alcohol_potency = clamp(alcohol_potency, BURN_LEVEL_TIER_1, BURN_LEVEL_TIER_7) if(!do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) return diff --git a/code/game/objects/items/reagent_containers/food/drinks/drinkingglass.dm b/code/game/objects/items/reagent_containers/food/drinks/drinkingglass.dm index 31a0e517c725..eea71cd1a4bc 100644 --- a/code/game/objects/items/reagent_containers/food/drinks/drinkingglass.dm +++ b/code/game/objects/items/reagent_containers/food/drinks/drinkingglass.dm @@ -682,7 +682,7 @@ return -/obj/item/reagent_container/food/drinks/drinkingglass/bullet_act(obj/item/projectile/P) +/obj/item/reagent_container/food/drinks/drinkingglass/bullet_act(obj/projectile/P) . = ..() smash() diff --git a/code/game/objects/items/reagent_containers/food/fish_snacks.dm b/code/game/objects/items/reagent_containers/food/fish_snacks.dm index 9e9dcb1b8017..ba4a3c05fb0f 100644 --- a/code/game/objects/items/reagent_containers/food/fish_snacks.dm +++ b/code/game/objects/items/reagent_containers/food/fish_snacks.dm @@ -13,7 +13,7 @@ var/gut_icon_state = null var/gut_time = 3 var/initial_desc = "" - var/list/guttable_atoms = list(/obj/item/reagent_container/food/snacks/meat, /obj/item/reagent_container/food/snacks/meat/syntiflesh)//placeholders, for now + var/list/guttable_atoms = list(/obj/item/reagent_container/food/snacks/meat, /obj/item/reagent_container/food/snacks/meat/synthmeat)//placeholders, for now var/base_gut_meat = /obj/item/reagent_container/food/snacks/meat //slice_path = null// //slices_num diff --git a/code/game/objects/items/reagent_containers/food/fortunecookie.dm b/code/game/objects/items/reagent_containers/food/fortunecookie.dm index a878ff589dc8..6077541acd84 100644 --- a/code/game/objects/items/reagent_containers/food/fortunecookie.dm +++ b/code/game/objects/items/reagent_containers/food/fortunecookie.dm @@ -75,7 +75,7 @@ to_chat(user,SPAN_WARNING("[src] is cracked open! How are you gonna slip something in that?")) else if(!cookiefortune) - to_chat(user, SPAN_NOTICE("You slip the paper into the [src].")) + to_chat(user, SPAN_NOTICE("You slip the paper into [src].")) cookiefortune = W user.drop_inv_item_to_loc(W, src) else @@ -93,7 +93,7 @@ user.put_in_hands(cookiefortune) cookiefortune = null else - to_chat(SPAN_WARNING("You break open the fortune cookie, but there's no fortune inside! Oh no!")) + to_chat(user, SPAN_WARNING("You break open the fortune cookie, but there's no fortune inside! Oh no!")) else . = ..() @@ -109,7 +109,7 @@ user.put_in_hands(cookiefortune) cookiefortune = null else - to_chat(SPAN_WARNING("You break open the fortune cookie, but there's no fortune inside! Oh no!")) + to_chat(user, SPAN_WARNING("You break open the fortune cookie, but there's no fortune inside! Oh no!")) else . = ..() diff --git a/code/game/objects/items/reagent_containers/food/sandwich.dm b/code/game/objects/items/reagent_containers/food/sandwich.dm index 1b7d61eaddad..b3f68bd299a9 100644 --- a/code/game/objects/items/reagent_containers/food/sandwich.dm +++ b/code/game/objects/items/reagent_containers/food/sandwich.dm @@ -18,7 +18,7 @@ /obj/item/reagent_container/food/snacks/csandwich/attackby(obj/item/W as obj, mob/user as mob) if(istype(W, /obj/item/reagent_container/food/snacks/csandwich)) //No sandwitch inception, it causes some bugs... - to_chat(user, SPAN_NOTICE(" You can't put a [W] in the [src].")) + to_chat(user, SPAN_NOTICE("You can't put \a [W] in [src].")) return var/sandwich_limit = 4 @@ -74,7 +74,7 @@ name = lowertext("[fullname] sandwich") if(length(name) > 80) name = "[pick(list("absurd","colossal","enormous","ridiculous"))] sandwich" - w_class = n_ceil(Clamp((ingredients.len/2),1,3)) + w_class = Ceiling(clamp((ingredients.len/2),1,3)) /obj/item/reagent_container/food/snacks/csandwich/Destroy() QDEL_NULL_LIST(ingredients) diff --git a/code/game/objects/items/reagent_containers/food/snacks.dm b/code/game/objects/items/reagent_containers/food/snacks.dm index 7dae94bfe4eb..3ae57723668f 100644 --- a/code/game/objects/items/reagent_containers/food/snacks.dm +++ b/code/game/objects/items/reagent_containers/food/snacks.dm @@ -21,6 +21,7 @@ //Placeholder for effect that trigger on eating that aren't tied to reagents. /obj/item/reagent_container/food/snacks/proc/On_Consume(mob/M) SEND_SIGNAL(src, COMSIG_SNACK_EATEN, M) + SEND_SIGNAL(M, COMSIG_MOB_EATEN_SNACK, src) if(!usr) return if(!reagents.total_volume) @@ -42,7 +43,7 @@ ..() if (world.time <= user.next_move) - return + return FALSE attack(user, user, "head")//zone does not matter user.next_move += attack_speed @@ -51,37 +52,41 @@ to_chat(user, SPAN_DANGER("None of [src] left, oh no!")) M.drop_inv_item_on_ground(src) //so icons update :[ qdel(src) - return 0 + return FALSE if(package) to_chat(M, SPAN_WARNING("How do you expect to eat this with the package still on?")) - return 0 + return FALSE if(istype(M, /mob/living/carbon)) var/mob/living/carbon/C = M var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25) - if(fullness > 540 && world.time < C.overeat_cooldown) + if(fullness > NUTRITION_HIGH && world.time < C.overeat_cooldown) to_chat(user, SPAN_WARNING("[user == M ? "You" : "They"] don't feel like eating more right now.")) - return + return FALSE if(issynth(C)) fullness = 200 //Synths never get full - if(fullness > 540) + if(HAS_TRAIT(M, TRAIT_CANNOT_EAT)) //Do not feed the Working Joes + to_chat(user, SPAN_DANGER("[user == M ? "You are" : "[M] is"] unable to eat!")) + return FALSE + + if(fullness > NUTRITION_HIGH) C.overeat_cooldown = world.time + OVEREAT_TIME if(M == user)//If you're eating it yourself - if (fullness <= 50) + if (fullness <= NUTRITION_VERYLOW) to_chat(M, SPAN_WARNING("You hungrily chew out a piece of [src] and gobble it!")) - if (fullness > 50 && fullness <= 150) + if (fullness > NUTRITION_VERYLOW && fullness <= NUTRITION_LOW) to_chat(M, SPAN_NOTICE(" You hungrily begin to eat [src].")) - if (fullness > 150 && fullness <= 350) + if (fullness > NUTRITION_LOW && fullness <= NUTRITION_NORMAL) to_chat(M, SPAN_NOTICE(" You take a bite of [src].")) - if (fullness > 350 && fullness <= 540) + if (fullness > NUTRITION_NORMAL && fullness <= NUTRITION_HIGH) to_chat(M, SPAN_NOTICE(" You unwillingly chew a bit of [src].")) - if (fullness > 540) + if (fullness > NUTRITION_HIGH) to_chat(M, SPAN_WARNING("You reluctantly force more of [src] to go down your throat.")) else - if (fullness <= 540) + if (fullness <= NUTRITION_HIGH) user.affected_message(M, SPAN_HELPFUL("You start feeding [user == M ? "yourself" : "[M]"] [src]."), SPAN_HELPFUL("[user] starts feeding you [src]."), @@ -116,9 +121,9 @@ reagents.trans_to_ingest(M, reagents.total_volume) bitecount++ On_Consume(M) - return 1 + return TRUE - return 0 + return FALSE /obj/item/reagent_container/food/snacks/afterattack(obj/target, mob/user, proximity) return ..() @@ -178,10 +183,9 @@ return 0 var/inaccurate = 0 - if(W.sharp == IS_SHARP_ITEM_ACCURATE) - else if(W.sharp == IS_SHARP_ITEM_BIG) + if(W.sharp == IS_SHARP_ITEM_BIG) inaccurate = 1 - else + else if(W.sharp != IS_SHARP_ITEM_ACCURATE) return 1 if ( !istype(loc, /obj/structure/surface/table) && \ (!isturf(src.loc) || \ @@ -202,7 +206,7 @@ SPAN_NOTICE("[user] crudely slices \the [src] with [W]!"), \ SPAN_NOTICE("You crudely slice \the [src] with your [W]!") \ ) - slices_lost = rand(1,min(1,round(slices_num/2))) + slices_lost = rand(1,max(1,round(slices_num/2))) var/reagents_per_slice = reagents.total_volume/slices_num for(var/i=1 to (slices_num-slices_lost)) var/obj/slice = new slice_path (src.loc) @@ -214,10 +218,10 @@ if(isanimal(M)) if(iscorgi(M)) if(bitecount == 0 || prob(50)) - M.emote("nibbles away at the [src]") + M.emote("nibbles away at [src]") bitecount++ if(bitecount >= 5) - var/sattisfaction_text = pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where the [src] was") + var/sattisfaction_text = pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where [src] was") if(sattisfaction_text) M.emote("[sattisfaction_text]") qdel(src) @@ -499,7 +503,7 @@ /obj/item/reagent_container/food/snacks/egg/attackby(obj/item/W as obj, mob/user as mob) if(istype( W, /obj/item/toy/crayon )) var/obj/item/toy/crayon/C = W - var/clr = C.colourName + var/clr = C.colorName if(!(clr in list("blue","green","mime","orange","purple","rainbow","red","yellow"))) to_chat(usr, SPAN_NOTICE(" The egg refuses to take on this color!")) @@ -565,7 +569,7 @@ name = "Boiled egg" desc = "A hard-boiled egg." icon_state = "egg" - filling_color = "#FFFFFF" + filling_color = COLOR_WHITE /obj/item/reagent_container/food/snacks/boiledegg/Initialize() . = ..() @@ -825,13 +829,6 @@ reagents.add_reagent("iron", 3) bitesize = 2 -/// Vanilla roburger - the nanites turn people into cyborgs -/obj/item/reagent_container/food/snacks/roburger/unsafe -/obj/item/reagent_container/food/snacks/roburger/unsafe/Initialize(mapload, ...) - . = ..() - if(prob(5)) - reagents.add_reagent("nanites", 2) - /obj/item/reagent_container/food/snacks/roburgerbig name = "roburger" desc = "This massive patty looks like poison. Beep." @@ -841,7 +838,6 @@ /obj/item/reagent_container/food/snacks/roburgerbig/Initialize() . = ..() - reagents.add_reagent("nanites", 100) bitesize = 0.1 /obj/item/reagent_container/food/snacks/xenoburger @@ -861,7 +857,7 @@ name = "Clown Burger" desc = "This tastes funny..." icon_state = "clownburger" - filling_color = "#FF00FF" + filling_color = COLOR_MAGENTA /obj/item/reagent_container/food/snacks/clownburger/Initialize() . = ..() @@ -877,7 +873,7 @@ name = "Mime Burger" desc = "Its taste defies language." icon_state = "mimeburger" - filling_color = "#FFFFFF" + filling_color = COLOR_WHITE /obj/item/reagent_container/food/snacks/mimeburger/Initialize() . = ..() @@ -1364,7 +1360,7 @@ name = "Tomato soup" desc = "Smells like copper" icon_state = "tomatosoup" - filling_color = "#FF0000" + filling_color = COLOR_RED /obj/item/reagent_container/food/snacks/bloodsoup/Initialize() . = ..() @@ -2124,7 +2120,7 @@ desc = "A tasty dessert that won't make it through a metal detector." icon_state = "gappletart" trash = /obj/item/trash/plate - filling_color = "#FFFF00" + filling_color = COLOR_YELLOW /obj/item/reagent_container/food/snacks/appletart/Initialize() . = ..() @@ -2798,7 +2794,7 @@ if( open && pizza ) user.put_in_hands( pizza ) - to_chat(user, SPAN_DANGER("You take the [src.pizza] out of the [src].")) + to_chat(user, SPAN_DANGER("You take the [src.pizza] out of [src].")) src.pizza = null update_icon() return @@ -2849,11 +2845,11 @@ box.update_icon() update_icon() - to_chat(user, SPAN_DANGER("You put the [box] ontop of the [src]!")) + to_chat(user, SPAN_DANGER("You put [box] ontop of [src]!")) else to_chat(user, SPAN_DANGER("The stack is too high!")) else - to_chat(user, SPAN_DANGER("Close the [box] first!")) + to_chat(user, SPAN_DANGER("Close [box] first!")) return @@ -2865,9 +2861,9 @@ update_icon() - to_chat(user, SPAN_DANGER("You put the [I] in the [src]!")) + to_chat(user, SPAN_DANGER("You put [I] in [src]!")) else - to_chat(user, SPAN_DANGER("You try to push the [I] through the lid but it doesn't work!")) + to_chat(user, SPAN_DANGER("You try to push [I] through the lid but it doesn't work!")) return if( istype(I, /obj/item/tool/pen/) ) @@ -3128,6 +3124,7 @@ icon_state = "packaged-burrito" bitesize = 2 package = 1 + flags_obj = OBJ_NO_HELMET_BAND|OBJ_IS_HELMET_GARB /obj/item/reagent_container/food/snacks/packaged_burrito/Initialize() . = ..() @@ -3171,6 +3168,7 @@ name = "Packaged Hotdog" desc = "A singular squishy, room temperature, hot dog. There's no time given for how long to cook it, so you assume its probably good to go. Packaged by the Weyland-Yutani Corporation." icon_state = "packaged-hotdog" + flags_obj = OBJ_NO_HELMET_BAND|OBJ_IS_HELMET_GARB bitesize = 2 package = 1 diff --git a/code/game/objects/items/reagent_containers/food/snacks/grown.dm b/code/game/objects/items/reagent_containers/food/snacks/grown.dm index d2fdda7d0975..4c988f18ac7c 100644 --- a/code/game/objects/items/reagent_containers/food/snacks/grown.dm +++ b/code/game/objects/items/reagent_containers/food/snacks/grown.dm @@ -30,7 +30,7 @@ /obj/item/reagent_container/food/snacks/grown/proc/update_from_seed()// Fill the object up with the appropriate reagents. if(!isnull(plantname)) - var/datum/seed/S = seed_types[plantname] + var/datum/seed/S = GLOB.seed_types[plantname] if(!S) return name = S.seed_name //Copies the name from the seed, important for renamed plants @@ -62,7 +62,7 @@ name = "cherries" desc = "Great for toppings!" icon_state = "cherry" - filling_color = "#FF0000" + filling_color = COLOR_RED gender = PLURAL plantname = "cherry" @@ -189,26 +189,16 @@ /obj/item/reagent_container/food/snacks/grown/glowberries name = "bunch of glow-berries" desc = "Nutritious!" - var/light_on = 1 var/brightness_on = 2 //luminosity when on filling_color = "#D3FF9E" icon_state = "glowberrypile" plantname = "glowberries" -/obj/item/reagent_container/food/snacks/grown/glowberries/Destroy() - if(istype(loc,/mob)) - loc.SetLuminosity(0, FALSE, src) +/obj/item/reagent_container/food/snacks/grown/glowberries/Initialize() . = ..() -/obj/item/reagent_container/food/snacks/grown/glowberries/pickup(mob/user) - . = ..() - src.SetLuminosity(0) - user.SetLuminosity(round((potency/5),1), FALSE, src) - -/obj/item/reagent_container/food/snacks/grown/glowberries/dropped(mob/user) - user.SetLuminosity(0, FALSE, src) - src.SetLuminosity(round(potency/5,1)) - ..() + set_light_range(brightness_on) + set_light_on(TRUE) /obj/item/reagent_container/food/snacks/grown/cocoapod name = "cocoa pod" @@ -367,7 +357,7 @@ name = "chili" desc = "It's spicy! Wait... IT'S BURNING ME!!" icon_state = "chilipepper" - filling_color = "#FF0000" + filling_color = COLOR_RED plantname = "chili" /obj/item/reagent_container/food/snacks/grown/eggplant @@ -389,7 +379,7 @@ name = "tomato" desc = "I say to-mah-to, you say tom-mae-to." icon_state = "tomato" - filling_color = "#FF0000" + filling_color = COLOR_RED potency = 10 plantname = "tomato" @@ -405,7 +395,7 @@ desc = "I say to-mah-to, you say tom-mae-to... OH GOD IT'S EATING MY LEGS!!" icon_state = "killertomato" potency = 10 - filling_color = "#FF0000" + filling_color = COLOR_RED potency = 30 plantname = "killertomato" @@ -424,7 +414,7 @@ desc = "So bloody...so...very...bloody....AHHHH!!!!" icon_state = "bloodtomato" potency = 10 - filling_color = "#FF0000" + filling_color = COLOR_RED plantname = "bloodtomato" /obj/item/reagent_container/food/snacks/grown/bloodtomato/launch_impact(atom/hit_atom) @@ -512,7 +502,7 @@ desc = "Amanita Muscaria: Learn poisonous mushrooms by heart. Only pick mushrooms you know." icon_state = "amanita" potency = 10 - filling_color = "#FF0000" + filling_color = COLOR_RED plantname = "amanita" /obj/item/reagent_container/food/snacks/grown/mushroom/angel @@ -568,22 +558,6 @@ to_chat(user, SPAN_NOTICE("You plant the glowshroom.")) -/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom/Destroy() - if(istype(loc,/mob)) - loc.SetLuminosity(0, FALSE, src) - . = ..() - -/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom/pickup(mob/user) - . = ..() - SetLuminosity(0) - user.SetLuminosity(round((potency/10),1), FALSE, src) - -/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom/dropped(mob/user) - user.SetLuminosity(0, FALSE, src) - SetLuminosity(round(potency/10,1)) - ..() - - // ************************************* // Complex Grown Object Defines - // Putting these at the bottom so they don't clutter the list up. -Cheridan diff --git a/code/game/objects/items/reagent_containers/food/snacks/meat.dm b/code/game/objects/items/reagent_containers/food/snacks/meat.dm index 0174af8520d2..f459d1b169ae 100644 --- a/code/game/objects/items/reagent_containers/food/snacks/meat.dm +++ b/code/game/objects/items/reagent_containers/food/snacks/meat.dm @@ -24,10 +24,20 @@ else ..() -/obj/item/reagent_container/food/snacks/meat/syntiflesh +/obj/item/reagent_container/food/snacks/meat/synthmeat name = "synthetic meat" desc = "A synthetic slab of flesh." +/obj/item/reagent_container/food/snacks/meat/synthmeat/synthflesh //meat made from synthetics. Slightly toxic + name = "synthetic flesh" + desc = "A slab of artificial, inorganic 'flesh' that resembles human meat. Probably came from a synth." + icon_state = "synthmeat" + filling_color = "#ffffff" + +/obj/item/reagent_container/food/snacks/meat/synthmeat/synthetic/Initialize() + . = ..() + reagents.add_reagent("pacid", 1.5) + /obj/item/reagent_container/food/snacks/meat/human name = "human meat" desc = "A slab of flesh for cannibals." diff --git a/code/game/objects/items/reagent_containers/glass.dm b/code/game/objects/items/reagent_containers/glass.dm index 240809b7851f..2a7bde748fba 100644 --- a/code/game/objects/items/reagent_containers/glass.dm +++ b/code/game/objects/items/reagent_containers/glass.dm @@ -237,7 +237,7 @@ overlays += lid /obj/item/reagent_container/glass/minitank - name = "MS-11 Smart Refill Tank" + name = "\improper MS-11 Smart Refill Tank" desc = "A robust little tank capable of refilling autoinjectors that previously required a nanomed system to refill. Using the wonders of microchips, it automatically sorts the correct chemicals into most single reagent autoinjectors. It is unable to partially fill them however. A valve exists on the top to transfer reagents to another container or to flush it entirely." icon = 'icons/obj/items/tank.dmi' icon_state = "mini_reagent_tank" @@ -277,7 +277,7 @@ if(istype(W, /obj/item/reagent_container/hypospray/autoinjector)) var/obj/item/reagent_container/hypospray/autoinjector/A = W if(A.mixed_chem) - to_chat(user, SPAN_WARNING("The autoinjector doesn't fit into the [src]'s valve. It's probably not compatible.")) + to_chat(user, SPAN_WARNING("The autoinjector doesn't fit into [src]'s valve. It's probably not compatible.")) return if(reagents.has_reagent(A.chemname, A.volume)) reagents.trans_id_to(A, A.chemname, A.volume) @@ -285,10 +285,10 @@ A.update_icon() playsound(src.loc, 'sound/effects/refill.ogg', 25, 1, 3) else - to_chat(user, SPAN_WARNING("A small LED on \the [src] blinks. The tank can't refill \the [A] - it's either incompatible or out of chemicals to fill it with!")) + to_chat(user, SPAN_WARNING("A small LED on [src] blinks. The tank can't refill [A] - it's either incompatible or out of chemicals to fill it with!")) . = ..() return - to_chat(user,SPAN_INFO("You successfully refill \the [W.name] with \the [src]!")) + to_chat(user, SPAN_INFO("You successfully refill [A] with [src]!")) /obj/item/reagent_container/glass/minitank/verb/flush_tank(mob/user) set category = "Object" @@ -299,7 +299,7 @@ to_chat(user, SPAN_WARNING("It's already empty!")) return playsound(src.loc, 'sound/effects/slosh.ogg', 25, 1, 3) - to_chat(user, SPAN_WARNING("You work the flush valve and successfully flush \the [src]'s contents!")) + to_chat(user, SPAN_WARNING("You work the flush valve and successfully flush [src]'s contents!")) reagents.clear_reagents() update_icon() // just to be sure return @@ -363,11 +363,8 @@ matter = list() possible_transfer_amounts = list(5,10,15,25,30) flags_atom = FPRINT|OPENCONTAINER - -/obj/item/reagent_container/glass/beaker/vial/Initialize() - . = ..() - pixel_y = rand(-8, 8) - pixel_x = rand(-9, 9) + ground_offset_x = 9 + ground_offset_y = 8 /obj/item/reagent_container/glass/beaker/vial/tricordrazine name = "tricordrazine vial" @@ -392,17 +389,17 @@ . = ..() var/random_chem if(tier) - random_chem = pick(chemical_gen_classes_list[tier]) + random_chem = pick(GLOB.chemical_gen_classes_list[tier]) else - random_chem = pick( prob(3);pick(chemical_gen_classes_list["C1"]),\ - prob(5);pick(chemical_gen_classes_list["C2"]),\ - prob(7);pick(chemical_gen_classes_list["C3"]),\ - prob(10);pick(chemical_gen_classes_list["C4"]),\ - prob(15);pick(chemical_gen_classes_list["C5"]),\ - prob(25);pick(chemical_gen_classes_list["T1"]),\ - prob(15);pick(chemical_gen_classes_list["T2"]),\ - prob(10);pick(chemical_gen_classes_list["T3"]),\ - prob(5);pick(chemical_gen_classes_list["T4"]),\ + random_chem = pick( prob(3);pick(GLOB.chemical_gen_classes_list["C1"]),\ + prob(5);pick(GLOB.chemical_gen_classes_list["C2"]),\ + prob(7);pick(GLOB.chemical_gen_classes_list["C3"]),\ + prob(10);pick(GLOB.chemical_gen_classes_list["C4"]),\ + prob(15);pick(GLOB.chemical_gen_classes_list["C5"]),\ + prob(25);pick(GLOB.chemical_gen_classes_list["T1"]),\ + prob(15);pick(GLOB.chemical_gen_classes_list["T2"]),\ + prob(10);pick(GLOB.chemical_gen_classes_list["T3"]),\ + prob(5);pick(GLOB.chemical_gen_classes_list["T4"]),\ prob(15);"") if(random_chem) reagents.add_reagent(random_chem, 30) @@ -675,5 +672,5 @@ if(istype(AM) && (src in user)) user.visible_message("[user] starts to wipe down [AM] with [src]!") if(do_after(user,30, INTERRUPT_ALL, BUSY_ICON_GENERIC)) - user.visible_message("[user] finishes wiping off the [AM]!") + user.visible_message("[user] finishes wiping off [AM]!") AM.clean_blood() diff --git a/code/game/objects/items/reagent_containers/glass/bottle.dm b/code/game/objects/items/reagent_containers/glass/bottle.dm index dd857d391b52..01eb751774e1 100644 --- a/code/game/objects/items/reagent_containers/glass/bottle.dm +++ b/code/game/objects/items/reagent_containers/glass/bottle.dm @@ -30,7 +30,7 @@ /obj/item/reagent_container/glass/bottle/Initialize() . = ..() if(!icon_state) - icon_state = "bottle-[rand(1.4)]" + icon_state = "bottle-[rand(1,4)]" /obj/item/reagent_container/glass/bottle/update_icon() overlays.Cut() diff --git a/code/game/objects/items/reagent_containers/hypospray.dm b/code/game/objects/items/reagent_containers/hypospray.dm index 5014c85547aa..5e268d35a33d 100644 --- a/code/game/objects/items/reagent_containers/hypospray.dm +++ b/code/game/objects/items/reagent_containers/hypospray.dm @@ -10,7 +10,7 @@ icon_state = "hypo" amount_per_transfer_from_this = 5 volume = 30 - possible_transfer_amounts = list(5,10,15,30) + possible_transfer_amounts = list(3, 5, 10, 15, 30) flags_atom = FPRINT|OPENCONTAINER flags_equip_slot = SLOT_WAIST flags_item = NOBLUDGEON @@ -206,6 +206,7 @@ to_chat(user, SPAN_NOTICE(" You inject [M] with [src].")) to_chat(M, SPAN_WARNING("You feel a tiny prick!")) playsound(loc, injectSFX, injectVOL, 1) + SEND_SIGNAL(M, COMSIG_LIVING_HYPOSPRAY_INJECTED, src) reagents.reaction(M, INGEST) if(M.reagents) diff --git a/code/game/objects/items/reagent_containers/pill.dm b/code/game/objects/items/reagent_containers/pill.dm index de86ad07f53a..6c71d8be3c0c 100644 --- a/code/game/objects/items/reagent_containers/pill.dm +++ b/code/game/objects/items/reagent_containers/pill.dm @@ -23,6 +23,8 @@ w_class = SIZE_TINY volume = 60 reagent_desc_override = TRUE //it has a special examining mechanic + ground_offset_x = 7 + ground_offset_y = 7 var/identificable = TRUE //can medically trained people tell what's in it? var/pill_desc = "An unknown pill." // The real description of the pill, shown when examined by a medically trained person var/pill_icon_class = "random" // Pills with the same icon class share icons diff --git a/code/game/objects/items/reagent_containers/reagent_container.dm b/code/game/objects/items/reagent_containers/reagent_container.dm index eddbf5197a9e..327f6ba1ce1c 100644 --- a/code/game/objects/items/reagent_containers/reagent_container.dm +++ b/code/game/objects/items/reagent_containers/reagent_container.dm @@ -14,6 +14,8 @@ var/transparent = FALSE //can we see what's in it? var/reagent_desc_override = FALSE //does it have a special examining mechanic that should override the normal /reagent_containers examine proc? actions_types = list(/datum/action/item_action/reagent_container/set_transfer_amount) + ground_offset_x = 7 + ground_offset_y = 7 /obj/item/reagent_container/Initialize() if(!possible_transfer_amounts) @@ -65,12 +67,6 @@ if (N) R.amount_per_transfer_from_this = N -/obj/item/reagent_container/Initialize() - . = ..() - if (!possible_transfer_amounts) - verbs -= /obj/item/reagent_container/verb/set_APTFT //which objects actually uses it? - create_reagents(volume) - /obj/item/reagent_container/Destroy() possible_transfer_amounts = null return ..() diff --git a/code/game/objects/items/reagent_containers/robodropper.dm b/code/game/objects/items/reagent_containers/robodropper.dm index 7447681f0566..694194fbef70 100644 --- a/code/game/objects/items/reagent_containers/robodropper.dm +++ b/code/game/objects/items/reagent_containers/robodropper.dm @@ -45,7 +45,7 @@ safe_thing.create_reagents(100) trans = src.reagents.trans_to(safe_thing, amount_per_transfer_from_this) - for(var/mob/O in viewers(world_view_size, user)) + for(var/mob/O in viewers(GLOB.world_view_size, user)) O.show_message(SPAN_DANGER("[user] tries to squirt something into [target]'s eyes, but fails!"), SHOW_MESSAGE_VISIBLE) spawn(5) src.reagents.reaction(safe_thing, TOUCH) @@ -58,7 +58,7 @@ return - for(var/mob/O in viewers(world_view_size, user)) + for(var/mob/O in viewers(GLOB.world_view_size, user)) O.show_message(SPAN_DANGER("[user] squirts something into [target]'s eyes!"), SHOW_MESSAGE_VISIBLE) src.reagents.reaction(target, TOUCH) diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/reagent_containers/robot_parts.dm similarity index 76% rename from code/game/objects/items/robot/robot_parts.dm rename to code/game/objects/items/reagent_containers/robot_parts.dm index b853b24d1013..3a188bda6a50 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/reagent_containers/robot_parts.dm @@ -164,72 +164,6 @@ else to_chat(user, SPAN_NOTICE(" You need to attach a flash to it first!")) - if(istype(W, /obj/item/device/mmi)) - var/obj/item/device/mmi/M = W - if(check_completion()) - if(!istype(loc,/turf)) - to_chat(user, SPAN_DANGER("You can't put \the [W] in, the frame has to be standing on the ground to be perfectly precise.")) - return - if(!M.brainmob) - to_chat(user, SPAN_DANGER("Sticking an empty [W] into the frame would sort of defeat the purpose.")) - return - if(!M.brainmob.key) - var/ghost_can_reenter = 0 - if(M.brainmob.mind) - for(var/mob/dead/observer/G in GLOB.observer_list) - if(G.can_reenter_corpse && G.mind == M.brainmob.mind) - ghost_can_reenter = 1 - break - if(!ghost_can_reenter) - to_chat(user, SPAN_NOTICE("\The [W] is completely unresponsive; there's no point.")) - return - - if(M.brainmob.stat == DEAD) - to_chat(user, SPAN_DANGER("Sticking a dead [W] into the frame would sort of defeat the purpose.")) - return - - if(jobban_isbanned(M.brainmob, "Cyborg")) - to_chat(user, SPAN_DANGER("This [W] does not seem to fit.")) - return - - var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc), unfinished = 1) - if(!O) return - - user.drop_held_item() - - O.mmi = W - O.invisibility = 0 - O.custom_name = created_name - O.updatename("Default") - - M.brainmob.mind.transfer_to(O) - - O.job = "Cyborg" - - O.cell = chest.cell - O.cell.forceMove(O) - W.forceMove(O)//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame. - - // Since we "magically" installed a cell, we also have to update the correct component. - if(O.cell) - var/datum/robot_component/cell_component = O.components["power cell"] - cell_component.wrapped = O.cell - cell_component.installed = 1 - O.Namepick() - - qdel(src) - else - to_chat(user, SPAN_NOTICE(" The MMI must go in after everything else!")) - - if (HAS_TRAIT(W, TRAIT_TOOL_PEN)) - var/t = stripped_input(user, "Enter new robot name", src.name, src.created_name, MAX_NAME_LEN) - if (!t) - return - if (!in_range(src, usr) && src.loc != usr) - return - - src.created_name = t - return /obj/item/robot_parts/chest/attackby(obj/item/W as obj, mob/user as mob) diff --git a/code/game/objects/items/reagent_containers/syringes.dm b/code/game/objects/items/reagent_containers/syringes.dm index 06cbb559360c..2bb121740cef 100644 --- a/code/game/objects/items/reagent_containers/syringes.dm +++ b/code/game/objects/items/reagent_containers/syringes.dm @@ -258,20 +258,20 @@ return if (target != user && target.getarmor(target_zone, ARMOR_MELEE) > 5 && prob(50)) - for(var/mob/O in viewers(world_view_size, user)) + for(var/mob/O in viewers(GLOB.world_view_size, user)) O.show_message(text(SPAN_DANGER("[user] tries to stab [target] in \the [hit_area] with [src.name], but the attack is deflected by armor!")), SHOW_MESSAGE_VISIBLE) user.temp_drop_inv_item(src) qdel(src) return - for(var/mob/O in viewers(world_view_size, user)) + for(var/mob/O in viewers(GLOB.world_view_size, user)) O.show_message(text(SPAN_DANGER("[user] stabs [target] in \the [hit_area] with [src.name]!")), SHOW_MESSAGE_VISIBLE) if(affecting.take_damage(3)) target:UpdateDamageIcon() else - for(var/mob/O in viewers(world_view_size, user)) + for(var/mob/O in viewers(GLOB.world_view_size, user)) O.show_message(text(SPAN_DANGER("[user] stabs [target] with [src.name]!")), SHOW_MESSAGE_VISIBLE) target.take_limb_damage(3)// 7 is the same as crowbar punch diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm deleted file mode 100644 index 476390fda6e8..000000000000 --- a/code/game/objects/items/robot/robot_items.dm +++ /dev/null @@ -1,83 +0,0 @@ -//********************************************************************** -// Cyborg Spec Items -//***********************************************************************/ -//Might want to move this into several files later but for now it works here -/obj/item/robot/stun - name = "electrified arm" - icon = 'icons/obj/structures/props/decals.dmi' - icon_state = "shock" - -/obj/item/robot/stun/attack(mob/M as mob, mob/living/silicon/robot/user as mob) - M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") - msg_admin_attack("[user.name] ([user.ckey]) used the [src.name] to attack [M.name] ([M.ckey]) in [get_area(user)] ([user.loc.x],[user.loc.y],[user.loc.z]).", user.loc.x, user.loc.y, user.loc.z) - - user.cell.charge -= 30 - - playsound(M.loc, 'sound/weapons/Egloves.ogg', 25, 1, 4) - M.apply_effect(5, WEAKEN) - if (M.stuttering < 5) - M.stuttering = 5 - M.apply_effect(5, STUN) - - for(var/mob/O in viewers(M, null)) - if (O.client) - O.show_message(SPAN_DANGER("[user] has prodded [M] with an electrically-charged arm!"), SHOW_MESSAGE_VISIBLE, SPAN_DANGER("You hear someone fall"), SHOW_MESSAGE_AUDIBLE) - -/obj/item/robot/overdrive - name = "overdrive" - icon = 'icons/obj/structures/props/decals.dmi' - icon_state = "shock" - -//********************************************************************** -// HUD/SIGHT things -//***********************************************************************/ -/obj/item/robot/sight - icon = 'icons/obj/structures/props/decals.dmi' - icon_state = "securearea" - var/sight_mode = null - - -/obj/item/robot/sight/xray - name = "\proper x-ray Vision" - sight_mode = BORGXRAY - - -/obj/item/robot/sight/thermal - name = "\proper thermal vision" - sight_mode = BORGTHERM - icon_state = "thermal" - icon = 'icons/obj/items/clothing/glasses.dmi' - - -/obj/item/robot/sight/meson - name = "\proper meson vision" - sight_mode = BORGMESON - icon_state = "meson" - icon = 'icons/obj/items/clothing/glasses.dmi' - -/obj/item/robot/sight/hud - name = "hud" - var/obj/item/clothing/glasses/hud/hud = null - - -/obj/item/robot/sight/hud/med - name = "medical hud" - icon_state = "healthhud" - icon = 'icons/obj/items/clothing/glasses.dmi' - -/obj/item/robot/sight/hud/sec/New() - ..() - hud = new /obj/item/clothing/glasses/hud/health(src) - return - - -/obj/item/robot/sight/hud/sec - name = "security hud" - icon_state = "securityhud" - icon = 'icons/obj/items/clothing/glasses.dmi' - -/obj/item/robot/sight/hud/sec/New() - ..() - hud = new /obj/item/clothing/glasses/hud/security(src) - return diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm deleted file mode 100644 index c5fa39fd100c..000000000000 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ /dev/null @@ -1,149 +0,0 @@ -// robot_upgrades.dm -// Contains various borg upgrades. - -/obj/item/robot/upgrade - name = "borg upgrade module." - desc = "Protected by FRM." - icon = 'icons/obj/items/circuitboards.dmi' - icon_state = "cyborg_upgrade" - var/locked = 0 - var/require_module = 0 - var/installed = 0 - -/obj/item/robot/upgrade/proc/action(mob/living/silicon/robot/R) - if(R.stat == DEAD) - to_chat(usr, SPAN_DANGER("The [src] will not function on a deceased robot.")) - return 1 - return 0 - - -/obj/item/robot/upgrade/reset - name = "robotic module reset board" - desc = "Used to reset a cyborg's module. Destroys any other upgrades applied to the robot." - icon_state = "cyborg_upgrade1" - require_module = 1 - -/obj/item/robot/upgrade/reset/action(mob/living/silicon/robot/R) - if(..()) return 0 - R.uneq_all() - R.hands.icon_state = "nomod" - R.icon_state = "robot" - QDEL_NULL(R.module) - R.camera.network.Remove(list("Engineering","Medical","MINE")) - R.updatename("Default") - R.status_flags |= CANPUSH - R.update_icons() - - return 1 - -/obj/item/robot/upgrade/rename - name = "robot reclassification board" - desc = "Used to rename a cyborg." - icon_state = "cyborg_upgrade1" - var/heldname = "default name" - -/obj/item/robot/upgrade/rename/attack_self(mob/user) - ..() - heldname = stripped_input(user, "Enter new robot name", "Robot Reclassification", heldname, MAX_NAME_LEN) - -/obj/item/robot/upgrade/rename/action(mob/living/silicon/robot/R) - if(..()) return 0 - R.custom_name = heldname - R.change_real_name(R, heldname) - - return 1 - -/obj/item/robot/upgrade/restart - name = "robot emergency restart module" - desc = "Used to force a restart of a disabled-but-repaired robot, bringing it back online." - icon_state = "cyborg_upgrade1" - - -/obj/item/robot/upgrade/restart/action(mob/living/silicon/robot/R) - if(R.health < 0) - to_chat(usr, "You have to repair the robot before using this module!") - return 0 - - if(!R.key) - for(var/mob/dead/observer/ghost in GLOB.observer_list) - if(ghost.mind && ghost.mind.original == R) - R.key = ghost.key - if(R.client) R.client.change_view(world_view_size) - break - - R.set_stat(CONSCIOUS) - return 1 - - -/obj/item/robot/upgrade/vtec - name = "robotic VTEC Module" - desc = "Used to kick in a robot's VTEC systems, increasing their speed." - icon_state = "cyborg_upgrade2" - require_module = 1 - -/obj/item/robot/upgrade/vtec/action(mob/living/silicon/robot/R) - if(..()) return 0 - - if(R.speed == -1) - return 0 - - R.speed-- - return 1 - - -/obj/item/robot/upgrade/tasercooler - name = "robotic Rapid Taser Cooling Module" - desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate." - icon_state = "cyborg_upgrade3" - require_module = 1 - - -/obj/item/robot/upgrade/tasercooler/action(mob/living/silicon/robot/R) - if(..()) return 0 -/* - - if(!istype(R.module, /obj/item/circuitboard/robot_module/security)) - to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!") - to_chat(usr, "There's no mounting point for the module!") - return 0 - - var/obj/item/weapon/gun/energy/taser/cyborg/T = locate() in R.module - if(!T) - T = locate() in R.module.contents - if(!T) - T = locate() in R.module.modules - if(!T) - to_chat(usr, "This robot has had its taser removed!") - return 0 - - if(T.recharge_time <= 2) - to_chat(R, "Maximum cooling achieved for this hardpoint!") - to_chat(usr, "There's no room for another cooling unit!") - return 0 - - else - T.recharge_time = max(2 , T.recharge_time - 4) -*/ - return 1 - -/obj/item/robot/upgrade/jetpack - name = "mining robot jetpack" - desc = "A carbon dioxide jetpack suitable for low-gravity mining operations." - icon_state = "cyborg_upgrade3" - require_module = 1 - -/obj/item/robot/upgrade/jetpack/action(mob/living/silicon/robot/R) - if(..()) return 0 - - R.module.modules += new/obj/item/tank/jetpack/carbondioxide - for(var/obj/item/tank/jetpack/carbondioxide in R.module.modules) - R.internal = src - //R.icon_state="Miner+j" - return 1 - - -/obj/item/robot/upgrade/syndicate - name = "illegal equipment module" - desc = "Unlocks the hidden, deadlier functions of a robot" - icon_state = "cyborg_upgrade3" - require_module = 1 diff --git a/code/game/objects/items/shards.dm b/code/game/objects/items/shards.dm index f46f5b5a5fc0..dab573e6f5a5 100644 --- a/code/game/objects/items/shards.dm +++ b/code/game/objects/items/shards.dm @@ -75,13 +75,13 @@ // Shrapnel. -// on_embed is called from projectile.dm, bullet_act(obj/item/projectile/P). +// on_embed is called from projectile.dm, bullet_act(obj/projectile/P). // on_embedded_movement is called from human.dm, handle_embedded_objects(). /obj/item/large_shrapnel/proc/on_embedded_movement(mob/living/embedded_mob) return -/obj/item/large_shrapnel/proc/on_embed(mob/embedded_mob, obj/limb/target_organ) +/obj/item/large_shrapnel/proc/on_embed(mob/embedded_mob, obj/limb/target_organ, silent = FALSE) return /obj/item/large_shrapnel/at_rocket_dud @@ -180,14 +180,14 @@ cell_explosion(get_turf(target), 200, 150, EXPLOSION_FALLOFF_SHAPE_LINEAR, direction, create_cause_data("[cause] UXO detonation", user)) qdel(src) -/obj/item/large_shrapnel/at_rocket_dud/on_embed(mob/embedded_mob, obj/limb/target_organ) +/obj/item/large_shrapnel/at_rocket_dud/on_embed(mob/embedded_mob, obj/limb/target_organ, silent = FALSE) if(!ishuman(embedded_mob)) return var/mob/living/carbon/human/H = embedded_mob if(H.species.flags & NO_SHRAPNEL) return if(istype(target_organ)) - target_organ.embed(src) + target_organ.embed(src, silent) /obj/item/large_shrapnel/at_rocket_dud/on_embedded_movement(mob/living/embedded_mob) if(!ishuman(embedded_mob)) @@ -212,14 +212,14 @@ source_sheet_type = null var/damage_on_move = 0.5 -/obj/item/shard/shrapnel/proc/on_embed(mob/embedded_mob, obj/limb/target_organ) +/obj/item/shard/shrapnel/proc/on_embed(mob/embedded_mob, obj/limb/target_organ, silent = FALSE) if(!ishuman(embedded_mob)) return var/mob/living/carbon/human/H = embedded_mob if(H.species.flags & NO_SHRAPNEL) return if(istype(target_organ)) - target_organ.embed(src) + target_organ.embed(src, silent) /obj/item/shard/shrapnel/proc/on_embedded_movement(mob/living/embedded_mob) if(!ishuman(embedded_mob)) @@ -228,17 +228,17 @@ if(H.species.flags & NO_SHRAPNEL) return var/obj/limb/organ = embedded_organ - if(istype(organ)) + if(istype(organ) && damage_on_move) organ.take_damage(damage_on_move * count, 0, 0, no_limb_loss = TRUE) embedded_mob.pain.apply_pain(damage_on_move * count) -/obj/item/shard/shrapnel/nagant +/obj/item/shard/shrapnel/upp name = "small shrapnel" desc = "Some shrapnel that used to be embedded underneath someone's skin." icon_state = "small" damage_on_move = 2 -/obj/item/shard/shrapnel/nagant/bits +/obj/item/shard/shrapnel/upp/bits name = "tiny shrapnel" desc = "A tiny piece of shrapnel that used to be embedded underneath someone's skin." icon_state = "tiny" @@ -261,3 +261,7 @@ name = "alien bone fragments" icon_state = "alienbonechips" desc = "Sharp, jagged fragments of alien bone. Looks like the previous owner exploded violently..." + +/obj/item/shard/shrapnel/tutorial + damage_on_move = 0 + diff --git a/code/game/objects/items/stacks/cable_coil.dm b/code/game/objects/items/stacks/cable_coil.dm index 9135c793cd00..077cb801c90d 100644 --- a/code/game/objects/items/stacks/cable_coil.dm +++ b/code/game/objects/items/stacks/cable_coil.dm @@ -20,20 +20,20 @@ attack_verb = list("whipped", "lashed", "disciplined", "flogged") stack_id = "cable coil" attack_speed = 3 + ground_offset_x = 2 + ground_offset_y = 2 /obj/item/stack/cable_coil/Initialize(mapload, length = MAXCOIL, param_color = null) . = ..() src.amount = length if (param_color) // It should be red by default, so only recolor it if parameter was specified. color = param_color - pixel_x = rand(-2,2) - pixel_y = rand(-2,2) updateicon() update_wclass() /obj/item/stack/cable_coil/proc/updateicon() if (!color) - color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_ORANGE, COLOR_WHITE, COLOR_PINK, COLOR_YELLOW, COLOR_CYAN) + color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_ORANGE, COLOR_WHITE, COLOR_MAGENTA, COLOR_YELLOW, COLOR_CYAN) if(amount == 1) icon_state = "coil1" name = "cable piece" @@ -276,8 +276,6 @@ /obj/item/stack/cable_coil/cut/Initialize() . = ..() src.amount = rand(1,2) - pixel_x = rand(-2,2) - pixel_y = rand(-2,2) updateicon() update_wclass() @@ -300,11 +298,11 @@ color = "#a8c1dd" /obj/item/stack/cable_coil/white - color = "#FFFFFF" + color = COLOR_WHITE /obj/item/stack/cable_coil/random/Initialize() . = ..() - color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_WHITE, COLOR_PINK, COLOR_YELLOW, COLOR_CYAN) + color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_WHITE, COLOR_MAGENTA, COLOR_YELLOW, COLOR_CYAN) /obj/item/stack/cable_coil/attack(mob/M as mob, mob/user as mob) if(ishuman(M)) diff --git a/code/game/objects/items/stacks/flags.dm b/code/game/objects/items/stacks/flags.dm index bc55096211d4..484d2779f5f8 100644 --- a/code/game/objects/items/stacks/flags.dm +++ b/code/game/objects/items/stacks/flags.dm @@ -71,7 +71,7 @@ var/obj/item/stack/flag/newflag = new src.type(T) newflag.amount = 1 newflag.upright = TRUE - anchored = TRUE + newflag.anchored = TRUE newflag.name = newflag.singular_name newflag.icon_state = "[newflag.base_state]_open" newflag.visible_message("[user] plants [newflag] firmly in the ground.") diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index f96903cfb687..c4a496a12366 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -21,7 +21,7 @@ to_chat(user, SPAN_DANGER("\The [src] cannot be applied to [M]!")) return 1 - if(!ishuman(user) && !isrobot(user)) + if(!ishuman(user)) to_chat(user, SPAN_WARNING("You don't have the dexterity to do this!")) return 1 @@ -95,6 +95,9 @@ to_chat(user, SPAN_WARNING("There are no wounds on [possessive] [affecting.display_name].")) return TRUE +/obj/item/stack/medical/bruise_pack/two + amount = 2 + /obj/item/stack/medical/ointment name = "ointment" desc = "Used to treat burns, infected wounds, and relieve itching in unusual places." diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm index 32e9a030462e..156fbf548f5f 100644 --- a/code/game/objects/items/stacks/nanopaste.dm +++ b/code/game/objects/items/stacks/nanopaste.dm @@ -15,17 +15,6 @@ /obj/item/stack/nanopaste/attack(mob/living/M as mob, mob/user as mob) if (!istype(M) || !istype(user)) return 0 - if (isrobot(M)) //Repairing cyborgs - var/mob/living/silicon/robot/R = M - if (R.getBruteLoss() || R.getFireLoss() ) - R.apply_damage(-15, BRUTE) - R.apply_damage(-15, BURN) - R.updatehealth() - use(1) - user.visible_message(SPAN_NOTICE("\The [user] applied some [src] at [R]'s damaged areas."),\ - SPAN_NOTICE("You apply some [src] at [R]'s damaged areas.")) - else - to_chat(user, SPAN_NOTICE("All [R]'s systems are nominal.")) if (istype(M,/mob/living/carbon/human)) //Repairing robolimbs var/mob/living/carbon/human/H = M @@ -40,7 +29,7 @@ H.pain.recalculate_pain() H.updatehealth() use(1) - var/others_msg = "\The [user] applies some nanite paste at[user != M ? " \the [M]'s" : " \the"] [S.display_name] with \the [src]." // Needs to create vars for these messages because macro doesn't work otherwise + var/others_msg = "\The [user] applies some nanite paste at[user != M ? " \the [M]'s" : " the"] [S.display_name] with \the [src]." // Needs to create vars for these messages because macro doesn't work otherwise var/user_msg = "You apply some nanite paste at [user == M ? "your" : "[M]'s"] [S.display_name]." user.visible_message(SPAN_NOTICE("[others_msg]"),\ SPAN_NOTICE("[user_msg]")) diff --git a/code/game/objects/items/stacks/predator.dm b/code/game/objects/items/stacks/predator.dm index e500932b08f6..42874b907e02 100644 --- a/code/game/objects/items/stacks/predator.dm +++ b/code/game/objects/items/stacks/predator.dm @@ -51,6 +51,8 @@ SPAN_NOTICE("You start hanging [victim] up by the rope...")) if(!do_after(user, 3 SECONDS, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE, victim)) return + if(victim.anchored) + return // Just in case weed_food took them during this time user.visible_message(SPAN_WARNING("[user] hangs [victim] from the ceiling!"), SPAN_NOTICE("You finish hanging [victim].")) user.stop_pulling() victim.get_hung() @@ -106,4 +108,5 @@ apply_transform(A) pixel_x = 0 pixel_y = 0 + Moved(loc, NONE, TRUE) // Trigger any movement signals return COMPONENT_CANCEL_ATTACK diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 972898e6449b..7c12da0707c7 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -106,7 +106,7 @@ if(AC) to_chat(usr, SPAN_WARNING("\The [src] cannot be built here!")) return TRUE - var/list/directions = new/list(cardinal) + var/list/directions = GLOB.cardinals.Copy() var/i = 0 for (var/obj/structure/window/win in user.loc) i++ @@ -114,7 +114,7 @@ to_chat(user, SPAN_DANGER("There are too many windows in this location.")) return TRUE directions-=win.dir - if(!(win.dir in cardinal)) + if(!(win.dir in GLOB.cardinals)) to_chat(user, SPAN_DANGER("Can't let you do that.")) return TRUE @@ -189,6 +189,13 @@ is_reinforced = 1 construction_options = list("One Direction", "Full Window", "Windoor") +/obj/item/stack/sheet/glass/reinforced/medium_stack + amount = 25 + +/obj/item/stack/sheet/glass/reinforced/large_stack + amount = 50 + + /obj/item/stack/sheet/glass/reinforced/cyborg matter = null diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 4887ba25d3b0..4f7ec74633b9 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -60,7 +60,6 @@ GLOBAL_LIST_INIT(plastic_recipes, list ( \ new/datum/stack_recipe("plastic fork", /obj/item/tool/kitchen/utensil/pfork, 1, on_floor = 1), \ new/datum/stack_recipe("plastic spoon", /obj/item/tool/kitchen/utensil/pspoon, 1, on_floor = 1), \ new/datum/stack_recipe("plastic knife", /obj/item/tool/kitchen/utensil/pknife, 1, on_floor = 1), \ - new/datum/stack_recipe("plastic bag", /obj/item/storage/bag/plasticbag, 3, on_floor = 1), \ )) GLOBAL_LIST_INIT(iron_recipes, list ( \ diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 34719747bd02..cb5071326e13 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -10,7 +10,7 @@ /* * Metal */ -var/global/list/datum/stack_recipe/metal_recipes = list ( \ +GLOBAL_LIST_INIT_TYPED(metal_recipes, /datum/stack_recipe, list ( \ new/datum/stack_recipe("barbed wire", /obj/item/stack/barbed_wire, 1, 1, 20, time = 1 SECONDS, skill_req = SKILL_CONSTRUCTION, skill_lvl = SKILL_CONSTRUCTION_TRAINED), \ new/datum/stack_recipe("metal barricade", /obj/structure/barricade/metal, 4, time = 2 SECONDS, one_per_turf = ONE_TYPE_PER_BORDER, on_floor = 1, skill_req = SKILL_CONSTRUCTION, skill_lvl = SKILL_CONSTRUCTION_TRAINED, min_time = 1 SECONDS), \ new/datum/stack_recipe("folding metal barricade", /obj/structure/barricade/plasteel/metal, 6, time = 3 SECONDS, one_per_turf = ONE_TYPE_PER_BORDER, on_floor = 1, skill_req = SKILL_CONSTRUCTION, skill_lvl = SKILL_CONSTRUCTION_ENGI, min_time = 1.5 SECONDS), \ @@ -27,6 +27,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ new/datum/stack_recipe("wall girder", /obj/structure/girder, 2, time = 50, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1, skill_req = SKILL_CONSTRUCTION, skill_lvl = SKILL_CONSTRUCTION_ENGI), \ new/datum/stack_recipe("window frame", /obj/structure/window_frame/almayer, 5, time = 50, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1, skill_req = SKILL_CONSTRUCTION, skill_lvl = SKILL_CONSTRUCTION_ENGI), \ new/datum/stack_recipe("airlock assembly", /obj/structure/airlock_assembly, 5, time = 50, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1, skill_req = SKILL_CONSTRUCTION, skill_lvl = SKILL_CONSTRUCTION_ENGI), \ + new/datum/stack_recipe("large airlock assembly", /obj/structure/airlock_assembly/multi_tile, 5, time = 50, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1, skill_req = SKILL_CONSTRUCTION, skill_lvl = SKILL_CONSTRUCTION_ENGI), \ null, \ new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1), \ new/datum/stack_recipe("chair", /obj/structure/bed/chair, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1), \ @@ -54,7 +55,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ null, \ new/datum/stack_recipe("metal baseball bat", /obj/item/weapon/baseballbat/metal, 10, time = 20, on_floor = 1), \ null, \ -) +)) /obj/item/stack/sheet/metal name = "metal sheets" @@ -69,6 +70,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ sheettype = "metal" stack_id = "metal" + /obj/item/stack/sheet/metal/small_stack amount = STACK_10 @@ -87,20 +89,20 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ /obj/item/stack/sheet/metal/cyborg /obj/item/stack/sheet/metal/Initialize(mapload, amount) - recipes = metal_recipes + recipes = GLOB.metal_recipes return ..() /* * Plasteel */ -var/global/list/datum/stack_recipe/plasteel_recipes = list ( \ +GLOBAL_LIST_INIT_TYPED(plasteel_recipes, /datum/stack_recipe, list ( \ new/datum/stack_recipe("plasteel barricade", /obj/structure/barricade/plasteel, 8, time = 4 SECONDS, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1, skill_req = SKILL_CONSTRUCTION, skill_lvl = SKILL_CONSTRUCTION_ENGI, min_time = 2 SECONDS), null, \ new/datum/stack_recipe("reinforced window frame", /obj/structure/window_frame/colony/reinforced, 5, time = 40, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1, skill_req = SKILL_CONSTRUCTION, skill_lvl = SKILL_CONSTRUCTION_ENGI), null, \ new/datum/stack_recipe("plasteel rod", /obj/item/stack/rods/plasteel, 1, 1, 30), new/datum/stack_recipe("metal crate", /obj/structure/closet/crate, 5, time = 50, one_per_turf = ONE_TYPE_PER_TURF), \ - ) + )) /obj/item/stack/sheet/plasteel name = "plasteel sheet" @@ -114,9 +116,11 @@ var/global/list/datum/stack_recipe/plasteel_recipes = list ( \ amount_sprites = TRUE sheettype = "plasteel" stack_id = "plasteel" + ground_offset_x = 4 + ground_offset_y = 5 /obj/item/stack/sheet/plasteel/New(loc, amount=null) - recipes = plasteel_recipes + recipes = GLOB.plasteel_recipes return ..() @@ -138,12 +142,13 @@ var/global/list/datum/stack_recipe/plasteel_recipes = list ( \ /* * Wood */ -var/global/list/datum/stack_recipe/wood_recipes = list ( \ +GLOBAL_LIST_INIT_TYPED(wood_recipes, /datum/stack_recipe, list ( \ new/datum/stack_recipe("pair of wooden sandals", /obj/item/clothing/shoes/sandal, 1), \ new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20), \ /* new/datum/stack_recipe("table parts", /obj/item/frame/table/wood, 2), \ */ + new/datum/stack_recipe("campfire", /obj/structure/prop/brazier/frame/full/campfire, 5, time = 15, one_per_turf = ONE_TYPE_PER_TURF, on_floor = TRUE), \ new/datum/stack_recipe("wooden chair", /obj/structure/bed/chair/wood/normal, 1, time = 10, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1), \ new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 20, one_per_turf = ONE_TYPE_PER_BORDER, on_floor = 1), \ new/datum/stack_recipe("wooden crate", /obj/structure/closet/coffin/woodencrate, 5, time = 15, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1), \ @@ -152,7 +157,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \ new/datum/stack_recipe("baseball bat", /obj/item/weapon/baseballbat, 10, time = 20, on_floor = 1), \ new/datum/stack_recipe("wooden cross", /obj/structure/prop/wooden_cross, 2, time = 10, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1), \ new/datum/stack_recipe("wooden pole", /obj/item/weapon/pole, 3, time = 10, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1) \ - ) + )) /obj/item/stack/sheet/wood name = "wooden plank" @@ -180,7 +185,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \ icon_state = "sheet-wood" /obj/item/stack/sheet/wood/New(loc, amount=null) - recipes = wood_recipes + recipes = GLOB.wood_recipes return ..() /* @@ -197,7 +202,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \ /* * Cardboard */ -var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ +GLOBAL_LIST_INIT_TYPED(cardboard_recipes, /datum/stack_recipe, list ( \ new/datum/stack_recipe("box", /obj/item/storage/box), \ new/datum/stack_recipe("donut box", /obj/item/storage/donut_box/empty), \ new/datum/stack_recipe("egg box", /obj/item/storage/fancy/egg_box), \ @@ -207,6 +212,7 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ new/datum/stack_recipe("cardborg suit", /obj/item/clothing/suit/cardborg, 3), \ new/datum/stack_recipe("cardborg helmet", /obj/item/clothing/head/cardborg), \ new/datum/stack_recipe("pizza box", /obj/item/pizzabox), \ + new/datum/stack_recipe("dartboard", /obj/item/dartboard), \ null, \ new/datum/stack_recipe_list("folders",list( \ new/datum/stack_recipe("blue folder", /obj/item/folder/blue), \ @@ -218,11 +224,13 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ null, \ new/datum/stack_recipe_list("empty ammo boxes",list( \ new/datum/stack_recipe("empty magazine box (88 Mod 4 AP)", /obj/item/ammo_box/magazine/mod88/empty), \ + new/datum/stack_recipe("empty magazine box (SU-6)", /obj/item/ammo_box/magazine/su6/empty), \ + new/datum/stack_recipe("empty magazine box (VP78)", /obj/item/ammo_box/magazine/vp78/empty), \ + null, \ new/datum/stack_recipe("empty magazine box (M4A3)", /obj/item/ammo_box/magazine/m4a3/empty), \ new/datum/stack_recipe("empty magazine box (M4A3 AP)", /obj/item/ammo_box/magazine/m4a3/ap/empty), \ new/datum/stack_recipe("empty magazine box (M4A3 HP)", /obj/item/ammo_box/magazine/m4a3/hp/empty), \ - new/datum/stack_recipe("empty magazine box (SU-6)", /obj/item/ammo_box/magazine/su6/empty), \ - new/datum/stack_recipe("empty magazine box (VP78)", /obj/item/ammo_box/magazine/vp78/empty), \ + new/datum/stack_recipe("empty magazine box (M4A3 Incen)", /obj/item/ammo_box/magazine/m4a3/incen/empty), \ null, \ new/datum/stack_recipe("empty speed loader box (M44)", /obj/item/ammo_box/magazine/m44/empty), \ new/datum/stack_recipe("empty speed loader box (M44 Heavy)", /obj/item/ammo_box/magazine/m44/heavy/empty), \ @@ -251,11 +259,31 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ new/datum/stack_recipe("empty magazine box (M41A Incen)", /obj/item/ammo_box/magazine/incen/empty), \ new/datum/stack_recipe("empty magazine box (M41A LE)", /obj/item/ammo_box/magazine/le/empty), \ null, \ + new/datum/stack_recipe("empty magazine box (XM51)", /obj/item/ammo_box/magazine/xm51/empty), \ + null, \ + new/datum/stack_recipe("empty magazine box (M41A MK1)", /obj/item/ammo_box/magazine/mk1/empty), \ + new/datum/stack_recipe("empty magazine box (M41A MK1 AP)", /obj/item/ammo_box/magazine/mk1/ap/empty), \ + null, \ + new/datum/stack_recipe("empty drum box (M56B)", /obj/item/ammo_box/magazine/m56b/empty), \ + new/datum/stack_recipe("empty drum box (M56B Irradiated)", /obj/item/ammo_box/magazine/m56b/dirty/empty), \ + new/datum/stack_recipe("empty drum box (M56D)", /obj/item/ammo_box/magazine/m56d/empty), \ + null, \ + new/datum/stack_recipe("empty drum box (M2C)", /obj/item/ammo_box/magazine/m2c/empty), \ + null, \ + new/datum/stack_recipe("empty magazine box (M41AE2)", /obj/item/ammo_box/magazine/m41ae2/empty), \ + new/datum/stack_recipe("empty magazine box (M41AE2 Holo-Target)", /obj/item/ammo_box/magazine/m41ae2/holo/empty), \ + new/datum/stack_recipe("empty magazine box (M41AE2 HEAP)", /obj/item/ammo_box/magazine/m41ae2/heap/empty), \ + null, \ + new/datum/stack_recipe("empty flamer tank box (UT-Napthal)", /obj/item/ammo_box/magazine/flamer/empty), \ + new/datum/stack_recipe("empty flamer tank box (Napalm B-Gel)", /obj/item/ammo_box/magazine/flamer/bgel/empty), \ + null, \ new/datum/stack_recipe("empty shotgun shell box (Beanbag)", /obj/item/ammo_box/magazine/shotgun/beanbag/empty), \ new/datum/stack_recipe("empty shotgun shell box (Buckshot)", /obj/item/ammo_box/magazine/shotgun/buckshot/empty), \ new/datum/stack_recipe("empty shotgun shell box (Flechette)", /obj/item/ammo_box/magazine/shotgun/flechette/empty), \ new/datum/stack_recipe("empty shotgun shell box (Incendiary)", /obj/item/ammo_box/magazine/shotgun/incendiary/empty), \ + new/datum/stack_recipe("empty shotgun shell box (Incendiary Buckshot)", /obj/item/ammo_box/magazine/shotgun/incendiarybuck/empty), \ new/datum/stack_recipe("empty shotgun shell box (Slugs)", /obj/item/ammo_box/magazine/shotgun/empty), \ + new/datum/stack_recipe("empty shotgun shell box (16g) (Breaching)", /obj/item/ammo_box/magazine/shotgun/light/breaching/empty), \ null, \ new/datum/stack_recipe("empty 45-70 bullets box", /obj/item/ammo_box/magazine/lever_action/empty), \ new/datum/stack_recipe("empty 45-70 bullets box (Blanks)", /obj/item/ammo_box/magazine/lever_action/training/empty), \ @@ -274,23 +302,48 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ new/datum/stack_recipe("empty rifle ammo box (10x24mm Incen)", /obj/item/ammo_box/rounds/incen/empty), \ new/datum/stack_recipe("empty rifle ammo box (10x24mm LE)", /obj/item/ammo_box/rounds/le/empty), \ null, \ + new/datum/stack_recipe("empty rifle ammo box (9mm)", /obj/item/ammo_box/rounds/pistol/empty), \ + new/datum/stack_recipe("empty rifle ammo box (9mm AP)", /obj/item/ammo_box/rounds/pistol/ap/empty), \ + new/datum/stack_recipe("empty rifle ammo box (9mm HP)", /obj/item/ammo_box/rounds/pistol/hp/empty), \ + new/datum/stack_recipe("empty rifle ammo box (9mm Incen)", /obj/item/ammo_box/rounds/pistol/incen/empty), \ + null, \ new/datum/stack_recipe("empty box of MREs", /obj/item/ammo_box/magazine/misc/mre/empty), \ new/datum/stack_recipe("empty box of M94 Marking Flare Packs", /obj/item/ammo_box/magazine/misc/flares/empty), \ + new/datum/stack_recipe("empty box of M89 Signal Flare Packs", /obj/item/ammo_box/magazine/misc/flares/signal/empty), \ new/datum/stack_recipe("empty box of flashlights", /obj/item/ammo_box/magazine/misc/flashlight/empty), \ new/datum/stack_recipe("empty box of High-Capacity Power Cells", /obj/item/ammo_box/magazine/misc/power_cell/empty), \ null, \ + new/datum/stack_recipe("empty magazine box (Desert Eagle)", /obj/item/ammo_box/magazine/deagle/empty), \ + new/datum/stack_recipe("empty magazine box (Desert Eagle Heavy)", /obj/item/ammo_box/magazine/deagle/super/empty), \ + new/datum/stack_recipe("empty magazine box (Desert Eagle High-Impact)", /obj/item/ammo_box/magazine/deagle/super/highimpact/empty), \ + new/datum/stack_recipe("empty magazine box (Desert Eagle AP)", /obj/item/ammo_box/magazine/deagle/super/highimpact/ap/empty), \ + null, \ + new/datum/stack_recipe("empty magazine box (Spearhead HP)", /obj/item/ammo_box/magazine/spearhead/empty), \ + new/datum/stack_recipe("empty magazine box (Spearhead)", /obj/item/ammo_box/magazine/spearhead/normalpoint/empty), \ + null, \ new/datum/stack_recipe("empty magazine box (M16)", /obj/item/ammo_box/magazine/M16/empty), \ new/datum/stack_recipe("empty magazine box (M16 AP)", /obj/item/ammo_box/magazine/M16/ap/empty), \ null, \ + new/datum/stack_recipe("empty magazine box (AR10)", /obj/item/ammo_box/magazine/ar10/empty), \ + null, \ + new/datum/stack_recipe("empty magazine box (MP5)", /obj/item/ammo_box/magazine/mp5/empty), \ + null, \ + new/datum/stack_recipe("empty magazine box (NSG 23)", /obj/item/ammo_box/magazine/nsg23/empty), \ + new/datum/stack_recipe("empty magazine box (NSG 23 AP)", /obj/item/ammo_box/magazine/nsg23/ap/empty), \ + new/datum/stack_recipe("empty magazine box (NSG 23 EX)", /obj/item/ammo_box/magazine/nsg23/ex/empty), \ + null, \ new/datum/stack_recipe("empty magazine box (Type71)", /obj/item/ammo_box/magazine/type71/empty), \ new/datum/stack_recipe("empty magazine box (Type71 AP)", /obj/item/ammo_box/magazine/type71/ap/empty), \ null, \ + new/datum/stack_recipe("empty magazine box (Type73)", /obj/item/ammo_box/magazine/type73/empty), \ + new/datum/stack_recipe("empty magazine box (Type73 High-Impact)", /obj/item/ammo_box/magazine/type73/impact/empty), \ + null, \ new/datum/stack_recipe("empty rifle ammo box (5.45x39mm)", /obj/item/ammo_box/rounds/type71/empty), \ new/datum/stack_recipe("empty rifle ammo box (5.45x39mm AP)", /obj/item/ammo_box/rounds/type71/ap/empty), \ )) \ -) +)) /obj/item/stack/sheet/cardboard //BubbleWrap name = "cardboard" @@ -301,7 +354,7 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ stack_id = "cardboard" /obj/item/stack/sheet/cardboard/New(loc, amount=null) - recipes = cardboard_recipes + recipes = GLOB.cardboard_recipes return ..() /obj/item/stack/sheet/cardboard/small_stack @@ -316,9 +369,9 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ /* * Aluminum */ -var/global/list/datum/stack_recipe/aluminum_recipes = list ( \ +GLOBAL_LIST_INIT_TYPED(aluminium_recipes, /datum/stack_recipe, list ( \ new/datum/stack_recipe("flask", /obj/item/reagent_container/food/drinks/flask, 1) - ) + )) /obj/item/stack/sheet/aluminum name = "aluminum" @@ -331,9 +384,9 @@ var/global/list/datum/stack_recipe/aluminum_recipes = list ( \ /* * Copper */ -var/global/list/datum/stack_recipe/copper_recipes = list ( \ +GLOBAL_LIST_INIT_TYPED(copper_recipes, /datum/stack_recipe, list ( \ new/datum/stack_recipe("cable coil", /obj/item/stack/cable_coil, 2, 1, 20, time = 10, skill_req = SKILL_CONSTRUCTION, skill_lvl = SKILL_CONSTRUCTION_TRAINED) - ) + )) /obj/item/stack/sheet/copper name = "copper" diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index ac778c0569ed..f8a6af3cf24f 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -144,7 +144,9 @@ Also change the icon to reflect the amount of sheets, if possible.*/ list_recipes(usr, text2num(href_list["sublist"])) if(href_list["make"]) - if(amount < 1) qdel(src) //Never should happen + if(amount < 1) + qdel(src) //Never should happen + return var/list/recipes_list = recipes if(href_list["sublist"]) @@ -152,7 +154,11 @@ Also change the icon to reflect the amount of sheets, if possible.*/ recipes_list = srl.recipes var/datum/stack_recipe/R = recipes_list[text2num(href_list["make"])] var/multiplier = text2num(href_list["multiplier"]) - if(!isnum(multiplier)) + if(multiplier != multiplier) // isnan + message_admins("[key_name_admin(usr)] has attempted to multiply [src] with NaN") + return + if(!isnum(multiplier)) // this used to block nan... + message_admins("[key_name_admin(usr)] has attempted to multiply [src] with !isnum") return multiplier = round(multiplier) if(multiplier < 1) @@ -182,6 +188,11 @@ Also change the icon to reflect the amount of sheets, if possible.*/ to_chat(usr, SPAN_WARNING("The [R.title] cannot be built here!")) //might cause some friendly fire regarding other items like barbed wire, shouldn't be a problem? return + var/obj/structure/tunnel/tunnel = locate(/obj/structure/tunnel) in usr.loc + if(tunnel) + to_chat(usr, SPAN_WARNING("The [R.title] cannot be constructed on a tunnel!")) + return + if((R.flags & RESULT_REQUIRES_SNOW) && !(istype(usr.loc, /turf/open/snow) || istype(usr.loc, /turf/open/auto_turf/snow))) to_chat(usr, SPAN_WARNING("The [R.title] must be built on snow!")) return @@ -202,13 +213,21 @@ Also change the icon to reflect the amount of sheets, if possible.*/ if(check_one_per_turf(R,usr)) return - var/atom/O = new R.result_type(usr.loc, usr) - usr.visible_message(SPAN_NOTICE("[usr] assembles \a [O]."), - SPAN_NOTICE("You assemble \a [O].")) - O.setDir(usr.dir) + var/atom/new_item + if(ispath(R.result_type, /turf)) + var/turf/current_turf = get_turf(usr) + if(!current_turf) + return + new_item = current_turf.ChangeTurf(R.result_type) + else + new_item = new R.result_type(usr.loc, usr) + + usr.visible_message(SPAN_NOTICE("[usr] assembles \a [new_item]."), + SPAN_NOTICE("You assemble \a [new_item].")) + new_item.setDir(usr.dir) if(R.max_res_amount > 1) - var/obj/item/stack/new_item = O - new_item.amount = R.res_amount * multiplier + var/obj/item/stack/new_stack = new_item + new_stack.amount = R.res_amount * multiplier amount -= R.req_amount * multiplier update_icon() @@ -218,25 +237,25 @@ Also change the icon to reflect the amount of sheets, if possible.*/ usr.drop_inv_item_on_ground(oldsrc) qdel(oldsrc) - if(istype(O,/obj/item/stack)) //floor stacking convenience - var/obj/item/stack/S = O - for(var/obj/item/stack/F in usr.loc) - if(S.stack_id == F.stack_id && S != F) - var/diff = F.max_amount - F.amount - if (S.amount < diff) - F.amount += S.amount - qdel(S) + if(istype(new_item,/obj/item/stack)) //floor stacking convenience + var/obj/item/stack/stack_item = new_item + for(var/obj/item/stack/found_item in usr.loc) + if(stack_item.stack_id == found_item.stack_id && stack_item != found_item) + var/diff = found_item.max_amount - found_item.amount + if (stack_item.amount < diff) + found_item.amount += stack_item.amount + qdel(stack_item) else - S.amount -= diff - F.amount += diff + stack_item.amount -= diff + found_item.amount += diff break - O?.add_fingerprint(usr) + new_item?.add_fingerprint(usr) //BubbleWrap - so newly formed boxes are empty - if(isstorage(O)) - for (var/obj/item/I in O) - qdel(I) + if(isstorage(new_item)) + for (var/obj/item/found_item in new_item) + qdel(found_item) //BubbleWrap END if(src && usr.interactee == src) //do not reopen closed window INVOKE_ASYNC(src, PROC_REF(interact), usr) @@ -264,11 +283,15 @@ Also change the icon to reflect the amount of sheets, if possible.*/ if(used > amount) //If it's larger than what we have, no go. return FALSE amount -= used - update_icon() if(amount <= 0) - if(usr && loc == usr) - usr.temp_drop_inv_item(src) + if(loc == usr) + usr?.temp_drop_inv_item(src) + else if(isstorage(loc)) + var/obj/item/storage/storage = loc + storage.remove_from_storage(src) qdel(src) + else + update_icon() return TRUE /obj/item/stack/proc/add(extra) @@ -300,6 +323,8 @@ Also change the icon to reflect the amount of sheets, if possible.*/ if(mods["alt"]) if(!CAN_PICKUP(user, src)) return + if(amount <= 1) + return var/desired = tgui_input_number(user, "How much would you like to split off from this stack?", "How much?", 1, amount-1, 1) if(!desired) return diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index e36225177d91..cafea5fa074b 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -12,6 +12,12 @@ max_w_class = SIZE_MEDIUM storage_slots = null max_storage_space = 21 + cant_hold = list(/obj/item/storage/firstaid, /obj/item/storage/toolkit) + can_hold_skill = list( + /obj/item/storage/firstaid = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/storage/toolkit = list(SKILL_ENGINEER, SKILL_ENGINEER_ENGI), + ) + drop_sound = "armorequip" var/worn_accessible = FALSE //whether you can access its content while worn on the back var/obj/item/card/id/locking_id = null var/is_id_lockable = FALSE @@ -67,9 +73,9 @@ return FALSE // Create their vis object if needed - if(!xeno.backpack_icon_carrier) - xeno.backpack_icon_carrier = new(null, xeno) - xeno.vis_contents += xeno.backpack_icon_carrier + if(!xeno.backpack_icon_holder) + xeno.backpack_icon_holder = new(null, xeno) + xeno.vis_contents += xeno.backpack_icon_holder target_mob.put_in_back(src) return FALSE @@ -405,7 +411,7 @@ has_gamemode_skin = FALSE storage_slots = 3 icon_state = "ammo_pack_0" - can_hold = list(/obj/item/ammo_box) + can_hold = list(/obj/item/ammo_box, /obj/item/stack/folding_barricade) max_w_class = SIZE_MASSIVE throw_range = 0 xeno_types = null @@ -437,6 +443,10 @@ xeno_icon_state = "medicpack" xeno_types = list(/mob/living/carbon/xenomorph/runner, /mob/living/carbon/xenomorph/praetorian, /mob/living/carbon/xenomorph/drone, /mob/living/carbon/xenomorph/warrior, /mob/living/carbon/xenomorph/defender, /mob/living/carbon/xenomorph/sentinel, /mob/living/carbon/xenomorph/spitter) +/obj/item/storage/backpack/marine/medic/upp + name = "\improper UPP corpsman backpack" + desc = "Uncommon issue backpack worn by UPP medics from isolated sectors. You can swear you can see a faded USCM symbol." + /obj/item/storage/backpack/marine/tech name = "\improper USCM technician backpack" desc = "A standard-issue backpack worn by USCM technicians." @@ -451,6 +461,12 @@ icon_state = "marinebigsatch" max_storage_space = 20 +/obj/item/storage/backpack/marine/satchel/intel/chestrig + name = "\improper USCM expedition chestrig" + desc = "A heavy-duty IMP based chestrig, can quickly be accessed with only one hand. Usually issued to USCM intelligence officers." + icon_state = "intel_chestrig" + max_storage_space = 20 + /obj/item/storage/backpack/marine/satchel name = "\improper USCM satchel" desc = "A heavy-duty satchel carried by some USCM soldiers and support personnel." @@ -478,6 +494,11 @@ desc = "A heavy-duty chestrig used by some USCM technicians." icon_state = "marinesatch_techi" +/obj/item/storage/backpack/marine/satchel/chestrig + name = "\improper USCM chestrig" + desc = "A chestrig used by some USCM personnel." + icon_state = "chestrig" + GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/rto) /obj/item/storage/backpack/marine/satchel/rto @@ -493,7 +514,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r var/obj/structure/transmitter/internal/internal_transmitter var/phone_category = PHONE_MARINE - var/network_receive = FACTION_MARINE + var/list/networks_receive = list(FACTION_MARINE) var/list/networks_transmit = list(FACTION_MARINE) var/base_icon @@ -519,7 +540,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r internal_transmitter.relay_obj = src internal_transmitter.phone_category = phone_category internal_transmitter.enabled = FALSE - internal_transmitter.network_receive = network_receive + internal_transmitter.networks_receive = networks_receive internal_transmitter.networks_transmit = networks_transmit RegisterSignal(internal_transmitter, COMSIG_TRANSMITTER_UPDATE_ICON, PROC_REF(check_for_ringing)) GLOB.radio_packs += src @@ -557,6 +578,18 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r /obj/item/storage/backpack/marine/satchel/rto/pickup(mob/user) . = ..() + autoset_phone_id(user) + +/obj/item/storage/backpack/marine/satchel/rto/equipped(mob/user, slot) + . = ..() + autoset_phone_id(user) + +/// Automatically sets the phone_id based on the current or updated user +/obj/item/storage/backpack/marine/satchel/rto/proc/autoset_phone_id(mob/user) + if(!user) + internal_transmitter.phone_id = "[src]" + internal_transmitter.enabled = FALSE + return if(ishuman(user)) var/mob/living/carbon/human/H = user if(H.comm_title) @@ -570,13 +603,11 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r internal_transmitter.phone_id += " ([H.assigned_squad.name])" else internal_transmitter.phone_id = "[user]" - internal_transmitter.enabled = TRUE /obj/item/storage/backpack/marine/satchel/rto/dropped(mob/user) . = ..() - internal_transmitter.phone_id = "[src]" - internal_transmitter.enabled = FALSE + autoset_phone_id(null) // Disable phone when dropped /obj/item/storage/backpack/marine/satchel/rto/proc/use_phone(mob/user) internal_transmitter.attack_hand(user) @@ -589,7 +620,8 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r . = ..() /obj/item/storage/backpack/marine/satchel/rto/upp_net - network_receive = FACTION_UPP + name = "\improper UPP Radio Telephone Pack" + networks_receive = list(FACTION_UPP) networks_transmit = list(FACTION_UPP) /obj/item/storage/backpack/marine/satchel/rto/small @@ -598,7 +630,8 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r /obj/item/storage/backpack/marine/satchel/rto/small/upp_net - network_receive = FACTION_UPP + name = "\improper UPP Radio Telephone Pack" + networks_receive = list(FACTION_UPP) networks_transmit = list(FACTION_UPP) phone_category = PHONE_UPP_SOLDIER @@ -669,6 +702,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r icon_state = "g8pouch" item_state = "g8pouch" has_gamemode_skin = TRUE + can_hold_skill = list() /obj/item/storage/backpack/general_belt/equipped(mob/user, slot) switch(slot) @@ -733,8 +767,10 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r RegisterSignal(H, COMSIG_GRENADE_PRE_PRIME, PROC_REF(cloak_grenade_callback)) RegisterSignal(H, COMSIG_HUMAN_EXTINGUISH, PROC_REF(wrapper_fizzle_camouflage)) + RegisterSignal(H, COMSIG_MOB_EFFECT_CLOAK_CANCEL, PROC_REF(deactivate_camouflage)) camo_active = TRUE + ADD_TRAIT(H, TRAIT_CLOAKED, TRAIT_SOURCE_EQUIPMENT(WEAR_BACK)) H.visible_message(SPAN_DANGER("[H] vanishes into thin air!"), SPAN_NOTICE("You activate your cloak's camouflage."), max_distance = 4) playsound(H.loc, 'sound/effects/cloak_scout_on.ogg', 15, TRUE) H.unset_interaction() @@ -743,9 +779,9 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r H.FF_hit_evade = 1000 H.allow_gun_usage = allow_gun_usage - var/datum/mob_hud/security/advanced/SA = huds[MOB_HUD_SECURITY_ADVANCED] + var/datum/mob_hud/security/advanced/SA = GLOB.huds[MOB_HUD_SECURITY_ADVANCED] SA.remove_from_hud(H) - var/datum/mob_hud/xeno_infection/XI = huds[MOB_HUD_XENO_INFECTION] + var/datum/mob_hud/xeno_infection/XI = GLOB.huds[MOB_HUD_XENO_INFECTION] XI.remove_from_hud(H) anim(H.loc, H, 'icons/mob/mob.dmi', null, "cloak", null, H.dir) @@ -761,27 +797,30 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r deactivate_camouflage(wearer, TRUE, TRUE) /obj/item/storage/backpack/marine/satchel/scout_cloak/proc/deactivate_camouflage(mob/living/carbon/human/H, anim = TRUE, forced) + SIGNAL_HANDLER if(!istype(H)) return FALSE UnregisterSignal(H, list( COMSIG_GRENADE_PRE_PRIME, - COMSIG_HUMAN_EXTINGUISH + COMSIG_HUMAN_EXTINGUISH, + COMSIG_MOB_EFFECT_CLOAK_CANCEL, )) if(forced) cloak_cooldown = world.time + 10 SECONDS camo_active = FALSE + REMOVE_TRAIT(H, TRAIT_CLOAKED, TRAIT_SOURCE_EQUIPMENT(WEAR_BACK)) H.visible_message(SPAN_DANGER("[H] shimmers into existence!"), SPAN_WARNING("Your cloak's camouflage has deactivated!"), max_distance = 4) playsound(H.loc, 'sound/effects/cloak_scout_off.ogg', 15, TRUE) H.alpha = initial(H.alpha) H.FF_hit_evade = initial(H.FF_hit_evade) - var/datum/mob_hud/security/advanced/SA = huds[MOB_HUD_SECURITY_ADVANCED] + var/datum/mob_hud/security/advanced/SA = GLOB.huds[MOB_HUD_SECURITY_ADVANCED] SA.add_to_hud(H) - var/datum/mob_hud/xeno_infection/XI = huds[MOB_HUD_XENO_INFECTION] + var/datum/mob_hud/xeno_infection/XI = GLOB.huds[MOB_HUD_XENO_INFECTION] XI.add_to_hud(H) if(anim) @@ -815,7 +854,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r /datum/action/item_action/specialist/toggle_cloak/can_use_action() var/mob/living/carbon/human/H = owner - if(istype(H) && !H.is_mob_incapacitated() && !H.lying && holder_item == H.back) + if(istype(H) && !H.is_mob_incapacitated() && holder_item == H.back) return TRUE /datum/action/item_action/specialist/toggle_cloak/action_activate() @@ -914,6 +953,16 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r max_fuel = 100 worn_accessible = TRUE +/obj/item/storage/backpack/marine/engineerpack/welder_chestrig + name = "\improper Technician Welder Chestrig" + desc = "A specialized Chestrig worn by technicians and engineers. It carries one medium fuel tank for quick welder refueling and use." + icon_state = "welder_chestrig" + item_state = "welder_chestrig" + max_storage_space = 12 + has_gamemode_skin = FALSE + max_fuel = 100 + worn_accessible = TRUE + // Pyrotechnician Spec backpack fuel tank /obj/item/storage/backpack/marine/engineerpack/flamethrower name = "\improper USCM Pyrotechnician G6-2 fueltank" @@ -1089,3 +1138,61 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r max_storage_space = 21 camo_alpha = 10 + +/obj/item/storage/backpack/marine/satchel/scout_cloak/upp/weak + desc = "A thermo-optic camouflage cloak commonly used by UPP commando units. This one is less effective than normal." + actions_types = null + +//----------TWE SECTION---------- +/obj/item/storage/backpack/rmc + has_gamemode_skin = FALSE + +/obj/item/storage/backpack/rmc/heavy + name = "heavyweight RMC backpack" + desc = "The heavy-carry pack of the RMC forces. Designed to lug the most amount of gear into the battlefield." + icon_state = "backpack_large" + item_state = "backpack_large" + max_storage_space = 27 + +/obj/item/storage/backpack/rmc/medium + name = "standard RMC backpack" + desc = "A TWE military standard-carry RMC combat pack MK3." + icon_state = "backpack_medium" + item_state = "backpack_medium" + worn_accessible = TRUE + max_storage_space = 24 + +/obj/item/storage/backpack/rmc/light + name = "lightweight RMC backpack" + desc = "A TWE military light-carry RMC combat pack MK3." + icon_state = "backpack_small" + item_state = "backpack_small" + worn_accessible = TRUE + max_storage_space = 21 + +/obj/item/storage/backpack/rmc/frame //One sorry sod should have to lug this about spawns in their shuttle currently + name = "\improper RMC carry-frame" + desc = "A backpack specifically designed to hold equipment for commandos." + icon_state = "backpack_frame" + item_state = "backpack_frame" + max_w_class = SIZE_HUGE + storage_slots = 7 + can_hold = list( + /obj/item/ammo_box/magazine/misc/mre, + /obj/item/storage/firstaid/regular, + /obj/item/storage/firstaid/adv, + /obj/item/storage/firstaid/surgical, + /obj/item/device/defibrillator/compact, + /obj/item/tool/surgery/surgical_line, + /obj/item/tool/surgery/synthgraft, + /obj/item/storage/box/packet/rmc/he, + /obj/item/storage/box/packet/rmc/incin, + ) + +/obj/item/storage/backpack/general_belt/rmc //the breachers belt + name = "\improper RMC general utility belt" + desc = "A small, lightweight pouch that can be clipped onto armor to provide additional storage. This new RMC model, while uncomfortable, can also be clipped around the waist." + icon_state = "rmc_general" + item_state = "rmc_general" + has_gamemode_skin = FALSE + max_storage_space = 15 diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index f0a235b2301f..542b947134e8 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -30,24 +30,28 @@ item_state = "trashbag" w_class = SIZE_LARGE - max_w_class = SIZE_SMALL - storage_slots = 21 + max_w_class = SIZE_MEDIUM + storage_slots = null + max_storage_space = 21 //equivalent to an IMP backpack can_hold = list() // any cant_hold = list(/obj/item/disk/nuclear, /obj/item/weapon/throwing_knife) storage_flags = STORAGE_GATHER_SIMULTAENOUSLY|STORAGE_QUICK_GATHER|STORAGE_CLICK_GATHER + flags_equip_slot = NONE /obj/item/storage/bag/trash/update_icon() - if(contents.len == 0) + var/sum_storage_cost = 0 + for(var/obj/item/item in contents) + sum_storage_cost += item.get_storage_cost() + + if(!sum_storage_cost) icon_state = "trashbag0" - else if(contents.len < 12) + else if(sum_storage_cost < round(max_storage_space * 0.35)) icon_state = "trashbag1" - else if(contents.len < 21) + else if(sum_storage_cost < round(max_storage_space * 0.7)) icon_state = "trashbag2" - else icon_state = "trashbag3" - -/obj/item/storage/bag/trash/open(mob/user) - return + else + icon_state = "trashbag3" // ----------------------------- // Plastic Bag @@ -124,7 +128,7 @@ /obj/item/storage/bag/sheetsnatcher/Initialize() . = ..() -/obj/item/storage/bag/sheetsnatcher/can_be_inserted(obj/item/W as obj, stop_messages = 0) +/obj/item/storage/bag/sheetsnatcher/can_be_inserted(obj/item/W, mob/user, stop_messages = FALSE) if(!istype(W,/obj/item/stack/sheet) || istype(W,/obj/item/stack/sheet/mineral/sandstone) || istype(W,/obj/item/stack/sheet/wood)) if(!stop_messages) to_chat(usr, "The snatcher does not accept [W].") @@ -183,7 +187,7 @@ //Turned numbered display on. Appears to work as intended, despite above comment -- Vanagandr. /obj/item/storage/bag/sheetsnatcher/orient2hud() - var/adjusted_contents = contents.len + var/adjusted_contents = length(contents) //Numbered contents display var/list/datum/numbered_display/numbered_contents diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 43624f913037..a977eb880ff5 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -3,6 +3,10 @@ desc = "Can hold various things." icon = 'icons/obj/items/clothing/belts.dmi' icon_state = "utilitybelt" + item_icons = list( + WEAR_L_HAND = 'icons/mob/humans/onmob/items_lefthand_1.dmi', + WEAR_R_HAND = 'icons/mob/humans/onmob/items_righthand_1.dmi' + ) item_state = "utility" flags_equip_slot = SLOT_WAIST attack_verb = list("whipped", "lashed", "disciplined") @@ -12,6 +16,26 @@ ///TRUE Means that it closes a flap over its contents, and therefore update_icon should lift that flap when opened. If it doesn't have _half and _full iconstates, this doesn't matter either way. var/flap = TRUE +/obj/item/storage/belt/gun/flaregun/dump_into(obj/item/storage/origin_storage, mob/user) + + if(length(holstered_guns) < 1 && length(contents) >= (storage_slots-1)) + + to_chat(user, SPAN_WARNING("[src] is full.")) + return FALSE + return ..() + +/obj/item/storage/belt/gun/flaregun/handle_item_insertion(obj/item/new_item, prevent_warning = FALSE, mob/user) + + if(istype(new_item, /obj/item/device/flashlight/flare) && length(holstered_guns) < 1 && length(contents) >= (storage_slots-1)) + return FALSE + return ..() + +/obj/item/storage/belt/gun/flaregun/has_room(obj/item/new_item, W_class_override = null) + + if(istype(new_item, /obj/item/device/flashlight/flare) && length(holstered_guns) < 1 && length(contents) >= (storage_slots-1)) + return FALSE //No slot open because gun in holster. + return ..() + /obj/item/storage/belt/equipped(mob/user, slot) switch(slot) if(WEAR_WAIST, WEAR_J_STORE, WEAR_BACK) @@ -70,22 +94,28 @@ /obj/item/tool/weldingtool, /obj/item/tool/wirecutters, /obj/item/tool/wrench, + /obj/item/tool/extinguisher/mini, + /obj/item/tool/shovel/etool, + /obj/item/stack/cable_coil, + /obj/item/weapon/gun/smg/nailgun/compact, + /obj/item/cell, + /obj/item/circuitboard, + /obj/item/stock_parts, + /obj/item/device/demo_scanner, + /obj/item/device/reagent_scanner, + /obj/item/device/assembly, /obj/item/device/multitool, /obj/item/device/flashlight, - /obj/item/stack/cable_coil, /obj/item/device/t_scanner, /obj/item/device/analyzer, - /obj/item/weapon/gun/smg/nailgun/compact, - /obj/item/tool/shovel/etool, - /obj/item/tool/extinguisher/mini, - /obj/item/cell, + /obj/item/explosive/plastic, /obj/item/device/lightreplacer, - ) bypass_w_limit = list( /obj/item/tool/shovel/etool, /obj/item/device/lightreplacer, ) + storage_slots = 10 /obj/item/storage/belt/utility/full/fill_preset_inventory() @@ -106,6 +136,13 @@ new /obj/item/tool/wirecutters(src) new /obj/item/device/t_scanner(src) +/obj/item/storage/belt/utility/full/pred + name = "\improper Yautja toolbelt" + desc = "A modular belt with various clips. This version lacks any hunting functionality, and is commonly used by engineers to transport important tools." + icon = 'icons/obj/items/hunter/pred_gear.dmi' + icon_state = "utilitybelt_pred" + item_state = "utility" + /obj/item/storage/belt/medical name = "\improper M276 pattern medical storage rig" desc = "The M276 is the standard load-bearing equipment of the USCM. It consists of a modular belt with various clips. This version is a less common configuration, designed to transport medical supplies and pistol ammunition. \nRight click its sprite and click \"toggle belt mode\" to take pills out of bottles by simply clicking them." @@ -114,7 +151,7 @@ storage_slots = 14 max_w_class = SIZE_MEDIUM max_storage_space = 28 - var/mode = 0 //Pill picking mode + var/mode = 1 //Picking from pill bottle mode can_hold = list( /obj/item/device/healthanalyzer, @@ -131,9 +168,6 @@ /obj/item/clothing/mask/surgical, /obj/item/clothing/gloves/latex, /obj/item/storage/syringe_case, - /obj/item/ammo_magazine/pistol, - /obj/item/ammo_magazine/revolver, - /obj/item/ammo_magazine/handful, /obj/item/device/flashlight/flare, /obj/item/reagent_container/hypospray, /obj/item/bodybag, @@ -272,6 +306,19 @@ new /obj/item/storage/pill_bottle/tramadol(src) new /obj/item/storage/pill_bottle/peridaxon(src) +/obj/item/storage/belt/medical/lifesaver/upp/partial/fill_preset_inventory() + new /obj/item/stack/medical/advanced/bruise_pack(src) + new /obj/item/stack/medical/advanced/bruise_pack(src) + new /obj/item/stack/medical/advanced/ointment(src) + new /obj/item/stack/medical/advanced/ointment(src) + new /obj/item/stack/medical/splint(src) + new /obj/item/stack/medical/splint(src) + new /obj/item/reagent_container/hypospray/autoinjector/oxycodone(src) + new /obj/item/storage/pill_bottle/bicaridine(src) + new /obj/item/storage/pill_bottle/kelotane(src) + new /obj/item/storage/pill_bottle/inaprovaline(src) + new /obj/item/storage/pill_bottle/tramadol(src) + /obj/item/storage/belt/security name = "\improper M276 pattern security rig" desc = "The M276 is the standard load-bearing equipment of the USCM. It consists of a modular belt with various clips. This configuration is commonly seen among USCM Military Police and peacekeepers, though it can hold some light munitions." @@ -347,6 +394,7 @@ new /obj/item/weapon/baton(src) new /obj/item/handcuffs(src) new /obj/item/reagent_container/spray/pepper(src) + new /obj/item/ammo_magazine/revolver/upp/shrapnel(src) /obj/item/storage/belt/security/MP/CMB name = "\improper CMB duty belt" @@ -485,7 +533,6 @@ for(var/i = 1 to storage_slots) new /obj/item/ammo_magazine/handful/shotgun/buckshot(src) - /obj/item/storage/belt/marine/smartgunner name = "\improper M280 pattern smartgunner drum belt" desc = "Despite the fact that 1. drum magazines are incredibly non-ergonomical, and 2. require incredibly precise machining in order to fit universally (spoiler, they don't, adding further to the myth of 'Smartgun Personalities'), the USCM decided to issue a modified marine belt (more formally known by the designation M280) with hooks and dust covers (overly complex for the average jarhead) for the M56B system's drum munitions. When the carry catch on the drum isn't getting stuck in the oiled up velcro, the rig actually does do a decent job at holding a plentiful amount of drums. But at the end of the day, compared to standard rigs... it sucks, but isn't that what being a Marine is all about?" @@ -601,7 +648,7 @@ /obj/item/storage/belt/shotgun/full/random/fill_preset_inventory() for(var/i = 1 to storage_slots) - var/random_shell_type = pick(shotgun_handfuls_12g) + var/random_shell_type = pick(GLOB.shotgun_handfuls_12g) new random_shell_type(src) /obj/item/storage/belt/shotgun/attackby(obj/item/W, mob/user) @@ -735,14 +782,14 @@ ) cant_hold = list() flap = FALSE - var/draw_cooldown = 0 - var/draw_cooldown_interval = 1 SECONDS + + COOLDOWN_DECLARE(draw_cooldown) /obj/item/storage/belt/knifepouch/fill_preset_inventory() for(var/i = 1 to storage_slots) new /obj/item/weapon/throwing_knife(src) -/obj/item/storage/belt/knifepouch/_item_insertion(obj/item/W, prevent_warning = 0) +/obj/item/storage/belt/knifepouch/_item_insertion(obj/item/new_item, prevent_warning = FALSE) ..() playsound(src, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) @@ -751,9 +798,9 @@ playsound(src, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) /obj/item/storage/belt/knifepouch/attack_hand(mob/user, mods) - if(draw_cooldown < world.time) + if(COOLDOWN_FINISHED(src, draw_cooldown)) ..() - draw_cooldown = world.time + draw_cooldown_interval + COOLDOWN_START(src, draw_cooldown, BAYONET_DRAW_DELAY) playsound(src, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) else to_chat(user, SPAN_WARNING("You need to wait before drawing another knife!")) @@ -856,6 +903,7 @@ var/drawSound = 'sound/weapons/gun_pistol_draw.ogg' ///Used to get flap overlay states as inserting a gun changes icon state. var/base_icon + var/gun_has_gamemode_skin can_hold = list( /obj/item/weapon/gun/pistol, /obj/item/ammo_magazine/pistol, @@ -889,6 +937,7 @@ for(var/slot in holster_slots) if(AM == holster_slots[slot]["gun"]) holster_slots[slot]["gun"] = null + update_gun_icon(slot) return @@ -918,6 +967,14 @@ */ playsound(src, drawSound, 7, TRUE) var/image/gun_underlay = image(icon, current_gun.base_gun_icon) + if(gun_has_gamemode_skin) + switch(SSmapping.configs[GROUND_MAP].camouflage_type) + if("snow") + gun_underlay = image(icon, "s_" + current_gun.base_gun_icon) + if("desert") + gun_underlay = image(icon, "d_" + current_gun.base_gun_icon) + if("classic") + gun_underlay = image(icon, "c_" + current_gun.base_gun_icon) gun_underlay.pixel_x = holster_slots[slot]["icon_x"] gun_underlay.pixel_y = holster_slots[slot]["icon_y"] gun_underlay.color = current_gun.color @@ -942,7 +999,7 @@ user.update_inv_s_store() //There are only two types here that can be inserted, and they are mutually exclusive. We only track the gun. -/obj/item/storage/belt/gun/can_be_inserted(obj/item/W, stop_messages) //We don't need to stop messages, but it can be left in. +/obj/item/storage/belt/gun/can_be_inserted(obj/item/W, mob/user, stop_messages = FALSE) //We don't need to stop messages, but it can be left in. . = ..() if(!.) return @@ -964,7 +1021,7 @@ to_chat(usr, SPAN_WARNING("[src] can't hold any more ammo.")) return FALSE -/obj/item/storage/belt/gun/_item_insertion(obj/item/W, prevent_warning = 0) +/obj/item/storage/belt/gun/_item_insertion(obj/item/W, prevent_warning = FALSE) if(isgun(W)) holstered_guns += W for(var/slot in holster_slots) @@ -1122,6 +1179,76 @@ for(var/i = 1 to storage_slots - 1) new /obj/item/ammo_magazine/pistol/highpower/black(src) +/obj/item/storage/belt/gun/m39 + name = "\improper M276 pattern M39 holster rig" + desc = "Special issue variant of the M276 designed to holster a M39 submachine gun and two spare magazines. Uncommonly issued to USCM support and specialist personnel." + icon_state = "m39_armor" + item_state = "s_marinebelt" + storage_slots = 3 + max_w_class = 5 + can_hold = list( + /obj/item/weapon/gun/smg/m39, + /obj/item/ammo_magazine/smg, + ) + holster_slots = list( + "1" = list( + "icon_x" = -11, + "icon_y" = -5)) + +#define MAXIMUM_MAGAZINE_COUNT 2 + +/obj/item/storage/belt/gun/xm51 + name = "\improper M276 pattern XM51 holster rig" + desc = "The M276 is the standard load-bearing equipment of the USCM. It consists of a modular belt with various clips. This version is for the XM51 breaching scattergun, allowing easier storage of the weapon. It features pouches for storing two magazines along with extra shells." + icon_state = "xm51_holster" + has_gamemode_skin = TRUE + gun_has_gamemode_skin = TRUE + storage_slots = 8 + max_w_class = 5 + can_hold = list( + /obj/item/weapon/gun/rifle/xm51, + /obj/item/ammo_magazine/rifle/xm51, + /obj/item/ammo_magazine/handful, + ) + holster_slots = list( + "1" = list( + "icon_x" = 10, + "icon_y" = -1)) + + //Keep a track of how many magazines are inside the belt. + var/magazines = 0 + +/obj/item/storage/belt/gun/xm51/attackby(obj/item/item, mob/user) + if(istype(item, /obj/item/ammo_magazine/shotgun/light/breaching)) + var/obj/item/ammo_magazine/shotgun/light/breaching/ammo_box = item + dump_ammo_to(ammo_box, user, ammo_box.transfer_handful_amount) + else + return ..() + +/obj/item/storage/belt/gun/xm51/can_be_inserted(obj/item/item, mob/user, stop_messages = FALSE) + . = ..() + if(magazines >= MAXIMUM_MAGAZINE_COUNT && istype(item, /obj/item/ammo_magazine/rifle/xm51)) + if(!stop_messages) + to_chat(usr, SPAN_WARNING("[src] can't hold any more magazines.")) + return FALSE + +/obj/item/storage/belt/gun/xm51/handle_item_insertion(obj/item/item, prevent_warning = FALSE, mob/user) + . = ..() + if(istype(item, /obj/item/ammo_magazine/rifle/xm51)) + magazines++ + +/obj/item/storage/belt/gun/xm51/remove_from_storage(obj/item/item as obj, atom/new_location) + . = ..() + if(istype(item, /obj/item/ammo_magazine/rifle/xm51)) + magazines-- + +//If a magazine disintegrates due to acid or something else while in the belt, remove it from the count. +/obj/item/storage/belt/gun/xm51/on_stored_atom_del(atom/movable/item) + if(istype(item, /obj/item/ammo_magazine/rifle/xm51)) + magazines-- + +#undef MAXIMUM_MAGAZINE_COUNT + /obj/item/storage/belt/gun/m44 name = "\improper M276 pattern M44 holster rig" desc = "The M276 is the standard load-bearing equipment of the USCM. It consists of a modular belt with various clips. This version is for the M44 magnum revolver, along with six small pouches for speedloaders. It smells faintly of hay." @@ -1275,6 +1402,16 @@ new /obj/item/ammo_magazine/revolver/mateba/highimpact/ap(src) new /obj/item/ammo_magazine/revolver/mateba/highimpact/ap(src) +/obj/item/storage/belt/gun/mateba/cmateba/special + +/obj/item/storage/belt/gun/mateba/cmateba/special/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/revolver/mateba/special()) + new /obj/item/ammo_magazine/revolver/mateba/highimpact(src) + new /obj/item/ammo_magazine/revolver/mateba/highimpact(src) + new /obj/item/ammo_magazine/revolver/mateba/highimpact(src) + new /obj/item/ammo_magazine/revolver/mateba/highimpact/ap(src) + new /obj/item/ammo_magazine/revolver/mateba/highimpact/ap(src) + /obj/item/storage/belt/gun/mateba/council name = "colonel's M276 pattern Mateba holster rig" desc = "The M276 is the standard load-bearing equipment of the USCM. \ @@ -1344,37 +1481,50 @@ /obj/item/storage/belt/gun/type47 name = "\improper Type 47 pistol holster rig" - desc = "This UPP-designed sidearm rig can very snugly and securely fit either a Nagant-Yamasaki revolver or a Korovin PK-9, and both their magazines or speedloaders. However, it lacks versatility in stored weaponry." + desc = "This UPP-designed sidearm rig can very snugly and securely fit a Type-73, NP92, or a ZHNK-72, and their magazines or speedloaders. However, it lacks versatility in stored weaponry." icon_state = "korovin_holster" item_state = "upp_belt" storage_slots = 7 can_hold = list( - /obj/item/weapon/gun/pistol/c99, - /obj/item/ammo_magazine/pistol/c99, - /obj/item/ammo_magazine/pistol/c99/tranq, - /obj/item/weapon/gun/revolver/nagant, + /obj/item/weapon/gun/pistol/t73, + /obj/item/ammo_magazine/pistol/t73, + /obj/item/ammo_magazine/pistol/t73_impact, + /obj/item/weapon/gun/pistol/np92, + /obj/item/ammo_magazine/pistol/np92, + /obj/item/ammo_magazine/pistol/np92/tranq, + /obj/item/weapon/gun/revolver/upp, /obj/item/ammo_magazine/revolver/upp, /obj/item/ammo_magazine/revolver/upp/shrapnel, ) holster_slots = list("1" = list("icon_x" = -1)) -/obj/item/storage/belt/gun/type47/PK9/fill_preset_inventory() - handle_item_insertion(new /obj/item/weapon/gun/pistol/c99/upp()) +/obj/item/storage/belt/gun/type47/np92/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/np92()) + for(var/i = 1 to storage_slots - 1) + new /obj/item/ammo_magazine/pistol/np92(src) + +/obj/item/storage/belt/gun/type47/np92/suppressed/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/np92/suppressed()) + for(var/i = 1 to storage_slots - 1) + new /obj/item/ammo_magazine/pistol/np92/suppressed(src) + +/obj/item/storage/belt/gun/type47/t73/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/t73()) for(var/i = 1 to storage_slots - 1) - new /obj/item/ammo_magazine/pistol/c99(src) + new /obj/item/ammo_magazine/pistol/t73(src) -/obj/item/storage/belt/gun/type47/PK9/tranq/fill_preset_inventory() - handle_item_insertion(new /obj/item/weapon/gun/pistol/c99/upp/tranq()) +/obj/item/storage/belt/gun/type47/t73/leader/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/t73/leader()) for(var/i = 1 to storage_slots - 1) - new /obj/item/ammo_magazine/pistol/c99/tranq(src) + new /obj/item/ammo_magazine/pistol/t73_impact(src) -/obj/item/storage/belt/gun/type47/NY/fill_preset_inventory() - handle_item_insertion(new /obj/item/weapon/gun/revolver/nagant()) +/obj/item/storage/belt/gun/type47/revolver/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/revolver/upp()) for(var/total_storage_slots in 1 to storage_slots - 1) new /obj/item/ammo_magazine/revolver/upp(src) -/obj/item/storage/belt/gun/type47/NY/shrapnel/fill_preset_inventory() - handle_item_insertion(new /obj/item/weapon/gun/revolver/nagant/shrapnel()) +/obj/item/storage/belt/gun/type47/revolver/shrapnel/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/revolver/upp/shrapnel()) for(var/total_storage_slots in 1 to storage_slots - 1) new /obj/item/ammo_magazine/revolver/upp/shrapnel(src) @@ -1600,28 +1750,31 @@ /obj/item/storage/belt/gun/utility name = "\improper M276 pattern combat toolbelt rig" desc = "The M276 pattern combat toolbelt rig is an alternative load-bearing equipment of the USCM for engineers conducting repairs within combat zones. It consists of a modular belt with various clips and pouches for tools along with a holster for a sidearm. Due to the bulk of the sidearm, it is unable to hold as many tools as its standard counterpart." - storage_slots = 6 + storage_slots = 9 icon_state = "combatutility" item_state= "utility" can_hold = list( /obj/item/weapon/gun/pistol, - /obj/item/weapon/gun/revolver/m44, + /obj/item/weapon/gun/revolver, /obj/item/weapon/gun/flare, /obj/item/tool/crowbar, /obj/item/tool/screwdriver, /obj/item/tool/weldingtool, /obj/item/tool/wirecutters, /obj/item/tool/wrench, + /obj/item/tool/shovel/etool, + /obj/item/tool/extinguisher/mini, /obj/item/device/multitool, /obj/item/device/flashlight, - /obj/item/stack/cable_coil, /obj/item/device/t_scanner, /obj/item/device/analyzer, + /obj/item/device/lightreplacer, /obj/item/weapon/gun/smg/nailgun/compact, - /obj/item/tool/shovel/etool, - /obj/item/tool/extinguisher/mini, + /obj/item/stack/cable_coil, /obj/item/cell, - /obj/item/device/lightreplacer, + /obj/item/ammo_magazine/pistol, + /obj/item/ammo_magazine/revolver, + /obj/item/ammo_magazine/handful, ) bypass_w_limit = list( /obj/item/tool/shovel/etool, @@ -1691,3 +1844,52 @@ item_state = "souto_man[length(contents)]" if(istype(user)) user.update_inv_belt() //Makes sure the onmob updates. + + + +//ROYAL MARINES COMMNADO + +/obj/item/storage/belt/marine/rmc + name = "\improper L70 pattern ammo load rig" + desc = "Good for carrying around extra ammo in the heat of the jungle. Made of special rot-resistant fabric." + icon_state = "rmc_ammo" + item_state = "rmc_ammo" + flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + has_gamemode_skin = FALSE + +/obj/item/storage/belt/marine/rmc/rmc_f90_ammo/fill_preset_inventory() + for(var/i in 1 to storage_slots) + new /obj/item/ammo_magazine/rifle/rmc_f90(src) + +/obj/item/storage/belt/marine/rmc/rmc_f90_ammo/marksman/fill_preset_inventory() + for(var/i in 1 to storage_slots) + new /obj/item/ammo_magazine/rifle/rmc_f90/marksman(src) + +/obj/item/storage/belt/medical/rmc + name = "\improper L75 pattern medical storage rig" + desc = "The L75 is the standard load-bearing equipment of the RMC. It consists of a modular belt with various clips. This version is designed to transport medical supplies and pistol ammunition. \nRight click its sprite and click \"toggle belt mode\" to take pills out of bottles by simply clicking them." + icon_state = "rmc_medical" + item_state = "rmc_medical" + flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + +/obj/item/storage/belt/gun/l905 + name = "\improper L905 gunbelt" + desc = "Finely-tooled leather, a L905, and six magazines. More than enough for the standard RMC commando." + icon_state = "rmc_pistol" + item_state = "rmc_pistol" + flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + storage_slots = 7 + can_hold = list( + /obj/item/weapon/gun/pistol/vp78, + /obj/item/ammo_magazine/pistol/vp78, + ) + has_gamemode_skin = FALSE + holster_slots = list( + "1" = list( + "icon_x" = -1, + "icon_y" = -3)) + +/obj/item/storage/belt/gun/l905/full/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/vp78()) + for(var/i in 1 to storage_slots - 1) + new /obj/item/ammo_magazine/pistol/vp78(src) diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 6266f0eef77d..8e4ffb90d2bd 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -151,6 +151,7 @@ RegisterSignal(SSdcs, COMSIG_GLOB_MODE_PRESETUP, PROC_REF(handle_delete_clash_contents)) /obj/item/storage/box/flashbangs/proc/handle_delete_clash_contents() + SIGNAL_HANDLER if(MODE_HAS_FLAG(MODE_FACTION_CLASH)) var/grenade_count = 0 var/grenades_desired = 4 @@ -760,3 +761,211 @@ else if(!isopened) isopened = 1 icon_state = "mealpackopened" + +//food boxes for storage in bulk + +//meat +/obj/item/storage/box/meat + name = "box of meat" + +/obj/item/storage/box/meat/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/meat/monkey(src) + +//fish +/obj/item/storage/box/fish + name = "box of fish" + +/obj/item/storage/box/fish/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/carpmeat(src) + +//grocery + +//milk +/obj/item/storage/box/milk + name = "box of milk" + +/obj/item/storage/box/milk/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/drinks/milk(src) + +//soymilk +/obj/item/storage/box/soymilk + name = "box of soymilk" + +/obj/item/storage/box/soymilk/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/drinks/soymilk(src) + +//enzyme +/obj/item/storage/box/enzyme + name = "box of enzyme" + +/obj/item/storage/box/enzyme/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/condiment/enzyme(src) + +//dry storage + +//flour +/obj/item/storage/box/flour + name = "box of flour" + +/obj/item/storage/box/flour/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/flour(src) + +//sugar +/obj/item/storage/box/sugar + name = "box of sugar" + +/obj/item/storage/box/sugar/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/condiment/sugar(src) + +//saltshaker +/obj/item/storage/box/saltshaker + name = "box of saltshakers" + +/obj/item/storage/box/saltshaker/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/condiment/saltshaker(src) + +//peppermill +/obj/item/storage/box/peppermill + name = "box of peppermills" + +/obj/item/storage/box/peppermill/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/condiment/peppermill(src) + +//mint +/obj/item/storage/box/mint + name = "box of mints" + +/obj/item/storage/box/mint/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/mint(src) + +// ORGANICS + +//apple +/obj/item/storage/box/apple + name = "box of apples" + +/obj/item/storage/box/apple/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/apple(src) + +//banana +/obj/item/storage/box/banana + name = "box of bananas" + +/obj/item/storage/box/banana/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/banana(src) + +//chanterelle +/obj/item/storage/box/chanterelles + name = "box of chanterelle" + +/obj/item/storage/box/chanterelle/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/mushroom/chanterelle(src) + +//cherries +/obj/item/storage/box/cherries + name = "box of cherries" + +/obj/item/storage/box/cherries/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/cherries(src) + +//chili +/obj/item/storage/box/chili + name = "box of chili" + +/obj/item/storage/box/chili/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/chili(src) + +//cabbage +/obj/item/storage/box/cabbage + name = "box of cabbages" + +/obj/item/storage/box/cabbage/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/cabbage(src) + +//carrot +/obj/item/storage/box/carrot + name = "box of carrots" + +/obj/item/storage/box/carrot/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/carrot(src) + +//corn +/obj/item/storage/box/corn + name = "box of corn" + +/obj/item/storage/box/corn/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/corn(src) + +//eggplant +/obj/item/storage/box/eggplant + name = "box of eggplants" + +/obj/item/storage/box/eggplant/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/eggplant(src) + +//lemon +/obj/item/storage/box/lemon + name = "box of lemons" + +/obj/item/storage/box/lemon/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/lemon(src) + +//lime +/obj/item/storage/box/lime + name = "box of limes" + +/obj/item/storage/box/lime/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/lime(src) + +//orange +/obj/item/storage/box/orange + name = "box of oranges" + +/obj/item/storage/box/orange/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/orange(src) + +//potato +/obj/item/storage/box/potato + name = "box of potatoes" + +/obj/item/storage/box/potato/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/potato(src) + +//tomato +/obj/item/storage/box/tomato + name = "box of tomatoes" + +/obj/item/storage/box/tomato/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/tomato(src) + +//whitebeet +/obj/item/storage/box/whitebeet + name = "box of whitebeet" + +/obj/item/storage/box/whitebeet/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/whitebeet(src) diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index 2e54d725511d..f7ada8ce220c 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -12,6 +12,8 @@ * Crayon Box * Cigarette Box * Cigar Box + * Match Box + * Vial Box */ /obj/item/storage/fancy @@ -20,9 +22,10 @@ name = "donut box" desc = "A box where round, heavenly, holey pastries reside." var/icon_type = "donut" + var/plural = "s" /obj/item/storage/fancy/update_icon() - icon_state = "[icon_type]box[contents.len]" + icon_state = "[icon_type]box[length(contents)]" /obj/item/storage/fancy/remove_from_storage(obj/item/W, atom/new_location) . = ..() @@ -32,17 +35,14 @@ /obj/item/storage/fancy/get_examine_text(mob/user) . = ..() - if(contents.len <= 0) - . += "There are no [src.icon_type]s left in the box." - else if(contents.len == 1) + if(!length(contents)) + . += "There are no [src.icon_type][plural] left in the box." + else if(length(contents) == 1) . += "There is one [src.icon_type] left in the box." else - . += "There are [src.contents.len] [src.icon_type]s in the box." - + . += "There are [length(src.contents)] [src.icon_type][plural] in the box." -/* - * Egg Box - */ +// EGG BOX /obj/item/storage/fancy/egg_box icon = 'icons/obj/items/food.dmi' @@ -59,9 +59,7 @@ new /obj/item/reagent_container/food/snacks/egg(src) return -/* - * Candle Box - */ +// CANDLE BOX /obj/item/storage/fancy/candle_box name = "candle pack" @@ -73,16 +71,14 @@ storage_slots = 5 throwforce = 2 flags_equip_slot = SLOT_WAIST - + can_hold = list(/obj/item/tool/candle) /obj/item/storage/fancy/candle_box/fill_preset_inventory() for(var/i=1; i <= storage_slots; i++) new /obj/item/tool/candle(src) return -/* - * Crayon Box - */ +// CRAYON BOX /obj/item/storage/fancy/crayons name = "box of crayons" @@ -107,11 +103,11 @@ overlays = list() //resets list overlays += image('icons/obj/items/crayons.dmi',"crayonbox") for(var/obj/item/toy/crayon/crayon in contents) - overlays += image('icons/obj/items/crayons.dmi',crayon.colourName) + overlays += image('icons/obj/items/crayons.dmi',crayon.colorName) /obj/item/storage/fancy/crayons/attackby(obj/item/W as obj, mob/user as mob) if(istype(W,/obj/item/toy/crayon)) - switch(W:colourName) + switch(W:colorName) if("mime") to_chat(usr, "This crayon is too sad to be contained in this box.") return @@ -120,9 +116,8 @@ return ..() -//////////// -//CIG PACK// -//////////// +// CIGARETTES BOX + /obj/item/storage/fancy/cigarettes icon = 'icons/obj/items/cigarettes.dmi' icon_state = "cigpacket" @@ -153,14 +148,14 @@ icon_state = "[initial(icon_state)]" /obj/item/storage/fancy/cigarettes/update_icon() - icon_state = "[initial(icon_state)][contents.len]" + icon_state = "[initial(icon_state)][length(contents)]" return /obj/item/storage/fancy/cigarettes/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) if(!istype(M, /mob)) return - if(M == user && user.zone_selected == "mouth" && contents.len > 0 && !user.wear_mask) + if(M == user && user.zone_selected == "mouth" && length(contents) > 0 && !user.wear_mask) var/obj/item/clothing/mask/cigarette/C = locate() in src if(C) remove_from_storage(C, get_turf(user)) @@ -223,9 +218,7 @@ default_cig_type = /obj/item/clothing/mask/cigarette/ucigarette storage_slots = 4 -///////////// -//CIGAR BOX// -///////////// +// CIGAR BOX /obj/item/storage/fancy/cigar name = "cigar case" @@ -253,14 +246,14 @@ icon_state = "[initial(icon_state)]" /obj/item/storage/fancy/cigar/update_icon() - icon_state = "[initial(icon_state)][contents.len]" + icon_state = "[initial(icon_state)][length(contents)]" return /obj/item/storage/fancy/cigar/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) if(!istype(M, /mob)) return - if(M == user && user.zone_selected == "mouth" && contents.len > 0 && !user.wear_mask) + if(M == user && user.zone_selected == "mouth" && length(contents) > 0 && !user.wear_mask) var/obj/item/clothing/mask/cigarette/cigar/C = locate() in src if(C) remove_from_storage(C, get_turf(user)) @@ -286,6 +279,8 @@ storage_slots = 1 default_cigar_type = /obj/item/clothing/mask/cigarette/cigar/tarbacks +// MATCH BOX + /obj/item/storage/fancy/cigar/matchbook name = "\improper Lucky Strikes matchbook" desc = "A small book of cheap paper matches. Good luck getting them to light. Made by Lucky Strikes, but you'll be anything but lucky when you burn your hand trying to light a match on this." @@ -298,6 +293,7 @@ w_class = SIZE_TINY var/light_chance = 70 //how likely you are to light the match on the book var/burn_chance = 20 //how likely you are to burn yourself once you light it + plural = "es" /obj/item/storage/fancy/cigar/matchbook/attackby(obj/item/tool/match/W as obj, mob/living/carbon/human/user as mob) if(!istype(user)) @@ -306,7 +302,7 @@ if(istype(W) && !W.heat_source && !W.burnt) if(prob(burn_chance)) to_chat(user, SPAN_WARNING("\The [W] lights, but you burn your hand in the process! Ouch!")) - user.apply_damage(3, BRUTE, pick("r_hand", "l_hand")) + user.apply_damage(3, BURN, pick("r_hand", "l_hand")) if((user.pain.feels_pain) && prob(25)) user.emote("scream") W.light_match() @@ -340,9 +336,7 @@ light_chance = 60 burn_chance = 40 -/* - * Vial Box - */ +// VIAL BOX /obj/item/storage/fancy/vials icon = 'icons/obj/items/vialbox.dmi' @@ -401,7 +395,7 @@ req_access = list(ACCESS_MARINE_MEDBAY) /obj/item/storage/lockbox/vials/update_icon(itemremoved = 0) - var/total_contents = src.contents.len - itemremoved + var/total_contents = length(src.contents) - itemremoved src.icon_state = "vialbox[total_contents]" src.overlays.Cut() if (!broken) diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index 2717b7c98501..3b2dbfa33aa4 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -8,18 +8,33 @@ //---------FIRST AID KITS--------- /obj/item/storage/firstaid name = "first-aid kit" - desc = "It's an emergency medical kit for those serious boo-boos." + desc = "It's an emergency medical kit for those serious boo-boos. With medical training you can fit this in a backpack." icon_state = "firstaid" throw_speed = SPEED_FAST throw_range = 8 use_sound = "toolbox" matter = list("plastic" = 2000) - cant_hold = list( - /obj/item/ammo_magazine, - /obj/item/explosive/grenade, - /obj/item/tool, - ) //to prevent powergaming. + can_hold = list( + /obj/item/device/healthanalyzer, + /obj/item/reagent_container/dropper, + /obj/item/reagent_container/pill, + /obj/item/reagent_container/glass/bottle, + /obj/item/reagent_container/syringe, + /obj/item/storage/pill_bottle, + /obj/item/stack/medical, + /obj/item/reagent_container/hypospray, + /obj/item/storage/syringe_case, + /obj/item/storage/surgical_case, + /obj/item/tool/surgery/surgical_line, + /obj/item/tool/surgery/synthgraft, + /obj/item/roller, + /obj/item/bodybag, + /obj/item/reagent_container/blood, + ) storage_flags = STORAGE_FLAGS_BOX + required_skill_for_nest_opening = SKILL_MEDICAL + required_skill_level_for_nest_opening = SKILL_MEDICAL_MEDIC + var/icon_full //icon state to use when kit is full var/possible_icons_full @@ -49,7 +64,7 @@ /obj/item/storage/firstaid/fire name = "fire first-aid kit" - desc = "It's an emergency medical kit for when the dropship ammo storage -spontaneously- burns down." + desc = "It's an emergency medical kit for when the dropship ammo storage -spontaneously- burns down. With medical training you can fit this in a backpack." icon_state = "ointment" item_state = "firstaid-ointment" possible_icons_full = list("ointment","firefirstaid") @@ -69,7 +84,7 @@ /obj/item/storage/firstaid/regular icon_state = "firstaid" - desc = "It's an emergency medical kit containing basic medication and equipment. No training required to use." + desc = "It's an emergency medical kit containing basic medication and equipment. No training required to use. With medical training you can fit this in a backpack." /obj/item/storage/firstaid/regular/fill_preset_inventory() new /obj/item/device/healthanalyzer(src) @@ -83,6 +98,11 @@ /obj/item/storage/firstaid/regular/empty/fill_preset_inventory() return +/obj/item/storage/firstaid/regular/response + desc = "It's an emergency medical kit containing basic medication and equipment. No training required to use. This one is simpler and requires no training to store." + required_skill_for_nest_opening = SKILL_MEDICAL + required_skill_level_for_nest_opening = SKILL_MEDICAL_DEFAULT + /obj/item/storage/firstaid/robust icon_state = "firstaid" @@ -100,7 +120,7 @@ /obj/item/storage/firstaid/toxin name = "toxin first-aid kit" - desc = "It's an emergency medical kit containing lifesaving anti-toxic medication." + desc = "It's an emergency medical kit containing lifesaving anti-toxic medication. With medical training you can fit this in a backpack." icon_state = "antitoxin" item_state = "firstaid-toxin" possible_icons_full = list("antitoxin","antitoxfirstaid","antitoxfirstaid2","antitoxfirstaid3") @@ -117,7 +137,7 @@ /obj/item/storage/firstaid/o2 name = "oxygen deprivation first-aid kit" - desc = "A box full of reoxygenating goodies." + desc = "A box full of reoxygenating goodies. With medical training you can fit this in a backpack." icon_state = "o2" item_state = "firstaid-o2" @@ -135,7 +155,7 @@ /obj/item/storage/firstaid/adv name = "advanced first-aid kit" - desc = "Contains more effective methods of medical treatment than a basic first-aid kit, such as burn and trauma kits." + desc = "Contains more effective methods of medical treatment than a basic first-aid kit, such as burn and trauma kits. With medical training you can fit this in a backpack." icon_state = "advfirstaid" item_state = "firstaid-advanced" @@ -151,16 +171,26 @@ /obj/item/storage/firstaid/adv/empty/fill_preset_inventory() return - - /obj/item/storage/firstaid/synth name = "synthetic repair kit" - desc = "Contains equipment to repair a damaged synthetic. A tag on the back reads: 'Does not contain a shocking tool to repair disabled synthetics, nor a scanning device to detect specific damage; pack seperately.'" + desc = "Contains equipment to repair a damaged synthetic. A tag on the back reads: 'Does not contain a shocking tool to repair disabled synthetics, nor a scanning device to detect specific damage; pack separately.' With medical training you can fit this in a backpack." icon_state = "bezerk" item_state = "firstaid-advanced" - cant_hold = list( - /obj/item/ammo_magazine, - /obj/item/explosive/grenade, + can_hold = list( + /obj/item/device/healthanalyzer, + /obj/item/reagent_container/dropper, + /obj/item/reagent_container/pill, + /obj/item/reagent_container/glass/bottle, + /obj/item/reagent_container/syringe, + /obj/item/storage/pill_bottle, + /obj/item/stack/medical, + /obj/item/reagent_container/hypospray, + /obj/item/storage/syringe_case, + /obj/item/tool/surgery/surgical_line, + /obj/item/tool/surgery/synthgraft, + /obj/item/stack/nanopaste, + /obj/item/stack/cable_coil, + /obj/item/tool/weldingtool, ) /obj/item/storage/firstaid/synth/fill_preset_inventory() @@ -170,14 +200,14 @@ new /obj/item/stack/nanopaste(src) new /obj/item/stack/cable_coil/white(src) new /obj/item/stack/cable_coil/white(src) - new /obj/item/tool/weldingtool/largetank(src) + new /obj/item/tool/weldingtool(src) /obj/item/storage/firstaid/synth/empty/fill_preset_inventory() return /obj/item/storage/firstaid/rad name = "radiation first-aid kit" - desc = "Contains treatment for radiation exposure" + desc = "Contains treatment for radiation exposure. With medical training you can fit this in a backpack." icon_state = "purplefirstaid" /obj/item/storage/firstaid/rad/fill_preset_inventory() @@ -193,12 +223,20 @@ /obj/item/storage/firstaid/surgical name = "basic field surgery kit" - desc = "Contains a surgical line, cautery, scalpel, hemostat, retractor, drapes and an oxycodone injector for tending wounds surgically." + desc = "Contains a surgical line, cautery, scalpel, hemostat, retractor, drapes and an oxycodone injector for tending wounds surgically. With medical training you can fit this in a backpack." icon_state = "bezerk" - cant_hold = list( - /obj/item/ammo_magazine, - /obj/item/explosive/grenade, - ) // we need surgery tools buddy + can_hold = list( + /obj/item/device/healthanalyzer, + /obj/item/reagent_container/dropper, + /obj/item/reagent_container/pill, + /obj/item/reagent_container/glass/bottle, + /obj/item/reagent_container/syringe, + /obj/item/storage/pill_bottle, + /obj/item/stack/medical, + /obj/item/reagent_container/hypospray, + /obj/item/storage/syringe_case, + /obj/item/tool/surgery, + ) /obj/item/storage/firstaid/surgical/fill_preset_inventory() new /obj/item/tool/surgery/surgical_line(src) @@ -212,7 +250,6 @@ /obj/item/storage/firstaid/surgical/empty/fill_preset_inventory() return - //---------SYRINGE CASE--------- /obj/item/storage/syringe_case @@ -265,7 +302,14 @@ /obj/item/storage/surgical_case name = "surgical case" - desc = "It's a medical case for storing basic surgical tools." + desc = "It's a medical case for storing basic surgical tools. It comes with a brief description for treating common internal bleeds.\ + \nBefore surgery: Verify correct location and patient is adequately numb to pain.\ + \nStep one: Open an incision at the site with the scalpel.\ + \nStep two: Clamp bleeders with the hemostat.\ + \nStep three: Draw back the skin with the retracter.\ + \nStep four: Patch the damaged vein with a surgical line.\ + \nStep five: Close the incision with a surgical line." + icon_state = "surgical_case" throw_speed = SPEED_FAST throw_range = 8 @@ -397,7 +441,7 @@ return ..() -/obj/item/storage/pill_bottle/can_be_inserted(obj/item/W, stop_messages = 0) +/obj/item/storage/pill_bottle/can_be_inserted(obj/item/W, mob/user, stop_messages = FALSE) . = ..() if(.) if(skilllock && !skillcheck(usr, SKILL_MEDICAL, SKILL_MEDICAL_MEDIC)) @@ -448,6 +492,22 @@ ..() update_icon() +/obj/item/storage/pill_bottle/attack_hand(mob/user, mods) + if(loc != user) + return ..() + + if(!mods || !mods["alt"]) + return ..() + + if(!ishuman(user)) + return ..() + + if(skilllock && !skillcheck(user, SKILL_MEDICAL, SKILL_MEDICAL_MEDIC)) + error_idlock(user) + return FALSE + + return ..() + /obj/item/storage/pill_bottle/proc/error_idlock(mob/user) to_chat(user, SPAN_WARNING("It must have some kind of ID lock...")) @@ -577,40 +637,35 @@ icon_state = "pill_canister11" max_storage_space = 5 skilllock = SKILL_MEDICAL_DEFAULT //CL can open it - var/idlock = 1 + var/idlock = TRUE pill_type_to_fill = /obj/item/reagent_container/pill/ultrazine/unmarked display_maptext = FALSE //for muh corporate secrets - Stan_Albatross - req_access = list(ACCESS_WY_CORPORATE) - var/req_role = JOB_CORPORATE_LIAISON + req_one_access = list(ACCESS_WY_EXEC, ACCESS_WY_RESEARCH) black_market_value = 35 /obj/item/storage/pill_bottle/ultrazine/proc/id_check(mob/user) if(!idlock) - return 1 + return TRUE - var/mob/living/carbon/human/H = user + var/mob/living/carbon/human/human_user = user - if(!allowed(user)) + if(!allowed(human_user)) to_chat(user, SPAN_NOTICE("It must have some kind of ID lock...")) - return 0 - - var/obj/item/card/id/I = H.wear_id - if(!istype(I)) //not wearing an ID - to_chat(H, SPAN_NOTICE("It must have some kind of ID lock...")) - return 0 + return FALSE - if(I.registered_name != H.real_name) - to_chat(H, SPAN_WARNING("Wrong ID card owner detected.")) - return 0 + var/obj/item/card/id/idcard = human_user.wear_id + if(!istype(idcard)) //not wearing an ID + to_chat(human_user, SPAN_NOTICE("It must have some kind of ID lock...")) + return FALSE - if(req_role && I.rank != req_role) - to_chat(H, SPAN_NOTICE("It must have some kind of ID lock...")) - return 0 + if(!idcard.check_biometrics(human_user)) + to_chat(human_user, SPAN_WARNING("Wrong ID card owner detected.")) + return FALSE - return 1 + return TRUE /obj/item/storage/pill_bottle/ultrazine/attack_self(mob/living/user) if(!id_check(user)) @@ -624,7 +679,7 @@ /obj/item/storage/pill_bottle/ultrazine/skillless name = "\improper Ultrazine pill bottle" - idlock = 0 + idlock = FALSE display_maptext = TRUE maptext_label = "Uz" diff --git a/code/game/objects/items/storage/internal.dm b/code/game/objects/items/storage/internal.dm index d83ca561374b..a491df12f086 100644 --- a/code/game/objects/items/storage/internal.dm +++ b/code/game/objects/items/storage/internal.dm @@ -25,10 +25,10 @@ //Items that use internal storage have the option of calling this to emulate default storage MouseDrop behaviour. //Returns 1 if the master item's parent's MouseDrop() should be called, 0 otherwise. It's strange, but no other way of //Doing it without the ability to call another proc's parent, really. -/obj/item/storage/internal/proc/handle_mousedrop(mob/user as mob, obj/over_object as obj) +/obj/item/storage/internal/proc/handle_mousedrop(mob/living/carbon/human/user, obj/over_object as obj) if(ishuman(user)) - if(user.lying) //Can't use your inventory when lying + if(user.body_position == LYING_DOWN) //Can't use your inventory when lying //what about stuns? don't argue return if(QDELETED(master_object)) @@ -84,8 +84,8 @@ //Items that use internal storage have the option of calling this to emulate default storage attack_hand behaviour. //Returns 1 if the master item's parent's attack_hand() should be called, 0 otherwise. //It's strange, but no other way of doing it without the ability to call another proc's parent, really. -/obj/item/storage/internal/proc/handle_attack_hand(mob/user as mob, mods) - if(user.lying) +/obj/item/storage/internal/proc/handle_attack_hand(mob/living/user as mob, mods) + if(user.body_position == LYING_DOWN) // what about stuns? huh? return FALSE if(ishuman(user)) @@ -173,7 +173,7 @@ var/list/garb_items var/slots_reserved_for_garb -/obj/item/storage/internal/headgear/can_be_inserted(obj/item/item, stop_messages) //We don't need to stop messages, but it can be left in. +/obj/item/storage/internal/headgear/can_be_inserted(obj/item/item, mob/user, stop_messages = FALSE) //We don't need to stop messages, but it can be left in. . = ..() if(!.) return diff --git a/code/game/objects/items/storage/large_holster.dm b/code/game/objects/items/storage/large_holster.dm index ef2bcfb7216a..3f653926f8b3 100644 --- a/code/game/objects/items/storage/large_holster.dm +++ b/code/game/objects/items/storage/large_holster.dm @@ -75,20 +75,20 @@ desc = "A large leather scabbard used to carry a M2132 machete. It can be strapped to the back or the armor." icon_state = "machete_holster" flags_equip_slot = SLOT_WAIST|SLOT_BACK - can_hold = list(/obj/item/weapon/claymore/mercsword/machete) + can_hold = list(/obj/item/weapon/sword/machete) /obj/item/storage/large_holster/machete/full/fill_preset_inventory() - new /obj/item/weapon/claymore/mercsword/machete(src) + new /obj/item/weapon/sword/machete(src) /obj/item/storage/large_holster/machete/arnold name = "\improper QH20 pattern M2100 custom machete scabbard" desc = "A large leather scabbard used to carry a M2100 \"Ngájhe\" machete. It can be strapped to the back or the armor." icon_state = "arnold-machete-pouch" flags_equip_slot = SLOT_WAIST|SLOT_BACK - can_hold = list(/obj/item/weapon/claymore/mercsword/machete) + can_hold = list(/obj/item/weapon/sword/machete) /obj/item/storage/large_holster/machete/arnold/full/fill_preset_inventory() - new /obj/item/weapon/claymore/mercsword/machete/arnold(src) + new /obj/item/weapon/sword/machete/arnold(src) /obj/item/storage/large_holster/katana name = "\improper katana scabbard" @@ -97,10 +97,10 @@ force = 12 attack_verb = list("bludgeoned", "struck", "cracked") flags_equip_slot = SLOT_WAIST|SLOT_BACK - can_hold = list(/obj/item/weapon/katana) + can_hold = list(/obj/item/weapon/sword/katana) /obj/item/storage/large_holster/katana/full/fill_preset_inventory() - new /obj/item/weapon/katana(src) + new /obj/item/weapon/sword/katana(src) /obj/item/storage/large_holster/ceremonial_sword name = "ceremonial sword scabbard" @@ -108,10 +108,10 @@ icon_state = "ceremonial_sword_holster"//object icon is duplicate of katana holster, needs new icon at some point. force = 12 flags_equip_slot = SLOT_WAIST - can_hold = list(/obj/item/weapon/claymore/mercsword/ceremonial) + can_hold = list(/obj/item/weapon/sword/ceremonial) /obj/item/storage/large_holster/ceremonial_sword/full/fill_preset_inventory() - new /obj/item/weapon/claymore/mercsword/ceremonial(src) + new /obj/item/weapon/sword/ceremonial(src) /obj/item/storage/large_holster/m39 name = "\improper M276 pattern M39 holster rig" @@ -249,9 +249,16 @@ if(!ishuman(user) || user.is_mob_incapacitated()) return FALSE - var/obj/item/weapon/gun/flamer/M240T/F = user.get_active_hand() - if(!istype(F)) - to_chat(usr, "You must be holding the M240-T incinerator unit to use [src]") + if(user.back != src) + to_chat(user, SPAN_WARNING("[src] must be equipped before you can switch types.")) + return + + if(!linked_flamer) + to_chat(user, SPAN_WARNING("An incinerator unit must be linked in order to switch fuel types.")) + return + + if(user.get_active_hand() != linked_flamer) + to_chat(user, SPAN_WARNING("You must be holding [linked_flamer] to use [src].")) return if(!active_fuel) @@ -267,14 +274,13 @@ else active_fuel = fuelB - for(var/X in actions) - var/datum/action/A = X - A.update_button_icon() + for(var/datum/action/action_added as anything in actions) + action_added.update_button_icon() to_chat(user, "You switch the fuel tank to [active_fuel.caliber]") playsound(src, 'sound/machines/click.ogg', 25, TRUE) - F.current_mag = active_fuel - F.update_icon() + linked_flamer.current_mag = active_fuel + linked_flamer.update_icon() return TRUE @@ -326,7 +332,7 @@ /obj/item/storage/large_holster/fuelpack/get_examine_text(mob/user) . = ..() if(contents.len) - . += "It is storing \a M240-T incinerator unit." + . += "It is storing a M240-T incinerator unit." if (get_dist(user, src) <= 1) if(fuel) . += "The [fuel.caliber] currently contains: [round(fuel.get_ammo_percent())]% fuel." @@ -364,7 +370,7 @@ /datum/action/item_action/specialist/toggle_fuel/can_use_action() var/mob/living/carbon/human/H = owner - if(istype(H) && !H.is_mob_incapacitated() && !H.lying && holder_item == H.back) + if(istype(H) && !H.is_mob_incapacitated() && H.body_position == STANDING_UP && holder_item == H.back) return TRUE /datum/action/item_action/specialist/toggle_fuel/action_activate() diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm index aa9d91921fae..afeaff89ae07 100644 --- a/code/game/objects/items/storage/lockbox.dm +++ b/code/game/objects/items/storage/lockbox.dm @@ -51,14 +51,13 @@ /obj/item/storage/lockbox/loyalty name = "\improper Wey-Yu equipment lockbox" - req_access = list(ACCESS_WY_CORPORATE) + req_access = null + req_one_access = list(ACCESS_WY_EXEC, ACCESS_WY_SECURITY) /obj/item/storage/lockbox/loyalty/fill_preset_inventory() - new /obj/item/ammo_magazine/pistol/mod88(src) - new /obj/item/ammo_magazine/pistol/mod88(src) - new /obj/item/ammo_magazine/pistol/mod88/rubber(src) - new /obj/item/ammo_magazine/pistol/mod88/rubber(src) - + new /obj/item/ammo_magazine/pistol/es4(src) + new /obj/item/ammo_magazine/pistol/es4(src) + new /obj/item/ammo_magazine/pistol/es4(src) /obj/item/storage/lockbox/cluster name = "lockbox of cluster flashbangs" diff --git a/code/game/objects/items/storage/misc.dm b/code/game/objects/items/storage/misc.dm index eb6f100f6e8b..424a4f5be0e8 100644 --- a/code/game/objects/items/storage/misc.dm +++ b/code/game/objects/items/storage/misc.dm @@ -124,6 +124,20 @@ new /obj/item/weapon/gun/pistol/clfpistol(src) new /obj/item/ammo_magazine/pistol/clfpistol(src) +/obj/item/storage/box/upp //war trophy luger + name = "Type 73 storing case" + desc = "A small case containing the once-standard sidearm of the UPP, the Type 73, and two additional magazines. The contained sidearm is probably looted off a dead officer or from a captured stockpile, either way this thing is worth a pretty penny." + icon = 'icons/obj/items/storage.dmi' + icon_state = "matebacase" + w_class = SIZE_MEDIUM + max_w_class = SIZE_MEDIUM + storage_slots = 3 + +/obj/item/storage/box/upp/fill_preset_inventory() + new /obj/item/weapon/gun/pistol/t73(src) + new /obj/item/ammo_magazine/pistol/t73(src) + new /obj/item/ammo_magazine/pistol/t73(src) + /obj/item/storage/box/co2_knife name = "M8 cartridge bayonet packaging" desc = "Contains one M8 Cartridge Bayonet and two sister CO2 cartridges. Thanks for being a dedicated Boots magazine subscriber!" diff --git a/code/game/objects/items/storage/pouch.dm b/code/game/objects/items/storage/pouch.dm index 198e5b3b9960..5be788dce25c 100644 --- a/code/game/objects/items/storage/pouch.dm +++ b/code/game/objects/items/storage/pouch.dm @@ -58,29 +58,12 @@ max_w_class = SIZE_MEDIUM cant_hold = list( //Prevent inventory bloat /obj/item/storage/firstaid, - /obj/item/storage/bible + /obj/item/storage/bible, + /obj/item/storage/box, ) storage_slots = null max_storage_space = 2 -/obj/item/storage/pouch/general/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/ammo_magazine/shotgun)) - var/obj/item/ammo_magazine/shotgun/M = W - dump_ammo_to(M,user) - else if(istype(W, /obj/item/storage/box/nade_box) || istype(W, /obj/item/storage/box/m94)) - dump_into(W, user) - else - return ..() - -/obj/item/storage/pouch/general/can_be_inserted(obj/item/W, stop_messages) - . = ..() - if(. && W.w_class == SIZE_MEDIUM) - for(var/obj/item/I in return_inv()) - if(I.w_class >= SIZE_MEDIUM) - if(!stop_messages) - to_chat(usr, SPAN_NOTICE("[src] is already too bulky with [I].")) - return FALSE - /obj/item/storage/pouch/general/medium name = "medium general pouch" desc = "A general-purpose pouch used to carry a variety of differently sized items." @@ -128,10 +111,10 @@ icon_state = "bayonet" storage_slots = 5 storage_flags = STORAGE_FLAGS_POUCH|STORAGE_USING_DRAWING_METHOD|STORAGE_ALLOW_QUICKDRAW - var/draw_cooldown = 0 - var/draw_cooldown_interval = 1 SECONDS var/default_knife_type = /obj/item/weapon/throwing_knife + COOLDOWN_DECLARE(draw_cooldown) + /obj/item/storage/pouch/bayonet/Initialize() . = ..() for(var/total_storage_slots in 1 to storage_slots) @@ -149,9 +132,9 @@ playsound(src, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) /obj/item/storage/pouch/bayonet/attack_hand(mob/user, mods) - if(draw_cooldown < world.time) + if(COOLDOWN_FINISHED(src, draw_cooldown)) ..() - draw_cooldown = world.time + draw_cooldown_interval + COOLDOWN_START(src, draw_cooldown, BAYONET_DRAW_DELAY) playsound(src, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) else to_chat(user, SPAN_WARNING("You need to wait before drawing another knife!")) @@ -159,9 +142,9 @@ /obj/item/storage/pouch/survival name = "survival pouch" - desc = "It can carry flashlights, a pill, a crowbar, metal sheets, and some bandages." + desc = "A pouch given to colonists in the event of an emergency." icon_state = "tools" - storage_slots = 6 + storage_slots = 7 max_w_class = SIZE_MEDIUM can_hold = list( /obj/item/device/flashlight, @@ -170,6 +153,7 @@ /obj/item/stack/medical/bruise_pack, /obj/item/device/radio, /obj/item/attachable/bayonet, + /obj/item/stack/medical/splint, ) /obj/item/storage/pouch/survival/full/fill_preset_inventory() @@ -179,12 +163,12 @@ new /obj/item/stack/medical/bruise_pack(src) new /obj/item/device/radio(src) new /obj/item/attachable/bayonet(src) - + new /obj/item/stack/medical/splint(src) /obj/item/storage/pouch/survival/synth name = "synth survival pouch" desc = "An emergency pouch given to synthetics in the event of an emergency." icon_state = "tools" - storage_slots = 7 + storage_slots = 6 max_w_class = SIZE_MEDIUM can_hold = list( /obj/item/device/flashlight, @@ -197,7 +181,6 @@ ) /obj/item/storage/pouch/survival/synth/full/fill_preset_inventory() - new /obj/item/device/flashlight(src) new /obj/item/tool/crowbar/red(src) new /obj/item/tool/weldingtool(src) new /obj/item/stack/cable_coil(src) @@ -222,13 +205,13 @@ desc = "Contains a painkiller autoinjector, first-aid autoinjector, some ointment, and some bandages." /obj/item/storage/pouch/firstaid/full/fill_preset_inventory() - new /obj/item/reagent_container/hypospray/autoinjector/bicaridine/skillless(src) - new /obj/item/reagent_container/hypospray/autoinjector/kelotane/skillless(src) - new /obj/item/reagent_container/hypospray/autoinjector/tramadol/skillless(src) - new /obj/item/reagent_container/hypospray/autoinjector/emergency/skillless(src) + new /obj/item/reagent_container/hypospray/autoinjector/bicaridine(src) + new /obj/item/reagent_container/hypospray/autoinjector/kelotane(src) + new /obj/item/reagent_container/hypospray/autoinjector/tramadol(src) + new /obj/item/reagent_container/hypospray/autoinjector/emergency(src) /obj/item/storage/pouch/firstaid/full/alternate/fill_preset_inventory() - new /obj/item/reagent_container/hypospray/autoinjector/tricord/skillless(src) + new /obj/item/reagent_container/hypospray/autoinjector/tricord(src) new /obj/item/stack/medical/splint(src) new /obj/item/stack/medical/ointment(src) new /obj/item/stack/medical/bruise_pack(src) @@ -248,7 +231,7 @@ new /obj/item/reagent_container/hypospray/autoinjector/bicaridine/skillless(src) new /obj/item/reagent_container/hypospray/autoinjector/kelotane/skillless(src) new /obj/item/reagent_container/hypospray/autoinjector/tramadol/skillless(src) - new /obj/item/reagent_container/hypospray/autoinjector/emergency/skillless(src) + new /obj/item/reagent_container/hypospray/autoinjector/emergency(src) new /obj/item/stack/medical/bruise_pack(src) @@ -281,7 +264,7 @@ current_gun = null update_gun_icon() -/obj/item/storage/pouch/pistol/can_be_inserted(obj/item/W, stop_messages) //A little more detailed than just 'the pouch is full'. +/obj/item/storage/pouch/pistol/can_be_inserted(obj/item/W, mob/user, stop_messages = FALSE) //A little more detailed than just 'the pouch is full'. . = ..() if(!.) return @@ -345,7 +328,7 @@ else if(AM == tablet) tablet = null -/obj/item/storage/pouch/pistol/command/can_be_inserted(obj/item/I, stop_messages) +/obj/item/storage/pouch/pistol/command/can_be_inserted(obj/item/I, mob/user, stop_messages = FALSE) . = ..() if(!.) return @@ -468,13 +451,6 @@ for(var/i = 1 to storage_slots) new /obj/item/ammo_magazine/pistol/vp78(src) -/obj/item/storage/pouch/magazine/shotgun/attackby(obj/item/W, mob/living/user) - if(istype(W, /obj/item/ammo_magazine/shotgun)) - var/obj/item/ammo_magazine/shotgun/M = W - dump_ammo_to(M, user, M.transfer_handful_amount) - else - return ..() - /obj/item/storage/pouch/magazine/pulse_rifle/fill_preset_inventory() for(var/i = 1 to storage_slots) new /obj/item/ammo_magazine/rifle(src) @@ -612,13 +588,12 @@ name = "explosive pouch" desc = "It can carry grenades, plastic explosives, mine boxes, and other explosives." icon_state = "large_explosive" - storage_slots = 3 + storage_slots = 6 max_w_class = SIZE_MEDIUM can_hold = list( /obj/item/explosive/plastic, /obj/item/explosive/mine, /obj/item/explosive/grenade, - /obj/item/storage/box/explosive_mines, ) /obj/item/storage/pouch/explosive/attackby(obj/item/W, mob/user) @@ -708,6 +683,18 @@ new /obj/item/reagent_container/hypospray/autoinjector/stimulant/redemption_stimulant(src) new /obj/item/reagent_container/hypospray/autoinjector/stimulant/speed_stimulant(src) +/obj/item/storage/pouch/medical/socmed/not_op/fill_preset_inventory() + new /obj/item/device/healthanalyzer(src) + new /obj/item/stack/medical/splint(src) + new /obj/item/stack/medical/advanced/bruise_pack(src) + new /obj/item/stack/medical/advanced/ointment(src) + new /obj/item/reagent_container/hypospray/autoinjector/bicaridine(src) + new /obj/item/reagent_container/hypospray/autoinjector/kelotane(src) + new /obj/item/reagent_container/hypospray/autoinjector/oxycodone(src) + new /obj/item/reagent_container/hypospray/autoinjector/emergency(src) + new /obj/item/reagent_container/hypospray/autoinjector/emergency(src) + new /obj/item/tool/extinguisher/mini(src) + /obj/item/storage/pouch/medical/socmed/dutch name = "\improper Dutch's Medical Pouch" desc = "A pouch bought from a black market trader by Dutch quite a few years ago. Rumoured to be stolen from secret USCM assets. Its contents have been slowly used up and replaced over the years." @@ -816,27 +803,56 @@ new /obj/item/reagent_container/syringe(src) /obj/item/storage/pouch/medkit - name = "medkit pouch" - max_w_class = SIZE_MEDIUM - storage_flags = STORAGE_FLAGS_POUCH|STORAGE_USING_DRAWING_METHOD + name = "medical kit pouch" + storage_flags = STORAGE_FLAGS_POUCH icon_state = "medkit" - desc = "It's specifically made to hold a medkit." - can_hold = list(/obj/item/storage/firstaid) - -/obj/item/storage/pouch/medkit/handle_mmb_open(mob/user) - var/obj/item/storage/firstaid/FA = locate() in contents - if(FA) - FA.open(user) - return - return ..() - + desc = "It's specifically made to hold medical items. Requires medical skills to use effectively." + storage_slots = 7 + can_hold_skill = list( + /obj/item/device/healthanalyzer = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/reagent_container/dropper = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/reagent_container/pill = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/reagent_container/glass/bottle = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/reagent_container/syringe = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/storage/pill_bottle = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/stack/medical = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/reagent_container/hypospray = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/storage/syringe_case = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/storage/surgical_case = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/tool/surgery/surgical_line = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/tool/surgery/synthgraft = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/roller = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/bodybag = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/reagent_container/blood = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + ) + can_hold_skill_only = TRUE /obj/item/storage/pouch/medkit/full/fill_preset_inventory() - new /obj/item/storage/firstaid/regular(src) + new /obj/item/device/healthanalyzer(src) + new /obj/item/reagent_container/hypospray/autoinjector/skillless(src) + new /obj/item/reagent_container/hypospray/autoinjector/skillless/tramadol(src) + new /obj/item/reagent_container/hypospray/autoinjector/inaprovaline(src) + new /obj/item/stack/medical/bruise_pack(src) + new /obj/item/stack/medical/ointment(src) + new /obj/item/stack/medical/splint(src) /obj/item/storage/pouch/medkit/full_advanced/fill_preset_inventory() - new /obj/item/storage/firstaid/adv(src) + new /obj/item/reagent_container/hypospray/autoinjector/tricord(src) + new /obj/item/stack/medical/advanced/bruise_pack(src) + new /obj/item/stack/medical/advanced/bruise_pack(src) + new /obj/item/stack/medical/advanced/bruise_pack(src) + new /obj/item/stack/medical/advanced/ointment(src) + new /obj/item/stack/medical/advanced/ointment(src) + new /obj/item/stack/medical/splint(src) +/obj/item/storage/pouch/medkit/full/toxin/fill_preset_inventory() + new /obj/item/device/healthanalyzer(src) + new /obj/item/storage/pill_bottle/antitox(src) + new /obj/item/storage/pill_bottle/antitox(src) + new /obj/item/roller(src) + new /obj/item/stack/medical/splint(src) + new /obj/item/stack/medical/advanced/bruise_pack(src) + new /obj/item/stack/medical/advanced/ointment(src) /obj/item/storage/pouch/pressurized_reagent_canister name = "Pressurized Reagent Canister Pouch" @@ -931,6 +947,9 @@ update_icon() /obj/item/storage/pouch/pressurized_reagent_canister/afterattack(obj/target, mob/user, flag) //refuel at fueltanks & chem dispensers. + if(get_dist(user,target) > 1) + return ..() + if(!inner) to_chat(user, SPAN_WARNING("[src] has no internal container!")) return ..() @@ -950,15 +969,14 @@ if(!istype(target, /obj/structure/reagent_dispensers/fueltank)) return ..() - if(get_dist(user,target) > 1) - return ..() + var/obj/O = target if(!O.reagents || O.reagents.reagent_list.len < 1) to_chat(user, SPAN_WARNING("[O] is empty!")) return - var/amt_to_remove = Clamp(O.reagents.total_volume, 0, inner.volume) + var/amt_to_remove = clamp(O.reagents.total_volume, 0, inner.volume) if(!amt_to_remove) to_chat(user, SPAN_WARNING("[O] is empty!")) return @@ -971,7 +989,7 @@ fill_autoinjector(contents[1]) //Top up our inner reagent canister after filling up the injector - amt_to_remove = Clamp(O.reagents.total_volume, 0, inner.volume) + amt_to_remove = clamp(O.reagents.total_volume, 0, inner.volume) if(amt_to_remove) O.reagents.trans_to(inner, amt_to_remove) @@ -1055,7 +1073,10 @@ to_chat(usr, SPAN_WARNING("There is no container inside this pouch!")) return - usr.put_in_any_hand_if_possible(inner, disable_warning = TRUE) + var/had_empty_hand = usr.put_in_any_hand_if_possible(inner, disable_warning = TRUE) + if(!had_empty_hand) + usr.drop_inv_item_on_ground(inner) + inner = null update_icon() @@ -1086,8 +1107,8 @@ name = "flare pouch" desc = "A pouch designed to hold flares. Refillable with an M94 flare pack." max_w_class = SIZE_SMALL - storage_slots = 8 - max_storage_space = 8 + storage_slots = 16 + max_storage_space = 16 storage_flags = STORAGE_FLAGS_POUCH|STORAGE_USING_DRAWING_METHOD icon_state = "flare" can_hold = list(/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare/signal) @@ -1172,23 +1193,37 @@ /obj/item/storage/pouch/tools name = "tools pouch" - desc = "It's designed to hold maintenance tools - screwdriver, wrench, cable coil, etc. It also has a hook for an entrenching tool." + desc = "It's designed to hold maintenance tools - screwdriver, wrench, cable coil, etc. It also has a hook for an entrenching tool or light replacer." storage_slots = 4 max_w_class = SIZE_MEDIUM icon_state = "tools" can_hold = list( - /obj/item/tool/wirecutters, - /obj/item/tool/shovel/etool, - /obj/item/tool/screwdriver, /obj/item/tool/crowbar, + /obj/item/tool/screwdriver, /obj/item/tool/weldingtool, - /obj/item/device/multitool, + /obj/item/tool/wirecutters, /obj/item/tool/wrench, - /obj/item/stack/cable_coil, /obj/item/tool/extinguisher/mini, /obj/item/tool/shovel/etool, + /obj/item/stack/cable_coil, + /obj/item/weapon/gun/smg/nailgun/compact, + /obj/item/cell, + /obj/item/circuitboard, + /obj/item/stock_parts, + /obj/item/device/demo_scanner, + /obj/item/device/reagent_scanner, + /obj/item/device/assembly, + /obj/item/device/multitool, + /obj/item/device/flashlight, + /obj/item/device/t_scanner, + /obj/item/device/analyzer, + /obj/item/explosive/plastic, + /obj/item/device/lightreplacer, + ) + bypass_w_limit = list( + /obj/item/tool/shovel/etool, + /obj/item/device/lightreplacer, ) - bypass_w_limit = list(/obj/item/tool/shovel/etool) /obj/item/storage/pouch/tools/tactical name = "tactical tools pouch" @@ -1236,6 +1271,12 @@ new /obj/item/explosive/plastic(src) new /obj/item/explosive/plastic(src) +/obj/item/storage/pouch/tools/uppsynth/fill_preset_inventory() + new /obj/item/tool/crowbar(src) + new /obj/item/tool/wirecutters(src) + new /obj/item/tool/weldingtool(src) + new /obj/item/tool/wrench(src) + /obj/item/storage/pouch/sling name = "sling strap" desc = "Keeps a single item attached to a strap." @@ -1253,7 +1294,7 @@ if(slung && slung.loc != src) . += "\The [slung] is attached to the sling." -/obj/item/storage/pouch/sling/can_be_inserted(obj/item/I, stop_messages = FALSE) +/obj/item/storage/pouch/sling/can_be_inserted(obj/item/I, mob/user, stop_messages = FALSE) if(slung) if(slung != I) if(!stop_messages) @@ -1352,7 +1393,7 @@ item_state = "machete_holster" max_w_class = SIZE_LARGE storage_flags = STORAGE_FLAGS_POUCH|STORAGE_USING_DRAWING_METHOD|STORAGE_ALLOW_QUICKDRAW - can_hold = list(/obj/item/weapon/claymore/mercsword/machete) + can_hold = list(/obj/item/weapon/sword/machete) var/sheathe_sound = 'sound/weapons/gun_rifle_draw.ogg' var/draw_sound = 'sound/weapons/gun_rifle_draw.ogg' @@ -1372,4 +1413,4 @@ playsound(src, draw_sound, vol = 15, vary = TRUE) /obj/item/storage/pouch/machete/full/fill_preset_inventory() - new /obj/item/weapon/claymore/mercsword/machete(src) + new /obj/item/weapon/sword/machete(src) diff --git a/code/game/objects/items/storage/smartpack.dm b/code/game/objects/items/storage/smartpack.dm index 8d6057e16ce9..d012e773617b 100644 --- a/code/game/objects/items/storage/smartpack.dm +++ b/code/game/objects/items/storage/smartpack.dm @@ -22,9 +22,6 @@ var/show_exoskeleton = TRUE - var/flashlight_cooldown = 0 //Cooldown for toggling the light - var/light_state = FALSE //Is the light on or off - var/battery_charge = SMARTPACK_MAX_POWER_STORED //How much power are we storing var/activated_form = FALSE var/immobile_form = FALSE @@ -83,7 +80,7 @@ else LAZYSET(item_state_slots, WEAR_BACK, initial(item_state)) - if(light_state) + if(light_on) overlays += "+lamp_on" else overlays += "+lamp_off" @@ -116,7 +113,7 @@ var/image/ret = ..() var/light = "+lamp_on" - if(!light_state) + if(!light_on) light = "+lamp_off" var/image/lamp = overlay_image('icons/mob/humans/onmob/back.dmi', light, color, RESET_COLOR) @@ -134,66 +131,50 @@ else to_chat(M, SPAN_DANGER("[name] beeps, \"Unathorized user!\"")) - if(light_state && loc != M) - M.SetLuminosity(BACKPACK_LIGHT_LEVEL, FALSE, src) - SetLuminosity(0) ..() /obj/item/storage/backpack/marine/smartpack/dropped(mob/living/M) for(var/datum/action/human_action/smartpack/S in M.actions) S.remove_from(M) - if(light_state && loc != M) - toggle_light(M) + if(light_on && loc != M) + turn_light(M, toggle_on = FALSE) if(immobile_form) immobile_form = FALSE M.status_flags |= CANPUSH M.anchored = FALSE - M.unfreeze() + REMOVE_TRAIT(M, TRAIT_IMMOBILIZED, TRAIT_SOURCE_EQUIPMENT(WEAR_BACK)) ..() -/obj/item/storage/backpack/marine/smartpack/Destroy() - if(ismob(loc)) - loc.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) - . = ..() - /obj/item/storage/backpack/marine/smartpack/attack_self(mob/user) ..() - if(!isturf(user.loc) || flashlight_cooldown > world.time || !ishuman(user)) + if(!isturf(user.loc) || !ishuman(user)) return var/mob/living/carbon/human/H = user if(H.back != src) return - toggle_light(user) + turn_light(user, toggle_on = !light_on) return TRUE -/obj/item/storage/backpack/marine/smartpack/proc/toggle_light(mob/user) - flashlight_cooldown = world.time + 20 //2 seconds cooldown every time the light is toggled - if(light_state) //Turn it off. - if(user) - user.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) - playsound(src, 'sound/handling/click_2.ogg', 50, TRUE) - else //Turn it on. - if(user) - user.SetLuminosity(BACKPACK_LIGHT_LEVEL, FALSE, src) - else - SetLuminosity(BACKPACK_LIGHT_LEVEL) +/obj/item/storage/backpack/marine/smartpack/turn_light(mob/user, toggle_on, cooldown, sparks, forced, light_again) + . = ..() + if(. != CHECKS_PASSED) + return - light_state = !light_state + if(toggle_on) + set_light_range(BACKPACK_LIGHT_LEVEL) + set_light_on(TRUE) + else + set_light_on(FALSE) + playsound(src, 'sound/handling/click_2.ogg', 50, TRUE) playsound(src, 'sound/handling/light_on_1.ogg', 50, TRUE) - update_icon(user) - /obj/item/storage/backpack/marine/smartpack/proc/protective_form(mob/living/carbon/human/user) if(!istype(user) || activated_form || immobile_form) return @@ -242,7 +223,7 @@ user.remove_filter("synth_protective_form") -/obj/item/storage/backpack/marine/smartpack/proc/immobile_form(mob/user) +/obj/item/storage/backpack/marine/smartpack/proc/immobile_form(mob/living/user) if(activated_form) return @@ -255,7 +236,7 @@ battery_charge -= IMMOBILE_COST user.status_flags &= ~CANPUSH user.anchored = TRUE - user.frozen = TRUE + ADD_TRAIT(user, TRAIT_IMMOBILIZED, TRAIT_SOURCE_EQUIPMENT(WEAR_BACK)) to_chat(user, SPAN_DANGER("[name] beeps, \"You are anchored in place and cannot be moved.\"")) to_chat(user, SPAN_INFO("The current charge reads [battery_charge]/[SMARTPACK_MAX_POWER_STORED]")) @@ -267,7 +248,7 @@ else user.status_flags |= CANPUSH user.anchored = FALSE - user.unfreeze() + REMOVE_TRAIT(user, TRAIT_IMMOBILIZED, TRAIT_SOURCE_EQUIPMENT(WEAR_BACK)) to_chat(user, SPAN_DANGER("[name] beeps, \"You can now move again.\"")) user.remove_filter("synth_immobile_form") diff --git a/code/game/objects/items/storage/storage.dm b/code/game/objects/items/storage/storage.dm index dd8f10a51559..51a73d2f0444 100644 --- a/code/game/objects/items/storage/storage.dm +++ b/code/game/objects/items/storage/storage.dm @@ -22,7 +22,7 @@ var/atom/movable/screen/storage/storage_start = null //storage UI var/atom/movable/screen/storage/storage_continue = null var/atom/movable/screen/storage/storage_end = null - var/datum/item_storage_box/stored_ISB = null // This contains what previously was known as stored_start, stored_continue, and stored_end + var/datum/item_storage_box/stored_ISB //! This contains what previously was known as stored_start, stored_continue, and stored_end var/atom/movable/screen/close/closer = null var/foldable = null var/use_sound = "rustle" //sound played when used. null for no sound. @@ -31,6 +31,17 @@ var/storage_flags = STORAGE_FLAGS_DEFAULT var/has_gamemode_skin = FALSE ///Whether to use map-variant skins. + ///Special can_holds that require a skill to insert, it is an associated list of typepath = list(skilltype, skilllevel) + var/list/can_hold_skill = list() + + ///Dictates whether or not we only check for items in can_hold_skill rather than can_hold or free usage + var/can_hold_skill_only = FALSE + + /// The required skill for opening this storage if it is inside another storage type + var/required_skill_for_nest_opening = null + + /// The required level of a skill for opening this storage if it is inside another storage type + var/required_skill_level_for_nest_opening = null /obj/item/storage/MouseDrop(obj/over_object as obj) if(CAN_PICKUP(usr, src)) @@ -93,25 +104,24 @@ return if(user.s_active) user.s_active.hide_from(user) - user.client.screen -= boxes - user.client.screen -= storage_start - user.client.screen -= storage_continue - user.client.screen -= storage_end - user.client.screen -= closer - user.client.screen -= contents - user.client.screen += closer - user.client.screen += contents + user.client.remove_from_screen(boxes) + user.client.remove_from_screen(storage_start) + user.client.remove_from_screen(storage_continue) + user.client.remove_from_screen(storage_end) + user.client.remove_from_screen(closer) + user.client.remove_from_screen(contents) + user.client.add_to_screen(closer) + user.client.add_to_screen(contents) if(storage_slots) - user.client.screen += boxes + user.client.add_to_screen(boxes) else - user.client.screen += storage_start - user.client.screen += storage_continue - user.client.screen += storage_end + user.client.add_to_screen(storage_start) + user.client.add_to_screen(storage_continue) + user.client.add_to_screen(storage_end) user.s_active = src add_to_watchers(user) - return /obj/item/storage/proc/add_to_watchers(mob/user) if(!(user in content_watchers)) @@ -126,12 +136,12 @@ ///Used to hide the storage's inventory screen. /obj/item/storage/proc/hide_from(mob/user as mob) if(user.client) - user.client.screen -= src.boxes - user.client.screen -= storage_start - user.client.screen -= storage_continue - user.client.screen -= storage_end - user.client.screen -= src.closer - user.client.screen -= src.contents + user.client.remove_from_screen(src.boxes) + user.client.remove_from_screen(storage_start) + user.client.remove_from_screen(storage_continue) + user.client.remove_from_screen(storage_end) + user.client.remove_from_screen(src.closer) + user.client.remove_from_screen(src.contents) if(user.s_active == src) user.s_active = null del_from_watchers(user) @@ -148,6 +158,12 @@ /obj/item/storage/proc/open(mob/user) if(user.s_active == src) //Spam prevention. return + + if(istype(loc, /obj/item/storage) && required_skill_for_nest_opening) + if(!user || user.skills?.get_skill_level(required_skill_for_nest_opening) < required_skill_level_for_nest_opening) + to_chat(user, SPAN_NOTICE("You can't seem to open [src] while it is in [loc].")) + return + if(!opened) orient2hud() opened = 1 @@ -196,16 +212,17 @@ if (storage_flags & STORAGE_SHOW_FULLNESS) boxes.update_fullness(src) -var/list/global/item_storage_box_cache = list() +GLOBAL_LIST_EMPTY_TYPED(item_storage_box_cache, /datum/item_storage_box) /datum/item_storage_box - var/atom/movable/screen/storage/start = null - var/atom/movable/screen/storage/continued = null - var/atom/movable/screen/storage/end = null - /// The index that indentifies me inside item_storage_box_cache + var/atom/movable/screen/storage/start + var/atom/movable/screen/storage/continued + var/atom/movable/screen/storage/end + /// The index that indentifies me inside GLOB.item_storage_box_cache var/index /datum/item_storage_box/New() + . = ..() start = new() start.icon_state = "stored_start" continued = new() @@ -217,7 +234,7 @@ var/list/global/item_storage_box_cache = list() QDEL_NULL(start) QDEL_NULL(continued) QDEL_NULL(end) - item_storage_box_cache[index] = null // Or would it be better to -= src? + GLOB.item_storage_box_cache -= index return ..() /obj/item/storage/proc/space_orient_objs(list/obj/item/display_contents) @@ -255,7 +272,7 @@ var/list/global/item_storage_box_cache = list() click_border_start.Add(startpoint) click_border_end.Add(endpoint) - if(!item_storage_box_cache[isb_index]) + if(!GLOB.item_storage_box_cache[isb_index]) var/datum/item_storage_box/box = new() var/matrix/M_start = matrix() var/matrix/M_continue = matrix() @@ -268,9 +285,9 @@ var/list/global/item_storage_box_cache = list() box.continued.apply_transform(M_continue) box.end.apply_transform(M_end) box.index = isb_index - item_storage_box_cache[isb_index] = box + GLOB.item_storage_box_cache[isb_index] = box - var/datum/item_storage_box/ISB = item_storage_box_cache[isb_index] + var/datum/item_storage_box/ISB = GLOB.item_storage_box_cache[isb_index] stored_ISB = ISB storage_start.overlays += ISB.start @@ -378,32 +395,48 @@ var/list/global/item_storage_box_cache = list() return ///Returns TRUE if there is room for the given item. W_class_override allows checking for just a generic W_class, meant for checking shotgun handfuls without having to spawn and delete one just to check. -/obj/item/storage/proc/has_room(obj/item/W as obj, W_class_override = null) +/obj/item/storage/proc/has_room(obj/item/new_item, W_class_override = null) if(storage_slots != null && contents.len < storage_slots) return TRUE //At least one open slot. //calculate storage space only for containers that don't have slots if (storage_slots == null) - var/sum_storage_cost = W_class_override ? W_class_override : W.get_storage_cost() //Takes the override if there is one, the given item otherwise. + var/sum_storage_cost = W_class_override ? W_class_override : new_item.get_storage_cost() //Takes the override if there is one, the given item otherwise. for(var/obj/item/I in contents) sum_storage_cost += I.get_storage_cost() //Adds up the combined storage costs which will be in the storage item if the item is added to it. if(sum_storage_cost <= max_storage_space) //Adding this item won't exceed the maximum. return TRUE -/obj/item/storage/proc/can_hold_type(type_to_hold) +#define SKILL_TYPE_INDEX 1 +#define SKILL_LEVEL_INDEX 2 + +/obj/item/storage/proc/can_hold_type(type_to_hold, mob/user) + if(length(can_hold_skill)) + for(var/can_hold_skill_typepath in can_hold_skill) + if(ispath(type_to_hold, can_hold_skill_typepath) && user.skills?.get_skill_level(can_hold_skill[can_hold_skill_typepath][SKILL_TYPE_INDEX]) >= can_hold_skill[can_hold_skill_typepath][SKILL_LEVEL_INDEX]) + return TRUE + if(can_hold_skill_only) + return FALSE + for(var/A in cant_hold) if(ispath(type_to_hold, A)) return FALSE + if(length(can_hold)) for(var/A in can_hold) if(ispath(type_to_hold, A)) return TRUE + return FALSE + return TRUE +#undef SKILL_TYPE_INDEX +#undef SKILL_LEVEL_INDEX + //This proc return 1 if the item can be picked up and 0 if it can't. //Set the stop_messages to stop it from printing messages -/obj/item/storage/proc/can_be_inserted(obj/item/W as obj, stop_messages = 0) +/obj/item/storage/proc/can_be_inserted(obj/item/W, mob/user, stop_messages = FALSE) if(!istype(W) || (W.flags_item & NODROP)) return //Not an item if(src.loc == W) @@ -419,7 +452,7 @@ var/list/global/item_storage_box_cache = list() to_chat(usr, SPAN_ALERT("[W] is ignited, you can't store it!")) return - if(!can_hold_type(W.type)) + if(!can_hold_type(W.type, user)) if(!stop_messages) to_chat(usr, SPAN_NOTICE("[src] cannot hold [W].")) return @@ -455,27 +488,27 @@ That's done by can_be_inserted(). Its checks are whether the item exists, is an The stop_warning parameter will stop the insertion message from being displayed. It is intended for cases where you are inserting multiple items at once, such as when picking up all the items on a tile with one click. user can be null, it refers to the potential mob doing the insertion.**/ -/obj/item/storage/proc/handle_item_insertion(obj/item/W, prevent_warning = 0, mob/user) - if(!istype(W)) +/obj/item/storage/proc/handle_item_insertion(obj/item/new_item, prevent_warning = FALSE, mob/user) + if(!istype(new_item)) return FALSE - if(user && W.loc == user) - if(!user.drop_inv_item_to_loc(W, src)) + if(user && new_item.loc == user) + if(!user.drop_inv_item_to_loc(new_item, src)) return FALSE else - W.forceMove(src) + new_item.forceMove(src) - _item_insertion(W, prevent_warning, user) + _item_insertion(new_item, prevent_warning, user) return TRUE /**Inserts the item. Separate proc because handle_item_insertion isn't guaranteed to insert and it therefore isn't safe to override it before calling parent. Updates icon when done. Can be called directly but only if the item was spawned inside src - handle_item_insertion is safer. W is always an item. stop_warning prevents messaging. user may be null.**/ -/obj/item/storage/proc/_item_insertion(obj/item/W, prevent_warning = 0, mob/user) +/obj/item/storage/proc/_item_insertion(obj/item/W, prevent_warning = FALSE, mob/user) W.on_enter_storage(src) if(user) if (user.client && user.s_active != src) - user.client.screen -= W + user.client.remove_from_screen(W) add_fingerprint(user) if(!prevent_warning) var/visidist = W.w_class >= 3 ? 3 : 1 @@ -501,7 +534,7 @@ W is always an item. stop_warning prevents messaging. user may be null.**/ /obj/item/storage/proc/_item_removal(obj/item/W as obj, atom/new_location) for(var/mob/M in can_see_content()) if(M.client) - M.client.screen -= W + M.client.remove_from_screen(W) if(new_location) if(ismob(new_location)) @@ -526,11 +559,6 @@ W is always an item. stop_warning prevents messaging. user may be null.**/ //This proc is called when you want to place an item into the storage item. /obj/item/storage/attackby(obj/item/W as obj, mob/user as mob) ..() - - if(isrobot(user)) - to_chat(user, SPAN_NOTICE(" You're a robot. No.")) - return //Robots can't interact with storage items. - return attempt_item_insertion(W, FALSE, user) /obj/item/storage/equipped(mob/user, slot, silent) @@ -544,7 +572,7 @@ W is always an item. stop_warning prevents messaging. user may be null.**/ ..() /obj/item/storage/proc/attempt_item_insertion(obj/item/W as obj, prevent_warning = FALSE, mob/user as mob) - if(!can_be_inserted(W)) + if(!can_be_inserted(W, user)) return W.add_fingerprint(user) @@ -721,25 +749,26 @@ W is always an item. stop_warning prevents messaging. user may be null.**/ to_chat(user, SPAN_WARNING("[ammo_dumping] is empty.")) return TRUE -/obj/item/storage/proc/dump_into(obj/item/storage/M, mob/user) +/obj/item/storage/proc/dump_into(obj/item/storage/origin_storage, mob/user) + if(user.action_busy) return - if(!M.contents.len) - to_chat(user, SPAN_WARNING("[M] is empty.")) + if(!origin_storage.contents.len) + to_chat(user, SPAN_WARNING("[origin_storage] is empty.")) return - if(!has_room(M.contents[1])) //Does it have room for the first item to be inserted? + if(!has_room(origin_storage.contents[1])) //Does it have room for the first item to be inserted? to_chat(user, SPAN_WARNING("[src] is full.")) return - to_chat(user, SPAN_NOTICE("You start refilling [src] with [M].")) + to_chat(user, SPAN_NOTICE("You start refilling [src] with [origin_storage].")) if(!do_after(user, 1.5 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC)) return - for(var/obj/item/I in M) - if(!has_room(I)) + for(var/obj/item/new_item in origin_storage) + if(!has_room(new_item)) break - M.remove_from_storage(I) - handle_item_insertion(I, TRUE, user) //quiet insertion + origin_storage.remove_from_storage(new_item) + handle_item_insertion(new_item, TRUE, user) //quiet insertion playsound(user.loc, "rustle", 15, TRUE, 6) return TRUE @@ -799,9 +828,9 @@ W is always an item. stop_warning prevents messaging. user may be null.**/ storage_close(watcher) /obj/item/storage/proc/dump_objectives() - for(var/obj/item/I in src) - if(I.is_objective) - I.forceMove(loc) + for(var/obj/item/cur_item in src) + if(cur_item.is_objective) + remove_from_storage(cur_item, loc) /obj/item/storage/Destroy() @@ -818,6 +847,7 @@ W is always an item. stop_warning prevents messaging. user may be null.**/ return ..() /obj/item/storage/emp_act(severity) + . = ..() if(!istype(src.loc, /mob/living)) for(var/obj/O in contents) O.emp_act(severity) diff --git a/code/game/objects/items/storage/surgical_tray.dm b/code/game/objects/items/storage/surgical_tray.dm index d86918c697b2..16c0d1352961 100644 --- a/code/game/objects/items/storage/surgical_tray.dm +++ b/code/game/objects/items/storage/surgical_tray.dm @@ -4,7 +4,7 @@ icon_state = "surgical_tray" flags_atom = FPRINT|CONDUCT w_class = SIZE_LARGE //Should not fit in backpacks - storage_slots = 13 + storage_slots = 14 max_storage_space = 24 use_sound = "toolbox" matter = list("plastic" = 3000) @@ -31,6 +31,7 @@ new /obj/item/tool/surgery/FixOVein(src) new /obj/item/stack/nanopaste(src) new /obj/item/tool/surgery/surgical_line(src) + new /obj/item/tool/surgery/synthgraft(src) /obj/item/storage/surgical_tray/update_icon() if(!contents.len) diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index e6ebbadd9122..db0d4e3b269b 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -56,7 +56,7 @@ var/color = pick("red","yellow","green","blue","pink","orange","cyan","white") new /obj/item/tool/screwdriver(src) new /obj/item/tool/wirecutters(src) - new /obj/item/device/t_scanner(src) + new /obj/item/circuitboard/apc(src) new /obj/item/tool/crowbar(src) new /obj/item/stack/cable_coil(src,30,color) new /obj/item/stack/cable_coil(src,30,color) diff --git a/code/game/objects/items/storage/toolkit.dm b/code/game/objects/items/storage/toolkit.dm new file mode 100644 index 000000000000..e3171eca40f6 --- /dev/null +++ b/code/game/objects/items/storage/toolkit.dm @@ -0,0 +1,45 @@ +/obj/item/storage/toolkit + name = "engineer kit" + desc = "An combat engineering toolkit intended to carry electrical and mechanical supplies into combat. With engineering training you can fit this in a backpack." + icon_state = "toolkit" + item_state = "fulton" + throw_speed = SPEED_FAST + throw_range = 8 + use_sound = "toolbox" + matter = list("plastic" = 2000) + can_hold = list( + /obj/item/circuitboard, + /obj/item/device/flashlight, + /obj/item/clothing/glasses/welding, + /obj/item/device/analyzer, + /obj/item/device/demo_scanner, + /obj/item/device/reagent_scanner, + /obj/item/device/t_scanner, + /obj/item/stack/cable_coil, + /obj/item/cell, + /obj/item/device/assembly, + /obj/item/stock_parts, + /obj/item/explosive/plastic, + ) + storage_flags = STORAGE_FLAGS_BOX + required_skill_for_nest_opening = SKILL_ENGINEER + required_skill_level_for_nest_opening = SKILL_ENGINEER_ENGI + + ///icon state to use when kit is full + var/icon_full + +/obj/item/storage/toolkit/Initialize() + . = ..() + + icon_full = initial(icon_state) + + update_icon() + +/obj/item/storage/toolkit/update_icon() + if(content_watchers || !length(contents)) + icon_state = "toolkit_empty" + else + icon_state = icon_full + +/obj/item/storage/toolkit/empty/fill_preset_inventory() + return diff --git a/code/game/objects/items/tools/experimental_tools.dm b/code/game/objects/items/tools/experimental_tools.dm index d27272881e1e..221aa279a53b 100644 --- a/code/game/objects/items/tools/experimental_tools.dm +++ b/code/game/objects/items/tools/experimental_tools.dm @@ -279,7 +279,7 @@ return if(ishuman(user)) - if(user.stat || user.blinded || user.lying) + if(user.stat || user.blinded || user.body_position == LYING_DOWN) return if(attaching) diff --git a/code/game/objects/items/tools/flame_tools.dm b/code/game/objects/items/tools/flame_tools.dm index db35d3300ae7..d5cd708f29b3 100644 --- a/code/game/objects/items/tools/flame_tools.dm +++ b/code/game/objects/items/tools/flame_tools.dm @@ -42,10 +42,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/tool/candle/Destroy() if(heat_source) STOP_PROCESSING(SSobj, src) - if(ismob(src.loc)) - src.loc.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) + . = ..() /obj/item/tool/candle/attackby(obj/item/W as obj, mob/user as mob) @@ -65,7 +62,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM flavor_text = SPAN_NOTICE("[usr] lights [src].") for(var/mob/O in viewers(usr, null)) O.show_message(flavor_text, SHOW_MESSAGE_VISIBLE) - SetLuminosity(CANDLE_LUM) + set_light(CANDLE_LUM) update_icon() START_PROCESSING(SSobj, src) @@ -80,34 +77,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM return update_icon() - - /obj/item/tool/candle/attack_self(mob/user) ..() if(heat_source) heat_source = 0 update_icon() - SetLuminosity(0) - user.SetLuminosity(0, FALSE, src) + set_light(0) STOP_PROCESSING(SSobj, src) - -/obj/item/tool/candle/pickup(mob/user) - . = ..() - if(heat_source) - SetLuminosity(0) - user.SetLuminosity(CANDLE_LUM, FALSE, src) - - -/obj/item/tool/candle/dropped(mob/user) - ..() - if(heat_source && src.loc != user) - user.SetLuminosity(0, FALSE, src) - SetLuminosity(CANDLE_LUM) - - - /////////// //MATCHES// /////////// @@ -120,6 +98,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/smoketime = 10 SECONDS var/burnt_name = "burnt match" w_class = SIZE_TINY + light_range = 2 + light_power = 1 attack_verb = list("burnt", "singed") @@ -149,6 +129,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM burn_out(user) return ..() +/obj/item/tool/match/turn_light(mob/user, toggle_on) + . = ..() + if(. == NO_LIGHT_STATE_CHANGE) + return + + set_light_on(toggle_on) + /obj/item/tool/match/proc/light_match() if(heat_source || burnt) return @@ -156,10 +143,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM playsound(src.loc,"match",15, 1, 3) damtype = "burn" icon_state = "[initial(icon_state)]_lit" - if(ismob(loc)) - loc.SetLuminosity(2, FALSE, src) - else - SetLuminosity(2) + turn_light(toggle_on = TRUE) START_PROCESSING(SSobj, src) update_icon() return TRUE @@ -170,9 +154,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM damtype = "brute" icon_state = "[initial(icon_state)]_burnt" item_state = "cigoff" - if(user && loc != user) - user.SetLuminosity(0, FALSE, src) - SetLuminosity(0) + turn_light(toggle_on = FALSE) name = burnt_name desc = "A match. This one has seen better days." STOP_PROCESSING(SSobj, src) @@ -183,12 +165,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_state = "papermatch" burnt_name = "burnt paper match" -/obj/item/tool/lighter/dropped(mob/user) - if(heat_source && src.loc != user) - user.SetLuminosity(0, FALSE, src) - SetLuminosity(2) - return ..() - ////////////////// //FINE SMOKABLES// ////////////////// @@ -204,6 +180,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM flags_atom = CAN_BE_SYRINGED attack_verb = list("burnt", "singed") blood_overlay_type = "" + light_color = LIGHT_COLOR_ORANGE /// Note - these are in masks.dmi not in cigarette.dmi var/icon_on = "cigon" var/icon_off = "cigoff" @@ -256,12 +233,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM light(SPAN_NOTICE("[user] fiddles with [W], and manages to light their [name].")) else if(istype(W, /obj/item/attachable/attached_gun/flamer)) - light(SPAN_NOTICE("[user] lights their [src] with the [W].")) + light(SPAN_NOTICE("[user] lights their [name] with [W].")) else if(istype(W, /obj/item/weapon/gun/flamer)) var/obj/item/weapon/gun/flamer/F = W if(!(F.flags_gun_features & GUN_TRIGGER_SAFETY)) - light(SPAN_NOTICE("[user] lights their [src] with the pilot light of the [F].")) + light(SPAN_NOTICE("[user] lights their [name] with the pilot light of [F].")) else to_chat(user, SPAN_WARNING("Turn on the pilot light first!")) @@ -269,20 +246,20 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/obj/item/weapon/gun/G = W for(var/slot in G.attachments) if(istype(G.attachments[slot], /obj/item/attachable/attached_gun/flamer)) - light(SPAN_NOTICE("[user] lights their [src] with [G.attachments[slot]].")) + light(SPAN_NOTICE("[user] lights their [name] with [G.attachments[slot]].")) break else if(istype(W, /obj/item/tool/surgery/cautery)) - light(SPAN_NOTICE("[user] lights their [src] with the [W].")) + light(SPAN_NOTICE("[user] lights their [name] with [W].")) else if(istype(W, /obj/item/clothing/mask/cigarette)) var/obj/item/clothing/mask/cigarette/C = W if(C.item_state == icon_on) - light(SPAN_NOTICE("[user] lights their [src] with the [C] after a few attempts.")) + light(SPAN_NOTICE("[user] lights their [name] with [C] after a few attempts.")) else if(istype(W, /obj/item/tool/candle)) if(W.heat_source > 200) - light(SPAN_NOTICE("[user] lights their [src] with the [W] after a few attempts.")) + light(SPAN_NOTICE("[user] lights their [name] with [W] after a few attempts.")) return @@ -332,6 +309,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM reagents.handle_reactions() icon_state = icon_on item_state = icon_on + set_light_range(1) + set_light_power(0.5) + set_light_on(TRUE) if(iscarbon(loc)) var/mob/living/carbon/C = loc if(C.r_hand == src) @@ -365,7 +345,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM return var/mob/living/carbon/C = loc - if(prob(15)) // so it's not an instarape in case of acid + if(prob(15)) reagents.reaction(C, INGEST) reagents.trans_to(C, REAGENTS_METABOLISM) else // else just remove some of the reagents @@ -386,7 +366,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(user == M) user.visible_message(SPAN_NOTICE(type_butt ? "[user] calmly drops and treads on the lit [src], putting it out instantly." : "[user] puts out \the [src].")) else - to_chat(M, SPAN_NOTICE("Your [src] goes out.")) + to_chat(M, SPAN_NOTICE("Your [src.name] goes out.")) STOP_PROCESSING(SSobj, src) if(type_butt) var/turf/T = get_turf(src) @@ -397,6 +377,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM qdel(src) . = butt else + set_light_on(FALSE) heat_source = 0 icon_state = icon_off item_state = icon_off @@ -548,12 +529,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM light(SPAN_NOTICE("[user] fiddles with [W], and manages to light their [name] with the power of science.")) else if(istype(W, /obj/item/attachable/attached_gun/flamer)) - light(SPAN_NOTICE("[user] lights their [src] with the [W], bet that would have looked cooler if it was attached to something first!")) + light(SPAN_NOTICE("[user] lights their [name] with [W], bet that would have looked cooler if it was attached to something first!")) else if(istype(W, /obj/item/weapon/gun/flamer)) var/obj/item/weapon/gun/flamer/F = W if(!(F.flags_gun_features & GUN_TRIGGER_SAFETY)) - light(SPAN_NOTICE("[user] lights their [src] with the pilot light of the [F], the glint of pyromania in their eye.")) + light(SPAN_NOTICE("[user] lights their [name] with the pilot light of [F], the glint of pyromania in their eye.")) else to_chat(user, SPAN_WARNING("Turn on the pilot light first!")) @@ -565,16 +546,16 @@ CIGARETTE PACKETS ARE IN FANCY.DM break else if(istype(W, /obj/item/tool/surgery/cautery)) - light(SPAN_NOTICE("[user] lights their [src] with the [W], that can't be sterile!")) + light(SPAN_NOTICE("[user] lights their [name] with [W], that can't be sterile!")) else if(istype(W, /obj/item/clothing/mask/cigarette)) var/obj/item/clothing/mask/cigarette/C = W if(C.item_state == icon_on) - light(SPAN_NOTICE("[user] lights their [src] with the [C] after a few attempts.")) + light(SPAN_NOTICE("[user] lights their [name] with [C] after a few attempts.")) else if(istype(W, /obj/item/tool/candle)) if(W.heat_source > 200) - light(SPAN_NOTICE("[user] lights their [src] with the [W] after a few attempts.")) + light(SPAN_NOTICE("[user] lights their [name] with [W] after a few attempts.")) ///////////////// //SMOKING PIPES// @@ -661,7 +642,39 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_off = "cobpipeoff" smoketime = 800 SECONDS +/obj/item/clothing/mask/electronic_cigarette + name = "electronic cigarette" + desc = "An electronic cigarette by The American Tobacco Company, who also made Lucky Strikes." + icon_state = "cigoff" + item_state = "cigoff" + w_class = SIZE_SMALL + flags_equip_slot = SLOT_EAR|SLOT_FACE + var/icon_on = "cigon" + var/icon_off = "cigoff" + var/enabled = FALSE +/obj/item/clothing/mask/electronic_cigarette/update_icon() + . = ..() + if(enabled) + icon_state = icon_on + item_state = icon_on + return + icon_state = icon_off + item_state = icon_off + +/obj/item/clothing/mask/electronic_cigarette/attack_self(mob/user) + . = ..() + to_chat(user, SPAN_NOTICE("You [enabled ? "disable" : "enable"] [src].")) + enabled = !enabled + update_icon() + +/obj/item/clothing/mask/electronic_cigarette/cigar + name = "electronic cigar" + desc = "A luxury electronic cigar, with its labels scratched off. Where could this be from?" + icon_state = "cigar_off" + item_state = "cigar_off" + icon_on = "cigar_on" + icon_off = "cigar_off" ///////// //ZIPPO// @@ -672,6 +685,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon = 'icons/obj/items/items.dmi' icon_state = "lighter_g" item_state = "lighter_g" + light_color = LIGHT_COLOR_LAVA var/icon_on = "lighter_g_on" var/icon_off = "lighter_g" var/clr = "g" @@ -707,6 +721,22 @@ CIGARETTE PACKETS ARE IN FANCY.DM log_admin("[user] has engraved \the [src] with engraving \"[str]\". (CKEY: ([user.ckey]))") +/obj/item/tool/lighter/zippo/black + name = "black Zippo lighter" + desc = "A fancy black Zippo lighter. Ignite in style." + icon_state = "blackzippo" + item_state = "blackzippo" + icon_on = "blackzippoon" + icon_off = "blackzippo" + +/obj/item/tool/lighter/zippo/blue + name = "blue Zippo lighter" + desc = "A fancy blue Zippo lighter. Ignite in style." + icon_state = "bluezippo" + item_state = "bluezippo" + icon_on = "bluezippoon" + icon_off = "bluezippo" + /obj/item/tool/lighter/zippo/gold name = "golden Zippo lighter" desc = "A gold-anodized Zippo lighter. Ostentatious, but it certainly stands out." @@ -716,6 +746,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_off = "goldzippo" black_market_value = 30 +/obj/item/tool/lighter/zippo/executive + name = "Weyland-Yutani executive Zippo lighter" + desc = "A remarkable Zippo lighter embellished in the Company's black and gold shade." + icon_state = "execzippo" + item_state = "execzippo" + icon_on = "execzippoon" + icon_off = "execzippo" + black_market_value = 40 + /obj/item/tool/lighter/random /obj/item/tool/lighter/random/Initialize() @@ -725,13 +764,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_off = "lighter_[clr]" icon_state = icon_off -/obj/item/tool/lighter/Destroy() - if(ismob(src.loc)) - src.loc.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) - . = ..() - /obj/item/tool/lighter/attack_self(mob/living/user) if(user.r_hand == src || user.l_hand == src) if(!heat_source) @@ -744,7 +776,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM else playsound(src.loc,"lighter",10, 1, 3) if(prob(95)) - user.visible_message(SPAN_NOTICE("After a few attempts, [user] manages to light the [src].")) + user.visible_message(SPAN_NOTICE("After a few attempts, [user] manages to light [src].")) else to_chat(user, SPAN_WARNING("You burn yourself while lighting the lighter.")) @@ -752,9 +784,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM user.apply_damage(2,BURN,"l_hand") else user.apply_damage(2,BURN,"r_hand") - user.visible_message(SPAN_NOTICE("After a few attempts, [user] manages to light the [src], they however burn their finger in the process.")) + user.visible_message(SPAN_NOTICE("After a few attempts, [user] manages to light [src], they however burn their finger in the process.")) - user.SetLuminosity(2, FALSE, src) + set_light_range(2) + set_light_on(TRUE) START_PROCESSING(SSobj, src) else turn_off(user, 0) @@ -769,12 +802,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM item_state = icon_off if(!silent) if(istype(src, /obj/item/tool/lighter/zippo) ) - bearer.visible_message("You hear a quiet click, as [bearer] shuts off [src] without even looking at what they're doing.") + bearer.visible_message(SPAN_ROSE("You hear a quiet click, as [bearer] shuts off [src] without even looking at what they're doing.")) playsound(src.loc,"zippo_close",10, 1, 3) else - bearer.visible_message(SPAN_NOTICE("[bearer] quietly shuts off the [src].")) + bearer.visible_message(SPAN_NOTICE("[bearer] quietly shuts off [src].")) - bearer.SetLuminosity(0, FALSE, src) + set_light_on(FALSE) STOP_PROCESSING(SSobj, src) return 1 return 0 @@ -797,19 +830,3 @@ CIGARETTE PACKETS ARE IN FANCY.DM cig.light(SPAN_NOTICE("[user] holds the [name] out for [M], and lights the [cig.name].")) else ..() - -/obj/item/tool/lighter/process() - - -/obj/item/tool/lighter/pickup(mob/user) - . = ..() - if(heat_source) - SetLuminosity(0) - user.SetLuminosity(2, FALSE, src) - - -/obj/item/tool/lighter/dropped(mob/user) - if(heat_source && src.loc != user) - user.SetLuminosity(0, FALSE, src) - SetLuminosity(2) - return ..() diff --git a/code/game/objects/items/tools/kitchen_tools.dm b/code/game/objects/items/tools/kitchen_tools.dm index 98974f25be29..2cff941be8d6 100644 --- a/code/game/objects/items/tools/kitchen_tools.dm +++ b/code/game/objects/items/tools/kitchen_tools.dm @@ -45,6 +45,10 @@ return ..() if (reagents.total_volume > 0) + var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25) + if(fullness > NUTRITION_HIGH) + to_chat(user, SPAN_WARNING("[user == M ? "You" : "They"] don't feel like eating more right now.")) + return ..() reagents.set_source_mob(user) reagents.trans_to_ingest(M, reagents.total_volume) if(M == user) @@ -214,7 +218,7 @@ var/cooldown = 0 /obj/item/tool/kitchen/tray/attack(mob/living/carbon/M, mob/living/carbon/user) - to_chat(user, SPAN_WARNING("You accidentally slam yourself with the [src]!")) + to_chat(user, SPAN_WARNING("You accidentally slam yourself with [src]!")) user.apply_effect(1, WEAKEN) user.take_limb_damage(2) diff --git a/code/game/objects/items/tools/maintenance_tools.dm b/code/game/objects/items/tools/maintenance_tools.dm index 25bcefc1cc34..574d08e6a15b 100644 --- a/code/game/objects/items/tools/maintenance_tools.dm +++ b/code/game/objects/items/tools/maintenance_tools.dm @@ -96,8 +96,8 @@ if(E) var/safety = H.get_eye_protection() if(!safety) - to_chat(user, SPAN_DANGER("You stab [H] in the eyes with the [src]!")) - visible_message(SPAN_DANGER("[user] stabs [H] in the eyes with the [src]!")) + user.visible_message(SPAN_DANGER("[user] stabs [H] in the eyes with [src]!"), + SPAN_DANGER("You stab [H] in the eyes with [src]!")) E.take_damage(rand(8,20)) return ..() /obj/item/tool/screwdriver/tactical @@ -162,6 +162,7 @@ drop_sound = 'sound/handling/weldingtool_drop.ogg' flags_atom = FPRINT|CONDUCT flags_equip_slot = SLOT_WAIST + var/base_icon_state = "" //Amount of OUCH when it's thrown force = 3 @@ -175,12 +176,15 @@ inherent_traits = list(TRAIT_TOOL_BLOWTORCH) + light_range = 2 + light_power = 2 + //blowtorch specific stuff /// Whether or not the blowtorch is off(0), on(1) or currently welding(2) var/welding = 0 /// The max amount of fuel the welder can hold - var/max_fuel = 20 + var/max_fuel = 40 /// Used to slowly deplete the fuel when the tool is left on. var/weld_tick = 0 var/has_welding_screen = FALSE @@ -189,15 +193,11 @@ . = ..() create_reagents(max_fuel) reagents.add_reagent("fuel", max_fuel) + base_icon_state = initial(icon_state) return - /obj/item/tool/weldingtool/Destroy() if(welding) - if(ismob(loc)) - loc.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) STOP_PROCESSING(SSobj, src) . = ..() @@ -205,8 +205,6 @@ . = ..() . += "It contains [get_fuel()]/[max_fuel] units of fuel!" - - /obj/item/tool/weldingtool/process() if(QDELETED(src)) STOP_PROCESSING(SSobj, src) @@ -218,42 +216,43 @@ else //should never be happening, but just in case toggle(TRUE) +/obj/item/tool/weldingtool/attack(mob/target, mob/user) -/obj/item/tool/weldingtool/attack(mob/M, mob/user) + if(ishuman(target)) + var/mob/living/carbon/human/human = target + var/obj/limb/limb = human.get_limb(user.zone_selected) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/obj/limb/S = H.get_limb(user.zone_selected) - - if (!S) return - if(!(S.status & (LIMB_ROBOT|LIMB_SYNTHSKIN)) || user.a_intent != INTENT_HELP) + if (!limb) return + if(!(limb.status & (LIMB_ROBOT|LIMB_SYNTHSKIN)) || user.a_intent != INTENT_HELP) return ..() if(user.action_busy) return var/self_fixing = FALSE - if(H.species.flags & IS_SYNTHETIC && M == user) + if(human.species.flags & IS_SYNTHETIC && target == user) self_fixing = TRUE - if(S.brute_dam && welding) + if(limb.brute_dam && welding) remove_fuel(1,user) if(self_fixing) - user.visible_message(SPAN_WARNING("\The [user] begins fixing some dents on their [S.display_name]."), \ - SPAN_WARNING("You begin to carefully patch some dents on your [S.display_name] so as not to void your warranty.")) + user.visible_message(SPAN_WARNING("\The [user] begins fixing some dents on their [limb.display_name]."), \ + SPAN_WARNING("You begin to carefully patch some dents on your [limb.display_name] so as not to void your warranty.")) if(!do_after(user, 30, INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) return - S.heal_damage(15, 0, TRUE) - H.pain.recalculate_pain() - H.UpdateDamageIcon() - user.visible_message(SPAN_WARNING("\The [user] patches some dents on \the [H]'s [S.display_name] with \the [src]."), \ - SPAN_WARNING("You patch some dents on \the [H]'s [S.display_name] with \the [src].")) + limb.heal_damage(15, 0, TRUE) + human.pain.recalculate_pain() + human.UpdateDamageIcon() + user.visible_message(SPAN_WARNING("\The [user] patches some dents on \the [human]'s [limb.display_name] with \the [src]."), \ + SPAN_WARNING("You patch some dents on \the [human]'s [limb.display_name] with \the [src].")) return else to_chat(user, SPAN_WARNING("Nothing to fix!")) else + if(ismob(target)) + remove_fuel(1) return ..() /obj/item/tool/weldingtool/afterattack(obj/target, mob/user, proximity) @@ -274,8 +273,6 @@ tank.explode() return if (welding) - remove_fuel(1) - if(isliving(target)) var/mob/living/L = target L.IgniteMob() @@ -285,6 +282,13 @@ ..() toggle() +/obj/item/tool/weldingtool/turn_light(mob/user, toggle_on) + . = ..() + if(. == NO_LIGHT_STATE_CHANGE) + return + + set_light_on(toggle_on) + //Returns the amount of fuel in the welder /obj/item/tool/weldingtool/proc/get_fuel() if(!reagents) @@ -330,13 +334,11 @@ welding = 1 if(M) to_chat(M, SPAN_NOTICE("You switch [src] on.")) - M.SetLuminosity(2, FALSE, src) - else - SetLuminosity(2) + turn_light((M ? M : null), toggle_on = TRUE) weld_tick += 8 //turning the tool on does not consume fuel directly, but it advances the process that regularly consumes fuel. force = 15 damtype = "fire" - icon_state = "welder1" + icon_state = base_icon_state + "_on" w_class = SIZE_LARGE heat_source = 3800 START_PROCESSING(SSobj, src) @@ -348,7 +350,7 @@ playsound(loc, 'sound/items/weldingtool_off.ogg', 25) force = 3 damtype = "brute" - icon_state = "welder" + icon_state = base_icon_state welding = 0 w_class = initial(w_class) heat_source = 0 @@ -357,13 +359,13 @@ to_chat(M, SPAN_NOTICE("You switch [src] off.")) else to_chat(M, SPAN_WARNING("[src] shuts off!")) - M.SetLuminosity(0, FALSE, src) if(M.r_hand == src) M.update_inv_r_hand() if(M.l_hand == src) M.update_inv_l_hand() - else - SetLuminosity(0) + + turn_light((M ? M : null), toggle_on = FALSE) + STOP_PROCESSING(SSobj, src) //Decides whether or not to damage a player's eyes based on what they're wearing as protection @@ -380,22 +382,27 @@ if(E.robotic == ORGAN_ROBOT) return switch(safety) - if(1) + if(EYE_PROTECTION_FLASH) + to_chat(user, SPAN_DANGER("You see a bright light in the corner of your vision.")) + E.take_damage(rand(0, 1), TRUE) + if(E.damage > 10) + E.take_damage(rand(3, 5), TRUE) + if(EYE_PROTECTION_FLAVOR) to_chat(user, SPAN_DANGER("Your eyes sting a little.")) E.take_damage(rand(1, 2), TRUE) - if(E.damage > 12) - H.AdjustEyeBlur(3,6) - if(0) + if(E.damage > 8) // dont abuse your funny flavor glasses + E.take_damage(2, TRUE) + if(EYE_PROTECTION_NONE) to_chat(user, SPAN_WARNING("Your eyes burn.")) - E.take_damage(rand(2, 4), TRUE) + E.take_damage(rand(3, 4), TRUE) if(E.damage > 10) E.take_damage(rand(4, 10), TRUE) - if(-1) + if(EYE_PROTECTION_NEGATIVE) to_chat(user, SPAN_WARNING("Your thermals intensify [src]'s glow. Your eyes itch and burn severely.")) H.AdjustEyeBlur(12,20) E.take_damage(rand(12, 16), TRUE) - if(safety < 2) + if(safety < EYE_PROTECTION_WELDING) if (E.damage >= E.min_broken_damage) to_chat(H, SPAN_WARNING("You go blind! Maybe welding without protection wasn't such a great idea...")) return FALSE @@ -406,24 +413,11 @@ to_chat(H, SPAN_WARNING("Your eyes are really starting to hurt. This can't be good for you!")) return FALSE -/obj/item/tool/weldingtool/pickup(mob/user) - . = ..() - if(welding) - SetLuminosity(0) - user.SetLuminosity(2, FALSE, src) - - -/obj/item/tool/weldingtool/dropped(mob/user) - if(welding && loc != user) - user.SetLuminosity(0, FALSE, src) - SetLuminosity(2) - return ..() - - /obj/item/tool/weldingtool/largetank name = "industrial blowtorch" - max_fuel = 40 + max_fuel = 60 matter = list("metal" = 70, "glass" = 60) + icon_state = "welder_c" /obj/item/tool/weldingtool/hugetank @@ -451,9 +445,9 @@ name = "\improper ME3 hand welder" desc = "A compact, handheld welding torch used by the marines of the United States Colonial Marine Corps for cutting and welding jobs on the field. Due to the small size and slow strength, its function is limited compared to a full-sized technician's blowtorch." max_fuel = 5 - color = "#cc0000" has_welding_screen = TRUE inherent_traits = list(TRAIT_TOOL_SIMPLE_BLOWTORCH) + icon_state = "welder_b" /* * Crowbar @@ -557,8 +551,6 @@ if(attacked_door.locked) //Bolted to_chat(user, SPAN_DANGER("You can't pry open [attacked_door] while it is bolted shut.")) return - if(!attacked_door.arePowerSystemsOn()) //Opens like normal if unpowered - return FALSE if(requires_superstrength_pry) if(!HAS_TRAIT(user, TRAIT_SUPER_STRONG)) //basically IS_PRY_CAPABLE_CROWBAR @@ -645,7 +637,7 @@ resin_door.Open() return - if(istype(attacked_obj, /turf/open/floor)) + else if(istype(attacked_obj, /turf/open/floor)) var/turf/open/floor/flooring = attacked_obj if(crowbar_mode && user.a_intent == INTENT_HELP) //Only pry flooring on help intent @@ -734,7 +726,7 @@ Welding backpack else . += "No punctures are seen on \the [src] upon closer inspection." -/obj/item/tool/weldpack/bullet_act(obj/item/projectile/P) +/obj/item/tool/weldpack/bullet_act(obj/projectile/P) var/damage = P.damage health -= damage ..() diff --git a/code/game/objects/items/tools/misc_tools.dm b/code/game/objects/items/tools/misc_tools.dm index 727f6c5c7677..06f42aacd56c 100644 --- a/code/game/objects/items/tools/misc_tools.dm +++ b/code/game/objects/items/tools/misc_tools.dm @@ -132,7 +132,7 @@ qdel(I) //delete the paper item labels_left = initial(labels_left) else - to_chat(user, SPAN_NOTICE("The [src] is already full.")) + to_chat(user, SPAN_NOTICE("[src] is already full.")) /* Instead of updating labels_left to user every label used, @@ -161,7 +161,7 @@ matter = list("metal" = 10) inherent_traits = list(TRAIT_TOOL_PEN) /// what color the ink is! - var/pen_colour = "black" + var/pen_color = "black" var/on = TRUE var/clicky = FALSE @@ -173,14 +173,14 @@ playsound(user.loc, "sound/items/pen_click_[on? "on": "off"].ogg", 100, 1, 5) update_pen_state() -/obj/item/tool/pen/Initialize() +/obj/item/tool/pen/Initialize(mapload, ...) . = ..() update_pen_state() /obj/item/tool/pen/proc/update_pen_state() overlays.Cut() if(on) - overlays += "+[pen_colour]_tip" + overlays += "+[pen_color]_tip" /obj/item/tool/pen/afterattack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() @@ -246,7 +246,7 @@ /obj/item/tool/pen/blue desc = "It's a normal blue ink pen." - pen_colour = "blue" + pen_color = "blue" /obj/item/tool/pen/blue/clicky desc = "It's a WY brand extra clicky blue ink pen." @@ -255,7 +255,7 @@ /obj/item/tool/pen/red desc = "It's a normal red ink pen." - pen_colour = "red" + pen_color = "red" /obj/item/tool/pen/red/clicky desc = "It's a WY brand extra clicky red ink pen." @@ -264,7 +264,7 @@ /obj/item/tool/pen/green desc = "It's a normal green ink pen." - pen_colour = "green" + pen_color = "green" /obj/item/tool/pen/green/clicky desc = "It's a WY brand extra clicky green ink pen." @@ -273,8 +273,46 @@ /obj/item/tool/pen/invisible desc = "It's an invisible pen marker." - pen_colour = "white" + pen_color = "white" + +/obj/item/tool/pen/fountain + desc = "A lavish testament to the ingenuity of ARMAT's craftsmanship, this fountain pen is a paragon of design and functionality. Detailed with golden accents and intricate mechanics, the pen allows for a swift change between a myriad of ink colors with a simple twist. A product of precision engineering, each mechanism inside the pen is designed to provide a seamless, effortless transition from one color to the next, creating an instrument of luxurious versatility." + desc_lore = "More than just a tool for writing, ARMAT's fountain pen is a symbol of distinction and authority within the ranks of the United States Colonial Marine Corps (USCM). It is a legacy item, exclusively handed out to the top-tier command personnel, each pen a tribute to the recipient's leadership and dedication.\n \nARMAT, renowned for their weapons technology, took a different approach in crafting this piece. The fountain pen, though seemingly a departure from their usual field, is deeply ingrained with the company's engineering philosophy, embodying precision, functionality, and robustness.\n \nThe golden accents are not mere embellishments; they're an identifier, setting apart these pens and their owners from the rest. The gold is meticulously alloyed with a durable metallic substance, granting it resilience to daily wear and tear. Such resilience is symbolic of the tenacity and perseverance required of USCM command personnel.\n \nEach pen is equipped with an intricate color changing mechanism, allowing the user to switch between various ink colors. This feature, inspired by the advanced targeting systems of ARMAT's weaponry, uses miniaturized actuators and precision-ground components to smoothly transition the ink flow. A simple twist of the pen's body activates the change, rotating the internal ink cartridges into place with mechanical grace, ready for the user's command.\n \nThe ink colors are not chosen arbitrarily. Each represents a different echelon within the USCM, allowing the pen's owner to write in the hue that corresponds with their rank or the rank of the recipient of their written orders. This acts as a silent testament to the authority of their words, as if each stroke of the pen echoes through the halls of USCM authority.\n \nDespite its ornate appearance, the pen is as robust as any ARMAT weapon, reflecting the company's commitment to reliability and durability. The metal components are corrosion-resistant, ensuring the pen's longevity, even under the challenging conditions often faced by USCM high command.\n \nThe fusion of luxury and utility, the blend of gold and metal, is an embodiment of the hard-won elegance of command, of the fusion between power and grace. It's more than a writing instrument - it's an emblem of leadership, an accolade to the dedication and strength of those who bear it. ARMAT's fountain pen stands as a monument to the precision, integrity, and courage embodied by the USCM's highest-ranking officers." + name = "fountain pen" + icon_state = "fountain_pen" + item_state = "fountain_pen" + matter = list("metal" = 20, "gold" = 10) + var/static/list/color_list = list("red", "blue", "green", "yellow", "purple", "pink", "brown", "black", "orange") // Can add more colors as required + var/current_color_index = 1 + var/owner_name + +/obj/item/tool/pen/fountain/pickup(mob/user, silent) + . = ..() + if(!owner_name) + RegisterSignal(user, COMSIG_POST_SPAWN_UPDATE, PROC_REF(set_owner), override = TRUE) + +///Sets the owner of the pen to who it spawns with, requires var/source for signals +/obj/item/tool/pen/fountain/proc/set_owner(datum/source) + SIGNAL_HANDLER + UnregisterSignal(source, COMSIG_POST_SPAWN_UPDATE) + var/mob/living/carbon/human/user = source + owner_name = user.name +/obj/item/tool/pen/fountain/get_examine_text(mob/user) + . = ..() + if(owner_name) + . += "There's a laser engraving of [owner_name] on it." + +/obj/item/tool/pen/fountain/attack_self(mob/living/carbon/human/user) + if(on) + current_color_index = (current_color_index % length(color_list)) + 1 + pen_color = color_list[current_color_index] + balloon_alert(user,"you twist the pen and change the ink color to [pen_color].") + if(clicky) + playsound(user.loc, 'sound/items/pen_click_on.ogg', 100, 1, 5) + update_pen_state() + else + ..() /obj/item/tool/pen/attack(mob/M as mob, mob/user as mob) if(!ismob(M)) @@ -377,6 +415,10 @@ name = "\improper DENIED rubber stamp" icon_state = "stamp-deny" +/obj/item/tool/stamp/approved + name = "\improper APPROVED rubber stamp" + icon_state = "stamp-approve" + /obj/item/tool/stamp/clown name = "clown's rubber stamp" icon_state = "stamp-clown" @@ -385,12 +427,20 @@ name = "internal affairs rubber stamp" icon_state = "stamp-intaff" -/obj/item/tool/stamp/centcomm - name = "centcomm rubber stamp" - icon_state = "stamp-cent" +/obj/item/tool/stamp/weyyu + name = "WY rubber stamp" + icon_state = "stamp-weyyu" + +/obj/item/tool/stamp/uscm + name = "USCM rubber stamp" + icon_state = "stamp-uscm" + +/obj/item/tool/stamp/cmb + name = "CMB rubber stamp" + icon_state = "stamp-cmb" /obj/item/tool/stamp/ro - name = "requisitions officer's rubber stamp" + name = "quartermaster's rubber stamp" icon_state = "stamp-ro" /obj/item/tool/carpenters_hammer //doesn't do anything, yet diff --git a/code/game/objects/items/tools/shovel_tools.dm b/code/game/objects/items/tools/shovel_tools.dm index 29bc19f65bbf..b4aa41c5843f 100644 --- a/code/game/objects/items/tools/shovel_tools.dm +++ b/code/game/objects/items/tools/shovel_tools.dm @@ -26,7 +26,7 @@ /obj/item/tool/shovel/update_icon() var/image/I = image(icon,src,dirt_overlay) - switch(dirt_type) // We can actually shape the color for what enviroment we dig up our dirt in. + switch(dirt_type) // We can actually shape the color for what environment we dig up our dirt in. if(DIRT_TYPE_GROUND) I.color = "#512A09" if(DIRT_TYPE_MARS) I.color = "#FF5500" if(DIRT_TYPE_SNOW) I.color = "#EBEBEB" @@ -151,7 +151,7 @@ /obj/item/tool/shovel/proc/dump_shovel(atom/target, mob/user) var/turf/T = target - to_chat(user, SPAN_NOTICE("you dump the [dirt_type_to_name(dirt_type)]!")) + to_chat(user, SPAN_NOTICE("You dump the [dirt_type_to_name(dirt_type)]!")) playsound(user.loc, "rustle", 30, 1, 6) if(dirt_type == DIRT_TYPE_SNOW) var/obj/item/stack/snow/S = locate() in T @@ -233,7 +233,7 @@ /obj/item/tool/shovel/etool/attack_self(mob/user as mob) folded = !folded if(folded) - w_class = SIZE_MEDIUM + w_class = SIZE_SMALL force = 2 else w_class = SIZE_LARGE @@ -242,7 +242,7 @@ /obj/item/tool/shovel/etool/folded folded = TRUE - w_class = SIZE_MEDIUM + w_class = SIZE_SMALL force = 2 icon_state = "etool_c" item_state = "etool_c" diff --git a/code/game/objects/items/tools/surgery_tools.dm b/code/game/objects/items/tools/surgery_tools.dm index 8582e08111f7..7d354d8d8c1c 100644 --- a/code/game/objects/items/tools/surgery_tools.dm +++ b/code/game/objects/items/tools/surgery_tools.dm @@ -195,16 +195,100 @@ */ /obj/item/tool/surgery/bonegel - name = "bone gel" + name = "bottle of bone gel" + desc = "A container for bone gel that often needs to be refilled from a specialized machine." + desc_lore = "Bone gel is a biological synthetic bone-analogue with the consistency of clay. It is capable of fixing hairline fractures and complex fractures alike. Bone gel should not be used to fix missing bone, as it does not replace the body's bone marrow. Overuse in a short period may cause acute immunodeficiency or anemia." icon_state = "bone-gel" - force = 0 - throwforce = 1 w_class = SIZE_SMALL matter = list("plastic" = 7500) + ///base icon state for update_icon() to reference, fixes bonegel/empty + var/base_icon_state = "bone-gel" + ///percent of gel remaining in container + var/remaining_gel = 100 + ///If gel is used when doing bone surgery + var/unlimited_gel = FALSE + ///Time it takes per 10% of gel refilled + var/time_per_refill = 1 SECONDS + ///if the bone gel is actively being refilled + var/refilling = FALSE + + ///How much bone gel is needed to fix a fracture + var/fracture_fix_cost = 5 + ///How much bone gel is needed to mend bones + var/mend_bones_fix_cost = 5 + +/obj/item/tool/surgery/bonegel/update_icon() + . = ..() + if(remaining_gel >= 100) + icon_state = base_icon_state + return + if(remaining_gel > 50) + icon_state = "[base_icon_state]_75" + return + if(remaining_gel > 25) + icon_state = "[base_icon_state]_50" + return + if(remaining_gel > 0) + icon_state = "[base_icon_state]_25" + return + icon_state = "[base_icon_state]_0" + +/obj/item/tool/surgery/bonegel/get_examine_text(mob/user) + . = ..() + if(unlimited_gel) //Only show how much gel is left if it actually uses bone gel + return + . += "A volume reader on the side tells you there is still [remaining_gel]% of [src] is remaining." + . += "[src] can be refilled from a osteomimetic lattice fabricator." + + if(!skillcheck(user, SKILL_MEDICAL, SKILL_MEDICAL_DOCTOR)) //Know how much you will be using if you can use it + return + . += SPAN_NOTICE("You would need to use [fracture_fix_cost]% of the bone gel to repair a fracture.") + . += SPAN_NOTICE("You would need to use [mend_bones_fix_cost]% of the bone gel to mend bones.") + +/obj/item/tool/surgery/bonegel/proc/refill_gel(obj/refilling_obj, mob/user) + if(unlimited_gel) + to_chat(user, SPAN_NOTICE("[refilling_obj] refuses to fill [src].")) + return + if(remaining_gel >= 100) + to_chat(user, SPAN_NOTICE("[src] cannot be filled with any more bone gel.")) + return + + if(refilling) + to_chat(user, SPAN_NOTICE("You are already refilling [src] from [refilling_obj].")) + return + refilling = TRUE + + while(remaining_gel < 100) + if(!do_after(user, time_per_refill, INTERRUPT_ALL, BUSY_ICON_FRIENDLY, refilling_obj)) + break + remaining_gel = clamp(remaining_gel + 10, 0, 100) + update_icon() + to_chat(user, SPAN_NOTICE("[refilling_obj] chimes, and displays \"[remaining_gel]% filled\".")) + + refilling = FALSE + playsound(refilling_obj, "sound/machines/ping.ogg", 10) + to_chat(user, SPAN_NOTICE("You remove [src] from [refilling_obj].")) + +/obj/item/tool/surgery/bonegel/proc/use_gel(gel_cost) + if(unlimited_gel) + return TRUE + + if(remaining_gel < gel_cost) + return FALSE + remaining_gel -= gel_cost + update_icon() + return TRUE + +/obj/item/tool/surgery/bonegel/empty + remaining_gel = 0 + icon_state = "bone-gel_0" /obj/item/tool/surgery/bonegel/predatorbonegel name = "gel gun" + desc = "Inside is a liquid that is similar in effect to bone gel, but requires much smaller quantities, allowing near infinite use from a single capsule." + base_icon_state = "predator_bone-gel" icon_state = "predator_bone-gel" + unlimited_gel = TRUE /* * Fix-o-Vein @@ -235,7 +319,7 @@ /obj/item/tool/surgery/surgical_line name = "\proper surgical line" desc = "A roll of military-grade surgical line, able to seamlessly sew up any wound. Also works as a robust fishing line for maritime deployments." - icon_state = "line" + icon_state = "line_brute" force = 0 throwforce = 1 w_class = SIZE_SMALL @@ -253,10 +337,7 @@ name = "Synth-Graft" desc = "An applicator for synthetic skin field grafts. The stuff reeks, itches like the dickens, hurts going on, and the color is \ a perfectly averaged multiethnic tone that doesn't blend with anyone's complexion. But at least you don't have to stay in sickbay." - /// Placeholder. - icon_state = "line" - /// Placeholder, to distinguish from surgical line. - color = "yellow" + icon_state = "line_burn" force = 0 throwforce = 1 w_class = SIZE_SMALL diff --git a/code/game/objects/items/toys/cards.dm b/code/game/objects/items/toys/cards.dm index b6e3bb558ec4..39584b2bbb89 100644 --- a/code/game/objects/items/toys/cards.dm +++ b/code/game/objects/items/toys/cards.dm @@ -21,7 +21,6 @@ icon = 'icons/obj/items/playing_cards.dmi' icon_state = "deck" w_class = SIZE_TINY - flags_item = NOTABLEMERGE var/base_icon = "deck" var/max_cards = 52 @@ -31,6 +30,10 @@ . = ..() populate_deck() +/obj/item/toy/deck/Destroy(force) + . = ..() + QDEL_NULL_LIST(cards) + /obj/item/toy/deck/get_examine_text(mob/user) . = ..() . += SPAN_NOTICE("There are [length(cards)] cards remaining in the deck.") @@ -76,6 +79,7 @@ var/obj/item/toy/handcard/H = O for(var/datum/playing_card/P as anything in H.cards) cards += P + H.cards -= P update_icon() qdel(O) user.visible_message(SPAN_NOTICE("[user] places their cards on the bottom of \the [src]."), SPAN_NOTICE("You place your cards on the bottom of the deck.")) @@ -262,7 +266,6 @@ icon = 'icons/obj/items/playing_cards.dmi' icon_state = "empty" w_class = SIZE_TINY - flags_item = NOTABLEMERGE var/concealed = FALSE var/pile_state = FALSE @@ -273,6 +276,10 @@ if(!concealed) . += " ([length(cards)] card\s)" +/obj/item/toy/handcard/Destroy(force) + . = ..() + QDEL_NULL_LIST(cards) + /obj/item/toy/handcard/aceofspades icon_state = "spades_ace" desc = "An Ace of Spades" @@ -317,6 +324,9 @@ //fuck any qsorts and merge sorts. This needs to be brutally easy var/cards_length = length(cards) + if(cards_length >= 200) + to_chat(usr, SPAN_WARNING("Your hand is too big to sort. Remove some cards.")) + return for(var/i = 1 to cards_length) for(var/k = 2 to cards_length) if(cards[i].sort_index > cards[k].sort_index) @@ -333,6 +343,7 @@ var/cards_length = length(H.cards) for(var/datum/playing_card/P in H.cards) cards += P + H.cards -= P qdel(O) if(pile_state) if(concealed) @@ -341,6 +352,9 @@ user.visible_message(SPAN_NOTICE("\The [user] adds [cards_length > 1 ? "their hand" : "[cards[length(cards)].name]"] to \the [src]."), SPAN_NOTICE("You add [cards_length > 1 ? "your hand" : "[cards[length(cards)].name]"] to \the [src].")) else if(loc != user) + if(isstorage(loc)) + var/obj/item/storage/storage = loc + storage.remove_from_storage(src) user.put_in_hands(src) update_icon() return @@ -392,6 +406,12 @@ /obj/item/toy/handcard/MouseDrop(atom/over) if(usr != over || !Adjacent(usr)) return + if(ismob(loc)) + return + + if(isstorage(loc)) + var/obj/item/storage/storage = loc + storage.remove_from_storage(src) usr.put_in_hands(src) /obj/item/toy/handcard/get_examine_text(mob/user) @@ -425,6 +445,12 @@ name = "a playing card" desc = "A playing card." + if(length(cards) >= 200) + // BYOND will flat out choke when using thousands of cards for some unknown reason, + // possibly due to the transformed overlay stacking below. Nobody's gonna see the + // difference past 40 or so anyway. + return + overlays.Cut() if(!cards_length) diff --git a/code/game/objects/items/toys/crayons.dm b/code/game/objects/items/toys/crayons.dm index 5bd4d05f317f..1d9e2e1a4d54 100644 --- a/code/game/objects/items/toys/crayons.dm +++ b/code/game/objects/items/toys/crayons.dm @@ -1,70 +1,70 @@ /obj/item/toy/crayon/red icon_state = "crayonred" crayon_color = "#DA0000" - shadeColour = "#810C0C" - colourName = "red" + shade_color = "#810C0C" + colorName = "red" /obj/item/toy/crayon/orange icon_state = "crayonorange" crayon_color = "#FF9300" - shadeColour = "#A55403" - colourName = "orange" + shade_color = "#A55403" + colorName = "orange" /obj/item/toy/crayon/yellow icon_state = "crayonyellow" crayon_color = "#FFF200" - shadeColour = "#886422" - colourName = "yellow" + shade_color = "#886422" + colorName = "yellow" /obj/item/toy/crayon/green icon_state = "crayongreen" crayon_color = "#A8E61D" - shadeColour = "#61840F" - colourName = "green" + shade_color = "#61840F" + colorName = "green" /obj/item/toy/crayon/blue icon_state = "crayonblue" crayon_color = "#00B7EF" - shadeColour = "#0082A8" - colourName = "blue" + shade_color = "#0082A8" + colorName = "blue" /obj/item/toy/crayon/purple icon_state = "crayonpurple" crayon_color = "#DA00FF" - shadeColour = "#810CFF" - colourName = "purple" + shade_color = "#810CFF" + colorName = "purple" /obj/item/toy/crayon/mime icon_state = "crayonmime" desc = "A very sad-looking crayon." - crayon_color = "#FFFFFF" - shadeColour = "#000000" - colourName = "mime" + crayon_color = COLOR_WHITE + shade_color = COLOR_BLACK + colorName = "mime" uses = 0 /obj/item/toy/crayon/mime/attack_self(mob/living/user) //inversion ..() - if(crayon_color != "#FFFFFF" && shadeColour != "#000000") - crayon_color = "#FFFFFF" - shadeColour = "#000000" + if(crayon_color != COLOR_WHITE && shade_color != COLOR_BLACK) + crayon_color = COLOR_WHITE + shade_color = COLOR_BLACK to_chat(user, "You will now draw in white and black with this crayon.") else - crayon_color = "#000000" - shadeColour = "#FFFFFF" + crayon_color = COLOR_BLACK + shade_color = COLOR_WHITE to_chat(user, "You will now draw in black and white with this crayon.") /obj/item/toy/crayon/rainbow icon_state = "crayonrainbow" crayon_color = "#FFF000" - shadeColour = "#000FFF" - colourName = "rainbow" + shade_color = "#000FFF" + colorName = "rainbow" uses = 0 /obj/item/toy/crayon/rainbow/attack_self(mob/living/user) ..() crayon_color = input(user, "Please select the main color.", "Crayon color") as color - shadeColour = input(user, "Please select the shade color.", "Crayon color") as color + shade_color = input(user, "Please select the shade color.", "Crayon color") as color /obj/item/toy/crayon/afterattack(atom/target, mob/user, proximity) if(!proximity) @@ -73,14 +73,14 @@ var/drawtype = tgui_input_list(usr, "Choose what you'd like to draw.", "Crayon scribbles", list("graffiti","rune","letter")) switch(drawtype) if("letter") - drawtype = tgui_input_list(usr, "Choose the letter.", "Crayon scribbles", alphabet_lowercase) + drawtype = tgui_input_list(usr, "Choose the letter.", "Crayon scribbles", GLOB.alphabet_lowercase) to_chat(user, "You start drawing a letter on the [target.name].") if("graffiti") to_chat(user, "You start drawing graffiti on the [target.name].") if("rune") to_chat(user, "You start drawing a rune on the [target.name].") if(instant || do_after(user, 50, INTERRUPT_ALL, BUSY_ICON_GENERIC)) - new /obj/effect/decal/cleanable/crayon(target,crayon_color,shadeColour,drawtype) + new /obj/effect/decal/cleanable/crayon(target,crayon_color,shade_color,drawtype) to_chat(user, "You finish drawing.") target.add_fingerprint(user) // Adds their fingerprints to the floor the crayon is drawn on. if(uses) diff --git a/code/game/objects/items/toys/toy_weapons.dm b/code/game/objects/items/toys/toy_weapons.dm index 9acf6f2943c3..ce32cfdb67a9 100644 --- a/code/game/objects/items/toys/toy_weapons.dm +++ b/code/game/objects/items/toys/toy_weapons.dm @@ -130,7 +130,7 @@ for(var/mob/living/M in D.loc) if(!istype(M,/mob/living)) continue if(M == user) continue - for(var/mob/O in viewers(world_view_size, D)) + for(var/mob/O in viewers(GLOB.world_view_size, D)) O.show_message(SPAN_DANGER("[M] was hit by the foam dart!"), SHOW_MESSAGE_VISIBLE) new /obj/item/toy/crossbow_ammo(M.loc) qdel(D) @@ -152,14 +152,14 @@ return else if (bullets == 0) user.apply_effect(5, WEAKEN) - for(var/mob/O in viewers(world_view_size, user)) + for(var/mob/O in viewers(GLOB.world_view_size, user)) O.show_message(SPAN_DANGER("[user] realized they were out of ammo and starting scrounging for some!"), SHOW_MESSAGE_VISIBLE) -/obj/item/toy/crossbow/attack(mob/M as mob, mob/user as mob) +/obj/item/toy/crossbow/attack(mob/living/M as mob, mob/user as mob) src.add_fingerprint(user) - if (src.bullets > 0 && M.lying) + if (src.bullets > 0 && M.body_position == LYING_DOWN) for(var/mob/O in viewers(M, null)) if(O.client) @@ -169,7 +169,7 @@ playsound(user.loc, 'sound/items/syringeproj.ogg', 15, 1) new /obj/item/toy/crossbow_ammo(M.loc) src.bullets-- - else if (M.lying && src.bullets == 0) + else if (M.body_position == LYING_DOWN && src.bullets == 0) for(var/mob/O in viewers(M, null)) if (O.client) O.show_message(SPAN_DANGER("[user] casually lines up a shot with [M]'s head, pulls the trigger, then realizes they are out of ammo and drops to the floor in search of some!"), SHOW_MESSAGE_VISIBLE, SPAN_DANGER("You hear someone fall"), SHOW_MESSAGE_AUDIBLE) diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm index b2a66becd869..91d8164dcf38 100644 --- a/code/game/objects/items/toys/toys.dm +++ b/code/game/objects/items/toys/toys.dm @@ -12,7 +12,6 @@ * Other things */ - //recreational items /obj/item/toy @@ -23,7 +22,6 @@ force = 0 black_market_value = 5 - /* * Balloons */ @@ -44,7 +42,7 @@ if(!proximity) return if (istype(A, /obj/structure/reagent_dispensers/watertank) && get_dist(src,A) <= 1) A.reagents.trans_to(src, 10) - to_chat(user, SPAN_NOTICE(" You fill the balloon with the contents of [A].")) + to_chat(user, SPAN_NOTICE("You fill the balloon with the contents of [A].")) src.desc = "A translucent balloon with some form of liquid sloshing around in it." src.update_icon() return @@ -53,22 +51,22 @@ if(istype(O, /obj/item/reagent_container/glass)) if(O.reagents) if(O.reagents.total_volume < 1) - to_chat(user, "The [O] is empty.") + to_chat(user, SPAN_WARNING("[O] is empty.")) else if(O.reagents.total_volume >= 1) if(O.reagents.has_reagent("pacid", 1)) - to_chat(user, "The acid chews through the balloon!") + to_chat(user, SPAN_WARNING("The acid chews through the balloon!")) O.reagents.reaction(user) qdel(src) else src.desc = "A translucent balloon with some form of liquid sloshing around in it." - to_chat(user, SPAN_NOTICE(" You fill the balloon with the contents of [O].")) + to_chat(user, SPAN_NOTICE("You fill the balloon with the contents of [O].")) O.reagents.trans_to(src, 10) src.update_icon() return /obj/item/toy/balloon/launch_impact(atom/hit_atom) if(src.reagents.total_volume >= 1) - src.visible_message(SPAN_DANGER("The [src] bursts!"),"You hear a pop and a splash.") + src.visible_message(SPAN_DANGER("[src] bursts!"),"You hear a pop and a splash.") src.reagents.reaction(get_turf(hit_atom)) for(var/atom/A in get_turf(hit_atom)) src.reagents.reaction(A) @@ -118,24 +116,24 @@ icon_state = "singularity_s1" - /* * Crayons */ /obj/item/toy/crayon name = "crayon" - desc = "A colourful crayon. Please refrain from eating it or putting it in your nose." + desc = "A colorful crayon. Please refrain from eating it or putting it in your nose." icon = 'icons/obj/items/crayons.dmi' icon_state = "crayonred" w_class = SIZE_TINY - attack_verb = list("attacked", "coloured") + attack_verb = list("attacked", "colored") black_market_value = 5 - var/crayon_color = "#FF0000" //RGB - var/shadeColour = "#220000" //RGB - var/uses = 30 //0 for unlimited uses + var/crayon_color = COLOR_RED + var/shade_color = "#220000" + /// 0 for unlimited uses + var/uses = 30 var/instant = 0 - var/colourName = "red" //for updateIcon purposes + var/colorName = "red" //for updateIcon purposes /* * Snap pops @@ -237,7 +235,6 @@ . += "[reagents.total_volume] units of water left!" - /* * Mech prizes */ @@ -318,56 +315,6 @@ desc = "Mini-Mecha action figure! Collect them all! 11/11." icon_state = "phazonprize" - -/obj/item/toy/therapy_red - name = "red therapy doll" - desc = "A therapeutic toy to assist marines in recovering from mental and behavioral disorders after experiencing the trauma of battles. This one is red." - icon = 'icons/obj/items/toy.dmi' - icon_state = "therapyred" - item_state = "egg4" // It's the red egg in items_left/righthand - w_class = SIZE_TINY - -/obj/item/toy/therapy_purple - name = "purple therapy doll" - desc = "A therapeutic toy to assist marines in recovering from mental and behavioral disorders after experiencing the trauma of battles. This one is purple." - icon = 'icons/obj/items/toy.dmi' - icon_state = "therapypurple" - item_state = "egg1" // It's the magenta egg in items_left/righthand - w_class = SIZE_TINY - -/obj/item/toy/therapy_blue - name = "blue therapy doll" - desc = "A therapeutic toy to assist marines in recovering from mental and behavioral disorders after experiencing the trauma of battles. This one is blue." - icon = 'icons/obj/items/toy.dmi' - icon_state = "therapyblue" - item_state = "egg2" // It's the blue egg in items_left/righthand - w_class = SIZE_TINY - -/obj/item/toy/therapy_yellow - name = "yellow therapy doll" - desc = "A therapeutic toy to assist marines in recovering from mental and behavioral disorders after experiencing the trauma of battles. This one is yellow." - icon = 'icons/obj/items/toy.dmi' - icon_state = "therapyyellow" - item_state = "egg5" // It's the yellow egg in items_left/righthand - w_class = SIZE_TINY - -/obj/item/toy/therapy_orange - name = "orange therapy doll" - desc = "A therapeutic toy to assist marines in recovering from mental and behavioral disorders after experiencing the trauma of battles. This one is orange." - icon = 'icons/obj/items/toy.dmi' - icon_state = "therapyorange" - item_state = "egg4" // It's the red one again, lacking an orange item_state and making a new one is pointless - w_class = SIZE_TINY - -/obj/item/toy/therapy_green - name = "green therapy doll" - desc = "A therapeutic toy to assist marines in recovering from mental and behavioral disorders after experiencing the trauma of battles. This one is green." - icon = 'icons/obj/items/toy.dmi' - icon_state = "therapygreen" - item_state = "egg3" // It's the green egg in items_left/righthand - w_class = SIZE_TINY - - /obj/item/toy/inflatable_duck name = "inflatable duck" desc = "No bother to sink or swim when you can just float!" @@ -377,7 +324,6 @@ flags_equip_slot = SLOT_WAIST black_market_value = 20 - /obj/item/toy/beach_ball name = "beach ball" icon_state = "beachball" @@ -394,7 +340,6 @@ user.drop_held_item() throw_atom(target, throw_range, throw_speed, user) - /obj/item/toy/dice name = "d6" desc = "A die with six sides." @@ -427,10 +372,6 @@ SPAN_NOTICE("You throw [src]. It lands on a [result]. [comment]"), \ SPAN_NOTICE("You hear [src] landing on a [result]. [comment]")) - - - - /obj/item/toy/bikehorn name = "bike horn" desc = "A horn off of a bicycle." @@ -455,46 +396,13 @@ src.add_fingerprint(user) addtimer(VARSET_CALLBACK(src, spam_flag, FALSE), 2 SECONDS) - - -/obj/item/toy/farwadoll - name = "Farwa plush doll" - desc = "A Farwa plush doll. It's soft and comforting!" - w_class = SIZE_TINY - icon_state = "farwaplush" - black_market_value = 25 - COOLDOWN_DECLARE(last_hug_time) - -/obj/item/toy/farwadoll/attack_self(mob/user) - ..() - - if(COOLDOWN_FINISHED(src, last_hug_time)) - user.visible_message(SPAN_NOTICE("[user] hugs [src]! How cute! "), \ - SPAN_NOTICE("You hug [src]. Dawwww... ")) - COOLDOWN_START(src, last_hug_time, 5 SECONDS) - -/obj/item/toy/farwadoll/pred - name = "strange plush doll" - desc = "A plush doll depicting some sort of tall humanoid biped..?" - w_class = SIZE_TINY - icon_state = "predplush" - -/obj/item/toy/plushie_cade - name = "plushie barricade" - desc = "Great for squeezing whenever you're scared. Or lightly hurt. Or in any other situation." - icon_state = "plushie_cade" - item_state = "plushie_cade" - w_class = SIZE_SMALL - COOLDOWN_DECLARE(last_hug_time) - -/obj/item/toy/plushie_cade/attack_self(mob/user) - ..() - - if(COOLDOWN_FINISHED(src, last_hug_time)) - user.visible_message(SPAN_NOTICE("[user] hugs [src] tightly!"), SPAN_NOTICE("You hug [src]. You feel safe.")) - playsound(user, "plush", 25, TRUE) - COOLDOWN_START(src, last_hug_time, 2.5 SECONDS) - +// rubber duck +/obj/item/toy/bikehorn/rubberducky + name = "rubber ducky" + desc = "Rubber ducky you're so fine, you make bathtime lots of fuuun. Rubber ducky I'm awfully fooooond of yooooouuuu~" //thanks doohl + icon = 'icons/obj/structures/props/watercloset.dmi' + icon_state = "rubberducky" + item_state = "rubberducky" /obj/item/computer3_part name = "computer part" @@ -567,3 +475,188 @@ /obj/item/toy/festivizer/xeno name = "strange resin-covered festivizer decorator" desc = "This bizarre festivizer is covered in goopy goop and schmuck. Ew! It's so sticky, *anything* could grab onto it! Grab it and touch other things to festivize them!" + +/obj/item/toy/plush + name = "generic plushie" + desc = "perfectly generic" + icon = 'icons/obj/items/plush.dmi' + icon_state = "debug" + w_class = SIZE_SMALL + COOLDOWN_DECLARE(last_hug_time) + black_market_value = 10 + +/obj/item/toy/plush/attack_self(mob/user) + ..() + if(!COOLDOWN_FINISHED(src, last_hug_time)) + return + user.visible_message(SPAN_NOTICE("[user] hugs [src] tightly!"), SPAN_NOTICE("You hug [src].")) + playsound(user, "plush", 25, TRUE) + COOLDOWN_START(src, last_hug_time, 2.5 SECONDS) + +/obj/item/toy/plush/farwa + name = "Farwa plush" + desc = "A Farwa plush doll. It's soft and comforting!" + icon_state = "farwa" + black_market_value = 25 + +/obj/item/toy/plush/barricade + name = "plushie barricade" + desc = "Great for squeezing whenever you're scared. Or lightly hurt. Or in any other situation." + icon_state = "barricade" + item_state = "cade_plush" + +/obj/item/toy/plush/shark //A few more generic plushies to increase the size of the plushie loot pool + name = "shark plush" + desc = "A plushie depicting a somewhat cartoonish shark. The tag notes that it was made by an obscure furniture manufacturer in Scandinavia." + icon_state = "shark" + +/obj/item/toy/plush/bee + name = "bee plush" + desc = "A cute toy that awakens the warrior spirit in the most reserved marine." + icon_state = "bee" + +/obj/item/toy/plush/moth + name = "moth plush" + desc = "A plush doll of a bug." + icon_state = "moth" + +/obj/item/toy/plush/rock + name = "rock plush" + desc = "It says it is a plush on the tag, at least." + icon_state = "rock" + +/obj/item/toy/plush/therapy + name = "therapy plush" + desc = "A therapeutic toy to assist marines in recovering from mental and behavioral disorders after experiencing the trauma of battles." + icon_state = "therapy" + +/obj/item/toy/plush/therapy/red + name = "red therapy plush" + color = "#FC5274" + +/obj/item/toy/plush/therapy/blue + name = "blue therapy plush" + color = "#9EBAE0" + +/obj/item/toy/plush/therapy/green + name = "green therapy plush" + color = "#A3C940" + +/obj/item/toy/plush/therapy/orange + name = "orange therapy plush" + color = "#FD8535" + +/obj/item/toy/plush/therapy/purple + name = "purple therapy plush" + color = "#A26AC7" + +/obj/item/toy/plush/therapy/yellow + name = "yellow therapy plush" + color = "#FFE492" + +/obj/item/toy/plush/therapy/random_color + ///Hexadecimal 0-F (0-15) + var/static/list/hexadecimal = list("0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F") + +/obj/item/toy/plush/therapy/random_color/Initialize(mapload, ...) + . = ..() + var/color_code = "#[pick(hexadecimal)][pick(hexadecimal)][pick(hexadecimal)][pick(hexadecimal)][pick(hexadecimal)][pick(hexadecimal)]" //This is dumb and I hope theres a better way I'm missing + color = color_code + desc = "A custom therapy plush, in a unique color." + +/obj/item/toy/plush/random_plushie //Not using an effect so it can fit into storage from loadout + name = "random plush" + desc = "This plush looks awfully standard and bland. Is it actually yours?" + /// Standard plushies for the spawner to pick from + var/list/plush_list = list( + /obj/item/toy/plush/farwa, + /obj/item/toy/plush/barricade, + /obj/item/toy/plush/bee, + /obj/item/toy/plush/shark, + /obj/item/toy/plush/moth, + /obj/item/toy/plush/rock, + ) + ///Therapy plushies left separately to not flood the entire list + var/list/therapy_plush_list = list( + /obj/item/toy/plush/therapy, + /obj/item/toy/plush/therapy/red, + /obj/item/toy/plush/therapy/blue, + /obj/item/toy/plush/therapy/green, + /obj/item/toy/plush/therapy/orange, + /obj/item/toy/plush/therapy/purple, + /obj/item/toy/plush/therapy/yellow, + /obj/item/toy/plush/therapy/random_color, + ) + +/obj/item/toy/plush/random_plushie/Initialize(mapload, ...) + . = ..() + if(mapload) //Placed in mapping, will be randomized instantly on spawn + create_plushie() + return INITIALIZE_HINT_QDEL + +/obj/item/toy/plush/random_plushie/pickup(mob/user, silent) + . = ..() + RegisterSignal(user, COMSIG_POST_SPAWN_UPDATE, PROC_REF(create_plushie), override = TRUE) + +///The randomizer picking and spawning a plushie on either the ground or in the humans backpack. Needs var/source due to signals +/obj/item/toy/plush/random_plushie/proc/create_plushie(datum/source) + SIGNAL_HANDLER + if(source) + UnregisterSignal(source, COMSIG_POST_SPAWN_UPDATE) + var/turf/spawn_location = get_turf(src) + var/plush_list_variety = pick(60; plush_list, 40; therapy_plush_list) + var/random_plushie = pick(plush_list_variety) + var/obj/item/toy/plush/plush = new random_plushie(spawn_location) //Starts on floor by default + var/mob/living/carbon/human/user = source + + if(!user) //If it didn't spawn on a humanoid + qdel(src) + return + + var/obj/item/storage/backpack/storage = locate() in user //If the user has a backpack, put it there + if(storage?.can_be_inserted(plush, user, stop_messages = TRUE)) + storage.attempt_item_insertion(plush, TRUE, user) + if(plush.loc == spawn_location) // Still on the ground + user.put_in_hands(plush, drop_on_fail = TRUE) + qdel(src) + +//Admin plushies +/obj/item/toy/plush/yautja + name = "strange plush" + desc = "A plush doll depicting some sort of tall humanoid biped..?" + icon_state = "yautja" + black_market_value = 100 + +/obj/item/toy/plush/runner + name = "\improper XX-121 therapy plush" + desc = "Don't be sad! Be glad (that you're alive)!" + icon_state = "runner" + /// If the runner is wearing a beret + var/beret = FALSE + +/obj/item/toy/plush/runner/Initialize(mapload, ...) + . = ..() + if(beret) + update_icon() + +/obj/item/toy/plush/runner/attackby(obj/item/attacking_object, mob/user) + . = ..() + if(beret) + return + if(!istypestrict(attacking_object, /obj/item/clothing/head/beret/marine/mp)) + return + var/beret_attack = attacking_object + to_chat(user, SPAN_NOTICE("You put [beret_attack] on [src].")) + qdel(beret_attack) + beret = TRUE + update_icon() + +/obj/item/toy/plush/runner/update_icon() + . = ..() + if(beret) + icon_state = "runner_beret" + return + icon_state = "runner" + +/obj/item/toy/plush/shark/alt + icon_state = "shark_alt" diff --git a/code/game/objects/items/weapons/blades.dm b/code/game/objects/items/weapons/blades.dm index dccbf56049e0..a2a4aa8db75d 100644 --- a/code/game/objects/items/weapons/blades.dm +++ b/code/game/objects/items/weapons/blades.dm @@ -1,45 +1,59 @@ -/obj/item/weapon/claymore - name = "claymore" - desc = "What are you standing around staring at this for? Get to killing!" - icon_state = "claymore" - item_state = "claymore" +/obj/item/weapon/sword + name = "combat sword" + desc = "A dusty sword commonly seen in historical museums. Where you got this is a mystery, for sure. Only a mercenary would be nuts enough to carry one of these. Sharpened to deal massive damage." + icon_state = "mercsword" + item_state = "machete" flags_atom = FPRINT|CONDUCT flags_equip_slot = SLOT_WAIST force = MELEE_FORCE_STRONG throwforce = MELEE_FORCE_WEAK sharp = IS_SHARP_ITEM_BIG edge = 1 - w_class = SIZE_MEDIUM + w_class = SIZE_LARGE hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") attack_speed = 9 -/obj/item/weapon/claymore/mercsword - name = "combat sword" - desc = "A dusty sword commonly seen in historical museums. Where you got this is a mystery, for sure. Only a mercenary would be nuts enough to carry one of these. Sharpened to deal massive damage." - icon_state = "mercsword" - item_state = "machete" +/obj/item/weapon/sword/claymore + name = "claymore" + desc = "What are you standing around staring at this for? Get to killing!" + icon_state = "claymore" + item_state = "claymore" -/obj/item/weapon/claymore/mercsword/ceremonial +/obj/item/weapon/sword/ceremonial name = "Ceremonial Sword" desc = "A fancy ceremonial sword passed down from generation to generation. Despite this, it has been very well cared for, and is in top condition." icon_state = "ceremonial" - item_state = "machete" -/obj/item/weapon/claymore/mercsword/machete +/obj/item/weapon/sword/machete name = "\improper M2132 machete" desc = "Latest issue of the USCM Machete. Great for clearing out jungle or brush on outlying colonies. Found commonly in the hands of scouts and trackers, but difficult to carry with the usual kit." icon_state = "machete" - w_class = SIZE_LARGE -/obj/item/weapon/claymore/mercsword/machete/arnold +/obj/item/weapon/sword/machete/attack_self(mob/user) + if(user.action_busy) + return + + var/turf/root = get_turf(user) + var/facing = user.dir + var/turf/in_front = get_step(root, facing) + + // We check the tile in front of us, if it has flora that can be cut we will attempt to cut it + for(var/obj/structure/flora/target in in_front) + if(target.cut_level > 1) + if(!do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + return + target.attackby(src, user) + + return ..() + +/obj/item/weapon/sword/machete/arnold name = "\improper M2100 \"Ngájhe\" machete" desc = "An older issue USCM machete, never left testing. Designed in the Central African Republic. The notching made it hard to clean, and as such the USCM refused to adopt it - despite the superior bludgeoning power offered. Difficult to carry with the usual kit." icon_state = "arnold-machete" - w_class = SIZE_LARGE force = MELEE_FORCE_TIER_11 -/obj/item/weapon/claymore/hefa +/obj/item/weapon/sword/hefa name = "HEFA sword" icon_state = "hefasword" item_state = "hefasword" @@ -48,7 +62,7 @@ var/primed = FALSE -/obj/item/weapon/claymore/hefa/proc/apply_explosion_overlay() +/obj/item/weapon/sword/hefa/proc/apply_explosion_overlay() var/obj/effect/overlay/O = new /obj/effect/overlay(loc) O.name = "grenade" O.icon = 'icons/effects/explosion.dmi' @@ -56,7 +70,7 @@ QDEL_IN(O, 7) return -/obj/item/weapon/claymore/hefa/attack_self(mob/user) +/obj/item/weapon/sword/hefa/attack_self(mob/user) ..() primed = !primed @@ -65,7 +79,7 @@ msg = "You de-activate \the [src]!" to_chat(user, SPAN_NOTICE(msg)) -/obj/item/weapon/claymore/hefa/attack(mob/target, mob/user) +/obj/item/weapon/sword/hefa/attack(mob/target, mob/user) . = ..() if(!primed) return @@ -80,22 +94,15 @@ cell_explosion(epicenter, 40, 18, EXPLOSION_FALLOFF_SHAPE_LINEAR, user.dir, cause_data) qdel(src) -/obj/item/weapon/katana +/obj/item/weapon/sword/katana name = "katana" desc = "A finely made Japanese sword, with a well sharpened blade. The blade has been filed to a molecular edge, and is extremely deadly. Commonly found in the hands of mercenaries and yakuza." icon_state = "katana" - flags_atom = FPRINT|CONDUCT + item_state = "katana" force = MELEE_FORCE_VERY_STRONG - throwforce = MELEE_FORCE_WEAK - sharp = IS_SHARP_ITEM_BIG - edge = 1 - w_class = SIZE_MEDIUM - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - attack_speed = 9 //To do: replace the toys. -/obj/item/weapon/katana/replica +/obj/item/weapon/sword/katana/replica name = "replica katana" desc = "A cheap knock-off commonly found in regular knife stores. Can still do some damage." force = MELEE_FORCE_WEAK @@ -206,6 +213,8 @@ else INVOKE_ASYNC(embedded_human, TYPE_PROC_REF(/mob, emote), "me", 1, pick("winces.", "grimaces.", "flinches.")) + SEND_SIGNAL(embedded_human, COMSIG_HUMAN_SHRAPNEL_REMOVED) + else to_chat(user, SPAN_NOTICE("You couldn't find any shrapnel.")) @@ -229,3 +238,142 @@ WEAR_L_HAND = 'icons/mob/humans/onmob/items_lefthand_64.dmi', WEAR_R_HAND = 'icons/mob/humans/onmob/items_righthand_64.dmi' ) + +/obj/item/weapon/straight_razor + name = "straight razor" + desc = "The commandant's favorite weapon against marines who dare break the grooming standards." + icon_state = "razor" + hitsound = 'sound/weapons/genhit3.ogg' + force = MELEE_FORCE_TIER_1 + throwforce = MELEE_FORCE_TIER_1 + throw_speed = SPEED_VERY_FAST + throw_range = 6 + ///Icon state for opened razor + var/enabled_icon = "razor" + ///Icon state for closed razor + var/disabled_icon = "razor_off" + ///If the razor is able to be used + var/razor_opened = FALSE + ///Time taken to open/close the razor + var/interaction_time = 3 SECONDS + +/obj/item/weapon/straight_razor/Initialize(mapload, ...) + . = ..() + RegisterSignal(src, COMSIG_ITEM_ATTEMPTING_EQUIP, PROC_REF(can_fit_in_shoe)) + change_razor_state(razor_opened) + if(prob(1)) + desc += " There is phrase etched into it, \"It can guarantee the closest shave you'll ever know.\"..." + +/obj/item/weapon/straight_razor/update_icon() + . = ..() + if(razor_opened) + icon_state = enabled_icon + return + icon_state = disabled_icon + +/obj/item/weapon/straight_razor/attack_hand(mob/user) + if(loc != user) //Only do unique stuff if you are holding it + return ..() + + if(!do_after(user, interaction_time, INTERRUPT_INCAPACITATED, BUSY_ICON_HOSTILE)) + return + playsound(user, 'sound/weapons/flipblade.ogg', 15, 1) + change_razor_state(!razor_opened) + to_chat(user, SPAN_NOTICE("You [razor_opened ? "reveal" : "hide"] [src]'s blade.")) + +///Check if the item can fit as a boot knife, var/source for signals +/obj/item/weapon/straight_razor/proc/can_fit_in_shoe(source = src, mob/user, slot) + if(slot != WEAR_IN_SHOES) //Only check if you try putting it in a shoe + return + if(razor_opened) + to_chat(user, SPAN_NOTICE("You cannot store [src] in your shoes until the blade is hidden.")) + return COMPONENT_CANCEL_EQUIP + +///Changes all the vars for the straight razor +/obj/item/weapon/straight_razor/proc/change_razor_state(opening = FALSE) + razor_opened = opening + update_icon() + if(opening) + force = MELEE_FORCE_NORMAL + throwforce = MELEE_FORCE_NORMAL + sharp = IS_SHARP_ITEM_ACCURATE + edge = TRUE + attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + hitsound = 'sound/weapons/slash.ogg' + if(!(flags_item & CAN_DIG_SHRAPNEL)) + flags_item |= CAN_DIG_SHRAPNEL + return + force = MELEE_FORCE_TIER_1 + throwforce = MELEE_FORCE_TIER_1 + sharp = FALSE + edge = FALSE + attack_verb = list("smashed", "beaten", "slammed", "struck", "smashed", "battered", "cracked") + hitsound = 'sound/weapons/genhit3.ogg' + if(flags_item & CAN_DIG_SHRAPNEL) + flags_item &= ~CAN_DIG_SHRAPNEL + +/obj/item/weapon/straight_razor/verb/change_hair_style() + set name = "Change Hair Style" + set desc = "Change your hair style" + set category = "Object" + set src in usr + + var/mob/living/carbon/human/human_user = usr + if(!istype(human_user)) + return + + if(!razor_opened) + to_chat(human_user, SPAN_NOTICE("You need to reveal [src]'s blade to change your hairstyle.")) + return + + var/list/species_facial_hair = GLOB.facial_hair_styles_list + var/list/species_hair = GLOB.hair_styles_list + + if(human_user.species) //Facial hair + species_facial_hair = list() + for(var/current_style in GLOB.facial_hair_styles_list) + var/datum/sprite_accessory/facial_hair/temp_beard_style = GLOB.facial_hair_styles_list[current_style] + if(!(human_user.species.name in temp_beard_style.species_allowed)) + continue + if(!temp_beard_style.selectable) + continue + species_facial_hair += current_style + + if(human_user.species) //Hair + species_hair = list() + for(var/current_style in GLOB.hair_styles_list) + var/datum/sprite_accessory/hair/temp_hair_style = GLOB.hair_styles_list[current_style] + if(!(human_user.species.name in temp_hair_style.species_allowed)) + continue + if(!temp_hair_style.selectable) + continue + species_hair += current_style + + var/new_beard_style + var/new_hair_style + if(human_user.gender == MALE) + new_beard_style = tgui_input_list(human_user, "Select a facial hair style", "Grooming", species_facial_hair) + new_hair_style = tgui_input_list(human_user, "Select a hair style", "Grooming", species_hair) + + if(loc != human_user) + to_chat(human_user, SPAN_NOTICE("You are too far from [src] to change your hair styles.")) + return + + if(!new_beard_style && !new_hair_style) + return + + if(!do_after(human_user, interaction_time, INTERRUPT_ALL, BUSY_ICON_GENERIC)) + return + + if(!razor_opened) + to_chat(human_user, SPAN_NOTICE("You need to reveal [src]'s blade to change your hairstyle.")) + return + + if(new_beard_style) + human_user.f_style = new_beard_style + if(new_hair_style) + human_user.h_style = new_hair_style + + human_user.apply_damage(rand(1,5), BRUTE, "head", src) + human_user.update_hair() + diff --git a/code/game/objects/items/weapons/misc.dm b/code/game/objects/items/weapons/misc.dm index 26a0a59b8090..d46619e581e9 100644 --- a/code/game/objects/items/weapons/misc.dm +++ b/code/game/objects/items/weapons/misc.dm @@ -27,7 +27,7 @@ edge = 0 var/icon/broken_outline = icon('icons/obj/items/drinks.dmi', "broken") -/obj/item/weapon/broken_bottle/bullet_act(obj/item/projectile/P) +/obj/item/weapon/broken_bottle/bullet_act(obj/projectile/P) . = ..() new/obj/item/shard(src.loc) new/obj/item/shard(src.loc) @@ -50,7 +50,7 @@ edge = 0 var/icon/broken_outline = icon('icons/obj/items/drinks.dmi', "broken") -/obj/item/weapon/broken_glass/bullet_act(obj/item/projectile/P) +/obj/item/weapon/broken_glass/bullet_act(obj/projectile/P) . = ..() new/obj/item/shard(src.loc) new/obj/item/shard(src.loc) diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 80af739a2410..0497a410a373 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -71,6 +71,10 @@ throw_range = 4 w_class = SIZE_LARGE matter = list("glass" = 7500, "metal" = 1000) + item_icons = list( + WEAR_L_HAND = 'icons/mob/humans/onmob/items_lefthand_1.dmi', + WEAR_R_HAND = 'icons/mob/humans/onmob/items_righthand_1.dmi' + ) attack_verb = list("shoved", "bashed") var/cooldown = 0 //shield bash cooldown. based on world.time @@ -85,7 +89,7 @@ /obj/item/weapon/shield/riot/attackby(obj/item/W as obj, mob/user as mob) if(cooldown < world.time - 25) - if(istype(W, /obj/item/weapon/baton) || istype(W, /obj/item/weapon/claymore) || istype(W, /obj/item/weapon/baseballbat) || istype(W, /obj/item/weapon/katana) || istype(W, /obj/item/weapon/twohanded/fireaxe) || istype(W, /obj/item/weapon/chainofcommand)) + if(istype(W, /obj/item/weapon/baton) || istype(W, /obj/item/weapon/sword) || istype(W, /obj/item/weapon/baseballbat) || istype(W, /obj/item/weapon/twohanded/fireaxe) || istype(W, /obj/item/weapon/chainofcommand)) user.visible_message(SPAN_WARNING("[user] bashes [src] with [W]!")) playsound(user.loc, 'sound/effects/shieldbash.ogg', 25, 1) cooldown = world.time @@ -108,3 +112,22 @@ attack_verb = list("shoved", "bashed") var/active = 0 + +/obj/item/weapon/shield/riot/metal + name = "metal shield" + name = "A metal riot shield effective, but heavy." + icon_state = "riotmetal" + item_state = "riotmetal" + base_icon_state = "riotmetal" + passive_block = 40 + readied_block = 60 + +/obj/item/weapon/shield/riot/ballistic //FOR THE ROYAL MARINE SPEC DO NOT TOUCH SMELLY MAN + name = "FBS-B Ballistic shield" + desc = "Ballistic shield used by the royal marines commando. This shield is commonly used during boarding actions due to its lightweight but durible design." + desc_lore = "The Fox Ballistic Shield-B (FBS-B), was originally introduced as the FBS, attempting to be a solution to high-impact operations following increased counter-insurgency deployments since 2151. It was designed to provide maximum protection, and for the user to be able to utilize their primary armament in tandem. By 2163 tertiary ballistics trials were undertaken to ascertain it's effectiveness against improved munitions, and was additionally used as an opportunity to deal with user complaints making their way up from quartermasters. The complaints of the original FBS were twofold: weight and extended usage in combat causing the side to melt closest to the barrel. After further material research and in the field tests were conducted, by 2171, the FBS had attained a ballistics protection classification of D, the highest available for a portable shield, by being able to stop a singular armor piercing round. This reported success was due to the usage of a new fibre reinforced lightweight composite. In the wake of the successful improvements, the FBS was later christened the FBS-B as with the enhanced shield, the user had a tendency for maximum aggression during engagements. The nickname 'Bellicose' was given to breachers by their squaddies and later became it's official designation." + icon_state = "ballisticshield" + item_state = "ballisticshield" + base_icon_state = "ballisticshield" + passive_block = 60 + readied_block = 90 diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 20e5ac4f9bdc..2362a70e6e1e 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -5,15 +5,15 @@ item_state = "baton" flags_equip_slot = SLOT_WAIST force = 15 - sharp = 0 - edge = 0 throwforce = 7 + sharp = FALSE + edge = FALSE w_class = SIZE_MEDIUM attack_verb = list("beaten") - req_one_access = list(ACCESS_MARINE_BRIG, ACCESS_MARINE_ARMORY, ACCESS_MARINE_SENIOR, ACCESS_WY_CORPORATE, ACCESS_WY_PMC_GREEN, ACCESS_CIVILIAN_BRIG) + req_one_access = list(ACCESS_MARINE_BRIG, ACCESS_MARINE_ARMORY, ACCESS_MARINE_SENIOR, ACCESS_WY_GENERAL, ACCESS_WY_SECURITY, ACCESS_CIVILIAN_BRIG) var/stunforce = 50 - var/status = 0 //whether the thing is on or not + var/status = FALSE //whether the thing is on or not var/obj/item/cell/bcell = null var/hitcost = 1000 //oh god why do power cells carry so much charge? We probably need to make a distinction between "industrial" sized power cells for APCs and power cells for everything else. var/has_user_lock = TRUE //whether the baton prevents people without correct access from using it. @@ -58,37 +58,6 @@ else . += SPAN_WARNING("The baton does not have a power source installed.") -/obj/item/weapon/baton/attack_hand(mob/user) - if(check_user_auth(user)) - ..() - - -/obj/item/weapon/baton/equipped(mob/user, slot) - ..() - check_user_auth(user) - - -//checks if the mob touching the baton has proper access -/obj/item/weapon/baton/proc/check_user_auth(mob/user) - if(!has_user_lock) - return TRUE - var/mob/living/carbon/human/H = user - if(istype(H)) - var/obj/item/card/id/I = H.wear_id - if(!istype(I) || !check_access(I) && status) - var/datum/effect_system/spark_spread/s = new - s.set_up(5, 1, src.loc) - H.visible_message(SPAN_NOTICE("[src] beeps as [H] picks it up"), SPAN_DANGER("WARNING: Unauthorized user detected. Denying access...")) - H.visible_message(SPAN_WARNING("[src] beeps and sends a shock through [H]'s body!")) - H.emote("pain") - s.start() - deductcharge(hitcost) - add_fingerprint(user) - return FALSE - return TRUE -/obj/item/weapon/baton/pull_response(mob/puller) - return check_user_auth(puller) - /obj/item/weapon/baton/attackby(obj/item/W, mob/user) if(istype(W, /obj/item/cell)) @@ -106,7 +75,7 @@ bcell.update_icon() bcell.forceMove(get_turf(src.loc)) bcell = null - to_chat(user, SPAN_NOTICE("You remove the cell from the [src].")) + to_chat(user, SPAN_NOTICE("You remove the cell from [src].")) status = 0 update_icon() return @@ -132,17 +101,20 @@ add_fingerprint(user) -/obj/item/weapon/baton/attack(mob/M, mob/user) - if(has_user_lock && !skillcheck(user, SKILL_POLICE, SKILL_POLICE_SKILLED)) - to_chat(user, SPAN_WARNING("You don't seem to know how to use [src]...")) - return - - if(isrobot(M)) - ..() - return - - var/stun = stunforce - var/mob/living/L = M +/obj/item/weapon/baton/attack(mob/target, mob/user) + var/mob/living/carbon/human/real_user = user + var/mob/living/carbon/human/human_target = target + if(has_user_lock && !skillcheck(real_user, SKILL_POLICE, SKILL_POLICE_SKILLED)) + if(prob(70) && status) + to_chat(real_user, SPAN_WARNING("You hit yourself with the [src] during the struggle...")) + real_user.drop_held_item() + real_user.apply_effect(1,STUN) + human_target = real_user + if(prob(20) && !status) //a relatively reliable melee weapon when turned off. + to_chat(real_user, SPAN_WARNING("You grab the [src] incorrectly twisting your hand in the process.")) + real_user.drop_held_item() + real_user.apply_effect(1,STUN) + real_user.apply_damage(force, BRUTE, pick("l_hand","r_hand"), no_limb_loss = TRUE) var/target_zone = check_zone(user.zone_selected) if(user.a_intent == INTENT_HARM) @@ -154,40 +126,42 @@ else //copied from human_defense.dm - human defence code should really be refactored some time. - if (ishuman(L)) + if (ishuman(human_target)) if(!target_zone) //shouldn't ever happen - L.visible_message(SPAN_DANGER("[user] misses [L] with \the [src]!")) + human_target.visible_message(SPAN_DANGER("[user] misses [human_target] with \the [src]!")) return FALSE - var/mob/living/carbon/human/H = L + var/mob/living/carbon/human/H = human_target var/obj/limb/affecting = H.get_limb(target_zone) if (affecting) if(!status) - L.visible_message(SPAN_WARNING("[L] has been prodded in the [affecting.display_name] with [src] by [user]. Luckily it was off.")) + human_target.visible_message(SPAN_WARNING("[human_target] has been prodded in the [affecting.display_name] with [src] by [user]. Luckily it was off.")) return TRUE else - H.visible_message(SPAN_DANGER("[L] has been prodded in the [affecting.display_name] with [src] by [user]!")) + H.visible_message(SPAN_DANGER("[human_target] has been prodded in the [affecting.display_name] with [src] by [user]!")) else if(!status) - L.visible_message(SPAN_WARNING("[L] has been prodded with [src] by [user]. Luckily it was off.")) + human_target.visible_message(SPAN_WARNING("[human_target] has been prodded with [src] by [user]. Luckily it was off.")) return TRUE else - L.visible_message(SPAN_DANGER("[L] has been prodded with [src] by [user]!")) + human_target.visible_message(SPAN_DANGER("[human_target] has been prodded with [src] by [user]!")) //stun effects - if(!isyautja(L) && !isxeno(L)) //Xenos and Predators are IMMUNE to all baton stuns. - L.emote("pain") - L.apply_stamina_damage(stun, target_zone, ARMOR_ENERGY) + if(!isyautja(human_target) && !isxeno(human_target)) //Xenos and Predators are IMMUNE to all baton stuns. + human_target.emote("pain") + human_target.apply_stamina_damage(stunforce, target_zone, ARMOR_ENERGY) + human_target.sway_jitter(2,1) + // Logging - if(user == L) - user.attack_log += "\[[time_stamp()]\] [key_name(user)] stunned themselves with the [src] in [get_area(user)]" + if(user == human_target) + user.attack_log += "\[[time_stamp()]\] [key_name(user)] stunned themselves with [src] in [get_area(user)]" else - msg_admin_attack("[key_name(user)] stunned [key_name(L)] with the [src] in [get_area(user)] ([user.loc.x],[user.loc.y],[user.loc.z]).", user.loc.x, user.loc.y, user.loc.z) - var/logentry = "\[[time_stamp()]\] [key_name(user)] stunned [key_name(L)] with the [src] in [get_area(user)]" - L.attack_log += logentry + msg_admin_attack("[key_name(user)] stunned [key_name(human_target)] with [src] in [get_area(user)] ([user.loc.x],[user.loc.y],[user.loc.z]).", user.loc.x, user.loc.y, user.loc.z) + var/logentry = "\[[time_stamp()]\] [key_name(user)] stunned [key_name(human_target)] with [src] in [get_area(user)]" + human_target.attack_log += logentry user.attack_log += logentry playsound(loc, 'sound/weapons/Egloves.ogg', 25, 1, 6) @@ -197,20 +171,9 @@ return TRUE /obj/item/weapon/baton/emp_act(severity) + . = ..() if(bcell) bcell.emp_act(severity) //let's not duplicate code everywhere if we don't have to please. - ..() - -//secborg stun baton module -/obj/item/weapon/baton/robot/attack_self(mob/user) - //try to find our power cell - var/mob/living/silicon/robot/R = loc - if (istype(R)) - bcell = R.cell - return ..() - -/obj/item/weapon/baton/robot/attackby(obj/item/W, mob/user) - return //Makeshift stun baton. Replacement for stun gloves. /obj/item/weapon/baton/cattleprod diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index ec7ee0b173da..cdab7db87ed7 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -45,7 +45,7 @@ w_class = SIZE_SMALL force = MELEE_FORCE_WEAK var/on = 0 - var/stunforce = 60 + var/stun_force = 10 /obj/item/weapon/telebaton/attack(mob/living/carbon/human/target, mob/living/user) if(!istype(target) || !on) @@ -67,6 +67,7 @@ item_state = "telebaton_1" w_class = SIZE_MEDIUM force = MELEE_FORCE_VERY_STRONG + stun_force = 40 attack_verb = list("smacked", "struck", "slapped", "beat") else user.visible_message(SPAN_NOTICE("Using a smooth, practiced movement, [user] collapses \his [src]."),\ @@ -75,7 +76,8 @@ icon_state = "telebaton_0" item_state = "telebaton_0" w_class = SIZE_SMALL - force = MELEE_FORCE_WEAK//not so robust now + force = MELEE_FORCE_WEAK + stun_force = initial(stun_force) attack_verb = list("hit", "punched") if(istype(user,/mob/living/carbon/human)) @@ -100,8 +102,17 @@ user.flick_attack_overlay(target, "punch") log_interact(user, target, "[key_name(user)] stunned [key_name(target)] with \the [src]") // Hit 'em + var/final_stun_force = stun_force + var/datum/skills/user_skills = user.skills + if(user_skills) + switch(user_skills.get_skill_level(SKILL_POLICE)) + if(SKILL_POLICE_FLASH) + final_stun_force *= 1.5 + if(SKILL_POLICE_SKILLED) + final_stun_force *= 3 + var/target_zone = check_zone(user.zone_selected) - target.apply_stamina_damage(stunforce, target_zone, ARMOR_MELEE) + target.apply_stamina_damage(final_stun_force, target_zone, ARMOR_MELEE) if(target.stamina.current_stamina <= 0) user.visible_message(SPAN_DANGER("[user] knocks down [target] with \the [src]!"),\ SPAN_WARNING("You knock down [target] with \the [src]!")) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index c9bfb9b9f757..be7571fa84a1 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -323,13 +323,25 @@ item_state = "syn_breacher" force_wielded = MELEE_FORCE_VERY_STRONG really_heavy = TRUE + var/move_delay_addition = 1.5 /obj/item/weapon/twohanded/breacher/synth/pickup(mob/user) if(!(HAS_TRAIT(user, TRAIT_SUPER_STRONG))) - to_chat(user, SPAN_WARNING("You barely manage to lift \the [src] above your knees. This thing will probably be useless to you.")) + to_chat(user, SPAN_HIGHDANGER("You barely manage to lift [src] above your knees. This thing will probably be useless to you.")) + user.apply_effect(3, EYE_BLUR) + RegisterSignal(user, COMSIG_HUMAN_POST_MOVE_DELAY, PROC_REF(handle_movedelay)) + return ..() +/obj/item/weapon/twohanded/breacher/synth/proc/handle_movedelay(mob/living/M, list/movedata) + SIGNAL_HANDLER + movedata["move_delay"] += move_delay_addition + +/obj/item/weapon/twohanded/breacher/synth/dropped(mob/user, silent) + . = ..() + UnregisterSignal(user, COMSIG_HUMAN_POST_MOVE_DELAY) + /obj/item/weapon/twohanded/breacher/synth/attack(target as mob, mob/living/user as mob) if(!HAS_TRAIT(user, TRAIT_SUPER_STRONG)) to_chat(user, SPAN_WARNING("\The [src] is too heavy for you to use as a weapon!")) diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index aaa2a33d4e63..f3c76bcff638 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -113,7 +113,7 @@ w_class = SIZE_MEDIUM attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") else - to_chat(user, SPAN_NOTICE("The [src] can now be concealed.")) + to_chat(user, SPAN_NOTICE("[src] can now be concealed.")) force = initial(force) edge = 0 sharp = 0 @@ -167,7 +167,7 @@ update_icon(user) -/obj/item/weapon/katana/sharp +/obj/item/weapon/sword/katana/sharp name = "absurdly sharp katana" desc = "

        That's it. I'm sick of all this \"Masterwork Bastard Sword\" bullshit that's going on in CM-SS13 right now. Katanas deserve much better than that. Much, much better than that.

        \

        I should know what I'm talking about. I myself commissioned a genuine katana in Japan for 2,400,000 Yen (that's about $20,000) and have been practicing with it for almost 2 years now. I can even cut slabs of solid steel with my katana.

        \ @@ -190,7 +190,7 @@ attack_verb = list("sliced", "diced", "cut") -/obj/item/weapon/katana/sharp/attack(mob/living/M, mob/living/user) +/obj/item/weapon/sword/katana/sharp/attack(mob/living/M, mob/living/user) if(flags_item & NOBLUDGEON) return @@ -223,7 +223,7 @@ //if the target also has a katana (and we aren't attacking ourselves), we add some suspense - if( ( istype(M.get_active_hand(), /obj/item/weapon/katana) || istype(M.get_inactive_hand(), /obj/item/weapon/katana) ) && M != user ) + if( ( istype(M.get_active_hand(), /obj/item/weapon/sword/katana) || istype(M.get_inactive_hand(), /obj/item/weapon/sword/katana) ) && M != user ) if(prob(50)) user.visible_message(SPAN_DANGER("[M] and [user] cross blades!")) @@ -260,7 +260,7 @@ M.apply_effect(kill_delay/15, STUN) - for (var/mob/O in hearers(world_view_size, M)) + for (var/mob/O in hearers(GLOB.world_view_size, M)) O << sound('sound/effects/Heart Beat.ogg', repeat = 1, wait = 0, volume = 100, channel = 2) //play on same channel as ambience spawn(kill_delay) O << sound(, , , , channel = 2) //cut sound diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 42a3a2f0b9ea..8a37eef3ee73 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -14,7 +14,8 @@ /// If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! var/in_use = FALSE var/mob/living/buckled_mob - var/buckle_lying = FALSE //Is the mob buckled in a lying position + /// Bed-like behaviour, forces mob.lying = buckle_lying if not set to [NO_BUCKLE_LYING]. + var/buckle_lying = NO_BUCKLE_LYING var/can_buckle = FALSE /**Applied to surgery times for mobs buckled prone to it or lying on the same tile, if the surgery cares about surface conditions. The lowest multiplier of objects on the tile is used.**/ @@ -29,6 +30,8 @@ var/list/req_one_access = null var/req_access_txt = null var/req_one_access_txt = null + ///Whether or not this instance is using accesses different from initial code. Used for easy locating in map files. + var/access_modified = FALSE var/flags_obj = NO_FLAGS /// set when a player uses a pen on a renamable object @@ -40,7 +43,7 @@ if(garbage) add_to_garbage(src) -/obj/Destroy() +/obj/Destroy(force) if(buckled_mob) unbuckle() . = ..() @@ -147,7 +150,7 @@ if ((M.client && M.interactee == src)) is_in_use = 1 attack_hand(M) - if (ishighersilicon(usr)) + if (isSilicon(usr)) if (!(usr in nearby)) if (usr.client && usr.interactee==src) // && M.interactee == src is omitted because if we triggered this by using the dialog, it doesn't matter if our machine changed in between triggering it and this - the dialog is probably still supposed to refresh. is_in_use = 1 @@ -163,10 +166,7 @@ if ((M.client && M.interactee == src)) is_in_use = 1 src.interact(M) - var/ai_in_use = AutoUpdateAI(src) - - if(!ai_in_use && !is_in_use) - in_use = 0 + in_use = is_in_use /obj/proc/interact(mob/user) return @@ -222,14 +222,20 @@ else . = ..() /obj/proc/afterbuckle(mob/M as mob) // Called after somebody buckled / unbuckled - handle_rotation() + handle_rotation() // To be removed when we have full dir support in set_buckled + SEND_SIGNAL(src, COSMIG_OBJ_AFTER_BUCKLE, buckled_mob) + if(!buckled_mob) + UnregisterSignal(M, COMSIG_PARENT_QDELETING) + else + RegisterSignal(buckled_mob, COMSIG_PARENT_QDELETING, PROC_REF(unbuckle)) return buckled_mob /obj/proc/unbuckle() + SIGNAL_HANDLER if(buckled_mob && buckled_mob.buckled == src) - buckled_mob.buckled = null + buckled_mob.clear_alert(ALERT_BUCKLED) + buckled_mob.set_buckled(null) buckled_mob.anchored = initial(buckled_mob.anchored) - buckled_mob.update_canmove() var/M = buckled_mob REMOVE_TRAITS_IN(buckled_mob, TRAIT_SOURCE_BUCKLE) @@ -260,7 +266,7 @@ //trying to buckle a mob /obj/proc/buckle_mob(mob/M, mob/user) - if (!ismob(M) || (get_dist(src, user) > 1) || user.is_mob_restrained() || user.lying || user.stat || buckled_mob || M.buckled || !isturf(user.loc)) + if (!ismob(M) || (get_dist(src, user) > 1) || user.is_mob_restrained() || user.stat || buckled_mob || M.buckled || !isturf(user.loc)) return if (isxeno(user)) @@ -269,6 +275,11 @@ if (iszombie(user)) return + // mobs that become immobilized should not be able to buckle themselves. + if(M == user && HAS_TRAIT(user, TRAIT_IMMOBILIZED)) + to_chat(user, SPAN_WARNING("You are unable to do this in your current state.")) + return + if(density) density = FALSE if(!step(M, get_dir(M, src)) && loc != M.loc) @@ -291,22 +302,16 @@ // the actual buckling proc // Yes I know this is not style but its unreadable otherwise -/obj/proc/do_buckle(mob/target, mob/user) +/obj/proc/do_buckle(mob/living/target, mob/user) send_buckling_message(target, user) if (src && src.loc) - target.buckled = src + target.throw_alert(ALERT_BUCKLED, /atom/movable/screen/alert/buckled) + target.set_buckled(src) target.forceMove(src.loc) target.setDir(dir) - target.update_canmove() src.buckled_mob = target src.add_fingerprint(user) afterbuckle(target) - if(buckle_lying) // Make sure buckling to beds/nests etc only turns, and doesn't give a random offset - var/matrix/M = matrix() - var/matrix/L = matrix() //Counterrotation for langchat text. - M.Turn(90) - L.Turn(270) - target.apply_transform(M) return TRUE /obj/proc/send_buckling_message(mob/M, mob/user) @@ -352,7 +357,7 @@ return ..() -/obj/bullet_act(obj/item/projectile/P) +/obj/bullet_act(obj/projectile/P) //Tasers and the like should not damage objects. if(P.ammo.damage_type == HALLOSS || P.ammo.damage_type == TOX || P.ammo.damage_type == CLONE || P.damage == 0) return 0 @@ -386,7 +391,7 @@ else if(LAZYISIN(item_icons, slot)) mob_icon = item_icons[slot] else - mob_icon = default_onmob_icons[slot] + mob_icon = GLOB.default_onmob_icons[slot] var/image/overlay_img diff --git a/code/game/objects/prop.dm b/code/game/objects/prop.dm index e59c24b30d5f..c067a9730e70 100644 --- a/code/game/objects/prop.dm +++ b/code/game/objects/prop.dm @@ -11,6 +11,66 @@ w_class = SIZE_SMALL garbage = TRUE +/obj/item/prop/geiger_counter + name = "geiger counter" + desc = "A geiger counter measures the radiation it receives. This type automatically records and transfers any information it reads, provided it has a battery, with no user input required beyond being enabled." + icon = 'icons/obj/items/devices.dmi' + icon_state = "geiger" + item_state = "" + w_class = SIZE_SMALL + flags_equip_slot = SLOT_WAIST + ///Whether the geiger counter is on or off + var/toggled_on = FALSE + ///Iconstate of geiger counter when on + var/enabled_state = "geiger_on" + ///Iconstate of geiger counter when off + var/disabled_state = "geiger" + ///New battery it will spawn with + var/starting_battery = /obj/item/cell/crap + ///Battery inside geiger counter + var/obj/item/cell/battery //It doesn't drain the battery, but it has a battery for emergency use + +/obj/item/prop/geiger_counter/Initialize(mapload, ...) + . = ..() + if(!starting_battery) + return + battery = new starting_battery(src) + +/obj/item/prop/geiger_counter/Destroy() + . = ..() + if(battery) + qdel(battery) + +/obj/item/prop/geiger_counter/attack_self(mob/user) + . = ..() + toggled_on = !toggled_on + if(!battery) + to_chat(user, SPAN_NOTICE("[src] is missing a battery.")) + return + to_chat(user, SPAN_NOTICE("You [toggled_on ? "enable" : "disable"] [src].")) + update_icon() + +/obj/item/prop/geiger_counter/attackby(obj/item/attacking_item, mob/user) + . = ..() + if(!HAS_TRAIT(attacking_item, TRAIT_TOOL_SCREWDRIVER) && !HAS_TRAIT(attacking_item, TRAIT_TOOL_CROWBAR)) + return + + if(!battery) + to_chat(user, SPAN_NOTICE("There is no battery for you to remove.")) + return + to_chat(user, SPAN_NOTICE("You jam [battery] out of [src] with [attacking_item], prying it out irreversibly.")) + user.put_in_hands(battery) + battery = null + update_icon() + +/obj/item/prop/geiger_counter/update_icon() + . = ..() + + if(battery && toggled_on) + icon_state = enabled_state + return + icon_state = disabled_state + /obj/item/prop/tableflag name = "United Americas table flag" icon = 'icons/obj/items/items.dmi' diff --git a/code/game/objects/shrapnel.dm b/code/game/objects/shrapnel.dm index 23fff8cbd906..d201584c7f3a 100644 --- a/code/game/objects/shrapnel.dm +++ b/code/game/objects/shrapnel.dm @@ -29,7 +29,7 @@ for(var/i=0;i 1 && anchored) + to_chat(user, SPAN_WARNING("[src] cannot be unwrenched.")) + return if(!anchored) - var/turf/open/T = loc - if(!(istype(T) && T.allow_construction)) + var/turf/open/checked_turf = loc + if(!(istype(checked_turf) && checked_turf.allow_construction)) to_chat(user, SPAN_WARNING("\The [src] cannot be secured here!")) return playsound(loc, 'sound/items/Ratchet.ogg', 25, 1) @@ -127,10 +136,10 @@ to_chat(user, SPAN_NOTICE("The airlock is not secured!")) return ..() - if(istype(W, /obj/item/circuitboard/airlock)) - var/obj/item/circuitboard/airlock/C = W - if(C.fried) // guess what this used to check? ICON STATE!! - to_chat(user, SPAN_WARNING("\The [C] are totally broken!")) + if(istype(attacking_item, /obj/item/circuitboard/airlock)) + var/obj/item/circuitboard/airlock/airlock_circuit = attacking_item + if(airlock_circuit.fried) // guess what this used to check? ICON STATE!! + to_chat(user, SPAN_WARNING("\The [airlock_circuit] are totally broken!")) return playsound(loc, 'sound/items/Screwdriver.ogg', 25, 1) to_chat(user, SPAN_NOTICE("You start installing the airlock electronics.")) @@ -138,14 +147,14 @@ return playsound(loc, 'sound/items/Screwdriver.ogg', 25, 1) user.drop_held_item() - W.forceMove(src) + attacking_item.forceMove(src) to_chat(user, SPAN_NOTICE("You installed the airlock electronics!")) state = STATE_CIRCUIT - electronics = W + electronics = attacking_item update_icon() return - if(HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER)) + if(HAS_TRAIT(attacking_item, TRAIT_TOOL_SCREWDRIVER)) if(!anchored) to_chat(user, SPAN_NOTICE("The airlock is not secured!")) return @@ -163,22 +172,22 @@ if(STATE_CIRCUIT) - if(istype(W, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/C = W - if (C.get_amount() < 1) + if(istype(attacking_item, /obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/airlock_circuit = attacking_item + if (airlock_circuit.get_amount() < 1) to_chat(user, SPAN_WARNING("You need one length of coil to wire the airlock assembly.")) return to_chat(user, SPAN_NOTICE("You start to wire the circuit.")) if(!do_after(user, 40 * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) return - if(C.use(1)) + if(airlock_circuit.use(1)) state = STATE_WIRES to_chat(user, SPAN_NOTICE("You wire the circuit.")) update_icon() return if(STATE_WIRES) - if(HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER)) + if(HAS_TRAIT(attacking_item, TRAIT_TOOL_SCREWDRIVER)) playsound(loc, 'sound/items/Screwdriver.ogg', 25, 1) to_chat(user, SPAN_NOTICE("You start securing the circuit")) if(!do_after(user, 40 * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) @@ -190,27 +199,23 @@ return if(STATE_SCREWDRIVER) - if(iswelder(W)) - if(!HAS_TRAIT(W, TRAIT_TOOL_BLOWTORCH)) + if(iswelder(attacking_item)) + if(!HAS_TRAIT(attacking_item, TRAIT_TOOL_BLOWTORCH)) to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) return - var/obj/item/tool/weldingtool/WT = W - if(!WT.remove_fuel(5, user)) + var/obj/item/tool/weldingtool/welder = attacking_item + if(!welder.remove_fuel(5, user)) return playsound(loc, 'sound/items/Welder2.ogg', 25, 1) to_chat(user, SPAN_NOTICE("Now finishing the airlock.")) if(!do_after(user, 40 * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - WT.remove_fuel(-5) + welder.remove_fuel(-5) return playsound(loc, 'sound/items/Welder2.ogg', 25, 1) to_chat(user, SPAN_NOTICE("You finish the airlock!")) - var/path - if (glass == AIRLOCK_GLASSIN) - path = text2path("/obj/structure/machinery/door/airlock/almayer/[airlock_type]/glass") - else - path = text2path("/obj/structure/machinery/door/airlock/almayer/[airlock_type]") + var/path = get_airlock_path() var/obj/structure/machinery/door/airlock/door = new path(loc) door.assembly_type = type door.electronics = electronics @@ -225,7 +230,7 @@ door.name = created_name else door.name = base_name - + door.handle_multidoor() electronics.forceMove(door) qdel(src) return @@ -238,107 +243,107 @@ else icon_state = "door_as_[base_icon_state][state]" +/obj/structure/airlock_assembly/proc/get_airlock_path() + //For some reason multi_tile doors have different paths... can't say it isn't annoying + if (width > 1) + return "/obj/structure/machinery/door/airlock/multi_tile/almayer/[airlock_type][glass ? "" : "/solid"]" + return "/obj/structure/machinery/door/airlock/almayer/[airlock_type][glass ? "/glass" : ""]" + +/// Used for overloading proc in multi_tile +/obj/structure/airlock_assembly/proc/update_collision_box() + return + /obj/structure/airlock_assembly/airlock_assembly_com base_icon_state = "com" base_name = "Command Airlock" - airlock_type = "/command" + airlock_type = "command" /obj/structure/airlock_assembly/airlock_assembly_sec base_icon_state = "sec" base_name = "Security Airlock" - airlock_type = "/security" + airlock_type = "security" /obj/structure/airlock_assembly/airlock_assembly_eng base_icon_state = "eng" base_name = "Engineering Airlock" - airlock_type = "/engineering" + airlock_type = "engineering" /obj/structure/airlock_assembly/airlock_assembly_min base_icon_state = "min" base_name = "Mining Airlock" - airlock_type = "/mining" + airlock_type = "mining" /obj/structure/airlock_assembly/airlock_assembly_atmo base_icon_state = "atmo" base_name = "Atmospherics Airlock" - airlock_type = "/atmos" + airlock_type = "atmos" /obj/structure/airlock_assembly/airlock_assembly_research base_icon_state = "res" base_name = "Research Airlock" - airlock_type = "/research" + airlock_type = "research" /obj/structure/airlock_assembly/airlock_assembly_science base_icon_state = "sci" base_name = "Science Airlock" - airlock_type = "/science" + airlock_type = "science" /obj/structure/airlock_assembly/airlock_assembly_med base_icon_state = "med" base_name = "Medical Airlock" - airlock_type = "/medical" + airlock_type = "medical" /obj/structure/airlock_assembly/airlock_assembly_mai base_icon_state = "mai" base_name = "Maintenance Airlock" - airlock_type = "/maintenance" + airlock_type = "maintenance" glass = AIRLOCK_CANTGLASS /obj/structure/airlock_assembly/airlock_assembly_ext base_icon_state = "ext" base_name = "External Airlock" - airlock_type = "/external" + airlock_type = "external" glass = AIRLOCK_CANTGLASS /obj/structure/airlock_assembly/airlock_assembly_fre base_icon_state = "fre" base_name = "Freezer Airlock" - airlock_type = "/freezer" + airlock_type = "freezer" glass = AIRLOCK_CANTGLASS /obj/structure/airlock_assembly/airlock_assembly_hatch base_icon_state = "hatch" base_name = "Airtight Hatch" - airlock_type = "/hatch" + airlock_type = "hatch" glass = AIRLOCK_CANTGLASS /obj/structure/airlock_assembly/airlock_assembly_mhatch base_icon_state = "mhatch" base_name = "Maintenance Hatch" - airlock_type = "/maintenance_hatch" + airlock_type = "maintenance_hatch" glass = AIRLOCK_CANTGLASS /obj/structure/airlock_assembly/airlock_assembly_highsecurity // Borrowing this until WJohnston makes sprites for the assembly base_icon_state = "highsec" base_name = "High Security Airlock" - airlock_type = "/highsecurity" + airlock_type = "highsecurity" glass = AIRLOCK_CANTGLASS /obj/structure/airlock_assembly/multi_tile icon = 'icons/obj/structures/doors/airlock_assembly2x1.dmi' - icon_state = "door_as_g0" - dir = EAST - var/width = 1 - -/*Temporary until we get sprites. - airlock_type = "/multi_tile/maint" - glass = 1*/ - base_icon_state = "g" //Remember to delete this line when reverting "glass" var to 1. - airlock_type = "/multi_tile/glass" - glass = AIRLOCK_CANTGLASS //To prevent bugs in deconstruction process. + icon_state = "door_as_0" + width = 2 /obj/structure/airlock_assembly/multi_tile/Initialize(mapload, ...) . = ..() - if(dir in list(EAST, WEST)) - bound_width = width * world.icon_size - bound_height = world.icon_size - else - bound_width = world.icon_size - bound_height = width * world.icon_size + update_collision_box() update_icon() /obj/structure/airlock_assembly/multi_tile/Move() . = ..() + update_collision_box() + +/obj/structure/airlock_assembly/multi_tile/update_collision_box() if(dir in list(EAST, WEST)) bound_width = width * world.icon_size bound_height = world.icon_size diff --git a/code/game/objects/structures/barricade/barricade.dm b/code/game/objects/structures/barricade/barricade.dm index 6905a734b915..0a37e4bcec59 100644 --- a/code/game/objects/structures/barricade/barricade.dm +++ b/code/game/objects/structures/barricade/barricade.dm @@ -19,6 +19,7 @@ var/force_level_absorption = 5 //How much force an item needs to even damage it at all. var/barricade_hitsound var/barricade_type = "barricade" //"metal", "plasteel", etc. + var/wire_icon = 'icons/obj/structures/barricades.dmi' //! Icon file used for the wiring var/can_change_dmg_state = TRUE var/damage_state = BARRICADE_DMG_NONE var/closed = FALSE @@ -30,6 +31,8 @@ var/brute_multiplier = 1 var/burn_multiplier = 1 var/explosive_multiplier = 1 + var/brute_projectile_multiplier = 1 + var/burn_flame_multiplier = 1 var/repair_materials = list() var/metallic = TRUE @@ -42,12 +45,12 @@ addtimer(CALLBACK(src, PROC_REF(update_icon)), 0) starting_maxhealth = maxhealth -/obj/structure/barricade/initialize_pass_flags(datum/pass_flags_container/PF) +/obj/structure/barricade/initialize_pass_flags(datum/pass_flags_container/pass_flags) ..() - if (PF) - PF.flags_can_pass_all = NONE - PF.flags_can_pass_front = NONE - PF.flags_can_pass_behind = PASS_OVER^(PASS_OVER_ACID_SPRAY|PASS_OVER_THROW_MOB) + if (pass_flags) + pass_flags.flags_can_pass_all = NONE + pass_flags.flags_can_pass_front = NONE + pass_flags.flags_can_pass_behind = PASS_OVER^(PASS_OVER_ACID_SPRAY|PASS_OVER_THROW_MOB) flags_can_pass_front_temp = PASS_OVER_THROW_MOB flags_can_pass_behind_temp = PASS_OVER_THROW_MOB @@ -76,7 +79,7 @@ switch(dir) if(SOUTH) layer = ABOVE_MOB_LAYER - else if(NORTH) + if(NORTH) layer = initial(layer) - 0.01 else layer = initial(layer) @@ -95,45 +98,45 @@ overlays += image('icons/obj/structures/barricades.dmi', icon_state = "+burn_upgrade_[damage_state]") if(BARRICADE_UPGRADE_BRUTE) overlays += image('icons/obj/structures/barricades.dmi', icon_state = "+brute_upgrade_[damage_state]") - if(BARRICADE_UPGRADE_EXPLOSIVE) + if(BARRICADE_UPGRADE_ANTIFF) overlays += image('icons/obj/structures/barricades.dmi', icon_state = "+explosive_upgrade_[damage_state]") if(is_wired) if(!closed) - overlays += image('icons/obj/structures/barricades.dmi', icon_state = "[src.barricade_type]_wire") + overlays += image(wire_icon, icon_state = "[barricade_type]_wire") else - overlays += image('icons/obj/structures/barricades.dmi', icon_state = "[src.barricade_type]_closed_wire") + overlays += image(wire_icon, icon_state = "[barricade_type]_closed_wire") ..() -/obj/structure/barricade/hitby(atom/movable/AM) - if(AM.throwing && is_wired) - if(iscarbon(AM)) - var/mob/living/carbon/C = AM - if(C.mob_size <= MOB_SIZE_XENO) - C.visible_message(SPAN_DANGER("The barbed wire slices into [C]!"), +/obj/structure/barricade/hitby(atom/movable/atom_movable) + if(atom_movable.throwing && is_wired) + if(iscarbon(atom_movable)) + var/mob/living/carbon/living_carbon = atom_movable + if(living_carbon.mob_size <= MOB_SIZE_XENO) + living_carbon.visible_message(SPAN_DANGER("The barbed wire slices into [living_carbon]!"), SPAN_DANGER("The barbed wire slices into you!")) - C.apply_damage(10) - C.apply_effect(2, WEAKEN) //Leaping into barbed wire is VERY bad - playsound(C, "bonk", 75, FALSE) + living_carbon.apply_damage(10) + living_carbon.apply_effect(2, WEAKEN) //Leaping into barbed wire is VERY bad + playsound(living_carbon, "bonk", 75, FALSE) ..() -/obj/structure/barricade/Collided(atom/movable/AM) +/obj/structure/barricade/Collided(atom/movable/atom_movable) ..() - if(istype(AM, /mob/living/carbon/xenomorph/crusher)) - var/mob/living/carbon/xenomorph/crusher/C = AM + if(istype(atom_movable, /mob/living/carbon/xenomorph/crusher)) + var/mob/living/carbon/xenomorph/crusher/living_carbon = atom_movable - if (!C.throwing) + if (!living_carbon.throwing) return if(crusher_resistant) - visible_message(SPAN_DANGER("[C] smashes into [src]!")) + visible_message(SPAN_DANGER("[living_carbon] smashes into [src]!")) take_damage(150) playsound(src, barricade_hitsound, 25, TRUE) - else if(!C.stat) - visible_message(SPAN_DANGER("[C] smashes through [src]!")) + else if(!living_carbon.stat) + visible_message(SPAN_DANGER("[living_carbon] smashes through [src]!")) deconstruct(FALSE) playsound(src, barricade_hitsound, 25, TRUE) @@ -163,8 +166,8 @@ if(closed) return NO_BLOCKED_MOVEMENT - var/obj/structure/S = locate(/obj/structure) in get_turf(mover) - if(S && S.climbable && !(S.flags_atom & ON_BORDER) && climbable && isliving(mover)) //Climbable objects allow you to universally climb over others + var/obj/structure/structure = locate(/obj/structure) in get_turf(mover) + if(structure && structure.climbable && !(structure.flags_atom & ON_BORDER) && climbable && isliving(mover)) //Climbable objects allow you to universally climb over others return NO_BLOCKED_MOVEMENT return ..() @@ -174,39 +177,36 @@ return FALSE return prob(max(30,(100.0*health)/maxhealth)) -/obj/structure/barricade/attack_robot(mob/user as mob) - return attack_hand(user) - /obj/structure/barricade/attack_animal(mob/user as mob) return attack_alien(user) -/obj/structure/barricade/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/weapon/zombie_claws)) +/obj/structure/barricade/attackby(obj/item/item, mob/user) + if(istype(item, /obj/item/weapon/zombie_claws)) user.visible_message(SPAN_DANGER("The zombie smashed at the [src.barricade_type] barricade!"), SPAN_DANGER("You smack the [src.barricade_type] barricade!")) if(barricade_hitsound) playsound(src, barricade_hitsound, 35, 1) - hit_barricade(W) + hit_barricade(item) return - for(var/obj/effect/xenomorph/acid/A in src.loc) - if(A.acid_t == src) + for(var/obj/effect/xenomorph/acid/acid in src.loc) + if(acid.acid_t == src) to_chat(user, "You can't get near that, it's melting!") return - if(istype(W, /obj/item/stack/barbed_wire)) - var/obj/item/stack/barbed_wire/B = W + if(istype(item, /obj/item/stack/barbed_wire)) + var/obj/item/stack/barbed_wire/barbed_wire = item if(can_wire) - user.visible_message(SPAN_NOTICE("[user] starts setting up [W.name] on [src]."), - SPAN_NOTICE("You start setting up [W.name] on [src].")) + user.visible_message(SPAN_NOTICE("[user] starts setting up [item.name] on [src]."), + SPAN_NOTICE("You start setting up [item.name] on [src].")) if(do_after(user, 20, INTERRUPT_NO_NEEDHAND|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, src) && can_wire) // Make sure there's still enough wire in the stack - if(!B.use(1)) + if(!barbed_wire.use(1)) return playsound(src.loc, 'sound/effects/barbed_wire_movement.ogg', 25, 1) - user.visible_message(SPAN_NOTICE("[user] sets up [W.name] on [src]."), - SPAN_NOTICE("You set up [W.name] on [src].")) + user.visible_message(SPAN_NOTICE("[user] sets up [item.name] on [src]."), + SPAN_NOTICE("You set up [item.name] on [src].")) maxhealth += 50 update_health(-50) @@ -218,7 +218,7 @@ update_icon() return - if(HAS_TRAIT(W, TRAIT_TOOL_WIRECUTTERS)) + if(HAS_TRAIT(item, TRAIT_TOOL_WIRECUTTERS)) if(is_wired) user.visible_message(SPAN_NOTICE("[user] begin removing the barbed wire on [src]."), SPAN_NOTICE("You begin removing the barbed wire on [src].")) @@ -240,27 +240,27 @@ new/obj/item/stack/barbed_wire( src.loc ) return - if(W.force > force_level_absorption) + if(item.force > force_level_absorption) ..() if(barricade_hitsound) playsound(src, barricade_hitsound, 35, 1) - hit_barricade(W) + hit_barricade(item) -/obj/structure/barricade/bullet_act(obj/item/projectile/P) - bullet_ping(P) +/obj/structure/barricade/bullet_act(obj/projectile/bullet) + bullet_ping(bullet) - if(P.ammo.damage_type == BURN) - P.damage = P.damage * burn_multiplier + if(bullet.ammo.damage_type == BURN) + bullet.damage = bullet.damage * burn_multiplier else - P.damage = P.damage * brute_multiplier + bullet.damage = bullet.damage * brute_projectile_multiplier - if(istype(P.ammo, /datum/ammo/xeno/boiler_gas)) + if(istype(bullet.ammo, /datum/ammo/xeno/boiler_gas)) take_damage(round(50 * burn_multiplier)) - else if(P.ammo.flags_ammo_behavior & AMMO_ANTISTRUCT) - take_damage(P.damage * ANTISTRUCT_DMG_MULT_BARRICADES) + else if(bullet.ammo.flags_ammo_behavior & AMMO_ANTISTRUCT) + take_damage(bullet.damage * ANTISTRUCT_DMG_MULT_BARRICADES) - take_damage(P.damage) + take_damage(bullet.damage) return TRUE @@ -282,11 +282,11 @@ /obj/structure/barricade/ex_act(severity, direction, cause_data) - for(var/obj/structure/barricade/B in get_step(src,dir)) //discourage double-stacking barricades by removing health from opposing barricade - if(B.dir == reverse_direction(dir)) + for(var/obj/structure/barricade/barricade in get_step(src,dir)) //discourage double-stacking barricades by removing health from opposing barricade + if(barricade.dir == reverse_direction(dir)) spawn(1) - if(B) - B.ex_act(severity, direction) + if(barricade) + barricade.ex_act(severity, direction) if(health <= 0) var/location = get_turf(src) handle_debris(severity, direction) @@ -321,15 +321,15 @@ new /datum/effects/acid(src, null, null) /obj/structure/barricade/flamer_fire_act(dam = BURN_LEVEL_TIER_1) - take_damage(dam * burn_multiplier) + take_damage(dam * burn_flame_multiplier) -/obj/structure/barricade/proc/hit_barricade(obj/item/I) - take_damage(I.force * 0.5 * brute_multiplier) +/obj/structure/barricade/proc/hit_barricade(obj/item/item) + take_damage(item.force * 0.5 * brute_multiplier) /obj/structure/barricade/proc/take_damage(damage) - for(var/obj/structure/barricade/B in get_step(src,dir)) //discourage double-stacking barricades by removing health from opposing barricade - if(B.dir == reverse_direction(dir)) - B.update_health(damage) + for(var/obj/structure/barricade/barricade in get_step(src,dir)) //discourage double-stacking barricades by removing health from opposing barricade + if(barricade.dir == reverse_direction(dir)) + barricade.update_health(damage) update_health(damage) @@ -338,7 +338,7 @@ /obj/structure/barricade/update_health(damage, nomessage) health -= damage - health = Clamp(health, 0, maxhealth) + health = clamp(health, 0, maxhealth) if(!health) if(!nomessage) @@ -357,12 +357,12 @@ if(50 to 75) damage_state = BARRICADE_DMG_SLIGHT if(75 to INFINITY) damage_state = BARRICADE_DMG_NONE -/obj/structure/barricade/proc/weld_cade(obj/item/tool/weldingtool/WT, mob/user) +/obj/structure/barricade/proc/weld_cade(obj/item/tool/weldingtool/welder, mob/user) if(!metallic) user.visible_message(SPAN_WARNING("You can't weld \the [src]!")) return FALSE - if(!(WT.remove_fuel(2, user))) + if(!(welder.remove_fuel(2, user))) return FALSE user.visible_message(SPAN_NOTICE("[user] begins repairing damage to [src]."), @@ -413,20 +413,20 @@ return ..() -/obj/structure/barricade/proc/try_nailgun_usage(obj/item/W, mob/user) - if(length(repair_materials) == 0 || health >= maxhealth || !istype(W, /obj/item/weapon/gun/smg/nailgun)) +/obj/structure/barricade/proc/try_nailgun_usage(obj/item/item, mob/user) + if(length(repair_materials) == 0 || health >= maxhealth || !istype(item, /obj/item/weapon/gun/smg/nailgun)) return FALSE - var/obj/item/weapon/gun/smg/nailgun/NG = W + var/obj/item/weapon/gun/smg/nailgun/nailgun = item - if(!NG.in_chamber || !NG.current_mag || NG.current_mag.current_rounds < 3) + if(!nailgun.in_chamber || !nailgun.current_mag || nailgun.current_mag.current_rounds < 3) to_chat(user, SPAN_WARNING("You require at least 4 nails to complete this task!")) return FALSE // Check if either hand has a metal stack by checking the weapon offhand // Presume the material is a sheet until proven otherwise. var/obj/item/stack/sheet/material = null - if(user.l_hand == NG) + if(user.l_hand == nailgun) material = user.r_hand else material = user.l_hand @@ -445,8 +445,8 @@ to_chat(user, SPAN_WARNING("You'll need some adequate repair material in your other hand to patch up [src]!")) return FALSE - var/soundchannel = playsound(src, NG.repair_sound, 25, 1) - if(!do_after(user, NG.nailing_speed, INTERRUPT_ALL, BUSY_ICON_FRIENDLY, src)) + var/soundchannel = playsound(src, nailgun.repair_sound, 25, 1) + if(!do_after(user, nailgun.nailing_speed, INTERRUPT_ALL, BUSY_ICON_FRIENDLY, src)) playsound(src, null, channel = soundchannel) return FALSE @@ -454,7 +454,7 @@ to_chat(user, SPAN_WARNING("You seems to have misplaced the repair material!")) return FALSE - if(!NG.in_chamber || !NG.current_mag || NG.current_mag.current_rounds < 3) + if(!nailgun.in_chamber || !nailgun.current_mag || nailgun.current_mag.current_rounds < 3) to_chat(user, SPAN_WARNING("You require at least 4 nails to complete this task!")) return FALSE @@ -462,7 +462,7 @@ to_chat(user, SPAN_WARNING("You nail [material] to [src], restoring some of its integrity!")) update_damage_state() material.use(1) - NG.current_mag.current_rounds -= 3 - NG.in_chamber = null - NG.load_into_chamber() + nailgun.current_mag.current_rounds -= 3 + nailgun.in_chamber = null + nailgun.load_into_chamber() return TRUE diff --git a/code/game/objects/structures/barricade/deployable.dm b/code/game/objects/structures/barricade/deployable.dm index b64d0ab1bd0e..0d5275f98a3d 100644 --- a/code/game/objects/structures/barricade/deployable.dm +++ b/code/game/objects/structures/barricade/deployable.dm @@ -4,7 +4,7 @@ icon_state = "folding_0" health = 350 maxhealth = 350 - burn_multiplier = 1.15 + burn_multiplier = 0.85 brute_multiplier = 1 crusher_resistant = TRUE force_level_absorption = 15 @@ -23,56 +23,38 @@ . = ..() . += SPAN_INFO("Drag its sprite onto yourself to undeploy.") -/obj/structure/barricade/deployable/attackby(obj/item/W, mob/user) +/obj/structure/barricade/deployable/attackby(obj/item/item, mob/user) - if(iswelder(W)) - if(!HAS_TRAIT(W, TRAIT_TOOL_BLOWTORCH)) + if(iswelder(item)) + if(!HAS_TRAIT(item, TRAIT_TOOL_BLOWTORCH)) to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) return if(user.action_busy) return - var/obj/item/tool/weldingtool/WT = W + var/obj/item/tool/weldingtool/welder = item if(health == maxhealth) to_chat(user, SPAN_WARNING("[src] doesn't need repairs.")) return - weld_cade(WT, user) + weld_cade(welder, user) return - else if(HAS_TRAIT(W, TRAIT_TOOL_WRENCH)) + else if(HAS_TRAIT(item, TRAIT_TOOL_CROWBAR)) if(user.action_busy) return - if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) - to_chat(user, SPAN_WARNING("You do not know where the loosening bolts are on [src]...")) - return - else - if(build_state == BARRICADE_BSTATE_UNSECURED) - to_chat(user, SPAN_NOTICE("You tighten the bolts on [src].")) - playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) - build_state = BARRICADE_BSTATE_SECURED - else - to_chat(user, SPAN_NOTICE("You loosen the bolts on [src].")) - playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) - build_state = BARRICADE_BSTATE_UNSECURED - - else if(HAS_TRAIT(W, TRAIT_TOOL_CROWBAR)) - if(build_state != BARRICADE_BSTATE_UNSECURED) - return - if(user.action_busy) - return - if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) + if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_TRAINED)) to_chat(user, SPAN_WARNING("You do not know how to collapse [src] using a crowbar...")) return else user.visible_message(SPAN_NOTICE("[user] starts collapsing [src]."), \ SPAN_NOTICE("You begin collapsing [src]...")) - playsound(src.loc, 'sound/items/Crowbar.ogg', 25, 1) - if(do_after(user, 2 SECONDS, INTERRUPT_ALL, BUSY_ICON_FRIENDLY, src)) + playsound(loc, 'sound/items/Crowbar.ogg', 25, 1) + if(do_after(user, 1.5 SECONDS, INTERRUPT_NO_NEEDHAND, BUSY_ICON_FRIENDLY, src)) collapse(usr) else to_chat(user, SPAN_WARNING("You stop collapsing [src].")) - if(try_nailgun_usage(W, user)) + if(try_nailgun_usage(item, user)) return . = ..() @@ -81,32 +63,33 @@ if(!ishuman(usr)) return - if(usr.lying) + if(usr.is_mob_incapacitated()) return if(over_object == usr && Adjacent(usr)) usr.visible_message(SPAN_NOTICE("[usr] starts collapsing [src]."), SPAN_NOTICE("You begin collapsing [src].")) - playsound(src.loc, 'sound/items/Crowbar.ogg', 25, 1) - if(do_after(usr, 3 SECONDS, INTERRUPT_ALL, BUSY_ICON_FRIENDLY, src)) + playsound(loc, 'sound/items/Crowbar.ogg', 25, 1) + if(do_after(usr, 3 SECONDS, INTERRUPT_NO_NEEDHAND, BUSY_ICON_FRIENDLY, src)) collapse(usr) else to_chat(usr, SPAN_WARNING("You stop collapsing [src].")) /obj/structure/barricade/deployable/proc/collapse(mob/living/carbon/human/user) - var/obj/item/stack/folding_barricade/FB = new source_type(loc) - FB.health = health - FB.maxhealth = maxhealth + var/obj/item/stack/folding_barricade/folding = new source_type(loc) + folding.stack_health = list(health) + folding.maxhealth = maxhealth if(istype(user)) user.visible_message(SPAN_NOTICE("[user] collapses [src]."), SPAN_NOTICE("You collapse [src].")) - user.put_in_active_hand(FB) + user.put_in_active_hand(folding) qdel(src) /obj/structure/barricade/deployable/initialize_pass_flags(datum/pass_flags_container/PF) ..() if(PF) PF.flags_can_pass_front &= ~PASS_OVER_THROW_MOB + PF.flags_can_pass_behind &= ~PASS_OVER_THROW_MOB // Cade in hands @@ -132,6 +115,14 @@ ) icon = 'icons/obj/items/marine-items.dmi' + var/list/stack_health = list() + +/obj/item/stack/folding_barricade/Initialize(mapload, init_amount) + . = ..() + for(var/counter in 1 to amount) + stack_health += initial(health) + + /obj/item/stack/folding_barricade/update_icon() . = ..() icon_state = "folding-[amount]" @@ -152,16 +143,16 @@ var/obj/structure/blocker/anti_cade/AC = locate(/obj/structure/blocker/anti_cade) in OT // for M2C HMG, look at smartgun_mount.dm if(!OT.allow_construction) - to_chat(usr, SPAN_WARNING("[src.singular_name] must be constructed on a proper surface!")) + to_chat(usr, SPAN_WARNING("[singular_name] must be constructed on a proper surface!")) return if(AC) - to_chat(usr, SPAN_WARNING("[src.singular_name] cannot be built here!")) + to_chat(usr, SPAN_WARNING("[singular_name] cannot be built here!")) return - user.visible_message(SPAN_NOTICE("[user] begins deploying [src.singular_name]."), - SPAN_NOTICE("You begin deploying [src.singular_name].")) + user.visible_message(SPAN_NOTICE("[user] begins deploying [singular_name]."), + SPAN_NOTICE("You begin deploying [singular_name].")) - playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) + playsound(loc, 'sound/items/Ratchet.ogg', 25, 1) if(!do_after(user, 1 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) to_chat(user, SPAN_WARNING("You were interrupted.")) @@ -172,12 +163,12 @@ to_chat(user, SPAN_WARNING("There is already \a [B] in this direction!")) return - user.visible_message(SPAN_NOTICE("[user] has finished deploying [src.singular_name]."), - SPAN_NOTICE("You finish deploying [src.singular_name].")) + user.visible_message(SPAN_NOTICE("[user] has finished deploying [singular_name]."), + SPAN_NOTICE("You finish deploying [singular_name].")) var/obj/structure/barricade/deployable/cade = new(user.loc) cade.setDir(user.dir) - cade.health = health + cade.health = pop(stack_health) cade.maxhealth = maxhealth cade.source_type = singular_type cade.update_damage_state() @@ -185,76 +176,90 @@ use(1) -/obj/item/stack/folding_barricade/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/stack/folding_barricade)) - var/obj/item/stack/folding_barricade/F = W - - if(health != maxhealth || F.health != F.maxhealth) - to_chat(user, "You cannot stack damaged [src.singular_name]\s.") +/obj/item/stack/folding_barricade/attackby(obj/item/item, mob/user) + if(istype(item, /obj/item/stack/folding_barricade)) + var/obj/item/stack/folding_barricade/folding = item + if(!ismob(loc)) //gather from ground + if(amount >= max_amount) + to_chat(user, "You cannot stack more [folding.singular_name]\s.") + return + var/to_transfer = min(folding.max_amount - folding.amount, amount) + for(var/counter in 1 to to_transfer) + folding.stack_health += pop(stack_health) + use(to_transfer) + folding.add(to_transfer) + to_chat(user, SPAN_INFO("You transfer [to_transfer] between the stacks.")) return - - if(!ismob(src.loc)) - return ..() - if(amount >= max_amount) - to_chat(user, "You cannot stack more [src.singular_name]\s.") + to_chat(user, "You cannot stack more [singular_name]\s.") return - var/to_transfer = min(max_amount - amount, F.amount) - F.use(to_transfer) + var/to_transfer = min(max_amount - amount, folding.amount) + for(var/counter in 1 to to_transfer) + stack_health += pop(folding.stack_health) + folding.use(to_transfer) add(to_transfer) to_chat(user, SPAN_INFO("You transfer [to_transfer] between the stacks.")) return - else if(iswelder(W)) - if(!HAS_TRAIT(W, TRAIT_TOOL_BLOWTORCH)) + else if(iswelder(item)) + if(!HAS_TRAIT(item, TRAIT_TOOL_BLOWTORCH)) to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) return - if(src != user.get_inactive_hand()) - to_chat(user, SPAN_WARNING("You need to hold [src.singular_name] in hand or deploy to repair it.")) - return if(user.action_busy) return - var/obj/item/tool/weldingtool/WT = W - if(health == maxhealth) - to_chat(user, SPAN_WARNING("[src.singular_name] doesn't need repairs.")) + var/need_repairs = 0 + for(var/counter in 1 to length(stack_health)) + if(stack_health[counter] < maxhealth) + need_repairs++ + + if(!need_repairs) + to_chat(user, SPAN_WARNING("[singular_name] doesn't need repairs.")) return - if(!(WT.remove_fuel(2, user))) + var/obj/item/tool/weldingtool/welder = item + if(!(welder.remove_fuel(2, user))) return user.visible_message(SPAN_NOTICE("[user] begins repairing damage to [src]."), SPAN_NOTICE("You begin repairing the damage to [src].")) - playsound(src.loc, 'sound/items/Welder2.ogg', 25, TRUE) + playsound(loc, 'sound/items/Welder2.ogg', 25, TRUE) - var/welding_time = skillcheck(user, SKILL_CONSTRUCTION, 2) ? 5 SECONDS : 10 SECONDS - if(!do_after(user, welding_time, INTERRUPT_NO_NEEDHAND|BEHAVIOR_IMMOBILE, BUSY_ICON_FRIENDLY, src)) - return + var/welding_time = (skillcheck(user, SKILL_CONSTRUCTION, SKILL_CONSTRUCTION_TRAINED) ? 5 SECONDS : 10 SECONDS) * need_repairs + + if(src != user.get_inactive_hand()) + if(!do_after(user, welding_time, INTERRUPT_NO_NEEDHAND|BEHAVIOR_IMMOBILE, BUSY_ICON_FRIENDLY, src)) + return + else + if(!do_after(user, welding_time, (INTERRUPT_ALL & (~INTERRUPT_MOVED)), BUSY_ICON_FRIENDLY, src, INTERRUPT_DIFF_LOC)) //you can move while repairing if you have cade in hand + return user.visible_message(SPAN_NOTICE("[user] repairs some damage on [src]."), SPAN_NOTICE("You repair [src].")) user.count_niche_stat(STATISTICS_NICHE_REPAIR_CADES) - health += 200 - if(health > maxhealth) - health = maxhealth + for(var/counter in 1 to length(stack_health)) + stack_health[counter] += 200 + if(stack_health[counter] > maxhealth) + stack_health[counter] = maxhealth - playsound(src.loc, 'sound/items/Welder2.ogg', 25, TRUE) + playsound(loc, 'sound/items/Welder2.ogg', 25, TRUE) return . = ..() /obj/item/stack/folding_barricade/attack_hand(mob/user) - var/mob/living/carbon/human/H = user - if(!(amount > 1 && H.back == src)) + var/mob/living/carbon/human/human = user + if(!(amount > 1 && (human.back == src || human.get_inactive_hand() == src))) return ..() - var/obj/item/stack/F = new singular_type(user, 1) - transfer_fingerprints_to(F) - user.put_in_hands(F) - src.add_fingerprint(user) - F.add_fingerprint(user) + var/obj/item/stack/folding_barricade/folding = new singular_type(user, 1) + transfer_fingerprints_to(folding) + folding.stack_health = list(pop(stack_health)) + user.put_in_hands(folding) + add_fingerprint(user) + folding.add_fingerprint(user) use(1) /obj/item/stack/folding_barricade/MouseDrop(obj/over_object as obj) @@ -276,7 +281,7 @@ /obj/item/stack/folding_barricade/get_examine_text(mob/user) . = ..() - if(health < maxhealth) + if(round(min(stack_health)/maxhealth * 100) <= 75) . += SPAN_WARNING("It appears to be damaged.") /obj/item/stack/folding_barricade/three diff --git a/code/game/objects/structures/barricade/handrail.dm b/code/game/objects/structures/barricade/handrail.dm index ea10dc7256de..ae166dbbf985 100644 --- a/code/game/objects/structures/barricade/handrail.dm +++ b/code/game/objects/structures/barricade/handrail.dm @@ -24,7 +24,7 @@ switch(dir) if(SOUTH) layer = ABOVE_MOB_LAYER - else if(NORTH) + if(NORTH) layer = initial(layer) - 0.01 else layer = initial(layer) diff --git a/code/game/objects/structures/barricade/metal.dm b/code/game/objects/structures/barricade/metal.dm index 40f784b064e4..4f250eed50e9 100644 --- a/code/game/objects/structures/barricade/metal.dm +++ b/code/game/objects/structures/barricade/metal.dm @@ -39,12 +39,12 @@ . += SPAN_NOTICE("The cade is protected by a biohazardous upgrade.") if(BARRICADE_UPGRADE_BRUTE) . += SPAN_NOTICE("The cade is protected by a reinforced upgrade.") - if(BARRICADE_UPGRADE_EXPLOSIVE) - . += SPAN_NOTICE("The cade is protected by an explosive upgrade.") + if(BARRICADE_UPGRADE_ANTIFF) + . += SPAN_NOTICE("The cade is protected by a composite upgrade.") -/obj/structure/barricade/metal/attackby(obj/item/W, mob/user) - if(iswelder(W)) - if(!HAS_TRAIT(W, TRAIT_TOOL_BLOWTORCH)) +/obj/structure/barricade/metal/attackby(obj/item/item, mob/user) + if(iswelder(item)) + if(!HAS_TRAIT(item, TRAIT_TOOL_BLOWTORCH)) to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) return if(user.action_busy) @@ -52,7 +52,7 @@ if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_TRAINED)) to_chat(user, SPAN_WARNING("You're not trained to repair [src]...")) return - var/obj/item/tool/weldingtool/WT = W + var/obj/item/tool/weldingtool/welder = item if(damage_state == BARRICADE_DMG_HEAVY) to_chat(user, SPAN_WARNING("[src] has sustained too much structural damage to be repaired.")) return @@ -61,10 +61,10 @@ to_chat(user, SPAN_WARNING("[src] doesn't need repairs.")) return - weld_cade(WT, user) + weld_cade(welder, user) return - if(try_nailgun_usage(W, user)) + if(try_nailgun_usage(item, user)) return for(var/obj/effect/xenomorph/acid/A in src.loc) @@ -74,7 +74,7 @@ switch(build_state) if(BARRICADE_BSTATE_SECURED) //Fully constructed step. Use screwdriver to remove the protection panels to reveal the bolts - if(HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER)) + if(HAS_TRAIT(item, TRAIT_TOOL_SCREWDRIVER)) if(!skillcheck(user, SKILL_CONSTRUCTION, SKILL_CONSTRUCTION_TRAINED)) to_chat(user, SPAN_WARNING("You are not trained to touch [src]...")) return @@ -88,16 +88,16 @@ build_state = BARRICADE_BSTATE_UNSECURED return - if(istype(W, /obj/item/stack/sheet/metal)) + if(istype(item, /obj/item/stack/sheet/metal)) if(!skillcheck(user, SKILL_CONSTRUCTION, SKILL_CONSTRUCTION_TRAINED)) to_chat(user, SPAN_WARNING("You are not trained to touch [src]...")) return if(upgraded) to_chat(user, SPAN_NOTICE("This barricade is already upgraded.")) return - var/obj/item/stack/sheet/metal/M = W + var/obj/item/stack/sheet/metal/metal = item if(user.client?.prefs?.no_radials_preference) - var/choice = tgui_input_list(user, "Choose an upgrade to apply to the barricade", "Apply Upgrade", list(BARRICADE_UPGRADE_BURN, BARRICADE_UPGRADE_BRUTE, BARRICADE_UPGRADE_EXPLOSIVE)) + var/choice = tgui_input_list(user, "Choose an upgrade to apply to the barricade", "Apply Upgrade", list(BARRICADE_UPGRADE_BURN, BARRICADE_UPGRADE_BRUTE, BARRICADE_UPGRADE_ANTIFF)) if(!choice) return if(!user.Adjacent(src)) @@ -106,33 +106,37 @@ if(upgraded) to_chat(user, SPAN_NOTICE("This barricade is already upgraded.")) return - if(M.get_amount() < 2) + if(metal.get_amount() < 2) to_chat(user, SPAN_NOTICE("You lack the required metal.")) return - if((usr.get_active_hand()) != M) - to_chat(user, SPAN_WARNING("You must be holding the [M] to upgrade \the [src]!")) + if((usr.get_active_hand()) != metal) + to_chat(user, SPAN_WARNING("You must be holding [metal] to upgrade [src]!")) return switch(choice) if(BARRICADE_UPGRADE_BURN) burn_multiplier = 0.75 + burn_flame_multiplier = 0.75 upgraded = BARRICADE_UPGRADE_BURN to_chat(user, SPAN_NOTICE("You applied a biohazardous upgrade.")) if(BARRICADE_UPGRADE_BRUTE) brute_multiplier = 0.75 + brute_projectile_multiplier = 0.75 upgraded = BARRICADE_UPGRADE_BRUTE to_chat(user, SPAN_NOTICE("You applied a reinforced upgrade.")) - if(BARRICADE_UPGRADE_EXPLOSIVE) - explosive_multiplier = 0.75 - upgraded = BARRICADE_UPGRADE_EXPLOSIVE - to_chat(user, SPAN_NOTICE("You applied an explosive upgrade.")) + if(BARRICADE_UPGRADE_ANTIFF) + explosive_multiplier = 0.5 + brute_projectile_multiplier = 0.5 + burn_flame_multiplier = 0.5 + upgraded = BARRICADE_UPGRADE_ANTIFF + to_chat(user, SPAN_NOTICE("You applied a composite upgrade.")) - M.use(2) + metal.use(2) user.count_niche_stat(STATISTICS_NICHE_UPGRADE_CADES) update_icon() return else - var/static/list/cade_types = list(BARRICADE_UPGRADE_EXPLOSIVE = image(icon = 'icons/obj/structures/barricades.dmi', icon_state = "explosive_obj"), BARRICADE_UPGRADE_BRUTE = image(icon = 'icons/obj/structures/barricades.dmi', icon_state = "brute_obj"), BARRICADE_UPGRADE_BURN = image(icon = 'icons/obj/structures/barricades.dmi', icon_state = "burn_obj")) + var/static/list/cade_types = list(BARRICADE_UPGRADE_ANTIFF = image(icon = 'icons/obj/structures/barricades.dmi', icon_state = "explosive_obj"), BARRICADE_UPGRADE_BRUTE = image(icon = 'icons/obj/structures/barricades.dmi', icon_state = "brute_obj"), BARRICADE_UPGRADE_BURN = image(icon = 'icons/obj/structures/barricades.dmi', icon_state = "burn_obj")) var/choice = show_radial_menu(user, src, cade_types, require_near = TRUE) if(!choice) return @@ -142,33 +146,37 @@ if(upgraded) to_chat(user, SPAN_NOTICE("This barricade is already upgraded.")) return - if(M.get_amount() < 2) + if(metal.get_amount() < 2) to_chat(user, SPAN_NOTICE("You lack the required metal.")) return - if((usr.get_active_hand()) != M) - to_chat(user, SPAN_WARNING("You must be holding the [M] to upgrade \the [src]!")) + if((usr.get_active_hand()) != metal) + to_chat(user, SPAN_WARNING("You must be holding [metal] to upgrade [src]!")) return switch(choice) if(BARRICADE_UPGRADE_BURN) burn_multiplier = 0.75 + burn_flame_multiplier = 0.75 upgraded = BARRICADE_UPGRADE_BURN to_chat(user, SPAN_NOTICE("You applied a biohazardous upgrade.")) if(BARRICADE_UPGRADE_BRUTE) brute_multiplier = 0.75 + brute_projectile_multiplier = 0.75 upgraded = BARRICADE_UPGRADE_BRUTE to_chat(user, SPAN_NOTICE("You applied a reinforced upgrade.")) - if(BARRICADE_UPGRADE_EXPLOSIVE) - explosive_multiplier = 0.75 - upgraded = BARRICADE_UPGRADE_EXPLOSIVE - to_chat(user, SPAN_NOTICE("You applied an explosive upgrade.")) + if(BARRICADE_UPGRADE_ANTIFF) + explosive_multiplier = 0.5 + brute_projectile_multiplier = 0.5 + burn_flame_multiplier = 0.5 + upgraded = BARRICADE_UPGRADE_ANTIFF + to_chat(user, SPAN_NOTICE("You applied a composite upgrade.")) - M.use(2) + metal.use(2) user.count_niche_stat(STATISTICS_NICHE_UPGRADE_CADES) update_icon() return - if(HAS_TRAIT(W, TRAIT_TOOL_MULTITOOL)) + if(HAS_TRAIT(item, TRAIT_TOOL_MULTITOOL)) if(!skillcheck(user, SKILL_CONSTRUCTION, SKILL_CONSTRUCTION_TRAINED)) to_chat(user, SPAN_WARNING("You are not trained to touch [src]...")) return @@ -181,13 +189,15 @@ upgraded = null explosive_multiplier = initial(explosive_multiplier) brute_multiplier = initial(brute_multiplier) + brute_projectile_multiplier = initial(brute_projectile_multiplier) burn_multiplier = initial(burn_multiplier) + burn_flame_multiplier = initial(burn_flame_multiplier) new stack_type (loc, 1) update_icon() return if(BARRICADE_BSTATE_UNSECURED) //Protection panel removed step. Screwdriver to put the panel back, wrench to unsecure the anchor bolts - if(HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER)) + if(HAS_TRAIT(item, TRAIT_TOOL_SCREWDRIVER)) if(user.action_busy) return if(!skillcheck(user, SKILL_CONSTRUCTION, SKILL_CONSTRUCTION_TRAINED)) @@ -199,7 +209,7 @@ SPAN_NOTICE("You set [src]'s protection panel back.")) build_state = BARRICADE_BSTATE_SECURED return - if(HAS_TRAIT(W, TRAIT_TOOL_WRENCH)) + if(HAS_TRAIT(item, TRAIT_TOOL_WRENCH)) if(user.action_busy) return if(!skillcheck(user, SKILL_CONSTRUCTION, SKILL_CONSTRUCTION_TRAINED)) @@ -214,7 +224,7 @@ update_icon() //unanchored changes layer return if(BARRICADE_BSTATE_MOVABLE) //Anchor bolts loosened step. Apply crowbar to unseat the panel and take apart the whole thing. Apply wrench to resecure anchor bolts - if(HAS_TRAIT(W, TRAIT_TOOL_WRENCH)) + if(HAS_TRAIT(item, TRAIT_TOOL_WRENCH)) if(user.action_busy) return if(!skillcheck(user, SKILL_CONSTRUCTION, SKILL_CONSTRUCTION_TRAINED)) @@ -224,8 +234,8 @@ if(B != src && B.dir == dir) to_chat(user, SPAN_WARNING("There's already a barricade here.")) return - var/turf/open/T = loc - if(!(istype(T) && T.allow_construction)) + var/turf/open/turf = loc + if(!(istype(turf) && turf.allow_construction)) to_chat(user, SPAN_WARNING("[src] must be secured on a proper surface!")) return playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) @@ -236,7 +246,7 @@ anchored = TRUE update_icon() //unanchored changes layer return - if(HAS_TRAIT(W, TRAIT_TOOL_CROWBAR)) + if(HAS_TRAIT(item, TRAIT_TOOL_CROWBAR)) if(user.action_busy) return if(!skillcheck(user, SKILL_CONSTRUCTION, SKILL_CONSTRUCTION_TRAINED)) diff --git a/code/game/objects/structures/barricade/plasteel.dm b/code/game/objects/structures/barricade/plasteel.dm index d1a42c9b61ab..dd95aa3f1baf 100644 --- a/code/game/objects/structures/barricade/plasteel.dm +++ b/code/game/objects/structures/barricade/plasteel.dm @@ -30,7 +30,7 @@ /obj/structure/barricade/plasteel/update_icon() ..() if(linked) - for(var/direction in cardinal) + for(var/direction in GLOB.cardinals) for(var/obj/structure/barricade/plasteel/cade in get_step(src, direction)) if(((dir & (NORTH|SOUTH) && get_dir(src, cade) & (EAST|WEST)) || (dir & (EAST|WEST) && get_dir(src, cade) & (NORTH|SOUTH))) && dir == cade.dir && cade.linked && cade.closed == src.closed && hasconnectionoverlay) if(closed) @@ -125,10 +125,10 @@ user.visible_message(SPAN_NOTICE("[user] sets up [src] for linking."), SPAN_NOTICE("You set up [src] for linking.")) else - to_chat(user, SPAN_WARNING("The [src] has no linking points...")) + to_chat(user, SPAN_WARNING("[src] has no linking points...")) return linked = !linked - for(var/direction in cardinal) + for(var/direction in GLOB.cardinals) for(var/obj/structure/barricade/plasteel/cade in get_step(src, direction)) cade.update_icon() update_icon() @@ -210,7 +210,7 @@ if(closed) if(recentlyflipped) - to_chat(user, SPAN_NOTICE("The [src] has been flipped too recently!")) + to_chat(user, SPAN_NOTICE("[src] has been flipped too recently!")) return user.visible_message(SPAN_NOTICE("[user] flips [src] open."), SPAN_NOTICE("You flip [src] open.")) @@ -222,7 +222,7 @@ else if(recentlyflipped) - to_chat(user, SPAN_NOTICE("The [src] has been flipped too recently!")) + to_chat(user, SPAN_NOTICE("[src] has been flipped too recently!")) return user.visible_message(SPAN_NOTICE("[user] flips [src] closed."), SPAN_NOTICE("You flip [src] closed.")) @@ -239,7 +239,7 @@ closed = 0 density = TRUE if(linked) - for(var/direction in cardinal) + for(var/direction in GLOB.cardinals) for(var/obj/structure/barricade/plasteel/cade in get_step(src, direction)) if(((dir & (NORTH|SOUTH) && get_dir(src, cade) & (EAST|WEST)) || (dir & (EAST|WEST) && get_dir(src, cade) & (NORTH|SOUTH))) && dir == cade.dir && cade != origin && cade.linked) cade.open(src) @@ -252,7 +252,7 @@ closed = 1 density = FALSE if(linked) - for(var/direction in cardinal) + for(var/direction in GLOB.cardinals) for(var/obj/structure/barricade/plasteel/cade in get_step(src, direction)) if(((dir & (NORTH|SOUTH) && get_dir(src, cade) & (EAST|WEST)) || (dir & (EAST|WEST) && get_dir(src, cade) & (NORTH|SOUTH))) && dir == cade.dir && cade != origin && cade.linked) cade.close(src) diff --git a/code/game/objects/structures/blocker.dm b/code/game/objects/structures/blocker.dm index aadf6d2a099e..f85b1e65fff5 100644 --- a/code/game/objects/structures/blocker.dm +++ b/code/game/objects/structures/blocker.dm @@ -25,7 +25,10 @@ mouse_opacity = MOUSE_OPACITY_TRANSPARENT /obj/structure/blocker/invisible_wall/Collided(atom/movable/AM) - to_chat(AM, SPAN_WARNING("You cannot go this way.")) + var/msg = desc + if(!msg) + msg = "You cannot go this way." + to_chat(AM, SPAN_WARNING(msg)) /obj/structure/blocker/invisible_wall/New() ..() @@ -35,10 +38,6 @@ desc = "You cannot wade out any further" icon_state = "map_blocker" -/obj/structure/blocker/invisible_wall/water/Collided(atom/movable/AM) - to_chat(AM, SPAN_WARNING("You cannot wade out any further.")) - - /obj/structure/blocker/fog name = "dense fog" desc = "It looks way too dangerous to traverse. Best wait until it has cleared up." @@ -78,7 +77,7 @@ var/list/types = list() var/visible = FALSE -/obj/structure/blocker/forcefield/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/structure/blocker/forcefield/get_projectile_hit_boolean(obj/projectile/P) if(!is_whitelist) return FALSE . = ..() @@ -106,9 +105,21 @@ /obj/structure/blocker/forcefield/vehicles types = list(/obj/vehicle/) + +/obj/structure/blocker/forcefield/vehicles/handle_vehicle_bump(obj/vehicle/multitile/multitile_vehicle) + if(multitile_vehicle.vehicle_flags & VEHICLE_BYPASS_BLOCKERS) + return TRUE + return FALSE + /obj/structure/blocker/forcefield/multitile_vehicles types = list(/obj/vehicle/multitile/) + +/obj/structure/blocker/forcefield/multitile_vehicles/handle_vehicle_bump(obj/vehicle/multitile/multitile_vehicle) + if(multitile_vehicle.vehicle_flags & VEHICLE_BYPASS_BLOCKERS) + return TRUE + return FALSE + /obj/structure/blocker/forcefield/human types = list(/mob/living/carbon/human) icon_state = "purple_line" diff --git a/code/game/objects/structures/bookcase.dm b/code/game/objects/structures/bookcase.dm index c71b2853ea07..b310bd00aa07 100644 --- a/code/game/objects/structures/bookcase.dm +++ b/code/game/objects/structures/bookcase.dm @@ -33,7 +33,7 @@ if(contents.len) var/obj/item/book/choice = input("Which book would you like to remove from the shelf?") as null|obj in contents if(choice) - if(!usr.canmove || usr.stat || usr.is_mob_restrained() || !in_range(loc, usr)) + if(usr.is_mob_incapacitated() || !in_range(loc, usr)) return if(ishuman(user)) if(!user.get_active_hand()) @@ -58,8 +58,6 @@ contents_explosion(severity) deconstruct(FALSE) return - else - return /obj/structure/bookcase/update_icon() if(contents.len < 5) @@ -73,7 +71,6 @@ /obj/structure/bookcase/manuals/medical/Initialize() . = ..() - new /obj/item/book/manual/medical_cloning(src) new /obj/item/book/manual/medical_diagnostics_manual(src) new /obj/item/book/manual/medical_diagnostics_manual(src) new /obj/item/book/manual/medical_diagnostics_manual(src) @@ -86,11 +83,9 @@ /obj/structure/bookcase/manuals/engineering/Initialize() . = ..() new /obj/item/book/manual/engineering_construction(src) - new /obj/item/book/manual/engineering_particle_accelerator(src) new /obj/item/book/manual/engineering_hacking(src) new /obj/item/book/manual/engineering_guide(src) new /obj/item/book/manual/atmospipes(src) - new /obj/item/book/manual/engineering_singularity_safety(src) new /obj/item/book/manual/evaguide(src) update_icon() diff --git a/code/game/objects/structures/cargo_container.dm b/code/game/objects/structures/cargo_container.dm index b5c38874cfb8..66d0cc8c18e0 100644 --- a/code/game/objects/structures/cargo_container.dm +++ b/code/game/objects/structures/cargo_container.dm @@ -11,7 +11,7 @@ //Note, for Watatsumi, Grant, and Arious, "left" and "leftmid" are both the left end of the container, but "left" is generic and "leftmid" has the Sat Mover mark on it /obj/structure/cargo_container/watatsumi name = "Watatsumi Cargo Container" - desc = "A huge industrial shipping container.\nThis one is from Watatsumi, a manufacturer of a variety of electronical and mechanical products.\nAtleast, that is what is says on the container. You have literally never heard of this company before." + desc = "A huge industrial shipping container.\nThis one is from Watatsumi, a manufacturer of a variety of electronical and mechanical products.\nAt least, that is what is says on the container. You have literally never heard of this company before." /obj/structure/cargo_container/watatsumi/left icon_state = "watatsumi_l" diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 05355feeb154..6742e8b31700 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -79,10 +79,11 @@ M.forceMove(loc) if(exit_stun) M.apply_effect(exit_stun, STUN) //Action delay when going out of a closet - M.update_canmove() //Force the delay to go in action immediately - if(!M.lying) - M.visible_message(SPAN_WARNING("[M] suddenly gets out of [src]!"), - SPAN_WARNING("You get out of [src] and get your bearings!")) + if(isliving(M)) + var/mob/living/living_M = M + if(living_M.mobility_flags & MOBILITY_MOVE) + M.visible_message(SPAN_WARNING("[M] suddenly gets out of [src]!"), + SPAN_WARNING("You get out of [src] and get your bearings!")) /obj/structure/closet/proc/open() if(opened) @@ -135,30 +136,37 @@ return stored_units /obj/structure/closet/proc/store_mobs(stored_units) - for(var/mob/M in src.loc) + for(var/mob/cur_mob in src.loc) if(stored_units + mob_size > storage_capacity) break - if(istype (M, /mob/dead/observer)) + if(istype (cur_mob, /mob/dead/observer)) continue - if(M.buckled) + if(cur_mob.buckled) + continue + if(cur_mob.anchored) continue - M.forceMove(src) + cur_mob.forceMove(src) stored_units += mob_size return stored_units /obj/structure/closet/proc/toggle(mob/living/user) user.next_move = world.time + 5 - if(!(src.opened ? src.close() : src.open())) + if(!(src.opened ? src.close(user) : src.open())) to_chat(user, SPAN_NOTICE("It won't budge!")) return /obj/structure/closet/proc/take_damage(damage) + if(health <= 0) + return + health = max(health - damage, 0) if(health <= 0) - for(var/atom/movable/A as anything in src) - A.forceMove(src.loc) + for(var/atom/movable/movable as anything in src) + if(!loc) + break + movable.forceMove(loc) playsound(loc, 'sound/effects/meteorimpact.ogg', 25, 1) qdel(src) @@ -183,7 +191,7 @@ FB.bang(get_turf(FB), C) open() -/obj/structure/closet/bullet_act(obj/item/projectile/Proj) +/obj/structure/closet/bullet_act(obj/projectile/Proj) take_damage(Proj.damage*0.3) if(prob(30)) playsound(loc, 'sound/effects/metalhit.ogg', 25, 1) @@ -192,7 +200,7 @@ /obj/structure/closet/attack_animal(mob/living/user) if(user.wall_smash) - visible_message(SPAN_DANGER("[user] destroys the [src]. ")) + visible_message(SPAN_DANGER("[user] destroys [src].")) for(var/atom/movable/A as mob|obj in src) A.forceMove(src.loc) qdel(src) @@ -236,26 +244,27 @@ user.visible_message(SPAN_NOTICE("[user] has pried apart [src] with [W]."), "You pry apart [src].") qdel(src) return - if(isrobot(user)) - return user.drop_inv_item_to_loc(W,loc) else if(istype(W, /obj/item/packageWrap) || istype(W, /obj/item/explosive/plastic)) return else if(iswelder(W)) + if(material != MATERIAL_METAL && material != MATERIAL_PLASTEEL) + to_chat(user, SPAN_WARNING("You cannot weld [material]!")) + return FALSE//Can't weld wood/plastic. if(!HAS_TRAIT(W, TRAIT_TOOL_BLOWTORCH)) to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) - return + return FALSE var/obj/item/tool/weldingtool/WT = W if(!WT.isOn()) to_chat(user, SPAN_WARNING("\The [WT] needs to be on!")) - return + return FALSE if(!WT.remove_fuel(0, user)) to_chat(user, SPAN_NOTICE("You need more welding fuel to complete this task.")) - return + return FALSE playsound(src, 'sound/items/Welder.ogg', 25, 1) if(!do_after(user, 10 * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - return + return FALSE welded = !welded update_icon() for(var/mob/M as anything in viewers(src)) @@ -264,9 +273,9 @@ if(isxeno(user)) var/mob/living/carbon/xenomorph/opener = user src.attack_alien(opener) - return + return FALSE src.attack_hand(user) - return + return TRUE /obj/structure/closet/MouseDrop_T(atom/movable/O, mob/user) if(!opened) @@ -328,7 +337,7 @@ set category = "Object" set name = "Toggle Open" - if(!usr.canmove || usr.stat || usr.is_mob_restrained()) + if(usr.is_mob_incapacitated()) return if(usr.loc == src) diff --git a/code/game/objects/structures/crates_lockers/closets/coffin.dm b/code/game/objects/structures/crates_lockers/closets/coffin.dm index a0c1aade6d73..41c27ae47519 100644 --- a/code/game/objects/structures/crates_lockers/closets/coffin.dm +++ b/code/game/objects/structures/crates_lockers/closets/coffin.dm @@ -6,6 +6,7 @@ icon_opened = "coffin_open" material = MATERIAL_WOOD anchored = FALSE + layer = BETWEEN_OBJECT_ITEM_LAYER /obj/structure/closet/coffin/update_icon() if(!opened) diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm index ab9dade9ed3e..113d17f30dce 100644 --- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm +++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm @@ -21,7 +21,7 @@ if(fireaxe) hasaxe = 1 - if (isrobot(usr) || src.locked) + if (src.locked) if(HAS_TRAIT(O, TRAIT_TOOL_MULTITOOL)) to_chat(user, SPAN_DANGER("Resetting circuitry...")) playsound(user, 'sound/machines/lockreset.ogg', 25, 1) @@ -140,7 +140,7 @@ set name = "Open/Close" set category = "Object" - if (isrobot(usr) || src.locked || src.smashed) + if (src.locked || src.smashed) if(src.locked) to_chat(usr, SPAN_DANGER("The cabinet won't budge!")) else if(src.smashed) @@ -154,9 +154,6 @@ set name = "Remove Fire Axe" set category = "Object" - if (isrobot(usr)) - return - if (istype(usr, /mob/living/carbon/xenomorph)) return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm index 4d275ee7b9d8..6c711a7bcabe 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm @@ -32,6 +32,8 @@ GLOBAL_LIST_EMPTY(co_secure_boxes) /obj/structure/closet/secure_closet/securecom/Initialize() . = ..() + new /obj/item/storage/box/kit/honorguard(src) + new /obj/item/storage/box/kit/honorguard(src) GLOB.co_secure_boxes += src /obj/structure/closet/secure_closet/securecom/Destroy() @@ -52,18 +54,16 @@ GLOBAL_LIST_EMPTY(co_secure_boxes) . = ..() new /obj/item/clothing/head/beret/cm(src) new /obj/item/clothing/head/beret/cm(src) - new /obj/item/clothing/head/cmcap/ro(src) - new /obj/item/clothing/head/cmcap/ro(src) + new /obj/item/clothing/head/cmcap/bridge(src) + new /obj/item/clothing/head/cmcap/bridge(src) new /obj/item/clothing/under/marine/officer/bridge(src) new /obj/item/clothing/under/marine/officer/bridge(src) new /obj/item/clothing/shoes/marine(src) new /obj/item/clothing/shoes/marine(src) new /obj/item/storage/belt/marine(src) new /obj/item/storage/belt/marine(src) - new /obj/item/clothing/under/marine/officer/command(src) - new /obj/item/clothing/under/marine/officer/command(src) - new /obj/item/clothing/suit/storage/webbing(src) - new /obj/item/clothing/suit/storage/webbing(src) + new /obj/item/clothing/under/marine/officer/boiler(src) + new /obj/item/clothing/under/marine/officer/boiler(src) new /obj/item/clothing/gloves/combat(src) new /obj/item/clothing/gloves/combat(src) @@ -100,13 +100,13 @@ GLOBAL_LIST_EMPTY(co_secure_boxes) . = ..() new /obj/item/clothing/head/beret/cm(src) new /obj/item/clothing/head/beret/cm/tan(src) - new /obj/item/clothing/head/cmcap/ro(src) + new /obj/item/clothing/head/cmcap/bridge(src) new /obj/item/clothing/head/helmet/marine/rto/intel(src) new /obj/item/clothing/under/marine/officer/intel(src) new /obj/item/clothing/shoes/marine(src) new /obj/item/storage/belt/gun/m4a3(src) new /obj/item/storage/backpack/marine/satchel/intel(src) - new /obj/item/clothing/suit/storage/marine/rto/intel(src) + new /obj/item/clothing/suit/storage/marine/medium/rto/intel(src) new /obj/item/storage/pouch/document(src) new /obj/item/storage/pouch/document(src) new /obj/item/device/motiondetector/intel(src) @@ -134,7 +134,7 @@ GLOBAL_LIST_EMPTY(co_secure_boxes) new /obj/item/clothing/under/marine/officer/pilot(src) new /obj/item/clothing/shoes/marine(src) new /obj/item/clothing/suit/armor/vest/pilot(src) - new /obj/item/storage/large_holster/m39(src) + new /obj/item/storage/belt/gun/m39(src) new /obj/item/storage/backpack/marine/satchel(src) new /obj/item/clothing/gloves/yellow(src) new /obj/item/clothing/glasses/sunglasses(src) @@ -180,7 +180,7 @@ GLOBAL_LIST_EMPTY(co_secure_boxes) /obj/structure/closet/secure_closet/warrant_officer name = "chief MP's locker" - req_access = list(ACCESS_MARINE_BRIG) + req_access = list(ACCESS_MARINE_ARMORY) icon_state = "secure_locked_warrant" icon_closed = "secure_unlocked_warrant" icon_locked = "secure_locked_warrant" @@ -254,6 +254,7 @@ GLOBAL_LIST_EMPTY(co_secure_boxes) new /obj/item/storage/belt/medical/full(src) new /obj/item/clothing/under/rank/medical/green(src) new /obj/item/clothing/under/rank/medical/blue(src) + new /obj/item/clothing/under/rank/medical/lightblue(src) new /obj/item/clothing/under/rank/medical/purple(src) new /obj/item/clothing/mask/surgical(src) new /obj/item/clothing/head/surgery/green(src) @@ -306,8 +307,8 @@ GLOBAL_LIST_EMPTY(co_secure_boxes) /obj/structure/closet/secure_closet/req_officer/Initialize() . = ..() - new /obj/item/device/radio/headset/almayer/ro(src) - new /obj/item/clothing/under/rank/ro_suit(src) + new /obj/item/device/radio/headset/almayer/qm(src) + new /obj/item/clothing/under/rank/qm_suit(src) new /obj/item/clothing/shoes/marine(src) new /obj/item/storage/belt/marine(src) new /obj/item/clothing/head/cmcap/req(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index d2b4114df25b..1be2bae9e8ca 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -69,9 +69,9 @@ new /obj/item/clothing/head/welding(src) new /obj/item/clothing/head/welding(src) new /obj/item/clothing/head/welding(src) - new /obj/item/tool/weldingtool/largetank(src) - new /obj/item/tool/weldingtool/largetank(src) - new /obj/item/tool/weldingtool/largetank(src) + new /obj/item/tool/weldingtool(src) + new /obj/item/tool/weldingtool(src) + new /obj/item/tool/weldingtool(src) new /obj/item/tool/weldpack(src) new /obj/item/tool/weldpack(src) new /obj/item/tool/weldpack(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet/guncabinet.dm similarity index 82% rename from code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm rename to code/game/objects/structures/crates_lockers/closets/secure/guncabinet/guncabinet.dm index 357606e01ee6..4531a68c42dd 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet/guncabinet.dm @@ -57,7 +57,7 @@ overlays += icon(src.icon,"open") //immune to bullets -/obj/structure/closet/secure_closet/guncabinet/bullet_act(obj/item/projectile/Proj) +/obj/structure/closet/secure_closet/guncabinet/bullet_act(obj/projectile/Proj) return 1 /obj/structure/closet/secure_closet/guncabinet/ex_act(severity) @@ -65,21 +65,7 @@ contents_explosion(severity - EXPLOSION_THRESHOLD_LOW) deconstruct(FALSE) -/obj/structure/closet/secure_closet/guncabinet/mp_armory -// req_access = list(ACCESS_MARINE_BRIG) - req_level = SEC_LEVEL_RED - -/obj/structure/closet/secure_closet/guncabinet/mp_armory/Initialize() - . = ..() - new /obj/item/weapon/gun/shotgun/combat(src) - new /obj/item/weapon/gun/shotgun/combat(src) - new /obj/item/ammo_magazine/shotgun/slugs(src) - new /obj/item/ammo_magazine/shotgun/buckshot(src) - new /obj/item/ammo_magazine/shotgun/buckshot(src) - new /obj/item/ammo_magazine/shotgun/buckshot(src) - - - +//this is used on corsat.(leaving it as a prop i guess) /obj/structure/closet/secure_closet/guncabinet/riot_control name = "riot control equipment closet" // req_access = list(ACCESS_MARINE_BRIG) @@ -111,15 +97,10 @@ new /obj/item/clothing/suit/armor/riot/marine(src) new /obj/item/storage/box/flashbangs(src) - /obj/structure/closet/secure_closet/guncabinet/green name = "green level gun cabinet" req_level = SEC_LEVEL_GREEN -/obj/structure/closet/secure_closet/guncabinet/blue - name = "blue level gun cabinet" - req_level = SEC_LEVEL_BLUE - /obj/structure/closet/secure_closet/guncabinet/red name = "red level gun cabinet" req_level = SEC_LEVEL_RED @@ -130,4 +111,4 @@ /obj/structure/closet/secure_closet/guncabinet/wy name = "weyland yutani gun cabinet" - req_access = ACCESS_WY_CORPORATE + req_access = ACCESS_WY_SECURITY diff --git a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet/level_blue.dm b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet/level_blue.dm new file mode 100644 index 000000000000..acc43c302e6d --- /dev/null +++ b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet/level_blue.dm @@ -0,0 +1,37 @@ +/obj/structure/closet/secure_closet/guncabinet/blue + name = "blue level gun cabinet" + req_level = SEC_LEVEL_BLUE + +//riot gear control cabinet adding vehicle clamp to it to... +// make more sense than in red alert cabinet. + +/obj/structure/closet/secure_closet/guncabinet/blue/riot_control + name = "riot control equipment closet" + storage_capacity = 55 //lots of stuff to fit in + req_level = SEC_LEVEL_BLUE + +/obj/structure/closet/secure_closet/guncabinet/blue/riot_control/Initialize() + . = ..() + new /obj/item/weapon/gun/shotgun/combat/riot(src, TRUE) + new /obj/item/weapon/gun/shotgun/combat/riot(src, TRUE) + new /obj/item/weapon/gun/shotgun/combat/riot(src, TRUE) + new /obj/item/weapon/shield/riot(src) + new /obj/item/weapon/shield/riot(src) + new /obj/item/weapon/shield/riot(src) + new /obj/item/ammo_magazine/shotgun/beanbag/riot(src) + new /obj/item/ammo_magazine/shotgun/beanbag/riot(src) + new /obj/item/ammo_magazine/shotgun/beanbag/riot(src) + new /obj/item/ammo_magazine/shotgun/beanbag/riot(src) + new /obj/item/weapon/gun/launcher/grenade/m81/riot(src, TRUE) + new /obj/item/storage/box/nade_box/tear_gas(src) + new /obj/item/clothing/mask/gas(src) + new /obj/item/clothing/mask/gas(src) + new /obj/item/clothing/mask/gas(src) + new /obj/item/clothing/head/helmet/riot(src) + new /obj/item/clothing/head/helmet/riot(src) + new /obj/item/clothing/head/helmet/riot(src) + new /obj/item/clothing/suit/armor/riot/marine(src) + new /obj/item/clothing/suit/armor/riot/marine(src) + new /obj/item/clothing/suit/armor/riot/marine(src) + new /obj/item/storage/box/flashbangs(src) + new /obj/item/vehicle_clamp(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet/level_red.dm b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet/level_red.dm new file mode 100644 index 000000000000..487ffd546d8e --- /dev/null +++ b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet/level_red.dm @@ -0,0 +1,112 @@ +/obj/structure/closet/secure_closet/guncabinet/red + name = "red level gun cabinet" + req_level = SEC_LEVEL_RED + +// MP ARMORY + +// 3 shotgun cabinet are in brig armory +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun + +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun/Initialize() + . = ..() + new /obj/item/weapon/gun/shotgun/combat(src) + new /obj/item/weapon/gun/shotgun/combat(src) + new /obj/item/weapon/gun/shotgun/combat(src) + new /obj/item/ammo_box/magazine/shotgun/buckshot(src) + new /obj/item/ammo_box/magazine/shotgun(src) + +// 2 M39 cabinet are in brig armory (4 M39 and 12 mags) +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun + +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun/Initialize() + . = ..() + new /obj/item/weapon/gun/smg/m39(src) + new /obj/item/weapon/gun/smg/m39(src) + new /obj/item/weapon/gun/smg/m39(src) + new /obj/item/weapon/gun/smg/m39(src) + new /obj/item/ammo_box/magazine/m39(src) + +// 2 m4ra cabinet are in brig armory (m4ra guns and 12 mags) +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle + +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle/Initialize() + . = ..() + new /obj/item/weapon/gun/rifle/m4ra(src) + new /obj/item/weapon/gun/rifle/m4ra(src) + new /obj/item/weapon/gun/rifle/m4ra(src) + new /obj/item/weapon/gun/rifle/m4ra(src) + new /obj/item/ammo_box/magazine/m4ra(src) + +// EXECUTION CHAMBER might add that here need to ask first... will reskin if asked. + + + +// CIC ARMORY + +// 4 shotgun cabinet are in cic armory +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun + +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun/Initialize() + . = ..() + new /obj/item/weapon/gun/shotgun/combat(src) + new /obj/item/ammo_magazine/shotgun/slugs(src) + new /obj/item/ammo_magazine/shotgun/buckshot(src) + +//4 MK1 cabinet(using guncase because it fit well here it seem) +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle + +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle/Initialize() + . = ..() + new /obj/item/storage/box/guncase/m41aMK1(src) + +//4 MK1 (with AP) cabinet(using guncase because it fit well here it seem) +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap + +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap/Initialize() + . = ..() + new /obj/item/storage/box/guncase/m41aMK1AP(src) + +// UPPER MEDBAY ARMORY + +//1 shotgun armory closet 2 guns and 4 mags +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun + +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun/Initialize() + . = ..() + new /obj/item/weapon/gun/shotgun/combat(src) + new /obj/item/weapon/gun/shotgun/combat(src) + new /obj/item/ammo_magazine/shotgun/slugs(src) + new /obj/item/ammo_magazine/shotgun/slugs(src) + new /obj/item/ammo_magazine/shotgun/buckshot(src) + new /obj/item/ammo_magazine/shotgun/buckshot(src) + +// 2 pistol amory closet maybe to replace with full pistol belt... +/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol + +/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol/Initialize() + . = ..() + new /obj/item/storage/belt/gun/m4a3/full(src) + new /obj/item/storage/belt/gun/m4a3/full(src) + new /obj/item/storage/belt/gun/m4a3/full(src) + new /obj/item/storage/belt/gun/m4a3/full(src) + new /obj/item/ammo_box/magazine/m4a3(src) + +// 2 M39 cabinet are in medical armory (4 M39 and 12 mags) +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun + +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun/Initialize() + . = ..() + new /obj/item/weapon/gun/smg/m39(src) + new /obj/item/weapon/gun/smg/m39(src) + new /obj/item/weapon/gun/smg/m39(src) + new /obj/item/weapon/gun/smg/m39(src) + new /obj/item/ammo_box/magazine/m39(src) + +// UPPER ENGI ARMORY +// same as medical + +// REQ ARMORY +// same as medical + +// Small office in hangar armory same as brig armory.... +// same as brig armory diff --git a/code/game/objects/structures/crates_lockers/closets/secure/kitchen.dm b/code/game/objects/structures/crates_lockers/closets/secure/kitchen.dm new file mode 100644 index 000000000000..d8b0c984d4b1 --- /dev/null +++ b/code/game/objects/structures/crates_lockers/closets/secure/kitchen.dm @@ -0,0 +1,143 @@ +//standart fridge + +/obj/structure/closet/secure_closet/fridge + name = "Refrigerator" + icon = 'icons/obj/structures/machinery/kitchen.dmi' + icon_state = "fridge1" + icon_closed = "fridge" + icon_locked = "fridge1" + icon_opened = "fridgeopen" + icon_broken = "fridgebroken" + icon_off = "fridge1" + storage_capacity = 60 //give extra storage capacity so that everything can fit. + +/obj/structure/closet/secure_closet/fridge/update_icon() + if(broken) + icon_state = icon_broken + else + if(!opened) + if(locked) + icon_state = icon_locked + else + icon_state = icon_closed + else + icon_state = icon_opened + +// for almayer. + +// Kitchen preparation room small quantity out of boxes... + +//standart organic storage. + +/obj/structure/closet/secure_closet/fridge/organic + name = "Organic" + +/obj/structure/closet/secure_closet/fridge/organic/Initialize() + . = ..() + for(var/i in 1 to 2) + new /obj/item/reagent_container/food/snacks/grown/apple(src) + new /obj/item/reagent_container/food/snacks/grown/cabbage(src) + new /obj/item/reagent_container/food/snacks/grown/carrot(src) + new /obj/item/reagent_container/food/snacks/grown/mushroom/chanterelle(src) + new /obj/item/reagent_container/food/snacks/grown/chili(src) + new /obj/item/reagent_container/food/snacks/grown/corn(src) + new /obj/item/reagent_container/food/snacks/grown/eggplant(src) + new /obj/item/reagent_container/food/snacks/grown/potato(src) + new /obj/item/reagent_container/food/snacks/grown/tomato(src) + new /obj/item/reagent_container/food/snacks/grown/whitebeet(src) + new /obj/item/reagent_container/food/snacks/grown/cherries(src) + new /obj/item/reagent_container/food/snacks/grown/lime(src) + new /obj/item/reagent_container/food/snacks/grown/lemon(src) + new /obj/item/reagent_container/food/snacks/grown/orange(src) + new /obj/item/reagent_container/food/snacks/grown/banana(src) + +//DRy + +/obj/structure/closet/secure_closet/fridge/dry + name = "dry" + +/obj/structure/closet/secure_closet/fridge/dry/Initialize() + . = ..() + for(var/i in 1 to 6) + new /obj/item/reagent_container/food/snacks/flour(src) + for(var/i in 1 to 2) + new /obj/item/reagent_container/food/condiment/sugar(src) + +//grocery + +/obj/structure/closet/secure_closet/fridge/groceries + name = "Groceries" + +/obj/structure/closet/secure_closet/fridge/groceries/Initialize() + . = ..() + for(var/i in 1 to 2) + new /obj/item/reagent_container/food/drinks/milk(src) + new /obj/item/reagent_container/food/drinks/soymilk(src) + new /obj/item/storage/fancy/egg_box(src) + new /obj/item/reagent_container/food/condiment/enzyme(src) + +// Kitchen Reserve big quantity stored in boxes + +//meat surplus +/obj/structure/closet/secure_closet/fridge/meat/stock + name = "meat" + +/obj/structure/closet/secure_closet/fridge/meat/stock/Initialize() + . = ..() + for(var/i in 1 to 2) + new /obj/item/storage/box/meat(src) + +//fish surplus +/obj/structure/closet/secure_closet/fridge/fish/stock + name = "fish" + +/obj/structure/closet/secure_closet/fridge/fish/stock/Initialize() + . = ..() + for(var/i in 1 to 2) + new /obj/item/storage/box/fish(src) + +//groceries to hold milk in bulk +/obj/structure/closet/secure_closet/fridge/groceries/stock + name = "Groceries" + +/obj/structure/closet/secure_closet/fridge/groceries/stock/Initialize() + . = ..() + for(var/i in 1 to 2) + new /obj/item/storage/box/milk(src) + new /obj/item/storage/box/soymilk(src) + for(var/i in 1 to 7) + new /obj/item/storage/fancy/egg_box(src) + new /obj/item/storage/box/enzyme(src) + +//dry storage for dry food only... not a fridge +/obj/structure/closet/secure_closet/fridge/dry/stock + name = "dry" + +/obj/structure/closet/secure_closet/fridge/dry/stock/Initialize() + . = ..() + for(var/i in 1 to 4) + new /obj/item/storage/box/flour(src) + new /obj/item/storage/box/sugar(src) + +// organic storage in bulk + +/obj/structure/closet/secure_closet/fridge/organic/stock + name = "Organic" + +/obj/structure/closet/secure_closet/fridge/organic/stock/Initialize() + . = ..() + new /obj/item/storage/box/apple(src) + new /obj/item/storage/box/banana(src) + new /obj/item/storage/box/chanterelle(src) + new /obj/item/storage/box/cherries(src) + new /obj/item/storage/box/chili(src) + new /obj/item/storage/box/cabbage(src) + new /obj/item/storage/box/carrot(src) + new /obj/item/storage/box/corn(src) + new /obj/item/storage/box/eggplant(src) + new /obj/item/storage/box/lemon(src) + new /obj/item/storage/box/lime(src) + new /obj/item/storage/box/orange(src) + new /obj/item/storage/box/potato(src) + new /obj/item/storage/box/tomato(src) + new /obj/item/storage/box/whitebeet(src) 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 4244fd82881e..80a5664567c3 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -93,6 +93,7 @@ new /obj/item/clothing/gloves/latex(src) new /obj/item/clothing/under/rank/medical/green(src) new /obj/item/clothing/under/rank/medical/blue(src) + new /obj/item/clothing/under/rank/medical/lightblue(src) new /obj/item/clothing/under/rank/medical/purple(src) new /obj/item/clothing/head/surgery/green(src) new /obj/item/clothing/head/surgery/blue(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index d6b4a35b04f7..3206da86b197 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -78,7 +78,7 @@ set src in oview(1) // One square distance set category = "Object" set name = "Reset Lock" - if(!usr.canmove || usr.stat || usr.is_mob_restrained()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain + if(usr.is_mob_incapacitated()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain return if(ishuman(usr)) src.add_fingerprint(usr) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index 435dfce3f122..e65d28e96f33 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -30,6 +30,7 @@ return 0 /obj/structure/closet/secure_closet/emp_act(severity) + . = ..() for(var/obj/O in src) O.emp_act(severity) if(!broken) @@ -41,8 +42,7 @@ open() else src.req_access = list() - src.req_access += pick(get_all_main_access()) - ..() + src.req_access += pick(get_access(ACCESS_LIST_MARINE_MAIN)) /obj/structure/closet/secure_closet/proc/togglelock(mob/living/user) if(src.opened) @@ -90,7 +90,7 @@ else to_chat(user, SPAN_NOTICE("The locker is too small to stuff [W:affecting] into!")) return - if(isrobot(user) || iszombie(user)) + if(iszombie(user)) return user.drop_inv_item_to_loc(W, loc) else if(istype(W, /obj/item/packageWrap) || istype(W, /obj/item/explosive/plastic)) @@ -121,7 +121,7 @@ set category = "Object" set name = "Toggle Lock" - if(!usr.canmove || usr.stat || usr.is_mob_restrained()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain + if(usr.is_mob_incapacitated()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain return if(ishuman(usr)) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 11b440e0e2ec..c668f299db73 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -105,7 +105,7 @@ new /obj/item/clothing/head/ushanka(src) new /obj/item/clothing/mask/rebreather/scarf(src) new /obj/item/clothing/under/rank/veteran/soviet_uniform_01(src) - new /obj/item/storage/belt/gun/type47/NY(src) + new /obj/item/storage/belt/gun/type47/t73(src) @@ -196,6 +196,59 @@ locked = TRUE var/id = null +/obj/structure/closet/secure_closet/brig/prisoner + +/obj/structure/closet/secure_closet/brig/prisoner/Initialize() + . = ..() + new /obj/item/clothing/under/color/orange(src) + new /obj/item/clothing/shoes/orange(src) + new /obj/item/device/radio/headset(src) + +/obj/structure/closet/secure_closet/brig/prison_uni + name = "Spare Prison Uniforms" + req_one_access = list(ACCESS_MARINE_BRIG, ACCESS_CIVILIAN_BRIG) + anchored = TRUE + locked = TRUE + + +/obj/structure/closet/secure_closet/brig/prison_uni/Initialize() + . = ..() + new /obj/item/clothing/shoes/orange(src) + new /obj/item/clothing/shoes/orange(src) + new /obj/item/clothing/shoes/orange(src) + new /obj/item/clothing/shoes/orange(src) + new /obj/item/clothing/shoes/orange(src) + new /obj/item/clothing/under/color/orange(src) + new /obj/item/clothing/under/color/orange(src) + new /obj/item/clothing/under/color/orange(src) + new /obj/item/clothing/under/color/orange(src) + new /obj/item/clothing/under/color/orange(src) + new /obj/item/device/radio/headset(src) + new /obj/item/device/radio/headset(src) + new /obj/item/device/radio/headset(src) + new /obj/item/device/radio/headset(src) + new /obj/item/device/radio/headset(src) + +/obj/structure/closet/secure_closet/brig/restraints + name = "Spare Restraints" + req_one_access = list(ACCESS_MARINE_BRIG, ACCESS_CIVILIAN_BRIG) + anchored = TRUE + locked = TRUE + + +/obj/structure/closet/secure_closet/brig/restraints/Initialize() + . = ..() + new /obj/item/clothing/suit/straight_jacket(src) + new /obj/item/clothing/suit/straight_jacket(src) + new /obj/item/clothing/suit/straight_jacket(src) + new /obj/item/clothing/suit/straight_jacket(src) + new /obj/item/clothing/suit/straight_jacket(src) + new /obj/item/clothing/glasses/sunglasses/blindfold(src) + new /obj/item/clothing/glasses/sunglasses/blindfold(src) + new /obj/item/clothing/glasses/sunglasses/blindfold(src) + new /obj/item/clothing/glasses/sunglasses/blindfold(src) + new /obj/item/clothing/glasses/sunglasses/blindfold(src) + /obj/structure/closet/secure_closet/brig/Initialize() . = ..() new /obj/item/clothing/under/color/orange(src) diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index 7848aaba4897..b000fd5733a2 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -51,8 +51,6 @@ new /obj/item/clothing/mask/gas(src) new /obj/item/clothing/mask/gas(src) new /obj/item/storage/firstaid/o2(src) - if ("nothing") - // doot // teehee - Ah, tg coders... if ("delete") diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index daecf1906c21..eddc0690233c 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -297,6 +297,7 @@ new /obj/item/clothing/under/rank/medical(src) new /obj/item/clothing/under/rank/medical(src) new /obj/item/clothing/under/rank/medical/blue(src) + new /obj/item/clothing/under/rank/medical/lightblue(src) new /obj/item/clothing/under/rank/medical/green(src) new /obj/item/clothing/under/rank/medical/purple(src) new /obj/item/clothing/shoes/white(src) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 7c9faaf1a027..d891119a8404 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -12,6 +12,19 @@ throwpass = 1 //prevents moving crates by hurling things at them store_mobs = FALSE var/rigged = 0 + /// Types this crate can be made into + var/list/crate_customizing_types = list( + "Plain" = /obj/structure/closet/crate, + "Weapons" = /obj/structure/closet/crate/weapon, + "Supply" = /obj/structure/closet/crate/supply, + "Ammo" = /obj/structure/closet/crate/ammo, + "Construction" = /obj/structure/closet/crate/construction, + "Explosives" = /obj/structure/closet/crate/explosives, + "Alpha" = /obj/structure/closet/crate/alpha, + "Bravo" = /obj/structure/closet/crate/bravo, + "Charlie" = /obj/structure/closet/crate/charlie, + "Delta" = /obj/structure/closet/crate/delta, + ) /obj/structure/closet/crate/initialize_pass_flags(datum/pass_flags_container/PF) ..() @@ -88,8 +101,6 @@ /obj/structure/closet/crate/attackby(obj/item/W as obj, mob/user as mob) if(W.flags_item & ITEM_ABSTRACT) return if(opened) - if(isrobot(user)) - return user.drop_inv_item_to_loc(W, loc) else if(istype(W, /obj/item/packageWrap) || istype(W, /obj/item/stack/fulton)) return @@ -130,8 +141,6 @@ contents_explosion(severity) deconstruct(FALSE) return - else - return /obj/structure/closet/crate/alpha name = "alpha squad crate" @@ -209,6 +218,7 @@ icon_state = "closed_freezer" icon_opened = "open_freezer" icon_closed = "closed_freezer" + crate_customizing_types = null var/target_temp = T0C - 40 var/cooling_power = 40 @@ -325,7 +335,7 @@ icon_closed = "closed_supply" /obj/structure/closet/crate/trashcart - name = "\improper trash cart" + name = "trash cart" desc = "A heavy, metal trashcart with wheels." icon_state = "closed_trashcart" icon_opened = "open_trashcart" @@ -427,4 +437,3 @@ density = TRUE icon_opened = "open_mcart_y" icon_closed = "closed_mcart_y" - diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index 430a2df52e84..39a659c5f397 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -28,9 +28,8 @@ material_sheet = new parts_type(current_turf, 2) // Move the objects back to the turf, above the crate material - for(var/atom/movable/moving_atom in contents) - var/atom/movable/current_atom = contents[1] - current_atom.forceMove(current_turf) + for(var/atom/movable/moving_atom as anything in contents) + moving_atom.forceMove(current_turf) deconstruct(TRUE) @@ -76,7 +75,7 @@ if(health <= 0) unpack() -/obj/structure/largecrate/bullet_act(obj/item/projectile/P) +/obj/structure/largecrate/bullet_act(obj/projectile/P) take_damage(P.calculate_damage(P.damage)) return TRUE @@ -252,8 +251,80 @@ name = "blue barrel" desc = "A blue storage barrel." icon_state = "barrel_blue" + var/strap_overlay = "+straps" parts_type = /obj/item/stack/sheet/metal unpacking_sound = 'sound/effects/metalhit.ogg' + var/straps = FALSE + +/obj/structure/largecrate/random/barrel/true_random + name = "barrel" + desc = "A barrel." + icon_state = "barrel_recolorable" + desc_lore = "From the future." + var/cap_doodad_state = "" + var/center_doodad_state = "" + var/color_override = null + + +GLOBAL_LIST_EMPTY(rbarrel_cap_states) // Will be set up in generate_barrel_states +GLOBAL_LIST_INIT(rbarrel_center_states, generate_barrel_states()) +GLOBAL_LIST_INIT(rbarrel_color_list, list(COLOR_SILVER, + COLOR_FLOORTILE_GRAY, + COLOR_MAROON, + COLOR_SOFT_RED, + COLOR_LIGHT_GRAYISH_RED, + COLOR_VERY_SOFT_YELLOW, + COLOR_OLIVE, + COLOR_DARK_MODERATE_LIME_GREEN, + COLOR_TEAL, + COLOR_MODERATE_BLUE, + COLOR_PURPLE, + COLOR_STRONG_VIOLET, + LIGHT_BEIGE, + COLOR_DARK_MODERATE_ORANGE, + COLOR_BROWN, + COLOR_DARK_BROWN)) + +/proc/generate_barrel_states() + var/list/rbarrel_center_states = list() + var/icon/icon = new('icons/obj/structures/crates.dmi') + var/list/icon_list = icon_states(icon) + for(var/state in icon_list) + if(findtext(state,"+cap")) + GLOB.rbarrel_cap_states.Add(state) + if(findtext(state,"+center")) + rbarrel_center_states.Add(state) + // We are returning rbarrel_center_states (rather than setting GLOB) because we are called by the global initializer to set it + return rbarrel_center_states + +/obj/structure/largecrate/random/barrel/true_random/Initialize() + . = ..() + + var/image/center_coloring = image(icon, src,"+_center") + + if(!color_override) + center_coloring.color = pick(GLOB.rbarrel_color_list) + + center_coloring.appearance_flags = RESET_COLOR|KEEP_APART + overlays += center_coloring + if(prob(25)) + cap_doodad_state = pick(GLOB.rbarrel_cap_states) + overlays += image(icon,src,cap_doodad_state) + if(prob(50)) + center_doodad_state = pick(GLOB.rbarrel_center_states) + overlays += image(icon,src,center_doodad_state) + +/obj/structure/largecrate/random/barrel/Initialize() + . = ..() + if(overlays) + overlays.Cut() + if(straps) + overlays += image(icon,icon_state = "+straps") + +/obj/structure/largecrate/random/barrel/unpack() + if(overlays) + overlays.Cut() + . = ..() /obj/structure/largecrate/random/barrel/blue name = "blue barrel" @@ -264,6 +335,7 @@ name = "red barrel" desc = "A red storage barrel." icon_state = "barrel_red" + straps = TRUE//the original sprite had straps, anyway, this is a harmless instance /obj/structure/largecrate/random/barrel/green name = "green barrel" @@ -335,13 +407,13 @@ num_guns = 3 num_mags = 3 name = "\improper Hyperdyne firearm crate" - stuff = list( /obj/item/weapon/gun/revolver/nagant = /obj/item/ammo_magazine/revolver/upp, - /obj/item/weapon/gun/pistol/c99 = /obj/item/ammo_magazine/pistol/c99, + stuff = list( /obj/item/weapon/gun/revolver/upp = /obj/item/ammo_magazine/revolver/upp, + /obj/item/weapon/gun/pistol/np92 = /obj/item/ammo_magazine/pistol/np92, /obj/item/weapon/gun/pistol/kt42 = /obj/item/ammo_magazine/pistol/kt42, /obj/item/weapon/gun/rifle/mar40 = /obj/item/ammo_magazine/rifle/mar40, /obj/item/weapon/gun/rifle/mar40/carbine = /obj/item/ammo_magazine/rifle/mar40/extended, /obj/item/weapon/gun/rifle/sniper/svd = /obj/item/ammo_magazine/sniper/svd, - /obj/item/weapon/gun/smg/ppsh = /obj/item/ammo_magazine/smg/ppsh + /obj/item/weapon/gun/smg/pps43 = /obj/item/ammo_magazine/smg/pps43 ) /obj/structure/largecrate/guns/merc @@ -356,14 +428,12 @@ /obj/item/weapon/gun/revolver/cmb = /obj/item/ammo_magazine/revolver/cmb, /obj/item/weapon/gun/shotgun/merc = /obj/item/ammo_magazine/handful/shotgun/buckshot, /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb = /obj/item/ammo_magazine/handful/shotgun/buckshot, - /obj/item/weapon/gun/shotgun/double = /obj/item/ammo_magazine/handful/shotgun/buckshot, - /obj/item/weapon/gun/shotgun/double/with_stock = /obj/item/ammo_magazine/handful/shotgun/buckshot, /obj/item/weapon/gun/smg/mp27 = /obj/item/ammo_magazine/smg/mp27, - /obj/item/weapon/gun/pistol/skorpion = /obj/item/ammo_magazine/pistol/skorpion, + /obj/item/weapon/gun/smg/bizon = /obj/item/ammo_magazine/smg/bizon, /obj/item/weapon/gun/smg/mac15 = /obj/item/ammo_magazine/smg/mac15, /obj/item/weapon/gun/smg/uzi = /obj/item/ammo_magazine/smg/uzi, /obj/item/weapon/gun/rifle/mar40/carbine = /obj/item/ammo_magazine/rifle/mar40, - /obj/item/weapon/gun/smg/ppsh = /obj/item/ammo_magazine/smg/ppsh, + /obj/item/weapon/gun/smg/pps43 = /obj/item/ammo_magazine/smg/pps43, /obj/item/weapon/gun/rifle/l42a = /obj/item/ammo_magazine/rifle/l42a, /obj/item/weapon/gun/rifle/l42a/abr40 = /obj/item/ammo_magazine/rifle/l42a/abr40, /obj/item/weapon/gun/smg/mp5 = /obj/item/ammo_magazine/smg/mp5, @@ -527,9 +597,9 @@ new /obj/item/weapon/gun/rifle/mar40(src) new /obj/item/ammo_magazine/rifle/mar40(src) new /obj/item/ammo_magazine/rifle/mar40(src) - new /obj/item/weapon/gun/pistol/skorpion(src) - new /obj/item/ammo_magazine/pistol/skorpion(src) - new /obj/item/ammo_magazine/pistol/skorpion(src) + new /obj/item/weapon/gun/smg/bizon(src) + new /obj/item/ammo_magazine/smg/bizon(src) + new /obj/item/ammo_magazine/smg/bizon(src) new /obj/item/weapon/gun/shotgun/combat(src) new /obj/item/ammo_magazine/shotgun(src) new /obj/item/ammo_magazine/shotgun/buckshot(src) @@ -573,8 +643,8 @@ new /obj/item/ammo_magazine/rifle(src) new /obj/item/ammo_magazine/rifle/mar40(src) new /obj/item/ammo_magazine/rifle/mar40(src) - new /obj/item/ammo_magazine/pistol/skorpion(src) - new /obj/item/ammo_magazine/pistol/skorpion(src) + new /obj/item/ammo_magazine/smg/bizon(src) + new /obj/item/ammo_magazine/smg/bizon(src) new /obj/item/ammo_magazine/shotgun(src) new /obj/item/ammo_magazine/shotgun/buckshot(src) diff --git a/code/game/objects/structures/crates_lockers/secure_crates.dm b/code/game/objects/structures/crates_lockers/secure_crates.dm index b4ebb6d5e827..6b025a57c78b 100644 --- a/code/game/objects/structures/crates_lockers/secure_crates.dm +++ b/code/game/objects/structures/crates_lockers/secure_crates.dm @@ -4,6 +4,7 @@ icon_state = "secure_locked_basic" icon_opened = "secure_open_basic" icon_closed = "secure_locked_basic" + crate_customizing_types = null var/icon_locked = "secure_locked_basic" var/icon_unlocked = "secure_unlocked_basic" var/sparks = "securecratesparks" @@ -52,7 +53,7 @@ set category = "Object" set name = "Toggle Lock" - if(!usr.canmove || usr.stat || usr.is_mob_restrained()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain + if(usr.is_mob_incapacitated()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain return if(ishuman(usr)) @@ -86,6 +87,7 @@ ..() /obj/structure/closet/crate/secure/emp_act(severity) + . = ..() for(var/obj/O in src) O.emp_act(severity) if(!broken && !opened && prob(50/severity)) @@ -104,8 +106,7 @@ open() else src.req_access = list() - src.req_access += pick(get_all_main_access()) - ..() + src.req_access += pick(get_access(ACCESS_LIST_MARINE_MAIN)) //------------------------------------ @@ -176,6 +177,18 @@ icon_locked = "secure_locked_weyland" icon_unlocked = "secure_unlocked_weyland" +/obj/structure/closet/crate/secure/vulture + name = "secure M707 crate" + desc = "A secure crate, containing an M707 anti-materiel rifle." + icon_state = "secure_locked_vulture" + icon_opened = "secure_open_vulture" + icon_locked = "secure_locked_vulture" + icon_unlocked = "secure_unlocked_vulture" + +/obj/structure/closet/crate/secure/vulture/Initialize() + . = ..() + new /obj/item/storage/box/guncase/vulture(src) + //special version, able to store OB fuel and warheads only /obj/structure/closet/crate/secure/ob name = "secure orbital bombardment ammunition crate" diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm index 26ed91f2a9d3..7b08f7520139 100644 --- a/code/game/objects/structures/curtains.dm +++ b/code/game/objects/structures/curtains.dm @@ -10,7 +10,7 @@ ..() toggle() -/obj/structure/curtain/bullet_act(obj/item/projectile/P, def_zone) +/obj/structure/curtain/bullet_act(obj/projectile/P, def_zone) if(P.damage) visible_message(SPAN_WARNING("[P] tears [src] down!")) qdel(src) diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 4099c29e9685..8439a887e57f 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -30,7 +30,7 @@ occupied = 0 return ..() -/obj/structure/displaycase/bullet_act(obj/item/projectile/Proj) +/obj/structure/displaycase/bullet_act(obj/projectile/Proj) health -= Proj.ammo.damage ..() src.healthcheck() diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm index 7b54f0447fae..e754478dda0b 100644 --- a/code/game/objects/structures/extinguisher.dm +++ b/code/game/objects/structures/extinguisher.dm @@ -5,13 +5,15 @@ icon_state = "extinguisher" anchored = TRUE density = FALSE - var/obj/item/tool/extinguisher/has_extinguisher = new/obj/item/tool/extinguisher + var/obj/item/tool/extinguisher/has_extinguisher var/opened = 0 var/base_icon /obj/structure/extinguisher_cabinet/Initialize() . = ..() base_icon = initial(icon_state) + has_extinguisher = new /obj/item/tool/extinguisher() + has_extinguisher.forceMove(src) /obj/structure/extinguisher_cabinet/lifeboat name = "extinguisher cabinet" @@ -21,15 +23,13 @@ /obj/structure/extinguisher_cabinet/alt icon_state = "extinguisher_alt" -/obj/structure/extinguisher_cabinet/attackby(obj/item/O, mob/user) - if(isrobot(user)) - return - if(istype(O, /obj/item/tool/extinguisher)) +/obj/structure/extinguisher_cabinet/attackby(obj/item/item, mob/user) + if(istype(item, /obj/item/tool/extinguisher)) if(!has_extinguisher && opened) user.drop_held_item() - contents += O - has_extinguisher = O - to_chat(user, SPAN_NOTICE("You place [O] in [src].")) + item.forceMove(src) + has_extinguisher = item + to_chat(user, SPAN_NOTICE("You place [item] in [src].")) else opened = !opened else @@ -38,14 +38,11 @@ /obj/structure/extinguisher_cabinet/attack_hand(mob/user) - if(isrobot(user)) - return - if(has_extinguisher) user.put_in_hands(has_extinguisher) to_chat(user, SPAN_NOTICE("You take [has_extinguisher] from [src].")) has_extinguisher = null - opened = 1 + opened = TRUE else opened = !opened update_icon() diff --git a/code/game/objects/structures/fence.dm b/code/game/objects/structures/fence.dm index 8f1a0269c4e1..db24dfdfebdd 100644 --- a/code/game/objects/structures/fence.dm +++ b/code/game/objects/structures/fence.dm @@ -34,7 +34,7 @@ if(make_hit_sound) playsound(loc, 'sound/effects/grillehit.ogg', 25, 1) -/obj/structure/fence/bullet_act(obj/item/projectile/Proj) +/obj/structure/fence/bullet_act(obj/projectile/Proj) //Tasers and the like should not damage windows. var/ammo_flags = Proj.ammo.flags_ammo_behavior | Proj.projectile_override_flags if(Proj.ammo.damage_type == HALLOSS || Proj.damage <= 0 || ammo_flags == AMMO_ENERGY) @@ -209,7 +209,7 @@ //This proc is used to update the icons of nearby windows. /obj/structure/fence/proc/update_nearby_icons() update_icon() - for(var/direction in cardinal) + for(var/direction in GLOB.cardinals) for(var/obj/structure/fence/W in get_step(src, direction)) W.update_icon() diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index e8e4b3b0966e..0e4a20cf989a 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -72,7 +72,8 @@ PLANT_CUT_MACHETE = 3 = Needs at least a machete to be cut down addtimer(CALLBACK(src, PROC_REF(burn_up)), spread_time + 5 SECONDS) /obj/structure/flora/proc/spread_fire() - for(var/D in cardinal) //Spread fire + SIGNAL_HANDLER + for(var/D in GLOB.cardinals) //Spread fire var/turf/T = get_step(src.loc, D) if(T) for(var/obj/structure/flora/F in T) @@ -82,6 +83,7 @@ PLANT_CUT_MACHETE = 3 = Needs at least a machete to be cut down new /obj/flamer_fire(T, create_cause_data("wildfire")) /obj/structure/flora/proc/burn_up() + SIGNAL_HANDLER new /obj/effect/decal/cleanable/dirt(loc) if(center) new /obj/effect/decal/cleanable/dirt(loc) //Produces more ash at the center @@ -91,7 +93,7 @@ PLANT_CUT_MACHETE = 3 = Needs at least a machete to be cut down if(power >= EXPLOSION_THRESHOLD_VLOW) deconstruct(FALSE) -/obj/structure/flora/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/structure/flora/get_projectile_hit_boolean(obj/projectile/P) . = ..() return FALSE @@ -603,11 +605,7 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE. name = "strange tree" desc = "Some kind of bizarre alien tree. It oozes with a sickly yellow sap." icon_state = "alienplant1" - luminosity = 2 - -/obj/structure/flora/jungle/alienplant1/Destroy() - SetLuminosity(0) - return ..() + light_range = 2 /obj/structure/flora/jungle/planttop1 name = "strange tree" @@ -633,15 +631,15 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE. /obj/structure/flora/jungle/vines/light_1 icon_state = "light_1" - icon_tag = "light_1" + icon_tag = "light" /obj/structure/flora/jungle/vines/light_2 icon_state = "light_2" - icon_tag = "light_2" + icon_tag = "light" /obj/structure/flora/jungle/vines/light_3 icon_state = "light_3" - icon_tag = "light_3" + icon_tag = "light" //heavy hide you /obj/structure/flora/jungle/vines/heavy @@ -721,13 +719,13 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE. //hatchets and shiet can clear away undergrowth if(I && (I.sharp >= IS_SHARP_ITEM_ACCURATE) && !stump) var/damage = rand(2,5) - if(istype(I,/obj/item/weapon/claymore/mercsword)) + if(istype(I,/obj/item/weapon/sword)) damage = rand(8,18) if(indestructable) //this bush marks the edge of the map, you can't destroy it to_chat(user, SPAN_DANGER("You flail away at the undergrowth, but it's too thick here.")) else - user.visible_message(SPAN_DANGER("[user] flails away at the [src] with [I]."),SPAN_DANGER("You flail away at the [src] with [I].")) + user.visible_message(SPAN_DANGER("[user] flails away at [src] with [I]."), SPAN_DANGER("You flail away at [src] with [I].")) playsound(src.loc, 'sound/effects/vegetation_hit.ogg', 25, 1) health -= damage if(health < 0) @@ -760,4 +758,3 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE. desc = "Looks like some of that fruit might be edible." icon_tag = "plant" variations = 7 - diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index d014ebfe3b94..6cd6a5cd0300 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -173,6 +173,14 @@ return do_reinforced_wall(W, user) if(STATE_DISPLACED) if(HAS_TRAIT(W, TRAIT_TOOL_CROWBAR)) + var/turf/open/floor = loc + if(!floor.allow_construction) + to_chat(user, SPAN_WARNING("The girder must be secured on a proper surface!")) + return + var/obj/structure/tunnel/tunnel = locate(/obj/structure/tunnel) in loc + if(tunnel) + to_chat(user, SPAN_WARNING("The girder cannot be secured on a tunnel!")) + return playsound(loc, 'sound/items/Crowbar.ogg', 25, 1) to_chat(user, SPAN_NOTICE("Now securing the girder...")) if(!do_after(user, 40 * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) @@ -316,7 +324,7 @@ return FALSE -/obj/structure/girder/bullet_act(obj/item/projectile/P) +/obj/structure/girder/bullet_act(obj/projectile/P) //Tasers and the like should not damage girders. if(P.ammo.damage_type == HALLOSS || P.ammo.damage_type == TOX || P.ammo.damage_type == CLONE || P.damage == 0) return FALSE diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 5386e50bc9f3..063f6a337290 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -101,12 +101,12 @@ /obj/structure/grille/BlockedPassDirs(atom/movable/mover, target_dir) - if(istype(mover, /obj/item/projectile) && prob(90)) + if(istype(mover, /obj/projectile) && prob(90)) return NO_BLOCKED_MOVEMENT return ..() -/obj/structure/grille/bullet_act(obj/item/projectile/Proj) +/obj/structure/grille/bullet_act(obj/projectile/Proj) //Tasers and the like should not damage grilles. if(Proj.ammo.damage_type == HALLOSS) @@ -166,7 +166,7 @@ if (ST.use(1)) var/obj/structure/window/WD = new wtype(loc) WD.set_constructed_window(dir_to_set) - to_chat(user, SPAN_NOTICE("You place the [WD] on [src].")) + to_chat(user, SPAN_NOTICE("You place [WD] on [src].")) return //window placing end diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index 1c7f616f52cb..b3a330ca36b0 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -44,7 +44,7 @@ health = 50 var/deflated = FALSE -/obj/structure/inflatable/bullet_act(obj/item/projectile/Proj) +/obj/structure/inflatable/bullet_act(obj/projectile/Proj) health -= Proj.damage ..() if(health <= 0 && !deflated) @@ -179,9 +179,6 @@ /obj/structure/inflatable/door/attack_remote(mob/user as mob) //those aren't machinery, they're just big fucking slabs of a mineral if(isRemoteControlling(user)) //so the AI can't open it return - else if(isrobot(user)) //but cyborgs can - if(get_dist(user,src) <= 1) //not remotely though - return TryToSwitchState(user) /obj/structure/inflatable/door/attack_hand(mob/user as mob) return TryToSwitchState(user) diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm index f2e6b172ad88..88321053ef4a 100644 --- a/code/game/objects/structures/ladders.dm +++ b/code/game/objects/structures/ladders.dm @@ -67,8 +67,8 @@ else //wtf make your ladders properly assholes icon_state = "ladder00" -/obj/structure/ladder/attack_hand(mob/user) - if(user.stat || get_dist(user, src) > 1 || user.blinded || user.lying || user.buckled || user.anchored) return +/obj/structure/ladder/attack_hand(mob/living/user) + if(user.stat || get_dist(user, src) > 1 || user.blinded || user.body_position == LYING_DOWN || user.buckled || user.anchored) return if(busy) to_chat(user, SPAN_WARNING("Someone else is currently using [src].")) return @@ -94,7 +94,7 @@ SPAN_NOTICE("You start climbing [ladder_dir_name] [src].")) busy = TRUE if(do_after(user, 20, INTERRUPT_INCAPACITATED|INTERRUPT_OUT_OF_RANGE|INTERRUPT_RESIST, BUSY_ICON_GENERIC, src, INTERRUPT_NONE)) - if(!user.is_mob_incapacitated() && get_dist(user, src) <= 1 && !user.blinded && !user.lying && !user.buckled && !user.anchored) + if(!user.is_mob_incapacitated() && get_dist(user, src) <= 1 && !user.blinded && user.body_position != LYING_DOWN && !user.buckled && !user.anchored) visible_message(SPAN_NOTICE("[user] climbs [ladder_dir_name] [src].")) //Hack to give a visible message to the people here without duplicating user message user.visible_message(SPAN_NOTICE("[user] climbs [ladder_dir_name] [src]."), SPAN_NOTICE("You climb [ladder_dir_name] [src].")) @@ -103,9 +103,9 @@ busy = FALSE add_fingerprint(user) -/obj/structure/ladder/check_eye(mob/user) +/obj/structure/ladder/check_eye(mob/living/user) //Are we capable of looking? - if(user.is_mob_incapacitated() || get_dist(user, src) > 1 || user.blinded || user.lying || !user.client) + if(user.is_mob_incapacitated() || get_dist(user, src) > 1 || user.blinded || user.body_position == LYING_DOWN || !user.client) user.unset_interaction() //Are ladder cameras ok? @@ -140,7 +140,7 @@ //Peeking up/down /obj/structure/ladder/MouseDrop(over_object, src_location, over_location) if((over_object == usr && (in_range(src, usr)))) - if(islarva(usr) || isobserver(usr) || usr.is_mob_incapacitated() || usr.blinded || usr.lying) + if(islarva(usr) || isobserver(usr) || usr.is_mob_incapacitated() || usr.blinded) to_chat(usr, "You can't do that in your current state.") return if(is_watching) @@ -178,9 +178,6 @@ add_fingerprint(usr) -/obj/structure/ladder/attack_robot(mob/user as mob) - return attack_hand(user) - /obj/structure/ladder/ex_act(severity) return @@ -262,11 +259,8 @@ /obj/structure/ladder/fragile_almayer/Initialize() . = ..() - GLOB.hijack_bustable_ladders += src - -/obj/structure/ladder/fragile_almayer/Destroy() - GLOB.hijack_bustable_ladders -= src - return ..() + if(is_mainship_level(z)) + RegisterSignal(SSdcs, COMSIG_GLOB_HIJACK_IMPACTED, PROC_REF(deconstruct)) /obj/structure/ladder/fragile_almayer/deconstruct() new /obj/structure/prop/broken_ladder(loc) diff --git a/code/game/objects/structures/lamarr_cage.dm b/code/game/objects/structures/lamarr_cage.dm index dd9a0c19db9b..fbae7a387a63 100644 --- a/code/game/objects/structures/lamarr_cage.dm +++ b/code/game/objects/structures/lamarr_cage.dm @@ -26,7 +26,7 @@ deconstruct(FALSE) -/obj/structure/lamarr/bullet_act(obj/item/projectile/Proj) +/obj/structure/lamarr/bullet_act(obj/projectile/Proj) health -= Proj.damage ..() src.healthcheck() diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 38201e052c50..dd427adfabb9 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -19,14 +19,14 @@ icon = 'icons/obj/structures/props/smoothlattice.dmi' icon_state = "latticeblank" updateOverlays() - for (var/dir in cardinal) + for (var/dir in GLOB.cardinals) var/obj/structure/lattice/L if(locate(/obj/structure/lattice, get_step(src, dir))) L = locate(/obj/structure/lattice, get_step(src, dir)) L.updateOverlays() /obj/structure/lattice/Destroy() - for (var/dir in cardinal) + for (var/dir in GLOB.cardinals) var/obj/structure/lattice/L if(locate(/obj/structure/lattice, get_step(src, dir))) L = locate(/obj/structure/lattice, get_step(src, dir)) @@ -43,8 +43,6 @@ if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY) deconstruct(FALSE) return - else - return /obj/structure/lattice/attackby(obj/item/C as obj, mob/user as mob) @@ -75,7 +73,7 @@ var/dir_sum = 0 - for (var/direction in cardinal) + for (var/direction in GLOB.cardinals) if(locate(/obj/structure/lattice, get_step(src, direction))) dir_sum += direction else diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 5d0d61e59862..25dc0040e2ac 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -32,9 +32,6 @@ /obj/structure/mineral_door/attack_remote(mob/user as mob) //those aren't machinery, they're just big fucking slabs of a mineral if(isRemoteControlling(user)) //so the AI can't open it return - else if(isrobot(user)) //but cyborgs can - if(get_dist(user,src) <= 1) //not remotely though - return TryToSwitchState(user) /obj/structure/mineral_door/attack_hand(mob/user as mob) return TryToSwitchState(user) @@ -167,11 +164,7 @@ /obj/structure/mineral_door/uranium mineralType = "uranium" hardness = 3 - luminosity = 2 - -/obj/structure/mineral_door/uranium/Destroy() - SetLuminosity(0) - . = ..() + light_range = 2 /obj/structure/mineral_door/sandstone mineralType = "sandstone" diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 5660f342f90b..a8d76843313a 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -89,7 +89,7 @@ shard_target.take_damage(15) -/obj/structure/mirror/bullet_act(obj/item/projectile/Proj) +/obj/structure/mirror/bullet_act(obj/projectile/Proj) if(prob(Proj.damage * 2)) if(!shattered) shatter() diff --git a/code/game/objects/structures/misc.dm b/code/game/objects/structures/misc.dm index 60f29c8b40e4..89bc3da6ab23 100644 --- a/code/game/objects/structures/misc.dm +++ b/code/game/objects/structures/misc.dm @@ -12,7 +12,7 @@ if (PF) PF.flags_can_pass_all = PASS_HIGH_OVER_ONLY -/obj/structure/showcase/bullet_act(obj/item/projectile/P) +/obj/structure/showcase/bullet_act(obj/projectile/P) var/damage = P.damage health -= damage ..() @@ -143,7 +143,7 @@ unslashable = TRUE unacidable = TRUE health = null - layer = TURF_LAYER + layer = ABOVE_TURF_LAYER//Being on turf layer was causing issues with cameras. This SHOULDN'T cause any problems. plane = FLOOR_PLANE density = FALSE opacity = FALSE @@ -189,3 +189,126 @@ /obj/structure/computer3frame/laptop name = "laptop frame" + +// Dartboard +#define DOUBLE_BAND 2 +#define TRIPLE_BAND 3 + +/obj/structure/dartboard + name = "dartboard" + desc = "A dartboard, loosely secured." + icon = 'icons/obj/structures/props/props.dmi' + icon_state = "dart_board" + density = TRUE + unslashable = TRUE + +/obj/structure/dartboard/get_examine_text() + . = ..() + if(length(contents)) + var/is_are = "is" + if(length(contents) != 1) + is_are = "are" + + . += SPAN_NOTICE("There [is_are] [length(contents)] item\s embedded into [src].") + +/obj/structure/dartboard/initialize_pass_flags(datum/pass_flags_container/pass_flags) + ..() + if(pass_flags) + pass_flags.flags_can_pass_all = PASS_MOB_IS + +/obj/structure/dartboard/get_projectile_hit_boolean(obj/projectile/projectile) + . = ..() + visible_message(SPAN_DANGER("[projectile] hits [src], collapsing it!")) + collapse() + +/obj/structure/dartboard/proc/flush_contents() + for(var/atom/movable/embedded_items as anything in contents) + embedded_items.forceMove(loc) + +/obj/structure/dartboard/proc/collapse() + playsound(src, 'sound/effects/thud1.ogg', 50) + new /obj/item/dartboard/(loc) + qdel(src) + +/obj/structure/dartboard/attack_hand(mob/user) + if(length(contents)) + user.visible_message(SPAN_NOTICE("[user] starts recovering items from [src]..."), SPAN_NOTICE("You start recovering items from [src]...")) + if(do_after(user, 1 SECONDS, INTERRUPT_ALL, BUSY_ICON_FRIENDLY, user, INTERRUPT_MOVED, BUSY_ICON_GENERIC)) + flush_contents() + else + to_chat(user, SPAN_WARNING("[src] has nothing embedded!")) + +/obj/structure/dartboard/Destroy() + flush_contents() + . = ..() + +/obj/structure/dartboard/hitby(obj/item/thrown_item) + if(thrown_item.sharp != IS_SHARP_ITEM_ACCURATE && !istype(thrown_item, /obj/item/weapon/dart)) + visible_message(SPAN_DANGER("[thrown_item] hits [src], collapsing it!")) + collapse() + return + + contents += thrown_item + playsound(src, 'sound/weapons/tablehit1.ogg', 50) + var/score = rand(1,21) + if(score == 21) + visible_message(SPAN_DANGER("[thrown_item] embeds into [src], striking the bullseye! 50 points.")) + return + + var/band = "single" + var/band_number = rand(1,3) + score *= band_number + switch(band_number) + if(DOUBLE_BAND) + band = "double" + if(TRIPLE_BAND) + band = "triple" + visible_message(SPAN_DANGER("[thrown_item] embeds into [src], striking [band] for [score] point\s.")) + +/obj/structure/dartboard/attackby(obj/item/item, mob/user) + user.visible_message(SPAN_DANGER("[user] hits [src] with [item], collapsing it!"), SPAN_DANGER("You collapse [src] with [item]!")) + collapse() + +/obj/structure/dartboard/MouseDrop(over_object, src_location, over_location) + . = ..() + if(over_object != usr || !Adjacent(usr)) + return + + if(!ishuman(usr)) + return + + visible_message(SPAN_NOTICE("[usr] unsecures [src].")) + var/obj/item/dartboard/unsecured_board = new(loc) + usr.put_in_hands(unsecured_board) + qdel(src) + +/obj/item/dartboard + name = "dartboard" + desc = "A dartboard for darts." + icon = 'icons/obj/structures/props/props.dmi' + icon_state = "dart_board" + +/obj/item/dartboard/attack_self(mob/user) + . = ..() + + var/turf_ahead = get_step(user, user.dir) + if(!istype(turf_ahead, /turf/closed)) + to_chat(user, SPAN_WARNING("[src] needs a wall to be secured to!")) + return + + var/obj/structure/dartboard/secured_board = new(user.loc) + switch(user.dir) + if(NORTH) + secured_board.pixel_y = 32 + if(EAST) + secured_board.pixel_x = 32 + if(SOUTH) + secured_board.pixel_y = -32 + if(WEST) + secured_board.pixel_x = -32 + + to_chat(user, SPAN_NOTICE("You secure [secured_board] to [turf_ahead].")) + qdel(src) + +#undef DOUBLE_BAND +#undef TRIPLE_BAND diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index dc8cf08d13f1..f1717f5bf0f5 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -113,13 +113,12 @@ else . = ..() -/obj/structure/morgue/relaymove(mob/user) +/obj/structure/morgue/relaymove(mob/living/user) if(user.is_mob_incapacitated()) return if(exit_stun) - user.stunned = max(user.stunned, exit_stun) //Action delay when going out of a closet (or morgue in this case) - user.update_canmove() //Force the delay to go in action immediately - if(!user.lying) + user.apply_effect(exit_stun, STUN) + if(user.mobility_flags & MOBILITY_MOVE) user.visible_message(SPAN_WARNING("[user] suddenly gets out of [src]!"), SPAN_WARNING("You get out of [src] and get your bearings!")) toggle_morgue(user) diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm index 9d007a0c8c80..0c763378ede1 100644 --- a/code/game/objects/structures/noticeboard.dm +++ b/code/game/objects/structures/noticeboard.dm @@ -1,80 +1,111 @@ +#define MAX_NOTICES 8 + /obj/structure/noticeboard name = "notice board" desc = "A board for pinning important notices upon." icon = 'icons/obj/structures/props/stationobjs.dmi' - icon_state = "nboard00" + icon_state = "noticeboard" density = FALSE anchored = TRUE var/notices = 0 -/obj/structure/noticeboard/Initialize() +/obj/structure/noticeboard/Initialize(mapload) . = ..() + if(!mapload) + return + for(var/obj/item/I in loc) - if(notices > 4) break + if(notices >= MAX_NOTICES) + break if(istype(I, /obj/item/paper)) I.forceMove(src) notices++ - icon_state = "nboard0[notices]" + update_overlays() //attaching papers!! -/obj/structure/noticeboard/attackby(obj/item/O as obj, mob/user as mob) - if(istype(O, /obj/item/paper)) - if(notices < 5) - O.add_fingerprint(user) - add_fingerprint(user) - user.drop_held_item() - O.forceMove(src) +/obj/structure/noticeboard/attackby(obj/item/O, mob/user, params) + if(istype(O, /obj/item/paper) || istype(O, /obj/item/photo)) + if(!allowed(user)) + to_chat(user, SPAN_WARNING("You are not authorized to add notices!")) + return + if(notices < MAX_NOTICES) + if(!user.drop_inv_item_to_loc(O, src)) + return notices++ - icon_state = "nboard0[notices]" //update sprite - to_chat(user, SPAN_NOTICE("You pin the paper to the noticeboard.")) + update_overlays() + to_chat(user, SPAN_NOTICE("You pin the [O] to the noticeboard.")) else - to_chat(user, SPAN_NOTICE("You reach to pin your paper to the board but hesitate. You are certain your paper will not be seen among the many others already attached.")) + to_chat(user, SPAN_WARNING("The notice board is full!")) + else if(istype(O, /obj/item/tool/pen)) + user.set_interaction(src) + tgui_interact(user) + else + return ..() -/obj/structure/noticeboard/attack_hand(user as mob) - var/dat = "Noticeboard
        " - for(var/obj/item/paper/P in src) - dat += "[P.name] Write Remove
        " - user << browse("Notices[dat]","window=noticeboard") - onclose(user, "noticeboard") +/obj/structure/noticeboard/attack_hand(mob/user) + . = ..() + user.set_interaction(src) + tgui_interact(user) +/obj/structure/noticeboard/ui_state(mob/user) + return GLOB.physical_state -/obj/structure/noticeboard/Topic(href, href_list) - ..() - usr.set_interaction(src) - if(href_list["remove"]) - if((usr.stat || usr.is_mob_restrained())) //For when a player is handcuffed while they have the notice window open - return - var/obj/item/P = locate(href_list["remove"]) - if((P && P.loc == src)) - P.forceMove(get_turf(src) )//dump paper on the floor because you're a clumsy fuck - P.add_fingerprint(usr) - add_fingerprint(usr) - notices-- - icon_state = "nboard0[notices]" +/obj/structure/noticeboard/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "NoticeBoard", name) + ui.open() - if(href_list["write"]) - if((usr.stat || usr.is_mob_restrained())) //For when a player is handcuffed while they have the notice window open - return - var/obj/item/P = locate(href_list["write"]) +/obj/structure/noticeboard/ui_data(mob/user) + var/list/data = list() + data["allowed"] = allowed(user) + data["items"] = list() + for(var/obj/item/content in contents) + var/list/content_data = list( + name = content.name, + ref = REF(content) + ) + data["items"] += list(content_data) + return data + +/obj/structure/noticeboard/ui_act(action, params) + . = ..() + if(.) + return + + var/obj/item/item = locate(params["ref"]) in contents + if(!istype(item) || item.loc != src) + return + + var/mob/user = usr + + switch(action) + if("examine") + user.examinate(item) + return TRUE + if("write") + var/obj/item/writing_tool = user.get_held_item() + if(!istype(writing_tool, /obj/item/tool/pen)) + balloon_alert(user, "you need a pen for that!") + return + item.attackby(writing_tool, user) + return TRUE + if("remove") + if(!allowed(user)) + return + remove_item(item, user) + return TRUE + +/obj/structure/noticeboard/proc/update_overlays() + if(overlays) overlays.Cut() + if(notices) + overlays += image(icon, "notices_[notices]") - if((P && P.loc == src)) //ifthe paper's on the board - if(HAS_TRAIT(usr.r_hand, TRAIT_TOOL_PEN)) - add_fingerprint(usr) - P.attackby(usr.r_hand, usr) //then do ittttt - else - if(HAS_TRAIT(usr.l_hand, TRAIT_TOOL_PEN)) //check other hand for pen - add_fingerprint(usr) - P.attackby(usr.l_hand, usr) - else - to_chat(usr, SPAN_NOTICE("You'll need something to write with!")) +/obj/structure/noticeboard/proc/remove_item(obj/item/item, mob/user) + item.forceMove(loc) + if(user) + user.put_in_hands(item) + balloon_alert(user, "removed from board") + notices-- + update_overlays() - if(href_list["read"]) - var/obj/item/paper/P = locate(href_list["read"]) - if((P && P.loc == src)) - if(!( istype(usr, /mob/living/carbon/human) )) - usr << browse("[P.name][stars(P.info)]", "window=[P.name]") - onclose(usr, "[P.name]") - else - usr << browse("[P.name][P.info]", "window=[P.name]") - onclose(usr, "[P.name]") - return diff --git a/code/game/objects/structures/pipes/pipes.dm b/code/game/objects/structures/pipes/pipes.dm index aa5f56fb5d8c..9f2b70c70661 100644 --- a/code/game/objects/structures/pipes/pipes.dm +++ b/code/game/objects/structures/pipes/pipes.dm @@ -14,6 +14,8 @@ var/ventcrawl_message_busy = FALSE //Prevent spamming + /// Whether or not the pipe will explode (when on the Almayer) during hijack + var/explodey = TRUE /// The grenade subtypes that pipes will use when they explode var/static/list/exploding_types = list(/obj/item/explosive/grenade/high_explosive/bursting_pipe, /obj/item/explosive/grenade/incendiary/bursting_pipe) @@ -40,7 +42,8 @@ if(!is_mainship_level(z)) return - GLOB.mainship_pipes += src + if(explodey) + GLOB.mainship_pipes += src /obj/structure/pipes/Destroy() for(var/mob/living/M in src) diff --git a/code/game/objects/structures/pipes/standard/manifolds.dm b/code/game/objects/structures/pipes/standard/manifolds.dm index f7bd04ee3fb7..dfbc027455b6 100644 --- a/code/game/objects/structures/pipes/standard/manifolds.dm +++ b/code/game/objects/structures/pipes/standard/manifolds.dm @@ -104,6 +104,10 @@ layer = ATMOS_PIPE_SUPPLY_LAYER color = PIPE_COLOR_BLUE +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom + name = "Reinforced Air supply pipe manifold" + explodey = FALSE + /obj/structure/pipes/standard/manifold/hidden/yellow color = PIPE_COLOR_YELLOW @@ -182,6 +186,10 @@ layer = ATMOS_PIPE_SUPPLY_LAYER color = PIPE_COLOR_BLUE +/obj/structure/pipes/standard/manifold/fourway/hidden/supply/no_boom + name = "reinforced 4-way air supply pipe manifold" + explodey = FALSE + /obj/structure/pipes/standard/manifold/fourway/hidden/yellow color = PIPE_COLOR_YELLOW diff --git a/code/game/objects/structures/pipes/standard/simple.dm b/code/game/objects/structures/pipes/standard/simple.dm index 7101bb3dd95f..93a92e51f71b 100644 --- a/code/game/objects/structures/pipes/standard/simple.dm +++ b/code/game/objects/structures/pipes/standard/simple.dm @@ -104,6 +104,10 @@ layer = ATMOS_PIPE_SUPPLY_LAYER color = PIPE_COLOR_BLUE +/obj/structure/pipes/standard/simple/hidden/supply/no_boom + name = "Reinforced Air supply pipe" + explodey = FALSE + /obj/structure/pipes/standard/simple/hidden/yellow color = PIPE_COLOR_YELLOW diff --git a/code/game/objects/structures/pipes/standard/standard_misc.dm b/code/game/objects/structures/pipes/standard/standard_misc.dm index a50774552b03..dc52da57c750 100644 --- a/code/game/objects/structures/pipes/standard/standard_misc.dm +++ b/code/game/objects/structures/pipes/standard/standard_misc.dm @@ -107,6 +107,10 @@ layer = ATMOS_PIPE_SUPPLY_LAYER color = PIPE_COLOR_BLUE +/obj/structure/pipes/standard/cap/hidden/supply/no_boom + name = "reinforced supply pipe endcap" + explodey = FALSE + /obj/structure/pipes/standard/tank icon = 'icons/obj/pipes/tank.dmi' diff --git a/code/game/objects/structures/pipes/vents/pump_scrubber.dm b/code/game/objects/structures/pipes/vents/pump_scrubber.dm index d0dd3f8301a7..a4565c610ad5 100644 --- a/code/game/objects/structures/pipes/vents/pump_scrubber.dm +++ b/code/game/objects/structures/pipes/vents/pump_scrubber.dm @@ -4,6 +4,10 @@ name = "Air Scrubber" vent_icon = "scrubber" +/obj/structure/pipes/vents/scrubber/no_boom + name = "Reinforced Air Scrubber" + explodey = FALSE + /obj/structure/pipes/vents/scrubber/on icon_state = "on" @@ -13,6 +17,10 @@ icon_state = "map_vent" name = "Air Vent" +/obj/structure/pipes/vents/pump/no_boom + name = "Reinforced Air Vent" + explodey = FALSE + /obj/structure/pipes/vents/pump/on icon_state = "on" diff --git a/code/game/objects/structures/pipes/vents/vents.dm b/code/game/objects/structures/pipes/vents/vents.dm index fa3395d9e91d..d7e090c581c5 100644 --- a/code/game/objects/structures/pipes/vents/vents.dm +++ b/code/game/objects/structures/pipes/vents/vents.dm @@ -12,13 +12,12 @@ var/uid var/vent_icon = "vent" + var/datum/effect_system/smoke_spread/gas_holder /obj/structure/pipes/vents/Initialize() . = ..() initial_loc = get_area(loc) - if(initial_loc.master) - initial_loc = initial_loc.master area_uid = initial_loc.uid if(!id_tag) assign_uid() @@ -123,7 +122,63 @@ qdel(src) /obj/structure/pipes/vents/Destroy() + qdel(gas_holder) if(initial_loc) initial_loc.air_vent_info -= id_tag initial_loc.air_vent_names -= id_tag . = ..() + +/obj/structure/pipes/vents/vv_get_dropdown() + . = ..() + VV_DROPDOWN_OPTION(VV_HK_GAS, "Release Gas") + +/obj/structure/pipes/vents/vv_do_topic(list/href_list) + . = ..() + var/mob/user = usr + if(href_list[VV_HK_GAS] && check_rights(R_EVENT)) + if(welded) + to_chat(usr, SPAN_WARNING("You cannot release gas from a welded vent.")) + return FALSE + var/list/options = list(VENT_GAS_SMOKE, VENT_GAS_CN20, VENT_GAS_CN20_XENO) + var/gas_choice = tgui_input_list(user, "What gas do you wish to use?", "Gas Choice", options, 20 SECONDS) + if(!gas_choice) + return FALSE + var/radius_choice = tgui_input_number(user, "What radius do you wish to use?", "Gas Radius", 4, 10, 1, 20 SECONDS) + var/warn_choice = tgui_input_number(user, "How many seconds warning do you wish to give?", "Release Warning", 5, 30, 1, 20 SECONDS) + warn_choice = warn_choice SECONDS + + var/confirm = alert(user, "Confirm gas setup. \n\nGas: '[gas_choice]'\nRadius: '[radius_choice]'\nWarn Time: '[warn_choice / 10] seconds' \n\n Is this correct?", "Confirmation", "Yes", "No") + if(confirm != "Yes") + return FALSE + log_admin("[key_name(user)] released gas (Gas: [gas_choice], Radius: [radius_choice], Delay: [warn_choice]) from [name] at X[x], Y[y], Z[z].") + create_gas(gas_choice, radius_choice, warn_choice) + return TRUE + +/obj/structure/pipes/vents/proc/create_gas(gas_type = VENT_GAS_SMOKE, radius = 4, warning_time = 5 SECONDS) + if(welded) + to_chat(usr, SPAN_WARNING("You cannot release gas from a welded vent.")) + return FALSE + var/datum/effect_system/smoke_spread/spreader + switch(gas_type) + if(VENT_GAS_SMOKE) + spreader = new /datum/effect_system/smoke_spread/bad + if(VENT_GAS_CN20) + spreader = new /datum/effect_system/smoke_spread/cn20 + if(VENT_GAS_CN20_XENO) + spreader = new /datum/effect_system/smoke_spread/cn20/xeno + if(!spreader) + return FALSE + gas_holder = spreader + spreader.attach(src) + + new /obj/effect/warning/explosive/gas(loc, warning_time) + visible_message(SPAN_HIGHDANGER("[src] begins to hiss as gas builds up within it."), SPAN_HIGHDANGER("You hear a hissing."), radius) + addtimer(CALLBACK(src, PROC_REF(release_gas), radius), warning_time) + +/obj/structure/pipes/vents/proc/release_gas(radius = 4) + radius = clamp(radius, 1, 10) + if(!gas_holder || welded) + return FALSE + playsound(loc, 'sound/effects/smoke.ogg', 25, 1, 4) + gas_holder.set_up(radius, 0, get_turf(src), null, 10 SECONDS) + gas_holder.start() diff --git a/code/game/objects/structures/prop_mech.dm b/code/game/objects/structures/prop_mech.dm new file mode 100644 index 000000000000..c2df2eb93c9c --- /dev/null +++ b/code/game/objects/structures/prop_mech.dm @@ -0,0 +1,175 @@ +/obj/structure/prop/mech + icon = 'icons/obj/structures/props/mech.dmi' + +/obj/structure/prop/mech/hydralic_clamp + name = "Hydraulic Clamp" + icon_state = "mecha_clamp" + +/obj/structure/prop/mech/drill + name = "Drill" + desc = "This is the drill that'll pierce the heavens!" + icon_state = "mecha_drill" + +/obj/structure/prop/mech/armor_booster + name = "Armor Booster Module (Close Combat Weaponry)" + desc = "Boosts exosuit armor against armed melee attacks. Requires energy to operate." + icon_state = "mecha_abooster_ccw" + +/obj/structure/prop/mech/repair_droid + name = "Repair Droid" + desc = "Automated repair droid. Scans exosuit for damage and repairs it. Can fix almost all types of external or internal damage." + icon_state = "repair_droid" + +/obj/structure/prop/mech/tesla_energy_relay + name = "Energy Relay" + desc = "Wirelessly drains energy from any available power channel in area. The performance index is quite low." + icon_state = "tesla" + +/obj/structure/prop/mech/parts + name = "mecha part" + flags_atom = FPRINT|CONDUCT + +/obj/structure/prop/mech/parts/chassis + name="Mecha Chassis" + icon_state = "backbone" + +// ripley to turn into P-1000 an Older version of the P-5000 to anchor it more into the lore... +/obj/structure/prop/mech/parts/chassis/ripley + name = "P-1000 Chassis" + icon_state = "ripley_chassis" +/obj/structure/prop/mech/parts/chassis/firefighter + name = "Firefighter Chassis" + icon_state = "ripley_chassis" +/obj/structure/prop/mech/parts/ripley_torso + name="P-1000 Torso" + desc="A torso part of P-1000 APLU. Contains power unit, processing core and life support systems." + icon_state = "ripley_harness" +/obj/structure/prop/mech/parts/ripley_left_arm + name="P-1000 Left Arm" + desc="A P-1000 APLU left arm. Data and power sockets are compatible with most exosuit tools." + icon_state = "ripley_l_arm" +/obj/structure/prop/mech/parts/ripley_right_arm + name="P-1000 Right Arm" + desc="A P-1000 APLU right arm. Data and power sockets are compatible with most exosuit tools." + icon_state = "ripley_r_arm" +/obj/structure/prop/mech/parts/ripley_left_leg + name="P-1000 Left Leg" + desc="A P-1000 APLU left leg. Contains somewhat complex servodrives and balance maintaining systems." + icon_state = "ripley_l_leg" +/obj/structure/prop/mech/parts/ripley_right_leg + name="P-1000 Right Leg" + desc="A P-1000 APLU right leg. Contains somewhat complex servodrives and balance maintaining systems." + icon_state = "ripley_r_leg" + +//gygax turned into MAX (Mobile Assault Exo-Warrior)look like a gygax from afar +/obj/structure/prop/mech/parts/chassis/gygax + name = "MAX Chassis" + icon_state = "gygax_chassis" +/obj/structure/prop/mech/parts/gygax_torso + name="MAX Torso" + desc="A torso part of MAX. Contains power unit, processing core and life support systems. Has an additional equipment slot." + icon_state = "gygax_harness" +/obj/structure/prop/mech/parts/gygax_head + name="MAX Head" + desc="A MAX head. Houses advanced surveilance and targeting sensors." + icon_state = "gygax_head" +/obj/structure/prop/mech/parts/gygax_left_arm + name="MAX Left Arm" + desc="A MAX left arm. Data and power sockets are compatible with most exosuit tools and weapons." + icon_state = "gygax_l_arm" +/obj/structure/prop/mech/parts/gygax_right_arm + name="MAX Right Arm" + desc="A MAX right arm. Data and power sockets are compatible with most exosuit tools and weapons." + icon_state = "gygax_r_arm" +/obj/structure/prop/mech/parts/gygax_left_leg + name="MAX Left Leg" + icon_state = "gygax_l_leg" +/obj/structure/prop/mech/parts/gygax_right_leg + name="MAX Right Leg" + icon_state = "gygax_r_leg" +/obj/structure/prop/mech/parts/gygax_armor + name="MAX Armor Plates" + icon_state = "gygax_armor" + +// durand MOX (mobile offensive exo-warrior) look like a durand from afar. +/obj/structure/prop/mech/parts/chassis/durand + name = "MOX Chassis" + icon_state = "durand_chassis" +/obj/structure/prop/mech/parts/durand_torso + name="MOX Torso" + icon_state = "durand_harness" +/obj/structure/prop/mech/parts/durand_head + name="MOX Head" + icon_state = "durand_head" +/obj/structure/prop/mech/parts/durand_left_arm + name="MOX Left Arm" + icon_state = "durand_l_arm" +/obj/structure/prop/mech/parts/durand_right_arm + name="MOX Right Arm" + icon_state = "durand_r_arm" +/obj/structure/prop/mech/parts/durand_left_leg + name="MOX Left Leg" + icon_state = "durand_l_leg" +/obj/structure/prop/mech/parts/durand_right_leg + name="MOX Right Leg" + icon_state = "durand_r_leg" +/obj/structure/prop/mech/parts/durand_armor + name="MOX Armor Plates" + icon_state = "durand_armor" + +// phazon currently not in use. could be deleted... +/obj/structure/prop/mech/parts/chassis/phazon + name = "Phazon Chassis" + icon_state = "phazon_chassis" +/obj/structure/prop/mech/parts/phazon_torso + name="Phazon Torso" + icon_state = "phazon_harness" +/obj/structure/prop/mech/parts/phazon_head + name="Phazon Head" + icon_state = "phazon_head" +/obj/structure/prop/mech/parts/phazon_left_arm + name="Phazon Left Arm" + icon_state = "phazon_l_arm" +/obj/structure/prop/mech/parts/phazon_right_arm + name="Phazon Right Arm" + icon_state = "phazon_r_arm" +/obj/structure/prop/mech/parts/phazon_left_leg + name="Phazon Left Leg" + icon_state = "phazon_l_leg" +/obj/structure/prop/mech/parts/phazon_right_leg + name="Phazon Right Leg" + icon_state = "phazon_r_leg" +/obj/structure/prop/mech/parts/phazon_armor_plates + name="Phazon Armor Plates" + icon_state = "phazon_armor" + +// odysseus currently not in use could be deleted... +/obj/structure/prop/mech/parts/chassis/odysseus + name = "Odysseus Chassis" + icon_state = "odysseus_chassis" +/obj/structure/prop/mech/parts/odysseus_head + name="Odysseus Head" + icon_state = "odysseus_head" +/obj/structure/prop/mech/parts/odysseus_torso + name="Odysseus Torso" + desc="A torso part of Odysseus. Contains power unit, processing core and life support systems." + icon_state = "odysseus_torso" +/obj/structure/prop/mech/parts/odysseus_left_arm + name="Odysseus Left Arm" + desc="An Odysseus left arm. Data and power sockets are compatible with most exosuit tools." + icon_state = "odysseus_l_arm" +/obj/structure/prop/mech/parts/odysseus_right_arm + name="Odysseus Right Arm" + desc="An Odysseus right arm. Data and power sockets are compatible with most exosuit tools." + icon_state = "odysseus_r_arm" +/obj/structure/prop/mech/parts/odysseus_left_leg + name="Odysseus Left Leg" + desc="An Odysseus left leg. Contains somewhat complex servodrives and balance maintaining systems." + icon_state = "odysseus_l_leg" +/obj/structure/prop/mech/parts/odysseus_right_leg + name="Odysseus Right Leg" + desc="A Odysseus right leg. Contains somewhat complex servodrives and balance maintaining systems." + icon_state = "odysseus_r_leg" +/obj/structure/prop/mech/parts/odysseus_armor_plates + name="Odysseus Armor Plates" + icon_state = "odysseus_armor" diff --git a/code/game/objects/structures/props.dm b/code/game/objects/structures/props.dm index f6905d4d044d..8aad7de3e04c 100644 --- a/code/game/objects/structures/props.dm +++ b/code/game/objects/structures/props.dm @@ -24,7 +24,7 @@ . = ..() if(isxeno(user)) return - else if (ishuman(user) && istype(W, /obj/item/tool/wrench)) + else if (ishuman(user) && HAS_TRAIT(W, TRAIT_TOOL_WRENCH)) on = !on visible_message("You wrench the controls of \the [src]. The drill jumps to life." , "[user] wrenches the controls of \the [src]. The drill jumps to life.") @@ -33,10 +33,10 @@ /obj/structure/prop/dam/drill/proc/update() icon_state = "thumper[on ? "-on" : ""]" if(on) - SetLuminosity(3) + set_light(3) playsound(src, 'sound/machines/turbine_on.ogg') else - SetLuminosity(0) + set_light(0) playsound(src, 'sound/machines/turbine_off.ogg') return @@ -114,9 +114,9 @@ underlays += "shadow[lit ? "-lit" : ""]" icon_state = "torii[lit ? "-lit" : ""]" if(lit) - SetLuminosity(6) + set_light(6) else - SetLuminosity(0) + set_light(0) return /obj/structure/prop/dam/torii/attack_hand(mob/user as mob) @@ -235,212 +235,6 @@ /obj/structure/prop/dam/wide_boulder/boulder1 icon_state = "boulder1" - -/obj/structure/prop/mech - icon = 'icons/obj/structures/props/mech.dmi' - -/obj/structure/prop/mech/hydralic_clamp - name = "Hydraulic Clamp" - icon_state = "mecha_clamp" - -/obj/structure/prop/mech/drill - name = "Drill" - desc = "This is the drill that'll pierce the heavens!" - icon_state = "mecha_drill" - -/obj/structure/prop/mech/armor_booster - name = "Armor Booster Module (Close Combat Weaponry)" - desc = "Boosts exosuit armor against armed melee attacks. Requires energy to operate." - icon_state = "mecha_abooster_ccw" - -/obj/structure/prop/mech/repair_droid - name = "Repair Droid" - desc = "Automated repair droid. Scans exosuit for damage and repairs it. Can fix almost all types of external or internal damage." - icon_state = "repair_droid" - -/obj/structure/prop/mech/tesla_energy_relay - name = "Energy Relay" - desc = "Wirelessly drains energy from any available power channel in area. The performance index is quite low." - icon_state = "tesla" - -/obj/structure/prop/mech/mech_parts - name = "mecha part" - flags_atom = FPRINT|CONDUCT - -/obj/structure/prop/mech/mech_parts/chassis - name="Mecha Chassis" - icon_state = "backbone" - -/obj/structure/prop/mech/mech_parts/chassis/ripley - name = "Ripley Chassis" - icon_state = "ripley_chassis" - -/obj/structure/prop/mech/mech_parts/part/ripley_torso - name="Ripley Torso" - desc="A torso part of Ripley APLU. Contains power unit, processing core and life support systems." - icon_state = "ripley_harness" - -/obj/structure/prop/mech/mech_parts/part/ripley_left_arm - name="Ripley Left Arm" - desc="A Ripley APLU left arm. Data and power sockets are compatible with most exosuit tools." - icon_state = "ripley_l_arm" - -/obj/structure/prop/mech/mech_parts/part/ripley_right_arm - name="Ripley Right Arm" - desc="A Ripley APLU right arm. Data and power sockets are compatible with most exosuit tools." - icon_state = "ripley_r_arm" - -/obj/structure/prop/mech/mech_parts/part/ripley_left_leg - name="Ripley Left Leg" - desc="A Ripley APLU left leg. Contains somewhat complex servodrives and balance maintaining systems." - icon_state = "ripley_l_leg" - -/obj/structure/prop/mech/mech_parts/part/ripley_right_leg - name="Ripley Right Leg" - desc="A Ripley APLU right leg. Contains somewhat complex servodrives and balance maintaining systems." - icon_state = "ripley_r_leg" - -/obj/structure/prop/mech/mech_parts/chassis/gygax - name = "Gygax Chassis" - icon_state = "gygax_chassis" - -/obj/structure/prop/mech/mech_parts/part/gygax_torso - name="Gygax Torso" - desc="A torso part of Gygax. Contains power unit, processing core and life support systems. Has an additional equipment slot." - icon_state = "gygax_harness" - -/obj/structure/prop/mech/mech_parts/part/gygax_head - name="Gygax Head" - desc="A Gygax head. Houses advanced surveilance and targeting sensors." - icon_state = "gygax_head" - -/obj/structure/prop/mech/mech_parts/part/gygax_left_arm - name="Gygax Left Arm" - desc="A Gygax left arm. Data and power sockets are compatible with most exosuit tools and weapons." - icon_state = "gygax_l_arm" - -/obj/structure/prop/mech/mech_parts/part/gygax_right_arm - name="Gygax Right Arm" - desc="A Gygax right arm. Data and power sockets are compatible with most exosuit tools and weapons." - icon_state = "gygax_r_arm" - -/obj/structure/prop/mech/mech_parts/part/gygax_left_leg - name="Gygax Left Leg" - icon_state = "gygax_l_leg" - -/obj/structure/prop/mech/mech_parts/part/gygax_right_leg - name="Gygax Right Leg" - icon_state = "gygax_r_leg" - -/obj/structure/prop/mech/mech_parts/part/gygax_armor - name="Gygax Armor Plates" - icon_state = "gygax_armor" - -/obj/structure/prop/mech/mech_parts/chassis/durand - name = "Durand Chassis" - icon_state = "durand_chassis" - -/obj/structure/prop/mech/mech_parts/part/durand_torso - name="Durand Torso" - icon_state = "durand_harness" - -/obj/structure/prop/mech/mech_parts/part/durand_head - name="Durand Head" - icon_state = "durand_head" - -/obj/structure/prop/mech/mech_parts/part/durand_left_arm - name="Durand Left Arm" - icon_state = "durand_l_arm" - -/obj/structure/prop/mech/mech_parts/part/durand_right_arm - name="Durand Right Arm" - icon_state = "durand_r_arm" - -/obj/structure/prop/mech/mech_parts/part/durand_left_leg - name="Durand Left Leg" - icon_state = "durand_l_leg" - -/obj/structure/prop/mech/mech_parts/part/durand_right_leg - name="Durand Right Leg" - icon_state = "durand_r_leg" - -/obj/structure/prop/mech/mech_parts/part/durand_armor - name="Durand Armor Plates" - icon_state = "durand_armor" - -/obj/structure/prop/mech/mech_parts/chassis/firefighter - name = "Firefighter Chassis" - icon_state = "ripley_chassis" - -/obj/structure/prop/mech/mech_parts/chassis/phazon - name = "Phazon Chassis" - icon_state = "phazon_chassis" - -/obj/structure/prop/mech/mech_parts/part/phazon_torso - name="Phazon Torso" - icon_state = "phazon_harness" - -/obj/structure/prop/mech/mech_parts/part/phazon_head - name="Phazon Head" - icon_state = "phazon_head" - -/obj/structure/prop/mech/mech_parts/part/phazon_left_arm - name="Phazon Left Arm" - icon_state = "phazon_l_arm" - -/obj/structure/prop/mech/mech_parts/part/phazon_right_arm - name="Phazon Right Arm" - icon_state = "phazon_r_arm" - -/obj/structure/prop/mech/mech_parts/part/phazon_left_leg - name="Phazon Left Leg" - icon_state = "phazon_l_leg" - -/obj/structure/prop/mech/mech_parts/part/phazon_right_leg - name="Phazon Right Leg" - icon_state = "phazon_r_leg" - -/obj/structure/prop/mech/mech_parts/part/phazon_armor_plates - name="Phazon Armor Plates" - icon_state = "phazon_armor" - -/obj/structure/prop/mech/mech_parts/chassis/odysseus - name = "Odysseus Chassis" - icon_state = "odysseus_chassis" - -/obj/structure/prop/mech/mech_parts/part/odysseus_head - name="Odysseus Head" - icon_state = "odysseus_head" - -/obj/structure/prop/mech/mech_parts/part/odysseus_torso - name="Odysseus Torso" - desc="A torso part of Odysseus. Contains power unit, processing core and life support systems." - icon_state = "odysseus_torso" - -/obj/structure/prop/mech/mech_parts/part/odysseus_left_arm - name="Odysseus Left Arm" - desc="An Odysseus left arm. Data and power sockets are compatible with most exosuit tools." - icon_state = "odysseus_l_arm" - -/obj/structure/prop/mech/mech_parts/part/odysseus_right_arm - name="Odysseus Right Arm" - desc="An Odysseus right arm. Data and power sockets are compatible with most exosuit tools." - icon_state = "odysseus_r_arm" - -/obj/structure/prop/mech/mech_parts/part/odysseus_left_leg - name="Odysseus Left Leg" - desc="An Odysseus left leg. Contains somewhat complex servodrives and balance maintaining systems." - icon_state = "odysseus_l_leg" - -/obj/structure/prop/mech/mech_parts/part/odysseus_right_leg - name="Odysseus Right Leg" - desc="A Odysseus right leg. Contains somewhat complex servodrives and balance maintaining systems." - icon_state = "odysseus_r_leg" - -/obj/structure/prop/mech/mech_parts/part/odysseus_armor_plates - name="Odysseus Armor Plates" - icon_state = "odysseus_armor" - //Use these to replace non-functional machinery 'props' around maps from bay12 /obj/structure/prop/server_equipment @@ -501,7 +295,7 @@ . = ..() if(isxeno(user)) return - else if (ishuman(user) && istype(W, /obj/item/tool/crowbar)) + else if (ishuman(user) && HAS_TRAIT(W, TRAIT_TOOL_CROWBAR)) on = !on visible_message("You pry at the control valve on [src]. The machine shudders." , "[user] pries at the control valve on [src]. The entire machine shudders.") @@ -510,10 +304,10 @@ /obj/structure/prop/turbine/proc/Update() icon_state = "biomass_turbine[on ? "-on" : ""]" if (on) - SetLuminosity(3) + set_light(3) playsound(src, 'sound/machines/turbine_on.ogg') else - SetLuminosity(0) + set_light(0) playsound(src, 'sound/machines/turbine_off.ogg') return @@ -639,6 +433,10 @@ icon_state = "" icon = 'icons/turf/lifeboat.dmi' +#define STATE_COMPLETE 0 +#define STATE_FUEL 1 +#define STATE_IGNITE 2 + /obj/structure/prop/brazier name = "brazier" desc = "The fire inside the brazier emits a relatively dim glow to flashlights and flares, but nothing can replace the feeling of sitting next to a fireplace with your friends." @@ -646,74 +444,202 @@ icon_state = "brazier" density = TRUE health = 150 - luminosity = 6 - -/obj/structure/prop/brazier/Destroy() - SetLuminosity(0) - return ..() + light_range = 6 + light_on = TRUE + /// What obj this becomes when it gets to its next stage of construction / ignition + var/frame_type + /// What is used to progress to the next stage + var/state = STATE_COMPLETE /obj/structure/prop/brazier/Initialize() . = ..() - if(luminosity) - SetLuminosity(luminosity) + + if(!light_on) + set_light(0) + +/obj/structure/prop/brazier/get_examine_text(mob/user) + . = ..() + switch(state) + if(STATE_FUEL) + . += "[src] requires wood to be fueled." + if(STATE_IGNITE) + . += "[src] needs to be lit." + +/obj/structure/prop/brazier/attackby(obj/item/hit_item, mob/user) + switch(state) + if(STATE_COMPLETE) + return ..() + if(STATE_FUEL) + if(!istype(hit_item, /obj/item/stack/sheet/wood)) + return ..() + var/obj/item/stack/sheet/wood/wooden_boards = hit_item + if(!wooden_boards.use(5)) + to_chat(user, SPAN_WARNING("Not enough wood!")) + return + user.visible_message(SPAN_NOTICE("[user] fills [src] with [hit_item].")) + if(STATE_IGNITE) + if(!hit_item.heat_source) + return ..() + if(!do_after(user, 3 SECONDS, INTERRUPT_MOVED, BUSY_ICON_BUILD)) + return + user.visible_message(SPAN_NOTICE("[user] ignites [src] with [hit_item].")) + + new frame_type(loc) + qdel(src) /obj/structure/prop/brazier/frame name = "empty brazier" desc = "An empty brazier." icon_state = "brazier_frame" - luminosity = 0 - -/obj/structure/prop/brazier/frame/attackby(obj/item/hit_item, mob/user) - if(!istype(hit_item, /obj/item/stack/sheet/wood)) - return ..() - var/obj/item/stack/wooden_boards = hit_item - if(wooden_boards.amount < 5) - to_chat(user, SPAN_WARNING("Not enough wood!")) - return - wooden_boards.use(5) - user.visible_message(SPAN_NOTICE("[user] fills the brazier with wood.")) - new /obj/structure/prop/brazier/frame_woodened(loc) - qdel(src) + light_on = FALSE + frame_type = /obj/structure/prop/brazier/frame/full + state = STATE_FUEL -/obj/structure/prop/brazier/frame_woodened +/obj/structure/prop/brazier/frame/full name = "empty full brazier" desc = "An empty brazier. Yet it's also full. What??? Use something hot to ignite it, like a welding tool." icon_state = "brazier_frame_filled" - luminosity = 0 - -/obj/structure/prop/brazier/frame_woodened/attackby(obj/item/hit_item, mob/user) - if(!hit_item.heat_source) - return ..() - user.visible_message(SPAN_NOTICE("[user] ignites the brazier with [hit_item].")) - new /obj/structure/prop/brazier(loc) - qdel(src) + frame_type = /obj/structure/prop/brazier + state = STATE_IGNITE /obj/structure/prop/brazier/torch name = "torch" desc = "It's a torch." icon_state = "torch" density = FALSE - luminosity = 5 + light_range = 5 -/obj/structure/prop/brazier/torch/frame +/obj/structure/prop/brazier/frame/full/torch name = "unlit torch" desc = "It's a torch, but it's not lit. Use something hot to ignite it, like a welding tool." icon_state = "torch_frame" - luminosity = 0 - -/obj/structure/prop/brazier/torch/frame/attackby(obj/item/hit_item, mob/user) - if(!hit_item.heat_source) - return ..() - user.visible_message(SPAN_NOTICE("[user] ignites the torch with [hit_item].")) - new /obj/structure/prop/brazier/torch(loc) - qdel(src) + frame_type = /obj/structure/prop/brazier/torch /obj/item/prop/torch_frame name = "unlit torch" icon = 'icons/obj/structures/structures.dmi' desc = "It's a torch, but it's not lit or placed down. Click on a wall to place it." icon_state = "torch_frame" - luminosity = 0 + +/obj/structure/prop/brazier/frame/full/campfire + name = "unlit campfire" + desc = "A circle of stones surrounding a pile of wood. If only you were to light it." + icon_state = "campfire" + frame_type = /obj/structure/prop/brazier/campfire + density = FALSE + +/obj/structure/prop/brazier/frame/full/campfire/smolder + name = "smoldering campfire" + desc = "A campfire that used to be lit, but was extinguished. You can still see the embers, and smoke rises from it." + state = STATE_FUEL + frame_type = /obj/structure/prop/brazier/frame/full/campfire + +/obj/structure/prop/brazier/campfire + name = "campfire" + desc = "A circle of stones surrounding a burning pile of wood. The fire is roaring and you can hear its crackle. You could probably stomp the fire out." + icon = 'icons/obj/structures/structures.dmi' + icon_state = "campfire_on" + density = FALSE + ///How many tiles the heating and sound goes + var/heating_range = 2 + /// time between sounds + var/time_to_sound = 20 + /// Time for it to burn through fuel + var/fuel_stage_time = 1 MINUTES + /// How much fuel it has + var/remaining_fuel = 5 //Maxes at 5, but burns one when made + /// If the fire can be manually put out + var/extinguishable = TRUE + /// Make no noise + var/quiet = FALSE + +/obj/structure/prop/brazier/campfire/Initialize() + . = ..() + START_PROCESSING(SSobj, src) + fuel_drain(TRUE) + +/obj/structure/prop/brazier/campfire/get_examine_text(mob/user) + . = ..() + switch(remaining_fuel) + if(4 to INFINITY) + . += "The fire is roaring." + if(2 to 3) + . += "The fire is burning warm." + if(-INFINITY to 1) + . += "The embers of the fire barely burns." + +/obj/structure/prop/brazier/campfire/process(delta_time) + if(!isturf(loc)) + return + + for(var/mob/living/carbon/human/mob in range(heating_range, src)) + if(mob.bodytemperature < T20C) + mob.bodytemperature += min(round(T20C - mob.bodytemperature)*0.7, 25) + mob.recalculate_move_delay = TRUE + + if(quiet) + return + time_to_sound -= delta_time + if(time_to_sound <= 0) + playsound(loc, 'sound/machines/firepit_ambience.ogg', 15, FALSE, heating_range) + time_to_sound = initial(time_to_sound) + +/obj/structure/prop/brazier/campfire/attack_hand(mob/user) + . = ..() + if(!extinguishable) + to_chat(user, SPAN_WARNING("You cannot extinguish [src].")) + return + to_chat(user, SPAN_NOTICE("You begin to extinguish [src].")) + while(remaining_fuel) + if(user.action_busy || !do_after(user, 3 SECONDS, INTERRUPT_MOVED, BUSY_ICON_BUILD)) + return + fuel_drain() + to_chat(user, SPAN_NOTICE("You continue to extinguish [src].")) + visible_message(SPAN_NOTICE("[user] extinguishes [src].")) + +/obj/structure/prop/brazier/campfire/attackby(obj/item/attacking_item, mob/user) + if(!istype(attacking_item, /obj/item/stack/sheet/wood)) + to_chat(user, SPAN_NOTICE("You cannot fuel [src] with [attacking_item].")) + return + var/obj/item/stack/sheet/wood/fuel = attacking_item + if(remaining_fuel >= initial(remaining_fuel)) + to_chat(user, SPAN_NOTICE("You cannot fuel [src] further.")) + return + if(!fuel.use(1)) + to_chat(user, SPAN_NOTICE("You do not have enough [attacking_item] to fuel [src].")) + return + visible_message(SPAN_NOTICE("[user] fuels [src] with [fuel].")) + remaining_fuel++ + +/obj/structure/prop/brazier/campfire/attack_alien(mob/living/carbon/xenomorph/xeno) + if(!extinguishable) + to_chat(xeno, SPAN_WARNING("You cannot extinguish [src].")) + return + to_chat(xeno, SPAN_NOTICE("You begin to extinguish [src].")) + while(remaining_fuel) + if(xeno.action_busy || !do_after(xeno, 1 SECONDS, INTERRUPT_MOVED, BUSY_ICON_HOSTILE)) + return + fuel_drain() + to_chat(xeno, SPAN_NOTICE("You continue to extinguish [src].")) + visible_message(SPAN_WARNING("[xeno] extinguishes [src]!")) + +/obj/structure/prop/brazier/campfire/proc/fuel_drain(looping) + remaining_fuel-- + if(!remaining_fuel) + new /obj/structure/prop/brazier/frame/full/campfire/smolder(loc) + qdel(src) + return + if(!looping || !fuel_stage_time) + return + addtimer(CALLBACK(src, PROC_REF(fuel_drain), TRUE), fuel_stage_time) + +/obj/structure/prop/brazier/campfire/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +#undef STATE_COMPLETE +#undef STATE_FUEL +#undef STATE_IGNITE //ICE COLONY PROPS //Thematically look to Blackmesa's Xen levels. Generic science-y props n' stuff. @@ -837,8 +763,8 @@ icon_state = "van" bound_height = 64 bound_width = 64 - unslashable = TRUE - unacidable = TRUE + unslashable = FALSE + unacidable = FALSE /obj/structure/prop/vehicles/crawler name = "colony crawler" @@ -846,6 +772,13 @@ icon_state = "crawler" density = TRUE +/obj/structure/prop/vehicles/tank/twe + name = "\improper FV150 Shobo MKII" + desc = "The FV150 Shobo MKII is a Combat Reconnaissance Vehicle Tracked, abbreviated to CVR(T) in official documentation. It was co-developed in 2175 by Weyland-Yutani and Gallar Co., a Titan based heavy vehicle manufacturer. Taking into account lessons learned from the MkI's performance in the Australian Wars, major structual changes were made, and the MKII went into production in 2178. It is armed with a twin 30mm cannon and a L56A2 10x28mm coaxial, complimented by its ammunition stores of 170 rounds of 30mm and 1600 rounds of 10x28mm. The maximum speed of the Shobo is 60 mph, but on a standard deployment after the ammo stores are fully loaded and the terrain is taken into account, it consistently sits at 55mph." + icon = 'icons/obj/vehicles/twe_tank.dmi' + icon_state = "twe_tank" + density = TRUE + //overhead prop sets /obj/structure/prop/invuln/overhead @@ -883,13 +816,6 @@ icon_state = "arcadeb" name = "Spirit Phone, The Game, The Movie: II" -/obj/structure/prop/maintenance_hatch - name = "\improper Maintenance Hatch" - icon = 'icons/obj/structures/structures.dmi' - icon_state = "hatchclosed" - desc = "Looks like it's rusted shut. Creepy." - layer = HATCH_LAYER - //INVULNERABLE PROPS /obj/structure/prop/invuln @@ -993,7 +919,8 @@ icon = 'icons/effects/fire.dmi' icon_state = "dynamic_2" layer = MOB_LAYER - luminosity = 3 + light_range = 3 + light_on = TRUE /obj/structure/prop/invuln/fusion_reactor name = "\improper S-52 fusion reactor" @@ -1046,7 +973,7 @@ new_info_tag.fallen_names = list(dogtag_name) new_info_tag.fallen_assgns = list(dogtag_assign) new_info_tag.fallen_blood_types = list(dogtag_blood) - fallen_list_cross -= dogtag_name + GLOB.fallen_list_cross -= dogtag_name return ..() /obj/structure/prop/wooden_cross/attackby(obj/item/W, mob/living/user) @@ -1054,18 +981,18 @@ var/obj/item/dogtag/dog = W if(!tagged) tagged = TRUE - user.visible_message(SPAN_NOTICE("[user] drapes the [W] around the [src].")) + user.visible_message(SPAN_NOTICE("[user] drapes [W] around [src].")) dogtag_name = popleft(dog.fallen_names) dogtag_assign = popleft(dog.fallen_assgns) dogtag_blood = popleft(dog.fallen_blood_types) - fallen_list_cross += dogtag_name + GLOB.fallen_list_cross += dogtag_name update_icon() if(!length(dog.fallen_names)) qdel(dog) else return else - to_chat(user, SPAN_WARNING("There's already a dog tag on the [src]!")) + to_chat(user, SPAN_WARNING("There's already a dog tag on [src]!")) balloon_alert(user, "already a tag here!") if(istype(W, /obj/item/clothing/head)) @@ -1144,3 +1071,98 @@ /obj/structure/prop/wooden_cross/update_icon() if(tagged) overlays += mutable_appearance('icons/obj/structures/props/crosses.dmi', "cross_overlay") + + +/obj/structure/prop/invuln/rope + name = "rope" + desc = "A secure rope looks like someone might've been hiding out on those rocks." + icon = 'icons/obj/structures/props/almayer_props.dmi' + icon_state = "rope" + density = FALSE + +/obj/structure/prop/pred_flight + name = "hunter flight console" + desc = "A console designed by the Hunters to assist in flight pathing and navigation." + icon = 'icons/obj/structures/machinery/computer.dmi' + icon_state = "overwatch" + density = TRUE + +/obj/structure/prop/invuln/joey + name = "Workin' Joey" + desc = "A defunct Seegson-brand Working Joe lifted from deep storage by a crew of marines after the last shore leave. Attempts have been made to modify the janitorial synthetic to serve as a crude bartender, but with little success." + icon = 'icons/obj/structures/props/props.dmi' + icon_state = "joey" + unslashable = FALSE + wrenchable = FALSE + /// converted into minutes when used to determine cooldown timer between quips + var/quip_delay_minimum = 5 + /// delay between Quips. Slightly randomized with quip_delay_minimum plus a random number + COOLDOWN_DECLARE(quip_delay) + /// delay between attack voicelines. Short but done for anti-spam + COOLDOWN_DECLARE(damage_delay) + /// list of quip emotes, taken from Working Joe + var/static/list/quips = list( + /datum/emote/living/carbon/human/synthetic/working_joe/damage/alwaysknow_damaged, + /datum/emote/living/carbon/human/synthetic/working_joe/quip/not_liking, + /datum/emote/living/carbon/human/synthetic/working_joe/greeting/how_can_i_help, + /datum/emote/living/carbon/human/synthetic/working_joe/farewell/day_never_done, + /datum/emote/living/carbon/human/synthetic/working_joe/farewell/required_by_apollo, + /datum/emote/living/carbon/human/synthetic/working_joe/warning/safety_breach + ) + /// list of voicelines to use when damaged + var/static/list/damaged = list( + /datum/emote/living/carbon/human/synthetic/working_joe/damage/damage, + /datum/emote/living/carbon/human/synthetic/working_joe/damage/that_stings, + /datum/emote/living/carbon/human/synthetic/working_joe/damage/irresponsible, + /datum/emote/living/carbon/human/synthetic/working_joe/damage/this_is_futile, + /datum/emote/living/carbon/human/synthetic/working_joe/warning/hysterical, + /datum/emote/living/carbon/human/synthetic/working_joe/warning/patience + ) + +/obj/structure/prop/invuln/joey/Initialize() + . = ..() + START_PROCESSING(SSobj, src) + +/obj/structure/prop/invuln/joey/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/structure/prop/invuln/joey/process() + //check if quip_delay cooldown finished. If so, random chance it says a line + if(COOLDOWN_FINISHED(src, quip_delay) && prob(10)) + emote(pick(quips)) + var/delay = rand(3) + quip_delay_minimum + COOLDOWN_START(src, quip_delay, delay MINUTES) + +// Advert your eyes. +/obj/structure/prop/invuln/joey/attackby(obj/item/W, mob/user) + attacked() + return ..() + +/obj/structure/prop/invuln/joey/bullet_act(obj/projectile/P) + attacked() + return ..() + +/// A terrible way of handling being hit. If signals would work it should be used. +/obj/structure/prop/invuln/joey/proc/attacked() + if(COOLDOWN_FINISHED(src, damage_delay) && prob(25)) + emote(pick(damaged)) + COOLDOWN_START(src, damage_delay, 8 SECONDS) + +/// SAY THE LINE JOE +/obj/structure/prop/invuln/joey/proc/emote(datum/emote/living/carbon/human/synthetic/working_joe/emote) + if (!emote) + return FALSE + + for(var/mob/mob in hearers(src, null)) + mob.show_message("[src] says, \"[initial(emote.say_message)]\"", SHOW_MESSAGE_AUDIBLE) + + var/list/viewers = get_mobs_in_view(7, src) + for(var/mob/current_mob in viewers) + if(!(current_mob.client?.prefs.toggles_langchat & LANGCHAT_SEE_EMOTES)) + viewers -= current_mob + langchat_speech(initial(emote.say_message), viewers, GLOB.all_languages, skip_language_check = TRUE) + + if(initial(emote.sound)) + playsound(loc, initial(emote.sound), 50, FALSE) + return TRUE diff --git a/code/game/objects/structures/props/requests_console.dm b/code/game/objects/structures/props/requests_console.dm index 95311bce9bad..7c4dd0b42992 100644 --- a/code/game/objects/structures/props/requests_console.dm +++ b/code/game/objects/structures/props/requests_console.dm @@ -4,7 +4,6 @@ anchored = TRUE icon = 'icons/obj/structures/machinery/terminals.dmi' icon_state = "req_comp0" - luminosity = 0 /obj/structure/machinery/requests_console/power_change() ..() diff --git a/code/game/objects/structures/reagent_dispensers.dm b/code/game/objects/structures/reagent_dispensers.dm index f20a7cfc25d6..1981dcaba569 100644 --- a/code/game/objects/structures/reagent_dispensers.dm +++ b/code/game/objects/structures/reagent_dispensers.dm @@ -68,7 +68,7 @@ if(health <= 0) deconstruct(FALSE) -/obj/structure/reagent_dispensers/bullet_act(obj/item/projectile/Proj) +/obj/structure/reagent_dispensers/bullet_act(obj/projectile/Proj) health -= Proj.damage if(Proj.firer) msg_admin_niche("[key_name_admin(Proj.firer)] fired a projectile at [name] in [loc.loc.name] ([loc.x],[loc.y],[loc.z]) [ADMIN_JMP(loc)].") @@ -119,8 +119,6 @@ if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY) deconstruct(FALSE) return - else - return /obj/structure/reagent_dispensers/attack_hand() if(!reagents || reagents.locked) @@ -150,13 +148,6 @@ icon_state = "ammoniatank" chemical = "ammonia" -/obj/structure/reagent_dispensers/oxygentank - name = "oxygentank" - desc = "An oxygen tank" - icon = 'icons/obj/objects.dmi' - icon_state = "oxygentank" - chemical = "oxygen" - /obj/structure/reagent_dispensers/acidtank name = "sulfuric acid tank" desc = "A sulfuric acid tank" @@ -296,7 +287,7 @@ return ..() -/obj/structure/reagent_dispensers/fueltank/bullet_act(obj/item/projectile/Proj) +/obj/structure/reagent_dispensers/fueltank/bullet_act(obj/projectile/Proj) if(exploding) return 0 if(ismob(Proj.firer)) source_mob = WEAKREF(Proj.firer) @@ -396,6 +387,13 @@ icon_state = "hydrogentank" chemical = "hydrogen" +/obj/structure/reagent_dispensers/fueltank/oxygentank + name = "oxygentank" + desc = "An oxygen tank" + icon = 'icons/obj/objects.dmi' + icon_state = "oxygentank" + chemical = "oxygen" + /obj/structure/reagent_dispensers/fueltank/custom name = "reagent tank" desc = "A reagent tank, typically used to store large quantities of chemicals." diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 87e713ad0af8..011fa2a17f48 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -222,3 +222,28 @@ FLOOR SAFES /obj/structure/safe/floor/hide(intact) invisibility = intact ? 101 : 0 + +//almayer + +/obj/structure/safe/co_office + +/obj/structure/safe/co_office/Initialize() + . = ..() + new /obj/item/clothing/glasses/monocle(src) + new /obj/item/book/codebook(src) + new /obj/item/coin/silver/falcon(src) + new /obj/item/weapon/telebaton(src) + new /obj/item/moneybag(src) + +/obj/structure/safe/cl_office + +/obj/structure/safe/cl_office/Initialize() + . = ..() + new /obj/item/clothing/suit/armor/bulletproof(src) + new /obj/item/weapon/gun/pistol/es4(src) + new /obj/item/ammo_magazine/pistol/es4(src) + new /obj/item/ammo_magazine/pistol/es4(src) + new /obj/item/clothing/accessory/storage/holster(src) + new /obj/item/spacecash/c1000/counterfeit(src) + new /obj/item/spacecash/c1000/counterfeit(src) + new /obj/item/coin/platinum(src) diff --git a/code/game/objects/structures/shower.dm b/code/game/objects/structures/shower.dm new file mode 100644 index 000000000000..b731a2c0e242 --- /dev/null +++ b/code/game/objects/structures/shower.dm @@ -0,0 +1,222 @@ +/obj/structure/machinery/shower + name = "shower" + desc = "The HS-451. Installed in the 2050s by the Weyland Hygiene Division." + icon = 'icons/obj/structures/props/watercloset.dmi' + icon_state = "shower" + density = FALSE + anchored = TRUE + use_power = USE_POWER_NONE + var/on = 0 + var/obj/effect/mist/mymist = null + /// needs a var so we can make it linger~ + var/ismist = 0 + /// freezing, normal, or boiling + var/watertemp = "normal" + /// true if there is a mob on the shower's loc, this is to ease process() + var/mobpresent = 0 + var/is_washing = 0 + +/obj/structure/machinery/shower/Initialize() + . = ..() + create_reagents(2) + +//add heat controls? when emagged, you can freeze to death in it? + +/obj/effect/mist + name = "mist" + icon = 'icons/obj/structures/props/watercloset.dmi' + icon_state = "mist" + layer = FLY_LAYER + anchored = TRUE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + + +/obj/structure/machinery/shower/attack_hand(mob/M as mob) + on = !on + update_icon() + if(on) + start_processing() + if (M.loc == loc) + wash(M) + check_heat(M) + for (var/atom/movable/G in src.loc) + G.clean_blood() + else + stop_processing() + + +/obj/structure/machinery/shower/attackby(obj/item/I as obj, mob/user as mob) + if(I.type == /obj/item/device/analyzer) + to_chat(user, SPAN_NOTICE("The water temperature seems to be [watertemp].")) + if(HAS_TRAIT(I, TRAIT_TOOL_WRENCH)) + to_chat(user, SPAN_NOTICE("You begin to adjust the temperature valve with \the [I].")) + if(do_after(user, 50, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + switch(watertemp) + if("normal") + watertemp = "freezing" + if("freezing") + watertemp = "boiling" + if("boiling") + watertemp = "normal" + user.visible_message(SPAN_NOTICE("[user] adjusts the shower with \the [I]."), SPAN_NOTICE("You adjust the shower with \the [I].")) + add_fingerprint(user) + + +/obj/structure/machinery/shower/update_icon() //this is terribly unreadable, but basically it makes the shower mist up + overlays.Cut() //once it's been on for a while, in addition to handling the water overlay. + QDEL_NULL(mymist) + + if(on) + overlays += image('icons/obj/structures/props/watercloset.dmi', src, "water", MOB_LAYER + 1, dir) + if(watertemp == "freezing") + return + if(!ismist) + spawn(50) + if(src && on) + ismist = 1 + mymist = new /obj/effect/mist(loc) + else + ismist = 1 + mymist = new /obj/effect/mist(loc) + else if(ismist) + ismist = 1 + mymist = new /obj/effect/mist(loc) + spawn(250) + if(src && !on) + QDEL_NULL(mymist) + ismist = 0 + + +/obj/structure/machinery/shower/Crossed(atom/movable/O) + ..() + wash(O) + if(ismob(O)) + mobpresent++ + check_heat(O) + + +/obj/structure/machinery/shower/Uncrossed(atom/movable/O) + if(ismob(O)) + mobpresent-- + ..() + +//Yes, showers are super powerful as far as washing goes. +/obj/structure/machinery/shower/proc/wash(atom/movable/O as obj|mob) + if(!on) return + + + if(isliving(O)) + var/mob/living/L = O + L.ExtinguishMob() + L.fire_stacks = -20 //Douse ourselves with water to avoid fire more easily + to_chat(L, SPAN_WARNING("You've been drenched in water!")) + if(iscarbon(O)) + var/mob/living/carbon/M = O + if(M.r_hand) + M.r_hand.clean_blood() + if(M.l_hand) + M.l_hand.clean_blood() + if(M.back) + if(M.back.clean_blood()) + M.update_inv_back(0) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/washgloves = 1 + var/washshoes = 1 + var/washmask = 1 + var/washears = 1 + var/washglasses = 1 + + if(H.wear_suit) + washgloves = !(H.wear_suit.flags_inv_hide & HIDEGLOVES) + washshoes = !(H.wear_suit.flags_inv_hide & HIDESHOES) + + if(H.head) + washmask = !(H.head.flags_inv_hide & HIDEMASK) + washglasses = !(H.head.flags_inv_hide & HIDEEYES) + washears = !(H.head.flags_inv_hide & HIDEEARS) + + if(H.wear_mask) + if (washears) + washears = !(H.wear_mask.flags_inv_hide & HIDEEARS) + if (washglasses) + washglasses = !(H.wear_mask.flags_inv_hide & HIDEEYES) + + if(H.head) + if(H.head.clean_blood()) + H.update_inv_head() + if(H.wear_suit) + if(H.wear_suit.clean_blood()) + H.update_inv_wear_suit() + else if(H.w_uniform) + if(H.w_uniform.clean_blood()) + H.update_inv_w_uniform() + if(H.gloves && washgloves) + if(H.gloves.clean_blood()) + H.update_inv_gloves() + if(H.shoes && washshoes) + if(H.shoes.clean_blood()) + H.update_inv_shoes() + if(H.wear_mask && washmask) + if(H.wear_mask.clean_blood()) + H.update_inv_wear_mask() + if(H.glasses && washglasses) + if(H.glasses.clean_blood()) + H.update_inv_glasses() + if((H.wear_l_ear || H.wear_r_ear) && washears) + if((H.wear_l_ear && H.wear_l_ear.clean_blood()) ||(H.wear_r_ear && H.wear_r_ear.clean_blood())) + H.update_inv_ears() + if(H.belt) + if(H.belt.clean_blood()) + H.update_inv_belt() + H.clean_blood(washshoes) + else + if(M.wear_mask) //if the mob is not human, it cleans the mask without asking for bitflags + if(M.wear_mask.clean_blood()) + M.update_inv_wear_mask() + M.clean_blood() + else + O.clean_blood() + + if(isturf(loc)) + var/turf/tile = loc + tile.clean_blood() + for(var/obj/effect/E in tile) + if(istype(E,/obj/effect/decal/cleanable) || istype(E,/obj/effect/overlay)) + qdel(E) + + +/obj/structure/machinery/shower/process() + if(!on) return + wash_floor() + if(!mobpresent) return + for(var/mob/living/carbon/C in loc) + check_heat(C) + + +/obj/structure/machinery/shower/proc/wash_floor() + if(!ismist && is_washing) + return + is_washing = 1 + var/turf/T = get_turf(src) +// reagents.add_reagent("water", 2) + T.clean(src) + addtimer(VARSET_CALLBACK(src, is_washing, FALSE), 10 SECONDS) + + +/obj/structure/machinery/shower/proc/check_heat(mob/M as mob) + if(!on || watertemp == "normal") return + if(iscarbon(M)) + var/mob/living/carbon/C = M + + if(watertemp == "freezing") + C.bodytemperature = max(80, C.bodytemperature - 80) + C.recalculate_move_delay = TRUE + to_chat(C, SPAN_WARNING("The water is freezing!")) + return + if(watertemp == "boiling") + C.bodytemperature = min(500, C.bodytemperature + 35) + C.recalculate_move_delay = TRUE + C.apply_damage(5, BURN) + to_chat(C, SPAN_DANGER("The water is searing!")) + return diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index cacb8232fd60..e19d190c7442 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -17,6 +17,7 @@ S.desc = desc S.icon_state = icon_state S.sign_state = icon_state + S.icon = icon deconstruct(FALSE) else ..() @@ -45,6 +46,7 @@ S.name = name S.desc = desc S.icon_state = sign_state + S.icon = icon to_chat(user, "You fasten \the [S] with your [tool].") qdel(src) else ..() @@ -70,7 +72,7 @@ /obj/structure/sign/kiddieplaque name = "AI developers plaque" - desc = "Next to the extremely long list of names and job titles, there is a drawing of a little child. The child appears to be retarded. Beneath the image, someone has scratched the word \"PACKETS\"" + desc = "Next to the extremely long list of names and job titles, there is a drawing of a little child. Beneath the image, someone has scratched the word \"PACKETS\"" icon_state = "kiddieplaque" /obj/structure/sign/arcturianstopsign @@ -303,7 +305,7 @@ icon_state = "lifesupport" /obj/structure/sign/safety/maint - name = "maintenace semiotic" + name = "maintenance semiotic" desc = "Semiotic Standard denoting the nearby presence of maintenance access." icon_state = "maint" @@ -568,7 +570,7 @@ /obj/structure/sign/ROsign name = "\improper USCM Requisitions Office Guidelines" - desc = " 1. You are not entitled to service or equipment. Attachments are a privilege, not a right.\n 2. You must be fully dressed to obtain service. Cyrosleep underwear is non-permissible.\n 3. The Requsitions Officer has the final say and the right to decline service. Only the Acting Commanding Officer may override their decisions.\n 4. Please treat your Requsitions staff with respect. They work hard." + desc = " 1. You are not entitled to service or equipment. Attachments are a privilege, not a right.\n 2. You must be fully dressed to obtain service. Cryosleep underwear is non-permissible.\n 3. The Quartermaster has the final say and the right to decline service. Only the Acting Commanding Officer may override their decisions.\n 4. Please treat your Requsitions staff with respect. They work hard." icon_state = "roplaque" /obj/structure/sign/prop1 @@ -592,9 +594,3 @@ desc = "An unbelievably creepy cat clock that surveys the room with every tick and every tock." icon = 'icons/obj/structures/props/catclock.dmi' icon_state = "cat_clock_motion" - -/obj/structure/sign/dartboard - name = "dartboard" - desc = "A dartboard, secured with a nail and a string. It has bullet holes and knife stab marks over and around it." - icon = 'icons/obj/structures/props/props.dmi' - icon_state = "dart_board" diff --git a/code/game/objects/structures/sink.dm b/code/game/objects/structures/sink.dm new file mode 100644 index 000000000000..6bac40ea7da4 --- /dev/null +++ b/code/game/objects/structures/sink.dm @@ -0,0 +1,122 @@ +/obj/structure/sink + name = "sink" + icon = 'icons/obj/structures/props/watercloset.dmi' + icon_state = "sink_emptied_animation" + desc = "A sink used for washing one's hands and face." + anchored = TRUE + /// if something's being washed at the moment + var/busy = FALSE + + +/obj/structure/sink/Initialize() + . = ..() + if(prob(50)) + icon_state = "sink_emptied" + + +/obj/structure/sink/proc/stop_flow() //sets sink animation to normal sink (without running water) + + if(prob(50)) + icon_state = "sink_emptied_animation" + else + icon_state = "sink_emptied" + flick("sink_animation_empty", src) + + +/obj/structure/sink/attack_hand(mob/user) + if(isRemoteControlling(user)) + return + + if(!Adjacent(user)) + return + + if(busy) + to_chat(user, SPAN_DANGER("Someone's already washing here.")) + return + + to_chat(usr, SPAN_NOTICE(" You start washing your hands.")) + flick("sink_animation_fill", src) //<- play the filling animation then automatically switch back to the loop + icon_state = "sink_animation_fill_loop" //<- set it to the loop + addtimer(CALLBACK(src, PROC_REF(stop_flow)), 6 SECONDS) + playsound(loc, 'sound/effects/sinkrunning.ogg', 25, TRUE) + + busy = TRUE + sleep(40) + busy = FALSE + + if(!Adjacent(user)) return //Person has moved away from the sink + + user.clean_blood() + if(ishuman(user)) + user:update_inv_gloves() + for(var/mob/V in viewers(src, null)) + V.show_message(SPAN_NOTICE("[user] washes their hands using \the [src]."), SHOW_MESSAGE_VISIBLE) + + +/obj/structure/sink/attackby(obj/item/O as obj, mob/user as mob) + if(busy) + to_chat(user, SPAN_DANGER("Someone's already washing here.")) + return + + var/obj/item/reagent_container/RG = O + if (istype(RG) && RG.is_open_container()) + RG.reagents.add_reagent("water", min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) + user.visible_message(SPAN_NOTICE("[user] fills \the [RG] using \the [src]."),SPAN_NOTICE("You fill \the [RG] using \the [src].")) + return + + else if (istype(O, /obj/item/weapon/baton)) + var/obj/item/weapon/baton/B = O + if(B.bcell) + if(B.bcell.charge > 0 && B.status == 1) + flick("baton_active", src) + user.apply_effect(10, STUN) + user.stuttering = 10 + user.apply_effect(10, WEAKEN) + B.deductcharge(B.hitcost) + user.visible_message( \ + SPAN_DANGER("[user] was stunned by \his wet [O]!"), \ + SPAN_DANGER("You were stunned by your wet [O]!")) + return + + var/turf/location = user.loc + if(!isturf(location)) return + + var/obj/item/I = O + if(!I || !istype(I,/obj/item)) return + + to_chat(usr, SPAN_NOTICE(" You start washing \the [I].")) + + busy = TRUE + sleep(40) + busy = FALSE + + if(user.loc != location) return //User has moved + if(!I) return //Item's been destroyed while washing + if(user.get_active_hand() != I) return //Person has switched hands or the item in their hands + + O.clean_blood() + user.visible_message( \ + SPAN_NOTICE("[user] washes \a [I] using \the [src]."), \ + SPAN_NOTICE("You wash \a [I] using \the [src].")) + + +/obj/structure/sink/kitchen + name = "kitchen sink" + icon_state = "sink_alt" + + +/obj/structure/sink/puddle //splishy splashy ^_^ + name = "puddle" + icon_state = "puddle" + + +/obj/structure/sink/puddle/attack_hand(mob/M as mob) + icon_state = "puddle-splash" + ..() + icon_state = "puddle" + + +/obj/structure/sink/puddle/attackby(obj/item/O as obj, mob/user as mob) + icon_state = "puddle-splash" + ..() + icon_state = "puddle" diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index bda4b60ca21e..7469a568f7e0 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -13,7 +13,7 @@ icon_state = "bed" icon = 'icons/obj/objects.dmi' can_buckle = TRUE - buckle_lying = TRUE + buckle_lying = 90 throwpass = TRUE debris = list(/obj/item/stack/sheet/metal) var/buildstacktype = /obj/item/stack/sheet/metal @@ -208,6 +208,20 @@ return ..() +/obj/structure/bed/roller/Collided(atom/movable/moving_atom) + if(!isxeno(moving_atom)) + return ..() + + if(buckled_mob && buckled_mob.stat != DEAD) + return ..() + + if(buckled_bodybag) + var/mob/mob_in_bodybag = locate(/mob) in buckled_bodybag + if(mob_in_bodybag && mob_in_bodybag.stat != DEAD) + return ..() + + return + /obj/item/roller name = "roller bed" desc = "A collapsed roller bed that can be carried around." @@ -296,7 +310,7 @@ ////////////////////////////////////////////// //List of all activated medevac stretchers -var/global/list/activated_medevac_stretchers = list() +GLOBAL_LIST_EMPTY(activated_medevac_stretchers) /obj/structure/bed/medevac_stretcher name = "medevac stretcher" @@ -308,13 +322,14 @@ var/global/list/activated_medevac_stretchers = list() base_bed_icon = "stretcher" accepts_bodybag = TRUE var/stretcher_activated + var/view_range = 5 var/obj/structure/dropship_equipment/medevac_system/linked_medevac surgery_duration_multiplier = SURGERY_SURFACE_MULT_AWFUL //On the one hand, it's a big stretcher. On the other hand, you have a big sheet covering the patient and those damned Fulton hookups everywhere. /obj/structure/bed/medevac_stretcher/Destroy() if(stretcher_activated) stretcher_activated = FALSE - activated_medevac_stretchers -= src + GLOB.activated_medevac_stretchers -= src if(linked_medevac) linked_medevac.linked_stretcher = null linked_medevac = null @@ -338,6 +353,14 @@ var/global/list/activated_medevac_stretchers = list() toggle_medevac_beacon(usr) +// Used to pretend to be a camera +/obj/structure/bed/medevac_stretcher/proc/can_use() + return TRUE + +// Used to pretend to be a camera +/obj/structure/bed/medevac_stretcher/proc/isXRay() + return FALSE + /obj/structure/bed/medevac_stretcher/proc/toggle_medevac_beacon(mob/user) if(!ishuman(user)) return @@ -352,7 +375,7 @@ var/global/list/activated_medevac_stretchers = list() if(stretcher_activated) stretcher_activated = FALSE - activated_medevac_stretchers -= src + GLOB.activated_medevac_stretchers -= src if(linked_medevac) linked_medevac.linked_stretcher = null linked_medevac = null @@ -370,7 +393,7 @@ var/global/list/activated_medevac_stretchers = list() return stretcher_activated = TRUE - activated_medevac_stretchers += src + GLOB.activated_medevac_stretchers += src to_chat(user, SPAN_NOTICE("You activate [src]'s beacon.")) update_icon() @@ -390,7 +413,19 @@ var/global/list/activated_medevac_stretchers = list() //bedroll /obj/structure/bed/bedroll - name = "bedroll" - desc = "bedroll" + name = "unfolded bedroll" + desc = "Perfect for those long missions, when there's nowhere else to sleep, you remembered to bring at least one thing of comfort." + icon = 'icons/monkey_icos.dmi' icon_state = "bedroll_o" + buckling_y = 0 + foldabletype = /obj/item/roller/bedroll + accepts_bodybag = FALSE + debris = null + buildstacktype = null + +/obj/item/roller/bedroll + name = "folded bedroll" + desc = "A standard issue USCMC bedroll, They've been in service for as long as you can remember. The tag on it states to unfold it before rest, but who needs rules anyway, right?" icon = 'icons/monkey_icos.dmi' + icon_state = "bedroll" + rollertype = /obj/structure/bed/bedroll diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 7537d47c941f..e523906f4cfe 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -6,7 +6,7 @@ name = "chair" desc = "A rectangular metallic frame sitting on four legs with a back panel. Designed to fit the sitting position, more or less comfortably." icon_state = "chair" - buckle_lying = FALSE + buckle_lying = 0 var/propelled = FALSE //Check for fire-extinguisher-driven chairs var/can_rotate = TRUE var/picked_up_item = /obj/item/weapon/twohanded/folded_metal_chair @@ -295,6 +295,11 @@ name = "Delta squad chair" desc = "A simple chair permanently attached to the floor. Covered with a squeaky and way too hard faux-leather, unevenly painted in Delta squad blue. This chair is most likely to be the first to fight and first to die." +/obj/structure/bed/chair/comfy/ares + icon_state = "comfychair_ares" + name = "AI core chair" + desc = "A functional chair designed for comfortably sitting a single person with intent to facilitate interactions with the ship AI." + /obj/structure/bed/chair/office anchored = FALSE drag_delay = 1 //Pulling something on wheels is easy diff --git a/code/game/objects/structures/stool_bed_chair_nest/janicart.dm b/code/game/objects/structures/stool_bed_chair_nest/janicart.dm index ba5e46a2ce7a..15baa15aa1a4 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/janicart.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/janicart.dm @@ -103,7 +103,7 @@ buckled_mob.pixel_y = 7 -/obj/structure/bed/chair/janicart/bullet_act(obj/item/projectile/Proj) +/obj/structure/bed/chair/janicart/bullet_act(obj/projectile/Proj) if(buckled_mob) if(prob(85)) return buckled_mob.bullet_act(Proj) diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm index 2b42e641f0cf..986ae99739aa 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm @@ -20,7 +20,7 @@ if(world.time <= l_move_time + move_delay) return // Redundant check? - if(user.is_mob_incapacitated() || user.lying) + if(user.is_mob_incapacitated()) return if(propelled) //can't manually move it mid-propelling. diff --git a/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm b/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm index e306b894b021..a3ccffc466c4 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm @@ -10,7 +10,7 @@ health = 100 layer = ABOVE_MOB_LAYER plane = GAME_PLANE - buckle_lying = FALSE + buckle_lying = 0 var/on_fire = 0 var/resisting = 0 var/resisting_ready = 0 @@ -20,8 +20,6 @@ var/force_nest = FALSE /// counterpart to buckling_y --> offsets the buckled mob when it buckles var/list/buckling_x - /// saves the density of the buckled_mob - var/buckled_mob_density /obj/structure/bed/nest/Initialize(mapload, hive) . = ..() @@ -52,11 +50,10 @@ resisting_ready = FALSE if(buckled_mob == current_mob) - buckled_mob_density = current_mob.density current_mob.pixel_y = buckling_y["[dir]"] current_mob.pixel_x = buckling_x["[dir]"] current_mob.dir = turn(dir, 180) - current_mob.density = FALSE + ADD_TRAIT(current_mob, TRAIT_UNDENSE, XENO_NEST_TRAIT) pixel_y = buckling_y["[dir]"] pixel_x = buckling_x["[dir]"] if(dir == SOUTH) @@ -70,7 +67,7 @@ current_mob.pixel_y = initial(buckled_mob.pixel_y) current_mob.pixel_x = initial(buckled_mob.pixel_x) - current_mob.density = buckled_mob_density + REMOVE_TRAIT(current_mob, TRAIT_UNDENSE, XENO_NEST_TRAIT) if(dir == SOUTH) current_mob.layer = initial(current_mob.layer) if(!ishuman(current_mob)) @@ -101,7 +98,7 @@ if(iscarbon(user)) var/mob/living/carbon/carbon = user if(HIVE_ALLIED_TO_HIVE(carbon.hivenumber, hivenumber)) - to_chat(user, SPAN_XENOWARNING("You shouldn't interfere with the nest, leave that to the drones.")) + to_chat(user, SPAN_XENOWARNING("We shouldn't interfere with the nest, leave that to the drones.")) return if(buckled_mob) if(iswelder(W)) @@ -148,18 +145,18 @@ if(!(buckled_mob && buckled_mob.buckled == src && buckled_mob != user)) return - if(user.stat || user.lying || user.is_mob_restrained()) + if(user.body_position == LYING_DOWN || user.is_mob_incapacitated()) return if(isxeno(user)) var/mob/living/carbon/xenomorph/X = user if(!X.hive.unnesting_allowed && !isxeno_builder(X) && HIVE_ALLIED_TO_HIVE(X.hivenumber, hivenumber)) - to_chat(X, SPAN_XENOWARNING("You shouldn't interfere with the nest, leave that to the drones.")) + to_chat(X, SPAN_XENOWARNING("We shouldn't interfere with the nest, leave that to the drones.")) return else if(iscarbon(user)) var/mob/living/carbon/H = user if(HIVE_ALLIED_TO_HIVE(H.hivenumber, hivenumber)) - to_chat(H, SPAN_XENOWARNING("You shouldn't interfere with the nest, leave that to the drones.")) + to_chat(H, SPAN_XENOWARNING("We shouldn't interfere with the nest, leave that to the drones.")) return if(ishuman(buckled_mob) && isxeno(user)) @@ -168,9 +165,9 @@ to_chat(user, SPAN_WARNING("[H] was nested recently. Wait a bit.")) return if(H.stat != DEAD) - if(alert(user, "[H] is still alive and kicking! Are you sure you want to remove them from the nest?", "Confirmation", "Yes", "No") != "Yes") + if(alert(user, "[H] is still alive and kicking! Are we sure we want to remove them from the nest?", "Confirmation", "Yes", "No") != "Yes") return - if(!buckled_mob || !user.Adjacent(H) || user.stat || user.lying || user.is_mob_restrained()) + if(!buckled_mob || !user.Adjacent(H) || user.is_mob_incapacitated(FALSE)) return if(ishuman(user)) @@ -192,82 +189,78 @@ recently_nested = TRUE addtimer(VARSET_CALLBACK(src, recently_nested, FALSE), 5 SECONDS) -/obj/structure/bed/nest/buckle_mob(mob/M as mob, mob/user as mob) +/obj/structure/bed/nest/buckle_mob(mob/mob, mob/user) . = FALSE - if(!isliving(M) || islarva(user) || (get_dist(src, user) > 1) || user.is_mob_restrained() || user.stat || user.lying || M.buckled || !iscarbon(user)) + if(!isliving(mob) || islarva(user) || (get_dist(src, user) > 1) || user.is_mob_incapacitated(FALSE)) return - if(isxeno(M)) - to_chat(user, SPAN_WARNING("You can't buckle your sisters.")) + if(isxeno(mob)) + to_chat(user, SPAN_WARNING("We can't buckle our sisters.")) return if(buckled_mob) to_chat(user, SPAN_WARNING("There's already someone in [src].")) return - if(M.mob_size > MOB_SIZE_HUMAN) - to_chat(user, SPAN_WARNING("\The [M] is too big to fit in [src].")) + if(mob.mob_size > MOB_SIZE_HUMAN) + to_chat(user, SPAN_WARNING("\The [mob] is too big to fit in [src].")) return - if(!isxeno(user) || issynth(M)) - to_chat(user, SPAN_WARNING("Gross! You're not touching that stuff.")) + if(!isxeno(user) || issynth(mob)) + to_chat(user, SPAN_WARNING("Gross! We're not touching that stuff.")) return - if(isyautja(M) && !force_nest) - to_chat(user, SPAN_WARNING("\The [M] seems to be wearing some kind of resin-resistant armor!")) + if(isyautja(mob) && !force_nest) + to_chat(user, SPAN_WARNING("\The [mob] seems to be wearing some kind of resin-resistant armor!")) return - if(M == user) + if(mob == user) return - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(!H.lying) //Don't ask me why is has to be - to_chat(user, SPAN_WARNING("[M] is resisting, ground them.")) + var/mob/living/carbon/human/human = null + if(ishuman(mob)) + human = mob + if(human.body_position != LYING_DOWN) //Don't ask me why is has to be + to_chat(user, SPAN_WARNING("[mob] is resisting, ground them.")) return var/securing_time = 15 // Don't increase the nesting time for monkeys and other species - if(ishuman_strict(M)) + if(ishuman_strict(mob)) securing_time = 75 - user.visible_message(SPAN_WARNING("[user] pins [M] into [src], preparing the securing resin."), - SPAN_WARNING("[user] pins [M] into [src], preparing the securing resin.")) - var/M_loc = M.loc + user.visible_message(SPAN_WARNING("[user] pins [mob] into [src], preparing the securing resin."), + SPAN_WARNING("[user] pins [mob] into [src], preparing the securing resin.")) + var/M_loc = mob.loc if(!do_after(user, securing_time, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) return - if(M.loc != M_loc) + if(mob.loc != M_loc) return if(buckled_mob) //Just in case to_chat(user, SPAN_WARNING("There's already someone in [src].")) return - if(ishuman(M)) //Improperly stunned Marines won't be nested - var/mob/living/carbon/human/H = M - if(!H.lying) //Don't ask me why is has to be - to_chat(user, SPAN_WARNING("[M] is resisting, ground them.")) + if(human) //Improperly stunned Marines won't be nested + if(human.body_position != LYING_DOWN) //Don't ask me why is has to be + to_chat(user, SPAN_WARNING("[mob] is resisting, ground them.")) return - do_buckle(M, user) - ADD_TRAIT(M, TRAIT_NESTED, TRAIT_SOURCE_BUCKLE) + do_buckle(mob, user) + ADD_TRAIT(mob, TRAIT_NESTED, TRAIT_SOURCE_BUCKLE) + SEND_SIGNAL(mob, COMSIG_MOB_NESTED, user) - if(!ishuman(M)) + if(!human) return TRUE //Disabling motion detectors and other stuff they might be carrying - var/mob/living/carbon/human/H = M - H.start_nesting_cooldown() - H.disable_special_flags() - H.disable_lights() - H.disable_special_items() - - if(H.mind) - var/choice = alert(M, "You have no possibility of escaping unless freed by your fellow marines, do you wish to Ghost? If you are freed while ghosted, you will be given the choice to return to your body.", ,"Ghost", "Remain") - if(choice == "Ghost") - // Ask to ghostize() so they can reenter, to leave mind and such intact - ghost_of_buckled_mob = M.ghostize(can_reenter_corpse = TRUE) - ghost_of_buckled_mob?.can_reenter_corpse = FALSE // Just don't for now + human.start_nesting_cooldown() + human.disable_special_flags() + human.disable_lights() + human.disable_special_items() + + if(human.client) + human.do_ghost() return TRUE @@ -286,14 +279,13 @@ buckled_mob.old_y = 0 REMOVE_TRAIT(buckled_mob, TRAIT_NESTED, TRAIT_SOURCE_BUCKLE) var/mob/living/carbon/human/buckled_human = buckled_mob - if(buckled_human.stat == DEAD ) - buckled_mob_density = FALSE - - . = ..() var/mob/dead/observer/G = ghost_of_buckled_mob var/datum/mind/M = G?.mind ghost_of_buckled_mob = null + + . = ..() //Very important that this comes after, since it deletes the nest and clears ghost_of_buckled_mob + if(!istype(buckled_human) || !istype(G) || !istype(M) || buckled_human.undefibbable || buckled_human.mind || M.original != buckled_human || buckled_human.chestburst) return // Zealous checking as most is handled by ghost code to_chat(G, FONT_SIZE_HUGE(SPAN_DANGER("You have been freed from your nest and may go back to your body! (Look for 'Re-enter Corpse' in Ghost verbs, or click here!)"))) @@ -315,7 +307,6 @@ /obj/structure/bed/nest/proc/healthcheck() if(health <= 0) - buckled_mob_density = FALSE deconstruct() /obj/structure/bed/nest/fire_act() @@ -331,7 +322,7 @@ if(M.a_intent == INTENT_HARM && !buckled_mob) //can't slash nest with an occupant. M.animation_attack_on(src) M.visible_message(SPAN_DANGER("\The [M] claws at \the [src]!"), \ - SPAN_DANGER("You claw at \the [src].")) + SPAN_DANGER("We claw at \the [src].")) playsound(loc, "alien_resin_break", 25) health -= (M.melee_damage_upper + 25) //Beef up the damage a bit healthcheck() diff --git a/code/game/objects/structures/surface.dm b/code/game/objects/structures/surface.dm index 3a2dbd3e8d5c..ac8cf51a407e 100644 --- a/code/game/objects/structures/surface.dm +++ b/code/game/objects/structures/surface.dm @@ -1,160 +1,20 @@ //Surface structures are structures that can have items placed on them /obj/structure/surface health = 100 - var/list/update_types = list( - /obj/item/reagent_container/glass, - /obj/item/storage, - /obj/item/reagent_container/food/snacks - ) - //add items there that behave like structures for whatever dumb reason - var/list/blacklisted_item_types = list( - /obj/item/device/radio/intercom, - /obj/item/device/sentry_computer - ) -/obj/structure/surface/Initialize() - . = ..() - return INITIALIZE_HINT_LATELOAD - -/obj/structure/surface/LateInitialize() - attach_all() - update_icon() - -/obj/structure/surface/Destroy() - detach_all() - . = ..() - -/obj/structure/surface/ex_act(severity, direction, datum/cause_data/cause_data) - health -= severity - if(health <= 0) - var/location = get_turf(src) - handle_debris(severity, direction) - detach_all() - for(var/obj/item/O in loc) - O.explosion_throw(severity, direction) - qdel(src) - if(prob(66)) - create_shrapnel(location, rand(1,4), direction, , /datum/ammo/bullet/shrapnel/light, cause_data) - return TRUE - -/obj/structure/surface/proc/attach_all() - for(var/obj/item/O in loc) - if(in_blacklist(O)) - continue - attach_item(O, FALSE) - draw_item_overlays() - -/obj/structure/surface/proc/in_blacklist(obj/item/O) - for(var/allowed_type in blacklisted_item_types) - if(istype(O, allowed_type)) - return TRUE - return FALSE - -/obj/structure/surface/proc/attach_item(obj/item/O, update = TRUE) - if(!O) +/obj/structure/surface/attackby(obj/item/attacking_item, mob/user, click_data) + if(!user.drop_inv_item_to_loc(attacking_item, loc)) return - if(O.luminosity) //it can't make light as an overlay - return - O.forceMove(src) - RegisterSignal(O, COMSIG_ATOM_DECORATED, PROC_REF(decorate_update)) - if(update) - draw_item_overlays() - -/obj/structure/surface/proc/detach_item(obj/item/O) - O.pixel_x = initial(O.pixel_x) - O.pixel_y = initial(O.pixel_y) - UnregisterSignal(O, COMSIG_ATOM_DECORATED) - draw_item_overlays() - return - -/obj/structure/surface/proc/decorate_update(obj/item/O) - SIGNAL_HANDLER - draw_item_overlays() -/obj/structure/surface/proc/detach_all() - overlays.Cut() - for(var/obj/item/O in contents) - UnregisterSignal(O, COMSIG_ATOM_DECORATED) - O.forceMove(loc) + auto_align(attacking_item, click_data) + user.next_move = world.time + 2 + return TRUE -/obj/structure/surface/proc/get_item(list/click_data) - var/i = LAZYLEN(contents) - if(!click_data) - return - if(i < 1) - return FALSE - for(i, i >= 1, i--)//starting from the end because that's where the topmost is - var/obj/item/O = contents[i] - var/bounds_x = text2num(click_data["icon-x"])-1 - O.pixel_x - var/bounds_y = text2num(click_data["icon-y"])-1 - O.pixel_y - if(bounds_x < 0 || bounds_y < 0) - continue - var/icon/I = icon(O.icon, O.icon_state) - var/p = I.GetPixel(bounds_x, bounds_y) - if(p) - return O - return FALSE - -/obj/structure/surface/proc/draw_item_overlays() - overlays.Cut() - for(var/obj/item/O in contents) - var/image/I = image(O.icon) - I.appearance = O.appearance - I.appearance_flags |= RESET_COLOR - I.overlays = O.overlays - LAZYADD(overlays, I) - -/obj/structure/surface/clicked(mob/user, list/mods) - if(mods["shift"] && !mods["middle"]) - var/obj/item/O = get_item(mods) - if(!O) - return ..() - if(O.can_examine(user)) - O.examine(user) - return TRUE - ..() - -/obj/structure/surface/proc/try_to_open_container(mob/user, mods) - if(!Adjacent(user)) - return - - if(ishuman(user) || isrobot(user)) - var/obj/item/O = get_item(mods) - if(O && isstorage(O)) - var/obj/item/storage/S = O - S.open(usr) - return TRUE - -/obj/structure/surface/attack_hand(mob/user, click_data) - . = ..() - if(click_data && click_data["alt"]) - return - var/obj/item/O = get_item(click_data) - if(!O) - return - O.attack_hand(user) - if(!LAZYISIN(contents, O))//in case attack_hand did not pick up the item - detach_item(O) - -/obj/structure/surface/attackby(obj/item/W, mob/user, click_data) - var/obj/item/O = get_item(click_data) - if(!O || click_data["ctrl"])//holding the ctrl key will force it to place the object - // Placing stuff on tables - if(user.drop_inv_item_to_loc(W, loc)) - auto_align(W, click_data) - user.next_move = world.time + 2 - return TRUE - else if(!O.attackby(W, user)) - W.afterattack(O, user, TRUE) - for(var/type in update_types) - if(istype(O, type)) - draw_item_overlays() - -/obj/structure/surface/proc/auto_align(obj/item/W, click_data) - if(!W.center_of_mass) // Clothing, material stacks, generally items with large sprites where exact placement would be unhandy. - W.pixel_x = rand(-W.randpixel, W.randpixel) - W.pixel_y = rand(-W.randpixel, W.randpixel) - W.pixel_z = 0 +/obj/structure/surface/proc/auto_align(obj/item/new_item, click_data) + if(!new_item.center_of_mass) // Clothing, material stacks, generally items with large sprites where exact placement would be unhandy. + new_item.pixel_x = rand(-new_item.randpixel, new_item.randpixel) + new_item.pixel_y = rand(-new_item.randpixel, new_item.randpixel) + new_item.pixel_z = 0 return if(!click_data) @@ -167,19 +27,11 @@ var/mouse_x = text2num(click_data["icon-x"])-1 // Ranging from 0 to 31 var/mouse_y = text2num(click_data["icon-y"])-1 - var/cell_x = Clamp(round(mouse_x/CELLSIZE), 0, CELLS-1) // Ranging from 0 to CELLS-1 - var/cell_y = Clamp(round(mouse_y/CELLSIZE), 0, CELLS-1) - - var/list/center = cached_key_number_decode(W.center_of_mass) - - W.pixel_x = (CELLSIZE * (cell_x + 0.5)) - center["x"] - W.pixel_y = (CELLSIZE * (cell_y + 0.5)) - center["y"] - W.pixel_z = 0 + var/cell_x = clamp(round(mouse_x/CELLSIZE), 0, CELLS-1) // Ranging from 0 to CELLS-1 + var/cell_y = clamp(round(mouse_y/CELLSIZE), 0, CELLS-1) - if(!(W.flags_item & NOTABLEMERGE)) - attach_item(W) + var/list/center = cached_key_number_decode(new_item.center_of_mass) -/obj/structure/surface/MouseDrop(atom/over) - . = ..() - if(over == usr && usr && usr.client && usr.client.lmb_last_mousedown_mods) - return try_to_open_container(usr, usr.client.lmb_last_mousedown_mods) + new_item.pixel_x = (CELLSIZE * (cell_x + 0.5)) - center["x"] + new_item.pixel_y = (CELLSIZE * (cell_y + 0.5)) - center["y"] + new_item.pixel_z = 0 diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 730263ad7a3e..a1542f7baf75 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -143,7 +143,7 @@ dir_sum += 128 var/table_type = 0 //stand_alone table - if((dir_sum%16) in cardinal) + if((dir_sum%16) in GLOB.cardinals) table_type = 1 //endtable dir_sum %= 16 if((dir_sum%16) in list(3, 12)) @@ -254,8 +254,6 @@ /obj/structure/surface/table/MouseDrop_T(obj/item/I, mob/user) if (!istype(I) || user.get_active_hand() != I) return ..() - if(isrobot(user)) - return user.drop_held_item() if(I.loc != loc) step(I, get_dir(I, src)) @@ -274,19 +272,23 @@ var/mob/living/M = G.grabbed_thing if(user.a_intent == INTENT_HARM) if(user.grab_level > GRAB_AGGRESSIVE) - if (prob(15)) M.apply_effect(5, WEAKEN) + if (prob(15)) + M.KnockDown(5) + M.Stun(5) M.apply_damage(8, def_zone = "head") - user.visible_message(SPAN_DANGER("[user] slams [M]'s face against [src]!"), - SPAN_DANGER("You slam [M]'s face against [src]!")) + user.visible_message(SPAN_DANGER("[user] slams [M]'s face against [src]!"), + SPAN_DANGER("You slam [M]'s face against [src]!")) playsound(src.loc, 'sound/weapons/tablehit1.ogg', 25, 1) else to_chat(user, SPAN_WARNING("You need a better grip to do that!")) return else if(user.grab_level >= GRAB_AGGRESSIVE) M.forceMove(loc) - M.apply_effect(5, WEAKEN) - user.visible_message(SPAN_DANGER("[user] throws [M] on [src]."), - SPAN_DANGER("You throw [M] on [src].")) + M.KnockDown(5) + M.Stun(5) + playsound(loc, 'sound/weapons/thudswoosh.ogg', 25, 1, 7) + user.visible_message(SPAN_DANGER("[user] throws [M] on [src], stunning them!"), + SPAN_DANGER("You throw [M] on [src], stunning them!")) return if(HAS_TRAIT(W, TRAIT_TOOL_WRENCH) && !(user.a_intent == INTENT_HELP)) @@ -299,7 +301,7 @@ deconstruct(TRUE) return - if((W.flags_item & ITEM_ABSTRACT) || isrobot(user)) + if(W.flags_item & ITEM_ABSTRACT) return if(istype(W, /obj/item/weapon/wristblades)) @@ -326,11 +328,13 @@ /// Checks whether a table is a straight line along a given axis /obj/structure/surface/table/proc/straight_table_check(direction) var/obj/structure/surface/table/table = src - while(table) + var/obj/structure/surface/table/side_table + var/tables_count = 7 // Lazy extra safety against infinite loops. If table big, can't flip, i guess. + while(--tables_count) // Check whether there are connected tables perpendicular to the axis for(var/angle in list(-90, 90)) - table = locate() in get_step(loc, turn(direction, angle)) - if(table && !table.flipped) + side_table = locate() in get_step(table, turn(direction, angle)) + if(side_table && !side_table.flipped) return FALSE table = locate() in get_step(table, direction) if(!table || table.flipped) @@ -339,6 +343,8 @@ var/obj/structure/surface/table/reinforced/reinforced_table = table if(reinforced_table.status == RTABLE_NORMAL) return FALSE + if(!tables_count) + return FALSE return TRUE /obj/structure/surface/table/verb/do_flip() @@ -347,7 +353,11 @@ set category = "Object" set src in oview(1) - if(!can_touch(usr) || ismouse(usr)) + if(!can_touch(usr)) + return + + if(usr.mob_size == MOB_SIZE_SMALL) + to_chat(usr, SPAN_WARNING("[isxeno(usr) ? "We are" : "You're"] too small to flip [src].")) return if(usr.a_intent != INTENT_HARM) @@ -421,7 +431,7 @@ to_chat(usr, SPAN_WARNING("You have moved a table too recently.")) return FALSE - if(!skip_straight_check && (!straight_table_check(turn(direction, 90)) || !straight_table_check(turn(direction, -90)))) + if(!skip_straight_check && !(straight_table_check(turn(direction, 90)) && straight_table_check(turn(direction, -90)))) to_chat(usr, SPAN_WARNING("[src] is too wide to be flipped.")) return FALSE @@ -430,8 +440,6 @@ verbs -= /obj/structure/surface/table/verb/do_flip verbs += /obj/structure/surface/table/proc/do_put - detach_all() - var/list/targets = list(get_step(src, dir), get_step(src, turn(dir, 45)), get_step(src, turn(dir, -45))) for(var/atom/movable/movable_on_table in get_turf(src)) if(!movable_on_table.anchored) @@ -475,7 +483,6 @@ var/obj/structure/surface/table/T = locate() in get_step(src.loc,D) if(T && T.flipped && T.dir == src.dir) T.unflip() - attach_all() update_icon() update_adjacent() @@ -654,8 +661,6 @@ /obj/structure/surface/rack/MouseDrop_T(obj/item/I, mob/user) if (!istype(I) || user.get_active_hand() != I) return ..() - if(isrobot(user)) - return user.drop_held_item() if(I.loc != loc) step(I, get_dir(I, src)) @@ -665,7 +670,7 @@ deconstruct(TRUE) playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) return - if((W.flags_item & ITEM_ABSTRACT) || isrobot(user)) + if(W.flags_item & ITEM_ABSTRACT) return ..() diff --git a/code/game/objects/structures/urinal.dm b/code/game/objects/structures/urinal.dm new file mode 100644 index 000000000000..c6d14f46540a --- /dev/null +++ b/code/game/objects/structures/urinal.dm @@ -0,0 +1,22 @@ +/obj/structure/urinal + name = "urinal" + desc = "The HU-452, an experimental urinal." + icon = 'icons/obj/structures/props/watercloset.dmi' + icon_state = "urinal" + density = FALSE + anchored = TRUE + +/obj/structure/urinal/attackby(obj/item/I, mob/living/user) + if(istype(I, /obj/item/grab)) + if(isxeno(user)) return + var/obj/item/grab/G = I + if(isliving(G.grabbed_thing)) + var/mob/living/GM = G.grabbed_thing + if(user.grab_level > GRAB_PASSIVE) + if(!GM.loc == get_turf(src)) + to_chat(user, SPAN_NOTICE("[GM.name] needs to be on the urinal.")) + return + user.visible_message(SPAN_DANGER("[user] slams [GM.name] into [src]!"), SPAN_NOTICE("You slam [GM.name] into [src]!")) + GM.apply_damage(8, BRUTE) + else + to_chat(user, SPAN_NOTICE("You need a tighter grip.")) diff --git a/code/game/objects/structures/vulture_spotter.dm b/code/game/objects/structures/vulture_spotter.dm new file mode 100644 index 000000000000..d90a1ec1615a --- /dev/null +++ b/code/game/objects/structures/vulture_spotter.dm @@ -0,0 +1,313 @@ +/obj/structure/vulture_spotter_tripod + name = "\improper M707 spotting tripod" + desc = "A tripod for an M707 anti-materiel rifle's spotting scope." + icon_state = "vulture_tripod" + density = TRUE + anchored = TRUE + unacidable = TRUE + /// Weakref to the associated rifle + var/datum/weakref/bound_rifle + /// Weakref to the scope user, if any + var/datum/weakref/scope_user + /// If the tripod has an attached spotting scope + var/scope_attached = FALSE + /// If the scope is currently being used + var/scope_using = FALSE + /// Ref to the action to give the user of the scope + var/datum/action/vulture_tripod_unscope/unscope_action + /// How far out the scope zooms + var/scope_zoom = 10 + /// How much to increase the user's dark vision by + var/darkness_view = 12 + /// The maximum distance this can be from the sniper scope + var/max_sniper_distance = 7 + /// If this requires the vulture_user trait to use + var/skillless = FALSE + +/obj/structure/vulture_spotter_tripod/Initialize(mapload) + . = ..() + desc = initial(desc) + " Though, it doesn't seem to have one attached yet." + +/obj/structure/vulture_spotter_tripod/Destroy() + if(scope_user) + var/mob/user = scope_user.resolve() + user.unset_interaction() + QDEL_NULL(unscope_action) + return ..() + +/obj/structure/vulture_spotter_tripod/deconstruct(disassembled) + . = ..() + if(scope_attached && bound_rifle) + if(skillless) + new /obj/item/device/vulture_spotter_scope/skillless(get_turf(src), bound_rifle) + else + new /obj/item/device/vulture_spotter_scope(get_turf(src), bound_rifle) + new /obj/item/device/vulture_spotter_tripod(get_turf(src)) + +/obj/structure/vulture_spotter_tripod/get_examine_text(mob/user) + . = ..() + if(scope_attached) + . += SPAN_NOTICE("You can remove the scope from [src] with a screwdriver.") + else + . += SPAN_NOTICE("You can pick up [src] by dragging it to your sprite.") + . += SPAN_NOTICE("You can rotate [src] with Alt-click.") + +/obj/structure/vulture_spotter_tripod/attackby(obj/item/thing, mob/user) + if(istype(thing, /obj/item/device/vulture_spotter_scope)) + on_scope_attach(user, thing) + return + + if(HAS_TRAIT(thing, TRAIT_TOOL_SCREWDRIVER)) + on_screwdriver(user) + return + + return ..() + +/obj/structure/vulture_spotter_tripod/MouseDrop(over_object, src_location, over_location) + if(!ishuman(usr)) + return + var/mob/living/carbon/human/user = usr //this is us + + if(!HAS_TRAIT(user, TRAIT_VULTURE_USER) && !skillless) + to_chat(user, SPAN_WARNING("You don't know how to use this!")) + return + + if(!scope_attached) + fold_up(user) + return + + try_scope(user) + +/obj/structure/vulture_spotter_tripod/on_set_interaction(mob/living/user) + var/obj/item/attachable/vulture_scope/scope = get_vulture_scope() + scope.spotter_spotting = TRUE + to_chat(scope.scope_user, SPAN_NOTICE("You notice that [scope] drifts less.")) + RegisterSignal(scope, COMSIG_VULTURE_SCOPE_MOVED, PROC_REF(on_vulture_move)) + RegisterSignal(scope, COMSIG_VULTURE_SCOPE_UNSCOPED, PROC_REF(on_vulture_unscope)) + if(user.client) + RegisterSignal(user.client, COMSIG_PARENT_QDELETING, PROC_REF(do_unscope)) + user.client.change_view(scope_zoom, src) + RegisterSignal(user, list(COMSIG_MOB_PICKUP_ITEM, COMSIG_MOB_RESISTED), PROC_REF(do_unscope)) + user.see_in_dark += darkness_view + user.lighting_alpha = 127 + user.sync_lighting_plane_alpha() + user.overlay_fullscreen("vulture_spotter", /atom/movable/screen/fullscreen/vulture/spotter) + ADD_TRAIT(user, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Vulture spotter")) + user.status_flags |= IMMOBILE_ACTION + user.visible_message(SPAN_NOTICE("[user] looks through [src]."),SPAN_NOTICE("You look through [src], ready to go!")) + user.forceMove(loc) + user.setDir(dir) + scope_user = WEAKREF(user) + update_pixels(TRUE) + give_action(user, /datum/action/vulture_tripod_unscope, null, null, src) + set_scope_loc(user, scope) + +/obj/structure/vulture_spotter_tripod/on_unset_interaction(mob/living/user) + user.status_flags &= ~IMMOBILE_ACTION + user.visible_message(SPAN_NOTICE("[user] looks up from [src]."),SPAN_NOTICE("You look up from [src].")) + REMOVE_TRAIT(user, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Vulture spotter")) + user.reset_view(null) + user.Move(get_step(src, reverse_direction(src.dir))) + user.client?.change_view(GLOB.world_view_size, src) + user.setDir(dir) //set the direction of the player to the direction the gun is facing + update_pixels(FALSE) + remove_action(user, /datum/action/vulture_tripod_unscope) + unscope() + +/obj/structure/vulture_spotter_tripod/clicked(mob/user, list/mods) + if(mods["alt"]) + if(in_range(src, user) && !user.is_mob_incapacitated()) + rotate(user) + return TRUE + return ..() + +/// Rotates the tripod 90* counter-clockwise +/obj/structure/vulture_spotter_tripod/proc/rotate(mob/user) + if(scope_using) + to_chat(user, SPAN_WARNING("You can't rotate [src] while someone is using it!")) + return FALSE + + playsound(src, 'sound/items/Ratchet.ogg', 25, 1) + user.visible_message("[user] rotates [src].","You rotate [src].") + setDir(turn(dir, -90)) + update_pixels(TRUE) + +/// Updates the direction the operator should be facing, and their pixel offset +/obj/structure/vulture_spotter_tripod/proc/update_pixels(mounting = TRUE) + if(!scope_user) + return + + var/mob/user = scope_user.resolve() + if(mounting) + var/diff_x = 0 + var/diff_y = 0 + switch(dir) + if(NORTH) + diff_y = -16 + if(SOUTH) + diff_y = 16 + if(EAST) + diff_x = -16 + if(WEST) + diff_x = 16 + + user.pixel_x = diff_x + user.pixel_y = diff_y + else + user.pixel_x = 0 + user.pixel_y = 0 + +/// Handler for when the scope is being attached to the tripod +/obj/structure/vulture_spotter_tripod/proc/on_scope_attach(mob/user, obj/item/device/vulture_spotter_scope/scope) + if(scope_attached) + return + + if(istype(scope, /obj/item/device/vulture_spotter_scope/skillless)) + skillless = TRUE + + user.visible_message(SPAN_NOTICE("[user] attaches [scope] to [src]."), SPAN_NOTICE("You attach [scope] to [src].")) + icon_state = "vulture_scope" + setDir(user.dir) + bound_rifle = scope.bound_rifle + scope_attached = TRUE + desc = initial(desc) + qdel(scope) + +/// Handler for when the scope is being detached from the tripod by screwdriver +/obj/structure/vulture_spotter_tripod/proc/on_screwdriver(mob/user) + if(!scope_attached) + to_chat(user, SPAN_NOTICE("You don't need a screwdriver to pick this up!")) + return + user.visible_message(SPAN_NOTICE("[user] unscrews the scope from [src] before detaching it."), SPAN_NOTICE("You unscrew the scope from [src], detaching it.")) + icon_state = initial(icon_state) + unscope() + scope_attached = FALSE + desc = initial(desc) + " Though, it doesn't seem to have one attached yet." + new /obj/item/device/vulture_spotter_scope(get_turf(src), bound_rifle) + +/// Handler for user folding up the tripod, picking it up +/obj/structure/vulture_spotter_tripod/proc/fold_up(mob/user) + user.visible_message(SPAN_NOTICE("[user] folds up [src]."), SPAN_NOTICE("You fold up [src].")) + var/obj/item/device/vulture_spotter_tripod/tripod = new(get_turf(src)) + user.put_in_hands(tripod, TRUE) + qdel(src) + +/// Checks if the user is able to use the scope, uses it if so +/obj/structure/vulture_spotter_tripod/proc/try_scope(mob/living/carbon/human/user) + if(!user.client) + return + + if(user.l_hand || user.r_hand) + to_chat(user, SPAN_WARNING("Your hands need to be free to use [src]!")) + return + + var/obj/item/attachable/vulture_scope/scope = get_vulture_scope() + if(!scope) + return + + if(get_dist(get_turf(scope), get_turf(src)) > max_sniper_distance) + to_chat(user, SPAN_WARNING("[src] needs to be closer to the M707 to be used!")) + return + + if(!scope.scoping) + to_chat(user, SPAN_WARNING("The M707's sight needs to be in use to be able to look through [src]!")) + return + + user.set_interaction(src) + +/// Handler for when the user should be unscoping +/obj/structure/vulture_spotter_tripod/proc/do_unscope() + SIGNAL_HANDLER + + if(!scope_user) + return + + var/mob/user = scope_user.resolve() + user.unset_interaction() + +/// Unscopes the user, cleaning up everything related +/obj/structure/vulture_spotter_tripod/proc/unscope() + SIGNAL_HANDLER + if(scope_user) + var/mob/living/carbon/human/user = scope_user.resolve() + user.see_in_dark -= darkness_view + user.lighting_alpha = user.default_lighting_alpha + user.sync_lighting_plane_alpha() + user.clear_fullscreen("vulture_spotter") + UnregisterSignal(user, list(COMSIG_MOB_PICKUP_ITEM, COMSIG_MOB_RESISTED)) + user.pixel_x = 0 + user.pixel_y = 0 + if(user.client) + user.client.change_view(GLOB.world_view_size, src) + user.client.pixel_x = 0 + user.client.pixel_y = 0 + UnregisterSignal(user.client, COMSIG_PARENT_QDELETING) + + var/obj/item/attachable/vulture_scope/scope = get_vulture_scope() + if(scope) + scope.spotter_spotting = FALSE + to_chat(scope.scope_user, SPAN_NOTICE("You notice that [scope] starts drifting more.")) + UnregisterSignal(scope, list(COMSIG_VULTURE_SCOPE_MOVED, COMSIG_VULTURE_SCOPE_UNSCOPED)) + + QDEL_NULL(unscope_action) + +/// Sets the scope's sight location to the same as the sniper's +/obj/structure/vulture_spotter_tripod/proc/set_scope_loc(mob/living/carbon/human/user, obj/item/attachable/vulture_scope/scope) + if(!user.client || !scope) + return + + var/turf/user_turf = get_turf(user) + var/x_off = scope.scope_x - user_turf.x + var/y_off = scope.scope_y - user_turf.y + var/pixels_per_tile = 32 + + user.client.pixel_x = x_off * pixels_per_tile + user.client.pixel_y = y_off * pixels_per_tile + +/// Handler for when the vulture spotter scope moves +/obj/structure/vulture_spotter_tripod/proc/on_vulture_move(datum/source) + SIGNAL_HANDLER + if(!scope_user) + return + + set_scope_loc(scope_user.resolve(), get_vulture_scope()) + +/// Handler for when the sniper unscopes +/obj/structure/vulture_spotter_tripod/proc/on_vulture_unscope(datum/source) + SIGNAL_HANDLER + if(!scope_user) + return + + var/mob/user = scope_user.resolve() + + to_chat(user, SPAN_WARNING("[src]'s sight disengages as the linked rifle unscopes.")) + unscope() + +/// Getter for the vulture scope on the sniper +/obj/structure/vulture_spotter_tripod/proc/get_vulture_scope() + RETURN_TYPE(/obj/item/attachable/vulture_scope) + if(!bound_rifle) + return + + var/obj/item/weapon/gun/boltaction/vulture/rifle = bound_rifle.resolve() + if(!("rail" in rifle.attachments) || !istype(rifle.attachments["rail"], /obj/item/attachable/vulture_scope)) + return + + return rifle.attachments["rail"] + +/datum/action/vulture_tripod_unscope + name = "Stop Using Scope" + action_icon_state = "vulture_tripod_close" + /// Weakref to the tripod that this is linked to + var/datum/weakref/tripod + +/datum/action/vulture_tripod_unscope/New(Target, override_icon_state, obj/structure/vulture_spotter_tripod/spotting_tripod) + . = ..() + tripod = WEAKREF(spotting_tripod) + +/datum/action/vulture_tripod_unscope/action_activate() + if(!tripod) + return + + var/obj/structure/vulture_spotter_tripod/spotting_tripod = tripod.resolve() + spotting_tripod.do_unscope() diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 5c084ce94cbc..1014e8ab7a96 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -1,5 +1,3 @@ -//todo: toothbrushes, and some sort of "toilet-filthinator" for the hos - /obj/structure/toilet name = "toilet" desc = "The HT-451, a torque rotation-based, waste disposal unit for small matter. This one seems remarkably clean." @@ -8,16 +6,20 @@ density = FALSE anchored = TRUE can_buckle = TRUE - var/open = 0 //if the lid is up - var/cistern = 0 //if the cistern bit is open - var/w_items = 0 //the combined w_class of all the items in the cistern - var/mob/living/swirlie = null //the mob being given a swirlie + buckle_lying = 0 + /// if the lid is up + var/open = 0 + /// if the cistern bit is open + var/cistern = 0 + /// the combined w_class of all the items in the cistern + var/w_items = 0 + /// the mob being given a swirlie + var/mob/living/swirlie = null var/list/buckling_y = list("north" = 1, "south" = 4, "east" = 0, "west" = 0) var/list/buckling_x = list("north" = 0, "south" = 0, "east" = -5, "west" = 4) var/atom/movable/overlay/cistern_overlay - /obj/structure/toilet/Initialize() . = ..() open = round(rand(0, 1)) @@ -28,6 +30,7 @@ vis_contents += cistern_overlay update_icon() + /obj/structure/toilet/attack_hand(mob/living/user as mob) if(buckled_mob) manual_unbuckle(user) @@ -68,7 +71,6 @@ flick("cistern[cistern]_flush", cistern_overlay) - /obj/structure/toilet/send_buckling_message(mob/M, mob/user) if (M == user) to_chat(M, SPAN_NOTICE("You seat yourself onto the toilet")) @@ -76,10 +78,10 @@ to_chat(user, SPAN_NOTICE("[M] has been seated onto the toilet by [user].")) to_chat(M, SPAN_NOTICE("You have been seated onto the toilet by [user].")) + /obj/structure/toilet/afterbuckle(mob/M) . = ..() - if(. && buckled_mob == M) var/direction = dir2text(dir) M.pixel_y = buckling_y[direction] + pixel_y @@ -105,7 +107,6 @@ M.overlays -= image("toilet00") - /obj/structure/toilet/verb/flip_lid() set name = "Flip lid" set category = "Object" @@ -115,13 +116,13 @@ update_icon() - /obj/structure/toilet/update_icon() icon_state = "toilet[open][cistern]" cistern_overlay.icon_state = "cistern[cistern]" + /obj/structure/toilet/attackby(obj/item/I, mob/living/user) - if(istype(I, /obj/item/tool/crowbar)) + if(HAS_TRAIT(I, TRAIT_TOOL_CROWBAR)) to_chat(user, SPAN_NOTICE("You start to [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"].")) playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 25, 1) if(do_after(user, 30, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) @@ -150,7 +151,7 @@ GM.apply_damage(5, OXY) swirlie = null else - user.visible_message(SPAN_DANGER("[user] slams [GM.name] into the [src]!"), SPAN_NOTICE("You slam [GM.name] into the [src]!")) + user.visible_message(SPAN_DANGER("[user] slams [GM.name] into [src]!"), SPAN_NOTICE("You slam [GM.name] into [src]!")) GM.apply_damage(8, BRUTE) else to_chat(user, SPAN_NOTICE("You need a tighter grip.")) @@ -167,378 +168,3 @@ w_items += I.w_class to_chat(user, "You carefully place \the [I] into the cistern.") return - - - -/obj/structure/urinal - name = "urinal" - desc = "The HU-452, an experimental urinal." - icon = 'icons/obj/structures/props/watercloset.dmi' - icon_state = "urinal" - density = FALSE - anchored = TRUE - -/obj/structure/urinal/attackby(obj/item/I, mob/living/user) - if(istype(I, /obj/item/grab)) - if(isxeno(user)) return - var/obj/item/grab/G = I - if(isliving(G.grabbed_thing)) - var/mob/living/GM = G.grabbed_thing - if(user.grab_level > GRAB_PASSIVE) - if(!GM.loc == get_turf(src)) - to_chat(user, SPAN_NOTICE("[GM.name] needs to be on the urinal.")) - return - user.visible_message(SPAN_DANGER("[user] slams [GM.name] into the [src]!"), SPAN_NOTICE("You slam [GM.name] into the [src]!")) - GM.apply_damage(8, BRUTE) - else - to_chat(user, SPAN_NOTICE("You need a tighter grip.")) - - - -/obj/structure/machinery/shower - name = "shower" - desc = "The HS-451. Installed in the 2050s by the Weyland Hygiene Division." - icon = 'icons/obj/structures/props/watercloset.dmi' - icon_state = "shower" - density = FALSE - anchored = TRUE - use_power = USE_POWER_NONE - var/on = 0 - var/obj/effect/mist/mymist = null - var/ismist = 0 //needs a var so we can make it linger~ - var/watertemp = "normal" //freezing, normal, or boiling - var/mobpresent = 0 //true if there is a mob on the shower's loc, this is to ease process() - var/is_washing = 0 - -/obj/structure/machinery/shower/Initialize() - . = ..() - create_reagents(2) - -//add heat controls? when emagged, you can freeze to death in it? - -/obj/effect/mist - name = "mist" - icon = 'icons/obj/structures/props/watercloset.dmi' - icon_state = "mist" - layer = FLY_LAYER - anchored = TRUE - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - -/obj/structure/machinery/shower/attack_hand(mob/M as mob) - on = !on - update_icon() - if(on) - start_processing() - if (M.loc == loc) - wash(M) - check_heat(M) - for (var/atom/movable/G in src.loc) - G.clean_blood() - else - stop_processing() - -/obj/structure/machinery/shower/attackby(obj/item/I as obj, mob/user as mob) - if(I.type == /obj/item/device/analyzer) - to_chat(user, SPAN_NOTICE("The water temperature seems to be [watertemp].")) - if(HAS_TRAIT(I, TRAIT_TOOL_WRENCH)) - to_chat(user, SPAN_NOTICE("You begin to adjust the temperature valve with \the [I].")) - if(do_after(user, 50, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - switch(watertemp) - if("normal") - watertemp = "freezing" - if("freezing") - watertemp = "boiling" - if("boiling") - watertemp = "normal" - user.visible_message(SPAN_NOTICE("[user] adjusts the shower with \the [I]."), SPAN_NOTICE("You adjust the shower with \the [I].")) - add_fingerprint(user) - -/obj/structure/machinery/shower/update_icon() //this is terribly unreadable, but basically it makes the shower mist up - overlays.Cut() //once it's been on for a while, in addition to handling the water overlay. - QDEL_NULL(mymist) - - if(on) - overlays += image('icons/obj/structures/props/watercloset.dmi', src, "water", MOB_LAYER + 1, dir) - if(watertemp == "freezing") - return - if(!ismist) - spawn(50) - if(src && on) - ismist = 1 - mymist = new /obj/effect/mist(loc) - else - ismist = 1 - mymist = new /obj/effect/mist(loc) - else if(ismist) - ismist = 1 - mymist = new /obj/effect/mist(loc) - spawn(250) - if(src && !on) - QDEL_NULL(mymist) - ismist = 0 - -/obj/structure/machinery/shower/Crossed(atom/movable/O) - ..() - wash(O) - if(ismob(O)) - mobpresent++ - check_heat(O) - -/obj/structure/machinery/shower/Uncrossed(atom/movable/O) - if(ismob(O)) - mobpresent-- - ..() - -//Yes, showers are super powerful as far as washing goes. -/obj/structure/machinery/shower/proc/wash(atom/movable/O as obj|mob) - if(!on) return - - - if(isliving(O)) - var/mob/living/L = O - L.ExtinguishMob() - L.fire_stacks = -20 //Douse ourselves with water to avoid fire more easily - to_chat(L, SPAN_WARNING("You've been drenched in water!")) - if(iscarbon(O)) - var/mob/living/carbon/M = O - if(M.r_hand) - M.r_hand.clean_blood() - if(M.l_hand) - M.l_hand.clean_blood() - if(M.back) - if(M.back.clean_blood()) - M.update_inv_back(0) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/washgloves = 1 - var/washshoes = 1 - var/washmask = 1 - var/washears = 1 - var/washglasses = 1 - - if(H.wear_suit) - washgloves = !(H.wear_suit.flags_inv_hide & HIDEGLOVES) - washshoes = !(H.wear_suit.flags_inv_hide & HIDESHOES) - - if(H.head) - washmask = !(H.head.flags_inv_hide & HIDEMASK) - washglasses = !(H.head.flags_inv_hide & HIDEEYES) - washears = !(H.head.flags_inv_hide & HIDEEARS) - - if(H.wear_mask) - if (washears) - washears = !(H.wear_mask.flags_inv_hide & HIDEEARS) - if (washglasses) - washglasses = !(H.wear_mask.flags_inv_hide & HIDEEYES) - - if(H.head) - if(H.head.clean_blood()) - H.update_inv_head() - if(H.wear_suit) - if(H.wear_suit.clean_blood()) - H.update_inv_wear_suit() - else if(H.w_uniform) - if(H.w_uniform.clean_blood()) - H.update_inv_w_uniform() - if(H.gloves && washgloves) - if(H.gloves.clean_blood()) - H.update_inv_gloves() - if(H.shoes && washshoes) - if(H.shoes.clean_blood()) - H.update_inv_shoes() - if(H.wear_mask && washmask) - if(H.wear_mask.clean_blood()) - H.update_inv_wear_mask() - if(H.glasses && washglasses) - if(H.glasses.clean_blood()) - H.update_inv_glasses() - if((H.wear_l_ear || H.wear_r_ear) && washears) - if((H.wear_l_ear && H.wear_l_ear.clean_blood()) ||(H.wear_r_ear && H.wear_r_ear.clean_blood())) - H.update_inv_ears() - if(H.belt) - if(H.belt.clean_blood()) - H.update_inv_belt() - H.clean_blood(washshoes) - else - if(M.wear_mask) //if the mob is not human, it cleans the mask without asking for bitflags - if(M.wear_mask.clean_blood()) - M.update_inv_wear_mask() - M.clean_blood() - else - O.clean_blood() - - if(isturf(loc)) - var/turf/tile = loc - tile.clean_blood() - for(var/obj/effect/E in tile) - if(istype(E,/obj/effect/decal/cleanable) || istype(E,/obj/effect/overlay)) - qdel(E) - -/obj/structure/machinery/shower/process() - if(!on) return - wash_floor() - if(!mobpresent) return - for(var/mob/living/carbon/C in loc) - check_heat(C) - -/obj/structure/machinery/shower/proc/wash_floor() - if(!ismist && is_washing) - return - is_washing = 1 - var/turf/T = get_turf(src) -// reagents.add_reagent("water", 2) - T.clean(src) - addtimer(VARSET_CALLBACK(src, is_washing, FALSE), 10 SECONDS) - -/obj/structure/machinery/shower/proc/check_heat(mob/M as mob) - if(!on || watertemp == "normal") return - if(iscarbon(M)) - var/mob/living/carbon/C = M - - if(watertemp == "freezing") - C.bodytemperature = max(80, C.bodytemperature - 80) - C.recalculate_move_delay = TRUE - to_chat(C, SPAN_WARNING("The water is freezing!")) - return - if(watertemp == "boiling") - C.bodytemperature = min(500, C.bodytemperature + 35) - C.recalculate_move_delay = TRUE - C.apply_damage(5, BURN) - to_chat(C, SPAN_DANGER("The water is searing!")) - return - - - -/obj/item/toy/bikehorn/rubberducky - name = "rubber ducky" - desc = "Rubber ducky you're so fine, you make bathtime lots of fuuun. Rubber ducky I'm awfully fooooond of yooooouuuu~" //thanks doohl - icon = 'icons/obj/structures/props/watercloset.dmi' - icon_state = "rubberducky" - item_state = "rubberducky" - - - -/obj/structure/sink - name = "sink" - icon = 'icons/obj/structures/props/watercloset.dmi' - icon_state = "sink_emptied_animation" - desc = "A sink used for washing one's hands and face." - anchored = TRUE - var/busy = FALSE //Something's being washed at the moment - -/obj/structure/sink/Initialize() - . = ..() - if(prob(50)) - icon_state = "sink_emptied" - - - -/obj/structure/sink/proc/stop_flow() //sets sink animation to normal sink (without running water) - - if(prob(50)) - icon_state = "sink_emptied_animation" - else - icon_state = "sink_emptied" - flick("sink_animation_empty", src) - - - -/obj/structure/sink/attack_hand(mob/user) - if(isRemoteControlling(user)) - return - - if(!Adjacent(user)) - return - - if(busy) - to_chat(user, SPAN_DANGER("Someone's already washing here.")) - return - - to_chat(usr, SPAN_NOTICE(" You start washing your hands.")) - flick("sink_animation_fill", src) //<- play the filling animation then automatically switch back to the loop - icon_state = "sink_animation_fill_loop" //<- set it to the loop - addtimer(CALLBACK(src, PROC_REF(stop_flow)), 6 SECONDS) - playsound(loc, 'sound/effects/sinkrunning.ogg', 25, TRUE) - - busy = TRUE - sleep(40) - busy = FALSE - - if(!Adjacent(user)) return //Person has moved away from the sink - - user.clean_blood() - if(ishuman(user)) - user:update_inv_gloves() - for(var/mob/V in viewers(src, null)) - V.show_message(SPAN_NOTICE("[user] washes their hands using \the [src]."), SHOW_MESSAGE_VISIBLE) - - -/obj/structure/sink/attackby(obj/item/O as obj, mob/user as mob) - if(busy) - to_chat(user, SPAN_DANGER("Someone's already washing here.")) - return - - var/obj/item/reagent_container/RG = O - if (istype(RG) && RG.is_open_container()) - RG.reagents.add_reagent("water", min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) - user.visible_message(SPAN_NOTICE("[user] fills \the [RG] using \the [src]."),SPAN_NOTICE("You fill \the [RG] using \the [src].")) - return - - else if (istype(O, /obj/item/weapon/baton)) - var/obj/item/weapon/baton/B = O - if(B.bcell) - if(B.bcell.charge > 0 && B.status == 1) - flick("baton_active", src) - user.apply_effect(10, STUN) - user.stuttering = 10 - user.apply_effect(10, WEAKEN) - if(isrobot(user)) - var/mob/living/silicon/robot/R = user - R.cell.charge -= 20 - else - B.deductcharge(B.hitcost) - user.visible_message( \ - SPAN_DANGER("[user] was stunned by \his wet [O]!"), \ - SPAN_DANGER("You were stunned by your wet [O]!")) - return - - var/turf/location = user.loc - if(!isturf(location)) return - - var/obj/item/I = O - if(!I || !istype(I,/obj/item)) return - - to_chat(usr, SPAN_NOTICE(" You start washing \the [I].")) - - busy = TRUE - sleep(40) - busy = FALSE - - if(user.loc != location) return //User has moved - if(!I) return //Item's been destroyed while washing - if(user.get_active_hand() != I) return //Person has switched hands or the item in their hands - - O.clean_blood() - user.visible_message( \ - SPAN_NOTICE("[user] washes \a [I] using \the [src]."), \ - SPAN_NOTICE("You wash \a [I] using \the [src].")) - - -/obj/structure/sink/kitchen - name = "kitchen sink" - icon_state = "sink_alt" - - -/obj/structure/sink/puddle //splishy splashy ^_^ - name = "puddle" - icon_state = "puddle" - -/obj/structure/sink/puddle/attack_hand(mob/M as mob) - icon_state = "puddle-splash" - ..() - icon_state = "puddle" - -/obj/structure/sink/puddle/attackby(obj/item/O as obj, mob/user as mob) - icon_state = "puddle-splash" - ..() - icon_state = "puddle" diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 658ee44a2638..6ab70b8266f4 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -36,7 +36,7 @@ LAZYADD(debris, shardtype) update_nearby_icons() -/obj/structure/window/Destroy() +/obj/structure/window/Destroy(force) density = FALSE if(is_full_window()) update_nearby_icons() @@ -81,7 +81,7 @@ junction = 0 if(anchored) var/turf/TU - for(var/dirn in cardinal) + for(var/dirn in GLOB.cardinals) TU = get_step(src, dirn) var/obj/structure/window/W = locate() in TU if(W && W.anchored && W.density && W.legacy_full) //Only counts anchored, non-destroyed, legacy full-tile windows. @@ -117,7 +117,7 @@ if(make_hit_sound) playsound(loc, 'sound/effects/Glasshit.ogg', 25, 1) -/obj/structure/window/bullet_act(obj/item/projectile/Proj) +/obj/structure/window/bullet_act(obj/projectile/Proj) //Tasers and the like should not damage windows. var/ammo_flags = Proj.ammo.flags_ammo_behavior | Proj.projectile_override_flags if(Proj.ammo.damage_type == HALLOSS || Proj.damage <= 0 || ammo_flags == AMMO_ENERGY) @@ -353,7 +353,7 @@ //This proc is used to update the icons of nearby windows. /obj/structure/window/proc/update_nearby_icons() update_icon() - for(var/direction in cardinal) + for(var/direction in GLOB.cardinals) for(var/obj/structure/window/W in get_step(src, direction)) W.update_icon() @@ -439,8 +439,8 @@ desc = "An ultra-reinforced window designed to keep the briefing podium a secure area." icon_state = "fwindow" basestate = "fwindow" - not_damageable = 1 - not_deconstructable = 1 + not_damageable = TRUE + not_deconstructable = TRUE unslashable = TRUE unacidable = TRUE @@ -455,11 +455,8 @@ /obj/structure/window/reinforced/ultra/Initialize() . = ..() - GLOB.hijack_bustable_windows += src - -/obj/structure/window/reinforced/ultra/Destroy() - GLOB.hijack_bustable_windows -= src - return ..() + if(is_mainship_level(z)) + RegisterSignal(SSdcs, COMSIG_GLOB_HIJACK_IMPACTED, PROC_REF(deconstruct)) /obj/structure/window/reinforced/full flags_atom = FPRINT @@ -507,7 +504,7 @@ relativewall() relativewall_neighbours() -/obj/structure/window/framed/Destroy() +/obj/structure/window/framed/Destroy(force) for(var/obj/effect/alien/weeds/weedwall/window/found_weedwall in get_turf(src)) qdel(found_weedwall) var/list/turf/cardinal_neighbors = list(get_step(src, NORTH), get_step(src, SOUTH), get_step(src, EAST), get_step(src, WEST)) @@ -575,8 +572,8 @@ name = "hull window" desc = "A glass window with a special rod matrix inside a wall frame. This one was made out of exotic materials to prevent hull breaches. No way to get through here." //icon_state = "rwindow0_debug" //Uncomment to check hull in the map editor - not_damageable = 1 - not_deconstructable = 1 + not_damageable = TRUE + not_deconstructable = TRUE unslashable = TRUE unacidable = TRUE health = 1000000 //Failsafe, shouldn't matter @@ -585,11 +582,9 @@ /obj/structure/window/framed/almayer/hull/hijack_bustable/Initialize() . = ..() - GLOB.hijack_bustable_windows += src + if(is_mainship_level(z)) + RegisterSignal(SSdcs, COMSIG_GLOB_HIJACK_IMPACTED, PROC_REF(deconstruct)) -/obj/structure/window/framed/almayer/hull/hijack_bustable/Destroy() - GLOB.hijack_bustable_windows -= src - return ..() /obj/structure/window/framed/almayer/white icon_state = "white_rwindow0" basestate = "white_rwindow" @@ -598,8 +593,8 @@ /obj/structure/window/framed/almayer/white/hull name = "hull window" desc = "An ultra-reinforced window designed to keep research a secure area. This one was made out of exotic materials to prevent hull breaches. No way to get through here." - not_damageable = 1 - not_deconstructable = 1 + not_damageable = TRUE + not_deconstructable = TRUE unslashable = TRUE unacidable = TRUE health = 1000000 //Failsafe, shouldn't matter @@ -628,8 +623,8 @@ name = "hull window" desc = "A glass window with a special rod matrix inside a wall frame. This one was made out of exotic materials to prevent hull breaches. No way to get through here." //icon_state = "rwindow0_debug" //Uncomment to check hull in the map editor - not_damageable = 1 - not_deconstructable = 1 + not_damageable = TRUE + not_deconstructable = TRUE unslashable = TRUE unacidable = TRUE health = 1000000 //Failsafe, shouldn't matter @@ -720,6 +715,16 @@ reinf = 1 window_frame = /obj/structure/window_frame/strata/reinforced +/obj/structure/window/framed/strata/hull + icon_state = "strata_window0" + basestate = "strata_window" + desc = "A glass window. Something tells you this one is somehow indestructible." + not_damageable = TRUE + not_deconstructable = TRUE + unslashable = TRUE + unacidable = TRUE + health = 1000000 + //Kutjevo Windows /obj/structure/window/framed/kutjevo @@ -743,8 +748,8 @@ /obj/structure/window/framed/kutjevo/reinforced/hull icon_state = "kutjevo_window_hull" desc = "A glass window. Something tells you this one is somehow indestructible." - not_damageable = 1 - not_deconstructable = 1 + not_damageable = TRUE + not_deconstructable = TRUE unslashable = TRUE unacidable = TRUE health = 1000000 @@ -780,8 +785,8 @@ /obj/structure/window/framed/solaris/reinforced/hull desc = "A glass window. Something tells you this one is somehow indestructible." - not_damageable = 1 - not_deconstructable = 1 + not_damageable = TRUE + not_deconstructable = TRUE unslashable = TRUE unacidable = TRUE health = 1000000 @@ -812,8 +817,8 @@ /obj/structure/window/framed/dev/reinforced/hull desc = "A glass window. Something tells you this one is somehow indestructible." - not_damageable = 1 - not_deconstructable = 1 + not_damageable = TRUE + not_deconstructable = TRUE unslashable = TRUE unacidable = TRUE health = 1000000 @@ -844,26 +849,29 @@ //icon_state = "rwindow0_debug" //Uncomment to check hull in the map editor var/triggered = FALSE //indicates if the shutters have already been triggered -/obj/structure/window/framed/prison/reinforced/hull/Destroy() +/obj/structure/window/framed/prison/reinforced/hull/Destroy(force) + if(force) + return ..() spawn_shutters() - .=..() + . = ..() /obj/structure/window/framed/prison/reinforced/hull/proc/spawn_shutters(from_dir = 0) if(triggered) return triggered = TRUE - for(var/direction in cardinal) - if(direction == from_dir) continue //doesn't check backwards + for(var/direction in GLOB.cardinals) + if(direction == from_dir) + continue //doesn't check backwards for(var/obj/structure/window/framed/prison/reinforced/hull/W in get_step(src,direction) ) W.spawn_shutters(turn(direction,180)) - var/obj/structure/machinery/door/poddoor/shutters/almayer/pressure/P = new(get_turf(src)) + var/obj/structure/machinery/door/poddoor/shutters/almayer/pressure/pressure_door = new(get_turf(src)) switch(junction) if(4,5,8,9,12) - P.setDir(SOUTH) + pressure_door.setDir(SOUTH) else - P.setDir(EAST) - P.close() + pressure_door.setDir(EAST) + pressure_door.close() /obj/structure/window/framed/prison/cell name = "cell window" @@ -902,8 +910,8 @@ icon_state = "padded_cellwindow0" basestate = "padded_cellwindow" desc = "A glass window with a special rod matrix inside a wall frame. This one was made out of exotic materials to prevent hull breaches. No way to get through here." - not_damageable = 1 - not_deconstructable = 1 + not_damageable = TRUE + not_deconstructable = TRUE unacidable = TRUE health = 1000000 //Failsafe, shouldn't matter @@ -922,32 +930,60 @@ var/triggered = FALSE //indicates if the shutters have already been triggered /obj/structure/window/framed/corsat/hull/research + icon_state = "paddedresearch_rwindow0" + basestate = "paddedresearch_rwindow" + window_frame = /obj/structure/window_frame/corsat/research health = 300 /obj/structure/window/framed/corsat/hull/security + icon_state = "paddedsec_rwindow0" + basestate = "paddedsec_rwindow" + window_frame = /obj/structure/window_frame/corsat/security health = 400 -/obj/structure/window/framed/corsat/hull/Destroy() +/obj/structure/window/framed/corsat/hull/Destroy(force) + if(force) + return ..() + spawn_shutters() - .=..() + . = ..() /obj/structure/window/framed/corsat/hull/proc/spawn_shutters(from_dir = 0) if(triggered) return triggered = 1 - for(var/direction in cardinal) + for(var/direction in GLOB.cardinals) if(direction == from_dir) continue //doesn't check backwards for(var/obj/structure/window/framed/corsat/hull/W in get_step(src,direction) ) W.spawn_shutters(turn(direction,180)) - var/obj/structure/machinery/door/poddoor/shutters/almayer/pressure/P = new(get_turf(src)) + var/obj/structure/machinery/door/poddoor/shutters/almayer/pressure/pressure_door = new(get_turf(src)) switch(junction) if(4,5,8,9,12) - P.setDir(SOUTH) + pressure_door.setDir(SOUTH) else - P.setDir(EAST) + pressure_door.setDir(EAST) + + INVOKE_ASYNC(pressure_door, TYPE_PROC_REF(/obj/structure/machinery/door, close)) - INVOKE_ASYNC(P, TYPE_PROC_REF(/obj/structure/machinery/door, close)) +/obj/structure/window/framed/corsat/indestructible/ + name = "hull window" + desc = "A glass window with a special rod matrix inside a wall frame. This one has been reinforced to take almost anything the universe can throw at it." + not_damageable = TRUE + not_deconstructable = TRUE + unslashable = TRUE + unacidable = TRUE + health = 1000000 + +/obj/structure/window/framed/corsat/indestructible/research + icon_state = "paddedresearch_rwindow0" + basestate = "paddedresearch_rwindow" + window_frame = /obj/structure/window_frame/corsat/research + +/obj/structure/window/framed/corsat/indestructible/security + icon_state = "paddedsec_rwindow0" + basestate = "paddedsec_rwindow" + window_frame = /obj/structure/window_frame/corsat/security diff --git a/code/game/objects/structures/window_frame.dm b/code/game/objects/structures/window_frame.dm index 445b9a0ecb8f..2c165b424dad 100644 --- a/code/game/objects/structures/window_frame.dm +++ b/code/game/objects/structures/window_frame.dm @@ -148,7 +148,7 @@ . = ..() -/obj/structure/window_frame/bullet_act(obj/item/projectile/P) +/obj/structure/window_frame/bullet_act(obj/projectile/P) bullet_ping(P) take_damage(P.damage) return TRUE @@ -236,6 +236,12 @@ basestate = "strata_window" reinforced = TRUE +/obj/structure/window_frame/strata/hull + icon_state = "strata_window0_frame" + basestate = "strata_window" + unslashable = TRUE + unacidable = TRUE + //Kutjevo frames /obj/structure/window_frame/kutjevo diff --git a/code/game/runtimes.dm b/code/game/runtimes.dm index 1332309168a3..41c18c221ae7 100644 --- a/code/game/runtimes.dm +++ b/code/game/runtimes.dm @@ -11,7 +11,6 @@ GLOBAL_REAL(stui_init_runtimes, /list) //! Shorthand of Static Initializer errors only, for use in STUI GLOBAL_REAL(full_init_runtimes, /list) //! Full text of all Static Initializer + World Init errors, for log backfilling GLOBAL_REAL_VAR(runtime_logging_ready) //! Truthy when init is done and we don't need these shenanigans anymore -GLOBAL_REAL_VAR(init_runtimes_count) //! Count of runtimes that occured before logging is ready, for in-game reporting // Deduplication of errors via hash to reduce spamming GLOBAL_REAL(runtime_hashes, /list) @@ -24,16 +23,13 @@ GLOBAL_REAL_VAR(total_runtimes) if(!total_runtimes) total_runtimes = 0 total_runtimes += 1 - if(!init_runtimes_count) - init_runtimes_count = 0 if(!stui_init_runtimes) stui_init_runtimes = list() if(!full_init_runtimes) full_init_runtimes = list() - // If this occured during early init, we store the full error to write it to world.log when it's available + // If this occurred during early init, we store the full error to write it to world.log when it's available if(!runtime_logging_ready) - init_runtimes_count += 1 full_init_runtimes += E.desc // Runtime was already reported once, dedup it for STUI diff --git a/code/game/sim_manager/datums/simulator.dm b/code/game/sim_manager/datums/simulator.dm index 04ddb7faa088..1f1aedad8153 100644 --- a/code/game/sim_manager/datums/simulator.dm +++ b/code/game/sim_manager/datums/simulator.dm @@ -1,18 +1,21 @@ +#define GRID_CLEARING_SIZE 16 + /datum/simulator // Necessary to prevent multiple users from simulating at the same time. var/static/detonation_cooldown = 0 + var/static/detonation_cooldown_time = 2 MINUTES var/static/sim_reboot_state = TRUE - var/looking_at_simulation = FALSE - var/detonation_cooldown_time = 2 MINUTES var/dummy_mode = CLF_MODE var/obj/structure/machinery/camera/simulation/sim_camera - var/grid_clearing_size = 16 // garbage collection, var/static/list/delete_targets = list() + // list of users currently inside the simulator + var/static/list/users_in_sim = list() + /* unarmoured humans are unnencessary clutter as they tend to explode easily and litter the sim room with body parts, best left out. @@ -29,7 +32,7 @@ /datum/simulator/proc/start_watching(mob/living/user) - if(looking_at_simulation) + if(user in users_in_sim) to_chat(user, SPAN_WARNING("You are already looking at the simulation.")) return if(!sim_camera) @@ -37,17 +40,19 @@ if(!sim_camera) to_chat(user, SPAN_WARNING("GPU damaged! Unable to start simulation.")) return - if(user.client.view != world_view_size) + if(user.client.view != GLOB.world_view_size) to_chat(user, SPAN_WARNING("You're too busy looking at something else.")) return user.reset_view(sim_camera) - looking_at_simulation = TRUE + users_in_sim += user /datum/simulator/proc/stop_watching(mob/living/user) + if(!(user in users_in_sim)) + return user.unset_interaction() user.reset_view(null) user.cameraFollow = null - looking_at_simulation = FALSE + users_in_sim -= user /datum/simulator/proc/sim_turf_garbage_collection() @@ -67,8 +72,8 @@ y:2 | x: 1 2 3 4 ... 16 y:1 | x: 1 2 3 4 ... 16 */ - for (var/y_pos in 1 to grid_clearing_size)// outer y - for (var/x_pos in 1 to grid_clearing_size) // inner x + for (var/y_pos in 1 to GRID_CLEARING_SIZE)// outer y + for (var/x_pos in 1 to GRID_CLEARING_SIZE) // inner x var/turf/current_grid = locate(sim_grid_start_pos.x + x_pos,sim_grid_start_pos.y + y_pos,sim_grid_start_pos.z) current_grid.empty(/turf/open/floor/engine) @@ -101,3 +106,4 @@ addtimer(CALLBACK(src, PROC_REF(sim_turf_garbage_collection)), 30 SECONDS, TIMER_STOPPABLE) +#undef GRID_CLEARING_SIZE diff --git a/code/game/smoothwall.dm b/code/game/smoothwall.dm index a06ed7750c26..b9284639976c 100644 --- a/code/game/smoothwall.dm +++ b/code/game/smoothwall.dm @@ -13,7 +13,7 @@ var/j //second iterator var/k //third iterator (I know, that's a lot, but I'm trying to make this modular, so bear with me) - for(i in cardinal) //For all cardinal dir turfs + for(i in GLOB.cardinals) //For all cardinal dir turfs T = get_step(src, i) if(!istype(T)) continue for(j in tiles_with) //And for all types that we tile with @@ -34,7 +34,7 @@ var/j //second iterator var/atom/k //third iterator (I know, that's a lot, but I'm trying to make this modular, so bear with me) - for(i in cardinal) //For all cardinal dir turfs + for(i in GLOB.cardinals) //For all cardinal dir turfs T = get_step(src, i) if(!istype(T)) continue for(j in tiles_with) //And for all types that we tile with @@ -61,7 +61,7 @@ var/j var/k - for(i in cardinal) + for(i in GLOB.cardinals) T = get_step(src, i) if(!istype(T)) continue for(j in tiles_with) @@ -93,7 +93,7 @@ var/j var/k - for(i in cardinal) + for(i in GLOB.cardinals) T = get_step(src, i) if(!istype(T)) continue for(j in tiles_with) @@ -170,6 +170,11 @@ setDir(NORTH) /obj/structure/window/framed/handle_icon_junction(jun_1, jun_2) + if(!icon_exists(icon, "[basestate][jun_2 ? jun_2 : jun_1]")) //Missing states for 5, 6, 7, 9, 10, 11, 13, 14, 15 for the vast majority of /obj/structure/window/framed + icon_state = "[basestate]0" + junction = 0 + return + icon_state = "[basestate][jun_2 ? jun_2 : jun_1]" //Use junction 2 if possible, junction 1 otherwise. if(jun_2) junction = jun_2 @@ -177,6 +182,11 @@ junction = jun_1 /obj/structure/window_frame/handle_icon_junction(jun_1, jun_2) + if(!icon_exists(icon, "[basestate][jun_2 ? jun_2 : jun_1]_frame")) //Missing states for 5, 6, 7, 9, 10, 11, 13, 14, 15 for the vast majority of /obj/structure/window_frame + icon_state = "[basestate]0_frame" + junction = 0 + return + icon_state = "[basestate][jun_2 ? jun_2 : jun_1]_frame" //Use junction 2 if possible, junction 1 otherwise. if(jun_2) junction = jun_2 @@ -217,7 +227,7 @@ var/j //second iterator var/k //third iterator (I know, that's a lot, but I'm trying to make this modular, so bear with me) - for(i in alldirs) //For all cardinal dir turfs + for(i in GLOB.alldirs) //For all cardinal dir turfs T = get_step(src, i) if(!istype(T)) continue for(j in tiles_with) //And for all types that we tile with @@ -239,7 +249,7 @@ var/j //second iterator var/k //third iterator (I know, that's a lot, but I'm trying to make this modular, so bear with me) - for(i in alldirs) //For all cardinal dir turfs + for(i in GLOB.alldirs) //For all cardinal dir turfs T = get_step(src, i) if(!istype(T)) continue for(j in tiles_with) //And for all types that we tile with diff --git a/code/game/sound.dm b/code/game/sound.dm index 6adaab109794..f2b71d9a64c7 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -100,8 +100,8 @@ //This is the replacement for playsound_local. Use this for sending sounds directly to a client -/proc/playsound_client(client/C, soundin, atom/origin, vol = 100, random_freq, vol_cat = VOLUME_SFX, channel = 0, status, list/echo, y_s_offset, x_s_offset) - if(!istype(C) || !C.soundOutput) return FALSE +/proc/playsound_client(client/client, soundin, atom/origin, vol = 100, random_freq, vol_cat = VOLUME_SFX, channel = 0, status, list/echo, y_s_offset, x_s_offset) + if(!istype(client) || !client.soundOutput) return FALSE var/datum/sound_template/S = new() if(origin) var/turf/T = get_turf(origin) @@ -126,7 +126,7 @@ S.echo = echo S.y_s_offset = y_s_offset S.x_s_offset = x_s_offset - SSsound.queue(S, list(C)) + SSsound.queue(S, list(client)) /// Plays sound to all mobs that are map-level contents of an area /proc/playsound_area(area/A, soundin, vol = 100, channel = 0, status, vol_cat = VOLUME_SFX, list/echo, y_s_offset, x_s_offset) @@ -344,7 +344,7 @@ S = pick('sound/voice/alien_queen_command.ogg','sound/voice/alien_queen_command2.ogg','sound/voice/alien_queen_command3.ogg') // Human if("male_scream") - S = pick('sound/voice/human_male_scream_1.ogg','sound/voice/human_male_scream_2.ogg','sound/voice/human_male_scream_3.ogg','sound/voice/human_male_scream_4.ogg',5;'sound/voice/human_male_scream_5.ogg',5;'sound/voice/human_jackson_scream.ogg',5;'sound/voice/human_ack_scream.ogg') + S = pick('sound/voice/human_male_scream_1.ogg','sound/voice/human_male_scream_2.ogg','sound/voice/human_male_scream_3.ogg','sound/voice/human_male_scream_4.ogg',5;'sound/voice/human_male_scream_5.ogg',5;'sound/voice/human_jackson_scream.ogg',5;'sound/voice/human_ack_scream.ogg','sound/voice/human_male_scream_6.ogg') if("male_pain") S = pick('sound/voice/human_male_pain_1.ogg','sound/voice/human_male_pain_2.ogg','sound/voice/human_male_pain_3.ogg',5;'sound/voice/tomscream.ogg',5;'sound/voice/human_bobby_pain.ogg',5;'sound/voice/human_tantrum_scream.ogg', 5;'sound/voice/human_male_pain_rare_1.ogg') if("male_fragout") diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index dcc854bfa71d..893071c758ed 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -9,39 +9,33 @@ #define KILL_MENDOZA -1 GLOBAL_LIST_EMPTY_TYPED(asrs_empty_space_tiles_list, /turf/open/floor/almayer/empty) +GLOBAL_SUBTYPE_PATHS_LIST_INDEXED(supply_packs_types, /datum/supply_packs, name) +GLOBAL_REFERENCE_LIST_INDEXED_SORTED(supply_packs_datums, /datum/supply_packs, type) -var/datum/controller/supply/supply_controller = new() +GLOBAL_DATUM_INIT(supply_controller, /datum/controller/supply, new()) /area/supply ceiling = CEILING_METAL -/area/supply/station //DO NOT TURN THE lighting_use_dynamic STUFF ON FOR SHUTTLES. IT BREAKS THINGS. +/area/supply/station name = "Supply Shuttle" icon_state = "shuttle3" - luminosity = 1 - lighting_use_dynamic = 0 requires_power = 0 ambience_exterior = AMBIENCE_ALMAYER -/area/supply/dock //DO NOT TURN THE lighting_use_dynamic STUFF ON FOR SHUTTLES. IT BREAKS THINGS. +/area/supply/dock name = "Supply Shuttle" icon_state = "shuttle3" - luminosity = 1 - lighting_use_dynamic = 0 requires_power = 0 -/area/supply/station_vehicle //DO NOT TURN THE lighting_use_dynamic STUFF ON FOR SHUTTLES. IT BREAKS THINGS. +/area/supply/station_vehicle name = "Vehicle ASRS" icon_state = "shuttle3" - luminosity = 1 - lighting_use_dynamic = 0 requires_power = 0 -/area/supply/dock_vehicle //DO NOT TURN THE lighting_use_dynamic STUFF ON FOR SHUTTLES. IT BREAKS THINGS. +/area/supply/dock_vehicle name = "Vehicle ASRS" icon_state = "shuttle3" - luminosity = 1 - lighting_use_dynamic = 0 requires_power = 0 //SUPPLY PACKS MOVED TO /code/defines/obj/supplypacks.dm @@ -110,17 +104,18 @@ var/datum/controller/supply/supply_controller = new() circuit = /obj/item/circuitboard/computer/supplycomp var/temp = null var/reqtime = 0 //Cooldown for requisitions - Quarxink - var/can_order_contraband = 0 + var/can_order_contraband = FALSE + var/black_market_lockout = FALSE var/last_viewed_group = "categories" var/first_time = TRUE /obj/structure/machinery/computer/supplycomp/Initialize() . = ..() - LAZYADD(supply_controller.bound_supply_computer_list, src) + LAZYADD(GLOB.supply_controller.bound_supply_computer_list, src) /obj/structure/machinery/computer/supplycomp/Destroy() . = ..() - LAZYREMOVE(supply_controller.bound_supply_computer_list, src) + LAZYREMOVE(GLOB.supply_controller.bound_supply_computer_list, src) /obj/structure/machinery/computer/supplycomp/attackby(obj/item/hit_item, mob/user) if(istype(hit_item, /obj/item/spacecash)) @@ -130,7 +125,7 @@ var/datum/controller/supply/supply_controller = new() to_chat(user, SPAN_NOTICE("You find a small horizontal slot at the bottom of the console. You try to feed \the [slotted_cash] into it, but it rejects it! Maybe it's counterfeit?")) return to_chat(user, SPAN_NOTICE("You find a small horizontal slot at the bottom of the console. You feed \the [slotted_cash] into it..")) - supply_controller.black_market_points += slotted_cash.worth + GLOB.supply_controller.black_market_points += slotted_cash.worth qdel(slotted_cash) else to_chat(user, SPAN_NOTICE("You find a small horizontal slot at the bottom of the console. You try to feed \the [hit_item] into it, but it's seemingly blocked off from the inside.")) @@ -139,14 +134,20 @@ var/datum/controller/supply/supply_controller = new() /obj/structure/machinery/computer/supplycomp/proc/toggle_contraband(contraband_enabled = FALSE) can_order_contraband = contraband_enabled - for(var/obj/structure/machinery/computer/supplycomp/computer as anything in supply_controller.bound_supply_computer_list) + for(var/obj/structure/machinery/computer/supplycomp/computer as anything in GLOB.supply_controller.bound_supply_computer_list) if(computer.can_order_contraband) - supply_controller.black_market_enabled = TRUE + GLOB.supply_controller.black_market_enabled = TRUE return - supply_controller.black_market_enabled = FALSE + GLOB.supply_controller.black_market_enabled = FALSE //If any computers are able to order contraband, it's enabled. Otherwise, it's disabled! +/// Prevents use of black market, even if it is otherwise enabled. If any computer has black market locked out, it applies across all of the currently established ones. +/obj/structure/machinery/computer/supplycomp/proc/lock_black_market(market_locked = FALSE) + for(var/obj/structure/machinery/computer/supplycomp/computer as anything in GLOB.supply_controller.bound_supply_computer_list) + if(market_locked) + computer.black_market_lockout = TRUE + /obj/structure/machinery/computer/ordercomp name = "Supply ordering console" icon = 'icons/obj/structures/machinery/computer.dmi' @@ -191,11 +192,11 @@ var/datum/controller/supply/supply_controller = new() var/list/data = list() var/list/squad_list = list() - for(var/datum/squad/S in RoleAuthority.squads) - if(S.active && S.faction == faction && S.color) + for(var/datum/squad/current_squad in GLOB.RoleAuthority.squads) + if(current_squad.active && current_squad.faction == faction && current_squad.equipment_color) squad_list += list(list( - "squad_name" = S.name, - "squad_color" = squad_colors[S.color] + "squad_name" = current_squad.name, + "squad_color" = current_squad.equipment_color )) data["can_pick_squad"] = can_pick_squad @@ -324,7 +325,7 @@ var/datum/controller/supply/supply_controller = new() M.count_niche_stat(STATISTICS_NICHE_CRATES) playsound(C.loc,'sound/effects/bamf.ogg', 50, 1) //Ehh - var/obj/structure/droppod/supply/pod = new() + var/obj/structure/droppod/supply/pod = new(null, C) C.forceMove(pod) pod.launch(T) visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("'[C.name]' supply drop launched! Another launch will be available in five minutes.")]") @@ -364,10 +365,12 @@ var/datum/controller/supply/supply_controller = new() /datum/controller/supply var/processing = 1 - var/processing_interval = 300 + var/processing_interval = 30 SECONDS var/iteration = 0 - //supply points - var/points = 120 + /// Current supply points + var/points = 0 + /// Multiplier to the amount of points awarded based on marine scale + var/points_scale = 120 var/points_per_process = 1.5 var/points_per_slip = 1 var/points_per_crate = 2 @@ -377,22 +380,27 @@ var/datum/controller/supply/supply_controller = new() var/black_market_points = 5 // 5 to start with to buy the scanner. ///If the black market is enabled. var/black_market_enabled = FALSE + ///How close the CMB is to investigating | 100 sends an ERT + var/black_market_heat = 0 - /// This contains a list of all typepaths of sold items and how many times they've been recieved. Used to calculate points dropoff (Can't send down a hundred blue souto cans for infinite points) + /// This contains a list of all typepaths of sold items and how many times they've been received. Used to calculate points dropoff (Can't send down a hundred blue souto cans for infinite points) var/list/black_market_sold_items /// If the players killed him by sending a live hostile below.. this goes false and they can't order any more contraband. var/mendoza_status = TRUE - var/base_random_crate_interval = 10 //Every how many processing intervals do we get a random crates. + /// How many processing intervals do we get random crates for each pool. Currently only [ASRS_POOL_MAIN] gets scaled amount of crates. + var/list/base_random_crate_intervals = list(ASRS_POOL_MAIN = 10, ASRS_POOL_FOOD = 60) + /// How many partial crates are stored in ASRS per pool to smooth amount given out + var/list/random_crates_carry = list() + /// Pools mapped to list of random ASRS packs that belong to it + var/list/asrs_supply_packs_by_pool var/crate_iteration = 0 //control var/ordernum var/list/shoppinglist = list() var/list/requestlist = list() - var/list/supply_packs = list() - var/list/random_supply_packs = list() //shuttle movement var/datum/shuttle/ferry/supply/shuttle @@ -431,72 +439,91 @@ var/datum/controller/supply/supply_controller = new() var/tank_points = 0 /datum/controller/supply/New() + . = ..() ordernum = rand(1,9000) LAZYINITLIST(black_market_sold_items) + asrs_supply_packs_by_pool = list() + for(var/subtype in subtypesof(/datum/supply_packs_asrs)) + var/datum/supply_packs_asrs/initial_datum = subtype + var/pool = initial(initial_datum.pool) + if(!pool) + continue + LAZYADD(asrs_supply_packs_by_pool[pool], new subtype()) + random_crates_carry = list() + for(var/pool in base_random_crate_intervals) + random_crates_carry[pool] = 0 + +/datum/controller/supply/proc/start_processing() + START_PROCESSING(SSslowobj, src) //Supply shuttle ticker - handles supply point regenertion and shuttle travelling between centcomm and the station -/datum/controller/supply/process() - for(var/typepath in subtypesof(/datum/supply_packs)) - var/datum/supply_packs/supply_pack = new typepath() - if(supply_pack.group == "ASRS") - random_supply_packs += supply_pack - else - supply_packs[supply_pack.name] = supply_pack - spawn(0) - set background = 1 - while(1) - if(processing) - iteration++ - points += points_per_process - if(iteration >= 20 && iteration % base_random_crate_interval == 0 && supply_controller.shoppinglist.len <= 20) - add_random_crates() - crate_iteration++ - sleep(processing_interval) +/datum/controller/supply/process(delta_time) + iteration++ + points += points_per_process + if(iteration < 20) + return + for(var/pool in base_random_crate_intervals) + var/interval = base_random_crate_intervals[pool] + if(interval && iteration % interval == 0 && shoppinglist.len <= 20) + add_random_crates(pool) + crate_iteration++ //This adds function adds the amount of crates that calculate_crate_amount returns -/datum/controller/supply/proc/add_random_crates() - for(var/I=0, I= 1) + var/additional_crates = round(total_carry) + random_crates_carry[pool] -= additional_crates + unit_crate_amount += additional_crates + + return unit_crate_amount //Here we pick what crate type to send to the marines. //This is a weighted pick based upon their cost. //Their cost will go up if the crate is picked -/datum/controller/supply/proc/add_random_crate() - var/datum/supply_packs/C = supply_controller.pick_weighted_crate(random_supply_packs) - if(C == null) +/datum/controller/supply/proc/add_random_crate(pool) + if(!asrs_supply_packs_by_pool[pool]) + return + var/datum/supply_packs_asrs/supply_info = pick_weighted_crate(asrs_supply_packs_by_pool[pool]) + if(!GLOB.supply_packs_datums[supply_info.reference_package]) return - C.cost = round(C.cost * ASRS_COST_MULTIPLIER) //We still do this to raise the weight + + supply_info.cost = round(supply_info.cost * ASRS_COST_MULTIPLIER) //We still do this to raise the weight //We have to create a supply order to make the system spawn it. Here we transform a crate into an order. var/datum/supply_order/supply_order = new /datum/supply_order() - supply_order.ordernum = supply_controller.ordernum - supply_order.object = C + supply_order.ordernum = ordernum++ + supply_order.object = GLOB.supply_packs_datums[supply_info.reference_package] supply_order.orderedby = "ASRS" supply_order.approvedby = "ASRS" //We add the order to the shopping list - supply_controller.shoppinglist += supply_order + shoppinglist += supply_order //Here we weigh the crate based upon it's cost -/datum/controller/supply/proc/pick_weighted_crate(list/cratelist) - var/weighted_crate_list[] - for(var/datum/supply_packs/crate in cratelist) - var/crate_to_add[0] +/datum/controller/supply/proc/pick_weighted_crate(list/datum/supply_packs_asrs/cratelist) + var/list/datum/supply_packs_asrs/weighted_crate_list = list() + for(var/datum/supply_packs_asrs/crate in cratelist) var/weight = (round(10000/crate.cost)) - if(iteration > crate.iteration_needed) - crate_to_add[crate] = weight - weighted_crate_list += crate_to_add + weighted_crate_list[crate] = weight return pickweight(weighted_crate_list) //To stop things being sent to centcomm which should not be sent to centcomm. Recursively checks for these types. @@ -585,8 +612,8 @@ var/datum/controller/supply/supply_controller = new() if(order.object.contraband == TRUE && prob(5)) // Mendoza loaded the wrong order in. What a dunce! var/list/contraband_list - for(var/supply_name in supply_controller.supply_packs) - var/datum/supply_packs/supply_pack = supply_controller.supply_packs[supply_name] + for(var/supply_type in GLOB.supply_packs_datums) + var/datum/supply_packs/supply_pack = GLOB.supply_packs_datums[supply_type] if(supply_pack.contraband == FALSE) continue LAZYADD(contraband_list, supply_pack) @@ -640,9 +667,12 @@ var/datum/controller/supply/supply_controller = new() var/list/packages -/obj/item/paper/manifest/read_paper(mob/user) +/obj/item/paper/manifest/read_paper(mob/user, scramble = FALSE) + var/paper_info = info + if(scramble) + paper_info = stars_decode_html(info) // Tossing ref in widow id as this allows us to read multiple manifests at same time - show_browser(user, "[info][stamps]", null, "manifest\ref[src]", "size=550x650") + show_browser(user, "[paper_info][stamps]", null, "manifest\ref[src]", "size=550x650") onclose(user, "manifest\ref[src]") /obj/item/paper/manifest/proc/generate_contents() @@ -706,10 +736,10 @@ var/datum/controller/supply/supply_controller = new() if(temp) dat = temp else - var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle + var/datum/shuttle/ferry/supply/shuttle = GLOB.supply_controller.shuttle if (shuttle) dat += {"Location: [shuttle.has_arrive_time() ? "Raising platform":shuttle.at_station() ? "Raised":"Lowered"]
        -
        Supply budget: $[supply_controller.points * SUPPLY_TO_MONEY_MUPLTIPLIER]
        +
        Supply budget: $[GLOB.supply_controller.points * SUPPLY_TO_MONEY_MUPLTIPLIER]

        \nRequest items

        View approved orders

        View requests

        @@ -722,7 +752,7 @@ var/datum/controller/supply/supply_controller = new() if(..()) return - if( isturf(loc) && (in_range(src, usr) || ishighersilicon(usr)) ) + if( isturf(loc) && (in_range(src, usr) || isSilicon(usr)) ) usr.set_interaction(src) if(href_list["order"]) @@ -730,20 +760,21 @@ var/datum/controller/supply/supply_controller = new() //all_supply_groups //Request what? last_viewed_group = "categories" - temp = "Supply budget: $[supply_controller.points * SUPPLY_TO_MONEY_MUPLTIPLIER]
        " + temp = "Supply budget: $[GLOB.supply_controller.points * SUPPLY_TO_MONEY_MUPLTIPLIER]
        " temp += "Main Menu


        " temp += "Select a category

        " - for(var/supply_group_name in supply_controller.all_supply_groups) + for(var/supply_group_name in GLOB.supply_controller.all_supply_groups) temp += "[supply_group_name]
        " else last_viewed_group = href_list["order"] - temp = "Supply budget: $[supply_controller.points * SUPPLY_TO_MONEY_MUPLTIPLIER]
        " + temp = "Supply budget: $[GLOB.supply_controller.points * SUPPLY_TO_MONEY_MUPLTIPLIER]
        " temp += "Back to all categories


        " temp += "Request from: [last_viewed_group]

        " - for(var/supply_name in supply_controller.supply_packs ) - var/datum/supply_packs/N = supply_controller.supply_packs[supply_name] - if(N.contraband || N.group != last_viewed_group || !N.buyable) continue //Have to send the type instead of a reference to - temp += "[supply_name] Cost: $[round(N.cost) * SUPPLY_TO_MONEY_MUPLTIPLIER]
        " //the obj because it would get caught by the garbage + for(var/supply_type in GLOB.supply_packs_datums) + var/datum/supply_packs/supply_pack = GLOB.supply_packs_datums[supply_type] + if(supply_pack.contraband || supply_pack.group != last_viewed_group || !supply_pack.buyable) + continue //Have to send the type instead of a reference to + temp += "[supply_pack.name] Cost: $[round(supply_pack.cost) * SUPPLY_TO_MONEY_MUPLTIPLIER]
        " //the obj because it would get caught by the garbage else if (href_list["doorder"]) if(world.time < reqtime) @@ -752,8 +783,10 @@ var/datum/controller/supply/supply_controller = new() return //Find the correct supply_pack datum - var/datum/supply_packs/supply_pack = supply_controller.supply_packs[href_list["doorder"]] - if(!istype(supply_pack)) return + var/supply_pack_type = GLOB.supply_packs_types[href_list["doorder"]] + if(!supply_pack_type) + return + var/datum/supply_packs/supply_pack = GLOB.supply_packs_datums[supply_pack_type] if(supply_pack.contraband || !supply_pack.buyable) return @@ -769,14 +802,14 @@ var/datum/controller/supply/supply_controller = new() var/mob/living/carbon/human/H = usr idname = H.get_authentification_name() idrank = H.get_assignment() - else if(ishighersilicon(usr)) + else if(isSilicon(usr)) idname = usr.real_name - supply_controller.ordernum++ + GLOB.supply_controller.ordernum++ var/obj/item/paper/reqform = new /obj/item/paper(loc) reqform.name = "Requisition Form - [supply_pack.name]" - reqform.info += "

        [station_name] Supply Requisition Form


        " - reqform.info += "INDEX: #[supply_controller.ordernum]
        " + reqform.info += "

        [MAIN_SHIP_NAME] Supply Requisition Form


        " + reqform.info += "INDEX: #[GLOB.supply_controller.ordernum]
        " reqform.info += "REQUESTED BY: [idname]
        " reqform.info += "RANK: [idrank]
        " reqform.info += "REASON: [reason]
        " @@ -792,24 +825,24 @@ var/datum/controller/supply/supply_controller = new() //make our supply_order datum var/datum/supply_order/supply_order = new /datum/supply_order() - supply_order.ordernum = supply_controller.ordernum + supply_order.ordernum = GLOB.supply_controller.ordernum supply_order.object = supply_pack supply_order.orderedby = idname - supply_controller.requestlist += supply_order + GLOB.supply_controller.requestlist += supply_order temp = "Thanks for your request. The cargo team will process it as soon as possible.
        " temp += "
        Back Main Menu" else if (href_list["vieworders"]) temp = "Current approved orders:

        " - for(var/S in supply_controller.shoppinglist) + for(var/S in GLOB.supply_controller.shoppinglist) var/datum/supply_order/SO = S temp += "[SO.object.name] approved by [SO.approvedby]
        " temp += "
        OK" else if (href_list["viewrequests"]) temp = "Current requests:

        " - for(var/S in supply_controller.requestlist) + for(var/S in GLOB.supply_controller.requestlist) var/datum/supply_order/SO = S temp += "#[SO.ordernum] - [SO.object.name] requested by [SO.orderedby]
        " temp += "
        OK" @@ -835,7 +868,7 @@ var/datum/controller/supply/supply_controller = new() if (temp) dat = temp else - var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle + var/datum/shuttle/ferry/supply/shuttle = GLOB.supply_controller.shuttle if (shuttle) dat += "\nPlatform position: " if (shuttle.has_arrive_time()) @@ -869,7 +902,7 @@ var/datum/controller/supply/supply_controller = new() dat += "
        \n
        " - dat += {"
        \nSupply budget: $[supply_controller.points * SUPPLY_TO_MONEY_MUPLTIPLIER]
        \n
        + dat += {"
        \nSupply budget: $[GLOB.supply_controller.points * SUPPLY_TO_MONEY_MUPLTIPLIER]
        \n
        \nOrder items
        \n
        \nView requests
        \n
        \nView orders
        \n
        @@ -881,20 +914,17 @@ var/datum/controller/supply/supply_controller = new() /obj/structure/machinery/computer/supplycomp/Topic(href, href_list) if(!is_mainship_level(z)) return - if(!supply_controller) - world.log << "## ERROR: Eek. The supply_controller controller datum is missing somehow." + if(!GLOB.supply_controller) + world.log << "## ERROR: Eek. The GLOB.supply_controller controller datum is missing somehow." return - var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle + var/datum/shuttle/ferry/supply/shuttle = GLOB.supply_controller.shuttle if (!shuttle) world.log << "## ERROR: Eek. The supply/shuttle datum is missing somehow." return if(..()) return - if(ismaintdrone(usr)) - return - - if(isturf(loc) && ( in_range(src, usr) || ishighersilicon(usr) ) ) + if(isturf(loc) && in_range(src, usr) ) usr.set_interaction(src) //Calling the shuttle @@ -922,10 +952,10 @@ var/datum/controller/supply/supply_controller = new() //all_supply_groups //Request what? last_viewed_group = "categories" - temp = "Supply budget: $[supply_controller.points * SUPPLY_TO_MONEY_MUPLTIPLIER]
        " + temp = "Supply budget: $[GLOB.supply_controller.points * SUPPLY_TO_MONEY_MUPLTIPLIER]
        " temp += "Main Menu


        " temp += "Select a category

        " - for(var/supply_group_name in supply_controller.all_supply_groups) + for(var/supply_group_name in GLOB.supply_controller.all_supply_groups) temp += "[supply_group_name]
        " if(can_order_contraband) temp += "[SPAN_DANGER("$E4RR301¿")]
        " @@ -933,17 +963,17 @@ var/datum/controller/supply/supply_controller = new() last_viewed_group = href_list["order"] if(last_viewed_group == "Black Market") handle_black_market(temp) - else if(last_viewed_group in supply_controller.contraband_supply_groups) + else if(last_viewed_group in GLOB.supply_controller.contraband_supply_groups) handle_black_market_groups() else - temp = "Supply budget: $[supply_controller.points * SUPPLY_TO_MONEY_MUPLTIPLIER]
        " + temp = "Supply budget: $[GLOB.supply_controller.points * SUPPLY_TO_MONEY_MUPLTIPLIER]
        " temp += "Back to all categories


        " temp += "Request from: [last_viewed_group]

        " - for(var/supply_name in supply_controller.supply_packs ) - var/datum/supply_packs/supply_pack = supply_controller.supply_packs[supply_name] + for(var/supply_type in GLOB.supply_packs_datums) + var/datum/supply_packs/supply_pack = GLOB.supply_packs_datums[supply_type] if(!is_buyable(supply_pack)) continue - temp += "[supply_name] Cost: $[round(supply_pack.cost) * SUPPLY_TO_MONEY_MUPLTIPLIER]
        " //the obj because it would get caught by the garbage + temp += "[supply_pack.name] Cost: $[round(supply_pack.cost) * SUPPLY_TO_MONEY_MUPLTIPLIER]
        " //the obj because it would get caught by the garbage else if (href_list["doorder"]) if(world.time < reqtime) @@ -952,12 +982,13 @@ var/datum/controller/supply/supply_controller = new() return //Find the correct supply_pack datum - var/datum/supply_packs/supply_pack = supply_controller.supply_packs[href_list["doorder"]] + var/supply_pack_type = GLOB.supply_packs_types[href_list["doorder"]] + var/datum/supply_packs/supply_pack = GLOB.supply_packs_datums[supply_pack_type] if(!istype(supply_pack)) return - if((supply_pack.contraband && !can_order_contraband) || !supply_pack.buyable) + if((supply_pack.contraband && !can_order_contraband) || !supply_pack.buyable || supply_pack.contraband && black_market_lockout) return var/timeout = world.time + 600 @@ -975,11 +1006,11 @@ var/datum/controller/supply/supply_controller = new() else if(isSilicon(usr)) idname = usr.real_name - supply_controller.ordernum++ + GLOB.supply_controller.ordernum++ var/obj/item/paper/reqform = new /obj/item/paper(loc) reqform.name = "Requisition Form - [supply_pack.name]" - reqform.info += "

        [station_name] Supply Requisition Form


        " - reqform.info += "INDEX: #[supply_controller.ordernum]
        " + reqform.info += "

        [MAIN_SHIP_NAME] Supply Requisition Form


        " + reqform.info += "INDEX: #[GLOB.supply_controller.ordernum]
        " reqform.info += "REQUESTED BY: [idname]
        " reqform.info += "RANK: [idrank]
        " reqform.info += "REASON: [reason]
        " @@ -995,10 +1026,10 @@ var/datum/controller/supply/supply_controller = new() //make our supply_order datum var/datum/supply_order/supply_order = new /datum/supply_order() - supply_order.ordernum = supply_controller.ordernum + supply_order.ordernum = GLOB.supply_controller.ordernum supply_order.object = supply_pack supply_order.orderedby = idname - supply_controller.requestlist += supply_order + GLOB.supply_controller.requestlist += supply_order temp = "Order request placed.
        " temp += "
        Back|Main Menu|Authorize Order" @@ -1011,25 +1042,36 @@ var/datum/controller/supply/supply_controller = new() temp = "Invalid Request" temp += "
        Back|Main Menu" - if(supply_controller.shoppinglist.len > 20) + if(GLOB.supply_controller.shoppinglist.len > 20) to_chat(usr, SPAN_DANGER("Current retrieval load has reached maximum capacity.")) return - for(var/i=1, i<=supply_controller.requestlist.len, i++) - var/datum/supply_order/SO = supply_controller.requestlist[i] + for(var/i=1, i<=GLOB.supply_controller.requestlist.len, i++) + var/datum/supply_order/SO = GLOB.supply_controller.requestlist[i] if(SO.ordernum == ordernum) supply_order = SO supply_pack = supply_order.object - if(supply_controller.points >= round(supply_pack.cost) && supply_controller.black_market_points >= supply_pack.dollar_cost) - supply_controller.requestlist.Cut(i,i+1) - supply_controller.points -= round(supply_pack.cost) - supply_controller.black_market_points -= round(supply_pack.dollar_cost) - supply_controller.shoppinglist += supply_order + if(GLOB.supply_controller.points >= round(supply_pack.cost) && GLOB.supply_controller.black_market_points >= supply_pack.dollar_cost) + GLOB.supply_controller.requestlist.Cut(i,i+1) + GLOB.supply_controller.points -= round(supply_pack.cost) + GLOB.supply_controller.black_market_points -= round(supply_pack.dollar_cost) + if(GLOB.supply_controller.black_market_heat != -1) //-1 Heat means heat is disabled + GLOB.supply_controller.black_market_heat = clamp(GLOB.supply_controller.black_market_heat + supply_pack.crate_heat + (supply_pack.crate_heat * rand(rand(-0.25,0),0.25)), 0, 100) // black market heat added is crate heat +- up to 25% of crate heat + GLOB.supply_controller.shoppinglist += supply_order supply_pack.cost = supply_pack.cost * SUPPLY_COST_MULTIPLIER temp = "Thank you for your order.
        " temp += "
        Back Main Menu" supply_order.approvedby = usr.name msg_admin_niche("[usr] confirmed supply order of [supply_pack.name].") + if(GLOB.supply_controller.black_market_heat == 100) + GLOB.supply_controller.black_market_investigation() + var/pack_source = "Cargo Hold" + var/pack_name = supply_pack.name + if(supply_pack.dollar_cost) + pack_source = "Unknown" + if(prob(90)) + pack_name = "Unknown" + log_ares_requisition(pack_source, pack_name, usr.name) else temp = "Not enough money left.
        " temp += "
        Back Main Menu" @@ -1037,7 +1079,7 @@ var/datum/controller/supply/supply_controller = new() else if (href_list["vieworders"]) temp = "Current approved orders:

        " - for(var/S in supply_controller.shoppinglist) + for(var/S in GLOB.supply_controller.shoppinglist) var/datum/supply_order/SO = S temp += "#[SO.ordernum] - [SO.object.name] approved by [SO.approvedby]
        "// (Cancel)
        " temp += "
        OK" @@ -1055,7 +1097,7 @@ var/datum/controller/supply/supply_controller = new() */ else if (href_list["viewrequests"]) temp = "Current requests:

        " - for(var/S in supply_controller.requestlist) + for(var/S in GLOB.supply_controller.requestlist) var/datum/supply_order/SO = S temp += "#[SO.ordernum] - [SO.object.name] requested by [SO.orderedby] Approve Remove
        " @@ -1065,16 +1107,16 @@ var/datum/controller/supply/supply_controller = new() else if (href_list["rreq"]) var/ordernum = text2num(href_list["rreq"]) temp = "Invalid Request.
        " - for(var/i=1, i<=supply_controller.requestlist.len, i++) - var/datum/supply_order/SO = supply_controller.requestlist[i] + for(var/i=1, i<=GLOB.supply_controller.requestlist.len, i++) + var/datum/supply_order/SO = GLOB.supply_controller.requestlist[i] if(SO.ordernum == ordernum) - supply_controller.requestlist.Cut(i,i+1) + GLOB.supply_controller.requestlist.Cut(i,i+1) temp = "Request removed.
        " break temp += "
        Back Main Menu" else if (href_list["clearreq"]) - supply_controller.requestlist.Cut() + GLOB.supply_controller.requestlist.Cut() temp = "List cleared.
        " temp += "
        OK" @@ -1087,28 +1129,31 @@ var/datum/controller/supply/supply_controller = new() /obj/structure/machinery/computer/supplycomp/proc/handle_black_market() - temp = "W-Y Dollars: $[supply_controller.black_market_points]
        " + temp = "W-Y Dollars: $[GLOB.supply_controller.black_market_points]
        " temp += "Back to all categories


        " temp += SPAN_DANGER("ERR0R UNK7OWN C4T2G#!$0-


        ") + if(black_market_lockout) + temp += "





        Unauthorized Access Removed.
        This console is currently under CMB investigation.
        Thank you for your cooperation.
        " + return temp += "KHZKNHZH#0-" - if(!supply_controller.mendoza_status) // he's daed + if(!GLOB.supply_controller.mendoza_status) // he's daed temp += "........." return handle_mendoza_dialogue() //mendoza has been in there for a while. he gets lonely sometimes temp += "[last_viewed_group]

        " - for(var/supply_group_name in supply_controller.contraband_supply_groups) + for(var/supply_group_name in GLOB.supply_controller.contraband_supply_groups) temp += "[supply_group_name]
        " /obj/structure/machinery/computer/supplycomp/proc/handle_black_market_groups() - temp = "W-Y Dollars: $[supply_controller.black_market_points]
        " + temp = "W-Y Dollars: $[GLOB.supply_controller.black_market_points]
        " temp += "Back to black market categories


        " temp += "Purchase from: [last_viewed_group]

        " - for(var/supply_name in supply_controller.supply_packs ) - var/datum/supply_packs/supply_pack = supply_controller.supply_packs[supply_name] + for(var/supply_type in GLOB.supply_packs_datums) + var/datum/supply_packs/supply_pack = GLOB.supply_packs_datums[supply_type] if(!is_buyable(supply_pack)) continue - temp += "[supply_name] Cost: $[round(supply_pack.dollar_cost)]
        " + temp += "[supply_pack.name] Cost: $[round(supply_pack.dollar_cost)]
        " /obj/structure/machinery/computer/supplycomp/proc/handle_mendoza_dialogue() @@ -1166,7 +1211,7 @@ var/datum/controller/supply/supply_controller = new() return_value = movable_atom.black_market_value // so they cant sell the same thing over and over and over - return_value = POSITIVE(return_value - supply_controller.black_market_sold_items[movable_atom.type] * 0.5) + return_value = POSITIVE(return_value - GLOB.supply_controller.black_market_sold_items[movable_atom.type] * 0.5) return return_value /datum/controller/supply/proc/kill_mendoza() @@ -1230,6 +1275,11 @@ var/datum/controller/supply/supply_controller = new() /// For code readability. addtimer(CALLBACK(GLOBAL_PROC, /proc/playsound, get_rand_sound_tile(), sound_to_play, 25, FALSE), timer) +/datum/controller/supply/proc/black_market_investigation() + black_market_heat = -1 + SSticker.mode.get_specific_call("Inspection - Colonial Marshal Ledger Investigation Team", TRUE, TRUE) + log_game("Black Market Inspection auto-triggered.") + /obj/structure/machinery/computer/supplycomp/proc/is_buyable(datum/supply_packs/supply_pack) if(supply_pack.group != last_viewed_group) @@ -1238,7 +1288,7 @@ var/datum/controller/supply/supply_controller = new() if(!supply_pack.buyable) return - if(supply_pack.contraband && !can_order_contraband) + if(supply_pack.contraband && !can_order_contraband || supply_pack.contraband && black_market_lockout) return if(isnull(supply_pack.contains) && isnull(supply_pack.containertype)) @@ -1291,6 +1341,14 @@ var/datum/controller/supply/supply_controller = new() /datum/vehicle_order/tank/has_vehicle_lock() return +/datum/vehicle_order/tank/broken + name = "Smashed M34A2 Longstreet Light Tank" + ordered_vehicle = /obj/effect/vehicle_spawner/tank/hull/broken + +/datum/vehicle_order/tank/plain + name = "M34A2 Longstreet Light Tank" + ordered_vehicle = /obj/effect/vehicle_spawner/tank + /datum/vehicle_order/apc name = "M577 Armored Personnel Carrier" ordered_vehicle = /obj/effect/vehicle_spawner/apc/decrepit @@ -1303,23 +1361,24 @@ var/datum/controller/supply/supply_controller = new() name = "M577-CMD Armored Personnel Carrier" ordered_vehicle = /obj/effect/vehicle_spawner/apc_cmd/decrepit +/datum/vehicle_order/apc/empty + name = "Barebones M577 Armored Personal Carrier" + ordered_vehicle = /obj/effect/vehicle_spawner/apc/unarmed/broken + /obj/structure/machinery/computer/supplycomp/vehicle/Initialize() . = ..() vehicles = list( - /datum/vehicle_order/apc, - /datum/vehicle_order/apc/med, - /datum/vehicle_order/apc/cmd, + new /datum/vehicle_order/apc(), + new /datum/vehicle_order/apc/med(), + new /datum/vehicle_order/apc/cmd(), ) - for(var/order as anything in vehicles) - new order - - if(!VehicleElevatorConsole) - VehicleElevatorConsole = src + if(!GLOB.VehicleElevatorConsole) + GLOB.VehicleElevatorConsole = src /obj/structure/machinery/computer/supplycomp/vehicle/Destroy() - VehicleElevatorConsole = null + GLOB.VehicleElevatorConsole = null return ..() /obj/structure/machinery/computer/supplycomp/vehicle/attack_hand(mob/living/carbon/human/H as mob) @@ -1375,21 +1434,19 @@ var/datum/controller/supply/supply_controller = new() return if(spent) return - if(!supply_controller) - world.log << "## ERROR: Eek. The supply_controller controller datum is missing somehow." + if(!GLOB.supply_controller) + world.log << "## ERROR: Eek. The GLOB.supply_controller controller datum is missing somehow." return if (!SSshuttle.vehicle_elevator) world.log << "## ERROR: Eek. The supply/elevator datum is missing somehow." return - if(!is_admin_level(SSshuttle.vehicle_elevator.z)) - return - - if(ismaintdrone(usr)) + if(!should_block_game_interaction(SSshuttle.vehicle_elevator)) + to_chat(usr, SPAN_WARNING("The elevator needs to be in the cargo bay dock to call a vehicle up. Ask someone to send it away.")) return - if(isturf(loc) && ( in_range(src, usr) || ishighersilicon(usr) ) ) + if(isturf(loc) && ( in_range(src, usr) || isSilicon(usr) ) ) usr.set_interaction(src) if(href_list["get_vehicle"]) diff --git a/code/game/turfs/auto_turf.dm b/code/game/turfs/auto_turf.dm index 4556289da9ea..e07f7324bcc2 100644 --- a/code/game/turfs/auto_turf.dm +++ b/code/game/turfs/auto_turf.dm @@ -53,7 +53,7 @@ return bleed_layer = max(0, new_layer) - for(var/direction in alldirs) + for(var/direction in GLOB.alldirs) var/turf/open/T = get_step(src, direction) if(istype(T)) T.update_icon() @@ -169,7 +169,7 @@ if(istype(I, /obj/item/lightstick)) var/obj/item/lightstick/L = I if(locate(/obj/item/lightstick) in get_turf(src)) - to_chat(user, "There's already a [L] at this position!") + to_chat(user, "There's already \a [L] at this position!") return to_chat(user, "Now planting \the [L].") @@ -183,7 +183,7 @@ L.forceMove(src) L.pixel_x += rand(-5,5) L.pixel_y += rand(-5,5) - L.SetLuminosity(2) + L.set_light(2) playsound(user, 'sound/weapons/Genhit.ogg', 25, 1) //Digging up snow diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm index 92bce17e50f6..bf84bc04bf10 100644 --- a/code/game/turfs/closed.dm +++ b/code/game/turfs/closed.dm @@ -259,6 +259,14 @@ /turf/closed/shuttle/dropship2/transparent opacity = FALSE +/turf/closed/shuttle/twe_dropship + name = "\improper UD4-UK" + icon = 'icons/turf/twedropship.dmi' + icon_state = "0,0" + +/turf/closed/shuttle/twe_dropship/transparent + opacity = FALSE + /turf/closed/shuttle/dropship2/tornado name = "\improper Tornado" icon = 'icons/turf/dropship3.dmi' diff --git a/code/game/turfs/floor.dm b/code/game/turfs/floor.dm index 4a600d4d033b..1be6235cd2ac 100644 --- a/code/game/turfs/floor.dm +++ b/code/game/turfs/floor.dm @@ -69,7 +69,7 @@ ..() if(is_grass_floor()) var/dir_sum = 0 - for(var/direction in cardinal) + for(var/direction in GLOB.cardinals) var/turf/T = get_step(src,direction) if(!(T.is_grass_floor())) dir_sum += direction @@ -96,7 +96,7 @@ else if(is_light_floor()) icon_state = "light_broken" broken = 1 - SetLuminosity(0) + set_light(0) else if(is_plating()) icon_state = "platingdmg[pick(1, 2, 3)]" broken = 1 @@ -135,7 +135,7 @@ //This proc auto corrects the grass tiles' siding. /turf/open/floor/proc/make_plating() - SetLuminosity(0) + set_light(0) intact_tile = FALSE broken = FALSE burnt = FALSE @@ -148,7 +148,7 @@ if(src.weeds) return weeds.attackby(hitting_item,user) - if(istype(hitting_item, /obj/item/tool/crowbar) && (tool_flags & (REMOVE_CROWBAR|BREAK_CROWBAR))) + if(HAS_TRAIT(hitting_item, TRAIT_TOOL_CROWBAR) && (tool_flags & (REMOVE_CROWBAR|BREAK_CROWBAR))) if(broken || burnt) to_chat(user, SPAN_WARNING("You remove the broken tiles.")) else diff --git a/code/game/turfs/floor_types.dm b/code/game/turfs/floor_types.dm index 25682f00df29..f957686fac22 100644 --- a/code/game/turfs/floor_types.dm +++ b/code/game/turfs/floor_types.dm @@ -203,6 +203,13 @@ icon_state = "default" plating_type = /turf/open/floor/plating/almayer +/// Admin level thunderdome floor. Doesn't get damaged by explosions and such for pristine testing +/turf/open/floor/tdome + icon = 'icons/turf/almayer.dmi' + icon_state = "plating" + plating_type = /turf/open/floor/tdome + hull_floor = TRUE + //Cargo elevator /turf/open/floor/almayer/empty name = "empty space" @@ -242,10 +249,10 @@ qdel(AM) return var/mob/living/carbon/human/thrown_human = AM - for(var/atom/computer as anything in supply_controller.bound_supply_computer_list) + for(var/atom/computer as anything in GLOB.supply_controller.bound_supply_computer_list) computer.balloon_alert_to_viewers("you hear horrifying noises coming from the elevator!") - var/area/area_shuttle = supply_controller.shuttle?.get_location_area() + var/area/area_shuttle = GLOB.supply_controller.shuttle?.get_location_area() if(!area_shuttle) return var/list/turflist = list() @@ -272,7 +279,9 @@ /turf/open/floor/almayer/uscm/directional icon_state = "logo_directional" - +/turf/open/floor/almayer/no_build + allow_construction = FALSE + hull_floor = TRUE // RESEARCH STUFF /turf/open/floor/almayer/research/containment/entrance @@ -450,7 +459,7 @@ /turf/open/floor/grass/LateInitialize() . = ..() - for(var/direction in cardinal) + for(var/direction in GLOB.cardinals) if(istype(get_step(src,direction),/turf/open/floor)) var/turf/open/floor/FF = get_step(src,direction) FF.update_icon() //so siding get updated properly @@ -495,7 +504,7 @@ if(!broken && !burnt) if(icon_state != "carpetsymbol") var/connectdir = 0 - for(var/direction in cardinal) + for(var/direction in GLOB.cardinals) if(istype(get_step(src, direction), /turf/open/floor)) var/turf/open/floor/FF = get_step(src, direction) if(FF.is_carpet_floor()) @@ -536,7 +545,7 @@ icon_state = "carpet[connectdir]-[diagonalconnect]" /turf/open/floor/carpet/make_plating() - for(var/direction in alldirs) + for(var/direction in GLOB.alldirs) if(istype(get_step(src, direction), /turf/open/floor)) var/turf/open/floor/FF = get_step(src,direction) FF.update_icon() // So siding get updated properly diff --git a/code/game/turfs/floors/desert.dm b/code/game/turfs/floors/desert.dm index 4ecc0bf47cf7..46a481e3bc64 100644 --- a/code/game/turfs/floors/desert.dm +++ b/code/game/turfs/floors/desert.dm @@ -111,13 +111,13 @@ ..() switch(toxic) if(1) - SetLuminosity(2) + set_light(2) icon = 'icons/turf/floors/desert_water_toxic.dmi' if(0) - SetLuminosity(1) + set_light(1) icon = 'icons/turf/floors/desert_water.dmi' if(-1) - SetLuminosity(1) + set_light(1) icon = 'icons/turf/floors/desert_water_transition.dmi' /turf/open/desert/desert_shore/is_weedable() @@ -196,13 +196,13 @@ ..() switch(toxic) if(1) - SetLuminosity(2) + set_light(2) icon = 'icons/turf/floors/desert_water_toxic.dmi' if(0) - SetLuminosity(1) + set_light(1) icon = 'icons/turf/floors/desert_water.dmi' if(-1) - SetLuminosity(1) + set_light(1) icon = 'icons/turf/floors/desert_water_transition.dmi' //Desert River Toxic @@ -221,13 +221,13 @@ ..() switch(toxic) if(1) - SetLuminosity(2) + set_light(2) icon = 'icons/turf/floors/desert_water_toxic.dmi' if(0) - SetLuminosity(1) + set_light(1) icon = 'icons/turf/floors/desert_water.dmi' if(-1) - SetLuminosity(1) + set_light(1) icon = 'icons/turf/floors/desert_water_transition.dmi' update_overlays() diff --git a/code/game/turfs/light.dm b/code/game/turfs/light.dm index 694a51aad83a..e8b7038bcb51 100644 --- a/code/game/turfs/light.dm +++ b/code/game/turfs/light.dm @@ -1,9 +1,21 @@ +#define LIGHT_FLOOR_COLOR_BLUE 0 +#define LIGHT_FLOOR_COLOR_RED 1 +#define LIGHT_FLOOR_COLOR_GREEN 2 +#define LIGHT_FLOOR_COLOR_YELLOW 3 +#define LIGHT_FLOOR_COLOR_PURPLE 4 +#define LIGHT_FLOOR_COLOR_WHITE 5 + /turf/open/floor/light name = "light floor" desc = "Beware of breakdancing on these tiles, glass shards embedded in the head is not a fun time." + icon_state = "light_on" tile_type = /obj/item/stack/tile/light var/on = TRUE - var/state = 0 + var/state = LIGHT_FLOOR_COLOR_BLUE + +/turf/open/floor/light/get_examine_text(mob/user) + . = ..() + . += "[src] is [broken ? "broken, and requires a replacement lightbulb":"[on ? "on" : "off"]"]." /turf/open/floor/light/is_light_floor() return TRUE @@ -12,34 +24,34 @@ . = ..() if(on && !broken) //manages color, I feel like this switch is a sin. switch(state) - if(0) + if(LIGHT_FLOOR_COLOR_BLUE) icon_state = "light_on" - SetLuminosity(5) - if(1) + set_light(5) + if(LIGHT_FLOOR_COLOR_RED) icon_state = "light_on-r" - SetLuminosity(5) - if(2) + set_light(5) + if(LIGHT_FLOOR_COLOR_GREEN) icon_state = "light_on-g" - SetLuminosity(5) - if(3) + set_light(5) + if(LIGHT_FLOOR_COLOR_YELLOW) icon_state = "light_on-y" - SetLuminosity(5) - if(4) + set_light(5) + if(LIGHT_FLOOR_COLOR_PURPLE) icon_state = "light_on-p" - SetLuminosity(5) - if(5,-1) + set_light(5) + if(LIGHT_FLOOR_COLOR_WHITE,-1) //change this later icon_state = "light_on-w" - SetLuminosity(5) + set_light(5) state = -1 else return //Should never happen ever but what if... returns into the other else which close the light else if(broken) icon_state = "light_broken" //It's the same sprite as light off, my artistic skill stops at stickmans anyone feel free to make a better one! - SetLuminosity(0) + set_light(0) else icon_state = "light_off" - SetLuminosity(0) + set_light(0) on = FALSE /turf/open/floor/light/attackby(obj/item/item_in_hand, mob/user) @@ -84,3 +96,68 @@ broken = TRUE update_icon() return XENO_ATTACK_ACTION + +/turf/open/floor/light/red + icon_state = "light_on-r" + state = LIGHT_FLOOR_COLOR_RED + +/turf/open/floor/light/green + icon_state = "light_on-g" + state = LIGHT_FLOOR_COLOR_GREEN + +/turf/open/floor/light/yellow + icon_state = "light_on-y" + state = LIGHT_FLOOR_COLOR_YELLOW + +/turf/open/floor/light/purple + icon_state = "light_on-p" + state = LIGHT_FLOOR_COLOR_PURPLE + +/turf/open/floor/light/white + icon_state = "light_on-w" + state = LIGHT_FLOOR_COLOR_WHITE + +/turf/open/floor/light/off + icon_state = "light_off" + on = FALSE + +/turf/open/floor/light/off/red + state = LIGHT_FLOOR_COLOR_RED + +/turf/open/floor/light/off/green + state = LIGHT_FLOOR_COLOR_GREEN + +/turf/open/floor/light/off/yellow + state = LIGHT_FLOOR_COLOR_YELLOW + +/turf/open/floor/light/off/purple + state = LIGHT_FLOOR_COLOR_PURPLE + +/turf/open/floor/light/off/white + state = LIGHT_FLOOR_COLOR_WHITE + +/turf/open/floor/light/broken + icon_state = "light_broken" + broken = TRUE + +/turf/open/floor/light/broken/red + state = LIGHT_FLOOR_COLOR_RED + +/turf/open/floor/light/broken/green + state = LIGHT_FLOOR_COLOR_GREEN + +/turf/open/floor/light/broken/yellow + state = LIGHT_FLOOR_COLOR_YELLOW + +/turf/open/floor/light/broken/purple + state = LIGHT_FLOOR_COLOR_PURPLE + +/turf/open/floor/light/broken/white + state = LIGHT_FLOOR_COLOR_WHITE + +#undef LIGHT_FLOOR_COLOR_BLUE +#undef LIGHT_FLOOR_COLOR_RED +#undef LIGHT_FLOOR_COLOR_GREEN +#undef LIGHT_FLOOR_COLOR_YELLOW +#undef LIGHT_FLOOR_COLOR_PURPLE +#undef LIGHT_FLOOR_COLOR_WHITE diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 3f7192b0090b..e21dd142f931 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -24,7 +24,7 @@ add_cleanable_overlays() var/list/turf/open/auto_turf/auto_turf_dirs = list() - for(var/direction in alldirs) + for(var/direction in GLOB.alldirs) var/turf/open/auto_turf/T = get_step(src, direction) if(!istype(T)) continue @@ -36,7 +36,7 @@ var/list/handled_dirs = list() var/list/unhandled_dirs = list() - for(var/direction in diagonals) + for(var/direction in GLOB.diagonals) var/x_dir = direction & (direction-1) var/y_dir = direction - x_dir @@ -90,7 +90,7 @@ if(!T.icon_state_before_scorching) T.icon_state_before_scorching = T.icon_state var/direction_from_neighbor_towards_src = get_dir(T, src) - var/icon/culling_mask = icon(T.icon, "[T.scorchable]_mask[turf_edgeinfo_cache[T.icon_state_before_scorching][dir2indexnum(T.dir)][dir2indexnum(direction_from_neighbor_towards_src)]]", direction_from_neighbor_towards_src) + var/icon/culling_mask = icon(T.icon, "[T.scorchable]_mask[GLOB.turf_edgeinfo_cache[T.icon_state_before_scorching][dir2indexnum(T.dir)][dir2indexnum(direction_from_neighbor_towards_src)]]", direction_from_neighbor_towards_src) edge_overlay.Blend(culling_mask, ICON_OVERLAY) edge_overlay.SwapColor(rgb(255, 0, 255, 255), rgb(0, 0, 0, 0)) overlays += edge_overlay @@ -115,10 +115,10 @@ scorchedness = 1 if(2 to 30) - scorchedness = Clamp(scorchedness + 1, 0, 3) //increase scorch by 1 (not that hot of a fire) + scorchedness = clamp(scorchedness + 1, 0, 3) //increase scorch by 1 (not that hot of a fire) if(31 to 60) - scorchedness = Clamp(scorchedness + 2, 0, 3) //increase scorch by 2 (hotter fire) + scorchedness = clamp(scorchedness + 2, 0, 3) //increase scorch by 2 (hotter fire) if(61 to INFINITY) scorchedness = 3 //max out the scorchedness (hottest fire) @@ -185,6 +185,7 @@ name = "cave" icon = 'icons/turf/floors/bigred.dmi' icon_state = "mars_cave_1" + is_groundmap_turf = TRUE /turf/open/mars_cave/Initialize(mapload, ...) @@ -283,6 +284,7 @@ name = "ground dirt" icon = 'icons/turf/ground_map.dmi' icon_state = "desert" + is_groundmap_turf = TRUE /turf/open/gm/attackby(obj/item/I, mob/user) @@ -290,7 +292,7 @@ if(istype(I, /obj/item/lightstick)) var/obj/item/lightstick/L = I if(locate(/obj/item/lightstick) in get_turf(src)) - to_chat(user, "There's already a [L] at this position!") + to_chat(user, "There's already \a [L] at this position!") return to_chat(user, "Now planting \the [L].") @@ -304,7 +306,7 @@ L.forceMove(src) L.pixel_x += rand(-5,5) L.pixel_y += rand(-5,5) - L.SetLuminosity(2) + L.set_light(2) playsound(user, 'sound/weapons/Genhit.ogg', 25, 1) return @@ -368,16 +370,16 @@ /turf/open/gm/grass/Initialize(mapload, ...) . = ..() - if(!locate(icon_state) in turf_edgeinfo_cache) + if(!locate(icon_state) in GLOB.turf_edgeinfo_cache) switch(icon_state) if("grass1") - turf_edgeinfo_cache["grass1"] = GLOB.edgeinfo_full + GLOB.turf_edgeinfo_cache["grass1"] = GLOB.edgeinfo_full if("grass2") - turf_edgeinfo_cache["grass2"] = GLOB.edgeinfo_full + GLOB.turf_edgeinfo_cache["grass2"] = GLOB.edgeinfo_full if("grassbeach") - turf_edgeinfo_cache["grassbeach"] = GLOB.edgeinfo_edge + GLOB.turf_edgeinfo_cache["grassbeach"] = GLOB.edgeinfo_edge if("gbcorner") - turf_edgeinfo_cache["gbcorner"] = GLOB.edgeinfo_corner + GLOB.turf_edgeinfo_cache["gbcorner"] = GLOB.edgeinfo_corner /turf/open/gm/dirt2 name = "dirt" @@ -433,14 +435,14 @@ /turf/open/gm/dirtgrassborder/Initialize(mapload, ...) . = ..() - if(!locate(icon_state) in turf_edgeinfo_cache) + if(!locate(icon_state) in GLOB.turf_edgeinfo_cache) switch(icon_state) if("grassdirt_edge") - turf_edgeinfo_cache["grassdirt_edge"] = GLOB.edgeinfo_edge + GLOB.turf_edgeinfo_cache["grassdirt_edge"] = GLOB.edgeinfo_edge if("grassdirt_corner") - turf_edgeinfo_cache["grassdirt_corner"] = GLOB.edgeinfo_corner + GLOB.turf_edgeinfo_cache["grassdirt_corner"] = GLOB.edgeinfo_corner if("grassdirt_corner2") - turf_edgeinfo_cache["grassdirt_corner2"] = GLOB.edgeinfo_corner2 + GLOB.turf_edgeinfo_cache["grassdirt_corner2"] = GLOB.edgeinfo_corner2 /turf/open/gm/dirtgrassborder2 name = "grass" @@ -515,9 +517,9 @@ if(H.gloves && rand(0,100) < 60) if(istype(H.gloves,/obj/item/clothing/gloves/yautja/hunter)) var/obj/item/clothing/gloves/yautja/hunter/Y = H.gloves - if(Y && istype(Y) && Y.cloaked) + if(Y && istype(Y) && HAS_TRAIT(H, TRAIT_CLOAKED)) to_chat(H, SPAN_WARNING(" Your bracers hiss and spark as they short out!")) - Y.decloak(H, TRUE) + Y.decloak(H, TRUE, DECLOAK_SUBMERGED) else if(isxeno(C)) river_slowdown -= 0.7 @@ -646,6 +648,7 @@ baseturfs = /turf/open/gm/riverdeep supports_surgery = FALSE minimap_color = MINIMAP_WATER + is_groundmap_turf = FALSE // Not real ground /turf/open/gm/riverdeep/Initialize(mapload, ...) @@ -724,6 +727,7 @@ allow_construction = FALSE var/bushes_spawn = 1 var/plants_spawn = 1 + is_groundmap_turf = TRUE name = "wet grass" desc = "Thick, long, wet grass." icon = 'icons/turf/floors/jungle.dmi' @@ -783,7 +787,7 @@ if(istype(I, /obj/item/lightstick)) var/obj/item/lightstick/L = I if(locate(/obj/item/lightstick) in get_turf(src)) - to_chat(user, "There's already a [L] at this position!") + to_chat(user, "There's already \a [L] at this position!") return to_chat(user, "Now planting \the [L].") @@ -797,7 +801,7 @@ L.forceMove(src) L.pixel_x += rand(-5,5) L.pixel_y += rand(-5,5) - L.SetLuminosity(2) + L.set_light(2) playsound(user, 'sound/weapons/Genhit.ogg', 25, 1) return @@ -906,10 +910,67 @@ allow_construction = FALSE supports_surgery = FALSE +/turf/open/shuttle/can_surgery + allow_construction = TRUE + supports_surgery = TRUE + +/turf/open/shuttle/can_surgery/blue + name = "floor" + icon_state = "floor" + icon = 'icons/turf/shuttle.dmi' + +/turf/open/shuttle/can_surgery/red + icon_state = "floor6" + +/turf/open/shuttle/can_surgery/black + icon_state = "floor7" + /turf/open/shuttle/dropship name = "floor" icon_state = "rasputin1" +/turf/open/shuttle/dropship/can_surgery + icon_state = "rasputin1" + allow_construction = TRUE + supports_surgery = TRUE + +/turf/open/shuttle/dropship/can_surgery/light_grey_middle + icon_state = "rasputin13" + +/turf/open/shuttle/dropship/can_surgery/light_grey_top + icon_state = "rasputin10" + +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right + icon_state = "floor8" + +/*same two but helps with finding if you think top to bottom or up to down*/ +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down + icon_state = "rasputin3" + +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_top_to_bottom + icon_state = "rasputin3" + +/turf/open/shuttle/dropship/can_surgery/light_grey_top_left + icon_state = "rasputin6" + +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_left + icon_state = "rasputin4" + +/turf/open/shuttle/dropship/can_surgery/light_grey_top_right + icon_state = "rasputin7" + +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_right + icon_state = "rasputin8" + +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_left_to_right + icon_state = "rasputin14" + +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_up_to_down + icon_state = "rasputin15" + +/turf/open/shuttle/dropship/can_surgery/dark_grey + icon_state = "rasputin15" + /turf/open/shuttle/predship name = "ship floor" icon_state = "floor6" diff --git a/code/game/turfs/snow.dm b/code/game/turfs/snow.dm index cd5fcf56d15c..f7fb746cfbbc 100644 --- a/code/game/turfs/snow.dm +++ b/code/game/turfs/snow.dm @@ -16,7 +16,7 @@ if(istype(I, /obj/item/lightstick)) var/obj/item/lightstick/L = I if(locate(/obj/item/lightstick) in get_turf(src)) - to_chat(user, "There's already a [L] at this position!") + to_chat(user, "There's already \a [L] at this position!") return to_chat(user, "Now planting \the [L].") @@ -30,7 +30,7 @@ L.forceMove(src) L.pixel_x += rand(-5,5) L.pixel_y += rand(-5,5) - L.SetLuminosity(2) + L.set_light(2) playsound(user, 'sound/weapons/Genhit.ogg', 25, 1) @@ -77,7 +77,7 @@ if(update_full) var/turf/open/T if(!skip_sides) - for(var/dirn in alldirs) + for(var/dirn in GLOB.alldirs) var/turf/open/snow/D = get_step(src,dirn) if(istype(D)) //Update turfs that are near us, but only once @@ -85,7 +85,7 @@ overlays.Cut() - for(var/dirn in alldirs) + for(var/dirn in GLOB.alldirs) T = get_step(src, dirn) if(istype(T)) if(bleed_layer > T.bleed_layer && T.bleed_layer < 1) @@ -148,6 +148,3 @@ /turf/open/snow/layer3 icon_state = "snow_3" bleed_layer = 3 - - - diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 54cfdf6e34ea..be58259e17ba 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -55,6 +55,14 @@ // Fishing var/supports_fishing = FALSE // set to false when MRing, this is just for testing + ///Lumcount added by sources other than lighting datum objects, such as the overlay lighting component. + var/dynamic_lumcount = 0 + ///List of light sources affecting this turf. + ///Which directions does this turf block the vision of, taking into account both the turf's opacity and the movable opacity_sources. + var/directional_opacity = NONE + ///Lazylist of movable atoms providing opacity sources. + var/list/atom/movable/opacity_sources + /turf/Initialize(mapload) SHOULD_CALL_PARENT(FALSE) // this doesn't parent call for optimisation reasons if(flags_atom & INITIALIZED) @@ -64,31 +72,39 @@ // by default, vis_contents is inherited from the turf that was here before vis_contents.Cut() - turfs += src - if(is_ground_level(z)) - z1turfs += src + GLOB.turfs += src + assemble_baseturfs() levelupdate() - visibilityChanged() - - pass_flags = pass_flags_cache[type] + pass_flags = GLOB.pass_flags_cache[type] if (isnull(pass_flags)) pass_flags = new() initialize_pass_flags(pass_flags) - pass_flags_cache[type] = pass_flags + GLOB.pass_flags_cache[type] = pass_flags else initialize_pass_flags() for(var/atom/movable/AM in src) Entered(AM) - if(luminosity) - if(light) WARNING("[type] - Don't set lights up manually during New(), We do it automatically.") - trueLuminosity = luminosity * luminosity - light = new(src) + if(light_power && light_range) + update_light() + + //Get area light + var/area/current_area = loc + if(current_area?.lighting_effect) + overlays += current_area.lighting_effect + + if(opacity) + directional_opacity = ALL_CARDINALS + + //Get area light + var/area/A = loc + if(A?.lighting_effect) + overlays += A.lighting_effect return INITIALIZE_HINT_NORMAL @@ -109,7 +125,6 @@ for(var/I in B.vars) B.vars[I] = null return - visibilityChanged() flags_atom &= ~INITIALIZED ..() @@ -118,6 +133,12 @@ VV_DROPDOWN_OPTION(VV_HK_EXPLODE, "Trigger Explosion") VV_DROPDOWN_OPTION(VV_HK_EMPULSE, "Trigger EM Pulse") +/turf/vv_edit_var(var_name, new_value) + var/static/list/banned_edits = list(NAMEOF_STATIC(src, x), NAMEOF_STATIC(src, y), NAMEOF_STATIC(src, z)) + if(var_name in banned_edits) + return FALSE + . = ..() + /turf/ex_act(severity) return 0 @@ -148,7 +169,7 @@ if(override) return override & COMPONENT_TURF_ALLOW_MOVEMENT - if(isobserver(mover) || istype(mover, /obj/item/projectile)) + if(isobserver(mover) || istype(mover, /obj/projectile)) return TRUE var/fdir = get_dir(mover, src) @@ -350,8 +371,6 @@ if(/turf/baseturf_bottom) path = /turf/open/floor/plating - var/old_lumcount = lighting_lumcount - initial(lighting_lumcount) - //if(src.type == new_turf_path) // Put this back if shit starts breaking // return src @@ -359,6 +378,16 @@ var/list/old_baseturfs = baseturfs + //static lighting + var/old_lighting_object = static_lighting_object + var/old_lighting_corner_NE = lighting_corner_NE + var/old_lighting_corner_SE = lighting_corner_SE + var/old_lighting_corner_SW = lighting_corner_SW + var/old_lighting_corner_NW = lighting_corner_NW + //hybrid lighting + var/list/old_hybrid_lights_affecting = hybrid_lights_affecting?.Copy() + var/old_directional_opacity = directional_opacity + changing_turf = TRUE qdel(src) //Just get the side effects and call Destroy var/turf/W = new path(src) @@ -374,10 +403,34 @@ W.linked_pylons = pylons - W.lighting_lumcount += old_lumcount - if(old_lumcount != W.lighting_lumcount) - W.lighting_changed = 1 - SSlighting.changed_turfs += W + W.hybrid_lights_affecting = old_hybrid_lights_affecting + W.dynamic_lumcount = dynamic_lumcount + + lighting_corner_NE = old_lighting_corner_NE + lighting_corner_SE = old_lighting_corner_SE + lighting_corner_SW = old_lighting_corner_SW + lighting_corner_NW = old_lighting_corner_NW + + //static Update + if(SSlighting.initialized) + recalculate_directional_opacity() + + W.static_lighting_object = old_lighting_object + + if(static_lighting_object && !static_lighting_object.needs_update) + static_lighting_object.update() + + //Since the old turf was removed from hybrid_lights_affecting, readd the new turf here + if(W.hybrid_lights_affecting) + for(var/atom/movable/lighting_mask/mask as anything in W.hybrid_lights_affecting) + LAZYADD(mask.affecting_turfs, W) + + if(W.directional_opacity != old_directional_opacity) + W.reconsider_lights() + + var/area/thisarea = get_area(W) + if(thisarea.lighting_effect) + W.overlays += thisarea.lighting_effect W.levelupdate() return W @@ -500,7 +553,7 @@ var/area/A = get_area(src) switch(A.ceiling) if(CEILING_GLASS) - return "The ceiling above is glass. That's not going stop anything." + return "The ceiling above is glass. That's not going to stop anything." if(CEILING_METAL) return "The ceiling above is metal. You can't see through it with a camera from above, but that's not going to stop anything." if(CEILING_UNDERGROUND_ALLOW_CAS) @@ -754,13 +807,7 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( /turf/proc/copyTurf(turf/T) if(T.type != type) - var/obj/O - if(underlays.len) //we have underlays, which implies some sort of transparency, so we want to a snapshot of the previous turf as an underlay - O = new() - O.underlays.Add(T) T.ChangeTurf(type) - if(underlays.len) - T.underlays = O.underlays if(T.icon_state != icon_state) T.icon_state = icon_state if(T.icon != icon) diff --git a/code/game/turfs/walls/r_wall.dm b/code/game/turfs/walls/r_wall.dm index a3572138c287..9d256b257090 100644 --- a/code/game/turfs/walls/r_wall.dm +++ b/code/game/turfs/walls/r_wall.dm @@ -6,7 +6,6 @@ density = TRUE damage_cap = HEALTH_WALL_REINFORCED - max_temperature = 6000 walltype = WALL_REINFORCED @@ -16,10 +15,6 @@ if(hull) return - if (!(istype(user, /mob/living/carbon/human) || isrobot(user) || SSticker) && SSticker.mode.name != "monkey") - to_chat(user, SPAN_WARNING("You don't have the dexterity to do this!")) - return - //get the user's location if( !istype(user.loc, /turf) ) return //can't do this stuff whilst inside objects and such @@ -265,7 +260,7 @@ name = "heavy reinforced wall" desc = "A huge chunk of ultra-reinforced metal used to separate rooms. Looks virtually indestructible." icon_state = "h_dome" - hull = 1 + hull = TRUE /turf/closed/wall/r_wall/biodome/biodome_unmeltable/ex_act(severity) //Should make it indestructible return diff --git a/code/game/turfs/walls/wall_icon.dm b/code/game/turfs/walls/wall_icon.dm index 8b8ee00bcf53..2b414ca46af8 100644 --- a/code/game/turfs/walls/wall_icon.dm +++ b/code/game/turfs/walls/wall_icon.dm @@ -19,6 +19,8 @@ icon_state = "blank" var/image/I + flags_atom |= HTML_USE_INITAL_ICON + if(!density) I = image(icon, "[walltype]fwall_open") overlays += I @@ -84,7 +86,7 @@ break if(success) - if(get_dir(src, T) in cardinal) + if(get_dir(src, T) in GLOB.cardinals) wall_dirs += get_dir(src, T) for(var/neighbor in wall_dirs) diff --git a/code/game/turfs/walls/wall_types.dm b/code/game/turfs/walls/wall_types.dm index 702cbd35560c..d546e7274331 100644 --- a/code/game/turfs/walls/wall_types.dm +++ b/code/game/turfs/walls/wall_types.dm @@ -12,8 +12,6 @@ damage = 0 damage_cap = HEALTH_WALL //Wall will break down to girders if damage reaches this point - max_temperature = 18000 //K, walls will take damage if they're next to a fire hotter than this - opacity = TRUE density = TRUE @@ -24,19 +22,27 @@ /obj/structure/girder, /obj/structure/machinery/door, /obj/structure/machinery/cm_vending/sorted/attachments/blend, - /obj/structure/machinery/cm_vending/sorted/cargo_ammo/blend, - /obj/structure/machinery/cm_vending/sorted/cargo_guns/blend, + /obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/blend, + /obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/blend, ) + /// The type of wall decoration we use, to avoid the wall changing icon all the time + var/decoration_type + +/turf/closed/wall/almayer/Initialize(mapload, ...) + if(!special_icon && prob(20)) + decoration_type = rand(0,3) + return ..() + /turf/closed/wall/almayer/update_icon() - ..() - if(special_icon) - return + if(decoration_type == null) + return ..() if(neighbors_list in list(EAST|WEST)) - var/r1 = rand(0,10) //Make a random chance for this to happen - var/r2 = rand(0,3) // Which wall if we do choose it - if(r1 >= 9) - overlays += image(icon, icon_state = "almayer_deco_wall[r2]") + special_icon = TRUE + icon_state = "almayer_deco_wall[decoration_type]" + else // Wall connection was broken, return to normality + special_icon = FALSE + return ..() /turf/closed/wall/almayer/take_damage(dam, mob/M) var/damage_check = max(0, damage + dam) @@ -51,6 +57,24 @@ damage_cap = HEALTH_WALL_REINFORCED icon_state = "reinforced" +/// Acts like /turf/closed/wall/almayer/outer until post-hijack where it reverts to /turf/closed/wall/almayer/reinforced. +/turf/closed/wall/almayer/reinforced/temphull + name = "heavy reinforced hull" + desc = "A highly reinforced metal wall used to separate rooms and make up the ship. It would take a great impact to weaken this wall." + damage_cap = HEALTH_WALL_REINFORCED + icon_state = "temphull" + hull = TRUE + +/turf/closed/wall/almayer/reinforced/temphull/Initialize() + . = ..() + if(is_mainship_level(z)) + RegisterSignal(SSdcs, COMSIG_GLOB_HIJACK_IMPACTED, PROC_REF(de_hull)) + +/turf/closed/wall/almayer/reinforced/temphull/proc/de_hull() + SIGNAL_HANDLER + hull = FALSE + desc = "A highly reinforced metal wall used to separate rooms and make up the ship. It has been weakened by a great impact." + /turf/closed/wall/almayer/outer name = "outer hull" desc = "A metal wall used to separate space from the ship" @@ -125,7 +149,7 @@ operating = TRUE flick("containment_wall_divide_lowering", src) icon_state = "containment_wall_divide_lowered" - SetOpacity(0) + set_opacity(0) density = FALSE operating = FALSE change_weeds() @@ -136,7 +160,7 @@ operating = TRUE flick("containment_wall_divide_rising", src) icon_state = "containment_wall_divide" - SetOpacity(1) + set_opacity(1) density = TRUE operating = FALSE @@ -199,14 +223,12 @@ hull = 0 //Can't be deconstructed damage_cap = HEALTH_WALL - max_temperature = 28000 //K, walls will take damage if they're next to a fire hotter than this walltype = WALL_SULACO //Changes all the sprites and icons. /turf/closed/wall/sulaco/hull name = "outer hull" desc = "A reinforced outer hull, probably to prevent breaches" hull = 1 - max_temperature = 50000 // Nearly impossible to melt walltype = WALL_SULACO @@ -214,7 +236,6 @@ name = "outer hull" desc = "A reinforced outer hull, probably to prevent breaches" hull = 1 - max_temperature = 50000 // Nearly impossible to melt walltype = WALL_SULACO @@ -239,6 +260,8 @@ icon_state = "fakewindows" opacity = FALSE +INITIALIZE_IMMEDIATE(/turf/closed/wall/indestructible/splashscreen) + /turf/closed/wall/indestructible/splashscreen name = "Lobby Art" desc = "Assorted artworks." @@ -253,15 +276,15 @@ tag = "LOBBYART" /proc/force_lobby_art(art_id) - displayed_lobby_art = art_id + GLOB.displayed_lobby_art = art_id var/turf/closed/wall/indestructible/splashscreen/SS = locate("LOBBYART") var/list/lobby_arts = CONFIG_GET(str_list/lobby_art_images) var/list/lobby_authors = CONFIG_GET(str_list/lobby_art_authors) - SS.icon_state = lobby_arts[displayed_lobby_art] - SS.desc = "Artwork by [lobby_authors[displayed_lobby_art]]" + SS.icon_state = lobby_arts[GLOB.displayed_lobby_art] + SS.desc = "Artwork by [lobby_authors[GLOB.displayed_lobby_art]]" for(var/client/C in GLOB.clients) - if(displayed_lobby_art != -1) - var/author = lobby_authors[displayed_lobby_art] + if(GLOB.displayed_lobby_art != -1) + var/author = lobby_authors[GLOB.displayed_lobby_art] if(author != "Unknown") to_chat_forced(C, SPAN_ROUNDBODY("
        This round's lobby art is brought to you by [author]
        ")) @@ -522,7 +545,6 @@ desc = "A thick and chunky metal wall covered in jagged ribs." walltype = WALL_STRATA_OUTPOST_RIBBED damage_cap = HEALTH_WALL_REINFORCED - max_temperature = 28000 /turf/closed/wall/strata_outpost name = "bare outpost walls" @@ -537,7 +559,6 @@ desc = "A thick and chunky metal wall covered in jagged ribs." walltype = WALL_STRATA_OUTPOST_RIBBED damage_cap = HEALTH_WALL_REINFORCED - max_temperature = 28000 /turf/closed/wall/strata_outpost/reinforced/hull hull = 1 @@ -558,7 +579,6 @@ icon_state = "solaris_interior_r" walltype = WALL_SOLARISR damage_cap = HEALTH_WALL_REINFORCED - max_temperature = 28000 /turf/closed/wall/solaris/reinforced/hull name = "heavy reinforced colony wall" @@ -591,7 +611,6 @@ desc = "Just like in the orange box! This one is reinforced" walltype = WALL_DEVWALL_R damage_cap = HEALTH_WALL_REINFORCED - max_temperature = 28000 /turf/closed/wall/dev/reinforced/hull name = "greybox hull wall" @@ -625,7 +644,6 @@ desc = "Dusty worn down walls that were once built to last. This one is reinforced" walltype = WALL_KUTJEVO_COLONYR damage_cap = HEALTH_WALL_REINFORCED - max_temperature = 28000 /turf/closed/wall/kutjevo/colony/reinforced/hull icon_state = "colonyh" @@ -710,6 +728,17 @@ for(var/obj/effect/alien/weeds/node/weed_node in contents) qdel(weed_node) + if(hivenumber == XENO_HIVE_NORMAL) + RegisterSignal(SSdcs, COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING, PROC_REF(forsaken_handling)) + +/turf/closed/wall/resin/proc/forsaken_handling() + SIGNAL_HANDLER + if(is_ground_level(z)) + hivenumber = XENO_HIVE_FORSAKEN + set_hive_data(src, XENO_HIVE_FORSAKEN) + + UnregisterSignal(SSdcs, COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING) + /turf/closed/wall/resin/pillar name = "resin pillar segment" hull = TRUE @@ -738,6 +767,14 @@ icon_state = "thickresin" walltype = WALL_THICKRESIN +/turf/closed/wall/resin/tutorial + name = "tutorial resin wall" + desc = "Weird slime solidified into a wall. Remarkably resilient." + hivenumber = XENO_HIVE_TUTORIAL + +/turf/closed/wall/resin/tutorial/attack_alien(mob/living/carbon/xenomorph/xeno) + return + /turf/closed/wall/resin/membrane name = "resin membrane" desc = "Weird slime translucent enough to let light pass through." @@ -801,7 +838,7 @@ var/datum/movable_wall_group/MWG = new() MWG.add_structure(current) - for(var/dir in cardinal) + for(var/dir in GLOB.cardinals) connected = locate() in get_step(current, dir) if(connected in current_walls) if(connected.group == src) @@ -936,7 +973,7 @@ /obj/structure/alien/movable_wall/proc/update_connections(propagate = FALSE) var/list/wall_dirs = list() - for(var/dir in alldirs) + for(var/dir in GLOB.alldirs) var/obj/structure/alien/movable_wall/MW = locate() in get_step(src, dir) if(!(MW in group.walls)) continue @@ -980,17 +1017,17 @@ else return attack_hand(user) -/obj/structure/alien/movable_wall/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/structure/alien/movable_wall/get_projectile_hit_boolean(obj/projectile/P) return TRUE -/obj/structure/alien/movable_wall/bullet_act(obj/item/projectile/P) +/obj/structure/alien/movable_wall/bullet_act(obj/projectile/P) . = ..() take_damage(P.damage) /obj/structure/alien/movable_wall/proc/recalculate_structure() var/list/found_structures = list() var/current_walls = 0 - for(var/i in cardinal) + for(var/i in GLOB.cardinals) var/turf/T = get_step(src, i) var/obj/structure/alien/movable_wall/MW = locate() in T if(!MW) @@ -1047,7 +1084,7 @@ return COMPONENT_TURF_ALLOW_MOVEMENT /obj/structure/alien/movable_wall/Move(NewLoc, direct) - if(!(direct in cardinal)) + if(!(direct in GLOB.cardinals)) return group.try_move_in_direction(direct) @@ -1097,10 +1134,14 @@ var/explosive_multiplier = 0.3 var/reflection_multiplier = 0.5 -/turf/closed/wall/resin/reflective/bullet_act(obj/item/projectile/P) +/turf/closed/wall/resin/reflective/bullet_act(obj/projectile/P) if(src in P.permutated) return + //Ineffective if someone is sitting on the wall + if(locate(/mob) in contents) + return ..() + if(!prob(chance_to_reflect)) if(P.ammo.damage_type == BRUTE) P.damage *= brute_multiplier @@ -1109,7 +1150,7 @@ // Bullet gets absorbed if it has IFF or can't be reflected. return - var/obj/item/projectile/new_proj = new(src, construction_data ? construction_data : create_cause_data(initial(name))) + var/obj/projectile/new_proj = new(src, construction_data ? construction_data : create_cause_data(initial(name))) new_proj.generate_bullet(P.ammo) new_proj.damage = P.damage * reflection_multiplier // don't make it too punishing new_proj.accuracy = HIT_ACCURACY_TIER_7 // 35% chance to hit something @@ -1125,7 +1166,7 @@ return TRUE -/turf/closed/wall/resin/reflective/proc/bullet_ignore_turf(obj/item/projectile/P, turf/T) +/turf/closed/wall/resin/reflective/proc/bullet_ignore_turf(obj/projectile/P, turf/T) SIGNAL_HANDLER if(T == src) return COMPONENT_BULLET_PASS_THROUGH @@ -1176,7 +1217,7 @@ M.animation_attack_on(src) M.visible_message(SPAN_XENONOTICE("\The [M] claws \the [src]!"), \ - SPAN_XENONOTICE("You claw \the [src].")) + SPAN_XENONOTICE("We claw \the [src].")) playsound(src, "alien_resin_break", 25) if (M.hivenumber == hivenumber) take_damage(Ceiling(HEALTH_WALL_XENO * 0.25)) //Four hits for a regular wall @@ -1217,7 +1258,7 @@ . = ..() if(.) var/turf/T - for(var/i in cardinal) + for(var/i in GLOB.cardinals) T = get_step(src, i) if(!istype(T)) continue for(var/obj/structure/mineral_door/resin/R in T) diff --git a/code/game/turfs/walls/walls.dm b/code/game/turfs/walls/walls.dm index 411ff8182661..cb58ad2274a4 100644 --- a/code/game/turfs/walls/walls.dm +++ b/code/game/turfs/walls/walls.dm @@ -5,9 +5,11 @@ icon_state = "0" opacity = TRUE layer = WALL_LAYER - var/hull = 0 //1 = Can't be deconstructed by tools or thermite. Used for Sulaco walls + /// 1 = Can't be deconstructed by tools or thermite. Used for Sulaco walls + var/hull = 0 var/walltype = WALL_METAL - var/junctiontype //when walls smooth with one another, the type of junction each wall is. + /// when walls smooth with one another, the type of junction each wall is. + var/junctiontype var/thermite = 0 var/melting = FALSE var/claws_minimum = CLAW_TYPE_SHARP @@ -21,7 +23,8 @@ ) var/damage = 0 - var/damage_cap = HEALTH_WALL //Wall will break down to girders if damage reaches this point + /// Wall will break down to girders if damage reaches this point + var/damage_cap = HEALTH_WALL var/damage_overlay var/global/damage_overlays[8] @@ -30,12 +33,12 @@ var/image/bullet_overlay = null var/list/wall_connections = list("0", "0", "0", "0") var/neighbors_list = 0 - var/max_temperature = 1800 //K, walls will take damage if they're next to a fire hotter than this var/repair_materials = list("wood"= 0.075, "metal" = 0.15, "plasteel" = 0.3) //Max health % recovered on a nailgun repair var/d_state = 0 //Normal walls are now as difficult to remove as reinforced walls - var/obj/effect/acid_hole/acided_hole //the acid hole inside the wall + /// the acid hole inside the wall + var/obj/effect/acid_hole/acided_hole var/acided_hole_dir = SOUTH var/special_icon = 0 @@ -73,7 +76,7 @@ . = ..() if(.) //successful turf change var/turf/T - for(var/i in cardinal) + for(var/i in GLOB.cardinals) T = get_step(src, i) //nearby glowshrooms updated @@ -88,7 +91,7 @@ if(istype(found_object, /obj/structure/sign/poster)) var/obj/structure/sign/poster/found_poster = found_object found_poster.roll_and_drop(src) - if(istype(found_object, /obj/effect/alien/weeds)) + if(istype(found_object, /obj/effect/alien/weeds/weedwall)) qdel(found_object) var/list/turf/cardinal_neighbors = list(get_step(src, NORTH), get_step(src, SOUTH), get_step(src, EAST), get_step(src, WEST)) @@ -98,11 +101,15 @@ qdel(found_nest) //nests are built on walls, no walls, no nest /turf/closed/wall/MouseDrop_T(mob/current_mob, mob/user) + if(!ismob(current_mob)) + return + if(acided_hole) if(current_mob == user && isxeno(user)) acided_hole.use_wall_hole(user) return - if(isxeno(user)) + + if(isxeno(user) && istype(user.get_active_hand(), /obj/item/grab)) var/mob/living/carbon/xenomorph/user_as_xenomorph = user user_as_xenomorph.do_nesting_host(current_mob, src) ..() @@ -166,6 +173,9 @@ if (acided_hole) . += SPAN_WARNING("There's a large hole in the wall that could've been caused by some sort of acid.") + if(flags_turf & TURF_ORGANIC) + return // Skip the part below. 'Organic' walls aren't deconstructable with tools. + switch(d_state) if(WALL_STATE_WELD) . += SPAN_INFO("The outer plating is intact. A blowtorch should slice it open.") @@ -328,7 +338,7 @@ var/mob/living/carbon/xenomorph/user_as_xenomorph = user user_as_xenomorph.do_nesting_host(attacker_grab.grabbed_thing, src) - if(!ishuman(user) && !isrobot(user)) + if(!ishuman(user)) to_chat(user, SPAN_WARNING("You don't have the dexterity to do this!")) return @@ -399,7 +409,7 @@ if(istype(attacking_item, /obj/item/prop/torch_frame)) to_chat(user, SPAN_NOTICE("You place the torch down on the wall.")) - new /obj/structure/prop/brazier/torch/frame(src) + new /obj/structure/prop/brazier/frame/full/torch(src) qdel(attacking_item) if(hull) diff --git a/code/game/verbs/discord.dm b/code/game/verbs/discord.dm index 210038084caa..2446c89aafe5 100644 --- a/code/game/verbs/discord.dm +++ b/code/game/verbs/discord.dm @@ -29,7 +29,7 @@ var/datum/entity/discord_identifier/new_identifier = DB_ENTITY(/datum/entity/discord_identifier) var/not_unique = TRUE - var/long_list = operation_postfixes + operation_prefixes + operation_titles + var/long_list = GLOB.operation_postfixes + GLOB.operation_prefixes + GLOB.operation_titles var/token while(not_unique) diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 1c94eb485300..2fe22ef3d4da 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -15,10 +15,10 @@ return if(!admin_holder || !(admin_holder.rights & R_MOD)) - if(!ooc_allowed) //Send to LOOC instead + if(!GLOB.ooc_allowed) //Send to LOOC instead looc(msg) return - if(!dooc_allowed && (mob.stat == DEAD || isobserver(mob))) + if(!GLOB.dooc_allowed && (mob.stat == DEAD || isobserver(mob))) to_chat(usr, SPAN_DANGER("OOC for dead mobs has been turned off.")) return if(prefs.muted & MUTE_OOC) @@ -57,24 +57,38 @@ display_colour = CONFIG_GET(string/ooc_color_default) msg = process_chat_markup(msg, list("*")) - + var/ooc_prefix = handle_ooc_prefix() for(var/client/C in GLOB.clients) if(C.prefs.toggles_chat & CHAT_OOC) var/display_name = src.key - if(prefs.unlock_content) - if(prefs.toggle_prefs & TOGGLE_MEMBER_PUBLIC) - var/byond = icon('icons/effects/effects.dmi', "byondlogo") - display_name = "[icon2html(byond, GLOB.clients)][display_name]" - if(CONFIG_GET(flag/ooc_country_flags)) - if(prefs.toggle_prefs & TOGGLE_OOC_FLAG) - display_name = "[country2chaticon(src.country, GLOB.clients)][display_name]" - to_chat(C, "[src.donator ? "\[D\] " : ""]OOC: [display_name]: [msg]") + to_chat(C, "[ooc_prefix]OOC: [display_name]: [msg]") + /client/proc/set_ooc_color_global(newColor as color) set name = "OOC Text Color - Global" set desc = "Set to yellow for eye burning goodness." set category = "OOC.OOC" GLOB.ooc_color_override = newColor +///Used by OOC chat to generate icons for player prefix. Intended to make it easy to see at a glance if someone is staff, WL Council or Mentor. +/client/proc/handle_ooc_prefix() + var/prefix = "" + if(prefs.unlock_content && (prefs.toggle_prefs & TOGGLE_MEMBER_PUBLIC)) + var/byond = icon('icons/effects/effects.dmi', "byondlogo") + prefix += "[icon2html(byond, GLOB.clients)]" + if(CONFIG_GET(flag/ooc_country_flags) && (prefs.toggle_prefs & TOGGLE_OOC_FLAG)) + prefix += "[country2chaticon(src.country, GLOB.clients)]" + if(donator) + prefix += "[icon2html('icons/ooc.dmi', GLOB.clients, "Donator")]" + if(isCouncil(src)) + prefix += "[icon2html('icons/ooc.dmi', GLOB.clients, "WhitelistCouncil")]" + if(admin_holder) + var/list/rank_icons = icon_states('icons/ooc.dmi') + var/rankname = admin_holder.rank + if(rankname in rank_icons) + prefix += "[icon2html('icons/ooc.dmi', GLOB.clients, admin_holder.rank)]" + if(prefix) + prefix = "[prefix] " + return prefix /client/verb/looc(msg as text) set name = "LOOC" //Gave this shit a shorter name so you only have to time out "ooc" rather than "ooc message" to use it --NeoFite @@ -94,10 +108,10 @@ return if(!admin_holder || !(admin_holder.rights & R_MOD)) - if(!looc_allowed) + if(!GLOB.looc_allowed) to_chat(src, SPAN_DANGER("LOOC is globally muted")) return - if(!dlooc_allowed && (mob.stat != CONSCIOUS || isobserver(mob))) + if(!GLOB.dlooc_allowed && (mob.stat != CONSCIOUS || isobserver(mob))) to_chat(usr, SPAN_DANGER("Sorry, you cannot utilize LOOC while dead or incapacitated.")) return if(prefs.muted & MUTE_OOC) @@ -136,7 +150,7 @@ if(C.prefs.toggles_chat & CHAT_LOOC) to_chat(C, "LOOC: [display_name]: [msg]") - if(mob.looc_overhead || ooc_allowed) + if(mob.looc_overhead || GLOB.ooc_allowed) var/transmit_language = isxeno(mob) ? LANGUAGE_XENOMORPH : LANGUAGE_ENGLISH mob.langchat_speech(msg, heard, GLOB.all_languages[transmit_language], "#ff47d7") diff --git a/code/game/verbs/records.dm b/code/game/verbs/records.dm index 56a440e3558c..743a09d0ab6e 100644 --- a/code/game/verbs/records.dm +++ b/code/game/verbs/records.dm @@ -53,7 +53,7 @@ if(NOTE_YAUTJA) color = "#114e11" - dat += "[N.text] by [admin_ckey] ([N.admin_rank]) on [N.date] " + dat += "[N.text] by [admin_ckey] ([N.admin_rank]) on [N.date] [NOTE_ROUND_ID(N)] " dat += "

        " dat += "
        " @@ -84,7 +84,7 @@ var/list/options = list() if(CLIENT_IS_STAFF(src)) - options = note_categories.Copy() + options = GLOB.note_categories.Copy() if(admin_holder.rights & R_PERMISSIONS) MA = TRUE else if(!isCouncil(src)) @@ -97,13 +97,13 @@ return target = ckey(target) - if(RoleAuthority.roles_whitelist[src.ckey] & WHITELIST_COMMANDER_COUNCIL) + if(check_whitelist_status(WHITELIST_COMMANDER_COUNCIL)) options |= "Commanding Officer" edit_C = TRUE - if(RoleAuthority.roles_whitelist[src.ckey] & WHITELIST_SYNTHETIC_COUNCIL) + if(check_whitelist_status(WHITELIST_SYNTHETIC_COUNCIL)) options |= "Synthetic" edit_S = TRUE - if(RoleAuthority.roles_whitelist[src.ckey] & WHITELIST_YAUTJA_COUNCIL) + if(check_whitelist_status(WHITELIST_YAUTJA_COUNCIL)) options |= "Yautja" edit_Y = TRUE @@ -116,17 +116,17 @@ if("Merit") show_other_record(NOTE_MERIT, choice, target, TRUE) if("Commanding Officer") - if(MA || (RoleAuthority.roles_whitelist[src.ckey] & WHITELIST_COMMANDER_LEADER)) + if(MA || check_whitelist_status(WHITELIST_COMMANDER_LEADER)) show_other_record(NOTE_COMMANDER, choice, target, TRUE, TRUE) else show_other_record(NOTE_COMMANDER, choice, target, edit_C) if("Synthetic") - if(MA || (RoleAuthority.roles_whitelist[src.ckey] & WHITELIST_SYNTHETIC_LEADER)) + if(MA || check_whitelist_status(WHITELIST_SYNTHETIC_LEADER)) show_other_record(NOTE_SYNTHETIC, choice, target, TRUE, TRUE) else show_other_record(NOTE_SYNTHETIC, choice, target, edit_S) if("Yautja") - if(MA || (RoleAuthority.roles_whitelist[src.ckey] & WHITELIST_YAUTJA_LEADER)) + if(MA || check_whitelist_status(WHITELIST_YAUTJA_LEADER)) show_other_record(NOTE_YAUTJA, choice, target, TRUE, TRUE) else show_other_record(NOTE_YAUTJA, choice, target, edit_Y) @@ -143,7 +143,7 @@ dat += "" var/color = "#008800" - var/add_dat = "Add Admin Note
        Add Confidential Admin Note
        " + var/add_dat = "Add Admin Note
        Add Confidential Admin Note
        " switch(note_category) if(NOTE_MERIT) color = "#9e3dff" @@ -168,7 +168,7 @@ continue var/admin_ckey = N.admin_ckey - dat += "[N.text] by [admin_ckey] ([N.admin_rank]) on [N.date] " + dat += "[N.text] by [admin_ckey] ([N.admin_rank]) on [N.date] [NOTE_ROUND_ID(N)] " ///Can remove notes from anyone other than yourself, unless you're the host. So long as you have deletion access anyway. if((can_del && target != get_player_from_key(key)) || ishost(usr)) dat += "Remove" @@ -181,3 +181,47 @@ dat += "" show_browser(src, dat, "[target]'s [category_text] Notes", "otherplayersinfo", "size=480x480") + +GLOBAL_DATUM_INIT(medals_view_tgui, /datum/medals_view_tgui, new) + +/datum/medals_view_tgui/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "MedalsViewer", "[user.ckey]'s Medals") + ui.open() + +/datum/medals_view_tgui/ui_static_data(mob/user) + . = ..() + .["medals"] = list() + + for(var/datum/view_record/medal_view/medal as anything in DB_VIEW(/datum/view_record/medal_view, DB_COMP("player_id", DB_EQUALS, user.client.player_data.id))) + var/xeno_medal = FALSE + if(medal.medal_type in GLOB.xeno_medals) + xeno_medal = TRUE + + var/list/current_medal = list( + "round_id" = medal.round_id, + "medal_type" = medal.medal_type, + "medal_icon" = replacetext(medal.medal_type, " ", "-"), + "xeno_medal" = xeno_medal, + "recipient_name" = medal.recipient_name, + "recipient_role" = medal.recipient_role, + "giver_name" = medal.giver_name, + "citation" = medal.citation + ) + + .["medals"] += list(current_medal) + +/datum/medals_view_tgui/ui_state(mob/user) + return GLOB.always_state + +/datum/medals_view_tgui/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/medal) + ) + +/client/verb/view_own_medals() + set name = "View Own Medals" + set category = "OOC.Records" + + GLOB.medals_view_tgui.tgui_interact(mob) diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index bb0e53a012cb..5871fdc7a152 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -42,6 +42,8 @@ var/list/Lines = list() if(admin_holder && ((R_ADMIN & admin_holder.rights) || (R_MOD & admin_holder.rights))) for(var/client/C in GLOB.clients) + if(!CLIENT_HAS_RIGHTS(src, R_STEALTH) && (CLIENT_IS_STEALTHED(C))) + continue var/entry = "[C.key]" if(C.mob) //Juuuust in case if(istype(C.mob, /mob/new_player)) @@ -83,7 +85,7 @@ counted_humanoids["Infected humans"]++ if(C.mob.faction == FACTION_MARINE) counted_humanoids[FACTION_MARINE]++ - if(C.mob.job in (ROLES_MARINES)) + if(C.mob.job in (GLOB.ROLES_MARINES)) counted_humanoids["USCM Marines"]++ else counted_humanoids[C.mob.faction]++ @@ -139,7 +141,7 @@ else for(var/client/C in GLOB.clients) - if(C.admin_holder && C.admin_holder.fakekey) + if((C.admin_holder && C.admin_holder.fakekey) || (CLIENT_IS_STEALTHED(C))) continue Lines += C.key @@ -158,9 +160,9 @@ var/dat = "" var/list/mappings if(CONFIG_GET(flag/show_manager)) - LAZYSET(mappings, "Management", R_HOST) + LAZYSET(mappings, "Management", R_PERMISSIONS) if(CONFIG_GET(flag/show_devs)) - LAZYSET(mappings, "Maintainers", R_PROFILER) + LAZYSET(mappings, "Maintainers", R_PROFILER) LAZYSET(mappings, "Admins", R_ADMIN) if(CONFIG_GET(flag/show_mods)) LAZYSET(mappings, "Moderators", R_MOD) @@ -172,6 +174,8 @@ LAZYSET(listings, category, list()) for(var/client/C in GLOB.admins) + if(CLIENT_IS_STEALTHED(C) && !CLIENT_HAS_RIGHTS(src, R_STEALTH)) + continue if(C.admin_holder?.fakekey && !CLIENT_IS_STAFF(src)) continue for(var/category in mappings) @@ -182,12 +186,14 @@ for(var/category in listings) dat += "
        Current [category] ([length(listings[category])]):
        \n" for(var/client/entry in listings[category]) - dat += "\t[entry.key] is a [entry.admin_holder.rank]" + dat += "\t[entry.key] is \a [entry.admin_holder.rank]" if(entry.admin_holder.extra_titles?.len) for(var/srank in entry.admin_holder.extra_titles) dat += " & [srank]" if(CLIENT_IS_STAFF(src)) - if(entry.admin_holder?.fakekey) + if(CLIENT_IS_STEALTHED(entry)) + dat += " (STEALTHED)" + else if(entry.admin_holder?.fakekey) dat += " (HIDDEN)" if(istype(entry.mob, /mob/dead/observer)) dat += " - Observing" diff --git a/code/game/world.dm b/code/game/world.dm index 3b3a1c2625d3..627e245bc4c1 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -1,10 +1,8 @@ -var/world_view_size = 7 -var/lobby_view_size = 16 +GLOBAL_VAR_INIT(world_view_size, 7) +GLOBAL_VAR_INIT(lobby_view_size, 16) -var/internal_tick_usage = 0 - -var/list/reboot_sfx = file2list("config/reboot_sfx.txt") +GLOBAL_LIST_INIT(reboot_sfx, file2list("config/reboot_sfx.txt")) /world mob = /mob/new_player turf = /turf/open/space/basic @@ -18,7 +16,6 @@ var/list/reboot_sfx = file2list("config/reboot_sfx.txt") if (debug_server) LIBCALL(debug_server, "auxtools_init")() enable_debugging() - internal_tick_usage = 0.2 * world.tick_lag hub_password = "kMZy3U5jJHSiBQjr" #ifdef BYOND_TRACY @@ -39,7 +36,6 @@ var/list/reboot_sfx = file2list("config/reboot_sfx.txt") GLOB.changelog_hash = fexists(latest_changelog) ? md5(latest_changelog) : 0 //for telling if the changelog has changed recently initialize_tgs() - initialize_marine_armor() #ifdef UNIT_TESTS GLOB.test_log = "data/logs/tests.log" @@ -50,8 +46,6 @@ var/list/reboot_sfx = file2list("config/reboot_sfx.txt") LoadBans() load_motd() load_tm_message() - load_mode() - loadShuttleInfoDatums() populate_gear_list() initialize_global_regex() @@ -62,18 +56,16 @@ var/list/reboot_sfx = file2list("config/reboot_sfx.txt") var/testing_locally = (world.params && world.params["local_test"]) var/running_tests = (world.params && world.params["run_tests"]) - #ifdef UNIT_TESTS + #if defined(AUTOWIKI) || defined(UNIT_TESTS) running_tests = TRUE #endif // Only do offline sleeping when the server isn't running unit tests or hosting a local dev test sleep_offline = (!running_tests && !testing_locally) - if(!RoleAuthority) - RoleAuthority = new /datum/authority/branch/role() + if(!GLOB.RoleAuthority) + GLOB.RoleAuthority = new /datum/authority/branch/role() to_world(SPAN_DANGER("\b Job setup complete")) - if(!EvacuationAuthority) EvacuationAuthority = new - initiate_minimap_icons() change_tick_lag(CONFIG_GET(number/ticklag)) @@ -85,20 +77,20 @@ var/list/reboot_sfx = file2list("config/reboot_sfx.txt") HandleTestRun() #endif + #ifdef AUTOWIKI + setup_autowiki() + #endif + update_status() //Scramble the coords obsfucator - obfs_x = rand(-500, 500) //A number between -100 and 100 - obfs_y = rand(-500, 500) //A number between -100 and 100 - - spawn(3000) //so we aren't adding to the round-start lag - if(CONFIG_GET(flag/ToRban)) - ToRban_autoupdate() + GLOB.obfs_x = rand(-500, 500) //A number between -100 and 100 + GLOB.obfs_y = rand(-500, 500) //A number between -100 and 100 // If the server's configured for local testing, get everything set up ASAP. // Shamelessly stolen from the test manager's host_tests() proc if(testing_locally) - master_mode = "extended" + GLOB.master_mode = "Extended" // Wait for the game ticker to initialize while(!SSticker.initialized) @@ -108,9 +100,6 @@ var/list/reboot_sfx = file2list("config/reboot_sfx.txt") SSticker.request_start() return -var/world_topic_spam_protect_ip = "0.0.0.0" -var/world_topic_spam_protect_time = world.timeofday - /proc/start_logging() GLOB.round_id = SSentity_manager.round.id @@ -171,19 +160,14 @@ var/world_topic_spam_protect_time = world.timeofday response["response"] = "Payload too large" return json_encode(response) - if(SSfail_to_topic?.IsRateLimited(addr)) - response["statuscode"] = 429 - response["response"] = "Rate limited" - return json_encode(response) - var/logging = CONFIG_GET(flag/log_world_topic) var/topic_decoded = rustg_url_decode(T) if(!rustg_json_is_valid(topic_decoded)) if(logging) log_topic("(NON-JSON) \"[topic_decoded]\", from:[addr], master:[master], key:[key]") // Fallback check for spacestation13.com requests - if(topic_decoded == "ping") - return length(GLOB.clients) + if(topic_decoded == "status") + return list2params(list("players" = length(GLOB.clients))) response["statuscode"] = 400 response["response"] = "Bad Request - Invalid JSON format" return json_encode(response) @@ -259,44 +243,29 @@ var/world_topic_spam_protect_time = world.timeofday shutdown() /world/proc/send_tgs_restart() - if(CONFIG_GET(string/new_round_alert_channel) && CONFIG_GET(string/new_round_alert_role_id)) - if(round_statistics) - send2chat("[round_statistics.round_name][GLOB.round_id ? " (Round [GLOB.round_id])" : ""] completed!", CONFIG_GET(string/new_round_alert_channel)) - if(SSmapping.next_map_configs) - var/datum/map_config/next_map = SSmapping.next_map_configs[GROUND_MAP] - if(next_map) - send2chat("<@&[CONFIG_GET(string/new_round_alert_role_id)]> Restarting! Next map is [next_map.map_name]", CONFIG_GET(string/new_round_alert_channel)) - else - send2chat("<@&[CONFIG_GET(string/new_round_alert_role_id)]> Restarting!", CONFIG_GET(string/new_round_alert_channel)) - return + if(!CONFIG_GET(string/new_round_alert_channel)) + return + + if(!GLOB.round_statistics) + return + + send2chat(new /datum/tgs_message_content("[GLOB.round_statistics.round_name][GLOB.round_id ? " (Round [GLOB.round_id])" : ""] completed!"), CONFIG_GET(string/new_round_alert_channel)) /world/proc/send_reboot_sound() - var/reboot_sound = SAFEPICK(reboot_sfx) + var/reboot_sound = SAFEPICK(GLOB.reboot_sfx) if(reboot_sound) var/sound/reboot_sound_ref = sound(reboot_sound) for(var/client/client as anything in GLOB.clients) if(client?.prefs.toggles_sound & SOUND_REBOOT) SEND_SOUND(client, reboot_sound_ref) -/world/proc/load_mode() - var/list/Lines = file2list("data/mode.txt") - if(Lines.len) - if(Lines[1]) - master_mode = Lines[1] - log_misc("Saved mode is '[master_mode]'") - -/world/proc/save_mode(the_mode) - var/F = file("data/mode.txt") - fdel(F) - F << the_mode - /world/proc/load_motd() - join_motd = file2text("config/motd.txt") + GLOB.join_motd = file2text("config/motd.txt") /world/proc/load_tm_message() var/datum/getrev/revdata = GLOB.revdata if(revdata.testmerge.len) - current_tms = revdata.GetTestMergeInfo() + GLOB.current_tms = revdata.GetTestMergeInfo() /world/proc/update_status() //Note: Hub content is limited to 254 characters, including limited HTML/CSS. @@ -314,32 +283,10 @@ var/world_topic_spam_protect_time = world.timeofday world.status = s -#define FAILED_DB_CONNECTION_CUTOFF 1 -var/failed_db_connections = 0 -var/failed_old_db_connections = 0 - -// /hook/startup/proc/connectDB() -// if(!setup_database_connection()) -// world.log << "Your server failed to establish a connection with the feedback database." -// else -// world.log << "Feedback database connection established." -// return 1 - -var/datum/BSQL_Connection/connection -/proc/setup_database_connection() - - if(failed_db_connections > FAILED_DB_CONNECTION_CUTOFF) //If it failed to establish a connection more than 5 times in a row, don't bother attempting to conenct anymore. - return 0 - - - return . - /proc/set_global_view(view_size) - world_view_size = view_size + GLOB.world_view_size = view_size for(var/client/c in GLOB.clients) - c.view = world_view_size - -#undef FAILED_DB_CONNECTION_CUTOFF + c.view = GLOB.world_view_size /proc/give_image_to_client(obj/O, icon_text) var/image/I = image(null, O) diff --git a/code/global.dm b/code/global.dm index c5c6bdf84066..f141dc5d68ac 100644 --- a/code/global.dm +++ b/code/global.dm @@ -12,168 +12,30 @@ #define R_POSSESS (1<<5) #define R_PERMISSIONS (1<<6) #define R_STEALTH (1<<7) -#define R_REJUVINATE (1<<8) -#define R_COLOR (1<<9) -#define R_VAREDIT (1<<10) -#define R_SOUNDS (1<<11) -#define R_SPAWN (1<<12) -#define R_MOD (1<<13) -#define R_MENTOR (1<<14) -#define R_HOST (1<<15) -#define R_PROFILER (1<<16) -#define R_NOLOCK (1<<17) -#define R_EVENT (1<<18) - -/// The sum of all other rank permissions. -#define R_EVERYTHING ((1<<19)-1) - +#define R_COLOR (1<<8) +#define R_VAREDIT (1<<9) +#define R_SOUNDS (1<<10) +#define R_SPAWN (1<<11) +#define R_MOD (1<<12) +#define R_MENTOR (1<<13) +#define R_HOST (1<<14) +#define R_PROFILER (1<<15) +#define R_NOLOCK (1<<16) +#define R_EVENT (1<<17) + +/// The sum of all other rank permissions, other than host or profiler. +#define RL_EVERYTHING (R_BUILDMODE|R_ADMIN|R_BAN|R_SERVER|R_DEBUG|R_PERMISSIONS|R_POSSESS|R_STEALTH|R_COLOR|R_VAREDIT|R_EVENT|R_SOUNDS|R_NOLOCK|R_SPAWN|R_MOD|R_MENTOR) +/// Truely everything +#define RL_HOST (RL_EVERYTHING|R_HOST|R_PROFILER) // 512.1430 increases maximum bit flags from 16 to 24, so the following flags should be available for future changes: //================================================= #define CLIENT_HAS_RIGHTS(cli, flags) ((cli?.admin_holder?.rights & flags) == flags) #define CLIENT_IS_STAFF(cli) (cli?.admin_holder?.rights & (R_MOD|R_ADMIN)) +#define CLIENT_IS_MENTOR(cli) CLIENT_HAS_RIGHTS(cli, R_MENTOR) +#define CLIENT_IS_STEALTHED(cli) (CLIENT_HAS_RIGHTS(cli, R_STEALTH) && cli.prefs?.toggles_admin & ADMIN_STEALTHMODE) #define AHOLD_IS_MOD(ahold) (ahold && (ahold.rights & R_MOD)) #define AHOLD_IS_ADMIN(ahold) (ahold && (ahold.rights & R_ADMIN)) //items that ask to be called every cycle - -////////////// -var/list/paper_tag_whitelist = list("center","p","div","span","h1","h2","h3","h4","h5","h6","hr","pre", \ - "big","small","font","i","u","b","s","sub","sup","tt","br","hr","ol","ul","li","caption","col", \ - "table","td","th","tr") - -/////////////// - -var/command_name = "Central Command" -var/station_name = "[MAIN_SHIP_NAME]" -var/game_version = "Colonial Marines" -var/game_year = 2182 - -var/going = 1 -var/master_mode = "Distress Signal" - -/// If this is anything but "secret", the secret rotation will forceably choose this mode. -var/secret_force_mode = "secret" - -var/host = null -var/ooc_allowed = 1 -var/looc_allowed = 1 -var/dsay_allowed = 1 -var/dooc_allowed = 1 -var/dlooc_allowed = 0 -var/abandon_allowed = 1 -var/enter_allowed = 1 -var/shuttle_frozen = 0 -var/shuttle_left = 0 -var/midi_playing = 0 -var/heard_midi = 0 -var/total_silenced = 0 - -var/list/admin_log = list() -var/list/asset_log = list() - -var/CELLRATE = 0.006 // multiplier for watts per tick <> cell storage (eg: 0.02 means if there is a load of 1000 watts, 20 units will be taken from a cell per second) - //It's a conversion constant. power_used*CELLRATE = charge_provided, or charge_used/CELLRATE = power_provided -var/CHARGELEVEL = 0.001 // Cap for how fast cells charge, as a percentage-per-tick (0.01 means cellcharge is capped to 1% per second) - -var/VehicleElevatorConsole -var/VehicleGearConsole - -//Spawnpoints. -var/list/fallen_list = list() -/// This is for dogtags placed on crosses- they will show up at the end-round memorial. -var/list/fallen_list_cross = list() -var/list/cardinal = list(NORTH, SOUTH, EAST, WEST) -var/list/diagonals = list(NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST) -var/list/alldirs = list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST) -var/list/reverse_dir = list(2, 1, 3, 8, 10, 9, 11, 4, 6, 5, 7, 12, 14, 13, 15, 32, 34, 33, 35, 40, 42, 41, 43, 36, 38, 37, 39, 44, 46, 45, 47, 16, 18, 17, 19, 24, 26, 25, 27, 20, 22, 21, 23, 28, 30, 29, 31, 48, 50, 49, 51, 56, 58, 57, 59, 52, 54, 53, 55, 60, 62, 61, 63) - -var/list/combatlog = list() -var/list/IClog = list() -var/list/OOClog = list() -var/list/adminlog = list() - -var/Debug = 0 // global debug switch - -var/datum/moduletypes/mods = new() - -var/join_motd = null -var/current_tms - -// nanomanager, the manager for Nano UIs -var/datum/nanomanager/nanomanager = new() - -var/list/BorgWireColorToFlag = RandomBorgWires() -var/list/BorgIndexToFlag -var/list/BorgIndexToWireColor -var/list/BorgWireColorToIndex -var/list/AAlarmWireColorToFlag = RandomAAlarmWires() -var/list/AAlarmIndexToFlag -var/list/AAlarmIndexToWireColor -var/list/AAlarmWireColorToIndex - -//Don't set this very much higher then 1024 unless you like inviting people in to dos your server with message spam -#define MAX_MESSAGE_LEN 1024 -#define MAX_EMOTE_LEN 256 -#define MAX_PAPER_MESSAGE_LEN 3072 -#define MAX_BOOK_MESSAGE_LEN 9216 -#define MAX_NAME_LEN 26 - -/// 3 minutes in the station. -#define shuttle_time_in_station 3 MINUTES -/// 10 minutes to arrive. -#define shuttle_time_to_arrive 10 MINUTES - - // MySQL configuration - -var/sqladdress = "localhost" -var/sqlport = "3306" -var/sqldb = "cmdb" -var/sqllogin = "root" -var/sqlpass = "" - - - // For FTP requests. (i.e. downloading runtime logs.) - // However it'd be ok to use for accessing attack logs and such too, which are even laggier. -var/fileaccess_timer = 0 - -// Reference list for disposal sort junctions. Filled up by sorting junction's New() -/var/list/tagger_locations = list() - -//added for Xenoarchaeology, might be useful for other stuff -var/list/alphabet_uppercase = list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z") -var/list/alphabet_lowercase = list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z") - -var/list/greek_letters = list("Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta", "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omnicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega") -var/list/nato_phonetic_alphabet = list("Alpha", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliett", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-Ray", "Yankee", "Zulu") - -//Used for autocall procs on ERT -var/distress_cancel = 0 -var/destroy_cancel = 0 - -//Coordinate obsfucator -//Used by the rangefinders and linked systems to prevent coords collection/prefiring - -/// A number between -500 and 500. -var/global/obfs_x = 0 -/// A number between -500 and 500. -var/global/obfs_y = 0 - -// Which lobby art is on display -// This is updated by the lobby art turf when it initializes -var/displayed_lobby_art = -1 - -// Last global ID that was assigned to a mob (for round recording purposes) -var/last_mob_gid = 0 - -// be careful messing with this. the section names are hardcoded here, while defines are used everywhere else -// see the big commented block for an explanation -var/list/almayer_ship_sections = list( - "Upper deck Foreship", - "Upper deck Midship", - "Upper deck Aftship", - "Lower deck Foreship", - "Lower deck Midship", - "Lower deck Aftship" -) diff --git a/code/js/byjax.dm b/code/js/byjax.dm deleted file mode 100644 index 8e196ef013f4..000000000000 --- a/code/js/byjax.dm +++ /dev/null @@ -1,50 +0,0 @@ -//this function places received data into element with specified id. -var/const/js_byjax = {" - -function replaceContent() { - var args = Array.prototype.slice.call(arguments); - var id = args\[0\]; - var content = args\[1\]; - var callback = null; - if(args\[2\]){ - callback = args\[2\]; - if(args\[3\]){ - args = args.slice(3); - } - } - var parent = document.getElementById(id); - if(typeof(parent)!=='undefined' && parent!=null){ - parent.innerHTML = content?content:''; - } - if(callback && window\[callback\]){ - window\[callback\].apply(null,args); - } -} -"} - -/* -sends data to control_id:replaceContent - -receiver - mob -control_id - window id (for windows opened with browse(), it'll be "windowname.browser") -target_element - HTML element id -new_content - HTML content -callback - js function that will be called after the data is sent -callback_args - arguments for callback function - -Be sure to include required js functions in your page, or it'll raise an exception. -*/ -/proc/send_byjax(receiver, control_id, target_element, new_content=null, callback=null, list/callback_args=null) - if(receiver && target_element && control_id) // && winexists(receiver, control_id)) - var/list/argums = list(target_element, new_content) - if(callback) - argums += callback - if(callback_args) - argums += callback_args - argums = list2params(argums) -/* if(callback_args) - argums += "&[list2params(callback_args)]" -*/ - receiver << output(argums,"[control_id]:replaceContent") - return - diff --git a/code/js/menus.dm b/code/js/menus.dm deleted file mode 100644 index 0064522c2f81..000000000000 --- a/code/js/menus.dm +++ /dev/null @@ -1,37 +0,0 @@ -var/const/js_dropdowns = {" -function dropdowns() { - var divs = document.getElementsByTagName('div'); - var headers = new Array(); - var links = new Array(); - for(var i=0;i=0) { - elem.className = elem.className.replace('visible','hidden'); - this.className = this.className.replace('open','closed'); - this.innerHTML = this.innerHTML.replace('-','+'); - } - else { - elem.className = elem.className.replace('hidden','visible'); - this.className = this.className.replace('closed','open'); - this.innerHTML = this.innerHTML.replace('+','-'); - } - return false; - } - })(links\[i\]); - } - } -} -"} diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm index 36e70d311ac0..4a7307b247a5 100644 --- a/code/modules/admin/IsBanned.dm +++ b/code/modules/admin/IsBanned.dm @@ -12,13 +12,14 @@ return //don't recheck connected clients. //Guest Checking - if(IsGuestKey(key)) + if(!real_bans_only && CONFIG_GET(flag/guest_ban) && IsGuestKey(key)) log_access("Failed Login: [key] - Guests not allowed") message_admins("Failed Login: [key] - Guests not allowed") return list("reason"="guest", "desc"="\nReason: Guests not allowed. Please sign in with a byond account.") + // wait for database to be ready WAIT_DB_READY - if(admin_datums[ckey] && (admin_datums[ckey].rights & R_MOD)) + if(GLOB.admin_datums[ckey] && (GLOB.admin_datums[ckey].rights & R_MOD)) return ..() if(CONFIG_GET(number/limit_players) && CONFIG_GET(number/limit_players) < GLOB.clients.len) @@ -26,13 +27,6 @@ var/datum/entity/player/P = get_player_from_key(ckey) - //check if the IP address is a known TOR node - if(CONFIG_GET(flag/ToRban) && ToRban_isbanned(address)) - log_access("Failed Login: [src] - Banned: ToR") - message_admins("Failed Login: [src] - Banned: ToR") - return list("reason"="Using ToR", "desc"="\nReason: The network you are using to connect has been banned.\nIf you believe this is a mistake, please request help at [CONFIG_GET(string/banappeals)]") - - // wait for database to be ready . = P.check_ban(computer_id, address) if(.) diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm index fab0c24622fe..7dca354129ff 100644 --- a/code/modules/admin/NewBan.dm +++ b/code/modules/admin/NewBan.dm @@ -1,75 +1,75 @@ -var/CMinutes = null -var/savefile/Banlist +GLOBAL_VAR(CMinutes) +GLOBAL_DATUM(Banlist, /savefile) /proc/CheckBan(ckey, id, address) - if(!Banlist) // if Banlist cannot be located for some reason + if(!GLOB.Banlist) // if GLOB.Banlist cannot be located for some reason LoadBans() // try to load the bans - if(!Banlist) // uh oh, can't find bans! + if(!GLOB.Banlist) // uh oh, can't find bans! return 0 // ABORT ABORT ABORT . = list() var/appeal if(CONFIG_GET(string/banappeals)) appeal = "\nFor more information on your ban, or to appeal, head to [CONFIG_GET(string/banappeals)]" - Banlist.cd = "/base" - if( "[ckey][id]" in Banlist.dir ) - Banlist.cd = "[ckey][id]" - if (Banlist["temp"]) - if (!GetExp(Banlist["minutes"])) + GLOB.Banlist.cd = "/base" + if( "[ckey][id]" in GLOB.Banlist.dir ) + GLOB.Banlist.cd = "[ckey][id]" + if (GLOB.Banlist["temp"]) + if (!GetExp(GLOB.Banlist["minutes"])) ClearTempbans() return 0 else - .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: [GetExp(Banlist["minutes"])]\nBy: [Banlist["bannedby"]][appeal]" + .["desc"] = "\nReason: [GLOB.Banlist["reason"]]\nExpires: [GetExp(GLOB.Banlist["minutes"])]\nBy: [GLOB.Banlist["bannedby"]][appeal]" else - Banlist.cd = "/base/[ckey][id]" - .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: PERMENANT\nBy: [Banlist["bannedby"]][appeal]" + GLOB.Banlist.cd = "/base/[ckey][id]" + .["desc"] = "\nReason: [GLOB.Banlist["reason"]]\nExpires: PERMENANT\nBy: [GLOB.Banlist["bannedby"]][appeal]" .["reason"] = "ckey/id" return . else - for (var/A in Banlist.dir) - Banlist.cd = "/base/[A]" + for (var/A in GLOB.Banlist.dir) + GLOB.Banlist.cd = "/base/[A]" var/matches - if( ckey == Banlist["key"] ) + if( ckey == GLOB.Banlist["key"] ) matches += "ckey" - if( id == Banlist["id"] ) + if( id == GLOB.Banlist["id"] ) if(matches) matches += "/" matches += "id" - if( address == Banlist["ip"] ) + if( address == GLOB.Banlist["ip"] ) if(matches) matches += "/" matches += "ip" if(matches) - if(Banlist["temp"]) - if (!GetExp(Banlist["minutes"])) + if(GLOB.Banlist["temp"]) + if (!GetExp(GLOB.Banlist["minutes"])) ClearTempbans() return 0 else - .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: [GetExp(Banlist["minutes"])]\nBy: [Banlist["bannedby"]][appeal]" + .["desc"] = "\nReason: [GLOB.Banlist["reason"]]\nExpires: [GetExp(GLOB.Banlist["minutes"])]\nBy: [GLOB.Banlist["bannedby"]][appeal]" else - .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: PERMENANT\nBy: [Banlist["bannedby"]][appeal]" + .["desc"] = "\nReason: [GLOB.Banlist["reason"]]\nExpires: PERMENANT\nBy: [GLOB.Banlist["bannedby"]][appeal]" .["reason"] = matches return . return 0 /proc/UpdateTime() //No idea why i made this a proc. - CMinutes = (world.realtime / 10) / 60 + GLOB.CMinutes = (world.realtime / 10) / 60 return 1 /proc/LoadBans() - Banlist = new("data/banlist.bdb") - log_admin("Loading Banlist") + GLOB.Banlist = new("data/banlist.bdb") + log_admin("Loading GLOB.Banlist") - if (!length(Banlist.dir)) log_admin("Banlist is empty.") + if (!length(GLOB.Banlist.dir)) log_admin("GLOB.Banlist is empty.") - if (!Banlist.dir.Find("base")) - log_admin("Banlist missing base dir.") - Banlist.dir.Add("base") - Banlist.cd = "/base" - else if (Banlist.dir.Find("base")) - Banlist.cd = "/base" + if (!GLOB.Banlist.dir.Find("base")) + log_admin("GLOB.Banlist missing base dir.") + GLOB.Banlist.dir.Add("base") + GLOB.Banlist.cd = "/base" + else if (GLOB.Banlist.dir.Find("base")) + GLOB.Banlist.cd = "/base" ClearTempbans() return 1 @@ -77,64 +77,64 @@ var/savefile/Banlist /proc/ClearTempbans() UpdateTime() - Banlist.cd = "/base" - for (var/A in Banlist.dir) - Banlist.cd = "/base/[A]" - if (!Banlist["key"] || !Banlist["id"]) + GLOB.Banlist.cd = "/base" + for (var/A in GLOB.Banlist.dir) + GLOB.Banlist.cd = "/base/[A]" + if (!GLOB.Banlist["key"] || !GLOB.Banlist["id"]) RemoveBan(A) log_admin("Invalid Ban.") message_admins("Invalid Ban.") continue - if (!Banlist["temp"]) continue - if (CMinutes >= Banlist["minutes"]) RemoveBan(A) + if (!GLOB.Banlist["temp"]) continue + if (GLOB.CMinutes >= GLOB.Banlist["minutes"]) RemoveBan(A) return 1 /proc/AddBan(ckey, computerid, reason, bannedby, temp, minutes, address) - if(!Banlist) // if Banlist cannot be located for some reason + if(!GLOB.Banlist) // if GLOB.Banlist cannot be located for some reason LoadBans() // try to load the bans - if(!Banlist) // uh oh, can't find bans! + if(!GLOB.Banlist) // uh oh, can't find bans! return 0 // ABORT ABORT ABORT var/bantimestamp if (temp) UpdateTime() - bantimestamp = CMinutes + minutes + bantimestamp = GLOB.CMinutes + minutes - Banlist.cd = "/base" - if ( Banlist.dir.Find("[ckey][computerid]")) + GLOB.Banlist.cd = "/base" + if ( GLOB.Banlist.dir.Find("[ckey][computerid]")) RemoveBan("[ckey][computerid]") //have to remove dirs before processing - Banlist.dir.Add("[ckey][computerid]") - Banlist.cd = "/base/[ckey][computerid]" - Banlist["key"] << ckey - Banlist["id"] << computerid - Banlist["ip"] << address - Banlist["reason"] << reason - Banlist["bannedby"] << bannedby - Banlist["temp"] << temp + GLOB.Banlist.dir.Add("[ckey][computerid]") + GLOB.Banlist.cd = "/base/[ckey][computerid]" + GLOB.Banlist["key"] << ckey + GLOB.Banlist["id"] << computerid + GLOB.Banlist["ip"] << address + GLOB.Banlist["reason"] << reason + GLOB.Banlist["bannedby"] << bannedby + GLOB.Banlist["temp"] << temp if (temp) - Banlist["minutes"] << bantimestamp + GLOB.Banlist["minutes"] << bantimestamp return 1 /proc/RemoveBan(foldername) - if(!Banlist) // if Banlist cannot be located for some reason + if(!GLOB.Banlist) // if GLOB.Banlist cannot be located for some reason LoadBans() // try to load the bans - if(!Banlist) // uh oh, can't find bans! + if(!GLOB.Banlist) // uh oh, can't find bans! return 0 // ABORT ABORT ABORT var/key var/id - Banlist.cd = "/base/[foldername]" - Banlist["key"] >> key - Banlist["id"] >> id - Banlist.cd = "/base" + GLOB.Banlist.cd = "/base/[foldername]" + GLOB.Banlist["key"] >> key + GLOB.Banlist["id"] >> id + GLOB.Banlist.cd = "/base" - if (!Banlist.dir.Remove(foldername)) return 0 + if (!GLOB.Banlist.dir.Remove(foldername)) return 0 if(!usr) log_admin("Ban Expired: [key]") @@ -143,18 +143,18 @@ var/savefile/Banlist ban_unban_log_save("[key_name_admin(usr)] unbanned [key]") log_admin("[key_name_admin(usr)] unbanned [key]") message_admins("[key_name_admin(usr)] unbanned: [key]") - for (var/A in Banlist.dir) - Banlist.cd = "/base/[A]" - if (key == Banlist["key"] /*|| id == Banlist["id"]*/) - Banlist.cd = "/base" - Banlist.dir.Remove(A) + for (var/A in GLOB.Banlist.dir) + GLOB.Banlist.cd = "/base/[A]" + if (key == GLOB.Banlist["key"] /*|| id == GLOB.Banlist["id"]*/) + GLOB.Banlist.cd = "/base" + GLOB.Banlist.dir.Remove(A) continue return 1 /proc/GetExp(minutes as num) UpdateTime() - var/exp = minutes - CMinutes + var/exp = minutes - GLOB.CMinutes if (exp <= 0) return 0 else @@ -202,30 +202,33 @@ var/savefile/Banlist var/a = pick(1,0) var/b = pick(1,0) if(b) - Banlist.cd = "/base" - Banlist.dir.Add("trash[i]trashid[i]") - Banlist.cd = "/base/trash[i]trashid[i]" - Banlist["key"] << "trash[i]" + GLOB.Banlist.cd = "/base" + GLOB.Banlist.dir.Add("trash[i]trashid[i]") + GLOB.Banlist.cd = "/base/trash[i]trashid[i]" + GLOB.Banlist["key"] << "trash[i]" else - Banlist.cd = "/base" - Banlist.dir.Add("[last]trashid[i]") - Banlist.cd = "/base/[last]trashid[i]" - Banlist["key"] << last - Banlist["id"] << "trashid[i]" - Banlist["reason"] << "Trashban[i]." - Banlist["temp"] << a - Banlist["minutes"] << CMinutes + rand(1,2000) - Banlist["bannedby"] << "trashmin" + GLOB.Banlist.cd = "/base" + GLOB.Banlist.dir.Add("[last]trashid[i]") + GLOB.Banlist.cd = "/base/[last]trashid[i]" + GLOB.Banlist["key"] << last + GLOB.Banlist["id"] << "trashid[i]" + GLOB.Banlist["reason"] << "Trashban[i]." + GLOB.Banlist["temp"] << a + GLOB.Banlist["minutes"] << GLOB.CMinutes + rand(1,2000) + GLOB.Banlist["bannedby"] << "trashmin" last = "trash[i]" - Banlist.cd = "/base" + GLOB.Banlist.cd = "/base" /proc/ClearAllBans() - Banlist.cd = "/base" - for (var/A in Banlist.dir) + GLOB.Banlist.cd = "/base" + for (var/A in GLOB.Banlist.dir) RemoveBan(A) /client/proc/cmd_admin_do_ban(mob/M) + if(IsAdminAdvancedProcCall()) + alert_proccall("cmd_admin_do_ban") + return PROC_BLOCKED if(!check_rights(R_BAN|R_MOD)) return if(!ismob(M)) return diff --git a/code/modules/admin/STUI.dm b/code/modules/admin/STUI.dm index 87a2ca2cf11a..96307cd91b86 100644 --- a/code/modules/admin/STUI.dm +++ b/code/modules/admin/STUI.dm @@ -40,7 +40,7 @@ GLOBAL_DATUM_INIT(STUI, /datum/STUI, new) /datum/STUI/New() . = ..() - if(length(stui_init_runtimes)) // Report existing errors that might have occured during static initializers + if(length(stui_init_runtimes)) // Report existing errors that might have occurred during static initializers runtime = stui_init_runtimes.Copy() /datum/STUI/Topic(href, href_list) diff --git a/code/modules/admin/ToRban.dm b/code/modules/admin/ToRban.dm deleted file mode 100644 index 549353facfb8..000000000000 --- a/code/modules/admin/ToRban.dm +++ /dev/null @@ -1,88 +0,0 @@ -//By Carnwennan -//fetches an external list and processes it into a list of ip addresses. -//It then stores the processed list into a savefile for later use -#define TORFILE "data/ToR_ban.bdb" -#define TOR_UPDATE_INTERVAL 216000 //~6 hours - -/proc/ToRban_isbanned(ip_address) - var/savefile/F = new(TORFILE) - if(F) - if( ip_address in F.dir ) - return 1 - return 0 - -/proc/ToRban_autoupdate() - var/savefile/F = new(TORFILE) - if(F) - var/last_update - F["last_update"] >> last_update - if((last_update + TOR_UPDATE_INTERVAL) < world.realtime) //we haven't updated for a while - ToRban_update() - return - -/proc/ToRban_update() - spawn(0) - log_misc("Downloading updated ToR data...") - var/http[] = world.Export("https://check.torproject.org/exit-addresses") - - var/list/rawlist = file2list(http["CONTENT"]) - if(rawlist.len) - fdel(TORFILE) - var/savefile/F = new(TORFILE) - for( var/line in rawlist ) - if(!line) continue - if( copytext(line,1,12) == "ExitAddress" ) - var/cleaned = copytext(line,13,length(line)-19) - if(!cleaned) continue - F[cleaned] << 1 - F["last_update"] << world.realtime - log_misc("ToR data updated!") - if(usr) to_chat(usr, "ToRban updated.") - return - log_misc("ToR data update aborted: no data.") - return - -/client/proc/ToRban(task in list("update","toggle","show","remove","remove all","find")) - set name = "ToR Ban Settings" - set category = "Server" - if(!admin_holder) return - switch(task) - if("update") - ToRban_update() - if("toggle") - if(config) - if(CONFIG_GET(flag/ToRban)) - CONFIG_SET(flag/ToRban, FALSE) - message_admins("ToR banning disabled.") - else - CONFIG_SET(flag/ToRban, TRUE) - message_admins("ToR banning enabled.") - if("show") - var/savefile/F = new(TORFILE) - var/dat - if( length(F.dir) ) - for( var/i=1, i<=length(F.dir), i++ ) - dat += "#[i] [F.dir[i]]" - dat = "[dat]
        " - else - dat = "No addresses in list." - src << browse(dat,"window=ToRban_show") - if("remove") - var/savefile/F = new(TORFILE) - var/choice = tgui_input_list(src,"Please select an IP address to remove from the ToR banlist:","Remove ToR ban", F.dir) - if(choice) - F.dir.Remove(choice) - to_chat(src, "Address removed") - if("remove all") - to_chat(src, "[TORFILE] was [fdel(TORFILE)?"":"not "]removed.") - if("find") - var/input = input(src,"Please input an IP address to search for:","Find ToR ban",null) as null|text - if(input) - if(ToRban_isbanned(input)) - to_chat(src, "Address is a known ToR address") - else - to_chat(src, "Address is not a known ToR address") - return - -#undef TORFILE -#undef TOR_UPDATE_INTERVAL diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 5f24f71c8a50..fe95affaffd2 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -89,7 +89,7 @@ if(N.is_ban) var/time_d = N.ban_time ? "Banned for [N.ban_time] minutes | " : "" color = "#880000" //Removed confidential check because we can't make confidential bans - dat += "[time_d][N.text] by [admin_ckey] ([N.admin_rank])[confidential_text] on [N.date] " + dat += "[time_d][N.text] by [admin_ckey] ([N.admin_rank])[confidential_text] on [N.date] [NOTE_ROUND_ID(N)] " else if(N.is_confidential) color = "#AA0055" @@ -102,8 +102,8 @@ else if(N.note_category == NOTE_YAUTJA) color = "#114e11" - dat += "[N.text] by [admin_ckey] ([N.admin_rank])[confidential_text] on [N.date] " - if(admin_ckey == usr.ckey || admin_ckey == "Adminbot" || ishost(usr)) + dat += "[N.text] by [admin_ckey] ([N.admin_rank])[confidential_text] on [N.date] [NOTE_ROUND_ID(N)] " + if(admin_ckey == usr.ckey || admin_ckey == "Adminbot" || check_for_rights(R_PERMISSIONS)) dat += "Remove" dat += "

        " @@ -121,10 +121,10 @@ var/t //text to show in the window var/u //unban button href arg var/dat = "" - for(r in jobban_keylist) - L = jobban_keylist[r] + for(r in GLOB.jobban_keylist) + L = GLOB.jobban_keylist[r] for(c in L) - i = jobban_keylist[r][c] //These are already strings, as you're iterating through them. Anyway, establish jobban. + i = GLOB.jobban_keylist[r][c] //These are already strings, as you're iterating through them. Anyway, establish jobban. t = "[c] - [r] ## [i]" u = "[c] - [r]" dat += "" @@ -138,8 +138,6 @@ var/dat = {" Change Game Mode
        "} - if(master_mode == "secret") - dat += "(Force Secret Mode)
        " dat += {"
        @@ -261,7 +259,7 @@ if("Remove") if(!GLOB.trait_name_map) GLOB.trait_name_map = generate_trait_name_map() - for(var/trait in D.status_traits) + for(var/trait in D._status_traits) var/name = GLOB.trait_name_map[trait] || trait available_traits[name] = trait @@ -282,7 +280,7 @@ if("All") source = null if("Specific") - source = input("Source to be removed","Trait Remove/Add") as null|anything in sort_list(D.status_traits[chosen_trait]) + source = input("Source to be removed","Trait Remove/Add") as null|anything in sort_list(D._status_traits[chosen_trait]) if(!source) return REMOVE_TRAIT(D,chosen_trait,source) diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index dd67a963047e..5bb9692b0368 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -1,8 +1,8 @@ -var/list/admin_ranks = list() //list of all ranks with associated rights +GLOBAL_LIST_EMPTY(admin_ranks) //list of all ranks with associated rights //load our rank - > rights associations /proc/load_admin_ranks() - admin_ranks.Cut() + GLOB.admin_ranks.Cut() var/previous_rights = 0 @@ -34,31 +34,31 @@ var/list/admin_ranks = list() //list of all ranks with associated rights if("permissions","rights") rights |= R_PERMISSIONS if("possess") rights |= R_POSSESS if("stealth") rights |= R_STEALTH - if("rejuv","rejuvinate") rights |= R_REJUVINATE if("color") rights |= R_COLOR if("varedit") rights |= R_VAREDIT if("event") rights |= R_EVENT - if("everything","host","all") rights |= (R_HOST|R_BUILDMODE|R_ADMIN|R_BAN|R_SERVER|R_DEBUG|R_PERMISSIONS|R_POSSESS|R_STEALTH|R_REJUVINATE|R_COLOR|R_VAREDIT|R_EVENT|R_SOUNDS|R_NOLOCK|R_SPAWN|R_MOD|R_MENTOR) if("sound","sounds") rights |= R_SOUNDS if("nolock") rights |= R_NOLOCK if("spawn","create") rights |= R_SPAWN if("mod") rights |= R_MOD if("mentor") rights |= R_MENTOR if("profiler") rights |= R_PROFILER + if("host") rights |= RL_HOST + if("everything") rights |= RL_EVERYTHING - admin_ranks[rank] = rights + GLOB.admin_ranks[rank] = rights previous_rights = rights #ifdef TESTING var/msg = "Permission Sets Built:\n" - for(var/rank in admin_ranks) - msg += "\t[rank] - [admin_ranks[rank]]\n" + for(var/rank in GLOB.admin_ranks) + msg += "\t[rank] - [GLOB.admin_ranks[rank]]\n" testing(msg) #endif /proc/load_admins() //clear the datums references - admin_datums.Cut() + GLOB.admin_datums.Cut() for(var/client/C in GLOB.admins) C.remove_admin_verbs() C.admin_holder = null @@ -78,9 +78,9 @@ var/list/admin_ranks = list() //list of all ranks with associated rights #ifdef TESTING var/msg = "Admins Built:\n" - for(var/ckey in admin_datums) + for(var/ckey in GLOB.admin_datums) var/rank - var/datum/admins/D = admin_datums[ckey] + var/datum/admins/D = GLOB.admin_datums[ckey] if(D) rank = D.rank msg += "\t[ckey] - [rank]\n" testing(msg) @@ -115,7 +115,7 @@ var/list/admin_ranks = list() //list of all ranks with associated rights return //load permissions associated with this rank - var/rights = admin_ranks[rank] + var/rights = GLOB.admin_ranks[rank] //create the admin datum and store it for later use var/datum/admins/D = new /datum/admins(rank, rights, ckey, extra_titles) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 2177c95a673f..faeac7003bb7 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -1,5 +1,5 @@ //admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless -var/list/admin_verbs_default = list( +GLOBAL_LIST_INIT(admin_verbs_default, list( /datum/admins/proc/show_player_panel, /*shows an interface for individual players, with various links (links require additional flags*/ /client/proc/toggleadminhelpsound, /*toggles whether we hear a sound when adminhelps/PMs are used*/ /client/proc/becomelarva, /*lets you forgo your larva protection as staff member. */ @@ -27,7 +27,6 @@ var/list/admin_verbs_default = list( /client/proc/invismin, /client/proc/set_explosive_antigrief, /client/proc/check_explosive_antigrief, - /client/proc/cmd_mod_say, /client/proc/dsay, /client/proc/chem_panel, /*chem panel, allows viewing, editing and creation of reagent and chemical_reaction datums*/ /client/proc/player_panel_new, /*shows an interface for all players, with links to various panels*/ @@ -37,6 +36,7 @@ var/list/admin_verbs_default = list( /client/proc/togglenichelogs, /datum/admins/proc/display_tags, /datum/admins/proc/player_notes_show, + /datum/admins/proc/check_ckey, /datum/admins/proc/toggleooc, /*toggles ooc on/off for everyone*/ /datum/admins/proc/togglelooc, /*toggles ooc on/off for everyone*/ /datum/admins/proc/toggledsay, /*toggles dsay on/off for everyone*/ @@ -67,9 +67,13 @@ var/list/admin_verbs_default = list( /datum/admins/proc/subtlemessageall, /datum/admins/proc/alertall, /datum/admins/proc/imaginary_friend, - ) + /client/proc/toggle_admin_pings, + /client/proc/cmd_admin_say, /*staff-only ooc chat*/ + /client/proc/cmd_mod_say, /* alternate way of typing asay, no different than cmd_admin_say */ + /client/proc/cmd_admin_tacmaps_panel, + )) -var/list/admin_verbs_admin = list( +GLOBAL_LIST_INIT(admin_verbs_admin, list( /datum/admins/proc/togglejoin, /*toggles whether people can join the current game*/ /datum/admins/proc/announce, /*priority announce something to all clients.*/ /datum/admins/proc/view_game_log, /*shows the server game log (diary) for this round*/ @@ -79,7 +83,6 @@ var/list/admin_verbs_admin = list( /client/proc/toggleprayers, /*toggles prayers on/off*/ /client/proc/toggle_hear_radio, /*toggles whether we hear the radio*/ /client/proc/event_panel, - /client/proc/cmd_admin_say, /*admin-only ooc chat*/ /client/proc/free_slot, /*frees slot for chosen job*/ /client/proc/modify_slot, /client/proc/cmd_admin_rejuvenate, @@ -90,22 +93,20 @@ var/list/admin_verbs_admin = list( /client/proc/force_teleporter, /client/proc/matrix_editor, /datum/admins/proc/open_shuttlepanel -) +)) -var/list/admin_verbs_ban = list( +GLOBAL_LIST_INIT(admin_verbs_ban, list( /client/proc/unban_panel // /client/proc/jobbans // Disabled temporarily due to 15-30 second lag spikes. Don't forget the comma in the line above when uncommenting this! -) +)) -var/list/admin_verbs_sounds = list( - /client/proc/play_web_sound, - /client/proc/play_sound, - /client/proc/stop_web_sound, - /client/proc/stop_sound, +GLOBAL_LIST_INIT(admin_verbs_sounds, list( + /client/proc/play_admin_sound, + /client/proc/stop_admin_sound, /client/proc/cmd_admin_vox_panel -) +)) -var/list/admin_verbs_minor_event = list( +GLOBAL_LIST_INIT(admin_verbs_minor_event, list( /client/proc/cmd_admin_change_custom_event, /datum/admins/proc/admin_force_distress, /datum/admins/proc/admin_force_ERT_shuttle, @@ -120,6 +121,7 @@ var/list/admin_verbs_minor_event = list( /client/proc/toggle_sniper_upgrade, /client/proc/toggle_attack_dead, /client/proc/toggle_strip_drag, + /client/proc/toggle_disposal_mobs, /client/proc/toggle_uniform_strip, /client/proc/toggle_strong_defibs, /client/proc/toggle_blood_optimization, @@ -131,11 +133,13 @@ var/list/admin_verbs_minor_event = list( /client/proc/toggle_shipside_sd, /client/proc/shakeshipverb, /client/proc/adminpanelweapons, - /client/proc/adminpanelgq, - /client/proc/toggle_hardcore_perma -) + /client/proc/admin_general_quarters, + /client/proc/admin_biohazard_alert, + /client/proc/toggle_hardcore_perma, + /client/proc/toggle_bypass_joe_restriction, +)) -var/list/admin_verbs_major_event = list( +GLOBAL_LIST_INIT(admin_verbs_major_event, list( /client/proc/enable_event_mob_verbs, /client/proc/cmd_admin_dress_all, /client/proc/free_all_mobs_in_view, @@ -155,16 +159,16 @@ var/list/admin_verbs_major_event = list( /client/proc/change_weather, /client/proc/admin_blurb, /client/proc/toggle_zombies -) +)) -var/list/admin_verbs_spawn = list( +GLOBAL_LIST_INIT(admin_verbs_spawn, list( /datum/admins/proc/spawn_atom, /client/proc/game_panel, /client/proc/create_humans, /client/proc/create_xenos -) +)) -var/list/admin_verbs_server = list( +GLOBAL_LIST_INIT(admin_verbs_server, list( /datum/admins/proc/startnow, /datum/admins/proc/restart, /datum/admins/proc/delay, @@ -177,19 +181,20 @@ var/list/admin_verbs_server = list( /client/proc/cmd_admin_delete, /*delete an instance/object/mob/etc*/ /client/proc/cmd_debug_del_all, /datum/admins/proc/togglejoin, -) + /client/proc/toggle_cdn, +)) -var/list/admin_verbs_debug = list( +GLOBAL_LIST_INIT(admin_verbs_debug, list( /client/proc/debug_role_authority, /client/proc/cmd_debug_make_powernets, /client/proc/cmd_debug_list_processing_items, /client/proc/cmd_admin_delete, /client/proc/cmd_debug_del_all, /client/proc/reload_admins, - /client/proc/reload_whitelist, /client/proc/restart_controller, /client/proc/debug_controller, /client/proc/cmd_debug_toggle_should_check_for_win, + /client/proc/cmd_debug_mass_screenshot, /client/proc/enable_debug_verbs, /client/proc/toggledebuglogs, /client/proc/togglenichelogs, @@ -211,19 +216,19 @@ var/list/admin_verbs_debug = list( /datum/admins/proc/view_tgui_log, /*shows the server TGUI log for this round*/ /client/proc/admin_blurb, /client/proc/toggle_zombies, -) +)) -var/list/admin_verbs_debug_advanced = list( +GLOBAL_LIST_INIT(admin_verbs_debug_advanced, list( /client/proc/callproc_datum, /client/proc/callproc, /client/proc/SDQL2_query, -) +)) -var/list/clan_verbs = list( +GLOBAL_LIST_INIT(clan_verbs, list( /client/proc/usr_create_new_clan -) +)) -var/list/debug_verbs = list( +GLOBAL_LIST_INIT(debug_verbs, list( /client/proc/Cell, /client/proc/cmd_assume_direct_control, /client/proc/ticklag, @@ -231,23 +236,26 @@ var/list/debug_verbs = list( /client/proc/view_power_update_stats_area, /client/proc/view_power_update_stats_machines, /client/proc/toggle_power_update_profiling, - /client/proc/nanomapgen_DumpImage, -) +)) -var/list/admin_verbs_possess = list( +GLOBAL_LIST_INIT(admin_verbs_possess, list( /client/proc/possess, /client/proc/release -) +)) -var/list/admin_verbs_permissions = list( - /client/proc/ToRban -) +GLOBAL_LIST_INIT(admin_verbs_permissions, list( + /client/proc/whitelist_panel, +)) -var/list/admin_verbs_color = list( +GLOBAL_LIST_INIT(admin_verbs_color, list( /client/proc/set_ooc_color_self -) +)) + +GLOBAL_LIST_INIT(admin_verbs_stealth, list( + /client/proc/toggle_admin_stealth +)) -var/list/admin_mob_event_verbs_hideable = list( +GLOBAL_LIST_INIT(admin_mob_event_verbs_hideable, list( /client/proc/hide_event_mob_verbs, /client/proc/cmd_admin_select_mob_rank, /client/proc/cmd_admin_dress, @@ -262,10 +270,10 @@ var/list/admin_mob_event_verbs_hideable = list( /client/proc/cmd_admin_grantfullaccess, /client/proc/cmd_admin_grantallskills, /client/proc/admin_create_account -) +)) //verbs which can be hidden - needs work -var/list/admin_verbs_hideable = list( +GLOBAL_LIST_INIT(admin_verbs_hideable, list( /client/proc/release, /client/proc/possess, /client/proc/callproc_datum, @@ -284,9 +292,9 @@ var/list/admin_verbs_hideable = list( /datum/admins/proc/togglesleep, /client/proc/debug_variables, /client/proc/debug_global_variables -) +)) -var/list/admin_verbs_teleport = list( +GLOBAL_LIST_INIT(admin_verbs_teleport, list( /client/proc/teleport_panel, /*teleport panel, for jumping to things/places and getting things/places */ /client/proc/jumptocoord, /client/proc/jumptooffsetcoord, @@ -298,75 +306,72 @@ var/list/admin_verbs_teleport = list( /client/proc/Getmob, /client/proc/Getkey, /client/proc/toggle_noclip -) +)) -var/list/roundstart_mod_verbs = list( +GLOBAL_LIST_INIT(roundstart_mod_verbs, list( /client/proc/toggle_ob_spawn -) +)) /client/proc/add_admin_verbs() if(!admin_holder) return if(CLIENT_IS_STAFF(src)) - add_verb(src, admin_verbs_default) + add_verb(src, GLOB.admin_verbs_default) if(CLIENT_HAS_RIGHTS(src, R_MOD)) - add_verb(src, admin_verbs_ban) - add_verb(src, admin_verbs_teleport) + add_verb(src, GLOB.admin_verbs_ban) + add_verb(src, GLOB.admin_verbs_teleport) if(CLIENT_HAS_RIGHTS(src, R_EVENT)) - add_verb(src, admin_verbs_minor_event) + add_verb(src, GLOB.admin_verbs_minor_event) if(CLIENT_HAS_RIGHTS(src, R_ADMIN)) - add_verb(src, admin_verbs_admin) - add_verb(src, admin_verbs_major_event) + add_verb(src, GLOB.admin_verbs_admin) + add_verb(src, GLOB.admin_verbs_major_event) if(CLIENT_HAS_RIGHTS(src, R_MENTOR)) add_verb(src, /client/proc/cmd_mentor_say) add_verb(src, /datum/admins/proc/imaginary_friend) if(CLIENT_HAS_RIGHTS(src, R_BUILDMODE)) add_verb(src, /client/proc/togglebuildmodeself) if(CLIENT_HAS_RIGHTS(src, R_SERVER)) - add_verb(src, admin_verbs_server) + add_verb(src, GLOB.admin_verbs_server) if(CLIENT_HAS_RIGHTS(src, R_DEBUG)) - add_verb(src, admin_verbs_debug) + add_verb(src, GLOB.admin_verbs_debug) if(!CONFIG_GET(flag/debugparanoid) || CLIENT_HAS_RIGHTS(src, R_ADMIN)) - add_verb(src, admin_verbs_debug_advanced) // Right now it's just callproc but we can easily add others later on. + add_verb(src, GLOB.admin_verbs_debug_advanced) // Right now it's just callproc but we can easily add others later on. if(CLIENT_HAS_RIGHTS(src, R_POSSESS)) - add_verb(src, admin_verbs_possess) + add_verb(src, GLOB.admin_verbs_possess) if(CLIENT_HAS_RIGHTS(src, R_PERMISSIONS)) - add_verb(src, admin_verbs_permissions) + add_verb(src, GLOB.admin_verbs_permissions) if(CLIENT_HAS_RIGHTS(src, R_COLOR)) - add_verb(src, admin_verbs_color) + add_verb(src, GLOB.admin_verbs_color) if(CLIENT_HAS_RIGHTS(src, R_SOUNDS)) - add_verb(src, admin_verbs_sounds) + add_verb(src, GLOB.admin_verbs_sounds) if(CLIENT_HAS_RIGHTS(src, R_SPAWN)) - add_verb(src, admin_verbs_spawn) - if(RoleAuthority && (RoleAuthority.roles_whitelist[ckey] & WHITELIST_YAUTJA_LEADER)) - add_verb(src, clan_verbs) - -/client/proc/add_admin_whitelists() - if(CLIENT_HAS_RIGHTS(src, R_MENTOR)) - RoleAuthority.roles_whitelist[ckey] |= WHITELIST_MENTOR - if(CLIENT_IS_STAFF(src)) - RoleAuthority.roles_whitelist[ckey] |= WHITELIST_JOE + add_verb(src, GLOB.admin_verbs_spawn) + if(CLIENT_HAS_RIGHTS(src, R_STEALTH)) + add_verb(src, GLOB.admin_verbs_stealth) + if(check_whitelist_status(WHITELIST_YAUTJA_LEADER)) + add_verb(src, GLOB.clan_verbs) /client/proc/remove_admin_verbs() remove_verb(src, list( - admin_verbs_default, + GLOB.admin_verbs_default, /client/proc/togglebuildmodeself, - admin_verbs_admin, - admin_verbs_ban, - admin_verbs_minor_event, - admin_verbs_major_event, - admin_verbs_server, - admin_verbs_debug, - admin_verbs_debug_advanced, - admin_verbs_possess, - admin_verbs_permissions, - admin_verbs_color, - admin_verbs_sounds, - admin_verbs_spawn, - admin_verbs_teleport, - admin_mob_event_verbs_hideable, - admin_verbs_hideable, - debug_verbs, + GLOB.admin_verbs_admin, + GLOB.admin_verbs_ban, + GLOB.admin_verbs_minor_event, + GLOB.admin_verbs_major_event, + GLOB.admin_verbs_server, + GLOB.admin_verbs_debug, + GLOB.admin_verbs_debug_advanced, + GLOB.admin_verbs_possess, + GLOB.admin_verbs_permissions, + GLOB.admin_verbs_color, + GLOB.admin_verbs_sounds, + GLOB.admin_verbs_spawn, + GLOB.admin_verbs_teleport, + GLOB.admin_mob_event_verbs_hideable, + GLOB.admin_verbs_hideable, + GLOB.debug_verbs, + GLOB.admin_verbs_stealth, )) /client/proc/jobbans() @@ -401,7 +406,7 @@ var/list/roundstart_mod_verbs = list( if(!check_rights(R_ADMIN)) return if(!warned_ckey || !istext(warned_ckey)) return - if(warned_ckey in admin_datums) + if(warned_ckey in GLOB.admin_datums) to_chat(usr, "Error: warn(): You can't warn admins.") return @@ -432,7 +437,7 @@ var/list/roundstart_mod_verbs = list( set name = "Give Disease (old)" set desc = "Gives a (tg-style) Disease to a mob." var/list/disease_names = list() - for(var/v in diseases) + for(var/v in GLOB.diseases) disease_names.Add(copytext("[v]", 16, 0)) var/datum/disease/D = tgui_input_list(usr, "Choose the disease to give to that guy", "ACHOO", disease_names) if(!D) return @@ -575,9 +580,31 @@ var/list/roundstart_mod_verbs = list( set desc = "Tells everyone about a random statistic in the round." set category = "OOC" + var/prompt = tgui_alert(usr, "Are you sure you want to do this?", "Announce Random Fact", list("No", "Yes")) + if(prompt != "Yes") + return + message_admins("[key_name(usr)] announced a random fact.") SSticker.mode?.declare_fun_facts() +/client/proc/toggle_admin_pings() + set name = "Toggle StaffIC log sounds" + set category = "Preferences.Sound" + + prefs.toggles_sound ^= SOUND_ARES_MESSAGE + if (prefs.toggles_sound & SOUND_ARES_MESSAGE) + to_chat(usr, SPAN_BOLDNOTICE("You will now hear an audio cue for ARES and Prayer messages.")) + else + to_chat(usr, SPAN_BOLDNOTICE("You will no longer hear an audio cue for ARES and Prayer messages.")) + +/client/proc/toggle_admin_stealth() + set name = "Toggle Admin Stealth" + set category = "Preferences" + prefs.toggles_admin ^= ADMIN_STEALTHMODE + if(prefs.toggles_admin & ADMIN_STEALTHMODE) + to_chat(usr, SPAN_BOLDNOTICE("You enabled admin stealth mode.")) + else + to_chat(usr, SPAN_BOLDNOTICE("You disabled admin stealth mode.")) #undef MAX_WARNS #undef AUTOBANTIME diff --git a/code/modules/admin/autoreply.dm b/code/modules/admin/autoreply.dm index a90e21b7f311..0b1d16c41009 100644 --- a/code/modules/admin/autoreply.dm +++ b/code/modules/admin/autoreply.dm @@ -20,15 +20,21 @@ GLOBAL_REFERENCE_LIST_INDEXED(adminreplies, /datum/autoreply/admin, title) /datum/autoreply/admin/bug title = "Bug Report" - message = "Please report all bugs on our Github. Administrative staff are unable to fix most bugs on a round to round basis and only round critical bugs, or exploits, should be ahelped." + +ON_CONFIG_LOAD(/datum/autoreply/admin/bug) + message = "Please report all bugs on our Github. Administrative staff are unable to fix most bugs on a round to round basis and only round critical bugs, or exploits, should be ahelped." /datum/autoreply/admin/marine title = "Marine Guide" - message = "Your action can be answered by the Marine Quickstart Guide. If anything is unclear or you have another question please make a new mentorhelp or ahelp about it." + +ON_CONFIG_LOAD(/datum/autoreply/admin/marine) + message = "Your action can be answered by the Marine Quickstart Guide. If anything is unclear or you have another question please make a new mentorhelp or ahelp about it." /datum/autoreply/admin/xeno title = "Xeno Guide" - message = "Your action can be answered by the Xeno Quickstart Guide. If anything is unclear or you have another question please make a new mentorhelp or ahelp about it." + +ON_CONFIG_LOAD(/datum/autoreply/admin/xeno) + message = "Your action can be answered by the Xeno Quickstart Guide. If anything is unclear or you have another question please make a new mentorhelp or ahelp about it." /datum/autoreply/admin/changelog title = "Changelog" @@ -44,5 +50,6 @@ GLOBAL_REFERENCE_LIST_INDEXED(adminreplies, /datum/autoreply/admin, title) /datum/autoreply/admin/whitelist title = "Whitelist Issue" - message = "Staff are unable to handle most whitelist rulebreaks in-game, please make a player report on the forums, here." +ON_CONFIG_LOAD(/datum/autoreply/admin/whitelist) + message = "Staff are unable to handle most whitelist rulebreaks in-game, please make a player report on the forums, here." diff --git a/code/modules/admin/banjob.dm b/code/modules/admin/banjob.dm index 18f06e79a66a..dd6516b2ede3 100644 --- a/code/modules/admin/banjob.dm +++ b/code/modules/admin/banjob.dm @@ -7,23 +7,23 @@ won't recognize the older one, as an example. */ -var/jobban_runonce // Updates legacy bans with new info -var/jobban_keylist[0] //to store the keys & ranks +GLOBAL_VAR(jobban_runonce) // Updates legacy bans with new info +GLOBAL_LIST_EMPTY(jobban_keylist) /proc/check_jobban_path(X) . = ckey(X) - if(!islist(jobban_keylist[.])) //If it's not a list, we're in trouble. - jobban_keylist[.] = list() + if(!islist(GLOB.jobban_keylist[.])) //If it's not a list, we're in trouble. + GLOB.jobban_keylist[.] = list() /proc/jobban_fullban(mob/M, rank, reason) if (!M || !M.ckey) return rank = check_jobban_path(rank) - jobban_keylist[rank][M.ckey] = reason + GLOB.jobban_keylist[rank][M.ckey] = reason /proc/jobban_client_fullban(ckey, rank) if (!ckey || !rank) return rank = check_jobban_path(rank) - jobban_keylist[rank][ckey] = "Reason Unspecified" + GLOB.jobban_keylist[rank][ckey] = "Reason Unspecified" //returns a reason if M is banned from rank, returns 0 otherwise /proc/jobban_isbanned(mob/M, rank, datum/entity/player/P = null) @@ -42,24 +42,22 @@ var/jobban_keylist[0] //to store the keys & ranks if(guest_jobbans(rank)) if(CONFIG_GET(flag/guest_jobban) && IsGuestKey(M.key)) return "Guest Job-ban" - if(CONFIG_GET(flag/usewhitelist) && !check_whitelist(M)) - return "Whitelisted Job" var/datum/entity/player_job_ban/PJB = M.client.player_data.job_bans[rank] return PJB ? PJB.text : null /proc/jobban_loadbanfile() var/savefile/S=new("data/job_new.ban") - S["new_bans"] >> jobban_keylist + S["new_bans"] >> GLOB.jobban_keylist log_admin("Loading jobban_rank") - S["runonce"] >> jobban_runonce + S["runonce"] >> GLOB.jobban_runonce - if (!length(jobban_keylist)) - jobban_keylist=list() + if (!length(GLOB.jobban_keylist)) + GLOB.jobban_keylist=list() log_admin("jobban_keylist was empty") /proc/jobban_savebanfile() var/savefile/S=new("data/job_new.ban") - S["new_bans"] << jobban_keylist + S["new_bans"] << GLOB.jobban_keylist /proc/jobban_unban(mob/M, rank) jobban_remove("[M.ckey] - [ckey(rank)]") @@ -70,7 +68,7 @@ var/jobban_keylist[0] //to store the keys & ranks /proc/jobban_remove(X) var/regex/r1 = new("(.*) - (.*)") if(r1.Find(X)) - var/L[] = jobban_keylist[r1.group[2]] + var/L[] = GLOB.jobban_keylist[r1.group[2]] L.Remove(r1.group[1]) return 1 @@ -89,7 +87,7 @@ var/jobban_keylist[0] //to store the keys & ranks if(!M.ckey) //sanity to_chat(usr, "This mob has no ckey") return - if(!RoleAuthority) + if(!GLOB.RoleAuthority) to_chat(usr, "The Role Authority is not set up!") return @@ -109,31 +107,31 @@ var/jobban_keylist[0] //to store the keys & ranks WARNING!*/ //Regular jobs //Command (Blue) - jobs += generate_job_ban_list(M, P, ROLES_CIC, "CIC", "ddddff") + jobs += generate_job_ban_list(M, P, GLOB.ROLES_CIC, "CIC", "ddddff") jobs += "
        " // SUPPORT - jobs += generate_job_ban_list(M, P, ROLES_AUXIL_SUPPORT, "Support", "ccccff") + jobs += generate_job_ban_list(M, P, GLOB.ROLES_AUXIL_SUPPORT, "Support", "ccccff") jobs += "
        " // MPs - jobs += generate_job_ban_list(M, P, ROLES_POLICE, "Police", "ffdddd") + jobs += generate_job_ban_list(M, P, GLOB.ROLES_POLICE, "Police", "ffdddd") jobs += "
        " //Engineering (Yellow) - jobs += generate_job_ban_list(M, P, ROLES_ENGINEERING, "Engineering", "fff5cc") + jobs += generate_job_ban_list(M, P, GLOB.ROLES_ENGINEERING, "Engineering", "fff5cc") jobs += "
        " //Cargo (Yellow) //Copy paste, yada, yada. Hopefully Snail can rework this in the future. - jobs += generate_job_ban_list(M, P, ROLES_REQUISITION, "Requisition", "fff5cc") + jobs += generate_job_ban_list(M, P, GLOB.ROLES_REQUISITION, "Requisition", "fff5cc") jobs += "
        " //Medical (White) - jobs += generate_job_ban_list(M, P, ROLES_MEDICAL, "Medical", "ffeef0") + jobs += generate_job_ban_list(M, P, GLOB.ROLES_MEDICAL, "Medical", "ffeef0") jobs += "
        " //Marines - jobs += generate_job_ban_list(M, P, ROLES_MARINES, "Marines", "ffeeee") + jobs += generate_job_ban_list(M, P, GLOB.ROLES_MARINES, "Marines", "ffeeee") jobs += "
        " // MISC - jobs += generate_job_ban_list(M, P, ROLES_MISC, "Misc", "aaee55") + jobs += generate_job_ban_list(M, P, GLOB.ROLES_MISC, "Misc", "aaee55") jobs += "
        " // Xenos (Orange) - jobs += generate_job_ban_list(M, P, ROLES_XENO, "Xenos", "a268b1") + jobs += generate_job_ban_list(M, P, GLOB.ROLES_XENO, "Xenos", "a268b1") jobs += "
        " //Extra (Orange) var/isbanned_dept = jobban_isbanned(M, "Syndicate", P) diff --git a/code/modules/admin/callproc.dm b/code/modules/admin/callproc.dm index f84121785360..1af1f5aa9fa3 100644 --- a/code/modules/admin/callproc.dm +++ b/code/modules/admin/callproc.dm @@ -72,7 +72,8 @@ GLOBAL_PROTECT(LastAdminCalledProc) */ /proc/HandleUserlessProcCall(user, datum/target, procname, list/arguments) if(IsAdminAdvancedProcCall()) - return + alert_proccall("HandleUserlessProcCall") + return PROC_BLOCKED var/mob/proccall_handler/handler = GLOB.AdminProcCallHandler handler.add_caller(user) var/lastusr = usr @@ -90,7 +91,8 @@ GLOBAL_PROTECT(LastAdminCalledProc) */ /proc/HandleUserlessSDQL(user, query_text) if(IsAdminAdvancedProcCall()) - return + alert_proccall("HandleUserlessSDQL") + return PROC_BLOCKED var/mob/proccall_handler/handler = GLOB.AdminProcCallHandler handler.add_caller(user) @@ -224,6 +226,10 @@ GLOBAL_PROTECT(LastAdminCalledProc) /proc/IsAdminAdvancedProcCall() return (GLOB.AdminProcCaller && GLOB.AdminProcCaller == usr?.client?.ckey) || (GLOB.AdminProcCallHandler && usr == GLOB.AdminProcCallHandler) +/proc/alert_proccall(procname = "Unknown") + to_chat(usr, SPAN_BOLDWARNING("Warning: Force attempt has been logged.")) + message_admins("[key_name(usr)] has attempted to execute a restricted proc. ([procname])") + /client/proc/callproc_datum(datum/called_datum as null|area|mob|obj|turf) set category = "Debug" set name = "Datum ProcCall" diff --git a/code/modules/admin/chat_commands.dm b/code/modules/admin/chat_commands.dm index 37ffcd114e91..c5036e7ca1f7 100644 --- a/code/modules/admin/chat_commands.dm +++ b/code/modules/admin/chat_commands.dm @@ -8,7 +8,7 @@ /datum/tgs_chat_command/sdql/Run(datum/tgs_chat_user/sender, params) var/list/results = HandleUserlessSDQL(sender.friendly_name, params) if(!results) - return "Query produced no output" + return new /datum/tgs_message_content("Query produced no output") var/list/text_res = results.Copy(1, 3) var/list/refs = length(results) > 3 ? results.Copy(4) : null - return "[text_res.Join("\n")][refs ? "\nRefs: [refs.Join(" ")]" : ""]" + return new /datum/tgs_message_content("[text_res.Join("\n")][refs ? "\nRefs: [refs.Join(" ")]" : ""]") diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index 644165be0fa0..910bafd50a9b 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -1,4 +1,5 @@ -/var/create_mob_html = null +/datum/admins/var/static/create_mob_html = null + /datum/admins/proc/create_mob(mob/user) if (!create_mob_html) var/mobjs = null @@ -7,4 +8,4 @@ create_mob_html = replacetext(create_mob_html, "null /* object types */", "\"[mobjs]\"") create_mob_html = replacetext(create_mob_html, "/* href token */", RawHrefToken(forceGlobal = TRUE)) - show_browser(user, replacetext(create_mob_html, "/* ref src */", "\ref[src]"), "Create Mob", "create_mob", "size=425x475") + show_browser(user, replacetext(create_mob_html, "/* ref src */", "\ref[src]"), "Create Mob", "create_mob", "size=450x525") diff --git a/code/modules/admin/create_object.dm b/code/modules/admin/create_object.dm index 9d344a1f551c..054fc20aef5e 100644 --- a/code/modules/admin/create_object.dm +++ b/code/modules/admin/create_object.dm @@ -1,4 +1,4 @@ -/var/create_object_html = null +/datum/admins/var/static/create_object_html = null /datum/admins/proc/create_object(mob/user) if (!create_object_html) @@ -8,7 +8,7 @@ create_object_html = replacetext(create_object_html, "null /* object types */", "\"[objectjs]\"") create_object_html = replacetext(create_object_html, "/* href token */", RawHrefToken(forceGlobal = TRUE)) - show_browser(user, replacetext(create_object_html, "/* ref src */", "\ref[src]"), "Create Object", "create_object", "size=425x475") + show_browser(user, replacetext(create_object_html, "/* ref src */", "\ref[src]"), "Create Object", "create_object", "size=450x525") /datum/admins/proc/quick_create_object(mob/user) @@ -46,4 +46,4 @@ quick_create_object_html = replacetext(quick_create_object_html, "null /* object types */", "\"[objectjs]\"") quick_create_object_html = replacetext(quick_create_object_html, "/* href token */", RawHrefToken(forceGlobal = TRUE)) - show_browser(user, replacetext(quick_create_object_html, "/* ref src */", "\ref[src]"), "Quick Create Object", "quick_create_object", "size=425x475") + show_browser(user, replacetext(quick_create_object_html, "/* ref src */", "\ref[src]"), "Quick Create Object", "quick_create_object", "size=450x525") diff --git a/code/modules/admin/create_turf.dm b/code/modules/admin/create_turf.dm index c87034ecfd9f..cc8bd1a5ec77 100644 --- a/code/modules/admin/create_turf.dm +++ b/code/modules/admin/create_turf.dm @@ -1,4 +1,5 @@ -/var/create_turf_html = null +/datum/admins/var/static/create_turf_html = null + /datum/admins/proc/create_turf(mob/user) if (!create_turf_html) var/turfjs = null @@ -7,4 +8,4 @@ create_turf_html = replacetext(create_turf_html, "null /* object types */", "\"[turfjs]\"") create_turf_html = replacetext(create_turf_html, "/* href token */", RawHrefToken(forceGlobal = TRUE)) - show_browser(usr, replacetext(create_turf_html, "/* ref src */", "\ref[src]"), "Create Turf", "create_turf", "size=425x475") + show_browser(usr, replacetext(create_turf_html, "/* ref src */", "\ref[src]"), "Create Turf", "create_turf", "size=450x525") diff --git a/code/modules/admin/fax_templates.dm b/code/modules/admin/fax_templates.dm index 91b23abb2422..2522acf92b3b 100644 --- a/code/modules/admin/fax_templates.dm +++ b/code/modules/admin/fax_templates.dm @@ -1,11 +1,13 @@ /proc/generate_templated_fax(show_wy_logo, fax_header, fax_subject, addressed_to, message_body, sent_by, sent_title, sent_department) + var/datum/asset/asset = get_asset_datum(/datum/asset/simple/paper) + var/dat = "" dat += "") == 1 || findtext(current_tag, "" + to_chat(src, "[(extra_large) ? "

        " : ""][SPAN_DEADSAY("[message][(enter_link) ? " [full_enter_link]" : ""][track_link]")][(extra_large) ? "

        " : ""]") + if(ghost_sound) + SEND_SOUND(src, sound(ghost_sound, volume = notify_volume, channel = SOUND_CHANNEL_NOTIFY)) + if(flashwindow) + window_flash(client) + + if(!source) + return + + var/atom/movable/screen/alert/notify_action/screen_alert = throw_alert("[REF(source)]_notify_action", /atom/movable/screen/alert/notify_action) + if(!screen_alert) + return + if (header) + screen_alert.name = header + screen_alert.desc = message + screen_alert.action = action + screen_alert.target = source + if(!alert_overlay) + alert_overlay = new(source) + var/icon/source_icon = icon(source.icon) + var/iheight = source_icon.Height() + var/iwidth = source_icon.Width() + var/higher_power = (iheight > iwidth) ? iheight : iwidth + alert_overlay.pixel_y = initial(source.pixel_y) + alert_overlay.pixel_x = initial(source.pixel_x) + if(higher_power > 32) + var/diff = 32 / higher_power + alert_overlay.transform = alert_overlay.transform.Scale(diff, diff) + if(higher_power > 48) + alert_overlay.pixel_y = -(iheight * 0.5) * diff + alert_overlay.pixel_x = -(iwidth * 0.5) * diff + + + alert_overlay.layer = FLOAT_LAYER + alert_overlay.plane = FLOAT_PLANE + + screen_alert.overlays += alert_overlay + +/mob/proc/reset_lighting_alpha() + SIGNAL_HANDLER + + lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE + sync_lighting_plane_alpha() + diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index c3266982b20d..9d108d36b461 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -56,9 +56,6 @@ if(istype(mob, /mob/living/carbon)) mob.swap_hand() - if(istype(mob,/mob/living/silicon/robot)) - var/mob/living/silicon/robot/R = mob - R.cycle_modules() return @@ -71,8 +68,7 @@ /client/verb/drop_item() set hidden = TRUE - if(!isrobot(mob)) - mob.drop_item_v() + mob.drop_item_v() return @@ -95,7 +91,13 @@ mob.next_delay_update = world.time + mob.next_delay_delay /client/Move(n, direct) - if(world.time < next_movement || (mob.lying && mob.crawling)) + var/mob/living/living_mob + if(isliving(mob)) + living_mob = mob + + if(world.time < next_movement) + return + if(living_mob && living_mob.body_position == LYING_DOWN && mob.crawling) return next_move_dir_add = 0 @@ -134,7 +136,17 @@ if(!isliving(mob)) return mob.Move(n, direct) - if(!mob.canmove || mob.is_mob_incapacitated(TRUE) || (mob.lying && !mob.can_crawl)) + if(mob.is_mob_incapacitated(TRUE)) + return + + if(mob.buckled) + // Handle buckled relay before mobility because buckling inherently immobilizes + // This means you can (try to) move with a cargo tug or powerloader while immobilized, which i think makes sense + return mob.buckled.relaymove(mob, direct) + + if(!(living_mob.mobility_flags & MOBILITY_MOVE)) + return + if(living_mob.body_position == LYING_DOWN && !living_mob.can_crawl) return //Check if you are being grabbed and if so attemps to break it @@ -150,9 +162,6 @@ next_movement = world.time + MINIMAL_MOVEMENT_INTERVAL return - if(mob.buckled) - return mob.buckled.relaymove(mob, direct) - if(!mob.z)//Inside an object, tell it we moved var/atom/O = mob.loc if(!O) @@ -168,11 +177,13 @@ if((mob.flags_atom & DIRLOCK) && mob.dir != direct) move_delay += MOVE_REDUCTION_DIRECTION_LOCKED // by Geeves - mob.cur_speed = Clamp(10/(move_delay + 0.5), MIN_SPEED, MAX_SPEED) - //We are now going to move - moving = TRUE - mob.move_intentionally = TRUE - if(mob.lying) + mob.cur_speed = clamp(10/(move_delay + 0.5), MIN_SPEED, MAX_SPEED) + next_movement = world.time + MINIMAL_MOVEMENT_INTERVAL // We pre-set this now for the crawling case. If crawling do_after fails, next_movement would be set after the attempt end instead of now. + + //Try to crawl first + if(living_mob && living_mob.body_position == LYING_DOWN) + if(mob.crawling) + return // Already doing it. //check for them not being a limbless blob (only humans have limbs) if(ishuman(mob)) var/mob/living/carbon/human/human = mob @@ -181,21 +192,19 @@ if(!(human.get_limb(zone))) extremities.Remove(zone) if(extremities.len < 4) - next_movement = world.time + MINIMAL_MOVEMENT_INTERVAL - mob.move_intentionally = FALSE - moving = FALSE return //now crawl mob.crawling = TRUE - if(!do_after(mob, 3 SECONDS, INTERRUPT_MOVED|INTERRUPT_UNCONSCIOUS|INTERRUPT_STUNNED|INTERRUPT_RESIST|INTERRUPT_CHANGED_LYING, BUSY_ICON_GENERIC)) + if(!do_after(mob, 1 SECONDS, INTERRUPT_MOVED|INTERRUPT_UNCONSCIOUS|INTERRUPT_STUNNED|INTERRUPT_RESIST|INTERRUPT_CHANGED_LYING, NO_BUSY_ICON)) mob.crawling = FALSE - next_movement = world.time + MINIMAL_MOVEMENT_INTERVAL - mob.move_intentionally = FALSE - moving = FALSE return + if(!mob.crawling) + return // Crawling interrupted by a "real" move. Do nothing. In theory INTERRUPT_MOVED|INTERRUPT_CHANGED_LYING catches this in do_after. mob.crawling = FALSE + mob.move_intentionally = TRUE + moving = TRUE if(mob.confused) - mob.Move(get_step(mob, pick(cardinal))) + mob.Move(get_step(mob, pick(GLOB.cardinals))) else . = ..() diff --git a/code/modules/mob/mob_status_procs.dm b/code/modules/mob/mob_status_procs.dm index b700fad2c136..ced7b7bdaf45 100644 --- a/code/modules/mob/mob_status_procs.dm +++ b/code/modules/mob/mob_status_procs.dm @@ -1,301 +1,3 @@ -/mob/var/stun_timer = TIMER_ID_NULL - -/mob/proc/stun_callback() - stunned = 0 - handle_regular_status_updates(FALSE) - update_canmove() - if(stun_timer != TIMER_ID_NULL) - deltimer(stun_timer) - stun_timer = TIMER_ID_NULL - -/mob/proc/stun_callback_check() - if(stunned && stunned < recovery_constant) - stun_timer = addtimer(CALLBACK(src, PROC_REF(stun_callback)), (stunned/recovery_constant) * 2 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE) - return - - if(stun_timer != TIMER_ID_NULL) - deltimer(stun_timer) - stun_timer = TIMER_ID_NULL - -// adjust stun if needed, do not call it in adjust stunned -/mob/proc/stun_clock_adjustment() - return - -/mob/proc/Stun(amount) - if(status_flags & CANSTUN) - stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun - stun_clock_adjustment() - stun_callback_check() - update_canmove() - return - -/mob/proc/SetStun(amount) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" - if(status_flags & CANSTUN) - stunned = max(amount,0) - stun_clock_adjustment() - stun_callback_check() - update_canmove() - return - -/mob/proc/AdjustStun(amount) - if(status_flags & CANSTUN) - stunned = max(stunned + amount,0) - stun_callback_check() - update_canmove() - return - -/mob/proc/Daze(amount) - if(status_flags & CANDAZE) - dazed = max(max(dazed,amount),0) - return - -/mob/proc/SetDaze(amount) - if(status_flags & CANDAZE) - dazed = max(amount,0) - return - -/mob/proc/AdjustDaze(amount) - if(status_flags & CANDAZE) - dazed = max(dazed + amount,0) - return - -/mob/proc/Slow(amount) - if(status_flags & CANSLOW) - slowed = max(slowed, amount, 0) - return - -/mob/proc/SetSlow(amount) - if(status_flags & CANSLOW) - slowed = max(amount,0) - return - -/mob/proc/AdjustSlow(amount) - SetSlow(amount + slowed) - return - -/mob/proc/Superslow(amount) - if(status_flags & CANSLOW) - superslowed = max(superslowed, amount, 0) - return - -/mob/proc/SetSuperslow(amount) - if(status_flags & CANSLOW) - superslowed = max(amount,0) - return - -/mob/proc/AdjustSuperslow(amount) - SetSuperslow(superslowed + amount) - return - -/mob/var/knocked_down_timer - -/mob/proc/knocked_down_callback() - knocked_down = 0 - handle_regular_status_updates(FALSE) - update_canmove() - knocked_down_timer = null - -/mob/proc/knocked_down_callback_check() - if(knocked_down && knocked_down < recovery_constant) - knocked_down_timer = addtimer(CALLBACK(src, PROC_REF(knocked_down_callback)), (knocked_down/recovery_constant) * 2 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE) // times whatever amount we have per tick - return - - if(knocked_down_timer) - deltimer(knocked_down_timer) - knocked_down_timer = null - -/mob/var/knocked_out_timer - -/mob/proc/knocked_out_start() - return - -/mob/proc/knocked_out_callback() - knocked_out = 0 - handle_regular_status_updates(FALSE) - update_canmove() - knocked_out_timer = null - -/mob/proc/knocked_out_callback_check() - if(knocked_out && knocked_out < recovery_constant) - knocked_out_start() - knocked_out_timer = addtimer(CALLBACK(src, PROC_REF(knocked_out_callback)), (knocked_out/recovery_constant) * 2 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE) // times whatever amount we have per tick - return - else if(!knocked_out) - //It's been called, and we're probably inconscious, so fix that. - knocked_out_callback() - - if(knocked_out_timer) - deltimer(knocked_out_timer) - knocked_out_timer = null - -// adjust knockdown if needed, do not call it in adjust knockdown -/mob/proc/knockdown_clock_adjustment() - return - -/mob/proc/KnockDown(amount, force) - if((status_flags & CANKNOCKDOWN) || force) - knocked_down = max(max(knocked_down,amount),0) - knockdown_clock_adjustment() - knocked_down_callback_check() - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/SetKnockDown(amount) - if(status_flags & CANKNOCKDOWN) - knocked_down = max(amount,0) - knockdown_clock_adjustment() - knocked_down_callback_check() - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/AdjustKnockDown(amount) - if(status_flags & CANKNOCKDOWN) - knocked_down = max(knocked_down + amount,0) - knocked_down_callback_check() - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/knockout_clock_adjustment() - return - -/mob/proc/KnockOut(amount) - if(status_flags & CANKNOCKOUT) - knocked_out = max(max(knocked_out,amount),0) - knockout_clock_adjustment() - knocked_out_callback_check() - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/SetKnockOut(amount) - if(status_flags & CANKNOCKOUT) - knocked_out = max(amount,0) - knockout_clock_adjustment() - knocked_out_callback_check() - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/AdjustKnockOut(amount) - if(status_flags & CANKNOCKOUT) - knocked_out = max(knocked_out + amount,0) - knocked_out_callback_check() - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/Sleeping(amount) - sleeping = max(max(sleeping,amount),0) - return - -/mob/proc/SetSleeping(amount) - sleeping = max(amount,0) - return - -/mob/proc/AdjustSleeping(amount) - sleeping = max(sleeping + amount,0) - return - -/mob/proc/Resting(amount) - resting = max(max(resting,amount),0) - return - -/mob/proc/SetResting(amount) - resting = max(amount,0) - return - -/mob/proc/AdjustResting(amount) - resting = max(resting + amount,0) - return - -/mob/proc/EyeBlur(amount) - eye_blurry = max(max(eye_blurry, amount), 0) - update_eye_blur() - return - -/mob/proc/SetEyeBlur(amount) - eye_blurry = max(amount, 0) - update_eye_blur() - return - -/mob/proc/AdjustEyeBlur(amount) - eye_blurry = max(eye_blurry + amount, 0) - update_eye_blur() - return - -/mob/proc/ReduceEyeBlur(amount) - eye_blurry = max(eye_blurry - amount, 0) - update_eye_blur() - return - -///Apply the blurry overlays to a mobs clients screen -/mob/proc/update_eye_blur() - if(!client) - return - var/atom/movable/plane_master_controller/game_plane_master_controller = hud_used.plane_master_controllers[PLANE_MASTERS_GAME] - - if(!eye_blurry) - clear_fullscreen("eye_blur", 0.5 SECONDS) - game_plane_master_controller.remove_filter("eye_blur") - return - - switch(client.prefs?.pain_overlay_pref_level) - if(PAIN_OVERLAY_IMPAIR) - overlay_fullscreen("eye_blur", /atom/movable/screen/fullscreen/impaired, CEILING(clamp(eye_blurry * 0.3, 1, 6), 1)) - if(PAIN_OVERLAY_LEGACY) - overlay_fullscreen("eye_blur", /atom/movable/screen/fullscreen/blurry) - else // PAIN_OVERLAY_BLURRY - game_plane_master_controller.add_filter("eye_blur", 1, gauss_blur_filter(clamp(eye_blurry * 0.1, 0.6, 3))) - - -/mob/proc/TalkStutter(amount) - stuttering = max(max(stuttering, amount), 0) - return - -/mob/proc/SetTalkStutter(amount) - stuttering = max(amount, 0) - return - -/mob/proc/AdjustTalkStutter(amount) - stuttering = max(stuttering + amount,0) - return - -/mob/proc/SetEyeBlind(amount) - eye_blind = max(amount, 0) - return - -/mob/proc/AdjustEyeBlind(amount) - eye_blind = max(eye_blind + amount, 0) - return - -/mob/proc/ReduceEyeBlind(amount) - eye_blind = max(eye_blind - amount, 0) - return - -/mob/proc/AdjustEarDeafness(amount) - var/prev_deaf = ear_deaf - ear_deaf = max(ear_deaf + amount, 0) - if(prev_deaf) - if(ear_deaf == 0) - on_deafness_loss() - else if(ear_deaf) - on_deafness_gain() - - -/mob/proc/SetEarDeafness(amount) - var/prev_deaf = ear_deaf - ear_deaf = max(amount, 0) - if(prev_deaf) - if(ear_deaf == 0) - on_deafness_loss() - else if(ear_deaf) - on_deafness_gain() - -/mob/proc/on_deafness_gain() - to_chat(src, SPAN_WARNING("You notice you can't hear anything... you're deaf!")) - SEND_SIGNAL(src, COMSIG_MOB_DEAFENED) - -/mob/proc/on_deafness_loss() - to_chat(src, SPAN_WARNING("You start hearing things again!")) - SEND_SIGNAL(src, COMSIG_MOB_REGAINED_HEARING) - /mob/proc/getBruteLoss() return diff --git a/code/modules/mob/mob_transformation_simple.dm b/code/modules/mob/mob_transformation_simple.dm index 92e46454cc5e..cd76618f3243 100644 --- a/code/modules/mob/mob_transformation_simple.dm +++ b/code/modules/mob/mob_transformation_simple.dm @@ -4,7 +4,7 @@ //Note that this proc does NOT do MMI related stuff! /mob/proc/change_mob_type(new_type = null, turf/location = null, new_name = null as text, delete_old_mob = 0 as num, subspecies) if(istype(src,/mob/new_player)) - to_chat(usr, SPAN_DANGER("cannot convert players who have not entered yet.")) + to_chat(usr, SPAN_DANGER("Cannot convert players who have not entered yet.")) return if(!new_type) @@ -18,7 +18,7 @@ return if( new_type == /mob/new_player ) - to_chat(usr, SPAN_DANGER("cannot convert into a new_player mob type.")) + to_chat(usr, SPAN_DANGER("Cannot convert into a new_player mob type.")) return var/mob/M diff --git a/code/modules/mob/mob_verbs.dm b/code/modules/mob/mob_verbs.dm index 8153032446dd..1ba8985d56bd 100644 --- a/code/modules/mob/mob_verbs.dm +++ b/code/modules/mob/mob_verbs.dm @@ -32,7 +32,7 @@ return /mob/verb/view_stats() - set category = "OOC" + set category = "OOC.Records" set name = "View Playtimes" set desc = "View your playtimes." if(!SSentity_manager.ready) @@ -98,8 +98,8 @@ if(length(mind.memory) < 4000) mind.store_memory(msg) else - src.sleeping = 9999999 - message_admins("[key_name(usr)] auto-slept for attempting to exceed mob memory limit. [ADMIN_JMP(src.loc)]") + message_admins("[key_name(usr)] warned for attempting to exceed mob memory limit.]", loc.x, loc.y, loc.z) + to_chat(src, "You have exceeded the maximum memory limit. Sorry!") else to_chat(src, "The game appears to have misplaced your mind datum, so we can't show you your notes.") @@ -155,11 +155,11 @@ return M.key = key - if(M.client) M.client.change_view(world_view_size) + if(M.client) M.client.change_view(GLOB.world_view_size) // M.Login() //wat return -/*/mob/dead/observer/verb/observe() +/mob/dead/observer/verb/observe() set name = "Observe" set category = "Ghost" @@ -169,7 +169,7 @@ if(!target) return - do_observe(target) */ //disabled thanks to le exploiterinos + do_observe(target) /mob/verb/cancel_camera() set name = "Cancel Camera View" @@ -222,6 +222,7 @@ set category = "IC" if(pulling) + REMOVE_TRAIT(pulling, TRAIT_FLOORED, CHOKEHOLD_TRAIT) var/mob/M = pulling pulling.pulledby = null pulling = null @@ -244,4 +245,3 @@ //so we must undo it here so the victim can move right away M.client.next_movement = world.time M.update_transform(TRUE) - M.update_canmove() diff --git a/code/modules/mob/new_player/login.dm b/code/modules/mob/new_player/login.dm index 9ff317260ccf..4b25d7a2ae39 100644 --- a/code/modules/mob/new_player/login.dm +++ b/code/modules/mob/new_player/login.dm @@ -25,14 +25,14 @@ client.playtitlemusic() // To show them the full lobby art. This fixes itself on a mind transfer so no worries there. - client.change_view(lobby_view_size) + client.change_view(GLOB.lobby_view_size) // Credit the lobby art author - if(displayed_lobby_art != -1) + if(GLOB.displayed_lobby_art != -1) var/list/lobby_authors = CONFIG_GET(str_list/lobby_art_authors) - var/author = lobby_authors[displayed_lobby_art] + var/author = lobby_authors[GLOB.displayed_lobby_art] if(author != "Unknown") to_chat(src, SPAN_ROUNDBODY("
        This round's lobby art is brought to you by [author]
        ")) - if(join_motd) - to_chat(src, "
        [join_motd]
        ") - if(current_tms) - to_chat(src, SPAN_BOLDANNOUNCE(current_tms)) + if(GLOB.join_motd) + to_chat(src, "
        [GLOB.join_motd]
        ") + if(GLOB.current_tms) + to_chat(src, SPAN_BOLDANNOUNCE(GLOB.current_tms)) diff --git a/code/modules/mob/new_player/logout.dm b/code/modules/mob/new_player/logout.dm index 11589f59ee34..4f9a45f5667e 100644 --- a/code/modules/mob/new_player/logout.dm +++ b/code/modules/mob/new_player/logout.dm @@ -1,6 +1,6 @@ /mob/new_player/Logout() if(ready) - readied_players-- + GLOB.readied_players-- ready = FALSE . = ..() if(!spawning)//Here so that if they are spawning and log out, the other procs can play out and they will have a mob to come back to. diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 9f88f0f9d611..7917394df830 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -6,7 +6,6 @@ invisibility = 101 density = FALSE - canmove = FALSE anchored = TRUE universal_speak = TRUE stat = DEAD @@ -15,10 +14,11 @@ . = ..() GLOB.new_player_list += src GLOB.dead_mob_list -= src + ADD_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_INHERENT) /mob/new_player/Destroy() if(ready) - readied_players-- + GLOB.readied_players-- GLOB.new_player_list -= src return ..() @@ -34,14 +34,15 @@ return var/tempnumber = rand(1, 999) - var/postfix_text = (client.prefs && client.prefs.xeno_postfix) ? ("-"+client.prefs.xeno_postfix) : "" - var/prefix_text = (client.prefs && client.prefs.xeno_prefix) ? client.prefs.xeno_prefix : "XX" + var/postfix_text = (client.xeno_postfix) ? ("-"+client.xeno_postfix) : "" + var/prefix_text = (client.xeno_prefix) ? client.xeno_prefix : "XX" var/xeno_text = "[prefix_text]-[tempnumber][postfix_text]" var/round_start = !SSticker || !SSticker.mode || SSticker.current_state <= GAME_STATE_PREGAME var/output = "
        Welcome," output +="
        [(client.prefs && client.prefs.real_name) ? client.prefs.real_name : client.key]" output +="
        [xeno_text]" + output += "

        Tutorial

        " output += "

        Setup Character

        " output += "

        View Playtimes

        " @@ -63,7 +64,7 @@ output += "
        " if (refresh) close_browser(src, "playersetup") - show_browser(src, output, null, "playersetup", "size=240x[round_start ? 330 : 460];can_close=0;can_minimize=0") + show_browser(src, output, null, "playersetup", "size=240x[round_start ? 500 : 610];can_close=0;can_minimize=0") return /mob/new_player/Topic(href, href_list[]) @@ -97,14 +98,14 @@ if("ready") if( (SSticker.current_state <= GAME_STATE_PREGAME) && !ready) // Make sure we don't ready up after the round has started ready = TRUE - readied_players++ + GLOB.readied_players++ new_player_panel_proc() if("unready") if((SSticker.current_state <= GAME_STATE_PREGAME) && ready) // Make sure we don't ready up after the round has started ready = FALSE - readied_players-- + GLOB.readied_players-- new_player_panel_proc() @@ -145,12 +146,12 @@ mind.transfer_to(observer, TRUE) if(observer.client) - observer.client.change_view(world_view_size) + observer.client.change_view(GLOB.world_view_size) observer.set_huds_from_prefs() qdel(src) - return 1 + return TRUE if("late_join") @@ -162,14 +163,9 @@ to_chat(src, SPAN_WARNING("Sorry, you cannot late join during [SSticker.mode.name]. You have to start at the beginning of the round. You may observe or try to join as an alien, if possible.")) return - if(client.prefs.species != "Human") - if(!is_alien_whitelisted(src, client.prefs.species) && CONFIG_GET(flag/usealienwhitelist)) - to_chat(src, "You are currently not whitelisted to play [client.prefs.species].") - return - - var/datum/species/S = GLOB.all_species[client.prefs.species] - if(!(S.flags & IS_WHITELISTED)) - to_chat(src, alert("Your current species,[client.prefs.species], is not available for play on the station.")) + if(client.player_data?.playtime_loaded && (client.get_total_human_playtime() < CONFIG_GET(number/notify_new_player_age)) && !length(client.prefs.completed_tutorials)) + if(tgui_alert(src, "You have little playtime and haven't completed any tutorials. Would you like to go to the tutorial menu?", "Tutorial", list("Yes", "No")) == "Yes") + tutorial_menu() return LateChoices() @@ -207,36 +203,46 @@ if("SelectedJob") - if(!enter_allowed) + if(!GLOB.enter_allowed) to_chat(usr, SPAN_WARNING("There is an administrative lock on entering the game! (The dropship likely crashed into the Almayer. This should take at most 20 minutes.)")) return - if(client.prefs.species != "Human") - if(!is_alien_whitelisted(src, client.prefs.species) && CONFIG_GET(flag/usealienwhitelist)) - to_chat(src, alert("You are currently not whitelisted to play [client.prefs.species].")) - return 0 - - var/datum/species/S = GLOB.all_species[client.prefs.species] - if(!(S.flags & IS_WHITELISTED)) - to_chat(src, alert("Your current species,[client.prefs.species], is not available for play on the station.")) - return 0 - AttemptLateSpawn(href_list["job_selected"]) return + if("tutorial") + tutorial_menu() + else new_player_panel() +/mob/new_player/proc/tutorial_menu() + if(SSticker.current_state <= GAME_STATE_SETTING_UP) + to_chat(src, SPAN_WARNING("Please wait for the round to start before entering a tutorial.")) + return + + if(SSticker.current_state == GAME_STATE_FINISHED) + to_chat(src, SPAN_WARNING("The round has ended. Please wait for the next round to enter a tutorial.")) + return + + if(SSticker.tutorial_disabled) + to_chat(src, SPAN_WARNING("Tutorials are currently disabled because something broke, sorry!")) + return + + var/datum/tutorial_menu/menu = new(src) + menu.ui_interact(src) + /mob/new_player/proc/AttemptLateSpawn(rank) + var/datum/job/player_rank = GLOB.RoleAuthority.roles_for_mode[rank] if (src != usr) return if(SSticker.current_state != GAME_STATE_PLAYING) to_chat(usr, SPAN_WARNING("The round is either not ready, or has already finished!")) return - if(!enter_allowed) + if(!GLOB.enter_allowed) to_chat(usr, SPAN_WARNING("There is an administrative lock on entering the game! (The dropship likely crashed into the Almayer. This should take at most 20 minutes.)")) return - if(!RoleAuthority.assign_role(src, RoleAuthority.roles_for_mode[rank], 1)) + if(!GLOB.RoleAuthority.assign_role(src, player_rank, 1)) to_chat(src, alert("[rank] is not available. Please try another.")) return @@ -244,24 +250,25 @@ close_spawn_windows() var/mob/living/carbon/human/character = create_character(TRUE) //creates the human and transfers vars and mind - RoleAuthority.equip_role(character, RoleAuthority.roles_for_mode[rank], late_join = TRUE) + GLOB.RoleAuthority.equip_role(character, player_rank, late_join = TRUE) EquipCustomItems(character) - if(security_level > SEC_LEVEL_BLUE || EvacuationAuthority.evac_status) - to_chat(character, SPAN_HIGHDANGER("As you stagger out of hypersleep, the sleep bay blares: '[EvacuationAuthority.evac_status ? "VESSEL UNDERGOING EVACUATION PROCEDURES, SELF DEFENSE KIT PROVIDED" : "VESSEL IN HEIGHTENED ALERT STATUS, SELF DEFENSE KIT PROVIDED"]'.")) + if((GLOB.security_level > SEC_LEVEL_BLUE || SShijack.hijack_status) && player_rank.gets_emergency_kit) + to_chat(character, SPAN_HIGHDANGER("As you stagger out of hypersleep, the sleep bay blares: '[SShijack.evac_status ? "VESSEL UNDERGOING EVACUATION PROCEDURES, SELF DEFENSE KIT PROVIDED" : "VESSEL IN HEIGHTENED ALERT STATUS, SELF DEFENSE KIT PROVIDED"]'.")) character.put_in_hands(new /obj/item/storage/box/kit/cryo_self_defense(character.loc)) GLOB.data_core.manifest_inject(character) SSticker.minds += character.mind//Cyborgs and AIs handle this in the transform proc. //TODO!!!!! ~Carn - SSticker.mode.latejoin_tally += RoleAuthority.calculate_role_weight(RoleAuthority.roles_for_mode[rank]) + SSticker.mode.latejoin_update(player_rank) + SSticker.mode.update_gear_scale() - for(var/datum/squad/sq in RoleAuthority.squads) + for(var/datum/squad/sq in GLOB.RoleAuthority.squads) if(sq) sq.max_engineers = engi_slot_formula(GLOB.clients.len) sq.max_medics = medic_slot_formula(GLOB.clients.len) - if(SSticker.mode.latejoin_larva_drop && SSticker.mode.latejoin_tally >= SSticker.mode.latejoin_larva_drop) - SSticker.mode.latejoin_tally -= SSticker.mode.latejoin_larva_drop + if(SSticker.mode.latejoin_larva_drop && SSticker.mode.latejoin_tally - SSticker.mode.latejoin_larva_used >= SSticker.mode.latejoin_larva_drop) + SSticker.mode.latejoin_larva_used += SSticker.mode.latejoin_larva_drop var/datum/hive_status/hive for(var/hivenumber in GLOB.hive_datum) hive = GLOB.hive_datum[hivenumber] @@ -275,11 +282,11 @@ if(player.get_playtime(STATISTIC_HUMAN) == 0 && player.get_playtime(STATISTIC_XENO) == 0) msg_admin_niche("NEW JOIN: [key_name(character, 1, 1, 0)]. IP: [character.lastKnownIP], CID: [character.computer_id]") if(character.client) - var/client/C = character.client - if(C.player_data && C.player_data.playtime_loaded && length(C.player_data.playtimes) == 0) + var/client/client = character.client + if(client.player_data && client.player_data.playtime_loaded && length(client.player_data.playtimes) == 0) msg_admin_niche("NEW PLAYER: [key_name(character, 1, 1, 0)]. IP: [character.lastKnownIP], CID: [character.computer_id]") - if(C.player_data && C.player_data.playtime_loaded && ((round(C.get_total_human_playtime() DECISECONDS_TO_HOURS, 0.1)) <= 5)) - msg_sea("NEW PLAYER: [key_name(character, 0, 1, 0)] only has [(round(C.get_total_human_playtime() DECISECONDS_TO_HOURS, 0.1))] hours as a human. Current role: [get_actual_job_name(character)] - Current location: [get_area(character)]") + if(client.player_data && client.player_data.playtime_loaded && ((round(client.get_total_human_playtime() DECISECONDS_TO_HOURS, 0.1)) <= CONFIG_GET(number/notify_new_player_age))) + msg_sea("NEW PLAYER: [key_name(character, 0, 1, 0)] only has [(round(client.get_total_human_playtime() DECISECONDS_TO_HOURS, 0.1))] hours as a human. Current role: [get_actual_job_name(character)] - Current location: [get_area(character)]") character.client.init_verbs() qdel(src) @@ -294,53 +301,53 @@ var/dat = "
        " dat += "Round Duration: [round(hours)]h [round(mins)]m
        " - if(EvacuationAuthority) - switch(EvacuationAuthority.evac_status) - if(EVACUATION_STATUS_INITIATING) dat += "The [MAIN_SHIP_NAME] is being evacuated.
        " - if(EVACUATION_STATUS_COMPLETE) dat += "The [MAIN_SHIP_NAME] has undergone evacuation.
        " + if(SShijack) + switch(SShijack.evac_status) + if(EVACUATION_STATUS_INITIATED) + dat += "The [MAIN_SHIP_NAME] is being evacuated.
        " dat += "Choose from the following open positions:
        " var/roles_show = FLAG_SHOW_ALL_JOBS - for(var/i in RoleAuthority.roles_for_mode) - var/datum/job/J = RoleAuthority.roles_for_mode[i] - if(!RoleAuthority.check_role_entry(src, J, TRUE)) + for(var/i in GLOB.RoleAuthority.roles_for_mode) + var/datum/job/J = GLOB.RoleAuthority.roles_for_mode[i] + if(!GLOB.RoleAuthority.check_role_entry(src, J, TRUE)) continue var/active = 0 // Only players with the job assigned and AFK for less than 10 minutes count as active for(var/mob/M in GLOB.player_list) if(M.client && M.job == J.title) active++ - if(roles_show & FLAG_SHOW_CIC && ROLES_CIC.Find(J.title)) + if(roles_show & FLAG_SHOW_CIC && GLOB.ROLES_CIC.Find(J.title)) dat += "Command:
        " roles_show ^= FLAG_SHOW_CIC - else if(roles_show & FLAG_SHOW_AUXIL_SUPPORT && ROLES_AUXIL_SUPPORT.Find(J.title)) + else if(roles_show & FLAG_SHOW_AUXIL_SUPPORT && GLOB.ROLES_AUXIL_SUPPORT.Find(J.title)) dat += "
        Auxiliary Combat Support:
        " roles_show ^= FLAG_SHOW_AUXIL_SUPPORT - else if(roles_show & FLAG_SHOW_MISC && ROLES_MISC.Find(J.title)) + else if(roles_show & FLAG_SHOW_MISC && GLOB.ROLES_MISC.Find(J.title)) dat += "
        Other:
        " roles_show ^= FLAG_SHOW_MISC - else if(roles_show & FLAG_SHOW_POLICE && ROLES_POLICE.Find(J.title)) + else if(roles_show & FLAG_SHOW_POLICE && GLOB.ROLES_POLICE.Find(J.title)) dat += "
        Military Police:
        " roles_show ^= FLAG_SHOW_POLICE - else if(roles_show & FLAG_SHOW_ENGINEERING && ROLES_ENGINEERING.Find(J.title)) + else if(roles_show & FLAG_SHOW_ENGINEERING && GLOB.ROLES_ENGINEERING.Find(J.title)) dat += "
        Engineering:
        " roles_show ^= FLAG_SHOW_ENGINEERING - else if(roles_show & FLAG_SHOW_REQUISITION && ROLES_REQUISITION.Find(J.title)) + else if(roles_show & FLAG_SHOW_REQUISITION && GLOB.ROLES_REQUISITION.Find(J.title)) dat += "
        Requisitions:
        " roles_show ^= FLAG_SHOW_REQUISITION - else if(roles_show & FLAG_SHOW_MEDICAL && ROLES_MEDICAL.Find(J.title)) + else if(roles_show & FLAG_SHOW_MEDICAL && GLOB.ROLES_MEDICAL.Find(J.title)) dat += "
        Medbay:
        " roles_show ^= FLAG_SHOW_MEDICAL - else if(roles_show & FLAG_SHOW_MARINES && ROLES_MARINES.Find(J.title)) - dat += "
        Squad Riflemen:
        " + else if(roles_show & FLAG_SHOW_MARINES && GLOB.ROLES_MARINES.Find(J.title)) + dat += "
        Marines:
        " roles_show ^= FLAG_SHOW_MARINES dat += "[J.disp_title] ([J.current_positions]) (Active: [active])
        " @@ -355,44 +362,14 @@ var/mob/living/carbon/human/new_character - var/datum/species/chosen_species - if(client.prefs.species) - chosen_species = GLOB.all_species[client.prefs.species] - if(chosen_species) - // Have to recheck admin due to no usr at roundstart. Latejoins are fine though. - if(is_species_whitelisted(chosen_species) || has_admin_rights()) - new_character = new(loc, client.prefs.species) - if(!new_character) new_character = new(loc) new_character.lastarea = get_area(loc) - client.prefs.copy_all_to(new_character, job, is_late_join) - - if (client.prefs.be_random_body) - var/datum/preferences/TP = new() - TP.randomize_appearance(new_character) - - if(mind) - mind_initialize() - mind.active = 0 //we wish to transfer the key manually - mind.original = new_character - mind.transfer_to(new_character) //won't transfer key since the mind is not active - mind.setup_human_stats() + setup_human(new_character, src, is_late_join) - new_character.job = job - new_character.name = real_name - new_character.voice = real_name - - // Update the character icons - // This is done in set_species when the mob is created as well, but - INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, regenerate_icons)) - INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, update_body), 1, 0) - INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, update_hair)) - - new_character.key = key //Manually transfer the key to log them in - new_character.client?.change_view(world_view_size) + new_character.client?.change_view(GLOB.world_view_size) return new_character @@ -451,26 +428,6 @@ ui.close() continue -/mob/new_player/proc/has_admin_rights() - return client.admin_holder.rights & R_ADMIN - -/mob/new_player/proc/is_species_whitelisted(datum/species/S) - if(!S) return 1 - return is_alien_whitelisted(src, S.name) || !CONFIG_GET(flag/usealienwhitelist) || !(S.flags & IS_WHITELISTED) - -/mob/new_player/get_species() - var/datum/species/chosen_species - if(client.prefs.species) - chosen_species = GLOB.all_species[client.prefs.species] - - if(!chosen_species) - return "Human" - - if(is_species_whitelisted(chosen_species) || has_admin_rights()) - return chosen_species.name - - return "Human" - /mob/new_player/get_gender() if(!client || !client.prefs) ..() return client.prefs.gender diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index f8c86f9c5171..7e8439cee244 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -198,21 +198,31 @@ arm_equipment(preview_dummy, J, FALSE, FALSE, owner, show_job_gear) + // If the dummy was equipped with marine armor. + var/jacket = preview_dummy.get_item_by_slot(WEAR_JACKET) + if(istype(jacket, /obj/item/clothing/suit/storage/marine)) + var/obj/item/clothing/suit/storage/marine/armor = jacket + // If the armor has different sprite variants. + if(armor.armor_variation) + // Set its `icon_state` to the style the player picked as their 'Preferred Armor'. + armor.set_armor_style(preferred_armor) + armor.update_icon(preview_dummy) + if(isnull(preview_front)) preview_front = new() - owner.screen |= preview_front + owner.add_to_screen(preview_front) preview_front.vis_contents += preview_dummy preview_front.screen_loc = "preview:0,0" preview_front.icon_state = bg_state if(isnull(rotate_left)) rotate_left = new(null, preview_dummy) - owner.screen |= rotate_left + owner.add_to_screen(rotate_left) rotate_left.screen_loc = "preview:-1:16,0" if(isnull(rotate_right)) rotate_right = new(null, preview_dummy) - owner.screen |= rotate_right + owner.add_to_screen(rotate_right) rotate_right.screen_loc = "preview:1:-16,0" /datum/preferences/proc/job_pref_to_gear_preset() @@ -237,14 +247,14 @@ if(JOB_SQUAD_TEAM_LEADER) return /datum/equipment_preset/uscm/tl_equipped if(JOB_CO) - if(length(RoleAuthority.roles_whitelist)) - var/datum/job/J = RoleAuthority.roles_by_name[JOB_CO] - return J.gear_preset_whitelist["[JOB_CO][J.get_whitelist_status(RoleAuthority.roles_whitelist, owner)]"] - return /datum/equipment_preset/uscm_ship/commander + var/datum/job/J = GLOB.RoleAuthority.roles_by_name[JOB_CO] + return J.gear_preset_whitelist["[JOB_CO][J.get_whitelist_status(owner)]"] if(JOB_SO) return /datum/equipment_preset/uscm_ship/so if(JOB_XO) return /datum/equipment_preset/uscm_ship/xo + if(JOB_AUXILIARY_OFFICER) + return /datum/equipment_preset/uscm_ship/auxiliary_officer if(JOB_INTEL) return /datum/equipment_preset/uscm/intel/full if(JOB_PILOT) @@ -256,10 +266,8 @@ if(JOB_COMBAT_REPORTER) return /datum/equipment_preset/uscm_ship/reporter if(JOB_SYNTH) - if(length(RoleAuthority.roles_whitelist)) - var/datum/job/J = RoleAuthority.roles_by_name[JOB_SYNTH] - return J.gear_preset_whitelist["[JOB_SYNTH][J.get_whitelist_status(RoleAuthority.roles_whitelist, owner)]"] - return /datum/equipment_preset/synth/uscm + var/datum/job/J = GLOB.RoleAuthority.roles_by_name[JOB_SYNTH] + return J.gear_preset_whitelist["[JOB_SYNTH][J.get_whitelist_status(owner)]"] if(JOB_WORKING_JOE) return /datum/equipment_preset/synth/working_joe if(JOB_POLICE) @@ -277,7 +285,7 @@ if(JOB_MAINT_TECH) return /datum/equipment_preset/uscm_ship/maint if(JOB_CHIEF_REQUISITION) - return /datum/equipment_preset/uscm_ship/ro + return /datum/equipment_preset/uscm_ship/qm if(JOB_CARGO_TECH) return /datum/equipment_preset/uscm_ship/cargo if(JOB_CMO) @@ -305,10 +313,8 @@ return pick(SSmapping.configs[GROUND_MAP].CO_survivor_types) return /datum/equipment_preset/uscm_ship/commander if(JOB_PREDATOR) - if(length(RoleAuthority.roles_whitelist)) - var/datum/job/J = RoleAuthority.roles_by_name[JOB_PREDATOR] - return J.gear_preset_whitelist["[JOB_PREDATOR][J.get_whitelist_status(RoleAuthority.roles_whitelist, owner)]"] - return /datum/equipment_preset/yautja/blooded + var/datum/job/J = GLOB.RoleAuthority.roles_by_name[JOB_PREDATOR] + return J.gear_preset_whitelist["[JOB_PREDATOR][J.get_whitelist_status(owner)]"] return /datum/equipment_preset/uscm/private_equipped diff --git a/code/modules/mob/new_player/sprite_accessories/hair.dm b/code/modules/mob/new_player/sprite_accessories/hair.dm index 0a112cadb11b..558884f26ff0 100644 --- a/code/modules/mob/new_player/sprite_accessories/hair.dm +++ b/code/modules/mob/new_player/sprite_accessories/hair.dm @@ -734,3 +734,29 @@ /datum/sprite_accessory/hair/croft name = "Croft" icon_state = "hair_croft" + +/datum/sprite_accessory/hair/aviator + name = "Aviator" + icon_state = "hair_aviator" + +/datum/sprite_accessory/hair/gantleponytail + name = "Gentle Ponytail" + icon_state = "hair_gantleponytail" + gender = FEMALE + +/datum/sprite_accessory/hair/edgar + name = "Edgar" + icon_state = "hair_edgar" + +/datum/sprite_accessory/hair/emobun + name = "Emo Little Bun" + icon_state = "hair_emobun" + +/datum/sprite_accessory/hair/taper + name = "Taper" + icon_state = "hair_taper" + +/datum/sprite_accessory/hair/gentlebraid + name = "Gentle Braid" + icon_state = "hair_braid3" + gender = FEMALE diff --git a/code/modules/mob/new_player/sprite_accessories/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories/sprite_accessories.dm index 09c4c4861e57..5420753d635e 100644 --- a/code/modules/mob/new_player/sprite_accessories/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories/sprite_accessories.dm @@ -43,6 +43,6 @@ SYNTH_INFILTRATOR ) - // Whether or not the accessory can be affected by colouration - var/do_colouration = 1 + // Whether or not the accessory can be affected by coloration + var/do_coloration = 1 var/selectable = 1 diff --git a/code/modules/mob/new_player/sprite_accessories/undershirt.dm b/code/modules/mob/new_player/sprite_accessories/undershirt.dm index cc2281f5e848..39f0e3ddd173 100644 --- a/code/modules/mob/new_player/sprite_accessories/undershirt.dm +++ b/code/modules/mob/new_player/sprite_accessories/undershirt.dm @@ -32,15 +32,16 @@ GLOBAL_LIST_INIT_TYPED(undershirt_f, /datum/sprite_accessory/undershirt, setup_u /datum/sprite_accessory/undershirt/proc/get_image(mob_gender) var/selected_icon_state = icon_state if(camo_conforming) - switch(SSmapping.configs[GROUND_MAP].map_name) // maploader TODO: json - if(MAP_PRISON_STATION, MAP_PRISON_STATION_V3, MAP_LV522_CHANCES_CLAIM) + switch(SSmapping.configs[GROUND_MAP].camouflage_type) + if("classic") selected_icon_state = "c_" + selected_icon_state - if(MAP_LV_624, MAP_RUNTIME, MAP_NEW_VARADERO) + if("jungle") selected_icon_state = "j_" + selected_icon_state - if(MAP_WHISKEY_OUTPOST, MAP_DESERT_DAM, MAP_BIG_RED, MAP_KUTJEVO) + if("desert") selected_icon_state = "d_" + selected_icon_state - if(MAP_CORSAT, MAP_SOROKYNE_STRATA, MAP_ICE_COLONY, MAP_ICE_COLONY_V3) + if("snow") selected_icon_state = "s_" + selected_icon_state + if(gender == PLURAL) selected_icon_state += mob_gender == MALE ? "_m" : "_f" return image(icon, selected_icon_state) diff --git a/code/modules/mob/new_player/sprite_accessories/underwear.dm b/code/modules/mob/new_player/sprite_accessories/underwear.dm index a558b9459d25..200f3f2f67f7 100644 --- a/code/modules/mob/new_player/sprite_accessories/underwear.dm +++ b/code/modules/mob/new_player/sprite_accessories/underwear.dm @@ -32,14 +32,14 @@ GLOBAL_LIST_INIT_TYPED(underwear_f, /datum/sprite_accessory/underwear, setup_und /datum/sprite_accessory/underwear/proc/get_image(mob_gender) var/selected_icon_state = icon_state if(camo_conforming) - switch(SSmapping.configs[GROUND_MAP].map_name) // maploader TODO: json - if(MAP_PRISON_STATION, MAP_PRISON_STATION_V3, MAP_LV522_CHANCES_CLAIM) + switch(SSmapping.configs[GROUND_MAP].camouflage_type) + if("classic") selected_icon_state = "c_" + selected_icon_state - if(MAP_LV_624, MAP_RUNTIME, MAP_NEW_VARADERO) + if("jungle") selected_icon_state = "j_" + selected_icon_state - if(MAP_WHISKEY_OUTPOST, MAP_DESERT_DAM, MAP_BIG_RED, MAP_KUTJEVO) + if("desert") selected_icon_state = "d_" + selected_icon_state - if(MAP_CORSAT, MAP_SOROKYNE_STRATA, MAP_ICE_COLONY, MAP_ICE_COLONY_V3) + if("snow") selected_icon_state = "s_" + selected_icon_state if(gender == PLURAL) selected_icon_state += mob_gender == MALE ? "_m" : "_f" diff --git a/code/modules/mob/new_player/sprite_accessories/yautja_hair.dm b/code/modules/mob/new_player/sprite_accessories/yautja_hair.dm index 0e18424a04d0..f2ae00e886f6 100644 --- a/code/modules/mob/new_player/sprite_accessories/yautja_hair.dm +++ b/code/modules/mob/new_player/sprite_accessories/yautja_hair.dm @@ -1,7 +1,7 @@ /datum/sprite_accessory/yautja_hair icon = 'icons/mob/humans/yaut_hair.dmi' species_allowed = list(SPECIES_YAUTJA) - do_colouration = FALSE + do_coloration = FALSE /datum/sprite_accessory/yautja_hair/standard name = "Standard" diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 8cd5b148a161..95c9227bd3d5 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -66,7 +66,7 @@ return if(!src.client.admin_holder || !(client.admin_holder.rights & R_MOD)) - if(!dsay_allowed) + if(!GLOB.dsay_allowed) to_chat(src, SPAN_DANGER("Deadchat is globally muted")) return @@ -117,8 +117,6 @@ return 1 if(other.universal_speak) return 1 - if(isAI(src)) - return 1 if (istype(other, src.type) || istype(src, other.type)) return 1 return 0 @@ -174,7 +172,7 @@ for it but just ignore it. if(length(message) >= 2) var/channel_prefix = copytext(message, 1 ,3) - return department_radio_keys[channel_prefix] + return GLOB.department_radio_keys[channel_prefix] return null diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index dcb478d0fc7c..520b58a30db6 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -7,8 +7,8 @@ drop_inv_item_on_ground(W) regenerate_icons() monkeyizing = 1 - canmove = 0 - stunned = 1 + anchored = TRUE + ADD_TRAIT(src, TRAIT_INCAPACITATED, "Terminal Monkeyziation") icon = null invisibility = 101 for(var/t in limbs) @@ -50,79 +50,6 @@ return O -/mob/new_player/AIize() - spawning = TRUE - return ..() - -/mob/living/carbon/human/AIize() - if (monkeyizing) - return - for(var/t in limbs) - qdel(t) - - return ..() - -/mob/living/carbon/AIize() - if (monkeyizing) - return - for(var/obj/item/W in src) - drop_inv_item_on_ground(W) - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - return ..() - -/mob/proc/AIize() - return // this was unmaintained - - -//human -> robot -/mob/living/carbon/human/proc/Robotize() - if (monkeyizing) - return - for(var/obj/item/W in src) - drop_inv_item_on_ground(W) - regenerate_icons() - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - for(var/t in limbs) - qdel(t) - - var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( loc ) - - // cyborgs produced by Robotize get an automatic power cell - O.cell = new(O) - O.cell.maxcharge = 7500 - O.cell.charge = 7500 - - - O.gender = gender - O.invisibility = 0 - - if(mind) //TODO - mind.transfer_to(O) - if(O.job == "Cyborg") - O.mind.original = O - else - O.key = key - if(O.client) O.client.change_view(world_view_size) - - O.forceMove(loc) - O.job = "Cyborg" - if(O.job == "Cyborg") - O.mmi = new /obj/item/device/mmi(O) - - if(O.mmi) - O.mmi.transfer_identity(src) - - O.Namepick() - - qdel(src) - return O - //human -> alien /mob/living/carbon/human/proc/Alienize(list/types) if (monkeyizing) @@ -131,7 +58,7 @@ drop_inv_item_on_ground(W) regenerate_icons() monkeyizing = 1 - canmove = 0 + ADD_TRAIT(src, TRAIT_INCAPACITATED, "Terminal Monkeyziation") icon = null invisibility = 101 for(var/t in limbs) @@ -180,34 +107,12 @@ new_xeno.a_intent = INTENT_HARM new_xeno.key = key - if(new_xeno.client) new_xeno.client.change_view(world_view_size) + if(new_xeno.client) new_xeno.client.change_view(GLOB.world_view_size) to_chat(new_xeno, "You are now an alien.") qdel(src) return -/mob/living/carbon/human/proc/corgize() - if (monkeyizing) - return - for(var/obj/item/W in src) - drop_inv_item_on_ground(W) - regenerate_icons() - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - for(var/t in limbs) //this really should not be necessary - qdel(t) - - var/mob/living/simple_animal/corgi/new_corgi = new /mob/living/simple_animal/corgi (loc) - new_corgi.a_intent = INTENT_HARM - new_corgi.key = key - if(new_corgi.client) new_corgi.client.change_view(world_view_size) - - to_chat(new_corgi, "You are now a Corgi. Yap Yap!") - qdel(src) - return - /mob/living/carbon/human/Animalize() var/list/mobtypes = typesof(/mob/living/simple_animal) @@ -224,7 +129,7 @@ regenerate_icons() monkeyizing = 1 - canmove = 0 + ADD_TRAIT(src, TRAIT_INCAPACITATED, "Terminal Monkeyziation") icon = null invisibility = 101 @@ -234,7 +139,7 @@ var/mob/new_mob = new mobpath(src.loc) new_mob.key = key - if(new_mob.client) new_mob.client.change_view(world_view_size) + if(new_mob.client) new_mob.client.change_view(GLOB.world_view_size) new_mob.a_intent = INTENT_HARM @@ -254,7 +159,7 @@ var/mob/new_mob = new mobpath(src.loc) new_mob.key = key - if(new_mob.client) new_mob.client.change_view(world_view_size) + if(new_mob.client) new_mob.client.change_view(GLOB.world_view_size) new_mob.a_intent = INTENT_HARM to_chat(new_mob, "You feel more... animalistic") diff --git a/code/modules/movement/launching/launching.dm b/code/modules/movement/launching/launching.dm index 96db667fe2ff..778c452a3240 100644 --- a/code/modules/movement/launching/launching.dm +++ b/code/modules/movement/launching/launching.dm @@ -54,6 +54,16 @@ matching_procs += collision_callbacks[path] return matching_procs +/// Invoke end_throw_callbacks on this metadata. +/// Takes argument of type /atom/movable +/datum/launch_metadata/proc/invoke_end_throw_callbacks(atom/movable/movable_atom) + if(length(end_throw_callbacks)) + for(var/datum/callback/callback as anything in end_throw_callbacks) + if(istype(callback, /datum/callback/dynamic)) + callback.Invoke(movable_atom) + else + callback.Invoke() + /atom/movable/var/datum/launch_metadata/launch_metadata = null //called when src is thrown into hit_atom @@ -120,7 +130,7 @@ return TRUE // Proc for throwing items (should only really be used for throw) -/atom/movable/proc/throw_atom(atom/target, range, speed = 0, atom/thrower, spin, launch_type = NORMAL_LAUNCH, pass_flags = NO_FLAGS) +/atom/movable/proc/throw_atom(atom/target, range, speed = 0, atom/thrower, spin, launch_type = NORMAL_LAUNCH, pass_flags = NO_FLAGS, list/end_throw_callbacks, list/collision_callbacks) var/temp_pass_flags = pass_flags switch (launch_type) if (NORMAL_LAUNCH) @@ -135,6 +145,10 @@ LM.speed = speed LM.thrower = thrower LM.spin = spin + if(end_throw_callbacks) + LM.end_throw_callbacks = end_throw_callbacks + if(collision_callbacks) + LM.collision_callbacks = collision_callbacks if(SEND_SIGNAL(src, COMSIG_MOVABLE_PRE_LAUNCH, LM) & COMPONENT_LAUNCH_CANCEL) return @@ -160,7 +174,7 @@ animation_spin(5, 1 + min(1, LM.range/20)) var/old_speed = cur_speed - cur_speed = Clamp(LM.speed, MIN_SPEED, MAX_SPEED) // Sanity check, also ~1 sec delay between each launch move is not very reasonable + cur_speed = clamp(LM.speed, MIN_SPEED, MAX_SPEED) // Sanity check, also ~1 sec delay between each launch move is not very reasonable var/delay = 10/cur_speed - 0.5 // scales delay back to deciseconds for when sleep is called var/pass_flags = LM.pass_flags @@ -169,7 +183,7 @@ add_temp_pass_flags(pass_flags) var/turf/start_turf = get_step_towards(src, LM.target) - var/list/turf/path = getline2(start_turf, LM.target) + var/list/turf/path = get_line(start_turf, LM.target) var/last_loc = loc var/early_exit = FALSE @@ -206,12 +220,7 @@ rebounding = FALSE cur_speed = old_speed remove_temp_pass_flags(pass_flags) - if(length(LM.end_throw_callbacks)) - for(var/datum/callback/CB as anything in LM.end_throw_callbacks) - if(istype(CB, /datum/callback/dynamic)) - CB.Invoke(src) - else - CB.Invoke() + LM.invoke_end_throw_callbacks(src) QDEL_NULL(launch_metadata) /atom/movable/proc/throw_random_direction(range, speed = 0, atom/thrower, spin, launch_type = NORMAL_LAUNCH, pass_flags = NO_FLAGS) diff --git a/code/modules/movement/movement.dm b/code/modules/movement/movement.dm index ee2a184518a0..da0c76cba9d5 100644 --- a/code/modules/movement/movement.dm +++ b/code/modules/movement/movement.dm @@ -92,12 +92,12 @@ /atom/movable/proc/Moved(atom/oldloc, direction, Forced = FALSE) SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED, oldloc, direction, Forced) - if (isturf(loc)) - if (opacity) - oldloc.UpdateAffectingLights() - else - if (light) - light.changed() + for(var/datum/dynamic_light_source/light as anything in hybrid_light_sources) + light.source_atom.update_light() + if(!isturf(loc)) + light.find_containing_atom() + for(var/datum/static_light_source/L as anything in static_light_sources) // Cycle through the light sources on this atom and tell them to update. + L.source_atom.static_update_light() return TRUE /atom/movable/proc/forceMove(atom/destination) diff --git a/code/modules/nano/nanomapgen.dm b/code/modules/nano/nanomapgen.dm deleted file mode 100644 index 749a07feb311..000000000000 --- a/code/modules/nano/nanomapgen.dm +++ /dev/null @@ -1,90 +0,0 @@ -// This file is a modified version of https://raw2.github.com/Baystation12/OldCode-BS12/master/code/TakePicture.dm - -#define NANOMAP_ICON_SIZE 4 -#define NANOMAP_MAX_ICON_DIMENSION 1024 - -#define NANOMAP_TILES_PER_IMAGE (NANOMAP_MAX_ICON_DIMENSION / NANOMAP_ICON_SIZE) - -#define NANOMAP_TERMINALERR 5 -#define NANOMAP_INPROGRESS 2 -#define NANOMAP_BADOUTPUT 2 -#define NANOMAP_SUCCESS 1 -#define NANOMAP_WATCHDOGSUCCESS 4 -#define NANOMAP_WATCHDOGTERMINATE 3 - - -//Call these procs to dump your world to a series of image files (!!) -//NOTE: Does not explicitly support non 32x32 icons or stuff with large pixel_* values, so don't blame me if it doesn't work perfectly - -/client/proc/nanomapgen_DumpImage() - set name = "Generate NanoUI Map" - set category = "Debug" - - if(admin_holder) - nanomapgen_DumpTile(1, 1, text2num(input(usr,"Enter the Z level to generate"))) - -/client/proc/nanomapgen_DumpTile(startX = 1, startY = 1, currentZ = 1, endX = -1, endY = -1) - - if (endX < 0 || endX > world.maxx) - endX = world.maxx - - if (endY < 0 || endY > world.maxy) - endY = world.maxy - - if (currentZ < 0 || currentZ > world.maxz) - to_chat(usr, "NanoMapGen: ERROR: currentZ ([currentZ]) must be between 1 and [world.maxz]") - - sleep(3) - return NANOMAP_TERMINALERR - - if (startX > endX) - to_chat(usr, "NanoMapGen: ERROR: startX ([startX]) cannot be greater than endX ([endX])") - - sleep(3) - return NANOMAP_TERMINALERR - - if (startY > endX) - to_chat(usr, "NanoMapGen: ERROR: startY ([startY]) cannot be greater than endY ([endY])") - sleep(3) - return NANOMAP_TERMINALERR - - var/icon/Tile = icon(file("nano/mapbase1024.png")) - if (Tile.Width() != NANOMAP_MAX_ICON_DIMENSION || Tile.Height() != NANOMAP_MAX_ICON_DIMENSION) - world.log << "NanoMapGen: ERROR: BASE IMAGE DIMENSIONS ARE NOT [NANOMAP_MAX_ICON_DIMENSION]x[NANOMAP_MAX_ICON_DIMENSION]" - sleep(3) - return NANOMAP_TERMINALERR - - world.log << "NanoMapGen: GENERATE MAP ([startX],[startY],[currentZ]) to ([endX],[endY],[currentZ])" - to_chat(usr, "NanoMapGen: GENERATE MAP ([startX],[startY],[currentZ]) to ([endX],[endY],[currentZ])") - - var/count = 0; - for(var/WorldX = startX, WorldX <= endX, WorldX++) - for(var/WorldY = startY, WorldY <= endY, WorldY++) - - var/atom/Turf = locate(WorldX, WorldY, currentZ) - - var/icon/TurfIcon = new(Turf.icon, Turf.icon_state) - TurfIcon.Scale(NANOMAP_ICON_SIZE, NANOMAP_ICON_SIZE) - - Tile.Blend(TurfIcon, ICON_OVERLAY, ((WorldX - 1) * NANOMAP_ICON_SIZE), ((WorldY - 1) * NANOMAP_ICON_SIZE)) - - count++ - - if (count % 8000 == 0) - world.log << "NanoMapGen: [count] tiles done" - sleep(1) - - var/mapFilename = "nanomap_z[currentZ]-new.png" - - world.log << "NanoMapGen: sending [mapFilename] to client" - - usr << browse(Tile, "window=picture;file=[mapFilename];display=0") - - world.log << "NanoMapGen: Done." - - to_chat(usr, "NanoMapGen: Done. File [mapFilename] uploaded to your cache.") - - if (Tile.Width() != NANOMAP_MAX_ICON_DIMENSION || Tile.Height() != NANOMAP_MAX_ICON_DIMENSION) - return NANOMAP_BADOUTPUT - - return NANOMAP_SUCCESS diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm index ce01931f5daf..3e26b2b8a1da 100644 --- a/code/modules/nano/nanoui.dm +++ b/code/modules/nano/nanoui.dm @@ -57,8 +57,8 @@ nanoui is used to open and update nano browser uis // the current status/visibility of the ui var/status = STATUS_INTERACTIVE - // Only allow users with a certain user.stat to get updates. Defaults to 0 (concious) - var/allowed_user_stat = 0 // -1 = ignore, 0 = alive, 1 = unconcious or alive, 2 = dead concious or alive + // Only allow users with a certain user.stat to get updates. Defaults to 0 (conscious) + var/allowed_user_stat = 0 // -1 = ignore, 0 = alive, 1 = unconscious or alive, 2 = dead conscious or alive /** * Create a new nanoui instance. @@ -105,7 +105,7 @@ nanoui is used to open and update nano browser uis */ /datum/nanoui/Destroy() if(user) - nanomanager.ui_closed(src) + SSnano.nanomanager.ui_closed(src) close_browser(user, "[window_id]") user = null @@ -166,7 +166,7 @@ nanoui is used to open and update nano browser uis set_status(STATUS_INTERACTIVE, push_update) // interactive (green visibility) else if (allowed_user_stat == -1 || user == src_object) set_status(STATUS_INTERACTIVE, push_update) // interactive (green visibility) - else if (isrobot(user)) + else if (isSilicon(user)) if (src_object in view(7, user)) // robots can see and interact with things they can see within 7 tiles set_status(STATUS_INTERACTIVE, push_update) // interactive (green visibility) else @@ -177,9 +177,13 @@ nanoui is used to open and update nano browser uis close() return + var/mob/living/living_user + if(isliving(user)) + living_user = user + if ((allowed_user_stat > -1) && (user.stat > allowed_user_stat)) set_status(STATUS_DISABLED, push_update) // no updates, completely disabled (red visibility) - else if (user.is_mob_restrained() || user.lying) + else if (user.is_mob_restrained() || (living_user && living_user.body_position == LYING_DOWN)) set_status(STATUS_UPDATE, push_update) // update only (orange visibility) else if (!(src_object in view(4, user))) // If the src object is not in visable, set status to 0 set_status(STATUS_DISABLED, push_update) // interactive (green visibility) @@ -440,7 +444,7 @@ nanoui is used to open and update nano browser uis winset(user, "mapwindow.map", "focus=true") // return keyboard focus to map on_close_winset() //onclose(user, window_id) - nanomanager.ui_opened(src) + SSnano.nanomanager.ui_opened(src) /** * Close this UI @@ -449,7 +453,7 @@ nanoui is used to open and update nano browser uis */ /datum/nanoui/proc/close() is_auto_updating = 0 - nanomanager.ui_closed(src) + SSnano.nanomanager.ui_closed(src) close_browser(user, "[window_id]") qdel(src) @@ -516,7 +520,7 @@ nanoui is used to open and update nano browser uis map_update = 1 if ((src_object && src_object.Topic(href, href_list)) || map_update) - nanomanager.update_uis(src_object) // update all UIs attached to src_object + SSnano.nanomanager.update_uis(src_object) // update all UIs attached to src_object /** * Process this UI, updating the entire UI or just the status (aka visibility) diff --git a/code/modules/nightmare/nmnodes/mapload.dm b/code/modules/nightmare/nmnodes/mapload.dm index 6f75a46ed125..4b9ae2a3014b 100644 --- a/code/modules/nightmare/nmnodes/mapload.dm +++ b/code/modules/nightmare/nmnodes/mapload.dm @@ -100,7 +100,7 @@ if(!matcher.Find(filename)) continue #if !defined(UNIT_TESTS) - var/fprob = Clamp(text2num(matcher.group[1]) / 100, 0, 1) + var/fprob = clamp(text2num(matcher.group[1]) / 100, 0, 1) if(fprob < rand()) continue #endif // Remove the possibility of chance for testing diff --git a/code/modules/nightmare/nmtasks/mapscheduler.dm b/code/modules/nightmare/nmtasks/mapscheduler.dm index 2a8279e13608..34ceecafb876 100644 --- a/code/modules/nightmare/nmtasks/mapscheduler.dm +++ b/code/modules/nightmare/nmtasks/mapscheduler.dm @@ -28,8 +28,6 @@ for(var/turf/T as anything in tainted) var/area/A = T.loc - if(!A?.lighting_use_dynamic) + if(!A?.area_has_base_lighting) continue - T.cached_lumcount = -1 // Invalidate lumcount to force update here - T.lighting_changed = TRUE - SSlighting.changed_turfs += T + T.update_light() diff --git a/code/modules/objectives/data_retrieval.dm b/code/modules/objectives/data_retrieval.dm index 955d2cc8e63e..f66c578f48fb 100644 --- a/code/modules/objectives/data_retrieval.dm +++ b/code/modules/objectives/data_retrieval.dm @@ -14,7 +14,7 @@ /datum/cm_objective/retrieve_data/New() . = ..() - decryption_password = "[pick(alphabet_uppercase)][rand(100,999)][pick(alphabet_uppercase)][rand(10,99)]" + decryption_password = "[pick(GLOB.alphabet_uppercase)][rand(100,999)][pick(GLOB.alphabet_uppercase)][rand(10,99)]" /datum/cm_objective/retrieve_data/pre_round_start() SSobjectives.statistics["data_retrieval_total_instances"]++ @@ -177,6 +177,8 @@ var/datum/cm_objective/retrieve_item/document/retrieve_objective var/display_color = "white" var/disk_color = "White" + ground_offset_x = 9 + ground_offset_y = 8 /obj/item/disk/objective/Initialize(mapload, ...) . = ..() @@ -206,12 +208,10 @@ disk_color = "Bloodied blue" display_color = "#5296e3" - label = "[pick(greek_letters)]-[rand(100,999)]" + label = "[pick(GLOB.greek_letters)]-[rand(100,999)]" name = "[disk_color] computer disk [label]" objective = new /datum/cm_objective/retrieve_data/disk(src) retrieve_objective = new /datum/cm_objective/retrieve_item/document(src) - pixel_y = rand(-8, 8) - pixel_x = rand(-9, 9) w_class = SIZE_TINY /obj/item/disk/objective/Destroy() @@ -237,7 +237,7 @@ /obj/structure/machinery/computer/objective/Initialize() . = ..() - label = "[pick(greek_letters)]-[rand(100,999)]" + label = "[pick(GLOB.greek_letters)]-[rand(100,999)]" name = "data terminal [label]" objective = new /datum/cm_objective/retrieve_data/terminal(src) diff --git a/code/modules/objectives/documents.dm b/code/modules/objectives/documents.dm index 14bef02245f0..8562f1985e7f 100644 --- a/code/modules/objectives/documents.dm +++ b/code/modules/objectives/documents.dm @@ -122,17 +122,17 @@ unacidable = TRUE indestructible = 1 is_objective = TRUE + ground_offset_x = 9 + ground_offset_y = 8 var/label // label on the document var/renamed = FALSE //Once someone reads a document the item gets renamed based on the objective they are linked to) /obj/item/document_objective/Initialize(mapload, ...) . = ..() - label = "[pick(alphabet_uppercase)][rand(100,999)]" + label = "[pick(GLOB.alphabet_uppercase)][rand(100,999)]" objective = new objective_type(src) retrieve_objective = new /datum/cm_objective/retrieve_item/document(src) LAZYADD(objective.enables_objectives, retrieve_objective) - pixel_y = rand(-8, 8) - pixel_x = rand(-9, 9) /obj/item/document_objective/Destroy() qdel(objective) diff --git a/code/modules/objectives/objective_memory_storage.dm b/code/modules/objectives/objective_memory_storage.dm index 08dfc8cdb2c2..161c78d4d1ba 100644 --- a/code/modules/objectives/objective_memory_storage.dm +++ b/code/modules/objectives/objective_memory_storage.dm @@ -77,26 +77,26 @@ /datum/objective_memory_storage/proc/synchronize_objectives() clean_objectives() - if(!intel_system || !intel_system.oms) + if(!GLOB.intel_system || !GLOB.intel_system.oms) return - intel_system.oms.clean_objectives() + GLOB.intel_system.oms.clean_objectives() - for(var/datum/cm_objective/O in intel_system.oms.folders) + for(var/datum/cm_objective/O in GLOB.intel_system.oms.folders) addToListNoDupe(folders, O) - for(var/datum/cm_objective/O in intel_system.oms.progress_reports) + for(var/datum/cm_objective/O in GLOB.intel_system.oms.progress_reports) addToListNoDupe(progress_reports, O) - for(var/datum/cm_objective/O in intel_system.oms.technical_manuals) + for(var/datum/cm_objective/O in GLOB.intel_system.oms.technical_manuals) addToListNoDupe(technical_manuals, O) - for(var/datum/cm_objective/O in intel_system.oms.terminals) + for(var/datum/cm_objective/O in GLOB.intel_system.oms.terminals) addToListNoDupe(terminals, O) - for(var/datum/cm_objective/O in intel_system.oms.disks) + for(var/datum/cm_objective/O in GLOB.intel_system.oms.disks) addToListNoDupe(disks, O) - for(var/datum/cm_objective/O in intel_system.oms.retrieve_items) + for(var/datum/cm_objective/O in GLOB.intel_system.oms.retrieve_items) addToListNoDupe(retrieve_items, O) - for(var/datum/cm_objective/O in intel_system.oms.other) + for(var/datum/cm_objective/O in GLOB.intel_system.oms.other) addToListNoDupe(other, O) -var/global/datum/intel_system/intel_system = new() +GLOBAL_DATUM_INIT(intel_system, /datum/intel_system, new()) /datum/intel_system var/datum/objective_memory_storage/oms = new() @@ -127,7 +127,7 @@ var/global/datum/intel_system/intel_system = new() if(!powered()) to_chat(user, SPAN_WARNING("This computer has no power!")) return FALSE - if(!intel_system) + if(!GLOB.intel_system) to_chat(user, SPAN_WARNING("The computer doesn't seem to be connected to anything...")) return FALSE if(user.action_busy) @@ -197,9 +197,9 @@ var/global/datum/intel_system/intel_system = new() return TRUE /obj/structure/machinery/computer/intel/proc/transfer_intel(mob/living/user, datum/cm_objective/O) - if(!intel_system || !intel_system.oms) + if(!GLOB.intel_system || !GLOB.intel_system.oms) return 0 - if(intel_system.oms.has_objective(O)) + if(GLOB.intel_system.oms.has_objective(O)) return 0 if(user.action_busy) return 0 @@ -215,7 +215,7 @@ var/global/datum/intel_system/intel_system = new() return -1 to_chat(user, SPAN_NOTICE("...something about \"[clue]\"...")) - intel_system.store_single_objective(O) + GLOB.intel_system.store_single_objective(O) return 1 // -------------------------------------------- @@ -236,7 +236,7 @@ var/global/datum/intel_system/intel_system = new() if(!powered()) to_chat(user, SPAN_WARNING("This computer has no power!")) return FALSE - if(!intel_system) + if(!GLOB.intel_system) to_chat(user, SPAN_WARNING("The computer doesn't seem to be connected to anything...")) return FALSE if(user.action_busy) diff --git a/code/modules/objectives/power_objectives.dm b/code/modules/objectives/power_objectives.dm index ecd192caa32e..8f18af9337ea 100644 --- a/code/modules/objectives/power_objectives.dm +++ b/code/modules/objectives/power_objectives.dm @@ -16,7 +16,7 @@ /datum/cm_objective/power/pre_round_start() if(uses_smes) - for(var/obj/structure/machinery/power/smes/colony_smes in machines) + for(var/obj/structure/machinery/power/smes/colony_smes in GLOB.machines) if(!is_ground_level(colony_smes.loc.z)) continue LAZYADD(power_objects, colony_smes) diff --git a/code/modules/organs/limb_objects.dm b/code/modules/organs/limb_objects.dm index ecfd4ca1960f..9d49ad7736d2 100644 --- a/code/modules/organs/limb_objects.dm +++ b/code/modules/organs/limb_objects.dm @@ -105,7 +105,7 @@ var/datum/sprite_accessory/facial_hair_style = GLOB.facial_hair_styles_list[H.f_style] if(facial_hair_style) var/icon/facial = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") - if(facial_hair_style.do_colouration) + if(facial_hair_style.do_coloration) facial.Blend(rgb(H.r_facial, H.g_facial, H.b_facial), ICON_ADD) overlays.Add(facial) // icon.Blend(facial, ICON_OVERLAY) @@ -115,7 +115,7 @@ if(hair_style) var/icon/hair = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") var/icon/eyes = new/icon("icon" = 'icons/mob/humans/onmob/human_face.dmi', "icon_state" = H.species ? H.species.eyes : "eyes_s") - if(hair_style.do_colouration) + if(hair_style.do_coloration) hair.Blend(rgb(H.r_hair, H.g_hair, H.b_hair), ICON_ADD) eyes.Blend(rgb(H.r_eyes, H.g_eyes, H.b_eyes), ICON_ADD) @@ -136,6 +136,7 @@ H.regenerate_icons() if(braindeath_on_decap) + brainmob.timeofdeath = world.time brainmob.set_stat(DEAD) brainmob.death(cause) diff --git a/code/modules/organs/limbs.dm b/code/modules/organs/limbs.dm index dae33bea8157..09ce36dbbfcb 100644 --- a/code/modules/organs/limbs.dm +++ b/code/modules/organs/limbs.dm @@ -71,6 +71,19 @@ var/status = LIMB_ORGANIC var/processing = FALSE + /// ethnicity of the owner, used for limb appearance, set in [/obj/limb/proc/update_limb()] + var/ethnicity = "western" + + /// body type of the owner, used for limb appearance, set in [/obj/limb/proc/update_limb()] + var/body_type = "mesomorphic" + + /// species of the owner, used for limb appearance, set in [/obj/limb/proc/update_limb()] + var/datum/species/species + + /// defines which sprite the limb should use if dimorphic, set in [/obj/limb/proc/update_limb()] + var/limb_gender = MALE + + /obj/limb/Initialize(mapload, obj/limb/P, mob/mob_owner) . = ..() if(P) @@ -81,12 +94,10 @@ if(mob_owner) owner = mob_owner - wound_overlay = image('icons/mob/humans/dam_human.dmi', "grayscale_0") - wound_overlay.blend_mode = BLEND_INSET_OVERLAY + wound_overlay = image('icons/mob/humans/dam_human.dmi', "grayscale_0", -DAMAGE_LAYER) wound_overlay.color = owner?.species.blood_color - burn_overlay = image('icons/mob/humans/dam_human.dmi', "burn_0") - burn_overlay.blend_mode = BLEND_INSET_OVERLAY + burn_overlay = image('icons/mob/humans/dam_human.dmi', "burn_0", -DAMAGE_LAYER) if(owner) forceMove(owner) @@ -160,6 +171,7 @@ */ /obj/limb/emp_act(severity) + . = ..() if(!(status & (LIMB_ROBOT|LIMB_SYNTHSKIN))) //meatbags do not care about EMP return var/probability = 30 @@ -353,7 +365,8 @@ //If limb was damaged before and took enough damage, try to cut or tear it off var/no_perma_damage = owner.status_flags & NO_PERMANENT_DAMAGE - if(previous_brute > 0 && !is_ff && body_part != BODY_FLAG_CHEST && body_part != BODY_FLAG_GROIN && !no_limb_loss && !no_perma_damage) + var/no_bone_break = owner.chem_effect_flags & CHEM_EFFECT_RESIST_FRACTURE + if(previous_brute > 0 && !is_ff && body_part != BODY_FLAG_CHEST && body_part != BODY_FLAG_GROIN && !no_limb_loss && !no_perma_damage && !no_bone_break) if(CONFIG_GET(flag/limbs_can_break) && brute_dam >= max_damage * CONFIG_GET(number/organ_health_multiplier)) var/cut_prob = brute/max_damage * 5 if(prob(cut_prob)) @@ -361,7 +374,7 @@ SEND_SIGNAL(src, COMSIG_LIMB_TAKEN_DAMAGE, is_ff, previous_brute, previous_burn) owner.updatehealth() - update_icon() + owner.update_damage_overlays() start_processing() ///Special delimbs for different limbs @@ -535,6 +548,7 @@ This function completely restores a damaged organ to perfect condition. /obj/limb/proc/remove_all_bleeding(external = FALSE, internal = FALSE) + SEND_SIGNAL(src, COMSIG_LIMB_STOP_BLEEDING, external, internal) if(external) for(var/datum/effects/bleeding/external/B in bleeding_effects_list) qdel(B) @@ -651,7 +665,7 @@ This function completely restores a damaged organ to perfect condition. // sync the organ's damage with its wounds update_damages() - update_icon() + owner.update_damage_overlays() if(wound_disappeared) owner.update_med_icon() remove_wound_bleeding() @@ -670,74 +684,66 @@ This function completely restores a damaged organ to perfect condition. number_wounds += W.amount -/obj/limb/update_icon(forced = FALSE) - if(parent && parent.status & LIMB_DESTROYED) - overlays.Cut() - icon_state = "" - return +/// updates the various internal variables of the limb from the owner +/obj/limb/proc/update_limb() + SHOULD_CALL_PARENT(TRUE) - if(status & LIMB_DESTROYED) - if(forced) - overlays.Cut() - if(has_stump_icon && !(status & LIMB_AMPUTATED)) - icon = 'icons/mob/humans/dam_human.dmi' - icon_state = "stump_[icon_name]_bone" - var/image/blood_overlay = new('icons/mob/humans/dam_human.dmi', "stump_[icon_name]_blood") - blood_overlay.color = owner.species.blood_color - overlays += blood_overlay - else - icon_state = "" - return + var/datum/ethnicity/owner_ethnicity = GLOB.ethnicities_list[owner?.ethnicity] - var/race_icon = owner.species.icobase + if(owner_ethnicity) + ethnicity = owner_ethnicity.icon_name + else + ethnicity = "western" - if ((status & LIMB_ROBOT) && !(owner.species && owner.species.flags & IS_SYNTHETIC)) - overlays.Cut() - icon = 'icons/mob/robotic.dmi' - icon_state = "[icon_name]" - return + var/datum/body_type/owner_body_type = GLOB.body_types_list[owner?.body_type] - var/datum/ethnicity/E = GLOB.ethnicities_list[owner.ethnicity] - var/datum/body_type/B = GLOB.body_types_list[owner.body_type] + if(owner_body_type) + body_type = owner_body_type.icon_name + else + body_type = "mesomorphic" - var/e_icon - var/b_icon + if(isspeciesyautja(owner)) + ethnicity = owner.ethnicity + body_type = owner.body_type - if (!E) - e_icon = "western" - else - e_icon = E.icon_name + species = owner?.species ? owner.species : GLOB.all_species[SPECIES_HUMAN] + limb_gender = owner?.gender ? owner.gender : FEMALE - if (!B) - b_icon = "mesomorphic" - else - b_icon = B.icon_name +/// generates a list of overlays that should be applied to the owner +/obj/limb/proc/get_limb_icon() + SHOULD_CALL_PARENT(TRUE) + RETURN_TYPE(/list) - if(isspeciesyautja(owner)) - e_icon = owner.ethnicity - b_icon = owner.body_type + . = list() - icon = race_icon - icon_state = "[get_limb_icon_name(owner.species, b_icon, owner.gender, icon_name, e_icon)]" - wound_overlay.color = owner.species.blood_color + if(parent?.status & LIMB_DESTROYED) + return - var/n_is = damage_state_text() - if (forced || n_is != damage_state) - overlays.Cut() - damage_state = n_is - update_overlays() + if(status & LIMB_DESTROYED) + if(has_stump_icon && !(status & LIMB_AMPUTATED)) + . += image('icons/mob/humans/dam_human.dmi', "stump_[icon_name]_blood", -DAMAGE_LAYER) + return + var/image/limb = image(layer = -BODYPARTS_LAYER) -/obj/limb/proc/update_overlays() - var/brutestate = copytext(damage_state, 1, 2) - var/burnstate = copytext(damage_state, 2) - if(brutestate != "0") - wound_overlay.icon_state = "grayscale_[brutestate]" - overlays += wound_overlay + if ((status & LIMB_ROBOT) && !(owner.species && owner.species.flags & IS_SYNTHETIC)) + limb.icon = 'icons/mob/robotic.dmi' + limb.icon_state = "[icon_name]" + . += limb + return - if(burnstate != "0") - burn_overlay.icon_state = "burn_[burnstate]" - overlays += burn_overlay + limb.icon = species.icobase + limb.icon_state = "[get_limb_icon_name(species, body_type, limb_gender, icon_name, ethnicity)]" + + . += limb + + return + +/// generates a key for the purpose of caching the icon to avoid duplicate generations +/obj/limb/proc/get_limb_icon_key() + SHOULD_CALL_PARENT(TRUE) + + return "[species.name]-[body_type]-[limb_gender]-[icon_name]-[ethnicity]-[status]" // new damage icon system // returns just the brute/burn damage code @@ -774,7 +780,7 @@ This function completely restores a damaged organ to perfect condition. //Recursive setting of self and all child organs to amputated /obj/limb/proc/setAmputatedTree() status |= LIMB_AMPUTATED - update_icon(TRUE) + owner.update_body() for(var/obj/limb/O as anything in children) O.setAmputatedTree() @@ -941,7 +947,7 @@ This function completely restores a damaged organ to perfect condition. if(organ) //Throw organs around - var/lol = pick(cardinal) + var/lol = pick(GLOB.cardinals) step(organ,lol) owner.update_body() //Among other things, this calls update_icon() and updates our visuals. @@ -950,7 +956,13 @@ This function completely restores a damaged organ to perfect condition. // OK so maybe your limb just flew off, but if it was attached to a pair of cuffs then hooray! Freedom! release_restraints() - if(vital) owner.death(cause) + if(vital) + var/mob/caused_mob + if(istype(cause, /mob)) + caused_mob = cause + if(!istype(cause, /datum/cause_data)) + cause = create_cause_data("lost vital limb", caused_mob) + owner.death(cause) /* HELPERS @@ -1080,7 +1092,7 @@ treat_grafted var tells it to apply to grafted but unsalved wounds, for burn kit //if the chance was not set by what called fracture(), the endurance check is done instead if(bonebreak_probability == null) //bone break chance is based on endurance, 25% for survivors, erts, 100% for most everyone else. - bonebreak_probability = 100 / Clamp(owner.skills?.get_skill_level(SKILL_ENDURANCE)-1,1,100) //can't be zero + bonebreak_probability = 100 / clamp(owner.skills?.get_skill_level(SKILL_ENDURANCE)-1,1,100) //can't be zero var/list/bonebreak_data = list("bonebreak_probability" = bonebreak_probability) SEND_SIGNAL(owner, COMSIG_HUMAN_BONEBREAK_PROBABILITY, bonebreak_data) @@ -1140,7 +1152,7 @@ treat_grafted var tells it to apply to grafted but unsalved wounds, for burn kit for(var/obj/limb/T as anything in children) T.robotize(uncalibrated = uncalibrated, synth_skin = synth_skin) - update_icon(TRUE) + owner.update_body(TRUE) /obj/limb/proc/calibrate_prosthesis() status &= ~LIMB_UNCALIBRATED_PROSTHETIC @@ -1220,7 +1232,7 @@ treat_grafted var tells it to apply to grafted but unsalved wounds, for burn kit user.visible_message(SPAN_WARNING("[user] fumbles with [S]"), SPAN_WARNING("You fumble with [S]...")) time_to_take = 15 SECONDS - if(do_after(user, time_to_take * user.get_skill_duration_multiplier(SKILL_MEDICAL), INTERRUPT_NEEDHAND, BUSY_ICON_FRIENDLY, target, INTERRUPT_MOVED, BUSY_ICON_MEDICAL)) + if(do_after(user, time_to_take * user.get_skill_duration_multiplier(SKILL_MEDICAL), INTERRUPT_NO_NEEDHAND, BUSY_ICON_FRIENDLY, target, INTERRUPT_MOVED, BUSY_ICON_MEDICAL)) var/possessive = "[user == target ? "your" : "\the [target]'s"]" var/possessive_their = "[user == target ? user.gender == MALE ? "his" : "her" : "\the [target]'s"]" user.affected_message(target, @@ -1243,6 +1255,20 @@ treat_grafted var tells it to apply to grafted but unsalved wounds, for burn kit owner.incision_depths[name] = SURGERY_DEPTH_SURFACE owner.active_surgeries[name] = null +/obj/limb/proc/get_damage_overlays() + . = list() + + damage_state = damage_state_text() + var/brutestate = copytext(damage_state, 1, 2) + if(brutestate != "0") + wound_overlay.icon_state = "grayscale_[icon_name]_[brutestate]" + . += wound_overlay + + var/burnstate = copytext(damage_state, 2) + if(burnstate != "0") + burn_overlay.icon_state = "burn_[icon_name]_[burnstate]" + . += wound_overlay + /* LIMB TYPES */ @@ -1389,17 +1415,36 @@ treat_grafted var tells it to apply to grafted but unsalved wounds, for burn kit bandage_icon_amount = 4 var/disfigured = 0 //whether the head is disfigured. -///Specifically, damage overlays. Severed limb gore effects are applied elsewhere. -/obj/limb/head/update_overlays() - ..() + var/eyes_r + var/eyes_g + var/eyes_b + + var/lip_style + +/obj/limb/head/update_limb() + . = ..() + + eyes_r = owner.r_eyes + eyes_g = owner.g_eyes + eyes_b = owner.b_eyes - var/image/eyes = new/image('icons/mob/humans/onmob/human_face.dmi', owner.species.eyes) + lip_style = owner.lip_style + +/obj/limb/head/get_limb_icon() + . = ..() + + var/image/eyes = image('icons/mob/humans/onmob/human_face.dmi', species.eyes, layer = -BODYPARTS_LAYER) eyes.color = list(null, null, null, null, rgb(owner.r_eyes, owner.g_eyes, owner.b_eyes)) - overlays += eyes + . += eyes + + if(lip_style && (species && species.flags & HAS_LIPS)) + var/image/lips = image('icons/mob/humans/onmob/human_face.dmi', "paint_[lip_style]", layer = -BODYPARTS_LAYER) + . += lips + +/obj/limb/head/get_limb_icon_key() + . = ..() - if(owner.lip_style && (owner.species && owner.species.flags & HAS_LIPS)) - var/icon/lips = new /icon('icons/mob/humans/onmob/human_face.dmi', "paint_[owner.lip_style]") - overlays += lips + return "[.]-[eyes_r]-[eyes_g]-[eyes_b]-[lip_style]" /obj/limb/head/take_damage(brute, burn, sharp, edge, used_weapon = null,\ list/forbidden_limbs = list(), no_limb_loss,\ diff --git a/code/modules/organs/organ_internal.dm b/code/modules/organs/organ_internal.dm index 1038f2a86e8a..dd37ac5a8af1 100644 --- a/code/modules/organs/organ_internal.dm +++ b/code/modules/organs/organ_internal.dm @@ -247,6 +247,25 @@ robotic_type = /obj/item/organ/brain/prosthetic vital = 1 +/datum/internal_organ/brain/process(delta_time) + ..() + + if(owner.chem_effect_flags & CHEM_EFFECT_ORGAN_STASIS) + return + + if(organ_status >= ORGAN_BRUISED && prob(5 * delta_time)) + var/dir_choice = pick(list(NORTH, SOUTH, EAST, WEST)) + owner.drop_held_items() + if(!owner.buckled && owner.stat == CONSCIOUS) + owner.Move(get_step(get_turf(owner), dir_choice)) + to_chat(owner, SPAN_DANGER("Your mind wanders and goes blank for a moment...")) + + if(organ_status >= ORGAN_BROKEN && prob(5 * delta_time)) + owner.apply_effect(1, PARALYZE) + if(owner.jitteriness < 100) + owner.make_jittery(50) + to_chat(owner, SPAN_DANGER("Your body seizes up!")) + /datum/internal_organ/brain/prosthetic //used by synthetic species robotic = ORGAN_ROBOT removed_type = /obj/item/organ/brain/prosthetic diff --git a/code/modules/organs/organ_objects.dm b/code/modules/organs/organ_objects.dm index 7c7622820aac..d011933e4b2e 100644 --- a/code/modules/organs/organ_objects.dm +++ b/code/modules/organs/organ_objects.dm @@ -4,14 +4,20 @@ icon = 'icons/obj/items/organs.dmi' icon_state = "appendix" - health = 100 // Process() ticks before death. - - var/fresh = 3 // Squirts of blood left in it. - var/dead_icon // Icon used when the organ dies. - var/robotic // Is the limb prosthetic? - var/organ_tag // What slot does it go in? - var/organ_type = /datum/internal_organ // Used to spawn the relevant organ data when produced via a machine or spawn(). - var/datum/internal_organ/organ_data // Stores info when removed. + /// Process() ticks before death. + health = 100 + /// Squirts of blood left in it. + var/fresh = 3 + /// Icon used when the organ dies. + var/dead_icon + /// Is the limb prosthetic? + var/robotic + /// What slot does it go in? + var/organ_tag + /// Used to spawn the relevant organ data when produced via a machine or spawn(). + var/organ_type = /datum/internal_organ + /// Stores info when removed. + var/datum/internal_organ/organ_data black_market_value = 25 /obj/item/organ/attack_self(mob/user) @@ -100,7 +106,7 @@ gender = PLURAL organ_tag = "eyes" organ_type = /datum/internal_organ/eyes - var/eye_colour + var/eyes_color /obj/item/organ/liver name = "liver" @@ -164,13 +170,13 @@ /obj/item/organ/eyes/removed(mob/living/target, mob/living/user) - if(!eye_colour) - eye_colour = list(0,0,0) + if(!eyes_color) + eyes_color = list(0,0,0) ..() //Make sure target is set so we can steal their eye color for later. var/mob/living/carbon/human/H = target if(istype(H)) - eye_colour = list( + eyes_color = list( H.r_eyes ? H.r_eyes : 0, H.g_eyes ? H.g_eyes : 0, H.b_eyes ? H.b_eyes : 0 @@ -189,10 +195,10 @@ // Apply our eye color to the target. var/mob/living/carbon/human/H = target - if(istype(H) && eye_colour) - H.r_eyes = eye_colour[1] - H.g_eyes = eye_colour[2] - H.b_eyes = eye_colour[3] + if(istype(H) && eyes_color) + H.r_eyes = eyes_color[1] + H.g_eyes = eyes_color[2] + H.b_eyes = eyes_color[3] H.update_body() /obj/item/organ/proc/bitten(mob/user) diff --git a/code/modules/paperwork/carbonpaper.dm b/code/modules/paperwork/carbonpaper.dm index 813283147c45..4ddefff61eb8 100644 --- a/code/modules/paperwork/carbonpaper.dm +++ b/code/modules/paperwork/carbonpaper.dm @@ -30,7 +30,7 @@ set category = "Object" set src in usr - if (copied == 0) + if (!copied && !iscopy) var/obj/item/paper/carbon/c = src var/copycontents = html_decode(c.info) var/obj/item/paper/carbon/copy = new /obj/item/paper/carbon (usr.loc) diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index f38f4505796f..9f00aa3a659a 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -50,7 +50,7 @@ W.forceMove(src) if(istype(W, /obj/item/paper)) toppaper = W - to_chat(user, SPAN_NOTICE("You clip the [W] onto \the [src].")) + to_chat(user, SPAN_NOTICE("You clip [W] onto [src].")) update_icon() else if(istype(toppaper) && HAS_TRAIT(W, TRAIT_TOOL_PEN)) diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 478dcc0a8e04..ad9da68a591d 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -48,7 +48,7 @@ /obj/item/folder/attackby(obj/item/W as obj, mob/user as mob) if(istype(W, /obj/item/paper) || istype(W, /obj/item/photo) || istype(W, /obj/item/paper_bundle)) if(user.drop_inv_item_to_loc(W, src)) - to_chat(user, SPAN_NOTICE("You put the [W] into \the [src].")) + to_chat(user, SPAN_NOTICE("You put [W] into [src].")) update_icon() else if(HAS_TRAIT(W, TRAIT_TOOL_PEN)) var/n_name = strip_html(input(usr, "What would you like to label the folder?", "Folder Labelling", null) as text) diff --git a/code/modules/paperwork/notepad.dm b/code/modules/paperwork/notepad.dm index f30d56c4a7eb..3eb83b6a67b0 100644 --- a/code/modules/paperwork/notepad.dm +++ b/code/modules/paperwork/notepad.dm @@ -14,14 +14,14 @@ var/page = 1 var/screen = 0 - var/list/cover_colours = list("red", "green", "black", "blue") - var/cover_colour + var/list/cover_colors = list("red", "green", "black", "blue") + var/cover_color /obj/item/notepad/Initialize(mapload, ...) . = ..() - if(!cover_colour) - cover_colour = pick(cover_colours) - icon_state = initial(icon_state) + "_[cover_colour]" + if(!cover_color) + cover_color = pick(cover_colors) + icon_state = initial(icon_state) + "_[cover_color]" for(var/i = 1 to paper_left) new /obj/item/paper(src) @@ -129,13 +129,13 @@ add_fingerprint(usr) /obj/item/notepad/black - cover_colour = "black" + cover_color = "black" /obj/item/notepad/blue - cover_colour = "blue" + cover_color = "blue" /obj/item/notepad/green - cover_colour = "green" + cover_color = "green" /obj/item/notepad/red - cover_colour = "red" + cover_color = "red" diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 918d3ab60a7f..27b1fa885133 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -19,6 +19,8 @@ flags_equip_slot = SLOT_HEAD flags_armor_protection = BODY_FLAG_HEAD attack_verb = list("bapped") + ground_offset_x = 9 + ground_offset_y = 8 var/info //What's actually written on the paper. var/info_links //A different version of the paper which includes html links at fields and EOF @@ -42,8 +44,6 @@ /obj/item/paper/Initialize(mapload, photo_list) . = ..() - pixel_y = rand(-8, 8) - pixel_x = rand(-9, 9) stamps = "" src.photo_list = photo_list @@ -75,26 +75,25 @@ /obj/item/paper/get_examine_text(mob/user) . = ..() - if(in_range(user, src) || istype(user, /mob/dead/observer)) + if(in_range(user, src) || isobserver(user)) if(!(istype(user, /mob/dead/observer) || istype(user, /mob/living/carbon/human) || isRemoteControlling(user))) // Show scrambled paper if they aren't a ghost, human, or silicone. - if(photo_list) - for(var/photo in photo_list) - user << browse_rsc(photo_list[photo], photo) - show_browser(user, "[stars(info)][stamps]", name, name) - onclose(user, name) + read_paper(user,scramble = TRUE) else read_paper(user) else . += SPAN_NOTICE("It is too far away.") -/obj/item/paper/proc/read_paper(mob/user) +/obj/item/paper/proc/read_paper(mob/user, scramble = FALSE) var/datum/asset/asset_datum = get_asset_datum(/datum/asset/simple/paper) asset_datum.send(user) if(photo_list) for(var/photo in photo_list) user << browse_rsc(photo_list[photo], photo) - show_browser(user, "[info][stamps]", name, name) + var/paper_info = info + if(scramble) + paper_info = stars_decode_html(info) + show_browser(user, "[paper_info][stamps]", name, name, "size=650x700") onclose(user, name) /obj/item/paper/verb/rename() @@ -115,10 +114,7 @@ /obj/item/paper/attack_remote(mob/living/silicon/ai/user as mob) var/dist - if(istype(user) && user.camera) //is AI - dist = get_dist(src, user.camera) - else //cyborg or AI not seeing through a camera - dist = get_dist(src, user) + dist = get_dist(src, user) if(dist < 2) read_paper(user) else @@ -213,6 +209,8 @@ /obj/item/paper/proc/parsepencode(t, obj/item/tool/pen/P, mob/user as mob, iscrayon = 0) + var/datum/asset/asset = get_asset_datum(/datum/asset/simple/paper) + t = replacetext(t, "\[center\]", "
        ") t = replacetext(t, "\[/center\]", "
        ") t = replacetext(t, "\[br\]", "
        ") @@ -225,10 +223,10 @@ t = replacetext(t, "\[large\]", "") t = replacetext(t, "\[/large\]", "") t = replacetext(t, "\[sign\]", "[user ? user.real_name : "Anonymous"]") - t = replacetext(t, "\[date\]", "[time2text(REALTIMEOFDAY, "Day DD Month [game_year]")]") - t = replacetext(t, "\[shortdate\]", "[time2text(REALTIMEOFDAY, "DD/MM/[game_year]")]") + t = replacetext(t, "\[date\]", "[time2text(REALTIMEOFDAY, "Day DD Month [GLOB.game_year]")]") + t = replacetext(t, "\[shortdate\]", "[time2text(REALTIMEOFDAY, "DD/MM/[GLOB.game_year]")]") t = replacetext(t, "\[time\]", "[worldtime2text("hh:mm")]") - t = replacetext(t, "\[date+time\]", "[worldtime2text("hh:mm")], [time2text(REALTIMEOFDAY, "Day DD Month [game_year]")]") + t = replacetext(t, "\[date+time\]", "[worldtime2text("hh:mm")], [time2text(REALTIMEOFDAY, "Day DD Month [GLOB.game_year]")]") t = replacetext(t, "\[field\]", "") t = replacetext(t, "\[h1\]", "

        ") @@ -251,11 +249,13 @@ t = replacetext(t, "\[/grid\]", "

        [t] (unban)
        ") t = replacetext(t, "\[row\]", "") t = replacetext(t, "\[cell\]", "") - t = replacetext(t, "\[logo\]", "") - t = replacetext(t, "\[wy\]", "") - t = replacetext(t, "\[uscm\]", "") + t = replacetext(t, "\[logo\]", "") + t = replacetext(t, "\[wy\]", "") + t = replacetext(t, "\[uscm\]", "") + t = replacetext(t, "\[upp\]", "") + t = replacetext(t, "\[cmb\]", "") - t = "[t]" + t = "[t]" else // If it is a crayon, and he still tries to use these, make them empty! t = replacetext(t, "\[*\]", "") t = replacetext(t, "\[hr\]", "") @@ -269,7 +269,7 @@ t = replacetext(t, "\[cell\]", "") t = replacetext(t, "\[logo\]", "") - t = "[t]" + t = "[t]" // t = replacetext(t, "#", "") // Junk converted to nothing! @@ -358,8 +358,8 @@ iscrayon = 1 - // if paper is not in usr, then it must be near them, or in a clipboard or folder, which must be in or near usr - if(src.loc != usr && !src.Adjacent(usr) && !((istype(src.loc, /obj/item/clipboard) || istype(src.loc, /obj/item/folder)) && (src.loc.loc == usr || src.loc.Adjacent(usr)) ) ) + // if paper is not in usr, then it must be near them, or in a clipboard, noticeboard or folder, which must be in or near usr + if(src.loc != usr && !src.Adjacent(usr) && !((istype(src.loc, /obj/item/clipboard) || istype(src.loc, /obj/structure/noticeboard) || istype(src.loc, /obj/item/folder)) && (src.loc.loc == usr || src.loc.Adjacent(usr)) ) ) return t = replacetext(t, "\n", "
        ") @@ -378,9 +378,6 @@ /obj/item/paper/attackby(obj/item/P, mob/user) ..() - var/clown = 0 - if(user.mind && (user.job == "Clown")) - clown = 1 if(istype(P, /obj/item/paper) || istype(P, /obj/item/photo)) if (istype(P, /obj/item/paper/carbon)) @@ -408,10 +405,7 @@ if(!p.on) to_chat(user, SPAN_NOTICE("Your pen is not on!")) return - if ( istype(P, /obj/item/tool/pen/robopen) && P:mode == 2 ) - P:RenamePaper(user,src) - else - show_browser(user, "[info_links][stamps]", name, name) // Update the window + show_browser(user, "[info_links][stamps]", name, name) // Update the window //openhelp(user) return @@ -420,11 +414,12 @@ return stamps += (stamps=="" ? "
        " : "
        ") + "This paper has been stamped with the [P.name]." + playsound(src, 'sound/effects/alien_footstep_medium3.ogg', 20, TRUE, 6) var/image/stampoverlay = image('icons/obj/items/paper.dmi') var/x var/y - if(istype(P, /obj/item/tool/stamp/captain) || istype(P, /obj/item/tool/stamp/centcomm)) + if(istype(P, /obj/item/tool/stamp/captain) || istype(P, /obj/item/tool/stamp/weyyu)) x = rand(-2, 0) y = rand(-1, 2) else @@ -435,11 +430,6 @@ stampoverlay.pixel_x = x stampoverlay.pixel_y = y - if(istype(P, /obj/item/tool/stamp/clown)) - if(!clown) - to_chat(user, SPAN_NOTICE("You are totally unable to use the stamp. HONK!")) - return - if(!ico) ico = new ico += "paper_[P.icon_state]" @@ -509,7 +499,7 @@ /obj/item/paper/flag name = "paper flag" - desc = "Somebody attached a blank piece of paper to a stick. You feel like waving it around like an idiot." + desc = "Somebody crudely glued a piece of paper to a stick. You feel like waving it around like an idiot." icon_state = "paper_flag" item_state = "paper_flag" @@ -572,6 +562,10 @@ name = "crumpled note" info = "there is cotten candy in the walls" +/obj/item/paper/bigred/lambda + name = "ripped diary entry" + info = "Director Smith's Diary\nEntry Date: 15 December 2181\nToday, I've felt true progress! The XX-121 reproduction program is in full effect, and Administrator Cooper have given us the all clear to continue producing specimens. To think that all this is coming from just that first specimen, a single 'Queen' form... It's grown to almost 5 meters tall and shows no signs of ceasing egg production! These creatures will be the next Synthetic of our time, we'll show those Seegson bastards." + /obj/item/paper/bigred/union name = "Shaft miners union" info = "Today we have had enough of being underpaid and treated like shit for not reaching the higher up's unreasonable quotas of ore. They say this place has a \"sea of valuable ores,\" yet we have been mining for years and are yet to find a single diamond. We have had it, enough is enough. They think they can control everything we do, they thought wrong! We, the oppressed workers, shall rise up against the capitalist dogs in a mutiny and take back our pay by force. \n If they send their dogs here to bust us, we will kill each and every single one of them." @@ -604,6 +598,15 @@ color = "green" info = "

        I could not do it, the fucking marshals, the minions of THEM, have gotten a whiff of my co-workers plans and started raiding us pre-emptively. We managed to get word of it and erected a few barricades to slow them down, but it is too late. Our plan, my plan to save humanity has turned to dust.

        As I lay and write this, they are gassing the entire area with tear gas, while gunshots echo around the caves. \n They have gotten to my mind already, their voices are... laughing, saying that, \" it's over \" and that \n “we have risen\". Their voices are mocking me as I could do nothing to prevent their rise \n Just as I am about to finish my final entry, I overhear a few panicked radio calls from a dead officer's radio, about a code red lambda breach, and \" X-RAYS OUT OF CONTAINMENT\". \n However, not a single one of their cries has been met with a response as their fellow officers are too preoccupied with beating up poor miners... \n They have won.... they have PLANNED THIS all along.... \n only God may save us now..." +/obj/item/paper/bigred/upp + name = "UPP Orders" + +/obj/item/paper/bigred/upp/Initialize(mapload, photo_list) + . = ..() + + var/datum/asset/asset = get_asset_datum(/datum/asset/simple/paper) + info = "

        Union Of Progressive People's Fourth Fleet
        Orders For 173rd Airborne Reconnaissance: 2nd Platoon
        No.52

        Order of Military Officer of the UPP
        Kolonel Ganbaatar
        Commander of MV-35
        Date: 2182
        On Special Mission
        The actions of the hostile Weyland-Yutani corporation on the fringes of the Neroid sector have grown increasingly intolerable. However, evidence suggesting they are researching into the creation and deployment of some form of biological weapons program represent an unacceptable risk to the security of UPP interests in this sector. The risk of these items falling into UA/USCM hands is unacceptable.

        Orders for the Boris squad of the 173rd Airborne Recon are as follows. Initiate airborne reconnaissance of WY colony Oxley's Buttle, Trijent Dam, location on planet Raijin (UA Code: LV-670). Ascertain veracity of onsight biological weapons program. If positive confirmation of the weapons program is identified, authorization for rapid assault and recovery is granted. Avoid all contact with UA/USCM military forces, abort missions if UA/USCM forces are encountered.
        Authorizing Officer: Gaanbatar
        Name and Rank: Kolonel

        FOR SANCTIONED USE ONLY" + /obj/item/paper/crumpled name = "paper scrap" icon_state = "scrap" @@ -619,11 +622,21 @@ /obj/item/paper/wy icon_state = "paper_wy" - info = "

        \n" + +/obj/item/paper/wy/Initialize(mapload, photo_list) + . = ..() + + var/datum/asset/asset = get_asset_datum(/datum/asset/simple/paper) + info = "

        \n" /obj/item/paper/uscm icon_state = "paper_uscm" - info = "

        \n" + +/obj/item/paper/uscm/Initialize(mapload, photo_list) + . = ..() + + var/datum/asset/asset = get_asset_datum(/datum/asset/simple/paper) + info = "

        \n" /obj/item/paper/research_notes icon_state = "paper_wy_words" @@ -650,33 +663,34 @@ if(!C) var/random_chem if(tier) - random_chem = pick(chemical_gen_classes_list[tier]) + random_chem = pick(GLOB.chemical_gen_classes_list[tier]) else if(note_type == "test") - random_chem = pick(chemical_gen_classes_list["T4"]) + random_chem = pick(GLOB.chemical_gen_classes_list["T4"]) else - random_chem = pick( prob(55);pick(chemical_gen_classes_list["T2"]), - prob(30);pick(chemical_gen_classes_list["T3"]), - prob(15);pick(chemical_gen_classes_list["T4"])) + random_chem = pick( prob(55);pick(GLOB.chemical_gen_classes_list["T2"]), + prob(30);pick(GLOB.chemical_gen_classes_list["T3"]), + prob(15);pick(GLOB.chemical_gen_classes_list["T4"])) if(!random_chem) - random_chem = pick(chemical_gen_classes_list["T1"]) - C = chemical_reagents_list["[random_chem]"] - var/txt = "

        Official Weyland-Yutani Document
        Experiment Notes

        " + random_chem = pick(GLOB.chemical_gen_classes_list["T1"]) + C = GLOB.chemical_reagents_list["[random_chem]"] + var/datum/asset/asset = get_asset_datum(/datum/asset/simple/paper) + var/txt = "

        Official Weyland-Yutani Document
        Experiment Notes

        " switch(note_type) if("synthesis") - var/datum/chemical_reaction/G = chemical_reactions_list[C.id] + var/datum/chemical_reaction/G = GLOB.chemical_reactions_list[C.id] name = "Synthesis of [C.name]" icon_state = "paper_wy_partial_report" txt += "[name]

        " txt += "During experiment [pick("C","Q","V","W","X","Y","Z")][rand(100,999)][pick("a","b","c")] the theorized compound identified as [C.name], was successfully synthesized using the following formula:
        \n
        \n" for(var/I in G.required_reagents) - var/datum/reagent/R = chemical_reagents_list["[I]"] + var/datum/reagent/R = GLOB.chemical_reagents_list["[I]"] var/U = G.required_reagents[I] txt += " - [U] [R.name]
        \n" if(G.required_catalysts && G.required_catalysts.len) txt += "
        \nWhile using the following catalysts:
        \n
        \n" for(var/I in G.required_catalysts) - var/datum/reagent/R = chemical_reagents_list["[I]"] + var/datum/reagent/R = GLOB.chemical_reagents_list["[I]"] var/U = G.required_catalysts[I] txt += " - [U] [R.name]
        \n" if(full_report) @@ -753,16 +767,16 @@ /obj/item/paper/research_notes/unique/Initialize() //Each one of these get a new unique chem var/datum/reagent/generated/C = new /datum/reagent/generated - C.id = "tau-[length(chemical_gen_classes_list["tau"])]" + C.id = "tau-[length(GLOB.chemical_gen_classes_list["tau"])]" C.generate_name() C.chemclass = CHEM_CLASS_RARE if(gen_tier) C.gen_tier = gen_tier else - C.gen_tier = chemical_data.clearance_level + C.gen_tier = GLOB.chemical_data.clearance_level C.generate_stats() - chemical_gen_classes_list["tau"] += C.id //Because each unique_vended should be unique, we do not save the chemclass anywhere but in the tau list - chemical_reagents_list[C.id] = C + GLOB.chemical_gen_classes_list["tau"] += C.id //Because each unique_vended should be unique, we do not save the chemclass anywhere but in the tau list + GLOB.chemical_reagents_list[C.id] = C C.generate_assoc_recipe() data = C msg_admin_niche("New reagent with id [C.id], name [C.name], level [C.gen_tier], generated and printed at [loc] [ADMIN_JMP(loc)].") @@ -786,7 +800,7 @@ info += "ID: [S.name]

        \n" info += "Database Details:
        \n" if(S.chemclass >= CHEM_CLASS_ULTRA) - if(chemical_data.clearance_level >= S.gen_tier || info_only) + if(GLOB.chemical_data.clearance_level >= S.gen_tier || info_only) info += "The following information relating to [S.name] is restricted with a level [S.gen_tier] clearance classification.
        " info += "[S.description]\n" info += "
        Overdoses at: [S.overdose] units\n" @@ -796,7 +810,7 @@ else info += "CLASSIFIED: Clearance level [S.gen_tier] required to read the database entry.
        \n" icon_state = "paper_wy_partial_report" - else if(S.chemclass == CHEM_CLASS_SPECIAL && !chemical_data.clearance_x_access && !info_only) + else if(S.chemclass == CHEM_CLASS_SPECIAL && !GLOB.chemical_data.clearance_x_access && !info_only) info += "CLASSIFIED: Clearance level X required to read the database entry.
        \n" icon_state = "paper_wy_partial_report" else if(S.description) @@ -808,14 +822,14 @@ else info += "No details on this reagent could be found in the database.
        \n" icon_state = "paper_wy_synthesis" - if(S.chemclass >= CHEM_CLASS_SPECIAL && !chemical_data.chemical_identified_list[S.id] && !info_only) + if(S.chemclass >= CHEM_CLASS_SPECIAL && !GLOB.chemical_data.chemical_identified_list[S.id] && !info_only) info += "
        Saved emission spectrum of [S.name] to the database.
        \n" info += "
        Composition Details:
        \n" - if(chemical_reactions_list[S.id]) - var/datum/chemical_reaction/C = chemical_reactions_list[S.id] + if(GLOB.chemical_reactions_list[S.id]) + var/datum/chemical_reaction/C = GLOB.chemical_reactions_list[S.id] for(var/I in C.required_reagents) - var/datum/reagent/R = chemical_reagents_list["[I]"] - if(R.chemclass >= CHEM_CLASS_SPECIAL && !chemical_data.chemical_identified_list[R.id] && !info_only) + var/datum/reagent/R = GLOB.chemical_reagents_list["[I]"] + if(R.chemclass >= CHEM_CLASS_SPECIAL && !GLOB.chemical_data.chemical_identified_list[R.id] && !info_only) info += " - Unknown emission spectrum
        \n" completed = FALSE else @@ -825,14 +839,14 @@ if(C.required_catalysts.len) info += "
        Reaction would require the following catalysts:
        \n" for(var/I in C.required_catalysts) - var/datum/reagent/R = chemical_reagents_list["[I]"] - if(R.chemclass >= CHEM_CLASS_SPECIAL && !chemical_data.chemical_identified_list[R.id] && !info_only) + var/datum/reagent/R = GLOB.chemical_reagents_list["[I]"] + if(R.chemclass >= CHEM_CLASS_SPECIAL && !GLOB.chemical_data.chemical_identified_list[R.id] && !info_only) info += " - Unknown emission spectrum
        \n" completed = FALSE else var/U = C.required_catalysts[I] info += " - [U] [R.name]
        \n" - else if(chemical_gen_classes_list["C1"].Find(S.id)) + else if(GLOB.chemical_gen_classes_list["C1"].Find(S.id)) info += " - [S.name]
        \n" else info += "ERROR: Unable to analyze emission spectrum of sample." //A reaction to make this doesn't exist, so this is our IC excuse @@ -843,7 +857,7 @@ else if(!S.properties) //Safety for empty reagents completed = FALSE - if(S.chemclass == CHEM_CLASS_SPECIAL && chemical_data.clearance_x_access) + if(S.chemclass == CHEM_CLASS_SPECIAL && GLOB.chemical_data.clearance_x_access) completed = TRUE data = S @@ -889,3 +903,14 @@ info = parsepencode(template, null, null, FALSE) #undef MAX_FIELDS + +/obj/item/paper/colonial_grunts + icon = 'icons/obj/items/paper.dmi' + icon_state = "paper_stack_words" + name = "Colonial Space Grunts" + desc = "A tabletop game based around the USCM, easy to get into, simple to play, and most inportantly fun for the whole squad." + +/obj/item/paper/colonial_grunts/Initialize(mapload, ...) + . = ..() + info = "
        " + update_icon() diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 521045a56717..6ee3a12faffd 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -23,8 +23,7 @@ /obj/item/paper_bin/MouseDrop(atom/over_object) if(over_object == usr && ishuman(usr) && !usr.is_mob_restrained() && !usr.stat && (loc == usr || in_range(src, usr))) if(!usr.get_active_hand()) //if active hand is empty - attack_hand(usr, 1, 1) - + usr.put_in_hands(src) return /obj/item/paper_bin/attack_hand(mob/user) @@ -57,7 +56,7 @@ P.forceMove(user.loc) user.put_in_hands(P) - to_chat(user, SPAN_NOTICE("You take [P] out of the [src].")) + to_chat(user, SPAN_NOTICE("You take [P] out of [src].")) else to_chat(user, SPAN_NOTICE("[src] is empty!")) @@ -97,3 +96,29 @@ if (response != "Carbon-Copy" && response != "Company Document" && response != "USCM Document") return sec_paper_type = response + +/// Relic from the days of cyborgs, kept for flavour, an handheld paper +/// dispenser that was supposed to print pre-filled forms but never did. +/obj/item/form_printer + name = "paper dispenser" + icon = 'icons/obj/items/paper.dmi' + icon_state = "paper_bin1" + item_state = "sheet-metal" + +/obj/item/form_printer/attack(mob/living/carbon/M, mob/living/carbon/user) + return + +/obj/item/form_printer/afterattack(atom/target, mob/living/user, flag, params) + if(!target || !flag) + return + + if(istype(target,/obj/structure/surface/table)) + deploy_paper(get_turf(target)) + +/obj/item/form_printer/attack_self(mob/user) + ..() + deploy_paper(get_turf(src)) + +/obj/item/form_printer/proc/deploy_paper(turf/T) + T.visible_message(SPAN_NOTICE("\The [src.loc] dispenses a sheet of crisp white paper.")) + new /obj/item/paper(T) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 70d6bf3898a6..08711f295085 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -31,8 +31,6 @@ dat += "+

        " else if(toner) dat += "Please insert paper to copy.

        " - if(istype(user,/mob/living/silicon)) - dat += "Print photo from database

        " dat += "Current toner level: [toner]" if(!toner) dat +="
        Please insert a new toner cartridge!" @@ -82,8 +80,6 @@ p.update_icon() p.icon_state = "paper_words" p.name = bundle.name - p.pixel_y = rand(-8, 8) - p.pixel_x = rand(-9, 9) sleep(15*j) updateUsrDialog() else if(href_list["remove"]) @@ -113,27 +109,6 @@ if(copies < maxcopies) copies++ updateUsrDialog() - else if(href_list["aipic"]) - if(!istype(usr,/mob/living/silicon)) return - if(toner >= 5) - var/mob/living/silicon/tempAI = usr - var/obj/item/device/camera/siliconcam/camera = tempAI.aiCamera - - if(!camera) - return - var/datum/picture/selection = camera.selectpicture() - if (!selection) - return - - var/obj/item/photo/p = new /obj/item/photo (src.loc) - p.construct(selection) - if (p.desc == "") - p.desc += "Copied by [tempAI.name]" - else - p.desc += " - Copied by [tempAI.name]" - toner -= 5 - sleep(15) - updateUsrDialog() /obj/structure/machinery/photocopier/attackby(obj/item/O as obj, mob/user as mob) if(istype(O, /obj/item/paper)) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index e004715f326a..f42030cce69d 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -17,6 +17,10 @@ item_state = "electropack" w_class = SIZE_TINY +/** Picture metadata */ +/datum/picture + var/name = "image" + var/list/fields = list() /* * photo * @@ -46,7 +50,7 @@ ..() /obj/item/photo/get_examine_text(mob/user) - if(in_range(user, src)) + if(in_range(user, src) || isobserver(user)) show(user) return list(desc) else @@ -175,81 +179,110 @@ res.Scale(size*32, size*32) // Initialize the photograph to black. res.Blend("#000", ICON_OVERLAY) + CHECK_TICK - var/atoms[] = list() - for(var/turf/the_turf in turfs) - // Add outselves to the list of stuff to draw + var/pixel_size = world.icon_size + var/radius = (size - 1) * 0.5 + var/center_offset = radius * pixel_size + 1 + var/x_min = center.x - radius + var/x_max = center.x + radius + var/y_min = center.y - radius + var/y_max = center.y + radius + + var/list/atoms = list() + for(var/turf/the_turf as anything in turfs) + // Add ourselves to the list of stuff to draw atoms.Add(the_turf); + // As well as anything that isn't invisible. - for(var/atom/A in the_turf) - if(A.invisibility) continue - atoms.Add(A) + for(var/atom/cur_atom as anything in the_turf) + if(!cur_atom || cur_atom.invisibility) + continue + atoms.Add(cur_atom) // Sort the atoms into their layers var/list/sorted = sort_atoms_by_layer(atoms) - var/center_offset = (size-1)/2 * 32 + 1 - for(var/i; i <= sorted.len; i++) - var/atom/A = sorted[i] - if(A) - var/icon/IM = getFlatIcon(A)//build_composite_icon(A) - - // If what we got back is actually a picture, draw it. - if(istype(IM, /icon)) - // Check if we're looking at a mob that's lying down - if(istype(A, /mob/living)) - var/mob/living/L = A - if(!istype(L, /mob/living/carbon/xenomorph)) //xenos don't use icon rotatin for lying. - if(L.lying) - // If they are, apply that effect to their picture. - IM.BecomeLying() - // Calculate where we are relative to the center of the photo - var/xoff = (A.x - center.x) * 32 + center_offset - var/yoff = (A.y - center.y) * 32 + center_offset - if (istype(A,/atom/movable)) - xoff+=A:step_x - yoff+=A:step_y - res.Blend(IM, blendMode2iconMode(A.blend_mode), A.pixel_x + xoff, A.pixel_y + yoff) + for(var/atom/cur_atom as anything in sorted) + if(QDELETED(cur_atom)) + continue + + if(cur_atom.x < x_min || cur_atom.x > x_max || cur_atom.y < y_min || cur_atom.y > y_max) + // they managed to move out of frame with all this CHECK_TICK... + continue + + var/icon/cur_icon = getFlatIcon(cur_atom)//build_composite_icon(cur_atom) + + // If what we got back is actually a picture, draw it. + if(istype(cur_icon, /icon)) + // Check if we're looking at a mob that's lying down + if(istype(cur_atom, /mob/living)) + var/mob/living/cur_mob = cur_atom + if(!isxeno(cur_mob) && cur_mob.body_position == LYING_DOWN) //xenos don't use icon rotatin for lying. + cur_icon.BecomeLying() + + // Calculate where we are relative to the center of the photo + var/xoff = (cur_atom.x - center.x) * pixel_size + center_offset + var/yoff = (cur_atom.y - center.y) * pixel_size + center_offset + if(istype(cur_atom, /atom/movable)) + xoff += cur_atom:step_x + yoff += cur_atom:step_y + res.Blend(cur_icon, blendMode2iconMode(cur_atom.blend_mode), cur_atom.pixel_x + xoff, cur_atom.pixel_y + yoff) + + CHECK_TICK // Lastly, render any contained effects on top. for(var/turf/the_turf as anything in turfs) // Calculate where we are relative to the center of the photo - var/xoff = (the_turf.x - center.x) * 32 + center_offset - var/yoff = (the_turf.y - center.y) * 32 + center_offset - var/image/IM = getFlatIcon(the_turf.loc) - if(IM) - res.Blend(IM, blendMode2iconMode(the_turf.blend_mode),xoff,yoff) + var/xoff = (the_turf.x - center.x) * pixel_size + center_offset + var/yoff = (the_turf.y - center.y) * pixel_size + center_offset + var/image/cur_icon = getFlatIcon(the_turf.loc) + CHECK_TICK + + if(cur_icon) + res.Blend(cur_icon, blendMode2iconMode(the_turf.blend_mode), xoff, yoff) + CHECK_TICK return res +/obj/item/device/camera/proc/get_mob_descriptions(turf/the_turf, existing_descripion) + var/mob_detail = existing_descripion + for(var/mob/living/carbon/cur_carbon in the_turf) + if(cur_carbon.invisibility) + continue -/obj/item/device/camera/proc/get_mobs(turf/the_turf as turf) - var/mob_detail - for(var/mob/living/carbon/A in the_turf) - if(A.invisibility) continue var/holding = null - if(A.l_hand || A.r_hand) - if(A.l_hand) holding = "They are holding \a [A.l_hand]" - if(A.r_hand) + if(cur_carbon.l_hand || cur_carbon.r_hand) + if(cur_carbon.l_hand) + holding = "They are holding \a [cur_carbon.l_hand]" + if(cur_carbon.r_hand) if(holding) - holding += " and \a [A.r_hand]" + holding += " and \a [cur_carbon.r_hand]" else - holding = "They are holding \a [A.r_hand]" + holding = "They are holding \a [cur_carbon.r_hand]" + + var/hurt = "" + if(cur_carbon.health < 75) + hurt = prob(25) ? " - they look hurt" : " - [cur_carbon] looks hurt" if(!mob_detail) - mob_detail = "You can see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]. " + mob_detail = "You can see [cur_carbon] in the photo[hurt].[holding ? " [holding]" : "."]." else - mob_detail += "You can also see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]." + mob_detail += " You [prob(50) ? "can" : "also"] see [cur_carbon] in the photo[hurt].[holding ? " [holding]" : "."]." return mob_detail /obj/item/device/camera/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) - if(!on || !pictures_left || ismob(target.loc) || isstorage(target.loc)) return - if(user.contains(target) || istype(target, /atom/movable/screen)) return - captureimage(target, user, flag) + if(!on || !pictures_left || ismob(target.loc) || isstorage(target.loc)) + return + if(user.contains(target) || istype(target, /atom/movable/screen)) + return playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 15, 1) pictures_left-- desc = "A polaroid camera. It has [pictures_left] photos left." to_chat(user, SPAN_NOTICE("[pictures_left] photos left.")) + + captureimage(target, user, flag) + icon_state = icon_off on = 0 spawn(64) @@ -257,37 +290,46 @@ on = 1 /obj/item/device/camera/proc/captureimage(atom/target, mob/user, flag) - var/mobs = "" + var/mob_descriptions = "" var/radius = (size-1)*0.5 - var/list/turf/turfs = RANGE_TURFS(radius, target) & view(world_view_size + radius, user.client) - for(var/turf/T as anything in turfs) - mobs += get_mobs(T) - var/datum/picture/P = createpicture(target, user, turfs, mobs, flag) - printpicture(user, P) + var/list/turf/turfs = RANGE_TURFS(radius, target) & view(GLOB.world_view_size + radius, user.client) + for(var/turf/the_turf as anything in turfs) + mob_descriptions = get_mob_descriptions(the_turf, mob_descriptions) + var/datum/picture/the_picture = createpicture(target, user, turfs, mob_descriptions, flag) -/obj/item/device/camera/proc/createpicture(atom/target, mob/user, list/turfs, mobs, flag) + if(QDELETED(user)) + return + + printpicture(user, the_picture) + +/obj/item/device/camera/proc/createpicture(atom/target, mob/user, list/turfs, description, flag) var/icon/photoimage = get_icon(turfs, target) + if(!description) + description = "A very scenic photo" + var/icon/small_img = icon(photoimage) var/icon/tiny_img = icon(photoimage) - var/icon/ic = icon('icons/obj/items/items.dmi',"photo") - var/icon/pc = icon('icons/obj/items/paper.dmi', "photo") + var/icon/item_icon = icon('icons/obj/items/items.dmi',"photo") + var/icon/paper_icon = icon('icons/obj/items/paper.dmi', "photo") small_img.Scale(8, 8) tiny_img.Scale(4, 4) - ic.Blend(small_img,ICON_OVERLAY, 10, 13) - pc.Blend(tiny_img,ICON_OVERLAY, 12, 19) - - var/datum/picture/P = new() - P.fields["author"] = user - P.fields["icon"] = ic - P.fields["tiny"] = pc - P.fields["img"] = photoimage - P.fields["desc"] = mobs - P.fields["pixel_x"] = rand(-10, 10) - P.fields["pixel_y"] = rand(-10, 10) - P.fields["size"] = size - - return P + item_icon.Blend(small_img, ICON_OVERLAY, 10, 13) + CHECK_TICK + paper_icon.Blend(tiny_img, ICON_OVERLAY, 12, 19) + CHECK_TICK + + var/datum/picture/the_picture = new() + the_picture.fields["author"] = user + the_picture.fields["icon"] = item_icon + the_picture.fields["tiny"] = paper_icon + the_picture.fields["img"] = photoimage + the_picture.fields["desc"] = description + the_picture.fields["pixel_x"] = rand(-10, 10) + the_picture.fields["pixel_y"] = rand(-10, 10) + the_picture.fields["size"] = size + + return the_picture /obj/item/device/camera/proc/printpicture(mob/user, datum/picture/P) var/obj/item/photo/Photo = new/obj/item/photo() diff --git a/code/modules/paperwork/silicon_photography.dm b/code/modules/paperwork/silicon_photography.dm deleted file mode 100644 index 0a82fde5c88b..000000000000 --- a/code/modules/paperwork/silicon_photography.dm +++ /dev/null @@ -1,170 +0,0 @@ -/* -* AI-specific * -**************/ -/datum/picture - var/name = "image" - var/list/fields = list() - -/obj/item/device/camera/siliconcam - var/in_camera_mode = 0 - var/photos_taken = 0 - var/list/aipictures = list() - -/obj/item/device/camera/siliconcam/ai_camera //camera AI can take pictures with - name = "AI photo camera" - -/obj/item/device/camera/siliconcam/robot_camera //camera cyborgs can take pictures with - name = "Cyborg photo camera" - -/obj/item/device/camera/siliconcam/drone_camera //currently doesn't offer the verbs, thus cannot be used - name = "Drone photo camera" - -/obj/item/device/camera/siliconcam/proc/injectaialbum(datum/picture/P, sufix = "") //stores image information to a list similar to that of the datacore - photos_taken++ - P.fields["name"] = "Image [photos_taken][sufix]" - aipictures += P - -/obj/item/device/camera/siliconcam/proc/injectmasteralbum(datum/picture/P) //stores image information to a list similar to that of the datacore - var/mob/living/silicon/robot/C = src.loc - if(C.connected_ai) - var/mob/A = P.fields["author"] - C.connected_ai.aiCamera.injectaialbum(P, " (taken by [A.name])") - to_chat(C.connected_ai, SPAN_UNCONSCIOUS("Image recorded and saved by [name]")) - to_chat(usr, SPAN_UNCONSCIOUS("Image recorded and saved to remote database")) //feedback to the Cyborg player that the picture was taken - else - injectaialbum(P) - to_chat(usr, SPAN_UNCONSCIOUS("Image recorded")) - -/obj/item/device/camera/siliconcam/proc/selectpicture(obj/item/device/camera/siliconcam/cam) - if(!cam) - cam = getsource() - - var/list/nametemp = list() - var/find - if(cam.aipictures.len == 0) - to_chat(usr, SPAN_DANGER("No images saved")) - return - for(var/datum/picture/t in cam.aipictures) - nametemp += t.fields["name"] - find = tgui_input_list(usr, "Select image (numbered in order taken)", "Camera", nametemp) - - for(var/datum/picture/q in cam.aipictures) - if(q.fields["name"] == find) - return q - -/obj/item/device/camera/siliconcam/proc/viewpictures() - var/datum/picture/selection = selectpicture() - - if(!selection) - return - - var/obj/item/photo/P = new/obj/item/photo() - P.construct(selection) - P.show(usr) - to_chat(usr, P.desc) - - // TG uses a special garbage collector... qdel(P) - qdel(P) //so 10 thousand pictures items are not left in memory should an AI take them and then view them all. - -/obj/item/device/camera/siliconcam/proc/deletepicture() - var/datum/picture/selection = selectpicture() - - if(!selection) - return - - aipictures -= selection - to_chat(usr, SPAN_UNCONSCIOUS("Image deleted")) - -/obj/item/device/camera/siliconcam/proc/toggle_camera_mode() - if(in_camera_mode) - camera_mode_off() - else - camera_mode_on() - -/obj/item/device/camera/siliconcam/proc/camera_mode_off() - src.in_camera_mode = 0 - to_chat(usr, "Camera Mode deactivated") - -/obj/item/device/camera/siliconcam/proc/camera_mode_on() - src.in_camera_mode = 1 - to_chat(usr, "Camera Mode activated") - -/obj/item/device/camera/siliconcam/ai_camera/printpicture(mob/user, datum/picture/P) - injectaialbum(P) - to_chat(usr, SPAN_UNCONSCIOUS("Image recorded")) - -/obj/item/device/camera/siliconcam/robot_camera/printpicture(mob/user, datum/picture/P) - injectmasteralbum(P) - -/obj/item/device/camera/siliconcam/ai_camera/verb/take_image() - set category = "AI Commands" - set name = "Images - Snap" - set desc = "Takes an image" - set src in usr - - toggle_camera_mode() - -/obj/item/device/camera/siliconcam/ai_camera/verb/view_images() - set category = "AI Commands" - set name = "Images - View" - set desc = "View images" - set src in usr - - viewpictures() - -/obj/item/device/camera/siliconcam/ai_camera/verb/delete_images() - set category = "AI Commands" - set name = "Images - Delete" - set desc = "Delete image" - set src in usr - - deletepicture() - -/obj/item/device/camera/siliconcam/robot_camera/verb/take_image() - set category ="Robot Commands" - set name = "Images - Snap" - set desc = "Takes an image" - set src in usr - - toggle_camera_mode() - -/obj/item/device/camera/siliconcam/robot_camera/verb/view_images() - set category ="Robot Commands" - set name = "Images - View" - set desc = "View images" - set src in usr - - viewpictures() - -/obj/item/device/camera/siliconcam/robot_camera/verb/delete_images() - set category = "Robot Commands" - set name = "Images - Delete" - set desc = "Delete a local image" - set src in usr - - // Explicitly only allow deletion from the local camera - var/mob/living/silicon/robot/C = src.loc - if(C.connected_ai) - to_chat(C, "Not allowed to delete from the remote database.") - return - - deletepicture() - -/obj/item/device/camera/siliconcam/proc/getsource() - if(ismob(src.loc)) - var/mob/M = src.loc - if(isRemoteControlling(M)) - return src - - var/mob/living/silicon/robot/C = src.loc - var/obj/item/device/camera/siliconcam/Cinfo - if(C.connected_ai) - Cinfo = C.connected_ai.aiCamera - else - Cinfo = src - return Cinfo - -/mob/living/silicon/proc/GetPicture() - if(!aiCamera) - return - return aiCamera.selectpicture() diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 7247e9b87b16..dd0327e3821d 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -148,7 +148,7 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( if(building == 0) init() else - area = loc.loc:master + area = get_area(src) opened = APC_COVER_OPEN operating = 0 name = "\improper [area.name] APC" @@ -676,9 +676,9 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( var/turf/T = get_turf(src) var/obj/structure/cable/N = T.get_cable_node() if(prob(50) && electrocute_mob(usr, N, N)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + var/datum/effect_system/spark_spread/spark = new /datum/effect_system/spark_spread + spark.set_up(5, 1, src) + spark.start() return if(C.use(10)) user.visible_message(SPAN_NOTICE("[user] wires [src]'s frame."), @@ -700,9 +700,9 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( to_chat(user, SPAN_WARNING("\The [src] lacks a terminal to remove.")) return if (prob(50) && electrocute_mob(user, terminal.powernet, terminal)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + var/datum/effect_system/spark_spread/spark = new /datum/effect_system/spark_spread + spark.set_up(5, 1, src) + spark.start() return new /obj/item/stack/cable_coil(loc,10) user.visible_message(SPAN_NOTICE("[user] removes [src]'s wiring and terminal."), @@ -798,41 +798,87 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( //Human mob special interaction goes here. if(ishuman(user)) - var/mob/living/carbon/human/H = user + var/mob/living/carbon/human/grabber = user - if(H.species.flags & IS_SYNTHETIC && H.a_intent == INTENT_GRAB) - if(H.action_busy) - return - - if(!do_after(H, 20, INTERRUPT_ALL, BUSY_ICON_GENERIC)) - return + if(grabber.a_intent == INTENT_GRAB) - playsound(src.loc, 'sound/effects/sparks2.ogg', 25, 1) + //Synthpack recharge + if((grabber.species.flags & IS_SYNTHETIC) && istype(grabber.back, /obj/item/storage/backpack/marine/smartpack)) + var/obj/item/storage/backpack/marine/smartpack/s_pack = grabber.back + if(grabber.action_busy) + return - if(stat & BROKEN) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() - to_chat(H, SPAN_DANGER("The APC's power currents surge eratically, damaging your chassis!")) - H.apply_damage(10,0, BURN) - else if(cell && cell.charge > 0) - if(!istype(H.back, /obj/item/storage/backpack/marine/smartpack)) + if(!do_after(grabber, 20, INTERRUPT_ALL, BUSY_ICON_GENERIC)) return - var/obj/item/storage/backpack/marine/smartpack/S = H.back - if(S.battery_charge < SMARTPACK_MAX_POWER_STORED) - var/charge_to_use = min(cell.charge, SMARTPACK_MAX_POWER_STORED - S.battery_charge) - if(!(cell.use(charge_to_use))) + playsound(src.loc, 'sound/effects/sparks2.ogg', 25, 1) + + if(stat & BROKEN) + var/datum/effect_system/spark_spread/spark = new() + spark.set_up(3, 1, src) + spark.start() + to_chat(grabber, SPAN_DANGER("The APC's power currents surge eratically, damaging your chassis!")) + grabber.apply_damage(10,0, BURN) + else if(cell && cell.charge > 0) + if(!istype(s_pack)) return - S.battery_charge += charge_to_use - to_chat(user, SPAN_NOTICE("You slot your fingers into the APC interface and siphon off some of the stored charge. [S.name] now has [S.battery_charge]/[SMARTPACK_MAX_POWER_STORED]")) - charging = APC_CHARGING + + if(s_pack.battery_charge < SMARTPACK_MAX_POWER_STORED) + var/charge_to_use = min(cell.charge, SMARTPACK_MAX_POWER_STORED - s_pack.battery_charge) + if(!(cell.use(charge_to_use))) + return + s_pack.battery_charge += charge_to_use + to_chat(user, SPAN_NOTICE("You slot your fingers into the APC interface and siphon off some of the stored charge. [s_pack.name] now has [s_pack.battery_charge]/[SMARTPACK_MAX_POWER_STORED]")) + charging = APC_CHARGING + else + to_chat(user, SPAN_WARNING("[s_pack.name] is already fully charged.")) else - to_chat(user, SPAN_WARNING("[S.name] is already fully charged.")) - else - to_chat(user, SPAN_WARNING("There is no charge to draw from that APC.")) - return - else if(H.species.can_shred(H)) + to_chat(user, SPAN_WARNING("There is no charge to draw from that APC.")) + return + + // Yautja Bracer Recharge + var/obj/item/clothing/gloves/yautja/bracer = grabber.gloves + if(istype(bracer)) + if(grabber.action_busy) + return FALSE + if(!COOLDOWN_FINISHED(bracer, bracer_recharge)) + to_chat(user, SPAN_WARNING("It is too soon for [bracer.name] to siphon power again. Wait [COOLDOWN_SECONDSLEFT(bracer, bracer_recharge)] seconds.")) + return FALSE + to_chat(user, SPAN_NOTICE("You rest your bracer against the APC interface and begin to siphon off some of the stored energy.")) + if(!do_after(grabber, 20, INTERRUPT_ALL, BUSY_ICON_HOSTILE)) + return FALSE + + if(stat & BROKEN) + var/datum/effect_system/spark_spread/spark = new() + spark.set_up(3, 1, src) + spark.start() + to_chat(grabber, SPAN_DANGER("The APC's power currents surge eratically, super-heating your bracer!")) + playsound(src.loc, 'sound/effects/sparks2.ogg', 25, 1) + grabber.apply_damage(10,0, BURN) + return FALSE + if(!cell || cell.charge <= 0) + to_chat(user, SPAN_WARNING("There is no charge to draw from that APC.")) + return FALSE + + if(bracer.charge_max <= bracer.charge) + to_chat(user, SPAN_WARNING("[bracer.name] is already fully charged.")) + return FALSE + + var/charge_to_use = min(cell.charge, bracer.charge_max - bracer.charge) + if(!(cell.use(charge_to_use))) + return FALSE + playsound(src.loc, 'sound/effects/sparks2.ogg', 25, 1) + bracer.charge += charge_to_use + COOLDOWN_START(bracer, bracer_recharge, bracer.charge_cooldown) + to_chat(grabber, SPAN_YAUTJABOLD("[icon2html(bracer)] \The [bracer] beep: Power siphon complete. Charge at [bracer.charge]/[bracer.charge_max].")) + if(bracer.notification_sound) + playsound(bracer.loc, 'sound/items/pred_bracer.ogg', 75, 1) + charging = APC_CHARGING + set_broken() // Breaks the APC + + return TRUE + + else if(grabber.species.can_shred(grabber)) var/allcut = TRUE for(var/wire = 1; wire < length(get_wire_descriptions()); wire++) if(!isWireCut(wire)) @@ -954,7 +1000,7 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( SEND_SIGNAL(user, COMSIG_MOB_APC_POWER_PULSE, src) addtimer(VARSET_CALLBACK(src, shorted, FALSE), 2 MINUTES) -/obj/structure/machinery/power/apc/proc/can_use(mob/user as mob, loud = 0) //used by attack_hand() and Topic() +/obj/structure/machinery/power/apc/proc/can_use(mob/living/user as mob, loud = 0) //used by attack_hand() and Topic() if(user.client && user.client.remote_control) return TRUE @@ -965,12 +1011,12 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( return 0 if(!(ishuman(user) || isRemoteControlling(user))) to_chat(user, SPAN_WARNING("You don't have the dexterity to use [src]!")) - nanomanager.close_user_uis(user, src) + SSnano.nanomanager.close_user_uis(user, src) return 0 if(user.is_mob_restrained()) to_chat(user, SPAN_WARNING("You must have free hands to use [src].")) return 0 - if(user.lying) + if(user.body_position == LYING_DOWN) to_chat(user, SPAN_WARNING("You can't reach [src]!")) return 0 autoflag = 5 @@ -978,11 +1024,11 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( if(aidisabled) if(!loud) to_chat(user, SPAN_WARNING("[src] has AI control disabled!")) - nanomanager.close_user_uis(user, src) + SSnano.nanomanager.close_user_uis(user, src) return 0 else if((!in_range(src, user) || !istype(src.loc, /turf))) - nanomanager.close_user_uis(user, src) + SSnano.nanomanager.close_user_uis(user, src) return 0 var/mob/living/carbon/human/H = user @@ -1011,9 +1057,9 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( smoke.set_up(1, 0, loc) smoke.attach(src) smoke.start() - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(1, 1, src) - s.start() + var/datum/effect_system/spark_spread/spark = new() + spark.set_up(1, 1, src) + spark.start() visible_message(SPAN_WARNING("[src] suddenly lets out a blast of smoke and some sparks!")) /obj/structure/machinery/power/apc/surplus() @@ -1220,6 +1266,7 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( //Damage and destruction acts /obj/structure/machinery/power/apc/emp_act(severity) + . = ..() if(cell) cell.emp_act(severity) lighting = 0 @@ -1228,7 +1275,6 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( spawn(1 MINUTES) equipment = 3 environ = 3 - ..() /obj/structure/machinery/power/apc/ex_act(severity) switch(severity) @@ -1268,11 +1314,10 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( if(cell && cell.charge >= 20) cell.use(20) spawn(0) - for(var/area/A in area.related) - for(var/obj/structure/machinery/light/L in A) - L.on = 1 - L.broken() - sleep(1) + for(var/obj/structure/machinery/light/L in area) + L.on = 1 + L.broken() + sleep(1) /obj/structure/machinery/power/apc/Destroy() area.power_light = 0 @@ -1313,7 +1358,7 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( /obj/structure/machinery/power/apc/antag cell_type = /obj/item/cell/apc - req_one_access = list(ACCESS_ILLEGAL_PIRATE) + req_one_access = list(ACCESS_ILLEGAL_PIRATE, ACCESS_UPP_GENERAL, ACCESS_CLF_GENERAL) //------Almayer APCs ------// diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 992e0f3464ff..31a096a3a2ee 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -71,12 +71,12 @@ /obj/item/cell/emp_act(severity) + . = ..() charge -= 1000 / severity if (charge < 0) charge = 0 if(reliability != 100 && prob(50/severity)) reliability -= 10 / severity - ..() /obj/item/cell/ex_act(severity) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 094cdf5ac9ac..309fa583589c 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -143,6 +143,7 @@ idle_power_usage = 2 active_power_usage = 20 power_channel = POWER_CHANNEL_LIGHT //Lights are calc'd via area so they dont need to be in the machine list + light_system = STATIC_LIGHT var/on = 0 // 1 if on, 0 if off var/on_gs = 0 var/brightness = 8 // luminosity when on, also used in power calculation @@ -272,7 +273,6 @@ if(A) on = 0 // A.update_lights() - SetLuminosity(0) . = ..() /obj/structure/machinery/light/proc/is_broken() @@ -296,7 +296,6 @@ // update the icon_state and luminosity of the light depending on its state /obj/structure/machinery/light/proc/update(trigger = 1) - SSlighting.lights_current.Add(light) update_icon() if(on) if(luminosity != brightness) @@ -312,13 +311,13 @@ status = LIGHT_BURNED icon_state = "[base_state]-burned" on = 0 - SetLuminosity(0) + set_light(0) else update_use_power(USE_POWER_ACTIVE) - SetLuminosity(brightness) + set_light(brightness) else update_use_power(USE_POWER_NONE) - SetLuminosity(0) + set_light(0) if(on != on_gs) on_gs = on @@ -441,8 +440,8 @@ /obj/structure/machinery/light/proc/has_power() var/area/A = src.loc.loc if(!src.needs_power) - return A.master.lightswitch - return A.master.lightswitch && A.master.power_light + return A.lightswitch + return A.lightswitch && A.power_light /obj/structure/machinery/light/proc/flicker(amount = rand(10, 20)) if(flickering) return @@ -531,7 +530,7 @@ L.update() - if(user.put_in_active_hand(L)) //succesfully puts it in our active hand + if(user.put_in_active_hand(L)) //successfully puts it in our active hand L.add_fingerprint(user) else L.forceMove(loc) //if not, put it on the ground @@ -592,9 +591,8 @@ /obj/structure/machinery/light/power_change() spawn(10) if(loc) - var/area/A = src.loc.loc - A = A.master - if(!src.needs_power) + var/area/A = get_area(src) + if(!needs_power || A.unlimited_power) seton(A.lightswitch) return seton(A.lightswitch && A.power_light) @@ -605,7 +603,7 @@ if(prob(max(0, exposed_temperature - 673))) //0% at <400C, 100% at >500C broken() -/obj/structure/machinery/light/bullet_act(obj/item/projectile/P) +/obj/structure/machinery/light/bullet_act(obj/projectile/P) src.bullet_ping(P) if(P.ammo.damage_type == BRUTE) if(P.damage > 10) @@ -776,7 +774,7 @@ /obj/structure/machinery/landinglight/proc/turn_off() icon_state = initial(icon_state) - SetLuminosity(0) + set_light(0) /obj/structure/machinery/landinglight/ds1 id = "USS Almayer Dropship 1" // ID for landing zone @@ -786,42 +784,42 @@ /obj/structure/machinery/landinglight/proc/turn_on() icon_state = initial(icon_state) + "0" - SetLuminosity(2) + set_light(2) /obj/structure/machinery/landinglight/ds1/delayone/turn_on() icon_state = initial(icon_state) + "1" - SetLuminosity(2) + set_light(2) /obj/structure/machinery/landinglight/ds1/delaytwo/turn_on() icon_state = initial(icon_state) + "2" - SetLuminosity(2) + set_light(2) /obj/structure/machinery/landinglight/ds1/delaythree/turn_on() icon_state = initial(icon_state) + "3" - SetLuminosity(2) + set_light(2) /obj/structure/machinery/landinglight/ds2/delayone/turn_on() icon_state = initial(icon_state) + "1" - SetLuminosity(2) + set_light(2) /obj/structure/machinery/landinglight/ds2/delaytwo/turn_on() icon_state = initial(icon_state) + "2" - SetLuminosity(2) + set_light(2) /obj/structure/machinery/landinglight/ds2/delaythree/turn_on() icon_state = initial(icon_state) + "3" - SetLuminosity(2) + set_light(2) /obj/structure/machinery/landinglight/ds1/spoke icon_state = "lz_spoke_light" /obj/structure/machinery/landinglight/ds1/spoke/turn_on() icon_state = initial(icon_state) + "1" - SetLuminosity(3) + set_light(3) /obj/structure/machinery/landinglight/ds2/spoke icon_state = "lz_spoke_light" /obj/structure/machinery/landinglight/ds2/spoke/turn_on() icon_state = initial(icon_state) + "1" - SetLuminosity(3) + set_light(3) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 67003d4f79d0..6a20e9cfe78e 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -102,6 +102,30 @@ display round(lastgen) and phorontank amount else . += SPAN_NOTICE("The generator is off.") +/obj/structure/machinery/power/port_gen/attack_alien(mob/living/carbon/xenomorph/attacking_xeno) + if(!active && !anchored) + return ..() + + if(attacking_xeno.mob_size < MOB_SIZE_XENO) + to_chat(attacking_xeno, SPAN_XENOWARNING("You're too small to do any significant damage to affect this!")) + return XENO_NO_DELAY_ACTION + + attacking_xeno.animation_attack_on(src) + attacking_xeno.visible_message(SPAN_DANGER("[attacking_xeno] slashes [src]!"), SPAN_DANGER("You slash [src]!")) + playsound(attacking_xeno, pick('sound/effects/metalhit.ogg', 'sound/weapons/alien_claw_metal1.ogg', 'sound/weapons/alien_claw_metal2.ogg', 'sound/weapons/alien_claw_metal3.ogg'), 25, 1) + + if(active) + active = FALSE + stop_processing() + icon_state = initial(icon_state) + visible_message(SPAN_NOTICE("[src] sputters to a stop!")) + return XENO_NONCOMBAT_ACTION + + if(anchored) + anchored = FALSE + visible_message(SPAN_NOTICE("[src]'s bolts are dislodged!")) + return XENO_NONCOMBAT_ACTION + //A power generator that runs on solid plasma sheets. /obj/structure/machinery/power/port_gen/pacman name = "P.A.C.M.A.N.-type Portable Generator" @@ -240,7 +264,7 @@ display round(lastgen) and phorontank amount to_chat(user, SPAN_NOTICE(" You open the access panel.")) else to_chat(user, SPAN_NOTICE(" You close the access panel.")) - else if(istype(O, /obj/item/tool/crowbar) && open) + else if(HAS_TRAIT(O, TRAIT_TOOL_CROWBAR) && open) var/obj/structure/machinery/constructable_frame/new_frame = new /obj/structure/machinery/constructable_frame(src.loc) for(var/obj/item/I in component_parts) if(I.reliability < 100) diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index ac3daee900ab..9aefa21d0f7a 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -51,21 +51,21 @@ // return 1 var/area/A = src.loc.loc // make sure it's in an area - if(!A || !isarea(A) || !A.master) + if(!A || !isarea(A)) return 0 // if not, then not powered if(chan == -1) chan = power_channel - return A.master.powered(chan) // return power status of the area + return A.powered(chan) // return power status of the area // increment the power usage stats for an area /obj/structure/machinery/proc/use_power(amount, chan = POWER_CHANNEL_ONEOFF, autocalled = 0) // defaults to one-off power charge, not constant power change var/area/A = get_area(src) // make sure it's in an area - if(!A || !isarea(A) || !A.master) + if(!A || !isarea(A)) return - A.master.use_power(amount, chan) + A.use_power(amount, chan) if(!autocalled) - log_power_update_request(A.master, src) + log_power_update_request(A, src) return 1 //The master_area optional argument can be used to save on a lot of processing if the master area is already known. This is mainly intended for when this proc is called by the master controller. @@ -81,13 +81,13 @@ if(has_power || !src.needs_power) if(machine_processing) if(stat & NOPOWER) - addToListNoDupe(processing_machines, src) // power interupted us, start processing again + addToListNoDupe(GLOB.processing_machines, src) // power interrupted us, start processing again stat &= ~NOPOWER src.update_use_power(USE_POWER_IDLE) else if(machine_processing) - processing_machines -= src // no power, can't process. + GLOB.processing_machines -= src // no power, can't process. stat |= NOPOWER src.update_use_power(USE_POWER_NONE) @@ -97,19 +97,19 @@ // rebuild all power networks from scratch /proc/makepowernets() - for(var/datum/powernet/PN in powernets) + for(var/datum/powernet/PN in GLOB.powernets) del(PN) //not qdel on purpose, powernet is still using del. - powernets.Cut() + GLOB.powernets.Cut() - for(var/area/A in all_areas) - if(powernets_by_name[A.powernet_name]) + for(var/area/A in GLOB.all_areas) + if(GLOB.powernets_by_name[A.powernet_name]) continue var/datum/powernet/PN = new() PN.powernet_name = A.powernet_name - powernets += PN - powernets_by_name[A.powernet_name] = PN + GLOB.powernets += PN + GLOB.powernets_by_name[A.powernet_name] = PN - for(var/obj/structure/machinery/power/M in machines) + for(var/obj/structure/machinery/power/M in GLOB.machines) M.connect_to_network() return 1 @@ -222,7 +222,7 @@ var/cdir - for(var/card in cardinal) + for(var/card in GLOB.cardinals) var/turf/T = get_step(loc,card) cdir = get_dir(T,loc) @@ -250,7 +250,7 @@ var/area/A = get_area(src) if(!A) return 0 - var/datum/powernet/PN = powernets_by_name[A.powernet_name] + var/datum/powernet/PN = GLOB.powernets_by_name[A.powernet_name] if(!PN) return 0 powernet = PN @@ -274,10 +274,9 @@ return null /area/proc/get_apc() - for(var/area/RA in src.related) - var/obj/structure/machinery/power/apc/FINDME = locate() in RA - if (FINDME) - return FINDME + var/obj/structure/machinery/power/apc/FINDME = locate() in src + if (FINDME) + return FINDME //Determines how strong could be shock, deals damage to mob, uses power. diff --git a/code/modules/power/profiling.dm b/code/modules/power/profiling.dm index 21c8e2a63538..b4b67b8c8543 100644 --- a/code/modules/power/profiling.dm +++ b/code/modules/power/profiling.dm @@ -1,29 +1,27 @@ -datum +GLOBAL_VAR_INIT(enable_power_update_profiling, FALSE) -var/global/enable_power_update_profiling = 0 - -var/global/power_profiled_time = 0 -var/global/power_last_profile_time = 0 -var/global/list/power_update_requests_by_machine = list() -var/global/list/power_update_requests_by_area = list() +GLOBAL_VAR_INIT(power_profiled_time, 0) +GLOBAL_VAR_INIT(power_last_profile_time, 0) +GLOBAL_LIST_EMPTY(power_update_requests_by_machine) +GLOBAL_LIST_EMPTY(power_update_requests_by_area) /proc/log_power_update_request(area/A, obj/structure/machinery/M) - if (!enable_power_update_profiling) + if (!GLOB.enable_power_update_profiling) return var/machine_type = "[M.type]" - if (machine_type in power_update_requests_by_machine) - power_update_requests_by_machine[machine_type]++ + if (machine_type in GLOB.power_update_requests_by_machine) + GLOB.power_update_requests_by_machine[machine_type]++ else - power_update_requests_by_machine[machine_type] = 1 + GLOB.power_update_requests_by_machine[machine_type] = 1 - if (A.name in power_update_requests_by_area) - power_update_requests_by_area[A.name]++ + if (A.name in GLOB.power_update_requests_by_area) + GLOB.power_update_requests_by_area[A.name]++ else - power_update_requests_by_area[A.name] = 1 + GLOB.power_update_requests_by_area[A.name] = 1 - power_profiled_time += (world.time - power_last_profile_time) - power_last_profile_time = world.time + GLOB.power_profiled_time += (world.time - GLOB.power_last_profile_time) + GLOB.power_last_profile_time = world.time /client/proc/toggle_power_update_profiling() set name = "Toggle Area Power Update Profiling" @@ -31,14 +29,14 @@ var/global/list/power_update_requests_by_area = list() set category = "Debug.Profiling" if(!check_rights(R_DEBUG)) return if(!ishost(usr) || alert("Are you sure you want to do this?",, "Yes", "No") != "Yes") return - if(enable_power_update_profiling) - enable_power_update_profiling = 0 + if(GLOB.enable_power_update_profiling) + GLOB.enable_power_update_profiling = 0 to_chat(usr, "Area power update profiling disabled.") message_admins("[key_name(src)] toggled area power update profiling off.") else - enable_power_update_profiling = 1 - power_last_profile_time = world.time + GLOB.enable_power_update_profiling = 1 + GLOB.power_last_profile_time = world.time to_chat(usr, "Area power update profiling enabled.") message_admins("[key_name(src)] toggled area power update profiling on.") @@ -52,9 +50,9 @@ var/global/list/power_update_requests_by_area = list() if(!check_rights(R_DEBUG)) return - to_chat(usr, "Total profiling time: [power_profiled_time] ticks") - for (var/M in power_update_requests_by_machine) - to_chat(usr, "[M] = [power_update_requests_by_machine[M]]") + to_chat(usr, "Total profiling time: [GLOB.power_profiled_time] ticks") + for (var/M in GLOB.power_update_requests_by_machine) + to_chat(usr, "[M] = [GLOB.power_update_requests_by_machine[M]]") /client/proc/view_power_update_stats_area() set name = "View Area Power Update Statistics By Area" @@ -63,7 +61,7 @@ var/global/list/power_update_requests_by_area = list() if(!check_rights(R_DEBUG)) return - to_chat(usr, "Total profiling time: [power_profiled_time] ticks") - to_chat(usr, "Total profiling time: [power_profiled_time] ticks") - for (var/A in power_update_requests_by_area) - to_chat(usr, "[A] = [power_update_requests_by_area[A]]") + to_chat(usr, "Total profiling time: [GLOB.power_profiled_time] ticks") + to_chat(usr, "Total profiling time: [GLOB.power_profiled_time] ticks") + for (var/A in GLOB.power_update_requests_by_area) + to_chat(usr, "[A] = [GLOB.power_update_requests_by_area[A]]") diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index ac19d1ba0c67..7cf72ce1cb81 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -46,7 +46,7 @@ connect_to_network() dir_loop: - for(var/d in cardinal) + for(var/d in GLOB.cardinals) var/turf/T = get_step(src, d) for(var/obj/structure/machinery/power/terminal/term in T) if(term && term.dir == turn(d, 180)) @@ -390,6 +390,7 @@ /obj/structure/machinery/power/smes/emp_act(severity) + . = ..() outputting = 0 inputting = 0 output_level = 0 @@ -400,7 +401,6 @@ output_level = initial(output_level) inputting = initial(inputting) outputting = initial(outputting) - ..() diff --git a/code/modules/power/smes_construction.dm b/code/modules/power/smes_construction.dm index 98208069c8dd..d6fb7bb66841 100644 --- a/code/modules/power/smes_construction.dm +++ b/code/modules/power/smes_construction.dm @@ -10,7 +10,7 @@ var/max_coils = 6 //30M capacity, 1.5MW input/output when fully upgraded /w default coils var/cur_coils = 1 // Current amount of installed coils var/safeties_enabled = 1 // If 0 modifications can be done without discharging the SMES, at risk of critical failure. - var/failing = 0 // If 1 critical failure has occured and SMES explosion is imminent. + var/failing = 0 // If 1 critical failure has occurred and SMES explosion is imminent. should_be_mapped = 1 unslashable = TRUE unacidable = TRUE @@ -85,7 +85,7 @@ if (user_protected && prob(80)) to_chat(h_user, "Small electrical arc almost burns your hand. Luckily you had your gloves on!") else - to_chat(h_user, "Small electrical arc sparks and burns your hand as you touch the [src]!") + to_chat(h_user, "Small electrical arc sparks and burns your hand as you touch [src]!") h_user.apply_damage(rand(5,10), BURN) h_user.apply_effect(2, PARALYZE) charge = 0 @@ -98,7 +98,7 @@ if (user_protected && prob(25)) to_chat(h_user, "Medium electrical arc sparks and almost burns your hand. Luckily you had your gloves on!") else - to_chat(h_user, "Medium electrical sparks as you touch the [src], severely burning your hand!") + to_chat(h_user, "Medium electrical sparks as you touch [src], severely burning your hand!") h_user.apply_damage(rand(10,25), BURN) h_user.apply_effect(5, PARALYZE) spawn(0) @@ -182,7 +182,7 @@ /obj/structure/machinery/power/smes/buildable/attackby(obj/item/W as obj, mob/user as mob) // No more disassembling of overloaded SMESs. You broke it, now enjoy the consequences. if (failing) - to_chat(user, SPAN_WARNING("The [src]'s screen is flashing with alerts. It seems to be overloaded! Touching it now is probably not a good idea.")) + to_chat(user, SPAN_WARNING("[src]'s screen is flashing with alerts. It seems to be overloaded! Touching it now is probably not a good idea.")) return // If parent returned 1: // - Hatch is open, so we can modify the SMES @@ -195,7 +195,7 @@ return if (outputting || input_attempt) - to_chat(user, SPAN_WARNING("Turn off the [src] first!")) + to_chat(user, SPAN_WARNING("Turn off [src] first!")) return // Probability of failure if safety circuit is disabled (in %) @@ -212,7 +212,7 @@ return playsound(get_turf(src), 'sound/items/Crowbar.ogg', 25, 1) - to_chat(user, SPAN_WARNING("You begin to disassemble the [src]!")) + to_chat(user, SPAN_WARNING("You begin to disassemble [src]!")) if (do_after(usr, 100 * cur_coils * user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) // More coils = takes longer to disassemble. It's complex so largest one with 5 coils will take 50s if (failure_probability && prob(failure_probability)) diff --git a/code/modules/projectiles/ammo_boxes/ammo_boxes.dm b/code/modules/projectiles/ammo_boxes/ammo_boxes.dm index 69179a209f8b..df8a7d7bdd76 100644 --- a/code/modules/projectiles/ammo_boxes/ammo_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/ammo_boxes.dm @@ -18,10 +18,6 @@ //---------------------GENERAL PROCS -/obj/item/ammo_box/Destroy() - SetLuminosity(0) - . = ..() - /obj/item/ammo_box/attack_self(mob/living/user) ..() if(burning) @@ -45,14 +41,14 @@ /obj/item/ammo_box/proc/deploy_ammo_box(mob/user, turf/T) user.drop_held_item() - + //---------------------FIRE HANDLING PROCS /obj/item/ammo_box/flamer_fire_act(severity, datum/cause_data/flame_cause_data) if(burning) return burning = TRUE - SetLuminosity(3) + set_light(3) apply_fire_overlay() addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), src), 5 SECONDS) @@ -89,6 +85,8 @@ var/handful = "shells" //used for 'magazine' boxes that give handfuls to determine what kind for the sprite can_explode = TRUE limit_per_tile = 2 + ground_offset_x = 5 + ground_offset_y = 5 /obj/item/ammo_box/magazine/empty empty = TRUE @@ -106,8 +104,6 @@ while(i < num_of_magazines) contents += new magazine_type(src) i++ - pixel_x = rand(-5, 5) - pixel_y = rand(-5, 5) update_icon() /obj/item/ammo_box/magazine/update_icon() @@ -239,11 +235,11 @@ if(host_box) host_box.apply_fire_overlay(will_explode) - host_box.SetLuminosity(3) + host_box.set_light(3) host_box.visible_message(SPAN_WARNING(shown_message)) else apply_fire_overlay(will_explode) - SetLuminosity(3) + set_light(3) visible_message(SPAN_WARNING(shown_message)) /obj/item/ammo_box/magazine/apply_fire_overlay(will_explode = FALSE) @@ -424,7 +420,7 @@ visible_message(SPAN_WARNING("\The [src] catches on fire!")) apply_fire_overlay(will_explode) - SetLuminosity(3) + set_light(3) /obj/item/ammo_box/rounds/apply_fire_overlay(will_explode = FALSE) //original fire overlay is made for standard mag boxes, so they don't need additional offsetting diff --git a/code/modules/projectiles/ammo_boxes/box_structures.dm b/code/modules/projectiles/ammo_boxes/box_structures.dm index 9169706aec4a..b34c0543bb2c 100644 --- a/code/modules/projectiles/ammo_boxes/box_structures.dm +++ b/code/modules/projectiles/ammo_boxes/box_structures.dm @@ -18,7 +18,6 @@ //---------------------GENERAL PROCS /obj/structure/magazine_box/Destroy() - SetLuminosity(0) if(item_box) qdel(item_box) item_box = null @@ -135,7 +134,7 @@ if(istype(W, /obj/item/storage/box/m94)) var/obj/item/storage/box/m94/flare_pack = W if(flare_pack.contents.len < flare_pack.max_storage_space) - to_chat(user, SPAN_WARNING("\The [W] is not full.")) + to_chat(user, SPAN_WARNING("[W] is not full.")) return var/flare_type if(istype(W, /obj/item/storage/box/m94/signal)) @@ -144,28 +143,28 @@ flare_type = /obj/item/device/flashlight/flare for(var/obj/item/device/flashlight/flare/F in flare_pack.contents) if(F.fuel < 1) - to_chat(user, SPAN_WARNING("Some flares in \the [F] are used.")) + to_chat(user, SPAN_WARNING("Some flares in [F] are used.")) return if(F.type != flare_type) - to_chat(user, SPAN_WARNING("Some flares in \the [W] are not of the correct type.")) + to_chat(user, SPAN_WARNING("Some flares in [W] are not of the correct type.")) return else if(istype(W, /obj/item/storage/box/MRE)) var/obj/item/storage/box/MRE/mre_pack = W if(mre_pack.isopened) - to_chat(user, SPAN_WARNING("\The [W] was already opened and isn't suitable for storing in \the [src].")) + to_chat(user, SPAN_WARNING("[W] was already opened and isn't suitable for storing in [src].")) return else if(istype(W, /obj/item/cell/high)) var/obj/item/cell/high/cell = W if(cell.charge != cell.maxcharge) - to_chat(user, SPAN_WARNING("\The [W] needs to be fully charged before it can be stored in \the [src].")) + to_chat(user, SPAN_WARNING("[W] needs to be fully charged before it can be stored in [src].")) return if(item_box.contents.len < item_box.num_of_magazines) user.drop_inv_item_to_loc(W, src) item_box.contents += W - to_chat(user, SPAN_NOTICE("You put a [W] in to \the [src]")) + to_chat(user, SPAN_NOTICE("You put \a [W] into [src]")) update_icon() else - to_chat(user, SPAN_WARNING("\The [src] is full.")) + to_chat(user, SPAN_WARNING("[src] is full.")) else to_chat(user, SPAN_WARNING("You don't want to mix different magazines in one box.")) else @@ -176,10 +175,10 @@ return if(O.default_ammo == AM.default_ammo) if(O.current_rounds <= 0) - to_chat(user, SPAN_WARNING("\The [O] is empty.")) + to_chat(user, SPAN_WARNING("[O] is empty.")) return if(AM.current_rounds >= AM.max_rounds) - to_chat(user, SPAN_WARNING("\The [src] is full.")) + to_chat(user, SPAN_WARNING("[src] is full.")) return else if(!do_after(user, 15, INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) @@ -188,7 +187,7 @@ var/S = min(O.current_rounds, AM.max_rounds - AM.current_rounds) AM.current_rounds += S O.current_rounds -= S - to_chat(user, SPAN_NOTICE("You transfer shells from [O] into \the [src]")) + to_chat(user, SPAN_NOTICE("You transfer shells from [O] into [src]")) update_icon() O.update_icon() else diff --git a/code/modules/projectiles/ammo_boxes/grenade_packets.dm b/code/modules/projectiles/ammo_boxes/grenade_packets.dm index 518ccd2d47ab..5546fe3bc520 100644 --- a/code/modules/projectiles/ammo_boxes/grenade_packets.dm +++ b/code/modules/projectiles/ammo_boxes/grenade_packets.dm @@ -25,7 +25,7 @@ for(var/i in 1 to storage_slots) new content_type(src) -var/list/grenade_packets = list( +GLOBAL_LIST_INIT(grenade_packets, list( /obj/item/storage/box/packet/high_explosive, /obj/item/storage/box/packet/baton_slug, /obj/item/storage/box/packet/flare, @@ -37,7 +37,7 @@ var/list/grenade_packets = list( /obj/item/storage/box/packet/m15, /obj/item/storage/box/packet/airburst_he, /obj/item/storage/box/packet/airburst_incen - ) + )) /obj/item/storage/box/packet/high_explosive name = "\improper HEDP grenade packet" @@ -110,19 +110,31 @@ var/list/grenade_packets = list( content_type = /obj/item/explosive/grenade/high_explosive/m15/rubber /obj/item/storage/box/packet/airburst_he - name = "\improper M74 airbust grenade packet" + name = "\improper M74 airburst grenade packet" desc = "It contains three M74 airburst fragmentation grenades. This end towards the enemy." icon_state = "agmf_packet" content_type = /obj/item/explosive/grenade/high_explosive/airburst /obj/item/storage/box/packet/airburst_incen - name = "\improper M74 airbust incendiary grenade packet" + name = "\improper M74 airburst incendiary grenade packet" desc = "It contains three M74 airburst incendiary grenades. This end towards the enemy." icon_state = "agmi_packet" content_type = /obj/item/explosive/grenade/incendiary/airburst /obj/item/storage/box/packet/airburst_smoke - name = "\improper M74 airbust smoke grenade packet" + name = "\improper M74 airburst smoke grenade packet" desc = "It contains three M74 airburst smoke grenades. This end towards the enemy." icon_state = "agms_packet" content_type = /obj/item/explosive/grenade/smokebomb/airburst + +/obj/item/storage/box/packet/rmc/he + name = "\improper R2175/A HEDP grenade packet" + desc = "It contains three R2175/A HEDP grenades. Handle with care." + icon_state = "hedp_packet" + content_type = /obj/item/explosive/grenade/high_explosive/rmc + +/obj/item/storage/box/packet/rmc/incin + name = "\improper R2175/B HIDP grenade packet" + desc = "It contains three R2175/B HIDP grenades. Handle with care." + icon_state = "hidp_packet" + content_type = /obj/item/explosive/grenade/incendiary/rmc diff --git a/code/modules/projectiles/ammo_boxes/handful_boxes.dm b/code/modules/projectiles/ammo_boxes/handful_boxes.dm index 28eab8463011..3e9300c8b5c2 100644 --- a/code/modules/projectiles/ammo_boxes/handful_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/handful_boxes.dm @@ -48,6 +48,15 @@ /obj/item/ammo_box/magazine/shotgun/incendiary/empty empty = TRUE +/obj/item/ammo_box/magazine/shotgun/incendiarybuck + name = "\improper shotgun shell box (Incendiary buckshot x 100)" + icon_state = "base_incbuck" + overlay_content = "_incenbuck" + magazine_type = /obj/item/ammo_magazine/shotgun/incendiarybuck + +/obj/item/ammo_box/magazine/shotgun/incendiarybuck/empty + empty = TRUE + /obj/item/ammo_box/magazine/shotgun/beanbag name = "\improper shotgun shell box (Beanbag x 100)" icon_state = "base_bean" @@ -59,6 +68,20 @@ /obj/item/ammo_box/magazine/shotgun/beanbag/empty empty = TRUE + +//-----------------------16 GAUGE SHOTGUN SHELL BOXES----------------------- + +/obj/item/ammo_box/magazine/shotgun/light/breaching + name = "\improper 16-gauge shotgun shell box (Breaching x 120)" + icon_state = "base_breach" + overlay_content = "_breach" + magazine_type = /obj/item/ammo_magazine/shotgun/light/breaching + num_of_magazines = 120 //10 full mag reloads. + can_explode = FALSE + +/obj/item/ammo_box/magazine/shotgun/light/breaching/empty + empty = TRUE + //-----------------------R4T Lever-action rifle handfuls box----------------------- /obj/item/ammo_box/magazine/lever_action diff --git a/code/modules/projectiles/ammo_boxes/magazine_boxes.dm b/code/modules/projectiles/ammo_boxes/magazine_boxes.dm index ff90a6659fb2..170bb539bc73 100644 --- a/code/modules/projectiles/ammo_boxes/magazine_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/magazine_boxes.dm @@ -170,6 +170,19 @@ /obj/item/ammo_box/magazine/m4ra/heap/empty empty = TRUE +//-----------------------XM51 Breaching Scattergun Mag Box----------------------- + +/obj/item/ammo_box/magazine/xm51 + name = "\improper magazine box (XM51 x 8)" + icon_state = "base_breach" + flags_equip_slot = SLOT_BACK + overlay_gun_type = "_xm51" + num_of_magazines = 8 + magazine_type = /obj/item/ammo_magazine/rifle/xm51 + +/obj/item/ammo_box/magazine/xm51/empty + empty = TRUE + //-----------------------L42A Battle Rifle Mag Boxes----------------------- /obj/item/ammo_box/magazine/l42a @@ -286,6 +299,15 @@ /obj/item/ammo_box/magazine/m4a3/hp/empty empty = TRUE +/obj/item/ammo_box/magazine/m4a3/incen + name = "\improper magazine box (Incen M4A3 x 16)" + overlay_ammo_type = "_incen" + overlay_content = "_incen" + magazine_type = /obj/item/ammo_magazine/pistol/incendiary + +/obj/item/ammo_box/magazine/m4a3/incen/empty + empty = TRUE + //-----------------------M44 Revolver Speed Loaders Box----------------------- /obj/item/ammo_box/magazine/m44 @@ -410,3 +432,306 @@ /obj/item/ammo_box/magazine/nailgun/empty empty = TRUE + +//-----------------------M56B Drum Box----------------------- + +/obj/item/ammo_box/magazine/m56b + name = "\improper drum box (M56B x 8)" + icon_state = "base_m56b" + overlay_ammo_type = "_reg_heavy" + overlay_gun_type = "_sg" + overlay_content = "_sg" + magazine_type = /obj/item/ammo_magazine/smartgun + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/m56b/empty + empty = TRUE + +/obj/item/ammo_box/magazine/m56b/dirty + name = "\improper drum box (M56B 'Dirty' x 8)" + overlay_ammo_type = "_red_heavy" + overlay_content = "_sgdirty" + magazine_type = /obj/item/ammo_magazine/smartgun/dirty + +/obj/item/ammo_box/magazine/m56b/dirty/empty + empty = TRUE + +//-----------------------M56D Drum Box----------------------- + +/obj/item/ammo_box/magazine/m56d + name = "\improper drum box (M56D x 8)" + icon_state = "base_m56d" + overlay_ammo_type = "" + overlay_gun_type = "_m56d" + overlay_content = "_m56d" + magazine_type = /obj/item/ammo_magazine/m56d + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/m56d/update_icon() + if(overlays) + overlays.Cut() + overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid + overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text + +/obj/item/ammo_box/magazine/m56d/empty + empty = TRUE + + +//-----------------------M2C Ammo Box----------------------- + +/obj/item/ammo_box/magazine/m2c + name = "\improper ammo box (M2C x 8)" + icon_state = "base_m2c" + overlay_ammo_type = "" + overlay_gun_type = "_m2c" + overlay_content = "_m2c" + magazine_type = /obj/item/ammo_magazine/m2c + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/m2c/update_icon() + if(overlays) + overlays.Cut() + overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid + overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text + +/obj/item/ammo_box/magazine/m2c/empty + empty = TRUE + +//-----------------------M41AE2 Ammo Box----------------------- + +/obj/item/ammo_box/magazine/m41ae2 + name = "\improper magazine (M41AE2 x 8)" + icon_state = "base_m41ae2" + overlay_ammo_type = "_reg_heavy" + overlay_gun_type = "_m41ae2" + overlay_content = "_m41ae2" + magazine_type = /obj/item/ammo_magazine/rifle/lmg + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/m41ae2/empty + empty = TRUE + +/obj/item/ammo_box/magazine/m41ae2/holo + name = "\improper magazine box (M41AE2 Holo-Target x 8)" + overlay_ammo_type = "_holo_heavy" + overlay_content = "_m41ae2_holo" + magazine_type = /obj/item/ammo_magazine/rifle/lmg/holo_target + +/obj/item/ammo_box/magazine/m41ae2/holo/empty + empty = TRUE + +/obj/item/ammo_box/magazine/m41ae2/heap + name = "\improper magazine box (M41AE2 HEAP x 8)" + overlay_ammo_type = "_heap_heavy" + overlay_content = "_m41ae2_heap" + magazine_type = /obj/item/ammo_magazine/rifle/lmg/heap + +/obj/item/ammo_box/magazine/m41ae2/heap/empty + empty = TRUE + +//-----------------------Flamer Fuel Tank Box----------------------- + +/obj/item/ammo_box/magazine/flamer + name = "\improper flamer tank box (UT-Napthal Fuel x 8)" + icon_state = "base_flamer" + overlay_ammo_type = "_flamer" + overlay_gun_type = "_blank" + overlay_content = "_flamer" + magazine_type = /obj/item/ammo_magazine/flamer_tank + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/flamer/empty + empty = TRUE + +/obj/item/ammo_box/magazine/flamer/bgel + name = "\improper flamer fuel box (Napalm B-Gel x 8)" + overlay_ammo_type = "_flamer_bgel" + overlay_content = "_flamer_bgel" + magazine_type = /obj/item/ammo_magazine/flamer_tank/gellied + +/obj/item/ammo_box/magazine/flamer/bgel/empty + empty = TRUE + +//-----------------------M41A MK1 Rifle Mag Boxes----------------------- + +/obj/item/ammo_box/magazine/mk1 + name = "\improper magazine box (M41A MK1 x 8)" + overlay_ammo_type = "_reg_mk1" + overlay_gun_type = "_mk1" + overlay_content = "_reg" + magazine_type = /obj/item/ammo_magazine/rifle/m41aMK1 + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/mk1/empty + empty = TRUE + +/obj/item/ammo_box/magazine/mk1/ap + name = "\improper magazine box (M41A MK1 AP x 8)" + flags_equip_slot = SLOT_BACK + overlay_ammo_type = "_ap_mk1" + overlay_content = "_ap" + magazine_type = /obj/item/ammo_magazine/rifle/m41aMK1/ap + +/obj/item/ammo_box/magazine/mk1/ap/empty + empty = TRUE + +//-----------------------NSG 23 Rifle Mag Boxes----------------------- + +/obj/item/ammo_box/magazine/nsg23 + name = "\improper magazine box (NSG 23 x 16)" + icon_state = "base_nsg23" + overlay_gun_type = "_nsg23" + overlay_content = "_reg" + magazine_type = /obj/item/ammo_magazine/rifle/nsg23 + num_of_magazines = 16 + +/obj/item/ammo_box/magazine/nsg23/empty + empty = TRUE + +/obj/item/ammo_box/magazine/nsg23/ap + name = "\improper magazine box (NSG 23 AP x 12)" + overlay_ammo_type = "_ap" + overlay_content = "_ap" + magazine_type = /obj/item/ammo_magazine/rifle/nsg23/ap + num_of_magazines = 12 + +/obj/item/ammo_box/magazine/nsg23/ap/empty + empty = TRUE + +/obj/item/ammo_box/magazine/nsg23/ex + name = "\improper magazine box (NSG 23 Extended x 8)" + overlay_ammo_type = "_ext" + magazine_type = /obj/item/ammo_magazine/rifle/nsg23/extended + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/nsg23/ex/empty + empty = TRUE + +/obj/item/ammo_box/magazine/nsg23/heap + name = "\improper magazine box (NSG 23 HEAP x 16)" + overlay_ammo_type = "_heap" + overlay_content = "_heap" + magazine_type = /obj/item/ammo_magazine/rifle/nsg23/heap + +/obj/item/ammo_box/magazine/nsg23/heap/empty + empty = TRUE + +//-----------------------Spearhead Autorevolver Speed Loaders Box----------------------- + +/obj/item/ammo_box/magazine/spearhead + name = "\improper speed loaders box (Spearhead HP x 12)" + icon_state = "base_cmb" + overlay_ammo_type = "_357_hp" + overlay_gun_type = "_357" + overlay_content = "_speed" + num_of_magazines = 12 + magazine_type = /obj/item/ammo_magazine/revolver/cmb + +/obj/item/ammo_box/magazine/spearhead/empty + empty = TRUE + +/obj/item/ammo_box/magazine/spearhead/normalpoint + name = "\improper speed loaders box (Spearhead x 12)" + overlay_ammo_type = "_357_reg" + magazine_type = /obj/item/ammo_magazine/revolver/cmb/normalpoint + +/obj/item/ammo_box/magazine/spearhead/normalpoint/empty + empty = TRUE + +//-----------------------Type 73 Pistol Mag Box----------------------- + +/obj/item/ammo_box/magazine/type73 + name = "\improper magazine box (Type 73 x 16)" + icon_state = "base_type73" + flags_equip_slot = SLOT_BACK + overlay_ammo_type = "_type71_reg" + overlay_gun_type = "_type73" + overlay_content = "_type71_reg" + num_of_magazines = 16 + magazine_type = /obj/item/ammo_magazine/pistol/t73 + +/obj/item/ammo_box/magazine/type73/empty + empty = TRUE + +/obj/item/ammo_box/magazine/type73/impact + name = "\improper magazine box (Type 73 High-Impact x 10)" + overlay_ammo_type = "_type73_impact" + overlay_content = "_type73_impact" + num_of_magazines = 10 + magazine_type = /obj/item/ammo_magazine/pistol/t73_impact + +/obj/item/ammo_box/magazine/type73/impact/empty + empty = TRUE + + +//-----------------------AR10 Rifle Mag Box----------------------- + +/obj/item/ammo_box/magazine/ar10 + name = "\improper magazine box (AR10 x 12)" + icon_state = "base_ar10" + flags_equip_slot = SLOT_BACK + overlay_gun_type = "_ar10" + overlay_content = "_reg" + num_of_magazines = 12 + magazine_type = /obj/item/ammo_magazine/rifle/ar10 + +/obj/item/ammo_box/magazine/ar10/empty + empty = TRUE + +//-----------------------MP5 Smg Mag Box----------------------- + +/obj/item/ammo_box/magazine/mp5 + name = "\improper magazine box (MP5 x 12)" + icon_state = "base_m16" + flags_equip_slot = SLOT_BACK + overlay_gun_type = "_mp5" + overlay_content = "_reg" + num_of_magazines = 12 + magazine_type = /obj/item/ammo_magazine/smg/mp5 + +/obj/item/ammo_box/magazine/mp5/empty + empty = TRUE + + +//-----------------------Desert Eagle Pistol Mag Box----------------------- + +/obj/item/ammo_box/magazine/deagle + name = "\improper magazine box (Desert Eagle x 12)" + icon_state = "base_deagle" + flags_equip_slot = SLOT_BACK + overlay_ammo_type = "_reg" + overlay_gun_type = "_deagle" + overlay_content = "_reg" + num_of_magazines = 16 + magazine_type = /obj/item/ammo_magazine/pistol/heavy + +/obj/item/ammo_box/magazine/deagle/empty + empty = TRUE + +/obj/item/ammo_box/magazine/deagle/super + name = "\improper magazine box (Heavy Desert Eagle x 8)" + overlay_ammo_type = "_hp" + overlay_content = "_hp" + num_of_magazines = 8 + magazine_type = /obj/item/ammo_magazine/pistol/heavy/super + +/obj/item/ammo_box/magazine/deagle/super/empty + empty = TRUE + +/obj/item/ammo_box/magazine/deagle/super/highimpact + name = "\improper magazine box (High Impact Desert Eagle x 8)" + overlay_ammo_type = "_impact" + overlay_content = "_impact" + magazine_type = /obj/item/ammo_magazine/pistol/heavy/super/highimpact + +/obj/item/ammo_box/magazine/deagle/super/highimpact/empty + empty = TRUE + +/obj/item/ammo_box/magazine/deagle/super/highimpact/ap + name = "\improper magazine box (High Impact Armor-Piercing Desert Eagle x 8)" + overlay_ammo_type = "_ap" + overlay_content = "_ap" + magazine_type = /obj/item/ammo_magazine/pistol/heavy/super/highimpact/ap + +/obj/item/ammo_box/magazine/deagle/super/highimpact/ap/empty + empty = TRUE diff --git a/code/modules/projectiles/ammo_boxes/misc_boxes.dm b/code/modules/projectiles/ammo_boxes/misc_boxes.dm index e6a80537130b..7b19555f4de5 100644 --- a/code/modules/projectiles/ammo_boxes/misc_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/misc_boxes.dm @@ -34,11 +34,11 @@ /obj/item/ammo_box/magazine/misc/handle_side_effects(obj/structure/magazine_box/host_box) if(host_box) host_box.apply_fire_overlay() - host_box.SetLuminosity(3) + host_box.set_light(3) host_box.visible_message(SPAN_WARNING("\The [src] catches on fire!")) else apply_fire_overlay() - SetLuminosity(3) + set_light(3) visible_message(SPAN_WARNING("\The [src] catches on fire!")) /obj/item/ammo_box/magazine/misc/apply_fire_overlay(will_explode = FALSE) @@ -75,6 +75,15 @@ overlay_gun_type = "_m94" overlay_content = "_flares" +//------------------------M89 Signal Flare Packs Box-------------------------- + +/obj/item/ammo_box/magazine/misc/flares/signal + name = "\improper box of M89 signal flare packs" + desc = "A box of M89 signal flare packs, to mark up the way." + magazine_type = /obj/item/storage/box/m94/signal + overlay_gun_type = "_m89" + overlay_content = "_flares_signal" + //---------------------FIRE HANDLING PROCS //flare box has unique stuff @@ -117,11 +126,11 @@ if(host_box) host_box.apply_fire_overlay() - host_box.SetLuminosity(3) + host_box.set_light(3) host_box.visible_message(SPAN_WARNING(shown_message)) else apply_fire_overlay() - SetLuminosity(3) + set_light(3) visible_message(SPAN_WARNING(shown_message)) //for flare box, instead of actually exploding, we throw out a flare at random direction @@ -139,6 +148,9 @@ /obj/item/ammo_box/magazine/misc/flares/empty empty = TRUE +/obj/item/ammo_box/magazine/misc/flares/signal/empty + empty = TRUE + //------------------------Flashlight Box-------------------------- /obj/item/ammo_box/magazine/misc/flashlight diff --git a/code/modules/projectiles/ammo_boxes/round_boxes.dm b/code/modules/projectiles/ammo_boxes/round_boxes.dm index 95115b76df43..ab1d1667c15f 100644 --- a/code/modules/projectiles/ammo_boxes/round_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/round_boxes.dm @@ -130,3 +130,43 @@ /obj/item/ammo_box/rounds/type71/heap/empty empty = TRUE + +//----------------9mm Pistol Ammunition Boxes (for mod88, M4A3 pistols)------------------ + +/obj/item/ammo_box/rounds/pistol + name = "\improper pistol ammunition box (9mm)" + desc = "A 9mm ammunition box. Used to refill M4A3 magazines. It comes with a leather strap allowing to wear it on the back." + caliber = "9mm" + icon_state = "base_m4a3" + overlay_content = "_reg" + default_ammo = /datum/ammo/bullet/pistol + +/obj/item/ammo_box/rounds/pistol/empty + empty = TRUE + +/obj/item/ammo_box/rounds/pistol/ap + name = "\improper pistol ammunition box (9mm AP)" + desc = "A 9mm armor-piercing ammunition box. Used to refill mod88 and M4A3 magazines. It comes with a leather strap allowing to wear it on the back." + overlay_content = "_ap" + default_ammo = /datum/ammo/bullet/pistol/ap + +/obj/item/ammo_box/rounds/pistol/ap/empty + empty = TRUE + +/obj/item/ammo_box/rounds/pistol/hp + name = "\improper pistol ammunition box (9mm HP)" + desc = "A 9mm hollow-point ammunition box. Used to refill M4A3 magazines. It comes with a leather strap allowing to wear it on the back." + overlay_content = "_hp" + default_ammo = /datum/ammo/bullet/pistol/hollow + +/obj/item/ammo_box/rounds/pistol/hp/empty + empty = TRUE + +/obj/item/ammo_box/rounds/pistol/incen + name = "\improper pistol ammunition box (9mm Incendiary)" + desc = "A 9mm incendiary ammunition box. Used to refill M4A3 magazines. It comes with a leather strap allowing to wear it on the back." + overlay_content = "_incen" + default_ammo = /datum/ammo/bullet/pistol/incendiary + +/obj/item/ammo_box/rounds/pistol/incen/empty + empty = TRUE diff --git a/code/modules/projectiles/ammo_datums.dm b/code/modules/projectiles/ammo_datums.dm deleted file mode 100644 index 05a4256efb49..000000000000 --- a/code/modules/projectiles/ammo_datums.dm +++ /dev/null @@ -1,3338 +0,0 @@ -/datum/ammo - var/name = "generic bullet" - var/headshot_state = null //Icon state when a human is permanently killed with it by execution/suicide. - var/icon = 'icons/obj/items/weapons/projectiles.dmi' - var/icon_state = "bullet" - var/ping = "ping_b" //The icon that is displayed when the bullet bounces off something. - var/sound_hit //When it deals damage. - var/sound_armor //When it's blocked by human armor. - var/sound_miss //When it misses someone. - var/sound_bounce //When it bounces off something. - var/sound_shield_hit //When the bullet is absorbed by a xeno_shield - - var/accurate_range_min = 0 // Snipers use this to simulate poor accuracy at close ranges - var/scatter = 0 // How much the ammo scatters when burst fired, added to gun scatter, along with other mods - var/stamina_damage = 0 - var/damage = 0 // This is the base damage of the bullet as it is fired - var/damage_type = BRUTE // BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here - var/penetration = 0 // How much armor it ignores before calculations take place - var/shrapnel_chance = 0 // The % chance it will imbed in a human - var/shrapnel_type = 0 // The shrapnel type the ammo will embed, if the chance rolls - var/bonus_projectiles_type // Type path of the extra projectiles - var/bonus_projectiles_amount = 0 // How many extra projectiles it shoots out. Works kind of like firing on burst, but all of the projectiles travel together - var/debilitate[] = null // Stun,knockdown,knockout,irradiate,stutter,eyeblur,drowsy,agony - var/pen_armor_punch = 0.5 // how much armor breaking will be done per point of penetration. This is for weapons that penetrate with their shape (like needle bullets) - var/damage_armor_punch = 0.5 // how much armor breaking is done by sheer weapon force. This is for big blunt weapons - var/sound_override = null // if we should play a special sound when firing. - var/flags_ammo_behavior = NO_FLAGS - - var/accuracy = HIT_ACCURACY_TIER_1 // This is added to the bullet's base accuracy. - var/accuracy_var_low = PROJECTILE_VARIANCE_TIER_9 // How much the accuracy varies when fired. // This REDUCES the lower bound of accuracy variance by 2%, to 96%. - var/accuracy_var_high = PROJECTILE_VARIANCE_TIER_9 // This INCREASES the upper bound of accuracy variance by 2%, to 107%. - var/accurate_range = 6 // For most guns, this is where the bullet dramatically looses accuracy. Not for snipers though. - var/max_range = 22 // This will de-increment a counter on the bullet. - var/damage_var_low = PROJECTILE_VARIANCE_TIER_9 // Same as with accuracy variance. - var/damage_var_high = PROJECTILE_VARIANCE_TIER_9 // This INCREASES the upper bound of damage variance by 2%, to 107%. - var/damage_falloff = DAMAGE_FALLOFF_TIER_10 // How much damage the bullet loses per turf traveled after the effective range - var/damage_buildup = DAMAGE_BUILDUP_TIER_1 // How much damage the bullet loses per turf away before the effective range - var/effective_range_min = EFFECTIVE_RANGE_OFF //What minimum range the ammo deals full damage, builds up the closer you get. 0 for no minimum. Added onto gun range as a modifier. - var/effective_range_max = EFFECTIVE_RANGE_OFF //What maximum range the ammo deals full damage, tapers off using damage_falloff after hitting this value. 0 for no maximum. Added onto gun range as a modifier. - var/shell_speed = AMMO_SPEED_TIER_1 // How fast the projectile moves. - - var/handful_type = /obj/item/ammo_magazine/handful - var/handful_color - var/handful_state = "bullet" //custom handful sprite, for shotgun shells or etc. - var/multiple_handful_name //so handfuls say 'buckshot shells' not 'shell' - - /// Does this apply xenomorph behaviour delegate? - var/apply_delegate = TRUE - - /// An assoc list in the format list(/datum/element/bullet_trait_to_give = list(...args)) - /// that will be given to a projectile with the current ammo datum - var/list/list/traits_to_give - - var/flamer_reagent_type = /datum/reagent/napalm/ut - - /// The flicker that plays when a bullet hits a target. Usually red. Can be nulled so it doesn't show up at all. - var/hit_effect_color = "#FF0000" - -/datum/ammo/New() - set_bullet_traits() - -/datum/ammo/proc/on_bullet_generation(obj/item/projectile/generated_projectile, mob/bullet_generator) //NOT used on New(), applied to the projectiles. - return - -/// Populate traits_to_give in this proc -/datum/ammo/proc/set_bullet_traits() - return - -/datum/ammo/can_vv_modify() - return FALSE - -/datum/ammo/proc/do_at_half_range(obj/item/projectile/P) - SHOULD_NOT_SLEEP(TRUE) - return - -/datum/ammo/proc/on_embed(mob/embedded_mob, obj/limb/target_organ) - return - -/datum/ammo/proc/do_at_max_range(obj/item/projectile/P) - SHOULD_NOT_SLEEP(TRUE) - return - -/datum/ammo/proc/on_shield_block(mob/M, obj/item/projectile/P) //Does it do something special when shield blocked? Ie. a flare or grenade that still blows up. - return - -/datum/ammo/proc/on_hit_turf(turf/T, obj/item/projectile/P) //Special effects when hitting dense turfs. - SHOULD_NOT_SLEEP(TRUE) - return - -/datum/ammo/proc/on_hit_mob(mob/M, obj/item/projectile/P, mob/user) //Special effects when hitting mobs. - SHOULD_NOT_SLEEP(TRUE) - return - -///Special effects when pointblanking mobs. Ultimately called from /living/attackby(). Return TRUE to end the PB attempt. -/datum/ammo/proc/on_pointblank(mob/living/L, obj/item/projectile/P, mob/living/user, obj/item/weapon/gun/fired_from) - return - -/datum/ammo/proc/on_hit_obj(obj/O, obj/item/projectile/P) //Special effects when hitting objects. - SHOULD_NOT_SLEEP(TRUE) - return - -/datum/ammo/proc/on_near_target(turf/T, obj/item/projectile/P) //Special effects when passing near something. Range of things that triggers it is controlled by other ammo flags. - return 0 //return 0 means it flies even after being near something. Return 1 means it stops - -/datum/ammo/proc/knockback(mob/living/living_mob, obj/item/projectile/fired_projectile, max_range = 2) - if(!living_mob || living_mob == fired_projectile.firer) - return - if(fired_projectile.distance_travelled > max_range || living_mob.lying) - return //Two tiles away or more, basically. - - if(living_mob.mob_size >= MOB_SIZE_BIG) - return //Big xenos are not affected. - - shake_camera(living_mob, 3, 4) - knockback_effects(living_mob, fired_projectile) - slam_back(living_mob, fired_projectile) - -/datum/ammo/proc/slam_back(mob/living/living_mob, obj/item/projectile/fired_projectile) - //Either knockback or slam them into an obstacle. - var/direction = Get_Compass_Dir(fired_projectile.z ? fired_projectile : fired_projectile.firer, living_mob) //More precise than get_dir. - if(!direction) //Same tile. - return - if(!step(living_mob, direction)) - living_mob.animation_attack_on(get_step(living_mob, direction)) - playsound(living_mob.loc, "punch", 25, 1) - living_mob.visible_message(SPAN_DANGER("[living_mob] slams into an obstacle!"), - isxeno(living_mob) ? SPAN_XENODANGER("You slam into an obstacle!") : SPAN_HIGHDANGER("You slam into an obstacle!"), null, 4, CHAT_TYPE_TAKING_HIT) - living_mob.apply_damage(MELEE_FORCE_TIER_2) - -///The applied effects for knockback(), overwrite to change slow/stun amounts for different ammo datums -/datum/ammo/proc/knockback_effects(mob/living/living_mob, obj/item/projectile/fired_projectile) - if(iscarbonsizexeno(living_mob)) - var/mob/living/carbon/xenomorph/target = living_mob - target.apply_effect(0.7, WEAKEN) // 0.9 seconds of stun, per agreement from Balance Team when switched from MC stuns to exact stuns - target.apply_effect(1, SUPERSLOW) - target.apply_effect(2, SLOW) - to_chat(target, SPAN_XENODANGER("You are shaken by the sudden impact!")) - else - living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) - -/datum/ammo/proc/pushback(mob/target_mob, obj/item/projectile/fired_projectile, max_range = 2) - if(!target_mob || target_mob == fired_projectile.firer || fired_projectile.distance_travelled > max_range || target_mob.lying) - return - - if(target_mob.mob_size >= MOB_SIZE_BIG) - return //too big to push - - to_chat(target_mob, isxeno(target_mob) ? SPAN_XENODANGER("You are pushed back by the sudden impact!") : SPAN_HIGHDANGER("You are pushed back by the sudden impact!"), null, 4, CHAT_TYPE_TAKING_HIT) - slam_back(target_mob, fired_projectile, max_range) - -/datum/ammo/proc/burst(atom/target, obj/item/projectile/P, damage_type = BRUTE, range = 1, damage_div = 2, show_message = SHOW_MESSAGE_VISIBLE) //damage_div says how much we divide damage - if(!target || !P) return - for(var/mob/living/carbon/M in orange(range,target)) - if(P.firer == M) - continue - if(show_message) - var/msg = "You are hit by backlash from \a
        [P.name]
        !" - M.visible_message(SPAN_DANGER("[M] is hit by backlash from \a [P.name]!"),isxeno(M) ? SPAN_XENODANGER("[msg]"):SPAN_HIGHDANGER("[msg]")) - var/damage = P.damage/damage_div - - var/mob/living/carbon/xenomorph/XNO = null - - if(isxeno(M)) - XNO = M - var/total_explosive_resistance = XNO.caste.xeno_explosion_resistance + XNO.armor_explosive_buff - damage = armor_damage_reduction(GLOB.xeno_explosive, damage, total_explosive_resistance , 60, 0, 0.5, XNO.armor_integrity) - var/armor_punch = armor_break_calculation(GLOB.xeno_explosive, damage, total_explosive_resistance, 60, 0, 0.5, XNO.armor_integrity) - XNO.apply_armorbreak(armor_punch) - - M.apply_damage(damage,damage_type) - - if(XNO && XNO.xeno_shields.len) - P.play_shielded_hit_effect(M) - else - P.play_hit_effect(M) - -/datum/ammo/proc/fire_bonus_projectiles(obj/item/projectile/original_P) - set waitfor = 0 - - var/turf/curloc = get_turf(original_P.shot_from) - var/initial_angle = Get_Angle(curloc, original_P.target_turf) - - for(var/i in 1 to bonus_projectiles_amount) //Want to run this for the number of bonus projectiles. - var/final_angle = initial_angle - - var/obj/item/projectile/P = new /obj/item/projectile(curloc, original_P.weapon_cause_data) - P.generate_bullet(GLOB.ammo_list[bonus_projectiles_type]) //No bonus damage or anything. - P.accuracy = round(P.accuracy * original_P.accuracy/initial(original_P.accuracy)) //if the gun changes the accuracy of the main projectile, it also affects the bonus ones. - original_P.give_bullet_traits(P) - - var/total_scatter_angle = P.scatter - final_angle += rand(-total_scatter_angle, total_scatter_angle) - var/turf/new_target = get_angle_target_turf(curloc, final_angle, 30) - - P.fire_at(new_target, original_P.firer, original_P.shot_from, P.ammo.max_range, P.ammo.shell_speed, original_P.original) //Fire! - -/datum/ammo/proc/drop_flame(turf/T, datum/cause_data/cause_data) // ~Art updated fire 20JAN17 - if(!istype(T)) - return - if(locate(/obj/flamer_fire) in T) - return - - var/datum/reagent/R = new flamer_reagent_type() - new /obj/flamer_fire(T, cause_data, R) - - -/* -//====== - Default Ammo -//====== -*/ -//Only when things screw up do we use this as a placeholder. -/datum/ammo/bullet - name = "default bullet" - icon_state = "bullet" - headshot_state = HEADSHOT_OVERLAY_LIGHT - flags_ammo_behavior = AMMO_BALLISTIC - sound_hit = "ballistic_hit" - sound_armor = "ballistic_armor" - sound_miss = "ballistic_miss" - sound_bounce = "ballistic_bounce" - sound_shield_hit = "ballistic_shield_hit" - - accurate_range_min = 0 - damage = 10 - shrapnel_chance = SHRAPNEL_CHANCE_TIER_1 - shrapnel_type = /obj/item/shard/shrapnel - shell_speed = AMMO_SPEED_TIER_4 - -/datum/ammo/bullet/proc/handle_battlefield_execution(datum/ammo/firing_ammo, mob/living/hit_mob, obj/item/projectile/firing_projectile, mob/living/user, obj/item/weapon/gun/fired_from) - SIGNAL_HANDLER - - if(!user || hit_mob == user || user.zone_selected != "head" || user.a_intent != INTENT_HARM || !ishuman_strict(hit_mob)) - return - - if(!skillcheck(user, SKILL_EXECUTION, SKILL_EXECUTION_TRAINED)) - to_chat(user, SPAN_DANGER("You don't know how to execute someone correctly.")) - return - - var/mob/living/carbon/human/execution_target = hit_mob - - if(execution_target.status_flags & PERMANENTLY_DEAD) - to_chat(user, SPAN_DANGER("[execution_target] has already been executed!")) - return - - INVOKE_ASYNC(src, PROC_REF(attempt_battlefield_execution), src, execution_target, firing_projectile, user, fired_from) - - return COMPONENT_CANCEL_AMMO_POINT_BLANK - -/datum/ammo/bullet/proc/attempt_battlefield_execution(datum/ammo/firing_ammo, mob/living/carbon/human/execution_target, obj/item/projectile/firing_projectile, mob/living/user, obj/item/weapon/gun/fired_from) - user.affected_message(execution_target, - SPAN_HIGHDANGER("You aim \the [fired_from] at [execution_target]'s head!"), - SPAN_HIGHDANGER("[user] aims \the [fired_from] directly at your head!"), - SPAN_DANGER("[user] aims \the [fired_from] at [execution_target]'s head!")) - - user.next_move += 1.1 SECONDS //PB has no click delay; readding it here to prevent people accidentally queuing up multiple executions. - - if(!do_after(user, 1 SECONDS, INTERRUPT_ALL, BUSY_ICON_HOSTILE) || !user.Adjacent(execution_target)) - fired_from.delete_bullet(firing_projectile, TRUE) - return - - if(!(fired_from.flags_gun_features & GUN_SILENCED)) - playsound(user, fired_from.fire_sound, fired_from.firesound_volume, FALSE) - else - playsound(user, fired_from.fire_sound, 25, FALSE) - - shake_camera(user, 1, 2) - - execution_target.apply_damage(damage * 3, BRUTE, "head", no_limb_loss = TRUE, permanent_kill = TRUE) //Apply gobs of damage and make sure they can't be revived later... - execution_target.apply_damage(200, OXY) //...fill out the rest of their health bar with oxyloss... - execution_target.death(create_cause_data("execution", user)) //...make certain they're properly dead... - shake_camera(execution_target, 3, 4) - execution_target.update_headshot_overlay(headshot_state) //...and add a gory headshot overlay. - - execution_target.visible_message(SPAN_HIGHDANGER(uppertext("[execution_target] WAS EXECUTED!")), \ - SPAN_HIGHDANGER("You WERE EXECUTED!")) - - user.count_niche_stat(STATISTICS_NICHE_EXECUTION, 1, firing_projectile.weapon_cause_data?.cause_name) - - var/area/execution_area = get_area(execution_target) - - msg_admin_attack(FONT_SIZE_HUGE("[key_name(usr)] has battlefield executed [key_name(execution_target)] in [get_area(usr)] ([usr.loc.x],[usr.loc.y],[usr.loc.z])."), usr.loc.x, usr.loc.y, usr.loc.z) - log_attack("[key_name(usr)] battlefield executed [key_name(execution_target)] at [execution_area.name].") - - if(flags_ammo_behavior & AMMO_EXPLOSIVE) - execution_target.gib() - - -/* -//====== - Pistol Ammo -//====== -*/ - -// Used by M4A3, M4A3 Custom and B92FS -/datum/ammo/bullet/pistol - name = "pistol bullet" - headshot_state = HEADSHOT_OVERLAY_MEDIUM - accuracy = -HIT_ACCURACY_TIER_3 - accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 - damage = 40 - penetration= ARMOR_PENETRATION_TIER_2 - shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 - -/datum/ammo/bullet/pistol/tiny - name = "light pistol bullet" - -/datum/ammo/bullet/pistol/tranq - name = "tranquilizer bullet" - flags_ammo_behavior = AMMO_BALLISTIC|AMMO_IGNORE_RESIST - stamina_damage = 30 - -//2020 rebalance: is supposed to counter runners and lurkers, dealing high damage to the only castes with no armor. -//Limited by its lack of versatility and lower supply, so marines finally have an answer for flanker castes that isn't just buckshot. - -/datum/ammo/bullet/pistol/hollow - name = "hollowpoint pistol bullet" - - damage = 55 //hollowpoint is strong - penetration = 0 //hollowpoint can't pierce armor! - shrapnel_chance = SHRAPNEL_CHANCE_TIER_3 //hollowpoint causes shrapnel - -// Used by M4A3 AP and mod88 -/datum/ammo/bullet/pistol/ap - name = "armor-piercing pistol bullet" - - damage = 25 - accuracy = HIT_ACCURACY_TIER_2 - penetration= ARMOR_PENETRATION_TIER_8 - shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 - -/datum/ammo/bullet/pistol/ap/penetrating - name = "wall-penetrating pistol bullet" - shrapnel_chance = 0 - - damage = 30 - penetration = ARMOR_PENETRATION_TIER_10 - -/datum/ammo/bullet/pistol/ap/penetrating/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating) - )) - -/datum/ammo/bullet/pistol/ap/toxin - name = "toxic pistol bullet" - var/acid_per_hit = 10 - var/organic_damage_mult = 3 - -/datum/ammo/bullet/pistol/ap/toxin/on_hit_mob(mob/M, obj/item/projectile/P) - . = ..() - M.AddComponent(/datum/component/toxic_buildup, acid_per_hit) - -/datum/ammo/bullet/pistol/ap/toxin/on_hit_turf(turf/T, obj/item/projectile/P) - . = ..() - if(T.flags_turf & TURF_ORGANIC) - P.damage *= organic_damage_mult - -/datum/ammo/bullet/pistol/ap/toxin/on_hit_obj(obj/O, obj/item/projectile/P) - . = ..() - if(O.flags_obj & OBJ_ORGANIC) - P.damage *= organic_damage_mult - -/datum/ammo/bullet/pistol/le - name = "armor-shredding pistol bullet" - - damage = 15 - penetration = ARMOR_PENETRATION_TIER_4 - pen_armor_punch = 3 - -/datum/ammo/bullet/pistol/rubber - name = "rubber pistol bullet" - sound_override = 'sound/weapons/gun_c99.ogg' - - damage = 0 - stamina_damage = 25 - shrapnel_chance = 0 - -// Used by M1911, Deagle and KT-42 -/datum/ammo/bullet/pistol/heavy - name = "heavy pistol bullet" - headshot_state = HEADSHOT_OVERLAY_MEDIUM - accuracy = -HIT_ACCURACY_TIER_3 - accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 - damage = 55 - penetration= ARMOR_PENETRATION_TIER_3 - shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 - -/datum/ammo/bullet/pistol/heavy/super //Commander's variant - name = ".50 heavy pistol bullet" - damage = 60 - damage_var_low = PROJECTILE_VARIANCE_TIER_8 - damage_var_high = PROJECTILE_VARIANCE_TIER_6 - penetration = ARMOR_PENETRATION_TIER_4 - -/datum/ammo/bullet/pistol/heavy/super/highimpact - name = ".50 high-impact pistol bullet" - penetration = ARMOR_PENETRATION_TIER_1 - debilitate = list(0,1.5,0,0,0,1,0,0) - flags_ammo_behavior = AMMO_BALLISTIC - -/datum/ammo/bullet/pistol/heavy/super/highimpact/ap - name = ".50 high-impact armor piercing pistol bullet" - penetration = ARMOR_PENETRATION_TIER_10 - damage = 45 - -/datum/ammo/bullet/pistol/heavy/super/highimpact/New() - ..() - RegisterSignal(src, COMSIG_AMMO_POINT_BLANK, PROC_REF(handle_battlefield_execution)) - -/datum/ammo/bullet/pistol/heavy/super/highimpact/on_hit_mob(mob/M, obj/item/projectile/P) - knockback(M, P, 4) - -/datum/ammo/bullet/pistol/deagle - name = ".50 heavy pistol bullet" - damage = 45 - headshot_state = HEADSHOT_OVERLAY_HEAVY - accuracy = -HIT_ACCURACY_TIER_3 - accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 - penetration = ARMOR_PENETRATION_TIER_6 - shrapnel_chance = SHRAPNEL_CHANCE_TIER_5 - -/datum/ammo/bullet/pistol/incendiary - name = "incendiary pistol bullet" - damage_type = BURN - shrapnel_chance = 0 - flags_ammo_behavior = AMMO_BALLISTIC - - accuracy = HIT_ACCURACY_TIER_3 - damage = 20 - -/datum/ammo/bullet/pistol/incendiary/set_bullet_traits() - ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - -// Used by the hipower -// I know that the 'high power' in the name is supposed to mean its 'impressive' magazine capacity -// but this is CM, half our guns have baffling misconceptions and mistakes (how do you grab the type-71?) so it's on-brand. -// maybe in the far flung future of 2280 someone screwed up the design. - -/datum/ammo/bullet/pistol/highpower - name = "high-powered pistol bullet" - headshot_state = HEADSHOT_OVERLAY_MEDIUM - - accuracy = HIT_ACCURACY_TIER_3 - damage = 36 - penetration = ARMOR_PENETRATION_TIER_5 - damage_falloff = DAMAGE_FALLOFF_TIER_7 - -// Used by VP78 and Auto 9 -/datum/ammo/bullet/pistol/squash - name = "squash-head pistol bullet" - headshot_state = HEADSHOT_OVERLAY_MEDIUM - debilitate = list(0,0,0,0,0,0,0,2) - - accuracy = HIT_ACCURACY_TIER_4 - damage = 45 - penetration= ARMOR_PENETRATION_TIER_6 - shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 - damage_falloff = DAMAGE_FALLOFF_TIER_6 //"VP78 - the only pistol viable as a primary."-Vampmare, probably. - -/datum/ammo/bullet/pistol/squash/toxin - name = "toxic squash-head pistol bullet" - var/acid_per_hit = 10 - var/organic_damage_mult = 3 - -/datum/ammo/bullet/pistol/squash/toxin/on_hit_mob(mob/M, obj/item/projectile/P) - . = ..() - M.AddComponent(/datum/component/toxic_buildup, acid_per_hit) - -/datum/ammo/bullet/pistol/squash/toxin/on_hit_turf(turf/T, obj/item/projectile/P) - . = ..() - if(T.flags_turf & TURF_ORGANIC) - P.damage *= organic_damage_mult - -/datum/ammo/bullet/pistol/squash/toxin/on_hit_obj(obj/O, obj/item/projectile/P) - . = ..() - if(O.flags_obj & OBJ_ORGANIC) - P.damage *= organic_damage_mult - -/datum/ammo/bullet/pistol/squash/penetrating - name = "wall-penetrating squash-head pistol bullet" - shrapnel_chance = 0 - penetration = ARMOR_PENETRATION_TIER_10 - -/datum/ammo/bullet/pistol/squash/penetrating/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating) - )) - -/datum/ammo/bullet/pistol/squash/incendiary - name = "incendiary squash-head pistol bullet" - damage_type = BURN - shrapnel_chance = 0 - flags_ammo_behavior = AMMO_BALLISTIC - accuracy = HIT_ACCURACY_TIER_3 - damage = 35 - -/datum/ammo/bullet/pistol/squash/incendiary/set_bullet_traits() - ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - - -/datum/ammo/bullet/pistol/mankey - name = "live monkey" - icon_state = "monkey1" - ping = null //no bounce off. - damage_type = BURN - debilitate = list(4,4,0,0,0,0,0,0) - flags_ammo_behavior = AMMO_IGNORE_ARMOR - - damage = 15 - damage_var_high = PROJECTILE_VARIANCE_TIER_5 - shell_speed = AMMO_SPEED_TIER_2 - -/datum/ammo/bullet/pistol/mankey/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - -/datum/ammo/bullet/pistol/mankey/on_hit_mob(mob/M,obj/item/projectile/P) - if(P && P.loc && !M.stat && !istype(M,/mob/living/carbon/human/monkey)) - P.visible_message(SPAN_DANGER("The [src] chimpers furiously!")) - new /mob/living/carbon/human/monkey(P.loc) - -/datum/ammo/bullet/pistol/smart - name = "smartpistol bullet" - flags_ammo_behavior = AMMO_BALLISTIC - - accuracy = HIT_ACCURACY_TIER_8 - damage = 30 - penetration = 20 - shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 - -/* -//====== - Revolver Ammo -//====== -*/ - -/datum/ammo/bullet/revolver - name = "revolver bullet" - headshot_state = HEADSHOT_OVERLAY_MEDIUM - - damage = 55 - penetration = ARMOR_PENETRATION_TIER_1 - accuracy = HIT_ACCURACY_TIER_1 - -/datum/ammo/bullet/revolver/marksman - name = "marksman revolver bullet" - - shrapnel_chance = 0 - damage_falloff = 0 - accurate_range = 12 - penetration = ARMOR_PENETRATION_TIER_7 - -/datum/ammo/bullet/revolver/heavy - name = "heavy revolver bullet" - - damage = 35 - penetration = ARMOR_PENETRATION_TIER_4 - accuracy = HIT_ACCURACY_TIER_3 - -/datum/ammo/bullet/revolver/heavy/on_hit_mob(mob/M, obj/item/projectile/P) - knockback(M, P, 4) - -/datum/ammo/bullet/revolver/incendiary - name = "incendiary revolver bullet" - damage = 40 - -/datum/ammo/bullet/revolver/incendiary/set_bullet_traits() - ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - -/datum/ammo/bullet/revolver/marksman/toxin - name = "toxic revolver bullet" - var/acid_per_hit = 10 - var/organic_damage_mult = 3 - -/datum/ammo/bullet/revolver/marksman/toxin/on_hit_mob(mob/M, obj/item/projectile/P) - . = ..() - M.AddComponent(/datum/component/toxic_buildup, acid_per_hit) - -/datum/ammo/bullet/revolver/marksman/toxin/on_hit_turf(turf/T, obj/item/projectile/P) - . = ..() - if(T.flags_turf & TURF_ORGANIC) - P.damage *= organic_damage_mult - -/datum/ammo/bullet/revolver/marksman/toxin/on_hit_obj(obj/O, obj/item/projectile/P) - . = ..() - if(O.flags_obj & OBJ_ORGANIC) - P.damage *= organic_damage_mult - -/datum/ammo/bullet/revolver/penetrating - name = "wall-penetrating revolver bullet" - shrapnel_chance = 0 - - penetration = ARMOR_PENETRATION_TIER_10 - -/datum/ammo/bullet/revolver/penetrating/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating) - )) - -/datum/ammo/bullet/revolver/nagant - name = "nagant revolver bullet" - headshot_state = HEADSHOT_OVERLAY_LIGHT //Smaller bullet. - damage = 40 - - -/datum/ammo/bullet/revolver/nagant/shrapnel - name = "shrapnel shot" - headshot_state = HEADSHOT_OVERLAY_HEAVY //Gol-dang shotgun blow your fething head off. - debilitate = list(0,0,0,0,0,0,0,0) - icon_state = "shrapnelshot" - handful_state = "shrapnel" - bonus_projectiles_type = /datum/ammo/bullet/revolver/nagant/shrapnel_bits - - max_range = 6 - damage = 25 // + TIER_4 * 3 - damage_falloff = DAMAGE_FALLOFF_TIER_7 - penetration = ARMOR_PENETRATION_TIER_6 - bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_3 - shrapnel_chance = 100 - shrapnel_type = /obj/item/shard/shrapnel/nagant - //roughly 35 or so damage - -/datum/ammo/bullet/revolver/nagant/shrapnel/on_hit_mob(mob/M, obj/item/projectile/P) - pushback(M, P, 1) - -/datum/ammo/bullet/revolver/nagant/shrapnel_bits - name = "small shrapnel" - icon_state = "shrapnelshot_bit" - - max_range = 6 - damage = 20 - penetration = ARMOR_PENETRATION_TIER_1 - scatter = SCATTER_AMOUNT_TIER_1 - bonus_projectiles_amount = 0 - shrapnel_type = /obj/item/shard/shrapnel/nagant/bits - -/datum/ammo/bullet/revolver/small - name = "small revolver bullet" - headshot_state = HEADSHOT_OVERLAY_LIGHT - - damage = 45 - - penetration = ARMOR_PENETRATION_TIER_3 - -/datum/ammo/bullet/revolver/small/hollowpoint - name = "small hollowpoint revolver bullet" - headshot_state = HEADSHOT_OVERLAY_MEDIUM - - damage = 75 // way too strong because it's hard to make a good balance between HP and normal with this system, but the damage falloff is really strong - penetration = 0 - damage_falloff = DAMAGE_FALLOFF_TIER_6 - -/datum/ammo/bullet/revolver/mateba - name = ".454 heavy revolver bullet" - - damage = 60 - damage_var_low = PROJECTILE_VARIANCE_TIER_8 - damage_var_high = PROJECTILE_VARIANCE_TIER_6 - penetration = ARMOR_PENETRATION_TIER_4 - -/datum/ammo/bullet/revolver/mateba/highimpact - name = ".454 heavy high-impact revolver bullet" - debilitate = list(0,2,0,0,0,1,0,0) - penetration = ARMOR_PENETRATION_TIER_1 - flags_ammo_behavior = AMMO_BALLISTIC - -/datum/ammo/bullet/revolver/mateba/highimpact/ap - name = ".454 heavy high-impact armor piercing revolver bullet" - penetration = ARMOR_PENETRATION_TIER_10 - damage = 45 - -/datum/ammo/bullet/revolver/mateba/highimpact/New() - ..() - RegisterSignal(src, COMSIG_AMMO_POINT_BLANK, PROC_REF(handle_battlefield_execution)) - -/datum/ammo/bullet/revolver/mateba/highimpact/on_hit_mob(mob/M, obj/item/projectile/P) - knockback(M, P, 4) - -/datum/ammo/bullet/revolver/mateba/highimpact/explosive //if you ever put this in normal gameplay, i am going to scream - name = ".454 heavy explosive revolver bullet" - damage = 100 - damage_var_low = PROJECTILE_VARIANCE_TIER_10 - damage_var_high = PROJECTILE_VARIANCE_TIER_1 - penetration = ARMOR_PENETRATION_TIER_10 - flags_ammo_behavior = AMMO_EXPLOSIVE|AMMO_BALLISTIC - -/datum/ammo/bullet/revolver/mateba/highimpact/explosive/on_hit_mob(mob/M, obj/item/projectile/P) - ..() - cell_explosion(get_turf(M), 120, 30, EXPLOSION_FALLOFF_SHAPE_LINEAR, P.dir, P.weapon_cause_data) - -/datum/ammo/bullet/revolver/mateba/highimpact/explosive/on_hit_obj(obj/O, obj/item/projectile/P) - ..() - cell_explosion(get_turf(O), 120, 30, EXPLOSION_FALLOFF_SHAPE_LINEAR, P.dir, P.weapon_cause_data) - -/datum/ammo/bullet/revolver/mateba/highimpact/explosive/on_hit_turf(turf/T, obj/item/projectile/P) - ..() - cell_explosion(T, 120, 30, EXPLOSION_FALLOFF_SHAPE_LINEAR, P.dir, P.weapon_cause_data) - -/datum/ammo/bullet/revolver/webley //Mateba round without the knockdown. - name = ".455 Webley bullet" - damage = 60 - damage_var_low = PROJECTILE_VARIANCE_TIER_8 - damage_var_high = PROJECTILE_VARIANCE_TIER_6 - penetration = ARMOR_PENETRATION_TIER_2 - -/* -//====== - SMG Ammo -//====== -*/ -//2020 SMG/ammo rebalance. default ammo actually has penetration so it can be useful, by 4khan: should be meh against t3s, better under 15 armor. Perfectly does this right now (oct 2020) -//has reduced falloff compared to the m39. this means it is best for kiting castes (mostly t2s and below admittedly) -//while the m39 ap is better for shredding them at close range, but has reduced velocity, so it's better for just running in and erasing armor-centric castes (defender, crusher) -// which i think is really interesting and good balance, giving both ammo types a reason to exist even against ravagers. -//i feel it is necessary to reflavor the default bullet, because otherwise, people won't be able to notice it has less falloff and faster bullet speed. even with a changelog, -//way too many people don't read the changelog, and after one or two months the changelog entry is all but archive, so there needs to be an ingame description of what the ammo does -//in comparison to armor-piercing rounds. - -/datum/ammo/bullet/smg - name = "submachinegun bullet" - damage = 34 - accurate_range = 4 - effective_range_max = 4 - penetration = ARMOR_PENETRATION_TIER_1 - shell_speed = AMMO_SPEED_TIER_6 - damage_falloff = DAMAGE_FALLOFF_TIER_5 - scatter = SCATTER_AMOUNT_TIER_6 - accuracy = HIT_ACCURACY_TIER_3 - -/datum/ammo/bullet/smg/m39 - name = "high-velocity submachinegun bullet" //i don't want all smgs to inherit 'high velocity' - -/datum/ammo/bullet/smg/ap - name = "armor-piercing submachinegun bullet" - - damage = 26 - penetration = ARMOR_PENETRATION_TIER_6 - shell_speed = AMMO_SPEED_TIER_4 - -/datum/ammo/bullet/smg/heap - name = "high-explosive armor-piercing submachinegun bullet" - - damage = 45 - headshot_state = HEADSHOT_OVERLAY_MEDIUM - penetration = ARMOR_PENETRATION_TIER_6 - shell_speed = AMMO_SPEED_TIER_4 - -/datum/ammo/bullet/smg/ap/toxin - name = "toxic submachinegun bullet" - var/acid_per_hit = 5 - var/organic_damage_mult = 3 - -/datum/ammo/bullet/smg/ap/toxin/on_hit_mob(mob/M, obj/item/projectile/P) - . = ..() - M.AddComponent(/datum/component/toxic_buildup, acid_per_hit) - -/datum/ammo/bullet/smg/ap/toxin/on_hit_turf(turf/T, obj/item/projectile/P) - . = ..() - if(T.flags_turf & TURF_ORGANIC) - P.damage *= organic_damage_mult - -/datum/ammo/bullet/smg/ap/toxin/on_hit_obj(obj/O, obj/item/projectile/P) - . = ..() - if(O.flags_obj & OBJ_ORGANIC) - P.damage *= organic_damage_mult - -/datum/ammo/bullet/smg/nail - name = "7x45mm plasteel nail" - icon_state = "nail-projectile" - - damage = 25 - penetration = ARMOR_PENETRATION_TIER_5 - damage_falloff = DAMAGE_FALLOFF_TIER_6 - accurate_range = 5 - shell_speed = AMMO_SPEED_TIER_4 - -/datum/ammo/bullet/smg/incendiary - name = "incendiary submachinegun bullet" - damage_type = BURN - shrapnel_chance = 0 - flags_ammo_behavior = AMMO_BALLISTIC - - damage = 25 - accuracy = -HIT_ACCURACY_TIER_2 - -/datum/ammo/bullet/smg/incendiary/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - -/datum/ammo/bullet/smg/ap/penetrating - name = "wall-penetrating submachinegun bullet" - shrapnel_chance = 0 - - damage = 30 - penetration = ARMOR_PENETRATION_TIER_10 - -/datum/ammo/bullet/smg/ap/penetrating/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating) - )) - -/datum/ammo/bullet/smg/le - name = "armor-shredding submachinegun bullet" - - scatter = SCATTER_AMOUNT_TIER_10 - damage = 20 - penetration = ARMOR_PENETRATION_TIER_4 - shell_speed = AMMO_SPEED_TIER_3 - damage_falloff = DAMAGE_FALLOFF_TIER_10 - pen_armor_punch = 4 - -/datum/ammo/bullet/smg/rubber - name = "rubber submachinegun bullet" - sound_override = 'sound/weapons/gun_c99.ogg' - - damage = 0 - stamina_damage = 10 - shrapnel_chance = 0 - -/datum/ammo/bullet/smg/mp27 - name = "simple submachinegun bullet" - damage = 40 - accurate_range = 5 - effective_range_max = 7 - penetration = 0 - shell_speed = AMMO_SPEED_TIER_6 - damage_falloff = DAMAGE_FALLOFF_TIER_6 - scatter = SCATTER_AMOUNT_TIER_6 - accuracy = HIT_ACCURACY_TIER_2 - -// less damage than the m39, but better falloff, range, and AP - -/datum/ammo/bullet/smg/ppsh - name = "crude submachinegun bullet" - damage = 26 - accurate_range = 7 - effective_range_max = 7 - penetration = ARMOR_PENETRATION_TIER_2 - damage_falloff = DAMAGE_FALLOFF_TIER_7 - scatter = SCATTER_AMOUNT_TIER_5 - -/* -//====== - Rifle Ammo -//====== -*/ - -/datum/ammo/bullet/rifle - name = "rifle bullet" - headshot_state = HEADSHOT_OVERLAY_MEDIUM - - damage = 40 - penetration = ARMOR_PENETRATION_TIER_1 - accurate_range = 16 - accuracy = HIT_ACCURACY_TIER_4 - scatter = SCATTER_AMOUNT_TIER_10 - shell_speed = AMMO_SPEED_TIER_6 - effective_range_max = 7 - damage_falloff = DAMAGE_FALLOFF_TIER_7 - max_range = 24 //So S8 users don't have their bullets magically disappaer at 22 tiles (S8 can see 24 tiles) - -/datum/ammo/bullet/rifle/holo_target - name = "holo-targeting rifle bullet" - damage = 30 - var/holo_stacks = 10 - -/datum/ammo/bullet/rifle/holo_target/on_hit_mob(mob/M, obj/item/projectile/P) - . = ..() - M.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time) - -/datum/ammo/bullet/rifle/holo_target/hunting - name = "holo-targeting hunting bullet" - damage = 25 - holo_stacks = 15 - -/datum/ammo/bullet/rifle/explosive - name = "explosive rifle bullet" - - damage = 25 - accurate_range = 22 - accuracy = 0 - shell_speed = AMMO_SPEED_TIER_4 - damage_falloff = DAMAGE_FALLOFF_TIER_9 - -/datum/ammo/bullet/rifle/explosive/on_hit_mob(mob/M, obj/item/projectile/P) - cell_explosion(get_turf(M), 80, 40, EXPLOSION_FALLOFF_SHAPE_LINEAR, P.dir, P.weapon_cause_data) - -/datum/ammo/bullet/rifle/explosive/on_hit_obj(obj/O, obj/item/projectile/P) - cell_explosion(get_turf(O), 80, 40, EXPLOSION_FALLOFF_SHAPE_LINEAR, P.dir, P.weapon_cause_data) - -/datum/ammo/bullet/rifle/explosive/on_hit_turf(turf/T, obj/item/projectile/P) - if(T.density) - cell_explosion(T, 80, 40, EXPLOSION_FALLOFF_SHAPE_LINEAR, P.dir, P.weapon_cause_data) - -/datum/ammo/bullet/rifle/ap - name = "armor-piercing rifle bullet" - - damage = 30 - penetration = ARMOR_PENETRATION_TIER_8 - -// Basically AP but better. Focused at taking out armour temporarily -/datum/ammo/bullet/rifle/ap/toxin - name = "toxic rifle bullet" - var/acid_per_hit = 7 - var/organic_damage_mult = 3 - -/datum/ammo/bullet/rifle/ap/toxin/on_hit_mob(mob/M, obj/item/projectile/P) - . = ..() - M.AddComponent(/datum/component/toxic_buildup, acid_per_hit) - -/datum/ammo/bullet/rifle/ap/toxin/on_hit_turf(turf/T, obj/item/projectile/P) - . = ..() - if(T.flags_turf & TURF_ORGANIC) - P.damage *= organic_damage_mult - -/datum/ammo/bullet/rifle/ap/toxin/on_hit_obj(obj/O, obj/item/projectile/P) - . = ..() - if(O.flags_obj & OBJ_ORGANIC) - P.damage *= organic_damage_mult - - -/datum/ammo/bullet/rifle/ap/penetrating - name = "wall-penetrating rifle bullet" - shrapnel_chance = 0 - - damage = 35 - penetration = ARMOR_PENETRATION_TIER_10 - -/datum/ammo/bullet/rifle/ap/penetrating/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating) - )) - -/datum/ammo/bullet/rifle/le - name = "armor-shredding rifle bullet" - - damage = 20 - penetration = ARMOR_PENETRATION_TIER_4 - pen_armor_punch = 5 - -/datum/ammo/bullet/rifle/heap - name = "high-explosive armor-piercing rifle bullet" - - headshot_state = HEADSHOT_OVERLAY_HEAVY - damage = 55//big damage, doesn't actually blow up because thats stupid. - penetration = ARMOR_PENETRATION_TIER_8 - -/datum/ammo/bullet/rifle/rubber - name = "rubber rifle bullet" - sound_override = 'sound/weapons/gun_c99.ogg' - - damage = 0 - stamina_damage = 15 - shrapnel_chance = 0 - -/datum/ammo/bullet/rifle/incendiary - name = "incendiary rifle bullet" - damage_type = BURN - shrapnel_chance = 0 - flags_ammo_behavior = AMMO_BALLISTIC - - damage = 30 - shell_speed = AMMO_SPEED_TIER_4 - accuracy = -HIT_ACCURACY_TIER_2 - damage_falloff = DAMAGE_FALLOFF_TIER_10 - -/datum/ammo/bullet/rifle/incendiary/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - -/datum/ammo/bullet/rifle/m4ra - name = "A19 high velocity bullet" - shrapnel_chance = 0 - damage_falloff = 0 - flags_ammo_behavior = AMMO_BALLISTIC - accurate_range_min = 4 - - damage = 55 - scatter = -SCATTER_AMOUNT_TIER_8 - penetration= ARMOR_PENETRATION_TIER_7 - shell_speed = AMMO_SPEED_TIER_6 - -/datum/ammo/bullet/rifle/m4ra/incendiary - name = "A19 high velocity incendiary bullet" - flags_ammo_behavior = AMMO_BALLISTIC - - damage = 40 - accuracy = HIT_ACCURACY_TIER_4 - scatter = -SCATTER_AMOUNT_TIER_8 - penetration= ARMOR_PENETRATION_TIER_5 - shell_speed = AMMO_SPEED_TIER_6 - -/datum/ammo/bullet/rifle/m4ra/incendiary/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - -/datum/ammo/bullet/rifle/m4ra/impact - name = "A19 high velocity impact bullet" - flags_ammo_behavior = AMMO_BALLISTIC - - damage = 40 - accuracy = -HIT_ACCURACY_TIER_2 - scatter = -SCATTER_AMOUNT_TIER_8 - penetration = ARMOR_PENETRATION_TIER_10 - shell_speed = AMMO_SPEED_TIER_6 - -/datum/ammo/bullet/rifle/m4ra/impact/on_hit_mob(mob/M, obj/item/projectile/P) - knockback(M, P, 32) // Can knockback basically at max range - -/datum/ammo/bullet/rifle/m4ra/impact/knockback_effects(mob/living/living_mob, obj/item/projectile/fired_projectile) - if(iscarbonsizexeno(living_mob)) - var/mob/living/carbon/xenomorph/target = living_mob - to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!")) - target.apply_effect(0.5, WEAKEN) - target.apply_effect(2, SUPERSLOW) - target.apply_effect(5, SLOW) - else - if(!isyautja(living_mob)) //Not predators. - living_mob.apply_effect(1, SUPERSLOW) - living_mob.apply_effect(2, SLOW) - to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!")) - living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) - -/datum/ammo/bullet/rifle/mar40 - name = "heavy rifle bullet" - - damage = 55 - -/datum/ammo/bullet/rifle/type71 - name = "heavy rifle bullet" - - damage = 35 - penetration = ARMOR_PENETRATION_TIER_2 - -/datum/ammo/bullet/rifle/type71/ap - name = "heavy armor-piercing rifle bullet" - - damage = 20 - penetration = ARMOR_PENETRATION_TIER_10 - -/datum/ammo/bullet/rifle/type71/heap - name = "heavy high-explosive armor-piercing rifle bullet" - - headshot_state = HEADSHOT_OVERLAY_HEAVY - damage = 50 - penetration = ARMOR_PENETRATION_TIER_8 - -/* -//====== - Shotgun Ammo -//====== -*/ - -/datum/ammo/bullet/shotgun - headshot_state = HEADSHOT_OVERLAY_HEAVY - -/datum/ammo/bullet/shotgun/slug - name = "shotgun slug" - handful_state = "slug_shell" - - accurate_range = 6 - max_range = 8 - damage = 70 - penetration = ARMOR_PENETRATION_TIER_4 - damage_armor_punch = 2 - handful_state = "slug_shell" - -/datum/ammo/bullet/shotgun/slug/on_hit_mob(mob/M,obj/item/projectile/P) - knockback(M, P, 6) - -/datum/ammo/bullet/shotgun/slug/knockback_effects(mob/living/living_mob, obj/item/projectile/fired_projectile) - if(iscarbonsizexeno(living_mob)) - var/mob/living/carbon/xenomorph/target = living_mob - to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!")) - target.apply_effect(0.5, WEAKEN) - target.apply_effect(1, SUPERSLOW) - target.apply_effect(3, SLOW) - else - if(!isyautja(living_mob)) //Not predators. - living_mob.apply_effect(1, SUPERSLOW) - living_mob.apply_effect(2, SLOW) - to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!")) - living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) - -/datum/ammo/bullet/shotgun/beanbag - name = "beanbag slug" - headshot_state = HEADSHOT_OVERLAY_LIGHT //It's not meant to kill people... but if you put it in your mouth, it will. - handful_state = "beanbag_slug" - icon_state = "beanbag" - flags_ammo_behavior = AMMO_BALLISTIC|AMMO_IGNORE_RESIST - sound_override = 'sound/weapons/gun_shotgun_riot.ogg' - - max_range = 12 - shrapnel_chance = 0 - damage = 0 - stamina_damage = 45 - accuracy = HIT_ACCURACY_TIER_3 - shell_speed = AMMO_SPEED_TIER_3 - handful_state = "beanbag_slug" - -/datum/ammo/bullet/shotgun/beanbag/on_hit_mob(mob/M, obj/item/projectile/P) - if(!M || M == P.firer) return - if(ishuman(M)) - var/mob/living/carbon/human/H = M - shake_camera(H, 2, 1) - - -/datum/ammo/bullet/shotgun/incendiary - name = "incendiary slug" - handful_state = "incendiary_slug" - damage_type = BURN - flags_ammo_behavior = AMMO_BALLISTIC - - accuracy = -HIT_ACCURACY_TIER_2 - max_range = 12 - damage = 55 - penetration= ARMOR_PENETRATION_TIER_1 - handful_state = "incendiary_slug" - -/datum/ammo/bullet/shotgun/incendiary/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - -/datum/ammo/bullet/shotgun/incendiary/on_hit_mob(mob/M,obj/item/projectile/P) - burst(get_turf(M),P,damage_type) - knockback(M,P) - -/datum/ammo/bullet/shotgun/incendiary/on_hit_obj(obj/O,obj/item/projectile/P) - burst(get_turf(P),P,damage_type) - -/datum/ammo/bullet/shotgun/incendiary/on_hit_turf(turf/T,obj/item/projectile/P) - burst(get_turf(T),P,damage_type) - - -/datum/ammo/bullet/shotgun/flechette - name = "flechette shell" - icon_state = "flechette" - handful_state = "flechette_shell" - bonus_projectiles_type = /datum/ammo/bullet/shotgun/flechette_spread - - accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 - accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 - max_range = 12 - damage = 30 - damage_var_low = PROJECTILE_VARIANCE_TIER_8 - damage_var_high = PROJECTILE_VARIANCE_TIER_8 - penetration = ARMOR_PENETRATION_TIER_7 - bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_3 - handful_state = "flechette_shell" - multiple_handful_name = TRUE - -/datum/ammo/bullet/shotgun/flechette_spread - name = "additional flechette" - icon_state = "flechette" - - accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 - accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 - max_range = 12 - damage = 30 - damage_var_low = PROJECTILE_VARIANCE_TIER_8 - damage_var_high = PROJECTILE_VARIANCE_TIER_8 - penetration = ARMOR_PENETRATION_TIER_7 - scatter = SCATTER_AMOUNT_TIER_5 - -/datum/ammo/bullet/shotgun/buckshot - name = "buckshot shell" - icon_state = "buckshot" - handful_state = "buckshot_shell" - multiple_handful_name = TRUE - bonus_projectiles_type = /datum/ammo/bullet/shotgun/spread - - accuracy_var_low = PROJECTILE_VARIANCE_TIER_5 - accuracy_var_high = PROJECTILE_VARIANCE_TIER_5 - accurate_range = 4 - max_range = 4 - damage = 65 - damage_var_low = PROJECTILE_VARIANCE_TIER_8 - damage_var_high = PROJECTILE_VARIANCE_TIER_8 - penetration = ARMOR_PENETRATION_TIER_1 - bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_3 - shell_speed = AMMO_SPEED_TIER_2 - damage_armor_punch = 0 - pen_armor_punch = 0 - handful_state = "buckshot_shell" - multiple_handful_name = TRUE - -/datum/ammo/bullet/shotgun/buckshot/incendiary - name = "incendiary buckshot shell" - handful_state = "incen_buckshot" - handful_type = /obj/item/ammo_magazine/handful/shotgun/buckshot/incendiary - -/datum/ammo/bullet/shotgun/buckshot/incendiary/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - -/datum/ammo/bullet/shotgun/buckshot/on_hit_mob(mob/M,obj/item/projectile/P) - knockback(M,P) - -//buckshot variant only used by the masterkey shotgun attachment. -/datum/ammo/bullet/shotgun/buckshot/masterkey - bonus_projectiles_type = /datum/ammo/bullet/shotgun/spread/masterkey - - damage = 55 - -/datum/ammo/bullet/shotgun/spread - name = "additional buckshot" - icon_state = "buckshot" - - accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 - accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 - accurate_range = 4 - max_range = 6 - damage = 65 - damage_var_low = PROJECTILE_VARIANCE_TIER_8 - damage_var_high = PROJECTILE_VARIANCE_TIER_8 - penetration = ARMOR_PENETRATION_TIER_1 - shell_speed = AMMO_SPEED_TIER_2 - scatter = SCATTER_AMOUNT_TIER_1 - damage_armor_punch = 0 - pen_armor_punch = 0 - -/datum/ammo/bullet/shotgun/spread/masterkey - damage = 20 - -/* - 8 GAUGE SHOTGUN AMMO -*/ - -/datum/ammo/bullet/shotgun/heavy/buckshot - name = "heavy buckshot shell" - icon_state = "buckshot" - handful_state = "heavy_buckshot" - multiple_handful_name = TRUE - bonus_projectiles_type = /datum/ammo/bullet/shotgun/heavy/buckshot/spread - bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_3 - accurate_range = 3 - max_range = 3 - damage = 75 - penetration = 0 - shell_speed = AMMO_SPEED_TIER_2 - damage_armor_punch = 0 - pen_armor_punch = 0 - -/datum/ammo/bullet/shotgun/heavy/buckshot/on_hit_mob(mob/M,obj/item/projectile/P) - knockback(M,P) - -/datum/ammo/bullet/shotgun/heavy/buckshot/spread - name = "additional heavy buckshot" - max_range = 4 - scatter = SCATTER_AMOUNT_TIER_1 - bonus_projectiles_amount = 0 - -//basically the same -/datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath - name = "dragon's breath shell" - handful_state = "heavy_dragonsbreath" - multiple_handful_name = TRUE - damage_type = BURN - damage = 60 - accurate_range = 3 - max_range = 4 - bonus_projectiles_type = /datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath/spread - -/datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - -/datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath/spread - name = "additional dragon's breath" - bonus_projectiles_amount = 0 - accurate_range = 4 - max_range = 5 //make use of the ablaze property - shell_speed = AMMO_SPEED_TIER_4 // so they hit before the main shell stuns - - -/datum/ammo/bullet/shotgun/heavy/slug - name = "heavy shotgun slug" - handful_state = "heavy_slug" - - accurate_range = 7 - max_range = 8 - damage = 90 //ouch. - penetration = ARMOR_PENETRATION_TIER_6 - damage_armor_punch = 2 - -/datum/ammo/bullet/shotgun/heavy/slug/on_hit_mob(mob/M,obj/item/projectile/P) - knockback(M, P, 7) - -/datum/ammo/bullet/shotgun/heavy/slug/knockback_effects(mob/living/living_mob, obj/item/projectile/fired_projectile) - if(iscarbonsizexeno(living_mob)) - var/mob/living/carbon/xenomorph/target = living_mob - to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!")) - target.apply_effect(0.5, WEAKEN) - target.apply_effect(2, SUPERSLOW) - target.apply_effect(5, SLOW) - else - if(!isyautja(living_mob)) //Not predators. - living_mob.apply_effect(1, SUPERSLOW) - living_mob.apply_effect(2, SLOW) - to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!")) - living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) - -/datum/ammo/bullet/shotgun/heavy/beanbag - name = "heavy beanbag slug" - icon_state = "beanbag" - headshot_state = HEADSHOT_OVERLAY_MEDIUM - handful_state = "heavy_beanbag" - flags_ammo_behavior = AMMO_BALLISTIC|AMMO_IGNORE_RESIST - sound_override = 'sound/weapons/gun_shotgun_riot.ogg' - - max_range = 7 - shrapnel_chance = 0 - damage = 0 - stamina_damage = 100 - accuracy = HIT_ACCURACY_TIER_2 - shell_speed = AMMO_SPEED_TIER_2 - -/datum/ammo/bullet/shotgun/heavy/beanbag/on_hit_mob(mob/M, obj/item/projectile/P) - if(!M || M == P.firer) - return - if(ishuman(M)) - var/mob/living/carbon/human/H = M - shake_camera(H, 2, 1) - -/datum/ammo/bullet/shotgun/heavy/flechette - name = "heavy flechette shell" - icon_state = "flechette" - handful_state = "heavy_flechette" - multiple_handful_name = TRUE - bonus_projectiles_type = /datum/ammo/bullet/shotgun/heavy/flechette_spread - - accuracy_var_low = PROJECTILE_VARIANCE_TIER_3 - accuracy_var_high = PROJECTILE_VARIANCE_TIER_3 - max_range = 12 - damage = 45 - damage_var_low = PROJECTILE_VARIANCE_TIER_8 - damage_var_high = PROJECTILE_VARIANCE_TIER_8 - penetration = ARMOR_PENETRATION_TIER_10 - bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_2 - -/datum/ammo/bullet/shotgun/heavy/flechette_spread - name = "additional heavy flechette" - icon_state = "flechette" - accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 - accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 - max_range = 12 - damage = 45 - damage_var_low = PROJECTILE_VARIANCE_TIER_8 - damage_var_high = PROJECTILE_VARIANCE_TIER_8 - penetration = ARMOR_PENETRATION_TIER_10 - scatter = SCATTER_AMOUNT_TIER_4 - -//Enormous shell for Van Bandolier's superheavy double-barreled hunting gun. -/datum/ammo/bullet/shotgun/twobore - name = "two bore bullet" - icon_state = "autocannon" - handful_state = "twobore" - - accurate_range = 8 //Big low-velocity projectile; this is for blasting dangerous game at close range. - max_range = 14 //At this range, it's lost all its damage anyway. - damage = 300 //Hits like a buckshot PB. - penetration = ARMOR_PENETRATION_TIER_3 - damage_falloff = DAMAGE_FALLOFF_TIER_1 * 3 //It has a lot of energy, but the 26mm bullet drops off fast. - effective_range_max = EFFECTIVE_RANGE_MAX_TIER_2 //Full damage up to this distance, then falloff for each tile beyond. - var/hit_messages = list() - -/datum/ammo/bullet/shotgun/twobore/on_hit_mob(mob/living/M, obj/item/projectile/P) - var/mob/shooter = P.firer - if(shooter && ismob(shooter) && HAS_TRAIT(shooter, TRAIT_TWOBORE_TRAINING) && M.stat != DEAD && prob(40)) //Death is handled by periodic life() checks so this should have a chance to fire on a killshot. - if(!length(hit_messages)) //Pick and remove lines, refill on exhaustion. - hit_messages = list("Got you!", "Aha!", "Bullseye!", "It's curtains for you, Sonny Jim!", "Your head will look fantastic on my wall!", "I have you now!", "You miserable coward! Come and fight me like a man!", "Tally ho!") - var/message = pick_n_take(hit_messages) - shooter.say(message) - - if(P.distance_travelled > 8) - knockback(M, P, 12) - - else if(!M || M == P.firer || M.lying) //These checks are included in knockback and would be redundant above. - return - - shake_camera(M, 3, 4) - M.apply_effect(2, WEAKEN) - M.apply_effect(4, SLOW) - if(iscarbonsizexeno(M)) - to_chat(M, SPAN_XENODANGER("The impact knocks you off your feet!")) - else //This will hammer a Yautja as hard as a human. - to_chat(M, SPAN_HIGHDANGER("The impact knocks you off your feet!")) - - step(M, get_dir(P.firer, M)) - -/datum/ammo/bullet/shotgun/twobore/knockback_effects(mob/living/living_mob, obj/item/projectile/fired_projectile) - if(iscarbonsizexeno(living_mob)) - var/mob/living/carbon/xenomorph/target = living_mob - to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!")) - target.apply_effect(0.5, WEAKEN) - target.apply_effect(2, SUPERSLOW) - target.apply_effect(5, SLOW) - else - if(!isyautja(living_mob)) //Not predators. - living_mob.apply_effect(1, SUPERSLOW) - living_mob.apply_effect(2, SLOW) - to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!")) - living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) - -/datum/ammo/bullet/lever_action - name = "lever-action bullet" - - damage = 80 - penetration = 0 - accuracy = HIT_ACCURACY_TIER_1 - shell_speed = AMMO_SPEED_TIER_6 - accurate_range = 14 - handful_state = "lever_action_bullet" - -//unused and not working. need to refactor MD code. Unobtainable. -//intended mechanic is to have xenos hit with it show up very frequently on any MDs around -/datum/ammo/bullet/lever_action/tracker - name = "tracking lever-action bullet" - icon_state = "redbullet" - damage = 70 - penetration = ARMOR_PENETRATION_TIER_3 - accuracy = HIT_ACCURACY_TIER_1 - handful_state = "tracking_lever_action_bullet" - -/datum/ammo/bullet/lever_action/tracker/on_hit_mob(mob/M, obj/item/projectile/P, mob/user) - //SEND_SIGNAL(user, COMSIG_BULLET_TRACKING, user, M) - M.visible_message(SPAN_DANGER("You hear a faint beep under [M]'s [M.mob_size > MOB_SIZE_HUMAN ? "chitin" : "skin"].")) - -/datum/ammo/bullet/lever_action/training - name = "lever-action blank" - icon_state = "blank" - damage = 70 //blanks CAN hurt you if shot very close - penetration = 0 - accuracy = HIT_ACCURACY_TIER_1 - damage_falloff = DAMAGE_FALLOFF_BLANK //not much, though (comparatively) - shell_speed = AMMO_SPEED_TIER_5 - handful_state = "training_lever_action_bullet" - -//unused, and unobtainable... for now -/datum/ammo/bullet/lever_action/marksman - name = "marksman lever-action bullet" - shrapnel_chance = 0 - damage_falloff = 0 - accurate_range = 12 - damage = 70 - penetration = ARMOR_PENETRATION_TIER_6 - shell_speed = AMMO_SPEED_TIER_6 - handful_state = "marksman_lever_action_bullet" - -/datum/ammo/bullet/lever_action/xm88 - name = ".458 SOCOM round" - - damage = 80 - penetration = ARMOR_PENETRATION_TIER_2 - accuracy = HIT_ACCURACY_TIER_1 - shell_speed = AMMO_SPEED_TIER_6 - accurate_range = 14 - handful_state = "boomslang_bullet" - -/datum/ammo/bullet/lever_action/xm88/pen20 - penetration = ARMOR_PENETRATION_TIER_4 - -/datum/ammo/bullet/lever_action/xm88/pen30 - penetration = ARMOR_PENETRATION_TIER_6 - -/datum/ammo/bullet/lever_action/xm88/pen40 - penetration = ARMOR_PENETRATION_TIER_8 - -/datum/ammo/bullet/lever_action/xm88/pen50 - penetration = ARMOR_PENETRATION_TIER_10 - -/* -//====== - Sniper Ammo -//====== -*/ - -/datum/ammo/bullet/sniper - name = "sniper bullet" - headshot_state = HEADSHOT_OVERLAY_HEAVY - damage_falloff = 0 - flags_ammo_behavior = AMMO_BALLISTIC|AMMO_SNIPER|AMMO_IGNORE_COVER - accurate_range_min = 4 - - accuracy = HIT_ACCURACY_TIER_8 - accurate_range = 32 - max_range = 32 - scatter = 0 - damage = 70 - penetration= ARMOR_PENETRATION_TIER_10 - shell_speed = AMMO_SPEED_TIER_6 - damage_falloff = 0 - -/datum/ammo/bullet/sniper/on_hit_mob(mob/M,obj/item/projectile/P) - if((P.projectile_flags & PROJECTILE_BULLSEYE) && M == P.original) - var/mob/living/L = M - L.apply_armoured_damage(damage*2, ARMOR_BULLET, BRUTE, null, penetration) - to_chat(P.firer, SPAN_WARNING("Bullseye!")) - -/datum/ammo/bullet/sniper/incendiary - name = "incendiary sniper bullet" - damage_type = BRUTE - shrapnel_chance = 0 - flags_ammo_behavior = AMMO_BALLISTIC|AMMO_SNIPER|AMMO_IGNORE_COVER - - //Removed accuracy = 0, accuracy_var_high = Variance Tier 6, and scatter = 0. -Kaga - damage = 60 - penetration = ARMOR_PENETRATION_TIER_4 - -/datum/ammo/bullet/sniper/incendiary/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - -/datum/ammo/bullet/sniper/incendiary/on_hit_mob(mob/M,obj/item/projectile/P) - if((P.projectile_flags & PROJECTILE_BULLSEYE) && M == P.original) - var/mob/living/L = M - var/blind_duration = 5 - if(isxeno(M)) - var/mob/living/carbon/xenomorph/target = M - if(target.mob_size >= MOB_SIZE_BIG) - blind_duration = 2 - L.AdjustEyeBlur(blind_duration) - L.adjust_fire_stacks(10) - to_chat(P.firer, SPAN_WARNING("Bullseye!")) - -/datum/ammo/bullet/sniper/flak - name = "flak sniper bullet" - damage_type = BRUTE - flags_ammo_behavior = AMMO_BALLISTIC|AMMO_SNIPER|AMMO_IGNORE_COVER - - accuracy = HIT_ACCURACY_TIER_8 - scatter = SCATTER_AMOUNT_TIER_8 - damage = 55 - damage_var_high = PROJECTILE_VARIANCE_TIER_8 //Documenting old code: This converts to a variance of 96-109% damage. -Kaga - penetration = 0 - -/datum/ammo/bullet/sniper/flak/on_hit_mob(mob/M,obj/item/projectile/P) - if((P.projectile_flags & PROJECTILE_BULLSEYE) && M == P.original) - var/slow_duration = 7 - var/mob/living/L = M - if(isxeno(M)) - var/mob/living/carbon/xenomorph/target = M - if(target.mob_size >= MOB_SIZE_BIG) - slow_duration = 4 - M.adjust_effect(slow_duration, SUPERSLOW) - L.apply_armoured_damage(damage, ARMOR_BULLET, BRUTE, null, penetration) - to_chat(P.firer, SPAN_WARNING("Bullseye!")) - else - burst(get_turf(M),P,damage_type, 2 , 2) - burst(get_turf(M),P,damage_type, 1 , 2 , 0) - -/datum/ammo/bullet/sniper/flak/on_near_target(turf/T, obj/item/projectile/P) - burst(T,P,damage_type, 2 , 2) - burst(T,P,damage_type, 1 , 2, 0) - return 1 - -/datum/ammo/bullet/sniper/crude - name = "crude sniper bullet" - damage = 42 - penetration = ARMOR_PENETRATION_TIER_6 - -/datum/ammo/bullet/sniper/crude/on_hit_mob(mob/M, obj/item/projectile/P) - . = ..() - pushback(M, P, 3) - -/datum/ammo/bullet/sniper/anti_materiel - name = "anti-materiel sniper bullet" - - shrapnel_chance = 0 // This isn't leaving any shrapnel. - accuracy = HIT_ACCURACY_TIER_8 - damage = 125 - shell_speed = AMMO_SPEED_TIER_6 - -/datum/ammo/bullet/sniper/anti_materiel/on_hit_mob(mob/M,obj/item/projectile/P) - if((P.projectile_flags & PROJECTILE_BULLSEYE) && M == P.original) - var/mob/living/L = M - var/size_damage_mod = 0.8 - if(isxeno(M)) - var/mob/living/carbon/xenomorph/target = M - if(target.mob_size >= MOB_SIZE_XENO) - size_damage_mod += 0.6 - if(target.mob_size >= MOB_SIZE_BIG) - size_damage_mod += 0.6 - L.apply_armoured_damage(damage*size_damage_mod, ARMOR_BULLET, BRUTE, null, penetration) - // 180% damage to all targets (225), 240% (300) against non-Runner xenos, and 300% against Big xenos (375). -Kaga - to_chat(P.firer, SPAN_WARNING("Bullseye!")) - -/datum/ammo/bullet/sniper/elite - name = "supersonic sniper bullet" - - shrapnel_chance = 0 // This isn't leaving any shrapnel. - accuracy = HIT_ACCURACY_TIER_8 - damage = 150 - shell_speed = AMMO_SPEED_TIER_6 + AMMO_SPEED_TIER_2 - -/datum/ammo/bullet/sniper/elite/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating) - )) - -/datum/ammo/bullet/sniper/elite/on_hit_mob(mob/M,obj/item/projectile/P) - if((P.projectile_flags & PROJECTILE_BULLSEYE) && M == P.original) - var/mob/living/L = M - var/size_damage_mod = 0.5 - if(isxeno(M)) - var/mob/living/carbon/xenomorph/target = M - if(target.mob_size >= MOB_SIZE_XENO) - size_damage_mod += 0.5 - if(target.mob_size >= MOB_SIZE_BIG) - size_damage_mod += 1 - L.apply_armoured_damage(damage*size_damage_mod, ARMOR_BULLET, BRUTE, null, penetration) - else - L.apply_armoured_damage(damage, ARMOR_BULLET, BRUTE, null, penetration) - // 150% damage to runners (225), 300% against Big xenos (450), and 200% against all others (300). -Kaga - to_chat(P.firer, SPAN_WARNING("Bullseye!")) - -/datum/ammo/bullet/tank/flak - name = "flak autocannon bullet" - icon_state = "autocannon" - damage_falloff = 0 - flags_ammo_behavior = AMMO_BALLISTIC - accurate_range_min = 4 - - accuracy = HIT_ACCURACY_TIER_8 - scatter = 0 - damage = 60 - damage_var_high = PROJECTILE_VARIANCE_TIER_8 - penetration = ARMOR_PENETRATION_TIER_6 - accurate_range = 32 - max_range = 32 - shell_speed = AMMO_SPEED_TIER_6 - -/datum/ammo/bullet/tank/flak/on_hit_mob(mob/M,obj/item/projectile/P) - burst(get_turf(M),P,damage_type, 2 , 3) - burst(get_turf(M),P,damage_type, 1 , 3 , 0) - -/datum/ammo/bullet/tank/flak/on_near_target(turf/T, obj/item/projectile/P) - burst(get_turf(T),P,damage_type, 2 , 3) - burst(get_turf(T),P,damage_type, 1 , 3, 0) - return 1 - -/datum/ammo/bullet/tank/flak/on_hit_obj(obj/O,obj/item/projectile/P) - burst(get_turf(P),P,damage_type, 2 , 3) - burst(get_turf(P),P,damage_type, 1 , 3 , 0) - -/datum/ammo/bullet/tank/flak/on_hit_turf(turf/T,obj/item/projectile/P) - burst(get_turf(T),P,damage_type, 2 , 3) - burst(get_turf(T),P,damage_type, 1 , 3 , 0) - -/datum/ammo/bullet/tank/dualcannon - name = "dualcannon bullet" - icon_state = "autocannon" - damage_falloff = 0 - flags_ammo_behavior = AMMO_BALLISTIC - - accuracy = HIT_ACCURACY_TIER_8 - scatter = 0 - damage = 50 - damage_var_high = PROJECTILE_VARIANCE_TIER_8 - penetration = ARMOR_PENETRATION_TIER_3 - accurate_range = 10 - max_range = 12 - shell_speed = AMMO_SPEED_TIER_5 - -/datum/ammo/bullet/tank/dualcannon/on_hit_mob(mob/M,obj/item/projectile/P) - for(var/mob/living/carbon/L in get_turf(M)) - if(L.stat == CONSCIOUS && L.mob_size <= MOB_SIZE_XENO) - shake_camera(L, 1, 1) - -/datum/ammo/bullet/tank/dualcannon/on_near_target(turf/T, obj/item/projectile/P) - for(var/mob/living/carbon/L in T) - if(L.stat == CONSCIOUS && L.mob_size <= MOB_SIZE_XENO) - shake_camera(L, 1, 1) - return 1 - -/datum/ammo/bullet/tank/dualcannon/on_hit_obj(obj/O,obj/item/projectile/P) - for(var/mob/living/carbon/L in get_turf(O)) - if(L.stat == CONSCIOUS && L.mob_size <= MOB_SIZE_XENO) - shake_camera(L, 1, 1) - -/datum/ammo/bullet/tank/dualcannon/on_hit_turf(turf/T,obj/item/projectile/P) - for(var/mob/living/carbon/L in T) - if(L.stat == CONSCIOUS && L.mob_size <= MOB_SIZE_XENO) - shake_camera(L, 1, 1) - -/* -//====== - Special Ammo -//====== -*/ - -/datum/ammo/bullet/smartgun - name = "smartgun bullet" - icon_state = "redbullet" - flags_ammo_behavior = AMMO_BALLISTIC - - max_range = 12 - accuracy = HIT_ACCURACY_TIER_4 - damage = 30 - penetration = 0 - -/datum/ammo/bullet/smartgun/armor_piercing - name = "armor-piercing smartgun bullet" - icon_state = "bullet" - - accurate_range = 12 - accuracy = HIT_ACCURACY_TIER_2 - damage = 20 - penetration = ARMOR_PENETRATION_TIER_8 - damage_armor_punch = 1 - -/datum/ammo/bullet/smartgun/dirty - name = "irradiated smartgun bullet" - debilitate = list(0,0,0,3,0,0,0,1) - - shrapnel_chance = SHRAPNEL_CHANCE_TIER_7 - accurate_range = 32 - accuracy = HIT_ACCURACY_TIER_3 - damage = 40 - penetration = 0 - -/datum/ammo/bullet/smartgun/dirty/armor_piercing - debilitate = list(0,0,0,3,0,0,0,1) - - accurate_range = 22 - accuracy = HIT_ACCURACY_TIER_3 - damage = 30 - penetration = ARMOR_PENETRATION_TIER_7 - damage_armor_punch = 3 - -/datum/ammo/bullet/smartgun/m56_fpw - name = "\improper M56 FPW bullet" - icon_state = "redbullet" - flags_ammo_behavior = AMMO_BALLISTIC - - max_range = 7 - accuracy = HIT_ACCURACY_TIER_7 - damage = 35 - penetration = ARMOR_PENETRATION_TIER_1 - -/datum/ammo/bullet/turret - name = "autocannon bullet" - icon_state = "redbullet" //Red bullets to indicate friendly fire restriction - flags_ammo_behavior = AMMO_BALLISTIC|AMMO_IGNORE_COVER - - accurate_range = 22 - accuracy_var_low = PROJECTILE_VARIANCE_TIER_8 - accuracy_var_high = PROJECTILE_VARIANCE_TIER_8 - max_range = 22 - damage = 30 - penetration = ARMOR_PENETRATION_TIER_7 - damage_armor_punch = 0 - pen_armor_punch = 0 - shell_speed = 2*AMMO_SPEED_TIER_6 - accuracy = HIT_ACCURACY_TIER_5 - -/datum/ammo/bullet/turret/dumb - icon_state = "bullet" - flags_ammo_behavior = AMMO_BALLISTIC - -/datum/ammo/bullet/machinegun //Adding this for the MG Nests (~Art) - name = "machinegun bullet" - icon_state = "bullet" // Keeping it bog standard with the turret but allows it to be changed - - accurate_range = 12 - damage = 35 - penetration= ARMOR_PENETRATION_TIER_10 //Bumped the penetration to serve a different role from sentries, MGs are a bit more offensive - accuracy = HIT_ACCURACY_TIER_3 - -/datum/ammo/bullet/machinegun/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) - )) - -/datum/ammo/bullet/machinegun/auto // for M2C, automatic variant for M56D, stats for bullet should always be moderately overtuned to fulfill its ultra-offense + flank-push purpose - name = "heavy machinegun bullet" - - accurate_range = 10 - damage = 50 - penetration = ARMOR_PENETRATION_TIER_6 - accuracy = HIT_ACCURACY_TIER_9 + HIT_ACCURACY_TIER_5 // 75 accuracy - shell_speed = AMMO_SPEED_TIER_2 - max_range = 15 - effective_range_max = 7 - damage_falloff = DAMAGE_FALLOFF_TIER_8 - -/datum/ammo/bullet/machinegun/auto/set_bullet_traits() - return - -/datum/ammo/bullet/minigun - name = "minigun bullet" - headshot_state = HEADSHOT_OVERLAY_MEDIUM - - accuracy = -HIT_ACCURACY_TIER_3 - accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 - accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 - accurate_range = 12 - damage = 35 - penetration = ARMOR_PENETRATION_TIER_6 - -/datum/ammo/bullet/minigun/New() - ..() - if(SSticker.mode && MODE_HAS_FLAG(MODE_FACTION_CLASH)) - damage = 15 - else if(SSticker.current_state < GAME_STATE_PLAYING) - RegisterSignal(SSdcs, COMSIG_GLOB_MODE_PRESETUP, PROC_REF(setup_hvh_damage)) - -/datum/ammo/bullet/minigun/proc/setup_hvh_damage() - if(MODE_HAS_FLAG(MODE_FACTION_CLASH)) - damage = 15 - -/datum/ammo/bullet/minigun/tank - accuracy = -HIT_ACCURACY_TIER_1 - accuracy_var_low = PROJECTILE_VARIANCE_TIER_8 - accuracy_var_high = PROJECTILE_VARIANCE_TIER_8 - accurate_range = 12 - -/datum/ammo/bullet/m60 - name = "M60 bullet" - headshot_state = HEADSHOT_OVERLAY_MEDIUM - - accuracy = HIT_ACCURACY_TIER_2 - accuracy_var_low = PROJECTILE_VARIANCE_TIER_8 - accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 - accurate_range = 12 - damage = 45 //7.62x51 is scary - penetration= ARMOR_PENETRATION_TIER_6 - shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 - -/* -//====== - Rocket Ammo -//====== -*/ - -/datum/ammo/rocket - name = "high explosive rocket" - icon_state = "missile" - ping = null //no bounce off. - sound_bounce = "rocket_bounce" - damage_falloff = 0 - flags_ammo_behavior = AMMO_EXPLOSIVE|AMMO_ROCKET|AMMO_STRIKES_SURFACE - var/datum/effect_system/smoke_spread/smoke - - accuracy = HIT_ACCURACY_TIER_2 - accurate_range = 7 - max_range = 7 - damage = 15 - shell_speed = AMMO_SPEED_TIER_2 - -/datum/ammo/rocket/New() - ..() - smoke = new() - -/datum/ammo/rocket/Destroy() - qdel(smoke) - smoke = null - . = ..() - -/datum/ammo/rocket/on_hit_mob(mob/M, obj/item/projectile/P) - cell_explosion(get_turf(M), 150, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - smoke.set_up(1, get_turf(M)) - if(ishuman_strict(M)) // No yautya or synths. Makes humans gib on direct hit. - M.ex_act(350, P.dir, P.weapon_cause_data, 100) - smoke.start() - -/datum/ammo/rocket/on_hit_obj(obj/O, obj/item/projectile/P) - cell_explosion(get_turf(O), 150, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - smoke.set_up(1, get_turf(O)) - smoke.start() - -/datum/ammo/rocket/on_hit_turf(turf/T, obj/item/projectile/P) - cell_explosion(T, 150, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - smoke.set_up(1, T) - smoke.start() - -/datum/ammo/rocket/do_at_max_range(obj/item/projectile/P) - cell_explosion(get_turf(P), 150, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - smoke.set_up(1, get_turf(P)) - smoke.start() - -/datum/ammo/rocket/ap - name = "anti-armor rocket" - damage_falloff = 0 - flags_ammo_behavior = AMMO_EXPLOSIVE|AMMO_ROCKET - - accuracy = HIT_ACCURACY_TIER_8 - accuracy_var_low = PROJECTILE_VARIANCE_TIER_9 - accurate_range = 6 - max_range = 6 - damage = 10 - penetration= ARMOR_PENETRATION_TIER_10 - -/datum/ammo/rocket/ap/on_hit_mob(mob/M, obj/item/projectile/P) - var/turf/T = get_turf(M) - M.ex_act(150, P.dir, P.weapon_cause_data, 100) - M.apply_effect(2, WEAKEN) - M.apply_effect(2, PARALYZE) - if(ishuman_strict(M)) // No yautya or synths. Makes humans gib on direct hit. - M.ex_act(300, P.dir, P.weapon_cause_data, 100) - cell_explosion(T, 100, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - smoke.set_up(1, T) - smoke.start() - -/datum/ammo/rocket/ap/on_hit_obj(obj/O, obj/item/projectile/P) - var/turf/T = get_turf(O) - O.ex_act(150, P.dir, P.weapon_cause_data, 100) - cell_explosion(T, 100, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - smoke.set_up(1, T) - smoke.start() - -/datum/ammo/rocket/ap/on_hit_turf(turf/T, obj/item/projectile/P) - var/hit_something = 0 - for(var/mob/M in T) - M.ex_act(150, P.dir, P.weapon_cause_data, 100) - M.apply_effect(4, WEAKEN) - M.apply_effect(4, PARALYZE) - hit_something = 1 - continue - if(!hit_something) - for(var/obj/O in T) - if(O.density) - O.ex_act(150, P.dir, P.weapon_cause_data, 100) - hit_something = 1 - continue - if(!hit_something) - T.ex_act(150, P.dir, P.weapon_cause_data, 200) - - cell_explosion(T, 100, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - smoke.set_up(1, T) - smoke.start() - -/datum/ammo/rocket/ap/do_at_max_range(obj/item/projectile/P) - var/turf/T = get_turf(P) - var/hit_something = 0 - for(var/mob/M in T) - M.ex_act(250, P.dir, P.weapon_cause_data, 100) - M.apply_effect(2, WEAKEN) - M.apply_effect(2, PARALYZE) - hit_something = 1 - continue - if(!hit_something) - for(var/obj/O in T) - if(O.density) - O.ex_act(250, P.dir, P.weapon_cause_data, 100) - hit_something = 1 - continue - if(!hit_something) - T.ex_act(250, P.dir, P.weapon_cause_data) - cell_explosion(T, 100, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - smoke.set_up(1, T) - smoke.start() - -/datum/ammo/rocket/ap/anti_tank - name = "anti-tank rocket" - damage = 100 - var/vehicle_slowdown_time = 5 SECONDS - shrapnel_chance = 5 - shrapnel_type = /obj/item/large_shrapnel/at_rocket_dud - -/datum/ammo/rocket/ap/anti_tank/on_hit_obj(obj/O, obj/item/projectile/P) - if(istype(O, /obj/vehicle/multitile)) - var/obj/vehicle/multitile/M = O - M.next_move = world.time + vehicle_slowdown_time - playsound(M, 'sound/effects/meteorimpact.ogg', 35) - M.at_munition_interior_explosion_effect(cause_data = create_cause_data("Anti-Tank Rocket")) - M.interior_crash_effect() - var/turf/T = get_turf(M.loc) - M.ex_act(150, P.dir, P.weapon_cause_data, 100) - smoke.set_up(1, T) - smoke.start() - return - return ..() - - -/datum/ammo/rocket/ltb - name = "cannon round" - icon_state = "ltb" - flags_ammo_behavior = AMMO_EXPLOSIVE|AMMO_ROCKET|AMMO_STRIKES_SURFACE - - accuracy = HIT_ACCURACY_TIER_3 - accurate_range = 32 - max_range = 32 - damage = 25 - shell_speed = AMMO_SPEED_TIER_3 - -/datum/ammo/rocket/ltb/on_hit_mob(mob/M, obj/item/projectile/P) - cell_explosion(get_turf(M), 220, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - cell_explosion(get_turf(M), 200, 100, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - -/datum/ammo/rocket/ltb/on_hit_obj(obj/O, obj/item/projectile/P) - cell_explosion(get_turf(O), 220, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - cell_explosion(get_turf(O), 200, 100, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - -/datum/ammo/rocket/ltb/on_hit_turf(turf/T, obj/item/projectile/P) - cell_explosion(get_turf(T), 220, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - cell_explosion(get_turf(T), 200, 100, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - -/datum/ammo/rocket/ltb/do_at_max_range(obj/item/projectile/P) - cell_explosion(get_turf(P), 220, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - cell_explosion(get_turf(P), 200, 100, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - -/datum/ammo/rocket/wp - name = "white phosphorous rocket" - flags_ammo_behavior = AMMO_ROCKET|AMMO_EXPLOSIVE|AMMO_STRIKES_SURFACE - damage_type = BURN - - accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 - accurate_range = 8 - damage = 90 - max_range = 8 - -/datum/ammo/rocket/wp/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - -/datum/ammo/rocket/wp/drop_flame(turf/T, datum/cause_data/cause_data) - playsound(T, 'sound/weapons/gun_flamethrower3.ogg', 75, 1, 7) - if(!istype(T)) return - smoke.set_up(1, T) - smoke.start() - var/datum/reagent/napalm/blue/R = new() - new /obj/flamer_fire(T, cause_data, R, 3) - - var/datum/effect_system/smoke_spread/phosphorus/landingSmoke = new /datum/effect_system/smoke_spread/phosphorus - landingSmoke.set_up(3, 0, T, null, 6, cause_data) - landingSmoke.start() - landingSmoke = null - -/datum/ammo/rocket/wp/on_hit_mob(mob/M, obj/item/projectile/P) - drop_flame(get_turf(M), P.weapon_cause_data) - -/datum/ammo/rocket/wp/on_hit_obj(obj/O, obj/item/projectile/P) - drop_flame(get_turf(O), P.weapon_cause_data) - -/datum/ammo/rocket/wp/on_hit_turf(turf/T, obj/item/projectile/P) - drop_flame(T, P.weapon_cause_data) - -/datum/ammo/rocket/wp/do_at_max_range(obj/item/projectile/P) - drop_flame(get_turf(P), P.weapon_cause_data) - -/datum/ammo/rocket/wp/quad - name = "thermobaric rocket" - flags_ammo_behavior = AMMO_ROCKET|AMMO_STRIKES_SURFACE - - damage = 100 - max_range = 32 - shell_speed = AMMO_SPEED_TIER_3 - -/datum/ammo/rocket/wp/quad/on_hit_mob(mob/M, obj/item/projectile/P) - drop_flame(get_turf(M), P.weapon_cause_data) - explosion(P.loc, -1, 2, 4, 5, , , ,P.weapon_cause_data) - -/datum/ammo/rocket/wp/quad/on_hit_obj(obj/O, obj/item/projectile/P) - drop_flame(get_turf(O), P.weapon_cause_data) - explosion(P.loc, -1, 2, 4, 5, , , ,P.weapon_cause_data) - -/datum/ammo/rocket/wp/quad/on_hit_turf(turf/T, obj/item/projectile/P) - drop_flame(T, P.weapon_cause_data) - explosion(P.loc, -1, 2, 4, 5, , , ,P.weapon_cause_data) - -/datum/ammo/rocket/wp/quad/do_at_max_range(obj/item/projectile/P) - drop_flame(get_turf(P), P.weapon_cause_data) - explosion(P.loc, -1, 2, 4, 5, , , ,P.weapon_cause_data) - -/datum/ammo/rocket/custom - name = "custom rocket" - -/datum/ammo/rocket/custom/proc/prime(atom/A, obj/item/projectile/P) - var/obj/item/weapon/gun/launcher/rocket/launcher = P.shot_from - var/obj/item/ammo_magazine/rocket/custom/rocket = launcher.current_mag - if(rocket.locked && rocket.warhead && rocket.warhead.detonator) - if(rocket.fuel && rocket.fuel.reagents.get_reagent_amount(rocket.fuel_type) >= rocket.fuel_requirement) - rocket.forceMove(P.loc) - rocket.warhead.cause_data = P.weapon_cause_data - rocket.warhead.prime() - qdel(rocket) - smoke.set_up(1, get_turf(A)) - smoke.start() - -/datum/ammo/rocket/custom/on_hit_mob(mob/M, obj/item/projectile/P) - prime(M, P) - -/datum/ammo/rocket/custom/on_hit_obj(obj/O, obj/item/projectile/P) - prime(O, P) - -/datum/ammo/rocket/custom/on_hit_turf(turf/T, obj/item/projectile/P) - prime(T, P) - -/datum/ammo/rocket/custom/do_at_max_range(obj/item/projectile/P) - prime(null, P) - -/* -//====== - Energy Ammo -//====== -*/ - -/datum/ammo/energy - ping = null //no bounce off. We can have one later. - sound_hit = "energy_hit" - sound_miss = "energy_miss" - sound_bounce = "energy_bounce" - - damage_type = BURN - flags_ammo_behavior = AMMO_ENERGY - - accuracy = HIT_ACCURACY_TIER_4 - -/datum/ammo/energy/emitter //Damage is determined in emitter.dm - name = "emitter bolt" - icon_state = "emitter" - flags_ammo_behavior = AMMO_ENERGY|AMMO_IGNORE_ARMOR - - accurate_range = 6 - max_range = 6 - -/datum/ammo/energy/taser - name = "taser bolt" - icon_state = "stun" - damage_type = OXY - flags_ammo_behavior = AMMO_ENERGY|AMMO_IGNORE_RESIST|AMMO_ALWAYS_FF //Not that ignoring will do much right now. - - stamina_damage = 45 - accuracy = HIT_ACCURACY_TIER_8 - shell_speed = AMMO_SPEED_TIER_1 // Slightly faster - hit_effect_color = "#FFFF00" - -/datum/ammo/energy/taser/on_hit_mob(mob/M, obj/item/projectile/P) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - H.disable_special_items() // Disables scout cloak - -/datum/ammo/energy/taser/precise - name = "precise taser bolt" - flags_ammo_behavior = AMMO_ENERGY|AMMO_IGNORE_RESIST|AMMO_MP - -/datum/ammo/energy/rxfm_eva - name = "laser blast" - icon_state = "laser_new" - flags_ammo_behavior = AMMO_LASER - accurate_range = 14 - max_range = 22 - damage = 45 - stamina_damage = 25 //why not - shell_speed = AMMO_SPEED_TIER_3 - -/datum/ammo/energy/rxfm_eva/on_hit_mob(mob/living/M, obj/item/projectile/P) - ..() - if(prob(10)) //small chance for one to ignite on hit - M.fire_act() - -/datum/ammo/energy/laz_uzi - name = "laser bolt" - icon_state = "laser_new" - flags_ammo_behavior = AMMO_ENERGY - damage = 40 - accurate_range = 5 - effective_range_max = 7 - max_range = 10 - shell_speed = AMMO_SPEED_TIER_4 - scatter = SCATTER_AMOUNT_TIER_6 - accuracy = HIT_ACCURACY_TIER_3 - damage_falloff = DAMAGE_FALLOFF_TIER_8 - -/datum/ammo/energy/yautja - headshot_state = HEADSHOT_OVERLAY_MEDIUM - accurate_range = 12 - shell_speed = AMMO_SPEED_TIER_3 - damage_type = BURN - flags_ammo_behavior = AMMO_IGNORE_RESIST - -/datum/ammo/energy/yautja/pistol - name = "plasma pistol bolt" - icon_state = "ion" - - damage = 40 - shell_speed = AMMO_SPEED_TIER_2 - -/datum/ammo/energy/yautja/pistol/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - -/datum/ammo/energy/yautja/caster - name = "root caster bolt" - icon_state = "ion" - -/datum/ammo/energy/yautja/caster/stun - name = "low power stun bolt" - debilitate = list(2,2,0,0,0,1,0,0) - - damage = 0 - flags_ammo_behavior = AMMO_ENERGY|AMMO_IGNORE_RESIST - -/datum/ammo/energy/yautja/caster/bolt - name = "plasma bolt" - icon_state = "pulse1" - flags_ammo_behavior = AMMO_IGNORE_RESIST - shell_speed = AMMO_SPEED_TIER_6 - damage = 35 - -/datum/ammo/energy/yautja/caster/bolt/stun - name = "high power stun bolt" - var/stun_time = 2 - - damage = 0 - flags_ammo_behavior = AMMO_ENERGY|AMMO_IGNORE_RESIST - -/datum/ammo/energy/yautja/caster/bolt/stun/on_hit_mob(mob/M, obj/item/projectile/P) - var/mob/living/carbon/C = M - var/stun_time = src.stun_time - if(istype(C)) - if(isyautja(C) || ispredalien(C)) - return - to_chat(C, SPAN_DANGER("An electric shock ripples through your body, freezing you in place!")) - log_attack("[key_name(C)] was stunned by a high power stun bolt from [key_name(P.firer)] at [get_area(P)]") - - if(ishuman(C)) - var/mob/living/carbon/human/H = C - stun_time++ - H.apply_effect(stun_time, WEAKEN) - else - M.apply_effect(stun_time, WEAKEN) - - C.apply_effect(stun_time, STUN) - ..() - -/datum/ammo/energy/yautja/caster/sphere - name = "plasma eradicator" - icon_state = "bluespace" - flags_ammo_behavior = AMMO_EXPLOSIVE|AMMO_HITS_TARGET_TURF - shell_speed = AMMO_SPEED_TIER_4 - accuracy = HIT_ACCURACY_TIER_8 - - damage = 55 - - accurate_range = 8 - max_range = 8 - - var/vehicle_slowdown_time = 5 SECONDS - -/datum/ammo/energy/yautja/caster/sphere/on_hit_mob(mob/M, obj/item/projectile/P) - cell_explosion(P, 170, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - -/datum/ammo/energy/yautja/caster/sphere/on_hit_turf(turf/T, obj/item/projectile/P) - cell_explosion(P, 170, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - -/datum/ammo/energy/yautja/caster/sphere/on_hit_obj(obj/O, obj/item/projectile/P) - if(istype(O, /obj/vehicle/multitile)) - var/obj/vehicle/multitile/multitile_vehicle = O - multitile_vehicle.next_move = world.time + vehicle_slowdown_time - playsound(multitile_vehicle, 'sound/effects/meteorimpact.ogg', 35) - multitile_vehicle.at_munition_interior_explosion_effect(cause_data = create_cause_data("Plasma Eradicator", P.firer)) - multitile_vehicle.interior_crash_effect() - multitile_vehicle.ex_act(150, P.dir, P.weapon_cause_data, 100) - cell_explosion(get_turf(P), 170, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - -/datum/ammo/energy/yautja/caster/sphere/do_at_max_range(obj/item/projectile/P) - cell_explosion(get_turf(P), 170, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - - -/datum/ammo/energy/yautja/caster/sphere/stun - name = "plasma immobilizer" - damage = 0 - flags_ammo_behavior = AMMO_ENERGY|AMMO_IGNORE_RESIST - accurate_range = 20 - max_range = 20 - - var/stun_range = 4 // Big - var/stun_time = 6 - -/datum/ammo/energy/yautja/caster/sphere/stun/on_hit_mob(mob/M, obj/item/projectile/P) - do_area_stun(P) - -/datum/ammo/energy/yautja/caster/sphere/stun/on_hit_turf(turf/T,obj/item/projectile/P) - do_area_stun(P) - -/datum/ammo/energy/yautja/caster/sphere/stun/on_hit_obj(obj/O,obj/item/projectile/P) - do_area_stun(P) - -/datum/ammo/energy/yautja/caster/sphere/stun/do_at_max_range(obj/item/projectile/P) - do_area_stun(P) - -/datum/ammo/energy/yautja/caster/sphere/stun/proc/do_area_stun(obj/item/projectile/P) - playsound(P, 'sound/weapons/wave.ogg', 75, 1, 25) - for (var/mob/living/carbon/M in view(src.stun_range, get_turf(P))) - var/stun_time = src.stun_time - log_attack("[key_name(M)] was stunned by a plasma immobilizer from [key_name(P.firer)] at [get_area(P)]") - if (isyautja(M)) - stun_time -= 2 - if(ispredalien(M)) - continue - to_chat(M, SPAN_DANGER("A powerful electric shock ripples through your body, freezing you in place!")) - M.apply_effect(stun_time, STUN) - - if (ishuman(M)) - var/mob/living/carbon/human/H = M - H.apply_effect(stun_time, WEAKEN) - else - M.apply_effect(stun_time, WEAKEN) - - - - -/datum/ammo/energy/yautja/rifle/bolt - name = "plasma rifle bolt" - icon_state = "ion" - damage_type = BURN - debilitate = list(0,2,0,0,0,0,0,0) - flags_ammo_behavior = AMMO_IGNORE_RESIST - - damage = 55 - -/datum/ammo/energy/yautja/rifle/blast - name = "plasma shatterer" - icon_state = "bluespace" - damage_type = BURN - - shell_speed = AMMO_SPEED_TIER_4 - damage = 40 - -/datum/ammo/energy/yautja/rifle/blast/on_hit_mob(mob/M, obj/item/projectile/P) - var/L = get_turf(M) - cell_explosion(L, 90, 30, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - ..() - -/datum/ammo/energy/yautja/rifle/blast/on_hit_turf(turf/T, obj/item/projectile/P) - cell_explosion(T, 90, 30, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - ..() - -/datum/ammo/energy/yautja/rifle/blast/on_hit_obj(obj/O, obj/item/projectile/P) - cell_explosion(get_turf(O), 100, 30, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - ..() - -/datum/ammo/energy/yautja/rifle/blast/do_at_max_range(obj/item/projectile/P) - cell_explosion(get_turf(P), 100, 30, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - ..() - - -/* -//====== - Xeno Spits -//====== -*/ -/datum/ammo/xeno - icon_state = "neurotoxin" - ping = "ping_x" - damage_type = TOX - flags_ammo_behavior = AMMO_XENO - - ///used to make cooldown of the different spits vary. - var/added_spit_delay = 0 - var/spit_cost - - /// Should there be a windup for this spit? - var/spit_windup = FALSE - - /// Should there be an additional warning while winding up? (do not put to true if there is not a windup) - var/pre_spit_warn = FALSE - accuracy = HIT_ACCURACY_TIER_8*2 - max_range = 12 - -/datum/ammo/xeno/toxin - name = "neurotoxic spit" - damage_falloff = 0 - flags_ammo_behavior = AMMO_XENO|AMMO_IGNORE_RESIST - spit_cost = 25 - var/effect_power = XENO_NEURO_TIER_4 - var/datum/callback/neuro_callback - - shell_speed = AMMO_SPEED_TIER_3 - max_range = 7 - -/datum/ammo/xeno/toxin/New() - ..() - - neuro_callback = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(apply_neuro)) - -/proc/apply_neuro(mob/M, power, insta_neuro) - if(skillcheck(M, SKILL_ENDURANCE, SKILL_ENDURANCE_MAX) && !insta_neuro) - M.visible_message(SPAN_DANGER("[M] withstands the neurotoxin!")) - return //endurance 5 makes you immune to weak neurotoxin - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.chem_effect_flags & CHEM_EFFECT_RESIST_NEURO || H.species.flags & NO_NEURO) - H.visible_message(SPAN_DANGER("[M] shrugs off the neurotoxin!")) - return //species like zombies or synths are immune to neurotoxin - - if(!isxeno(M)) - if(insta_neuro) - if(M.knocked_down < 3) - M.adjust_effect(1 * power, WEAKEN) - return - - if(ishuman(M)) - M.apply_effect(2.5, SUPERSLOW) - M.visible_message(SPAN_DANGER("[M]'s movements are slowed.")) - - var/no_clothes_neuro = FALSE - - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(!H.wear_suit || H.wear_suit.slowdown == 0) - no_clothes_neuro = TRUE - - if(no_clothes_neuro) - if(M.knocked_down < 5) - M.adjust_effect(1 * power, WEAKEN) // KD them a bit more - M.visible_message(SPAN_DANGER("[M] falls prone.")) - -/proc/apply_scatter_neuro(mob/M) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(skillcheck(M, SKILL_ENDURANCE, SKILL_ENDURANCE_MAX)) - M.visible_message(SPAN_DANGER("[M] withstands the neurotoxin!")) - return //endurance 5 makes you immune to weak neuro - if(H.chem_effect_flags & CHEM_EFFECT_RESIST_NEURO || H.species.flags & NO_NEURO) - H.visible_message(SPAN_DANGER("[M] shrugs off the neurotoxin!")) - return - - if(M.knocked_down < 0.7) // apply knockdown only if current knockdown is less than 0.7 second - M.apply_effect(0.7, WEAKEN) - M.visible_message(SPAN_DANGER("[M] falls prone.")) - -/datum/ammo/xeno/toxin/on_hit_mob(mob/M,obj/item/projectile/P) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.status_flags & XENO_HOST) - neuro_callback.Invoke(H, effect_power, TRUE) - return - - neuro_callback.Invoke(M, effect_power, FALSE) - -/datum/ammo/xeno/toxin/medium //Spitter - name = "neurotoxic spatter" - spit_cost = 50 - effect_power = 1 - - shell_speed = AMMO_SPEED_TIER_3 - -/datum/ammo/xeno/toxin/queen - name = "neurotoxic spit" - spit_cost = 50 - effect_power = 2 - - accuracy = HIT_ACCURACY_TIER_5*2 - max_range = 6 - 1 - -/datum/ammo/xeno/toxin/queen/on_hit_mob(mob/M,obj/item/projectile/P) - neuro_callback.Invoke(M, effect_power, TRUE) - -/datum/ammo/xeno/toxin/shotgun - name = "neurotoxic droplet" - flags_ammo_behavior = AMMO_XENO|AMMO_IGNORE_RESIST - bonus_projectiles_type = /datum/ammo/xeno/toxin/shotgun/additional - - accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 - accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 - accurate_range = 5 - max_range = 5 - scatter = SCATTER_AMOUNT_NEURO - bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_4 - -/datum/ammo/xeno/toxin/shotgun/New() - ..() - - neuro_callback = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(apply_scatter_neuro)) - -/datum/ammo/xeno/toxin/shotgun/additional - name = "additional neurotoxic droplets" - - bonus_projectiles_amount = 0 - -/*proc/neuro_flak(turf/T, obj/item/projectile/P, datum/callback/CB, power, insta_neuro, radius) - if(!T) return FALSE - var/firer = P.firer - var/hit_someone = FALSE - for(var/mob/living/carbon/M in orange(radius,T)) - if(isxeno(M) && isxeno(firer) && M:hivenumber == firer:hivenumber) - continue - - if(HAS_TRAIT(M, TRAIT_NESTED)) - continue - - hit_someone = TRUE - CB.Invoke(M, power, insta_neuro) - - P.play_hit_effect(M) - - return hit_someone - -/datum/ammo/xeno/toxin/burst //sentinel burst - name = "neurotoxic air splash" - effect_power = XENO_NEURO_TIER_1 - spit_cost = 50 - flags_ammo_behavior = AMMO_XENO|AMMO_IGNORE_RESIST - -/datum/ammo/xeno/toxin/burst/on_hit_mob(mob/M, obj/item/projectile/P) - if(isxeno(M) && isxeno(P.firer) && M:hivenumber == P.firer:hivenumber) - neuro_callback.Invoke(M, effect_power*1.5, TRUE) - - neuro_flak(get_turf(M), P, neuro_callback, effect_power, FALSE, 1) - -/datum/ammo/xeno/toxin/burst/on_near_target(turf/T, obj/item/projectile/P) - return neuro_flak(T, P, neuro_callback, effect_power, FALSE, 1) - -/datum/ammo/xeno/sticky - name = "sticky resin spit" - icon_state = "sticky" - ping = null - flags_ammo_behavior = AMMO_SKIPS_ALIENS|AMMO_EXPLOSIVE - added_spit_delay = 5 - spit_cost = 40 - - shell_speed = AMMO_SPEED_TIER_3 - accuracy_var_high = PROJECTILE_VARIANCE_TIER_4 - max_range = 32 - -/datum/ammo/xeno/sticky/on_hit_mob(mob/M,obj/item/projectile/P) - drop_resin(get_turf(P)) - -/datum/ammo/xeno/sticky/on_hit_obj(obj/O,obj/item/projectile/P) - drop_resin(get_turf(P)) - -/datum/ammo/xeno/sticky/on_hit_turf(turf/T,obj/item/projectile/P) - drop_resin(T) - -/datum/ammo/xeno/sticky/do_at_max_range(obj/item/projectile/P) - drop_resin(get_turf(P)) - -/datum/ammo/xeno/sticky/proc/drop_resin(turf/T) - if(T.density) - return - - for(var/obj/O in T.contents) - if(istype(O, /obj/item/clothing/mask/facehugger)) - return - if(istype(O, /obj/effect/alien/egg)) - return - if(istype(O, /obj/structure/mineral_door) || istype(O, /obj/effect/alien/resin) || istype(O, /obj/structure/bed)) - return - if(O.density && !(O.flags_atom & ON_BORDER)) - return - - new /obj/effect/alien/resin/sticky/thin(T) */ - -/datum/ammo/xeno/acid - name = "acid spit" - icon_state = "xeno_acid" - sound_hit = "acid_hit" - sound_bounce = "acid_bounce" - damage_type = BURN - spit_cost = 25 - flags_ammo_behavior = AMMO_ACIDIC|AMMO_XENO - accuracy = HIT_ACCURACY_TIER_5 - damage = 20 - max_range = 8 // 7 will disappear on diagonals. i love shitcode - penetration = ARMOR_PENETRATION_TIER_2 - shell_speed = AMMO_SPEED_TIER_3 - -/datum/ammo/xeno/acid/on_shield_block(mob/M, obj/item/projectile/P) - burst(M,P,damage_type) - -/datum/ammo/xeno/acid/on_hit_mob(mob/M, obj/item/projectile/P) - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(C.status_flags & XENO_HOST && HAS_TRAIT(C, TRAIT_NESTED) || C.stat == DEAD) - return FALSE - ..() - -/datum/ammo/xeno/acid/spatter - name = "acid spatter" - - damage = 30 - max_range = 6 - -/datum/ammo/xeno/acid/spatter/on_hit_mob(mob/M, obj/item/projectile/P) - . = ..() - if(. == FALSE) - return - - new /datum/effects/acid(M, P.firer) - -/datum/ammo/xeno/acid/praetorian - name = "acid splash" - - accuracy = HIT_ACCURACY_TIER_10 + HIT_ACCURACY_TIER_5 - max_range = 8 - damage = 30 - shell_speed = AMMO_SPEED_TIER_2 - added_spit_delay = 0 - -/datum/ammo/xeno/acid/dot - name = "acid spit" - -/datum/ammo/xeno/acid/prae_nade // Used by base prae's acid nade - name = "acid scatter" - - flags_ammo_behavior = AMMO_STOPPED_BY_COVER - accuracy = HIT_ACCURACY_TIER_5 - accurate_range = 32 - max_range = 4 - damage = 25 - shell_speed = AMMO_SPEED_TIER_1 - scatter = SCATTER_AMOUNT_TIER_6 - - apply_delegate = FALSE - -/datum/ammo/xeno/acid/prae_nade/on_hit_mob(mob/M, obj/item/projectile/P) - if (!ishuman(M)) - return - - var/mob/living/carbon/human/H = M - - var/datum/effects/prae_acid_stacks/PAS = null - for (var/datum/effects/prae_acid_stacks/prae_acid_stacks in H.effects_list) - PAS = prae_acid_stacks - break - - if (PAS == null) - PAS = new /datum/effects/prae_acid_stacks(H) - else - PAS.increment_stack_count() - -/*datum/ammo/xeno/prae_skillshot - name = "blob of acid" - icon_state = "boiler_gas2" - ping = "ping_x" - flags_ammo_behavior = AMMO_XENO|AMMO_SKIPS_ALIENS|AMMO_EXPLOSIVE|AMMO_IGNORE_RESIST - - accuracy = HIT_ACCURACY_TIER_5 - accurate_range = 32 - max_range = 8 - damage = 20 - damage_falloff = DAMAGE_FALLOFF_TIER_10 - shell_speed = AMMO_SPEED_TIER_1 - scatter = SCATTER_AMOUNT_TIER_10 - -/datum/ammo/xeno/prae_skillshot/on_hit_mob(mob/M, obj/item/projectile/P) - acid_stacks_aoe(get_turf(P)) - -/datum/ammo/xeno/prae_skillshot/on_hit_obj(obj/O, obj/item/projectile/P) - acid_stacks_aoe(get_turf(P)) - -/datum/ammo/xeno/prae_skillshot/on_hit_turf(turf/T, obj/item/projectile/P) - acid_stacks_aoe(get_turf(P)) - -/datum/ammo/xeno/prae_skillshot/do_at_max_range(obj/item/projectile/P) - acid_stacks_aoe(get_turf(P)) - -/datum/ammo/xeno/prae_skillshot/proc/acid_stacks_aoe(turf/T) - - if (!istype(T)) - return - - for (var/mob/living/carbon/human/H in orange(1, T)) - to_chat(H, SPAN_XENODANGER("You are spattered with acid!")) - animation_flash_color(H) - var/datum/effects/prae_acid_stacks/PAS = null - for (var/datum/effects/prae_acid_stacks/prae_acid_stacks in H.effects_list) - PAS = prae_acid_stacks - break - - if (PAS == null) - PAS = new /datum/effects/prae_acid_stacks(H) - PAS.increment_stack_count() - else - PAS.increment_stack_count() - PAS.increment_stack_count() */ - -/datum/ammo/xeno/boiler_gas - name = "glob of neuro gas" - icon_state = "neuro_glob" - ping = "ping_x" - debilitate = list(2,2,0,1,11,12,1,10) // Stun,knockdown,knockout,irradiate,stutter,eyeblur,drowsy,agony - flags_ammo_behavior = AMMO_SKIPS_ALIENS|AMMO_EXPLOSIVE|AMMO_IGNORE_RESIST|AMMO_HITS_TARGET_TURF|AMMO_ACIDIC - var/datum/effect_system/smoke_spread/smoke_system - spit_cost = 200 - pre_spit_warn = TRUE - spit_windup = 5 SECONDS - accuracy_var_high = PROJECTILE_VARIANCE_TIER_4 - accuracy_var_low = PROJECTILE_VARIANCE_TIER_4 - accuracy = HIT_ACCURACY_TIER_2 - scatter = SCATTER_AMOUNT_TIER_4 - shell_speed = 0.75 - max_range = 16 - /// range on the smoke in tiles from center - var/smokerange = 4 - var/lifetime_mult = 1.0 - -/datum/ammo/xeno/boiler_gas/New() - ..() - set_xeno_smoke() - -/datum/ammo/xeno/boiler_gas/Destroy() - qdel(smoke_system) - smoke_system = null - . = ..() - -/datum/ammo/xeno/boiler_gas/on_hit_mob(mob/moob, obj/item/projectile/proj) - if(iscarbon(moob)) - var/mob/living/carbon/carbon = moob - if(carbon.status_flags & XENO_HOST && HAS_TRAIT(carbon, TRAIT_NESTED) || carbon.stat == DEAD) - return - var/datum/effects/neurotoxin/neuro_effect = locate() in moob.effects_list - if(!neuro_effect) - neuro_effect = new /datum/effects/neurotoxin(moob) - neuro_effect.duration += 5 - moob.apply_effect(3, DAZE) - to_chat(moob, SPAN_HIGHDANGER("Neurotoxic liquid spreads all over you and immediately soaks into your pores and orifices! Oh fuck!")) // Fucked up but have a chance to escape rather than being game-ended - drop_nade(get_turf(proj), proj,TRUE) - -/datum/ammo/xeno/boiler_gas/on_hit_obj(obj/outbacksteakhouse, obj/item/projectile/proj) - drop_nade(get_turf(proj), proj) - -/datum/ammo/xeno/boiler_gas/on_hit_turf(turf/Turf, obj/item/projectile/proj) - if(Turf.density && isturf(proj.loc)) - drop_nade(proj.loc, proj) //we don't want the gas globs to land on dense turfs, they block smoke expansion. - else - drop_nade(Turf, proj) - -/datum/ammo/xeno/boiler_gas/do_at_max_range(obj/item/projectile/proj) - drop_nade(get_turf(proj), proj) - -/datum/ammo/xeno/boiler_gas/proc/set_xeno_smoke(obj/item/projectile/proj) - smoke_system = new /datum/effect_system/smoke_spread/xeno_weaken() - -/datum/ammo/xeno/boiler_gas/proc/drop_nade(turf/turf, obj/item/projectile/proj) - var/lifetime_mult = 1.0 - if(isboiler(proj.firer)) - smoke_system.cause_data = proj.weapon_cause_data - smoke_system.set_up(smokerange, 0, turf) - smoke_system.lifetime = 12 * lifetime_mult - smoke_system.start() - turf.visible_message(SPAN_DANGER("A glob of acid lands with a splat and explodes into noxious fumes!")) - - -/datum/ammo/xeno/boiler_gas/acid - name = "glob of acid gas" - icon_state = "acid_glob" - ping = "ping_x" - accuracy_var_high = PROJECTILE_VARIANCE_TIER_4 - smokerange = 3 - - -/datum/ammo/xeno/boiler_gas/acid/set_xeno_smoke(obj/item/projectile/proj) - smoke_system = new /datum/effect_system/smoke_spread/xeno_acid() - -/datum/ammo/xeno/boiler_gas/acid/on_hit_mob(mob/moob, obj/item/projectile/proj) - if(iscarbon(moob)) - var/mob/living/carbon/carbon = moob - if(carbon.status_flags & XENO_HOST && HAS_TRAIT(carbon, TRAIT_NESTED) || carbon.stat == DEAD) - return - to_chat(moob,SPAN_HIGHDANGER("Acid covers your body! Oh fuck!")) - playsound(moob,"acid_strike",75,1) - INVOKE_ASYNC(moob, TYPE_PROC_REF(/mob, emote), "pain") // why do I need this bullshit - new /datum/effects/acid(moob, proj.firer) - drop_nade(get_turf(proj), proj,TRUE) - -/datum/ammo/xeno/bone_chips - name = "bone chips" - icon_state = "shrapnel_light" - ping = null - flags_ammo_behavior = AMMO_XENO|AMMO_SKIPS_ALIENS|AMMO_STOPPED_BY_COVER|AMMO_IGNORE_ARMOR - damage_type = BRUTE - bonus_projectiles_type = /datum/ammo/xeno/bone_chips/spread - - damage = 5 - max_range = 5 - accuracy = HIT_ACCURACY_TIER_8 - accuracy_var_low = PROJECTILE_VARIANCE_TIER_7 - accuracy_var_high = PROJECTILE_VARIANCE_TIER_7 - bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_7 - shrapnel_type = /obj/item/shard/shrapnel/bone_chips - shrapnel_chance = 60 - -/datum/ammo/xeno/bone_chips/on_hit_mob(mob/M, obj/item/projectile/P) - if(iscarbon(M)) - var/mob/living/carbon/C = M - if((HAS_FLAG(C.status_flags, XENO_HOST) && HAS_TRAIT(C, TRAIT_NESTED)) || C.stat == DEAD) - return - if(ishuman_strict(M) || isxeno(M)) - playsound(M, 'sound/effects/spike_hit.ogg', 25, 1, 1) - if(M.slowed < 8) - M.apply_effect(8, SLOW) - -/datum/ammo/xeno/bone_chips/spread - name = "small bone chips" - - scatter = 30 // We want a wild scatter angle - max_range = 5 - bonus_projectiles_amount = 0 - -/datum/ammo/xeno/bone_chips/spread/short_range - name = "small bone chips" - - max_range = 3 // Very short range - -/datum/ammo/xeno/bone_chips/spread/runner_skillshot - name = "bone chips" - - scatter = 0 - max_range = 5 - damage = 10 - shrapnel_chance = 0 - -/datum/ammo/xeno/bone_chips/spread/runner/on_hit_mob(mob/M, obj/item/projectile/P) - if(iscarbon(M)) - var/mob/living/carbon/C = M - if((HAS_FLAG(C.status_flags, XENO_HOST) && HAS_TRAIT(C, TRAIT_NESTED)) || C.stat == DEAD) - return - if(ishuman_strict(M) || isxeno(M)) - playsound(M, 'sound/effects/spike_hit.ogg', 25, 1, 1) - if(M.slowed < 6) - M.apply_effect(6, SLOW) - -/datum/ammo/xeno/oppressor_tail - name = "tail hook" - icon_state = "none" - ping = null - flags_ammo_behavior = AMMO_XENO|AMMO_SKIPS_ALIENS|AMMO_STOPPED_BY_COVER|AMMO_IGNORE_ARMOR - damage_type = BRUTE - - damage = XENO_DAMAGE_TIER_5 - max_range = 4 - accuracy = HIT_ACCURACY_TIER_MAX - -/datum/ammo/xeno/oppressor_tail/on_bullet_generation(obj/item/projectile/generated_projectile, mob/bullet_generator) - //The projectile has no icon, so the overlay shows up in FRONT of the projectile, and the beam connects to it in the middle. - var/image/hook_overlay = new(icon = 'icons/effects/beam.dmi', icon_state = "oppressor_tail_hook", layer = BELOW_MOB_LAYER) - generated_projectile.overlays += hook_overlay - -/datum/ammo/xeno/oppressor_tail/on_hit_mob(mob/target, obj/item/projectile/fired_proj) - var/mob/living/carbon/xenomorph/xeno_firer = fired_proj.firer - if(xeno_firer.can_not_harm(target)) - return - - shake_camera(target, 5, 0.1 SECONDS) - var/obj/effect/beam/tail_beam = fired_proj.firer.beam(target, "oppressor_tail", 'icons/effects/beam.dmi', 0.5 SECONDS, 5) - var/image/tail_image = image('icons/effects/status_effects.dmi', "hooked") - target.overlays += tail_image - - new /datum/effects/xeno_slow(target, fired_proj.firer, ttl = 0.5 SECONDS) - target.apply_effect(0.5, STUN) - INVOKE_ASYNC(target, TYPE_PROC_REF(/atom/movable, throw_atom), fired_proj.firer, get_dist(fired_proj.firer, target)-1, SPEED_VERY_FAST) - - qdel(tail_beam) - addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/ammo/xeno/oppressor_tail, remove_tail_overlay), target, tail_image), 0.5 SECONDS) //needed so it can actually be seen as it gets deleted too quickly otherwise. - -/datum/ammo/xeno/oppressor_tail/proc/remove_tail_overlay(mob/overlayed_mob, image/tail_image) - overlayed_mob.overlays -= tail_image - -/* -//====== - Shrapnel -//====== -*/ -/datum/ammo/bullet/shrapnel - name = "shrapnel" - icon_state = "buckshot" - accurate_range_min = 5 - flags_ammo_behavior = AMMO_BALLISTIC|AMMO_STOPPED_BY_COVER - - accuracy = HIT_ACCURACY_TIER_3 - accurate_range = 32 - max_range = 8 - damage = 25 - damage_var_low = -PROJECTILE_VARIANCE_TIER_6 - damage_var_high = PROJECTILE_VARIANCE_TIER_6 - penetration = ARMOR_PENETRATION_TIER_4 - shell_speed = AMMO_SPEED_TIER_2 - shrapnel_chance = 5 - -/datum/ammo/bullet/shrapnel/on_hit_obj(obj/O, obj/item/projectile/P) - if(istype(O, /obj/structure/barricade)) - var/obj/structure/barricade/B = O - B.health -= rand(2, 5) - B.update_health(1) - -/datum/ammo/bullet/shrapnel/rubber - name = "rubber pellets" - icon_state = "rubber_pellets" - flags_ammo_behavior = AMMO_STOPPED_BY_COVER - - damage = 0 - stamina_damage = 25 - shrapnel_chance = 0 - - -/datum/ammo/bullet/shrapnel/hornet_rounds - name = ".22 hornet round" - icon_state = "hornet_round" - flags_ammo_behavior = AMMO_BALLISTIC - damage = 20 - shrapnel_chance = 0 - shell_speed = AMMO_SPEED_TIER_3//she fast af boi - penetration = ARMOR_PENETRATION_TIER_5 - -/datum/ammo/bullet/shrapnel/hornet_rounds/on_hit_mob(mob/M, obj/item/projectile/P) - . = ..() - M.AddComponent(/datum/component/bonus_damage_stack, 10, world.time) - -/datum/ammo/bullet/shrapnel/incendiary - name = "flaming shrapnel" - icon_state = "beanbag" // looks suprisingly a lot like flaming shrapnel chunks - flags_ammo_behavior = AMMO_STOPPED_BY_COVER - - shell_speed = AMMO_SPEED_TIER_1 - damage = 20 - penetration = ARMOR_PENETRATION_TIER_4 - -/datum/ammo/bullet/shrapnel/incendiary/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - -/datum/ammo/bullet/shrapnel/metal - name = "metal shrapnel" - icon_state = "shrapnelshot_bit" - flags_ammo_behavior = AMMO_STOPPED_BY_COVER|AMMO_BALLISTIC - shell_speed = AMMO_SPEED_TIER_1 - damage = 30 - shrapnel_chance = 15 - accuracy = HIT_ACCURACY_TIER_8 - penetration = ARMOR_PENETRATION_TIER_4 - -/datum/ammo/bullet/shrapnel/light // weak shrapnel - name = "light shrapnel" - icon_state = "shrapnel_light" - - damage = 10 - penetration = ARMOR_PENETRATION_TIER_1 - shell_speed = AMMO_SPEED_TIER_1 - shrapnel_chance = 0 - -/datum/ammo/bullet/shrapnel/light/human - name = "human bone fragments" - icon_state = "shrapnel_human" - - shrapnel_chance = 50 - shrapnel_type = /obj/item/shard/shrapnel/bone_chips/human - -/datum/ammo/bullet/shrapnel/light/human/var1 // sprite variants - icon_state = "shrapnel_human1" - -/datum/ammo/bullet/shrapnel/light/human/var2 // sprite variants - icon_state = "shrapnel_human2" - -/datum/ammo/bullet/shrapnel/light/xeno - name = "alien bone fragments" - icon_state = "shrapnel_xeno" - - shrapnel_chance = 50 - shrapnel_type = /obj/item/shard/shrapnel/bone_chips/xeno - -/datum/ammo/bullet/shrapnel/spall // weak shrapnel - name = "spall" - icon_state = "shrapnel_light" - - damage = 10 - penetration = ARMOR_PENETRATION_TIER_1 - shell_speed = AMMO_SPEED_TIER_1 - shrapnel_chance = 0 - -/datum/ammo/bullet/shrapnel/light/glass - name = "glass shrapnel" - icon_state = "shrapnel_glass" - -/datum/ammo/bullet/shrapnel/light/effect/ // no damage, but looks bright and neat - name = "sparks" - - damage = 1 // Tickle tickle - -/datum/ammo/bullet/shrapnel/light/effect/ver1 - icon_state = "shrapnel_bright1" - -/datum/ammo/bullet/shrapnel/light/effect/ver2 - icon_state = "shrapnel_bright2" - -/datum/ammo/bullet/shrapnel/jagged - shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 - accuracy = HIT_ACCURACY_TIER_MAX - -/datum/ammo/bullet/shrapnel/jagged/on_hit_mob(mob/M, obj/item/projectile/P) - if(isxeno(M)) - M.apply_effect(0.4, SLOW) - -/* -//======== - CAS 30mm impacters -//======== -*/ -/datum/ammo/bullet/shrapnel/gau //for the GAU to have a impact bullet instead of firecrackers - name = "30mm Multi-Purpose shell" - - damage = 115 //More damaging, but 2x less shells and low AP - penetration = ARMOR_PENETRATION_TIER_2 - accuracy = HIT_ACCURACY_TIER_MAX - max_range = 0 - shrapnel_chance = 100 //the least of your problems - -/datum/ammo/bullet/shrapnel/gau/at - name = "30mm Anti-Tank shell" - - damage = 80 //Standard AP vs standard. (more AP for less damage) - penetration = ARMOR_PENETRATION_TIER_8 - accuracy = HIT_ACCURACY_TIER_MAX -/* -//====== - Misc Ammo -//====== -*/ - -/datum/ammo/alloy_spike - name = "alloy spike" - headshot_state = HEADSHOT_OVERLAY_MEDIUM - ping = "ping_s" - icon_state = "MSpearFlight" - sound_hit = "alloy_hit" - sound_armor = "alloy_armor" - sound_bounce = "alloy_bounce" - - accuracy = HIT_ACCURACY_TIER_8 - accurate_range = 12 - max_range = 12 - damage = 30 - penetration= ARMOR_PENETRATION_TIER_10 - shrapnel_chance = SHRAPNEL_CHANCE_TIER_7 - shrapnel_type = /obj/item/shard/shrapnel - -/datum/ammo/flamethrower - name = "flame" - icon_state = "pulse0" - damage_type = BURN - flags_ammo_behavior = AMMO_IGNORE_ARMOR|AMMO_HITS_TARGET_TURF - - max_range = 6 - damage = 35 - -/datum/ammo/flamethrower/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - -/datum/ammo/flamethrower/on_hit_mob(mob/M, obj/item/projectile/P) - drop_flame(get_turf(M), P.weapon_cause_data) - -/datum/ammo/flamethrower/on_hit_obj(obj/O, obj/item/projectile/P) - drop_flame(get_turf(O), P.weapon_cause_data) - -/datum/ammo/flamethrower/on_hit_turf(turf/T, obj/item/projectile/P) - drop_flame(T, P.weapon_cause_data) - -/datum/ammo/flamethrower/do_at_max_range(obj/item/projectile/P) - drop_flame(get_turf(P), P.weapon_cause_data) - -/datum/ammo/flamethrower/tank_flamer - flamer_reagent_type = /datum/reagent/napalm/blue - -/datum/ammo/flamethrower/sentry_flamer - flags_ammo_behavior = AMMO_IGNORE_ARMOR|AMMO_IGNORE_COVER|AMMO_FLAME - flamer_reagent_type = /datum/reagent/napalm/blue - - accuracy = HIT_ACCURACY_TIER_8 - accurate_range = 6 - max_range = 12 - shell_speed = AMMO_SPEED_TIER_3 - -/datum/ammo/flamethrower/sentry_flamer/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - -/datum/ammo/flamethrower/sentry_flamer/glob - max_range = 14 - accurate_range = 10 - var/datum/effect_system/smoke_spread/phosphorus/smoke - -/datum/ammo/flamethrower/sentry_flamer/glob/New() - . = ..() - smoke = new() - -/datum/ammo/flamethrower/sentry_flamer/glob/drop_flame(turf/T, datum/cause_data/cause_data) - if(!istype(T)) - return - smoke.set_up(1, 0, T, new_cause_data = cause_data) - smoke.start() - -/datum/ammo/flamethrower/sentry_flamer/glob/Destroy() - qdel(smoke) - return ..() - -/datum/ammo/flamethrower/sentry_flamer/mini - name = "normal fire" - -/datum/ammo/flamethrower/sentry_flamer/mini/drop_flame(turf/T, datum/cause_data/cause_data) - if(!istype(T)) - return - var/datum/reagent/napalm/ut/R = new() - R.durationfire = BURN_TIME_INSTANT - new /obj/flamer_fire(T, cause_data, R, 0) - -/datum/ammo/flare - name = "flare" - ping = null //no bounce off. - damage_type = BURN - flags_ammo_behavior = AMMO_HITS_TARGET_TURF - icon_state = "flare" - - damage = 15 - accuracy = HIT_ACCURACY_TIER_3 - max_range = 14 - shell_speed = AMMO_SPEED_TIER_3 - - var/flare_type = /obj/item/device/flashlight/flare/on/gun - handful_type = /obj/item/device/flashlight/flare - -/datum/ammo/flare/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) - )) - -/datum/ammo/flare/on_hit_mob(mob/M,obj/item/projectile/P) - drop_flare(get_turf(M), P, P.firer) - -/datum/ammo/flare/on_hit_obj(obj/O,obj/item/projectile/P) - drop_flare(get_turf(P), P, P.firer) - -/datum/ammo/flare/on_hit_turf(turf/T, obj/item/projectile/P) - if(T.density && isturf(P.loc)) - drop_flare(P.loc, P, P.firer) - else - drop_flare(T, P, P.firer) - -/datum/ammo/flare/do_at_max_range(obj/item/projectile/P, mob/firer) - drop_flare(get_turf(P), P, P.firer) - -/datum/ammo/flare/proc/drop_flare(turf/T, obj/item/projectile/fired_projectile, mob/firer) - var/obj/item/device/flashlight/flare/G = new flare_type(T) - var/matrix/rotation = matrix() - rotation.Turn(fired_projectile.angle - 90) - G.apply_transform(rotation) - G.visible_message(SPAN_WARNING("\A [G] bursts into brilliant light nearby!")) - return G - -/datum/ammo/flare/signal - name = "signal flare" - icon_state = "flare_signal" - flare_type = /obj/item/device/flashlight/flare/signal/gun - handful_type = /obj/item/device/flashlight/flare/signal - -/datum/ammo/flare/signal/drop_flare(turf/T, obj/item/projectile/fired_projectile, mob/firer) - var/obj/item/device/flashlight/flare/signal/gun/signal_flare = ..() - signal_flare.activate_signal(firer) - if(istype(fired_projectile.shot_from, /obj/item/weapon/gun/flare)) - var/obj/item/weapon/gun/flare/flare_gun_fired_from = fired_projectile.shot_from - flare_gun_fired_from.last_signal_flare_name = signal_flare.name - -/datum/ammo/flare/starshell - name = "starshell ash" - icon_state = "starshell_bullet" - max_range = 5 - flare_type = /obj/item/device/flashlight/flare/on/starshell_ash - -/datum/ammo/flare/starshell/set_bullet_traits() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff, /datum/element/bullet_trait_incendiary) - )) - -/datum/ammo/souto - name = "Souto Can" - ping = null //no bounce off. - damage_type = BRUTE - shrapnel_type = /obj/item/reagent_container/food/drinks/cans/souto/classic - flags_ammo_behavior = AMMO_SKIPS_ALIENS|AMMO_IGNORE_ARMOR|AMMO_IGNORE_RESIST|AMMO_BALLISTIC|AMMO_STOPPED_BY_COVER|AMMO_SPECIAL_EMBED - var/obj/item/reagent_container/food/drinks/cans/souto/can_type - icon_state = "souto_classic" - - max_range = 12 - shrapnel_chance = 10 - accuracy = HIT_ACCURACY_TIER_8 + HIT_ACCURACY_TIER_8 - accurate_range = 12 - shell_speed = AMMO_SPEED_TIER_1 - -/datum/ammo/souto/on_embed(mob/embedded_mob, obj/limb/target_organ) - if(ishuman(embedded_mob) && !isyautja(embedded_mob)) - if(istype(target_organ)) - target_organ.embed(new can_type) - -/datum/ammo/souto/on_hit_mob(mob/M, obj/item/projectile/P) - if(!M || M == P.firer) return - if(M.throw_mode && !M.get_active_hand()) //empty active hand and we're in throw mode. If so we catch the can. - if(!M.is_mob_incapacitated()) // People who are not able to catch cannot catch. - if(P.contents.len == 1) - for(var/obj/item/reagent_container/food/drinks/cans/souto/S in P.contents) - M.put_in_active_hand(S) - for(var/mob/O in viewers(world_view_size, P)) //find all people in view. - O.show_message(SPAN_DANGER("[M] catches the [S]!"), SHOW_MESSAGE_VISIBLE) //Tell them the can was caught. - return //Can was caught. - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.species.name == "Human") //no effect on synths or preds. - H.apply_effect(6, STUN) - H.apply_effect(8, WEAKEN) - H.apply_effect(15, DAZE) - H.apply_effect(15, SLOW) - shake_camera(H, 2, 1) - if(P.contents.len) - drop_can(P.loc, P) //We make a can at the location. - -/datum/ammo/souto/on_hit_obj(obj/O,obj/item/projectile/P) - drop_can(P.loc, P) //We make a can at the location. - -/datum/ammo/souto/on_hit_turf(turf/T, obj/item/projectile/P) - drop_can(P.loc, P) //We make a can at the location. - -/datum/ammo/souto/do_at_max_range(obj/item/projectile/P) - drop_can(P.loc, P) //We make a can at the location. - -/datum/ammo/souto/on_shield_block(mob/M, obj/item/projectile/P) - drop_can(P.loc, P) //We make a can at the location. - -/datum/ammo/souto/proc/drop_can(loc, obj/item/projectile/P) - if(P.contents.len) - for(var/obj/item/I in P.contents) - I.forceMove(loc) - randomize_projectile(P) - -/datum/ammo/souto/proc/randomize_projectile(obj/item/projectile/P) - shrapnel_type = pick(typesof(/obj/item/reagent_container/food/drinks/cans/souto)-/obj/item/reagent_container/food/drinks/cans/souto) - -/datum/ammo/grenade_container - name = "grenade shell" - ping = null - damage_type = BRUTE - var/nade_type = /obj/item/explosive/grenade/high_explosive - icon_state = "grenade" - flags_ammo_behavior = AMMO_IGNORE_COVER|AMMO_SKIPS_ALIENS - - damage = 15 - accuracy = HIT_ACCURACY_TIER_3 - max_range = 6 - -/datum/ammo/grenade_container/on_hit_mob(mob/M,obj/item/projectile/P) - drop_nade(P) - -/datum/ammo/grenade_container/on_hit_obj(obj/O,obj/item/projectile/P) - drop_nade(P) - -/datum/ammo/grenade_container/on_hit_turf(turf/T,obj/item/projectile/P) - drop_nade(P) - -/datum/ammo/grenade_container/do_at_max_range(obj/item/projectile/P) - drop_nade(P) - -/datum/ammo/grenade_container/proc/drop_nade(obj/item/projectile/P) - var/turf/T = get_turf(P) - var/obj/item/explosive/grenade/G = new nade_type(T) - G.visible_message(SPAN_WARNING("\A [G] lands on [T]!")) - G.det_time = 10 - G.cause_data = P.weapon_cause_data - G.activate() - -/datum/ammo/grenade_container/rifle - flags_ammo_behavior = NO_FLAGS - -/datum/ammo/grenade_container/smoke - name = "smoke grenade shell" - nade_type = /obj/item/explosive/grenade/smokebomb - icon_state = "smoke_shell" - -/datum/ammo/hugger_container - name = "hugger shell" - ping = null - damage_type = BRUTE - var/hugger_hive = XENO_HIVE_NORMAL - icon_state = "smoke_shell" - - damage = 15 - accuracy = HIT_ACCURACY_TIER_3 - max_range = 6 - -/datum/ammo/hugger_container/on_hit_mob(mob/M,obj/item/projectile/P) - spawn_hugger(get_turf(P)) - -/datum/ammo/hugger_container/on_hit_obj(obj/O,obj/item/projectile/P) - spawn_hugger(get_turf(P)) - -/datum/ammo/hugger_container/on_hit_turf(turf/T,obj/item/projectile/P) - spawn_hugger(get_turf(P)) - -/datum/ammo/hugger_container/do_at_max_range(obj/item/projectile/P) - spawn_hugger(get_turf(P)) - -/datum/ammo/hugger_container/proc/spawn_hugger(turf/T) - var/obj/item/clothing/mask/facehugger/child = new(T) - child.hivenumber = hugger_hive - INVOKE_ASYNC(child, TYPE_PROC_REF(/obj/item/clothing/mask/facehugger, leap_at_nearest_target)) diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 1947f87c574a..a3ba517c0cae 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -18,6 +18,8 @@ They're all essentially identical when it comes to getting the job done. w_class = SIZE_SMALL throw_speed = SPEED_SLOW throw_range = 6 + ground_offset_x = 7 + ground_offset_y = 6 var/default_ammo = /datum/ammo/bullet var/caliber = null // This is used for matching handfuls to each other or whatever the mag is. Examples are" "12g" ".44" ".357" etc. var/current_rounds = -1 //Set this to something else for it not to start with different initial counts. @@ -50,8 +52,7 @@ They're all essentially identical when it comes to getting the job done. if(0) icon_state += "_e" //In case it spawns empty instead. item_state += "_e" - pixel_y = rand(-6, 6) - pixel_x = rand(-7, 7) + if(ammo_band_color && ammo_band_icon) update_ammo_band() @@ -116,14 +117,17 @@ They're all essentially identical when it comes to getting the job done. /obj/item/ammo_magazine/attackby(obj/item/I, mob/living/user, bypass_hold_check = 0) if(istype(I, /obj/item/ammo_magazine)) var/obj/item/ammo_magazine/MG = I - if(MG.flags_magazine & AMMUNITION_HANDFUL) //got a handful of bullets + if((MG.flags_magazine & AMMUNITION_HANDFUL) || (MG.flags_magazine & AMMUNITION_SLAP_TRANSFER)) //got a handful of bullets if(flags_magazine & AMMUNITION_REFILLABLE) //and a refillable magazine var/obj/item/ammo_magazine/handful/transfer_from = I if(src == user.get_inactive_hand() || bypass_hold_check) //It has to be held. if(default_ammo == transfer_from.default_ammo) - transfer_ammo(transfer_from,user,transfer_from.current_rounds) // This takes care of the rest. - else to_chat(user, "Those aren't the same rounds. Better not mix them up.") - else to_chat(user, "Try holding [src] before you attempt to restock it.") + if(transfer_ammo(transfer_from,user,transfer_from.current_rounds)) // This takes care of the rest. + to_chat(user, SPAN_NOTICE("You transfer rounds to [src] from [transfer_from].")) + else + to_chat(user, SPAN_NOTICE("Those aren't the same rounds. Better not mix them up.")) + else + to_chat(user, SPAN_NOTICE("Try holding [src] before you attempt to restock it.")) //Generic proc to transfer ammo between ammo mags. Can work for anything, mags, handfuls, etc. /obj/item/ammo_magazine/proc/transfer_ammo(obj/item/ammo_magazine/source, mob/user, transfer_amount = 1) @@ -195,7 +199,7 @@ They're all essentially identical when it comes to getting the job done. var/severity = round(current_rounds / 50) //the more ammo inside, the faster and harder it cooks off if(severity > 0) - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(explosion), loc, -1, ((severity > 4) ? 0 : -1), Clamp(severity, 0, 1), Clamp(severity, 0, 2), 1, 0, 0, flame_cause_data), max(5 - severity, 2)) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(explosion), loc, -1, ((severity > 4) ? 0 : -1), clamp(severity, 0, 1), clamp(severity, 0, 2), 1, 0, 0, flame_cause_data), max(5 - severity, 2)) if(!QDELETED(src)) qdel(src) diff --git a/code/modules/projectiles/full_auto.dm b/code/modules/projectiles/full_auto.dm deleted file mode 100644 index ad3e037b68e6..000000000000 --- a/code/modules/projectiles/full_auto.dm +++ /dev/null @@ -1,129 +0,0 @@ -/obj/item/weapon/gun/proc/full_auto_start(client/source, atom/A, params) - SIGNAL_HANDLER - if(!ismob(loc) || !A) - return - var/mob/user = loc - - // No FA with mods - if(params["shift"] || params["ctrl"] || params["alt"]) - return - - // No shooting the 4th wall - if(istype(A, /atom/movable/screen)) - return - - // No FA on attachables - if(active_attachable) - return - - if(user.get_active_hand() != src) - return - - if(user.throw_mode) - return - - // Don't open fire on adjacent targets. Let normal attack code handle this - if(A.Adjacent(user) && user.a_intent != INTENT_HARM) - return - - if(user.client?.prefs?.toggle_prefs & TOGGLE_HELP_INTENT_SAFETY && (user.a_intent == INTENT_HELP)) - if(world.time % 3) // Limits how often this message pops up, saw this somewhere else and thought it was clever - to_chat(user, SPAN_NOTICE("You consider shooting at [A], but do not follow through.")) - return - - fa_firing = TRUE - fa_shots = 0 - fa_target = A - fa_params = params - - // Ward off spamclickin fellas - if(world.time < last_fired + fa_delay) - if(world.time % 3) // Limits how often this message pops up, saw this somewhere else and it's fucking stupid - to_chat(user, SPAN_WARNING("[src] is not ready to fire again!")) - return - - // Kick off the full-auto - INVOKE_ASYNC(src, PROC_REF(repeat_fire), user) - -/obj/item/weapon/gun/proc/full_auto_stop(client/source, atom/A, params) - SIGNAL_HANDLER - fa_target = null - fa_params = null - -/obj/item/weapon/gun/proc/full_auto_new_target(client/source, atom/start, atom/hovered, params) - SIGNAL_HANDLER - if(!ismob(loc)) - return - var/mob/user = loc - - if(istype(hovered, /atom/movable/screen)) - return - - if(get_turf(hovered) == get_turf(user)) - return - - fa_target = hovered - fa_params = params2list(params) - -/obj/item/weapon/gun/proc/repeat_fire(mob/user) - if(!fa_target) - return - - // fun is ended - if(active_attachable) - return - - // fun's over - if(!in_chamber && !current_mag) - click_empty(user) - return - - // fun's also over - if(!user.canmove || user.stat || user.is_mob_restrained() || !user.loc || !isturf(user.loc)) - return - - // you abandoned the f u n - if(user.get_active_hand() != src || loc != user) - return - - if(user.throw_mode) - return - - user.face_atom(fa_target) - Fire(fa_target, user, fa_params) - - addtimer(CALLBACK(src, PROC_REF(repeat_fire), user), fa_delay) - -// Make sure we're not trying to start full auto when the gun isn't even held by anyone -/obj/item/weapon/gun/dropped(mob/user) - ..() - - if(!user.client) - return - - UnregisterSignal(user.client, list( - COMSIG_CLIENT_LMB_DOWN, - COMSIG_CLIENT_LMB_UP, - COMSIG_CLIENT_LMB_DRAG, - )) - -// Also make sure it's registered when held in any hand and full-auto is on -/obj/item/weapon/gun/equipped(mob/user, slot) - ..() - - if(!user.client) - return - - // If it was equipped to anything but the hands, make sure we're not registered - if(slot != WEAR_R_HAND && slot != WEAR_L_HAND) - UnregisterSignal(user.client, list( - COMSIG_CLIENT_LMB_DOWN, - COMSIG_CLIENT_LMB_UP, - COMSIG_CLIENT_LMB_DRAG, - )) - return - - if(flags_gun_features & GUN_FULL_AUTO_ON) - RegisterSignal(user.client, COMSIG_CLIENT_LMB_DOWN, PROC_REF(full_auto_start)) - RegisterSignal(user.client, COMSIG_CLIENT_LMB_UP, PROC_REF(full_auto_stop)) - RegisterSignal(user.client, COMSIG_CLIENT_LMB_DRAG, PROC_REF(full_auto_new_target)) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 5528755cf87c..3f7533f26620 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -25,6 +25,7 @@ ) flags_atom = FPRINT|CONDUCT flags_item = TWOHANDED + light_system = DIRECTIONAL_LIGHT var/accepted_ammo = list() ///Determines what kind of bullet is created when the gun is unloaded - used to match rounds to magazines. Set automatically when reloading. @@ -53,7 +54,7 @@ Ammo will be replaced on New() for things that do not use mags.**/ var/datum/ammo/ammo = null ///What is currently in the chamber. Most guns will want something in the chamber upon creation. - var/obj/item/projectile/in_chamber = null + var/obj/projectile/in_chamber = null /*Ammo mags may or may not be internal, though the difference is a few additional variables. If they are not internal, don't call on those unique vars. This is done for quicker pathing. Just keep in mind most mags aren't internal, though some are. This is also the default magazine path loaded into a projectile weapon for reverse lookups on New(). Leave this null to do your own thing.*/ @@ -92,8 +93,8 @@ ///Multiplier. Increased and decreased through attachments. Multiplies the accuracy/scatter penalty of the projectile when firing onehanded while moving. var/movement_onehanded_acc_penalty_mult = 5 //Multiplier. Increased and decreased through attachments. Multiplies the accuracy/scatter penalty of the projectile when firing onehanded while moving. - ///For regular shots, how long to wait before firing again. - var/fire_delay = 0 + ///For regular shots, how long to wait before firing again. Use modify_fire_delay and set_fire_delay instead of modifying this on the fly + VAR_PROTECTED/fire_delay = 0 ///When it was last fired, related to world.time. var/last_fired = 0 @@ -112,10 +113,10 @@ var/delay_style = WEAPON_DELAY_SCATTER_AND_ACCURACY //Burst fire. - ///How many shots can the weapon shoot in burst? Anything less than 2 and you cannot toggle burst. - var/burst_amount = 1 - ///The delay in between shots. Lower = less delay = faster. - var/burst_delay = 1 + ///How many shots can the weapon shoot in burst? Anything less than 2 and you cannot toggle burst. Use modify_burst_amount and set_burst_amount instead of modifying this + VAR_PROTECTED/burst_amount = 1 + ///The delay in between shots. Lower = less delay = faster. Use modify_burst_delay and set_burst_delay instead of modifying this + VAR_PROTECTED/burst_delay = 1 ///When burst-firing, this number is extra time before the weapon can fire again. Depends on number of rounds fired. var/extra_delay = 0 ///When PB burst firing and handing off to /fire after a target moves out of range, this is how many bullets have been fired. @@ -124,22 +125,13 @@ // Full auto ///Whether or not the gun is firing full-auto var/fa_firing = FALSE - ///How many shots have been fired using full-auto. Used to figure out scatter - var/fa_shots = 0 ///How many full-auto shots to get to max scatter? - var/fa_scatter_peak = 8 + var/fa_scatter_peak = 4 ///How bad does the scatter get on full auto? - var/fa_max_scatter = 5 - ///The delay when firing full-auto - var/fa_delay = 2.5 - ///The atom we're shooting at while full-autoing - var/atom/fa_target = null + var/fa_max_scatter = 6.5 ///Click parameters to use when firing full-auto var/fa_params = null - //Targeting. - ///List of who yer targeting. - var/tmp/list/mob/living/target ///Used to fire faster at more than one person. var/tmp/mob/living/last_moved_mob var/tmp/lock_time = -100 @@ -223,6 +215,25 @@ // Set to TRUE or FALSE, it overrides the is_civilian_usable check with its value. Does nothing if null. var/civilian_usable_override = null + ///Current selected firemode of the gun. + var/gun_firemode = GUN_FIREMODE_SEMIAUTO + ///List of allowed firemodes. + var/list/gun_firemode_list = list() + ///How many bullets the gun fired while bursting/auto firing + var/shots_fired = 0 + /// Currently selected target to fire at. Set with set_target() + VAR_PRIVATE/atom/target + /// Current user (holding) of the gun. Set with set_gun_user() + VAR_PRIVATE/mob/gun_user + /// If this gun should spawn with semi-automatic fire. Protected due to it never needing to be edited. + VAR_PROTECTED/start_semiauto = TRUE + /// If this gun should spawn with automatic fire. Protected due to it never needing to be edited. + VAR_PROTECTED/start_automatic = FALSE + /// The type of projectile that this gun should shoot + var/projectile_type = /obj/projectile + /// The multiplier for how much slower this should fire in automatic mode. 1 is normal, 1.2 is 20% slower, 2 is 100% slower, etc. Protected due to it never needing to be edited. + VAR_PROTECTED/autofire_slow_mult = 1 + /** * An assoc list where the keys are fire delay group string defines @@ -253,11 +264,13 @@ else current_mag = new current_mag(src, spawn_empty? 1:0) replace_ammo(null, current_mag) - else ammo = GLOB.ammo_list[ammo] //If they don't have a mag, they fire off their own thing. + else + ammo = GLOB.ammo_list[ammo] //If they don't have a mag, they fire off their own thing. set_gun_attachment_offsets() set_gun_config_values() set_bullet_traits() + setup_firemodes() update_force_list() //This gives the gun some unique attack verbs for attacking. handle_starting_attachment() handle_random_attachments() @@ -265,6 +278,8 @@ if(auto_retrieval_slot) AddElement(/datum/element/drop_retrieval/gun, auto_retrieval_slot) update_icon() //for things like magazine overlays + gun_firemode = gun_firemode_list[1] || GUN_FIREMODE_SEMIAUTO + AddComponent(/datum/component/automatedfire/autofire, fire_delay, burst_delay, burst_amount, gun_firemode, autofire_slow_mult, CALLBACK(src, PROC_REF(set_bursting)), CALLBACK(src, PROC_REF(reset_fire)), CALLBACK(src, PROC_REF(fire_wrapper)), CALLBACK(src, PROC_REF(display_ammo)), CALLBACK(src, PROC_REF(set_auto_firing))) //This should go after handle_starting_attachment() and setup_firemodes() to get the proper values set. /obj/item/weapon/gun/proc/set_gun_attachment_offsets() attachable_offset = null @@ -272,24 +287,16 @@ /obj/item/weapon/gun/Destroy() in_chamber = null ammo = null - current_mag = null + QDEL_NULL(current_mag) target = null last_moved_mob = null if(flags_gun_features & GUN_FLASHLIGHT_ON)//Handle flashlight. flags_gun_features &= ~GUN_FLASHLIGHT_ON - if(ismob(loc)) - for(var/slot in attachments) - var/obj/item/attachable/potential_attachment = attachments[slot] - if(!potential_attachment) - continue - loc.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) attachments = null attachable_overlays = null QDEL_NULL(active_attachable) - fa_target = null GLOB.gun_list -= src + set_gun_user(null) . = ..() /* @@ -299,16 +306,17 @@ * This makes reading each gun's values MUCH easier. */ /obj/item/weapon/gun/proc/set_gun_config_values() - fire_delay = FIRE_DELAY_TIER_5 + set_fire_delay(FIRE_DELAY_TIER_5) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_6 burst_scatter_mult = SCATTER_AMOUNT_TIER_7 - burst_amount = BURST_AMOUNT_TIER_1 + set_burst_amount(BURST_AMOUNT_TIER_1) scatter_unwielded = SCATTER_AMOUNT_TIER_6 damage_mult = BASE_BULLET_DAMAGE_MULT damage_falloff_mult = DAMAGE_FALLOFF_TIER_10 damage_buildup_mult = DAMAGE_BUILDUP_TIER_1 + velocity_add = BASE_VELOCITY_BONUS recoil = RECOIL_OFF recoil_unwielded = RECOIL_OFF movement_onehanded_acc_penalty_mult = MOVEMENT_ACCURACY_PENALTY_MULT_TIER_1 @@ -377,8 +385,9 @@ //Add attachment bonuses for(var/slot in attachments) var/obj/item/attachable/R = attachments[slot] - if(!R) continue - fire_delay += R.delay_mod + if(!R) + continue + modify_fire_delay(R.delay_mod) accuracy_mult += R.accuracy_mod accuracy_mult_unwielded += R.accuracy_unwielded_mod scatter += R.scatter_mod @@ -391,7 +400,7 @@ effective_range_max += R.range_max_mod recoil += R.recoil_mod burst_scatter_mult += R.burst_scatter_mod - burst_amount += R.burst_mod + modify_burst_amount(R.burst_mod) recoil_unwielded += R.recoil_unwielded_mod aim_slowdown += R.aim_speed_mod wield_delay += R.wield_delay_mod @@ -413,6 +422,10 @@ else if(M.r_hand == src) M.update_inv_r_hand() + setup_firemodes() + + SEND_SIGNAL(src, COMSIG_GUN_RECALCULATE_ATTACHMENT_BONUSES) + /obj/item/weapon/gun/proc/handle_random_attachments() var/attachmentchoice @@ -467,20 +480,53 @@ /obj/item/weapon/gun/emp_act(severity) + . = ..() for(var/obj/O in contents) O.emp_act(severity) -/obj/item/weapon/gun/equipped(mob/user, slot) +/* +Note: pickup and dropped on weapons must have both the ..() to update zoom AND twohanded, +As sniper rifles have both and weapon mods can change them as well. ..() deals with zoom only. +*/ +/obj/item/weapon/gun/equipped(mob/living/user, slot) if(flags_item & NODROP) return unwield(user) pull_time = world.time + wield_delay - if(user.dazed) + if(HAS_TRAIT(user, TRAIT_DAZED)) pull_time += 3 guaranteed_delay_time = world.time + WEAPON_GUARANTEED_DELAY + var/delay_left = (last_fired + fire_delay + additional_fire_group_delay) - world.time + if(fire_delay_group && delay_left > 0) + LAZYSET(user.fire_delay_next_fire, src, world.time + delay_left) + + if(slot in list(WEAR_L_HAND, WEAR_R_HAND)) + set_gun_user(user) + if(HAS_TRAIT_FROM_ONLY(src, TRAIT_GUN_LIGHT_DEACTIVATED, user)) + force_light(on = TRUE) + REMOVE_TRAIT(src, TRAIT_GUN_LIGHT_DEACTIVATED, user) + else + set_gun_user(null) + force_light(on = FALSE) + ADD_TRAIT(src, TRAIT_GUN_LIGHT_DEACTIVATED, user) + return ..() +/obj/item/weapon/gun/dropped(mob/user) + . = ..() + + var/delay_left = (last_fired + fire_delay + additional_fire_group_delay) - world.time + if(fire_delay_group && delay_left > 0) + LAZYSET(user.fire_delay_next_fire, src, world.time + delay_left) + + for(var/obj/item/attachable/stock/smg/collapsible/brace/current_stock in contents) //SMG armbrace folds to stop it getting stuck on people + if(current_stock.stock_activated) + current_stock.activate_attachment(src, user, turn_off = TRUE) + + unwield(user) + set_gun_user(null) + /obj/item/weapon/gun/update_icon() if(overlays) overlays.Cut() @@ -577,7 +623,7 @@ if(in_chamber && in_chamber.ammo) in_ammo = in_chamber.ammo else if(current_mag && current_mag.current_rounds > 0) - if(istype(current_mag) && current_mag.chamber_contents[current_mag.chamber_position] != "empty") + if(istype(current_mag) && length(current_mag.chamber_contents) && current_mag.chamber_contents[current_mag.chamber_position] != "empty") in_ammo = GLOB.ammo_list[current_mag.chamber_contents[current_mag.chamber_position]] if(!istype(in_ammo)) in_ammo = GLOB.ammo_list[current_mag.default_ammo] @@ -617,11 +663,7 @@ // weapon info - data["icon"] = SSassets.transport.get_asset_url("no_name.png") - - if(SSassets.cache["[base_gun_icon].png"]) - data["icon"] = SSassets.transport.get_asset_url("[base_gun_icon].png") - + data["icon"] = base_gun_icon data["name"] = name data["desc"] = desc data["two_handed_only"] = (flags_gun_features & GUN_WIELDED_FIRING_ONLY) @@ -666,7 +708,7 @@ data["recoil_max"] = RECOIL_AMOUNT_TIER_1 data["scatter_max"] = SCATTER_AMOUNT_TIER_1 - data["firerate_max"] = 1 MINUTES / FIRE_DELAY_TIER_10 + data["firerate_max"] = 1 MINUTES / FIRE_DELAY_TIER_12 data["damage_max"] = 100 data["accuracy_max"] = 32 data["range_max"] = 32 @@ -674,19 +716,19 @@ data["penetration_max"] = ARMOR_PENETRATION_TIER_10 data["punch_max"] = 5 data["glob_armourbreak"] = GLOB.xeno_general.armor_ignore_integrity - data["automatic"] = flags_gun_features & GUN_HAS_FULL_AUTO - data["auto_only"] = flags_gun_features & GUN_FULL_AUTO_ONLY + data["automatic"] = (GUN_FIREMODE_AUTOMATIC in gun_firemode_list) + data["auto_only"] = ((length(gun_firemode_list) == 1) && (GUN_FIREMODE_AUTOMATIC in gun_firemode_list)) return data /obj/item/weapon/gun/ui_assets(mob/user) . = ..() || list() - . += get_asset_datum(/datum/asset/simple/firemodes) - //. += get_asset_datum(/datum/asset/spritesheet/gun_lineart) + . += get_asset_datum(/datum/asset/spritesheet/gun_lineart_modes) + . += get_asset_datum(/datum/asset/spritesheet/gun_lineart) // END TGUI \\ -/obj/item/weapon/gun/wield(mob/user) +/obj/item/weapon/gun/wield(mob/living/user) if(!(flags_item & TWOHANDED) || flags_item & WIELDED) return @@ -713,7 +755,7 @@ slowdown = initial(slowdown) + aim_slowdown place_offhand(user, initial(name)) wield_time = world.time + wield_delay - if(user.dazed) + if(HAS_TRAIT(user, TRAIT_DAZED)) wield_time += 5 guaranteed_delay_time = world.time + WEAPON_GUARANTEED_DELAY //slower or faster wield delay depending on skill. @@ -723,14 +765,10 @@ else wield_time -= 2*user.skills.get_skill_level(SKILL_FIREARMS) - if(flags_gun_features & GUN_FULL_AUTO_ON) - ADD_TRAIT(user, TRAIT_OVERRIDE_CLICKDRAG, TRAIT_SOURCE_WEAPON) - return 1 /obj/item/weapon/gun/unwield(mob/user) . = ..() - REMOVE_TRAIT(user, TRAIT_OVERRIDE_CLICKDRAG, TRAIT_SOURCE_WEAPON) if(.) slowdown = initial(slowdown) @@ -801,6 +839,7 @@ User can be passed as null, (a gun reloading itself for instance), so we need to to_chat(user, SPAN_WARNING("Your reload was interrupted!")) return replace_magazine(user, magazine) + SEND_SIGNAL(user, COMSIG_MOB_RELOADED_GUN, src) else current_mag = magazine magazine.forceMove(src) @@ -891,33 +930,6 @@ User can be passed as null, (a gun reloading itself for instance), so we need to // \\ //---------------------------------------------------------- -/obj/item/weapon/gun/afterattack(atom/A, mob/living/user, flag, params) - if(active_attachable && (active_attachable.flags_attach_features & ATTACH_MELEE)) //this is expected to do something in melee. - active_attachable.fire_attachment(A, src, user) - return TRUE - if(flag) - return FALSE //It's adjacent, is the user, or is on the user's person - if(!istype(A)) - return FALSE - // If firing full-auto, the firing starts when the mouse is clicked, not when it's released - // so the gun should already be shooting - if(fa_firing) - fa_firing = FALSE - return TRUE - if(flags_gun_features & GUN_BURST_FIRING) - return FALSE - if(!user || !user.client || !user.client.prefs) - return FALSE - else if(user.client?.prefs?.toggle_prefs & TOGGLE_HELP_INTENT_SAFETY && (user.a_intent == INTENT_HELP)) - if (world.time % 3) // Limits how often this message pops up, saw this somewhere else and thought it was clever - //Absolutely SCREAM this at people so they don't get killed by it - to_chat(user, SPAN_HIGHDANGER("Help intent safety is on! Switch to another intent to fire your weapon.")) - click_empty(user) - return FALSE - else - Fire(A,user,params) //Otherwise, fire normally. - return TRUE - /** load_into_chamber(), reload_into_chamber(), and clear_jam() do all of the heavy lifting. If you need to change up how a gun fires, just change these procs for that subtype @@ -931,9 +943,13 @@ and you're good to go. //Let's check on the active attachable. It loads ammo on the go, so it never chambers anything if(active_attachable) + if(shots_fired >= 1) // This is what you'll want to remove if you want automatic underbarrel guns in the future + SEND_SIGNAL(src, COMSIG_GUN_INTERRUPT_FIRE) + return + if(active_attachable.current_rounds > 0) //If it's still got ammo and stuff. active_attachable.current_rounds-- - var/obj/item/projectile/bullet = create_bullet(active_attachable.ammo, initial(name)) + var/obj/projectile/bullet = create_bullet(active_attachable.ammo, initial(name)) // For now, only bullet traits from the attachment itself will apply to its projectiles for(var/entry in active_attachable.traits_to_give_attached) var/list/L @@ -953,7 +969,7 @@ and you're good to go. else return ready_in_chamber()//We're not using the active attachable, we must use the active mag if there is one. -/obj/item/weapon/gun/proc/apply_traits(obj/item/projectile/P) +/obj/item/weapon/gun/proc/apply_traits(obj/projectile/P) // Apply bullet traits from gun for(var/entry in traits_to_give) var/list/L @@ -1000,7 +1016,7 @@ and you're good to go. if(isliving(loc)) var/mob/M = loc weapon_source_mob = M - var/obj/item/projectile/P = new /obj/item/projectile(src, create_cause_data(bullet_source, weapon_source_mob)) + var/obj/projectile/P = new projectile_type(src, create_cause_data(bullet_source, weapon_source_mob)) P.generate_bullet(chambered, 0, NO_FLAGS) return P @@ -1029,19 +1045,20 @@ and you're good to go. user.swap_hand() unload(user, TRUE, drop_to_ground) // We want to quickly autoeject the magazine. This proc does the rest based on magazine type. User can be passed as null. playsound(src, empty_sound, 25, 1) + SEND_SIGNAL(user, COMSIG_MOB_GUN_EMPTY, src) else // Just fired a chambered bullet with no magazine in the gun update_icon() return in_chamber //Returns the projectile if it's actually successful. -/obj/item/weapon/gun/proc/delete_bullet(obj/item/projectile/projectile_to_fire, refund = 0) +/obj/item/weapon/gun/proc/delete_bullet(obj/projectile/projectile_to_fire, refund = 0) if(active_attachable) //Attachables don't chamber rounds, so we want to delete it right away. qdel(projectile_to_fire) //Getting rid of it. Attachables only use ammo after the cycle is over. if(refund) active_attachable.current_rounds++ //Refund the bullet. return 1 -/obj/item/weapon/gun/proc/clear_jam(obj/item/projectile/projectile_to_fire, mob/user as mob) //Guns jamming, great. +/obj/item/weapon/gun/proc/clear_jam(obj/projectile/projectile_to_fire, mob/user as mob) //Guns jamming, great. flags_gun_features &= ~GUN_BURST_FIRING // Also want to turn off bursting, in case that was on. It probably was. delete_bullet(projectile_to_fire, 1) //We're going to clear up anything inside if we need to. //If it's a regular bullet, we're just going to keep it chambered. @@ -1055,30 +1072,22 @@ and you're good to go. // \\ //---------------------------------------------------------- -/obj/item/weapon/gun/proc/Fire(atom/target, mob/living/user, params, reflex = 0, dual_wield) - set waitfor = 0 +/obj/item/weapon/gun/proc/Fire(atom/target, mob/living/user, params, reflex = FALSE, dual_wield) + set waitfor = FALSE - if(!able_to_fire(user) || !target) - return - - var/turf/curloc = get_turf(user) //In case the target or we are expired. - var/turf/targloc = get_turf(target) - if(!targloc || !curloc) - return //Something has gone wrong... - var/atom/original_target = target //This is for burst mode, in case the target changes per scatter chance in between fired bullets. + if(!able_to_fire(user) || !target || !get_turf(user) || !get_turf(target)) + return NONE /* This is where the grenade launcher and flame thrower function as attachments. This is also a general check to see if the attachment can fire in the first place. */ - var/check_for_attachment_fire = 0 + var/check_for_attachment_fire = FALSE - //Number of bullets based on burst. If an active attachable is shooting, bursting is always zero. - var/bullets_to_fire = 1 if(active_attachable?.flags_attach_features & ATTACH_WEAPON) //Attachment activated and is a weapon. - check_for_attachment_fire = 1 + check_for_attachment_fire = TRUE if(!(active_attachable.flags_attach_features & ATTACH_PROJECTILE)) //If it's unique projectile, this is where we fire it. - if(active_attachable.current_rounds <= 0) + if((active_attachable.current_rounds <= 0) && !(active_attachable.flags_attach_features & ATTACH_IGNORE_EMPTY)) click_empty(user) //If it's empty, let them know. to_chat(user, SPAN_WARNING("[active_attachable] is empty!")) to_chat(user, SPAN_NOTICE("You disable [active_attachable].")) @@ -1086,140 +1095,155 @@ and you're good to go. else active_attachable.fire_attachment(target, src, user) //Fire it. active_attachable.last_fired = world.time - return + return NONE //If there's more to the attachment, it will be processed farther down, through in_chamber and regular bullet act. /* This is where burst is established for the proceeding section. Which just means the proc loops around that many times. If burst = 1, you must null it if you ever RETURN during the for() cycle. If for whatever reason burst is left on while the gun is not firing, it will break a lot of stuff. BREAK is fine, as it will null it. */ - else if((flags_gun_features & GUN_BURST_ON) && burst_amount > 1) - bullets_to_fire = burst_amount + else if((gun_firemode == GUN_FIREMODE_BURSTFIRE) && burst_amount > BURST_AMOUNT_TIER_1) flags_gun_features |= GUN_BURST_FIRING if(PB_burst_bullets_fired) //Has a burst been carried over from a PB? - bullets_to_fire -= PB_burst_bullets_fired PB_burst_bullets_fired = 0 //Don't need this anymore. The torch is passed. - //Dual wielding. Do we have a gun in the other hand, is it loaded, and is it the same category? + var/fired_by_akimbo = FALSE + if(dual_wield) + fired_by_akimbo = TRUE + + //Dual wielding. Do we have a gun in the other hand and is it the same category? + var/obj/item/weapon/gun/akimbo = user.get_inactive_hand() if(!reflex && !dual_wield && user) - var/obj/item/weapon/gun/akimbo = user.get_inactive_hand() if(istype(akimbo) && akimbo.gun_category == gun_category && !(akimbo.flags_gun_features & GUN_WIELDED_FIRING_ONLY)) - /*Does the offhand weapon have a loaded selected attachable gun or ammo? This doesn't necessarily mean the offhand gun can be *fired*, - an unpumped shotgun or opened double-barrel or a revolver with a spun cylinder would pass it, but it's less indiscrimate than it used to be.*/ - if(akimbo.active_attachable?.current_rounds || akimbo.has_ammunition()) - dual_wield = TRUE //increases recoil, increases scatter, and reduces accuracy. - if(user?.client?.prefs?.toggle_prefs & TOGGLE_ALTERNATING_DUAL_WIELD) - user.swap_hand() - else - akimbo.Fire(target,user,params, 0, TRUE) + dual_wield = TRUE //increases recoil, increases scatter, and reduces accuracy. - var/bullets_fired - for(bullets_fired = 1 to bullets_to_fire) - if(loc != user || (flags_gun_features & GUN_WIELDED_FIRING_ONLY && !(flags_item & WIELDED))) - break //If you drop it while bursting, for example. + var/fire_return = handle_fire(target, user, params, reflex, dual_wield, check_for_attachment_fire, akimbo, fired_by_akimbo) + if(!fire_return) + return fire_return - if (bullets_fired > 1 && !(flags_gun_features & GUN_BURST_FIRING)) // No longer burst firing somehow - break + flags_gun_features &= ~GUN_BURST_FIRING // We always want to turn off bursting when we're done, mainly for when we break early mid-burstfire. + return AUTOFIRE_CONTINUE - //The gun should return the bullet that it already loaded from the end cycle of the last Fire(). - var/obj/item/projectile/projectile_to_fire = load_into_chamber(user) //Load a bullet in or check for existing one. - if(!projectile_to_fire) //If there is nothing to fire, click. - click_empty(user) - flags_gun_features &= ~GUN_BURST_FIRING - return +/obj/item/weapon/gun/proc/handle_fire(atom/target, mob/living/user, params, reflex = FALSE, dual_wield, check_for_attachment_fire, akimbo, fired_by_akimbo) + var/turf/curloc = get_turf(user) //In case the target or we are expired. + var/turf/targloc = get_turf(target) - apply_bullet_effects(projectile_to_fire, user, bullets_fired, reflex, dual_wield) //User can be passed as null. - SEND_SIGNAL(projectile_to_fire, COMSIG_BULLET_USER_EFFECTS, user) + var/atom/original_target = target //This is for burst mode, in case the target changes per scatter chance in between fired bullets. - curloc = get_turf(user) - if(QDELETED(original_target)) //If the target's destroyed, shoot at where it was last. - target = targloc - else - target = original_target - targloc = get_turf(target) - - projectile_to_fire.original = target - - // turf-targeted projectiles are fired without scatter, because proc would raytrace them further away - var/ammo_flags = projectile_to_fire.ammo.flags_ammo_behavior | projectile_to_fire.projectile_override_flags - if(!(ammo_flags & AMMO_HITS_TARGET_TURF)) - target = simulate_scatter(projectile_to_fire, target, curloc, targloc, user, bullets_fired) - - var/bullet_velocity = projectile_to_fire?.ammo?.shell_speed + velocity_add - - if(params) // Apply relative clicked position from the mouse info to offset projectile - if(!params["click_catcher"]) - if(params["vis-x"]) - projectile_to_fire.p_x = text2num(params["vis-x"]) - else if(params["icon-x"]) - projectile_to_fire.p_x = text2num(params["icon-x"]) - if(params["vis-y"]) - projectile_to_fire.p_y = text2num(params["vis-y"]) - else if(params["icon-y"]) - projectile_to_fire.p_y = text2num(params["icon-y"]) - var/atom/movable/clicked_target = original_target - if(istype(clicked_target)) - projectile_to_fire.p_x -= clicked_target.bound_width / 2 - projectile_to_fire.p_y -= clicked_target.bound_height / 2 - else - projectile_to_fire.p_x -= world.icon_size / 2 - projectile_to_fire.p_y -= world.icon_size / 2 + if(loc != user || (flags_gun_features & GUN_WIELDED_FIRING_ONLY && !(flags_item & WIELDED))) + return TRUE + + //The gun should return the bullet that it already loaded from the end cycle of the last Fire(). + var/obj/projectile/projectile_to_fire = load_into_chamber(user) //Load a bullet in or check for existing one. + if(!projectile_to_fire) //If there is nothing to fire, click. + click_empty(user) + flags_gun_features &= ~GUN_BURST_FIRING + return NONE + + apply_bullet_effects(projectile_to_fire, user, reflex, dual_wield) //User can be passed as null. + SEND_SIGNAL(projectile_to_fire, COMSIG_BULLET_USER_EFFECTS, user) + + curloc = get_turf(user) + if(QDELETED(original_target)) //If the target's destroyed, shoot at where it was last. + target = targloc + else + target = original_target + targloc = get_turf(target) + + projectile_to_fire.original = target + + // turf-targeted projectiles are fired without scatter, because proc would raytrace them further away + var/ammo_flags = projectile_to_fire.ammo.flags_ammo_behavior | projectile_to_fire.projectile_override_flags + if(!(ammo_flags & AMMO_HITS_TARGET_TURF)) + target = simulate_scatter(projectile_to_fire, target, curloc, targloc, user) + + var/bullet_velocity = projectile_to_fire?.ammo?.shell_speed + velocity_add + + if(params) // Apply relative clicked position from the mouse info to offset projectile + if(!params["click_catcher"]) + if(params["vis-x"]) + projectile_to_fire.p_x = text2num(params["vis-x"]) + else if(params["icon-x"]) + projectile_to_fire.p_x = text2num(params["icon-x"]) + if(params["vis-y"]) + projectile_to_fire.p_y = text2num(params["vis-y"]) + else if(params["icon-y"]) + projectile_to_fire.p_y = text2num(params["icon-y"]) + var/atom/movable/clicked_target = original_target + if(istype(clicked_target)) + projectile_to_fire.p_x -= clicked_target.bound_width / 2 + projectile_to_fire.p_y -= clicked_target.bound_height / 2 else projectile_to_fire.p_x -= world.icon_size / 2 projectile_to_fire.p_y -= world.icon_size / 2 + else + projectile_to_fire.p_x -= world.icon_size / 2 + projectile_to_fire.p_y -= world.icon_size / 2 + + //Finally, make with the pew pew! + if(QDELETED(projectile_to_fire) || !isobj(projectile_to_fire)) + to_chat(user, "ERROR CODE I1: Gun malfunctioned due to invalid chambered projectile, clearing it. AHELP if this persists.") + log_debug("ERROR CODE I1: projectile malfunctioned while firing. User: [user] Weapon: [src] Magazine: [current_mag]") + flags_gun_features &= ~GUN_BURST_FIRING + in_chamber = null + click_empty(user) + return NONE - //Finally, make with the pew pew! - if(QDELETED(projectile_to_fire) || !isobj(projectile_to_fire)) - to_chat(user, "ERROR CODE I1: Gun malfunctioned due to invalid chambered projectile, clearing it. AHELP if this persists.") - log_debug("ERROR CODE I1: projectile malfunctioned while firing. User: [user] Weapon: [src] Magazine: [current_mag]") - flags_gun_features &= ~GUN_BURST_FIRING - in_chamber = null - click_empty(user) - return + if(targloc != curloc) + simulate_recoil(dual_wield, user, target) - if(targloc != curloc) - simulate_recoil(dual_wield, user, target) + //This is where the projectile leaves the barrel and deals with projectile code only. + //vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + in_chamber = null // It's not in the gun anymore + INVOKE_ASYNC(projectile_to_fire, TYPE_PROC_REF(/obj/projectile, fire_at), target, user, src, projectile_to_fire?.ammo?.max_range, bullet_velocity, original_target) + projectile_to_fire = null // Important: firing might have made projectile collide early and ALREADY have deleted it. We clear it too. + //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - //This is where the projectile leaves the barrel and deals with projectile code only. - //vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv - in_chamber = null // It's not in the gun anymore - INVOKE_ASYNC(projectile_to_fire, TYPE_PROC_REF(/obj/item/projectile, fire_at), target, user, src, projectile_to_fire?.ammo?.max_range, bullet_velocity, original_target) - projectile_to_fire = null // Important: firing might have made projectile collide early and ALREADY have deleted it. We clear it too. - //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + if(check_for_attachment_fire) + active_attachable.last_fired = world.time + else + last_fired = world.time + var/delay_left = (last_fired + fire_delay + additional_fire_group_delay) - world.time + if(fire_delay_group && delay_left > 0) + LAZYSET(user.fire_delay_next_fire, src, world.time + delay_left) + SEND_SIGNAL(user, COMSIG_MOB_FIRED_GUN, src) + . = TRUE - if(check_for_attachment_fire) - active_attachable.last_fired = world.time - else - last_fired = world.time - SEND_SIGNAL(user, COMSIG_MOB_FIRED_GUN, src) - . = TRUE + shots_fired++ - if(flags_gun_features & GUN_FULL_AUTO_ON) - fa_shots++ + if(dual_wield && !fired_by_akimbo) + switch(user?.client?.prefs?.dual_wield_pref) + if(DUAL_WIELD_FIRE) + INVOKE_ASYNC(akimbo, PROC_REF(Fire), target, user, params, 0, TRUE) + if(DUAL_WIELD_SWAP) + user.swap_hand() - else // This happens in very rare circumstances when you're moving a lot while burst firing, so I'm going to toss it up to guns jamming. - clear_jam(projectile_to_fire,user) - break + else + return TRUE - //>>POST PROCESSING AND CLEANUP BEGIN HERE.<< - var/angle = round(Get_Angle(user,target)) //Let's do a muzzle flash. - muzzle_flash(angle,user) + //>>POST PROCESSING AND CLEANUP BEGIN HERE.<< + var/angle = round(Get_Angle(user,target)) //Let's do a muzzle flash. + muzzle_flash(angle,user) - //This is where we load the next bullet in the chamber. We check for attachments too, since we don't want to load anything if an attachment is active. - if(!check_for_attachment_fire && !reload_into_chamber(user)) // It has to return a bullet, otherwise it's empty. Unless it's an undershotgun. - click_empty(user) - break //Nothing else to do here, time to cancel out. + //This is where we load the next bullet in the chamber. We check for attachments too, since we don't want to load anything if an attachment is active. + if(!check_for_attachment_fire && !reload_into_chamber(user)) // It has to return a bullet, otherwise it's empty. Unless it's an undershotgun. + click_empty(user) + return TRUE //Nothing else to do here, time to cancel out. + return TRUE - if(bullets_fired < bullets_to_fire) // We still have some bullets to fire. - extra_delay = fire_delay * 0.5 - sleep(burst_delay) +#define EXECUTION_CHECK (attacked_mob.stat == UNCONSCIOUS || attacked_mob.is_mob_restrained()) && ((user.a_intent == INTENT_GRAB)||(user.a_intent == INTENT_DISARM)) - flags_gun_features &= ~GUN_BURST_FIRING // We always want to turn off bursting when we're done, mainly for when we break early mid-burstfire. - display_ammo(user) +/obj/item/weapon/gun/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + if(!proximity_flag) + return FALSE -#define EXECUTION_CHECK (attacked_mob.stat == UNCONSCIOUS || attacked_mob.is_mob_restrained()) && ((user.a_intent == INTENT_GRAB)||(user.a_intent == INTENT_DISARM)) + if(active_attachable && (active_attachable.flags_attach_features & ATTACH_MELEE)) + active_attachable.last_fired = world.time + active_attachable.fire_attachment(target, src, user) + return TRUE -/obj/item/weapon/gun/attack(mob/living/attacked_mob, mob/living/user) + +/obj/item/weapon/gun/attack(mob/living/attacked_mob, mob/living/user, dual_wield) if(active_attachable && (active_attachable.flags_attach_features & ATTACH_MELEE)) //this is expected to do something in melee. active_attachable.last_fired = world.time active_attachable.fire_attachment(attacked_mob, src, user) @@ -1249,7 +1273,7 @@ and you're good to go. if(active_attachable && !(active_attachable.flags_attach_features & ATTACH_PROJECTILE)) active_attachable.activate_attachment(src, null, TRUE)//We're not firing off a nade into our mouth. - var/obj/item/projectile/projectile_to_fire = load_into_chamber(user) + var/obj/projectile/projectile_to_fire = load_into_chamber(user) if(projectile_to_fire) //We actually have a projectile, let's move on. user.visible_message(SPAN_WARNING("[user] pulls the trigger!")) var/actual_sound @@ -1320,7 +1344,7 @@ and you're good to go. user.next_move = world.time //No click delay on PBs. //Point blanking doesn't actually fire the projectile. Instead, it simulates firing the bullet proper. - if(!able_to_fire(user)) //If it's a valid PB aside from that you can't fire the gun, do nothing. + if(flags_gun_features & GUN_BURST_FIRING || !able_to_fire(user)) //If it's a valid PB aside from that you can't fire the gun, do nothing. return TRUE //The following relating to bursts was borrowed from Fire code. @@ -1331,10 +1355,19 @@ and you're good to go. else active_attachable.activate_attachment(src, null, TRUE)//No way. + var/fired_by_akimbo = FALSE + if(dual_wield) + fired_by_akimbo = TRUE + + //Dual wielding. Do we have a gun in the other hand and is it the same category? + var/obj/item/weapon/gun/akimbo = user.get_inactive_hand() + if(!dual_wield && user) + if(istype(akimbo) && akimbo.gun_category == gun_category && !(akimbo.flags_gun_features & GUN_WIELDED_FIRING_ONLY)) + dual_wield = TRUE //increases recoil, increases scatter, and reduces accuracy. var/bullets_to_fire = 1 - if(!check_for_attachment_fire && (flags_gun_features & GUN_BURST_ON) && burst_amount > 1) + if(!check_for_attachment_fire && (gun_firemode == GUN_FIREMODE_BURSTFIRE) && burst_amount > BURST_AMOUNT_TIER_1) bullets_to_fire = burst_amount flags_gun_features |= GUN_BURST_FIRING @@ -1349,7 +1382,7 @@ and you're good to go. if(QDELETED(attacked_mob)) //Target deceased. break - var/obj/item/projectile/projectile_to_fire = load_into_chamber(user) + var/obj/projectile/projectile_to_fire = load_into_chamber(user) if(!projectile_to_fire) click_empty(user) break @@ -1365,7 +1398,7 @@ and you're good to go. var/damage_buff = BASE_BULLET_DAMAGE_MULT //if target is lying or unconscious - add damage bonus - if(attacked_mob.lying == TRUE || attacked_mob.stat == UNCONSCIOUS) + if(!(attacked_mob.mobility_flags & MOBILITY_STAND) || attacked_mob.stat == UNCONSCIOUS) damage_buff += BULLET_DAMAGE_MULT_TIER_4 projectile_to_fire.damage *= damage_buff //Multiply the damage for point blank. if(bullets_fired == 1) //First shot gives the PB message. @@ -1373,23 +1406,23 @@ and you're good to go. SPAN_WARNING("You fire [src] point blank at [attacked_mob]!"), null, null, CHAT_TYPE_WEAPON_USE) user.track_shot(initial(name)) - apply_bullet_effects(projectile_to_fire, user, bullets_fired) //We add any damage effects that we need. + apply_bullet_effects(projectile_to_fire, user, bullets_fired, dual_wield) //We add any damage effects that we need. SEND_SIGNAL(projectile_to_fire, COMSIG_BULLET_USER_EFFECTS, user) SEND_SIGNAL(user, COMSIG_BULLET_DIRECT_HIT, attacked_mob) simulate_recoil(1, user) if(projectile_to_fire.ammo.bonus_projectiles_amount) - var/obj/item/projectile/BP + var/obj/projectile/BP for(var/i in 1 to projectile_to_fire.ammo.bonus_projectiles_amount) - BP = new /obj/item/projectile(attacked_mob.loc, create_cause_data(initial(name), user)) + BP = new /obj/projectile(attacked_mob.loc, create_cause_data(initial(name), user)) BP.generate_bullet(GLOB.ammo_list[projectile_to_fire.ammo.bonus_projectiles_type], 0, NO_FLAGS) BP.accuracy = round(BP.accuracy * projectile_to_fire.accuracy/initial(projectile_to_fire.accuracy)) //Modifies accuracy of pellets per fire_bonus_projectiles. BP.damage *= damage_buff projectile_to_fire.give_bullet_traits(BP) if(bullets_fired > 1) BP.original = attacked_mob //original == the original target of the projectile. If the target is downed and this isn't set, the projectile will try to fly over it. Of course, it isn't going anywhere, but it's the principle of the thing. Very embarrassing. - if(!BP.handle_mob(attacked_mob) && attacked_mob.lying) //This is the 'handle impact' proc for a flying projectile, including hit RNG, on_hit_mob and bullet_act. If it misses, it doesn't go anywhere. We'll pretend it slams into the ground or punches a hole in the ceiling, because trying to make it bypass the xeno or shoot from the tile beyond it is probably more spaghet than my life is worth. + if(!BP.handle_mob(attacked_mob) && attacked_mob.body_position == LYING_DOWN) //This is the 'handle impact' proc for a flying projectile, including hit RNG, on_hit_mob and bullet_act. If it misses, it doesn't go anywhere. We'll pretend it slams into the ground or punches a hole in the ceiling, because trying to make it bypass the xeno or shoot from the tile beyond it is probably more spaghet than my life is worth. if(BP.ammo.sound_bounce) playsound(attacked_mob.loc, BP.ammo.sound_bounce, 35, 1) attacked_mob.visible_message(SPAN_AVOIDHARM("[BP] slams into [get_turf(attacked_mob)]!"), //Managing to miss an immobile target flat on the ground deserves some recognition, don't you think? @@ -1402,7 +1435,7 @@ and you're good to go. if(bullets_fired > 1) projectile_to_fire.original = attacked_mob - if(!projectile_to_fire.handle_mob(attacked_mob) && attacked_mob.lying) + if(!projectile_to_fire.handle_mob(attacked_mob) && attacked_mob.body_position == LYING_DOWN) if(projectile_to_fire.ammo.sound_bounce) playsound(attacked_mob.loc, projectile_to_fire.ammo.sound_bounce, 35, 1) attacked_mob.visible_message(SPAN_AVOIDHARM("[projectile_to_fire] slams into [get_turf(attacked_mob)]!"), @@ -1415,9 +1448,19 @@ and you're good to go. active_attachable.last_fired = world.time else last_fired = world.time + var/delay_left = (last_fired + fire_delay + additional_fire_group_delay) - world.time + if(fire_delay_group && delay_left > 0) + LAZYSET(user.fire_delay_next_fire, src, world.time + delay_left) SEND_SIGNAL(user, COMSIG_MOB_FIRED_GUN, src) + if(dual_wield && !fired_by_akimbo) + switch(user?.client?.prefs?.dual_wield_pref) + if(DUAL_WIELD_FIRE) + INVOKE_ASYNC(akimbo, PROC_REF(attack), attacked_mob, user, TRUE) + if(DUAL_WIELD_SWAP) + user.swap_hand() + if(EXECUTION_CHECK) //Continue execution if on the correct intent. Accounts for change via the earlier do_after user.visible_message(SPAN_DANGER("[user] has executed [attacked_mob] with [src]!"), SPAN_DANGER("You have executed [attacked_mob] with [src]!"), message_flags = CHAT_TYPE_WEAPON_USE) attacked_mob.death() @@ -1469,6 +1512,8 @@ not all weapons use normal magazines etc. load_into_chamber() itself is designed */ if(flags_gun_features & GUN_BURST_FIRING) + return TRUE + if(user.is_mob_incapacitated()) return if(world.time < guaranteed_delay_time) return @@ -1491,9 +1536,14 @@ not all weapons use normal magazines etc. load_into_chamber() itself is designed if(flags_gun_features & GUN_TRIGGER_SAFETY) to_chat(user, SPAN_WARNING("The safety is on!")) + gun_user.balloon_alert(gun_user, "safety on") return - - if((flags_gun_features & GUN_WIELDED_FIRING_ONLY) && !(flags_item & WIELDED)) //If we're not holding the weapon with both hands when we should. + if(active_attachable) + if(active_attachable.flags_attach_features & ATTACH_PROJECTILE) + if(!(active_attachable.flags_attach_features & ATTACH_WIELD_OVERRIDE) && !(flags_item & WIELDED)) + to_chat(user, SPAN_WARNING("You must wield [src] to fire [active_attachable]!")) + return + if((flags_gun_features & GUN_WIELDED_FIRING_ONLY) && !(flags_item & WIELDED) && !active_attachable) //If we're not holding the weapon with both hands when we should. to_chat(user, SPAN_WARNING("You need a more secure grip to fire this weapon!")) return @@ -1521,9 +1571,20 @@ not all weapons use normal magazines etc. load_into_chamber() itself is designed if(fire_delay_group) for(var/group in fire_delay_group) - var/group_next_fire = LAZYACCESS(user.fire_delay_next_fire, group) - if(!isnull(group_next_fire) && world.time < group_next_fire) - return + for(var/obj/item/weapon/gun/cycled_gun in user.fire_delay_next_fire) + if(cycled_gun == src) + continue + + for(var/cycled_gun_group in cycled_gun.fire_delay_group) + if(group != cycled_gun_group) + continue + + if(user.fire_delay_next_fire[cycled_gun] < world.time) + user.fire_delay_next_fire -= cycled_gun + continue + + return + return TRUE /obj/item/weapon/gun/proc/click_empty(mob/user) @@ -1539,12 +1600,15 @@ not all weapons use normal magazines etc. load_into_chamber() itself is designed if(active_attachable) return - if(flags_gun_features & GUN_AMMO_COUNTER && !(flags_gun_features & GUN_BURST_FIRING) && current_mag) + if(!user) + user = gun_user + + if(flags_gun_features & GUN_AMMO_COUNTER && current_mag) var/chambered = in_chamber ? TRUE : FALSE to_chat(user, SPAN_DANGER("[current_mag.current_rounds][chambered ? "+1" : ""] / [current_mag.max_rounds] ROUNDS REMAINING")) //This proc applies some bonus effects to the shot/makes the message when a bullet is actually fired. -/obj/item/weapon/gun/proc/apply_bullet_effects(obj/item/projectile/projectile_to_fire, mob/user, bullets_fired = 1, reflex = 0, dual_wield = 0) +/obj/item/weapon/gun/proc/apply_bullet_effects(obj/projectile/projectile_to_fire, mob/user, reflex = 0, dual_wield = 0) var/actual_sound = fire_sound if(isnull(fire_sound)) actual_sound = pick(fire_sounds) @@ -1621,12 +1685,12 @@ not all weapons use normal magazines etc. load_into_chamber() itself is designed return 1 -/obj/item/weapon/gun/proc/simulate_scatter(obj/item/projectile/projectile_to_fire, atom/target, turf/curloc, turf/targloc, mob/user, bullets_fired = 1) +/obj/item/weapon/gun/proc/simulate_scatter(obj/projectile/projectile_to_fire, atom/target, turf/curloc, turf/targloc, mob/user, bullets_fired = 1) var/fire_angle = Get_Angle(curloc, targloc) var/total_scatter_angle = projectile_to_fire.scatter - if(flags_gun_features & GUN_BURST_ON && bullets_fired > 1)//Much higher scatter on burst. Each additional bullet adds scatter - var/bullet_amt_scat = min(bullets_fired-1, SCATTER_AMOUNT_TIER_6)//capped so we don't penalize large bursts too much. + if((gun_firemode == GUN_FIREMODE_BURSTFIRE))//Much higher scatter on burst. Each additional bullet adds scatter + var/bullet_amt_scat = min(burst_amount - 1, SCATTER_AMOUNT_TIER_6)//capped so we don't penalize large bursts too much. if(flags_item & WIELDED) total_scatter_angle += max(0, bullet_amt_scat * burst_scatter_mult) else @@ -1634,9 +1698,9 @@ not all weapons use normal magazines etc. load_into_chamber() itself is designed // Full auto fucks your scatter up big time // Note that full auto uses burst scatter multipliers - if(flags_gun_features & GUN_FULL_AUTO_ON) + if(gun_firemode == GUN_FIREMODE_AUTOMATIC) // The longer you fire full-auto, the worse the scatter gets - var/bullet_amt_scat = min((fa_shots/fa_scatter_peak) * fa_max_scatter, fa_max_scatter) + var/bullet_amt_scat = min((shots_fired / fa_scatter_peak) * fa_max_scatter, fa_max_scatter) if(flags_item & WIELDED) total_scatter_angle += max(0, bullet_amt_scat * burst_scatter_mult) else @@ -1702,9 +1766,11 @@ not all weapons use normal magazines etc. load_into_chamber() itself is designed if(!istype(user) || !istype(user.loc,/turf)) return - if(user.luminosity <= muzzle_flash_lum) - user.SetLuminosity(muzzle_flash_lum, FALSE, src) - addtimer(CALLBACK(user, TYPE_PROC_REF(/atom, SetLuminosity), 0, FALSE, src), 10) + var/prev_light = light_range + if(!light_on && (light_range <= muzzle_flash_lum)) + set_light_range(muzzle_flash_lum) + set_light_on(TRUE) + addtimer(CALLBACK(src, PROC_REF(reset_light_range), prev_light), 0.5 SECONDS) var/image_layer = (user && user.dir == SOUTH) ? MOB_LAYER+0.1 : MOB_LAYER-0.1 var/offset = 5 @@ -1716,6 +1782,13 @@ not all weapons use normal magazines etc. load_into_chamber() itself is designed I.transform = rotate I.flick_overlay(user, 3) +/// called by a timer to remove the light range from muzzle flash +/obj/item/weapon/gun/proc/reset_light_range(lightrange) + set_light_range(lightrange) + if(lightrange <= 0) + set_light_on(FALSE) + + /obj/item/weapon/gun/attack_alien(mob/living/carbon/xenomorph/xeno) ..() var/slashed_light = FALSE @@ -1729,3 +1802,165 @@ not all weapons use normal magazines etc. load_into_chamber() itself is designed xeno.animation_attack_on(src) xeno.visible_message(SPAN_XENOWARNING("\The [xeno] slashes the lights on \the [src]!"), SPAN_XENONOTICE("You slash the lights on \the [src]!")) return XENO_ATTACK_ACTION + +/// Setter proc to toggle burst firing +/obj/item/weapon/gun/proc/set_bursting(bursting = FALSE) + if(bursting) + flags_gun_features |= GUN_BURST_FIRING + else + flags_gun_features &= ~GUN_BURST_FIRING + +///Clean all references +/obj/item/weapon/gun/proc/reset_fire() + shots_fired = 0//Let's clean everything + set_target(null) + set_auto_firing(FALSE) + +/// adder for fire_delay +/obj/item/weapon/gun/proc/modify_fire_delay(value) + fire_delay += value + SEND_SIGNAL(src, COMSIG_GUN_AUTOFIREDELAY_MODIFIED, fire_delay) + +/// setter for fire_delay +/obj/item/weapon/gun/proc/set_fire_delay(value) + fire_delay = value + SEND_SIGNAL(src, COMSIG_GUN_AUTOFIREDELAY_MODIFIED, fire_delay) + +/// getter for fire_delay +/obj/item/weapon/gun/proc/get_fire_delay(value) + return fire_delay + +/// setter for burst_amount +/obj/item/weapon/gun/proc/set_burst_amount(value, mob/user) + burst_amount = value + SEND_SIGNAL(src, COMSIG_GUN_BURST_SHOTS_TO_FIRE_MODIFIED, burst_amount) + +/// adder for burst_amount +/obj/item/weapon/gun/proc/modify_burst_amount(value, mob/user) + burst_amount += value + SEND_SIGNAL(src, COMSIG_GUN_BURST_SHOTS_TO_FIRE_MODIFIED, burst_amount) + +/// Adder for burst_delay +/obj/item/weapon/gun/proc/modify_burst_delay(value, mob/user) + burst_delay += value + SEND_SIGNAL(src, COMSIG_GUN_BURST_SHOT_DELAY_MODIFIED, burst_delay) + +/// Setter for burst_delay +/obj/item/weapon/gun/proc/set_burst_delay(value, mob/user) + burst_delay = value + SEND_SIGNAL(src, COMSIG_GUN_BURST_SHOT_DELAY_MODIFIED, burst_delay) + +///Set the target and take care of hard delete +/obj/item/weapon/gun/proc/set_target(atom/object) + active_attachable?.set_target(object) + if(object == target || object == loc) + return + if(target) + UnregisterSignal(target, COMSIG_PARENT_QDELETING) + target = object + if(target) + RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(clean_target)) + +///Set the target to its turf, so we keep shooting even when it was qdeled +/obj/item/weapon/gun/proc/clean_target() + SIGNAL_HANDLER + active_attachable?.clean_target() + target = get_turf(target) + +/obj/item/weapon/gun/proc/stop_fire() + SIGNAL_HANDLER + if(!target || (gun_user.get_active_hand() != src)) + return + + if(gun_firemode == GUN_FIREMODE_AUTOMATIC) + reset_fire() + display_ammo() + SEND_SIGNAL(src, COMSIG_GUN_STOP_FIRE) + +/obj/item/weapon/gun/proc/set_gun_user(mob/to_set) + if(to_set == gun_user) + return + if(gun_user) + UnregisterSignal(gun_user, list(COMSIG_MOB_MOUSEUP, COMSIG_MOB_MOUSEDOWN, COMSIG_MOB_MOUSEDRAG)) + + gun_user = to_set + if(gun_user) + RegisterSignal(gun_user, COMSIG_MOB_MOUSEDOWN, PROC_REF(start_fire)) + RegisterSignal(gun_user, COMSIG_MOB_MOUSEDRAG, PROC_REF(change_target)) + RegisterSignal(gun_user, COMSIG_MOB_MOUSEUP, PROC_REF(stop_fire)) + +/obj/item/weapon/gun/hands_swapped(mob/living/carbon/swapper_of_hands) + if(src == swapper_of_hands.get_active_hand()) + set_gun_user(swapper_of_hands) + return + + set_gun_user(null) + +///Update the target if you draged your mouse +/obj/item/weapon/gun/proc/change_target(datum/source, atom/src_object, atom/over_object, turf/src_location, turf/over_location, src_control, over_control, params) + SIGNAL_HANDLER + set_target(get_turf_on_clickcatcher(over_object, gun_user, params)) + gun_user?.face_atom(target) + +///Check if the gun can fire and add it to bucket auto_fire system if needed, or just fire the gun if not +/obj/item/weapon/gun/proc/start_fire(datum/source, atom/object, turf/location, control, params, bypass_checks = FALSE) + SIGNAL_HANDLER + + var/list/modifiers = params2list(params) + if(modifiers["shift"] || modifiers["middle"] || modifiers["right"]) + return + + // Don't allow doing anything else if inside a container of some sort, like a locker. + if(!isturf(gun_user.loc)) + return + + if(istype(object, /atom/movable/screen)) + return + + if(!bypass_checks) + if(gun_user.hand && !isgun(gun_user.l_hand) || !gun_user.hand && !isgun(gun_user.r_hand)) // If the object in our active hand is not a gun, abort + return + + if(gun_user.throw_mode) + return + + if(gun_user.Adjacent(object)) //Dealt with by attack code + return + + if(QDELETED(object)) + return + + if(gun_user.client?.prefs?.toggle_prefs & TOGGLE_HELP_INTENT_SAFETY && (gun_user.a_intent == INTENT_HELP)) + if(world.time % 3) // Limits how often this message pops up, saw this somewhere else and thought it was clever + to_chat(gun_user, SPAN_DANGER("Help intent safety is on! Switch to another intent to fire your weapon.")) + gun_user.balloon_alert(gun_user, "help intent safety") + click_empty(gun_user) + return FALSE + + set_target(get_turf_on_clickcatcher(object, gun_user, params)) + if((gun_firemode == GUN_FIREMODE_SEMIAUTO) || active_attachable) + Fire(object, gun_user, modifiers) + reset_fire() + display_ammo() + return + SEND_SIGNAL(src, COMSIG_GUN_FIRE) + +/// Wrapper proc for the autofire subsystem to ensure the important args aren't null +/obj/item/weapon/gun/proc/fire_wrapper(atom/target, mob/living/user, params, reflex = FALSE, dual_wield) + SHOULD_NOT_OVERRIDE(TRUE) + if(!target) + target = src.target + if(!user) + user = gun_user + if(!target || !user) + return NONE + return Fire(target, user, params, reflex, dual_wield) + +/// Setter proc for fa_firing +/obj/item/weapon/gun/proc/set_auto_firing(auto = FALSE) + SIGNAL_HANDLER + fa_firing = auto + +/// Getter for gun_user +/obj/item/weapon/gun/proc/get_gun_user() + return gun_user diff --git a/code/modules/projectiles/gun_attachables.dm b/code/modules/projectiles/gun_attachables.dm index 0baf6f527d4b..1807213f6226 100644 --- a/code/modules/projectiles/gun_attachables.dm +++ b/code/modules/projectiles/gun_attachables.dm @@ -31,7 +31,7 @@ Defined in conflicts.dm of the #defines folder. var/pixel_shift_y = 16 //Uses the bottom left corner of the item. flags_atom = FPRINT|CONDUCT - matter = list("metal" = 2000) + matter = list("metal" = 100) w_class = SIZE_SMALL force = 1 var/slot = null //"muzzle", "rail", "under", "stock", "special" @@ -131,8 +131,7 @@ Defined in conflicts.dm of the #defines folder. G.attachments[slot] = src G.recalculate_attachment_bonuses() - if(G.burst_amount <= 1) - G.flags_gun_features &= ~GUN_BURST_ON //Remove burst if they can no longer use it. + G.setup_firemodes() G.update_force_list() //This updates the gun to use proper force verbs. var/mob/living/living @@ -169,7 +168,8 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/proc/Detach(mob/user, obj/item/weapon/gun/detaching_gub) if(!istype(detaching_gub)) return //Guns only - detaching_gub.on_detach(user) + if(user) + detaching_gub.on_detach(user, src) if(flags_attach_features & ATTACH_ACTIVATION) activate_attachment(detaching_gub, null, TRUE) @@ -332,6 +332,21 @@ Defined in conflicts.dm of the #defines folder. attach_icon = "co2_bayonet_a" var/filled = FALSE +/obj/item/attachable/bayonet/rmc + name = "\improper L5 bayonet" + desc = "The standard-issue bayonet of the RMC, the L5 is balanced to also function as an effective throwing knife." + icon_state = "upp_bayonet" // PLACEHOLDER PLEASE REPLACE + item_state = "combat_knife" + attach_icon = "upp_bayonet_a" // PLACEHOLDER PLEASE REPLACE + throwforce = MELEE_FORCE_TIER_10 //doubled by throwspeed to 100 + throw_speed = SPEED_REALLY_FAST + throw_range = 7 + pry_delay = 1 SECONDS + +/obj/item/attachable/bayonet/van_bandolier + name = "\improper Fairbairn-Sykes fighting knife" + desc = "This isn't for dressing game or performing camp chores. It's almost certainly not an original. Almost." + /obj/item/attachable/bayonet/co2/update_icon() icon_state = "co2_knife[filled ? "-f" : ""]" attach_icon = "co2_bayonet[filled ? "-f" : ""]_a" @@ -340,16 +355,16 @@ Defined in conflicts.dm of the #defines folder. if(istype(W, /obj/item/co2_cartridge)) if(!filled) filled = TRUE - user.visible_message(SPAN_NOTICE("[user] slots a CO2 cartridge into [src]. A second later, \he apparently looks dismayed."), SPAN_WARNING("You slot a fresh CO2 cartridge into [src] and snap the slot cover into place. Only then do you realize \the [W]'s valve broke inside \the [src]. Fuck.")) + user.visible_message(SPAN_NOTICE("[user] slots a CO2 cartridge into [src]. A second later, \he apparently looks dismayed."), SPAN_WARNING("You slot a fresh CO2 cartridge into [src] and snap the slot cover into place. Only then do you realize [W]'s valve broke inside [src]. Fuck.")) playsound(src, 'sound/machines/click.ogg') qdel(W) update_icon() return else - user.visible_message(SPAN_WARNING("[user] fiddles with \the [src]. \He looks frustrated."), SPAN_NOTICE("No way man! You can't seem to pry the existing container out of \the [src]... try a screwdriver?")) + user.visible_message(SPAN_WARNING("[user] fiddles with [src]. \He looks frustrated."), SPAN_NOTICE("No way man! You can't seem to pry the existing container out of [src]... try a screwdriver?")) return if(HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER) && do_after(user, 2 SECONDS, INTERRUPT_ALL, BUSY_ICON_BUILD)) - user.visible_message(SPAN_WARNING("[user] screws with \the [src], using \a [W]. \He looks very frustrated."), SPAN_NOTICE("You try to pry the cartridge out of the [src], but it's stuck damn deep. Piece of junk...")) + user.visible_message(SPAN_WARNING("[user] screws with [src], using \a [W]. \He looks very frustrated."), SPAN_NOTICE("You try to pry the cartridge out of [src], but it's stuck damn deep. Piece of junk...")) return ..() @@ -369,6 +384,7 @@ Defined in conflicts.dm of the #defines folder. icon_state = "ebarrel" attach_icon = "ebarrel_a" hud_offset_mod = -3 + wield_delay_mod = WIELD_DELAY_FAST /obj/item/attachable/extended_barrel/New() ..() @@ -388,7 +404,7 @@ Defined in conflicts.dm of the #defines folder. ..() accuracy_mod = -HIT_ACCURACY_MULT_TIER_3 damage_mod = BULLET_DAMAGE_MULT_TIER_6 - delay_mod = FIRE_DELAY_TIER_9 + delay_mod = FIRE_DELAY_TIER_11 accuracy_unwielded_mod = -HIT_ACCURACY_MULT_TIER_7 @@ -437,6 +453,39 @@ Defined in conflicts.dm of the #defines folder. accuracy_mod = HIT_ACCURACY_MULT_TIER_1 scatter_mod = -SCATTER_AMOUNT_TIER_8 +/obj/item/attachable/f90_dmr_barrel + name = "f90 barrel" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" + icon_state = "aug_dmr_barrel_a" + attach_icon = "aug_dmr_barrel_a" + slot = "muzzle" + wield_delay_mod = WIELD_DELAY_NONE + flags_attach_features = NO_FLAGS + melee_mod = 0 //Integrated attachment for visuals, stats handled on main gun. + size_mod = 0 + +/obj/item/attachable/f90_shotgun_barrel + name = "f90 barrel" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" + icon_state = "aug_mkey_barrel_a" + attach_icon = "aug_mkey_barrel_a" + slot = "muzzle" + wield_delay_mod = WIELD_DELAY_NONE + flags_attach_features = NO_FLAGS + melee_mod = 0 //Integrated attachment for visuals, stats handled on main gun. + size_mod = 0 + +/obj/item/attachable/l56a2_smartgun + name = "l56a2 barrel" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" + icon_state = "magsg_barrel_a" + attach_icon = "magsg_barrel_a" + slot = "muzzle" + wield_delay_mod = WIELD_DELAY_NONE + flags_attach_features = NO_FLAGS + melee_mod = 0 //Integrated attachment for visuals, stats handled on main gun. + size_mod = 0 + /obj/item/attachable/sniperbarrel name = "sniper barrel" icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' @@ -451,6 +500,25 @@ Defined in conflicts.dm of the #defines folder. accuracy_mod = HIT_ACCURACY_MULT_TIER_3 scatter_mod = -SCATTER_AMOUNT_TIER_8 +/obj/item/attachable/pmc_sniperbarrel + name = "sniper barrel" + icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' + icon_state = "pmc_sniperbarrel" + desc = "A heavy barrel. CANNOT BE REMOVED." + slot = "muzzle" + flags_attach_features = NO_FLAGS + hud_offset_mod = -3 + +/obj/item/attachable/pmc_sniperbarrel/New() + ..() + accuracy_mod = HIT_ACCURACY_MULT_TIER_3 + scatter_mod = -SCATTER_AMOUNT_TIER_8 + +/obj/item/attachable/sniperbarrel/vulture + name = "\improper M707 barrel" + icon_state = "vulture_barrel" + hud_offset_mod = -1 + /obj/item/attachable/m60barrel name = "M60 barrel" icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' @@ -594,7 +662,7 @@ Defined in conflicts.dm of the #defines folder. icon = 'icons/obj/items/weapons/guns/attachments/rail.dmi' icon_state = "flashlight" attach_icon = "flashlight_a" - light_mod = 7 + light_mod = 5 slot = "rail" matter = list("metal" = 50,"glass" = 20) flags_attach_features = ATTACH_REMOVABLE|ATTACH_ACTIVATION @@ -604,8 +672,8 @@ Defined in conflicts.dm of the #defines folder. var/original_state = "flashlight" var/original_attach = "flashlight_a" - var/activated = FALSE - var/helm_mounted_light_mod = 5 + var/helm_mounted_light_power = 2 + var/helm_mounted_light_range = 3 var/datum/action/item_action/activation var/obj/item/attached_item @@ -636,7 +704,7 @@ Defined in conflicts.dm of the #defines folder. SIGNAL_HANDLER if(!attached_item) return - if(activated) + if(light_on) icon_state = original_state attach_icon = original_attach activate_attachment(attached_item, attached_item.loc, TRUE) @@ -652,33 +720,54 @@ Defined in conflicts.dm of the #defines folder. activate_attachment(attached_item, owner) /obj/item/attachable/flashlight/activate_attachment(obj/item/weapon/gun/G, mob/living/user, turn_off) - if(istype(G, /obj/item/clothing/head/helmet/marine)) - var/atom/movable/light_source = user - . = (turn_off && activated) - if(turn_off || activated) - if(activated) + turn_light(user, turn_off ? !turn_off : !light_on) + +/obj/item/attachable/flashlight/turn_light(mob/user, toggle_on, cooldown, sparks, forced, light_again) + . = ..() + if(. != CHECKS_PASSED) + return + + if(istype(attached_item, /obj/item/clothing/head/helmet/marine)) + if(!toggle_on || light_on) + if(light_on) playsound(user, deactivation_sound, 15, 1) icon_state = original_state attach_icon = original_attach - activated = FALSE + light_on = FALSE else playsound(user, activation_sound, 15, 1) icon_state += "-on" attach_icon += "-on" - activated = TRUE + light_on = TRUE attached_item.update_icon() - light_source.SetLuminosity(helm_mounted_light_mod * activated, FALSE, G) - attached_item.SetLuminosity(helm_mounted_light_mod * activated, FALSE, G) + attached_item.set_light_range(helm_mounted_light_range) + attached_item.set_light_power(helm_mounted_light_power) + attached_item.set_light_on(light_on) activation.update_button_icon() return - if(turn_off && !(G.flags_gun_features & GUN_FLASHLIGHT_ON)) - return FALSE - var/flashlight_on = (G.flags_gun_features & GUN_FLASHLIGHT_ON) ? 0 : 1 - var/atom/movable/light_source = ismob(G.loc) ? G.loc : G - light_source.SetLuminosity(light_mod * flashlight_on, FALSE, G) - G.flags_gun_features ^= GUN_FLASHLIGHT_ON - if(G.flags_gun_features & GUN_FLASHLIGHT_ON) + if(!isgun(loc)) + return + + var/obj/item/weapon/gun/attached_gun = loc + + if(toggle_on && !light_on) + attached_gun.set_light_range(attached_gun.light_range + light_mod) + attached_gun.set_light_power(attached_gun.light_power + (light_mod * 0.5)) + if(!(attached_gun.flags_gun_features & GUN_FLASHLIGHT_ON)) + attached_gun.set_light_on(TRUE) + light_on = TRUE + attached_gun.flags_gun_features |= GUN_FLASHLIGHT_ON + + if(!toggle_on && light_on) + attached_gun.set_light_range(attached_gun.light_range - light_mod) + attached_gun.set_light_power(attached_gun.light_power - (light_mod * 0.5)) + if(attached_gun.flags_gun_features & GUN_FLASHLIGHT_ON) + attached_gun.set_light_on(FALSE) + light_on = FALSE + attached_gun.flags_gun_features &= ~GUN_FLASHLIGHT_ON + + if(attached_gun.flags_gun_features & GUN_FLASHLIGHT_ON) icon_state += "-on" attach_icon += "-on" playsound(user, deactivation_sound, 15, 1) @@ -686,17 +775,14 @@ Defined in conflicts.dm of the #defines folder. icon_state = original_state attach_icon = original_attach playsound(user, activation_sound, 15, 1) - G.update_attachable(slot) + attached_gun.update_attachable(slot) - for(var/X in G.actions) + for(var/X in attached_gun.actions) var/datum/action/A = X if(A.target == src) A.update_button_icon() return TRUE - - - /obj/item/attachable/flashlight/attackby(obj/item/I, mob/user) if(HAS_TRAIT(I, TRAIT_TOOL_SCREWDRIVER)) to_chat(user, SPAN_NOTICE("You strip the rail flashlight of its mount, converting it to a normal flashlight.")) @@ -812,12 +898,12 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/magnetic_harness/lever_sling/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) . = ..() var/new_attach_icon - switch(SSmapping.configs[GROUND_MAP].map_name) // maploader TODO: json - if(MAP_ICE_COLONY, MAP_ICE_COLONY_V3, MAP_CORSAT, MAP_SOROKYNE_STRATA) + switch(SSmapping.configs[GROUND_MAP].camouflage_type) + if("snow") attach_icon = new_attach_icon ? new_attach_icon : "s_" + attach_icon - if(MAP_WHISKEY_OUTPOST, MAP_DESERT_DAM, MAP_BIG_RED, MAP_KUTJEVO) + if("desert") attach_icon = new_attach_icon ? new_attach_icon : "d_" + attach_icon - if(MAP_PRISON_STATION, MAP_PRISON_STATION_V3, MAP_LV522_CHANCES_CLAIM) + if("classic") attach_icon = new_attach_icon ? new_attach_icon : "c_" + attach_icon /obj/item/attachable/scope @@ -843,19 +929,41 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/scope/New() ..() - delay_mod = FIRE_DELAY_TIER_10 + delay_mod = FIRE_DELAY_TIER_12 accuracy_mod = -HIT_ACCURACY_MULT_TIER_1 movement_onehanded_acc_penalty_mod = MOVEMENT_ACCURACY_PENALTY_MULT_TIER_4 accuracy_unwielded_mod = 0 accuracy_scoped_buff = HIT_ACCURACY_MULT_TIER_8 //to compensate initial debuff - delay_scoped_nerf = FIRE_DELAY_TIER_9 //to compensate initial debuff. We want "high_fire_delay" + delay_scoped_nerf = FIRE_DELAY_TIER_11 //to compensate initial debuff. We want "high_fire_delay" damage_falloff_scoped_buff = -0.4 //has to be negative +/obj/item/attachable/scope/Attach(obj/item/weapon/gun/gun) + . = ..() + RegisterSignal(gun, COMSIG_GUN_RECALCULATE_ATTACHMENT_BONUSES, PROC_REF(handle_attachment_recalc)) + +/obj/item/attachable/scope/Detach(mob/user, obj/item/weapon/gun/detaching_gub) + . = ..() + UnregisterSignal(detaching_gub, COMSIG_GUN_RECALCULATE_ATTACHMENT_BONUSES) + + +/// Due to the bipod's interesting way of handling stat modifications, this is necessary to prevent exploits. +/obj/item/attachable/scope/proc/handle_attachment_recalc(obj/item/weapon/gun/source) + SIGNAL_HANDLER + + if(!source.zoom) + return + + if(using_scope) + source.accuracy_mult += accuracy_scoped_buff + source.modify_fire_delay(delay_scoped_nerf) + source.damage_falloff_mult += damage_falloff_scoped_buff + + /obj/item/attachable/scope/proc/apply_scoped_buff(obj/item/weapon/gun/G, mob/living/carbon/user) if(G.zoom) G.accuracy_mult += accuracy_scoped_buff - G.fire_delay += delay_scoped_nerf + G.modify_fire_delay(delay_scoped_nerf) G.damage_falloff_mult += damage_falloff_scoped_buff using_scope = TRUE RegisterSignal(user, COMSIG_LIVING_ZOOM_OUT, PROC_REF(remove_scoped_buff)) @@ -865,7 +973,7 @@ Defined in conflicts.dm of the #defines folder. UnregisterSignal(user, COMSIG_LIVING_ZOOM_OUT) using_scope = FALSE G.accuracy_mult -= accuracy_scoped_buff - G.fire_delay -= delay_scoped_nerf + G.modify_fire_delay(-delay_scoped_nerf) G.damage_falloff_mult -= damage_falloff_scoped_buff /obj/item/attachable/scope/activate_attachment(obj/item/weapon/gun/G, mob/living/carbon/user, turn_off) @@ -952,6 +1060,9 @@ Defined in conflicts.dm of the #defines folder. //other variable zoom scopes +/obj/item/attachable/scope/variable_zoom/integrated + name = "variable zoom scope" + /obj/item/attachable/scope/variable_zoom/slavic icon_state = "slavicscope" attach_icon = "slavicscope" @@ -1000,6 +1111,9 @@ Defined in conflicts.dm of the #defines folder. wield_delay_mod = 0 dynamic_aim_slowdown = SLOWDOWN_ADS_MINISCOPE_DYNAMIC +/obj/item/attachable/scope/mini/f90 + dynamic_aim_slowdown = SLOWDOWN_ADS_NONE + /obj/item/attachable/scope/mini/flaregun/New() ..() delay_mod = 0 @@ -1008,7 +1122,7 @@ Defined in conflicts.dm of the #defines folder. accuracy_unwielded_mod = 0 accuracy_scoped_buff = HIT_ACCURACY_MULT_TIER_8 - delay_scoped_nerf = FIRE_DELAY_TIER_8 + delay_scoped_nerf = FIRE_DELAY_TIER_9 /obj/item/attachable/scope/mini/hunting name = "2x hunting mini-scope" @@ -1082,7 +1196,476 @@ Defined in conflicts.dm of the #defines folder. attach_icon = "slavicscope" desc = "Oppa! How did you get this off glorious Stalin weapon? Blyat, put back on and do job tovarish. Yankee is not shoot self no?" +/obj/item/attachable/vulture_scope // not a subtype of scope because it uses basically none of the scope's features + name = "\improper M707 \"Vulture\" scope" + icon = 'icons/obj/items/weapons/guns/attachments/rail.dmi' + icon_state = "vulture_scope" + attach_icon = "vulture_scope" + desc = "A powerful yet obtrusive sight for the M707 anti-materiel rifle." // Can't be seen normally, anyway + slot = "rail" + aim_speed_mod = SLOWDOWN_ADS_SCOPE //Extra slowdown when wielded + wield_delay_mod = WIELD_DELAY_FAST + flags_attach_features = ATTACH_REMOVABLE|ATTACH_ACTIVATION + attachment_action_type = /datum/action/item_action/toggle + /// Weakref to the user of the scope + var/datum/weakref/scope_user + /// If the scope is currently in use + var/scoping = FALSE + /// How far out the player should see by default + var/start_scope_range = 12 + /// The bare minimum distance the scope can be from the player + var/min_scope_range = 12 + /// The maximum distance the scope can be from the player + var/max_scope_range = 25 + /// How far in the perpendicular axis the scope can move in either direction + var/perpendicular_scope_range = 7 + /// How far in each direction the scope should see. Default human view size is 7 + var/scope_viewsize = 7 + /// The current X position of the scope within the sniper's view box. 0 is center + var/scope_offset_x = 0 + /// The current Y position of the scope within the sniper's view box. 0 is center + var/scope_offset_y = 0 + /// How far in any given direction the scope can drift + var/scope_drift_max = 2 + /// The current X coord position of the scope camera + var/scope_x = 0 + /// The current Y coord position of the scope camera + var/scope_y = 0 + /// Ref to the scope screen element + var/atom/movable/screen/vulture_scope/scope_element + /// If the gun should experience scope drift + var/scope_drift = TRUE + /// % chance for the scope to drift on process with a spotter using their scope + var/spotted_drift_chance = 25 + /// % chance for the scope to drift on process without a spotter using their scope + var/unspotted_drift_chance = 90 + /// If the scope should use do_afters for adjusting and moving the sight + var/slow_use = TRUE + /// Cooldown for interacting with the scope's adjustment or position + COOLDOWN_DECLARE(scope_interact_cd) + /// If the user is currently holding their breath + var/holding_breath = FALSE + /// Cooldown for after holding your breath + COOLDOWN_DECLARE(hold_breath_cd) + /// How long you can hold your breath for + var/breath_time = 4 SECONDS + /// How long the cooldown for holding your breath is, only starts after breath_time finishes + var/breath_cooldown_time = 12 SECONDS + /// The initial dir of the scope user when scoping in + var/scope_user_initial_dir + /// How much to increase darkness view by + var/darkness_view = 12 + /// If there is currently a spotter using the linked spotting scope + var/spotter_spotting = FALSE + /// How much time it takes to adjust the position of the scope. Adjusting the offset will take half of this time + var/adjust_delay = 1 SECONDS + +/obj/item/attachable/vulture_scope/Initialize(mapload, ...) + . = ..() + START_PROCESSING(SSobj, src) + select_gamemode_skin(type) + +/obj/item/attachable/vulture_scope/Destroy() + STOP_PROCESSING(SSobj, src) + on_unscope() + QDEL_NULL(scope_element) + return ..() + +/obj/item/attachable/vulture_scope/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "VultureScope", name) + ui.open() + +/obj/item/attachable/vulture_scope/ui_state(mob/user) + return GLOB.not_incapacitated_state + +/obj/item/attachable/vulture_scope/ui_data(mob/user) + var/list/data = list() + data["offset_x"] = scope_offset_x + data["offset_y"] = scope_offset_y + data["valid_offset_dirs"] = get_offset_dirs() + data["scope_cooldown"] = !COOLDOWN_FINISHED(src, scope_interact_cd) + data["valid_adjust_dirs"] = get_adjust_dirs() + data["breath_cooldown"] = !COOLDOWN_FINISHED(src, hold_breath_cd) + data["breath_recharge"] = get_breath_recharge() + data["spotter_spotting"] = spotter_spotting + data["current_scope_drift"] = get_scope_drift_chance() + data["time_to_fire_remaining"] = 1 - (get_time_to_fire() / FIRE_DELAY_TIER_VULTURE) + return data + +/obj/item/attachable/vulture_scope/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + + switch(action) + if("adjust_dir") + var/direction = params["offset_dir"] + if(!(direction in GLOB.alldirs) || !scoping || !scope_user) + return + + var/mob/scoper = scope_user.resolve() + if(slow_use) + if(!COOLDOWN_FINISHED(src, scope_interact_cd)) + return + to_chat(scoper, SPAN_NOTICE("You begin adjusting [src]...")) + COOLDOWN_START(src, scope_interact_cd, adjust_delay / 2) + if(!do_after(scoper, 0.4 SECONDS)) + return + + adjust_offset(direction) + . = TRUE + + if("adjust_position") + var/direction = params["position_dir"] + if(!(direction in GLOB.alldirs) || !scoping || !scope_user) + return + + var/mob/scoper = scope_user.resolve() + if(slow_use) + if(!COOLDOWN_FINISHED(src, scope_interact_cd)) + return + + to_chat(scoper, SPAN_NOTICE("You begin moving [src]...")) + COOLDOWN_START(src, scope_interact_cd, adjust_delay) + if(!do_after(scoper, 0.8 SECONDS)) + return + + adjust_position(direction) + . = TRUE + + if("hold_breath") + if(!COOLDOWN_FINISHED(src, hold_breath_cd) || holding_breath) + return + + hold_breath() + . = TRUE + +/obj/item/attachable/vulture_scope/process() + if(scope_element && prob(get_scope_drift_chance())) //every 6 seconds when unspotted, on average + scope_drift() + +/// Returns a number between 0 and 100 for the chance of the scope drifting on process() +/obj/item/attachable/vulture_scope/proc/get_scope_drift_chance() + if(!scope_drift || holding_breath) + return 0 + + if(spotter_spotting) + return spotted_drift_chance + + else + return unspotted_drift_chance + +/// Returns how many deciseconds until the gun is able to fire again +/obj/item/attachable/vulture_scope/proc/get_time_to_fire() + if(!istype(loc, /obj/item/weapon/gun/boltaction/vulture)) + return 0 + + var/obj/item/weapon/gun/boltaction/vulture/rifle = loc + if(!rifle.last_fired) + return 0 + + return (rifle.last_fired + rifle.get_fire_delay()) - world.time + +/obj/item/attachable/vulture_scope/activate_attachment(obj/item/weapon/gun/gun, mob/living/carbon/user, turn_off) + if(turn_off || scoping) + on_unscope() + return TRUE + + if(!scoping) + if(!(gun.flags_item & WIELDED)) + to_chat(user, SPAN_WARNING("You must hold [gun] with two hands to use [src].")) + return FALSE + + if(!HAS_TRAIT(gun, TRAIT_GUN_BIPODDED)) + to_chat(user, SPAN_WARNING("You must have a deployed bipod to use [src].")) + return FALSE + + on_scope() + return TRUE + +/obj/item/attachable/vulture_scope/proc/get_offset_dirs() + var/list/possible_dirs = GLOB.alldirs.Copy() + if(scope_offset_x >= scope_drift_max) + possible_dirs -= list(NORTHEAST, EAST, SOUTHEAST) + else if(scope_offset_x <= -scope_drift_max) + possible_dirs -= list(NORTHWEST, WEST, SOUTHWEST) + + if(scope_offset_y >= scope_drift_max) + possible_dirs -= list(NORTHWEST, NORTH, NORTHEAST) + else if(scope_offset_y <= -scope_drift_max) + possible_dirs -= list(SOUTHWEST, SOUTH, SOUTHEAST) + + return possible_dirs + +/// Gets a list of valid directions to be able to adjust the reticle in +/obj/item/attachable/vulture_scope/proc/get_adjust_dirs() + if(!scoping) + return list() + var/list/possible_dirs = GLOB.alldirs.Copy() + var/turf/current_turf = get_turf(src) + var/turf/scope_tile = locate(scope_x, scope_y, current_turf.z) + var/mob/scoper = scope_user.resolve() + if(!scoper) + return list() + + var/user_dir = scoper.dir + var/distance = get_dist(current_turf, scope_tile) + if(distance >= max_scope_range) + possible_dirs -= get_related_directions(user_dir) + + else if(distance <= min_scope_range) + possible_dirs -= get_related_directions(REVERSE_DIR(user_dir)) + + if((user_dir == EAST) || (user_dir == WEST)) + if(scope_y - current_turf.y >= perpendicular_scope_range) + possible_dirs -= get_related_directions(NORTH) + + else if(current_turf.y - scope_y >= perpendicular_scope_range) + possible_dirs -= get_related_directions(SOUTH) + + else + if(scope_x - current_turf.x >= perpendicular_scope_range) + possible_dirs -= get_related_directions(EAST) + + else if(current_turf.x - scope_x >= perpendicular_scope_range) + possible_dirs -= get_related_directions(WEST) + + return possible_dirs + +/// Adjusts the position of the reticle by a tile in a given direction +/obj/item/attachable/vulture_scope/proc/adjust_offset(direction = NORTH) + var/old_x = scope_offset_x + var/old_y = scope_offset_y + if((direction == NORTHEAST) || (direction == EAST) || (direction == SOUTHEAST)) + scope_offset_x = min(scope_offset_x + 1, scope_drift_max) + else if((direction == NORTHWEST) || (direction == WEST) || (direction == SOUTHWEST)) + scope_offset_x = max(scope_offset_x - 1, -scope_drift_max) + + if((direction == NORTHWEST) || (direction == NORTH) || (direction == NORTHEAST)) + scope_offset_y = min(scope_offset_y + 1, scope_drift_max) + else if((direction == SOUTHWEST) || (direction == SOUTH) || (direction == SOUTHEAST)) + scope_offset_y = max(scope_offset_y - 1, -scope_drift_max) + + recalculate_scope_offset(old_x, old_y) + +/// Adjusts the position of the scope by a tile in a given direction +/obj/item/attachable/vulture_scope/proc/adjust_position(direction = NORTH) + var/perpendicular_axis = "x" + var/mob/user = scope_user.resolve() + var/turf/user_turf = get_turf(user) + if((user.dir == EAST) || (user.dir == WEST)) + perpendicular_axis = "y" + + if((direction == NORTHEAST) || (direction == EAST) || (direction == SOUTHEAST)) + scope_x++ + scope_x = user_turf.x + axis_math(user, perpendicular_axis, "x", direction) + else if((direction == NORTHWEST) || (direction == WEST) || (direction == SOUTHWEST)) + scope_x-- + scope_x = user_turf.x + axis_math(user, perpendicular_axis, "x", direction) + if((direction == NORTHWEST) || (direction == NORTH) || (direction == NORTHEAST)) + scope_y++ + scope_y = user_turf.y + axis_math(user, perpendicular_axis, "y", direction) + else if((direction == SOUTHWEST) || (direction == SOUTH) || (direction == SOUTHEAST)) + scope_y-- + scope_y = user_turf.y + axis_math(user, perpendicular_axis, "y", direction) + + SEND_SIGNAL(src, COMSIG_VULTURE_SCOPE_MOVED) + + recalculate_scope_pos() + +/// Figures out which direction the scope should move based on user direction and their input +/obj/item/attachable/vulture_scope/proc/axis_math(mob/user, perpendicular_axis = "x", modifying_axis = "x", direction = NORTH) + var/turf/user_turf = get_turf(user) + var/inverse = FALSE + if((user.dir == SOUTH) || (user.dir == WEST)) + inverse = TRUE + var/user_offset + if(modifying_axis == "x") + user_offset = scope_x - user_turf.x + + else + user_offset = scope_y - user_turf.y + + if(perpendicular_axis == modifying_axis) + return clamp(user_offset, -perpendicular_scope_range, perpendicular_scope_range) + + else + return clamp(abs(user_offset), min_scope_range, max_scope_range) * (inverse ? -1 : 1) + +/// Recalculates where the reticle should be inside the scope +/obj/item/attachable/vulture_scope/proc/recalculate_scope_offset(old_x = 0, old_y = 0) + var/mob/scoper = scope_user.resolve() + if(!scoper.client) + return + + var/x_to_set = (scope_offset_x >= 0 ? "+" : "") + "[scope_offset_x]" + var/y_to_set = (scope_offset_y >= 0 ? "+" : "") + "[scope_offset_y]" + scope_element.screen_loc = "CENTER[x_to_set],CENTER[y_to_set]" + +/// Recalculates where the scope should be in relation to the user +/obj/item/attachable/vulture_scope/proc/recalculate_scope_pos() + if(!scope_user) + return + var/turf/current_turf = get_turf(src) + var/x_off = scope_x - current_turf.x + var/y_off = scope_y - current_turf.y + var/pixels_per_tile = 32 + var/mob/scoper = scope_user.resolve() + if(!scoper.client) + return + + if(scoping) + scoper.client.pixel_x = x_off * pixels_per_tile + scoper.client.pixel_y = y_off * pixels_per_tile + else + scoper.client.pixel_x = 0 + scoper.client.pixel_y = 0 + +/// Handler for when the user begins scoping +/obj/item/attachable/vulture_scope/proc/on_scope() + var/turf/gun_turf = get_turf(src) + scope_x = gun_turf.x + scope_y = gun_turf.y + scope_offset_x = 0 + scope_offset_y = 0 + holding_breath = FALSE + + if(!isgun(loc)) + return + + var/obj/item/weapon/gun/gun = loc + var/mob/living/gun_user = gun.get_gun_user() + if(!gun_user) + return + + switch(gun_user.dir) + if(NORTH) + scope_y += start_scope_range + if(EAST) + scope_x += start_scope_range + if(SOUTH) + scope_y -= start_scope_range + if(WEST) + scope_x -= start_scope_range + + scope_user = WEAKREF(gun_user) + scope_user_initial_dir = gun_user.dir + scoping = TRUE + recalculate_scope_pos() + gun_user.overlay_fullscreen("vulture", /atom/movable/screen/fullscreen/vulture) + scope_element = new(src) + gun_user.client.add_to_screen(scope_element) + gun_user.see_in_dark += darkness_view + gun_user.lighting_alpha = 127 + gun_user.sync_lighting_plane_alpha() + RegisterSignal(gun, list( + COMSIG_ITEM_DROPPED, + COMSIG_ITEM_UNWIELD, + ), PROC_REF(on_unscope)) + RegisterSignal(gun_user, COMSIG_MOB_UNDEPLOYED_BIPOD, PROC_REF(on_unscope)) + RegisterSignal(gun_user, COMSIG_MOB_MOVE_OR_LOOK, PROC_REF(on_mob_move_look)) + RegisterSignal(gun_user.client, COMSIG_PARENT_QDELETING, PROC_REF(on_unscope)) + +/// Handler for when the scope is deleted, dropped, etc. +/obj/item/attachable/vulture_scope/proc/on_unscope() + SIGNAL_HANDLER + if(!scope_user) + return + + var/mob/scoper = scope_user.resolve() + if(isgun(loc)) + UnregisterSignal(loc, list( + COMSIG_ITEM_DROPPED, + COMSIG_ITEM_UNWIELD, + )) + UnregisterSignal(scoper, list(COMSIG_MOB_UNDEPLOYED_BIPOD, COMSIG_MOB_MOVE_OR_LOOK)) + UnregisterSignal(scoper.client, COMSIG_PARENT_QDELETING) + stop_holding_breath() + scope_user_initial_dir = null + scoper.clear_fullscreen("vulture") + scoper.client.remove_from_screen(scope_element) + scoper.see_in_dark -= darkness_view + scoper.lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE + scoper.sync_lighting_plane_alpha() + QDEL_NULL(scope_element) + recalculate_scope_pos() + scope_user = null + scoping = FALSE + if(scoper.client) + scoper.client.pixel_x = 0 + scoper.client.pixel_y = 0 + +/// Handler for if the mob moves or changes look direction +/obj/item/attachable/vulture_scope/proc/on_mob_move_look(mob/living/mover, actually_moving, direction, specific_direction) + SIGNAL_HANDLER + + if(actually_moving || (mover.dir != scope_user_initial_dir)) + on_unscope() + +/// Causes the scope to drift in a random direction by 1 tile +/obj/item/attachable/vulture_scope/proc/scope_drift(forced_dir) + var/dir_picked + if(!forced_dir) + dir_picked = pick(get_offset_dirs()) + else + dir_picked = forced_dir + + adjust_offset(dir_picked) + +/// Returns the turf that the sniper scope + reticle is currently focused on +/obj/item/attachable/vulture_scope/proc/get_viewed_turf() + RETURN_TYPE(/turf) + if(!scoping) + return null + var/turf/gun_turf = get_turf(src) + return locate(scope_x + scope_offset_x, scope_y + scope_offset_y, gun_turf.z) + +/// Lets the user start holding their breath, stopping gun sway for a short time +/obj/item/attachable/vulture_scope/proc/hold_breath() + if(!scope_user) + return + + var/mob/scoper = scope_user.resolve() + to_chat(scoper, SPAN_NOTICE("You hold your breath, steadying your scope...")) + holding_breath = TRUE + INVOKE_ASYNC(src, PROC_REF(tick_down_breath_scope)) + addtimer(CALLBACK(src, PROC_REF(stop_holding_breath)), breath_time) + +/// Slowly empties out the crosshair as the user's breath runs out +/obj/item/attachable/vulture_scope/proc/tick_down_breath_scope() + scope_element.icon_state = "vulture_steady_4" + sleep(breath_time * 0.25) + scope_element.icon_state = "vulture_steady_3" + sleep(breath_time * 0.25) + scope_element.icon_state = "vulture_steady_2" + sleep(breath_time * 0.25) + scope_element.icon_state = "vulture_steady_1" + +/// Stops the user from holding their breath, starting the cooldown +/obj/item/attachable/vulture_scope/proc/stop_holding_breath() + if(!scope_user || !holding_breath) + return + + var/mob/scoper = scope_user.resolve() + to_chat(scoper, SPAN_NOTICE("You breathe out, letting your scope sway.")) + holding_breath = FALSE + scope_element.icon_state = "vulture_unsteady" + COOLDOWN_START(src, hold_breath_cd, breath_cooldown_time) +/// Returns a % of how much time until the user can still their breath again +/obj/item/attachable/vulture_scope/proc/get_breath_recharge() + return 1 - (COOLDOWN_TIMELEFT(src, hold_breath_cd) / breath_cooldown_time) + +/datum/action/item_action/vulture + +/datum/action/item_action/vulture/action_activate() + var/obj/item/weapon/gun/gun_holder = holder_item + var/obj/item/attachable/vulture_scope/scope = gun_holder.attachments["rail"] + if(!istype(scope)) + return + scope.tgui_interact(owner) // ======== Stock attachments ======== // @@ -1228,6 +1811,16 @@ Defined in conflicts.dm of the #defines folder. recoil_unwielded_mod = RECOIL_AMOUNT_TIER_5 scatter_unwielded_mod = SCATTER_AMOUNT_TIER_4 +/obj/item/attachable/stock/vulture + name = "\improper M707 heavy stock" + icon_state = "vulture_stock" + hud_offset_mod = 3 + +/obj/item/attachable/stock/vulture/Initialize(mapload, ...) + . = ..() + select_gamemode_skin(type) + // Doesn't give any stat additions due to the gun already having really good ones, and this is unremovable from the gun itself + /obj/item/attachable/stock/tactical name = "\improper MK221 tactical stock" desc = "A metal stock made for the MK221 tactical shotgun." @@ -1316,15 +1909,17 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/stock/hg3712/New() ..() - //it makes stuff much better when two-handed - accuracy_mod = HIT_ACCURACY_MULT_TIER_4 - recoil_mod = -RECOIL_AMOUNT_TIER_4 - scatter_mod = -SCATTER_AMOUNT_TIER_8 - movement_onehanded_acc_penalty_mod = -MOVEMENT_ACCURACY_PENALTY_MULT_TIER_5 - //it makes stuff much worse when one handed - accuracy_unwielded_mod = -HIT_ACCURACY_MULT_TIER_3 - recoil_unwielded_mod = RECOIL_AMOUNT_TIER_4 - scatter_unwielded_mod = SCATTER_AMOUNT_TIER_8 + + //HG stock is purely aesthetics, any changes should be done to the gun itself + accuracy_mod = 0 + recoil_mod = 0 + scatter_mod = 0 + movement_onehanded_acc_penalty_mod = 0 + accuracy_unwielded_mod = 0 + recoil_unwielded_mod = 0 + scatter_unwielded_mod = 0 + aim_speed_mod = 0 + wield_delay_mod = WIELD_DELAY_NONE /obj/item/attachable/stock/hg3712/m3717 name = "hg3717 stock" @@ -1510,6 +2105,43 @@ Defined in conflicts.dm of the #defines folder. flags_attach_features = NO_FLAGS hud_offset_mod = 2 +/obj/item/attachable/stock/xm51 + name = "\improper XM51 stock" + desc = "A specialized stock designed for XM51 breaching shotguns. Helps the user absorb the recoil of the weapon while also reducing scatter. Integrated mechanisms inside the stock allow use of a devastating two-shot burst. This comes at a cost of the gun becoming too unwieldy to holster, worse handling and mobility." + icon_state = "xm51_stock" + attach_icon = "xm51_stock_a" + wield_delay_mod = WIELD_DELAY_FAST + hud_offset_mod = 3 + melee_mod = 10 + +/obj/item/attachable/stock/xm51/Initialize(mapload, ...) + . = ..() + select_gamemode_skin(type) + //it makes stuff much better when two-handed + accuracy_mod = HIT_ACCURACY_MULT_TIER_3 + recoil_mod = -RECOIL_AMOUNT_TIER_4 + scatter_mod = -SCATTER_AMOUNT_TIER_8 + movement_onehanded_acc_penalty_mod = -MOVEMENT_ACCURACY_PENALTY_MULT_TIER_4 + //and allows for burst-fire + burst_mod = BURST_AMOUNT_TIER_2 + //but it makes stuff much worse when one handed + accuracy_unwielded_mod = -HIT_ACCURACY_MULT_TIER_5 + recoil_unwielded_mod = RECOIL_AMOUNT_TIER_5 + scatter_unwielded_mod = SCATTER_AMOUNT_TIER_6 + //and makes you slower + aim_speed_mod = CONFIG_GET(number/slowdown_med) + +/obj/item/attachable/stock/xm51/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) + . = ..() + var/new_attach_icon + switch(SSmapping.configs[GROUND_MAP].camouflage_type) + if("snow") + attach_icon = new_attach_icon ? new_attach_icon : "s_" + attach_icon + if("desert") + attach_icon = new_attach_icon ? new_attach_icon : "d_" + attach_icon + if("classic") + attach_icon = new_attach_icon ? new_attach_icon : "c_" + attach_icon + /obj/item/attachable/stock/mod88 name = "\improper Mod 88 burst stock" desc = "Increases the fire rate and burst amount on the Mod 88. Some versions act as a holster for the weapon when un-attached. This is a test item and should not be used in normal gameplay (yet)." @@ -1529,7 +2161,7 @@ Defined in conflicts.dm of the #defines folder. scatter_mod = -SCATTER_AMOUNT_TIER_7 burst_scatter_mod = -1 burst_mod = BURST_AMOUNT_TIER_2 - delay_mod = -FIRE_DELAY_TIER_9 + delay_mod = -FIRE_DELAY_TIER_11 movement_onehanded_acc_penalty_mod = -MOVEMENT_ACCURACY_PENALTY_MULT_TIER_4 //1h accuracy_unwielded_mod = HIT_ACCURACY_MULT_TIER_1 @@ -1602,7 +2234,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/m4ra_barrel name = "M4RA barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "m4ra_barrel" attach_icon = "m4ra_barrel" slot = "special" @@ -1618,18 +2250,17 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/m4ra_barrel/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) . = ..() var/new_attach_icon - switch(SSmapping.configs[GROUND_MAP].map_name) // maploader TODO: json - if(MAP_ICE_COLONY, MAP_ICE_COLONY_V3, MAP_CORSAT, MAP_SOROKYNE_STRATA) + switch(SSmapping.configs[GROUND_MAP].camouflage_type) + if("snow") attach_icon = new_attach_icon ? new_attach_icon : "s_" + attach_icon - if(MAP_WHISKEY_OUTPOST, MAP_DESERT_DAM, MAP_BIG_RED, MAP_KUTJEVO) + if("desert") attach_icon = new_attach_icon ? new_attach_icon : "d_" + attach_icon - if(MAP_PRISON_STATION, MAP_PRISON_STATION_V3, MAP_LV522_CHANCES_CLAIM) + if("classic") attach_icon = new_attach_icon ? new_attach_icon : "c_" + attach_icon - /obj/item/attachable/m4ra_barrel_custom name = "custom M4RA barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "m4ra_custom_barrel" attach_icon = "m4ra_custom_barrel" slot = "special" @@ -1645,14 +2276,89 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/m4ra_barrel_custom/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) . = ..() var/new_attach_icon - switch(SSmapping.configs[GROUND_MAP].map_name) // maploader TODO: json - if(MAP_ICE_COLONY, MAP_ICE_COLONY_V3, MAP_CORSAT, MAP_SOROKYNE_STRATA) + switch(SSmapping.configs[GROUND_MAP].camouflage_type) + if("snow") attach_icon = new_attach_icon ? new_attach_icon : "s_" + attach_icon - if(MAP_WHISKEY_OUTPOST, MAP_DESERT_DAM, MAP_BIG_RED, MAP_KUTJEVO) + if("desert") attach_icon = new_attach_icon ? new_attach_icon : "d_" + attach_icon - if(MAP_PRISON_STATION, MAP_PRISON_STATION_V3, MAP_LV522_CHANCES_CLAIM) + if("classic") attach_icon = new_attach_icon ? new_attach_icon : "c_" + attach_icon +/obj/item/attachable/upp_rpg_breech + name = "HJRA-12 Breech" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" + icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi' + icon_state = "hjra_breech" + attach_icon = "hjra_breech" + slot = "stock" + wield_delay_mod = WIELD_DELAY_NONE + flags_attach_features = NO_FLAGS + melee_mod = 0 + size_mod = 0 + +/obj/item/attachable/pkpbarrel + name = "QYJ-72 Barrel" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" + icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' + icon_state = "uppmg_barrel" + attach_icon = "uppmg_barrel" + slot = "muzzle" + wield_delay_mod = WIELD_DELAY_NONE + flags_attach_features = NO_FLAGS + melee_mod = 0 + size_mod = 0 + +/obj/item/attachable/stock/pkpstock + name = "QYJ-72 Stock" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" + icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi' + icon_state = "uppmg_stock" + attach_icon = "uppmg_stock" + slot = "stock" + wield_delay_mod = WIELD_DELAY_NONE + flags_attach_features = NO_FLAGS + melee_mod = 20 //the thought of a upp spec beating people to death with a pk makes me laugh + size_mod = 0 + +/obj/item/attachable/type88_barrel + name = "Type-88 Barrel" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" + icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' + icon_state = "type88_barrel" + attach_icon = "type88_barrel" + slot = "special" + wield_delay_mod = WIELD_DELAY_NONE + flags_attach_features = NO_FLAGS + melee_mod = 0 + size_mod = 0 + +/obj/item/attachable/type73suppressor + name = "Type 73 Integrated Suppressor" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" + icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' + icon_state = "type73_suppressor" + attach_icon = "type73_suppressor" + slot = "muzzle" + wield_delay_mod = WIELD_DELAY_NONE + flags_attach_features = NO_FLAGS + melee_mod = 0 + size_mod = 0 + +/obj/item/attachable/stock/type71 + name = "Type 71 Stock" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" + icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi' + icon_state = "type71_stock" + attach_icon = "type71_stock" + slot = "stock" + wield_delay_mod = WIELD_DELAY_NONE + flags_attach_features = NO_FLAGS + melee_mod = 15 + size_mod = 0 + +/obj/item/attachable/stock/type71/New() + ..() + /obj/item/attachable/stock/smg name = "submachinegun stock" desc = "A rare ARMAT stock distributed in small numbers to USCM forces. Compatible with the M39, this stock reduces recoil and improves accuracy, but at a reduction to handling and agility. Seemingly a bit more effective in a brawl" @@ -1678,7 +2384,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/stock/smg/collapsible name = "submachinegun folding stock" - desc = "A Kirchner brand K2 M39 folding stock, standard issue in the USCM. The stock, when extended, reduces recoil and improves accuracy, but at a reduction to handling and agility. Seemingly a bit more effective in a brawl. This stock can collapse in, removing almost all positive and negative effects, however it slightly increases spread due to weapon being off-balanced by the collapsed stock." + desc = "A Kirchner brand K2 M39 folding stock, standard issue in the USCM. The stock, when extended, reduces recoil and improves accuracy, but at a reduction to handling and agility. Seemingly a bit more effective in a brawl. This stock can collapse in, removing all positive and negative effects." slot = "stock" melee_mod = 10 size_mod = 1 @@ -1711,6 +2417,9 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/stock/smg/collapsible/apply_on_weapon(obj/item/weapon/gun/gun) if(stock_activated) + accuracy_mod = HIT_ACCURACY_MULT_TIER_3 + recoil_mod = -RECOIL_AMOUNT_TIER_4 + scatter_mod = -SCATTER_AMOUNT_TIER_8 scatter_unwielded_mod = SCATTER_AMOUNT_TIER_10 size_mod = 1 aim_speed_mod = CONFIG_GET(number/slowdown_low) @@ -1723,22 +2432,20 @@ Defined in conflicts.dm of the #defines folder. attach_icon = "smgstockc_a" else + accuracy_mod = 0 + recoil_mod = 0 + scatter_mod = 0 scatter_unwielded_mod = 0 size_mod = 0 aim_speed_mod = 0 wield_delay_mod = 0 movement_onehanded_acc_penalty_mod = 0 - accuracy_unwielded_mod = -HIT_ACCURACY_MULT_TIER_1 - recoil_unwielded_mod = RECOIL_AMOUNT_TIER_5 + accuracy_unwielded_mod = 0 + recoil_unwielded_mod = 0 hud_offset_mod = 3 icon_state = "smgstockcc" attach_icon = "smgstockcc_a" - //don't *= -1 on debuffs, you'd actually be making than without stock when it's collapsed. - accuracy_mod *= -1 - recoil_mod *= -1 - scatter_mod *= -1 - gun.recalculate_attachment_bonuses() gun.update_overlays(src, "stock") @@ -1926,18 +2633,34 @@ Defined in conflicts.dm of the #defines folder. /// An assoc list in the format list(/datum/element/bullet_trait_to_give = list(...args)) /// that will be given to the projectiles of the attached gun var/list/list/traits_to_give_attached + /// Current target we're firing at + var/mob/target -/obj/item/attachable/attached_gun/New() //Let's make sure if something needs an ammo type, it spawns with one. - ..() +/obj/item/attachable/attached_gun/Initialize(mapload, ...) //Let's make sure if something needs an ammo type, it spawns with one. + . = ..() if(ammo) ammo = GLOB.ammo_list[ammo] /obj/item/attachable/attached_gun/Destroy() ammo = null - . = ..() - + target = null + return ..() +/// setter for target +/obj/item/attachable/attached_gun/proc/set_target(atom/object) + if(object == target) + return + if(target) + UnregisterSignal(target, COMSIG_PARENT_QDELETING) + target = object + if(target) + RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(clean_target)) + +///Set the target to its turf, so we keep shooting even when it was qdeled +/obj/item/attachable/attached_gun/proc/clean_target() + SIGNAL_HANDLER + target = get_turf(target) /obj/item/attachable/attached_gun/activate_attachment(obj/item/weapon/gun/G, mob/living/user, turn_off) if(G.active_attachable == src) @@ -1958,6 +2681,8 @@ Defined in conflicts.dm of the #defines folder. G.damage_mult = 1 icon_state += "-on" + SEND_SIGNAL(G, COMSIG_GUN_INTERRUPT_FIRE) + for(var/X in G.actions) var/datum/action/A = X A.update_button_icon() @@ -1967,7 +2692,7 @@ Defined in conflicts.dm of the #defines folder. //The requirement for an attachable being alt fire is AMMO CAPACITY > 0. /obj/item/attachable/attached_gun/grenade - name = "underslung grenade launcher" + name = "U1 grenade launcher" desc = "A weapon-mounted, reloadable grenade launcher." icon_state = "grenade" attach_icon = "grenade_a" @@ -2002,7 +2727,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/attached_gun/grenade/unique_action(mob/user) if(!ishuman(usr)) return - if(!user.canmove || user.stat || user.is_mob_restrained() || !user.loc || !isturf(usr.loc)) + if(user.is_mob_incapacitated() || !isturf(usr.loc)) to_chat(user, SPAN_WARNING("Not right now.")) return @@ -2243,7 +2968,7 @@ Defined in conflicts.dm of the #defines folder. var/obj/item/weapon/gun/attached_gun = loc if(!(attached_gun.flags_item & WIELDED)) - to_chat(user, SPAN_WARNING("You must wield \the [attached_gun] to fire \the [src]!")) + to_chat(user, SPAN_WARNING("You must wield [attached_gun] to fire [src]!")) return if(current_rounds > round_usage_per_tile && ..()) @@ -2253,7 +2978,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/attached_gun/flamer/proc/unleash_flame(atom/target, mob/living/user) set waitfor = 0 - var/list/turf/turfs = getline2(user,target) + var/list/turf/turfs = get_line(user,target) var/distance = 0 var/turf/prev_T var/stop_at_turf = FALSE @@ -2308,6 +3033,9 @@ Defined in conflicts.dm of the #defines folder. burn_level = BURN_LEVEL_TIER_5 burn_duration = BURN_TIME_TIER_2 +/obj/item/attachable/attached_gun/flamer/advanced/unique_action(mob/user) + return //No need for volatile mode, it already does high damage by default + /obj/item/attachable/attached_gun/flamer/advanced/integrated name = "integrated flamethrower" @@ -2414,7 +3142,7 @@ Defined in conflicts.dm of the #defines folder. attach_icon = "flamer_nozzle_a_1" w_class = SIZE_MEDIUM slot = "under" - flags_attach_features = ATTACH_REMOVABLE|ATTACH_ACTIVATION|ATTACH_WEAPON|ATTACH_MELEE + flags_attach_features = ATTACH_REMOVABLE|ATTACH_ACTIVATION|ATTACH_WEAPON|ATTACH_MELEE|ATTACH_IGNORE_EMPTY pixel_shift_x = 4 pixel_shift_y = 14 @@ -2442,11 +3170,11 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/attached_gun/flamer_nozzle/fire_attachment(atom/target, obj/item/weapon/gun/gun, mob/living/user) . = ..() - if(world.time < gun.last_fired + gun.fire_delay) + if(world.time < gun.last_fired + gun.get_fire_delay()) return if((gun.flags_gun_features & GUN_WIELDED_FIRING_ONLY) && !(gun.flags_item & WIELDED)) - to_chat(user, SPAN_WARNING("You need a more secure grip to fire this weapon!")) + to_chat(user, SPAN_WARNING("You must wield [gun] to fire [src]!")) return if(gun.flags_gun_features & GUN_TRIGGER_SAFETY) @@ -2469,7 +3197,7 @@ Defined in conflicts.dm of the #defines folder. gun.last_fired = world.time gun.current_mag.reagents.remove_reagent(flamer_reagent.id, FLAME_REAGENT_USE_AMOUNT * fuel_per_projectile) - var/obj/item/projectile/P = new(src, create_cause_data(initial(name), user, src)) + var/obj/projectile/P = new(src, create_cause_data(initial(name), user, src)) var/datum/ammo/flamethrower/ammo_datum = new projectile_type ammo_datum.flamer_reagent_type = flamer_reagent.type P.generate_bullet(ammo_datum) @@ -2502,10 +3230,9 @@ Defined in conflicts.dm of the #defines folder. accuracy_unwielded_mod = -HIT_ACCURACY_MULT_TIER_3 scatter_unwielded_mod = SCATTER_AMOUNT_TIER_10 - /obj/item/attachable/angledgrip name = "angled grip" - desc = "An angled foregrip that improves weapon ergonomics and offers less recoil, and faster wielding time. \nHowever, it also increases weapon size." + desc = "An angled foregrip that improves weapon ergonomics resulting in faster wielding time. \nHowever, it also increases weapon size." icon = 'icons/obj/items/weapons/guns/attachments/under.dmi' icon_state = "angledgrip" attach_icon = "angledgrip_a" @@ -2514,16 +3241,6 @@ Defined in conflicts.dm of the #defines folder. slot = "under" pixel_shift_x = 20 -/obj/item/attachable/angledgrip/New() - ..() - recoil_mod = -RECOIL_AMOUNT_TIER_4 - accuracy_mod = HIT_ACCURACY_MULT_TIER_1 - accuracy_unwielded_mod = -HIT_ACCURACY_MULT_TIER_1 - scatter_mod = -SCATTER_AMOUNT_TIER_10 - scatter_unwielded_mod = SCATTER_AMOUNT_TIER_10 - - - /obj/item/attachable/gyro name = "gyroscopic stabilizer" desc = "A set of weights and balances to stabilize the weapon when fired with one hand. Slightly decreases firing speed." @@ -2534,7 +3251,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/gyro/New() ..() - delay_mod = FIRE_DELAY_TIER_9 + delay_mod = FIRE_DELAY_TIER_11 scatter_mod = -SCATTER_AMOUNT_TIER_10 burst_scatter_mod = -2 movement_onehanded_acc_penalty_mod = -MOVEMENT_ACCURACY_PENALTY_MULT_TIER_3 @@ -2582,11 +3299,13 @@ Defined in conflicts.dm of the #defines folder. attachment_action_type = /datum/action/item_action/toggle var/initial_mob_dir = NORTH // the dir the mob faces the moment it deploys the bipod var/bipod_deployed = FALSE + /// If this should anchor the user while in use + var/heavy_bipod = FALSE /obj/item/attachable/bipod/New() ..() - delay_mod = FIRE_DELAY_TIER_9 + delay_mod = FIRE_DELAY_TIER_11 wield_delay_mod = WIELD_DELAY_FAST accuracy_mod = -HIT_ACCURACY_MULT_TIER_5 scatter_mod = SCATTER_AMOUNT_TIER_9 @@ -2629,20 +3348,26 @@ Defined in conflicts.dm of the #defines folder. user.apply_effect(2, SLOW) /obj/item/attachable/bipod/proc/undeploy_bipod(obj/item/weapon/gun/G) + REMOVE_TRAIT(G, TRAIT_GUN_BIPODDED, "attached_bipod") bipod_deployed = FALSE accuracy_mod = -HIT_ACCURACY_MULT_TIER_5 scatter_mod = SCATTER_AMOUNT_TIER_9 recoil_mod = RECOIL_AMOUNT_TIER_5 burst_scatter_mod = 0 - delay_mod = FIRE_DELAY_TIER_10 + delay_mod = FIRE_DELAY_TIER_12 G.recalculate_attachment_bonuses() + G.stop_fire() var/mob/living/user if(isliving(G.loc)) user = G.loc + SEND_SIGNAL(user, COMSIG_MOB_UNDEPLOYED_BIPOD) UnregisterSignal(user, COMSIG_MOB_MOVE_OR_LOOK) if(G.flags_gun_features & GUN_SUPPORT_PLATFORM) - G.remove_bullet_trait("iff") + G.remove_firemode(GUN_FIREMODE_AUTOMATIC) + + if(heavy_bipod) + user.anchored = FALSE if(!QDELETED(G)) playsound(user,'sound/items/m56dauto_rotate.ogg', 55, 1) @@ -2662,7 +3387,9 @@ Defined in conflicts.dm of the #defines folder. bipod_deployed = !bipod_deployed if(user) if(bipod_deployed) + ADD_TRAIT(G, TRAIT_GUN_BIPODDED, "attached_bipod") to_chat(user, SPAN_NOTICE("You deploy [src] [support ? "on [support]" : "on the ground"].")) + SEND_SIGNAL(user, COMSIG_MOB_DEPLOYED_BIPOD) playsound(user,'sound/items/m56dauto_rotate.ogg', 55, 1) accuracy_mod = HIT_ACCURACY_MULT_TIER_5 scatter_mod = -SCATTER_AMOUNT_TIER_10 @@ -2671,14 +3398,18 @@ Defined in conflicts.dm of the #defines folder. if(istype(G,/obj/item/weapon/gun/rifle/sniper/M42A)) delay_mod = -FIRE_DELAY_TIER_7 else - delay_mod = -FIRE_DELAY_TIER_10 + delay_mod = -FIRE_DELAY_TIER_12 G.recalculate_attachment_bonuses() + G.stop_fire() initial_mob_dir = user.dir RegisterSignal(user, COMSIG_MOB_MOVE_OR_LOOK, PROC_REF(handle_mob_move_or_look)) if(G.flags_gun_features & GUN_SUPPORT_PLATFORM) - G.add_bullet_trait(BULLET_TRAIT_ENTRY_ID("iff", /datum/element/bullet_trait_iff)) + G.add_firemode(GUN_FIREMODE_AUTOMATIC) + + if(heavy_bipod) + user.anchored = TRUE else to_chat(user, SPAN_NOTICE("You retract [src].")) @@ -2723,6 +3454,12 @@ Defined in conflicts.dm of the #defines folder. flags_attach_features = ATTACH_ACTIVATION +/obj/item/attachable/bipod/vulture + name = "heavy bipod" + desc = "A set of rugged telescopic poles to keep a weapon stabilized during firing." + icon_state = "bipod_m60" + attach_icon = "vulture_bipod" + heavy_bipod = TRUE /obj/item/attachable/burstfire_assembly name = "burst fire assembly" @@ -2752,4 +3489,3 @@ Defined in conflicts.dm of the #defines folder. accuracy_mod = HIT_ACCURACY_MULT_TIER_5 accuracy_unwielded_mod = HIT_ACCURACY_MULT_TIER_5 damage_mod -= BULLET_DAMAGE_MULT_TIER_4 - diff --git a/code/modules/projectiles/gun_helpers.dm b/code/modules/projectiles/gun_helpers.dm index 98d1be3a9c64..66e3a65f2f77 100644 --- a/code/modules/projectiles/gun_helpers.dm +++ b/code/modules/projectiles/gun_helpers.dm @@ -136,30 +136,7 @@ DEFINES in setup.dm, referenced here. else ..() -/* -Note: pickup and dropped on weapons must have both the ..() to update zoom AND twohanded, -As sniper rifles have both and weapon mods can change them as well. ..() deals with zoom only. -*/ -/obj/item/weapon/gun/dropped(mob/user) - . = ..() - - turn_off_light(user) - - var/delay_left = (last_fired + fire_delay + additional_fire_group_delay) - world.time - if(fire_delay_group && delay_left > 0) - for(var/group in fire_delay_group) - LAZYSET(user.fire_delay_next_fire, group, world.time + delay_left) - - unwield(user) - -/obj/item/weapon/gun/equipped(mob/user, slot) - . = ..() - - var/delay_left = (last_fired + fire_delay + additional_fire_group_delay) - world.time - if(fire_delay_group && delay_left > 0) - for(var/group in fire_delay_group) - LAZYSET(user.fire_delay_next_fire, group, world.time + delay_left) - +/// This function actually turns the lights on the gun off /obj/item/weapon/gun/proc/turn_off_light(mob/bearer) if (!(flags_gun_features & GUN_FLASHLIGHT_ON)) return FALSE @@ -167,23 +144,13 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w var/obj/item/attachable/attachment = attachments[slot] if (!attachment || !attachment.light_mod) continue - bearer.SetLuminosity(0, FALSE, src) - SetLuminosity(attachment.light_mod) + attachment.activate_attachment(src, bearer) return TRUE return FALSE /obj/item/weapon/gun/pickup(mob/user) ..() - if (flags_gun_features & GUN_FLASHLIGHT_ON) - for (var/slot in attachments) - var/obj/item/attachable/attachment = attachments[slot] - if (!attachment || !attachment.light_mod) - continue - user.SetLuminosity(attachment.light_mod, FALSE, src) - SetLuminosity(0) - break - unwield(user) /obj/item/weapon/gun/proc/wy_allowed_check(mob/living/carbon/human/user) @@ -428,7 +395,7 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w playsound(user, 'sound/handling/attachment_add.ogg', 15, 1, 4) return TRUE -/obj/item/weapon/gun/proc/on_detach(obj/item/attachable/attachment) +/obj/item/weapon/gun/proc/on_detach(mob/user, obj/item/attachable/attachment) return /obj/item/weapon/gun/proc/update_attachables() //Updates everything. You generally don't need to use this. @@ -495,7 +462,7 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w /obj/item/weapon/gun/proc/get_active_firearm(mob/user, restrictive = TRUE) if(!ishuman(usr)) return - if(!user.canmove || user.stat || user.is_mob_restrained() || !user.loc || !isturf(usr.loc)) + if(user.is_mob_incapacitated() || !isturf(usr.loc)) to_chat(user, SPAN_WARNING("Not right now.")) return @@ -541,6 +508,12 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w var/obj/item/storage/internal/accessory/holster/holster = cycled_holster.hold if(holster.current_gun) return holster.current_gun + + for(var/obj/item/clothing/accessory/storage/cycled_accessory in w_uniform.accessories) + var/obj/item/storage/internal/accessory/accessory_storage = cycled_accessory.hold + if(accessory_storage.storage_flags & STORAGE_ALLOW_QUICKDRAW) + return accessory_storage + return FALSE if(istype(slot) && (slot.storage_flags & STORAGE_ALLOW_QUICKDRAW)) @@ -553,12 +526,7 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w return FALSE -//For the holster hotkey -/mob/living/silicon/robot/verb/holster_verb(unholster_number_offset = 1 as num) - set name = "holster" - set hidden = TRUE - uneq_active() - +///For the holster hotkey /mob/living/carbon/human/verb/holster_verb(unholster_number_offset = 1 as num) set name = "holster" set hidden = TRUE @@ -578,7 +546,7 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w var/obj/item/clothing/accessory/storage/holster/holster_ammo = accessory if(istype(holster_ammo)) var/obj/item/storage/internal/accessory/holster/storage = holster_ammo.hold - if(storage.can_be_inserted(active_hand, TRUE)) + if(storage.can_be_inserted(active_hand, src, stop_messages = TRUE)) storage.handle_item_insertion(active_hand, user = src) return @@ -668,72 +636,80 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w playsound(src, 'sound/handling/attachment_remove.ogg', 15, 1, 4) update_icon() -/obj/item/weapon/gun/proc/toggle_burst(mob/user) - //Burst of 1 doesn't mean anything. The weapon will only fire once regardless. - //Just a good safety to have all weapons that can equip a scope with 1 burst_amount. - if(burst_amount < 2 && !(flags_gun_features & GUN_HAS_FULL_AUTO)) - to_chat(user, SPAN_WARNING("This weapon does not have a burst fire mode!")) - return - +/obj/item/weapon/gun/proc/do_toggle_firemode(datum/source, datum/keybinding, new_firemode) + SIGNAL_HANDLER if(flags_gun_features & GUN_BURST_FIRING)//can't toggle mid burst return - if(flags_gun_features & GUN_BURST_ONLY) - if(!(flags_gun_features & GUN_BURST_ON)) - stack_trace("[src] has GUN_BURST_ONLY flag but not GUN_BURST_ON.") - flags_gun_features |= GUN_BURST_ON - return + if(!length(gun_firemode_list)) + CRASH("[src] called do_toggle_firemode() with an empty gun_firemode_list") - to_chat(user, SPAN_NOTICE("\The [src] can only be fired in bursts!")) + if(length(gun_firemode_list) == 1) + to_chat(source, SPAN_NOTICE("[icon2html(src, source)] This gun only has one firemode.")) return - if(flags_gun_features & GUN_FULL_AUTO_ONLY) - if(!(flags_gun_features & GUN_FULL_AUTO_ON)) - stack_trace("[src] has GUN_FULL_AUTO_ONLY flag but not GUN_FULL_AUTO_ON.") - flags_gun_features |= GUN_FULL_AUTO_ON - RegisterSignal(user.client, COMSIG_CLIENT_LMB_DOWN, PROC_REF(full_auto_start)) - RegisterSignal(user.client, COMSIG_CLIENT_LMB_UP, PROC_REF(full_auto_stop)) - RegisterSignal(user.client, COMSIG_CLIENT_LMB_DRAG, PROC_REF(full_auto_new_target)) - return + if(new_firemode) + if(!(new_firemode in gun_firemode_list)) + CRASH("[src] called do_toggle_firemode() with [new_firemode] new_firemode, not on gun_firemode_list") + gun_firemode = new_firemode + else + var/mode_index = gun_firemode_list.Find(gun_firemode) + if(++mode_index <= length(gun_firemode_list)) + gun_firemode = gun_firemode_list[mode_index] + else + gun_firemode = gun_firemode_list[1] + + playsound(source, 'sound/weapons/handling/gun_burst_toggle.ogg', 15, 1) + + if(ishuman(source)) + to_chat(source, SPAN_NOTICE("[icon2html(src, source)] You switch to [gun_firemode].")) + SEND_SIGNAL(src, COMSIG_GUN_FIRE_MODE_TOGGLE, gun_firemode) - to_chat(user, SPAN_NOTICE("\The [src] can only be fired in full auto mode!")) +/obj/item/weapon/gun/proc/add_firemode(added_firemode, mob/user) + gun_firemode_list |= added_firemode + + if(!length(gun_firemode_list)) + CRASH("add_firemode called with a resulting gun_firemode_list length of [length(gun_firemode_list)].") + +/obj/item/weapon/gun/proc/remove_firemode(removed_firemode, mob/user) + if(!(removed_firemode in gun_firemode_list)) return - playsound(user, 'sound/weapons/handling/gun_burst_toggle.ogg', 15, 1) + if(!length(gun_firemode_list) || (length(gun_firemode_list) == 1)) + CRASH("remove_firemode called with gun_firemode_list length [length(gun_firemode_list)].") - if(flags_gun_features & GUN_HAS_FULL_AUTO) - if((flags_gun_features & GUN_BURST_ON) || (burst_amount < 2 && !(flags_gun_features & GUN_FULL_AUTO_ON))) - flags_gun_features &= ~GUN_BURST_ON - flags_gun_features |= GUN_FULL_AUTO_ON + gun_firemode_list -= removed_firemode - // Register the full auto click listeners - RegisterSignal(user.client, COMSIG_CLIENT_LMB_DOWN, PROC_REF(full_auto_start)) - RegisterSignal(user.client, COMSIG_CLIENT_LMB_UP, PROC_REF(full_auto_stop)) - RegisterSignal(user.client, COMSIG_CLIENT_LMB_DRAG, PROC_REF(full_auto_new_target)) + if(gun_firemode == removed_firemode) + gun_firemode = gun_firemode_list[1] + do_toggle_firemode(user, gun_firemode) - to_chat(user, SPAN_NOTICE("[icon2html(src, user)] You set [src] to full auto mode.")) - return - else if(flags_gun_features & GUN_FULL_AUTO_ON) - flags_gun_features &= ~GUN_FULL_AUTO_ON - REMOVE_TRAIT(user, TRAIT_OVERRIDE_CLICKDRAG, TRAIT_SOURCE_WEAPON) - full_auto_stop() // If the LMBUP hasn't been called for any reason. - UnregisterSignal(user.client, list( - COMSIG_CLIENT_LMB_DOWN, - COMSIG_CLIENT_LMB_UP, - COMSIG_CLIENT_LMB_DRAG, - )) - - to_chat(user, SPAN_NOTICE("[icon2html(src, user)] You set [src] to single fire mode.")) - return +/obj/item/weapon/gun/proc/setup_firemodes() + var/old_firemode = gun_firemode + gun_firemode_list.len = 0 + + if(start_automatic) + gun_firemode_list |= GUN_FIREMODE_AUTOMATIC + if(start_semiauto) + gun_firemode_list |= GUN_FIREMODE_SEMIAUTO - flags_gun_features ^= GUN_BURST_ON - to_chat(user, SPAN_NOTICE("[icon2html(src, user)] You [flags_gun_features & GUN_BURST_ON ? "enable" : "disable"] [src]'s burst fire mode.")) + if(burst_amount > BURST_AMOUNT_TIER_1) + gun_firemode_list |= GUN_FIREMODE_BURSTFIRE + + if(!length(gun_firemode_list)) + CRASH("[src] called setup_firemodes() with an empty gun_firemode_list") + + else if(old_firemode in gun_firemode_list) + gun_firemode = old_firemode + + else + gun_firemode = gun_firemode_list[1] /obj/item/weapon/gun/verb/use_toggle_burst() set category = "Weapons" - set name = "Toggle Burst Fire Mode" - set desc = "Toggle on or off your weapon burst mode, if it has one. Greatly reduces accuracy." + set name = "Toggle Firemode" + set desc = "Cycles through your gun's firemodes. Automatic modes greatly reduce accuracy." set src = usr.contents var/obj/item/weapon/gun/active_firearm = get_active_firearm(usr) @@ -741,7 +717,7 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w return src = active_firearm - toggle_burst(usr) + do_toggle_firemode(usr) /obj/item/weapon/gun/verb/empty_mag() set category = "Weapons" @@ -947,3 +923,24 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w return TRUE return FALSE + +///Helper proc that processes a clicked target, if the target is not black tiles, it will not change it. If they are it will return the turf of the black tiles. It will return null if the object is a screen object other than black tiles. +/proc/get_turf_on_clickcatcher(atom/target, mob/user, params) + var/list/modifiers = params2list(params) + if(!istype(target, /atom/movable/screen)) + return target + if(!istype(target, /atom/movable/screen/click_catcher)) + return null + return params2turf(modifiers["screen-loc"], get_turf(user), user.client) + +/// If this gun has a relevant flashlight attachable attached, (de)activate it +/obj/item/weapon/gun/proc/force_light(on) + var/obj/item/attachable/flashlight/torch + for(var/slot in attachments) + torch = attachments[slot] + if(istype(torch)) + break + if(!torch) + return FALSE + torch.turn_light(toggle_on = on, forced = TRUE) + return TRUE diff --git a/code/modules/projectiles/guns/boltaction.dm b/code/modules/projectiles/guns/boltaction.dm index c34e9d44a626..a06131f98ce0 100644 --- a/code/modules/projectiles/guns/boltaction.dm +++ b/code/modules/projectiles/guns/boltaction.dm @@ -33,9 +33,13 @@ aim_slowdown = SLOWDOWN_ADS_RIFLE wield_delay = WIELD_DELAY_NORMAL civilian_usable_override = TRUE + unacidable = TRUE // Like other 1-of-a-kind weapons, it can't be gotten rid of that fast + indestructible = TRUE var/bolted = TRUE // FALSE IS OPEN, TRUE IS CLOSE var/bolt_delay var/recent_cycle //world.time to see when they last bolted it. + /// If this gun should change icon states when the bolt is open + var/has_openbolt_icon = TRUE /obj/item/weapon/gun/boltaction/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 17,"rail_x" = 5, "rail_y" = 18, "under_x" = 25, "under_y" = 14, "stock_x" = 18, "stock_y" = 10) @@ -49,15 +53,15 @@ ..() var/new_icon_state = icon_state - if(!bolted) + if(!bolted && has_openbolt_icon) new_icon_state += "_o" icon_state = new_icon_state /obj/item/weapon/gun/boltaction/set_gun_config_values() ..() - burst_amount = 0 - fire_delay = FIRE_DELAY_TIER_4 + set_burst_amount(0) + set_fire_delay(FIRE_DELAY_TIER_4) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_6 @@ -111,3 +115,167 @@ SPAN_NOTICE("You load [magazine] into [src]!"), null, 3, CHAT_TYPE_COMBAT_ACTION) if(reload_sound) playsound(user, reload_sound, 25, 1, 5) + + +/obj/item/weapon/gun/boltaction/vulture + name = "\improper M707 \"Vulture\" anti-materiel rifle" + desc = "The M707 is a crude but highly powerful rifle, designed for disabling lightly armored vehicles and hitting targets inside buildings. Its unwieldy scope and caliber necessitates a spotter to be fully effective, suffering severe scope drift without one." + desc_lore = {" + Put into production in 2175 as an economical answer to rising militancy in the Outer Rim, the M707 was derived from jury-rigged anti-materiel rifles that were captured during the Linna 349 campaign. + + The rebels (colloquially known among the USCMC as bug-boys and beebops) had achieved extensive success at Neusheune using the aforementioned rifles to pick off incinerator-wielding marines by detonating their napthal fuel tank in the midst of squad formations, subsequently leading to the USCMC designating users of those rifles as high-priority targets, as well as changes in USCMC patrol tactics. + + Some of the failings and quirks of the beebops' jury-rigged rifle were quickly noticed by vehicle crews early on in the campaign, as in multiple memoirs the crews mention that: "Once the rain starts, that's when you know you've got an ambush." + + The 'pitter-patter' of 'rain' that the crews heard was in fact multiple rifles failing to penetrate through the vehicle's external armor. Once a number of the anti-materiel rifles were examined, it was deemed a high priority to produce a Corps version. In the process, the rifles were designed for a higher calibre then that of the rebel versions, so the M707 would be capable of penetrating the light vehicle armor of their UPP peers in the event of another Dog War or Tientsin."} + + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' // overridden with camos + icon_state = "vulture" + item_state = "vulture" + cocked_sound = 'sound/weapons/gun_cocked2.ogg' + fire_sound = 'sound/weapons/gun_vulture_fire.ogg' + open_bolt_sound ='sound/weapons/handling/gun_vulture_bolt_eject.ogg' + close_bolt_sound ='sound/weapons/handling/gun_vulture_bolt_close.ogg' + flags_equip_slot = SLOT_BACK|SLOT_BLOCK_SUIT_STORE + w_class = SIZE_LARGE + force = 5 + flags_gun_features = NONE + gun_category = GUN_CATEGORY_HEAVY + aim_slowdown = SLOWDOWN_ADS_SPECIALIST // Consider SUPERWEAPON, but it's not like you can fire this without being bipodded + wield_delay = WIELD_DELAY_VERY_SLOW + map_specific_decoration = TRUE + current_mag = /obj/item/ammo_magazine/rifle/boltaction/vulture + attachable_allowed = list( + /obj/item/attachable/sniperbarrel/vulture, + /obj/item/attachable/vulture_scope, + /obj/item/attachable/bipod/vulture, + /obj/item/attachable/stock/vulture, + ) + starting_attachment_types = list( + /obj/item/attachable/sniperbarrel/vulture, + /obj/item/attachable/vulture_scope, + /obj/item/attachable/bipod/vulture, + /obj/item/attachable/stock/vulture, + ) + civilian_usable_override = FALSE + projectile_type = /obj/projectile/vulture + actions_types = list( + /datum/action/item_action/vulture, + ) + has_openbolt_icon = FALSE + bolt_delay = 1 SECONDS + /// How far out people can tell the direction of the shot + var/fire_message_range = 25 + /// If the gun should bypass the trait requirement + var/bypass_trait = FALSE + +/obj/item/weapon/gun/boltaction/vulture/update_icon() + ..() + if(!bolted) + overlays += "vulture_bolt_open" + + +/obj/item/weapon/gun/boltaction/vulture/set_gun_config_values() //check that these work + ..() + set_fire_delay(FIRE_DELAY_TIER_VULTURE) + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_7 + accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 + scatter = SCATTER_AMOUNT_TIER_10 + burst_scatter_mult = SCATTER_AMOUNT_TIER_6 + scatter_unwielded = SCATTER_AMOUNT_TIER_2 + damage_mult = BASE_BULLET_DAMAGE_MULT + recoil = RECOIL_AMOUNT_TIER_4 + recoil_unwielded = RECOIL_AMOUNT_TIER_2 + damage_falloff_mult = 0 + +/obj/item/weapon/gun/boltaction/vulture/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 19, "rail_x" = 11, "rail_y" = 24, "under_x" = 25, "under_y" = 14, "stock_x" = 11, "stock_y" = 15) + +/obj/item/weapon/gun/boltaction/vulture/able_to_fire(mob/user) + . = ..() + if(!.) + return + + if(!bypass_trait && !HAS_TRAIT(user, TRAIT_VULTURE_USER)) + to_chat(user, SPAN_WARNING("You don't know how to use this!")) + return + +/obj/item/weapon/gun/boltaction/vulture/Fire(atom/target, mob/living/user, params, reflex, dual_wield) + var/obj/item/attachable/vulture_scope/scope = attachments["rail"] + if(istype(scope) && scope.scoping) + var/turf/viewed_turf = scope.get_viewed_turf() + target = viewed_turf + var/mob/living/living_mob = locate(/mob/living) in viewed_turf + if(living_mob) + target = living_mob + + . = ..() + if(!.) + return . + + for(var/mob/current_mob as anything in get_mobs_in_z_level_range(get_turf(user), fire_message_range) - user) + var/relative_dir = Get_Compass_Dir(current_mob, user) + var/final_dir = dir2text(relative_dir) + to_chat(current_mob, SPAN_HIGHDANGER("You hear a massive boom coming from [final_dir ? "the [final_dir]" : "nearby"]!")) + if(current_mob.client) + playsound_client(current_mob.client, 'sound/weapons/gun_vulture_report.ogg', src, 25) + + if(!HAS_TRAIT(src, TRAIT_GUN_BIPODDED)) + fired_without_bipod(user) + else + shake_camera(user, 3, 4) // equivalent to getting hit with a heavy round + + return . + +/// Someone tried to fire this without using a bipod, so we break their arm along with sending them flying backwards +/obj/item/weapon/gun/boltaction/vulture/proc/fired_without_bipod(mob/living/user) + SEND_SIGNAL(src, COMSIG_GUN_VULTURE_FIRED_ONEHAND) + to_chat(user, SPAN_HIGHDANGER("You get flung backwards as you fire [src], breaking your firing arm in the process!")) + user.apply_effect(0.7, WEAKEN) + user.apply_effect(1, SUPERSLOW) + user.apply_effect(2, SLOW) + + if(ishuman(user)) + if(user.hand) + break_arm(user, RIGHT) + else + break_arm(user, LEFT) + + //Either knockback or slam them into an obstacle. + var/direction = REVERSE_DIR(user.dir) + if(direction && !step(user, direction)) + user.animation_attack_on(get_step(user, direction)) + user.visible_message(SPAN_DANGER("[user] slams into an obstacle!"), SPAN_HIGHDANGER("You slam into an obstacle!"), null, 4, CHAT_TYPE_TAKING_HIT) + user.apply_damage(MELEE_FORCE_TIER_2) + + shake_camera(user, 7, 6) // Around 2x worse than getting hit with a heavy round + +/// The code that takes care of breaking a person's firing arm +/obj/item/weapon/gun/boltaction/vulture/proc/break_arm(mob/living/carbon/human/user, arm = LEFT) + var/obj/limb/arm/found_limb + var/obj/limb/hand/found_hand + if(arm == LEFT) + found_limb = locate(/obj/limb/arm/l_arm) in user.limbs + found_hand = locate(/obj/limb/hand/l_hand) in user.limbs + else + found_limb = locate(/obj/limb/arm/r_arm) in user.limbs + found_hand = locate(/obj/limb/hand/r_hand) in user.limbs + + if(!found_limb || !found_hand) + return + found_limb.take_damage((found_limb.status & LIMB_BROKEN) ? rand(25, 30) : rand(10, 15)) + found_hand.take_damage((found_hand.status & LIMB_BROKEN) ? rand(25, 30) : rand(10, 15)) + found_limb.fracture(100) + found_hand.fracture(100) + + for(var/obj/limb/limb as anything in list(found_limb, found_hand)) + if(!(limb.status & LIMB_SPLINTED_INDESTRUCTIBLE) && (limb.status & LIMB_SPLINTED)) //If they have it splinted, the splint won't hold. + limb.status &= ~LIMB_SPLINTED + playsound(user, 'sound/items/splintbreaks.ogg', 20) + to_chat(user, SPAN_DANGER("The splint on your [limb.display_name] comes apart under the recoil!")) + user.pain.apply_pain(PAIN_BONE_BREAK_SPLINTED) + user.update_med_icon() + + +/obj/item/weapon/gun/boltaction/vulture/skillless + bypass_trait = TRUE diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 12f1976e186e..ee122d8f8edd 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -66,9 +66,9 @@ overlays += charge_icon + "_0" /obj/item/weapon/gun/energy/emp_act(severity) + . = ..() cell.use(round(cell.maxcharge / severity)) update_icon() - ..() /obj/item/weapon/gun/energy/load_into_chamber() if(!cell || cell.charge < charge_cost) @@ -90,12 +90,13 @@ to_firer = "[round((cell.charge / charge_cost), 1)] / [max_shots] SHOTS REMAINING" user.visible_message(SPAN_DANGER("[user] fires \the [src]!"), SPAN_DANGER("[to_firer]"), message_flags = CHAT_TYPE_WEAPON_USE) + return AUTOFIRE_CONTINUE /obj/item/weapon/gun/energy/reload_into_chamber() update_icon() return TRUE -/obj/item/weapon/gun/energy/delete_bullet(obj/item/projectile/projectile_to_fire, refund = 0) +/obj/item/weapon/gun/energy/delete_bullet(obj/projectile/projectile_to_fire, refund = 0) qdel(projectile_to_fire) if(refund) cell.charge += charge_cost return TRUE @@ -132,7 +133,7 @@ /obj/item/weapon/gun/energy/rxfm5_eva/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_8 + set_fire_delay(FIRE_DELAY_TIER_9) accuracy_mult = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_3 scatter = SCATTER_AMOUNT_TIER_7 damage_mult = BASE_BULLET_DAMAGE_MULT @@ -180,12 +181,13 @@ fire_sound = 'sound/weapons/Laser4.ogg' has_charge_meter = FALSE charge_icon = "+laz_uzi_empty" + start_automatic = TRUE /obj/item/weapon/gun/energy/laz_uzi/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_SMG - burst_delay = FIRE_DELAY_TIER_SMG - burst_amount = BURST_AMOUNT_TIER_2 + set_fire_delay(FIRE_DELAY_TIER_SMG) + set_burst_delay(FIRE_DELAY_TIER_SMG) + set_burst_amount(BURST_AMOUNT_TIER_2) accuracy_mult = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_3 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 scatter = SCATTER_AMOUNT_TIER_5 @@ -193,6 +195,7 @@ scatter_unwielded = SCATTER_AMOUNT_TIER_6 damage_mult = BASE_BULLET_DAMAGE_MULT recoil_unwielded = RECOIL_AMOUNT_TIER_5 + fa_scatter_peak = SCATTER_AMOUNT_TIER_8 //############################ Taser ################## // Lots of bits for it so splitting off an area @@ -217,7 +220,7 @@ /obj/item/weapon/gun/energy/taser/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_7 + set_fire_delay(FIRE_DELAY_TIER_7) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT damage_mult = BASE_BULLET_DAMAGE_MULT diff --git a/code/modules/projectiles/guns/flamer/flamer.dm b/code/modules/projectiles/guns/flamer/flamer.dm index c5a0c8ee2f8c..62e37e4f7c3b 100644 --- a/code/modules/projectiles/guns/flamer/flamer.dm +++ b/code/modules/projectiles/guns/flamer/flamer.dm @@ -51,7 +51,7 @@ /obj/item/weapon/gun/flamer/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_4 * 5 + set_fire_delay(FIRE_DELAY_TIER_5 * 5) /obj/item/weapon/gun/flamer/unique_action(mob/user) toggle_gun_safety() @@ -92,7 +92,7 @@ . = ..() if(.) if(!current_mag || !current_mag.current_rounds) - return + return NONE /obj/item/weapon/gun/flamer/proc/get_fire_sound() var/list/fire_sounds = list( @@ -102,20 +102,20 @@ return pick(fire_sounds) /obj/item/weapon/gun/flamer/Fire(atom/target, mob/living/user, params, reflex) - set waitfor = 0 + set waitfor = FALSE if(!able_to_fire(user)) - return + return NONE var/turf/curloc = get_turf(user) //In case the target or we are expired. var/turf/targloc = get_turf(target) if (!targloc || !curloc) - return //Something has gone wrong... + return NONE //Something has gone wrong... if(active_attachable && active_attachable.flags_attach_features & ATTACH_WEAPON) //Attachment activated and is a weapon. if(active_attachable.flags_attach_features & ATTACH_PROJECTILE) return - if(active_attachable.current_rounds <= 0) + if((active_attachable.current_rounds <= 0) && !(active_attachable.flags_attach_features & ATTACH_IGNORE_EMPTY)) click_empty(user) //If it's empty, let them know. to_chat(user, SPAN_WARNING("[active_attachable] is empty!")) to_chat(user, SPAN_NOTICE("You disable [active_attachable].")) @@ -123,20 +123,22 @@ else active_attachable.fire_attachment(target, src, user) //Fire it. active_attachable.last_fired = world.time - return + return NONE if(flags_gun_features & GUN_TRIGGER_SAFETY) to_chat(user, SPAN_WARNING("\The [src] isn't lit!")) - return + return NONE if(!current_mag) - return + return NONE if(current_mag.current_rounds <= 0) click_empty(user) else user.track_shot(initial(name)) unleash_flame(target, user) + return AUTOFIRE_CONTINUE + return NONE /obj/item/weapon/gun/flamer/reload(mob/user, obj/item/ammo_magazine/magazine) if(!magazine || !istype(magazine)) @@ -203,16 +205,16 @@ var/flameshape = R.flameshape var/fire_type = R.fire_type - R.intensityfire = Clamp(R.intensityfire, current_mag.reagents.min_fire_int, current_mag.reagents.max_fire_int) - R.durationfire = Clamp(R.durationfire, current_mag.reagents.min_fire_dur, current_mag.reagents.max_fire_dur) - R.rangefire = Clamp(R.rangefire, current_mag.reagents.min_fire_rad, current_mag.reagents.max_fire_rad) + R.intensityfire = clamp(R.intensityfire, current_mag.reagents.min_fire_int, current_mag.reagents.max_fire_int) + R.durationfire = clamp(R.durationfire, current_mag.reagents.min_fire_dur, current_mag.reagents.max_fire_dur) + R.rangefire = clamp(R.rangefire, current_mag.reagents.min_fire_rad, current_mag.reagents.max_fire_rad) var/max_range = R.rangefire if (max_range < fuel_pressure) //Used for custom tanks, allows for higher ranges - max_range = Clamp(fuel_pressure, 0, current_mag.reagents.max_fire_rad) + max_range = clamp(fuel_pressure, 0, current_mag.reagents.max_fire_rad) if(R.rangefire == -1) max_range = current_mag.reagents.max_fire_rad - var/turf/temp[] = getline2(get_turf(user), get_turf(target)) + var/turf/temp[] = get_line(get_turf(user), get_turf(target)) var/turf/to_fire = temp[2] @@ -248,6 +250,9 @@ /obj/item/weapon/gun/flamer/deathsquad/nolock flags_gun_features = GUN_WIELDED_FIRING_ONLY +/obj/item/weapon/gun/flamer/deathsquad/standard + current_mag = /obj/item/ammo_magazine/flamer_tank + /obj/item/weapon/gun/flamer/M240T name = "\improper M240-T incinerator unit" desc = "An improved version of the M240A1 incinerator unit, the M240-T model is capable of dispersing a larger variety of fuel types." @@ -321,7 +326,7 @@ unload(user, drop_override = TRUE) current_mag = fuelpack.active_fuel update_icon() - ..() + return ..() /obj/item/weapon/gun/flamer/M240T/reload(mob/user, obj/item/ammo_magazine/magazine) @@ -360,28 +365,15 @@ return TRUE return FALSE -GLOBAL_LIST_EMPTY(flamer_particles) -/particles/flamer_fire - icon = 'icons/effects/particles/fire.dmi' - icon_state = "bonfire" - width = 100 - height = 100 - count = 1000 - spawning = 8 - lifespan = 0.7 SECONDS - fade = 1 SECONDS - grow = -0.01 - velocity = list(0, 0) - position = generator("box", list(-16, -16), list(16, 16), NORMAL_RAND) - drift = generator("vector", list(0, -0.2), list(0, 0.2)) - gravity = list(0, 0.95) - scale = generator("vector", list(0.3, 0.3), list(1,1), NORMAL_RAND) - rotation = 30 - spin = generator("num", -20, 20) - -/particles/flamer_fire/New(set_color) - ..() - color = set_color +/obj/item/weapon/gun/flamer/M240T/auto // With NEW advances in science, we've learned how to drain a pyro's tank in 6 seconds, or your money back! + name = "\improper M240-T2 incinerator unit" + desc = "A prototyped model of the M240-T incinerator unit, it was discontinued after its automatic mode was deemed too expensive to deploy in the field." + start_semiauto = FALSE + start_automatic = TRUE + +/obj/item/weapon/gun/flamer/M240T/auto/set_gun_config_values() + . = ..() + set_fire_delay(FIRE_DELAY_TIER_7) /obj/flamer_fire name = "fire" @@ -392,6 +384,12 @@ GLOBAL_LIST_EMPTY(flamer_particles) icon_state = "dynamic_2" layer = BELOW_OBJ_LAYER + light_system = STATIC_LIGHT + light_on = TRUE + light_range = 3 + light_power = 3 + light_color = "#f88818" + var/firelevel = 12 //Tracks how much "fire" there is. Basically the timer of how long the fire burns var/burnlevel = 10 //Tracks how HOT the fire is. This is basically the heat level of the fire and determines the temperature. @@ -431,14 +429,13 @@ GLOBAL_LIST_EMPTY(flamer_particles) else flame_icon = R.burn_sprite - if(!GLOB.flamer_particles[R.burncolor]) - GLOB.flamer_particles[R.burncolor] = new /particles/flamer_fire(R.burncolor) - particles = GLOB.flamer_particles[R.burncolor] + set_light(l_color = R.burncolor) tied_reagent = new R.type() // Can't get deleted this way tied_reagent.make_alike(R) - tied_reagents = obj_reagents + if(obj_reagents) + tied_reagents = obj_reagents target_clicked = target @@ -564,7 +561,6 @@ GLOBAL_LIST_EMPTY(flamer_particles) RegisterSignal(SSdcs, COMSIG_GLOB_WEATHER_CHANGE, PROC_REF(update_in_weather_status)) /obj/flamer_fire/Destroy() - SetLuminosity(0) STOP_PROCESSING(SSobj, src) to_call = null tied_reagent = null @@ -625,7 +621,7 @@ GLOBAL_LIST_EMPTY(flamer_particles) burn_damage = 0 if(!burn_damage) - to_chat(M, SPAN_DANGER("You step over the flames.")) + to_chat(M, SPAN_DANGER("[isxeno(M) ? "We" : "You"] step over the flames.")) return M.last_damage_data = weapon_cause_data @@ -636,7 +632,7 @@ GLOBAL_LIST_EMPTY(flamer_particles) if(FIRE_VARIANT_TYPE_B) if(isxeno(M)) var/mob/living/carbon/xenomorph/X = M - X.armor_deflection?(variant_burn_msg=" You feel the flames weakening your exoskeleton!"):(variant_burn_msg=" You feel the flaming chemicals eating into your body!") + X.armor_deflection?(variant_burn_msg=" We feel the flames weakening our exoskeleton!"):(variant_burn_msg=" You feel the flaming chemicals eating into your body!") to_chat(M, SPAN_DANGER("You are burned![variant_burn_msg?"[variant_burn_msg]":""]")) M.updatehealth() @@ -656,7 +652,7 @@ GLOBAL_LIST_EMPTY(flamer_particles) flame_level++ //the initial flame burst is 1 level higher for a small time icon_state = "[flame_icon]_[flame_level]" - SetLuminosity(flame_level * 2) + set_light(flame_level * 2) /obj/flamer_fire/proc/un_burst_flame() initial_burst = FALSE @@ -671,12 +667,12 @@ GLOBAL_LIST_EMPTY(flamer_particles) var/damage = burnlevel*delta_time T.flamer_fire_act(damage) - update_flame() - if(!firelevel) qdel(src) return + update_flame() + for(var/atom/thing in loc) thing.handle_flamer_fire(src, damage, delta_time) @@ -691,7 +687,7 @@ GLOBAL_LIST_EMPTY(flamer_particles) var/area/A = get_area(src) if(!A) return - if(SSweather.is_weather_event && locate(A.master) in SSweather.weather_areas) + if(SSweather.is_weather_event && locate(A) in SSweather.weather_areas) weather_smothering_strength = SSweather.weather_event_instance.fire_smothering_strength else weather_smothering_strength = 0 @@ -700,16 +696,16 @@ GLOBAL_LIST_EMPTY(flamer_particles) var/direction_angle = dir2angle(direction) var/obj/flamer_fire/foundflame = locate() in target if(!foundflame) - var/datum/reagent/R = new() - R.intensityfire = burn_lvl - R.durationfire = fire_lvl - R.burn_sprite = burn_sprite - R.burncolor = f_color - new/obj/flamer_fire(target, cause_data, R) + var/datum/reagent/fire_reag = new() + fire_reag.intensityfire = burn_lvl + fire_reag.durationfire = fire_lvl + fire_reag.burn_sprite = burn_sprite + fire_reag.burncolor = f_color + new/obj/flamer_fire(target, cause_data, fire_reag) if(target.density) return - for(var/spread_direction in alldirs) + for(var/spread_direction in GLOB.alldirs) var/spread_power = remaining_distance @@ -718,11 +714,9 @@ GLOBAL_LIST_EMPTY(flamer_particles) var/angle = 180 - abs( abs( direction_angle - spread_direction_angle ) - 180 ) // the angle difference between the spread direction and initial direction switch(angle) //this reduces power when the explosion is going around corners - if (0) - //no change if (45) spread_power *= 0.75 - else //turns out angles greater than 90 degrees almost never happen. This bit also prevents trying to spread backwards + if (90 to 180) //turns out angles greater than 90 degrees almost never happen. This bit also prevents trying to spread backwards continue switch(spread_direction) @@ -734,33 +728,41 @@ GLOBAL_LIST_EMPTY(flamer_particles) if (spread_power < 1) continue - var/turf/T = get_step(target, spread_direction) + var/turf/picked_turf = get_step(target, spread_direction) - if(!T) //prevents trying to spread into "null" (edge of the map?) + if(!picked_turf) //prevents trying to spread into "null" (edge of the map?) continue - if(aerial_flame_level && (T.get_pylon_protection_level() >= aerial_flame_level)) - break + if(aerial_flame_level) + if(picked_turf.get_pylon_protection_level() >= aerial_flame_level) + break + var/area/picked_area = get_area(picked_turf) + if(CEILING_IS_PROTECTED(picked_area?.ceiling, get_ceiling_protection_level(aerial_flame_level))) + break spawn(0) - fire_spread_recur(T, cause_data, spread_power, spread_direction, fire_lvl, burn_lvl, f_color, burn_sprite, aerial_flame_level) + fire_spread_recur(picked_turf, cause_data, spread_power, spread_direction, fire_lvl, burn_lvl, f_color, burn_sprite, aerial_flame_level) /proc/fire_spread(turf/target, datum/cause_data/cause_data, range, fire_lvl, burn_lvl, f_color, burn_sprite = "dynamic", aerial_flame_level = TURF_PROTECTION_NONE) - var/datum/reagent/R = new() - R.intensityfire = burn_lvl - R.durationfire = fire_lvl - R.burn_sprite = burn_sprite - R.burncolor = f_color - - new/obj/flamer_fire(target, cause_data, R) - for(var/direction in alldirs) + var/datum/reagent/fire_reag = new() + fire_reag.intensityfire = burn_lvl + fire_reag.durationfire = fire_lvl + fire_reag.burn_sprite = burn_sprite + fire_reag.burncolor = f_color + + new/obj/flamer_fire(target, cause_data, fire_reag) + for(var/direction in GLOB.alldirs) var/spread_power = range switch(direction) if(NORTH,SOUTH,EAST,WEST) spread_power-- else spread_power -= 1.414 //diagonal spreading - var/turf/T = get_step(target, direction) - if(aerial_flame_level && (T.get_pylon_protection_level() >= aerial_flame_level)) - continue - fire_spread_recur(T, cause_data, spread_power, direction, fire_lvl, burn_lvl, f_color, burn_sprite, aerial_flame_level) + var/turf/picked_turf = get_step(target, direction) + if(aerial_flame_level) + if(picked_turf.get_pylon_protection_level() >= aerial_flame_level) + continue + var/area/picked_area = get_area(picked_turf) + if(CEILING_IS_PROTECTED(picked_area?.ceiling, get_ceiling_protection_level(aerial_flame_level))) + continue + fire_spread_recur(picked_turf, cause_data, spread_power, direction, fire_lvl, burn_lvl, f_color, burn_sprite, aerial_flame_level) diff --git a/code/modules/projectiles/guns/flamer/flameshape.dm b/code/modules/projectiles/guns/flamer/flameshape.dm index f5a0699067e4..3e5e398c91e8 100644 --- a/code/modules/projectiles/guns/flamer/flameshape.dm +++ b/code/modules/projectiles/guns/flamer/flameshape.dm @@ -28,7 +28,7 @@ /datum/flameshape/default/handle_fire_spread(obj/flamer_fire/F, fire_spread_amount, burn_dam, fuel_pressure = 1) var/turf/T var/turf/source_turf = get_turf(F.loc) - for(var/dirn in cardinal) + for(var/dirn in GLOB.cardinals) T = get_step(source_turf, dirn) if(istype(T, /turf/open/space)) continue @@ -64,7 +64,7 @@ id = FLAMESHAPE_STAR /datum/flameshape/star/proc/dirs_to_use() - return alldirs + return GLOB.alldirs /datum/flameshape/star/handle_fire_spread(obj/flamer_fire/F, fire_spread_amount, burn_dam, fuel_pressure = 1) fire_spread_amount = Floor(fire_spread_amount * 1.5) // branch 'length' @@ -74,7 +74,7 @@ for(var/dirn in dirs) var/endturf = get_ranged_target_turf(F, dirn, fire_spread_amount) - var/list/turfs = getline2(source_turf, endturf) + var/list/turfs = get_line(source_turf, endturf) var/turf/prev_T = source_turf for(var/turf/T in turfs) @@ -102,9 +102,9 @@ /datum/flameshape/star/minor/dirs_to_use() if(prob(50)) - return cardinal + return GLOB.cardinals else - return diagonals + return GLOB.diagonals /datum/flameshape/line name = "Line" @@ -124,7 +124,7 @@ var/distance = 1 var/stop_at_turf = FALSE - var/list/turfs = getline2(source_turf, F.target_clicked) + var/list/turfs = get_line(source_turf, F.target_clicked) for(var/turf/T in turfs) if(istype(T, /turf/open/space)) break @@ -174,7 +174,7 @@ user = F.weapon_cause_data.resolve_mob() var/unleash_dir = user.dir - var/list/turf/turfs = getline2(F, F.target_clicked) + var/list/turf/turfs = get_line(F, F.target_clicked) var/distance = 1 var/hit_dense_atom_mid = FALSE var/turf/prev_T = user.loc diff --git a/code/modules/projectiles/guns/flare_gun.dm b/code/modules/projectiles/guns/flare_gun.dm new file mode 100644 index 000000000000..407ecdf00066 --- /dev/null +++ b/code/modules/projectiles/guns/flare_gun.dm @@ -0,0 +1,158 @@ +/obj/item/weapon/gun/flare + name = "\improper M82-F flare gun" + desc = "A flare gun issued to JTAC operators to use with flares. Comes with a miniscope. One shot, one... life saved?" + icon_state = "m82f" + item_state = "m82f" + current_mag = /obj/item/ammo_magazine/internal/flare + reload_sound = 'sound/weapons/gun_shotgun_shell_insert.ogg' + fire_sound = 'sound/weapons/gun_flare.ogg' + aim_slowdown = 0 + flags_equip_slot = SLOT_WAIST + wield_delay = WIELD_DELAY_VERY_FAST + movement_onehanded_acc_penalty_mult = MOVEMENT_ACCURACY_PENALTY_MULT_TIER_4 + flags_gun_features = GUN_INTERNAL_MAG|GUN_CAN_POINTBLANK + gun_category = GUN_CATEGORY_HANDGUN + attachable_allowed = list(/obj/item/attachable/scope/mini/flaregun) + + var/last_signal_flare_name + + +/obj/item/weapon/gun/flare/Initialize(mapload, spawn_empty) + . = ..() + if(spawn_empty) + update_icon() + +/obj/item/weapon/gun/flare/handle_starting_attachment() + ..() + var/obj/item/attachable/scope/mini/flaregun/scope = new(src) + scope.hidden = TRUE + scope.flags_attach_features &= ~ATTACH_REMOVABLE + scope.Attach(src) + update_attachables() + + +/obj/item/weapon/gun/flare/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 12, "rail_y" = 20, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) + +/obj/item/weapon/gun/flare/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_12) + accuracy_mult = BASE_ACCURACY_MULT + accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 + scatter = 0 + recoil = RECOIL_AMOUNT_TIER_4 + recoil_unwielded = RECOIL_AMOUNT_TIER_4 + +/obj/item/weapon/gun/flare/set_bullet_traits() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) + )) + +/obj/item/weapon/gun/flare/reload_into_chamber(mob/user) + . = ..() + to_chat(user, SPAN_WARNING("You pop out [src]'s tube!")) + update_icon() + +/obj/item/weapon/gun/flare/attackby(obj/item/attacking_item, mob/user) + if(istype(attacking_item, /obj/item/device/flashlight/flare)) + var/obj/item/device/flashlight/flare/attacking_flare = attacking_item + if(attacking_flare.on) + to_chat(user, SPAN_WARNING("You can't put a lit flare in [src]!")) + return + if(!attacking_flare.fuel) + to_chat(user, SPAN_WARNING("You can't put a burnt out flare in [src]!")) + return + if(current_mag && current_mag.current_rounds == 0) + ammo = GLOB.ammo_list[attacking_flare.ammo_datum] + playsound(user, reload_sound, 25, 1) + to_chat(user, SPAN_NOTICE("You load [attacking_flare] into [src].")) + current_mag.current_rounds++ + qdel(attacking_flare) + update_icon() + else + to_chat(user, SPAN_WARNING("[src] is already loaded!")) + else + to_chat(user, SPAN_WARNING("That's not a flare!")) + +/obj/item/weapon/gun/flare/unload(mob/user) + if(flags_gun_features & GUN_BURST_FIRING) + return + unload_flare(user) + +/obj/item/weapon/gun/flare/proc/unload_flare(mob/user) + if(!current_mag) + return + if(current_mag.current_rounds) + var/obj/item/device/flashlight/flare/unloaded_flare = new ammo.handful_type(get_turf(src)) + playsound(user, reload_sound, 25, TRUE) + current_mag.current_rounds-- + if(user) + to_chat(user, SPAN_NOTICE("You unload [unloaded_flare] from \the [src].")) + user.put_in_hands(unloaded_flare) + update_icon() + +/obj/item/weapon/gun/flare/unique_action(mob/user) + if(!user || !isturf(user.loc) || !current_mag || !current_mag.current_rounds) + return + + var/turf/flare_turf = user.loc + var/area/flare_area = flare_turf.loc + + if(flare_area.ceiling > CEILING_GLASS) + to_chat(user, SPAN_NOTICE("The roof above you is too dense.")) + return + + if(!istype(ammo, /datum/ammo/flare)) + to_chat(user, SPAN_NOTICE("[src] jams as it is somehow loaded with incorrect ammo!")) + return + + if(user.action_busy) + return + + if(!do_after(user, 1 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC)) + return + + if(!current_mag || !current_mag.current_rounds) + return + + current_mag.current_rounds-- + + flare_turf.ceiling_debris() + + var/datum/ammo/flare/explicit_ammo = ammo + + var/obj/item/device/flashlight/flare/fired_flare = new explicit_ammo.flare_type(get_turf(src)) + to_chat(user, SPAN_NOTICE("You fire [fired_flare] into the air!")) + fired_flare.visible_message(SPAN_WARNING("\A [fired_flare] bursts into brilliant light in the sky!")) + fired_flare.invisibility = INVISIBILITY_MAXIMUM + fired_flare.mouse_opacity = FALSE + playsound(user.loc, fire_sound, 50, 1) + + var/obj/effect/flare_light/light_effect = new (fired_flare, fired_flare.light_range, fired_flare.light_power, fired_flare.light_color) + light_effect.RegisterSignal(fired_flare, COMSIG_ATOM_SET_LIGHT_ON, TYPE_PROC_REF(/obj/effect/flare_light, flare_light_change)) + + if(fired_flare.activate_signal(user)) + last_signal_flare_name = fired_flare.name + + update_icon() + +/obj/item/weapon/gun/flare/get_examine_text(mob/user) + . = ..() + if(last_signal_flare_name) + . += SPAN_NOTICE("The last signal flare fired has the designation: [last_signal_flare_name]") + +/obj/effect/flare_light + name = "flare light" + desc = "You are not supposed to see this. Please report it." + icon_state = "" //No sprite + invisibility = INVISIBILITY_MAXIMUM + light_system = STATIC_LIGHT + +/obj/effect/flare_light/Initialize(mapload, light_range, light_power, light_color) + . = ..() + set_light(light_range, light_power, light_color) + +/obj/effect/flare_light/proc/flare_light_change(original_flare, new_light_value) + if(!new_light_value) + qdel(original_flare) + qdel(src) diff --git a/code/modules/projectiles/guns/lever_action.dm b/code/modules/projectiles/guns/lever_action.dm index d611605cd0e5..a8fb78f72a9c 100644 --- a/code/modules/projectiles/guns/lever_action.dm +++ b/code/modules/projectiles/guns/lever_action.dm @@ -45,7 +45,7 @@ their unique feature is that a direct hit will buff your damage and firerate /obj/item/weapon/gun/lever_action/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_1 + FIRE_DELAY_TIER_10 + set_fire_delay(FIRE_DELAY_TIER_1 + FIRE_DELAY_TIER_12) lever_delay = FIRE_DELAY_TIER_3 accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 @@ -71,7 +71,7 @@ their unique feature is that a direct hit will buff your damage and firerate /obj/item/weapon/gun/lever_action/dropped(mob/user) . = ..() - reset_hit_buff() + reset_hit_buff(user) addtimer(VARSET_CALLBACK(src, cur_onehand_chance, reset_onehand_chance), 4 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE) /obj/item/weapon/gun/lever_action/proc/direct_hit_buff(mob/user, mob/target, one_hand_lever = FALSE) @@ -110,23 +110,23 @@ their unique feature is that a direct hit will buff your damage and firerate if(!(flags_gun_lever_action & USES_STREAKS)) return apply_hit_buff(user, target, one_hand_lever) //this is a separate proc so it's configgable - addtimer(CALLBACK(src, PROC_REF(reset_hit_buff), one_hand_lever), hit_buff_reset_cooldown, TIMER_OVERRIDE|TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(reset_hit_buff), user, one_hand_lever), hit_buff_reset_cooldown, TIMER_OVERRIDE|TIMER_UNIQUE) /obj/item/weapon/gun/lever_action/proc/apply_hit_buff(mob/user, mob/target, one_hand_lever = FALSE) lever_sound = lever_super_sound lever_message = "You quickly work the [lever_name]!" last_fired = world.time - buff_fire_reduc //to shoot the next round faster - lever_delay = FIRE_DELAY_TIER_10 + lever_delay = FIRE_DELAY_TIER_12 damage_mult = initial(damage_mult) + BULLET_DAMAGE_MULT_TIER_10 - fire_delay = FIRE_DELAY_TIER_5 + set_fire_delay(FIRE_DELAY_TIER_5) for(var/slot in attachments) var/obj/item/attachable/AM = attachments[slot] if(AM.damage_mod || AM.delay_mod) damage_mult += AM.damage_mod - fire_delay += AM.delay_mod + modify_fire_delay(AM.delay_mod) wield_delay = 0 //for one-handed levering -/obj/item/weapon/gun/lever_action/proc/reset_hit_buff(one_hand_lever) //why does this need a user arg when it doesn't use user at all? +/obj/item/weapon/gun/lever_action/proc/reset_hit_buff(mob/user, one_hand_lever) if(!(flags_gun_lever_action & USES_STREAKS)) return SIGNAL_HANDLER @@ -137,7 +137,7 @@ their unique feature is that a direct hit will buff your damage and firerate cur_onehand_chance = initial(cur_onehand_chance) //these are init configs and so cannot be initial() lever_delay = FIRE_DELAY_TIER_3 - fire_delay = FIRE_DELAY_TIER_1 + set_fire_delay(FIRE_DELAY_TIER_1) damage_mult = BASE_BULLET_DAMAGE_MULT recalculate_attachment_bonuses() //stock wield delay if(one_hand_lever) @@ -353,7 +353,7 @@ their unique feature is that a direct hit will buff your damage and firerate name = "\improper XM88 heavy rifle" desc = "An experimental man-portable anti-material rifle chambered in .458 SOCOM. It must be manually chambered for every shot.\nIt has a special property - when you obtain multiple direct hits in a row, its armor penetration and damage will increase." desc_lore = "Originally developed by ARMAT Battlefield Systems for the government of the state of Greater Brazil for use in the Favela Wars (2161 - Ongoing) against mechanized infantry. The platform features an onboard computerized targeting system, sensor array, and an electronic autoloader; these features work in tandem to reduce and render inert armor on the users target with successive hits. The Almayer was issued a small amount of XM88s while preparing for Operation Swamp Hopper with the USS Nan-Shan." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' // overriden with camos anyways + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' // overridden with camos anyways icon_state = "boomslang" item_state = "boomslang" fire_sound = 'sound/weapons/gun_boomslang_fire.ogg' @@ -373,6 +373,7 @@ their unique feature is that a direct hit will buff your damage and firerate hit_buff_reset_cooldown = 2 SECONDS //how much time after a direct hit until streaks reset var/floating_penetration = FLOATING_PENETRATION_TIER_0 //holder var var/floating_penetration_upper_limit = FLOATING_PENETRATION_TIER_4 + var/direct_hit_sound = 'sound/weapons/gun_xm88_directhit_low.ogg' attachable_allowed = list( /obj/item/attachable/bayonet/upp, // Barrel /obj/item/attachable/bayonet, @@ -392,7 +393,7 @@ their unique feature is that a direct hit will buff your damage and firerate /obj/item/weapon/gun/lever_action/xm88/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_1 + set_fire_delay(FIRE_DELAY_TIER_2) lever_delay = FIRE_DELAY_TIER_3 accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 @@ -405,9 +406,9 @@ their unique feature is that a direct hit will buff your damage and firerate /obj/item/weapon/gun/lever_action/xm88/wield(mob/user) . = ..() - - RegisterSignal(src, COMSIG_ITEM_ZOOM, PROC_REF(scope_on)) - RegisterSignal(src, COMSIG_ITEM_UNZOOM, PROC_REF(scope_off)) + if(.) + RegisterSignal(src, COMSIG_ITEM_ZOOM, PROC_REF(scope_on)) + RegisterSignal(src, COMSIG_ITEM_UNZOOM, PROC_REF(scope_off)) /obj/item/weapon/gun/lever_action/xm88/proc/scope_on(atom/source, mob/current_user) SIGNAL_HANDLER @@ -478,7 +479,7 @@ their unique feature is that a direct hit will buff your damage and firerate lever_sound = lever_super_sound lever_message = "You quickly press the [lever_name]!" last_fired = world.time - buff_fire_reduc //to shoot the next round faster - fire_delay = FIRE_DELAY_TIER_3 + set_fire_delay(FIRE_DELAY_TIER_3) damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_4 if(floating_penetration < floating_penetration_upper_limit) @@ -488,23 +489,27 @@ their unique feature is that a direct hit will buff your damage and firerate var/obj/item/attachable/AM = attachments[slot] if(AM && (AM.damage_mod || AM.delay_mod)) damage_mult += AM.damage_mod - fire_delay += AM.delay_mod + modify_fire_delay(AM.delay_mod) wield_delay = 0 //for one-handed levering /obj/item/weapon/gun/lever_action/xm88/Fire(atom/target, mob/living/user, params, reflex, dual_wield) if(!able_to_fire(user) || !target) //checks here since we don't want to fuck up applying the increase - return + return NONE if(floating_penetration && in_chamber) //has to go before actual firing - var/obj/item/projectile/P = in_chamber + var/obj/projectile/P = in_chamber switch(floating_penetration) if(FLOATING_PENETRATION_TIER_1) P.ammo = GLOB.ammo_list[/datum/ammo/bullet/lever_action/xm88/pen20] + direct_hit_sound = "sound/weapons/gun_xm88_directhit_low.ogg" if(FLOATING_PENETRATION_TIER_2) P.ammo = GLOB.ammo_list[/datum/ammo/bullet/lever_action/xm88/pen30] + direct_hit_sound = "sound/weapons/gun_xm88_directhit_medium.ogg" if(FLOATING_PENETRATION_TIER_3) P.ammo = GLOB.ammo_list[/datum/ammo/bullet/lever_action/xm88/pen40] + direct_hit_sound = "sound/weapons/gun_xm88_directhit_medium.ogg" if(FLOATING_PENETRATION_TIER_4) P.ammo = GLOB.ammo_list[/datum/ammo/bullet/lever_action/xm88/pen50] + direct_hit_sound = "sound/weapons/gun_xm88_directhit_high.ogg" return ..() /obj/item/weapon/gun/lever_action/xm88/unload(mob/user) @@ -513,28 +518,34 @@ their unique feature is that a direct hit will buff your damage and firerate levered = FALSE return empty_chamber(user) -/obj/item/weapon/gun/lever_action/xm88/reset_hit_buff(one_hand_lever) //why does this need a user arg when it doesn't use user at all? +/obj/item/weapon/gun/lever_action/xm88/reset_hit_buff(mob/user, one_hand_lever) if(!(flags_gun_lever_action & USES_STREAKS)) return SIGNAL_HANDLER + if(streak > 0) + to_chat(user, SPAN_WARNING("[src] beeps as it loses its targeting data, and returns to normal firing procedures.")) streak = 0 lever_sound = initial(lever_sound) lever_message = initial(lever_message) wield_delay = initial(wield_delay) cur_onehand_chance = initial(cur_onehand_chance) + direct_hit_sound = "sound/weapons/gun_xm88_directhit_low.ogg" if(in_chamber) - var/obj/item/projectile/P = in_chamber + var/obj/projectile/P = in_chamber P.ammo = GLOB.ammo_list[/datum/ammo/bullet/lever_action/xm88] floating_penetration = FLOATING_PENETRATION_TIER_0 //these are init configs and so cannot be initial() - fire_delay = FIRE_DELAY_TIER_1 + FIRE_DELAY_TIER_10 + set_fire_delay(FIRE_DELAY_TIER_1 + FIRE_DELAY_TIER_12) lever_delay = FIRE_DELAY_TIER_3 damage_mult = BASE_BULLET_DAMAGE_MULT recalculate_attachment_bonuses() //stock wield delay - visible_message(SPAN_WARNING("\The [src] beeps as it loses its targeting data, and returns to normal firing procedures."), max_distance = 1) // tell them they've lost stacks if(one_hand_lever) addtimer(VARSET_CALLBACK(src, cur_onehand_chance, reset_onehand_chance), 4 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE) +/obj/item/weapon/gun/lever_action/xm88/direct_hit_buff(mob/user, mob/target, one_hand_lever = FALSE) + . = ..() + playsound(target, direct_hit_sound, 75) + #undef FLOATING_PENETRATION_TIER_0 #undef FLOATING_PENETRATION_TIER_1 #undef FLOATING_PENETRATION_TIER_2 diff --git a/code/modules/projectiles/guns/misc.dm b/code/modules/projectiles/guns/misc.dm index 4a84f99d7c62..5503ab03a1da 100644 --- a/code/modules/projectiles/guns/misc.dm +++ b/code/modules/projectiles/guns/misc.dm @@ -4,7 +4,7 @@ /obj/item/weapon/gun/minigun name = "\improper Ol' Painless" desc = "An enormous multi-barreled rotating gatling gun. This thing will no doubt pack a punch." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon = 'icons/obj/items/weapons/guns/guns_by_faction/event.dmi' icon_state = "painless" item_state = "painless" @@ -13,8 +13,10 @@ current_mag = /obj/item/ammo_magazine/minigun w_class = SIZE_HUGE force = 20 - flags_gun_features = GUN_AUTO_EJECTOR|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER|GUN_RECOIL_BUILDUP|GUN_HAS_FULL_AUTO|GUN_CAN_POINTBLANK + flags_gun_features = GUN_AUTO_EJECTOR|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER|GUN_RECOIL_BUILDUP|GUN_CAN_POINTBLANK gun_category = GUN_CATEGORY_HEAVY + start_semiauto = FALSE + start_automatic = TRUE /obj/item/weapon/gun/minigun/Initialize(mapload, spawn_empty) . = ..() @@ -22,7 +24,7 @@ /obj/item/weapon/gun/minigun/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_10 + set_fire_delay(FIRE_DELAY_TIER_12) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 @@ -45,7 +47,7 @@ /obj/item/weapon/gun/minigun/upp name = "\improper GSh-7.62 rotary machine gun" desc = "A gas-operated rotary machine gun used by UPP heavies. Its enormous volume of fire and ammunition capacity allows the suppression of large concentrations of enemy forces. Heavy weapons training is required control its recoil." - flags_gun_features = GUN_AUTO_EJECTOR|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER|GUN_RECOIL_BUILDUP|GUN_HAS_FULL_AUTO|GUN_CAN_POINTBLANK + flags_gun_features = GUN_AUTO_EJECTOR|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER|GUN_RECOIL_BUILDUP|GUN_CAN_POINTBLANK /obj/item/weapon/gun/minigun/upp/able_to_fire(mob/living/user) . = ..() @@ -72,7 +74,7 @@ current_mag = /obj/item/ammo_magazine/m60 w_class = SIZE_LARGE force = 25 - flags_gun_features = GUN_WIELDED_FIRING_ONLY|GUN_HAS_FULL_AUTO|GUN_FULL_AUTO_ON|GUN_FULL_AUTO_ONLY|GUN_CAN_POINTBLANK + flags_gun_features = GUN_WIELDED_FIRING_ONLY|GUN_CAN_POINTBLANK gun_category = GUN_CATEGORY_HEAVY attachable_allowed = list( /obj/item/attachable/m60barrel, @@ -82,6 +84,8 @@ /obj/item/attachable/m60barrel, /obj/item/attachable/bipod/m60, ) + start_semiauto = FALSE + start_automatic = TRUE var/cover_open = FALSE //if the gun's feed-cover is open or not. @@ -96,9 +100,9 @@ /obj/item/weapon/gun/m60/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_10 - burst_amount = BURST_AMOUNT_TIER_5 - burst_delay = FIRE_DELAY_TIER_10 + set_fire_delay(FIRE_DELAY_TIER_12) + set_burst_amount(BURST_AMOUNT_TIER_5) + set_burst_delay(FIRE_DELAY_TIER_12) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_10 @@ -155,6 +159,125 @@ return FALSE +/obj/item/weapon/gun/pkp + name = "\improper QYJ-72 General Purpose Machine Gun" + desc = "The QYJ-72 is the standard GPMG of the Union of Progressive Peoples, chambered in 7.62x54mmR, it fires a hard-hitting cartridge with a high rate of fire. With an extremely large box at 250 rounds, the QJY-72 is designed with suppressing fire and accuracy by volume of fire at its forefront. \nAlt-click it to open the feed cover and allow for reloading." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "qjy72" + item_state = "qjy72" + + fire_sound = 'sound/weapons/gun_mg.ogg' + cocked_sound = 'sound/weapons/gun_m60_cocked.ogg' + current_mag = /obj/item/ammo_magazine/pkp + w_class = SIZE_LARGE + force = 30 //the image of a upp machinegunner beating someone to death with a gpmg makes me laugh + start_semiauto = FALSE + start_automatic = TRUE + flags_gun_features = GUN_WIELDED_FIRING_ONLY|GUN_CAN_POINTBLANK|GUN_AUTO_EJECTOR|GUN_SPECIALIST|GUN_AMMO_COUNTER + gun_category = GUN_CATEGORY_HEAVY + attachable_allowed = list( + /obj/item/attachable/pkpbarrel, + /obj/item/attachable/stock/pkpstock, + ) + var/cover_open = FALSE //if the gun's feed-cover is open or not. + + +/obj/item/weapon/gun/pkp/handle_starting_attachment() + ..() + var/obj/item/attachable/attachie = new /obj/item/attachable/pkpbarrel(src) + attachie.flags_attach_features &= ~ATTACH_REMOVABLE + attachie.Attach(src) + update_attachable(attachie.slot) + + var/obj/item/attachable/pkpstock = new /obj/item/attachable/stock/pkpstock(src) + pkpstock.flags_attach_features &= ~ATTACH_REMOVABLE + pkpstock.Attach(src) + update_attachable(pkpstock.slot) + + //invisible mag harness + var/obj/item/attachable/magnetic_harness/Integrated = new(src) + Integrated.hidden = TRUE + Integrated.flags_attach_features &= ~ATTACH_REMOVABLE + Integrated.Attach(src) + update_attachable(Integrated.slot) + +/obj/item/weapon/gun/pkp/Initialize(mapload, spawn_empty) + . = ..() + if(current_mag && current_mag.current_rounds > 0) + load_into_chamber() + +/obj/item/weapon/gun/pkp/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 34, "muzzle_y" = 18,"rail_x" = 5, "rail_y" = 5, "under_x" = 39, "under_y" = 7, "stock_x" = 10, "stock_y" = 13) + + +/obj/item/weapon/gun/pkp/set_gun_config_values() + ..() + fire_delay = FIRE_DELAY_TIER_10 + burst_amount = BURST_AMOUNT_TIER_6 + burst_delay = FIRE_DELAY_TIER_9 + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 + accuracy_mult_unwielded = BASE_ACCURACY_MULT + fa_max_scatter = SCATTER_AMOUNT_TIER_8 + scatter = SCATTER_AMOUNT_TIER_10 + burst_scatter_mult = SCATTER_AMOUNT_TIER_8 + scatter_unwielded = SCATTER_AMOUNT_TIER_10 + damage_mult = BASE_BULLET_DAMAGE_MULT + recoil = RECOIL_AMOUNT_TIER_5 + empty_sound = 'sound/weapons/gun_empty.ogg' + +/obj/item/weapon/gun/pkp/clicked(mob/user, list/mods) + if(!mods["alt"] || !CAN_PICKUP(user, src)) + return ..() + else + if(!locate(src) in list(user.get_active_hand(), user.get_inactive_hand())) + return TRUE + if(user.get_active_hand() && user.get_inactive_hand()) + to_chat(user, SPAN_WARNING("You can't do that with your hands full!")) + return TRUE + if(!cover_open) + playsound(src.loc, 'sound/handling/smartgun_open.ogg', 50, TRUE, 3) + to_chat(user, SPAN_NOTICE("You open [src]'s feed cover, allowing the belt to be removed.")) + cover_open = TRUE + else + playsound(src.loc, 'sound/handling/smartgun_close.ogg', 50, TRUE, 3) + to_chat(user, SPAN_NOTICE("You close [src]'s feed cover.")) + cover_open = FALSE + update_icon() + return TRUE + +/obj/item/weapon/gun/pkp/replace_magazine(mob/user, obj/item/ammo_magazine/magazine) + if(!cover_open) + to_chat(user, SPAN_WARNING("[src]'s feed cover is closed! You can't put a new belt in! (alt-click to open it)")) + return + return ..() + +/obj/item/weapon/gun/pkp/unload(mob/user, reload_override, drop_override, loc_override) + if(!cover_open) + to_chat(user, SPAN_WARNING("[src]'s feed cover is closed! You can't take out the belt! (alt-click to open it)")) + return + return ..() + +/obj/item/weapon/gun/pkp/update_icon() + . = ..() + if(cover_open) + overlays += "+[base_gun_icon]_cover_open" + else + overlays += "+[base_gun_icon]_cover_closed" + +/obj/item/weapon/gun/pkp/able_to_fire(mob/living/user) + . = ..() + if(.) + if(cover_open) + to_chat(user, SPAN_WARNING("You can't fire [src] with the feed cover open! (alt-click to close)")) + return FALSE + if(!skillcheck(user, SKILL_FIREARMS, SKILL_FIREARMS_TRAINED)) + to_chat(user, SPAN_WARNING("You don't seem to know how to use [src]...")) + return 0 + if(!skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_UPP) + to_chat(user, SPAN_WARNING("You don't seem to know how to use [src]...")) + return 0 + + /obj/effect/syringe_gun_dummy name = "" desc = "" diff --git a/code/modules/projectiles/guns/pistols.dm b/code/modules/projectiles/guns/pistols.dm index e7e20526b31f..c17ca5bca739 100644 --- a/code/modules/projectiles/guns/pistols.dm +++ b/code/modules/projectiles/guns/pistols.dm @@ -72,7 +72,7 @@ /obj/item/weapon/gun/pistol/m4a3/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_10 + set_fire_delay(FIRE_DELAY_TIER_12) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_6 @@ -93,7 +93,7 @@ /obj/item/weapon/gun/pistol/m4a3/custom/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_10 + set_fire_delay(FIRE_DELAY_TIER_12) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_6 @@ -122,7 +122,7 @@ /obj/item/weapon/gun/pistol/m1911/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_8 + set_fire_delay(FIRE_DELAY_TIER_9) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_6 @@ -140,7 +140,7 @@ /obj/item/weapon/gun/pistol/m1911/socom/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_8 + set_fire_delay(FIRE_DELAY_TIER_9) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_2 scatter = SCATTER_AMOUNT_TIER_8 @@ -171,14 +171,14 @@ BFA.flags_attach_features &= ~ATTACH_REMOVABLE BFA.Attach(src) update_attachable(BFA.slot) - flags_gun_features |= GUN_BURST_ON + add_firemode(GUN_FIREMODE_BURSTFIRE) /obj/item/weapon/gun/pistol/b92fs/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 28, "muzzle_y" = 20,"rail_x" = 10, "rail_y" = 22, "under_x" = 21, "under_y" = 17, "stock_x" = 21, "stock_y" = 17) /obj/item/weapon/gun/pistol/b92fs/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_10 + set_fire_delay(FIRE_DELAY_TIER_12) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_7 @@ -218,9 +218,9 @@ /obj/item/weapon/gun/pistol/heavy/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_4 - burst_amount = BURST_AMOUNT_TIER_2 - burst_delay = FIRE_DELAY_TIER_7 + set_fire_delay(FIRE_DELAY_TIER_5) + set_burst_amount(BURST_AMOUNT_TIER_2) + set_burst_delay(FIRE_DELAY_TIER_8) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_5 scatter = SCATTER_AMOUNT_TIER_6 @@ -242,7 +242,7 @@ /obj/item/weapon/gun/pistol/heavy/co/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_5 + set_fire_delay(FIRE_DELAY_TIER_5) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 scatter = SCATTER_AMOUNT_TIER_6 @@ -258,66 +258,132 @@ icon_state = "g_deagle" item_state = "g_deagle" base_gun_icon = "g_deagle" + //------------------------------------------------------- -//MAUSER MERC PISTOL //Inspired by the Makarov, specifically the "PB" version, an integrally silenced Makarov. -//Rebalanced: Now acts like an UPP M4A3. +//NP92 pistol +//Its a makarov + +/obj/item/weapon/gun/pistol/np92 + name = "\improper NP92 pistol" + desc = "The standard issue sidearm of the UPP. The NP92 is a small but powerful sidearm, well-liked by most it is issued to, although some prefer the weapon it was meant to replace, the Type 73. Takes 12 round magazines." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "np92" + item_state = "np92" + fire_sound = "88m4" + current_mag = /obj/item/ammo_magazine/pistol/np92 + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER + attachable_allowed = list( + /obj/item/attachable/suppressor, + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/flashlight, + ) + +/obj/item/weapon/gun/pistol/np92/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 27, "muzzle_y" = 20,"rail_x" = 13, "rail_y" = 22, "under_x" = 21, "under_y" = 18, "stock_x" = 21, "stock_y" = 18) -/obj/item/weapon/gun/pistol/c99 - name = "\improper Korovin PK-9 pistol" - desc = "The Korovin PK-9 is a cheap, robust and reliable sidearm, its design is strongly inspired by the classic ancient Makarov pistol. Commonly used by many groups, mostly those worried about cost." +/obj/item/weapon/gun/pistol/np92/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_12) + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 + accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 + scatter = SCATTER_AMOUNT_TIER_6 + burst_scatter_mult = SCATTER_AMOUNT_TIER_6 + scatter_unwielded = SCATTER_AMOUNT_TIER_6 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_3 + +/obj/item/weapon/gun/pistol/np92/suppressed + name = "\improper NPZ92 pistol" + desc = "The NPZ92 is a version of the NP92 that includes an integrated suppressor, issued sparingly to Kommando units." icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' - icon_state = "pk9" - item_state = "pk9" + icon_state = "npz92" + item_state = "npz92" inherent_traits = list(TRAIT_GUN_SILENCED) - fire_sound = 'sound/weapons/gun_c99.ogg' - current_mag = /obj/item/ammo_magazine/pistol/c99 - flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED + fire_sound = "gun_silenced" + current_mag = /obj/item/ammo_magazine/pistol/np92/suppressed + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER + attachable_allowed = list( + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/flashlight, + ) + +/obj/item/weapon/gun/pistol/np92/suppressed/tranq + current_mag = /obj/item/ammo_magazine/pistol/np92/tranq + +//------------------------------------------------------- +//Type 73 pistol +//Its a TT + +/obj/item/weapon/gun/pistol/t73 + name = "\improper Type 73 pistol" + desc = "The Type 73 is the once-standard issue sidearm of the UPP. Replaced by the NP92 in UPP use, it remains popular with veteran UPP troops due to familiarity and extra power. Due to an extremely large amount being produced, they tend to end up in the hands of forces attempting to arm themselves on a budget. Users include the Union of Progressive Peoples, Colonial Liberation Front, and just about any mercenary or pirate group out there." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "tt" + item_state = "tt" + fire_sound = 'sound/weapons/gun_tt.ogg' + current_mag = /obj/item/ammo_magazine/pistol/t73 + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER attachable_allowed = list( /obj/item/attachable/reddot, /obj/item/attachable/reflex, /obj/item/attachable/flashlight, /obj/item/attachable/lasersight, - /obj/item/attachable/burstfire_assembly, + /obj/item/attachable/suppressor, ) -/obj/item/weapon/gun/pistol/c99/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 30, "muzzle_y" = 19,"rail_x" = 10, "rail_y" = 22, "under_x" = 21, "under_y" = 18, "stock_x" = 21, "stock_y" = 18) +/obj/item/weapon/gun/pistol/t73/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 28, "muzzle_y" = 20,"rail_x" = 13, "rail_y" = 22, "under_x" = 22, "under_y" = 15, "stock_x" = 21, "stock_y" = 18) -/obj/item/weapon/gun/pistol/c99/set_gun_config_values() +/obj/item/weapon/gun/pistol/t73/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_10 - accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 - accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 + set_fire_delay(FIRE_DELAY_TIER_11) + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 + accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 scatter = SCATTER_AMOUNT_TIER_6 burst_scatter_mult = SCATTER_AMOUNT_TIER_6 scatter_unwielded = SCATTER_AMOUNT_TIER_6 - damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_7 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_6 -/obj/item/weapon/gun/pistol/c99/upp - desc = "The Korovin PK-9 is a cheap, robust and reliable sidearm, its design is strongly inspired by the classic ancient Makarov pistol. This version has been refitted for military usage by the UPP." - icon_state = "pk9u" - item_state = "pk9u" -/obj/item/weapon/gun/pistol/c99/upp/tranq - desc = "The Korovin PK-9 is a cheap, robust and reliable sidearm, its design strongly inspired by the classic ancient Makarov pistol. This version contains a customized exterior, an integrated laser and reflex sight, and is noticeably easy to handle." - icon_state = "pk9r" - item_state = "pk9r" - current_mag = /obj/item/ammo_magazine/pistol/c99/tranq - aim_slowdown = 0 - wield_delay = WIELD_DELAY_MIN +/obj/item/weapon/gun/pistol/t73/leader + name = "\improper Type 74 pistol" + desc = "The Type 74 is the designation for a specially modified Type 73 with an integrated laser sight system, multiple lightning cuts to reduce weight in order to allow a higher pressure round to be used with the same recoil sping, and a more comfortable grip. Due to the adoption of the NP92, the Type 74 was produced in limited numbers, because of this it is typically only issued on request to high-ranking officers." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "ttb" + item_state = "ttb" + current_mag = /obj/item/ammo_magazine/pistol/t73_impact + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER + accepted_ammo = list( + /obj/item/ammo_magazine/pistol/t73, + /obj/item/ammo_magazine/pistol/t73_impact, + ) + attachable_allowed = list( + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/flashlight, + /obj/item/attachable/suppressor, + /obj/item/attachable/heavy_barrel, + ) -/obj/item/weapon/gun/pistol/c99/upp/tranq/handle_starting_attachment() +/obj/item/weapon/gun/pistol/t73/leader/handle_starting_attachment() ..() - var/obj/item/attachable/lasersight/LS = new(src) - LS.flags_attach_features &= ~ATTACH_REMOVABLE - LS.Attach(src) - update_attachable(LS.slot) + var/obj/item/attachable/lasersight/TT = new(src) + TT.flags_attach_features &= ~ATTACH_REMOVABLE + TT.hidden = TRUE + TT.Attach(src) + update_attachable(TT.slot) - var/obj/item/attachable/reflex/RX = new(src) - RX.flags_attach_features &= ~ATTACH_REMOVABLE - RX.Attach(src) - update_attachable(RX.slot) +/obj/item/weapon/gun/pistol/t73/leader/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_11) + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_6 + accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_6 + scatter = SCATTER_AMOUNT_TIER_7 + burst_scatter_mult = SCATTER_AMOUNT_TIER_6 + scatter_unwielded = SCATTER_AMOUNT_TIER_7 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_6 //------------------------------------------------------- //KT-42 //Inspired by the .44 Auto Mag pistol @@ -337,7 +403,7 @@ /obj/item/weapon/gun/pistol/kt42/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_1 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_2 scatter = SCATTER_AMOUNT_TIER_6 @@ -373,7 +439,7 @@ /obj/item/weapon/gun/pistol/holdout/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_6 @@ -410,7 +476,7 @@ /obj/item/weapon/gun/pistol/clfpistol/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_10 + set_fire_delay(FIRE_DELAY_TIER_12) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_6 @@ -462,8 +528,8 @@ if(!manually_slided) click_empty() to_chat(user, SPAN_DANGER("\The [src] makes a clicking noise! You need to manually rack the slide after loading in a new magazine!")) - return - ..() + return NONE + return ..() /obj/item/weapon/gun/pistol/highpower/unique_action(mob/user) if(!manually_slided) @@ -488,7 +554,7 @@ /obj/item/weapon/gun/pistol/highpower/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_5 + set_fire_delay(FIRE_DELAY_TIER_5) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_3 scatter = SCATTER_AMOUNT_TIER_6 @@ -552,9 +618,9 @@ /obj/item/weapon/gun/pistol/mod88/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_9 - burst_amount = BURST_AMOUNT_TIER_3 - burst_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_11) + set_burst_amount(BURST_AMOUNT_TIER_3) + set_burst_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_7 @@ -573,6 +639,43 @@ flashlight.Attach(src) update_attachable(flashlight.slot) +//------------------------------------------------------- +// ES-4 - Basically a CL-exclusive reskin of the 88 mod 4 that only uses less-lethal ammo. + +/obj/item/weapon/gun/pistol/es4 + name = "\improper ES-4 electrostatic pistol" + desc = "A Weyland Corp manufactured less-than-lethal pistol. Originally manufactured in the 2080s, the ES-4 electrostatic pistol fires electrically-charged bullets with high accuracy, though its cost and constant need for cleaning makes it a rare sight." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/wy.dmi' + icon_state = "es4" + item_state = "es4" + fire_sound = 'sound/weapons/gun_es4.ogg' + firesound_volume = 20 + reload_sound = 'sound/weapons/gun_88m4_reload.ogg' + unload_sound = 'sound/weapons/gun_88m4_unload.ogg' + current_mag = /obj/item/ammo_magazine/pistol/es4 + force = 8 + muzzle_flash = "muzzle_flash_blue" + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER + attachable_allowed = list( + /obj/item/attachable/flashlight, + /obj/item/attachable/reflex, + /obj/item/attachable/reddot, + /obj/item/attachable/lasersight, + ) + +/obj/item/weapon/gun/pistol/es4/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 27, "muzzle_y" = 21, "rail_x" = 10, "rail_y" = 22, "under_x" = 25, "under_y" = 18, "stock_x" = 18, "stock_y" = 15) + + +/obj/item/weapon/gun/pistol/es4/set_gun_config_values() + ..() + fire_delay = FIRE_DELAY_TIER_11 + accuracy_mult = BASE_ACCURACY_MULT + accuracy_mult_unwielded = BASE_ACCURACY_MULT + scatter = SCATTER_AMOUNT_TIER_7 + scatter_unwielded = SCATTER_AMOUNT_TIER_7 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_4 + //------------------------------------------------------- //VP78 - the only pistol viable as a primary. @@ -614,9 +717,9 @@ /obj/item/weapon/gun/pistol/vp78/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_4 - burst_amount = BURST_AMOUNT_TIER_3 - burst_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_4) + set_burst_amount(BURST_AMOUNT_TIER_3) + set_burst_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_6 @@ -646,9 +749,9 @@ It is a modified Beretta 93R, and can fire three-round burst or single fire. Whe /obj/item/weapon/gun/pistol/auto9/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_7 - burst_amount = BURST_AMOUNT_TIER_3 - burst_delay = FIRE_DELAY_TIER_10 + set_fire_delay(FIRE_DELAY_TIER_7) + set_burst_amount(BURST_AMOUNT_TIER_3) + set_burst_delay(FIRE_DELAY_TIER_12) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_6 @@ -678,9 +781,9 @@ It is a modified Beretta 93R, and can fire three-round burst or single fire. Whe /obj/item/weapon/gun/pistol/chimp/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_8 - burst_delay = FIRE_DELAY_TIER_9 - burst_amount = BURST_AMOUNT_TIER_2 + set_fire_delay(FIRE_DELAY_TIER_9) + set_burst_delay(FIRE_DELAY_TIER_11) + set_burst_amount(BURST_AMOUNT_TIER_2) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_6 @@ -710,9 +813,9 @@ It is a modified Beretta 93R, and can fire three-round burst or single fire. Whe /obj/item/weapon/gun/pistol/smart/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_10 - burst_amount = BURST_AMOUNT_TIER_3 - burst_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_12) + set_burst_amount(BURST_AMOUNT_TIER_3) + set_burst_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_6 @@ -733,13 +836,13 @@ It is a modified Beretta 93R, and can fire three-round burst or single fire. Whe /obj/item/weapon/gun/pistol/skorpion name = "\improper CZ-81 machine pistol" desc = "A robust, 20th century firearm that's a combination of pistol and submachinegun. Fires .32ACP caliber rounds from a 20-round magazine." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' icon_state = "skorpion" item_state = "skorpion" fire_sound = 'sound/weapons/gun_skorpion.ogg' current_mag = /obj/item/ammo_magazine/pistol/skorpion - flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_HAS_FULL_AUTO|GUN_FULL_AUTO_ON|GUN_FULL_AUTO_ONLY + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED attachable_allowed = list( /obj/item/attachable/reddot, //Rail /obj/item/attachable/reflex, @@ -750,45 +853,19 @@ It is a modified Beretta 93R, and can fire three-round burst or single fire. Whe /obj/item/attachable/heavy_barrel, /obj/item/attachable/lasersight, //Underbarrel /obj/item/attachable/burstfire_assembly, - ) + ) + start_semiauto = FALSE + start_automatic = TRUE /obj/item/weapon/gun/pistol/skorpion/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 29, "muzzle_y" = 18,"rail_x" = 16, "rail_y" = 21, "under_x" = 23, "under_y" = 15, "stock_x" = 23, "stock_y" = 15) /obj/item/weapon/gun/pistol/skorpion/set_gun_config_values() ..() - fa_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_11) fa_scatter_peak = 15 //shots - fa_max_scatter = SCATTER_AMOUNT_TIER_4 - - accuracy_mult = BASE_ACCURACY_MULT - scatter = SCATTER_AMOUNT_TIER_6 - damage_mult = BASE_BULLET_DAMAGE_MULT - -/obj/item/weapon/gun/pistol/skorpion/upp - desc = "A robust, 20th century firearm modernized for the 23rd century. Fires .32ACP caliber rounds from a 20-round magazine." - icon_state = "skorpion_u" - item_state = "skorpion_u" - -/obj/item/weapon/gun/pistol/skorpion/upp/medic - random_spawn_chance = 100 - random_rail_chance = 70 - random_spawn_rail = list( - /obj/item/attachable/reflex, - /obj/item/attachable/flashlight, - ) - random_muzzle_chance = 50 - random_spawn_muzzle = list( - /obj/item/attachable/suppressor, - ) - random_under_chance = 60 - random_spawn_under = list( - /obj/item/attachable/lasersight, - ) - -/obj/item/weapon/gun/pistol/skorpion/set_gun_config_values() - ..() fa_max_scatter = SCATTER_AMOUNT_TIER_5 + accuracy_mult = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_7 damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_2 diff --git a/code/modules/projectiles/guns/revolvers.dm b/code/modules/projectiles/guns/revolvers.dm index 3553ae880d7d..48f237f9b562 100644 --- a/code/modules/projectiles/guns/revolvers.dm +++ b/code/modules/projectiles/guns/revolvers.dm @@ -33,7 +33,7 @@ /obj/item/weapon/gun/revolver/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_5 + set_fire_delay(FIRE_DELAY_TIER_5) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_3 scatter = SCATTER_AMOUNT_TIER_8 @@ -182,7 +182,7 @@ rotate_cylinder() return 1 -/obj/item/weapon/gun/revolver/delete_bullet(obj/item/projectile/projectile_to_fire, refund = 0) +/obj/item/weapon/gun/revolver/delete_bullet(obj/projectile/projectile_to_fire, refund = 0) qdel(projectile_to_fire) if(refund && current_mag) current_mag.current_rounds++ @@ -318,7 +318,7 @@ /obj/item/weapon/gun/revolver/m44/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_7 + set_fire_delay(FIRE_DELAY_TIER_7) accuracy_mult = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_8 damage_mult = BASE_BULLET_DAMAGE_MULT @@ -375,7 +375,7 @@ ..() accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_2 - fire_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_11) /obj/item/weapon/gun/revolver/m44/custom/pkd_special/k2049 name = "\improper M2049 Blaster" @@ -414,9 +414,9 @@ ..() accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_2 - fire_delay = FIRE_DELAY_TIER_9 - burst_amount = BURST_AMOUNT_TIER_2 - burst_delay = FIRE_DELAY_TIER_10 + set_fire_delay(FIRE_DELAY_TIER_11) + set_burst_amount(BURST_AMOUNT_TIER_2) + set_burst_delay(FIRE_DELAY_TIER_12) /obj/item/weapon/gun/revolver/m44/custom/webley //Van Bandolier's Webley. @@ -440,14 +440,20 @@ //------------------------------------------------------- //RUSSIAN REVOLVER //Based on the 7.62mm Russian revolvers. -/obj/item/weapon/gun/revolver/nagant - name = "\improper N-Y 7.62mm revolver" - desc = "The Nagant-Yamasaki 7.62 is an effective killing machine designed by a consortion of shady Not-Americans. It is frequently found in the hands of criminals or mercenaries." +/obj/item/weapon/gun/revolver/upp + name = "\improper ZHNK-72 revolver" + desc = "The ZHNK-72 is a UPP designed revolver. The ZHNK-72 is used by the UPP armed forces in a policing role as well as limited numbers in the hands of SNCOs." icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' - icon_state = "ny762" - item_state = "ny762" + icon_state = "zhnk72" + item_state = "zhnk72" - fire_sound = 'sound/weapons/gun_pistol_medium.ogg' + fire_sound = "gun_pkd" //sounds stolen from bladerunner revolvers bc they arent used and sound awesome + fire_rattle = 'sound/weapons/gun_pkd_fire01_rattle.ogg' + reload_sound = 'sound/weapons/handling/pkd_speed_load.ogg' + cocked_sound = 'sound/weapons/handling/pkd_cock.wav' + unload_sound = 'sound/weapons/handling/pkd_open_chamber.ogg' + chamber_close_sound = 'sound/weapons/handling/pkd_close_chamber.ogg' + hand_reload_sound = 'sound/weapons/gun_revolver_load3.ogg' current_mag = /obj/item/ammo_magazine/internal/revolver/upp force = 8 attachable_allowed = list( @@ -460,23 +466,22 @@ /obj/item/attachable/bayonet/upp, /obj/item/attachable/heavy_barrel, /obj/item/attachable/extended_barrel, - /obj/item/attachable/compensator, /obj/item/attachable/lasersight, // Underbarrel ) -/obj/item/weapon/gun/revolver/nagant/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 28, "muzzle_y" = 21,"rail_x" = 14, "rail_y" = 23, "under_x" = 24, "under_y" = 19, "stock_x" = 24, "stock_y" = 19) +/obj/item/weapon/gun/revolver/upp/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 28, "muzzle_y" = 21,"rail_x" = 14, "rail_y" = 23, "under_x" = 19, "under_y" = 17, "stock_x" = 24, "stock_y" = 19) -/obj/item/weapon/gun/revolver/nagant/set_gun_config_values() +/obj/item/weapon/gun/revolver/upp/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_8 + set_fire_delay(FIRE_DELAY_TIER_9) accuracy_mult = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_6 - damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_1 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_4 recoil = 0 recoil_unwielded = 0 -/obj/item/weapon/gun/revolver/nagant/shrapnel +/obj/item/weapon/gun/revolver/upp/shrapnel current_mag = /obj/item/ammo_magazine/internal/revolver/upp/shrapnel random_spawn_chance = 100 random_under_chance = 100 @@ -504,7 +509,7 @@ /obj/item/weapon/gun/revolver/small/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_6 + set_fire_delay(FIRE_DELAY_TIER_6) accuracy_mult = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 scatter = SCATTER_AMOUNT_TIER_5 @@ -561,9 +566,10 @@ unacidable = TRUE black_market_value = 100 var/is_locked = TRUE + var/can_change_barrel = TRUE /obj/item/weapon/gun/revolver/mateba/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/weapon/mateba_key)) + if(istype(I, /obj/item/weapon/mateba_key) && can_change_barrel) if(attachments["special"]) var/obj/item/attachable/R = attachments["special"] visible_message(SPAN_NOTICE("[user] begins stripping [R] from [src]."), @@ -585,7 +591,7 @@ update_icon() else if(istype(I, /obj/item/attachable)) var/obj/item/attachable/A = I - if(A.slot == "muzzle" && !attachments["special"]) + if(A.slot == "muzzle" && !attachments["special"] && can_change_barrel) to_chat(user, SPAN_WARNING("You need to attach a barrel first!")) return . = ..() @@ -596,9 +602,9 @@ /obj/item/weapon/gun/revolver/mateba/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_2 - burst_amount = BURST_AMOUNT_TIER_3 - burst_delay = FIRE_DELAY_TIER_7 + set_fire_delay(FIRE_DELAY_TIER_3) + set_burst_amount(BURST_AMOUNT_TIER_3) + set_burst_delay(FIRE_DELAY_TIER_8) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_2 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_5 scatter = SCATTER_AMOUNT_TIER_7 @@ -662,6 +668,29 @@ current_mag = /obj/item/ammo_magazine/internal/revolver/mateba/impact map_specific_decoration = TRUE +/obj/item/weapon/gun/revolver/mateba/special + name = "\improper Mateba autorevolver special" + desc = "An old, heavily modified version of the Mateba Autorevolver. It sports a smooth wooden grip, and a much larger barrel to it's unmodified counterpart. It's clear that this weapon has been cared for over a long period of time." + icon_state = "cmateba_special" + item_state = "cmateba_special" + current_mag = /obj/item/ammo_magazine/internal/revolver/mateba/impact + attachable_allowed = list( + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/flashlight, + /obj/item/attachable/heavy_barrel, + /obj/item/attachable/compensator, + ) + starting_attachment_types = list() + can_change_barrel = FALSE + +/obj/item/weapon/gun/revolver/mateba/special/set_gun_config_values() + ..() + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 + +/obj/item/weapon/gun/revolver/mateba/special/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 30, "muzzle_y" = 23,"rail_x" = 9, "rail_y" = 24, "under_x" = 19, "under_y" = 17, "stock_x" = 19, "stock_y" = 17, "special_x" = 23, "special_y" = 22) + //------------------------------------------------------- //MARSHALS REVOLVER //Spearhead exists in Alien cannon. @@ -699,14 +728,14 @@ /obj/item/weapon/gun/revolver/cmb/Fire(atom/target, mob/living/user, params, reflex = 0, dual_wield) playsound('sound/weapons/gun_cmb_bass.ogg') // badass shooting bass - . = ..() + return ..() /obj/item/weapon/gun/revolver/cmb/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 29, "muzzle_y" = 22,"rail_x" = 11, "rail_y" = 25, "under_x" = 20, "under_y" = 18, "stock_x" = 20, "stock_y" = 18) /obj/item/weapon/gun/revolver/cmb/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_6 + set_fire_delay(FIRE_DELAY_TIER_6) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_4 scatter = SCATTER_AMOUNT_TIER_7 diff --git a/code/modules/projectiles/guns/rifles.dm b/code/modules/projectiles/guns/rifles.dm index ab2602204f72..29b2c55b7ec0 100644 --- a/code/modules/projectiles/guns/rifles.dm +++ b/code/modules/projectiles/guns/rifles.dm @@ -18,9 +18,9 @@ /obj/item/weapon/gun/rifle/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_5 - burst_amount = BURST_AMOUNT_TIER_3 - burst_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_5) + set_burst_amount(BURST_AMOUNT_TIER_3) + set_burst_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 scatter = SCATTER_AMOUNT_TIER_6 @@ -75,6 +75,7 @@ flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER starting_attachment_types = list(/obj/item/attachable/attached_gun/grenade, /obj/item/attachable/stock/rifle/collapsible) map_specific_decoration = TRUE + start_automatic = TRUE /obj/item/weapon/gun/rifle/m41a/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 18,"rail_x" = 12, "rail_y" = 23, "under_x" = 24, "under_y" = 13, "stock_x" = 24, "stock_y" = 13) @@ -82,9 +83,9 @@ /obj/item/weapon/gun/rifle/m41a/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_9 - burst_amount = BURST_AMOUNT_TIER_3 - burst_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_11) + set_burst_amount(BURST_AMOUNT_TIER_3) + set_burst_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 + 2*HIT_ACCURACY_MULT_TIER_1 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 scatter = SCATTER_AMOUNT_TIER_8 @@ -137,7 +138,7 @@ /obj/item/attachable/scope/mini/nsg23, ) - flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER|GUN_BURST_ON|GUN_BURST_ONLY|GUN_WY_RESTRICTED + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER|GUN_WY_RESTRICTED random_spawn_muzzle = list( /obj/item/attachable/suppressor, @@ -148,6 +149,8 @@ /obj/item/attachable/scope/mini/nsg23, /obj/item/attachable/attached_gun/flamer/advanced, ) + start_semiauto = FALSE + start_automatic = TRUE /obj/item/weapon/gun/rifle/nsg23/Initialize(mapload, spawn_empty) . = ..() @@ -158,9 +161,9 @@ /obj/item/weapon/gun/rifle/nsg23/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_7 - burst_amount = BURST_AMOUNT_TIER_3 - burst_delay = FIRE_DELAY_TIER_8 + set_fire_delay(FIRE_DELAY_TIER_7) + set_burst_amount(BURST_AMOUNT_TIER_3) + set_burst_delay(FIRE_DELAY_TIER_9) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_10 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 scatter = SCATTER_AMOUNT_TIER_9 @@ -169,6 +172,7 @@ damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_8 recoil_unwielded = RECOIL_AMOUNT_TIER_2 damage_falloff_mult = 0 + fa_max_scatter = SCATTER_AMOUNT_TIER_5 /obj/item/weapon/gun/rifle/nsg23/handle_starting_attachment() ..() @@ -182,7 +186,7 @@ starting_attachment_types = list() //starts with the stock anyways due to handle_starting_attachment() /obj/item/weapon/gun/rifle/nsg23/no_lock - flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER|GUN_BURST_ON|GUN_BURST_ONLY + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER starting_attachment_types = list( /obj/item/attachable/scope/mini/nsg23, /obj/item/attachable/attached_gun/flamer,//non-op flamer for normal spawns @@ -230,9 +234,9 @@ /obj/item/weapon/gun/rifle/m41a/elite/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_9 - burst_amount = BURST_AMOUNT_TIER_2 - burst_delay = FIRE_DELAY_TIER_10 + set_fire_delay(FIRE_DELAY_TIER_11) + set_burst_amount(BURST_AMOUNT_TIER_2) + set_burst_delay(FIRE_DELAY_TIER_12) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_10 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_4 scatter = SCATTER_AMOUNT_TIER_10 @@ -291,7 +295,7 @@ indestructible = TRUE current_mag = /obj/item/ammo_magazine/rifle/xm40/heap - flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER|GUN_BURST_ON + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER aim_slowdown = SLOWDOWN_ADS_QUICK wield_delay = WIELD_DELAY_FAST map_specific_decoration = FALSE @@ -344,15 +348,17 @@ /obj/item/weapon/gun/rifle/m41a/elite/xm40/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_9 - burst_amount = BURST_AMOUNT_TIER_3 - burst_delay = FIRE_DELAY_TIER_10 + set_fire_delay(FIRE_DELAY_TIER_11) + set_burst_amount(BURST_AMOUNT_TIER_3) + set_burst_delay(FIRE_DELAY_TIER_12) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_10 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_4 scatter = SCATTER_AMOUNT_TIER_10 burst_scatter_mult = SCATTER_AMOUNT_TIER_10 scatter_unwielded = SCATTER_AMOUNT_TIER_4 +/obj/item/weapon/gun/rifle/m41a/elite/xm40/ap + current_mag = /obj/item/ammo_magazine/rifle/xm40 //------------------------------------------------------- //M41A TRUE AND ORIGINAL @@ -381,6 +387,7 @@ flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER starting_attachment_types = list(/obj/item/attachable/attached_gun/grenade/mk1, /obj/item/attachable/stock/rifle/collapsible) + start_automatic = TRUE /obj/item/weapon/gun/rifle/m41aMK1/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 18,"rail_x" = 12, "rail_y" = 23, "under_x" = 23, "under_y" = 13, "stock_x" = 24, "stock_y" = 14) @@ -388,9 +395,9 @@ /obj/item/weapon/gun/rifle/m41aMK1/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_9 - burst_amount = BURST_AMOUNT_TIER_4 - burst_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_11) + set_burst_amount(BURST_AMOUNT_TIER_4) + set_burst_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 scatter = SCATTER_AMOUNT_TIER_9 @@ -430,6 +437,7 @@ accepted_ammo = list( /obj/item/ammo_magazine/rifle, + /obj/item/ammo_magazine/rifle/rubber, /obj/item/ammo_magazine/rifle/extended, /obj/item/ammo_magazine/rifle/ap, /obj/item/ammo_magazine/rifle/incendiary, @@ -496,6 +504,7 @@ LAZYADD(traits_to_give, list( BULLET_TRAIT_ENTRY_ID("iff", /datum/element/bullet_trait_iff) )) + recalculate_attachment_bonuses() /obj/item/weapon/gun/rifle/m46c/Destroy() linked_human = null @@ -515,9 +524,9 @@ /obj/item/weapon/gun/rifle/m46c/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_8 - burst_amount = BURST_AMOUNT_TIER_4 - burst_delay = FIRE_DELAY_TIER_10 + set_fire_delay(FIRE_DELAY_TIER_9) + set_burst_amount(BURST_AMOUNT_TIER_4) + set_burst_delay(FIRE_DELAY_TIER_12) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_8 scatter = SCATTER_AMOUNT_TIER_8 @@ -525,6 +534,7 @@ scatter_unwielded = SCATTER_AMOUNT_TIER_2 damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_3 recoil_unwielded = RECOIL_AMOUNT_TIER_2 + fa_max_scatter = SCATTER_AMOUNT_TIER_7 /obj/item/weapon/gun/rifle/m46c/able_to_fire(mob/user) . = ..() @@ -614,6 +624,7 @@ to_chat(usr, SPAN_WARNING("[icon2html(src, usr)] Action denied by [src]. Unauthorized user.")) return + gun_firemode = GUN_FIREMODE_SEMIAUTO iff_enabled = !iff_enabled to_chat(usr, SPAN_NOTICE("[icon2html(src, usr)] You [iff_enabled? "enable": "disable"] the IFF on [src].")) playsound(loc,'sound/machines/click.ogg', 25, 1) @@ -627,10 +638,13 @@ /obj/item/weapon/gun/rifle/m46c/recalculate_attachment_bonuses() . = ..() if(iff_enabled) - fire_delay += FIRE_DELAY_TIER_10 - burst_amount -= BURST_AMOUNT_TIER_6 + modify_fire_delay(FIRE_DELAY_TIER_12) + remove_firemode(GUN_FIREMODE_BURSTFIRE) + remove_firemode(GUN_FIREMODE_AUTOMATIC) - flags_gun_features &= ~GUN_BURST_ON //Gun loses some combat ability in return for IFF, as well as burst fire mode + else + add_firemode(GUN_FIREMODE_BURSTFIRE) + add_firemode(GUN_FIREMODE_AUTOMATIC) /obj/item/weapon/gun/rifle/m46c/proc/name_after_co(mob/living/carbon/human/H) @@ -714,6 +728,7 @@ ) flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK + start_automatic = TRUE @@ -723,9 +738,9 @@ /obj/item/weapon/gun/rifle/mar40/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_7 - burst_amount = BURST_AMOUNT_TIER_4 - burst_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_7) + set_burst_amount(BURST_AMOUNT_TIER_4) + set_burst_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 scatter = SCATTER_AMOUNT_TIER_6 @@ -796,7 +811,7 @@ /obj/item/weapon/gun/rifle/mar40/carbine/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_8 + set_fire_delay(FIRE_DELAY_TIER_9) accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_4 damage_mult = BASE_BULLET_DAMAGE_MULT - BULLET_DAMAGE_MULT_TIER_2 scatter_unwielded = SCATTER_AMOUNT_TIER_4 @@ -842,9 +857,9 @@ /obj/item/weapon/gun/rifle/mar40/lmg/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_8 - burst_amount = BURST_AMOUNT_TIER_5 - burst_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_9) + set_burst_amount(BURST_AMOUNT_TIER_5) + set_burst_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 scatter = SCATTER_AMOUNT_TIER_6 @@ -935,9 +950,9 @@ /obj/item/weapon/gun/rifle/m16/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_9 - burst_amount = BURST_AMOUNT_TIER_3 - burst_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_11) + set_burst_amount(BURST_AMOUNT_TIER_3) + set_burst_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_7 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 scatter = SCATTER_AMOUNT_TIER_10 @@ -1046,9 +1061,9 @@ /obj/item/weapon/gun/rifle/xm177/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_SMG - burst_amount = BURST_AMOUNT_TIER_3 - burst_delay = FIRE_DELAY_TIER_SMG + set_fire_delay(FIRE_DELAY_TIER_SMG) + set_burst_amount(BURST_AMOUNT_TIER_3) + set_burst_delay(FIRE_DELAY_TIER_SMG) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_6 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_3 scatter = SCATTER_AMOUNT_TIER_8 @@ -1123,9 +1138,9 @@ /obj/item/weapon/gun/rifle/ar10/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_7 - burst_amount = BURST_AMOUNT_TIER_3 - burst_delay = FIRE_DELAY_TIER_7 + set_fire_delay(FIRE_DELAY_TIER_7) + set_burst_amount(BURST_AMOUNT_TIER_3) + set_burst_delay(FIRE_DELAY_TIER_7) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_8 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_9 @@ -1185,9 +1200,9 @@ /obj/item/weapon/gun/rifle/xm177/dutch/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_SMG - burst_amount = BURST_AMOUNT_TIER_3 - burst_delay = FIRE_DELAY_TIER_SMG + set_fire_delay(FIRE_DELAY_TIER_SMG) + set_burst_amount(BURST_AMOUNT_TIER_3) + set_burst_delay(FIRE_DELAY_TIER_SMG) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_6 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_3 scatter = SCATTER_AMOUNT_TIER_8 @@ -1227,7 +1242,7 @@ /obj/item/attachable/magnetic_harness, ) - flags_gun_features = GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER|GUN_WIELDED_FIRING_ONLY + flags_gun_features = GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER|GUN_WIELDED_FIRING_ONLY|GUN_SUPPORT_PLATFORM gun_category = GUN_CATEGORY_HEAVY /obj/item/weapon/gun/rifle/lmg/set_gun_attachment_offsets() @@ -1236,10 +1251,9 @@ /obj/item/weapon/gun/rifle/lmg/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_LMG - burst_amount = BURST_AMOUNT_TIER_5 - burst_delay = FIRE_DELAY_TIER_LMG - fa_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_LMG) + set_burst_amount(BURST_AMOUNT_TIER_5) + set_burst_delay(FIRE_DELAY_TIER_LMG) fa_scatter_peak = FULL_AUTO_SCATTER_PEAK_TIER_3 fa_max_scatter = SCATTER_AMOUNT_TIER_4 accuracy_mult = BASE_ACCURACY_MULT @@ -1266,6 +1280,8 @@ item_state = "type71" fire_sound = 'sound/weapons/gun_type71.ogg' + reload_sound = 'sound/weapons/handling/m41_reload.ogg' + unload_sound = 'sound/weapons/handling/m41_unload.ogg' current_mag = /obj/item/ammo_magazine/rifle/type71 wield_delay = WIELD_DELAY_FAST attachable_allowed = list( @@ -1281,10 +1297,8 @@ /obj/item/attachable/extended_barrel, /obj/item/attachable/heavy_barrel, /obj/item/attachable/verticalgrip, // Underbarrel - /obj/item/attachable/angledgrip, /obj/item/attachable/flashlight/grip, /obj/item/attachable/lasersight, - /obj/item/attachable/bipod, /obj/item/attachable/burstfire_assembly, /obj/item/attachable/attached_gun/flamer, /obj/item/attachable/attached_gun/flamer/advanced, @@ -1293,23 +1307,31 @@ flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER flags_equip_slot = SLOT_BACK + start_automatic = TRUE /obj/item/weapon/gun/rifle/type71/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 18,"rail_x" = 18, "rail_y" = 23, "under_x" = 20, "under_y" = 13, "stock_x" = 24, "stock_y" = 13) + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 17,"rail_x" = 10, "rail_y" = 23, "under_x" = 20, "under_y" = 13, "stock_x" = 11, "stock_y" = 13) /obj/item/weapon/gun/rifle/type71/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_9 - burst_amount = BURST_AMOUNT_TIER_4 - burst_delay = FIRE_DELAY_TIER_8 + set_fire_delay(FIRE_DELAY_TIER_8) + set_burst_amount(BURST_AMOUNT_TIER_4) + set_burst_delay(FIRE_DELAY_TIER_9) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 scatter = SCATTER_AMOUNT_TIER_6 burst_scatter_mult = SCATTER_AMOUNT_TIER_10 scatter_unwielded = SCATTER_AMOUNT_TIER_4 - damage_mult = BASE_BULLET_DAMAGE_MULT + damage_mult = BASE_BULLET_DAMAGE_MULT //10~ more damage than m41, as well as higher ap from bullet, slightly higher DPS, 133>137.5 recoil_unwielded = RECOIL_AMOUNT_TIER_3 +/obj/item/weapon/gun/rifle/type71/handle_starting_attachment() + ..() + var/obj/item/attachable/stock/type71/STOCK = new(src) + STOCK.flags_attach_features &= ~ATTACH_REMOVABLE + STOCK.Attach(src) + update_attachable(STOCK.slot) + /obj/item/weapon/gun/rifle/type71/rifleman //add GL random_spawn_chance = 100 @@ -1324,9 +1346,7 @@ ) random_under_chance = 40 random_spawn_under = list( - /obj/item/attachable/lasersight, /obj/item/attachable/verticalgrip, - /obj/item/attachable/angledgrip, ) /obj/item/weapon/gun/rifle/type71/dual @@ -1344,7 +1364,6 @@ random_spawn_under = list( /obj/item/attachable/lasersight, /obj/item/attachable/verticalgrip, - /obj/item/attachable/angledgrip, ) /obj/item/weapon/gun/rifle/type71/sapper @@ -1363,7 +1382,6 @@ ) random_under_chance = 90 random_spawn_under = list( - /obj/item/attachable/lasersight, /obj/item/attachable/attached_gun/extinguisher, ) @@ -1371,10 +1389,17 @@ name = "\improper Type 71-F pulse rifle" desc = " This appears to be a less common variant of the Type 71 with an integrated flamethrower that seems especially powerful." attachable_allowed = list( - /obj/item/attachable/suppressor, + /obj/item/attachable/flashlight, // Rail + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/scope, + /obj/item/attachable/scope/mini, /obj/item/attachable/reddot, /obj/item/attachable/reflex, + /obj/item/attachable/suppressor, // Muzzle + /obj/item/attachable/bayonet, + /obj/item/attachable/bayonet/upp, /obj/item/attachable/extended_barrel, + /obj/item/attachable/heavy_barrel, ) /obj/item/weapon/gun/rifle/type71/flamer/handle_starting_attachment() @@ -1406,16 +1431,35 @@ aim_slowdown = SLOWDOWN_ADS_QUICK //Carbine is more lightweight wield_delay = WIELD_DELAY_VERY_FAST bonus_overlay_x = 2 + force = 20 //integrated melee mod from stock, which doesn't fit on the gun but is still clearly there on the sprite + attachable_allowed = list( + /obj/item/attachable/flashlight, // Rail + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/scope, + /obj/item/attachable/scope/mini, + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/suppressor, // Muzzle + /obj/item/attachable/bayonet, + /obj/item/attachable/bayonet/upp, + /obj/item/attachable/extended_barrel, + /obj/item/attachable/heavy_barrel, + /obj/item/attachable/verticalgrip, // Underbarrel + /obj/item/attachable/burstfire_assembly, + ) random_spawn_muzzle = list() //no default bayonet /obj/item/weapon/gun/rifle/type71/carbine/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 30, "muzzle_y" = 18,"rail_x" = 19, "rail_y" = 22, "under_x" = 21, "under_y" = 14, "stock_x" = 24, "stock_y" = 13) + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 17,"rail_x" = 14, "rail_y" = 23, "under_x" = 25, "under_y" = 14, "stock_x" = 24, "stock_y" = 13) + +/obj/item/weapon/gun/rifle/type71/carbine/handle_starting_attachment() + return //integrated attachment code makes me want to blow my brains out /obj/item/weapon/gun/rifle/type71/carbine/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_9 - damage_mult = BASE_BULLET_DAMAGE_MULT - BULLET_DAMAGE_MULT_TIER_2 + set_fire_delay(FIRE_DELAY_TIER_11)//same fire rate as m41 + damage_mult = BASE_BULLET_DAMAGE_MULT - BULLET_DAMAGE_MULT_TIER_4//same damage as m41 reg bullets probably scatter_unwielded = SCATTER_AMOUNT_TIER_5 recoil_unwielded = RECOIL_AMOUNT_TIER_4 @@ -1432,9 +1476,7 @@ ) random_under_chance = 40 random_spawn_under = list( - /obj/item/attachable/lasersight, /obj/item/attachable/verticalgrip, - /obj/item/attachable/angledgrip, ) /obj/item/weapon/gun/rifle/type71/carbine/commando @@ -1442,12 +1484,13 @@ desc = "A much rarer variant of the Type 71, this version contains an integrated suppressor, integrated scope, and extensive fine-tuning. Many parts have been replaced, filed down, and improved upon. As a result, this variant is rarely seen outside of commando units." icon_state = "type73" item_state = "type73" + + fire_sound = "gun_silenced" wield_delay = 0 //Ends up being .5 seconds due to scope - current_mag = /obj/item/ammo_magazine/rifle/type71/heap + inherent_traits = list(TRAIT_GUN_SILENCED) + current_mag = /obj/item/ammo_magazine/rifle/type71/ap attachable_allowed = list( - /obj/item/attachable/lasersight, /obj/item/attachable/verticalgrip, - /obj/item/attachable/angledgrip, ) random_spawn_chance = 0 random_spawn_rail = list() @@ -1455,32 +1498,31 @@ bonus_overlay_x = 1 bonus_overlay_y = 0 -/obj/item/weapon/gun/rifle/type71/carbine/commando/handle_starting_attachment()//Making the gun have an invisible silencer since it's supposed to have one. +/obj/item/weapon/gun/rifle/type71/carbine/commando/handle_starting_attachment() ..() //suppressor - var/obj/item/attachable/suppressor/S = new(src) - S.hidden = TRUE - S.flags_attach_features &= ~ATTACH_REMOVABLE - S.Attach(src) - update_attachable(S.slot) + var/obj/item/attachable/type73suppressor/suppressor = new(src) + suppressor.flags_attach_features &= ~ATTACH_REMOVABLE + suppressor.Attach(src) + update_attachable(suppressor.slot) //scope - var/obj/item/attachable/scope/mini/F = new(src) - F.hidden = TRUE - F.flags_attach_features &= ~ATTACH_REMOVABLE - F.Attach(src) - update_attachable(F.slot) + var/obj/item/attachable/scope/mini/scope = new(src) + scope.hidden = TRUE + scope.flags_attach_features &= ~ATTACH_REMOVABLE + scope.Attach(src) + update_attachable(scope.slot) /obj/item/weapon/gun/rifle/type71/carbine/commando/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 30, "muzzle_y" = 19,"rail_x" = 10, "rail_y" = 22, "under_x" = 21, "under_y" = 18, "stock_x" = 21, "stock_y" = 18) + attachable_offset = list("muzzle_x" = 35, "muzzle_y" = 17,"rail_x" = 10, "rail_y" = 22, "under_x" = 23, "under_y" = 14, "stock_x" = 21, "stock_y" = 18) /obj/item/weapon/gun/rifle/type71/carbine/commando/set_gun_config_values() ..() accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_7 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_4 - fire_delay = FIRE_DELAY_TIER_9 - burst_delay = FIRE_DELAY_TIER_10 + set_fire_delay(FIRE_DELAY_TIER_11) + set_burst_delay(FIRE_DELAY_TIER_12) scatter = SCATTER_AMOUNT_TIER_8 //------------------------------------------------------- @@ -1526,11 +1568,11 @@ /obj/item/weapon/gun/rifle/m4ra/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_8 - burst_amount = 0 + set_fire_delay(FIRE_DELAY_TIER_9) + set_burst_amount(0) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_4 - damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_6 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_8 recoil_unwielded = RECOIL_AMOUNT_TIER_4 damage_falloff_mult = 0 scatter = SCATTER_AMOUNT_TIER_8 @@ -1590,8 +1632,8 @@ /obj/item/weapon/gun/rifle/l42a/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_8 - burst_amount = 0 + set_fire_delay(FIRE_DELAY_TIER_9) + set_burst_amount(0) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_4 damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_6 @@ -1685,3 +1727,263 @@ ) random_under_chance = 50 random_spawn_under = list(/obj/item/attachable/flashlight/grip) + +//=ROYAL MARINES=\\ + +/obj/item/weapon/gun/rifle/rmc_f90 + name = "\improper F903A1 Rifle" + desc = "The standard issue rifle of the royal marines. Uniquely the royal marines are the only modern military to not use a pulse weapon. Uses 10x24mm caseless ammunition." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/twe_guns.dmi' + icon_state = "aug" + item_state = "aug" + fire_sound = "gun_pulse" + reload_sound = 'sound/weapons/handling/m41_reload.ogg' + unload_sound = 'sound/weapons/handling/m41_unload.ogg' + current_mag = /obj/item/ammo_magazine/rifle/rmc_f90 + flags_equip_slot = NO_FLAGS + attachable_allowed = list( + /obj/item/attachable/suppressor, + /obj/item/attachable/bayonet, + /obj/item/attachable/bayonet/upp, + /obj/item/attachable/bayonet/co2, + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/flashlight, + /obj/item/attachable/extended_barrel, + /obj/item/attachable/heavy_barrel, + /obj/item/attachable/magnetic_harness, + ) + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER + map_specific_decoration = FALSE + aim_slowdown = SLOWDOWN_ADS_QUICK + +/obj/item/weapon/gun/rifle/rmc_f90/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 16,"rail_x" = 15, "rail_y" = 21, "under_x" = 24, "under_y" = 13, "stock_x" = 24, "stock_y" = 13) + + +/obj/item/weapon/gun/rifle/rmc_f90/set_gun_config_values() + ..() + fire_delay = FIRE_DELAY_TIER_8 + burst_amount = BURST_AMOUNT_TIER_3 + burst_delay = FIRE_DELAY_TIER_8 + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 + 2*HIT_ACCURACY_MULT_TIER_1 + accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 + scatter = SCATTER_AMOUNT_TIER_8 + burst_scatter_mult = SCATTER_AMOUNT_TIER_10 + scatter_unwielded = SCATTER_AMOUNT_TIER_2 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_2 + recoil_unwielded = RECOIL_AMOUNT_TIER_2 + +/obj/item/weapon/gun/rifle/rmc_f90/a_grip + name = "\improper F903A2 Rifle" + desc = "A non-standard issue rifle of the royal marines the F903A2 is currently being phased into the royal marines as their new mainline rifle but currently only sees use by unit leaders. Uniquely the royal marines are the only modern military to not use a pulse weapon. Uses 10x24mm caseless ammunition." + icon_state = "aug_com" + item_state = "aug_com" + attachable_allowed = list( + /obj/item/attachable/suppressor, + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/extended_barrel, + ) + +/obj/item/weapon/gun/rifle/rmc_f90/a_grip/handle_starting_attachment() + ..() + var/obj/item/attachable/angledgrip/f90_agrip = new(src) + f90_agrip.flags_attach_features &= ~ATTACH_REMOVABLE + f90_agrip.hidden = TRUE + f90_agrip.Attach(src) + update_attachable(f90_agrip.slot) + +/obj/item/weapon/gun/rifle/rmc_f90/scope + name = "\improper F903A1 Marksman Rifle" + desc = "A variation of the F903 rifle used by the royal marines commando. This weapon only accepts the smaller 20 round magazines of 10x24mm." + icon_state = "aug_dmr" + item_state = "aug_dmr" + attachable_allowed = null + current_mag = /obj/item/ammo_magazine/rifle/rmc_f90/marksman + +/obj/item/weapon/gun/rifle/rmc_f90/scope/set_gun_config_values() + ..() + fire_delay = FIRE_DELAY_TIER_7 + burst_amount = 0 + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 + 2*HIT_ACCURACY_MULT_TIER_1 + accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 + scatter = SCATTER_AMOUNT_TIER_8 + scatter_unwielded = SCATTER_AMOUNT_TIER_2 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_6 + recoil_unwielded = RECOIL_AMOUNT_TIER_2 + damage_falloff_mult = 0 + +/obj/item/weapon/gun/rifle/rmc_f90/scope/handle_starting_attachment() + ..() + var/obj/item/attachable/scope/mini/f90/f90_scope = new(src) + var/obj/item/attachable/angledgrip/f90_agrip = new(src) + var/obj/item/attachable/f90_dmr_barrel/f90_dmr_barrel = new(src) + f90_scope.flags_attach_features &= ~ATTACH_REMOVABLE + f90_agrip.flags_attach_features &= ~ATTACH_REMOVABLE + f90_dmr_barrel.flags_attach_features &= ~ATTACH_REMOVABLE + f90_scope.hidden = TRUE + f90_agrip.hidden = TRUE + f90_dmr_barrel.hidden = FALSE + f90_agrip.Attach(src) + f90_scope.Attach(src) + f90_dmr_barrel.Attach(src) + update_attachable(f90_agrip.slot) + update_attachable(f90_scope.slot) + update_attachable(f90_dmr_barrel.slot) + +/obj/item/weapon/gun/rifle/rmc_f90/shotgun + name = "\improper F903A1/B 'Breacher' Rifle" + desc = "A variation of the F903 rifle used by the royal marines commando. Modified to be used in one hand with a shield. Uses 10x24mm caseless ammunition." + icon_state = "aug_mkey" + item_state = "aug_mkey" + attachable_allowed = list( + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + ) + +/obj/item/weapon/gun/rifle/rmc_f90/shotgun/set_gun_config_values() + ..() + fire_delay = FIRE_DELAY_TIER_8 + burst_amount = BURST_AMOUNT_TIER_3 + burst_delay = FIRE_DELAY_TIER_8 + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 + 2*HIT_ACCURACY_MULT_TIER_1 + accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_2 + scatter = SCATTER_AMOUNT_TIER_8 + burst_scatter_mult = SCATTER_AMOUNT_TIER_10 + scatter_unwielded = SCATTER_AMOUNT_TIER_2 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_2 + recoil_unwielded = RECOIL_OFF + +/obj/item/weapon/gun/rifle/rmc_f90/shotgun/handle_starting_attachment() + ..() + var/obj/item/attachable/attached_gun/shotgun/f90_shotgun = new(src) + var/obj/item/attachable/f90_dmr_barrel/f90_shotgun_barrel = new(src) + f90_shotgun.flags_attach_features &= ~ATTACH_REMOVABLE + f90_shotgun_barrel.flags_attach_features &= ~ATTACH_REMOVABLE + f90_shotgun_barrel.hidden = FALSE + f90_shotgun.hidden = TRUE + f90_shotgun.Attach(src) + f90_shotgun_barrel.Attach(src) + update_attachable(f90_shotgun.slot) + update_attachable(f90_shotgun_barrel.slot) + +//------------------------------------------------------- +//XM51, Breaching Scattergun + +/obj/item/weapon/gun/rifle/xm51 + name = "\improper XM51 breaching scattergun" + desc = "An experimental shotgun model going through testing trials in the USCM. Based on the original civilian and CMB version, the XM51 is a mag-fed, pump-action shotgun. It utilizes special 16-gauge breaching rounds which are effective at breaching walls and doors. Users are advised not to employ the weapon against soft or armored targets due to low performance of the shells." + icon_state = "xm51" + item_state = "xm51" + fire_sound = 'sound/weapons/gun_shotgun_xm51.ogg' + reload_sound = 'sound/weapons/handling/l42_reload.ogg' + unload_sound = 'sound/weapons/handling/l42_unload.ogg' + current_mag = /obj/item/ammo_magazine/rifle/xm51 + attachable_allowed = list( + /obj/item/attachable/bayonet, + /obj/item/attachable/bayonet/upp, + /obj/item/attachable/bayonet/co2, + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/verticalgrip, + /obj/item/attachable/angledgrip, + /obj/item/attachable/gyro, + /obj/item/attachable/flashlight/grip, + /obj/item/attachable/flashlight, + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/stock/xm51, + ) + flags_equip_slot = SLOT_BACK + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER + gun_category = GUN_CATEGORY_SHOTGUN + aim_slowdown = SLOWDOWN_ADS_SHOTGUN + map_specific_decoration = TRUE + + var/pump_delay //How long we have to wait before we can pump the shotgun again. + var/pump_sound = "shotgunpump" + var/message_delay = 1 SECONDS //To stop message spam when trying to pump the gun constantly. + var/burst_count = 0 //To detect when the burst fire is near its end. + COOLDOWN_DECLARE(allow_message) + COOLDOWN_DECLARE(allow_pump) + +/obj/item/weapon/gun/rifle/xm51/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 34, "muzzle_y" = 18, "rail_x" = 12, "rail_y" = 20, "under_x" = 24, "under_y" = 13, "stock_x" = 15, "stock_y" = 16) + +/obj/item/weapon/gun/rifle/xm51/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_4*2) + set_burst_amount(0) + burst_scatter_mult = SCATTER_AMOUNT_TIER_7 + accuracy_mult = BASE_ACCURACY_MULT + 2*HIT_ACCURACY_MULT_TIER_8 + accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_8 + recoil = RECOIL_AMOUNT_TIER_4 + recoil_unwielded = RECOIL_AMOUNT_TIER_2 + scatter = SCATTER_AMOUNT_TIER_6 + +/obj/item/weapon/gun/rifle/xm51/Initialize(mapload, spawn_empty) + . = ..() + pump_delay = FIRE_DELAY_TIER_8*3 + additional_fire_group_delay += pump_delay + +/obj/item/weapon/gun/rifle/xm51/set_bullet_traits() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY_ID("turfs", /datum/element/bullet_trait_damage_boost, 30, GLOB.damage_boost_turfs), //2550, 2 taps colony walls, 4 taps reinforced walls + BULLET_TRAIT_ENTRY_ID("xeno turfs", /datum/element/bullet_trait_damage_boost, 0.23, GLOB.damage_boost_turfs_xeno), //2550*0.23 = 586, 2 taps resin walls, 3 taps thick resin + BULLET_TRAIT_ENTRY_ID("breaching", /datum/element/bullet_trait_damage_boost, 15, GLOB.damage_boost_breaching), //1275, enough to 1 tap airlocks + BULLET_TRAIT_ENTRY_ID("pylons", /datum/element/bullet_trait_damage_boost, 6, GLOB.damage_boost_pylons) //510, 4 shots to take out a pylon + )) + +/obj/item/weapon/gun/rifle/xm51/unique_action(mob/user) + if(!COOLDOWN_FINISHED(src, allow_pump)) + return + if(in_chamber) + if(COOLDOWN_FINISHED(src, allow_message)) + to_chat(usr, SPAN_WARNING("[src] already has a shell in the chamber!")) + COOLDOWN_START(src, allow_message, message_delay) + return + + playsound(user, pump_sound, 10, 1) + COOLDOWN_START(src, allow_pump, pump_delay) + ready_in_chamber() + burst_count = 0 //Reset the count for burst mode. + +/obj/item/weapon/gun/rifle/xm51/load_into_chamber(mob/user) + return in_chamber + +/obj/item/weapon/gun/rifle/xm51/reload_into_chamber(mob/user) //Don't chamber bullets after firing. + if(!current_mag) + update_icon() + return + + in_chamber = null + if(current_mag.current_rounds <= 0 && flags_gun_features & GUN_AUTO_EJECTOR) + if (user.client?.prefs && (user.client?.prefs?.toggle_prefs & TOGGLE_AUTO_EJECT_MAGAZINE_OFF)) + update_icon() + else if (!(flags_gun_features & GUN_BURST_FIRING) || !in_chamber) // Magazine will only unload once burstfire is over + var/drop_to_ground = TRUE + if (user.client?.prefs && (user.client?.prefs?.toggle_prefs & TOGGLE_AUTO_EJECT_MAGAZINE_TO_HAND)) + drop_to_ground = FALSE + unwield(user) + user.swap_hand() + unload(user, TRUE, drop_to_ground) // We want to quickly autoeject the magazine. This proc does the rest based on magazine type. User can be passed as null. + playsound(src, empty_sound, 25, 1) + if(gun_firemode == GUN_FIREMODE_BURSTFIRE & burst_count < burst_amount - 1) //Fire two (or more) shots in a burst without having to pump. + ready_in_chamber() + burst_count++ + return in_chamber + +/obj/item/weapon/gun/rifle/xm51/replace_magazine(mob/user, obj/item/ammo_magazine/magazine) //Don't chamber a round when reloading. + user.drop_inv_item_to_loc(magazine, src) //Click! + current_mag = magazine + replace_ammo(user,magazine) + user.visible_message(SPAN_NOTICE("[user] loads [magazine] into [src]!"), + SPAN_NOTICE("You load [magazine] into [src]!"), null, 3, CHAT_TYPE_COMBAT_ACTION) + if(reload_sound) + playsound(user, reload_sound, 25, 1, 5) + +/obj/item/weapon/gun/rifle/xm51/cock_gun(mob/user) + return + +/obj/item/weapon/gun/rifle/xm51/cock(mob/user) //Stops the "You cock the gun." message where nothing happens. + return diff --git a/code/modules/projectiles/guns/shotguns.dm b/code/modules/projectiles/guns/shotguns.dm index d844498c2c02..5acad2255356 100644 --- a/code/modules/projectiles/guns/shotguns.dm +++ b/code/modules/projectiles/guns/shotguns.dm @@ -35,7 +35,7 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_5 + set_fire_delay(FIRE_DELAY_TIER_5) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_6 @@ -199,9 +199,9 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/merc/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_6*2 - burst_amount = BURST_AMOUNT_TIER_2 - burst_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_6*2) + set_burst_amount(BURST_AMOUNT_TIER_2) + set_burst_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_4 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_6 @@ -222,8 +222,8 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/merc/damaged/set_gun_config_values() ..() - fire_delay = 1.5 SECONDS - burst_amount = BURST_AMOUNT_TIER_1 + set_fire_delay(1.5 SECONDS) + set_burst_amount(BURST_AMOUNT_TIER_1) accuracy_mult = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_6 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_5 @@ -266,20 +266,24 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/combat/handle_starting_attachment() ..() - var/obj/item/attachable/attached_gun/grenade/G = new(src) - G.flags_attach_features &= ~ATTACH_REMOVABLE - G.hidden = TRUE - G.Attach(src) - update_attachable(G.slot) + var/obj/item/attachable/attached_gun/grenade/ugl = new(src) + var/obj/item/attachable/stock/tactical/stock = new(src) + ugl.flags_attach_features &= ~ATTACH_REMOVABLE + ugl.hidden = TRUE + ugl.Attach(src) + update_attachable(ugl.slot) + stock.hidden = FALSE + stock.Attach(src) + update_attachable(stock.slot) /obj/item/weapon/gun/shotgun/combat/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 19,"rail_x" = 10, "rail_y" = 21, "under_x" = 14, "under_y" = 16, "stock_x" = 14, "stock_y" = 16) + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 19,"rail_x" = 10, "rail_y" = 21, "under_x" = 14, "under_y" = 16, "stock_x" = 11, "stock_y" = 13.) /obj/item/weapon/gun/shotgun/combat/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_5*2 + set_fire_delay(FIRE_DELAY_TIER_5*2) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_6 @@ -324,9 +328,9 @@ can cause issues with ammo types getting mixed up during the burst. current_mag = /obj/item/ammo_magazine/internal/shotgun/buckshot flags_equip_slot = SLOT_WAIST|SLOT_BACK - flags_gun_features = GUN_CAN_POINTBLANK|GUN_INTERNAL_MAG|GUN_HAS_FULL_AUTO|GUN_FULL_AUTO_ON - fa_delay = FIRE_DELAY_TIER_6 + flags_gun_features = GUN_CAN_POINTBLANK|GUN_INTERNAL_MAG auto_retrieval_slot = WEAR_J_STORE + start_automatic = TRUE /obj/item/weapon/gun/shotgun/combat/marsoc/Initialize(mapload, spawn_empty) . = ..() @@ -347,7 +351,7 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/combat/marsoc/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_5*2 + set_fire_delay(FIRE_DELAY_TIER_6) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 - HIT_ACCURACY_MULT_TIER_5 scatter = SCATTER_AMOUNT_TIER_6 @@ -391,11 +395,11 @@ can cause issues with ammo types getting mixed up during the burst. starting_attachment_types = list(/obj/item/attachable/stock/type23) /obj/item/weapon/gun/shotgun/type23/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 31, "muzzle_y" = 19,"rail_x" = 13, "rail_y" = 21, "under_x" = 24, "under_y" = 15, "stock_x" = 1, "stock_y" = 16) + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 19,"rail_x" = 13, "rail_y" = 21, "under_x" = 24, "under_y" = 15, "stock_x" = -1, "stock_y" = 17) /obj/item/weapon/gun/shotgun/type23/set_gun_config_values() ..() - fire_delay = 2.5 SECONDS + set_fire_delay(2.5 SECONDS) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_4 @@ -515,14 +519,15 @@ can cause issues with ammo types getting mixed up during the burst. burst_delay = 0 //So doubleshotty can doubleshot has_open_icon = TRUE civilian_usable_override = TRUE // Come on. It's THE survivor shotgun. + additional_fire_group_delay = 1.5 SECONDS /obj/item/weapon/gun/shotgun/double/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 19,"rail_x" = 11, "rail_y" = 20, "under_x" = 15, "under_y" = 14, "stock_x" = 13, "stock_y" = 14) /obj/item/weapon/gun/shotgun/double/set_gun_config_values() ..() - burst_amount = BURST_AMOUNT_TIER_2 - fire_delay = FIRE_DELAY_TIER_9 + set_burst_amount(BURST_AMOUNT_TIER_2) + set_fire_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_6 @@ -590,7 +595,7 @@ can cause issues with ammo types getting mixed up during the burst. //We can't make a projectile without a mag or active attachable. -/obj/item/weapon/gun/shotgun/double/delete_bullet(obj/item/projectile/projectile_to_fire, refund = 0) +/obj/item/weapon/gun/shotgun/double/delete_bullet(obj/projectile/projectile_to_fire, refund = 0) qdel(projectile_to_fire) if(!current_mag) return @@ -632,8 +637,8 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/double/damaged/set_gun_config_values() ..() - burst_amount = BURST_AMOUNT_TIER_1 - fire_delay = 0.9 SECONDS + set_burst_amount(BURST_AMOUNT_TIER_1) + set_fire_delay(0.9 SECONDS) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_7 @@ -655,7 +660,7 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/double/sawn/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 - HIT_ACCURACY_MULT_TIER_5 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_6 @@ -701,8 +706,8 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/double/cane/set_gun_config_values() ..() - burst_amount = BURST_AMOUNT_TIER_1 - fire_delay = FIRE_DELAY_TIER_7 + set_burst_amount(BURST_AMOUNT_TIER_1) + set_fire_delay(FIRE_DELAY_TIER_7) accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_10 scatter_unwielded = SCATTER_AMOUNT_TIER_7 damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_5 @@ -761,7 +766,6 @@ can cause issues with ammo types getting mixed up during the burst. reload_sound = 'sound/weapons/handling/gun_mou_reload.ogg'//unique shell insert flags_equip_slot = SLOT_BACK flags_gun_features = GUN_CAN_POINTBLANK|GUN_INTERNAL_MAG - additional_fire_group_delay = 1.5 SECONDS current_mag = /obj/item/ammo_magazine/internal/shotgun/double/mou53 //Take care, she comes loaded! attachable_allowed = list( /obj/item/attachable/bayonet, @@ -788,8 +792,8 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/double/mou53/set_gun_config_values() ..() - burst_amount = BURST_AMOUNT_TIER_1 - fire_delay = FIRE_DELAY_TIER_8 + set_burst_amount(BURST_AMOUNT_TIER_1) + set_fire_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_10 @@ -879,8 +883,8 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/double/twobore/set_gun_config_values() ..() - burst_amount = BURST_AMOUNT_TIER_1 - fire_delay = 2 SECONDS //Less than the stun time, but you still have to brace to fire safely. + set_burst_amount(BURST_AMOUNT_TIER_1) + set_fire_delay(2 SECONDS )//Less than the stun time, but you still have to brace to fire safely. accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_8 @@ -935,9 +939,9 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/double/twobore/Fire(atom/target, mob/living/carbon/human/user, params, reflex = 0, dual_wield) //Using this instead of apply_bullet_effects() as RPG does so I get more granular angles than just user direction. var/prefire_rounds = current_mag.current_rounds //How many rounds do we have before we fire? - ..() + . = ..() if(current_mag.current_rounds == prefire_rounds) //We didn't fire a shot. - return + return NONE var/target_angle = Get_Compass_Dir(user, target) //More precise than get_dir(). fired_shots++ twobore_recoil(user, target_angle) @@ -1015,7 +1019,7 @@ can cause issues with ammo types getting mixed up during the burst. if(!T) //Off edge of map. throw_turfs.Remove(T) continue - var/list/turf/path = getline2(get_step_towards(src, T), T) //Same path throw code will calculate from. + var/list/turf/path = get_line(get_step_towards(src, T), T) //Same path throw code will calculate from. if(!path.len) throw_turfs.Remove(T) continue @@ -1101,7 +1105,7 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/pump/Initialize(mapload, spawn_empty) . = ..() - pump_delay = FIRE_DELAY_TIER_4*2 + pump_delay = FIRE_DELAY_TIER_5*2 additional_fire_group_delay += pump_delay @@ -1111,8 +1115,8 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/pump/set_gun_config_values() ..() - burst_amount = BURST_AMOUNT_TIER_1 - fire_delay = FIRE_DELAY_TIER_7 * 5 + set_burst_amount(BURST_AMOUNT_TIER_1) + set_fire_delay(FIRE_DELAY_TIER_7 * 4) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_6 @@ -1186,7 +1190,7 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/pump/dual_tube name = "generic dual-tube pump shotgun" - desc = "A twenty-round pump action shotgun with dual internal tube magazines. You can switch the active internal magazine by toggling burst fire mode." + desc = "A twenty-round pump action shotgun with dual internal tube magazines. You can switch the active internal magazine by toggling the shotgun tube." current_mag = /obj/item/ammo_magazine/internal/shotgun var/obj/item/ammo_magazine/internal/shotgun/primary_tube var/obj/item/ammo_magazine/internal/shotgun/secondary_tube @@ -1220,7 +1224,12 @@ can cause issues with ammo types getting mixed up during the burst. playsound(src, 'sound/machines/switch.ogg', 15, TRUE) return TRUE -/obj/item/weapon/gun/shotgun/pump/dual_tube/toggle_burst() +/obj/item/weapon/gun/shotgun/pump/dual_tube/verb/toggle_tube() + set category = "Weapons" + set name = "Toggle Shotgun Tube" + set desc = "Toggles which shotgun tube your gun loads from." + set src = usr.contents + var/obj/item/weapon/gun/shotgun/pump/dual_tube/shotgun = get_active_firearm(usr) if(shotgun == src) swap_tube(usr) @@ -1229,7 +1238,7 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb name = "\improper HG 37-12 pump shotgun" - desc = "A eight-round pump action shotgun with four-round capacity dual internal tube magazines allowing for quick reloading and highly accurate fire. Used exclusively by Colonial Marshals. You can switch the active internal magazine by toggling burst fire mode." + desc = "A eight-round pump action shotgun with four-round capacity dual internal tube magazines allowing for quick reloading and highly accurate fire. Used exclusively by Colonial Marshals. You can switch the active internal magazine by toggling the shotgun tube." icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' icon_state = "hg3712" item_state = "hg3712" @@ -1257,7 +1266,7 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb/set_gun_config_values() ..() - fire_delay = 1.6 SECONDS + set_fire_delay(1.6 SECONDS) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_6 @@ -1269,7 +1278,7 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb/m3717 name = "\improper M37-17 pump shotgun" - desc = "A military version of the iconic HG 37-12, this design can fit one extra shell in each of its dual-tube internal magazines, and fires shells with increased velocity, resulting in more damage. Issued to select USCM vessels out on the rim. You can switch the active internal magazine by toggling burst fire mode." + desc = "A military version of the iconic HG 37-12, this design can fit one extra shell in each of its dual-tube internal magazines, and fires shells with increased velocity, resulting in more damage. Issued to select USCM vessels and stations in the outer veil. A button on the side toggles the internal tubes." icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' icon_state = "m3717" item_state = "m3717" diff --git a/code/modules/projectiles/guns/smartgun.dm b/code/modules/projectiles/guns/smartgun.dm index c73d9c0f6423..9c1e2bbbd7ca 100644 --- a/code/modules/projectiles/guns/smartgun.dm +++ b/code/modules/projectiles/guns/smartgun.dm @@ -59,10 +59,12 @@ /obj/item/attachable/flashlight, ) - flags_gun_features = GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_HAS_FULL_AUTO|GUN_FULL_AUTO_ON|GUN_FULL_AUTO_ONLY + flags_gun_features = GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY gun_category = GUN_CATEGORY_HEAVY starting_attachment_types = list(/obj/item/attachable/smartbarrel) auto_retrieval_slot = WEAR_J_STORE + start_semiauto = FALSE + start_automatic = TRUE /obj/item/weapon/gun/smartgun/Initialize(mapload, ...) @@ -85,10 +87,7 @@ /obj/item/weapon/gun/smartgun/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_10 - burst_amount = BURST_AMOUNT_TIER_3 - burst_delay = FIRE_DELAY_TIER_9 - fa_delay = FIRE_DELAY_TIER_SG + set_fire_delay(FIRE_DELAY_TIER_SG) fa_scatter_peak = FULL_AUTO_SCATTER_PEAK_TIER_8 fa_max_scatter = SCATTER_AMOUNT_TIER_9 if(accuracy_improvement) @@ -101,7 +100,6 @@ else scatter = SCATTER_AMOUNT_TIER_6 recoil = RECOIL_AMOUNT_TIER_3 - burst_scatter_mult = SCATTER_AMOUNT_TIER_8 damage_mult = BASE_BULLET_DAMAGE_MULT /obj/item/weapon/gun/smartgun/set_bullet_traits() @@ -146,7 +144,8 @@ /obj/item/weapon/gun/smartgun/attackby(obj/item/attacking_object, mob/user) if(istype(attacking_object, /obj/item/smartgun_battery)) var/obj/item/smartgun_battery/new_cell = attacking_object - visible_message("[user] swaps out the power cell in the [src].","You swap out the power cell in the [src] and drop the old one.") + visible_message(SPAN_NOTICE("[user] swaps out the power cell in [src]."), + SPAN_NOTICE("You swap out the power cell in [src] and drop the old one.")) to_chat(user, SPAN_NOTICE("The new cell contains: [new_cell.power_cell.charge] power.")) battery.update_icon() battery.forceMove(get_turf(user)) @@ -364,15 +363,13 @@ /obj/item/weapon/gun/smartgun/Fire(atom/target, mob/living/user, params, reflex = 0, dual_wield) if(!requires_battery) - ..() - return + return ..() if(battery) if(!requires_power) - ..() - return + return ..() if(drain_battery()) - ..() + return ..() /obj/item/weapon/gun/smartgun/proc/drain_battery(override_drain) @@ -500,7 +497,7 @@ if((angledegree*2) > angle_list[angle]) continue - path = getline2(user, M) + path = get_line(user, M) if(path.len) var/blocked = FALSE @@ -672,7 +669,7 @@ ammo = /obj/item/ammo_magazine/smartgun/dirty ammo_primary = /datum/ammo/bullet/smartgun/dirty//Toggled ammo type ammo_secondary = /datum/ammo/bullet/smartgun/dirty/armor_piercing///Toggled ammo type - flags_gun_features = GUN_WY_RESTRICTED|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_HAS_FULL_AUTO|GUN_FULL_AUTO_ON|GUN_FULL_AUTO_ONLY + flags_gun_features = GUN_WY_RESTRICTED|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY /obj/item/weapon/gun/smartgun/dirty/Initialize(mapload, ...) . = ..() @@ -690,12 +687,12 @@ /obj/item/weapon/gun/smartgun/dirty/elite/set_gun_config_values() ..() - burst_amount = BURST_AMOUNT_TIER_5 - burst_delay = FIRE_DELAY_TIER_10 + set_burst_amount(BURST_AMOUNT_TIER_5) + set_burst_delay(FIRE_DELAY_TIER_12) if(!recoil_compensation) scatter = SCATTER_AMOUNT_TIER_8 burst_scatter_mult = SCATTER_AMOUNT_TIER_10 - fa_delay = FIRE_DELAY_TIER_10 + set_fire_delay(FIRE_DELAY_TIER_12) fa_scatter_peak = FULL_AUTO_SCATTER_PEAK_TIER_10 fa_max_scatter = SCATTER_AMOUNT_NONE @@ -739,3 +736,20 @@ . = ..() . += SPAN_NOTICE("The power indicator reads [power_cell.charge] charge out of [power_cell.maxcharge] total.") + +/obj/item/weapon/gun/smartgun/rmc + name = "\improper L56A2 smartgun" + desc = "The actual firearm in the 2-piece L56A2 Smartgun System. This Variant is used by the Three World Empires Royal Marines Commando units.\nYou may toggle firing restrictions by using a special action.\nAlt-click it to open the feed cover and allow for reloading." + current_mag = /obj/item/ammo_magazine/smartgun/holo_targetting + ammo = /obj/item/ammo_magazine/smartgun/holo_targetting + ammo_primary = /datum/ammo/bullet/smartgun/holo_target //Toggled ammo type + ammo_secondary = /datum/ammo/bullet/smartgun/holo_target/ap ///Toggled ammo type + flags_gun_features = GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY + icon = 'icons/obj/items/weapons/guns/guns_by_faction/twe_guns.dmi' + icon_state = "magsg" + item_state = "magsg" + starting_attachment_types = list(/obj/item/attachable/l56a2_smartgun) + +/obj/item/weapon/gun/smartgun/rmc/Initialize(mapload, ...) + . = ..() + MD.iff_signal = FACTION_TWE diff --git a/code/modules/projectiles/guns/smgs.dm b/code/modules/projectiles/guns/smgs.dm index 0c3e7f42fe72..69fd5d968750 100644 --- a/code/modules/projectiles/guns/smgs.dm +++ b/code/modules/projectiles/guns/smgs.dm @@ -20,6 +20,7 @@ flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK gun_category = GUN_CATEGORY_SMG + start_automatic = TRUE /obj/item/weapon/gun/smg/Initialize(mapload, spawn_empty) . = ..() @@ -32,6 +33,7 @@ /obj/item/weapon/gun/smg/set_gun_config_values() ..() movement_onehanded_acc_penalty_mult = 4 + fa_max_scatter = SCATTER_AMOUNT_TIER_5 //------------------------------------------------------- //M39 SMG @@ -49,6 +51,7 @@ /obj/item/attachable/reddot, /obj/item/attachable/reflex, /obj/item/attachable/angledgrip, + /obj/item/attachable/verticalgrip, /obj/item/attachable/flashlight/grip, /obj/item/attachable/stock/smg, /obj/item/attachable/stock/smg/collapsible, @@ -75,16 +78,17 @@ /obj/item/weapon/gun/smg/m39/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_SMG - burst_delay = FIRE_DELAY_TIER_SMG - burst_amount = BURST_AMOUNT_TIER_3 + set_fire_delay(FIRE_DELAY_TIER_SMG) + set_burst_delay(FIRE_DELAY_TIER_SMG) + set_burst_amount(BURST_AMOUNT_TIER_3) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_5 scatter = SCATTER_AMOUNT_TIER_4 - burst_scatter_mult = SCATTER_AMOUNT_TIER_4 + burst_scatter_mult = SCATTER_AMOUNT_TIER_7 scatter_unwielded = SCATTER_AMOUNT_TIER_4 damage_mult = BASE_BULLET_DAMAGE_MULT recoil_unwielded = RECOIL_AMOUNT_TIER_5 + fa_max_scatter = SCATTER_AMOUNT_TIER_10 + 0.5 /obj/item/weapon/gun/smg/m39/training @@ -124,7 +128,7 @@ /obj/item/weapon/gun/smg/m39/elite/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_SMG + set_fire_delay(FIRE_DELAY_TIER_SMG) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_7 accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_9 @@ -176,9 +180,9 @@ /obj/item/weapon/gun/smg/mp5/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_9 - burst_delay = FIRE_DELAY_TIER_SMG - burst_amount = BURST_AMOUNT_TIER_3 + set_fire_delay(FIRE_DELAY_TIER_11) + set_burst_delay(FIRE_DELAY_TIER_SMG) + set_burst_amount(BURST_AMOUNT_TIER_3) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_4 @@ -227,9 +231,9 @@ /obj/item/weapon/gun/smg/mp27/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_SMG - burst_delay = FIRE_DELAY_TIER_SMG - burst_amount = BURST_AMOUNT_TIER_2 + set_fire_delay(FIRE_DELAY_TIER_SMG) + set_burst_delay(FIRE_DELAY_TIER_SMG) + set_burst_amount(BURST_AMOUNT_TIER_2) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_2 scatter = SCATTER_AMOUNT_TIER_4 + (SCATTER_AMOUNT_TIER_10 * 0.5) @@ -260,9 +264,9 @@ /obj/item/weapon/gun/smg/ppsh/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_SMG - burst_delay = FIRE_DELAY_TIER_SMG - burst_amount = BURST_AMOUNT_TIER_3 + set_fire_delay(FIRE_DELAY_TIER_SMG) + set_burst_delay(FIRE_DELAY_TIER_SMG) + set_burst_amount(BURST_AMOUNT_TIER_3) accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_5 scatter = SCATTER_AMOUNT_TIER_4 @@ -270,6 +274,8 @@ scatter_unwielded = SCATTER_AMOUNT_TIER_4 damage_mult = BASE_BULLET_DAMAGE_MULT recoil_unwielded = RECOIL_AMOUNT_TIER_5 + fa_max_scatter = SCATTER_AMOUNT_TIER_9 + fa_scatter_peak = 1 // Seems a bit funny, but it works pretty well in the end /obj/item/weapon/gun/smg/ppsh/with_drum_mag current_mag = /obj/item/ammo_magazine/smg/ppsh/extended @@ -283,20 +289,20 @@ playsound(src, 'sound/weapons/handling/gun_jam_click.ogg', 35, TRUE) to_chat(user, SPAN_WARNING("Your gun is jammed! Mash Unique-Action to unjam it!")) balloon_alert(user, "*jammed*") - return + return NONE else if(prob(ppsh_mag?.jam_chance)) jammed = TRUE playsound(src, 'sound/weapons/handling/gun_jam_initial_click.ogg', 50, FALSE) user.visible_message(SPAN_DANGER("[src] makes a noticeable clicking noise!"), SPAN_HIGHDANGER("\The [src] suddenly jams and refuses to fire! Mash Unique-Action to unjam it.")) balloon_alert(user, "*jammed*") - return + return NONE else - . = ..() + return ..() /obj/item/weapon/gun/smg/ppsh/unique_action(mob/user) if(jammed) if(prob(PPSH_UNJAM_CHANCE)) - to_chat(user, SPAN_GREEN("You succesfully unjam \the [src]!")) + to_chat(user, SPAN_GREEN("You successfully unjam \the [src]!")) playsound(src, 'sound/weapons/handling/gun_jam_rack_success.ogg', 50, FALSE) jammed = FALSE cock_cooldown += 1 SECONDS //so they dont accidentally cock a bullet away @@ -333,6 +339,89 @@ #undef PPSH_UNJAM_CHANCE +//------------------------------------------------------- +//Type-19, + +/obj/item/weapon/gun/smg/pps43 + name = "\improper Type-19 Submachinegun" //placeholder + desc = "An outdated, but reliable and powerful, submachinegun originating in the Union of Progressive Peoples, it is still in limited service in the UPP but is most often used by paramilitary groups or corporate security forces. It is usually used with a 35 round stick magazine, or a 71 round drum." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "insasu" + item_state = "insasu" + + fire_sound = 'sound/weapons/smg_heavy.ogg' + current_mag = /obj/item/ammo_magazine/smg/pps43 + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER + attachable_allowed = list( + /obj/item/attachable/suppressor, + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/flashlight/grip, + /obj/item/attachable/verticalgrip, + /obj/item/attachable/lasersight, + /obj/item/attachable/flashlight, + /obj/item/attachable/extended_barrel, + /obj/item/attachable/magnetic_harness, + ) + +/obj/item/weapon/gun/smg/pps43/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 20,"rail_x" = 20, "rail_y" = 24, "under_x" = 25, "under_y" = 17, "stock_x" = 26, "stock_y" = 15) + +/obj/item/weapon/gun/smg/pps43/set_gun_config_values() + ..() + fire_delay = FIRE_DELAY_TIER_SMG + burst_delay = FIRE_DELAY_TIER_SMG + burst_amount = BURST_AMOUNT_TIER_3 + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 + accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_5 + scatter = SCATTER_AMOUNT_TIER_6 + burst_scatter_mult = SCATTER_AMOUNT_TIER_4 + scatter_unwielded = SCATTER_AMOUNT_TIER_4 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_4 + recoil_unwielded = RECOIL_AMOUNT_TIER_5 + +/obj/item/weapon/gun/smg/pps43/extended_mag + current_mag = /obj/item/ammo_magazine/smg/pps43/extended +//------------------------------------------------------- +//Type 64 + +/obj/item/weapon/gun/smg/bizon + name = "\improper Type 64 Submachinegun" + desc = "The standard submachinegun of the UPP, sporting an unusual 64 round helical magazine, it has a high fire-rate, but is unusually accurate. This one has a faux-wood grip, denoting it as civilian use or as an export model." + desc_lore = "The Type 64 finds its way into the hands of more than just UPP soldiers, it has an active life with rebel groups, corporate security forces, mercenaries, less well-armed militaries, and just about everything or everyone in between." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "type64" + item_state = "type64" + + fire_sound = 'sound/weapons/smg_heavy.ogg' + current_mag = /obj/item/ammo_magazine/smg/bizon + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER + wield_delay = WIELD_DELAY_MIN + aim_slowdown = SLOWDOWN_ADS_QUICK_MINUS + +/obj/item/weapon/gun/smg/bizon/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 20,"rail_x" = 18, "rail_y" = 23, "under_x" = 26, "under_y" = 15, "stock_x" = 26, "stock_y" = 15) + +/obj/item/weapon/gun/smg/bizon/set_gun_config_values() + ..() + fire_delay = FIRE_DELAY_TIER_SMG + burst_delay = FIRE_DELAY_TIER_SMG + burst_amount = BURST_AMOUNT_TIER_4 + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 + accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 + scatter = SCATTER_AMOUNT_TIER_9 + burst_scatter_mult = SCATTER_AMOUNT_TIER_8 + scatter_unwielded = SCATTER_AMOUNT_TIER_4 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_3 + recoil_unwielded = RECOIL_AMOUNT_TIER_5 + +/obj/item/weapon/gun/smg/bizon/upp + name = "\improper Type 64 Submachinegun" + desc = "The standard submachinegun of the UPP, sporting an unusual 64 round helical magazine, it has a high fire-rate, but is unusually accurate. This one has a black polymer grip, denoting it as in-use by the UPP military." + desc_lore = "The Type 64 finds its way into the hands of more than just UPP soldiers, it has an active life with rebel groups, corporate security forces, mercenaries, less well-armed militaries, and just about everything or everyone in between." + icon_state = "type64_u" + item_state = "type64" + //------------------------------------------------------- //GENERIC UZI //Based on the uzi submachinegun, of course. @@ -368,13 +457,9 @@ /obj/item/weapon/gun/smg/mac15/set_gun_config_values() ..() - /* commented out until better fullauto code - fa_delay = FIRE_DELAY_TIER_10 fa_scatter_peak = FULL_AUTO_SCATTER_PEAK_TIER_7 fa_max_scatter = SCATTER_AMOUNT_TIER_3 - */ - - fire_delay = FIRE_DELAY_TIER_10 + set_fire_delay(FIRE_DELAY_TIER_12) accuracy_mult = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_5 burst_scatter_mult = SCATTER_AMOUNT_TIER_8 @@ -421,13 +506,9 @@ /obj/item/weapon/gun/smg/uzi/set_gun_config_values() ..() - /* commented out until better fullauto code - fa_delay = FIRE_DELAY_TIER_9 fa_scatter_peak = FULL_AUTO_SCATTER_PEAK_TIER_5 fa_max_scatter = SCATTER_AMOUNT_TIER_5 - */ - - fire_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_2 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_2 scatter = SCATTER_AMOUNT_TIER_6 @@ -444,20 +525,20 @@ playsound(src, 'sound/weapons/handling/gun_jam_click.ogg', 35, TRUE) to_chat(user, SPAN_WARNING("Your gun is jammed! Mash Unique-Action to unjam it!")) balloon_alert(user, "*jammed*") - return + return NONE else if(prob(uzi_mag.jam_chance)) jammed = TRUE playsound(src, 'sound/weapons/handling/gun_jam_initial_click.ogg', 35, TRUE) user.visible_message(SPAN_DANGER("[src] makes a noticeable clicking noise!"), SPAN_HIGHDANGER("\The [src] suddenly jams and refuses to fire! Mash Unique-Action to unjam it.")) balloon_alert(user, "*jammed*") - return + return NONE else - . = ..() + return ..() /obj/item/weapon/gun/smg/uzi/unique_action(mob/user) if(jammed) if(prob(UZI_UNJAM_CHANCE)) - to_chat(user, SPAN_GREEN("You succesfully unjam \the [src]!")) + to_chat(user, SPAN_GREEN("You successfully unjam \the [src]!")) playsound(src, 'sound/weapons/handling/gun_jam_rack_success.ogg', 35, TRUE) jammed = FALSE cock_cooldown += 1 SECONDS //so they dont accidentally cock a bullet away @@ -515,9 +596,9 @@ /obj/item/weapon/gun/smg/fp9000/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_SMG - burst_delay = FIRE_DELAY_TIER_SMG - burst_amount = BURST_AMOUNT_TIER_3 + set_fire_delay(FIRE_DELAY_TIER_SMG) + set_burst_delay(FIRE_DELAY_TIER_SMG) + set_burst_amount(BURST_AMOUNT_TIER_3) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_5 scatter = SCATTER_AMOUNT_TIER_6 @@ -528,7 +609,7 @@ /obj/item/weapon/gun/smg/fp9000/pmc name = "\improper FN FP9000/2 Submachinegun" - desc = "Despite the rather ancient design, the FN FP9K sees frequent use in PMC teams due to its extreme reliability and versatility, allowing it to excel in any situation, especially due to the fact that they use the patented, official version of the gun, which has recieved several upgrades and tuning to its design over time." + desc = "Despite the rather ancient design, the FN FP9K sees frequent use in PMC teams due to its extreme reliability and versatility, allowing it to excel in any situation, especially due to the fact that they use the patented, official version of the gun, which has received several upgrades and tuning to its design over time." icon_state = "fp9000_pmc" item_state = "fp9000_pmc" random_spawn_chance = 100 @@ -573,12 +654,13 @@ flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK gun_category = GUN_CATEGORY_SMG civilian_usable_override = TRUE + start_automatic = FALSE var/nailing_speed = 2 SECONDS //Time to apply a sheet for patching. Also haha name. Try to keep sync with soundbyte duration var/repair_sound = 'sound/weapons/nailgun_repair_long.ogg' /obj/item/weapon/gun/smg/nailgun/set_gun_config_values() ..() - fire_delay = FIRE_DELAY_TIER_9 + set_fire_delay(FIRE_DELAY_TIER_11) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 diff --git a/code/modules/projectiles/guns/souto.dm b/code/modules/projectiles/guns/souto.dm index fbc1a39124b8..1e9669dd0b7b 100644 --- a/code/modules/projectiles/guns/souto.dm +++ b/code/modules/projectiles/guns/souto.dm @@ -14,6 +14,8 @@ var/obj/item/storage/backpack/souto/soutopack current_mag = null auto_retrieval_slot = WEAR_IN_BACK + start_automatic = TRUE + autofire_slow_mult = 0.8 //Fires FASTER when in Full Auto, that is the power of Souta /obj/item/weapon/gun/souto/set_gun_config_values() . = ..() @@ -27,21 +29,21 @@ to_chat(user, "You must equip the specialized Backpack Souto Vending Machine to use the Souto Slinger Supremo!") click_empty(user) unlink_soutopack() - return + return NONE if(soutopack) if(!current_mag) current_mag = soutopack.internal_mag // Check we're actually firing the right fuel tank if(current_mag != soutopack.internal_mag) current_mag = soutopack.internal_mag - ..() + return ..() /obj/item/weapon/gun/souto/reload(mob/user, obj/item/ammo_magazine/magazine) - to_chat(user, SPAN_WARNING("The [src] feed system cannot be reloaded manually.")) + to_chat(user, SPAN_WARNING("[src]'s feed system cannot be reloaded manually.")) return /obj/item/weapon/gun/souto/unload(mob/user, reload_override = 0, drop_override = 0, loc_override = 0) - to_chat(user, SPAN_WARNING("You cannot unload the [src].")) + to_chat(user, SPAN_WARNING("You cannot unload [src].")) return /obj/item/weapon/gun/souto/able_to_fire(mob/user) diff --git a/code/modules/projectiles/guns/specialist.dm b/code/modules/projectiles/guns/specialist.dm deleted file mode 100644 index be1bf5068a54..000000000000 --- a/code/modules/projectiles/guns/specialist.dm +++ /dev/null @@ -1,1472 +0,0 @@ -//------------------------------------------------------- -//SNIPER RIFLES -//Keyword rifles. They are subtype of rifles, but still contained here as a specialist weapon. - -//Because this parent type did not exist -//Note that this means that snipers will have a slowdown of 3, due to the scope -/obj/item/weapon/gun/rifle/sniper - aim_slowdown = SLOWDOWN_ADS_SPECIALIST - wield_delay = WIELD_DELAY_SLOW - - var/has_aimed_shot = TRUE - var/aiming_time = 1.25 SECONDS - var/aimed_shot_cooldown - var/aimed_shot_cooldown_delay = 2.5 SECONDS - - var/enable_aimed_shot_laser = TRUE - var/sniper_lockon_icon = "sniper_lockon" - var/obj/effect/ebeam/sniper_beam_type = /obj/effect/ebeam/laser - var/sniper_beam_icon = "laser_beam" - var/skill_locked = TRUE - -/obj/item/weapon/gun/rifle/sniper/get_examine_text(mob/user) - . = ..() - if(!has_aimed_shot) - return - . += SPAN_NOTICE("This weapon has an unique ability, Aimed Shot, allowing it to deal great damage after a windup.
        Additionally, the aimed shot can be sped up with a tracking laser, which is enabled by default but may be disabled.") - -/obj/item/weapon/gun/rifle/sniper/Initialize(mapload, spawn_empty) - if(has_aimed_shot) - LAZYADD(actions_types, list(/datum/action/item_action/specialist/aimed_shot, /datum/action/item_action/specialist/toggle_laser)) - return ..() - -/obj/item/weapon/gun/rifle/sniper/able_to_fire(mob/living/user) - . = ..() - if(. && istype(user) && skill_locked) //Let's check all that other stuff first. - if(!skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_SNIPER) - to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) - return 0 - -// Aimed shot ability -/datum/action/item_action/specialist/aimed_shot - ability_primacy = SPEC_PRIMARY_ACTION_2 - var/minimum_aim_distance = 2 - -/datum/action/item_action/specialist/aimed_shot/New(mob/living/user, obj/item/holder) - ..() - name = "Aimed Shot" - button.name = name - button.overlays.Cut() - var/image/IMG = image('icons/mob/hud/actions.dmi', button, "sniper_aim") - button.overlays += IMG - var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item - sniper_rifle.aimed_shot_cooldown = world.time - - -/datum/action/item_action/specialist/aimed_shot/action_activate() - if(!ishuman(owner)) - return - var/mob/living/carbon/human/H = owner - if(H.selected_ability == src) - to_chat(H, "You will no longer use [name] with \ - [H.client && H.client.prefs && H.client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_CLICK ? "middle-click" : "shift-click"].") - button.icon_state = "template" - H.selected_ability = null - else - to_chat(H, "You will now use [name] with \ - [H.client && H.client.prefs && H.client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_CLICK ? "middle-click" : "shift-click"].") - if(H.selected_ability) - H.selected_ability.button.icon_state = "template" - H.selected_ability = null - button.icon_state = "template_on" - H.selected_ability = src - -/datum/action/item_action/specialist/aimed_shot/can_use_action() - var/mob/living/carbon/human/H = owner - if(istype(H) && !H.is_mob_incapacitated() && !H.lying && (holder_item == H.r_hand || holder_item || H.l_hand)) - return TRUE - -/datum/action/item_action/specialist/aimed_shot/proc/use_ability(atom/A) - var/mob/living/carbon/human/human = owner - if(!istype(A, /mob/living)) - return - - var/mob/living/target = A - - if(target.stat == DEAD || target == human) - return - - var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item - if(world.time < sniper_rifle.aimed_shot_cooldown) - return - - if(!check_can_use(target)) - return - - human.face_atom(target) - - ///Add a decisecond to the default 1.5 seconds for each two tiles to hit. - var/distance = round(get_dist(target, human) * 0.5) - var/f_aiming_time = sniper_rifle.aiming_time + distance - - var/aim_multiplier = 1 - var/aiming_buffs - - if(sniper_rifle.enable_aimed_shot_laser) - aim_multiplier = 0.6 - aiming_buffs++ - - if(HAS_TRAIT(target, TRAIT_SPOTTER_LAZED)) - aim_multiplier = 0.5 - aiming_buffs++ - - if(aiming_buffs > 1) - aim_multiplier = 0.35 - - f_aiming_time *= aim_multiplier - - var/image/lockon_icon = image(icon = 'icons/effects/Targeted.dmi', icon_state = sniper_rifle.sniper_lockon_icon) - - var/x_offset = -target.pixel_x + target.base_pixel_x - var/y_offset = (target.icon_size - world.icon_size) * 0.5 - target.pixel_y + target.base_pixel_y - - lockon_icon.pixel_x = x_offset - lockon_icon.pixel_y = y_offset - target.overlays += lockon_icon - - var/image/lockon_direction_icon - if(!sniper_rifle.enable_aimed_shot_laser) - lockon_direction_icon = image(icon = 'icons/effects/Targeted.dmi', icon_state = "[sniper_rifle.sniper_lockon_icon]_direction", dir = get_cardinal_dir(target, human)) - lockon_direction_icon.pixel_x = x_offset - lockon_direction_icon.pixel_y = y_offset - target.overlays += lockon_direction_icon - if(human.client) - playsound_client(human.client, 'sound/weapons/TargetOn.ogg', human, 50) - playsound(target, 'sound/weapons/TargetOn.ogg', 70, FALSE, 8, falloff = 0.4) - - var/datum/beam/laser_beam - if(sniper_rifle.enable_aimed_shot_laser) - laser_beam = target.beam(human, sniper_rifle.sniper_beam_icon, 'icons/effects/beam.dmi', (f_aiming_time + 1 SECONDS), beam_type = sniper_rifle.sniper_beam_type) - laser_beam.visuals.alpha = 0 - animate(laser_beam.visuals, alpha = initial(laser_beam.visuals.alpha), f_aiming_time, easing = SINE_EASING|EASE_OUT) - - ////timer is (f_spotting_time + 1 SECONDS) because sometimes it janks out before the doafter is done. blame sleeps or something - - if(!do_after(human, f_aiming_time, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, NO_BUSY_ICON)) - target.overlays -= lockon_icon - target.overlays -= lockon_direction_icon - qdel(laser_beam) - return - - target.overlays -= lockon_icon - target.overlays -= lockon_direction_icon - qdel(laser_beam) - - if(!check_can_use(target, TRUE)) - return - - var/obj/item/projectile/aimed_proj = sniper_rifle.in_chamber - aimed_proj.projectile_flags |= PROJECTILE_BULLSEYE - aimed_proj.AddComponent(/datum/component/homing_projectile, target, human) - sniper_rifle.Fire(target, human) - -/datum/action/item_action/specialist/aimed_shot/proc/check_can_use(mob/M, cover_lose_focus) - var/mob/living/carbon/human/H = owner - var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item - - if(!can_use_action()) - return FALSE - - if(sniper_rifle != H.r_hand && sniper_rifle != H.l_hand) - to_chat(H, SPAN_WARNING("How do you expect to do this without your sniper rifle?")) - return FALSE - - if(!(sniper_rifle.flags_item & WIELDED)) - to_chat(H, SPAN_WARNING("Your aim is not stable enough with one hand. Use both hands!")) - return FALSE - - if(!sniper_rifle.in_chamber) - to_chat(H, SPAN_WARNING("\The [sniper_rifle] is unloaded!")) - return FALSE - - if(get_dist(H, M) < minimum_aim_distance) - to_chat(H, SPAN_WARNING("\The [M] is too close to get a proper shot!")) - return FALSE - - var/obj/item/projectile/P = sniper_rifle.in_chamber - // TODO: Make the below logic only occur in certain circumstances. Check goggles, maybe? -Kaga - if(check_shot_is_blocked(H, M, P)) - to_chat(H, SPAN_WARNING("Something is in the way, or you're out of range!")) - if(cover_lose_focus) - to_chat(H, SPAN_WARNING("You lose focus.")) - COOLDOWN_START(sniper_rifle, aimed_shot_cooldown, sniper_rifle.aimed_shot_cooldown_delay * 0.5) - return FALSE - - COOLDOWN_START(sniper_rifle, aimed_shot_cooldown, sniper_rifle.aimed_shot_cooldown_delay) - return TRUE - -/datum/action/item_action/specialist/aimed_shot/proc/check_shot_is_blocked(mob/firer, mob/target, obj/item/projectile/P) - var/list/turf/path = getline2(firer, target, include_from_atom = FALSE) - if(!path.len || get_dist(firer, target) > P.ammo.max_range) - return TRUE - - var/blocked = FALSE - for(var/turf/T in path) - if(T.density || T.opacity) - blocked = TRUE - break - - for(var/obj/O in T) - if(O.get_projectile_hit_boolean(P)) - blocked = TRUE - break - - for(var/obj/effect/particle_effect/smoke/S in T) - blocked = TRUE - break - - return blocked - -// Snipers may enable or disable their laser tracker at will. -/datum/action/item_action/specialist/toggle_laser - -/datum/action/item_action/specialist/toggle_laser/New(mob/living/user, obj/item/holder) - ..() - name = "Toggle Tracker Laser" - button.name = name - button.overlays.Cut() - var/image/IMG = image('icons/mob/hud/actions.dmi', button, "sniper_toggle_laser_on") - button.overlays += IMG - update_button_icon() - -/datum/action/item_action/specialist/toggle_laser/update_button_icon() - var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item - - var/icon = 'icons/mob/hud/actions.dmi' - var/icon_state = "sniper_toggle_laser_[sniper_rifle.enable_aimed_shot_laser ? "on" : "off"]" - - button.overlays.Cut() - var/image/IMG = image(icon, button, icon_state) - button.overlays += IMG - -/datum/action/item_action/specialist/toggle_laser/can_use_action() - var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item - - if(owner.is_mob_incapacitated()) - return FALSE - - if(owner.get_held_item() != sniper_rifle) - to_chat(owner, SPAN_WARNING("How do you expect to do this without the sniper rifle in your hand?")) - return FALSE - return TRUE - -/datum/action/item_action/specialist/toggle_laser/action_activate() - var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item - - if(owner.get_held_item() != sniper_rifle) - to_chat(owner, SPAN_WARNING("How do you expect to do this without the sniper rifle in your hand?")) - return FALSE - sniper_rifle.toggle_laser(owner, src) - -/obj/item/weapon/gun/rifle/sniper/proc/toggle_laser(mob/user, datum/action/toggling_action) - enable_aimed_shot_laser = !enable_aimed_shot_laser - to_chat(user, SPAN_NOTICE("You flip a switch on \the [src] and [enable_aimed_shot_laser ? "enable" : "disable"] its targeting laser.")) - playsound(user, 'sound/machines/click.ogg', 15, TRUE) - if(!toggling_action) - toggling_action = locate(/datum/action/item_action/specialist/toggle_laser) in actions - if(toggling_action) - toggling_action.update_button_icon() - -/obj/item/weapon/gun/rifle/sniper/toggle_burst(mob/user) - if(has_aimed_shot) - toggle_laser(user) - else - ..() - -//Pow! Headshot. -/obj/item/weapon/gun/rifle/sniper/M42A - name = "\improper M42A scoped rifle" - desc = "A heavy sniper rifle manufactured by Armat Systems. It has a scope system and fires armor penetrating rounds out of a 15-round magazine.\n'Peace Through Superior Firepower'" - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' - icon_state = "m42a" - item_state = "m42a" - unacidable = TRUE - indestructible = 1 - - fire_sound = 'sound/weapons/gun_sniper.ogg' - current_mag = /obj/item/ammo_magazine/sniper - force = 12 - wield_delay = WIELD_DELAY_HORRIBLE //Ends up being 1.6 seconds due to scope - zoomdevicename = "scope" - attachable_allowed = list(/obj/item/attachable/bipod) - starting_attachment_types = list(/obj/item/attachable/sniperbarrel) - flags_gun_features = GUN_AUTO_EJECTOR|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER - map_specific_decoration = TRUE - - flags_item = TWOHANDED|NO_CRYO_STORE - -/obj/item/weapon/gun/rifle/sniper/M42A/verb/toggle_scope_zoom_level() - set name = "Toggle Scope Zoom Level" - set category = "Weapons" - set src in usr - var/obj/item/attachable/scope/variable_zoom/S = attachments["rail"] - S.toggle_zoom_level() - -/obj/item/weapon/gun/rifle/sniper/M42A/handle_starting_attachment() - ..() - var/obj/item/attachable/scope/variable_zoom/S = new(src) - S.hidden = TRUE - S.flags_attach_features &= ~ATTACH_REMOVABLE - S.Attach(src) - update_attachable(S.slot) - -/obj/item/weapon/gun/rifle/sniper/M42A/set_bullet_traits() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) - )) - -/obj/item/weapon/gun/rifle/sniper/M42A/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 39, "muzzle_y" = 17,"rail_x" = 12, "rail_y" = 20, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) - - -/obj/item/weapon/gun/rifle/sniper/M42A/set_gun_config_values() - ..() - fire_delay = FIRE_DELAY_TIER_6*3 - burst_amount = BURST_AMOUNT_TIER_1 - accuracy_mult = BASE_ACCURACY_MULT * 3 //you HAVE to be able to hit - scatter = SCATTER_AMOUNT_TIER_8 - damage_mult = BASE_BULLET_DAMAGE_MULT - recoil = RECOIL_AMOUNT_TIER_5 - -/obj/item/weapon/gun/rifle/sniper/xm43e1 - name = "\improper XM43E1 experimental anti-materiel rifle" - desc = "An experimental anti-materiel rifle produced by Armat Systems, recently reacquired from the deep storage of an abandoned prototyping facility. This one in particular is currently undergoing field testing. Chambered in 10x99mm Caseless." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' - icon_state = "xm42b" - item_state = "xm42b" - unacidable = TRUE - indestructible = 1 - - fire_sound = 'sound/weapons/sniper_heavy.ogg' - current_mag = /obj/item/ammo_magazine/sniper/anti_materiel //Renamed from anti-tank to align with new identity/description. Other references have been changed as well. -Kaga - force = 12 - wield_delay = WIELD_DELAY_HORRIBLE //Ends up being 1.6 seconds due to scope - zoomdevicename = "scope" - attachable_allowed = list(/obj/item/attachable/bipod) - flags_gun_features = GUN_AUTO_EJECTOR|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER - starting_attachment_types = list(/obj/item/attachable/sniperbarrel) - sniper_beam_type = /obj/effect/ebeam/laser/intense - sniper_beam_icon = "laser_beam_intense" - sniper_lockon_icon = "sniper_lockon_intense" - -/obj/item/weapon/gun/rifle/sniper/XM42B/handle_starting_attachment() - ..() - var/obj/item/attachable/scope/variable_zoom/S = new(src) - S.icon_state = "pmcscope" - S.attach_icon = "pmcscope" - S.flags_attach_features &= ~ATTACH_REMOVABLE - S.Attach(src) - update_attachable(S.slot) - - -/obj/item/weapon/gun/rifle/sniper/XM42B/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 18,"rail_x" = 15, "rail_y" = 19, "under_x" = 20, "under_y" = 15, "stock_x" = 20, "stock_y" = 15) - - -/obj/item/weapon/gun/rifle/sniper/XM42B/set_gun_config_values() - ..() - fire_delay = FIRE_DELAY_TIER_6 * 6 //Big boy damage, but it takes a lot of time to fire a shot. - //Kaga: Adjusted from 56 (Tier 4, 7*8) -> 30 (Tier 6, 5*6) ticks. 95 really wasn't big-boy damage anymore, although I updated it to 125 to remain consistent with the other 10x99mm caliber weapon (M42C). Now takes only twice as long as the M42A. - burst_amount = BURST_AMOUNT_TIER_1 - accuracy_mult = BASE_ACCURACY_MULT + 2*HIT_ACCURACY_MULT_TIER_10 //Who coded this like this, and why? It just calculates out to 1+1=2. Leaving a note here to check back later. - scatter = SCATTER_AMOUNT_TIER_10 - damage_mult = BASE_BULLET_DAMAGE_MULT - recoil = RECOIL_AMOUNT_TIER_1 - -/obj/item/weapon/gun/rifle/sniper/XM42B/set_bullet_traits() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff), - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating), - BULLET_TRAIT_ENTRY_ID("turfs", /datum/element/bullet_trait_damage_boost, 11, GLOB.damage_boost_turfs), - BULLET_TRAIT_ENTRY_ID("breaching", /datum/element/bullet_trait_damage_boost, 11, GLOB.damage_boost_breaching), - //At 1375 per shot it'll take 1 shot to break resin turfs, and a full mag of 8 to break reinforced walls. - BULLET_TRAIT_ENTRY_ID("pylons", /datum/element/bullet_trait_damage_boost, 6, GLOB.damage_boost_pylons) - //At 750 per shot it'll take 3 to break a Pylon (1800 HP). No Damage Boost vs other xeno structures yet, those will require a whole new list w/ the damage_boost trait. - )) - -/* -//Disabled until an identity is better defined. -Kaga -/obj/item/weapon/gun/rifle/sniper/M42B/afterattack(atom/target, mob/user, flag) - if(able_to_fire(user)) - if(get_dist(target,user) <= 8) - to_chat(user, SPAN_WARNING("The [src.name] beeps, indicating that the target is within an unsafe proximity to the rifle, refusing to fire.")) - return - else ..() -*/ - -/obj/item/weapon/gun/rifle/sniper/elite - name = "\improper M42C anti-tank sniper rifle" - desc = "A high-end superheavy magrail sniper rifle from Weyland-Armat chambered in a specialized variant of the heaviest ammo available, 10x99mm Caseless. This weapon requires a specialized armor rig for recoil mitigation in order to be used effectively." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/wy.dmi' - icon_state = "m42c" - item_state = "m42c" //NEEDS A TWOHANDED STATE - - fire_sound = 'sound/weapons/sniper_heavy.ogg' - current_mag = /obj/item/ammo_magazine/sniper/elite - force = 17 - zoomdevicename = "scope" - flags_gun_features = GUN_AUTO_EJECTOR|GUN_WY_RESTRICTED|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER - starting_attachment_types = list(/obj/item/attachable/sniperbarrel) - sniper_beam_type = /obj/effect/ebeam/laser/intense - sniper_beam_icon = "laser_beam_intense" - sniper_lockon_icon = "sniper_lockon_intense" - -/obj/item/weapon/gun/rifle/sniper/elite/handle_starting_attachment() - ..() - var/obj/item/attachable/scope/S = new(src) - S.icon_state = "pmcscope" - S.attach_icon = "pmcscope" - S.flags_attach_features &= ~ATTACH_REMOVABLE - S.Attach(src) - update_attachable(S.slot) - -/obj/item/weapon/gun/rifle/sniper/elite/set_bullet_traits() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) - )) - -/obj/item/weapon/gun/rifle/sniper/elite/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 18,"rail_x" = 15, "rail_y" = 19, "under_x" = 20, "under_y" = 15, "stock_x" = 20, "stock_y" = 15) - -/obj/item/weapon/gun/rifle/sniper/elite/set_gun_config_values() - ..() - fire_delay = FIRE_DELAY_TIER_6*5 - burst_amount = BURST_AMOUNT_TIER_1 - accuracy_mult = BASE_ACCURACY_MULT * 3 //Was previously BAM + HAMT10, similar to the XM42B, and coming out to 1.5? Changed to be consistent with M42A. -Kaga - scatter = SCATTER_AMOUNT_TIER_10 //Was previously 8, changed to be consistent with the XM42B. - damage_mult = BASE_BULLET_DAMAGE_MULT - recoil = RECOIL_AMOUNT_TIER_1 - -/obj/item/weapon/gun/rifle/sniper/elite/simulate_recoil(total_recoil = 0, mob/user, atom/target) - . = ..() - if(.) - var/mob/living/carbon/human/PMC_sniper = user - if(PMC_sniper.lying == 0 && !istype(PMC_sniper.wear_suit,/obj/item/clothing/suit/storage/marine/smartgunner/veteran/pmc) && !istype(PMC_sniper.wear_suit,/obj/item/clothing/suit/storage/marine/veteran)) - PMC_sniper.visible_message(SPAN_WARNING("[PMC_sniper] is blown backwards from the recoil of the [src.name]!"),SPAN_HIGHDANGER("You are knocked prone by the blowback!")) - step(PMC_sniper,turn(PMC_sniper.dir,180)) - PMC_sniper.apply_effect(5, WEAKEN) - -//SVD //Based on the actual Dragunov DMR rifle. - -/obj/item/weapon/gun/rifle/sniper/svd - name = "\improper SVD Dragunov-033 designated marksman rifle" - desc = "A wannabe replica of an SVD, constructed from a MAR-40 by someone probably illiterate that thought the original SVD was built from an AK pattern. Fires 7.62x54mmR rounds." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' - icon_state = "svd003" - item_state = "svd003" //NEEDS A ONE HANDED STATE - - fire_sound = 'sound/weapons/gun_kt42.ogg' - current_mag = /obj/item/ammo_magazine/sniper/svd - attachable_allowed = list( - //Muzzle, - /obj/item/attachable/bayonet, - /obj/item/attachable/bayonet/upp_replica, - /obj/item/attachable/bayonet/upp, - /obj/item/attachable/extended_barrel, - /obj/item/attachable/heavy_barrel, - //Barrel, - /obj/item/attachable/slavicbarrel, - //Rail, - /obj/item/attachable/reddot, - /obj/item/attachable/reflex, - /obj/item/attachable/flashlight, - /obj/item/attachable/magnetic_harness, - /obj/item/attachable/scope, - /obj/item/attachable/scope/variable_zoom, - /obj/item/attachable/scope/variable_zoom/slavic, - /obj/item/attachable/scope/mini, - /obj/item/attachable/scope/slavic, - //Under, - /obj/item/attachable/verticalgrip, - /obj/item/attachable/angledgrip, - /obj/item/attachable/lasersight, - /obj/item/attachable/bipod, - //Stock, - /obj/item/attachable/stock/slavic, - ) - has_aimed_shot = FALSE - flags_gun_features = GUN_AUTO_EJECTOR|GUN_WIELDED_FIRING_ONLY - starting_attachment_types = list(/obj/item/attachable/scope/variable_zoom/slavic) - sniper_beam_type = null - skill_locked = FALSE - -/obj/item/weapon/gun/rifle/sniper/svd/handle_starting_attachment() - ..() - var/obj/item/attachable/attachie = new /obj/item/attachable/slavicbarrel(src) - attachie.flags_attach_features &= ~ATTACH_REMOVABLE - attachie.Attach(src) - update_attachable(attachie.slot) - - attachie = new /obj/item/attachable/stock/slavic(src) - attachie.flags_attach_features &= ~ATTACH_REMOVABLE - attachie.Attach(src) - update_attachable(attachie.slot) - -/obj/item/weapon/gun/rifle/sniper/svd/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 17,"rail_x" = 13, "rail_y" = 19, "under_x" = 24, "under_y" = 13, "stock_x" = 24, "stock_y" = 13) - -/obj/item/weapon/gun/rifle/sniper/svd/set_gun_config_values() - ..() - fire_delay = FIRE_DELAY_TIER_6 - burst_amount = BURST_AMOUNT_TIER_2 - burst_delay = FIRE_DELAY_TIER_9 - accuracy_mult = BASE_ACCURACY_MULT - scatter = SCATTER_AMOUNT_TIER_8 - burst_scatter_mult = SCATTER_AMOUNT_TIER_6 - damage_mult = BASE_BULLET_DAMAGE_MULT - recoil = RECOIL_AMOUNT_TIER_5 - damage_falloff_mult = 0 - -//M4RA custom marksman rifle - -/obj/item/weapon/gun/rifle/m4ra_custom - name = "\improper M4RA custom battle rifle" - desc = "This is a further improvement upon the already rock-solid M4RA. Made by the USCM armorers on Chinook station - This variant of the M4RA has a specifically milled magazine well to accept A19 rounds. It sports a light-weight titantium-alloy frame, better responsive to the heavy kick of the tailor-made A19 rounds." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' - icon_state = "m4ra_custom" - item_state = "m4ra_custom" - unacidable = TRUE - indestructible = 1 - accepted_ammo = list( - /obj/item/ammo_magazine/rifle/m4ra, - /obj/item/ammo_magazine/rifle/m4ra/ap, - /obj/item/ammo_magazine/rifle/m4ra/ext, - /obj/item/ammo_magazine/rifle/m4ra/rubber, - /obj/item/ammo_magazine/rifle/m4ra/incendiary, - /obj/item/ammo_magazine/rifle/m4ra/heap, - /obj/item/ammo_magazine/rifle/m4ra/penetrating, - /obj/item/ammo_magazine/rifle/m4ra/custom, - /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary, - /obj/item/ammo_magazine/rifle/m4ra/custom/impact, - - ) - - fire_sound = 'sound/weapons/gun_m4ra.ogg' - reload_sound = 'sound/weapons/handling/l42_reload.ogg' - unload_sound = 'sound/weapons/handling/l42_unload.ogg' - current_mag = /obj/item/ammo_magazine/rifle/m4ra/custom - force = 26 - attachable_allowed = list( - /obj/item/attachable/suppressor, - /obj/item/attachable/bayonet, - /obj/item/attachable/bayonet/upp, - /obj/item/attachable/bayonet/co2, - /obj/item/attachable/reddot, - /obj/item/attachable/reflex, - /obj/item/attachable/flashlight, - /obj/item/attachable/extended_barrel, - /obj/item/attachable/magnetic_harness, - /obj/item/attachable/bipod, - /obj/item/attachable/attached_gun/shotgun, - /obj/item/attachable/verticalgrip, - /obj/item/attachable/angledgrip, - /obj/item/attachable/lasersight, - /obj/item/attachable/scope, - /obj/item/attachable/scope/mini, - /obj/item/attachable/flashlight/grip, - ) - - flags_gun_features = GUN_AUTO_EJECTOR|GUN_SPECIALIST|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER - map_specific_decoration = TRUE - aim_slowdown = SLOWDOWN_ADS_QUICK - flags_item = TWOHANDED|NO_CRYO_STORE - -/obj/item/weapon/gun/rifle/m4ra_custom/handle_starting_attachment() - ..() - var/obj/item/attachable/m4ra_barrel_custom/integrated = new(src) - integrated.flags_attach_features &= ~ATTACH_REMOVABLE - integrated.Attach(src) - update_attachable(integrated.slot) - - -/obj/item/weapon/gun/rifle/m4ra_custom/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 43, "muzzle_y" = 17,"rail_x" = 23, "rail_y" = 21, "under_x" = 30, "under_y" = 11, "stock_x" = 24, "stock_y" = 13, "special_x" = 37, "special_y" = 16) - -/obj/item/weapon/gun/rifle/m4ra_custom/set_gun_config_values() - ..() - fire_delay = FIRE_DELAY_TIER_6 - burst_amount = BURST_AMOUNT_TIER_2 - burst_delay = FIRE_DELAY_TIER_10 - accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_2 - scatter = SCATTER_AMOUNT_TIER_8 - burst_scatter_mult = SCATTER_AMOUNT_TIER_8 - damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_2 - recoil = RECOIL_AMOUNT_TIER_5 - damage_falloff_mult = 0 - -/obj/item/weapon/gun/rifle/m4ra_custom/able_to_fire(mob/living/user) - . = ..() - if (. && istype(user)) //Let's check all that other stuff first. - if(!skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_SCOUT) - to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) - return FALSE - -//------------------------------------------------------- -//HEAVY WEAPONS - -/obj/item/weapon/gun/launcher - gun_category = GUN_CATEGORY_HEAVY - has_empty_icon = FALSE - has_open_icon = FALSE - ///gun update_icon doesn't detect that guns with no magazine are loaded or not, and will always append _o or _e if possible. - var/GL_has_empty_icon = TRUE - ///gun update_icon doesn't detect that guns with no magazine are loaded or not, and will always append _o or _e if possible. - var/GL_has_open_icon = FALSE - - ///Internal storage item used as magazine. Must be initialised to work! Set parameters by variables or it will inherit standard numbers from storage.dm. Got to call it *something* and 'magazine' or w/e would be confusing. - var/obj/item/storage/internal/cylinder - /// Variable that initializes the above. - var/has_cylinder = FALSE - ///What single item to fill the storage with, if any. This does not respect w_class. - var/preload - ///How many items can be inserted. "Null" = backpack-style size-based inventory. You'll have to set max_storage_space too if you do that, and arrange any initial contents. Iff you arrange to put in more items than the storage can hold, they can be taken out but not replaced. - var/internal_slots - ///how big an item can be inserted. - var/internal_max_w_class - ///the sfx played when the storage is opened. - var/use_sound = null - ///Whether clicking a held weapon with an empty hand will open its inventory or draw a munition out. - var/direct_draw = TRUE - -/obj/item/weapon/gun/launcher/Initialize(mapload, spawn_empty) //If changing vars on init, be sure to do the parent proccall *after* the change. - . = ..() - if(has_cylinder) - cylinder = new /obj/item/storage/internal(src) - cylinder.storage_slots = internal_slots - cylinder.max_w_class = internal_max_w_class - cylinder.use_sound = use_sound - if(direct_draw) - cylinder.storage_flags ^= STORAGE_USING_DRAWING_METHOD - if(preload && !spawn_empty) for(var/i = 1 to cylinder.storage_slots) - new preload(cylinder) - update_icon() - -/obj/item/weapon/gun/launcher/verb/toggle_draw_mode() - set name = "Switch Storage Drawing Method" - set category = "Object" - set src in usr - - cylinder.storage_draw_logic(src.name) - -//------------------------------------------------------- -//GRENADE LAUNCHER - -/obj/item/weapon/gun/launcher/grenade //Parent item for GLs. - w_class = SIZE_LARGE - throw_speed = SPEED_SLOW - throw_range = 10 - force = 5 - - fire_sound = 'sound/weapons/armbomb.ogg' - cocked_sound = 'sound/weapons/gun_m92_cocked.ogg' - reload_sound = 'sound/weapons/gun_shotgun_open2.ogg' //Played when inserting nade. - unload_sound = 'sound/weapons/gun_revolver_unload.ogg' - - has_cylinder = TRUE //This weapon won't work otherwise. - preload = /obj/item/explosive/grenade/high_explosive - internal_slots = 1 //This weapon must use slots. - internal_max_w_class = SIZE_MEDIUM //MEDIUM = M15. - - aim_slowdown = SLOWDOWN_ADS_SPECIALIST - wield_delay = WIELD_DELAY_SLOW - flags_gun_features = GUN_UNUSUAL_DESIGN|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY - ///Can you access the storage by clicking it, put things into it, or take things out? Meant for break-actions mostly but useful for any state where you want access to be toggleable. Make sure to call cylinder.close(user) so they don't still have the screen open! - var/open_chamber = TRUE - ///Does it launch its grenades in a low arc or a high? Do they strike people in their path, or fly beyond? - var/is_lobbing = FALSE - ///Verboten munitions. This is a blacklist. Anything in this list isn't loadable. - var/disallowed_grenade_types = list(/obj/item/explosive/grenade/spawnergrenade, /obj/item/explosive/grenade/alien, /obj/item/explosive/grenade/incendiary/molotov, /obj/item/explosive/grenade/flashbang) - ///What is this weapon permitted to fire? This is a whitelist. Anything in this list can be fired. Anything. - var/valid_munitions = list(/obj/item/explosive/grenade) - - -/obj/item/weapon/gun/launcher/grenade/set_gun_config_values() - ..() - recoil = RECOIL_AMOUNT_TIER_4 //Same as m37 shotgun. - - -/obj/item/weapon/gun/launcher/grenade/on_pocket_insertion() //Plays load sfx whenever a nade is put into storage. - playsound(usr, reload_sound, 25, 1) - update_icon() - -/obj/item/weapon/gun/launcher/grenade/on_pocket_removal() - update_icon() - -/obj/item/weapon/gun/launcher/grenade/get_examine_text(mob/user) //Different treatment for single-shot VS multi-shot GLs. - . = ..() - if(get_dist(user, src) > 2 && user != loc) - return - if(length(cylinder.contents)) - if(internal_slots == 1) - . += SPAN_NOTICE("It is loaded with a grenade.") - else - . += SPAN_NOTICE("It is loaded with [length(cylinder.contents)] / [internal_slots] grenades.") - else - . += SPAN_NOTICE("It is empty.") - - -/obj/item/weapon/gun/launcher/grenade/update_icon() - ..() - var/GL_sprite = base_gun_icon - if(GL_has_empty_icon && cylinder && !length(cylinder.contents)) - GL_sprite += "_e" - playsound(loc, cocked_sound, 25, 1) - if(GL_has_open_icon && open_chamber) - GL_sprite += "_o" - playsound(loc, cocked_sound, 25, 1) - icon_state = GL_sprite - - -/obj/item/weapon/gun/launcher/grenade/attack_hand(mob/user) - if(!open_chamber || src != user.get_inactive_hand()) //Need to have the GL in your hands to open the cylinder. - return ..() - if(cylinder.handle_attack_hand(user)) - ..() - - -/obj/item/weapon/gun/launcher/grenade/unload(mob/user, reload_override = FALSE, drop_override = FALSE, loc_override = FALSE) - if(!open_chamber) - to_chat(user, SPAN_WARNING("[src] is closed!")) - return - if(!length(cylinder.contents)) - to_chat(user, SPAN_WARNING("It's empty!")) - return - - var/obj/item/explosive/grenade/nade = cylinder.contents[length(cylinder.contents)] //Grab the last-inserted one. Or the only one, as the case may be. - cylinder.remove_from_storage(nade, user.loc) - - if(drop_override || !user) - nade.forceMove(get_turf(src)) - else - user.put_in_hands(nade) - - user.visible_message(SPAN_NOTICE("[user] unloads [nade] from [src]."), - SPAN_NOTICE("You unload [nade] from [src]."), null, 4, CHAT_TYPE_COMBAT_ACTION) - playsound(user, unload_sound, 30, 1) - - -/obj/item/weapon/gun/launcher/grenade/attackby(obj/item/I, mob/user) - if(istype(I,/obj/item/attachable) && check_inactive_hand(user)) - attach_to_gun(user,I) - return - return cylinder.attackby(I, user) - -/obj/item/weapon/gun/launcher/grenade/unique_action(mob/user) - if(isobserver(usr) || isxeno(usr)) - return - if(locate(/datum/action/item_action/toggle_firing_level) in actions) - toggle_firing_level(usr) - -/obj/item/weapon/gun/launcher/grenade/proc/allowed_ammo_type(obj/item/I) - for(var/G in disallowed_grenade_types) //Check for the bad stuff. - if(istype(I, G)) - return FALSE - for(var/G in valid_munitions) //Check if it has a ticket. - if(istype(I, G)) - return TRUE - - -/obj/item/weapon/gun/launcher/grenade/on_pocket_attackby(obj/item/explosive/grenade/I, mob/user) //the attack in question is on the internal container. Complete override - normal storage attackby cannot be silenced, and will always say "you put the x into y". - if(!open_chamber) - to_chat(user, SPAN_WARNING("[src] is closed!")) - return - if(!istype(I)) - to_chat(user, SPAN_WARNING("You can't load [I] into [src]!")) - return - if(!allowed_ammo_type(I)) - to_chat(user, SPAN_WARNING("[src] can't fire this type of grenade!")) - return - if(length(cylinder.contents) >= internal_slots) - to_chat(user, SPAN_WARNING("[src] cannot hold more grenades!")) - return - if(!cylinder.can_be_inserted(I)) //Technically includes whether there's room for it, but the above gives a tailored message. - return - - user.visible_message(SPAN_NOTICE("[user] loads [I] into [src]."), - SPAN_NOTICE("You load [I] into the grenade launcher."), null, 4, CHAT_TYPE_COMBAT_ACTION) - playsound(usr, reload_sound, 75, 1) - if(internal_slots > 1) - to_chat(user, SPAN_INFO("Now storing: [length(cylinder.contents) + 1] / [internal_slots] grenades.")) - - cylinder.handle_item_insertion(I, TRUE, user) - - -/obj/item/weapon/gun/launcher/grenade/able_to_fire(mob/living/user) //Skillchecks and fire blockers go in the child items. - . = ..() - if(.) - if(!length(cylinder.contents)) - to_chat(user, SPAN_WARNING("The [name] is empty.")) - return FALSE - var/obj/item/explosive/grenade/G = cylinder.contents[1] - if(G.antigrief_protection && user.faction == FACTION_MARINE && explosive_antigrief_check(G, user)) - to_chat(user, SPAN_WARNING("\The [name]'s safe-area accident inhibitor prevents you from firing!")) - msg_admin_niche("[key_name(user)] attempted to prime \a [G.name] in [get_area(src)] [ADMIN_JMP(src.loc)]") - return FALSE - - -/obj/item/weapon/gun/launcher/grenade/afterattack(atom/target, mob/user, flag) //Not actually after the attack. After click, more like. - if(able_to_fire(user)) - if(get_dist(target,user) <= 2) - var/obj/item/explosive/grenade/nade = cylinder.contents[1] - if(nade.dangerous) - to_chat(user, SPAN_WARNING("The grenade launcher beeps a warning noise. You are too close!")) - return - fire_grenade(target,user) - - -/obj/item/weapon/gun/launcher/grenade/proc/fire_grenade(atom/target, mob/user) - set waitfor = 0 - last_fired = world.time - - var/to_firer = "You fire the [name]!" - if(internal_slots > 1) - to_firer += " [length(cylinder.contents)-1]/[internal_slots] grenades remaining." - user.visible_message(SPAN_DANGER("[user] fired a grenade!"), - SPAN_WARNING("[to_firer]"), message_flags = CHAT_TYPE_WEAPON_USE) - playsound(user.loc, fire_sound, 50, 1) - - var/angle = round(Get_Angle(user,target)) - muzzle_flash(angle,user) - simulate_recoil(0, user) - - var/obj/item/explosive/grenade/F = cylinder.contents[1] - cylinder.remove_from_storage(F, user.loc) - var/pass_flags = NO_FLAGS - if(is_lobbing) - if(istype(F, /obj/item/explosive/grenade/slug/baton)) - if(ishuman(user)) - var/mob/living/carbon/human/human_user = user - human_user.remember_dropped_object(F) - pass_flags |= PASS_MOB_THRU_HUMAN|PASS_MOB_IS_OTHER|PASS_OVER - else - pass_flags |= PASS_MOB_THRU|PASS_HIGH_OVER - - msg_admin_attack("[key_name_admin(user)] fired a grenade ([F.name]) from \a ([name]).") - log_game("[key_name_admin(user)] used a grenade ([name]).") - - F.throw_range = 20 - F.det_time = min(10, F.det_time) - F.activate(user, FALSE) - F.forceMove(get_turf(src)) - F.throw_atom(target, 20, SPEED_VERY_FAST, user, null, NORMAL_LAUNCH, pass_flags) - - - -//Doesn't use these. Listed for reference. -/obj/item/weapon/gun/launcher/grenade/load_into_chamber() - return -/obj/item/weapon/gun/launcher/grenade/reload_into_chamber() - return - -/obj/item/weapon/gun/launcher/grenade/has_ammunition() - return length(cylinder.contents) - -//------------------------------------------------------- -//Toggle firing level special action for grenade launchers - -/datum/action/item_action/toggle_firing_level/New(Target, obj/item/holder) - . = ..() - name = "Toggle Firing Level" - button.name = name - update_icon() - -/datum/action/item_action/toggle_firing_level/action_activate() - var/obj/item/weapon/gun/launcher/grenade/G = holder_item - if(!ishuman(owner)) - return - var/mob/living/carbon/human/H = owner - if(H.is_mob_incapacitated() || G.get_active_firearm(H, FALSE) != holder_item) - return - G.toggle_firing_level(usr) - -/datum/action/item_action/toggle_firing_level/proc/update_icon() - var/obj/item/weapon/gun/launcher/grenade/G = holder_item - if(G.is_lobbing) - action_icon_state = "hightoss_on" - else - action_icon_state = "hightoss_off" - button.overlays.Cut() - button.overlays += image('icons/mob/hud/actions.dmi', button, action_icon_state) - -/obj/item/weapon/gun/launcher/grenade/proc/toggle_firing_level(mob/user) - is_lobbing = !is_lobbing - to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s firing level. You will now fire [is_lobbing ? "in an arcing path over obstacles" : "directly at your target"].") - playsound(loc,'sound/machines/click.ogg', 25, 1) - var/datum/action/item_action/toggle_firing_level/TFL = locate(/datum/action/item_action/toggle_firing_level) in actions - TFL.update_icon() - -//------------------------------------------------------- -//M92 GRENADE LAUNCHER - -/obj/item/weapon/gun/launcher/grenade/m92 - name = "\improper M92 grenade launcher" - desc = "A heavy, 6-shot grenade launcher used by the Colonial Marines for area denial and big explosions." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' - icon_state = "m92" - item_state = "m92" - unacidable = TRUE - indestructible = 1 - matter = list("metal" = 6000) - actions_types = list(/datum/action/item_action/toggle_firing_level) - - attachable_allowed = list(/obj/item/attachable/magnetic_harness) - flags_item = TWOHANDED|NO_CRYO_STORE - map_specific_decoration = TRUE - - is_lobbing = TRUE - internal_slots = 6 - direct_draw = FALSE - -/obj/item/weapon/gun/launcher/grenade/m92/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 14, "rail_y" = 22, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) - -/obj/item/weapon/gun/launcher/grenade/m92/set_gun_config_values() - ..() - fire_delay = FIRE_DELAY_TIER_4*4 - -/obj/item/weapon/gun/launcher/grenade/m92/able_to_fire(mob/living/user) - . = ..() - if (. && istype(user)) - if(!skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_GRENADIER) - to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) - return FALSE - - -//------------------------------------------------------- -//M81 GRENADE LAUNCHER - -/obj/item/weapon/gun/launcher/grenade/m81 - name = "\improper M81 grenade launcher" - desc = "A lightweight, single-shot low-angle grenade launcher used by the Colonial Marines for area denial and big explosions." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' - icon_state = "m81" - item_state = "m81" //needs a wield sprite. - - matter = list("metal" = 7000) - -/obj/item/weapon/gun/launcher/grenade/m81/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 14, "rail_y" = 22, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) - -/obj/item/weapon/gun/launcher/grenade/m81/set_gun_config_values() - ..() - fire_delay = FIRE_DELAY_TIER_4 * 1.5 - -/obj/item/weapon/gun/launcher/grenade/m81/on_pocket_removal() - ..() - playsound(usr, unload_sound, 30, 1) - -/obj/item/weapon/gun/launcher/grenade/m81/riot/able_to_fire(mob/living/user) - . = ..() - if (. && istype(user)) - if(!skillcheck(user, SKILL_POLICE, SKILL_POLICE_SKILLED)) - to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) - return FALSE - - -/obj/item/weapon/gun/launcher/grenade/m81/riot - name = "\improper M81 riot grenade launcher" - desc = "A lightweight, single-shot low-angle grenade launcher to launch tear gas grenades. Used by the Colonial Marines Military Police during riots." - valid_munitions = list(/obj/item/explosive/grenade/custom/teargas) - preload = /obj/item/explosive/grenade/custom/teargas - -//------------------------------------------------------- -//M79 Grenade Launcher subtype of the M81 - -/obj/item/weapon/gun/launcher/grenade/m81/m79//m79 variant for marines - name = "\improper M79 grenade launcher" - desc = "A heavy, low-angle 40mm grenade launcher. It's been in use since the Vietnam War, though this version has been modernized with an IFF enabled micro-computer. The wooden furniture is, in fact, made of painted hardened polykevlon." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' - icon_state = "m79" - item_state = "m79" - flags_equip_slot = SLOT_BACK - preload = /obj/item/explosive/grenade/slug/baton - is_lobbing = TRUE - actions_types = list(/datum/action/item_action/toggle_firing_level) - - fire_sound = 'sound/weapons/handling/m79_shoot.ogg' - cocked_sound = 'sound/weapons/handling/m79_break_open.ogg' - reload_sound = 'sound/weapons/handling/m79_reload.ogg' - unload_sound = 'sound/weapons/handling/m79_unload.ogg' - - attachable_allowed = list( - /obj/item/attachable/magnetic_harness, - /obj/item/attachable/flashlight, - /obj/item/attachable/reddot, - /obj/item/attachable/reflex, - /obj/item/attachable/stock/m79, - ) - -/obj/item/weapon/gun/launcher/grenade/m81/m79/handle_starting_attachment() - ..() - var/obj/item/attachable/stock/m79/S = new(src) - S.hidden = FALSE - S.flags_attach_features &= ~ATTACH_REMOVABLE - S.Attach(src) - update_attachable(S.slot) - -/obj/item/weapon/gun/launcher/grenade/m81/m79/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 9, "rail_y" = 22, "under_x" = 19, "under_y" = 14, "stock_x" = 14, "stock_y" = 14) - -/obj/item/weapon/gun/launcher/grenade/m81/m79/set_bullet_traits() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff)//might not need this because of is_lobbing, but let's keep it just incase - )) - -//------------------------------------------------------- -//M5 RPG - -/obj/item/weapon/gun/launcher/rocket - name = "\improper M5 RPG" - desc = "The M5 RPG is the primary anti-armor weapon of the USCM. Used to take out light-tanks and enemy structures, the M5 RPG is a dangerous weapon with a variety of combat uses." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' - icon_state = "m5" - item_state = "m5" - unacidable = TRUE - indestructible = 1 - - matter = list("metal" = 10000) - current_mag = /obj/item/ammo_magazine/rocket - flags_equip_slot = NO_FLAGS - w_class = SIZE_HUGE - force = 15 - wield_delay = WIELD_DELAY_HORRIBLE - delay_style = WEAPON_DELAY_NO_FIRE - aim_slowdown = SLOWDOWN_ADS_SPECIALIST - attachable_allowed = list( - /obj/item/attachable/magnetic_harness, - ) - - flags_gun_features = GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_INTERNAL_MAG - var/datum/effect_system/smoke_spread/smoke - - flags_item = TWOHANDED|NO_CRYO_STORE - var/skill_locked = TRUE - -/obj/item/weapon/gun/launcher/rocket/Initialize(mapload, spawn_empty) - . = ..() - smoke = new() - smoke.attach(src) - -/obj/item/weapon/gun/launcher/rocket/Destroy() - QDEL_NULL(smoke) - return ..() - - -/obj/item/weapon/gun/launcher/rocket/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 6, "rail_y" = 19, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) - - -/obj/item/weapon/gun/launcher/rocket/set_gun_config_values() - ..() - fire_delay = FIRE_DELAY_TIER_6*2 - accuracy_mult = BASE_ACCURACY_MULT - scatter = SCATTER_AMOUNT_TIER_6 - damage_mult = BASE_BULLET_DAMAGE_MULT - recoil = RECOIL_AMOUNT_TIER_3 - - -/obj/item/weapon/gun/launcher/rocket/get_examine_text(mob/user) - . = ..() - if(current_mag.current_rounds <= 0) - . += "It's not loaded." - return - if(current_mag.current_rounds > 0) - . += "It has an 84mm [ammo.name] loaded." - - -/obj/item/weapon/gun/launcher/rocket/able_to_fire(mob/living/user) - . = ..() - if (. && istype(user)) //Let's check all that other stuff first. - if(skill_locked && !skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_ROCKET) - to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) - return 0 - if(user.faction == FACTION_MARINE && explosive_antigrief_check(src, user)) - to_chat(user, SPAN_WARNING("\The [name]'s safe-area accident inhibitor prevents you from firing!")) - msg_admin_niche("[key_name(user)] attempted to fire \a [name] in [get_area(src)] [ADMIN_JMP(loc)]") - return FALSE - if(current_mag && current_mag.current_rounds > 0) - make_rocket(user, 0, 1) - -/obj/item/weapon/gun/launcher/rocket/load_into_chamber(mob/user) -// if(active_attachable) active_attachable = null - return ready_in_chamber() - -//No such thing -/obj/item/weapon/gun/launcher/rocket/reload_into_chamber(mob/user) - return TRUE - -/obj/item/weapon/gun/launcher/rocket/delete_bullet(obj/item/projectile/projectile_to_fire, refund = 0) - if(!current_mag) - return - qdel(projectile_to_fire) - if(refund) - current_mag.current_rounds++ - return TRUE - -/obj/item/weapon/gun/launcher/rocket/proc/make_rocket(mob/user, drop_override = 0, empty = 1) - if(!current_mag) - return - - var/obj/item/ammo_magazine/rocket/r = new current_mag.type() - //if there's ever another type of custom rocket ammo this logic should just be moved into a function on the rocket - if(istype(current_mag, /obj/item/ammo_magazine/rocket/custom) && !empty) - //set the custom rocket variables here. - var/obj/item/ammo_magazine/rocket/custom/k = new /obj/item/ammo_magazine/rocket/custom - var/obj/item/ammo_magazine/rocket/custom/cur_mag_cast = current_mag - k.contents = cur_mag_cast.contents - k.desc = cur_mag_cast.desc - k.fuel = cur_mag_cast.fuel - k.icon_state = cur_mag_cast.icon_state - k.warhead = cur_mag_cast.warhead - k.locked = cur_mag_cast.locked - k.name = cur_mag_cast.name - k.filters = cur_mag_cast.filters - r = k - - if(empty) - r.current_rounds = 0 - if(drop_override || !user) //If we want to drop it on the ground or there's no user. - r.forceMove(get_turf(src)) //Drop it on the ground. - else - user.put_in_hands(r) - r.update_icon() - -/obj/item/weapon/gun/launcher/rocket/reload(mob/user, obj/item/ammo_magazine/rocket) - if(!current_mag) - return - if(flags_gun_features & GUN_BURST_FIRING) - return - - if(!rocket || !istype(rocket) || !istype(src, rocket.gun_type)) - to_chat(user, SPAN_WARNING("That's not going to fit!")) - return - - if(current_mag.current_rounds > 0) - to_chat(user, SPAN_WARNING("[src] is already loaded!")) - return - - if(rocket.current_rounds <= 0) - to_chat(user, SPAN_WARNING("That frame is empty!")) - return - - if(user) - to_chat(user, SPAN_NOTICE("You begin reloading [src]. Hold still...")) - if(do_after(user,current_mag.reload_delay, INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) - qdel(current_mag) - user.drop_inv_item_on_ground(rocket) - current_mag = rocket - rocket.forceMove(src) - replace_ammo(,rocket) - to_chat(user, SPAN_NOTICE("You load [rocket] into [src].")) - if(reload_sound) - playsound(user, reload_sound, 25, 1) - else - playsound(user,'sound/machines/click.ogg', 25, 1) - else - to_chat(user, SPAN_WARNING("Your reload was interrupted!")) - return - else - qdel(current_mag) - current_mag = rocket - rocket.forceMove(src) - replace_ammo(,rocket) - return TRUE - -/obj/item/weapon/gun/launcher/rocket/unload(mob/user, reload_override = 0, drop_override = 0) - if(user && current_mag) - if(current_mag.current_rounds <= 0) - to_chat(user, SPAN_WARNING("[src] is already empty!")) - return - to_chat(user, SPAN_NOTICE("You begin unloading [src]. Hold still...")) - if(do_after(user,current_mag.reload_delay, INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) - if(current_mag.current_rounds <= 0) - to_chat(user, SPAN_WARNING("You have already unloaded \the [src].")) - return - playsound(user, unload_sound, 25, 1) - user.visible_message(SPAN_NOTICE("[user] unloads [ammo] from [src]."), - SPAN_NOTICE("You unload [ammo] from [src].")) - make_rocket(user, drop_override, 0) - current_mag.current_rounds = 0 - -//Adding in the rocket backblast. The tile behind the specialist gets blasted hard enough to down and slightly wound anyone -/obj/item/weapon/gun/launcher/rocket/apply_bullet_effects(obj/item/projectile/projectile_to_fire, mob/user, i = 1, reflex = 0) - . = ..() - if(!HAS_TRAIT(user, TRAIT_EAR_PROTECTION) && ishuman(user)) - var/mob/living/carbon/human/huser = user - to_chat(user, SPAN_WARNING("Augh!! \The [src]'s launch blast resonates extremely loudly in your ears! You probably should have worn some sort of ear protection...")) - huser.apply_effect(6, STUTTER) - huser.emote("pain") - huser.SetEarDeafness(max(user.ear_deaf,10)) - - var/backblast_loc = get_turf(get_step(user.loc, turn(user.dir, 180))) - smoke.set_up(1, 0, backblast_loc, turn(user.dir, 180)) - smoke.start() - playsound(src, 'sound/weapons/gun_rocketlauncher.ogg', 100, TRUE, 10) - for(var/mob/living/carbon/C in backblast_loc) - if(!C.lying && !HAS_TRAIT(C, TRAIT_EAR_PROTECTION)) //Have to be standing up to get the fun stuff - C.apply_damage(15, BRUTE) //The shockwave hurts, quite a bit. It can knock unarmored targets unconscious in real life - C.apply_effect(4, STUN) //For good measure - C.apply_effect(6, STUTTER) - C.emote("pain") - -//------------------------------------------------------- -//M5 RPG'S MEAN FUCKING COUSIN - -/obj/item/weapon/gun/launcher/rocket/m57a4 - name = "\improper M57-A4 'Lightning Bolt' quad thermobaric launcher" - desc = "The M57-A4 'Lightning Bolt' is possibly the most destructive man-portable weapon ever made. It is a 4-barreled missile launcher capable of burst-firing 4 thermobaric missiles. Enough said." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/event.dmi' - icon_state = "m57a4" - item_state = "m57a4" - - current_mag = /obj/item/ammo_magazine/rocket/m57a4 - aim_slowdown = SLOWDOWN_ADS_SUPERWEAPON - flags_gun_features = GUN_WIELDED_FIRING_ONLY - -/obj/item/weapon/gun/launcher/rocket/m57a4/set_gun_config_values() - ..() - fire_delay = FIRE_DELAY_TIER_5 - burst_delay = FIRE_DELAY_TIER_7 - burst_amount = BURST_AMOUNT_TIER_4 - accuracy_mult = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_4 - scatter = SCATTER_AMOUNT_TIER_6 - damage_mult = BASE_BULLET_DAMAGE_MULT - recoil = RECOIL_AMOUNT_TIER_3 - - -//------------------------------------------------------- -//AT rocket launchers, can be used by non specs - -/obj/item/weapon/gun/launcher/rocket/anti_tank //reloadable - name = "\improper QH-4 Shoulder-Mounted Anti-Tank RPG" - desc = "Used to take out light-tanks and enemy structures, the QH-4 is a dangerous weapon specialised against vehicles. Requires direct hits to penetrate vehicle armor." - icon_state = "m83a2" - item_state = "m83a2" - unacidable = FALSE - indestructible = FALSE - skill_locked = FALSE - - current_mag = /obj/item/ammo_magazine/rocket/anti_tank - - attachable_allowed = list() - - flags_gun_features = GUN_WIELDED_FIRING_ONLY - - flags_item = TWOHANDED - -/obj/item/weapon/gun/launcher/rocket/anti_tank/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY_ID("vehicles", /datum/element/bullet_trait_damage_boost, 20, GLOB.damage_boost_vehicles), - )) - -/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable //single shot and disposable - name = "\improper M83A2 SADAR" - desc = "The M83A2 SADAR is a lightweight one-shot anti-armor weapon capable of engaging enemy vehicles at ranges up to 1,000m. Fully disposable, the rocket's launcher is discarded after firing. When stowed (unique-action), the SADAR system consists of a watertight carbon-fiber composite blast tube, inside of which is an aluminum launch tube containing the missile. The weapon is fired by pushing a charge button on the trigger grip. It is sighted and fired from the shoulder." - var/fired = FALSE - -/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/get_examine_text(mob/user) - . = ..() - . += SPAN_NOTICE("You can fold it up with unique-action.") - -/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/Fire(atom/target, mob/living/user, params, reflex, dual_wield) - . = ..() - if(.) - fired = TRUE - -/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/unique_action(mob/M) - if(fired) - to_chat(M, SPAN_WARNING("\The [src] has already been fired - you can't fold it back up again!")) - return - - M.visible_message(SPAN_NOTICE("[M] begins to fold up \the [src]."), SPAN_NOTICE("You start to fold and collapse closed \the [src].")) - - if(!do_after(M, 2 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC)) - to_chat(M, SPAN_NOTICE("You stop folding up \the [src]")) - return - - fold(M) - M.visible_message(SPAN_NOTICE("[M] finishes folding \the [src]."), SPAN_NOTICE("You finish folding \the [src].")) - -/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/proc/fold(mob/user) - var/obj/item/prop/folded_anti_tank_sadar/F = new /obj/item/prop/folded_anti_tank_sadar(src.loc) - transfer_label_component(F) - qdel(src) - user.put_in_active_hand(F) - -/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/reload() - to_chat(usr, SPAN_WARNING("You cannot reload \the [src]!")) - return - -/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/unload() - to_chat(usr, SPAN_WARNING("You cannot unload \the [src]!")) - return - -//folded version of the sadar -/obj/item/prop/folded_anti_tank_sadar - name = "\improper M83 SADAR (folded)" - desc = "An M83 SADAR Anti-Tank RPG, compacted for easier storage. Can be unfolded with the Z key." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' - icon_state = "m83a2_folded" - w_class = SIZE_MEDIUM - garbage = FALSE - -/obj/item/prop/folded_anti_tank_sadar/attack_self(mob/user) - user.visible_message(SPAN_NOTICE("[user] begins to unfold \the [src]."), SPAN_NOTICE("You start to unfold and expand \the [src].")) - playsound(src, 'sound/items/component_pickup.ogg', 20, TRUE, 5) - - if(!do_after(user, 4 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC)) - to_chat(user, SPAN_NOTICE("You stop unfolding \the [src]")) - return - - unfold(user) - - user.visible_message(SPAN_NOTICE("[user] finishes unfolding \the [src]."), SPAN_NOTICE("You finish unfolding \the [src].")) - playsound(src, 'sound/items/component_pickup.ogg', 20, TRUE, 5) - . = ..() - -/obj/item/prop/folded_anti_tank_sadar/proc/unfold(mob/user) - var/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/F = new /obj/item/weapon/gun/launcher/rocket/anti_tank/disposable(src.loc) - transfer_label_component(F) - qdel(src) - user.put_in_active_hand(F) - -//------------------------------------------------------- -//Flare gun. Close enough to a specialist gun? - -/obj/item/weapon/gun/flare - name = "\improper M82-F flare gun" - desc = "A flare gun issued to JTAC operators to use with flares. Comes with a miniscope. One shot, one... life saved?" - icon_state = "m82f" - item_state = "m82f" - current_mag = /obj/item/ammo_magazine/internal/flare - reload_sound = 'sound/weapons/gun_shotgun_shell_insert.ogg' - fire_sound = 'sound/weapons/gun_flare.ogg' - aim_slowdown = 0 - flags_equip_slot = SLOT_WAIST - wield_delay = WIELD_DELAY_VERY_FAST - movement_onehanded_acc_penalty_mult = MOVEMENT_ACCURACY_PENALTY_MULT_TIER_4 - flags_gun_features = GUN_INTERNAL_MAG|GUN_CAN_POINTBLANK - gun_category = GUN_CATEGORY_HANDGUN - attachable_allowed = list(/obj/item/attachable/scope/mini/flaregun) - - var/last_signal_flare_name - - -/obj/item/weapon/gun/flare/Initialize(mapload, spawn_empty) - . = ..() - if(spawn_empty) - update_icon() - -/obj/item/weapon/gun/flare/handle_starting_attachment() - ..() - var/obj/item/attachable/scope/mini/flaregun/S = new(src) - S.hidden = TRUE - S.flags_attach_features &= ~ATTACH_REMOVABLE - S.Attach(src) - update_attachables() - - -/obj/item/weapon/gun/flare/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 12, "rail_y" = 20, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) - -/obj/item/weapon/gun/flare/set_gun_config_values() - ..() - fire_delay = FIRE_DELAY_TIER_10 - accuracy_mult = BASE_ACCURACY_MULT - accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 - scatter = 0 - recoil = RECOIL_AMOUNT_TIER_4 - recoil_unwielded = RECOIL_AMOUNT_TIER_4 - -/obj/item/weapon/gun/flare/set_bullet_traits() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) - )) - -/obj/item/weapon/gun/flare/reload_into_chamber(mob/user) - . = ..() - to_chat(user, SPAN_WARNING("You pop out [src]'s tube!")) - update_icon() - -/obj/item/weapon/gun/flare/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/device/flashlight/flare)) - var/obj/item/device/flashlight/flare/F = I - if(F.on) - to_chat(user, SPAN_WARNING("You can't put a lit flare in [src]!")) - return - if(!F.fuel) - to_chat(user, SPAN_WARNING("You can't put a burnt out flare in [src]!")) - return - if(current_mag && current_mag.current_rounds == 0) - ammo = GLOB.ammo_list[F.ammo_datum] - playsound(user, reload_sound, 25, 1) - to_chat(user, SPAN_NOTICE("You load \the [F] into [src].")) - current_mag.current_rounds++ - qdel(I) - update_icon() - else - to_chat(user, SPAN_WARNING("\The [src] is already loaded!")) - else - to_chat(user, SPAN_WARNING("That's not a flare!")) - -/obj/item/weapon/gun/flare/unload(mob/user) - if(flags_gun_features & GUN_BURST_FIRING) - return - unload_flare(user) - -/obj/item/weapon/gun/flare/proc/unload_flare(mob/user) - if(!current_mag) - return - if(current_mag.current_rounds) - var/obj/item/device/flashlight/flare/unloaded_flare = new ammo.handful_type(get_turf(src)) - playsound(user, reload_sound, 25, TRUE) - current_mag.current_rounds-- - if(user) - to_chat(user, SPAN_NOTICE("You unload \the [unloaded_flare] from \the [src].")) - user.put_in_hands(unloaded_flare) - update_icon() - -/obj/item/weapon/gun/flare/unique_action(mob/user) - if(!user || !isturf(user.loc) || !current_mag || !current_mag.current_rounds) - return - - var/turf/flare_turf = user.loc - var/area/flare_area = flare_turf.loc - - if(flare_area.ceiling > CEILING_GLASS) - to_chat(user, SPAN_NOTICE("The roof above you is too dense.")) - return - - if(!istype(ammo, /datum/ammo/flare)) - to_chat(user, SPAN_NOTICE("\The [src] jams as it is somehow loaded with incorrect ammo!")) - return - - if(user.action_busy) - return - - if(!do_after(user, 1 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC)) - return - - current_mag.current_rounds-- - - flare_turf.ceiling_debris() - - var/datum/ammo/flare/explicit_ammo = ammo - - var/obj/item/device/flashlight/flare/fired_flare = new explicit_ammo.flare_type(get_turf(src)) - to_chat(user, SPAN_NOTICE("You fire \the [fired_flare] into the air!")) - fired_flare.visible_message(SPAN_WARNING("\A [fired_flare] bursts into brilliant light in the sky!")) - fired_flare.invisibility = INVISIBILITY_MAXIMUM - fired_flare.mouse_opacity = FALSE - playsound(user.loc, fire_sound, 50, 1) - - if(fired_flare.activate_signal(user)) - last_signal_flare_name = fired_flare.name - - update_icon() - -/obj/item/weapon/gun/flare/get_examine_text(mob/user) - . = ..() - if(last_signal_flare_name) - . += SPAN_NOTICE("The last signal flare fired has the designation: [last_signal_flare_name]") diff --git a/code/modules/projectiles/guns/specialist/launcher/grenade_launcher.dm b/code/modules/projectiles/guns/specialist/launcher/grenade_launcher.dm new file mode 100644 index 000000000000..0f767d679d03 --- /dev/null +++ b/code/modules/projectiles/guns/specialist/launcher/grenade_launcher.dm @@ -0,0 +1,364 @@ +//------------------------------------------------------- +//GRENADE LAUNCHER + +/obj/item/weapon/gun/launcher/grenade //Parent item for GLs. + w_class = SIZE_LARGE + throw_speed = SPEED_SLOW + throw_range = 10 + force = 5 + + fire_sound = 'sound/weapons/armbomb.ogg' + cocked_sound = 'sound/weapons/gun_m92_cocked.ogg' + reload_sound = 'sound/weapons/gun_shotgun_open2.ogg' //Played when inserting nade. + unload_sound = 'sound/weapons/gun_revolver_unload.ogg' + + has_cylinder = TRUE //This weapon won't work otherwise. + preload = /obj/item/explosive/grenade/high_explosive + internal_slots = 1 //This weapon must use slots. + internal_max_w_class = SIZE_MEDIUM //MEDIUM = M15. + + aim_slowdown = SLOWDOWN_ADS_SPECIALIST + wield_delay = WIELD_DELAY_SLOW + flags_gun_features = GUN_UNUSUAL_DESIGN|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY + ///Can you access the storage by clicking it, put things into it, or take things out? Meant for break-actions mostly but useful for any state where you want access to be toggleable. Make sure to call cylinder.close(user) so they don't still have the screen open! + var/open_chamber = TRUE + ///Does it launch its grenades in a low arc or a high? Do they strike people in their path, or fly beyond? + var/is_lobbing = FALSE + ///Verboten munitions. This is a blacklist. Anything in this list isn't loadable. + var/disallowed_grenade_types = list(/obj/item/explosive/grenade/spawnergrenade, /obj/item/explosive/grenade/alien, /obj/item/explosive/grenade/incendiary/molotov, /obj/item/explosive/grenade/flashbang) + ///What is this weapon permitted to fire? This is a whitelist. Anything in this list can be fired. Anything. + var/valid_munitions = list(/obj/item/explosive/grenade) + + +/obj/item/weapon/gun/launcher/grenade/set_gun_config_values() + ..() + recoil = RECOIL_AMOUNT_TIER_4 //Same as m37 shotgun. + + +/obj/item/weapon/gun/launcher/grenade/on_pocket_insertion() //Plays load sfx whenever a nade is put into storage. + playsound(usr, reload_sound, 25, 1) + update_icon() + +/obj/item/weapon/gun/launcher/grenade/on_pocket_removal() + update_icon() + +/obj/item/weapon/gun/launcher/grenade/get_examine_text(mob/user) //Different treatment for single-shot VS multi-shot GLs. + . = ..() + if(get_dist(user, src) > 2 && user != loc) + return + if(length(cylinder.contents)) + if(internal_slots == 1) + . += SPAN_NOTICE("It is loaded with a grenade.") + else + . += SPAN_NOTICE("It is loaded with [length(cylinder.contents)] / [internal_slots] grenades.") + else + . += SPAN_NOTICE("It is empty.") + + +/obj/item/weapon/gun/launcher/grenade/update_icon() + ..() + var/GL_sprite = base_gun_icon + if(GL_has_empty_icon && cylinder && !length(cylinder.contents)) + GL_sprite += "_e" + playsound(loc, cocked_sound, 25, 1) + if(GL_has_open_icon && open_chamber) + GL_sprite += "_o" + playsound(loc, cocked_sound, 25, 1) + icon_state = GL_sprite + + +/obj/item/weapon/gun/launcher/grenade/attack_hand(mob/user) + if(!open_chamber || src != user.get_inactive_hand()) //Need to have the GL in your hands to open the cylinder. + return ..() + if(cylinder.handle_attack_hand(user)) + ..() + + +/obj/item/weapon/gun/launcher/grenade/unload(mob/user, reload_override = FALSE, drop_override = FALSE, loc_override = FALSE) + if(!open_chamber) + to_chat(user, SPAN_WARNING("[src] is closed!")) + return + if(!length(cylinder.contents)) + to_chat(user, SPAN_WARNING("It's empty!")) + return + + var/obj/item/explosive/grenade/nade = cylinder.contents[length(cylinder.contents)] //Grab the last-inserted one. Or the only one, as the case may be. + cylinder.remove_from_storage(nade, user.loc) + + if(drop_override || !user) + nade.forceMove(get_turf(src)) + else + user.put_in_hands(nade) + + user.visible_message(SPAN_NOTICE("[user] unloads [nade] from [src]."), + SPAN_NOTICE("You unload [nade] from [src]."), null, 4, CHAT_TYPE_COMBAT_ACTION) + playsound(user, unload_sound, 30, 1) + + +/obj/item/weapon/gun/launcher/grenade/attackby(obj/item/I, mob/user) + if(istype(I,/obj/item/attachable) && check_inactive_hand(user)) + attach_to_gun(user,I) + return + return cylinder.attackby(I, user) + +/obj/item/weapon/gun/launcher/grenade/unique_action(mob/user) + if(isobserver(usr) || isxeno(usr)) + return + if(locate(/datum/action/item_action/toggle_firing_level) in actions) + toggle_firing_level(usr) + +/obj/item/weapon/gun/launcher/grenade/proc/allowed_ammo_type(obj/item/I) + for(var/G in disallowed_grenade_types) //Check for the bad stuff. + if(istype(I, G)) + return FALSE + for(var/G in valid_munitions) //Check if it has a ticket. + if(istype(I, G)) + return TRUE + + +/obj/item/weapon/gun/launcher/grenade/on_pocket_attackby(obj/item/explosive/grenade/I, mob/user) //the attack in question is on the internal container. Complete override - normal storage attackby cannot be silenced, and will always say "you put the x into y". + if(!open_chamber) + to_chat(user, SPAN_WARNING("[src] is closed!")) + return + if(!istype(I)) + to_chat(user, SPAN_WARNING("You can't load [I] into [src]!")) + return + if(!allowed_ammo_type(I)) + to_chat(user, SPAN_WARNING("[src] can't fire this type of grenade!")) + return + if(length(cylinder.contents) >= internal_slots) + to_chat(user, SPAN_WARNING("[src] cannot hold more grenades!")) + return + if(!cylinder.can_be_inserted(I, user)) //Technically includes whether there's room for it, but the above gives a tailored message. + return + + user.visible_message(SPAN_NOTICE("[user] loads [I] into [src]."), + SPAN_NOTICE("You load [I] into the grenade launcher."), null, 4, CHAT_TYPE_COMBAT_ACTION) + playsound(usr, reload_sound, 75, 1) + if(internal_slots > 1) + to_chat(user, SPAN_INFO("Now storing: [length(cylinder.contents) + 1] / [internal_slots] grenades.")) + + cylinder.handle_item_insertion(I, TRUE, user) + + +/obj/item/weapon/gun/launcher/grenade/able_to_fire(mob/living/user) //Skillchecks and fire blockers go in the child items. + . = ..() + if(.) + if(!length(cylinder.contents)) + to_chat(user, SPAN_WARNING("The [name] is empty.")) + return FALSE + var/obj/item/explosive/grenade/G = cylinder.contents[1] + if(G.antigrief_protection && user.faction == FACTION_MARINE && explosive_antigrief_check(G, user)) + to_chat(user, SPAN_WARNING("\The [name]'s safe-area accident inhibitor prevents you from firing!")) + msg_admin_niche("[key_name(user)] attempted to prime \a [G.name] in [get_area(src)] [ADMIN_JMP(src.loc)]") + return FALSE + + +/obj/item/weapon/gun/launcher/grenade/afterattack(atom/target, mob/user, flag) //Not actually after the attack. After click, more like. + if(able_to_fire(user)) + if(get_dist(target,user) <= 2) + var/obj/item/explosive/grenade/nade = cylinder.contents[1] + if(nade.dangerous) + to_chat(user, SPAN_WARNING("The grenade launcher beeps a warning noise. You are too close!")) + return + fire_grenade(target,user) + + +/obj/item/weapon/gun/launcher/grenade/proc/fire_grenade(atom/target, mob/user) + set waitfor = 0 + last_fired = world.time + + var/to_firer = "You fire the [name]!" + if(internal_slots > 1) + to_firer += " [length(cylinder.contents)-1]/[internal_slots] grenades remaining." + user.visible_message(SPAN_DANGER("[user] fired a grenade!"), + SPAN_WARNING("[to_firer]"), message_flags = CHAT_TYPE_WEAPON_USE) + playsound(user.loc, fire_sound, 50, 1) + + var/angle = round(Get_Angle(user,target)) + muzzle_flash(angle,user) + simulate_recoil(0, user) + + var/obj/item/explosive/grenade/fired = cylinder.contents[1] + cylinder.remove_from_storage(fired, user.loc) + var/pass_flags = NO_FLAGS + if(is_lobbing) + if(istype(fired, /obj/item/explosive/grenade/slug/baton)) + if(ishuman(user)) + var/mob/living/carbon/human/human_user = user + human_user.remember_dropped_object(fired) + fired.fingerprintslast = key_name(user) + pass_flags |= PASS_MOB_THRU_HUMAN|PASS_MOB_IS_OTHER|PASS_OVER + else + pass_flags |= PASS_MOB_THRU|PASS_HIGH_OVER + + msg_admin_attack("[key_name_admin(user)] fired a grenade ([fired.name]) from \a ([name]).") + log_game("[key_name_admin(user)] used a grenade ([name]).") + + fired.throw_range = 20 + fired.det_time = min(10, fired.det_time) + fired.activate(user, FALSE) + fired.forceMove(get_turf(src)) + fired.throw_atom(target, 20, SPEED_VERY_FAST, user, null, NORMAL_LAUNCH, pass_flags) + + + +//Doesn't use these. Listed for reference. +/obj/item/weapon/gun/launcher/grenade/load_into_chamber() + return +/obj/item/weapon/gun/launcher/grenade/reload_into_chamber() + return + +/obj/item/weapon/gun/launcher/grenade/has_ammunition() + return length(cylinder.contents) + +//------------------------------------------------------- +//Toggle firing level special action for grenade launchers + +/datum/action/item_action/toggle_firing_level/New(Target, obj/item/holder) + . = ..() + name = "Toggle Firing Level" + button.name = name + update_icon() + +/datum/action/item_action/toggle_firing_level/action_activate() + var/obj/item/weapon/gun/launcher/grenade/G = holder_item + if(!ishuman(owner)) + return + var/mob/living/carbon/human/H = owner + if(H.is_mob_incapacitated() || G.get_active_firearm(H, FALSE) != holder_item) + return + G.toggle_firing_level(usr) + +/datum/action/item_action/toggle_firing_level/proc/update_icon() + var/obj/item/weapon/gun/launcher/grenade/G = holder_item + if(G.is_lobbing) + action_icon_state = "hightoss_on" + else + action_icon_state = "hightoss_off" + button.overlays.Cut() + button.overlays += image('icons/mob/hud/actions.dmi', button, action_icon_state) + +/obj/item/weapon/gun/launcher/grenade/proc/toggle_firing_level(mob/user) + is_lobbing = !is_lobbing + to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s firing level. You will now fire [is_lobbing ? "in an arcing path over obstacles" : "directly at your target"].") + playsound(loc,'sound/machines/click.ogg', 25, 1) + var/datum/action/item_action/toggle_firing_level/TFL = locate(/datum/action/item_action/toggle_firing_level) in actions + TFL.update_icon() + +//------------------------------------------------------- +//M92 GRENADE LAUNCHER + +/obj/item/weapon/gun/launcher/grenade/m92 + name = "\improper M92 grenade launcher" + desc = "A heavy, 6-shot grenade launcher used by the Colonial Marines for area denial and big explosions." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' + icon_state = "m92" + item_state = "m92" + unacidable = TRUE + indestructible = 1 + matter = list("metal" = 6000) + actions_types = list(/datum/action/item_action/toggle_firing_level) + + attachable_allowed = list(/obj/item/attachable/magnetic_harness) + flags_item = TWOHANDED|NO_CRYO_STORE + map_specific_decoration = TRUE + + is_lobbing = TRUE + internal_slots = 6 + direct_draw = FALSE + +/obj/item/weapon/gun/launcher/grenade/m92/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 14, "rail_y" = 22, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) + +/obj/item/weapon/gun/launcher/grenade/m92/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_4*4) + +/obj/item/weapon/gun/launcher/grenade/m92/able_to_fire(mob/living/user) + . = ..() + if (. && istype(user)) + if(!skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_GRENADIER) + to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) + return FALSE + + +//------------------------------------------------------- +//M81 GRENADE LAUNCHER + +/obj/item/weapon/gun/launcher/grenade/m81 + name = "\improper M81 grenade launcher" + desc = "A lightweight, single-shot low-angle grenade launcher used by the Colonial Marines for area denial and big explosions." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' + icon_state = "m81" + item_state = "m81" //needs a wield sprite. + + matter = list("metal" = 7000) + +/obj/item/weapon/gun/launcher/grenade/m81/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 14, "rail_y" = 22, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) + +/obj/item/weapon/gun/launcher/grenade/m81/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_4 * 1.5) + +/obj/item/weapon/gun/launcher/grenade/m81/on_pocket_removal() + ..() + playsound(usr, unload_sound, 30, 1) + +/obj/item/weapon/gun/launcher/grenade/m81/riot/able_to_fire(mob/living/user) + . = ..() + if (. && istype(user)) + if(!skillcheck(user, SKILL_POLICE, SKILL_POLICE_SKILLED)) + to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) + return FALSE + + +/obj/item/weapon/gun/launcher/grenade/m81/riot + name = "\improper M81 riot grenade launcher" + desc = "A lightweight, single-shot low-angle grenade launcher to launch tear gas grenades. Used by the Colonial Marines Military Police during riots." + valid_munitions = list(/obj/item/explosive/grenade/custom/teargas) + preload = /obj/item/explosive/grenade/custom/teargas + +//------------------------------------------------------- +//M79 Grenade Launcher subtype of the M81 + +/obj/item/weapon/gun/launcher/grenade/m81/m79//m79 variant for marines + name = "\improper M79 grenade launcher" + desc = "A heavy, low-angle 40mm grenade launcher. It's been in use since the Vietnam War, though this version has been modernized with an IFF enabled micro-computer. The wooden furniture is, in fact, made of painted hardened polykevlon." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' + icon_state = "m79" + item_state = "m79" + flags_equip_slot = SLOT_BACK + preload = /obj/item/explosive/grenade/slug/baton + is_lobbing = TRUE + actions_types = list(/datum/action/item_action/toggle_firing_level) + + fire_sound = 'sound/weapons/handling/m79_shoot.ogg' + cocked_sound = 'sound/weapons/handling/m79_break_open.ogg' + reload_sound = 'sound/weapons/handling/m79_reload.ogg' + unload_sound = 'sound/weapons/handling/m79_unload.ogg' + + attachable_allowed = list( + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/flashlight, + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/stock/m79, + ) + +/obj/item/weapon/gun/launcher/grenade/m81/m79/handle_starting_attachment() + ..() + var/obj/item/attachable/stock/m79/S = new(src) + S.hidden = FALSE + S.flags_attach_features &= ~ATTACH_REMOVABLE + S.Attach(src) + update_attachable(S.slot) + +/obj/item/weapon/gun/launcher/grenade/m81/m79/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 9, "rail_y" = 22, "under_x" = 19, "under_y" = 14, "stock_x" = 14, "stock_y" = 14) + +/obj/item/weapon/gun/launcher/grenade/m81/m79/set_bullet_traits() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff)//might not need this because of is_lobbing, but let's keep it just incase + )) diff --git a/code/modules/projectiles/guns/specialist/launcher/launcher.dm b/code/modules/projectiles/guns/specialist/launcher/launcher.dm new file mode 100644 index 000000000000..70f00aa83c35 --- /dev/null +++ b/code/modules/projectiles/guns/specialist/launcher/launcher.dm @@ -0,0 +1,46 @@ +//------------------------------------------------------- +//HEAVY WEAPONS + +/obj/item/weapon/gun/launcher + gun_category = GUN_CATEGORY_HEAVY + has_empty_icon = FALSE + has_open_icon = FALSE + ///gun update_icon doesn't detect that guns with no magazine are loaded or not, and will always append _o or _e if possible. + var/GL_has_empty_icon = TRUE + ///gun update_icon doesn't detect that guns with no magazine are loaded or not, and will always append _o or _e if possible. + var/GL_has_open_icon = FALSE + + ///Internal storage item used as magazine. Must be initialised to work! Set parameters by variables or it will inherit standard numbers from storage.dm. Got to call it *something* and 'magazine' or w/e would be confusing. + var/obj/item/storage/internal/cylinder + /// Variable that initializes the above. + var/has_cylinder = FALSE + ///What single item to fill the storage with, if any. This does not respect w_class. + var/preload + ///How many items can be inserted. "Null" = backpack-style size-based inventory. You'll have to set max_storage_space too if you do that, and arrange any initial contents. Iff you arrange to put in more items than the storage can hold, they can be taken out but not replaced. + var/internal_slots + ///how big an item can be inserted. + var/internal_max_w_class + ///the sfx played when the storage is opened. + var/use_sound = null + ///Whether clicking a held weapon with an empty hand will open its inventory or draw a munition out. + var/direct_draw = TRUE + +/obj/item/weapon/gun/launcher/Initialize(mapload, spawn_empty) //If changing vars on init, be sure to do the parent proccall *after* the change. + . = ..() + if(has_cylinder) + cylinder = new /obj/item/storage/internal(src) + cylinder.storage_slots = internal_slots + cylinder.max_w_class = internal_max_w_class + cylinder.use_sound = use_sound + if(direct_draw) + cylinder.storage_flags ^= STORAGE_USING_DRAWING_METHOD + if(preload && !spawn_empty) for(var/i = 1 to cylinder.storage_slots) + new preload(cylinder) + update_icon() + +/obj/item/weapon/gun/launcher/verb/toggle_draw_mode() + set name = "Switch Storage Drawing Method" + set category = "Object" + set src in usr + + cylinder.storage_draw_logic(src.name) diff --git a/code/modules/projectiles/guns/specialist/launcher/rocket_launcher.dm b/code/modules/projectiles/guns/specialist/launcher/rocket_launcher.dm new file mode 100644 index 000000000000..356d0e6c3b48 --- /dev/null +++ b/code/modules/projectiles/guns/specialist/launcher/rocket_launcher.dm @@ -0,0 +1,369 @@ + +//------------------------------------------------------- +//M5 RPG + +/obj/item/weapon/gun/launcher/rocket + name = "\improper M5 RPG" + desc = "The M5 RPG is the primary anti-armor weapon of the USCM. Used to take out light-tanks and enemy structures, the M5 RPG is a dangerous weapon with a variety of combat uses." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' + icon_state = "m5" + item_state = "m5" + unacidable = TRUE + indestructible = 1 + + matter = list("metal" = 10000) + current_mag = /obj/item/ammo_magazine/rocket + flags_equip_slot = NO_FLAGS + w_class = SIZE_HUGE + force = 15 + wield_delay = WIELD_DELAY_HORRIBLE + delay_style = WEAPON_DELAY_NO_FIRE + aim_slowdown = SLOWDOWN_ADS_SPECIALIST + attachable_allowed = list( + /obj/item/attachable/magnetic_harness, + ) + + flags_gun_features = GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_INTERNAL_MAG + var/datum/effect_system/smoke_spread/smoke + + flags_item = TWOHANDED|NO_CRYO_STORE + var/skill_locked = TRUE + +/obj/item/weapon/gun/launcher/rocket/Initialize(mapload, spawn_empty) + . = ..() + smoke = new() + smoke.attach(src) + +/obj/item/weapon/gun/launcher/rocket/Destroy() + QDEL_NULL(smoke) + return ..() + + +/obj/item/weapon/gun/launcher/rocket/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 6, "rail_y" = 19, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) + + +/obj/item/weapon/gun/launcher/rocket/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_6*2) + accuracy_mult = BASE_ACCURACY_MULT + scatter = SCATTER_AMOUNT_TIER_6 + damage_mult = BASE_BULLET_DAMAGE_MULT + recoil = RECOIL_AMOUNT_TIER_3 + + +/obj/item/weapon/gun/launcher/rocket/get_examine_text(mob/user) + . = ..() + if(current_mag.current_rounds <= 0) + . += "It's not loaded." + return + if(current_mag.current_rounds > 0) + . += "It has an 84mm [ammo.name] loaded." + + +/obj/item/weapon/gun/launcher/rocket/able_to_fire(mob/living/user) + . = ..() + if (. && istype(user)) //Let's check all that other stuff first. + if(skill_locked && !skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_ROCKET) + to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) + return 0 + if(user.faction == FACTION_MARINE && explosive_antigrief_check(src, user)) + to_chat(user, SPAN_WARNING("\The [name]'s safe-area accident inhibitor prevents you from firing!")) + msg_admin_niche("[key_name(user)] attempted to fire \a [name] in [get_area(src)] [ADMIN_JMP(loc)]") + return FALSE + if(current_mag && current_mag.current_rounds > 0) + make_rocket(user, 0, 1) + +/obj/item/weapon/gun/launcher/rocket/load_into_chamber(mob/user) +// if(active_attachable) active_attachable = null + return ready_in_chamber() + +//No such thing +/obj/item/weapon/gun/launcher/rocket/reload_into_chamber(mob/user) + return TRUE + +/obj/item/weapon/gun/launcher/rocket/delete_bullet(obj/projectile/projectile_to_fire, refund = 0) + if(!current_mag) + return + qdel(projectile_to_fire) + if(refund) + current_mag.current_rounds++ + return TRUE + +/obj/item/weapon/gun/launcher/rocket/proc/make_rocket(mob/user, drop_override = 0, empty = 1) + if(!current_mag) + return + + var/obj/item/ammo_magazine/rocket/r = new current_mag.type() + //if there's ever another type of custom rocket ammo this logic should just be moved into a function on the rocket + if(istype(current_mag, /obj/item/ammo_magazine/rocket/custom) && !empty) + //set the custom rocket variables here. + var/obj/item/ammo_magazine/rocket/custom/k = new /obj/item/ammo_magazine/rocket/custom + var/obj/item/ammo_magazine/rocket/custom/cur_mag_cast = current_mag + k.contents = cur_mag_cast.contents + k.desc = cur_mag_cast.desc + k.fuel = cur_mag_cast.fuel + k.icon_state = cur_mag_cast.icon_state + k.warhead = cur_mag_cast.warhead + k.locked = cur_mag_cast.locked + k.name = cur_mag_cast.name + k.filters = cur_mag_cast.filters + r = k + + if(empty) + r.current_rounds = 0 + if(drop_override || !user) //If we want to drop it on the ground or there's no user. + r.forceMove(get_turf(src)) //Drop it on the ground. + else + user.put_in_hands(r) + r.update_icon() + +/obj/item/weapon/gun/launcher/rocket/reload(mob/user, obj/item/ammo_magazine/rocket) + if(!current_mag) + return + if(flags_gun_features & GUN_BURST_FIRING) + return + + if(!rocket || !istype(rocket) || !istype(src, rocket.gun_type)) + to_chat(user, SPAN_WARNING("That's not going to fit!")) + return + + if(current_mag.current_rounds > 0) + to_chat(user, SPAN_WARNING("[src] is already loaded!")) + return + + if(rocket.current_rounds <= 0) + to_chat(user, SPAN_WARNING("That frame is empty!")) + return + + if(user) + to_chat(user, SPAN_NOTICE("You begin reloading [src]. Hold still...")) + if(do_after(user,current_mag.reload_delay, INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) + qdel(current_mag) + user.drop_inv_item_on_ground(rocket) + current_mag = rocket + rocket.forceMove(src) + replace_ammo(,rocket) + to_chat(user, SPAN_NOTICE("You load [rocket] into [src].")) + if(reload_sound) + playsound(user, reload_sound, 25, 1) + else + playsound(user,'sound/machines/click.ogg', 25, 1) + else + to_chat(user, SPAN_WARNING("Your reload was interrupted!")) + return + else + qdel(current_mag) + current_mag = rocket + rocket.forceMove(src) + replace_ammo(,rocket) + return TRUE + +/obj/item/weapon/gun/launcher/rocket/unload(mob/user, reload_override = 0, drop_override = 0) + if(user && current_mag) + if(current_mag.current_rounds <= 0) + to_chat(user, SPAN_WARNING("[src] is already empty!")) + return + to_chat(user, SPAN_NOTICE("You begin unloading [src]. Hold still...")) + if(do_after(user,current_mag.reload_delay, INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) + if(current_mag.current_rounds <= 0) + to_chat(user, SPAN_WARNING("You have already unloaded \the [src].")) + return + playsound(user, unload_sound, 25, 1) + user.visible_message(SPAN_NOTICE("[user] unloads [ammo] from [src]."), + SPAN_NOTICE("You unload [ammo] from [src].")) + make_rocket(user, drop_override, 0) + current_mag.current_rounds = 0 + +//Adding in the rocket backblast. The tile behind the specialist gets blasted hard enough to down and slightly wound anyone +/obj/item/weapon/gun/launcher/rocket/apply_bullet_effects(obj/projectile/projectile_to_fire, mob/user, i = 1, reflex = 0) + . = ..() + if(!HAS_TRAIT(user, TRAIT_EAR_PROTECTION) && ishuman(user)) + var/mob/living/carbon/human/huser = user + to_chat(user, SPAN_WARNING("Augh!! \The [src]'s launch blast resonates extremely loudly in your ears! You probably should have worn some sort of ear protection...")) + huser.apply_effect(6, STUTTER) + huser.emote("pain") + huser.SetEarDeafness(max(user.ear_deaf,10)) + + var/backblast_loc = get_turf(get_step(user.loc, turn(user.dir, 180))) + smoke.set_up(1, 0, backblast_loc, turn(user.dir, 180)) + smoke.start() + playsound(src, 'sound/weapons/gun_rocketlauncher.ogg', 100, TRUE, 10) + for(var/mob/living/carbon/C in backblast_loc) + if(C.body_position == STANDING_UP && !HAS_TRAIT(C, TRAIT_EAR_PROTECTION)) //Have to be standing up to get the fun stuff + C.apply_damage(15, BRUTE) //The shockwave hurts, quite a bit. It can knock unarmored targets unconscious in real life + C.apply_effect(4, STUN) //For good measure + C.apply_effect(6, STUTTER) + C.emote("pain") + +//------------------------------------------------------- +//M5 RPG'S MEAN FUCKING COUSIN + +/obj/item/weapon/gun/launcher/rocket/m57a4 + name = "\improper M57-A4 'Lightning Bolt' quad thermobaric launcher" + desc = "The M57-A4 'Lightning Bolt' is possibly the most destructive man-portable weapon ever made. It is a 4-barreled missile launcher capable of burst-firing 4 thermobaric missiles. Enough said." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/event.dmi' + icon_state = "m57a4" + item_state = "m57a4" + + current_mag = /obj/item/ammo_magazine/rocket/m57a4 + aim_slowdown = SLOWDOWN_ADS_SUPERWEAPON + flags_gun_features = GUN_WIELDED_FIRING_ONLY + +/obj/item/weapon/gun/launcher/rocket/m57a4/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_5) + set_burst_delay(FIRE_DELAY_TIER_7) + set_burst_amount(BURST_AMOUNT_TIER_4) + accuracy_mult = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_4 + scatter = SCATTER_AMOUNT_TIER_6 + damage_mult = BASE_BULLET_DAMAGE_MULT + recoil = RECOIL_AMOUNT_TIER_3 + + +//------------------------------------------------------- +//AT rocket launchers, can be used by non specs + +/obj/item/weapon/gun/launcher/rocket/anti_tank //reloadable + name = "\improper QH-4 Shoulder-Mounted Anti-Tank RPG" + desc = "Used to take out light-tanks and enemy structures, the QH-4 is a dangerous weapon specialised against vehicles. Requires direct hits to penetrate vehicle armor." + icon_state = "m83a2" + item_state = "m83a2" + unacidable = FALSE + indestructible = FALSE + skill_locked = FALSE + + current_mag = /obj/item/ammo_magazine/rocket/anti_tank + + attachable_allowed = list() + + flags_gun_features = GUN_WIELDED_FIRING_ONLY + + flags_item = TWOHANDED + +/obj/item/weapon/gun/launcher/rocket/anti_tank/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY_ID("vehicles", /datum/element/bullet_trait_damage_boost, 20, GLOB.damage_boost_vehicles), + )) + +/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable //single shot and disposable + name = "\improper M83A2 SADAR" + desc = "The M83A2 SADAR is a lightweight one-shot anti-armor weapon capable of engaging enemy vehicles at ranges up to 1,000m. Fully disposable, the rocket's launcher is discarded after firing. When stowed (unique-action), the SADAR system consists of a watertight carbon-fiber composite blast tube, inside of which is an aluminum launch tube containing the missile. The weapon is fired by pushing a charge button on the trigger grip. It is sighted and fired from the shoulder." + var/fired = FALSE + +/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/get_examine_text(mob/user) + . = ..() + . += SPAN_NOTICE("You can fold it up with unique-action.") + +/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/Fire(atom/target, mob/living/user, params, reflex, dual_wield) + . = ..() + if(.) + fired = TRUE + +/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/unique_action(mob/M) + if(fired) + to_chat(M, SPAN_WARNING("\The [src] has already been fired - you can't fold it back up again!")) + return + + M.visible_message(SPAN_NOTICE("[M] begins to fold up \the [src]."), SPAN_NOTICE("You start to fold and collapse closed \the [src].")) + + if(!do_after(M, 2 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC)) + to_chat(M, SPAN_NOTICE("You stop folding up \the [src]")) + return + + fold(M) + M.visible_message(SPAN_NOTICE("[M] finishes folding \the [src]."), SPAN_NOTICE("You finish folding \the [src].")) + +/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/proc/fold(mob/user) + var/obj/item/prop/folded_anti_tank_sadar/F = new /obj/item/prop/folded_anti_tank_sadar(src.loc) + transfer_label_component(F) + qdel(src) + user.put_in_active_hand(F) + +/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/reload() + to_chat(usr, SPAN_WARNING("You cannot reload \the [src]!")) + return + +/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/unload() + to_chat(usr, SPAN_WARNING("You cannot unload \the [src]!")) + return + +//folded version of the sadar +/obj/item/prop/folded_anti_tank_sadar + name = "\improper M83 SADAR (folded)" + desc = "An M83 SADAR Anti-Tank RPG, compacted for easier storage. Can be unfolded with the Z key." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' + icon_state = "m83a2_folded" + w_class = SIZE_MEDIUM + garbage = FALSE + +/obj/item/prop/folded_anti_tank_sadar/attack_self(mob/user) + user.visible_message(SPAN_NOTICE("[user] begins to unfold \the [src]."), SPAN_NOTICE("You start to unfold and expand \the [src].")) + playsound(src, 'sound/items/component_pickup.ogg', 20, TRUE, 5) + + if(!do_after(user, 4 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC)) + to_chat(user, SPAN_NOTICE("You stop unfolding \the [src]")) + return + + unfold(user) + + user.visible_message(SPAN_NOTICE("[user] finishes unfolding \the [src]."), SPAN_NOTICE("You finish unfolding \the [src].")) + playsound(src, 'sound/items/component_pickup.ogg', 20, TRUE, 5) + . = ..() + +/obj/item/prop/folded_anti_tank_sadar/proc/unfold(mob/user) + var/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/F = new /obj/item/weapon/gun/launcher/rocket/anti_tank/disposable(src.loc) + transfer_label_component(F) + qdel(src) + user.put_in_active_hand(F) + +//------------------------------------------------------- +//UPP Rocket Launcher + +/obj/item/weapon/gun/launcher/rocket/upp + name = "\improper HJRA-12 Handheld Anti-Tank Grenade Launcher" + desc = "The HJRA-12 Handheld Anti-Tank Grenade Launcher is the standard Anti-Armor weapon of the UPP. It is designed to be easy to use and to take out or disable armored vehicles." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "hjra12" + item_state = "hjra12" + skill_locked = FALSE + current_mag = /obj/item/ammo_magazine/rocket/upp/at + + attachable_allowed = list(/obj/item/attachable/upp_rpg_breech) + + flags_gun_features = GUN_WIELDED_FIRING_ONLY + + flags_item = TWOHANDED + +/obj/item/weapon/gun/launcher/rocket/upp/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 6, "rail_y" = 19, "under_x" = 19, "under_y" = 14, "stock_x" = -6, "stock_y" = 16, "special_x" = 37, "special_y" = 16) + +/obj/item/weapon/gun/launcher/rocket/upp/handle_starting_attachment() + ..() + var/obj/item/attachable/upp_rpg_breech/S = new(src) + S.flags_attach_features &= ~ATTACH_REMOVABLE + S.Attach(src) + update_attachables() + + var/obj/item/attachable/magnetic_harness/Integrated = new(src) + Integrated.hidden = TRUE + Integrated.flags_attach_features &= ~ATTACH_REMOVABLE + Integrated.Attach(src) + update_attachable(Integrated.slot) + +/obj/item/weapon/gun/launcher/rocket/upp/apply_bullet_effects(obj/projectile/projectile_to_fire, mob/user, i = 1, reflex = 0) + . = ..() + if(!HAS_TRAIT(user, TRAIT_EAR_PROTECTION) && ishuman(user)) + return + + var/backblast_loc = get_turf(get_step(user.loc, turn(user.dir, 180))) + smoke.set_up(1, 0, backblast_loc, turn(user.dir, 180)) + smoke.start() + playsound(src, 'sound/weapons/gun_rocketlauncher.ogg', 100, TRUE, 10) + for(var/mob/living/carbon/C in backblast_loc) + if(C.body_position == STANDING_UP && !HAS_TRAIT(C, TRAIT_EAR_PROTECTION)) //Have to be standing up to get the fun stuff + C.apply_damage(15, BRUTE) //The shockwave hurts, quite a bit. It can knock unarmored targets unconscious in real life + C.apply_effect(4, STUN) //For good measure + C.apply_effect(6, STUTTER) + C.emote("pain") diff --git a/code/modules/projectiles/guns/specialist/scout.dm b/code/modules/projectiles/guns/specialist/scout.dm new file mode 100644 index 000000000000..c2c5abd54add --- /dev/null +++ b/code/modules/projectiles/guns/specialist/scout.dm @@ -0,0 +1,83 @@ +//M4RA custom marksman rifle + +/obj/item/weapon/gun/rifle/m4ra_custom + name = "\improper M4RA custom battle rifle" + desc = "This is a further improvement upon the already rock-solid M4RA. Made by the USCM armorers on Chinook station - This variant of the M4RA has a specifically milled magazine well to accept A19 rounds. It sports a light-weight titantium-alloy frame, better responsive to the heavy kick of the tailor-made A19 rounds." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' + icon_state = "m4ra_custom" + item_state = "m4ra_custom" + unacidable = TRUE + indestructible = 1 + accepted_ammo = list( + /obj/item/ammo_magazine/rifle/m4ra, + /obj/item/ammo_magazine/rifle/m4ra/ap, + /obj/item/ammo_magazine/rifle/m4ra/ext, + /obj/item/ammo_magazine/rifle/m4ra/rubber, + /obj/item/ammo_magazine/rifle/m4ra/incendiary, + /obj/item/ammo_magazine/rifle/m4ra/heap, + /obj/item/ammo_magazine/rifle/m4ra/penetrating, + /obj/item/ammo_magazine/rifle/m4ra/custom, + /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary, + /obj/item/ammo_magazine/rifle/m4ra/custom/impact, + + ) + + fire_sound = 'sound/weapons/gun_m4ra.ogg' + reload_sound = 'sound/weapons/handling/l42_reload.ogg' + unload_sound = 'sound/weapons/handling/l42_unload.ogg' + current_mag = /obj/item/ammo_magazine/rifle/m4ra/custom + force = 26 + attachable_allowed = list( + /obj/item/attachable/suppressor, + /obj/item/attachable/bayonet, + /obj/item/attachable/bayonet/upp, + /obj/item/attachable/bayonet/co2, + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/flashlight, + /obj/item/attachable/extended_barrel, + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/bipod, + /obj/item/attachable/attached_gun/shotgun, + /obj/item/attachable/verticalgrip, + /obj/item/attachable/angledgrip, + /obj/item/attachable/lasersight, + /obj/item/attachable/scope, + /obj/item/attachable/scope/mini, + /obj/item/attachable/flashlight/grip, + ) + + flags_gun_features = GUN_AUTO_EJECTOR|GUN_SPECIALIST|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER + map_specific_decoration = TRUE + aim_slowdown = SLOWDOWN_ADS_QUICK + flags_item = TWOHANDED|NO_CRYO_STORE + +/obj/item/weapon/gun/rifle/m4ra_custom/handle_starting_attachment() + ..() + var/obj/item/attachable/m4ra_barrel_custom/integrated = new(src) + integrated.flags_attach_features &= ~ATTACH_REMOVABLE + integrated.Attach(src) + update_attachable(integrated.slot) + + +/obj/item/weapon/gun/rifle/m4ra_custom/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 43, "muzzle_y" = 17,"rail_x" = 23, "rail_y" = 21, "under_x" = 30, "under_y" = 11, "stock_x" = 24, "stock_y" = 13, "special_x" = 37, "special_y" = 16) + +/obj/item/weapon/gun/rifle/m4ra_custom/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_6) + set_burst_amount(BURST_AMOUNT_TIER_2) + set_burst_delay(FIRE_DELAY_TIER_12) + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_2 + scatter = SCATTER_AMOUNT_TIER_8 + burst_scatter_mult = SCATTER_AMOUNT_TIER_8 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_2 + recoil = RECOIL_AMOUNT_TIER_5 + damage_falloff_mult = 0 + +/obj/item/weapon/gun/rifle/m4ra_custom/able_to_fire(mob/living/user) + . = ..() + if (. && istype(user)) //Let's check all that other stuff first. + if(!skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_SCOUT) + to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) + return FALSE diff --git a/code/modules/projectiles/guns/specialist/sniper.dm b/code/modules/projectiles/guns/specialist/sniper.dm new file mode 100644 index 000000000000..bdb0ba02f3ab --- /dev/null +++ b/code/modules/projectiles/guns/specialist/sniper.dm @@ -0,0 +1,511 @@ +//------------------------------------------------------- +//SNIPER RIFLES +//Keyword rifles. They are subtype of rifles, but still contained here as a specialist weapon. + +//Because this parent type did not exist +//Note that this means that snipers will have a slowdown of 3, due to the scope +/obj/item/weapon/gun/rifle/sniper + aim_slowdown = SLOWDOWN_ADS_SPECIALIST + wield_delay = WIELD_DELAY_SLOW + + var/has_aimed_shot = TRUE + var/aiming_time = 1.25 SECONDS + var/aimed_shot_cooldown + var/aimed_shot_cooldown_delay = 2.5 SECONDS + + var/enable_aimed_shot_laser = TRUE + var/sniper_lockon_icon = "sniper_lockon" + var/obj/effect/ebeam/sniper_beam_type = /obj/effect/ebeam/laser + var/sniper_beam_icon = "laser_beam" + var/skill_locked = TRUE + +/obj/item/weapon/gun/rifle/sniper/get_examine_text(mob/user) + . = ..() + if(!has_aimed_shot) + return + . += SPAN_NOTICE("This weapon has an unique ability, Aimed Shot, allowing it to deal great damage after a windup.
        Additionally, the aimed shot can be sped up with a tracking laser, which is enabled by default but may be disabled.") + +/obj/item/weapon/gun/rifle/sniper/Initialize(mapload, spawn_empty) + if(has_aimed_shot) + LAZYADD(actions_types, list(/datum/action/item_action/specialist/aimed_shot, /datum/action/item_action/specialist/toggle_laser)) + return ..() + +/obj/item/weapon/gun/rifle/sniper/able_to_fire(mob/living/user) + . = ..() + if(. && istype(user) && skill_locked) //Let's check all that other stuff first. + if(!skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_SNIPER) + to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) + return 0 + +// Aimed shot ability +/datum/action/item_action/specialist/aimed_shot + ability_primacy = SPEC_PRIMARY_ACTION_2 + var/minimum_aim_distance = 2 + +/datum/action/item_action/specialist/aimed_shot/New(mob/living/user, obj/item/holder) + ..() + name = "Aimed Shot" + button.name = name + button.overlays.Cut() + var/image/IMG = image('icons/mob/hud/actions.dmi', button, "sniper_aim") + button.overlays += IMG + var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item + sniper_rifle.aimed_shot_cooldown = world.time + +/* + ACTIONS SPECIALSIT SNIPER CAN TAKE +*/ +/datum/action/item_action/specialist/aimed_shot/action_activate() + if(!ishuman(owner)) + return + var/mob/living/carbon/human/H = owner + if(H.selected_ability == src) + to_chat(H, "You will no longer use [name] with \ + [H.client && H.client.prefs && H.client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_CLICK ? "middle-click" : "shift-click"].") + button.icon_state = "template" + H.selected_ability = null + else + to_chat(H, "You will now use [name] with \ + [H.client && H.client.prefs && H.client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_CLICK ? "middle-click" : "shift-click"].") + if(H.selected_ability) + H.selected_ability.button.icon_state = "template" + H.selected_ability = null + button.icon_state = "template_on" + H.selected_ability = src + +/datum/action/item_action/specialist/aimed_shot/can_use_action() + var/mob/living/carbon/human/H = owner + if(istype(H) && !H.is_mob_incapacitated() && (holder_item == H.r_hand || holder_item || H.l_hand)) + return TRUE + +/datum/action/item_action/specialist/aimed_shot/proc/use_ability(atom/A) + var/mob/living/carbon/human/human = owner + if(!istype(A, /mob/living)) + return + + var/mob/living/target = A + + if(target.stat == DEAD || target == human) + return + + var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item + if(world.time < sniper_rifle.aimed_shot_cooldown) + return + + if(!check_can_use(target)) + return + + human.face_atom(target) + + ///Add a decisecond to the default 1.5 seconds for each two tiles to hit. + var/distance = round(get_dist(target, human) * 0.5) + var/f_aiming_time = sniper_rifle.aiming_time + distance + + var/aim_multiplier = 1 + var/aiming_buffs + + if(sniper_rifle.enable_aimed_shot_laser) + aim_multiplier = 0.6 + aiming_buffs++ + + if(HAS_TRAIT(target, TRAIT_SPOTTER_LAZED)) + aim_multiplier = 0.5 + aiming_buffs++ + + if(aiming_buffs > 1) + aim_multiplier = 0.35 + + f_aiming_time *= aim_multiplier + + var/image/lockon_icon = image(icon = 'icons/effects/Targeted.dmi', icon_state = sniper_rifle.sniper_lockon_icon) + + var/x_offset = -target.pixel_x + target.base_pixel_x + var/y_offset = (target.icon_size - world.icon_size) * 0.5 - target.pixel_y + target.base_pixel_y + + lockon_icon.pixel_x = x_offset + lockon_icon.pixel_y = y_offset + target.overlays += lockon_icon + + var/image/lockon_direction_icon + if(!sniper_rifle.enable_aimed_shot_laser) + lockon_direction_icon = image(icon = 'icons/effects/Targeted.dmi', icon_state = "[sniper_rifle.sniper_lockon_icon]_direction", dir = get_cardinal_dir(target, human)) + lockon_direction_icon.pixel_x = x_offset + lockon_direction_icon.pixel_y = y_offset + target.overlays += lockon_direction_icon + if(human.client) + playsound_client(human.client, 'sound/weapons/TargetOn.ogg', human, 50) + playsound(target, 'sound/weapons/TargetOn.ogg', 70, FALSE, 8, falloff = 0.4) + + var/datum/beam/laser_beam + if(sniper_rifle.enable_aimed_shot_laser) + laser_beam = target.beam(human, sniper_rifle.sniper_beam_icon, 'icons/effects/beam.dmi', (f_aiming_time + 1 SECONDS), beam_type = sniper_rifle.sniper_beam_type) + laser_beam.visuals.alpha = 0 + animate(laser_beam.visuals, alpha = initial(laser_beam.visuals.alpha), f_aiming_time, easing = SINE_EASING|EASE_OUT) + + ////timer is (f_spotting_time + 1 SECONDS) because sometimes it janks out before the doafter is done. blame sleeps or something + + if(!do_after(human, f_aiming_time, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, NO_BUSY_ICON)) + target.overlays -= lockon_icon + target.overlays -= lockon_direction_icon + qdel(laser_beam) + return + + target.overlays -= lockon_icon + target.overlays -= lockon_direction_icon + qdel(laser_beam) + + if(!check_can_use(target, TRUE) || target.is_dead()) + return + + var/obj/projectile/aimed_proj = sniper_rifle.in_chamber + aimed_proj.projectile_flags |= PROJECTILE_BULLSEYE + aimed_proj.AddComponent(/datum/component/homing_projectile, target, human) + sniper_rifle.Fire(target, human) + +/datum/action/item_action/specialist/aimed_shot/proc/check_can_use(mob/M, cover_lose_focus) + var/mob/living/carbon/human/H = owner + var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item + + if(!can_use_action()) + return FALSE + + if(sniper_rifle != H.r_hand && sniper_rifle != H.l_hand) + to_chat(H, SPAN_WARNING("How do you expect to do this without your sniper rifle?")) + return FALSE + + if(!(sniper_rifle.flags_item & WIELDED)) + to_chat(H, SPAN_WARNING("Your aim is not stable enough with one hand. Use both hands!")) + return FALSE + + if(!sniper_rifle.in_chamber) + to_chat(H, SPAN_WARNING("\The [sniper_rifle] is unloaded!")) + return FALSE + + if(get_dist(H, M) < minimum_aim_distance) + to_chat(H, SPAN_WARNING("\The [M] is too close to get a proper shot!")) + return FALSE + + var/obj/projectile/P = sniper_rifle.in_chamber + // TODO: Make the below logic only occur in certain circumstances. Check goggles, maybe? -Kaga + if(check_shot_is_blocked(H, M, P)) + to_chat(H, SPAN_WARNING("Something is in the way, or you're out of range!")) + if(cover_lose_focus) + to_chat(H, SPAN_WARNING("You lose focus.")) + COOLDOWN_START(sniper_rifle, aimed_shot_cooldown, sniper_rifle.aimed_shot_cooldown_delay * 0.5) + return FALSE + + COOLDOWN_START(sniper_rifle, aimed_shot_cooldown, sniper_rifle.aimed_shot_cooldown_delay) + return TRUE + +/datum/action/item_action/specialist/aimed_shot/proc/check_shot_is_blocked(mob/firer, mob/target, obj/projectile/P) + var/list/turf/path = get_line(firer, target, include_start_atom = FALSE) + if(!path.len || get_dist(firer, target) > P.ammo.max_range) + return TRUE + + var/blocked = FALSE + for(var/turf/T in path) + if(T.density || T.opacity) + blocked = TRUE + break + + for(var/obj/O in T) + if(O.get_projectile_hit_boolean(P)) + blocked = TRUE + break + + for(var/obj/effect/particle_effect/smoke/S in T) + blocked = TRUE + break + + return blocked + +// Snipers may enable or disable their laser tracker at will. +/datum/action/item_action/specialist/toggle_laser + +/datum/action/item_action/specialist/toggle_laser/New(mob/living/user, obj/item/holder) + ..() + name = "Toggle Tracker Laser" + button.name = name + button.overlays.Cut() + var/image/IMG = image('icons/mob/hud/actions.dmi', button, "sniper_toggle_laser_on") + button.overlays += IMG + update_button_icon() + +/datum/action/item_action/specialist/toggle_laser/update_button_icon() + var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item + + var/icon = 'icons/mob/hud/actions.dmi' + var/icon_state = "sniper_toggle_laser_[sniper_rifle.enable_aimed_shot_laser ? "on" : "off"]" + + button.overlays.Cut() + var/image/IMG = image(icon, button, icon_state) + button.overlays += IMG + +/datum/action/item_action/specialist/toggle_laser/can_use_action() + var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item + + if(owner.is_mob_incapacitated()) + return FALSE + + if(owner.get_held_item() != sniper_rifle) + to_chat(owner, SPAN_WARNING("How do you expect to do this without the sniper rifle in your hand?")) + return FALSE + return TRUE + +/datum/action/item_action/specialist/toggle_laser/action_activate() + var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item + + if(owner.get_held_item() != sniper_rifle) + to_chat(owner, SPAN_WARNING("How do you expect to do this without the sniper rifle in your hand?")) + return FALSE + sniper_rifle.toggle_laser(owner, src) + +/obj/item/weapon/gun/rifle/sniper/proc/toggle_laser(mob/user, datum/action/toggling_action) + enable_aimed_shot_laser = !enable_aimed_shot_laser + to_chat(user, SPAN_NOTICE("You flip a switch on \the [src] and [enable_aimed_shot_laser ? "enable" : "disable"] its targeting laser.")) + playsound(user, 'sound/machines/click.ogg', 15, TRUE) + if(!toggling_action) + toggling_action = locate(/datum/action/item_action/specialist/toggle_laser) in actions + if(toggling_action) + toggling_action.update_button_icon() + +/obj/item/weapon/gun/rifle/sniper/verb/toggle_gun_laser() + set category = "Weapons" + set name = "Toggle Laser" + set desc = "Toggles your laser on or off." + set src = usr.contents + + var/obj/item/weapon/gun/rifle/sniper/sniper = get_active_firearm(usr) + if((sniper == src) && has_aimed_shot) + toggle_laser(usr) + +//Pow! Headshot. + +// end of actions sniper spe can take. + +/obj/item/weapon/gun/rifle/sniper/M42A + name = "\improper M42A scoped rifle" + desc = "A heavy sniper rifle manufactured by Armat Systems. It has a scope system and fires armor penetrating rounds out of a 15-round magazine.\n'Peace Through Superior Firepower'" + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' + icon_state = "m42a" + item_state = "m42a" + unacidable = TRUE + indestructible = 1 + + fire_sound = 'sound/weapons/gun_sniper.ogg' + current_mag = /obj/item/ammo_magazine/sniper + force = 12 + wield_delay = WIELD_DELAY_HORRIBLE //Ends up being 1.6 seconds due to scope + zoomdevicename = "scope" + attachable_allowed = list(/obj/item/attachable/bipod) + starting_attachment_types = list(/obj/item/attachable/sniperbarrel) + flags_gun_features = GUN_AUTO_EJECTOR|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER + map_specific_decoration = TRUE + + flags_item = TWOHANDED|NO_CRYO_STORE + +/obj/item/weapon/gun/rifle/sniper/M42A/verb/toggle_scope_zoom_level() + set name = "Toggle Scope Zoom Level" + set category = "Weapons" + set src in usr + var/obj/item/attachable/scope/variable_zoom/S = attachments["rail"] + S.toggle_zoom_level() + +/obj/item/weapon/gun/rifle/sniper/M42A/handle_starting_attachment() + ..() + var/obj/item/attachable/scope/variable_zoom/S = new(src) + S.hidden = TRUE + S.flags_attach_features &= ~ATTACH_REMOVABLE + S.Attach(src) + update_attachable(S.slot) + +/obj/item/weapon/gun/rifle/sniper/M42A/set_bullet_traits() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) + )) + +/obj/item/weapon/gun/rifle/sniper/M42A/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 39, "muzzle_y" = 17,"rail_x" = 12, "rail_y" = 20, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) + + +/obj/item/weapon/gun/rifle/sniper/M42A/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_7*3) + set_burst_amount(BURST_AMOUNT_TIER_1) + accuracy_mult = BASE_ACCURACY_MULT * 3 //you HAVE to be able to hit + scatter = SCATTER_AMOUNT_TIER_8 + damage_mult = BASE_BULLET_DAMAGE_MULT + recoil = RECOIL_AMOUNT_TIER_5 + +/obj/item/weapon/gun/rifle/sniper/XM43E1 + name = "\improper XM43E1 experimental anti-materiel rifle" + desc = "An experimental anti-materiel rifle produced by Armat Systems, recently reacquired from the deep storage of an abandoned prototyping facility. This one in particular is currently undergoing field testing. Chambered in 10x99mm Caseless." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' + icon_state = "xm43e1" + item_state = "xm43e1" + unacidable = TRUE + indestructible = 1 + + fire_sound = 'sound/weapons/sniper_heavy.ogg' + current_mag = /obj/item/ammo_magazine/sniper/anti_materiel //Renamed from anti-tank to align with new identity/description. Other references have been changed as well. -Kaga + force = 12 + wield_delay = WIELD_DELAY_HORRIBLE //Ends up being 1.6 seconds due to scope + zoomdevicename = "scope" + attachable_allowed = list(/obj/item/attachable/bipod) + flags_gun_features = GUN_AUTO_EJECTOR|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER + starting_attachment_types = list(/obj/item/attachable/pmc_sniperbarrel) + sniper_beam_type = /obj/effect/ebeam/laser/intense + sniper_beam_icon = "laser_beam_intense" + sniper_lockon_icon = "sniper_lockon_intense" + +/obj/item/weapon/gun/rifle/sniper/XM43E1/handle_starting_attachment() + ..() + var/obj/item/attachable/scope/variable_zoom/S = new(src) + S.icon_state = "pmcscope" + S.attach_icon = "pmcscope" + S.flags_attach_features &= ~ATTACH_REMOVABLE + S.Attach(src) + update_attachable(S.slot) + + +/obj/item/weapon/gun/rifle/sniper/XM43E1/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 18,"rail_x" = 15, "rail_y" = 19, "under_x" = 20, "under_y" = 15, "stock_x" = 20, "stock_y" = 15) + + +/obj/item/weapon/gun/rifle/sniper/XM43E1/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_6 * 6 )//Big boy damage, but it takes a lot of time to fire a shot. + //Kaga: Adjusted from 56 (Tier 4, 7*8) -> 30 (Tier 6, 5*6) ticks. 95 really wasn't big-boy damage anymore, although I updated it to 125 to remain consistent with the other 10x99mm caliber weapon (M42C). Now takes only twice as long as the M42A. + set_burst_amount(BURST_AMOUNT_TIER_1) + accuracy_mult = BASE_ACCURACY_MULT + 2*HIT_ACCURACY_MULT_TIER_10 //Who coded this like this, and why? It just calculates out to 1+1=2. Leaving a note here to check back later. + scatter = SCATTER_AMOUNT_TIER_10 + damage_mult = BASE_BULLET_DAMAGE_MULT + recoil = RECOIL_AMOUNT_TIER_1 + +/obj/item/weapon/gun/rifle/sniper/XM43E1/set_bullet_traits() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff), + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating), + BULLET_TRAIT_ENTRY_ID("turfs", /datum/element/bullet_trait_damage_boost, 11, GLOB.damage_boost_turfs), + BULLET_TRAIT_ENTRY_ID("breaching", /datum/element/bullet_trait_damage_boost, 11, GLOB.damage_boost_breaching), + //At 1375 per shot it'll take 1 shot to break resin turfs, and a full mag of 8 to break reinforced walls. + BULLET_TRAIT_ENTRY_ID("pylons", /datum/element/bullet_trait_damage_boost, 6, GLOB.damage_boost_pylons) + //At 750 per shot it'll take 3 to break a Pylon (1800 HP). No Damage Boost vs other xeno structures yet, those will require a whole new list w/ the damage_boost trait. + )) + +/* +//Disabled until an identity is better defined. -Kaga +/obj/item/weapon/gun/rifle/sniper/M42B/afterattack(atom/target, mob/user, flag) + if(able_to_fire(user)) + if(get_dist(target,user) <= 8) + to_chat(user, SPAN_WARNING("The [src.name] beeps, indicating that the target is within an unsafe proximity to the rifle, refusing to fire.")) + return + else ..() +*/ + +/obj/item/weapon/gun/rifle/sniper/elite + name = "\improper M42C anti-tank sniper rifle" + desc = "A high-end superheavy magrail sniper rifle from Weyland-Armat chambered in a specialized variant of the heaviest ammo available, 10x99mm Caseless. This weapon requires a specialized armor rig for recoil mitigation in order to be used effectively." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/wy.dmi' + icon_state = "m42c" + item_state = "m42c" //NEEDS A TWOHANDED STATE + + fire_sound = 'sound/weapons/sniper_heavy.ogg' + current_mag = /obj/item/ammo_magazine/sniper/elite + force = 17 + zoomdevicename = "scope" + flags_gun_features = GUN_AUTO_EJECTOR|GUN_WY_RESTRICTED|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER + starting_attachment_types = list(/obj/item/attachable/pmc_sniperbarrel) + sniper_beam_type = /obj/effect/ebeam/laser/intense + sniper_beam_icon = "laser_beam_intense" + sniper_lockon_icon = "sniper_lockon_intense" + +/obj/item/weapon/gun/rifle/sniper/elite/handle_starting_attachment() + ..() + var/obj/item/attachable/scope/S = new(src) + S.icon_state = "pmcscope" + S.attach_icon = "pmcscope" + S.flags_attach_features &= ~ATTACH_REMOVABLE + S.Attach(src) + update_attachable(S.slot) + +/obj/item/weapon/gun/rifle/sniper/elite/set_bullet_traits() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) + )) + +/obj/item/weapon/gun/rifle/sniper/elite/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 18,"rail_x" = 15, "rail_y" = 19, "under_x" = 20, "under_y" = 15, "stock_x" = 20, "stock_y" = 15) + +/obj/item/weapon/gun/rifle/sniper/elite/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_6*5) + set_burst_amount(BURST_AMOUNT_TIER_1) + accuracy_mult = BASE_ACCURACY_MULT * 3 //Was previously BAM + HAMT10, similar to the XM42B, and coming out to 1.5? Changed to be consistent with M42A. -Kaga + scatter = SCATTER_AMOUNT_TIER_10 //Was previously 8, changed to be consistent with the XM42B. + damage_mult = BASE_BULLET_DAMAGE_MULT + recoil = RECOIL_AMOUNT_TIER_1 + +/obj/item/weapon/gun/rifle/sniper/elite/simulate_recoil(total_recoil = 0, mob/user, atom/target) + . = ..() + if(.) + var/mob/living/carbon/human/PMC_sniper = user + if(PMC_sniper.body_position == STANDING_UP && !istype(PMC_sniper.wear_suit,/obj/item/clothing/suit/storage/marine/smartgunner/veteran/pmc) && !istype(PMC_sniper.wear_suit,/obj/item/clothing/suit/storage/marine/veteran)) + PMC_sniper.visible_message(SPAN_WARNING("[PMC_sniper] is blown backwards from the recoil of the [src.name]!"),SPAN_HIGHDANGER("You are knocked prone by the blowback!")) + step(PMC_sniper,turn(PMC_sniper.dir,180)) + PMC_sniper.KnockDown(5) + PMC_sniper.Stun(5) + +//Type 88 //Based on the actual Dragunov DMR rifle. + +/obj/item/weapon/gun/rifle/sniper/svd + name = "\improper Type 88 designated marksman rifle" + desc = "The standard issue DMR of the UPP, the Type 88 is sought after by competitive shooters and terrorists alike for its high degree of accuracy. Typically loaded with armor-piercing 7.62x54mmR rounds in a 12 round magazine." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "type88" + item_state = "type88" + + fire_sound = 'sound/weapons/gun_mg.ogg' + current_mag = /obj/item/ammo_magazine/sniper/svd + attachable_allowed = list( + //Muzzle, + /obj/item/attachable/bayonet, + /obj/item/attachable/bayonet/upp_replica, + /obj/item/attachable/bayonet/upp, + //Under, + /obj/item/attachable/verticalgrip, + /obj/item/attachable/bipod, + //Integrated, + /obj/item/attachable/type88_barrel, + ) + has_aimed_shot = FALSE + flags_gun_features = GUN_AUTO_EJECTOR|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER|GUN_CAN_POINTBLANK + starting_attachment_types = list() + sniper_beam_type = null + skill_locked = FALSE + +/obj/item/weapon/gun/rifle/sniper/svd/handle_starting_attachment() + ..() + var/obj/item/attachable/attachie = new /obj/item/attachable/type88_barrel(src) + attachie.flags_attach_features &= ~ATTACH_REMOVABLE + attachie.Attach(src) + update_attachable(attachie.slot) + + var/obj/item/attachable/scope/variable_zoom/integrated/type88sight = new(src) + type88sight.flags_attach_features &= ~ATTACH_REMOVABLE + type88sight.hidden = TRUE + type88sight.Attach(src) + update_attachable(type88sight.slot) + +/obj/item/weapon/gun/rifle/sniper/svd/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 17,"rail_x" = 13, "rail_y" = 19, "under_x" = 26, "under_y" = 14, "stock_x" = 24, "stock_y" = 13, "special_x" = 39, "special_y" = 18) + +/obj/item/weapon/gun/rifle/sniper/svd/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_6) + set_burst_amount(BURST_AMOUNT_TIER_1) + accuracy_mult = BASE_ACCURACY_MULT * 3 + scatter = SCATTER_AMOUNT_TIER_8 + damage_mult = BASE_BULLET_DAMAGE_MULT + recoil = RECOIL_AMOUNT_TIER_5 + damage_falloff_mult = 0 diff --git a/code/modules/projectiles/homing_projectile_component.dm b/code/modules/projectiles/homing_projectile_component.dm index 92e803de10b1..8fd36fd67f31 100644 --- a/code/modules/projectiles/homing_projectile_component.dm +++ b/code/modules/projectiles/homing_projectile_component.dm @@ -3,7 +3,7 @@ var/atom/homing_target /datum/component/homing_projectile/Initialize(atom/homing_target, mob/shooter) - if(!istype(parent, /obj/item/projectile)) + if(!istype(parent, /obj/projectile)) return COMPONENT_INCOMPATIBLE if(isliving(homing_target)) @@ -13,7 +13,7 @@ if(shooter && ishuman(homing_target)) // Don't track friendlies var/mob/living/carbon/human/human_target = homing_target - var/obj/item/projectile/projectile = parent + var/obj/projectile/projectile = parent if(SEND_SIGNAL(parent, COMSIG_BULLET_CHECK_MOB_SKIPPING, human_target) & COMPONENT_SKIP_MOB\ || projectile.runtime_iff_group && human_target.get_target_lock(projectile.runtime_iff_group)\ ) @@ -33,7 +33,7 @@ return ..() /datum/component/homing_projectile/proc/terminal_retarget() - var/obj/item/projectile/projectile = parent + var/obj/projectile/projectile = parent var/turf/homing_turf = get_turf(homing_target) projectile.speed *= 2 // Double speed to ensure hitting next tick despite eventual movement projectile.retarget(homing_turf, keep_angle = FALSE) diff --git a/code/modules/projectiles/magazines/flamer.dm b/code/modules/projectiles/magazines/flamer.dm index 782b6bfe8910..7fba325177c6 100644 --- a/code/modules/projectiles/magazines/flamer.dm +++ b/code/modules/projectiles/magazines/flamer.dm @@ -58,6 +58,7 @@ reagents.clear_reagents() + playsound(loc, 'sound/effects/refill.ogg', 25, 1, 3) to_chat(usr, SPAN_NOTICE("You empty out [src]")) update_icon() @@ -71,22 +72,21 @@ G.update_icon() /obj/item/ammo_magazine/flamer_tank/afterattack(obj/target, mob/user , flag) //refuel at fueltanks when we run out of ammo. - if(!istype(target, /obj/structure/reagent_dispensers/fueltank) && !istype(target, /obj/item/tool/weldpack) && !istype(target, /obj/item/storage/backpack/marine/engineerpack)) - return ..() if(get_dist(user,target) > 1) return ..() + if(!istype(target, /obj/structure/reagent_dispensers/fueltank) && !istype(target, /obj/item/tool/weldpack) && !istype(target, /obj/item/storage/backpack/marine/engineerpack)) + return ..() - var/obj/O = target - if(!O.reagents || O.reagents.reagent_list.len < 1) - to_chat(user, SPAN_WARNING("[O] is empty!")) + if(!target.reagents || target.reagents.reagent_list.len < 1) + to_chat(user, SPAN_WARNING("[target] is empty!")) return if(!reagents) create_reagents(max_rounds) - var/datum/reagent/to_add = O.reagents.reagent_list[1] + var/datum/reagent/to_add = target.reagents.reagent_list[1] - if(!istype(to_add) || (length(reagents.reagent_list) && flamer_chem != to_add.id) || length(O.reagents.reagent_list) > 1) + if(!istype(to_add) || (length(reagents.reagent_list) && flamer_chem != to_add.id) || length(target.reagents.reagent_list) > 1) to_chat(user, SPAN_WARNING("You can't mix fuel mixtures!")) return @@ -94,12 +94,13 @@ to_chat(user, SPAN_WARNING("This chemical is not potent enough to be used in a flamethrower!")) return - var/fuel_amt_to_remove = Clamp(to_add.volume, 0, max_rounds - reagents.get_reagent_amount(to_add.id)) + var/fuel_amt_to_remove = clamp(to_add.volume, 0, max_rounds - reagents.get_reagent_amount(to_add.id)) if(!fuel_amt_to_remove) - to_chat(user, SPAN_WARNING("[O] is empty!")) + if(!max_rounds) + to_chat(user, SPAN_WARNING("[target] is empty!")) return - O.reagents.remove_reagent(to_add.id, fuel_amt_to_remove) + target.reagents.remove_reagent(to_add.id, fuel_amt_to_remove) reagents.add_reagent(to_add.id, fuel_amt_to_remove) playsound(loc, 'sound/effects/refill.ogg', 25, 1, 3) caliber = to_add.name @@ -170,7 +171,7 @@ if(usr.get_active_hand() != src) return - var/set_pressure = Clamp(tgui_input_number(usr, "Change fuel pressure to: (max: [max_pressure])", "Fuel pressure", fuel_pressure, 10, 1), 1 ,max_pressure) + var/set_pressure = clamp(tgui_input_number(usr, "Change fuel pressure to: (max: [max_pressure])", "Fuel pressure", fuel_pressure, 10, 1), 1 ,max_pressure) if(!set_pressure) to_chat(usr, SPAN_WARNING("You can't find that setting on the regulator!")) else diff --git a/code/modules/projectiles/magazines/misc.dm b/code/modules/projectiles/magazines/misc.dm index d224498ebceb..87568c953211 100644 --- a/code/modules/projectiles/magazines/misc.dm +++ b/code/modules/projectiles/magazines/misc.dm @@ -6,7 +6,7 @@ name = "rotating ammo drum (7.62x51mm)" desc = "A huge ammo drum for a huge gun." caliber = "7.62x51mm" - icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/event.dmi' icon_state = "painless" //PLACEHOLDER matter = list("metal" = 10000) @@ -31,6 +31,19 @@ reload_delay = 8 gun_type = /obj/item/weapon/gun/m60 +/obj/item/ammo_magazine/pkp + name = "QYJ-72 ammo box (7.62x54mmR)" + desc = "A 250 round box for the UPP's standard GPMG, the QYJ-72. Chambered in 7.62x54mmR." + caliber = "7.62x54mmR" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon_state = "qjy72" + + matter = list("metal" = 10000) + default_ammo = /datum/ammo/bullet/pkp + max_rounds = 250 + reload_delay = 12 + gun_type = /obj/item/weapon/gun/pkp + //rocket launchers /obj/item/ammo_magazine/rifle/grenadespawner diff --git a/code/modules/projectiles/magazines/pistols.dm b/code/modules/projectiles/magazines/pistols.dm index 16090d9f2b81..11e6fe9dbfeb 100644 --- a/code/modules/projectiles/magazines/pistols.dm +++ b/code/modules/projectiles/magazines/pistols.dm @@ -8,7 +8,7 @@ caliber = "9mm" icon = 'icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi' icon_state = "m4a3" - max_rounds = 9 + max_rounds = 12 w_class = SIZE_SMALL default_ammo = /datum/ammo/bullet/pistol gun_type = /obj/item/weapon/gun/pistol/m4a3 @@ -55,7 +55,7 @@ default_ammo = /datum/ammo/bullet/pistol/heavy caliber = ".45" icon_state = "m4a345"//rename later - max_rounds = 14 + max_rounds = 7 gun_type = /obj/item/weapon/gun/pistol/m1911 @@ -105,6 +105,19 @@ default_ammo = /datum/ammo/bullet/pistol/rubber ammo_band_color = AMMO_BAND_COLOR_RUBBER +//------------------------------------------------------- +//ES-4 + +/obj/item/ammo_magazine/pistol/es4 + name = "\improper ES-4 stun magazine (9mm)" + default_ammo = /datum/ammo/bullet/pistol/rubber/stun + caliber = "9mm" + desc = "Holds 19 rounds of specialized Conductive 9mm. Electrostatic propulsion in the ES-4 functions by propelling an cV9mm round, at a proportionally slower velocity to maintain a higher kinetic energy transfer rate. All this turns a penetrative round into a less-than-lethal round." + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/wy.dmi' + icon_state = "es4" + max_rounds = 19 + gun_type = /obj/item/weapon/gun/pistol/es4 + //------------------------------------------------------- //VP78 @@ -179,21 +192,53 @@ ammo_band_color = AMMO_BAND_COLOR_AP //------------------------------------------------------- -//MAUSER MERC PISTOL //Inspired by the Makarov. +//Type 31 pistol. //A makarov -/obj/item/ammo_magazine/pistol/c99 - name = "\improper PK-9 magazine (.380)" +/obj/item/ammo_magazine/pistol/np92 + name = "\improper NP92 magazine (9x18mm Makarov)" default_ammo = /datum/ammo/bullet/pistol - caliber = ".380" + caliber = "9x18mm Makarov" icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' - icon_state = "pk-9" - max_rounds = 8 - gun_type = /obj/item/weapon/gun/pistol/c99 + icon_state = "np92mag" + max_rounds = 12 + gun_type = /obj/item/weapon/gun/pistol/np92 -/obj/item/ammo_magazine/pistol/c99/tranq - name = "\improper PK-9 tranquilizer magazine (.380)" +/obj/item/ammo_magazine/pistol/np92/suppressed + name = "\improper NPZ92 magazine (9x18mm Makarov)" + default_ammo = /datum/ammo/bullet/pistol + caliber = "9x18mm Makarov" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon_state = "npz92mag" + max_rounds = 12 + +/obj/item/ammo_magazine/pistol/np92/tranq + name = "\improper NPZ92 tranq magazine (9x18mm Makarov)" default_ammo = /datum/ammo/bullet/pistol/tranq - icon_state = "pk-9_tranq" + caliber = "9x18mm Makarov" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon_state = "npz92tranqmag" + max_rounds = 12 + +//------------------------------------------------------- +//Type 73 pistol. //A TT + +/obj/item/ammo_magazine/pistol/t73 + name = "\improper Type 73 magazine (7.62x25mm Tokarev)" + default_ammo = /datum/ammo/bullet/pistol/heavy + caliber = "7.62x25mm Tokarev" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon_state = "ttmag" + max_rounds = 9 + gun_type = /obj/item/weapon/gun/pistol/t73 + +/obj/item/ammo_magazine/pistol/t73_impact + name = "\improper High Impact Type 74 magazine (7.62x25mm Tokarev)" + default_ammo = /datum/ammo/bullet/pistol/heavy/super/highimpact/upp + caliber = "7.62x25mm Tokarev" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon_state = "ttmag_impact" + max_rounds = 9 + gun_type = /obj/item/weapon/gun/pistol/t73/leader //------------------------------------------------------- //KT-42 //Inspired by the .44 Auto Mag pistol @@ -303,7 +348,7 @@ It is a modified Beretta 93R, and can fire three-round burst or single fire. Whe name = "\improper CZ-81 20-round magazine (.32ACP)" desc = "A .32ACP caliber magazine for the CZ-81." caliber = ".32ACP" - icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi' icon_state = "skorpion" //PLACEHOLDER gun_type = /obj/item/weapon/gun/pistol/skorpion max_rounds = 20 diff --git a/code/modules/projectiles/magazines/revolvers.dm b/code/modules/projectiles/magazines/revolvers.dm index c9803fdf5671..07fc75a50fad 100644 --- a/code/modules/projectiles/magazines/revolvers.dm +++ b/code/modules/projectiles/magazines/revolvers.dm @@ -55,18 +55,18 @@ caliber = ".44 sabot" /obj/item/ammo_magazine/revolver/upp - name = "\improper N-Y speed loader (7.62x38mmR)" - default_ammo = /datum/ammo/bullet/revolver/nagant + name = "\improper ZHNK-72 speed loader (7.62x38mmR)" + default_ammo = /datum/ammo/bullet/revolver/upp caliber = "7.62x38mmR" icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' - icon_state = "ny762" - gun_type = /obj/item/weapon/gun/revolver/nagant + icon_state = "zhnk72loader" + gun_type = /obj/item/weapon/gun/revolver/upp /obj/item/ammo_magazine/revolver/upp/shrapnel - name = "\improper N-Y shrapnel-shot speed loader (7.62x38mmR)" + name = "\improper ZHNK-72 shrapnel-shot speed loader (7.62x38mmR)" desc = "This speedloader contains seven 'shrapnel-shot' bullets, cheap recycled casings picked up off the ground and refilled with gunpowder and random scrap metal. Acts similarly to flechette." - default_ammo = /datum/ammo/bullet/revolver/nagant/shrapnel - icon_state = "ny762_shrapnel" + default_ammo = /datum/ammo/bullet/revolver/upp/shrapnel + icon_state = "zhnk72loader_shrapnel" /obj/item/ammo_magazine/revolver/small name = "\improper S&W speed loader (.38)" @@ -167,13 +167,13 @@ //RUSSIAN REVOLVER //Based on the 7.62mm Russian revolvers. /obj/item/ammo_magazine/internal/revolver/upp - default_ammo = /datum/ammo/bullet/revolver/nagant + default_ammo = /datum/ammo/bullet/revolver/upp caliber = "7.62x38mmR" max_rounds = 7 - gun_type = /obj/item/weapon/gun/revolver/nagant + gun_type = /obj/item/weapon/gun/revolver/upp /obj/item/ammo_magazine/internal/revolver/upp/shrapnel - default_ammo = /datum/ammo/bullet/revolver/nagant/shrapnel + default_ammo = /datum/ammo/bullet/revolver/upp/shrapnel //------------------------------------------------------- diff --git a/code/modules/projectiles/magazines/rifles.dm b/code/modules/projectiles/magazines/rifles.dm index ca008c2d1376..bfc411a2ea63 100644 --- a/code/modules/projectiles/magazines/rifles.dm +++ b/code/modules/projectiles/magazines/rifles.dm @@ -263,7 +263,7 @@ icon_state = "m41ae2" max_rounds = 300 gun_type = /obj/item/weapon/gun/rifle/lmg - flags_magazine = AMMUNITION_CANNOT_REMOVE_BULLETS|AMMUNITION_REFILLABLE + flags_magazine = AMMUNITION_CANNOT_REMOVE_BULLETS|AMMUNITION_REFILLABLE|AMMUNITION_SLAP_TRANSFER ammo_band_icon = "+m41ae2_band" ammo_band_icon_empty = "+m41ae2_band_e" @@ -290,7 +290,9 @@ desc = "A 5.45x39mm high-capacity casket magazine for the Type 71 rifle." caliber = "5.45x39mm" icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' - icon_state = "type_71" + icon_state = "type71" + ammo_band_icon = "+type71_band" + ammo_band_icon_empty = "+type71_band_e" default_ammo = /datum/ammo/bullet/rifle/type71 max_rounds = 60 gun_type = /obj/item/weapon/gun/rifle/type71 @@ -298,16 +300,14 @@ /obj/item/ammo_magazine/rifle/type71/ap name = "\improper Type 71 AP magazine (5.45x39mm)" desc = "A 5.45x39mm high-capacity casket magazine containing armor piercing rounds for the Type 71 rifle." - icon_state = "type_71_ap" default_ammo = /datum/ammo/bullet/rifle/type71/ap - bonus_overlay = "type71_ap" + ammo_band_color = AMMO_BAND_COLOR_AP /obj/item/ammo_magazine/rifle/type71/heap name = "\improper Type 71 HEAP magazine (5.45x39mm)" desc = "A 5.45x39mm high-capacity casket magazine containing the standard high explosive armor piercing rounds for the Type 71 rifle." - icon_state = "type_71_heap" default_ammo = /datum/ammo/bullet/rifle/type71/heap - bonus_overlay = "type71_heap" + ammo_band_color = AMMO_BAND_COLOR_HEAP //------------------------------------------------------- //L42A Battle Rifle @@ -445,3 +445,71 @@ max_rounds = 10 gun_type = /obj/item/weapon/gun/boltaction w_class = SIZE_SMALL + +/obj/item/ammo_magazine/rifle/boltaction/vulture + name = "\improper M707 \"Vulture\" magazine (20x102mm)" + desc = "A magazine for the M707 \"Vulture\" anti-matieriel rifle. Contains up to 4 massively oversized rounds." + caliber = "20x102mm" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi' + icon_state = "vulture" + handful_state = "vulture_bullet" + default_ammo = /datum/ammo/bullet/sniper/anti_materiel/vulture + max_rounds = 4 + gun_type = /obj/item/weapon/gun/boltaction/vulture + w_class = SIZE_MEDIUM // maybe small? This shit's >4 inches long mind you + +//=ROYAL MARINES=\\ + +/obj/item/ammo_magazine/rifle/rmc_f90 + name = "\improper F903 magazine (10x24mm)" + desc = "A 10mm assault rifle magazine used by the royal marines." + caliber = "10x24mm" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/twe_ammo.dmi' + icon_state = "aug" + item_state = "aug" + w_class = SIZE_MEDIUM + default_ammo = /datum/ammo/bullet/rifle + max_rounds = 30 + gun_type = /obj/item/weapon/gun/rifle/rmc_f90 + ammo_band_icon = "+aug_band" + ammo_band_icon_empty = "+aug_band_e" + +/obj/item/ammo_magazine/rifle/rmc_f90/marksman + name = "\improper F903A1 Marksman magazine (10x24mm)" + desc = "A 10mm armor-piercing assault rifle magazine used by the royal marines." + icon_state = "aug_dmr" + item_state = "aug_dmr" + default_ammo = /datum/ammo/bullet/rifle/ap + gun_type = /obj/item/weapon/gun/rifle/rmc_f90/scope + max_rounds = 20 + ammo_band_color = AMMO_BAND_COLOR_AP + ammo_band_icon = "+aug_dmr_band" + ammo_band_icon_empty = "+aug_dmr_band_e" + +/obj/item/ammo_magazine/rifle/rmc_f90/heap + name = "\improper F903 HEAP magazine (10x24mm)" + desc = "A 10mm armor piercing high explosive assault rifle magazine used by the royal marines." + default_ammo = /datum/ammo/bullet/rifle/heap + ammo_band_color = AMMO_BAND_COLOR_HEAP + +/obj/item/ammo_magazine/rifle/rmc_f90/marksman/heap + name = "\improper F903A1 Marksman magazine (10x24mm)" + desc = "A 10mm armor piercing high explosive assault rifle magazine used by the royal marines." + icon_state = "aug_dmr" + item_state = "aug_dmr" + default_ammo = /datum/ammo/bullet/rifle/heap + ammo_band_color = AMMO_BAND_COLOR_HEAP + +//-------------------------------------------------------- +//XM51 BREACHING SHOTGUN + +/obj/item/ammo_magazine/rifle/xm51 + name = "\improper XM51 magazine (16g)" + desc = "A 16 gauge pump-action shotgun magazine." + icon_state = "xm51" + caliber = "16g" + w_class = SIZE_MEDIUM + default_ammo = /datum/ammo/bullet/shotgun/light/breaching + max_rounds = 12 + gun_type = /obj/item/weapon/gun/rifle/xm51 + transfer_handful_amount = 6 diff --git a/code/modules/projectiles/magazines/shotguns.dm b/code/modules/projectiles/magazines/shotguns.dm index 24e482549dac..61070690e9ac 100644 --- a/code/modules/projectiles/magazines/shotguns.dm +++ b/code/modules/projectiles/magazines/shotguns.dm @@ -8,11 +8,11 @@ you're looking back on the different shotgun projectiles available. In short of one type of shotgun ammo, but I think it helps in referencing it. ~N */ -var/list/shotgun_boxes_12g = list( +GLOBAL_LIST_INIT(shotgun_boxes_12g, list( /obj/item/ammo_magazine/shotgun/buckshot, /obj/item/ammo_magazine/shotgun/flechette, /obj/item/ammo_magazine/shotgun/slugs - ) + )) /obj/item/ammo_magazine/shotgun name = "box of shotgun slugs" @@ -46,6 +46,14 @@ var/list/shotgun_boxes_12g = list( default_ammo = /datum/ammo/bullet/shotgun/incendiary handful_state = "incendiary_slug" +/obj/item/ammo_magazine/shotgun/incendiarybuck + name = "box of incendiary buckshots" + desc = "A box filled with self-detonating buckshot incendiary shotgun rounds. 12 Gauge." + icon_state = "incendiarybuck" + item_state = "incendiarybuck" + default_ammo = /datum/ammo/bullet/shotgun/buckshot/incendiary + handful_state = "incen_buckshot" + /obj/item/ammo_magazine/shotgun/buckshot name = "box of buckshot shells" desc = "A box filled with buckshot spread shotgun shells. 12 Gauge." @@ -78,6 +86,18 @@ var/list/shotgun_boxes_12g = list( default_ammo = /datum/ammo/bullet/shotgun/beanbag handful_state = "beanbag_slug" caliber = "20g" + +/obj/item/ammo_magazine/shotgun/light/breaching + name = "box of breaching shells" + desc = "A box filled with breaching shotgun shells. 16 Gauge." + icon_state = "breaching" + item_state = "breaching" + max_rounds = 30 //6 handfuls of 6 shells, 12 rounds in a XM51 mag + transfer_handful_amount = 6 + default_ammo = /datum/ammo/bullet/shotgun/light/breaching + handful_state = "breaching_shell" + caliber = "16g" + //------------------------------------------------------- /* @@ -151,21 +171,21 @@ also doesn't really matter. You can only reload them with handfuls. Handfuls of shotgun rounds. For spawning directly on mobs in roundstart, ERTs, etc */ -var/list/shotgun_handfuls_8g = list( +GLOBAL_LIST_INIT(shotgun_handfuls_8g, list( /obj/item/ammo_magazine/handful/shotgun/heavy/slug, /obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, /obj/item/ammo_magazine/handful/shotgun/heavy/flechette, /obj/item/ammo_magazine/handful/shotgun/heavy/dragonsbreath - ) + )) -var/list/shotgun_handfuls_12g = list( +GLOBAL_LIST_INIT(shotgun_handfuls_12g, list( /obj/item/ammo_magazine/handful/shotgun/slug, /obj/item/ammo_magazine/handful/shotgun/buckshot, /obj/item/ammo_magazine/handful/shotgun/flechette, /obj/item/ammo_magazine/handful/shotgun/incendiary, /obj/item/ammo_magazine/handful/shotgun/buckshot/incendiary, /obj/item/ammo_magazine/handful/shotgun/beanbag - ) + )) /obj/item/ammo_magazine/handful/shotgun name = "handful of shotgun slugs (12g)" @@ -230,7 +250,6 @@ var/list/shotgun_handfuls_12g = list( name = "handful of beanbag slugs (20g)" caliber = "20g" - /obj/item/ammo_magazine/handful/shotgun/heavy name = "handful of heavy shotgun slugs (8g)" icon_state = "heavy_slug_4" @@ -269,6 +288,17 @@ var/list/shotgun_handfuls_12g = list( handful_state = "heavy_beanbag" default_ammo = /datum/ammo/bullet/shotgun/heavy/beanbag +/obj/item/ammo_magazine/handful/shotgun/light/breaching + name = "handful of breaching shells (16g)" + icon_state = "breaching_shell_6" + handful_state = "breaching_shell" + max_rounds = 6 //XM51 magazines are 12 rounds total, two handfuls should be enough to reload a mag + current_rounds = 6 + transfer_handful_amount = 6 + default_ammo = /datum/ammo/bullet/shotgun/light/breaching + caliber = "16g" + gun_type = /obj/item/weapon/gun/rifle/xm51 + /obj/item/ammo_magazine/handful/shotgun/twobore name = "handful of shotgun slugs (2 bore)" icon_state = "twobore_3" diff --git a/code/modules/projectiles/magazines/smgs.dm b/code/modules/projectiles/magazines/smgs.dm index 333d47e19931..b89aee06f6be 100644 --- a/code/modules/projectiles/magazines/smgs.dm +++ b/code/modules/projectiles/magazines/smgs.dm @@ -150,6 +150,44 @@ #undef PPSH_STICK_MAGAZINE_JAM_CHANCE #undef PPSH_DRUM_MAGAZINE_JAM_CHANCE +//------------------------------------------------------- +//Type-19, based on the PPS-43 + +/obj/item/ammo_magazine/smg/pps43 + name = "\improper Type-19 stick magazine (7.62x25mm)" + desc = "A stick magazine for the Type-19 submachinegun." + caliber = "7.62x25mm" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon_state = "insasu_stickmag" + bonus_overlay = "insasu_stickmag_overlay" + max_rounds = 35 + gun_type = /obj/item/weapon/gun/smg/pps43 + default_ammo = /datum/ammo/bullet/smg/pps43 + var/bonus_mag_aim_slowdown = 0 + var/bonus_mag_wield_delay = 0 + + +/obj/item/ammo_magazine/smg/pps43/extended + name = "\improper Type-19 drum magazine (7.62x25mm)" + desc = "A drum magazine for the Type-19 submachinegun." + icon_state = "insasu_drum" + bonus_overlay = "insasu_drum_overlay" + max_rounds = 71 + w_class = SIZE_MEDIUM + bonus_mag_aim_slowdown = SLOWDOWN_ADS_QUICK_MINUS + bonus_mag_wield_delay = WIELD_DELAY_VERY_FAST +//------------------------------------------------------- +//Type 64 SMG, based on the PP Bizon. + +/obj/item/ammo_magazine/smg/bizon + name = "\improper Type 64 Helical Magazine (7.62x19mm)" + desc = "A 64 round magazine for the Type 64 submachinegun, the standard SMG of the UPP armed forces." + caliber = "7.62x19mm" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon_state = "type64mag" + max_rounds = 64 + gun_type = /obj/item/weapon/gun/smg/bizon + //------------------------------------------------------- //GENERIC UZI //Based on the uzi submachinegun, of course. diff --git a/code/modules/projectiles/magazines/specialist.dm b/code/modules/projectiles/magazines/specialist.dm index 23b540202c40..761e77305254 100644 --- a/code/modules/projectiles/magazines/specialist.dm +++ b/code/modules/projectiles/magazines/specialist.dm @@ -27,14 +27,14 @@ default_ammo = /datum/ammo/bullet/sniper/flak ammo_band_color = AMMO_BAND_COLOR_IMPACT -//M42B Magazine +//XM43E1 Magazine /obj/item/ammo_magazine/sniper/anti_materiel - name = "\improper XM42B marksman magazine (10x99mm)" + name = "\improper XM43E1 marksman magazine (10x99mm)" desc = "A magazine of caseless 10x99mm anti-materiel rounds." max_rounds = 8 caliber = "10x99mm" default_ammo = /datum/ammo/bullet/sniper/anti_materiel - gun_type = /obj/item/weapon/gun/rifle/sniper/XM42B + gun_type = /obj/item/weapon/gun/rifle/sniper/XM43E1 //M42C magazine @@ -48,16 +48,16 @@ max_rounds = 6 -//SVD //Based on the actual Dragunov designated marksman rifle. +//Type 88 //Based on the actual Dragunov designated marksman rifle. /obj/item/ammo_magazine/sniper/svd - name = "\improper SVD magazine (7.62x54mmR)" - desc = "A large caliber magazine for the SVD designated marksman rifle." + name = "\improper Type-88 Magazine (7.62x54mmR)" + desc = "A large caliber magazine for the Type-88 designated marksman rifle." caliber = "7.62x54mmR" icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' - icon_state = "svd" - default_ammo = /datum/ammo/bullet/sniper/crude - max_rounds = 10 + icon_state = "type88mag" + default_ammo = /datum/ammo/bullet/sniper/upp + max_rounds = 12 gun_type = /obj/item/weapon/gun/rifle/sniper/svd //M4RA magazines @@ -107,6 +107,12 @@ default_ammo = /datum/ammo/bullet/smartgun/dirty gun_type = /obj/item/weapon/gun/smartgun/dirty +/obj/item/ammo_magazine/smartgun/holo_targetting + name = "holotargetting smartgun drum" + desc = "Holotargetting rounds for use in the royal marines commando L56A2 smartgun." + icon_state = "m56_drum" + default_ammo = /datum/ammo/bullet/smartgun/holo_target + gun_type = /obj/item/weapon/gun/smartgun/rmc //------------------------------------------------------- //Flare gun. Close enough? /obj/item/ammo_magazine/internal/flare @@ -331,3 +337,47 @@ default_ammo = /datum/ammo/rocket/ap/anti_tank gun_type = /obj/item/weapon/gun/launcher/rocket/anti_tank reload_delay = 100 + + +//------------------------------------------------------- +//UPP Rockets + +/obj/item/ammo_magazine/rocket/upp + name = "\improper HJRA-12 High-Explosive Rocket" + desc = "A rocket for the UPP standard-issue HJRA-12 Handheld Anti-Tank Grenade Launcher. This one is a standard High-Explosive rocket for anti-personal or light-vehicle use." + caliber = "88mm" + icon_state = "hjra_explosive" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + + max_rounds = 1 + default_ammo = /datum/ammo/rocket + gun_type = /obj/item/weapon/gun/launcher/rocket/upp + reload_delay = 85 + +/obj/item/ammo_magazine/rocket/upp/update_icon() + if(current_rounds <= 0) + qdel(src) + else + icon_state = initial(icon_state) + +/obj/item/ammo_magazine/rocket/upp/at + name = "\improper HJRA-12 Anti-Tank Rocket" + desc = "A rocket for the UPP standard-issue HJRA-12 Handheld Anti-Tank Grenade Launcher. This one is a standard Anti-Tank rocket designed to disable or destroy hostile vehicles." + caliber = "88mm" + icon_state = "hjra_tank" + + max_rounds = 1 + default_ammo = /datum/ammo/rocket/ap/anti_tank + gun_type = /obj/item/weapon/gun/launcher/rocket/upp + reload_delay = 85 + +/obj/item/ammo_magazine/rocket/upp/incen + name = "\improper HJRA-12 Extreme-Intensity Incendiary Rocket" + desc = "A rocket for the UPP standard-issue HJRA-12 Handheld Anti-Tank Grenade Launcher. This one is an extreme-intensity incendiary rocket, using an experimental chemical designated R-189 by the UPP, it is designed to melt through fortified positions and bunkers but is most commonly used in an anti-personnal role due to over-issuing and the tempatures after use in its intended role leaving the tempature of the air incompatible with human life." + caliber = "88mm" + icon_state = "hjra_incen" + + max_rounds = 1 + default_ammo = /datum/ammo/rocket/wp/upp + gun_type = /obj/item/weapon/gun/launcher/rocket/upp + reload_delay = 85 diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 2fc04e35f399..3ed10129f4d6 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -4,7 +4,7 @@ #define DEBUG_XENO_DEFENSE 0 //The actual bullet objects. -/obj/item/projectile +/obj/projectile name = "projectile" icon = 'icons/obj/items/weapons/projectiles.dmi' icon_state = "bullet" @@ -13,8 +13,9 @@ anchored = TRUE //You will not have me, space wind! flags_atom = NOINTERACT //No real need for this, but whatever. Maybe this flag will do something useful in the future. mouse_opacity = MOUSE_OPACITY_TRANSPARENT - invisibility = 100 // We want this thing to be invisible when it drops on a turf because it will be on the user's turf. We then want to make it visible as it travels. + alpha = 0 // We want this thing to be transparent when it drops on a turf because it will be on the user's turf. We then want to make it opaque as it travels. layer = FLY_LAYER + animate_movement = NO_STEPS //disables gliding because it fights against what animate() is doing var/datum/ammo/ammo //The ammo data which holds most of the actual info. @@ -48,6 +49,13 @@ var/vis_travelled = 0 /// Origin point for tracing and visual updates var/turf/vis_source + var/vis_source_pixel_x = 0 + var/vis_source_pixel_y = 0 + + /// Starting point of projectile before each flight. + var/turf/process_start_turf + var/process_start_pixel_x = 0 + var/process_start_pixel_y = 0 var/damage = 0 var/accuracy = 85 //Base projectile accuracy. Can maybe be later taken from the mob if desired. @@ -69,15 +77,17 @@ /// The flicker that plays when a bullet hits a target. Usually red. Can be nulled so it doesn't show up at all. var/hit_effect_color = "#FF0000" + /// How much to make the bullet fall off by accuracy-wise when closer than the ideal range + var/accuracy_range_falloff = 10 -/obj/item/projectile/Initialize(mapload, datum/cause_data/cause_data) +/obj/projectile/Initialize(mapload, datum/cause_data/cause_data) . = ..() path = list() permutated = list() weapon_cause_data = istype(cause_data) ? cause_data : create_cause_data(cause_data) firer = cause_data?.resolve_mob() -/obj/item/projectile/Destroy() +/obj/projectile/Destroy() speed = 0 ammo = null shot_from = null @@ -86,31 +96,34 @@ starting = null permutated = null path = null + vis_source = null + process_start_turf = null weapon_cause_data = null + bullet_traits = null firer = null QDEL_NULL(bound_beam) SSprojectiles.stop_projectile(src) return ..() -/obj/item/projectile/proc/apply_bullet_trait(list/entry) +/obj/projectile/proc/apply_bullet_trait(list/entry) bullet_traits += list(entry.Copy()) // Need to use the proc instead of the wrapper because each entry is a list _AddElement(entry) -/obj/item/projectile/proc/give_bullet_traits(obj/item/projectile/to_give) +/obj/projectile/proc/give_bullet_traits(obj/projectile/to_give) for(var/list/entry in bullet_traits) to_give.apply_bullet_trait(entry.Copy()) -/obj/item/projectile/Collided(atom/movable/AM) +/obj/projectile/Collided(atom/movable/AM) if(AM && !(AM in permutated)) if(scan_a_turf(AM.loc)) SSprojectiles.stop_projectile(src) qdel(src) -/obj/item/projectile/Crossed(atom/movable/AM) +/obj/projectile/Crossed(atom/movable/AM) /* Fun fact: Crossed is called for any contents involving operations. * This notably means, inserting a magazing in a gun Crossed() it with the bullets in the gun. */ - if(!loc.z) + if(!loc?.z) return // Not on the map. Don't scan a turf. Don't shoot the poor guy reloading his gun. if(AM && !(AM in permutated)) if(scan_a_turf(get_turf(AM))) @@ -118,10 +131,10 @@ qdel(src) -/obj/item/projectile/ex_act() +/obj/projectile/ex_act() return FALSE //We do not want anything to delete these, simply to make sure that all the bullet references are not runtiming. Otherwise, constantly need to check if the bullet exists. -/obj/item/projectile/proc/generate_bullet(datum/ammo/ammo_datum, bonus_damage = 0, special_flags = 0, mob/bullet_generator) +/obj/projectile/proc/generate_bullet(datum/ammo/ammo_datum, bonus_damage = 0, special_flags = 0, mob/bullet_generator) ammo = ammo_datum name = ammo.name icon = ammo.icon @@ -150,7 +163,7 @@ // Need to use the proc instead of the wrapper because each entry is a list apply_bullet_trait(L) -/obj/item/projectile/proc/calculate_damage() +/obj/projectile/proc/calculate_damage() if(effective_range_min && distance_travelled < effective_range_min) return max(0, damage - round((effective_range_min - distance_travelled) * damage_buildup)) else if(distance_travelled > effective_range_max) @@ -158,7 +171,7 @@ return damage // Target, firer, shot from (i.e. the gun), projectile range, projectile speed, original target (who was aimed at, not where projectile is going towards) -/obj/item/projectile/proc/fire_at(atom/target, atom/F, atom/S, range = 30, speed = 1, atom/original_override) +/obj/projectile/proc/fire_at(atom/target, atom/F, atom/S, range = 30, speed = 1, atom/original_override) SHOULD_NOT_SLEEP(TRUE) original = original || original_override || target if(!loc) @@ -191,10 +204,10 @@ setDir(get_dir(loc, target_turf)) var/ammo_flags = ammo.flags_ammo_behavior | projectile_override_flags - if(round_statistics && ammo_flags & AMMO_BALLISTIC) - round_statistics.total_projectiles_fired++ + if(GLOB.round_statistics && ammo_flags & AMMO_BALLISTIC) + GLOB.round_statistics.total_projectiles_fired++ if(ammo.bonus_projectiles_amount) - round_statistics.total_projectiles_fired += ammo.bonus_projectiles_amount + GLOB.round_statistics.total_projectiles_fired += ammo.bonus_projectiles_amount if(firer && ismob(firer) && weapon_cause_data) var/mob/M = firer M.track_shot(weapon_cause_data.cause_name) @@ -203,16 +216,16 @@ if(ammo.bonus_projectiles_amount && ammo.bonus_projectiles_type) ammo.fire_bonus_projectiles(src) - path = getline2(starting, target_turf) - p_x += Clamp((rand()-0.5)*scatter*3, -8, 8) - p_y += Clamp((rand()-0.5)*scatter*3, -8, 8) + path = get_line(starting, target_turf) + p_x += clamp((rand()-0.5)*scatter*3, -8, 8) + p_y += clamp((rand()-0.5)*scatter*3, -8, 8) update_angle(starting, target_turf) src.speed = speed // Randomize speed by a small factor to help bullet animations look okay // Otherwise you get a s t r e a m of warping bullets in same positions src.speed *= (1 + (rand()-0.5) * 0.30) // 15.0% variance either way - src.speed = Clamp(src.speed, 0.1, 100) // Safety to avoid loop hazards + src.speed = clamp(src.speed, 0.1, 100) // Safety to avoid loop hazards // Also give it some headstart, flying it now ahead of tick var/delta_time = world.tick_lag * rand() * 0.4 @@ -223,36 +236,28 @@ // Finally queue it to Subsystem for further processing SSprojectiles.queue_projectile(src) -/obj/item/projectile/proc/update_angle(turf/source_turf, turf/aim_turf) - p_x = Clamp(p_x, -16, 16) - p_y = Clamp(p_y, -16, 16) +/obj/projectile/proc/update_angle(turf/source_turf, turf/aim_turf) + p_x = clamp(p_x, -16, 16) + p_y = clamp(p_y, -16, 16) - if(source_turf != vis_source) + if(process_start_turf != vis_source) vis_travelled = 0 - vis_source = source_turf + vis_source = process_start_turf || source_turf + vis_source_pixel_x = process_start_pixel_x + vis_source_pixel_y = process_start_pixel_y - angle = 0 // Stolen from Get_Angle() basically var/dx = p_x + aim_turf.x * 32 - source_turf.x * 32 // todo account for firer offsets var/dy = p_y + aim_turf.y * 32 - source_turf.y * 32 - if(!dy) - if(dx >= 0) - angle = 90 - else - angle = 280 - else - angle = arctan(dx/dy) - if(dy < 0) - angle += 180 - else if(dx < 0) - angle += 360 - - var/matrix/rotate = matrix() //Change the bullet angle. - rotate.Turn(angle) - apply_transform(rotate) + angle = delta_to_angle(dx, dy) -/obj/item/projectile/process(delta_time) +/obj/projectile/process(delta_time) . = PROC_RETURN_SLEEP + var/process_start_delta_time = delta_time //easier to take it unaltered than to recalculate it later + process_start_turf = get_turf(src) //obj-level vars so update_angle() can use it without passing it through a ton of procs + process_start_pixel_x = pixel_x + process_start_pixel_y = pixel_y + // Keep going as long as we got speed and time while(speed > 0 && (speed * ((delta_time + time_carry)/10) >= 1)) time_carry -= 1/speed*10 @@ -264,10 +269,68 @@ return PROCESS_KILL time_carry += delta_time + + animate_flight(process_start_turf, process_start_pixel_x, process_start_pixel_y, process_start_delta_time) + return FALSE +/// Animates the projectile across the process'ed flight. +/obj/projectile/proc/animate_flight(turf/start_turf, start_pixel_x, start_pixel_y, delta_time) + //Get pixelspace coordinates of start and end of visual path + + var/pixel_x_source = vis_source.x * world.icon_size + vis_source_pixel_x + var/pixel_y_source = vis_source.y * world.icon_size + vis_source_pixel_y + + var/turf/vis_target = path[path.len] + var/pixel_x_target = vis_target.x * world.icon_size + p_x + var/pixel_y_target = vis_target.y * world.icon_size + p_y + + //Change the bullet angle to its visual path + + var/vis_angle = delta_to_angle(pixel_x_target - pixel_x_source, pixel_y_target - pixel_y_source) + var/matrix/rotate = matrix() + rotate.Turn(vis_angle) + apply_transform(rotate) + + //Determine apparent position along visual path, then lerp between start and end positions + + var/vis_length = vis_travelled + path.len + var/vis_current = vis_travelled + speed * (time_carry * 0.1) //speed * (time_carry * 0.1) for remainder time movement, visually "catching up" to where it should be + var/vis_interpolant = vis_current / vis_length + + var/pixel_x_lerped = LERP(pixel_x_source, pixel_x_target, vis_interpolant) + var/pixel_y_lerped = LERP(pixel_y_source, pixel_y_target, vis_interpolant) + + //Convert pixelspace to pixel offset relative to current loc + + var/turf/current_turf = get_turf(src) + var/pixel_x_rel_new = pixel_x_lerped - current_turf.x * world.icon_size + var/pixel_y_rel_new = pixel_y_lerped - current_turf.y * world.icon_size + + //Set pixel offset as from current loc to old position, so it appears to start in the old position + + pixel_x = (start_turf.x - current_turf.x) * world.icon_size + start_pixel_x + pixel_y = (start_turf.y - current_turf.y) * world.icon_size + start_pixel_y + + //Determine apparent distance travelled, then lerp for projectile fade-in + + var/dist_current = distance_travelled + speed * (time_carry * 0.1) //speed * (time_carry * 0.1) for remainder time fade-in + var/alpha_interpolant = dist_current - 1 //-1 so it transitions from transparent to opaque between dist 1-2 + var/alpha_new = LERP(0, 255, alpha_interpolant) + + //Animate the visuals from starting position to new position + + if(projectile_flags & PROJECTILE_SHRAPNEL) //there can be a LOT of shrapnel especially from a cluster OB, not important enough for the expense of an animate() + alpha = alpha_new + pixel_x = pixel_x_rel_new + pixel_y = pixel_y_rel_new + return + + var/anim_time = delta_time * 0.1 + animate(src, pixel_x = pixel_x_rel_new, pixel_y = pixel_y_rel_new, alpha = alpha_new, time = anim_time, flags = ANIMATION_END_NOW) + /// Flies the projectile forward one single turf -/obj/item/projectile/proc/fly() +/obj/projectile/proc/fly() SHOULD_NOT_SLEEP(TRUE) PRIVATE_PROC(TRUE) var/turf/current_turf = get_turf(src) @@ -292,8 +355,6 @@ forceMove(next_turf) distance_travelled++ vis_travelled++ - if(distance_travelled > 1) - invisibility = 0 // Check we're still flying - in the highly unlikely but apparently possible case // we hit something through forceMove callbacks that we didn't pick up in scan_a_turf @@ -318,28 +379,14 @@ p_y *= 2 retarget(aim_turf, keep_angle = TRUE) - // Nowe we update visual offset by tracing the bullet predicted location against real one - // - // Travelled real distance so far - var/dist = vis_travelled * 32 + speed * (time_carry*10) - // Compute where we should be - var/vis_x = vis_source.x * 32 + sin(angle) * dist - var/vis_y = vis_source.y * 32 + cos(angle) * dist - // Get the difference with where we actually are - var/dx = vis_x - loc.x * 32 - var/dy = vis_y - loc.y * 32 - // Clamp and set this as pixel offsets - pixel_x = Clamp(dx, -16, 16) - pixel_y = Clamp(dy, -16, 16) - -/obj/item/projectile/proc/retarget(atom/new_target, keep_angle = FALSE) +/obj/projectile/proc/retarget(atom/new_target, keep_angle = FALSE) var/turf/current_turf = get_turf(src) - path = getline2(current_turf, new_target) + path = get_line(current_turf, new_target) path.Cut(1, 2) // remove the turf we're already on var/atom/source = keep_angle ? original : current_turf update_angle(source, new_target) -/obj/item/projectile/proc/scan_a_turf(turf/T, proj_dir) +/obj/projectile/proc/scan_a_turf(turf/T, proj_dir) . = TRUE // Sleep safeguard: stop the bullet //Not actually flying? Should not be hitting anything. @@ -400,7 +447,7 @@ return TRUE return FALSE -/obj/item/projectile/proc/handle_object(obj/O) +/obj/projectile/proc/handle_object(obj/O) // If we've already handled this atom, don't do it again if(O in permutated) return FALSE @@ -436,7 +483,7 @@ if(SEND_SIGNAL(src, COMSIG_BULLET_POST_HANDLE_OBJ, O, .) & COMPONENT_BULLET_PASS_THROUGH) return FALSE -/obj/item/projectile/proc/handle_mob(mob/living/L) +/obj/projectile/proc/handle_mob(mob/living/L) // If we've already handled this atom, don't do it again if(SEND_SIGNAL(src, COMSIG_BULLET_PRE_HANDLE_MOB, L, .) & COMPONENT_BULLET_PASS_THROUGH) @@ -453,12 +500,31 @@ if(hit_chance) // Calculated from combination of both ammo accuracy and gun accuracy var/hit_roll = rand(1,100) + var/direct_hit = FALSE + + // Wasn't the clicked target + if(original != L) + def_zone = rand_zone() + + // Xenos get a RNG limb miss chance regardless of being clicked target or not, see below + else if(isxeno(L) && hit_roll > hit_chance - 20) + def_zone = rand_zone() - if(original != L || hit_roll > hit_chance-base_miss_chance[def_zone]-20) // If hit roll is high or the firer wasn't aiming at this mob, we still hit but now we might hit the wrong body part + // Other targets do the same roll with penalty - a near hit will hit but redirected to another limb + else if(!isxeno(L) && hit_roll > hit_chance - 20 - GLOB.base_miss_chance[def_zone]) def_zone = rand_zone() + else + direct_hit = TRUE SEND_SIGNAL(firer, COMSIG_BULLET_DIRECT_HIT, L) - hit_chance -= base_miss_chance[def_zone] // Reduce accuracy based on spot. + + // At present, Xenos have no inherent effects or localized damage stemming from limb targeting + // Therefore we exempt the shooter from direct hit accuracy penalties as well, + // simply to avoid them from resetting target to chest every time they want to shoot a xeno + + if(!direct_hit || !isxeno(L)) // For normal people or direct hits we apply the limb accuracy penalty + hit_chance -= GLOB.base_miss_chance[def_zone] + // else for direct hits on xenos, we skip it, pretending it's a chest shot with zero penalty #if DEBUG_HIT_CHANCE to_world(SPAN_DEBUG("([L]) Hit chance: [hit_chance] | Roll: [hit_roll]")) @@ -496,18 +562,19 @@ X.behavior_delegate.on_hitby_projectile(ammo) . = TRUE - else if(!L.lying) + else if(L.body_position != LYING_DOWN) animatation_displace_reset(L) if(ammo.sound_miss) playsound_client(L.client, ammo.sound_miss, get_turf(L), 75, TRUE) L.visible_message(SPAN_AVOIDHARM("[src] misses [L]!"), SPAN_AVOIDHARM("[src] narrowly misses you!"), null, 4, CHAT_TYPE_TAKING_HIT) - log_attack("[src] narrowly missed [key_name(L)]") + var/log_message = "[src] narrowly missed [key_name(L)]" var/mob/living/carbon/shotby = firer if(istype(shotby)) - L.attack_log += "[time_stamp()]\] [src], fired by [key_name(firer)], narrowly missed [key_name(L)]" - shotby.attack_log += "[time_stamp()]\] [src], fired by [key_name(shotby)], narrowly missed [key_name(L)]" - + L.attack_log += "\[[time_stamp()]\] [src], fired by [key_name(firer)], narrowly missed [key_name(L)]" + shotby.attack_log += "\[[time_stamp()]\] [src], fired by [key_name(shotby)], narrowly missed [key_name(L)]" + log_message = "[src], fired by [key_name(firer)], narrowly missed [key_name(L)]" + log_attack(log_message) #if DEBUG_HIT_CHANCE to_world(SPAN_DEBUG("([L]) Missed.")) @@ -524,7 +591,7 @@ //---------------------------------------------------------- -/obj/item/projectile/proc/get_effective_accuracy() +/obj/projectile/proc/get_effective_accuracy() #if DEBUG_HIT_CHANCE to_world(SPAN_DEBUG("Base accuracy is [accuracy]; scatter: [scatter]; distance: [distance_travelled]")) #endif @@ -533,7 +600,7 @@ var/ammo_flags = ammo.flags_ammo_behavior | projectile_override_flags if(distance_travelled <= ammo.accurate_range) if(distance_travelled <= ammo.accurate_range_min) // If bullet stays within max accurate range + random variance - effective_accuracy -= (ammo.accurate_range_min - distance_travelled) * 10 // Snipers have accuracy falloff at closer range before point blank + effective_accuracy -= (ammo.accurate_range_min - distance_travelled) * accuracy_range_falloff // Snipers have accuracy falloff at closer range before point blank else effective_accuracy -= (distance_travelled - ammo.accurate_range) * ((ammo_flags & AMMO_SNIPER) ? 1.5 : 10) // Snipers have a smaller falloff constant due to longer max range @@ -552,7 +619,7 @@ return effective_accuracy //objects use get_projectile_hit_boolean unlike mobs, which use get_projectile_hit_chance -/obj/proc/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/proc/get_projectile_hit_boolean(obj/projectile/P) if(!density) return FALSE @@ -562,7 +629,7 @@ return TRUE //Used by machines and structures to calculate shooting past cover -/obj/proc/calculate_cover_hit_boolean(obj/item/projectile/P, distance = 0, cade_direction_correct = FALSE) +/obj/proc/calculate_cover_hit_boolean(obj/projectile/P, distance = 0, cade_direction_correct = FALSE) if(istype(P.shot_from, /obj/item/hardpoint)) //anything shot from a tank gets a bonus to bypassing cover distance -= 3 @@ -582,7 +649,7 @@ return prob(hitchance) -/obj/structure/machinery/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/structure/machinery/get_projectile_hit_boolean(obj/projectile/P) if(src == P.original && layer > ATMOS_DEVICE_LAYER) //clicking on the object itself hits the object var/hitchance = P.get_effective_accuracy() @@ -621,7 +688,7 @@ return calculate_cover_hit_boolean(P, distance) -/obj/structure/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/structure/get_projectile_hit_boolean(obj/projectile/P) if(src == P.original && layer > ATMOS_DEVICE_LAYER) //clicking on the object itself hits the object var/hitchance = P.get_effective_accuracy() @@ -667,20 +734,20 @@ return calculate_cover_hit_boolean(P, distance, cade_direction_correct) -/obj/item/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/item/get_projectile_hit_boolean(obj/projectile/P) if(P && src == P.original) //clicking on the object itself. Code copied from mob get_projectile_hit_chance var/hitchance = P.get_effective_accuracy() switch(w_class) //smaller items are harder to hit - if(1) + if(SIZE_TINY) hitchance -= 50 - if(2) + if(SIZE_SMALL) hitchance -= 30 - if(3) + if(SIZE_MEDIUM) hitchance -= 20 - if(4) + if(SIZE_LARGE) hitchance -= 10 #if DEBUG_HIT_CHANCE @@ -699,7 +766,7 @@ return TRUE -/obj/vehicle/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/vehicle/get_projectile_hit_boolean(obj/projectile/P) if(src == P.original) //clicking on the object itself hits the object var/hitchance = P.get_effective_accuracy() @@ -720,32 +787,32 @@ return TRUE -/obj/structure/window/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/structure/window/get_projectile_hit_boolean(obj/projectile/P) var/ammo_flags = P.ammo.flags_ammo_behavior | P.projectile_override_flags if(ammo_flags & AMMO_ENERGY) return FALSE else if(!(flags_atom & ON_BORDER) || (P.dir & dir) || (P.dir & reverse_direction(dir))) return TRUE -/obj/structure/machinery/door/poddoor/railing/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/structure/machinery/door/poddoor/railing/get_projectile_hit_boolean(obj/projectile/P) return src == P.original -/obj/effect/alien/egg/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/effect/alien/egg/get_projectile_hit_boolean(obj/projectile/P) return src == P.original -/obj/effect/alien/resin/trap/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/effect/alien/resin/trap/get_projectile_hit_boolean(obj/projectile/P) return src == P.original -/obj/item/clothing/mask/facehugger/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/item/clothing/mask/facehugger/get_projectile_hit_boolean(obj/projectile/P) return src == P.original //mobs use get_projectile_hit_chance instead of get_projectile_hit_boolean -/mob/living/proc/get_projectile_hit_chance(obj/item/projectile/P) - if(lying && src != P.original) - return FALSE +/mob/living/proc/get_projectile_hit_chance(obj/projectile/P) + if((body_position == LYING_DOWN || HAS_TRAIT(src, TRAIT_NESTED)) && src != P.original) + return FALSE // Snowflake check for xeno nests, because we want bullets to fly through even though they're standing in it var/ammo_flags = P.ammo.flags_ammo_behavior | P.projectile_override_flags if(ammo_flags & AMMO_XENO) if((status_flags & XENO_HOST) && HAS_TRAIT(src, TRAIT_NESTED)) @@ -753,14 +820,15 @@ . = P.get_effective_accuracy() - if(lying && stat) . += 15 //Bonus hit against unconscious people. + if(body_position == LYING_DOWN && stat) + . += 15 //Bonus hit against unconscious people. if(isliving(P.firer)) var/mob/living/shooter_living = P.firer if(!can_see(shooter_living,src)) . -= 15 //Can't see the target (Opaque thing between shooter and target) -/mob/living/carbon/human/get_projectile_hit_chance(obj/item/projectile/P) +/mob/living/carbon/human/get_projectile_hit_chance(obj/projectile/P) . = ..() if(.) var/ammo_flags = P.ammo.flags_ammo_behavior | P.projectile_override_flags @@ -781,7 +849,7 @@ else return FALSE -/mob/living/carbon/xenomorph/get_projectile_hit_chance(obj/item/projectile/P) +/mob/living/carbon/xenomorph/get_projectile_hit_chance(obj/projectile/P) . = ..() if(.) var/ammo_flags = P.ammo.flags_ammo_behavior | P.projectile_override_flags @@ -796,21 +864,24 @@ if(X.hivenumber == hivenumber) return FALSE - if(mob_size >= MOB_SIZE_BIG) . += 10 + if(mob_size == MOB_SIZE_SMALL) + . -= 10 + else if(mob_size >= MOB_SIZE_BIG) + . += 10 if(evasion > 0) . -= evasion -/mob/living/silicon/robot/drone/get_projectile_hit_chance(obj/item/projectile/P) +/mob/living/silicon/robot/drone/get_projectile_hit_chance(obj/projectile/P) return FALSE // just stop them getting hit by projectiles completely -/obj/item/projectile/proc/play_hit_effect(mob/hit_mob) +/obj/projectile/proc/play_hit_effect(mob/hit_mob) if(ammo.sound_hit) playsound(hit_mob, ammo.sound_hit, 50, 1) if(hit_mob.stat != DEAD && !isnull(hit_effect_color)) animation_flash_color(hit_mob, hit_effect_color) -/obj/item/projectile/proc/play_shielded_hit_effect(mob/hit_mob) +/obj/projectile/proc/play_shielded_hit_effect(mob/hit_mob) if(ammo.sound_shield_hit) playsound(hit_mob, ammo.sound_shield_hit, 50, 1) if(hit_mob.stat != DEAD && !isnull(hit_effect_color)) @@ -823,13 +894,13 @@ // \\ //---------------------------------------------------------- -/atom/proc/bullet_act(obj/item/projectile/P) +/atom/proc/bullet_act(obj/projectile/P) return FALSE -/mob/dead/bullet_act(/obj/item/projectile/P) +/mob/dead/bullet_act(/obj/projectile/P) return FALSE -/mob/living/bullet_act(obj/item/projectile/P) +/mob/living/bullet_act(obj/projectile/P) if(!P) return @@ -847,7 +918,7 @@ SEND_SIGNAL(P, COMSIG_BULLET_ACT_LIVING, src, damage, damage) -/mob/living/carbon/human/bullet_act(obj/item/projectile/P) +/mob/living/carbon/human/bullet_act(obj/projectile/P) if(!P) return @@ -960,7 +1031,7 @@ SEND_SIGNAL(P, COMSIG_POST_BULLET_ACT_HUMAN, src, damage, damage_result) //Deal with xeno bullets. -/mob/living/carbon/xenomorph/bullet_act(obj/item/projectile/P) +/mob/living/carbon/xenomorph/bullet_act(obj/projectile/P) if(!P || !istype(P)) return @@ -1041,7 +1112,7 @@ return TRUE -/turf/bullet_act(obj/item/projectile/P) +/turf/bullet_act(obj/projectile/P) if(SEND_SIGNAL(src, COMSIG_TURF_BULLET_ACT, P) & COMPONENT_BULLET_ACT_OVERRIDE) return @@ -1065,7 +1136,7 @@ return // walls can get shot and damaged, but bullets (vs energy guns) do much less. -/turf/closed/wall/bullet_act(obj/item/projectile/P) +/turf/closed/wall/bullet_act(obj/projectile/P) . = ..() var/damage = P.damage if(damage < 1) @@ -1085,7 +1156,7 @@ current_bulletholes++ take_damage(damage, P.firer) -/turf/closed/wall/almayer/research/containment/bullet_act(obj/item/projectile/P) +/turf/closed/wall/almayer/research/containment/bullet_act(obj/projectile/P) if(P) var/ammo_flags = P.ammo.flags_ammo_behavior | P.projectile_override_flags if(ammo_flags & AMMO_ACIDIC) @@ -1097,17 +1168,17 @@ //Hitting an object. These are too numerous so they're staying in their files. //Why are there special cases listed here? Oh well, whatever. ~N -/obj/bullet_act(obj/item/projectile/P) +/obj/bullet_act(obj/projectile/P) bullet_ping(P) return TRUE -/obj/item/bullet_act(obj/item/projectile/P) +/obj/item/bullet_act(obj/projectile/P) bullet_ping(P) if(P.ammo.damage_type == BRUTE) explosion_throw(P.damage/2, P.dir, 4) return TRUE -/obj/structure/surface/table/bullet_act(obj/item/projectile/P) +/obj/structure/surface/table/bullet_act(obj/projectile/P) bullet_ping(P) health -= round(P.damage/2) if(health < 0) @@ -1125,14 +1196,14 @@ //This is where the bullet bounces off. -/atom/proc/bullet_ping(obj/item/projectile/P, pixel_x_offset = 0, pixel_y_offset = 0) +/atom/proc/bullet_ping(obj/projectile/P, pixel_x_offset = 0, pixel_y_offset = 0) if(!P || !P.ammo.ping) return if(P.ammo.sound_bounce) playsound(src, P.ammo.sound_bounce, 50, 1) var/image/I = image('icons/obj/items/weapons/projectiles.dmi', src, P.ammo.ping, 10) - var/offset_x = Clamp(P.pixel_x + pixel_x_offset, -10, 10) - var/offset_y = Clamp(P.pixel_y + pixel_y_offset, -10, 10) + var/offset_x = clamp(P.pixel_x + pixel_x_offset, -10, 10) + var/offset_y = clamp(P.pixel_y + pixel_y_offset, -10, 10) I.pixel_x += round(rand(-4,4) + offset_x, 1) I.pixel_y += round(rand(-4,4) + offset_y, 1) @@ -1142,11 +1213,17 @@ // Need to do this in order to prevent the ping from being deleted addtimer(CALLBACK(I, TYPE_PROC_REF(/image, flick_overlay), src, 3), 1) -/mob/proc/bullet_message(obj/item/projectile/P) +/// People getting shot by a large amount of bullets in a very short period of time can lag them out, with chat messages being one cause, so a 1s cooldown per hit message is introduced to assuage that +/mob/var/shot_cooldown = 0 + +/mob/proc/bullet_message(obj/projectile/P) if(!P) return - visible_message(SPAN_DANGER("[src] is hit by the [P.name] in the [parse_zone(P.def_zone)]!"), \ - SPAN_HIGHDANGER("You are hit by the [P.name] in the [parse_zone(P.def_zone)]!"), null, 4, CHAT_TYPE_TAKING_HIT) + if(COOLDOWN_FINISHED(src, shot_cooldown)) + visible_message(SPAN_DANGER("[src] is hit by the [P.name] in the [parse_zone(P.def_zone)]!"), \ + SPAN_HIGHDANGER("[isxeno(src) ? "We" : "You"] are hit by the [P.name] in the [parse_zone(P.def_zone)]!"), null, 4, CHAT_TYPE_TAKING_HIT) + COOLDOWN_START(src, shot_cooldown, 1 SECONDS) + last_damage_data = P.weapon_cause_data if(P.firer && ismob(P.firer)) @@ -1154,7 +1231,7 @@ var/area/A = get_area(src) if(ishuman(firingMob) && ishuman(src) && faction == firingMob.faction && !A?.statistic_exempt) //One human shot another, be worried about it but do everything basically the same //special_role should be null or an empty string if done correctly if(!istype(P.ammo, /datum/ammo/energy/taser)) - round_statistics.total_friendly_fire_instances++ + GLOB.round_statistics.total_friendly_fire_instances++ var/ff_msg = "[key_name(firingMob)] shot [key_name(src)] with \a [P.name] in [get_area(firingMob)] [ADMIN_JMP(firingMob)] [ADMIN_PM(firingMob)]" var/ff_living = TRUE if(src.stat == DEAD) @@ -1172,7 +1249,7 @@ return attack_log += "\[[time_stamp()]\] SOMETHING?? shot [key_name(src)] with a [P]" - msg_admin_attack("SOMETHING?? shot [key_name(src)] with a [P] in [get_area(src)] ([loc.x],[loc.y],[loc.z]).", loc.x, loc.y, loc.z) + msg_admin_attack("SOMETHING?? shot [key_name(src)] with \a [P] in [get_area(src)] ([loc.x],[loc.y],[loc.z]).", loc.x, loc.y, loc.z) //Abby -- Just check if they're 1 tile horizontal or vertical, no diagonals /proc/get_adj_simple(atom/Loc1,atom/Loc2) @@ -1186,6 +1263,31 @@ if(dx == -1 || dx == 1) return TRUE +/obj/projectile/vulture + accuracy_range_falloff = 10 + /// The odds of hitting a xeno in less than your gun's range. Doesn't apply to humans. + var/xeno_shortrange_chance = 10 + +/obj/projectile/vulture/Initialize(mapload, datum/cause_data/cause_data) + . = ..() + RegisterSignal(src, COMSIG_GUN_VULTURE_FIRED_ONEHAND, PROC_REF(on_onehand)) + +/obj/projectile/vulture/handle_mob(mob/living/hit_mob) + if((ammo.accurate_range_min > distance_travelled) && isxeno(hit_mob)) + if(prob(xeno_shortrange_chance)) + return ..() + + permutated |= hit_mob + return + + return ..() + +/// Handler for when the user one-hands the firing gun +/obj/projectile/vulture/proc/on_onehand(datum/source) + SIGNAL_HANDLER + + accuracy = HIT_ACCURACY_TIER_2 // flat 10% chance if you're desperate and try to fire this thing without a bipod + #undef DEBUG_HIT_CHANCE #undef DEBUG_HUMAN_DEFENSE #undef DEBUG_XENO_DEFENSE diff --git a/code/modules/reagents/Chemistry-Generator.dm b/code/modules/reagents/Chemistry-Generator.dm index bb8f69b714b2..b2e6402d4b06 100644 --- a/code/modules/reagents/Chemistry-Generator.dm +++ b/code/modules/reagents/Chemistry-Generator.dm @@ -75,56 +75,56 @@ if(my_chemid) //Do we want a specific chem? chem_id = my_chemid else if(class) //do we want a specific class? - chem_id = pick(chemical_gen_classes_list["C[class]"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C[class]"]) else var/roll = rand(0,100) switch(tier) if(0) - chem_id = pick(chemical_gen_classes_list["C"])//If tier is 0, we can add any classed chemical + chem_id = pick(GLOB.chemical_gen_classes_list["C"])//If tier is 0, we can add any classed chemical if(1) if(roll<=35) - chem_id = pick(chemical_gen_classes_list["C1"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C1"]) else if(roll<=65) - chem_id = pick(chemical_gen_classes_list["C2"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C2"]) else if(roll<=85) - chem_id = pick(chemical_gen_classes_list["C3"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C3"]) else - chem_id = pick(chemical_gen_classes_list["C4"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C4"]) if(2) if(roll<=30) - chem_id = pick(chemical_gen_classes_list["C1"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C1"]) else if(roll<=55) - chem_id = pick(chemical_gen_classes_list["C2"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C2"]) else if(roll<=70) - chem_id = pick(chemical_gen_classes_list["C3"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C3"]) else - chem_id = pick(chemical_gen_classes_list["C4"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C4"]) if(3) if(roll<=10) - chem_id = pick(chemical_gen_classes_list["C1"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C1"]) else if(roll<=30) - chem_id = pick(chemical_gen_classes_list["C2"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C2"]) else if(roll<=50) - chem_id = pick(chemical_gen_classes_list["C3"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C3"]) else if(roll<=70) - chem_id = pick(chemical_gen_classes_list["C4"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C4"]) else - chem_id = pick(chemical_gen_classes_list["C5"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C5"]) else if(!required_reagents || is_catalyst)//first component is more likely to be special in chems tier 4 or higher, catalysts are always special in tier 4 or higher if (prob(50)) - chem_id = pick(chemical_gen_classes_list["C5"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C5"]) else - chem_id = pick(chemical_gen_classes_list["C4"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C4"]) else if(roll<=15) - chem_id = pick(chemical_gen_classes_list["C2"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C2"]) else if(roll<=40) - chem_id = pick(chemical_gen_classes_list["C3"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C3"]) else if(roll<=65) - chem_id = pick(chemical_gen_classes_list["C4"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C4"]) else - chem_id = pick(chemical_gen_classes_list["C5"]) + chem_id = pick(GLOB.chemical_gen_classes_list["C5"]) //if we are already using this reagent, try again if(required_reagents && required_reagents.Find(chem_id)) @@ -169,7 +169,7 @@ while(!gen_name) gen_name = addtext(pick(prefix),pick(wordroot),pick(suffix)) //Make sure this name is not already used - for(var/datum/reagent/R in chemical_reagents_list) + for(var/datum/reagent/R in GLOB.chemical_reagents_list) if(R.name == gen_name)//if we are already using this name, try again gen_name = "" //set name @@ -249,58 +249,58 @@ var/property var/roll = rand(1,100) if(make_rare) - property = pick(chemical_properties_list["rare"]) + property = pick(GLOB.chemical_properties_list["rare"]) //Pick the property by value and roll else if(value_offset > 0) //Balance the value of our chemical - property = pick(chemical_properties_list["positive"]) + property = pick(GLOB.chemical_properties_list["positive"]) else if(value_offset < 0) if(roll <= gen_tier*10) - property = pick(chemical_properties_list["negative"]) + property = pick(GLOB.chemical_properties_list["negative"]) else - property = pick(chemical_properties_list["neutral"]) + property = pick(GLOB.chemical_properties_list["neutral"]) else switch(gen_tier) if(1) if(roll<=20) - property = pick(chemical_properties_list["negative"]) + property = pick(GLOB.chemical_properties_list["negative"]) else if (roll<=50) - property = pick(chemical_properties_list["neutral"]) + property = pick(GLOB.chemical_properties_list["neutral"]) else - property = pick(chemical_properties_list["positive"]) + property = pick(GLOB.chemical_properties_list["positive"]) if(2) if(roll<=25) - property = pick(chemical_properties_list["negative"]) + property = pick(GLOB.chemical_properties_list["negative"]) else if (roll<=45) - property = pick(chemical_properties_list["neutral"]) + property = pick(GLOB.chemical_properties_list["neutral"]) else - property = pick(chemical_properties_list["positive"]) + property = pick(GLOB.chemical_properties_list["positive"]) if(3) if(roll<=15) - property = pick(chemical_properties_list["negative"]) + property = pick(GLOB.chemical_properties_list["negative"]) else if (roll<=40) - property = pick(chemical_properties_list["neutral"]) + property = pick(GLOB.chemical_properties_list["neutral"]) else - property = pick(chemical_properties_list["positive"]) + property = pick(GLOB.chemical_properties_list["positive"]) else if(roll<=15) - property = pick(chemical_properties_list["negative"]) + property = pick(GLOB.chemical_properties_list["negative"]) else if (roll<=40) - property = pick(chemical_properties_list["neutral"]) + property = pick(GLOB.chemical_properties_list["neutral"]) else - property = pick(chemical_properties_list["positive"]) + property = pick(GLOB.chemical_properties_list["positive"]) if(track_added_properties) //Generated effects are more unique for lower-tier chemicals, but not higher-tier ones var/property_checks = 0 while(!check_generated_properties(property) && property_checks < 4) property_checks++ - if(LAZYISIN(chemical_properties_list["negative"], property)) - property = pick(chemical_properties_list["negative"]) - else if(LAZYISIN(chemical_properties_list["neutral"], property)) - property = pick(chemical_properties_list["neutral"]) + if(LAZYISIN(GLOB.chemical_properties_list["negative"], property)) + property = pick(GLOB.chemical_properties_list["negative"]) + else if(LAZYISIN(GLOB.chemical_properties_list["neutral"], property)) + property = pick(GLOB.chemical_properties_list["neutral"]) else - property = pick(chemical_properties_list["positive"]) + property = pick(GLOB.chemical_properties_list["positive"]) - var/datum/chem_property/P = chemical_properties_list[property] + var/datum/chem_property/P = GLOB.chemical_properties_list[property] //Calculate what our chemical value is with our level var/new_value @@ -389,7 +389,7 @@ return FALSE break //Insert the property - var/datum/chem_property/P = chemical_properties_list[property] + var/datum/chem_property/P = GLOB.chemical_properties_list[property] P = new P.type() P.level = level P.holder = src @@ -397,7 +397,7 @@ //Special case: If it's a catalyst property, add it nonetheless. if(initial_property && initial_property != property) - P = chemical_properties_list[initial_property] + P = GLOB.chemical_properties_list[initial_property] if(P.category & PROPERTY_TYPE_CATALYST) P = new P.type() P.level = level @@ -425,22 +425,22 @@ C.gen_tier = gen_tier if(!C.generate_recipe(complexity)) return //Generating a recipe failed, so return null - chemical_reactions_list[C.id] = C + GLOB.chemical_reactions_list[C.id] = C C.add_to_filtered_list() return C //Returns false if a property has been generated in a previous reagent and all properties of that category haven't been generated yet. /datum/reagent/proc/check_generated_properties(datum/chem_property/P) - if(LAZYISIN(chemical_properties_list["positive"], P)) - if(LAZYISIN(GLOB.generated_properties["positive"], P) && LAZYLEN(GLOB.generated_properties["positive"]) < LAZYLEN(chemical_properties_list["positive"])) + if(LAZYISIN(GLOB.chemical_properties_list["positive"], P)) + if(LAZYISIN(GLOB.generated_properties["positive"], P) && LAZYLEN(GLOB.generated_properties["positive"]) < LAZYLEN(GLOB.chemical_properties_list["positive"])) return FALSE GLOB.generated_properties["positive"] += P - else if(LAZYISIN(chemical_properties_list["negative"], P)) - if(LAZYISIN(GLOB.generated_properties["negative"], P) && LAZYLEN(GLOB.generated_properties["negative"]) < LAZYLEN(chemical_properties_list["negative"])) + else if(LAZYISIN(GLOB.chemical_properties_list["negative"], P)) + if(LAZYISIN(GLOB.generated_properties["negative"], P) && LAZYLEN(GLOB.generated_properties["negative"]) < LAZYLEN(GLOB.chemical_properties_list["negative"])) return FALSE GLOB.generated_properties["negative"] += P - else if(LAZYISIN(chemical_properties_list["neutral"], P)) - if(LAZYISIN(GLOB.generated_properties["neutral"], P) && LAZYLEN(GLOB.generated_properties["neutral"]) < LAZYLEN(chemical_properties_list["neutral"])) + else if(LAZYISIN(GLOB.chemical_properties_list["neutral"], P)) + if(LAZYISIN(GLOB.generated_properties["neutral"], P) && LAZYLEN(GLOB.generated_properties["neutral"]) < LAZYLEN(GLOB.chemical_properties_list["neutral"])) return FALSE GLOB.generated_properties["neutral"] += P return TRUE diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 643130559e94..924f0f827584 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -25,7 +25,7 @@ maximum_volume = maximum #ifdef UNIT_TESTS - if(!chemical_reagents_list || !chemical_reactions_filtered_list || !chemical_properties_list) + if(!GLOB.chemical_reagents_list || !GLOB.chemical_reactions_filtered_list || !GLOB.chemical_properties_list) CRASH("Chemistry reagents are not set up!") #endif @@ -226,9 +226,9 @@ if(!my_atom) return if(my_atom.flags_atom & NOREACT) return //Yup, no reactions here. No siree. - var/reaction_occured = 0 + var/reaction_occurred = 0 do - reaction_occured = 0 + reaction_occurred = 0 for(var/datum/reagent/R in reagent_list) // Usually a small list if(R.original_id) //Prevent synthesised chem variants from being mixed for(var/datum/reagent/O in reagent_list) @@ -240,7 +240,7 @@ O.volume += R.volume qdel(R) break - for(var/reaction in chemical_reactions_filtered_list[R.id]) // Was a big list but now it should be smaller since we filtered it with our reagent id + for(var/reaction in GLOB.chemical_reactions_filtered_list[R.id]) // Was a big list but now it should be smaller since we filtered it with our reagent id if(!reaction) continue @@ -309,10 +309,10 @@ playsound(get_turf(my_atom), 'sound/effects/bubbles.ogg', 15, 1) C.on_reaction(src, created_volume) - reaction_occured = 1 + reaction_occurred = 1 break - while(reaction_occured) + while(reaction_occurred) if(trigger_volatiles) handle_volatiles() if(exploded) //clear reagents only when everything has reacted @@ -374,7 +374,7 @@ if(total_volume + amount > maximum_volume) amount = maximum_volume - total_volume //Doesnt fit in. Make it disappear. Shouldnt happen. Will happen. - var/new_data = list("blood_type" = null, "blood_colour" = "#A10808", "viruses" = null, "resistances" = null, "last_source_mob" = null) + var/new_data = list("blood_type" = null, "blood_color" = "#A10808", "viruses" = null, "resistances" = null, "last_source_mob" = null) if(data) for(var/index in data) new_data[index] = data[index] @@ -417,10 +417,10 @@ handle_reactions() return FALSE - var/datum/reagent/D = chemical_reagents_list[reagent] + var/datum/reagent/D = GLOB.chemical_reagents_list[reagent] if(D) if(!istype(D, /datum/reagent)) - CRASH("Not REAGENT - [reagent] - chemical_reagents_list[reagent]") + CRASH("Not REAGENT - [reagent] - GLOB.chemical_reagents_list[reagent]") var/datum/reagent/R = new D.type() if(D.type == /datum/reagent/generated) @@ -713,5 +713,6 @@ // Convenience proc to create a reagents holder for an atom // Max vol is maximum volume of holder /atom/proc/create_reagents(max_vol) + QDEL_NULL(reagents) reagents = new/datum/reagents(max_vol) reagents.my_atom = src diff --git a/code/modules/reagents/Chemistry-Reactions.dm b/code/modules/reagents/Chemistry-Reactions.dm index 1d9c03f9e923..7a8f0b21158a 100644 --- a/code/modules/reagents/Chemistry-Reactions.dm +++ b/code/modules/reagents/Chemistry-Reactions.dm @@ -22,15 +22,15 @@ /datum/chemical_reaction/proc/add_to_filtered_list(reset = FALSE) if(reset) - for(var/R in chemical_reactions_filtered_list) - LAZYREMOVE(chemical_reactions_filtered_list[R], src) + for(var/R in GLOB.chemical_reactions_filtered_list) + LAZYREMOVE(GLOB.chemical_reactions_filtered_list[R], src) for(var/R in required_reagents) - LAZYADD(chemical_reactions_filtered_list[R], src) + LAZYADD(GLOB.chemical_reactions_filtered_list[R], src) /datum/chemical_reaction/proc/check_duplicate() for(var/R in required_reagents) - if(chemical_reactions_filtered_list[R]) - for(var/reaction in chemical_reactions_filtered_list[R])//We filter the chemical_reactions_filtered_list so we don't have to search through as much + if(GLOB.chemical_reactions_filtered_list[R]) + for(var/reaction in GLOB.chemical_reactions_filtered_list[R])//We filter the GLOB.chemical_reactions_filtered_list so we don't have to search through as much var/datum/chemical_reaction/C = reaction var/matches = 0 for(var/B in required_reagents) @@ -43,7 +43,7 @@ // To prevent such a situation, if ALL reagent inside a reaction are medical chemicals, the recipe is considered flawed. /datum/chemical_reaction/proc/check_reaction_uses_all_default_medical() for(var/R in required_reagents) - var/datum/reagent/M = chemical_reagents_list[R] + var/datum/reagent/M = GLOB.chemical_reagents_list[R] if(!(initial(M.flags) & REAGENT_TYPE_MEDICAL)) return FALSE return TRUE diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 7f659c54c40d..b8c3d20df671 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -19,7 +19,7 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) var/datum/reagents/holder = null var/reagent_state = SOLID var/data = 0 //Scratchpad for random chemicals to do their own thing TODO: unify this somehow? - var/list/data_properties = list("blood_type" = null, "blood_colour" = "#A10808", "viruses" = null, "resistances" = null) //mostly for viruses... + var/list/data_properties = list("blood_type" = null, "blood_color" = "#A10808", "viruses" = null, "resistances" = null) //mostly for viruses... var/volume = 0 var/nutriment_factor = 0 var/custom_metabolism = REAGENTS_METABOLISM @@ -28,7 +28,7 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) var/overdose_dam = 1//Handeled by heart damage var/spray_warning = FALSE //whether spraying that reagent creates an admin message. //var/list/viruses = list() - var/color = "#000000" // rgb: 0, 0, 0 (does not support alpha channels - yet!) + var/color = COLOR_BLACK //(does not support alpha channels - yet!) var/datum/weakref/last_source_mob // For explosions var/explosive = FALSE @@ -152,6 +152,9 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) handle_processing(M, mods, delta_time) holder.remove_reagent(id, custom_metabolism * delta_time) + if(!holder) + return FALSE + return TRUE //Pre-processing @@ -267,37 +270,37 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) if(chemclass && !(flags & REAGENT_NO_GENERATION)) switch(chemclass) if(CHEM_CLASS_BASIC) - chemical_gen_classes_list["C1"] += id + GLOB.chemical_gen_classes_list["C1"] += id if(CHEM_CLASS_COMMON) - chemical_gen_classes_list["C2"] += id + GLOB.chemical_gen_classes_list["C2"] += id if(CHEM_CLASS_UNCOMMON) - chemical_gen_classes_list["C3"] += id + GLOB.chemical_gen_classes_list["C3"] += id if(CHEM_CLASS_RARE) - chemical_gen_classes_list["C4"] += id + GLOB.chemical_gen_classes_list["C4"] += id if(CHEM_CLASS_SPECIAL) - chemical_gen_classes_list["C5"] += id - chemical_data.add_chemical_objective(src) + GLOB.chemical_gen_classes_list["C5"] += id + GLOB.chemical_data.add_chemical_objective(src) if(CHEM_CLASS_ULTRA) - chemical_gen_classes_list["C6"] += id - chemical_data.add_chemical_objective(src) - chemical_gen_classes_list["C"] += id + GLOB.chemical_gen_classes_list["C6"] += id + GLOB.chemical_data.add_chemical_objective(src) + GLOB.chemical_gen_classes_list["C"] += id if(gen_tier) switch(gen_tier) if(1) - chemical_gen_classes_list["T1"] += id + GLOB.chemical_gen_classes_list["T1"] += id if(2) - chemical_gen_classes_list["T2"] += id + GLOB.chemical_gen_classes_list["T2"] += id if(3) - chemical_gen_classes_list["T3"] += id + GLOB.chemical_gen_classes_list["T3"] += id if(4) - chemical_gen_classes_list["T4"] += id + GLOB.chemical_gen_classes_list["T4"] += id if(5) - chemical_gen_classes_list["T5"] += id + GLOB.chemical_gen_classes_list["T5"] += id /datum/reagent/proc/properties_to_datums() #ifdef UNIT_TESTS - if(!chemical_properties_list) + if(!GLOB.chemical_properties_list) CRASH("Chemistry reagents are not set up!") #endif @@ -306,7 +309,7 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) if(istype(prop, /datum/chem_property)) new_properties += prop continue - var/datum/chem_property/chem = chemical_properties_list[prop] + var/datum/chem_property/chem = GLOB.chemical_properties_list[prop] if(chem) chem = new chem.type() chem.level = properties[prop] diff --git a/code/modules/reagents/chemical_research/Chemical-Research.dm b/code/modules/reagents/chemical_research/Chemical-Research.dm index 0b1152154dc3..e66cb474df50 100644 --- a/code/modules/reagents/chemical_research/Chemical-Research.dm +++ b/code/modules/reagents/chemical_research/Chemical-Research.dm @@ -1,4 +1,4 @@ -var/global/datum/chemical_data/chemical_data = new /datum/chemical_data +GLOBAL_DATUM_INIT(chemical_data, /datum/chemical_data, new) /datum/chemical_data var/rsc_credits = 0 @@ -38,7 +38,7 @@ var/global/datum/chemical_data/chemical_data = new /datum/chemical_data /datum/chemical_data/proc/get_report(doc_type, doc_title) var/obj/item/paper/research_report/report = null - for(var/document_data in chemical_data.research_documents[doc_type]) + for(var/document_data in GLOB.chemical_data.research_documents[doc_type]) if(document_data["document_title"] == doc_title) report = document_data["document"] break @@ -92,7 +92,7 @@ var/global/datum/chemical_data/chemical_data = new /datum/chemical_data if(LAZYLEN(property_names)) has_new_properties = TRUE for(var/name in property_names) - var/datum/chem_property/ref = chemical_properties_list[name] + var/datum/chem_property/ref = GLOB.chemical_properties_list[name] var/datum/chem_property/P = new ref.type P.level = 0 research_property_data += P @@ -146,7 +146,7 @@ var/global/datum/chemical_data/chemical_data = new /datum/chemical_data chemical_not_completed_objective_list[chem.id] = chem.objective_value /datum/chemical_data/proc/get_tgui_data(chemid) - var/datum/reagent/chem = chemical_reagents_list[chemid] + var/datum/reagent/chem = GLOB.chemical_reagents_list[chemid] if(!chem) error("Invalid chemid [chemid]") return diff --git a/code/modules/reagents/chemical_research/generated_reagents.dm b/code/modules/reagents/chemical_research/generated_reagents.dm index 6eaa664b6d7e..a21d74e26f8a 100644 --- a/code/modules/reagents/chemical_research/generated_reagents.dm +++ b/code/modules/reagents/chemical_research/generated_reagents.dm @@ -16,21 +16,21 @@ //Generate stats if(!id) //So we can initiate a new datum without generating it return - if(!chemical_reagents_list[id]) + if(!GLOB.chemical_reagents_list[id]) generate_name() generate_stats() - chemical_reagents_list[id] = src - make_alike(chemical_reagents_list[id]) + GLOB.chemical_reagents_list[id] = src + make_alike(GLOB.chemical_reagents_list[id]) recalculate_variables() /datum/chemical_reaction/generated/New() //Generate recipe if(!id) //So we can initiate a new datum without generating it return - if(!chemical_reactions_list[id]) + if(!GLOB.chemical_reactions_list[id]) generate_recipe() - chemical_reactions_list[id] = src - make_alike(chemical_reactions_list[id]) + GLOB.chemical_reactions_list[id] = src + make_alike(GLOB.chemical_reactions_list[id]) /////////Tier 1 /datum/chemical_reaction/generated/alpha diff --git a/code/modules/reagents/chemistry_machinery/acid_harness.dm b/code/modules/reagents/chemistry_machinery/acid_harness.dm index 49cb8860fa00..b349b3224d1a 100644 --- a/code/modules/reagents/chemistry_machinery/acid_harness.dm +++ b/code/modules/reagents/chemistry_machinery/acid_harness.dm @@ -39,6 +39,10 @@ /obj/item/storage/internal/accessory/black_vest/acid_harness storage_slots = 2 + can_hold = list( + /obj/item/reagent_container/glass/beaker, + /obj/item/cell, + ) /obj/item/clothing/accessory/storage/black_vest/acid_harness name = "A.C.I.D. Harness" @@ -439,10 +443,10 @@ else if(inject_conditions & ACID_SCAN_CONDITION_DEFIB && vitals_scan < ACID_VITALS_DEAD && last_vitals_scan & ACID_SCAN_CONDITION_DEATH) condition_scan |= ACID_SCAN_CONDITION_DEFIB //If we were previously dead and are now alive, we assume we got defibbed - if(inject_conditions & ACID_SCAN_CONDITION_CONCUSSION && (user.knocked_down || user.knocked_out)) + if(inject_conditions & ACID_SCAN_CONDITION_CONCUSSION && (HAS_TRAIT(src, TRAIT_KNOCKEDOUT) || HAS_TRAIT(src, TRAIT_FLOORED))) condition_scan |= ACID_SCAN_CONDITION_CONCUSSION - if(inject_conditions & ACID_SCAN_CONDITION_INTOXICATION && (user.dazed || user.slowed || user.confused || user.drowsyness || user.dizziness || user.druggy)) + if(inject_conditions & ACID_SCAN_CONDITION_INTOXICATION && (HAS_TRAIT(src, TRAIT_DAZED) || user.slowed || user.confused || user.drowsyness || user.dizziness || user.druggy)) condition_scan |= ACID_SCAN_CONDITION_INTOXICATION //Compare diff --git a/code/modules/reagents/chemistry_machinery/autodispenser.dm b/code/modules/reagents/chemistry_machinery/autodispenser.dm index 3486e97524b8..eed96564da71 100644 --- a/code/modules/reagents/chemistry_machinery/autodispenser.dm +++ b/code/modules/reagents/chemistry_machinery/autodispenser.dm @@ -154,8 +154,7 @@ data["multiplier"] = multiplier data["cycle_limit"] = cycle_limit data["automode"] = automode - data["linked_storage"] = linked_storage - data["networked_storage"] = linked_storage.is_in_network() + data["networked_storage"] = linked_storage?.is_in_network() data["smartlink"] = smartlink data["outputmode"] = outputmode data["buffervolume"] = reagents.total_volume @@ -347,8 +346,7 @@ C.reagents.trans_to(container, amount) //We don't care about keeping empty bottles stored if(C.reagents.total_volume <= 0 && istypestrict(C,/obj/item/reagent_container/glass/bottle)) - linked_storage.item_quants[C.name]-- - qdel(C) //Might want to connect it to a disposal system later instead + linked_storage.delete_contents(C) if(stage_missing) amount = stage_missing diff --git a/code/modules/reagents/chemistry_machinery/centrifuge.dm b/code/modules/reagents/chemistry_machinery/centrifuge.dm index b21c52112d0f..6143313377a0 100644 --- a/code/modules/reagents/chemistry_machinery/centrifuge.dm +++ b/code/modules/reagents/chemistry_machinery/centrifuge.dm @@ -89,7 +89,7 @@ tgui_interact(user) return if(output_container) - to_chat(user, SPAN_NOTICE("You remove the [output_container] from the [src].")) + to_chat(user, SPAN_NOTICE("You remove [output_container] from the [src].")) user.put_in_active_hand(output_container) output_container = null if(input_container) @@ -97,7 +97,7 @@ else icon_state = "centrifuge_empty_open" else if(input_container) - to_chat(user, SPAN_NOTICE("You remove the [input_container] from the [src].")) + to_chat(user, SPAN_NOTICE("You remove [input_container] from the [src].")) user.put_in_active_hand(input_container) input_container = null icon_state = "centrifuge_empty_open" diff --git a/code/modules/reagents/chemistry_machinery/chem_dispenser.dm b/code/modules/reagents/chemistry_machinery/chem_dispenser.dm index 8de20ca2b79a..62b095ababbe 100644 --- a/code/modules/reagents/chemistry_machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry_machinery/chem_dispenser.dm @@ -1,10 +1,16 @@ +#define DISPENSER_UNHACKABLE -1 +#define DISPENSER_NOT_HACKED 0 +#define DISPENSER_HACKED 1 + /obj/structure/machinery/chem_dispenser - name = "chem dispenser" + name = "chemical dispenser" + desc = "A complex machine for mixing elements into chemicals. A Wey-Yu product." density = TRUE anchored = TRUE icon = 'icons/obj/structures/machinery/science_machines.dmi' icon_state = "dispenser" use_power = USE_POWER_NONE + wrenchable = FALSE idle_power_usage = 40 layer = BELOW_OBJ_LAYER //So beakers reliably appear above it var/req_skill = SKILL_MEDICAL @@ -13,13 +19,37 @@ var/obj/structure/machinery/chem_storage/chem_storage var/network = "Ground" var/amount = 30 - var/accept_glass = 0 //At 0 ONLY accepts glass containers. Kinda misleading varname. + var/accept_beaker_only = TRUE var/obj/item/reagent_container/beaker = null var/ui_check = 0 var/static/list/possible_transfer_amounts = list(5,10,20,30,40) - var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine", - "sodium","aluminum","silicon","phosphorus","sulfur","chlorine","potassium","iron", - "copper","mercury","radium","water","ethanol","sugar","sulphuric acid") + var/list/dispensable_reagents = list( + "hydrogen", + "lithium", + "carbon", + "nitrogen", + "oxygen", + "fluorine", + "sodium", + "aluminum", + "silicon", + "phosphorus", + "sulfur", + "chlorine", + "potassium", + "iron", + "copper", + "mercury", + "radium", + "water", + "ethanol", + "sugar", + "sulphuric acid", + ) + /// Has it been hacked + var/hacked_check = DISPENSER_UNHACKABLE + /// Additional reagents gotten when it is hacked + var/hacked_reagents = list() /obj/structure/machinery/chem_dispenser/medbay network = "Medbay" @@ -29,7 +59,7 @@ /obj/structure/machinery/chem_dispenser/process() if(!chem_storage) - chem_storage = chemical_data.connect_chem_storage(network) + chem_storage = GLOB.chemical_data.connect_chem_storage(network) /obj/structure/machinery/chem_dispenser/Initialize() . = ..() @@ -38,7 +68,7 @@ /obj/structure/machinery/chem_dispenser/Destroy() if(!chem_storage) - chem_storage = chemical_data.disconnect_chem_storage(network) + chem_storage = GLOB.chemical_data.disconnect_chem_storage(network) return ..() /obj/structure/machinery/chem_dispenser/ex_act(severity) @@ -111,9 +141,9 @@ var/list/beakerContents = list() var/beakerCurrentVolume = 0 if(beaker && beaker.reagents && beaker.reagents.reagent_list.len) - for(var/datum/reagent/R in beaker.reagents.reagent_list) - beakerContents += list(list("name" = R.name, "volume" = R.volume)) // list in a list because Byond merges the first list... - beakerCurrentVolume += R.volume + for(var/datum/reagent/current_reagent in beaker.reagents.reagent_list) + beakerContents += list(list("name" = current_reagent.name, "volume" = current_reagent.volume)) // list in a list because Byond merges the first list... + beakerCurrentVolume += current_reagent.volume .["beakerContents"] = beakerContents if (beaker) @@ -125,7 +155,7 @@ var/list/chemicals = list() for(var/re in dispensable_reagents) - var/datum/reagent/temp = chemical_reagents_list[re] + var/datum/reagent/temp = GLOB.chemical_reagents_list[re] if(temp) var/chemname = temp.name chemicals.Add(list(list("title" = chemname, "id" = temp.id))) @@ -149,11 +179,11 @@ return var/reagent_name = params["reagent"] if(beaker && dispensable_reagents.Find(reagent_name)) - var/obj/item/reagent_container/B = beaker - var/datum/reagents/R = B.reagents - var/space = R.maximum_volume - R.total_volume + var/obj/item/reagent_container/current_beaker = beaker + var/datum/reagents/current_reagent = current_beaker.reagents + var/space = current_reagent.maximum_volume - current_reagent.total_volume - R.add_reagent(reagent_name, min(amount, chem_storage.energy * 10, space)) + current_reagent.add_reagent(reagent_name, min(amount, chem_storage.energy * 10, space)) chem_storage.energy = max(chem_storage.energy - min(amount, chem_storage.energy * 10, space) / 10, 0) . = TRUE @@ -170,32 +200,62 @@ replace_beaker(usr) . = TRUE -/obj/structure/machinery/chem_dispenser/attackby(obj/item/reagent_container/B, mob/user) - if(isrobot(user)) - return - if(istype(B, /obj/item/reagent_container/glass) || istype(B, /obj/item/reagent_container/food)) - if(!accept_glass && istype(B,/obj/item/reagent_container/food)) +/obj/structure/machinery/chem_dispenser/attackby(obj/item/reagent_container/attacking_object, mob/user) + if(istype(attacking_object, /obj/item/reagent_container/glass) || istype(attacking_object, /obj/item/reagent_container/food)) + if(accept_beaker_only && istype(attacking_object,/obj/item/reagent_container/food)) to_chat(user, SPAN_NOTICE("This machine only accepts beakers")) - if(user.drop_inv_item_to_loc(B, src)) + if(user.drop_inv_item_to_loc(attacking_object, src)) var/obj/item/old_beaker = beaker - beaker = B + beaker = attacking_object if(old_beaker) - to_chat(user, SPAN_NOTICE("You swap out \the [old_beaker] for \the [B].")) + to_chat(user, SPAN_NOTICE("You swap out [old_beaker] for [attacking_object].")) user.put_in_hands(old_beaker) else - to_chat(user, SPAN_NOTICE("You set \the [B] on the machine.")) + to_chat(user, SPAN_NOTICE("You set [attacking_object] on the machine.")) SStgui.update_uis(src) update_icon() return + if(HAS_TRAIT(attacking_object, TRAIT_TOOL_MULTITOOL)) + switch(hacked_check) + if(DISPENSER_UNHACKABLE) + to_chat(user, SPAN_NOTICE("[src] cannot be hacked.")) + if(DISPENSER_NOT_HACKED) + user.visible_message("[user] modifies [src] with [attacking_object], turning a light on.", "You enable a light in [src].") + dispensable_reagents += hacked_reagents + hacked_check = DISPENSER_HACKED + if(DISPENSER_HACKED) + user.visible_message("[user] modifies [src] with [attacking_object], turning a light off.", "You disable a light in [src].") + dispensable_reagents -= hacked_reagents + hacked_check = DISPENSER_NOT_HACKED + + if(HAS_TRAIT(attacking_object, TRAIT_TOOL_WRENCH)) + if(!wrenchable) + to_chat(user, "[src] cannot be unwrenched.") + return + + if(!do_after(user, 2 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + return + if(!src) + return + + playsound(loc, 'sound/items/Ratchet.ogg', 25, 1) + anchored = !anchored + if(anchored) + user.visible_message("[user] tightens the bolts securing [src] to the surface.", "You tighten the bolts securing [src] to the surface.") + return + + user.visible_message("[user] unfastens the bolts securing [src] to the surface.", "You unfasten the bolts securing [src] to the surface.") + /obj/structure/machinery/chem_dispenser/attack_remote(mob/user as mob) return src.attack_hand(user) /obj/structure/machinery/chem_dispenser/attack_hand(mob/user as mob) if(stat & BROKEN) + to_chat(user, SPAN_WARNING("[src] is inoperative.")) return if(req_skill && !skillcheck(user, req_skill, req_skill_level)) - to_chat(user, SPAN_WARNING("You don't have the training to use this.")) + to_chat(user, SPAN_WARNING("You don't have the training to use [src].")) return tgui_interact(user) @@ -206,9 +266,10 @@ ui_title = "Soda Dispens-o-matic" req_skill = null req_skill_level = null - accept_glass = 1 + accept_beaker_only = FALSE wrenchable = TRUE network = "Misc" + hacked_check = DISPENSER_NOT_HACKED dispensable_reagents = list( "water", "ice", @@ -233,76 +294,43 @@ "lemonjuice", "banana", ) - var/hackedcheck = 0 - -/obj/structure/machinery/chem_dispenser/soda/attackby(obj/item/B as obj, mob/user as mob) - ..() - if(HAS_TRAIT(B, TRAIT_TOOL_MULTITOOL)) - if(hackedcheck == 0) - to_chat(user, "You change the mode from 'Soda Magic' to 'Milking Time'.") - dispensable_reagents += list("milk","soymilk") - hackedcheck = 1 - return - - else - to_chat(user, "You change the mode from 'Milking Time' to 'Soda Magic'.") - dispensable_reagents -= list("milk","soymilk") - hackedcheck = 0 - return - else if(HAS_TRAIT(B, TRAIT_TOOL_WRENCH)) - if(!wrenchable) return - - if(do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - if(!src) return - playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) - switch (anchored) - if (FALSE) - anchored = TRUE - user.visible_message("[user] tightens the bolts securing \the [src] to the surface.", "You tighten the bolts securing \the [src] to the surface.") - if (TRUE) - user.visible_message("[user] unfastens the bolts securing \the [src] to the surface.", "You unfasten the bolts securing \the [src] to the surface.") - anchored = FALSE - return + hacked_reagents = list( + "milk", + "soymilk", + ) -/obj/structure/machinery/chem_dispenser/beer +/obj/structure/machinery/chem_dispenser/soda/beer icon_state = "booze_dispenser" name = "booze dispenser" ui_title = "Booze Portal 9001" - req_skill = null - req_skill_level = null - accept_glass = 1 - wrenchable = TRUE - network = "Misc" desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one." - dispensable_reagents = list("water","ice","sodawater","sugar","tonic","beer","kahlua","whiskey","sake","wine","vodka","gin","rum","vermouth","cognac","ale","mead","thirteenloko","tequila") - var/hackedcheck = 0 - -/obj/structure/machinery/chem_dispenser/beer/attackby(obj/item/B as obj, mob/user as mob) - ..() - - if(HAS_TRAIT(B, TRAIT_TOOL_MULTITOOL)) - if(hackedcheck == 0) - to_chat(user, "You disable the 'Weyland-Yutani-are-cheap-bastards' lock, enabling hidden and very expensive boozes.") - dispensable_reagents += list("goldschlager","patron","absinthe") - hackedcheck = 1 - return + dispensable_reagents = list( + "water", + "ice", + "sodawater", + "sugar", + "tonic", + "beer", + "kahlua", + "whiskey", + "sake", + "wine", + "vodka", + "gin", + "rum", + "vermouth", + "cognac", + "ale", + "mead", + "thirteenloko", + "tequila", + ) + hacked_reagents = list( + "goldschlager", + "patron", + "absinthe", + ) - else - to_chat(user, "You re-enable the 'Weyland-Yutani-are-cheap-bastards' lock, disabling hidden and very expensive boozes.") - dispensable_reagents -= list("goldschlager","patron","absinthe") - hackedcheck = 0 - return - else if(HAS_TRAIT(B, TRAIT_TOOL_WRENCH)) - if(!wrenchable) return - - if(do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - if(!src) return - playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) - switch (anchored) - if (FALSE) - anchored = TRUE - user.visible_message("[user] tightens the bolts securing \the [src] to the surface.", "You tighten the bolts securing \the [src] to the surface.") - if (TRUE) - user.visible_message("[user] unfastens the bolts securing \the [src] to the surface.", "You unfasten the bolts securing \the [src] to the surface.") - anchored = FALSE - return +#undef DISPENSER_UNHACKABLE +#undef DISPENSER_NOT_HACKED +#undef DISPENSER_HACKED diff --git a/code/modules/reagents/chemistry_machinery/chem_master.dm b/code/modules/reagents/chemistry_machinery/chem_master.dm index 9d2d1ff10a0c..dc5206bb2df5 100644 --- a/code/modules/reagents/chemistry_machinery/chem_master.dm +++ b/code/modules/reagents/chemistry_machinery/chem_master.dm @@ -215,7 +215,7 @@ return if(href_list["createpill_multiple"]) - count = Clamp(tgui_input_number(user, "Select the number of pills to make. (max: [max_pill_count])", "Pills to make", pillamount, max_pill_count, 1), 0, max_pill_count) + count = clamp(tgui_input_number(user, "Select the number of pills to make. (max: [max_pill_count])", "Pills to make", pillamount, max_pill_count, 1), 0, max_pill_count) if(!count) return @@ -237,8 +237,6 @@ while (count--) var/obj/item/reagent_container/pill/P = new/obj/item/reagent_container/pill(loc) P.pill_desc = "A custom pill." - P.pixel_x = rand(-7, 7) //random position - P.pixel_y = rand(-7, 7) P.icon_state = "pill"+pillsprite reagents.trans_to(P,amount_per_pill) if(loaded_pill_bottle) @@ -271,8 +269,6 @@ P.name = "[name] vial" reagents.trans_to(P, 30) - P.pixel_x = rand(-7, 7) //random position - P.pixel_y = rand(-7, 7) P.update_icon() if(href_list["store"]) diff --git a/code/modules/reagents/chemistry_machinery/chem_simulator.dm b/code/modules/reagents/chemistry_machinery/chem_simulator.dm index 8889efc9ef80..8a95e3f3b07e 100644 --- a/code/modules/reagents/chemistry_machinery/chem_simulator.dm +++ b/code/modules/reagents/chemistry_machinery/chem_simulator.dm @@ -13,7 +13,7 @@ #define SIMULATION_STAGE_BEGIN 6 /obj/structure/machinery/chem_simulator - name = "Synthesis Simulator" + name = "synthesis simulator" desc = "This computer uses advanced algorithms to perform simulations of reagent properties, for the purpose of calculating the synthesis required to make a new variant." icon = 'icons/obj/structures/machinery/science_machines_64x32.dmi' icon_state = "modifier" @@ -62,7 +62,7 @@ ..() if(inoperable()) icon_state = "modifier_off" - nanomanager.update_uis(src) // update all UIs attached to src + SSnano.nanomanager.update_uis(src) // update all UIs attached to src /obj/structure/machinery/chem_simulator/attackby(obj/item/B, mob/living/user) if(!skillcheck(user, SKILL_RESEARCH, SKILL_RESEARCH_TRAINED)) @@ -87,13 +87,13 @@ to_chat(user, SPAN_WARNING("Chemical data already inserted.")) return else - to_chat(user, SPAN_WARNING("The [src] refuses the [B].")) + to_chat(user, SPAN_WARNING("[src] refuses [B].")) return user.drop_inv_item_to_loc(B, src) - to_chat(user, SPAN_NOTICE("You insert [B] into the [src].")) + to_chat(user, SPAN_NOTICE("You insert [B] into [src].")) flick("[icon_state]_reading",src) update_costs() - nanomanager.update_uis(src) // update all UIs attached to src + SSnano.nanomanager.update_uis(src) // update all UIs attached to src /obj/structure/machinery/chem_simulator/attack_hand(mob/user as mob) if(inoperable()) @@ -105,7 +105,7 @@ /obj/structure/machinery/chem_simulator/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 0) var/list/data = list( - "rsc_credits" = chemical_data.rsc_credits, + "rsc_credits" = GLOB.chemical_data.rsc_credits, "target" = target, "reference" = reference, "mode" = mode, @@ -122,7 +122,7 @@ if(simulating == SIMULATION_STAGE_FINAL) for(var/reagent_id in recipe_targets) - var/datum/reagent/R = chemical_reagents_list[reagent_id] + var/datum/reagent/R = GLOB.chemical_reagents_list[reagent_id] var/list/id_name[0] id_name["[R.id]"] = R.name data["recipe_targets"] += id_name @@ -134,7 +134,7 @@ //List of all available properties data["property_data_list"] = list() - for(var/datum/chem_property/P in chemical_data.research_property_data) + for(var/datum/chem_property/P in GLOB.chemical_data.research_property_data) data["property_codings"][P.name] = P.code if(template_filter && !check_bitflag(P.category, template_filter)) continue @@ -182,7 +182,7 @@ else data["reference_info"] = "" - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + ui = SSnano.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if(!ui) ui = new(user, src, ui_key, "chem_simulator.tmpl", "Synthesis Simulator", 800, 550) ui.set_initial_data(data) @@ -198,7 +198,7 @@ if(user.stat || user.is_mob_restrained() || !in_range(src, user)) return - if(mode == MODE_CREATE && chemical_data.has_new_properties) + if(mode == MODE_CREATE && GLOB.chemical_data.has_new_properties) update_costs() if(href_list["simulate"] && ready) @@ -252,7 +252,7 @@ return if(mode == MODE_CREATE) var/target_name = href_list["set_target"] - for(var/datum/chem_property/P in chemical_data.research_property_data) + for(var/datum/chem_property/P in GLOB.chemical_data.research_property_data) if(P.name == target_name) if(target_property && target_property.name == target_name) //Toggle the property @@ -294,15 +294,15 @@ newname = reject_bad_name(newname, TRUE, 20, FALSE) if(isnull(newname)) to_chat(user, "Bad name.") - else if(chemical_reagents_list[newname]) + else if(GLOB.chemical_reagents_list[newname]) to_chat(user, "Name already taken.") else creation_name = newname else if(href_list["set_level"] && target_property) var/level_to_set = 1 - if(chemical_data.clearance_level <= 2) + if(GLOB.chemical_data.clearance_level <= 2) level_to_set = tgui_input_list(usr, "Set target level for [target_property.name]:","[src]", list(1,2,3,4)) - else if(chemical_data.clearance_level <= 4) + else if(GLOB.chemical_data.clearance_level <= 4) level_to_set = tgui_input_list(usr, "Set target level for [target_property.name]:","[src]", list(1,2,3,4,5,6,7,8)) else level_to_set = tgui_input_list(usr, "Set target level for [target_property.name]:","[src]", list(1,2,3,4,5,6,7,8,9,10)) @@ -350,7 +350,7 @@ calculate_creation_cost() ready = check_ready() playsound(loc, pick('sound/machines/computer_typing1.ogg','sound/machines/computer_typing2.ogg','sound/machines/computer_typing3.ogg'), 5, 1) - nanomanager.update_uis(src) + SSnano.nanomanager.update_uis(src) /obj/structure/machinery/chem_simulator/process() if(inoperable()) @@ -384,7 +384,7 @@ C.name = C.id if(C.id in simulations) //We've already simulated this before, so we don't need to continue - C = chemical_reagents_list[C.id] + C = GLOB.chemical_reagents_list[C.id] print(C.id) status_bar = "SIMULATION COMPLETE" simulating = SIMULATION_STAGE_OFF @@ -398,13 +398,13 @@ else ready = check_ready() stop_processing() - nanomanager.update_uis(src) + SSnano.nanomanager.update_uis(src) /obj/structure/machinery/chem_simulator/proc/update_costs() property_costs = list() var/only_positive = TRUE if(mode == MODE_CREATE) - for(var/datum/chem_property/P in chemical_data.research_property_data) + for(var/datum/chem_property/P in GLOB.chemical_data.research_property_data) property_costs[P.name] = max(abs(P.value), 1) else if(target && target.data && target.completed) for(var/datum/chem_property/P in target.data.properties) @@ -431,7 +431,7 @@ if(only_positive) for(var/P in property_costs) property_costs[P] = property_costs[P] + 1 - chemical_data.has_new_properties = FALSE + GLOB.chemical_data.has_new_properties = FALSE //Here the cost for creating a chemical is calculated. If you're looking to rebalance create mode, this is where you do it /obj/structure/machinery/chem_simulator/proc/calculate_creation_cost() @@ -443,7 +443,7 @@ for(var/datum/chem_property/P in creation_template) creation_cost += max(abs(P.value), 1) * P.level if(P.level > 5) // a penalty is added at each level above 5 (+1 at 6, +2 at 7, +4 at 8, +5 at 9, +7 at 10) - creation_cost += P.level - 6 + n_ceil((P.level - 5) / 2) + creation_cost += P.level - 6 + Ceiling((P.level - 5) / 2) creation_cost += ((new_od_level - 10) / 5) * 3 //3 cost for every 5 units above 10 for(var/rarity in creation_complexity) switch(rarity) @@ -468,7 +468,7 @@ new_od_level = max(new_od_level - 5, 5) /obj/structure/machinery/chem_simulator/proc/prepare_recipe_options() - var/datum/chemical_reaction/generated/O = chemical_reactions_list[target.data.id] + var/datum/chemical_reaction/generated/O = GLOB.chemical_reactions_list[target.data.id] if(!O) //If it doesn't have a recipe, go immediately to finalizing, which will then generate a new associated recipe return FALSE recipe_targets = list() //reset @@ -481,7 +481,7 @@ if(LAZYLEN(R.required_reagents) > 2) LAZYREMOVE(R.required_reagents, pick(R.required_reagents)) var/new_component_id = R.add_component(tier = max(min(target.data.chemclass, CHEM_CLASS_COMMON), target.data.gen_tier, 1)) - var/datum/reagent/new_component = chemical_reagents_list[new_component_id] + var/datum/reagent/new_component = GLOB.chemical_reagents_list[new_component_id] //Make sure we don't have an identical reaction and that the component is identified if(R.check_duplicate() || R.check_reaction_uses_all_default_medical() || new_component.chemclass >= CHEM_CLASS_SPECIAL) R.required_reagents = old_reaction.Copy() @@ -512,27 +512,27 @@ status_bar = "TARGET CAN NOT BE ALTERED" return FALSE //Safety check in case of irregular papers - var/datum/chemical_reaction/C = chemical_reactions_list[target.data.id] + var/datum/chemical_reaction/C = GLOB.chemical_reactions_list[target.data.id] if(C) for(var/component in C.required_reagents) - var/datum/reagent/R = chemical_reagents_list[component] - if(R && R.chemclass >= CHEM_CLASS_SPECIAL && !chemical_data.chemical_identified_list[R.id]) + var/datum/reagent/R = GLOB.chemical_reagents_list[component] + if(R && R.chemclass >= CHEM_CLASS_SPECIAL && !GLOB.chemical_data.chemical_identified_list[R.id]) status_bar = "UNREGISTERED COMPONENTS DETECTED" return FALSE for(var/catalyst in C.required_catalysts) - var/datum/reagent/R = chemical_reagents_list[catalyst] - if(R && R.chemclass >= CHEM_CLASS_SPECIAL && !chemical_data.chemical_identified_list[R.id]) + var/datum/reagent/R = GLOB.chemical_reagents_list[catalyst] + if(R && R.chemclass >= CHEM_CLASS_SPECIAL && !GLOB.chemical_data.chemical_identified_list[R.id]) status_bar = "UNREGISTERED CATALYSTS DETECTED" return FALSE if(target_property) - if(property_costs[target_property.name] > chemical_data.rsc_credits) + if(property_costs[target_property.name] > GLOB.chemical_data.rsc_credits) status_bar = "INSUFFICIENT FUNDS" return FALSE if(target_property.category & PROPERTY_TYPE_UNADJUSTABLE) status_bar = "TARGET PROPERTY CAN NOT BE SIMULATED" return FALSE if(mode == MODE_AMPLIFY) - if(target_property.level >= chemical_data.clearance_level*TECHTREE_LEVEL_MULTIPLIER + 2 && chemical_data.clearance_level < 5) + if(target_property.level >= GLOB.chemical_data.clearance_level*TECHTREE_LEVEL_MULTIPLIER + 2 && GLOB.chemical_data.clearance_level < 5) status_bar = "CLEARANCE INSUFFICIENT FOR AMPLIFICATION" return FALSE if(target && length(target.data.properties) < 2) @@ -560,7 +560,7 @@ if(LAZYLEN(creation_name) < 2) status_bar = "NAME NOT SET" return FALSE - if(creation_cost > chemical_data.rsc_credits) + if(creation_cost > GLOB.chemical_data.rsc_credits) status_bar = "INSUFFICIENT FUNDS" return FALSE else if(!target) @@ -575,17 +575,18 @@ flick("[icon_state]_printing",src) sleep(10) var/obj/item/paper/research_report/report = new /obj/item/paper/research_report/(loc) - var/datum/reagent/D = chemical_reagents_list[id] + var/datum/reagent/D = GLOB.chemical_reagents_list[id] + var/datum/asset/asset = get_asset_datum(/datum/asset/simple/paper) report.name = "Simulation result for [D.name]" - report.info += "

        Official Company Document
        Simulated Synthesis Report

        Result for [D.name]

        " + report.info += "

        Official Company Document
        Simulated Synthesis Report

        Result for [D.name]

        " report.generate(D) - report.info += "

        This report was automatically printed by the Synthesis Simulator.
        The [MAIN_SHIP_NAME], [time2text(world.timeofday, "MM/DD")]/[game_year], [worldtime2text()]

        \n" + report.info += "

        This report was automatically printed by the Synthesis Simulator.
        The [MAIN_SHIP_NAME], [time2text(world.timeofday, "MM/DD")]/[GLOB.game_year], [worldtime2text()]

        \n" playsound(loc, 'sound/machines/twobeep.ogg', 15, 1) if(is_new) - chemical_data.save_document(report, "Synthesis Simulations", report.name) + GLOB.chemical_data.save_document(report, "Synthesis Simulations", report.name) /obj/structure/machinery/chem_simulator/proc/encode_reagent(datum/reagent/C) - var/datum/reagent/O = chemical_reagents_list[C.original_id] //So make the new name based on the Original + var/datum/reagent/O = GLOB.chemical_reagents_list[C.original_id] //So make the new name based on the Original var/suffix = " " for(var/datum/chem_property/P in C.properties) suffix += P.code+"[P.level]" @@ -660,7 +661,7 @@ R.gen_tier = C.gen_tier if(mode != MODE_CREATE) - assoc_R = chemical_reactions_list[target.data.id] + assoc_R = GLOB.chemical_reactions_list[target.data.id] if(!assoc_R) //no associated recipe found if(mode == MODE_CREATE) assoc_R = C.generate_assoc_recipe(creation_complexity) @@ -689,25 +690,25 @@ //Pay if(mode == MODE_CREATE) - chemical_data.update_credits(creation_cost * -1) + GLOB.chemical_data.update_credits(creation_cost * -1) else - chemical_data.update_credits(property_costs[target_property.name] * -1) + GLOB.chemical_data.update_credits(property_costs[target_property.name] * -1) //Refund 1 credit if a rare or rarer target was added - var/datum/reagent/component = chemical_reagents_list[recipe_target] + var/datum/reagent/component = GLOB.chemical_reagents_list[recipe_target] if(component && component.chemclass >= CHEM_CLASS_RARE) - chemical_data.update_credits(1) + GLOB.chemical_data.update_credits(1) //Save the reagent C.generate_description() C.chemclass = CHEM_CLASS_RARE //So that we can always scan this in the future, don't generate defcon, and don't get a loop of making credits - chemical_reagents_list[C.id] = C + GLOB.chemical_reagents_list[C.id] = C LAZYADD(simulations, C.id) //Remember we've simulated this //Save the reaction R.id = C.id R.result = C.id - chemical_reactions_list[R.id] = R + GLOB.chemical_reactions_list[R.id] = R R.add_to_filtered_list() status_bar = "SIMULATION COMPLETE" print(C.id, TRUE) diff --git a/code/modules/reagents/chemistry_machinery/chem_storage.dm b/code/modules/reagents/chemistry_machinery/chem_storage.dm index 3a05201dea25..3df417741d82 100644 --- a/code/modules/reagents/chemistry_machinery/chem_storage.dm +++ b/code/modules/reagents/chemistry_machinery/chem_storage.dm @@ -31,11 +31,11 @@ /obj/structure/machinery/chem_storage/Initialize() . = ..() - chemical_data.add_chem_storage(src) + GLOB.chemical_data.add_chem_storage(src) start_processing() /obj/structure/machinery/chem_storage/Destroy() - chemical_data.remove_chem_storage(src) + GLOB.chemical_data.remove_chem_storage(src) return ..() /obj/structure/machinery/chem_storage/get_examine_text(mob/user) @@ -57,4 +57,4 @@ if(energy >= max_energy) return energy = min(energy + recharge_rate, max_energy) - use_power(1500) // This thing uses up alot of power (this is still low as shit for creating reagents from thin air) + use_power(1500) // This thing uses up a lot of power (this is still low as shit for creating reagents from thin air) diff --git a/code/modules/reagents/chemistry_machinery/pandemic.dm b/code/modules/reagents/chemistry_machinery/pandemic.dm index aef4823effda..5cd7f6584705 100644 --- a/code/modules/reagents/chemistry_machinery/pandemic.dm +++ b/code/modules/reagents/chemistry_machinery/pandemic.dm @@ -59,10 +59,10 @@ if(B) var/datum/disease/D = null if(!vaccine_type) - D = archive_diseases[path] + D = GLOB.archive_diseases[path] vaccine_type = path else - if(vaccine_type in diseases) + if(vaccine_type in GLOB.diseases) D = new vaccine_type(0, null) if(D) @@ -90,11 +90,11 @@ B.icon_state = "bottle3" var/datum/disease/D = null if(!virus_type) - var/datum/disease/advance/A = archive_diseases[href_list["create_virus_culture"]] + var/datum/disease/advance/A = GLOB.archive_diseases[href_list["create_virus_culture"]] if(A) D = new A.type(0, A) else - if(virus_type in diseases) // Make sure this is a disease + if(virus_type in GLOB.diseases) // Make sure this is a disease D = new virus_type(0, null) var/list/data = list("viruses"=list(D)) var/name = strip_html(input(user,"Name:","Name the culture",D.name)) @@ -129,10 +129,10 @@ if(user.stat || user.is_mob_restrained()) return if(!in_range(src, user)) return var/id = href_list["name_disease"] - if(archive_diseases[id]) - var/datum/disease/advance/A = archive_diseases[id] + if(GLOB.archive_diseases[id]) + var/datum/disease/advance/A = GLOB.archive_diseases[id] A.AssignName(new_name) - for(var/datum/disease/advance/AD in active_diseases) + for(var/datum/disease/advance/AD in SSdisease.all_diseases) AD.Refresh() updateUsrDialog() @@ -184,7 +184,7 @@ if(istype(D, /datum/disease/advance)) var/datum/disease/advance/A = D - D = archive_diseases[A.GetDiseaseID()] + D = GLOB.archive_diseases[A.GetDiseaseID()] disease_creation = A.GetDiseaseID() if(D.name == "Unknown") dat += "Name Disease
        " @@ -216,7 +216,7 @@ var/disease_name = "Unknown" if(!ispath(type)) - var/datum/disease/advance/A = archive_diseases[type] + var/datum/disease/advance/A = GLOB.archive_diseases[type] if(A) disease_name = A.name else diff --git a/code/modules/reagents/chemistry_machinery/reagent_analyzer.dm b/code/modules/reagents/chemistry_machinery/reagent_analyzer.dm index 8b781407aec4..51db188826b8 100644 --- a/code/modules/reagents/chemistry_machinery/reagent_analyzer.dm +++ b/code/modules/reagents/chemistry_machinery/reagent_analyzer.dm @@ -13,22 +13,25 @@ /obj/structure/machinery/reagent_analyzer/attackby(obj/item/B, mob/living/user) if(processing) - to_chat(user, SPAN_WARNING("The [src] is still processing!")) + to_chat(user, SPAN_WARNING("[src] is still processing!")) return if(!skillcheck(usr, SKILL_RESEARCH, SKILL_RESEARCH_TRAINED)) to_chat(user, SPAN_WARNING("You have no idea how to use this.")) return if(istype(B, /obj/item/reagent_container/glass/beaker/vial)) if(sample || status) - to_chat(user, SPAN_WARNING("Something is already loaded into the [src].")) + to_chat(user, SPAN_WARNING("Something is already loaded into [src].")) return if(user.drop_inv_item_to_loc(B, src)) sample = B icon_state = "reagent_analyzer_sample" - to_chat(user, SPAN_NOTICE("You insert [B] and start configuring the [src].")) + to_chat(user, SPAN_NOTICE("You insert [B] and start configuring [src].")) updateUsrDialog() if(!do_after(user, 1 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC)) return + if(!sample) + to_chat(user, SPAN_WARNING("Someone else removed the sample. Make up your mind!")) + return processing = TRUE if(sample.reagents.total_volume < 30 || sample.reagents.reagent_list.len > 1) icon_state = "reagent_analyzer_error" @@ -72,12 +75,12 @@ /obj/structure/machinery/reagent_analyzer/attack_hand(mob/user as mob) if(processing) - to_chat(user, SPAN_WARNING("The [src] is still processing!")) + to_chat(user, SPAN_WARNING("[src] is still processing!")) return if(!sample) - to_chat(user, SPAN_WARNING("The [src] is empty.")) + to_chat(user, SPAN_WARNING("[src] is empty.")) return - to_chat(user, SPAN_NOTICE("You remove the [sample] from the [src].")) + to_chat(user, SPAN_NOTICE("You remove [sample] from [src].")) user.put_in_active_hand(sample) sample = null icon_state = "reagent_analyzer" @@ -89,34 +92,35 @@ var/datum/reagent/S = sample.reagents.reagent_list[1] S.print_report(report = report, sample_number = sample_number) sample.name = "vial ([S.name])" - chemical_data.save_document(report, "XRF Scans", "[sample_number] - [report.name]") + GLOB.chemical_data.save_document(report, "XRF Scans", "[sample_number] - [report.name]") if(S.chemclass < CHEM_CLASS_SPECIAL || (S.chemclass >= CHEM_CLASS_SPECIAL && report.completed)) - chemical_data.save_new_properties(S.properties) - if(S.chemclass >= CHEM_CLASS_SPECIAL && !chemical_data.chemical_identified_list[S.id]) + GLOB.chemical_data.save_new_properties(S.properties) + if(S.chemclass >= CHEM_CLASS_SPECIAL && !GLOB.chemical_data.chemical_identified_list[S.id]) if(last_used) last_used.count_niche_stat(STATISTICS_NICHE_CHEMS) var/datum/chem_property/P = S.get_property(PROPERTY_DNA_DISINTEGRATING) if(P) - if(chemical_data.clearance_level >= S.gen_tier) + if(GLOB.chemical_data.clearance_level >= S.gen_tier) P.trigger() else return - chemical_data.complete_chemical(S) + GLOB.chemical_data.complete_chemical(S) else + var/datum/asset/asset = get_asset_datum(/datum/asset/simple/paper) report.name = "Analysis of ERROR" - report.info += "

        Official Weyland-Yutani Document
        Reagent Analysis Print

        Analysis ERROR

        " + report.info += "

        Official Weyland-Yutani Document
        Reagent Analysis Print

        Analysis ERROR

        " report.info += "Result:
        Analysis failed for sample #[sample_number].

        \n" report.info += "Reason for error:
        [reason]
        \n" - report.info += "

        This report was automatically printed by the A-XRF Scanner.
        The [MAIN_SHIP_NAME], [time2text(world.timeofday, "MM/DD")]/[game_year], [worldtime2text()]

        \n" + report.info += "

        This report was automatically printed by the A-XRF Scanner.
        The [MAIN_SHIP_NAME], [time2text(world.timeofday, "MM/DD")]/[GLOB.game_year], [worldtime2text()]

        \n" /datum/reagent/proc/print_report(turf/loc, obj/item/paper/research_report/report, admin_spawned = FALSE, sample_number = 0) if(!report) report = new /obj/item/paper/research_report(loc) report.name = "Analysis of [name]" - - report.info += "

        Official Weyland-Yutani Document
        Automated A-XRF Report

        Analysis of [name]

        " + var/datum/asset/asset = get_asset_datum(/datum/asset/simple/paper) + report.info += "

        Official Weyland-Yutani Document
        Automated A-XRF Report

        Analysis of [name]

        " if(sample_number) report.info += "Results for sample: #[sample_number]
        \n" report.generate(src, admin_spawned) diff --git a/code/modules/reagents/chemistry_properties/prop_neutral.dm b/code/modules/reagents/chemistry_properties/prop_neutral.dm index d420623879ce..e1e59b8b886c 100644 --- a/code/modules/reagents/chemistry_properties/prop_neutral.dm +++ b/code/modules/reagents/chemistry_properties/prop_neutral.dm @@ -29,7 +29,7 @@ return list(REAGENT_CANCEL = TRUE) var/effectiveness = 1 if(M.stat != DEAD) - effectiveness = Clamp(max(M.oxyloss / 10, (BLOOD_VOLUME_NORMAL - M.blood_volume) / BLOOD_VOLUME_NORMAL) * 0.1 * level, 0.1, 1) + effectiveness = clamp(max(M.oxyloss / 10, (BLOOD_VOLUME_NORMAL - M.blood_volume) / BLOOD_VOLUME_NORMAL) * 0.1 * level, 0.1, 1) return list(REAGENT_FORCE = TRUE, REAGENT_EFFECT = effectiveness) /datum/chem_property/neutral/excreting @@ -199,8 +199,8 @@ M.druggy = min(M.druggy + 0.5 * potency * delta_time, potency * 10) /datum/chem_property/neutral/hallucinogenic/process_overdose(mob/living/M, potency = 1, delta_time) - if(isturf(M.loc) && !istype(M.loc, /turf/open/space) && M.canmove && !M.is_mob_restrained()) - step(M, pick(cardinal)) + if(isturf(M.loc) && !istype(M.loc, /turf/open/space) && (M.mobility_flags & MOBILITY_MOVE) && !M.is_mob_restrained()) + step(M, pick(GLOB.cardinals)) M.hallucination += 10 M.make_jittery(5) diff --git a/code/modules/reagents/chemistry_properties/prop_positive.dm b/code/modules/reagents/chemistry_properties/prop_positive.dm index 65099aa3e462..a8a11fc299ad 100644 --- a/code/modules/reagents/chemistry_properties/prop_positive.dm +++ b/code/modules/reagents/chemistry_properties/prop_positive.dm @@ -455,7 +455,7 @@ if(prob(10 * delta_time)) to_chat(M, SPAN_WARNING("You feel like you have the worst brain freeze ever!")) M.apply_effect(20, PARALYZE) - M.stunned = max(M.stunned,21) + M.apply_effect(20, STUN) /datum/chem_property/positive/neurocryogenic/process_overdose(mob/living/M, potency = 1, delta_time) M.bodytemperature = max(M.bodytemperature - 2.5 * potency * delta_time,0) @@ -481,24 +481,24 @@ description = "Antimicrobial property specifically targeting parasitic pathogens in the body disrupting their growth and potentially killing them." rarity = PROPERTY_UNCOMMON -/datum/chem_property/positive/antiparasitic/process(mob/living/M, potency = 1, delta_time) - if(!ishuman(M)) +/datum/chem_property/positive/antiparasitic/process(mob/living/current_mob, potency = 1, delta_time) + if(!ishuman(current_mob)) return - var/mob/living/carbon/human/H = M - for(var/content in H.contents) - var/obj/item/alien_embryo/A = content - if(A && istype(A)) - if(A.counter > 0) - A.counter = A.counter - potency - H.take_limb_damage(0,POTENCY_MULTIPLIER_MEDIUM*potency) + var/mob/living/carbon/human/current_human = current_mob + for(var/content in current_human.contents) + var/obj/item/alien_embryo/embryo = content + if(embryo && istype(embryo)) + if(embryo.counter > 0) + embryo.counter = embryo.counter - potency + current_human.take_limb_damage(0,POTENCY_MULTIPLIER_MEDIUM*potency) else - A.stage-- - if(A.stage <= 0)//if we reach this point, the embryo dies and the occupant takes a nasty amount of acid damage - qdel(A) - H.take_limb_damage(0,rand(20,40)) - H.vomit() + embryo.stage-- + if(embryo.stage <= 0)//if we reach this point, the embryo dies and the occupant takes a nasty amount of acid damage + qdel(embryo) + current_human.take_limb_damage(0,rand(20,40)) + current_human.vomit() else - A.counter = 90 + embryo.counter = embryo.per_stage_hugged_time /datum/chem_property/positive/antiparasitic/process_overdose(mob/living/M, potency = 1) M.apply_damage(potency, TOX) @@ -548,7 +548,7 @@ rarity = PROPERTY_RARE category = PROPERTY_TYPE_REACTANT value = 3 - max_level = 1 + COOLDOWN_DECLARE(ghost_notif) /datum/chem_property/positive/defibrillating/on_delete(mob/living/M) ..() @@ -574,19 +574,33 @@ /datum/chem_property/positive/defibrillating/process_dead(mob/living/M, potency = 1, delta_time) if(!ishuman(M)) return - var/mob/living/carbon/human/H = M - H.apply_damage(-H.getOxyLoss(), OXY) - if(H.check_tod() && H.is_revivable() && H.health > HEALTH_THRESHOLD_DEAD) - to_chat(H, SPAN_NOTICE("You feel your heart struggling as you suddenly feel a spark, making it desperately try to continue pumping.")) - playsound_client(H.client, 'sound/effects/Heart Beat Short.ogg', 35) - addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon/human, handle_revive)), 50, TIMER_UNIQUE) - else if (potency > POTENCY_MAX_TIER_1 && H.check_tod() && H.is_revivable() && H.health < HEALTH_THRESHOLD_DEAD) //Will heal if level is 7 or greater - to_chat(H, SPAN_NOTICE("You feel a faint spark in your chest.")) - H.apply_damage(-potency * POTENCY_MULTIPLIER_LOW, BRUTE) - H.apply_damage(-potency * POTENCY_MULTIPLIER_LOW, BURN) - H.apply_damage(-potency * POTENCY_MULTIPLIER_LOW, TOX) - H.apply_damage(-potency * POTENCY_MULTIPLIER_LOW, CLONE) - H.apply_damage(-H.getOxyLoss(), OXY) + var/mob/living/carbon/human/dead = M + var/revivable = dead.check_tod() && dead.is_revivable() + if(revivable && (dead.health > HEALTH_THRESHOLD_DEAD)) + addtimer(CALLBACK(dead, TYPE_PROC_REF(/mob/living/carbon/human, handle_revive)), 5 SECONDS) + to_chat(dead, SPAN_NOTICE("You feel your heart struggling as you suddenly feel a spark, making it desperately try to continue pumping.")) + playsound_client(dead.client, 'sound/effects/heart_beat_short.ogg', 35) + else if ((potency >= 1) && revivable && dead.health <= HEALTH_THRESHOLD_DEAD) //heals on all level above 1. This is however, minimal. + to_chat(dead, SPAN_NOTICE("You feel a faint spark in your chest.")) + dead.apply_damage(-potency * POTENCY_MULTIPLIER_VLOW, BRUTE) + dead.apply_damage(-potency * POTENCY_MULTIPLIER_VLOW, BURN) + dead.apply_damage(-potency * POTENCY_MULTIPLIER_VLOW, TOX) + dead.apply_damage(-potency * POTENCY_MULTIPLIER_VLOW, CLONE) + dead.apply_damage(-dead.getOxyLoss(), OXY) + if(potency > CREATE_MAX_TIER_1) //heal more if higher levels + dead.apply_damage(-potency * POTENCY_MULTIPLIER_LOW, BRUTE) + dead.apply_damage(-potency * POTENCY_MULTIPLIER_LOW, BURN) + dead.apply_damage(-potency * POTENCY_MULTIPLIER_LOW, TOX) + dead.apply_damage(-potency * POTENCY_MULTIPLIER_LOW, CLONE) + if(dead.health < HEALTH_THRESHOLD_DEAD) + return + if(!COOLDOWN_FINISHED(src, ghost_notif)) + return + var/mob/dead/observer/ghost = dead.get_ghost() + if(ghost?.client) + COOLDOWN_START(src, ghost_notif, 30 SECONDS) + playsound_client(ghost.client, 'sound/effects/adminhelp_new.ogg') + to_chat(ghost, SPAN_BOLDNOTICE("Your heart is struggling to pump! There is a chance you might get up!(Verbs -> Ghost -> Re-enter corpse, or click here!)")) return TRUE /datum/chem_property/positive/hyperdensificating @@ -633,7 +647,7 @@ return H.chem_effect_flags |= CHEM_EFFECT_RESIST_NEURO to_chat(M, SPAN_NOTICE("Your skull feels incredibly thick.")) - M.dazed = 0 + M.SetDaze(0) /datum/chem_property/positive/neuroshielding/process_overdose(mob/living/M, potency = 1, delta_time) if(!ishuman(M)) diff --git a/code/modules/reagents/chemistry_properties/prop_special.dm b/code/modules/reagents/chemistry_properties/prop_special.dm index ca8be0693bc5..78177dadf5e4 100644 --- a/code/modules/reagents/chemistry_properties/prop_special.dm +++ b/code/modules/reagents/chemistry_properties/prop_special.dm @@ -97,7 +97,7 @@ /datum/chem_property/special/DNA_Disintegrating/trigger() SSticker.mode.get_specific_call("Weyland-Yutani Goon (Chemical Investigation Squad)", TRUE, FALSE, holder.name) - chemical_data.update_credits(10) + GLOB.chemical_data.update_credits(10) message_admins("The research department has discovered DNA_Disintegrating in [holder.name] adding 10 bonus tech points.") var/datum/techtree/tree = GET_TREE(TREE_MARINE) tree.add_points(10) diff --git a/code/modules/reagents/chemistry_reactions/food_drink.dm b/code/modules/reagents/chemistry_reactions/food_drink.dm index 9864af675cee..7e3fdac324f7 100644 --- a/code/modules/reagents/chemistry_reactions/food_drink.dm +++ b/code/modules/reagents/chemistry_reactions/food_drink.dm @@ -160,16 +160,16 @@ new /obj/item/reagent_container/food/snacks/sliceable/cheesewheel/immature(location) -/datum/chemical_reaction/syntiflesh - name = "Syntiflesh" - id = "syntiflesh" +/datum/chemical_reaction/synthmeat + name = "synthmeat" + id = "synthmeat" result = null required_reagents = list("blood" = 5, "clonexadone" = 1) result_amount = 1 -/datum/chemical_reaction/syntiflesh/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/synthmeat/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) - new /obj/item/reagent_container/food/snacks/meat/syntiflesh(location) + new /obj/item/reagent_container/food/snacks/meat/synthmeat(location) /datum/chemical_reaction/hot_ramen diff --git a/code/modules/reagents/chemistry_reactions/other.dm b/code/modules/reagents/chemistry_reactions/other.dm index 6b60ae89059c..f03abec98fba 100644 --- a/code/modules/reagents/chemistry_reactions/other.dm +++ b/code/modules/reagents/chemistry_reactions/other.dm @@ -385,28 +385,11 @@ to_chat(M, SPAN_WARNING("The solution spews out a metallic shiny foam!")) var/datum/effect_system/foam_spread/s = new() + if (created_volume > 300) + created_volume = 300 s.set_up(created_volume, location, holder, 1) s.start() - -/datum/chemical_reaction/ironfoam - name = "Iron Foam" - id = "ironlfoam" - result = null - required_reagents = list("iron" = 3, "foaming_agent" = 1, "pacid" = 1) - result_amount = 5 - -/datum/chemical_reaction/ironfoam/on_reaction(datum/reagents/holder, created_volume) - var/location = get_turf(holder.my_atom) - - for(var/mob/M as anything in viewers(5, location)) - to_chat(M, SPAN_WARNING("The solution spews out a metallic dull foam!")) - - var/datum/effect_system/foam_spread/s = new() - s.set_up(created_volume, location, holder, 2) - s.start() - - /datum/chemical_reaction/foaming_agent name = "Foaming Agent" id = "foaming_agent" diff --git a/code/modules/reagents/chemistry_reagents/alcohol.dm b/code/modules/reagents/chemistry_reagents/alcohol.dm index 08beb42fa410..b5db671b626c 100644 --- a/code/modules/reagents/chemistry_reagents/alcohol.dm +++ b/code/modules/reagents/chemistry_reagents/alcohol.dm @@ -234,7 +234,7 @@ name = "Poison Wine" id = "pwine" description = "Is this even wine? Toxic! Hallucinogenic! Probably consumed in boatloads by your superiors!" - color = "#000000" // rgb: 0, 0, 0 SHOCKER + color = COLOR_BLACK properties = list(PROPERTY_ALCOHOLIC = 1, PROPERTY_FUELING = 3, PROPERTY_OXIDIZING = 3, PROPERTY_FLOWING = 2) boozepwr = 1 @@ -559,7 +559,7 @@ name = "Snow White" id = "snowwhite" description = "A cold refreshment" - color = "#FFFFFF" // rgb: 255, 255, 255 + color = COLOR_WHITE properties = list(PROPERTY_ALCOHOLIC = 1.5, PROPERTY_FUELING = 3, PROPERTY_OXIDIZING = 3, PROPERTY_FLOWING = 2) boozepwr = 1.5 diff --git a/code/modules/reagents/chemistry_reagents/drink.dm b/code/modules/reagents/chemistry_reagents/drink.dm index 468243a0cc8d..9577f61a3dcd 100644 --- a/code/modules/reagents/chemistry_reagents/drink.dm +++ b/code/modules/reagents/chemistry_reagents/drink.dm @@ -85,13 +85,13 @@ /datum/reagent/drink/carrotjuice/on_mob_life(mob/living/M) . = ..() - if(!.) return + if(!.) + return M.ReduceEyeBlur(1) M.ReduceEyeBlind(1) - if(!data) data = 1 + if(!data) + data = 1 switch(data) - if(1 to 20) - //nothing if(21 to INFINITY) if(prob(data-10)) M.disabilities &= ~NEARSIGHTED @@ -163,8 +163,10 @@ /datum/reagent/drink/milk/on_mob_life(mob/living/M) . = ..() - if(!.) return - if(M.getBruteLoss() && prob(20)) M.heal_limb_damage(1,0) + if(!.) + return + if(M.getBruteLoss() && prob(20)) + M.heal_limb_damage(1,0) holder.remove_reagent("capsaicin", 10*REAGENTS_METABOLISM) holder.remove_reagent("hotsauce", 10*REAGENTS_METABOLISM) @@ -220,7 +222,7 @@ name = "Cherry Souto" id = "souto_cherry" description = "A cherry flavored soda that's canned in Havanna" - color = "#800000" + color = COLOR_MAROON /datum/reagent/drink/souto/lime name = "Lime Souto" @@ -492,7 +494,7 @@ name = "Lemonade" description = "Oh the nostalgia..." id = "lemonade" - color = "#FFFF00" // rgb: 255, 255, 0 + color = COLOR_YELLOW //*****************************************************************************************************/ //***************************************Remove When Safe**********************************************/ @@ -555,7 +557,7 @@ /datum/reagent/neurotoxin/on_mob_life(mob/living/carbon/M) . = ..() if(!.) return - M.knocked_down = max(M.knocked_down, 3) + M.KnockDown(5) if(!data) data = 1 data++ M.dizziness +=6 diff --git a/code/modules/reagents/chemistry_reagents/food.dm b/code/modules/reagents/chemistry_reagents/food.dm index 0ec3a2250260..2ee2a05bef32 100644 --- a/code/modules/reagents/chemistry_reagents/food.dm +++ b/code/modules/reagents/chemistry_reagents/food.dm @@ -184,7 +184,7 @@ id = "sodiumchloride" description = "A salt made of sodium chloride. Commonly used to season food." reagent_state = SOLID - color = "#FFFFFF" // rgb: 255,255,255 + color = COLOR_WHITE chemfiresupp = TRUE intensitymod = 0.1 burncolor = "#ffff00" @@ -227,7 +227,7 @@ id = "sprinkles" description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#FF00FF" // rgb: 255, 0, 255 + color = COLOR_MAGENTA properties = list(PROPERTY_NUTRITIOUS = 2) flags = REAGENT_NO_GENERATION @@ -288,7 +288,7 @@ description = "The most widely consumed staple food on Earth. Rice is the most important grain with regard to human nutrition and caloric intake." reagent_state = SOLID nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#FFFFFF" // rgb: 0, 0, 0 + color = COLOR_WHITE properties = list(PROPERTY_NUTRITIOUS = 2) /datum/reagent/cherryjelly @@ -304,6 +304,6 @@ name = "Honey" id = "honey" description = "Honey is a natural sweet, viscous food substance composed of mainly fructose and glucose." - color = "#FFFF00" + color = COLOR_YELLOW chemclass = CHEM_CLASS_RARE flags = REAGENT_NO_GENERATION diff --git a/code/modules/reagents/chemistry_reagents/other.dm b/code/modules/reagents/chemistry_reagents/other.dm index 35e2a79db44a..a0cf6dfd8a17 100644 --- a/code/modules/reagents/chemistry_reagents/other.dm +++ b/code/modules/reagents/chemistry_reagents/other.dm @@ -9,7 +9,7 @@ description = "Blood is classified as a connective tissue and consists of two main components: Plasma, which is a clear extracellular fluid. Formed elements, which are made up of the blood cells and platelets." reagent_state = LIQUID color = "#A10808" - data_properties = new/list("blood_type"=null,"blood_colour"= "#A10808","viruses"=null,"resistances"=null) + data_properties = new/list("blood_type"=null,"blood_color"= "#A10808","viruses"=null,"resistances"=null) chemclass = CHEM_CLASS_RARE @@ -185,7 +185,7 @@ id = "oxygen" description = "Chemical element of atomic number 8. It is an oxidizing agent that forms oxides with most elements and many other compounds. Dioxygen is used in cellular respiration and is nessesary to sustain organic life." reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY chemfiresupp = TRUE properties = list(PROPERTY_OXIDIZING = 2) intensitymod = 0.75 @@ -212,7 +212,7 @@ id = "nitrogen" description = "Chemical element of atomic number 7. Liquid nitrogen is commonly used in cryogenics, with its melting point of 63.15 kelvin. Nitrogen is a component of many explosive compounds and fertilizers." reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY chemclass = CHEM_CLASS_BASIC custom_metabolism = AMOUNT_PER_TIME(1, 200 SECONDS) @@ -223,7 +223,7 @@ id = "hydrogen" description = "Chemical element of atomic number 1. Is the most abundant chemical element in the Universe. Liquid hydrogen was used as one of the first fuel sources for space travel. Very combustible and is used in many chemical reactions." reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY chemfiresupp = TRUE durationmod = -0.5 radiusmod = 0.2 @@ -295,7 +295,7 @@ id = "chlorine" description = "Chemical element of atomic number 17. High concentrations of elemental chlorine is highly reactive and poisonous for all living organisms. Chlorine gas has been used as a chemical warfare agent. Industrially used in the production of disinfectants, medicines, plastics and purification of water." reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY overdose = REAGENTS_OVERDOSE overdose_critical = REAGENTS_OVERDOSE_CRITICAL chemclass = CHEM_CLASS_BASIC @@ -306,7 +306,7 @@ id = "fluorine" description = "Chemical element of atomic number 9. It is a very reactive and highly toxic pale yellow gas at standard conditions. Mostly used for medical and dental purposes." reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY overdose = REAGENTS_OVERDOSE overdose_critical = REAGENTS_OVERDOSE_CRITICAL chemclass = CHEM_CLASS_BASIC @@ -317,7 +317,7 @@ id = "sodium" description = "Chemical element of atomic number 11. Pure it is a soft and very reactive metal. Many salt compounds contain sodium, such as sodium chloride and sodium bicarbonate. There are more uses for sodium as a salt than as a metal." reagent_state = SOLID - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY chemclass = CHEM_CLASS_BASIC custom_metabolism = AMOUNT_PER_TIME(1, 200 SECONDS) @@ -343,7 +343,7 @@ id = "lithium" description = "Chemical element of atomic number 3. Is a soft alkali metal commonly used in the production of batteries. Highly reactive and flammable. Used as an antidepressant and for treating bipolar disorder." reagent_state = SOLID - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY chemfiresupp = TRUE intensitymod = 0.15 burncolor = "#ff356f" @@ -358,7 +358,7 @@ id = "sugar" description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste. The most simple form of sugar, glucose, is the only form of nutriment for red blood cells as they have no mitocondria. Sugar can therefore be used to improve blood regeneration as a nutriment, although ineffective." reagent_state = SOLID - color = "#FFFFFF" // rgb: 255, 255, 255 + color = COLOR_WHITE chemclass = CHEM_CLASS_BASIC properties = list(PROPERTY_NUTRITIOUS = 1) flags = REAGENT_TYPE_MEDICAL @@ -368,7 +368,7 @@ id = "glycerol" description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity, often used in medicines and beverages. Used in the production of plastic, nitroglycerin and other explosives." reagent_state = LIQUID - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY chemclass = CHEM_CLASS_RARE custom_metabolism = AMOUNT_PER_TIME(1, 200 SECONDS) @@ -585,18 +585,6 @@ custom_metabolism = AMOUNT_PER_TIME(1, 200 SECONDS) flags = REAGENT_NO_GENERATION -/datum/reagent/nanites - name = "Nanomachines" - id = "nanites" - description = "Microscopic construction robots." - reagent_state = LIQUID - color = "#535E66" // rgb: 83, 94, 102 - -/datum/reagent/nanites/reaction_mob(mob/M, method=TOUCH, volume) - src = null - if((prob(10) && method==TOUCH) || method==INGEST) - M.contract_disease(new /datum/disease/robotic_transformation(0),1) - /datum/reagent/xenomicrobes name = "Xenomicrobes" id = "xenomicrobes" @@ -723,8 +711,8 @@ id = "napalmgel" description = "Unlike its liquid contemporaries, this gelled variant of napalm is easily extinguished, but shoots far and lingers on the ground in a viscous mess, while reacting with inorganic materials to ignite them." flameshape = FLAMESHAPE_LINE - color = "#00ff00" - burncolor = "#00ff00" + color = COLOR_GREEN + burncolor = COLOR_GREEN burn_sprite = "green" properties = list( PROPERTY_INTENSITY = BURN_LEVEL_TIER_2, @@ -753,8 +741,8 @@ id = "napalmb" description = "A special variant of napalm that's unable to cling well to anything, but disperses over a wide area while burning slowly. The composition reacts with inorganic materials to ignite them, causing severe damage." flameshape = FLAMESHAPE_TRIANGLE - color = "#00ff00" - burncolor = "#00ff00" + color = COLOR_GREEN + burncolor = COLOR_GREEN burn_sprite = "green" properties = list( PROPERTY_INTENSITY = BURN_LEVEL_TIER_2, @@ -767,8 +755,8 @@ name = "Napalm E" id = "napalme" description = "A sticky combustible liquid chemical that penetrates the best fire retardants." - color = "#800080" - burncolor = "#800080" + color = COLOR_PURPLE + burncolor = COLOR_PURPLE burn_sprite = "dynamic" properties = list( PROPERTY_INTENSITY = BURN_LEVEL_TIER_2, @@ -791,12 +779,26 @@ PROPERTY_FIRE_PENETRATING = 1 ) +/datum/reagent/napalm/upp + name = "R189" + id = "R189" + description = "A UPP chemical, it burns at an extremely high tempature and is designed to melt directly through fortified positions or bunkers." + color = "#ffe49c" + burncolor = "#ffe49c" + burn_sprite = "dynamic" + properties = list( + PROPERTY_INTENSITY = BURN_LEVEL_TIER_9, + PROPERTY_DURATION = BURN_TIME_TIER_3, + PROPERTY_RADIUS = 6, + PROPERTY_FIRE_PENETRATING = 1, + ) + /datum/reagent/chlorinetrifluoride name = "Chlorine Trifluoride" id = "chlorine trifluoride" description = "A highly reactive interhalogen compound capaple of self ignition. A very strong oxidizer and is extremely reactive with most organic and inorganic materials." reagent_state = LIQUID - color = "#00FFFF" + color = COLOR_CYAN custom_metabolism = 100 chemfiresupp = TRUE burncolor = "#ff9300" @@ -863,7 +865,7 @@ id = "nitroglycerin" description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol. Despite being a highly volatile material, it is used for many medical purposes." reagent_state = LIQUID - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY custom_metabolism = AMOUNT_PER_TIME(1, 200 SECONDS) explosive = TRUE power = 1 diff --git a/code/modules/reagents/chemistry_reagents/toxin.dm b/code/modules/reagents/chemistry_reagents/toxin.dm index 458424a5db11..53ccb53f1748 100644 --- a/code/modules/reagents/chemistry_reagents/toxin.dm +++ b/code/modules/reagents/chemistry_reagents/toxin.dm @@ -113,8 +113,10 @@ if(!. || deleted) return M.status_flags |= FAKEDEATH + ADD_TRAIT(M, TRAIT_IMMOBILIZED, FAKEDEATH_TRAIT) M.apply_damage(0.5*REM, OXY) - M.apply_effect(2, WEAKEN) + M.KnockDown(2) + M.Stun(2) M.silent = max(M.silent, 10) /datum/reagent/toxin/zombiepowder/on_delete() @@ -125,6 +127,7 @@ var/mob/living/holder_mob = . holder_mob.status_flags &= ~FAKEDEATH + REMOVE_TRAIT(holder_mob, TRAIT_IMMOBILIZED, FAKEDEATH_TRAIT) /datum/reagent/toxin/mindbreaker name = "Mindbreaker Toxin" @@ -202,10 +205,10 @@ id = "potassium_chloride" description = "A bitter tasting salt that can be used as a spice, but can cause cardiac arrest in larger quantities. It has for this reason been used as a component in lethal injections for many years." reagent_state = SOLID - color = "#FFFFFF" // rgb: 255,255,255 + color = COLOR_WHITE chemfiresupp = TRUE intensitymod = 0.1 - burncolor = "#800080" + burncolor = COLOR_PURPLE burncolormod = 5 overdose = 30 chemclass = CHEM_CLASS_UNCOMMON @@ -216,7 +219,7 @@ id = "potassium_chlorophoride" description = "A specific chemical based on Potassium Chloride used to stop the heart for surgery. Causes instant cardiac arrest. Not safe to eat!" reagent_state = SOLID - color = "#FFFFFF" // rgb: 255,255,255 + color = COLOR_WHITE overdose = 20 chemclass = CHEM_CLASS_UNCOMMON properties = list(PROPERTY_RELAXING = 8, PROPERTY_HYPOXEMIC = 4, PROPERTY_TOXIC = 2) @@ -258,7 +261,7 @@ name = "Formaldehyde" id = "formaldehyde" description = "Formaldehyde is a toxic organic gas that is mostly used in making resins, polymers and explosives. It is known to be a natural carcinogen." - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY reagent_state = GAS chemclass = CHEM_CLASS_UNCOMMON properties = list(PROPERTY_TOXIC = 1, PROPERTY_CARCINOGENIC = 1) @@ -279,4 +282,4 @@ color = "#669900" reagent_state = LIQUID chemclass = CHEM_CLASS_NONE - properties = list(PROPERTY_CORROSIVE = 2, PROPERTY_TOXIC = 1) + properties = list(PROPERTY_CORROSIVE = 2, PROPERTY_TOXIC = 1, PROPERTY_CROSSMETABOLIZING = 3) diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index b4b4f68ed99d..8e1390c778f6 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -101,7 +101,6 @@ // attack with item, place item on conveyor /obj/structure/machinery/conveyor/attackby(obj/item/I, mob/user) - if(isrobot(user)) return //Carn: fix for borgs dropping their modules on conveyor belts var/obj/item/grab/G = I if(istype(G)) // handle grabbed mob if(ismob(G.grabbed_thing)) @@ -112,7 +111,7 @@ // attack with hand, move pulled object onto conveyor /obj/structure/machinery/conveyor/attack_hand(mob/user as mob) - if ((!( user.canmove ) || user.is_mob_restrained() || !( user.pulling ))) + if (( user.is_mob_incapacitated() || !( user.pulling ))) return if (user.pulling.anchored) return @@ -197,7 +196,7 @@ /obj/structure/machinery/conveyor_switch/LateInitialize() . = ..() conveyors = list() - for(var/obj/structure/machinery/conveyor/C in machines) + for(var/obj/structure/machinery/conveyor/C in GLOB.machines) if(C.id == id) conveyors += C start_processing() @@ -246,7 +245,7 @@ update() // find any switches with same id as this one, and set their positions to match us - for(var/obj/structure/machinery/conveyor_switch/S in machines) + for(var/obj/structure/machinery/conveyor_switch/S in GLOB.machines) if(S.id == src.id) S.position = position S.update() @@ -266,7 +265,7 @@ update() // find any switches with same id as this one, and set their positions to match us - for(var/obj/structure/machinery/conveyor_switch/S in machines) + for(var/obj/structure/machinery/conveyor_switch/S in GLOB.machines) if(S.id == src.id) S.position = position S.update() diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 8a5a6ec960ec..c82109156a6c 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -37,6 +37,13 @@ active_power_usage = 3500 idle_power_usage = 100 var/disposal_pressure = 0 + ///Whether the disposals tube is too narrow for a mob to fit into. + var/narrow_tube = FALSE + +/obj/structure/machinery/disposal/delivery + name = "delivery chute" + desc = "A pneumatic delivery unit connecting two locations. It's rather narrow." + narrow_tube = TRUE /obj/structure/machinery/disposal/broken name = "broken disposal unit" @@ -128,27 +135,43 @@ update() return - var/obj/item/grab/G = I - if(istype(G)) //Handle grabbed mob - if(ismob(G.grabbed_thing)) - to_chat(user, SPAN_WARNING("You can't fit that in there!")) - return - /*&& user.grab_level >= GRAB_AGGRESSIVE) - var/mob/GM = G.grabbed_thing - user.visible_message(SPAN_WARNING("[user] starts putting [GM] into [src]."), - SPAN_WARNING("You start putting [GM] into [src].")) - if(do_after(user, 20, INTERRUPT_ALL, BUSY_ICON_HOSTILE)) - GM.forceMove(src) - user.visible_message(SPAN_WARNING("[user] puts [GM] into [src]."), - SPAN_WARNING("[user] puts [GM] into [src].")) - user.attack_log += text("\[[time_stamp()]\] Has placed [GM] ([GM.ckey]) in disposals.") - GM.attack_log += text("\[[time_stamp()]\] Has been placed in disposals by [user] ([user.ckey])") - msg_admin_attack("[user] ([user.ckey]) placed [GM] ([GM.ckey]) in a disposals unit in [get_area(user)] ([user.loc.x],[user.loc.y],[user.loc.z]).", user.loc.x, user.loc.y, user.loc.z) - flush()*/ - return + var/obj/item/grab/grab_effect = I + if(istype(grab_effect)) //Handle grabbed mob + if(ismob(grab_effect.grabbed_thing)) + var/mob/grabbed_mob = grab_effect.grabbed_thing + if((!MODE_HAS_TOGGLEABLE_FLAG(MODE_DISPOSABLE_MOBS) && !HAS_TRAIT(grabbed_mob, TRAIT_CRAWLER)) || narrow_tube || grabbed_mob.mob_size >= MOB_SIZE_BIG) + to_chat(user, SPAN_WARNING("You can't fit that in there!")) + return FALSE + var/max_grab_size = user.mob_size + /// Amazing what you can do with a bit of dexterity. + if(HAS_TRAIT(user, TRAIT_DEXTROUS)) + max_grab_size++ + /// Strong mobs can lift above their own weight. + if(HAS_TRAIT(user, TRAIT_SUPER_STRONG))//NB; this will mean Yautja can bodily lift MOB_SIZE_XENO(3) and Synths can lift MOB_SIZE_XENO_SMALL(2) + max_grab_size++ + if(grabbed_mob.mob_size > max_grab_size || !(grabbed_mob.status_flags & CANPUSH)) + to_chat(user, SPAN_WARNING("You don't have the strength to move [grabbed_mob]!")) + return FALSE//can't tighten your grip on mobs bigger than you and mobs you can't push. + if(!user.grab_level >= GRAB_AGGRESSIVE) + to_chat(user, SPAN_WARNING("You need a better grip to force [grabbed_mob] in there!")) + return FALSE + user.visible_message(SPAN_WARNING("[user] starts putting [grabbed_mob] into [src]."), + SPAN_WARNING("You start putting [grabbed_mob] into [src].")) + if(!do_after(user, 2 SECONDS, INTERRUPT_ALL, BUSY_ICON_HOSTILE)) + user.visible_message(SPAN_WARNING("[user] stops putting [grabbed_mob] into [src]."), + SPAN_WARNING("You stop putting [grabbed_mob] into [src].")) + return FALSE + + grabbed_mob.forceMove(src) + user.visible_message(SPAN_WARNING("[user] puts [grabbed_mob] into [src]."), + SPAN_WARNING("[user] puts [grabbed_mob] into [src].")) + user.attack_log += text("\[[time_stamp()]\] Has placed [key_name(grabbed_mob)] in disposals.") + grabbed_mob.attack_log += text("\[[time_stamp()]\] Has been placed in disposals by [user] ([user.ckey])") + msg_admin_attack("[user] ([user.ckey]) placed [key_name(grabbed_mob)] in a disposals unit in [get_area(user)] ([user.loc.x],[user.loc.y],[user.loc.z]).", user.loc.x, user.loc.y, user.loc.z) + flush(TRUE)//Forcibly flushing someone if forced in by another player. + return TRUE + return FALSE - if(isrobot(user)) - return if(!I) return @@ -161,58 +184,56 @@ ///Mouse drop another mob or self /obj/structure/machinery/disposal/MouseDrop_T(mob/target, mob/user) - return -/* - if(!istype(target) || target.anchored || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.is_mob_incapacitated(TRUE) || isRemoteControlling(user) || target.mob_size >= MOB_SIZE_BIG) - return - if(!(ishuman(target)) || !(ishuman(user))) return - if(isanimal(user) && target != user) return //Animals cannot put mobs other than themselves into disposal + if((!MODE_HAS_TOGGLEABLE_FLAG(MODE_DISPOSABLE_MOBS) && !HAS_TRAIT(user, TRAIT_CRAWLER)) || narrow_tube) + to_chat(user, SPAN_WARNING("Looks a little bit too tight in there!")) + return FALSE + + if(target != user) + to_chat(user, SPAN_WARNING("You need a better grip on [target] to force them into [src]!")) + return FALSE //Need a firm grip to put someone else in there. + + if(!istype(target) || target.anchored || target.buckled || get_dist(user, src) > 1 || user.is_mob_incapacitated(TRUE) || isRemoteControlling(user) || target.mob_size >= MOB_SIZE_BIG) + to_chat(user, SPAN_WARNING("You cannot get into [src]!")) + return FALSE add_fingerprint(user) var/target_loc = target.loc if(target == user) visible_message(SPAN_NOTICE("[user] starts climbing into the disposal.")) - else - if(user.is_mob_restrained()) return //can't stuff someone other than you if restrained. - visible_message(SPAN_WARNING("[user] starts stuffing [target] into the disposal.")) + if(!do_after(user, 40, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) - return + return FALSE if(target_loc != target.loc) - return + return FALSE + if(user.is_mob_incapacitated(TRUE)) + to_chat(user, SPAN_WARNING("You cannot do this while incapacitated!")) + return FALSE + if(target == user) - if(user.is_mob_incapacitated(TRUE)) return user.visible_message(SPAN_NOTICE("[user] climbs into [src]."), SPAN_NOTICE("You climb into [src].")) - else - if(user.is_mob_incapacitated()) return - user.visible_message(SPAN_DANGER("[user] stuffs [target] into [src]!"), - SPAN_WARNING("You stuff [target] into [src]!")) - - user.attack_log += text("\[[time_stamp()]\] Has placed [target.name] ([target.ckey]) in disposals.") - target.attack_log += text("\[[time_stamp()]\] Has been placed in disposals by [user.name] ([user.ckey])") - msg_admin_attack("[user] ([user.ckey]) placed [target] ([target.ckey]) in a disposals unit in [get_area(user)] ([user.loc.x],[user.loc.y],[user.loc.z]).", user.loc.x, user.loc.y, user.loc.z) + user.attack_log += text("\[[time_stamp()]\] [key_name(user)] climbed into a disposals bin!") target.forceMove(src) - flush() - update()*/ + flush()//Not forcing flush if climbing in by self. + update() ///Attempt to move while inside -/obj/structure/machinery/disposal/relaymove(mob/user) - if(user.stat || user.stunned || user.knocked_down || flushing) - return +/obj/structure/machinery/disposal/relaymove(mob/living/user) + if(user.is_mob_incapacitated(TRUE) || flushing) + return FALSE if(user.loc == src) go_out(user) + return TRUE ///Leave the disposal -/obj/structure/machinery/disposal/proc/go_out(mob/user) - +/obj/structure/machinery/disposal/proc/go_out(mob/living/user) if(user.client) user.client.eye = user.client.mob user.client.perspective = MOB_PERSPECTIVE user.forceMove(loc) - user.stunned = max(user.stunned, 2) //Action delay when going out of a bin - user.update_canmove() //Force the delay to go in action immediately - if(!user.lying) + user.apply_effect(2, STUN) + if(user.mobility_flags & MOBILITY_MOVE) user.visible_message(SPAN_WARNING("[user] suddenly climbs out of [src]!"), SPAN_WARNING("You climb out of [src] and get your bearings!")) update() @@ -278,12 +299,11 @@ for(var/atom/movable/AM in src) AM.forceMove(loc) AM.pipe_eject(0) - if(ismob(AM)) - var/mob/M = AM - M.stunned = max(M.stunned, 2) //Action delay when going out of a bin - M.update_canmove() //Force the delay to go in action immediately - if(!M.lying) - M.visible_message(SPAN_WARNING("[M] is suddenly pushed out of [src]!"), + if(isliving(AM)) + var/mob/living/living = AM + living.Stun(2) + if(living.body_position == STANDING_UP) + living.visible_message(SPAN_WARNING("[living] is suddenly pushed out of [src]!"), SPAN_WARNING("You get pushed out of [src] and get your bearings!")) update() @@ -364,7 +384,9 @@ return ///Perform a flush -/obj/structure/machinery/disposal/proc/flush() +/obj/structure/machinery/disposal/proc/flush(forced = FALSE) + if((disposal_pressure < SEND_PRESSURE) && !forced) + return FALSE flushing = TRUE flick("[icon_state]-flush", src) @@ -479,10 +501,6 @@ if(istype(AM, /obj/item/smallDelivery) && !hasmob) var/obj/item/smallDelivery/T = AM destinationTag = T.sortTag - //Drones can mail themselves through maint. - if(istype(AM, /mob/living/silicon/robot/drone)) - var/mob/living/silicon/robot/drone/drone = AM - destinationTag = drone.mail_destination //Start the movement process //Argument is the disposal unit the holder started in @@ -634,7 +652,7 @@ /obj/structure/disposalpipe/proc/nextdir(fromdir) return dpdir & (~turn(fromdir, 180)) -//Transfer the holder through this pipe segment, overriden for special behaviour +//Transfer the holder through this pipe segment, overridden for special behaviour /obj/structure/disposalpipe/proc/transfer(obj/structure/disposalholder/H) var/nextdir = nextdir(H.dir) H.setDir(nextdir) @@ -720,7 +738,7 @@ //Remains : set to leave broken pipe pieces in place /obj/structure/disposalpipe/deconstruct(disassembled = TRUE) if(disassembled) - for(var/D in cardinal) + for(var/D in GLOB.cardinals) if(D & dpdir) var/obj/structure/disposalpipe/broken/P = new(loc) P.setDir(D) @@ -1070,7 +1088,8 @@ /obj/structure/disposalpipe/tagger/Initialize(mapload, ...) . = ..() dpdir = dir|turn(dir, 180) - if(sort_tag) tagger_locations |= sort_tag + if(sort_tag) + GLOB.tagger_locations |= sort_tag updatename() updatedesc() update() @@ -1126,7 +1145,8 @@ /obj/structure/disposalpipe/sortjunction/Initialize(mapload, ...) . = ..() - if(sortType) tagger_locations |= sortType + if(sortType) + GLOB.tagger_locations |= sortType updatedir() updatename() @@ -1351,7 +1371,7 @@ //Expel the contents of the holder object, then delete it. Called when the holder exits the outlet /obj/structure/disposaloutlet/proc/expel(obj/structure/disposalholder/H) - flick("outlet-open", src) + flick("[icon_state]-open", src) playsound(src, 'sound/machines/warning-buzzer.ogg', 25, 0) sleep(20) //Wait until correct animation frame playsound(src, 'sound/machines/hiss.ogg', 25, 0) @@ -1431,7 +1451,7 @@ if(direction) dirs = list( direction, turn(direction, -45), turn(direction, 45)) else - dirs = alldirs.Copy() + dirs = GLOB.alldirs.Copy() INVOKE_ASYNC(streak(dirs)) @@ -1440,7 +1460,7 @@ if(direction) dirs = list( direction, turn(direction, -45), turn(direction, 45)) else - dirs = alldirs.Copy() + dirs = GLOB.alldirs.Copy() INVOKE_ASYNC(streak(dirs)) diff --git a/code/modules/recycling/recycler.dm b/code/modules/recycling/recycler.dm index 73d00b763f68..abbf010bf4cc 100644 --- a/code/modules/recycling/recycler.dm +++ b/code/modules/recycling/recycler.dm @@ -9,32 +9,39 @@ density = TRUE var/recycle_dir = NORTH var/list/stored_matter = list("metal" = 0, "glass" = 0) + /// Amount of metal refunded per crate, by default about 2 metal sheets (building one takes 5) + var/crate_reward = 7500 + /// Amount of sheets to stack before outputting a stack + var/sheets_per_batch = 10 var/last_recycle_sound //for sound cooldown var/ignored_items = list(/obj/item/limb) -/obj/structure/machinery/recycler/New() - ..() - update_icon() +/obj/structure/machinery/recycler/whiskey + crate_reward = 15000 // Boosted reward (4 sheets) to make up for workload and the fact you can't sell them +/obj/structure/machinery/recycler/Initialize(mapload, ...) + . = ..() + update_icon() /obj/structure/machinery/recycler/power_change() ..() update_icon() - /obj/structure/machinery/recycler/update_icon() + . = ..() icon_state = "separator-AO[(inoperable()) ? "0":"1"]" - -/obj/structure/machinery/recycler/Collided(atom/movable/AM) +/obj/structure/machinery/recycler/Collided(atom/movable/movable) if(inoperable()) return - var/move_dir = get_dir(loc, AM.loc) - if(!AM.anchored && move_dir == recycle_dir) - if(istype(AM, /obj/item)) - recycle(AM) + var/move_dir = get_dir(loc, movable.loc) + if(!movable.anchored && move_dir == recycle_dir) + if(istype(movable, /obj/item)) + recycle(movable) + else if(istype(movable, /obj/structure/closet/crate)) + recycle_crate(movable) else - AM.forceMove(loc) + movable.forceMove(loc) /obj/structure/machinery/recycler/proc/recycle(obj/item/I) @@ -63,7 +70,32 @@ stored_matter[material] += total_material qdel(I) + play_recycle_sound() + output_materials() + +/obj/structure/machinery/recycler/proc/recycle_crate(obj/structure/closet/crate) + for(var/atom/movable/movable in crate) + movable.forceMove(loc) + recycle(movable) + stored_matter["metal"] += crate_reward + qdel(crate) + play_recycle_sound() + output_materials() + +/obj/structure/machinery/recycler/proc/play_recycle_sound() if(last_recycle_sound < world.time) playsound(loc, 'sound/items/Welder.ogg', 30, 1) last_recycle_sound = world.time + 50 +/obj/structure/machinery/recycler/proc/output_materials() + for(var/material in stored_matter) + if(stored_matter[material] >= sheets_per_batch * 3750) + var/sheets = round(stored_matter[material] / 3750) + stored_matter[material] -= sheets * 3750 + var/obj/item/stack/sheet/sheet_stack + switch(material) + if("metal") sheet_stack = new /obj/item/stack/sheet/metal(loc) + if("glass") sheet_stack = new /obj/item/stack/sheet/glass(loc) + if(sheet_stack) + sheet_stack.amount = sheets + sheet_stack.update_icon() diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 11d310123089..ec1c8c245f2b 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -215,7 +215,7 @@ icon = 'icons/obj/items/items.dmi' icon_state = "deliveryPaper" w_class = SIZE_MEDIUM - var/amount = 25 + var/amount = 50 /obj/item/packageWrap/afterattack(obj/target as obj, mob/user as mob, proximity) @@ -241,7 +241,7 @@ var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(get_turf(O.loc)) //Aaannd wrap it up! if(!istype(O.loc, /turf)) if(user.client) - user.client.screen -= O + user.client.remove_from_screen(O) P.wrapped = O O.forceMove(P) P.w_class = O.w_class @@ -263,39 +263,55 @@ O.add_fingerprint(usr) src.add_fingerprint(usr) src.amount-- - user.visible_message("\The [user] wraps \a [target] with \a [src].",\ - SPAN_NOTICE("You wrap \the [target], leaving [amount] units of paper on \the [src]."),\ + user.visible_message("[user] wraps [target] with [src].",\ + SPAN_NOTICE("You wrap [target], leaving [amount] units of paper on [src]."),\ "You hear someone taping paper around a small object.") else if (istype(target, /obj/structure/closet/crate)) - var/obj/structure/closet/crate/O = target - if (src.amount > 3 && !O.opened) - var/obj/structure/bigDelivery/P = new /obj/structure/bigDelivery(get_turf(O.loc)) - P.icon_state = "deliverycrate" - P.wrapped = O - O.forceMove(P) - src.amount -= 3 - user.visible_message("\The [user] wraps \a [target] with \a [src].",\ - SPAN_NOTICE("You wrap \the [target], leaving [amount] units of paper on \the [src]."),\ - "You hear someone taping paper around a large object.") - else if(src.amount < 3) - to_chat(user, SPAN_WARNING("You need more paper.")) + var/obj/structure/closet/crate/crate = target + var/answer = tgui_alert(user, "Wrap the crate for delivery or customize it?", "Crate wrapping", list("Customize", "Wrap")) + if(!answer || !user.Adjacent(target) || !target.z) + return + if(answer == "Customize") + if(!length(crate.crate_customizing_types)) + to_chat(user, SPAN_WARNING("You cannot customize this kind of crate.")) + return + var/label = tgui_input_text(user, "Give the crate a new logistic tag:", "Customizing") + if(!label || !user.Adjacent(target) || !target.z) + return + var/chosen_type = tgui_input_list(user, "Select the kind of crate to make this into:", "Customizing", crate.crate_customizing_types) + if(!chosen_type || !ispath(crate.crate_customizing_types[chosen_type]) || !user.Adjacent(target) || !target.z) + return + target.AddComponent(/datum/component/crate_tag, label, crate.crate_customizing_types[chosen_type]) + amount -= 3 + else + if (amount > 3 && !crate.opened) + var/obj/structure/bigDelivery/package = new /obj/structure/bigDelivery(get_turf(crate.loc)) + package.icon_state = "deliverycrate" + package.wrapped = crate + crate.forceMove(package) + amount -= 3 + user.visible_message("[user] wraps [target] with [src].",\ + SPAN_NOTICE("You wrap [target], leaving [amount] units of paper on [src]."),\ + "You hear someone taping paper around a large object.") + else if(amount < 3) + to_chat(user, SPAN_WARNING("You need more paper.")) else if (istype (target, /obj/structure/closet)) - var/obj/structure/closet/O = target - if (src.amount > 3 && !O.opened) - var/obj/structure/bigDelivery/P = new /obj/structure/bigDelivery(get_turf(O.loc)) - P.wrapped = O - O.welded = 1 - O.forceMove(P) - src.amount -= 3 - user.visible_message("\The [user] wraps \a [target] with \a [src].",\ - SPAN_NOTICE("You wrap \the [target], leaving [amount] units of paper on \the [src]."),\ + var/obj/structure/closet/object = target + if (amount > 3 && !object.opened) + var/obj/structure/bigDelivery/package = new /obj/structure/bigDelivery(get_turf(object.loc)) + package.wrapped = object + object.welded = 1 + object.forceMove(package) + amount -= 3 + user.visible_message("[user] wraps [target] with [src].",\ + SPAN_NOTICE("You wrap [target], leaving [amount] units of paper on [src]."),\ "You hear someone taping paper around a large object.") - else if(src.amount < 3) + else if(amount < 3) to_chat(user, SPAN_WARNING("You need more paper.")) else to_chat(user, SPAN_NOTICE(" The object you are trying to wrap is unsuitable for the sorting machinery!")) - if (src.amount <= 0) - new /obj/item/trash/c_tube( src.loc ) + if (amount <= 0) + new /obj/item/trash/c_tube( loc ) qdel(src) return return @@ -321,8 +337,8 @@ var/dat = "

        TagMaster 2.3

        " dat += "" - for(var/i = 1, i <= tagger_locations.len, i++) - dat += "" + for(var/i = 1, i <= GLOB.tagger_locations.len, i++) + dat += "" if (i%4==0) dat += "" @@ -341,7 +357,7 @@ if(.) return src.add_fingerprint(usr) - if(href_list["nextTag"] && (href_list["nextTag"] in tagger_locations)) + if(href_list["nextTag"] && (href_list["nextTag"] in GLOB.tagger_locations)) src.currTag = href_list["nextTag"] openwindow(usr) @@ -367,7 +383,7 @@ return /obj/structure/machinery/disposal/deliveryChute/Collided(atom/movable/AM) //Go straight into the chute - if(istype(AM, /obj/item/projectile) || istype(AM, /obj/effect)) return + if(istype(AM, /obj/projectile) || istype(AM, /obj/effect)) return switch(dir) if(NORTH) if(AM.loc.y != src.loc.y+1) return diff --git a/code/modules/round_recording/round_recorder.dm b/code/modules/round_recording/round_recorder.dm index 677b32bba1d2..8748b995aa6c 100644 --- a/code/modules/round_recording/round_recorder.dm +++ b/code/modules/round_recording/round_recorder.dm @@ -31,8 +31,8 @@ game_start = time2text(world.realtime, "DD.MM.YYYY@hh:mm:ss") map = SSmapping.configs[GROUND_MAP].map_name - gamemode = master_mode - round_name = round_statistics.name + gamemode = GLOB.master_mode + round_name = GLOB.round_statistics.name // Record the end time of the game and export the game history /datum/round_recorder/proc/end_game() diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm index 9d6d862bfc3c..4b7cdd69a449 100644 --- a/code/modules/security_levels/keycard_authentication.dm +++ b/code/modules/security_levels/keycard_authentication.dm @@ -108,7 +108,7 @@ /obj/structure/machinery/keycard_auth/proc/broadcast_request() icon_state = "auth_on" - for(var/obj/structure/machinery/keycard_auth/KA in machines) + for(var/obj/structure/machinery/keycard_auth/KA in GLOB.machines) if(KA == src || KA.channel != channel) continue KA.reset() INVOKE_ASYNC(KA, TYPE_PROC_REF(/obj/structure/machinery/keycard_auth, receive_request), src) @@ -149,14 +149,14 @@ if(CONFIG_GET(flag/ert_admin_call_only)) return 1 return SSticker.mode && SSticker.mode.ert_disabled -var/global/maint_all_access = 1 +GLOBAL_VAR_INIT(maint_all_access, TRUE) /proc/make_maint_all_access() - maint_all_access = 1 + GLOB.maint_all_access = TRUE ai_announcement("The maintenance access requirement has been removed on all airlocks.") /proc/revoke_maint_all_access() - maint_all_access = 0 + GLOB.maint_all_access = FALSE ai_announcement("The maintenance access requirement has been added on all airlocks.") // Keycard reader at the CORSAT locks @@ -209,7 +209,7 @@ var/global/maint_all_access = 1 /obj/structure/machinery/keycard_auth/lockdown/broadcast_request() icon_state = "auth_on" - for(var/obj/structure/machinery/keycard_auth/lockdown/KA in machines) + for(var/obj/structure/machinery/keycard_auth/lockdown/KA in GLOB.machines) if(KA == src || KA.channel != channel) continue KA.reset() @@ -249,7 +249,7 @@ var/global/maint_all_access = 1 /obj/structure/machinery/keycard_auth/lockdown/proc/timed_countdown(timeleft = 0) if(!timeleft) - for(var/obj/structure/machinery/door/poddoor/M in machines) + for(var/obj/structure/machinery/door/poddoor/M in GLOB.machines) if(M.id == podlock_id && M.density) INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/structure/machinery/door, open)) return diff --git a/code/modules/security_levels/security_levels.dm b/code/modules/security_levels/security_levels.dm index d8f61c11a3e6..b6577a2fcbfa 100644 --- a/code/modules/security_levels/security_levels.dm +++ b/code/modules/security_levels/security_levels.dm @@ -1,52 +1,44 @@ -/var/security_level = 0 -//0 = code green -//1 = code blue -//2 = code red -//3 = code delta +GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN) -//config.alert_desc_blue_downto - - -/proc/set_security_level(level, no_sound=0, announce=1) - if(level != security_level) +/proc/set_security_level(level, no_sound = FALSE, announce = TRUE, log = ARES_LOG_SECURITY) + if(level != GLOB.security_level) SEND_GLOBAL_SIGNAL(COMSIG_GLOB_SECURITY_LEVEL_CHANGED, level) //Will not be announced if you try to set to the same level as it already is - if(level >= SEC_LEVEL_GREEN && level <= SEC_LEVEL_DELTA && level != security_level) + if(level >= SEC_LEVEL_GREEN && level <= SEC_LEVEL_DELTA && level != GLOB.security_level) switch(level) if(SEC_LEVEL_GREEN) if(announce) - ai_announcement("Attention: Security level lowered to GREEN - all clear.", no_sound ? null : 'sound/AI/code_green.ogg') - security_level = SEC_LEVEL_GREEN + ai_announcement("Attention: Security level lowered to GREEN - all clear.", no_sound ? null : 'sound/AI/code_green.ogg', log) + GLOB.security_level = SEC_LEVEL_GREEN if(SEC_LEVEL_BLUE) - if(security_level < SEC_LEVEL_BLUE) + if(GLOB.security_level < SEC_LEVEL_BLUE) if(announce) - ai_announcement("Attention: Security level elevated to BLUE - potentially hostile activity on board.", no_sound ? null : 'sound/AI/code_blue_elevated.ogg') + ai_announcement("Attention: Security level elevated to BLUE - potentially hostile activity on board.", no_sound ? null : 'sound/AI/code_blue_elevated.ogg', log) else if(announce) - ai_announcement("Attention: Security level lowered to BLUE - potentially hostile activity on board.", no_sound ? null : 'sound/AI/code_blue_lowered.ogg') - security_level = SEC_LEVEL_BLUE + ai_announcement("Attention: Security level lowered to BLUE - potentially hostile activity on board.", no_sound ? null : 'sound/AI/code_blue_lowered.ogg', log) + GLOB.security_level = SEC_LEVEL_BLUE if(SEC_LEVEL_RED) - if(security_level < SEC_LEVEL_RED) + if(GLOB.security_level < SEC_LEVEL_RED) if(announce) - ai_announcement("Attention: Security level elevated to RED - there is an immediate threat to the ship.", no_sound ? null : 'sound/AI/code_red_elevated.ogg') + ai_announcement("Attention: Security level elevated to RED - there is an immediate threat to the ship.", no_sound ? null : 'sound/AI/code_red_elevated.ogg', log) else if(announce) - ai_announcement("Attention: Security level lowered to RED - there is an immediate threat to the ship.", no_sound ? null : 'sound/AI/code_red_lowered.ogg') - security_level = SEC_LEVEL_RED + ai_announcement("Attention: Security level lowered to RED - there is an immediate threat to the ship.", no_sound ? null : 'sound/AI/code_red_lowered.ogg', log) + GLOB.security_level = SEC_LEVEL_RED if(SEC_LEVEL_DELTA) if(announce) var/name = "SELF-DESTRUCT SYSTEMS ACTIVE" var/input = "DANGER, THE EMERGENCY DESTRUCT SYSTEM IS NOW ACTIVATED. PROCEED TO THE SELF-DESTRUCT CHAMBER FOR CONTROL ROD INSERTION." - marine_announcement(input, name, 'sound/AI/selfdestruct_short.ogg') - security_level = SEC_LEVEL_DELTA - EvacuationAuthority.enable_self_destruct() + marine_announcement(input, name, 'sound/AI/selfdestruct_short.ogg', logging = log) + GLOB.security_level = SEC_LEVEL_DELTA /proc/get_security_level() - switch(security_level) + switch(GLOB.security_level) if(SEC_LEVEL_GREEN) return "green" if(SEC_LEVEL_BLUE) diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm index a7d988e460e1..79377d9c0849 100644 --- a/code/modules/shuttle/computer.dm +++ b/code/modules/shuttle/computer.dm @@ -281,37 +281,85 @@ icon_state = "terminal" req_access = list() breakable = FALSE + ///If true, the lifeboat is in the process of launching, and so the code will not allow another launch. + var/launch_initiated = FALSE /obj/structure/machinery/computer/shuttle/lifeboat/attack_hand(mob/user) . = ..() - var/obj/docking_port/mobile/lifeboat/lifeboat = SSshuttle.getShuttle(shuttleId) + var/obj/docking_port/mobile/crashable/lifeboat/lifeboat = SSshuttle.getShuttle(shuttleId) if(lifeboat.status == LIFEBOAT_LOCKED) - to_chat(user, SPAN_WARNING("\The [src] flickers with error messages.")) + to_chat(user, SPAN_WARNING("[src] flickers with error messages.")) else if(lifeboat.status == LIFEBOAT_INACTIVE) - to_chat(user, SPAN_NOTICE("\The [src]'s screen says \"Awaiting evacuation order\".")) + to_chat(user, SPAN_NOTICE("[src]'s screen says \"Awaiting evacuation order\".")) else if(lifeboat.status == LIFEBOAT_ACTIVE) switch(lifeboat.mode) if(SHUTTLE_IDLE) - to_chat(user, SPAN_NOTICE("\The [src]'s screen says \"Awaiting confirmation of the evacuation order\".")) + if(!istype(user, /mob/living/carbon/human)) + to_chat(user, SPAN_NOTICE("[src]'s screen says \"Unauthorized access. Please inform your supervisor\".")) + return + + var/mob/living/carbon/human/human_user = user + if(!(ACCESS_MARINE_SENIOR in human_user.wear_id?.access) && !(ACCESS_MARINE_DROPSHIP in human_user.wear_id?.access)) + to_chat(user, SPAN_NOTICE("[src]'s screen says \"Unauthorized access. Please inform your supervisor\".")) + return + + if(SShijack.current_progress < SShijack.early_launch_required_progress) + to_chat(user, SPAN_NOTICE("[src]'s screen says \"Unable to launch, fuel insufficient\".")) + return + + if(launch_initiated) + to_chat(user, SPAN_NOTICE("[src]'s screen blinks and says \"Launch sequence already initiated\".")) + return + + var/response = tgui_alert(user, "Launch the lifeboat?", "Confirm", list("Yes", "No", "Emergency Launch"), 10 SECONDS) + if(launch_initiated) + to_chat(user, SPAN_NOTICE("[src]'s screen blinks and says \"Launch sequence already initiated\".")) + return + switch(response) + if ("Yes") + launch_initiated = TRUE + to_chat(user, "[src]'s screen blinks and says \"Launch command accepted\".") + shipwide_ai_announcement("Launch command received. [lifeboat.id == MOBILE_SHUTTLE_LIFEBOAT_PORT ? "Port" : "Starboard"] Lifeboat doors will close in 10 seconds.") + addtimer(CALLBACK(lifeboat, TYPE_PROC_REF(/obj/docking_port/mobile/crashable/lifeboat, evac_launch)), 10 SECONDS) + lifeboat.alarm_sound_loop.start() + lifeboat.playing_launch_announcement_alarm = TRUE + return + + if ("Emergency Launch") + launch_initiated = TRUE + to_chat(user, "[src]'s screen blinks and says \"Emergency Launch command accepted\".") + lifeboat.evac_launch() + shipwide_ai_announcement("Emergency Launch command received. Launching [lifeboat.id == MOBILE_SHUTTLE_LIFEBOAT_PORT ? "Port" : "Starboard"] Lifeboat.") + return + if(SHUTTLE_IGNITING) - to_chat(user, SPAN_NOTICE("\The [src]'s screen says \"Engines firing\".")) + to_chat(user, SPAN_NOTICE("[src]'s screen says \"Engines firing\".")) if(SHUTTLE_CALL) - to_chat(user, SPAN_NOTICE("\The [src] has flight information scrolling across the screen. The autopilot is working correctly.")) + to_chat(user, SPAN_NOTICE("[src] has flight information scrolling across the screen. The autopilot is working correctly.")) /obj/structure/machinery/computer/shuttle/lifeboat/attack_alien(mob/living/carbon/xenomorph/xeno) if(xeno.caste && xeno.caste.is_intelligent) - var/obj/docking_port/mobile/lifeboat/lifeboat = SSshuttle.getShuttle(shuttleId) + var/obj/docking_port/mobile/crashable/lifeboat/lifeboat = SSshuttle.getShuttle(shuttleId) if(lifeboat.status == LIFEBOAT_LOCKED) to_chat(xeno, SPAN_WARNING("We already wrested away control of this metal bird.")) return XENO_NO_DELAY_ACTION + if(lifeboat.mode == SHUTTLE_CALL) + to_chat(xeno, SPAN_WARNING("Too late, you cannot stop the metal bird mid-flight.")) + return XENO_NO_DELAY_ACTION xeno_attack_delay(xeno) if(do_after(usr, 5 SECONDS, INTERRUPT_ALL, BUSY_ICON_HOSTILE)) - if(lifeboat.status != LIFEBOAT_LOCKED) - lifeboat.status = LIFEBOAT_LOCKED - lifeboat.available = FALSE - lifeboat.set_mode(SHUTTLE_IDLE) - xeno_message(SPAN_XENOANNOUNCE("We have wrested away control of one of the metal birds! They shall not escape!"), 3, xeno.hivenumber) + if(lifeboat.status == LIFEBOAT_LOCKED) + return XENO_NO_DELAY_ACTION + if(lifeboat.mode == SHUTTLE_CALL) + to_chat(xeno, SPAN_WARNING("Too late, you cannot stop the metal bird mid-flight.")) + return XENO_NO_DELAY_ACTION + lifeboat.status = LIFEBOAT_LOCKED + lifeboat.available = FALSE + lifeboat.set_mode(SHUTTLE_IDLE) + var/obj/docking_port/stationary/lifeboat_dock/lifeboat_dock = lifeboat.get_docked() + lifeboat_dock.open_dock() + xeno_message(SPAN_XENOANNOUNCE("We have wrested away control of one of the metal birds! They shall not escape!"), 3, xeno.hivenumber) return XENO_NO_DELAY_ACTION else return ..() diff --git a/code/modules/shuttle/computers/dropship_computer.dm b/code/modules/shuttle/computers/dropship_computer.dm index 19d9abfd81b4..1301a0c0925d 100644 --- a/code/modules/shuttle/computers/dropship_computer.dm +++ b/code/modules/shuttle/computers/dropship_computer.dm @@ -1,15 +1,13 @@ /obj/structure/machinery/computer/shuttle/dropship/flight name = "dropship navigation computer" - desc = "flight computer for dropship" + desc = "A flight computer that can be used for autopilot or long-range flights." icon = 'icons/obj/structures/machinery/shuttle-parts.dmi' icon_state = "console" req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_DROPSHIP) unacidable = TRUE exproof = TRUE needs_power = FALSE - - // True if we are doing a flyby - var/is_set_flyby = FALSE + var/override_being_removed = FALSE // Admin disabled var/disabled = FALSE @@ -54,15 +52,15 @@ /obj/structure/machinery/computer/shuttle/dropship/flight/enable() disabled = FALSE -/obj/structure/machinery/computer/shuttle/dropship/flight/proc/update_equipment(optimised=FALSE) +/obj/structure/machinery/computer/shuttle/dropship/flight/proc/update_equipment(optimised=FALSE, is_flyby=FALSE) var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttleId) if(!dropship) return // initial flight time - var/flight_duration = is_set_flyby ? DROPSHIP_TRANSIT_DURATION : DROPSHIP_TRANSIT_DURATION * GLOB.ship_alt + var/flight_duration = is_flyby ? DROPSHIP_TRANSIT_DURATION : DROPSHIP_TRANSIT_DURATION * GLOB.ship_alt if(optimised) - if(is_set_flyby) + if(is_flyby) flight_duration = DROPSHIP_TRANSIT_DURATION * 1.5 else flight_duration = DROPSHIP_TRANSIT_DURATION * SHUTTLE_OPTIMIZE_FACTOR_TRAVEL @@ -76,7 +74,7 @@ for(var/obj/structure/dropship_equipment/equipment as anything in dropship.equipments) // fuel enhancer if(istype(equipment, /obj/structure/dropship_equipment/fuel/fuel_enhancer)) - if(is_set_flyby) + if(is_flyby) flight_duration = flight_duration / SHUTTLE_FUEL_ENHANCE_FACTOR_TRAVEL else flight_duration = flight_duration * SHUTTLE_FUEL_ENHANCE_FACTOR_TRAVEL @@ -146,11 +144,31 @@ to_chat(user, SPAN_NOTICE("\The [src] is not responsive")) return - if(dropship_control_lost && skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT)) - to_chat(user, SPAN_NOTICE("You start to remove the Queens override.")) - if(!do_after(user, 3 MINUTES, INTERRUPT_ALL, BUSY_ICON_HOSTILE)) - to_chat(user, SPAN_WARNING("You fail to remove the Queens override")) + if(dropship_control_lost) + var/remaining_time = timeleft(door_control_cooldown) / 10 + to_chat(user, SPAN_WARNING("The shuttle is not responding due to an unauthorized access attempt. In large text it says the lockout will be automatically removed in [remaining_time] seconds.")) + if(!skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT)) return + if(user.action_busy || override_being_removed) + return + to_chat(user, SPAN_NOTICE("You start to remove the lockout.")) + override_being_removed = TRUE + while(remaining_time > 20) + if(!do_after(user, 20 SECONDS, INTERRUPT_ALL|INTERRUPT_CHANGED_LYING, BUSY_ICON_HOSTILE, numticks = 20)) + to_chat(user, SPAN_WARNING("You fail to remove the lockout!")) + override_being_removed = FALSE + return + if(!dropship_control_lost) + to_chat(user, SPAN_NOTICE("The lockout is already removed.")) + break + remaining_time = timeleft(door_control_cooldown) / 10 - 20 + if(remaining_time > 0) + to_chat(user, SPAN_NOTICE("You partially bypass the lockout, only [remaining_time] seconds left.")) + door_control_cooldown = addtimer(CALLBACK(src, PROC_REF(remove_door_lock)), remaining_time SECONDS, TIMER_STOPPABLE|TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_NO_HASH_WAIT) + override_being_removed = FALSE + if(dropship_control_lost) + remove_door_lock() + to_chat(user, SPAN_NOTICE("You successfully removed the lockout!")) playsound(loc, 'sound/machines/terminal_success.ogg', KEYBOARD_SOUND_VOLUME, 1) if(!shuttle.is_hijacked) @@ -174,7 +192,9 @@ to_chat(xeno, SPAN_WARNING("The metal bird can not land here. It might be currently occupied!")) return to_chat(xeno, SPAN_NOTICE("You command the metal bird to come down. Clever girl.")) - xeno_announcement(SPAN_XENOANNOUNCE("Your Queen has commanded the metal bird to the hive at [linked_lz]."), xeno.hivenumber, XENO_GENERAL_ANNOUNCE) + xeno_announcement(SPAN_XENOANNOUNCE("Our Queen has commanded the metal bird to the hive at [linked_lz]."), xeno.hivenumber, XENO_GENERAL_ANNOUNCE) + log_ares_flight("Unknown", "Remote launch signal for [shuttle.name] received. Authentication garbled.") + log_ares_security("Security Alert", "Remote launch signal for [shuttle.name] received. Authentication garbled.") return if(shuttle.destination.id != linked_lz) to_chat(xeno, "The shuttle not ready. The screen reads T-[shuttle.timeLeft(10)]. Have patience.") @@ -191,39 +211,50 @@ /obj/structure/machinery/computer/shuttle/dropship/flight/attack_alien(mob/living/carbon/xenomorph/xeno) - if(!is_ground_level(z)) - to_chat(xeno, SPAN_NOTICE("Lights flash from the terminal but you can't comprehend their meaning.")) - playsound(loc, 'sound/machines/terminal_error.ogg', KEYBOARD_SOUND_VOLUME, 1) - return + var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttleId) + // If the attacking xeno isn't the queen. if(xeno.hive_pos != XENO_QUEEN) + // If the 'about to launch' alarm is playing, a xeno can whack the computer to stop it. + if(dropship.playing_launch_announcement_alarm) + stop_playing_launch_announcement_alarm() + xeno.animation_attack_on(src) + to_chat(xeno, SPAN_XENONOTICE("We slash at [src], silencing its squawking!")) + playsound(loc, 'sound/machines/terminal_shutdown.ogg', 20) + else + to_chat(xeno, SPAN_NOTICE("Lights flash from the terminal but we can't comprehend their meaning.")) + playsound(loc, 'sound/machines/terminal_error.ogg', KEYBOARD_SOUND_VOLUME, TRUE) + return XENO_NONCOMBAT_ACTION + + if(!is_ground_level(z)) + // "you" rather than "we" for this one since non-queen castes will have returned above. to_chat(xeno, SPAN_NOTICE("Lights flash from the terminal but you can't comprehend their meaning.")) - playsound(loc, 'sound/machines/terminal_error.ogg', KEYBOARD_SOUND_VOLUME, 1) - return + playsound(loc, 'sound/machines/terminal_error.ogg', KEYBOARD_SOUND_VOLUME, TRUE) + return XENO_NONCOMBAT_ACTION if(is_remote) groundside_alien_action(xeno) return - var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttleId) if(dropship.is_hijacked) return - // door controls being overriden + // door controls being overridden if(!dropship_control_lost) - to_chat(xeno, SPAN_XENONOTICE("You override the doors.")) - xeno_message(SPAN_XENOANNOUNCE("The doors of the metal bird have been overridden! Rejoice!"), 3, xeno.hivenumber) dropship.control_doors("unlock", "all", TRUE) dropship_control_lost = TRUE - door_control_cooldown = addtimer(CALLBACK(src, PROC_REF(remove_door_lock)), SHUTTLE_LOCK_COOLDOWN, TIMER_STOPPABLE) - announce_dchat("[xeno] has locked \the [dropship]", src) - - if(almayer_orbital_cannon) - almayer_orbital_cannon.is_disabled = TRUE - addtimer(CALLBACK(almayer_orbital_cannon, TYPE_PROC_REF(/obj/structure/orbital_cannon, enable)), 10 MINUTES, TIMER_UNIQUE) - + door_control_cooldown = addtimer(CALLBACK(src, PROC_REF(remove_door_lock)), SHUTTLE_LOCK_COOLDOWN, TIMER_STOPPABLE|TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_NO_HASH_WAIT) + if(GLOB.almayer_orbital_cannon) + GLOB.almayer_orbital_cannon.is_disabled = TRUE + addtimer(CALLBACK(GLOB.almayer_orbital_cannon, TYPE_PROC_REF(/obj/structure/orbital_cannon, enable)), 10 MINUTES, TIMER_UNIQUE) if(!GLOB.resin_lz_allowed) set_lz_resin_allowed(TRUE) + stop_playing_launch_announcement_alarm() + + to_chat(xeno, SPAN_XENONOTICE("You override the doors.")) + xeno_message(SPAN_XENOANNOUNCE("The doors of the metal bird have been overridden! Rejoice!"), 3, xeno.hivenumber) + message_admins("[key_name(xeno)] has locked the dropship '[dropship]'", xeno.x, xeno.y, xeno.z) + notify_ghosts(header = "Dropship Locked", message = "[xeno] has locked [dropship]!", source = xeno, action = NOTIFY_ORBIT) return if(dropship_control_lost) @@ -244,11 +275,10 @@ return /obj/structure/machinery/computer/shuttle/dropship/flight/proc/hijack(mob/user, force = FALSE) - // select crash location var/turf/source_turf = get_turf(src) var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttleId) - var/result = tgui_input_list(user, "Where to 'land'?", "Dropship Hijack", almayer_ship_sections , timeout = 10 SECONDS) + var/result = tgui_input_list(user, "Where to 'land'?", "Dropship Hijack", GLOB.almayer_ship_sections , timeout = 10 SECONDS) if(!result) return if(!user.Adjacent(source_turf) && !force) @@ -267,7 +297,8 @@ hijack.fire() GLOB.alt_ctrl_disabled = TRUE - marine_announcement("Unscheduled dropship departure detected from operational area. Hijack likely. Shutting down autopilot.", "Dropship Alert", 'sound/AI/hijack.ogg') + marine_announcement("Unscheduled dropship departure detected from operational area. Hijack likely. Shutting down autopilot.", "Dropship Alert", 'sound/AI/hijack.ogg', logging = ARES_LOG_SECURITY) + log_ares_flight("Unknown", "Unscheduled dropship departure detected from operational area. Hijack likely. Shutting down autopilot.") var/mob/living/carbon/xenomorph/xeno = user var/hivenumber = XENO_HIVE_NORMAL @@ -275,7 +306,14 @@ hivenumber = xeno.hivenumber xeno_message(SPAN_XENOANNOUNCE("The Queen has commanded the metal bird to depart for the metal hive in the sky! Rejoice!"), 3, hivenumber) xeno_message(SPAN_XENOANNOUNCE("The hive swells with power! You will now steadily gain pooled larva over time."), 2, hivenumber) - GLOB.hive_datum[hivenumber].abandon_on_hijack() + var/datum/hive_status/hive = GLOB.hive_datum[hivenumber] + hive.abandon_on_hijack() + var/original_evilution = hive.evolution_bonus + hive.override_evilution(XENO_HIJACK_EVILUTION_BUFF, TRUE) + if(hive.living_xeno_queen) + var/datum/action/xeno_action/onclick/grow_ovipositor/ovi_ability = get_xeno_action_by_type(hive.living_xeno_queen, /datum/action/xeno_action/onclick/grow_ovipositor) + ovi_ability.reduce_cooldown(ovi_ability.xeno_cooldown) + addtimer(CALLBACK(hive, TYPE_PROC_REF(/datum/hive_status, override_evilution), original_evilution, FALSE), XENO_HIJACK_EVILUTION_TIME) // Notify the yautja too so they stop the hunt message_all_yautja("The serpent Queen has commanded the landing shuttle to depart.") @@ -292,6 +330,7 @@ playsound(loc, 'sound/machines/terminal_success.ogg', KEYBOARD_SOUND_VOLUME, 1) dropship_control_lost = FALSE if(door_control_cooldown) + deltimer(door_control_cooldown) door_control_cooldown = null /obj/structure/machinery/computer/shuttle/dropship/flight/ui_data(mob/user) @@ -311,13 +350,24 @@ .["primary_lz"] = SSticker.mode.active_lz?.linked_lz if(shuttle.destination) .["target_destination"] = shuttle.in_flyby? "Flyby" : shuttle.destination.name - .["destinations"] = list() .["door_status"] = is_remote ? list() : shuttle.get_door_data() - - .["flight_configuration"] = is_set_flyby ? "flyby" : "ferry" .["has_flyby_skill"] = skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT) + // Launch Alarm Variables + .["playing_launch_announcement_alarm"] = shuttle.playing_launch_announcement_alarm + + .["destinations"] = list() + // add flight + .["destinations"] += list( + list( + "id" = DROPSHIP_FLYBY_ID, + "name" = "Flyby", + "available" = TRUE, + "error" = FALSE + ) + ) + for(var/obj/docking_port/stationary/dock in compatible_landing_zones) var/dock_reserved = FALSE for(var/obj/docking_port/mobile/other_shuttle in SSshuttle.mobile) @@ -352,31 +402,39 @@ to_chat(usr, SPAN_WARNING("You can't move to a new destination right now.")) return TRUE - if(is_set_flyby && !skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT)) - to_chat(user, SPAN_WARNING("You don't have the skill to perform a flyby.")) - return FALSE var/is_optimised = FALSE // automatically apply optimisation if user is a pilot if(skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT)) is_optimised = TRUE - update_equipment(is_optimised) - if(is_set_flyby) + + var/dock_id = params["target"] + if(dock_id == DROPSHIP_FLYBY_ID) + if(!skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT)) + to_chat(user, SPAN_WARNING("You don't have the skill to perform a flyby.")) + return FALSE + update_equipment(is_optimised, TRUE) to_chat(user, SPAN_NOTICE("You begin the launch sequence for a flyby.")) + log_ares_flight(user.name, "Launched Dropship [shuttle.name] on a flyby.") + var/log = "[key_name(user)] launched the dropship [src.shuttleId] on flyby." + msg_admin_niche(log) + log_interact(user, msg = "[log]") shuttle.send_for_flyby() + stop_playing_launch_announcement_alarm() return TRUE - var/dockId = params["target"] + + update_equipment(is_optimised, FALSE) var/list/local_data = ui_data(user) var/found = FALSE - playsound(loc, get_sfx("terminal_button"), KEYBOARD_SOUND_VOLUME, 1) + playsound(loc, get_sfx("terminal_button"), 5, 1) for(var/destination in local_data["destinations"]) - if(destination["id"] == dockId) + if(destination["id"] == dock_id) found = TRUE break if(!found) - log_admin("[key_name(user)] may be attempting a href dock exploit on [src] with target location \"[dockId]\"") - to_chat(user, SPAN_WARNING("The [dockId] dock is not available at this time.")) + log_admin("[key_name(user)] may be attempting a href dock exploit on [src] with target location \"[dock_id]\"") + to_chat(user, SPAN_WARNING("The [dock_id] dock is not available at this time.")) return - var/obj/docking_port/stationary/dock = SSshuttle.getDock(dockId) + var/obj/docking_port/stationary/dock = SSshuttle.getDock(dock_id) var/dock_reserved = FALSE for(var/obj/docking_port/mobile/other_shuttle in SSshuttle.mobile) if(dock == other_shuttle.destination) @@ -387,6 +445,11 @@ return TRUE SSshuttle.moveShuttle(shuttle.id, dock.id, TRUE) to_chat(user, SPAN_NOTICE("You begin the launch sequence to [dock].")) + log_ares_flight(user.name, "Launched Dropship [shuttle.name] on a flight to [dock].") + var/log = "[key_name(user)] launched the dropship [src.shuttleId] on transport." + msg_admin_niche(log) + log_interact(user, msg = "[log]") + stop_playing_launch_announcement_alarm() return TRUE if("button-push") playsound(loc, get_sfx("terminal_button"), KEYBOARD_SOUND_VOLUME, 1) @@ -401,16 +464,10 @@ else playsound(loc, 'sound/machines/terminal_error.ogg', KEYBOARD_SOUND_VOLUME, 1) to_chat(user, SPAN_WARNING("Door controls have been overridden. Please call technical support.")) - if("set-ferry") - is_set_flyby = FALSE - msg_admin_niche("[key_name_admin(usr)] set the dropship [src.shuttleId] into transport") - if("set-flyby") - is_set_flyby = TRUE - msg_admin_niche("[key_name_admin(usr)] set the dropship [src.shuttleId] into flyby") if("set-automate") var/almayer_lz = params["hangar_id"] var/ground_lz = params["ground_id"] - var/delay = Clamp(params["delay"] SECONDS, DROPSHIP_MIN_AUTO_DELAY, DROPSHIP_MAX_AUTO_DELAY) + var/delay = clamp(params["delay"] SECONDS, DROPSHIP_MIN_AUTO_DELAY, DROPSHIP_MAX_AUTO_DELAY) // TODO verify if(almayer_lz == ground_lz) @@ -426,7 +483,10 @@ shuttle.automated_lz_id = ground_lz shuttle.automated_delay = delay playsound(loc, get_sfx("terminal_button"), KEYBOARD_SOUND_VOLUME, 1) - message_admins("[key_name_admin(usr)] has set auto pilot on '[shuttle.name]'") + log_ares_flight(user.name, "Enabled autopilot for Dropship [shuttle.name].") + var/log = "[key_name(user)] has enabled auto pilot on '[shuttle.name]'" + message_admins(log) + log_interact(user, msg = "[log]") return /* TODO if(!dropship.automated_launch) //If we're toggling it on... @@ -440,12 +500,32 @@ shuttle.automated_lz_id = null shuttle.automated_delay = null playsound(loc, get_sfx("terminal_button"), KEYBOARD_SOUND_VOLUME, 1) - message_admins("[key_name_admin(usr)] has removed auto pilot on '[shuttle.name]'") + log_ares_flight(user.name, "Disabled autopilot for Dropship [shuttle.name].") + var/log = "[key_name(user)] has disabled auto pilot on '[shuttle.name]'" + message_admins(log) + log_interact(user, msg = "[log]") return if("cancel-flyby") if(shuttle.in_flyby && shuttle.timer && shuttle.timeLeft(1) >= DROPSHIP_WARMUP_TIME) shuttle.setTimer(DROPSHIP_WARMUP_TIME) + if("play_launch_announcement_alarm") + if (shuttle.mode != SHUTTLE_IDLE && shuttle.mode != SHUTTLE_RECHARGING) + to_chat(usr, SPAN_WARNING("The Launch Announcement Alarm is designed to tell people that you're going to take off soon.")) + return + shuttle.alarm_sound_loop.start() + shuttle.playing_launch_announcement_alarm = TRUE + return + if ("stop_playing_launch_announcement_alarm") + stop_playing_launch_announcement_alarm() + return + +/obj/structure/machinery/computer/shuttle/dropship/flight/proc/stop_playing_launch_announcement_alarm() + var/obj/docking_port/mobile/marine_dropship/shuttle = SSshuttle.getShuttle(shuttleId) + + shuttle.alarm_sound_loop.stop() + shuttle.playing_launch_announcement_alarm = FALSE + return /obj/structure/machinery/computer/shuttle/dropship/flight/lz1 icon = 'icons/obj/structures/machinery/computer.dmi' diff --git a/code/modules/shuttle/computers/escape_pod_computer.dm b/code/modules/shuttle/computers/escape_pod_computer.dm index a28f2bfd2d60..c45ac7d56102 100644 --- a/code/modules/shuttle/computers/escape_pod_computer.dm +++ b/code/modules/shuttle/computers/escape_pod_computer.dm @@ -12,6 +12,7 @@ unslashable = TRUE unacidable = TRUE var/pod_state = STATE_IDLE + var/launch_without_evac = FALSE /obj/structure/machinery/computer/shuttle/escape_pod_panel/ex_act(severity) return FALSE @@ -39,7 +40,7 @@ /obj/structure/machinery/computer/shuttle/escape_pod_panel/ui_data(mob/user) . = list() - var/obj/docking_port/mobile/escape_shuttle/shuttle = SSshuttle.getShuttle(shuttleId) + var/obj/docking_port/mobile/crashable/escape_shuttle/shuttle = SSshuttle.getShuttle(shuttleId) if(pod_state == STATE_IDLE && shuttle.evac_set) pod_state = STATE_READY @@ -56,6 +57,7 @@ .["door_state"] = door.density .["door_lock"] = shuttle.door_handler.is_locked .["can_delay"] = TRUE//launch_status[2] + .["launch_without_evac"] = launch_without_evac /obj/structure/machinery/computer/shuttle/escape_pod_panel/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) @@ -63,9 +65,12 @@ if(.) return - var/obj/docking_port/mobile/escape_shuttle/shuttle = SSshuttle.getShuttle(shuttleId) + var/obj/docking_port/mobile/crashable/escape_shuttle/shuttle = SSshuttle.getShuttle(shuttleId) switch(action) if("force_launch") + if(!launch_without_evac && pod_state != STATE_READY && pod_state != STATE_DELAYED) + return + shuttle.evac_launch() pod_state = STATE_LAUNCHING . = TRUE @@ -80,6 +85,9 @@ shuttle.door_handler.control_doors("force-lock-launch") . = TRUE +/obj/structure/machinery/computer/shuttle/escape_pod_panel/liaison + launch_without_evac = TRUE + //========================================================================================= //================================Evacuation Sleeper======================================= //========================================================================================= @@ -89,14 +97,19 @@ unslashable = TRUE unacidable = TRUE time_till_despawn = 6000000 //near infinite so despawn never occurs. + /// The name of the mob who injected the occupant into the pod. If it does not match the occupant, the occupant can leave. + var/injector_name var/being_forced = 0 //Simple variable to prevent sound spam. var/dock_state = STATE_IDLE /obj/structure/machinery/cryopod/evacuation/ex_act(severity) return FALSE -/obj/structure/machinery/cryopod/evacuation/attackby(obj/item/grab/G, mob/user) - if(istype(G)) +/obj/structure/machinery/cryopod/evacuation/attackby(obj/item/grab/the_grab, mob/user) + if(istype(the_grab)) + if(user.is_mob_incapacitated() || !(ishuman(user))) + return FALSE + if(being_forced) to_chat(user, SPAN_WARNING("There's something forcing it open!")) return FALSE @@ -109,16 +122,20 @@ to_chat(user, SPAN_WARNING("The cryo pod is not responding to commands!")) return FALSE - var/mob/living/carbon/human/M = G.grabbed_thing - if(!istype(M)) + var/mob/living/carbon/human/grabbed_mob = the_grab.grabbed_thing + if(!istype(grabbed_mob)) + return FALSE + if(grabbed_mob.stat == DEAD) //This mob is dead + to_chat(user, SPAN_WARNING("[src] immediately rejects [grabbed_mob]. \He passed away!")) return FALSE - visible_message(SPAN_WARNING("[user] starts putting [M.name] into the cryo pod."), null, null, 3) + visible_message(SPAN_WARNING("[user] starts putting [grabbed_mob.name] into the cryo pod."), null, null, 3) if(do_after(user, 20, INTERRUPT_ALL, BUSY_ICON_GENERIC)) - if(!M || !G || !G.grabbed_thing || !G.grabbed_thing.loc || G.grabbed_thing != M) + if(!grabbed_mob || !the_grab || !the_grab.grabbed_thing || !the_grab.grabbed_thing.loc || the_grab.grabbed_thing != grabbed_mob) return FALSE - move_mob_inside(M) + move_mob_inside(grabbed_mob) + injector_name = user.real_name /obj/structure/machinery/cryopod/evacuation/eject() set name = "Eject Pod" @@ -128,17 +145,24 @@ if(!occupant || !usr.stat || usr.is_mob_restrained()) return FALSE - if(occupant) //Once you're in, you cannot exit, and outside forces cannot eject you. - //The occupant is actually automatically ejected once the evac is canceled. - if(occupant != usr) to_chat(usr, SPAN_WARNING("You are unable to eject the occupant unless the evacuation is canceled.")) - add_fingerprint(usr) + //Once you're in, you cannot exit, and outside forces cannot eject you. + //The occupant is actually automatically ejected once the evac is canceled. + if(occupant != usr) + to_chat(usr, SPAN_WARNING("You are unable to eject the occupant unless the evacuation is canceled.")) + return FALSE + if(occupant.real_name != injector_name) + go_out() + else + to_chat(usr, SPAN_WARNING("You are unable to leave the [src] until evacuation completes, or is cancelled!.")) + return FALSE /obj/structure/machinery/cryopod/evacuation/go_out() //When the system ejects the occupant. if(occupant) occupant.forceMove(get_turf(src)) occupant.in_stasis = FALSE occupant = null + injector_name = null icon_state = orient_right ? "body_scanner_open-r" : "body_scanner_open" /obj/structure/machinery/cryopod/evacuation/move_inside() @@ -168,6 +192,7 @@ if(do_after(user, 20, INTERRUPT_NO_NEEDHAND, BUSY_ICON_GENERIC)) user.stop_pulling() move_mob_inside(user) + injector_name = user.real_name /obj/structure/machinery/cryopod/evacuation/attack_alien(mob/living/carbon/xenomorph/user) if(being_forced) @@ -201,13 +226,21 @@ /obj/structure/machinery/door/airlock/evacuation name = "\improper Evacuation Airlock" icon = 'icons/obj/structures/doors/pod_doors.dmi' - heat_proof = 1 unslashable = TRUE unacidable = TRUE + var/obj/docking_port/mobile/crashable/escape_shuttle/linked_shuttle + var/start_locked = TRUE /obj/structure/machinery/door/airlock/evacuation/Initialize() . = ..() - INVOKE_ASYNC(src, PROC_REF(lock)) + if(start_locked) + INVOKE_ASYNC(src, PROC_REF(lock)) + +/obj/structure/machinery/door/airlock/evacuation/Destroy() + if(linked_shuttle) + linked_shuttle.mode = SHUTTLE_CRASHED + linked_shuttle.door_handler.doors -= list(src) + . = ..() //Can't interact with them, mostly to prevent grief and meta. /obj/structure/machinery/door/airlock/evacuation/Collided() @@ -219,8 +252,27 @@ /obj/structure/machinery/door/airlock/evacuation/attack_hand() return FALSE -/obj/structure/machinery/door/airlock/evacuation/attack_alien() - return FALSE //Probably a better idea that these cannot be forced open. +/obj/structure/machinery/door/airlock/evacuation/attack_alien(mob/living/carbon/xenomorph/xeno) + if(!density || unslashable) //doors become slashable after evac is called + return FALSE + + if(xeno.claw_type < CLAW_TYPE_SHARP) + to_chat(xeno, SPAN_WARNING("[src] is bolted down tight.")) + return XENO_NO_DELAY_ACTION + + xeno.animation_attack_on(src) + playsound(src, 'sound/effects/metalhit.ogg', 25, 1) + take_damage(HEALTH_DOOR / XENO_HITS_TO_DESTROY_BOLTED_DOOR) + return XENO_ATTACK_ACTION + /obj/structure/machinery/door/airlock/evacuation/attack_remote() return FALSE + +/obj/structure/machinery/door/airlock/evacuation/get_applying_acid_time() //you can melt evacuation doors only when they are manually locked + if(!density) + return -1 + return ..() + +/obj/structure/machinery/door/airlock/evacuation/liaison + start_locked = FALSE diff --git a/code/modules/shuttle/computers/trijent_elevator_control.dm b/code/modules/shuttle/computers/trijent_elevator_control.dm index 290d0c94b33d..41c3456a1fe0 100644 --- a/code/modules/shuttle/computers/trijent_elevator_control.dm +++ b/code/modules/shuttle/computers/trijent_elevator_control.dm @@ -1,8 +1,6 @@ /obj/structure/machinery/computer/shuttle/elevator_controller/elevator_call name = "\improper Elevator Call" desc = "Control panel for the elevator" - icon = 'icons/obj/structures/machinery/computer.dmi' - icon_state = "elevator_screen" shuttleId = MOBILE_TRIJENT_ELEVATOR is_call = TRUE var/dockId @@ -10,6 +8,13 @@ /obj/structure/machinery/computer/shuttle/elevator_controller/elevator_call/get_landing_zones() return list(SSshuttle.getDock(dockId)) + +/obj/structure/machinery/computer/shuttle/elevator_controller/elevator_call/trijent/occupied + dockId = STAT_TRIJENT_OCCUPIED + +/obj/structure/machinery/computer/shuttle/elevator_controller/elevator_call/trijent/empty + dockId = STAT_TRIJENT_EMPTY + /obj/structure/machinery/computer/shuttle/elevator_controller/elevator_call/trijent/lz1 dockId = STAT_TRIJENT_LZ1 @@ -38,8 +43,15 @@ /obj/structure/machinery/computer/shuttle/elevator_controller/proc/get_landing_zones() . = list() + var/obj/docking_port/mobile/trijent_elevator/shuttle = SSshuttle.getShuttle(shuttleId) + for(var/obj/docking_port/stationary/trijent_elevator/elev in SSshuttle.stationary) - . += list(elev) + if(!shuttle.elevator_network) + . += list(elev) + continue + if(shuttle.elevator_network == elev.elevator_network) + . += list(elev) + continue /obj/structure/machinery/computer/shuttle/elevator_controller/tgui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) diff --git a/code/modules/shuttle/dropship.dm b/code/modules/shuttle/dropship.dm new file mode 100644 index 000000000000..cbca500f8f71 --- /dev/null +++ b/code/modules/shuttle/dropship.dm @@ -0,0 +1,217 @@ +/obj/structure/shuttle/part + opacity = TRUE + density = TRUE + unslashable = TRUE + unacidable = TRUE + breakable = FALSE + indestructible = TRUE + +/obj/structure/shuttle/part/dropship1 + name = "\improper Alamo" + icon = 'icons/turf/dropship.dmi' + icon_state = "1" + +/obj/structure/shuttle/part/dropship1/ex_act(severity, direction) + return FALSE + +/obj/structure/shuttle/part/dropship1/transparent + opacity = FALSE + +/obj/structure/shuttle/part/dropship1/transparent/nose_top_right + icon_state = "102" + +/obj/structure/shuttle/part/dropship1/transparent/nose_center + icon_state = "101" + +/obj/structure/shuttle/part/dropship1/transparent/nose_top_left + icon_state = "100" + +/obj/structure/shuttle/part/dropship1/nose_front_left + icon_state = "95" + +/obj/structure/shuttle/part/dropship1/nose_front_right + icon_state = "99" + +/obj/structure/shuttle/part/dropship1/transparent/inner_right_weapons + icon_state = "90" + +/obj/structure/shuttle/part/dropship1/transparent/outer_right_weapons + icon_state = "91" + +/obj/structure/shuttle/part/dropship1/transparent/inner_left_weapons + icon_state = "85" + +/obj/structure/shuttle/part/dropship1/transparent/outer_left_weapons + icon_state = "84" + +/obj/structure/shuttle/part/dropship1/transparent/upper_right_wing + icon_state = "74" + +/obj/structure/shuttle/part/dropship1/transparent/middle_right_wing + icon_state = "70" + +/obj/structure/shuttle/part/dropship1/transparent/lower_right_wing + icon_state = "65" + +/obj/structure/shuttle/part/dropship1/transparent/upper_left_wing + icon_state = "71" + +/obj/structure/shuttle/part/dropship1/transparent/middle_left_wing + icon_state = "66" + +/obj/structure/shuttle/part/dropship1/transparent/lower_left_wing + icon_state = "61" + +/obj/structure/shuttle/part/dropship1/lower_left_wall + icon_state = "46" + +/obj/structure/shuttle/part/dropship1/lower_right_wall + icon_state = "49" + +/obj/structure/shuttle/part/dropship1/transparent/engine_left_cap + icon_state = "40" + +/obj/structure/shuttle/part/dropship1/transparent/engine_right_cap + icon_state = "41" + +/obj/structure/shuttle/part/dropship1/transparent/engine_left_exhaust + icon_state = "16" + +/obj/structure/shuttle/part/dropship1/transparent/engine_right_exhaust + icon_state = "17" + +/obj/structure/shuttle/part/dropship1/bottom_left_wall + icon_state = "9" + +/obj/structure/shuttle/part/dropship1/bottom_right_wall + icon_state = "15" + +/obj/structure/shuttle/part/dropship1/left_inner_wing_connector + icon_state = "7" + +/obj/structure/shuttle/part/dropship1/right_inner_wing_connector + icon_state = "8" + +/obj/structure/shuttle/part/dropship1/left_outer_wing_connector + icon_state = "3" + +/obj/structure/shuttle/part/dropship1/right_outer_wing_connector + icon_state = "4" + +/obj/structure/shuttle/part/dropship1/transparent/left_inner_bottom_wing + icon_state = "1" + +/obj/structure/shuttle/part/dropship1/transparent/left_outer_bottom_wing + icon_state = "2" + +/obj/structure/shuttle/part/dropship1/transparent/right_inner_bottom_wing + icon_state = "5" + +/obj/structure/shuttle/part/dropship1/transparent/right_outer_bottom_wing + icon_state = "6" + +/obj/structure/shuttle/part/dropship2 + name = "\improper Normandy" + icon = 'icons/turf/dropship2.dmi' + icon_state = "1" + opacity = TRUE + +/obj/structure/shuttle/part/dropship2/ex_act(severity, direction) + return FALSE + +/obj/structure/shuttle/part/dropship2/transparent + opacity = FALSE + +/obj/structure/shuttle/part/dropship2/transparent/nose_top_right + icon_state = "102" + +/obj/structure/shuttle/part/dropship2/transparent/nose_center + icon_state = "101" + +/obj/structure/shuttle/part/dropship2/transparent/nose_top_left + icon_state = "100" + +/obj/structure/shuttle/part/dropship2/nose_front_left + icon_state = "95" + +/obj/structure/shuttle/part/dropship2/nose_front_right + icon_state = "99" + +/obj/structure/shuttle/part/dropship2/transparent/inner_right_weapons + icon_state = "90" + +/obj/structure/shuttle/part/dropship2/transparent/outer_right_weapons + icon_state = "91" + +/obj/structure/shuttle/part/dropship2/transparent/inner_left_weapons + icon_state = "85" + +/obj/structure/shuttle/part/dropship2/transparent/outer_left_weapons + icon_state = "84" + +/obj/structure/shuttle/part/dropship2/transparent/upper_right_wing + icon_state = "74" + +/obj/structure/shuttle/part/dropship2/transparent/middle_right_wing + icon_state = "70" + +/obj/structure/shuttle/part/dropship2/transparent/lower_right_wing + icon_state = "65" + +/obj/structure/shuttle/part/dropship2/transparent/upper_left_wing + icon_state = "71" + +/obj/structure/shuttle/part/dropship2/transparent/middle_left_wing + icon_state = "66" + +/obj/structure/shuttle/part/dropship2/transparent/lower_left_wing + icon_state = "61" + +/obj/structure/shuttle/part/dropship2/lower_left_wall + icon_state = "46" + +/obj/structure/shuttle/part/dropship2/lower_right_wall + icon_state = "49" + +/obj/structure/shuttle/part/dropship2/transparent/engine_left_cap + icon_state = "40" + +/obj/structure/shuttle/part/dropship2/transparent/engine_right_cap + icon_state = "41" + +/obj/structure/shuttle/part/dropship2/transparent/engine_left_exhaust + icon_state = "16" + +/obj/structure/shuttle/part/dropship2/transparent/engine_right_exhaust + icon_state = "17" + +/obj/structure/shuttle/part/dropship2/bottom_left_wall + icon_state = "9" + +/obj/structure/shuttle/part/dropship2/bottom_right_wall + icon_state = "15" + +/obj/structure/shuttle/part/dropship2/left_inner_wing_connector + icon_state = "7" + +/obj/structure/shuttle/part/dropship2/right_inner_wing_connector + icon_state = "8" + +/obj/structure/shuttle/part/dropship2/left_outer_wing_connector + icon_state = "3" + +/obj/structure/shuttle/part/dropship2/right_outer_wing_connector + icon_state = "4" + +/obj/structure/shuttle/part/dropship2/transparent/left_outer_bottom_wing + icon_state = "1" + +/obj/structure/shuttle/part/dropship2/transparent/left_outer_inner_wing + icon_state = "2" + +/obj/structure/shuttle/part/dropship2/transparent/right_inner_bottom_wing + icon_state = "5" + +/obj/structure/shuttle/part/dropship2/transparent/right_outer_bottom_wing + icon_state = "6" + diff --git a/code/modules/shuttle/dropship_hijack.dm b/code/modules/shuttle/dropship_hijack.dm index 4798279a8b94..c01445be5b5b 100644 --- a/code/modules/shuttle/dropship_hijack.dm +++ b/code/modules/shuttle/dropship_hijack.dm @@ -1,3 +1,5 @@ +#define HIJACK_CRASH_SITE_OFFSET_X 0 +#define HIJACK_CRASH_SITE_OFFSET_Y 0 /datum/dropship_hijack var/obj/docking_port/mobile/shuttle @@ -8,7 +10,7 @@ /datum/dropship_hijack/almayer/proc/crash_landing() //break APCs - for(var/obj/structure/machinery/power/apc/A in machines) + for(var/obj/structure/machinery/power/apc/A in GLOB.machines) if(A.z != crash_site.z) continue if(prob(A.crash_break_probability)) @@ -48,28 +50,21 @@ // Break the ultra-reinforced windows. // Break the briefing windows. - for(var/i in GLOB.hijack_bustable_windows) - var/obj/structure/window/H = i - H.deconstruct(FALSE) - - for(var/k in GLOB.hijack_bustable_ladders) - var/obj/structure/ladder/fragile_almayer/L = k - L.deconstruct() - - // Delete the briefing door(s). - for(var/D in GLOB.hijack_deletable_windows) - qdel(D) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_HIJACK_IMPACTED) + RegisterSignal(SSdcs, COMSIG_GLOB_HIJACK_LANDED, PROC_REF(finish_landing)) // Sleep while the explosions do their job var/explosion_alive = TRUE while(explosion_alive) explosion_alive = FALSE - for(var/datum/automata_cell/explosion/E in cellauto_cells) + for(var/datum/automata_cell/explosion/E in GLOB.cellauto_cells) if(E.explosion_cause_data && E.explosion_cause_data.cause_name == "dropship crash") explosion_alive = TRUE break sleep(10) +/datum/dropship_hijack/almayer/proc/finish_landing() + SShijack.announce_status_on_crash() SSticker.hijack_ocurred() /datum/dropship_hijack/almayer/proc/fire() @@ -77,24 +72,23 @@ return FALSE shuttle.callTime = DROPSHIP_CRASH_TRANSIT_DURATION * GLOB.ship_alt SSshuttle.moveShuttle(shuttle.id, crash_site.id, TRUE) - if(round_statistics) - round_statistics.track_hijack() + if(GLOB.round_statistics) + GLOB.round_statistics.track_hijack() return TRUE /datum/dropship_hijack/almayer/proc/target_crash_site(ship_section) target_ship_section = ship_section - var/area/target_area = get_crashsite_area(ship_section) - // spawn crash location - var/turf/target = pick(get_area_turfs(target_area)) + var/turf/target = get_crashsite_turf(ship_section) if(!target) to_chat(usr, SPAN_WARNING("No area available")) return var/obj/docking_port/stationary/marine_dropship/crash_site/target_site = new() crash_site = target_site - crash_site.x = target.x - 5 - crash_site.y = target.y - 11 - crash_site.z = target.z + var/turf/offset_target = locate(target.x + HIJACK_CRASH_SITE_OFFSET_X, target.y + HIJACK_CRASH_SITE_OFFSET_Y, target.z) + if(!offset_target) + offset_target = target // Welp the offsetting failed so... + target_site.forceMove(offset_target) target_site.name = "[shuttle] crash site" target_site.id = "crash_site_[shuttle.id]" @@ -113,15 +107,16 @@ return // if the AA site matches target site - if(target_ship_section == almayer_aa_cannon.protecting_section) - var/list/remaining_crash_sites = almayer_ship_sections.Copy() + if(target_ship_section == GLOB.almayer_aa_cannon.protecting_section) + var/list/remaining_crash_sites = GLOB.almayer_ship_sections.Copy() remaining_crash_sites -= target_ship_section var/new_target_ship_section = pick(remaining_crash_sites) - var/area/target_area = get_crashsite_area(new_target_ship_section) - // spawn crash location - var/turf/target = pick(get_area_turfs(target_area)) - crash_site.Move(target) - marine_announcement("A hostile aircraft on course for the [target_ship_section] has been successfully deterred.", "IX-50 MGAD System") + var/turf/target = get_crashsite_turf(new_target_ship_section) + var/turf/offset_target = locate(target.x + HIJACK_CRASH_SITE_OFFSET_X, target.y + HIJACK_CRASH_SITE_OFFSET_Y, target.z) + if(!offset_target) + offset_target = target // Welp the offsetting failed so... + crash_site.forceMove(offset_target) + marine_announcement("A hostile aircraft on course for the [target_ship_section] has been successfully deterred.", "IX-50 MGAD System", logging = ARES_LOG_SECURITY) target_ship_section = new_target_ship_section // TODO mobs not alerted for(var/area/internal_area in shuttle.shuttle_areas) @@ -147,9 +142,9 @@ shuttle.crashing = TRUE - marine_announcement("DROPSHIP ON COLLISION COURSE. CRASH IMMINENT." , "EMERGENCY", 'sound/AI/dropship_emergency.ogg') + marine_announcement("DROPSHIP ON COLLISION COURSE. CRASH IMMINENT." , "EMERGENCY", 'sound/AI/dropship_emergency.ogg', logging = ARES_LOG_SECURITY) - announce_dchat("The dropship is about to impact [get_area_name(crash_site)]", crash_site) + notify_ghosts(header = "Dropship Collision", message = "The dropship is about to impact [get_area_name(crash_site)]!", source = crash_site, extra_large = TRUE) final_announcement = TRUE playsound_area(get_area(crash_site), 'sound/effects/engine_landing.ogg', 100) @@ -170,55 +165,57 @@ playsound_z(SSmapping.levels_by_any_trait(list(ZTRAIT_MARINE_MAIN_SHIP)), 'sound/effects/dropship_crash.ogg', volume = 75) /datum/dropship_hijack/almayer/proc/disable_latejoin() - enter_allowed = FALSE + GLOB.enter_allowed = FALSE -/datum/dropship_hijack/almayer/proc/get_crashsite_area(ship_section) - var/list/areas = list() +/datum/dropship_hijack/almayer/proc/get_crashsite_turf(ship_section) + var/list/turfs = list() switch(ship_section) if("Upper deck Foreship") - areas += typesof(/area/almayer/shipboard/brig) - areas += list(/area/almayer/command/cichallway) - areas += list(/area/almayer/command/cic) + turfs += get_area_turfs(/area/almayer/shipboard/brig/armory) + turfs += get_area_turfs(/area/almayer/shipboard/brig/cells) + turfs += get_area_turfs(/area/almayer/shipboard/brig/cic_hallway) + turfs += get_area_turfs(/area/almayer/shipboard/brig/cryo) + turfs += get_area_turfs(/area/almayer/shipboard/brig/evidence_storage) + turfs += get_area_turfs(/area/almayer/shipboard/brig/execution) + turfs += get_area_turfs(/area/almayer/shipboard/brig/general_equipment) + turfs += get_area_turfs(/area/almayer/shipboard/brig/lobby) + turfs += get_area_turfs(/area/almayer/shipboard/brig/main_office) + turfs += get_area_turfs(/area/almayer/shipboard/brig/perma) + turfs += get_area_turfs(/area/almayer/shipboard/brig/processing) + turfs += get_area_turfs(/area/almayer/shipboard/brig/surgery) + turfs += get_area_turfs(/area/almayer/command/cichallway) + turfs += get_area_turfs(/area/almayer/command/cic) if("Upper deck Midship") - areas += list( - /area/almayer/medical/morgue, - /area/almayer/medical/upper_medical, - /area/almayer/medical/containment, - /area/almayer/medical/containment/cell, - /area/almayer/medical/medical_science, - /area/almayer/medical/testlab, - /area/almayer/medical/hydroponics, - ) + turfs += get_area_turfs(/area/almayer/medical/morgue) + turfs += get_area_turfs(/area/almayer/medical/upper_medical) + turfs += get_area_turfs(/area/almayer/medical/containment) + turfs += get_area_turfs(/area/almayer/medical/containment/cell) + turfs += get_area_turfs(/area/almayer/medical/medical_science) + turfs += get_area_turfs(/area/almayer/medical/testlab) + turfs += get_area_turfs(/area/almayer/medical/hydroponics) if("Upper deck Aftship") - areas += list( - /area/almayer/engineering/upper_engineering, - /area/almayer/command/computerlab, - /area/almayer/engineering/laundry, - ) + turfs += get_area_turfs(/area/almayer/engineering/upper_engineering) + turfs += get_area_turfs(/area/almayer/engineering/laundry) if("Lower deck Foreship") - areas += list( - /area/almayer/hallways/hangar, - /area/almayer/hallways/vehiclehangar - ) + turfs += get_area_turfs(/area/almayer/hallways/hangar) + turfs += get_area_turfs(/area/almayer/hallways/vehiclehangar) if("Lower deck Midship") - areas += list( - /area/almayer/medical/chemistry, - /area/almayer/medical/lower_medical_lobby, - /area/almayer/medical/lockerroom, - /area/almayer/medical/lower_medical_medbay, - /area/almayer/medical/operating_room_one, - /area/almayer/medical/operating_room_two, - /area/almayer/medical/operating_room_three, - /area/almayer/medical/operating_room_four, - /area/almayer/living/briefing, - /area/almayer/squads/req, - - ) + turfs += get_area_turfs(/area/almayer/medical/chemistry) + turfs += get_area_turfs(/area/almayer/medical/lower_medical_lobby) + turfs += get_area_turfs(/area/almayer/medical/lockerroom) + turfs += get_area_turfs(/area/almayer/medical/lower_medical_medbay) + turfs += get_area_turfs(/area/almayer/medical/operating_room_one) + turfs += get_area_turfs(/area/almayer/medical/operating_room_two) + turfs += get_area_turfs(/area/almayer/medical/operating_room_three) + turfs += get_area_turfs(/area/almayer/medical/operating_room_four) + turfs += get_area_turfs(/area/almayer/living/briefing) + turfs += get_area_turfs(/area/almayer/squads/req) if("Lower deck Aftship") - areas += list( - /area/almayer/living/cryo_cells, - /area/almayer/engineering/engineering_workshop, - ) + turfs += get_area_turfs(/area/almayer/living/cryo_cells) + turfs += get_area_turfs(/area/almayer/engineering/lower/workshop) else CRASH("Crash site [ship_section] unknown.") - return pick(areas) + return pick(turfs) + +#undef HIJACK_CRASH_SITE_OFFSET_X +#undef HIJACK_CRASH_SITE_OFFSET_Y diff --git a/code/modules/shuttle/helpers.dm b/code/modules/shuttle/helpers.dm index 14cfcc3cd691..6b29f155582e 100644 --- a/code/modules/shuttle/helpers.dm +++ b/code/modules/shuttle/helpers.dm @@ -8,7 +8,8 @@ /datum/door_controller/aggregate/Destroy(force, ...) . = ..() - QDEL_NULL_LIST(door_controllers) + QDEL_LIST_ASSOC_VAL(door_controllers) + door_controllers = null /datum/door_controller/aggregate/proc/set_label(label) for(var/datum/door_controller/single/cont in door_controllers) @@ -116,21 +117,20 @@ var/list/door_turfs = list(get_turf(air)) if(istype(air, /obj/structure/machinery/door/airlock/multi_tile)) var/obj/structure/machinery/door/airlock/multi_tile/multi_door = air - door_turfs = multi_door.get_filler_turfs() + door_turfs = multi_door.locate_filler_turfs() for(var/turf/door_turf in door_turfs) bump_at_turf(door_turf) lockdown_door(air) /datum/door_controller/single/proc/bump_at_turf(turf/door_turf) - for(var/mob/blocking_mob in door_turf) - if(isliving(blocking_mob)) - to_chat(blocking_mob, SPAN_HIGHDANGER("You get thrown back as the [label] doors slam shut!")) - blocking_mob.apply_effect(4, WEAKEN) - for(var/turf/target_turf in orange(1, door_turf)) // Forcemove to a non shuttle turf - if(!istype(target_turf, /turf/open/shuttle) && !istype(target_turf, /turf/closed/shuttle)) - blocking_mob.forceMove(target_turf) - break + for(var/mob/living/blocking_mob in door_turf) + to_chat(blocking_mob, SPAN_HIGHDANGER("You get thrown back as the [label] doors slam shut!")) + blocking_mob.KnockDown(4) + for(var/turf/target_turf in orange(1, door_turf)) // Forcemove to a non shuttle turf + if(!istype(target_turf, /turf/open/shuttle) && !istype(target_turf, /turf/closed/shuttle)) + blocking_mob.forceMove(target_turf) + break /datum/door_controller/proc/lockdown_door(obj/structure/machinery/door/target) if(istype(target, /obj/structure/machinery/door/airlock)) diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 7bd3bcb5df7c..7a9f032be444 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -114,8 +114,8 @@ All ShuttleMove procs go here if (newT.z != oldT.z) onTransitZ(oldT.z, newT.z) - //if(light) // tg lighting - // update_light() + if(light) + update_light() if(rotation) shuttleRotate(rotation) @@ -132,8 +132,7 @@ All ShuttleMove procs go here var/turf/target = get_edge_target_turf(src, move_dir) var/range = throw_force * 10 range = CEILING(rand(range-(range*0.1), range+(range*0.1)), 10)/10 - var/speed = range/5 - safe_throw_at(target, range, speed) //, force = MOVE_FORCE_EXTREMELY_STRONG) + INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable, safe_throw_at), target, range, SPEED_AVERAGE) //=====================================================================// @@ -151,7 +150,7 @@ All ShuttleMove procs go here contents -= oldT underlying_old_area.contents += oldT - //oldT.change_area(src, underlying_old_area) //lighting + oldT.change_area(src, underlying_old_area) //lighting //The old turf has now been given back to the area that turf originaly belonged to var/area/old_dest_area = newT.loc @@ -159,7 +158,7 @@ All ShuttleMove procs go here old_dest_area.contents -= newT contents += newT - //newT.change_area(old_dest_area, src) //lighting + newT.change_area(old_dest_area, src) //lighting return TRUE // Called on areas after everything has been moved @@ -185,11 +184,6 @@ All ShuttleMove procs go here . = ..() if(. & MOVE_AREA) . |= MOVE_CONTENTS - cameranet.removeCamera(src) - -/obj/structure/machinery/camera/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) - . = ..() - cameranet.addCamera(src) /obj/structure/machinery/atmospherics/pipe/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) . = ..() diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 77ba9681ebb6..85fc38bf5f1b 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -268,9 +268,7 @@ if(!roundstart_template) CRASH("json_key:[json_key] value \[[sid]\] resulted in a null shuttle template for [src]") else if(roundstart_template) // passed a PATH - var/sid = "[initial(roundstart_template.shuttle_id)]" - - roundstart_template = SSmapping.shuttle_templates[sid] + roundstart_template = SSmapping.all_shuttle_templates[roundstart_template] if(!roundstart_template) CRASH("Invalid path ([roundstart_template]) passed to docking port.") @@ -345,6 +343,9 @@ var/rechargeTime = 0 //time spent after arrival before being able to launch again var/prearrivalTime = 0 //delay after call time finishes for sound effects, explosions, etc. + var/playing_launch_announcement_alarm = FALSE // FALSE = off ; TRUE = on + var/datum/looping_sound/looping_launch_announcement_alarm/alarm_sound_loop + var/landing_sound = 'sound/effects/engine_landing.ogg' var/ignition_sound = 'sound/effects/engine_startup.ogg' /// Default shuttle audio ambience while flying @@ -385,6 +386,7 @@ /obj/docking_port/mobile/Destroy(force) if(force) + QDEL_NULL(alarm_sound_loop) SSshuttle.mobile -= src destination = null previous = null @@ -412,6 +414,14 @@ initial_engines = count_engines() current_engines = initial_engines + //Launch Announcement Alarm variables setup + alarm_sound_loop = new(src) + alarm_sound_loop.mid_length = 20 + alarm_sound_loop.extra_range = 30 + alarm_sound_loop.volume = 100 + alarm_sound_loop.is_sound_projecting = TRUE + alarm_sound_loop.falloff_distance = 7 + #ifdef DOCKING_PORT_HIGHLIGHT highlight("#0f0") #endif @@ -433,7 +443,7 @@ // Called after the shuttle is loaded from template /obj/docking_port/mobile/proc/linkup(datum/map_template/shuttle/template, obj/docking_port/stationary/dock) var/list/static/shuttle_id = list() - var/idnum = ++shuttle_id[template] + var/idnum = ++shuttle_id[id] if(idnum > 1) if(id == initial(id)) id = "[id][idnum]" @@ -628,15 +638,15 @@ /obj/docking_port/mobile/proc/intoTheSunset() // Loop over mobs - for(var/t in return_turfs()) - var/turf/T = t - for(var/mob/living/L in T.GetAllContents()) + for(var/turf/turf as anything in return_turfs()) + for(var/mob/living/mob in turf.GetAllContents()) // Ghostize them and put them in nullspace stasis (for stat & possession checks) - //L.notransform = TRUE - var/mob/dead/observer/O = L.ghostize(FALSE) - if(O) - O.timeofdeath = world.time - L.moveToNullspace() + //mob.notransform = TRUE + var/mob/dead/observer/obs = mob.ghostize(FALSE) + if(obs) + obs.timeofdeath = world.time + obs.client?.player_details.larva_queue_time = max(obs.client.player_details.larva_queue_time, world.time) + mob.moveToNullspace() // Now that mobs are stowed, delete the shuttle jumpToNullSpace() diff --git a/code/modules/shuttle/shuttles.md b/code/modules/shuttle/shuttles.md index 373e18b44953..f800303414d2 100644 --- a/code/modules/shuttle/shuttles.md +++ b/code/modules/shuttle/shuttles.md @@ -16,3 +16,28 @@ Shuttle map templates are used to define what the shuttle should look like. When defining the shuttle dimensions, define the height/width as if it was orienting north. The subsystem will properly line everything up, this allows for stationary docks to be in different orientations to their defined map template. A shuttle has a height, width, dheight and dwidth. The height and width is the size of the shuttle, with respect to its direction. If the template direction is North/South then width is your X coordinate and height is your Y. If the template direction is East/West then width is your Y direction and height is your X. On stationary docking ports, you can specify dwidth and dheight (auto generated for mobile), these are offsets for how your shuttle should land on the site. When a mobile port lands on a stationary port it wants to place the bottom left of the shuttle turfs on the stationary port. The dwidth/dheight allows you to offset this. + + +# Generic Elevator Shuttle + +The elevator used on Trijent (DesertDam) can be used in any map and multiple can exist on one map. + +Do not modify the trident shuttle map. You can code in elevators from the following two docking ports (where the elevator can go): + +- /obj/docking_port/stationary/trijent_elevator/occupied +- /obj/docking_port/stationary/trijent_elevator/empty + +An occupied stationary port will start the map with an elevator and an empty one will not. +All docking ports are, by default, linked together. One elevator can go to all docking ports. +To limit access between docking ports you can use tags. + +To setup an elevator: +- place the docking port where you want the elevator to sit +- give the docking port instance a unique ID +- give the docking port instance a unique Name +- make sure the door direction is correct west/east +- give the docking port shuttle_area the area name for where it sits +- if you want to build a docking port 'network' then change the roudnstart_template to a subclass +- if you want to assign a docking port to a 'network' then give it a value in "tag" + +If things are unclear, look at trident. It has two elevator networks. diff --git a/code/modules/shuttle/shuttles/crashable/crashable.dm b/code/modules/shuttle/shuttles/crashable/crashable.dm new file mode 100644 index 000000000000..f07be5f0c93a --- /dev/null +++ b/code/modules/shuttle/shuttles/crashable/crashable.dm @@ -0,0 +1,179 @@ +/obj/docking_port/mobile/crashable + name = "crashable shuttle" + + /// Whether or not this shuttle is crash landing + var/crash_land = FALSE + /// Whether fires occur aboard the shuttle when crashing + var/fires_on_crash = FALSE + +/obj/docking_port/mobile/crashable/enterTransit() + . = ..() + + if(!crash_land) + return + + notify_ghosts(header = "Crashing shuttle!", message = "[name] has catastrophically failed and is crashing at [get_area(destination)].", source = src) + + for(var/area/shuttle_area as anything in shuttle_areas) + shuttle_area.flags_alarm_state |= ALARM_WARNING_FIRE + shuttle_area.updateicon() + for(var/mob/evac_mob in shuttle_area) + if(evac_mob.client) + playsound_client(evac_mob.client, 'sound/effects/bomb_fall.ogg', vol = 50) + + for(var/turf/found_turf as anything in destination.return_turfs()) + if(istype(found_turf, /turf/closed)) + found_turf.ChangeTurf(/turf/open/floor) + + for(var/mob/current_mob as anything in get_mobs_in_z_level_range(destination.return_center_turf(), 18)) + var/relative_dir = Get_Compass_Dir(current_mob, destination.return_center_turf()) + var/final_dir = dir2text(relative_dir) + to_chat(current_mob, SPAN_HIGHDANGER("You hear something crashing down from above [final_dir ? "to the [final_dir]" : "nearby"]!")) + + if(fires_on_crash) + handle_fires() + + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cell_explosion), destination.return_center_turf(), length(destination.return_turfs()) * 2, 25, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, create_cause_data("crashing shuttle")), 1.5 SECONDS) + +/obj/docking_port/mobile/crashable/on_prearrival() + . = ..() + + if(!crash_land) + return + + movement_force = list("KNOCKDOWN" = 0, "THROW" = 5) + + for(var/area/shuttle_area in shuttle_areas) + for(var/mob/evac_mob in shuttle_area) + shake_camera(evac_mob, 20, 2) + if(evac_mob.client) + playsound_client(evac_mob.client, get_sfx("bigboom"), vol = 50) + +/// Called when the shuttle is launched and checks for crash and creates a crash point +/obj/docking_port/mobile/crashable/proc/evac_launch() + if(!crash_check()) + return + + create_crash_point() + +/// Returns whether or not the shuttle will crash after being sent +/obj/docking_port/mobile/crashable/proc/crash_check() + return FALSE + +/// Sets up a valid crash point, fails after 10 tries +/obj/docking_port/mobile/crashable/proc/create_crash_point() + for(var/i = 1 to 10) + var/list/all_ground_levels = SSmapping.levels_by_trait(ZTRAIT_GROUND) + var/ground_z_level = all_ground_levels[1] + + var/list/area/potential_areas = SSmapping.areas_in_z["[ground_z_level]"] + + var/area/area_picked = pick(potential_areas) + + var/list/potential_turfs = list() + + for(var/turf/turf_in_area in area_picked) + potential_turfs += turf_in_area + + if(!length(potential_turfs)) + continue + + var/turf/turf_picked = pick(potential_turfs) + + var/obj/docking_port/stationary/crashable/temp_crashable_port = new(turf_picked) + temp_crashable_port.width = width + temp_crashable_port.height = height + temp_crashable_port.id = id + + if(!check_crash_point(temp_crashable_port)) + qdel(temp_crashable_port) + continue + + destination = temp_crashable_port + break + + if(destination) + crash_land = TRUE + +/// Checks for anything that may get in the way of a crash, returns FALSE if there is something in the way or is out of bounds +/obj/docking_port/mobile/crashable/proc/check_crash_point(obj/docking_port/stationary/crashable/checked_crashable_port) + for(var/turf/found_turf as anything in checked_crashable_port.return_turfs()) + var/area/found_area = get_area(found_turf) + if(found_area.flags_area & AREA_NOTUNNEL) + return FALSE + + if(!found_area.can_build_special) + return FALSE + + if(istype(found_turf, /turf/closed/wall)) + var/turf/closed/wall/found_closed_turf = found_turf + if(found_closed_turf.hull) + return FALSE + + if(istype(found_turf, /turf/closed/shuttle)) + return FALSE + + for(var/obj/docking_port/stationary/stationary_dock in get_turf(checked_crashable_port)) + if(stationary_dock != checked_crashable_port) + return FALSE + + for(var/obj/docking_port/mobile/cycled_mobile_port as anything in SSshuttle.mobile) + if(cycled_mobile_port == src) + continue + + if(!cycled_mobile_port.destination) + continue + + if(length(checked_crashable_port.return_turfs() & cycled_mobile_port.destination.return_turfs())) + return FALSE + + return TRUE + +/// Forces the shuttle to crash, admin called +/obj/docking_port/mobile/crashable/proc/force_crash() + create_crash_point() + set_mode(SHUTTLE_IGNITING) + on_ignition() + setTimer(ignitionTime) + +/// Sets up and handles fires/explosions on crashing shuttles +/obj/docking_port/mobile/crashable/proc/handle_fires() + var/list/turf/total_turfs = list() + for(var/area/shuttle_area as anything in shuttle_areas) + for(var/turf/cycled_turf in shuttle_area) + total_turfs += cycled_turf + + for(var/i = 1 to (length(total_turfs) / 40)) + var/turf/position = pick(total_turfs) + new /obj/effect/warning/explosive(position, 3 SECONDS) + playsound(position, 'sound/effects/pipe_hissing.ogg', vol = 40) + addtimer(CALLBACK(src, PROC_REF(kablooie), position), 3 SECONDS) + +/// Actually blows up the fire/explosion on crashing shuttles, used for effect delay +/obj/docking_port/mobile/crashable/proc/kablooie(turf/position) + var/new_cause_data = create_cause_data("crashing shuttle fire") + var/list/exploding_types = list(/obj/item/explosive/grenade/high_explosive/bursting_pipe, /obj/item/explosive/grenade/incendiary/bursting_pipe) + for(var/path in exploding_types) + var/obj/item/explosive/grenade/exploder = new path(position) + exploder.cause_data = new_cause_data + exploder.prime() + +/// Handles opening the doors for the specific shuttle type upon arriving at the crash point +/obj/docking_port/mobile/crashable/proc/open_doors() + return + +/obj/docking_port/stationary/crashable + name = "Crashable Dock" + +/obj/docking_port/stationary/crashable/on_arrival(obj/docking_port/mobile/arriving_shuttle) + . = ..() + + if(istype(arriving_shuttle, /obj/docking_port/mobile/crashable)) + var/obj/docking_port/mobile/crashable/crashing_shuttle = arriving_shuttle + crashing_shuttle.open_doors() + + for(var/area/shuttle_area in arriving_shuttle.shuttle_areas) + shuttle_area.remove_base_lighting() + + shuttle_area.flags_alarm_state &= ~ALARM_WARNING_FIRE + shuttle_area.updateicon() diff --git a/code/modules/shuttle/shuttles/crashable/escape_shuttle.dm b/code/modules/shuttle/shuttles/crashable/escape_shuttle.dm new file mode 100644 index 000000000000..c2c6b818b37b --- /dev/null +++ b/code/modules/shuttle/shuttles/crashable/escape_shuttle.dm @@ -0,0 +1,198 @@ +/obj/docking_port/mobile/crashable/escape_shuttle + name = "Escape Pod" + id = ESCAPE_SHUTTLE + area_type = /area/shuttle/escape_pod + width = 4 + height = 5 + preferred_direction = SOUTH + rechargeTime = SHUTTLE_RECHARGE + ignitionTime = 8 SECONDS + ignition_sound = 'sound/effects/escape_pod_warmup.ogg' + /// The % chance of the escape pod crashing into the groundmap before lifeboats leaving + var/early_crash_land_chance = 75 + /// The % chance of the escape pod crashing into the groundmap + var/crash_land_chance = 0 + /// How many people can be in the escape pod before it crashes + var/max_capacity = 3 + + var/datum/door_controller/single/door_handler = new() + var/launched = FALSE + var/evac_set = FALSE + +/obj/docking_port/mobile/crashable/escape_shuttle/Initialize(mapload) + . = ..(mapload) + for(var/place in shuttle_areas) + for(var/obj/structure/machinery/door/airlock/evacuation/air in place) + door_handler.doors += list(air) + air.breakable = FALSE + air.indestructible = TRUE + air.unacidable = TRUE + air.linked_shuttle = src + +/obj/docking_port/mobile/crashable/escape_shuttle/proc/cancel_evac() + door_handler.control_doors("force-unlock") + evac_set = FALSE + + var/obj/structure/machinery/computer/shuttle/escape_pod_panel/panel = getControlConsole() + if(panel.pod_state != STATE_READY && panel.pod_state != STATE_DELAYED) + return + panel.pod_state = STATE_IDLE + for(var/area/interior_area in shuttle_areas) + for(var/obj/structure/machinery/cryopod/evacuation/cryotube in interior_area) + cryotube.dock_state = STATE_IDLE + +/obj/docking_port/mobile/crashable/escape_shuttle/proc/prepare_evac() + door_handler.control_doors("force-unlock") + evac_set = TRUE + for(var/area/interior_area in shuttle_areas) + for(var/obj/structure/machinery/cryopod/evacuation/cryotube in interior_area) + cryotube.dock_state = STATE_READY + for(var/obj/structure/machinery/door/air in door_handler.doors) + air.breakable = TRUE + air.indestructible = FALSE + air.unslashable = FALSE + air.unacidable = FALSE + +/obj/docking_port/mobile/crashable/escape_shuttle/evac_launch() + . = ..() + + if(mode == SHUTTLE_CRASHED) + return + + if(launched) + return + + var/obj/structure/machinery/computer/shuttle/escape_pod_panel/panel = getControlConsole() + if(panel.pod_state == STATE_DELAYED) + return + + door_handler.control_doors("force-lock-launch") + var/occupant_count = 0 + var/list/cryos = list() + for(var/area/interior_area in shuttle_areas) + for(var/mob/living/occupant in interior_area) + occupant_count++ + for(var/obj/structure/machinery/cryopod/evacuation/cryotube in interior_area) + if(cryotube.occupant) + occupant_count++ + cryos += list(cryotube) + if (occupant_count > max_capacity) + playsound(src,'sound/effects/escape_pod_warmup.ogg', 50, 1) + sleep(31) + var/turf/sploded = return_center_turf() + cell_explosion(sploded, 100, 20, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, create_cause_data("escape pod malfunction")) //Clears out walls + sleep(25) + mode = SHUTTLE_CRASHED + for(var/obj/structure/machinery/cryopod/evacuation/cryotube in cryos) + cryotube.go_out() + door_handler.control_doors("force-unlock") + return + + set_mode(SHUTTLE_IGNITING) + on_ignition() + setTimer(ignitionTime) + launched = TRUE + + if(!crash_land) // so doors won't break in space + for(var/obj/structure/machinery/door/air in door_handler.doors) + for(var/obj/effect/xenomorph/acid/acid in air.loc) + if(acid.acid_t == air) + qdel(acid) + air.breakable = FALSE + air.indestructible = TRUE + air.unacidable = TRUE + +/obj/docking_port/mobile/crashable/escape_shuttle/crash_check() + . = ..() + + if(prob((SShijack.hijack_status >= HIJACK_OBJECTIVES_COMPLETE ? crash_land_chance : early_crash_land_chance))) + return TRUE + +/obj/docking_port/mobile/crashable/escape_shuttle/open_doors() + . = ..() + + door_handler.control_doors("force-unlock") + +/obj/docking_port/mobile/crashable/escape_shuttle/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) + . = ..() + playsound(src,'sound/effects/escape_pod_launch.ogg', 50, 1) + +/obj/docking_port/mobile/crashable/escape_shuttle/e + id = ESCAPE_SHUTTLE_EAST + width = 4 + height = 5 + +/obj/docking_port/mobile/crashable/escape_shuttle/cl + id = ESCAPE_SHUTTLE_EAST_CL + width = 4 + height = 5 + early_crash_land_chance = 0 + crash_land_chance = 0 + +/obj/docking_port/mobile/crashable/escape_shuttle/w + id = ESCAPE_SHUTTLE_WEST + width = 4 + height = 5 + +/obj/docking_port/mobile/crashable/escape_shuttle/n + id = ESCAPE_SHUTTLE_NORTH + width = 5 + height = 4 + +/obj/docking_port/mobile/crashable/escape_shuttle/s + id = ESCAPE_SHUTTLE_SOUTH + width = 5 + height = 4 + +/obj/docking_port/stationary/escape_pod + name = "Escape Pod Dock" + +/obj/docking_port/stationary/escape_pod/west + id = ESCAPE_SHUTTLE_WEST_PREFIX + roundstart_template = /datum/map_template/shuttle/escape_pod_w + width = 4 + height = 5 + +/obj/docking_port/stationary/escape_pod/east + id = ESCAPE_SHUTTLE_EAST_PREFIX + roundstart_template = /datum/map_template/shuttle/escape_pod_e + width = 4 + height = 5 + +/obj/docking_port/stationary/escape_pod/north + id = ESCAPE_SHUTTLE_NORTH_PREFIX + roundstart_template = /datum/map_template/shuttle/escape_pod_n + width = 5 + height = 4 + +/obj/docking_port/stationary/escape_pod/south + id = ESCAPE_SHUTTLE_SOUTH_PREFIX + roundstart_template = /datum/map_template/shuttle/escape_pod_s + width = 5 + height = 4 + +/obj/docking_port/stationary/escape_pod/cl + id = ESCAPE_SHUTTLE_SOUTH_PREFIX + roundstart_template = /datum/map_template/shuttle/escape_pod_e_cl + width = 4 + height = 5 + +/datum/map_template/shuttle/escape_pod_w + name = "Escape Pod W" + shuttle_id = ESCAPE_SHUTTLE_WEST + +/datum/map_template/shuttle/escape_pod_e + name = "Escape Pod E" + shuttle_id = ESCAPE_SHUTTLE_EAST + +/datum/map_template/shuttle/escape_pod_n + name = "Escape Pod N" + shuttle_id = ESCAPE_SHUTTLE_NORTH + +/datum/map_template/shuttle/escape_pod_s + name = "Escape Pod S" + shuttle_id = ESCAPE_SHUTTLE_SOUTH + +/datum/map_template/shuttle/escape_pod_e_cl + name = "Escape Pod E CL" + shuttle_id = ESCAPE_SHUTTLE_EAST_CL diff --git a/code/modules/shuttle/lifeboats.dm b/code/modules/shuttle/shuttles/crashable/lifeboats.dm similarity index 80% rename from code/modules/shuttle/lifeboats.dm rename to code/modules/shuttle/shuttles/crashable/lifeboats.dm index 36696441a961..415a628be6e5 100644 --- a/code/modules/shuttle/lifeboats.dm +++ b/code/modules/shuttle/shuttles/crashable/lifeboats.dm @@ -1,7 +1,7 @@ // === MOBILES /// Generic Lifeboat definition -/obj/docking_port/mobile/lifeboat +/obj/docking_port/mobile/crashable/lifeboat name = "lifeboat" area_type = /area/shuttle/lifeboat ignitionTime = 10 SECONDS @@ -12,7 +12,9 @@ var/list/doors = list() var/survivors = 0 -/obj/docking_port/mobile/lifeboat/proc/check_for_survivors() + fires_on_crash = TRUE + +/obj/docking_port/mobile/crashable/lifeboat/proc/check_for_survivors() for(var/mob/living/carbon/human/survived_human as anything in GLOB.alive_human_list) //check for lifeboats survivors var/area/area = get_area(survived_human) if(!survived_human) @@ -25,25 +27,43 @@ to_chat(survived_human, "

        [SPAN_CENTERBOLD("You have successfully left the [MAIN_SHIP_NAME]. You may now ghost and observe the rest of the round.")]
        ") /// Port Aft Lifeboat (bottom-right, doors on its left side) -/obj/docking_port/mobile/lifeboat/port +/obj/docking_port/mobile/crashable/lifeboat/port name = "port-aft lifeboat" id = MOBILE_SHUTTLE_LIFEBOAT_PORT preferred_direction = WEST port_direction = WEST /// Starboard Aft Lifeboat (top-right, doors its right side) -/obj/docking_port/mobile/lifeboat/starboard +/obj/docking_port/mobile/crashable/lifeboat/starboard name = "starboard-aft lifeboat" id = MOBILE_SHUTTLE_LIFEBOAT_STARBOARD preferred_direction = EAST port_direction = EAST -/obj/docking_port/mobile/lifeboat/proc/send_to_infinite_transit() +/obj/docking_port/mobile/crashable/lifeboat/evac_launch() + . = ..() + available = FALSE - destination = null set_mode(SHUTTLE_IGNITING) on_ignition() setTimer(ignitionTime) + alarm_sound_loop.stop() + playing_launch_announcement_alarm = FALSE + +/obj/docking_port/mobile/crashable/lifeboat/crash_check() + . = ..() + + if(SShijack.hijack_status >= HIJACK_OBJECTIVES_COMPLETE) + return FALSE + + if(prob(abs((SShijack.current_progress - SShijack.required_progress) / SShijack.required_progress) * 100)) + return TRUE + +/obj/docking_port/mobile/crashable/lifeboat/open_doors() + . = ..() + + for(var/obj/structure/machinery/door/airlock/multi_tile/door in doors) + INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat, unlock_and_open)) // === STATIONARIES @@ -54,7 +74,7 @@ height = 7 /obj/docking_port/stationary/lifeboat_dock/on_dock_ignition(departing_shuttle) - var/obj/docking_port/mobile/lifeboat/lifeboat = departing_shuttle + var/obj/docking_port/mobile/crashable/lifeboat/lifeboat = departing_shuttle if(istype(lifeboat)) for(var/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/door in lifeboat.doors) INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat, close_and_lock)) @@ -71,7 +91,7 @@ blastdoor.vacate_premises() /obj/docking_port/stationary/lifeboat_dock/proc/open_dock() - var/obj/docking_port/mobile/lifeboat/docked_shuttle = get_docked() + var/obj/docking_port/mobile/crashable/lifeboat/docked_shuttle = get_docked() if(docked_shuttle) for(var/obj/structure/machinery/door/airlock/multi_tile/door in docked_shuttle.doors) INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat, unlock_and_open)) @@ -81,7 +101,9 @@ addtimer(CALLBACK(blastdoor, TYPE_PROC_REF(/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat, unlock_and_open)), 10) /obj/docking_port/stationary/lifeboat_dock/proc/close_dock() - var/obj/docking_port/mobile/lifeboat/docked_shuttle = get_docked() + var/obj/docking_port/mobile/crashable/lifeboat/docked_shuttle = get_docked() + if(docked_shuttle.status == LIFEBOAT_LOCKED) + return if(docked_shuttle) for(var/obj/structure/machinery/door/airlock/multi_tile/door in docked_shuttle.doors) INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat, close_and_lock)) @@ -125,5 +147,3 @@ /datum/map_template/shuttle/lifeboat_starboard name = "Starboard door lifeboat" shuttle_id = MOBILE_SHUTTLE_LIFEBOAT_STARBOARD - - diff --git a/code/modules/shuttle/shuttles/dropship.dm b/code/modules/shuttle/shuttles/dropship.dm index 12f33d779661..f741df301bbb 100644 --- a/code/modules/shuttle/shuttles/dropship.dm +++ b/code/modules/shuttle/shuttles/dropship.dm @@ -1,6 +1,10 @@ /obj/docking_port/mobile/marine_dropship width = 11 height = 21 + + dwidth = 5 + dheight = 10 + preferred_direction = SOUTH callTime = DROPSHIP_TRANSIT_DURATION rechargeTime = SHUTTLE_RECHARGE @@ -26,6 +30,7 @@ var/automated_delay var/automated_timer + /obj/docking_port/mobile/marine_dropship/Initialize(mapload) . = ..() door_control = new() @@ -39,15 +44,28 @@ if("aft_door") door_control.add_door(air, "aft") + RegisterSignal(src, COMSIG_DROPSHIP_ADD_EQUIPMENT, PROC_REF(add_equipment)) + RegisterSignal(src, COMSIG_DROPSHIP_REMOVE_EQUIPMENT, PROC_REF(remove_equipment)) + /obj/docking_port/mobile/marine_dropship/Destroy(force) . = ..() qdel(door_control) + UnregisterSignal(src, COMSIG_DROPSHIP_ADD_EQUIPMENT) + UnregisterSignal(src, COMSIG_DROPSHIP_REMOVE_EQUIPMENT) /obj/docking_port/mobile/marine_dropship/proc/send_for_flyby() in_flyby = TRUE var/obj/docking_port/stationary/dockedAt = get_docked() SSshuttle.moveShuttle(src.id, dockedAt.id, TRUE) +/obj/docking_port/mobile/marine_dropship/proc/add_equipment(obj/docking_port/mobile/marine_dropship/dropship, obj/structure/dropship_equipment/equipment) + SIGNAL_HANDLER + equipments += equipment + +/obj/docking_port/mobile/marine_dropship/proc/remove_equipment(obj/docking_port/mobile/marine_dropship/dropship, obj/structure/dropship_equipment/equipment) + SIGNAL_HANDLER + equipments -= equipment + /obj/docking_port/mobile/marine_dropship/proc/get_door_data() return door_control.get_data() @@ -96,17 +114,19 @@ var/name = "Unidentified Lifesigns" var/input = "Unidentified lifesigns detected onboard. Recommendation: lockdown of exterior access ports, including ducting and ventilation." - shipwide_ai_announcement(input, name, 'sound/AI/unidentified_lifesigns.ogg') + shipwide_ai_announcement(input, name, 'sound/AI/unidentified_lifesigns.ogg', ares_logging = ARES_LOG_SECURITY) set_security_level(SEC_LEVEL_RED) return /obj/docking_port/mobile/marine_dropship/alamo name = "Alamo" id = DROPSHIP_ALAMO + preferred_direction = SOUTH /obj/docking_port/mobile/marine_dropship/normandy name = "Normandy" id = DROPSHIP_NORMANDY + preferred_direction = SOUTH /obj/docking_port/mobile/marine_dropship/check() . = ..() @@ -157,7 +177,9 @@ dir = NORTH width = 11 height = 21 - dwidth = 1 + dwidth = 5 + dheight = 10 + var/list/landing_lights = list() var/auto_open = FALSE var/landing_lights_on = FALSE @@ -228,8 +250,8 @@ /obj/docking_port/stationary/marine_dropship/on_departure(obj/docking_port/mobile/departing_shuttle) . = ..() turn_off_landing_lights() - var/obj/docking_port/mobile/marine_dropship/shuttle = departing_shuttle - for(var/obj/structure/dropship_equipment/eq as anything in shuttle.equipments) + var/obj/docking_port/mobile/marine_dropship/dropship = departing_shuttle + for(var/obj/structure/dropship_equipment/eq as anything in dropship.equipments) eq.on_launch() /obj/docking_port/stationary/marine_dropship/lz1 @@ -256,7 +278,6 @@ /obj/docking_port/stationary/marine_dropship/crash_site auto_open = TRUE - dwidth = 1 /obj/docking_port/stationary/marine_dropship/crash_site/on_prearrival(obj/docking_port/mobile/arriving_shuttle) . = ..() @@ -278,6 +299,9 @@ // shake_camera(affected_mob, 10, 1) affected_mob.apply_effect(3, WEAKEN) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_HIJACK_LANDED) + /datum/map_template/shuttle/alamo name = "Alamo" shuttle_id = DROPSHIP_ALAMO diff --git a/code/modules/shuttle/shuttles/ert.dm b/code/modules/shuttle/shuttles/ert.dm index 2868dc4a237b..b619645c501c 100644 --- a/code/modules/shuttle/shuttles/ert.dm +++ b/code/modules/shuttle/shuttles/ert.dm @@ -61,14 +61,13 @@ INVOKE_ASYNC(src, PROC_REF(lockdown_door_launch), door) /obj/docking_port/mobile/emergency_response/proc/lockdown_door_launch(obj/structure/machinery/door/airlock/air) - for(var/mob/blocking_mob in air.loc) // Bump all mobs outta the way for outside airlocks of shuttles - if(isliving(blocking_mob)) - to_chat(blocking_mob, SPAN_HIGHDANGER("You get thrown back as the dropship doors slam shut!")) - blocking_mob.apply_effect(4, WEAKEN) - for(var/turf/target_turf in orange(1, air)) // Forcemove to a non shuttle turf - if(!istype(target_turf, /turf/open/shuttle) && !istype(target_turf, /turf/closed/shuttle)) - blocking_mob.forceMove(target_turf) - break + for(var/mob/living/blocking_mob in air.loc) // Bump all mobs outta the way for outside airlocks of shuttles + to_chat(blocking_mob, SPAN_HIGHDANGER("You get thrown back as the dropship doors slam shut!")) + blocking_mob.KnockDown(4) + for(var/turf/target_turf in orange(1, air)) // Forcemove to a non shuttle turf + if(!istype(target_turf, /turf/open/shuttle) && !istype(target_turf, /turf/closed/shuttle)) + blocking_mob.forceMove(target_turf) + break lockdown_door(air) /obj/docking_port/mobile/emergency_response/proc/lockdown_door(obj/structure/machinery/door/airlock/air) @@ -105,6 +104,13 @@ port_direction = NORTH // ERT Shuttle 4 + +/obj/docking_port/mobile/emergency_response/ert4 + name = "TWE Shuttle" + id = MOBILE_SHUTTLE_ID_ERT4 + preferred_direction = SOUTH + port_direction = NORTH + /obj/docking_port/mobile/emergency_response/small name = "Rescue Shuttle" id = MOBILE_SHUTTLE_ID_ERT_SMALL @@ -115,6 +121,7 @@ var/port_door var/starboard_door + /obj/docking_port/mobile/emergency_response/small/Initialize(mapload) . = ..() external_doors = list() @@ -293,6 +300,14 @@ height = 29 roundstart_template = /datum/map_template/shuttle/big_ert +/obj/docking_port/stationary/emergency_response/idle_port6 + name = "Response Station Landing Pad 6" + dir = NORTH + id = ADMIN_LANDING_PAD_5 + width = 17 + height = 29 + roundstart_template = /datum/map_template/shuttle/twe_ert + /datum/map_template/shuttle/response_ert name = "Response Shuttle" shuttle_id = "ert_response_shuttle" @@ -305,6 +320,10 @@ name = "UPP Shuttle" shuttle_id = "ert_upp_shuttle" +/datum/map_template/shuttle/twe_ert + name = "TWE Shuttle" + shuttle_id = "ert_twe_shuttle" + /datum/map_template/shuttle/small_ert name = "Rescue Shuttle" shuttle_id = "ert_small_shuttle_north" diff --git a/code/modules/shuttle/shuttles/escape_shuttle.dm b/code/modules/shuttle/shuttles/escape_shuttle.dm deleted file mode 100644 index a4bce9910bb7..000000000000 --- a/code/modules/shuttle/shuttles/escape_shuttle.dm +++ /dev/null @@ -1,275 +0,0 @@ -#define CRASH_LAND_PROBABILITY 50 - -/obj/docking_port/mobile/escape_shuttle - name = "Escape Pod" - id = ESCAPE_SHUTTLE - area_type = /area/shuttle/escape_pod - width = 4 - height = 5 - preferred_direction = SOUTH - rechargeTime = SHUTTLE_RECHARGE - ignitionTime = 8 SECONDS - ignition_sound = 'sound/effects/escape_pod_warmup.ogg' - - var/datum/door_controller/single/door_handler = new() - var/launched = FALSE - var/crash_land = FALSE - var/evac_set = FALSE - -/obj/docking_port/mobile/escape_shuttle/Initialize(mapload) - . = ..(mapload) - for(var/place in shuttle_areas) - for(var/obj/structure/machinery/door/air in place) - door_handler.doors += list(air) - air.breakable = FALSE - air.indestructible = TRUE - air.unacidable = TRUE - -/obj/docking_port/mobile/escape_shuttle/proc/cancel_evac() - door_handler.control_doors("force-unlock") - evac_set = FALSE - - var/obj/structure/machinery/computer/shuttle/escape_pod_panel/panel = getControlConsole() - if(panel.pod_state != STATE_READY && panel.pod_state != STATE_DELAYED) - return - panel.pod_state = STATE_IDLE - for(var/area/interior_area in shuttle_areas) - for(var/obj/structure/machinery/cryopod/evacuation/cryotube in interior_area) - cryotube.dock_state = STATE_IDLE - -/obj/docking_port/mobile/escape_shuttle/proc/prepare_evac() - door_handler.control_doors("force-unlock") - evac_set = TRUE - for(var/area/interior_area in shuttle_areas) - for(var/obj/structure/machinery/cryopod/evacuation/cryotube in interior_area) - cryotube.dock_state = STATE_READY - -/obj/docking_port/mobile/escape_shuttle/proc/evac_launch() - if(mode == SHUTTLE_CRASHED) - return - - if(launched) - return - - var/obj/structure/machinery/computer/shuttle/escape_pod_panel/panel = getControlConsole() - if(panel.pod_state == STATE_DELAYED) - return - - door_handler.control_doors("force-lock-launch") - var/occupant_count = 0 - var/list/cryos = list() - for(var/area/interior_area in shuttle_areas) - for(var/mob/living/occupant in interior_area) - occupant_count++ - for(var/obj/structure/machinery/cryopod/evacuation/cryotube in interior_area) - cryos += list(cryotube) - if (occupant_count > 3) - playsound(src,'sound/effects/escape_pod_warmup.ogg', 50, 1) - sleep(31) - var/turf/sploded = return_center_turf() - cell_explosion(sploded, 100, 20, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, create_cause_data("escape pod malfunction")) //Clears out walls - sleep(25) - mode = SHUTTLE_CRASHED - for(var/obj/structure/machinery/cryopod/evacuation/cryotube in cryos) - cryotube.go_out() - door_handler.control_doors("force-unlock") - return - - destination = null - if(prob(CRASH_LAND_PROBABILITY)) - create_crash_point() - - set_mode(SHUTTLE_IGNITING) - on_ignition() - setTimer(ignitionTime) - launched = TRUE - -/obj/docking_port/mobile/escape_shuttle/proc/create_crash_point() - for(var/i = 1 to 10) - var/list/all_ground_levels = SSmapping.levels_by_trait(ZTRAIT_GROUND) - var/ground_z_level = all_ground_levels[1] - - var/list/area/potential_areas = SSmapping.areas_in_z["[ground_z_level]"] - - var/area/area_picked = pick(potential_areas) - - var/list/potential_turfs = list() - - for(var/turf/turf_in_area in area_picked) - potential_turfs += turf_in_area - - if(!length(potential_turfs)) - continue - - var/turf/turf_picked = pick(potential_turfs) - - var/obj/docking_port/stationary/escape_pod/crash_land/temp_escape_pod_port = new(turf_picked) - temp_escape_pod_port.width = width - temp_escape_pod_port.height = height - temp_escape_pod_port.id = id - - if(!check_crash_point(temp_escape_pod_port)) - qdel(temp_escape_pod_port) - continue - - destination = temp_escape_pod_port - break - - if(destination) - crash_land = TRUE - -/obj/docking_port/mobile/escape_shuttle/proc/check_crash_point(obj/docking_port/stationary/escape_pod/crash_land/checked_escape_pod_port) - for(var/turf/found_turf as anything in checked_escape_pod_port.return_turfs()) - var/area/found_area = get_area(found_turf) - if(found_area.flags_area & AREA_NOTUNNEL) - return FALSE - - if(!found_area.can_build_special) - return FALSE - - if(istype(found_turf, /turf/closed/wall)) - var/turf/closed/wall/found_closed_turf = found_turf - if(found_closed_turf.hull) - return FALSE - - if(istype(found_turf, /turf/closed/shuttle)) - return FALSE - - return TRUE - -/obj/docking_port/mobile/escape_shuttle/enterTransit() - . = ..() - - if(!crash_land) - return - - for(var/area/shuttle_area in shuttle_areas) - shuttle_area.flags_alarm_state |= ALARM_WARNING_FIRE - shuttle_area.updateicon() - for(var/mob/evac_mob in shuttle_area) - if(evac_mob.client) - playsound_client(evac_mob.client, 'sound/effects/bomb_fall.ogg', vol = 50) - - for(var/turf/found_turf as anything in destination.return_turfs()) - if(istype(found_turf, /turf/closed)) - found_turf.ChangeTurf(/turf/open/floor) - - cell_explosion(destination.return_center_turf(), 300, 25, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, create_cause_data("evac pod crash")) - -/obj/docking_port/mobile/escape_shuttle/on_prearrival() - . = ..() - - if(!crash_land) - return - - movement_force = list("KNOCKDOWN" = 0, "THROW" = 5) - - for(var/area/shuttle_area in shuttle_areas) - for(var/mob/evac_mob in shuttle_area) - shake_camera(evac_mob, 20, 2) - if(evac_mob.client) - playsound_client(evac_mob.client, get_sfx("bigboom"), vol = 50) - - door_handler.control_doors("force-unlock") - -/obj/docking_port/mobile/escape_shuttle/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) - . = ..() - playsound(src,'sound/effects/escape_pod_launch.ogg', 50, 1) - -/obj/docking_port/mobile/escape_shuttle/e - id = ESCAPE_SHUTTLE_EAST - width = 4 - height = 5 - -/obj/docking_port/mobile/escape_shuttle/cl - id = ESCAPE_SHUTTLE_EAST_CL - width = 4 - height = 5 - -/obj/docking_port/mobile/escape_shuttle/w - id = ESCAPE_SHUTTLE_WEST - width = 4 - height = 5 - -/obj/docking_port/mobile/escape_shuttle/n - id = ESCAPE_SHUTTLE_NORTH - width = 5 - height = 4 - -/obj/docking_port/mobile/escape_shuttle/s - id = ESCAPE_SHUTTLE_SOUTH - width = 5 - height = 4 - -/obj/docking_port/stationary/escape_pod - name = "Escape Pod Dock" - -/obj/docking_port/stationary/escape_pod/west - id = ESCAPE_SHUTTLE_WEST_PREFIX - roundstart_template = /datum/map_template/shuttle/escape_pod_w - width = 4 - height = 5 - -/obj/docking_port/stationary/escape_pod/east - id = ESCAPE_SHUTTLE_EAST_PREFIX - roundstart_template = /datum/map_template/shuttle/escape_pod_e - width = 4 - height = 5 - -/obj/docking_port/stationary/escape_pod/north - id = ESCAPE_SHUTTLE_NORTH_PREFIX - roundstart_template = /datum/map_template/shuttle/escape_pod_n - width = 5 - height = 4 - -/obj/docking_port/stationary/escape_pod/south - id = ESCAPE_SHUTTLE_SOUTH_PREFIX - roundstart_template = /datum/map_template/shuttle/escape_pod_s - width = 5 - height = 4 - -/obj/docking_port/stationary/escape_pod/cl - id = ESCAPE_SHUTTLE_SOUTH_PREFIX - roundstart_template = /datum/map_template/shuttle/escape_pod_e_cl - width = 4 - height = 5 - -/obj/docking_port/stationary/escape_pod/crash_land - name = "Crash Escape Pod Dock" - -/obj/docking_port/stationary/escape_pod/crash_land/on_arrival(obj/docking_port/mobile/arriving_shuttle) - . = ..() - - if(istype(arriving_shuttle, /obj/docking_port/mobile/escape_shuttle)) - var/obj/docking_port/mobile/escape_shuttle/escape_shuttle = arriving_shuttle - escape_shuttle.door_handler.control_doors("force-unlock") - - for(var/area/shuttle_area in arriving_shuttle.shuttle_areas) - shuttle_area.SetDynamicLighting() - shuttle_area.SetLightLevel(0) - - shuttle_area.flags_alarm_state &= ~ALARM_WARNING_FIRE - shuttle_area.updateicon() - -/datum/map_template/shuttle/escape_pod_w - name = "Escape Pod W" - shuttle_id = ESCAPE_SHUTTLE_WEST - -/datum/map_template/shuttle/escape_pod_e - name = "Escape Pod E" - shuttle_id = ESCAPE_SHUTTLE_EAST - -/datum/map_template/shuttle/escape_pod_n - name = "Escape Pod N" - shuttle_id = ESCAPE_SHUTTLE_NORTH - -/datum/map_template/shuttle/escape_pod_s - name = "Escape Pod S" - shuttle_id = ESCAPE_SHUTTLE_SOUTH - -/datum/map_template/shuttle/escape_pod_e_cl - name = "Escape Pod E CL" - shuttle_id = ESCAPE_SHUTTLE_EAST_CL - - -#undef CRASH_LAND_PROBABILITY diff --git a/code/modules/shuttle/shuttles/trijent_elevator.dm b/code/modules/shuttle/shuttles/trijent_elevator.dm index 86ad6f7ef217..457c150212c0 100644 --- a/code/modules/shuttle/shuttles/trijent_elevator.dm +++ b/code/modules/shuttle/shuttles/trijent_elevator.dm @@ -19,6 +19,7 @@ movement_force = list("KNOCKDOWN" = 0, "THROW" = 0) var/datum/door_controller/aggregate/door_control + var/elevator_network /obj/docking_port/mobile/trijent_elevator/Initialize(mapload, ...) . = ..() @@ -36,6 +37,12 @@ . = ..() door_control.control_doors("force-lock-launch", "all", force=TRUE) +/obj/docking_port/mobile/trijent_elevator/linkup(datum/map_template/shuttle/template, obj/docking_port/stationary/dock) + ..() + var/datum/map_template/shuttle/trijent_elevator/elev = template + elevator_network = elev.elevator_network + log_debug("Adding network [elev.elevator_network] to [id]") + /obj/docking_port/stationary/trijent_elevator dir=NORTH width=7 @@ -43,6 +50,7 @@ // shutters to clear the area var/airlock_area var/airlock_exit + var/elevator_network /obj/docking_port/stationary/trijent_elevator/proc/get_doors() . = list() @@ -74,6 +82,17 @@ door_control.control_doors("force-lock-launch") qdel(door_control) +/obj/docking_port/stationary/trijent_elevator/occupied + name = "occupied" + id = STAT_TRIJENT_OCCUPIED + airlock_exit = "west" + roundstart_template = /datum/map_template/shuttle/trijent_elevator + +/obj/docking_port/stationary/trijent_elevator/empty + name = "empty" + id = STAT_TRIJENT_EMPTY + airlock_exit = "west" + /obj/docking_port/stationary/trijent_elevator/lz1 name="Lz1 Elevator" id=STAT_TRIJENT_LZ1 @@ -98,7 +117,3 @@ id=STAT_TRIJENT_OMEGA airlock_area=/area/shuttle/trijent_shuttle/omega airlock_exit="east" - -/datum/map_template/shuttle/trijent_elevator - name = "Trijent Elevator" - shuttle_id = MOBILE_TRIJENT_ELEVATOR diff --git a/code/modules/shuttle/vehicle_elevator.dm b/code/modules/shuttle/vehicle_elevator.dm index c9a051a261c5..d2e102933fd8 100644 --- a/code/modules/shuttle/vehicle_elevator.dm +++ b/code/modules/shuttle/vehicle_elevator.dm @@ -20,10 +20,10 @@ /obj/docking_port/mobile/vehicle_elevator/register() . = ..() SSshuttle.vehicle_elevator = src - for(var/obj/structure/machinery/gear/G in machines) + for(var/obj/structure/machinery/gear/G in GLOB.machines) if(G.id == "vehicle_elevator_gears") gears += G - for(var/obj/structure/machinery/door/poddoor/railing/R in machines) + for(var/obj/structure/machinery/door/poddoor/railing/R in GLOB.machines) if(R.id == "vehicle_elevator_railing") railings += R diff --git a/code/modules/shuttles/marine_ferry.dm b/code/modules/shuttles/marine_ferry.dm index 48a6c176293e..82c5b8e4403d 100644 --- a/code/modules/shuttles/marine_ferry.dm +++ b/code/modules/shuttles/marine_ferry.dm @@ -58,7 +58,7 @@ for(var/obj/vehicle/multitile/M in D.loc) if(M) return 0 - for(var/turf/T in D.get_filler_turfs()) + for(var/turf/T in D.locate_filler_turfs()) for(var/obj/vehicle/multitile/M in T) if(M) return 0 @@ -73,13 +73,6 @@ control.visible_message(SPAN_WARNING(fail_flavortext)) return //Kill it so as not to repeat -/datum/shuttle/ferry/marine/proc/load_datums() - if(!(info_tag in s_info)) - message_admins(SPAN_WARNING("Error with shuttles: Shuttle tag does not exist. Code: MSD10.\n WARNING: DROPSHIP LAUNCH WILL PROBABLY FAIL")) - - var/list/L = s_info[info_tag] - info_datums = L.Copy() - /datum/shuttle/ferry/marine/proc/set_automated_launch(bool_v) automated_launch = bool_v if(bool_v) @@ -102,6 +95,7 @@ automated_launch = FALSE automated_launch_timer = TIMER_ID_NULL ai_silent_announcement("Dropship '[name]' departing.") + log_ares_flight("Automated", "Dropship [name] launched on an automatic flight.") /* @@ -228,7 +222,7 @@ if(X && X.stat != DEAD) var/name = "Unidentified Lifesigns" var/input = "Unidentified lifesigns detected onboard. Recommendation: lockdown of exterior access ports, including ducting and ventilation." - shipwide_ai_announcement(input, name, 'sound/AI/unidentified_lifesigns.ogg') + shipwide_ai_announcement(input, name, 'sound/AI/unidentified_lifesigns.ogg', ares_logging = ARES_LOG_SECURITY) set_security_level(SEC_LEVEL_RED) break @@ -266,17 +260,11 @@ in_transit_time_left = 0 - if(EvacuationAuthority.dest_status >= NUKE_EXPLOSION_IN_PROGRESS) - return FALSE //If a nuke is in progress, don't attempt a landing. - playsound_area(get_area(turfs_int[sound_target]), sound_landing, 100) playsound(turfs_trg[sound_target], sound_landing, 100) playsound_area(get_area(turfs_int[sound_target]), channel = SOUND_CHANNEL_AMBIENCE, status = SOUND_UPDATE) sleep(100) //Wait for it to finish. - if(EvacuationAuthority.dest_status == NUKE_EXPLOSION_FINISHED) - return FALSE //If a nuke finished, don't land. - target_turf = T_trg target_rotation = trg_rot shuttle_turfs = turfs_int @@ -348,17 +336,17 @@ var/target_section = crash_target_section if(isnull(target_section)) - var/list/potential_crash_sections = almayer_ship_sections.Copy() - potential_crash_sections -= almayer_aa_cannon.protecting_section + var/list/potential_crash_sections = GLOB.almayer_ship_sections.Copy() + potential_crash_sections -= GLOB.almayer_aa_cannon.protecting_section target_section = pick(potential_crash_sections) - var/turf/T_trg = pick(shuttle_controller.locs_crash[target_section]) + var/turf/T_trg = pick(SSoldshuttle.shuttle_controller.locs_crash[target_section]) for(var/X in equipments) var/obj/structure/dropship_equipment/E = X if(istype(E, /obj/structure/dropship_equipment/adv_comp/docking)) var/list/crash_turfs = list() - for(var/turf/TU in shuttle_controller.locs_crash[target_section]) + for(var/turf/TU in SSoldshuttle.shuttle_controller.locs_crash[target_section]) if(istype(get_area(TU), /area/almayer/hallways/hangar)) crash_turfs += TU if(crash_turfs.len) T_trg = pick(crash_turfs) @@ -368,7 +356,7 @@ if(!istype(T_src) || !istype(T_int) || !istype(T_trg)) message_admins(SPAN_WARNING("Error with shuttles: Reference turfs not correctly instantiated. Code: MSD04.\n WARNING: DROPSHIP LAUNCH WILL FAIL")) - shuttle_controller.locs_crash[target_section] -= T_trg + SSoldshuttle.shuttle_controller.locs_crash[target_section] -= T_trg //END: Heavy lifting backend @@ -414,7 +402,7 @@ // At halftime, we announce whether or not the AA forced the dropship to divert // The rounding is because transit time is decreased by 10 each loop. Travel time, however, might not be a multiple of 10 if(in_transit_time_left == round(travel_time / 2, 10) && true_crash_target_section != crash_target_section) - marine_announcement("A hostile aircraft on course for the [true_crash_target_section] has been successfully deterred.", "IX-50 MGAD System") + marine_announcement("A hostile aircraft on course for the [true_crash_target_section] has been successfully deterred.", "IX-50 MGAD System", logging = ARES_LOG_SECURITY) var/area/shuttle_area for(var/turf/T in turfs_int) @@ -433,12 +421,9 @@ in_transit_time_left = 0 - if(EvacuationAuthority.dest_status >= NUKE_EXPLOSION_IN_PROGRESS) - return FALSE //If a nuke is in progress, don't attempt a landing. - //This is where things change and shit gets real - marine_announcement("DROPSHIP ON COLLISION COURSE. CRASH IMMINENT." , "EMERGENCY", 'sound/AI/dropship_emergency.ogg') + marine_announcement("DROPSHIP ON COLLISION COURSE. CRASH IMMINENT." , "EMERGENCY", 'sound/AI/dropship_emergency.ogg', logging = ARES_LOG_SECURITY) for(var/mob/dead/observer/observer as anything in GLOB.observer_list) to_chat(observer, SPAN_DEADSAY(FONT_SIZE_LARGE("The dropship is about to impact [get_area_name(T_trg)]" + " [OBSERVER_JMP(observer, T_trg)]"))) @@ -448,15 +433,12 @@ sleep(85) - if(EvacuationAuthority.dest_status == NUKE_EXPLOSION_FINISHED) - return FALSE //If a nuke finished, don't land. - - if(security_level < SEC_LEVEL_RED) //automatically set security level to red. + if(GLOB.security_level < SEC_LEVEL_RED) //automatically set security level to red. set_security_level(SEC_LEVEL_RED, TRUE) shake_cameras(turfs_int) //shake for 1.5 seconds before crash, 0.5 after - for(var/obj/structure/machinery/power/apc/A in machines) //break APCs + for(var/obj/structure/machinery/power/apc/A in GLOB.machines) //break APCs if(A.z != T_trg.z) continue if(prob(A.crash_break_probability)) A.overload_lighting() @@ -472,23 +454,14 @@ // Break the ultra-reinforced windows. // Break the briefing windows. - for(var/i in GLOB.hijack_bustable_windows) - var/obj/structure/window/H = i - H.deconstruct(FALSE) - - for(var/k in GLOB.hijack_bustable_ladders) - var/obj/structure/ladder/fragile_almayer/L = k - L.deconstruct() - // Delete the briefing door(s). - for(var/D in GLOB.hijack_deletable_windows) - qdel(D) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_HIJACK_IMPACTED) // Sleep while the explosions do their job var/explosion_alive = TRUE while(explosion_alive) explosion_alive = FALSE - for(var/datum/automata_cell/explosion/E in cellauto_cells) + for(var/datum/automata_cell/explosion/E in GLOB.cellauto_cells) if(E.explosion_cause_data && E.explosion_cause_data.cause_name == "dropship crash") explosion_alive = TRUE break @@ -531,15 +504,15 @@ open_doors_crashed(turfs_trg) //And now open the doors - for (var/obj/structure/machinery/door_display/research_cell/d in machines) + for (var/obj/structure/machinery/door_display/research_cell/d in GLOB.machines) if(is_mainship_level(d.z) || is_reserved_level(d.z)) d.ion_act() //Breaking xenos out of containment //Stolen from events.dm. WARNING: This code is old as hell - for (var/obj/structure/machinery/power/apc/APC in machines) + for (var/obj/structure/machinery/power/apc/APC in GLOB.machines) if(is_mainship_level(APC.z) || is_reserved_level(APC.z)) APC.ion_act() - for (var/obj/structure/machinery/power/smes/SMES in machines) + for (var/obj/structure/machinery/power/smes/SMES in GLOB.machines) if(is_mainship_level(SMES.z) || is_reserved_level(SMES.z)) SMES.ion_act() @@ -556,7 +529,7 @@ colonial_marines.add_current_round_status_to_end_results("Hijack") /datum/shuttle/ferry/marine/proc/disable_latejoin() - enter_allowed = FALSE + GLOB.enter_allowed = FALSE /datum/shuttle/ferry/marine/short_jump() @@ -617,14 +590,13 @@ /datum/shuttle/ferry/marine/force_close_launch(obj/structure/machinery/door/AL) if(!iselevator) - for(var/mob/M in AL.loc) // Bump all mobs outta the way for outside airlocks of shuttles - if(isliving(M)) - to_chat(M, SPAN_HIGHDANGER("You get thrown back as the dropship doors slam shut!")) - M.apply_effect(4, WEAKEN) - for(var/turf/T in orange(1, AL)) // Forcemove to a non shuttle turf - if(!istype(T, /turf/open/shuttle) && !istype(T, /turf/closed/shuttle)) - M.forceMove(T) - break + for(var/mob/living/M in AL.loc) // Bump all mobs outta the way for outside airlocks of shuttles + to_chat(M, SPAN_HIGHDANGER("You get thrown back as the dropship doors slam shut!")) + M.KnockDown(4) + for(var/turf/T in orange(1, AL)) // Forcemove to a non shuttle turf + if(!istype(T, /turf/open/shuttle) && !istype(T, /turf/closed/shuttle)) + M.forceMove(T) + break return ..() // Sleeps /datum/shuttle/ferry/marine/open_doors(list/L) diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index a5911d18b3a2..dc6f3a682b24 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -29,8 +29,6 @@ var/iselevator = 0 //Used to remove some shuttle related procs and texts to make it compatible with elevators var/almayerelevator = 0 //elevators on the almayer without limitations - var/list/last_passangers = list() //list of living creatures that were our last passengers - var/require_link = FALSE var/linked = FALSE var/ambience_muffle = MUFFLE_HIGH @@ -202,9 +200,7 @@ origin.move_contents_to(destination, direction=direction) - last_passangers.Cut() - for(var/mob/M in destination) - last_passangers += M + for(var/mob/living/M in destination) if(M.client) spawn(0) if(M.buckled && !iselevator) @@ -215,17 +211,18 @@ shake_camera(M, iselevator? 2 : 10, 1) if(istype(M, /mob/living/carbon) && !iselevator) if(!M.buckled) - M.apply_effect(3, WEAKEN) + M.Stun(3) + M.KnockDown(3) for(var/turf/T in origin) // WOW so hacky - who cares. Abby if(iselevator) if(istype(T,/turf/open/space)) if(is_mainship_level(T.z)) - new /turf/open/floor/almayer/empty(T) + T.ChangeTurf(/turf/open/floor/almayer/empty) else - new /turf/open/gm/empty(T) + T.ChangeTurf(/turf/open/gm/empty) else if(istype(T,/turf/open/space)) - new /turf/open/floor/plating(T) + T.ChangeTurf(/turf/open/floor/plating) return diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm index e765851c3b29..e83666ca2386 100644 --- a/code/modules/shuttles/shuttle_console.dm +++ b/code/modules/shuttles/shuttle_console.dm @@ -33,7 +33,7 @@ GLOBAL_LIST_EMPTY(shuttle_controls) return ..() /obj/structure/machinery/computer/shuttle_control/proc/get_shuttle() - var/datum/shuttle/ferry/shuttle = shuttle_controller.shuttles[shuttle_tag] + var/datum/shuttle/ferry/shuttle = SSoldshuttle.shuttle_controller.shuttles[shuttle_tag] if(shuttle_datum) shuttle = shuttle_datum @@ -60,7 +60,7 @@ GLOBAL_LIST_EMPTY(shuttle_controls) if(..(user)) return - if(!allowed(user) || ismaintdrone(user)) + if(!allowed(user)) to_chat(user, SPAN_WARNING("Access denied.")) return 1 @@ -79,17 +79,15 @@ GLOBAL_LIST_EMPTY(shuttle_controls) if(!isxeno(user) && (onboard || is_ground_level(z)) && !shuttle.iselevator) if(shuttle.queen_locked) if(onboard && skillcheck(user, SKILL_PILOT, SKILL_PILOT_TRAINED)) - user.visible_message(SPAN_NOTICE("[user] starts to type on the [src]."), - SPAN_NOTICE("You try to take back the control over the shuttle. It will take around 3 minutes.")) + user.visible_message(SPAN_NOTICE("[user] starts to type on [src]."), + SPAN_NOTICE("You try to take back the control over the shuttle. It will take around 3 minutes.")) if(do_after(user, 3 MINUTES, INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) - if(user.lying) - return 0 shuttle.last_locked = world.time shuttle.queen_locked = 0 shuttle.last_door_override = world.time shuttle.door_override = 0 - user.visible_message(SPAN_NOTICE("The [src] blinks with blue lights."), - SPAN_NOTICE("You have successfully taken back the control over the dropship.")) + user.visible_message(SPAN_NOTICE("[src] blinks with blue lights."), + SPAN_NOTICE("You have successfully taken back the control over the dropship.")) ui_interact(user) return else @@ -108,13 +106,13 @@ GLOBAL_LIST_EMPTY(shuttle_controls) shuttle.door_override = 0 if(link && !shuttle.linked) - user.visible_message(SPAN_NOTICE("The [src] blinks with blue lights."), - SPAN_NOTICE("Transport link activated.")) + user.visible_message(SPAN_NOTICE("[src] blinks with blue lights."), + SPAN_NOTICE("Transport link activated.")) shuttle.linked = TRUE if(shuttle.require_link && !shuttle.linked) - user.visible_message(SPAN_NOTICE("The [src] blinks with red lights."), - SPAN_WARNING("Transport terminal unlinked. Manual activation required.")) + user.visible_message(SPAN_NOTICE("[src] blinks with red lights."), + SPAN_WARNING("Transport terminal unlinked. Manual activation required.")) return ui_interact(user) @@ -203,7 +201,7 @@ GLOBAL_LIST_EMPTY(shuttle_controls) "auto_time_cdown" = automated_launch_time_left, ) - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + ui = SSnano.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) ui = new(user, src, ui_key, shuttle.iselevator? "elevator_control_console.tmpl" : "shuttle_control_console.tmpl", shuttle.iselevator? "Elevator Control" : "Shuttle Control", 550, 500) @@ -262,7 +260,7 @@ GLOBAL_LIST_EMPTY(shuttle_controls) return // Allow the queen to choose the ship section to crash into - var/crash_target = tgui_input_list(usr, "Choose a ship section to target","Hijack", almayer_ship_sections + list("Cancel")) + var/crash_target = tgui_input_list(usr, "Choose a ship section to target","Hijack", GLOB.almayer_ship_sections + list("Cancel")) if(crash_target == "Cancel") return @@ -280,19 +278,20 @@ GLOBAL_LIST_EMPTY(shuttle_controls) shuttle1.true_crash_target_section = crash_target // If the AA is protecting the target area, pick any other section to crash into at random - if(almayer_aa_cannon.protecting_section == crash_target) - var/list/potential_crash_sections = almayer_ship_sections.Copy() - potential_crash_sections -= almayer_aa_cannon.protecting_section + if(GLOB.almayer_aa_cannon.protecting_section == crash_target) + var/list/potential_crash_sections = GLOB.almayer_ship_sections.Copy() + potential_crash_sections -= GLOB.almayer_aa_cannon.protecting_section crash_target = pick(potential_crash_sections) shuttle1.crash_target_section = crash_target shuttle1.transit_gun_mission = 0 - if(round_statistics) - round_statistics.track_hijack() + if(GLOB.round_statistics) + GLOB.round_statistics.track_hijack() - marine_announcement("Unscheduled dropship departure detected from operational area. Hijack likely. Shutting down autopilot.", "Dropship Alert", 'sound/AI/hijack.ogg') + marine_announcement("Unscheduled dropship departure detected from operational area. Hijack likely. Shutting down autopilot.", "Dropship Alert", 'sound/AI/hijack.ogg', logging = ARES_LOG_SECURITY) shuttle.alerts_allowed-- + log_ares_flight("Unknown", "Unscheduled dropship departure detected from operational area. Hijack likely. Shutting down autopilot.") to_chat(Q, SPAN_DANGER("A loud alarm erupts from [src]! The fleshy hosts must know that you can access it!")) xeno_message(SPAN_XENOANNOUNCE("The Queen has commanded the metal bird to depart for the metal hive in the sky! Rejoice!"),3,Q.hivenumber) @@ -307,16 +306,16 @@ GLOBAL_LIST_EMPTY(shuttle_controls) if(Q.hive) addtimer(CALLBACK(Q.hive, TYPE_PROC_REF(/datum/hive_status, abandon_on_hijack)), DROPSHIP_WARMUP_TIME + 5 SECONDS, TIMER_UNIQUE) //+ 5 seconds catch standing in doorways - if(bomb_set) + if(GLOB.bomb_set) for(var/obj/structure/machinery/nuclearbomb/bomb in world) bomb.end_round = FALSE - if(almayer_orbital_cannon) - almayer_orbital_cannon.is_disabled = TRUE - addtimer(CALLBACK(almayer_orbital_cannon, TYPE_PROC_REF(/obj/structure/orbital_cannon, enable)), 10 MINUTES, TIMER_UNIQUE) + if(GLOB.almayer_orbital_cannon) + GLOB.almayer_orbital_cannon.is_disabled = TRUE + addtimer(CALLBACK(GLOB.almayer_orbital_cannon, TYPE_PROC_REF(/obj/structure/orbital_cannon, enable)), 10 MINUTES, TIMER_UNIQUE) - if(almayer_aa_cannon) - almayer_aa_cannon.is_disabled = TRUE + if(GLOB.almayer_aa_cannon) + GLOB.almayer_aa_cannon.is_disabled = TRUE else if(shuttle.require_link) use_power(4080) @@ -330,12 +329,12 @@ GLOBAL_LIST_EMPTY(shuttle_controls) shuttle.launch(src) if(onboard && !shuttle.iselevator) M.count_niche_stat(STATISTICS_NICHE_FLIGHT) - msg_admin_niche("[M] ([M.key]) launched a [shuttle.iselevator? "elevator" : "shuttle"] using [src].") + msg_admin_niche("[M] ([M.key]) launched \a [shuttle.iselevator? "elevator" : "shuttle"] using [src].") ui_interact(usr) -/obj/structure/machinery/computer/shuttle_control/bullet_act(obj/item/projectile/Proj) +/obj/structure/machinery/computer/shuttle_control/bullet_act(obj/projectile/Proj) visible_message("[Proj] ricochets off [src]!") return 0 diff --git a/code/modules/shuttles/shuttle_supply.dm b/code/modules/shuttles/shuttle_supply.dm index 67da9ff4311e..7eb7b96eb2e8 100644 --- a/code/modules/shuttles/shuttle_supply.dm +++ b/code/modules/shuttles/shuttle_supply.dm @@ -77,7 +77,7 @@ lower_railings() return else //at centcom - supply_controller.buy() + GLOB.supply_controller.buy() //We pretend it's a long_jump by making the shuttle stay at centcom for the "in-transit" period. var/area/away_area = get_location_area(away_location) @@ -137,14 +137,14 @@ recharging = 0 /datum/shuttle/ferry/supply/proc/handle_sell() - supply_controller.sell() + GLOB.supply_controller.sell() // returns 1 if the supply shuttle should be prevented from moving because it contains forbidden atoms /datum/shuttle/ferry/supply/proc/forbidden_atoms_check() if (!at_station()) return 0 //if badmins want to send mobs or a nuke on the supply shuttle from centcom we don't care - return supply_controller.forbidden_atoms_check(get_location_area()) + return GLOB.supply_controller.forbidden_atoms_check(get_location_area()) /datum/shuttle/ferry/supply/proc/at_station() return (!location) @@ -155,7 +155,7 @@ /datum/shuttle/ferry/supply/proc/raise_railings() var/effective = 0 - for(var/obj/structure/machinery/door/poddoor/M in machines) + for(var/obj/structure/machinery/door/poddoor/M in GLOB.machines) if(M.id == railing_id && !M.density) effective = 1 spawn() @@ -165,7 +165,7 @@ /datum/shuttle/ferry/supply/proc/lower_railings() var/effective = 0 - for(var/obj/structure/machinery/door/poddoor/M in machines) + for(var/obj/structure/machinery/door/poddoor/M in GLOB.machines) if(M.id == railing_id && M.density) effective = 1 INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/structure/machinery/door, open)) @@ -173,14 +173,14 @@ playsound(locate(Elevator_x,Elevator_y,Elevator_z), 'sound/machines/elevator_openclose.ogg', 50, 0) /datum/shuttle/ferry/supply/proc/start_gears(direction = 1) - for(var/obj/structure/machinery/gear/M in machines) + for(var/obj/structure/machinery/gear/M in GLOB.machines) if(M.id == gear_id) spawn() M.icon_state = "gear_moving" M.setDir(direction) /datum/shuttle/ferry/supply/proc/stop_gears() - for(var/obj/structure/machinery/gear/M in machines) + for(var/obj/structure/machinery/gear/M in GLOB.machines) if(M.id == gear_id) spawn() M.icon_state = "gear" diff --git a/code/modules/sorokyne/sorokyne_cold_water.dm b/code/modules/sorokyne/sorokyne_cold_water.dm index adf7e3de6228..345014a1e460 100644 --- a/code/modules/sorokyne/sorokyne_cold_water.dm +++ b/code/modules/sorokyne/sorokyne_cold_water.dm @@ -48,13 +48,13 @@ var/dam_amount = COLD_WATER_DAMAGE if(issynth(M) || isyautja(M)) dam_amount -= 0.5 - if(M.lying) - M.apply_damage(5*dam_amount,BURN) - else + if(M.body_position == STANDING_UP) M.apply_damage(dam_amount,BURN,"l_leg") M.apply_damage(dam_amount,BURN,"l_foot") M.apply_damage(dam_amount,BURN,"r_leg") M.apply_damage(dam_amount,BURN,"r_foot") + else + M.apply_damage(5*dam_amount,BURN) if (ishuman(M)) if (M.bodytemperature > MINIMUM_TEMP) diff --git a/code/modules/surgery/bones.dm b/code/modules/surgery/bones.dm index f87caaa54758..399f5f5360c3 100644 --- a/code/modules/surgery/bones.dm +++ b/code/modules/surgery/bones.dm @@ -41,6 +41,24 @@ success_sound = 'sound/handling/bandage.ogg' failure_sound = 'sound/surgery/organ2.ogg' +//Use materials to repair bones, same as /datum/surgery_step/mend_encased +/datum/surgery_step/mend_bones/extra_checks(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, repeating, skipped) + . = ..() + if(istype(tool, /obj/item/tool/surgery/bonegel)) //If bone gel, use some of the gel + var/obj/item/tool/surgery/bonegel/gel = tool + if(!gel.use_gel(gel.fracture_fix_cost)) + to_chat(user, SPAN_BOLDWARNING("[gel] is empty!")) + return FALSE + + else //Otherwise, use metal rods + var/obj/item/stack/rods/rods = user.get_inactive_hand() + if(!istype(rods)) + to_chat(user, SPAN_BOLDWARNING("You need metal rods in your offhand to repair [target]'s [surgery.affected_limb.display_name] with [tool].")) + return FALSE + if(!rods.use(2)) //Refunded on failure + to_chat(user, SPAN_BOLDWARNING("You need more metal rods to mend [target]'s [surgery.affected_limb.display_name] with [tool].")) + return FALSE + /datum/surgery_step/mend_bones/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, tool_type, datum/surgery/bone_repair/surgery) if(surgery.affected_bone) if(tool_type == /obj/item/tool/surgery/bonegel) @@ -118,6 +136,13 @@ target.apply_damage(10, BRUTE, target_zone) log_interact(user, target, "[key_name(user)] failed to begin repairing bones in [key_name(target)]'s [surgery.affected_limb.display_name] with \the [tool], aborting [surgery].") + + if(tool_type != /obj/item/tool/surgery/bonegel) + to_chat(user, SPAN_NOTICE("The metal rods used on [target]'s [surgery.affected_limb.display_name] fall loose from their [surgery.affected_limb].")) + var/obj/item/stack/rods/rods = new /obj/item/stack/rods(get_turf(target)) + rods.amount = 2 //Refund 2 rods on failure + rods.update_icon() + return FALSE //------------------------------------ diff --git a/code/modules/surgery/brainrepair.dm b/code/modules/surgery/brainrepair.dm index 6d3060c2a4a6..2b4e51292203 100644 --- a/code/modules/surgery/brainrepair.dm +++ b/code/modules/surgery/brainrepair.dm @@ -55,10 +55,11 @@ var/datum/internal_organ/brain/B = target.internal_organs_by_name["brain"] if(B) - B.damage = 0 + B.heal_damage(B.damage) target.disabilities &= ~NERVOUS target.sdisabilities &= ~DISABILITY_DEAF target.sdisabilities &= ~DISABILITY_MUTE + target.jitteriness = 0 target.pain.recalculate_pain() log_interact(user, target, "[key_name(user)] finished taking bone chips out of [key_name(target)]'s brain with \the [tool], finishing [surgery].") diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index 767f50fc9750..c5d7f37a444c 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -390,7 +390,7 @@ /obj/item/tool/surgery/circular_saw = SURGERY_TOOL_MULT_IDEAL, /obj/item/attachable/bayonet = SURGERY_TOOL_MULT_SUBOPTIMAL, /obj/item/weapon/twohanded/fireaxe = SURGERY_TOOL_MULT_SUBSTITUTE, - /obj/item/weapon/claymore/mercsword/machete = SURGERY_TOOL_MULT_SUBSTITUTE, + /obj/item/weapon/sword/machete = SURGERY_TOOL_MULT_SUBSTITUTE, /obj/item/tool/hatchet = SURGERY_TOOL_MULT_BAD_SUBSTITUTE, /obj/item/tool/kitchen/knife/butcher = SURGERY_TOOL_MULT_BAD_SUBSTITUTE, ) @@ -573,6 +573,24 @@ success_sound = 'sound/handling/bandage.ogg' failure_sound = 'sound/surgery/organ2.ogg' +//Use materials to mend bones, same as /datum/surgery_step/mend_bones +/datum/surgery_step/mend_encased/extra_checks(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, repeating, skipped) + . = ..() + if(istype(tool, /obj/item/tool/surgery/bonegel)) //If bone gel, use some of the gel + var/obj/item/tool/surgery/bonegel/gel = tool + if(!gel.use_gel(gel.mend_bones_fix_cost)) + to_chat(user, SPAN_BOLDWARNING("[gel] is empty!")) + return FALSE + + else //Otherwise, use metal rods + var/obj/item/stack/rods/rods = user.get_inactive_hand() + if(!istype(rods)) + to_chat(user, SPAN_BOLDWARNING("You need metal rods in your offhand to mend [target]'s [surgery.affected_limb.display_name] with [tool].")) + return FALSE + if(!rods.use(2)) //Refunded on failure + to_chat(user, SPAN_BOLDWARNING("You need more metal rods to mend [target]'s [surgery.affected_limb.display_name] with [tool].")) + return FALSE + /datum/surgery_step/mend_encased/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, tool_type, datum/surgery/surgery) if(tool_type == /obj/item/tool/surgery/bonegel) user.affected_message(target, @@ -626,6 +644,11 @@ target.apply_damage(10, BRUTE, target_zone) log_interact(user, target, "[key_name(user)] failed to mend [key_name(target)]'s [surgery.affected_limb.encased].") + if(tool_type != /obj/item/tool/surgery/bonegel) + to_chat(user, SPAN_NOTICE("The metal rods used on [target]'s [surgery.affected_limb.display_name] fall loose from their [surgery.affected_limb].")) + var/obj/item/stack/rods/rods = new /obj/item/stack/rods(get_turf(target)) + rods.amount = 2 //Refund 2 rods on failure + rods.update_icon() /*Proof of concept. Functions but does nothing useful. If fiddling with, uncomment /mob/living/attackby surgery code also. It's pointless processing to have live without any surgeries for it to use.*/ diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm index cebd4b44da7d..8f2e6156831a 100644 --- a/code/modules/surgery/implant.dm +++ b/code/modules/surgery/implant.dm @@ -106,6 +106,8 @@ if(.) if(is_surgery_tool(tool)) //Make sure you still have all your tools after a surgery. return FALSE + if(HAS_TRAIT(tool, TRAIT_ITEM_NOT_IMPLANTABLE)) + return FALSE if(tool.w_class > get_max_wclass(surgery)) to_chat(user, SPAN_WARNING("[tool] is too big to implant into [surgery.target]'s [surgery.affected_limb.cavity]!")) return FALSE diff --git a/code/modules/surgery/mcomp_tendwounds.dm b/code/modules/surgery/mcomp_tendwounds.dm index 9f4a9460f669..3a876a8b5730 100644 --- a/code/modules/surgery/mcomp_tendwounds.dm +++ b/code/modules/surgery/mcomp_tendwounds.dm @@ -1,6 +1,6 @@ /datum/surgery/mcomp_wounds name = "Tend Wounds" - possible_locs = list("chest") + possible_locs = DEFENSE_ZONES_LIVING //all hud aiming locations are suitable for yautja to target. invasiveness = list(SURGERY_DEPTH_SURFACE) required_surgery_skill = SKILL_SURGERY_TRAINED var/required_trait = TRAIT_YAUTJA_TECH// Only predators can do this @@ -15,6 +15,14 @@ self_operable = TRUE /datum/surgery/mcomp_wounds/can_start(mob/living/carbon/human/user, mob/living/carbon/human/patient, obj/limb/limb, obj/item/tool) + var/list/surgery_limbs = DEFENSE_ZONES_LIVING //Creates a list of all targetable locations + surgery_limbs -= user.zone_selected //Removes the zone you are currently targeting + + for(var/zone in surgery_limbs) //Loops through the limbs of the patient + if(istype(patient.active_surgeries[zone], /datum/surgery/mcomp_wounds)) //Checks if there is already a surgery of this type existing elsewhere. + to_chat(user, SPAN_WARNING("The [zone] is already being worked on and you have to finish that first!"))//gives a message to the person trying to perform the action + return FALSE + if(istype(user) && HAS_TRAIT(user, TRAIT_YAUTJA_TECH)) if (patient.getBruteLoss() || patient.getFireLoss()) //Heals brute or burn return TRUE diff --git a/code/modules/surgery/robolimb_repair.dm b/code/modules/surgery/robolimb_repair.dm index 99c918039a31..f7ec1b483f66 100644 --- a/code/modules/surgery/robolimb_repair.dm +++ b/code/modules/surgery/robolimb_repair.dm @@ -12,6 +12,7 @@ pain_reduction_required = NONE requires_bodypart = TRUE requires_bodypart_type = LIMB_ROBOT + lying_required = FALSE /datum/surgery/prosthetic_recalibration/can_start(mob/user, mob/living/carbon/patient, obj/limb/L, obj/item/tool) if(L.status & LIMB_UNCALIBRATED_PROSTHETIC) diff --git a/code/modules/surgery/surgery_initiator.dm b/code/modules/surgery/surgery_initiator.dm index 08b4dbdfed60..706b28d0e94e 100644 --- a/code/modules/surgery/surgery_initiator.dm +++ b/code/modules/surgery/surgery_initiator.dm @@ -27,6 +27,13 @@ to_chat(user, SPAN_WARNING("You can't perform surgery under these bad conditions!")) return FALSE + var/obj/limb/surgery_limb = target.get_limb(target_zone) + if(surgery_limb) + var/obj/item/blocker = target.get_sharp_obj_blocker(surgery_limb) + if(blocker) + to_chat(user, SPAN_WARNING("[blocker] [target] is wearing restricts your access to the surgical site, take it off!")) + return + if(user.action_busy) //already doing an action return FALSE @@ -36,7 +43,7 @@ continue //Lying and self-surgery checks. - if(surgeryloop.lying_required && !target.lying) + if(surgeryloop.lying_required && target.body_position != LYING_DOWN) continue if(!surgeryloop.self_operable && target == user) continue @@ -127,9 +134,15 @@ [target_zone == "r_hand"||target_zone == "l_hand" ? "hand":"arm"] you're using!")) return TRUE - if(surgeryinstance.lying_required && !target.lying) + if(surgeryinstance.lying_required && target.body_position != LYING_DOWN) return TRUE + if(surgery_limb) + var/obj/item/blocker = target.get_sharp_obj_blocker(surgery_limb) + if(blocker) + to_chat(user, SPAN_WARNING("[blocker] [target] is wearing restricts your access to the surgical site, take it off!")) + return + if(affecting) if(surgeryinstance.requires_bodypart) if(affecting.status & LIMB_DESTROYED) diff --git a/code/modules/surgery/surgery_procedure.dm b/code/modules/surgery/surgery_procedure.dm index 1e11516a8079..8620c557eb4b 100644 --- a/code/modules/surgery/surgery_procedure.dm +++ b/code/modules/surgery/surgery_procedure.dm @@ -90,7 +90,7 @@ to_chat(user, SPAN_WARNING("You can't operate on [target], \he is being carried by [target.pulledby]!")) return FALSE - if(lying_required && !target.lying) + if(lying_required && target.body_position != LYING_DOWN) to_chat(user, SPAN_WARNING("[user == target ? "You need" : "[target] needs"] to be lying down for this operation!")) return FALSE diff --git a/code/modules/surgery/surgery_steps.dm b/code/modules/surgery/surgery_steps.dm index b58c62b57f68..9e1450868d1c 100644 --- a/code/modules/surgery/surgery_steps.dm +++ b/code/modules/surgery/surgery_steps.dm @@ -92,6 +92,7 @@ affected_limb, or location vars. Also, in that case there may be a wait between var/self_surgery var/tool_modifier var/surface_modifier + var/failure_penalties = 0 //Skill speed modifier. step_duration *= user.get_skill_duration_multiplier(SKILL_SURGERY) @@ -134,16 +135,22 @@ affected_limb, or location vars. Also, in that case there may be a wait between message += "this tool is[pick("n't ideal", " not the best")]" if(SURGERY_TOOL_MULT_SUBSTITUTE) message += "this tool is[pick("n't suitable", " a bad fit", " difficult to use")]" - if(SURGERY_TOOL_MULT_BAD_SUBSTITUTE, SURGERY_TOOL_MULT_AWFUL) + if(SURGERY_TOOL_MULT_BAD_SUBSTITUTE) message += "this tool is [pick("awful", "barely usable")]" + failure_penalties += 1 + if(SURGERY_TOOL_MULT_AWFUL) + message += "this tool is [pick("awful", "barely usable")]" + failure_penalties += 2 switch(surface_modifier) if(SURGERY_SURFACE_MULT_ADEQUATE) message += "[pick("it isn't easy, working", "it's tricky to perform complex surgeries", "this would be quicker if you weren't working")] [pick("in the field", "under these conditions", "without a proper surgical theatre")]" if(SURGERY_SURFACE_MULT_UNSUITED) message += "[pick("it's difficult to work", "it's slow going, working", "you need to take your time")] in these [pick("primitive", "rough", "crude")] conditions" + failure_penalties += 1 if(SURGERY_SURFACE_MULT_AWFUL) message += "[pick("you need to work slowly and carefully", "you need to be very careful", "this is delicate work, especially")] [pick("in these", "under such")] [pick("terrible", "awful", "utterly unsuitable")] conditions" + failure_penalties += 2 if(length(message)) to_chat(user, SPAN_WARNING("[capitalize(english_list(message, final_comma_text = ","))].")) @@ -151,6 +158,20 @@ affected_limb, or location vars. Also, in that case there may be a wait between var/advance //Whether to continue to the next step afterwards. var/pain_failure_chance = max(0, (target.pain?.feels_pain ? surgery.pain_reduction_required - target.pain.reduction_pain : 0) * 2 - human_modifiers["pain_reduction"]) //Each extra pain unit increases the chance by 2 + // Skill compensation for difficult conditions/tools + if(skillcheck(user, SKILL_SURGERY, SKILL_SURGERY_EXPERT)) + failure_penalties -= 2 // will ultimately be -3 + if(skillcheck(user, SKILL_SURGERY, SKILL_SURGERY_TRAINED)) + failure_penalties -= 1 + + var/surgery_failure_chance = SURGERY_FAILURE_IMPOSSIBLE + if(failure_penalties == 1) + surgery_failure_chance = SURGERY_FAILURE_UNLIKELY + else if(failure_penalties == 2) + surgery_failure_chance = SURGERY_FAILURE_POSSIBLE + else if(failure_penalties > 2) + surgery_failure_chance = SURGERY_FAILURE_LIKELY + play_preop_sound(user, target, target_zone, tool, surgery) if(tool?.flags_item & ANIMATED_SURGICAL_TOOL) //If we have an animated tool sprite, run it while we do any do_afters. @@ -171,6 +192,17 @@ affected_limb, or location vars. Also, in that case there may be a wait between target.emote("pain") play_failure_sound(user, target, target_zone, tool, surgery) + else if(prob(surgery_failure_chance)) + do_after(user, max(rand(step_duration * 0.1, step_duration * 0.5), 0.5), INTERRUPT_ALL|INTERRUPT_DIFF_INTENT, + BUSY_ICON_FRIENDLY, target, INTERRUPT_MOVED, BUSY_ICON_MEDICAL) //Brief do_after so that the interrupt doesn't happen instantly. + user.visible_message(SPAN_DANGER("[user] is struggling to perform surgery."), + SPAN_DANGER("You are struggling to perform the surgery with these tools and conditions!")) + if(failure(user, target, target_zone, tool, tool_type, surgery)) //Failure returns TRUE if the step should complete anyway. + advance = TRUE + target.emote("pain") + play_failure_sound(user, target, target_zone, tool, surgery) + msg_admin_niche("[user] failed a [surgery] step on [target] because of [failure_penalties] failure possibility penalties ([surgery_failure_chance]%)") + else //Help intent. if(do_after(user, step_duration, INTERRUPT_ALL|INTERRUPT_DIFF_INTENT, BUSY_ICON_FRIENDLY,target,INTERRUPT_MOVED,BUSY_ICON_MEDICAL)) success(user, target, target_zone, tool, tool_type, surgery) diff --git a/code/modules/teleporters/teleporter_admin_verbs.dm b/code/modules/teleporters/teleporter_admin_verbs.dm index 930f9209d481..61f21fdb34ee 100644 --- a/code/modules/teleporters/teleporter_admin_verbs.dm +++ b/code/modules/teleporters/teleporter_admin_verbs.dm @@ -3,7 +3,7 @@ set desc = "Force a teleporter to teleport" set category = "Admin.Game" - var/available_teleporters = SSteleporter.teleporters + var/list/datum/teleporter/available_teleporters = GLOB.teleporters var/datum/teleporter/teleporter = tgui_input_list(usr, "Which teleporter do you want to use?", "Select a teleporter:", available_teleporters) if(!teleporter) diff --git a/code/modules/teleporters/teleporter_console.dm b/code/modules/teleporters/teleporter_console.dm index bdd62f67fdad..88384578a939 100644 --- a/code/modules/teleporters/teleporter_console.dm +++ b/code/modules/teleporters/teleporter_console.dm @@ -40,19 +40,13 @@ if(linked_teleporter) // Maybe should debug log this because it's indicative of bad logic, but I'll leave it out for the sake of (potential) spam return TRUE - if(SSteleporter) - - var/datum/teleporter/found_teleporter = SSteleporter.teleporters_by_id[teleporter_id] - if(found_teleporter) - linked_teleporter = found_teleporter - linked_teleporter.linked_consoles += src - else - log_debug("Couldn't find teleporter matching ID [linked_teleporter]. Code: TELEPORTER_CONSOLE_2") - log_admin("Couldn't find teleporter matching ID [linked_teleporter]. Tell the devs. Code: TELEPORTER_CONSOLE_2") - return FALSE + var/datum/teleporter/found_teleporter = GLOB.teleporters_by_id[teleporter_id] + if(found_teleporter) + linked_teleporter = found_teleporter + linked_teleporter.linked_consoles += src else - log_debug("Couldn't find teleporter SS to pull teleporter from. Code: TELEPORTER_CONSOLE_3") - log_admin("Couldn't find teleporter SS to pull teleporter from. Tell the devs. Code: TELEPORTER_CONSOLE_3") + log_debug("Couldn't find teleporter matching ID [linked_teleporter]. Code: TELEPORTER_CONSOLE_2") + log_admin("Couldn't find teleporter matching ID [linked_teleporter]. Tell the devs. Code: TELEPORTER_CONSOLE_2") return FALSE return TRUE @@ -166,7 +160,7 @@ ..() -/obj/structure/machinery/computer/teleporter_console/bullet_act(obj/item/projectile/P) +/obj/structure/machinery/computer/teleporter_console/bullet_act(obj/projectile/P) visible_message("[P] doesn't even scratch [src]!") return FALSE @@ -181,9 +175,9 @@ if(SSmapping.configs[GROUND_MAP].map_name != MAP_CORSAT) // Bad style, but I'm leaving it here for now until someone wants to add a teleporter to another map return - if(SSteleporter.teleporters.len) // already made the damn thing + if(GLOB.teleporters.len) // already made the damn thing return var/datum/teleporter/corsat/teleporter = new - SSteleporter.teleporters_by_id[teleporter.id] = teleporter - SSteleporter.teleporters += teleporter + GLOB.teleporters_by_id[teleporter.id] = teleporter + GLOB.teleporters += teleporter diff --git a/code/modules/teleporters/teleporter_landmarks.dm b/code/modules/teleporters/teleporter_landmarks.dm index 75ce77550f52..fe0ab4648903 100644 --- a/code/modules/teleporters/teleporter_landmarks.dm +++ b/code/modules/teleporters/teleporter_landmarks.dm @@ -41,30 +41,24 @@ /obj/effect/landmark/teleporter_loc/LateInitialize() . = ..() - if (SSteleporter) - var/datum/teleporter/T = SSteleporter.teleporters_by_id[linked_teleporter] - if (T) - if (!T.locations[location_id]) - T.locations[location_id] = list() + var/datum/teleporter/T = GLOB.teleporters_by_id[linked_teleporter] + if (T) + if (!T.locations[location_id]) + T.locations[location_id] = list() - var/list/location = T.locations[location_id] + var/list/location = T.locations[location_id] - if (!location) - log_debug("Teleporter locations turf list not properly instantiated. Code: TELEPORTER_LANDMARK_1") - log_admin("Teleporter locations turf list not properly instantiated. Tell the devs. Code: TELEPORTER_LANDMARK_1") - qdel(src) - return - - location[index] = get_turf(src) - - else - log_debug("Couldn't find teleporter matching ID [linked_teleporter]. Code: TELEPORTER_LANDMARK_2") - log_admin("Couldn't find teleporter matching ID [linked_teleporter]. Tell the devs. Code: TELEPORTER_LANDMARK_2") + if (!location) + log_debug("Teleporter locations turf list not properly instantiated. Code: TELEPORTER_LANDMARK_1") + log_admin("Teleporter locations turf list not properly instantiated. Tell the devs. Code: TELEPORTER_LANDMARK_1") qdel(src) return + + location[index] = get_turf(src) + else - log_debug("Couldn't find teleporter SS to register with. Code: TELEPORTER_LANDMARK_3") - log_admin("Couldn't find teleporter SS to register with. Tell the devs. Code: TELEPORTER_LANDMARK_3") + log_debug("Couldn't find teleporter matching ID [linked_teleporter]. Code: TELEPORTER_LANDMARK_2") + log_admin("Couldn't find teleporter matching ID [linked_teleporter]. Tell the devs. Code: TELEPORTER_LANDMARK_2") qdel(src) return diff --git a/code/modules/tents/blockers.dm b/code/modules/tents/blockers.dm index 3301768d9147..3c02ca326149 100644 --- a/code/modules/tents/blockers.dm +++ b/code/modules/tents/blockers.dm @@ -7,6 +7,7 @@ invisibility = INVISIBILITY_MAXIMUM density = TRUE opacity = FALSE // Unfortunately this doesn't behave as we'd want with ON_BORDER so we can't make tent opaque + throwpass = TRUE // Needs this so xenos can attack through the blocker and hit the tents or people inside /// The tent this blocker relates to, will be destroyed along with it var/obj/structure/tent/linked_tent @@ -33,6 +34,12 @@ PF.flags_can_pass_front = NONE PF.flags_can_pass_behind = NONE -/obj/structure/blocker/tent/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/structure/blocker/tent/get_projectile_hit_boolean(obj/projectile/P) . = ..() return FALSE // Always fly through the tent + +//Blocks all direction, basically an invisible wall +/obj/structure/blocker/tent/full_tile + flags_atom = NO_FLAGS + icon = 'icons/landmarks.dmi' + icon_state = "invisible_wall" diff --git a/code/modules/tents/deployed_tents.dm b/code/modules/tents/deployed_tents.dm index c81beb318d5a..5f74337f9973 100644 --- a/code/modules/tents/deployed_tents.dm +++ b/code/modules/tents/deployed_tents.dm @@ -3,6 +3,7 @@ /obj/structure/tent name = "tent" icon = 'icons/obj/structures/tents_deployed_classic.dmi' + desc = "Can be torn down with an entrenching tool." opacity = FALSE // Seems only the initial turf blocks light, not all of the multitile. Therefore, useless. layer = INTERIOR_WALL_SOUTH_LAYER // This should be below FLY_LAYER but just thank chairs and other bs health = 200 @@ -11,7 +12,7 @@ /// Turf dimensions along the X axis, beginning from left, at ground level var/x_dim = 2 /// Turf dimensions along the Y axis, beginning from bottom, at ground level - var/y_dim = 3 + var/y_dim = 4 /// How much cold protection to add to entering humans - Full body clothing means complete (1) protection var/cold_protection_factor = 0.4 @@ -55,6 +56,7 @@ return var/mob/subject_mob = subject RegisterSignal(subject_mob, list(COMSIG_MOVABLE_TURF_ENTERED, COMSIG_GHOST_MOVED), PROC_REF(mob_moved), override = TRUE) // Must override because we can't know if mob was already inside tent without keeping an awful ref list + subject_mob.RegisterSignal(src, COMSIG_PARENT_QDELETING, TYPE_PROC_REF(/mob, tent_deletion_clean_up), override = TRUE) var/atom/movable/screen/plane_master/roof/roof_plane = subject_mob.hud_used.plane_masters["[ROOF_PLANE]"] roof_plane?.invisibility = INVISIBILITY_MAXIMUM if(ishuman(subject)) @@ -71,28 +73,60 @@ /obj/structure/tent/proc/mob_exited_tent(mob/subject) UnregisterSignal(subject, list(COMSIG_MOVABLE_TURF_ENTERED, COMSIG_GHOST_MOVED, COMSIG_HUMAN_COLD_PROTECTION_APPLY_MODIFIERS)) + subject.UnregisterSignal(src, COMSIG_PARENT_QDELETING) var/atom/movable/screen/plane_master/roof/roof_plane = subject.hud_used.plane_masters["[ROOF_PLANE]"] roof_plane?.invisibility = 0 +/mob/proc/tent_deletion_clean_up(obj/structure/tent/deleting_tent) + SIGNAL_HANDLER + deleting_tent.mob_exited_tent(src) + /obj/structure/tent/attack_alien(mob/living/carbon/xenomorph/M) if(unslashable) return - health -= 20 + + M.animation_attack_on(src) + health -= rand(M.melee_damage_lower, M.melee_damage_upper) + playsound(src, 'sound/items/paper_ripped.ogg', 25, 1) + + M.visible_message(SPAN_DANGER("[M] [M.slashes_verb] [src]!"), \ + SPAN_DANGER("You [M.slash_verb] [src]!"), null, 5, CHAT_TYPE_XENO_COMBAT) + if(health <= 0) - visible_message(SPAN_BOLDWARNING("The [src] collapses!")) + visible_message(SPAN_BOLDWARNING("[src] collapses!")) qdel(src) + return XENO_ATTACK_ACTION + +/obj/structure/tent/attackby(obj/item/item, mob/user) + var/obj/item/tool/shovel/shovel = item + if(!istype(shovel) || shovel.folded || user.action_busy) + return + visible_message(SPAN_HIGHDANGER("[user] is trying to tear down [src]")) + playsound(src, 'sound/items/paper_ripped.ogg', 25, 1) + + if(!do_after(user, 150, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_HOSTILE, src) || QDELETED(src)) + return + + visible_message(SPAN_HIGHDANGER("[user] tears down [src]")) + playsound(src, 'sound/items/paper_ripped.ogg', 25, 1) + qdel(src) + +/obj/structure/tent/get_projectile_hit_boolean(obj/projectile/P) + . = ..() + return FALSE // Always fly through the tent + /// Command tent, providing basics for field command: a phone, and an overwatch console /obj/structure/tent/cmd icon_state = "cmd_interior" roof_state = "cmd_top" - desc = "A standard USCM Command Tent. This one comes equipped with a self-powered Overwatch Console and a Telephone. It is very frail, do not burn, expose to sharp objects, or explosives." + desc = "A standard USCM Command Tent. This one comes equipped with a self-powered Overwatch Console and a Telephone. It is very frail, do not burn, expose to sharp objects, or explosives. Can be torn down with an entrenching tool." /// Medical tent, procures a buff to surgery speed /obj/structure/tent/med icon_state = "med_interior" roof_state = "med_top" - desc = "A standard USCM Medical Tent. This one comes equipped with advanced field surgery facilities. It is very fragile however and won't withstand the rigors of war." + desc = "A standard USCM Medical Tent. This one comes equipped with advanced field surgery facilities. It is very fragile however and won't withstand the rigors of war. Can be torn down with an entrenching tool." var/surgery_speed_mult = 0.9 var/surgery_pain_reduction = 5 @@ -115,10 +149,10 @@ icon_state = "big_interior" roof_state = "big_top" x_dim = 3 - y_dim = 3 + y_dim = 4 /obj/structure/tent/reqs icon_state = "reqs_interior" roof_state = "reqs_top" x_dim = 4 - y_dim = 3 + y_dim = 4 diff --git a/code/modules/tents/equipment.dm b/code/modules/tents/equipment.dm index f2f9175a240e..0d47c7e3ce62 100644 --- a/code/modules/tents/equipment.dm +++ b/code/modules/tents/equipment.dm @@ -87,7 +87,7 @@ AddComponent(/datum/component/tent_supported_object) update_icon() -/obj/structure/tent_curtain/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/structure/tent_curtain/get_projectile_hit_boolean(obj/projectile/P) return FALSE /obj/structure/tent_curtain/update_icon() diff --git a/code/modules/tents/folded_tents.dm b/code/modules/tents/folded_tents.dm index d1f922703500..fe1a748b750d 100644 --- a/code/modules/tents/folded_tents.dm +++ b/code/modules/tents/folded_tents.dm @@ -1,17 +1,33 @@ /obj/item/folded_tent - name = "Folded Abstract Tent" + name = "folded abstract tent" icon = 'icons/obj/structures/tents_folded.dmi' + icon_state = "tent" w_class = SIZE_LARGE /// Required cleared area along X axis var/dim_x = 1 /// Required cleared area along Y axis var/dim_y = 1 - /// Deployment X offset - var/off_x = 0 - /// Deployment Y offset - var/off_y = 0 - /// Map Template to use for the tent - var/template + /// Tents map template typepath + var/template_preset = "abstract" + ///Map template datum used for tent + var/datum/map_template/template + /// If this tent can be deployed anywhere + var/unrestricted_deployment = FALSE + +/obj/item/folded_tent/Initialize(mapload, ...) + . = ..() + if(template_preset == "abstract") //So spawning an abstract tent wont fail create and destroy + return + set_template(SSmapping.tent_type_templates[template_preset]) + if(!template) + CRASH("[src] initialized with template preset, \"[template_preset]\", that does not exist.") + +/obj/item/folded_tent/proc/set_template(datum/map_template/new_template) + if(!istype(new_template)) + return + template = new_template + dim_x = template.width + dim_y = template.height /// Check an area is clear for deployment of the tent /obj/item/folded_tent/proc/check_area(turf/ref_turf, mob/message_receiver, display_error = FALSE) @@ -20,7 +36,7 @@ var/list/turf_block = get_deployment_area(ref_turf) for(var/turf/turf as anything in turf_block) var/area/area = get_area(turf) - if(!area.can_build_special) + if(!area.can_build_special && !unrestricted_deployment) if(message_receiver) to_chat(message_receiver, SPAN_WARNING("You cannot deploy tents on restricted areas.")) if(display_error) @@ -32,22 +48,24 @@ return FALSE if(turf.density) if(message_receiver) - to_chat(message_receiver, SPAN_WARNING("You cannot deploy the [src] here, something ([turf]) is in the way.")) + to_chat(message_receiver, SPAN_WARNING("You cannot deploy [src] here, something ([turf]) is in the way.")) if(display_error) new /obj/effect/overlay/temp/tent_deployment_area/error(turf) return FALSE for(var/atom/movable/atom as anything in turf) if(isliving(atom) || (atom.density && atom.can_block_movement) || istype(atom, /obj/structure/tent)) if(message_receiver) - to_chat(message_receiver, SPAN_WARNING("You cannot deploy the [src] here, something ([atom.name]) is in the way.")) + to_chat(message_receiver, SPAN_WARNING("You cannot deploy [src] here, something ([atom.name]) is in the way.")) if(display_error) new /obj/effect/overlay/temp/tent_deployment_area/error(turf) return FALSE return TRUE -/obj/item/folded_tent/proc/unfold(turf/ref_turf) - var/datum/map_template/template_instance = new template() - template_instance.load(ref_turf, FALSE, FALSE) +/obj/item/folded_tent/proc/unfold(mob/user, turf/ref_turf) + if(!istype(template)) + to_chat(user, SPAN_BOLDWARNING("[src] does not contain a tent! It is broken!")) + CRASH("[src] attempted to unfold \"[template]\" as a tent.") + template.load(ref_turf, FALSE, FALSE) /obj/item/folded_tent/proc/get_deployment_area(turf/ref_turf) RETURN_TYPE(/list/turf) @@ -56,11 +74,13 @@ /obj/item/folded_tent/attack_self(mob/living/user) . = ..() + var/off_x = -(tgui_input_number(user, "If facing North or South", "Set X Offset", 0, dim_x, 0, 30 SECONDS, TRUE)) + var/off_y = -(tgui_input_number(user, "If facing East or West", "Set Y Offset", 0, dim_y, 0, 30 SECONDS, TRUE)) var/turf/deploy_turf = user.loc if(!istype(deploy_turf)) return // In a locker or something. Get lost you already have a home. - switch(user.dir) // Fix up offset deploy location so tent is better centered + can be deployed under all angles + switch(user.dir) //Handles offsets when deploying if(NORTH) deploy_turf = locate(deploy_turf.x + off_x, deploy_turf.y + 1, deploy_turf.z) if(SOUTH) @@ -73,7 +93,7 @@ if(!istype(deploy_turf) || (deploy_turf.x + dim_x > world.maxx) || (deploy_turf.y + dim_y > world.maxy)) // Map border basically return - if(!is_ground_level(deploy_turf.z)) + if(!is_ground_level(deploy_turf.z) && !unrestricted_deployment) to_chat(user, SPAN_WARNING("USCM Operational Tents are intended for operations, not ship or space recreation.")) return @@ -88,8 +108,8 @@ for(var/turf/turf in deployment_area) turf_overlay += new /obj/effect/overlay/temp/tent_deployment_area/casting(turf) - user.visible_message(SPAN_INFO("[user] starts deploying the [src]..."), \ - SPAN_WARNING("You start assembling the [src]... Stand still, it might take a bit to figure it out...")) + user.visible_message(SPAN_INFO("[user] starts deploying [src]..."), \ + SPAN_WARNING("You start assembling [src]... Stand still, it might take a bit to figure it out...")) if(!do_after(user, 6 SECONDS, INTERRUPT_ALL, BUSY_ICON_BUILD)) to_chat(user, SPAN_WARNING("You were interrupted!")) for(var/gfx in turf_overlay) @@ -101,8 +121,8 @@ QDEL_IN(gfx, 1.5 SECONDS) return - unfold(deploy_turf) - user.visible_message(SPAN_INFO("[user] finishes deploying the [src]!"), SPAN_INFO("You finish deploying the [src]!")) + unfold(user, deploy_turf) + user.visible_message(SPAN_INFO("[user] finishes deploying [src]!"), SPAN_INFO("You finish deploying [src]!")) for(var/gfx in turf_overlay) qdel(gfx) qdel(src) // Success! @@ -111,36 +131,25 @@ name = "folded USCM Command Tent" icon_state = "cmd" desc = "A standard USCM Command Tent. This one comes equipped with a self-powered Overwatch Console and a Telephone. Unfold in a suitable location to maximize usefulness. Staff Officer not included. ENTRANCE TO THE SOUTH." - dim_x = 2 - dim_y = 3 - off_x = -1 - template = /datum/map_template/tent/cmd + template_preset = "tent_cmd" /obj/item/folded_tent/med name = "folded USCM Medical Tent" icon_state = "med" desc = "A standard USCM Medical Tent. This one comes equipped with advanced field surgery facilities. Unfold in a suitable location to maximize health gains. Surgical Tray not included. ENTRANCE TO THE SOUTH." - dim_x = 2 - dim_y = 3 - template = /datum/map_template/tent/med + template_preset = "tent_med" /obj/item/folded_tent/reqs name = "folded USCM Requisitions Tent" icon_state = "req" desc = "A standard USCM Requisitions Tent. Now, you can enjoy req line anywhere you go! Unfold in a suitable location to maximize resource distribution. ASRS not included. ENTRANCE TO THE SOUTH." - dim_x = 4 - dim_y = 3 - off_x = -2 - template = /datum/map_template/tent/reqs + template_preset = "tent_reqs" /obj/item/folded_tent/big name = "folded USCM Big Tent" icon_state = "big" desc = "A standard USCM Tent. This one is just a bigger, general purpose version. Unfold in a suitable location for maximum FOB vibes. Mess Tech not included. ENTRANCE TO THE SOUTH." - dim_x = 3 - dim_y = 3 - off_x = -2 - template = /datum/map_template/tent/big + template_preset = "tent_big" /obj/effect/overlay/temp/tent_deployment_error icon = 'icons/effects/effects.dmi' diff --git a/code/modules/tgs/core/_definitions.dm b/code/modules/tgs/core/_definitions.dm index ebf6d17c2a07..fd98034eb716 100644 --- a/code/modules/tgs/core/_definitions.dm +++ b/code/modules/tgs/core/_definitions.dm @@ -1,2 +1,10 @@ +#if DM_VERSION < 510 +#error The TGS DMAPI does not support BYOND versions < 510! +#endif + #define TGS_UNIMPLEMENTED "___unimplemented" #define TGS_VERSION_PARAMETER "server_service_version" + +#ifndef TGS_DEBUG_LOG +#define TGS_DEBUG_LOG(message) +#endif diff --git a/code/modules/tgs/core/core.dm b/code/modules/tgs/core/core.dm index 41a047339452..8be96f27404a 100644 --- a/code/modules/tgs/core/core.dm +++ b/code/modules/tgs/core/core.dm @@ -42,11 +42,11 @@ var/datum/tgs_version/max_api_version = TgsMaximumApiVersion(); if(version.suite != null && version.minor != null && version.patch != null && version.deprecated_patch != null && version.deprefixed_parameter > max_api_version.deprefixed_parameter) - TGS_ERROR_LOG("Detected unknown API version! Defaulting to latest. Update the DMAPI to fix this problem.") + TGS_ERROR_LOG("Detected unknown Interop API version! Defaulting to latest. Update the DMAPI to fix this problem.") api_datum = /datum/tgs_api/latest if(!api_datum) - TGS_ERROR_LOG("Found unsupported API version: [raw_parameter]. If this is a valid version please report this, backporting is done on demand.") + TGS_ERROR_LOG("Found unsupported Interop API version: [raw_parameter]. If this is a valid version please report this, backporting is done on demand.") return TGS_INFO_LOG("Activating API for version [version.deprefixed_parameter]") @@ -107,6 +107,13 @@ if(api) return api.ApiVersion() +/world/TgsEngine() +#ifdef OPENDREAM + return TGS_ENGINE_TYPE_OPENDREAM +#else + return TGS_ENGINE_TYPE_BYOND +#endif + /world/TgsInstanceName() var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) if(api) @@ -153,4 +160,9 @@ /world/TgsSecurityLevel() var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) if(api) - api.SecurityLevel() + return api.SecurityLevel() + +/world/TgsVisibility() + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + return api.Visibility() diff --git a/code/modules/tgs/core/datum.dm b/code/modules/tgs/core/datum.dm index 68b0330fe860..07ce3b684584 100644 --- a/code/modules/tgs/core/datum.dm +++ b/code/modules/tgs/core/datum.dm @@ -11,6 +11,15 @@ TGS_DEFINE_AND_SET_GLOBAL(tgs, null) src.event_handler = event_handler src.version = version +/datum/tgs_api/proc/TerminateWorld() + while(TRUE) + TGS_DEBUG_LOG("About to terminate world. Tick: [world.time], sleep_offline: [world.sleep_offline]") + world.sleep_offline = FALSE // https://www.byond.com/forum/post/2894866 + del(world) + world.sleep_offline = FALSE // just in case, this is BYOND after all... + sleep(1) + TGS_DEBUG_LOG("BYOND DIDN'T TERMINATE THE WORLD!!! TICK IS: [world.time], sleep_offline: [world.sleep_offline]") + /datum/tgs_api/latest parent_type = /datum/tgs_api/v5 @@ -57,3 +66,6 @@ TGS_PROTECT_DATUM(/datum/tgs_api) /datum/tgs_api/proc/SecurityLevel() return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/Visibility() + return TGS_UNIMPLEMENTED diff --git a/code/modules/tgs/v3210/commands.dm b/code/modules/tgs/v3210/commands.dm index d9bd287465b9..e65c816320dc 100644 --- a/code/modules/tgs/v3210/commands.dm +++ b/code/modules/tgs/v3210/commands.dm @@ -47,7 +47,7 @@ user.friendly_name = sender // Discord hack, fix the mention if it's only numbers (fuck you IRC trolls) - var/regex/discord_id_regex = regex(@"^[0-9]+$") + var/regex/discord_id_regex = regex("^\[0-9\]+$") if(findtext(sender, discord_id_regex)) sender = "<@[sender]>" @@ -55,4 +55,4 @@ var/datum/tgs_message_content/result = stc.Run(user, params) result = UpgradeDeprecatedCommandResponse(result, command) - return result?.text || TRUE + return result ? result.text : TRUE diff --git a/code/modules/tgs/v4/api.dm b/code/modules/tgs/v4/api.dm index b9a75c4abb48..945e2e411767 100644 --- a/code/modules/tgs/v4/api.dm +++ b/code/modules/tgs/v4/api.dm @@ -73,7 +73,7 @@ if(cached_json["apiValidateOnly"]) TGS_INFO_LOG("Validating API and exiting...") Export(TGS4_COMM_VALIDATE, list(TGS4_PARAMETER_DATA = "[minimum_required_security_level]")) - del(world) + TerminateWorld() security_level = cached_json["securityLevel"] chat_channels_json_path = cached_json["chatChannelsJson"] @@ -188,7 +188,7 @@ requesting_new_port = TRUE if(!world.OpenPort(0)) //open any port TGS_ERROR_LOG("Unable to open random port to retrieve new port![TGS4_PORT_CRITFAIL_MESSAGE]") - del(world) + TerminateWorld() //request a new port export_lock = FALSE @@ -196,16 +196,16 @@ if(!new_port_json) TGS_ERROR_LOG("No new port response from server![TGS4_PORT_CRITFAIL_MESSAGE]") - del(world) + TerminateWorld() var/new_port = new_port_json[TGS4_PARAMETER_DATA] if(!isnum(new_port) || new_port <= 0) TGS_ERROR_LOG("Malformed new port json ([json_encode(new_port_json)])![TGS4_PORT_CRITFAIL_MESSAGE]") - del(world) + TerminateWorld() if(new_port != world.port && !world.OpenPort(new_port)) TGS_ERROR_LOG("Unable to open port [new_port]![TGS4_PORT_CRITFAIL_MESSAGE]") - del(world) + TerminateWorld() requesting_new_port = FALSE while(export_lock) diff --git a/code/modules/tgs/v4/commands.dm b/code/modules/tgs/v4/commands.dm index d6d3d718d471..25dd6740e3af 100644 --- a/code/modules/tgs/v4/commands.dm +++ b/code/modules/tgs/v4/commands.dm @@ -40,5 +40,5 @@ var/datum/tgs_message_content/result = sc.Run(u, params) result = UpgradeDeprecatedCommandResponse(result, command) - return result?.text + return result ? result.text : TRUE return "Unknown command: [command]!" diff --git a/code/modules/tgs/v5/__interop_version.dm b/code/modules/tgs/v5/__interop_version.dm index 5d3d491a7362..616263098fd3 100644 --- a/code/modules/tgs/v5/__interop_version.dm +++ b/code/modules/tgs/v5/__interop_version.dm @@ -1 +1 @@ -"5.6.1" +"5.8.0" diff --git a/code/modules/tgs/v5/_defines.dm b/code/modules/tgs/v5/_defines.dm index c7213cc24699..1c7d67d20cdf 100644 --- a/code/modules/tgs/v5/_defines.dm +++ b/code/modules/tgs/v5/_defines.dm @@ -5,10 +5,9 @@ #define DMAPI5_TOPIC_DATA "tgs_data" #define DMAPI5_BRIDGE_REQUEST_LIMIT 8198 -#define DMAPI5_TOPIC_REQUEST_LIMIT 65529 -#define DMAPI5_TOPIC_RESPONSE_LIMIT 65528 +#define DMAPI5_TOPIC_REQUEST_LIMIT 65528 +#define DMAPI5_TOPIC_RESPONSE_LIMIT 65529 -#define DMAPI5_BRIDGE_COMMAND_PORT_UPDATE 0 #define DMAPI5_BRIDGE_COMMAND_STARTUP 1 #define DMAPI5_BRIDGE_COMMAND_PRIME 2 #define DMAPI5_BRIDGE_COMMAND_REBOOT 3 @@ -18,6 +17,7 @@ #define DMAPI5_PARAMETER_ACCESS_IDENTIFIER "accessIdentifier" #define DMAPI5_PARAMETER_CUSTOM_COMMANDS "customCommands" +#define DMAPI5_PARAMETER_TOPIC_PORT "topicPort" #define DMAPI5_CHUNK "chunk" #define DMAPI5_CHUNK_PAYLOAD "payload" @@ -48,6 +48,7 @@ #define DMAPI5_RUNTIME_INFORMATION_REVISION "revision" #define DMAPI5_RUNTIME_INFORMATION_TEST_MERGES "testMerges" #define DMAPI5_RUNTIME_INFORMATION_SECURITY_LEVEL "securityLevel" +#define DMAPI5_RUNTIME_INFORMATION_VISIBILITY "visibility" #define DMAPI5_CHAT_UPDATE_CHANNELS "channels" @@ -79,6 +80,7 @@ #define DMAPI5_TOPIC_COMMAND_WATCHDOG_REATTACH 8 #define DMAPI5_TOPIC_COMMAND_SEND_CHUNK 9 #define DMAPI5_TOPIC_COMMAND_RECEIVE_CHUNK 10 +#define DMAPI5_TOPIC_COMMAND_RECEIVE_BROADCAST 11 #define DMAPI5_TOPIC_PARAMETER_COMMAND_TYPE "commandType" #define DMAPI5_TOPIC_PARAMETER_CHAT_COMMAND "chatCommand" @@ -88,6 +90,7 @@ #define DMAPI5_TOPIC_PARAMETER_NEW_INSTANCE_NAME "newInstanceName" #define DMAPI5_TOPIC_PARAMETER_CHAT_UPDATE "chatUpdate" #define DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION "newServerVersion" +#define DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE "broadcastMessage" #define DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE "commandResponse" #define DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE "commandResponseMessage" diff --git a/code/modules/tgs/v5/api.dm b/code/modules/tgs/v5/api.dm index 926ea10a8f27..a5c064a8eaf1 100644 --- a/code/modules/tgs/v5/api.dm +++ b/code/modules/tgs/v5/api.dm @@ -4,11 +4,16 @@ var/instance_name var/security_level + var/visibility var/reboot_mode = TGS_REBOOT_MODE_NORMAL + /// List of chat messages list()s that attempted to be sent during a topic call. To be bundled in the result of the call var/list/intercepted_message_queue + /// List of chat messages list()s that attempted to be sent during a topic call. To be bundled in the result of the call + var/list/offline_message_queue + var/list/custom_commands var/list/test_merges @@ -16,24 +21,32 @@ var/list/chat_channels var/initialized = FALSE + var/initial_bridge_request_received = FALSE + var/datum/tgs_version/interop_version var/chunked_requests = 0 var/list/chunked_topics = list() var/detached = FALSE +/datum/tgs_api/v5/New() + . = ..() + interop_version = version + TGS_DEBUG_LOG("V5 API created: [json_encode(args)]") + /datum/tgs_api/v5/ApiVersion() return new /datum/tgs_version( #include "__interop_version.dm" ) /datum/tgs_api/v5/OnWorldNew(minimum_required_security_level) + TGS_DEBUG_LOG("OnWorldNew()") server_port = world.params[DMAPI5_PARAM_SERVER_PORT] access_identifier = world.params[DMAPI5_PARAM_ACCESS_IDENTIFIER] var/datum/tgs_version/api_version = ApiVersion() - version = null - var/list/bridge_response = Bridge(DMAPI5_BRIDGE_COMMAND_STARTUP, list(DMAPI5_BRIDGE_PARAMETER_MINIMUM_SECURITY_LEVEL = minimum_required_security_level, DMAPI5_BRIDGE_PARAMETER_VERSION = api_version.raw_parameter, DMAPI5_PARAMETER_CUSTOM_COMMANDS = ListCustomCommands())) + version = null // we want this to be the TGS version, not the interop version + var/list/bridge_response = Bridge(DMAPI5_BRIDGE_COMMAND_STARTUP, list(DMAPI5_BRIDGE_PARAMETER_MINIMUM_SECURITY_LEVEL = minimum_required_security_level, DMAPI5_BRIDGE_PARAMETER_VERSION = api_version.raw_parameter, DMAPI5_PARAMETER_CUSTOM_COMMANDS = ListCustomCommands(), DMAPI5_PARAMETER_TOPIC_PORT = GetTopicPort())) if(!istype(bridge_response)) TGS_ERROR_LOG("Failed initial bridge request!") return FALSE @@ -45,10 +58,12 @@ if(runtime_information[DMAPI5_RUNTIME_INFORMATION_API_VALIDATE_ONLY]) TGS_INFO_LOG("DMAPI validation, exiting...") - del(world) + TerminateWorld() - version = new /datum/tgs_version(runtime_information[DMAPI5_RUNTIME_INFORMATION_SERVER_VERSION]) + initial_bridge_request_received = TRUE + version = new /datum/tgs_version(runtime_information[DMAPI5_RUNTIME_INFORMATION_SERVER_VERSION]) // reassigning this because it can change if TGS updates security_level = runtime_information[DMAPI5_RUNTIME_INFORMATION_SECURITY_LEVEL] + visibility = runtime_information[DMAPI5_RUNTIME_INFORMATION_VISIBILITY] instance_name = runtime_information[DMAPI5_RUNTIME_INFORMATION_INSTANCE_NAME] var/list/revisionData = runtime_information[DMAPI5_RUNTIME_INFORMATION_REVISION] @@ -95,18 +110,36 @@ initialized = TRUE return TRUE +/datum/tgs_api/v5/proc/GetTopicPort() +#if defined(OPENDREAM) && defined(OPENDREAM_TOPIC_PORT_EXISTS) + return "[world.opendream_topic_port]" +#else + return null +#endif + /datum/tgs_api/v5/proc/RequireInitialBridgeResponse() - while(!version) + TGS_DEBUG_LOG("RequireInitialBridgeResponse()") + var/logged = FALSE + while(!initial_bridge_request_received) + if(!logged) + TGS_DEBUG_LOG("RequireInitialBridgeResponse: Starting sleep") + logged = TRUE + sleep(1) + TGS_DEBUG_LOG("RequireInitialBridgeResponse: Passed") + /datum/tgs_api/v5/OnInitializationComplete() Bridge(DMAPI5_BRIDGE_COMMAND_PRIME) /datum/tgs_api/v5/OnTopic(T) + TGS_DEBUG_LOG("OnTopic()") RequireInitialBridgeResponse() + TGS_DEBUG_LOG("OnTopic passed bridge request gate") var/list/params = params2list(T) var/json = params[DMAPI5_TOPIC_DATA] if(!json) + TGS_DEBUG_LOG("No \"[DMAPI5_TOPIC_DATA]\" entry found, ignoring...") return FALSE // continue to /world/Topic if(!initialized) @@ -156,7 +189,7 @@ TGS_WARNING_LOG("Received legacy string when a [/datum/tgs_message_content] was expected. Please audit all calls to TgsChatBroadcast, TgsChatTargetedBroadcast, and TgsChatPrivateMessage to ensure they use the new /datum.") return new /datum/tgs_message_content(message) -/datum/tgs_api/v5/ChatBroadcast(datum/tgs_message_content/message, list/channels) +/datum/tgs_api/v5/ChatBroadcast(datum/tgs_message_content/message2, list/channels) if(!length(channels)) channels = ChatChannelInfo() @@ -165,45 +198,51 @@ var/datum/tgs_chat_channel/channel = I ids += channel.id - message = UpgradeDeprecatedChatMessage(message) - - if (!length(channels)) - return - - message = message._interop_serialize() - message[DMAPI5_CHAT_MESSAGE_CHANNEL_IDS] = ids - if(intercepted_message_queue) - intercepted_message_queue += list(message) - else - Bridge(DMAPI5_BRIDGE_COMMAND_CHAT_SEND, list(DMAPI5_BRIDGE_PARAMETER_CHAT_MESSAGE = message)) + SendChatMessageRaw(message2, ids) -/datum/tgs_api/v5/ChatTargetedBroadcast(datum/tgs_message_content/message, admin_only) +/datum/tgs_api/v5/ChatTargetedBroadcast(datum/tgs_message_content/message2, admin_only) var/list/channels = list() for(var/I in ChatChannelInfo()) var/datum/tgs_chat_channel/channel = I if (!channel.is_private_channel && ((channel.is_admin_channel && admin_only) || (!channel.is_admin_channel && !admin_only))) channels += channel.id - message = UpgradeDeprecatedChatMessage(message) + SendChatMessageRaw(message2, channels) + +/datum/tgs_api/v5/ChatPrivateMessage(datum/tgs_message_content/message2, datum/tgs_chat_user/user) + SendChatMessageRaw(message2, list(user.channel.id)) + +/datum/tgs_api/v5/proc/SendChatMessageRaw(datum/tgs_message_content/message2, list/channel_ids) + message2 = UpgradeDeprecatedChatMessage(message2) - if (!length(channels)) + if (!length(channel_ids)) return - message = message._interop_serialize() - message[DMAPI5_CHAT_MESSAGE_CHANNEL_IDS] = channels + var/list/data = message2._interop_serialize() + data[DMAPI5_CHAT_MESSAGE_CHANNEL_IDS] = channel_ids if(intercepted_message_queue) - intercepted_message_queue += list(message) - else - Bridge(DMAPI5_BRIDGE_COMMAND_CHAT_SEND, list(DMAPI5_BRIDGE_PARAMETER_CHAT_MESSAGE = message)) + intercepted_message_queue += list(data) + return -/datum/tgs_api/v5/ChatPrivateMessage(datum/tgs_message_content/message, datum/tgs_chat_user/user) - message = UpgradeDeprecatedChatMessage(message) - message = message._interop_serialize() - message[DMAPI5_CHAT_MESSAGE_CHANNEL_IDS] = list(user.channel.id) - if(intercepted_message_queue) - intercepted_message_queue += list(message) + if(offline_message_queue) + offline_message_queue += list(data) + return + + if(detached) + offline_message_queue = list(data) + + WaitForReattach(FALSE) + + data = offline_message_queue + offline_message_queue = null + + for(var/queued_message in data) + SendChatDataRaw(queued_message) else - Bridge(DMAPI5_BRIDGE_COMMAND_CHAT_SEND, list(DMAPI5_BRIDGE_PARAMETER_CHAT_MESSAGE = message)) + SendChatDataRaw(data) + +/datum/tgs_api/v5/proc/SendChatDataRaw(list/data) + Bridge(DMAPI5_BRIDGE_COMMAND_CHAT_SEND, list(DMAPI5_BRIDGE_PARAMETER_CHAT_MESSAGE = data)) /datum/tgs_api/v5/ChatChannelInfo() RequireInitialBridgeResponse() @@ -211,6 +250,7 @@ return chat_channels.Copy() /datum/tgs_api/v5/proc/DecodeChannels(chat_update_json) + TGS_DEBUG_LOG("DecodeChannels()") var/list/chat_channels_json = chat_update_json[DMAPI5_CHAT_UPDATE_CHANNELS] if(istype(chat_channels_json)) chat_channels.Cut() @@ -235,3 +275,7 @@ /datum/tgs_api/v5/SecurityLevel() RequireInitialBridgeResponse() return security_level + +/datum/tgs_api/v5/Visibility() + RequireInitialBridgeResponse() + return visibility diff --git a/code/modules/tgs/v5/bridge.dm b/code/modules/tgs/v5/bridge.dm index 37f58bcdf632..a0ab35987670 100644 --- a/code/modules/tgs/v5/bridge.dm +++ b/code/modules/tgs/v5/bridge.dm @@ -48,7 +48,9 @@ var/json = CreateBridgeData(command, data, TRUE) var/encoded_json = url_encode(json) - var/url = "http://127.0.0.1:[server_port]/Bridge?[DMAPI5_BRIDGE_DATA]=[encoded_json]" + var/api_prefix = interop_version.minor >= 8 ? "api/" : "" + + var/url = "http://127.0.0.1:[server_port]/[api_prefix]Bridge?[DMAPI5_BRIDGE_DATA]=[encoded_json]" return url /datum/tgs_api/v5/proc/CreateBridgeData(command, list/data, needs_auth) @@ -81,11 +83,16 @@ TGS_ERROR_LOG("Failed bridge request: [bridge_request]") return - var/response_json = file2text(export_response["CONTENT"]) - if(!response_json) + var/content = export_response["CONTENT"] + if(!content) TGS_ERROR_LOG("Failed bridge request, missing content!") return + var/response_json = file2text(content) + if(!response_json) + TGS_ERROR_LOG("Failed bridge request, failed to load content!") + return + var/list/bridge_response = json_decode(response_json) if(!bridge_response) TGS_ERROR_LOG("Failed bridge request, bad json: [response_json]") diff --git a/code/modules/tgs/v5/commands.dm b/code/modules/tgs/v5/commands.dm index a832c81f172d..9557f8a08ed5 100644 --- a/code/modules/tgs/v5/commands.dm +++ b/code/modules/tgs/v5/commands.dm @@ -35,10 +35,10 @@ if(sc) var/datum/tgs_message_content/response = sc.Run(u, params) response = UpgradeDeprecatedCommandResponse(response, command) - + var/list/topic_response = TopicResponse() - topic_response[DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE] = response?.text - topic_response[DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE] = response?._interop_serialize() + topic_response[DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE] = response ? response.text : null + topic_response[DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE] = response ? response._interop_serialize() : null return topic_response return TopicResponse("Unknown custom chat command: [command]!") diff --git a/code/modules/tgs/v5/serializers.dm b/code/modules/tgs/v5/serializers.dm index 7f9bc731b792..3a32848ad512 100644 --- a/code/modules/tgs/v5/serializers.dm +++ b/code/modules/tgs/v5/serializers.dm @@ -1,12 +1,12 @@ /datum/tgs_message_content/proc/_interop_serialize() - return list("text" = text, "embed" = embed?._interop_serialize()) + return list("text" = text, "embed" = embed ? embed._interop_serialize() : null) /datum/tgs_chat_embed/proc/_interop_serialize() CRASH("Base /proc/interop_serialize called on [type]!") /datum/tgs_chat_embed/structure/_interop_serialize() var/list/serialized_fields - if(islist(fields)) + if(istype(fields, /list)) serialized_fields = list() for(var/datum/tgs_chat_embed/field/field as anything in fields) serialized_fields += list(field._interop_serialize()) @@ -16,12 +16,12 @@ "url" = url, "timestamp" = timestamp, "colour" = colour, - "image" = image?._interop_serialize(), - "thumbnail" = thumbnail?._interop_serialize(), - "video" = video?._interop_serialize(), - "footer" = footer?._interop_serialize(), - "provider" = provider?._interop_serialize(), - "author" = author?._interop_serialize(), + "image" = src.image ? src.image._interop_serialize() : null, + "thumbnail" = thumbnail ? thumbnail._interop_serialize() : null, + "video" = video ? video._interop_serialize() : null, + "footer" = footer ? footer._interop_serialize() : null, + "provider" = provider ? provider._interop_serialize() : null, + "author" = author ? author._interop_serialize() : null, "fields" = serialized_fields ) @@ -43,7 +43,7 @@ . = ..() .["iconUrl"] = icon_url .["proxyIconUrl"] = proxy_icon_url - + /datum/tgs_chat_embed/footer/_interop_serialize() return list( "text" = text, diff --git a/code/modules/tgs/v5/topic.dm b/code/modules/tgs/v5/topic.dm index 56c1824fd97d..05e6c4e1b214 100644 --- a/code/modules/tgs/v5/topic.dm +++ b/code/modules/tgs/v5/topic.dm @@ -5,6 +5,7 @@ return response /datum/tgs_api/v5/proc/ProcessTopicJson(json, check_access_identifier) + TGS_DEBUG_LOG("ProcessTopicJson(..., [check_access_identifier])") var/list/result = ProcessRawTopic(json, check_access_identifier) if(!result) result = TopicResponse("Runtime error!") @@ -25,16 +26,20 @@ return response_json /datum/tgs_api/v5/proc/ProcessRawTopic(json, check_access_identifier) + TGS_DEBUG_LOG("ProcessRawTopic(..., [check_access_identifier])") var/list/topic_parameters = json_decode(json) if(!topic_parameters) + TGS_DEBUG_LOG("ProcessRawTopic: json_decode failed") return TopicResponse("Invalid topic parameters json: [json]!"); var/their_sCK = topic_parameters[DMAPI5_PARAMETER_ACCESS_IDENTIFIER] if(check_access_identifier && their_sCK != access_identifier) - return TopicResponse("Failed to decode [DMAPI5_PARAMETER_ACCESS_IDENTIFIER]!") + TGS_DEBUG_LOG("ProcessRawTopic: access identifier check failed") + return TopicResponse("Failed to decode [DMAPI5_PARAMETER_ACCESS_IDENTIFIER] or it does not match!") var/command = topic_parameters[DMAPI5_TOPIC_PARAMETER_COMMAND_TYPE] if(!isnum(command)) + TGS_DEBUG_LOG("ProcessRawTopic: command type check failed") return TopicResponse("Failed to decode [DMAPI5_TOPIC_PARAMETER_COMMAND_TYPE]!") return ProcessTopicCommand(command, topic_parameters) @@ -43,6 +48,7 @@ return "response[payload_id]" /datum/tgs_api/v5/proc/ProcessTopicCommand(command, list/topic_parameters) + TGS_DEBUG_LOG("ProcessTopicCommand([command], ...)") switch(command) if(DMAPI5_TOPIC_COMMAND_CHAT_COMMAND) @@ -55,7 +61,6 @@ return result if(DMAPI5_TOPIC_COMMAND_EVENT_NOTIFICATION) - intercepted_message_queue = list() var/list/event_notification = topic_parameters[DMAPI5_TOPIC_PARAMETER_EVENT_NOTIFICATION] if(!istype(event_notification)) return TopicResponse("Invalid [DMAPI5_TOPIC_PARAMETER_EVENT_NOTIFICATION]!") @@ -66,28 +71,30 @@ var/list/event_parameters = event_notification[DMAPI5_EVENT_NOTIFICATION_PARAMETERS] if(event_parameters && !istype(event_parameters)) - return TopicResponse("Invalid or missing [DMAPI5_EVENT_NOTIFICATION_PARAMETERS]!") + . = TopicResponse("Invalid or missing [DMAPI5_EVENT_NOTIFICATION_PARAMETERS]!") + else + var/list/response = TopicResponse() + . = response + if(event_handler != null) + var/list/event_call = list(event_type) + if(event_parameters) + event_call += event_parameters + + intercepted_message_queue = list() + event_handler.HandleEvent(arglist(event_call)) + response[DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES] = intercepted_message_queue + intercepted_message_queue = null - var/list/event_call = list(event_type) if (event_type == TGS_EVENT_WATCHDOG_DETACH) detached = TRUE chat_channels.Cut() // https://github.com/tgstation/tgstation-server/issues/1490 - if(event_parameters) - event_call += event_parameters - - if(event_handler != null) - event_handler.HandleEvent(arglist(event_call)) - - var/list/response = TopicResponse() - response[DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES] = intercepted_message_queue - intercepted_message_queue = null - return response + return if(DMAPI5_TOPIC_COMMAND_CHANGE_PORT) var/new_port = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_PORT] if (!isnum(new_port) || !(new_port > 0)) - return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_PORT]]") + return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_PORT]") if(event_handler != null) event_handler.HandleEvent(TGS_EVENT_PORT_SWAP, new_port) @@ -122,8 +129,10 @@ return TopicResponse() if(DMAPI5_TOPIC_COMMAND_CHAT_CHANNELS_UPDATE) + TGS_DEBUG_LOG("ProcessTopicCommand: It's a chat update") var/list/chat_update_json = topic_parameters[DMAPI5_TOPIC_PARAMETER_CHAT_UPDATE] if(!istype(chat_update_json)) + TGS_DEBUG_LOG("ProcessTopicCommand: failed \"[DMAPI5_TOPIC_PARAMETER_CHAT_UPDATE]\" check") return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_CHAT_UPDATE]!") DecodeChannels(chat_update_json) @@ -132,13 +141,13 @@ if(DMAPI5_TOPIC_COMMAND_SERVER_PORT_UPDATE) var/new_port = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_PORT] if (!isnum(new_port) || !(new_port > 0)) - return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_PORT]]") + return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_PORT]") server_port = new_port return TopicResponse() if(DMAPI5_TOPIC_COMMAND_HEALTHCHECK) - if(event_handler?.receive_health_checks) + if(event_handler && event_handler.receive_health_checks) event_handler.HandleEvent(TGS_EVENT_HEALTH_CHECK) return TopicResponse() @@ -148,7 +157,7 @@ var/error_message = null if (new_port != null) if (!isnum(new_port) || !(new_port > 0)) - error_message = "Invalid [DMAPI5_TOPIC_PARAMETER_NEW_PORT]]" + error_message = "Invalid [DMAPI5_TOPIC_PARAMETER_NEW_PORT]" else server_port = new_port @@ -156,7 +165,7 @@ if (!istext(new_version_string)) if(error_message != null) error_message += ", " - error_message += "Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION]]" + error_message += "Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION]" else var/datum/tgs_version/new_version = new(new_version_string) if (event_handler) @@ -166,6 +175,7 @@ var/list/reattach_response = TopicResponse(error_message) reattach_response[DMAPI5_PARAMETER_CUSTOM_COMMANDS] = ListCustomCommands() + reattach_response[DMAPI5_PARAMETER_TOPIC_PORT] = GetTopicPort() return reattach_response if(DMAPI5_TOPIC_COMMAND_SEND_CHUNK) @@ -258,4 +268,16 @@ return chunk_to_send + if(DMAPI5_TOPIC_COMMAND_RECEIVE_BROADCAST) + var/message = topic_parameters[DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE] + if (!istext(message)) + return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE]") + + TGS_WORLD_ANNOUNCE(message) + return TopicResponse() + return TopicResponse("Unknown command: [command]") + +/datum/tgs_api/v5/proc/WorldBroadcast(message) + set waitfor = FALSE + TGS_WORLD_ANNOUNCE(message) diff --git a/code/modules/tgs/v5/undefs.dm b/code/modules/tgs/v5/undefs.dm index c679737dfc49..d531d4b7b9dd 100644 --- a/code/modules/tgs/v5/undefs.dm +++ b/code/modules/tgs/v5/undefs.dm @@ -8,7 +8,6 @@ #undef DMAPI5_TOPIC_REQUEST_LIMIT #undef DMAPI5_TOPIC_RESPONSE_LIMIT -#undef DMAPI5_BRIDGE_COMMAND_PORT_UPDATE #undef DMAPI5_BRIDGE_COMMAND_STARTUP #undef DMAPI5_BRIDGE_COMMAND_PRIME #undef DMAPI5_BRIDGE_COMMAND_REBOOT @@ -18,6 +17,7 @@ #undef DMAPI5_PARAMETER_ACCESS_IDENTIFIER #undef DMAPI5_PARAMETER_CUSTOM_COMMANDS +#undef DMAPI5_PARAMETER_TOPIC_PORT #undef DMAPI5_CHUNK #undef DMAPI5_CHUNK_PAYLOAD @@ -48,6 +48,7 @@ #undef DMAPI5_RUNTIME_INFORMATION_REVISION #undef DMAPI5_RUNTIME_INFORMATION_TEST_MERGES #undef DMAPI5_RUNTIME_INFORMATION_SECURITY_LEVEL +#undef DMAPI5_RUNTIME_INFORMATION_VISIBILITY #undef DMAPI5_CHAT_UPDATE_CHANNELS @@ -77,6 +78,9 @@ #undef DMAPI5_TOPIC_COMMAND_SERVER_PORT_UPDATE #undef DMAPI5_TOPIC_COMMAND_HEALTHCHECK #undef DMAPI5_TOPIC_COMMAND_WATCHDOG_REATTACH +#undef DMAPI5_TOPIC_COMMAND_SEND_CHUNK +#undef DMAPI5_TOPIC_COMMAND_RECEIVE_CHUNK +#undef DMAPI5_TOPIC_COMMAND_RECEIVE_BROADCAST #undef DMAPI5_TOPIC_PARAMETER_COMMAND_TYPE #undef DMAPI5_TOPIC_PARAMETER_CHAT_COMMAND @@ -86,6 +90,7 @@ #undef DMAPI5_TOPIC_PARAMETER_NEW_INSTANCE_NAME #undef DMAPI5_TOPIC_PARAMETER_CHAT_UPDATE #undef DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION +#undef DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE #undef DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE #undef DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE diff --git a/code/modules/tgui/states.dm b/code/modules/tgui/states.dm index e43c5c2375a1..0ec570ca9244 100644 --- a/code/modules/tgui/states.dm +++ b/code/modules/tgui/states.dm @@ -64,10 +64,10 @@ //if(!client && !HAS_TRAIT(src, TRAIT_PRESERVE_UI_WITHOUT_CLIENT)) if(!client) return UI_CLOSE - // Disable UIs if unconcious. + // Disable UIs if unconscious. else if(stat) return UI_DISABLED - // Update UIs if incapicitated but concious. + // Update UIs if incapicitated but conscious. else if(is_mob_incapacitated()) return UI_UPDATE return UI_INTERACTIVE @@ -80,13 +80,6 @@ return UI_UPDATE */ -/mob/living/silicon/robot/shared_ui_interaction(src_object) - // Disable UIs if the object isn't installed in the borg AND the borg is either locked, has a dead cell, or no cell. - var/atom/device = src_object - if((istype(device) && device.loc != src) && (!cell || cell.charge <= 0 || lockcharge)) - return UI_DISABLED - return ..() - /** * public * diff --git a/code/modules/tgui/states/default.dm b/code/modules/tgui/states/default.dm index fa0a90f613f4..2ad35ef92143 100644 --- a/code/modules/tgui/states/default.dm +++ b/code/modules/tgui/states/default.dm @@ -25,12 +25,3 @@ GLOBAL_DATUM_INIT(default_state, /datum/ui_state/default, new) //if(. == UI_INTERACTIVE && !src.IsAdvancedToolUser())) // unhandy living mobs can only look, not touch. // return UI_UPDATE -/mob/living/silicon/ai/default_can_use_topic(src_object) - . = shared_ui_interaction(src_object) - if(. < UI_INTERACTIVE) - return - - // The AI can interact with anything it can see nearby, or with cameras while wireless control is enabled. - if(!control_disabled && can_see(src_object)) - return UI_INTERACTIVE - return UI_CLOSE diff --git a/code/modules/tgui/status_composers.dm b/code/modules/tgui/status_composers.dm index 6d7b5897863e..ba1b29d8152e 100644 --- a/code/modules/tgui/status_composers.dm +++ b/code/modules/tgui/status_composers.dm @@ -56,17 +56,6 @@ /mob/living/silicon/proc/get_ui_access(atom/source) return UI_INTERACTIVE // Ubiquitous networking. Do not abuse. -/// Returns UI_INTERACTIVE if the user is conscious and lying down. -/// Returns UI_UPDATE otherwise. -/proc/ui_status_user_is_conscious_and_lying_down(mob/user) - if (!isliving(user)) - return UI_UPDATE - - var/mob/living/living_user = user - return (living_user.lying && living_user.stat == CONSCIOUS) \ - ? UI_INTERACTIVE \ - : UI_UPDATE - /// Return UI_INTERACTIVE if the user is strictly adjacent to the target atom, whether they can see it or not. /// Return UI_CLOSE otherwise. /proc/ui_status_user_strictly_adjacent(mob/user, atom/target) diff --git a/code/modules/tgui/tgui-say/modal.dm b/code/modules/tgui/tgui-say/modal.dm index b959019b894f..f1e87e001cef 100644 --- a/code/modules/tgui/tgui-say/modal.dm +++ b/code/modules/tgui/tgui-say/modal.dm @@ -83,7 +83,7 @@ if(!payload?["channel"]) CRASH("No channel provided to an open TGUI-Say") window_open = TRUE - if(payload["channel"] != OOC_CHANNEL && payload["channel"] != LOOC_CHANNEL && payload["channel"] != MOD_CHANNEL && payload["channel"] != ADMIN_CHANNEL && payload["channel"] != MENTOR_CHANNEL) + if(payload["channel"] != OOC_CHANNEL && payload["channel"] != LOOC_CHANNEL && payload["channel"] != ADMIN_CHANNEL && payload["channel"] != MENTOR_CHANNEL) start_thinking() return TRUE diff --git a/code/modules/tgui/tgui-say/speech.dm b/code/modules/tgui/tgui-say/speech.dm index f278361ac0d0..7bce349e1b7f 100644 --- a/code/modules/tgui/tgui-say/speech.dm +++ b/code/modules/tgui/tgui-say/speech.dm @@ -47,9 +47,6 @@ if(LOOC_CHANNEL) client.looc(entry) return TRUE - if(MOD_CHANNEL) - client.cmd_mod_say(entry) - return TRUE if(ADMIN_CHANNEL) client.cmd_admin_say(entry) return TRUE @@ -94,7 +91,7 @@ return TRUE if(type == "force") var/target_channel = payload["channel"] - if(target_channel == ME_CHANNEL || target_channel == OOC_CHANNEL || target_channel == LOOC_CHANNEL || target_channel == MOD_CHANNEL) + if(target_channel == ME_CHANNEL || target_channel == OOC_CHANNEL || target_channel == LOOC_CHANNEL || target_channel == ADMIN_CHANNEL) target_channel = SAY_CHANNEL // No ooc leaks delegate_speech(alter_entry(payload), target_channel) return TRUE diff --git a/code/modules/tgui/tgui_number_input.dm b/code/modules/tgui/tgui_number_input.dm index 9c447ecd5a03..4c06b5333b6d 100644 --- a/code/modules/tgui/tgui_number_input.dm +++ b/code/modules/tgui/tgui_number_input.dm @@ -31,7 +31,7 @@ qdel(number_input) ///A clone of tgui_input_number that defaults to accepting negative inputs too. -/proc/tgui_input_real_number(mob/user, message, title = "Number Input", default = 0, max_value = 16777216, min_value = -16777216, timeout = 0, integer_only = FALSE) +/proc/tgui_input_real_number(mob/user, message, title = "Number Input", default = 0, max_value = SHORT_REAL_LIMIT, min_value = -SHORT_REAL_LIMIT, timeout = 0, integer_only = FALSE) return tgui_input_number(user, message, title, default, max_value, min_value, timeout, integer_only) /** * Creates an asynchronous TGUI number input window with an associated callback. @@ -158,11 +158,13 @@ return switch(action) if("submit") - if(!isnum(params["entry"])) - CRASH("A non number was input into tgui input number by [usr]") var/choice = params["entry"] + if(!isnum(choice)) + CRASH("A non number was input into tgui input number by [usr]") + if(choice != choice) //isnan + CRASH("A NaN was input into tgui input number by [usr]") if(integer_only) - choice = round(params["entry"]) + choice = round(choice) if(choice > max_value) CRASH("A number greater than the max value was input into tgui input number by [usr]") if(choice < min_value) diff --git a/code/modules/tgui_input/text.dm b/code/modules/tgui_input/text.dm index 2a9b7f6dfff4..f60691860d79 100644 --- a/code/modules/tgui_input/text.dm +++ b/code/modules/tgui_input/text.dm @@ -14,8 +14,9 @@ * * multiline - Bool that determines if the input box is much larger. Good for large messages, laws, etc. * * encode - Toggling this determines if input is filtered via html_encode. Setting this to FALSE gives raw input. * * timeout - The timeout of the textbox, after which the modal will close and qdel itself. Set to zero for no timeout. + * * trim - Whether or not to trim leading and trailing whitespace from your input. Defaults to TRUE */ -/proc/tgui_input_text(mob/user, message = "", title = "Text Input", default, max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = TRUE, timeout = 0) +/proc/tgui_input_text(mob/user, message = "", title = "Text Input", default, max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = TRUE, timeout = 0, trim = TRUE) if (!user) user = usr if (!istype(user)) @@ -39,7 +40,7 @@ return input(user, message, title, default) as text|null */ - var/datum/tgui_input_text/text_input = new(user, message, title, default, max_length, multiline, encode, timeout) + var/datum/tgui_input_text/text_input = new(user, message, title, default, max_length, multiline, encode, timeout, trim) text_input.tgui_interact(user) text_input.wait() if (text_input) @@ -73,14 +74,17 @@ var/timeout /// The title of the TGUI window var/title + /// Whether to trim leading and trailing spaces + var/trim -/datum/tgui_input_text/New(mob/user, message, title, default, max_length, multiline, encode, timeout) +/datum/tgui_input_text/New(mob/user, message, title, default, max_length, multiline, encode, timeout, trim) src.default = default src.encode = encode src.max_length = max_length src.message = message src.multiline = multiline src.title = title + src.trim = trim if (timeout) src.timeout = timeout start_time = world.time @@ -141,7 +145,7 @@ CRASH("[usr] typed a text string longer than the max length") if(encode && (length(html_encode(params["entry"])) > max_length)) to_chat(usr, SPAN_NOTICE("Your message was clipped due to special character usage.")) - set_entry(params["entry"]) + set_entry(params["entry"], trim) closed = TRUE SStgui.close_uis(src) return TRUE @@ -156,7 +160,10 @@ * This can sometimes result in a string that is longer than the max length. * If the string is longer than the max length, it will be clipped. */ -/datum/tgui_input_text/proc/set_entry(entry) +/datum/tgui_input_text/proc/set_entry(entry, trim) if(!isnull(entry)) var/converted_entry = encode ? html_encode(entry) : entry - src.entry = trim(converted_entry, max_length) + if(trim) + src.entry = trim(converted_entry) + else + src.entry = converted_entry diff --git a/code/modules/tgui_panel/audio.dm b/code/modules/tgui_panel/audio.dm index 680696159943..d66421df5348 100644 --- a/code/modules/tgui_panel/audio.dm +++ b/code/modules/tgui_panel/audio.dm @@ -3,8 +3,6 @@ * SPDX-License-Identifier: MIT */ -/// Admin music volume, from 0 to 1. -/client/var/admin_music_volume = 1 /** * public @@ -22,8 +20,9 @@ /datum/tgui_panel/proc/play_music(url, extra_data) if(!is_ready()) return - if(!findtext(url, GLOB.is_http_protocol)) - return + // Commented to allow playing via simple asset transport. Just check when calling. +// if(!findtext(url, GLOB.is_http_protocol)) +// return var/list/payload = list() if(length(extra_data) > 0) for(var/key in extra_data) diff --git a/code/modules/tgui_panel/tgui_panel.dm b/code/modules/tgui_panel/tgui_panel.dm index 9fb8b02b0196..f33f190d80e0 100644 --- a/code/modules/tgui_panel/tgui_panel.dm +++ b/code/modules/tgui_panel/tgui_panel.dm @@ -85,9 +85,10 @@ ), )) return TRUE - if(type == "audio/setAdminMusicVolume") - client.admin_music_volume = payload["volume"] - return TRUE +// Deprecated due to removal of old sound play commands +// if(type == "audio/setAdminMusicVolume") +// client.admin_music_volume = payload["volume"] +// return TRUE if(type == "telemetry") analyze_telemetry(payload) return TRUE diff --git a/code/modules/tooltip/tooltip.dm b/code/modules/tooltip/tooltip.dm index b3dc005c0887..e668196d383a 100644 --- a/code/modules/tooltip/tooltip.dm +++ b/code/modules/tooltip/tooltip.dm @@ -98,10 +98,12 @@ Notes: last_target = null /datum/tooltip/proc/do_hide() - winshow(owner, control, FALSE) + if(owner) + winshow(owner, control, FALSE) /datum/tooltip/Destroy(force, ...) last_target = null + owner = null return ..() //Open a tooltip for user, at a location based on params diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index be92afffb898..3967ee70e391 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -41,7 +41,7 @@ /// Intended to be used in the manner of `TEST_FOCUS(/datum/unit_test/math)` #define TEST_FOCUS(test_path) ##test_path { focus = TRUE; } -/// Logs a noticable message on GitHub, but will not mark as an error. +/// Logs a noticeable message on GitHub, but will not mark as an error. /// Use this when something shouldn't happen and is of note, but shouldn't block CI. /// Does not mark the test as failed. #define TEST_NOTICE(source, message) source.log_for_test((##message), "notice", __FILE__, __LINE__) @@ -74,17 +74,23 @@ /// A trait source when adding traits through unit tests #define TRAIT_SOURCE_UNIT_TESTS "unit_tests" +// Unit tests +#include "autowiki.dm" +#include "check_runtimes.dm" #include "create_and_destroy.dm" -#include "focus_only_tests.dm" +#include "emote_panels.dm" #include "missing_icons.dm" #include "resist.dm" +#include "spawn_humans.dm" #include "spritesheets.dm" #include "subsystem_init.dm" #include "tgui_create_message.dm" #include "timer_sanity.dm" +#include "tutorials.dm" + +// Unit tests backend +#include "focus_only_tests.dm" #include "unit_test.dm" -#include "spawn_humans.dm" -#include "check_runtimes.dm" #undef TEST_ASSERT #undef TEST_ASSERT_EQUAL diff --git a/code/modules/unit_tests/autowiki.dm b/code/modules/unit_tests/autowiki.dm new file mode 100644 index 000000000000..65ec2e228dd2 --- /dev/null +++ b/code/modules/unit_tests/autowiki.dm @@ -0,0 +1,35 @@ +/// Tests that all autowikis generate something without runtiming +/datum/unit_test/autowiki + +/datum/unit_test/autowiki/Run() + TEST_ASSERT(istext(generate_autowiki_output()), "generate_autowiki_output() did not finish successfully!") + +/// Test that `include_template` produces reasonable results +/datum/unit_test/autowiki_include_template + +/datum/unit_test/autowiki_include_template/Run() + var/datum/autowiki/autowiki_api = new + + TEST_ASSERT_EQUAL( \ + autowiki_api.include_template("Template"), \ + "{{Template}}", \ + "Basic template did not format correctly" \ + ) + + TEST_ASSERT_EQUAL( \ + autowiki_api.include_template("Template", list("name" = "Mothblocks")), \ + "{{Template|name=Mothblocks}}", \ + "Template with basic arguments did not format correctly" \ + ) + + TEST_ASSERT_EQUAL( \ + autowiki_api.include_template("Template", list("name" = autowiki_api.escape_value("P|peline"))), \ + "{{Template|name=P{{!}}peline}}", \ + "Template with escaped arguments did not format correctly" \ + ) + + TEST_ASSERT_EQUAL( \ + autowiki_api.include_template("Template", list("food" = list("fruit", "candy"))), \ + "{{Template|food1=fruit|food2=candy}}", \ + "Template with array arguments did not format correctly" \ + ) diff --git a/code/modules/unit_tests/create_and_destroy.dm b/code/modules/unit_tests/create_and_destroy.dm index 46f900eee71e..55711ba7ecc6 100644 --- a/code/modules/unit_tests/create_and_destroy.dm +++ b/code/modules/unit_tests/create_and_destroy.dm @@ -12,10 +12,15 @@ GLOBAL_VAR_INIT(running_create_and_destroy, FALSE) /mob/living/carbon, /obj/effect/node, /obj/item/seeds/cutting, + //lighting singleton + /mob/dview, // These use walkaway() after initialization, which causes false positives /obj/item/explosive/grenade/flashbang/cluster/segment, /obj/item/explosive/grenade/flashbang/cluster_piece, /obj/effect/fake_attacker, + /atom/movable/lighting_mask, //leave it alone + //This is meant to fail extremely loud every single time it occurs in any environment in any context, and it falsely alarms when this unit test iterates it. Let's not spawn it in. + /obj/merge_conflict_marker, ) //This turf existing is an error in and of itself ignore += typesof(/turf/baseturf_skipover) diff --git a/code/modules/unit_tests/emote_panels.dm b/code/modules/unit_tests/emote_panels.dm new file mode 100644 index 000000000000..87bbd5e15620 --- /dev/null +++ b/code/modules/unit_tests/emote_panels.dm @@ -0,0 +1,11 @@ +/// Test that all emotes for Working Joes & Yautja have a category +/datum/unit_test/emote_panels + +/datum/unit_test/emote_panels/Run() + for(var/datum/emote/living/carbon/human/synthetic/working_joe/wj_emote as anything in subtypesof(/datum/emote/living/carbon/human/synthetic/working_joe)) + if(!initial(wj_emote.category)) + TEST_FAIL("Emote [wj_emote] did not have a category!") + + for(var/datum/emote/living/carbon/human/yautja/yautja_emote as anything in subtypesof(/datum/emote/living/carbon/human/yautja)) + if(!initial(yautja_emote.category)) + TEST_FAIL("Emote [yautja_emote] did not have a category!") diff --git a/code/modules/unit_tests/missing_icons.dm b/code/modules/unit_tests/missing_icons.dm index 53abbed70d6a..44f135ae34fb 100644 --- a/code/modules/unit_tests/missing_icons.dm +++ b/code/modules/unit_tests/missing_icons.dm @@ -19,6 +19,7 @@ /datum/unit_test/missing_icons/Run() generate_possible_icon_states_list() generate_possible_icon_states_list("icons/effects/") + generate_possible_icon_states_list("icons/mobs/") if(additional_icon_location) generate_possible_icon_states_list(additional_icon_location) diff --git a/code/modules/unit_tests/tutorials.dm b/code/modules/unit_tests/tutorials.dm new file mode 100644 index 000000000000..d835a4f272cb --- /dev/null +++ b/code/modules/unit_tests/tutorials.dm @@ -0,0 +1,19 @@ +/datum/unit_test/tutorials + +/datum/unit_test/tutorials/Run() + var/datum/tutorial/base_path = /datum/tutorial + for(var/datum/tutorial/tutorial_path as anything in subtypesof(base_path)) + if(initial(tutorial_path.parent_path) == tutorial_path) + continue + + // Make sure these variables are overridden on any subtypes. + TEST_ASSERT_NOTEQUAL(initial(tutorial_path.name), initial(base_path.name), + "[tutorial_path] does not have a name set.") + TEST_ASSERT_NOTEQUAL(initial(tutorial_path.tutorial_id), initial(base_path.tutorial_id), + "[tutorial_path] does not have a tutorial_id set.") + TEST_ASSERT_NOTEQUAL(initial(tutorial_path.desc), initial(base_path.desc), + "[tutorial_path] does not have a desc set.") + TEST_ASSERT_NOTEQUAL(initial(tutorial_path.icon_state), initial(base_path.icon_state), + "[tutorial_path] does not have an icon_state set.") + +// TODO: Add a test verifying that a basic tutorial can be started and completed. (Requires unit test client handling) diff --git a/code/modules/vehicles/apc/apc.dm b/code/modules/vehicles/apc/apc.dm index 2d0c823dd638..24b137a6804a 100644 --- a/code/modules/vehicles/apc/apc.dm +++ b/code/modules/vehicles/apc/apc.dm @@ -34,7 +34,6 @@ GLOBAL_LIST_EMPTY(command_apc_list) movement_sound = 'sound/vehicles/tank_driving.ogg' - luminosity = 7 var/gunner_view_buff = 10 hardpoints_allowed = list( @@ -257,9 +256,16 @@ GLOBAL_LIST_EMPTY(command_apc_list) handle_direction(APC) APC.update_icon() + return APC + /obj/effect/vehicle_spawner/apc/unarmed/load_hardpoints(obj/vehicle/multitile/apc/V) return +/obj/effect/vehicle_spawner/apc/unarmed/broken/spawn_vehicle() + var/obj/vehicle/multitile/apc/apc = ..() + load_damage(apc) + apc.update_icon() + //PRESET: default hardpoints, destroyed /obj/effect/vehicle_spawner/apc/unarmed/decrepit/spawn_vehicle() var/obj/vehicle/multitile/apc/unarmed/APC = new (loc) diff --git a/code/modules/vehicles/apc/apc_command.dm b/code/modules/vehicles/apc/apc_command.dm index c5bd55928362..e0862ae4f2ab 100644 --- a/code/modules/vehicles/apc/apc_command.dm +++ b/code/modules/vehicles/apc/apc_command.dm @@ -59,7 +59,7 @@ continue SSminimaps.remove_marker(current_xeno) - current_xeno.add_minimap_marker(MINIMAP_FLAG_USCM|MINIMAP_FLAG_XENO) + current_xeno.add_minimap_marker(MINIMAP_FLAG_USCM|get_minimap_flag_for_faction(current_xeno.hivenumber)) minimap_added += WEAKREF(current_xeno) else if(WEAKREF(current_xeno) in minimap_added) @@ -184,9 +184,9 @@ //stole my own code from techpod_vendor /obj/vehicle/multitile/apc/command/proc/get_access_permission(mob/living/carbon/human/user) - if(SSticker.mode == GAMEMODE_WHISKEY_OUTPOST || master_mode == GAMEMODE_WHISKEY_OUTPOST) + if(SSticker.mode == GAMEMODE_WHISKEY_OUTPOST || GLOB.master_mode == GAMEMODE_WHISKEY_OUTPOST) return TRUE - else if(SSticker.mode == "Distress Signal" || master_mode == "Distress Signal") + else if(SSticker.mode == "Distress Signal" || GLOB.master_mode == "Distress Signal") if(techpod_access_settings_override) return TRUE else if(user.get_target_lock(techpod_faction_requirement)) diff --git a/code/modules/vehicles/apc/interior.dm b/code/modules/vehicles/apc/interior.dm index d3947db2b8c8..86b33a89c885 100644 --- a/code/modules/vehicles/apc/interior.dm +++ b/code/modules/vehicles/apc/interior.dm @@ -61,7 +61,7 @@ if(!SG_seat) SG_seat = locate() in get_turf(src) if(!SG_seat) - . += SPAN_WARNING("ERROR HAS OCCURED! NO SEAT FOUND, TELL A DEV!") + . += SPAN_WARNING("ERROR HAS OCCURRED! NO SEAT FOUND, TELL A DEV!") return for(var/obj/item/hardpoint/special/firing_port_weapon/FPW in SG_seat.vehicle.hardpoints) if(FPW.allowed_seat == SG_seat.seat) @@ -76,7 +76,7 @@ if(!SG_seat) SG_seat = locate() in get_turf(src) if(!SG_seat) - to_chat(H, SPAN_WARNING("ERROR HAS OCCURED! NO SEAT FOUND, TELL A DEV!")) + to_chat(H, SPAN_WARNING("ERROR HAS OCCURRED! NO SEAT FOUND, TELL A DEV!")) return if(!SG_seat.buckled_mob && !H.buckled) SG_seat.do_buckle(H, H) diff --git a/code/modules/vehicles/cargo_train.dm b/code/modules/vehicles/cargo_train.dm index ac22c0e79812..40085ad078ea 100644 --- a/code/modules/vehicles/cargo_train.dm +++ b/code/modules/vehicles/cargo_train.dm @@ -4,11 +4,13 @@ icon = 'icons/obj/vehicles/vehicles.dmi' icon_state = "cargo_engine" on = 0 - luminosity = 5 //Pretty strong because why not powered = 1 locked = 0 charge_use = 15 + light_system = MOVABLE_LIGHT + light_range = 5 + var/car_limit = 3 //how many cars an engine can pull before performance degrades active_engines = 1 var/obj/item/key/cargo_train/key @@ -24,7 +26,7 @@ name = "cargo train trolley" icon = 'icons/obj/vehicles/vehicles.dmi' icon_state = "cargo_trailer" - luminosity = 0 + light_range = 0 anchored = FALSE locked = 0 can_buckle = FALSE @@ -38,6 +40,10 @@ key = new() var/image/I = new(icon = 'icons/obj/vehicles/vehicles.dmi', icon_state = "cargo_engine_overlay", layer = src.layer + 0.2) //over mobs overlays += I + + if(light_range) + set_light_on(TRUE) + turn_off() //so engine verbs are correctly set /obj/vehicle/train/cargo/engine/Move() diff --git a/code/modules/vehicles/hardpoints/hardpoint.dm b/code/modules/vehicles/hardpoints/hardpoint.dm index 2fc49384075b..21e3e4b29f89 100644 --- a/code/modules/vehicles/hardpoints/hardpoint.dm +++ b/code/modules/vehicles/hardpoints/hardpoint.dm @@ -1,22 +1,20 @@ -/* - Hardpoints are any items that attach to a base vehicle, such as wheels/treads, support systems and guns -*/ - +/** + * Hardpoints are any items that attach to a base vehicle, such as wheels/treads, support systems and guns + */ /obj/item/hardpoint //------MAIN VARS---------- - // Which slot is this hardpoint in - // Purely to check for conflicting hardpoints + /// Which slot is this hardpoint in. Purely to check for conflicting hardpoints. var/slot - // The vehicle this hardpoint is installed on + /// The vehicle this hardpoint is installed on. var/obj/vehicle/multitile/owner health = 100 w_class = SIZE_LARGE - // Determines how much of any incoming damage is actually taken + /// Determines how much of any incoming damage is actually taken. var/damage_multiplier = 1 - // Origin coords of the hardpoint relative to the vehicle + /// Origin coords of the hardpoint relative to the vehicle. var/list/origins = list(0, 0) var/list/buff_multipliers @@ -32,13 +30,13 @@ var/disp_icon //This also differentiates tank vs apc vs other var/disp_icon_state - // List of pixel offsets for each direction + /// List of pixel offsets for each direction. var/list/px_offsets - //visual layer of hardpoint when on vehicle + /// Visual layer of hardpoint when on vehicle. var/hdpt_layer = HDPT_LAYER_WHEELS - // List of offsets for where to place the muzzle flash for each direction + /// List of offsets for where to place the muzzle flash for each direction. var/list/muzzle_flash_pos = list( "1" = list(0, 0), "2" = list(0, 0), @@ -54,33 +52,23 @@ var/const_mz_offset_y = 0 //------SOUNDS VARS---------- - // Sounds to play when the module activated/fired + /// Sounds to play when the module activated/fired. var/list/activation_sounds //------INTERACTION VARS---------- - //which seat can use this module + /// Which seat can use this module. var/allowed_seat = VEHICLE_GUNNER - //Cooldown on use of the hardpoint - var/cooldown = 100 - var/next_use = 0 - - //whether hardpoint has activatable ability like shooting or zooming + /// Whether hardpoint has activatable ability like shooting or zooming. var/activatable = 0 - //used to prevent welder click spam + /// Used to prevent welder click spam. var/being_repaired = FALSE - //current user. We can have only one user at a time. Better never change that - var/user - - //Accuracy of the hardpoint. (which is, in fact, a scatter. Need to change this system) - var/accuracy = 1 - - // The firing arc of this hardpoint + /// The firing arc of this hardpoint. var/firing_arc = 0 //in degrees. 0 skips whole arc of fire check // Muzzleflash @@ -91,17 +79,53 @@ //------AMMUNITION VARS---------- - //Currently loaded ammo that we shoot from + /// Currently loaded ammo that we shoot from. var/obj/item/ammo_magazine/hardpoint/ammo - //spare magazines that we can reload from + /// Spare magazines that we can reload from. var/list/backup_clips - //maximum amount of spare mags + /// Maximum amount of spare mags. var/max_clips = 0 /// An assoc list in the format list(/datum/element/bullet_trait_to_give = list(...args)) - /// that will be given to a projectile fired from the hardpoint + /// that will be given to a projectile fired from the hardpoint. var/list/list/traits_to_give + /// How much the bullet scatters when fired, in degrees. + var/scatter = 0 + /// How many bullets the gun fired while burst firing/auto firing. + var/shots_fired = 0 + /// Delay before a new firing sequence can start. + COOLDOWN_DECLARE(fire_cooldown) + + // Firemodes. + /// Current selected firemode of the gun. + var/gun_firemode = GUN_FIREMODE_SEMIAUTO + /// List of allowed firemodes. + var/list/gun_firemode_list = list( + GUN_FIREMODE_SEMIAUTO, + ) + + // Semi-auto and full-auto. + /// For regular shots, how long to wait before firing again. Use modify_fire_delay and set_fire_delay instead of modifying this on the fly + var/fire_delay = 0 + /// The multiplier for how much slower this should fire in automatic mode. 1 is normal, 1.2 is 20% slower, 2 is 100% slower, etc. Protected due to it never needing to be edited. + var/autofire_slow_mult = 1 + /// If the gun is currently auto firing. + var/auto_firing = FALSE + + // Burst fire. + /// How many shots can the weapon shoot in burst? Anything less than 2 and you cannot toggle burst. Use modify_burst_amount and set_burst_amount instead of modifying this + var/burst_amount = 1 + /// The delay in between shots. Lower = less delay = faster. Use modify_burst_delay and set_burst_delay instead of modifying this + var/burst_delay = 1 + /// When burst-firing, this number is extra time before the weapon can fire again. + var/extra_delay = 0 + /// If the gun is currently burst firing. + var/burst_firing = FALSE + + /// Currently selected target to fire at. Set with set_target(). + var/atom/target + //----------------------------- //------GENERAL PROCS---------- //----------------------------- @@ -109,6 +133,7 @@ /obj/item/hardpoint/Initialize() . = ..() set_bullet_traits() + AddComponent(/datum/component/automatedfire/autofire, fire_delay, burst_delay, burst_amount, gun_firemode, autofire_slow_mult, CALLBACK(src, PROC_REF(set_burst_firing)), CALLBACK(src, PROC_REF(reset_fire)), CALLBACK(src, PROC_REF(fire_wrapper)), callback_set_firing = CALLBACK(src, PROC_REF(set_auto_firing))) /obj/item/hardpoint/Destroy() if(owner) @@ -117,7 +142,7 @@ owner = null QDEL_NULL_LIST(backup_clips) QDEL_NULL(ammo) - + set_target(null) return ..() /obj/item/hardpoint/ex_act(severity) @@ -134,7 +159,7 @@ return /obj/item/hardpoint/proc/generate_bullet(mob/user, turf/origin_turf) - var/obj/item/projectile/P = new(origin_turf, create_cause_data(initial(name), user)) + var/obj/projectile/P = new(origin_turf, create_cause_data(initial(name), user)) P.generate_bullet(new ammo.default_ammo) // Apply bullet traits from gun for(var/entry in traits_to_give) @@ -166,37 +191,64 @@ /obj/item/hardpoint/proc/get_integrity_percent() return 100.0*health/initial(health) -/obj/item/hardpoint/proc/on_install(obj/vehicle/multitile/V) - apply_buff(V) - return +/// Apply hardpoint effects to vehicle and self. +/obj/item/hardpoint/proc/on_install(obj/vehicle/multitile/vehicle) + if(!vehicle) //in loose holder + return + RegisterSignal(vehicle, COMSIG_GUN_RECALCULATE_ATTACHMENT_BONUSES, PROC_REF(recalculate_hardpoint_bonuses)) + apply_buff(vehicle) -/obj/item/hardpoint/proc/on_uninstall(obj/vehicle/multitile/V) - remove_buff(V) - return +/// Remove hardpoint effects from vehicle and self. +/obj/item/hardpoint/proc/on_uninstall(obj/vehicle/multitile/vehicle) + if(!vehicle) //in loose holder + return + UnregisterSignal(vehicle, COMSIG_GUN_RECALCULATE_ATTACHMENT_BONUSES) + remove_buff(vehicle) + //resetting values like set_gun_config_values() would be tidy, but unnecessary as it gets recalc'd on install anyway -//applying passive buffs like damage type resistance, speed, accuracy, cooldowns -/obj/item/hardpoint/proc/apply_buff(obj/vehicle/multitile/V) +/// Applying passive buffs like damage type resistance, speed, accuracy, cooldowns. +/obj/item/hardpoint/proc/apply_buff(obj/vehicle/multitile/vehicle) if(buff_applied) return if(LAZYLEN(type_multipliers)) for(var/type in type_multipliers) - V.dmg_multipliers[type] *= LAZYACCESS(type_multipliers, type) + vehicle.dmg_multipliers[type] *= LAZYACCESS(type_multipliers, type) if(LAZYLEN(buff_multipliers)) for(var/type in buff_multipliers) - V.misc_multipliers[type] *= LAZYACCESS(buff_multipliers, type) + vehicle.misc_multipliers[type] *= LAZYACCESS(buff_multipliers, type) buff_applied = TRUE + SEND_SIGNAL(vehicle, COMSIG_GUN_RECALCULATE_ATTACHMENT_BONUSES) -//removing buffs -/obj/item/hardpoint/proc/remove_buff(obj/vehicle/multitile/V) +/// Removing passive buffs like damage type resistance, speed, accuracy, cooldowns. +/obj/item/hardpoint/proc/remove_buff(obj/vehicle/multitile/vehicle) if(!buff_applied) return if(LAZYLEN(type_multipliers)) for(var/type in type_multipliers) - V.dmg_multipliers[type] *= 1 / LAZYACCESS(type_multipliers, type) + vehicle.dmg_multipliers[type] *= 1 / LAZYACCESS(type_multipliers, type) if(LAZYLEN(buff_multipliers)) for(var/type in buff_multipliers) - V.misc_multipliers[type] *= 1 / LAZYACCESS(buff_multipliers, type) + vehicle.misc_multipliers[type] *= 1 / LAZYACCESS(buff_multipliers, type) buff_applied = FALSE + SEND_SIGNAL(vehicle, COMSIG_GUN_RECALCULATE_ATTACHMENT_BONUSES) + +/// Recalculates hardpoint values based on vehicle modifiers. +/obj/item/hardpoint/proc/recalculate_hardpoint_bonuses() + scatter = initial(scatter) / owner.misc_multipliers["accuracy"] + var/cooldown_mult = owner.misc_multipliers["cooldown"] + set_fire_delay(initial(fire_delay) * cooldown_mult) + set_burst_delay(initial(burst_delay) * cooldown_mult) + extra_delay = initial(extra_delay) * cooldown_mult + +/// Setter for fire_delay. +/obj/item/hardpoint/proc/set_fire_delay(value) + fire_delay = value + SEND_SIGNAL(src, COMSIG_GUN_AUTOFIREDELAY_MODIFIED, fire_delay) + +/// Setter for burst_delay. +/obj/item/hardpoint/proc/set_burst_delay(value) + burst_delay = value + SEND_SIGNAL(src, COMSIG_GUN_BURST_SHOT_DELAY_MODIFIED, burst_delay) //this proc called on each move of vehicle /obj/item/hardpoint/proc/on_move(turf/old, turf/new_turf, move_dir) @@ -253,13 +305,12 @@ return data -// Traces backwards from the gun origin to the vehicle to check for obstacles between the vehicle and the muzzle -/obj/item/hardpoint/proc/clear_los(atom/A) - +/// Traces backwards from the gun origin to the vehicle to check for obstacles between the vehicle and the muzzle. +/obj/item/hardpoint/proc/clear_los() if(origins[1] == 0 && origins[2] == 0) //skipping check for modules we don't need this return TRUE - var/turf/muzzle_turf = locate(owner.x + origins[1], owner.y + origins[2], owner.z) + var/turf/muzzle_turf = get_origin_turf() var/turf/checking_turf = muzzle_turf while(!(owner in checking_turf)) @@ -268,24 +319,24 @@ return FALSE // Ensure that we can pass over all objects in the turf - for(var/obj/O in checking_turf) + for(var/obj/object in checking_turf) // Since vehicles are multitile the - if(O == owner) + if(object == owner) continue // Non-dense objects are irrelevant - if(!O.density) + if(!object.density) continue // Make sure we can pass object from all directions - if(!(O.pass_flags.flags_can_pass_all & PASS_OVER_THROW_ITEM)) - if(!(O.flags_atom & ON_BORDER)) + if(!HAS_FLAG(object.pass_flags.flags_can_pass_all, PASS_OVER_THROW_ITEM)) + if(!HAS_FLAG(object.flags_atom, ON_BORDER)) return FALSE //If we're behind the object, check the behind pass flags - else if(dir == O.dir && !(O.pass_flags.flags_can_pass_behind & PASS_OVER_THROW_ITEM)) + else if(dir == object.dir && !HAS_FLAG(object.pass_flags.flags_can_pass_behind, PASS_OVER_THROW_ITEM)) return FALSE //If we're in front, check front pass flags - else if(dir == turn(O.dir, 180) && !(O.pass_flags.flags_can_pass_front & PASS_OVER_THROW_ITEM)) + else if(dir == turn(object.dir, 180) && !HAS_FLAG(object.pass_flags.flags_can_pass_front, PASS_OVER_THROW_ITEM)) return FALSE // Trace back towards the vehicle @@ -297,47 +348,6 @@ //------INTERACTION PROCS---------- //----------------------------- -//If the hardpoint can be activated by current user -/obj/item/hardpoint/proc/can_activate(mob/user, atom/A) - if(!owner) - return - - var/seat = owner.get_mob_seat(user) - if(!seat) - return - - if(seat != allowed_seat) - to_chat(user, SPAN_WARNING("Only [allowed_seat] can use [name].")) - return - - if(health <= 0) - to_chat(user, SPAN_WARNING("\The [name] is broken!")) - return FALSE - - if(world.time < next_use) - if(cooldown >= 20) //filter out guns with high firerate to prevent message spam. - to_chat(user, SPAN_WARNING("You need to wait [SPAN_HELPFUL((next_use - world.time) / 10)] seconds before [name] can be used again.")) - return FALSE - - if(ammo && ammo.current_rounds <= 0) - to_chat(user, SPAN_WARNING("\The [name] is out of ammo! Magazines: [SPAN_HELPFUL(LAZYLEN(backup_clips))]/[SPAN_HELPFUL(max_clips)]")) - return FALSE - - if(!in_firing_arc(A)) - to_chat(user, SPAN_WARNING("The target is not within your firing arc!")) - return FALSE - - if(!clear_los(A)) - to_chat(user, SPAN_WARNING("You don't have a clear line of sight to the target!")) - return FALSE - - return TRUE - -//Called when you want to activate the hardpoint, by default firing a gun -//This can also be used for some type of temporary buff or toggling mode, up to you -/obj/item/hardpoint/proc/activate(mob/user, atom/A) - fire(user, A) - /obj/item/hardpoint/proc/deactivate() return @@ -490,76 +500,201 @@ user.visible_message(SPAN_NOTICE("[user] stops repairing \the [name]."), SPAN_NOTICE("You stop repairing \the [name]. The integrity of the module is at [SPAN_HELPFUL(round(get_integrity_percent()))]%.")) return -//determines whether something is in firing arc of a hardpoint -/obj/item/hardpoint/proc/in_firing_arc(atom/A) - if(!owner) - return FALSE +/// Setter proc for the automatic firing flag. +/obj/item/hardpoint/proc/set_auto_firing(auto = FALSE) + if(auto_firing != auto) + auto_firing = auto + if(!auto_firing) //end-of-fire, show changed ammo + display_ammo() + +/// Setter proc for the burst firing flag. +/obj/item/hardpoint/proc/set_burst_firing(burst = FALSE) + if(burst_firing != burst) + burst_firing = burst + if(!burst_firing) //end-of-fire, show changed ammo + display_ammo() + +/// Clean all firing references. +/obj/item/hardpoint/proc/reset_fire() + shots_fired = 0 + set_target(null) + set_auto_firing(FALSE) //on abnormal exits automatic fire doesn't call set_auto_firing() + +/// Set the target and take care of hard delete. +/obj/item/hardpoint/proc/set_target(atom/object) + if(object == target || object == loc) + return + if(target) + UnregisterSignal(target, COMSIG_PARENT_QDELETING) + target = object + if(target) + RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(clean_target)) + +/// Set the target to its turf, so we keep shooting even when it was qdeled. +/obj/item/hardpoint/proc/clean_target() + SIGNAL_HANDLER + target = get_turf(target) + +/// Print how much ammo is left to chat. +/obj/item/hardpoint/proc/display_ammo(mob/user) + if(!user) + user = owner.get_seat_mob(allowed_seat) + if(!user) + return - if(!firing_arc) - return TRUE + if(ammo) + to_chat(user, SPAN_WARNING("[name] Ammo: [SPAN_HELPFUL(ammo ? ammo.current_rounds : 0)]/[SPAN_HELPFUL(ammo ? ammo.max_rounds : 0)] | Mags: [SPAN_HELPFUL(LAZYLEN(backup_clips))]/[SPAN_HELPFUL(max_clips)]")) - var/turf/T = get_turf(A) - if(!T) - return FALSE +/// Reset variables used in firing and remove the gun from the autofire system. +/obj/item/hardpoint/proc/stop_fire(datum/source, atom/object, turf/location, control, params) + SEND_SIGNAL(src, COMSIG_GUN_STOP_FIRE) + if(auto_firing) + reset_fire() //automatic fire doesn't reset itself from COMSIG_GUN_STOP_FIRE - var/dx = T.x - (owner.x + origins[1]/2) - var/dy = T.y - (owner.y + origins[2]/2) - - var/deg = 0 - switch(dir) - if(EAST) - deg = 0 - if(NORTH) - deg = -90 - if(WEST) - deg = 180 - if(SOUTH) - deg = 90 - - var/nx = dx * cos(deg) - dy * sin(deg) - var/ny = dx * sin(deg) + dy * cos(deg) - if(nx == 0) - return firing_arc >= 90 - - var/angle = arctan(ny/nx) - if(nx < 0) - angle += 180 - - return abs(angle) <= (firing_arc/2) - -//doing last preparation before actually firing gun -/obj/item/hardpoint/proc/fire(mob/user, atom/A) - if(!ammo) //Prevents a runtime +/// Update the target if you dragged your mouse. +/obj/item/hardpoint/proc/change_target(datum/source, atom/src_object, atom/over_object, turf/src_location, turf/over_location, src_control, over_control, params) + set_target(get_turf_on_clickcatcher(over_object, source, params)) + +/// Check if the gun can fire and add it to bucket autofire system if needed, or just fire the gun if not. +/obj/item/hardpoint/proc/start_fire(datum/source, atom/object, turf/location, control, params) + if(istype(object, /atom/movable/screen)) return - if(ammo.current_rounds <= 0) + + if(QDELETED(object)) return - next_use = world.time + cooldown * owner.misc_multipliers["cooldown"] - if(!prob((accuracy * 100) / owner.misc_multipliers["accuracy"])) - A = get_step(get_turf(A), pick(cardinal)) + if(!auto_firing && !burst_firing && !COOLDOWN_FINISHED(src, fire_cooldown)) + if(max(fire_delay, burst_delay + extra_delay) >= 2.0 SECONDS) //filter out guns with high firerate to prevent message spam. + to_chat(source, SPAN_WARNING("You need to wait [SPAN_HELPFUL(COOLDOWN_SECONDSLEFT(src, fire_cooldown))] seconds before [name] can be used again.")) + return - if(LAZYLEN(activation_sounds)) - playsound(get_turf(src), pick(activation_sounds), 60, 1) + set_target(get_turf_on_clickcatcher(object, source, params)) - fire_projectile(user, A) + if(gun_firemode == GUN_FIREMODE_SEMIAUTO) + var/fire_return = try_fire(object, source, params) + //end-of-fire, show ammo (if changed) + if(fire_return == AUTOFIRE_CONTINUE) + reset_fire() + display_ammo(source) + else + SEND_SIGNAL(src, COMSIG_GUN_FIRE) + +/// Wrapper proc for the autofire system to ensure the important args aren't null. +/obj/item/hardpoint/proc/fire_wrapper(atom/target, mob/living/user, params) + SHOULD_NOT_OVERRIDE(TRUE) + if(!target) + target = src.target + if(!user) + user = owner.get_seat_mob(allowed_seat) + if(!target || !user) + return NONE + + return try_fire(target, user, params) + +/// Tests if firing should be interrupted, otherwise fires. +/obj/item/hardpoint/proc/try_fire(atom/target, mob/living/user, params) + if(health <= 0) + to_chat(user, SPAN_WARNING("\The [name] is broken!")) + return NONE - to_chat(user, SPAN_WARNING("[name] Ammo: [SPAN_HELPFUL(ammo ? ammo.current_rounds : 0)]/[SPAN_HELPFUL(ammo ? ammo.max_rounds : 0)] | Mags: [SPAN_HELPFUL(LAZYLEN(backup_clips))]/[SPAN_HELPFUL(max_clips)]")) + if(ammo && ammo.current_rounds <= 0) + click_empty(user) + return NONE -//finally firing the gun -/obj/item/hardpoint/proc/fire_projectile(mob/user, atom/A) - set waitfor = 0 + if(!in_firing_arc(target)) + to_chat(user, SPAN_WARNING("The target is not within your firing arc!")) + return NONE - var/turf/origin_turf = get_turf(src) - origin_turf = locate(origin_turf.x + origins[1], origin_turf.y + origins[2], origin_turf.z) + if(!clear_los()) + to_chat(user, SPAN_WARNING("The muzzle is obstructed!")) + return NONE - var/obj/item/projectile/P = generate_bullet(user, origin_turf) - SEND_SIGNAL(P, COMSIG_BULLET_USER_EFFECTS, user) - P.fire_at(A, user, src, P.ammo.max_range, P.ammo.shell_speed) + return handle_fire(target, user, params) - if(use_muzzle_flash) - muzzle_flash(Get_Angle(origin_turf, A)) +/// Actually fires the gun, sets up the projectile and fires it. +/obj/item/hardpoint/proc/handle_fire(atom/target, mob/living/user, params) + var/turf/origin_turf = get_origin_turf() + var/obj/projectile/projectile_to_fire = generate_bullet(user, origin_turf) ammo.current_rounds-- + SEND_SIGNAL(projectile_to_fire, COMSIG_BULLET_USER_EFFECTS, user) + + // turf-targeted projectiles are fired without scatter, because proc would raytrace them further away + var/ammo_flags = projectile_to_fire.ammo.flags_ammo_behavior | projectile_to_fire.projectile_override_flags + if(!HAS_FLAG(ammo_flags, AMMO_HITS_TARGET_TURF) && !HAS_FLAG(ammo_flags, AMMO_EXPLOSIVE)) //AMMO_EXPLOSIVE is also a turf-targeted projectile + projectile_to_fire.scatter = scatter + target = simulate_scatter(projectile_to_fire, target, origin_turf, get_turf(target), user) + + INVOKE_ASYNC(projectile_to_fire, TYPE_PROC_REF(/obj/projectile, fire_at), target, user, src, projectile_to_fire.ammo.max_range, projectile_to_fire.ammo.shell_speed) + projectile_to_fire = null + + shots_fired++ + play_firing_sounds() + if(use_muzzle_flash) + muzzle_flash(Get_Angle(origin_turf, target)) + + set_fire_cooldown(gun_firemode) + + return AUTOFIRE_CONTINUE + +/// Start cooldown to respect delay of firemode. +/obj/item/hardpoint/proc/set_fire_cooldown(firemode) + var/cooldown_time = 0 + switch(firemode) + if(GUN_FIREMODE_SEMIAUTO) + cooldown_time = fire_delay + if(GUN_FIREMODE_BURSTFIRE) + cooldown_time = burst_delay + extra_delay + if(GUN_FIREMODE_AUTOMATIC) + cooldown_time = fire_delay + COOLDOWN_START(src, fire_cooldown, cooldown_time) + +/// Adjust target based on random scatter angle. +/obj/item/hardpoint/proc/simulate_scatter(obj/projectile/projectile_to_fire, atom/target, turf/curloc, turf/targloc) + var/fire_angle = Get_Angle(curloc, targloc) + var/total_scatter_angle = projectile_to_fire.scatter + + //Not if the gun doesn't scatter at all, or negative scatter. + if(total_scatter_angle > 0) + fire_angle += rand(-total_scatter_angle, total_scatter_angle) + target = get_angle_target_turf(curloc, fire_angle, 30) + + return target + +/// Get turf at hardpoint origin offset, used as the muzzle. +/obj/item/hardpoint/proc/get_origin_turf() + return get_offset_target_turf(get_turf(src), origins[1], origins[2]) + +/// Plays 'click' noise and announced to chat. Usually called when weapon empty. +/obj/item/hardpoint/proc/click_empty(mob/user) + playsound(src, 'sound/weapons/gun_empty.ogg', 25, 1, 5) + if(user) + to_chat(user, SPAN_WARNING("*click*")) + +/// Selects and plays a firing sound from the list. +/obj/item/hardpoint/proc/play_firing_sounds() + if(LAZYLEN(activation_sounds)) + playsound(get_turf(src), pick(activation_sounds), 60, 1) + +/// Determines whether something is in firing arc of a hardpoint. +/obj/item/hardpoint/proc/in_firing_arc(atom/target) + if(!firing_arc || !ISINRANGE_EX(firing_arc, 0, 360)) + return TRUE + + var/turf/muzzle_turf = get_origin_turf() + var/turf/target_turf = get_turf(target) + + //same tile angle returns EAST, returning FALSE to ensure consistency + if(muzzle_turf == target_turf) + return FALSE + + var/angle_diff = SIMPLIFY_DEGREES(dir2angle(dir) - Get_Angle(muzzle_turf, target_turf)) + if(angle_diff < -180) + angle_diff += 360 + else if(angle_diff > 180) + angle_diff -= 360 + + return abs(angle_diff) <= (firing_arc * 0.5) //----------------------------- //------ICON PROCS---------- diff --git a/code/modules/vehicles/hardpoints/hardpoint_ammo/minigun_ammo.dm b/code/modules/vehicles/hardpoints/hardpoint_ammo/minigun_ammo.dm index 23219f551a47..78222cdb3a40 100644 --- a/code/modules/vehicles/hardpoints/hardpoint_ammo/minigun_ammo.dm +++ b/code/modules/vehicles/hardpoints/hardpoint_ammo/minigun_ammo.dm @@ -1,6 +1,6 @@ /obj/item/ammo_magazine/hardpoint/ltaaap_minigun name = "LTAA-AP Minigun Magazine" - icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/event.dmi' desc = "A primary armament minigun magazine." caliber = "7.62x51mm" //Correlates to miniguns icon_state = "painless" diff --git a/code/modules/vehicles/hardpoints/holder/holder.dm b/code/modules/vehicles/hardpoints/holder/holder.dm index b14e078a3997..df91cbc51b65 100644 --- a/code/modules/vehicles/hardpoints/holder/holder.dm +++ b/code/modules/vehicles/hardpoints/holder/holder.dm @@ -26,7 +26,7 @@ else if(isobserver(user) || (ishuman(user) && (skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_TRAINED) || skillcheck(user, SKILL_VEHICLE, SKILL_VEHICLE_CREWMAN)))) . += "It's at [round(get_integrity_percent(), 1)]% integrity!" for(var/obj/item/hardpoint/H in hardpoints) - . += "There is a [H] module installed on \the [src]." + . += "There is \a [H] module installed on [src]." . += H.get_examine_text(user, TRUE) /obj/item/hardpoint/holder/get_tgui_info() @@ -43,10 +43,21 @@ for(var/obj/item/hardpoint/H in hardpoints) H.take_damage(damage) -/obj/item/hardpoint/holder/on_install(obj/vehicle/multitile/V) - for(var/obj/item/hardpoint/HP in hardpoints) - HP.owner = V - return +/obj/item/hardpoint/holder/on_install(obj/vehicle/multitile/vehicle) + ..() + if(!vehicle) //in loose holder + return + for(var/obj/item/hardpoint/hardpoint in hardpoints) + hardpoint.owner = vehicle + hardpoint.on_install(vehicle) + +/obj/item/hardpoint/holder/on_uninstall(obj/vehicle/multitile/vehicle) + if(!vehicle) //in loose holder + return + for(var/obj/item/hardpoint/hardpoint in hardpoints) + hardpoint.on_uninstall(vehicle) + hardpoint.owner = null + ..() /obj/item/hardpoint/holder/proc/can_install(obj/item/hardpoint/H) // Can only have 1 hardpoint of each slot type @@ -121,16 +132,17 @@ H.forceMove(src) LAZYADD(hardpoints, H) + H.on_install(owner) H.rotate(turning_angle(H.dir, dir)) /obj/item/hardpoint/holder/proc/remove_hardpoint(obj/item/hardpoint/H, turf/uninstall_to) if(!hardpoints) return - hardpoints -= H H.forceMove(uninstall_to ? uninstall_to : get_turf(src)) + H.on_uninstall(owner) H.reset_rotation() - + hardpoints -= H H.owner = null if(H.health <= 0) diff --git a/code/modules/vehicles/hardpoints/holder/tank_turret.dm b/code/modules/vehicles/hardpoints/holder/tank_turret.dm index db67dadb132d..896628e609bb 100644 --- a/code/modules/vehicles/hardpoints/holder/tank_turret.dm +++ b/code/modules/vehicles/hardpoints/holder/tank_turret.dm @@ -13,8 +13,6 @@ density = TRUE //come on, it's huge activatable = TRUE - cooldown = 150 - accuracy = 0.8 ammo = new /obj/item/ammo_magazine/hardpoint/turret_smoke max_clips = 2 @@ -60,6 +58,15 @@ // Used during the windup var/rotating = FALSE + scatter = 4 + gun_firemode = GUN_FIREMODE_BURSTFIRE + gun_firemode_list = list( + GUN_FIREMODE_BURSTFIRE, + ) + burst_amount = 2 + burst_delay = 1.0 SECONDS + extra_delay = 13.0 SECONDS + /obj/item/hardpoint/holder/tank_turret/update_icon() var/broken = (health <= 0) icon_state = "tank_turret_[broken]" @@ -182,12 +189,7 @@ user.client.pixel_x = -1 * AM.view_tile_offset * 32 user.client.pixel_y = 0 -/obj/item/hardpoint/holder/tank_turret/fire(mob/user, atom/A) - if(ammo.current_rounds <= 0) - return - - next_use = world.time + cooldown - +/obj/item/hardpoint/holder/tank_turret/try_fire(atom/target, mob/living/user, params) var/turf/L var/turf/R switch(owner.dir) @@ -204,26 +206,14 @@ L = locate(owner.x - 4, owner.y + 2, owner.z) R = locate(owner.x - 4, owner.y - 2, owner.z) - if(LAZYLEN(activation_sounds)) - playsound(get_turf(src), pick(activation_sounds), 60, 1) - fire_projectile(user, L) + if(shots_fired) + target = R + else + target = L - sleep(10) + return ..() - if(LAZYLEN(activation_sounds)) - playsound(get_turf(src), pick(activation_sounds), 60, 1) - fire_projectile(user, R) - - to_chat(user, SPAN_WARNING("Smoke Screen uses left: [SPAN_HELPFUL(ammo ? ammo.current_rounds / 2 : 0)]/[SPAN_HELPFUL(ammo ? ammo.max_rounds / 2 : 0)] | Mags: [SPAN_HELPFUL(LAZYLEN(backup_clips))]/[SPAN_HELPFUL(max_clips)]")) - -/obj/item/hardpoint/holder/tank_turret/fire_projectile(mob/user, atom/A) - set waitfor = 0 - - var/turf/origin_turf = get_turf(src) - origin_turf = locate(origin_turf.x + origins[1], origin_turf.y + origins[2], origin_turf.z) +/obj/item/hardpoint/holder/tank_turret/get_origin_turf() + var/origin_turf = ..() origin_turf = get_step(get_step(origin_turf, owner.dir), owner.dir) //this should get us tile in front of tank to prevent grenade being stuck under us. - - var/obj/item/projectile/P = generate_bullet(user, origin_turf) - SEND_SIGNAL(P, COMSIG_BULLET_USER_EFFECTS, owner.seats[VEHICLE_GUNNER]) - P.fire_at(A, owner.seats[VEHICLE_GUNNER], src, get_dist(origin_turf, A) + 1, P.ammo.shell_speed) - ammo.current_rounds-- + return origin_turf diff --git a/code/modules/vehicles/hardpoints/primary/autocannon.dm b/code/modules/vehicles/hardpoints/primary/autocannon.dm index df9224011b32..b6dc2cedc674 100644 --- a/code/modules/vehicles/hardpoints/primary/autocannon.dm +++ b/code/modules/vehicles/hardpoints/primary/autocannon.dm @@ -8,8 +8,6 @@ activation_sounds = list('sound/weapons/vehicles/autocannon_fire.ogg') health = 500 - cooldown = 7 - accuracy = 0.98 firing_arc = 60 origins = list(0, -3) @@ -23,3 +21,10 @@ "4" = list(32, 0), "8" = list(-32, 0) ) + + scatter = 1 + gun_firemode = GUN_FIREMODE_AUTOMATIC + gun_firemode_list = list( + GUN_FIREMODE_AUTOMATIC, + ) + fire_delay = 0.7 SECONDS diff --git a/code/modules/vehicles/hardpoints/primary/dual_cannon.dm b/code/modules/vehicles/hardpoints/primary/dual_cannon.dm index 763bfb69842d..4033a4bffb2a 100644 --- a/code/modules/vehicles/hardpoints/primary/dual_cannon.dm +++ b/code/modules/vehicles/hardpoints/primary/dual_cannon.dm @@ -12,10 +12,7 @@ damage_multiplier = 0.2 health = 500 - cooldown = 7 - accuracy = 0.98 firing_arc = 60 - var/burst_amount = 2 origins = list(0, -2) @@ -33,27 +30,15 @@ "8" = list(14, 9) ) + scatter = 1 + gun_firemode = GUN_FIREMODE_AUTOMATIC + gun_firemode_list = list( + GUN_FIREMODE_AUTOMATIC, + ) + fire_delay = 0.3 SECONDS + /obj/item/hardpoint/primary/dualcannon/set_bullet_traits() ..() LAZYADD(traits_to_give, list( BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) )) - -/obj/item/hardpoint/primary/dualcannon/fire(mob/user, atom/A) - if(ammo.current_rounds <= 0) - return - - next_use = world.time + cooldown * owner.misc_multipliers["cooldown"] - - for(var/bullets_fired = 1, bullets_fired <= burst_amount, bullets_fired++) - var/atom/T = A - if(!prob((accuracy * 100) / owner.misc_multipliers["accuracy"])) - T = get_step(get_turf(A), pick(cardinal)) - if(LAZYLEN(activation_sounds)) - playsound(get_turf(src), pick(activation_sounds), 60, 1) - fire_projectile(user, T) - if(ammo.current_rounds <= 0) - break - if(bullets_fired < burst_amount) //we need to sleep only if there are more bullets to shoot in the burst - sleep(3) - to_chat(user, SPAN_WARNING("[src] Ammo: [SPAN_HELPFUL(ammo ? ammo.current_rounds : 0)]/[SPAN_HELPFUL(ammo ? ammo.max_rounds : 0)] | Mags: [SPAN_HELPFUL(LAZYLEN(backup_clips))]/[SPAN_HELPFUL(max_clips)]")) diff --git a/code/modules/vehicles/hardpoints/primary/flamer.dm b/code/modules/vehicles/hardpoints/primary/flamer.dm index 0b77d3671e05..13beee9dd2c2 100644 --- a/code/modules/vehicles/hardpoints/primary/flamer.dm +++ b/code/modules/vehicles/hardpoints/primary/flamer.dm @@ -8,8 +8,6 @@ activation_sounds = list('sound/weapons/vehicles/flamethrower.ogg') health = 400 - cooldown = 20 - accuracy = 0.75 firing_arc = 90 origins = list(0, -3) @@ -26,36 +24,19 @@ use_muzzle_flash = FALSE + scatter = 5 + fire_delay = 2.0 SECONDS + /obj/item/hardpoint/primary/flamer/set_bullet_traits() ..() LAZYADD(traits_to_give, list( BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) )) -/obj/item/hardpoint/primary/flamer/can_activate(mob/user, atom/A) - if(!..()) - return FALSE - - var/turf/origin_turf = get_turf(src) - origin_turf = locate(origin_turf.x + origins[1], origin_turf.y + origins[2], origin_turf.z) - if(origin_turf == get_turf(A)) - return FALSE - - return TRUE - -/obj/item/hardpoint/primary/flamer/fire_projectile(mob/user, atom/A) - set waitfor = 0 - - var/turf/origin_turf = get_turf(src) - origin_turf = locate(origin_turf.x + origins[1], origin_turf.y + origins[2], origin_turf.z) - - var/range = get_dist(origin_turf, A) + 1 - - var/obj/item/projectile/P = generate_bullet(user, origin_turf) - SEND_SIGNAL(P, COMSIG_BULLET_USER_EFFECTS, owner.seats[VEHICLE_GUNNER]) - P.fire_at(A, owner.seats[VEHICLE_GUNNER], src, range < P.ammo.max_range ? range : P.ammo.max_range, P.ammo.shell_speed) - - if(use_muzzle_flash) - muzzle_flash(Get_Angle(owner, A)) +/obj/item/hardpoint/primary/flamer/try_fire(target, user, params) + var/turf/origin_turf = get_origin_turf() + if(origin_turf == get_turf(target)) + to_chat(user, SPAN_WARNING("The target is too close.")) + return NONE - ammo.current_rounds-- + return ..() diff --git a/code/modules/vehicles/hardpoints/primary/ltb.dm b/code/modules/vehicles/hardpoints/primary/ltb.dm index 7c663dc27fbc..19b5c7e7b9b4 100644 --- a/code/modules/vehicles/hardpoints/primary/ltb.dm +++ b/code/modules/vehicles/hardpoints/primary/ltb.dm @@ -8,8 +8,6 @@ activation_sounds = list('sound/weapons/vehicles/cannon_fire1.ogg', 'sound/weapons/vehicles/cannon_fire2.ogg') health = 500 - cooldown = 200 - accuracy = 0.97 firing_arc = 60 origins = list(0, -3) @@ -30,3 +28,6 @@ "4" = list(89, -4), "8" = list(-89, -4) ) + + scatter = 2 + fire_delay = 20.0 SECONDS diff --git a/code/modules/vehicles/hardpoints/primary/minigun.dm b/code/modules/vehicles/hardpoints/primary/minigun.dm index c6158f1a3b2c..03d1e7be0077 100644 --- a/code/modules/vehicles/hardpoints/primary/minigun.dm +++ b/code/modules/vehicles/hardpoints/primary/minigun.dm @@ -7,8 +7,6 @@ disp_icon_state = "ltaaap_minigun" health = 350 - cooldown = 8 - accuracy = 0.6 firing_arc = 90 origins = list(0, -3) @@ -30,46 +28,58 @@ "8" = list(-77, 0) ) - //changed minigun mechanic so instead of having lowered cooldown with each shot it now has increased burst size. - //While it's still spammy, user doesn't have to click as fast as possible anymore and has margin of 2 seconds before minigun will start slowing down - - var/chained_shots = 1 //how many quick succession shots we've fired, 1 by default - var/last_shot_time = 0 //when was last shot fired, after 3 seconds we stop barrel - var/list/chain_bursts = list(1, 1, 2, 2, 3, 3, 3, 4, 4, 4) //how many shots per click we do + scatter = 7 + gun_firemode = GUN_FIREMODE_AUTOMATIC + gun_firemode_list = list( + GUN_FIREMODE_AUTOMATIC, + ) + fire_delay = 0.8 SECONDS //base fire rate, modified by stage_delay_mult + activation_sounds = list('sound/weapons/gun_minigun.ogg') + /// Active firing time to reach max spin_stage. + var/spinup_time = 8 SECONDS + /// Grace period before losing spin_stage. + var/spindown_grace_time = 2 SECONDS + COOLDOWN_DECLARE(spindown_grace_cooldown) + /// Cooldown time to reach min spin_stage. + var/spindown_time = 3 SECONDS + /// Index of stage_rate. + var/spin_stage = 1 + /// Shots fired per fire_delay at a particular spin_stage. + var/list/stage_rate = list(1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 5) + /// Fire delay multiplier for current spin_stage. + var/stage_delay_mult = 1 + /// When it was last fired, related to world.time. + var/last_fired = 0 -/obj/item/hardpoint/primary/minigun/fire(mob/user, atom/A) +/obj/item/hardpoint/primary/minigun/set_fire_delay(value) + fire_delay = value + SEND_SIGNAL(src, COMSIG_GUN_AUTOFIREDELAY_MODIFIED, fire_delay * stage_delay_mult) - var/S = 'sound/weapons/vehicles/minigun_stop.ogg' - //check how much time since last shot. 2 seconds are grace period before minigun starts to lose rotation momentum - var/t = world.time - last_shot_time - 2 SECONDS - t = round(t / 10) - if(t > 0) - chained_shots = max(chained_shots - t * 3, 1) //we lose 3 chained_shots per second - else - if(chained_shots < 11) - chained_shots++ - S = 'sound/weapons/vehicles/minigun_loop.ogg' +/obj/item/hardpoint/primary/minigun/set_fire_cooldown() + calculate_stage_delay_mult() //needs to check grace_cooldown before refreshed + last_fired = world.time + COOLDOWN_START(src, spindown_grace_cooldown, spindown_grace_time) + COOLDOWN_START(src, fire_cooldown, fire_delay * stage_delay_mult) - if(chained_shots == 1) - playsound(get_turf(src), 'sound/weapons/vehicles/minigun_start.ogg', 40, 1) +/obj/item/hardpoint/primary/minigun/proc/calculate_stage_delay_mult() + var/stage_rate_len = stage_rate.len + var/delta_time = world.time - last_fired - next_use = world.time + cooldown * owner.misc_multipliers["cooldown"] - - //how many rounds we will shoot in this burst - if(chained_shots > LAZYLEN(chain_bursts)) //5 shots at maximum rotation - t = 5 + var/old_spin_stage = spin_stage + if(auto_firing || burst_firing) //spinup if continuing fire + var/delta_stage = delta_time * (stage_rate_len - 1) + spin_stage += delta_stage / spinup_time + else if(COOLDOWN_FINISHED(src, spindown_grace_cooldown)) //spindown if initiating fire after grace + var/delta_stage = (delta_time - spindown_grace_time) * (stage_rate_len - 1) + spin_stage -= delta_stage / spindown_time else - t = LAZYACCESS(chain_bursts, chained_shots) - for(var/i = 1; i <= t; i++) - var/atom/T = A - if(!prob((accuracy * 100) / owner.misc_multipliers["accuracy"])) - T = get_step(get_turf(T), pick(cardinal)) - fire_projectile(user, T) - if(ammo.current_rounds <= 0) - break - sleep(2) - to_chat(user, SPAN_WARNING("[src] Ammo: [SPAN_HELPFUL(ammo ? ammo.current_rounds : 0)]/[SPAN_HELPFUL(ammo ? ammo.max_rounds : 0)] | Mags: [SPAN_HELPFUL(LAZYLEN(backup_clips))]/[SPAN_HELPFUL(max_clips)]")) + return + spin_stage = clamp(spin_stage, 1, stage_rate_len) + + var/old_stage_rate = stage_rate[Floor(old_spin_stage)] + var/new_stage_rate = stage_rate[Floor(spin_stage)] - playsound(get_turf(src), S, 40, 1) - last_shot_time = world.time + if(old_stage_rate != new_stage_rate) + stage_delay_mult = 1 / new_stage_rate + SEND_SIGNAL(src, COMSIG_GUN_AUTOFIREDELAY_MODIFIED, fire_delay * stage_delay_mult) diff --git a/code/modules/vehicles/hardpoints/secondary/cupola.dm b/code/modules/vehicles/hardpoints/secondary/cupola.dm index f1f8f23435c2..f259d6ea2623 100644 --- a/code/modules/vehicles/hardpoints/secondary/cupola.dm +++ b/code/modules/vehicles/hardpoints/secondary/cupola.dm @@ -8,10 +8,7 @@ activation_sounds = list('sound/weapons/gun_smartgun1.ogg', 'sound/weapons/gun_smartgun2.ogg', 'sound/weapons/gun_smartgun3.ogg', 'sound/weapons/gun_smartgun4.ogg') health = 350 - cooldown = 15 - accuracy = 0.9 firing_arc = 120 - var/burst_amount = 3 origins = list(0, -2) @@ -25,27 +22,17 @@ "8" = list(-5, 7) ) + scatter = 3 + gun_firemode = GUN_FIREMODE_BURSTFIRE + gun_firemode_list = list( + GUN_FIREMODE_BURSTFIRE, + ) + burst_amount = 3 + burst_delay = 0.3 SECONDS + extra_delay = 0.6 SECONDS + /obj/item/hardpoint/secondary/m56cupola/set_bullet_traits() ..() LAZYADD(traits_to_give, list( BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) )) - -/obj/item/hardpoint/secondary/m56cupola/fire(mob/user, atom/A) - if(ammo.current_rounds <= 0) - return - - next_use = world.time + cooldown * owner.misc_multipliers["cooldown"] - - for(var/bullets_fired = 1, bullets_fired <= burst_amount, bullets_fired++) - var/atom/T = A - if(!prob((accuracy * 100) / owner.misc_multipliers["accuracy"])) - T = get_step(get_turf(A), pick(cardinal)) - if(LAZYLEN(activation_sounds)) - playsound(get_turf(src), pick(activation_sounds), 60, 1) - fire_projectile(user, T) - if(ammo.current_rounds <= 0) - break - if(bullets_fired < burst_amount) //we need to sleep only if there are more bullets to shoot in the burst - sleep(3) - to_chat(user, SPAN_WARNING("[src] Ammo: [SPAN_HELPFUL(ammo ? ammo.current_rounds : 0)]/[SPAN_HELPFUL(ammo ? ammo.max_rounds : 0)] | Mags: [SPAN_HELPFUL(LAZYLEN(backup_clips))]/[SPAN_HELPFUL(max_clips)]")) diff --git a/code/modules/vehicles/hardpoints/secondary/flamer.dm b/code/modules/vehicles/hardpoints/secondary/flamer.dm index 10f7453d8c95..5557cfb24e17 100644 --- a/code/modules/vehicles/hardpoints/secondary/flamer.dm +++ b/code/modules/vehicles/hardpoints/secondary/flamer.dm @@ -8,8 +8,6 @@ activation_sounds = list('sound/weapons/vehicles/flamethrower.ogg') health = 300 - cooldown = 30 - accuracy = 0.68 firing_arc = 120 origins = list(0, -2) @@ -28,31 +26,20 @@ "8" = list(-3, 18) ) -/obj/item/hardpoint/secondary/small_flamer/fire_projectile(mob/user, atom/A) - set waitfor = 0 - - var/turf/origin_turf = get_turf(src) - origin_turf = locate(origin_turf.x + origins[1], origin_turf.y + origins[2], origin_turf.z) - var/list/turf/turfs = getline2(origin_turf, A) - var/distance = 0 - var/turf/prev_T - - for(var/turf/T in turfs) - if(T == loc) - prev_T = T - continue - if(!ammo.current_rounds) break - if(distance >= max_range) break - if(prev_T && LinkBlocked(prev_T, T)) - break - ammo.current_rounds-- - flame_turf(T, user) - distance++ - prev_T = T - sleep(1) - -/obj/item/hardpoint/secondary/small_flamer/proc/flame_turf(turf/T, mob/user) - if(!istype(T)) return - - if(!locate(/obj/flamer_fire) in T) // No stacking flames! - new/obj/flamer_fire(T, create_cause_data(initial(name), user)) + scatter = 6 + fire_delay = 3.0 SECONDS + +/obj/item/hardpoint/secondary/small_flamer/handle_fire(atom/target, mob/living/user, params) + var/turf/origin_turf = get_origin_turf() + + var/distance = get_dist(origin_turf, get_turf(target)) + var/fire_amount = min(ammo.current_rounds, distance+1, max_range) + ammo.current_rounds -= fire_amount + + new /obj/flamer_fire(origin_turf, create_cause_data(initial(name), user), null, fire_amount, null, FLAMESHAPE_LINE, target, CALLBACK(src, PROC_REF(display_ammo), user)) + + play_firing_sounds() + + COOLDOWN_START(src, fire_cooldown, fire_delay) + + return AUTOFIRE_CONTINUE diff --git a/code/modules/vehicles/hardpoints/secondary/frontal_cannon.dm b/code/modules/vehicles/hardpoints/secondary/frontal_cannon.dm index 4d454bed12a4..536b5742cfcd 100644 --- a/code/modules/vehicles/hardpoints/secondary/frontal_cannon.dm +++ b/code/modules/vehicles/hardpoints/secondary/frontal_cannon.dm @@ -11,10 +11,7 @@ damage_multiplier = 0.11 health = 350 - cooldown = 16 - accuracy = 0.8 firing_arc = 120 - var/burst_amount = 4 origins = list(0, -2) @@ -32,27 +29,15 @@ "8" = list(-62, -26) ) + scatter = 4 + gun_firemode = GUN_FIREMODE_AUTOMATIC + gun_firemode_list = list( + GUN_FIREMODE_AUTOMATIC, + ) + fire_delay = 0.3 SECONDS + /obj/item/hardpoint/secondary/frontalcannon/set_bullet_traits() ..() LAZYADD(traits_to_give, list( BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) )) - -/obj/item/hardpoint/secondary/frontalcannon/fire(mob/user, atom/A) - if(ammo.current_rounds <= 0) - return - - next_use = world.time + cooldown * owner.misc_multipliers["cooldown"] - - for(var/bullets_fired = 1, bullets_fired <= burst_amount, bullets_fired++) - var/atom/T = A - if(!prob((accuracy * 100) / owner.misc_multipliers["accuracy"])) - T = get_step(get_turf(A), pick(cardinal)) - if(LAZYLEN(activation_sounds)) - playsound(get_turf(src), pick(activation_sounds), 60, 1) - fire_projectile(user, T) - if(ammo.current_rounds <= 0) - break - if(bullets_fired < burst_amount) //we need to sleep only if there are more bullets to shoot in the burst - sleep(3) - to_chat(user, SPAN_WARNING("[src] Ammo: [SPAN_HELPFUL(ammo ? ammo.current_rounds : 0)]/[SPAN_HELPFUL(ammo ? ammo.max_rounds : 0)] | Mags: [SPAN_HELPFUL(LAZYLEN(backup_clips))]/[SPAN_HELPFUL(max_clips)]")) diff --git a/code/modules/vehicles/hardpoints/secondary/grenade_launcher.dm b/code/modules/vehicles/hardpoints/secondary/grenade_launcher.dm index ee18443d7b7e..efd151e93cb3 100644 --- a/code/modules/vehicles/hardpoints/secondary/grenade_launcher.dm +++ b/code/modules/vehicles/hardpoints/secondary/grenade_launcher.dm @@ -8,8 +8,6 @@ activation_sounds = list('sound/weapons/gun_m92_attachable.ogg') health = 500 - cooldown = 30 - accuracy = 0.4 firing_arc = 90 var/max_range = 7 @@ -27,40 +25,19 @@ "8" = list(-6, 17) ) + scatter = 10 + fire_delay = 3.0 SECONDS + /obj/item/hardpoint/secondary/grenade_launcher/set_bullet_traits() ..() LAZYADD(traits_to_give, list( BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) )) -/obj/item/hardpoint/secondary/grenade_launcher/can_activate(mob/user, atom/A) - if(!..()) - return FALSE - - var/turf/origin_turf = get_turf(src) - origin_turf = locate(origin_turf.x + origins[1], origin_turf.y + origins[2], origin_turf.z) - if(get_dist(origin_turf, A) < 1) - to_chat(usr, SPAN_WARNING("The target is too close.")) - return FALSE - - return TRUE - -/obj/item/hardpoint/secondary/grenade_launcher/fire_projectile(mob/user, atom/A) - set waitfor = 0 - - var/turf/origin_turf = get_turf(src) - origin_turf = locate(origin_turf.x + origins[1], origin_turf.y + origins[2], origin_turf.z) - - //getting distance between supposed target and tank center. - var/range = get_dist(origin_turf, A) + 1 //otherwise nade falls one tile shorter - if(range > max_range) - range = max_range - - var/obj/item/projectile/P = generate_bullet(user, origin_turf) - SEND_SIGNAL(P, COMSIG_BULLET_USER_EFFECTS, owner.seats[VEHICLE_GUNNER]) - P.fire_at(A, owner.seats[VEHICLE_GUNNER], src, P.ammo.max_range, P.ammo.shell_speed) - - if(use_muzzle_flash) - muzzle_flash(Get_Angle(owner, A)) +/obj/item/hardpoint/secondary/grenade_launcher/try_fire(mob/user, atom/A) + var/turf/origin_turf = get_origin_turf() + if(origin_turf == get_turf(A)) + to_chat(user, SPAN_WARNING("The target is too close.")) + return NONE - ammo.current_rounds-- + return ..() diff --git a/code/modules/vehicles/hardpoints/secondary/tow.dm b/code/modules/vehicles/hardpoints/secondary/tow.dm index 4bdbc6f417fb..7c58f7970c7b 100644 --- a/code/modules/vehicles/hardpoints/secondary/tow.dm +++ b/code/modules/vehicles/hardpoints/secondary/tow.dm @@ -7,8 +7,6 @@ disp_icon_state = "towlauncher" health = 500 - cooldown = 150 - accuracy = 0.8 firing_arc = 60 origins = list(0, -2) @@ -29,3 +27,7 @@ "4" = list(5, -8), "8" = list(-5, 10) ) + + scatter = 4 + fire_delay = 15.0 SECONDS + diff --git a/code/modules/vehicles/hardpoints/special/firing_port_weapon.dm b/code/modules/vehicles/hardpoints/special/firing_port_weapon.dm index 9310556ee94f..780c195f00be 100644 --- a/code/modules/vehicles/hardpoints/special/firing_port_weapon.dm +++ b/code/modules/vehicles/hardpoints/special/firing_port_weapon.dm @@ -10,10 +10,7 @@ activation_sounds = list('sound/weapons/gun_smartgun1.ogg', 'sound/weapons/gun_smartgun2.ogg', 'sound/weapons/gun_smartgun3.ogg', 'sound/weapons/gun_smartgun4.ogg') health = 100 - cooldown = 10 - accuracy = 0.9 firing_arc = 120 - var/burst_amount = 3 //FPWs reload automatically var/reloading = FALSE var/reload_time = 10 SECONDS @@ -30,6 +27,13 @@ underlayer_north_muzzleflash = TRUE + scatter = 3 + gun_firemode = GUN_FIREMODE_AUTOMATIC + gun_firemode_list = list( + GUN_FIREMODE_AUTOMATIC, + ) + fire_delay = 0.3 SECONDS + /obj/item/hardpoint/special/firing_port_weapon/set_bullet_traits() ..() LAZYADD(traits_to_give, list( @@ -49,46 +53,6 @@ return data - -/obj/item/hardpoint/special/firing_port_weapon/can_activate(mob/user, atom/A) - if(!owner) - return FALSE - - var/seat = owner.get_mob_seat(user) - if(!seat) - return FALSE - - if(seat != allowed_seat) - to_chat(user, SPAN_WARNING("Only [allowed_seat] can use [name].")) - return FALSE - - //FPW stop working at 50% hull - if(owner.health < initial(owner.health) * 0.5) - to_chat(user, SPAN_WARNING("\The [owner]'s hull is too damaged!")) - return FALSE - - if(world.time < next_use) - if(cooldown >= 20) //filter out guns with high firerate to prevent message spam. - to_chat(user, SPAN_WARNING("You need to wait [SPAN_HELPFUL((next_use - world.time) / 10)] seconds before [name] can be used again.")) - return FALSE - - if(reloading) - to_chat(user, SPAN_NOTICE("\The [name] is reloading. Wait [SPAN_HELPFUL("[((reload_time_started + reload_time - world.time) / 10)]")] seconds.")) - return FALSE - - if(ammo && ammo.current_rounds <= 0) - if(reloading) - to_chat(user, SPAN_WARNING("\The [name] is out of ammo! You have to wait [(reload_time_started + reload_time - world.time) / 10] seconds before it reloads!")) - else - start_auto_reload(user) - return FALSE - - if(!in_firing_arc(A)) - to_chat(user, SPAN_WARNING("The target is not within your firing arc!")) - return FALSE - - return TRUE - /obj/item/hardpoint/special/firing_port_weapon/reload(mob/user) if(!ammo) ammo = new /obj/item/ammo_magazine/hardpoint/firing_port_weapon @@ -116,27 +80,32 @@ to_chat(user, SPAN_NOTICE("\The [name] reloads automatically.")) return FALSE +/obj/item/hardpoint/special/firing_port_weapon/try_fire(atom/target, mob/living/user, params) + if(!owner) + return NONE + + //FPW stop working at 50% hull + if(owner.health < initial(owner.health) * 0.5) + to_chat(user, SPAN_WARNING("\The [owner]'s hull is too damaged!")) + return NONE -/obj/item/hardpoint/special/firing_port_weapon/fire(mob/user, atom/A) if(user.get_active_hand()) to_chat(user, SPAN_WARNING("You need a free hand to use \the [name].")) - return + return NONE - if(ammo.current_rounds <= 0) - start_auto_reload(user) - return + if(reloading) + to_chat(user, SPAN_NOTICE("\The [name] is reloading. Wait [SPAN_HELPFUL("[((reload_time_started + reload_time - world.time) / 10)]")] seconds.")) + return NONE + + if(ammo && ammo.current_rounds <= 0) + if(reloading) + to_chat(user, SPAN_WARNING("\The [name] is out of ammo! You have to wait [(reload_time_started + reload_time - world.time) / 10] seconds before it reloads!")) + else + start_auto_reload(user) + return NONE + + if(!in_firing_arc(target)) + to_chat(user, SPAN_WARNING("The target is not within your firing arc!")) + return NONE - next_use = world.time + cooldown * owner.misc_multipliers["cooldown"] - - for(var/bullets_fired = 1, bullets_fired <= burst_amount, bullets_fired++) - var/atom/T = A - if(!prob((accuracy * 100) / owner.misc_multipliers["accuracy"])) - T = get_step(get_turf(A), pick(cardinal)) - if(LAZYLEN(activation_sounds)) - playsound(get_turf(src), pick(activation_sounds), 60, 1) - fire_projectile(user, T) - if(ammo.current_rounds <= 0) - break - if(bullets_fired < burst_amount) //we need to sleep only if there are more bullets to shoot in the burst - sleep(3) - to_chat(user, SPAN_WARNING("[src] Ammo: [SPAN_HELPFUL(ammo ? ammo.current_rounds : 0)]/[SPAN_HELPFUL(ammo ? ammo.max_rounds : 0)]")) + return handle_fire(target, user, params) diff --git a/code/modules/vehicles/hardpoints/support/artillery.dm b/code/modules/vehicles/hardpoints/support/artillery.dm index 441817107e7c..dfcdcaf73f74 100644 --- a/code/modules/vehicles/hardpoints/support/artillery.dm +++ b/code/modules/vehicles/hardpoints/support/artillery.dm @@ -14,7 +14,7 @@ var/view_buff = 10 //This way you can VV for more or less fun var/view_tile_offset = 7 -/obj/item/hardpoint/support/artillery_module/activate(mob/user, atom/A) +/obj/item/hardpoint/support/artillery_module/handle_fire(atom/target, mob/living/user, params) if(!user.client) return @@ -57,13 +57,14 @@ continue var/mob/user = C.seats[seat] if(!user.client) continue - user.client.change_view(world_view_size, owner) + user.client.change_view(GLOB.world_view_size, owner) user.client.pixel_x = 0 user.client.pixel_y = 0 is_active = FALSE -/obj/item/hardpoint/support/artillery_module/can_activate() +/obj/item/hardpoint/support/artillery_module/try_fire(target, user, params) if(health <= 0) to_chat(usr, SPAN_WARNING("\The [src] is broken!")) - return FALSE - return TRUE + return NONE + + return handle_fire(target, user, params) diff --git a/code/modules/vehicles/hardpoints/support/flare.dm b/code/modules/vehicles/hardpoints/support/flare.dm index 00dcd3ac1886..432c9636dadd 100644 --- a/code/modules/vehicles/hardpoints/support/flare.dm +++ b/code/modules/vehicles/hardpoints/support/flare.dm @@ -13,8 +13,6 @@ activatable = TRUE health = 500 - cooldown = 30 - accuracy = 0.7 firing_arc = 120 origins = list(0, -2) @@ -33,6 +31,9 @@ "8" = list(14, -6) ) + scatter = 6 + fire_delay = 3.0 SECONDS + /obj/item/hardpoint/support/flare_launcher/set_bullet_traits() ..() LAZYADD(traits_to_give, list( diff --git a/code/modules/vehicles/interior/areas.dm b/code/modules/vehicles/interior/areas.dm index 85ec4a319769..254bcb6b26ea 100644 --- a/code/modules/vehicles/interior/areas.dm +++ b/code/modules/vehicles/interior/areas.dm @@ -1,28 +1,33 @@ -/area/vehicle +/area/interior ceiling = CEILING_METAL requires_power = 0 unlimited_power = 1 icon = 'icons/turf/areas_interiors.dmi' + icon_state = "interior" + base_lighting_alpha = 255 ambience_exterior = 'sound/ambience/vehicle_interior1.ogg' sound_environment = SOUND_ENVIRONMENT_ROOM -/area/vehicle/tank +/area/interior/vehicle/tank name = "tank interior" icon_state = "tank" -/area/vehicle/apc +/area/interior/vehicle/apc name = "\improper APC interior" icon_state = "apc" -/area/vehicle/apc/med +/area/interior/vehicle/apc/med name = "\improper MED APC interior" icon_state = "apc_med" -/area/vehicle/apc/command +/area/interior/vehicle/apc/command name = "\improper CMD APC interior" icon_state = "apc_cmd" -/area/vehicle/van +/area/interior/vehicle/van name = "van interior" icon_state = "van" + +/area/interior/fancylocker + name = "closet interior" diff --git a/code/modules/vehicles/interior/interactable/doors.dm b/code/modules/vehicles/interior/interactable/doors.dm index 04f0cf65aaae..12b54bd425e4 100644 --- a/code/modules/vehicles/interior/interactable/doors.dm +++ b/code/modules/vehicles/interior/interactable/doors.dm @@ -14,7 +14,7 @@ // Which entrance to exit through var/entrance_id = null -/obj/structure/interior_exit/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/structure/interior_exit/get_projectile_hit_boolean(obj/projectile/P) return FALSE /obj/structure/interior_exit/attack_hand(mob/M) diff --git a/code/modules/vehicles/interior/interactable/seats.dm b/code/modules/vehicles/interior/interactable/seats.dm index 3e298ba48f1a..253b4a066b4f 100644 --- a/code/modules/vehicles/interior/interactable/seats.dm +++ b/code/modules/vehicles/interior/interactable/seats.dm @@ -40,10 +40,10 @@ return if(QDELETED(buckled_mob)) - vehicle.set_seated_mob(seat, null) M.unset_interaction() + vehicle.set_seated_mob(seat, null) if(M.client) - M.client.change_view(world_view_size, vehicle) + M.client.change_view(GLOB.world_view_size, vehicle) M.client.pixel_x = 0 M.client.pixel_y = 0 M.reset_view() @@ -174,10 +174,10 @@ return if(QDELETED(buckled_mob)) - vehicle.set_seated_mob(seat, null) M.unset_interaction() + vehicle.set_seated_mob(seat, null) if(M.client) - M.client.change_view(world_view_size, vehicle) + M.client.change_view(GLOB.world_view_size, vehicle) M.client.pixel_x = 0 M.client.pixel_y = 0 else @@ -252,10 +252,10 @@ return if(QDELETED(buckled_mob)) - vehicle.set_seated_mob(seat, null) M.unset_interaction() + vehicle.set_seated_mob(seat, null) if(M.client) - M.client.change_view(world_view_size, vehicle) + M.client.change_view(GLOB.world_view_size, vehicle) M.client.pixel_x = 0 M.client.pixel_y = 0 M.reset_view() @@ -376,29 +376,18 @@ //if both seats on same tile have buckled mob, we become dense, otherwise, not dense. if(buckled_mob) if(VS.buckled_mob) - buckled_mob.density = TRUE - VS.buckled_mob.density = TRUE + REMOVE_TRAIT(buckled_mob, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT) + REMOVE_TRAIT(VS.buckled_mob, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT) else - buckled_mob.density = FALSE + ADD_TRAIT(buckled_mob, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT) else if(VS.buckled_mob) - VS.buckled_mob.density = FALSE - M.density = TRUE + ADD_TRAIT(VS.buckled_mob, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT) + REMOVE_TRAIT(M, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT) break handle_rotation() -/obj/structure/bed/chair/vehicle/unbuckle() - if(buckled_mob && buckled_mob.buckled == src) - buckled_mob.buckled = null - buckled_mob.anchored = initial(buckled_mob.anchored) - buckled_mob.update_canmove() - - var/M = buckled_mob - buckled_mob = null - - afterbuckle(M) - //attack handling /obj/structure/bed/chair/vehicle/attack_alien(mob/living/user) diff --git a/code/modules/vehicles/interior/interactable/vehicle_locker.dm b/code/modules/vehicles/interior/interactable/vehicle_locker.dm index ab536c7637c6..5571995594f0 100644 --- a/code/modules/vehicles/interior/interactable/vehicle_locker.dm +++ b/code/modules/vehicles/interior/interactable/vehicle_locker.dm @@ -117,8 +117,8 @@ return container.attackby(W, user) /obj/structure/vehicle_locker/emp_act(severity) + . = ..() container.emp_act(severity) - ..() /obj/structure/vehicle_locker/hear_talk(mob/M, msg) container.hear_talk(M, msg) diff --git a/code/modules/vehicles/interior/interactable/vendors.dm b/code/modules/vehicles/interior/interactable/vendors.dm index 96a6f6b49c0f..d78764da4d73 100644 --- a/code/modules/vehicles/interior/interactable/vendors.dm +++ b/code/modules/vehicles/interior/interactable/vendors.dm @@ -48,7 +48,6 @@ /obj/item/reagent_container/hypospray/autoinjector/oxycodone, /obj/item/reagent_container/hypospray/autoinjector/tramadol, /obj/item/reagent_container/hypospray/autoinjector/tricord, - /obj/item/reagent_container/hypospray/autoinjector/emergency, /obj/item/reagent_container/hypospray/autoinjector/skillless, /obj/item/reagent_container/hypospray/autoinjector/skillless/tramadol, @@ -423,11 +422,11 @@ list("ARMOR", -1, null, null), list("M10 Pattern Marine Helmet", 0, /obj/item/clothing/head/helmet/marine, VENDOR_ITEM_REGULAR), - list("M3 Pattern Carrier Marine Armor", 0, /obj/item/clothing/suit/storage/marine/carrier, VENDOR_ITEM_REGULAR), - list("M3 Pattern Padded Marine Armor", 0, /obj/item/clothing/suit/storage/marine/padded, VENDOR_ITEM_REGULAR), - list("M3 Pattern Padless Marine Armor", 0, /obj/item/clothing/suit/storage/marine/padless, VENDOR_ITEM_REGULAR), - list("M3 Pattern Ridged Marine Armor", 0, /obj/item/clothing/suit/storage/marine/padless_lines, VENDOR_ITEM_REGULAR), - list("M3 Pattern Skull Marine Armor", 0, /obj/item/clothing/suit/storage/marine/skull, VENDOR_ITEM_REGULAR), + list("M3 Pattern Carrier Marine Armor", 0, /obj/item/clothing/suit/storage/marine/medium/carrier, VENDOR_ITEM_REGULAR), + list("M3 Pattern Padded Marine Armor", 0, /obj/item/clothing/suit/storage/marine/medium/padded, VENDOR_ITEM_REGULAR), + list("M3 Pattern Padless Marine Armor", 0, /obj/item/clothing/suit/storage/marine/medium/padless, VENDOR_ITEM_REGULAR), + list("M3 Pattern Ridged Marine Armor", 0, /obj/item/clothing/suit/storage/marine/medium/padless_lines, VENDOR_ITEM_REGULAR), + list("M3 Pattern Skull Marine Armor", 0, /obj/item/clothing/suit/storage/marine/medium/skull, VENDOR_ITEM_REGULAR), list("M3-EOD Pattern Heavy Armor", 0, /obj/item/clothing/suit/storage/marine/heavy, VENDOR_ITEM_REGULAR), list("M3-L Pattern Light Armor", 0, /obj/item/clothing/suit/storage/marine/light, VENDOR_ITEM_REGULAR), diff --git a/code/modules/vehicles/interior/interior.dm b/code/modules/vehicles/interior/interior.dm index b56de4bfe16b..f2afcd5ae5f7 100644 --- a/code/modules/vehicles/interior/interior.dm +++ b/code/modules/vehicles/interior/interior.dm @@ -72,6 +72,7 @@ entrance_markers = null QDEL_NULL(reservation) + SSinterior.interiors -= src return ..() @@ -317,7 +318,7 @@ var/turf/min = reservation.bottom_left_coords var/turf/max = reservation.top_right_coords - return list(Floor(min[1] + (max[1] - min[1])), Floor(min[2] + (max[2] - min[2])), min[3]) + return list(Floor(min[1] + (max[1] - min[1])/2), Floor(min[2] + (max[2] - min[2])/2), min[3]) /datum/interior/proc/get_middle_turf() var/list/turf/bounds = get_bound_turfs() diff --git a/code/modules/vehicles/interior/interior_hull.dm b/code/modules/vehicles/interior/interior_hull.dm index 7e049395bdc6..70b4cb8501f1 100644 --- a/code/modules/vehicles/interior/interior_hull.dm +++ b/code/modules/vehicles/interior/interior_hull.dm @@ -18,7 +18,7 @@ unslashable = TRUE indestructible = TRUE -/obj/structure/interior_wall/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/structure/interior_wall/get_projectile_hit_boolean(obj/projectile/P) return FALSE /obj/structure/interior_wall/ex_act() @@ -41,7 +41,7 @@ alpha = 80 -/obj/effect/vehicle_roof/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/effect/vehicle_roof/get_projectile_hit_boolean(obj/projectile/P) return FALSE /obj/effect/vehicle_roof/ex_act() diff --git a/code/modules/vehicles/interior/objects/fancy_locker.dm b/code/modules/vehicles/interior/objects/fancy_locker.dm index f1068812a793..2cc7a02e548b 100644 --- a/code/modules/vehicles/interior/objects/fancy_locker.dm +++ b/code/modules/vehicles/interior/objects/fancy_locker.dm @@ -2,6 +2,13 @@ name = "fancy closet" desc = "It's a fancy storage unit." + icon_state = "cabinet_closed" + icon_closed = "cabinet_closed" + icon_opened = "cabinet_open" + + unacidable = TRUE + + var/interior_map = /datum/map_template/interior/fancy_locker var/datum/interior/interior = null var/entrance_speed = 1 SECONDS var/passengers_slots = 2 @@ -19,20 +26,52 @@ INVOKE_ASYNC(src, PROC_REF(do_create_interior)) /obj/structure/closet/fancy/proc/do_create_interior() - interior.create_interior("fancylocker") + interior.create_interior(interior_map) /obj/structure/closet/fancy/Destroy() QDEL_NULL(interior) return ..() +/obj/structure/closet/fancy/can_close() + for(var/obj/structure/closet/closet in get_turf(src)) + if(closet != src && !closet.wall_mounted) + return FALSE + return TRUE + /obj/structure/closet/fancy/store_mobs(stored_units) for(var/mob/M in loc) - var/succ = interior.enter(M, "default") + var/succ = interior.enter(M, "fancy") if(!succ) break +/obj/structure/closet/fancy/ex_act(severity) + return + /obj/structure/interior_exit/fancy name = "fancy wooden door" icon = 'icons/obj/structures/doors/mineral_doors.dmi' icon_state = "wood" density = TRUE + +/obj/structure/interior_exit/fancy/attackby(obj/item/O, mob/M) + attack_hand(M) + +/obj/structure/interior_exit/fancy/attack_hand(mob/escapee) + var/obj/structure/closet/fancy/closet = find_closet() + if(istype(closet) && !closet.can_open()) + to_chat(escapee, SPAN_WARNING("Something is blocking the exit!")) + return + ..() + +/obj/structure/interior_exit/fancy/attack_alien(mob/living/carbon/xenomorph/escapee, dam_bonus) + var/obj/structure/closet/fancy/closet = find_closet() + if(istype(closet) && !closet.can_open()) + to_chat(escapee, SPAN_XENOWARNING("Something is blocking the exit!")) + return + ..() + +/obj/structure/interior_exit/fancy/proc/find_closet() + var/obj/structure/closet/fancy/possible_closet = interior.exterior + if(istype(possible_closet)) + return possible_closet + return diff --git a/code/modules/vehicles/multitile/multitile.dm b/code/modules/vehicles/multitile/multitile.dm index 7802d9a7edbd..f3b7be510b08 100644 --- a/code/modules/vehicles/multitile/multitile.dm +++ b/code/modules/vehicles/multitile/multitile.dm @@ -21,6 +21,14 @@ can_buckle = FALSE + light_system = MOVABLE_LIGHT + light_range = 5 + + var/atom/movable/vehicle_light_holder/lighting_holder + + var/vehicle_light_range = 5 + var/vehicle_light_power = 2 + //Yay! Working cameras in the vehicles at last!! var/obj/structure/machinery/camera/vehicle/camera = null var/obj/structure/machinery/camera/vehicle/camera_int = null @@ -167,6 +175,17 @@ rotate_entrances(angle_to_turn) rotate_bounds(angle_to_turn) + if(bound_width > world.icon_size || bound_height > world.icon_size) + lighting_holder = new(src) + lighting_holder.set_light_range(vehicle_light_range) + lighting_holder.set_light_power(vehicle_light_power) + lighting_holder.set_light_on(vehicle_light_range || vehicle_light_power) + else if(light_range) + set_light_on(TRUE) + + light_pixel_x = -bound_x + light_pixel_y = -bound_y + healthcheck() update_icon() @@ -221,26 +240,15 @@ var/amt_hardpoints = LAZYLEN(hardpoints) if(amt_hardpoints) - var/list/hardpoint_images[amt_hardpoints] - var/list/C[HDPT_LAYER_MAX] - - // Counting sort the images into a list so we get the hardpoint images sorted by layer - for(var/obj/item/hardpoint/H in hardpoints) - C[H.hdpt_layer] += 1 - - for(var/i = 2 to HDPT_LAYER_MAX) - C[i] += C[i-1] - - for(var/obj/item/hardpoint/H in hardpoints) - hardpoint_images[C[H.hdpt_layer]] = H.get_hardpoint_image() - C[H.hdpt_layer] -= 1 - - for(var/i = 1 to amt_hardpoints) - var/image/I = hardpoint_images[i] - // get_hardpoint_image() can return a list of images - if(istype(I)) - I.layer = layer + (i*0.1) - overlays += I + for(var/obj/item/hardpoint/hardpoint in hardpoints) + var/image/hardpoint_image = hardpoint.get_hardpoint_image() + if(istype(hardpoint_image)) + hardpoint_image.layer = layer + hardpoint.hdpt_layer * 0.1 + else if(islist(hardpoint_image)) + var/list/image/hardpoint_image_list = hardpoint_image // Linter will complain about iterating on "an image" otherwise + for(var/image/subimage in hardpoint_image_list) + subimage.layer = layer + hardpoint.hdpt_layer * 0.1 + overlays += hardpoint_image if(clamped) var/image/J = image(icon, icon_state = "vehicle_clamp", layer = layer+0.1) @@ -332,15 +340,24 @@ M.reset_view(src) give_action(M, /datum/action/human_action/vehicle_unbuckle) +/// Get crewmember of seat. /obj/vehicle/multitile/proc/get_seat_mob(seat) return seats[seat] +/// Get seat of crewmember. /obj/vehicle/multitile/proc/get_mob_seat(mob/M) for(var/seat in seats) if(seats[seat] == M) return seat return null +/// Get active hardpoint of crewmember. +/obj/vehicle/multitile/proc/get_mob_hp(mob/crew) + var/seat = get_mob_seat(crew) + if(seat) + return active_hp[seat] + return null + /obj/vehicle/multitile/proc/get_passengers() if(interior) return interior.get_passengers() @@ -364,8 +381,8 @@ handle_all_modules_broken() //vehicle is dead, no more lights - if(health <= 0 && luminosity) - SetLuminosity(0) + if(health <= 0 && lighting_holder.light_range) + lighting_holder.set_light_on(FALSE) update_icon() /* @@ -421,3 +438,20 @@ /obj/vehicle/multitile/proc/handle_acidic_environment(atom/A) for(var/obj/item/hardpoint/locomotion/Loco in hardpoints) Loco.handle_acid_damage(A) + +/atom/movable/vehicle_light_holder + light_system = MOVABLE_LIGHT + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + +/atom/movable/vehicle_light_holder/Initialize(mapload, ...) + . = ..() + + var/atom/attached_to = loc + + forceMove(attached_to.loc) + RegisterSignal(attached_to, COMSIG_MOVABLE_MOVED, PROC_REF(handle_parent_move)) + +/atom/movable/vehicle_light_holder/proc/handle_parent_move(atom/movable/mover, atom/oldloc, direction) + SIGNAL_HANDLER + + forceMove(get_turf(mover)) diff --git a/code/modules/vehicles/multitile/multitile_bump.dm b/code/modules/vehicles/multitile/multitile_bump.dm index d9b480866f99..79789af054fa 100644 --- a/code/modules/vehicles/multitile/multitile_bump.dm +++ b/code/modules/vehicles/multitile/multitile_bump.dm @@ -106,14 +106,12 @@ return TRUE /obj/structure/surface/handle_vehicle_bump(obj/vehicle/multitile/V) - detach_all() playsound(V, 'sound/effects/metal_crash.ogg', 20) visible_message(SPAN_DANGER("\The [V] crushes \the [src]!")) qdel(src) return TRUE /obj/structure/surface/table/handle_vehicle_bump(obj/vehicle/multitile/V) - detach_all() playsound(V, 'sound/effects/metal_crash.ogg', 20) visible_message(SPAN_DANGER("\The [V] crushes \the [src]!")) if(prob(50)) @@ -122,7 +120,6 @@ return TRUE /obj/structure/surface/rack/handle_vehicle_bump(obj/vehicle/multitile/V) - detach_all() playsound(V, 'sound/effects/metal_crash.ogg', 20) visible_message(SPAN_DANGER("\The [V] crushes \the [src]!")) deconstruct() @@ -344,10 +341,24 @@ return TRUE /obj/structure/machinery/m56d_post/handle_vehicle_bump(obj/vehicle/multitile/V) - new /obj/item/device/m56d_post(loc) playsound(V, 'sound/effects/metal_crash.ogg', 20) visible_message(SPAN_DANGER("\The [V] drives over \the [src]!")) - qdel(src) + + if(gun_mounted) + var/obj/item/device/m56d_gun/HMG = new(loc) + transfer_label_component(HMG) + HMG.rounds = gun_rounds + HMG.has_mount = TRUE + if(gun_health) + HMG.health = gun_health + HMG.update_icon() + qdel(src) + else + var/obj/item/device/m56d_post/post = new(loc) + post.health = health + transfer_label_component(post) + qdel(src) + return TRUE /obj/structure/machinery/m56d_hmg/handle_vehicle_bump(obj/vehicle/multitile/V) @@ -355,7 +366,9 @@ HMG.name = name HMG.rounds = rounds HMG.has_mount = TRUE + HMG.health = health HMG.update_icon() + transfer_label_component(HMG) playsound(V, 'sound/effects/metal_crash.ogg', 20) visible_message(SPAN_DANGER("\The [V] drives over \the [src]!")) qdel(src) @@ -642,7 +655,7 @@ //Check what dir they should be facing to be looking directly at the vehicle else if(dir_between == dir) //front hit (facing the vehicle) blocked = TRUE - else if(dir_between == reverse_dir[dir]) // rear hit (facing directly away from the vehicle) + else if(dir_between == GLOB.reverse_dir[dir]) // rear hit (facing directly away from the vehicle) takes_damage = TRUE //side hit else if(caste.caste_type == XENO_CASTE_QUEEN) // queen blocks even with sides @@ -740,7 +753,7 @@ //BURROWER /mob/living/carbon/xenomorph/burrower/handle_vehicle_bump(obj/vehicle/multitile/V) - if(burrow) + if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) return TRUE else return . = ..() diff --git a/code/modules/vehicles/multitile/multitile_hardpoints.dm b/code/modules/vehicles/multitile/multitile_hardpoints.dm index 2c5a343b802a..a6014c6cf2cd 100644 --- a/code/modules/vehicles/multitile/multitile_hardpoints.dm +++ b/code/modules/vehicles/multitile/multitile_hardpoints.dm @@ -230,47 +230,3 @@ qdel(old) update_icon() - -//proc that fires non selected weaponry -/obj/vehicle/multitile/proc/shoot_other_weapon(mob/living/carbon/human/M, seat, atom/A) - - if(!istype(M)) - return - - var/list/usable_hps = get_hardpoints_with_ammo(seat) - for(var/obj/item/hardpoint/HP in usable_hps) - if(HP == active_hp[seat] || HP.slot != HDPT_PRIMARY && HP.slot != HDPT_SECONDARY) - usable_hps.Remove(HP) - - if(!LAZYLEN(usable_hps)) - to_chat(M, SPAN_WARNING("No other working weapons detected.")) - return - - for(var/obj/item/hardpoint/HP in usable_hps) - if(!HP.can_activate(M, A)) - return - HP.activate(M, A) - break - return - -//proc that activates support module if it can be activated and you meet requirements -/obj/vehicle/multitile/proc/activate_support_module(mob/living/carbon/human/M, seat, atom/A) - - if(!istype(M)) - return - - var/list/usable_hps = get_activatable_hardpoints(seat) - for(var/obj/item/hardpoint/HP in usable_hps) - if(HP.slot != HDPT_SUPPORT) - usable_hps.Remove(HP) - - if(!LAZYLEN(usable_hps)) - to_chat(M, SPAN_WARNING("No activatable support modules detected.")) - return - - for(var/obj/item/hardpoint/HP in usable_hps) - if(!HP.can_activate(M, A)) - return - HP.activate(M, A) - break - return diff --git a/code/modules/vehicles/multitile/multitile_interaction.dm b/code/modules/vehicles/multitile/multitile_interaction.dm index ca2b5922ecf0..552d9cea4561 100644 --- a/code/modules/vehicles/multitile/multitile_interaction.dm +++ b/code/modules/vehicles/multitile/multitile_interaction.dm @@ -209,7 +209,7 @@ to_chat(user, SPAN_NOTICE("Hull integrity is at [SPAN_HELPFUL(100.0*health/max_hp)]%.")) health = initial(health) - SetLuminosity(initial(luminosity)) + lighting_holder.set_light_range(vehicle_light_range) toggle_cameras_status(TRUE) update_icon() user.visible_message(SPAN_NOTICE("[user] finishes [repair_message] on \the [src]."), SPAN_NOTICE("You finish [repair_message] on \the [src]. Hull integrity is at [SPAN_HELPFUL(100.0*health/max_hp)]%. ")) @@ -248,7 +248,7 @@ return XENO_NO_DELAY_ACTION if(X.mob_size < mob_size_required_to_hit) - to_chat(X, SPAN_XENOWARNING("You're too small to do any significant damage to this vehicle!")) + to_chat(X, SPAN_XENOWARNING("We're too small to do any significant damage to this vehicle!")) return XENO_NO_DELAY_ACTION var/damage = (X.melee_vehicle_damage + rand(-5,5)) * XENO_UNIVERSAL_VEHICLE_DAMAGEMULT @@ -269,11 +269,11 @@ if(!damage) playsound(X.loc, 'sound/weapons/alien_claw_swipe.ogg', 25, 1) X.visible_message(SPAN_DANGER("\The [X] swipes at \the [src] to no effect!"), \ - SPAN_DANGER("You swipe at \the [src] to no effect!")) + SPAN_DANGER("We swipe at \the [src] to no effect!")) return XENO_ATTACK_ACTION X.visible_message(SPAN_DANGER("\The [X] slashes \the [src]!"), \ - SPAN_DANGER("You slash \the [src]!")) + SPAN_DANGER("We slash \the [src]!")) playsound(X.loc, pick('sound/effects/metalhit.ogg', 'sound/weapons/alien_claw_metal1.ogg', 'sound/weapons/alien_claw_metal2.ogg', 'sound/weapons/alien_claw_metal3.ogg'), 25, 1) take_damage_type(damage * damage_mult, "slash", X) @@ -283,7 +283,7 @@ //Differentiates between damage types from different bullets //Applies a linear transformation to bullet damage that will generally decrease damage done -/obj/vehicle/multitile/bullet_act(obj/item/projectile/P) +/obj/vehicle/multitile/bullet_act(obj/projectile/P) var/dam_type = "bullet" var/damage = P.damage var/ammo_flags = P.ammo.flags_ammo_behavior | P.projectile_override_flags @@ -295,7 +295,7 @@ if(P.runtime_iff_group && get_target_lock(P.runtime_iff_group)) return - if(ammo_flags & AMMO_ANTISTRUCT) + if(ammo_flags & AMMO_ANTISTRUCT|AMMO_ANTIVEHICLE) // Multiplier based on tank railgun relationship, so might have to reconsider multiplier for AMMO_SIEGE in general damage = round(damage*ANTISTRUCT_DMG_MULT_TANK) if(ammo_flags & AMMO_ACIDIC) @@ -330,80 +330,61 @@ healthcheck() -/obj/vehicle/multitile/handle_click(mob/living/user, atom/A, list/mods) +/obj/vehicle/multitile/on_set_interaction(mob/user) + RegisterSignal(user, COMSIG_MOB_MOUSEDOWN, PROC_REF(crew_mousedown)) + RegisterSignal(user, COMSIG_MOB_MOUSEDRAG, PROC_REF(crew_mousedrag)) + RegisterSignal(user, COMSIG_MOB_MOUSEUP, PROC_REF(crew_mouseup)) - var/seat - for(var/vehicle_seat in seats) - if(seats[vehicle_seat] == user) - seat = vehicle_seat - break - - if(istype(A, /atom/movable/screen) || !seat) - return - - if(seat == VEHICLE_DRIVER) - if(mods["shift"] && !mods["alt"]) - A.examine(user) - return - - if(mods["ctrl"] && !mods["alt"]) - activate_horn() - return +/obj/vehicle/multitile/on_unset_interaction(mob/user) + UnregisterSignal(user, list(COMSIG_MOB_MOUSEUP, COMSIG_MOB_MOUSEDOWN, COMSIG_MOB_MOUSEDRAG)) - var/obj/item/hardpoint/HP = active_hp[seat] - if(!HP) - to_chat(user, SPAN_WARNING("Please select an active hardpoint first.")) - return + var/obj/item/hardpoint/hardpoint = get_mob_hp(user) + if(hardpoint) + SEND_SIGNAL(hardpoint, COMSIG_GUN_INTERRUPT_FIRE) //abort fire when crew leaves - if(!HP.can_activate(user, A)) - return +/// Relays crew mouse release to active hardpoint. +/obj/vehicle/multitile/proc/crew_mouseup(datum/source, atom/object, turf/location, control, params) + SIGNAL_HANDLER + var/obj/item/hardpoint/hardpoint = get_mob_hp(source) + if(!hardpoint) + return - HP.activate(user, A) + hardpoint.stop_fire(source, object, location, control, params) - if(seat == VEHICLE_GUNNER) - if(mods["shift"] && !mods["middle"]) - if(vehicle_flags & VEHICLE_TOGGLE_SHIFT_CLICK_GUNNER) - shoot_other_weapon(user, seat, A) - else - A.examine(user) - return - if(mods["middle"] && !mods["shift"]) - if(!(vehicle_flags & VEHICLE_TOGGLE_SHIFT_CLICK_GUNNER)) - shoot_other_weapon(user, seat, A) - return - if(mods["alt"]) - toggle_gyrostabilizer() - return - if(mods["ctrl"]) - activate_support_module(user, seat, A) - return +/// Relays crew mouse movement to active hardpoint. +/obj/vehicle/multitile/proc/crew_mousedrag(datum/source, atom/src_object, atom/over_object, turf/src_location, turf/over_location, src_control, over_control, params) + SIGNAL_HANDLER + var/obj/item/hardpoint/hardpoint = get_mob_hp(source) + if(!hardpoint) + return - var/obj/item/hardpoint/HP = active_hp[seat] - if(!HP) - to_chat(user, SPAN_WARNING("Please select an active hardpoint first.")) - return + hardpoint.change_target(source, src_object, over_object, src_location, over_location, src_control, over_control, params) - if(!HP.can_activate(user, A)) - return +/// Checks for special control keybinds, else relays crew mouse press to active hardpoint. +/obj/vehicle/multitile/proc/crew_mousedown(datum/source, atom/object, turf/location, control, params) + SIGNAL_HANDLER - HP.activate(user, A) - - if(seat == VEHICLE_SUPPORT_GUNNER_ONE || seat == VEHICLE_SUPPORT_GUNNER_TWO) - if(mods["shift"]) - A.examine(user) - return - if(mods["middle"] || mods["alt"] || mods["ctrl"]) - return + var/list/modifiers = params2list(params) + if(modifiers[SHIFT_CLICK] || modifiers[MIDDLE_CLICK] || modifiers[RIGHT_CLICK]) //don't step on examine, point, etc + return - var/obj/item/hardpoint/HP = active_hp[seat] - if(!HP) - to_chat(user, SPAN_WARNING("Please select an active hardpoint first.")) - return + var/seat = get_mob_seat(source) + switch(seat) + if(VEHICLE_DRIVER) + if(modifiers[LEFT_CLICK] && modifiers[CTRL_CLICK]) + activate_horn() + return + if(VEHICLE_GUNNER) + if(modifiers[LEFT_CLICK] && modifiers[ALT_CLICK]) + toggle_gyrostabilizer() + return - if(!HP.can_activate(user, A)) - return + var/obj/item/hardpoint/hardpoint = get_mob_hp(source) + if(!hardpoint) + to_chat(source, SPAN_WARNING("Please select an active hardpoint first.")) + return - HP.activate(user, A) + hardpoint.start_fire(source, object, location, control, params) /obj/vehicle/multitile/proc/handle_player_entrance(mob/M) if(!M || M.client == null) return @@ -439,9 +420,9 @@ else if(!entrance_used && !isxeno(M)) return - var/enter_msg = "You start climbing into \the [src]..." + var/enter_msg = "We start climbing into \the [src]..." if(health <= 0 && isxeno(M)) - enter_msg = "You start prying away loose plates, squeezing into \the [src]..." + enter_msg = "We start prying away loose plates, squeezing into \the [src]..." // Check if drag anything var/atom/dragged_atom @@ -526,7 +507,7 @@ var/success = interior.enter(dragged_atom, entrance_used) if(success) - to_chat(user, SPAN_NOTICE("You succesfully fit [dragged_atom] inside \the [src].")) + to_chat(user, SPAN_NOTICE("You successfully fit [dragged_atom] inside \the [src].")) else to_chat(user, SPAN_WARNING("You fail to fit [dragged_atom] inside \the [src]! It's either too big or vehicle is out of space!")) return diff --git a/code/modules/vehicles/multitile/multitile_verbs.dm b/code/modules/vehicles/multitile/multitile_verbs.dm index c7dd29bbf0a9..3801cd2e176c 100644 --- a/code/modules/vehicles/multitile/multitile_verbs.dm +++ b/code/modules/vehicles/multitile/multitile_verbs.dm @@ -30,6 +30,10 @@ if(!HP) return + var/obj/item/hardpoint/old_HP = V.active_hp[seat] + if(old_HP) + SEND_SIGNAL(old_HP, COMSIG_GUN_INTERRUPT_FIRE) //stop fire when switching away from HP + V.active_hp[seat] = HP var/msg = "You select \the [HP]." if(HP.ammo) @@ -66,6 +70,10 @@ if(!HP) return + var/obj/item/hardpoint/old_HP = V.active_hp[seat] + if(old_HP) + SEND_SIGNAL(old_HP, COMSIG_GUN_INTERRUPT_FIRE) //stop fire when switching away from HP + V.active_hp[seat] = HP var/msg = "You select \the [HP]." if(HP.ammo) @@ -225,10 +233,7 @@ 3. \"G: Toggle Turret Gyrostabilizer\" - toggles Turret Gyrostabilizer allowing it to keep current direction ignoring hull turning. (Exists only on vehicles with rotating turret, e.g. M34A2 Longstreet Light Tank)
        \ Support Gunner verbs:
        1. \"Reload Firing Port Weapon\" - initiates automated reloading process for M56 FPW. Requires a confirmation.
        \ Driver shortcuts:
        1. \"CTRL + Click\" - activates vehicle horn.
        \ - Gunner shortcuts:
        1. \"ALT + Click\" - toggles Turret Gyrostabilizer. (Exists only on vehicles with rotating turret, e.g. M34A2 Longstreet Light Tank)
        \ - 2. \"CTRL + Click\" - activates not destroyed activatable support module.
        \ - 3. \"Middle Mouse Button Click (MMB)\" - default shortcut to shoot currently not selected weapon if possible. Won't work if SHIFT + Click firing is toggled ON.
        \ - 4. \"SHIFT + Click\" - examines target as usual, unless \"G: Toggle Middle/Shift Clicking\" verb was used to toggle SHIFT + Click firing ON. In this case, it will fire currently not selected weapon if possible.
        " + Gunner shortcuts:
        1. \"ALT + Click\" - toggles Turret Gyrostabilizer. (Exists only on vehicles with rotating turret, e.g. M34A2 Longstreet Light Tank)
        " show_browser(user, dat, "Vehicle Controls Guide", "vehicle_help", "size=900x500") onclose(user, "vehicle_help") diff --git a/code/modules/vehicles/powerloader.dm b/code/modules/vehicles/powerloader.dm index 11beaf597985..6992269c7566 100644 --- a/code/modules/vehicles/powerloader.dm +++ b/code/modules/vehicles/powerloader.dm @@ -6,7 +6,7 @@ layer = POWERLOADER_LAYER //so the top appears above windows and wall mounts anchored = TRUE density = TRUE - luminosity = 5 + light_range = 5 move_delay = 8 buckling_y = 9 health = 200 @@ -338,6 +338,29 @@ opacity = FALSE pixel_x = -18 pixel_y = -5 + health = 100 + +/obj/structure/powerloader_wreckage/attack_alien(mob/living/carbon/xenomorph/attacking_xeno) + if(attacking_xeno.a_intent == INTENT_HELP) + return XENO_NO_DELAY_ACTION + + if(attacking_xeno.mob_size < MOB_SIZE_XENO) + to_chat(attacking_xeno, SPAN_XENOWARNING("You're too small to do any significant damage to this vehicle!")) + return XENO_NO_DELAY_ACTION + + attacking_xeno.animation_attack_on(src) + + attacking_xeno.visible_message(SPAN_DANGER("[attacking_xeno] slashes [src]!"), SPAN_DANGER("You slash [src]!")) + playsound(attacking_xeno, pick('sound/effects/metalhit.ogg', 'sound/weapons/alien_claw_metal1.ogg', 'sound/weapons/alien_claw_metal2.ogg', 'sound/weapons/alien_claw_metal3.ogg'), 25, 1) + + var/damage = (attacking_xeno.melee_vehicle_damage + rand(-5,5)) + + health -= damage + + if(health <= 0) + deconstruct(FALSE) + + return XENO_NONCOMBAT_ACTION /obj/structure/powerloader_wreckage/jd name = "\improper John Deere 4300 Power Loader wreckage" diff --git a/code/modules/vehicles/souto_mobile.dm b/code/modules/vehicles/souto_mobile.dm new file mode 100644 index 000000000000..fa559983d0a4 --- /dev/null +++ b/code/modules/vehicles/souto_mobile.dm @@ -0,0 +1,43 @@ +/obj/vehicle/souto + name = "\improper Soutomobile" + icon_state = "soutomobile" + desc = "Almost, but not quite, the best ride in the universe." + move_delay = 3 //The speed of a fed but shoeless pajamarine, or a bit slower than a heavy-armor marine. + buckling_y = 4 + layer = ABOVE_LYING_MOB_LAYER //Allows it to drive over people, but is below the driver. + +/obj/vehicle/souto/Initialize() + . = ..() + var/image/I = new(icon = 'icons/obj/vehicles/vehicles.dmi', icon_state = "soutomobile_overlay", layer = ABOVE_MOB_LAYER) //over mobs + overlays += I + +/obj/vehicle/souto/manual_unbuckle(mob/user) + if(buckled_mob && buckled_mob != user) + if(do_after(user, 20, INTERRUPT_ALL, BUSY_ICON_GENERIC)) + ..() + else ..() + +/obj/vehicle/souto/relaymove(mob/user, direction) + if(user.is_mob_incapacitated()) return + if(world.time > l_move_time + move_delay) + . = step(src, direction) + +/obj/vehicle/souto/super + desc = "The best ride in the universe, for the one-and-only Souto Man!" + health = 1000 + locked = FALSE + unacidable = TRUE + indestructible = TRUE + +/obj/vehicle/souto/super/explode() + for(var/mob/M as anything in viewers(7, src)) + M.show_message("Somehow, [src] still looks as bright and shiny as a new can of Souto Classic.", SHOW_MESSAGE_VISIBLE) + health = initial(health) //Souto Man never dies, and neither does his bike. + +/obj/vehicle/souto/super/buckle_mob(mob/M, mob/user) + if(!locked) //Vehicle is unlocked until first being mounted, since the Soutomobile is faction-locked and otherwise Souto Man cannot automatically buckle in on spawn as his equipment is spawned before his ID. + locked = TRUE + else if(M == user && M.faction != FACTION_SOUTO && locked == TRUE) //Are you a cool enough dude to drive this bike? Nah, nobody's THAT cool. + to_chat(user, SPAN_WARNING("Somehow, as you take hold of the handlebars, [src] manages to glare at you. You back off. We didn't sign up for haunted motorbikes, man.")) + return + ..() diff --git a/code/modules/vehicles/tank/tank.dm b/code/modules/vehicles/tank/tank.dm index 3ed4e6623ea1..147e359471df 100644 --- a/code/modules/vehicles/tank/tank.dm +++ b/code/modules/vehicles/tank/tank.dm @@ -36,7 +36,7 @@ move_momentum_build_factor = 1.8 move_turn_momentum_loss_factor = 0.6 - luminosity = 7 + vehicle_light_range = 7 // Rest (all the guns) is handled by the tank turret hardpoint hardpoints_allowed = list( @@ -157,7 +157,7 @@ if(!T) return FALSE - if(direction == reverse_dir[T.dir] || direction == T.dir) + if(direction == GLOB.reverse_dir[T.dir] || direction == T.dir) return FALSE T.user_rotation(user, turning_angle(T.dir, direction)) @@ -189,6 +189,8 @@ handle_direction(TANK) TANK.update_icon() + return TANK + /obj/effect/vehicle_spawner/tank/load_hardpoints(obj/vehicle/multitile/tank/V) V.add_hardpoint(new /obj/item/hardpoint/holder/tank_turret) @@ -201,6 +203,12 @@ /obj/effect/vehicle_spawner/tank/hull/load_hardpoints(obj/vehicle/multitile/tank/V) return +//Just the hull and it's broken TOO, you get the full experience +/obj/effect/vehicle_spawner/tank/hull/broken/spawn_vehicle() + var/obj/vehicle/multitile/tank/tonk = ..() + load_damage(tonk) + tonk.update_icon() + //PRESET: default hardpoints, destroyed /obj/effect/vehicle_spawner/tank/decrepit/spawn_vehicle() var/obj/vehicle/multitile/tank/TANK = new (loc) diff --git a/code/modules/vehicles/train.dm b/code/modules/vehicles/train.dm index 92358a1e0f27..cbad4535df72 100644 --- a/code/modules/vehicles/train.dm +++ b/code/modules/vehicles/train.dm @@ -54,8 +54,8 @@ //------------------------------------------- -/obj/vehicle/train/MouseDrop_T(atom/movable/C, mob/user as mob) - if(user.buckled || user.stat || user.is_mob_restrained() || !Adjacent(user) || !user.Adjacent(C) || !istype(C) || (user == C && !user.canmove)) +/obj/vehicle/train/MouseDrop_T(atom/movable/C, mob/living/user as mob) + if(user.buckled || user.stat || user.is_mob_restrained() || !Adjacent(user) || !user.Adjacent(C) || !istype(C) || (user == C && !(user.mobility_flags & MOBILITY_MOVE))) return if(istype(C,/obj/vehicle/train)) latch(C, user) @@ -71,7 +71,7 @@ if(!istype(usr, /mob/living/carbon/human)) return - if(!usr.canmove || usr.stat || usr.is_mob_restrained() || !Adjacent(usr)) + if(usr.is_mob_incapacitated() || !Adjacent(usr)) return unattach(usr) diff --git a/code/modules/vehicles/van/van.dm b/code/modules/vehicles/van/van.dm index 5e9e467bf56d..c4aa64360ec0 100644 --- a/code/modules/vehicles/van/van.dm +++ b/code/modules/vehicles/van/van.dm @@ -41,7 +41,7 @@ movement_sound = 'sound/vehicles/tank_driving.ogg' honk_sound = 'sound/vehicles/honk_2_truck.ogg' - luminosity = 8 + vehicle_light_range = 8 move_max_momentum = 3 @@ -92,13 +92,13 @@ if(mover in mobs_under) //can't collide with the thing you're buckled to return NO_BLOCKED_MOVEMENT - if(ismob(mover)) - var/mob/M = mover + if(isliving(mover)) + var/mob/living/M = mover if(M.mob_flags & SQUEEZE_UNDER_VEHICLES) add_under_van(M) return NO_BLOCKED_MOVEMENT - if(M.lying) + if(M.body_position == LYING_DOWN) return NO_BLOCKED_MOVEMENT if(M.mob_size >= MOB_SIZE_IMMOBILE && next_push < world.time) @@ -218,7 +218,7 @@ /obj/vehicle/multitile/van/proc/reset_overdrive() misc_multipliers["move"] += overdrive_speed_mult -/obj/vehicle/multitile/van/get_projectile_hit_boolean(obj/item/projectile/P) +/obj/vehicle/multitile/van/get_projectile_hit_boolean(obj/projectile/P) if(src == P.original) //clicking on the van itself will hit it. var/hitchance = P.get_effective_accuracy() if(prob(hitchance)) diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index 38c95d93881d..014452426a3c 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -5,7 +5,6 @@ density = TRUE anchored = TRUE animate_movement = 1 - luminosity = 2 can_buckle = TRUE // The mobs that are in each position/seat of the vehicle @@ -19,15 +18,19 @@ var/maxhealth = 100 var/fire_dam_coeff = 1 var/brute_dam_coeff = 1 - var/open = 0 //Maint panel + ///Maint panel + var/open = 0 var/locked = TRUE var/stat = 0 - var/powered = 0 //set if vehicle is powered and should use fuel when moving - var/move_delay = 1 //set this to limit the speed of the vehicle + ///set if vehicle is powered and should use fuel when moving + var/powered = 0 + ///set this to limit the speed of the vehicle + var/move_delay = 1 var/buckling_y = 0 var/obj/item/cell/cell - var/charge_use = 5 //set this to adjust the amount of power the vehicle uses per move + ///set this to adjust the amount of power the vehicle uses per move + var/charge_use = 5 can_block_movement = TRUE //------------------------------------------- @@ -99,7 +102,7 @@ new /obj/effect/decal/cleanable/blood/oil(src.loc) healthcheck() -/obj/vehicle/bullet_act(obj/item/projectile/P) +/obj/vehicle/bullet_act(obj/projectile/P) var/damage = P.damage health -= damage ..() @@ -113,6 +116,7 @@ return /obj/vehicle/emp_act(severity) + . = ..() var/was_on = on stat |= EMPED new /obj/effect/overlay/temp/emp_sparks (loc) @@ -126,6 +130,27 @@ /obj/vehicle/attack_remote(mob/user as mob) return +/obj/vehicle/attack_alien(mob/living/carbon/xenomorph/attacking_xeno) + if(attacking_xeno.a_intent == INTENT_HELP) + return XENO_NO_DELAY_ACTION + + if(attacking_xeno.mob_size < MOB_SIZE_XENO) + to_chat(attacking_xeno, SPAN_XENOWARNING("You're too small to do any significant damage to this vehicle!")) + return XENO_NO_DELAY_ACTION + + attacking_xeno.animation_attack_on(src) + + attacking_xeno.visible_message(SPAN_DANGER("[attacking_xeno] slashes [src]!"), SPAN_DANGER("You slash [src]!")) + playsound(attacking_xeno, pick('sound/effects/metalhit.ogg', 'sound/weapons/alien_claw_metal1.ogg', 'sound/weapons/alien_claw_metal2.ogg', 'sound/weapons/alien_claw_metal3.ogg'), 25, 1) + + var/damage = (attacking_xeno.melee_vehicle_damage + rand(-5,5)) * brute_dam_coeff + + health -= damage + + healthcheck() + + return XENO_NONCOMBAT_ACTION + //------------------------------------------- // Vehicle procs //------------------------------------------- @@ -145,13 +170,13 @@ if(powered && cell.charge < charge_use) return 0 on = 1 - SetLuminosity(initial(luminosity)) + set_light(initial(light_range)) update_icon() return 1 /obj/vehicle/proc/turn_off() on = 0 - SetLuminosity(0) + set_light(0) update_icon() /obj/vehicle/proc/explode() @@ -241,57 +266,8 @@ . = ..() seats[VEHICLE_DRIVER] = null -/obj/vehicle/Destroy() - SetLuminosity(0) - . = ..() - //------------------------------------------------------- // Stat update procs //------------------------------------------------------- /obj/vehicle/proc/update_stats() return - -/obj/vehicle/souto - name = "\improper Soutomobile" - icon_state = "soutomobile" - desc = "Almost, but not quite, the best ride in the universe." - move_delay = 3 //The speed of a fed but shoeless pajamarine, or a bit slower than a heavy-armor marine. - buckling_y = 4 - layer = ABOVE_LYING_MOB_LAYER //Allows it to drive over people, but is below the driver. - -/obj/vehicle/souto/Initialize() - . = ..() - var/image/I = new(icon = 'icons/obj/vehicles/vehicles.dmi', icon_state = "soutomobile_overlay", layer = ABOVE_MOB_LAYER) //over mobs - overlays += I - -/obj/vehicle/souto/manual_unbuckle(mob/user) - if(buckled_mob && buckled_mob != user) - if(do_after(user, 20, INTERRUPT_ALL, BUSY_ICON_GENERIC)) - ..() - else ..() - -/obj/vehicle/souto/relaymove(mob/user, direction) - if(user.is_mob_incapacitated()) return - if(world.time > l_move_time + move_delay) - . = step(src, direction) - - -/obj/vehicle/souto/super - desc = "The best ride in the universe, for the one-and-only Souto Man!" - health = 1000 - locked = FALSE - unacidable = TRUE - indestructible = TRUE - -/obj/vehicle/souto/super/explode() - for(var/mob/M as anything in viewers(7, src)) - M.show_message("Somehow, [src] still looks as bright and shiny as a new can of Souto Classic.", SHOW_MESSAGE_VISIBLE) - health = initial(health) //Souto Man never dies, and neither does his bike. - -/obj/vehicle/souto/super/buckle_mob(mob/M, mob/user) - if(!locked) //Vehicle is unlocked until first being mounted, since the Soutomobile is faction-locked and otherwise Souto Man cannot automatically buckle in on spawn as his equipment is spawned before his ID. - locked = TRUE - else if(M == user && M.faction != FACTION_SOUTO && locked == TRUE) //Are you a cool enough dude to drive this bike? Nah, nobody's THAT cool. - to_chat(user, SPAN_WARNING("Somehow, as you take hold of the handlebars, [src] manages to glare at you. You back off. We didn't sign up for haunted motorbikes, man.")) - return - ..() diff --git a/code/names.dm b/code/names.dm deleted file mode 100644 index 0961d12f7d45..000000000000 --- a/code/names.dm +++ /dev/null @@ -1,39 +0,0 @@ -var/list/ai_names = file2list("strings/ai.txt") -var/list/first_names_male = file2list("strings/first_male.txt") -var/list/first_names_female = file2list("strings/first_female.txt") -var/list/last_names = file2list("strings/last.txt") -var/list/clown_names = file2list("strings/clown.txt") -var/list/operation_titles = file2list("strings/operation_title.txt") -var/list/operation_prefixes = file2list("strings/operation_prefix.txt") -var/list/operation_postfixes = file2list("strings/operation_postfix.txt") - -var/list/verbs = file2list("strings/verbs.txt") -//loaded on startup because of " -//would include in rsc if ' was used - - -var/list/first_names_male_clf = list("Alan","Jack","Bil","Jonathan","John","Shiro","Gareth","Clark","Sam", "Lionel", "Aaron", "Charlie", "Scott", "Winston", "Aidan", "Ellis", "Mason", "Wesley", "Nicholas", "Calvin", "Nishikawa", "Hiroto", "Chiba", "Ouchi", "Furuse", "Takagi", "Oba", "Kishimoto") -var/list/first_names_female_clf = list("Emma", "Adelynn", "Mary", "Halie", "Chelsea", "Lexie", "Arya", "Alicia", "Selah", "Amber", "Heather", "Myra", "Heidi", "Charlotte", "Oliva", "Lydia", "Tia", "Riko", "Ari", "Machida", "Ueki", "Mihara", "Noda") -var/list/last_names_clf = list("Hawkins","Rickshaw","Elliot","Billard","Cooper","Fox", "Barlow", "Barrows", "Stewart", "Morgan", "Green", "Stone", "Burr", "Hunt", "Yuko", "Gesshin", "Takanibu", "Tetsuzan", "Tomomi", "Bokkai", "Takesi") - -var/list/first_names_male_colonist = list("Alan","Jack","Bil","Jonathan","John","Shiro","Gareth","Clark","Sam", "Lionel", "Aaron", "Charlie", "Scott", "Winston", "Aidan", "Ellis", "Mason", "Wesley", "Nicholas", "Calvin", "Nishikawa", "Hiroto", "Chiba", "Ouchi", "Furuse", "Takagi", "Oba", "Kishimoto") -var/list/first_names_female_colonist = list("Emma", "Adelynn", "Mary", "Halie", "Chelsea", "Lexie", "Arya", "Alicia", "Selah", "Amber", "Heather", "Myra", "Heidi", "Charlotte", "Ashley", "Raven", "Tori", "Anne", "Madison", "Oliva", "Lydia", "Tia", "Riko", "Ari", "Machida", "Ueki", "Mihara", "Noda") -var/list/last_names_colonist = list("Hawkins","Rickshaw","Elliot","Billard","Cooper","Fox", "Barlow", "Barrows", "Stewart", "Morgan", "Green", "Stone", "Titan", "Crowe", "Krantz", "Pathillo", "Driggers", "Burr", "Hunt", "Yuko", "Gesshin", "Takanibu", "Tetsuzan", "Tomomi", "Bokkai", "Takesi") - -var/list/first_names_male_upp = list("Badai","Mongkeemur","Alexei","Andrei","Artyom","Viktor","Xiangai","Ivan","Choban","Oleg", "Dayan", "Taghi", "Batu", "Arik", "Orda", "Ghazan", "Bala", "Gao", "Zhan", "Ren", "Hou", "Xue", "Serafim", "Luca", "Su", "György", "István", "Mihály", "Vladimir", "Aleksandr", "Fyodor", "Bhodar", "Qazem", "Łukasz", "Miłogost", "Radogost", "Uniegost", "Hostirad", "Hostimil", "Hostisvit", "Lubgost", "Gościsław", "Vseslav", "Bohuměr", "Bronisław", "Česćiměr", "Dobysław", "Horisław", "Jaroměr", "Mirosław", "Mječisław", "Radoměr", "Stanij", "Stanisław", "Wjeleměr", "Wójsław") -var/list/first_names_female_upp = list("Altani","Cirina","Anastasiya","Saran","Wei","Oksana","Ren","Svena","Tatyana","Yaroslava", "Izabella", "Kata", "Krisztina", "Miruna", "Flori", "Lucia", "Anica", "Li", "Yimu", "Alona", "Hsiau-Li", "Xiaoling", "Erhong", "Baśka", "Angela", "Angelina", "Angja", "Ankica", "Biljana", "Bisera", "Bistra", "Blaga", "Blagica", "Blagorodna", "Verka", "Vladica", "Denica", "Živka", "Zlata", "Jagoda", "Letka", "Ljupka", "Mila", "Mirjana", "Mirka", "Rada", "Radmila", "Slavica", "Slavka", "Snežana", "Stojna", "Ubavka", "Jaromir", "Mscëwòj", "Subisłôw", "Swiãtopôłk", "Ji-Sun", "Chaeyong", "Chaewon", "Saerom", "Seoyeong", "Jiheon", "Hayoung") -var/list/last_names_upp = list("Azarov","Bogdanov","Barsukov","Golovin","Davydov","Khan","Noica","Barbu","Zhukov","Ivanov","Mihai","Kasputin","Belov", "Belova","Melnikov", "Vasilevsky", "Aleksander", "Halkovich", "Stanislaw", "Proca", "Zaituc", "Arcos", "Kubat", "Kral", "Volf", "Xun", "Jia", "Bachoń", "Wang", "Ji", "Xiang", "Zhang", "Mei", "Ma", "Kim", "Yi", "Ri", "Pak", "Chong", "Baek", "Kwon", "Hwang", "Roh", "Lee", "Song") - -var/list/first_names_male_pmc = list("Owen","Luka","Nelson","Branson", "Tyson", "Leo", "Bryant", "Kobe", "Rohan", "Riley", "Aidan", "Watase","Egawa", "Hisakawa", "Koide", "Remy", "Martial", "Magnus", "Heiko", "Lennard") -var/list/first_names_female_pmc = list("Madison","Jessica","Anna","Juliet", "Olivia", "Lea", "Diane", "Kaori", "Beatrice", "Riley", "Amy", "Natsue","Yumi", "Aiko", "Fujiko", "Jennifer", "Ashley", "Mary", "Hitomi", "Lisa") -var/list/last_names_pmc = list("Bates","Shaw","Hansen","Black", "Chambers", "Hall", "Gibson", "Weiss", "Waller", "Burton", "Bakin", "Rohan", "Naomichi", "Yakumo", "Yosai", "Gallagher", "Hiles", "Bourdon", "Strassman", "Palau") - -var/list/first_names_male_gladiator = list("Augustus", "Maximus", "Octavius", "Septimus", "Titus", "Brutus", "Caesar", "Justinian") -var/list/first_names_female_gladiator = list("Aelia", "Aquila", "Caecilia", "Camilla", "Claudia", "Flavia", "Martina", "Theodora") - -var/list/first_names_male_dutch = list("Raymond", "Jesse", "Jack", "John", "Sam", "Aaron", "Charlie", "Ellis", "Nick", "Francis", "Louis") -var/list/first_names_female_dutch = list("Chelsea", "Mira", "Jessica", "Catherine", "Eliza", "Emma", "Ashley", "Annie", "Alicia", "Miranda", "Ellen") - -var/list/monkey_names = list("Abu", "Aldo", "Bear", "Bingo", "Clyde", "Crystal", "Gordo", "George", "Koko", "Marcel", "Nim", "Rafiki", "Spike", "Banana", "Boots", "Bubbles", "Smiley", "Winston") - -var/list/weapon_surnames = list("Adze", "Axe", "Bagh Nakha", "Bo", "Bola", "Bow", "Bowman", "Cannon", "Carbine", "Cestus", "Club", "Culverin", "Dagger", "Dao", "Derringer", "Dha", "Dussack", "Emeici", "Falchion", "Fan", "Flyssa", "Gauntlet", "Hammer", "Halberd", "Harquebus", "Hatchet", "Hwando", "Katar", "Kampilan", "Knuckles", "Lance", "Lancer", "Larim", "Maduvu", "Mace", "Maru", "Mauser", "Messer", "Mine", "Mubucae", "Nyepel", "Onager", "Pata", "Pike", "Ram", "Saber", "Seax", "Shamsir", "Sickle", "Sling", "Spear", "Spears", "Staff", "Sword", "Tekko") diff --git a/code/span_macros.dm b/code/span_macros.dm index d5e9cdcb9c36..b6a0e79a956b 100644 --- a/code/span_macros.dm +++ b/code/span_macros.dm @@ -46,6 +46,7 @@ #define SPAN_ADMIN(X) "[X]" #define SPAN_ADMINHELP(X) ("" + X + "") #define SPAN_ADMINSAY(str) ("" + str + "") +#define SPAN_MOD(str) ("" + str + "") #define SPAN_MENTORHELP(X) ("" + X + "") #define SPAN_MENTORSAY(X) ("" + X + "") #define SPAN_MENTORBODY(X) ("" + X + "") @@ -55,6 +56,7 @@ // Misc #define SPAN_BOLD(X) "[X]" #define SPAN_UNDERLINE(X) "[X]" +#define SPAN_LARGE(X) "[X]" #define SPAN_BOLDANNOUNCE(X) "[X]" #define SPAN_BOLDNOTICE(X) "[X]" @@ -104,3 +106,4 @@ #define SPAN_MAROON(X) "[X]" #define SPAN_STAFF_IC(X) "[X]" +#define SPAN_BIGNOTICE(X) "[X]" diff --git a/code/stylesheet.dm b/code/stylesheet.dm index 8e1ce4069b10..ab74dc547cfa 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -63,6 +63,7 @@ em {font-style: normal; font-weight: bold;} .echoradio {color: #3EB489;} .cryoradio {color: #4a4740;} .hcradio {color: #318779;} +.pvstradio {color: #9b0612;} .medium { font-size: 2} .big { font-size: 2} diff --git a/colonialmarines.dme b/colonialmarines.dme index 9feb76faf408..64760c4f2bc9 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -1,6 +1,6 @@ // DM Environment file for colonialmarines.dme. // All manual changes should be made outside the BEGIN_ and END_ blocks. - // New source code should be placed in .dm files: choose File/New --> Code File. +// New source code should be placed in .dm files: choose File/New --> Code File. // BEGIN_INTERNALS // END_INTERNALS // BEGIN_FILE_DIR @@ -11,12 +11,12 @@ #define DEBUG // END_PREFERENCES // BEGIN_INCLUDE +#include "code\__odlint.dm" #include "code\_byond_version_compat.dm" #include "code\_compile_options.dm" #include "code\_experiments.dm" #include "code\_macros.dm" #include "code\global.dm" -#include "code\names.dm" #include "code\span_macros.dm" #include "code\stylesheet.dm" #include "code\__DEFINES\__game.dm" @@ -31,7 +31,11 @@ #include "code\__DEFINES\_tick.dm" #include "code\__DEFINES\access.dm" #include "code\__DEFINES\admin.dm" +#include "code\__DEFINES\alerts.dm" +#include "code\__DEFINES\ARES.dm" +#include "code\__DEFINES\assert.dm" #include "code\__DEFINES\atmospherics.dm" +#include "code\__DEFINES\autofire.dm" #include "code\__DEFINES\autolathe.dm" #include "code\__DEFINES\blood.dm" #include "code\__DEFINES\bsql.config.dm" @@ -50,6 +54,7 @@ #include "code\__DEFINES\db_defs.dm" #include "code\__DEFINES\defenses.dm" #include "code\__DEFINES\dropships.dm" +#include "code\__DEFINES\emote_panels.dm" #include "code\__DEFINES\equipment.dm" #include "code\__DEFINES\events.dm" #include "code\__DEFINES\fire.dm" @@ -57,6 +62,7 @@ #include "code\__DEFINES\fonts.dm" #include "code\__DEFINES\generators.dm" #include "code\__DEFINES\guns.dm" +#include "code\__DEFINES\hijack.dm" #include "code\__DEFINES\html.dm" #include "code\__DEFINES\hud.dm" #include "code\__DEFINES\human.dm" @@ -72,6 +78,7 @@ #include "code\__DEFINES\MC.dm" #include "code\__DEFINES\minimap.dm" #include "code\__DEFINES\misc.dm" +#include "code\__DEFINES\mob.dm" #include "code\__DEFINES\mob_hud.dm" #include "code\__DEFINES\mobs.dm" #include "code\__DEFINES\mode.dm" @@ -93,8 +100,10 @@ #include "code\__DEFINES\speech_channels.dm" #include "code\__DEFINES\stamina.dm" #include "code\__DEFINES\stats.dm" +#include "code\__DEFINES\status_effects.dm" #include "code\__DEFINES\STUI.dm" #include "code\__DEFINES\subsystems.dm" +#include "code\__DEFINES\supply.dm" #include "code\__DEFINES\surgery.dm" #include "code\__DEFINES\techtree.dm" #include "code\__DEFINES\text.dm" @@ -103,6 +112,7 @@ #include "code\__DEFINES\tgui.dm" #include "code\__DEFINES\traits.dm" #include "code\__DEFINES\turf_flags.dm" +#include "code\__DEFINES\tutorial.dm" #include "code\__DEFINES\unit_tests.dm" #include "code\__DEFINES\urls.dm" #include "code\__DEFINES\vehicle.dm" @@ -119,15 +129,28 @@ #include "code\__DEFINES\dcs\signals\signals_global.dm" #include "code\__DEFINES\dcs\signals\signals_subsystem.dm" #include "code\__DEFINES\dcs\signals\atom\signals_atom.dm" +#include "code\__DEFINES\dcs\signals\atom\signals_cell.dm" #include "code\__DEFINES\dcs\signals\atom\signals_item.dm" #include "code\__DEFINES\dcs\signals\atom\signals_movable.dm" #include "code\__DEFINES\dcs\signals\atom\signals_obj.dm" #include "code\__DEFINES\dcs\signals\atom\signals_projectile.dm" #include "code\__DEFINES\dcs\signals\atom\signals_turf.dm" +#include "code\__DEFINES\dcs\signals\atom\mob\signals_mind.dm" #include "code\__DEFINES\dcs\signals\atom\mob\signals_mob.dm" #include "code\__DEFINES\dcs\signals\atom\mob\living\signals_human.dm" #include "code\__DEFINES\dcs\signals\atom\mob\living\signals_living.dm" #include "code\__DEFINES\dcs\signals\atom\mob\living\signals_xeno.dm" +#include "code\__DEFINES\paygrade_defs\civilian.dm" +#include "code\__DEFINES\paygrade_defs\cmb.dm" +#include "code\__DEFINES\paygrade_defs\dutch.dm" +#include "code\__DEFINES\paygrade_defs\marines.dm" +#include "code\__DEFINES\paygrade_defs\mercs.dm" +#include "code\__DEFINES\paygrade_defs\navy.dm" +#include "code\__DEFINES\paygrade_defs\paygrade.dm" +#include "code\__DEFINES\paygrade_defs\provost.dm" +#include "code\__DEFINES\paygrade_defs\twe.dm" +#include "code\__DEFINES\paygrade_defs\upp.dm" +#include "code\__DEFINES\paygrade_defs\weyland.dm" #include "code\__DEFINES\typecheck\assemblers.dm" #include "code\__DEFINES\typecheck\datums.dm" #include "code\__DEFINES\typecheck\generic_types.dm" @@ -138,6 +161,7 @@ #include "code\__HELPERS\#maths.dm" #include "code\__HELPERS\_lists.dm" #include "code\__HELPERS\_time.dm" +#include "code\__HELPERS\animations.dm" #include "code\__HELPERS\chat.dm" #include "code\__HELPERS\cmp.dm" #include "code\__HELPERS\datums.dm" @@ -149,6 +173,7 @@ #include "code\__HELPERS\icons.dm" #include "code\__HELPERS\job.dm" #include "code\__HELPERS\level_traits.dm" +#include "code\__HELPERS\lighting.dm" #include "code\__HELPERS\lists.dm" #include "code\__HELPERS\logging.dm" #include "code\__HELPERS\matrices.dm" @@ -158,7 +183,9 @@ #include "code\__HELPERS\qdel.dm" #include "code\__HELPERS\sanitize_values.dm" #include "code\__HELPERS\shell.dm" +#include "code\__HELPERS\status_effects.dm" #include "code\__HELPERS\text.dm" +#include "code\__HELPERS\traits.dm" #include "code\__HELPERS\type2type.dm" #include "code\__HELPERS\unsorted.dm" #include "code\__HELPERS\verb_helpers.dm" @@ -171,16 +198,17 @@ #include "code\_globalvars\misc.dm" #include "code\_globalvars\regexes.dm" #include "code\_globalvars\tgui.dm" +#include "code\_globalvars\lists\clans.dm" #include "code\_globalvars\lists\client.dm" #include "code\_globalvars\lists\keybindings.dm" #include "code\_globalvars\lists\mapping_globals.dm" #include "code\_globalvars\lists\mobs.dm" +#include "code\_globalvars\lists\names.dm" #include "code\_globalvars\lists\object_lists.dm" #include "code\_onclick\adjacent.dm" #include "code\_onclick\ai.dm" #include "code\_onclick\click.dm" #include "code\_onclick\click_hold.dm" -#include "code\_onclick\cyborg.dm" #include "code\_onclick\double_click.dm" #include "code\_onclick\drag_drop.dm" #include "code\_onclick\human.dm" @@ -199,14 +227,12 @@ #include "code\_onclick\hud\other_mobs.dm" #include "code\_onclick\hud\radial.dm" #include "code\_onclick\hud\radial_persistent.dm" -#include "code\_onclick\hud\robot.dm" #include "code\_onclick\hud\screen_object_holder.dm" #include "code\_onclick\hud\screen_objects.dm" #include "code\_onclick\hud\yautja.dm" #include "code\_onclick\hud\rendering\plane_master.dm" #include "code\_onclick\hud\rendering\plane_master_controller.dm" #include "code\_onclick\hud\rendering\render_plate.dm" -#include "code\controllers\_DynamicAreaLighting_TG.dm" #include "code\controllers\shuttle_controller.dm" #include "code\controllers\topic.dm" #include "code\controllers\configuration\config_entry.dm" @@ -223,9 +249,9 @@ #include "code\controllers\mc\master.dm" #include "code\controllers\mc\subsystem.dm" #include "code\controllers\subsystem\acid_pillar.dm" -#include "code\controllers\subsystem\admin.dm" #include "code\controllers\subsystem\assets.dm" #include "code\controllers\subsystem\atoms.dm" +#include "code\controllers\subsystem\autofire.dm" #include "code\controllers\subsystem\cellauto.dm" #include "code\controllers\subsystem\chat.dm" #include "code\controllers\subsystem\communications.dm" @@ -233,20 +259,21 @@ #include "code\controllers\subsystem\decorator.dm" #include "code\controllers\subsystem\disease.dm" #include "code\controllers\subsystem\events.dm" -#include "code\controllers\subsystem\fail_to_topic.dm" -#include "code\controllers\subsystem\fast_machinery.dm" #include "code\controllers\subsystem\fz_transitions.dm" +#include "code\controllers\subsystem\game_decorator.dm" #include "code\controllers\subsystem\garbage.dm" -#include "code\controllers\subsystem\htmlui.dm" +#include "code\controllers\subsystem\hijack.dm" #include "code\controllers\subsystem\human.dm" #include "code\controllers\subsystem\inactivity.dm" +#include "code\controllers\subsystem\influxdriver.dm" +#include "code\controllers\subsystem\influxmcstats.dm" +#include "code\controllers\subsystem\influxstats.dm" #include "code\controllers\subsystem\input.dm" #include "code\controllers\subsystem\interior.dm" #include "code\controllers\subsystem\item_cleanup.dm" #include "code\controllers\subsystem\lighting.dm" #include "code\controllers\subsystem\machinery.dm" #include "code\controllers\subsystem\mapping.dm" -#include "code\controllers\subsystem\midi.dm" #include "code\controllers\subsystem\minimap.dm" #include "code\controllers\subsystem\mob.dm" #include "code\controllers\subsystem\nanoui.dm" @@ -259,6 +286,7 @@ #include "code\controllers\subsystem\police_clues.dm" #include "code\controllers\subsystem\power.dm" #include "code\controllers\subsystem\predships.dm" +#include "code\controllers\subsystem\profiler.dm" #include "code\controllers\subsystem\projectiles.dm" #include "code\controllers\subsystem\quadtrees.dm" #include "code\controllers\subsystem\reagents.dm" @@ -266,15 +294,11 @@ #include "code\controllers\subsystem\round_recording.dm" #include "code\controllers\subsystem\shuttle.dm" #include "code\controllers\subsystem\shuttles.dm" -#include "code\controllers\subsystem\smoke_system.dm" #include "code\controllers\subsystem\sound.dm" #include "code\controllers\subsystem\sound_loops.dm" #include "code\controllers\subsystem\soundscape.dm" -#include "code\controllers\subsystem\stamina.dm" #include "code\controllers\subsystem\statpanel.dm" -#include "code\controllers\subsystem\stats_collector.dm" #include "code\controllers\subsystem\techtree.dm" -#include "code\controllers\subsystem\teleporter.dm" #include "code\controllers\subsystem\tgui.dm" #include "code\controllers\subsystem\ticker.dm" #include "code\controllers\subsystem\time_track.dm" @@ -284,16 +308,17 @@ #include "code\controllers\subsystem\weather.dm" #include "code\controllers\subsystem\x_evolution.dm" #include "code\controllers\subsystem\xeno.dm" -#include "code\controllers\subsystem\xenocon.dm" -#include "code\controllers\subsystem\init\earlyruntimes.dm" #include "code\controllers\subsystem\init\landmarks.dm" #include "code\controllers\subsystem\init\law.dm" #include "code\controllers\subsystem\init\lobby_art.dm" +#include "code\controllers\subsystem\processing\defprocess.dm" #include "code\controllers\subsystem\processing\effects.dm" +#include "code\controllers\subsystem\processing\fasteffects.dm" #include "code\controllers\subsystem\processing\fastobj.dm" #include "code\controllers\subsystem\processing\hive_status.dm" #include "code\controllers\subsystem\processing\obj_tab_items.dm" #include "code\controllers\subsystem\processing\objects.dm" +#include "code\controllers\subsystem\processing\oldeffects.dm" #include "code\controllers\subsystem\processing\processing.dm" #include "code\controllers\subsystem\processing\shield_pillar.dm" #include "code\controllers\subsystem\processing\slowobj.dm" @@ -322,13 +347,11 @@ #include "code\datums\mind.dm" #include "code\datums\mixed.dm" #include "code\datums\mob_hud.dm" -#include "code\datums\modules.dm" #include "code\datums\movement_detector.dm" #include "code\datums\mutable_appearance.dm" #include "code\datums\quadtree.dm" #include "code\datums\recipe.dm" #include "code\datums\shuttles.dm" -#include "code\datums\skills.dm" #include "code\datums\soundOutput.dm" #include "code\datums\tgs_event_handler.dm" #include "code\datums\vehicles.dm" @@ -347,6 +370,22 @@ #include "code\datums\agents\tools\toolbox.dm" #include "code\datums\agents\tools\tracker.dm" #include "code\datums\agents\tools\tranq_gun.dm" +#include "code\datums\ammo\ammo.dm" +#include "code\datums\ammo\energy.dm" +#include "code\datums\ammo\misc.dm" +#include "code\datums\ammo\rocket.dm" +#include "code\datums\ammo\shrapnel.dm" +#include "code\datums\ammo\xeno.dm" +#include "code\datums\ammo\bullet\bullet.dm" +#include "code\datums\ammo\bullet\lever_action.dm" +#include "code\datums\ammo\bullet\pistol.dm" +#include "code\datums\ammo\bullet\revolver.dm" +#include "code\datums\ammo\bullet\rifle.dm" +#include "code\datums\ammo\bullet\shotgun.dm" +#include "code\datums\ammo\bullet\smg.dm" +#include "code\datums\ammo\bullet\sniper.dm" +#include "code\datums\ammo\bullet\special_ammo.dm" +#include "code\datums\ammo\bullet\tank.dm" #include "code\datums\autocells\auto_cell.dm" #include "code\datums\autocells\explosion.dm" #include "code\datums\autocells\vomit_wave.dm" @@ -355,17 +394,24 @@ #include "code\datums\components\armor_link.dm" #include "code\datums\components\bad_leg.dm" #include "code\datums\components\bonus_damage_stack.dm" +#include "code\datums\components\cell.dm" #include "code\datums\components\cluster_stack.dm" #include "code\datums\components\connect_mob_behalf.dm" +#include "code\datums\components\crate_tag.dm" #include "code\datums\components\footstep.dm" #include "code\datums\components\healing_reduction.dm" #include "code\datums\components\id_lock.dm" #include "code\datums\components\label.dm" #include "code\datums\components\orbiter.dm" +#include "code\datums\components\overlay_lighting.dm" #include "code\datums\components\rename.dm" #include "code\datums\components\speed_modifier.dm" #include "code\datums\components\toxin_buildup.dm" +#include "code\datums\components\tutorial_status.dm" #include "code\datums\components\weed_damage_reduction.dm" +#include "code\datums\components\weed_food.dm" +#include "code\datums\components\autofire\_automated_fire.dm" +#include "code\datums\components\autofire\autofire.dm" #include "code\datums\components\xeno\shield_slash.dm" #include "code\datums\construction\construction_template.dm" #include "code\datums\construction\xenomorph\construction_template_xenomorph.dm" @@ -386,7 +432,6 @@ #include "code\datums\diseases\pierrot_throat.dm" #include "code\datums\diseases\plasmatoid.dm" #include "code\datums\diseases\rhumba_beat.dm" -#include "code\datums\diseases\robotic_transformation.dm" #include "code\datums\diseases\xeno_transformation.dm" #include "code\datums\diseases\advance\advance.dm" #include "code\datums\diseases\advance\presets.dm" @@ -430,6 +475,7 @@ #include "code\datums\elements\_element.dm" #include "code\datums\elements\bloody_feet.dm" #include "code\datums\elements\drop_retrieval.dm" +#include "code\datums\elements\light_blocking.dm" #include "code\datums\elements\mouth_drop_item.dm" #include "code\datums\elements\poor_eyesight_correction.dm" #include "code\datums\elements\suturing.dm" @@ -438,18 +484,21 @@ #include "code\datums\elements\bullet_trait\iff.dm" #include "code\datums\elements\bullet_trait\ignored_range.dm" #include "code\datums\elements\bullet_trait\incendiary.dm" -#include "code\datums\elements\bullet_trait\penetrating.dm" +#include "code\datums\elements\bullet_trait\penetrating\heavy.dm" +#include "code\datums\elements\bullet_trait\penetrating\penetrating.dm" #include "code\datums\elements\traitbound\_traitbound.dm" #include "code\datums\elements\traitbound\crawler.dm" #include "code\datums\elements\traitbound\gun_silenced.dm" #include "code\datums\elements\traitbound\leadership.dm" #include "code\datums\emergency_calls\big_game_hunter.dm" +#include "code\datums\emergency_calls\cbrn.dm" #include "code\datums\emergency_calls\clf.dm" #include "code\datums\emergency_calls\cmb.dm" #include "code\datums\emergency_calls\colonist.dm" #include "code\datums\emergency_calls\contractor.dm" #include "code\datums\emergency_calls\cryo_marines.dm" #include "code\datums\emergency_calls\cryo_marines_heavy.dm" +#include "code\datums\emergency_calls\cryo_spec.dm" #include "code\datums\emergency_calls\custom.dm" #include "code\datums\emergency_calls\deathsquad.dm" #include "code\datums\emergency_calls\deus_vult.dm" @@ -466,6 +515,7 @@ #include "code\datums\emergency_calls\pmc.dm" #include "code\datums\emergency_calls\provost.dm" #include "code\datums\emergency_calls\riot.dm" +#include "code\datums\emergency_calls\royal_marines.dm" #include "code\datums\emergency_calls\souto.dm" #include "code\datums\emergency_calls\supplies.dm" #include "code\datums\emergency_calls\tank_crew.dm" @@ -499,6 +549,7 @@ #include "code\datums\factions\faction.dm" #include "code\datums\factions\helpers.dm" #include "code\datums\factions\pmc.dm" +#include "code\datums\factions\royalmarinescommando.dm" #include "code\datums\factions\upp.dm" #include "code\datums\factions\uscm.dm" #include "code\datums\helper_datums\getrev.dm" @@ -513,6 +564,7 @@ #include "code\datums\keybinding\emote.dm" #include "code\datums\keybinding\human.dm" #include "code\datums\keybinding\human_combat.dm" +#include "code\datums\keybinding\human_inventory.dm" #include "code\datums\keybinding\living.dm" #include "code\datums\keybinding\mob.dm" #include "code\datums\keybinding\movement.dm" @@ -521,6 +573,7 @@ #include "code\datums\langchat\langchat.dm" #include "code\datums\looping_sounds\_looping_sound.dm" #include "code\datums\looping_sounds\item_sounds.dm" +#include "code\datums\looping_sounds\misc_sounds.dm" #include "code\datums\origin\civilian.dm" #include "code\datums\origin\origin.dm" #include "code\datums\origin\upp.dm" @@ -535,7 +588,7 @@ #include "code\datums\pain\pain_zombie.dm" #include "code\datums\paygrades\helper.dm" #include "code\datums\paygrades\paygrade.dm" -#include "code\datums\paygrades\factions\civillian\civilian.dm" +#include "code\datums\paygrades\factions\other\civilian.dm" #include "code\datums\paygrades\factions\other\cmb.dm" #include "code\datums\paygrades\factions\other\contractors.dm" #include "code\datums\paygrades\factions\other\dutch_dozen.dm" @@ -546,13 +599,28 @@ #include "code\datums\paygrades\factions\uscm\marine.dm" #include "code\datums\paygrades\factions\uscm\navy.dm" #include "code\datums\paygrades\factions\uscm\provost.dm" -#include "code\datums\paygrades\factions\wy\goons.dm" #include "code\datums\paygrades\factions\wy\pmc.dm" #include "code\datums\paygrades\factions\wy\wy.dm" #include "code\datums\redis\redis_message.dm" #include "code\datums\redis\callbacks\_redis_callback.dm" #include "code\datums\redis\callbacks\asay.dm" -#include "code\datums\redis\callbacks\msay.dm" +#include "code\datums\skills\civilian.dm" +#include "code\datums\skills\clf.dm" +#include "code\datums\skills\cmb.dm" +#include "code\datums\skills\commando.dm" +#include "code\datums\skills\contractor.dm" +#include "code\datums\skills\dutch.dm" +#include "code\datums\skills\forecon.dm" +#include "code\datums\skills\freelancer.dm" +#include "code\datums\skills\gladiator.dm" +#include "code\datums\skills\mercenary.dm" +#include "code\datums\skills\misc.dm" +#include "code\datums\skills\pmc.dm" +#include "code\datums\skills\rmc.dm" +#include "code\datums\skills\skills.dm" +#include "code\datums\skills\synthetic.dm" +#include "code\datums\skills\upp.dm" +#include "code\datums\skills\uscm.dm" #include "code\datums\stamina\_stamina.dm" #include "code\datums\stamina\none.dm" #include "code\datums\statistics\cause_data.dm" @@ -574,6 +642,12 @@ #include "code\datums\statistics\random_facts\kills_fact.dm" #include "code\datums\statistics\random_facts\random_fact.dm" #include "code\datums\statistics\random_facts\revives_fact.dm" +#include "code\datums\status_effects\_status_effect.dm" +#include "code\datums\status_effects\_status_effect_helpers.dm" +#include "code\datums\status_effects\grouped_effect.dm" +#include "code\datums\status_effects\limited_effect.dm" +#include "code\datums\status_effects\stacking_effect.dm" +#include "code\datums\status_effects\debuffs\debuffs.dm" #include "code\datums\supply_packs\_supply_packs.dm" #include "code\datums\supply_packs\ammo.dm" #include "code\datums\supply_packs\attachments.dm" @@ -593,17 +667,30 @@ #include "code\datums\supply_packs\spec_ammo.dm" #include "code\datums\supply_packs\vehicle_ammo.dm" #include "code\datums\supply_packs\weapons.dm" +#include "code\datums\tutorial\_tutorial.dm" +#include "code\datums\tutorial\_tutorial_menu.dm" +#include "code\datums\tutorial\tutorial_example.dm" +#include "code\datums\tutorial\marine\_marine.dm" +#include "code\datums\tutorial\marine\basic_marine.dm" +#include "code\datums\tutorial\marine\medical_basic.dm" +#include "code\datums\tutorial\ss13\_ss13.dm" +#include "code\datums\tutorial\ss13\basic_ss13.dm" +#include "code\datums\tutorial\ss13\intents.dm" +#include "code\datums\tutorial\xenomorph\_xenomorph.dm" +#include "code\datums\tutorial\xenomorph\xenomorph_basic.dm" #include "code\datums\weather\weather_event.dm" #include "code\datums\weather\weather_map_holder.dm" #include "code\datums\weather\weather_events\big_red.dm" #include "code\datums\weather\weather_events\faction_clash.dm" #include "code\datums\weather\weather_events\lv522_chances_claim.dm" #include "code\datums\weather\weather_events\lv624.dm" +#include "code\datums\weather\weather_events\new_varadero.dm" #include "code\datums\weather\weather_events\sorokyne.dm" #include "code\datums\weather\weather_map_holders\big_red.dm" #include "code\datums\weather\weather_map_holders\faction_clash.dm" #include "code\datums\weather\weather_map_holders\lv522_chances_claim.dm" #include "code\datums\weather\weather_map_holders\lv624.dm" +#include "code\datums\weather\weather_map_holders\new_varadero.dm" #include "code\datums\weather\weather_map_holders\sorokyne.dm" #include "code\datums\xeno_shields\xeno_shield.dm" #include "code\datums\xeno_shields\shield_types\crusher_shield.dm" @@ -651,13 +738,13 @@ #include "code\game\area\techtree.dm" #include "code\game\area\varadero.dm" #include "code\game\area\WhiskeyOutpost.dm" +#include "code\game\camera_manager\camera_manager.dm" #include "code\game\cas_manager\datums\cas_fire_envelope.dm" #include "code\game\cas_manager\datums\cas_fire_mission.dm" #include "code\game\cas_manager\datums\cas_iff_group.dm" #include "code\game\cas_manager\datums\cas_signal.dm" #include "code\game\gamemodes\cm_initialize.dm" #include "code\game\gamemodes\cm_process.dm" -#include "code\game\gamemodes\cm_self_destruct.dm" #include "code\game\gamemodes\events.dm" #include "code\game\gamemodes\game_mode.dm" #include "code\game\gamemodes\colonialmarines\colonialmarines.dm" @@ -693,6 +780,7 @@ #include "code\game\jobs\job\civilians\support\synthetic.dm" #include "code\game\jobs\job\civilians\support\working_joe.dm" #include "code\game\jobs\job\command\command.dm" +#include "code\game\jobs\job\command\auxiliary\auxiliary_support_officer.dm" #include "code\game\jobs\job\command\auxiliary\crew_chief.dm" #include "code\game\jobs\job\command\auxiliary\intel.dm" #include "code\game\jobs\job\command\auxiliary\pilot.dm" @@ -729,6 +817,7 @@ #include "code\game\machinery\autolathe_datums.dm" #include "code\game\machinery\Beacon.dm" #include "code\game\machinery\bio-dome_floodlights.dm" +#include "code\game\machinery\biohazard_lockdown.dm" #include "code\game\machinery\bioprinter.dm" #include "code\game\machinery\buttons.dm" #include "code\game\machinery\cell_charger.dm" @@ -753,7 +842,6 @@ #include "code\game\machinery\lightswitch.dm" #include "code\game\machinery\line_nexter.dm" #include "code\game\machinery\machinery.dm" -#include "code\game\machinery\magnet.dm" #include "code\game\machinery\mass_driver.dm" #include "code\game\machinery\mining.dm" #include "code\game\machinery\misc.dm" @@ -769,11 +857,19 @@ #include "code\game\machinery\sentry_holder.dm" #include "code\game\machinery\spaceheater.dm" #include "code\game\machinery\status_display.dm" +#include "code\game\machinery\storm_siren.dm" #include "code\game\machinery\suit_storage_unit.dm" #include "code\game\machinery\supply_display.dm" #include "code\game\machinery\teleporter.dm" #include "code\game\machinery\washing_machine.dm" #include "code\game\machinery\weather_siren.dm" +#include "code\game\machinery\ARES\apollo_pda.dm" +#include "code\game\machinery\ARES\ARES.dm" +#include "code\game\machinery\ARES\ARES_interface.dm" +#include "code\game\machinery\ARES\ARES_interface_apollo.dm" +#include "code\game\machinery\ARES\ARES_procs.dm" +#include "code\game\machinery\ARES\ARES_records.dm" +#include "code\game\machinery\ARES\ARES_step_triggers.dm" #include "code\game\machinery\atmoalter\canister.dm" #include "code\game\machinery\atmoalter\meter.dm" #include "code\game\machinery\atmoalter\portable_atmospherics.dm" @@ -787,10 +883,7 @@ #include "code\game\machinery\camera\camera.dm" #include "code\game\machinery\camera\motion.dm" #include "code\game\machinery\camera\presets.dm" -#include "code\game\machinery\camera\tracking.dm" #include "code\game\machinery\camera\wires.dm" -#include "code\game\machinery\computer\ai_core.dm" -#include "code\game\machinery\computer\aifixer.dm" #include "code\game\machinery\computer\almayer_control.dm" #include "code\game\machinery\computer\arcade.dm" #include "code\game\machinery\computer\area_air_control.dm" @@ -813,6 +906,7 @@ #include "code\game\machinery\computer\prisoner.dm" #include "code\game\machinery\computer\research.dm" #include "code\game\machinery\computer\robot.dm" +#include "code\game\machinery\computer\robots_props.dm" #include "code\game\machinery\computer\security.dm" #include "code\game\machinery\computer\sentencing.dm" #include "code\game\machinery\computer\skills.dm" @@ -844,6 +938,7 @@ #include "code\game\machinery\kitchen\smartfridge.dm" #include "code\game\machinery\medical_pod\autodoc.dm" #include "code\game\machinery\medical_pod\bodyscanner.dm" +#include "code\game\machinery\medical_pod\bone_gel_refill.dm" #include "code\game\machinery\medical_pod\medical_pod.dm" #include "code\game\machinery\medical_pod\sleeper.dm" #include "code\game\machinery\pipe\construction.dm" @@ -880,6 +975,7 @@ #include "code\game\machinery\vending\vendor_types\crew\sea.dm" #include "code\game\machinery\vending\vendor_types\crew\senior_officers.dm" #include "code\game\machinery\vending\vendor_types\crew\staff_officer.dm" +#include "code\game\machinery\vending\vendor_types\crew\staff_officer_armory.dm" #include "code\game\machinery\vending\vendor_types\crew\synthetic.dm" #include "code\game\machinery\vending\vendor_types\crew\vehicle_crew.dm" #include "code\game\machinery\vending\vendor_types\squad_prep\squad_engineer.dm" @@ -890,6 +986,7 @@ #include "code\game\machinery\vending\vendor_types\squad_prep\squad_smartgunner.dm" #include "code\game\machinery\vending\vendor_types\squad_prep\squad_specialist.dm" #include "code\game\machinery\vending\vendor_types\squad_prep\squad_tl.dm" +#include "code\game\machinery\vending\vendor_types\squad_prep\tutorial.dm" #include "code\game\objects\empulse.dm" #include "code\game\objects\explosion.dm" #include "code\game\objects\explosion_recursive.dm" @@ -945,7 +1042,9 @@ #include "code\game\objects\effects\landmarks\structure_spawners\setup_distress.dm" #include "code\game\objects\effects\landmarks\structure_spawners\structure_spawner.dm" #include "code\game\objects\effects\landmarks\structure_spawners\xvx_hive.dm" +#include "code\game\objects\effects\spawners\faction_spawners.dm" #include "code\game\objects\effects\spawners\gibspawner.dm" +#include "code\game\objects\effects\spawners\prop_gun_spawner.dm" #include "code\game\objects\effects\spawners\random.dm" #include "code\game\objects\effects\spawners\spawner.dm" #include "code\game\objects\effects\spawners\vaultspawner.dm" @@ -986,7 +1085,6 @@ #include "code\game\objects\items\devices\aicard.dm" #include "code\game\objects\items\devices\autopsy_scanner.dm" #include "code\game\objects\items\devices\binoculars.dm" -#include "code\game\objects\items\devices\camera_bug.dm" #include "code\game\objects\items\devices\cictablet.dm" #include "code\game\objects\items\devices\cloaking.dm" #include "code\game\objects\items\devices\clue_scanner.dm" @@ -1000,6 +1098,7 @@ #include "code\game\objects\items\devices\flash.dm" #include "code\game\objects\items\devices\flashlight.dm" #include "code\game\objects\items\devices\floor_painter.dm" +#include "code\game\objects\items\devices\helmet_visors.dm" #include "code\game\objects\items\devices\lightreplacer.dm" #include "code\game\objects\items\devices\megaphone.dm" #include "code\game\objects\items\devices\motion_detector.dm" @@ -1016,6 +1115,7 @@ #include "code\game\objects\items\devices\taperecorder.dm" #include "code\game\objects\items\devices\teleportation.dm" #include "code\game\objects\items\devices\transfer_valve.dm" +#include "code\game\objects\items\devices\vulture_spotter.dm" #include "code\game\objects\items\devices\walkman.dm" #include "code\game\objects\items\devices\whistle.dm" #include "code\game\objects\items\devices\radio\beacon.dm" @@ -1023,6 +1123,7 @@ #include "code\game\objects\items\devices\radio\encryptionkey.dm" #include "code\game\objects\items\devices\radio\headset.dm" #include "code\game\objects\items\devices\radio\intercom.dm" +#include "code\game\objects\items\devices\radio\listening_bugs.dm" #include "code\game\objects\items\devices\radio\radio.dm" #include "code\game\objects\items\explosives\explosive.dm" #include "code\game\objects\items\explosives\mine.dm" @@ -1050,11 +1151,11 @@ #include "code\game\objects\items\implants\implantneurostim.dm" #include "code\game\objects\items\implants\implantpad.dm" #include "code\game\objects\items\props\helmetgarb.dm" +#include "code\game\objects\items\props\robots.dm" #include "code\game\objects\items\props\rocks.dm" #include "code\game\objects\items\props\souto_land.dm" #include "code\game\objects\items\reagent_containers\autoinjectors.dm" #include "code\game\objects\items\reagent_containers\blood_pack.dm" -#include "code\game\objects\items\reagent_containers\borghydro.dm" #include "code\game\objects\items\reagent_containers\dropper.dm" #include "code\game\objects\items\reagent_containers\food.dm" #include "code\game\objects\items\reagent_containers\glass.dm" @@ -1062,6 +1163,7 @@ #include "code\game\objects\items\reagent_containers\pill.dm" #include "code\game\objects\items\reagent_containers\reagent_container.dm" #include "code\game\objects\items\reagent_containers\robodropper.dm" +#include "code\game\objects\items\reagent_containers\robot_parts.dm" #include "code\game\objects\items\reagent_containers\spray.dm" #include "code\game\objects\items\reagent_containers\syringes.dm" #include "code\game\objects\items\reagent_containers\food\cans.dm" @@ -1079,9 +1181,6 @@ #include "code\game\objects\items\reagent_containers\food\snacks\meat.dm" #include "code\game\objects\items\reagent_containers\glass\bottle.dm" #include "code\game\objects\items\reagent_containers\glass\bottle\robot.dm" -#include "code\game\objects\items\robot\robot_items.dm" -#include "code\game\objects\items\robot\robot_parts.dm" -#include "code\game\objects\items\robot\robot_upgrades.dm" #include "code\game\objects\items\stacks\barbed_wire.dm" #include "code\game\objects\items\stacks\cable_coil.dm" #include "code\game\objects\items\stacks\catwalk.dm" @@ -1119,6 +1218,7 @@ #include "code\game\objects\items\storage\storage.dm" #include "code\game\objects\items\storage\surgical_tray.dm" #include "code\game\objects\items\storage\toolbox.dm" +#include "code\game\objects\items\storage\toolkit.dm" #include "code\game\objects\items\storage\wallets.dm" #include "code\game\objects\items\tanks\jetpack.dm" #include "code\game\objects\items\tanks\tank_types.dm" @@ -1180,13 +1280,18 @@ #include "code\game\objects\structures\musician.dm" #include "code\game\objects\structures\noticeboard.dm" #include "code\game\objects\structures\platforms.dm" +#include "code\game\objects\structures\prop_mech.dm" #include "code\game\objects\structures\props.dm" #include "code\game\objects\structures\reagent_dispensers.dm" #include "code\game\objects\structures\safe.dm" +#include "code\game\objects\structures\shower.dm" #include "code\game\objects\structures\signs.dm" +#include "code\game\objects\structures\sink.dm" #include "code\game\objects\structures\surface.dm" #include "code\game\objects\structures\tables_racks.dm" #include "code\game\objects\structures\tank_dispenser.dm" +#include "code\game\objects\structures\urinal.dm" +#include "code\game\objects\structures\vulture_spotter.dm" #include "code\game\objects\structures\watercloset.dm" #include "code\game\objects\structures\windoor_assembly.dm" #include "code\game\objects\structures\window.dm" @@ -1219,13 +1324,16 @@ #include "code\game\objects\structures\crates_lockers\closets\secure\cm_closets.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\engineering.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\freezer.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\guncabinet.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\hydroponics.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\kitchen.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\medical.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\personal.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\scientist.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\guncabinet\guncabinet.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\guncabinet\level_blue.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\guncabinet\level_red.dm" #include "code\game\objects\structures\pipes\binary_misc.dm" #include "code\game\objects\structures\pipes\pipes.dm" #include "code\game\objects\structures\pipes\trinary_misc.dm" @@ -1272,8 +1380,6 @@ #include "code\game\verbs\preferences.dm" #include "code\game\verbs\records.dm" #include "code\game\verbs\who.dm" -#include "code\js\byjax.dm" -#include "code\js\menus.dm" #include "code\modules\trigger.dm" #include "code\modules\admin\admin.dm" #include "code\modules\admin\admin_ranks.dm" @@ -1294,7 +1400,6 @@ #include "code\modules\admin\stickyban.dm" #include "code\modules\admin\STUI.dm" #include "code\modules\admin\tag.dm" -#include "code\modules\admin\ToRban.dm" #include "code\modules\admin\medal_panel\medals_panel.dm" #include "code\modules\admin\medal_panel\medals_panel_tgui.dm" #include "code\modules\admin\player_panel\player_action.dm" @@ -1310,6 +1415,8 @@ #include "code\modules\admin\tabs\event_tab.dm" #include "code\modules\admin\tabs\round_tab.dm" #include "code\modules\admin\tabs\server_tab.dm" +#include "code\modules\admin\tacmap_panel\tacmap_admin_panel.dm" +#include "code\modules\admin\tacmap_panel\tacmap_admin_panel_tgui.dm" #include "code\modules\admin\topic\topic.dm" #include "code\modules\admin\topic\topic_chems.dm" #include "code\modules\admin\topic\topic_events.dm" @@ -1378,10 +1485,15 @@ #include "code\modules\asset_cache\asset_list.dm" #include "code\modules\asset_cache\asset_list_items.dm" #include "code\modules\asset_cache\assets\fontawesome.dm" +#include "code\modules\asset_cache\assets\medals.dm" #include "code\modules\asset_cache\assets\tgfont.dm" #include "code\modules\asset_cache\assets\tgui.dm" #include "code\modules\asset_cache\assets\vending.dm" #include "code\modules\asset_cache\transports\asset_transport.dm" +#include "code\modules\asset_cache\transports\webroot_transport.dm" +#include "code\modules\autowiki\autowiki.dm" +#include "code\modules\autowiki\pages\_page.dm" +#include "code\modules\autowiki\pages\guns.dm" #include "code\modules\buildmode\bm-mode.dm" #include "code\modules\buildmode\buildmode.dm" #include "code\modules\buildmode\buttons.dm" @@ -1488,9 +1600,11 @@ #include "code\modules\cm_marines\altitude_control_console.dm" #include "code\modules\cm_marines\anti_air.dm" #include "code\modules\cm_marines\codebook.dm" -#include "code\modules\cm_marines\Donor_Items.dm" +#include "code\modules\cm_marines\Donator_Items.dm" +#include "code\modules\cm_marines\Donator_Kits.dm" #include "code\modules\cm_marines\dropship_ammo.dm" #include "code\modules\cm_marines\dropship_equipment.dm" +#include "code\modules\cm_marines\m2c.dm" #include "code\modules\cm_marines\marines_consoles.dm" #include "code\modules\cm_marines\NonLethalRestraints.dm" #include "code\modules\cm_marines\orbital_cannon.dm" @@ -1515,6 +1629,7 @@ #include "code\modules\cm_preds\smartdisc.dm" #include "code\modules\cm_preds\thrall_items.dm" #include "code\modules\cm_preds\thrall_procs.dm" +#include "code\modules\cm_preds\yaut_actions.dm" #include "code\modules\cm_preds\yaut_bracers.dm" #include "code\modules\cm_preds\yaut_hudprocs.dm" #include "code\modules\cm_preds\yaut_items.dm" @@ -1554,13 +1669,14 @@ #include "code\modules\cm_tech\techs\abstract\transitory.dm" #include "code\modules\cm_tech\techs\marine\tier1\points.dm" #include "code\modules\cm_tech\techs\marine\tier2\orbital_ammo.dm" +#include "code\modules\cm_tech\techs\marine\tier3\cryo_spec.dm" #include "code\modules\cm_tech\techs\marine\tier3\cryorine.dm" +#include "code\modules\cm_tech\techs\marine\tier4\nuke.dm" #include "code\modules\cm_tech\trees\marine.dm" #include "code\modules\customitems\item_spawning.dm" #include "code\modules\decorators\admin_runtime_decorator.dm" #include "code\modules\decorators\cassette_decorator.dm" #include "code\modules\decorators\christmas.dm" -#include "code\modules\decorators\halloween.dm" #include "code\modules\decorators\mass_xeno_decorator.dm" #include "code\modules\decorators\weapon_decorator.dm" #include "code\modules\decorators\weapon_map_decorator.dm" @@ -1577,7 +1693,6 @@ #include "code\modules\desert_dam\filtration\floodgates.dm" #include "code\modules\desert_dam\filtration\structures.dm" #include "code\modules\desert_dam\motion_sensor\sensortower.dm" -#include "code\modules\destilery\main.dm" #include "code\modules\discord\discord_embed.dm" #include "code\modules\droppod\container_droppod.dm" #include "code\modules\droppod\droppod_ui.dm" @@ -1617,6 +1732,7 @@ #include "code\modules\flufftext\TextFilters.dm" #include "code\modules\gear_presets\_select_equipment.dm" #include "code\modules\gear_presets\agents.dm" +#include "code\modules\gear_presets\cbrn.dm" #include "code\modules\gear_presets\clf.dm" #include "code\modules\gear_presets\cmb.dm" #include "code\modules\gear_presets\colonist.dm" @@ -1624,11 +1740,10 @@ #include "code\modules\gear_presets\corpses.dm" #include "code\modules\gear_presets\dust_raider.dm" #include "code\modules\gear_presets\dutch.dm" -#include "code\modules\gear_presets\forcon_survivors.dm" #include "code\modules\gear_presets\fun.dm" #include "code\modules\gear_presets\other.dm" #include "code\modules\gear_presets\pmc.dm" -#include "code\modules\gear_presets\survivors.dm" +#include "code\modules\gear_presets\royal_marines.dm" #include "code\modules\gear_presets\synths.dm" #include "code\modules\gear_presets\upp.dm" #include "code\modules\gear_presets\uscm.dm" @@ -1642,6 +1757,24 @@ #include "code\modules\gear_presets\wy.dm" #include "code\modules\gear_presets\wy_goons.dm" #include "code\modules\gear_presets\yautja.dm" +#include "code\modules\gear_presets\survivors\misc.dm" +#include "code\modules\gear_presets\survivors\survivors.dm" +#include "code\modules\gear_presets\survivors\corsat\preset_corsat.dm" +#include "code\modules\gear_presets\survivors\fiorina_sciannex\preset_fiorina_sciannex.dm" +#include "code\modules\gear_presets\survivors\kutjevo\preset_kutjevo.dm" +#include "code\modules\gear_presets\survivors\lv_522\forcon_survivors.dm" +#include "code\modules\gear_presets\survivors\lv_624\clfship_insert_lv624.dm" +#include "code\modules\gear_presets\survivors\lv_624\preset_lv.dm" +#include "code\modules\gear_presets\survivors\new_varadero\preset_new_varadero.dm" +#include "code\modules\gear_presets\survivors\shivas_snowball\preset_shivas_snowball.dm" +#include "code\modules\gear_presets\survivors\solaris\crashlanding-offices_insert_bigred.dm" +#include "code\modules\gear_presets\survivors\solaris\preset_solaris.dm" +#include "code\modules\gear_presets\survivors\sorokyne_strata\preset_sorokyne_strata.dm" +#include "code\modules\gear_presets\survivors\trijent\crashlanding_upp_bar_insert_trijent.dm" +#include "code\modules\gear_presets\survivors\trijent\preset_trijent.dm" +#include "code\modules\holidays\halloween\decorators.dm" +#include "code\modules\holidays\halloween\pumpkins\patches.dm" +#include "code\modules\holidays\halloween\pumpkins\wearable.dm" #include "code\modules\hydroponics\botany_disks.dm" #include "code\modules\hydroponics\grown_inedible.dm" #include "code\modules\hydroponics\hydro_tools.dm" @@ -1662,10 +1795,27 @@ #include "code\modules\law\laws\major_crime.dm" #include "code\modules\law\laws\minor_crime.dm" #include "code\modules\law\laws\optional.dm" +#include "code\modules\law\laws\precautionary_charge.dm" +#include "code\modules\lighting\emissive_blocker.dm" +#include "code\modules\lighting\lighting_area.dm" +#include "code\modules\lighting\lighting_atom.dm" +#include "code\modules\lighting\lighting_turf.dm" +#include "code\modules\lighting\lighting_mask\dynamic_lighting_source.dm" +#include "code\modules\lighting\lighting_mask\lighting_mask.dm" +#include "code\modules\lighting\lighting_mask\lighting_mask_holder.dm" +#include "code\modules\lighting\lighting_mask\shadow_calculator.dm" +#include "code\modules\lighting\lighting_static\static_lighting_area.dm" +#include "code\modules\lighting\lighting_static\static_lighting_atom.dm" +#include "code\modules\lighting\lighting_static\static_lighting_corner.dm" +#include "code\modules\lighting\lighting_static\static_lighting_object.dm" +#include "code\modules\lighting\lighting_static\static_lighting_setup.dm" +#include "code\modules\lighting\lighting_static\static_lighting_source.dm" +#include "code\modules\lighting\lighting_static\static_lighting_turf.dm" #include "code\modules\logging\global_logs.dm" #include "code\modules\logging\log_category.dm" #include "code\modules\logging\log_holder.dm" #include "code\modules\mapping\map_template.dm" +#include "code\modules\mapping\merge_conflicts.dm" #include "code\modules\mapping\preloader.dm" #include "code\modules\mapping\reader.dm" #include "code\modules\mapping\verify.dm" @@ -1708,6 +1858,7 @@ #include "code\modules\mob\language\languages.dm" #include "code\modules\mob\living\blood.dm" #include "code\modules\mob\living\damage_procs.dm" +#include "code\modules\mob\living\init_signals.dm" #include "code\modules\mob\living\living.dm" #include "code\modules\mob\living\living_defense.dm" #include "code\modules\mob\living\living_defines.dm" @@ -1770,14 +1921,28 @@ #include "code\modules\mob\living\carbon\human\powers\human_powers.dm" #include "code\modules\mob\living\carbon\human\powers\issue_order.dm" #include "code\modules\mob\living\carbon\human\species\emote-monkey.dm" -#include "code\modules\mob\living\carbon\human\species\emote-synthetic.dm" -#include "code\modules\mob\living\carbon\human\species\emote-yautja.dm" #include "code\modules\mob\living\carbon\human\species\human.dm" #include "code\modules\mob\living\carbon\human\species\monkey.dm" #include "code\modules\mob\living\carbon\human\species\species.dm" #include "code\modules\mob\living\carbon\human\species\synthetic.dm" -#include "code\modules\mob\living\carbon\human\species\yautja.dm" #include "code\modules\mob\living\carbon\human\species\zombie.dm" +#include "code\modules\mob\living\carbon\human\species\working_joe\_emote.dm" +#include "code\modules\mob\living\carbon\human\species\working_joe\_species.dm" +#include "code\modules\mob\living\carbon\human\species\working_joe\damage.dm" +#include "code\modules\mob\living\carbon\human\species\working_joe\farewell.dm" +#include "code\modules\mob\living\carbon\human\species\working_joe\fire.dm" +#include "code\modules\mob\living\carbon\human\species\working_joe\greeting.dm" +#include "code\modules\mob\living\carbon\human\species\working_joe\notice.dm" +#include "code\modules\mob\living\carbon\human\species\working_joe\question.dm" +#include "code\modules\mob\living\carbon\human\species\working_joe\quip.dm" +#include "code\modules\mob\living\carbon\human\species\working_joe\restricted_area.dm" +#include "code\modules\mob\living\carbon\human\species\working_joe\task_update.dm" +#include "code\modules\mob\living\carbon\human\species\working_joe\warning.dm" +#include "code\modules\mob\living\carbon\human\species\yautja\_emote.dm" +#include "code\modules\mob\living\carbon\human\species\yautja\_species.dm" +#include "code\modules\mob\living\carbon\human\species\yautja\fake_sounds.dm" +#include "code\modules\mob\living\carbon\human\species\yautja\fake_voice.dm" +#include "code\modules\mob\living\carbon\human\species\yautja\yautja_sound.dm" #include "code\modules\mob\living\carbon\xenomorph\Abilities.dm" #include "code\modules\mob\living\carbon\xenomorph\attack_alien.dm" #include "code\modules\mob\living\carbon\xenomorph\damage_procs.dm" @@ -1789,6 +1954,7 @@ #include "code\modules\mob\living\carbon\xenomorph\Facehuggers.dm" #include "code\modules\mob\living\carbon\xenomorph\hive_faction.dm" #include "code\modules\mob\living\carbon\xenomorph\hive_status.dm" +#include "code\modules\mob\living\carbon\xenomorph\hive_status_ui.dm" #include "code\modules\mob\living\carbon\xenomorph\life.dm" #include "code\modules\mob\living\carbon\xenomorph\login.dm" #include "code\modules\mob\living\carbon\xenomorph\mark_menu.dm" @@ -1796,7 +1962,6 @@ #include "code\modules\mob\living\carbon\xenomorph\resin_constructions.dm" #include "code\modules\mob\living\carbon\xenomorph\say.dm" #include "code\modules\mob\living\carbon\xenomorph\update_icons.dm" -#include "code\modules\mob\living\carbon\xenomorph\xeno_defines.dm" #include "code\modules\mob\living\carbon\xenomorph\xeno_helpers.dm" #include "code\modules\mob\living\carbon\xenomorph\xeno_tackle_counter.dm" #include "code\modules\mob\living\carbon\xenomorph\xeno_verbs.dm" @@ -1831,6 +1996,9 @@ #include "code\modules\mob\living\carbon\xenomorph\abilities\facehugger\facehugger_powers.dm" #include "code\modules\mob\living\carbon\xenomorph\abilities\hivelord\hivelord_abilities.dm" #include "code\modules\mob\living\carbon\xenomorph\abilities\hivelord\hivelord_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\lesser_drone\lesser_drone_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\lesser_drone\lesser_drone_macros.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\lesser_drone\lesser_drone_powers.dm" #include "code\modules\mob\living\carbon\xenomorph\abilities\lurker\lurker_abilities.dm" #include "code\modules\mob\living\carbon\xenomorph\abilities\lurker\lurker_macros.dm" #include "code\modules\mob\living\carbon\xenomorph\abilities\lurker\lurker_powers.dm" @@ -1860,6 +2028,7 @@ #include "code\modules\mob\living\carbon\xenomorph\castes\Boiler.dm" #include "code\modules\mob\living\carbon\xenomorph\castes\Burrower.dm" #include "code\modules\mob\living\carbon\xenomorph\castes\Carrier.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\caste_datum.dm" #include "code\modules\mob\living\carbon\xenomorph\castes\Crusher.dm" #include "code\modules\mob\living\carbon\xenomorph\castes\Defender.dm" #include "code\modules\mob\living\carbon\xenomorph\castes\Drone.dm" @@ -1867,6 +2036,7 @@ #include "code\modules\mob\living\carbon\xenomorph\castes\Hellhound.dm" #include "code\modules\mob\living\carbon\xenomorph\castes\Hivelord.dm" #include "code\modules\mob\living\carbon\xenomorph\castes\Larva.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\lesser_drone.dm" #include "code\modules\mob\living\carbon\xenomorph\castes\Lurker.dm" #include "code\modules\mob\living\carbon\xenomorph\castes\Praetorian.dm" #include "code\modules\mob\living\carbon\xenomorph\castes\Predalien.dm" @@ -1894,43 +2064,11 @@ #include "code\modules\mob\living\carbon\xenomorph\mutators\strains\ravager\berserker.dm" #include "code\modules\mob\living\carbon\xenomorph\mutators\strains\ravager\hedgehog.dm" #include "code\modules\mob\living\carbon\xenomorph\mutators\strains\runner\acid.dm" -#include "code\modules\mob\living\silicon\alarm.dm" #include "code\modules\mob\living\silicon\death.dm" #include "code\modules\mob\living\silicon\login.dm" #include "code\modules\mob\living\silicon\say.dm" #include "code\modules\mob\living\silicon\silicon.dm" -#include "code\modules\mob\living\silicon\ai\ai.dm" -#include "code\modules\mob\living\silicon\ai\death.dm" -#include "code\modules\mob\living\silicon\ai\examine.dm" -#include "code\modules\mob\living\silicon\ai\life.dm" -#include "code\modules\mob\living\silicon\ai\login.dm" -#include "code\modules\mob\living\silicon\ai\logout.dm" -#include "code\modules\mob\living\silicon\ai\say.dm" -#include "code\modules\mob\living\silicon\ai\freelook\cameranet.dm" -#include "code\modules\mob\living\silicon\ai\freelook\chunk.dm" -#include "code\modules\mob\living\silicon\ai\freelook\eye.dm" -#include "code\modules\mob\living\silicon\ai\freelook\read_me.dm" -#include "code\modules\mob\living\silicon\ai\freelook\update_triggers.dm" #include "code\modules\mob\living\silicon\decoy\decoy.dm" -#include "code\modules\mob\living\silicon\robot\analyzer.dm" -#include "code\modules\mob\living\silicon\robot\component.dm" -#include "code\modules\mob\living\silicon\robot\death.dm" -#include "code\modules\mob\living\silicon\robot\examine.dm" -#include "code\modules\mob\living\silicon\robot\inventory.dm" -#include "code\modules\mob\living\silicon\robot\life.dm" -#include "code\modules\mob\living\silicon\robot\login.dm" -#include "code\modules\mob\living\silicon\robot\photos.dm" -#include "code\modules\mob\living\silicon\robot\robot.dm" -#include "code\modules\mob\living\silicon\robot\robot_damage.dm" -#include "code\modules\mob\living\silicon\robot\robot_items.dm" -#include "code\modules\mob\living\silicon\robot\robot_movement.dm" -#include "code\modules\mob\living\silicon\robot\wires.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_abilities.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_console.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_damage.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_items.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_manufacturer.dm" #include "code\modules\mob\living\simple_animal\bat.dm" #include "code\modules\mob\living\simple_animal\parrot.dm" #include "code\modules\mob\living\simple_animal\simple_animal.dm" @@ -1975,7 +2113,6 @@ #include "code\modules\movement\launching\launching.dm" #include "code\modules\nano\nanoexternal.dm" #include "code\modules\nano\nanomanager.dm" -#include "code\modules\nano\nanomapgen.dm" #include "code\modules\nano\nanoui.dm" #include "code\modules\nightmare\nmcontext.dm" #include "code\modules\nightmare\nmnodes\components.dm" @@ -2015,7 +2152,6 @@ #include "code\modules\paperwork\paperbin.dm" #include "code\modules\paperwork\photocopier.dm" #include "code\modules\paperwork\photography.dm" -#include "code\modules\paperwork\silicon_photography.dm" #include "code\modules\power\apc.dm" #include "code\modules\power\batteryrack.dm" #include "code\modules\power\breaker_box.dm" @@ -2035,9 +2171,7 @@ #include "code\modules\power\smes_construction.dm" #include "code\modules\power\terminal.dm" #include "code\modules\power\turbine.dm" -#include "code\modules\projectiles\ammo_datums.dm" #include "code\modules\projectiles\ammunition.dm" -#include "code\modules\projectiles\full_auto.dm" #include "code\modules\projectiles\gun.dm" #include "code\modules\projectiles\gun_attachables.dm" #include "code\modules\projectiles\gun_helpers.dm" @@ -2053,6 +2187,7 @@ #include "code\modules\projectiles\ammo_boxes\round_boxes.dm" #include "code\modules\projectiles\guns\boltaction.dm" #include "code\modules\projectiles\guns\energy.dm" +#include "code\modules\projectiles\guns\flare_gun.dm" #include "code\modules\projectiles\guns\lever_action.dm" #include "code\modules\projectiles\guns\misc.dm" #include "code\modules\projectiles\guns\pistols.dm" @@ -2062,9 +2197,13 @@ #include "code\modules\projectiles\guns\smartgun.dm" #include "code\modules\projectiles\guns\smgs.dm" #include "code\modules\projectiles\guns\souto.dm" -#include "code\modules\projectiles\guns\specialist.dm" #include "code\modules\projectiles\guns\flamer\flamer.dm" #include "code\modules\projectiles\guns\flamer\flameshape.dm" +#include "code\modules\projectiles\guns\specialist\scout.dm" +#include "code\modules\projectiles\guns\specialist\sniper.dm" +#include "code\modules\projectiles\guns\specialist\launcher\grenade_launcher.dm" +#include "code\modules\projectiles\guns\specialist\launcher\launcher.dm" +#include "code\modules\projectiles\guns\specialist\launcher\rocket_launcher.dm" #include "code\modules\projectiles\magazines\flamer.dm" #include "code\modules\projectiles\magazines\lever_action.dm" #include "code\modules\projectiles\magazines\misc.dm" @@ -2121,9 +2260,9 @@ #include "code\modules\security_levels\security_levels.dm" #include "code\modules\shuttle\computer.dm" #include "code\modules\shuttle\docking.dm" +#include "code\modules\shuttle\dropship.dm" #include "code\modules\shuttle\dropship_hijack.dm" #include "code\modules\shuttle\helpers.dm" -#include "code\modules\shuttle\lifeboats.dm" #include "code\modules\shuttle\on_move.dm" #include "code\modules\shuttle\ripple.dm" #include "code\modules\shuttle\shuttle.dm" @@ -2134,8 +2273,10 @@ #include "code\modules\shuttle\computers\trijent_elevator_control.dm" #include "code\modules\shuttle\shuttles\dropship.dm" #include "code\modules\shuttle\shuttles\ert.dm" -#include "code\modules\shuttle\shuttles\escape_shuttle.dm" #include "code\modules\shuttle\shuttles\trijent_elevator.dm" +#include "code\modules\shuttle\shuttles\crashable\crashable.dm" +#include "code\modules\shuttle\shuttles\crashable\escape_shuttle.dm" +#include "code\modules\shuttle\shuttles\crashable\lifeboats.dm" #include "code\modules\shuttles\marine_ferry.dm" #include "code\modules\shuttles\monorail_console.dm" #include "code\modules\shuttles\shuttle.dm" @@ -2220,6 +2361,7 @@ #include "code\modules\unit_tests\_unit_tests.dm" #include "code\modules\vehicles\cargo_train.dm" #include "code\modules\vehicles\powerloader.dm" +#include "code\modules\vehicles\souto_mobile.dm" #include "code\modules\vehicles\train.dm" #include "code\modules\vehicles\vehicle.dm" #include "code\modules\vehicles\vehicle_misc_objects.dm" diff --git a/config/example/admin_ranks.txt b/config/example/admin_ranks.txt index e8d13e4f24fb..7fcac3b371f0 100644 --- a/config/example/admin_ranks.txt +++ b/config/example/admin_ranks.txt @@ -19,7 +19,6 @@ # +BAN = the ability to ban, jobban and fullban # +STEALTH = the ability to stealthmin (make yourself appear with a fake name to everyone but other admins # +POSSESS = the ability to possess objects -# +REJUV (or +REJUVINATE) = the ability to heal, respawn, modify damage and use godmode # +COLOR = the ability to use the OOC > "Set OOC Color - Self" verb # +BUILD (or +BUILDMODE) = the ability to use buildmode # +SERVER = higher-risk admin verbs and abilities, such as those which affect the server configuration. @@ -36,16 +35,16 @@ Mentor +MENTOR +COLOR Trial Moderator +MOD +SERVER +COLOR -Moderator +MOD +SERVER +BAN +REJUV +COLOR +NOLOCK -Trial Admin +ADMIN +MOD +SERVER +BAN +REJUV +SPAWN +STEALTH +VAREDIT +COLOR -Admin +ADMIN +MOD +SERVER +BAN +REJUV +SPAWN +STEALTH +VAREDIT +POSSESS +SOUND +COLOR +BUILDMODE +Moderator +MOD +SERVER +BAN +COLOR +NOLOCK +Trial Admin +ADMIN +MOD +SERVER +BAN +SPAWN +STEALTH +VAREDIT +COLOR +Admin +ADMIN +MOD +SERVER +BAN +SPAWN +STEALTH +VAREDIT +POSSESS +SOUND +COLOR +BUILDMODE Coder +MOD +SERVER +BAN +VAREDIT +SPAWN +DEBUG +COLOR Mapper +MOD +VAREDIT +COLOR +BUILDMODE +SPAWN Spriter +MOD +VAREDIT +SPAWN +COLOR -Developer +ADMIN +MOD +SERVER +BAN +VAREDIT +SPAWN +DEBUG +REJUV +POSSESS +BUILDMODE +SOUND +COLOR -Lead Spriter +ADMIN +MOD +SERVER +REJUV +VAREDIT +BUILDMODE +SPAWN +DEBUG +COLOR +Developer +ADMIN +MOD +SERVER +BAN +VAREDIT +SPAWN +DEBUG +POSSESS +BUILDMODE +SOUND +COLOR +Lead Spriter +ADMIN +MOD +SERVER +VAREDIT +BUILDMODE +SPAWN +DEBUG +COLOR Host +EVERYTHING @@ -55,6 +54,6 @@ Head Dev +EVERYTHING Legacy Mentor +MENTOR +COLOR -Senior Moderator +ADMIN +MOD +SERVER +BAN +REJUV +SPAWN +STEALTH +VAREDIT +POSSESS +SOUND +COLOR +BUILDMODE -Senior Admin +ADMIN +MOD +SERVER +BAN +REJUV +SPAWN +STEALTH +VAREDIT +POSSESS +SOUND +COLOR +BUILDMODE +DEBUG +Senior Moderator +ADMIN +MOD +SERVER +BAN +SPAWN +STEALTH +VAREDIT +POSSESS +SOUND +COLOR +BUILDMODE +Senior Admin +ADMIN +MOD +SERVER +BAN +SPAWN +STEALTH +VAREDIT +POSSESS +SOUND +COLOR +BUILDMODE +DEBUG diff --git a/config/example/config.txt b/config/example/config.txt index bf061da71417..f9e0956593a9 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -131,7 +131,8 @@ GUEST_BAN FORUMURL https://forum.cm-ss13.com/ ## Wiki address -WIKIURL https://cm-ss13/wiki/ +WIKIURL https://cm-ss13.com/w +WIKIARTICLEURL https://cm-ss13.com/wiki ## Rules address RULESURL https://cm-ss13.com/viewtopic.php?f=57&t=5094 @@ -139,6 +140,9 @@ RULESURL https://cm-ss13.com/viewtopic.php?f=57&t=5094 ## Ban appeals URL - usually for a forum or wherever people should go to contact your admins. BANAPPEALS https://cm-ss13.com/viewforum.php?f=76 +## Discord URL - uncomment and add a valid Discord invite link (remember to make it a permanent one, since it does not default to it) to make the Discord button work properly. +## DISCORDURL + ## In-game features ## Remove the # to show a popup 'reply to' window to every non-admin that recieves an adminPM. ## The intention is to make adminPMs more visible. (although I fnd popups annoying so this defaults to off) @@ -147,9 +151,6 @@ BANAPPEALS https://cm-ss13.com/viewforum.php?f=76 ##Defines the ticklag for the world. 0.9 is the normal one, 0.5 is smoother. TICKLAG 0.5 -## Uncomment this to ban use of ToR -#TOR_BAN - ## Uncomment this to have country flags pop up in OOC alongside names if the user has the pref turned on (uses IP-API) #OOC_COUNTRY_FLAGS @@ -234,8 +235,8 @@ AUTOOOCMUTE ## The default value assumes youtube-dl is in your system PATH # INVOKE_YOUTUBEDL youtube-dl -## Rounds needed before a gamemode vote is casted. Set to -1 to disable -GAMEMODE_ROUNDS_NEEDED 5 - ## Default gamemode to auto-switch back to after a round has concluded -GAMEMODE_DEFAULT extended +GAMEMODE_DEFAULT Extended + +## How long the mob will take to chestburst, in seconds +#EMBRYO_BURST_TIMER 450 diff --git a/config/example/custom_items.txt b/config/example/custom_items.txt index 64a4bc648d7f..f4bb1a7028b7 100644 --- a/config/example/custom_items.txt +++ b/config/example/custom_items.txt @@ -1 +1 @@ -ckey: name: /path/to/obj +ckey: name: /path/to/obj diff --git a/config/example/forumdbconfig.txt b/config/example/forumdbconfig.txt index 61a2a2d6ecdc..0335ef90693d 100644 --- a/config/example/forumdbconfig.txt +++ b/config/example/forumdbconfig.txt @@ -1,19 +1,19 @@ -# This configuration file is for the forum database, if you need to set up -# population, death, etc. tracking see 'dbconfig.txt' -# The login credentials for this will likely differ from those in dbconfig.txt! - -# Server the MySQL database can be found at -# Examples: localhost, 200.135.5.43, www.mysqldb.com, etc. -ADDRESS localhost - -# MySQL server port (default is 3306) -PORT 3306 - -# Database the forum data may be found in -DATABASE tgstation13 - -# Username/Login used to access the database -LOGIN mylogin - -# Password used to access the database +# This configuration file is for the forum database, if you need to set up +# population, death, etc. tracking see 'dbconfig.txt' +# The login credentials for this will likely differ from those in dbconfig.txt! + +# Server the MySQL database can be found at +# Examples: localhost, 200.135.5.43, www.mysqldb.com, etc. +ADDRESS localhost + +# MySQL server port (default is 3306) +PORT 3306 + +# Database the forum data may be found in +DATABASE tgstation13 + +# Username/Login used to access the database +LOGIN mylogin + +# Password used to access the database PASSWORD mypassword \ No newline at end of file diff --git a/config/example/resources.txt b/config/example/resources.txt new file mode 100644 index 000000000000..0f9aaf021aa5 --- /dev/null +++ b/config/example/resources.txt @@ -0,0 +1,40 @@ +# External resources +# Set this to the location of a .zip with the server's .rsc inside of it. +# If you set this mutiple times, the server will rotate between the links. +# To use this, the compile option PRELOAD_RSC must be set to 0 to keep byond from preloading resources +# Resource urls can not be encrypted (https://), as they are downloaded by byond, not IE, and byond can't into encryption + +EXTERNAL_RSC_URLS http://rsc.cm-ss13.com/ + + +######################## +# Browser Asset Config # +######################## +# Browser assets are any file included in interfaces. css, images, javascript, etc. +# This handles configuring how we get these to the player so interfaces can access them. + +# Asset Transport +# The normal way of getting assets to clients is to use the internal byond system. This can be slow and delay the opening of interface windows. It also doesn't allow the internal IE windows byond uses to cache anything. +# You can instead have the server save them to a website via a folder within the game server that the web server can read. This could be a simple webserver or something backed by a CDN. +# Valid values: simple, webroot. Simple is the default. +#ASSET_TRANSPORT webroot + + +# Simple asset transport configurable values. + +# Uncomment this to have the server passively send all browser assets to each client in the background. (instead of waiting for them to be needed) +# This should be uncommented in production and commented in development +#ASSET_SIMPLE_PRELOAD + + +# Webroot asset transport configurable values. + +# Local folder to save assets to. +# Assets will be saved in the format of asset.MD5HASH.EXT or in namespaces/hash/ as ASSET_FILE_NAME or asset.MD5HASH.EXT +#ASSET_CDN_WEBROOT data/asset-store/ + +# URL the folder from above can be accessed from. +# for best results the webserver powering this should return a long cache validity time, as all assets sent via this transport use hash based urls +# Encryption (https) is supported here, but linux clients will have issues if you require higher then tls 1.0. Windows clients down to windows 7 can handle tls 1.2 no issue. +# if you want to test this locally, you simpily run the `localhost-asset-webroot-server.py` python3 script to host assets stored in `data/asset-store/` via http://localhost:58715/ +#ASSET_CDN_URL http://localhost:58715/ diff --git a/dependencies.sh b/dependencies.sh index ef00662eaa4d..69f16156b9d7 100644 --- a/dependencies.sh +++ b/dependencies.sh @@ -8,7 +8,7 @@ export BYOND_MAJOR=514 export BYOND_MINOR=1588 #rust_g git tag -export RUST_G_VERSION=1.2.0 +export RUST_G_VERSION=2.1.0 #node version export NODE_VERSION=14 @@ -19,3 +19,5 @@ export SPACEMAN_DMM_VERSION=suite-1.7.2 # Python version for mapmerge and other tools export PYTHON_VERSION=3.7.9 + +export OPENDREAM_VERSION=tgs-min-compat diff --git a/html/browser/common.css b/html/browser/common.css index fa8687d1f592..bb2bdd32e3e6 100644 --- a/html/browser/common.css +++ b/html/browser/common.css @@ -467,7 +467,7 @@ a.purple:hover { background-color: #e6b800; } -.job_ro { +.job_qm { background-color: #8378a1; } diff --git a/html/browser/legacy.css b/html/browser/legacy.css index 47d0f2bb46cd..cd8999e88862 100644 --- a/html/browser/legacy.css +++ b/html/browser/legacy.css @@ -181,7 +181,7 @@ a.purple { background-color: #ffeeaa; } -.job_ro { +.job_qm { background-color: #9990B2; } diff --git a/html/changelogs/AutoChangeLog-pr-3357.yml b/html/changelogs/AutoChangeLog-pr-3357.yml deleted file mode 100644 index 6f2a38d49e32..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3357.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Huffie56" -delete-after: True -changes: - - rscadd: "Added a Empty canister verb to the Pyrotechnician fuel tanks" - - bugfix: "prevent fuel backpacks to be filled via reagent tank with improper chemical(welding fuel)." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3527.yml b/html/changelogs/AutoChangeLog-pr-3527.yml deleted file mode 100644 index 6ed16b124e65..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3527.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Jackie_Estegado" -delete-after: True -changes: - - bugfix: "The Burrower's burrow ability will no longer be not cancelled just because you clicked on a tile that you wouldn't have been able to burrow to." - - bugfix: "Burrowing will no longer complete even though you cancelled it." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3589.yml b/html/changelogs/AutoChangeLog-pr-3589.yml deleted file mode 100644 index b8ca8efd8dc4..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3589.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - bugfix: "Fixed a runtime when observing before roundstart" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3609.yml b/html/changelogs/AutoChangeLog-pr-3609.yml deleted file mode 100644 index 363c63509533..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3609.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - balance: "Grass (and other flora) will no longer eat your bullets." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3610.yml b/html/changelogs/AutoChangeLog-pr-3610.yml deleted file mode 100644 index e1d770d7443e..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3610.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - spellcheck: "Weapon Stats examine UI now shows 'accurate range' rather than 'accuracy'" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3613.yml b/html/changelogs/AutoChangeLog-pr-3613.yml deleted file mode 100644 index 978c4d414fb0..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3613.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "SpartanBobby" -delete-after: True -changes: - - bugfix: "fixes invisible walls on LV522" - - bugfix: "fixes unweedable tiles on LV522" - - bugfix: "fixes invisible windows on LV522 (if you spot any invisible windows send a picture of them to the SS13: CM discord #mapperchannel @spartanbobby" - - bugfix: "fixes LV522 OOB area in the W-Y vault" - - maptweak: "moves sandbags and a breaching charge on LV522" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3614.yml b/html/changelogs/AutoChangeLog-pr-3614.yml deleted file mode 100644 index 1d0b1d0a0462..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3614.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SpartanBobby" -delete-after: True -changes: - - maptweak: "fixes bigred tileset inconsistencies in the expanded filt nightmare" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3616.yml b/html/changelogs/AutoChangeLog-pr-3616.yml deleted file mode 100644 index e31e1ca8db71..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3616.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - bugfix: "Fixed a runtime in shuttles when a mob is non-existent or has no turf location." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3617.yml b/html/changelogs/AutoChangeLog-pr-3617.yml deleted file mode 100644 index 1f5c81dbc722..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3617.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "Fixed an internal error when scanning turfs with Black Market scanner." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3626.yml b/html/changelogs/AutoChangeLog-pr-3626.yml deleted file mode 100644 index 1518693448f3..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3626.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SpartanBobby" -delete-after: True -changes: - - maptweak: "Replaces LV522 ceramic plates with MRE crate" \ No newline at end of file diff --git a/html/changelogs/archive/2023-06.yml b/html/changelogs/archive/2023-06.yml index ee364e4babfc..e2d9dfed44d7 100644 --- a/html/changelogs/archive/2023-06.yml +++ b/html/changelogs/archive/2023-06.yml @@ -192,3 +192,253 @@ realforest2001: - code_imp: Updated all the Get_Access() procs, and removed some procs where they completely overlapped with others in presets. +2023-06-15: + Drathek: + - bugfix: Fixed a runtime in shuttles when a mob is non-existent or has no turf + location. + Huffie56: + - rscadd: Added a Empty canister verb to the Pyrotechnician fuel tanks + - bugfix: prevent fuel backpacks to be filled via reagent tank with improper chemical(welding + fuel). + Jackie_Estegado: + - bugfix: The Burrower's burrow ability will no longer be not cancelled just because + you clicked on a tile that you wouldn't have been able to burrow to. + - bugfix: Burrowing will no longer complete even though you cancelled it. + Morrow: + - balance: Grass (and other flora) will no longer eat your bullets. + - bugfix: Fixed a runtime when observing before roundstart + SpartanBobby: + - bugfix: fixes invisible walls on LV522 + - bugfix: fixes unweedable tiles on LV522 + - bugfix: 'fixes invisible windows on LV522 (if you spot any invisible windows send + a picture of them to the SS13: CM discord #mapperchannel @spartanbobby' + - bugfix: fixes LV522 OOB area in the W-Y vault + - maptweak: moves sandbags and a breaching charge on LV522 + - maptweak: fixes bigred tileset inconsistencies in the expanded filt nightmare + - maptweak: Replaces LV522 ceramic plates with MRE crate + fira: + - bugfix: Fixed an internal error when scanning turfs with Black Market scanner. + realforest2001: + - spellcheck: Weapon Stats examine UI now shows 'accurate range' rather than 'accuracy' +2023-06-16: + Morrow: + - balance: Shipside roles now weight even less for xeno counts. + Nanu, Spartanbobby, Julian56: + - mapadd: Added W-Y Station, UPP Station, CLF Station and... + - admin: Admins can now use the custom ERT stations for events or even base of operations. + Steelpoint: + - rscadd: Adds a M41A Mk2 kit to the Squad Leaders vendor. +2023-06-17: + Drathek: + - bugfix: Fix grab delay after a tackle for xenos + - spellcheck: Added Commander Code of Conduct link to XO entry description and fixed + CO capitalization. + - code_imp: Replaced sting usage for USS Almayer to MAIN_SHIP_DEFAULT_NAME for Souto + ERT, CMB ERT, Provost ERT reporters, XO, and CO. + Steelpoint: + - bugfix: Larva who spawn in containment in Trijent will now have weeds to grow + on. + TheGamerdk, ihatethisengine: + - bugfix: player can no longer come back in their bodies after ghosting +2023-06-18: + BeagleGaming1: + - bugfix: fixes a runtime with paygrades and round start prosthetics + realforest2001: + - rscadd: Added WY, PMC and UPP faction specific listings for crew monitors. + - rscadd: Changed the assignment/job define for Standard PMCs, Detainers and Crewmen + to use their manual assignments. + - bugfix: Fixes name error for Division Manager. + - bugfix: FIxes incorrect faction assignment for CLF corpses. + thwompa: + - imageadd: new diamond sprite +2023-06-19: + Morrow: + - balance: Double barrel shotgun acquisition removal + QuickLoad,Frans_Feiffer,nauticall: + - rscadd: Adds The Hazmat Joe with two minor variations. This is a Working Joe equipped + to handle hazardous situations, dangerous repairs and firefighting! They are + complete with their own gear, tasks, job and purpose. Forget the trashbag, get + that wall fixed before we get spaced! + - imageadd: Adds a new Working Joe model made by Frans Feiffer! + - imageadd: Adds two variations of the Working Joe, aka the Hazmat Joe. Complete + with accessories! Beautiful sprites by Frans Feiffer! + - rscadd: Android Maintenance Stations / Synthetic Repair Stations will remove shrapnel + & fix organ damage. Working Joes no longer have knives, and should report to + the stations for repair. Gigantic thanks to nauticall for her work on this!! + - imagedel: Removes(replaces) the old Working Joe model. + - rscadd: Working Joes receive some basic equipment, and are slightly resilient + to disarms. + - rscadd: Working Joes will start at 3, with a maximum of 6 depending on population. + - rscadd: Joes can access a Synthetic vendor to replace their uniform if it is damaged. + - bugfix: Minor changes to PO Uniform. + SpypigDev: + - bugfix: Completed the teleporting pipeline delivery system between OT workshop + and Requisitions + TheGamerdk: + - rscdel: Chem goons only give 1 announcement instead of 3 + Ultimate-Fluff: + - bugfix: Corrected outdated information about one of Dancer's abilities in its + strain description. + - bugfix: Fixed the erroneously-named copper coin from gold coin. + - bugfix: Paper flags with writing on them will not say they are blank in the examine + text. + ihatethisengine: + - bugfix: folding barricade now takes 15% less acid damage instead of 15% extra + acid damage, as the description hints. + - bugfix: folding barricade now blocks pounces from behind. + - qol: collapsing folding barricade by hand is no longer interrupted by taking an + item. +2023-06-20: + Morrow: + - balance: Xenos can slash trolleys now + - balance: Generators can no longer be blown up + - balance: Bonus evolution slowly deteriorates over time when all castes are unlocked + - balance: Portable Generators can now be turned off/unanchored by xeno slashes +2023-06-21: + BeagleGaming1: + - rscadd: Melting flares makes the flares burn out faster, instead of melting like + normal + - balance: Flares last ~10 mins, and flares in the air last ~5 mins + Morrow: + - rscadd: Re-added the nuke that you can buy via intel at tier 4. Only purchasable + past 120 minutes. Requires holding both groundside comms towers for authorization + decryption before being able to be armed. + TheGamerdk: + - bugfix: Forsaken no longer announce themselves as a distress signal +2023-06-22: + Al-1ce: + - rscadd: Adds various magazines and a crayon to loadout selection. + Drathek Firartix: + - bugfix: Fixed a crash with hijack code possibly picking a non-existent brig area, + and weighting smaller areas heavier. + Morrow: + - bugfix: Flashlight gun attachments turn off when they should + sg2002: + - bugfix: XM88 now correctly notifies the user on the hit streak end. +2023-06-23: + harryob: + - server: server's can now support using a cdn for web assets +2023-06-24: + Drathek: + - rscadd: The selection to become a xeno larva is now based on timeofdeath rather + than random and also sends a message to all candidates when the queue moves. + Playing as a facehugger or on admin z-levels (thunderdome) will not affect your + relative place in queue. The join xeno action will also display the last queue + message for you when you allow xeno candidacy. + - bugfix: Fixed gibbed humans not properly setting their timeofdeath when on an + admin z-level. + - bugfix: Fixed a bad del on shuttle doors when a shuttle deletes (such as intoTheSunset). + - bugfix: Fixed erroneous is empty messages when inserting tanks into a flamer pack. + - soundadd: Added the refill sfx when using the empty canister verb on flamer tanks. + Morrow: + - bugfix: Prevented some light bugs with devouring marines + - bugfix: Fixed two gun light attachment issues + Steelpoint: + - rscadd: Synthetics may now vend Ponchos. + realforest2001: + - admin: Improves logging for admin deadchat. + - admin: Adds logging for xeno evolution. + theselfish: + - qol: Added the Corpsman Helmet to Req's surplus vendor. +2023-06-25: + Sargeantmuffinman: + - rscadd: Added two new emails to the Almayer's personal computers and rewrote 3 + other emails. + Segrain: + - bugfix: Hive core now always correctly absorbs hive's dead larvas. + - bugfix: Preview dummy in character setup once again can be rotated. +2023-06-26: + Drathek: + - bugfix: Fixed the yank object verb not testing who is actually performing the + action has a free hand + - rscadd: Player facehugging gets 2nd dibs on the burst (the original marine gets + first dibs still) + - bugfix: Fix a possibility of banished larva refunding double the larva + blackdragonTOW: + - spellcheck: multiple typos and grammar changes in the round start tooltips. +2023-06-27: + TeDGamer Drathek: + - bugfix: Boilers from other hives generate proper colored IFFed gas + - bugfix: Fixes some death causes with boiler acid gas (for bombard, shroud, and + gibbing), neurotoxin gas/stabs, acid shotgun, and xeno spits + - balance: Neurotoxin stops processing only in dead mobs + TheGamerdk: + - bugfix: The game will no longer falsely claim there is no CO + realforest2001: + - rscadd: Changed min and max Predator ages from 20 - 10000 to 175 - 3000 +2023-06-28: + Drathek: + - admin: Mentors can now eavesdrop on mentor messages, and the responder to a mhelp + doesn't get double logging from eavesdropping. + Morrow, Thwomper: + - rscadd: Added three new uniforms and a snow jacket for the CL. + TheGamerdk: + - balance: Cluster OBs will now no longer hit turfs that have gotten OB protection + after the initial OB was fired. + ihatethisengine: + - balance: larva surge is limited by marines/xenos ratio + - bugfix: xenos no longer get free larva from abandoned facehuggers during hijack + - balance: explosive barricade upgrade provides better protection against explosions + (25% to 50%) + - balance: explosive barricade upgrade provides strong protection against brute-based + projectiles (50%) + - balance: explosive barricade upgrade provides strong protection against fire (50%) +2023-06-29: + Diegoflores31: + - balance: reduced Larva Burst time from 10 minutes to 7.5 minutes + - refactor: changed 1 letter vars. + Drathek: + - bugfix: Fixed the crashsite offset for a hijack shuttle that gets deterred by + the MGAD System + IowaPotatoFarmer: + - rscadd: Solaris Ridge now has a Corporate Liaison survivor. + Katskan: + - balance: Removed G8A storage from various snow suits and parkas + Morrow: + - balance: Xenos no longer can pull dead xenos + - rscdel: Removed toxin mags on shivas + SpartanBobby: + - maptweak: Minor decal changes to LV522 + - maptweak: Buffed sec armory on LV522 + - maptweak: LV522 Breaching charge moved to the PROP APC made UNACIDABLE + TheGamerdk: + - bugfix: Communications intel objective now actually works + - balance: Queen boosted building no longer has 2 second cooldown when far from + hive + blackdragonTOW: + - maptweak: Added a small light to unlit rooms. + fira: + - bugfix: Fixed a MC crash related to NPC huggers rebounding logic. + realforest2001: + - rscadd: Added an admin button for an ARES bioscan. Slightly refactored how Bioscans + trigger for marines, relying on an ARES processor. + - rscadd: Added individual proccessors for ARES systems. These are WIP and will + eventually have damage and repair interactions. + - rscadd: Added an ARES interaction console in the AI Core room, which holds logs + for most ARES functions. + - rscadd: Added the ability for ARES console to call ERT or Distress. + - rscadd: Added motion triggers in ARES core and shipside comms that send alerts + over Apollo. + - rscadd: Added a 1to1 conversation feature between ARES and users of the interface + console. + - rscadd: Added preset open versions of blended poddoors. + - rscadd: Added a console for directing Working Joes. This is largely WIP for future + PR(s). + - rscadd: Added subtypes of air pipes that don't explode on hijack, used these in + ARES core. + - maptweak: Remodelled ARES Core onto a fake-z, and added the new processors. + - bugfix: door_control buttons now respect being indestructable when processing + explosions. + - maptweak: Fixed the M39s overflowing in brig armory due to use of landmarks. +2023-06-30: + Drathek: + - bugfix: Fix runtimes with minimap subsystem not handling targets inside of objects + during removal + - code_imp: Ported VERB_REF and TYPE_VERB_REF from TG for 515 compatibility + - code_imp: Removed unnecessary calculations when updating a mob's transform. + Morrow: + - rscdel: Removed wrong warden locker + TheGamerdk: + - bugfix: You can now re-enter your body when unnested, marine mains, rejoice! + - bugfix: Lurkers no longer lose their pounce if they happen to end their pounce + on a tile with a dead human diff --git a/html/changelogs/archive/2023-07.yml b/html/changelogs/archive/2023-07.yml new file mode 100644 index 000000000000..0ee8702c72e8 --- /dev/null +++ b/html/changelogs/archive/2023-07.yml @@ -0,0 +1,639 @@ +2023-07-01: + Ben10083: + - bugfix: lisps now occur over radio as well + - refactor: Relevant variables relating to speech problems now use true and false + instead of 1 and 0 + - bugfix: fixes exploit relating to cloaking tarps by adding a delay before tarp + can be closed again. + Drathek: + - bugfix: Fixed missing xeno ban check for playing as a facehugger + - spellcheck: Tweaked message when ghosting while nested + TheGamerdk: + - rscadd: ARES will announce how many Foxtrot marines that woke up. + harryob: + - rscadd: you can no longer implant yourself with a motion detector + ihatethisengine: + - rscadd: Added cameras to dropship deployable sentries. +2023-07-02: + Clairion: + - bugfix: Vampire Lurker headbite will no longer trigger if the target is moved + away during windup. + Cthulhu80: + - rscadd: added camera shake and stun to OB. + fira: + - rscadd: Added InfluxDB backed metrics logging for some of the most used game statistics. + This will allow to graph them over time and give better insight as to what happens + in rounds. + theselfish: + - qol: Made the MP beret to be clickable. + - imageadd: Updated the MP beret obj sprite to be easier to click. +2023-07-03: + blackdragonTOW: + - refactor: refactored dropship_ammo so that missiles don't use Spawn() + ghostsheet: + - bugfix: Fixed Extended Barrel bug of building up free bullet velocity. +2023-07-04: + Drathek: + - bugfix: Fixed a persistence problem for the time of death value used for the larva + queue. + - bugfix: Fixed brainmobs (human gibbing) not getting a time of death value. + harryob: + - bugfix: paper images should appear once again + zzzmike: + - balance: pods crash land 33% of the time rather than 50% +2023-07-05: + BeagleGaming1: + - rscadd: Queen makes noise when moved even while resting + Hopek, Gul Dreggrod: + - rscadd: Adds a Luxurious fountain pen to the game. Currently spawns on the right + ear of high ranking command staff. Sprited by Gul Dreggrod. + QuickLode: + - rscadd: CMB/ICC Survivors now get a limited radio that they can use to communicate + with CMB reinforcements. + - rscadd: CMB/Anchorpoint Marines get bandages to stop bleeding. + harryob: + - rscadd: all xenos can now access the tacmap, while the queen is on ovi +2023-07-06: + BeagleGaming1: + - code_imp: evacuation pod crash chance changed to a var + - code_imp: proc added to force evacuation pods to crash + Drathek: + - bugfix: Fixed more broken logos (primarily WY research papers) + - balance: Weed nodes can no longer be placed in walls or window frames (or any + turf or structure with density) + - refactor: Refactored the plant weeds ability code + - balance: Gardener's hardy weeds now upgrade normal weeds (just like hive weeds + upgrade weeds). + - balance: Gardener's hardy weeds now don't prevent special structures (core and + pylons) but they are still only allowed if the turf allows them. + Newyearnewme, Morrow: + - rscadd: Xeno structures/weeds now become forsaken after hijack + Steelpoint: + - imageadd: Synth utility vest is now slimmer in appearance + realforest2001: + - admin: Adds logs for bioscans successfully completing. + thatoneyeeter: + - balance: metal foam now becomes solid faster +2023-07-07: + Diegoflores31: + - rscadd: Defender Tail Slam has a 1% chance to do a BONK sound instead. + Drathek: + - bugfix: Fixed ghost icons for larva and ovi queen + Morrow: + - rscdel: Removes fountain pens from gear sets + - rscdel: Removed nesting the dead + - rscadd: Added a visiting USASF Commander (CO survivor) to New Varadero + - bugfix: Burnt matches no longer permanently give you a light source if they naturally + burn out + QuickLoad: + - balance: Colony Synthetics are faster but are less resistant. This allows for + the option of avoiding engagements. + - balance: Colony Synthetics have slightly better CQC and can carry people better. + realforest2001: + - bugfix: Fixes Queen making footstep sounds while dead and being dragged. +2023-07-08: + Ben10083: + - bugfix: Working Joes can no longer have a gradient on their rare hair spawn. + - rscdel: Working Joes can no longer be fed. + - code_imp: 'New trait: Cannot eat. Self-explanatory.' + Cursor: + - spellcheck: Changed Chem Dispenser to Chemical Dispenser, added descriptions to + the cryo cell, rail computer and chemical dispenser. Updated the descriptions + for the Blood Dispenser and Dropship computer. + Drathek: + - bugfix: Fixed facehuggers incorrectly displaying thrown state when it has landed + Drathek Kugamo: + - rscadd: Added the ability for weeds to merge with unrevivable corpses + - imageadd: Added human shaped weeds by Kugamo + - code_imp: Added a signal for weeds sent to the turf to indicate it is now weeded, + and added a signal for afterbuckle. + - bugfix: Closets (including coffins) can no longer move anchored mobs. + Morrow: + - qol: Create humans tab length increase + - qol: Create humans tab now defaults to 0 range to spawn + - bugfix: Fixed extraneous messages in regards to wall nests + SpartanBobby: + - balance: changes M4A3 magazine size from 9 to 12 + Zonespace27: + - bugfix: The maintenance jack should work a little better at crowbarring things. +2023-07-09: + Khadd: + - rscadd: added a iv tube between the user and the bloodpack / iv drip + - imageadd: sprites for the iv tube + Zonespace27: + - rscadd: Working Joes now have an emote panel to use voice lines, accessible as + an action button. + theselfish: + - qol: Foxtrot's radio channel is now on if you have multi-squad in your headset. +2023-07-10: + BeagleGaming1: + - rscadd: Acid runners don't get acid from slashing nested humans + - rscadd: Very late-stage marines do not give acid + - bugfix: Fixes one way of abusing resin fruit + Drathek: + - rscdel: Remove first life priority for larva queue + - bugfix: Fix ghosting as a facehugger counting as death for the larva queue + blackdragonTOW: + - spellcheck: Added "U1" designation to the UGL attachment. +2023-07-11: + BeagleGaming1: + - bugfix: Fixes the Working Joe species +2023-07-12: + Morrow: + - bugfix: Stops xenos from bypassing dead moving via roller beds + - balance: Telebaton now scales in stunforce effectiveness based on policing skill + - balance: Marines called with foxtrot nerfed from 15 to 10. + SpartanBobby: + - maptweak: 'LV522: Flips the layout of engineering making the T-comms unit on the + far side of the LZ' + - balance: reduces the M1911 magazine size from 14 to 7 + Steelpoint: + - balance: Synthetic Armour slowdown has been decreased +2023-07-13: + QuickLoad, Thwomper: + - imageadd: Synthetic Uniforms & Vest with United Americas flair and classic jumpsuits + which remind you of life on the Frontier. Sprited by THE THWOMPA himself! + - qol: Synthetic Vendor is more organized. Removes scrub cap, adds shoe. +2023-07-14: + Drathek: + - bugfix: Fix ghosting preventing first dibs on the larva in a hugged marine + Unknownity: + - bugfix: Fixed burrowed mobs being able to be targeted by sentries, mines and SG + autofire. + - bugfix: Fixed burrowed mobs being able to grab mobs on the surface. + - bugfix: Fixed burrowed mobs being able to resist while burrowed. + - bugfix: Fixed burrowers taking damage from direct flame and shrapnel from explosions. + - bugfix: Fixed burrowers being able to get slashed from enemy Xenos on the surface. + - bugfix: Fixed burrowers unburrow stun to now properly target and stun enemy Xenos. + - soundadd: Added sounds for the Burrower when they are burrowing and unburrowing. +2023-07-15: + BeagleGaming1: + - code_imp: Messed with chem and drink dispenser code + Ben10083: + - spellcheck: Fixed typos relating to M74 airburst packets. + - mapadd: Combat Information Center Reception now has a telephone + - maptweak: Medical Lower telephone shifted to the left + Drathek: + - bugfix: Fix morpher ejected items and dumped objectives not restoring their mouse_opacity + setting. + Morrow: + - admin: VV Jump To Fix + - balance: Lurkers now lose their invisibility when they run into a person + Steelpoint: + - ui: Predator Ship is now called 'Yautja Ship" for teleporting Predators + Zonespace27: + - admin: Removed msay. All staff now have access to asay + ondrej008: + - bugfix: The HE OB now deals the correct amount of damage to xenos, before it dealt + half damage caused by xenos being forced to rest before it hit. + realforest2001: + - soundadd: Added a drag sound for footstep component + - bugfix: Fixes the icon on the alien blade on LV. + - bugfix: Carbon copies can no longer infinitely breed. + - rscadd: Added a PMC Synth Survivor preset, and stopped PMC Synth Survivor using + the ERT set. + - bugfix: You can no longer weld non metal containers closed. + - bugfix: Fixes the toggle notification sound verb for Yautja bracers not working. +2023-07-16: + Drathek: + - rscadd: Facehuggers now convert to their NPC version after 7 minutes of inactivity + and no client. + - code_imp: Cleanup join as xeno button code somewhat. + Drathek, Fira: + - bugfix: Fixed an issue with table flips that could make some tables incorrectly + unflippable, and cause infinite loops. It is no longer possible to flip tables + that t-shape or cross, or spans more than 5 tiles away from you. + Drathek, Steelpoint: + - bugfix: Fixed possible hardeletes for predator landmarks and vehicles. Predator + teleporation descriptions now do not change if the area is altered at runtime + so they can still be found correctly. + theselfish: + - rscadd: SOs may now get coats in their vendor. +2023-07-17: + Puckaboo2: + - spellcheck: Some duplicate icon states have been differentiated to prevent future + missing icon state errors. + - imageadd: Added new icon states for chemical and virology dispensers. + - rscdel: Removed dozens of duplicate icon states from over 50 files to reduce bloat. + - rscdel: Removed duplicate empty icon states. + realforest2001: + - maptweak: Added Apollo Maintenance Controllers to the following locations. + - maptweak: Astronavigation, CIC Substation, Brig Substation, Req Aux Storage, Hangar + & OT & Engineering workshops, Reactor Core Room and Lifeboat Control Ring. +2023-07-19: + Ben10083: + - rscadd: Working Joes now have a unique death message. Credit to Quickload for + the message. + - soundadd: Working Joes now have a death rattle. Credit to Quickload for shifting + through Alien Isolation audio files. + - qol: Things that die with intent eyes now lose color in their eyes on death. + Drathek: + - bugfix: Banished players will no longer be candidates for hives they are banished + from. + - bugfix: Cryoing will now set your larva queue time so you don't get prioritized + over others that have been waiting. + - admin: Shuttle intoTheSunset will set larva queue time the same as other situations. + - qol: Added a preference to disable xeno ability deactivation when re-selecting + the same ability + Morrow: + - rscadd: Added bayonet pouch to req + - balance: Explosive pouch inventory size from 3 to 6 + - balance: Explosive pouch can no longer hold mine boxes + NewyearnewmeUwu: + - rscadd: Added the ES-4 electrostatic pistol to the CL's safe. + realforest2001: + - balance: Reduced tranq pistol bullet damage from 40 to 15 + - bugfix: Fixes another synth survivor variant having marine comms. + theselfish: + - spellcheck: Goodbye Squad Spotter, hello regular non-squaded Spotter. +2023-07-20: + Anuv: + - bugfix: '#3775' + - rscadd: Added a new storm siren unique to NV, new survivor types + - spellcheck: Updates to the waking distress call notif. + - code_imp: Weather-related code changes. Update to the handheld maps. + - soundadd: Added new monsoon weather sfx, new map-unique ambience, new storm siren + sfx. + - maptweak: New LZ (LZ2 Palm Airfield) in the NE with a construction zone. Removed + a number of rocks around cave areas. Increased hive location choices from 3 + to 4. Added glass ceilings to facility areas (deep caves are still protected, + can be OB'd). Slightly widened the 45 minute weed protection areas around LZs. + Added a fog monsoon to the SE beach that dissipates after an hour. Expanded + east beach. New SW cave section. Opened up the walkway west of LZ1. Enhanced + survivor loot and mats to a comparable degree to current maps. Many small changes + to lessen chokes and offer more route choice for xenos and marines alike. Removed + Spearhead/Rival and laser pistols. Swapped fawras for monkeys. Added more survivor-type + choices. Added a bar area and decrepit truck to the north beach. + - config: Enabled NV again as a map in maps.txt. + Awantje: + - bugfix: The M56D no longer let's you violate density code when exiting it. + BeagleGaming1: + - config: Moved time to burst to the config + - balance: Fixed time to burst, lowering it from 15 minutes to 7.5 minutes by default + - balance: Stasis bags used on late-stage mobs properly slow growth down less + Ben10083: + - qol: Non player Facehuggers now also notify the hive when they facehug something. + - spellcheck: fix typo relating to Starshell ash + Diegoflores31: + - balance: Acid Splash damage increased to 25 + - balance: Acid Splash damage can be reduced with BIO armor. + - balance: Reduced Light armor BIO resistance by 10 + - balance: Increased Heavy armor BIO resistance by 5 + - balance: Increased VL vest BIO resistance by 5 + GoldenDarkness55: + - balance: Base rav cooldown regain per slash reduced (4 to 3), empowered charge + stun duration reduced (2 to 1.3), empower duration increased (5 to 6.5), empower + cooldown reduced (22 to 18), duration window for second empower cast reduced + (15 to 6), base shield gain reduced (75 to 50), shield gain per marine reduced + (80 to 50), maximum empower targets increased (5 to 6), scissor slash cooldown + reduced (10 to 6), and damage reduced (45 to 40) + - balance: Hedge rav doesn't lose speed anymore, but loses 10 slash damage instead. + Shield duration increased (2 to 2.5), Fire Spikes shard range increased (5 to + 6), Spike Shed shard lockout duration reduced (30 to 15), shard lock speed reduced + to maintain same speed as previously. Shard damage increased (5 to 8), shard + slowdown duration reduced (8 to 3), shard gain per tick reduced (10 to 5), shard + gain per bullet reduced (20 to 10), added shard gain per slash (15) + Huffie56: + - bugfix: fix some area having no apc on the almayer making them not behave like + they should specialy when hijack happen. + IowaPotatoFarmer: + - rscadd: The PMC Crash on Solaris Ridge now spawns one PMC medic survivor and one + PMC engineer survivor. + - bugfix: The Wey-Yu goon survivors now have their unique corporate white camo M41A + MK2 back. + Kaboomcat: + - imageadd: Updated the gin bottle sprite + QuickLoad: + - balance: Tones down ERT skills. Impacts VAIPO/Dutch'sDozen/CMB/UPP/CLF/EMerc. + - balance: Gives PMC & SurvPMC a trained level of CQC. + Steelpoint: + - maptweak: More weed spawns so larva don't spawn in area with no weed to evolve + on. + - rscadd: Predator toolbelt is now a unique item with its own sprite. + TeDGamer: + - bugfix: Xenos allied to the hive can now open hive's doors + - bugfix: Huggers can now scuttle doors + - code_imp: Combined hugger + larva code to allow for any small castes to scuttle + Zonespace27: + - balance: Trashbags now hold normal items and can be looked through like a box + or storage container. + - balance: Trashbags no longer fit in your belt slot. + ihatethisengine: + - balance: Lurkers don't lose invisibility when they bump into partly visible mobs. + realforest2001: + - admin: Removed the R_REJUVINATE permissions flag and replaces instances where + it is used with R_MOD. + - admin: Added logs if a restricted proc is proccalled. + silencer_pl: + - qol: Default paper and desc_lore viewing windows are now larger to match the expected + content in them better. +2023-07-21: + Awantje: + - code_imp: Medicomp surgery tools no longer care about what zone you target. + Ben10083: + - rscadd: Facehuggers now bypass time of death checks when being considered for + larva. + - code_imp: new variable for observers to handle bypass of time of death checks + Drathek: + - code_imp: Removed extra CI testing for override maps + Morrow: + - bugfix: Colonial Marshal ERT now uses their own faction + - bugfix: Anchorpoint marines now use the proper define for USCM + - rscadd: Added sounds for inserting and removing knifes to the knife webbing + - rscadd: Added draw delay for knives to the knife webbing + - rscadd: Allowed using quickdraw with the knife webbing + - rscadd: Allowed knife webbing to be alt-clicked to draw from it + - rscadd: Knife webbing is now spawned full + - code_imp: Standardized knife draw delay in a define + - balance: Modifies INTERRUPT_NO_NEEDHAND flag to require you hold the item at least + in one hand. + - balance: Changes splint back to using INTERRUPT_NO_NEEDHAND + - balance: Removes large pouches as buyable from all squad roles other than SL + - balance: Removes medkit, medical (the base ones, not first aid), and syringe pouches + from squad prep room vendors + - balance: Replaces the EZ-injector first aid pouch with the alternate tricord/bandage/splint/ointment + version in the squad prep room vendors + QuickLode: + - bugfix: limits the Survivor CMB Synthetic comms + harryob: + - admin: you can no longer touch bad vars + realforest2001: + - bugfix: Fixes PMC survivor synth spawning with marine comms, again. + - bugfix: Reduces yautja armor bullet resistance by 5, and puts that 5 extra onto + the heavy armor. + - rscadd: Added donator kit boxes that hold a donator's special gear. They can be + destroyed with a right-click while on the ground, and are locked to the donator. + - code_imp: Tidied up typepaths for many donator items to make it clearer what or + who they are for. + - code_imp: Removed the requirement for donators to match their character name to + our config file. +2023-07-22: + Ben10083: + - qol: Ghosts now informed when a non-nested host is about to chestburst + ClairionCM: + - rscadd: Chem ERT objectives now mention that they cant deploy without explicit + permission. + Drathek: + - bugfix: 'Fixed the prompt when nested to ghost: Now uses a TGUI prompt and sets + larva queue time.' + Morrow: + - balance: Decreased blood bag IV insertion time from 3 to 1 second + Waseemq1235: + - code_imp: Adds unrestricted_deployment var to tents. Bypasses groundside checks. +2023-07-23: + Anuv: + - rscadd: Added a headset to Researchers with the intel channel included + Ben10083: + - maptweak: AI Core APC now uses a hyper capacity cell + Drathek: + - bugfix: Fix xeno tacmap staying open when it should be unavailable + - code_imp: Bump rust_g to 2.1.0 and bump all github testing ubuntu versions to + latest. + Khadd: + - bugfix: blowtorch no longer loses fuel on clicks that produce no action + - code_imp: replaced 1-letter vars + QuickLode: + - bugfix: Surgical graft now fits in surgical trays and vests. + blackdragonTOW: + - rscadd: 'Added new CAS Missile: BLU-200 Dragons Breath' + ihatethisengine: + - bugfix: vendors icon_state resets after vending as intended. + nauticall: + - imageadd: Resprited blood bags to look nicer and use proper a proper overlay/underlay + system. Their types are also now distinguishable at a glance. + - code_imp: Reworked the way blood bag sprites work behind the scenes to use the + overlay/underlay system. +2023-07-24: + JackieEstegado: + - maptweak: Made LV-624's "Fully-locked" Research nightmare insert no longer have + indestructible blast doors. + Morrow: + - bugfix: Fixes wood window numbering +2023-07-26: + BeagleGaming1: + - code_imp: Changed squad color code from a list to a variable + - rscadd: How long disarm stuns for depends on the difference in CQC skill between + the participants + - bugfix: CQC properly affects disarm chance again + Ben10083: + - rscadd: You can now petition High Command via ARES for a nuclear device, bypassing + techweb (If you can convince them, that is.) + - admin: Implemented Admin side of ARES Nuke request to allow for granting of different + nuke types, or denying the request. + - bugfix: Working Joes no longer spawn meat when butchered by Abominations + - bugfix: Synthetics now are butchered into synthflesh when butchered by Abominations + - rscadd: special meat subtype 'synthflesh' if Synthetics get butchered. Uses same + recipes as synthmeat + - imageadd: synthflesh sprite + - bugfix: Non-techweb nuke now works properly. + - ui: Nuke timers now use minutes instead of seconds + - spellcheck: Nukes renamed to 'Encrypted' and 'Decrypted' nuke respectively. + - admin: Ability to spawn nuke added to event panel + - rscadd: Infection gamemode announcement fixed and adjusts for each map, like Distress + Signal + - code_imp: elements of distress signal post_setup code moved to parent to be called + by all gamemodes + - balance: Xenomorphs lose their hiding ability for 2 seconds after a melee attack. + 0.5 second cooldown applied to hide ability. + - balance: Carriers with Eggsac strain can now place eggs on regular weeds. + - bugfix: Extra egg planting range now properly applied for Eggsac strain and Queen + on ovi + - qol: Eggsac Carriers now notified when they generate a egg. + - code_imp: new variable to xenomorphs to dictate egg planting distance, and removal + of unused procs + - balance: LVL-624 Robotics Dome operating table replaced with bioprinter. + BraveMole, Zonespace: + - bugfix: Smartgunners can no longer shoot their smartgun while aghosted + - balance: The Uzi and Mac-15 now have full-auto + Drathek: + - bugfix: Fixed xeno hide ability not checking for busy status. + - bugfix: Fix bodybags not accepting warm (recent) dead bodies even if unreviveable + - code_imp: Added additional lints to dmi/test.py to test for duplicate state names + and excessive quantity and added another type path to the missing_icons unit_test. + - imageadd: Renamed and moved some icons around to comply with new testing. + - bugfix: Fixed ability deactivation and late join current slot toggles not persisting. + - bugfix: Toggle the Ability to Hurt Yourself now says On when you can hurt yourself. + - bugfix: Fix huggers not retaining at least their old death value. + - rscadd: Added the debug verb Mass-Screenshot and a python script MapTileImageTool + to combine those images into a single full image map. + Hopek: + - rscadd: Changed the description flavortext of the fountain pen to match the new + lore. There is now a laser engraving of the owner on the pen itself. + - rscadd: Added a detailed lore description for the fountain pen. + Katskan: + - bugfix: Fixed synthetics getting an extra 45 points more than any previous who + had used the gadget vendor + MarpleJones, ihatethisengine2: + - rscadd: Added new sprites for the Eggsac Carrier. Includes an additional death + sound for the eggsac bursting. + - rscadd: Added a hive announcement for when a Carrier dies with eggs. + - bugfix: Carrier egg drop chance upon death now works as intended. + Morrow: + - bugfix: Stops multiple facehuggers spawning from one client + - rscadd: Added lesser drones + QuickLode: + - rscadd: Radio titles for W-Y prepositioned Synthetics + - qol: Swaps PMC Synthetic autocompressor for a crew monitor to facilitate search + and rescue. + - bugfix: fixes PMC Synthetic ID & removes redundant graft + Zonespace27: + - bugfix: Welding goggles are no longer marked as "mandatory" in comtech vendors + blackdragonTOW: + - rscadd: Added unique, faction dependent music to Round End in the event that Xenos + lose post hijack. + ghostsheet: + - rscadd: Large General Pouch has stricter restriction against internal boxes. + - rscadd: Large General Pouch no longer restricted to 1 medium item. + - rscadd: Large General Pouch added to REQ. + - rscadd: Shuffled REQ pouch order into Meds, Engi, Misc, Ammo. + - rscadd: Tents can be destroyed with an E-tool. + - rscadd: Tents are now in their respective department, Big tent is now in Bravo + Bunks. + - rscadd: You can no longer stand behind a tent. + - bugfix: Xenos can now slash tents from the side. + - bugfix: Tents no longer randomly block bullets. + - bugfix: Staying inside a tent when it is destroyed no longer give your permanent + see-through roof vision. + ihatethisengine: + - balance: early pod launch now has a 75% chance of crashing, launch after the timer + has a 25% chance. + - rscadd: CL's pod has a 25% chance of crashing on early launch and only 5% otherwise. + - rscadd: xenos can slash and melt manually locked pod's doors. + - bugfix: fixed behavior_immobile flag using wrong number + realforest2001: + - rscadd: Adds a plasma breaching charge that detonates a plasma wave stunning those + opposite it. + - rscadd: Adds the name of the tracked item to the Yautja gear tracker. + - rscadd: Added an alternate mode for the Plasma Pistol and moved the incendiary + property to it. + - rscadd: Added MINIMAP_FLAG_ALL to Yautja globe map. + - rscadd: Adds functional maintenance ticket control to the Apollo Console + - rscadd: Adds a unique ID system for each ticket. Credit to Ben10083 for the idea. + - rscadd: Adds procs for vents to spew gas within a radius. Not currently usable + without proccall. + - code_imp: Starts work on Access Tickets. + - code_imp: START of contribs from Ben10083 + - rscadd: ARES now announces when Bioscan fails. + - code_imp: new procs to see if ARES can talk, or log something. Bioscan proc renamed + for consistency. + - admin: Admins can now force an ARES announcement or communication if subsystem + is offline. + - rscadd: new emergency protocol from ARES; call General Quarters, which sets the + ship to immediate Red Alert. + - rscadd: New APOLLO maintenance ticket categories; Janitorial and Support. Fire + now a priority ticket + - qol: Claimed APOLLO tickets can be unclaimed + - qol: APOLLO tickets can be rejected/completed if unclaimed by any Working Joe + - code_imp: END of contribs from Ben10083 + - code_imp: Changes /datum/rank to /datum/yautja_rank to be clearer on what it is + used for. + - rscadd: Added access defines for Yautja ship. + - rscadd: Added rank identifiers on Yautja equipment presets to help set access + levels on their bracer chips. + - maptweak: Changed the doors on the Yautja ship to be their own subtypes, with + certain ones being locked to Yautja or certain Yautja Ranks. + - code_imp: Slightly modernised obj/proc/allowed, and also made it check for access + on bracer chips if present. + - maptweak: Replaced the unworthy prey section of the Yautja Ship with a secondary + armory for plasma rifles, however the door is inaccessible to most Yautja. Intended + to make it a bit less obvious admins are spawning them in for the rare times + they're used/necessary. + - maptweak: Above armory will automatically open if an Abomination is detected. + - maptweak: Reduces amount of herbs on the Yautja Ship. + - maptweak: Fixes the "Consoles" orientation in the Yautja flight deck. + - rscadd: Allowed Falcon Drones to relay speech back to their operators. + - rscadd: Made Yautja cloak cost no power to operate, and created multipliers for + disabled duration based upon what caused the Yautja to decloak. + - rscadd: Added a toggle for Yautja bracer lock. This also works with the same mechanic + of SDing another Yautja. + - rscadd: Added a message to all Yautja if an SD is cancelled. + - ui: Adds a UI panel for Yautja emotes, all credit to Zonespace. +2023-07-27: + Ben10083: + - bugfix: ARES security logs now are properly displayed + - ui: Xenos (and others) now see comms relays on minimap + Drathek: + - code_imp: Bump alternate 515 testing to byond 1610 +2023-07-28: + BeagleGaming1: + - rscadd: Added a new CO jacket to the CO vendor + Ben10083: + - bugfix: Speech problems such as lisping now applies when using megaphone + GoldenDarkness55: + - balance: Dropship machine gun cost lowered from 300 to 50. + - balance: Dropship rappel module cost lowered from 500 to 50. + - balance: Dropship spotlight cost lowered from 300 to 50. + - balance: Dropship LZ detector cost lowered from 400 to 50. + Khadd: + - bugfix: xenos now update their wound icon when getting up + Morrow: + - bugfix: Fixed sentries firing turning off their lights + - rscadd: Shovels can now be used to collapse tunnels + zzzmike: + - balance: when facehugged, more paralyze chance with a smaller paralyze duration + - ui: during hugged effects, changes messaging to encourage new players to seek + help +2023-07-29: + GoldenDarkness55: + - balance: Shaking people up shortens stun durations by 6 instead of 3. + - balance: Player controlled facehuggers apply the same knockout duration as regular + ones. + Morrow: + - balance: 2.5 squad marines per 1 larva latejoin + SpartanBobby: + - rscadd: Added a new survivor to LV522 the FORECON sniper he spawns alone his only + company being the corpse of his dead battle buddy, good luck + - maptweak: Sweeping changes to LV522 including the reactor, north of engineering, + LZ1, the entire central area of the map, and north of fitness in an attempt + to see more of the colony used and to incentivize flanking + ghostsheet: + - bugfix: Advanced mini flamer can no longer nerf itself by changing mode. + - rscadd: HG 37-12 pump shotgun's intergrated stock no longer give any stat change. + ihatethisengine: + - rscadd: Added announcements for xenos about forming and breaking alliances. + - rscadd: Xenos with IFF tag now have a choice to stay loyal to USCM when Queen + decides to betray. + spartanbobby: + - maptweak: heavy changes to the research department +2023-07-30: + Ben10083: + - bugfix: You can no longer circumvent the lesser drone limit by keeping the prompt + open. + Drathek: + - bugfix: Fix joining as facehugger or lesser drone not checking banishment. + Katskan: + - rscadd: Added a stethoscope, red, yellow, and white/green armband to synthetic + vendors + Morrow: + - bugfix: Fixed holding two guns firing both + harryob: + - admin: notes applied to players now include the round id it was applied in + realforest2001: + - bugfix: Donator custom masks now properly protect from cold weather. +2023-07-31: + Drathek: + - rscadd: Added prompts for xeno candidates to optionally take over a larva when + an unnested host is ready to burst + - bugfix: Fixed larva spawning in hosts not triggering the preference unpool taskbar + flash. + - bugfix: Fixed ctrl+click joining as an afk xeno not checking banishment + Morrow: + - rscadd: Brain damage now causes random wandering, dropping of items, paralysis, + and jittering + ihatethisengine: + - balance: you can stack scratched portable cades if their HP at least 75%. Doing + so will reduce the health of all barricades in the stack to the level of the + most damaged. + - balance: you can repair stacked portable cades but it will take longer time depending + on how many cades in stack. + - balance: miniengi skill makes repairs of folded portable cades faster (10 seconds + to 5 seconds, same as engineer). + - balance: with engineering skill at least of miniengi you can collapse deployed + portable barricade with a crowbar (wrench is no longer required, slightly faster + (2 sec to 1.5 sec)). + - balance: you no longer need to have folded portable cade in hand in order to repair + it. + - balance: if you have folded portable cade in hand, you can move while repairing + it. + zzzmike: + - spellcheck: disordely -> disorderly and minor grammar fixes diff --git a/html/changelogs/archive/2023-08.yml b/html/changelogs/archive/2023-08.yml new file mode 100644 index 000000000000..e8c44d82dbde --- /dev/null +++ b/html/changelogs/archive/2023-08.yml @@ -0,0 +1,502 @@ +2023-08-01: + Drathek: + - bugfix: Fixed hung mobs merging with weeds +2023-08-02: + Dorodomki: + - rscadd: Adds A Bipod and Rail Flashlight to the HPR kit + Drathek: + - balance: Facehugger attack windup duration is now 1s like the pounce windup. + Huffie56: + - bugfix: Care package for SG on WO will now spawn with the proper batteries for + them. + Morrow: + - bugfix: Fixes brain damage + - qol: Jittering from brain damage is now capped +2023-08-03: + Ben10083: + - rscadd: Lesser Drone Slots now have a minimum, currently set to 3. + Huffie56: + - balance: adding the possibility to buy "ES-4 stun magazine" for 10 point in the + portable vendor. + - bugfix: remove a bunch of ammo that where improper for ES-4 gun that are in the + lockbox. + Thwomper: + - maptweak: added Workin' Joey to maint bar. +2023-08-04: + Ben10083: + - mapadd: ARES Chamber now has a security camera console + - rscadd: Workin Joey now randomly talks and responds when attacked + Huffie56: + - bugfix: forbidden all the items beside battery and beakers to avoid weirdness + and bug. + Segrain: + - bugfix: Lesser drones now can pass through runners same as through any other castes. + - rscadd: Joining cryomarines now uses your assigned character slot for the role + you get (as long as you have not already used that character name this round). + Zonespace27: + - bugfix: Predator flight computers can no longer be walked on. + - rscadd: Predators and thralls are now visible on the predship tacmap. + - rscadd: Anyone wearing a stolen predator bracer is now visible on the predship + tacmap. + - qol: Predator emote panel emotes now look a bit cleaner in the menu + - bugfix: Predator ship health monitor console now works + - rscadd: WJs now spawn in the ARES core. + - rscadd: There is now a synthetic repair station in the ARES core. + - rscdel: You can no longer move the carp nade in the yautja ship + blackdragonTOW: + - bugfix: fixed a file reference that broke end of round music for some factions + ghostsheet: + - rscadd: B5 Breaching Hammer will now slow down humans who picks it up. + realforest2001: + - admin: Added logs for speech through telephones and deferring ahelps to mentors. + - admin: Chestburst logs now include location data. Mentor Imaginary Friend now + logs its speech. Narrow miss shots now log who fired them (where applicable). + - admin: Dropship interactions (Launch/Flyby/Autopilot) are now logged again, and + also included in attack logs for the user. + - bugfix: Yautja Bracers are no longer hyper lethal electrical outlets. + - rscadd: Added the falcon drone to marine motion detectors, appearing the same + as Queen eye. + stanalbatross: + - ui: changed the almayer control console from html to tgui + - bugfix: custom faction messages will now be named properly in the paper printed + out from the almayer control console +2023-08-05: + BeagleGaming1: + - rscadd: Adds campfires, craftable with wood + - code_imp: Modifies brazier construction code for easier use and mapping + Morrow: + - bugfix: You can no longer bypass skill checks on pill bottles + Steelpoint: + - rscadd: A team of UPP survivors may spawn on Trijent Dam. + - mapadd: A new nightmare insert for Trijent Dam has been added, featuring a crashed + UPP dropship. + Vile Beggar: + - balance: Star Shells now have a higher minimum burn time and are more plentiful + in squad prep. + Zonespace27: + - bugfix: Underbarrel extinguishers can now be refilled. + ghostsheet: + - rscadd: Acid Runners will now respawn where it blew up, if there is no hivecore + to spawn at. + realforest2001: + - rscadd: Added an admin toggle flag for fitting mobs into disposals. (Within reason + - no queens...) + - rscadd: The Crawler trait that allows mobs to enter vents will also allow them + to climb into disposals regardless of above flag. + - rscadd: Added a subtype of disposal that can't fit mobs, used for the delivery + units. + smov: + - rscadd: Adds a new Marine Law charge +2023-08-06: + Ben10083: + - admin: You now need to give confirmation before announcing random facts (OOC tab + verb) + Steelpoint: + - bugfix: EMT/White-Green armband now has a sprite +2023-08-07: + Huffie56: + - maptweak: changing an area so it stop snowing inside walls. +2023-08-08: + HeresKozmos: + - maptweak: Added non-alcoholic drinks dispenser, space cleaner bottle and a regular + medkit to the storage closet. Deleted old toxin medkit in the storage closet + Morrow, Thwomper: + - rscadd: Added Auxiliary Support Officer + - rscadd: Auxiliary Support Officer oversees the hangar, the intel team, the engineering + department, and the requisitions department + - rscadd: Chief Engineer has been demoted to O1. + - rscadd: Requisitions Officer is now "Quartermaster" and a Gunnery Sergeant. + Segrain: + - bugfix: Non-UPP synthetics no longer default to speaking Russian. +2023-08-09: + BeagleGaming1: + - code_imp: occupant limit of evacuation pods changed to a variable + Drathek: + - bugfix: Fix new map dropship areas not getting changes to dropship ceilings that + prevents OBs + Megastar1234: + - rscadd: Adds reagent scanner goggles to CMO vendor + - rscadd: Gives CMO headset intel radio + Morrow: + - rscadd: Scan health now only works when non-revivable + - rscadd: Xenos with less than 10 hours on xeno now have the "Young" prefix + - rscadd: Young Queen has been renamed to Growing Queen + - balance: Removed the barrel charger from vendors + - balance: Removed all benefits other than wield delay mod from the angled grip + - balance: Added wield delay to extended barrel + Morrow, Sleepynecrons (beautiful sprites): + - rscadd: Xenos can now capture comms relays for bonuses after 90 minutes into the + round. + Steelpoint: + - balance: Yautja's Plasma Rifle has been rebalanced to make it a more effective + assault weapon against xenomorphs. It has lost its mini-high explosive fire + mode but its default fire mode now mostly ignores xenomorph armor. + blackdragonTOW: + - ui: Hardcore deaths are now marked with a unique red skull + - imageadd: Red skull added for hardcore deaths + morrowwolf: + - rscadd: Added basic IB surgery instructions to surgical case + realforest2001: + - rscadd: Changed 'Growing Queen' to 'Immature Queen' + - bugfix: Updated playerpanel transform Queen button title. + thwomper, Steelpoint: + - rscadd: Toolkits have been added to the game. Holds engineering supplies akin + to a medkit. Issued freely to ComTechs and Engineers, can be bought by the USCM + Synthetic for cheap. +2023-08-10: + Drathek: + - bugfix: Fixed unnested mobs sometimes having incorrect density allowing xenos + to push them + Huffie56: + - rscadd: Add a skill check to operate IV. + - bugfix: Fix remove iv needing power to operate. + - rscadd: Update the MP and Warden vendor to fallow more the standard of the rifleman + vendor. + - rscadd: change the selection of the handgun from a full belt to a handgun case(3magazin,one + railgunlight and the gun.). + Morrow: + - balance: 'Across the board firerate nerfs with the exceptions of: M37 shotgun, + M240 Flamer, M42A Scope Rifle, XM88, Mateba, Desert Eagle' + - balance: Folded etools are now small items + Steelpoint: + - rscadd: The SMG belt has been changed. It now holds a SMG plus two extra magazines, + plus it can fit in either the belt or armour slot. + Tallfission: + - rscadd: Vehicles skill for Commanding Officer, Executive Officer, and Auxiliary + Support Officer jobs + Zonespace27: + - rscadd: Combisticks now use a proper chain instead of an invisible magic one. +2023-08-11: + Drathek: + - bugfix: Fixed runtimes with hijack not calculating roles correctly for hijack + larva surge + - bugfix: Fix IV Drip machines not displaying the IV line correctly when adding/removing + a bag when already attached + - code_imp: Fixes a lingering reference to the mob when a IV drip machine is destroyed. + Zonespace27: + - bugfix: A pile of guns no longer have burst fire (who weren't meant to) + - bugfix: The combichain can now be yanked back if droppeed. +2023-08-12: + BeagleGaming1: + - balance: Defibrillators are guaranteed to deal heart damage on successful revives + - balance: Blood volume now scales with heart damage rather than being a hardcoded + multiplier + - balance: Blood volume oxyloss now scales rather than being a hardcoded loss amount + Huffie56: + - code_imp: added welding google to the com tech tool vendor. + - code_imp: added scaling based on round population to the ColMarTech Surplus Uniform + like the other vendors. + - code_imp: Move every clothing items from ColMarTech Automated Armaments Squad + Vendor to ColMarTech Surplus Uniform Vendor. + - code_imp: rename ColMarTech Automated Armaments Squad Vendor to ColMarTech Automated + Utilities Squad Vendor and add in tools food and other utilities. + Steelpoint: + - bugfix: Synthetic Breaching Hammer will now properly appear on the user's back + when holstered. +2023-08-13: + Huffie56: + - spellcheck: fix typo mistake from matchs to matches. + Morrow: + - rscadd: At end of round it now shows a Queen's prefix/postfix rather than their + ckey + blackdragonTOW: + - admin: Adjustment of ASay color + ihatethisengine: + - rscadd: All hive's alliances break on Queen's death. + - qol: If a hive breaks an alliance with another, the second hive also breaks the + alliance. + - bugfix: xeno_message no longer sends the message to allied hives + mothblocks, harry: + - rscadd: added the backend functionality for autowiki, alongside automating much + of the work of maintaining guns on the wiki + realforest2001: + - bugfix: Picking up a Yautja mask now correctly checks for bracers to apply the + visor. + - rscadd: Added backend for species datums to hold inherent vision flags. + - rscadd: Added proc for Yautja mask to pass power drain back to bracers. Added + small power drain on use of mask visor. + - rscadd: Added natural thermal vision and very weak night vision to Yautja species, + to fit with our wiki lore. + - rscdel: Removed Thermal and Meson visors from Yautja mask. + - bugfix: Squad Specialists can no longer bypass restrictions by not selecting a + kit to use. +2023-08-14: + Morrow: + - rscadd: Rounded oxyloss from bloodloss + SpartanBobby: + - maptweak: Fixes use of wrong areas inside LV522 reactor +2023-08-15: + Drathek: + - rscadd: Queen jellies now use designation rather than ckey for attribution + - bugfix: Random facts now only check players. + Huffie56: + - bugfix: spraying with the hose will no cost 5u of water while spaying 5u of water. + - bugfix: fixed the verb to take out the hose. + - bugfix: remove the option to change the output as it was confusing for people. + MikeKuwait: + - bugfix: The plant dies if no nutriment is available + realforest2001: + - rscadd: Added a proc to calculate item strip delay, taking into account the target's + skills and adding 0.5s per level in Policing and CQC. + - rscadd: Added an unstrippable mob trait to prevent inventory manipulation. Gave + this trait to Working Joes. +2023-08-17: + realforest2001: + - bugfix: Players joining as Working Joe after round start now spawn in correct + place. +2023-08-18: + Ben10083: + - bugfix: Prompt allowing staff to call for ERT with an announcement fixed to actually + appear + - ui: Prompts for admin-calling ERT converted to TGUI. + - maptweak: Combat Information Center pens now use black ink + - balance: Zombie attacks deal less damage and only slow down targets (not superslow + as they currently do) + - balance: Zombie resistances have been reduced heavily, making them far more susceptible + to brute damage. Their speed has been doubled to compensate + - balance: Black goo on tiles now requires you to not wear shoes to have chance + for infection + - bugfix: Zombie attacks now only apply effects such as slow and infection if the + attack is valid (if the zombie is able to attack) + SpartanBobby gdifirehawk: + - rscadd: Subtype of tunnel added "Maintenance Tunnel" currently only on LV522 these + tunnels act the same as regular tunnels but look different, keep an eye out + marines. Description by GDIFIREHAWK + ihatethisengine: + - rscadd: foxtrot cryomarines spawn as freed mobs if not taken. + realforest2001: + - rscadd: Added prefixes in OOC for Staff and Mentors. Created a proc to check for + these prefixes and Donator. + - bugfix: Fixed isCouncil check. + spartanbobby: + - maptweak: Replaces some cave walls on LV624 with junglewalls (nothing will change + gameplay wise) + - maptweak: Adds bin to Research Chem/Req room and moves item blocking pillbox +2023-08-19: + Drathek: + - bugfix: Fixed mapped in maps for solaris ridge not opening correctly. + - refactor: Refactored current_map to use a global list instead to remove the need + for duplicate definitions. + - ui: Fix Hotkeys TGUI lag and the inability to map Ctrl + R. Also now offers a + little bit more time to map combinations of keys. +2023-08-20: + Huffie56: + - bugfix: prevent belt flare being filled by dump in action leaving no space for + flare gun. +2023-08-22: + CapCamIII: + - bugfix: fixes the offset on m4ra custom barrel, it should appropriately be sat + right on the gun sprite +2023-08-23: + CapCamIII: + - bugfix: UPP soldier preset works again + Drathek: + - bugfix: Fixed a cade attack exploit + Huffie56: + - bugfix: you will no longer be able to feed without any limit with the fork. + - bugfix: Whiskey Outpost Chem master will now be connected to the smartfridge. + harryob: + - rscadd: you always see lobby art while the world is setting up + realforest2001: + - code_imp: Overhauled how ID accesses are assigned via proc, compiling all the + many different procs we used into one. + - rscadd: Added faction specific accesses to all major factions. + - rscdel: Removed almost all marine accesses from non marine presets. No more free + CIC access to CLF. + - code_imp: Removed duplicate code in the VAI file. + - rscadd: Adds a mapping var to indicate a door has non-standard access tags. This + is to make it significantly easier for any future access changes to know if + they need to look somewhere. + - maptweak: Applied this var to every door I could find on the Almayer that has + non-standard access. Colonies and other stuff to come in a future update. + - rscadd: Added various new accesses to colonial doors, added WY_SECURITY and WY_RESEARCH + to marine research doors. + - maptweak: Added reinforced piping to lifeboats area. Didn't make much sense for + a cruicial part of the evacuation procedures to be prone to spontaneous explosions + that can singlehandedly end a marine evacuation without hostiles ever seeing + it. + - maptweak: Added reinforced piping to the research closed loop (it's a closed loop). + Also removed CIC access from containment shutters as CIC access can't open the + doors. + - maptweak: Changed a couple walls around research from standard to reinforced, + to fit with the containment breach shutters. +2023-08-24: + Morrow: + - bugfix: Possible fix for binoc perma zoom + - balance: M4RA damage buffed by 10% + Zonespace27: + - balance: The M41A, M41Amk1, m39, m46c (iff off), mar-30/40/60, type 71, laser + uzi, and every SMG now has automatic fire. + - balance: The HPR can now fire in full auto when bipodded. + - bugfix: Adding/removing attachments now keeps the current firemode, if possible. + - bugfix: The dualtube and spec sniper now can switch tubes/toggle laser again. + - bugfix: Fixed a long-standing exploit with bipods and scopes. + - bugfix: Fixed guns jamming when shooting UI elements. + - bugfix: Fixed a bunch of guns unintentionally having burst. + - balance: You can transfer ammo between HPR ammo boxes by hitting one with another. + realforest2001: + - rscadd: Gave the ASO ability to modify IDs. + - rscdel: Removed this from the QM. +2023-08-25: + Huffie56: + - bugfix: add a check before people start the long process of unlock the DS so that + people don't waste time. + realforest2001: + - rscadd: Added a new lockdown system to research. + - rscadd: Added an admin button to interact with above. +2023-08-26: + CapCamIII: + - rscadd: Adds 6(8 if you're pedantic) new guns for the UPP, details for each in + following lines. + - rscadd: Type 19, Replacement for PPsh on colonies and black market. + - rscadd: Type 64, replacement for scorpion, full sized SMG, 2 versions, 1 for upp, + 1 for not upp + - rscadd: HJRA-12, RPG for UPP. + - rscadd: Type 73, pistol for higher ranked UPP troops, UPP COs get a Type 74 which + has high-impact rounds, replaces PK9 in non-UPP use. + - rscadd: NP92, pistol, replaces PK9 in UPP use(mostly), integrally suppressed version + called NPZ92 for UPP Commandos. + - rscadd: QYJ-72, UPP GPMG, replaces minigun with UPP Minigunners + - rscadd: Technically resprites but due to changes closer to replaces N-Y revolver + with ZHNK-72 + - rscadd: Adds a character custom loadout Type 73, 2 mags spare. + - rscadd: UPP helmets now work as ear protection, intended use with HJRA-12 RPG + - rscadd: UPP officers now have regular UM4 helmets instead of UH7 helmets in their + vendors as UH7 looked ugly with their combat gear + - rscdel: Removes the PK9 entirely + - rscdel: Removes tranqs from UPP Commando loadout + - rscdel: Removes HEAP ammo from UPP officers and commandos, replaced with normal + and AP mags when applicable + - balance: UPP jackets no longer have massive armor, in exchange they no longer + slow and in clothing vendors a light version of UPP armor is vendable + - balance: UPP MPs are now armed with a ZHNK-72 belt on their jacket, with an additional + shrapnelshot loader in their belt. + - balance: Rebalances Type 71 damage/firerate/AP to be a sidegrade of M41A, about + equal DPS, higher damage per shot and AP, lower fire rate, carbine is round-about + the exact same as M41A however. + - balance: Fixes UPP support armor, given to medics on their person and officers + in their vendor, lighter version of UPP armor, exchanges protection for speed. + - balance: Seperates SVD bullet damage from crude rifle bullet and buffs it as a + hard-hitting AP bullet. + - balance: Rebalances UPP revolver(now ZHNK-72), much harder hitting and has higher + AP, but rarer, shrapnelshot extremely rare and good. + - balance: Due to ammo changes, SVD no longer has burst. + - balance: Removes ceramic plates from UPP loadouts + - bugfix: UPP Major now has the correct UPP Commander skillset + - bugfix: UPP Commander skillset can BE + - bugfix: Fixes typepath for UPP support/light armor, actually works now. + - spellcheck: Renames SVD to Type 88 + - spellcheck: Renames UPP Minigunner to UPP Machinegunner + - spellcheck: Renames UPP jackets to UL4 all around + - soundadd: Adds firing sounds for Type 73 and SVD/UPP MG + - imageadd: Resprites the SVD, Type 71, and Type 23, all sprites by wei/esselnek + - imageadd: Adds sprites for all above guns, all sprites by wei/esselnek + - maptweak: Changes instances of skorpion to non-upp type 64, also changes instances + of ppsh to type 19 + Diegoflores31: + - balance: Masterkey and underbarrel extinguisher now must be wielded in order to + be used. + - bugfix: Underbarrel extinguisher no longer bypass wielding restrictions on flamers. + Morrow: + - balance: You now lose nutrition when gaining blood rather than losing a ton of + nutrition when you have low effective blood + Morrow, Frans_Feiffer (beautiful sprites): + - rscadd: Added in built HUDs to various helmets + - rscadd: Sensormates used by squads without medical skills have been converted + to buyable helmet optics + realforest2001: + - code_imp: Changed backend for the message of walking into an invisible wall to + reduce duplication. + - rscadd: Telephones can now receive calls from multiple networks. + - rscadd: Adds UPP, CLF and WY prefab phones. + - bugfix: UPP RTO pack is now titled UPP rather than USCM +2023-08-27: + AnuvKH: + - maptweak: Fixed deep ocean around NV monsoon, removed incend ammo. + Diegoflores31: + - bugfix: Glasses with flash protection can no longer be used for welding. + - refactor: Adds defines for negative welding protection. + Morrow: + - bugfix: fixed a bypass to allow ghost scan health when it should not be allowed + cuberound: + - rscadd: UPP SL gets proper bag with mini fire extinguisher three WP grenades , + two snacks and an AP mag + harryob: + - bugfix: whispering no longer uses the old speech bubble +2023-08-29: + CapCamIII: + - bugfix: actually fixes m4ra custom barrel offset + MikeKuwait: + - bugfix: Plants should not grow every time it's sampled + - bugfix: Camera console should now close if you step away from it + - bugfix: teleporting canister pouch to chemical dispenser + Morrow: + - bugfix: Fixed pointblanks + - bugfix: Fixed western medbay door buttons + Steelpoint: + - rscadd: IO's and FTL's can now purchase a 'welding visor' from their vendor. This + visor grants whichever helmet it is attached with the ability to flip a protective + visor that prevents the user's eyes from taking damage while welding. + - balance: The M12 Helmet, normally used by FTL's and USCM Officers, can mount two + visors at once, instead of only one. + TiviPlus, A-lexa, SyncIt21, Azarak, harryob, MorrowWolf, Zonespace: + - rscadd: shadows are now in the game, and light follows you. + Xufysz: + - bugfix: Fixes admin training dummy interaction distance + - bugfix: Fixes the kitchen soda fountain being wrenchable. + realforest2001: + - bugfix: Fixes UPP/CLF access to antag vendors. + - rscadd: Adds faction specific accesses to TWE and UPP representatives. + - rscdel: Removes pirate access from Press and Corp. Liaison. + - bugfix: Areas around LZs (particularly on Sorokyne) are now unweedable as intended. + - code_imp: Moved the Request ERT message to a proc to reduce duplication. + - admin: Added a detail in ERT request to indicate if a RANDOM ERT was granted by + staff already or not. This will not work for manual specific chosen ERTs. +2023-08-30: + Ben10083: + - qol: General Quarters via ARES can now be called regardless of alert level. + Huffie56: + - bugfix: give back marksman ammo to MP's because i remove it in a previous PR by + mistake + JackieEstegado: + - bugfix: Most 'light' vines on LV are no longer invisible. + Morrow: + - rscadd: Added 3 to hypospray transfer amount option + TheGamerdk: + - refactor: Refactors the overwatch console in TGUI +2023-08-31: + Huffie56: + - rscadd: Add roller bed, mini extinguisher and multi-tool to the utility vendor + in small quantity. + - balance: divide by two the number of "ME3 hand welder" in utility vendor. + - bugfix: remove a duplicate item being sell the flashlight. + - bugfix: some clothing items have a minimum of one now. + Morrow: + - rscadd: Allowed lesser drones to spawn at pylons and core. + - rscadd: Created a pool of lesser drones at cores and pylons that regenerate over + time. It takes about 10 seconds to get one more when queen is on ovi and about + 120 seconds when queen is off. + - balance: Lesser drones and facehuggers no longer count towards the lesser drone + count but lesser drones are still capped at 1/3rd of the hive with a minimum + of 3. + - balance: Facehuggers have also been changed to not count lesser drones and themselves + for max calculations. + - bugfix: Fixed dropship hijack offset + QuickLode: + - bugfix: PMC Survivors now can use WY Comms. + Segrain: + - bugfix: CL's lockbox can be properly opened once again. + Steelpoint: + - balance: Large amount of balance changes to UPP survivors on Trijent. New spawn + setup guarantee's you'll get 1 Medic and 1 Engineer. + - balance: UPP survivors now have access to HUD icons for squad roles, and access + to the UPP communications channel if the colony communications is repaired. + - balance: UPP surv SL's and Specialists can now drive vehicles. + - balance: A second, crashed, UPP dropship can be found somewhere on Trijent if + the UPP survivors spawn. It contains extra supplies and stronger firearms. But + requires a detour to find. + Tkdrg, many TG contributors: + - rscadd: dchat notifications now have a better interface + harryob: + - bugfix: vehicles no longer have two lights + - bugfix: vehicles are now properly bright inside diff --git a/html/changelogs/archive/2023-09.yml b/html/changelogs/archive/2023-09.yml new file mode 100644 index 000000000000..6dc9203f23d8 --- /dev/null +++ b/html/changelogs/archive/2023-09.yml @@ -0,0 +1,454 @@ +2023-09-01: + ClairionCM: + - bugfix: Fixes an infinite flare bug + Huffie56: + - refactor: clean dmi file extract sprite hidden inside other sprites direction. + removing sprite change from dmm files. + - bugfix: fix seing decimal in clothing vendor surplus. + - mapadd: adding an an access to the exterior side of each lifeboats. + JackieEstegado: + - qol: Added in-hand activation for machetes, which will cause one to start cutting + vines and grass on the tile directly in-front. + Morrow: + - bugfix: Fixed lesser drone counts on pylons/cores + Private Tristan: + - qol: Researchers now spawn with reagent scanner goggles. + Steelpoint: + - bugfix: UPP survivors no longer have a small chance to accidently spawn with no + armour or external webbing. + - maptweak: Hidden floor safe in LV-624 is now positioned correctly. + harryob: + - rscdel: removed the hallucinating ghost notification +2023-09-02: + BeagleGaming1: + - code_imp: changed camouflage from map definitions to JSON + realforest2001: + - rscadd: Added a Provost radio & channel. + - qol: Changed High Command radio to have most channels off by default. + - rscdel: Removed ignore_z from High Command radios. +2023-09-03: + Katskan: + - balance: Merged vision toggle options between ship and colony synthetic types. + - balance: Removed 15 points from WY experimental tool vendor coin redemption + Morrow: + - bugfix: Fixed most of the camo items being clown gear + realforest2001: + - rscadd: Added a preference for using the old legacy yautja armor, only accessible + to the people who had the special gear. + - bugfix: Fixed the old Yautja Legacy armor selection code. Removed the unique titles + from the legacy gear however. + - imageadd: Changed the Yautja relay beacon sprite to a newer unused sprite. Changed + iconstate name of health scanner for preds from tracker to scanner. + - imageadd: Moved some of the used sprites out of the unused category in pred_gear.dmi. + - imagedel: Deleted old relay beacon sprite, deleted duplicate plasma pistol and + thwei sprites. +2023-09-04: + Morrow: + - bugfix: Peri now works for brain damage + - bugfix: Brain damage movement will no longer occur while buckled and unconscious + Steelpoint: + - spellcheck: Box of donuts order from req is now spelt correctly +2023-09-05: + Ben10083: + - admin: New toggleable flag added to bypass restrictions for Working Joe spawns + as observer (excluding whitelist requirement) + Morrow: + - bugfix: Fixed perma helmet HUDs + Steelpoint: + - rscadd: Synthetic vendors now have the option to vend several helmets and a riot + visor. Including a standard M10 helmet defaulted to non-camo grey. + VileBeggar: + - balance: The M39 foldable stock no longer inflicts debuffs when folded. + Zonespace27: + - bugfix: Working Joes no longer get cryo self defense kits + - bugfix: Cryo self defense kits now have the correct amount of slots +2023-09-06: + Birdtalon: + - bugfix: fixed eggsac carrier strain not updating hugger sprites. + Drathek: + - bugfix: Fixed xeno grab intent + Morrow: + - rscadd: Added a ghost notification for Acid Runner For the Hive! ability. + RenaRenaRe: + - bugfix: Hugger and Lesser Drone ghosts now actually bypass time of death checks + for the larva queue. +2023-09-07: + Morrow: + - bugfix: Fixed a null reference when firing full auto and dropping your weapon + Steelpoint: + - bugfix: ERT UPP Soldiers will now correctly spawn with firearms. + harryob: + - rscadd: guns that have full auto now start on full auto by default +2023-09-09: + BeagleGaming1: + - bugfix: The APS property works correctly again + Morrow: + - bugfix: Clusters turning into pylons expand properly + - rscadd: Added the ability to early launch lifeboats + - rscadd: Added the ability for lifeboats to crash if early launched + - rscdel: Removed alcohol from emergency wall cabinets + - bugfix: Should stop crashing shuttles from landing on each other + Triiodine, Frans, Warfan, SpartanBobby, Twomper, Roboticpotato, Tophat Penguin,forest2001: + - rscadd: Added Royal Marines commando ERT and faction + - rscadd: Updates Riot shield sprite, adds metal shield as well (sprites from trio) + - rscadd: TWE ERT station + - rscadd: F903 Rifle, Royal marines commando armour sets, new smartgun with holotargetting + rounds for royal marines commando + - rscadd: Calico shotgun, pistol and SMG sprites to the codebase made by Triodine + - rscadd: royal marines commando HEDP and HIDP grenades + Zonepace, Thwomper: + - rscadd: Added the M707 "Vulture" anti-materiel rifle. Not currently player-obtainable. + Credit to Tophat and Kaga for the lore description. +2023-09-10: + BeagleGaming1: + - rscdel: Removes emergency autoinjectors from squad medics + - rscdel: Removes skillless variant of the emergency autoinjector, makes default + variant skillless + - balance: Emergency autoinjectors cannot be refilled + - balance: Replaces skillless autoinjectors in marine pouches with standard autoinjectors + Morrow: + - rscadd: Added CAS Fire Mission ghost notification + QuickLode: + - bugfix: Fixes WY comms for survivor WY roles. + Steelpoint: + - maptweak: Fixed broken disposal piping in research resulting in items being dumped + back into research. + - rscadd: A new skill has been added, the 'Overwatch' skill, allows the user to + use the overwatch console. + - rscadd: All USCM Officers can now use overwatch consoles. + TeDGamer: + - balance: Huggers and larvas are slightly harder to hit + - code_imp: Replace some w_class magic numbers with defines + - balance: Reduced M2C accuracy to be more in line with realistic accuracy intent + Warfan1815, AmoryBlaine (Sprites): + - rscadd: Changes donor Biolock's medium medic armour to a light custom paintjob + armour and donor Tristan's reactive scientist armour to a custom marine armour + harryob: + - bugfix: fixes the JMP link in chat + ihatethisengine: + - rscadd: On-screen messages now appear with sound. Radio static for marines, distant + roar for xenos. + - bugfix: shuttles now throw mobs asynchronously and faster + kylerace, lemoninthedark, harry: + - refactor: optimized icon-in-chat code + - bugfix: weird icons on the smoothed walls when examining or alt+clicking +2023-09-12: + Morrow: + - balance: Lowered the xeno endgame start to 55 minutes into the round + - balance: Lowered the nuke endgame start to 115 minutes into the round + - balance: Lowered the nuke cost to 5 points + - rscdel: Removed the shipside announcement for working joes joining + - rscadd: Added cryo specialist tech that can be purchased once for eight points + - balance: Cryorines now cost 6 points. It increases by 6 each purchase. + - balance: Cryorines now give 5 marines. 1 SL (for the first one only), 1 medic, + 1 engi, rest rifleman. + - bugfix: Fixed queens prying open lifeboat double doors + - rscadd: Powerloader wreckage now can be attacked by xenos + - bugfix: Removed annoying and inaccurate to_chat from join response team menu + - bugfix: Firing flares into the air now produces light again + - bugfix: Fixed repeatable techs not having correct overlays + - qol: Recalibrating limbs can now be done with the patient standing + Waseemq1235: + - admin: Subtle messages are now much larger. + cuberound: + - balance: GAU can hit mobs that are on ground now + realforest2001: + - bugfix: Fixes ARES Security Logs and stops ARES logs recording mob datums instead + of names. + - rscadd: Moves AntiAir records to Security Logs. + - rscadd: Adds Flight Records to ARES Interface, detailing launches and setting + changes. Does not include CAS details. + - code_imp: Changes ARES log procs from using 'user' to 'user_name' to identify + it should be the string rather than mob datum. + - maptweak: Adds a couple APOLLO consoles to upper and lower medical. Moves the + one outside ARES reception slightly. + - bugfix: Fixes WY access to Almayer Research. + - rscadd: Finally adds fully functional access request tickets to APOLLO console + for entry to AI core. + - rscadd: Adds CN20-X Nerve Gas, an alteration of base CN20 that can affect xenos. + - rscadd: CN20 and CN20-X are now translucent and do not obstruct vision much. + - admin: Adds a VV list dropdown to release gas from vents as the manual proc was + too clunky. + - rscadd: Adds nerve gas grenades for CN20 and CN20-X + - code_imp: Tidied up the TWE presets so they're easier to read. + - rscdel: Removed duplicate surgical line from all TWE presets. + - rscadd: Added an MRE box to the TWE MRE carrier preset. + - spellcheck: Added unique names to the RMC armors. + - bugfix: Fixed iconstate names being backwards for TWE pointman and SG. + - code_imp: Removed unnecessary repeated values for TWE armors. + - code_imp: Tidied the RMC skillsets to be consistent in ordering of skills. + - rscadd: Added an SG specific skillset for RMCs. + - bugfix: Fixed duplicate entry for medical training on RMC TL skillset. + - spellcheck: Renamed default RMC skillset to Royal Marines Commando rather than + Royal Marines Commando Rifleman. +2023-09-13: + Morrow: + - rscdel: Removed some mapped clown gear + TeDGamer: + - balance: Hive weeds can be supported by other structures when original parent + structure is destroyed. + Zonespace27: + - balance: M56D now has full auto mode. + - qol: M56D now has an ammo counter when firing. + - rscdel: M2C can no longer rotate with MMB +2023-09-14: + Morrow: + - rscadd: Added a ghost notification for yautja self destructs + - bugfix: Fixed lifepods still working after evac canceled + Zonespace27: + - balance: Coffins now layer above beds + realforest2001: + - imageadd: Added a CMB stamp icon. + - imageadd: Changes the icon_state name of the WY stamp from centcom to weyyu. + - rscadd: Changes EFTPOS stamp icon to use RD instead of weyyu. + - bugfix: Changes the pre-spawned QMs stamp to use the proper stamp. + - spellcheck: Renames Requisiton Officer's stamp to Quartermaster's Stamp. + - maptweak: Renamed the spare Req Officer's stamp to spare Quartermaster's stamp. + - rscadd: Codebooks are now faction based rather than individually unique. +2023-09-15: + BeagleGaming1, forest2001: + - rscadd: Adds a CMB ERT to investigate the Black Market + - rscadd: Adds a [cmb] logo for papers + - rscadd: Adds a quiet_launch var for distress beacons, to differentiate between + ERTs who should announce their response reception, but not the beacon going + out in the first place. + - rscdel: Removes banhammer from normal acquisition. + Ben10083: + - rscadd: Working Joe arrivals announced in Apollo link + Drathek: + - bugfix: Fix some donor items breaking on maps with camos. + - bugfix: Fix donor items not having a fingerprint atom flag and donor armors not + having conductive atom flag. + Morrow: + - bugfix: Fixed a few ways around fire group delays + Waseemq1235: + - admin: TWE faction reports are now possible. +2023-09-17: + BeagleGaming1: + - bugfix: Fixed CN20-X canister grenades + Drathek: + - bugfix: Fix/Rework logic regarding xeno guaranteed slots + - bugfix: Fix evolution in thunder dome affecting hive slots + Morrow: + - rscdel: Disables Shivas Snowball + Private Tristan: + - spellcheck: acid runners are now properly informed of their corrosive acid's strength. +2023-09-19: + Hopek: + - rscadd: 'New facehugger strain: Watcher. The Watcher loses their ability to hide + in exchange to see further and the ability to no longer take damage outside + of weeds.' + c4xmaniac2: + - balance: Moved 1/3 of all intel into the cave systems. + - maptweak: 1/3 of all Intel has been redistributed into the caves. + - maptweak: Nightmare inserts on the colony side and in the caves of LV now have + their intel distribution standardized. + realforest2001: + - bugfix: Fixes the CMB tradeband scanner not being able to do it's job. +2023-09-20: + BeagleGaming1: + - rscadd: Uncommented the "Observe" verb for ghosts, allowing ghosts to see from + a humans HUD + Huffie56: + - balance: made it so that req as double what a standard vendor as in ammo and guns. + Morrow: + - balance: Removed some PMC gear on maps + SpartanBobby, GSDPathe: + - maptweak: Changes to LV522 loot table surrounding metal spawns + - maptweak: Redectorates areas around LV522 that were underwhelming before + TheGamerdk, ihatethisengine: + - rscadd: IOs start in their own squad now + c4xmaniac2: + - mapadd: Readds yard to Science Annex + - maptweak: Redid the yard loot to be more in line with current surv loot standards. +2023-09-21: + SubjectD9341: + - imageadd: added the icons for the new biosuits + - imagedel: removed the icons for the old biosuits + realforest2001: + - bugfix: Fixes the overwrite mark prompt on admin tickets not respecting closing + the confirmation prompt. +2023-09-22: + Huffie56: + - qol: reorganize and update all the squads vendors to add new categories(helmet + optics, pamphlets, clothing items). + - balance: remove hostler because it was available for free(for medic, squad-tl,. + - balance: added possibility to buy M4 Pattern Armor for rifleman. + - balance: added possibility to buy USCM Radio Telephone Pack for squad medic, engi + and specialist. + - balance: added possibility to buy Welding Visor for medic, SL, rifleman, smartgunner + and specialist. + Morrow: + - balance: Removed eggs off hive weeds for egg sac carrier + - balance: Backpacks can now only fit first aid kits if you have medical skill and + toolkits if you have engineering skill + - balance: G8-A can no longer fit first aid kits or toolkits + - balance: Toolbelt now has 10 slots and can fit more engineer related items + - balance: Combat toolbelt now has 9 slots and can fit small ammo and engineer related + items + - balance: M276 medical rig belt no longer holds ammo + - balance: Plastic bag removed from normal play + - balance: First aid kits can now only hold medical items + - balance: Toolkits have been renamed to engineer kits and can only hold engineering + items (not tools) + - balance: Welding tool buffed to 40 welder fuel + - balance: Larger welding tools removed from normal play + - rscadd: Electrical toolbox now has an APC circuitboard + - balance: Medical pouch removed in req and various job vendors + - balance: Machete pouch, large pouches, and autoinjector pouch scales reduced in + req + - balance: medkit pouch has been renamed to medical kit pouch and can hold 7 medical + items, only usable if you have medic skill + Morrow, DrLance (sprites): + - rscadd: Added the Mateba Special as a choice for COs + Waseemq1235: + - rscadd: Added HEAP F903 magazines. Does NOT spawn with the ERT presets. ADMIN + SPAWN ONLY. + - imageadd: Added F903 ammo band icons. +2023-09-23: + Morrow: + - bugfix: Fixed intel squad "Unauthorized access detected" + realforest2001: + - rscadd: Gives survivors bank accounts. +2023-09-24: + BeagleGaming1: + - admin: Disabling round end delay has a confirmation + - rscadd: Added a mapping effect for prop guns + Morrow: + - bugfix: Fixed drag-n-drop nesting opening + Steelpoint: + - rscadd: Intel Officers will now default to using the Intel radio channel when + communicating. + Sylphily: + - rscadd: Added the ability for the IMP Ammo Rack to hold folding barricades. + Zonespace27: + - balance: Specialists now have separate pools of points for ammo and utility. +2023-09-25: + Steelpoint: + - rscadd: Synthetics may now vend biohazard suits for personal use. Synth compliant. + Zonespace27: + - balance: Cloaked mobs no longer give off visible messages + c4xmaniac2: + - balance: Comms areas around the east/west rivers expanded for easier sieges and + weedable now. + - maptweak: LV Comms now always spawn in Tcomms and one either on the east or west + river +2023-09-27: + CapCamIII: + - rscadd: Adds upp presets for the unused officer ranks, Kapitan, Lt Kolonel, MajGen, + LtGen, Gen, for use in admin events + - rscadd: Changes UPP conscript rank from weird conscript only rank to Private, + moves UPP soldier to PFC, removing the rank gap between soldier and support + - code_imp: Cleans up UPP rank code by deleting redundant ranks + CapCamIII, AmoryBlaine: + - rscadd: Adds new service uniform sprite that is standard across maps, sprites + by AmoryBlaine + - rscadd: Resprites old dress uniform, renames it, adds to XO vendor as a uniform + choice as it fits there now, sprites by AmoryBlaine + - rscadd: Adds new uniform, command boiler suit like gorman wears in the movie, + available in SO locker, SO vendor, XO vendor, CO vendor, sprites by AmoryBlaine + - rscadd: Adds new brown versions of gloves and boot to custom loadout, also lowers + the price of jungle boots to two, sprites by AmoryBlaine + - rscadd: Seperates officer cap and RO cap, officers get officer cap, QM gets RO + cap, CTs get req cap, sprites once again by AmoryBlaine + - rscadd: UPP boots and gloves use the new brown sprite, as it fits their color + scheme and looks cool. + - bugfix: Freelancer leader now spawns with a knife in their boots + - imageadd: Resprites patrol cap, officer cap, SEA cap, standard black boot, standard + black glove, and formal gloves, sprites by AmoryBlaine + Casper: + - bugfix: fixed reagent canister being deleted if ejected with your hands full + - bugfix: fixed cigarette punctuation error + Drathek: + - bugfix: Fix dead huggers converting to non-player huggers + Git-Nivrak: + - bugfix: Fixes no fire delay on m56d in semi-auto and burst fire + HeresKozmos: + - mapadd: added 9 new tunnels to trijent dam + - mapadd: added 9 new tunnels to Fiorina SciAnnex + Morrow: + - bugfix: Fixed a bug with akimbo firing + - rscdel: Removed alpha egg on LV522 + - rscadd: Added a save-able preference for auto-observe + - bugfix: Fixed numerous problems with HUD observer mode + - code_imp: Created a wrapper for client screen changes + - code_imp: Made check contents less horrendous + Steelpoint: + - mapadd: Sensor Towers have been added to all maps. + - rscadd: UPP survivor radio role identifiers now have a shorter title. + - rscadd: UPP survivors now default to using a players preferred name instead of + a random UPP name. + TeDGamer: + - balance: All trained+ engineer skill levels affect duration now. + - balance: Removed double skill duration multiplier for m56d's. + TheGamerdk: + - bugfix: Adding marines to intel squad broke the crew manifest + Zonespace27: + - bugfix: HEFA Knights now spawn with their armor again + - balance: HEFA Knights now spawn with 2 HEFA in their helmets + - admin: Added skillless subtype of the m707 + - balance: Lowered vulture spotted/unspotted drift from 33/100 to 25/90 + - balance: Lowered vulture scope adjust/move time from 0.5/1.0s to 0.4/0.8s + - balance: Vulture bipod anchors user in place + bostonthebear: + - rscadd: Changes pilot officer timelock from 5 hours as squad marine to 2 hours + as DCC + realforest2001: + - balance: Adds an extra 75% damage and hive interference to plasma rifle vs xenos. +2023-09-28: + Casper: + - bugfix: fixed S&W black market crate not working + - bugfix: fixed flashlights showing incorrect sprite state + Steelpoint: + - rscadd: Alert message regarding Pylon construction around a communications array + now properly emphasizes why it is a threat to Marines, and a benefit to Xenos. + TheGamerdk: + - qol: You can no longer doom yourself by joining as a crit xeno +2023-09-29: + BeagleGaming1: + - bugfix: Whiskey Outpost ground map vote works correctly + - config: Removed unnecessary config + Ben10083: + - soundadd: Multiple new Working Joe voicelines added + Casper: + - bugfix: fixed cameras going invisible on wire cut + Huffie56: + - refactor: divide preset into different file for each map. + Morrow: + - qol: '"Do nothing" dual wield preference' + QuickLode: + - rscdel: removed Pvts from Anchorpoint QRF (rip) + - spellcheck: fixed a typo in CMB call-in + - rscadd: Allows ext webbing to hold firearms. + - bugfix: exosuits which can hold scabbards can hold similar scabbards(ie, machete + and katana) + - rscdel: Removes ext webbing from SO Locker + SpartanBobby: + - maptweak: CL now spawns in a hypersleep bay "Passenger Bay" it's right next to + his office, the CC spawns with him too since his landmark was in the latejoin + bay on the lowerdeck + - maptweak: re-arranged PO bunks should allow for better traffic in and out + - maptweak: fixed symmetry issue in north-south CIC hallway + - maptweak: minor warning stripe decal additions around Almayer + Steelpoint: + - rscadd: Synthetic equipment vendor now can vend fuel cannisters and all colour + variants of the synthetic utility vest. + - rscadd: Synthetic cosmetic vendor now can vend all colour variants of the standard + Marine helmet, MP and Combat Technician uniforms, the welder chestrig and security + hud glasses. + Zonespace27: + - bugfix: Picking up a dropped pred bracer will no longer leave it stuck to your + hand. + - bugfix: Yautja can no longer mark xenoes as honorable + - rscadd: You can now fold a combi-stick using the new "collapse combi-stick" verb + and/or keybind. Defaults to the space bar. + - bugfix: Using a Yautja relay beacon now properly decloaks you +2023-09-30: + Drathek: + - bugfix: Join as xeno no longer offers buried larva spawns if there are larva queue + candidates + Huffie56: + - refactor: Cleaning specialist.dm file + Morrow: + - rscdel: Removed more clown gear from maps + - bugfix: Fixed taking control of crit xenos diff --git a/html/changelogs/archive/2023-10.yml b/html/changelogs/archive/2023-10.yml new file mode 100644 index 000000000000..49bc7a740145 --- /dev/null +++ b/html/changelogs/archive/2023-10.yml @@ -0,0 +1,430 @@ +2023-10-01: + QuickLode: + - bugfix: Allows M46C prototype rifle to accept standard M41A MK2 rubber munitions +2023-10-02: + Ben10083: + - bugfix: fixed a Working Joe voiceline from not working + Casper: + - ui: added microwave TGUI + Morrow: + - bugfix: Fixed fake incomplete surgeries + - bugfix: Fixed manual distress signal manual call options + - bugfix: Fixed a WO distress signal over announcing + Steelpoint: + - balance: Tool Pouch can now hold the same types of items that a toolbelt can hold. + It is still restricted to 4 inventory slots. + - balance: Eggs no longer are resistant to certain kinds of melee attacks. Making + them far easier to kill in melee. + realforest2001: + - balance: Reduces power cost for plasma caster use, and creation of thwei crystals/health + capsules. +2023-10-03: + Drathek: + - rscadd: Add the last larva queue message to observer's status panel + Huffie56: + - qol: remove welding google from squad comtech vendor to avoid him to waste point + since tool vendor have them for free. + JackieEstegado: + - bugfix: Fixed runtime that could happen when melleing an egg. + Morrow: + - balance: If a mob is on top of a reflective wall the wall no longer functions + - balance: Bullets will not longer get eaten by xeno special structures unless you + click directly on them + - bugfix: '"Fixed" missing window frame icon states' + Private Tristan: + - balance: all resin fruits now contain 30u of fruit resin along with their secondary + reagents. + - balance: Alacrit fruits now contain catecholamine plasma instead of pheromone + plasma. + Steelpoint: + - rscadd: Xenomorph hives can now form an alliance with Colonial Marshals. + Sulaboy, Hidgamer, Steelpoint: + - rscadd: Adds the surgical drop pouch item. It comes in green, blue and black. + Only available from the synthetic vendor currently. + - imageadd: Adds sprites for the surgical drop pouches. +2023-10-04: + BeagleGaming1: + - rscadd: Added keybinds to allow inventory manipulation + Morrow: + - admin: Operation time logging + - balance: Underbarrel extinguisher no longer requires wield + - bugfix: Re-added previous UPP changes that were lost in soft conflict + - spellcheck: Removed some ambiguous text about loyalties for UPP survivors + - bugfix: Fixed storage depth for internal storages + - bugfix: Candle boxes can now only hold candles + blackdragonTOW: + - sounddel: removed 300+ ancient and unused Piano and Violin notes. +2023-10-05: + Drathek: + - rscadd: Restore the stat panel options menu to change the stat panel font size + - bugfix: Fix getFlatIcon not resizing its template nor respect appearance_flags + of RESET_COLOR and RESET_ALPHA + Morrow: + - bugfix: Fixed req door accesses + - rscadd: Added NVG optics + - rscadd: Added a hotkey to cycle optics + - rscadd: Added special marine raider optic + - rscadd: Added examine text for optics + - rscadd: Added research publication to advanced medical optic + - rscdel: Removed functional tube NVGs from gameplay + - refactor: Moved some optics code around to make it less redundant + - bugfix: Fixed a bug with duplicate optic actions + - bugfix: Fixed a reported bug where HUDs would stay on forever with destruction + of a helmet + - balance: Comms relays now have a five minute cooldown to be re-pylon'd after a + pylon was destroyed + - bugfix: Pylons now account for stored larva + - bugfix: Fixed floodlight stacking to make mostly invincible walls + - refactor: Refactored 90% of the floodlight code + Steelpoint: + - ui: Added personnel job titles to the handheld crew monitor, to make it easier + to tell find out exactly what role's you are looking for. Also slightly expands + the default monitor screen size to accommodate the entire personnel text on + screen. +2023-10-06: + blackdragonTOW: + - bugfix: fixed spider dead sprite to not have white space (is transparent instead) +2023-10-08: + Kivts: + - rscadd: You can partially protect yourself from flu and other disease by wearing + a mask and other PPE. Doesnt affect Black Goo. + Steelpoint: + - rscadd: Black and white beret's have been added as loadout options for all characters + as headwear. + - rscadd: More cosmetic options are on offer for Synthetics. Includes white and + black berets, standard or darker engineering and mp uniforms and all camo options + for the poncho. + - rscadd: The Synth Councillor and Synth Utility uniforms can now roll their sleeves. + blackdragonTOW: + - spellcheck: Altered inconsistent dropship ammo names + irRegularGuy646: + - rscadd: Added new "M1A1" ballistic goggle reskin + kiVts: + - rscadd: Spades can now remove botany plants. + - rscadd: Plants now globally take more water to grow. + - code_imp: removed all mention of lighting in botany trays. + - bugfix: Research computer no longer shows "for" for every simulation result. + realforest2001: + - rscadd: Added a Do Not Disturb feature for MOST phones. (Overwatch and a couple + others excluded). + spartanbobby: + - maptweak: Fixes floating Cameras and Light in the maint tunnels north of south + of brig + - maptweak: Fixes incorrect Shower tiles in maint shower north of engineering + - maptweak: Fixes incorrect area in maint south of VC bunk + - maptweak: Removes Piano from USS Almayer upper lifeboat area +2023-10-09: + SpartanBobby, esselnek: + - rscadd: tactical shotguns now come standard with their stock. Yes you can remove + it if you dont want it + - rscadd: new tactical shotgun stock sprite done by esselnek +2023-10-10: + BeagleGaming1: + - code_imp: prop guns will copy attachments + CapCamIII: + - rscdel: XO can no longer take a sword as their personal weapon in their vendor. + realforest2001: + - rscadd: Added missing flight record for Queen dropship summon. + - code_imp: Added security record option for shipwide_ai_announcement. + - rscadd: Added security records for unidentified lifeforms announcement. +2023-10-11: + BeagleGaming1: + - rscadd: Light floor can be examined to tell if it is on, off, or broken. + - code_imp: Light floor subtypes for easier mapping + Birdtalon: + - bugfix: You can now pick up paper bins + - bugfix: Campfires stop consuming wood when full + Zonespace27: + - rscdel: Predators can no longer see their or others cross-round honor count. + irRegularGuy646: + - bugfix: fixed new goggle's on helmet sprite +2023-10-12: + QuickLode: + - rscadd: Adds a handheld distress beacon for the Colonial Marshal. They can use + this to signal distress which in turn allows reinforcements in the form of Anchorpoint + Marine QRF or nearby CMB teams. Admins do the final check. + - rscadd: Adds a CMB Patrol Team which responds to "Marshals in Distress" call. + - admin: headset admin response no longer specifies USCM origin(as this is used + for USCM, WY, and now CMB) + - spellcheck: fixes a CMB typo in response message. Also a miniscule change to HG + 37-12 desc. + - spellcheck: fixes 2 misc typos in CMB Inspections + harryob: + - rscadd: origin descriptions are now displayed when selecting an origin + mullenpaul: + - ui: tweaked flyby controls to make them in line with other destinations +2023-10-13: + Drathek: + - refactor: Refactored camera code to be less blocking, use typechecks less often, + and provide somewhat more fluid descriptions to photos. +2023-10-14: + BeagleGaming1: + - bugfix: M39 arm brace disables when dropped + CapCamIII: + - bugfix: UPP Sapper/Medic survivor use their correct paygrade instead of UE3M/UE3S + QuickLode: + - rscadd: Colony Supervisor now has a guaranteed grant. + - balance: nerfs PMC Synthetic's gear + - bugfix: PMC Synthetic has corrected access(thx forest) + - bugfix: Colony Supervisor can now have access to his own colony(LOL). + mullenpaul: + - rscadd: adds weapon spawners for USCM, CLF, PMC and UPP +2023-10-15: + Birdtalon: + - bugfix: Limb printer can no longer double print or print without metal. + Drathek: + - ui: Fixed a duplicate Options button + Lalipar: + - qol: Readable time for when a fax was sent in fax panel + - qol: Adds ckey/character name for faxes in fax panel + - qol: Adds fax subject to fax panel + - bugfix: Added CMB faxes to Fax Panel + fira: + - bugfix: Fix nuke explosion getting canceled in some very rare cases. + - bugfix: Xeno Name preference does not require a reconnection to apply anymore. + It still won't change your current Xenomorph's name however. + - bugfix: Fixed Tape Recorder failing to record when no language information is + present. + harryob: + - admin: administrators without R_DEBUG can now restart the server without starting + the round +2023-10-16: + CapCamIII: + - balance: ERTs now have a variant of the standard medkit that has no storage lock. + - bugfix: Lots of ERTs now correctly have a medkit spawning in their gear + Drathek: + - bugfix: Fixed the hive surge join as xeno observer alert text link not actually + doing anything. + Twomoon: + - rscadd: Added new haircut + Waseemq1235: + - admin: Makes subtle messages more noticeable. + Zonespace, Wei (sprites): + - balance: Removed NSG, Type71, tactical Mar-40, and Mar-50 from the black market + - balance: Removed Ext. M4ra mags from the black market + - balance: Removed monkeycubes from the black market + - balance: Removed lunge mines from the black market + - balance: You now need a modified security access tuner to access the black market, + which can be found ship- and ground-side where scanners and radios can spawn. + fira: + - bugfix: The Turing Machine should now keep working as intended if its linked Smartfridge + is blown up. + - bugfix: Fixed xeno cultists always being created into normal hive, irrespective + of the selected hive. + - bugfix: Fixed 'Join as Freed Mob' verb crashing if freed mobs had previously been + deleted. + - bugfix: Fixed issues with turfs, notably lighting, arising when building it from + a sheets stack. +2023-10-17: + VileBeggar: + - qol: The Queen's psychic messages now use a bigger font and are harder to miss. + Warfan1815: + - mapadd: New Squad Briefings south and north of normal briefing! Feel free to use + them to your heart's content. + - maptweak: Moved long-rest bunks further north and further south of where they + were originally +2023-10-18: + mullenpaul: + - code_imp: resolves flyby issues by refactoring update_equipment logic + - refactor: removes unwanted code + realforest2001: + - code_imp: Moved most data storage from ARES Interface and APOLLO consoles to a + new ARES datacore datum. + - code_imp: Moved the two consoles to separate files for easier navigation, and + moved their respective UI data to the files. + - code_imp: Ares logging procs are now global procs with integrated can_log checks, + rather than requiring definition of ares_link for every use. + - rscadd: Added ares_can_log checks to all the places I could find missing them. + - bugfix: Fixed missing rejection button for access tickets. + - rscdel: Removed claim ticket button from Access Tickets. +2023-10-19: + BeagleGaming1: + - refactor: Refactored handheld beacons and related code + CapCamIII: + - bugfix: Equipped marine presets spawn with full food on spawn + Huffie56: + - refactor: refactor ammo_datums file. + SpartanBobby: + - maptweak: fixes lack of warning stripes under doors in squad briefing areas and + newly added maint doors onboard USS Almayer + - maptweak: fixes incorrect tiles used under window frames in new squad briefing + areas onboard USS Almayer + - maptweak: fixes pipe sections under window frames in new squad briefing areas + onboard USS Almayer + - maptweak: fixes pipes that lead nowhere in new squad briefing areas onboard USS + Almayer + - maptweak: fixes button that was being hidden by light due to recent USS Almayer + changes + - maptweak: corrects strangely laid out vent sections due to recent USS Almayer + changes + - maptweak: makes USS Almayer Bunks consistent with the rest of the ship's shower + and bathrooms + - maptweak: updates "Dusty Beret" prop item to now be the RMC Beret it was originally + referencing (now that the RMC are ingame) + VileBeggar: + - qol: All squad uniform vendors have had their standard apparel condensed into + one button. + fira: + - bugfix: Fixed caps displaying contained items on character even without being + worn. + neeshacark: + - qol: MT, CT, and Nurses can now take the bad leg trait. +2023-10-20: + Drathek: + - bugfix: Fixed a cause of bad icon operations + - bugfix: Bandaided a problem with nulls in GLOB.clients + IsProbablyCatto: + - qol: Medbelts pull from pillbottles as default + Kitsunemitsu: + - bugfix: fixed FTLs being demoted from SL erroneously having the tag TL in chat. + MrDas: + - bugfix: You can now disassemble wide airlocks. (You can't unwrench them though) + - spellcheck: Fixed a few typos in airlock assembly. + - imageadd: Added wide airlock assembly and generic solid wide airlock sprites. + SpartanBobby: + - maptweak: Removes stunprod from LV522 + VileBeggar: + - rscadd: Dartboards are now functional and can be crafted with cardboard. + - bugfix: Fixed an issue with some deconstructed signs losing their icon. +2023-10-21: + Birdtalon: + - rscadd: USCM Service Jacket to SEA Vendor + CapCamIII: + - balance: Crawling now only takes 1 second to move and no longer has an overhead + icon when doing it. + - balance: Timer on attempting to join ERT after death is now 30 seconds down from + 1 minute + - spellcheck: UPP Synth Survivor on the Trijent Dam nightmare is now called a Support + Synthetic instead of a Combat Synthetic, as its not a combat synthetic + Drathek: + - bugfix: Fixed imaginary friends not initializing correctly and throwing a runtime + - ui: Tweaked the position of some ghost alerts + SpartanBobby: + - maptweak: Fixes incorrect DIR on fireshutters in memorial + - maptweak: Corrects lack of warning stripe tile under door in north brig maint + Steelpoint: + - rscadd: UPP ERT's have a chance to be neutral to the USCM. + fira: + - bugfix: Xeno and Megaphone abovehead chat speech should now properly be centered + horizontally. + - bugfix: Fixed Rangefinders/Designators preventing you from lazing if you looked + up/down them without moving. + - bugfix: Fixed Rangefinders/Designators forcing you to look up/down again if you + had moved while using them. + foxtrot1322: + - rscadd: Added splints to the survival pouch + - rscadd: Increased survival pouch storage space by 1 + - spellcheck: Updates the survival pouch's description +2023-10-22: + Drathek: + - bugfix: Fix incend and cluster OBs not respecting ceiling OB protections. + - bugfix: Disabled code in icon2html that is causing bad icon operations + Morrow: + - server: the rustg mysql driver is now properly compatible with mariadb + Zonespace27: + - rscadd: Mentors can now unmark mhelps + fira: + - bugfix: Removed redundant double binding for F1 to AdminHelp from default keybinds. + This does not affect existing users or their settings. + - rscadd: Stamping papers now makes a noise. + - bugfix: Fixed incorrect Reqs vendors visuals on the Almayer. They now blend in + with the walls again. + - bugfix: Re-fixed Megaphone above-head-chat drifting to the left. + harryob: + - admin: no more href token errors when changing the game mode via game panel + - bugfix: mentorhelp response no longer gives a dead discord link + - admin: view-target-records now allows you to note people properly + kiVts: + - rscadd: Ghosts get notified when they are being revived by DFB property + - balance: DFB property healing threshold lowered, You can create DFB property higher + than one. + realforest2001: + - rscadd: Added Discretionary Arrest to JAS. + - rscadd: Added a new category to JAS, Precautionary Charges. Moves Insanity and + POW to this category. +2023-10-23: + QuickLode: + - balance: Nerfs synth surv pouch by removing 1 storage slot. + SpypigDev: + - rscadd: CIC Armory SO vendor + - balance: Moved most combat-themed gear from SO spawn vendors, to CIC Armory vendor + - balance: Made RTO pack a point-buy item in CIC Armory vendor for SOs + Steelpoint: + - balance: Revolver Heavy ammo no longer stuns targets it strikes, it will instead + knock them back and slow them down for a short time. + harryob: + - server: the server now respects /string/title for late joiners + stalkerino: + - balance: m39 is able to use vertigrip +2023-10-24: + Segrain: + - bugfix: Slicing food once again works as intended. +2023-10-25: + fira: + - bugfix: Fixed Ghosts and Queen Eye occasionally "eating" pounces in place of a + mob on the same turf. + - bugfix: Re-Re-Fixed Xeno Above Head Chat offsets, for real this time + - bugfix: Fixed people talking in radios all the time. Finally some quiet. + - bugfix: deadchat death messages should now display immediately rather than being + delayed a couple seconds. +2023-10-26: + 4hands44: + - rscadd: Added more attachments, and belts to the CO arsenal. + - rscadd: CO now has an Essentials Kit like other roles, containing his Designator, + and other useful tools. + - rscadd: Re-Adds Bridgecoat to some Officer Dress vendors. (Limited to CO(+) and + XO currently.) + - rscdel: Removed Laser Designator from CO spawn Preset. + - balance: CO can now vend welding Helmet visors. + - balance: Adds grenade packets to CO Vendor. + XDinka: + - rscadd: 'Added four new haircuts: gentle ponytail, edgar haircut, emo bun, taper + haircut.' +2023-10-27: + Backsea: + - bugfix: Fixed the incorrectly placed shutters at req and that one light near CIC + Birdtalon: + - refactor: Refactored praetorian pierce ability + - bugfix: Praetorian vanguard can no longer pierce through windowed doors + SASoperative: + - rscadd: Added donator item and sprites + Zonespace27: + - rscdel: Re-removed CO/XO bridge coat + fira: + - rscadd: Added about 50 new tips. + - rscadd: Bloody footprints are now slightly offset to break long visual straight + lines. + - bugfix: Items do not align back to the center of turfs anymore when picked from + a surface (table or rack) + - rscadd: Some more items now have offsets on the map display, and they all can + be slightly offset. + - code_imp: Rewrote Xeno Acid ticking code. + - bugfix: Weather updates won't cause turfs to acid melt more rapidly anymore + - bugfix: Fixed various issues in the Networking between Turing machine and Smartfridges. + realforest2001: + - bugfix: Fixes custom ERT calling broadcasting when it should not. + - code_imp: Removes unused vars from ERT procs. + - code_imp: Renames the announce var in ERT procs to be more indicative of what + it does. + - rscadd: Added a setting on custom ERTs for announcing beacon was received. +2023-10-29: + Segrain: + - bugfix: Incendiary OB once again spreads to intended size. + fira: + - bugfix: Sprite-click shots onto Xenos are no longer affected by limb-targeting + penalty, because it was an accuracy debuff when there is no inherent benefit + to targeting Xeno limbs. + realforest2001: + - imageadd: Added sprites for provost senior and marshal uniforms. + - spellcheck: Gave unique names to the provost armour subtypes. + - balance: Prevented most provost armour from being able to fit inside bags. + - balance: Returned provost armour to the same slowdowns as MP armour. + - code_imp: Removed a lot of duplicate code in Provost presets and uniform/suits. +2023-10-31: + SASoperative: + - bugfix: Fixed sprite issue by disabling camo variant for donator item + fira: + - bugfix: Fixed Limbs and Organs deleting incorrectly on species change. + mullenpaul: + - refactor: reworked trijent elevators to be reusable on new maps + - maptweak: Trijent map now has two elevators, lz1 to engineering and lz2 to omega diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml new file mode 100644 index 000000000000..02e7bf43396b --- /dev/null +++ b/html/changelogs/archive/2023-11.yml @@ -0,0 +1,425 @@ +2023-11-01: + HeresKozmos: + - rscadd: added flashlight, donk pocket box, interview table, folder, taperecorder, + ink toner, extra lights and expanded the size of the CC's room. +2023-11-02: + Huffie56: + - refactor: Refactor gun cabinet code adding subtype for all the secure guncabinet. + - refactor: Refactor safe code adding subtype for cl and co safes also add a subtype + for armory honor guard closet . + cuberound: + - balance: LZ detector now works even when the DS is stationary + harryob: + - qol: you can now click drag from items in your storage to your hands + private-tristan: + - balance: predators are no longer immune to molecular acid injected from spitter + and boiler tailstabs +2023-11-03: + harryob: + - ui: the options button is now part of the statbrowser tabs proper +2023-11-04: + BeagleGaming1: + - rscadd: Added many new loadout items + - code_imp: Added a signal to items that triggers right after the mob finishes spawning + - code_imp: Added a signal to add additional behavior to storing items in shoes + Blundir: + - rscadd: added intel and foxtrot squad berets and headband + TheGamerdk: + - bugfix: Restores the MK1 AP mags in the CIC armory + fira: + - bugfix: M56D/M2C should now properly stop firing when they stop being used. + realforest2001: + - code_imp: Repathed sword weapons to a uniform /obj/item/weapon/sword + - balance: All sword-type weapons are now Large items instead of Normal sized, to + match machetes. + - rscadd: Added the KN5500 PDA for Working Joes. Sprites by Frans_Feiffer. + - rscadd: Changed the plain glass in Working Joe presets to Reinforced Glass. + sleepynecrons: + - imagedel: shrinks the type-19 SMG stick magazine to a more reasonable size +2023-11-05: + fira: + - bugfix: Fixed recyclers (including Whiskey Outposts') and added the possibility + to recycle crates with them. + - bugfix: Standardized "vend to table" functionality of vendors, enabling it to + work for Whiskey Outpost's Reqs. + - rscadd: Whiskey Outpost vendors now contain the same items as Almayer's. WO still + has spare specialist ammo on top of that. + - rscadd: Readded delivery chute, wrap and tagger to Whiskey Outpost Reqs, letting + you pack and send crates and items via disposals again. + - balance: Whiskey Outpost supply drops should now be more interesting and impactful. + - rscadd: Added missing Synth vendors on WO. +2023-11-07: + 567Turtle: + - soundadd: New whistle sound effect + Alexguinea: + - rscadd: Added toners to the rec vendor + AndroBetel: + - spellcheck: Fixed a typo in RO rules sign. + - spellcheck: RO mention is no more, replaced with QM. + BeagleGaming1: + - code_imp: Tents now hold the datum directly, instead of the typepath + - admin: Added a proc for staff to change tent dmm's + Blundir: + - rscadd: added shotgun tube toggle hotkey + Doubleumc: + - bugfix: vehicle interiors can hear exterior noises + Drathek: + - bugfix: Fixed various job's entry messages having broken links to the wiki + Firartix and Frans_Feiffer: + - rscadd: Readded Halloween pumpkin helmets. + IowaPotatoFarmer: + - rscadd: Added new survivor presets for New Varadero to make them more visually + distinct and unique to the map. + - rscdel: Removed the ability to build ground structures or anchor wall girders + on top of xeno tunnels. + - bugfix: Fixed wall girders being anchorable on shuttle tiles. + Morrow, Zonespace: + - rscadd: Added objectives to hijack. You now must hold different sections of the + ship to successfully launch lifeboats or pods + - rscadd: The areas that contribute to hijack objectives are the lifeboat pumps, + astronav, and engineering + - rscadd: Fuel pumps now have red alert sentries + - rscadd: Corporate liaison evac shuttle now can be launched at any time even if + evac has not been called + - rscadd: You can now self-destruct the ship by overloading the fusion generators + in engineering once lifeboat fuel is at 100%. + - rscdel: Removed auto launch of lifeboats and pods + - code_imp: Refactored EvacuationAuthority into SShijack + Releasethesea: + - balance: Makes it so that Pill packets fit in helmets + SpartanBobby: + - maptweak: Alot of changes to big reds admin area, including new windows, prop + placement, room detailing, new doors + Steelpoint: + - rscadd: Corpsman can chose to optionally vend a set of armoured sterile gloves + as a alternative to regular gloves. They provide full glove protection, but + are otherwise an aesthetic choice. + TopHatPenguin: + - rscadd: Adds a mostly built communications office nightmare insert to Kutjevo + which attaches onto the sensor tower. + - rscadd: Re-adds the Kutjevo blackbox. + Xander3359: + - bugfix: Fixes being able to create ghost tanks from a Broiler-T unit. + blackdragonTOW: + - imageadd: Changed nanotrasen cashcard icon to W-Y + fira: + - rscdel: Removed unused magnet and mass driver legacy SS13 machinery. + - bugfix: Fixed being able to put anything in your boots. You're not wizards! + - admin: Added better logging for orbital bombardment. + realforest2001: + - rscadd: Added a big line to Nightmare survivor spawns that indicates hostility. +2023-11-08: + BeagleGaming1: + - rscadd: Added CBRN ERT with new CBRN MOPP equipment. (Sprites by DrMacCool and + Esselnek, names and descriptions by TopHatPenguin and Kaga) + - rscadd: ERT Squads (Marine Raider and new CBRN) get assigned to their squad even + if spawned as an ERT, and do not automatically unlock it for overwatch + - balance: Tool Webbing can now only hold tools, instead of just being a better + webbing + - spellcheck: Corrected spelling of "Intercepted Transmission" for ERTs + - bugfix: USCM faction squads that are not default marine squads should no longer + cause a crew manifest runtime + Birdtalon: + - rscadd: Xeno tacmap icons for hive core and clusters. + Drathek: + - bugfix: Fix the ColMarTechAutomated Munition Vendor in req not vending to the + table. + - bugfix: Fix the first use of a USCM equipment preset (such as cryo marines) not + properly loading rank and other values + QuickLode: + - rscadd: adds another Colony Synthetic variant, changes up some existing ones(trucker,CMB) + - bugfix: fixes a small problem with WY-Colony Synthetic access(thx forest), adds + WY subtype of Synthetics for admin building/faxes + - bugfix: fixes problems with organic spawning ferret industries Trucker Synthetic + Releasethesea: + - rscadd: Makes it so cigars fit in helmets. + Skye.: + - maptweak: Tweaks a Cabinet in the SW mines of Solaris Ridge + - bugfix: On account of it being propped up on the floor like a cardboard cutout. + fira: + - bugfix: Spawned bottles now use all 4 of their sprites as intended rather than + always the same. + zzzmike: + - spellcheck: fixed a typo +2023-11-09: + fira: + - bugfix: Fixed incorrect signals causing malfunctions in tgui_say for ASAY and + MentorSay channel hotkeys. + - admin: VV "Update Transform" will now properly compound with other sources of + transform (eg. lying down) + - bugfix: Density effects should now properly update when stacked and unstacked. + - rscadd: You can now use package wrap to change standard crates visuals. + - rscadd: You can now label crate with package wrap, which will also be shown during + overwatch supply drop alert. + - mapadd: Added more packaging wrap to Requisitions. +2023-11-10: + Drathek: + - bugfix: Fixed fax template images in CDN mode + - bugfix: Fixed imaginary friend merge ability preventing hearing if ghost ears + are set to only nearby. + - bugfix: Fixed imaginary friend hide ability not updating its icons. + MorrowWolf: + - bugfix: Fixed Pumpkins appearing past season. + MrDas: + - bugfix: You can no longer see through solid rear drop ship doors. + - code_imp: Moved filler turf logic from almayer airlocks to its parent door. + SpartanBobby: + - maptweak: fixes conflicting tiles on USS Almayer squad bunks + - maptweak: updates multiple bedrooms and closet area detailing +2023-11-11: + QuickLode: + - rscadd: SUPERLIGHT armor category. + - balance: M4 Synthetic Armor slows by 10% to justify having 1 extra storage slot. + - spellcheck: Clarifies M4 Synthetic Armor description that it does not have any + armor whatsoever. +2023-11-12: + SpartanBobby Tophatpenguin: + - maptweak: redetails a room on the upper deck of the USS Almayer, places a few + L42As in this room +2023-11-14: + BeagleGaming1: + - rscdel: Removes icon baking on surfaces (primarily seen on tables) + Birdtalon: + - bugfix: Boiler acid shroud now works on hotkey 5 + - code_imp: Replaces single letter vars and removes unused code for boiler. + - code_imp: Replaces burrow var from Xenomorph with burrowed trait + - code_imp: Starts refactoring some vars on xenomorph class + - rscadd: Observer with Security HUD enabled can examine and read security records. + - rscadd: Toggle HUD button to ghost UI + BraveMole, Zonespace: + - bugfix: Guns should no longer very rarely jam mid-burst. + Ediblebomb: + - qol: Changed "Subject is brain-dead." to "Subject has taken extreme amounts of + brain damage." when scanning somebody with 100 brain damage. + Releasethesea: + - bugfix: Fixxed the improperly area'd hull south of construction site, adds fire + shutters to north fueling pod to make it mirror the south one + - rscadd: Adds Colonial Space Grunts to rec vend aswell as several pens and Dice + for playing the game. + - rscadd: Adds functional bedrolls to the game. + SpartanBobby: + - maptweak: fixes broken sidewalk on bigred + Steelpoint: + - rscadd: Less powerful variants of the Commando ERTs (Marsoc, WY Whiteout, UPP + Commandos) have been added for admin use. + - admin: The powerful versions of commando ERTs are denoted with (!DEATHSQUAD!) + in the distress call and equipment preset menus. + fira: + - bugfix: Fixed ghost droppods appearing when launching crates by Echo pad. + - bugfix: Fixed an issue in traits backend update causing among others leadership + action buttons to be missing. +2023-11-15: + Birdtalon: + - code_imp: Replaced single letter vars in runner code. +2023-11-16: + fira: + - bugfix: Rooting effects should now properly update when stacked and unstacked. +2023-11-17: + Birdtalon: + - bugfix: Lurker can no longer tail jab through doors/structures. + - code_imp: Var disambiguation, cleanup and removal of redundant typechecks in lurker + code. + - bugfix: Adds missing newline when viewing sec records as observer. + - bugfix: Fixes posters in CL office displaying IO description. + - code_imp: Replaces single letter var in hivelord code + - code_imp: Replaces single letter vars in ravager code + - code_imp: Refactors vending machine global scope procs + Doubleumc: + - rscadd: vehicles can be followed by ghosts + SpartanBobby, GDS Pathe: + - maptweak: Updates bigred floortiles + - maptweak: Re-adds reactor to bigred + Steelpoint: + - maptweak: LV-624's Caves have had an aesthetic change regarding jungle tiles and + flora. + casperr04: + - bugfix: Removes the ability to fulton bodies that can still be revived + fira: + - admin: VV 'Modify Transform' can now be used to flip objects. + - bugfix: Horizontal Almayer walls no longer change icon randomly, and now properly + display damage overlays. + realforest2001: + - rscadd: Faxes sent from HighCom fax machines now appear in their correct category. + sleepynecrons: + - imageadd: fixes biosuit body sprite not properly covering mobs +2023-11-18: + Cthulhu80, Drathek: + - rscadd: Adds drawing to tactical maps, viewable via stat panel for marines and + xeno tacmap for xenos. + - bugfix: Corrupted (and other hives) now have separate tactical maps. + fira: + - admin: Moderators are now immune to inactivity kick, much like Admins. + - bugfix: Fixed the tank driving through vehicle blockers and accessing "deep" parts + of the map it wasn't intended to push. + - bugfix: Tentatively fixed some visual bugs with turret based vehicles. + - bugfix: Fixed using the tank coupon as first vehicle spawn causing Gear Vendor + to still give out APC gear. + - admin: Added an APC coupon in same vein as Tank Coupon for Admins to use. + - admin: Tank/APC Coupons now spawn broken down versions of the vehicles, for the + full VC experience. You want a ready to use one, just spawn it. + - admin: Tank/APC coupons do not spawn VC pamphlets in ASRS anymore. + - admin: Added a vehicle_flag for tanks to bypass blockers (in a legit fashion this + time). Abuse at your discretion. + ihatethisengine: + - rscadd: Cloaked lurker devouring now shows a message to target again. +2023-11-20: + Zonespace27: + - bugfix: Jump-to-area verb will now warn you if there aren't any turfs in the given + area. +2023-11-21: + hislittlecuzingames: + - code_imp: Added ability to have looping sounds from further away +2023-11-22: + AnturK: + - server: the server now supports auto-profiling + Birdtalon: + - code_imp: Removes some istype(src) + Morrow: + - rscadd: Mess tech positions now scale from 1 to 2 after 70 marines are in the + game + hislittlecuzingames: + - rscadd: Launch Announcement Alarm for dropships to notify ground forces of departure. +2023-11-23: + Birdtalon: + - rscdel: Lesser drones die upon ghosting and are not offered to observers. + - rscadd: Explosion handling logic to experimental sensor tower. + - bugfix: Explosions no longer delete experimental sensor tower. + - bugfix: Pylons now differentiated in the input list with a (1) if in the same + area. + Drathek: + - bugfix: Resin doors will now close on dead mobs that are merged with weeds (currently + only human). + - bugfix: Resin doors will now restart their closing timer each open making the + delay to close consistent. + - code_imp: Added a TRAIT_MERGED_WITH_WEEDS that is set whenever the mob is currently + merged with weeds. + - bugfix: 'Fixed buried larva spawn grace period at start of round if there is a + queue: Now join as xeno when there''s a queue will only prevent buried larva + spawns if there is no core.' + - bugfix: 'Tweaked larva queue spawning: Now spawns as many larva as possible each + cycle rather than one.' + LC4492: + - maptweak: 'Changes to the CO office: The bathroom now faces into the CO''s bedroom, + and not to his main office. Victory cabinet have been moved to the Officer''s + mess because of logical issues. Extra-detail to the office, including an exclusive + stamp, table flags and others. The safe is now inside the CO''s bedroom, and + not in his office. The energy APC is now inside the CO''s bedroom, and not in + his office. Jones finally have a BED again, or something like that. Other minor + changes to objects, such the addition of a cane, a box of glasses for serving + guests, etc.' + QuickLode: + - rscadd: Damage to Synthetic's internal causes debuffs, eventual powercell failure.(death) + - bugfix: Synthetic's should no longer lose blood. + - code_imp: moves blood proc to human.dm from blood.dm with above changes. + SortieEnMer: + - qol: Match Unlock Time in Nuke Timelock Message with Nuke Techtree Description + Steelpoint: + - maptweak: Secure Storage on LV-624 has been broken open, making it far less defendable + but easier to access. + fira: + - bugfix: The Thunderdome floor is now explosion-proof. + - balance: Default Web Music Player volume is now 20% down from 50%. It was found + too effective against new players. + - admin: '"Play Internet Sound" is now "Play Admin Sound" and optionally allow to + hide the track name.' + - admin: '"Play Admin Sound" can now be used with uploaded tracks, which use CDN + delivery and the in-chat music player, granting players more control over them.' + - admin: Removed "Play Midi Sound". + ihatethisengine: + - balance: Oppressor no longer can abduct big xenos. + zzzmike: + - qol: ARES hijack announcement specifies that pods will not crash at 100% fuel + - qol: Location name standardization. So, North is now Starboard. This is already + how it is for everything except pumps. +2023-11-25: + BadAtThisGame302: + - bugfix: fixed corporate supervisor burst corpse landmark + Birdtalon: + - bugfix: Fixes defender headbutt bug while fortified. + - bugfix: Lifeboats fire extinguisher runtime. + Doubleumc: + - imageadd: 2-wide dropship side doors + - maptweak: changed dropship side doors to a lone doublewide door + - qol: directions in trackers and messages are more accurate + HeresKozmos: + - bugfix: fixed a nonsensical window facing a solid rock wall + - rscadd: Added pizza and pizza cutter to Req + - rscdel: Deleted a random kepler crisps bag + - bugfix: deleted random raised edges from inside rock wall + Releasethesea: + - bugfix: fixes the XM43E1s name (previously named XM42B) and sprite, fixes the + M42C and XM43E1s barrel, correctly names several items relating to the XM43E1 + SabreML: + - ui: Tweaked the colour of the 'Maintainer' category in staffwho. + ihatethisengine: + - rscadd: Locking down dropship's doors closes them before locking. + realforest2001: + - rscadd: Telephones now list the last attempted caller, above the DND button. +2023-11-26: + Birdtalon: + - code_imp: Replaces single letter vars removes redundant abilitiesin warrior code. + - bugfix: Warriors can no longer behead caps if they start limb ripping before embryo + is inserted. + - code_imp: Refactors warrior limb proc to the warrior class. + Huffie56: + - rscadd: Added a new section to role squad vendors called binoculars except specialist. + - qol: moved NVG and medical hud into helmet optics section for SL and just NVG + for TL + Nanu308: + - rscdel: Removed the Pizza Cutter. +2023-11-27: + Birdtalon: + - bugfix: "Fixes vendor sprites not updating icon when fully repaired\n/\U0001F191" + - bugfix: Fix lesser drone crash on getting gibbed. + Doubleumc: + - bugfix: CORSAT poddoors no longer have extra sprites overlaid on them + - maptweak: CORSAT LZs can be used by shuttles + HeresKozmos: + - rscadd: Added eight new tunnels to Sorokyne + - rscdel: Removed the original five tunnels on Sorokyne + SabreML: + - rscadd: Made the character preview in the character creation menu show the 'Preferred + Armor' setting. + - bugfix: Fixed 'Padded' armour being replaced by the user's armour style preference + when vended. + - qol: Made the squad prep attachments vendors vend items into the user's hands. + Zonespace27: + - bugfix: The Self Destruct timer in the status panel will now stop once SD has + gone off. + hislittlecuzingames: + - bugfix: Disables launch announcment alarm if it's sounding when queen hijacks +2023-11-28: + Birdtalon: + - rscadd: Eggsac carrier can now place eggs on normal weeds to a maximum of 4 eggs. + - rscadd: Eggsac carrier eggs on normal weeds have an expiry date. + fira: + - code_imp: Ported basic /tg/ Status Backend. + - rscadd: Human transform changes such as lying down, knock down, buckling, are + now animated. + - bugfix: Some statuses will now take effect immediately instead of waiting for + a life tick, notably Resting. + - balance: Many interaction requirements were changed to eg. fail upon stuns rather + than if lying down. + stalkerino: + - rscadd: readds skull facepaint and skull balaclava (blue and black) +2023-11-29: + realforest2001: + - rscdel: Whiskey Outpost no longer rolls pred rounds naturally. +2023-11-30: + Birdtalon: + - code_imp: Refactiors xenomorph initialize & removes some duplicate proc calls + HeresKozmos: + - mapadd: added a new spring area to kutjevo's south caves + Huffie56: + - rscadd: Added a lot's of food boxes for that hold the basic ingredients for cooking. + - rscadd: Added a file to handle the fridges in almayer kitchen. + - rscadd: Added a vendor in the kitchen that sell boxes of ingredients. + - rscadd: Added a a food crate called surplus boxes ingredient containing random + boxes of ingredients. + - rscadd: Added a version of this crate that will be freely given via the ASR system. + SabreML: + - bugfix: Fixed a few space tiles under a window in Kutjevo Refinery. + harryob: + - bugfix: the health indicator in the tooltip and colorbox is still present when + a POI has 0 health + - bugfix: admins can refresh the orbit menu without runtimes diff --git a/html/changelogs/archive/2023-12.yml b/html/changelogs/archive/2023-12.yml new file mode 100644 index 000000000000..6f487820ae46 --- /dev/null +++ b/html/changelogs/archive/2023-12.yml @@ -0,0 +1,591 @@ +2023-12-01: + Birdtalon: + - bugfix: Eggsac fragile eggs can be placed on hardy weeds. + Morrow: + - rscdel: Removed flame particles. Possibly increases performance for some players. + Zonespace27: + - bugfix: Resin holes can no longer be planted below stairs +2023-12-02: + 567Turtle: + - rscadd: Brown boots and gloves are now vendable from the surplus vendors. + Birdtalon: + - rscadd: '"Infernal" name prefix for xeno who rolls number 666' + - code_imp: Refactors xeno name generation. Larva name generation and removes some + istype(src) + - bugfix: 'Restricts burrower tunnels to alphanumeric characters as some other characters + break the tunnel. + + code; Adds new proc to replace non alphanumeric or space characters.' + Morrow: + - code_imp: Corrected a check to avoid repeat work in /datum/asset/spritesheet/vending_products/register() + realforest2001: + - rscadd: Added disguisable listening bugs/devices. MPs have two outside CMP office, + the CL has two in their bedroom. + - bugfix: Fixes incorrect frequencies being used to display channel names on radios. + - bugfix: Radios and tape recorders placed on tables or placed inside webbing can + now hear speech again. +2023-12-03: + BadAtThisGame302: + - rscadd: Added a flavor diary entry from the Director of Lambda + - mapadd: added back the old vault nightmare insert on Solaris which was removed + due to the creation of static comms where it spawned + - maptweak: tweaked the Lambda Director's Office + - maptweak: tweaked the Lambda Administration Office + - maptweak: tweaked the Lambda Relaxation Room + SpartanBobby: + - maptweak: Redetails Almayer Squad briefing rooms + blackdragonTOW: + - maptweak: Standardized the names of LZs to include the name of the LZ. + stalkerino: + - bugfix: fixes the skull facepaint, black mask, blue mask +2023-12-04: + Birdtalon: + - bugfix: "Upgraded resin walls can now nest hosts.\n/\U0001F191" + - rscadd: Radial Menu for xeno Evolve + IowaPotatoFarmer: + - rscadd: Added a Corporate Liaison survivor to Sorokyne. + - rscadd: Added a modified version of the liaison's winter coat that allows it to + holster guns and a few other things. Only available to the Sorokyne Strata Corporate + Liaison for now. + - spellcheck: Fixed a typo in the Sorokyne Strata Political Prisoner's ID tag. + MrDas: + - bugfix: Observer minimap should no longer occasionally show wrong / no map. + SabreML: + - ui: Removed the scrollbar from the 'Player setup' menu. + cuberound: + - bugfix: fixed a runtime in /datum/component/healing_reduction/process(delta_time) + ihatethisengine: + - rscadd: Whiskey outpost is voteable less often and requires 140 players. + realforest2001: + - bugfix: Fixes /spec_kit/asrs (now /spec_kit/rifleman) not allowing use. + - code_imp: Adds back-end functionality for token redeeming on cm_vending vendors, + and moves synth experimental tools token to use it. + - rscadd: Spec tokens are real. +2023-12-05: + Birdtalon: + - bugfix: "Fixes a runtime in vendors\n/\U0001F191" + Huffie56: + - rscadd: added new sections(Binoculars, Utilities, Helmet Optics, Radio keys, and + fill them with items already in the vendor. + - qol: move the section called pouches just above utilities section. + - qol: changed the section called "Supplies" to "engineering supplies" and fill + it with C4 and APC circuit board . + SabreML: + - spellcheck: Fixed instances of "The the" and "A the" in chat messages so that + they're just "The" instead. (Part 1) + Tsurupeta: + - bugfix: fixed saving of certain preferences. + silencer_pl: + - admin: Recieving prayers now makes a sound + - admin: Prayers and USCM emergency messages are now better highlighted for mods/admins +2023-12-06: + Birdtalon: + - bugfix: "Fixes runtime in spiders.dm\n/\U0001F191" + Blundir: + - rscadd: added new ammo boxes for various weapons and ammo +2023-12-07: + Doubleumc: + - refactor: vehicle weapons can fire full-auto + - rscdel: no more controls for firing vehicle non-selected weapons + Drathek: + - bugfix: Fix some errors regarding the nano subystem + - code_imp: Reduced most preference re-saving when preferences are initially loaded + Ediblebomb: + - rscadd: M5 Helmet Gasmask now functions as a gasmask when in a marine helmet (and + yes, gasmasks do still have some functionality) + SabreML: + - admin: Fixed a freeze when opening the the 'Create Object' interface. + - admin: Adjusted the size and positioning of the 'Create Object/Mob/Turf' panels + so that everything fits into the window. + - spellcheck: Fixed instances of "The the" and "A the" in chat messages so that + they're just "The" instead. (Part 2) + VileBeggar: + - soundadd: The XM88 now has a scaling hit sound for every direct hit you manage + to land with it. + realforest2001: + - admin: Added a Check Ckey verb to analyze for multikey. We're watching you Wazowski. + Always watching. + - code_imp: Cleaned up 1 letter vars in the global datacore. Also made the entry + names reflect the real name of who they relate to, for VV purposes. + - code_imp: Paygrade shorthands now use defines. + - bugfix: CLF and Survivors are no longer privates. + - bugfix: Civillian Mr/Ms/Mx prefix now works correctly, and is the default for + new ID cards. + - bugfix: Fixes custom sent ERTs broadcasting when they shouldn't. + - bugfix: Fixes UPP friendly ERT telling staff it's hostile. + zzzmike: + - bugfix: disarm chance wasn't calculating properly + zzzmike, drathek, ihatethisengine2: + - rscadd: Lifeboat launch now has an ARES announcement followed by a 10 second delay + before doors close. The current launch functionality is preserved as Emergency + Launch. +2023-12-08: + Birdtalon: + - bugfix: Wall weeds now destroyed when closed wall turfs are changed. + - code_imp: Reorganises some xeno code from xeno_defines.dm + Doubleumc: + - code_imp: projectiles smoothly animate their movement + Firartix, Birdtalon: + - bugfix: Fixed a logic error in Warrior code causing lunging some M2C/M56D users + to semi-permanently brick lunge. + Huffie56: + - maptweak: added a button inside the CL office to open the shutter for the door + and rearranged other buttons. + - maptweak: separated shutter for cl office door and for the windows. + - maptweak: add three lights in CL office and quarter. + - balance: add document and sling pouch to ASO vendor. + - balance: add shoulder webbing to ASO vendor. + - balance: add a bag section to ASO vendor and add leather satchel to it. + SabreML: + - spellcheck: Fixed instances of "The the" and "A the" in chat messages so that + they're just "The" instead. (Part 3) + alexguinea atticus-rezzer: + - rscadd: Adds alarm sound for lifeboats when launching + fira: + - bugfix: Cryoing someone now properly takes into account role weights for the purpose + of latejoin larvas. This should very slightly increase larvas amount. + - bugfix: Roundstart distributed amount of gear and ASRS points now takes shipside + role weights into account. This should moderately decrease budget and starting + gear. + - bugfix: Roundstart distributed amount of gear and ASRS points does not count Survivors + and Monkeys anymore. This should moderatly decrease budget and starting gear. + - rscadd: Main marine vendors and ASRS now get matching supply for every additional + marine latejoining, similar to larvas. This should be a substantial increase + over the course of a round. Supplies given are 60% of what a roundstart marine + would give. + - balance: Amount of gear in main marine vendors and ASRS supplies have been decreased + by 40% to help counteract added supplies the marines will get in latejoining. + Hopefully this also keeps reqs active to dispatch new supplies. + - bugfix: Altered a few items vendor stock scalings to be linear for use with the + new system, such as RTO pack, Drop Pouch and Machete Pouch. + - rscadd: Introduced ASRS supply pools. As proof of concept, ASRS now spawns a crate + of food ingredients every 30 minutes, in addition to regular gear. + - balance: ASRS now keeps track of partial crates awarded. This means if you should + receive 2.5 then 2.5 crates, you now get 2 then 3, rather than 2 and 2. This + is intended to result in smoother, more reliable transitions and scaling with + varying amount of Xenos on map. + - balance: Amount of ASRS crates awarded was reduced by about 15.5% to make up for + crates carrying over. Overall this should result in an about 5-10% reduction + in highpop crates, and ~10% increase in lowpop. Pop being based on xeno count. + - code_imp: Refactored part of ASRS supply code to be less of a painful, antique + artifact. + - bugfix: Fixed incorrect weighting in the ASRS supply code, effects on crate distributions + are unknown. + - bugfix: Fixed HPR ammo ASRS packs failing to spawn and ending up as MK1s instead. + - bugfix: Fixed ASRS order numbers not increasing the order IDs... This whole time.. + ihatethisengine: + - balance: PO can remove queens dropship override again. + private-tristan: + - qol: Gun safety messages now use balloon alerts. +2023-12-09: + InsaneRed: + - balance: Oppressor tail abduct changed to 15 seconds and lowers the windup to + 7 deciseconds + - balance: ' Changes around the punch effect so that instead of having to meet demonic + standards, you only need to punch to lower your tail/hook on oppressor.' + - bugfix: You will now automatically punch chest if the target you are aiming at + is delimbed instead of doing nothing + harryob: + - rscdel: removes a nanoui debug verb that no one has ever used, ever + zzzmike: + - spellcheck: tablestun text is more clear that it stuns + - soundadd: unequip noise added to uniform, backpack, shoes. + - soundadd: sound added to tablestun + - sounddel: for disarms, whoosh only triggers on stun. otherwise, the miss sound + plays +2023-12-10: + Birdtalon: + - bugfix: Resting once again cancels xenomorph evolve. + SabreML: + - bugfix: Fixed resin walls/membranes showing a welder deconstruction hint. + Zonespace27: + - balance: You cannot plant eggs inside vehicles. + - balance: Eggs can no longer be planted on tiles with objects that would obscure + them. + harryob: + - bugfix: xenos can construct in dropships during transport again + ihatethisengine: + - rscadd: locking lifeboats open the docks +2023-12-11: + ihatethisengine: + - bugfix: fusion reactors cannot be destroyed with explosions +2023-12-12: + InsaneRed: + - bugfix: M44 Heavy bullets no longer display a "4" when you get hit by them +2023-12-13: + BadAtThisGame302: + - bugfix: fixed Engie not showing up an Engie Area on tacmap on LV-624 + - bugfix: Fixed Research not showing up as a Research Area on tacmap on LV-624 + Birdtalon: + - bugfix: Fixes a missing area on Almayer + NateDross: + - spellcheck: Edited 'M56 Battery' to 'M56 DV9 Battery' in requisitions munition + vendor + NessiePendragon: + - rscadd: Adds a new braid hairstyle. + blackdragonTOW: + - balance: GAU RoF doubled + harryob: + - rscadd: added a historical medal viewer + realforest2001: + - rscadd: Added a new almayer hull type (heavy reinforced) which is indestructible + by normal means until after hijack collision. + - rscadd: Added a new subtype of shutter that automatically opens or closes depending + on security level. + - maptweak: Maps both of the above around the engineering storeroom. Also adds the + walls between the firing ranges and around uniform vendors. + - maptweak: Manual control button for shutters over engineering storage in the CEs + office. + - code_imp: Changes hijack structural changes (walls/windows/windoors/ladders) to + use signals. + - ui: Shuttle manipulator UI is now slightly wider on initial startup. +2023-12-14: + Contrabang: + - rscadd: The compass headgear will now tell you what direction you're facing when + on a planet. + - code_imp: Added a new ground environmental trait for a ground level in space. + InsaneRed: + - balance: Vanguard dash now restores your shield if you hit ANYONE instead of 2 + people. + - balance: Vanguard buffed root now roots you for 2.5 seconds, unbuffed for 1 second + - qol: Vanguard's pierce has now a hit sound for better feedback + Nanu308: + - balance: Adjusted how much light is given by standard marine armor. + - balance: Light Armor remains the same range & power, Medium armor now gives a + bit more light, Leader B12 armor gives a bit more light & range, M4 (rto) gives + a bit more light, and Heavy armor give the most light and range compared to + before. + - code_imp: Changed inheritance for medium armor as the different sprite versions + were laid directly under the parent type instead of the medium one and so forth. + NateDross: + - bugfix: fixed hardhat action item icon + fira: + - bugfix: Some Xeno throws now immobilize their targets, ensuring they do not walk + out of the toss mid-flight. + realforest2001: + - bugfix: M56D can no longer be used by the dead. +2023-12-15: + BeagleGaming1: + - imageadd: New sprite for Santa hats + Drathek: + - bugfix: Fix dead nested mobs disappearing when weeded + LTNTS: + - maptweak: remapped brig to be more concise, more interconnected, and easier to + navigate. And added more cells for when needed. + - qol: adds RiotTech (SecTech but for Riot Control with Rubber Bullets - obvs Code + Blue+ only) + - qol: CMP's locker requires Armory access to open now + - qol: suspects are now colored nardo gray in security list + NateDross: + - bugfix: Fixed hard hat user inventory head icon + SabreML: + - bugfix: Fixed camera sprites changing to their mapping helper after being EMPed. + Triiodine: + - rscadd: randomized barrels for mappers. You can instance the straps on and off! + - imageadd: 'Resprited the following: traffic cone, goldschlager bottle, cream carton, + oj carton, lime juice carton, tomato juice carton, pineapple juice carton, tequila + bottle, kahlua bottle, bottle of nothing, cognac bottle, critter crate (now + lore accurate), secgear crate, cm barrels, phoron crate, riot shield inhands,' + - imageadd: 'Added unique sprites for the following: vodka bottle, gin bottle,' + - imageadd: Fixed stray pixels on fridgeopen, open_plastic + - imagedel: Removed some unused legacy icons. + - bugfix: Hotdogs and burritos now properly appear when worn in a helmet in packaged + and unpackaged states. + - imageadd: The ME3 hand welder and industrial welder now have unique sprites and + inhands. + - imageadd: Differentiates synth graft and surgical line, color coded now to represent + the damage they fix. +2023-12-16: + Birdtalon: + - rscadd: Xenomorph telegraph effects can now be any rgb colour. + GoldenAlpharex: + - bugfix: Chat highlights now escape special RegEx characters from non-RegEx highlights. + - bugfix: Broken RegEx expressions no longer cause the chat to bluescreen, allowing + you to properly fix them. + InsaneRed: + - spellcheck: Xenomorph text is now WE/OUR instead of YOU/YOUR + blackdragonTOW: + - rscadd: Added Radio Keys to the CL's briefcase +2023-12-17: + BadAtThisGame302: + - rscadd: Added a LV-624 Corporate Liaison Survivor. + - rscadd: Added a Flight Control Operator Survivor to Solaris Ridge (for now, might + be added to more maps soon!). + - qol: made survivor.dm easier to use by moving the basic security surv with the + engineer/scientist/doctor which it wierdly enough it wasn't with. + - balance: rebalanced CL a lockable satchel. + - bugfix: fixed the survivor.dm comments falsely saying that some surv types are + not used anywhere when they are. + - spellcheck: fixed the LV-624 announcement text, made it roll off the tongue easier. + - code_imp: changed CL and ICC survs shoes from centcom? To laceup. + Drathek: + - rscadd: Implemented xeno corpse weed merging + - imageadd: Added 48 sprites, 3 stages per caste silhouette, for xeno weeded corpses + - bugfix: Fixes ghosts not displaying their name on hover if weeded and weird behavior + when orbited via ctrl+click + Huffie56: + - balance: For SG,IO,medic,comtech standartize the binoculars section as fallow + (Binoculars=5, Range Finder =10, Laser Designator=15). + - balance: reduce the number of stages from 5 to 3. each stage take 6 min or 360s. + - balance: rework the logic that handle the disease progress + - balance: A-Set stage_prob to zero to prevent random stage increase. + - balance: B-add a stage_level variable that when is at-least 360 make an increase + of the disease stage... + - balance: C-add an infection_rate variable that handle how fast the stage_level + increase passively. + - balance: D-infection_rate is quadruple when the host is dead. + - balance: E-I also added that the goo messages (you feel warm ....) give a boost + to stage_level to add some randomness to the infection progress. + SpartanBobby, LCMS1: + - maptweak: Numerous Fixes for new brig + cuberound: + - balance: DS doorgun can shoot over cades +2023-12-18: + Huffie56: + - bugfix: added landing zone camera on trijent. + - bugfix: fixed landing zone camera on all map in rotation. + sleepynecrons: + - imageadd: marine snow uniforms and armors given a new look +2023-12-19: + Drathek: + - balance: Added the possibility of surgery steps failing based on tool and surface + suitability compensated by surgery skill. + Huffie56: + - bugfix: fix a nightmare insert that had a wall and a door on same tile. + NateDross: + - bugfix: Requisitions elevator lighting fix + NessiePendragon: + - rscadd: Added new sprites for Warrior. + PurpleCIoud: + - imageadd: added chocolate bar new sprite + - imagedel: deleted old chocolate bar sprite + SabreML: + - rscadd: Updated the 'help' message for xeno special structure construction. + - qol: Added a 'remaining' counter when constructing special structures to let players + know how many can still be built. + - qol: Added a 'Ghost' button for dead xenomorphs. + realforest2001: + - rscadd: Added a proc for comparing the registered name of an ID, to the real name + of a mob. Also checks registered_ref if one exists. + - rscadd: Evacuation can no longer be cancelled without passing above check. + - rscadd: People forced into escape-pod stasis bays against their wishes can now + eject themselves. + - bugfix: Xenos can no longer force humans into escape-pod stasis bays. + - bugfix: Escape-pod stasis bays no longer accept corpses. + stalkerino: + - balance: fixes the balance of the game by making hair gradient trait free +2023-12-20: + Birdtalon, Fira: + - bugfix: Fixes hive UI crash upon pylon giving new larva. + Contrabang: + - bugfix: Matches now do burn damage instead of brute, when you accidently burn + your own hand. + InsaneRed: + - spellcheck: Converted more "YOU" to "WE" for xenomorphs. + LTNTS: + - qol: makes suspect nardo gray + fira: + - rscadd: Added Buckled, Handcuffed and Legcuffed screen alerts + - code_imp: Ported /tg/ status effects backend, modified with timers to let effects + end at appropriate time + - code_imp: Stun, Knockdown and Knockout now use the new effects backend + - balance: Due to backend change, all KO/KD/Stuns may behave differently timing + wise. This is of course subject to adjustments. + - balance: Endurance is now set at 8% effect duration reduction per level above + 1. However it now compounds with species bonus. Feel free to adjust. + - balance: Knockdowns are not inherently incapacitating anymore and many sources + of it have been updated to also stun to make up for it. + - bugfix: KO/KD/Stuns do not artificially and randomly ''stack'' due to incorrect + timer offset calculation anymore. + - bugfix: Stuns now correctly apply Stun reduction values instead of Knockdown reductions. + - bugfix: Crawling can now be interrupted by a normal move, if you are fit enough + to do so. + realforest2001: + - maptweak: Various doors around the Almayer will now close their opposites for + better security. +2023-12-21: + Birdtalon: + - bugfix: Lurker can tail jab over ledges and window frames. + Drathek: + - imageadd: Update weeded warrior sprites to be compatible with knight strain sprite +2023-12-22: + Ben10083: + - rscdel: ' Working Joes can no longer drink' + Cthulhu80: + - ui: tacmap ui tweaks + Doubleumc: + - bugfix: Fixed security tuner not dispalying direction to room's APC + - refactor: Refactored code handling angles + InsaneRed: + - code_imp: Converts xenomorph cooldowns into SECONDS + SabreML: + - bugfix: Fixed being able to remove multiple stacks of fire by spamming resist. + Steelpoint: + - rscadd: Factions are now properly separated in the observe menu as a ghost. + cuberound: + - bugfix: bad DS doorgun placement + fira: + - bugfix: Fix Xmas helmets getting overriden by map camouflage. + realforest2001: + - bugfix: Hijack should no longer end the round immediately. + - rscadd: Ghosts can now toggle hearing listening devices or not. This is dependant + on hearing radios and will not function to allow hearing devices without also + hearing radios. +2023-12-23: + BadAtThisGame302: + - balance: rebalanced goon skillset to include construction 1 + - spellcheck: fixed Liason area typos to Liaison + - spellcheck: fixed the ICC Liason to ICC Liaison typo + fira: + - bugfix: Fixed X-mas barricade wiring not applying properly. + private-tristan: + - balance: xenos can now acid all window frames. +2023-12-24: + BadAtThisGame302: + - rscadd: Added a windbreaker to the Flight Control Operator surv. + - rscadd: Added W-Y Flight Control access to the Flight Control Operator surv. + - bugfix: fixed the Flight Control Operator path. + Cthulhu80: + - rscadd: human mobs now scream whenever they get lunged at by a warrior. + - soundadd: added a new scream sound and put it into the existing scream list. + Drathek: + - bugfix: Fix crusher charge and tumble abilities going over unwired cades + Huffie56: + - bugfix: removed an extra light in bravo cryo room(to do just saw it) + - maptweak: added more areas (stern_point_defense, Lower Deck Stern Hull, Upper + Deck port Hallway Upper Deck starboard Hallway) + SabreML: + - rscdel: Removed the green overlay from camera consoles. + - rscadd: Allowed Xenomorphs to turn off the dropship's launch alarm by hitting + the nav computer. + - spellcheck: Made the `xenoboldnotice` span class bold rather than italic. + cuberound: + - bugfix: DS doorgun no longer drops the gun when destroyed + ihatethisengine: + - balance: "New healer drone ability \u2014 sacrifice. Healer drone can instantly\ + \ transfer 75% of its current health, but for the great cost of the healer\u2019\ + s own life." +2023-12-25: + InsaneRed: + - balance: Tweaks down the buffed root of vanguard down to 1.8 from 2.5 +2023-12-26: + Ben10083: + - rscadd: If ARES is destroyed, systems such as bioscan also shut down, this will + be expanded in the future + - rscadd: ARES plays an announcement when destroyed + - code_imp: Procs to check for APOLLO processor and if ARES is alive added + - refactor: ARES subsystems modified to utilize new procs + - admin: Prompt to force a Marine Bioscan only shows when ARES is unable to perform + the bioscan. + Drathek: + - bugfix: Fix queen death not fully readmitting any banished xenos + - bugfix: Fixed resisting acid + SabreML: + - code_imp: Made the Tech Tree subsystem initialise faster. + Steelpoint: + - rscadd: The Executive Officer now has a personal weapons vendor. It includes the + ability to acquire a full suite of combat and support gear, giving the XO more + agency in customizing their loadout. + - rscadd: Adds a new set of belts to the Executive Officer's uniform vendor. + mullenpaul: + - ui: tgui dropship weapons console + - refactor: added MFD panel + - refactor: creates datum component to manage camera code + - qol: CAS weapons operator can see camera in UI + - rscadd: CAS can offset in X and Y coordinates + - refactor: CAS can offset in different direction to attack vector + realforest2001: + - bugfix: Yautja bracer lock can now properly unlock thrall bracers. +2023-12-27: + Birdtalon: + - rscdel: Removed old crystal code from xenos + - code_imp: Renames still used vars from crystal to plasma + - code_imp: Removes crystal define in place of plasma string + Drathek: + - bugfix: Fix xeno wounds layering over weeds when merged with the weeds + InsaneRed: + - spellcheck: More WE/YOU fixes for xenomorph side. + - bugfix: Spitter's charge spit abiltiy now properly adds and removes the 5 armor + like its supposed to initially. + SabreML: + - bugfix: Fixed the Queen Eye still showing as "Immature" after the Queen ages. + - bugfix: Fixed carriers being unable to reduce their 'reserved facehuggers' number. + - bugfix: Fixed being able to vend infinite alcohol. + - bugfix: Fixed the death message from GAU-21 and Laser Cannon strikes saying that + the player was killed by the ammo crate. + cuberound: + - balance: launchbay price 400 -> 200 + - balance: DS installed sentrygun price lowered to 200 + realforest2001: + - code_imp: Added a new span class that combines bold and big. + - code_imp: Tweaked the way prayer sends notifications to be more efficient. + - admin: Moved the prayer notification sound to a toggle preference, combined with + ARES Interface notifications. +2023-12-28: + InsaneRed: + - bugfix: Synths are no longer immune to lunges / dragging while in 'critical state' + since they dont go into crit. + SabreML: + - bugfix: Fixed inserting/removing an item from shoes sometimes acting weirdly. + - refactor: Refactored shoe item storage. + fira: + - bugfix: Fixed XRF Scanner bricking if people were adding and removing vials at + same time. +2023-12-29: + sleepynecrons: + - imageadd: new sprites for predalien, predlarva and weeded corpse + - imageadd: added predalien wound overlays +2023-12-30: + Birdtalon: + - bugfix: Runtime in inventory.dm + Cthulhu80: + - bugfix: fixes immobilized mobs being able to buckle themselves + InsaneRed: + - qol: '"View Playtime" is now under the "Records" section under OOC' + - qol: '"Remove Your Splints" is now under the "IC" section.' + SabreML: + - bugfix: Fixed the CAS laser cannon only setting fire to a single tile, rather + a 7x7 range. + - qol: Made the designation of a tunnel display in chat when a player enters it. + - bugfix: Fixed the pyro spec's fuel pack sometimes giving weird failure messages + when trying to switch fuel. + Zonespace27: + - rscadd: Added a tutorial system for various roles (and just general information), + find it in the lobby screen. + cuberound: + - bugfix: m56d can not longer shoot backwards when facing north + mullenpaul: + - refactor: tgui js components now jsx +2023-12-31: + AnonHault: + - spellcheck: fixed a typo + BeagleGaming1: + - qol: Adds the ability to hide your action buttons + Birdtalon: + - bugfix: Fixes a runtime on decapping one's self. + - bugfix: Runtime with milk and possibly other reagent's on_mob_life() + - bugfix: Fixes runtime calling post_attack() on a mob which has already been qdeleted + via gibbing. + - code_imp: Refactors some code to new throw_carbon proc + Cthulhu80: + - bugfix: Fixes movement delay stacking on weeds + - bugfix: Fixes evac pods launching with more than the occupant limit + Huffie56: + - qol: creating a new section called engineering supplies for the rifleman and the + team leader. + - balance: added standard binocular to the rifleman vendor at a cost of 5. + - balance: added Range Finder and Laser Designator binoculars to Team leader at + a cost of 10 and 20. + - balance: added ES-11 Mobile Fuel Canister and ME3 hand welder to Team leader and + rifleman for 5 each. + InsaneRed: + - balance: Properly tweaks predator stun resist back to what it should have been. + SabreML: + - bugfix: Fixed the Hive Status window showing an error message when the Queen dies. + - qol: Added a 'Time Since Death' counter to the status tab for ghosts. + blackdragonTOW: + - rscadd: Max CL Headset radio keys from 3 to 5. (+2 increase) + cuberound: + - balance: gives trucker engineer level construction skill + mullenpaul: + - refactor: sentry laptop now uses camera manager component diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml new file mode 100644 index 000000000000..01bc18eaee1b --- /dev/null +++ b/html/changelogs/archive/2024-01.yml @@ -0,0 +1,463 @@ +2024-01-01: + Cthulhu80: + - bugfix: fixes the associated examine text being displayed for different hud types + even when removed. + - balance: slightly increases zombie infection rate in dead mobs + - refactor: refactored some zombie code. + - bugfix: Fixes mobs being able to understand other languages while in crit. + - bugfix: fixes users getting stuck inside of the simulator + - bugfix: fixes xenos being able to view raw html on paper. + - bugfix: Fixes photos not being viewable from any distance as an observer + - bugfix: Fixes permanent lighting buff after using the vulture sniper rifle. + Drathek: + - bugfix: Fix handling of sentry_computer deletion + InsaneRed: + - spellcheck: Changed hit alerts to We instead of You on the xeno side. + Private Tristan: + - bugfix: Eggs are properly converted to Forsaken hive on evac + fira: + - bugfix: Fixed Nuke failing to detonate under specific circumstances. It may involve + a little rodent. + - bugfix: Nuke explosion will now kill mobs on its actual explosion rather than + at the start of the cinematic sequence. + mullenpaul: + - bugfix: properly sorted team lead position in squad info page +2024-01-02: + Cthulhu80: + - bugfix: Fixes voting message not formatting correctly. + SabreML: + - bugfix: Fixed screen alert tooltips ('Buckled' indicator and stuff) getting stuck + open. + Zonespace27: + - rscadd: The Three-World Empire will now occasionally respond to distress beacons. + cuberound: + - balance: m56d can not be placed within five tiles of another one +2024-01-03: + SabreML: + - bugfix: Fixed custom xeno ERTs sending a distress beacon announcement when it + shouldn't. + Steelpoint: + - mapadd: Shivas Snowball is back in rotation. + - maptweak: The south east landing zone on Shivas has been relocated to the south + west, the dig site in the south west has been similarly relocated. + - maptweak: Comms towers on Shivas have been placed in more consistent locations + near each other, instead of some of them being on the opposite sides of the + map from each other. + poltava, ihatethisengine: + - rscadd: added intel chestrig + - imageadd: added sprites for intel chestrig +2024-01-04: + BeagleGaming1, Mr.Crowford: + - rscadd: Added Yautja action buttons + - qol: Added a keybind to control falcon drones + - qol: Thwei crystals and healing capsules say how much time until off cooldown + - code_imp: Yautja keybinds now redirect to action buttons + - code_imp: Changed thwei crystals and healing capsules to cooldowns instead of + timers + - code_imp: Miscellaneous Yautja-related code cleanup + SabreML: + - bugfix: Fixed non-combat synthetics being able to fire the M2C. + - bugfix: Fixed scouts being able to use the M56D or M2C before their cloak's gun + cooldown had ended. + - bugfix: Fixed the M56D and M2C saying that the user is too far away to man it, + even when they successfully man it. + - bugfix: Fixed a runtime which was caused whenever someone manned an M56D or M2C. + - refactor: Refactored some M56D and M2C manning/unmanning code. + fira: + - code_imp: Refactored Daze to use new Status backend + - bugfix: Dazed screen effect now applies immediately + - bugfix: Stuttering now starts properly when dazed + - rscdel: Removed unused disabilities code + - rscdel: Removed an old, goofy and unused decade old horse mask +2024-01-05: + Birdtalon: + - bugfix: Fixed exploit in praetorian hook caused by an oversight. + Huffie56: + - refactor: for the file coulours.dm and other files change define in it from COULOUR + to COLOR + SabreML: + - bugfix: Made the 'Time Since Death' counter show hours if it passes 1 hour, rather + than wrapping the minutes back to 0. + - ui: Separated xeno hivemind chat messages into their own toggleable category, + separate from 'Radio'. +2024-01-06: + private-tristan: + - bugfix: Trijent security southern hallway and engineering east tunnel no longer + have 2 APCs +2024-01-07: + BadAtThisGame302: + - qol: Spruced up the CLs office by adding a new plant, changing the stuck posters + to be random every round + - bugfix: Fixed the ATM Machine in the CLs office having Weyland-Yutani Automatic + Teller Machine and not Wey-Yu. Same thing, useless mapedit. + - bugfix: Fixes the PROUDLY REMEMBER IO! Posters in the CLs office (Again) + - bugfix: Puts the 29th Poster which was a pinup into the pinup posters and not + the music ones. + Birdtalon: + - bugfix: Runtime when consuming xeno fruits. + Blundir: + - rscadd: added approved stamp + - bugfix: fixed being unable to write on papers on noticeboard + - ui: changed noticeboard UI from scratch + - refactor: refactored noticeboard code + - maptweak: added noticeboard to req and approved stamp to QM's office, as well + as some pens in req area to interact with noticeboard + Drathek: + - refactor: Refactored the overlay_lighting component to better handle objects deleting + - bugfix: Fix putting lights in bags somereason keeping the light on + - ui: Polished various aspects of the new dropship weapons UI + - bugfix: Fixed CAS direct firing + - bugfix: Fixed Medevac buttons not moving the dropship (still currently requires + manual winch) + - bugfix: Fixed camera_manager resizing the view incorrectly because of overlay_lighting + - refactor: Ported some hard delete fixes for maps. + - bugfix: Fixed simulators detonation button + - bugfix: Fixed weeded corpses not changing color during forsaken conversion + - code_imp: Add missing bitfield definitions for variable viewer (VV) + LTNTS: + - bugfix: fixes trippy carrot cake sprite + SabreML: + - bugfix: Fixed observing a monkey/farwa/stok/etc. locking the camera onto it. + - bugfix: Fixed the 'busy' circle icon sometimes rendering behind object on the + tile above. + - spellcheck: Updated the night vision goggles 'Tip of the round' to instead relate + to night vision optics. + TheGamerdk: + - rscadd: SLs, SOs and XOs can now recommend people for medals! Do this by right-clicking + your headset, or using the new button in the object panel of the Status Panel! + ihatethisengine: + - balance: Pylons give larva only up to 50% of groundside (weighted) marines, instead + of 40% of all humans. + - balance: Xenos get major boost to evo speed for 3 minutes after hijack. Hijacking + resets ovi cooldown. + - rscadd: Xenos now see marines on the tacmap during hijack if xenos outnumber marines + for more than 25%. + private-tristan: + - spellcheck: Changed a tip related to runner pounce to be more accurate +2024-01-08: + realforest2001: + - bugfix: Yautja scimitars no longer bypass attack delay. +2024-01-09: + private-tristan: + - bugfix: Tunnels are now converted to forsaken on evac. +2024-01-10: + SabreML: + - bugfix: Fixed tunnels not showing on the minimap. + Tsurupeta: + - bugfix: Regular expressions in chat highlights work again. +2024-01-12: + Vicacrov: + - bugfix: Placing flags now anchors the actual flag, not the stack of flags in your + hand. + Zenith, Steelpoint: + - rscadd: Updates Steelpoint's donor armour, replacing it with a new sprite, camouflage + options for all maps and new item descriptions that are lore friendly. + realforest2001: + - rscadd: Added the X17 Riot Breaching Charge. +2024-01-15: + InsaneRed: + - qol: Moves "Banish, Re-admit and De-evolving" queen abilities into one list, making + the queen ui less clutterier + Stakeyng: + - rscadd: Added the ability to combine prescription glasses with eyewear for varying + roles + private-tristan: + - bugfix: removed a light fixture being doubled on trijent + - maptweak: moved some trijent lights in marshals off windows + - maptweak: Alamayer PermaBrig Chairs face the right way +2024-01-16: + Drathek: + - bugfix: Fix all hands on deck message not sending to those in cryopods + Huffie56: + - rscadd: Add the ability to build multi tile assembly from metal sheets. + ItsVyzo: + - balance: m56d loses burst fire + SabreML: + - bugfix: Fixed dead marines being able to man and fire the M56D. + TheGamerdk: + - bugfix: Overwatch now works on Whiskey Outpost again, not that you will use it. + Zonespace27: + - balance: 3 smartgun drums now spawn in the SG's equipment crate. Smartgun drums + cannot be purchased from the SG vendor. +2024-01-17: + SabreML: + - bugfix: Fixed larvae sometimes spawning in space on Fiorina. + TheGamerdk: + - bugfix: The Kutjevo Refinery has been granted an additional SMES +2024-01-18: + Birdtalon: + - bugfix: Fixed buckled mobs unable to move after being thrown by a xeno. + Drathek: + - code_imp: Cleaned up some oversights in attachment Detatch logic + SabreML: + - rscadd: Added a 'balloon alert' when toggling Crest Defense as a Defender. + - code_imp: Made balloon alerts centre themselves on xeno sprites. + Vicacrov: + - bugfix: Fixes an issue where player-controlled facehuggers would ghost out when + smashing against anti-hugging headgear like the B18 helmet. +2024-01-19: + BadAtThisGame302: + - rscadd: Added the Wey-Yu lighter to the CLs briefcase instead of a normal one + BeagleGaming1: + - bugfix: Floor floodlights use correct sprites + Birdtalon: + - bugfix: Bedrolls no longer give metal when wrenched. + - code_imp: INTERRUPT_ALL define now includes resting. + DelineFortune: + - code_imp: Changed value of metal you are getting for recycling attachments via + autolathe. + Huffie56: + - rscdel: deleting machinery called centrifuge in distillery/main.dm and deleted + the distellery/main.dm file and folder. + - refactor: move all the machinery of distillery/main.dm into machinery.dm and remove + all their added functionality. + - rscdel: Remove all the manuals that were nothing to do with CM lore. (cloning, + particle_accelerator, singularity_safety, robotics_cyborgs) + - code_imp: Updated research manual. + - refactor: refactor to reduce the number variable using colour in them instead + of color. + - rscdel: deleting a var called "max_temperature" that created in Walls.dm and didn't + do anything code wise. + InsaneRed: + - bugfix: Fixes praetorian acid ball eating up plasma if its on cooldown + SabreML: + - qol: Made open TGUI windows transfer over when a xeno player evolves. + - rscadd: Made xeno tunnel lists sort by distance to the player. + TheGamerdk: + - rscadd: Groundside Operations console now shows ASL status + - bugfix: FTL is sorted correctly in Groundside Operations console + Vicacrov: + - bugfix: Special xeno structures no longer layer below the Alamo and Normandy's + equipment attach points. + blackdragonTOW: + - soundadd: added unique sound for minimap updates + - soundadd: added unique fax sound for fax announcements. + cuberound: + - bugfix: lowers volume of neurohalucination from 100 (no outher sounds are so laud) + to 65 (just about under queen screech level). + fira: + - rscdel: Removed AIs. + - rscdel: Removed Cyborgs. + - rscdel: Removed Maintenance Drones. + - rscdel: Removed Camera chunking for AIs, and all associated dynamic updates. + - rscdel: Removed Robotic equipment items. + - rscdel: Removed Robotic and AI transformation tools. + - rscdel: Removed Robotic Transformation Disease. + - rscdel: Removed Nanites. Roburgers are now all safe to eat. + - rscdel: Removed functionality from AI machinery and AI card. They're props now. + iloveloopers: + - balance: Being immune to bonebreaks now makes you immune to delimbs. + mullenpaul: + - refactor: upgraded root tgui files to typescript to closer align with tg + - refactor: upgraded typescript to 4.9.4 + - refactor: upgraded yarn to 3.3.1 + - refactor: upgraded a bunch of tgui tooling + realforest2001: + - bugfix: Mutated facehuggers are no longer invisible. + - bugfix: Fancy closet now works as desired and runtime free. + - rscadd: Added an area for the closet to use instead of APC interior. + - code_imp: Repathed /area/vehicle to /area/interior/vehicle. +2024-01-20: + Drathek: + - bugfix: The M56D and the M2C now retain their labels when disassembled + - bugfix: The M56D can now be charger crushed when not fully assembled + - bugfix: The M56D being run over by a vehicle now undeploys the gun correctly (so + it retains the gun if it had a gun) + - bugfix: Fix an edge case that could duplicate the M56D when charger crushed + - balance: The M56D now retains the health of the gun through all of its different + disassembled states + - bugfix: Fixed mobs merged with weeds remaining ignited + SabreML: + - bugfix: Fixed the 'busy' circle icon being drawn above darkness and screen effects. +2024-01-21: + ClairionCM: + - qol: made whistles less spammy + Huffie56: + - rscadd: 'Add some boards to the board vendor in engi on almayer(Air Alarm Electronics, + Security Camera Monitor, + + Station Alerts, Arcade, Atmospheric Monitor).' + Releasethesea: + - rscadd: adds prescription variants of the orange, black, and M1A1 goggles + SabreML: + - rscadd: Made larvae and facehuggers able to use custom emotes. + Vicacrov: + - bugfix: Fixes engine/weapon attach points layering below the dropship walls. +2024-01-22: + cuberound: + - balance: AP rocket applies 3 weaken and 3 paralyze no matter if you hit the mob + directly(from 2), at max range (from 2) or tile under it (from 4) + - balance: indirect AP rocket does the same damage to walls and mobs +2024-01-23: + realforest2001: + - rscadd: Added Whitelist Panel for whitelist senators to manage their own whitelists. + - refactor: Whitelist.txt is no longer functional, owing to the new system. + - rscdel: Removed "Alien Whitelist" checks regarding base SS13 races. +2024-01-24: + BeagleGaming1: + - balance: Repairing bones with bone glue costs a portion of the bone glue's resources + - balance: Repairing bones with a screwdriver costs metal + - rscdel: Removed bone glue from the medilathe + - spellcheck: New description for bone glue + Ben10083: + - maptweak: Workin Joey has returned to the Maintenance Bar + Birdtalon: + - rscadd: Xenomorph basic tutorial. + SabreML: + - bugfix: Fixed being gibbed with the Ctrl or Alt key held sometimes breaking movement + as an observer. + SpartanBobby: + - maptweak: A bunch of edits to big red and big red nightmares for the following + areas, Northcaves, Medical Morgue, maint between cargo and general store, LZ2, + North Libary, EVA, dorms bathroom + VileBeggar: + - balance: M39 burst scatter multiplier reduced from 7 to 4. + fira: + - bugfix: Fixed an exploit involving playing cards. + mullenpaul: + - refactor: switched from infernojs to react + private-tristan: + - rscadd: Added a new xeno tip about where to target. + - spellcheck: changed a few tips' wording. + - rscdel: Removed an outdated xeno tip about slashing NVGs + realforest2001: + - rscadd: Psychic Whisper now broadcasts to deadchat too. + - bugfix: Psychic Whisper can now be used while lying down. +2024-01-25: + Drathek: + - bugfix: Fixed more item exploits + - bugfix: Fixed lingering overlays in inventories for metal stacks and cards + Huffie56: + - refactor: creating it's own file for souto mobile code instead of it being in + vehicle.dm. + TheGamerdk: + - rscadd: A hive collapse (No new Queen) while at 3 xenos or below is now a marine + major, instead of a minor. +2024-01-26: + Huffie56: + - bugfix: corrected the name of an area from "Lower Deck Starboard Hull" to "Lower + Deck Starboard-Aft Hull". + - bugfix: added apc's to area that where missing one. + - maptweak: added some areas to almayers (constr site, Starboard-Bow Maintenance, + Bow Hull(port and starboard),cryo maintenance. + Johannes2262: + - rscadd: Added three more magazines to each of the MP's handgun cases + LTNTS: + - rscadd: bolted version of blood and medical vendors + - rscadd: pill bottle crate + - balance: cheaper medical crates from req + - balance: less items in med vendors, mainly pill bottles + cuberound: + - rscadd: added messages when the CAS sonic boom is played + - soundadd: reduced volume falloff of CAS sonic boom + - bugfix: allows custom flamethrower tanks to be filled directly from oxygentank + realforest2001: + - rscadd: Adds paygrade defines for PMCs, VAI, Mercenaries and TWE. + - code_imp: Adds code to populate reference lists for certain paygrades. + - bugfix: Fixes PMC synth not using the correct grade. + - rscadd: Syndicate ID card repathed and works with paygrades. + - spellcheck: The latejoin menu marine category title is now Marines instead of + Squad Riflemen, as this was an inaccuracy. +2024-01-27: + Contrabang: + - bugfix: Dchat is no longer notified of hugs from tutorials + SabreML: + - bugfix: Fixed the xeno 'queen locator' giving the wrong location when a tunnel + was selected. +2024-01-29: + BadAtThisGame302: + - rscadd: Added a Researcher on Trijent. + - rscadd: Added a CMB Deputy on Trijent. + - rscadd: Added a second RD uniform. + - code_imp: changed the Trijent Security Guard to not use a USCM MP Hat and trenchcoat. + - code_imp: changed a not used "synthetic service uniform" to it's before shamelessly + taken RD Variant. + Contrabang: + - spellcheck: Fixed a few uncommon typos across the entire codebase + Doubleumc: + - refactor: projectile paths are the same in both directions, A->B and B->A + Drathek: + - rscadd: The game will now change game mode to default and initiate a map vote + if a game mode fails to start twice and there are no admins online. + - bugfix: Fixed a runtime during game mode voting + - admin: Admins can now use the Start Round verb to bypass a gamemode's checks + SabreML: + - spellcheck: Made observers see the marine version of CAS warnings, rather than + the xeno one. + private-tristan: + - bugfix: Civilian survs will now spawn with snow gear on snow maps. + realforest2001: + - rscadd: Added biometric checks to command announcements. + - code_imp: Security camera autoname is now determined by a variable rather than + hardcode. +2024-01-30: + Huffie56: + - bugfix: fix upper deck having disposal pipes west of CIC going on a loop. + - bugfix: fix south of alpha briefing having disconnected pipes and disposal from + the main loops. + - bugfix: fix south shooting range having is disposal outside and disposal pipe + east going over vents. + - bugfix: fix pipes in req rest room going in the walls or windows. + - bugfix: fix pipes in control tower in hangar going bellow the windows instead + of the doors. + - refactor: added a few maintenance areas(mess, Port and starboard Midship) ,a few + other hull areas( lower and upper stair hull, Port and starboard stern and bow + hull) + - maptweak: corrected a colored tile west of CIC being the wrong sprite. + InsaneRed: + - balance: You now only need 1 burrowed larva to trade it for evolution as Queen + instead of 3 burrowed larva. + SabreML: + - bugfix: Fixed ponchos not having icon states on specific maps. + mullenpaul: + - code_imp: fixes sticky messages in STUI + - refactor: STUI is now a TSX component +2024-01-31: + Birdtalon: + - code_imp: Added procs for applying a root (immobilise) + Contrabang: + - bugfix: Chestbursting larva no longer get hive orders when there are no hive orders + CyberSpyXD: + - rscadd: Added a new backstory blurb for friendly UPP and some variance to the + backstory of UPP synthetics. + Drathek: + - balance: Increased double throw delay from .4s to 1.5s + Huffie56: + - refactor: turn some "# and use the proper define from colour.dm for 21 files. + LC4492: + - rscadd: Adds a variation of the chef's apron, "Medical's apron", to be used by + medical personnel, mainly nurses. + - bugfix: Fixed the code in the prep vendors to make things of different groups + not act like they are of the same group, like how you couldn't take a labcoat + and a snowcoat, only one of both, which does not make sense. + - code_imp: Update of the medical's vendor preps. Exclusion of most part of medical's + equipment when waking up from cryo. Addition of latejoin landmarks to the same + place where they usually wake up as firstjoiners. + - maptweak: Added the landmarks to the map and changed the CMO's vendor to an unused + space in his room to improve on item grabbing, because the items were being + covered by the bed's sheet, and making player's life to take things from it + more difficult. Also re-added a bedsheet in the medical's area that some old + PR somehow removed. + LTNTS: + - bugfix: removed the tiny square in the MP beret to stop it looking like a french + mime's beret + - refactor: reorganized cm_hats and cm_suits for easier spriter usage + - spellcheck: fixed area typo Marshall to Marshal + Oyu07: + - bugfix: Widens Dropship fabricator UI. Points for ammo are no longer cut off + - bugfix: character pref Green Beret is no longer invisible + SabreML: + - bugfix: Fixed facehuggers being able to flip tables. + - bugfix: Fixed a stray pixel in the warrior 'walking' sprite. + - bugfix: Made the Queen able to automatically climb ledges. + blackdragonTOW: + - soundadd: brought dropship_crash down from 0db to -6db + private-tristan: + - balance: Xenos do greatly increased damage to metal foam (0.8x to 1.75x) + - balance: Iron metal foam hp decreased from 85 to 75, meaning that all T3s other + than boiler can instantly break it. + - balance: Metal foam grenades now create iron foam. + - balance: Aluminum foam reactions are now cap'd at 300u + - balance: amount of metal foam grenades in req doubled. + - balance: Surplus explosive pack now contains 2 metal foam grenades + - rscdel: metal foam is no longer able to be created in chemistry diff --git a/html/changelogs/archive/2024-02.yml b/html/changelogs/archive/2024-02.yml new file mode 100644 index 000000000000..f8d85764a2a3 --- /dev/null +++ b/html/changelogs/archive/2024-02.yml @@ -0,0 +1,166 @@ +2024-02-01: + BadAtThisGame302: + - bugfix: fixed the CMB Trijent Survivor + BadAtThisGame302, AmoryBlaine: + - rscadd: Added new brown laceups, adds new ties and tweaks current ones, as well + as new suit, bomber, vest, and corporate clothes to the game. Sprites by AmoryBlaine. + - imageadd: added six new Corporate clothes sprites (Casual/Ivy/Formal/Black/Brown/Blue), + three suit vest sprites (Brown/Tan/Grey), three bomber jacket sprites (Khaki/Red/Grey), + and five suit jacket sprites (Khaki/Formal/Black/Brown/Blue). + Huffie56: + - rscdel: Removed "security robot module" from robot_module.dm + - refactor: change the name of Ripley in game to P-1000, gygax to MAX, Durand to + MOX, Odysseus to Alice to be more in line with the lore. +2024-02-02: + BadAtThisGame302: + - rscadd: Replaced the Political Survivor surv name with State Contractor + - rscadd: Added a USCMC Recruiter to the Solaris surv pool. + - rscadd: Added a USCM Survivor template anycase anyone wants to add USCM Survivors + to other maps. + - bugfix: Every other surv has no 'Ridge' next to Solaris in their assignments, + only the CL. Fixes this. + - spellcheck: Embellished the Solaris Ridge announce text, to make it so the Company + and more fluff about it's actual role like the wiki states. + Diegoflores31: + - rscadd: Disabler bolts now deal a little oxygen damage on each hit. + - rscadd: Replaces Skill lock system on stunbatons with a high chance of hiting + yourself + - qol: adds jittery and sway to Stunbaton and Disabler beams + Drathek: + - balance: Compared to originally, corpsmen now have access to medbay vendors, and + chemistry only requires chemistry access. + - bugfix: 'Fixed unintended change to medbay vendors access:' + Huffie56: + - maptweak: added warning stripe bellow doors that didn't have them. + - maptweak: Removed a bed sheet in medical to restore the lore of the unknown alpha + that stole it. + - maptweak: Reconnect the CIC armory to one of the brig door armory allowing them + to open it at a distance. + InsaneRed: + - balance: Oppressor tailstab no longer ignores armor, and it now roots instead + of stunning. + NervanCatos: + - qol: added M3-L Pattern Light Armor to IO Prep + SabreML: + - bugfix: Fixed lesser drones not being able to flip tables. + VileBeggar: + - rscadd: Added the XM51 breaching scattergun, available in small quantities as + a restricted weapon within Requisitions. + blackdragonTOW: + - imageadd: altered the turret flag to the UA flag, from generic orange + - bugfix: Flag turrets now correct reference the destroyed state + harryob: + - bugfix: medals should save more reliably + hislittlecuzingames: + - balance: Nightmare inserts of crashed ships on Solaris (big red) and Desert dam + can do surgury in them INSTANCE EDIT + mullenpaul: + - refactor: camera consoles now use camera manager component + private-tristan: + - balance: Burrower can no longer spawn as part of the feral xeno ERT +2024-02-03: + Drathek: + - ui: Refactored backend for Weapon Stats panel to use spritesheets instead. +2024-02-04: + BadAtThisGame302: + - bugfix: fixed the CL jackets/vests/bomber jackets sprites. + Drathek: + - imageadd: Changed green fire sprites to work better with lights + - balance: Reduced how many fire stacks a flaregun shot provides + - balance: Reduced starshell's damage, but fixed the application of the incend bullet + trait. + - balance: Reverted damage changes to tazers and batons. + Huffie56: + - bugfix: 'revert PR #5553 as it is causing issues with color on atmo pipe.' + LTNTS: + - imageadd: stamp sprites for TWE, UPP and CLF + - code_imp: added TWE, UPP and CLF channels + MistChristmas: + - maptweak: Add Brig Photocopier + Segrain: + - bugfix: Some cases of calculations for "time remaining until something" no longer + display incorrect results. + Stakeyng: + - qol: Removes the need to cycle through helmet visors that contain HUD effects + that are already active on your character. + cuberound: + - balance: increases flare pouch storage slots from 8 to 16 +2024-02-05: + Drathek: + - bugfix: Added more null testing to helmet visors. + Poltava: + - imageadd: updated intel expedition chestrig sprite + SpartanBobby: + - maptweak: Fixes the two gauss sentry guns that were boxxed in by a mapper over + a year ago on ice 3 + Warfan1815: + - bugfix: Open surgical incisions now show up on a health scanner even if there + is nothing else wrong. + - bugfix: Open surgical incisions in the head "zones" (mouth and eyes) now show + up independently on health scanner + cuberound: + - balance: increases healing node heal from 10hp every 5 sec to 20 hp every 5 sec +2024-02-06: + InsaneRed: + - rscadd: Warden Praetorians can now see how much healing they've done. + - qol: Re-organizes the warden ''hotbar'' + - bugfix: SO's M3 armor now has the proper description. + Vicacrov: + - bugfix: Fixes Defenders staying Fortified in critical state - Fortify now automatically + toggles itself off upon the Defender getting critted. +2024-02-07: + InsaneRed: + - balance: Scout specialist incin/high impact mag crates now only has 3 instead + of 5 + Steelpoint: + - rscadd: USCM Chestrig has been added to squad prep vendors, alternative sprite + of a satchel, similar in appearance to the welder-chestrig. +2024-02-08: + Megaddd: + - imageadd: added 4 bone-gel fill level sprite states + SpartanBobby: + - maptweak: changes to LV624 Engineering and T-comms, mostly detailing but changes + some doors and object placement +2024-02-09: + Huffie56: + - refactor: turning newscasters into "props". + - qol: added two new section to replace ammunition section primary ammunition and + sidearm ammunition and rearranged it for team leader. + - balance: added the ability for comtech, medic, and squad leader to buy M4A3 (HP + and AP) and VP78 magazines for 3 points and M44 Heavy for 6 points. + - balance: added the ability for SG to buy M4A3 (HP and AP) and VP78 magazines for + 5 points and M44 Heavy for 10 points. + - balance: added the ability for rifleman to buy M4A3 (HP and AP) and VP78 magazines + for 5 points. +2024-02-10: + Drathek: + - bugfix: Fixed an oversight with burst point blank firing + SabreML: + - bugfix: Fixed trash carts not being pick-uppable by the dropship's fulton recovery + system. + blackdragonTOW: + - admin: added logging for 3rd party victory events + private-tristan: + - rscadd: Pizza ERT is back, although incredibly unlikely to occur + - bugfix: UPP ERT no longer rolls 3 times (1 for random, 1 for friendly, and 1 for + hostile), due to this, UPP comms will always be scrambled at the beginning, + no way to tell intentions before meeting. + - rscadd: Chem Goon Research Consultant now spawns with reagent scanner goggles. +2024-02-11: + Drathek: + - bugfix: Fix gardener fruit count not always updating + Vicacrov: + - bugfix: Fixed Warden Praetorians being able to move around the ovipositored Queen + with their Retrieve ability. +2024-02-12: + Stakeyng: + - qol: Lets you put an extra accessory item in your helmet. + harryob: + - server: tor banning functionality is removed +2024-02-13: + Huffie56: + - refactor: refactored watercloset.dm file. + SabreML: + - ui: Made the Tutorial Menu automatically close when a tutorial is started. + - code_imp: Made the tutorial Xenomorph not inherit the user's 'age' prefix. + - code_imp: Added a basic unit test for tutorials. diff --git a/html/create_humans.html b/html/create_humans.html index ed9361fc6f25..06b92cba0c71 100644 --- a/html/create_humans.html +++ b/html/create_humans.html @@ -11,7 +11,7 @@ Amount of humans:
        - Range to spawn in: + Range to spawn in:

        Spawn mobs as:
        Regular
        diff --git a/html/create_object.html b/html/create_object.html index a4c3085a9ac6..8e67b99aebca 100644 --- a/html/create_object.html +++ b/html/create_object.html @@ -9,16 +9,17 @@
        - Type
        - Offset: + Offset: A R
        Number: Dir: - Name:
        + Name:
        + Where:

        +
        @@ -37,13 +39,11 @@ var objects = object_paths == null ? new Array() : object_paths.split(";"); document.spawner.filter.focus(); - populateList(objects); function populateList(from_list) { object_list.options.length = 0; - var i; - for (i in from_list) { + for (var i in from_list) { var new_option = document.createElement("option"); new_option.value = from_list[i]; new_option.text = from_list[i]; @@ -71,6 +71,7 @@ return false; } + // Carriage return if (event.keyCode == 13 || event.which == 13) { object_list.options[0].selected = 'true'; } diff --git a/html/images/ColonialSpaceGruntsEZ.png b/html/images/ColonialSpaceGruntsEZ.png new file mode 100644 index 000000000000..7db4ca5ba768 Binary files /dev/null and b/html/images/ColonialSpaceGruntsEZ.png differ diff --git a/html/images/cmblogo.png b/html/images/cmblogo.png new file mode 100644 index 000000000000..d324f904a4c0 Binary files /dev/null and b/html/images/cmblogo.png differ diff --git a/html/images/upplogo.png b/html/images/upplogo.png new file mode 100644 index 000000000000..55619e2ce5ea Binary files /dev/null and b/html/images/upplogo.png differ diff --git a/html/statbrowser.js b/html/statbrowser.js index 81bd8cdf9c8d..289536d37da1 100644 --- a/html/statbrowser.js +++ b/html/statbrowser.js @@ -17,6 +17,17 @@ if (!String.prototype.trim) { // Status panel implementation ------------------------------------------------ var status_tab_parts = ["Loading..."]; var current_tab = null; +var local_fontsize; +// Per `storage.js` for tgui: +// Localstorage can sometimes throw an error, even if DOM storage is not +// disabled in IE11 settings. +// See: https://superuser.com/questions/1080011 +try { + local_fontsize = localStorage.getItem("fontsize"); +} catch (error) { + local_fontsize = 12; +} +var current_fontsize = local_fontsize ? parseInt(local_fontsize) : 12; // in px, also determines line height and category header sizes for the verb menus var mc_tab_parts = [["Loading...", ""]]; var href_token = null; var spells = []; @@ -65,10 +76,21 @@ function createStatusTab(name) { B.textContent = name; B.className = "button"; //ORDERING ALPHABETICALLY - B.style.order = name.charCodeAt(0); - if (name == "Status" || name == "MC") { - B.style.order = name == "Status" ? 1 : 2; + + switch (name) { + case "Status": + B.style.order = 1; + break; + case "MC": + B.style.order = 2; + break; + case "Panel Options": + B.style.order = 999; + break; + default: + B.style.order = name.charCodeAt(0); } + //END ORDERING menu.appendChild(B); SendTabToByond(name); @@ -232,10 +254,11 @@ function spell_cat_check(cat) { } } -function tab_change(tab) { - if (tab == current_tab) return; +function tab_change(tab, force) { + if (!force && tab == current_tab) return; if (document.getElementById(current_tab)) document.getElementById(current_tab).className = "button"; // disable active on last button + var oldTab = current_tab; current_tab = tab; set_byond_tab(tab); if (document.getElementById(tab)) @@ -259,6 +282,9 @@ function tab_change(tab) { draw_sdql2(); } else if (tab == turfname) { draw_listedturf(); + } else if (tab == "Panel Options") { + openOptionsMenu(); + tab_change(oldTab); } else { statcontentdiv.textContext = "Loading..."; } @@ -348,6 +374,8 @@ function draw_debug() { document.getElementById("statcontent").appendChild(table3); } function draw_status() { + var status_tab_map_href_exception = + "View Tactical Map"; if (!document.getElementById("Status")) { createStatusTab("Status"); current_tab = "Status"; @@ -358,6 +386,13 @@ function draw_status() { document .getElementById("statcontent") .appendChild(document.createElement("br")); + } else if ( + // hardcoded because merely using .includes() to test for a href seems unreliable for some reason. + status_tab_parts[i] == status_tab_map_href_exception + ) { + var maplink = document.createElement("a"); + maplink.innerHTML = status_tab_parts[i]; + document.getElementById("statcontent").appendChild(maplink); } else { var div = document.createElement("div"); div.textContent = status_tab_parts[i]; @@ -698,6 +733,7 @@ function draw_verbs(cat) { a.href = "#"; a.onclick = make_verb_onclick(command.replace(/\s/g, "-")); a.className = "grid-item"; + a.style.lineHeight = current_fontsize + 2 + "px"; var t = document.createElement("span"); t.textContent = command; t.className = "grid-item-text"; @@ -716,6 +752,7 @@ function draw_verbs(cat) { // do addition here var header = document.createElement("h3"); header.textContent = cat; + header.style.fontSize = current_fontsize + 4 + "px"; content.appendChild(header); content.appendChild(additions[cat]); } @@ -848,6 +885,7 @@ Byond.subscribeTo("remove_verb_list", function (v) { // passes a 2D list of (verbcategory, verbname) creates tabs and adds verbs to respective list // example (IC, Say) Byond.subscribeTo("init_verbs", function (payload) { + statcontentdiv.style.fontSize = current_fontsize + "px"; wipe_verbs(); // remove all verb categories so we can replace them checkStatusTab(); // remove all status tabs verb_tabs = payload.panel_tabs; @@ -868,6 +906,7 @@ Byond.subscribeTo("init_verbs", function (payload) { draw_verbs(current_tab); } } + createOptionsButton(); SendTabsToByond(); }); @@ -1019,3 +1058,18 @@ Byond.subscribeTo("remove_sdql2", remove_sdql2); Byond.subscribeTo("remove_mc", remove_mc); Byond.subscribeTo("add_verb_list", add_verb_list); + +function createOptionsButton() { + addPermanentTab("Panel Options"); +} + +function openOptionsMenu() { + Byond.command("Open-Statbrowser-Options " + current_fontsize); +} + +Byond.subscribeTo("change_fontsize", function (new_fontsize) { + current_fontsize = parseInt(new_fontsize); + localStorage.setItem("fontsize", current_fontsize.toString()); + statcontentdiv.style.fontSize = current_fontsize + "px"; + tab_change(current_tab, true); // Redraw the current tab +}); diff --git a/icons/effects/alphacolors.dmi b/icons/effects/alphacolors.dmi index 02316fbf64de..6bb903862ca0 100644 Binary files a/icons/effects/alphacolors.dmi and b/icons/effects/alphacolors.dmi differ diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi index 704c0ad1c02c..d6ee40cf7fe8 100644 Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ diff --git a/icons/effects/fire.dmi b/icons/effects/fire.dmi index 673f1c48de1f..a36e22b9c871 100644 Binary files a/icons/effects/fire.dmi and b/icons/effects/fire.dmi differ diff --git a/icons/effects/genetics.dmi b/icons/effects/genetics.dmi index 8e31fea96135..fa46a2d6c094 100644 Binary files a/icons/effects/genetics.dmi and b/icons/effects/genetics.dmi differ diff --git a/icons/effects/light_overlays/light_128.dmi b/icons/effects/light_overlays/light_128.dmi new file mode 100644 index 000000000000..22dc0b010870 Binary files /dev/null and b/icons/effects/light_overlays/light_128.dmi differ diff --git a/icons/effects/light_overlays/light_160.dmi b/icons/effects/light_overlays/light_160.dmi new file mode 100644 index 000000000000..26dfa453c516 Binary files /dev/null and b/icons/effects/light_overlays/light_160.dmi differ diff --git a/icons/effects/light_overlays/light_192.dmi b/icons/effects/light_overlays/light_192.dmi new file mode 100644 index 000000000000..aca94ee0caf5 Binary files /dev/null and b/icons/effects/light_overlays/light_192.dmi differ diff --git a/icons/effects/light_overlays/light_224.dmi b/icons/effects/light_overlays/light_224.dmi new file mode 100644 index 000000000000..9fab531d1a69 Binary files /dev/null and b/icons/effects/light_overlays/light_224.dmi differ diff --git a/icons/effects/light_overlays/light_256.dmi b/icons/effects/light_overlays/light_256.dmi new file mode 100644 index 000000000000..701562efcd8f Binary files /dev/null and b/icons/effects/light_overlays/light_256.dmi differ diff --git a/icons/effects/light_overlays/light_288.dmi b/icons/effects/light_overlays/light_288.dmi new file mode 100644 index 000000000000..b6eac180f7aa Binary files /dev/null and b/icons/effects/light_overlays/light_288.dmi differ diff --git a/icons/effects/light_overlays/light_32.dmi b/icons/effects/light_overlays/light_32.dmi new file mode 100644 index 000000000000..5269b1fba36d Binary files /dev/null and b/icons/effects/light_overlays/light_32.dmi differ diff --git a/icons/effects/light_overlays/light_320.dmi b/icons/effects/light_overlays/light_320.dmi new file mode 100644 index 000000000000..bf263c4b29be Binary files /dev/null and b/icons/effects/light_overlays/light_320.dmi differ diff --git a/icons/effects/light_overlays/light_352.dmi b/icons/effects/light_overlays/light_352.dmi new file mode 100644 index 000000000000..f895792da42d Binary files /dev/null and b/icons/effects/light_overlays/light_352.dmi differ diff --git a/icons/effects/light_overlays/light_384.dmi b/icons/effects/light_overlays/light_384.dmi new file mode 100644 index 000000000000..ef2a4c97e047 Binary files /dev/null and b/icons/effects/light_overlays/light_384.dmi differ diff --git a/icons/effects/light_overlays/light_416.dmi b/icons/effects/light_overlays/light_416.dmi new file mode 100644 index 000000000000..6a32ecbda661 Binary files /dev/null and b/icons/effects/light_overlays/light_416.dmi differ diff --git a/icons/effects/light_overlays/light_64.dmi b/icons/effects/light_overlays/light_64.dmi new file mode 100644 index 000000000000..37fc5084abcf Binary files /dev/null and b/icons/effects/light_overlays/light_64.dmi differ diff --git a/icons/effects/light_overlays/light_96.dmi b/icons/effects/light_overlays/light_96.dmi new file mode 100644 index 000000000000..b689a1370163 Binary files /dev/null and b/icons/effects/light_overlays/light_96.dmi differ diff --git a/icons/effects/light_overlays/light_cone.dmi b/icons/effects/light_overlays/light_cone.dmi new file mode 100644 index 000000000000..75f322a93717 Binary files /dev/null and b/icons/effects/light_overlays/light_cone.dmi differ diff --git a/icons/effects/light_overlays/shockwave.dmi b/icons/effects/light_overlays/shockwave.dmi new file mode 100644 index 000000000000..c22acfa1d59e Binary files /dev/null and b/icons/effects/light_overlays/shockwave.dmi differ diff --git a/icons/effects/lighting_object.dmi b/icons/effects/lighting_object.dmi new file mode 100644 index 000000000000..60ca2d313f6c Binary files /dev/null and b/icons/effects/lighting_object.dmi differ diff --git a/icons/effects/lighting_object_big.dmi b/icons/effects/lighting_object_big.dmi new file mode 100644 index 000000000000..d96db059bedb Binary files /dev/null and b/icons/effects/lighting_object_big.dmi differ diff --git a/icons/effects/techtree/tech.dmi b/icons/effects/techtree/tech.dmi index a255a0d0e544..d88106f82d11 100644 Binary files a/icons/effects/techtree/tech.dmi and b/icons/effects/techtree/tech.dmi differ diff --git a/icons/landmarks.dmi b/icons/landmarks.dmi index 8898783f74c2..08b23758beaa 100644 Binary files a/icons/landmarks.dmi and b/icons/landmarks.dmi differ diff --git a/icons/misc/events/pumpkins.dmi b/icons/misc/events/pumpkins.dmi new file mode 100644 index 000000000000..e3087e7c444c Binary files /dev/null and b/icons/misc/events/pumpkins.dmi differ diff --git a/icons/misc/tutorial.dmi b/icons/misc/tutorial.dmi new file mode 100644 index 000000000000..31c9f72d3853 Binary files /dev/null and b/icons/misc/tutorial.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index 2fa8d673454f..8246bb4f70aa 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/mob/hud/actions.dmi b/icons/mob/hud/actions.dmi index 1692879116dc..820da22ea5b1 100644 Binary files a/icons/mob/hud/actions.dmi and b/icons/mob/hud/actions.dmi differ diff --git a/icons/mob/hud/actions_yautja.dmi b/icons/mob/hud/actions_yautja.dmi new file mode 100644 index 000000000000..c94388456e96 Binary files /dev/null and b/icons/mob/hud/actions_yautja.dmi differ diff --git a/icons/mob/hud/alien_standard.dmi b/icons/mob/hud/alien_standard.dmi index 7e339ec5e83d..8bad0b44acc9 100644 Binary files a/icons/mob/hud/alien_standard.dmi and b/icons/mob/hud/alien_standard.dmi differ diff --git a/icons/mob/hud/hud.dmi b/icons/mob/hud/hud.dmi index 91fd9e92b5fa..c9e4c0c6c23d 100644 Binary files a/icons/mob/hud/hud.dmi and b/icons/mob/hud/hud.dmi differ diff --git a/icons/mob/hud/human_bronze.dmi b/icons/mob/hud/human_bronze.dmi index 4f2ee88d1da5..11a724057245 100644 Binary files a/icons/mob/hud/human_bronze.dmi and b/icons/mob/hud/human_bronze.dmi differ diff --git a/icons/mob/hud/human_old.dmi b/icons/mob/hud/human_old.dmi index 2e29c09411b7..e8b682c7c831 100644 Binary files a/icons/mob/hud/human_old.dmi and b/icons/mob/hud/human_old.dmi differ diff --git a/icons/mob/hud/human_orange.dmi b/icons/mob/hud/human_orange.dmi index 420fb3e8ea3e..8a46dad89ed5 100644 Binary files a/icons/mob/hud/human_orange.dmi and b/icons/mob/hud/human_orange.dmi differ diff --git a/icons/mob/hud/marine_hud.dmi b/icons/mob/hud/marine_hud.dmi index 32c1d71e68cb..5de7b83a9309 100644 Binary files a/icons/mob/hud/marine_hud.dmi and b/icons/mob/hud/marine_hud.dmi differ diff --git a/icons/mob/hud/screen1.dmi b/icons/mob/hud/screen1.dmi index df8475ef0ebd..c79f6321a083 100644 Binary files a/icons/mob/hud/screen1.dmi and b/icons/mob/hud/screen1.dmi differ diff --git a/icons/mob/hud/screen1_full.dmi b/icons/mob/hud/screen1_full.dmi index 10eabc7a1659..c61aeaad55ee 100644 Binary files a/icons/mob/hud/screen1_full.dmi and b/icons/mob/hud/screen1_full.dmi differ diff --git a/icons/mob/hud/screen1_robot.dmi b/icons/mob/hud/screen1_robot.dmi index a54b0a34b392..679a555c97a6 100644 Binary files a/icons/mob/hud/screen1_robot.dmi and b/icons/mob/hud/screen1_robot.dmi differ diff --git a/icons/mob/hud/sec_hud.dmi b/icons/mob/hud/sec_hud.dmi index 9c1c4052caaf..9cc3e66c3e0b 100644 Binary files a/icons/mob/hud/sec_hud.dmi and b/icons/mob/hud/sec_hud.dmi differ diff --git a/icons/mob/hud/talk.dmi b/icons/mob/hud/talk.dmi index 52255e1094f9..c6f043bfd781 100644 Binary files a/icons/mob/hud/talk.dmi and b/icons/mob/hud/talk.dmi differ diff --git a/icons/mob/humans/dam_human.dmi b/icons/mob/humans/dam_human.dmi index 88cbb883db18..ba8a25565693 100644 Binary files a/icons/mob/humans/dam_human.dmi and b/icons/mob/humans/dam_human.dmi differ diff --git a/icons/mob/humans/green_armors.dmi b/icons/mob/humans/green_armors.dmi index e1a5aaf8c13f..5022b6c4bbc7 100644 Binary files a/icons/mob/humans/green_armors.dmi and b/icons/mob/humans/green_armors.dmi differ diff --git a/icons/mob/humans/human.dmi b/icons/mob/humans/human.dmi index f98eb58f08ff..7bcd1e9796cc 100644 Binary files a/icons/mob/humans/human.dmi and b/icons/mob/humans/human.dmi differ diff --git a/icons/mob/humans/human_hair.dmi b/icons/mob/humans/human_hair.dmi index bfe0e072f19d..1a91c7f0e43a 100644 Binary files a/icons/mob/humans/human_hair.dmi and b/icons/mob/humans/human_hair.dmi differ diff --git a/icons/mob/humans/onmob/back.dmi b/icons/mob/humans/onmob/back.dmi index fe04c9d66dc3..10c4f0765a12 100644 Binary files a/icons/mob/humans/onmob/back.dmi and b/icons/mob/humans/onmob/back.dmi differ diff --git a/icons/mob/humans/onmob/belt.dmi b/icons/mob/humans/onmob/belt.dmi index 1d5ed650b6f9..4cff5838fbbb 100644 Binary files a/icons/mob/humans/onmob/belt.dmi and b/icons/mob/humans/onmob/belt.dmi differ diff --git a/icons/mob/humans/onmob/contained/royal_marines_commando.dmi b/icons/mob/humans/onmob/contained/royal_marines_commando.dmi new file mode 100644 index 000000000000..4e9891fe65e9 Binary files /dev/null and b/icons/mob/humans/onmob/contained/royal_marines_commando.dmi differ diff --git a/icons/mob/humans/onmob/eyes.dmi b/icons/mob/humans/onmob/eyes.dmi index 2be8eb8d6fad..c4d743f61e38 100644 Binary files a/icons/mob/humans/onmob/eyes.dmi and b/icons/mob/humans/onmob/eyes.dmi differ diff --git a/icons/mob/humans/onmob/feet.dmi b/icons/mob/humans/onmob/feet.dmi index fd89d22ff856..fdf6a4a40e80 100644 Binary files a/icons/mob/humans/onmob/feet.dmi and b/icons/mob/humans/onmob/feet.dmi differ diff --git a/icons/mob/humans/onmob/hands.dmi b/icons/mob/humans/onmob/hands.dmi index 971fdb887148..83bf9960ad12 100644 Binary files a/icons/mob/humans/onmob/hands.dmi and b/icons/mob/humans/onmob/hands.dmi differ diff --git a/icons/mob/humans/onmob/head_0.dmi b/icons/mob/humans/onmob/head_0.dmi index 099ff7bdb385..9fc0bc82c123 100644 Binary files a/icons/mob/humans/onmob/head_0.dmi and b/icons/mob/humans/onmob/head_0.dmi differ diff --git a/icons/mob/humans/onmob/head_1.dmi b/icons/mob/humans/onmob/head_1.dmi index 60451b7006af..e69c0191042f 100644 Binary files a/icons/mob/humans/onmob/head_1.dmi and b/icons/mob/humans/onmob/head_1.dmi differ diff --git a/icons/mob/humans/onmob/helmet_garb.dmi b/icons/mob/humans/onmob/helmet_garb.dmi index 10d988b153dd..9876dd8629ad 100644 Binary files a/icons/mob/humans/onmob/helmet_garb.dmi and b/icons/mob/humans/onmob/helmet_garb.dmi differ diff --git a/icons/mob/humans/onmob/hunter/items_lefthand.dmi b/icons/mob/humans/onmob/hunter/items_lefthand.dmi index f3379c469113..91aa364340cb 100644 Binary files a/icons/mob/humans/onmob/hunter/items_lefthand.dmi and b/icons/mob/humans/onmob/hunter/items_lefthand.dmi differ diff --git a/icons/mob/humans/onmob/hunter/items_righthand.dmi b/icons/mob/humans/onmob/hunter/items_righthand.dmi index fbca4cfed5bb..8ec0871464c5 100644 Binary files a/icons/mob/humans/onmob/hunter/items_righthand.dmi and b/icons/mob/humans/onmob/hunter/items_righthand.dmi differ diff --git a/icons/mob/humans/onmob/items_lefthand_0.dmi b/icons/mob/humans/onmob/items_lefthand_0.dmi index 676920e0bac0..b3adba7e980e 100644 Binary files a/icons/mob/humans/onmob/items_lefthand_0.dmi and b/icons/mob/humans/onmob/items_lefthand_0.dmi differ diff --git a/icons/mob/humans/onmob/items_lefthand_1.dmi b/icons/mob/humans/onmob/items_lefthand_1.dmi index 52b3120ab12b..357a94f60cf7 100644 Binary files a/icons/mob/humans/onmob/items_lefthand_1.dmi and b/icons/mob/humans/onmob/items_lefthand_1.dmi differ diff --git a/icons/mob/humans/onmob/items_righthand_0.dmi b/icons/mob/humans/onmob/items_righthand_0.dmi index a380e5eb73f4..485e270510d8 100644 Binary files a/icons/mob/humans/onmob/items_righthand_0.dmi and b/icons/mob/humans/onmob/items_righthand_0.dmi differ diff --git a/icons/mob/humans/onmob/items_righthand_1.dmi b/icons/mob/humans/onmob/items_righthand_1.dmi index cedbcf8c0e7e..7bcc772c7375 100644 Binary files a/icons/mob/humans/onmob/items_righthand_1.dmi and b/icons/mob/humans/onmob/items_righthand_1.dmi differ diff --git a/icons/mob/humans/onmob/mask.dmi b/icons/mob/humans/onmob/mask.dmi index ef3ab2d9cc96..0c4ac97807d9 100644 Binary files a/icons/mob/humans/onmob/mask.dmi and b/icons/mob/humans/onmob/mask.dmi differ diff --git a/icons/mob/humans/onmob/suit_0.dmi b/icons/mob/humans/onmob/suit_0.dmi index 4d63b7abd7f1..de2595e261f0 100644 Binary files a/icons/mob/humans/onmob/suit_0.dmi and b/icons/mob/humans/onmob/suit_0.dmi differ diff --git a/icons/mob/humans/onmob/suit_1.dmi b/icons/mob/humans/onmob/suit_1.dmi index c17f403d99ce..61297e9f98cb 100644 Binary files a/icons/mob/humans/onmob/suit_1.dmi and b/icons/mob/humans/onmob/suit_1.dmi differ diff --git a/icons/mob/humans/onmob/suit_slot.dmi b/icons/mob/humans/onmob/suit_slot.dmi index df588b9b59ca..a9142060ab75 100644 Binary files a/icons/mob/humans/onmob/suit_slot.dmi and b/icons/mob/humans/onmob/suit_slot.dmi differ diff --git a/icons/mob/humans/onmob/ties.dmi b/icons/mob/humans/onmob/ties.dmi index b9ffbdd61ca4..87581eb94168 100644 Binary files a/icons/mob/humans/onmob/ties.dmi and b/icons/mob/humans/onmob/ties.dmi differ diff --git a/icons/mob/humans/onmob/uniform_0.dmi b/icons/mob/humans/onmob/uniform_0.dmi index 26993223a9d4..0613b6e66623 100644 Binary files a/icons/mob/humans/onmob/uniform_0.dmi and b/icons/mob/humans/onmob/uniform_0.dmi differ diff --git a/icons/mob/humans/onmob/uniform_1.dmi b/icons/mob/humans/onmob/uniform_1.dmi new file mode 100644 index 000000000000..12f4d104c2f0 Binary files /dev/null and b/icons/mob/humans/onmob/uniform_1.dmi differ diff --git a/icons/mob/humans/species/monkeys/onmob/suit_monkey_0.dmi b/icons/mob/humans/species/monkeys/onmob/suit_monkey_0.dmi index 3083c943c761..6d05304ef8d9 100644 Binary files a/icons/mob/humans/species/monkeys/onmob/suit_monkey_0.dmi and b/icons/mob/humans/species/monkeys/onmob/suit_monkey_0.dmi differ diff --git a/icons/mob/humans/species/monkeys/onmob/uniform_monkey_0.dmi b/icons/mob/humans/species/monkeys/onmob/uniform_monkey_0.dmi index 730ee28ff467..cc6fb5d13b03 100644 Binary files a/icons/mob/humans/species/monkeys/onmob/uniform_monkey_0.dmi and b/icons/mob/humans/species/monkeys/onmob/uniform_monkey_0.dmi differ diff --git a/icons/mob/humans/species/r_synthetic.dmi b/icons/mob/humans/species/r_synthetic.dmi index 9252fa3e9146..b619cbda6412 100644 Binary files a/icons/mob/humans/species/r_synthetic.dmi and b/icons/mob/humans/species/r_synthetic.dmi differ diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi new file mode 100644 index 000000000000..21cc40876fbc Binary files /dev/null and b/icons/mob/screen_alert.dmi differ diff --git a/icons/mob/screen_ghost.dmi b/icons/mob/screen_ghost.dmi index 195cf31e3689..3fedae4c80b1 100644 Binary files a/icons/mob/screen_ghost.dmi and b/icons/mob/screen_ghost.dmi differ diff --git a/icons/mob/xenonids/facehugger.dmi b/icons/mob/xenonids/facehugger.dmi index 97c4af179626..cd688d441d64 100644 Binary files a/icons/mob/xenonids/facehugger.dmi and b/icons/mob/xenonids/facehugger.dmi differ diff --git a/icons/mob/xenonids/lesser_drone.dmi b/icons/mob/xenonids/lesser_drone.dmi new file mode 100644 index 000000000000..bff44e659162 Binary files /dev/null and b/icons/mob/xenonids/lesser_drone.dmi differ diff --git a/icons/mob/xenonids/lurker.dmi b/icons/mob/xenonids/lurker.dmi index bc2c3aa06837..45a04ac68446 100644 Binary files a/icons/mob/xenonids/lurker.dmi and b/icons/mob/xenonids/lurker.dmi differ diff --git a/icons/mob/xenos/carrier.dmi b/icons/mob/xenos/carrier.dmi index 6832bbba8716..4b69cffd5313 100644 Binary files a/icons/mob/xenos/carrier.dmi and b/icons/mob/xenos/carrier.dmi differ diff --git a/icons/mob/xenos/effects.dmi b/icons/mob/xenos/effects.dmi index 80cc35fde5ba..132c5f78b0d7 100644 Binary files a/icons/mob/xenos/effects.dmi and b/icons/mob/xenos/effects.dmi differ diff --git a/icons/mob/xenos/facehugger.dmi b/icons/mob/xenos/facehugger.dmi index d44903adf941..2d8665899331 100644 Binary files a/icons/mob/xenos/facehugger.dmi and b/icons/mob/xenos/facehugger.dmi differ diff --git a/icons/mob/xenos/lesser_drone.dmi b/icons/mob/xenos/lesser_drone.dmi new file mode 100644 index 000000000000..134ec0c4ae7c Binary files /dev/null and b/icons/mob/xenos/lesser_drone.dmi differ diff --git a/icons/mob/xenos/predalien.dmi b/icons/mob/xenos/predalien.dmi index 1e3ec5caf806..c6162729b516 100644 Binary files a/icons/mob/xenos/predalien.dmi and b/icons/mob/xenos/predalien.dmi differ diff --git a/icons/mob/xenos/predalien_larva.dmi b/icons/mob/xenos/predalien_larva.dmi index 82786f273980..41eb31a2c809 100644 Binary files a/icons/mob/xenos/predalien_larva.dmi and b/icons/mob/xenos/predalien_larva.dmi differ diff --git a/icons/mob/xenos/radial_xenos.dmi b/icons/mob/xenos/radial_xenos.dmi new file mode 100644 index 000000000000..2832f42fda33 Binary files /dev/null and b/icons/mob/xenos/radial_xenos.dmi differ diff --git a/icons/mob/xenos/warrior.dmi b/icons/mob/xenos/warrior.dmi index 1211da5ac188..d766959d1070 100644 Binary files a/icons/mob/xenos/warrior.dmi and b/icons/mob/xenos/warrior.dmi differ diff --git a/icons/mob/xenos/weeds.dmi b/icons/mob/xenos/weeds.dmi index 8eb4b2203cf6..0b79525544bd 100644 Binary files a/icons/mob/xenos/weeds.dmi and b/icons/mob/xenos/weeds.dmi differ diff --git a/icons/mob/xenos/weeds_48x48.dmi b/icons/mob/xenos/weeds_48x48.dmi new file mode 100644 index 000000000000..198340955eba Binary files /dev/null and b/icons/mob/xenos/weeds_48x48.dmi differ diff --git a/icons/mob/xenos/weeds_64x64.dmi b/icons/mob/xenos/weeds_64x64.dmi new file mode 100644 index 000000000000..53c971cfe97c Binary files /dev/null and b/icons/mob/xenos/weeds_64x64.dmi differ diff --git a/icons/mob/xenos/wounds.dmi b/icons/mob/xenos/wounds.dmi index bf7d573b73a9..730e367f43ae 100644 Binary files a/icons/mob/xenos/wounds.dmi and b/icons/mob/xenos/wounds.dmi differ diff --git a/icons/obj/bodybag.dmi b/icons/obj/bodybag.dmi index 9084afd56f63..157a7692b2a8 100644 Binary files a/icons/obj/bodybag.dmi and b/icons/obj/bodybag.dmi differ diff --git a/icons/obj/items/assemblies.dmi b/icons/obj/items/assemblies.dmi index 668d62d23d4e..eb36d5696741 100644 Binary files a/icons/obj/items/assemblies.dmi and b/icons/obj/items/assemblies.dmi differ diff --git a/icons/obj/items/bedrolls.dmi b/icons/obj/items/bedrolls.dmi new file mode 100644 index 000000000000..c36e07002a3d Binary files /dev/null and b/icons/obj/items/bedrolls.dmi differ diff --git a/icons/obj/items/black_goo_stuff.dmi b/icons/obj/items/black_goo_stuff.dmi index 2d7b063bc4b8..b40461a40101 100644 Binary files a/icons/obj/items/black_goo_stuff.dmi and b/icons/obj/items/black_goo_stuff.dmi differ diff --git a/icons/obj/items/bloodpack.dmi b/icons/obj/items/bloodpack.dmi index b46b6eb638c0..d2bee4892dcf 100644 Binary files a/icons/obj/items/bloodpack.dmi and b/icons/obj/items/bloodpack.dmi differ diff --git a/icons/obj/items/clothing/backpacks.dmi b/icons/obj/items/clothing/backpacks.dmi index 8dbba91502fe..678107edf7af 100644 Binary files a/icons/obj/items/clothing/backpacks.dmi and b/icons/obj/items/clothing/backpacks.dmi differ diff --git a/icons/obj/items/clothing/belts.dmi b/icons/obj/items/clothing/belts.dmi index 381dcbe9687a..946fbfd23cda 100644 Binary files a/icons/obj/items/clothing/belts.dmi and b/icons/obj/items/clothing/belts.dmi differ diff --git a/icons/obj/items/clothing/cm_hats.dmi b/icons/obj/items/clothing/cm_hats.dmi index 33f600015a6f..ae311984e2c3 100644 Binary files a/icons/obj/items/clothing/cm_hats.dmi and b/icons/obj/items/clothing/cm_hats.dmi differ diff --git a/icons/obj/items/clothing/cm_suits.dmi b/icons/obj/items/clothing/cm_suits.dmi index fc2e10114370..7f4de16bb174 100644 Binary files a/icons/obj/items/clothing/cm_suits.dmi and b/icons/obj/items/clothing/cm_suits.dmi differ diff --git a/icons/obj/items/clothing/donor/HEAD.dmi b/icons/obj/items/clothing/donor/HEAD.dmi index 177529db64b2..3116bdef26b6 100644 Binary files a/icons/obj/items/clothing/donor/HEAD.dmi and b/icons/obj/items/clothing/donor/HEAD.dmi differ diff --git a/icons/obj/items/clothing/donor/SUITS.dmi b/icons/obj/items/clothing/donor/SUITS.dmi index 5243cc564983..fc0c9987b9d4 100644 Binary files a/icons/obj/items/clothing/donor/SUITS.dmi and b/icons/obj/items/clothing/donor/SUITS.dmi differ diff --git a/icons/obj/items/clothing/glasses.dmi b/icons/obj/items/clothing/glasses.dmi index b5a175e448bd..13dd0c542c6e 100644 Binary files a/icons/obj/items/clothing/glasses.dmi and b/icons/obj/items/clothing/glasses.dmi differ diff --git a/icons/obj/items/clothing/gloves.dmi b/icons/obj/items/clothing/gloves.dmi index 7ce4b146d176..f1fe9b303046 100644 Binary files a/icons/obj/items/clothing/gloves.dmi and b/icons/obj/items/clothing/gloves.dmi differ diff --git a/icons/obj/items/clothing/halloween_clothes.dmi b/icons/obj/items/clothing/halloween_clothes.dmi index 3de24560ec9d..530b7cf5a905 100644 Binary files a/icons/obj/items/clothing/halloween_clothes.dmi and b/icons/obj/items/clothing/halloween_clothes.dmi differ diff --git a/icons/obj/items/clothing/hats.dmi b/icons/obj/items/clothing/hats.dmi index d3dd143f8e17..3e2a1dcfc243 100644 Binary files a/icons/obj/items/clothing/hats.dmi and b/icons/obj/items/clothing/hats.dmi differ diff --git a/icons/obj/items/clothing/helmet_visors.dmi b/icons/obj/items/clothing/helmet_visors.dmi new file mode 100644 index 000000000000..f47bc9aa26d2 Binary files /dev/null and b/icons/obj/items/clothing/helmet_visors.dmi differ diff --git a/icons/obj/items/clothing/masks.dmi b/icons/obj/items/clothing/masks.dmi index deaf71830f8c..037ee8aba119 100644 Binary files a/icons/obj/items/clothing/masks.dmi and b/icons/obj/items/clothing/masks.dmi differ diff --git a/icons/obj/items/clothing/shoes.dmi b/icons/obj/items/clothing/shoes.dmi index a1cc3b93e8d7..c4e01786e579 100644 Binary files a/icons/obj/items/clothing/shoes.dmi and b/icons/obj/items/clothing/shoes.dmi differ diff --git a/icons/obj/items/clothing/suits.dmi b/icons/obj/items/clothing/suits.dmi index 47d06bc2cc10..cf23d265181f 100644 Binary files a/icons/obj/items/clothing/suits.dmi and b/icons/obj/items/clothing/suits.dmi differ diff --git a/icons/obj/items/clothing/ties.dmi b/icons/obj/items/clothing/ties.dmi index 4f5a3777ab10..366f2acb3512 100644 Binary files a/icons/obj/items/clothing/ties.dmi and b/icons/obj/items/clothing/ties.dmi differ diff --git a/icons/obj/items/clothing/ties_overlay.dmi b/icons/obj/items/clothing/ties_overlay.dmi index 89396622aba3..8db72b11cbe3 100644 Binary files a/icons/obj/items/clothing/ties_overlay.dmi and b/icons/obj/items/clothing/ties_overlay.dmi differ diff --git a/icons/obj/items/clothing/uniforms.dmi b/icons/obj/items/clothing/uniforms.dmi index 6d203ca69fea..bf8e5831607c 100644 Binary files a/icons/obj/items/clothing/uniforms.dmi and b/icons/obj/items/clothing/uniforms.dmi differ diff --git a/icons/obj/items/devices.dmi b/icons/obj/items/devices.dmi index de9e6fb01145..07bcd88a2ca3 100644 Binary files a/icons/obj/items/devices.dmi and b/icons/obj/items/devices.dmi differ diff --git a/icons/obj/items/drinks.dmi b/icons/obj/items/drinks.dmi index 10872151260a..7623a980e435 100644 Binary files a/icons/obj/items/drinks.dmi and b/icons/obj/items/drinks.dmi differ diff --git a/icons/obj/items/food.dmi b/icons/obj/items/food.dmi index ac802dc66a9a..12093cd2c45b 100644 Binary files a/icons/obj/items/food.dmi and b/icons/obj/items/food.dmi differ diff --git a/icons/obj/items/food_ingredients.dmi b/icons/obj/items/food_ingredients.dmi index 3e30f51153c0..c0a0213e6db4 100644 Binary files a/icons/obj/items/food_ingredients.dmi and b/icons/obj/items/food_ingredients.dmi differ diff --git a/icons/obj/items/helmet_garb.dmi b/icons/obj/items/helmet_garb.dmi index 40a45526306b..bbebf822c9d5 100644 Binary files a/icons/obj/items/helmet_garb.dmi and b/icons/obj/items/helmet_garb.dmi differ diff --git a/icons/obj/items/hunter/pred_gear.dmi b/icons/obj/items/hunter/pred_gear.dmi index 5587cc685bec..4501e75a06b3 100644 Binary files a/icons/obj/items/hunter/pred_gear.dmi and b/icons/obj/items/hunter/pred_gear.dmi differ diff --git a/icons/obj/items/items.dmi b/icons/obj/items/items.dmi index ec1209a3bf68..80daeefc21d5 100644 Binary files a/icons/obj/items/items.dmi and b/icons/obj/items/items.dmi differ diff --git a/icons/obj/items/pamphlets.dmi b/icons/obj/items/pamphlets.dmi index 021adfcdee52..b178b6389802 100644 Binary files a/icons/obj/items/pamphlets.dmi and b/icons/obj/items/pamphlets.dmi differ diff --git a/icons/obj/items/paper.dmi b/icons/obj/items/paper.dmi index 3589d5a1b4c2..b15d4be6076d 100644 Binary files a/icons/obj/items/paper.dmi and b/icons/obj/items/paper.dmi differ diff --git a/icons/obj/items/plush.dmi b/icons/obj/items/plush.dmi new file mode 100644 index 000000000000..8596fd69df9c Binary files /dev/null and b/icons/obj/items/plush.dmi differ diff --git a/icons/obj/items/radio.dmi b/icons/obj/items/radio.dmi index da2328fb227b..6352a14baef0 100644 Binary files a/icons/obj/items/radio.dmi and b/icons/obj/items/radio.dmi differ diff --git a/icons/obj/items/reagentfillings.dmi b/icons/obj/items/reagentfillings.dmi index 3c6420fa8839..1514db495e13 100644 Binary files a/icons/obj/items/reagentfillings.dmi and b/icons/obj/items/reagentfillings.dmi differ diff --git a/icons/obj/items/storage.dmi b/icons/obj/items/storage.dmi index 65cc0868440f..6edbf5b6c7d3 100644 Binary files a/icons/obj/items/storage.dmi and b/icons/obj/items/storage.dmi differ diff --git a/icons/obj/items/surgery_tools.dmi b/icons/obj/items/surgery_tools.dmi index 89c9ebf62869..c5e30c0c8c2f 100644 Binary files a/icons/obj/items/surgery_tools.dmi and b/icons/obj/items/surgery_tools.dmi differ diff --git a/icons/obj/items/synth/wj_pda.dmi b/icons/obj/items/synth/wj_pda.dmi new file mode 100644 index 000000000000..6bd7205e9a94 Binary files /dev/null and b/icons/obj/items/synth/wj_pda.dmi differ diff --git a/icons/obj/items/toy.dmi b/icons/obj/items/toy.dmi index e336d68dfd23..4a40561475c6 100644 Binary files a/icons/obj/items/toy.dmi and b/icons/obj/items/toy.dmi differ diff --git a/icons/obj/items/weapons/grenade.dmi b/icons/obj/items/weapons/grenade.dmi index 7d648059ac88..7ee5af737066 100644 Binary files a/icons/obj/items/weapons/grenade.dmi and b/icons/obj/items/weapons/grenade.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi b/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi index 6c5d741ef9b8..8655a8bfcf2c 100644 Binary files a/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi and b/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_boxes/handfuls.dmi b/icons/obj/items/weapons/guns/ammo_boxes/handfuls.dmi index 3355358f72f9..b1b181c182eb 100644 Binary files a/icons/obj/items/weapons/guns/ammo_boxes/handfuls.dmi and b/icons/obj/items/weapons/guns/ammo_boxes/handfuls.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_boxes/magazines.dmi b/icons/obj/items/weapons/guns/ammo_boxes/magazines.dmi index c56cb4deea9c..ff0c6d60d4ac 100644 Binary files a/icons/obj/items/weapons/guns/ammo_boxes/magazines.dmi and b/icons/obj/items/weapons/guns/ammo_boxes/magazines.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_boxes/text.dmi b/icons/obj/items/weapons/guns/ammo_boxes/text.dmi index dd08bf7e69b1..d9a8d5da3fbc 100644 Binary files a/icons/obj/items/weapons/guns/ammo_boxes/text.dmi and b/icons/obj/items/weapons/guns/ammo_boxes/text.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi b/icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi index 6d0e08c40623..2adece3b1ab1 100644 Binary files a/icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi and b/icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_by_faction/event.dmi b/icons/obj/items/weapons/guns/ammo_by_faction/event.dmi index 7328f00f8b3d..868ae1a1211a 100644 Binary files a/icons/obj/items/weapons/guns/ammo_by_faction/event.dmi and b/icons/obj/items/weapons/guns/ammo_by_faction/event.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_by_faction/twe_ammo.dmi b/icons/obj/items/weapons/guns/ammo_by_faction/twe_ammo.dmi new file mode 100644 index 000000000000..6d7b49c17612 Binary files /dev/null and b/icons/obj/items/weapons/guns/ammo_by_faction/twe_ammo.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi b/icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi index a6b212b5f0dc..5632ca31481e 100644 Binary files a/icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi and b/icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi b/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi index 3d2f1377db6f..e60e9463b8a2 100644 Binary files a/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi and b/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_by_faction/wy.dmi b/icons/obj/items/weapons/guns/ammo_by_faction/wy.dmi index 295071f1d7c5..11eab502b0cf 100644 Binary files a/icons/obj/items/weapons/guns/ammo_by_faction/wy.dmi and b/icons/obj/items/weapons/guns/ammo_by_faction/wy.dmi differ diff --git a/icons/obj/items/weapons/guns/attachments.dmi b/icons/obj/items/weapons/guns/attachments.dmi index 4a879f0d91c0..e627f7559a78 100644 Binary files a/icons/obj/items/weapons/guns/attachments.dmi and b/icons/obj/items/weapons/guns/attachments.dmi differ diff --git a/icons/obj/items/weapons/guns/attachments/barrel.dmi b/icons/obj/items/weapons/guns/attachments/barrel.dmi index 41231e81b975..138b9b658fb6 100644 Binary files a/icons/obj/items/weapons/guns/attachments/barrel.dmi and b/icons/obj/items/weapons/guns/attachments/barrel.dmi differ diff --git a/icons/obj/items/weapons/guns/attachments/rail.dmi b/icons/obj/items/weapons/guns/attachments/rail.dmi index 10e3cbe99a8c..68cb2648ebd1 100644 Binary files a/icons/obj/items/weapons/guns/attachments/rail.dmi and b/icons/obj/items/weapons/guns/attachments/rail.dmi differ diff --git a/icons/obj/items/weapons/guns/attachments/stock.dmi b/icons/obj/items/weapons/guns/attachments/stock.dmi index 481710383a14..0867f60d6430 100644 Binary files a/icons/obj/items/weapons/guns/attachments/stock.dmi and b/icons/obj/items/weapons/guns/attachments/stock.dmi differ diff --git a/icons/obj/items/weapons/guns/attachments/under.dmi b/icons/obj/items/weapons/guns/attachments/under.dmi index 8cbf735ac96b..5a9be7542348 100644 Binary files a/icons/obj/items/weapons/guns/attachments/under.dmi and b/icons/obj/items/weapons/guns/attachments/under.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_faction/colony.dmi b/icons/obj/items/weapons/guns/guns_by_faction/colony.dmi index 1e659671c999..caa62ef55605 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_faction/colony.dmi and b/icons/obj/items/weapons/guns/guns_by_faction/colony.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_faction/event.dmi b/icons/obj/items/weapons/guns/guns_by_faction/event.dmi index 3494faec7f7e..4c517b712bb2 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_faction/event.dmi and b/icons/obj/items/weapons/guns/guns_by_faction/event.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_faction/twe_guns.dmi b/icons/obj/items/weapons/guns/guns_by_faction/twe_guns.dmi new file mode 100644 index 000000000000..1976bcf8832d Binary files /dev/null and b/icons/obj/items/weapons/guns/guns_by_faction/twe_guns.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_faction/upp.dmi b/icons/obj/items/weapons/guns/guns_by_faction/upp.dmi index 68919a4b9db4..669efcfc59c4 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_faction/upp.dmi and b/icons/obj/items/weapons/guns/guns_by_faction/upp.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi b/icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi index 8576612c13b2..4ecb121a7feb 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi and b/icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_faction/wy.dmi b/icons/obj/items/weapons/guns/guns_by_faction/wy.dmi index 46ce2b74ba68..44eb7e3543c9 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_faction/wy.dmi and b/icons/obj/items/weapons/guns/guns_by_faction/wy.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/classic/back.dmi b/icons/obj/items/weapons/guns/guns_by_map/classic/back.dmi index 9ca0704b6f46..fb21be90f8a7 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/classic/back.dmi and b/icons/obj/items/weapons/guns/guns_by_map/classic/back.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/classic/guns_lefthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/classic/guns_lefthand.dmi index d89a862cb7c3..df823405fac3 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/classic/guns_lefthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/classic/guns_lefthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/classic/guns_obj.dmi b/icons/obj/items/weapons/guns/guns_by_map/classic/guns_obj.dmi index 3f1b8385390e..4a31d29042d4 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/classic/guns_obj.dmi and b/icons/obj/items/weapons/guns/guns_by_map/classic/guns_obj.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/classic/guns_righthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/classic/guns_righthand.dmi index b5aaba3e9431..21d7b04f6f05 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/classic/guns_righthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/classic/guns_righthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/classic/suit_slot.dmi b/icons/obj/items/weapons/guns/guns_by_map/classic/suit_slot.dmi index 1306cbb7d8f6..0d3b1f715571 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/classic/suit_slot.dmi and b/icons/obj/items/weapons/guns/guns_by_map/classic/suit_slot.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/desert/back.dmi b/icons/obj/items/weapons/guns/guns_by_map/desert/back.dmi index b06e4bcd63e9..9e5e8d4c9c59 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/desert/back.dmi and b/icons/obj/items/weapons/guns/guns_by_map/desert/back.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/desert/guns_lefthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/desert/guns_lefthand.dmi index b498fba1e8c1..02021756a805 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/desert/guns_lefthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/desert/guns_lefthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/desert/guns_obj.dmi b/icons/obj/items/weapons/guns/guns_by_map/desert/guns_obj.dmi index f9e1d720098c..a91d071754ad 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/desert/guns_obj.dmi and b/icons/obj/items/weapons/guns/guns_by_map/desert/guns_obj.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/desert/guns_righthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/desert/guns_righthand.dmi index 4fe8f9cd3939..e408fff750da 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/desert/guns_righthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/desert/guns_righthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/desert/suit_slot.dmi b/icons/obj/items/weapons/guns/guns_by_map/desert/suit_slot.dmi index 2f5324fdb46b..764a51e8b390 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/desert/suit_slot.dmi and b/icons/obj/items/weapons/guns/guns_by_map/desert/suit_slot.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/jungle/back.dmi b/icons/obj/items/weapons/guns/guns_by_map/jungle/back.dmi index 7d4f0a5db658..5cc73c3e9ec5 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/jungle/back.dmi and b/icons/obj/items/weapons/guns/guns_by_map/jungle/back.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_lefthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_lefthand.dmi index 486d5a3d73b0..25f8b823289c 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_lefthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_lefthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_obj.dmi b/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_obj.dmi index 479b0b9d39f2..c5b3b3f3fe73 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_obj.dmi and b/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_obj.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_righthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_righthand.dmi index c30fb58093bb..9c2562d5a921 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_righthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_righthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/jungle/suit_slot.dmi b/icons/obj/items/weapons/guns/guns_by_map/jungle/suit_slot.dmi index b51ed6044347..0aa7f686a749 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/jungle/suit_slot.dmi and b/icons/obj/items/weapons/guns/guns_by_map/jungle/suit_slot.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/snow/back.dmi b/icons/obj/items/weapons/guns/guns_by_map/snow/back.dmi index a9a1f0c3b1b7..8ad5352cc440 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/snow/back.dmi and b/icons/obj/items/weapons/guns/guns_by_map/snow/back.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/snow/guns_lefthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/snow/guns_lefthand.dmi index ee677a66bc20..a837e7061417 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/snow/guns_lefthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/snow/guns_lefthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/snow/guns_obj.dmi b/icons/obj/items/weapons/guns/guns_by_map/snow/guns_obj.dmi index 801a03dbcfcd..171d0d0eca03 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/snow/guns_obj.dmi and b/icons/obj/items/weapons/guns/guns_by_map/snow/guns_obj.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/snow/guns_righthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/snow/guns_righthand.dmi index 0af69fa8a9d6..1de053b6f969 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/snow/guns_righthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/snow/guns_righthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/urban/back.dmi b/icons/obj/items/weapons/guns/guns_by_map/urban/back.dmi index 0a9f43029891..5996089a64d6 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/urban/back.dmi and b/icons/obj/items/weapons/guns/guns_by_map/urban/back.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/urban/guns_lefthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/urban/guns_lefthand.dmi index 2eece9a9ffc4..ea84f3e69e21 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/urban/guns_lefthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/urban/guns_lefthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/urban/guns_obj.dmi b/icons/obj/items/weapons/guns/guns_by_map/urban/guns_obj.dmi index 2899c72fa9a8..78e322e3db8b 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/urban/guns_obj.dmi and b/icons/obj/items/weapons/guns/guns_by_map/urban/guns_obj.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/urban/guns_righthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/urban/guns_righthand.dmi index 1950b50114db..1b2c96fb9518 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/urban/guns_righthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/urban/guns_righthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/urban/suit_slot.dmi b/icons/obj/items/weapons/guns/guns_by_map/urban/suit_slot.dmi index 3fee1087811a..738add8e1df4 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/urban/suit_slot.dmi and b/icons/obj/items/weapons/guns/guns_by_map/urban/suit_slot.dmi differ diff --git a/icons/obj/items/weapons/guns/handful.dmi b/icons/obj/items/weapons/guns/handful.dmi index 7d717db608c4..e3fe380c9dfe 100644 Binary files a/icons/obj/items/weapons/guns/handful.dmi and b/icons/obj/items/weapons/guns/handful.dmi differ diff --git a/icons/obj/items/weapons/guns/legacy/old_bayguns.dmi b/icons/obj/items/weapons/guns/legacy/old_bayguns.dmi index d1bdb7d3b0c9..568bfd0ee456 100644 Binary files a/icons/obj/items/weapons/guns/legacy/old_bayguns.dmi and b/icons/obj/items/weapons/guns/legacy/old_bayguns.dmi differ diff --git a/icons/obj/items/weapons/guns/legacy/old_cmguns.dmi b/icons/obj/items/weapons/guns/legacy/old_cmguns.dmi index bf67ed68502c..0c416b3605e4 100644 Binary files a/icons/obj/items/weapons/guns/legacy/old_cmguns.dmi and b/icons/obj/items/weapons/guns/legacy/old_cmguns.dmi differ diff --git a/icons/obj/items/weapons/guns/lineart.dmi b/icons/obj/items/weapons/guns/lineart.dmi index 5d52fd658290..212b3988fc02 100644 Binary files a/icons/obj/items/weapons/guns/lineart.dmi and b/icons/obj/items/weapons/guns/lineart.dmi differ diff --git a/icons/obj/items/weapons/guns/lineart_modes.dmi b/icons/obj/items/weapons/guns/lineart_modes.dmi new file mode 100644 index 000000000000..787fdd34f241 Binary files /dev/null and b/icons/obj/items/weapons/guns/lineart_modes.dmi differ diff --git a/icons/obj/items/weapons/projectiles.dmi b/icons/obj/items/weapons/projectiles.dmi index 720ea1e61f2d..c3aa143def9b 100644 Binary files a/icons/obj/items/weapons/projectiles.dmi and b/icons/obj/items/weapons/projectiles.dmi differ diff --git a/icons/obj/items/weapons/weapons.dmi b/icons/obj/items/weapons/weapons.dmi index 41a1f9981976..aa99545cb577 100644 Binary files a/icons/obj/items/weapons/weapons.dmi and b/icons/obj/items/weapons/weapons.dmi differ diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi index 3c18f1a60f4b..5989745e26eb 100644 Binary files a/icons/obj/janitor.dmi and b/icons/obj/janitor.dmi differ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 08a5c5fa8ef1..b62860559b16 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ diff --git a/icons/obj/structures/closet.dmi b/icons/obj/structures/closet.dmi index 40d6b1d26deb..e0e50ab9ae09 100644 Binary files a/icons/obj/structures/closet.dmi and b/icons/obj/structures/closet.dmi differ diff --git a/icons/obj/structures/crates.dmi b/icons/obj/structures/crates.dmi index 5fab82b5185d..07ccce5f0abb 100644 Binary files a/icons/obj/structures/crates.dmi and b/icons/obj/structures/crates.dmi differ diff --git a/icons/obj/structures/doors/2x1generic_solid.dmi b/icons/obj/structures/doors/2x1generic_solid.dmi new file mode 100644 index 000000000000..9c00b7b3277d Binary files /dev/null and b/icons/obj/structures/doors/2x1generic_solid.dmi differ diff --git a/icons/obj/structures/doors/airlock_assembly2x1.dmi b/icons/obj/structures/doors/airlock_assembly2x1.dmi index a8d69b6f6a2d..cafd5c415b89 100644 Binary files a/icons/obj/structures/doors/airlock_assembly2x1.dmi and b/icons/obj/structures/doors/airlock_assembly2x1.dmi differ diff --git a/icons/obj/structures/doors/blastdoors_shutters.dmi b/icons/obj/structures/doors/blastdoors_shutters.dmi index 0c91c00f0f79..c5ec97be49b8 100644 Binary files a/icons/obj/structures/doors/blastdoors_shutters.dmi and b/icons/obj/structures/doors/blastdoors_shutters.dmi differ diff --git a/icons/obj/structures/doors/dropship1_side2.dmi b/icons/obj/structures/doors/dropship1_side2.dmi new file mode 100644 index 000000000000..f2d96e59af5a Binary files /dev/null and b/icons/obj/structures/doors/dropship1_side2.dmi differ diff --git a/icons/obj/structures/doors/dropship2_side2.dmi b/icons/obj/structures/doors/dropship2_side2.dmi new file mode 100644 index 000000000000..bff39827c359 Binary files /dev/null and b/icons/obj/structures/doors/dropship2_side2.dmi differ diff --git a/icons/obj/structures/doors/mineral_doors.dmi b/icons/obj/structures/doors/mineral_doors.dmi index 1613f466d523..f9e025ccf0e9 100644 Binary files a/icons/obj/structures/doors/mineral_doors.dmi and b/icons/obj/structures/doors/mineral_doors.dmi differ diff --git a/icons/obj/structures/doors/prison_FOP/prison_hatches.dmi b/icons/obj/structures/doors/prison_FOP/prison_hatches.dmi index 489d2333f2a6..23864a1065d1 100644 Binary files a/icons/obj/structures/doors/prison_FOP/prison_hatches.dmi and b/icons/obj/structures/doors/prison_FOP/prison_hatches.dmi differ diff --git a/icons/obj/structures/machinery/ares.dmi b/icons/obj/structures/machinery/ares.dmi new file mode 100644 index 000000000000..77dd304310f6 Binary files /dev/null and b/icons/obj/structures/machinery/ares.dmi differ diff --git a/icons/obj/structures/machinery/comm_tower3.dmi b/icons/obj/structures/machinery/comm_tower3.dmi index 931d6f77514a..8a5aa1f68fe3 100644 Binary files a/icons/obj/structures/machinery/comm_tower3.dmi and b/icons/obj/structures/machinery/comm_tower3.dmi differ diff --git a/icons/obj/structures/machinery/computer3.dmi b/icons/obj/structures/machinery/computer3.dmi index 4735cfc5a1a4..047417f303f3 100644 Binary files a/icons/obj/structures/machinery/computer3.dmi and b/icons/obj/structures/machinery/computer3.dmi differ diff --git a/icons/obj/structures/machinery/cryogenics.dmi b/icons/obj/structures/machinery/cryogenics.dmi index b2c5d2e0c5ce..dc061195583f 100644 Binary files a/icons/obj/structures/machinery/cryogenics.dmi and b/icons/obj/structures/machinery/cryogenics.dmi differ diff --git a/icons/obj/structures/machinery/defenses/planted_flag.dmi b/icons/obj/structures/machinery/defenses/planted_flag.dmi index 40616eb0caca..5b9fbb6e6f22 100644 Binary files a/icons/obj/structures/machinery/defenses/planted_flag.dmi and b/icons/obj/structures/machinery/defenses/planted_flag.dmi differ diff --git a/icons/obj/structures/machinery/floodlight.dmi b/icons/obj/structures/machinery/floodlight.dmi index 7330d1749ab7..1f6b3b3d6d4c 100644 Binary files a/icons/obj/structures/machinery/floodlight.dmi and b/icons/obj/structures/machinery/floodlight.dmi differ diff --git a/icons/obj/structures/machinery/fusion_eng.dmi b/icons/obj/structures/machinery/fusion_eng.dmi index 038fae342b64..4d42baac7255 100644 Binary files a/icons/obj/structures/machinery/fusion_eng.dmi and b/icons/obj/structures/machinery/fusion_eng.dmi differ diff --git a/icons/obj/structures/machinery/shuttle-parts.dmi b/icons/obj/structures/machinery/shuttle-parts.dmi index 1ec8a07e6b3f..7db27387e7c1 100644 Binary files a/icons/obj/structures/machinery/shuttle-parts.dmi and b/icons/obj/structures/machinery/shuttle-parts.dmi differ diff --git a/icons/obj/structures/machinery/vending.dmi b/icons/obj/structures/machinery/vending.dmi index ecc570680a74..3098aadca8be 100644 Binary files a/icons/obj/structures/machinery/vending.dmi and b/icons/obj/structures/machinery/vending.dmi differ diff --git a/icons/obj/structures/props/dam.dmi b/icons/obj/structures/props/dam.dmi index 3541b2412e13..76f67514c2ea 100644 Binary files a/icons/obj/structures/props/dam.dmi and b/icons/obj/structures/props/dam.dmi differ diff --git a/icons/obj/structures/props/fence.dmi b/icons/obj/structures/props/fence.dmi index 9ed9d1f7fc20..016aab562777 100644 Binary files a/icons/obj/structures/props/fence.dmi and b/icons/obj/structures/props/fence.dmi differ diff --git a/icons/obj/structures/props/props.dmi b/icons/obj/structures/props/props.dmi index bd22e985b2ae..57485feeaecc 100644 Binary files a/icons/obj/structures/props/props.dmi and b/icons/obj/structures/props/props.dmi differ diff --git a/icons/obj/structures/props/rocks.dmi b/icons/obj/structures/props/rocks.dmi index e494bdcba2f8..71ea709c771f 100644 Binary files a/icons/obj/structures/props/rocks.dmi and b/icons/obj/structures/props/rocks.dmi differ diff --git a/icons/obj/structures/props/stationobjs.dmi b/icons/obj/structures/props/stationobjs.dmi index 66c396f41d12..09868e92fd88 100644 Binary files a/icons/obj/structures/props/stationobjs.dmi and b/icons/obj/structures/props/stationobjs.dmi differ diff --git a/icons/obj/structures/stairs/perspective_stairs_ice.dmi b/icons/obj/structures/stairs/perspective_stairs_ice.dmi index 8f5bf6935d7b..3311adfc11dd 100644 Binary files a/icons/obj/structures/stairs/perspective_stairs_ice.dmi and b/icons/obj/structures/stairs/perspective_stairs_ice.dmi differ diff --git a/icons/obj/structures/stairs/perspective_stairs_kutjevo.dmi b/icons/obj/structures/stairs/perspective_stairs_kutjevo.dmi index 86a2cfde6339..f9c759a32d12 100644 Binary files a/icons/obj/structures/stairs/perspective_stairs_kutjevo.dmi and b/icons/obj/structures/stairs/perspective_stairs_kutjevo.dmi differ diff --git a/icons/obj/structures/structures.dmi b/icons/obj/structures/structures.dmi index 21567936aad0..d96329839a7b 100644 Binary files a/icons/obj/structures/structures.dmi and b/icons/obj/structures/structures.dmi differ diff --git a/icons/obj/structures/tents_folded.dmi b/icons/obj/structures/tents_folded.dmi index e9f4555ae6a1..e93702d7b2f9 100644 Binary files a/icons/obj/structures/tents_folded.dmi and b/icons/obj/structures/tents_folded.dmi differ diff --git a/icons/obj/vehicles/twe_tank.dmi b/icons/obj/vehicles/twe_tank.dmi new file mode 100644 index 000000000000..95f9c857148d Binary files /dev/null and b/icons/obj/vehicles/twe_tank.dmi differ diff --git a/icons/old_stuff/Seasonal/xmas.dmi b/icons/old_stuff/Seasonal/xmas.dmi index 8dd25fd4b6d4..9669a6034b9c 100644 Binary files a/icons/old_stuff/Seasonal/xmas.dmi and b/icons/old_stuff/Seasonal/xmas.dmi differ diff --git a/icons/ooc.dmi b/icons/ooc.dmi new file mode 100644 index 000000000000..8b15b1e49239 Binary files /dev/null and b/icons/ooc.dmi differ diff --git a/icons/rebase_icons.dmi b/icons/rebase_icons.dmi index aaf92453b29a..3d9234f3f9f9 100644 Binary files a/icons/rebase_icons.dmi and b/icons/rebase_icons.dmi differ diff --git a/icons/turf/almayer.dmi b/icons/turf/almayer.dmi index a90940470acf..07f771ec78c7 100644 Binary files a/icons/turf/almayer.dmi and b/icons/turf/almayer.dmi differ diff --git a/icons/turf/area_strata.dmi b/icons/turf/area_strata.dmi index 54b90d0a8f92..8c9791522989 100644 Binary files a/icons/turf/area_strata.dmi and b/icons/turf/area_strata.dmi differ diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index 8b525fd568d6..c8bf32b00b40 100644 Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ diff --git a/icons/turf/areas_interiors.dmi b/icons/turf/areas_interiors.dmi index 4da1109803a8..47a95da322ea 100644 Binary files a/icons/turf/areas_interiors.dmi and b/icons/turf/areas_interiors.dmi differ diff --git a/icons/turf/ert_shuttle.dmi b/icons/turf/ert_shuttle.dmi index 2a9627a77094..befed9f547b7 100644 Binary files a/icons/turf/ert_shuttle.dmi and b/icons/turf/ert_shuttle.dmi differ diff --git a/icons/turf/floors/asphalt.dmi b/icons/turf/floors/asphalt.dmi index ef4f07d5f374..57b807b1c3f4 100644 Binary files a/icons/turf/floors/asphalt.dmi and b/icons/turf/floors/asphalt.dmi differ diff --git a/icons/turf/floors/concrete.dmi b/icons/turf/floors/concrete.dmi index d3aa3a1fa7ee..54d7dd3aaaef 100644 Binary files a/icons/turf/floors/concrete.dmi and b/icons/turf/floors/concrete.dmi differ diff --git a/icons/turf/floors/desert_dirt.dmi b/icons/turf/floors/desert_dirt.dmi index e153917e708a..ed6c57cc1809 100644 Binary files a/icons/turf/floors/desert_dirt.dmi and b/icons/turf/floors/desert_dirt.dmi differ diff --git a/icons/turf/floors/desert_rock.dmi b/icons/turf/floors/desert_rock.dmi index 8cbd01e3cec1..79a33d83257f 100644 Binary files a/icons/turf/floors/desert_rock.dmi and b/icons/turf/floors/desert_rock.dmi differ diff --git a/icons/turf/floors/floors.dmi b/icons/turf/floors/floors.dmi index 681ffa537aa4..7b68cbb2b6b2 100644 Binary files a/icons/turf/floors/floors.dmi and b/icons/turf/floors/floors.dmi differ diff --git a/icons/turf/twedropship.dmi b/icons/turf/twedropship.dmi new file mode 100644 index 000000000000..934d3892b307 Binary files /dev/null and b/icons/turf/twedropship.dmi differ diff --git a/icons/turf/walls/almayer.dmi b/icons/turf/walls/almayer.dmi index 2cb182c60318..671dcc1fbd94 100644 Binary files a/icons/turf/walls/almayer.dmi and b/icons/turf/walls/almayer.dmi differ diff --git a/icons/turf/walls/bunker.dmi b/icons/turf/walls/bunker.dmi index 6f7537e20f7c..d9d4f8a080cb 100644 Binary files a/icons/turf/walls/bunker.dmi and b/icons/turf/walls/bunker.dmi differ diff --git a/icons/turf/walls/dev/dev.dmi b/icons/turf/walls/dev/dev.dmi index 0c6025876b2e..4a1eaf6f7b6a 100644 Binary files a/icons/turf/walls/dev/dev.dmi and b/icons/turf/walls/dev/dev.dmi differ diff --git a/icons/turf/walls/floodgate.dmi b/icons/turf/walls/floodgate.dmi index 5b3f00abb597..f67e5a7a3fcc 100644 Binary files a/icons/turf/walls/floodgate.dmi and b/icons/turf/walls/floodgate.dmi differ diff --git a/icons/turf/walls/kutjevo/kutjevo.dmi b/icons/turf/walls/kutjevo/kutjevo.dmi index 5c8c0053e1bf..3aba82409af6 100644 Binary files a/icons/turf/walls/kutjevo/kutjevo.dmi and b/icons/turf/walls/kutjevo/kutjevo.dmi differ diff --git a/icons/turf/walls/solaris/solaris.dmi b/icons/turf/walls/solaris/solaris.dmi index 85d5c118a901..96865710abd7 100644 Binary files a/icons/turf/walls/solaris/solaris.dmi and b/icons/turf/walls/solaris/solaris.dmi differ diff --git a/icons/turf/walls/solaris/solaris_old.dmi b/icons/turf/walls/solaris/solaris_old.dmi index 59846bf0ad1c..2aca7b187508 100644 Binary files a/icons/turf/walls/solaris/solaris_old.dmi and b/icons/turf/walls/solaris/solaris_old.dmi differ diff --git a/icons/turf/walls/strata_outpost.dmi b/icons/turf/walls/strata_outpost.dmi index 36e20bdd176a..6043f7c32d8d 100644 Binary files a/icons/turf/walls/strata_outpost.dmi and b/icons/turf/walls/strata_outpost.dmi differ diff --git a/icons/turf/walls/windows.dmi b/icons/turf/walls/windows.dmi index b1b7c7ebfbe9..a3f2fd1d4198 100644 Binary files a/icons/turf/walls/windows.dmi and b/icons/turf/walls/windows.dmi differ diff --git a/icons/ui_icons/map_blips.dmi b/icons/ui_icons/map_blips.dmi index 85ef9959027f..28195bb238fe 100644 Binary files a/icons/ui_icons/map_blips.dmi and b/icons/ui_icons/map_blips.dmi differ diff --git a/interface/interface.dm b/interface/interface.dm index 70b95a23b632..c9112160d94f 100644 --- a/interface/interface.dm +++ b/interface/interface.dm @@ -55,7 +55,7 @@ if(tgui_alert(src, "This will open the discord in your browser. Are you sure?", "Confirm", list("Yes", "No")) != "Yes") return - src << link("https://discord.gg/cmss13") + src << link("[CONFIG_GET(string/discordurl)]") return /client/verb/submitbug() @@ -69,14 +69,14 @@ if(tgui_alert(src, "This will open the GitHub in your browser. Are you sure?", "Confirm", list("Yes", "No")) != "Yes") return - src << link(URL_ISSUE_TRACKER) + src << link(CONFIG_GET(string/githuburl)) return /client/verb/set_fps() set name = "Set FPS" set desc = "Set client FPS. 20 is the default" set category = "Preferences" - var/fps = tgui_input_number(usr,"New FPS Value. 0 is server-sync. Higher values cause more desync. Values over 30 not recommended.","Set FPS", 0, MAX_FPS, MIN_FPS) + var/fps = tgui_input_number(usr,"New FPS Value. 0 is server-sync. Higher values cause more desync.","Set FPS", 0, MAX_FPS, MIN_FPS) if(world.byond_version >= 511 && byond_version >= 511 && fps >= MIN_FPS && fps <= MAX_FPS) vars["fps"] = fps prefs.fps = fps diff --git a/interface/skin.dmf b/interface/skin.dmf index 5d06bb40e858..e31c42938cd9 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -164,7 +164,6 @@ window "mainwindow" anchor2 = -1,-1 is-default = true saved-params = "pos;size;is-minimized;is-maximized" - title = "CM-SS13 - USS Almayer" is-maximized = true statusbar = false icon = 'icons\\taskbar\\gml_distress.png' diff --git a/librust_g.so b/librust_g.so index 49a86aad89b7..56625573d004 100644 Binary files a/librust_g.so and b/librust_g.so differ diff --git a/map_config/maps.txt b/map_config/maps.txt index 38a73946cf8b..885b1e76faad 100644 --- a/map_config/maps.txt +++ b/map_config/maps.txt @@ -58,7 +58,6 @@ map lv522_chances_claim endmap map new_varadero - disabled endmap map whiskey_outpost_v2 diff --git a/maps/Nightmare/maps/DesertDam/nightmare.json b/maps/Nightmare/maps/DesertDam/nightmare.json index e1b1e5123ac0..75a4a605556f 100644 --- a/maps/Nightmare/maps/DesertDam/nightmare.json +++ b/maps/Nightmare/maps/DesertDam/nightmare.json @@ -1,9 +1,23 @@ [ { "type": "pick", "choices": [ { "type": "map_insert", "landmark": "green-new-bridge", "path": "greenriver/newbridge.dmm" } - ], "chance": 0.5 }, + ], "chance": 0.0 }, { "type": "pick", "choices": [ { "weight": 2, "type": "map_insert", "landmark": "purple-new-bridge", "path": "purpleriver/newbridge.dmm" } - ], "chance": 0.6 }, - { "type": "map_sprinkle", "path": "sprinkles/" } + ], "chance": 0.0 }, + { "type": "map_sprinkle", "path": "sprinkles/" }, + { + "type": "map_insert", + "landmark": "uppcrash", + "chance": 1.0, + "path": "standalone/crashlanding-upp-bar.dmm", + "when": { "lvevent": "uppcrash" } + }, + { + "type": "map_insert", + "landmark": "uppcrash-supply", + "chance": 1.0, + "path": "standalone/crashlanding-upp-alt1.dmm", + "when": { "lvevent": "uppcrash" } + } ] diff --git a/maps/Nightmare/maps/DesertDam/scenario.json b/maps/Nightmare/maps/DesertDam/scenario.json index fe51488c7066..bacb95e27c25 100644 --- a/maps/Nightmare/maps/DesertDam/scenario.json +++ b/maps/Nightmare/maps/DesertDam/scenario.json @@ -1 +1,9 @@ -[] +[ + { + "type": "pick", "name": "uppcrash", + "choices": [ + { "weight": 10, "type": "def", "values": { "lvevent": "none" } }, + { "weight": 4, "type": "def", "values": { "lvevent": "uppcrash" } } + ] + } +] diff --git a/maps/bigredv2.json b/maps/bigredv2.json index ecb2e1472c57..996d0d44422d 100644 --- a/maps/bigredv2.json +++ b/maps/bigredv2.json @@ -11,7 +11,10 @@ "/datum/equipment_preset/survivor/engineer/solaris", "/datum/equipment_preset/survivor/trucker/solaris", "/datum/equipment_preset/survivor/security/solaris", + "/datum/equipment_preset/survivor/uscm/solaris", "/datum/equipment_preset/survivor/colonial_marshal/solaris", + "/datum/equipment_preset/survivor/corporate/solaris", + "/datum/equipment_preset/survivor/flight_control_operator", "/datum/equipment_preset/survivor/clf", "/datum/equipment_preset/survivor/civilian" ], @@ -23,7 +26,7 @@ 0.0 ], "map_item_type": "/obj/item/map/big_red_map", - "announce_text": "We've lost contact with Weyland-Yutani's research facility, Solaris Ridge. The ###SHIPNAME### has been dispatched to assist.", + "announce_text": "Weyland-Yutani has lost contact with one of its Biological Storage Facilities, Solaris Ridge, on the planet of LV-1413. The ###SHIPNAME### has been requested to look into the blackout by Weyland-Yutani.", "monkey_types": [ "neaera" ], diff --git a/maps/corsat.json b/maps/corsat.json index e8192644054a..87a41e840d61 100644 --- a/maps/corsat.json +++ b/maps/corsat.json @@ -4,7 +4,8 @@ "map_file": "Corsat.dmm", "environment_traits": { "Lockdown": true, - "COLD": true + "COLD": true, + "InSpace": true }, "survivor_types": [ "/datum/equipment_preset/survivor/scientist/corsat", @@ -12,7 +13,7 @@ "/datum/equipment_preset/survivor/goon", "/datum/equipment_preset/survivor/doctor/corsat", "/datum/equipment_preset/survivor/security/corsat", - "/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/corsat", + "/datum/equipment_preset/survivor/interstellar_commerce_commission_liaison/corsat", "/datum/equipment_preset/survivor/engineer/corsat", "/datum/equipment_preset/survivor/clf", "/datum/equipment_preset/survivor/civilian" diff --git a/maps/desert_dam.json b/maps/desert_dam.json index b4e535e893d6..b5717af450cc 100644 --- a/maps/desert_dam.json +++ b/maps/desert_dam.json @@ -5,10 +5,11 @@ "webmap_url": "Trijent", "survivor_types": [ "/datum/equipment_preset/survivor/doctor/trijent", + "/datum/equipment_preset/survivor/scientist/trijent", "/datum/equipment_preset/survivor/roughneck", "/datum/equipment_preset/survivor/chaplain/trijent", - "/datum/equipment_preset/survivor/interstellar_commerce_commission_liason", - "/datum/equipment_preset/survivor/colonial_marshal", + "/datum/equipment_preset/survivor/interstellar_commerce_commission_liaison", + "/datum/equipment_preset/survivor/colonial_marshal/trijent", "/datum/equipment_preset/survivor/engineer/trijent", "/datum/equipment_preset/survivor/engineer/trijent/hydro", "/datum/equipment_preset/survivor/trucker/trijent", diff --git a/maps/fiorina_sciannex.json b/maps/fiorina_sciannex.json index dfc73655414d..61212c433be0 100644 --- a/maps/fiorina_sciannex.json +++ b/maps/fiorina_sciannex.json @@ -4,15 +4,15 @@ "map_file": "Fiorina_SciAnnex.dmm", "webmap_url": "Fiorina", "survivor_types": [ - "/datum/equipment_preset/survivor/scientist/florina", - "/datum/equipment_preset/survivor/doctor/florina", + "/datum/equipment_preset/survivor/scientist/fiorina", + "/datum/equipment_preset/survivor/doctor/fiorina", "/datum/equipment_preset/survivor/interstellar_human_rights_observer", - "/datum/equipment_preset/survivor/security/florina", - "/datum/equipment_preset/survivor/colonial_marshal/florina", + "/datum/equipment_preset/survivor/security/fiorina", + "/datum/equipment_preset/survivor/colonial_marshal/fiorina", "/datum/equipment_preset/survivor/prisoner", "/datum/equipment_preset/survivor/prisoner", "/datum/equipment_preset/survivor/gangleader", - "/datum/equipment_preset/survivor/engineer/florina", + "/datum/equipment_preset/survivor/engineer/fiorina", "/datum/equipment_preset/survivor/clf", "/datum/equipment_preset/survivor/civilian" ], @@ -26,6 +26,7 @@ "survivor_message": "You are a survivor of the attack on Fiorina Orbital Penitentiary. You worked or lived on the prison station, and managed to avoid the alien attacks... until now.", "map_item_type": "/obj/item/map/FOP_map_v3", "announce_text": "An automated distress signal has been received from maximum-security prison \"Fiorina Orbital Penitentiary\". A response team from the ###SHIPNAME### will be dispatched shortly to investigate.", + "environment_traits": { "InSpace": true }, "traits": [{ "Ground": true }], "nightmare_path": "maps/Nightmare/maps/FOP_v3_Sciannex/", "xvx_hives": { diff --git a/maps/interiors/apc.dmm b/maps/interiors/apc.dmm index 82ca4649acd6..2684ad8f0f75 100644 --- a/maps/interiors/apc.dmm +++ b/maps/interiors/apc.dmm @@ -17,7 +17,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "c" = ( /obj/structure/bed/chair/vehicle{ dir = 1; @@ -35,7 +35,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_5" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "d" = ( /obj/structure/bed/chair/vehicle{ dir = 1; @@ -48,7 +48,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_8_1" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "e" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_1" @@ -65,7 +65,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_12" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "g" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_small_R" @@ -86,7 +86,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_0_1_15" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "j" = ( /turf/open/void/vehicle, /area/space) @@ -112,7 +112,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_9_1" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "n" = ( /obj/structure/interior_wall/apc{ icon_state = "front_2" @@ -155,7 +155,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "t" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_3" @@ -167,7 +167,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_6" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "v" = ( /obj/structure/bed/chair/vehicle{ pixel_x = 8 @@ -183,7 +183,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_9_1" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "w" = ( /obj/effect/landmark/interior/spawn/entrance{ alpha = 50; @@ -201,7 +201,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_11" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "y" = ( /obj/structure/interior_wall/apc{ icon_state = "front_6" @@ -212,12 +212,12 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_5" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "A" = ( /turf/open/shuttle/vehicle{ icon_state = "floor_1_6" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "B" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_inverse_R"; @@ -236,7 +236,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_11" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "D" = ( /obj/structure/interior_wall/apc{ icon_state = "wall"; @@ -274,7 +274,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "H" = ( /obj/structure/bed/chair/vehicle{ pixel_x = -8 @@ -294,7 +294,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "I" = ( /obj/effect/landmark/interior/spawn/vehicle_support_gunner_seat{ dir = 1 @@ -307,7 +307,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_11" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "J" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_small_L"; @@ -324,7 +324,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_14" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "L" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_small_L" @@ -364,7 +364,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_1_3" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "S" = ( /obj/structure/interior_wall/apc{ alpha = 100; @@ -402,7 +402,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "V" = ( /obj/structure/interior_wall/apc{ icon_state = "wall" @@ -420,7 +420,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_8_1" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "X" = ( /obj/structure/interior_wall/apc{ icon_state = "front_wheel_R" @@ -442,7 +442,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_12" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "Z" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_4" diff --git a/maps/interiors/apc_command.dmm b/maps/interiors/apc_command.dmm index 0da5353a6d6a..d6f7485339fc 100644 --- a/maps/interiors/apc_command.dmm +++ b/maps/interiors/apc_command.dmm @@ -10,7 +10,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_10_1" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "c" = ( /obj/structure/bed/chair/vehicle{ dir = 1; @@ -23,7 +23,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_5" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "d" = ( /obj/structure/bed/chair/vehicle{ dir = 1; @@ -36,7 +36,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_8_1" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "e" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_1" @@ -56,7 +56,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_12" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "h" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_wheel_R"; @@ -79,7 +79,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "k" = ( /turf/open/void/vehicle, /area/space) @@ -123,7 +123,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_7_1" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "p" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_6" @@ -140,12 +140,12 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_8_1" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "r" = ( /turf/open/shuttle/vehicle{ icon_state = "floor_1_6" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "s" = ( /obj/structure/machinery/prop/almayer/CICmap{ indestructible = 1; @@ -155,7 +155,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_6" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "t" = ( /obj/structure/interior_wall/apc{ icon_state = "wheel_back_top_1"; @@ -168,7 +168,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_5" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "v" = ( /obj/structure/interior_wall/apc{ icon_state = "front_3" @@ -194,7 +194,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_5" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "x" = ( /obj/effect/landmark/interior/spawn/vehicle_driver_seat/armor{ dir = 4 @@ -202,12 +202,12 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_9_1" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "y" = ( /turf/open/shuttle/vehicle{ icon_state = "floor_1_14" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "z" = ( /obj/structure/interior_wall/apc{ alpha = 100; @@ -234,7 +234,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_11" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "C" = ( /obj/structure/interior_wall/apc{ icon_state = "front_1" @@ -252,7 +252,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_0_1_15" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "F" = ( /obj/structure/bed/chair/vehicle{ dir = 4 @@ -260,7 +260,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_11" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "G" = ( /obj/effect/landmark/interior/spawn/entrance{ alpha = 50; @@ -276,17 +276,17 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_12" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "H" = ( /turf/open/shuttle/vehicle{ icon_state = "floor_1_13" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "I" = ( /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "J" = ( /obj/structure/interior_wall/apc{ icon_state = "wall" @@ -314,7 +314,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_9_1" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "M" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_small_R"; @@ -415,7 +415,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_6" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) (1,1,1) = {" p diff --git a/maps/interiors/apc_med.dmm b/maps/interiors/apc_med.dmm index f4da99a6fe50..0f47b029c20f 100644 --- a/maps/interiors/apc_med.dmm +++ b/maps/interiors/apc_med.dmm @@ -14,7 +14,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile_green_11" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "c" = ( /obj/effect/decal/medical_decals/permanent{ icon_state = "docdecal2"; @@ -27,7 +27,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile_green_5" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "d" = ( /obj/effect/decal/medical_decals/permanent{ icon_state = "triagedecalbottom" @@ -38,7 +38,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile_green_14" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "e" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_1" @@ -70,7 +70,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "j" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_6" @@ -105,7 +105,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile_green_7" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "n" = ( /obj/structure/interior_wall/apc{ icon_state = "wheel_back_top_1"; @@ -179,7 +179,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile_green_8" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "x" = ( /obj/structure/interior_wall/apc{ icon_state = "wall"; @@ -204,7 +204,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_11" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "z" = ( /obj/structure/interior_wall/apc{ icon_state = "wheel_front_top_1"; @@ -223,7 +223,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "B" = ( /obj/structure/machinery/iv_drip{ anchored = 1 @@ -236,7 +236,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile_green_12" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "C" = ( /obj/structure/interior_wall/apc{ icon_state = "front_wheel_L"; @@ -253,7 +253,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "E" = ( /obj/structure/vehicle_locker{ pixel_y = 28 @@ -264,7 +264,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_8_1" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "F" = ( /obj/structure/interior_wall/apc{ icon_state = "front_2" @@ -293,7 +293,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_9_1" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "J" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -301,7 +301,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile_green_6" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "K" = ( /obj/effect/landmark/interior/spawn/entrance{ alpha = 50; @@ -317,12 +317,12 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_12" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "L" = ( /turf/open/shuttle/vehicle{ icon_state = "floor_1_14" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "M" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_inverse_L"; @@ -355,7 +355,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile_green_13" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "P" = ( /obj/structure/interior_wall/apc{ icon_state = "door_back" @@ -366,13 +366,13 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_6" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "R" = ( /obj/effect/landmark/interior/spawn/weapons_loader, /turf/open/shuttle/vehicle{ icon_state = "floor_3_6" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "S" = ( /obj/structure/interior_wall/apc{ icon_state = "front_4" @@ -383,7 +383,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_3_3" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "U" = ( /obj/structure/interior_wall/apc{ icon_state = "front_1" @@ -402,7 +402,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "W" = ( /obj/structure/bed/chair/vehicle{ pixel_x = -8 @@ -422,7 +422,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "Y" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_4" diff --git a/maps/interiors/apc_no_fpw.dmm b/maps/interiors/apc_no_fpw.dmm index 6a08e69959ec..e463b7a5ff1e 100644 --- a/maps/interiors/apc_no_fpw.dmm +++ b/maps/interiors/apc_no_fpw.dmm @@ -6,7 +6,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_6" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "c" = ( /obj/structure/bed/chair/vehicle{ dir = 4 @@ -14,7 +14,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_12" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "d" = ( /obj/effect/landmark/interior/spawn/entrance{ alpha = 50; @@ -29,7 +29,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_12" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "e" = ( /obj/structure/bed/chair/vehicle{ dir = 1; @@ -47,7 +47,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_5" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "f" = ( /obj/structure/interior_wall/apc{ icon_state = "front_2" @@ -70,7 +70,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_1_3" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "j" = ( /obj/effect/landmark/interior/spawn/entrance{ dir = 8; @@ -89,7 +89,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "k" = ( /obj/structure/interior_wall/apc{ icon_state = "wall"; @@ -108,7 +108,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_8_1" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "m" = ( /obj/structure/interior_wall/apc{ icon_state = "front_1" @@ -139,7 +139,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_8_1" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "r" = ( /obj/effect/landmark/interior/spawn/interior_viewport{ dir = 8; @@ -157,7 +157,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_11" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "s" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_2" @@ -179,7 +179,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_9_1" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "u" = ( /obj/structure/interior_wall/apc{ icon_state = "wheel_front_top_1"; @@ -208,7 +208,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_6" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "z" = ( /obj/effect/landmark/interior/spawn/entrance{ dir = 8; @@ -219,7 +219,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "A" = ( /obj/structure/interior_wall/apc{ icon_state = "wheel_back_top_1"; @@ -240,7 +240,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "C" = ( /obj/structure/bed/chair/vehicle{ dir = 4 @@ -248,7 +248,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_11" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "D" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_wheel_L" @@ -259,7 +259,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_5" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "F" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_small_R"; @@ -298,7 +298,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_11" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "J" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_inverse_R"; @@ -322,7 +322,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_0_1_15" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "M" = ( /obj/structure/interior_wall/apc{ icon_state = "front_wheel_L"; @@ -343,7 +343,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_9_1" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "P" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_small_L" @@ -385,7 +385,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_14" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "V" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_1" @@ -411,7 +411,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "X" = ( /obj/structure/interior_wall/apc{ icon_state = "wall_2"; @@ -446,7 +446,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) (1,1,1) = {" G diff --git a/maps/interiors/fancylocker.dmm b/maps/interiors/fancylocker.dmm index b26879d705f8..1b97bc73be62 100644 --- a/maps/interiors/fancylocker.dmm +++ b/maps/interiors/fancylocker.dmm @@ -1,96 +1,97 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/closed/wall/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "b" = ( /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "c" = ( /obj/effect/landmark/interior/spawn/entrance/step_toward{ dir = 8; - exit_type = /obj/structure/interior_exit/fancy + exit_type = /obj/structure/interior_exit/fancy; + tag = "fancy" }, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "d" = ( /turf/open/floor/carpet/edge{ dir = 9 }, -/area/vehicle/apc) +/area/interior/fancylocker) "e" = ( /turf/open/floor/carpet/edge{ dir = 1 }, -/area/vehicle/apc) +/area/interior/fancylocker) "f" = ( /turf/open/floor/carpet/edge{ dir = 5 }, -/area/vehicle/apc) +/area/interior/fancylocker) "g" = ( /turf/open/floor/carpet/edge{ dir = 8 }, -/area/vehicle/apc) +/area/interior/fancylocker) "h" = ( /obj/structure/bed/sofa/south/white/left, /turf/open/floor/carpet, -/area/vehicle/apc) +/area/interior/fancylocker) "i" = ( /obj/structure/bed/sofa/south/white, /turf/open/floor/carpet, -/area/vehicle/apc) +/area/interior/fancylocker) "j" = ( /obj/structure/bed/sofa/south/white/right, /turf/open/floor/carpet, -/area/vehicle/apc) +/area/interior/fancylocker) "k" = ( /turf/open/floor/carpet/edge{ dir = 4 }, -/area/vehicle/apc) +/area/interior/fancylocker) "l" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/device/flashlight/lamp/green, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "m" = ( /turf/open/floor/carpet/edge{ dir = 10 }, -/area/vehicle/apc) +/area/interior/fancylocker) "n" = ( /turf/open/floor/carpet/edge, -/area/vehicle/apc) +/area/interior/fancylocker) "o" = ( /turf/open/floor/carpet/edge{ dir = 6 }, -/area/vehicle/apc) +/area/interior/fancylocker) "p" = ( /obj/structure/surface/table/woodentable/fancy, /turf/open/floor/carpet, -/area/vehicle/apc) +/area/interior/fancylocker) "q" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_10" }, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "r" = ( /obj/structure/coatrack, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "s" = ( /obj/structure/surface/table/woodentable/fancy, /obj/structure/machinery/chem_dispenser/soda, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "t" = ( /obj/structure/surface/table/woodentable/fancy, -/obj/structure/machinery/chem_dispenser/beer, +/obj/structure/machinery/chem_dispenser/soda/beer, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "u" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/reagent_container/food/snacks/milosoup{ @@ -103,12 +104,12 @@ dir = 1 }, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "v" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/reagent_container/food/snacks/appletart, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "w" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/reagent_container/food/snacks/popcorn{ @@ -124,33 +125,33 @@ pixel_x = 5 }, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "x" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/ashtray/bronze, /turf/open/floor/carpet, -/area/vehicle/apc) +/area/interior/fancylocker) "y" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/clothing/mask/cigarette/cigar/cohiba, /obj/item/tool/lighter/zippo, /turf/open/floor/carpet, -/area/vehicle/apc) +/area/interior/fancylocker) "z" = ( /obj/structure/bed/chair/wood/wings{ icon_state = "wooden_chair_wings"; dir = 4 }, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "A" = ( /obj/structure/machinery/disposal, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "B" = ( /obj/structure/machinery/light, /turf/open/floor/carpet/edge, -/area/vehicle/apc) +/area/interior/fancylocker) (1,1,1) = {" a diff --git a/maps/interiors/tank.dmm b/maps/interiors/tank.dmm index 75da1e24f72d..f2714401a03d 100644 --- a/maps/interiors/tank.dmm +++ b/maps/interiors/tank.dmm @@ -18,7 +18,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_12" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) "c" = ( /obj/structure/prop/tank{ icon_state = "prop2"; @@ -39,7 +39,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_3" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) "e" = ( /obj/effect/landmark/interior/spawn/vehicle_gunner_seat/armor{ dir = 4 @@ -47,7 +47,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) "f" = ( /obj/structure/prop/tank{ pixel_x = 0 @@ -55,7 +55,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_1_1" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) "g" = ( /obj/structure/interior_wall/tank{ alpha = 50; @@ -102,7 +102,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_8" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) "v" = ( /obj/structure/interior_wall/tank{ layer = 2 @@ -158,7 +158,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_7" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) "H" = ( /obj/structure/interior_wall/tank{ icon_state = "exterior_3"; @@ -175,7 +175,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_4" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) "T" = ( /obj/structure/prop/tank{ icon_state = "prop1"; @@ -184,7 +184,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_9" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) "Z" = ( /obj/structure/vehicle_locker/tank{ pixel_y = 11 @@ -201,7 +201,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_11" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) (1,1,1) = {" j diff --git a/maps/interiors/van.dmm b/maps/interiors/van.dmm index 27a42dd93fd7..309160f38c1d 100644 --- a/maps/interiors/van.dmm +++ b/maps/interiors/van.dmm @@ -13,7 +13,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_10" }, -/area/vehicle/van) +/area/interior/vehicle/van) "e" = ( /obj/structure/interior_wall/van{ icon_state = "background_1" @@ -38,7 +38,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_1" }, -/area/vehicle/van) +/area/interior/vehicle/van) "i" = ( /obj/structure/interior_wall/van{ icon_state = "front_1" @@ -71,7 +71,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_8" }, -/area/vehicle/van) +/area/interior/vehicle/van) "r" = ( /obj/structure/interior_wall/van{ icon_state = "background_3" @@ -94,7 +94,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_7" }, -/area/vehicle/van) +/area/interior/vehicle/van) "t" = ( /obj/effect/landmark/interior/spawn/entrance{ dir = 1; @@ -115,7 +115,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_11" }, -/area/vehicle/van) +/area/interior/vehicle/van) "v" = ( /obj/structure/interior_wall/van{ icon_state = "interior_door" @@ -152,7 +152,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_12" }, -/area/vehicle/van) +/area/interior/vehicle/van) "z" = ( /obj/structure/interior_wall/van{ icon_state = "back_1" @@ -181,7 +181,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_9" }, -/area/vehicle/van) +/area/interior/vehicle/van) "J" = ( /obj/structure/interior_wall/van{ alpha = 50; @@ -202,7 +202,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_2" }, -/area/vehicle/van) +/area/interior/vehicle/van) "O" = ( /turf/open/void/vehicle, /area/space) diff --git a/maps/lv522_chances_claim.json b/maps/lv522_chances_claim.json index 077596d14eca..ac7dfa5f1dcd 100644 --- a/maps/lv522_chances_claim.json +++ b/maps/lv522_chances_claim.json @@ -22,7 +22,7 @@ 580, 0.0 ], - "survivor_message": "You are USCM Force Reconnaissance (FORECON) marine from the USS Hanyut, stranded on this planet after your team was wiped out while investigating the distress signal. With your pilot dead along with the majority of your unit, you and your team have been running and gunning to survive... until now.", + "survivor_message": "You are USCM Force Reconnaissance (FORECON) marine from the USS Hanyut, stranded on this planet after your team was wiped out while investigating the distress signal. With your pilot dead along with the majority of your unit, you and your team have been running and gunning to survive... but with supplies low and food running out maybe your only means of survival is to move west to the crashed dropship to salvage anything useful.", "announce_text": "Pan-Pan. This is the commanding officer of the USS Hanyut, USCMC FORECON. We are currently grounded on planet LV-522 in the immediate area of Chance's Claim. We are unable to contact the Hanyut and our dropships are unable to take off at this time. We are requesting assistance from any nearby vessels; this broadcast is set to repeat every 24 hours.", "map_item_type": "/obj/item/map/lv522_map", "monkey_types": [ diff --git a/maps/lv624.json b/maps/lv624.json index bec99892a347..76b00753db24 100644 --- a/maps/lv624.json +++ b/maps/lv624.json @@ -9,7 +9,7 @@ "/datum/equipment_preset/survivor/doctor/lv", "/datum/equipment_preset/survivor/chaplain/lv", "/datum/equipment_preset/survivor/engineer/lv", - "/datum/equipment_preset/survivor/corporate", + "/datum/equipment_preset/survivor/corporate/lv", "/datum/equipment_preset/survivor/trucker/lv", "/datum/equipment_preset/survivor/security/lv", "/datum/equipment_preset/survivor/goon", @@ -17,7 +17,7 @@ "/datum/equipment_preset/survivor/civilian" ], "map_item_type": "/obj/item/map/lazarus_landing_map", - "announce_text": "An automated distress signal has been received from archaeology site Lazarus Landing, on border world LV-624. A response team from the ###SHIPNAME### will be dispatched shortly to investigate.", + "announce_text": "An automated distress signal has been received from the archaeological site of Lazarus Landing, on the border world of LV-624. A response team from the ###SHIPNAME### will be dispatched shortly to investigate.", "monkey_types": [ "farwa", "monkey", diff --git a/maps/map_files/BigRed/BigRed.dmm b/maps/map_files/BigRed/BigRed.dmm index 9153eb912a24..30ef6b33d69a 100644 --- a/maps/map_files/BigRed/BigRed.dmm +++ b/maps/map_files/BigRed/BigRed.dmm @@ -9,13 +9,10 @@ }, /area/space) "aac" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, /turf/open/mars_cave{ - icon_state = "mars_cave_7" + icon_state = "mars_cave_19" }, -/area/bigredv2/caves_lambda) +/area/bigredv2/outside/n) "aad" = ( /turf/open/mars_cave{ icon_state = "mars_cave_2" @@ -119,7 +116,7 @@ /area/bigredv2/outside/space_port) "aau" = ( /obj/docking_port/stationary/marine_dropship/lz1{ - name = "Communications Landing Zone" + name = "LZ1: Communications Landing Zone" }, /turf/open/floor/plating, /area/bigredv2/outside/space_port) @@ -579,7 +576,7 @@ /turf/open/mars_cave{ icon_state = "mars_cave_19" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "abM" = ( /turf/open/mars_cave{ icon_state = "mars_cave_5" @@ -590,7 +587,7 @@ /turf/open/mars_cave{ icon_state = "mars_cave_2" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "abO" = ( /turf/open/mars_cave, /area/bigredv2/caves_north) @@ -636,7 +633,7 @@ /turf/open/mars_cave{ icon_state = "mars_cave_6" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "abV" = ( /turf/open/mars_cave{ icon_state = "mars_cave_11" @@ -647,23 +644,18 @@ /turf/open/mars_cave{ icon_state = "mars_cave_2" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "abX" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ icon_state = "mars_cave_2" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "abY" = ( -/obj/structure/barricade/wooden{ - desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; - dir = 4; - health = 25000 - }, /turf/open/mars_cave{ icon_state = "mars_cave_7" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "abZ" = ( /obj/structure/machinery/light{ dir = 1 @@ -679,26 +671,11 @@ }, /turf/open/floor/plating, /area/bigredv2/outside/space_port) -"acb" = ( -/obj/structure/barricade/wooden{ - desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; - dir = 4; - health = 25000 - }, -/turf/open/mars_cave{ - icon_state = "mars_cave_2" - }, -/area/bigredv2/caves_north) "acc" = ( -/obj/structure/barricade/wooden{ - desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; - dir = 4; - health = 25000 - }, /turf/open/mars_cave{ icon_state = "mars_cave_15" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "acd" = ( /obj/effect/landmark/good_item, /turf/open/floor/plating, @@ -736,9 +713,9 @@ /area/bigredv2/outside/space_port) "ack" = ( /turf/open/mars_cave{ - icon_state = "mars_cave_23" + icon_state = "mars_dirt_6" }, -/area/bigredv2/caves_north) +/area/bigredv2/caves_lambda) "acl" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/medium, @@ -842,7 +819,6 @@ }, /area/bigredv2/outside/marshal_office) "acE" = ( -/obj/structure/window/reinforced, /obj/structure/machinery/botany, /turf/open/floor{ icon_state = "white" @@ -856,12 +832,10 @@ }, /area/bigredv2/outside/marshal_office) "acG" = ( -/obj/structure/window/reinforced, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - icon_state = "white" +/turf/open/mars_cave{ + icon_state = "mars_cave_18" }, -/area/bigredv2/outside/marshal_office) +/area/bigredv2/outside/n) "acH" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -1317,9 +1291,6 @@ /area/bigredv2/outside/marshal_office) "adX" = ( /obj/structure/bookcase/manuals/engineering, -/obj/structure/machinery/light{ - dir = 1 - }, /turf/open/floor{ icon_state = "wood" }, @@ -1327,6 +1298,9 @@ "adY" = ( /obj/structure/closet/secure_closet/detective, /obj/item/weapon/gun/smg/fp9000, +/obj/structure/machinery/light{ + dir = 1 + }, /turf/open/floor{ icon_state = "wood" }, @@ -1975,7 +1949,6 @@ "afP" = ( /obj/structure/machinery/door/airlock/almayer/security/glass/colony{ dir = 1; - locked = 0; name = "\improper Marshal Office Prison" }, /turf/open/floor{ @@ -1986,7 +1959,6 @@ /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/airlock/almayer/security/glass/colony{ dir = 1; - locked = 0; name = "\improper Marshal Office Prison" }, /turf/open/floor{ @@ -2550,7 +2522,8 @@ "ahv" = ( /obj/structure/surface/table/holotable/wood, /obj/item/paper_bin, -/turf/open/floor/wood, +/obj/item/tool/pen/clicky, +/turf/open/floor/carpet, /area/bigredv2/caves/lambda/breakroom) "ahw" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -2799,7 +2772,6 @@ /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/airlock/almayer/security/glass/colony{ dir = 1; - locked = 0; name = "\improper Marshal Office Armory" }, /turf/open/floor{ @@ -3038,8 +3010,7 @@ /turf/open/floor, /area/bigredv2/outside/marshal_office) "aiN" = ( -/obj/structure/surface/table, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/obj/structure/machinery/computer/prisoner, /turf/open/floor, /area/bigredv2/outside/marshal_office) "aiO" = ( @@ -3150,6 +3121,15 @@ /area/bigredv2/outside/marshal_office) "ajd" = ( /obj/structure/surface/table/holotable/wood, +/obj/structure/transmitter/colony_net/rotary{ + phone_category = "Lambda Labs"; + phone_color = "blue"; + phone_id = "Administration" + }, +/obj/item/clothing/mask/cigarette{ + pixel_x = 5; + pixel_y = 6 + }, /turf/open/floor/carpet, /area/bigredv2/caves/lambda/breakroom) "aje" = ( @@ -3201,7 +3181,8 @@ /area/bigredv2/outside/dorms) "ajm" = ( /obj/structure/filingcabinet, -/obj/effect/landmark/objective_landmark/science, +/obj/effect/landmark/objective_landmark/close, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/wood, /area/bigredv2/caves/lambda/breakroom) "ajn" = ( @@ -3328,15 +3309,10 @@ }, /area/bigredv2/outside/marshal_office) "ajD" = ( -/obj/structure/machinery/power/apc{ - dir = 1; - start_charge = 0 - }, -/turf/open/floor{ - dir = 8; - icon_state = "asteroidwarning" +/turf/open/mars_cave{ + icon_state = "mars_cave_16" }, -/area/bigredv2/outside/telecomm/n_cave) +/area/bigredv2/outside/n) "ajE" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor{ @@ -3387,7 +3363,6 @@ dir = 4 }, /obj/structure/machinery/door/airlock/almayer/security/glass/colony{ - locked = 0; name = "\improper Marshal Office Armory" }, /turf/open/floor{ @@ -3414,8 +3389,8 @@ /turf/open/floor, /area/bigredv2/outside/marshal_office) "ajO" = ( -/obj/structure/surface/table/holotable/wood, -/obj/item/tool/pen, +/obj/structure/machinery/prop/almayer/computer/PC, +/obj/structure/surface/table/woodentable/fancy, /turf/open/floor/carpet, /area/bigredv2/caves/lambda/breakroom) "ajP" = ( @@ -3505,8 +3480,8 @@ }, /area/bigredv2/outside/nw) "aka" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/landmark/objective_landmark/close, +/obj/structure/machinery/faxmachine, +/obj/structure/surface/table/woodentable/fancy, /turf/open/floor/wood, /area/bigredv2/caves/lambda/breakroom) "akc" = ( @@ -3531,6 +3506,10 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor{ dir = 8; icon_state = "red" @@ -3538,14 +3517,10 @@ /area/bigredv2/outside/marshal_office) "akg" = ( /obj/effect/landmark/static_comms/net_one, -/turf/open/floor, -/area/bigredv2/outside/marshal_office) -"akh" = ( /turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" + icon_state = "bcircuit" }, -/area/bigredv2/outside/telecomm/n_cave) +/area/bigredv2/outside/marshal_office) "aki" = ( /obj/structure/surface/table, /obj/item/clothing/mask/gas, @@ -3602,7 +3577,8 @@ /turf/open/floor, /area/bigredv2/outside/marshal_office) "akr" = ( -/obj/structure/machinery/computer/prisoner, +/obj/structure/surface/table, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor, /area/bigredv2/outside/marshal_office) "aks" = ( @@ -3750,22 +3726,25 @@ }, /area/bigredv2/outside/marshal_office) "akN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, /turf/open/floor{ icon_state = "red" }, /area/bigredv2/outside/marshal_office) "akO" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, /turf/open/floor{ dir = 6; icon_state = "red" }, /area/bigredv2/outside/marshal_office) -"akP" = ( -/turf/open/floor{ - dir = 8; - icon_state = "asteroidwarning" - }, -/area/bigredv2/outside/telecomm/n_cave) "akQ" = ( /obj/structure/surface/table/reinforced, /obj/structure/machinery/door/window/brigdoor/southright, @@ -3841,14 +3820,6 @@ icon_state = "whitepurplefull" }, /area/bigredv2/caves/lambda/xenobiology) -"ald" = ( -/obj/structure/surface/table/reinforced, -/obj/item/book/manual/research_and_development, -/turf/open/floor{ - dir = 4; - icon_state = "whitepurple" - }, -/area/bigredv2/caves/lambda/xenobiology) "ale" = ( /obj/effect/landmark/xeno_spawn, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -3918,21 +3889,11 @@ }, /area/bigredv2/outside/nw) "alp" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass/colony{ - dir = 1; - name = "\improper Marshal Office Evidence Room" - }, +/obj/structure/machinery/light, /turf/open/floor{ - icon_state = "delivery" + icon_state = "bcircuit" }, /area/bigredv2/outside/marshal_office) -"alq" = ( -/obj/effect/landmark/static_comms/net_one, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" - }, -/area/bigredv2/outside/telecomm/n_cave) "alr" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor, @@ -3984,13 +3945,12 @@ /turf/open/floor, /area/bigredv2/outside/marshal_office) "aly" = ( -/obj/structure/window/reinforced{ - dir = 4; - health = 80 - }, /obj/structure/bed/chair{ dir = 4 }, +/obj/structure/barricade/handrail{ + dir = 4 + }, /turf/open/floor, /area/bigredv2/outside/marshal_office) "alz" = ( @@ -4300,16 +4260,15 @@ /turf/open/floor, /area/bigredv2/outside/marshal_office) "amv" = ( -/obj/structure/window/reinforced{ - dir = 4; - health = 80 - }, /obj/structure/bed/chair{ dir = 4 }, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, +/obj/structure/barricade/handrail{ + dir = 4 + }, /turf/open/floor, /area/bigredv2/outside/marshal_office) "amw" = ( @@ -4488,16 +4447,14 @@ /turf/open/floor/plating, /area/bigredv2/outside/dorms) "amW" = ( -/obj/structure/machinery/door_control{ - id = "safe_room"; - layer = 4; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_y = -5; - req_access_txt = "7"; - specialfunctions = 4 +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/closet/crate/freezer/rations, +/turf/open/floor{ + dir = 1; + icon_state = "elevatorshaft" }, -/turf/closed/wall/solaris/reinforced, /area/bigredv2/caves/lambda/breakroom) "amX" = ( /obj/structure/window/framed/solaris/reinforced, @@ -4616,9 +4573,10 @@ /turf/open/floor/plating, /area/bigredv2/caves/lambda/xenobiology) "ann" = ( -/obj/effect/decal/cleanable/dirt, -/turf/closed/wall/solaris, -/area/bigredv2/outside/general_offices) +/turf/open/mars_cave{ + icon_state = "mars_dirt_5" + }, +/area/bigredv2/outside/n) "ano" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony{ name = "\improper Lambda Lab Maintenance Storage" @@ -4647,14 +4605,11 @@ }, /area/bigredv2/outside/medical) "ant" = ( -/obj/structure/window/framed/solaris, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "Dormitories"; - name = "\improper Dormitories Shutters" +/turf/open/floor{ + dir = 6; + icon_state = "asteroidwarning" }, -/turf/open/floor/plating, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/ne) "anu" = ( /obj/structure/machinery/light{ dir = 4 @@ -4684,7 +4639,6 @@ "anx" = ( /obj/structure/machinery/door/airlock/almayer/security/glass/colony{ dir = 1; - locked = 0; name = "\improper Marshal Office Holding Cell" }, /turf/open/floor{ @@ -4820,13 +4774,10 @@ /turf/closed/wall/solaris, /area/bigredv2/outside/hydroponics) "anU" = ( -/obj/structure/window/framed/solaris, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "Greenhouse"; - name = "\improper Greenhouse Shutters" +/turf/open/mars_cave{ + icon_state = "mars_cave_20" }, -/turf/open/floor/plating, -/area/bigredv2/outside/hydroponics) +/area/bigredv2/caves_lambda) "anV" = ( /obj/item/reagent_container/spray/pepper, /turf/open/floor{ @@ -4859,8 +4810,8 @@ /turf/open/floor/plating, /area/bigredv2/outside/medical) "aoa" = ( -/turf/closed/wall/solaris/reinforced/hull, -/area/bigredv2/outside/virology) +/turf/closed/wall/solaris/reinforced, +/area/bigredv2/caves_north) "aob" = ( /turf/closed/wall/solaris/reinforced, /area/bigredv2/caves/lambda/virology) @@ -4966,14 +4917,14 @@ /turf/open/floor, /area/bigredv2/outside/general_offices) "aor" = ( -/obj/structure/machinery/washing_machine, /obj/item/clothing/under/darkred, +/obj/structure/surface/rack, /turf/open/floor{ icon_state = "freezerfloor" }, /area/bigredv2/outside/general_offices) "aos" = ( -/obj/structure/machinery/washing_machine, +/obj/structure/surface/rack, /turf/open/floor{ icon_state = "freezerfloor" }, @@ -4981,6 +4932,9 @@ "aot" = ( /obj/structure/machinery/washing_machine, /obj/item/clothing/under/brown, +/obj/structure/machinery/washing_machine{ + pixel_y = 13 + }, /turf/open/floor{ icon_state = "freezerfloor" }, @@ -5220,7 +5174,6 @@ }, /area/bigredv2/outside/general_offices) "apf" = ( -/obj/item/clothing/under/darkred, /obj/structure/pipes/vents/pump/on, /turf/open/floor{ icon_state = "freezerfloor" @@ -5719,7 +5672,7 @@ }, /area/bigredv2/outside/medical) "aqv" = ( -/obj/structure/bed, +/obj/structure/machinery/cm_vending/sorted/medical/no_access, /turf/open/floor{ icon_state = "white" }, @@ -5738,7 +5691,6 @@ /turf/open/floor/plating, /area/bigredv2/outside/library) "aqy" = ( -/obj/structure/bed/roller, /obj/structure/machinery/light{ dir = 1 }, @@ -5747,6 +5699,7 @@ name = "Storm Shutters"; pixel_y = 32 }, +/obj/structure/bed, /turf/open/floor{ icon_state = "white" }, @@ -5760,7 +5713,10 @@ /turf/open/floor/plating, /area/bigredv2/outside/bar) "aqB" = ( -/obj/structure/machinery/computer/crew, +/obj/structure/machinery/computer/crew{ + density = 0; + pixel_y = 16 + }, /turf/open/floor{ icon_state = "whitegreenfull" }, @@ -5772,23 +5728,23 @@ icon_state = "whitebluefull" }, /area/bigredv2/outside/medical) -"aqD" = ( -/turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/medical) "aqE" = ( -/obj/structure/morgue{ - dir = 8 +/obj/structure/machinery/camera/autoname{ + dir = 1 }, /turf/open/floor{ - icon_state = "dark" + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "aqF" = ( -/obj/structure/morgue, +/obj/structure/surface/table, +/obj/item/bodybag, +/obj/item/bodybag, +/obj/item/bodybag, /turf/open/floor{ - icon_state = "dark" + dir = 1; + icon_state = "whitegreen" }, /area/bigredv2/outside/medical) "aqG" = ( @@ -5796,8 +5752,7 @@ dir = 5 }, /turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" + icon_state = "asteroidwarning" }, /area/bigredv2/outside/n) "aqH" = ( @@ -5901,9 +5856,13 @@ }, /area/bigredv2/outside/general_offices) "aqX" = ( -/obj/structure/closet/crate/freezer/rations, /obj/item/storage/toolbox/mechanical, /obj/item/device/multitool, +/obj/structure/window/reinforced{ + dir = 4; + health = 80 + }, +/obj/structure/surface/rack, /turf/open/floor{ dir = 1; icon_state = "elevatorshaft" @@ -5919,8 +5878,15 @@ }, /area/bigredv2/caves/lambda/breakroom) "aqZ" = ( -/obj/structure/closet/fireaxecabinet{ - pixel_y = 32 +/obj/structure/noticeboard{ + desc = "A board for pinning important items upon."; + dir = 1; + name = "trophy board"; + pixel_y = 30 + }, +/obj/item/XenoBio/Chitin{ + anchored = 1; + pixel_y = 27 }, /turf/open/floor{ dir = 1; @@ -5928,8 +5894,11 @@ }, /area/bigredv2/caves/lambda/breakroom) "ara" = ( -/obj/structure/surface/table/holotable/wood, -/obj/item/device/flashlight/lamp, +/obj/structure/surface/table/woodentable/fancy, +/obj/item/device/flashlight/lamp{ + pixel_y = 15 + }, +/obj/item/paper/bigred/lambda, /turf/open/floor{ dir = 1; icon_state = "elevatorshaft" @@ -6001,7 +5970,7 @@ }, /area/bigredv2/outside/medical) "ark" = ( -/obj/structure/bed/roller, +/obj/structure/bed, /turf/open/floor{ icon_state = "white" }, @@ -6018,16 +5987,12 @@ }, /area/bigredv2/outside/medical) "arn" = ( -/obj/structure/machinery/computer/med_data, -/turf/open/floor{ - icon_state = "whitegreenfull" +/obj/structure/machinery/computer/med_data{ + density = 0; + pixel_y = 16 }, -/area/bigredv2/outside/medical) -"aro" = ( -/obj/structure/machinery/optable, -/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ - icon_state = "dark" + icon_state = "white" }, /area/bigredv2/outside/medical) "arp" = ( @@ -6043,7 +6008,7 @@ /area/bigredv2/outside/n) "arr" = ( /turf/open/mars{ - icon_state = "mars_dirt_14" + icon_state = "mars_dirt_12" }, /area/bigredv2/outside/n) "ars" = ( @@ -6053,26 +6018,24 @@ /turf/open/floor, /area/bigredv2/outside/general_offices) "art" = ( -/obj/structure/machinery/washing_machine, +/obj/structure/surface/table, /obj/item/clothing/under/lightbrown, /turf/open/floor{ icon_state = "freezerfloor" }, /area/bigredv2/outside/general_offices) "aru" = ( -/obj/structure/machinery/washing_machine, +/obj/structure/surface/table, /obj/structure/machinery/light, /turf/open/floor{ icon_state = "freezerfloor" }, /area/bigredv2/outside/general_offices) "arv" = ( -/obj/structure/machinery/washing_machine, -/obj/item/clothing/under/lightred, -/turf/open/floor{ - icon_state = "freezerfloor" +/turf/open/mars_cave{ + icon_state = "mars_cave_10" }, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/n) "arw" = ( /obj/structure/machinery/power/apc, /turf/open/floor/plating, @@ -6096,14 +6059,13 @@ }, /area/bigredv2/outside/general_offices) "arz" = ( -/obj/structure/toilet{ - pixel_y = 8 +/obj/structure/prop/vehicles/crawler{ + icon_state = "crawler_covered_bed" }, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor{ - icon_state = "freezerfloor" +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" }, -/area/bigredv2/outside/dorms) +/area/bigredv2/caves_lambda) "arA" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/surface/rack, @@ -6146,9 +6108,7 @@ /obj/item/ammo_magazine/shotgun/incendiary, /obj/item/ammo_magazine/shotgun/incendiary, /obj/item/weapon/gun/shotgun/combat, -/obj/structure/window/reinforced{ - dir = 1 - }, +/obj/structure/machinery/door/window/eastleft, /turf/open/floor{ dir = 1; icon_state = "elevatorshaft" @@ -6162,7 +6122,7 @@ /area/bigredv2/caves/lambda/breakroom) "arG" = ( /obj/structure/bed, -/obj/item/bedsheet/captain, +/obj/item/bedsheet/rd, /turf/open/floor{ dir = 1; icon_state = "elevatorshaft" @@ -6256,7 +6216,6 @@ /obj/structure/pipes/vents/pump{ dir = 8 }, -/obj/structure/bed/roller, /turf/open/floor{ icon_state = "white" }, @@ -6282,12 +6241,6 @@ icon_state = "whitegreencorner" }, /area/bigredv2/outside/medical) -"arY" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/medical) "arZ" = ( /obj/effect/decal/cleanable/blood/gibs/xeno/down, /turf/open/mars{ @@ -6388,12 +6341,15 @@ /area/bigredv2/outside/virology) "asm" = ( /obj/item/device/flashlight/lantern, -/turf/open/mars, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, /area/bigredv2/outside/ne) "asn" = ( /obj/structure/surface/rack, -/obj/structure/window/reinforced, /obj/item/clothing/suit/armor/vest, +/obj/structure/machinery/door/window/eastright, +/obj/structure/window/reinforced, /turf/open/floor{ dir = 1; icon_state = "elevatorshaft" @@ -6410,9 +6366,7 @@ }, /area/bigredv2/caves/lambda/breakroom) "asp" = ( -/obj/structure/bed/chair/office/light{ - dir = 4 - }, +/obj/structure/bed/chair/comfy/black, /turf/open/floor/wood, /area/bigredv2/caves/lambda/breakroom) "asq" = ( @@ -6422,7 +6376,7 @@ }, /area/bigredv2/outside/medical) "asr" = ( -/obj/structure/bed/chair{ +/obj/structure/bed/chair/comfy{ dir = 8 }, /turf/open/floor/carpet, @@ -6537,15 +6491,11 @@ /area/bigredv2/outside/medical) "asG" = ( /obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/surface/table, -/obj/item/bodybag, -/obj/item/bodybag, -/obj/item/bodybag, -/obj/item/bodybag, /turf/open/floor{ - icon_state = "dark" + dir = 4; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "asH" = ( /obj/structure/window/framed/solaris, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -6655,14 +6605,6 @@ icon_state = "dark" }, /area/bigredv2/outside/general_offices) -"asZ" = ( -/obj/structure/surface/rack, -/obj/item/stack/sheet/mineral/diamond, -/obj/item/clothing/under/redcoat, -/turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/general_offices) "ata" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor{ @@ -6695,9 +6637,12 @@ /area/bigredv2/outside/chapel) "ate" = ( /obj/structure/machinery/door_control{ - id = "safe_blast"; - name = "Blast Door"; - pixel_y = -25 + id = "safe_room"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -28; + req_access_txt = "106"; + specialfunctions = 4 }, /turf/open/floor{ dir = 1; @@ -6705,12 +6650,8 @@ }, /area/bigredv2/caves/lambda/breakroom) "atf" = ( -/obj/structure/closet/crate/medical, -/obj/item/storage/firstaid/adv, -/obj/item/storage/firstaid/o2, -/obj/item/storage/firstaid/toxin, -/obj/item/storage/firstaid/rad, -/obj/effect/landmark/objective_landmark/medium, +/obj/structure/closet/secure_closet/RD, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ dir = 1; icon_state = "elevatorshaft" @@ -6784,16 +6725,16 @@ }, /area/bigredv2/outside/medical) "atp" = ( -/obj/structure/machinery/cm_vending/sorted/medical/no_access, /obj/structure/machinery/light{ dir = 8 }, +/obj/structure/bed/roller, /turf/open/floor{ icon_state = "white" }, /area/bigredv2/outside/medical) "atq" = ( -/obj/structure/machinery/cm_vending/sorted/medical/no_access, +/obj/structure/bed/roller, /turf/open/floor{ icon_state = "white" }, @@ -6809,33 +6750,35 @@ dir = 5 }, /obj/structure/surface/table, -/obj/item/bodybag, -/obj/item/bodybag, -/obj/item/bodybag, +/obj/structure/machinery/light, /turf/open/floor{ - icon_state = "dark" + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "att" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, /turf/open/floor{ - icon_state = "dark" + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "atu" = ( /obj/structure/machinery/light, /turf/open/floor{ - icon_state = "dark" + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "atv" = ( -/obj/structure/machinery/camera/autoname{ - dir = 1 +/obj/structure/morgue{ + dir = 2 }, /turf/open/floor{ - icon_state = "dark" + dir = 9; + icon_state = "whiteblue" }, /area/bigredv2/outside/medical) "atw" = ( @@ -6923,8 +6866,7 @@ dir = 1; icon_state = "door_locked"; id = "safe_room"; - locked = 0; - name = "\improper Lambda Lab Secure Storage" + name = "\improper Lambda Lab Director's Safe Room" }, /turf/open/floor{ icon_state = "delivery" @@ -7037,11 +6979,13 @@ }, /area/bigredv2/outside/medical) "atW" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/medical{ - dir = 1; - name = "\improper Medical Clinic Morgue" +/obj/effect/decal/cleanable/blood{ + icon_state = "gib6" + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/colony{ + name = "\improper Medical Clinic" }, +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ icon_state = "delivery" }, @@ -7151,7 +7095,7 @@ /area/bigredv2/outside/office_complex) "aum" = ( /obj/structure/machinery/door/airlock/almayer/research/glass/colony{ - name = "\improper Lambda Lab Administration Office" + name = "\improper Lambda Lab Director's Office" }, /turf/open/floor{ icon_state = "delivery" @@ -7197,12 +7141,6 @@ icon_state = "dark" }, /area/bigredv2/caves/lambda/breakroom) -"aus" = ( -/turf/open/floor{ - dir = 10; - icon_state = "asteroidwarning" - }, -/area/bigredv2/outside/telecomm/n_cave) "aut" = ( /turf/open/floor{ dir = 4; @@ -7331,6 +7269,7 @@ }, /area/bigredv2/outside/medical) "auJ" = ( +/obj/structure/bed/roller, /turf/open/floor{ dir = 9; icon_state = "whitegreen" @@ -7366,6 +7305,10 @@ }, /area/bigredv2/outside/medical) "auO" = ( +/obj/structure/surface/table, +/obj/item/bodybag, +/obj/item/bodybag, +/obj/item/bodybag, /turf/open/floor{ dir = 5; icon_state = "whitegreen" @@ -7377,15 +7320,10 @@ icon_state = "whiteblue" }, /area/bigredv2/outside/medical) -"auQ" = ( -/obj/structure/machinery/medical_pod/sleeper, -/turf/open/floor{ - dir = 1; - icon_state = "whiteblue" - }, -/area/bigredv2/outside/medical) "auR" = ( -/obj/structure/machinery/sleep_console, +/obj/structure/morgue{ + dir = 2 + }, /turf/open/floor{ dir = 1; icon_state = "whiteblue" @@ -7395,13 +7333,17 @@ /obj/structure/machinery/light{ dir = 1 }, +/obj/structure/morgue{ + dir = 2 + }, /turf/open/floor{ dir = 1; icon_state = "whiteblue" }, /area/bigredv2/outside/medical) "auT" = ( -/obj/structure/machinery/sleep_console, +/obj/structure/surface/table, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 5; icon_state = "whiteblue" @@ -7428,8 +7370,10 @@ /turf/closed/wall/solaris/reinforced/hull, /area/bigredv2/outside/c) "auX" = ( -/obj/structure/window/framed/solaris/reinforced, -/turf/open/floor/plating, +/obj/structure/barricade/handrail, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, /area/bigredv2/outside/c) "auY" = ( /turf/open/floor/carpet, @@ -7664,13 +7608,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor, /area/bigredv2/outside/dorms) -"avE" = ( -/obj/structure/machinery/camera/autoname{ - dir = 4; - pixel_y = 21 - }, -/turf/open/floor, -/area/bigredv2/outside/dorms) "avF" = ( /obj/structure/machinery/power/apc{ dir = 1; @@ -7711,12 +7648,10 @@ /turf/open/floor, /area/bigredv2/outside/general_offices) "avK" = ( -/obj/structure/machinery/light{ - dir = 1 +/turf/open/mars_cave{ + icon_state = "mars_cave_20" }, -/obj/structure/machinery/vending/cola, -/turf/open/floor, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/n) "avM" = ( /obj/structure/machinery/light{ dir = 8 @@ -7724,7 +7659,6 @@ /turf/open/floor/wood, /area/bigredv2/caves/lambda/breakroom) "avN" = ( -/obj/structure/bed/chair, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/carpet, /area/bigredv2/caves/lambda/breakroom) @@ -7858,9 +7792,10 @@ }, /area/bigredv2/caves/lambda/research) "awf" = ( -/obj/structure/window/framed/solaris, -/turf/open/floor/plating, -/area/bigredv2/outside/office_complex) +/turf/open/mars_cave{ + icon_state = "mars_cave_17" + }, +/area/bigredv2/caves_lambda) "awg" = ( /obj/effect/decal/cleanable/blood, /obj/structure/pipes/standard/simple/hidden/green{ @@ -7889,8 +7824,8 @@ }, /area/bigredv2/outside/medical) "awj" = ( -/obj/structure/machinery/door/airlock/almayer/medical/glass/colony{ - name = "\improper Medical Clinic Scanner Room" +/obj/structure/machinery/door/airlock/almayer/medical{ + name = "\improper Medical Clinic Morgue" }, /turf/open/floor{ icon_state = "delivery" @@ -7909,7 +7844,7 @@ }, /area/bigredv2/outside/medical) "awm" = ( -/obj/structure/machinery/sleep_console, +/obj/structure/machinery/optable, /turf/open/floor{ dir = 4; icon_state = "whiteblue" @@ -7980,16 +7915,32 @@ /turf/open/floor, /area/bigredv2/outside/general_offices) "awx" = ( -/obj/structure/machinery/vending/cigarette/colony, -/turf/open/floor, -/area/bigredv2/outside/general_offices) +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/outside/n) "awy" = ( /obj/effect/landmark/crap_item, -/turf/open/mars, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, /area/bigredv2/outside/ne) "awz" = ( -/obj/structure/surface/table/holotable/wood, -/obj/item/XenoBio/Chitin, +/obj/item/ashtray/bronze{ + pixel_x = -7 + }, +/obj/item/trash/cigbutt, +/obj/item/trash/cigbutt{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/trash/cigbutt{ + pixel_x = -10; + pixel_y = 14 + }, +/obj/structure/surface/table/woodentable/fancy, /turf/open/floor/carpet, /area/bigredv2/caves/lambda/breakroom) "awA" = ( @@ -8004,13 +7955,12 @@ }, /area/bigredv2/caves/lambda/research) "awB" = ( -/obj/structure/surface/table/holotable/wood, -/obj/item/reagent_container/food/drinks/coffee, /obj/structure/transmitter/colony_net/rotary{ phone_category = "Lambda Labs"; phone_color = "blue"; - phone_id = "Administration" + phone_id = "Director" }, +/obj/structure/surface/table/woodentable/fancy, /turf/open/floor/carpet, /area/bigredv2/caves/lambda/breakroom) "awC" = ( @@ -8197,7 +8147,6 @@ /area/bigredv2/outside/dorms) "axf" = ( /obj/structure/pipes/vents/pump, -/obj/effect/decal/cleanable/blood/gibs/limb, /turf/open/floor{ icon_state = "grimy" }, @@ -8240,9 +8189,11 @@ /turf/open/floor, /area/bigredv2/outside/general_offices) "axm" = ( -/obj/structure/machinery/vending/snack, -/turf/open/floor, -/area/bigredv2/outside/general_offices) +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_14" + }, +/area/bigredv2/outside/n) "axn" = ( /obj/structure/window/reinforced/toughened{ dir = 1; @@ -8259,10 +8210,10 @@ }, /area/bigredv2/caves/lambda/virology) "axo" = ( -/obj/structure/bed/chair/office/light{ +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/bed/chair/comfy/black{ dir = 8 }, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/wood, /area/bigredv2/caves/lambda/breakroom) "axp" = ( @@ -8363,20 +8314,15 @@ icon_state = "whitegreen" }, /area/bigredv2/outside/medical) -"axC" = ( -/obj/structure/machinery/medical_pod/sleeper, -/turf/open/floor{ - icon_state = "whiteblue" - }, -/area/bigredv2/outside/medical) "axD" = ( -/obj/structure/machinery/sleep_console, +/obj/structure/morgue{ + dir = 1 + }, /turf/open/floor{ icon_state = "whiteblue" }, /area/bigredv2/outside/medical) "axE" = ( -/obj/structure/machinery/sleep_console, /turf/open/floor{ dir = 6; icon_state = "whiteblue" @@ -8697,19 +8643,11 @@ icon_state = "wood" }, /area/bigredv2/outside/general_offices) -"ayy" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" - }, -/area/bigredv2/outside/general_offices) "ayz" = ( -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" +/turf/open/mars_cave{ + icon_state = "mars_cave_15" }, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/ne) "ayA" = ( /obj/structure/machinery/vending/snack, /obj/structure/machinery/light, @@ -8717,6 +8655,12 @@ /area/bigredv2/caves/lambda/breakroom) "ayB" = ( /obj/structure/machinery/light, +/obj/structure/surface/table/woodentable, +/obj/item/storage/fancy/cigarettes/wypacket{ + pixel_x = -5; + pixel_y = 4 + }, +/obj/item/tool/lighter/zippo, /turf/open/floor/carpet, /area/bigredv2/caves/lambda/breakroom) "ayC" = ( @@ -8869,9 +8813,6 @@ /obj/structure/machinery/light{ dir = 4 }, -/obj/structure/machinery/power/apc{ - dir = 1 - }, /turf/open/floor/plating, /area/bigredv2/outside/medical) "ayX" = ( @@ -8923,7 +8864,7 @@ dir = 1; icon_state = "asteroidfloor" }, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/ne) "azf" = ( /obj/effect/landmark/crap_item, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -9124,13 +9065,11 @@ /turf/open/floor/plating, /area/bigredv2/outside/engineering) "azF" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ - icon_state = "mars_cave_2" + icon_state = "mars_dirt_4" }, -/area/bigredv2/caves_lambda) +/area/bigredv2/outside/n) "azG" = ( /obj/structure/window/framed/solaris, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -9181,8 +9120,8 @@ /turf/open/floor, /area/bigredv2/outside/dorms) "azR" = ( -/turf/closed/wall/solaris/reinforced/hull, -/area/bigredv2/caves) +/turf/closed/wall/solaris/reinforced, +/area/bigredv2/outside/w) "azS" = ( /obj/structure/machinery/vending/snack{ icon_state = "snack-broken"; @@ -9223,18 +9162,7 @@ /turf/open/floor, /area/bigredv2/outside/dorms) "azX" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door_control{ - id = "Dormitories"; - name = "Storm Shutters"; - pixel_y = -32 - }, -/obj/structure/machinery/camera/autoname{ - dir = 4; - pixel_y = -16 - }, +/obj/structure/machinery/camera/autoname, /turf/open/floor, /area/bigredv2/outside/dorms) "azY" = ( @@ -9274,19 +9202,22 @@ /turf/open/floor{ icon_state = "delivery" }, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/bar) "aAd" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/structure/machinery/door/airlock/almayer/security/glass/colony{ + dir = 1; + name = "\improper Marshal Office Evidence Room" }, -/turf/open/floor/plating, -/area/bigredv2/outside/dorms) +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/marshal_office) "aAe" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, /turf/open/floor/plating, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/bar) "aAf" = ( /obj/structure/machinery/light{ dir = 1 @@ -9297,12 +9228,10 @@ /turf/open/floor/plating, /area/bigredv2/outside/bar) "aAh" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" +/turf/open/mars_cave{ + icon_state = "mars_cave_9" }, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/ne) "aAi" = ( /turf/open/floor{ dir = 8; @@ -9441,10 +9370,6 @@ /area/bigredv2/outside/dorms) "aAD" = ( /obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1; - name = "\improper Dormitories Restroom" - }, /turf/open/floor{ icon_state = "delivery" }, @@ -9459,14 +9384,15 @@ }, /area/bigredv2/outside/dorms) "aAF" = ( +/obj/structure/window_frame/solaris, /turf/open/floor/plating, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/marshal_office) "aAG" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 }, /turf/open/floor/plating, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/bar) "aAH" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -9757,10 +9683,6 @@ icon_state = "wood" }, /area/bigredv2/outside/dorms) -"aBt" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/plating, -/area/bigredv2/outside/dorms) "aBu" = ( /turf/open/floor{ icon_state = "asteroidwarning" @@ -9775,14 +9697,11 @@ /area/bigredv2/caves/eta/research) "aBx" = ( /obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/medical/glass/colony{ - dir = 1; - name = "\improper Greenhouse" - }, /turf/open/floor{ - icon_state = "delivery" + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/hydroponics) +/area/bigredv2/outside/ne) "aBy" = ( /obj/structure/window/framed/solaris/reinforced, /turf/open/floor/plating, @@ -9940,6 +9859,9 @@ pixel_x = -12; pixel_y = 2 }, +/obj/structure/mirror{ + pixel_x = -28 + }, /turf/open/floor{ icon_state = "freezerfloor" }, @@ -9960,13 +9882,11 @@ }, /area/bigredv2/outside/dorms) "aBY" = ( -/obj/structure/machinery/shower{ - dir = 8 - }, -/turf/open/floor{ - icon_state = "freezerfloor" +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" }, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/ne) "aBZ" = ( /obj/structure/bed/stool, /turf/open/floor{ @@ -9989,23 +9909,28 @@ }, /area/bigredv2/outside/ne) "aCd" = ( -/turf/open/mars{ - icon_state = "mars_dirt_3" +/turf/open/mars_cave{ + icon_state = "mars_cave_16" }, /area/bigredv2/outside/ne) "aCe" = ( /turf/closed/wall/solaris/reinforced, /area/bigredv2/caves/eta/xenobiology) "aCf" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/turf/open/floor{ - icon_state = "whitegreenfull" +/obj/effect/decal/warning_stripes{ + icon_state = "W-corner" }, -/area/bigredv2/outside/hydroponics) +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/caves_lambda) "aCg" = ( /obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Greenhouse Storage" + }, /turf/open/floor{ - icon_state = "whitegreenfull" + icon_state = "delivery" }, /area/bigredv2/outside/hydroponics) "aCh" = ( @@ -10239,6 +10164,15 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/c) +"aCO" = ( +/obj/structure/surface/table, +/obj/item/stack/cable_coil, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "aCP" = ( /obj/structure/closet/secure_closet/bar, /obj/effect/landmark/objective_landmark/close, @@ -10247,11 +10181,9 @@ }, /area/bigredv2/outside/bar) "aCQ" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Dormitories Restroom" - }, +/obj/effect/decal/cleanable/blood/gibs/limb, /turf/open/floor{ - icon_state = "delivery" + icon_state = "grimy" }, /area/bigredv2/outside/dorms) "aCR" = ( @@ -10287,18 +10219,19 @@ /area/bigredv2/outside/bar) "aCV" = ( /obj/effect/landmark/hunter_primary, -/turf/open/mars, -/area/bigredv2/outside/ne) -"aCW" = ( -/turf/open/mars{ - icon_state = "mars_dirt_8" +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, /area/bigredv2/outside/ne) "aCX" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/floor, +/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/open/floor{ + icon_state = "whitegreenfull" + }, /area/bigredv2/outside/hydroponics) "aCY" = ( /obj/effect/decal/cleanable/dirt, @@ -10421,6 +10354,11 @@ icon_state = "darkpurple2" }, /area/bigredv2/caves/lambda/research) +"aDo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/largecrate/random/barrel, +/turf/open/floor, +/area/bigredv2/outside/cargo) "aDp" = ( /obj/structure/surface/table, /obj/effect/spawner/random/technology_scanner, @@ -10650,21 +10588,15 @@ /turf/open/floor, /area/bigredv2/outside/dorms) "aDR" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/turf/open/floor{ - icon_state = "freezerfloor" +/turf/open/mars_cave{ + icon_state = "mars_cave_19" }, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/ne) "aDT" = ( -/obj/structure/machinery/recharge_station, -/turf/open/floor{ - icon_state = "freezerfloor" +/turf/open/mars_cave{ + icon_state = "mars_cave_17" }, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/ne) "aDU" = ( /obj/structure/closet/athletic_mixed, /obj/structure/machinery/light{ @@ -10736,19 +10668,17 @@ /turf/open/floor, /area/bigredv2/outside/hydroponics) "aEe" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - icon_state = "whitegreenfull" +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" }, -/area/bigredv2/outside/hydroponics) +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/caves_north) "aEf" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/crap_item, -/turf/open/floor{ - icon_state = "whitegreenfull" - }, +/turf/open/floor, /area/bigredv2/outside/hydroponics) "aEg" = ( /obj/effect/decal/cleanable/dirt, @@ -10828,8 +10758,10 @@ }, /area/bigredv2/caves/lambda/research) "aEs" = ( -/obj/structure/surface/table/holotable/wood, -/turf/open/floor/wood, +/obj/structure/bed/chair/comfy/lime{ + dir = 8 + }, +/turf/open/floor/carpet, /area/bigredv2/caves/lambda/breakroom) "aEt" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -10880,13 +10812,12 @@ }, /area/bigredv2/outside/medical) "aEB" = ( -/obj/structure/surface/table, /obj/structure/pipes/vents/pump, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ - icon_state = "dark" + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "aEC" = ( /obj/effect/decal/cleanable/blood/gibs/body, /turf/open/floor{ @@ -10951,8 +10882,7 @@ /area/bigredv2/outside/dorms) "aEL" = ( /obj/structure/machinery/camera/autoname{ - dir = 1; - pixel_x = -14 + dir = 4 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor, @@ -11003,7 +10933,10 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor, +/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/open/floor{ + icon_state = "whitegreenfull" + }, /area/bigredv2/outside/hydroponics) "aET" = ( /obj/effect/decal/cleanable/dirt, @@ -11021,8 +10954,12 @@ /turf/open/floor, /area/bigredv2/outside/hydroponics) "aEV" = ( -/turf/closed/wall/solaris/rock, -/area/bigredv2/outside/virology) +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/camera/autoname{ + dir = 4 + }, +/turf/open/floor, +/area/bigredv2/outside/cargo) "aEW" = ( /obj/item/tool/hatchet, /obj/effect/decal/cleanable/dirt, @@ -11064,21 +11001,10 @@ /turf/closed/wall/solaris/rock, /area/bigredv2/outside/sw) "aFd" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4; - health = 80 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/open/jungle{ - bushes_spawn = 0; - icon_state = "grass_impenetrable" +/obj/structure/flora/jungle/plantbot1{ + pixel_y = 10 }, +/turf/open/jungle, /area/bigredv2/outside/admin_building) "aFf" = ( /obj/structure/closet/secure_closet/scientist, @@ -11355,23 +11281,25 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/structure/machinery/recharge_station, /turf/open/floor{ icon_state = "freezerfloor" }, /area/bigredv2/outside/dorms) "aFR" = ( -/obj/item/tool/hatchet, +/obj/structure/toilet{ + dir = 1 + }, +/obj/effect/landmark/lv624/xeno_tunnel, /turf/open/floor{ icon_state = "freezerfloor" }, /area/bigredv2/outside/dorms) "aFS" = ( -/obj/item/tool/surgery/hemostat, -/obj/effect/decal/cleanable/blood, -/turf/open/floor{ - icon_state = "freezerfloor" +/turf/open/mars_cave{ + icon_state = "mars_cave_20" }, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/ne) "aFT" = ( /obj/structure/surface/table/woodentable, /obj/item/device/radio, @@ -11426,13 +11354,15 @@ }, /area/bigredv2/outside/bar) "aFZ" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/door/poddoor/almayer/closed{ + dir = 4; + id = "lambda"; + name = "Lambda Lockdown" + }, /turf/open/floor{ - icon_state = "whitegreenfull" + icon_state = "delivery" }, -/area/bigredv2/outside/hydroponics) +/area/bigredv2/caves_north) "aGa" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; @@ -11499,9 +11429,7 @@ }, /area/bigredv2/caves/lambda/research) "aGh" = ( -/obj/structure/bed/chair/office/light{ - dir = 1 - }, +/obj/structure/filingcabinet/filingcabinet, /turf/open/floor/wood, /area/bigredv2/caves/lambda/breakroom) "aGi" = ( @@ -11730,7 +11658,10 @@ /area/bigredv2/outside/bar) "aGK" = ( /obj/structure/machinery/light, -/turf/open/floor, +/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/open/floor{ + icon_state = "whitegreenfull" + }, /area/bigredv2/outside/hydroponics) "aGL" = ( /obj/structure/machinery/biogenerator, @@ -12532,10 +12463,7 @@ "aIY" = ( /obj/structure/surface/table, /obj/effect/landmark/objective_landmark/medium, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aIZ" = ( /obj/effect/decal/warning_stripes{ @@ -13093,7 +13021,7 @@ /area/bigredv2/outside/c) "aKv" = ( /obj/structure/bed/chair/wood/normal, -/obj/item/weapon/gun/shotgun/double/with_stock, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /turf/open/floor{ icon_state = "wood" }, @@ -13124,13 +13052,13 @@ }, /area/bigredv2/outside/bar) "aKA" = ( -/turf/open/mars{ - icon_state = "mars_dirt_10" +/turf/open/mars_cave{ + icon_state = "mars_cave_6" }, /area/bigredv2/outside/ne) "aKB" = ( /turf/open/mars{ - icon_state = "mars_dirt_14" + icon_state = "mars_dirt_11" }, /area/bigredv2/outside/ne) "aKC" = ( @@ -13407,8 +13335,10 @@ /obj/structure/surface/table, /obj/structure/machinery/light, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/space_port_lz2) "aLo" = ( /obj/structure/surface/table, /obj/item/device/radio, @@ -13564,7 +13494,10 @@ "aLJ" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/close, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "aLM" = ( /obj/structure/machinery/shower{ @@ -13599,7 +13532,9 @@ /obj/structure/surface/table, /obj/item/tool/lighter/random, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "aLQ" = ( /obj/structure/window/reinforced/toughened{ @@ -13878,8 +13813,10 @@ /obj/structure/surface/table, /obj/effect/decal/cleanable/dirt, /obj/item/tool/pen, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "aMC" = ( /obj/effect/landmark/railgun_camera_pos, @@ -14237,7 +14174,6 @@ /area/bigredv2/outside/admin_building) "aNC" = ( /obj/structure/machinery/computer/station_alert, -/obj/structure/machinery/camera/autoname, /obj/structure/surface/table, /turf/open/floor{ icon_state = "white" @@ -14292,6 +14228,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 9; icon_state = "darkred2" @@ -14304,6 +14241,7 @@ }, /area/bigredv2/outside/admin_building) "aNK" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 9; icon_state = "darkred2" @@ -14327,6 +14265,7 @@ /area/bigredv2/outside/admin_building) "aNN" = ( /obj/structure/machinery/vending/coffee, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 1; icon_state = "darkred2" @@ -14348,6 +14287,9 @@ /area/bigredv2/outside/admin_building) "aNQ" = ( /obj/structure/bed, +/obj/item/bedsheet/brown{ + layer = 3.1 + }, /turf/open/floor{ icon_state = "wood" }, @@ -15151,16 +15093,22 @@ }, /area/bigredv2/outside/admin_building) "aPP" = ( -/turf/open/floor{ +/obj/structure/stairs/perspective{ dir = 1; - icon_state = "rampbottom" + icon_state = "p_stair_full" + }, +/turf/open/floor{ + icon_state = "dark" }, /area/bigredv2/outside/admin_building) "aPQ" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ +/obj/structure/stairs/perspective{ dir = 1; - icon_state = "rampbottom" + icon_state = "p_stair_full" + }, +/turf/open/floor{ + icon_state = "dark" }, /area/bigredv2/outside/admin_building) "aPS" = ( @@ -15188,7 +15136,17 @@ }, /area/bigredv2/outside/admin_building) "aPW" = ( -/obj/structure/coatrack, +/obj/structure/coatrack{ + pixel_x = -5; + pixel_y = 13 + }, +/obj/item/clothing/shoes/dress{ + pixel_y = -13 + }, +/obj/item/clothing/under/suit_jacket/trainee{ + pixel_x = -6; + pixel_y = 15 + }, /turf/open/floor{ icon_state = "wood" }, @@ -15659,6 +15617,7 @@ name = "Storm Shutters"; pixel_y = -32 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "darkred2" }, @@ -15993,9 +15952,8 @@ }, /area/bigredv2/outside/admin_building) "aRZ" = ( -/obj/structure/machinery/door/airlock/almayer/command/colony{ - dir = 1; - name = "\improper Operations EVA" +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 }, /turf/open/floor{ icon_state = "delivery" @@ -16315,6 +16273,14 @@ }, /area/bigredv2/outside/general_store) "aSQ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_y = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, /obj/structure/machinery/door/airlock/almayer/command/colony{ dir = 1; name = "\improper Operations" @@ -16325,6 +16291,8 @@ /area/bigredv2/outside/admin_building) "aSR" = ( /obj/structure/pipes/vents/pump, +/obj/structure/surface/rack, +/obj/item/weapon/gun/smg/mp27, /turf/open/floor{ dir = 8; icon_state = "redcorner" @@ -16361,6 +16329,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, +/obj/item/prop/alien/hugger, /turf/open/floor{ dir = 1; icon_state = "darkred2" @@ -16376,8 +16345,14 @@ }, /area/bigredv2/outside/admin_building) "aSX" = ( -/obj/structure/machinery/suit_storage_unit/carbon_unit, -/turf/open/floor/plating, +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor{ + icon_state = "white" + }, /area/bigredv2/outside/admin_building) "aSZ" = ( /obj/structure/machinery/power/apc{ @@ -16390,10 +16365,12 @@ /turf/open/floor/plating, /area/bigredv2/outside/admin_building) "aTb" = ( -/obj/structure/surface/table/woodentable, -/obj/effect/landmark/objective_landmark/close, +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, /turf/open/floor{ - icon_state = "wood" + icon_state = "white" }, /area/bigredv2/outside/admin_building) "aTc" = ( @@ -16568,24 +16545,6 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/lambda_cave_cas) -"aTA" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 6 - }, -/turf/open/floor{ - dir = 4; - icon_state = "asteroidwarning" - }, -/area/bigredv2/caves_lambda) -"aTB" = ( -/obj/structure/pipes/vents/pump{ - dir = 8 - }, -/turf/open/floor{ - dir = 4; - icon_state = "asteroidwarning" - }, -/area/bigredv2/caves_lambda) "aTC" = ( /obj/structure/bed, /obj/item/bedsheet/medical, @@ -16720,7 +16679,10 @@ }, /area/bigredv2/outside/general_store) "aTU" = ( -/obj/structure/machinery/message_server, +/obj/structure/prop/server_equipment/yutani_server{ + density = 0; + pixel_y = 16 + }, /turf/open/floor{ icon_state = "podhatchfloor" }, @@ -16730,12 +16692,6 @@ icon_state = "podhatchfloor" }, /area/bigredv2/outside/admin_building) -"aTX" = ( -/obj/structure/machinery/computer3/server, -/turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/admin_building) "aTY" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ @@ -16744,8 +16700,6 @@ }, /area/bigredv2/outside/admin_building) "aTZ" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/smg/mp27, /obj/structure/machinery/light{ dir = 4 }, @@ -16771,28 +16725,34 @@ }, /area/bigredv2/outside/admin_building) "aUd" = ( -/obj/structure/machinery/alarm{ - dir = 1; - pixel_y = -30 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 5; + icon_state = "darkred2" }, -/turf/open/floor/plating, /area/bigredv2/outside/admin_building) "aUe" = ( /obj/structure/machinery/light{ dir = 4 }, +/obj/structure/machinery/alarm{ + dir = 1; + pixel_y = -30 + }, +/obj/structure/machinery/suit_storage_unit/carbon_unit, /turf/open/floor/plating, /area/bigredv2/outside/admin_building) "aUf" = ( /obj/effect/landmark/good_item, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 8; icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aUg" = ( -/obj/structure/surface/table/woodentable, -/obj/item/device/camera, +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ icon_state = "wood" }, @@ -16946,22 +16906,6 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/lambda_cave_cas) -"aUB" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 9 - }, -/turf/open/floor{ - dir = 6; - icon_state = "asteroidwarning" - }, -/area/bigredv2/caves_lambda) -"aUC" = ( -/obj/effect/decal/remains/human, -/turf/open/floor{ - dir = 6; - icon_state = "asteroidwarning" - }, -/area/bigredv2/caves_lambda) "aUD" = ( /obj/structure/bed, /obj/item/bedsheet/medical, @@ -17188,12 +17132,10 @@ dir = 4 }, /turf/open/floor{ - icon_state = "dark" + icon_state = "podhatchfloor" }, /area/bigredv2/outside/admin_building) "aVk" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/pistol/mod88, /turf/open/floor{ dir = 8; icon_state = "redcorner" @@ -17422,13 +17364,11 @@ dir = 1; network = list("interrogation") }, -/obj/structure/machinery/computer3/server, /turf/open/floor{ icon_state = "podhatchfloor" }, /area/bigredv2/outside/admin_building) "aVT" = ( -/obj/structure/machinery/computer3/server, /turf/open/floor{ dir = 9; icon_state = "darkblue2" @@ -17444,7 +17384,6 @@ /obj/structure/machinery/light{ dir = 1 }, -/obj/structure/machinery/photocopier, /turf/open/floor{ dir = 1; icon_state = "darkblue2" @@ -17460,13 +17399,16 @@ phone_id = "Operations"; pixel_y = 24 }, +/obj/item/prop/alien/hugger, /turf/open/floor{ dir = 1; icon_state = "darkblue2" }, /area/bigredv2/outside/admin_building) "aVX" = ( -/obj/structure/machinery/computer/cameras, +/obj/structure/machinery/computer/cameras{ + dir = 8 + }, /obj/structure/surface/table, /turf/open/floor{ dir = 5; @@ -17614,11 +17556,6 @@ icon_state = "whitebluefull" }, /area/bigredv2/outside/general_store) -"aWy" = ( -/turf/open/floor{ - icon_state = "asteroidwarning" - }, -/area/bigredv2/outside/telecomm/n_cave) "aWz" = ( /obj/structure/showcase{ icon_state = "bus" @@ -17648,7 +17585,6 @@ }, /area/bigredv2/outside/admin_building) "aWD" = ( -/obj/structure/machinery/computer3/server, /turf/open/floor{ dir = 8; icon_state = "darkblue2" @@ -17668,7 +17604,9 @@ }, /area/bigredv2/outside/admin_building) "aWG" = ( -/obj/structure/machinery/computer/communications, +/obj/structure/machinery/computer/communications{ + dir = 8 + }, /obj/structure/surface/table, /turf/open/floor{ dir = 6; @@ -17676,10 +17614,10 @@ }, /area/bigredv2/outside/admin_building) "aWH" = ( -/obj/structure/surface/table/woodentable, -/obj/item/device/pinpointer, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - icon_state = "wood" + dir = 1; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aWI" = ( @@ -17837,6 +17775,10 @@ pixel_y = 32 }, /obj/effect/landmark/good_item, +/obj/structure/stairs/perspective{ + dir = 10; + icon_state = "p_stair_full" + }, /turf/open/floor{ dir = 1; icon_state = "darkred2" @@ -17851,12 +17793,9 @@ }, /area/bigredv2/outside/admin_building) "aXk" = ( -/obj/structure/machinery/light{ - dir = 4 - }, +/obj/item/prop/alien/hugger, /turf/open/floor{ - dir = 4; - icon_state = "darkred2" + icon_state = "white" }, /area/bigredv2/outside/admin_building) "aXl" = ( @@ -18013,19 +17952,22 @@ /obj/structure/machinery/door/airlock/almayer/maint/colony{ name = "\improper General Store Storage" }, -/turf/open/floor/plating, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/cargo) "aXL" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 10; + dir = 8; icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aXM" = ( -/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 8; - icon_state = "darkredcorners2" + dir = 4; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aXN" = ( @@ -18034,12 +17976,16 @@ density = 0; req_one_access_txt = "200" }, +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor{ dir = 10; icon_state = "darkblue2" }, /area/bigredv2/outside/admin_building) "aXO" = ( +/obj/item/prop/alien/hugger, /turf/open/floor{ icon_state = "darkblue2" }, @@ -18112,32 +18058,36 @@ /turf/open/floor/plating, /area/bigredv2/outside/cargo) "aYe" = ( -/obj/structure/surface/rack, +/obj/structure/window/framed/solaris, +/obj/structure/curtain, /turf/open/floor/plating, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/medical) "aYf" = ( /obj/structure/machinery/light, -/obj/structure/surface/rack, -/turf/open/floor/plating, -/area/bigredv2/outside/cargo) +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/c) "aYh" = ( /obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/light{ - dir = 8 - }, /turf/open/floor{ dir = 8; - icon_state = "darkred2" + icon_state = "darkredcorners2" }, /area/bigredv2/outside/admin_building) "aYi" = ( /obj/effect/spawner/random/toolbox, +/obj/structure/platform_decoration, /turf/open/floor{ icon_state = "dark" }, /area/bigredv2/outside/admin_building) "aYk" = ( /obj/effect/landmark/survivor_spawner, +/obj/structure/platform_decoration{ + dir = 1 + }, /turf/open/floor{ icon_state = "dark" }, @@ -18159,23 +18109,33 @@ }, /area/bigredv2/outside/admin_building) "aYo" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Operations Toilet" +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_y = -1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - icon_state = "delivery" + dir = 5; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aYp" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper Operations Toilet" + }, /turf/open/floor{ - icon_state = "freezerfloor" + icon_state = "delivery" }, /area/bigredv2/outside/admin_building) "aYq" = ( -/obj/structure/machinery/light{ - dir = 1 - }, /obj/effect/landmark/objective_landmark/far, +/obj/structure/sink{ + pixel_x = 1; + pixel_y = 20 + }, +/obj/structure/mirror{ + pixel_y = 29 + }, /turf/open/floor{ icon_state = "freezerfloor" }, @@ -18184,6 +18144,10 @@ /obj/structure/toilet{ dir = 8 }, +/obj/item/prop/alien/hugger, +/obj/structure/machinery/light{ + dir = 4 + }, /turf/open/floor{ icon_state = "freezerfloor" }, @@ -18303,21 +18267,25 @@ }, /area/bigredv2/outside/c) "aYL" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 8; - icon_state = "carpet6-2" + icon_state = "dark" }, /area/bigredv2/outside/admin_building) "aYM" = ( +/obj/item/prop/alien/hugger, /turf/open/floor{ - dir = 8; - icon_state = "carpet14-10" + dir = 4; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aYN" = ( +/obj/structure/machinery/door/airlock/almayer/command/colony{ + dir = 1; + name = "\improper Operations Meeting Room" + }, /turf/open/floor{ - dir = 8; - icon_state = "carpet10-8" + icon_state = "delivery" }, /area/bigredv2/outside/admin_building) "aYO" = ( @@ -18334,6 +18302,7 @@ name = "Weyland-Yutani Automatic Teller Machine"; pixel_y = 30 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 1; icon_state = "darkred2" @@ -18343,6 +18312,7 @@ /obj/structure/machinery/light{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 1; icon_state = "darkred2" @@ -18467,12 +18437,21 @@ /turf/open/floor, /area/bigredv2/outside/cargo) "aZp" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 + }, /turf/open/floor{ dir = 9; icon_state = "red" }, /area/bigredv2/outside/marshal_office) "aZq" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, /turf/open/floor{ dir = 1; icon_state = "red" @@ -18519,9 +18498,9 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/item/prop/alien/hugger, /turf/open/floor{ - dir = 8; - icon_state = "carpet7-3" + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "aZA" = ( @@ -18532,16 +18511,10 @@ /area/bigredv2/outside/admin_building) "aZB" = ( /obj/structure/bed/chair/comfy/black, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aZC" = ( -/turf/open/floor{ - dir = 8; - icon_state = "carpet11-12" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aZE" = ( /turf/open/floor{ @@ -18578,6 +18551,13 @@ icon_state = "dark" }, /area/bigredv2/outside/chapel) +"aZJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "aZK" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 @@ -18606,6 +18586,11 @@ /area/bigredv2/outside/cargo) "aZP" = ( /obj/structure/machinery/camera/autoname, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1; + pixel_y = -1 + }, /turf/open/floor{ dir = 5; icon_state = "red" @@ -18627,28 +18612,36 @@ /turf/open/floor, /area/bigredv2/outside/cargo) "aZS" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/camera/autoname{ + dir = 1 + }, /turf/open/floor{ - dir = 8; - icon_state = "carpet7-3" + icon_state = "white" }, /area/bigredv2/outside/admin_building) "aZT" = ( /obj/structure/surface/table, -/obj/structure/machinery/computer3/laptop/secure_data, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/obj/structure/prop/server_equipment/laptop/on, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aZU" = ( -/obj/structure/bed/chair/office/dark{ +/obj/structure/bed/chair/comfy/blue{ dir = 8 }, +/turf/open/floor/carpet, +/area/bigredv2/outside/admin_building) +"aZV" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/tool, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor{ dir = 8; - icon_state = "carpet15-15" + icon_state = "darkyellow2" }, -/area/bigredv2/outside/admin_building) +/area/bigredv2/outside/filtration_plant) "aZW" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -18815,10 +18808,9 @@ }, /area/bigredv2/outside/chapel) "bax" = ( -/turf/open/mars{ - icon_state = "mars_dirt_11" - }, -/area/bigredv2/outside/w) +/obj/structure/closet/emcloset, +/turf/open/floor, +/area/bigredv2/outside/cargo) "bay" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -18871,13 +18863,10 @@ }, /area/bigredv2/outside/cargo) "baG" = ( -/obj/structure/bed/chair/office/dark{ +/obj/structure/bed/chair/comfy/blue{ dir = 4 }, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "baI" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/colony{ @@ -18889,6 +18878,7 @@ /area/bigredv2/outside/admin_building) "baJ" = ( /obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, /turf/open/floor, /area/bigredv2/outside/admin_building) "baK" = ( @@ -19029,10 +19019,7 @@ "bbj" = ( /obj/structure/surface/table, /obj/item/alienjar, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "bbk" = ( /obj/structure/machinery/light{ @@ -19058,7 +19045,9 @@ /area/bigredv2/outside/admin_building) "bbm" = ( /obj/structure/surface/table, -/obj/structure/machinery/computer/med_data/laptop, +/obj/structure/machinery/computer/med_data/laptop{ + dir = 4 + }, /turf/open/floor{ dir = 8; icon_state = "carpet15-15" @@ -19073,11 +19062,14 @@ }, /area/bigredv2/outside/admin_building) "bbo" = ( -/obj/structure/bed/chair, +/obj/structure/bed/chair/comfy/blue, +/obj/effect/decal/cleanable/dirt, /turf/open/floor, /area/bigredv2/outside/admin_building) "bbp" = ( -/obj/structure/bed/chair, +/obj/structure/bed/sofa/south/grey/left{ + pixel_y = 6 + }, /obj/structure/machinery/atm{ name = "Weyland-Yutani Automatic Teller Machine"; pixel_y = 30 @@ -19085,7 +19077,9 @@ /turf/open/floor, /area/bigredv2/outside/admin_building) "bbq" = ( -/obj/structure/bed/chair, +/obj/structure/bed/sofa/south/grey{ + pixel_y = 6 + }, /obj/structure/machinery/light{ dir = 1 }, @@ -19095,6 +19089,7 @@ /obj/structure/surface/table, /obj/item/storage/photo_album, /obj/item/tool/pen/red, +/obj/effect/decal/cleanable/dirt, /turf/open/floor, /area/bigredv2/outside/admin_building) "bbs" = ( @@ -19316,14 +19311,16 @@ }, /area/bigredv2/outside/admin_building) "bbY" = ( -/obj/structure/bed/chair/office/dark, +/obj/structure/bed/chair/comfy/blue, /turf/open/floor{ icon_state = "wood" }, /area/bigredv2/outside/admin_building) "bbZ" = ( /obj/structure/surface/table, -/obj/structure/machinery/computer/cameras/wooden_tv, +/obj/structure/machinery/computer/cameras/wooden_tv{ + dir = 8 + }, /obj/structure/machinery/light{ dir = 4 }, @@ -19366,6 +19363,13 @@ icon_state = "white" }, /area/bigredv2/outside/office_complex) +"bcg" = ( +/obj/effect/decal/cleanable/liquid_fuel, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "bch" = ( /obj/structure/surface/table, /obj/item/clipboard, @@ -19421,10 +19425,12 @@ }, /area/bigredv2/outside/virology) "bcp" = ( -/turf/open/mars{ - icon_state = "mars_dirt_10" +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/w) +/area/bigredv2/outside/space_port_lz2) "bcq" = ( /obj/effect/landmark/crap_item, /turf/open/floor{ @@ -19434,18 +19440,19 @@ /area/bigredv2/outside/w) "bcr" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidwarning" +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) "bcs" = ( -/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 4 + }, /turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" + dir = 8; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) "bct" = ( /obj/structure/barricade/wooden{ desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; @@ -19487,7 +19494,7 @@ /turf/open/floor, /area/bigredv2/outside/cargo) "bcy" = ( -/obj/structure/machinery/vending/cigarette, +/obj/structure/machinery/vending/cigarette/colony, /turf/open/floor, /area/bigredv2/outside/cargo) "bcz" = ( @@ -19534,53 +19541,47 @@ /obj/structure/pipes/vents/pump{ dir = 4 }, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/obj/item/prop/alien/hugger, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "bcF" = ( -/obj/structure/bed/chair/office/dark{ +/obj/structure/bed/chair/comfy/blue{ dir = 8 }, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "bcG" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor{ - dir = 8; - icon_state = "carpet11-12" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "bcH" = ( /obj/structure/pipes/standard/simple/hidden/green{ - dir = 10 + dir = 4 + }, +/turf/open/floor{ + icon_state = "wood" }, -/turf/open/floor, /area/bigredv2/outside/admin_building) "bcI" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 8; icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "bcJ" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 4; + dir = 8; icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) @@ -19707,9 +19708,11 @@ }, /area/bigredv2/outside/chapel) "bdf" = ( +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" + icon_state = "loadingarea" }, /area/bigredv2/outside/cargo) "bdg" = ( @@ -19744,45 +19747,38 @@ }, /area/bigredv2/outside/c) "bdl" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 8; - icon_state = "carpet9-4" + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "bdm" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 5 +/obj/structure/surface/table/woodentable, +/turf/open/floor{ + icon_state = "wood" }, -/turf/open/floor, /area/bigredv2/outside/admin_building) "bdn" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/command/colony{ - name = "\improper Operations Meeting Room" +/obj/structure/machinery/light{ + dir = 1 }, +/obj/structure/surface/table/woodentable, +/obj/item/device/camera, /turf/open/floor{ - icon_state = "delivery" + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "bdo" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 9 - }, /turf/open/floor{ - icon_state = "dark" + dir = 10; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "bdp" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - frequency = 1469; - name = "General Listening Channel"; - pixel_x = 30 - }, +/obj/effect/decal/cleanable/dirt, +/obj/item/prop/alien/hugger, /turf/open/floor{ - dir = 4; + dir = 6; icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) @@ -19795,6 +19791,7 @@ /area/bigredv2/outside/admin_building) "bdr" = ( /obj/structure/machinery/vending/snack, +/obj/effect/decal/cleanable/dirt, /turf/open/floor, /area/bigredv2/outside/admin_building) "bds" = ( @@ -19917,7 +19914,9 @@ /area/bigredv2/outside/cargo) "bdO" = ( /obj/structure/machinery/vending/coffee, -/turf/open/floor, +/turf/open/floor{ + icon_state = "wood" + }, /area/bigredv2/outside/admin_building) "bdP" = ( /obj/structure/machinery/photocopier, @@ -19968,7 +19967,7 @@ dir = 1; icon_state = "asteroidfloor" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/w) "bec" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor, @@ -19978,9 +19977,9 @@ /turf/open/floor, /area/bigredv2/outside/cargo) "bee" = ( -/obj/structure/closet/emcloset, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/obj/structure/cargo_container/kelland/left, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "bef" = ( /obj/structure/surface/table, /obj/effect/spawner/random/toolbox, @@ -20082,10 +20081,9 @@ }, /area/bigredv2/outside/w) "bew" = ( -/turf/open/floor{ - icon_state = "asteroidwarning" - }, -/area/bigredv2/outside/cargo) +/obj/structure/cargo_container/kelland/right, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "bex" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -20093,7 +20091,6 @@ /turf/open/floor, /area/bigredv2/outside/cargo) "bey" = ( -/obj/structure/closet/emcloset, /obj/structure/pipes/vents/pump{ dir = 8 }, @@ -20210,20 +20207,18 @@ }, /area/bigredv2/outside/w) "beR" = ( -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" - }, -/area/bigredv2/outside/cargo) -"beS" = ( /obj/structure/machinery/light{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 8; icon_state = "asteroidwarning" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/w) +"beS" = ( +/obj/structure/lz_sign/solaris_sign, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "beT" = ( /obj/structure/machinery/light{ dir = 8 @@ -20303,22 +20298,25 @@ /obj/structure/machinery/light{ dir = 1 }, +/obj/structure/pipes/vents/pump{ + dir = 4 + }, /turf/open/floor{ icon_state = "dark" }, /area/bigredv2/outside/office_complex) "bfg" = ( -/obj/structure/pipes/vents/pump{ - dir = 4 +/obj/structure/machinery/door/airlock/almayer/maint/colony{ + dir = 1; + name = "\improper General Store Maintenance" }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - icon_state = "dark" + icon_state = "delivery" }, -/area/bigredv2/outside/office_complex) +/area/bigredv2/outside/cargo) "bfh" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 1 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 }, /turf/open/floor{ icon_state = "dark" @@ -20451,7 +20449,6 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/obj/structure/closet/emcloset/legacy, /turf/open/floor{ dir = 1; icon_state = "bot" @@ -20524,8 +20521,8 @@ }, /area/bigredv2/outside/office_complex) "bfK" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 6 +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 8 }, /turf/open/floor{ icon_state = "dark" @@ -20585,13 +20582,13 @@ /turf/open/mars_cave{ icon_state = "mars_dirt_4" }, -/area/bigredv2/outside/w) +/area/bigredv2/outside/space_port_lz2) "bfU" = ( /obj/effect/landmark/hunter_secondary, /turf/open/mars_cave{ icon_state = "mars_dirt_4" }, -/area/bigredv2/outside/w) +/area/bigredv2/outside/space_port_lz2) "bfV" = ( /obj/structure/largecrate/random, /obj/effect/decal/cleanable/dirt, @@ -20601,13 +20598,12 @@ }, /area/bigredv2/outside/cargo) "bfW" = ( -/obj/structure/largecrate, /obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 1; - icon_state = "bot" + dir = 4; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) "bfX" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate/trashcart, @@ -20757,12 +20753,10 @@ }, /area/bigredv2/outside/office_complex) "bgq" = ( -/obj/structure/closet/emcloset, -/turf/open/floor{ - dir = 1; - icon_state = "bot" +/turf/open/mars{ + icon_state = "mars_dirt_14" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) "bgr" = ( /obj/structure/closet/secure_closet/security, /obj/effect/landmark/objective_landmark/close, @@ -20845,9 +20839,12 @@ }, /area/bigredv2/outside/office_complex) "bgC" = ( -/obj/effect/landmark/hunter_secondary, -/turf/open/mars, -/area/bigredv2/outside/w) +/obj/structure/closet/emcloset, +/turf/open/floor{ + dir = 1; + icon_state = "bot" + }, +/area/bigredv2/outside/cargo) "bgD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green, @@ -21018,31 +21015,31 @@ }, /area/bigredv2/caves/mining) "bhb" = ( +/obj/structure/machinery/light, /turf/open/floor{ - icon_state = "floor4" + dir = 1; + icon_state = "bot" }, /area/bigredv2/outside/cargo) "bhc" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/pipes/vents/pump/on, /turf/open/floor{ - icon_state = "floor4" + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) "bhd" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - icon_state = "floor4" - }, -/area/bigredv2/outside/cargo) -"bhe" = ( -/obj/structure/machinery/light, /turf/open/floor{ dir = 1; - icon_state = "bot" + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) +"bhe" = ( +/obj/effect/landmark/hunter_secondary, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "bhf" = ( /obj/structure/machinery/power/apc{ dir = 1 @@ -21159,11 +21156,9 @@ }, /area/bigredv2/outside/space_port_lz2) "bhD" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - icon_state = "floor4" - }, -/area/bigredv2/outside/cargo) +/obj/structure/cargo_container/arious/leftmid, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "bhE" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/light{ @@ -21172,6 +21167,10 @@ /turf/open/floor, /area/bigredv2/outside/cargo) "bhH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor{ dir = 8; icon_state = "red" @@ -21190,12 +21189,22 @@ }, /area/bigredv2/outside/c) "bhM" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5; + pixel_x = -1 + }, /turf/open/floor{ dir = 4; icon_state = "red" }, /area/bigredv2/outside/marshal_office) "bhN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, /turf/open/floor{ dir = 10; icon_state = "red" @@ -21233,8 +21242,9 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/mars{ - icon_state = "mars_dirt_12" +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, /area/bigredv2/outside/c) "bhT" = ( @@ -21308,18 +21318,14 @@ dir = 4 }, /turf/open/floor{ - icon_state = "floor4" + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) "bio" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/obj/structure/cargo_container/arious/rightmid, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "biq" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ @@ -21414,7 +21420,7 @@ /area/bigredv2/outside/space_port_lz2) "biI" = ( /obj/docking_port/stationary/marine_dropship/lz2{ - name = "Engineering Landing Zone" + name = "LZ2: Engineering Landing Zone" }, /turf/open/floor/plating, /area/bigredv2/outside/space_port_lz2) @@ -21522,22 +21528,22 @@ /obj/structure/machinery/camera/autoname/lz_camera, /turf/open/floor/plating, /area/bigredv2/outside/space_port_lz2) -"bjg" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-in" - }, -/turf/open/floor, -/area/bigredv2/outside/cargo) "bjh" = ( /obj/item/reagent_container/spray/cleaner, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "floor4" + }, /area/bigredv2/outside/cargo) "bji" = ( /obj/item/reagent_container/glass/bottle/tramadol, /turf/open/floor, /area/bigredv2/outside/cargo) "bjj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor/plating{ dir = 8; icon_state = "warnplate" @@ -21583,14 +21589,19 @@ }, /area/bigredv2/outside/space_port_lz2) "bjt" = ( -/obj/effect/decal/warning_stripes, -/obj/structure/machinery/constructable_frame{ - density = 1; - icon_state = "box_1" +/obj/structure/surface/table, +/obj/effect/spawner/random/technology_scanner, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) "bjv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5; + pixel_x = -1 + }, /turf/open/floor/plating{ dir = 4; icon_state = "warnplate" @@ -21673,14 +21684,11 @@ }, /area/bigredv2/outside/s) "bjJ" = ( -/obj/structure/machinery/light{ - dir = 1 - }, /turf/open/floor{ - dir = 4; - icon_state = "redcorner" + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/office_complex) +/area/bigredv2/caves_north) "bjK" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -21720,17 +21728,12 @@ }, /area/bigredv2/outside/space_port_lz2) "bjP" = ( -/obj/structure/surface/table, -/obj/item/clothing/ears/earmuffs, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/obj/structure/cargo_container/arious/right, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "bjQ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/turf/closed/wall/solaris, +/area/bigredv2/outside/space_port_lz2) "bjR" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/airlock/almayer/engineering/colony{ @@ -21742,6 +21745,10 @@ }, /area/bigredv2/outside/cargo) "bjX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, /turf/open/floor/plating{ icon_state = "warnplate" }, @@ -21785,8 +21792,9 @@ "bke" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, -/turf/open/mars{ - icon_state = "mars_dirt_12" +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, /area/bigredv2/outside/c) "bkf" = ( @@ -21816,10 +21824,9 @@ }, /area/bigredv2/outside/se) "bkk" = ( -/obj/effect/decal/warning_stripes, -/obj/structure/machinery/constructable_frame, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/obj/structure/cargo_container/horizontal/blue/top, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "bkl" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/science, @@ -21865,8 +21872,8 @@ dir = 1; name = "\improper Atmospherics Condenser" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "bkw" = ( @@ -21874,8 +21881,8 @@ dir = 1; name = "\improper Atmospherics Condenser" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "bkx" = ( @@ -21885,8 +21892,8 @@ dir = 1; name = "\improper Atmospherics Condenser" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "bky" = ( @@ -21923,18 +21930,30 @@ icon_state = "sovietsoda-broken"; stat = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkE" = ( -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkG" = ( /obj/structure/reagent_dispensers/watertank, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkH" = ( /obj/structure/dispenser/oxygen, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkI" = ( /obj/structure/cryofeed/right{ @@ -21953,7 +21972,9 @@ "bkK" = ( /obj/structure/closet/toolcloset, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/filtration_plant) "bkL" = ( /obj/structure/surface/table, @@ -21961,29 +21982,43 @@ dir = 1 }, /obj/item/tank/air, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkM" = ( /obj/structure/surface/table, /obj/effect/spawner/random/bomb_supply, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkN" = ( /obj/structure/surface/table, /obj/effect/spawner/random/tool, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkO" = ( /obj/structure/machinery/light{ dir = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkP" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Atmospherics Condenser Storage" }, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/filtration_plant) "bkS" = ( /obj/structure/closet/toolcloset, @@ -21991,7 +22026,10 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkT" = ( /obj/structure/machinery/portable_atmospherics/powered/scrubber/huge/chan, @@ -22019,16 +22057,18 @@ }, /area/bigredv2/caves/lambda/xenobiology) "blb" = ( -/obj/structure/machinery/blackbox_recorder, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/obj/structure/surface/table, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/space_port_lz2) "blc" = ( -/obj/effect/decal/warning_stripes, -/obj/structure/machinery/constructable_frame{ - icon_state = "box_1" +/obj/structure/surface/table, +/obj/item/clothing/ears/earmuffs, +/turf/open/floor{ + icon_state = "asteroidwarning" }, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) "bld" = ( /obj/structure/surface/table, /obj/effect/spawner/random/tech_supply, @@ -22143,19 +22183,27 @@ /obj/effect/spawner/random/toolbox, /obj/item/tool/extinguisher, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bly" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "blA" = ( /obj/structure/dispenser/oxygen, /obj/structure/machinery/camera/autoname{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "blB" = ( /obj/effect/landmark/survivor_spawner, @@ -22167,24 +22215,34 @@ dir = 4; pixel_x = -30 }, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "blC" = ( /obj/structure/closet/firecloset/full, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "blD" = ( /obj/structure/surface/table, /obj/item/circuitboard/firealarm, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "blE" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/crap_item, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "blF" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ @@ -22198,12 +22256,6 @@ }, /turf/open/floor/plating, /area/bigredv2/outside/filtration_plant) -"blL" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - icon_state = "delivery" - }, -/area/bigredv2/outside/engineering) "blT" = ( /obj/structure/bed/chair/office/light{ dir = 8 @@ -22211,7 +22263,9 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "blV" = ( /obj/structure/bed/chair/office/light{ @@ -22220,7 +22274,9 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "blW" = ( /obj/structure/surface/table, @@ -22230,25 +22286,35 @@ dir = 8 }, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "blX" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "blY" = ( /obj/structure/bed/chair{ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "blZ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bma" = ( /obj/effect/decal/cleanable/dirt, @@ -22257,7 +22323,9 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bmb" = ( /obj/structure/surface/table, @@ -22266,42 +22334,69 @@ pixel_x = 32 }, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bme" = ( /turf/open/mars, /area/bigredv2/outside/sw) "bmf" = ( /obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/engineering) "bmg" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmh" = ( /obj/effect/decal/cleanable/liquid_fuel, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmi" = ( -/turf/open/floor, +/obj/effect/decal/cleanable/liquid_fuel, +/obj/structure/curtain/red, +/turf/open/floor{ + icon_state = "freezerfloor" + }, /area/bigredv2/outside/engineering) "bmj" = ( -/obj/structure/machinery/light{ - dir = 4 - }, /obj/effect/decal/cleanable/liquid_fuel, -/turf/open/floor, +/obj/structure/machinery/shower{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "freezerfloor" + }, /area/bigredv2/outside/engineering) "bml" = ( /obj/structure/machinery/portable_atmospherics/canister/air, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmm" = ( /obj/structure/machinery/portable_atmospherics/canister/air, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmn" = ( /obj/structure/machinery/power/smes/buildable{ @@ -22311,31 +22406,41 @@ /area/bigredv2/outside/engineering) "bmp" = ( /obj/structure/machinery/mill, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmq" = ( /obj/structure/surface/table, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/engineering) -"bmr" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/tool, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bms" = ( /obj/structure/machinery/autolathe, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmt" = ( /obj/structure/machinery/computer/atmos_alert, /obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmu" = ( /obj/structure/machinery/computer/station_alert, /obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmw" = ( /obj/structure/closet/secure_closet/engineering_chief, @@ -22343,20 +22448,32 @@ dir = 1 }, /obj/effect/landmark/objective_landmark/close, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmx" = ( /obj/structure/bookcase/manuals/engineering, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmy" = ( /obj/effect/decal/cleanable/liquid_fuel, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmz" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmA" = ( /obj/structure/barricade/wooden, @@ -22378,33 +22495,49 @@ dir = 4 }, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bmD" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bmF" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bmG" = ( /obj/structure/closet/wardrobe/atmospherics_yellow, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bmH" = ( /obj/structure/surface/table, /obj/item/tool/lighter/random, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bmJ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bmM" = ( /obj/effect/landmark/hunter_primary, @@ -22419,14 +22552,24 @@ "bmO" = ( /obj/effect/decal/cleanable/liquid_fuel, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmP" = ( /obj/effect/decal/cleanable/liquid_fuel, /obj/effect/decal/cleanable/liquid_fuel, /obj/item/stack/sheet/metal, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmQ" = ( /obj/structure/machinery/shower{ @@ -22442,13 +22585,18 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmS" = ( /obj/structure/machinery/portable_atmospherics/canister/air, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bmT" = ( /obj/structure/machinery/power/terminal{ @@ -22474,23 +22622,33 @@ /area/bigredv2/outside/engineering) "bmW" = ( /obj/effect/decal/cleanable/blood, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bmX" = ( /obj/structure/bed/chair/office/dark, /obj/effect/landmark/corpsespawner/engineer, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bmZ" = ( /obj/effect/decal/cleanable/liquid_fuel, /obj/effect/decal/cleanable/liquid_fuel, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bna" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/liquid_fuel, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bnb" = ( /obj/structure/machinery/door_control{ @@ -22498,14 +22656,20 @@ name = "Storm Shutters"; pixel_x = -32 }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnd" = ( /obj/structure/machinery/light{ dir = 4 }, -/obj/structure/machinery/computer3/server/rack, -/turf/open/floor, +/obj/structure/machinery/computer3/server, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bne" = ( /obj/structure/cryofeed, @@ -22518,7 +22682,10 @@ /area/bigredv2/outside/filtration_plant) "bnf" = ( /obj/structure/machinery/computer3/server/rack, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bng" = ( /obj/effect/decal/cleanable/dirt, @@ -22526,12 +22693,16 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bnh" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bnj" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -22540,8 +22711,8 @@ /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Atmospherics Condenser Storage" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "bnl" = ( @@ -22549,66 +22720,93 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bnm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bnn" = ( /obj/structure/pipes/vents/pump, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bno" = ( /obj/effect/decal/cleanable/dirt, /obj/item/device/radio/headset, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bnp" = ( /obj/structure/machinery/computer/area_atmos/area, /obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnq" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bnr" = ( /obj/structure/largecrate/random, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bns" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; name = "\improper Engineering SMES" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bnt" = ( /obj/effect/decal/cleanable/dirt, /obj/item/clothing/glasses/welding, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bnu" = ( /obj/structure/machinery/light{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bnw" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bnx" = ( /obj/structure/surface/table, @@ -22618,7 +22816,9 @@ /obj/effect/decal/cleanable/dirt, /obj/item/clothing/glasses/meson, /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bny" = ( /obj/structure/window/reinforced/toughened{ @@ -22643,41 +22843,55 @@ /obj/structure/surface/table, /obj/item/tool/lighter/zippo, /obj/item/tool/lighter/zippo, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bnA" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor/glass/colony{ dir = 1; name = "\improper Atmospherics Condenser" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "bnB" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bnE" = ( /obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bnF" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bnH" = ( /obj/structure/machinery/computer/general_air_control, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnI" = ( /obj/structure/machinery/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnK" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -22686,40 +22900,53 @@ /obj/structure/machinery/camera/autoname{ dir = 1 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnL" = ( /obj/structure/pipes/standard/manifold/hidden/green, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnM" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnN" = ( /obj/structure/bed/chair{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnO" = ( /obj/structure/machinery/computer/atmos_alert{ dir = 8 }, /obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnQ" = ( /obj/structure/closet/secure_closet/engineering_personal, /obj/structure/machinery/light{ dir = 8 }, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/engineering) "bnR" = ( /obj/structure/machinery/shower{ @@ -22732,30 +22959,40 @@ /area/bigredv2/outside/engineering) "bnS" = ( /obj/item/trash/eat, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bnT" = ( /obj/structure/machinery/door/airlock/almayer/secure/colony{ name = "\improper Engineering Secure Storage" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bnV" = ( /obj/structure/sign/safety/electronics{ pixel_y = 32 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bnW" = ( /obj/structure/pipes/vents/pump, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "bnX" = ( /obj/item/folder/yellow, /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bnY" = ( /obj/structure/machinery/photocopier, @@ -22765,26 +23002,36 @@ name = "General Listening Channel"; pixel_x = 30 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bnZ" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "boa" = ( /obj/structure/bed/chair{ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bob" = ( /obj/structure/bed/chair{ dir = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boc" = ( /obj/structure/machinery/light{ @@ -22792,64 +23039,85 @@ }, /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boe" = ( -/obj/structure/machinery/computer3/server, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bof" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "boj" = ( /obj/structure/closet/secure_closet/engineering_welding, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/engineering) "bok" = ( /obj/structure/largecrate/random, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, -/area/bigredv2/outside/engineering) -"bop" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boq" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bor" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bos" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bou" = ( /obj/structure/machinery/light{ dir = 8 }, /obj/structure/machinery/computer3/server/rack, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bov" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, /obj/item/weapon/twohanded/fireaxe, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "box" = ( /obj/item/frame/table, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "boy" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, @@ -22863,48 +23131,66 @@ /turf/open/floor/plating, /area/bigredv2/outside/filtration_plant) "boD" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ +/obj/structure/surface/table, +/obj/effect/spawner/random/toolbox, +/turf/open/floor{ dir = 1; - name = "\improper Engineering Complex" + icon_state = "asteroidfloor" }, -/turf/open/floor, -/area/bigredv2/outside/engineering) +/area/bigredv2/outside/space_port_lz2) "boG" = ( /obj/structure/closet/secure_closet/engineering_electrical, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/engineering) "boH" = ( /obj/effect/decal/cleanable/liquid_fuel, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/crap_item, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "boI" = ( /obj/structure/machinery/light{ dir = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boK" = ( /obj/item/trash/pistachios, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "boL" = ( /obj/structure/reagent_dispensers/fueltank, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boM" = ( /obj/structure/closet/firecloset/full, /obj/structure/machinery/light{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boN" = ( /obj/structure/closet/firecloset/full, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boR" = ( /obj/structure/surface/table, @@ -22913,14 +23199,19 @@ dir = 1 }, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boS" = ( /obj/structure/surface/table, /obj/effect/spawner/random/tool, /obj/effect/spawner/random/technology_scanner, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boU" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -22928,8 +23219,8 @@ dir = 1; name = "\improper Chief Engineer's Office" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "boV" = ( @@ -22937,17 +23228,22 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Engineering Complex" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "boW" = ( /obj/structure/closet/secure_closet/atmos_personal, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/filtration_plant) "boX" = ( /obj/structure/machinery/pipedispenser, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "boY" = ( /obj/structure/machinery/cm_vending/sorted/tech/tool_storage, @@ -22957,17 +23253,24 @@ phone_id = "Filtration"; pixel_y = 24 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "boZ" = ( /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpa" = ( /obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpc" = ( /obj/structure/barricade/handrail, @@ -22977,26 +23280,41 @@ /area/bigredv2/outside/filtration_plant) "bpe" = ( /obj/effect/landmark/survivor_spawner, -/turf/open/floor, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpf" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bpi" = ( /obj/structure/reagent_dispensers/watertank, /obj/structure/machinery/light{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpj" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpk" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -23004,19 +23322,26 @@ dir = 1; name = "\improper Engineering Tool Storage" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bpl" = ( /obj/structure/machinery/light{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpm" = ( -/obj/effect/landmark/corpsespawner/engineer, -/turf/open/floor, +/obj/structure/surface/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/glasses/welding, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bpn" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -23025,25 +23350,34 @@ /obj/structure/machinery/camera/autoname{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bpo" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpp" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpq" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/item/frame/table, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpu" = ( /obj/structure/machinery/landinglight/ds2/delaythree{ @@ -23055,11 +23389,12 @@ }, /area/bigredv2/outside/space_port_lz2) "bpv" = ( +/obj/structure/pipes/vents/pump/on, /turf/open/floor{ dir = 1; icon_state = "asteroidfloor" }, -/area/bigredv2/outside/sw) +/area/bigredv2/outside/space_port_lz2) "bpx" = ( /turf/open/mars_cave{ icon_state = "mars_dirt_4" @@ -23075,8 +23410,8 @@ dir = 1; name = "\improper Engineering Lockers" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bpA" = ( @@ -23085,44 +23420,51 @@ dir = 1; name = "\improper Engineering Lockers" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bpC" = ( /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpD" = ( /obj/structure/surface/rack, /obj/item/device/camera_film, -/obj/item/device/analyzer, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpE" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/smg/nailgun, -/obj/item/weapon/gun/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/turf/open/floor, +/obj/item/device/analyzer, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpF" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpH" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpI" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -23130,7 +23472,10 @@ }, /obj/effect/decal/cleanable/dirt, /obj/item/device/lightreplacer, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpK" = ( /obj/structure/machinery/light{ @@ -23139,31 +23484,43 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpL" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/landmark/hunter_secondary, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "bpM" = ( -/obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/floor, +/obj/structure/pipes/standard/manifold/fourway/hidden/green, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bpN" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/decal/cleanable/liquid_fuel, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bpO" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bpP" = ( /obj/structure/machinery/camera/autoname{ @@ -23172,7 +23529,9 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpQ" = ( /obj/structure/machinery/light{ @@ -23182,20 +23541,26 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpR" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpS" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/landmark/good_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpT" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -23206,13 +23571,14 @@ "bpU" = ( /obj/structure/machinery/portable_atmospherics/powered/scrubber/huge/stationary, /obj/effect/decal/warning_stripes, -/turf/open/floor, +/turf/open/floor/plating, /area/bigredv2/outside/filtration_plant) "bpV" = ( /obj/effect/decal/warning_stripes{ - icon_state = "N" + icon_state = "N"; + pixel_y = 1 }, -/turf/open/floor, +/turf/open/floor/plating, /area/bigredv2/outside/filtration_plant) "bpX" = ( /turf/open/floor{ @@ -23265,20 +23631,24 @@ /area/bigredv2/outside/space_port_lz2) "bqe" = ( /turf/open/floor{ - dir = 5; - icon_state = "asteroidwarning" + icon_state = "floor4" }, -/area/bigredv2/outside/sw) +/area/bigredv2/outside/cargo) "bqf" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; name = "\improper Engineering Break Room" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bqg" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, /turf/open/floor/plating{ dir = 6; icon_state = "warnplate" @@ -23290,34 +23660,39 @@ dir = 1; pixel_y = -30 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bql" = ( -/obj/effect/decal/cleanable/liquid_fuel, /obj/structure/machinery/door_control{ id = "Engineering"; name = "Storm Shutters"; pixel_y = -32 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bqo" = ( /obj/structure/bed/chair{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bqv" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/turf/open/floor, +/turf/open/floor/plating, /area/bigredv2/outside/filtration_plant) "bqw" = ( /obj/effect/decal/warning_stripes{ icon_state = "E-corner" }, -/turf/open/floor, +/turf/open/floor/plating, /area/bigredv2/outside/filtration_plant) "bqA" = ( /obj/structure/closet/toolcloset, @@ -23338,21 +23713,30 @@ icon_state = "snack-broken"; stat = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bqJ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/camera/autoname{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "bqK" = ( /obj/item/folder/yellow, /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "bqL" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -23361,8 +23745,8 @@ /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Engineering Workshop" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bqM" = ( @@ -23370,29 +23754,39 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bqN" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bqP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 + }, /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; name = "\improper Engine Reactor Control" }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bqT" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/survivor_spawner, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bqV" = ( /obj/structure/machinery/light{ @@ -23401,13 +23795,16 @@ /obj/structure/surface/table, /obj/item/paper, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bqX" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" }, -/turf/open/floor, +/turf/open/floor/plating, /area/bigredv2/outside/filtration_plant) "brb" = ( /obj/structure/machinery/landinglight/ds2{ @@ -23419,28 +23816,29 @@ }, /area/bigredv2/outside/space_port_lz2) "brc" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E-corner" - }, +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ - icon_state = "mars_cave_15" + icon_state = "mars_cave_9" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "brd" = ( /turf/open/floor{ icon_state = "asteroidwarning" }, -/area/bigredv2/outside/sw) +/area/bigredv2/outside/space_port_lz2) "bre" = ( /obj/structure/bed/chair, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "brf" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Engineering Workshop" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "brg" = ( @@ -23448,57 +23846,73 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bri" = ( /obj/effect/decal/cleanable/dirt, /obj/item/stack/sheet/metal, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "brj" = ( /obj/structure/surface/table, /obj/effect/spawner/random/toolbox, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/engineering) -"brm" = ( -/obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "brn" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/technology_scanner, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/obj/structure/transmitter/colony_net{ - phone_category = "Solaris Ridge"; - phone_color = "yellow"; - phone_id = "Engineering"; - pixel_y = 24 +/obj/structure/machinery/power/breakerbox/activated, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" }, -/turf/open/floor, /area/bigredv2/outside/engineering) "bro" = ( /obj/structure/machinery/camera/autoname, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bru" = ( /obj/structure/machinery/vending/cigarette/colony, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "brv" = ( /obj/structure/machinery/vending/snack, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "brw" = ( /obj/structure/machinery/vending/cola, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "brx" = ( /obj/structure/surface/table, /obj/item/stack/cable_coil, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bry" = ( /obj/structure/pipes/standard/manifold/hidden/green{ @@ -23506,14 +23920,18 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "brz" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "brA" = ( /obj/structure/surface/table, @@ -23528,17 +23946,25 @@ pixel_x = 30 }, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "brB" = ( /obj/structure/machinery/light{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "brC" = ( /obj/effect/landmark/good_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "brD" = ( /turf/open/floor/plating, @@ -23547,11 +23973,9 @@ /turf/open/floor/greengrid, /area/bigredv2/outside/filtration_cave_cas) "brG" = ( -/turf/open/floor{ - dir = 8; - icon_state = "asteroidwarning" - }, -/area/bigredv2/outside/sw) +/obj/structure/cargo_container/horizontal/blue/middle, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "brI" = ( /obj/structure/sign/safety/galley{ pixel_x = -32 @@ -23559,42 +23983,61 @@ /obj/item/stack/sheet/metal{ amount = 30 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "brJ" = ( /obj/effect/decal/cleanable/dirt, /obj/item/stack/sheet/glass, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "brK" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/hunter_primary, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "brL" = ( /obj/structure/bed/chair/office/light{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "brM" = ( /obj/structure/surface/table, /obj/effect/spawner/random/powercell, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "brO" = ( /obj/structure/machinery/light{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "brP" = ( /obj/structure/bed/chair/office/light{ dir = 8 }, -/turf/open/floor, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "brR" = ( /obj/item/device/radio/intercom{ @@ -23603,36 +24046,50 @@ name = "General Listening Channel"; pixel_x = 30 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "podhatchfloor" + }, /area/bigredv2/outside/engineering) "brU" = ( /obj/structure/surface/table, /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "brV" = ( /obj/structure/bed/chair/office/light{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "brW" = ( /obj/structure/surface/table, /obj/item/weapon/baton, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "brY" = ( /obj/structure/bed/chair/office/light, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "brZ" = ( /obj/structure/bed/chair/office/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/filtration_plant) "bsa" = ( /obj/structure/machinery/floodlight/landing/floor, @@ -23682,11 +24139,9 @@ amount = 30 }, /obj/effect/landmark/crap_item, -/turf/open/floor, -/area/bigredv2/outside/engineering) -"bso" = ( -/obj/structure/machinery/power/geothermal, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bss" = ( /obj/structure/prop/invuln/minecart_tracks{ @@ -23697,40 +24152,50 @@ }, /turf/open/floor/plating, /area/bigredv2/caves/mining) -"bsu" = ( -/obj/effect/landmark/crap_item, -/turf/open/floor, -/area/bigredv2/outside/engineering) "bsB" = ( /obj/structure/surface/table, /obj/effect/spawner/random/tool, /obj/effect/spawner/random/tool, -/turf/open/floor, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bsC" = ( /obj/structure/surface/table, /obj/effect/spawner/random/technology_scanner, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bsD" = ( /obj/structure/surface/table, /obj/effect/spawner/random/tool, /obj/effect/spawner/random/toolbox, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bsE" = ( /obj/structure/surface/table, /obj/effect/spawner/random/toolbox, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bsF" = ( /obj/structure/surface/table, /obj/item/circuitboard/solar_tracker, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bsG" = ( /obj/structure/closet/wardrobe/engineering_yellow, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/filtration_plant) "bsH" = ( /obj/effect/landmark/hunter_primary, @@ -23746,19 +24211,26 @@ icon_state = "coffee-broken"; stat = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bsK" = ( /obj/structure/machinery/light, /obj/structure/surface/table, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bsL" = ( /obj/effect/landmark/crap_item, /obj/structure/surface/table, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bsM" = ( /obj/structure/machinery/door_control{ @@ -23766,7 +24238,10 @@ name = "Storm Shutters"; pixel_y = -32 }, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bsN" = ( /obj/structure/surface/table, @@ -23778,49 +24253,62 @@ /obj/item/stack/sheet/glass{ amount = 30 }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bsP" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/toolbox, -/turf/open/floor, +/obj/structure/closet/radiation, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/engineering) "bsX" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Engineering Complex" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bsY" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Atmospherics Condenser" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/area/bigredv2/outside/filtration_plant) +/area/bigredv2/outside/engineering) "bsZ" = ( /obj/structure/janitorialcart, -/turf/open/floor, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bta" = ( /obj/structure/machinery/constructable_frame{ icon_state = "box_1" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "btb" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/constructable_frame, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "btc" = ( /obj/structure/surface/table, /obj/structure/machinery/light, /obj/effect/spawner/random/tool, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "btd" = ( /obj/structure/surface/table, @@ -23828,28 +24316,48 @@ /obj/item/stack/sheet/metal{ amount = 30 }, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bte" = ( -/obj/structure/machinery/light, -/turf/open/floor, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/sign/safety/high_rad{ + pixel_x = 32 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bti" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "btj" = ( /obj/structure/bed/chair, /obj/structure/machinery/light{ dir = 1 }, -/turf/open/floor, -/area/bigredv2/outside/filtration_plant) +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "btk" = ( /obj/structure/bed/chair, -/turf/open/floor, -/area/bigredv2/outside/filtration_plant) +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "btn" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor{ @@ -23864,43 +24372,46 @@ }, /area/bigredv2/outside/se) "btr" = ( -/obj/structure/machinery/computer/station_alert{ - dir = 1 - }, -/obj/structure/surface/table, -/turf/open/floor, -/area/bigredv2/outside/engineering) -"bts" = ( -/obj/structure/machinery/power/monitor{ - name = "Main Power Grid Monitoring" +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" }, -/turf/open/floor, /area/bigredv2/outside/engineering) "btt" = ( -/obj/structure/surface/table, -/obj/item/device/analyzer, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/obj/structure/bed/chair/office/light, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "btu" = ( -/obj/structure/machinery/computer/atmos_alert{ - dir = 1 +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" }, -/obj/structure/surface/table, -/turf/open/floor, /area/bigredv2/outside/engineering) +"btv" = ( +/turf/open/floor{ + dir = 10; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/space_port_lz2) "btw" = ( /turf/open/floor/plating, /area/bigredv2/outside/lz2_south_cas) "btA" = ( /obj/effect/landmark/hunter_primary, -/turf/open/floor, -/area/bigredv2/outside/filtration_plant) +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "btB" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor, -/area/bigredv2/outside/filtration_plant) +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "btD" = ( /turf/open/mars_cave{ icon_state = "mars_dirt_7" @@ -23914,8 +24425,8 @@ dir = 1; name = "\improper Engineering Complex" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "btJ" = ( @@ -23923,13 +24434,19 @@ dir = 4 }, /obj/structure/machinery/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "btK" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 1 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/stack/sheet/metal, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" }, -/turf/open/floor, /area/bigredv2/outside/engineering) "btN" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -23939,15 +24456,18 @@ /obj/structure/machinery/light{ dir = 4 }, -/turf/open/floor, -/area/bigredv2/outside/filtration_plant) +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "bua" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Engineering Complex" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bub" = ( @@ -23983,6 +24503,13 @@ icon_state = "asteroidfloor" }, /area/bigredv2/outside/s) +"bup" = ( +/obj/item/stack/sheet/wood, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_7" + }, +/area/bigredv2/caves_north) "buu" = ( /turf/open/mars_cave{ icon_state = "mars_cave_17" @@ -24014,13 +24541,10 @@ }, /area/bigredv2/outside/s) "buP" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E-corner" - }, /turf/open/mars_cave{ - icon_state = "mars_dirt_5" + icon_state = "mars_dirt_6" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "buQ" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/mars_cave{ @@ -25523,7 +26047,9 @@ /obj/structure/surface/table, /obj/item/trash/kepler, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bAp" = ( /obj/structure/pipes/vents/pump{ @@ -25834,9 +26360,12 @@ }, /area/bigredv2/caves/eta/xenobiology) "bBg" = ( -/obj/structure/machinery/power/geothermal, -/turf/open/floor/plating, -/area/bigredv2/outside/medical) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "bBh" = ( /obj/structure/filingcabinet, /turf/open/floor{ @@ -27115,12 +27644,6 @@ icon_state = "delivery" }, /area/bigredv2/outside/office_complex) -"bFh" = ( -/obj/structure/surface/table, -/turf/open/floor{ - icon_state = "wood" - }, -/area/bigredv2/caves/eta/living) "bFw" = ( /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/telecomm/warehouse) @@ -27173,6 +27696,15 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_se) +"bMa" = ( +/obj/structure/surface/rack, +/obj/item/weapon/gun/pistol/mod88, +/obj/item/weapon/gun/pistol/mod88, +/turf/open/floor{ + dir = 8; + icon_state = "redcorner" + }, +/area/bigredv2/outside/admin_building) "bMf" = ( /turf/open/floor{ icon_state = "asteroidwarning" @@ -27212,6 +27744,10 @@ icon_state = "mars_cave_18" }, /area/bigredv2/outside/lz2_west_cas) +"bQe" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor, +/area/bigredv2/outside/admin_building) "bQi" = ( /turf/open/floor{ icon_state = "darkish" @@ -27244,6 +27780,11 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"bSc" = ( +/turf/open/mars_cave{ + icon_state = "mars_cave_14" + }, +/area/bigredv2/outside/ne) "bSw" = ( /obj/structure/cable{ icon_state = "1-4" @@ -27296,17 +27837,36 @@ /area/bigredv2/outside/cargo) "bYp" = ( /obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, /turf/open/floor{ dir = 1; - icon_state = "asteroidwarning" + icon_state = "asteroidfloor" }, /area/bigredv2/outside/telecomm/lz2_cave) +"bYW" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "bZp" = ( /obj/structure/bed/chair{ dir = 4 }, /turf/open/floor/plating, /area/bigredv2/outside/nw/ceiling) +"bZJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/suit/radiation, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "bZL" = ( /obj/effect/landmark/monkey_spawn, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -27324,22 +27884,36 @@ "caN" = ( /obj/structure/surface/table, /obj/effect/landmark/objective_landmark/close, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "ccP" = ( /obj/structure/surface/table, /obj/effect/spawner/random/bomb_supply, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) +"ccU" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony{ + dir = 1; + name = "\improper Medical Clinic Power Station" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/medical) "cdA" = ( /turf/open/mars_cave{ icon_state = "mars_cave_5" }, /area/bigredv2/outside/lz2_west_cas) +"cec" = ( +/obj/structure/bed, +/obj/item/toy/plush/farwa, +/turf/open/floor/plating, +/area/bigredv2/outside/cargo) "ced" = ( /obj/effect/landmark/corpsespawner/ua_riot, /obj/item/weapon/gun/rifle/m41a/training, @@ -27356,6 +27930,13 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"cfS" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 6; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) "cgt" = ( /turf/open/floor{ icon_state = "delivery" @@ -27368,6 +27949,11 @@ icon_state = "mars_cave_18" }, /area/bigredv2/caves_lambda) +"chy" = ( +/turf/open/mars{ + icon_state = "mars_dirt_13" + }, +/area/bigredv2/outside/n) "ciY" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -27376,6 +27962,14 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"cla" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "clB" = ( /turf/open/floor{ dir = 1; @@ -27427,6 +28021,18 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/closed/wall/solaris/rock, /area/bigredv2/caves) +"cnO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/recharge_station, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/dorms) +"coc" = ( +/turf/open/mars{ + icon_state = "mars_dirt_12" + }, +/area/bigredv2/outside/ne) "coT" = ( /obj/effect/landmark/objective_landmark/science, /turf/open/floor{ @@ -27463,6 +28069,11 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"crO" = ( +/turf/open/mars_cave{ + icon_state = "mars_dirt_7" + }, +/area/bigredv2/outside/sw) "crQ" = ( /turf/open/mars_cave{ icon_state = "mars_cave_18" @@ -27495,10 +28106,15 @@ icon_state = "darkyellowcorners2" }, /area/bigredv2/caves/eta/living) -"cuF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/floor, +"cud" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cvi" = ( /obj/effect/decal/cleanable/dirt, @@ -27510,9 +28126,14 @@ }, /area/bigredv2/caves/eta/xenobiology) "cwk" = ( -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/space_port_lz2) "cxi" = ( /obj/structure/machinery/light{ dir = 4 @@ -27530,6 +28151,10 @@ /obj/structure/surface/table/reinforced/prison, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"czS" = ( +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/plating, +/area/bigredv2/outside/admin_building) "czV" = ( /obj/item/tool/pickaxe, /turf/open/mars_cave{ @@ -27569,12 +28194,6 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) -"cFb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/sheet/metal, -/obj/structure/bed/chair/office/light, -/turf/open/floor, -/area/bigredv2/outside/engineering) "cGQ" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/floor{ @@ -27589,7 +28208,10 @@ pixel_x = -32; start_charge = 0 }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "cGZ" = ( /turf/open/mars_cave{ @@ -27629,6 +28251,23 @@ /obj/item/paper/bigred/smuggling, /turf/open/floor, /area/bigredv2/outside/cargo) +"cJa" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1 + }, +/obj/structure/machinery/door/airlock/almayer/command/colony{ + dir = 1; + name = "\improper Operations" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/admin_building) "cJh" = ( /obj/structure/bed/chair{ dir = 8; @@ -27650,6 +28289,12 @@ icon_state = "mars_cave_20" }, /area/bigredv2/caves_north) +"cKu" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "cLZ" = ( /obj/structure/closet/secure_closet/brig, /obj/effect/landmark/objective_landmark/close, @@ -27657,12 +28302,31 @@ icon_state = "dark" }, /area/bigredv2/outside/marshal_office) +"cNb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "cNH" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ icon_state = "delivery" }, /area/bigredv2/outside/bar) +"cOa" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/crap_item, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "cOl" = ( /turf/open/mars_cave{ icon_state = "mars_cave_18" @@ -27739,9 +28403,27 @@ icon_state = "mars_cave_11" }, /area/bigredv2/caves_se) +"cVT" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 8; + health = 25000 + }, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/caves_north) "cVY" = ( /turf/open/mars, /area/bigredv2/outside/space_port_lz2) +"cXG" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) "cYI" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -27760,6 +28442,12 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"cZB" = ( +/obj/structure/pipes/standard/manifold/hidden/green, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "daf" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ @@ -27796,6 +28484,14 @@ icon_state = "delivery" }, /area/bigredv2/outside/c) +"dhN" = ( +/obj/structure/window/framed/solaris, +/obj/structure/machinery/door/poddoor/almayer{ + id = "rad_door"; + name = "\improper Radiation Shielding" + }, +/turf/open/floor/plating, +/area/bigredv2/outside/engineering) "dhS" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -27804,6 +28500,13 @@ icon_state = "mars_cave_15" }, /area/bigredv2/caves/mining) +"dhT" = ( +/obj/structure/fence, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/n) "dij" = ( /obj/structure/fence, /obj/structure/blocker/forcefield/multitile_vehicles, @@ -27811,10 +28514,21 @@ icon_state = "mars_cave_2" }, /area/bigredv2/outside/filtration_cave_cas) +"din" = ( +/obj/structure/machinery/blackbox_recorder, +/obj/item/prop/almayer/flight_recorder/colony{ + pixel_x = -6; + pixel_y = 10 + }, +/turf/open/floor{ + icon_state = "podhatchfloor" + }, +/area/bigredv2/outside/admin_building) "dlr" = ( -/obj/effect/landmark/static_comms/net_two, -/turf/open/floor, -/area/bigredv2/outside/general_store) +/turf/open/mars_cave{ + icon_state = "mars_cave_13" + }, +/area/bigredv2/outside/n) "dmB" = ( /obj/item/tool/pickaxe, /turf/open/mars, @@ -27877,6 +28591,19 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"dsm" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) +"dsy" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "dtf" = ( /obj/structure/prop/server_equipment/broken, /turf/open/floor{ @@ -27885,19 +28612,28 @@ }, /area/bigredv2/caves/lambda/research) "dtX" = ( -/obj/structure/barricade/wooden{ - desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; - dir = 4; - health = 25000 - }, /turf/open/mars_cave{ icon_state = "mars_cave_14" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "duo" = ( /obj/effect/landmark/corpsespawner/colonist/burst, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"duA" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) +"duI" = ( +/obj/structure/machinery/door/airlock/almayer/command/colony{ + name = "\improper Operations" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/admin_building) "dvB" = ( /obj/item/ore/coal{ pixel_x = 9; @@ -27910,10 +28646,23 @@ /area/bigredv2/caves/mining) "dvC" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/area/bigredv2/outside/filtration_plant) +/area/bigredv2/outside/engineering) +"dwe" = ( +/obj/item/tool/warning_cone{ + pixel_x = 16; + pixel_y = 14 + }, +/turf/open/mars, +/area/bigredv2/outside/n) +"dwg" = ( +/obj/structure/cargo_container/arious/rightmid, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/space_port_lz2) "dwL" = ( /obj/structure/bed/chair{ buckling_y = 5; @@ -27942,6 +28691,21 @@ "dyv" = ( /turf/open/mars, /area/bigredv2/caves/eta/xenobiology) +"dyH" = ( +/obj/structure/machinery/computer/area_atmos{ + dir = 1 + }, +/obj/structure/surface/table, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"dzs" = ( +/turf/open/mars{ + icon_state = "mars_dirt_8" + }, +/area/bigredv2/outside/n) "dzY" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ @@ -27962,6 +28726,14 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"dBm" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "dBE" = ( /obj/item/trash/cigbutt/cigarbutt{ pixel_x = 2; @@ -27978,6 +28750,17 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"dBU" = ( +/obj/structure/barricade/handrail{ + dir = 1; + layer = 3.01; + pixel_y = 9 + }, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "dCb" = ( /obj/effect/landmark/corpsespawner/security/marshal, /obj/effect/decal/cleanable/blood/oil, @@ -28111,6 +28894,13 @@ icon_state = "mars_cave_5" }, /area/bigredv2/outside/lambda_cave_cas) +"dMT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/ne) "dNd" = ( /obj/item/stack/cable_coil/cut, /turf/open/mars_cave{ @@ -28135,6 +28925,11 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"dNH" = ( +/turf/open/mars_cave{ + icon_state = "mars_dirt_7" + }, +/area/bigredv2/outside/n) "dOu" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -28170,6 +28965,12 @@ icon_state = "mars_cave_23" }, /area/bigredv2/caves/mining) +"dQw" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_5" + }, +/area/bigredv2/caves_sw) "dQF" = ( /obj/effect/spawner/random/tool, /turf/open/mars_cave{ @@ -28177,16 +28978,13 @@ }, /area/bigredv2/caves/mining) "dQZ" = ( -/obj/structure/machinery/door/airlock/almayer/engineering/colony{ - name = "\improper Engine Reactor Control" - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, +/obj/structure/closet/toolcloset, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - icon_state = "delivery" + dir = 5; + icon_state = "darkyellow2" }, -/area/bigredv2/outside/engineering) +/area/bigredv2/outside/filtration_plant) "dSg" = ( /obj/effect/landmark/crap_item, /obj/effect/decal/cleanable/dirt, @@ -28195,6 +28993,12 @@ }, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"dTa" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_9" + }, +/area/bigredv2/outside/ne) "dUj" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = -8; @@ -28216,15 +29020,25 @@ icon_state = "mars_cave_5" }, /area/bigredv2/outside/lz2_south_cas) +"dWd" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "dWg" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/mars{ - icon_state = "mars_dirt_12" +/turf/open/mars_cave{ + icon_state = "mars_cave_13" }, -/area/bigredv2/outside/c) +/area/bigredv2/outside/ne) "dWl" = ( /obj/structure/closet/toolcloset, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "dXs" = ( /obj/item/tool/pickaxe{ @@ -28268,6 +29082,13 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"ebr" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "ebZ" = ( /turf/open/floor{ icon_state = "darkgreencorners2" @@ -28318,10 +29139,26 @@ icon_state = "mars_dirt_6" }, /area/bigredv2/caves/mining) +"egL" = ( +/obj/structure/surface/table, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "egS" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"eiS" = ( +/obj/structure/closet/coffin/woodencrate, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) "eju" = ( /obj/item/ore{ pixel_x = 9; @@ -28395,6 +29232,12 @@ }, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"eoU" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "w-y2" + }, +/area/bigredv2/outside/admin_building) "epe" = ( /turf/open/floor{ dir = 1; @@ -28407,8 +29250,14 @@ }, /area/bigredv2/caves/mining) "erf" = ( -/turf/closed/wall/solaris, -/area/bigredv2/outside/c) +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/camera/autoname{ + dir = 1 + }, +/turf/open/floor, +/area/bigredv2/outside/dorms) "ers" = ( /obj/effect/landmark/nightmare{ insert_tag = "etatunnel" @@ -28485,12 +29334,26 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"ewv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/curtain/red, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/engineering) "exc" = ( /turf/open/floor{ dir = 4; icon_state = "asteroidwarning" }, /area/bigred/ground/garage_workshop) +"eyA" = ( +/obj/structure/largecrate/random/barrel/true_random, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) "ezQ" = ( /obj/structure/largecrate/supply/supplies/flares, /turf/open/floor/plating{ @@ -28498,6 +29361,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"eAG" = ( +/obj/item/stack/sheet/wood, +/turf/open/mars_cave{ + icon_state = "mars_cave_20" + }, +/area/bigredv2/caves_north) "eAU" = ( /turf/open/floor{ dir = 4; @@ -28572,10 +29441,9 @@ }, /area/bigredv2/caves_sw) "eGM" = ( -/obj/structure/surface/table, -/obj/item/device/lightreplacer, -/obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "eHA" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -28583,6 +29451,23 @@ icon_state = "dark" }, /area/bigredv2/caves/eta/xenobiology) +"eIB" = ( +/obj/item/tool/warning_cone{ + pixel_y = 20 + }, +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) +"eIN" = ( +/obj/structure/machinery/power/port_gen/pacman, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "eJE" = ( /turf/open/floor{ dir = 4; @@ -28607,7 +29492,10 @@ pixel_x = 30; throw_range = 15 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "eLp" = ( /obj/structure/closet/secure_closet/brig, @@ -28674,13 +29562,29 @@ insert_tag = "crashlanding-eva" }, /turf/closed/wall/solaris, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/bar) +"eSm" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "eSu" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/mars_cave{ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"eSN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "eTj" = ( /obj/structure/reagent_dispensers/fueltank/gas, /turf/open/mars{ @@ -28721,6 +29625,11 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"eVZ" = ( +/turf/open/mars{ + icon_state = "mars_dirt_10" + }, +/area/bigredv2/outside/n) "eWd" = ( /turf/open/floor{ dir = 1; @@ -28766,13 +29675,10 @@ /turf/open/floor/plating, /area/bigredv2/caves/mining) "fbF" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E-corner" - }, /turf/open/mars_cave{ - icon_state = "mars_dirt_4" + icon_state = "mars_cave_9" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "fcG" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/firecloset, @@ -28790,6 +29696,15 @@ "fdy" = ( /turf/open/floor, /area/bigredv2/caves/eta/living) +"fdC" = ( +/obj/structure/barricade/handrail{ + dir = 8 + }, +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/c) "feN" = ( /turf/open/floor{ dir = 9; @@ -28811,9 +29726,23 @@ /area/bigredv2/caves/lambda/research) "fgE" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/static_comms/net_two, -/turf/open/floor, +/obj/effect/decal/remains/human, +/obj/effect/landmark/static_comms/net_two{ + broken_on_spawn = 1 + }, +/turf/open/floor{ + icon_state = "podhatchfloor" + }, /area/bigredv2/outside/engineering) +"fhy" = ( +/obj/structure/bed/chair/comfy/blue{ + dir = 8 + }, +/turf/open/floor{ + dir = 8; + icon_state = "carpet15-15" + }, +/area/bigredv2/outside/admin_building) "fhI" = ( /obj/effect/landmark/hunter_secondary, /turf/open/mars_cave{ @@ -28875,11 +29804,23 @@ icon_state = "darkyellowcorners2" }, /area/bigredv2/caves/eta/living) +"fnv" = ( +/obj/structure/bed/chair/comfy, +/turf/open/floor/carpet, +/area/bigredv2/caves/lambda/breakroom) "fnO" = ( /turf/open/mars_cave{ icon_state = "mars_cave_13" }, /area/bigredv2/caves/mining) +"foj" = ( +/obj/structure/largecrate/random/barrel/true_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) "foB" = ( /turf/open/mars_cave{ icon_state = "mars_cave_22" @@ -28902,6 +29843,10 @@ }, /turf/closed/wall/wood, /area/bigredv2/caves/mining) +"fpt" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/river, +/area/bigredv2/outside/c) "fus" = ( /turf/open/mars_cave{ icon_state = "mars_cave_7" @@ -29004,6 +29949,17 @@ /obj/structure/pipes/standard/tank/phoron, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"fBo" = ( +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) +"fBU" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_13" + }, +/area/bigredv2/caves_north) "fCb" = ( /turf/open/floor, /area/bigredv2/outside/filtration_cave_cas) @@ -29013,6 +29969,14 @@ icon_state = "darkred2" }, /area/bigredv2/caves/eta/research) +"fEv" = ( +/obj/structure/machinery/door/airlock/almayer/secure/colony{ + name = "\improper Engine Reactor" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/engineering) "fFG" = ( /obj/structure/largecrate/random/barrel, /turf/open/mars_cave{ @@ -29060,6 +30024,12 @@ icon_state = "mars_cave_6" }, /area/bigredv2/caves_virology) +"fLl" = ( +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "fLA" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, @@ -29108,6 +30078,11 @@ icon_state = "dark" }, /area/bigredv2/caves/lambda/xenobiology) +"fNh" = ( +/turf/open/mars_cave{ + icon_state = "mars_cave_9" + }, +/area/bigredv2/caves_lambda) "fOc" = ( /turf/open/mars_cave{ icon_state = "mars_cave_3" @@ -29140,7 +30115,10 @@ /obj/structure/surface/table, /obj/effect/spawner/random/toolbox, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "fOM" = ( /obj/effect/decal/warning_stripes{ @@ -29149,6 +30127,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"fPB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/bigredv2/outside/admin_building) "fQv" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "A heavy duty power cable for high voltage applications"; @@ -29210,12 +30192,38 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_plant) +"fUp" = ( +/obj/structure/machinery/door/airlock/almayer/secure/colony{ + dir = 1; + name = "\improper Engine Reactor" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/engineering) +"fVm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) "fWw" = ( /turf/open/jungle{ bushes_spawn = 0; icon_state = "grass_impenetrable" }, /area/bigredv2/caves/eta/xenobiology) +"fXm" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "fYH" = ( /turf/closed/wall/solaris/reinforced/hull, /area/bigredv2/caves/mining) @@ -29245,8 +30253,8 @@ }, /area/bigredv2/outside/eta) "gad" = ( -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "gan" = ( @@ -29260,6 +30268,12 @@ icon_state = "bcircuitoff" }, /area/bigredv2/caves/lambda/research) +"gbt" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/outside/ne) "gcR" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ @@ -29269,6 +30283,12 @@ "gda" = ( /turf/open/mars_cave, /area/bigredv2/outside/lz1_telecomm_cas) +"gdx" = ( +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "gdN" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/mars, @@ -29278,6 +30298,14 @@ icon_state = "mars_dirt_6" }, /area/bigredv2/outside/lz1_north_cas) +"gfX" = ( +/obj/structure/sign/safety/hazard{ + pixel_y = -32 + }, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "ggC" = ( /obj/structure/surface/rack, /obj/effect/landmark/good_item, @@ -29296,6 +30324,10 @@ "gio" = ( /turf/open/mars_cave, /area/bigredv2/outside/filtration_cave_cas) +"giB" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave, +/area/bigredv2/caves_sw) "giY" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -29335,11 +30367,28 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/lz2_south_cas) +"gmm" = ( +/obj/structure/window/framed/solaris, +/obj/effect/decal/cleanable/molten_item, +/obj/structure/machinery/door/poddoor/almayer{ + id = "rad_door"; + name = "\improper Radiation Shielding" + }, +/turf/open/floor/plating, +/area/bigredv2/outside/engineering) "gmN" = ( /turf/open/mars_cave{ icon_state = "mars_cave_18" }, /area/bigredv2/caves_lambda) +"gnk" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic/solid{ + name = "\improper Dormitories Restroom" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/dorms) "gnR" = ( /obj/structure/largecrate/random/barrel/red, /obj/effect/decal/cleanable/dirt, @@ -29405,9 +30454,26 @@ icon_state = "mars_dirt_4" }, /area/space) +"gtG" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 8; + health = 25000 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_5" + }, +/area/bigredv2/caves_north) "gtX" = ( /turf/open/mars_cave, /area/bigredv2/caves_se) +"guu" = ( +/obj/structure/machinery/light, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "guM" = ( /turf/open/mars_cave{ icon_state = "mars_dirt_4" @@ -29421,6 +30487,32 @@ icon_state = "delivery" }, /area/bigredv2/caves/lambda/breakroom) +"gvI" = ( +/obj/structure/transmitter/colony_net{ + dir = 4; + do_not_disturb = 1; + phone_category = "Lambda Labs"; + phone_color = "red"; + phone_id = "Director's Safe Room"; + pixel_x = -18 + }, +/turf/open/floor{ + dir = 1; + icon_state = "elevatorshaft" + }, +/area/bigredv2/caves/lambda/breakroom) +"gwb" = ( +/turf/open/mars{ + icon_state = "mars_dirt_3" + }, +/area/bigredv2/outside/ne) +"gwg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "gxJ" = ( /turf/open/mars_cave{ icon_state = "mars_cave_18" @@ -29460,16 +30552,18 @@ }, /area/bigredv2/caves/mining) "gAE" = ( -/obj/structure/sink{ - dir = 1; - pixel_y = -9 +/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/open/floor{ + icon_state = "whitegreenfull" }, -/turf/open/floor, /area/bigredv2/outside/hydroponics) "gCx" = ( /obj/structure/surface/table, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "gCC" = ( /obj/structure/closet/secure_closet, @@ -29497,6 +30591,20 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_east) +"gFR" = ( +/obj/structure/machinery/power/port_gen/pacman, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"gGC" = ( +/obj/structure/fence, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) "gGO" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating{ @@ -29510,6 +30618,13 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"gHV" = ( +/obj/structure/surface/table, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "gJw" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave, @@ -29520,6 +30635,18 @@ icon_state = "mars_cave_4" }, /area/bigredv2/caves_virology) +"gKG" = ( +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) +"gML" = ( +/obj/structure/machinery/power/turbine, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "gNz" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -29541,6 +30668,15 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_research) +"gPh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/door/airlock/almayer/secure/colony{ + name = "\improper Engine Reactor" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/engineering) "gPE" = ( /obj/effect/decal/cleanable/dirt, /obj/item/device/flashlight/lantern, @@ -29549,6 +30685,14 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"gQP" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/surface/table, +/obj/effect/spawner/random/toolbox, +/turf/open/floor, +/area/bigredv2/outside/cargo) "gSg" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor{ @@ -29584,12 +30728,47 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"gUD" = ( +/obj/structure/barricade/handrail{ + dir = 1; + layer = 3.01; + pixel_y = 9 + }, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"gVl" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "gVm" = ( /turf/open/floor{ dir = 6; icon_state = "darkblue2" }, /area/bigredv2/caves/eta/research) +"gWU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "gXp" = ( /turf/open/mars_cave{ icon_state = "mars_cave_6" @@ -29614,12 +30793,63 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_sw) +"gYM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/open/floor{ + icon_state = "whitegreenfull" + }, +/area/bigredv2/outside/hydroponics) +"gZc" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/sign/safety/high_rad{ + pixel_x = -32 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"haT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "hcb" = ( /obj/effect/landmark/hunter_secondary, /turf/open/mars_cave{ icon_state = "mars_cave_2" }, /area/bigredv2/outside/lz1_telecomm_cas) +"hcH" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/tool, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"hdc" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"hdJ" = ( +/obj/item/stack/sheet/wood, +/turf/open/mars_cave{ + icon_state = "mars_cave_9" + }, +/area/bigredv2/caves_north) "heG" = ( /obj/structure/bed/chair{ can_buckle = 0; @@ -29634,22 +30864,18 @@ }, /area/bigredv2/caves/mining) "heI" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/obj/structure/machinery/door/poddoor/almayer/closed{ - dir = 4; - id = "lambda"; - name = "Lambda Lockdown" - }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/mars_cave{ + icon_state = "mars_cave_17" }, -/area/bigredv2/caves_lambda) +/area/bigredv2/outside/n) "heU" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, /turf/open/floor{ - dir = 4; - icon_state = "asteroidwarning" + icon_state = "floor4" }, -/area/bigredv2/outside/sw) +/area/bigredv2/outside/cargo) "hfB" = ( /obj/item/ore{ pixel_x = -5; @@ -29664,6 +30890,12 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/outside/lz1_north_cas) +"hhK" = ( +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "hiP" = ( /obj/structure/sign/safety/one{ pixel_x = 16 @@ -29679,6 +30911,15 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/bigredv2/caves/eta/storage) +"hkY" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "hmm" = ( /turf/open/floor{ icon_state = "delivery" @@ -29753,7 +30994,9 @@ "hsF" = ( /obj/structure/closet/firecloset/full, /obj/effect/landmark/objective_landmark/close, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "hsJ" = ( /obj/item/ore, @@ -29762,20 +31005,13 @@ icon_state = "asteroidfloor" }, /area/bigredv2/outside/filtration_plant) -"htp" = ( -/obj/structure/transmitter/colony_net{ - callable = 0; - dir = 4; - phone_category = "Lambda Labs"; - phone_color = "red"; - phone_id = "Secure Storage"; - pixel_x = -18 - }, +"hul" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/tool/hatchet, /turf/open/floor{ - dir = 1; - icon_state = "elevatorshaft" + icon_state = "freezerfloor" }, -/area/bigredv2/caves/lambda/breakroom) +/area/bigredv2/outside/dorms) "hvQ" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -29798,6 +31034,13 @@ icon_state = "dark" }, /area/bigredv2/caves/lambda/research) +"hxs" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/effect/landmark/objective_landmark/far, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) "hyv" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, @@ -29976,7 +31219,7 @@ }, /area/bigredv2/outside/lambda_cave_cas) "hSP" = ( -/obj/structure/machinery/vending/cigarette, +/obj/structure/machinery/vending/cigarette/colony, /turf/open/mars_cave{ icon_state = "mars_dirt_6" }, @@ -30012,6 +31255,18 @@ icon_state = "mars_cave_15" }, /area/bigredv2/caves/mining) +"hYB" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 5 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "hYI" = ( /obj/effect/landmark/xeno_hive_spawn, /obj/effect/landmark/ert_spawns/groundside_xeno, @@ -30047,6 +31302,15 @@ }, /turf/open/floor, /area/bigredv2/outside/cargo) +"iaq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/vending/cigarette/colony, +/turf/open/floor, +/area/bigredv2/outside/general_offices) +"iaC" = ( +/obj/structure/platform, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "iaN" = ( /obj/structure/largecrate/random/barrel/red, /obj/effect/decal/cleanable/dirt, @@ -30072,6 +31336,19 @@ icon_state = "mars_cave_6" }, /area/bigredv2/caves_sw) +"idM" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"idO" = ( +/turf/open/floor{ + dir = 5; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/virology) "iep" = ( /obj/structure/surface/rack, /obj/item/clothing/head/hardhat/dblue{ @@ -30118,6 +31395,13 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"igi" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 9; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) "igM" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = 6 @@ -30140,6 +31424,11 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/outside/eta) +"iig" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/framed/solaris, +/turf/open/floor/plating, +/area/bigredv2/outside/engineering) "ijU" = ( /obj/structure/prop/almayer/cannon_cables{ name = "\improper Cables" @@ -30153,6 +31442,9 @@ icon_state = "floor1" }, /area/bigredv2/oob) +"ilN" = ( +/turf/closed/wall/solaris, +/area/bigredv2/outside/n) "ilO" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 1 @@ -30230,14 +31522,18 @@ /obj/effect/spawner/random/technology_scanner, /turf/open/floor/plating, /area/bigredv2/outside/filtration_plant) +"isk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/vending/snack, +/turf/open/floor, +/area/bigredv2/outside/general_offices) "isr" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E-corner" - }, -/turf/open/mars_cave{ - icon_state = "mars_cave_19" +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/telecomm/n_cave) "itL" = ( /obj/structure/closet/l3closet/virology, /obj/effect/landmark/objective_landmark/science, @@ -30271,15 +31567,29 @@ }, /area/bigredv2/outside/lambda_cave_cas) "iyd" = ( -/obj/structure/machinery/computer/general_air_control, +/obj/structure/machinery/computer/general_air_control{ + dir = 8; + pixel_y = 6 + }, /obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "iyY" = ( /turf/open/mars_cave{ icon_state = "mars_cave_13" }, /area/bigredv2/outside/lz1_north_cas) +"izb" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/technology_scanner, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "izh" = ( /turf/open/mars_cave{ icon_state = "mars_cave_2" @@ -30308,6 +31618,12 @@ icon_state = "mars_cave_11" }, /area/bigredv2/caves_sw) +"iAI" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "iDJ" = ( /obj/effect/landmark/corpsespawner/miner, /obj/effect/decal/cleanable/blood{ @@ -30330,6 +31646,17 @@ icon_state = "darkgreencorners2" }, /area/bigredv2/caves/eta/research) +"iDT" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "darkredcorners2" + }, +/area/bigredv2/outside/admin_building) "iDW" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, @@ -30346,6 +31673,14 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"iFa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/bananapeel, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "iGK" = ( /turf/open/mars_cave, /area/bigredv2/caves_sw) @@ -30386,16 +31721,14 @@ }, /area/bigredv2/caves/mining) "iNR" = ( -/turf/open/mars_cave{ - icon_state = "mars_cave_20" - }, -/area/bigredv2/caves_sw) +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "iOL" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ icon_state = "mars_dirt_4" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "iPE" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 1 @@ -30409,12 +31742,10 @@ /turf/open/gm/river, /area/bigredv2/outside/filtration_plant) "iQC" = ( -/obj/structure/surface/table, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/effect/landmark/crap_item, +/turf/open/floor{ + icon_state = "dark" }, -/obj/item/clothing/head/welding, -/turf/open/floor, /area/bigredv2/outside/engineering) "iQG" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -30423,10 +31754,9 @@ }, /area/bigredv2/caves_research) "iRf" = ( -/obj/structure/fence, /turf/open/floor{ dir = 1; - icon_state = "asteroidfloor" + icon_state = "asteroidwarning" }, /area/bigredv2/outside/telecomm/n_cave) "iRw" = ( @@ -30444,6 +31774,20 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_research) +"iSc" = ( +/turf/open/mars{ + icon_state = "mars_dirt_11" + }, +/area/bigredv2/outside/n) +"iSz" = ( +/obj/structure/barricade/handrail{ + dir = 1; + layer = 3.01; + pixel_y = 9 + }, +/obj/structure/barricade/handrail, +/turf/open/floor/plating/plating_catwalk, +/area/bigredv2/outside/engineering) "iUe" = ( /turf/open/floor{ dir = 6; @@ -30472,6 +31816,13 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_cave_cas) +"iXL" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "iXN" = ( /obj/item/ore{ pixel_x = -7; @@ -30496,12 +31847,20 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_plant) +"iZc" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "iZh" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E-corner" +/turf/open/floor{ + dir = 5; + icon_state = "asteroidwarning" }, -/turf/open/mars_cave, -/area/bigredv2/caves_north) +/area/bigredv2/outside/telecomm/n_cave) "iZi" = ( /obj/structure/machinery/light, /turf/open/floor{ @@ -30556,6 +31915,17 @@ icon_state = "mars_dirt_3" }, /area/bigredv2/outside/s) +"jfn" = ( +/obj/structure/window/framed/solaris/reinforced, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Engineering"; + name = "\improper Engineering Shutters" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/bigredv2/outside/engineering) "jfr" = ( /turf/open/floor{ dir = 5; @@ -30601,11 +31971,6 @@ }, /turf/open/floor/plating, /area/bigredv2/outside/general_store) -"jjt" = ( -/obj/structure/bed, -/obj/item/toy/farwadoll, -/turf/open/floor/plating, -/area/bigredv2/outside/cargo) "jkn" = ( /obj/structure/surface/table, /obj/effect/decal/cleanable/dirt, @@ -30624,6 +31989,14 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"jku" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/tool/surgery/hemostat, +/obj/effect/decal/cleanable/blood, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/dorms) "jkO" = ( /obj/item/explosive/grenade/high_explosive/frag, /turf/open/mars_cave, @@ -30635,6 +32008,17 @@ /obj/structure/reagent_dispensers/fueltank/gas, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"jmY" = ( +/turf/open/mars{ + icon_state = "mars_dirt_8" + }, +/area/bigredv2/outside/sw) +"jna" = ( +/obj/item/prop/alien/hugger, +/turf/open/floor{ + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "jnR" = ( /turf/open/floor{ dir = 9; @@ -30667,7 +32051,9 @@ /area/bigredv2/outside/dorms) "joi" = ( /obj/effect/landmark/static_comms/net_one, -/turf/open/floor/plating, +/turf/open/floor{ + icon_state = "bcircuit" + }, /area/bigredv2/outside/telecomm/warehouse) "jpT" = ( /obj/structure/surface/table, @@ -30708,6 +32094,11 @@ }, /area/bigredv2/caves/mining) "jtX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, /turf/open/floor/plating{ dir = 10; icon_state = "warnplate" @@ -30722,10 +32113,17 @@ icon_state = "podhatch" }, /area/bigredv2/caves/lambda/research) +"jvh" = ( +/obj/structure/largecrate/supply, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) "jvt" = ( -/obj/structure/lz_sign/solaris_sign, +/obj/structure/cargo_container/horizontal/blue/bottom, /turf/open/mars, -/area/bigredv2/outside/w) +/area/bigredv2/outside/space_port_lz2) "jwj" = ( /obj/structure/platform/shiva{ dir = 8 @@ -30735,6 +32133,19 @@ icon_state = "bcircuitoff" }, /area/bigredv2/caves/lambda/research) +"jxA" = ( +/obj/structure/barricade/handrail, +/turf/open/floor/plating/plating_catwalk, +/area/bigredv2/outside/engineering) +"jxS" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "jzD" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor{ @@ -30742,8 +32153,13 @@ }, /area/bigredv2/caves/lambda/virology) "jAm" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/effect/landmark/objective_landmark/far, +/obj/structure/coatrack{ + pixel_x = -8; + pixel_y = 16 + }, +/obj/item/clothing/shoes/black{ + pixel_y = -7 + }, /turf/open/floor{ icon_state = "wood" }, @@ -30755,6 +32171,11 @@ icon_state = "mars_cave_5" }, /area/bigredv2/caves_sw) +"jAJ" = ( +/turf/open/floor{ + icon_state = "podhatchfloor" + }, +/area/bigredv2/outside/engineering) "jAN" = ( /obj/item/tool/pickaxe, /turf/open/mars_cave{ @@ -30810,6 +32231,14 @@ }, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"jDT" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/technology_scanner, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "jEx" = ( /obj/structure/machinery/power/port_gen/pacman/super, /turf/open/mars_cave{ @@ -30897,6 +32326,21 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_sw) +"jMn" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/ash, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"jMB" = ( +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/caves_north) "jOc" = ( /obj/structure/machinery/door/poddoor/almayer/closed{ dir = 4; @@ -30950,6 +32394,16 @@ /obj/item/storage/firstaid/fire, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"jQe" = ( +/obj/structure/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/c) "jQS" = ( /obj/structure/prop/almayer/cannon_cable_connector{ name = "\improper Cable connector" @@ -30958,6 +32412,43 @@ icon_state = "floor5" }, /area/bigredv2/oob) +"jRi" = ( +/obj/item/ammo_magazine/smg/bizon{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/weapon/gun/smg/bizon{ + pixel_x = 1; + pixel_y = 11 + }, +/obj/item/ammo_magazine/smg/bizon{ + pixel_x = 11; + pixel_y = -3 + }, +/obj/item/ammo_magazine/smg/bizon, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" + }, +/area/bigredv2/caves/mining) +"jRn" = ( +/obj/structure/machinery/computer3/server, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"jTk" = ( +/obj/structure/surface/table, +/obj/effect/decal/cleanable/molten_item, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "jUc" = ( /obj/structure/surface/table, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, @@ -31015,6 +32506,16 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"jWa" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "jWj" = ( /obj/effect/decal/cleanable/blood, /turf/open/mars_cave{ @@ -31038,6 +32539,25 @@ icon_state = "mars_cave_13" }, /area/bigredv2/caves/mining) +"jXf" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"jXJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light_construct{ + dir = 8 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "jXP" = ( /obj/item/stack/cable_coil/cut, /turf/open/mars_cave{ @@ -31059,7 +32579,9 @@ /area/bigredv2/caves/mining) "jYF" = ( /obj/structure/machinery/recharge_station, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/engineering) "jYS" = ( /obj/effect/decal/cleanable/blood, @@ -31109,6 +32631,12 @@ icon_state = "mars_cave_17" }, /area/bigredv2/outside/filtration_cave_cas) +"kdd" = ( +/turf/open/floor{ + dir = 4; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) "kdf" = ( /obj/item/tool/warning_cone{ pixel_y = 17 @@ -31216,6 +32744,14 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"khP" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "khR" = ( /obj/structure/machinery/floodlight, /turf/open/mars_cave{ @@ -31246,6 +32782,15 @@ icon_state = "mars_dirt_6" }, /area/bigredv2/caves/mining) +"kka" = ( +/obj/structure/barricade/handrail, +/obj/structure/barricade/handrail{ + dir = 1; + layer = 3.01; + pixel_y = 9 + }, +/turf/open/floor/plating/plating_catwalk, +/area/bigredv2/outside/engineering) "kli" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/mars_cave{ @@ -31279,6 +32824,17 @@ icon_state = "delivery" }, /area/bigredv2/outside/admin_building) +"kmx" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) +"knF" = ( +/turf/open/mars_cave{ + icon_state = "mars_dirt_6" + }, +/area/bigredv2/outside/ne) "knN" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -31293,9 +32849,30 @@ icon_state = "mars_cave_7" }, /area/bigredv2/outside/filtration_cave_cas) +"kos" = ( +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) +"kpd" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "kpf" = ( -/turf/closed/wall/solaris/rock, -/area/bigredv2/caves_lambda) +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/turf/open/mars_cave{ + icon_state = "mars_cave_16" + }, +/area/bigredv2/caves_north) "kqS" = ( /turf/open/floor{ icon_state = "wood" @@ -31321,6 +32898,13 @@ /obj/effect/decal/cleanable/blood/writing, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"ksO" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "ktE" = ( /obj/item/tool/wrench{ pixel_x = -7; @@ -31338,6 +32922,13 @@ icon_state = "mars_cave_17" }, /area/bigredv2/outside/filtration_plant) +"ktY" = ( +/obj/effect/landmark/survivor_spawner, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "kuu" = ( /obj/effect/decal/cleanable/dirt, /obj/item/trash/cigbutt, @@ -31407,6 +32998,11 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"kCm" = ( +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/outside/ne) "kDs" = ( /obj/structure/surface/table, /obj/item/reagent_container/food/drinks/cans/waterbottle{ @@ -31417,6 +33013,12 @@ icon_state = "mars_cave_3" }, /area/bigredv2/caves/mining) +"kED" = ( +/obj/structure/cargo_container/kelland/left, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/space_port_lz2) "kFe" = ( /obj/structure/largecrate/random/barrel/white, /turf/open/floor{ @@ -31441,6 +33043,19 @@ icon_state = "asteroidfloor" }, /area/bigredv2/outside/space_port_lz2) +"kIv" = ( +/obj/structure/curtain/red, +/obj/item/prop/alien/hugger, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) +"kIF" = ( +/obj/structure/bed/chair/comfy/orange{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/bigredv2/caves/lambda/breakroom) "kIW" = ( /obj/structure/fence, /turf/open/floor{ @@ -31458,6 +33073,13 @@ icon_state = "darkred2" }, /area/bigredv2/caves/eta/research) +"kLW" = ( +/obj/effect/landmark/crap_item, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/ne) "kMs" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "Righty tighty, lefty loosey!"; @@ -31499,6 +33121,21 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_research) +"kNK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) +"kNP" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/caves_lambda) "kPu" = ( /obj/structure/machinery/power/terminal{ dir = 1 @@ -31524,8 +33161,14 @@ /turf/open/mars_cave, /area/bigredv2/caves_east) "kRo" = ( -/turf/open/floor/plating, +/turf/open/floor{ + icon_state = "bcircuit" + }, /area/bigredv2/outside/telecomm/warehouse) +"kRK" = ( +/obj/structure/window/framed/solaris/reinforced, +/turf/open/floor/plating, +/area/bigredv2/outside/admin_building) "kSm" = ( /obj/item/storage/belt/grenade, /obj/structure/closet/crate, @@ -31563,6 +33206,13 @@ /obj/effect/decal/cleanable/blood, /turf/open/floor, /area/bigredv2/outside/filtration_cave_cas) +"kTC" = ( +/obj/structure/surface/table, +/obj/item/stack/sheet/glass{ + amount = 30 + }, +/turf/open/floor, +/area/bigredv2/outside/cargo) "kVS" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ @@ -31570,10 +33220,10 @@ }, /area/bigredv2/outside/filtration_cave_cas) "kVT" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" }, -/turf/open/floor, /area/bigredv2/outside/engineering) "kVY" = ( /obj/structure/surface/rack, @@ -31605,6 +33255,16 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_lambda) +"laX" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 9; + pixel_y = -3 + }, +/turf/open/floor{ + icon_state = "white" + }, +/area/bigredv2/outside/medical) "lbZ" = ( /obj/item/frame/rack, /obj/effect/decal/cleanable/dirt, @@ -31620,6 +33280,13 @@ }, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"lck" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "lcu" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/clothing/mask/cigarette, @@ -31678,6 +33345,13 @@ }, /turf/open/floor, /area/bigredv2/outside/lz2_south_cas) +"lmi" = ( +/obj/structure/closet/toolcloset, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "lms" = ( /turf/open/floor{ dir = 6; @@ -31697,6 +33371,16 @@ icon_state = "mars_cave_3" }, /area/bigredv2/caves/mining) +"lqo" = ( +/obj/item/tool/lighter/random, +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/obj/structure/surface/table, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "lrH" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ @@ -31793,11 +33477,16 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/closed/wall/solaris/reinforced, /area/bigredv2/caves) +"lAF" = ( +/obj/item/paper_bin, +/obj/item/tool/pen, +/obj/structure/surface/table/woodentable/fancy, +/turf/open/floor/wood, +/area/bigredv2/caves/lambda/breakroom) "lAK" = ( /obj/effect/landmark/static_comms/net_two, /turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" + icon_state = "bcircuit" }, /area/bigredv2/outside/telecomm/lz2_cave) "lBc" = ( @@ -31848,6 +33537,14 @@ icon_state = "redfull" }, /area/bigredv2/caves/eta/research) +"lEi" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "lEw" = ( /obj/item/tool/pickaxe{ pixel_y = -3 @@ -31897,6 +33594,15 @@ }, /turf/closed/wall/solaris, /area/bigredv2/outside/cargo) +"lMw" = ( +/obj/structure/machinery/sensortower{ + pixel_x = -9 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/caves_lambda) "lMB" = ( /obj/effect/landmark/nightmare{ insert_tag = "lz1cave" @@ -31944,6 +33650,10 @@ }, /area/bigredv2/outside/virology) "lRu" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, /turf/open/floor{ dir = 4; icon_state = "asteroidwarning" @@ -31971,6 +33681,10 @@ }, /area/bigredv2/caves/mining) "lSL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor{ dir = 8; icon_state = "asteroidwarning" @@ -31984,6 +33698,23 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_cave_cas) +"lTi" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"lTM" = ( +/obj/item/folder/yellow, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "lUd" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -31998,11 +33729,10 @@ }, /area/bigredv2/caves_se) "lVm" = ( -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor{ - icon_state = "asteroidwarning" +/turf/open/mars_cave{ + icon_state = "mars_cave_2" }, -/area/bigredv2/outside/telecomm/n_cave) +/area/bigredv2/outside/n) "lVr" = ( /obj/effect/landmark/monkey_spawn, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -32037,6 +33767,12 @@ icon_state = "platingdmg2" }, /area/bigredv2/caves/mining) +"lYH" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "lYZ" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -32049,8 +33785,8 @@ }, /area/bigredv2/caves/mining) "maD" = ( -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "maF" = ( @@ -32059,11 +33795,28 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"maH" = ( +/obj/structure/surface/table, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"mcc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/vending/cola, +/turf/open/floor, +/area/bigredv2/outside/general_offices) "mdU" = ( /obj/structure/machinery/power/apc{ dir = 1; start_charge = 0 }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, /turf/open/floor{ dir = 4; icon_state = "asteroidwarning" @@ -32080,6 +33833,17 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"mhx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/item/stack/sheet/glass{ + amount = 30 + }, +/turf/open/floor, +/area/bigredv2/outside/cargo) "mhF" = ( /obj/structure/machinery/light{ dir = 4 @@ -32097,6 +33861,21 @@ }, /turf/closed/wall/solaris/reinforced/hull, /area/bigredv2/caves/mining) +"mhZ" = ( +/obj/structure/machinery/portable_atmospherics/canister/air, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"mij" = ( +/obj/item/folder/yellow, +/obj/effect/landmark/crap_item, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "miD" = ( /obj/effect/decal/cleanable/blood, /obj/effect/landmark/corpsespawner/security/marshal, @@ -32111,6 +33890,13 @@ }, /turf/open/floor, /area/bigred/ground/garage_workshop) +"mlV" = ( +/obj/structure/surface/table, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "mmg" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/drip{ @@ -32125,33 +33911,18 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) -"mmz" = ( -/obj/item/ammo_magazine/pistol/skorpion{ - pixel_x = 5; - pixel_y = -5 - }, -/obj/item/weapon/gun/pistol/skorpion{ - pixel_x = 1; - pixel_y = 11 - }, -/obj/item/ammo_magazine/pistol/skorpion{ - pixel_x = 11; - pixel_y = -3 - }, -/obj/item/ammo_magazine/pistol/skorpion, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating{ - dir = 8; - icon_state = "platingdmg3" - }, -/area/bigredv2/caves/mining) "moE" = ( /turf/open/mars_cave{ icon_state = "mars_cave_9" }, /area/bigredv2/caves_research) +"mpn" = ( +/obj/structure/fence, +/turf/open/floor{ + dir = 4; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/n) "mqf" = ( /obj/structure/bed/chair{ dir = 8; @@ -32163,6 +33934,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"mqh" = ( +/obj/structure/window/framed/solaris, +/turf/open/floor{ + icon_state = "panelscorched" + }, +/area/bigredv2/outside/engineering) "mqX" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/mars_cave{ @@ -32170,13 +33947,9 @@ }, /area/bigredv2/caves/mining) "mrH" = ( -/obj/structure/machinery/blackbox_recorder, -/obj/item/prop/almayer/flight_recorder/colony{ - pixel_x = -6; - pixel_y = 10 - }, +/obj/structure/machinery/computer3/server, /turf/open/floor{ - icon_state = "dark" + icon_state = "podhatchfloor" }, /area/bigredv2/outside/admin_building) "mrS" = ( @@ -32292,6 +34065,16 @@ icon_state = "mars_cave_15" }, /area/bigredv2/outside/lz1_north_cas) +"mEH" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "mFT" = ( /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /obj/effect/landmark/corpsespawner/russian, @@ -32307,9 +34090,9 @@ }, /area/bigredv2/outside/lz1_north_cas) "mGS" = ( -/obj/effect/landmark/static_comms/net_one, +/obj/effect/landmark/static_comms/net_two, /turf/open/floor{ - icon_state = "dark" + icon_state = "podhatchfloor" }, /area/bigredv2/outside/admin_building) "mHp" = ( @@ -32342,6 +34125,12 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_plant) +"mJH" = ( +/obj/structure/cargo_container/arious/leftmid, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/space_port_lz2) "mKM" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_y = 6 @@ -32382,6 +34171,14 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"mPK" = ( +/obj/effect/decal/cleanable/liquid_fuel, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "mRi" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, /turf/open/mars_cave{ @@ -32400,6 +34197,24 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/c) +"mSS" = ( +/turf/open/floor{ + dir = 8; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) +"mST" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 8; + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "mUy" = ( /turf/open/mars_cave{ icon_state = "mars_cave_7" @@ -32424,6 +34239,14 @@ icon_state = "mars_dirt_5" }, /area/bigredv2/caves/mining) +"mWI" = ( +/turf/open/mars_cave, +/area/bigredv2/outside/n) +"mWJ" = ( +/turf/open/mars{ + icon_state = "mars_dirt_9" + }, +/area/bigredv2/outside/sw) "mXw" = ( /obj/item/storage/toolbox/mechanical, /turf/open/mars_cave{ @@ -32485,6 +34308,12 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"ndw" = ( +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "ndy" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = -3; @@ -32506,11 +34335,25 @@ icon_state = "mars_dirt_6" }, /area/bigredv2/caves/mining) +"niQ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "njf" = ( /turf/open/mars_cave{ icon_state = "mars_dirt_6" }, /area/bigredv2/outside/lz2_south_cas) +"nky" = ( +/obj/structure/machinery/vending/coffee, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor, +/area/bigredv2/outside/admin_building) "nkQ" = ( /turf/open/mars_cave{ icon_state = "mars_cave_23" @@ -32536,6 +34379,12 @@ icon_state = "mars_dirt_6" }, /area/bigredv2/caves/mining) +"nlJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "nlW" = ( /obj/structure/platform/kutjevo/rock, /obj/structure/platform/kutjevo/rock{ @@ -32544,6 +34393,13 @@ /obj/structure/platform_decoration/kutjevo/rock, /turf/open/mars, /area/space) +"nmU" = ( +/obj/structure/surface/table, +/obj/item/device/analyzer, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "nny" = ( /turf/open/mars_cave{ icon_state = "mars_dirt_7" @@ -32556,6 +34412,23 @@ icon_state = "asteroidfloor" }, /area/bigredv2/outside/e) +"nnU" = ( +/obj/structure/machinery/door_control{ + desc = "A remote control-switch for opening the engines blast doors."; + id = "rad_door"; + name = "Reactor Radiation Shielding control"; + pixel_x = 30; + req_access_txt = "7" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "npz" = ( /obj/structure/surface/table, /obj/item/spacecash/c100, @@ -32613,6 +34486,41 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"nug" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 9 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) +"nuw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) +"nuz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/handrail, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"nwB" = ( +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "nwS" = ( /obj/item/ore{ pixel_x = -7; @@ -32630,6 +34538,13 @@ icon_state = "mars_cave_3" }, /area/bigredv2/caves/mining) +"nzN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "nBb" = ( /obj/item/ammo_magazine/pistol/b92fs, /obj/item/weapon/gun/pistol/b92fs{ @@ -32667,6 +34582,14 @@ icon_state = "mars_dirt_5" }, /area/bigredv2/outside/eta) +"nEP" = ( +/obj/structure/surface/table, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/filtration_plant) "nEV" = ( /obj/item/weapon/twohanded/folded_metal_chair{ pixel_x = -10; @@ -32686,6 +34609,13 @@ icon_state = "mars_cave_3" }, /area/bigredv2/caves/mining) +"nFH" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/bigredv2/caves_lambda) "nGm" = ( /obj/structure/fence, /obj/structure/blocker/forcefield/multitile_vehicles, @@ -32699,10 +34629,18 @@ }, /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/admin_building) +"nGU" = ( +/obj/structure/toilet{ + dir = 1 + }, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/dorms) "nHb" = ( /turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" + icon_state = "bcircuit" }, /area/bigredv2/outside/telecomm/lz2_cave) "nHQ" = ( @@ -32716,6 +34654,23 @@ icon_state = "delivery" }, /area/bigredv2/outside/filtration_cave_cas) +"nIi" = ( +/obj/structure/machinery/door/airlock/almayer/secure/colony{ + dir = 1; + name = "\improper Engine Reactor" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/bigredv2/outside/engineering) +"nIs" = ( +/obj/structure/window/framed/solaris, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Greenhouse"; + name = "\improper Greenhouse Shutters" + }, +/turf/open/floor/plating, +/area/bigredv2/outside/hydroponics) "nKL" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "An exchange valve"; @@ -32729,6 +34684,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"nLw" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/sw) "nMB" = ( /obj/structure/machinery/door_control{ id = "workshop_br_g"; @@ -32748,6 +34709,15 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"nPz" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "nQl" = ( /obj/item/ore{ pixel_x = -1; @@ -32807,11 +34777,16 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_cave_cas) +"nVa" = ( +/obj/structure/fence, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/n) "nVq" = ( -/obj/structure/surface/table, -/obj/item/clothing/glasses/welding, -/obj/structure/pipes/vents/pump, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "nVw" = ( /turf/open/mars_cave{ @@ -32865,6 +34840,14 @@ /obj/item/tool/warning_cone, /turf/open/mars, /area/bigredv2/outside/s) +"nZD" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "nZK" = ( /obj/item/ore/diamond, /obj/item/stack/sheet/mineral/diamond{ @@ -32908,6 +34891,15 @@ icon_state = "wood" }, /area/bigredv2/caves/eta/living) +"ocR" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/caves_lambda) "odw" = ( /obj/structure/bed, /turf/open/floor/plating, @@ -32919,6 +34911,12 @@ icon_state = "dark" }, /area/bigredv2/caves/lambda/breakroom) +"oeT" = ( +/obj/item/stack/sheet/wood, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/caves_north) "ofn" = ( /obj/effect/decal/cleanable/dirt, /turf/closed/wall/solaris, @@ -32978,7 +34976,13 @@ /turf/open/mars{ icon_state = "mars_dirt_6" }, -/area/bigredv2/outside/sw) +/area/bigredv2/outside/space_port_lz2) +"ojD" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "okh" = ( /obj/structure/cable{ icon_state = "4-8" @@ -32997,6 +35001,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"ole" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "w-y0" + }, +/area/bigredv2/outside/admin_building) "olT" = ( /obj/effect/landmark/corpsespawner/engineer, /turf/open/shuttle/escapepod{ @@ -33073,13 +35083,15 @@ }, /area/bigredv2/outside/filtration_cave_cas) "ooP" = ( -/obj/structure/toilet{ - pixel_y = 8 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/obj/effect/landmark/lv624/xeno_tunnel, -/turf/open/floor{ - icon_state = "freezerfloor" +/obj/structure/machinery/door_control{ + id = "Dormitories"; + name = "Storm Shutters"; + pixel_y = -32 }, +/turf/open/floor, /area/bigredv2/outside/dorms) "opz" = ( /obj/effect/landmark/crap_item, @@ -33110,10 +35122,16 @@ icon_state = "dark" }, /area/bigredv2/caves/eta/research) +"orT" = ( +/obj/structure/machinery/vending/coffee, +/turf/open/floor/carpet, +/area/bigredv2/caves/lambda/breakroom) "orZ" = ( /obj/structure/closet/secure_closet/atmos_personal, /obj/effect/landmark/objective_landmark/medium, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/filtration_plant) "otb" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, @@ -33130,6 +35148,13 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"ouh" = ( +/obj/item/tool/extinguisher, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "ovq" = ( /turf/open/floor{ icon_state = "delivery" @@ -33217,12 +35242,30 @@ icon_state = "vault" }, /area/bigredv2/outside/general_offices) +"oDW" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "oEJ" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/toolbox, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/obj/structure/largecrate/random, +/turf/open/floor{ + icon_state = "asteroidplating" + }, +/area/bigredv2/outside/space_port_lz2) +"oFY" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/item/prop/alien/hugger, +/turf/open/floor{ + dir = 8; + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "oIc" = ( /obj/effect/decal/cleanable/blood{ base_icon = 'icons/obj/items/weapons/grenade.dmi'; @@ -33235,6 +35278,16 @@ icon_state = "mars_cave_3" }, /area/bigredv2/caves/mining) +"oIK" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 6 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "oJd" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "A heavy duty power cable for high voltage applications"; @@ -33303,6 +35356,20 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"oOt" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) +"oOM" = ( +/obj/structure/surface/table, +/obj/item/clothing/under/brown, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/general_offices) "oQz" = ( /obj/structure/machinery/light/double{ dir = 1 @@ -33331,6 +35398,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"oSN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) "oTf" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/barricade/handrail{ @@ -33391,6 +35464,24 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_sw) +"oWe" = ( +/obj/structure/machinery/photocopier{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor{ + dir = 1; + icon_state = "darkblue2" + }, +/area/bigredv2/outside/admin_building) +"oWp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/handrail, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "oWC" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "A heavy duty power cable for high voltage applications"; @@ -33403,6 +35494,12 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"oWM" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_16" + }, +/area/bigredv2/outside/ne) "oXr" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ @@ -33513,6 +35610,12 @@ icon_state = "mars_dirt_10" }, /area/bigredv2/outside/filtration_plant) +"pdG" = ( +/obj/item/prop/alien/hugger, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) "pdN" = ( /obj/effect/landmark/nightmare{ insert_tag = "lz1entrance" @@ -33535,6 +35638,13 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"pgk" = ( +/obj/structure/machinery/portable_atmospherics/canister/air, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "pgu" = ( /obj/effect/decal/warning_stripes{ icon_state = "W-corner" @@ -33584,6 +35694,15 @@ icon_state = "mars_dirt_11" }, /area/bigredv2/caves_north) +"pog" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "pow" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ @@ -33603,6 +35722,16 @@ /obj/structure/sign/safety/hazard, /turf/closed/wall/solaris/rock, /area/bigredv2/caves) +"pri" = ( +/obj/structure/barricade/handrail{ + dir = 1; + pixel_y = 2 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/c) "psE" = ( /obj/effect/landmark/objective_landmark/medium, /turf/open/floor{ @@ -33615,6 +35744,16 @@ }, /turf/open/floor, /area/bigredv2/caves/eta/living) +"ptV" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 4; + health = 25000 + }, +/turf/open/mars_cave{ + icon_state = "mars_cave_19" + }, +/area/bigredv2/caves_north) "puU" = ( /obj/item/paper/bigred/witness, /turf/open/mars_cave{ @@ -33666,6 +35805,44 @@ icon_state = "mars_cave_14" }, /area/bigredv2/caves/mining) +"pxH" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) +"pyU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_y = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) +"pBh" = ( +/obj/structure/surface/table, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/general_offices) +"pBv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "pBD" = ( /turf/open/floor{ dir = 4; @@ -33696,6 +35873,20 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"pEp" = ( +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) +"pGN" = ( +/obj/structure/toilet{ + dir = 1 + }, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/dorms) "pGP" = ( /obj/structure/barricade/handrail{ dir = 4 @@ -33705,6 +35896,13 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_plant) +"pGS" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/tool, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/space_port_lz2) "pHb" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, @@ -33740,12 +35938,28 @@ icon_state = "mars_cave_14" }, /area/bigredv2/caves/mining) +"pKP" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/tool, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "pLj" = ( /obj/structure/largecrate/random/barrel/red, /turf/open/mars_cave{ icon_state = "mars_cave_19" }, /area/bigredv2/caves/mining) +"pMi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/tool/extinguisher, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "pMm" = ( /turf/open/floor{ dir = 8; @@ -33769,12 +35983,38 @@ icon_state = "darkred2" }, /area/bigredv2/caves/eta/research) +"pNU" = ( +/obj/structure/bed, +/obj/item/prop/alien/hugger, +/obj/item/bedsheet/brown{ + layer = 3.1 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) +"pOg" = ( +/obj/structure/machinery/compressor{ + dir = 1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "pOL" = ( /obj/structure/closet/crate/miningcar/yellow, /turf/open/mars_cave{ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"pPo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) "pQv" = ( /obj/structure/surface/table, /obj/effect/landmark/objective_landmark/close, @@ -33791,6 +36031,14 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave, /area/bigredv2/outside/lz1_telecomm_cas) +"pRG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "pRP" = ( /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/telecomm/n_cave) @@ -33830,6 +36078,16 @@ icon_state = "mars_cave_13" }, /area/bigredv2/caves/mining) +"pVv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/compressor{ + dir = 1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "pVP" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor{ @@ -33837,6 +36095,14 @@ icon_state = "asteroidfloor" }, /area/bigred/ground/garage_workshop) +"pWs" = ( +/obj/structure/barricade/handrail{ + dir = 1; + layer = 3.01; + pixel_y = 9 + }, +/turf/open/floor/plating/plating_catwalk, +/area/bigredv2/outside/engineering) "pXm" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -33890,7 +36156,7 @@ }, /area/bigredv2/caves_sw) "pYE" = ( -/obj/item/weapon/gun/shotgun/double/sawn, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /turf/open/shuttle/escapepod{ icon_state = "floor5" }, @@ -33913,6 +36179,11 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"qap" = ( +/turf/open/mars_cave{ + icon_state = "mars_dirt_7" + }, +/area/bigredv2/outside/space_port_lz2) "qaK" = ( /obj/structure/largecrate, /turf/open/floor{ @@ -33925,16 +36196,21 @@ /turf/open/floor/plating, /area/bigredv2/outside/nw/ceiling) "qez" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/mars_cave{ - icon_state = "mars_cave_2" +/obj/structure/fence, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/telecomm/n_cave) "qeK" = ( /obj/structure/surface/table, /obj/effect/spawner/random/tool, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "qeX" = ( /obj/structure/largecrate, @@ -33990,6 +36266,16 @@ icon_state = "mars_cave_6" }, /area/bigredv2/caves/mining) +"qhS" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 4; + health = 25000 + }, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/caves_north) "qiA" = ( /obj/structure/surface/table/reinforced/prison, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, @@ -34038,6 +36324,14 @@ /obj/effect/spawner/random/toolbox, /turf/open/floor, /area/bigred/ground/garage_workshop) +"qlT" = ( +/obj/structure/machinery/camera/autoname{ + dir = 1 + }, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/space_port_lz2) "qmm" = ( /obj/structure/cargo_container/hd/right/alt, /turf/open/floor/plating, @@ -34058,7 +36352,7 @@ /turf/open/mars_cave{ icon_state = "mars_cave_7" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "qoj" = ( /turf/open/mars_cave{ icon_state = "mars_cave_23" @@ -34073,6 +36367,12 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"qoN" = ( +/obj/structure/pipes/standard/manifold/hidden/green, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "qpn" = ( /obj/item/tool/warning_cone{ pixel_x = -6 @@ -34082,6 +36382,13 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_plant) +"qqw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "qrZ" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/firstaid/fire, @@ -34091,8 +36398,11 @@ /turf/closed/wall/solaris/reinforced, /area/bigred/ground/garage_workshop) "qtx" = ( -/turf/closed/wall/solaris/reinforced/hull, -/area/bigredv2/outside/space_port_lz2) +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/caves_north) "qux" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = 6 @@ -34139,6 +36449,27 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"qyi" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkredcorners2" + }, +/area/bigredv2/outside/admin_building) +"qyq" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/c) "qzO" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /obj/structure/machinery/door/poddoor/almayer/closed{ @@ -34218,6 +36549,20 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"qGY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"qHc" = ( +/turf/open/floor{ + dir = 1; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/filtration_plant) "qHY" = ( /turf/open/mars_cave{ icon_state = "mars_cave_10" @@ -34229,6 +36574,13 @@ /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor, /area/bigredv2/outside/cargo) +"qJL" = ( +/obj/structure/fence, +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/n) "qJV" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = -5; @@ -34244,7 +36596,7 @@ insert_tag = "prison" }, /turf/closed/wall/solaris/reinforced, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/marshal_office) "qLk" = ( /obj/item/device/flashlight/lantern, /turf/open/mars_cave{ @@ -34274,6 +36626,15 @@ }, /turf/open/floor, /area/bigred/ground/garage_workshop) +"qNT" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "qOM" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = -9; @@ -34317,6 +36678,15 @@ icon_state = "dark" }, /area/bigredv2/caves/eta/xenobiology) +"qUF" = ( +/obj/structure/machinery/computer/area_atmos{ + dir = 1 + }, +/obj/structure/surface/table, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "qUS" = ( /turf/open/mars_cave{ icon_state = "mars_dirt_6" @@ -34345,6 +36715,13 @@ icon_state = "mars_cave_17" }, /area/bigredv2/caves/mining) +"qXi" = ( +/obj/structure/surface/table/woodentable, +/obj/item/device/pinpointer, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) "qYY" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 8 @@ -34413,6 +36790,13 @@ icon_state = "mars_cave_16" }, /area/bigredv2/caves_research) +"rdr" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "rdR" = ( /turf/open/floor, /area/bigredv2/outside/lz2_south_cas) @@ -34433,6 +36817,12 @@ icon_state = "mars_cave_13" }, /area/bigredv2/caves/mining) +"reL" = ( +/obj/effect/landmark/nightmare{ + insert_tag = "vault_v2" + }, +/turf/closed/wall/solaris/rock, +/area/bigredv2/caves) "rfe" = ( /obj/structure/platform/kutjevo/rock{ dir = 8 @@ -34458,11 +36848,28 @@ dir = 1; start_charge = 0 }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5; + pixel_x = -1 + }, /turf/open/floor/plating{ dir = 4; icon_state = "warnplate" }, /area/bigredv2/outside/telecomm/warehouse) +"rhP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "rie" = ( /obj/effect/decal/cleanable/blood/drip, /obj/item/stack/cable_coil/cut{ @@ -34493,6 +36900,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"rmk" = ( +/obj/effect/landmark/static_comms/net_one, +/turf/open/floor{ + icon_state = "podhatchfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "rml" = ( /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, /turf/open/floor, @@ -34500,6 +36913,12 @@ "rnc" = ( /turf/open/mars_cave, /area/bigredv2/caves_research) +"rnV" = ( +/obj/item/stack/sheet/glass, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "row" = ( /turf/open/floor{ dir = 8; @@ -34521,6 +36940,16 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"rpI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "rqa" = ( /obj/structure/tunnel{ id = "hole4" @@ -34550,6 +36979,9 @@ icon_state = "mars_cave_3" }, /area/bigredv2/caves/mining) +"rsQ" = ( +/turf/closed/wall/r_wall/unmeltable, +/area/bigredv2/outside/c) "rtL" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ @@ -34585,6 +37017,14 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"ruF" = ( +/obj/structure/largecrate/supply, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) "ruS" = ( /obj/structure/bed/chair{ dir = 8; @@ -34594,6 +37034,12 @@ icon_state = "mars_dirt_6" }, /area/bigredv2/caves/mining) +"rvS" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/caves_sw) "rxh" = ( /turf/open/mars_cave{ icon_state = "mars_cave_2" @@ -34605,6 +37051,12 @@ icon_state = "mars_cave_23" }, /area/bigredv2/caves_east) +"rzb" = ( +/obj/structure/bed/chair, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "rzO" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/water_cooler/stacks{ @@ -34837,6 +37289,16 @@ icon_state = "dark" }, /area/bigredv2/caves/eta/storage) +"rTr" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 4; + health = 25000 + }, +/turf/open/mars_cave{ + icon_state = "mars_cave_14" + }, +/area/bigredv2/caves_north) "rTN" = ( /obj/structure/fence, /turf/open/floor{ @@ -34854,6 +37316,23 @@ }, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"rUs" = ( +/obj/structure/machinery/door_control{ + id = "safe_room"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 28; + req_access_txt = "106"; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/bigredv2/caves/lambda/breakroom) +"rUN" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "rUZ" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -34870,6 +37349,12 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"rVx" = ( +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "rWF" = ( /obj/item/stack/cable_coil/cut{ pixel_x = 6; @@ -34909,6 +37394,13 @@ icon_state = "darkpurple2" }, /area/bigredv2/caves/lambda/research) +"rYr" = ( +/obj/structure/surface/table, +/obj/effect/decal/cleanable/ash, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "rYt" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ @@ -34926,6 +37418,14 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"rZi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/roller, +/turf/open/floor{ + dir = 1; + icon_state = "whitegreen" + }, +/area/bigredv2/outside/medical) "rZQ" = ( /obj/structure/surface/table, /obj/item/reagent_container/food/snacks/csandwich, @@ -34936,6 +37436,34 @@ icon_state = "mars_cave_15" }, /area/bigredv2/caves/mining) +"sap" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"saH" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/obj/effect/landmark/objective_landmark/close, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) +"saX" = ( +/obj/structure/machinery/power/turbine, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "sbk" = ( /obj/effect/landmark/corpsespawner/miner, /obj/effect/decal/cleanable/blood, @@ -35008,6 +37536,24 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"shf" = ( +/obj/structure/barricade/handrail{ + dir = 4 + }, +/turf/open/floor{ + dir = 4; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/c) +"shm" = ( +/obj/structure/window/reinforced/tinted, +/obj/structure/machinery/shower{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/dorms) "shV" = ( /turf/open/floor{ icon_state = "asteroidwarning" @@ -35034,11 +37580,17 @@ icon_state = "mars_dirt_5" }, /area/bigredv2/caves/mining) +"slC" = ( +/turf/open/floor{ + dir = 1; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "slG" = ( -/obj/structure/pipes/vents/pump{ - dir = 4 +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + icon_state = "dark" }, -/turf/open/floor, /area/bigredv2/outside/engineering) "smh" = ( /obj/structure/blocker/forcefield/multitile_vehicles, @@ -35071,6 +37623,15 @@ icon_state = "mars_cave_2" }, /area/bigredv2/outside/filtration_cave_cas) +"snv" = ( +/obj/structure/machinery/light_construct{ + dir = 4 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "sog" = ( /obj/item/explosive/grenade/slug/baton{ dir = 1; @@ -35099,6 +37660,17 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"som" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 8; + health = 25000 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_13" + }, +/area/bigredv2/caves_north) "sqc" = ( /obj/effect/decal/cleanable/blood{ base_icon = 'icons/obj/items/weapons/grenade.dmi'; @@ -35145,6 +37717,12 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"stJ" = ( +/turf/open/floor{ + dir = 10; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) "sus" = ( /turf/open/mars_cave{ icon_state = "mars_cave_23" @@ -35191,11 +37769,10 @@ }, /area/bigred/ground/garage_workshop) "svp" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/technology_scanner, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/turf/open/floor{ + icon_state = "asteroidplating" + }, +/area/bigredv2/outside/space_port_lz2) "swJ" = ( /obj/structure/surface/table, /obj/effect/landmark/objective_landmark/science, @@ -35233,20 +37810,39 @@ }, /area/bigredv2/caves/mining) "szg" = ( -/obj/structure/machinery/door/poddoor/almayer/closed{ +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ dir = 4; - id = "lambda"; - name = "Lambda Lockdown" + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) +"szi" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - icon_state = "delivery" + icon_state = "darkred2" }, -/area/bigredv2/caves_lambda) +/area/bigredv2/outside/admin_building) "szw" = ( /turf/open/mars_cave{ icon_state = "mars_dirt_6" }, /area/bigredv2/caves/mining) +"szy" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) +"sAG" = ( +/obj/effect/landmark/hunter_primary, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/caves_sw) "sAS" = ( /obj/item/toy/prize/fireripley{ pixel_y = 19 @@ -35254,6 +37850,17 @@ /obj/structure/surface/table/reinforced/prison, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"sBm" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "sBu" = ( /obj/effect/landmark/hunter_secondary, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -35261,6 +37868,12 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_east) +"sBF" = ( +/obj/structure/cargo_container/kelland/right, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/space_port_lz2) "sCj" = ( /obj/item/stack/cable_coil/cut, /turf/open/mars_cave{ @@ -35268,9 +37881,9 @@ }, /area/bigredv2/caves/mining) "sCt" = ( -/obj/structure/closet/toolcloset, -/obj/structure/machinery/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "sDs" = ( /obj/structure/closet/crate/miningcar, @@ -35290,6 +37903,20 @@ icon_state = "mars_cave_9" }, /area/bigredv2/caves_sw) +"sDO" = ( +/obj/structure/machinery/power/port_gen/pacman, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"sDZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/head/welding, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "sEi" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -35364,9 +37991,15 @@ }, /area/bigredv2/caves_sw) "sLS" = ( -/obj/effect/landmark/objective_landmark/medium, +/obj/structure/machinery/suit_storage_unit/carbon_unit, /turf/open/floor/plating, /area/bigredv2/outside/admin_building) +"sNP" = ( +/obj/structure/window/framed/solaris, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/bigredv2/outside/engineering) "sNQ" = ( /turf/open/mars_cave{ icon_state = "mars_cave_11" @@ -35403,11 +38036,44 @@ icon_state = "mars_cave_23" }, /area/bigredv2/outside/lz1_telecomm_cas) +"sRy" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/command/colony{ + name = "\improper Operations Meeting Room" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/admin_building) "sSU" = ( /turf/open/mars_cave{ icon_state = "mars_cave_19" }, /area/bigredv2/outside/lz2_south_cas) +"sTf" = ( +/obj/structure/surface/table, +/obj/structure/machinery/computer/shuttle/dropship/flight/lz2{ + dir = 1 + }, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/landing/console2) +"sUQ" = ( +/obj/structure/machinery/photocopier, +/turf/open/floor/wood, +/area/bigredv2/caves/lambda/breakroom) +"sVY" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/clothing/under/darkred, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/general_offices) "sWa" = ( /obj/item/ore{ pixel_x = 12; @@ -35473,6 +38139,12 @@ icon_state = "dark" }, /area/bigredv2/caves/eta/xenobiology) +"tap" = ( +/obj/structure/machinery/message_server, +/turf/open/floor{ + icon_state = "podhatchfloor" + }, +/area/bigredv2/outside/admin_building) "tcb" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/pizzabox/meat, @@ -35484,6 +38156,19 @@ icon_state = "mars_cave_3" }, /area/bigredv2/caves_research) +"tcP" = ( +/obj/effect/decal/cleanable/dirt/greenglow, +/turf/closed/wall/solaris/reinforced, +/area/bigredv2/outside/engineering) +"tdn" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/caves_lambda) "tdp" = ( /obj/effect/decal/cleanable/blood{ icon_state = "xgib4" @@ -35500,6 +38185,14 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_se) +"tdN" = ( +/obj/structure/surface/table, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "tdZ" = ( /obj/item/tool/pickaxe/drill, /obj/structure/machinery/light{ @@ -35562,12 +38255,11 @@ /turf/open/floor/plating, /area/bigredv2/caves/mining) "tgk" = ( -/obj/structure/surface/table, -/obj/structure/machinery/computer/shuttle/dropship/flight/lz2{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "floor4" }, -/turf/open/floor, -/area/bigredv2/landing/console2) +/area/bigredv2/outside/cargo) "tgF" = ( /obj/effect/spawner/random/tool, /turf/open/shuttle/escapepod{ @@ -35590,6 +38282,17 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"tju" = ( +/obj/structure/machinery/shower{ + dir = 8 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/engineering) "tkN" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -35599,11 +38302,10 @@ }, /area/bigredv2/caves/lambda/research) "tlj" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ - icon_state = "mars_cave_15" + icon_state = "mars_cave_5" }, -/area/bigredv2/outside/lz1_north_cas) +/area/bigredv2/outside/n) "tlP" = ( /obj/structure/machinery/cm_vending/sorted/tech/tool_storage, /obj/structure/machinery/light{ @@ -35629,6 +38331,16 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves_research) +"tng" = ( +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/caves_lambda) +"toA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/prop/alien/hugger, +/turf/open/floor, +/area/bigredv2/outside/admin_building) "tpR" = ( /obj/structure/bed/chair{ dir = 4; @@ -35654,7 +38366,10 @@ /obj/structure/surface/table, /obj/effect/spawner/random/tool, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "trW" = ( /obj/item/clothing/suit/storage/hazardvest, @@ -35706,6 +38421,15 @@ icon_state = "mars_cave_14" }, /area/bigredv2/outside/lz2_south_cas) +"tub" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "tuu" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -35730,12 +38454,39 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/lz2_south_cas) +"tvH" = ( +/obj/structure/machinery/compressor{ + dir = 1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "twS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, /turf/open/floor{ dir = 1; - icon_state = "asteroidwarning" + icon_state = "asteroidfloor" }, /area/bigredv2/outside/telecomm/lz2_cave) +"tyH" = ( +/obj/item/stack/sheet/wood, +/turf/open/mars_cave{ + icon_state = "mars_cave_6" + }, +/area/bigredv2/caves_north) +"tzJ" = ( +/obj/structure/machinery/door/airlock/almayer/engineering/colony{ + name = "\improper Engine Reactor Control" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/bigredv2/outside/engineering) "tAe" = ( /obj/structure/bed, /obj/effect/landmark/objective_landmark/close, @@ -35782,6 +38533,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"tBD" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "w-y1" + }, +/area/bigredv2/outside/admin_building) "tBK" = ( /obj/structure/surface/rack, /obj/item/tool/pickaxe{ @@ -35816,6 +38573,11 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"tCQ" = ( +/turf/open/mars_cave{ + icon_state = "mars_cave_16" + }, +/area/bigredv2/caves_lambda) "tDk" = ( /obj/structure/machinery/light/double{ dir = 1 @@ -35841,12 +38603,6 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves_research) -"tFM" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" - }, -/area/bigredv2/caves_north) "tFO" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -35855,6 +38611,11 @@ icon_state = "delivery" }, /area/bigredv2/caves/lambda/breakroom) +"tGJ" = ( +/turf/open/floor{ + icon_state = "podhatchfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "tHl" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/mars{ @@ -35867,6 +38628,13 @@ icon_state = "mars_cave_7" }, /area/bigredv2/caves_lambda) +"tIv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "tIA" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/toolbox, @@ -35875,6 +38643,19 @@ }, /turf/open/floor, /area/bigred/ground/garage_workshop) +"tJn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "tJv" = ( /obj/structure/tunnel{ id = "hole3" @@ -35883,6 +38664,21 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"tJH" = ( +/turf/open/floor{ + dir = 6; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/space_port_lz2) +"tKr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) "tKC" = ( /obj/structure/surface/table, /obj/item/reagent_container/food/drinks/cans/beer{ @@ -35902,6 +38698,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"tKE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/ne) "tKR" = ( /turf/open/floor{ icon_state = "delivery" @@ -35929,8 +38731,9 @@ /area/bigredv2/caves/mining) "tPr" = ( /obj/effect/landmark/lv624/xeno_tunnel, -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, /area/bigredv2/outside/ne) "tQo" = ( @@ -35950,6 +38753,17 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_lambda) +"tQY" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 8; + health = 25000 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/caves_north) "tRd" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "A pipe."; @@ -35995,9 +38809,10 @@ }, /area/bigredv2/caves/lambda/research) "tTI" = ( -/obj/structure/surface/table, -/obj/item/pizzabox, -/turf/open/floor, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "tUL" = ( /obj/effect/decal/cleanable/dirt, @@ -36007,6 +38822,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"tVm" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/caves_lambda) "tVn" = ( /obj/item/tool/lighter/zippo, /turf/open/floor, @@ -36045,6 +38866,17 @@ icon_state = "darkpurple2" }, /area/bigredv2/caves/lambda/research) +"uaS" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/engineering/colony{ + name = "\improper Engine Reactor Control" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/bigredv2/outside/engineering) "ubY" = ( /obj/structure/barricade/wooden, /turf/open/mars_cave{ @@ -36059,6 +38891,28 @@ icon_state = "mars_cave_4" }, /area/bigredv2/caves_se) +"uey" = ( +/obj/structure/window/framed/solaris, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Dormitories"; + name = "\improper Dormitories Shutters" + }, +/turf/open/floor/plating, +/area/bigredv2/outside/general_offices) +"ueL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/framed/solaris, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/bigredv2/outside/engineering) +"ueW" = ( +/obj/structure/closet/crate/trashcart, +/turf/open/floor{ + icon_state = "asteroidplating" + }, +/area/bigredv2/outside/space_port_lz2) "ufu" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/oil, @@ -36075,11 +38929,11 @@ }, /area/bigredv2/caves/eta/research) "ufD" = ( -/turf/open/floor{ - dir = 1; - icon_state = "asteroidwarning" - }, -/area/bigredv2/outside/sw) +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table, +/obj/effect/spawner/random/tool, +/turf/open/floor, +/area/bigredv2/outside/cargo) "ugW" = ( /obj/structure/machinery/light/small, /turf/open/floor/plating{ @@ -36165,16 +39019,31 @@ icon_state = "delivery" }, /area/bigredv2/outside/telecomm/lz2_cave) +"uoj" = ( +/obj/effect/decal/remains/human, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/caves_lambda) "upE" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor, /area/bigred/ground/garage_workshop) "upV" = ( /obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "delivery" }, /area/bigredv2/outside/admin_building) +"urn" = ( +/obj/structure/surface/table, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "usg" = ( /obj/item/tool/warning_cone, /turf/open/floor{ @@ -36189,11 +39058,26 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"usF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/handrail{ + dir = 8 + }, +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/c) "usG" = ( /turf/open/mars_cave{ icon_state = "mars_cave_18" }, /area/bigredv2/caves_east) +"utg" = ( +/turf/open/mars{ + icon_state = "mars_dirt_13" + }, +/area/bigredv2/outside/sw) "uuo" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ @@ -36251,6 +39135,14 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"uBi" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "uCa" = ( /obj/effect/landmark/corpsespawner/miner, /turf/open/floor/plating{ @@ -36271,6 +39163,12 @@ }, /turf/closed/wall/wood, /area/bigredv2/caves/mining) +"uDA" = ( +/obj/item/stack/sheet/glass, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "uDI" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "A pipe."; @@ -36320,6 +39218,13 @@ icon_state = "mars_cave_15" }, /area/bigredv2/caves/mining) +"uGs" = ( +/obj/structure/surface/table, +/obj/effect/decal/cleanable/ash, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "uGz" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, @@ -36327,6 +39232,13 @@ icon_state = "darkredcorners2" }, /area/bigredv2/caves/eta/xenobiology) +"uHx" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/open/floor{ + icon_state = "whitegreenfull" + }, +/area/bigredv2/outside/hydroponics) "uHE" = ( /obj/item/tool/warning_cone{ pixel_y = 19 @@ -36355,6 +39267,15 @@ icon_state = "asteroidfloor" }, /area/bigred/ground/garage_workshop) +"uJj" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "uJu" = ( /obj/item/robot_parts/robot_component/diagnosis_unit{ pixel_y = 15 @@ -36379,6 +39300,16 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"uKH" = ( +/obj/structure/stairs/perspective{ + dir = 6; + icon_state = "p_stair_full" + }, +/turf/open/floor{ + dir = 1; + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "uNW" = ( /obj/effect/decal/cleanable/blood{ dir = 8; @@ -36418,6 +39349,10 @@ icon_state = "bcircuitoff" }, /area/bigredv2/caves/lambda/research) +"uQY" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall/solaris/reinforced, +/area/bigredv2/outside/general_offices) "uRE" = ( /obj/effect/landmark/nightmare{ insert_tag = "medbay-passage" @@ -36429,6 +39364,17 @@ icon_state = "floor1" }, /area/bigredv2/oob) +"uSp" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/c) "uSt" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 @@ -36442,6 +39388,13 @@ icon_state = "mars_dirt_10" }, /area/bigredv2/outside/space_port_lz2) +"uTO" = ( +/obj/structure/machinery/pipedispenser, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "uUV" = ( /obj/structure/prop/server_equipment/yutani_server/broken, /turf/open/floor/greengrid, @@ -36452,6 +39405,12 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_cave_cas) +"uVn" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_7" + }, +/area/bigredv2/caves_sw) "uWo" = ( /obj/structure/pipes/standard/manifold/fourway/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -36459,6 +39418,13 @@ icon_state = "dark" }, /area/bigredv2/caves/eta/living) +"uXO" = ( +/obj/structure/sink{ + dir = 1; + pixel_y = -9 + }, +/turf/open/floor, +/area/bigredv2/outside/hydroponics) "uXW" = ( /turf/open/mars_cave{ icon_state = "mars_cave_8" @@ -36475,6 +39441,13 @@ icon_state = "darkpurple2" }, /area/bigredv2/caves/lambda/research) +"vbp" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "vcm" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -36502,6 +39475,17 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"vdl" = ( +/obj/effect/decal/cleanable/liquid_fuel, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "vdS" = ( /obj/item/explosive/grenade/incendiary/molotov{ pixel_x = -10; @@ -36551,15 +39535,19 @@ icon_state = "mars_cave_13" }, /area/bigredv2/caves/mining) -"vis" = ( -/obj/structure/pipes/standard/simple/hidden/green{ +"vin" = ( +/obj/structure/bed/chair{ dir = 4 }, /turf/open/floor{ - dir = 4; - icon_state = "asteroidwarning" + icon_state = "dark" }, -/area/bigredv2/outside/c) +/area/bigredv2/outside/filtration_plant) +"vis" = ( +/turf/open/mars{ + icon_state = "mars_dirt_8" + }, +/area/bigredv2/outside/ne) "viN" = ( /obj/structure/machinery/door_control{ id = "workshop_br_g"; @@ -36651,12 +39639,29 @@ icon_state = "wood" }, /area/bigredv2/outside/library) +"voG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/handrail, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "vpu" = ( /obj/item/weapon/twohanded/folded_metal_chair, /turf/open/mars_cave{ icon_state = "mars_cave_3" }, /area/bigredv2/caves/mining) +"vpx" = ( +/obj/structure/platform, +/obj/structure/flora/jungle/planttop1{ + pixel_y = 10 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "vpY" = ( /obj/structure/machinery/door/poddoor/almayer/closed{ id = "eta"; @@ -36738,11 +39743,12 @@ }, /area/bigredv2/caves/mining) "vwP" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/mars_cave{ - icon_state = "mars_cave_7" +/obj/structure/fence, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/lz1_north_cas) +/area/bigredv2/outside/telecomm/n_cave) "vxQ" = ( /obj/item/tool/pickaxe/gold, /turf/open/floor/plating, @@ -36751,6 +39757,12 @@ /obj/structure/largecrate/random/barrel/red, /turf/open/floor/plating, /area/bigredv2/caves/lambda/xenobiology) +"vzk" = ( +/obj/structure/cargo_container/arious/right, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/space_port_lz2) "vzL" = ( /obj/item/weapon/gun/boltaction, /turf/open/floor/plating{ @@ -36763,11 +39775,16 @@ /turf/open/floor/plating, /area/bigredv2/caves/lambda/xenobiology) "vAy" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/mars_cave{ - icon_state = "mars_cave_9" +/obj/structure/platform_decoration, +/obj/structure/machinery/power/apc{ + dir = 1; + start_charge = 0 }, -/area/bigredv2/caves_north) +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "vBy" = ( /obj/item/ammo_magazine/shotgun/beanbag/riot, /turf/open/mars_cave{ @@ -36797,6 +39814,13 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"vCf" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/toolbox, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "vCU" = ( /turf/open/mars_cave{ icon_state = "mars_cave_16" @@ -36837,6 +39861,16 @@ "vLd" = ( /turf/open/floor, /area/bigred/ground/garage_workshop) +"vMb" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 4; + health = 25000 + }, +/turf/open/mars_cave{ + icon_state = "mars_cave_7" + }, +/area/bigredv2/caves_north) "vMj" = ( /turf/open/mars_cave{ icon_state = "mars_cave_6" @@ -36863,6 +39897,19 @@ icon_state = "mars_cave_5" }, /area/bigredv2/caves_virology) +"vOs" = ( +/obj/structure/coatrack{ + pixel_x = 12 + }, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/suit/storage/windbreaker/windbreaker_gray{ + pixel_x = 11; + pixel_y = 4 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) "vPP" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = 6 @@ -36880,6 +39927,12 @@ icon_state = "white" }, /area/bigredv2/outside/marshal_office) +"vQe" = ( +/obj/structure/machinery/power/apc{ + dir = 1 + }, +/turf/open/floor/plating, +/area/bigredv2/outside/medical) "vQZ" = ( /obj/effect/decal/cleanable/blood{ icon_state = "gib6" @@ -36892,6 +39945,15 @@ /obj/structure/sign/safety/high_voltage, /turf/closed/wall/solaris/reinforced, /area/bigredv2/caves/mining) +"vRJ" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "vRK" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -36912,6 +39974,13 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"vTt" = ( +/obj/structure/surface/table, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "vVl" = ( /obj/structure/machinery/door/airlock/almayer/generic{ name = "\improper Dormitories Toilet" @@ -36921,6 +39990,20 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"vVz" = ( +/obj/structure/machinery/power/geothermal{ + name = "Reactor Turbine"; + power_generation_max = 100000 + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/engineering) +"vVB" = ( +/turf/open/mars_cave{ + icon_state = "mars_cave_15" + }, +/area/bigredv2/caves_lambda) "vVF" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = -5; @@ -36933,6 +40016,12 @@ "vVZ" = ( /turf/closed/wall/solaris, /area/bigredv2/outside/filtration_cave_cas) +"vWm" = ( +/obj/structure/surface/table, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "vXp" = ( /obj/structure/machinery/light{ dir = 8 @@ -37006,16 +40095,31 @@ }, /area/space) "weO" = ( -/obj/structure/closet/secure_closet/medical_wall, -/turf/open/floor/plating{ - dir = 8; - icon_state = "platingdmg3" +/obj/structure/closet/secure_closet/medical_wall{ + pixel_y = -5 }, +/turf/closed/wall/solaris/reinforced, /area/bigredv2/caves/mining) "wfd" = ( /obj/effect/decal/cleanable/dirt, /turf/closed/wall/solaris/reinforced, /area/bigredv2/caves/mining) +"wfk" = ( +/obj/structure/filingcabinet/medical{ + density = 0; + pixel_x = -8; + pixel_y = 16 + }, +/obj/structure/filingcabinet/medical{ + density = 0; + pixel_x = 7; + pixel_y = 16 + }, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) "wfm" = ( /obj/structure/bed/chair{ buckling_y = 5; @@ -37060,10 +40164,18 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_cave_cas) +"whv" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/ne) "whE" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/landmark/objective_landmark/close, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "whZ" = ( /obj/effect/decal/cleanable/blood/oil/streak, @@ -37082,10 +40194,9 @@ /area/bigred/ground/garage_workshop) "wiK" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/light{ - dir = 1 +/turf/open/floor{ + icon_state = "podhatchfloor" }, -/turf/open/floor, /area/bigredv2/outside/engineering) "wjW" = ( /obj/structure/platform/shiva{ @@ -37133,10 +40244,23 @@ icon_state = "mars_cave_19" }, /area/bigredv2/caves_north) +"wpn" = ( +/obj/structure/closet/radiation, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/engineering) +"wpP" = ( +/obj/structure/platform, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "wpT" = ( /obj/effect/landmark/lv624/xeno_tunnel, /turf/open/mars, -/area/bigredv2/outside/w) +/area/bigredv2/outside/space_port_lz2) "wry" = ( /obj/structure/surface/table, /obj/structure/transmitter/colony_net/rotary{ @@ -37168,7 +40292,16 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) +"wtG" = ( +/obj/structure/machinery/computer3/server/rack, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "wtJ" = ( /obj/effect/decal/cleanable/blood{ @@ -37213,14 +40346,41 @@ }, /area/bigredv2/outside/virology) "wvK" = ( -/obj/structure/machinery/power/geothermal, -/turf/open/floor/plating, -/area/bigredv2/outside/admin_building) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) "wvR" = ( /turf/open/floor{ icon_state = "delivery" }, /area/bigredv2/caves/lambda/virology) +"wwT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall/solaris/reinforced, +/area/bigredv2/outside/engineering) +"wxo" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/c) +"wyF" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/toolbox, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"wzc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor, +/area/bigredv2/outside/general_offices) "wBi" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -37240,6 +40400,10 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"wCs" = ( +/obj/structure/machinery/vending/cigarette/colony, +/turf/open/floor/carpet, +/area/bigredv2/caves/lambda/breakroom) "wDa" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = 6 @@ -37253,22 +40417,27 @@ }, /area/bigredv2/caves/mining) "wDK" = ( -/obj/structure/barricade/wooden{ - desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; - dir = 4; - health = 25000 +/obj/structure/platform_decoration{ + dir = 1 }, -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" +/obj/structure/prop/server_equipment/yutani_server{ + density = 0; + pixel_y = 16 }, -/area/bigredv2/caves_north) +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "wFL" = ( -/obj/structure/surface/table, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/safety/hazard{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor{ + icon_state = "darkyellow2" }, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, /area/bigredv2/outside/engineering) "wFO" = ( /turf/open/mars_cave{ @@ -37286,12 +40455,39 @@ /obj/structure/closet/firecloset/full, /turf/open/mars, /area/bigredv2/outside/c) +"wGD" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/obj/item/prop/alien/hugger, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "wGF" = ( /obj/item/tool/warning_cone, /turf/open/floor{ icon_state = "asteroidwarning" }, /area/bigredv2/outside/se) +"wGP" = ( +/obj/structure/morgue{ + dir = 1 + }, +/turf/open/floor{ + dir = 10; + icon_state = "whiteblue" + }, +/area/bigredv2/outside/medical) "wGV" = ( /obj/item/tool/wrench, /turf/open/floor{ @@ -37299,6 +40495,16 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/c) +"wHx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkredcorners2" + }, +/area/bigredv2/outside/admin_building) "wIw" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -37324,6 +40530,15 @@ icon_state = "mars_cave_17" }, /area/bigredv2/outside/lz1_north_cas) +"wLg" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic/solid{ + dir = 1; + name = "\improper Dormitories Restroom" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/dorms) "wLD" = ( /obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/plating{ @@ -37354,6 +40569,19 @@ icon_state = "mars_cave_9" }, /area/bigredv2/caves_north) +"wMM" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "wMQ" = ( /obj/structure/largecrate/random/secure, /turf/open/floor, @@ -37393,11 +40621,28 @@ icon_state = "mars_cave_16" }, /area/bigredv2/caves/mining) +"wQu" = ( +/obj/structure/surface/table/reinforced, +/obj/item/book/manual/research_and_development, +/turf/open/floor{ + dir = 4; + icon_state = "whitepurple" + }, +/area/bigredv2/caves/lambda/xenobiology) "wQC" = ( /turf/open/mars_cave{ icon_state = "mars_cave_7" }, /area/bigredv2/caves_lambda) +"wQD" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "redcorner" + }, +/area/bigredv2/outside/office_complex) "wRH" = ( /obj/effect/decal/cleanable/dirt, /obj/item/device/flashlight, @@ -37432,6 +40677,22 @@ icon_state = "mars_cave_13" }, /area/bigredv2/caves/mining) +"wVw" = ( +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"wVB" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 10 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "wVQ" = ( /turf/open/mars_cave{ icon_state = "mars_cave_17" @@ -37467,11 +40728,29 @@ icon_state = "wood" }, /area/bigredv2/outside/bar) +"wYE" = ( +/obj/structure/prop/server_equipment/yutani_server{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "wZC" = ( /turf/open/mars{ icon_state = "mars_dirt_11" }, /area/bigredv2/outside/eta) +"xah" = ( +/obj/structure/largecrate/supply/supplies, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) "xaH" = ( /turf/closed/wall/wood, /area/bigredv2/caves_sw) @@ -37501,12 +40780,26 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"xej" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "xeN" = ( /obj/effect/landmark/lv624/xeno_tunnel, /turf/open/mars_cave{ icon_state = "mars_dirt_4" }, /area/bigredv2/outside/filtration_plant) +"xeV" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/bomb_supply, +/turf/open/floor, +/area/bigredv2/outside/cargo) "xfx" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "A heavy duty power cable for high voltage applications"; @@ -37662,6 +40955,15 @@ }, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"xrN" = ( +/obj/structure/machinery/washing_machine, +/obj/structure/machinery/washing_machine{ + pixel_y = 13 + }, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/general_offices) "xrO" = ( /obj/structure/barricade/wooden{ desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; @@ -37759,6 +41061,15 @@ icon_state = "vault" }, /area/bigredv2/outside/marshal_office) +"xyw" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "xyz" = ( /obj/structure/girder, /obj/effect/decal/cleanable/dirt, @@ -37799,8 +41110,19 @@ /obj/structure/machinery/power/apc{ dir = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) +"xBn" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "xBr" = ( /obj/item/ore{ pixel_x = 9 @@ -37823,19 +41145,29 @@ "xDW" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "xFZ" = ( /turf/open/mars_cave, /area/bigredv2/caves_lambda) "xGT" = ( +/obj/structure/closet/firecloset/full, /turf/open/floor{ - dir = 9; - icon_state = "asteroidwarning" + icon_state = "asteroidplating" }, -/area/bigredv2/outside/w) +/area/bigredv2/outside/space_port_lz2) +"xHQ" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 8; + health = 25000 + }, +/turf/open/mars_cave{ + icon_state = "mars_cave_15" + }, +/area/bigredv2/caves_north) "xIo" = ( /obj/structure/window/framed/solaris/reinforced/hull, /turf/open/floor/plating{ @@ -37887,6 +41219,13 @@ /obj/structure/prop/server_equipment/yutani_server, /turf/open/floor/greengrid, /area/bigredv2/caves/lambda/research) +"xKG" = ( +/obj/structure/bed/sofa/south/grey/right{ + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor, +/area/bigredv2/outside/admin_building) "xLM" = ( /obj/structure/machinery/light{ dir = 1 @@ -37919,7 +41258,7 @@ pixel_y = 7 }, /obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/weapon/gun/shotgun/double/sawn, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /obj/item/reagent_container/food/snacks/packaged_burger, /turf/open/floor/plating{ dir = 8; @@ -38020,7 +41359,7 @@ /turf/open/mars_cave{ icon_state = "mars_cave_16" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "xWV" = ( /obj/structure/machinery/power/apc{ dir = 1 @@ -38041,6 +41380,17 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"xXq" = ( +/obj/structure/barricade/handrail{ + dir = 1; + layer = 3.01; + pixel_y = 9 + }, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "xXP" = ( /obj/structure/prop/invuln/minecart_tracks/bumper, /turf/open/mars_cave{ @@ -38077,6 +41427,12 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"yar" = ( +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "ybk" = ( /turf/open/mars_cave{ icon_state = "mars_cave_17" @@ -38166,6 +41522,20 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"ygP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "yha" = ( /obj/structure/surface/table, /obj/item/device/radio{ @@ -38193,8 +41563,8 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "yjU" = ( @@ -38204,6 +41574,15 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"yjV" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) +"ykR" = ( +/turf/closed/wall/mineral/uranium, +/area/bigredv2/outside/engineering) "ykW" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = -3; @@ -42336,7 +45715,7 @@ aao aao uHQ rMg -mmz +jRi uHQ rYD rtS @@ -42470,14 +45849,14 @@ aao aao aao aao -azR -azR -aao -aao -aao -aao -aao -qtx +ayf +ayf +ayf +ayf +ayf +ayf +ayf +ayf ayf ayf ayf @@ -42687,13 +46066,13 @@ aao aao aao aao -azR +ayf wpT -aYF -aYF -aYF cVY +ayf cVY +bhD +ayf cVY cVY cVY @@ -42904,15 +46283,15 @@ aao aao aao aao -azR -aYF -aYF -aYF -aYF +ayf cVY cVY cVY cVY +bio +bkk +brG +jvt cVY cVY bjN @@ -43029,8 +46408,7 @@ aae aaf aai aah -aah -aah +aaF aah aah aah @@ -43048,6 +46426,7 @@ aah aah aah aah +aaF aah aeh aaf @@ -43121,12 +46500,12 @@ aao aao aao aao -azR -azR -aYF -aYF -bgC +ayf +ayf +cVY +cVY cVY +bjP cVY cVY cVY @@ -43136,7 +46515,7 @@ cVY cVY cVY ayf -aao +ayf aao aao aao @@ -43247,7 +46626,6 @@ aaf aaj aah aah -aaF aah aah aah @@ -43263,9 +46641,10 @@ aah aah aah aah -aaF aah -aau +aah +aah +aah aei aaf aaf @@ -43338,11 +46717,11 @@ aao aao aao aao -azR -aYF -aYF -aYF -aYF +ayf +bee +cVY +cVY +bhe cVY cVY cVY @@ -43352,8 +46731,7 @@ mMf cVY cVY cVY -ayf -ayf +cVY ayf ayf ayf @@ -43376,6 +46754,7 @@ aao aao aao aao +aao kvp sLy feS @@ -43529,7 +46908,7 @@ aIb aHj aJh aJh -aJh +aHj aoD aNe aNc @@ -43555,11 +46934,11 @@ aao aao aao aao -azR -aYF -aYF -aYF -bbc +ayf +bew +cVY +cVY +hpg bgW cVY hpg @@ -43569,13 +46948,13 @@ tVp mMf mMf mMf -tVp -tVp -tVp +mMf +ayf +ayf bsa -tVp -tVp -tVp +ayf +ayf +qap tVp fFO cVY @@ -43586,7 +46965,7 @@ fFO cVY cVY cVY -uSC +ayf ayf aao aao @@ -43746,7 +47125,7 @@ aIb lQU aFt aFt -aFt +aHh aoD aNf aNc @@ -43772,11 +47151,11 @@ aoD aoD aao aao -azR -azR -aYF -aYF -aSB +ayf +ayf +cVY +cVY +tVp feN vKv vKv @@ -43789,6 +47168,7 @@ vKv vKv vKv vKv +eWd vKv vKv vKv @@ -43801,11 +47181,10 @@ vKv vKv vKv vKv -vKv -vKv -vKv +btv +tVp +ayf ayf -aao aao aao aao @@ -43963,7 +47342,7 @@ aIb lQU aFt aFu -aFt +idO aoD aNg aNc @@ -43989,11 +47368,11 @@ aNc aoD aao aao -azR -aYF -aYF -bbc -aSB +ayf +cVY +cVY +hpg +tVp bgX eWd eWd @@ -44019,14 +47398,14 @@ eWd eWd eWd eWd -eWd -eWd +brd +tVp +tVp ayf aao aao aao aao -aao kvp wog wog @@ -44123,7 +47502,7 @@ aah aah aah aah -aah +aau aah aah aah @@ -44206,11 +47585,11 @@ aNc aoD aao aao -azR -aYF -aYF -bcp -aSB +ayf +cVY +cVY +uSC +tVp bgX bsa bid @@ -44236,14 +47615,14 @@ bjn bid bsa eWd -eWd -eWd +brd +kED +tVp ayf aao aao aao aao -aao gxJ iGK wog @@ -44264,8 +47643,8 @@ aao aao aao aao -uHQ weO +pSa wtj rKs wJd @@ -44423,15 +47802,15 @@ aNc aoD aao aao -azR -azR -aYF -bcp -aSB +ayf +ayf +cVY +uSC +tVp bgX bhu bie -bie +bje bie bie bie @@ -44449,12 +47828,13 @@ bie bie bie bie -bie +bje bie bsb eWd -eWd -eWd +brd +sBF +tVp ayf aao aao @@ -44462,7 +47842,6 @@ aao aao aao aao -aao gxJ iGK wog @@ -44640,16 +48019,16 @@ aXx aoD aao aao -azR -aYF -aYF -bcp -aSB +ayf +beS +cVY +uSC +tVp bgX bhv bie bie -bje +bie bie bie bie @@ -44665,13 +48044,14 @@ bie bie bjo bie -bje bie -biI +bie +bie bsc eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -44681,7 +48061,6 @@ aao aao aao aao -aao kvp wog wog @@ -44857,11 +48236,11 @@ aNi aoD aao aao -azR -aYF -aYF -bcp -aSB +ayf +cVY +cVY +uSC +tVp bgX bhw bie @@ -44887,8 +48266,9 @@ bie bie bsd eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -44898,7 +48278,6 @@ aao aao aao aao -aao kvp wog sLy @@ -44983,7 +48362,6 @@ aaf aaj aah aah -aaF aah aah aah @@ -44999,7 +48377,8 @@ aah aah aah aah -aaF +aah +aah aah aah aei @@ -45074,11 +48453,11 @@ aXy aoD aao aao -azR -azR -aYF -bbJ -aSB +ayf +ayf +cVY +bgq +tVp bgX bhx bie @@ -45104,8 +48483,9 @@ bie bie bse eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -45115,7 +48495,6 @@ aao aao aao aao -aao kvp wog wog @@ -45199,8 +48578,7 @@ aae aaf aak aah -aah -aah +aaF aah aah aah @@ -45218,6 +48596,7 @@ aah aah aah aah +aaF aah aej aaf @@ -45291,11 +48670,11 @@ aXz aoD aao aao -azR -jvt -aYF -aYF -bcp +ayf +cVY +cVY +cVY +uSC bgX bhu bie @@ -45321,8 +48700,9 @@ bie bie bsb eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -45332,7 +48712,6 @@ aao aao aao aao -aao kvp wog feS @@ -45500,19 +48879,19 @@ aoD aoD aoD aoD -aoa aoD aoD aoD aoD -aoa -azR -azR -azR -aYF -aYF -bbc -aSB +aoD +aoD +ayf +ayf +ayf +cVY +cVY +hpg +tVp bgX bhy bie @@ -45525,7 +48904,7 @@ bie bie bie bie -bie +biI bie bie bie @@ -45538,8 +48917,9 @@ bie bie bsc eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -45549,7 +48929,6 @@ aao aao aao aao -aao kvp wog feS @@ -45697,7 +49076,7 @@ aoD grU aIg grU -aoa +aoD aln aoD aEu @@ -45714,10 +49093,10 @@ aEu aoD aEu aEu -aEV +aoD aEu aEu -aoa +aoD aSB aSB aoD @@ -45725,11 +49104,11 @@ aSB aSB azR aSB -aSB -bax -bax -aSB -aSB +tVp +mMf +mMf +tVp +tVp bgX bhw bie @@ -45755,8 +49134,9 @@ bie bie bsd eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -45766,7 +49146,6 @@ aao aao aao aao -aao kvp wog iAF @@ -45942,11 +49321,11 @@ aSB beP beP beP -aSB -aSB -aSB -aSB -aSB +tVp +tVp +tVp +tVp +tVp bgX bhz bie @@ -45972,8 +49351,9 @@ bie bie bse eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -45983,7 +49363,6 @@ aao aao aao aao -aao gxJ iAF aao @@ -46159,11 +49538,11 @@ aWk aVI aWk aWk -aVI -aVI -aWk -aWk -aWk +bcp +bcp +vKv +vKv +vKv eWd bhA bie @@ -46189,8 +49568,9 @@ bie bjo bsb eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -46206,7 +49586,6 @@ aao aao aao aao -aao kvp wog daf @@ -46376,16 +49755,15 @@ aUQ bdZ bdZ bdZ -aXA -aWV -aXA -aXA -aXA +bmN +bfW +bmN +bmN +bmN eWd bhv bie bie -bje bie bie bie @@ -46401,13 +49779,15 @@ bie bie bie bie -bje +bie +bie bie bie bsc eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -46423,7 +49803,6 @@ aao aao aao aao -aao kvp wog wog @@ -46593,15 +49972,15 @@ bdZ bdZ bdZ beu -beP -aSB -aSB -aSB -aSB +bcr +tVp +tVp +tVp +tVp bgX bhw bie -bie +bje bie bie bie @@ -46619,12 +49998,13 @@ bie bie bie bie -bie +bje bie bsd eWd -eWd -eWd +brd +tVp +mJH ayf aao aao @@ -46640,7 +50020,6 @@ aao aao aao aao -aao gxJ iGK iGK @@ -46810,11 +50189,11 @@ bdZ aUQ bdZ bev -beP -aSB +bcr +tVp bfT -aSB -aSB +tVp +tVp bgX bsa bpu @@ -46840,8 +50219,9 @@ brb bpu bsa eWd -eWd -eWd +brd +tVp +dwg ayf aao aao @@ -46860,7 +50240,6 @@ aao aao aao aao -aao kvp wog wog @@ -47017,7 +50396,7 @@ asj aoH aoH asK -asK +aXJ asK beQ aYF @@ -47027,11 +50406,11 @@ bdZ aUQ bdZ bev -beP -aSB -aSB -aSB -aSB +bcr +tVp +tVp +tVp +tVp bgX eWd eWd @@ -47057,8 +50436,9 @@ eWd eWd eWd eWd -eWd -eWd +brd +tVp +vzk ayf aao aao @@ -47077,7 +50457,6 @@ aao aao aao aao -aao kvp wog wog @@ -47244,24 +50623,24 @@ bdZ aUQ bdZ bev -aSB -aSB -aSB -xGT -aWk -eWd -eWd +tVp +aao +aao +tVp +tVp +bgX +boD kHK kHK -eWd -eWd -eWd -eWd +bmN +bmN +bmN eWd eWd eWd bmN bmN +eWd bmN bmN bmN @@ -47274,10 +50653,10 @@ eWd bmN bmN bmN -bmN -bmN +tJH +tVp +ayf ayf -aao aao aao aao @@ -47461,38 +50840,38 @@ bdZ bdZ bdZ bev -aSB -aSB -aSB -aVG -asK -asK -asK -bdg -bbg -asK -atw -atw -atw -atw -atw -asK +tVp +tVp +aao +aao +tVp +bgX +boD +eWd +brd +oEJ +xGT +svp +bgX +eWd +qlT +ayf ayf bsa ayf -axX -bmi -boD -axX -bpx -ufD -bpv +ayf +qap +tVp +tVp +tVp +bgX +eWd brd -bpx -bpx -bpx -bpx -bpx +tVp +qap +tVp +tVp +tVp aao aao aao @@ -47678,39 +51057,39 @@ bdZ bdZ bdZ bev -aSB -aSB +tVp +tVp bfU -aVG -asK -svp -svp -aZu -aZu -bbM -aZu -bjP -tgk -qHZ -qHZ -asK +tVp +tVp +bgX +eWd +eWd +eWd +vKv +vKv +vKv +eWd +eWd +sTf ayf ayf ayf -azb -bmi -bmi -azb -bpx -ufD -bpv +ayf +ayf +tVp +tVp +qap +tVp +bgX +eWd brd -bpx -bpx -bpx -bpx -bpx -bpx +tVp +tVp +tVp +tVp +tVp +qap aao aao aao @@ -47895,39 +51274,39 @@ bdZ bdZ bdZ beQ -aSB -aSB -aSB -aVG -asK -bhb -bhb -bhb -bhD -bhb -bhb -bhb -bhb -bhb +tVp +tVp +tVp +tVp +tVp +bgX +eWd +eWd +kHK +bmN +bmN +bmN +eWd +eWd aLn -asK +ayf aFc aFc aFc -azb -bmi -bmi -azb -bpx -ufD -bpv +ayf +jfn +jfn +axX +tVp +bgX +eWd brd -bpx -bpx -bpx -bpx -bpx -bpx +tVp +tVp +tVp +tVp +tVp +tVp oip lzI aao @@ -48112,40 +51491,40 @@ bdZ bdZ bdZ beQ -aSB -aSB -aSB -aVG -asK +tVp +tVp +tVp +tVp +tVp bhc -bbe -bfz -aZu -aZu -aZu -aZu -aZu -bhb +bpv +cwk +brd +svp +ueW +oEJ +bgX +eWd blb -asK +bjQ aFc aFc -bme +bsI azb -bmi -bmi +rVx +kVT azb -bpx -ufD -bpv -bpv -brG -brG -brG -brG -brG -brG -brG +vKv +eWd +eWd +eWd +vKv +vKv +vKv +vKv +vKv +vKv +vKv qzO cHn cHn @@ -48321,48 +51700,48 @@ aoH aYH aXH asK -beQ -aSB +bdZ +aWk beR -bcr -bcs -bcs +aUQ +aUQ +aUQ +aUQ +bdZ bcs -bew -beR -aSB -aSB -aVG -asK +vKv +vKv +vKv +vKv bhd -bhD +kHK bik -bhD -bhb -bhb -bhb -bhb -bhb -aZu -asK +kHK +vKv +vKv +vKv +eWd +eWd +pGS +bjQ aFc aFc -bme -azb -bmi -bmi +bsI azb -bpy -ufD -bpv -bpv -bpv -bpv -bpv -bpv -bpv -bpv -bpv +hhK +nVq +bqf +eWd +eWd +eWd +eWd +eWd +eWd +eWd +eWd +eWd +eWd +eWd qzO bGL bGL @@ -48539,47 +51918,47 @@ aYI aXH asK bdZ -aWk -beS -bcs -bdf -bdf +bdZ +asK +aUQ +bdZ +bdZ beb -bdf -beS -aWk -aWk bdZ asK -oEJ -oEJ -baz -aZO -bjg +eWd +eWd +eWd +asK +eWd +eWd +bik +kHK +bjt bjt bjQ -bkk -bjQ +eWd +eWd blc -asK +bjQ aFc aFc -bme +bsI azb -bmi -bmi +hhK +sCt azb -bme -bqe -heU -heU -heU -heU -heU -heU -heU -heU -heU +bmN +bmN +bmN +bmN +bmN +bmN +bmN +bmN +bmN +bmN +bmN qzO bGL bGL @@ -48780,11 +52159,11 @@ bkz asK lMt aFc -bme -bme +crO +mWJ azb -bmi -bmi +hhK +sCt axX azB axX @@ -48974,41 +52353,41 @@ aZm aZL bay aZu -bbM +asK bcu bdg bdg bcu bdg -beT -aZu -aZu -aZu +asK aZu aZu aZu +asK +kTC +beT baz aZu bbM -beT +gQP asK aZw aZu bld asK -bme -bme +crO +mWJ bme azb -bmi -bmi -bmi -bmi +hhK +mSS +btr +kVT azb bqI bre -bmq -bob +maH +hdc bsJ axX bsI @@ -49191,42 +52570,42 @@ aXH asK baz aZu -aZO +aEV aZu aZu aZu aZu aZu -beU +bdf bfy bfV -bfF -baF -baF -aZu -baz -aZu -aZu +bgC +atA +xeV +bqe +heU +bqe +bqe aZu asK aZu bkA hzy axL -bme +bsI bme bme azb -bmi -bmi -bmi -bmi +hhK +nVq +nVq +sCt azb -bmi -bmi -bmi -bmi -bmi +hhK +nVq +nVq +nVq +sCt azb bme bme @@ -49418,9 +52797,9 @@ bbe bfz aZO aZu -aZu -aZu -aZu +atA +bkn +bqe bfB bgD bjh @@ -49430,23 +52809,23 @@ bbe bbe aLo axL -bme +bsI bme bme azb -bmi -bmi -bmi -bmi +hhK +nVq +nVq +nVq bqf -bmi -bmi -bmg -bre +nVq +nVq +tTI +rzb bsK axX bme -bme +utg aao glB xpb @@ -49633,36 +53012,36 @@ aZM aZu beU bfA -bfW -bgq -bfy +bgE baF +asK aZu -baz -aZu -aZO -aZO +bqe +heU +bqe +tgk +aDo atA bkl aZO blg axL -bme +bsI bme bme azb -bmi -bmi -bmi -bmi +hhK +nVq +nVq +sCt azb -bmi -bmi -bmg -bre +hhK +nVq +tTI +rzb bsL azb -bme +utg bpx aao euF @@ -49852,31 +53231,31 @@ aZu bfB bbe bbe -bgD +bjR bbe bhE bbR biK -aZO -aZO +ufD +mhx atA bkl aZu aZu axL -bme +bsI bme bme azb -bmi -bmi -bmi -bmi +fLl +btu +btu +gdx azb -bmi -bmi -bmi -bmi +fLl +nVq +btu +nVq bsM axX bpx @@ -50068,21 +53447,21 @@ aZu beU bfC bfX -baF -bgE -bhe +bhb +asK +asK +asK +wLU +bbg +asK asK -bio -cwk -aZu -aZu asK aLl aZu blh asK -bme -bme +crO +jmY bme axX azB @@ -50306,16 +53685,16 @@ boj boG boj axX -bmi -bmi -bmi +jYF +sap +nVq brI -bmi +sCt azb bpx bpx bpx -aao +bpx aao aao aao @@ -50486,7 +53865,7 @@ aOB aOB aNm aoH -jjt +cec aXH asK aZn @@ -50519,21 +53898,21 @@ bmf bmf bmf bnQ -bmi -bmi +ygP +cud bpe axX jYF -bmi -bmi -bmg -bmi +sap +nVq +tTI +sCt azb kdh -aao -aao -aao -aao +bpx +bpx +bpx +bpx aao aao euF @@ -50699,7 +54078,7 @@ aQM aQM aSI aOB -dlr +aNo aNo aNm aoH @@ -50713,7 +54092,7 @@ bbg auk asK asK -aZu +bax aZu bex bbe @@ -50734,23 +54113,23 @@ bli bsX bmg bmO -bmy -bmy -bmg -bmg -bmi +vdl +vdl +rhP +tTI +sCt axX ayr ayr brg -bmg -bmi +tTI +sCt axX axX axX -aao -aao -aao +bpx +bpx +bpx aao aao aao @@ -50930,7 +54309,7 @@ aZO baz bcy asK -aZu +bax aZu baz beU @@ -50948,26 +54327,26 @@ bfB bbe bbe blj -blL +dvC bmh bmP bnq -bnq -bnq +qGY +qGY boH bpf bpz -bmg +lck bqJ -bmg +tTI brJ -bpF +niQ bsN bsZ axX -aao -aao -aao +bpx +bpx +bpx aao aao aao @@ -51139,7 +54518,7 @@ aWB aoH aXH aXH -asK +bfg aZu aZO aZO @@ -51148,7 +54527,7 @@ bbR bcz asK bdM -bee +aZu bey aZu aZu @@ -51174,17 +54553,17 @@ ayr boI bor ayr -bmg -bmg -bmg +tTI +tTI +tTI brK -bor -bmg -bmi +cla +tTI +sCt axX -aao -aao -aao +bpx +bpx +bpx aao aao aao @@ -51385,25 +54764,23 @@ aZr axX bmj bmQ -bmQ +tju bnR -bnR -bnW +ewv +bYW bpO bpA -bop +eSm bqK -bnq -bop +kNK +slG bqN -bmg +tTI bta -axX -aao -aao -aao -aao -aao +azb +nLw +bpx +bpx aao aao aao @@ -51412,9 +54789,11 @@ aao aao aao wog +oQI +wog +wog +wog wog -trk -jXX aao uCD aao @@ -51609,30 +54988,30 @@ ayr ayr ayr ayr -bor +nPz bri -bmi +nVq bsm -bmi +nVq btb -axX -aao -aao -aao -aao -aao -aao -aao -aao +azb +nLw +bpx +bpx aao aao aao wog wog -hiY -dxV -dxV -dxV +wog +wog +sAG +wog +oQI +wog +wog +wog +aao aao aao aao @@ -51724,7 +55103,7 @@ aao aao aao aao -rgp +asc acp adh adh @@ -51824,20 +55203,18 @@ bnr bok bnr bpi -bmi +kVT ayr -bor -bmi +nPz +nVq brL -bmi -bmi +nVq +nVq btc axX -aao -aao -aao -aao -aao +nLw +bpx +bpx aao aao aao @@ -51845,11 +55222,13 @@ wog wog wog wog -trk -jXX -dxV -qUS -dxV +wog +wog +wog +icQ +wog +aao +aao aao aao aao @@ -51939,9 +55318,9 @@ aao aao aao aao -pXu -iyY -xbV +lVm +dlr +asc acp adi adz @@ -52036,38 +55415,38 @@ bll axX bmm bmS -bmg -bmg -bsu +tTI +tTI +iQC boK -bmi -bmg +nVq +cKu ayr -bor +nPz brj brM aMB -bmg +gwg btd axX +nLw +nLw aao aao aao +giB +giB +giB +giB +giB +giB +giB +giB +giB +aao aao aao aao -wog -wog -trk -wog -wog -jXX -dxV -dxV -dxV -dxV -buz -sDC aao aao qUS @@ -52155,10 +55534,10 @@ aao aao aao aao -iyY -xBS -wXg -uzv +dlr +dtX +aqL +asc acp adj adA @@ -52188,7 +55567,7 @@ arR arR atq amj -auK +rZi aqw awc awQ @@ -52251,11 +55630,11 @@ aZu aZu blm axX -bmm -bmm -bmi +mhZ +pgk +btu bnS -bmg +tTI boL bpj bpC @@ -52267,27 +55646,27 @@ ayZ axX axX axX +axX +axX +axX +axX +axX +axX +axX +axX +wwT +axX +axX +axX +axX +axX +axX +axX +axX aao aao aao aao -aao -aao -aao -jXX -dxV -qgY -hiY -dxV -dxV -dxV -dxV -dxV -qgY -wog -aao -aao -aao buz wog wog @@ -52371,11 +55750,11 @@ aao aao aao aao -mDN -wXg -pMv -wXg -pow +acc +aqL +ann +aqL +asc acp adk adk @@ -52477,32 +55856,32 @@ ayr ayr ayr ayr -bor -bmi -bmg -bso -bso -bso +cla +btr +lck +kVT +ayZ +bsP +ayZ +ouh +lck +jXJ +btr +sDO +pOg +saX +pVv +saX +eIN +lck +btr +ayZ +btr +kVT +axX axX aao aao -aao -aao -aao -aao -aao -dxV -dxV -qgY -hiY -dxV -pYt -dxV -pYt -dxV -iNR -wog -wog wog wog wog @@ -52587,12 +55966,12 @@ aao aao aao aao -pXu -mDN -wXg -wXg -wXg -wcs +lVm +acc +aqL +aqL +aqL +asc acp aaX adB @@ -52616,7 +55995,7 @@ ahP ahP ajy alD -aqv +aqw ari arS asD @@ -52655,9 +56034,9 @@ aQS aQS aQS aoH -aYe -aXH -aYe +aHF +aHF +aHF asK aZv aZR @@ -52688,37 +56067,37 @@ axX bmn bmT ayr -bmg -bmg +nzN +tTI boM ayr bpD -bmi +btr bqM -bmi -bmi -bmi -bmi +rnV +nVq +tTI +nIi bte +nIi +btu +gwg +gwg +gwg +tTI +btu +gwg +gwg +tTI +btu +btu +ndw +fUp +nVq +sCt +wpn axX aao -aao -aao -aao -aao -aao -dxV -dxV -dxV -qgY -hiY -dxV -dxV -buz -sDC -dxV -dxV -qgY wog wog wog @@ -52803,13 +56182,13 @@ pXu aao aao aao -pXu -pXu -xBS -wXg -pow -pow -pow +lVm +lVm +dtX +aqL +agq +ahe +ahS acp acp acp @@ -52872,9 +56251,9 @@ apQ apQ apQ aoH -aYe -aXH -aYe +aHF +aHF +aHF asK aZu aZu @@ -52905,37 +56284,37 @@ axX bmn bmU bns -bmi -bmg +hhK +tTI boN ayr bpE -bmi -bor -bmi -bmi -bso -bso -bso +nVq +cla +nVq +nVq +gfX +axX +axX +axX +iig +iig +iig +mqh +fEv +iig +iig +ayZ +fEv +ueL +ueL +ayZ +axX +fEv +ayZ +axX axX aao -aao -aao -aao -aao -dxV -dxV -dxV -buz -wog -hiY -dxV -buz -wog -hiY -dxV -dxV -qgY wog wog wog @@ -53017,14 +56396,14 @@ cGZ pXu pXu pXu -pXu -pXu -iyY -pXu -tlj -pow -wcs -pow +rgp +lVm +dlr +lVm +agq +ahe +ahe +ahS acp acp acp @@ -53089,8 +56468,8 @@ aGV aVh aVP aoH -aYe -aXH +aHF +aHF aYf asK aZw @@ -53123,36 +56502,36 @@ bmn bmV ayr bnV -bmg -bmg +tTI +cKu ayZ bpF -bop +slG bqN -bmi -bmi -bmi -bmi +nVq +nVq +uDA +bsP bsP axX +hYB +iAI +iAI +dsy +iSz +hYB +iAI +wVB +kka +pog +iAI +wVB +ayZ +ndw +sCt +axX aao aao -aao -aao -dxV -dxV -buz -ibZ -wog -wog -wog -ibZ -wog -wog -wog -sDC -dxV -iNR wog wog wog @@ -53234,14 +56613,14 @@ wXg wKx pXu pXu -pXu -xBS -wXg -cGZ -vwP -acp +awx +dtX +aqL +avK +asc acp acp +agy acp acL acT @@ -53306,9 +56685,9 @@ aSO aVi aVO aoH -aYe -aXH -aYe +aHF +aHF +aHF asK aZx aZx @@ -53340,36 +56719,36 @@ ayr ayr ayr xAX -bmg -bmg +tTI +cKu ayZ -bor -bmg +nPz tTI -brm -bmi -bmi -bmi -brm +tTI +tTI +dsm +mSS +mij +kVT +dhN +duA +iNR +ykR +iaC +iSz +duA +iNR +iaC +kka +duA +ykR +iaC +ayZ +hhK +sCt axX aao -aao -dxV -aao -dxV -dxV -qgY -wog -wog -wog -wog -aao -wog wog -wog -jXX -dxV -dxV qgY wog hiY @@ -53451,14 +56830,14 @@ wXg wKx pXu pXu -xBS -wXg -pMv -wXg -mGq +axm +aqL +ann +aqL +asc acp acy -acC +acE acE acC acU @@ -53477,13 +56856,13 @@ aiX afS afS afS -alp +acr ame aic aer afS cLZ -alX +acp amj amj amj @@ -53523,9 +56902,9 @@ aoH aoH aoH aoH -asK -asK -asK +aHF +aHF +aHF asK atw atw @@ -53554,39 +56933,39 @@ asK asK axX dWl -bmi -bmi +btr +btr bnW -bop -bmz +slG +ksO bpk bpM -bmi -bmi -bmi -bmi -bmi -bmi +slG +slG +slG +slG +slG +dWd sCt -axX -aao -aao -dxV -dxV -dxV -dxV +dhN +duA iNR -wog -wog -aao -aao -aao +iNR +iaC +iSz +duA +iNR +iaC +kka +duA +iNR +iaC +ayZ +hhK +sCt +axX aao wog -hiY -dxV -dxV -buz wog wog hiY @@ -53666,17 +57045,17 @@ aao wXg wXg wKx -pXu -mDN -wXg -geC -wXg -wXg -mGq +lVm +acc +azF +buP +aqL +aqL +asc acq -acy +acz +acC acC -acE acM acM acM @@ -53693,14 +57072,14 @@ acp aiZ afS afS -akM -acr +afS +aAd ame ahj anx afS akM -alX +acp agY arl arl @@ -53740,9 +57119,9 @@ aMg aMg aNw aNw -aNw -aNw -aMg +bhU +bhU +aHF aMg aNw aNw @@ -53770,40 +57149,40 @@ bjx bjx bjw axX -dWl -bmi -bmg -bmg -bmg -bmg +lmi +nVq +tTI +tTI +tTI +cKu ayZ bpH -bmg -bmg -bmg +kmx +gwg +gwg brO -bmg -bmi -dWl +gwg +cla +gdx +dhN +nug +yjV +ykR +iaC +iSz +duA +iNR +iaC +kka +duA +ykR +iaC +ayZ +hhK +sCt axX -aao -aao -dxV -qUS -pYt -dxV -dxV -qgY -aao -aao -aao -aao -aao +uVn wog -hiY -dxV -dxV -iNR wog wog hiY @@ -53880,20 +57259,20 @@ aao aao aao aao -pRP +aao ajD -akP -akP -aus -akX -alH -akX -wpf -vwP +lVm +lVm +lVm +azF +ann +aqL +aac +asc acr -acy +acz +acC acC -acE acM acM acM @@ -53910,15 +57289,15 @@ acp aja ajC ake -aiX +alp acr ame ahj aer afS aoT -alX -aqw +acp +arn arm aip asE @@ -53957,9 +57336,9 @@ aBR aBR aBR aBR -aBR -aBR -aBR +aMc +aHF +aHD aYK aIp aBR @@ -53988,39 +57367,39 @@ bjB blq axX bmp -bmi -bmg +nVq +tTI bnX -bmg +tTI aLP ayZ bpI -bmg +cKu axX axX axX axX +uaS axX axX axX -aao -aao -aao -dxV -dxV -dxV -dxV -qgY -aao -aao -aao -aao -qUS +duA iNR -jXX -dxV -dxV -dxV +iaC +iSz +nug +rUN +oIK +kka +duA +iNR +iaC +ayZ +hhK +sCt +axX +dQw +wog qgY wog wog @@ -54097,16 +57476,16 @@ aao aao aao aao -iRf -akh -akh -alq -aWy -wMp -akX -akX -hKM -vwP +aao +lVm +lVm +lVm +lVm +brc +aqL +aqL +heI +asc acs acz acC @@ -54134,9 +57513,9 @@ ahj acp acp acp -alX +acp aqB -arn +arl aiY asF arl @@ -54174,9 +57553,9 @@ aBR aBR aFL aBR -aBR -aBR -aBR +aMc +aHF +aHD aBR aBR aBR @@ -54205,39 +57584,39 @@ bkp blq axX bmq -bmi +nVq bnt -bmg -bmi +tTI +nVq boR ayr -bor -bmi +nPz +sCt axX brn -bmq -trr -bpl +jDT +vTt +cla btr -axX -aao -aao -aao -dxV -dxV -dxV -dxV -qgY +jTk +dhN +duA +ykR +iaC +pWs +vVz +vVz +vVz +jxA +duA +ykR +iaC +ueL +nzN +sCt +tcP +dQw wog -aao -aao -aao -dxV -dxV -dxV -dxV -dxV -buz wog wog wog @@ -54314,17 +57693,17 @@ aao aao aao aao -iRf -akh -akh -akh +aao lVm -aad -akZ -akZ -aad -vwP -acp +lVm +lVm +lVm +awx +ajD +ajD +lVm +asc +acq acz acD acF @@ -54351,9 +57730,9 @@ ahj aer afS bNE -alX -alu -alu +acp +anZ +anZ alu alu alu @@ -54391,9 +57770,9 @@ aFM aFM aFM aFM -aFM -aFM -aFM +aHF +aHF +aHF aFM aFM aFM @@ -54422,38 +57801,38 @@ bjA blq axX trr -bmg -bmg -bmi -bmi -fOK +tTI +tTI +nVq +nVq +wyF ayZ bpH -bmg +cKu axX bro brP slG -bmg -trr -axX -aao -aao -aao -aao -dxV -dxV -buz -wog -wog -aao -aao -dxV -dxV -pYt -dxV -dxV -buz +bqN +btt +uGs +gmm +duA +iNR +iaC +gUD +btr +jxS +btr +oWp +duA +iNR +iaC +ueL +nzN +cKu +tcP +rvS wog wog wog @@ -54531,20 +57910,20 @@ aao aao aao aao -iRf -akh -akh -akh -aWy -aad -aad -aad -aad -xbV +aao +aao +aao +lVm +lVm +awx +lVm +lVm +lVm +asc acq acz acD -acG +acD acM acM acM @@ -54559,7 +57938,7 @@ ahm aie acp aZq -adS +aiX akg akN afS @@ -54568,14 +57947,14 @@ ahj anx afS akM -alX +acp aEB -aro -arY +asG +asG asG ats alu -auL +auN aqw awh awU @@ -54600,7 +57979,7 @@ aHF aHF apC apC -apC +apJ apJ apJ apC @@ -54609,6 +57988,7 @@ apC apC apC apJ +duI apJ apC apC @@ -54618,7 +57998,6 @@ apC apC apC apC -apC nGt aHF aHD @@ -54639,38 +58018,38 @@ bjA blq axX bms -bmg +gwg bnu bnY -trr +hcH boS ayZ btK -bnq +tTI bqP -bop -bop -bpM -bmg -bts +fXm +wMM +gVl +tTI +nVq +qUF +dhN +duA +ykR +iaC +dBU +guu axX -aao -aao -aao -aao -aao -buz -wog -wog -wog -wog -wog -ibZ -sDC -dxV -dxV -buz -wog +cNb +nuz +duA +ykR +iaC +ayZ +hhK +cKu +axX +rvS wog wog wog @@ -54748,20 +58127,20 @@ aao aao aao aao -iRf -iRf -iRf -iRf -iRf aao -aad -aad -alJ -tFM +aao +aao +aao +aao +aao +lVm +lVm +acc +asc acp -acy +acz +acC acC -acE acM acV acV @@ -54776,8 +58155,8 @@ ahn ahj acp aZq -adS -adS +aiX +aiX akN afS amg @@ -54785,11 +58164,11 @@ ahj aer afS aoT -alX -aqD -aqD -aqD -aqD +acp +aqM +buP +buP +aqL att atW atr @@ -54823,19 +58202,19 @@ aRT aof aTV mGS -aTV +tap aof aNK aXL +bdo aof -aYL aZz -aZS -aZS -aZS -aZS -aZz -bcM +aOO +aOO +aOO +aOO +cXG +aOO apC apC aHD @@ -54867,27 +58246,27 @@ bqk axX wiK fgE -bor -cFb +sap +tTI btt +nmU +dhN +duA +iNR +iaC +xXq +btu +uJj +gwg +voG +duA +iNR +iaC +ayZ +hhK +sCt axX -aao -aao -aao -aao -aao -wog -wog -trk -trk -wog -wog -wog -wog -ibZ -ibZ -wog -wog +rvS wog wog trk @@ -54971,14 +58350,14 @@ aao aao aao aao -aad +lVm abU -alJ -tFM +acc +asc acq -acy +acz +acC acC -acE acC vPZ acD @@ -55002,13 +58381,13 @@ aic acp acp acp -alX -aqD -aqD -aqD -aqD -aqD -alu +acp +aqM +buP +aqL +aqL +asc +ayN auL aqw azv @@ -55036,23 +58415,23 @@ aGD aMf aPL aMf -aMf +aXk aof aTV -aOM aTV +din aof -aNL -aUb +aWH +aOM +jna asT -aYM -aZA -aZA +aZC +aZC baG -aZA +aZC baG -aZA -bcN +aZC +aOO bdO apC aHD @@ -55073,39 +58452,39 @@ bjH blq axX bmt -bmi +btr fOK -trr -bmq +pKP +egL ayZ bpl bpL -bmg +cKu axX -bmi +jAJ brR -bor -bmi +nnU +nVq btu +gHV +dhN +duA +ykR +iaC +pWs +vVz +vVz +vVz +jxA +duA +ykR +iaC +ayZ +nzN +sCt axX -aao -aao -aao -aao -wog -wog -jXX -dxV -dxV -iNR -wog -wog -wog -wog +rvS wog -aao -aao -aao jXX pYt dxV @@ -55188,13 +58567,13 @@ aao aao aao aao -abr -aad -alJ -tFM +abY +lVm +acc +asc acp acy -acC +acE acE acC acC @@ -55219,14 +58598,14 @@ aic aer afS eLp -alX -aqD -aqD -aqD -aqD -atu -alu -auN +acp +aqM +aqL +aqL +aqL +asc +alD +auL arR awi awV @@ -55256,21 +58635,21 @@ aQW aRU aof aTU -aOM +wGD aTV aof aYU +aOM aUb asT -aYM aZB aZT aIY bbj caN bcE -bcN -aYO +aOO +aOO apC aHD aBR @@ -55290,37 +58669,37 @@ bjH blq axX bmu -bmi +nVq bnw bnZ boq azE -bmi -bor +hhK +cla bql axX axX axX -dQZ axX +tzJ axX axX -aao -aao -aao -wog -wog -hiY -dxV -dxV -pYt -dxV +axX +duA iNR -wog -wog -trk -trk -aao +iaC +iSz +hYB +iAI +wVB +kka +duA +iNR +iaC +ayZ +nzN +sCt +axX aao aao aao @@ -55404,14 +58783,14 @@ aao aao aao aao -akY -cJG -aad -abO -vAy -acp +buP +avK +lVm +mWI +asc acp acp +agy acp acp acX @@ -55436,14 +58815,14 @@ aic anx afS akM -alX -aqE -aqE -aqE -aqE -atv -alu -auL +acp +aqM +aqL +aqL +aqL +asc +alD +aqF arR arR aqw @@ -55464,7 +58843,7 @@ awQ aJl aKo aKo -aKo +aSX aMF aNz aKo @@ -55473,21 +58852,21 @@ aQX aRV aof aTV -aOM +gWU aVS aof aXg +aOM aUb -asT -aYM -aZA +aof +aZC aZU -aZA +aZC aZU -aZA +aZC bcF -bcN -aYO +aOO +aOO apD aHD aBR @@ -55512,32 +58891,32 @@ bnx boa bor ayZ -bmi -bor -bmg -bmi -bmi -bmi -bor -bmg +hhK +cla +bZJ +btr +btr +jMn +btr +tTI kVT -axX -axX -aao -aao -wog -wog -wog -sDC -dxV -dxV -dxV -dxV +dhN +hYB +ojD +ykR +iaC +iSz +duA iNR -jXX -dxV -aao -aao +iaC +kka +duA +ykR +iaC +iig +nzN +sCt +axX aao aao aao @@ -55621,14 +59000,14 @@ aao aao aao aao -akX -akX -hKM -aad -qez -aao -aao -aao +aqL +aqL +heI +lVm +ags +alF +alF +alF aao acp acp @@ -55653,13 +59032,13 @@ anb aer afS aoT -alX -aqF -aqF -aqF -aqF -aqD -alu +acp +aqM +aqL +aqL +aqL +asc +alD auO avy aqw @@ -55681,7 +59060,7 @@ aDN ayN aKp aQW -aMf +aTb kmm aNA aMf @@ -55689,13 +59068,13 @@ aMf aQY aMf aSQ +tJn +pyU +tJn +cJa +iZc aOM aOM -aOM -aSQ -aNL -aUb -asT aYN aZC aZC @@ -55703,8 +59082,8 @@ aZC aZC aZC bcG -bdl -aYO +aOO +aOO apD aHD aBR @@ -55726,39 +59105,39 @@ axX bmw bmX bAo -bmg +tTI bos boU -bop -bpM -bmi -bmi -bmi -bmi -bor -bmg -bmi +slG +cZB +cOa +lEi +lEi +tTI +nVq +tTI +sCt +dhN +duA +iNR +iNR +iaC +iSz +duA +iNR +iaC +kka +duA +iNR +iaC +ayZ +hhK +sCt axX aao aao aao aao -wog -wog -wog -ibZ -ibZ -sDC -dxV -dxV -dxV -dxV -aao -aao -aao -aao -aao -aao aao aao wog @@ -55838,14 +59217,14 @@ aao aao aao aao -akX -akX -hKM -aad -aad -aao -aao -aao +aqL +aqL +heI +lVm +acc +aqL +arp +acP aao aao aao @@ -55870,18 +59249,18 @@ anc acp acp acp -alX -aqD -aqD -aqD -aqD -aqD +acp +aqM +aqL +aqL +aqL +atu alu -amj -amj +alu +aYe awj -amj -amj +aYe +alu alu ayR azv @@ -55906,22 +59285,22 @@ aPM aQZ aRX aof -aTX +mrH aVj mrH aof -aNL +uKH +aOM aUb -asT -aYO -aYO -aYO -aYO -aYO -aYO +aof +aOO +aOO +aOO +aOO +aOO bcH -bdm -aYO +aOO +aOO apC aHD aBR @@ -55931,7 +59310,7 @@ bhi dbi lSL lSL -aMc +qyq aHD aIn bjD @@ -55941,42 +59320,42 @@ bjH blr axX bmx -bmW +rdr bnz bob -bmi +gdx ayZ -bmy -bor +bcg +cla bpm -bmi -bre -bmr +izb +rYr +tTI iQC -bob -bmi +nVq +vWm +dhN +duA +iNR +ykR +iaC +iSz +duA +iNR +iaC +kka +duA +ykR +iaC +ayZ +hhK +sCt axX aao aao aao aao aao -wog -wog -wog -wog -hiY -dxV -dxV -aao -aao -aao -aao -aao -aao -aao -aao -aao aao aao wog @@ -56054,16 +59433,16 @@ aao aao aao aao -akX -akX -akX -hKM -aad -aad -aao -aao -aao -aao +aqL +aqL +aqL +heI +lVm +tlj +aqL +arp +acP +acP aao aao aao @@ -56087,18 +59466,18 @@ aic aer afS bNE -alX -aqD -aqD -aqD -aqD -aqD +acp +aqM +aqL +aqL +aqL +aqE alu -auP +atv avz aqw auP -avz +wGP alu ayS azv @@ -56116,7 +59495,7 @@ alu aKq aHF aHF -apC +apD aNC aMf aPN @@ -56128,19 +59507,19 @@ aof aof aof aNL +aOM aUb aof -asT -asT -asT +aof asT asT asT aof -bdn +sRy +aof aof apC -aHD +wxo aBR aBR bhi @@ -56163,32 +59542,32 @@ ayZ ayr ayr ayr -bpe -bor -bmi -bmi -bre +ktY +cla +vCf +mlV +lqo nVq eGM -bob -bmi +btu +dyH +axX +nug +rUN +rUN +oIK +iSz +nug +rUN +oIK +kka +nug +rUN +oIK +ayZ +slC +sCt axX -aao -aao -aao -aao -aao -aao -aao -wog -aao -aao -qUS -aao -aao -aao -aao -aao aao aao aao @@ -56270,21 +59649,21 @@ aao aao aao aao -akX -alH -akX +aqL +ann +aqL abL -aad -aad -aad -aao -aao -aao -aao -aao -aao -aao -aao +lVm +dlr +dtX +aqL +arp +dwe +acP +acP +acP +acP +acP acP asc acp @@ -56304,18 +59683,18 @@ ahj anx afS akM -alX -aqE -aqE -aqE -aqE -aqD +acp +aqM +aqL +aqL +aqL +asc alu -auQ +auR avA -awk +aqw awW -axC +axD alu ayT awi @@ -56335,9 +59714,9 @@ aHF aHF apD aND +aXk aMf -aMf -aQZ +aZS aof aSR aTY @@ -56345,19 +59724,19 @@ aTY aTY aWC aXj -aXM +aOI aYh -aRd -aRd +oDW +oFY bcI -aRd +bcJ aRd aVl -bcI +qoN bdo -aXL -apC -aHD +apD +bhU +wxo aBR aBR bhi @@ -56377,36 +59756,36 @@ bsX bmy bmZ bmZ -bmO -bmg +mPK +lck boV -bmi +slC bpN -bmi -bmi -bre -fOK +bqo +bqo +sBm +tTI wFL -bob -bmg axX -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao +axX +axX +ayZ +ayZ +ayZ +ayZ +fEv +ayZ +sNP +ueL +gPh +sNP +ayZ +ayZ +axX +fEv +ayZ +axX +axX aao aao aao @@ -56487,21 +59866,21 @@ aao aao aao aao -akX -akX -wpf -aad -aad -aad -aad -aao -aao -aao -aao -aao -aao -aao -aao +aqL +aqL +aac +lVm +igi +oOt +oOt +eIB +kos +oOt +oOt +stJ +acP +acP +acP acP asc acp @@ -56521,16 +59900,16 @@ ahj aer afS aoT -alX -aqF -aqF -aqF -aqF -aqD +acp +aqM +aqL +aqL +aqL +asc alu auR avA -awl +aqw awW axD alu @@ -56559,21 +59938,21 @@ aof aSS aTZ aVk -aVk +bMa aof -aSV +mEH aOM aYi -aOM -aOM +xBn +nZD aPS aOM aOM aOM aPS -aOM -aUb -apC +bdl +apD +bhU aHD aBR aBR @@ -56582,7 +59961,7 @@ bhi dbi mdU lRu -aMc +uSp aHF aMg bjF @@ -56597,16 +59976,32 @@ bmz boc bmz xDW -bop +eSm +jXf +eSm +ebr bpO -bop -bop -bop -bnq -cuF -bmi -bmi -axX +bpf +tTI +nIi +gZc +nIi +btr +lck +lck +lck +tTI +lck +lck +ouh +tTI +btr +btr +slC +fUp +nVq +sCt +wpn axX aao aao @@ -56616,22 +60011,6 @@ aao aao aao aao -bub -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao wog wog wog @@ -56704,22 +60083,22 @@ aao aao aao aao -wpf -akZ -aad -aad -aad -aad -aad -aao -aao -aao -aao -aao -aao -aao +aac +ajD +lVm +lVm +isr +pRP +vwP +pEp +iXL +qez +pRP +gKG acP acP +acP +chy asc acp afn @@ -56738,18 +60117,18 @@ ahj acp acp acp -alX -aqD -aqD -aqD -aqD -aqD +acp +aqM +aqL +aqL +aqL +asc alu auS avA aqw awW -avA +axD alu alu azH @@ -56778,19 +60157,19 @@ aof aof aof aof -aSV -aOM +mEH aOM +vpx aFd -aOM +khP aZW aOK bbk aOK -bcJ +aPS bdp -aUc -apC +apD +aHF aHD aBR aBR @@ -56817,30 +60196,30 @@ axX axX axX axX -axX -bmi -bmg -bor -bmg -bmi -axX +wYE +lTM +bqM +pMi +ayZ +bsP +ayZ +btu +iFa +snv +btu +gFR +tvH +gML +tvH +gML +gFR +btu +btu +ayZ +btu +gdx axX axX -gNH -aao -bjA -bjA -bjA -bjH -bub -bub -bub -aao -aao -aao -aao -aao -aao aao aao aao @@ -56921,23 +60300,23 @@ aao aao aao aao -abr -aad -aad -oRs -oRs -aad -aad -aao -aao -aao -aao -aao -aao +abY +lVm +lVm +dlr +iRf +pRP +vAy +qNT +qNT +saH +qez +gKG acP acP acP -asc +eVZ +aao acp afo afT @@ -56955,22 +60334,22 @@ ahj any aoh aoU -alX -aqD -aqD -aqD -aqD -aqD +acq +aqM +aqL +aqL +aqL +asc alu -auQ +auR avA -awk +laX awW -axC +axD alu +vQe ayV ayV -bBg alu aHF aMg @@ -56994,12 +60373,12 @@ aST aRd aVl aRd -aRd +bcJ aSW aOM aYk -aOM -aOM +dBm +pxH aZX aof aof @@ -57032,31 +60411,31 @@ bjx bjx bjx bjx -bjx bjw axX +axX bru -bmg bqM -bmi -bmi +sDZ +axX +axX +axX +axX +axX +axX +axX +axX +axX +axX +axX +axX +axX +axX +axX axX axX axX axX -bjY -bjA -bjA -bjA -bjH -bub -bub -bub -aao -aao -aao -aao -aao aao aao aao @@ -57138,23 +60517,23 @@ aao aao aao aao -abs -aad -alJ -vRR -akX -hKM -aad -aao -aao -aao -aao -aao -acP -acP +acG +lVm +acc +dNH +iRf +qez +wpP +tGJ +rmk +jWa +vwP +gKG acP acP -asc +chy +aqL +aao acp afp afT @@ -57172,11 +60551,11 @@ ahj aer aoi aoV -alX -aqE -aqE -aqE -aqE +acq +aqM +aqL +aqL +asa atu alu auT @@ -57184,10 +60563,10 @@ avB awm awX axE -alu +ccU ayW ayV -bBg +ayV alu aHD aBR @@ -57209,11 +60588,11 @@ aRc aof aSU aUa +aXM aOK aOK aOK -aXk -aOK +hkY aYl aYS aOM @@ -57249,17 +60628,17 @@ bjA bjA bjA bjA -bjA -blq +blu +bjw axX brv -bmi bos -bop -bop -bop -bop -boq +szy +vbp +vbp +vbp +vbp +tub axX bjY bjA @@ -57356,22 +60735,22 @@ aao aao aao aao -abr -alJ -akX -akX -cJG -aad -aao -aao -aao +abY +acc +aqL +isr +qez +wpP +tGJ +tGJ +xyw +vwP +gKG +acP +chy +aqL aao aao -acP -acP -acP -acP -asc acp afo afT @@ -57389,12 +60768,12 @@ ahj acp aer aer -alX -alu -alu -alu -alu -alu +acp +aqM +aqL +arp +acP +asc alu alu alu @@ -57425,11 +60804,11 @@ aof aof aof aSV -aUb -aof -aof +bdl aof aof +kRK +kRK aof aof aYT @@ -57470,12 +60849,12 @@ bjA blq axX brw -bmi -bmg +btu +pRG brO bti -bpC -bmi +idM +ndw bor axX bjY @@ -57573,22 +60952,22 @@ aao aao aao aao -abr -alJ -akX -akX -akY -hKM -aao -aao +abY +acc +aqL +isr +pRP +wDK +vRJ +vRJ +kpd +qez +oSN +acP +agq aao aao aao -acP -agq -ahe -ahe -ahS acp afq afS @@ -57608,10 +60987,10 @@ aoj aoj apH aqG -alF -alF -alF -alF +aqL +arp +acP +ags alF alF alF @@ -57639,17 +61018,17 @@ apD aNI aRd bcI -aRd +bcJ aRY aSW -aUb -aof +bdl +kRK aVT aWD aWD aXN -aof -aYU +kRK +aWH aOM aZY aof @@ -57657,7 +61036,7 @@ bbm aJb bcN aof -aJT +wfk apC aHD aIn @@ -57775,32 +61154,32 @@ aaa (91,1,1) = {" aaa aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab aao -abs -abs -wMp -alH -akX -hKM aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +acG +acG +fbF +iRf +pRP +qez +vwP +qez +qez +pRP +oSN acP asc acp @@ -57853,27 +61232,27 @@ aBR aBR aMc apD -aNJ -aOK +aUd +aXM aPS aOM aOK aOK aUc -aof +aYm aVU aOM aOM aXO -aof +kRK aNL aOM aZX aof -aZU +fhy aZA bcN -aOO +kIv aOO apC aHD @@ -57907,9 +61286,9 @@ bjx bjx bjw ayr -bmq -bmq -bmi +tdN +maH +slC bor ayr bjY @@ -57991,33 +61370,33 @@ aaa "} (92,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -abr -alJ -akX -akX -hKM aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +abY +acc +iZh +szg +szg +kdd +kdd +kdd +szg +cfS acP asc acp @@ -58126,7 +61505,7 @@ blq ayr bmq bqo -bmi +nVq btJ ayr bjw @@ -58208,32 +61587,32 @@ aaa "} (93,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -abr -aad -akZ -akZ -aad aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +lVm +ajD +ajD +fbF +arp +acP +acP +acP acP acP asc @@ -58288,21 +61667,21 @@ aBR aMc apD aNK -aOL +aXL aPS aOM aof -wvK -aSX +aTa +aTa aof -aVU +oWe aOM aXl aXP aof aNL aOM -aZX +szi aof aNQ aOO @@ -58341,10 +61720,10 @@ bjy bjy blq bsX -bmi -bmi -bmi -btK +nVq +nVq +nVq +uBi bua buo buo @@ -58425,34 +61804,34 @@ aaa "} (94,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -aad -aad -aad -aad -aad aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +lVm +lVm +acc +arp acP acP +aao +aao +acP asc acp adS @@ -58510,16 +61889,16 @@ aPS aOM aRZ aTa -aUd -aof +aTa +aRZ aVU aWE aXm aXQ -aof +kRK aYV aOM -aZX +szi aof aOO bbY @@ -58558,10 +61937,10 @@ bjy bjy blq maD -bmi -bmi -bsu -bor +nVq +nVq +iQC +cla maD bjw bjw @@ -58642,34 +62021,34 @@ aaa "} (95,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -abr -aad -aad -aad -oRs aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +abY +lVm +lVm +lVm +dtX +arp +acP acP acP +aao +acP asc acp adT @@ -58727,12 +62106,12 @@ aPS aUb aof aSZ -aTa +czS aof aVW aWF aof -aof +kRK aof aYU aOM @@ -58774,12 +62153,12 @@ bkb bkb bkb bjw -awp +ayr btj -bkE -bkE -bpo -awp +nVq +nVq +bor +ayr bjw bjY bjy @@ -58859,33 +62238,33 @@ aaa "} (96,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -abr -abN -aad -tLt -akX aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +abY +abN +lVm +dtX +aqL +aqL +dzs +acP +acP +acP acP asc acp @@ -58941,18 +62320,18 @@ apC aNN aOM aPS -aUb +bdl aof sLS aUe aof aVX aWG -aof +kRK aNK -aOL -aYW -aOM +mST +iDT +nuw aZX aof aof @@ -58991,12 +62370,12 @@ awp awp awp awp -awp +ayr btk -bkE -bkE -bpo -awp +nVq +nVq +bor +ayr bjw bjY bjy @@ -59076,33 +62455,33 @@ aaa "} (97,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -abs -aad -alJ -akX -akX aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +acG +lVm +acc +aqL +aqL +aqL +arp +acP +acP +acP acP asc acp @@ -59155,7 +62534,7 @@ aBR aBR aMc apD -aNL +aWH aOM aPS aRh @@ -59163,38 +62542,38 @@ aof aof aof aof +kRK +kRK aof -aof -aof -aNL -aOM -aOM -aOM +aWH +xej +ole +eSN aPS baI aYO bca bcQ bdr -bdO +nky apC beC aNw aNw aNw aNw -aMg -aMg -vis aHF aHF -aMg -aMg -aMg +bhR +aHF +aHF +aHF +aHF +aHF awp bkD blx -qeK +aZV bmC bnb bnB @@ -59203,17 +62582,17 @@ bku bmF bmF bpP -bkE -gCx +fBo +nEP brx brU -brx -awp +aCO +ayr btk -bkE +nVq btA -bpo -awp +bor +ayr bjw bjY bjz @@ -59293,33 +62672,33 @@ aaa "} (98,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao -abr -alJ -akX -alH aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +abY +acc +aqL +ann +aqL +arp +acP +acP +acP acP asc acq @@ -59376,61 +62755,61 @@ aNL aOM aPV aRi -aOL -aOL +aXL +aXL aUf aVm aOL aOL aOL aYW -aOM -aOM -aOM +xej +tBD +eSN aZZ upV baJ bcb bcR bcc -aYO +toA apC aTh aIn aIn aIn aKt -aKt -aKt +aMc +aHF bhS -biY -dzY -dWg -dWg +aVp +aVp +aVp +aVp bke bku bmF wtC blT bmD -bmJ +pPo bpp boe awp awp awp bpQ -blX +wvK bqT -blX -blX -blX +wvK +wvK +wvK bsY -bkE -bkE -bkE -bpo -awp +slC +nVq +nVq +bor +ayr bjw bjY bkq @@ -59510,33 +62889,33 @@ aaa "} (99,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao -abr -qmY -wMp -akX aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +abY +qmY +fbF +aqL +aqL +aqL +dzs +acP +acP acP asc adG @@ -59555,7 +62934,7 @@ adS acr aly amv -aly +alx adS aly aly @@ -59589,53 +62968,53 @@ aKr aBR aMc apC -aNJ -aOM -aOK +aUd +aYL +aYM aOK aOK aOM aOK aOK aOK -aOM -aOK -aOK -aOM +aYL +aXM aOK -aYS -aUb +wHx +eoU +eSN +bdl aof bbo bcc bcS bcc -aYO +bQe apD aTh aIn aKt aIp aBR -aWI -aFM -aFM +aMc +aHF +aHF +aHF +aHF +aHF aHF aHF -aFM -aFM -aFM awp bkE bly bly bly -blX -bkE -bkE +wvK +fBo +boe ayF boW -bkE +lTi bpR bnF bnF @@ -59643,11 +63022,11 @@ bry bnF bof dvC -bmF -bmF +eSm +eSm btB btN -awp +ayr bjw bjY bjA @@ -59727,33 +63106,33 @@ aaa "} (100,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao -abr -abr -alJ -akX aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +abY +abY +acc +aqL +aqL +aqL +arp +acP +acP acP asc acq @@ -59819,9 +63198,9 @@ aON aof aof aYo -aof -aNL -aUb +rpI +qyi +bdl aof bbp bcc @@ -59835,36 +63214,36 @@ aBR aBR aBR aMc -erf -auX -auX -auX -auX -erf +aHF +aMg +shf +shf +aMg +aHF aHF awp bkG -blX -blX -blX -bkE -bkE -bkE +wvK +wvK +tKr +vin +fBo +boe ayF orZ -bkE +lTi bpS -blX -blX +wvK +wvK brz brV -bkE -awp -awp -awp -awp -awp -awp +boe +ayr +ayr +ayr +ayr +ayr +ayr bjw bjY bjA @@ -59944,33 +63323,33 @@ aaa "} (101,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao -abr -abr -tLt -akX aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +abY +abY +dtX +aqL +aqL +aao +aqL +dzs +acP acP asc acp @@ -59993,7 +63372,7 @@ adS anD alA alA -acr +aAF aqM aqL ase @@ -60027,17 +63406,17 @@ aNO aOO aPW aof -aNO +bdm aOO -aPW +vOs aof jAm aOO -aPW +hxs aof aYp aof -aNL +aWH aUb aof bbq @@ -60052,30 +63431,30 @@ aKl aIm aBR aMc -auX -gpR -gpR +aHD +rsQ gpR gpR -auX +rsQ +jQe bkf awp bkH blA -bkE -bkE +wtG +jRn bnd -bnf -boe +wtG +wVw ayF boW -bkE +lTi bpo -bkE +fBo bqV brA brW -gCx +urn awp bjw bjx @@ -60161,33 +63540,33 @@ aaa "} (102,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -abq -aad -tLt -akX -akX aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +arv +lVm +dtX +aqL +aqL +aqL +aao +aao +arp +acP acP asc acp @@ -60210,7 +63589,7 @@ adS adk adk adS -alZ +acr aqM arr asc @@ -60244,20 +63623,20 @@ aNP aOO aOO aof -aNP +bdn aOO aOO aof aNP -aOO -aOO +pdG +qXi aof aYq aof -aNL +aWH aUb aof -bbo +xKG aTa bcV bdt @@ -60274,7 +63653,7 @@ gpR gpR gpR gpR -auX +pri aHF awM awM @@ -60378,33 +63757,33 @@ aaa "} (103,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -abr -alJ -akX -akX -akX aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +abY +acc +aqL +aqL +aqL +aqL +aqL +aao +arp +acP acP ags alF @@ -60427,7 +63806,7 @@ ang anE aok adk -acr +alZ aqM acP asc @@ -60445,8 +63824,8 @@ azS amn amn amn -aCQ -amn +cgt +wLg amn amn amn @@ -60461,12 +63840,12 @@ aNQ aGG aPX aof -aNQ -aTb +pNU +aOO aUg aof aNQ -aWH +aOO aXn aof aYr @@ -60475,10 +63854,10 @@ aNJ aUc aof bbr +toA aYO -aYO -aTa -aYO +fPB +bQe bek bjZ aMg @@ -60491,7 +63870,7 @@ gpR gpR gpR gpR -auX +pri aHF awM bkI @@ -60505,7 +63884,7 @@ awM boX bpn bpp -bkE +fBo bnb brB bkN @@ -60595,33 +63974,33 @@ aaa "} (104,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -aad -aad -wMp -akX -akX aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +lVm +lVm +fbF +aqL +aqL +aqL +aqL +aqL +arp +acP acP acP acP @@ -60652,7 +64031,7 @@ amn atz atY amn -avE +azX asJ awY axH @@ -60663,7 +64042,7 @@ amn aBj aBV aBk -aDR +aBk aBj aFQ amn @@ -60703,12 +64082,12 @@ aMc aHD aIm aMc -auX -gpR -gpR -gpR +aHD +rsQ gpR -auX +fpt +rsQ +aMc aHF awM bkJ @@ -60724,8 +64103,8 @@ bpo bpU bqv bpU -blX -blX +wvK +wvK bsC awp bjY @@ -60812,39 +64191,39 @@ aaa "} (105,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao -abq -aad -aad -aad -wMp -akX -akY aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +arv +lVm +lVm +lVm +fbF +aqL +buP +aqL +aqL +arp acP acP -acP -acP -acP +ilN +qJL +qJL +qJL +ilN acP asc acr @@ -60882,7 +64261,7 @@ aBW aCR aBW aEM -aBW +cnO amn aHD aBR @@ -60920,12 +64299,12 @@ vmm aHF aFM aHF -erf -auX -auX -auX -auX -erf +aHF +aCN +usF +fdC +aCN +aHF aHF awM awM @@ -60936,12 +64315,12 @@ awM awM awM awM -boX +uTO bpo bpV -bkE +bkU bqX -blX +wvK brY bsD awp @@ -61029,39 +64408,39 @@ aaa "} (106,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao -cJG -aad -aad -abX -aad -akZ -wMp aao aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +avK +lVm +lVm +abX +lVm +ajD +fbF +aqL +aqL +arp acP acP -acP -acP +dhT +fVm +eiS +xah +nVa acP ags alF @@ -61096,11 +64475,11 @@ azV amn aBl aBX +aBk +aBk amn amn amn -aBk -amn aHD aBR aBR @@ -61147,19 +64526,19 @@ aHF awp bkK blB -blX -bkE +tIv +nwB bnf bnf bnf bou -bkE +qHc bpo bpU -bkE +bkU bpU -blX -blX +wvK +wvK bsE awp bjY @@ -61246,29 +64625,8 @@ aaa "} (107,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao -akX -cJG -oRs -aad -aad -aad -aad aao aao aao @@ -61277,8 +64635,29 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aqL +avK +dlr +lVm +lVm +lVm +tlj +aqL +aqL +arp acP acP +dhT +fVm +ahS +xah +nVa acP acP acP @@ -61309,12 +64688,12 @@ dJc axK ayp asJ -aws +erf amn aBm -aBW -amn -ooP +hul +aBk +aBk aEN aFR amn @@ -61354,28 +64733,28 @@ aMc aHD aIn aMc -erf -auX -auX -auX -auX -erf +aHF +aMg +shf +shf +aMg +aHF aHF awp bkK -blX -blX -blX -blX +bBg +wvK +wvK +wvK bnE -blX -blX +wvK +wvK boZ bpo bpV -bkE +bkU bqX -bkE +fBo brZ bsF azG @@ -61463,29 +64842,8 @@ aaa "} (108,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao -akX -akX -akX -hKM -aad -aad -abM aao aao aao @@ -61494,8 +64852,29 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aqL +aqL +aqL +heI +lVm +lVm +acc +aqL +aqL +arp acP acP +dhT +ahS +ahS +jvh +nVa acP acP acP @@ -61529,12 +64908,12 @@ asJ azW amn aBn -aBW +jku +aBk +aBk amn amn amn -aFS -amn aHD aBR aBR @@ -61571,17 +64950,17 @@ aHF aHD aWJ aMc -auX -gpR -gpR +aHD +rsQ gpR gpR -auX +rsQ +jQe aHF awp bkL -bkE -bkE +qHc +fBo bly bng bnF @@ -61593,7 +64972,7 @@ bpU bqw bpU brC -blX +nlJ bsG azG btn @@ -61680,29 +65059,8 @@ aaa "} (109,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao -akX -akY -akX -hKM -aad -aad -abV aao aao aao @@ -61712,8 +65070,29 @@ aao aao aao aao +aao +aao +aao +aao +aao +aqL +buP +aqL +heI +lVm +lVm +dtX +aqL +aqL +arp acP acP +ase +ahS +ahS +ahS +aqM +acP acP acP acP @@ -61743,14 +65122,14 @@ axc awZ ayp asJ -azX -amn +aws +gnk aBo aBW -amn -arz -aEN aBk +aBk +aEN +nGU amn aHD aBR @@ -61793,24 +65172,24 @@ gpR gpR gpR gpR -auX +pri aHF awp bkM -bkE +fBo blV bmF bnh -blX -blX +wvK +wvK bly bpa bpq -blX -blX -bkE -blX -bly +wvK +wvK +fBo +wvK +qqw bsG azG bjY @@ -61897,28 +65276,8 @@ aaa "} (110,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao -akX -akX -akX -hKM -aad -abM aao aao aao @@ -61929,8 +65288,28 @@ aao aao aao aao +aao +aao +aao +aao +aqL +aqL +aqL +heI +lVm +acc +aqL +aqL +aqL +arp acP acP +dhT +ahS +ahS +fVm +nVa +acP acP acP acP @@ -61964,11 +65343,11 @@ azY aAD aBp aBW +aBk +aBk amn amn amn -aBk -amn aHD aBR aBR @@ -62010,7 +65389,7 @@ gpR gpR gpR gpR -auX +pri aHF awp qeK @@ -62019,15 +65398,15 @@ blW ccP bpo bnH -bkE +yar box -bkE +yar iyd iyd eKU -bkE -bkE -blX +yar +yar +aZJ bsG awp bjY @@ -62114,28 +65493,9 @@ aaa "} (111,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -alH -wpf -aad -aad -abM aao aao aao @@ -62146,8 +65506,27 @@ aao aao aao aao +aao +aao +aao +aao +ann +aac +lVm +lVm +acc +aqL +aqL +aqL +arp acP acP +dhT +ahS +fVm +eiS +nVa +acP acP acP acP @@ -62177,14 +65556,14 @@ aua aua awn aua -aws +ooP amn aBq -aBY -amn -aDT -aEN +aBq +shm aBk +aEN +pGN amn aHF aFM @@ -62222,12 +65601,12 @@ aBR aBR aBR aWW -auX -gpR -gpR -gpR +aHD +rsQ gpR -auX +fpt +rsQ +aMc aHF awp awp @@ -62303,14 +65682,14 @@ aDX kqS bDu bDA -bFh +aRf aDX bDU elM aDX bDo aQy -bFh +aRf aRf aDX bEK @@ -62331,29 +65710,9 @@ aaa "} (112,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -akX -hKM -aad -aad -alJ -vRR aao aao aao @@ -62365,6 +65724,26 @@ aao aao aao aao +aao +aao +aao +aqL +heI +lVm +lVm +acc +dNH +aqL +aqL +aqL +dzs +acP +dhT +ruF +foj +eyA +nVa +acP acP acP acP @@ -62439,12 +65818,12 @@ aBR aBR aBR aMc -erf -auX -auX -auX -auX -erf +aHF +aCN +usF +fdC +aCN +aHF aHF awp bkO @@ -62452,7 +65831,7 @@ blC awp bmG bpo -bkG +lYH awp bWk bWk @@ -62548,29 +65927,11 @@ aaa "} (113,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao -abY -acb -dtX -wDK aao aao aao @@ -62583,6 +65944,24 @@ aao aao aao aao +aao +aao +abY +lVm +dtX +aqL +aqL +aqL +aqL +arp +acP +ilN +mpn +mpn +mpn +ilN +acP +acP acP acP ags @@ -62608,7 +65987,7 @@ amn avG awq awq -awq +aCQ awq axM aws @@ -62765,29 +66144,11 @@ aaa "} (114,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao -abs -alJ -akX -akX aao aao aao @@ -62800,6 +66161,24 @@ aao aao aao aao +aao +aao +acG +acc +aqL +aqL +aqL +aao +aqL +aqL +dzs +acP +acP +acP +acP +acP +acP +acP acP acP acP @@ -62877,16 +66256,16 @@ asv aHF aHF aHF -asv -awf -awf +aHF +aHF +aHF awp bkE blC awp bmG bpo -bkE +boe awp bWk bMf @@ -62982,29 +66361,12 @@ aaa "} (115,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao -alJ -alH -akX aao aao aao @@ -63018,6 +66380,23 @@ aao aao aao aao +aao +acc +ann +aqL +aao +aao +aao +aqL +arp +acP +acP +acP +acP +acP +acP +acP +acP acP acP acP @@ -63095,8 +66474,8 @@ aHF aHF aHF asv -bjJ -bgx +atJ +atJ awp bkP awp @@ -63199,29 +66578,12 @@ aaa "} (116,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao -acc -wDK -wDK aao aao aao @@ -63236,6 +66598,23 @@ aao aao aao aao +acc +aqL +aqL +aqL +aqL +aqL +aqL +arp +acP +acP +acP +acP +acP +acP +acP +acP +acP acP acP acP @@ -63256,7 +66635,7 @@ amI aty atY amn -avE +azX awr axg axO @@ -63312,7 +66691,7 @@ aHF aHF aHF asv -beI +wQD bgx bkw blX @@ -63320,7 +66699,7 @@ blD cGT bmH bnl -blX +pBv ayF vjc bpc @@ -63416,30 +66795,12 @@ aaa "} (117,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao -aad -wMp -akX -akX aao aao aao @@ -63454,6 +66815,24 @@ aao aao aao aao +lVm +fbF +aqL +aqL +aqL +aqL +aqL +aqL +dzs +acP +acP +acP +acP +acP +acP +acP +acP +acP acP acP acP @@ -63511,7 +66890,7 @@ asH aYZ aZE bac -bbt +aYY bbt bac bac @@ -63532,10 +66911,10 @@ asv beI bgx awp -blX -blX +bBg +wvK blY -blX +wvK bnm bnK ayF @@ -63633,32 +67012,12 @@ aaa "} (118,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao -aad -abr -akZ -xWI -akZ -ack aao aao aao @@ -63672,13 +67031,33 @@ aao aao aao aao +aao +lVm +abY +ajD +xWI +ajD +fbF +aqL +aqL +aqL +iSc +iSc +dzs acP acP acP acP acP -acP -asc +agq +ahe +ahe +ahe +ahe +ahe +ahe +ahe +ahS aku aoo apc @@ -63695,11 +67074,11 @@ jZp axh amn amn -amn +anJ aAc -amn -amn -amn +anJ +anJ +anJ eRW amn amn @@ -63736,7 +67115,7 @@ aJI bac bem asv -bfg +bgd bfL bgc bgc @@ -63850,33 +67229,12 @@ aaa "} (119,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao -aad -aad -abO -aad -aad -aad -ack aao aao aao @@ -63891,11 +67249,32 @@ aao aao aao aao +lVm +lVm +mWI +lVm +lVm +lVm +fbF +aqL +aqL +aqL +aqL +aqL +dzs acP acP acP acP asc +ilN +gGC +gGC +gGC +gGC +ahS +ahS +ahS aku aop apc @@ -63912,10 +67291,10 @@ awt avJ axP ahf -amn -aAd -aAF -aAF +anJ +aAH +aAg +aAg aAg anJ aDV @@ -63966,11 +67345,11 @@ asv bjL bkg awp -blX +bBg bly bma -bmJ -bmJ +pPo +pPo bnM ayF bWk @@ -64067,20 +67446,6 @@ aaa "} (120,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -64088,15 +67453,6 @@ aao aao aao aao -aad -aad -abs -aad -aad -oRs -abU -abU -ack aao aao aao @@ -64108,11 +67464,34 @@ aao aao aao aao -acP +aao +aao +aao +lVm +lVm +acG +lVm +lVm +dlr +abU +abU +fbF +aqL +aqL +aqL +dzs acP acP acP asc +gGC +ruF +ruF +fVm +ahS +ahS +ahS +ahS aku aop apc @@ -64129,10 +67508,10 @@ aop apc apc ars -amn +anJ aAe aAG -aBt +aCb aCb aCU aDW @@ -64186,7 +67565,7 @@ awp bkS bly bly -blX +wvK bno bnN ayF @@ -64284,20 +67663,6 @@ aaa "} (121,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -64306,14 +67671,6 @@ aao aao aao aao -aad -aad -aad -tLt -akX -cJG -oRs -abM aao aao aao @@ -64325,11 +67682,33 @@ aao aao aao aao -acP +aao +aao +aao +lVm +lVm +lVm +dtX +aqL +avK +dlr +tlj +aqL +aqL +aqL +arp acP acP acP asc +gGC +eiS +fVm +ahS +ahS +fVm +ahS +ahS aku aoq apd @@ -64400,8 +67779,8 @@ aZF bjM bgx awp -bkK -bly +dQZ +haT bmb gCx bnp @@ -64501,20 +67880,6 @@ aaa "} (122,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -64525,13 +67890,6 @@ aao aao aao aao -alJ -akX -akX -akX -akX -hKM -ack aao aao aao @@ -64543,10 +67901,31 @@ aao aao aao aao -acP +aao +aao +aao +acc +aqL +aqL +aqL +aqL +heI +fbF +aqL +aqL +aqL +dzs acP acP asc +gGC +foj +ahS +ahS +fVm +fVm +ahS +ahS ako ako ako @@ -64718,20 +68097,6 @@ aaa "} (123,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -64742,14 +68107,6 @@ aao aao aao aao -alJ -akX -akY -akX -akX -hKM -aad -ack aao aao aao @@ -64760,10 +68117,32 @@ aao aao aao aao -acP +aao +aao +aao +aao +acc +aqL +buP +aqL +aqL +heI +lVm +fbF +aqL +aqL +arp acP acP asc +gGC +ahS +ahS +ahS +fVm +ahS +ahS +fVm ako aor ape @@ -64829,10 +68208,10 @@ asv asv asv asv +atJ +atJ asv asv -awf -awf awp bkT bkU @@ -64935,20 +68314,6 @@ aaa "} (124,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -64959,14 +68324,6 @@ aao aao aao aao -aad -wMp -akX -vRR -akX -hKM -aad -abM aao aao aao @@ -64978,21 +68335,43 @@ aao aao aao aao -acP +aao +aao +aao +lVm +fbF +aqL +dNH +aqL +heI +lVm +tlj +aqL +aqL +aqL +dzs acP asc +ahS +ahS +ahS +ahS +ahS +ahS +ahS +fVm ako aos ape apN ape -aos +pBh ako asM atE apc ako -atE +isk aop apc axR @@ -65000,7 +68379,7 @@ ayw azc ako aAJ -aBu +apo tPr anJ aEa @@ -65152,20 +68531,6 @@ aaa "} (125,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -65176,14 +68541,6 @@ aao aao aao aao -aad -alJ -akX -akX -wpf -aad -abX -tLt aao aao aao @@ -65196,20 +68553,42 @@ aao aao aao aao +aao +aao +lVm +acc +aqL +aqL +aac +lVm +abX +dtX +aqL +aao +aqL +arp acP asc +ahS +fVm +fVm +ahS +ahS +ahS +fVm +eiS ako -aos ape -apN ape -aot +sVY +ape +oOM ako asN atE apc ako -atE +iaq aop apc ako @@ -65217,8 +68596,8 @@ ayx azd ako aAJ -aBu -aCc +apo +apo anJ aEb aEO @@ -65369,20 +68748,6 @@ aaa "} (126,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -65394,13 +68759,6 @@ aao aao aao aao -aad -akZ -akZ -aad -aad -alJ -vRR aao aao aao @@ -65413,10 +68771,31 @@ aao aao aao aao -acP +aao +aao +lVm +ajD +ajD +lVm +lVm +acc +dNH +aqL +aao +aao +aqL +dzs asc +gGC +ahS +fVm +ahS +ahS +fVm +foj +foj ako -aos +ape apf apO aqR @@ -65426,7 +68805,7 @@ asO atE apc ako -atE +mcc aop axi ako @@ -65434,8 +68813,8 @@ ako ako ako aAJ -aBu -aCc +apo +apo anJ aEc aEc @@ -65586,20 +68965,6 @@ aaa "} (127,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -65609,15 +68974,6 @@ aao aao aao aao -abq -abU -abU -aad -aad -aad -aad -tLt -akX aao aao aao @@ -65632,12 +68988,35 @@ aao aao aao aao +arv +abU +abU +lVm +lVm +lVm +lVm +dtX +aqL +aqL +aqL +aao +aqL +arp +asc +gGC +ahS +ahS +ahS +xah +aao +aao +aao ako -aos +xrN ape eJU aqS -aos +ape ako asP apc @@ -65651,8 +69030,8 @@ ayw azc ako aAJ -aBu -aCc +apo +apo anJ anJ anJ @@ -65803,20 +69182,6 @@ aaa "} (128,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -65825,16 +69190,6 @@ aao aao aao aao -oRs -oRs -abW -aad -aad -aad -aad -alJ -akX -akX aao aao aao @@ -65849,12 +69204,36 @@ aao aao aao aao +dlr +dlr +abW +lVm +lVm +lVm +lVm +acc +aqL +aqL +aqL +aqL +aqL +aqL +arp +asc +gGC +foj +ruF +aao +aao +aao +aao +aao ako aot apg apP ape -aos +ape ako asQ atE @@ -65868,19 +69247,19 @@ ayx azd ako aAK -aBu -aCd +apo +apo aCV -arD -arD -arD -arD -arD -arD -arD -aKA -aCc -aMk +apo +apo +apo +apo +apo +apo +apo +apo +apo +apo apo apo anT @@ -66020,20 +69399,6 @@ aaa "} (129,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -66042,16 +69407,6 @@ aao aao aao aao -alH -akX -cJG -oRs -aad -aad -abW -alJ -akX -akY aao aao aao @@ -66066,12 +69421,36 @@ aao aao aao aao +ann +aqL +avK +dlr +lVm +lVm +abW +acc +aqL +buP +aqL +aqL +aqL +aqL +aqL +asc +gGC +aao +aao +aao +aao +aao +aao +aao ako -aos +xrN ape apN aqT -arv +ape ako asR atF @@ -66085,19 +69464,19 @@ ako ako ako aAK -aBu -aCc -aCW -arD -arD -arD -arD -arD +apo +apo +apo +apo +apo +apo +apo +apo awy -arD -aKB -aCc -aMk +apo +apo +apo +apo apo apo aOU @@ -66237,20 +69616,6 @@ aaa "} (130,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -66259,16 +69624,6 @@ aao aao aao aao -akX -akX -akX -akX -cJG -aad -aad -alJ -akX -akX aao aao aao @@ -66283,6 +69638,30 @@ aao aao aao aao +aqL +aqL +aqL +aqL +avK +lVm +lVm +acc +aqL +aqL +aao +aao +aao +aao +aqL +aao +aao +aao +aao +aao +aao +aao +aao +aao ako ako ako @@ -66302,19 +69681,19 @@ ayw azc ako aAJ -aBu -aCc -aCd -arD -arD -arD -arD -arD -arD -arD -arD -aKA -aMk +apo +apo +apo +apo +apo +apo +apo +apo +apo +apo +apo +apo +apo apo apo anT @@ -66454,20 +69833,6 @@ aaa "} (131,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -66476,12 +69841,26 @@ aao aao aao aao -akX -akX -akX -akX -akX -hKM +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aqL +aqL +aqL +aqL +aqL +heI aad alJ akX @@ -66519,13 +69898,13 @@ ayx azd ako aAJ +apo anT anX anX anX anX anX -anX anT anT anT @@ -66671,20 +70050,6 @@ aaa "} (132,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -66693,15 +70058,29 @@ aao aao aao aao -akY -akX +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +buP +aqL iOL -vRR -akX +dNH +aqL hKM aad aad -wMp +hdJ aao aao aao @@ -66736,12 +70115,12 @@ ako ako ako aAK -anU -aCf +apo +nIs aCX -aEd +uHx aES -aCZ +gAE aGK anT aIw @@ -66888,20 +70267,6 @@ aaa "} (133,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -66910,6 +70275,20 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao akX akX akX @@ -66949,16 +70328,16 @@ avI apc axk axS -ayy +aBx aze -ayy +aBx aAL aBx aCg aCY -aCf +aCZ aET -aFZ +aMQ aCZ anT aIw @@ -67105,20 +70484,6 @@ aaa "} (134,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -67129,11 +70494,25 @@ aao aao aao aao -akX -wpf -aad +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +oeT +ptV aad aad +qhS abM aao aao @@ -67166,17 +70545,17 @@ avJ apc axl ovq -ayz -ayz -aAh +apo aqa -anU -aCf +ata +apo +apo +tKR aCo -aCf -aEU -aFZ aCZ +aEU +aMQ +uXO anT aIw aJs @@ -67322,20 +70701,6 @@ aaa "} (135,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -67347,11 +70712,25 @@ aao aao aao aao -abr -aad -oRs -oRs -abM +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +bup +tQY +fBU +som +gtG aao aao aao @@ -67383,16 +70762,16 @@ apc avJ apc ako -ako -ako -ako +aBu arD -anU -aCf +arD +aMk +apo +nIs +aCZ aCZ -aCf aQa -aCf +aCZ aCZ anT aIx @@ -67539,36 +70918,36 @@ aaa "} (136,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aab -aab -aab -aab aab aao aao aao aao aao -abr -tLt +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +vMb +rTr akX akX -cJG +eAG aao aao aao @@ -67599,18 +70978,18 @@ aml apc apc apc -axR -ayw -azc -ako +aku +aBu arD -anU -aCf +arD +aMk +apo +nIs +gYM aCo -aEe aEU -aCf aCZ +gAE anT aIy aIC @@ -67756,36 +71135,36 @@ aaa "} (137,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao abq -abU -alJ -akX -akX +tyH +xHQ +cVT +cVT rYt -akX +cVT aao aao aao @@ -67816,18 +71195,18 @@ ask apc apc apc -ako -ayx -azd -ako +aku +aBu arD -anU -aCf +arD +aMk +apo +nIs +gYM aCo -aEe aEW -aCf aCZ +gAE anT aIz aIC @@ -67973,29 +71352,29 @@ aaa "} (138,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao oRs aad alJ @@ -68033,17 +71412,17 @@ aml atE aww apc -ako -ako -ako -ako +aku +aBu arD -anU -aCf -aCo +arD +aMk +apo +nIs +gYM aEf aEU -aCf +aCZ gAE anT bix @@ -68190,36 +71569,36 @@ aaa "} (139,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao akX hKM aad wMp akX akX -akX +oeT akX aao aao @@ -68229,9 +71608,9 @@ akX akX wpf aad -ack aad -abq +aad +aad akZ alI alH @@ -68250,14 +71629,14 @@ ako xqf apc apc -axR -ayw -azc -ako +aku +aBu arD -anU -aCf -aCZ +arD +aMk +apo +nIs +gAE aCZ aQa aCZ @@ -68407,29 +71786,29 @@ aaa "} (140,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao alH cJG aad @@ -68446,9 +71825,9 @@ akZ fhI aad aad -abM aad -abr +aad +aad aad alJ akY @@ -68468,12 +71847,12 @@ avJ avJ axi ako -ayx -azd -ako +aBu +arD arD +aMk +anT anT -anY anY anY cYI @@ -68624,29 +72003,29 @@ aaa "} (141,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao akY akX hKM @@ -68681,15 +72060,15 @@ akL akL akL akL -atE +wzc apc avJ ako -ako -ako -ako +aBu arD -anT +arD +aMk +nIs aCi aCZ aCZ @@ -68841,31 +72220,31 @@ aaa "} (142,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao hKM aad aad @@ -68897,16 +72276,16 @@ apU asX aoB auf -akL -atE -apc -apc +uQY +uey +uey +uey ako -aao -arD +aBu arD arD -anT +aMk +nIs aCj aCo aCo @@ -69058,25 +72437,6 @@ aaa "} (143,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -69084,6 +72444,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao abr aad aad @@ -69115,15 +72494,15 @@ aoB apU aoB akL -atE -apc -apc -ako -aao -arD -arD -arD -anT +dMT +aqa +aqa +aqa +ant +aKB +vis +aMk +nIs aOc aCo aCo @@ -69275,25 +72654,6 @@ aaa "} (144,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -69301,6 +72661,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao abs aad aad @@ -69332,14 +72711,14 @@ asY aoB aug akL -atE -apc -apc -ako -aao -aao -arD -arD +tKE +aCc +aCc +aCc +aCc +aCc +gwb +aMk anT aCl aDa @@ -69492,25 +72871,6 @@ aaa "} (145,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -69519,6 +72879,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao abs abO aad @@ -69545,18 +72924,18 @@ apZ aoB arC aoB -asZ +auh aoB auh akL -apc -apc -apc -ako -aao -aao -arD -arD +aBu +aCc +knF +aDR +aKA +aAh +gwb +aMk anT aCm aCZ @@ -69709,25 +73088,6 @@ aaa "} (146,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -69737,6 +73097,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao abr alJ akX @@ -69766,15 +73145,15 @@ akL akL akL akL -avK -awx -axm -ako -aao +aBu +aCc +knF +aDT aao -arD -arD -anT +kCm +aAh +aMk +nIs aCn aCZ aCo @@ -69926,25 +73305,6 @@ aaa "} (147,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -69955,11 +73315,6 @@ aao aao aao aao -brc -buP -fbF -isr -iZh aao aao aao @@ -69974,6 +73329,30 @@ aao aao aao aao +aao +aao +aao +aao +aao +aEe +kpf +kpf +kpf +aEe +aEe +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tAW aqa aqa @@ -69982,16 +73361,16 @@ aqa ata ata ata -ann -ant -ant +aqa ant -ako +aCc +aCc +aDT aao aao -arD -arD -anT +ayz +aMk +nIs aCo aCZ aEg @@ -70143,25 +73522,6 @@ aaa "} (148,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -70171,11 +73531,6 @@ aao aao aao aao -arK -szg -szg -szg -arK aao aao aao @@ -70187,6 +73542,30 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aoa +aFZ +aFZ +aFZ +aFZ +aFZ +aoa +aao +aao +aao +aao +aao +aao +aao +aao +aao amG aao aao @@ -70194,21 +73573,21 @@ aao aao aao aao -arD +aCc asm -arD -arD -arD -arD -arD -arD -arD -arD -aao +aCc +aCc +aCc +knF +aCc +aCc +aCc +aFS +kCm aao -arD -arD -anT +ayz +aMk +nIs aCp aDb aEh @@ -70360,25 +73739,6 @@ aaa "} (149,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -70388,11 +73748,6 @@ aao aao aao aao -aTv -aTv -aTv -aTv -aTv aao aao aao @@ -70404,6 +73759,30 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aoa +bjJ +qtx +qtx +qtx +jMB +aoa +aao +aao +aao +aao +aao +aao +aao +aao +aao wQC gXp eMX @@ -70414,17 +73793,17 @@ aao aao aao aao -arD -arD -arD +oWM +oWM aao -arD -arD -arD aao -arD -arD -arD +knF +aCc +knF +aFS +dWg +bSc +aMk anW anW anW @@ -70577,25 +73956,6 @@ aaa "} (150,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -70604,14 +73964,33 @@ aao aao aao aao -gNH -szg -szg -szg -heI -szg -szg -gNH +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aoa +aFZ +aFZ +aFZ +aFZ +aFZ +aoa aao aao aao @@ -70630,19 +74009,19 @@ aao aao aao aao +anU +kCm +kCm +gbt aao -arD -arD -arD -arD -arD -arD -arD -arD -arD -arD -arD -aMk +aao +aCc +aCc +aCc +aCc +knF +bMz +apo anW aDc aEi @@ -70794,25 +74173,6 @@ aaa "} (151,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -70821,15 +74181,34 @@ aao aao aao aao -aac -azF -azF -azF -azF -azF -azF aao -kpf +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aCf +aCf +aCf +aCf +aCf +aCf +aao +aao tQw tQw tQw @@ -70845,20 +74224,20 @@ tQw aao aao aao -aao -aao -aao -aao -arD -arD -arD -arD -arD -arD -arD -arD -arD -arD +ack +tng +arz +anU +kCm +ayz +knF +whv +aCc +aCc +aCc +aCc +aCc +aCc aMk anW aDc @@ -71011,25 +74390,6 @@ aaa "} (152,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -71038,6 +74398,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -71061,21 +74440,21 @@ tQw tQw aao aao -aao -aao -aao -aao -aao -aao -arD -arD -arD -arD -arD -arD -arD -arD -arD +tVm +tng +tng +tng +ack +awf +ayz +knF +whv +aCc +aCc +knF +aCc +aCc +knF aMk anW aDc @@ -71228,25 +74607,6 @@ aaa "} (153,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -71255,6 +74615,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw ahw tQw @@ -71276,23 +74655,23 @@ tQw tQw tQw tQw -tQw -aao -aao -aao aao -aao -aao -aao -arD -arD -awy -arD -arD -arD -arD -arD -arD +ack +tng +tng +tng +tng +arz +awf +kCm +aAh +kLW +aCc +knF +aCc +aCc +aCc +aCc aMk anW aDc @@ -71445,25 +74824,6 @@ aaa "} (154,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -71472,6 +74832,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -71494,22 +74873,22 @@ tQw ahw tQw tQw -tQw -aao -aao -aao +fNh +tng +tng +tng +tng +tng aao aao -arD -arD -arD -arD -arD -arD -arD -arD -arD -arD +kCm +dTa +aCc +aCc +aCc +aCc +aCc +aCc aMk anW aDd @@ -71662,25 +75041,6 @@ aaa "} (155,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -71688,6 +75048,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -71711,22 +75090,22 @@ tQw ujC ujC tQw -tQw +vVB +ack +tng +tng aao aao aao aao -arD -arD -arD -arD -arD -arD -arD -arD -arD -arD -arD +aao +aBY +aAh +knF +knF +aCc +aCc +aCc aMk anW aDe @@ -71879,25 +75258,6 @@ aaa "} (156,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -71905,6 +75265,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -71929,21 +75308,21 @@ ujC ujC tQw tQw -tQw -tQw +tCQ +tCQ aao aao -arD -arD -arD -arD -arD -arD -arD -arD -arD -arD -arD +aao +kCm +gbt +kCm +kCm +gbt +aCd +aAh +aCc +aCc +aCc aMk anW aDf @@ -72096,31 +75475,31 @@ aaa "} (157,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -72152,15 +75531,15 @@ aao aao aao aao -arD -arD -arD +kCm +kCm +kCm aao aao aao -arD -arD -arD +aCc +aCc +aCc aMk anW aDg @@ -72313,31 +75692,31 @@ aaa "} (158,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw ahw tQw @@ -72369,15 +75748,15 @@ tQw aao aao aao -arD -arD +kCm +gbt aao aao aao aao -arD -arD -arD +knF +knF +aCc aMk anW aDh @@ -72530,30 +75909,30 @@ aaa "} (159,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -72594,7 +75973,7 @@ aao aao aao aao -arD +coc aMk anW anW @@ -72747,29 +76126,29 @@ aaa "} (160,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -72964,29 +76343,29 @@ aaa "} (161,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -73181,28 +76560,28 @@ aaa "} (162,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -73398,28 +76777,28 @@ aaa "} (163,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -73615,28 +76994,28 @@ aaa "} (164,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw ahw @@ -73832,29 +77211,29 @@ aaa "} (165,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -74049,29 +77428,29 @@ aaa "} (166,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -74266,29 +77645,29 @@ aaa "} (167,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -74319,12 +77698,12 @@ adZ aqX arE asn -htp +gvI amk ajm -aqc +sUQ avM -aqc +lAF aka amk tQw @@ -74483,29 +77862,29 @@ aaa "} (168,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -74540,9 +77919,9 @@ atc amk auj auY -auY +fnv awz -ahv +aqc amk aao tQw @@ -74700,29 +78079,29 @@ aaa "} (169,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -74825,121 +78204,121 @@ aao aao aao aao -gCE -gCE -gCE -gCE -aao -aao -aao -aao -aao -aao -aao -aao -aao -bLA -izh -izh -izh -jGd -bTW -izh -izh -sLr -aao -aao -aao -aao -aao -aao -fRH -tgL -izh -uPm -izh -izh -izh -izh -gtX -gtX -izh -izh -izh -izh -aao -aao -aao -aao -izh -izh -izh -izh -izh -izh -izh -izh -izh -izh -izh -jGd -izh -izh -izh -izh -izh -izh -izh -izh -aao -aao -aao -izh -izh -izh -izh -izh -aao -aao -aao -aao -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(170,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aao -aao -aao +gCE +gCE +gCE +gCE +aao +aao +aao +aao +aao +aao +aao +aao +aao +bLA +izh +izh +izh +jGd +bTW +izh +izh +sLr +aao +aao +aao +aao +aao +aao +fRH +tgL +izh +uPm +izh +izh +izh +izh +gtX +gtX +izh +izh +izh +izh +aao +aao +aao +aao +izh +izh +izh +izh +izh +izh +izh +izh +izh +izh +izh +jGd +izh +izh +izh +izh +izh +izh +izh +izh +aao +aao +aao +izh +izh +izh +izh +izh +aao +aao +aao +aao +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(170,1,1) = {" +aaa +aab +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -74967,14 +78346,14 @@ adZ afd afd adZ -aqY +amW arF arF ate -amW -aqc -auY +amk +rUs auY +fnv awB aqc amk @@ -75134,29 +78513,29 @@ aaa "} (171,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -75351,29 +78730,29 @@ aaa "} (172,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -75568,29 +78947,29 @@ aaa "} (173,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -75627,7 +79006,7 @@ agd agd amX awC -axp +kIF axp ayA amk @@ -75785,29 +79164,29 @@ aaa "} (174,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -75846,7 +79225,7 @@ avO auY aqc axT -auY +wCs amk anI aAM @@ -76002,29 +79381,29 @@ aaa "} (175,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -76063,7 +79442,7 @@ auy auY aqc aqc -auY +orT amk anI aAN @@ -76219,29 +79598,29 @@ aaa "} (176,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw ahw tQw @@ -76278,8 +79657,8 @@ agd agd amX awD -auY -auY +aEs +aEs ayB amk anI @@ -76436,29 +79815,29 @@ aaa "} (177,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -76485,8 +79864,8 @@ adZ anQ amK adZ -aEs -aGh +sUQ +aqc aqc asp aqc @@ -76653,29 +80032,29 @@ aaa "} (178,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -76703,7 +80082,7 @@ anR amM adZ adZ -aqc +aGh ahv ajd aqc @@ -76870,29 +80249,29 @@ aaa "} (179,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -76921,7 +80300,7 @@ anS apv adZ adZ -aqc +auY asr aqc amX @@ -77041,74 +80420,74 @@ aao aao aao aao -izh -izh -izh -izh -izh -izh -izh -izh -izh -izh -aao -aao -aao -aao -aao -aao -aao -izh -izh -izh -izh -izh -izh -izh -izh -aao -aao -aao -aao -aao -aao -aao -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(180,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aao -aao +izh +izh +izh +izh +izh +izh +izh +izh +izh +izh +aao +aao +aao +aao +aao +aao +aao +izh +izh +izh +izh +izh +izh +izh +izh +aao +aao +aao +aao +aao +aao +aao +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(180,1,1) = {" +aaa +aab +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao aao tQw tQw @@ -77170,9 +80549,9 @@ aOn aOn aOn aOn -aOn -aTA -aUB +aTv +tdn +kNP wQC gXp qQn @@ -77304,29 +80683,29 @@ aaa "} (181,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -77387,9 +80766,9 @@ gXp gXp gXp gXp -aSm -aTB -aUC +aTw +ocR +uoj wQC tQw aWN @@ -77521,29 +80900,29 @@ aaa "} (182,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -77604,9 +80983,9 @@ tQw ahw tQw tQw -aSn -gXp -gXp +nFH +aTv +aMT tQw tQw pIN @@ -77738,30 +81117,30 @@ aaa "} (183,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -77821,9 +81200,9 @@ tQw tQw xFZ xFZ -xFZ -tQw -tQw +aSm +lMw +aMT tQw xFZ ahy @@ -77955,30 +81334,30 @@ aaa "} (184,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -77997,7 +81376,7 @@ adZ adZ adZ aeQ -ald +wQu daB amO afy @@ -78039,8 +81418,8 @@ eFh aao aao aao -gmN -xFZ +aSm +aMV sNQ aao aao @@ -78172,30 +81551,30 @@ aaa "} (185,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -78389,31 +81768,31 @@ aaa "} (186,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -78606,31 +81985,31 @@ aaa "} (187,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -78823,25 +82202,6 @@ aaa "} (188,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -78849,6 +82209,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw ahw @@ -79040,25 +82419,6 @@ aaa "} (189,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -79066,6 +82426,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -79257,25 +82636,6 @@ aaa "} (190,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -79284,6 +82644,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -79474,25 +82853,6 @@ aaa "} (191,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -79501,6 +82861,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -79691,25 +83070,6 @@ aaa "} (192,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -79718,6 +83078,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -79753,7 +83132,7 @@ aao aao jgW aig -aao +reL aao anI anI @@ -79908,25 +83287,6 @@ aaa "} (193,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -79935,6 +83295,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -80125,25 +83504,6 @@ aaa "} (194,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -80152,6 +83512,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -80342,25 +83721,6 @@ aaa "} (195,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -80370,6 +83730,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -80559,25 +83938,6 @@ aaa "} (196,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -80588,6 +83948,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -80776,25 +84155,6 @@ aaa "} (197,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -80805,6 +84165,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw wQC @@ -80993,25 +84372,6 @@ aaa "} (198,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -81022,6 +84382,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw wQC @@ -81210,25 +84589,6 @@ aaa "} (199,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -81239,6 +84599,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw wQC @@ -81427,25 +84806,6 @@ aaa "} (200,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -81456,6 +84816,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tIq @@ -81644,25 +85023,6 @@ aaa "} (201,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -81673,6 +85033,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw gmN @@ -81861,25 +85240,6 @@ aaa "} (202,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -81890,6 +85250,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -82078,25 +85457,6 @@ aaa "} (203,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -82107,6 +85467,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -82295,25 +85674,6 @@ aaa "} (204,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -82321,6 +85681,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -82512,30 +85891,30 @@ aaa "} (205,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -82729,30 +86108,30 @@ aaa "} (206,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -82946,30 +86325,30 @@ aaa "} (207,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -83163,30 +86542,30 @@ aaa "} (208,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -83380,30 +86759,30 @@ aaa "} (209,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -83597,30 +86976,30 @@ aaa "} (210,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -83814,30 +87193,30 @@ aaa "} (211,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -83988,73 +87367,73 @@ aao aao aao aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(212,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aao -aao -aao -aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(212,1,1) = {" +aaa +aab +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -84248,30 +87627,30 @@ aaa "} (213,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -84465,30 +87844,30 @@ aaa "} (214,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -84682,30 +88061,30 @@ aaa "} (215,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw ahw @@ -84899,30 +88278,30 @@ aaa "} (216,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -85116,30 +88495,30 @@ aaa "} (217,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -85330,27 +88709,8 @@ aaa aaa aaa aaa -"} -(218,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +"} +(218,1,1) = {" aaa aab aao @@ -85358,6 +88718,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -85550,31 +88929,31 @@ aaa "} (219,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -85767,25 +89146,6 @@ aaa "} (220,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -85835,6 +89195,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -85984,25 +89363,6 @@ aaa "} (221,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -86055,6 +89415,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -86201,25 +89580,6 @@ aaa "} (222,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -86298,6 +89658,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao gCE gCE gCE @@ -86418,25 +89797,6 @@ aaa "} (223,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -86523,6 +89883,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao aab aaa aaa @@ -86635,25 +90014,25 @@ aaa "} (224,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab aab aab aab diff --git a/maps/map_files/BigRed/sprinkles/10.prison_breakout.dmm b/maps/map_files/BigRed/sprinkles/10.prison_breakout.dmm index 931fb53a0b2a..027d2630f392 100644 --- a/maps/map_files/BigRed/sprinkles/10.prison_breakout.dmm +++ b/maps/map_files/BigRed/sprinkles/10.prison_breakout.dmm @@ -561,9 +561,13 @@ }, /area/bigredv2/outside/marshal_office) "bD" = ( -/obj/structure/bed/chair, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, /turf/open/floor{ - icon_state = "darkish" + dir = 1; + icon_state = "red" }, /area/bigredv2/outside/marshal_office) "bE" = ( @@ -631,12 +635,10 @@ }, /area/bigredv2/outside/marshal_office) "bO" = ( -/obj/structure/surface/table, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor{ - icon_state = "darkish" +/turf/open/mars{ + icon_state = "mars_dirt_13" }, -/area/bigredv2/outside/marshal_office) +/area/bigredv2/outside/n) "bP" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor{ @@ -715,30 +717,38 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor{ - icon_state = "darkish" + dir = 8; + icon_state = "red" }, /area/bigredv2/outside/marshal_office) "bZ" = ( -/obj/structure/surface/table, -/obj/item/device/taperecorder, +/obj/effect/landmark/static_comms/net_one, /turf/open/floor{ - icon_state = "darkish" + icon_state = "bcircuit" }, /area/bigredv2/outside/marshal_office) "ca" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 + }, /turf/open/floor{ - icon_state = "darkish" + dir = 9; + icon_state = "red" }, /area/bigredv2/outside/marshal_office) "cb" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass/colony{ - name = "\improper Marshal Office Interrogation" - }, /turf/open/floor{ - icon_state = "darkish" + dir = 9; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/marshal_office) +/area/bigredv2/outside/n) "cc" = ( /obj/structure/surface/table, /obj/item/clothing/mask/gas, @@ -781,27 +791,26 @@ }, /area/bigredv2/outside/marshal_office) "cj" = ( -/obj/structure/bed/chair{ - dir = 1 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, /turf/open/floor{ - icon_state = "darkish" + icon_state = "red" }, /area/bigredv2/outside/marshal_office) "ck" = ( -/obj/structure/machinery/camera/autoname{ - dir = 8 +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 }, /turf/open/floor{ - icon_state = "darkish" + dir = 6; + icon_state = "red" }, /area/bigredv2/outside/marshal_office) "cl" = ( -/obj/structure/machinery/door_control{ - id = "Marshal Offices"; - name = "Storm Shutters"; - pixel_x = -32 - }, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/corpsespawner/prison_security, /obj/effect/decal/cleanable/blood, @@ -838,18 +847,12 @@ /turf/open/floor/plating, /area/bigredv2/outside/marshal_office) "cq" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass/colony{ - dir = 1; - name = "\improper Marshal Office Evidence Room" - }, /turf/open/floor{ - icon_state = "dark" + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/marshal_office) +/area/bigredv2/outside/n) "cr" = ( -/obj/structure/machinery/light{ - dir = 8 - }, /obj/item/ammo_casing/shell, /turf/open/floor{ dir = 8; @@ -1153,6 +1156,20 @@ }, /turf/open/floor, /area/bigredv2/outside/marshal_office) +"do" = ( +/turf/open/mars{ + icon_state = "mars_dirt_10" + }, +/area/bigredv2/outside/n) +"fh" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass/colony{ + dir = 1; + name = "\improper Marshal Office Evidence Room" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/marshal_office) "fD" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -1162,6 +1179,11 @@ /obj/effect/landmark/objective_landmark/far, /turf/open/floor, /area/bigredv2/outside/marshal_office) +"gu" = ( +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/n) "gJ" = ( /obj/structure/closet/secure_closet/brig, /obj/effect/landmark/objective_landmark/close, @@ -1169,6 +1191,12 @@ icon_state = "dark" }, /area/bigredv2/outside/marshal_office) +"if" = ( +/turf/open/floor{ + dir = 4; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/n) "ix" = ( /obj/structure/closet/secure_closet/brig, /obj/effect/landmark/objective_landmark/far, @@ -1176,6 +1204,18 @@ icon_state = "dark" }, /area/bigredv2/outside/marshal_office) +"jq" = ( +/obj/structure/machinery/camera/autoname, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1; + pixel_y = -1 + }, +/turf/open/floor{ + dir = 5; + icon_state = "red" + }, +/area/bigredv2/outside/marshal_office) "qm" = ( /obj/structure/bed, /obj/effect/landmark/objective_landmark/medium, @@ -1183,6 +1223,34 @@ icon_state = "dark" }, /area/bigredv2/outside/marshal_office) +"rC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5; + pixel_x = -1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "red" + }, +/area/bigredv2/outside/marshal_office) +"rL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 10; + icon_state = "red" + }, +/area/bigredv2/outside/marshal_office) +"wL" = ( +/obj/structure/machinery/light, +/turf/open/floor{ + icon_state = "bcircuit" + }, +/area/bigredv2/outside/marshal_office) "zX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/objective_landmark/medium, @@ -1190,6 +1258,45 @@ icon_state = "dark" }, /area/bigredv2/outside/marshal_office) +"MM" = ( +/obj/structure/window/framed/solaris/reinforced, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Marshal Offices"; + name = "\improper Marshal Offices Shutters" + }, +/turf/open/floor/plating, +/area/bigredv2/outside/medical) +"No" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "red" + }, +/area/bigredv2/outside/marshal_office) +"NW" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door_control{ + id = "Marshal Offices"; + name = "Storm Shutters"; + pixel_y = 24 + }, +/turf/open/floor{ + dir = 4; + icon_state = "redcorner" + }, +/area/bigredv2/outside/marshal_office) +"RJ" = ( +/obj/effect/landmark/lv624/xeno_tunnel, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) (1,1,1) = {" aa @@ -1231,7 +1338,7 @@ by cZ cZ cZ -cq +at cA bi bG @@ -1254,8 +1361,8 @@ ah bA cZ cZ -ci -at +cZ +fh cA cO cU @@ -1278,7 +1385,7 @@ ah bB bN bX -by +wL at cA cP @@ -1304,7 +1411,7 @@ at at at at -cA +NW bk ah ah @@ -1324,10 +1431,10 @@ bb bk ah ca -ca +No bY -ca -at +rL +cZ cA bk bG @@ -1348,10 +1455,10 @@ bb bl ah bD -bO +by bZ cj -at +cZ cB bk cV @@ -1371,11 +1478,11 @@ aR bc bk ah -ca -ca -ca -ca -at +bD +by +by +cj +cZ cC cQ bL @@ -1395,11 +1502,11 @@ aR bc bm ah -ca -ca -ca +jq +rC +rC ck -at +cZ cC bi ah @@ -1419,11 +1526,11 @@ aR bb bh ah -at -at -cb -at -at +cZ +cZ +cZ +cZ +cZ cC bi bG @@ -1506,8 +1613,8 @@ dj (14,1,1) = {" ai ai -aj -aj +if +RJ ah aB aL @@ -1528,10 +1635,10 @@ de dj "} (15,1,1) = {" -ai -ai aj aj +aj +cq ah aC cZ @@ -1552,10 +1659,10 @@ ci dj "} (16,1,1) = {" -ai -ai aj aj +aj +cq ah aD cZ @@ -1576,10 +1683,10 @@ df dj "} (17,1,1) = {" -ai -aj aj aj +bO +cq ah aD aN @@ -1602,8 +1709,8 @@ dj (18,1,1) = {" aj aj -aj -aj +do +ai ah aE zX @@ -1621,13 +1728,13 @@ bk cW db dg -dj +MM "} (19,1,1) = {" aj -aj -aj -aj +bO +gu +ai ah aF aN @@ -1645,13 +1752,13 @@ bk bG dc dh -dj +MM "} (20,1,1) = {" -aj -aj -aj -aj +bO +gu +ai +ai ah aG aN @@ -1672,10 +1779,10 @@ bG dj "} (21,1,1) = {" -aj -aj -aj -aj +cb +ai +ai +ai ah aH cZ @@ -1696,7 +1803,7 @@ dd dk "} (22,1,1) = {" -aj +cq ah ah ah diff --git a/maps/map_files/BigRed/sprinkles/15.reactor_meltdown.dmm b/maps/map_files/BigRed/sprinkles/15.reactor_meltdown.dmm index b1a2ababa604..8f6063172ff5 100644 --- a/maps/map_files/BigRed/sprinkles/15.reactor_meltdown.dmm +++ b/maps/map_files/BigRed/sprinkles/15.reactor_meltdown.dmm @@ -1,7 +1,9 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "ai" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "ak" = ( /obj/effect/spawner/random/tool, @@ -10,25 +12,35 @@ "al" = ( /obj/structure/surface/table, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "am" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "an" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "ao" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "aq" = ( /turf/closed/wall/solaris/reinforced, @@ -42,13 +54,17 @@ "aD" = ( /obj/structure/surface/table, /obj/effect/spawner/random/toolbox, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "aE" = ( /obj/structure/surface/table, /obj/effect/spawner/random/tool, /obj/effect/spawner/random/technology_scanner, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "aF" = ( /obj/structure/window/framed/solaris, @@ -56,34 +72,51 @@ /area/bigredv2/outside/engineering) "aT" = ( /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "aU" = ( /obj/structure/surface/rack, /obj/item/device/camera_film, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "aV" = ( /obj/structure/surface/rack, /obj/item/device/analyzer, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "aW" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "aY" = ( /obj/structure/pipes/standard/manifold/fourway/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "aZ" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "ba" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -91,14 +124,20 @@ }, /obj/effect/decal/cleanable/dirt, /obj/item/device/lightreplacer, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bb" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/item/stack/sheet/metal, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bc" = ( /obj/structure/machinery/light{ @@ -107,41 +146,58 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bd" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/landmark/hunter_secondary, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "be" = ( /obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bf" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/decal/cleanable/liquid_fuel, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bg" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bi" = ( /obj/effect/decal/cleanable/dirt, /obj/item/clothing/mask/breath, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bj" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/item/stack/sheet/metal, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bk" = ( /obj/effect/decal/cleanable/dirt, @@ -149,7 +205,9 @@ dir = 1; pixel_y = -30 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bl" = ( /obj/effect/decal/cleanable/liquid_fuel, @@ -158,7 +216,9 @@ name = "Storm Shutters"; pixel_y = -32 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bm" = ( /obj/structure/bed/chair{ @@ -166,26 +226,35 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bn" = ( /obj/structure/surface/table, /obj/effect/decal/cleanable/dirt, /obj/item/clothing/glasses/welding, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bo" = ( /obj/structure/bed/chair{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bp" = ( /obj/item/folder/yellow, /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "bq" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -194,14 +263,18 @@ /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Engineering Workshop" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/engineering) "br" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bs" = ( /obj/effect/decal/cleanable/dirt, @@ -217,41 +290,60 @@ dir = 1; name = "\improper Engine Reactor Control" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/telecomm/engi) "bv" = ( /obj/structure/bed/chair{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bw" = ( -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bx" = ( /obj/structure/machinery/computer/arcade, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "by" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bz" = ( /obj/effect/decal/cleanable/dirt, /obj/item/stack/sheet/metal, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bA" = ( /obj/structure/surface/table, /obj/effect/spawner/random/toolbox, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bB" = ( /obj/item/stack/sheet/glass, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bC" = ( /obj/effect/decal/cleanable/dirt, @@ -269,19 +361,30 @@ dir = 8 }, /obj/effect/spawner/random/technology_scanner, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/telecomm/engi) "bF" = ( /obj/structure/machinery/camera/autoname, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/telecomm/engi) "bG" = ( -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/telecomm/engi) "bH" = ( /obj/structure/surface/table, /obj/effect/decal/cleanable/ash, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bJ" = ( /obj/structure/bed/chair{ @@ -290,46 +393,70 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bK" = ( /obj/item/folder/yellow, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "bL" = ( /obj/structure/machinery/vending/cigarette/colony, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bM" = ( /obj/structure/machinery/vending/snack, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bN" = ( /obj/structure/machinery/vending/cola, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bO" = ( /obj/structure/bed/chair/office/light{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bP" = ( /obj/structure/surface/table, /obj/effect/spawner/random/powercell, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bQ" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "bR" = ( /obj/structure/machinery/light{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bS" = ( /obj/structure/bed/chair/office/light{ @@ -338,13 +465,18 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/telecomm/engi) "bT" = ( /obj/structure/pipes/vents/pump{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/telecomm/engi) "bU" = ( /obj/item/device/radio/intercom{ @@ -353,21 +485,27 @@ name = "General Listening Channel"; pixel_x = 30 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "podhatchfloor" + }, /area/bigredv2/outside/telecomm/engi) "bV" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bX" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bY" = ( /obj/effect/decal/cleanable/dirt, @@ -375,19 +513,27 @@ amount = 30 }, /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bZ" = ( /obj/structure/surface/table, /obj/effect/decal/cleanable/dirt, /obj/item/tool/pen, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "ca" = ( /obj/structure/sign/safety/hazard{ pixel_y = -32 }, -/turf/open/floor, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "ce" = ( /obj/item/tool/lighter/random, @@ -395,7 +541,9 @@ dir = 4 }, /obj/effect/decal/cleanable/ash, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "cf" = ( /obj/item/stack/sheet/metal, @@ -411,38 +559,55 @@ /area/bigredv2/outside/engineering) "ch" = ( /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "ck" = ( /obj/effect/decal/cleanable/dirt, /obj/item/clothing/suit/radiation, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "cl" = ( /obj/effect/decal/cleanable/dirt, /obj/item/clothing/head/welding, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cm" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/oil, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cn" = ( /obj/structure/machinery/door/airlock/almayer/secure/colony{ dir = 1; name = "\improper Engine Reactor" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/engineering) "co" = ( /obj/structure/closet/radiation, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/engineering) "cp" = ( /obj/item/folder/yellow, /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cq" = ( /obj/effect/decal/cleanable/ash, @@ -453,7 +618,10 @@ /area/bigredv2/outside/telecomm/engi) "cr" = ( /obj/effect/decal/cleanable/molten_item, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/telecomm/engi) "cs" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -462,7 +630,9 @@ /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Engine Reactor Control" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/telecomm/engi) "ct" = ( /obj/structure/machinery/door_control{ @@ -480,7 +650,9 @@ /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Engine Reactor Control" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/telecomm/engi) "cw" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -494,18 +666,24 @@ /obj/structure/machinery/constructable_frame{ icon_state = "box_1" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cy" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/constructable_frame, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cz" = ( /obj/structure/surface/table, /obj/structure/machinery/light, /obj/effect/spawner/random/tool, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cA" = ( /obj/structure/surface/table, @@ -513,7 +691,10 @@ /obj/item/stack/sheet/metal{ amount = 30 }, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cB" = ( /obj/structure/machinery/light{ @@ -522,7 +703,9 @@ /obj/structure/sign/safety/high_rad{ pixel_x = 32 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "cC" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -534,7 +717,10 @@ /area/bigredv2/outside/engineering) "cD" = ( /obj/structure/machinery/computer/area_atmos, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cE" = ( /obj/structure/machinery/light{ @@ -543,12 +729,17 @@ /obj/structure/sign/safety/high_rad{ pixel_x = -32 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "cF" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cG" = ( /obj/structure/window/framed/solaris/reinforced, @@ -564,7 +755,9 @@ /obj/effect/landmark/static_comms/net_two{ broken_on_spawn = 1 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "podhatchfloor" + }, /area/bigredv2/outside/telecomm/engi) "cI" = ( /obj/structure/sign/safety/hazard{ @@ -572,12 +765,16 @@ }, /obj/effect/decal/cleanable/dirt, /obj/item/tool/extinguisher, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cK" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/molten_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/telecomm/engi) "cM" = ( /turf/open/mars, @@ -615,7 +812,9 @@ dir = 1; name = "\improper Engineering Complex" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/engineering) "cY" = ( /turf/open/mars_cave{ @@ -655,7 +854,10 @@ dir = 8 }, /obj/effect/decal/cleanable/ash, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "dj" = ( /obj/effect/decal/cleanable/dirt/greenglow, @@ -991,7 +1193,10 @@ /area/bigredv2/outside/engineering) "eI" = ( /obj/effect/decal/cleanable/ash, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/telecomm/engi) "eJ" = ( /obj/effect/decal/cleanable/molten_item, @@ -1024,6 +1229,31 @@ "eO" = ( /turf/closed/wall/mineral/uranium/leaking, /area/bigredv2/outside/engineering) +"fI" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) +"gT" = ( +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"im" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) +"iQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "jr" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ @@ -1034,6 +1264,14 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave, /area/bigredv2/outside/lz2_south_cas) +"ng" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "oE" = ( /obj/structure/machinery/door/poddoor/almayer{ id = "rad_door"; @@ -1041,12 +1279,26 @@ }, /turf/open/floor/plating, /area/bigredv2/outside/telecomm/engi) +"oK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "sU" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ icon_state = "mars_dirt_6" }, /area/bigredv2/outside/lz2_south_cas) +"to" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "vs" = ( /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/telecomm/engi) @@ -1058,6 +1310,19 @@ icon_state = "panelscorched" }, /area/bigredv2/outside/telecomm/engi) +"xl" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) +"xz" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/telecomm/engi) "yH" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -1072,7 +1337,9 @@ /area/bigredv2/outside/lz2_south_cas) "Bo" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/telecomm/engi) "CA" = ( /obj/effect/decal/cleanable/dirt, @@ -1083,6 +1350,26 @@ icon_state = "panelscorched" }, /area/bigredv2/outside/telecomm/engi) +"Dh" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) +"Dq" = ( +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"ET" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "IE" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ @@ -1093,12 +1380,31 @@ /obj/structure/window_frame/solaris/reinforced, /turf/open/floor/plating, /area/bigredv2/outside/telecomm/engi) +"Lf" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "LE" = ( /obj/effect/decal/cleanable/ash, /turf/open/floor/plating{ icon_state = "panelscorched" }, /area/bigredv2/outside/telecomm/engi) +"Nv" = ( +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) +"NT" = ( +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/telecomm/engi) "NX" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars{ @@ -1116,10 +1422,35 @@ icon_state = "panelscorched" }, /area/bigredv2/outside/telecomm/engi) +"Sz" = ( +/obj/item/stack/sheet/glass, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"SC" = ( +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/engineering) +"Tv" = ( +/turf/open/floor{ + icon_state = "podhatchfloor" + }, +/area/bigredv2/outside/telecomm/engi) "Uo" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "podhatchfloor" + }, /area/bigredv2/outside/telecomm/engi) +"WI" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) (1,1,1) = {" au @@ -1131,7 +1462,7 @@ bp by ai bX -bQ +fI cx cG Ah @@ -1161,9 +1492,9 @@ au au an bz -bw +Nv bY -bw +Nv cy cG NX @@ -1192,10 +1523,10 @@ au au au an -bw +Nv bO -bw -bw +Nv +Nv cz aq Ph @@ -1227,7 +1558,7 @@ an bA bP bZ -bQ +WI cA aq Ph @@ -1287,9 +1618,9 @@ au au au au -an +ng bw -bQ +oK ca aq co @@ -1321,8 +1652,8 @@ aU bw br bB -bw -bQ +Nv +fI cn cB cn @@ -1350,11 +1681,11 @@ au au au aV -bw -an -bw -bw -bw +Nv +ng +Nv +Nv +gT aq aq aq @@ -1384,9 +1715,9 @@ au aW ai bs -bw +Nv ew -bB +Sz co co dk @@ -1479,8 +1810,8 @@ au au aZ bQ -bQ -bQ +WI +WI bR ez cC @@ -1510,7 +1841,7 @@ au au au ba -bQ +iQ vs vs vs @@ -1542,7 +1873,7 @@ au au au an -bw +gT vs bE eI @@ -1574,7 +1905,7 @@ au au au aZ -bQ +iQ vs bF bS @@ -1606,12 +1937,12 @@ ak au au bb -bQ +fI bu bG bT -bG -Uo +NT +xz RN eE oE @@ -1670,9 +2001,9 @@ au au au bd -bQ +iQ vs -bG +Tv bU ct RN @@ -1701,7 +2032,7 @@ dR au au au -an +ng bl vs vs @@ -1733,13 +2064,13 @@ dT au au au -an +ng ck bw bw di bw -bQ +fI ew dr cS @@ -1769,8 +2100,8 @@ be bm bv bv -bQ -bw +fI +Nv ez ew dr @@ -1797,11 +2128,11 @@ dT au au au -an +ng bn aE bH -bQ +fI ch ew ew @@ -1829,11 +2160,11 @@ dT au au au -an +ng aD al ce -bw +Nv ew ew cD @@ -1865,8 +2196,8 @@ bf bo bo bJ -bQ -bQ +fI +iQ aq aq aq @@ -1894,11 +2225,11 @@ au au au bg -ai -ai -bg +to +Dh +im bV -bQ +fI cn cE cn @@ -1994,11 +2325,11 @@ au aq bM ao -ai -ai -ai -ai -ai +xl +ET +ET +ET +ET am aq as @@ -2025,13 +2356,13 @@ au au aq bN -bw +Dq cm bR cF aT -bw -an +Nv +Lf aq as as @@ -2062,7 +2393,7 @@ aq aq aq aq -bw +SC cX aq as diff --git a/maps/map_files/BigRed/sprinkles/20.lz1entrance_v2.dmm b/maps/map_files/BigRed/sprinkles/20.lz1entrance_v2.dmm index 3774e4222fae..d148955c0c93 100644 --- a/maps/map_files/BigRed/sprinkles/20.lz1entrance_v2.dmm +++ b/maps/map_files/BigRed/sprinkles/20.lz1entrance_v2.dmm @@ -428,15 +428,17 @@ }, /area/bigredv2/outside/nw) "bo" = ( -/obj/structure/pipes/standard/simple/hidden/green, +/obj/item/stack/rods, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "asteroidwarning" }, /area/bigredv2/outside/nw) "bp" = ( +/obj/item/stack/sheet/metal, +/obj/item/stack/rods, /obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 6; icon_state = "asteroidwarning" }, /area/bigredv2/outside/nw) @@ -447,8 +449,10 @@ }, /area/bigredv2/outside/nw) "br" = ( +/obj/item/stack/rods, +/obj/item/stack/rods, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 6; icon_state = "asteroidwarning" }, /area/bigredv2/outside/nw) @@ -835,7 +839,7 @@ aE ak aW aW -bm +bG bv bv bF @@ -856,7 +860,7 @@ aF aM aX aM -bo +bz bw bz bz @@ -877,7 +881,7 @@ aG ab ab ab -bp +bS bx bx bG @@ -919,7 +923,7 @@ aI aP aP ac -br +bn bl bu bE @@ -940,7 +944,7 @@ aJ aQ aY ac -bs +bn bs bl bE @@ -961,7 +965,7 @@ aA aR aZ ac -bi +bo bi bA bE @@ -982,7 +986,7 @@ aw aK ba ai -bi +bX bi bA bE @@ -1003,7 +1007,7 @@ aA aA bb ai -bi +bp bi bB bE @@ -1024,7 +1028,7 @@ cc aw bc ai -bi +bn bi bB bE @@ -1045,7 +1049,7 @@ aA aS bd ac -bi +br bi bB bE @@ -1066,7 +1070,7 @@ aL aT be ac -bi +bX bi bB bE diff --git a/maps/map_files/BigRed/sprinkles/25.lz1cave_flank.dmm b/maps/map_files/BigRed/sprinkles/25.lz1cave_flank.dmm index 32d85ba1078f..0413441989ea 100644 --- a/maps/map_files/BigRed/sprinkles/25.lz1cave_flank.dmm +++ b/maps/map_files/BigRed/sprinkles/25.lz1cave_flank.dmm @@ -10,6 +10,13 @@ "d" = ( /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/space_port) +"e" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/lz1_north_cas) "f" = ( /obj/item/tool/warning_cone, /turf/open/floor/plating, @@ -218,7 +225,7 @@ c c c c -j +e "} (12,1,1) = {" c @@ -235,7 +242,7 @@ c c c c -j +e "} (13,1,1) = {" c @@ -252,7 +259,7 @@ c c c c -j +e "} (14,1,1) = {" c @@ -269,7 +276,7 @@ c c c c -j +e "} (15,1,1) = {" c @@ -286,5 +293,5 @@ c i c c -j +e "} diff --git a/maps/map_files/BigRed/sprinkles/25.vault_v2.dmm b/maps/map_files/BigRed/sprinkles/25.vault_v2.dmm index 566f892d6fdd..f62f085e7ea2 100644 --- a/maps/map_files/BigRed/sprinkles/25.vault_v2.dmm +++ b/maps/map_files/BigRed/sprinkles/25.vault_v2.dmm @@ -1,508 +1,652 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aa" = ( -/turf/open/mars, -/area/bigredv2/outside/c) +/obj/structure/inflatable/popped/door, +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = -11; + pixel_y = 10 + }, +/turf/open/floor{ + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "ab" = ( -/turf/open/mars{ - icon_state = "mars_dirt_8" +/obj/effect/decal/cleanable/blood/drip{ + pixel_y = 6 }, -/area/bigredv2/outside/c) +/turf/open/floor{ + dir = 4; + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "ac" = ( +/obj/item/tool/pickaxe/drill, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/mars_cave{ - icon_state = "mars_dirt_4" + icon_state = "mars_cave_2" }, -/area/bigredv2/outside/c) +/area/bigredv2/caves_lambda) "ad" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" - }, -/area/bigredv2/outside/c) +/obj/effect/glowshroom, +/turf/open/mars_cave, +/area/bigredv2/caves_lambda) "ae" = ( -/turf/open/mars{ - icon_state = "mars_dirt_3" +/obj/effect/glowshroom, +/turf/open/mars_cave{ + icon_state = "mars_cave_7" }, -/area/bigredv2/outside/c) +/area/bigredv2/caves_lambda) "af" = ( -/obj/effect/landmark/crap_item, -/turf/open/mars, -/area/bigredv2/outside/c) +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/mars_cave{ + icon_state = "mars_cave_7" + }, +/area/bigredv2/caves_lambda) "ag" = ( -/turf/open/mars{ - icon_state = "mars_dirt_9" +/obj/structure/barricade/wooden, +/turf/open/floor{ + dir = 4; + icon_state = "darkpurplecorners2" }, -/area/bigredv2/outside/c) +/area/bigredv2/caves/lambda/breakroom) "ah" = ( -/turf/open/mars{ - icon_state = "mars_dirt_13" +/obj/effect/glowshroom, +/turf/open/mars_cave{ + icon_state = "mars_cave_10" }, -/area/bigredv2/outside/c) +/area/bigredv2/caves_lambda) "ai" = ( -/turf/open/mars{ - icon_state = "mars_dirt_10" +/turf/open/mars_cave{ + icon_state = "mars_cave_6" }, -/area/bigredv2/outside/c) +/area/bigredv2/caves_lambda) "aj" = ( -/turf/open/mars{ - icon_state = "mars_dirt_14" +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/mars_cave{ + icon_state = "mars_cave_11" }, -/area/bigredv2/outside/c) +/area/bigredv2/caves_lambda) "ak" = ( +/turf/closed/wall/solaris/rock, +/area/bigredv2/caves) +"al" = ( +/obj/structure/sign/safety/restrictedarea{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor{ - dir = 1; - icon_state = "asteroidwarning" + dir = 4; + icon_state = "darkpurplecorners2" }, -/area/bigredv2/outside/c) -"al" = ( -/turf/closed/wall/solaris/reinforced, -/area/bigredv2/outside/storage) +/area/bigredv2/caves/lambda/breakroom) "am" = ( -/obj/structure/largecrate/hunter_games_guns/mediocre, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/machinery/door_control{ + id = "sci_br"; + name = "Observation Shutters"; + pixel_y = 28 + }, +/obj/effect/decal/cleanable/blood/gibs/xeno, +/turf/open/floor{ + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "an" = ( -/obj/structure/largecrate/supply/floodlights, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/effect/decal/cleanable/mucus, +/obj/structure/machinery/door_control{ + id = "sci_br"; + name = "Observation Shutters"; + pixel_y = 28 + }, +/obj/effect/landmark/corpsespawner/pmc, +/obj/effect/decal/cleanable/vomit, +/turf/open/floor{ + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "ao" = ( -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = -8; + pixel_y = 6 + }, +/turf/open/floor{ + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "ap" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/technology_scanner, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/sign/safety/bulkhead_door, +/turf/closed/wall/solaris/reinforced, +/area/bigredv2/caves/lambda/breakroom) "aq" = ( -/obj/structure/surface/table, -/obj/structure/machinery/power/apc{ - dir = 1 +/turf/open/floor/almayer{ + dir = 1; + icon_state = "w-y0" }, -/obj/effect/spawner/random/powercell, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/storage) +/area/bigredv2/caves/lambda/breakroom) "ar" = ( -/obj/structure/surface/table, -/obj/structure/machinery/light{ - dir = 1 +/obj/structure/filingcabinet{ + density = 0; + layer = 3.1; + pixel_x = 8; + pixel_y = 18 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 20 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" }, -/obj/effect/spawner/random/tech_supply, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/storage) +/area/bigredv2/caves/lambda/breakroom) "as" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/tool, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/filingcabinet{ + pixel_x = 7 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -7; + pixel_y = 19 + }, +/obj/structure/filingcabinet{ + pixel_x = -9 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/bigredv2/caves/lambda/breakroom) "at" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/tech_supply, -/turf/open/floor, -/area/bigredv2/outside/storage) +/turf/open/floor/plating/almayer, +/area/bigredv2/caves/lambda/breakroom) "au" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/toolbox, -/turf/open/floor, -/area/bigredv2/outside/storage) +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/bigredv2/caves/lambda/breakroom) "av" = ( -/obj/structure/surface/table, -/obj/item/tool/extinguisher, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 20 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 16 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/bigredv2/caves/lambda/breakroom) "aw" = ( -/obj/structure/largecrate/supply/generator, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/inflatable/popped/door, +/turf/open/floor{ + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "ax" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor, -/area/bigredv2/outside/storage) -"aA" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 6 +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/floor{ + icon_state = "darkpurplecorners2" }, -/turf/open/floor, -/area/bigredv2/outside/storage) +/area/bigredv2/caves/lambda/breakroom) +"aA" = ( +/turf/template_noop, +/area/template_noop) "aB" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4; - layer = 2.4 +/turf/open/floor/almayer{ + dir = 1; + icon_state = "w-y1" }, -/turf/open/floor, -/area/bigredv2/outside/storage) +/area/bigredv2/caves/lambda/breakroom) "aC" = ( -/obj/structure/pipes/standard/simple/hidden/green{ +/obj/structure/machinery/light, +/turf/open/floor{ dir = 4; - layer = 2.4 - }, -/obj/structure/machinery/door/airlock/almayer/secure/colony{ - icon_state = "door_locked"; - locked = 0; - name = "\improper Emergency Vault" + icon_state = "darkpurplecorners2" }, -/turf/open/floor, -/area/bigredv2/outside/storage) +/area/bigredv2/caves/lambda/breakroom) "aD" = ( -/obj/structure/largecrate/supply/supplies/water, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/inflatable/popped/door, +/turf/open/floor{ + dir = 4; + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "aE" = ( -/obj/structure/largecrate/random, -/turf/open/floor, -/area/bigredv2/outside/storage) +/turf/open/floor{ + dir = 4; + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "aF" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/surface/table/reinforced/prison, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/machinery/door/window/brigdoor/southright, +/obj/item/clothing/accessory/medal/gold{ + pixel_x = 7; + pixel_y = 10 + }, +/obj/item/clothing/accessory/medal/bronze/science{ + pixel_x = -5 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/bigredv2/caves/lambda/breakroom) "aG" = ( -/obj/structure/largecrate/supply/medicine/medkits, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/window/framed/solaris/reinforced, +/obj/structure/machinery/door/poddoor/almayer{ + id = "sci_br"; + name = "\improper Lambda Observation Shutters" + }, +/turf/open/floor/plating, +/area/bigredv2/caves/lambda/breakroom) "aH" = ( -/obj/structure/largecrate/supply/medicine/blood, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/barricade/wooden{ + dir = 1; + pixel_y = 7 + }, +/turf/open/floor{ + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "aI" = ( -/obj/structure/largecrate/supply/medicine/iv, -/turf/open/floor, -/area/bigredv2/outside/storage) +/turf/closed/wall/solaris/reinforced, +/area/bigredv2/caves/lambda/breakroom) "aJ" = ( /obj/structure/machinery/light, -/turf/open/floor, -/area/bigredv2/outside/storage) -"aK" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/obj/structure/surface/table, -/obj/effect/spawner/random/toolbox, -/turf/open/floor, -/area/bigredv2/outside/storage) -"aL" = ( -/obj/structure/surface/table, -/obj/structure/machinery/light, -/obj/effect/spawner/random/powercell, -/turf/open/floor, -/area/bigredv2/outside/storage) -"aM" = ( -/obj/structure/pipes/standard/simple/hidden/green{ +/turf/open/floor/strata{ dir = 4; - layer = 2.4 + icon_state = "white_cyan1" }, -/turf/open/floor{ - icon_state = "asteroidwarning" +/area/bigredv2/caves/lambda/breakroom) +"aK" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/door_control{ + id = "vault"; + name = "Vault Lockdown" }, -/area/bigredv2/outside/s) -"aN" = ( -/obj/structure/pipes/standard/simple/hidden/green{ +/turf/open/floor/strata{ dir = 4; - layer = 2.4 - }, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" + icon_state = "white_cyan1" }, -/area/bigredv2/outside/s) -"aO" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 1 +/area/bigredv2/caves/lambda/breakroom) +"aL" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/spacecash/c1000, +/obj/item/spacecash/c1000, +/obj/item/spacecash/c1000, +/obj/item/spacecash/c1000, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" }, -/turf/open/floor{ +/area/bigredv2/caves/lambda/breakroom) +"aM" = ( +/turf/open/floor/almayer{ dir = 1; - icon_state = "asteroidfloor" + icon_state = "w-y2" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves/lambda/breakroom) +"aN" = ( +/turf/open/mars_cave, +/area/bigredv2/caves_lambda) "aP" = ( -/turf/open/mars{ - icon_state = "mars_dirt_3" +/turf/open/mars_cave{ + icon_state = "mars_cave_7" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves_lambda) "aQ" = ( /turf/open/mars_cave{ - icon_state = "mars_dirt_4" + icon_state = "mars_cave_18" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves_lambda) "aR" = ( -/turf/open/floor{ - dir = 8; - icon_state = "asteroidwarning" +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 19 }, -/area/bigredv2/outside/s) -"aS" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -9; + pixel_y = 20 + }, +/turf/open/floor/strata{ dir = 4; - icon_state = "asteroidwarning" + icon_state = "white_cyan1" + }, +/area/bigredv2/caves/lambda/breakroom) +"aS" = ( +/obj/effect/glowshroom, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves_lambda) "aT" = ( -/turf/open/mars, -/area/bigredv2/outside/s) -"aU" = ( -/turf/open/mars{ - icon_state = "mars_dirt_11" +/turf/open/mars_cave{ + icon_state = "mars_cave_4" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves_lambda) "aV" = ( -/turf/open/mars{ - icon_state = "mars_dirt_9" +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves_lambda) "aW" = ( -/turf/open/mars{ - icon_state = "mars_dirt_8" +/obj/structure/machinery/door/airlock/almayer/secure/reinforced/colony{ + icon_state = "door_locked" }, -/area/bigredv2/outside/s) +/obj/structure/machinery/door/poddoor/almayer/closed{ + dir = 4; + id = "vault"; + name = "Vault Lockdown" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/caves/lambda/breakroom) "aX" = ( -/turf/open/mars{ - icon_state = "mars_dirt_10" +/turf/open/mars_cave{ + icon_state = "mars_cave_8" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves_lambda) "aY" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - dir = 8; - icon_state = "asteroidwarning" +/turf/open/mars_cave{ + icon_state = "mars_cave_10" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves_lambda) "aZ" = ( -/turf/open/mars{ - icon_state = "mars_dirt_12" +/turf/open/mars_cave{ + icon_state = "mars_cave_5" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves_lambda) "ba" = ( -/obj/effect/landmark/crap_item, -/turf/open/mars, -/area/bigredv2/outside/s) +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/caves_lambda) +"vm" = ( +/obj/item/shard{ + icon_state = "small" + }, +/turf/open/mars_cave{ + icon_state = "mars_cave_18" + }, +/area/bigredv2/caves_lambda) "zP" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/technology_scanner, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/effect/glowshroom, +/turf/open/mars_cave{ + icon_state = "mars_cave_5" + }, +/area/bigredv2/caves_lambda) +"EW" = ( +/obj/structure/machinery/door/poddoor/almayer{ + id = "sci_br"; + name = "\improper Lambda Observation Shutters" + }, +/obj/item/shard{ + icon_state = "medium" + }, +/obj/structure/window_frame/solaris/reinforced, +/turf/open/floor/plating, +/area/bigredv2/caves/lambda/breakroom) +"Gv" = ( +/obj/structure/machinery/door/poddoor/almayer{ + id = "sci_br"; + name = "\improper Lambda Observation Shutters" + }, +/obj/item/shard, +/obj/structure/window_frame/solaris/reinforced, +/turf/open/floor/plating, +/area/bigredv2/caves/lambda/breakroom) +"RW" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/mars_cave{ + icon_state = "mars_cave_6" + }, +/area/bigredv2/caves_lambda) (1,1,1) = {" -aa -aa -aa -ak -al -al -al -al -al +aA +aA +aA +aA +aA +aI +am al -aM -aP +aI +aA +aA +aY aT -aX +ak "} (2,1,1) = {" -aa -aa -aa -ak -al -am +aA +aA +aA +aA +zP +aG aw aD aG -al -aM -aP -aT +ai +ai +aZ +ba aX "} (3,1,1) = {" -aa -aa +aA +aA ah -ak -al -an -ax -aE +ai +ai +aG aH -al -aM +aE +aG aP -aT -aX +ba +aP +ai +aZ "} (4,1,1) = {" -aa -aa -ai -ak -al -ao +aA +ae +aP +ba +aZ +aI ax -ao +aC aI -al -aM -aP -aT -aX +ae +RW +ac +ba +aZ "} (5,1,1) = {" -aa -aa ai -ak -al -ao -ao +ai +aj +ad +aZ +aG ao -aJ -al -aM -aQ -aU -aQ +ag +EW +af +ba +ba +ba +aZ "} (6,1,1) = {" -aa -aa +aY ai -ak -al -zP -ao -ao -as -al +ai +ba +ba +aG +aa +aD +Gv +vm aN -aR -aR -aY +aS +ba +aZ "} (7,1,1) = {" -aa -aa -aj +ba +ba ak -al -aq -ao -ao +ak +ak +aI +an +ab ap -al -aO -aS -aS +aA +aA +aP aS +aZ "} (8,1,1) = {" -aa -aa -aa +ba ak -al -ar -ao -ao -as -al -aM -aQ -aQ -aQ +ak +aI +aI +aI +aI +aW +aI +aI +aA +ba +aP +aZ "} (9,1,1) = {" -aa -aa -aa +aZ ak -al +ak +aI +aR as -aA -aF +au +au aK -al -aM -aQ -aQ -aQ +aI +aA +aY +ba +aZ "} (10,1,1) = {" -aa -af -aa ak -al -as -aB -ao +aA +aA +aI au -al -aM -aQ -aQ +at +aq +at +au +aI +aA +aP +ba aZ "} (11,1,1) = {" -ab -aa -aa ak -al +aA +aA +aI +aF at aB -ao -as -al -aM -aQ -aQ -aT +at +aJ +aI +aA +aP +ba +aZ "} (12,1,1) = {" -ac -ab -aa -ak -al +aA +aA +aA +aI au -aB -ao -aL -al +at aM +at +aL +aI +aA aQ aV -aT +ba "} (13,1,1) = {" -ad -ag -aa -ak -al +aA +aA +aA +aI +ar av -aB -ao -at -al -aM -aP -aT +aL +aL +aL +aI +aA +ba +ba ba "} (14,1,1) = {" -ae -aa -aa -ak -al -al -aC -al -al -al -aM -aQ -aW -aT +aA +aA +aA +aI +aI +aI +aI +aI +aI +aI +aA +ba +ba +ba "} diff --git a/maps/map_files/BigRed/sprinkles/30.cargo_containers.dmm b/maps/map_files/BigRed/sprinkles/30.cargo_containers.dmm index 30531e6b085e..5ff0d32f9e15 100644 --- a/maps/map_files/BigRed/sprinkles/30.cargo_containers.dmm +++ b/maps/map_files/BigRed/sprinkles/30.cargo_containers.dmm @@ -123,7 +123,6 @@ /turf/open/floor, /area/bigredv2/outside/cargo) "ay" = ( -/obj/structure/closet/emcloset, /obj/structure/pipes/vents/pump{ dir = 8 }, @@ -141,6 +140,8 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/structure/surface/table, +/obj/effect/spawner/random/tool, /turf/open/floor, /area/bigredv2/outside/cargo) "aC" = ( @@ -153,7 +154,9 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Cargo Offices" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/cargo) "aE" = ( /obj/structure/window/framed/solaris, @@ -298,7 +301,9 @@ /obj/structure/machinery/door/airlock/almayer/security/glass/colony{ name = "\improper Cargo Bay Security" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/cargo) "aX" = ( /turf/open/floor{ @@ -307,25 +312,24 @@ }, /area/bigredv2/outside/cargo) "aY" = ( -/obj/structure/cargo_container/wy/left, +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor{ - dir = 1; - icon_state = "bot" + icon_state = "loadingarea" }, /area/bigredv2/outside/cargo) "aZ" = ( -/obj/structure/cargo_container/wy/mid, -/turf/open/floor{ - dir = 1; - icon_state = "bot" - }, +/obj/structure/surface/table, +/obj/effect/spawner/random/bomb_supply, +/turf/open/floor, /area/bigredv2/outside/cargo) "ba" = ( -/obj/structure/cargo_container/wy/right, -/turf/open/floor{ - dir = 1; - icon_state = "bot" +/obj/structure/surface/table, +/obj/item/stack/sheet/glass{ + amount = 30 }, +/turf/open/floor, /area/bigredv2/outside/cargo) "bb" = ( /obj/effect/decal/cleanable/dirt, @@ -369,12 +373,8 @@ }, /area/bigredv2/outside/cargo) "bh" = ( -/obj/structure/closet/crate/trashcart, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor{ - dir = 1; - icon_state = "bot" - }, +/obj/structure/largecrate/random/barrel, +/turf/open/floor, /area/bigredv2/outside/cargo) "bj" = ( /obj/structure/largecrate, @@ -402,8 +402,9 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/obj/structure/machinery/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/cargo) "bs" = ( /obj/effect/decal/cleanable/dirt, @@ -430,17 +431,15 @@ dir = 1; name = "\improper Cargo Bay" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/cargo) "bz" = ( -/obj/effect/landmark/corpsespawner/security, -/obj/structure/machinery/light{ - dir = 4 - }, +/obj/effect/landmark/corpsespawner/security/marshal, /turf/open/floor, /area/bigredv2/outside/cargo) "bA" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/machinery/light{ dir = 8 }, @@ -475,14 +474,14 @@ "bI" = ( /obj/item/reagent_container/spray/cleaner, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "floor4" + }, /area/bigredv2/outside/cargo) "bJ" = ( -/obj/structure/largecrate, -/obj/structure/machinery/light{ - dir = 1 +/turf/open/floor{ + icon_state = "floor4" }, -/turf/open/floor, /area/bigredv2/outside/cargo) "bK" = ( /turf/open/floor{ @@ -514,12 +513,14 @@ /area/bigredv2/outside/cargo) "bP" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/largecrate, +/obj/structure/reagent_dispensers/fueltank, /turf/open/floor, /area/bigredv2/outside/cargo) "bQ" = ( -/obj/structure/closet/crate/trashcart, -/obj/effect/landmark/objective_landmark/close, +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/light{ + dir = 4 + }, /turf/open/floor, /area/bigredv2/outside/cargo) "bR" = ( @@ -528,7 +529,9 @@ dir = 1; name = "\improper Cargo Bay Quartermaster" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/cargo) "bS" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -612,7 +615,9 @@ /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Cargo Bay Quartermaster" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/cargo) "cf" = ( /obj/structure/bed/chair/office/dark, @@ -726,15 +731,44 @@ name = "\improper Engineering Complex" }, /turf/open/floor{ - icon_state = "dark" + icon_state = "delivery" }, /area/bigredv2/outside/engineering) "cx" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ - icon_state = "dark" + icon_state = "delivery" }, /area/bigredv2/outside/engineering) +"zL" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "floor4" + }, +/area/bigredv2/outside/cargo) +"AS" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "floor4" + }, +/area/bigredv2/outside/cargo) +"Gu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/effect/spawner/random/toolbox, +/turf/open/floor, +/area/bigredv2/outside/cargo) +"KO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table, +/obj/effect/spawner/random/tool, +/turf/open/floor, +/area/bigredv2/outside/cargo) (1,1,1) = {" aa @@ -747,7 +781,7 @@ aE ai ai ai -ax +bq by ai ai @@ -761,13 +795,13 @@ ai ab al ab -aB -av -av -av +ai av av av +ai +aZ +bA ax av bH @@ -782,16 +816,16 @@ ai av av av -aC +aY aF aO av -aY -bf -av -ax -av -av +ak +ba +bJ +zL +bJ +bJ av ai av @@ -807,9 +841,9 @@ ad aG aP av -aZ -bg -am +ak +bh +bJ aI bb bI @@ -828,12 +862,12 @@ aC aH aQ av -ba -bh -av -ax +ai av -af +bJ +zL +bJ +AS bP ak cb @@ -849,13 +883,13 @@ am aI ad ad -bb -ad +bR ad +bQ bp bz -af -af +KO +Gu ak cb av @@ -870,13 +904,13 @@ aC aJ aR aX -aP -aX -av +ai +ai +ai bq +by +ai ai -bJ -bQ ai cc av @@ -895,8 +929,8 @@ af av av ax +af bA -av ae ai ak @@ -926,7 +960,7 @@ aA cv "} (10,1,1) = {" -av +ap av aw ad @@ -947,7 +981,7 @@ cl cw "} (11,1,1) = {" -av +ap av ax ao @@ -969,7 +1003,7 @@ cx "} (12,1,1) = {" ah -ap +av ay av av @@ -1076,11 +1110,11 @@ cv av at af -av +ab af ar av -av +ab av af bs diff --git a/maps/map_files/BigRed/sprinkles/35.filtration_restored.dmm b/maps/map_files/BigRed/sprinkles/35.filtration_restored.dmm index 47984a920749..adbdf51bd259 100644 --- a/maps/map_files/BigRed/sprinkles/35.filtration_restored.dmm +++ b/maps/map_files/BigRed/sprinkles/35.filtration_restored.dmm @@ -7,7 +7,9 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "ad" = ( /obj/effect/decal/cleanable/dirt, @@ -17,12 +19,16 @@ /obj/structure/pipes/vents/pump, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "af" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "ah" = ( /obj/structure/window/framed/solaris, @@ -36,13 +42,19 @@ /area/bigredv2/caves) "ak" = ( /obj/structure/closet/wardrobe/atmospherics_yellow, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "al" = ( /obj/structure/surface/table, /obj/item/tool/lighter/random, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "am" = ( /turf/open/floor{ @@ -53,43 +65,59 @@ "an" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "ap" = ( /obj/structure/reagent_dispensers/watertank, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "aq" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/camera/autoname{ dir = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "ar" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "as" = ( /obj/structure/pipes/standard/manifold/hidden/green, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "at" = ( /obj/structure/bed/chair{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "au" = ( /obj/structure/machinery/computer/atmos_alert{ dir = 8 }, /obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "av" = ( /obj/item/tool/warning_cone, @@ -123,8 +151,8 @@ /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Atmospherics Condenser Storage" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "aB" = ( @@ -132,8 +160,8 @@ dir = 1; name = "\improper Atmospherics Condenser" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "aC" = ( @@ -141,7 +169,9 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aD" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ @@ -149,14 +179,16 @@ name = "\improper Atmospherics Condenser" }, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "aE" = ( /obj/effect/decal/cleanable/dirt, /obj/item/device/radio/headset, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aF" = ( /obj/structure/machinery/portable_atmospherics/powered/scrubber/huge/chan, @@ -173,7 +205,9 @@ /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aJ" = ( /turf/open/floor{ @@ -187,39 +221,49 @@ /area/bigredv2/outside/se) "aL" = ( /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor{ - dir = 1; - icon_state = "bot" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "aM" = ( /obj/structure/reagent_dispensers/watertank, -/turf/open/floor{ - dir = 1; - icon_state = "bot" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "aN" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aO" = ( /obj/structure/pipes/vents/pump, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aP" = ( /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aQ" = ( /obj/structure/surface/table, /obj/effect/landmark/good_item, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "aR" = ( /obj/structure/surface/table, /obj/effect/spawner/random/toolbox, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "aS" = ( /turf/open/floor{ @@ -229,9 +273,8 @@ /area/bigredv2/outside/filtration_plant) "aT" = ( /obj/structure/dispenser/oxygen, -/turf/open/floor{ - dir = 1; - icon_state = "bot" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "aV" = ( @@ -239,24 +282,34 @@ icon_state = "U-N" }, /obj/structure/machinery/computer3/server/rack, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aW" = ( /obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aX" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aY" = ( /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/filtration_plant) "aZ" = ( /obj/structure/machinery/computer/general_air_control, -/turf/open/floor, +/obj/structure/surface/table, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bb" = ( /obj/structure/surface/table, @@ -264,23 +317,34 @@ /obj/structure/machinery/light{ dir = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bc" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/surface/rack, /obj/effect/spawner/random/tool, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bd" = ( /obj/structure/surface/table, /obj/effect/spawner/random/tool, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "be" = ( /obj/structure/surface/table, /obj/item/circuitboard/solar_tracker, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bf" = ( /obj/structure/machinery/light{ @@ -293,34 +357,53 @@ /obj/effect/decal/warning_stripes{ icon_state = "U-S" }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bh" = ( /obj/effect/decal/warning_stripes{ icon_state = "U-S" }, /obj/structure/machinery/computer3/server/rack, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bj" = ( /obj/structure/surface/rack, /obj/item/tank/air, /obj/item/tool/pickaxe, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bk" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/tool, /obj/structure/machinery/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bl" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; name = "\improper Filtration Facility" }, -/turf/open/floor{ - icon_state = "delivery" +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "bm" = ( @@ -329,34 +412,42 @@ name = "\improper Filtration Facility" }, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "bn" = ( -/obj/structure/closet/firecloset/full, /obj/structure/sign/safety/distribution_pipes{ pixel_x = 32 }, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bo" = ( /obj/item/tank/air, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bp" = ( /obj/structure/pipes/vents/pump{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bq" = ( /obj/effect/landmark/crap_item, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "br" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ @@ -365,8 +456,8 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "bt" = ( @@ -378,7 +469,9 @@ dir = 4 }, /obj/item/frame/table, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bv" = ( /obj/structure/machinery/portable_atmospherics/powered/scrubber/huge/chan, @@ -393,7 +486,9 @@ dir = 9 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bz" = ( /obj/effect/decal/cleanable/dirt, @@ -413,7 +508,10 @@ /obj/structure/machinery/computer/atmos_alert{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bD" = ( /obj/structure/window/framed/solaris/reinforced/hull, @@ -435,11 +533,20 @@ /area/bigredv2/outside/filtration_plant) "bG" = ( /obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bH" = ( -/obj/structure/machinery/computer/area_atmos/area, -/turf/open/floor, +/obj/structure/machinery/computer/area_atmos/area{ + dir = 8 + }, +/obj/structure/surface/table, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bI" = ( /obj/structure/window_frame/solaris/reinforced, @@ -450,7 +557,10 @@ /area/bigredv2/outside/filtration_plant) "bJ" = ( /obj/item/weapon/twohanded/fireaxe, -/turf/open/floor, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bK" = ( /turf/open/mars, @@ -458,7 +568,10 @@ "bN" = ( /obj/structure/surface/table, /obj/effect/spawner/random/technology_scanner, -/turf/open/floor, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bO" = ( /turf/open/mars_cave{ @@ -475,29 +588,36 @@ /obj/structure/surface/table, /obj/effect/spawner/random/technology_scanner, /obj/structure/machinery/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bS" = ( /obj/item/frame/table, /obj/structure/machinery/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bT" = ( /obj/effect/decal/cleanable/dirt, /obj/item/frame/table, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bU" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bW" = ( -/obj/structure/largecrate/random, /turf/open/floor{ - dir = 1; - icon_state = "bot" + icon_state = "dark" }, /area/bigredv2/outside/filtration_plant) "bX" = ( @@ -519,7 +639,9 @@ pixel_x = -32 }, /obj/structure/machinery/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "ce" = ( /obj/structure/machinery/light, @@ -533,8 +655,8 @@ id = "FiltrationShutters"; name = "\improper Airlock Shutters" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "cg" = ( @@ -559,7 +681,10 @@ /area/bigredv2/outside/filtration_cave_cas) "cj" = ( /obj/item/tool/pickaxe, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "bot" + }, /area/bigredv2/outside/filtration_plant) "ck" = ( /obj/effect/decal/warning_stripes{ @@ -581,13 +706,61 @@ icon_state = "delivery" }, /area/bigredv2/outside/filtration_plant) +"cO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/bigredv2/outside/filtration_plant) +"et" = ( +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/bigredv2/outside/filtration_plant) +"eL" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"ff" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) +"gt" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"hk" = ( +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "jh" = ( /obj/structure/machinery/light, /turf/open/floor, /area/bigredv2/outside/filtration_plant) "ka" = ( /obj/structure/closet/firecloset/full, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"kE" = ( +/obj/structure/machinery/light, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "nk" = ( /obj/structure/blocker/forcefield/multitile_vehicles, @@ -597,23 +770,152 @@ /obj/item/tank/air, /turf/open/floor, /area/bigredv2/outside/filtration_plant) +"oE" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) +"qi" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/closet/firecloset/full, +/turf/open/floor{ + dir = 1; + icon_state = "bot" + }, +/area/bigredv2/outside/filtration_plant) +"ti" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "bot" + }, +/area/bigredv2/outside/filtration_plant) +"tp" = ( +/obj/structure/largecrate/random, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"tz" = ( +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "tB" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ icon_state = "mars_cave_2" }, /area/bigredv2/outside/filtration_cave_cas) +"vK" = ( +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"xd" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"yi" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"yZ" = ( +/turf/open/floor{ + dir = 8; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/filtration_plant) "zu" = ( /turf/open/mars_cave{ icon_state = "mars_cave_7" }, /area/bigredv2/outside/filtration_cave_cas) +"Ap" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/filtration_plant) +"AD" = ( +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"Ee" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"FI" = ( +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"FK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) +"Jy" = ( +/obj/structure/closet/firecloset/full, +/turf/open/floor{ + dir = 1; + icon_state = "bot" + }, +/area/bigredv2/outside/filtration_plant) +"Kp" = ( +/obj/structure/surface/table, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "Ms" = ( /obj/structure/machinery/computer3/server/rack, /obj/effect/decal/warning_stripes{ icon_state = "U-N" }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "Qx" = ( /obj/effect/decal/cleanable/dirt, @@ -623,6 +925,12 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_plant) +"QJ" = ( +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "Rv" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/floor{ @@ -630,11 +938,36 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_plant) +"Sj" = ( +/obj/structure/machinery/door/airlock/almayer/engineering/colony{ + dir = 1; + name = "\improper Filtration Facility" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/bigredv2/outside/filtration_plant) +"Sk" = ( +/obj/structure/machinery/light, +/obj/structure/largecrate/random, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"TC" = ( +/obj/structure/machinery/light, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "TX" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "UH" = ( /obj/effect/decal/warning_stripes{ @@ -656,12 +989,34 @@ icon_state = "bot" }, /area/bigredv2/outside/filtration_plant) +"Wc" = ( +/turf/open/floor{ + dir = 1; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/filtration_plant) +"Wz" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "WD" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ icon_state = "mars_cave_2" }, /area/bigredv2/outside/filtration_cave_cas) +"Xx" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/technology_scanner, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "XC" = ( /obj/structure/cargo_container/grant/right, /turf/open/floor{ @@ -710,12 +1065,12 @@ TX ap aa aL -aS +et aL aL aa -az -az +tz +vK bJ bw bw @@ -734,16 +1089,16 @@ bw (3,1,1) = {" ak TX -jh +TC aa -bf -az -az -az +oE +FK +FK +FK bl -az +bW bp -az +AD bw bw bw @@ -761,19 +1116,19 @@ aY (4,1,1) = {" ak TX -az +AD aa aT aM aT -aS +et aa -az +hk TX -az +yZ bU bB -bG +Kp aY cg az @@ -795,17 +1150,17 @@ aa aa aa aa -bf +Wz bq -az -az -az +bW +bW +bW cb aY bf ad -ad -ad +ti +ti az aS aS @@ -817,22 +1172,22 @@ al ac aq aa -az +tz bg Ms -az +QJ aa -az +hk TX -aS -aS -aS -az +bW +bW +bW +bW cf az ad -ad -az +ti +aS az aS VW @@ -840,21 +1195,21 @@ az bw "} (7,1,1) = {" -ad +ff aC ar aB -az -az -az -az -bl -az +bW +bW +bW +bW +Sj +bW TX -aL bW -aS -az +bW +bW +bW cf az az @@ -871,22 +1226,22 @@ an ae as ah -az +hk bh aV -ad +gt ah -ad +xd TX -aS -aS bW -az +bW +bW +bW cf az az -az -az +aS +aS az aS XC @@ -901,19 +1256,19 @@ aD aN aN ar -az +AD ah -az +hk TX -aS -aS -aS -az +bW +bW +bW +bW cf az az -az -az +aS +aS np bz aS @@ -921,25 +1276,25 @@ jh aY "} (10,1,1) = {" -ad +ff aE at aa -bf -az +Wz +bW ac bk aa -bf +eL TX -az -az -az -jh +FI +yi +tp +Sk aY bf az -az +aS cj az aS @@ -980,11 +1335,11 @@ ah ah aa ka -az +bW TX -az +AD aa -az +tz TX bN bw @@ -1013,7 +1368,7 @@ aN bm aN aW -bN +Xx bt bF bF @@ -1034,11 +1389,11 @@ ai ai aa bb -az -az -jh +bW +bW +TC ay -bf +Wz TX bQ bw @@ -1065,9 +1420,9 @@ aR aQ be aa -az +hk TX -bN +Xx bw bF bF @@ -1092,9 +1447,9 @@ aa ay aa aa -az +hk TX -az +AD bw bD bD @@ -1116,10 +1471,10 @@ am am am aY -bf +Ee bj bj -az +Wc TX bS aa @@ -1142,14 +1497,14 @@ am am am am -US -az -az -az -az +et +bW +bW +bW +bW bu -ad -cn +ff +cO WD bO bO @@ -1169,14 +1524,14 @@ am am am am -US -az -az +et +bW +bW aP aO by -az -US +bW +et WD bO bO @@ -1196,14 +1551,14 @@ am am am am -US -az -az -ad +et +FI +FI +Ap bo -az +bW bT -US +et WD bO bO @@ -1224,12 +1579,12 @@ am aG aG aY -bf -ka +qi +Jy bn -az -az -jh +FI +FI +kE bX WD bO diff --git a/maps/map_files/BigRed/sprinkles/40.admin_pmc.dmm b/maps/map_files/BigRed/sprinkles/40.admin_pmc.dmm index d238af50b91a..622e76848001 100644 --- a/maps/map_files/BigRed/sprinkles/40.admin_pmc.dmm +++ b/maps/map_files/BigRed/sprinkles/40.admin_pmc.dmm @@ -2,10 +2,6 @@ "ab" = ( /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/admin_building) -"ac" = ( -/obj/effect/acid_hole, -/turf/closed/wall/solaris, -/area/bigredv2/outside/admin_building) "ad" = ( /obj/structure/window/framed/solaris, /turf/open/floor/plating, @@ -15,88 +11,68 @@ /area/bigredv2/outside/admin_building) "af" = ( /obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/light{ - dir = 8 - }, /obj/effect/decal/cleanable/blood/xeno, /turf/open/floor{ - icon_state = "darkred2"; - dir = 8 + dir = 8; + icon_state = "darkredcorners2" }, /area/bigredv2/outside/admin_building) "ag" = ( /obj/effect/spawner/random/toolbox, +/obj/structure/platform_decoration, /turf/open/floor{ icon_state = "dark" }, /area/bigredv2/outside/admin_building) "ai" = ( /obj/effect/landmark/survivor_spawner, +/obj/structure/platform_decoration{ + dir = 1 + }, /turf/open/floor{ icon_state = "dark" }, /area/bigredv2/outside/admin_building) "aj" = ( +/turf/open/floor{ + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) +"ak" = ( /obj/structure/window_frame/solaris, /obj/item/shard, /turf/open/floor/plating, /area/bigredv2/outside/admin_building) -"ak" = ( -/obj/structure/barricade/metal/wired{ - icon_state = "metal_2"; - dir = 1 - }, -/turf/open/floor{ - icon_state = "carpet14-10"; - dir = 8 - }, -/area/bigredv2/outside/admin_building) "al" = ( -/obj/structure/barricade/metal/wired{ - dir = 1 +/obj/structure/machinery/door/airlock/almayer/command/colony{ + dir = 1; + name = "\improper Operations Meeting Room" }, /turf/open/floor{ - icon_state = "carpet10-8"; - dir = 8 + icon_state = "delivery" }, /area/bigredv2/outside/admin_building) "am" = ( -/obj/structure/barricade/metal/wired{ - dir = 1 - }, -/obj/structure/barricade/metal/wired{ - icon_state = "metal_2"; - dir = 4 +/obj/structure/platform, +/obj/structure/flora/jungle/planttop1{ + pixel_y = 10 }, -/obj/item/ammo_magazine/rifle{ - current_rounds = 0; - pixel_x = -9; - pixel_y = -4 +/turf/open/floor{ + icon_state = "dark" }, -/turf/open/floor, /area/bigredv2/outside/admin_building) "an" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ - icon_state = "darkred2"; - dir = 8 + dir = 8; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "ap" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/open/jungle{ - bushes_spawn = 0; - icon_state = "grass_impenetrable" +/obj/structure/flora/jungle/plantbot1{ + pixel_y = 10 }, +/turf/open/jungle, /area/bigredv2/outside/admin_building) "ar" = ( /obj/structure/machinery/light{ @@ -106,38 +82,30 @@ icon_state = "gib6" }, /turf/open/floor{ - icon_state = "carpet7-3"; - dir = 8 - }, -/area/bigredv2/outside/admin_building) -"as" = ( -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "at" = ( /obj/structure/bed/chair/comfy/black, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "au" = ( /obj/effect/landmark/corpsespawner/wygoon, -/turf/open/floor{ - icon_state = "carpet11-12"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "av" = ( /obj/structure/barricade/metal/wired{ - icon_state = "metal_2"; - dir = 4 + dir = 4; + icon_state = "metal_2" + }, +/turf/open/floor{ + icon_state = "wood" }, -/turf/open/floor, /area/bigredv2/outside/admin_building) "aw" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, /obj/effect/decal/cleanable/blood/xeno, /turf/open/floor{ icon_state = "dark" @@ -151,33 +119,23 @@ "aA" = ( /obj/effect/landmark/corpsespawner/wygoon, /turf/open/floor{ - icon_state = "carpet7-3"; - dir = 8 + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "aB" = ( /obj/structure/surface/table, -/obj/structure/machinery/computer3/laptop/secure_data, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/obj/structure/prop/server_equipment/laptop/on, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aC" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 - }, -/turf/open/floor{ - icon_state = "carpet15-15"; +/obj/structure/bed/chair/comfy/blue{ dir = 8 }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aD" = ( -/obj/item/stack/sheet/metal/small_stack, -/turf/open/floor{ - icon_state = "carpet6-2"; - dir = 8 - }, +/obj/effect/acid_hole, +/turf/closed/wall/solaris, /area/bigredv2/outside/admin_building) "aG" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -196,20 +154,11 @@ icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) -"aI" = ( -/turf/open/floor{ - icon_state = "carpet7-3"; - dir = 8 - }, -/area/bigredv2/outside/admin_building) "aJ" = ( -/obj/structure/bed/chair/office/dark{ +/obj/structure/bed/chair/comfy/blue{ dir = 4 }, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aK" = ( /obj/structure/surface/table, @@ -219,54 +168,41 @@ name = "dented M4A3 service pistol" }, /obj/item/ammo_magazine/pistol/rubber, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aL" = ( /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor{ - icon_state = "carpet11-12"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aM" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/barricade/sandbags/wired, /turf/open/floor{ - icon_state = "darkred2"; - dir = 8 + dir = 8; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aN" = ( /obj/structure/barricade/sandbags/wired, /turf/open/floor{ - icon_state = "darkred2"; - dir = 4 + dir = 4; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aO" = ( /obj/item/storage/secure/briefcase, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aP" = ( /obj/structure/barricade/metal/wired{ dir = 4 }, -/turf/open/floor, -/area/bigredv2/outside/admin_building) -"aQ" = ( /turf/open/floor{ - icon_state = "carpet11-12"; - dir = 8 + icon_state = "wood" }, /area/bigredv2/outside/admin_building) -"aR" = ( -/turf/open/floor, +"aQ" = ( +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aS" = ( /obj/item/ammo_magazine/rifle/rubber{ @@ -274,10 +210,7 @@ pixel_x = -3; pixel_y = -6 }, -/turf/open/floor{ - icon_state = "carpet11-12"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aT" = ( /obj/effect/decal/cleanable/blood, @@ -291,38 +224,32 @@ }, /obj/item/storage/toolbox/syndicate, /turf/open/floor{ - icon_state = "darkred2"; - dir = 4 + dir = 4; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aV" = ( /obj/structure/surface/table, /obj/item/ammo_magazine/rifle/rubber, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aW" = ( /obj/effect/decal/cleanable/blood, -/obj/item/tool/weldingtool/largetank, -/turf/open/floor{ - icon_state = "carpet11-12"; - dir = 8 - }, +/obj/item/tool/weldingtool, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aX" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/landmark/crap_item, /turf/open/floor{ - icon_state = "darkred2"; - dir = 8 + dir = 8; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aY" = ( /turf/open/floor{ - icon_state = "darkred2"; - dir = 4 + dir = 4; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aZ" = ( @@ -338,8 +265,7 @@ num_of_magazines = 2 }, /turf/open/floor{ - icon_state = "carpet7-3"; - dir = 8 + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "ba" = ( @@ -348,52 +274,45 @@ dir = 4 }, /obj/item/clothing/head/helmet/marine/veteran/pmc/leader, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "bb" = ( -/obj/structure/bed/chair/office/dark{ +/obj/structure/bed/chair/comfy/blue{ dir = 8 }, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/landmark/corpsespawner/wygoon, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "bc" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/decal/cleanable/blood, -/turf/open/floor{ - icon_state = "carpet11-12"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "bd" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 10 - }, /obj/item/ammo_magazine/rifle{ current_rounds = 0; pixel_x = -8; pixel_y = 9 }, -/turf/open/floor, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "wood" + }, /area/bigredv2/outside/admin_building) "be" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 }, /turf/open/floor{ - icon_state = "darkred2"; - dir = 8 + dir = 8; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "bf" = ( @@ -409,8 +328,8 @@ dir = 4 }, /turf/open/floor{ - icon_state = "darkred2"; - dir = 4 + dir = 4; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "bh" = ( @@ -429,43 +348,28 @@ num_of_magazines = 1 }, /turf/open/floor{ - icon_state = "carpet5-1"; - dir = 8 - }, -/area/bigredv2/outside/admin_building) -"bj" = ( -/turf/open/floor{ - icon_state = "carpet13-5"; - dir = 8 - }, -/area/bigredv2/outside/admin_building) -"bk" = ( -/turf/open/floor{ - icon_state = "carpet9-4"; - dir = 8 + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "bl" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 5 +/turf/open/floor{ + icon_state = "wood" }, -/turf/open/floor, /area/bigredv2/outside/admin_building) "bm" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/light{ + dir = 8 }, -/obj/structure/machinery/door/airlock/almayer/command/colony{ - name = "\improper Operations Meeting Room" +/turf/open/floor{ + dir = 8; + icon_state = "darkred2" }, -/turf/open/floor, /area/bigredv2/outside/admin_building) "bn" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 9 - }, /turf/open/floor{ - icon_state = "dark" + dir = 10; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "bo" = ( @@ -476,30 +380,21 @@ pixel_x = 30 }, /turf/open/floor{ - icon_state = "darkred2"; - dir = 4 + dir = 6; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "bp" = ( /obj/structure/machinery/vending/coffee, /turf/open/floor, /area/bigredv2/outside/admin_building) -"bq" = ( -/turf/open/floor{ - icon_state = "darkred2"; - dir = 10 - }, -/area/bigredv2/outside/admin_building) -"br" = ( -/turf/open/floor{ - icon_state = "darkred2" - }, -/area/bigredv2/outside/admin_building) "bs" = ( -/turf/open/floor{ - icon_state = "darkred2"; - dir = 6 +/obj/structure/window/framed/solaris/reinforced, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Operations"; + name = "\improper Operations Shutters" }, +/turf/open/floor/plating, /area/bigredv2/outside/admin_building) "dp" = ( /obj/item/ammo_magazine/rifle/rubber{ @@ -507,28 +402,24 @@ pixel_x = -6; pixel_y = -4 }, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "is" = ( /obj/item/ammo_magazine/pistol/rubber{ current_rounds = 0 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "wood" + }, /area/bigredv2/outside/admin_building) "jq" = ( /obj/item/weapon/gun/rifle/m41a/corporate{ current_mag = /obj/item/ammo_magazine/rifle/rubber; + desc = "A Weyland-Yutani creation, this M41A MK2 comes equipped in corporate white. Uses 10x24mm caseless ammunition. It seems to be pretty battered and broken up."; name = "battered M41A pulse rifle MK2"; - pixel_x = 4; - desc = "A Weyland-Yutani creation, this M41A MK2 comes equipped in corporate white. Uses 10x24mm caseless ammunition. It seems to be pretty battered and broken up." - }, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 + pixel_x = 4 }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "lz" = ( /obj/item/ammo_magazine/rifle/rubber{ @@ -536,17 +427,24 @@ pixel_y = 11 }, /turf/open/floor{ - icon_state = "carpet7-3"; - dir = 8 + icon_state = "wood" }, /area/bigredv2/outside/admin_building) +"mq" = ( +/obj/structure/window/framed/solaris/reinforced, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Operations"; + name = "\improper Operations Shutters" + }, +/turf/open/floor/plating, +/area/bigredv2/outside/admin_building) "rv" = ( /obj/item/ammo_magazine/rifle{ current_rounds = 0 }, /turf/open/floor{ - icon_state = "carpet7-3"; - dir = 8 + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "si" = ( @@ -564,15 +462,52 @@ pixel_y = 17 }, /turf/open/floor{ - icon_state = "carpet13-5"; - dir = 8 + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "uv" = ( /obj/item/ammo_magazine/rifle{ current_rounds = 0; - pixel_y = 7; - pixel_x = -9 + pixel_x = -9; + pixel_y = 7 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) +"vH" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) +"vO" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) +"yf" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) +"za" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/command/colony{ + name = "\improper Operations Meeting Room" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, /turf/open/floor, /area/bigredv2/outside/admin_building) @@ -580,17 +515,25 @@ /obj/item/ammo_magazine/pistol/rubber{ current_rounds = 0 }, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "Br" = ( /obj/structure/surface/table, /obj/item/storage/firstaid/regular/empty, +/turf/open/floor/carpet, +/area/bigredv2/outside/admin_building) +"ND" = ( +/obj/structure/pipes/standard/manifold/hidden/green, /turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) +"Pk" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor{ + icon_state = "dark" }, /area/bigredv2/outside/admin_building) "QR" = ( @@ -600,7 +543,9 @@ /obj/item/ammo_magazine/pistol/rubber{ current_rounds = 0 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "wood" + }, /area/bigredv2/outside/admin_building) "Sz" = ( /obj/item/ammo_magazine/rifle/rubber{ @@ -608,14 +553,11 @@ pixel_x = 5; pixel_y = -5 }, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) (1,1,1) = {" -ab +mq ab ab ab @@ -627,12 +569,12 @@ ab ab "} (2,1,1) = {" -ac +aj aD ar aA lz -aI +bl rv aZ bi @@ -646,7 +588,7 @@ AC aJ aO aJ -as +aQ si bp "} @@ -659,23 +601,23 @@ aK Br aV ba -bj +bl uv "} (5,1,1) = {" aj -ak +ae jq aC -as +aQ aC Sz bb -bj -aR +bl +bl "} (6,1,1) = {" -ad +ay al au aW @@ -683,12 +625,12 @@ aL aS aQ bc -bk +bl is "} (7,1,1) = {" -ad -am +aj +ae av aP aP @@ -696,35 +638,35 @@ QR aP bd bl -aR +bl "} (8,1,1) = {" -ae -aj aj -ad +ae +ae ad ad ad ae -bm +za +ae ae "} (9,1,1) = {" af -an +bm an be aM an aX -be +ND bn -bq +bs "} (10,1,1) = {" ag -ay +vO aw bf ay @@ -732,12 +674,12 @@ aT ay bf ay -br +bs "} (11,1,1) = {" -ay +am ap -ay +Pk aG aN aU @@ -748,8 +690,8 @@ bs "} (12,1,1) = {" ai -ay -ay +vH +yf aH ae ae diff --git a/maps/map_files/BigRed/sprinkles/5.eta_carp.dmm b/maps/map_files/BigRed/sprinkles/5.eta_carp.dmm index c29681e40bf4..f3fa4dbcc6e9 100644 --- a/maps/map_files/BigRed/sprinkles/5.eta_carp.dmm +++ b/maps/map_files/BigRed/sprinkles/5.eta_carp.dmm @@ -134,7 +134,7 @@ /turf/open/mars, /area/bigredv2/caves/eta/xenobiology) "x" = ( -/obj/item/toy/farwadoll, +/obj/item/toy/plush/farwa, /turf/open/ice, /area/bigredv2/caves/eta/xenobiology) "y" = ( diff --git a/maps/map_files/BigRed/standalone/crashlanding-eva.dmm b/maps/map_files/BigRed/standalone/crashlanding-eva.dmm index fb08fd251c0a..33eefe09518f 100644 --- a/maps/map_files/BigRed/standalone/crashlanding-eva.dmm +++ b/maps/map_files/BigRed/standalone/crashlanding-eva.dmm @@ -47,9 +47,7 @@ /area/bigredv2/outside/general_offices) "aE" = ( /obj/structure/computerframe, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "aF" = ( /turf/closed/shuttle/ert{ @@ -107,26 +105,18 @@ /turf/open/mars, /area/bigredv2/caves_north) "aR" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin6" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_left, /area/bigredv2/outside/general_offices) "aS" = ( -/turf/open/shuttle/dropship{ - icon_state = "floor8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/bigredv2/outside/general_offices) "aT" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin7" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_right, /area/bigredv2/outside/general_offices) "aU" = ( /obj/structure/surface/rack, /obj/item/map/big_red_map, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "aV" = ( /turf/closed/shuttle/ert{ @@ -191,34 +181,24 @@ /area/bigredv2/outside/general_offices) "bg" = ( /obj/structure/machinery/door/airlock/almayer/generic, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery, /area/bigredv2/outside/general_offices) "bh" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "bi" = ( /obj/item/paper/crumpled/bloody, /obj/effect/decal/cleanable/blood{ icon_state = "u_psycopath_l" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/general_offices) "bj" = ( /obj/structure/bed/chair/dropship/passenger, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "bk" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/general_offices) "bl" = ( /obj/effect/decal/cleanable/dirt, @@ -249,9 +229,7 @@ /area/bigredv2/outside/general_offices) "bq" = ( /obj/effect/landmark/corpsespawner/wygoon, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "br" = ( /turf/closed/shuttle/ert{ @@ -262,22 +240,16 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "bt" = ( /obj/effect/decal/cleanable/blood, /obj/effect/landmark/corpsespawner/wygoon, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/general_offices) "bu" = ( /obj/effect/decal/cleanable/blood, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "bv" = ( /obj/structure/bed/chair/dropship/passenger{ @@ -287,9 +259,7 @@ dir = 1; icon_state = "gib6" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "bw" = ( /turf/closed/shuttle/ert{ @@ -339,9 +309,7 @@ dir = 1; icon_state = "gib6" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/general_offices) "bG" = ( /turf/closed/shuttle/ert{ @@ -481,25 +449,17 @@ "cb" = ( /obj/structure/surface/rack, /obj/item/restraints, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "cc" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin4" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_left, /area/bigredv2/outside/general_offices) "cd" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_right, /area/bigredv2/outside/general_offices) "ce" = ( /obj/structure/surface/rack, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "cf" = ( /turf/closed/shuttle/ert{ @@ -531,12 +491,11 @@ }, /area/bigredv2/outside/general_offices) "cj" = ( -/obj/structure/surface/rack, -/obj/item/stack/sheet/mineral/diamond, -/obj/item/clothing/under/redcoat, -/turf/open/floor{ - icon_state = "dark" +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 1 }, +/turf/open/floor, /area/bigredv2/outside/general_offices) "cl" = ( /obj/structure/surface/rack, @@ -547,9 +506,7 @@ "cm" = ( /obj/effect/spawner/gibspawner/human, /obj/effect/decal/cleanable/blood, -/turf/open/shuttle/dropship{ - icon_state = "floor8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/bigredv2/outside/general_offices) "cn" = ( /turf/closed/shuttle/ert{ @@ -587,9 +544,7 @@ "cu" = ( /obj/effect/decal/cleanable/blood, /obj/effect/decal/remains, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "cv" = ( /turf/closed/shuttle/ert{ @@ -699,22 +654,22 @@ /turf/open/floor/plating{ icon_state = "panelscorched" }, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/ne) "cO" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating{ - icon_state = "platingdmg3" +/obj/structure/window/framed/solaris, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Dormitories"; + name = "\improper Dormitories Shutters" }, +/turf/open/floor/plating, /area/bigredv2/outside/general_offices) "cP" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor, -/area/bigredv2/outside/general_offices) -"cQ" = ( -/obj/structure/machinery/light{ - dir = 1 +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 8; + health = 25000 }, -/obj/structure/machinery/vending/cola, /turf/open/floor, /area/bigredv2/outside/general_offices) "cU" = ( @@ -757,10 +712,6 @@ icon_state = "panelscorched" }, /area/bigredv2/outside/general_offices) -"da" = ( -/obj/structure/machinery/vending/cigarette/colony, -/turf/open/floor, -/area/bigredv2/outside/general_offices) "dc" = ( /obj/item/stack/rods, /turf/open/floor{ @@ -789,10 +740,6 @@ icon_state = "platingdmg1" }, /area/bigredv2/outside/general_offices) -"dg" = ( -/obj/structure/machinery/vending/snack, -/turf/open/floor, -/area/bigredv2/outside/general_offices) "di" = ( /obj/structure/bed/chair{ dir = 8 @@ -870,18 +817,12 @@ /turf/open/floor/plating{ icon_state = "platingdmg3" }, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/ne) "du" = ( /turf/open/floor/plating{ - icon_state = "wood-broken" - }, -/area/bigredv2/outside/general_offices) -"dv" = ( -/obj/structure/surface/table, -/turf/open/floor/plating{ - icon_state = "wood-broken5" + icon_state = "panelscorched" }, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/ne) "dx" = ( /turf/closed/wall/solaris, /area/bigredv2/outside/bar) @@ -935,25 +876,6 @@ dir = 8; icon_state = "platingdmg3" }, -/area/bigredv2/outside/general_offices) -"dF" = ( -/obj/structure/bed, -/turf/open/floor/plating{ - icon_state = "wood-broken6" - }, -/area/bigredv2/outside/general_offices) -"dG" = ( -/turf/open/mars, -/area/bigredv2/outside/ne) -"dQ" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" - }, /area/bigredv2/outside/ne) "dS" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -985,24 +907,6 @@ icon_state = "platingdmg3" }, /area/bigredv2/outside/ne) -"dW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood{ - dir = 1; - icon_state = "gib6" - }, -/turf/open/mars, -/area/bigredv2/outside/ne) -"dX" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/mars, -/area/bigredv2/outside/ne) -"ea" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - icon_state = "asteroidwarning" - }, -/area/bigredv2/outside/ne) "eb" = ( /turf/open/floor{ icon_state = "wall_thermite" @@ -1036,23 +940,9 @@ "eg" = ( /obj/item/stack/sheet/wood, /turf/open/floor/plating{ - icon_state = "wood-broken2" + icon_state = "panelscorched" }, /area/bigredv2/outside/general_offices) -"eh" = ( -/turf/closed/wall/solaris, -/area/bigredv2/outside/hydroponics) -"ej" = ( -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" - }, -/area/bigredv2/outside/ne) -"el" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" - }, -/area/bigredv2/outside/ne) "em" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/plating{ @@ -1065,27 +955,6 @@ icon_state = "platingdmg3" }, /area/bigredv2/outside/hydroponics) -"eo" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/turf/open/floor{ - icon_state = "whitegreenfull" - }, -/area/bigredv2/outside/hydroponics) -"ep" = ( -/obj/structure/window/framed/solaris, -/turf/open/floor/plating, -/area/bigredv2/outside/hydroponics) -"ey" = ( -/turf/open/mars{ - icon_state = "mars_dirt_8" - }, -/area/bigredv2/outside/ne) -"ez" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/mars{ - icon_state = "mars_dirt_3" - }, -/area/bigredv2/outside/ne) "eA" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -1109,27 +978,9 @@ icon_state = "platingdmg3" }, /area/bigredv2/outside/hydroponics) -"eD" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor, -/area/bigredv2/outside/hydroponics) -"eE" = ( -/turf/open/floor, -/area/bigredv2/outside/hydroponics) "eF" = ( /turf/template_noop, /area/template_noop) -"eG" = ( -/obj/item/shard, -/turf/open/floor{ - icon_state = "platingdmg1" - }, -/area/bigredv2/outside/hydroponics) -"eH" = ( -/obj/structure/window_frame/solaris, -/obj/item/shard, -/turf/open/floor/plating, -/area/bigredv2/outside/hydroponics) "eI" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating{ @@ -1154,9 +1005,7 @@ /obj/structure/machinery/door/airlock/almayer/generic{ dir = 2 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery, /area/bigredv2/outside/general_offices) "eM" = ( /obj/item/stack/rods, @@ -1177,12 +1026,6 @@ icon_state = "platingdmg3" }, /area/bigredv2/outside/hydroponics) -"eU" = ( -/obj/effect/spawner/gibspawner/human, -/turf/open/floor/plating{ - icon_state = "wood-broken6" - }, -/area/bigredv2/outside/general_offices) "oB" = ( /obj/effect/landmark/objective_landmark/close, /turf/open/floor{ @@ -1215,9 +1058,7 @@ "Zt" = ( /obj/structure/bed/chair/dropship/passenger, /obj/effect/landmark/corpsespawner/wygoon, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) (1,1,1) = {" @@ -1587,10 +1428,10 @@ aB aB aB aB -dQ -ea -ej -ey +eF +eF +eF +eF "} (13,1,1) = {" eF @@ -1620,8 +1461,8 @@ dC bU dS eN -el -ez +eF +eF "} (14,1,1) = {" eF @@ -1739,8 +1580,8 @@ cJ aW aO aO -aW -aW +du +du cN dV ec @@ -1773,7 +1614,7 @@ dk dt dE dt -dW +eF ee en ec @@ -1801,10 +1642,10 @@ cK bl bl eg -du -dD -cY -dX +eF +eF +eF +eF eO ec eC @@ -1832,13 +1673,13 @@ cL aW aO eK -dr -eU -aW -dX +eF +eF +eF +eF ef ec -eD +eF "} (21,1,1) = {" eF @@ -1862,14 +1703,14 @@ bD bl bO aW -bU -dc -eJ -bU -dX -eG -eo -eD +aW +eF +eF +eF +eF +eF +eF +eF "} (22,1,1) = {" eF @@ -1893,14 +1734,14 @@ eJ bl aW aO -dj -dq -dr -aB -dG -eH -eo -eE +bU +eF +eF +eF +eF +eF +eF +eF "} (23,1,1) = {" eF @@ -1925,13 +1766,13 @@ cM cM df aB -dv -dF -aB -dG -eh -ep -ep +eF +eF +eF +eF +eF +eF +eF "} (24,1,1) = {" eF @@ -1952,17 +1793,17 @@ aI aI aI aI -cN -aW -cM -aB -aB -aB +cj +aK +cP aB eF eF eF eF +eF +eF +eF "} (25,1,1) = {" eF @@ -1985,7 +1826,7 @@ cw aI cO cO -cF +cO aB eF eF @@ -2014,10 +1855,10 @@ bb bI bb aI -cF -cF -aK -aB +eF +eF +eF +eF eF eF eF @@ -2045,10 +1886,10 @@ oB bb cx aI -cP -aK -aK -aB +eF +eF +eF +eF eF eF eF @@ -2072,14 +1913,14 @@ by bb bS bb -cj +cy bb cy aI -aK -aK -aK -aB +eF +eF +eF +eF eF eF eF @@ -2107,10 +1948,10 @@ aI aI aI aI -cQ -da -dg -aB +eF +eF +eF +eF eF eF eF diff --git a/maps/map_files/BigRed/standalone/crashlanding-offices.dmm b/maps/map_files/BigRed/standalone/crashlanding-offices.dmm index e712260a4947..48bac15b3127 100644 --- a/maps/map_files/BigRed/standalone/crashlanding-offices.dmm +++ b/maps/map_files/BigRed/standalone/crashlanding-offices.dmm @@ -23,8 +23,9 @@ }, /area/bigredv2/outside/c) "ag" = ( -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" }, /area/bigredv2/outside/e) "ah" = ( @@ -38,13 +39,12 @@ /area/bigredv2/outside/e) "aj" = ( /turf/open/mars{ - icon_state = "mars_dirt_11" + icon_state = "mars_dirt_12" }, /area/bigredv2/outside/e) "ak" = ( -/turf/open/floor{ - dir = 8; - icon_state = "asteroidwarning" +/turf/open/mars{ + icon_state = "mars_dirt_11" }, /area/bigredv2/outside/e) "al" = ( @@ -54,8 +54,8 @@ }, /area/bigredv2/outside/e) "am" = ( -/turf/open/mars{ - icon_state = "mars_dirt_12" +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" }, /area/bigredv2/outside/e) "an" = ( @@ -230,9 +230,7 @@ /area/bigredv2/outside/office_complex) "aP" = ( /obj/structure/computerframe, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "aQ" = ( /turf/closed/shuttle/ert{ @@ -257,22 +255,16 @@ "aU" = ( /obj/structure/surface/rack, /obj/item/restraints, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "aV" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "aW" = ( /obj/structure/bed/chair/dropship/pilot{ dir = 1 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "aX" = ( /turf/closed/shuttle/ert{ @@ -311,9 +303,7 @@ }, /area/bigredv2/outside/office_complex) "bc" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "bd" = ( /obj/effect/decal/cleanable/dirt, @@ -356,32 +346,22 @@ }, /area/bigredv2/outside/office_complex) "bl" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin6" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_left, /area/bigredv2/outside/office_complex) "bm" = ( -/turf/open/shuttle/dropship{ - icon_state = "floor8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/bigredv2/outside/office_complex) "bn" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin13" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_middle, /area/bigredv2/outside/office_complex) "bo" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin7" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_right, /area/bigredv2/outside/office_complex) "bp" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "bq" = ( /turf/closed/shuttle/ert{ @@ -418,13 +398,6 @@ icon_state = "platingdmg3" }, /area/bigredv2/outside/office_complex) -"bv" = ( -/obj/structure/surface/rack, -/obj/effect/landmark/crap_item, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/bigredv2/outside/office_complex) "bw" = ( /obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/dirt, @@ -754,13 +727,12 @@ dir = 4 }, /obj/effect/decal/cleanable/blood, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "cv" = ( /turf/open/shuttle/dropship{ - icon_state = "rasputin10" + icon_state = "rasputin10"; + supports_surgery = 1 }, /area/bigredv2/outside/office_complex) "cw" = ( @@ -769,7 +741,8 @@ name = "smashed NSG 23 assault rifle" }, /turf/open/shuttle/dropship{ - icon_state = "rasputin12" + icon_state = "rasputin12"; + supports_surgery = 1 }, /area/bigredv2/outside/office_complex) "cx" = ( @@ -777,9 +750,7 @@ /obj/item/limb/arm/l_arm, /obj/item/limb/leg/l_leg, /obj/item/limb/hand/r_hand, -/turf/open/shuttle/dropship{ - icon_state = "rasputin8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_right, /area/bigredv2/outside/office_complex) "cy" = ( /obj/structure/janitorialcart, @@ -1113,24 +1084,18 @@ /area/bigredv2/outside/se) "dz" = ( /obj/effect/spawner/gibspawner/human, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "dA" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, /obj/effect/decal/cleanable/blood, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dB" = ( /obj/effect/decal/cleanable/blood, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "dC" = ( /obj/effect/spawner/gibspawner/human, @@ -1150,18 +1115,14 @@ dir = 1; icon_state = "gib6" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "dF" = ( /obj/effect/decal/cleanable/blood{ dir = 4; icon_state = "gib6" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin4" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_left, /area/bigredv2/outside/office_complex) "dG" = ( /obj/effect/decal/cleanable/blood{ @@ -1169,31 +1130,26 @@ icon_state = "gib6" }, /turf/open/shuttle/dropship{ - icon_state = "rasputin10" + icon_state = "rasputin10"; + supports_surgery = 1 }, /area/bigredv2/outside/office_complex) "dH" = ( /obj/effect/decal/cleanable/blood, /obj/effect/landmark/corpsespawner/wygoon, -/turf/open/shuttle/dropship{ - icon_state = "floor8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/bigredv2/outside/office_complex) "dI" = ( /obj/structure/surface/rack, /obj/item/ammo_magazine/rifle/nsg23, /obj/item/ammo_magazine/rifle/nsg23/extended, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dJ" = ( /obj/effect/decal/cleanable/blood{ icon_state = "gib6" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "dK" = ( /obj/effect/spawner/gibspawner/human, @@ -1204,15 +1160,11 @@ "dL" = ( /obj/structure/surface/rack, /obj/item/device/binoculars, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dM" = ( /obj/structure/surface/rack, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dN" = ( /obj/structure/surface/rack, @@ -1220,9 +1172,7 @@ /obj/item/ammo_magazine/pistol/rubber, /obj/item/ammo_magazine/pistol/rubber, /obj/item/ammo_magazine/pistol/rubber, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dO" = ( /obj/effect/decal/cleanable/dirt, @@ -1234,9 +1184,7 @@ "dP" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/tech_supply, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dQ" = ( /obj/structure/bed/chair/dropship/passenger{ @@ -1244,30 +1192,22 @@ }, /obj/effect/decal/cleanable/blood, /obj/effect/spawner/gibspawner/human, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dR" = ( /obj/structure/surface/rack, /obj/item/map/big_red_map, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dS" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/tool, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dT" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/toolbox, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dU" = ( /obj/effect/decal/cleanable/dirt, @@ -1412,27 +1352,28 @@ dir = 8 }, /obj/effect/landmark/survivor_spawner/bigred_crashed_pmc, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "fG" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, /obj/item/device/radio/headset/distress/pmc/hvh, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" +/turf/open/shuttle/dropship/can_surgery/dark_grey, +/area/bigredv2/outside/office_complex) +"hN" = ( +/obj/structure/bed/chair/dropship/passenger{ + dir = 4 }, +/obj/effect/landmark/survivor_spawner/bigred_crashed_pmc_medic, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "id" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, /obj/effect/landmark/survivor_spawner/bigred_crashed_pmc, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "jx" = ( /obj/effect/decal/cleanable/blood{ @@ -1440,27 +1381,19 @@ icon_state = "gib6" }, /obj/item/limb/leg/l_leg, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) -"od" = ( -/obj/structure/bed/chair/dropship/passenger{ - dir = 4 - }, -/obj/item/clothing/gloves/marine/veteran/pmc, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +"nE" = ( +/obj/structure/surface/rack, +/obj/effect/landmark/crap_item, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "oF" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, /obj/item/clothing/under/marine/veteran/pmc, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "qX" = ( /obj/effect/decal/cleanable/blood, @@ -1479,9 +1412,7 @@ /obj/item/clothing/head/helmet/marine/veteran/pmc, /obj/item/clothing/under/marine/veteran/pmc, /obj/item/clothing/head/helmet/marine/veteran/pmc, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "rK" = ( /obj/structure/bed/chair/dropship/passenger{ @@ -1489,21 +1420,15 @@ }, /obj/effect/decal/cleanable/blood, /obj/effect/landmark/corpsespawner/wygoon, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "si" = ( /obj/item/clothing/head/helmet/marine/veteran/pmc, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "sR" = ( /obj/item/storage/firstaid, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "uC" = ( /obj/effect/spawner/gibspawner/human, @@ -1511,29 +1436,21 @@ desc = "A Weyland-Yutani creation, this M41A MK2 comes equipped in corporate white. Uses 10x24mm caseless ammunition. The IFF electronics appear to be non-functional."; name = "battered M41A pulse rifle Mk2" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "uL" = ( /obj/item/weapon/gun/rifle/nsg23/no_lock, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "vw" = ( /obj/item/limb/arm/l_arm, -/turf/open/shuttle/dropship{ - icon_state = "floor8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/bigredv2/outside/office_complex) "yS" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "AB" = ( /obj/structure/bed/chair/dropship/passenger{ @@ -1545,9 +1462,7 @@ name = "dented M4A3 service pistol" }, /obj/effect/landmark/corpsespawner/wygoon, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "Bu" = ( /obj/effect/decal/cleanable/blood, @@ -1555,27 +1470,21 @@ /obj/item/limb/arm/l_arm, /obj/item/limb/leg/l_leg, /obj/item/limb/hand/r_hand, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "EE" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, /obj/item/limb/hand/l_hand, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "GG" = ( /obj/item/weapon/gun/rifle/m41a/corporate/no_lock{ desc = "A Weyland-Yutani creation, this M41A MK2 comes equipped in corporate white. Uses 10x24mm caseless ammunition. The IFF electronics appear to be non-functional."; name = "battered M41A pulse rifle Mk2" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "Ha" = ( /obj/effect/decal/cleanable/dirt, @@ -1589,18 +1498,14 @@ dir = 4 }, /obj/item/device/radio/headset/distress/pmc/hvh, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "NK" = ( /obj/structure/surface/rack, /obj/item/ammo_magazine/rifle/rubber, /obj/item/ammo_magazine/rifle/rubber, /obj/item/ammo_magazine/rifle/rubber, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "PR" = ( /turf/open/floor{ @@ -1613,24 +1518,18 @@ dir = 8 }, /obj/effect/landmark/survivor_spawner/bigred_crashed_cl, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/bigredv2/outside/office_complex) -"Ra" = ( -/obj/structure/bed/chair/dropship/passenger{ - dir = 8 - }, -/obj/item/clothing/gloves/marine/veteran/pmc, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "Vg" = ( /obj/effect/landmark/objective_landmark/medium, -/turf/open/shuttle/dropship{ - icon_state = "floor8" +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, +/area/bigredv2/outside/office_complex) +"XH" = ( +/obj/structure/bed/chair/dropship/passenger{ + dir = 4 }, +/obj/effect/landmark/survivor_spawner/bigred_crashed_pmc_engineer, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) (1,1,1) = {" @@ -1911,17 +1810,17 @@ cX cX by aN -id +XH AB yS aV -bv +nE dN dP aV id yS -od +yS cE cM cM @@ -1964,7 +1863,7 @@ av ar aN aU -bv +nE bm dA fv @@ -2003,9 +1902,9 @@ yS yS yS dH -bv -bv -bv +nE +nE +nE dT cF do @@ -2071,14 +1970,14 @@ ap az bu aN -bv +nE dL bm -od +yS yS yS cu -id +hN yS yS yS @@ -2132,12 +2031,12 @@ rK bp aV dM -bv -bv +nE +nE aV fv dA -Ra +bp cF cN cN @@ -2147,8 +2046,8 @@ Ha dq "} (20,1,1) = {" -aj -ag +ai +at aA dX dX @@ -2175,7 +2074,7 @@ PR "} (21,1,1) = {" ak -ak +am aA aG dX @@ -2201,9 +2100,9 @@ Ha PR "} (22,1,1) = {" -al -al -aA +ag +ag +aG aG dX ap @@ -2228,9 +2127,9 @@ Ha PR "} (23,1,1) = {" -am -ag -aA +al +al +aG aG aG ap @@ -2255,8 +2154,8 @@ Ha dq "} (24,1,1) = {" -ai -at +aj +am aA aG aG diff --git a/maps/map_files/BigRed/standalone/medbay-passage.dmm b/maps/map_files/BigRed/standalone/medbay-passage.dmm index 75d323f0116d..d5b7db11d82b 100644 --- a/maps/map_files/BigRed/standalone/medbay-passage.dmm +++ b/maps/map_files/BigRed/standalone/medbay-passage.dmm @@ -61,6 +61,31 @@ "m" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/oil, +/obj/structure/stairs/perspective{ + dir = 5; + icon_state = "p_stair_full" + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/c) +"n" = ( +/obj/structure/stairs/perspective{ + dir = 9; + icon_state = "p_stair_full" + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/c) +"w" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, /turf/open/floor{ dir = 1; icon_state = "asteroidfloor" @@ -83,6 +108,16 @@ icon_state = "white" }, /area/bigredv2/outside/admin_building) +"X" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/c) (1,1,1) = {" a @@ -97,7 +132,7 @@ a a c h -l +n R "} (3,1,1) = {" @@ -105,7 +140,7 @@ a a d i -d +w S "} (4,1,1) = {" @@ -113,7 +148,7 @@ a a e l -l +X T "} (5,1,1) = {" diff --git a/maps/map_files/BigRed/standalone/medbay-v3.dmm b/maps/map_files/BigRed/standalone/medbay-v3.dmm index aded8e8bb7cb..80397d168ba7 100644 --- a/maps/map_files/BigRed/standalone/medbay-v3.dmm +++ b/maps/map_files/BigRed/standalone/medbay-v3.dmm @@ -108,32 +108,12 @@ }, /area/bigredv2/outside/medical) "as" = ( -/obj/structure/surface/table, /obj/structure/pipes/vents/pump, -/obj/item/device/autopsy_scanner, -/turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/medical) -"at" = ( /turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/medical) -"au" = ( -/obj/structure/morgue{ - dir = 8 - }, -/turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/medical) -"av" = ( -/obj/structure/morgue, -/turf/open/floor{ - icon_state = "dark" + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "aw" = ( /obj/structure/machinery/chem_dispenser, /turf/open/floor{ @@ -206,13 +186,6 @@ icon_state = "whitegreenfull" }, /area/bigredv2/outside/medical) -"aG" = ( -/obj/structure/machinery/optable, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/medical) "aH" = ( /obj/effect/spawner/gibspawner/human, /turf/open/floor{ @@ -388,11 +361,10 @@ }, /area/bigredv2/outside/medical) "bh" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - icon_state = "dark" +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "bi" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ @@ -497,10 +469,10 @@ "bw" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ - dir = 8; - icon_state = "damaged2" + dir = 4; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "bx" = ( /obj/item/stack/rods, /turf/open/floor{ @@ -557,15 +529,6 @@ icon_state = "platingdmg1" }, /area/bigredv2/outside/medical) -"bF" = ( -/obj/structure/machinery/camera/autoname{ - network = list("interrogation") - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/medical) "bG" = ( /obj/item/ammo_casing/bullet, /turf/open/floor/plating{ @@ -632,10 +595,12 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, +/obj/structure/surface/table, /turf/open/floor{ - icon_state = "platingdmg1" + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "bP" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 @@ -645,12 +610,11 @@ }, /area/bigredv2/outside/medical) "bQ" = ( -/obj/structure/machinery/light, /turf/open/floor{ - dir = 8; - icon_state = "damaged5" + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "bR" = ( /obj/effect/decal/cleanable/dirt, /obj/item/shard, @@ -740,10 +704,15 @@ }, /area/bigredv2/outside/medical) "cf" = ( +/obj/effect/decal/cleanable/blood{ + icon_state = "gib6" + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/colony{ + name = "\improper Medical Clinic" + }, /obj/structure/pipes/standard/simple/hidden/green, -/obj/item/stack/sheet/metal, /turf/open/floor{ - icon_state = "platingdmg1" + icon_state = "delivery" }, /area/bigredv2/outside/medical) "cg" = ( @@ -797,14 +766,14 @@ }, /area/bigredv2/outside/medical) "cn" = ( -/obj/structure/machinery/light{ - dir = 1 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 }, -/obj/item/stack/rods, /turf/open/floor{ - icon_state = "platingdmg1" + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "co" = ( /obj/structure/window_frame/solaris, /obj/item/stack/sheet/metal, @@ -2050,6 +2019,13 @@ icon_state = "platingdmg1" }, /area/bigredv2/outside/medical) +"gS" = ( +/obj/structure/machinery/light, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/n) "hn" = ( /turf/open/floor{ dir = 1; @@ -2057,9 +2033,13 @@ }, /area/bigredv2/outside/medical) "om" = ( -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ - icon_state = "dark" + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/n) +"CW" = ( +/turf/open/floor{ + icon_state = "delivery" }, /area/bigredv2/outside/medical) "DL" = ( @@ -2631,8 +2611,8 @@ hn (20,1,1) = {" af as -aG -bi +bw +bw bw bO ce @@ -2658,11 +2638,11 @@ hn "} (21,1,1) = {" af -at -ax -aU -ai -bP +om +bh +bh +bh +cn cf cm bi @@ -2686,12 +2666,12 @@ hn "} (22,1,1) = {" af -at -at -aM -bu -aT -ab +om +bh +bh +bh +bQ +CW aT bu cN @@ -2715,12 +2695,12 @@ aa (23,1,1) = {" af om -at +bh bh bh bQ -aa -cn +ac +bK an bP cZ @@ -2742,12 +2722,12 @@ aa "} (24,1,1) = {" af -au -au -au -au -bF -aa +om +bh +bh +bh +bQ +ac ax cx cQ @@ -2770,12 +2750,12 @@ eV "} (25,1,1) = {" af -av -av -av -av -at -aa +om +bh +bh +bh +bQ +ac bz cy cR @@ -2798,11 +2778,11 @@ am "} (26,1,1) = {" af -at -at -at -at -at +om +bh +bh +bh +gS aa ap ap diff --git a/maps/map_files/CORSAT/Corsat.dmm b/maps/map_files/CORSAT/Corsat.dmm index bddc64a61ad2..40573911281f 100644 --- a/maps/map_files/CORSAT/Corsat.dmm +++ b/maps/map_files/CORSAT/Corsat.dmm @@ -585,15 +585,6 @@ icon_state = "warnplate" }, /area/corsat/gamma/hangar) -"abW" = ( -/obj/docking_port/stationary/marine_dropship/lz1{ - dwidth = 1; - name = "Gamma Landing Zone" - }, -/turf/open/floor/plating{ - icon_state = "warnplate" - }, -/area/corsat/gamma/hangar) "abX" = ( /turf/open/floor/plating/icefloor{ icon_state = "warnplate" @@ -1897,15 +1888,6 @@ icon_state = "warnplate" }, /area/corsat/sigma/hangar) -"afO" = ( -/obj/docking_port/stationary/marine_dropship/lz2{ - dwidth = 1; - name = "Sigma Landing Zone" - }, -/turf/open/floor/plating{ - icon_state = "warnplate" - }, -/area/corsat/sigma/hangar) "afP" = ( /turf/open/floor/plating/icefloor{ icon_state = "warnplate" @@ -13363,16 +13345,6 @@ icon_state = "plate" }, /area/corsat/sigma/airlock/control) -"aLr" = ( -/obj/structure/surface/rack, -/obj/item/tool/weldpack, -/obj/item/tool/weldingtool/largetank, -/obj/item/clothing/head/welding, -/turf/open/floor/corsat{ - dir = 5; - icon_state = "yellow" - }, -/area/corsat/gamma/engineering) "aLs" = ( /turf/open/floor/corsat{ dir = 1; @@ -22132,7 +22104,7 @@ /area/corsat/gamma/biodome/toxins) "biR" = ( /obj/structure/surface/table/woodentable, -/obj/structure/machinery/chem_dispenser/beer{ +/obj/structure/machinery/chem_dispenser/soda/beer{ dir = 8; pixel_x = 15 }, @@ -25197,7 +25169,7 @@ /area/corsat/sigma/south/offices) "bsN" = ( /obj/structure/surface/table/woodentable, -/obj/structure/machinery/chem_dispenser/beer{ +/obj/structure/machinery/chem_dispenser/soda/beer{ dir = 8 }, /turf/open/floor/corsat{ @@ -26623,9 +26595,9 @@ /area/corsat/sigma/south/robotics) "bwY" = ( /obj/structure/surface/rack, -/obj/item/circuitboard/mecha/gygax/main, -/obj/item/circuitboard/mecha/gygax/targeting, -/obj/item/circuitboard/mecha/gygax/peripherals, +/obj/item/circuitboard/exosuit/main/max, +/obj/item/circuitboard/exosuit/peripherals/max/targeting, +/obj/item/circuitboard/exosuit/peripherals/max, /turf/open/floor/corsat{ icon_state = "plate" }, @@ -26749,7 +26721,7 @@ }, /area/corsat/sigma/south/robotics) "bxr" = ( -/obj/structure/prop/mech/mech_parts/part/durand_head, +/obj/structure/prop/mech/parts/durand_head, /turf/open/floor/corsat{ icon_state = "arrow_north" }, @@ -26771,13 +26743,13 @@ }, /area/corsat/sigma/south/robotics) "bxu" = ( -/obj/structure/prop/mech/mech_parts/part/durand_right_arm, +/obj/structure/prop/mech/parts/durand_right_arm, /turf/open/floor/corsat{ icon_state = "arrow_west" }, /area/corsat/sigma/south/robotics) "bxv" = ( -/obj/structure/prop/mech/mech_parts/part/durand_torso, +/obj/structure/prop/mech/parts/durand_torso, /turf/open/floor/corsat{ icon_state = "cargo" }, @@ -26807,7 +26779,7 @@ }, /area/corsat/sigma/south/robotics) "bxA" = ( -/obj/structure/prop/mech/mech_parts/part/durand_left_leg, +/obj/structure/prop/mech/parts/durand_left_leg, /turf/open/floor/corsat{ icon_state = "arrow_east" }, @@ -27775,13 +27747,6 @@ icon_state = "purplewhitecorner" }, /area/corsat/omega/complex) -"bzU" = ( -/obj/structure/surface/table/almayer, -/obj/item/book/manual/robotics_cyborgs, -/turf/open/floor/corsat{ - icon_state = "yellow" - }, -/area/corsat/sigma/south/robotics) "bzV" = ( /obj/structure/surface/table/almayer, /obj/item/device/robotanalyzer, @@ -31271,16 +31236,6 @@ icon_state = "yellow" }, /area/corsat/omega/maint) -"bLH" = ( -/obj/structure/surface/rack, -/obj/item/tool/weldpack, -/obj/item/tool/weldingtool/largetank, -/obj/item/clothing/head/welding, -/turf/open/floor/corsat{ - dir = 5; - icon_state = "yellow" - }, -/area/corsat/omega/maint) "bLI" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony{ name = "Custodial Closet"; @@ -31978,16 +31933,6 @@ icon_state = "yellowcorner" }, /area/corsat/gamma/engineering) -"bNV" = ( -/obj/structure/surface/rack, -/obj/item/tool/weldpack, -/obj/item/tool/weldingtool/largetank, -/obj/item/clothing/head/welding, -/obj/effect/spawner/random/toolbox, -/turf/open/floor/corsat{ - icon_state = "yellow" - }, -/area/corsat/sigma/south/engineering) "bNW" = ( /obj/structure/machinery/vending/coffee, /turf/open/floor/corsat{ @@ -37491,6 +37436,12 @@ icon_state = "purplewhite" }, /area/corsat/gamma/biodome/virology) +"drp" = ( +/obj/docking_port/stationary/marine_dropship/lz1{ + name = "LZ1: Gamma Landing Zone" + }, +/turf/open/floor/plating, +/area/corsat/gamma/hangar) "drv" = ( /obj/effect/landmark/hunter_secondary, /turf/open/gm/river/desert/shallow{ @@ -37947,14 +37898,6 @@ icon_state = "whitebluefull" }, /area/corsat/gamma/residential/showers) -"dGy" = ( -/obj/structure/surface/rack, -/obj/item/toy/farwadoll, -/turf/open/floor/corsat{ - dir = 5; - icon_state = "red" - }, -/area/corsat/omega/hangar/security) "dHa" = ( /obj/structure/pipes/standard/manifold/hidden/green, /turf/open/floor/corsat{ @@ -38088,6 +38031,16 @@ icon_state = "officesquares" }, /area/corsat/gamma/administration) +"dNs" = ( +/obj/structure/surface/rack, +/obj/item/tool/weldpack, +/obj/item/tool/weldingtool, +/obj/item/clothing/head/welding, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "yellow" + }, +/area/corsat/omega/maint) "dNC" = ( /turf/open/floor/corsat{ dir = 8; @@ -38260,6 +38213,12 @@ icon_state = "purplewhite" }, /area/corsat/omega/complex) +"dUj" = ( +/obj/docking_port/stationary/marine_dropship/lz2{ + name = "LZ2: Sigma Landing Zone" + }, +/turf/open/floor/plating, +/area/corsat/sigma/hangar) "dUn" = ( /obj/structure/machinery/camera/autoname{ network = list("gamma") @@ -45752,6 +45711,14 @@ icon_state = "purplewhite" }, /area/corsat/gamma/biodome/complex) +"jpn" = ( +/obj/structure/surface/rack, +/obj/item/toy/plush/farwa, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "red" + }, +/area/corsat/omega/hangar/security) "jpB" = ( /turf/open/floor/corsat{ dir = 4; @@ -58863,8 +58830,8 @@ /area/corsat/gamma/freezer) "thp" = ( /obj/structure/surface/rack, -/obj/item/circuitboard/mecha/ripley/peripherals, -/obj/item/circuitboard/mecha/ripley/peripherals, +/obj/item/circuitboard/exosuit/peripherals/work_loader, +/obj/item/circuitboard/exosuit/peripherals/work_loader, /turf/open/floor/corsat{ icon_state = "yellow" }, @@ -59320,6 +59287,16 @@ icon_state = "red" }, /area/corsat/sigma/hangar/checkpoint) +"tCi" = ( +/obj/structure/surface/rack, +/obj/item/tool/weldpack, +/obj/item/tool/weldingtool, +/obj/item/clothing/head/welding, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "yellow" + }, +/area/corsat/gamma/engineering) "tCn" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -59887,8 +59864,8 @@ /area/corsat/gamma/biodome) "tWD" = ( /obj/structure/surface/rack, -/obj/item/circuitboard/mecha/odysseus/peripherals, -/obj/item/circuitboard/mecha/odysseus/main, +/obj/item/circuitboard/exosuit/peripherals/alice, +/obj/item/circuitboard/exosuit/main/alice, /turf/open/floor/corsat{ dir = 1; icon_state = "yellow" @@ -60211,6 +60188,16 @@ icon_state = "red" }, /area/corsat/sigma/hangar/monorail/control) +"ukQ" = ( +/obj/structure/surface/rack, +/obj/item/tool/weldpack, +/obj/item/tool/weldingtool, +/obj/item/clothing/head/welding, +/obj/effect/spawner/random/toolbox, +/turf/open/floor/corsat{ + icon_state = "yellow" + }, +/area/corsat/sigma/south/engineering) "ukV" = ( /obj/structure/window_frame/corsat, /turf/open/floor/plating, @@ -80403,7 +80390,7 @@ bEp aZb pyL aiB -dGy +jpn lWG lWG lWG @@ -83310,7 +83297,7 @@ azE agQ qKN kyQ -bLH +dNs bOK mAt bLO @@ -93444,7 +93431,7 @@ aaG aaG aaX aaG -abW +bBX aco aaG acG @@ -94414,7 +94401,7 @@ aaG aaG aaG aaG -aaG +drp aaG aaG aaG @@ -96181,7 +96168,7 @@ roh mJy aRd aqi -aLr +tCi nxZ bQs aqi @@ -106608,7 +106595,7 @@ xhd auH bxL aCr -bNV +ukQ aEw aEw aEw @@ -110531,7 +110518,7 @@ auK bxJ byb aMi -bzU +ydU auR ylo ylo @@ -120957,7 +120944,7 @@ afi afi aeN afi -afO +eDz ajU aeB vkW @@ -121927,7 +121914,7 @@ afi afi afi afi -afi +dUj afi afi afi diff --git a/maps/map_files/DesertDam/Desert_Dam.dmm b/maps/map_files/DesertDam/Desert_Dam.dmm index db6ec755f363..dd9f0c499d8c 100644 --- a/maps/map_files/DesertDam/Desert_Dam.dmm +++ b/maps/map_files/DesertDam/Desert_Dam.dmm @@ -712,6 +712,7 @@ /turf/open/desert/dirt, /area/desert_dam/exterior/valley/valley_labs) "acq" = ( +/obj/structure/tunnel, /turf/open/desert/dirt{ icon_state = "rock1" }, @@ -9511,14 +9512,6 @@ icon_state = "desert_transition_edge1" }, /area/desert_dam/exterior/valley/valley_crashsite) -"aCH" = ( -/obj/structure/machinery/power/apc{ - dir = 1; - pixel_y = 24; - start_charge = 0 - }, -/turf/open/floor/interior/wood/alt, -/area/desert_dam/interior/dam_interior/east_tunnel_entrance) "aCI" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/interior/wood/alt, @@ -9575,17 +9568,6 @@ /obj/structure/window/framed/colony/reinforced, /turf/open/floor/plating, /area/desert_dam/interior/dam_interior/east_tunnel_entrance) -"aCT" = ( -/obj/structure/barricade/wooden{ - desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; - dir = 8; - health = 25000 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "bright_clean" - }, -/area/desert_dam/interior/dam_interior/east_tunnel_entrance) "aCU" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ @@ -9650,18 +9632,6 @@ }, /turf/open/asphalt, /area/desert_dam/exterior/valley/valley_northwest) -"aDd" = ( -/obj/structure/bed/chair, -/obj/structure/barricade/wooden{ - desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; - dir = 8; - health = 25000 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "bright_clean" - }, -/area/desert_dam/interior/dam_interior/east_tunnel_entrance) "aDe" = ( /obj/effect/decal/sand_overlay/sand1, /turf/open/asphalt{ @@ -9738,7 +9708,7 @@ /area/desert_dam/interior/dam_interior/east_tunnel_entrance) "aDq" = ( /obj/structure/surface/table/woodentable, -/obj/item/weapon/gun/shotgun/double/with_stock, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /turf/open/floor/interior/wood/alt, /area/desert_dam/interior/dam_interior/east_tunnel_entrance) "aDr" = ( @@ -10111,7 +10081,8 @@ icon_state = "S" }, /obj/structure/machinery/computer/shuttle/elevator_controller/elevator_call/trijent/omega{ - pixel_y = 32 + pixel_y = 32; + shuttleId = "trijentshuttle22" }, /turf/open/floor/prison{ dir = 8; @@ -14386,7 +14357,13 @@ /turf/open/desert/dirt, /area/desert_dam/exterior/valley/valley_telecoms) "aRB" = ( -/obj/docking_port/stationary/trijent_elevator/lz2, +/obj/docking_port/stationary/trijent_elevator/occupied{ + id = "trijent_lz2"; + name = "Lz2 Elevator"; + airlock_area = /area/shuttle/trijent_shuttle/lz2; + elevator_network = "B"; + roundstart_template = /datum/map_template/shuttle/trijent_elevator/B + }, /turf/open/gm/empty, /area/shuttle/trijent_shuttle/lz2) "aRC" = ( @@ -15539,6 +15516,9 @@ pixel_y = 24; start_charge = 0 }, +/obj/structure/machinery/light{ + dir = 4 + }, /turf/open/floor/prison{ dir = 5; icon_state = "red" @@ -16788,17 +16768,11 @@ }, /area/desert_dam/building/security/lobby) "aZt" = ( -/obj/structure/bed/chair{ - dir = 8 - }, /obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "red" + dir = 8 }, -/area/desert_dam/building/security/lobby) +/turf/open/floor/interior/wood, +/area/desert_dam/building/security/detective) "aZu" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -18132,9 +18106,6 @@ "bdL" = ( /obj/item/reagent_container/food/drinks/flask/detflask, /obj/item/clothing/head/det_hat, -/obj/structure/machinery/light{ - dir = 8 - }, /obj/structure/surface/table/woodentable/fancy, /turf/open/floor/interior/wood, /area/desert_dam/building/security/detective) @@ -19752,23 +19723,17 @@ /obj/structure/shuttle/diagonal{ icon_state = "swall_f9" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bjb" = ( /obj/structure/computerframe, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bjc" = ( /obj/structure/shuttle/diagonal{ icon_state = "swall_f5" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bjd" = ( /obj/structure/machinery/light{ @@ -19823,14 +19788,10 @@ /area/desert_dam/interior/dam_interior/hanger) "bjl" = ( /obj/structure/machinery/light, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bjm" = ( -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bjn" = ( /obj/structure/machinery/light, @@ -19912,9 +19873,7 @@ /area/desert_dam/interior/dam_interior/hanger) "bjA" = ( /obj/structure/machinery/door/unpowered/shuttle, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bjB" = ( /turf/closed/shuttle{ @@ -20072,9 +20031,7 @@ /obj/structure/bed/chair{ dir = 4 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bke" = ( /obj/structure/machinery/light{ @@ -20083,9 +20040,7 @@ /obj/structure/bed/chair{ dir = 8 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bkf" = ( /turf/open/desert/dirt{ @@ -20144,17 +20099,13 @@ /obj/structure/bed/chair{ dir = 4 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bkp" = ( /obj/structure/bed/chair{ dir = 8 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bkt" = ( /turf/open/desert/dirt{ @@ -20753,7 +20704,7 @@ /area/desert_dam/interior/dam_interior/tech_storage) "bmo" = ( /obj/structure/safe, -/obj/item/weapon/katana/replica, +/obj/item/weapon/sword/katana/replica, /obj/item/reagent_container/food/drinks/bottle/absinthe, /obj/structure/machinery/light{ dir = 1 @@ -20996,17 +20947,13 @@ /obj/structure/shuttle/diagonal{ icon_state = "swall_f10" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bne" = ( /obj/structure/shuttle/diagonal{ icon_state = "swall_f6" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bnf" = ( /obj/structure/shuttle/diagonal{ @@ -25397,17 +25344,6 @@ /obj/structure/window/reinforced, /turf/open/floor/interior/wood, /area/desert_dam/building/security/courtroom) -"bBU" = ( -/obj/structure/machinery/power/apc{ - dir = 8; - pixel_x = -30; - start_charge = 0 - }, -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkred2" - }, -/area/desert_dam/building/security/southern_hallway) "bBV" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -39995,7 +39931,7 @@ /turf/open/floor/interior/tatami, /area/desert_dam/building/bar/bar) "cxg" = ( -/obj/item/weapon/gun/shotgun/double/with_stock, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /turf/open/floor/interior/tatami, /area/desert_dam/building/bar/bar) "cxh" = ( @@ -60501,6 +60437,14 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/plating, /area/desert_dam/exterior/valley/valley_crashsite) +"fcu" = ( +/obj/effect/landmark/nightmare{ + insert_tag = "uppcrash-supply" + }, +/turf/open/asphalt{ + icon_state = "tile" + }, +/area/desert_dam/exterior/valley/valley_civilian) "fcE" = ( /obj/structure/flora/bush/desert{ icon_state = "tree_3" @@ -60906,6 +60850,12 @@ icon_state = "tile" }, /area/desert_dam/exterior/valley/south_valley_dam) +"goY" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/mars_cave{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/interior/lab_northeast/east_lab_containment) "gpi" = ( /obj/structure/prop/dam/large_boulder/boulder1, /turf/open/desert/dirt, @@ -61264,6 +61214,10 @@ icon_state = "cement_sunbleached13" }, /area/desert_dam/exterior/valley/valley_hydro) +"hyH" = ( +/obj/structure/tunnel, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_telecoms) "hzg" = ( /obj/effect/decal/sand_overlay/sand2, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, @@ -61519,7 +61473,13 @@ /turf/open/gm/river/desert/shallow, /area/desert_dam/interior/caves/temple) "ipQ" = ( -/obj/docking_port/stationary/trijent_elevator/omega, +/obj/docking_port/stationary/trijent_elevator/empty{ + id = "trijent_omega"; + name = "Omega Elevator"; + airlock_exit = "east"; + airlock_area = /area/shuttle/trijent_shuttle/omega; + elevator_network = "B" + }, /turf/open/gm/empty, /area/shuttle/trijent_shuttle/omega) "iqs" = ( @@ -61840,6 +61800,12 @@ icon_state = "delivery" }, /area/desert_dam/exterior/telecomm/lz1_south) +"jxN" = ( +/obj/structure/tunnel, +/turf/open/desert/dirt{ + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/valley_crashsite) "jAr" = ( /obj/structure/closet/crate/hydroponics/prespawned, /obj/effect/landmark/objective_landmark/close, @@ -62141,6 +62107,12 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/desert/dirt, /area/desert_dam/interior/caves/central_caves) +"kQd" = ( +/obj/structure/tunnel, +/turf/open/desert/rock/deep{ + icon_state = "rock3" + }, +/area/desert_dam/interior/caves/east_caves) "kRX" = ( /obj/structure/surface/table, /obj/item/storage/fancy/vials/random, @@ -62422,6 +62394,13 @@ "lNu" = ( /turf/open/desert/dirt, /area/desert_dam/exterior/valley/bar_valley_dam) +"lNN" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/jungle{ + bushes_spawn = 0; + icon_state = "grass_impenetrable" + }, +/area/desert_dam/interior/lab_northeast/east_lab_containment) "lOM" = ( /obj/effect/decal/sand_overlay/sand2/corner2, /turf/open/asphalt/cement, @@ -62508,7 +62487,8 @@ /area/desert_dam/exterior/valley/valley_labs) "mej" = ( /obj/structure/machinery/computer/shuttle/elevator_controller/elevator_call/trijent/lz2{ - pixel_x = 32 + pixel_x = 32; + shuttleId = "trijentshuttle22" }, /turf/open/floor/prison{ dir = 4; @@ -63349,7 +63329,13 @@ }, /area/desert_dam/interior/caves/central_caves) "pif" = ( -/obj/docking_port/stationary/trijent_elevator/engineering, +/obj/docking_port/stationary/trijent_elevator/empty{ + id = "trijent_engineering"; + name = "Engineering Elevator"; + airlock_exit = "east"; + airlock_area = /area/shuttle/trijent_shuttle/engi; + elevator_network = "A" + }, /turf/open/gm/empty, /area/shuttle/trijent_shuttle/engi) "pij" = ( @@ -63971,6 +63957,12 @@ icon_state = "cement_sunbleached18" }, /area/desert_dam/exterior/valley/south_valley_dam) +"ruJ" = ( +/obj/structure/tunnel, +/turf/open/desert/dirt{ + icon_state = "rock1" + }, +/area/desert_dam/exterior/valley/valley_medical) "ruS" = ( /turf/open/desert/dirt, /area/desert_dam/exterior/telecomm/lz1_valley) @@ -63981,7 +63973,13 @@ /turf/open/desert/rock/deep, /area/desert_dam/interior/caves/temple) "rxS" = ( -/obj/docking_port/stationary/trijent_elevator/lz1, +/obj/docking_port/stationary/trijent_elevator/occupied{ + id = "trijent_lz1"; + name = "Lz1 Elevator"; + elevator_network = "A"; + airlock_area = /area/shuttle/trijent_shuttle/lz1; + roundstart_template = /datum/map_template/shuttle/trijent_elevator/A + }, /turf/open/gm/empty, /area/shuttle/trijent_shuttle/lz1) "ryG" = ( @@ -64035,6 +64033,10 @@ icon_state = "wood" }, /area/desert_dam/interior/lab_northeast/east_lab_west_hallway) +"rEa" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/floor/plating, +/area/desert_dam/interior/lab_northeast/east_lab_biology) "rEH" = ( /obj/structure/surface/table, /obj/effect/landmark/objective_landmark/close, @@ -64067,6 +64069,12 @@ "rHw" = ( /turf/open/floor/plating, /area/desert_dam/exterior/telecomm/lz2_containers) +"rIY" = ( +/obj/structure/tunnel, +/turf/open/desert/dirt{ + icon_state = "rock1" + }, +/area/desert_dam/exterior/valley/valley_hydro) "rJA" = ( /obj/structure/lz_sign/dam_sign, /turf/open/desert/dirt{ @@ -64430,6 +64438,15 @@ icon_state = "desert_transition_corner1" }, /area/desert_dam/interior/caves/temple) +"sRl" = ( +/obj/effect/landmark/nightmare{ + insert_tag = "uppcrash" + }, +/turf/open/desert/dirt{ + dir = 6; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/valley_hydro) "sUe" = ( /obj/effect/decal/sand_overlay/sand1{ dir = 1 @@ -64511,6 +64528,10 @@ /obj/structure/desertdam/decals/road_edge, /turf/open/asphalt, /area/desert_dam/exterior/valley/valley_labs) +"tcB" = ( +/obj/structure/machinery/camera/autoname/lz_camera, +/turf/open/floor/plating, +/area/desert_dam/exterior/landing_pad_two) "tdf" = ( /obj/structure/surface/table, /obj/item/folder/yellow, @@ -64941,6 +64962,10 @@ icon_state = "dirt2" }, /area/desert_dam/exterior/valley/valley_crashsite) +"uHT" = ( +/obj/structure/machinery/camera/autoname/lz_camera, +/turf/open/floor/plating, +/area/desert_dam/exterior/landing_pad_one) "uKo" = ( /obj/structure/platform/mineral/sandstone/runed{ dir = 4 @@ -65097,6 +65122,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/asphalt, /area/desert_dam/exterior/valley/valley_hydro) +"vph" = ( +/obj/structure/tunnel, +/turf/open/desert/dirt{ + dir = 4; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/south_valley_dam) "vpn" = ( /obj/structure/machinery/landinglight/ds2/delayone{ dir = 8 @@ -65238,6 +65270,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/asphalt, /area/desert_dam/exterior/valley/valley_hydro) +"vHx" = ( +/obj/structure/tunnel, +/turf/open/desert/dirt{ + icon_state = "rock1" + }, +/area/desert_dam/exterior/valley/valley_civilian) "vHQ" = ( /turf/open/gm/empty, /area/shuttle/trijent_shuttle/omega) @@ -65644,6 +65682,11 @@ /obj/structure/flora/grass/desert/lightgrass_5, /turf/open/desert/dirt, /area/desert_dam/exterior/valley/valley_hydro) +"xec" = ( +/obj/structure/flora/grass/desert/lightgrass_1, +/obj/structure/tunnel, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) "xgA" = ( /obj/structure/flora/grass/tallgrass/desert/corner{ dir = 5 @@ -69492,7 +69535,7 @@ ceA aSI chG ceA -ceA +hyH acs aWc aWF @@ -70036,6 +70079,7 @@ dTs cDb cDK cDY +tcB cDY cDY cDY @@ -70044,6 +70088,7 @@ cDY cDY cDY cDY +tcB cDY cDY cDY @@ -70052,9 +70097,7 @@ cDY cDY cDY cDY -cDY -cDY -cDY +tcB cDY cMD cBS @@ -70289,7 +70332,7 @@ cDY cDY cDY cDY -cFa +cDY cML cBS cUl @@ -71215,7 +71258,7 @@ cDY cDY cDY cDY -cDY +cFa cDY cDY cDY @@ -72376,6 +72419,7 @@ cDc cDb cDV cDY +tcB cDY cDY cDY @@ -72384,6 +72428,7 @@ cDY cDY cDY cDY +tcB cDY cDY cDY @@ -72392,9 +72437,7 @@ cDY cDY cDY cDY -cDY -cDY -cDY +tcB cDY cNb cBS @@ -72898,6 +72941,7 @@ aUD aVj acI aWh +uHT aWh aWh aWh @@ -72906,6 +72950,7 @@ aWh aWh aWh aWh +uHT aWh aWh aWh @@ -72914,9 +72959,7 @@ aWh aWh aWh aWh -aWh -aWh -aWh +uHT aWh bAF aVi @@ -73151,7 +73194,7 @@ aWh aWh aWh aWh -dGU +aWh bDO aVi aVh @@ -74077,7 +74120,7 @@ aWh aWh aWh aWh -aWh +dGU aWh aWh aWh @@ -74409,7 +74452,7 @@ ceA act aVz aXD -aZt +aXD aXD aXD blY @@ -74880,7 +74923,7 @@ aXE aZJ bdL bjI -aXM +aZt aVB boW bqy @@ -75238,6 +75281,7 @@ aUD aVg acJ aWh +uHT aWh aWh aWh @@ -75246,6 +75290,7 @@ aWh aWh aWh aWh +uHT aWh aWh aWh @@ -75254,9 +75299,7 @@ aWh aWh aWh aWh -aWh -aWh -aWh +uHT aWh bFg aVi @@ -76295,7 +76338,7 @@ bsS bvy bsS bsS -bBU +bsS bFr aQH bIX @@ -82395,7 +82438,7 @@ dTs dTs dTs dTs -cMo +sRl dNS cZw xgA @@ -85383,8 +85426,8 @@ dTs dTs aEa aEa -aCS -aCS +aEa +aEa aEa aEa dTs @@ -85617,8 +85660,8 @@ dTs dTs aEa aCD -aCT -aDd +aCF +aDg aDn aEa aDt @@ -86318,7 +86361,7 @@ dTs dTs dTs aEa -aCH +aCJ aCI aDh aCJ @@ -88649,7 +88692,7 @@ bLr dTs dTs nmr -iwh +vph pvs dTs dTs @@ -94103,7 +94146,7 @@ dTs dTs dTs dTs -dNp +rIY cMl dNS dNS @@ -100035,7 +100078,7 @@ amq afI ana amZ -ana +goY agL afG arH @@ -103493,7 +103536,7 @@ cCH clZ clZ crW -cko +fcu cmc cpY cpY @@ -104680,7 +104723,7 @@ dTs dTs dTs dTs -cuw +vHx cwo cux cmH @@ -104942,12 +104985,12 @@ acu afG afI akW -akW +lNN agL amn afI akW -akW +lNN agL afG aqG @@ -108045,7 +108088,7 @@ dTs dTs dTs dTs -agD +jxN adA aEZ aFi @@ -109400,7 +109443,7 @@ alI alI aoI aoN -apg +rEa apk apg apy @@ -110572,7 +110615,7 @@ aoI aoN apg apk -apg +rEa apy afP amx @@ -110686,7 +110729,7 @@ civ cdA cdw aOG -cgc +ruJ dTs dTs dTs @@ -119412,7 +119455,7 @@ clZ crW cWV xOb -cpa +xec aVd bby bvw @@ -120177,7 +120220,7 @@ dTs dTs dTs acY -acY +kQd dTs dTs dTs diff --git a/maps/map_files/DesertDam/sprinkles/10.damtemple_intact.dmm b/maps/map_files/DesertDam/sprinkles/10.damtemple_intact.dmm index 1dd3650ad747..d0ebbc5039d5 100644 --- a/maps/map_files/DesertDam/sprinkles/10.damtemple_intact.dmm +++ b/maps/map_files/DesertDam/sprinkles/10.damtemple_intact.dmm @@ -298,7 +298,7 @@ dir = 1; icon_state = "phoronrwindow" }, -/obj/item/weapon/katana{ +/obj/item/weapon/sword/katana{ color = "#b2ffff"; desc = "A finely made Japanese sword, with a well sharpened blade. It appears to have cobalt infused within the blade. There are Japanese engravings on the blade which say 'He who wields this sword becomes the next Titan.'."; name = "ancient katana"; @@ -548,10 +548,10 @@ /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" }, -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ pixel_x = 7 }, -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ pixel_x = -7 }, /turf/open/floor/sandstone/runed, diff --git a/maps/map_files/DesertDam/standalone/crashlanding-upp-alt1.dmm b/maps/map_files/DesertDam/standalone/crashlanding-upp-alt1.dmm new file mode 100644 index 000000000000..94258193f75b --- /dev/null +++ b/maps/map_files/DesertDam/standalone/crashlanding-upp-alt1.dmm @@ -0,0 +1,1939 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"bm" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_top_to_bottom, +/area/desert_dam/exterior/valley/valley_civilian) +"bz" = ( +/turf/closed/shuttle/ert{ + icon_state = "T7"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"bV" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 9 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"cn" = ( +/turf/closed/shuttle/ert{ + icon_state = "T5"; + name = "Fulcrum" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"cp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached12" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"cG" = ( +/obj/structure/flora/grass/desert/lightgrass_9, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"dv" = ( +/obj/effect/landmark/monkey_spawn, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"dz" = ( +/obj/structure/desertdam/decals/road_stop{ + icon_state = "stop_decal5" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"dN" = ( +/obj/structure/flora/grass/desert/lightgrass_1, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"dP" = ( +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached18" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"eb" = ( +/obj/effect/spawner/gibspawner/human, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"eC" = ( +/turf/closed/shuttle/ert{ + icon_state = "T17"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"eF" = ( +/turf/open/desert/dirt{ + dir = 6; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"fa" = ( +/turf/closed/shuttle/ert{ + icon_state = "T9"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"fg" = ( +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_top_to_bottom, +/area/desert_dam/exterior/valley/valley_civilian) +"fp" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached12" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"ft" = ( +/turf/closed/wall, +/area/desert_dam/exterior/valley/valley_civilian) +"fA" = ( +/turf/closed/shuttle/ert{ + icon_state = "leftengine_2"; + opacity = 0; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"fL" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"gb" = ( +/obj/structure/desertdam/decals/road_edge, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"ge" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"hK" = ( +/obj/structure/prop/invuln/fire{ + pixel_x = -7; + pixel_y = 17 + }, +/turf/closed/shuttle/ert{ + icon_state = "upp4"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"hP" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 5 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"ig" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/floor/plating, +/area/desert_dam/exterior/valley/valley_civilian) +"ih" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/shuttle/ert{ + icon_state = "upp21"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"im" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 5 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached18" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"jN" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached19" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"jU" = ( +/obj/effect/decal/cleanable/blood/splatter, +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_top_to_bottom, +/area/desert_dam/exterior/valley/valley_civilian) +"jX" = ( +/obj/effect/decal/sand_overlay/sand1, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"kd" = ( +/turf/closed/shuttle/ert{ + icon_state = "leftengine_1"; + opacity = 0; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"kV" = ( +/obj/structure/flora/grass/desert/lightgrass_2, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"la" = ( +/turf/closed/wall/rock/orange, +/area/desert_dam/exterior/rock) +"ly" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/desert_dam/exterior/valley/valley_civilian) +"mk" = ( +/obj/structure/closet/crate/ammo, +/obj/item/explosive/grenade/high_explosive/upp, +/obj/item/explosive/grenade/high_explosive/upp, +/obj/item/explosive/grenade/high_explosive/upp, +/obj/item/explosive/grenade/high_explosive/upp, +/obj/item/explosive/grenade/high_explosive/upp, +/obj/item/explosive/grenade/high_explosive/upp, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"mt" = ( +/obj/structure/machinery/light/double{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_top_to_bottom, +/area/desert_dam/exterior/valley/valley_civilian) +"mw" = ( +/turf/open/desert/dirt{ + dir = 10; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"mM" = ( +/turf/open/desert/dirt{ + dir = 9; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"mN" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal4" + }, +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 4 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"nd" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 6 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"nj" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"nn" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal4" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"nA" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp4"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"nH" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 8 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"nX" = ( +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"of" = ( +/obj/structure/flora/grass/tallgrass/desert/corner, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"oj" = ( +/obj/effect/decal/cleanable/blood/splatter, +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_left, +/area/desert_dam/exterior/valley/valley_civilian) +"os" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, +/area/desert_dam/exterior/valley/valley_civilian) +"oL" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_top_to_bottom, +/area/desert_dam/exterior/valley/valley_civilian) +"oX" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal9" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"pF" = ( +/turf/closed/shuttle/ert{ + icon_state = "T14"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"qD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement_sunbleached, +/area/desert_dam/exterior/valley/valley_civilian) +"qM" = ( +/obj/structure/closet/crate/ammo, +/obj/item/ammo_magazine/rifle/type71/ap, +/obj/item/ammo_magazine/rifle/type71/ap, +/obj/item/ammo_magazine/rifle/type71/ap, +/obj/item/ammo_magazine/rifle/type71/ap, +/obj/item/ammo_magazine/rifle/type71/ap, +/obj/item/ammo_magazine/rifle/type71/ap, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"sl" = ( +/turf/open/desert/dirt{ + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"ss" = ( +/obj/structure/flora/bush/desert/cactus/multiple{ + icon_state = "cacti_7" + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"sJ" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"ta" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal10" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"uw" = ( +/obj/effect/decal/sand_overlay/sand1, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"uG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt/cement_sunbleached, +/area/desert_dam/exterior/valley/valley_civilian) +"uK" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal4" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"uQ" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal4" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"vn" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 9 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached12" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"vz" = ( +/obj/structure/closet/crate/ammo, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/weapon/gun/rifle/type71, +/obj/item/weapon/gun/rifle/type71, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"vJ" = ( +/obj/structure/prop/invuln/fire, +/turf/closed/shuttle/ert{ + icon_state = "T3"; + name = "Buran"; + opacity = 0 + }, +/area/desert_dam/exterior/valley/valley_civilian) +"wl" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 5 + }, +/turf/open/asphalt{ + icon_state = "tile" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"xp" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal10" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"xt" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"xz" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating, +/area/desert_dam/exterior/valley/valley_civilian) +"xE" = ( +/turf/open/shuttle/dropship/can_surgery/light_grey_top_right, +/area/desert_dam/exterior/valley/valley_civilian) +"xK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood{ + layer = 3 + }, +/obj/structure/girder, +/turf/open/floor/plating, +/area/desert_dam/exterior/valley/valley_civilian) +"xM" = ( +/obj/structure/flora/bush/desert, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"xP" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, +/area/desert_dam/exterior/valley/valley_civilian) +"yl" = ( +/turf/closed/shuttle/ert{ + icon_state = "T19"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"ym" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"yU" = ( +/obj/structure/prop/invuln/fire{ + pixel_x = -3; + pixel_y = 6 + }, +/turf/closed/shuttle/ert{ + icon_state = "upp20"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"zs" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached12" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"zE" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"zO" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 8 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"As" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 10 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"AW" = ( +/turf/open/desert/dirt{ + dir = 1; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Bk" = ( +/turf/closed/shuttle/ert{ + icon_state = "T4"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"BE" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 9 + }, +/turf/open/asphalt/cement_sunbleached, +/area/desert_dam/exterior/valley/valley_civilian) +"BJ" = ( +/obj/structure/flora/grass/desert/lightgrass_3, +/obj/effect/decal/sand_overlay/sand1{ + dir = 9 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"BM" = ( +/obj/structure/flora/grass/desert/lightgrass_3, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"BU" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached18" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"BY" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal10" + }, +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"CB" = ( +/obj/structure/flora/grass/desert/lightgrass_11, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"CL" = ( +/obj/structure/bed/chair/dropship/passenger, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Dd" = ( +/obj/structure/prop/invuln/fire{ + pixel_x = -7; + pixel_y = 17 + }, +/turf/closed/shuttle/ert{ + icon_state = "rightengine_2"; + opacity = 0; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"DO" = ( +/obj/structure/flora/grass/desert/lightgrass_9, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Eh" = ( +/obj/structure/flora/grass/desert/lightgrass_1, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"EF" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"EL" = ( +/obj/structure/flora/grass/desert/lightgrass_2, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"EW" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 6 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"FG" = ( +/obj/structure/flora/grass/desert/lightgrass_8, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"Gh" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 4 + }, +/turf/open/asphalt{ + icon_state = "tile" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Gt" = ( +/turf/closed/shuttle/ert{ + icon_state = "T4"; + name = "Buran"; + opacity = 0 + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Hm" = ( +/turf/closed/shuttle/ert{ + icon_state = "T1"; + name = "Buran"; + opacity = 0 + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Ho" = ( +/turf/open/desert/dirt{ + dir = 8; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Hs" = ( +/obj/structure/prop/invuln/fire{ + pixel_x = -8; + pixel_y = 10 + }, +/turf/closed/shuttle/ert{ + icon_state = "rightengine_1"; + opacity = 0; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Hu" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 10 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"HP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/turf/open/asphalt/cement_sunbleached, +/area/desert_dam/exterior/valley/valley_civilian) +"IS" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp16"; + name = "Fulcrum" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Jb" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 6 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"Jd" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 4 + }, +/obj/effect/decal/sand_overlay/sand1/corner1, +/turf/open/asphalt{ + icon_state = "tile" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Jy" = ( +/obj/structure/prop/invuln/fire, +/turf/closed/shuttle/ert{ + icon_state = "leftengine_2"; + opacity = 0; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"JG" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"JW" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp25"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Kr" = ( +/turf/closed/shuttle/ert{ + icon_state = "T10"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"KC" = ( +/turf/open/desert/dirt{ + dir = 8; + icon_state = "desert_transition_corner1" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"KX" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached13" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Lc" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal9" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"Lp" = ( +/obj/structure/prop/invuln/fire{ + pixel_x = 8; + pixel_y = 10 + }, +/turf/closed/shuttle/ert{ + icon_state = "upp5"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Lt" = ( +/obj/effect/spawner/gibspawner/human, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/desert_dam/exterior/valley/valley_civilian) +"Lv" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached15" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"LD" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 1 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"Mo" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/turf/open/asphalt{ + icon_state = "tile" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Mp" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 5 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"MM" = ( +/turf/closed/shuttle/ert{ + icon_state = "T5"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Nt" = ( +/turf/closed/shuttle/ert{ + icon_state = "T7"; + name = "Buran"; + opacity = 0 + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Ny" = ( +/obj/structure/closet/crate/ammo, +/obj/item/ammo_magazine/pkp, +/obj/item/weapon/gun/pkp, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"NP" = ( +/turf/closed/shuttle/ert{ + icon_state = "rightengine_2"; + opacity = 0; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Ou" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/sand_overlay/sand1{ + dir = 9 + }, +/turf/open/asphalt/cement_sunbleached, +/area/desert_dam/exterior/valley/valley_civilian) +"OB" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal4" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 6 + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"OG" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_top_to_bottom, +/area/desert_dam/exterior/valley/valley_civilian) +"OJ" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 9 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Pc" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal7" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"Pf" = ( +/obj/structure/flora/grass/desert/lightgrass_12, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"Pr" = ( +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"PI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"PS" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp20"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Qc" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 5 + }, +/obj/effect/spawner/gibspawner/human, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Qj" = ( +/obj/structure/machinery/colony_floodlight, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"Rq" = ( +/turf/open/shuttle/dropship/can_surgery/light_grey_top_left, +/area/desert_dam/exterior/valley/valley_civilian) +"Ry" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_right, +/area/desert_dam/exterior/valley/valley_civilian) +"RG" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 9 + }, +/turf/open/asphalt{ + icon_state = "tile" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Sb" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Sf" = ( +/turf/closed/shuttle/ert{ + icon_state = "T14"; + name = "Buran"; + opacity = 0 + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Sm" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal8" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"SE" = ( +/obj/structure/flora/grass/desert/lightgrass_2, +/obj/effect/decal/sand_overlay/sand1{ + dir = 10 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"SN" = ( +/obj/effect/spawner/gibspawner/human, +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, +/area/desert_dam/exterior/valley/valley_civilian) +"SV" = ( +/obj/structure/prop/invuln/fire{ + pixel_x = -7; + pixel_y = 24 + }, +/turf/closed/shuttle/ert{ + icon_state = "T3"; + name = "Buran"; + opacity = 0 + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Td" = ( +/obj/structure/flora/bush/desert/cactus, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"Tn" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp5"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"TT" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/desert_dam/exterior/valley/valley_civilian) +"Ug" = ( +/obj/structure/bed/chair/dropship/pilot{ + dir = 1 + }, +/obj/structure/machinery/computer/cameras{ + desc = "The flight controls for a Mi-220 Attack Dropship. these controls look pretty banged up, and there's some blood covering the screen.."; + name = "\improper 'Buran' flight controls"; + network = null; + pixel_y = 21 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship/can_surgery/dark_grey, +/area/desert_dam/exterior/valley/valley_civilian) +"UB" = ( +/obj/structure/prop/invuln/fire{ + pixel_x = -3; + pixel_y = 6 + }, +/turf/closed/shuttle/ert{ + icon_state = "rightengine_1"; + opacity = 0; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"UK" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"VD" = ( +/obj/structure/flora/bush/desert/cactus{ + icon_state = "cactus_8" + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"VK" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal2" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"Wb" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached2" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Wy" = ( +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, +/area/desert_dam/exterior/valley/valley_civilian) +"WU" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt{ + icon_state = "tile" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"WW" = ( +/turf/open/asphalt{ + icon_state = "tile" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Xn" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/effect/decal/sand_overlay/sand1{ + dir = 9 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Xq" = ( +/turf/template_noop, +/area/template_noop) +"XT" = ( +/obj/structure/flora/tree/joshua, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Yr" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp27"; + name = "Buran"; + opacity = 0 + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Yv" = ( +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"YD" = ( +/obj/structure/fence, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"YZ" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Zm" = ( +/obj/structure/flora/grass/tallgrass/desert, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"Zz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/prop/invuln/fire{ + pixel_x = 8; + pixel_y = 10 + }, +/turf/closed/shuttle/ert{ + icon_state = "T2"; + name = "Buran"; + opacity = 0 + }, +/area/desert_dam/exterior/valley/valley_civilian) + +(1,1,1) = {" +la +la +la +la +la +la +la +la +la +la +la +la +la +la +la +la +Mo +Mo +Mo +Jd +Mo +Mo +Mo +Gh +WW +uK +Pr +Xq +Xq +Xq +"} +(2,1,1) = {" +la +la +la +la +la +la +la +la +la +la +la +la +la +la +la +ft +YD +YD +YD +ft +YD +YD +YD +ft +jN +uK +PI +Xq +Xq +Xq +"} +(3,1,1) = {" +la +la +la +la +la +la +la +la +la +la +la +la +la +la +Bk +sl +nX +xM +VD +nX +Jb +Xn +Hm +SV +vJ +Gt +Pr +Xq +Xq +Xq +"} +(4,1,1) = {" +la +la +la +la +la +la +la +la +la +la +la +la +la +Nt +cn +eF +Eh +Td +nX +uw +OJ +nH +As +xK +Zz +Sf +Pr +Xq +Xq +Xq +"} +(5,1,1) = {" +yU +nA +IS +nA +la +la +la +la +la +la +la +la +Nt +fa +Jy +kd +FG +nX +ss +uw +Mp +Sb +zO +ge +zE +OB +JG +Xq +Xq +Xq +"} +(6,1,1) = {" +Yr +Ug +ih +Ug +As +la +la +la +la +la +la +la +Nt +Kr +NP +Hs +cG +nX +RG +Wb +KX +KX +KX +KX +Lv +uQ +sJ +Xq +Xq +Xq +"} +(7,1,1) = {" +Yr +fg +OG +oL +jX +la +la +la +la +la +la +la +la +CB +nj +nj +SE +nX +WU +dP +oX +gb +gb +gb +gb +Pc +Pr +Xq +Xq +Xq +"} +(8,1,1) = {" +JW +Tn +TT +xz +Yv +nj +As +la +la +la +OJ +nj +nj +YZ +Yv +Yv +Yv +Qj +wl +BU +uK +Pr +Pr +Pr +dz +Pr +PI +Xq +Xq +Xq +"} +(9,1,1) = {" +nX +nX +nX +Mp +ym +Yv +Yv +PS +hK +nA +nA +xz +ig +Yv +Yv +DO +Yv +As +fL +im +mN +Pr +Pr +Pr +dz +Pr +Pr +Xq +Xq +Xq +"} +(10,1,1) = {" +nX +nX +Pf +BM +xt +XT +Yv +xz +Rq +mt +jU +OG +oj +Yv +Yv +Yv +Yv +EF +nX +nX +ta +VK +VK +VK +Sm +Pr +Pr +Xq +Xq +Xq +"} +(11,1,1) = {" +FG +EW +hP +nX +xt +Yv +Yv +ly +os +CL +mk +Ny +SN +kV +dN +Yv +Yv +Yv +As +nX +Lc +gb +gb +gb +Pc +Pr +PI +Xq +Xq +Xq +"} +(12,1,1) = {" +EW +Zm +LD +BJ +Yv +Yv +Yv +Lt +Wy +CL +vz +qM +xP +Yv +Yv +Yv +Yv +Yv +jX +eb +nn +Pr +Pr +Pr +dz +Pr +Pr +Xq +Xq +Xq +"} +(13,1,1) = {" +of +Zm +bV +xt +Yv +Yv +UK +xz +xE +bm +OG +OG +Ry +Yv +Yv +Yv +Yv +Yv +nd +nX +nn +Pr +Pr +Pr +dz +Pr +Pr +Xq +Xq +Xq +"} +(14,1,1) = {" +Hu +bV +cG +xt +Yv +nd +nX +TT +Tn +Lp +Tn +Tn +xz +Yv +Yv +Yv +ym +jX +nX +vn +BY +VK +VK +VK +Sm +Pr +PI +Xq +Xq +Xq +"} +(15,1,1) = {" +EL +nX +nX +Qc +nd +nX +mM +mw +la +la +la +la +yl +fA +kd +Yv +Yv +nd +nX +fp +oX +gb +gb +gb +Pc +Pr +Pr +Xq +Xq +Xq +"} +(16,1,1) = {" +nX +nX +mM +Ho +mw +mM +KC +la +la +la +la +la +eC +Dd +UB +Yv +nd +nX +BE +zs +uK +Pr +Pr +Pr +dz +Pr +Pr +Xq +Xq +Xq +"} +(17,1,1) = {" +nX +nX +AW +la +la +la +la +la +la +la +la +la +bz +MM +xt +jX +nX +Ou +HP +cp +uK +Pr +Pr +Pr +dz +Pr +Pr +Xq +Xq +Xq +"} +(18,1,1) = {" +dv +mM +la +la +la +la +la +la +la +la +la +la +la +pF +xt +nd +nX +uG +qD +cp +xp +VK +VK +VK +VK +VK +VK +Xq +Xq +Xq +"} +(19,1,1) = {" +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +"} +(20,1,1) = {" +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +"} +(21,1,1) = {" +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +"} +(22,1,1) = {" +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +"} +(23,1,1) = {" +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +"} +(24,1,1) = {" +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +"} +(25,1,1) = {" +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +"} +(26,1,1) = {" +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +"} diff --git a/maps/map_files/DesertDam/standalone/crashlanding-upp-bar.dmm b/maps/map_files/DesertDam/standalone/crashlanding-upp-bar.dmm new file mode 100644 index 000000000000..9cca7b5c3558 --- /dev/null +++ b/maps/map_files/DesertDam/standalone/crashlanding-upp-bar.dmm @@ -0,0 +1,4491 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp25"; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"ab" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal7" + }, +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"am" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal11" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 6 + }, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"aw" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/obj/item/ammo_casing/bullet, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached12" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"aO" = ( +/obj/item/prop/colony/used_flare, +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/bar) +"aT" = ( +/turf/closed/shuttle/ert{ + icon_state = "T16"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"aY" = ( +/obj/item/reagent_container/food/drinks/flask/canteen{ + desc = "You take a sip from your trusty UPP canteen..." + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"be" = ( +/obj/structure/closet/secure_closet/bar, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/backroom) +"bf" = ( +/obj/structure/desertdam/decals/road_edge, +/obj/effect/spawner/gibspawner/xeno, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"bu" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "grimy" + }, +/area/desert_dam/building/bar/bar) +"bz" = ( +/obj/structure/bed/roller, +/obj/structure/machinery/iv_drip, +/obj/effect/decal/cleanable/blood, +/obj/item/prop/colony/usedbandage{ + dir = 5 + }, +/obj/effect/spawner/gibspawner/human, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_left, +/area/desert_dam/building/bar/bar) +"bC" = ( +/obj/structure/barricade/sandbags/wired{ + dir = 1 + }, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/backroom) +"bI" = ( +/obj/item/ammo_casing/bullet, +/turf/open/desert/dirt{ + dir = 5; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"bJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"bN" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"bO" = ( +/turf/closed/shuttle/ert{ + icon_state = "T4"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"bP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/disposalpipe/segment, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"bY" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp4"; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"cl" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal2" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"cu" = ( +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/desert_dam/building/bar/bar) +"cH" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"cI" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar_restroom) +"cL" = ( +/obj/effect/decal/cleanable/blood, +/obj/structure/bed/chair/dropship/pilot{ + dir = 1 + }, +/obj/structure/machinery/computer/cameras{ + desc = "The flight controls for a Mi-220 Attack Dropship. these controls look pretty banged up, and there's some blood covering the screen.."; + name = "\improper 'Fulcrum' flight controls"; + network = null; + pixel_y = 21 + }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, +/area/desert_dam/building/bar/bar) +"cR" = ( +/obj/effect/landmark/crap_item, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"cZ" = ( +/turf/open/asphalt/cement{ + icon_state = "cement2" + }, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"da" = ( +/obj/structure/flora/grass/desert/heavygrass_4, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"ds" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/shuttle/ert{ + icon_state = "T11"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"du" = ( +/obj/item/stack/rods, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/backroom) +"dJ" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/asphalt/cement{ + icon_state = "cement14" + }, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"dQ" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal4" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"dR" = ( +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"dX" = ( +/obj/structure/surface/table/almayer, +/obj/item/ammo_box/rounds/type71{ + bullet_amount = 129 + }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, +/area/desert_dam/building/bar/bar) +"ee" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"eh" = ( +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/bar_restroom) +"ej" = ( +/obj/structure/flora/grass/desert/lightgrass_2, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"eD" = ( +/obj/structure/flora/grass/tallgrass/desert, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"eI" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal3" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"eJ" = ( +/obj/structure/desertdam/decals/road_edge, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"eK" = ( +/obj/structure/fence, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"eQ" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal9" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"eT" = ( +/obj/structure/barricade/sandbags/wired{ + dir = 4 + }, +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"eU" = ( +/obj/structure/surface/table/almayer, +/obj/item/trash/semki, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"eV" = ( +/obj/structure/surface/table/almayer, +/obj/item/clothing/accessory/patch/upp{ + pixel_y = -6; + pixel_x = -7 + }, +/obj/item/paper/bigred/upp{ + pixel_y = 4; + pixel_x = 3; + icon_state = "paper_words"; + item_state = "paper_words" + }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, +/area/desert_dam/building/bar/bar) +"fk" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached13" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"fy" = ( +/obj/structure/flora/grass/desert/lightgrass_6, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"fL" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal2" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/obj/item/ammo_magazine/rifle/type71/heap{ + current_rounds = 0 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"fM" = ( +/obj/item/stack/rods, +/turf/open/floor{ + icon_state = "grimy" + }, +/area/desert_dam/building/bar/bar) +"fN" = ( +/obj/structure/disposalpipe/segment, +/obj/item/stack/sandbags, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"fP" = ( +/obj/structure/bed/bedroll, +/obj/item/bedsheet/brown, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/desert_dam/building/bar/bar) +"fR" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached13" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"ga" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/obj/item/prop/colony/used_flare, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached13" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"gm" = ( +/obj/structure/desertdam/decals/road_edge, +/turf/open/floor/plating, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"gA" = ( +/obj/structure/disposalpipe/segment, +/obj/item/ammo_casing/bullet, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"gM" = ( +/obj/item/trash/candy, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"gN" = ( +/obj/item/ammo_casing/bullet, +/obj/effect/decal/cleanable/blood, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"gP" = ( +/obj/structure/flora/grass/desert/lightgrass_4, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"gR" = ( +/obj/effect/decal/sand_overlay/sand1, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"hc" = ( +/obj/structure/prop/dam/wide_boulder/boulder1, +/turf/open/desert/dirt{ + dir = 9; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"hd" = ( +/obj/structure/flora/grass/desert/lightgrass_8, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"hi" = ( +/obj/item/ammo_casing/bullet, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"hk" = ( +/obj/structure/machinery/squeezer, +/turf/open/floor/plating, +/area/desert_dam/building/bar/backroom) +"hm" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp5"; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"hn" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal2" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/obj/effect/spawner/gibspawner/xeno, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"hv" = ( +/turf/closed/wall/wood, +/area/desert_dam/building/bar/bar) +"hx" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp20"; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"hF" = ( +/obj/structure/machinery/light/double{ + dir = 8 + }, +/obj/effect/landmark/survivor_spawner/upp_medic, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/desert_dam/building/bar/bar) +"hH" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal4" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"hJ" = ( +/obj/item/ammo_box/rounds/type71/heap/empty{ + bullet_amount = 0 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"hO" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"hT" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "sterile_white" + }, +/area/desert_dam/building/bar/bar_restroom) +"hY" = ( +/obj/structure/bed/stool, +/turf/open/floor{ + icon_state = "grimy" + }, +/area/desert_dam/building/bar/bar) +"if" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/rods, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"ig" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 5 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"in" = ( +/obj/item/prop/colony/used_flare, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"is" = ( +/turf/open/desert/dirt{ + icon_state = "desert_transition_corner1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"iy" = ( +/turf/closed/wall/wood, +/area/desert_dam/building/bar/backroom) +"iz" = ( +/obj/structure/flora/bush/desert/cactus, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"iI" = ( +/obj/item/ammo_casing/bullet, +/turf/open/desert/rock, +/area/desert_dam/exterior/valley/bar_valley_dam) +"iL" = ( +/obj/structure/prop/dam/boulder/boulder1, +/turf/open/desert/dirt{ + dir = 1; + icon_state = "desert_transition_corner1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"iV" = ( +/obj/effect/landmark/crap_item, +/turf/open/floor/plating, +/area/desert_dam/building/bar/backroom) +"jf" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = -7; + pixel_y = 35 + }, +/obj/structure/prop/invuln/pipe_water{ + pixel_y = 11 + }, +/obj/item/reagent_container/glass/bucket/mopbucket, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"jj" = ( +/obj/item/trash/cheesie, +/obj/item/stack/sheet/wood, +/turf/open/floor{ + icon_state = "grimy" + }, +/area/desert_dam/building/bar/bar) +"jm" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/structure/barricade/sandbags/wired{ + dir = 8 + }, +/obj/item/prop/colony/usedbandage{ + dir = 5; + pixel_y = 8 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"jp" = ( +/obj/structure/desertdam/decals/road_edge, +/obj/structure/machinery/door/poddoor/almayer/locked{ + dir = 2; + id = "dam_checkpoint_west"; + name = "\improper Checkpoint Lock" + }, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"jr" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal2" + }, +/obj/structure/machinery/door/poddoor/almayer/locked{ + dir = 2; + id = "dam_checkpoint_west"; + name = "\improper Checkpoint Lock" + }, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"jt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/interior/wood/alt, +/area/desert_dam/building/bar/bar) +"jw" = ( +/obj/item/ammo_casing/bullet, +/turf/open/desert/dirt{ + dir = 6; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"jy" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony{ + dir = 1; + name = "\improper Bar Backroom" + }, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/backroom) +"jC" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"jI" = ( +/obj/structure/barricade/sandbags/wired{ + dir = 4 + }, +/turf/open/desert/dirt{ + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"jJ" = ( +/obj/structure/flora/grass/desert/lightgrass_1, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"kf" = ( +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"kh" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal2" + }, +/obj/item/ammo_casing/bullet, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"ki" = ( +/obj/item/stack/sandbags, +/turf/open/desert/dirt{ + dir = 10; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"kk" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached13" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"kp" = ( +/obj/effect/decal/cleanable/blood, +/obj/item/prop/almayer/flight_recorder/colony, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/desert_dam/building/bar/bar) +"kB" = ( +/obj/structure/barricade/sandbags/wired{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached14" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"kD" = ( +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"kM" = ( +/turf/closed/shuttle/ert{ + icon_state = "rightengine_2"; + opacity = 0; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"kQ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/desert_dam/building/bar/backroom) +"ln" = ( +/turf/open/desert/rock, +/area/desert_dam/exterior/valley/bar_valley_dam) +"lC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached4" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"lT" = ( +/turf/open/desert/dirt{ + dir = 8; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"mb" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 6 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"md" = ( +/obj/item/ammo_magazine/rifle/type71/heap{ + current_rounds = 0 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"mf" = ( +/turf/open/desert/dirt{ + dir = 9; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"mq" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 8 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"mw" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/prop/colony/used_flare, +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/backroom) +"mF" = ( +/obj/structure/disposalpipe/segment, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"mL" = ( +/obj/structure/flora/bush/desert/cactus{ + icon_state = "cactus_8" + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"mR" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"mT" = ( +/obj/item/ammo_casing/bullet, +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"mV" = ( +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/building/bar/bar_restroom) +"nk" = ( +/turf/closed/shuttle/ert{ + icon_state = "T3"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"np" = ( +/obj/structure/flora/grass/desert/lightgrass_1, +/obj/item/ammo_casing/bullet, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"nt" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal3" + }, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"ny" = ( +/obj/effect/decal/cleanable/blood, +/obj/item/prop/almayer/comp_closed, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/desert_dam/building/bar/bar) +"nz" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/shuttle/ert{ + icon_state = "T8"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"nB" = ( +/obj/effect/landmark/survivor_spawner/upp/soldier, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, +/area/desert_dam/building/bar/bar) +"nC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/rods, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/bar) +"nD" = ( +/obj/structure/flora/grass/desert/heavygrass_4, +/obj/item/trash/cheesie, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"nP" = ( +/obj/structure/machinery/colony_floodlight, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"nR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"oc" = ( +/obj/structure/surface/table/reinforced, +/obj/structure/machinery/chem_dispenser/soda{ + density = 0; + pixel_y = 32 + }, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"oo" = ( +/obj/structure/flora/grass/desert/heavygrass_4, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"oy" = ( +/obj/effect/decal/sand_overlay/sand1, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached16" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"oD" = ( +/obj/structure/machinery/vending/snack, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/bar) +"oF" = ( +/obj/item/ammo_casing/bullet, +/obj/item/ammo_magazine/rifle/type71/heap{ + current_rounds = 0 + }, +/turf/open/desert/dirt{ + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"oK" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 8 + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 9 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached16" + }, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"oN" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/item/ammo_casing/bullet, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached12" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"pk" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 10 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"pq" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal2" + }, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"pu" = ( +/obj/structure/machinery/light/double, +/turf/open/desert/dirt{ + dir = 5; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"px" = ( +/obj/structure/barricade/sandbags/wired{ + dir = 4 + }, +/obj/item/prop/colony/used_flare, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"py" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 2; + name = "\improper Fulcrum Airlock" + }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/desert_dam/building/bar/bar) +"pA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/rods, +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/bar) +"pM" = ( +/obj/structure/bed/chair/dropship/passenger, +/obj/item/storage/belt/medical/lifesaver/upp, +/turf/open/shuttle/dropship/can_surgery/dark_grey, +/area/desert_dam/building/bar/bar) +"pO" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/closed/shuttle/ert{ + icon_state = "T10"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"pW" = ( +/turf/closed/wall/r_wall/bunker{ + name = "reinforced metal wall" + }, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"pZ" = ( +/obj/item/prop/colony/usedbandage{ + dir = 9; + pixel_x = 5; + pixel_y = 15 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"qe" = ( +/obj/structure/prop/dam/boulder/boulder3, +/turf/open/desert/dirt{ + dir = 8; + icon_state = "desert_transition_corner1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"qu" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/obj/item/prop/colony/used_flare, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"qx" = ( +/turf/open/desert/dirt{ + dir = 4; + icon_state = "desert_transition_corner1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"qS" = ( +/turf/open/floor/interior/wood/alt, +/area/desert_dam/building/bar/bar) +"qU" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor/interior/wood/alt, +/area/desert_dam/building/bar/bar) +"rj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"rl" = ( +/obj/structure/barricade/sandbags/wired{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"rm" = ( +/obj/structure/machinery/power/apc{ + dir = 8; + pixel_x = -30; + start_charge = 0 + }, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/bar) +"rR" = ( +/obj/structure/prop/dam/boulder/boulder1, +/turf/open/desert/dirt{ + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"rX" = ( +/obj/item/prop/colony/folded_bedroll, +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/bar) +"se" = ( +/obj/item/trash/semki, +/turf/open/shuttle/dropship/can_surgery, +/area/desert_dam/building/bar/bar) +"sn" = ( +/obj/structure/barricade/sandbags/wired{ + dir = 4 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"so" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"sp" = ( +/obj/structure/machinery/cm_vending/sorted/boozeomat, +/turf/open/floor{ + icon_state = "grimy" + }, +/area/desert_dam/building/bar/bar) +"su" = ( +/obj/structure/surface/table/reinforced, +/obj/structure/machinery/chem_dispenser/soda{ + density = 0; + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"sv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/tool/shovel, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"sE" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_right, +/area/desert_dam/building/bar/bar) +"sH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/sandbags/wired, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"sI" = ( +/obj/structure/flora/grass/desert/lightgrass_5, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"sO" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/backroom) +"sT" = ( +/obj/structure/flora/grass/desert/lightgrass_3, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"tl" = ( +/obj/item/ammo_casing/bullet, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"tu" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_right, +/area/desert_dam/building/bar/bar) +"tA" = ( +/obj/item/tool/wrench, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/desert_dam/building/bar/bar) +"tE" = ( +/obj/structure/flora/grass/desert/heavygrass_3, +/obj/item/ammo_magazine/rifle/type71/heap{ + current_rounds = 0 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"tK" = ( +/obj/structure/bed/bedroll, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"tM" = ( +/turf/closed/shuttle/ert{ + icon_state = "leftengine_1"; + opacity = 0; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"tR" = ( +/obj/item/prop/colony/used_flare, +/turf/open/floor/plating, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"tW" = ( +/turf/closed/shuttle/ert{ + icon_state = "T11"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"tX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"ug" = ( +/obj/structure/flora/grass/desert/lightgrass_10, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"uA" = ( +/obj/structure/surface/table/almayer, +/obj/item/prop{ + desc = "A gas-operated rotary machine gun used by UPP heavies. Its enormous volume of fire and ammunition capacity allows the suppression of large concentrations of enemy forces. Heavy weapons training is required control its recoil, is non-functional."; + icon_state = "painless"; + item_state = "m41amk1"; + name = "\improper GSh-7.62 rotary machine gun"; + pixel_y = 7; + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, +/area/desert_dam/building/bar/bar) +"uF" = ( +/turf/open/desert/dirt{ + dir = 4; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"uZ" = ( +/obj/item/roller, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/desert_dam/building/bar/bar) +"vk" = ( +/obj/structure/flora/grass/desert/lightgrass_9, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"vl" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal2" + }, +/obj/effect/decal/sand_overlay/sand1/corner1, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"vn" = ( +/obj/item/prop/colony/used_flare, +/turf/open/floor/prison{ + dir = 8; + icon_state = "sterile_white" + }, +/area/desert_dam/building/bar/bar_restroom) +"vq" = ( +/obj/structure/sink, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/prison{ + dir = 8; + icon_state = "sterile_white" + }, +/area/desert_dam/building/bar/bar_restroom) +"vy" = ( +/obj/item/prop/colony/used_flare, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar_restroom) +"vP" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal5" + }, +/obj/item/ammo_casing/bullet, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"vR" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"vZ" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached13" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"wj" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/bar) +"wm" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/closed/shuttle/ert{ + icon_state = "upp5"; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"wp" = ( +/obj/structure/flora/grass/desert/heavygrass_10, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"wq" = ( +/obj/structure/flora/grass/desert/lightgrass_2, +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"ws" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/closed/shuttle/ert{ + icon_state = "T17"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"wv" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 6 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"wy" = ( +/obj/item/trash/candy, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/desert_dam/building/bar/bar_restroom) +"wE" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"wI" = ( +/obj/structure/machinery/light/double{ + dir = 1 + }, +/obj/structure/bed/bedroll, +/obj/item/reagent_container/food/drinks/bottle/vodka, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"wJ" = ( +/turf/open/desert/dirt{ + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"wO" = ( +/obj/structure/barricade/sandbags/wired{ + dir = 4 + }, +/obj/structure/barricade/sandbags/wired{ + dir = 1 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"wT" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp16"; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"wZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S-corner" + }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, +/area/desert_dam/building/bar/bar) +"xg" = ( +/obj/structure/prop/dam/boulder/boulder1, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"xj" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/obj/effect/landmark/crap_item, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached4" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"xm" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"xn" = ( +/obj/structure/prop/dam/large_boulder{ + icon_state = "boulder_large1" + }, +/turf/open/desert/rock, +/area/desert_dam/exterior/valley/bar_valley_dam) +"xr" = ( +/obj/structure/prop/dam/boulder/boulder3, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"xt" = ( +/obj/structure/barricade/sandbags/wired{ + dir = 1 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"xx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/bar) +"xz" = ( +/obj/structure/prop/wooden_cross{ + pixel_y = 13 + }, +/obj/item/clothing/accessory/patch/upp{ + pixel_y = -6 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"xG" = ( +/obj/structure/machinery/power/apc{ + dir = 8; + pixel_x = -30; + start_charge = 0 + }, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"xN" = ( +/turf/closed/shuttle/ert{ + icon_state = "rightengine_1"; + opacity = 0; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"xP" = ( +/obj/item/ammo_casing/bullet, +/turf/open/desert/dirt{ + dir = 9; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"xT" = ( +/turf/template_noop, +/area/template_noop) +"xX" = ( +/obj/item/prop/colony/used_flare, +/turf/open/desert/rock, +/area/desert_dam/exterior/valley/bar_valley_dam) +"yc" = ( +/obj/structure/flora/grass/desert/lightgrass_3, +/obj/item/prop/colony/usedbandage{ + dir = 10 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"ye" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/sheet/wood, +/turf/open/floor{ + icon_state = "grimy" + }, +/area/desert_dam/building/bar/bar) +"yf" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"yk" = ( +/obj/structure/prop/dam/large_boulder/boulder2, +/turf/open/desert/dirt{ + dir = 6; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"ym" = ( +/obj/item/stack/sandbags/large_stack, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"yo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/desert_dam/building/bar/bar) +"ys" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 1 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"yx" = ( +/obj/structure/closet/secure_closet/bar, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/backroom) +"yC" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/turf/closed/shuttle/ert{ + icon_state = "upp5"; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"yF" = ( +/obj/effect/decal/cleanable/blood, +/obj/item/ammo_magazine/rifle/type71/heap{ + current_rounds = 0 + }, +/turf/open/shuttle/dropship/can_surgery, +/area/desert_dam/building/bar/bar) +"yG" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal11" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 6 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"yP" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached4" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"zl" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"zm" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "sterile_white" + }, +/area/desert_dam/building/bar/bar_restroom) +"zC" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/closed/shuttle/ert{ + icon_state = "T6"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"zD" = ( +/obj/structure/surface/table/woodentable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "grimy" + }, +/area/desert_dam/building/bar/bar) +"zM" = ( +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/bar) +"zO" = ( +/turf/open/desert/dirt{ + dir = 10; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"zS" = ( +/obj/structure/flora/grass/desert/heavygrass_4, +/turf/open/desert/dirt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"zT" = ( +/obj/structure/surface/table/woodentable, +/obj/effect/landmark/good_item, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/backroom) +"zZ" = ( +/obj/structure/barricade/sandbags/wired{ + dir = 8 + }, +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Ae" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"Ah" = ( +/obj/structure/barricade/wooden{ + dir = 1; + pixel_y = 7 + }, +/turf/open/floor/plating, +/area/desert_dam/building/bar/backroom) +"Al" = ( +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"At" = ( +/obj/effect/landmark/crap_item, +/turf/open/floor/interior/wood/alt, +/area/desert_dam/building/bar/bar) +"Aw" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal5" + }, +/obj/effect/decal/sand_overlay/sand1/corner1, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"AC" = ( +/obj/structure/barricade/sandbags/wired{ + dir = 1 + }, +/turf/open/desert/dirt{ + dir = 6; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"AT" = ( +/turf/closed/shuttle/ert{ + icon_state = "T2"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"Bj" = ( +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/backroom) +"Bq" = ( +/obj/structure/machinery/light/double{ + dir = 8 + }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_left, +/area/desert_dam/building/bar/bar) +"Bu" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached12" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Bx" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/food/drinks/bottle/vodka, +/obj/item/reagent_container/food/drinks/bottle/vodka{ + pixel_x = -7; + pixel_y = 6 + }, +/obj/item/reagent_container/food/drinks/bottle/vodka{ + pixel_y = -8; + pixel_x = -8 + }, +/obj/item/reagent_container/food/drinks/bottle/vodka{ + pixel_x = 6 + }, +/obj/item/ammo_magazine/rifle/type71/heap{ + current_rounds = 0 + }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, +/area/desert_dam/building/bar/bar) +"BB" = ( +/turf/closed/shuttle/ert{ + icon_state = "T5"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"BK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/obj/item/reagent_container/food/drinks/flask/canteen{ + desc = "You take a sip from your trusty UPP canteen..." + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"BM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/bar) +"BP" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal5" + }, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"BU" = ( +/obj/item/ammo_magazine/rifle/type71/heap{ + current_rounds = 0 + }, +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"BW" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/backroom) +"Cc" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal9" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 9 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Ce" = ( +/turf/open/desert/dirt{ + dir = 8; + icon_state = "desert_transition_corner1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Ch" = ( +/turf/open/desert/dirt{ + dir = 6; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Cm" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 1; + pixel_y = 35 + }, +/turf/closed/shuttle/ert{ + icon_state = "T3"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"Cn" = ( +/obj/effect/landmark/survivor_spawner/upp/soldier, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/desert_dam/building/bar/bar) +"Cx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached13" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"CA" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp21"; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"CE" = ( +/obj/structure/desertdam/decals/road_edge, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"CH" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/desert_dam/building/bar/bar_restroom) +"CI" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 10 + }, +/obj/structure/prop/wooden_cross{ + pixel_y = 13 + }, +/obj/item/clothing/mask/cigarette/cigar, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"CL" = ( +/turf/closed/shuttle/ert{ + icon_state = "leftengine_2"; + opacity = 0; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"CX" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached13" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Db" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"Df" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Di" = ( +/obj/item/prop/colony/used_flare, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Dn" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/shuttle/ert{ + icon_state = "T7"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"Dt" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/bar_restroom) +"Du" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/shuttle/ert{ + icon_state = "upp5"; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"DB" = ( +/obj/structure/bed/bedroll, +/obj/item/trash/cheesie, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_right, +/area/desert_dam/building/bar/bar) +"DD" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 2; + name = "\improper Bar" + }, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/bar) +"DE" = ( +/obj/structure/machinery/light, +/turf/open/floor/prison{ + dir = 8; + icon_state = "sterile_white" + }, +/area/desert_dam/building/bar/bar_restroom) +"DO" = ( +/obj/effect/spawner/gibspawner/xeno, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"DR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/sand_overlay/sand1, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached12" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"DZ" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, +/turf/closed/shuttle/ert{ + icon_state = "T4"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"Eb" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"Ec" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/ammo_casing/bullet, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Eg" = ( +/turf/open/desert/dirt{ + dir = 5; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Ek" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/backroom) +"Eq" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/structure/barricade/sandbags/wired{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached19" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Er" = ( +/obj/item/stack/sheet/wood, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/bar) +"Ev" = ( +/turf/open/floor{ + icon_state = "grimy" + }, +/area/desert_dam/building/bar/bar) +"Ex" = ( +/obj/item/prop/colony/used_flare, +/turf/open/desert/dirt{ + dir = 5; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"EH" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"EO" = ( +/turf/closed/shuttle/ert{ + icon_state = "T14"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"EW" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/disposalpipe/segment, +/obj/item/ammo_casing/bullet, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Fa" = ( +/obj/structure/flora/tree/joshua, +/turf/closed/wall/rock/orange, +/area/desert_dam/exterior/rock) +"Fd" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "grimy" + }, +/area/desert_dam/building/bar/bar) +"Fh" = ( +/obj/item/storage/belt/utility, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/desert_dam/building/bar/bar) +"Fl" = ( +/obj/structure/pipes/standard/manifold/hidden/green, +/turf/closed/shuttle/ert{ + icon_state = "T15"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"Fr" = ( +/obj/item/stack/sandbags, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Fs" = ( +/obj/structure/flora/bush/desert{ + icon_state = "tree_3" + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"FB" = ( +/obj/structure/barricade/sandbags/wired{ + dir = 4 + }, +/turf/open/desert/dirt{ + dir = 4; + icon_state = "desert_transition_corner1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"FF" = ( +/obj/structure/disposalpipe/segment, +/obj/item/ammo_casing/bullet, +/obj/item/prop/colony/used_flare, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"FI" = ( +/obj/effect/decal/sand_overlay/sand1, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached15" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Gc" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/obj/item/ammo_casing/bullet, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached4" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Gd" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"GK" = ( +/obj/item/ammo_magazine/rifle/type71/heap{ + current_rounds = 0 + }, +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/desert_dam/building/bar/bar) +"GP" = ( +/obj/item/prop/colony/used_flare, +/turf/open/floor{ + icon_state = "grimy" + }, +/area/desert_dam/building/bar/bar) +"GY" = ( +/obj/item/trash/used_stasis_bag, +/obj/effect/landmark/survivor_spawner/squad_leader, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, +/area/desert_dam/building/bar/bar) +"GZ" = ( +/obj/item/stack/barbed_wire/small_stack, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Hb" = ( +/obj/structure/desertdam/decals/road_edge, +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 8 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Hl" = ( +/turf/open/desert/dirt{ + dir = 1; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Hq" = ( +/obj/structure/barricade/sandbags/wired{ + dir = 4 + }, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"HB" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/desert_dam/building/bar/bar) +"HH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/obj/item/prop/colony/used_flare, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"HI" = ( +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"HP" = ( +/turf/closed/shuttle/ert{ + icon_state = "T8"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"HV" = ( +/obj/structure/disposalpipe/segment, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Ip" = ( +/obj/item/prop/colony/usedbandage{ + dir = 5 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Iu" = ( +/turf/open/desert/dirt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"IA" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal2" + }, +/obj/item/stack/sandbags, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"IF" = ( +/obj/structure/bed/chair/dropship/passenger{ + dir = 8 + }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, +/area/desert_dam/building/bar/bar) +"IU" = ( +/obj/item/tool/shovel, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"IW" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp27"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"Jc" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/desert_dam/building/bar/bar) +"Jd" = ( +/obj/structure/flora/grass/desert/lightgrass_5, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Ji" = ( +/obj/item/trash/candy, +/obj/item/stack/rods, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/desert_dam/building/bar/bar) +"Jk" = ( +/turf/open/desert/dirt{ + dir = 9; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"Js" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"Jt" = ( +/obj/item/trash/cheesie, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Jx" = ( +/obj/structure/desertdam/decals/road_edge, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"JB" = ( +/obj/structure/desertdam/decals/road_edge, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/obj/item/prop/colony/used_flare, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"JS" = ( +/obj/structure/barricade/sandbags/wired, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"JT" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp3"; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"Kf" = ( +/obj/structure/bed/bedroll, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"Kl" = ( +/obj/structure/window/framed/wood/reinforced, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"KA" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 1 + }, +/turf/closed/shuttle/ert{ + icon_state = "upp5"; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"KC" = ( +/obj/structure/barricade/sandbags/wired, +/turf/open/desert/dirt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"Li" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/obj/item/stack/sandbags, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached13" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Lo" = ( +/obj/effect/landmark/survivor_spawner/upp/soldier, +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/desert_dam/building/bar/bar) +"Lu" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal3" + }, +/obj/effect/decal/sand_overlay/sand1/corner1, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"Lw" = ( +/obj/item/stack/rods, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/bar) +"LB" = ( +/obj/structure/machinery/door/poddoor/almayer/locked{ + dir = 2; + id = "dam_checkpoint_west"; + name = "\improper Checkpoint Lock" + }, +/obj/structure/disposalpipe/segment, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"LC" = ( +/obj/item/prop/colony/usedbandage, +/turf/open/desert/dirt{ + dir = 10; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"LD" = ( +/obj/item/ammo_casing/bullet, +/turf/open/desert/dirt{ + dir = 8; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"LF" = ( +/obj/effect/spawner/gibspawner/xeno, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"LJ" = ( +/obj/structure/machinery/power/apc{ + dir = 1; + pixel_y = 24; + start_charge = 0 + }, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/backroom) +"LM" = ( +/obj/item/prop/colony/used_flare, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached16" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Ms" = ( +/obj/item/ammo_casing/bullet, +/obj/item/prop/colony/usedbandage{ + dir = 1 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Mw" = ( +/obj/structure/machinery/blackbox_recorder, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"MM" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/obj/effect/decal/cleanable/blood, +/obj/effect/spawner/gibspawner/human, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/desert_dam/building/bar/bar) +"MW" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/structure/barricade/sandbags/wired{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached12" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Ne" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S-corner" + }, +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/desert_dam/building/bar/bar) +"Nh" = ( +/obj/structure/flora/grass/desert/lightgrass_4, +/obj/effect/decal/sand_overlay/sand1{ + dir = 6 + }, +/obj/item/ammo_box/rounds/type71/heap/empty{ + bullet_amount = 0 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Nj" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 6 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"No" = ( +/obj/effect/spawner/gibspawner/xeno, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Nu" = ( +/obj/effect/spawner/gibspawner/xeno, +/turf/open/desert/dirt{ + dir = 1; + icon_state = "desert_transition_corner1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"NH" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/obj/effect/landmark/survivor_spawner/upp_sapper, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/desert_dam/building/bar/bar) +"NK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/shuttle/ert{ + icon_state = "T20"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"Oe" = ( +/obj/structure/barricade/sandbags/wired{ + dir = 4 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Oj" = ( +/turf/closed/shuttle/ert{ + icon_state = "T12"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"Om" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/closed/shuttle/ert{ + icon_state = "T7"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"Ou" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 8 + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Ow" = ( +/obj/structure/prop/dam/boulder/boulder2, +/turf/open/desert/dirt{ + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"OD" = ( +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"OJ" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/obj/structure/machinery/sentry_holder/colony{ + dir = 1; + pixel_y = -10 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached19" + }, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"OO" = ( +/turf/closed/wall/r_wall, +/area/desert_dam/exterior/valley/bar_valley_dam) +"OS" = ( +/obj/structure/barricade/sandbags/wired, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"OU" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal4" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/obj/item/ammo_casing/bullet, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"OZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Pd" = ( +/obj/structure/machinery/vending/coffee, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/bar) +"Pw" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"PH" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = -7; + pixel_y = 35 + }, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 1; + pixel_y = 35 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"PR" = ( +/obj/structure/bed/chair/dropship/passenger{ + dir = 4 + }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, +/area/desert_dam/building/bar/bar) +"PS" = ( +/obj/effect/decal/sand_overlay/sand1, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached12" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"PX" = ( +/obj/structure/flora/grass/desert/heavygrass_5, +/obj/effect/decal/sand_overlay/sand1{ + dir = 5 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"PY" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/obj/structure/prop/wooden_cross{ + pixel_y = 13 + }, +/obj/item/toy/plush/farwa, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Qc" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/desert_dam/building/bar/bar_restroom) +"Qk" = ( +/obj/item/ammo_magazine/rifle/type71/heap{ + current_rounds = 0 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"QA" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/shuttle/ert{ + icon_state = "T2"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"QG" = ( +/obj/structure/surface/table/reinforced, +/obj/structure/machinery/chem_dispenser/soda{ + density = 0; + pixel_y = 32 + }, +/turf/open/floor{ + icon_state = "grimy" + }, +/area/desert_dam/building/bar/bar) +"QI" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 10 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"QK" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/closed/shuttle/ert{ + icon_state = "T9"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"QN" = ( +/obj/structure/machinery/door/poddoor/almayer/locked{ + dir = 2; + id = "dam_checkpoint_west"; + name = "\improper Checkpoint Lock" + }, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"QW" = ( +/obj/item/prop/colony/used_flare, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Re" = ( +/obj/item/ammo_box/rounds/type71/heap/empty{ + bullet_amount = 0 + }, +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_left, +/area/desert_dam/building/bar/bar) +"Rl" = ( +/obj/structure/closet/crate/supply, +/obj/item/ammo_box/magazine/misc/flares, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, +/obj/item/ammo_box/magazine/misc/flares, +/turf/open/shuttle/dropship/can_surgery/dark_grey, +/area/desert_dam/building/bar/bar) +"Ro" = ( +/obj/structure/flora/grass/desert/lightgrass_11, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Rs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/rods, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/desert_dam/building/bar/bar) +"RU" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 5 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached9" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"RW" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S-corner" + }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/desert_dam/building/bar/bar) +"Sb" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor/plating, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"Sh" = ( +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/bar) +"Sl" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 1 + }, +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/bar) +"So" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/shuttle/ert{ + icon_state = "T16"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"SE" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/closed/shuttle/ert{ + icon_state = "T19"; + opacity = 0; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"SF" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/backroom) +"SG" = ( +/obj/effect/decal/sand_overlay/sand1, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"SL" = ( +/obj/item/ammo_magazine/rifle/type71/heap{ + current_rounds = 0 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"SP" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/sandbags/wired{ + dir = 1 + }, +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/bar) +"SY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/sheet/metal, +/obj/structure/barricade/wooden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"Ta" = ( +/obj/item/prop/colony/used_flare, +/turf/open/desert/dirt{ + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Tc" = ( +/obj/structure/bed/chair/wood/normal{ + dir = 8 + }, +/obj/structure/machinery/light, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/backroom) +"Td" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/barricade/wooden{ + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/bar) +"Tl" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/item/ammo_magazine/rifle/type71/heap{ + current_rounds = 0 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached12" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"TH" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/item/ammo_casing/bullet, +/obj/effect/landmark/crap_item, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"TO" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "grimy" + }, +/area/desert_dam/building/bar/bar) +"TR" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "sterile_white" + }, +/area/desert_dam/building/bar/bar_restroom) +"Ug" = ( +/obj/item/ammo_casing/bullet, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Ui" = ( +/obj/structure/prop/dam/boulder/boulder2, +/turf/open/desert/dirt{ + dir = 8; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Ul" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood{ + layer = 3 + }, +/turf/closed/shuttle/ert{ + icon_state = "upp1"; + name = "Fulcrum" + }, +/area/desert_dam/building/bar/bar) +"Un" = ( +/obj/structure/prop/dam/large_boulder/boulder2, +/turf/open/desert/rock, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Uq" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/desert/dirt{ + icon_state = "desert_transition_corner1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"UB" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/bar) +"UK" = ( +/obj/item/ammo_box/rounds/type71/heap/empty{ + bullet_amount = 0 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"UL" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 10 + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/obj/structure/prop/wooden_cross{ + pixel_y = 13 + }, +/obj/item/clothing/head/helmet/marine/veteran/UPP, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"UQ" = ( +/obj/structure/surface/table/reinforced, +/obj/structure/machinery/chem_dispenser/soda{ + density = 0; + pixel_y = 32 + }, +/obj/effect/landmark/objective_landmark/far, +/turf/open/floor{ + icon_state = "grimy" + }, +/area/desert_dam/building/bar/bar) +"Vc" = ( +/obj/structure/desertdam/decals/road_edge, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/obj/item/ammo_casing/bullet, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Vg" = ( +/obj/item/stack/sandbags, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Vl" = ( +/obj/structure/bed/chair/wood/normal{ + dir = 4 + }, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/backroom) +"Vr" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "grimy" + }, +/area/desert_dam/building/bar/bar) +"Vt" = ( +/obj/item/prop/colony/usedbandage{ + dir = 1 + }, +/obj/effect/landmark/survivor_spawner/upp_specialist, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, +/area/desert_dam/building/bar/bar) +"VA" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" + }, +/area/desert_dam/building/bar/bar) +"VG" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/desert/dirt{ + dir = 9; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"VI" = ( +/turf/open/floor/plating, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"VP" = ( +/obj/structure/desertdam/decals/road_edge, +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"VQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/barricade/sandbags/wired, +/obj/structure/barricade/sandbags/wired{ + dir = 4 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"VT" = ( +/turf/closed/wall/wood, +/area/desert_dam/building/bar/bar_restroom) +"VU" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal2" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"VW" = ( +/obj/structure/desertdam/decals/road_edge, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/obj/item/ammo_magazine/rifle/type71/heap{ + current_rounds = 0 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Wb" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal2" + }, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"Wh" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/backroom) +"WE" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/bar) +"WG" = ( +/obj/item/stack/sheet/wood, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"WK" = ( +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"WO" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"WX" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal8" + }, +/obj/effect/spawner/gibspawner/xeno, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"WY" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal4" + }, +/obj/item/stack/sheet/wood/medium_stack, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"WZ" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal3" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Xe" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/item/reagent_container/food/drinks/flask/canteen{ + desc = "You take a sip from your trusty UPP canteen..."; + pixel_x = 3; + pixel_y = -6 + }, +/obj/item/reagent_container/food/drinks/flask/canteen{ + desc = "You take a sip from your trusty UPP canteen..."; + pixel_y = 5; + pixel_x = -8 + }, +/obj/item/reagent_container/food/drinks/flask/canteen{ + desc = "You take a sip from your trusty UPP canteen..."; + pixel_y = 4 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Xh" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/bar) +"Xo" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 6 + }, +/obj/item/ammo_casing/bullet, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Xv" = ( +/obj/structure/prop/dam/boulder/boulder3, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Xw" = ( +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/bar) +"XB" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal2" + }, +/obj/item/ammo_magazine/rifle/type71/heap{ + current_rounds = 0 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"XF" = ( +/obj/structure/bed/chair/wood/normal{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"XR" = ( +/obj/structure/desertdam/decals/road_edge, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"XZ" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/desert/dirt{ + dir = 5; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Yf" = ( +/obj/effect/spawner/gibspawner/xeno, +/turf/open/floor/interior/wood, +/area/desert_dam/building/bar/bar) +"Yn" = ( +/turf/open/desert/dirt{ + dir = 1; + icon_state = "desert_transition_corner1" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"Yq" = ( +/turf/open/floor{ + dir = 8; + icon_state = "carpet6-2" + }, +/area/desert_dam/building/bar/bar) +"YA" = ( +/obj/structure/bed/chair/wood/normal, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/desert_dam/building/bar/bar) +"YE" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal3" + }, +/obj/item/ammo_casing/bullet, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"YK" = ( +/obj/item/stack/rods, +/turf/open/floor/plating, +/area/desert_dam/building/bar/bar) +"YM" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 10 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"YQ" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal3" + }, +/obj/structure/machinery/light, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"YS" = ( +/turf/closed/shuttle/ert{ + icon_state = "T7"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"YY" = ( +/turf/closed/shuttle/ert{ + icon_state = "T1"; + name = "Fulcrum"; + opacity = 0 + }, +/area/desert_dam/building/bar/bar) +"YZ" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/desert_dam/building/bar/bar_restroom) +"ZA" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/obj/structure/barricade/sandbags/wired{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached4" + }, +/area/desert_dam/exterior/valley/bar_valley_dam) +"ZB" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal3" + }, +/turf/open/asphalt, +/area/desert_dam/interior/dam_interior/south_tunnel_entrance) +"ZD" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 9 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"ZS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/disposalpipe/segment, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/bar_valley_dam) +"ZY" = ( +/obj/structure/flora/grass/desert/heavygrass_5, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/bar_valley_dam) + +(1,1,1) = {" +iy +iy +iy +iy +iy +xT +xT +xT +xT +xT +xT +VT +vq +vn +TR +DE +VT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(2,1,1) = {" +iy +sO +Bj +SF +iy +xT +xT +xT +xT +xT +mV +YZ +TR +TR +hT +TR +cI +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(3,1,1) = {" +iy +Bj +Wh +Vl +iy +hv +hv +wE +Mw +wj +CH +tW +zC +DZ +zm +eh +Dt +xT +xT +Fa +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(4,1,1) = {" +iy +Bj +Ek +zT +iy +Pd +rm +qS +Yq +aO +tW +nz +Om +BB +Qc +wy +vy +jf +kD +kD +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(5,1,1) = {" +iy +be +Ek +Tc +iy +oD +Xw +jt +Rs +tW +HP +YS +QK +CL +tM +zM +YK +PH +jC +jC +pk +kD +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(6,1,1) = {" +iy +yx +Ek +hk +iy +if +Xh +BM +ds +HP +YS +YS +pO +kM +xN +Sh +YY +Cm +nk +bO +kf +pk +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(7,1,1) = {" +jy +bC +mw +iV +Ah +Jc +cH +hx +bY +bY +bY +bY +bY +bY +bY +bY +bY +Ul +QA +EO +zZ +jm +xz +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(8,1,1) = {" +iy +LJ +kQ +hx +bY +wT +bY +CA +bz +hF +Lo +Cn +Re +PR +PR +PR +Bq +RW +hJ +sH +kf +SG +WO +UL +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(9,1,1) = {" +iy +du +BW +IW +cL +CA +cL +CA +GY +pM +dX +Rl +nB +GK +Fh +cu +yF +wZ +gM +kf +kf +kf +jC +IU +PY +CI +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(10,1,1) = {" +hv +su +HB +IW +kp +MM +ny +py +Vt +uA +eV +Bx +nB +fP +uZ +tA +se +wZ +kf +ym +GZ +cR +kf +kf +kf +kf +pk +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(11,1,1) = {" +hv +oc +Sl +aa +hm +hm +hm +CA +DB +NH +Cn +Cn +tu +IF +IF +IF +sE +Ne +GZ +OS +sv +kf +kf +Di +md +tl +OS +QI +xT +xT +xT +xT +xT +xT +xT +xT +"} +(12,1,1) = {" +hv +hv +Td +SY +Jc +zM +Jc +aa +hm +hm +hm +KA +wm +yC +Du +hm +hm +JT +nk +bO +wI +kf +Jt +kf +hJ +Ms +OS +gR +xT +xT +xT +xT +xT +xT +xT +xT +"} +(13,1,1) = {" +hv +sp +Fd +nC +WG +UB +WK +zM +So +NK +Dn +Dn +SE +CL +tM +Kf +Oj +AT +AT +EO +md +kf +Jd +kf +tl +np +OS +Nj +pu +xT +xT +xT +xT +xT +xT +xT +"} +(14,1,1) = {" +hv +sp +Vr +bu +jj +ye +Xh +zM +YA +So +NK +Dn +ws +kM +xN +zM +wE +tK +Xe +tK +kf +Jd +gM +kf +kf +oo +mb +zS +Iu +xT +xT +xT +xT +xT +xT +xT +"} +(15,1,1) = {" +hv +hv +TO +fM +zD +bu +Xh +qU +in +XF +aT +NK +Om +BB +eU +Eb +Ji +Xv +aY +BK +qu +wp +pZ +kf +tl +TH +Ug +KC +Iu +Db +xT +xT +xT +xT +xT +pW +"} +(16,1,1) = {" +hv +QG +Ev +Ev +zD +hY +Er +At +qS +Js +pA +aT +Fl +EO +Al +wj +rX +Ip +mb +Gc +aw +PX +EH +EH +EH +Xo +tE +KC +Iu +bN +VI +Db +pW +pW +pW +pW +"} +(17,1,1) = {" +hv +UQ +Ev +GP +Ev +Ev +Yf +WE +Xw +xx +xm +yo +SP +VA +BU +wE +Lw +Nh +sI +yP +oN +yc +wq +nD +Ug +UK +Ug +KC +oK +VI +tR +Ae +xG +Pw +LF +Db +"} +(18,1,1) = {" +hv +hv +Kl +Kl +hv +Kl +Kl +hv +Kl +xx +DD +Kl +hv +eT +Hq +wE +mT +SL +gN +xj +Tl +kD +hc +LC +Cc +CE +Vc +XR +VP +jp +eJ +eJ +eJ +eJ +eJ +gm +"} +(19,1,1) = {" +xT +xT +ln +ln +ln +ln +ln +ln +wJ +lC +DR +xr +kD +kD +kD +gP +wO +sn +sn +yP +oN +VG +Ce +oF +OU +Ec +JS +ee +HH +QN +OD +ee +DO +OD +ee +Sb +"} +(20,1,1) = {" +xT +xT +ln +ln +ln +ln +ln +xX +wJ +lC +Bu +kD +kD +kD +kD +ej +kD +kD +kD +ZA +MW +Hl +xn +jI +OU +Oe +VQ +bP +bP +LB +mF +bP +mF +mF +bP +tX +"} +(21,1,1) = {" +xT +ln +ln +ln +ln +ln +ln +ln +Ta +yP +PS +kD +nP +kD +mR +fy +QW +mR +vk +yP +PS +Hl +Yn +Ch +hH +HI +bJ +BP +pq +jr +pq +pq +Wb +pq +pq +jr +"} +(22,1,1) = {" +xT +xT +ln +iI +Yn +Uq +ln +Nu +Ch +RU +Ou +fR +kk +Cx +kk +kk +kk +kk +kk +nR +FI +Eg +Ch +kD +hH +Df +hO +Lu +OJ +pW +cZ +so +dR +dR +dJ +pW +"} +(23,1,1) = {" +xT +xT +xT +Yn +jw +bI +is +wJ +kD +kD +kD +eQ +Jx +Jx +Jx +Jx +Jx +bf +Jx +Jx +Hb +CE +CE +JB +ab +vR +bJ +ZB +xT +xT +xT +xT +xT +xT +xT +xT +"} +(24,1,1) = {" +xT +xT +xT +wJ +Ug +Ug +Eg +Ch +kD +kD +kD +hH +HI +OZ +HI +HI +OZ +HI +HI +yf +HI +HI +OZ +HI +HI +OZ +bJ +YQ +xT +xT +xT +xT +xT +xT +xT +xT +"} +(25,1,1) = {" +xT +xT +xT +FB +ki +px +kD +kD +kD +ej +sT +hH +HI +Gd +HV +HV +ZS +HV +HV +ZS +HV +HV +ZS +HV +HV +ZS +zl +ZB +xT +xT +xT +xT +xT +xT +xT +xT +"} +(26,1,1) = {" +xT +xT +Yn +is +Ow +kD +sT +ug +wv +ig +hd +hH +HI +bJ +Aw +VU +VU +VU +VU +VU +VU +VU +hn +VU +VU +VU +VU +am +xT +xT +xT +xT +xT +xT +xT +xT +"} +(27,1,1) = {" +xT +xT +Ch +XZ +Ch +kD +da +wv +eD +ys +jJ +hH +Df +hO +eI +mf +lT +Ui +zO +kD +kD +kD +kD +mf +zO +nP +kD +Jk +xT +xT +xT +xT +xT +xT +xT +xT +"} +(28,1,1) = {" +xT +xT +zO +kD +kD +kD +wv +eD +eD +ZD +kD +hH +HI +bJ +eI +Hl +Un +iL +Ch +kD +kD +kD +kD +Hl +rR +kD +mf +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(29,1,1) = {" +xT +Yn +yk +QW +kD +Fs +YM +mq +ZD +vk +kD +hH +HI +bJ +eI +Eg +uF +Ch +Ug +kD +mL +mR +mf +Ce +qx +lT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(30,1,1) = {" +is +wJ +kD +Ug +kD +kD +jJ +fy +hd +Ro +QW +hH +vR +bJ +eI +Fr +kD +Ug +kD +iz +mf +lT +Ce +ln +xT +ln +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(31,1,1) = {" +XZ +AC +Ug +kD +nP +kD +kD +kD +kD +kD +kD +hH +Df +hO +eI +xt +kD +QW +kD +mf +qe +ln +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(32,1,1) = {" +CE +CE +VW +CE +Vc +CE +CE +Vc +CE +Vc +CE +ab +HI +bJ +eI +kD +ZY +xP +LD +Ce +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(33,1,1) = {" +No +vR +OZ +rl +hi +OZ +HI +hi +Qk +vR +OZ +HI +HI +bJ +nt +mf +lT +Ce +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(34,1,1) = {" +HV +HV +ZS +fN +HV +EW +HV +FF +HV +HV +ZS +HV +gA +zl +YE +Hl +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(35,1,1) = {" +cl +IA +cl +kh +XB +cl +WX +Vg +Oe +vP +vl +fL +hn +VU +yG +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(36,1,1) = {" +ga +Li +vZ +fk +CX +kB +dQ +Df +rj +WZ +Eq +Fr +kD +sn +Fr +Hl +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} +(37,1,1) = {" +eK +eK +eK +eK +OO +LM +WY +vR +HI +WZ +oy +nP +mR +xg +kD +Ex +uF +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +xT +"} diff --git a/maps/map_files/FOP_v2_Cellblocks/Prison_Station_FOP.dmm b/maps/map_files/FOP_v2_Cellblocks/Prison_Station_FOP.dmm index 9cba60a14b40..ba9986948eed 100644 --- a/maps/map_files/FOP_v2_Cellblocks/Prison_Station_FOP.dmm +++ b/maps/map_files/FOP_v2_Cellblocks/Prison_Station_FOP.dmm @@ -5305,7 +5305,7 @@ /area/prison/hanger/research) "aoj" = ( /obj/docking_port/stationary/marine_dropship/lz2{ - name = "Research Landing Zone" + name = "LZ2: Research Landing Zone" }, /turf/open/floor/plating, /area/prison/hanger/research) @@ -15559,7 +15559,7 @@ /area/prison/command/secretary_office) "aRX" = ( /obj/structure/surface/rack, -/obj/item/weapon/katana/replica, +/obj/item/weapon/sword/katana/replica, /turf/open/floor/wood, /area/prison/command/office) "aRY" = ( @@ -19201,7 +19201,7 @@ /area/prison/hanger/main) "bcF" = ( /obj/docking_port/stationary/marine_dropship/lz1{ - name = "Hangar Landing Zone" + name = "LZ1: Hangar Landing Zone" }, /turf/open/floor/plating, /area/prison/hanger/main) @@ -88624,7 +88624,7 @@ amu amu amu amu -aoj +amu axz jDr uaW @@ -89462,7 +89462,7 @@ amu amu amu amu -amu +aoj amu amu amu @@ -99271,7 +99271,7 @@ aYM aYM aYM aYM -bcF +aYM btu blH bkt @@ -100109,7 +100109,7 @@ aYM aYM aYM aYM -aYM +bcF aYM aYM aYM diff --git a/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm b/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm index 4e1f9e3437ce..2920895292ba 100644 --- a/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm +++ b/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm @@ -7,109 +7,12 @@ }, /turf/open/space, /area/fiorina/oob) -"aac" = ( -/obj/structure/machinery/power/apc, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"aad" = ( -/obj/structure/machinery/power/apc, -/turf/open/floor/prison{ - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"aae" = ( -/obj/structure/machinery/power/apc, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/fiorina/tumor/civres) -"aaf" = ( -/obj/structure/bed/roller, -/obj/structure/machinery/iv_drip{ - pixel_y = 19 - }, -/obj/item/bedsheet/green, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"aag" = ( -/obj/item/trash/eat, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"aah" = ( -/obj/structure/machinery/power/apc{ - dir = 1 - }, -/turf/open/floor/prison{ - dir = 9; - icon_state = "yellow" - }, -/area/fiorina/station/disco) -"aai" = ( -/obj/structure/machinery/power/apc{ - dir = 8 - }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"aaj" = ( -/obj/structure/machinery/power/apc{ - dir = 1 - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "green" - }, -/area/fiorina/station/chapel) "aak" = ( /obj/effect/decal/hefa_cult_decals/d32{ icon_state = "4" }, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/tumor/servers) -"aam" = ( -/obj/structure/machinery/power/apc{ - dir = 4 - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "green" - }, -/area/fiorina/station/transit_hub) -"aan" = ( -/obj/structure/machinery/power/apc{ - dir = 1 - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"aao" = ( -/obj/structure/machinery/power/apc{ - dir = 8 - }, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/tumor/aux_engi) -"aap" = ( -/turf/open/floor/prison{ - icon_state = "darkyellow2" - }, -/area/fiorina/station/telecomm/lz1_cargo) "aaq" = ( /obj/structure/machinery/power/apc{ dir = 1 @@ -133,89 +36,132 @@ }, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"aat" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/weapon/baton, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/fiorina/tumor/civres) -"aau" = ( -/obj/structure/inflatable, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +"aaR" = ( +/obj/structure/platform_decoration{ + dir = 4 }, -/area/fiorina/station/research_cells) -"aav" = ( -/obj/structure/closet/secure_closet/security_empty, -/obj/item/weapon/baton, -/turf/open/floor/prison{ - icon_state = "redfull" +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" }, -/area/fiorina/station/security) -"aaK" = ( +/turf/open/floor/plating/prison, +/area/fiorina/tumor/ice_lab) +"abG" = ( +/obj/item/trash/chunk, /turf/open/floor/prison{ - dir = 9; - icon_state = "whitepurple" + dir = 1; + icon_state = "whitegreen" }, -/area/fiorina/station/research_cells) -"aaW" = ( -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/prison, -/area/fiorina/station/security) -"abe" = ( -/obj/item/device/flashlight/lamp/tripod, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) +/area/fiorina/station/medbay) "abJ" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ icon = 'icons/obj/structures/doors/2x1prepdoor.dmi' }, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"adk" = ( -/obj/item/device/flashlight/lamp/tripod, +"ace" = ( +/obj/effect/landmark{ + icon_state = "hive_spawn"; + name = "xeno_hive_spawn" + }, +/obj/effect/landmark/ert_spawns/groundside_xeno, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/aux_engi) +"ach" = ( /turf/open/floor/prison{ dir = 4; - icon_state = "darkyellowfull2" + icon_state = "greenfull" }, /area/fiorina/tumor/servers) -"adl" = ( -/obj/structure/machinery/computer/secure_data, +"aco" = ( /obj/structure/surface/table/reinforced/prison, -/obj/structure/window/reinforced{ - dir = 8 +/obj/item/reagent_container/food/drinks/sillycup{ + pixel_x = -5; + pixel_y = 10 + }, +/obj/item/prop/helmetgarb/spacejam_tickets{ + desc = "Low security prisoners would smuggle in arcade tickets after visitations. The tickets act as a stand in for paper currency in the prison economy, they're backed by the cigarette standard, since one ticket nets one cigarette at the prize booth. The cigarettes also get smuggled back in."; + name = "\improper arcade tickets"; + pixel_x = 1; + pixel_y = -1 }, /turf/open/floor/prison, +/area/fiorina/station/flight_deck) +"acO" = ( +/obj/effect/decal{ + icon = 'icons/obj/items/policetape.dmi'; + icon_state = "engineering_v" + }, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"adq" = ( +/obj/structure/bed/chair, +/turf/open/floor/prison{ + icon_state = "redfull" + }, /area/fiorina/station/security) -"adH" = ( -/obj/structure/closet/secure_closet/medical3, +"adE" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkbrown2" + }, +/area/fiorina/tumor/aux_engi) +"aeb" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "darkpurple2" + }, +/area/fiorina/tumor/servers) +"aej" = ( +/obj/item/weapon/gun/rifle/m16, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + icon_state = "damaged3" + }, +/area/fiorina/station/security) +"aeo" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_tram) +"aeF" = ( +/obj/effect/decal/cleanable/blood/splatter{ + icon_state = "gibup1" + }, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"adY" = ( -/obj/structure/bed/chair/comfy{ - dir = 4 - }, -/turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" +"aeI" = ( +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" }, -/area/fiorina/station/disco) -"aem" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/box/donkpockets{ - pixel_x = 5; - pixel_y = 9 +/area/fiorina/station/central_ring) +"aeS" = ( +/obj/structure/machinery/vending/cigarette/colony, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/obj/item/storage/box/donkpockets, /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/power_ring) +/area/fiorina/tumor/ice_lab) "afk" = ( /turf/open/floor{ desc = "A sophisticated device that captures and converts light from the system's star into energy for the station."; @@ -223,6 +169,48 @@ name = "solarpanel" }, /area/fiorina/oob) +"afq" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "whitegreencorner" + }, +/area/fiorina/station/medbay) +"afO" = ( +/obj/structure/bed/sofa/vert/grey/bot{ + pixel_y = 8 + }, +/turf/open/floor/prison, +/area/fiorina/station/security) +"afW" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"afX" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 + }, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/servers) +"aga" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/pills/lowchance, +/turf/open/floor/prison{ + icon_state = "yellowfull" + }, +/area/fiorina/station/lowsec) +"agh" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/cameras{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/ice_lab) "agi" = ( /turf/closed/wall/mineral/bone_resin, /area/fiorina/tumor/servers) @@ -276,32 +264,15 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"ahe" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic/autoname{ - icon = 'icons/obj/structures/doors/2x1prepdoor_charlie.dmi' - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/research_cells) -"ahn" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_sn_full_cap" - }, +"ahm" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) +"aic" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "blue" - }, -/area/fiorina/station/chapel) -"ahR" = ( -/obj/structure/monorail{ - name = "launch track" - }, -/obj/structure/platform{ - dir = 8 + dir = 5; + icon_state = "darkyellow2" }, -/turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz1_tram) "aif" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ @@ -310,58 +281,31 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"aiK" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" - }, -/obj/structure/platform, +"aik" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /turf/open/floor/prison{ icon_state = "darkbrown2" }, -/area/fiorina/station/park) -"aiV" = ( -/obj/structure/bed/roller, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"aja" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"ajh" = ( -/obj/item/device/flashlight/on, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrowncorners2" - }, /area/fiorina/tumor/aux_engi) -"aji" = ( -/obj/structure/prop/resin_prop{ - icon_state = "sheater0" +"aiv" = ( +/obj/structure/bed{ + icon_state = "abed" }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "whitepurple" }, -/area/fiorina/tumor/servers) -"ajp" = ( -/obj/structure/barricade/wooden{ +/area/fiorina/station/research_cells) +"aje" = ( +/obj/structure/stairs/perspective{ dir = 4; - pixel_y = 4 - }, -/obj/structure/barricade/wooden, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "p_stair_sn_full_cap" }, -/area/fiorina/station/medbay) -"ajr" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "redcorner" +/obj/structure/platform{ + dir = 4 }, -/area/fiorina/station/security) +/turf/open/floor/plating/prison, +/area/fiorina/station/transit_hub) "aju" = ( /obj/structure/machinery/light/double/blue{ dir = 8; @@ -370,96 +314,84 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) +"ajw" = ( +/obj/item/stack/tile/plasteel{ + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) "ajx" = ( /obj/structure/platform/kutjevo/smooth, /turf/open/space/basic, /area/fiorina/oob) -"ajD" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, +"ajP" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/pizzabox/margherita, /turf/open/floor/prison{ - dir = 9; - icon_state = "yellow" - }, -/area/fiorina/station/disco) -"ajH" = ( -/obj/structure/surface/rack, -/obj/item/storage/toolbox/electrical{ - pixel_y = -3 + dir = 10; + icon_state = "whitegreenfull" }, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 6 +/area/fiorina/station/medbay) +"ajZ" = ( +/obj/effect/landmark{ + icon_state = "hive_spawn"; + name = "xeno_hive_spawn" }, -/obj/structure/machinery/light/double/blue, +/obj/effect/landmark/ert_spawns/groundside_xeno, /turf/open/floor/prison{ + dir = 1; icon_state = "darkbrown2" }, -/area/fiorina/maintenance) -"ajK" = ( +/area/fiorina/tumor/aux_engi) +"akp" = ( /turf/open/floor/prison{ - icon_state = "darkbrown2" + icon_state = "green" }, -/area/fiorina/station/park) -"ajN" = ( -/obj/structure/barricade/wooden, +/area/fiorina/station/chapel) +"akM" = ( +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "darkpurplefull2" }, +/area/fiorina/station/research_cells) +"akW" = ( +/obj/structure/bed/chair/janicart, +/turf/open/floor/prison, /area/fiorina/station/medbay) -"ajX" = ( -/obj/structure/mirror{ - pixel_x = -29 - }, -/obj/structure/sink{ +"akZ" = ( +/obj/structure/machinery/light/double/blue{ dir = 8; - pixel_x = -12; - pixel_y = 2 + pixel_x = -10; + pixel_y = -3 }, /turf/open/floor/prison{ - icon_state = "sterile_white" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/station/civres_blue) -"akc" = ( -/obj/effect/decal/cleanable/blood, +/area/fiorina/station/telecomm/lz1_tram) +"alC" = ( +/obj/structure/inflatable/popped, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) -"akw" = ( -/turf/open/floor/prison{ - dir = 5; - icon_state = "green" - }, /area/fiorina/station/transit_hub) -"akE" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/tumor/servers) -"alr" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_ew_full_cap" - }, -/obj/structure/platform/stair_cut, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzII) -"alu" = ( +"alK" = ( +/obj/item/trash/cigbutt/cigarbutt, /turf/open/floor/prison{ dir = 8; - icon_state = "cell_stripe" + icon_state = "darkyellow2" }, -/area/fiorina/oob) -"alJ" = ( -/obj/structure/inflatable/popped/door, +/area/fiorina/station/flight_deck) +"alP" = ( +/obj/effect/spawner/random/gun/rifle/midchance, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrown2" }, -/area/fiorina/tumor/servers) +/area/fiorina/station/park) "alX" = ( /obj/item/paper/crumpled/bloody, /turf/open/floor/prison/chapel_carpet{ @@ -467,6 +399,13 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) +"alY" = ( +/obj/item/stack/sheet/metal, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + icon_state = "platingdmg1" + }, +/area/fiorina/station/security) "amd" = ( /obj/effect/decal/hefa_cult_decals/d96, /obj/item/paper/crumpled/bloody, @@ -478,36 +417,39 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"ami" = ( -/obj/item/stack/sandbags/large_stack, -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"amj" = ( -/obj/structure/prop/resin_prop{ - icon_state = "sheater0" - }, +"amn" = ( /turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/tumor/aux_engi) -"amx" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" + dir = 4; + icon_state = "whitepurple" }, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) +/area/fiorina/station/research_cells) "amF" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/tumor/aux_engi) +"amZ" = ( +/obj/structure/barricade/wooden{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) "ane" = ( /obj/item/weapon/unathiknife{ name = "ceremonial knife" }, /turf/open/floor/wood, /area/fiorina/station/chapel) +"anl" = ( +/obj/item/pamphlet/engineer, +/obj/structure/closet, +/obj/item/handcuffs, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/station/lowsec) "anm" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer{ @@ -532,6 +474,13 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) +"ann" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) "anq" = ( /turf/closed/shuttle/ert{ icon_state = "stan9" @@ -544,10 +493,12 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"anG" = ( -/obj/structure/largecrate/supply, -/turf/open/floor/plating/plating_catwalk/prison, -/area/fiorina/station/medbay) +"any" = ( +/obj/item/stack/cable_coil/random, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) "anJ" = ( /obj/structure/cable/heavyduty{ icon_state = "1-2" @@ -561,116 +512,149 @@ }, /turf/open/floor/carpet, /area/fiorina/station/security/wardens) -"aoa" = ( -/obj/structure/largecrate/random/mini/med, -/turf/open/floor/prison{ - dir = 9; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"aoH" = ( -/obj/structure/surface/rack, -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +"anR" = ( +/obj/structure/stairs/perspective{ + dir = 5; + icon_state = "p_stair_full" }, -/area/fiorina/tumor/ice_lab) -"apf" = ( -/turf/open/floor/plating/prison, -/area/fiorina/station/civres_blue) -"app" = ( -/obj/item/trash/pistachios, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"anT" = ( +/obj/item/reagent_container/food/snacks/meat, +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "greenblue" }, -/area/fiorina/tumor/ice_lab) -"apw" = ( -/turf/open/auto_turf/sand/layer1, -/area/fiorina/tumor/civres) -"apy" = ( -/obj/structure/bed/sofa/vert/grey/bot{ - pixel_y = 8 +/area/fiorina/station/botany) +"anW" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"aqI" = ( /turf/open/floor/prison{ - icon_state = "red" + dir = 8; + icon_state = "green" }, -/area/fiorina/station/security) -"aqJ" = ( -/obj/structure/monorail{ - dir = 6; - name = "launch track" +/area/fiorina/station/chapel) +"aoo" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/flight_deck) +"aoZ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/reagent_dispensers/water_cooler/stacks{ + pixel_y = 11 }, -/turf/open/floor/plating/prison, -/area/fiorina/station/transit_hub) -"aqS" = ( -/obj/item/explosive/grenade/high_explosive/frag, /turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) +"ape" = ( +/obj/structure/bed/chair{ dir = 4; - icon_state = "darkyellowfull2" + pixel_y = 4 }, -/area/fiorina/tumor/servers) -"aqW" = ( -/obj/structure/platform{ - dir = 1 +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkbrowncorners2" }, -/obj/structure/platform{ - dir = 4 +/area/fiorina/maintenance) +"apf" = ( +/turf/open/floor/plating/prison, +/area/fiorina/station/civres_blue) +"apu" = ( +/turf/open/floor/prison{ + icon_state = "blue" }, -/obj/structure/platform_decoration{ - dir = 9 +/area/fiorina/station/power_ring) +"apw" = ( +/turf/open/auto_turf/sand/layer1, +/area/fiorina/tumor/civres) +"apO" = ( +/obj/structure/platform_decoration, +/turf/open/floor/prison{ + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) +"aqj" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_ew_full_cap" + }, +/obj/structure/platform/stair_cut/alt, +/turf/open/floor/plating/prison, +/area/fiorina/station/transit_hub) +"aqo" = ( +/obj/item/shard{ + icon_state = "large" }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/medbay) +"aqw" = ( +/obj/item/stool, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/civres_blue) "arl" = ( /obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"arm" = ( -/obj/structure/platform{ - dir = 4 - }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) "arn" = ( /obj/effect/landmark/nightmare{ insert_tag = "researchprestine" }, /turf/closed/wall/prison, /area/fiorina/station/research_cells) -"arq" = ( -/obj/effect/decal/cleanable/blood{ - dir = 4; - icon_state = "gib6" +"art" = ( +/obj/structure/platform{ + dir = 8 }, -/obj/item/stack/sheet/metal{ - amount = 5 +/turf/open/floor/prison{ + dir = 10; + icon_state = "greenblue" + }, +/area/fiorina/station/botany) +"arG" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "darkbrown2" }, -/area/fiorina/lz/near_lzI) -"aru" = ( -/obj/structure/reagent_dispensers/water_cooler, +/area/fiorina/tumor/aux_engi) +"arT" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) +"arW" = ( /turf/open/floor/prison{ - dir = 9; - icon_state = "yellow" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/lowsec) -"arS" = ( -/obj/effect/decal/hefa_cult_decals/d32{ - icon_state = "2" +/area/fiorina/oob) +"asf" = ( +/obj/structure/largecrate/random/barrel/white, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 5; + icon_state = "yellow" }, -/area/fiorina/tumor/servers) +/area/fiorina/station/disco) "ask" = ( /obj/structure/machinery/light/double/blue{ dir = 8; @@ -682,12 +666,48 @@ icon_state = "plate" }, /area/fiorina/tumor/aux_engi) +"aso" = ( +/obj/structure/inflatable/popped/door, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "ast" = ( /obj/structure/machinery/power/apc{ dir = 4 }, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz2_maint) +"asz" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) +"asE" = ( +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform, +/obj/structure/platform_decoration{ + dir = 6 + }, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) +"asI" = ( +/obj/item/toy/deck, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"atd" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) "atl" = ( /obj/structure/platform{ dir = 1 @@ -706,13 +726,6 @@ }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"atm" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/station/telecomm/lz1_tram) "atp" = ( /obj/item/book/manual/security_space_law{ pixel_x = 3; @@ -720,31 +733,26 @@ }, /turf/open/floor/plating/prison, /area/fiorina/oob) -"atx" = ( -/obj/structure/barricade/metal{ - health = 250; - icon_state = "metal_1" - }, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"atE" = ( +"atw" = ( +/obj/item/reagent_container/food/snacks/eat_bar, /turf/open/floor/prison{ - dir = 1; - icon_state = "cell_stripe" - }, -/area/fiorina/station/power_ring) -"auH" = ( -/obj/item/bodybag, -/obj/item/bodybag{ - pixel_y = 2 + dir = 10; + icon_state = "whitegreenfull" }, -/obj/item/bodybag{ - pixel_y = 4 +/area/fiorina/station/medbay) +"atY" = ( +/obj/structure/bedsheetbin, +/turf/open/floor/prison{ + dir = 8; + icon_state = "yellow" }, +/area/fiorina/station/lowsec) +"auj" = ( +/obj/item/frame/rack, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/tumor/servers) "auQ" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 9 @@ -760,87 +768,65 @@ name = "astroturf" }, /area/fiorina/station/park) -"avf" = ( -/obj/structure/machinery/computer/station_alert{ - dir = 4; - pixel_y = 5 - }, -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/aux_engi) -"avl" = ( +"auS" = ( +/obj/structure/closet/wardrobe/orange, +/obj/item/clothing/under/color/orange, /turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" + icon_state = "yellowfull" }, /area/fiorina/station/lowsec) -"avs" = ( -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/fiorina/station/research_cells) -"avI" = ( -/obj/structure/closet/bodybag, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" +"avc" = ( +/obj/structure/stairs/perspective{ + dir = 5; + icon_state = "p_stair_full" }, +/turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/research_cells) -"avX" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreencorner" - }, -/area/fiorina/station/medbay) +"avJ" = ( +/obj/item/reagent_container/food/drinks/cans/waterbottle, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"avT" = ( +/obj/item/trash/semki, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) "avY" = ( /obj/item/clothing/head/soft/rainbow, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"awh" = ( -/obj/structure/prop/resin_prop{ - icon_state = "rack" - }, -/obj/item/storage/toolbox, -/obj/item/storage/toolbox, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/tumor/servers) -"awo" = ( -/obj/structure/bed{ - icon_state = "abed" +"awL" = ( +/obj/structure/monorail{ + name = "launch track" }, -/obj/item/reagent_container/food/snacks/wrapped/barcardine, -/turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" +/turf/open/floor/plating/prison, +/area/fiorina/station/transit_hub) +"awU" = ( +/obj/structure/machinery/iv_drip{ + pixel_y = 19 }, -/area/fiorina/station/lowsec) -"awx" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/cameras, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"awF" = ( -/obj/effect/alien/weeds/node, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + dir = 1; + icon_state = "whitepurple" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/research_cells) "axb" = ( /obj/item/clothing/suit/storage/marine/specialist, /turf/open/floor/plating/prison, /area/fiorina/oob) -"axi" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "blue" +"axn" = ( +/obj/structure/monorail{ + dir = 4; + name = "launch track" }, -/area/fiorina/station/chapel) +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzII) +"axx" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) "axA" = ( /obj/structure/prop/almayer/computers/mission_planning_system{ density = 0; @@ -851,45 +837,62 @@ }, /turf/closed/wall/prison, /area/fiorina/station/security) -"ayv" = ( -/obj/item/trash/pistachios, +"aye" = ( +/obj/structure/bed/chair{ + dir = 1 + }, /turf/open/floor/prison{ - icon_state = "whitegreen" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) -"ayA" = ( +/area/fiorina/station/security) +"ayo" = ( /obj/structure/platform, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/station/security) +"ayB" = ( +/obj/structure/bed/chair{ + dir = 4; + pixel_x = -5 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"ayG" = ( +/obj/structure/machinery/power/apc{ + dir = 1 + }, /turf/open/floor/prison{ dir = 9; - icon_state = "greenfull" + icon_state = "yellow" }, -/area/fiorina/station/transit_hub) -"ayK" = ( +/area/fiorina/station/disco) +"ayH" = ( /obj/structure/surface/table/reinforced/prison, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_27"; - layer = 3.1; - pixel_x = -2; - pixel_y = 10 +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 22 }, /turf/open/floor/prison{ dir = 4; - icon_state = "redcorner" - }, -/area/fiorina/station/power_ring) -"ayM" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/ammo_magazine/pistol/heavy{ - pixel_y = 7 + icon_state = "darkyellowfull2" }, -/obj/item/ammo_magazine/pistol/heavy{ - pixel_y = 12 +/area/fiorina/station/flight_deck) +"ayW" = ( +/obj/structure/bed{ + icon_state = "abed" }, +/obj/item/explosive/grenade/incendiary/molotov, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "yellow" }, -/area/fiorina/station/medbay) +/area/fiorina/station/lowsec) "ayX" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ dir = 1; @@ -897,12 +900,6 @@ }, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"azg" = ( -/obj/item/prop/helmetgarb/gunoil, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/station/research_cells) "azs" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 10 @@ -919,45 +916,23 @@ /obj/structure/girder, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"azI" = ( -/obj/item/prop/helmetgarb/spacejam_tickets{ - desc = "A ticket to Souto Man's raffle!"; - name = "\improper Souto Raffle Ticket"; - pixel_x = 7; - pixel_y = 6 - }, -/turf/open/floor/prison{ - dir = 8; - icon_state = "blue" - }, -/area/fiorina/station/chapel) -"azJ" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_29"; - pixel_y = 6 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/security) -"azN" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" +"azK" = ( +/obj/structure/machinery/microwave{ + desc = "There's two of them."; + pixel_y = 5 }, -/turf/open/floor/plating/prison, -/area/fiorina/station/civres_blue) -"azT" = ( -/obj/item/inflatable, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/microwave{ + desc = "Holy shit"; + pixel_y = 18 }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" +/obj/item/storage/pill_bottle/kelotane/skillless{ + desc = "Don't touch -Dr. O"; + pixel_x = 6; + pixel_y = 31 }, -/area/fiorina/station/lowsec) +/turf/open/floor/prison, +/area/fiorina/station/medbay) "azZ" = ( /turf/closed/wall/mineral/bone_resin, /area/fiorina/tumor/ice_lab) @@ -969,17 +944,18 @@ }, /turf/open/floor/almayer, /area/fiorina/tumor/ship) -"aAH" = ( -/obj/item/device/multitool, +"aAk" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"aAA" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"aAM" = ( -/obj/structure/reagent_dispensers/fueltank/gas/hydrogen{ - layer = 2.6 + dir = 1; + icon_state = "green" }, -/obj/structure/machinery/light/double/blue, +/area/fiorina/station/transit_hub) +"aAJ" = ( +/obj/structure/bed/sofa/vert/grey, /turf/open/floor/prison{ icon_state = "floor_plate" }, @@ -992,21 +968,6 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"aBk" = ( -/obj/effect/spawner/random/tool, -/obj/structure/surface/rack, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/tumor/aux_engi) -"aBm" = ( -/obj/item/trash/uscm_mre, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_cargo) "aBs" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 5 @@ -1022,6 +983,18 @@ name = "astroturf" }, /area/fiorina/station/civres_blue) +"aBD" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 10 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/park) "aBJ" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/book/manual/chef_recipes{ @@ -1029,39 +1002,10 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"aBO" = ( -/obj/item/ammo_magazine/rifle/m16, +"aBZ" = ( +/obj/effect/landmark/yautja_teleport, /turf/open/floor/prison, -/area/fiorina/station/security) -"aBX" = ( -/obj/effect/decal/cleanable/blood/splatter, -/obj/structure/surface/rack, -/obj/item/clothing/gloves/latex, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"aCi" = ( -/obj/structure/prop/invuln{ - desc = "Floating cells are reserved for highly dangerous criminals. Whoever is out there is probably best left out there."; - icon = 'icons/obj/structures/doors/celldoor.dmi'; - icon_state = "door_closed"; - layer = 2.5; - name = "cell door" - }, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/servers) -"aCn" = ( -/obj/item/device/flashlight/lamp/tripod, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" - }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/park) "aCC" = ( /obj/item/tool/soap{ pixel_x = 2; @@ -1069,188 +1013,100 @@ }, /turf/open/floor/plating/plating_catwalk, /area/fiorina/tumor/ship) -"aCO" = ( -/obj/structure/bed/chair{ - dir = 1; - pixel_y = 3 - }, -/obj/item/reagent_container/food/drinks/cans/beer{ - pixel_x = 12; - pixel_y = 8 - }, +"aCZ" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) +"aDc" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) -"aCT" = ( -/obj/structure/bed/sofa/south/grey/left, +/area/fiorina/tumor/servers) +"aDx" = ( /turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"aCV" = ( -/obj/item/explosive/grenade/high_explosive/m15{ - pixel_x = -9; - pixel_y = -8 - }, -/obj/item/explosive/grenade/high_explosive/frag{ - pixel_x = 6; - pixel_y = 3 + icon_state = "yellow" }, +/area/fiorina/station/central_ring) +"aEi" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/civres) +"aEB" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + dir = 8; + icon_state = "cell_stripe" }, -/area/fiorina/tumor/servers) -"aDh" = ( +/area/fiorina/station/security/wardens) +"aEC" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/oob) -"aDi" = ( -/obj/structure/machinery/vending/snack/packaged, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"aDl" = ( -/obj/structure/machinery/vending/cola, -/obj/structure/prop/souto_land/streamer{ - dir = 1; - pixel_y = 24 +/area/fiorina/station/power_ring) +"aEG" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" }, +/area/fiorina/station/medbay) +"aEQ" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" + icon_state = "floor_plate" }, -/area/fiorina/station/park) -"aDr" = ( +/area/fiorina/station/telecomm/lz1_cargo) +"aFp" = ( +/obj/structure/machinery/defenses/tesla_coil{ + faction_group = list("CLF") + }, +/turf/open/floor/plating/plating_catwalk, +/area/fiorina/tumor/ship) +"aFK" = ( /obj/structure/machinery/light/double/blue{ dir = 8; pixel_x = -10; - pixel_y = -3 - }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"aDs" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/powercell, -/obj/item/storage/syringe_case/burn{ - pixel_x = -10; - pixel_y = 8 + pixel_y = 13 }, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/station/research_cells) -"aDw" = ( -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 - }, -/obj/structure/platform_decoration, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/disco) -"aDC" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/book/manual/security_space_law{ - pixel_x = 8; - pixel_y = 1 - }, -/obj/item/book/manual/security_space_law{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/book/manual/security_space_law{ - pixel_x = 3; - pixel_y = 5 - }, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"aEi" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/civres) -"aFg" = ( -/obj/structure/bed/sofa/south/grey/right, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/security/wardens) -"aFh" = ( -/obj/structure/toilet{ - dir = 4; - pixel_y = 8 - }, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/prison{ - dir = 9; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"aFn" = ( -/obj/structure/machinery/vending/coffee, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"aFp" = ( -/obj/structure/machinery/defenses/tesla_coil{ - faction_group = list("CLF") - }, -/turf/open/floor/plating/plating_catwalk, -/area/fiorina/tumor/ship) -"aFJ" = ( -/obj/item/tool/wrench, -/turf/open/floor/prison{ - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"aFK" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 - }, -/turf/open/floor/corsat{ - icon_state = "plate" +/turf/open/floor/corsat{ + icon_state = "plate" }, /area/fiorina/station/telecomm/lz1_cargo) -"aFO" = ( -/obj/structure/largecrate/supply/floodlights, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"aFQ" = ( +/obj/effect/decal/cleanable/blood/splatter{ + icon_state = "gibmid3" }, -/area/fiorina/station/disco) -"aFV" = ( -/obj/item/stack/sheet/wood, -/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "whitepurple" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/medbay) "aFZ" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/medbay) -"aGs" = ( -/obj/structure/window/framed/prison/reinforced{ - opacity = 1 +"aGF" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/frame/firstaid_arm_assembly, +/obj/item/stack/nanopaste{ + pixel_x = 11; + pixel_y = 6 }, -/obj/structure/machinery/door/poddoor/shutters/almayer, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/chapel) -"aGS" = ( -/obj/structure/lattice, -/obj/structure/platform_decoration/kutjevo{ - dir = 1 +/area/fiorina/station/security/wardens) +"aGR" = ( +/obj/structure/largecrate/random, +/obj/effect/spawner/random/powercell, +/obj/item/device/camera/oldcamera{ + pixel_y = 11 }, -/turf/open/space, -/area/fiorina/oob) -"aGV" = ( -/obj/structure/largecrate/random/barrel/red, /turf/open/floor/prison, -/area/fiorina/station/security) +/area/fiorina/station/power_ring) "aHg" = ( /obj/structure/prop/resin_prop, /turf/open/floor/plating/prison, @@ -1259,139 +1115,76 @@ /obj/item/tool/crowbar, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/lz/near_lzI) -"aHs" = ( -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/fiorina/station/research_cells) -"aHx" = ( -/obj/structure/platform, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/transit_hub) -"aHA" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_ew_full_cap" - }, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzI) -"aHY" = ( -/obj/structure/closet/secure_closet/guncabinet{ - req_access = null - }, -/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/clothing/under/marine/ua_riot, -/obj/item/storage/pill_bottle/alkysine, -/obj/item/clothing/suit/storage/marine/veteran/ua_riot, +"aHH" = ( +/obj/item/tool/shovel/etool, +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) +"aHJ" = ( +/obj/structure/machinery/vending/cola, /turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"aIf" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_ew_full_cap" + icon_state = "darkbrownfull2" }, -/obj/structure/platform/stair_cut, -/turf/open/floor/plating/prison, -/area/fiorina/station/security) -"aIh" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/tumor/aux_engi) +"aHK" = ( +/obj/item/ammo_casing{ + icon_state = "casing_1" }, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/lz/near_lzI) -"aIp" = ( -/obj/structure/closet/secure_closet/personal, +/area/fiorina/station/medbay) +"aId" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/hypospray, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/station/telecomm/lz1_cargo) -"aIv" = ( -/obj/structure/bed{ - icon_state = "abed" +/area/fiorina/station/botany) +"aIm" = ( +/obj/structure/barricade/deployable{ + dir = 4 }, -/obj/item/storage/box/holobadge{ - pixel_y = 3 +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/station/security) +"aIB" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" + icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) -"aIE" = ( +/area/fiorina/station/park) +"aJk" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/snacks/meat{ - pixel_x = -1; - pixel_y = 2 - }, -/obj/item/reagent_container/food/snacks/meat{ - pixel_x = -1; - pixel_y = 4 - }, -/obj/item/reagent_container/food/snacks/meat{ - pixel_x = -1; - pixel_y = 6 - }, +/obj/structure/machinery/computer/atmos_alert, /turf/open/floor/prison{ - icon_state = "kitchen" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/power_ring) -"aIK" = ( -/obj/structure/surface/rack, -/obj/item/tool/plantspray/weeds, -/turf/open/floor/prison{ +/area/fiorina/tumor/ice_lab) +"aJo" = ( +/obj/structure/bed/chair{ dir = 4; - icon_state = "blue_plate" - }, -/area/fiorina/station/botany) -"aIR" = ( -/obj/structure/machinery/vending/cigarette/colony, -/turf/open/floor/prison{ - icon_state = "bluefull" + pixel_x = -5 }, -/area/fiorina/station/power_ring) -"aIZ" = ( -/obj/structure/prop/resin_prop{ - icon_state = "rack" +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "whitegreen" }, -/area/fiorina/tumor/servers) -"aJf" = ( -/obj/structure/surface/rack, -/obj/item/storage/toolbox/emergency, +/area/fiorina/station/medbay) +"aJv" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 6; + icon_state = "darkbrown2" }, /area/fiorina/tumor/aux_engi) -"aJg" = ( -/turf/open/floor/prison{ - icon_state = "platingdmg3" - }, -/area/fiorina/maintenance) -"aJK" = ( -/obj/structure/closet/secure_closet/freezer/fridge, -/obj/item/reagent_container/food/snacks/meat/human, -/obj/item/reagent_container/food/snacks/meat/human, -/obj/structure/machinery/light/double/blue, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" - }, -/area/fiorina/station/civres_blue) "aJX" = ( /obj/structure/bed/chair{ dir = 8 @@ -1403,43 +1196,32 @@ }, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"aKc" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/drinks/bottle/sake, +"aKb" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" + dir = 9; + icon_state = "whitegreen" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/medbay) "aKA" = ( /obj/structure/platform_decoration/kutjevo{ dir = 1 }, /turf/open/space, /area/fiorina/oob) -"aKF" = ( -/obj/item/storage/backpack{ - pixel_x = -11; - pixel_y = 15 - }, -/obj/item/trash/syndi_cakes, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"aKN" = ( +/obj/structure/machinery/computer/cameras{ + network = list("omega") }, -/area/fiorina/station/lowsec) -"aKW" = ( +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/tumor/aux_engi) -"aLj" = ( -/obj/structure/closet/crate/miningcar{ - name = "\improper materials storage bin" - }, -/turf/open/floor/prison{ - icon_state = "greenblue" - }, -/area/fiorina/station/botany) "aLp" = ( /obj/structure/prop/invuln{ desc = "An inflated membrane. This one is puncture proof. Wow!"; @@ -1449,33 +1231,65 @@ /obj/structure/blocker/invisible_wall, /turf/open/floor/almayer_hull, /area/fiorina/station/medbay) -"aLR" = ( -/obj/item/stack/medical/bruise_pack, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) +"aLz" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) +"aLC" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, +/obj/effect/spawner/random/pills/lowchance, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) "aLT" = ( /obj/item/trash/uscm_mre, /turf/open/floor/plating/prison, /area/fiorina/maintenance) +"aLX" = ( +/obj/structure/bed/chair{ + dir = 1; + layer = 2.7 + }, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) "aMg" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/tumor/ice_lab) -"aMq" = ( +"aMr" = ( +/obj/structure/platform_decoration, /turf/open/floor/prison{ - dir = 1; - icon_state = "bluecorner" + icon_state = "bluefull" }, -/area/fiorina/station/civres_blue) -"aMz" = ( +/area/fiorina/station/power_ring) +"aMu" = ( +/obj/effect/alien/weeds/node, +/turf/open/floor/prison{ + dir = 5; + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) +"aME" = ( /obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/security) "aMM" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ dir = 1; @@ -1483,69 +1297,87 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/botany) -"aMZ" = ( -/obj/structure/platform_decoration{ - dir = 4 +"aMS" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/ashtray/plastic, +/obj/item/clothing/mask/cigarette, +/obj/item/trash/cigbutt/ucigbutt{ + pixel_y = 8 }, -/turf/open/floor/prison{ - dir = 5; - icon_state = "darkbrown2" +/obj/structure/sign/nosmoking_1{ + pixel_y = 30 }, -/area/fiorina/station/park) -"aNn" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "darkbrown2" + icon_state = "redfull" }, -/area/fiorina/station/park) -"aNw" = ( -/obj/structure/lattice, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/area/fiorina/station/security) +"aNk" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 }, -/turf/open/space, -/area/fiorina/oob) -"aNP" = ( -/obj/structure/inflatable, -/obj/structure/barricade/handrail/type_b, -/obj/structure/barricade/handrail/type_b{ - dir = 4 +/turf/open/floor/prison, +/area/fiorina/station/security) +"aNz" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/machinery/cm_vending/sorted/tech/tool_storage{ + layer = 3.5 + }, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/station/power_ring) "aOc" = ( /turf/closed/shuttle/ert{ icon_state = "rightengine_3"; opacity = 0 }, /area/fiorina/tumor/ship) -"aOd" = ( +"aOm" = ( +/turf/open/floor/prison{ + icon_state = "panelscorched" + }, +/area/fiorina/tumor/servers) +"aOC" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_tram) +"aOL" = ( +/obj/structure/filingcabinet{ + pixel_x = -8 + }, +/obj/structure/filingcabinet{ + pixel_x = 8 + }, +/obj/item/reagent_container/food/drinks/coffeecup{ + pixel_x = -7; + pixel_y = 11 }, -/area/fiorina/tumor/ice_lab) -"aOh" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" + icon_state = "redfull" + }, +/area/fiorina/station/security) +"aOT" = ( +/obj/structure/machinery/landinglight/ds2{ + dir = 4 }, -/area/fiorina/oob) -"aOJ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/lz/near_lzII) "aPd" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 1 @@ -1557,22 +1389,17 @@ name = "astroturf" }, /area/fiorina/station/park) -"aPi" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" - }, -/area/fiorina/station/disco) -"aPq" = ( -/obj/structure/bed{ - icon_state = "abed" - }, -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitepurple" +"aPr" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_ew_full_cap" }, -/area/fiorina/station/research_cells) +/obj/structure/platform/stair_cut/alt, +/turf/open/floor/plating/prison, +/area/fiorina/station/security) +"aPv" = ( +/obj/structure/extinguisher_cabinet, +/turf/closed/wall/prison, +/area/fiorina/station/central_ring) "aPD" = ( /obj/structure/prop/invuln{ desc = "An inflated membrane. This one is puncture proof. Wow!"; @@ -1582,65 +1409,52 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"aPF" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_7" - }, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) "aPH" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/security/wardens) -"aQE" = ( -/obj/item/stack/sheet/metal{ - amount = 5 +"aPO" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" + icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzI) -"aQK" = ( -/obj/item/trash/uscm_mre, -/obj/effect/landmark/corpsespawner/ua_riot, -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" +/area/fiorina/station/civres_blue) +"aQH" = ( +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, +/obj/effect/landmark/nightmare{ + insert_tag = "yardbasketball" }, -/area/fiorina/station/flight_deck) -"aQM" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) +"aQR" = ( +/obj/structure/machinery/vending/cola, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrown2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) -"aQU" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_sn_full_cap" +/area/fiorina/station/transit_hub) +"aQW" = ( +/obj/structure/barricade/sandbags{ + dir = 8; + icon_state = "sandbag_0"; + pixel_y = 2 }, /turf/open/floor/prison, -/area/fiorina/station/security) -"aQZ" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/prison{ - dir = 4; - icon_state = "red" - }, -/area/fiorina/station/security) -"aRb" = ( -/obj/structure/largecrate/random/secure, -/obj/structure/barricade/wooden{ - dir = 4 +/area/fiorina/lz/near_lzII) +"aQY" = ( +/obj/structure/platform{ + dir = 1 }, /turf/open/floor/prison{ dir = 10; - icon_state = "whitepurple" + icon_state = "whitegreenfull" }, -/area/fiorina/station/research_cells) +/area/fiorina/tumor/ice_lab) "aRk" = ( /obj/structure/cargo_container/grant/left, /turf/open/floor/plating/plating_catwalk/prison, @@ -1651,26 +1465,12 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"aRx" = ( -/obj/structure/closet/crate/medical, -/obj/item/storage/pill_bottle/tramadol/skillless, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"aRB" = ( -/obj/item/ammo_casing{ - icon_state = "cartridge_2" - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"aRG" = ( +"aRv" = ( +/obj/structure/platform, +/obj/structure/closet/firecloset/full, +/obj/item/paper/prison_station/inmate_handbook, /turf/open/floor/prison, -/area/fiorina/station/flight_deck) +/area/fiorina/lz/near_lzI) "aRT" = ( /obj/structure/barricade/handrail/type_b{ layer = 3.5 @@ -1680,43 +1480,60 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"aRY" = ( -/obj/structure/barricade/wooden{ +"aSm" = ( +/obj/structure/bed/chair{ dir = 8 }, -/obj/structure/bed/chair/wheelchair{ - desc = "Great scott, it can move on its own!"; - dir = 4; - icon_state = "officechair_white"; - name = "Dr. O's fantastic self rolling wheelie chair"; - pixel_x = 7 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"aSw" = ( -/obj/structure/inflatable/door, /turf/open/floor/prison{ - icon_state = "whitegreencorner" + dir = 4; + icon_state = "whitegreen" }, /area/fiorina/station/medbay) "aSz" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/station/research_cells) +"aSA" = ( +/obj/structure/bed/sofa/vert/grey/top, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"aSM" = ( +/obj/effect/spawner/random/gun/shotgun/highchance{ + mags_max = 0; + mags_min = 0 + }, +/turf/open/floor/prison, +/area/fiorina/station/chapel) "aSS" = ( /obj/structure/extinguisher_cabinet, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/medbay) +"aTe" = ( +/obj/structure/machinery/landinglight/ds1/delaytwo, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/fiorina/lz/near_lzI) "aTo" = ( /turf/closed/wall/mineral/bone_resin, /area/fiorina/station/transit_hub) +"aTx" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison, +/area/fiorina/station/security) "aTE" = ( /obj/structure/bed/chair{ dir = 1 }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) +"aTL" = ( +/obj/structure/bed/chair{ + dir = 4; + layer = 2.8 + }, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) "aTM" = ( /obj/item/stack/tile/plasteel{ pixel_x = 12; @@ -1724,123 +1541,37 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"aTN" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/fiorina/oob) -"aUa" = ( -/obj/structure/machinery/portable_atmospherics/powered/scrubber, -/turf/open/floor/prison{ - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"aUx" = ( -/obj/structure/sign/poster{ - desc = "Hubba hubba."; - icon_state = "poster17"; - name = "magazine" - }, -/obj/structure/sign/poster{ - desc = "Hubba hubba."; - icon_state = "poster3"; - name = "magazine"; - pixel_x = 6; - pixel_y = 8 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"aVd" = ( -/obj/effect/landmark/monkey_spawn, -/turf/open/floor/plating/prison, -/area/fiorina/station/transit_hub) -"aVh" = ( -/obj/structure/monorail{ - dir = 4; - name = "launch track" - }, +"aTO" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/toy/deck/uno, /turf/open/floor/prison{ dir = 9; icon_state = "greenfull" }, -/area/fiorina/station/transit_hub) -"aVA" = ( -/obj/structure/bed/chair/comfy{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "darkyellow2" - }, -/area/fiorina/station/flight_deck) -"aVD" = ( +/area/fiorina/station/botany) +"aTY" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/card/id/guest{ - pixel_x = -2; - pixel_y = 6 - }, -/obj/item/card/id/guest, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"aVE" = ( -/obj/vehicle/train/cargo/engine, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"aVJ" = ( -/obj/structure/machinery/vending/coffee, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/civres_blue) -"aVK" = ( -/obj/structure/machinery/landinglight/ds1/delayone{ - dir = 1 - }, +/obj/item/storage/briefcase, /turf/open/floor/prison{ dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/lz/near_lzI) -"aVN" = ( -/obj/structure/bed/sofa/south/grey/right, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"aVS" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/prison{ - dir = 1; icon_state = "blue_plate" }, /area/fiorina/station/botany) -"aVT" = ( -/obj/structure/barricade/wooden{ - desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; - dir = 1; - health = 25000; - pixel_y = 19 - }, -/obj/item/stack/sheet/wood, -/obj/structure/machinery/computer/cameras/wooden_tv{ - desc = "Somehow, it still functions."; - layer = 3.1; - name = "discarded camera console"; - pixel_x = -6; - pixel_y = 5 - }, +"aUg" = ( +/obj/item/tool/crowbar/red, +/turf/open/floor/prison, +/area/fiorina/station/security) +"aUA" = ( +/obj/item/stack/cable_coil/orange, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/servers) +/area/fiorina/tumor/ice_lab) +"aVd" = ( +/obj/effect/landmark/monkey_spawn, +/turf/open/floor/plating/prison, +/area/fiorina/station/transit_hub) "aVU" = ( /turf/open/floor/corsat{ icon_state = "squares" @@ -1849,35 +1580,15 @@ "aWk" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/telecomm/lz2_maint) -"aWo" = ( -/obj/structure/platform_decoration{ - dir = 4 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) -"aWD" = ( -/obj/item/device/taperecorder{ - pixel_x = 1; - pixel_y = 3 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/chapel) -"aWP" = ( -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" +"aWI" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/area/fiorina/station/telecomm/lz1_cargo) -"aWR" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "whitegreen" }, -/area/fiorina/lz/near_lzII) +/area/fiorina/station/medbay) "aWV" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/tumor/servers) @@ -1892,38 +1603,81 @@ dir = 5 }, /area/fiorina/tumor/aux_engi) -"aXM" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/stack/cable_coil/orange, +"aXp" = ( +/obj/structure/barricade/wooden{ + dir = 8 + }, +/obj/structure/bed/chair/wheelchair{ + desc = "Great scott, it can move on its own!"; + dir = 4; + icon_state = "officechair_white"; + name = "Dr. O's fantastic self rolling wheelie chair"; + pixel_x = 7 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/maintenance) -"aYA" = ( +/area/fiorina/station/telecomm/lz1_cargo) +"aXv" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"aXx" = ( /obj/structure/machinery/light/double/blue{ dir = 4; pixel_x = 10; - pixel_y = -3 + pixel_y = 13 }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"aXC" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "damaged2" }, /area/fiorina/station/lowsec) -"aYZ" = ( -/obj/structure/machinery/disposal, +"aXO" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "damaged2" }, -/area/fiorina/station/security/wardens) -"aZz" = ( -/obj/item/ammo_casing{ - icon_state = "casing_5" +/area/fiorina/station/central_ring) +"aXR" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/device/camera, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" }, +/area/fiorina/station/medbay) +"aYf" = ( +/obj/item/tool/scythe, /turf/open/floor/prison{ dir = 8; - icon_state = "whitegreen" + icon_state = "blue_plate" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/botany) +"aYg" = ( +/obj/structure/machinery/shower{ + dir = 1; + pixel_y = -1 + }, +/obj/structure/machinery/shower{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/fiorina/station/research_cells) +"aZi" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/tumor/servers) "aZD" = ( /obj/structure/platform{ dir = 8 @@ -1940,43 +1694,24 @@ }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) +"aZL" = ( +/turf/open/floor/prison{ + dir = 5; + icon_state = "yellow" + }, +/area/fiorina/station/disco) "aZN" = ( /obj/item/toy/crayon/yellow, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"aZQ" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/prison{ - dir = 1; - icon_state = "blue" - }, -/area/fiorina/station/power_ring) -"aZU" = ( -/obj/structure/bed/chair{ +"aZW" = ( +/obj/structure/platform_decoration{ dir = 8 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/fiorina/tumor/civres) -"aZZ" = ( -/obj/effect/landmark/survivor_spawner, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/station/research_cells) -"bac" = ( -/obj/item/stack/sheet/wood{ - pixel_x = 1; - pixel_y = -3 - }, -/obj/item/stack/sheet/wood, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) +/area/fiorina/station/park) "baC" = ( /turf/closed/wall/mineral/bone_resin, /area/fiorina/station) @@ -1985,19 +1720,54 @@ /obj/item/stack/catwalk, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"bby" = ( -/turf/open/floor/prison, +"baM" = ( +/obj/effect/spawner/random/gun/smg, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) +"bbn" = ( +/obj/item/device/motiondetector, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/disco) +"bbp" = ( +/obj/structure/filingcabinet{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/structure/filingcabinet{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, /area/fiorina/tumor/civres) -"bbT" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 +"bbI" = ( +/obj/item/stool{ + pixel_x = -4; + pixel_y = 23 }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) +"bbU" = ( +/obj/structure/sign/safety/fire_haz, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_tram) +/area/fiorina/tumor/civres) +"bcd" = ( +/obj/structure/machinery/vending/coffee, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/flight_deck) "bce" = ( /obj/structure/lattice, /turf/open/space/basic, @@ -2007,81 +1777,71 @@ /obj/item/storage/pill_bottle/kelotane/skillless, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"bcg" = ( -/obj/structure/platform{ - dir = 4 - }, +"bcp" = ( /turf/open/floor/prison{ - dir = 6; - icon_state = "greenblue" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/station/botany) -"bck" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/phone{ - pixel_y = 7 +/area/fiorina/station/telecomm/lz1_tram) +"bcq" = ( +/obj/item/prop/helmetgarb/riot_shield, +/turf/open/floor/prison, +/area/fiorina/station/security) +"bcz" = ( +/obj/structure/machinery/light/small{ + dir = 4; + pixel_x = 11; + pixel_y = 10 }, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "floor_plate" }, -/area/fiorina/station/security) -"bcs" = ( -/obj/structure/largecrate/random, +/area/fiorina/tumor/aux_engi) +"bcT" = ( +/obj/structure/platform, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + icon_state = "darkbrown2" }, /area/fiorina/station/park) -"bcF" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/trash/plate, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +"bcX" = ( +/obj/item/tool/warning_cone, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 }, -/area/fiorina/station/medbay) -"bcH" = ( -/obj/item/tool/screwdriver, /turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"bcV" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/station/telecomm/lz1_cargo) +"bdb" = ( +/obj/structure/bed/chair{ + dir = 4 }, -/area/fiorina/tumor/ice_lab) -"bdI" = ( -/obj/structure/bed/roller, -/obj/item/bedsheet/green, /turf/open/floor/prison{ - dir = 1; - icon_state = "whitepurple" + icon_state = "darkbrown2" }, -/area/fiorina/station/research_cells) -"bdL" = ( -/obj/structure/inflatable/door, +/area/fiorina/station/park) +"bdE" = ( +/obj/item/stack/cable_coil, /turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"bdS" = ( -/obj/item/tool/weldingtool{ - pixel_x = 6; - pixel_y = -2 +/area/fiorina/tumor/civres) +"bec" = ( +/obj/item/stack/sheet/metal{ + amount = 5 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "darkyellow2" }, -/area/fiorina/tumor/servers) -"bej" = ( -/obj/structure/barricade/handrail/type_b, -/obj/structure/barricade/handrail/type_b{ - dir = 4 +/area/fiorina/lz/near_lzI) +"beh" = ( +/obj/effect/landmark/monkey_spawn, +/turf/open/floor/prison{ + dir = 8; + icon_state = "whitegreencorner" }, -/turf/open/floor/prison, -/area/fiorina/station/disco) +/area/fiorina/tumor/ice_lab) "bel" = ( /obj/structure/prop/structure_lattice{ dir = 1; @@ -2093,10 +1853,31 @@ icon_state = "squares" }, /area/fiorina/station/civres_blue) -"beV" = ( -/turf/open/floor/prison{ +"bem" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) +"ber" = ( +/obj/structure/inflatable/popped/door, +/obj/item/ammo_magazine/m56d, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"bez" = ( +/obj/structure/disposalpipe/segment{ + color = "#c4c4c4"; dir = 4; - icon_state = "bluecorner" + layer = 6; + name = "overhead pipe"; + pixel_y = 20 + }, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"beB" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "blue" }, /area/fiorina/station/power_ring) "beW" = ( @@ -2106,52 +1887,19 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"bfb" = ( -/obj/structure/closet/crate/miningcar{ - name = "\improper materials storage bin" - }, -/obj/item/reagent_container/food/snacks/meat, -/turf/open/floor/prison{ - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"bfg" = ( -/obj/structure/surface/rack, -/obj/item/storage/bible/hefa{ - pixel_y = 3 - }, -/obj/item/storage/bible/hefa, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"bfs" = ( -/obj/item/stack/sheet/wood{ - amount = 10 - }, +"bff" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/firstaid/regular, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "bluefull" }, -/area/fiorina/station/telecomm/lz1_cargo) -"bfx" = ( -/obj/item/trash/barcardine, -/turf/open/floor/prison, -/area/fiorina/station/security) +/area/fiorina/station/civres_blue) "bfF" = ( /obj/structure/cable/heavyduty{ icon_state = "4-8" }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"bfZ" = ( -/turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"bgb" = ( -/obj/structure/surface/rack, -/obj/item/storage/pill_bottle/bicaridine/skillless, -/obj/item/storage/pill_bottle/bicaridine/skillless, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/medbay) "bgc" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/plating/prison, @@ -2167,27 +1915,18 @@ /obj/item/trash/pistachios, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"bgG" = ( -/obj/structure/reagent_dispensers/watertank{ - layer = 2.6 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/lz/near_lzII) -"bgR" = ( -/obj/effect/decal/medical_decals{ - icon_state = "triagedecalleft" - }, +"bgD" = ( +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "whitegreenfull" }, -/area/fiorina/station/medbay) -"bha" = ( -/obj/structure/platform_decoration, +/area/fiorina/tumor/ice_lab) +"bhf" = ( +/obj/item/fuelCell, +/obj/structure/surface/rack, /turf/open/floor/prison, -/area/fiorina/station/medbay) +/area/fiorina/maintenance) "bht" = ( /obj/effect/decal/cleanable/blood{ icon_state = "xgib4" @@ -2207,104 +1946,103 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"bhM" = ( -/obj/structure/bed/chair, -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/disco) -"bhR" = ( -/obj/item/device/flashlight/lamp/tripod, +"bhW" = ( /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 4; + icon_state = "greencorner" }, -/area/fiorina/station/research_cells) +/area/fiorina/tumor/civres) "bhX" = ( /turf/open/floor/plating/prison, /area/fiorina/station/flight_deck) "bis" = ( /turf/closed/wall/prison, /area/fiorina/station/chapel) -"biH" = ( -/obj/structure/machinery/door/poddoor/almayer{ - density = 0; - dir = 4 - }, +"bix" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "darkyellow2" }, -/area/fiorina/station/park) -"biJ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/tool/kitchen/utensil/fork, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +/area/fiorina/station/telecomm/lz1_cargo) +"bjf" = ( +/obj/item/tool/warning_cone, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_cargo) +"bjo" = ( +/obj/structure/window/reinforced{ + dir = 4 }, -/area/fiorina/station/research_cells) -"bjk" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/faxmachine, +/turf/open/floor/prison, +/area/fiorina/station/security) +"bjt" = ( +/obj/structure/bed{ + icon_state = "abed" }, +/obj/item/bedsheet/green, /turf/open/floor/prison{ dir = 6; icon_state = "yellow" }, /area/fiorina/station/lowsec) -"bju" = ( -/obj/docking_port/stationary/marine_dropship/lz1, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzI) -"bjx" = ( +"bjR" = ( +/obj/structure/bed/chair, /turf/open/floor/prison{ - dir = 1; - icon_state = "green" + icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"bjy" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, +/area/fiorina/tumor/aux_engi) +"bjZ" = ( +/obj/item/weapon/twohanded/spear, /turf/open/floor/prison{ - dir = 9; - icon_state = "whitegreen" + icon_state = "darkpurplefull2" }, -/area/fiorina/tumor/ice_lab) -"bjO" = ( -/obj/structure/closet/bodybag, +/area/fiorina/station/research_cells) +"bkg" = ( +/obj/structure/bed/chair, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"bki" = ( +/obj/structure/closet{ + density = 0; + pixel_y = 18 + }, +/obj/item/clothing/gloves/boxing/yellow, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 5; + icon_state = "yellow" }, -/area/fiorina/station/medbay) -"bka" = ( -/obj/structure/monorail{ - dir = 4; - name = "launch track" +/area/fiorina/station/lowsec) +"bkQ" = ( +/obj/item/ammo_casing{ + icon_state = "casing_7_1" }, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/aux_engi) -"bkS" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "red" - }, -/area/fiorina/lz/near_lzII) -"blb" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 + icon_state = "floor_plate" }, +/area/fiorina/station/lowsec) +"bkU" = ( +/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"bln" = ( -/obj/item/trash/used_stasis_bag{ - desc = "Wow, instant sand. They really have everything in space."; - name = "Insta-Sand! bag" +/area/fiorina/station/central_ring) +"ble" = ( +/obj/structure/prop/resin_prop{ + icon_state = "rack" }, /turf/open/floor/prison{ - dir = 4; - icon_state = "green" + icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) +/area/fiorina/tumor/aux_engi) +"blA" = ( +/obj/item/shard{ + icon_state = "medium"; + name = "ice shard" + }, +/turf/open/floor/prison{ + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) "blG" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 2; @@ -2312,169 +2050,215 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"blQ" = ( -/obj/structure/inflatable/popped/door, +"bma" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/newspaper, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 4; + icon_state = "blue_plate" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/botany) +"bmw" = ( +/obj/item/storage/fancy/cigarettes/lucky_strikes, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/park) "bmE" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"bmO" = ( -/obj/effect/decal{ - icon = 'icons/obj/items/policetape.dmi'; - icon_state = "engineering_h"; - layer = 2.5; - pixel_y = -11 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" +"bmT" = ( +/obj/structure/monorail{ + dir = 4; + name = "launch track" }, -/area/fiorina/station/flight_deck) +/turf/open/space, +/area/fiorina/oob) "bmV" = ( /obj/item/device/flashlight/lamp/tripod, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"bmX" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/cameras{ - dir = 1 +"bne" = ( +/obj/structure/machinery/landinglight/ds2/delaytwo, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/lz/near_lzII) +"bnh" = ( +/obj/item/storage/briefcase, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/transit_hub) +"bno" = ( +/obj/structure/barricade/handrail/type_b{ + dir = 4; + layer = 3.5 + }, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"bnx" = ( +/obj/item/stack/sheet/metal/medium_stack, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) "bnA" = ( /turf/closed/wall/prison, /area/fiorina/station/transit_hub) -"bnK" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/telecomm/lz1_tram) +"bnJ" = ( +/obj/structure/machinery/lapvend, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) "bnL" = ( /obj/item/storage/fancy/cigarettes/lady_finger, /obj/structure/surface/table/reinforced/prison, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"bod" = ( -/obj/structure/prop/souto_land/streamer{ - dir = 9 +"bnM" = ( +/obj/structure/disposalpipe/segment{ + icon_state = "delivery_outlet"; + layer = 6; + name = "overhead ducting"; + pixel_y = 33 }, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" + icon_state = "floor_plate" }, -/area/fiorina/station/park) +/area/fiorina/tumor/civres) "boe" = ( /obj/item/tool/wet_sign, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"boh" = ( -/obj/item/stool, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"bop" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "yellowcorner" - }, -/area/fiorina/station/lowsec) "bou" = ( /obj/item/stack/tile/plasteel, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"bow" = ( +"boF" = ( +/obj/structure/reagent_dispensers/watertank, /turf/open/floor/prison{ - dir = 8; - icon_state = "cell_stripe" + icon_state = "floor_plate" }, /area/fiorina/station/medbay) -"bpq" = ( -/obj/item/stack/sheet/wood{ - amount = 10 +"boI" = ( +/obj/item/trash/cigbutt/ucigbutt{ + pixel_x = 5; + pixel_y = 12 }, /turf/open/floor/prison{ dir = 10; - icon_state = "floor_plate" + icon_state = "whitegreenfull" }, -/area/fiorina/station/telecomm/lz1_cargo) -"bpC" = ( -/obj/item/tank/jetpack/carbondioxide, -/obj/structure/surface/rack, +/area/fiorina/station/medbay) +"bpe" = ( +/obj/structure/platform_decoration, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) -"bpG" = ( -/obj/effect/decal/hefa_cult_decals/d32{ - icon_state = "bee" - }, +/area/fiorina/station/civres_blue) +"bpo" = ( +/obj/item/dogtag, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "blue" }, -/area/fiorina/tumor/servers) -"bpK" = ( +/area/fiorina/station/civres_blue) +"bpx" = ( /obj/structure/surface/table/reinforced/prison, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/item/weapon/gun/energy/taser, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/security) -"bqy" = ( -/obj/structure/closet/firecloset/full, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"bra" = ( -/obj/structure/largecrate/random/case, +"bqu" = ( +/obj/structure/toilet{ + dir = 4; + pixel_y = 8 + }, +/turf/open/floor/prison{ + dir = 9; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"bqC" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "greenblue" + }, +/area/fiorina/station/botany) +"bqD" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) -"brr" = ( -/obj/structure/bed/chair/office/dark{ - dir = 1 +/area/fiorina/station/lowsec) +"bqF" = ( +/obj/structure/closet/secure_closet/guncabinet{ + req_access = null }, +/obj/item/weapon/gun/smg/mp5, +/obj/item/ammo_magazine/smg/mp5, +/obj/item/ammo_magazine/smg/mp5, +/obj/item/ammo_magazine/smg/mp5, +/obj/item/storage/belt/marine, +/obj/item/clothing/under/marine/ua_riot, +/obj/item/clothing/suit/storage/marine/veteran/ua_riot, +/obj/item/prop/helmetgarb/riot_shield, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "redfull" + }, +/area/fiorina/station/security) +"bqX" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) +"brl" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) +"brC" = ( +/turf/open/floor/prison{ + dir = 6; + icon_state = "whitegreen" }, /area/fiorina/station/medbay) -"bry" = ( -/obj/structure/inflatable/popped/door, +"brR" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + icon_state = "cell_stripe" }, -/area/fiorina/tumor/servers) -"brS" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/clipboard, +/area/fiorina/station/flight_deck) +"brY" = ( +/obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/station/research_cells) -"bsd" = ( -/obj/structure/closet/basketball, -/obj/item/storage/pill_bottle/bicaridine/skillless, -/obj/effect/landmark/objective_landmark/science, +/area/fiorina/station/transit_hub) +"bsc" = ( +/obj/structure/prop/almayer/computers/sensor_computer3, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "darkredfull2" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/security) +"bsk" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 4 + }, +/turf/open/space/basic, +/area/fiorina/oob) "bsm" = ( /obj/item/shard{ icon_state = "medium"; @@ -2489,76 +2273,88 @@ icon_state = "stan_l_w" }, /area/fiorina/tumor/ship) -"bsq" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/flora/pottedplant{ - pixel_y = 9 +"bsO" = ( +/obj/structure/largecrate/random/secure, +/obj/structure/barricade/wooden{ + dir = 4 }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"bsF" = ( -/obj/structure/largecrate/random/case/double, -/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + dir = 10; + icon_state = "whitepurple" }, -/area/fiorina/station/park) -"bsJ" = ( +/area/fiorina/station/research_cells) +"bsR" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/ashtray/plastic, +/obj/item/trash/cigbutt, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowcorners2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/flight_deck) -"btq" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, -/turf/open/floor/prison{ - dir = 6; - icon_state = "whitegreen" +/area/fiorina/station/medbay) +"buz" = ( +/obj/item/stack/rods, +/turf/open/floor/plating/prison, +/area/fiorina/station/security) +"buG" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" }, -/area/fiorina/tumor/ice_lab) -"btz" = ( -/obj/structure/platform, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "whitegreen" }, -/area/fiorina/station/park) -"btB" = ( -/obj/structure/cargo_container/grant/right{ - density = 0; - desc = "A huge industrial shipping container. You could slip just behind it."; - health = 5000; - layer = 4; - unacidable = 1 +/area/fiorina/station/central_ring) +"buJ" = ( +/obj/structure/bed/chair{ + dir = 4 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "blue" }, /area/fiorina/station/power_ring) -"btP" = ( -/obj/item/tool/kitchen/rollingpin, +"bvg" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/snacks/meat{ + pixel_x = -1; + pixel_y = 2 + }, +/obj/item/reagent_container/food/snacks/meat{ + pixel_x = -1; + pixel_y = 4 + }, +/obj/item/reagent_container/food/snacks/meat{ + pixel_x = -1; + pixel_y = 6 + }, /turf/open/floor/prison{ icon_state = "kitchen" }, /area/fiorina/station/power_ring) -"bux" = ( -/obj/structure/toilet{ +"bvp" = ( +/obj/structure/barricade/wooden{ dir = 4; - pixel_y = 8 + pixel_y = 4 }, /turf/open/floor/prison{ - dir = 9; - icon_state = "yellow" + dir = 10; + icon_state = "damaged1" }, -/area/fiorina/station/lowsec) -"buz" = ( -/obj/item/stack/rods, -/turf/open/floor/plating/prison, -/area/fiorina/station/security) -"buO" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/clothing/mask/surgical, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) +/area/fiorina/station/central_ring) +"bvr" = ( +/obj/item/explosive/grenade/high_explosive/m15, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/floor/prison{ + icon_state = "panelscorched" + }, +/area/fiorina/tumor/aux_engi) +"bvs" = ( +/turf/open/floor/prison{ + icon_state = "yellowfull" + }, +/area/fiorina/station/central_ring) "bvK" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/book/manual/atmospipes{ @@ -2570,189 +2366,292 @@ /obj/item/stack/cable_coil, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"bxa" = ( -/obj/structure/platform_decoration/kutjevo, -/obj/structure/lattice, -/turf/open/space, +"bwj" = ( +/obj/structure/computerframe, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/medbay) +"bwk" = ( +/obj/item/tool/wrench, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"bww" = ( +/obj/item/trash/candy, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"bxc" = ( +/obj/structure/window/reinforced, +/turf/open/floor/prison, +/area/fiorina/station/security) +"bxd" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "whitegreen" + }, /area/fiorina/oob) -"bxl" = ( +"bxe" = ( +/obj/structure/machinery/landinglight/ds2{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/lz/near_lzII) +"bxg" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/landmark/corpsespawner/doctor, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/civres_blue) +"bxm" = ( /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 }, /turf/open/floor/prison{ - dir = 10; + dir = 1; + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) +"bxv" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison{ + dir = 4; + icon_state = "bluecorner" + }, +/area/fiorina/station/power_ring) +"bxy" = ( +/turf/open/floor/prison{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) +"bxA" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, +/turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/flight_deck) -"bxr" = ( -/obj/structure/machinery/cm_vending/sorted/tech/tool_storage{ - density = 0; - pixel_y = 16 +/area/fiorina/station/transit_hub) +"bxE" = ( +/obj/structure/prop/structure_lattice{ + dir = 4; + health = 300 + }, +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 + }, +/obj/structure/disposalpipe/segment{ + color = "#c4c4c4"; + dir = 4; + layer = 6; + name = "overhead pipe"; + pixel_y = 20 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/civres) +"bxQ" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, /turf/open/floor/prison{ dir = 1; - icon_state = "darkbrown2" + icon_state = "cell_stripe" }, -/area/fiorina/maintenance) +/area/fiorina/station/medbay) "bxV" = ( /obj/item/clothing/head/cmcap, /obj/effect/landmark/objective_landmark/far, /turf/open/floor/wood, /area/fiorina/station/chapel) -"bxW" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +"bya" = ( +/obj/structure/machinery/disposal, +/obj/item/tool/kitchen/rollingpin{ + pixel_y = 8 }, -/turf/open/floor/prison, -/area/fiorina/tumor/fiberbush) +/turf/open/floor/prison{ + dir = 10; + icon_state = "kitchen" + }, +/area/fiorina/station/civres_blue) "byb" = ( /turf/closed/shuttle/ert{ icon_state = "stan27" }, /area/fiorina/tumor/ship) -"byl" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +"byc" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) +/obj/structure/platform, +/turf/open/floor/plating/prison, +/area/fiorina/station/chapel) "bym" = ( /turf/closed/shuttle/ert{ icon_state = "stan20" }, /area/fiorina/lz/near_lzI) -"byn" = ( -/obj/structure/closet/emcloset, +"byB" = ( +/obj/structure/surface/rack, /turf/open/floor/prison{ - dir = 10; - icon_state = "blue" + icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"byr" = ( -/obj/structure/closet/crate/medical, -/obj/item/storage/fancy/vials/random, -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/area/fiorina/station/chapel) +"byE" = ( +/obj/structure/machinery/vending/cola, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"byF" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 4 }, -/area/fiorina/station/medbay) -"byt" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/toolbox, -/turf/open/floor/prison{ - icon_state = "bluefull" +/obj/structure/platform_decoration{ + dir = 6 }, -/area/fiorina/station/power_ring) -"bzC" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/newspaper, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 6; + icon_state = "whitegreen" }, -/area/fiorina/tumor/servers) -"bzG" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/device/flashlight/lamp, +/area/fiorina/tumor/ice_lab) +"byG" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 4; + icon_state = "whitegreen" }, -/area/fiorina/station/disco) -"bzH" = ( -/obj/structure/sign/poster{ - icon_state = "poster7"; - pixel_x = -26; - pixel_y = 6 - }, -/obj/structure/surface/table/reinforced/prison, +/area/fiorina/tumor/ice_lab) +"byJ" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "green" }, -/area/fiorina/station/medbay) -"bzL" = ( -/obj/structure/bed/sofa/vert/grey/bot, +/area/fiorina/tumor/civres) +"byT" = ( +/obj/structure/platform, /turf/open/floor/prison, /area/fiorina/station/transit_hub) +"byY" = ( +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"bze" = ( +/obj/structure/inflatable/popped/door, +/turf/open/floor/prison{ + dir = 8; + icon_state = "whitegreencorner" + }, +/area/fiorina/station/medbay) "bzO" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/power_ring) -"bAb" = ( +"bzU" = ( +/obj/item/tool/shovel/snow, +/obj/item/device/flashlight, /obj/structure/surface/rack, -/obj/item/explosive/grenade/high_explosive/frag, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/tumor/servers) +/area/fiorina/tumor/ice_lab) "bAc" = ( /turf/closed/shuttle/ert{ icon_state = "stan25" }, /area/fiorina/tumor/aux_engi) -"bAB" = ( -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" +"bAf" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 +/area/fiorina/station/power_ring) +"bAE" = ( +/obj/structure/surface/rack, +/obj/item/storage/pill_bottle/bicaridine/skillless, +/obj/item/storage/pill_bottle/bicaridine/skillless, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) -"bAS" = ( -/obj/structure/machinery/light/double/blue, +/area/fiorina/station/medbay) +"bAM" = ( +/obj/item/paper/prison_station/inmate_handbook, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) -"bAU" = ( -/obj/structure/bed/chair{ - dir = 4 +/area/fiorina/station/lowsec) +"bBr" = ( +/obj/structure/barricade/metal/wired{ + dir = 1 }, -/obj/effect/decal/cleanable/blood, -/obj/effect/spawner/gibspawner/human, +/obj/item/bodybag/tarp/reactive, +/obj/item/bodybag/tarp/reactive, +/obj/structure/surface/rack, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" + dir = 8; + icon_state = "darkyellow2" }, -/area/fiorina/station/park) +/area/fiorina/station/telecomm/lz1_cargo) +"bBt" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/security) "bBA" = ( /turf/closed/shuttle/ert{ icon_state = "stan5" }, /area/fiorina/station/power_ring) -"bBS" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_ew_full_cap" +"bBB" = ( +/obj/structure/largecrate/random/barrel, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" }, -/obj/structure/platform/stair_cut/alt, -/turf/open/floor/plating/prison, -/area/fiorina/station/security) -"bBX" = ( -/obj/structure/largecrate/random/case/double, +/area/fiorina/station/park) +"bBK" = ( +/obj/item/clothing/under/marine/ua_riot, +/obj/item/clothing/head/helmet/marine/veteran/ua_riot, /turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/security) +"bCe" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "redcorner" + }, +/area/fiorina/station/security) "bCu" = ( /obj/item/shard{ icon_state = "large" }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"bDd" = ( -/obj/structure/machinery/photocopier, -/turf/open/floor/prison, -/area/fiorina/station/security) -"bDu" = ( -/obj/item/trash/barcardine, +"bDv" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, /turf/open/floor/prison{ - dir = 1; - icon_state = "whitepurple" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/flight_deck) "bDx" = ( /obj/item/tool/extinguisher/mini, /obj/structure/machinery/light/double/blue{ @@ -2763,215 +2662,198 @@ icon_state = "plate" }, /area/fiorina/tumor/aux_engi) -"bDC" = ( -/obj/structure/surface/rack, -/obj/item/storage/firstaid/fire/empty, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/servers) -"bDD" = ( -/obj/effect/decal/cleanable/blood/gibs/xeno/body, +"bDJ" = ( +/obj/effect/spawner/random/gun/pistol, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "sterile_white" }, /area/fiorina/station/medbay) -"bDN" = ( +"bDM" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrown2" + dir = 8; + icon_state = "blue" }, -/area/fiorina/station/park) +/area/fiorina/station/chapel) "bDU" = ( /obj/item/stack/rods, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"bEn" = ( +"bDX" = ( +/obj/effect/spawner/random/tool, /turf/open/floor/prison{ + icon_state = "green" + }, +/area/fiorina/station/chapel) +"bEk" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/turf/open/floor/plating/prison, +/area/fiorina/oob) +"bEm" = ( +/obj/effect/landmark/wo_supplies/storage/belts/knifebelt, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) +"bEA" = ( +/obj/structure/barricade/wooden{ dir = 4; - icon_state = "darkbrown2" + pixel_y = 4 }, -/area/fiorina/tumor/aux_engi) -"bEO" = ( -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/prison, +/area/fiorina/station/central_ring) +"bED" = ( +/obj/structure/bed/chair{ + dir = 4 }, -/area/fiorina/station/chapel) +/turf/open/floor/prison, +/area/fiorina/station/park) "bEP" = ( /obj/item/device/flashlight, /turf/open/floor/prison/chapel_carpet{ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"bET" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/trash/uscm_mre, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) "bEX" = ( /obj/structure/window/framed/prison, /turf/open/floor/plating/prison, /area/fiorina/station/disco) -"bFh" = ( -/obj/item/stack/sheet/metal{ - amount = 5 +"bFg" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/item/reagent_container/food/snacks/meat/human, +/obj/item/reagent_container/food/snacks/meat/human, +/obj/structure/machinery/light/double/blue, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + dir = 10; + icon_state = "kitchen" }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"bFj" = ( -/obj/structure/monorail{ - name = "launch track" +/area/fiorina/station/civres_blue) +"bFi" = ( +/obj/structure/platform_decoration{ + dir = 4 }, -/turf/closed/shuttle/ert{ - icon_state = "leftengine_1"; - layer = 3 +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkbrown2" }, -/area/fiorina/oob) +/area/fiorina/station/park) "bFr" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/chapel) -"bFt" = ( -/obj/item/stool, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/civres_blue) "bFA" = ( /turf/closed/shuttle/ert{ icon_state = "wy27" }, /area/fiorina/station/medbay) -"bFN" = ( +"bFC" = ( +/obj/structure/largecrate/random/case, +/turf/open/floor/prison, +/area/fiorina/station/park) +"bFJ" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/prison{ + dir = 1; + icon_state = "blue_plate" + }, +/area/fiorina/station/botany) +"bFL" = ( +/obj/structure/mirror{ + pixel_x = -32 + }, /obj/structure/sink{ dir = 8; pixel_x = -12 }, -/obj/item/reagent_container/glass/bottle/cyanide{ - pixel_x = -12; - pixel_y = 13 - }, /turf/open/floor/prison{ dir = 10; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"bFR" = ( -/obj/item/ammo_magazine/rifle/m16, -/obj/item/clothing/head/helmet/marine/veteran/ua_riot, -/turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "kitchen" }, -/area/fiorina/station/security) -"bFY" = ( -/obj/structure/bed/chair/comfy{ +/area/fiorina/tumor/civres) +"bGA" = ( +/obj/structure/bed/chair{ dir = 8 }, /turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"bGr" = ( -/obj/structure/barricade/metal/wired, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" + icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzI) -"bGs" = ( -/obj/structure/inflatable/popped, +/area/fiorina/station/park) +"bGB" = ( +/obj/structure/largecrate/supply/generator, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"bGt" = ( -/obj/structure/machinery/vending/cola, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) -"bGy" = ( -/obj/structure/machinery/shower{ - dir = 4 - }, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/fiorina/station/lowsec) -"bGQ" = ( -/obj/structure/closet{ - density = 0; - pixel_y = 18 + icon_state = "floor_plate" }, -/obj/item/clothing/gloves/combat, +/area/fiorina/station/telecomm/lz1_cargo) +"bGH" = ( +/obj/structure/bed/chair/office/dark, /turf/open/floor/prison{ - dir = 1; - icon_state = "whitepurple" + icon_state = "whitegreen" }, -/area/fiorina/station/research_cells) -"bGT" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison, -/area/fiorina/station/disco) +/area/fiorina/tumor/ice_lab) "bGY" = ( /turf/closed/shuttle/elevator{ dir = 9 }, /area/fiorina/station/civres_blue) -"bHl" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" +"bHt" = ( +/obj/structure/prop/structure_lattice{ + dir = 4 }, -/turf/open/floor/prison{ +/obj/structure/prop/structure_lattice{ dir = 4; - icon_state = "darkyellow2" + layer = 3.1; + pixel_y = 10 }, -/area/fiorina/station/telecomm/lz1_tram) +/turf/open/floor/prison, +/area/fiorina/station/chapel) "bHv" = ( /obj/structure/bed/chair{ dir = 4 }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"bHI" = ( -/obj/item/frame/rack, +"bHP" = ( +/obj/structure/machinery/power/port_gen/pacman, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"bHR" = ( +/obj/structure/largecrate/random, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrownfull2" }, -/area/fiorina/tumor/servers) -"bHY" = ( -/obj/item/weapon/gun/flamer, -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/ammo_magazine/flamer_tank, -/obj/item/ammo_magazine/flamer_tank, -/obj/item/storage/pouch/flamertank, -/turf/open/floor/prison, /area/fiorina/tumor/aux_engi) -"bIg" = ( -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" +"bHU" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8 }, -/area/fiorina/station/transit_hub) -"bII" = ( -/obj/structure/bed/chair, +/obj/structure/platform/kutjevo/smooth, +/obj/structure/lattice, +/turf/open/space/basic, +/area/fiorina/oob) +"bIz" = ( +/obj/structure/machinery/landinglight/ds2{ + dir = 8 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"bIP" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "yellow" }, -/area/fiorina/station/medbay) -"bIX" = ( +/area/fiorina/station/lowsec) +"bIR" = ( +/obj/structure/closet/secure_closet/security, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - dir = 9; - icon_state = "darkyellow2" + icon_state = "darkredfull2" }, -/area/fiorina/tumor/servers) +/area/fiorina/station/disco) "bIZ" = ( /turf/closed/shuttle/elevator{ dir = 6 @@ -3004,126 +2886,108 @@ name = "astroturf" }, /area/fiorina/station/park) -"bJz" = ( -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" - }, -/area/fiorina/tumor/servers) -"bJF" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "blue" +"bJG" = ( +/obj/effect/decal/medical_decals{ + icon_state = "cryotop" }, -/area/fiorina/station/chapel) -"bKs" = ( -/obj/item/tool/warning_cone, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"bKM" = ( -/obj/effect/spawner/random/toolbox, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/obj/structure/pipes/standard/simple/visible{ + dir = 5 }, -/area/fiorina/tumor/servers) -"bLd" = ( -/obj/structure/platform_decoration, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/transit_hub) -"bLg" = ( -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/platform, -/obj/structure/platform_decoration{ - dir = 6 - }, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"bLz" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + dir = 10; + icon_state = "sterile_white" }, +/area/fiorina/station/medbay) +"bKF" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/pill_bottle/imidazoline, /turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/park) +/area/fiorina/tumor/ice_lab) "bLA" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/flashlight, /obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating/prison, /area/fiorina/station/security/wardens) -"bMd" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +"bLE" = ( +/obj/item/stack/rods, +/turf/open/floor/prison, +/area/fiorina/station/security) +"bLJ" = ( +/turf/closed/wall/prison, +/area/fiorina/station/central_ring) +"bLM" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/medbay) +"bLO" = ( +/obj/item/stack/cable_coil/blue, +/turf/open/floor/prison{ + icon_state = "whitegreencorner" + }, +/area/fiorina/tumor/ice_lab) "bMh" = ( /obj/item/frame/table/wood/fancy, /obj/item/paper/prison_station/warden_note, /obj/item/tool/pen, /turf/open/floor/carpet, /area/fiorina/station/security/wardens) -"bMl" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/plating/plating_catwalk/prison, -/area/fiorina/station/lowsec) -"bMr" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" - }, -/area/fiorina/station/civres_blue) "bMu" = ( /obj/structure/curtain{ layer = 3 }, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"bMA" = ( -/obj/item/prop/helmetgarb/spacejam_tickets{ - desc = "A ticket to Souto Man's raffle!"; - name = "\improper Souto Raffle Ticket" +"bMz" = ( +/obj/item/tool/lighter/random, +/turf/open/floor/prison{ + dir = 10; + icon_state = "kitchen" }, +/area/fiorina/tumor/civres) +"bMF" = ( +/obj/item/trash/cigbutt/cigarbutt, /turf/open/floor/prison{ - icon_state = "blue" + icon_state = "floor_plate" }, -/area/fiorina/station/chapel) -"bNf" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" +/area/fiorina/lz/near_lzI) +"bMG" = ( +/obj/structure/surface/rack, +/obj/item/handcuffs/zip, +/turf/open/floor/prison{ + icon_state = "darkredfull2" }, -/turf/open/floor/plating/prison, -/area/fiorina/station/medbay) -"bNz" = ( +/area/fiorina/station/lowsec) +"bMI" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/folder/black_random, /turf/open/floor/prison{ - icon_state = "darkbrown2" + icon_state = "bluefull" }, -/area/fiorina/maintenance) -"bNA" = ( -/obj/structure/machinery/cm_vending/sorted/medical/blood, -/obj/structure/window/reinforced{ - dir = 8; - health = 80 +/area/fiorina/station/power_ring) +"bMT" = ( +/obj/structure/tunnel/maint_tunnel, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/tumor/ice_lab) +"bNo" = ( +/obj/item/trash/uscm_mre, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"bNN" = ( -/obj/structure/closet/crate/trashcart, +"bNE" = ( /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) +/area/fiorina/station/civres_blue) "bNP" = ( /obj/effect/spawner/random/tool, /turf/open/floor/plating/prison, @@ -3134,47 +2998,61 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"bOh" = ( -/obj/item/stack/folding_barricade, +"bOp" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/stack/barbed_wire, +/obj/item/stack/barbed_wire, +/obj/item/stack/cable_coil/blue, +/obj/item/stack/cable_coil/blue, +/obj/item/stack/cable_coil/blue, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"bOx" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/security) -"bOz" = ( -/obj/structure/monorail{ - name = "launch track" - }, -/turf/closed/shuttle/ert{ - icon_state = "rightengine_1"; - layer = 3; - opacity = 0 + icon_state = "whitepurple" }, -/area/fiorina/oob) +/area/fiorina/station/research_cells) "bOK" = ( /obj/item/reagent_container/food/snacks/donkpocket, /turf/open/floor/corsat{ icon_state = "squares" }, /area/fiorina/station/civres_blue) -"bPf" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" - }, -/obj/structure/platform, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) -"bPk" = ( -/obj/effect/decal/cleanable/blood/oil, +"bOR" = ( +/obj/structure/bed/roller, /turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" + dir = 10; + icon_state = "sterile_white" }, /area/fiorina/station/medbay) +"bPh" = ( +/obj/item/storage/fancy/cigarettes/lucky_strikes, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) "bPl" = ( /obj/structure/surface/table/woodentable/fancy, /turf/open/floor/wood, /area/fiorina/station/chapel) +"bPn" = ( +/obj/item/reagent_container/food/drinks/coffee{ + name = "\improper paper cup" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/lowsec) +"bPy" = ( +/obj/structure/prop/resin_prop{ + icon_state = "sheater0" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/servers) "bPG" = ( /turf/open/floor/plating/prison, /area/fiorina/station/botany) @@ -3184,18 +3062,40 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"bPS" = ( +"bPQ" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "blue" + dir = 1; + icon_state = "green" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/chapel) +"bPT" = ( +/obj/structure/monorail{ + dir = 5; + name = "launch track" + }, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/aux_engi) +"bPV" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + dir = 9; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) "bQh" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 8 }, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) +"bQj" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" + }, +/obj/structure/platform, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) "bQk" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 8 @@ -3207,28 +3107,43 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"bQp" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/fiorina/oob) -"bQx" = ( -/obj/item/reagent_container/food/drinks/cans/waterbottle, +"bQn" = ( +/obj/effect/decal/cleanable/blood/splatter{ + icon_state = "gib2" + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "whitegreencorner" + }, +/area/fiorina/station/medbay) +"bQv" = ( +/obj/item/trash/cigbutt/ucigbutt, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/chapel) "bQy" = ( /obj/structure/surface/table/woodentable, /obj/item/reagent_container/spray/pepper, /turf/open/floor/carpet, /area/fiorina/station/civres_blue) +"bQL" = ( +/obj/item/tool/mop, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/chapel) "bQM" = ( /turf/open/space, /area/fiorina/oob) +"bQW" = ( +/obj/item/frame/rack, +/obj/item/stack/medical/bruise_pack, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) "bRb" = ( /obj/structure/machinery/defenses/sentry/premade/dumb{ dir = 4 @@ -3242,23 +3157,69 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"bRu" = ( -/obj/item/weapon/gun/smg/mp5, -/obj/item/ammo_casing{ - icon_state = "casing_6_1" +"bRo" = ( +/obj/structure/sink{ + pixel_y = 23 + }, +/obj/item/prop/helmetgarb/rabbitsfoot{ + pixel_y = 22 + }, +/obj/item/reagent_container/food/drinks/bottle/kahlua{ + pixel_x = 5; + pixel_y = 25 }, /turf/open/floor/prison{ dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) +"bRs" = ( +/obj/structure/closet/crate/miningcar{ + name = "\improper materials storage bin" + }, +/obj/item/reagent_container/food/snacks/meat, +/turf/open/floor/prison{ icon_state = "floor_plate" }, +/area/fiorina/station/park) +"bRA" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellow2" + }, /area/fiorina/station/telecomm/lz1_cargo) -"bRU" = ( -/obj/item/device/multitool, +"bRC" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"bRQ" = ( +/obj/item/stock_parts/micro_laser/ultra, /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" + icon_state = "darkpurple2" }, -/area/fiorina/station/disco) +/area/fiorina/tumor/servers) +"bSm" = ( +/obj/structure/machinery/power/port_gen/pacman, +/turf/open/floor/prison{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) +"bSq" = ( +/obj/structure/surface/rack, +/obj/item/weapon/gun/smg/nailgun, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/maintenance) +"bSs" = ( +/turf/open/floor/prison{ + icon_state = "floorscorched2" + }, +/area/fiorina/station/security) "bSM" = ( /obj/structure/machinery/portable_atmospherics/hydroponics{ draw_warnings = 0; @@ -3268,35 +3229,52 @@ }, /turf/open/floor/greengrid, /area/fiorina/station/botany) -"bSP" = ( -/obj/item/tool/surgery/scalpel, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) -"bST" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, -/obj/effect/alien/weeds/node, +"bSS" = ( +/obj/structure/largecrate/random/case, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" + icon_state = "floor_plate" + }, +/area/fiorina/station/park) +"bTc" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" }, -/area/fiorina/tumor/aux_engi) -"bTe" = ( /turf/open/floor/prison{ - dir = 9; - icon_state = "darkyellow2" + dir = 8; + icon_state = "blue" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/chapel) "bTo" = ( /obj/structure/platform/kutjevo/smooth, /turf/open/space, /area/fiorina/oob) -"bTG" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/gun/shotgun/highchance, +"bTp" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, /turf/open/floor/prison{ - icon_state = "darkbrown2" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/maintenance) +/area/fiorina/lz/near_lzI) +"bTr" = ( +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/prison{ + dir = 9; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"bTC" = ( +/obj/structure/machinery/power/terminal{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "bluecorner" + }, +/area/fiorina/station/power_ring) "bTI" = ( /obj/structure/machinery/door/poddoor/almayer/locked{ indestructible = 1; @@ -3304,67 +3282,28 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) +"bUt" = ( +/obj/structure/largecrate/random, +/obj/item/trash/pistachios, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) "bUw" = ( /obj/structure/prop/invuln/minecart_tracks/bumper{ dir = 8 }, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"bUy" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/transit_hub) "bUB" = ( /obj/structure/platform_decoration/kutjevo{ dir = 4 }, /turf/open/space, /area/fiorina/oob) -"bUH" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" - }, -/area/fiorina/station/telecomm/lz1_tram) -"bUJ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/objective{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) -"bVh" = ( -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/aux_engi) -"bVk" = ( -/obj/item/device/flashlight/lamp/tripod, +"bVE" = ( +/obj/structure/closet/boxinggloves, /turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"bVO" = ( -/obj/structure/monorail{ - name = "launch track" - }, -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 - }, -/turf/open/floor/plating/prison, -/area/fiorina/oob) -"bVY" = ( -/obj/structure/coatrack, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) +/area/fiorina/station/central_ring) "bVZ" = ( /turf/closed/shuttle/ert{ icon_state = "leftengine_1"; @@ -3376,265 +3315,294 @@ /obj/structure/machinery/faxmachine, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"bWE" = ( -/obj/effect/spawner/random/gun/rifle/midchance, +"bWy" = ( +/obj/item/reagent_container/glass/bucket/mopbucket, +/obj/item/tool/mop, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"bXc" = ( +/obj/structure/inflatable/popped, /turf/open/floor/prison{ - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"bXa" = ( -/obj/structure/barricade/handrail/type_b{ - layer = 3.4 - }, -/obj/structure/barricade/handrail/type_b{ dir = 4; - layer = 3.5 + icon_state = "whitegreen" }, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +/area/fiorina/station/medbay) +"bXe" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/ammo_box/magazine/misc/flares, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/tumor/servers) +"bXh" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 1; + icon_state = "bluecorner" }, -/area/fiorina/tumor/ice_lab) -"bXk" = ( -/obj/effect/decal/cleanable/blood/gibs/robot/limb, +/area/fiorina/station/chapel) +"bXz" = ( +/obj/item/stack/sheet/wood, /turf/open/floor/prison{ - dir = 5; + dir = 8; icon_state = "whitepurple" }, /area/fiorina/station/research_cells) -"bYq" = ( -/obj/item/ammo_casing{ - icon_state = "casing_10_1" +"bXA" = ( +/obj/item/tool/screwdriver, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) +"bYY" = ( +/obj/structure/bed/chair{ + dir = 8 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"bYv" = ( -/obj/structure/filingcabinet, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"bYB" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" + icon_state = "darkbrowncorners2" }, -/turf/open/floor/prison, -/area/fiorina/station/botany) -"bYG" = ( -/obj/structure/machinery/shower{ - dir = 1; - pixel_y = -1 +/area/fiorina/maintenance) +"bZn" = ( +/obj/item/device/taperecorder{ + pixel_x = 1; + pixel_y = 3 }, -/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "kitchen" + icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) -"bYS" = ( -/obj/structure/monorail{ - dir = 4; - name = "launch track" +/area/fiorina/station/chapel) +"bZD" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkbrowncorners2" }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"bZu" = ( -/obj/structure/sink{ +/area/fiorina/tumor/aux_engi) +"bZI" = ( +/obj/structure/surface/table/reinforced/prison{ dir = 8; - pixel_x = -12 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" + flipped = 1 }, -/area/fiorina/station/lowsec) -"bZF" = ( -/obj/effect/landmark/objective_landmark/far, +/obj/item/device/flashlight/lamp, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkredfull2" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/research_cells) "bZY" = ( /obj/structure/machinery/light/double/blue, /turf/open/floor/plating/prison, /area/fiorina/station/security) -"caF" = ( -/turf/open/floor/wood, -/area/fiorina/station/lowsec) -"cbb" = ( -/obj/structure/monorail{ - dir = 5; - name = "launch track" - }, -/turf/open/space, -/area/fiorina/oob) -"cbe" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, +"car" = ( +/obj/structure/machinery/portable_atmospherics/canister/nitrogen, /turf/open/floor/prison{ - icon_state = "yellowfull" + dir = 8; + icon_state = "yellow" }, /area/fiorina/station/lowsec) -"cbx" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/obj/effect/landmark/objective_landmark/close, +"caA" = ( +/obj/effect/spawner/random/toolbox, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"cbC" = ( -/obj/structure/kitchenspike, +/area/fiorina/tumor/servers) +"caC" = ( /turf/open/floor/prison{ - icon_state = "kitchen" + dir = 4; + icon_state = "green" + }, +/area/fiorina/station/transit_hub) +"caF" = ( +/turf/open/floor/wood, +/area/fiorina/station/lowsec) +"caX" = ( +/obj/structure/inflatable/popped/door, +/obj/item/ammo_casing{ + icon_state = "casing_1" }, -/area/fiorina/station/power_ring) -"cbH" = ( -/obj/structure/largecrate/supply/generator, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/disco) -"cbK" = ( -/obj/structure/closet/secure_closet/guncabinet{ - req_access = null +/area/fiorina/station/medbay) +"cbd" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/prison, +/area/fiorina/station/chapel) +"cbA" = ( +/obj/item/stack/rods, +/turf/open/floor/prison, +/area/fiorina/station/park) +"cbE" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + indestructible = 1 }, -/obj/item/weapon/gun/smg/mp5, -/obj/item/ammo_magazine/smg/mp5, -/obj/item/ammo_magazine/smg/mp5, -/obj/item/ammo_magazine/smg/mp5, -/obj/item/storage/belt/marine, -/obj/item/clothing/under/marine/ua_riot, -/obj/item/clothing/suit/storage/marine/veteran/ua_riot, -/obj/item/prop/helmetgarb/riot_shield, -/turf/open/floor/prison{ - icon_state = "redfull" +/obj/item/clothing/head/that{ + anchored = 1; + indestructible = 1; + pixel_y = 7 }, -/area/fiorina/station/security) +/turf/open/floor/plating/prison, +/area/fiorina/tumor/civres) +"cbF" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/medbay) "cbN" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station) +"cbY" = ( +/obj/item/newspaper, +/turf/open/floor/prison{ + icon_state = "whitepurplecorner" + }, +/area/fiorina/station/research_cells) "ccH" = ( /obj/structure/machinery/newscaster, /turf/closed/wall/prison, /area/fiorina/station/civres_blue) -"cdD" = ( +"ccY" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/prop/invuln{ + desc = "The best ride in the universe. For the one and only Souto Man! Although, this one seems to have no fuel left."; + dir = 4; + icon = 'icons/obj/vehicles/vehicles.dmi'; + icon_state = "soutomobile"; + name = "Disabled Souto Mobile" + }, +/turf/open/floor/prison, +/area/fiorina/station/park) +"ccZ" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"cdp" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 + }, /turf/open/floor/prison{ dir = 1; - icon_state = "darkbrown2" + icon_state = "darkyellow2" }, -/area/fiorina/station/park) -"cel" = ( +/area/fiorina/station/flight_deck) +"cdV" = ( /obj/structure/machinery/light/double/blue{ dir = 4; pixel_x = 10; pixel_y = 13 }, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/lowsec) -"ceC" = ( -/turf/closed/wall/r_wall/prison, -/area/fiorina/station/security) -"ceZ" = ( -/obj/structure/bed{ - icon_state = "abed" + dir = 1; + icon_state = "blue_plate" }, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +/area/fiorina/station/botany) +"cdY" = ( +/obj/effect/decal/medical_decals{ + icon_state = "docstripingdir" }, -/area/fiorina/station/research_cells) -"cfc" = ( -/obj/structure/barricade/sandbags{ - dir = 8; - icon_state = "sandbag_0" +/obj/structure/bed/roller, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - icon_state = "darkyellow2" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/telecomm/lz1_cargo) -"cfj" = ( -/obj/item/trash/cigbutt, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"cft" = ( -/obj/item/frame/rack, -/obj/structure/barricade/handrail/type_b{ - dir = 4; - layer = 3.5 +/area/fiorina/station/medbay) +"ceq" = ( +/obj/item/bodybag, +/obj/item/bodybag{ + pixel_y = 2 + }, +/obj/item/bodybag{ + pixel_y = 4 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) -"cfz" = ( -/obj/item/stock_parts/manipulator/pico, +/area/fiorina/station/medbay) +"cer" = ( /turf/open/floor/prison{ - dir = 6; - icon_state = "darkpurple2" + dir = 1; + icon_state = "whitegreen" }, -/area/fiorina/tumor/servers) -"cfD" = ( -/obj/structure/platform_decoration{ - dir = 4 +/area/fiorina/tumor/ice_lab) +"ceB" = ( +/obj/structure/bed/chair/comfy, +/turf/open/floor/prison{ + dir = 8; + icon_state = "blue" }, +/area/fiorina/station/civres_blue) +"ceC" = ( +/turf/closed/wall/r_wall/prison, +/area/fiorina/station/security) +"ceJ" = ( /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "whitegreen" }, /area/fiorina/tumor/ice_lab) -"cfN" = ( +"cfa" = ( +/obj/item/frame/rack, +/obj/structure/barricade/handrail/type_b{ + dir = 1 + }, /turf/open/floor/prison{ dir = 10; icon_state = "floor_plate" }, +/area/fiorina/station/lowsec) +"cfG" = ( +/obj/structure/machinery/landinglight/ds1/delayone{ + dir = 1 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, /area/fiorina/lz/near_lzI) -"cgE" = ( -/obj/structure/machinery/vending/sovietsoda, +"cfU" = ( +/obj/item/prop/helmetgarb/gunoil, /turf/open/floor/prison{ icon_state = "darkpurplefull2" }, /area/fiorina/station/research_cells) -"chA" = ( -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/lattice, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +"cgx" = ( +/obj/structure/bed/chair, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 +/area/fiorina/station/medbay) +"chg" = ( +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ + icon_state = "bluefull" }, -/turf/open/space, -/area/fiorina/oob) -"chJ" = ( -/obj/structure/bed{ - icon_state = "abed" +/area/fiorina/station/power_ring) +"chx" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, -/obj/item/storage/fancy/cigar/tarbacks, -/turf/open/floor/prison{ - dir = 6; - icon_state = "whitepurple" +/turf/open/floor/plating/prison, +/area/fiorina/station/medbay) +"chE" = ( +/obj/structure/machinery/cm_vending/sorted/tech/tool_storage{ + density = 0; + pixel_y = 16 }, -/area/fiorina/station/research_cells) -"chS" = ( -/obj/structure/window, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 1; + icon_state = "darkbrown2" }, -/area/fiorina/tumor/servers) +/area/fiorina/maintenance) "chT" = ( /obj/structure/machinery/light/double/blue{ dir = 8; @@ -3643,104 +3611,97 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"cie" = ( -/obj/structure/machinery/vending/cola, -/obj/structure/prop/souto_land/streamer{ - pixel_y = 24 +"chZ" = ( +/obj/structure/machinery/shower{ + pixel_y = 13 + }, +/obj/structure/curtain/shower, +/obj/structure/window{ + dir = 4 + }, +/obj/item/coin/uranium{ + desc = "You found one of the three uranium coins. It is entirely worthless." }, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrown2" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/park) -"cif" = ( +/area/fiorina/station/medbay) +"ciy" = ( +/obj/structure/platform, /obj/structure/platform{ dir = 4 }, -/obj/structure/barricade/handrail/type_b{ - dir = 4; - layer = 3.5 - }, +/obj/structure/platform_decoration{ + dir = 6 + }, +/obj/structure/closet/emcloset, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"ciA" = ( +/obj/structure/machinery/vending/snack/packaged, /turf/open/floor/prison, /area/fiorina/station/medbay) -"ciX" = ( -/obj/structure/monorail{ - name = "launch track" +"ciM" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/glass/bottle/spaceacillin{ + pixel_x = -6; + pixel_y = 4 }, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; +/obj/item/reagent_container/syringe{ + pixel_x = 3; pixel_y = -3 }, -/turf/open/floor/plating/prison, -/area/fiorina/oob) -"ciZ" = ( -/obj/item/explosive/grenade/incendiary/molotov, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/lowsec) -"cjl" = ( -/obj/structure/bed/roller, -/obj/structure/machinery/iv_drip{ - pixel_y = 19 +/obj/item/reagent_container/glass/bottle/spaceacillin{ + pixel_x = 6; + pixel_y = 12 }, -/obj/item/newspaper, -/obj/item/bedsheet/green, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"cjp" = ( -/obj/item/stool, -/obj/structure/sign/poster{ - icon_state = "poster14"; - pixel_y = 32 + icon_state = "floor_plate" }, +/area/fiorina/tumor/ice_lab) +"cje" = ( +/obj/structure/prop/almayer/computers/sensor_computer3, /turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/lowsec) -"cjs" = ( -/obj/effect/decal/cleanable/blood, +/area/fiorina/tumor/servers) +"cjG" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - dir = 8; - icon_state = "blue_plate" - }, -/area/fiorina/station/botany) -"cjA" = ( -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" + icon_state = "floor_plate" }, -/obj/structure/lattice, -/obj/structure/platform/kutjevo/smooth{ +/area/fiorina/station/civres_blue) +"cki" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/secure_data{ dir = 8 }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/turf/open/space, -/area/fiorina/oob) -"cjF" = ( /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/disco) -"cjS" = ( -/obj/item/newspaper, -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/security) "ckm" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzII) +"ckr" = ( +/turf/open/floor/prison{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/fiorina/station/telecomm/lz1_tram) +"ckt" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/station/medbay) "ckx" = ( /obj/structure/platform{ dir = 1 @@ -3748,35 +3709,27 @@ /obj/item/fuelCell, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"cky" = ( -/obj/structure/bed/roller, -/obj/item/trash/used_stasis_bag, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"ckD" = ( -/obj/item/stool, +"ckA" = ( +/obj/structure/platform, +/turf/open/floor/prison, +/area/fiorina/tumor/ice_lab) +"ckS" = ( +/obj/item/stack/sheet/metal, /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" - }, -/area/fiorina/station/disco) -"cll" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/condiment/saltshaker{ - pixel_x = -5; - pixel_y = -6 - }, -/obj/item/reagent_container/food/condiment/peppermill{ - pixel_x = -5; - pixel_y = -11 + icon_state = "yellowfull" }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" +/area/fiorina/station/lowsec) +"ckZ" = ( +/obj/structure/platform, +/turf/open/floor/prison, +/area/fiorina/station/park) +"clb" = ( +/obj/item/prop/helmetgarb/spacejam_tickets{ + desc = "A ticket to Souto Man's raffle!"; + name = "\improper Souto Raffle Ticket" }, -/area/fiorina/station/flight_deck) +/turf/open/floor/prison, +/area/fiorina/station/chapel) "cls" = ( /obj/structure/surface/table/woodentable, /turf/open/floor/carpet, @@ -3785,9 +3738,19 @@ /obj/structure/girder, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"clG" = ( -/turf/open/floor/prison, -/area/fiorina/maintenance) +"clv" = ( +/obj/structure/inflatable/popped/door, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/servers) +"clA" = ( +/obj/item/weapon/baton/cattleprod, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) "clN" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 1 @@ -3799,172 +3762,95 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"clZ" = ( -/obj/structure/machinery/washing_machine, -/obj/structure/machinery/washing_machine{ - pixel_y = 15 - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/lowsec) -"cmg" = ( -/obj/structure/machinery/vending/snack, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/medbay) -"cmj" = ( -/obj/item/stack/sheet/wood, -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitepurple" +"cmy" = ( +/obj/structure/sign/prop3{ + desc = "Enlist in the Penal Battalions today! The USCM 3rd Fleet features a subset of UA sanctioned penal battalions, drawing from inmate popualtions across the colonies. Mostly New Argentina though." }, -/area/fiorina/station/research_cells) -"cmm" = ( -/obj/structure/reagent_dispensers/watertank, +/turf/closed/wall/prison, +/area/fiorina/station/central_ring) +"cmE" = ( +/obj/item/stack/sheet/wood/medium_stack, +/obj/item/stack/sheet/wood/medium_stack, +/obj/structure/surface/rack, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/servers) -"cmI" = ( -/obj/structure/platform{ - dir = 8 - }, -/obj/item/prop/almayer/comp_open{ - pixel_y = 6 + icon_state = "darkbrownfull2" }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) +/area/fiorina/maintenance) "cmP" = ( /obj/structure/pipes/standard/tank{ dir = 4 }, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"cmV" = ( +"cns" = ( /obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" - }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"cmW" = ( -/turf/open/floor/prison{ - icon_state = "panelscorched" - }, -/area/fiorina/station/chapel) -"cnn" = ( -/obj/item/device/flashlight, -/turf/open/floor/prison{ dir = 8; - icon_state = "blue" + icon_state = "p_stair_full" }, -/area/fiorina/station/civres_blue) -"cnu" = ( -/obj/structure/bed/sofa/south/grey/left, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"cnF" = ( -/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison, -/area/fiorina/station/medbay) -"cnU" = ( -/obj/structure/machinery/computer/atmos_alert, -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/fiberbush) -"cnW" = ( -/obj/structure/inflatable/popped, -/obj/effect/decal/medical_decals{ - icon_state = "triagedecaldir" - }, -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"coh" = ( -/obj/item/stack/sheet/metal, +/area/fiorina/station/security) +"cnH" = ( +/obj/item/stock_parts/manipulator/pico, /turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" + dir = 6; + icon_state = "darkpurple2" }, -/area/fiorina/tumor/civres) +/area/fiorina/tumor/servers) "coj" = ( /obj/item/stool, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"coT" = ( -/obj/item/device/flashlight/lamp/tripod, -/turf/open/floor/prison{ - dir = 8; - icon_state = "greenblue" +"cpv" = ( +/obj/structure/platform{ + dir = 8 }, -/area/fiorina/station/botany) -"cph" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/spacecash/c20, +/obj/structure/surface/rack, /turf/open/floor/prison, -/area/fiorina/station/security) +/area/fiorina/lz/near_lzI) "cpP" = ( /turf/closed/shuttle/elevator/gears, /area/fiorina/station/telecomm/lz1_cargo) -"cpS" = ( -/obj/structure/prop/souto_land/pole, -/obj/structure/prop/souto_land/pole{ - dir = 4; - pixel_y = 24 - }, -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"cpW" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +"cqz" = ( +/turf/closed/shuttle/ert{ + icon_state = "stan_leftengine" }, -/turf/open/space/basic, /area/fiorina/oob) -"cqc" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"cqy" = ( -/obj/structure/bed/chair/office/dark{ - dir = 4 +"cqP" = ( +/obj/structure/window/reinforced{ + dir = 8; + health = 80 }, +/obj/structure/filingcabinet, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"cqz" = ( -/turf/closed/shuttle/ert{ - icon_state = "stan_leftengine" +"cqT" = ( +/turf/open/floor/prison{ + icon_state = "floorscorched1" }, -/area/fiorina/oob) -"cqH" = ( -/obj/structure/surface/rack, -/obj/item/clothing/gloves/latex, +/area/fiorina/station/security) +"cqV" = ( +/obj/item/stool, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 8; + icon_state = "blue" }, -/area/fiorina/station/medbay) -"cqU" = ( -/obj/effect/spawner/random/tool, +/area/fiorina/station/power_ring) +"cqW" = ( +/obj/item/stool, +/turf/open/floor/prison{ + icon_state = "damaged2" + }, +/area/fiorina/station/lowsec) +"cqX" = ( +/obj/item/stool, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) +/area/fiorina/station/medbay) "cri" = ( /obj/structure/machinery/computer/prisoner, /obj/structure/window/reinforced{ @@ -3975,59 +3861,36 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/security/wardens) -"crw" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 +"crm" = ( +/obj/structure/largecrate/random/secure, +/obj/effect/decal/medical_decals{ + icon_state = "triagedecalleft" }, /turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/lz/near_lzI) -"crH" = ( -/obj/effect/alien/weeds/node, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrowncorners2" +/area/fiorina/station/medbay) +"cry" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, -/area/fiorina/tumor/aux_engi) +/obj/structure/platform, +/turf/open/floor/plating/prison, +/area/fiorina/station/disco) "crM" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 1 }, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/tumor/servers) -"crO" = ( -/turf/open/floor/prison{ - icon_state = "damaged3" - }, -/area/fiorina/station/security) -"csl" = ( -/obj/item/trash/boonie, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) -"cso" = ( -/obj/structure/surface/rack, -/obj/item/storage/firstaid/regular, -/obj/item/storage/pill_bottle/dexalin/skillless, +"csL" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/medbay) -"csp" = ( -/turf/open/floor/prison, -/area/fiorina/tumor/ice_lab) -"csH" = ( -/obj/structure/prop/invuln/minecart_tracks{ - dir = 1 + dir = 4; + icon_state = "cell_stripe" }, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) +/area/fiorina/station/telecomm/lz1_tram) "ctc" = ( /obj/structure/prop/resin_prop{ icon_state = "sheater0" @@ -4038,76 +3901,112 @@ /obj/item/stack/rods, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"ctz" = ( -/obj/structure/machinery/power/apc{ - dir = 8 +"ctC" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/skills{ + dir = 4 }, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_tram) +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) "ctD" = ( /obj/effect/landmark/monkey_spawn, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"ctJ" = ( -/obj/effect/landmark/objective_landmark/close, +"ctI" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/obj/effect/spawner/random/goggles/lowchance, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" + dir = 6; + icon_state = "whitepurple" }, -/area/fiorina/tumor/civres) -"cua" = ( -/obj/structure/sign/safety/fire_haz, +/area/fiorina/station/research_cells) +"ctW" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/obj/item/coin/uranium, +/obj/item/bedsheet/green, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 6; + icon_state = "yellow" }, -/area/fiorina/tumor/civres) -"cvf" = ( -/obj/structure/prop/structure_lattice{ +/area/fiorina/station/lowsec) +"ctY" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "darkpurple2" + }, +/area/fiorina/station/central_ring) +"cui" = ( +/obj/structure/bed/chair/comfy{ dir = 4 }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/prison{ + dir = 6; + icon_state = "blue" + }, +/area/fiorina/station/civres_blue) +"cum" = ( +/obj/structure/barricade/handrail/type_b{ + dir = 1 }, +/obj/item/frame/rack, /turf/open/floor/prison{ + dir = 10; icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) -"cvk" = ( -/obj/structure/closet{ - density = 0; - pixel_y = 18 +/area/fiorina/station/disco) +"cvc" = ( +/obj/structure/barricade/metal/wired{ + dir = 4 + }, +/obj/structure/machinery/m56d_hmg/mg_turret/dropship{ + dir = 4 }, -/obj/item/clothing/gloves/boxing/blue, /turf/open/floor/prison{ dir = 1; - icon_state = "yellow" + icon_state = "cell_stripe" + }, +/area/fiorina/station/central_ring) +"cvd" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 22 }, -/area/fiorina/station/lowsec) -"cvn" = ( -/obj/structure/window/framed/prison/reinforced/hull, -/turf/open/floor/plating/prison, -/area/fiorina/station/chapel) -"cvp" = ( -/obj/effect/spawner/random/toolbox, /turf/open/floor/prison{ icon_state = "bluefull" }, -/area/fiorina/station/power_ring) -"cvq" = ( -/obj/structure/machinery/light/double/blue, +/area/fiorina/station/civres_blue) +"cvi" = ( +/obj/structure/surface/rack, +/obj/item/storage/firstaid/fire, +/obj/item/storage/firstaid/fire, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/security) -"cvr" = ( -/obj/structure/platform, -/obj/structure/reagent_dispensers/oxygentank{ - layer = 2.6 + dir = 10; + icon_state = "whitegreenfull" }, +/area/fiorina/station/medbay) +"cvn" = ( +/obj/structure/window/framed/prison/reinforced/hull, +/turf/open/floor/plating/prison, +/area/fiorina/station/chapel) +"cvv" = ( +/obj/structure/bed/sofa/vert/grey, /turf/open/floor/prison, -/area/fiorina/lz/near_lzI) +/area/fiorina/lz/near_lzII) +"cvH" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/prison{ + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) "cvL" = ( /obj/effect/landmark/nightmare{ insert_tag = "gamertime" @@ -4123,197 +4022,193 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) -"cwO" = ( -/turf/open/floor/prison{ - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"cwU" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/tumor/ice_lab) -"cxd" = ( -/obj/structure/prop/invuln/minecart_tracks/bumper{ - dir = 1 - }, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/tumor/servers) -"cxe" = ( +"cwM" = ( /obj/structure/machinery/light/double/blue{ - pixel_y = -1 + dir = 8; + pixel_x = -10; + pixel_y = -3 }, /turf/open/floor/prison{ - icon_state = "darkyellow2" + icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzI) -"cxl" = ( -/obj/structure/filingcabinet/disk, -/obj/effect/landmark/objective_landmark/science, +/area/fiorina/station/power_ring) +"cxb" = ( /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 8; + icon_state = "darkbrown2" }, -/area/fiorina/tumor/servers) -"cxn" = ( -/obj/structure/machinery/light/double/blue, +/area/fiorina/maintenance) +"cxc" = ( +/obj/item/stack/folding_barricade, +/obj/structure/surface/table/woodentable/fancy, /turf/open/floor/prison{ dir = 4; - icon_state = "blue_plate" + icon_state = "greenfull" }, -/area/fiorina/station/botany) -"cxF" = ( -/obj/structure/bed/chair/office/dark, +/area/fiorina/station/chapel) +"cxy" = ( +/obj/item/ammo_magazine/rifle/m16{ + current_rounds = 0; + pixel_x = 10; + pixel_y = -8 + }, +/obj/item/ammo_magazine/rifle/m16{ + current_rounds = 0 + }, +/turf/open/floor/prison, +/area/fiorina/station/security) +"cxA" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/station/lowsec) "cyb" = ( /turf/open/organic/grass{ desc = "It'll get in your shoes no matter what you do."; name = "astroturf" }, /area/fiorina/tumor/aux_engi) -"cyd" = ( -/obj/structure/monorail{ - name = "launch track" - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/transit_hub) "cye" = ( /obj/item/trash/pistachios, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"cyu" = ( +"cyk" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 6 - }, +/obj/item/device/megaphone, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/maintenance) -"cyL" = ( -/turf/open/floor/prison{ - icon_state = "platingdmg1" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/tumor/aux_engi) -"cyO" = ( -/obj/structure/machinery/vending/hydronutrients, +/area/fiorina/tumor/ice_lab) +"cyR" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + icon_state = "bluefull" }, -/area/fiorina/station/botany) -"cyU" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/stack/sheet/mineral/plastic/small_stack, -/turf/open/floor/prison, /area/fiorina/station/power_ring) "cyV" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/medbay) -"czj" = ( -/obj/structure/closet/toolcloset, -/obj/effect/landmark/objective_landmark/far, -/turf/open/floor/prison{ +"czf" = ( +/obj/structure/monorail{ dir = 4; - icon_state = "darkbrown2" + name = "launch track" }, -/area/fiorina/maintenance) -"czC" = ( -/obj/structure/bedsheetbin, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"czr" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/pills/lowchance, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "bluefull" }, -/area/fiorina/station/research_cells) -"cAv" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 8; - layer = 3.5 +/area/fiorina/station/power_ring) +"czJ" = ( +/obj/structure/reagent_dispensers/watertank{ + layer = 2.6 }, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"cAA" = ( -/obj/effect/landmark/static_comms/net_two, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/lz/near_lzII) -"cAV" = ( -/obj/item/ammo_casing{ - dir = 2; - icon_state = "casing_5" - }, +"cAJ" = ( +/obj/item/trash/snack_bowl, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 1; + icon_state = "yellow" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/lowsec) +"cAO" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/monorail{ + dir = 4; + name = "launch track" + }, +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzII) +"cAU" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/device/radio, +/obj/item/tool/pen/blue, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) "cAW" = ( /turf/open/space/basic, /area/fiorina/oob) -"cBB" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/stack/sheet/mineral/plastic, +"cBm" = ( +/obj/structure/surface/rack, +/obj/item/storage/toolbox/electrical, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) +/area/fiorina/tumor/aux_engi) +"cBn" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 9 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) +"cBG" = ( +/obj/effect/alien/weeds/node, +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkbrown2" + }, +/area/fiorina/tumor/aux_engi) +"cBJ" = ( +/obj/item/clothing/shoes/laceup, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/civres_blue) "cBK" = ( /obj/item/shard{ icon_state = "large" }, /turf/open/space, /area/fiorina/oob) -"cBQ" = ( -/obj/structure/platform{ - dir = 1 +"cBX" = ( +/obj/structure/largecrate/random, +/obj/effect/decal/medical_decals{ + icon_state = "triagedecalbottomright" }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/obj/item/reagent_container/food/drinks/coffee{ + pixel_y = 13 }, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, -/area/fiorina/tumor/ice_lab) -"cBT" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/machinery/computer/cameras{ - dir = 4 - }, +/area/fiorina/station/medbay) +"cCe" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "whitepurplecorner" }, -/area/fiorina/station/security) -"cBU" = ( -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +/area/fiorina/station/research_cells) +"cCh" = ( +/obj/item/ammo_casing{ + dir = 6; + icon_state = "casing_10_1" }, -/area/fiorina/tumor/servers) -"cBY" = ( -/obj/structure/reagent_dispensers/watertank, /turf/open/floor/prison, -/area/fiorina/tumor/servers) -"cCq" = ( +/area/fiorina/station/telecomm/lz1_cargo) +"cCs" = ( +/obj/structure/largecrate/random/case/small, /turf/open/floor/prison{ - dir = 9; - icon_state = "yellow" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/medbay) "cCt" = ( /obj/structure/barricade/wooden, /turf/open/floor/wood, @@ -4322,6 +4217,14 @@ /obj/structure/machinery/camera/autoname/lz_camera, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) +"cCy" = ( +/obj/structure/bed/sofa/vert/grey/top, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) "cCB" = ( /obj/structure/extinguisher_cabinet, /turf/closed/wall/prison, @@ -4330,59 +4233,48 @@ /obj/effect/spawner/random/sentry/midchance, /turf/open/floor/wood, /area/fiorina/station/chapel) -"cDf" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/paper_bin{ - pixel_x = 5; - pixel_y = 22 - }, -/obj/item/reagent_container/food/snacks/eat_bar, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/station/flight_deck) -"cDj" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +"cCO" = ( +/obj/item/clothing/accessory/armband/cargo{ + desc = "Sworn to the shrapnel and the shards therein. So sayeth her command when the first detonation occured."; + name = "HEFA Order milita armband" }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) +/area/fiorina/station/chapel) +"cDb" = ( +/obj/item/tool/crowbar, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) "cDl" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ req_one_access = null }, /turf/open/floor/plating/prison, /area/fiorina/station/park) -"cDr" = ( -/obj/effect/decal/medical_decals{ - icon_state = "docdecal1" - }, -/turf/open/floor/prison{ - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"cDZ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/communications{ - dir = 1 +"cDE" = ( +/obj/structure/closet/crate/miningcar{ + name = "\improper materials storage bin" }, +/obj/item/reagent_container/food/snacks/meat, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"cEf" = ( -/obj/item/tool/extinguisher, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"cEl" = ( +/area/fiorina/station/security) +"cEb" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzI) +"cEg" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/ammo_magazine/shotgun/buckshot, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkpurplefull2" }, -/area/fiorina/maintenance) +/area/fiorina/station/research_cells) "cEw" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/transit_hub) @@ -4391,107 +4283,108 @@ icon_state = "stan_inner_t_right" }, /area/fiorina/tumor/ship) -"cEB" = ( +"cEG" = ( +/obj/item/tool/pickaxe, +/obj/structure/platform{ + dir = 4 + }, /turf/open/floor/prison{ - dir = 5; - icon_state = "darkbrown2" + dir = 4; + icon_state = "whitegreen" }, -/area/fiorina/maintenance) -"cFf" = ( -/obj/structure/machinery/vending/snack, -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 +/area/fiorina/tumor/ice_lab) +"cEW" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "ywflowers_4" + }, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) +"cEY" = ( +/obj/structure/largecrate/random/case/double, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"cFn" = ( -/obj/structure/largecrate/random/case, -/turf/open/floor/prison, /area/fiorina/station/park) +"cFg" = ( +/obj/structure/machinery/landinglight/ds2/delaythree{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/lz/near_lzII) "cFq" = ( /obj/item/tool/mop, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"cFy" = ( -/obj/effect/decal/cleanable/blood, +"cFT" = ( /turf/open/floor/prison{ dir = 1; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"cFC" = ( -/obj/item/trash/cigbutt, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"cFE" = ( -/obj/item/clothing/mask/cigarette, -/turf/open/floor/prison{ - dir = 9; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"cFQ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/drinks/bottle/vodka{ - pixel_x = -4; - pixel_y = 12 - }, -/obj/item/reagent_container/food/drinks/bottle/vodka{ - pixel_x = 6; - pixel_y = 3 - }, -/turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "green" }, -/area/fiorina/station/power_ring) +/area/fiorina/tumor/civres) "cFX" = ( /obj/structure/largecrate/supply/supplies, /obj/effect/spawner/random/goggles/lowchance, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"cGg" = ( -/obj/structure/machinery/gibber, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/fiorina/station/power_ring) -"cGm" = ( +"cGa" = ( /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 }, /turf/open/floor/prison{ - dir = 1; - icon_state = "blue" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/chapel) +/area/fiorina/tumor/ice_lab) "cGR" = ( /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/wood, /area/fiorina/station/park) -"cHq" = ( -/obj/structure/barricade/wooden{ - dir = 8 +"cGS" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "yellow" + }, +/area/fiorina/station/disco) +"cGU" = ( +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/med_data/laptop{ + dir = 4 }, /turf/open/floor/prison{ - icon_state = "whitepurple" + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) +"cHl" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) -"cHx" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison, /area/fiorina/station/security) -"cHD" = ( -/obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ - req_one_access = null +"cHm" = ( +/obj/item/bedsheet/green, +/obj/structure/bed, +/obj/item/toy/plush/farwa, +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) +"cHC" = ( +/obj/item/trash/popcorn, +/turf/open/floor/prison{ + dir = 1; + icon_state = "yellow" }, -/turf/open/floor/prison, -/area/fiorina/station/park) +/area/fiorina/station/lowsec) "cHF" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/door/window/eastright, @@ -4501,44 +4394,55 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/security) -"cHJ" = ( -/obj/item/trash/hotdog, +"cHK" = ( +/obj/structure/closet/secure_closet/engineering_welding, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) +"cIt" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/area/fiorina/station/medbay) -"cJa" = ( -/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" + icon_state = "darkpurplefull2" }, -/area/fiorina/tumor/aux_engi) -"cJo" = ( -/obj/item/tool/warning_cone, +/area/fiorina/station/research_cells) +"cIJ" = ( /obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 + dir = 1; + pixel_y = 21 }, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_cargo) +/obj/structure/inflatable, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"cIQ" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/structure/bed/chair{ + dir = 4; + pixel_y = 4 + }, +/obj/structure/bed/chair{ + dir = 4; + pixel_y = 8 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, +/area/fiorina/station/park) "cJv" = ( /obj/item/stack/rods, /turf/open/floor/corsat{ icon_state = "squares" }, /area/fiorina/station/telecomm/lz1_cargo) -"cJw" = ( -/obj/structure/surface/table/almayer, -/obj/item/clipboard, -/obj/item/paper, -/obj/item/tool/pen, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) "cJz" = ( /obj/structure/machinery/light/double/blue{ dir = 4; @@ -4550,30 +4454,94 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) +"cJL" = ( +/obj/structure/prop/structure_lattice{ + dir = 4; + health = 300 + }, +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) +"cJS" = ( +/obj/item/trash/uscm_mre, +/obj/effect/landmark/corpsespawner/ua_riot, +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/fiorina/station/flight_deck) "cJW" = ( /obj/effect/landmark/survivor_spawner, /turf/open/floor/carpet, /area/fiorina/station/security/wardens) +"cJY" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + dir = 9; + icon_state = "darkbrown2" + }, +/area/fiorina/tumor/aux_engi) "cKa" = ( /turf/closed/wall/prison, /area/fiorina/station/research_cells) -"cLc" = ( -/obj/structure/largecrate/random/case/small, -/obj/item/bodybag/tarp/reactive{ - pixel_y = 6 +"cKb" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"cLr" = ( -/obj/structure/machinery/cm_vending/sorted/medical/no_access, -/obj/structure/machinery/light/double/blue, +/area/fiorina/tumor/civres) +"cKB" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 4 + }, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "whitegreenfull" }, -/area/fiorina/station/medbay) +/area/fiorina/tumor/ice_lab) +"cKH" = ( +/obj/structure/closet/bodybag, +/obj/effect/decal/cleanable/blood/gibs/up, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) +"cKJ" = ( +/obj/structure/closet/secure_closet/guncabinet{ + req_access = null + }, +/obj/item/ammo_magazine/shotgun/buckshot, +/obj/item/ammo_magazine/shotgun/buckshot, +/obj/item/reagent_container/glass/bottle/robot/antitoxin, +/obj/item/clothing/suit/storage/marine/veteran/ua_riot, +/obj/item/prop/helmetgarb/riot_shield, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) +"cKU" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/prison, +/area/fiorina/station/botany) "cLu" = ( /obj/structure/machinery/light/double/blue{ dir = 1; @@ -4581,83 +4549,111 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"cLE" = ( -/obj/structure/closet{ - density = 0; - pixel_y = 18 +"cLy" = ( +/obj/structure/platform_decoration{ + dir = 8 }, -/obj/item/clothing/gloves/boxing/green, /turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) +"cLC" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/machinery/computer/cameras{ + dir = 4 }, -/area/fiorina/station/lowsec) -"cLR" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "greenblue" + icon_state = "floor_plate" }, -/area/fiorina/station/botany) -"cMg" = ( -/obj/item/trash/snack_bowl, +/area/fiorina/station/security) +"cLS" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"cLZ" = ( +/obj/structure/largecrate/guns/merc, +/obj/item/toy/deck/uno, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) +"cMb" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/station/medbay) +"cMD" = ( /turf/open/floor/prison{ dir = 1; - icon_state = "yellow" + icon_state = "cell_stripe" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/central_ring) "cME" = ( /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"cMJ" = ( -/obj/structure/machinery/vending/cola, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/civres_blue) -"cNn" = ( -/obj/structure/platform_decoration{ +"cMP" = ( +/obj/structure/machinery/shower{ dir = 8 }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"cOb" = ( -/obj/item/ammo_casing{ - icon_state = "casing_6" - }, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "kitchen" }, -/area/fiorina/station/lowsec) -"cOl" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/station/research_cells) +"cNe" = ( +/obj/structure/bed/chair{ + dir = 8 }, /turf/open/floor/prison{ icon_state = "darkpurplefull2" }, -/area/fiorina/station/research_cells) -"cOn" = ( -/obj/effect/decal/cleanable/blood, +/area/fiorina/tumor/servers) +"cOj" = ( /turf/open/floor/prison{ - dir = 8; icon_state = "blue" }, /area/fiorina/station/civres_blue) -"cOq" = ( -/obj/item/disk, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"cOy" = ( -/obj/item/tool/shovel/snow, -/obj/item/device/flashlight, -/obj/structure/surface/rack, -/obj/effect/landmark/objective_landmark/science, +"cOB" = ( +/obj/item/stool, +/turf/open/floor/prison{ + dir = 1; + icon_state = "cell_stripe" + }, +/area/fiorina/station/flight_deck) +"cOC" = ( +/obj/item/tool/wet_sign, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/park) +"cOF" = ( +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/station/research_cells) +"cOL" = ( /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "darkyellow2" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/telecomm/lz1_cargo) +"cPh" = ( +/obj/item/ammo_casing{ + icon_state = "casing_6" + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) "cPq" = ( /obj/structure/machinery/light/double/blue{ dir = 4; @@ -4666,69 +4662,74 @@ }, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"cPI" = ( -/obj/structure/bed/chair, -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/blood/drip{ - icon_state = "2" - }, -/obj/effect/decal/cleanable/blood/drip{ - icon_state = "4" +"cPs" = ( +/obj/structure/largecrate/random, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/item/prop/helmetgarb/flair_initech, -/obj/effect/landmark/corpsespawner/ua_riot, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"cPQ" = ( -/obj/structure/bed/roller, -/obj/effect/decal/cleanable/blood/gibs/body, +/area/fiorina/tumor/servers) +"cPz" = ( +/obj/structure/machinery/fuelcell_recycler, /turf/open/floor/prison, -/area/fiorina/station/lowsec) -"cQn" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, +/area/fiorina/station/telecomm/lz1_cargo) +"cPC" = ( +/obj/item/stack/sandbags_empty, /turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/station/medbay) -"cQu" = ( -/obj/item/weapon/gun/energy/taser, -/turf/open/floor/prison, -/area/fiorina/station/security) -"cQA" = ( -/obj/structure/machinery/shower{ - pixel_y = 13 +/area/fiorina/tumor/civres) +"cPL" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_ew_full_cap" }, -/obj/structure/machinery/shower{ - dir = 4 +/obj/structure/platform/stair_cut/alt, +/turf/open/floor/plating/prison, +/area/fiorina/station/park) +"cQe" = ( +/obj/item/reagent_container/food/snacks/donkpocket, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/transit_hub) +"cQf" = ( +/obj/structure/machinery/power/apc{ + dir = 1 }, /turf/open/floor/prison{ - icon_state = "kitchen" + dir = 1; + icon_state = "yellow" }, -/area/fiorina/station/research_cells) -"cQG" = ( -/obj/structure/platform_decoration{ - dir = 4 +/area/fiorina/station/lowsec) +"cQv" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/turf/closed/shuttle/ert{ + icon_state = "leftengine_1"; + layer = 3 }, +/area/fiorina/oob) +"cRg" = ( +/obj/structure/machinery/vending/coffee/simple, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) -"cQX" = ( -/obj/item/stack/cable_coil, +/area/fiorina/station/park) +"cRl" = ( +/obj/structure/closet/secure_closet/security_empty, +/obj/item/book/manual/security_space_law, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "darkredfull2" }, -/area/fiorina/tumor/servers) -"cRs" = ( -/obj/effect/landmark/survivor_spawner, +/area/fiorina/station/security) +"cRx" = ( +/obj/structure/machinery/sensortower, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue" + icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) +/area/fiorina/tumor/civres) "cRB" = ( /obj/structure/machinery/door/airlock/prison/horizontal{ density = 0; @@ -4738,63 +4739,115 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"cRN" = ( -/obj/structure/closet/emcloset, -/obj/item/weapon/nullrod{ - desc = "The explosive tip has been deactivated."; - force = 25; - icon_state = "hefasword"; - name = "de-activated HEFA Sword" +"cRI" = ( +/obj/structure/closet{ + density = 0; + pixel_y = 18 }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"cRS" = ( -/obj/structure/platform, +/obj/item/stool, /turf/open/floor/prison{ - dir = 8; - icon_state = "cell_stripe" + icon_state = "yellowfull" + }, +/area/fiorina/station/lowsec) +"cRK" = ( +/obj/structure/window, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/servers) +"cRM" = ( +/obj/effect/landmark/survivor_spawner, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/disco) +"cRZ" = ( +/obj/structure/machinery/landinglight/ds2/delaythree{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/lz/near_lzII) +"cSh" = ( +/obj/structure/closet/secure_closet/hydroponics, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" }, /area/fiorina/station/botany) "cTr" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/plating/prison, /area/fiorina/tumor/fiberbush) -"cTA" = ( -/obj/item/shard{ - icon_state = "medium" - }, +"cTx" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/device/flashlight/lamp/green, /turf/open/floor/prison{ - dir = 9; - icon_state = "yellow" + dir = 4; + icon_state = "greenfull" + }, +/area/fiorina/tumor/civres) +"cTy" = ( +/obj/item/stool, +/obj/item/trash/cigbutt{ + pixel_y = 8 }, -/area/fiorina/station/disco) -"cUE" = ( -/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/station/power_ring) -"cVk" = ( -/obj/structure/platform_decoration{ - dir = 8 +"cTD" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 }, -/obj/structure/platform_decoration{ - dir = 4 +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" }, -/obj/effect/decal/cleanable/blood/splatter{ - icon_state = "gibup1" +/area/fiorina/lz/near_lzI) +"cTE" = ( +/obj/item/ammo_casing{ + icon_state = "cartridge_1" }, /turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreen" + dir = 10; + icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"cVl" = ( -/obj/item/ammo_magazine/rifle/m16{ - current_rounds = 0 +"cUd" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellow2" }, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) +/area/fiorina/lz/near_lzI) +"cUA" = ( +/obj/structure/largecrate/random, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/station/park) +"cUU" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/telecomm/lz1_tram) +"cVu" = ( +/obj/item/stack/sandbags_empty/half, +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) "cVQ" = ( /obj/structure/machinery/light/double/blue{ dir = 1; @@ -4806,102 +4859,59 @@ /obj/structure/extinguisher_cabinet, /turf/closed/wall/r_wall/prison, /area/fiorina/station/disco) -"cVX" = ( -/obj/item/prop/helmetgarb/spacejam_tickets{ - desc = "Low security prisoners would smuggle in arcade tickets after visitations. The tickets act as a stand in for paper currency in the prison economy, they're backed by the cigarette standard, since one ticket nets one cigarette at the prize booth. The cigarettes also get smuggled back in."; - name = "\improper arcade tickets"; - pixel_x = 1; - pixel_y = -1 +"cXp" = ( +/obj/item/stack/sheet/metal/medium_stack, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/tumor/ice_lab) +"cXV" = ( +/obj/item/ammo_magazine/smg/mp5, +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ - dir = 9; - icon_state = "whitepurple" + dir = 1; + icon_state = "darkyellowcorners2" }, -/area/fiorina/station/research_cells) -"cWG" = ( +/area/fiorina/station/telecomm/lz1_cargo) +"cYd" = ( /obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" + dir = 4; + icon_state = "p_stair_sn_full_cap" }, /turf/open/floor/plating/prison, -/area/fiorina/station/chapel) -"cWM" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/blood/empty{ - pixel_x = -7; - pixel_y = 4 - }, -/obj/item/reagent_container/blood/BMinus{ - pixel_x = 7; - pixel_y = 4 - }, +/area/fiorina/tumor/ice_lab) +"cYe" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) -"cWR" = ( -/obj/effect/landmark/objective_landmark/medium, -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" - }, -/area/fiorina/maintenance) -"cWU" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"cXm" = ( -/obj/item/inflatable, -/obj/item/inflatable, -/obj/item/inflatable, -/obj/item/inflatable, -/obj/item/inflatable, -/obj/structure/surface/rack, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"cXq" = ( -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/surface/rack, -/obj/item/stack/flag/yellow, -/obj/item/stack/flag/yellow, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"cXw" = ( -/obj/structure/machinery/photocopier{ +/area/fiorina/station/transit_hub) +"cYi" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/card/id/gold{ + pixel_x = 2; pixel_y = 4 }, /turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/fiorina/oob) -"cXY" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_ew_full_cap" + icon_state = "darkpurplefull2" }, -/obj/structure/platform/stair_cut, -/turf/open/floor/plating/prison, -/area/fiorina/station/flight_deck) -"cYa" = ( -/obj/structure/lattice, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/area/fiorina/station/research_cells) +"cYj" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/obj/structure/platform/kutjevo/smooth, -/turf/open/space, -/area/fiorina/oob) -"cYg" = ( -/obj/item/ammo_magazine/m56d, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/station/lowsec) +"cYI" = ( +/turf/open/floor/prison{ + dir = 5; + icon_state = "green" + }, +/area/fiorina/tumor/aux_engi) "cYP" = ( /obj/structure/closet/crate/trashcart, /obj/item/storage/pill_bottle/dexalin/skillless, @@ -4909,6 +4919,19 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/plating/prison, /area/fiorina/maintenance) +"cYS" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/central_ring) "cYT" = ( /obj/vehicle/powerloader{ dir = 8 @@ -4917,15 +4940,38 @@ name = "astroturf" }, /area/fiorina/station/research_cells) -"cYY" = ( -/obj/structure/machinery/iv_drip{ - pixel_y = 19 +"cYV" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_ew_full_cap" + }, +/obj/structure/platform/stair_cut, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/servers) +"cZe" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/phone, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" }, +/area/fiorina/tumor/ice_lab) +"cZh" = ( +/obj/effect/decal/cleanable/blood/gibs, +/obj/effect/spawner/random/gun/rifle, /turf/open/floor/prison{ - dir = 1; - icon_state = "whitepurple" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/lowsec) +"cZp" = ( +/obj/effect/decal/medical_decals{ + icon_state = "triagedecalbottom" + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) "cZq" = ( /obj/item/shard{ icon_state = "medium" @@ -4936,12 +4982,39 @@ /obj/structure/largecrate/random/case/double, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) +"cZy" = ( +/obj/structure/machinery/door/window/northleft{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security/wardens) +"cZP" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/transit_hub) +"cZR" = ( +/turf/open/floor/prison{ + icon_state = "damaged2" + }, +/area/fiorina/station/disco) "cZV" = ( /obj/structure/bed/chair/office/light{ dir = 4 }, /turf/open/floor/wood, /area/fiorina/station/security) +"dae" = ( +/obj/structure/machinery/vending/walkman, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/aux_engi) "daA" = ( /obj/item/clothing/accessory/armband/cargo{ desc = "Sworn to the shrapnel and the shards therein. So sayeth her command when the first detonation occured."; @@ -4962,19 +5035,25 @@ /obj/structure/machinery/autolathe, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"daP" = ( -/obj/effect/decal/medical_decals{ - icon_state = "docdecal1" - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) "daS" = ( /obj/item/ammo_magazine/pistol/kt42, /turf/open/floor/plating/prison, /area/fiorina/maintenance) +"daY" = ( +/obj/effect/decal/cleanable/blood, +/obj/item/trash/kepler, +/turf/open/floor/prison, +/area/fiorina/station/security) +"dbh" = ( +/obj/structure/machinery/vending/sovietsoda, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) +"dbi" = ( +/obj/item/storage/toolbox/electrical, +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) "dbq" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/device/flashlight/lamp/candelabra{ @@ -4986,63 +5065,93 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"dbL" = ( -/obj/item/clothing/under/color/orange, +"dbr" = ( +/obj/structure/platform{ + dir = 8 + }, /turf/open/floor/prison{ - icon_state = "yellowfull" + icon_state = "floor_plate" + }, +/area/fiorina/station/park) +"dbI" = ( +/obj/structure/inflatable/popped/door, +/turf/open/floor/prison{ + dir = 8; + icon_state = "floor_marked" }, /area/fiorina/station/lowsec) -"dbX" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"dbW" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/box/donkpockets{ + pixel_x = 5; + pixel_y = 9 }, +/obj/item/storage/box/donkpockets, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + icon_state = "bluefull" }, -/area/fiorina/tumor/aux_engi) -"ddc" = ( -/obj/item/stack/sandbags_empty/half, +/area/fiorina/station/power_ring) +"dcv" = ( +/obj/structure/largecrate/random, /turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"dds" = ( -/obj/effect/decal/cleanable/blood, +/area/fiorina/station/research_cells) +"dcy" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) +"dcO" = ( +/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison{ - icon_state = "yellow" + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) +"dde" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/recharger{ + pixel_y = 4 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/oob) +"ddt" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/beer_pack{ + pixel_y = 7 + }, +/turf/open/floor/prison{ + icon_state = "yellowfull" }, /area/fiorina/station/lowsec) -"ddz" = ( -/obj/item/stack/sheet/cardboard, +"ddv" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 + }, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ - dir = 8; - icon_state = "whitepurple" + dir = 4; + icon_state = "darkbrown2" }, -/area/fiorina/station/research_cells) +/area/fiorina/maintenance) "ddA" = ( /obj/structure/girder/reinforced, /turf/open/floor/plating/plating_catwalk, /area/fiorina/tumor/ship) -"ddE" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/condiment/saltshaker{ - pixel_x = -5; - pixel_y = -6 - }, -/obj/item/reagent_container/food/condiment/peppermill{ - pixel_x = -5; - pixel_y = -11 - }, +"ddB" = ( /turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/civres_blue) -"ddF" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" + dir = 9; + icon_state = "whitegreen" }, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzII) +/area/fiorina/station/medbay) +"ddD" = ( +/obj/structure/janitorialcart, +/turf/open/floor/prison, +/area/fiorina/station/medbay) "ddG" = ( /obj/effect/decal/cleanable/blood{ icon_state = "xtracks" @@ -5058,14 +5167,24 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"ddO" = ( -/obj/structure/machinery/computer/cameras{ - dir = 1 +"ddN" = ( +/turf/open/floor/prison{ + dir = 6; + icon_state = "darkpurple2" + }, +/area/fiorina/tumor/servers) +"ddU" = ( +/obj/structure/prop/almayer/computers/sensor_computer1, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" }, +/area/fiorina/tumor/servers) +"ddY" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "darkbrown2" }, -/area/fiorina/station/security) +/area/fiorina/tumor/aux_engi) "dec" = ( /obj/structure/sign/prop3{ desc = "Enlist in the Penal Battalions today! The USCM 3rd Fleet features a subset of UA sanctioned penal battalions, drawing from inmate popualtions across the colonies. Mostly New Argentina though." @@ -5084,206 +5203,100 @@ name = "astroturf" }, /area/fiorina/station/park) -"deE" = ( -/obj/structure/barricade/wooden, -/turf/open/floor/prison{ - dir = 6; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) "deL" = ( /obj/structure/window/framed/prison/reinforced/hull, /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/station/flight_deck) -"deN" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 4 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/ice_lab) "deR" = ( /obj/item/toy/crayon/red, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"deW" = ( -/obj/structure/bed/chair{ - dir = 8 - }, +"dfc" = ( /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"dfa" = ( -/obj/item/device/flashlight/lamp/tripod, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/tumor/servers) -"dfu" = ( -/obj/item/prop/helmetgarb/spacejam_tickets{ - desc = "A ticket to Souto Man's raffle!"; - name = "\improper Souto Raffle Ticket"; - pixel_x = 7; - pixel_y = 6 - }, -/turf/open/floor/prison{ - icon_state = "darkbrown2" +/area/fiorina/oob) +"dfh" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 }, -/area/fiorina/station/park) -"dfz" = ( -/obj/item/stack/cable_coil, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"dfD" = ( -/obj/item/stack/sheet/metal/medium_stack, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) -"dfV" = ( +/area/fiorina/station/civres_blue) +"dfA" = ( +/obj/structure/barricade/sandbags{ + icon_state = "sandbag_0"; + pixel_y = -14 + }, +/obj/structure/machinery/m56d_hmg, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) +"dga" = ( /obj/structure/monorail{ + dir = 4; name = "launch track" }, /turf/open/floor/plating/prison, -/area/fiorina/station/transit_hub) -"dfZ" = ( -/obj/effect/spawner/random/gun/rifle/lowchance, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"dgx" = ( -/obj/structure/barricade/wooden{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"dgz" = ( -/obj/item/trash/cigbutt/ucigbutt, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"dgB" = ( -/obj/structure/barricade/wooden{ - dir = 1 +/area/fiorina/tumor/aux_engi) +"dhc" = ( +/obj/structure/largecrate/random/secure, +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 }, /turf/open/floor/prison{ dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"dgF" = ( -/turf/open/floor/prison{ - dir = 6; - icon_state = "blue" - }, -/area/fiorina/station/chapel) -"dhe" = ( -/obj/structure/barricade/metal/wired{ - dir = 4 - }, -/turf/open/floor/prison{ - icon_state = "cell_stripe" + icon_state = "yellow" }, /area/fiorina/station/disco) "dhi" = ( /obj/structure/platform_decoration/kutjevo, /turf/open/space/basic, /area/fiorina/oob) -"dhj" = ( -/obj/item/trash/eat, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/obj/structure/machinery/blackbox_recorder, -/obj/item/prop/almayer/flight_recorder/colony{ - pixel_x = -6; - pixel_y = 10 - }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"dhs" = ( -/obj/item/tool/weldingtool, -/turf/open/floor/prison, -/area/fiorina/station/security) -"dhD" = ( -/obj/structure/machinery/shower{ - pixel_y = 13 - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - icon_state = "kitchen" +"dhL" = ( +/obj/structure/barricade/wooden{ + dir = 4 }, -/area/fiorina/station/lowsec) -"dhN" = ( -/obj/structure/machinery/light/double/blue, +/obj/structure/barricade/wooden, /turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" + icon_state = "floor_plate" }, -/area/fiorina/station/disco) -"dhV" = ( -/obj/structure/machinery/light/double/blue{ +/area/fiorina/station/civres_blue) +"dhZ" = ( +/obj/structure/window/reinforced{ dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - dir = 9; - icon_state = "darkyellow2" + layer = 3 }, -/area/fiorina/lz/near_lzI) -"diP" = ( +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"diF" = ( +/obj/item/stack/sheet/cardboard, /turf/open/floor/prison{ - dir = 9; - icon_state = "green" + dir = 1; + icon_state = "yellow" }, -/area/fiorina/tumor/civres) -"diR" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/recharger, -/obj/item/clothing/accessory/holobadge/cord, +/area/fiorina/station/lowsec) +"diJ" = ( +/obj/item/stool, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "yellowfull" }, -/area/fiorina/lz/near_lzI) -"diS" = ( -/obj/structure/largecrate/supply/supplies/water, -/obj/item/reagent_container/food/drinks/cans/waterbottle{ - pixel_x = -4; - pixel_y = 14 +/area/fiorina/station/lowsec) +"diL" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" }, -/obj/item/reagent_container/food/drinks/cans/waterbottle{ - pixel_x = 1; - pixel_y = 12 +/obj/structure/platform{ + dir = 4 }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"diX" = ( -/obj/structure/machinery/disposal, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"djd" = ( -/turf/open/floor/prison{ - dir = 1; - icon_state = "greenbluecorner" - }, -/area/fiorina/station/botany) +/area/fiorina/station/central_ring) "dje" = ( /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/plating/prison, @@ -5292,23 +5305,6 @@ /obj/effect/spawner/random/gun/smg/midchance, /turf/open/floor/wood, /area/fiorina/station/park) -"djx" = ( -/obj/item/paper/prison_station/inmate_handbook, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/lowsec) -"djA" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/surgical_tray, -/obj/item/reagent_container/spray/cleaner{ - desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; - name = "Surgery Cleaner" - }, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/medbay) "djB" = ( /obj/vehicle/powerloader{ dir = 4 @@ -5317,144 +5313,105 @@ name = "astroturf" }, /area/fiorina/station/research_cells) -"dka" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, +"djF" = ( +/obj/structure/machinery/portable_atmospherics/powered/scrubber, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "whitepurple" }, -/area/fiorina/station/civres_blue) +/area/fiorina/station/research_cells) "dkb" = ( /obj/item/device/flashlight/lamp/tripod, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"dkg" = ( -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" +"dkl" = ( +/obj/structure/bed/chair{ + dir = 1 }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +/obj/item/prop/helmetgarb/spacejam_tickets{ + desc = "A ticket to Souto Man's raffle!"; + name = "\improper Souto Raffle Ticket"; + pixel_x = 6; + pixel_y = -7 }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 +/obj/structure/prop/souto_land/streamer{ + pixel_y = 24 }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) -"dkj" = ( +/turf/open/floor/prison, +/area/fiorina/station/park) +"dkn" = ( +/turf/open/floor/prison, +/area/fiorina/station/security/wardens) +"dkz" = ( +/obj/structure/machinery/vending/snack/packaged, /turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) +"dkX" = ( +/obj/structure/barricade/sandbags{ dir = 8; - icon_state = "whitepurple" + icon_state = "sandbag_0" }, -/area/fiorina/station/research_cells) -"dkC" = ( -/obj/item/tool/warning_cone, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" + icon_state = "darkyellow2" }, -/area/fiorina/station/park) -"dkP" = ( -/obj/structure/largecrate/random, -/obj/structure/machinery/light/double/blue, +/area/fiorina/station/telecomm/lz1_cargo) +"dlj" = ( +/obj/structure/machinery/portable_atmospherics/powered/pump, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"dlr" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/device/radio{ + pixel_x = -6; + pixel_y = 16 + }, +/obj/item/device/radio{ + pixel_x = 6; + pixel_y = 7 }, -/area/fiorina/station/park) -"dla" = ( -/obj/structure/inflatable, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "redfull" }, -/area/fiorina/station/medbay) +/area/fiorina/station/security) "dlA" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"dlE" = ( -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/disco) -"dlW" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" +"dmQ" = ( +/obj/item/stack/sheet/metal{ + amount = 5 }, +/turf/open/floor/prison, /area/fiorina/lz/near_lzI) -"dlX" = ( -/obj/structure/surface/rack, -/obj/item/reagent_container/spray/cleaner{ - desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; - name = "Surgery Cleaner" +"dmT" = ( +/obj/item/shard{ + icon_state = "large" }, /turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"dme" = ( -/obj/structure/machinery/deployable/barrier, -/turf/open/floor/prison, -/area/fiorina/station/security) -"dmu" = ( -/obj/structure/filingcabinet/disk, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"dmB" = ( -/obj/structure/bed/chair{ +/area/fiorina/station/park) +"dnj" = ( +/obj/structure/platform{ dir = 4 }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"dmH" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/transit_hub) -"dnp" = ( -/obj/item/ammo_casing{ - icon_state = "casing_8" - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"dnx" = ( -/obj/structure/bed/sofa/south/grey/left, -/obj/structure/machinery/light/double/blue{ - dir = 1; +/obj/structure/prop/almayer/computers/mission_planning_system{ + density = 0; + desc = "Its a telephone, and a computer. Woah."; + name = "\improper funny telephone booth"; + pixel_x = 2; pixel_y = 21 }, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/transit_hub) +/area/fiorina/station/disco) "dnz" = ( /obj/structure/surface/table/woodentable/fancy, /obj/effect/spawner/random/toy, /turf/open/floor/wood, /area/fiorina/station/chapel) -"dnB" = ( -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"dnE" = ( -/obj/structure/machinery/newscaster{ - pixel_y = 32 - }, -/turf/open/floor/prison, -/area/fiorina/station/security) "dnK" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -5464,6 +5421,12 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) +"dnX" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) "doe" = ( /obj/item/tool/kitchen/utensil/pspoon, /turf/open/space/basic, @@ -5480,13 +5443,6 @@ /obj/structure/machinery/computer/shuttle/dropship/flight/lz1, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"doB" = ( -/obj/item/ammo_casing{ - dir = 6; - icon_state = "casing_10_1" - }, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_cargo) "doD" = ( /obj/structure/cable/heavyduty{ icon_state = "1-2" @@ -5506,40 +5462,36 @@ icon_state = "doubleside" }, /area/fiorina/maintenance) -"dpr" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 +"dpe" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 }, /turf/open/floor/prison{ - icon_state = "yellowfull" + dir = 6; + icon_state = "yellow" }, /area/fiorina/station/lowsec) -"dpt" = ( -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" +"dpn" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" }, -/area/fiorina/station/telecomm/lz1_cargo) -"dpE" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/powercell, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +/obj/structure/platform{ + dir = 4 }, -/area/fiorina/tumor/servers) +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) "dpH" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"dpI" = ( -/obj/structure/window/reinforced{ - dir = 8 +"dpZ" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + icon_state = "greenblue" }, -/obj/item/clothing/head/helmet/marine/veteran/ua_riot, -/turf/open/floor/prison, -/area/fiorina/station/security) +/area/fiorina/station/botany) "dqa" = ( /obj/structure/platform{ dir = 1 @@ -5549,13 +5501,6 @@ name = "pool" }, /area/fiorina/station/park) -"dqk" = ( -/obj/effect/spawner/random/sentry/midchance, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) "dqE" = ( /obj/structure/prop/souto_land/pole, /turf/open/floor/wood, @@ -5573,79 +5518,92 @@ icon_state = "stan_inner_s_w" }, /area/fiorina/tumor/ship) -"dra" = ( -/obj/structure/toilet{ - dir = 8; - pixel_y = 8 - }, -/obj/item/prop/helmetgarb/spacejam_tickets{ - desc = "Low security prisoners would smuggle in arcade tickets after visitations. The tickets act as a stand in for paper currency in the prison economy, they're backed by the cigarette standard, since one ticket nets one cigarette at the prize booth. The cigarettes also get smuggled back in."; - name = "\improper arcade tickets"; - pixel_x = 1; - pixel_y = -1 - }, +"dqX" = ( /turf/open/floor/prison{ - dir = 5; - icon_state = "whitepurple" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) -"dro" = ( -/obj/structure/closet/l3closet/general, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"dso" = ( -/obj/structure/closet{ - density = 0; - pixel_y = 18 +/area/fiorina/tumor/ice_lab) +"drd" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, -/obj/effect/spawner/random/tool, -/obj/item/clothing/gloves/combat, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 5; + icon_state = "darkyellow2" }, -/area/fiorina/station/research_cells) -"dsv" = ( -/obj/item/stack/cable_coil, +/area/fiorina/station/flight_deck) +"drk" = ( +/obj/effect/landmark/objective_landmark/far, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"dsQ" = ( -/obj/effect/decal/cleanable/blood/drip, +/area/fiorina/station/power_ring) +"drt" = ( +/obj/structure/machinery/vending/hydroseeds, /turf/open/floor/prison{ - dir = 5; - icon_state = "greenblue" + dir = 1; + icon_state = "blue_plate" }, /area/fiorina/station/botany) -"dsT" = ( +"drZ" = ( +/obj/item/clothing/mask/cigarette, /turf/open/floor/prison{ - dir = 6; - icon_state = "whitegreen" + dir = 9; + icon_state = "whitepurple" }, -/area/fiorina/tumor/ice_lab) -"dtc" = ( -/obj/structure/bed/chair{ +/area/fiorina/station/research_cells) +"dsS" = ( +/obj/structure/barricade/handrail/type_b{ dir = 4; - pixel_y = 4 + layer = 3.5 }, +/obj/item/trash/barcardine, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrowncorners2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/maintenance) +/area/fiorina/tumor/ice_lab) +"dsW" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_27"; + pixel_y = 6 + }, +/turf/open/floor/wood, +/area/fiorina/station/civres_blue) "dtg" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/ammo_magazine/shotgun/buckshot, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"dui" = ( -/obj/item/ammo_casing{ - icon_state = "casing_6_1" +"dtk" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/drinks/golden_cup, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/station/power_ring) +"dtR" = ( +/obj/item/stack/sheet/metal/medium_stack, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/civres_blue) +"dtS" = ( +/turf/open/floor/prison{ + dir = 6; + icon_state = "blue" + }, +/area/fiorina/station/chapel) +"due" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/monorail{ + dir = 10; + name = "launch track" + }, +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzII) "duw" = ( /obj/structure/reagent_dispensers/fueltank, /obj/structure/machinery/light/double/blue{ @@ -5656,19 +5614,6 @@ icon_state = "plate" }, /area/fiorina/tumor/aux_engi) -"duB" = ( -/obj/structure/machinery/shower{ - pixel_y = 13 - }, -/obj/structure/curtain/shower, -/obj/structure/window{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) "duF" = ( /obj/structure/window/framed/prison/reinforced, /turf/open/floor/plating/prison, @@ -5677,58 +5622,56 @@ /obj/structure/machinery/photocopier, /turf/open/floor/wood, /area/fiorina/station/security/wardens) +"duV" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/clipboard, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) +"duW" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"dvg" = ( +/obj/structure/bed/sofa/south/grey/right, +/turf/open/floor/prison, +/area/fiorina/station/disco) "dvq" = ( /obj/structure/machinery/newscaster, /turf/closed/wall/prison, /area/fiorina/station/medbay) -"dvs" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/emails{ - dir = 4 +"dvB" = ( +/obj/structure/platform_decoration, +/turf/open/floor/prison, +/area/fiorina/tumor/ice_lab) +"dwf" = ( +/obj/structure/bed/chair{ + dir = 8 }, /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 6; + icon_state = "darkbrown2" }, -/area/fiorina/station/power_ring) -"dvV" = ( -/obj/item/stack/cable_coil, +/area/fiorina/maintenance) +"dwJ" = ( +/obj/structure/machinery/processor{ + desc = "It CAN blend it."; + icon_state = "blender_e"; + name = "Blendomatic"; + pixel_x = -2; + pixel_y = 10 + }, +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - dir = 5; - icon_state = "blue" + dir = 10; + icon_state = "kitchen" }, -/area/fiorina/station/power_ring) -"dvY" = ( -/obj/structure/lattice, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/platform/kutjevo/smooth, -/turf/open/space, -/area/fiorina/oob) -"dwg" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" - }, -/obj/structure/platform, -/turf/open/floor/plating/prison, -/area/fiorina/station/flight_deck) -"dwk" = ( -/obj/structure/surface/rack, -/obj/item/device/camera, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/fiberbush) -"dwM" = ( -/obj/effect/decal/medical_decals{ - icon_state = "docdecal1" - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) +/area/fiorina/station/civres_blue) +"dwP" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison, +/area/fiorina/station/chapel) "dwQ" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/tumor/fiberbush) @@ -5738,80 +5681,81 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/security/wardens) +"dwZ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/objective{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) "dxb" = ( /obj/item/storage/briefcase/stowaway, /turf/open/space, /area/fiorina/oob) -"dxd" = ( -/obj/structure/platform{ - dir = 1 +"dxc" = ( +/obj/structure/monorail{ + name = "launch track" }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "darkyellow2" }, -/area/fiorina/station/park) -"dxg" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/toolbox, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/lz/near_lzI) +"dxl" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 }, -/area/fiorina/tumor/servers) -"dxA" = ( -/obj/structure/barricade/wooden, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/obj/structure/platform/kutjevo/smooth, +/turf/open/space, +/area/fiorina/oob) +"dxv" = ( /turf/open/floor/prison{ - icon_state = "cell_stripe" + dir = 10; + icon_state = "darkbrown2" }, -/area/fiorina/station/medbay) +/area/fiorina/maintenance) "dxE" = ( /obj/structure/prop/resin_prop{ icon_state = "rack" }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"dxJ" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) -"dxO" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" +"dxP" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/area/fiorina/station/flight_deck) +/turf/open/floor/plating/prison, +/area/fiorina/tumor/civres) "dxS" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/tumor/servers) -"dyd" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" +"dxW" = ( +/obj/item/tool/warning_cone, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/floor/prison, -/area/fiorina/station/botany) -"dyi" = ( +/area/fiorina/station/power_ring) +"dyh" = ( /obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 - }, -/obj/structure/platform{ - dir = 4 - }, -/turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" + dir = 1; + pixel_y = 21 }, -/area/fiorina/station/disco) -"dyp" = ( -/obj/item/tool/kitchen/utensil/pspoon, /turf/open/floor/prison{ dir = 4; - icon_state = "blue" + icon_state = "greenfull" }, -/area/fiorina/station/power_ring) +/area/fiorina/tumor/servers) "dyB" = ( /obj/effect/decal/cleanable/blood{ icon_state = "xgib4" @@ -5819,81 +5763,52 @@ /obj/item/explosive/grenade/high_explosive/m15, /turf/open/floor/plating/prison, /area/fiorina/station/chapel) -"dyM" = ( -/turf/open/floor/prison{ - dir = 6; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"dzj" = ( -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 - }, -/turf/open/floor/prison{ - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"dzk" = ( -/obj/structure/bed/roller, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"dyY" = ( +/obj/structure/toilet{ + dir = 1 }, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" + dir = 10; + icon_state = "kitchen" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/tumor/civres) "dzl" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/station/flight_deck) -"dzo" = ( -/obj/structure/bed/chair/comfy{ - dir = 8 - }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"dAe" = ( -/obj/structure/machinery/line_nexter{ - id = "line2"; - pixel_x = -2 +"dzB" = ( +/turf/open/floor/prison{ + icon_state = "kitchen" }, -/obj/structure/barricade/handrail/type_b, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"dAk" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/prison, -/area/fiorina/station/park) -"dAA" = ( -/obj/structure/barricade/wooden{ - dir = 4 +/area/fiorina/station/research_cells) +"dzE" = ( +/obj/structure/machinery/shower{ + dir = 1; + pixel_y = -1 }, -/turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"dAB" = ( /turf/open/floor/prison{ - dir = 9; - icon_state = "darkyellow2" - }, -/area/fiorina/station/flight_deck) -"dAQ" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 + icon_state = "kitchen" }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"dBa" = ( +/area/fiorina/station/lowsec) +"dAd" = ( /obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" + icon_state = "p_stair_ew_full_cap" }, -/obj/structure/platform, +/obj/structure/platform/stair_cut/alt, /turf/open/floor/plating/prison, /area/fiorina/station/disco) +"dAg" = ( +/turf/open/floor/prison{ + dir = 5; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"dBl" = ( +/obj/item/ammo_magazine/rifle/mar40/extended, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/lowsec) "dBq" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer{ @@ -5909,55 +5824,81 @@ }, /turf/open/floor/plating/prison, /area/fiorina/oob) -"dBC" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"dBs" = ( +/obj/structure/machinery/door/airlock/prison_hatch/autoname, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) +"dBt" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/prison{ + dir = 5; + icon_state = "greenblue" }, +/area/fiorina/station/botany) +"dBy" = ( +/turf/open/floor/prison, +/area/fiorina/station/chapel) +"dBz" = ( +/obj/structure/bed/chair/comfy, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 6; + icon_state = "yellow" }, -/area/fiorina/tumor/servers) -"dBI" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/ashtray/plastic, -/obj/item/trash/cigbutt, +/area/fiorina/station/disco) +"dBO" = ( +/obj/structure/machinery/vending/security, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "redfull" + }, +/area/fiorina/station/security) +"dBZ" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowcorners2" + }, +/area/fiorina/station/flight_deck) +"dCg" = ( +/obj/structure/bed/chair, +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood/drip{ + icon_state = "2" }, +/obj/effect/decal/cleanable/blood/drip{ + icon_state = "4" + }, +/obj/item/prop/helmetgarb/flair_initech, +/obj/effect/landmark/corpsespawner/ua_riot, +/turf/open/floor/prison, /area/fiorina/station/medbay) -"dBR" = ( -/obj/structure/bed/chair/comfy{ +"dCn" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + density = 0; dir = 4 }, /turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_tram) -"dBY" = ( -/obj/structure/surface/rack, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +/area/fiorina/station/security) +"dCs" = ( +/obj/effect/decal/cleanable/blood/splatter{ + icon_state = "gib2" }, -/area/fiorina/tumor/servers) -"dCb" = ( -/obj/structure/platform, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, -/area/fiorina/station/power_ring) -"dCl" = ( -/obj/effect/spawner/random/tool, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/servers) -"dCo" = ( -/obj/item/clothing/shoes/laceup, +/area/fiorina/station/medbay) +"dCt" = ( +/obj/structure/machinery/vending/coffee, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) +/area/fiorina/station/transit_hub) "dCu" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 2; @@ -5965,133 +5906,88 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"dCA" = ( -/obj/item/organ/lungs, -/obj/effect/decal/cleanable/blood, +"dCv" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/trash/plate, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/telecomm/lz1_cargo) -"dCF" = ( -/obj/effect/landmark/survivor_spawner, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) +/area/fiorina/station/medbay) +"dCK" = ( +/obj/structure/prop/souto_land/pole, +/turf/open/floor/prison{ + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) "dCM" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/station/security) -"dDm" = ( -/obj/item/device/flashlight, +"dDn" = ( +/obj/effect/spawner/random/tool, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"dDy" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - dir = 9; - icon_state = "yellow" - }, -/area/fiorina/station/disco) -"dDM" = ( -/obj/structure/closet/wardrobe/orange, -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/lowsec) -"dDS" = ( -/obj/structure/closet/crate/miningcar{ - name = "\improper materials storage bin" +/area/fiorina/station/park) +"dDI" = ( +/obj/structure/machinery/landinglight/ds1{ + dir = 8 }, -/obj/item/reagent_container/food/snacks/meat, /turf/open/floor/prison{ dir = 4; - icon_state = "greenblue" - }, -/area/fiorina/station/botany) -"dDU" = ( -/obj/effect/decal/cleanable/blood{ - icon_state = "xgibdown1" - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/chapel) -"dEo" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" + icon_state = "darkyellowfull2" }, -/obj/structure/platform, +/area/fiorina/lz/near_lzI) +"dDT" = ( /obj/structure/machinery/light/double/blue{ dir = 8; pixel_x = -10; - pixel_y = -3 - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/flight_deck) -"dEy" = ( -/obj/item/trash/uscm_mre, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/station/flight_deck) -"dEF" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_29"; - pixel_y = 6 + pixel_y = 13 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/station/power_ring) -"dEI" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" +/area/fiorina/tumor/servers) +"dDU" = ( +/obj/effect/decal/cleanable/blood{ + icon_state = "xgibdown1" }, -/obj/structure/platform, /turf/open/floor/plating/prison, -/area/fiorina/tumor/servers) -"dFh" = ( -/obj/item/stack/cable_coil, -/turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/chapel) -"dFk" = ( -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreencorner" - }, -/area/fiorina/tumor/ice_lab) -"dFw" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, +"dEh" = ( +/obj/item/reagent_container/food/drinks/cans/sodawater, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/park) -"dFC" = ( -/obj/structure/prop/almayer/computers/sensor_computer1{ - name = "computer" +/area/fiorina/station/central_ring) +"dEj" = ( +/obj/structure/machinery/optable{ + desc = "This maybe could be used for advanced medical procedures."; + name = "Exam Table" }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" +/obj/item/bedsheet/ce{ + desc = "It crinkles, aggressively."; + name = "sterile wax sheet" }, -/area/fiorina/station/lowsec) -"dFE" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/area/fiorina/station/park) -"dFG" = ( -/obj/structure/inflatable, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreen" + icon_state = "redfull" }, /area/fiorina/station/medbay) +"dFh" = ( +/obj/item/stack/cable_coil, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/chapel) +"dFB" = ( +/obj/effect/decal/cleanable/blood/gibs, +/obj/effect/spawner/random/gun/shotgun/midchance, +/turf/open/floor/prison, +/area/fiorina/station/security) "dFH" = ( /obj/structure/closet/cabinet, /obj/item/key/cargo_train, @@ -6099,6 +5995,21 @@ /obj/item/clothing/accessory/armband/cargo, /turf/open/floor/wood, /area/fiorina/station/civres_blue) +"dFI" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 + }, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) +"dFK" = ( +/obj/structure/surface/rack, +/obj/item/ammo_box/magazine/nailgun, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/maintenance) "dFM" = ( /obj/item/circuitboard/machine/pacman/super, /obj/structure/machinery/constructable_frame{ @@ -6106,32 +6017,6 @@ }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"dFO" = ( -/obj/item/weapon/gun/rifle/m16, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison{ - icon_state = "damaged3" - }, -/area/fiorina/station/security) -"dGc" = ( -/obj/effect/landmark/monkey_spawn, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"dGj" = ( -/obj/structure/machinery/power/apc{ - start_charge = 0 - }, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"dGw" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 4 - }, -/turf/open/floor/prison, -/area/fiorina/station/disco) "dGx" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 10 @@ -6144,94 +6029,101 @@ name = "astroturf" }, /area/fiorina/station/civres_blue) +"dGA" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/station/park) +"dHb" = ( +/obj/structure/closet/secure_closet/guncabinet{ + req_access = null + }, +/obj/item/storage/box/pillbottles, +/obj/item/clothing/under/marine/ua_riot, +/obj/item/clothing/suit/storage/marine/veteran/ua_riot, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) "dHd" = ( /obj/structure/sign/safety/bulkhead_door, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/tumor/civres) -"dHp" = ( +"dHD" = ( /turf/open/floor/prison{ - dir = 8; + dir = 1; icon_state = "yellow" }, /area/fiorina/station/lowsec) -"dIa" = ( -/obj/item/stack/sheet/metal{ - amount = 5 - }, +"dHU" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" - }, -/area/fiorina/lz/near_lzI) -"dIi" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" + icon_state = "platingdmg1" }, -/turf/open/floor/prison, /area/fiorina/station/security) +"dIh" = ( +/obj/structure/largecrate/random/case, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) "dIo" = ( /turf/closed/wall/prison, /area/fiorina/tumor/civres) -"dIp" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/communications, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"dIq" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "darkyellow2" +"dIx" = ( +/obj/structure/platform{ + dir = 4 }, -/area/fiorina/station/flight_deck) -"dID" = ( -/obj/structure/closet/bodybag, -/obj/effect/decal/medical_decals{ - dir = 4; - icon_state = "triagedecaldir" +/turf/open/floor/prison{ + dir = 5; + icon_state = "yellow" }, -/obj/effect/landmark/objective_landmark/close, +/area/fiorina/station/disco) +"dJd" = ( +/obj/effect/decal/cleanable/blood/gibs, +/obj/item/ammo_magazine/rifle/mar40, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"dIK" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 +/area/fiorina/station/lowsec) +"dJe" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/prison, +/area/fiorina/station/park) +"dJh" = ( +/obj/structure/bookcase/manuals/research_and_development{ + pixel_y = 10 }, -/obj/structure/largecrate/random, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + dir = 1; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"dJt" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 }, -/area/fiorina/station/telecomm/lz1_tram) -"dJl" = ( -/obj/item/device/flashlight/flare, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" + icon_state = "yellow" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/disco) "dKo" = ( /obj/effect/spawner/random/gun/shotgun, /turf/open/floor/carpet, /area/fiorina/station/security/wardens) -"dKy" = ( -/obj/item/trash/c_tube, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"dKI" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" +"dKB" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 }, /turf/open/floor/prison, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/telecomm/lz1_tram) "dKX" = ( /obj/effect/landmark/survivor_spawner, /turf/open/floor/plating/plating_catwalk/prison, @@ -6242,148 +6134,142 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"dLx" = ( -/obj/structure/bed/chair/office/light{ - dir = 4 - }, +"dLL" = ( /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"dLF" = ( -/obj/structure/barricade/handrail, -/turf/open/floor/prison{ - dir = 5; - icon_state = "whitepurple" + icon_state = "darkpurple2" }, -/area/fiorina/station/research_cells) -"dMa" = ( -/obj/structure/largecrate/random, -/turf/open/floor/plating/prison, -/area/fiorina/maintenance) -"dMc" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" +/area/fiorina/tumor/servers) +"dLN" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/emails{ + pixel_y = 5 }, -/obj/structure/platform, -/turf/open/floor/plating/prison, -/area/fiorina/station/park) -"dMm" = ( -/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "bluefull" }, /area/fiorina/station/power_ring) -"dMv" = ( +"dMt" = ( /turf/open/floor/prison{ - icon_state = "greenbluecorner" + dir = 8; + icon_state = "darkbrowncorners2" }, -/area/fiorina/station/botany) -"dMK" = ( -/obj/item/tool/pickaxe, -/obj/item/tool/pickaxe{ - pixel_y = 5 +/area/fiorina/tumor/aux_engi) +"dNc" = ( +/obj/structure/platform{ + dir = 1 }, -/obj/item/tool/pickaxe{ - pixel_y = 10 +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/obj/structure/surface/rack, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) -"dMO" = ( -/obj/structure/bed/chair{ - dir = 4 +/area/fiorina/station/power_ring) +"dNh" = ( +/turf/open/auto_turf/sand/layer1, +/area/fiorina/lz/near_lzI) +"dNk" = ( +/obj/structure/machinery/door/airlock/prison_hatch/autoname{ + dir = 1 }, -/obj/structure/bed/chair{ - dir = 4; - pixel_y = 4 +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"dNx" = ( +/obj/structure/monorail{ + dir = 9; + name = "launch track" }, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/aux_engi) +"dNC" = ( +/obj/structure/machinery/vending/cigarette/colony, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_marked" - }, -/area/fiorina/station/park) -"dMU" = ( -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/lattice, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 + icon_state = "darkredfull2" }, -/turf/open/space, -/area/fiorina/oob) -"dNh" = ( -/turf/open/auto_turf/sand/layer1, /area/fiorina/lz/near_lzI) -"dNF" = ( +"dOk" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "panelscorched" + }, +/area/fiorina/tumor/civres) +"dOt" = ( +/obj/structure/surface/table/reinforced/prison{ + flipped = 1 }, -/area/fiorina/tumor/ice_lab) -"dOs" = ( /turf/open/floor/prison{ - dir = 6; - icon_state = "blue" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/civres_blue) +/area/fiorina/station/medbay) "dOE" = ( /obj/item/storage/bible/hefa, /turf/open/floor/wood, /area/fiorina/station/chapel) -"dOF" = ( -/obj/structure/prop/structure_lattice{ - dir = 4; - health = 300 - }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 - }, +"dOO" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "whitegreen" }, -/area/fiorina/oob) +/area/fiorina/station/medbay) "dOX" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/lz/near_lzI) -"dPC" = ( -/obj/structure/machinery/computer3/server/rack, +"dOZ" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) -"dPQ" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, +/area/fiorina/station/power_ring) +"dPe" = ( +/obj/structure/bed/chair, /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" + icon_state = "yellowfull" }, /area/fiorina/station/disco) -"dQp" = ( -/obj/effect/decal/hefa_cult_decals/d32, +"dPm" = ( +/obj/structure/bed/chair{ + dir = 1; + layer = 2.7 + }, /turf/open/floor/prison, -/area/fiorina/station/medbay) -"dQA" = ( -/obj/item/tool/screwdriver, +/area/fiorina/station/power_ring) +"dPr" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/obj/structure/platform_decoration{ + dir = 1 + }, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) +/area/fiorina/station/telecomm/lz1_tram) +"dPZ" = ( +/obj/structure/monorail{ + dir = 6; + name = "launch track" + }, +/turf/open/space, +/area/fiorina/oob) +"dQe" = ( +/obj/item/tool/surgery/scalpel, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) +"dQV" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor/prison, +/area/fiorina/station/disco) "dQW" = ( /obj/item/ammo_casing{ dir = 8; @@ -6394,22 +6280,28 @@ name = "astroturf" }, /area/fiorina/station/park) -"dQY" = ( -/obj/structure/platform{ - dir = 4 +"dRk" = ( +/obj/item/shard{ + icon_state = "large" }, /turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/disco) -"dRm" = ( -/obj/item/storage/bible/hefa, +/area/fiorina/tumor/servers) +"dRs" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/clothing/accessory/blue, /turf/open/floor/prison{ - dir = 6; - icon_state = "green" + icon_state = "floor_plate" }, -/area/fiorina/station/chapel) +/area/fiorina/tumor/aux_engi) +"dRx" = ( +/obj/structure/monorail{ + dir = 5; + name = "launch track" + }, +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzI) "dRO" = ( /obj/effect/acid_hole{ dir = 4 @@ -6419,112 +6311,143 @@ name = "metal wall" }, /area/fiorina/oob) -"dSw" = ( -/obj/structure/bed{ - icon_state = "abed" - }, -/turf/open/floor/prison{ - dir = 6; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"dSy" = ( -/obj/structure/bed/sofa/vert/grey/bot{ - pixel_y = 8 - }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"dSz" = ( -/obj/structure/barricade/wooden{ - dir = 8 - }, +"dSM" = ( +/obj/effect/spawner/random/tool, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/tumor/servers) "dTf" = ( /obj/structure/largecrate/random/case, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"dTp" = ( +"dTg" = ( /obj/structure/bed/chair/office/dark, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, -/area/fiorina/tumor/ice_lab) -"dTv" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/fiorina/station/research_cells) +/area/fiorina/station/medbay) "dTx" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"dUs" = ( +"dTX" = ( +/obj/structure/surface/rack, +/obj/item/storage/bible/hefa{ + pixel_y = 3 + }, +/obj/item/storage/bible/hefa, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"dUf" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, /turf/open/floor/prison{ dir = 9; - icon_state = "blue" + icon_state = "greenfull" }, -/area/fiorina/station/civres_blue) -"dUZ" = ( -/obj/structure/monorail{ - name = "launch track" +/area/fiorina/tumor/civres) +"dUi" = ( +/obj/structure/bed/sofa/vert/grey/bot{ + pixel_y = 8 }, -/turf/open/space/basic, -/area/fiorina/oob) -"dVe" = ( -/obj/structure/machinery/vending/coffee, -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"dUn" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_29"; + pixel_x = 1; + pixel_y = 10 }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"dUu" = ( +/obj/structure/machinery/recharge_station, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"dVm" = ( -/obj/item/storage/pill_bottle/spaceacillin/skillless, +/area/fiorina/station/security) +"dUx" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, /turf/open/floor/prison{ - dir = 5; + dir = 6; icon_state = "whitepurple" }, /area/fiorina/station/research_cells) -"dVK" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/drinks/coffee, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"dWx" = ( -/obj/structure/platform_decoration{ - dir = 4 +"dVu" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 }, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "yellow" + }, +/area/fiorina/station/disco) +"dVx" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/floor/prison, +/area/fiorina/station/security) +"dVA" = ( +/obj/item/stool, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) +"dVC" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/clipboard, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) +"dVD" = ( +/obj/structure/inflatable/popped/door, +/turf/open/floor/prison{ + icon_state = "whitegreen" }, /area/fiorina/station/medbay) +"dVR" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/aux_engi) +"dWn" = ( +/obj/structure/barricade/wooden, +/obj/item/device/flashlight/flare, +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"dWp" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/pill_bottle/russianRed{ + pixel_y = 9 + }, +/obj/item/storage/pill_bottle/kelotane/skillless, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) "dWB" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"dWM" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/lowsec) -"dWN" = ( -/obj/structure/inflatable/popped/door, +"dXi" = ( +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 4; + icon_state = "darkpurple2" }, -/area/fiorina/station/medbay) +/area/fiorina/tumor/servers) "dXv" = ( /obj/structure/barricade/wooden{ dir = 1 @@ -6534,112 +6457,138 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"dXz" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) "dXG" = ( /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"dXH" = ( -/obj/structure/bed/chair{ - dir = 4 - }, +"dXK" = ( +/obj/item/newspaper, /turf/open/floor/prison{ + icon_state = "green" + }, +/area/fiorina/station/transit_hub) +"dXN" = ( +/obj/structure/barricade/handrail/type_b{ + layer = 3.4 + }, +/obj/structure/barricade/handrail/type_b{ dir = 4; - icon_state = "blue_plate" + layer = 3.5 + }, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/area/fiorina/station/botany) -"dYr" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/explosive/grenade/incendiary/molotov, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/lowsec) -"dYv" = ( -/obj/item/device/flashlight, +/area/fiorina/tumor/ice_lab) +"dXS" = ( +/obj/structure/bed/chair/office/light, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/station/research_cells) +"dXT" = ( +/obj/structure/platform_decoration, +/obj/effect/spawner/random/toolbox, /turf/open/floor/prison, +/area/fiorina/station/power_ring) +"dYi" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) +"dYo" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "yellow" + }, +/area/fiorina/station/disco) +"dYp" = ( +/obj/docking_port/stationary/marine_dropship/lz1{ + name = "LZ1: Hangar Landing Zone" + }, +/turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) +"dYq" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/faxmachine, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) +"dYC" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) "dYI" = ( /turf/closed/shuttle/ert{ icon_state = "stan20" }, /area/fiorina/tumor/aux_engi) -"dYP" = ( -/obj/item/stack/sheet/wood, +"dYV" = ( /turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/station/research_cells) -"dZc" = ( -/obj/structure/bed/chair{ - dir = 1 + dir = 8; + icon_state = "darkbrowncorners2" }, +/area/fiorina/maintenance) +"dZj" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /turf/open/floor/prison{ - dir = 9; - icon_state = "blue" - }, -/area/fiorina/station/power_ring) -"dZt" = ( -/obj/structure/machinery/disposal, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + icon_state = "darkbrownfull2" }, +/area/fiorina/tumor/aux_engi) +"dZo" = ( +/obj/structure/closet/secure_closet/engineering_materials, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/chapel) -"dZA" = ( -/obj/structure/closet, +/area/fiorina/tumor/aux_engi) +"dZu" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/card/id/guest, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + icon_state = "redfull" }, -/area/fiorina/station/flight_deck) -"eag" = ( -/obj/item/clothing/under/color/orange, -/obj/item/clothing/under/color/orange, -/obj/item/clothing/under/color/orange, -/obj/structure/surface/rack, +/area/fiorina/station/security) +"dZK" = ( /turf/open/floor/prison{ dir = 4; - icon_state = "yellow" + icon_state = "bluecorner" }, -/area/fiorina/station/lowsec) -"eaL" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/clothing/head/beret/eng{ - pixel_x = 5; - pixel_y = 3 +/area/fiorina/station/chapel) +"dZQ" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellow2" }, -/obj/item/book/manual/engineering_guide{ - pixel_x = -4 +/area/fiorina/lz/near_lzI) +"eac" = ( +/obj/structure/bed/chair{ + dir = 1 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" + icon_state = "yellowfull" + }, +/area/fiorina/station/disco) +"eao" = ( +/obj/structure/machinery/shower{ + dir = 8 }, -/area/fiorina/tumor/civres) -"eaQ" = ( -/obj/effect/decal/cleanable/blood/gibs, /turf/open/floor/prison{ - dir = 9; - icon_state = "yellow" + icon_state = "kitchen" }, /area/fiorina/station/lowsec) -"eaZ" = ( -/obj/effect/spawner/random/toolbox, -/turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"ebc" = ( +"eca" = ( /obj/structure/platform{ dir = 1 }, @@ -6651,42 +6600,25 @@ icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"ebm" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison{ - dir = 5; - icon_state = "greenblue" - }, -/area/fiorina/station/botany) -"ebP" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 4 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/disco) "ecd" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"ecp" = ( -/obj/structure/inflatable/popped/door, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) "ecu" = ( /obj/item/stack/sheet/metal/medium_stack, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"ecF" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited{ - pixel_y = 32 +"ecD" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/structure/prop/souto_land/streamer{ + pixel_y = 24 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" + icon_state = "darkbrown2" }, -/area/fiorina/tumor/civres) +/area/fiorina/station/park) "ecL" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/tool, @@ -6700,56 +6632,62 @@ icon_state = "stan_rightengine" }, /area/fiorina/tumor/ship) -"eda" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 - }, +"ecU" = ( /turf/open/floor/prison{ dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/tumor/servers) -"edv" = ( -/obj/item/storage/fancy/cigar, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"eej" = ( -/obj/item/reagent_container/food/drinks/coffee{ - name = "\improper paper cup" + icon_state = "darkyellow2" }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"eev" = ( -/obj/structure/machinery/vending/walkman, +/area/fiorina/station/flight_deck) +"eds" = ( +/obj/structure/surface/rack, +/obj/item/device/flashlight, +/obj/effect/decal/cleanable/blood, +/obj/item/attachable/bipod, +/obj/item/device/multitool, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "darkyellow2" }, -/area/fiorina/tumor/aux_engi) -"eew" = ( -/obj/structure/platform{ - dir = 4 +/area/fiorina/station/telecomm/lz1_cargo) +"edu" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" }, /obj/structure/platform, -/obj/structure/platform_decoration{ - dir = 6 +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"edy" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/botany) +/area/fiorina/station/central_ring) +"edY" = ( +/obj/item/trash/used_stasis_bag{ + desc = "Wow, instant sand. They really have everything in space."; + name = "Insta-Sand! bag" + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"eeH" = ( +/obj/structure/monorail{ + dir = 9; + name = "launch track" + }, +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzI) "eeI" = ( /obj/structure/lattice, /obj/item/stack/sheet/metal, /turf/open/floor/almayer_hull, /area/fiorina/oob) -"eeL" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "green" - }, -/area/fiorina/station/transit_hub) "efk" = ( /obj/effect/decal/cleanable/blood/drip, /obj/effect/landmark/objective_landmark/close, @@ -6770,141 +6708,121 @@ /obj/structure/blocker/invisible_wall, /turf/open/floor/plating/prison, /area/fiorina/oob) -"efz" = ( -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" +"efI" = ( +/obj/structure/disposalpipe/segment{ + color = "#c4c4c4"; + dir = 4; + layer = 6; + name = "overhead pipe"; + pixel_y = 20 + }, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 }, +/turf/open/floor/prison, /area/fiorina/tumor/servers) -"efS" = ( -/obj/structure/monorail{ - dir = 9; - name = "launch track" +"efR" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" }, /turf/open/floor/plating/prison, -/area/fiorina/station/transit_hub) +/area/fiorina/station/central_ring) "efT" = ( /obj/structure/machinery/shower{ dir = 8 }, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/tumor/ice_lab) -"ege" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, +"efW" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/servers) -"egm" = ( -/obj/structure/bed/sofa/south/grey/right, -/obj/item/storage/briefcase{ - pixel_y = -2 + dir = 6; + icon_state = "yellow" }, +/area/fiorina/station/lowsec) +"egd" = ( +/obj/structure/machinery/photocopier, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "bluefull" }, -/area/fiorina/station/security) +/area/fiorina/station/power_ring) +"egk" = ( +/obj/structure/extinguisher_cabinet, +/turf/closed/wall/r_wall/prison_unmeltable, +/area/fiorina/station/central_ring) "egv" = ( /turf/closed/wall/mineral/bone_resin, /area/fiorina/station/civres_blue) -"egx" = ( -/obj/item/trash/boonie, -/turf/open/floor/prison, +"egz" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, /area/fiorina/station/power_ring) "egL" = ( /obj/item/newspaper, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"egY" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 - }, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/tumor/servers) -"ehf" = ( -/obj/item/stack/sheet/metal, +"egT" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"ehr" = ( +/obj/effect/landmark/corpsespawner/ua_riot, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) -"ehg" = ( -/obj/structure/machinery/cm_vending/sorted/marine_food{ - desc = "Prison meal vendor, containing preprepared meals fit for the dregs of society."; - name = "\improper Fiorina Engineering Canteen Vendor" - }, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) -"ehA" = ( -/obj/structure/bed{ - icon_state = "abed" - }, -/obj/item/ammo_magazine/smg/mp5, -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"eir" = ( -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 - }, -/obj/structure/barricade/wooden{ - dir = 4 - }, -/turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/station/telecomm/lz1_cargo) -"eix" = ( -/obj/structure/closet/bombcloset, +"ehy" = ( +/obj/structure/machinery/landinglight/ds1/delaythree, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/flight_deck) -"ejk" = ( -/obj/structure/disposalpipe/segment{ - color = "#c4c4c4"; dir = 4; - layer = 6; - name = "overhead pipe"; - pixel_y = 12 + icon_state = "darkyellowfull2" }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/lz/near_lzI) +"ehO" = ( +/obj/structure/platform/shiva, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"eim" = ( +/obj/structure/platform_decoration{ + dir = 4 }, -/area/fiorina/tumor/civres) -"ejn" = ( -/obj/effect/decal/cleanable/blood, -/obj/effect/spawner/random/gun/pistol/midchance, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/security) -"ejp" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/tool/kitchen/rollingpin, -/obj/item/reagent_container/food/snacks/grown/carrot, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" +/area/fiorina/tumor/servers) +"eio" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"eip" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" }, -/area/fiorina/station/civres_blue) +/obj/structure/platform, +/turf/open/floor/plating/prison, +/area/fiorina/station/security) +"ejf" = ( +/obj/structure/closet/bodybag, +/obj/effect/decal/cleanable/blood/gibs/down, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) "ejq" = ( /obj/structure/machinery/space_heater, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/tumor/ice_lab) +"ejs" = ( +/turf/open/floor/prison{ + icon_state = "cell_stripe" + }, +/area/fiorina/station/security) "ejt" = ( /obj/effect/landmark/monkey_spawn, /turf/open/floor/plating/prison, @@ -6912,61 +6830,92 @@ "ejw" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/tumor/ice_lab) -"ejO" = ( -/obj/structure/barricade/sandbags{ - dir = 8; - icon_state = "sandbag_0"; +"ejL" = ( +/obj/structure/largecrate/supply/supplies/water, +/obj/item/reagent_container/food/drinks/cans/waterbottle{ + pixel_x = -4; + pixel_y = 14 + }, +/obj/item/reagent_container/food/drinks/cans/waterbottle{ + pixel_x = 1; + pixel_y = 12 + }, +/turf/open/floor/prison, +/area/fiorina/station/security) +"ejM" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/box/wy_mre{ + pixel_x = 5; pixel_y = 2 }, /turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/disco) +/area/fiorina/station/research_cells) +"ekb" = ( +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_tram) "eki" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/close, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"ekH" = ( -/obj/structure/bed/roller, -/turf/open/floor/prison, -/area/fiorina/station/chapel) -"eli" = ( -/obj/structure/closet/emcloset, +"ekx" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "blue" + }, +/area/fiorina/station/power_ring) +"ekz" = ( +/obj/structure/barricade/wooden{ + dir = 1 + }, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"elq" = ( +"ekF" = ( +/obj/effect/landmark/yautja_teleport, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenbluecorner" - }, -/area/fiorina/station/botany) -"elC" = ( -/obj/structure/barricade/wooden{ - dir = 8 - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + icon_state = "bluefull" }, +/area/fiorina/station/civres_blue) +"ekS" = ( +/obj/effect/landmark/static_comms/net_one, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" + dir = 10; + icon_state = "floor_plate" }, /area/fiorina/station/telecomm/lz1_cargo) -"elY" = ( -/obj/structure/largecrate/random, -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 +"ekW" = ( +/obj/structure/bed/chair{ + dir = 1 }, +/turf/open/floor/prison{ + dir = 6; + icon_state = "blue" + }, +/area/fiorina/station/power_ring) +"elc" = ( +/obj/structure/bed/roller, +/obj/effect/decal/cleanable/blood/gibs/body, /turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/lowsec) +"ele" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) +"elO" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) "emm" = ( /obj/structure/machinery/light/double/blue{ dir = 4; @@ -6986,41 +6935,24 @@ }, /turf/open/space, /area/fiorina/oob) -"emU" = ( -/obj/structure/platform, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/transit_hub) -"ena" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" - }, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) "end" = ( /obj/structure/window/framed/prison/cell, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"enh" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, +"enu" = ( +/obj/item/trash/uscm_mre, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/station/power_ring) -"enG" = ( -/obj/item/tool/warning_cone, +/area/fiorina/station/flight_deck) +"enx" = ( +/obj/item/tool/shovel, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 6; + icon_state = "green" }, -/area/fiorina/station/disco) +/area/fiorina/tumor/civres) "enH" = ( /obj/effect/alien/weeds/node, /turf/open/organic/grass{ @@ -7032,74 +6964,126 @@ /obj/item/stack/sheet/metal, /turf/open/floor/plating/prison, /area/fiorina/oob) -"eok" = ( +"eot" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 8; + icon_state = "darkyellow2" }, -/area/fiorina/oob) +/area/fiorina/station/telecomm/lz1_tram) "eov" = ( /turf/closed/wall/r_wall/prison_unmeltable{ desc = "A huge chunk of metal used to seperate rooms."; name = "metal wall" }, /area/fiorina/station/research_cells) -"eoR" = ( -/obj/structure/bed/chair, -/turf/open/floor/prison, -/area/fiorina/station/park) +"eow" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) "eoW" = ( /obj/structure/largecrate/random/case, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"eoZ" = ( -/obj/item/ammo_magazine/rifle/m16{ - current_rounds = 0 +"epB" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison{ + icon_state = "blue" + }, +/area/fiorina/station/power_ring) +"epD" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_17"; + pixel_y = 13 }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"eph" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/telecomm/lz1_cargo) -"eps" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) +/area/fiorina/tumor/ice_lab) "epV" = ( /obj/item/paper/crumpled/bloody, /turf/open/floor/wood, /area/fiorina/station/chapel) -"eqq" = ( -/obj/structure/surface/table/reinforced/prison, +"epY" = ( +/obj/structure/bed/sofa/vert/grey/top, +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_tram) +"eqi" = ( +/obj/structure/surface/rack, +/obj/item/tank/emergency_oxygen/engi, +/obj/item/tank/emergency_oxygen/engi, +/obj/item/device/flashlight, +/obj/item/device/flashlight, /turf/open/floor/prison{ dir = 1; - icon_state = "blue_plate" + icon_state = "darkyellow2" }, -/area/fiorina/station/botany) -"eqC" = ( -/obj/item/reagent_container/food/drinks/cans/waterbottle, -/turf/open/floor/prison, /area/fiorina/lz/near_lzI) +"eqw" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "bluecorner" + }, +/area/fiorina/station/power_ring) +"eqJ" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor/prison, +/area/fiorina/station/medbay) "eqQ" = ( /turf/open/floor/corsat{ icon_state = "squares" }, /area/fiorina/station/telecomm/lz1_cargo) -"eqT" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/paper/janitor, +"eqS" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "yellowfull" + icon_state = "green" }, -/area/fiorina/station/disco) -"ere" = ( -/obj/structure/barricade/handrail/type_b, +/area/fiorina/station/chapel) +"eqU" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) +"eqZ" = ( +/obj/structure/largecrate/random/mini/ammo, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) +"erb" = ( +/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison{ + dir = 1; icon_state = "darkyellow2" }, -/area/fiorina/station/flight_deck) +/area/fiorina/station/telecomm/lz1_cargo) +"erh" = ( +/obj/item/ammo_casing{ + icon_state = "casing_1" + }, +/turf/open/floor/prison{ + icon_state = "darkyellow2" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"erj" = ( +/obj/structure/prop/structure_lattice{ + dir = 4 + }, +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 + }, +/turf/open/floor/prison, +/area/fiorina/tumor/ice_lab) "erl" = ( /obj/structure/machinery/light/double/blue{ dir = 8; @@ -7108,41 +7092,49 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"ers" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 - }, +"erw" = ( +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/station/power_ring) -"erB" = ( -/obj/structure/machinery/vending/sovietsoda, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"erD" = ( +/obj/structure/largecrate/supply, +/obj/structure/platform_decoration{ + dir = 8 }, -/area/fiorina/station/civres_blue) +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/medbay) "erT" = ( /obj/structure/platform_decoration/kutjevo{ dir = 8 }, /turf/open/space, /area/fiorina/oob) -"esE" = ( -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 +"erU" = ( +/obj/structure/machinery/shower{ + pixel_y = 13 + }, +/obj/structure/machinery/shower{ + dir = 8 }, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "kitchen" }, -/area/fiorina/lz/near_lzI) -"esF" = ( +/area/fiorina/station/lowsec) +"esw" = ( /turf/open/floor/prison{ - icon_state = "panelscorched" + dir = 8; + icon_state = "cell_stripe" }, -/area/fiorina/tumor/servers) +/area/fiorina/station/medbay) +"esR" = ( +/obj/structure/machinery/space_heater, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) "esS" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating/prison, @@ -7155,111 +7147,108 @@ name = "astroturf" }, /area/fiorina/station/park) +"etj" = ( +/turf/open/floor/prison{ + dir = 5; + icon_state = "green" + }, +/area/fiorina/station/chapel) +"etq" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "yellow" + }, +/area/fiorina/station/disco) "etL" = ( /obj/item/tool/weldingtool, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"euC" = ( -/obj/structure/monorail{ - name = "launch track" - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) -"euG" = ( -/obj/item/reagent_container/food/drinks/cans/waterbottle, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"euR" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/folder/red{ - pixel_x = 4; - pixel_y = -2 +"eub" = ( +/obj/structure/bed{ + icon_state = "abed" }, -/obj/item/folder/red{ - pixel_x = -3; - pixel_y = 2 +/obj/item/storage/box/holobadge{ + pixel_y = 3 }, -/obj/item/tool/stamp, /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 6; + icon_state = "yellow" }, /area/fiorina/station/lowsec) -"euT" = ( -/obj/item/tool/wet_sign, -/obj/item/tool/mop{ - pixel_x = -6; - pixel_y = -1 - }, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"evc" = ( -/obj/structure/machinery/power/terminal{ - dir = 1 +"eux" = ( +/obj/structure/bed/chair{ + dir = 8 }, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + dir = 4; + icon_state = "yellow" }, -/area/fiorina/tumor/aux_engi) -"evf" = ( -/obj/item/ammo_casing{ - icon_state = "casing_5_1" +/area/fiorina/station/lowsec) +"euz" = ( +/obj/structure/bed/chair{ + dir = 4 }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/obj/structure/bed/chair{ + dir = 4; + pixel_y = 4 }, -/area/fiorina/station/lowsec) -"evg" = ( -/obj/item/stack/sheet/metal/medium_stack, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/ice_lab) -"evv" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + dir = 10; + icon_state = "bright_clean_marked" }, -/obj/effect/landmark/nightmare{ - insert_tag = "nogear" +/area/fiorina/station/medbay) +"evd" = ( +/obj/structure/disposalpipe/segment{ + color = "#c4c4c4"; + dir = 2; + layer = 6; + name = "overhead pipe"; + pixel_x = -16; + pixel_y = 12 }, /turf/open/floor/prison, -/area/fiorina/station/security) -"evD" = ( -/obj/structure/lz_sign/prison_sign, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"evH" = ( -/obj/structure/surface/rack, -/obj/item/tool/plantspray/pests, -/obj/item/tool/plantspray/weeds, +/area/fiorina/tumor/servers) +"evk" = ( +/obj/structure/barricade/wooden, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue_plate" + dir = 6; + icon_state = "whitegreen" }, -/area/fiorina/station/botany) -"evQ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/recharger{ - pixel_y = 4 +/area/fiorina/station/medbay) +"evl" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "brflowers_1" }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" }, -/turf/open/floor/prison{ - icon_state = "redfull" +/area/fiorina/station/central_ring) +"evC" = ( +/obj/structure/barricade/sandbags{ + dir = 4; + icon_state = "sandbag_0"; + pixel_y = 2 }, -/area/fiorina/station/security) -"evU" = ( -/obj/item/device/flashlight/lamp/tripod, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/obj/structure/barricade/sandbags{ + icon_state = "sandbag_0"; + pixel_y = -14 }, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 10; + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/flight_deck) +"evT" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor/prison, +/area/fiorina/station/botany) "ewx" = ( /obj/structure/bed/chair/comfy{ dir = 1 @@ -7268,16 +7257,6 @@ /obj/effect/decal/cleanable/blood, /turf/open/floor/carpet, /area/fiorina/station/security/wardens) -"ewy" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - layer = 2.8 - }, -/obj/structure/barricade/handrail/type_b, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/flight_deck) "ewE" = ( /obj/item/clothing/accessory/armband/cargo{ desc = "Sworn to the shrapnel and the shards therein. So sayeth her command when the first detonation occured."; @@ -7290,30 +7269,42 @@ /obj/structure/surface/rack, /turf/open/floor/plating/prison, /area/fiorina/station/chapel) -"ewY" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/firstaid/regular, +"ewI" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/civres_blue) -"exs" = ( -/obj/structure/bed/chair{ - dir = 4 +/area/fiorina/station/medbay) +"exa" = ( +/obj/structure/bed/chair, +/turf/open/floor/prison, +/area/fiorina/station/park) +"exl" = ( +/obj/structure/largecrate/random, +/obj/structure/barricade/wooden, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/station/disco) +"exy" = ( /obj/structure/bed/chair{ dir = 4; pixel_y = 4 }, -/obj/structure/bed/chair{ - dir = 4; - pixel_y = 8 - }, /turf/open/floor/prison{ dir = 10; - icon_state = "bright_clean_marked" + icon_state = "darkbrown2" }, -/area/fiorina/station/medbay) +/area/fiorina/maintenance) +"exI" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkbrowncorners2" + }, +/area/fiorina/station/park) "exO" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 5 @@ -7325,189 +7316,228 @@ name = "astroturf" }, /area/fiorina/station/park) -"eyo" = ( -/obj/structure/prop/resin_prop, +"exW" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/transit_hub) +"eyi" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/atmos_alert{ + dir = 8 + }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/tumor/fiberbush) +"eyj" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/tool/kitchen/utensil/knife{ + pixel_x = 9 + }, +/obj/item/reagent_container/food/snacks/tomatomeat{ + pixel_x = -6 + }, +/obj/item/reagent_container/food/snacks/tomatomeat{ + pixel_x = -6; + pixel_y = 3 + }, +/obj/item/reagent_container/food/snacks/tomatomeat{ + pixel_x = -6; + pixel_y = 6 + }, +/turf/open/floor/prison{ + dir = 6; + icon_state = "blue" + }, +/area/fiorina/station/power_ring) +"eys" = ( +/obj/vehicle/train/cargo/engine, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) +"eyv" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 + }, +/turf/open/floor/prison{ + icon_state = "blue_plate" + }, +/area/fiorina/station/botany) +"eyy" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/obj/effect/landmark/nightmare{ + insert_tag = "nogear" + }, +/turf/open/floor/prison, +/area/fiorina/station/security) "eyz" = ( /obj/structure/machinery/portable_atmospherics/canister/phoron, /turf/open/floor/corsat{ icon_state = "plate" }, /area/fiorina/station/telecomm/lz1_cargo) -"eyM" = ( -/obj/structure/closet/secure_closet/engineering_welding, +"eyO" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/tumor/aux_engi) -"eza" = ( -/obj/structure/barricade/wooden{ - dir = 4 + dir = 4; + icon_state = "blue_plate" }, +/area/fiorina/station/botany) +"ezd" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 9; + icon_state = "whitepurple" }, -/area/fiorina/station/telecomm/lz1_cargo) -"ezb" = ( -/obj/effect/alien/weeds/node, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/station/research_cells) +"eze" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8 }, -/area/fiorina/tumor/aux_engi) +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/turf/open/space/basic, +/area/fiorina/oob) "ezn" = ( /obj/structure/sign/prop3{ desc = "Enlist in the Penal Battalions today! The USCM 3rd Fleet features a subset of UA sanctioned penal battalions, drawing from inmate popualtions across the colonies. Mostly New Argentina though." }, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/telecomm/lz1_cargo) -"ezo" = ( -/obj/structure/bed/chair/janicart, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"ezr" = ( -/obj/structure/bed{ - icon_state = "psychbed" - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/fiorina/tumor/servers) -"ezx" = ( -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/stairs/perspective{ - icon_state = "p_stair_sn_full_cap" - }, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/ice_lab) -"ezz" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/clothing/accessory/blue, +"ezO" = ( +/obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "redfull" }, -/area/fiorina/tumor/aux_engi) -"ezJ" = ( -/turf/open/floor/prison{ - icon_state = "whitegreen" +/area/fiorina/station/security) +"ezU" = ( +/obj/structure/surface/table/reinforced/prison{ + dir = 4; + flipped = 1 }, -/area/fiorina/tumor/ice_lab) -"ezT" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "redcorner" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/security) +/area/fiorina/station/medbay) "ezV" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"eAo" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_sn_full_cap" - }, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/ice_lab) -"eAy" = ( -/turf/open/floor/prison{ - icon_state = "green" - }, -/area/fiorina/station/transit_hub) "eAM" = ( /obj/structure/machinery/landinglight/ds2/delaytwo{ dir = 1 }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzII) -"eAQ" = ( -/obj/effect/landmark/corpsespawner/ua_riot, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) "eAY" = ( /obj/structure/girder/displaced, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"eBs" = ( -/obj/structure/barricade/wooden{ - dir = 1 +"eBa" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "lavendergrass_3" }, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) +"eBj" = ( +/obj/structure/bed/chair, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) -"eBC" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 +/area/fiorina/station/power_ring) +"eBr" = ( +/obj/structure/platform_decoration{ + dir = 4 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"eCg" = ( -/obj/structure/largecrate/supply/explosives/mines, +/area/fiorina/station/transit_hub) +"eBO" = ( +/obj/structure/machinery/door/airlock/almayer/marine, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + icon_state = "yellowfull" }, -/area/fiorina/station/telecomm/lz1_cargo) -"eCh" = ( -/obj/structure/reagent_dispensers/watertank, +/area/fiorina/station/lowsec) +"eBS" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "cell_stripe" }, -/area/fiorina/station/medbay) -"eCA" = ( -/obj/item/device/flashlight/lamp/tripod, -/turf/open/floor/prison, /area/fiorina/station/power_ring) -"eDn" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/lattice, -/turf/open/space/basic, -/area/fiorina/oob) -"eDs" = ( -/obj/structure/machinery/door/airlock/prison_hatch/autoname, +"eCy" = ( +/obj/effect/spawner/random/gun/pistol, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/servers) -"eEh" = ( -/obj/structure/barricade/wooden, -/obj/item/device/flashlight/flare, +/area/fiorina/station/medbay) +"eCK" = ( +/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" + dir = 10; + icon_state = "floor_marked" + }, +/area/fiorina/lz/near_lzII) +"eDp" = ( +/obj/structure/machinery/landinglight/ds1/delayone{ + dir = 4 }, -/area/fiorina/station/telecomm/lz1_cargo) -"eEk" = ( -/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/station/flight_deck) -"eEo" = ( +/area/fiorina/lz/near_lzI) +"eDA" = ( /obj/structure/prop/structure_lattice{ - dir = 4 + dir = 4; + health = 300 }, /obj/structure/prop/structure_lattice{ dir = 4; layer = 3.1; pixel_y = 10 }, -/turf/open/floor/prison, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/research_cells) +"eEx" = ( +/obj/item/circuitboard/machine/rdserver, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, /area/fiorina/tumor/servers) +"eEC" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/stack/sheet/plasteel/medium_stack, +/obj/item/reagent_container/food/drinks/flask/vacuumflask{ + pixel_x = 7; + pixel_y = 22 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) "eED" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/paper_bin{ @@ -7520,6 +7550,36 @@ }, /turf/open/floor/wood, /area/fiorina/station/chapel) +"eEJ" = ( +/obj/structure/machinery/computer3/server/rack, +/obj/structure/barricade/handrail/type_b{ + dir = 8; + layer = 3.5 + }, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"eEQ" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) +"eET" = ( +/obj/structure/closet/secure_closet/freezer/fridge/full, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/fiorina/station/power_ring) +"eEX" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) "eFa" = ( /obj/structure/barricade/metal{ dir = 1; @@ -7528,41 +7588,95 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) +"eFq" = ( +/obj/item/storage/bible/hefa, +/turf/open/floor/prison{ + dir = 6; + icon_state = "green" + }, +/area/fiorina/station/chapel) "eFD" = ( /obj/structure/window_frame/prison, /turf/open/floor/plating/prison, /area/fiorina/station/chapel) -"eGg" = ( -/obj/effect/decal/cleanable/blood/drip, +"eFQ" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + icon_state = "cell_stripe" }, -/area/fiorina/station/telecomm/lz1_cargo) -"eGz" = ( -/obj/structure/machinery/constructable_frame, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) -"eGV" = ( -/obj/item/device/flashlight/lamp/tripod, -/turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"eGY" = ( -/obj/structure/toilet{ +/area/fiorina/station/disco) +"eFR" = ( +/obj/structure/prop/souto_land/streamer{ dir = 8; - pixel_y = 8 + pixel_y = 24 }, -/obj/effect/spawner/random/gun/smg, +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/prison, +/area/fiorina/station/park) +"eFX" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/firstaid/regular, /turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" + icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) +/area/fiorina/tumor/ice_lab) +"eGm" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"eGO" = ( +/obj/item/storage/toolbox/electrical, +/obj/structure/surface/rack, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/civres) "eHa" = ( /obj/structure/lattice, /obj/structure/platform/kutjevo/smooth, /turf/open/space, /area/fiorina/oob) +"eHk" = ( +/obj/structure/machinery/door/morgue{ + dir = 2; + name = "Confession Booth" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/chapel) +"eHn" = ( +/obj/structure/barricade/metal{ + health = 250; + icon_state = "metal_1" + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) +"eHt" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 3 + }, +/obj/structure/largecrate/random/mini/med{ + pixel_x = -6; + pixel_y = -3 + }, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "eHC" = ( /turf/closed/shuttle/ert{ icon_state = "wy25" @@ -7576,30 +7690,44 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"eIp" = ( -/obj/structure/platform{ - dir = 4 +"eHQ" = ( +/obj/item/trash/popcorn, +/turf/open/floor/prison{ + dir = 8; + icon_state = "blue" + }, +/area/fiorina/station/power_ring) +"eIx" = ( +/obj/structure/window/reinforced{ + dir = 8 }, +/obj/structure/window/reinforced, +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/firstaid/regular, /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" + icon_state = "floor_plate" }, -/area/fiorina/station/disco) +/area/fiorina/tumor/ice_lab) +"eIB" = ( +/obj/item/frame/rack, +/obj/item/clothing/suit/storage/marine/veteran/ua_riot, +/obj/item/clothing/suit/storage/marine/veteran/ua_riot, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) "eIF" = ( /obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/almayer{ icon_state = "plate" }, /area/fiorina/tumor/ship) -"eJi" = ( -/obj/structure/bed{ - icon_state = "abed" - }, +"eIX" = ( /turf/open/floor/prison{ - dir = 9; - icon_state = "whitepurple" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/research_cells) +/area/fiorina/oob) "eJm" = ( /obj/structure/machinery/door/poddoor/almayer{ density = 0; @@ -7607,23 +7735,28 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"eJq" = ( -/obj/structure/platform{ - dir = 8 +"eJt" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/obj/structure/machinery/autolathe/full{ - layer = 2.98 +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"eJP" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/trash/cigbutt, +/area/fiorina/station/power_ring) +"eJy" = ( +/obj/structure/inflatable/popped/door, +/turf/open/floor/prison{ + dir = 6; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) +"eJK" = ( +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/disco) +/area/fiorina/station/civres_blue) "eJQ" = ( /obj/structure/platform/kutjevo/smooth{ dir = 8 @@ -7631,97 +7764,136 @@ /obj/structure/lattice, /turf/open/space/basic, /area/fiorina/oob) -"eKu" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" - }, -/obj/structure/platform, -/turf/open/floor/prison{ - dir = 10; - icon_state = "bright_clean_marked" - }, -/area/fiorina/station/power_ring) "eLu" = ( /turf/closed/wall/prison, /area/fiorina/maintenance) -"eLO" = ( -/obj/structure/platform{ - dir = 4 +"eLw" = ( +/obj/structure/bed/chair{ + dir = 8 }, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/botany) -"eMG" = ( -/obj/structure/machinery/door/airlock/multi_tile/elevator/access{ - name = "greenhouse airlock" +/area/fiorina/station/medbay) +"eLy" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/turf/open/floor/plating/prison, -/area/fiorina/station/botany) -"eML" = ( -/obj/structure/monorail{ - name = "launch track" +/turf/open/floor/prison{ + dir = 6; + icon_state = "yellow" + }, +/area/fiorina/station/disco) +"eLB" = ( +/obj/structure/machinery/landinglight/ds1/delaytwo{ + dir = 1 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/fiorina/lz/near_lzI) +"eLQ" = ( +/obj/item/weapon/gun/energy/taser, +/turf/open/floor/prison, +/area/fiorina/station/security) +"eLU" = ( +/obj/item/tool/mop{ + pixel_y = 23 + }, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"eLX" = ( /obj/structure/platform_decoration{ - dir = 4 + dir = 1 + }, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_tram) +/area/fiorina/station/central_ring) +"eME" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper, +/turf/open/floor/prison{ + icon_state = "darkpurple2" + }, +/area/fiorina/tumor/servers) +"eMG" = ( +/obj/structure/machinery/door/airlock/multi_tile/elevator/access{ + name = "greenhouse airlock" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/botany) +"eMI" = ( +/obj/structure/barricade/handrail{ + dir = 1; + pixel_y = 2 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "eMU" = ( /turf/closed/shuttle/ert{ icon_state = "rightengine_1"; opacity = 0 }, /area/fiorina/station/power_ring) -"eNm" = ( -/obj/structure/barricade/sandbags{ - icon_state = "sandbag_0"; - layer = 2.97; - pixel_y = -14 - }, +"eNa" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + icon_state = "yellowcorner" + }, +/area/fiorina/station/lowsec) +"eNn" = ( +/obj/structure/prop/souto_land/pole, +/obj/structure/prop/souto_land/pole{ + dir = 4; + pixel_y = 24 }, -/area/fiorina/station/telecomm/lz1_cargo) -"eNs" = ( /turf/open/floor/prison{ - dir = 5; - icon_state = "blue" + dir = 8; + icon_state = "darkbrown2" }, -/area/fiorina/station/power_ring) -"eNV" = ( -/obj/effect/decal/cleanable/blood/oil, +/area/fiorina/station/park) +"eNr" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/surgical_tray/empty, /turf/open/floor/prison, /area/fiorina/station/lowsec) -"eOf" = ( -/obj/structure/sink{ +"eNv" = ( +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ dir = 4; - pixel_x = 12 + icon_state = "darkyellowfull2" }, -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" +/area/fiorina/station/telecomm/lz1_tram) +"eOp" = ( +/obj/effect/decal/medical_decals{ + icon_state = "cryocell1decal" }, -/area/fiorina/station/lowsec) -"eOo" = ( -/obj/structure/prop/structure_lattice{ - dir = 4 +/turf/open/floor/prison{ + icon_state = "whitegreen" }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 +/area/fiorina/station/medbay) +"eOy" = ( +/obj/structure/platform_decoration{ + dir = 8 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/fiberbush) +/area/fiorina/station/medbay) "eOF" = ( /obj/structure/platform/kutjevo/smooth{ dir = 1 @@ -7731,31 +7903,22 @@ }, /turf/open/space, /area/fiorina/oob) -"eOH" = ( -/obj/structure/filingcabinet, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"eOI" = ( +/obj/item/shard{ + icon_state = "large" }, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ dir = 4; icon_state = "greenfull" }, -/area/fiorina/tumor/servers) -"eOS" = ( -/obj/item/tool/warning_cone, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_cargo) -"ePf" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, +/area/fiorina/station/transit_hub) +"eOM" = ( +/obj/item/reagent_container/food/snacks/eat_bar, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "whitegreen" }, -/area/fiorina/station/flight_deck) +/area/fiorina/station/medbay) "ePq" = ( /obj/item/trash/cigbutt/ucigbutt, /obj/item/trash/cigbutt/ucigbutt{ @@ -7772,13 +7935,32 @@ }, /turf/open/floor/plating/prison, /area/fiorina/oob) -"ePx" = ( -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) "ePB" = ( /turf/closed/wall/prison, /area/fiorina/station/telecomm/lz2_maint) +"ePM" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/spacecash/c20, +/turf/open/floor/prison, +/area/fiorina/station/security) +"ePU" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"eQb" = ( +/obj/structure/closet{ + density = 0; + pixel_y = 18 + }, +/obj/item/clothing/gloves/boxing/green, +/turf/open/floor/prison{ + dir = 1; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) "eQk" = ( /obj/structure/machinery/light/double/blue{ dir = 4; @@ -7787,82 +7969,107 @@ }, /turf/open/floor/wood, /area/fiorina/station/civres_blue) -"eQv" = ( -/obj/item/tool/warning_cone, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrown2" +"eQz" = ( +/obj/structure/machinery/gibber, +/obj/effect/decal/cleanable/blood{ + pixel_x = 8; + pixel_y = 10 }, -/area/fiorina/station/park) -"eQD" = ( -/obj/structure/bed/chair, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "blue_plate" }, -/area/fiorina/tumor/servers) -"eQR" = ( +/area/fiorina/station/botany) +"eQQ" = ( /turf/open/floor/prison{ - dir = 9; - icon_state = "green" + icon_state = "platingdmg1" + }, +/area/fiorina/station/chapel) +"eQX" = ( +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" }, -/area/fiorina/tumor/servers) -"eRi" = ( /turf/open/floor/prison{ dir = 8; icon_state = "darkyellow2" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/flight_deck) +"eQY" = ( +/obj/structure/platform_decoration, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/transit_hub) +"eRl" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/civres) +"eRq" = ( +/obj/item/toy/bikehorn, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) "eRz" = ( /obj/structure/machinery/vending/snack/packaged, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"eRH" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 - }, +"eRF" = ( +/obj/item/stack/cable_coil, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"eRS" = ( -/obj/structure/platform_decoration{ - dir = 8 +/area/fiorina/station/medbay) +"eRR" = ( +/obj/item/ammo_magazine/smg/mp5, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellow2" }, +/area/fiorina/station/telecomm/lz1_cargo) +"eRZ" = ( +/obj/item/stack/rods, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, -/area/fiorina/tumor/ice_lab) -"eRY" = ( -/obj/structure/machinery/constructable_frame, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"eSg" = ( -/obj/effect/decal/cleanable/blood/drip, +/area/fiorina/station/medbay) +"eSn" = ( +/obj/structure/reagent_dispensers/watertank, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" + dir = 6; + icon_state = "greenblue" }, -/area/fiorina/station/telecomm/lz1_cargo) -"eSs" = ( -/obj/item/prop/helmetgarb/riot_shield, -/turf/open/floor/prison, -/area/fiorina/station/security) +/area/fiorina/station/botany) "eSF" = ( /obj/structure/machinery/landinglight/ds2/delaythree{ dir = 1 }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzII) -"eSZ" = ( -/obj/structure/bed/roller, +"eSH" = ( +/obj/structure/prop/structure_lattice{ + dir = 4 + }, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"eSO" = ( +/obj/structure/largecrate/random/case/double, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" + dir = 10; + icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) +"eTa" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/prison{ + dir = 9; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) "eTb" = ( /turf/closed/shuttle/ert{ icon_state = "rightengine_1"; @@ -7872,81 +8079,47 @@ "eTc" = ( /turf/open/floor/prison/chapel_carpet, /area/fiorina/station/chapel) -"eTd" = ( -/obj/item/prop/helmetgarb/gunoil, -/turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"eTh" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/tumor/servers) -"eTn" = ( -/obj/structure/bed/chair/comfy{ - dir = 1 - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "blue" - }, -/area/fiorina/station/civres_blue) -"eTo" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/station_alert, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) -"eTx" = ( -/obj/structure/reagent_dispensers/water_cooler, +"eTr" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison, -/area/fiorina/station/chapel) +/area/fiorina/station/power_ring) "eTC" = ( /obj/item/frame/rack, /turf/open/floor/wood, /area/fiorina/station/civres_blue) -"eTJ" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 - }, -/obj/structure/platform_decoration{ - dir = 1 - }, -/turf/open/floor/prison, -/area/fiorina/station/disco) "eUi" = ( /obj/structure/extinguisher_cabinet, /turf/closed/wall/prison, /area/fiorina/station/telecomm/lz1_cargo) -"eUk" = ( +"eUo" = ( +/obj/structure/largecrate/random, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"eUy" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/drinks/coffee, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrowncorners2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/aux_engi) -"eUD" = ( -/obj/item/ammo_magazine/rifle/m16{ - current_rounds = 0 +/area/fiorina/station/medbay) +"eUN" = ( +/obj/effect/decal/medical_decals{ + icon_state = "docdecal1" }, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/prison, -/area/fiorina/station/security) -"eVb" = ( -/obj/item/reagent_container/blood, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenbluecorner" + dir = 1; + icon_state = "whitegreen" }, -/area/fiorina/station/botany) +/area/fiorina/station/medbay) +"eUP" = ( +/obj/item/tool/warning_cone, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"eUZ" = ( +/obj/structure/machinery/vending/coffee, +/turf/open/floor/prison, +/area/fiorina/station/medbay) "eVf" = ( /obj/structure/prop/souto_land/pole, /obj/structure/prop/souto_land/streamer{ @@ -7954,6 +8127,16 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) +"eVj" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_tram) "eVm" = ( /obj/structure/machinery/newscaster, /turf/closed/wall/r_wall/prison_unmeltable, @@ -7962,49 +8145,64 @@ /obj/structure/machinery/computer/arcade, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"eVL" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" +"eVK" = ( +/obj/structure/prop/structure_lattice{ + dir = 4; + health = 300 }, -/obj/structure/platform, -/turf/open/floor/plating/prison, -/area/fiorina/station/chapel) +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/park) +"eVN" = ( +/obj/item/bodybag, +/obj/item/bodybag{ + pixel_y = 2 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/medbay) "eVO" = ( /turf/closed/shuttle/ert, /area/fiorina/tumor/ship) -"eVZ" = ( -/obj/item/trash/sosjerky, -/turf/open/floor/prison, -/area/fiorina/station/security) -"eWh" = ( -/obj/item/stack/sheet/metal{ - amount = 5 +"eWf" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" }, +/area/fiorina/station/central_ring) +"eWr" = ( /turf/open/floor/prison{ dir = 10; - icon_state = "darkyellow2" + icon_state = "green" }, -/area/fiorina/lz/near_lzI) -"eWu" = ( -/obj/structure/prop/structure_lattice{ - dir = 4 +/area/fiorina/tumor/civres) +"eWz" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/device/flash, +/turf/open/floor/prison{ + icon_state = "redfull" }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 +/area/fiorina/station/security) +"eWA" = ( +/obj/structure/filingcabinet{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/structure/filingcabinet{ + pixel_x = -8; + pixel_y = 4 }, -/turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"eWO" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/newspaper, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue_plate" + icon_state = "floor_plate" }, -/area/fiorina/station/botany) +/area/fiorina/tumor/civres) "eWP" = ( /obj/structure/sign/prop3{ desc = "Enlist in the Penal Battalions today! The USCM 3rd Fleet features a subset of UA sanctioned penal battalions, drawing from inmate popualtions across the colonies. Mostly New Argentina though." @@ -8025,32 +8223,13 @@ icon_state = "plate" }, /area/fiorina/tumor/ship) -"eXd" = ( -/obj/structure/surface/rack, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) "eXp" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/station/civres_blue) -"eXr" = ( -/obj/structure/monorail{ - name = "launch track" - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/lz/near_lzI) -"eXC" = ( -/obj/structure/machinery/recharge_station, -/turf/open/floor/prison{ - dir = 5; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) +"eXz" = ( +/obj/item/tool/wet_sign, +/turf/open/floor/prison, +/area/fiorina/station/disco) "eXP" = ( /obj/structure/machinery/door/poddoor/almayer{ density = 0; @@ -8058,24 +8237,38 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/botany) -"eXU" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_ew_full_cap" - }, -/obj/structure/platform/stair_cut/alt, -/turf/open/floor/plating/prison, -/area/fiorina/station/transit_hub) -"eYi" = ( -/obj/item/stack/cable_coil, +"eYr" = ( +/obj/structure/inflatable, +/obj/structure/barricade/handrail/type_b, /turf/open/floor/prison{ - dir = 6; - icon_state = "whitegreen" + dir = 10; + icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) +"eYs" = ( +/obj/structure/surface/rack, +/obj/item/storage/firstaid/fire/empty, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/servers) +"eYz" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" + }, +/area/fiorina/tumor/civres) "eYC" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) +"eYN" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/turf/open/floor/prison, +/area/fiorina/station/botany) "eYT" = ( /obj/structure/machinery/light/double/blue{ pixel_y = -1 @@ -8091,171 +8284,122 @@ }, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/security/wardens) -"eZm" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ +"eZi" = ( +/obj/structure/machinery/power/apc{ dir = 8 }, -/turf/open/floor/plating/prison, -/area/fiorina/station/transit_hub) -"eZq" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_tram) +"eZr" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/landinglight/ds2/delayone, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"eZQ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/box/handcuffs{ + pixel_x = 6; + pixel_y = 1 }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) -"eZA" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 +/obj/item/storage/box/handcuffs{ + pixel_x = -7; + pixel_y = 1 }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/obj/item/storage/box/handcuffs{ + pixel_x = -2; + pixel_y = 11 }, -/obj/structure/barricade/handrail{ +/obj/structure/machinery/light/double/blue{ dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) -"eZD" = ( -/obj/structure/closet/secure_closet/guncabinet{ - req_access = null + pixel_y = 21 }, -/obj/item/weapon/gun/launcher/grenade/m81, -/obj/item/storage/pill_bottle/kelotane, /turf/open/floor/prison{ icon_state = "redfull" }, /area/fiorina/station/security) -"eZL" = ( -/obj/item/reagent_container/food/snacks/meat, -/turf/open/floor/prison{ - icon_state = "greenblue" - }, -/area/fiorina/station/botany) -"eZN" = ( -/obj/structure/machinery/landinglight/ds2/delayone{ - dir = 4 - }, +"eZW" = ( +/obj/item/stack/rods/plasteel, /turf/open/floor/prison{ + dir = 10; icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzII) -"fbo" = ( -/obj/structure/barricade/plasteel, +/area/fiorina/station/disco) +"fac" = ( +/obj/structure/platform/shiva{ + dir = 1 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"faw" = ( /obj/structure/barricade/metal{ - dir = 4; - health = 85; + health = 250; icon_state = "metal_1" }, -/turf/open/floor/wood, -/area/fiorina/station/park) -"fbs" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/flora/pottedplant{ - pixel_y = 9 - }, -/obj/structure/machinery/light/double/blue, /turf/open/floor/prison, -/area/fiorina/station/security) -"fbL" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenblue" - }, -/area/fiorina/station/botany) -"fbT" = ( -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/station/disco) +"faD" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_ew_full_cap" }, +/turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"fbW" = ( -/obj/effect/decal/medical_decals{ - icon_state = "cryotop" - }, -/obj/structure/pipes/standard/simple/visible{ - dir = 5 - }, +"fbc" = ( +/obj/item/reagent_container/food/drinks/cans/waterbottle, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"fcp" = ( -/obj/item/trash/burger, -/obj/effect/landmark/monkey_spawn, +"fbo" = ( +/obj/structure/barricade/plasteel, +/obj/structure/barricade/metal{ + dir = 4; + health = 85; + icon_state = "metal_1" + }, +/turf/open/floor/wood, +/area/fiorina/station/park) +"fbF" = ( +/obj/item/clothing/suit/chef/classic, +/obj/structure/bed/stool, +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "kitchen" }, -/area/fiorina/tumor/ice_lab) -"fcA" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/aux_engi) -"fcO" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/paper/carbon, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/station/civres_blue) +"fbX" = ( +/obj/item/stack/sheet/wood{ + amount = 10 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"fcX" = ( -/obj/structure/closet/crate/trashcart, -/obj/structure/machinery/light/double/blue{ +/area/fiorina/station/telecomm/lz1_cargo) +"fcg" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/emails{ dir = 8; - pixel_x = -10; - pixel_y = 13 + pixel_x = -2; + pixel_y = 7 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/chapel) -"fcZ" = ( -/obj/structure/platform/kutjevo/smooth{ +/area/fiorina/tumor/civres) +"fcA" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/aux_engi) +"fcB" = ( +/obj/structure/barricade/deployable{ dir = 1 }, -/obj/structure/barricade/handrail{ +/turf/open/floor/prison{ dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) -"fde" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" + icon_state = "yellow" }, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/lowsec) "fdf" = ( /obj/structure/closet, /obj/item/stack/cable_coil, @@ -8263,94 +8407,62 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"fdn" = ( +"fdu" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 + }, /turf/open/floor/prison{ - dir = 8; - icon_state = "floor_marked" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/research_cells) -"fdK" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/structure/prop/invuln{ - desc = "The best ride in the universe. For the one and only Souto Man! Although, this one seems to have no fuel left."; - dir = 4; - icon = 'icons/obj/vehicles/vehicles.dmi'; - icon_state = "soutomobile"; - name = "Disabled Souto Mobile" +/area/fiorina/lz/near_lzI) +"fdC" = ( +/obj/item/prop/helmetgarb/spacejam_tickets{ + desc = "Low security prisoners would smuggle in arcade tickets after visitations. The tickets act as a stand in for paper currency in the prison economy, they're backed by the cigarette standard, since one ticket nets one cigarette at the prize booth. The cigarettes also get smuggled back in."; + name = "\improper arcade tickets"; + pixel_x = -7; + pixel_y = 7 }, /turf/open/floor/prison, -/area/fiorina/station/park) -"fdS" = ( -/obj/structure/bed/chair/comfy, +/area/fiorina/station/flight_deck) +"fdR" = ( +/obj/structure/platform_decoration, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrowncorners2" }, -/area/fiorina/station/security/wardens) +/area/fiorina/station/park) "fdV" = ( /obj/structure/platform_decoration/kutjevo{ dir = 1 }, /turf/open/space/basic, /area/fiorina/oob) -"feO" = ( -/obj/structure/largecrate/supply/medicine/iv, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"feY" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"ffm" = ( -/obj/structure/bed/chair{ +"fer" = ( +/obj/structure/platform{ dir = 1 }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/area/fiorina/station/medbay) -"ffN" = ( -/obj/structure/largecrate/random, /turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"ffU" = ( -/obj/item/ammo_casing{ - icon_state = "casing_5_1" - }, -/obj/effect/decal/medical_decals{ - icon_state = "triagedecaldir" - }, +/area/fiorina/station/medbay) +"ffA" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/station/medbay) +/area/fiorina/station/transit_hub) "ffZ" = ( /obj/structure/extinguisher_cabinet, /turf/closed/wall/prison, /area/fiorina/station/power_ring) -"fgb" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 - }, -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"fgB" = ( -/obj/item/stack/folding_barricade, +"fgq" = ( +/obj/effect/landmark/corpsespawner/engineer, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "bluefull" }, -/area/fiorina/station/security) +/area/fiorina/station/power_ring) "fgM" = ( /obj/structure/platform, /obj/item/ammo_casing{ @@ -8362,51 +8474,34 @@ name = "pool" }, /area/fiorina/station/park) +"fgN" = ( +/obj/item/device/flashlight/flare, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/lz/near_lzI) "fgU" = ( /obj/structure/surface/table/reinforced/prison, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"fhc" = ( -/turf/open/floor/prison{ - icon_state = "darkbrowncorners2" - }, -/area/fiorina/maintenance) -"fhz" = ( -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/turf/open/space/basic, -/area/fiorina/oob) -"fhC" = ( -/obj/item/stack/rods, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/security) -"fhX" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"fgY" = ( +/obj/structure/surface/rack, +/obj/item/reagent_container/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" }, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/lz/near_lzI) -"fhZ" = ( -/obj/item/stack/sheet/metal, +/area/fiorina/station/medbay) +"fhB" = ( +/obj/structure/surface/rack, +/obj/item/storage/toolbox/emergency, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/tumor/aux_engi) "fic" = ( /obj/structure/bed/sofa/south/grey/right, /obj/structure/machinery/cm_vending/sorted/medical/wall_med/souto{ @@ -8414,12 +8509,12 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"fin" = ( -/obj/structure/machinery/light/double/blue, +"fie" = ( /turf/open/floor/prison{ - icon_state = "whitepurple" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/chapel) "fiq" = ( /turf/open/floor/plating/prison, /area/fiorina/oob) @@ -8431,48 +8526,58 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/station/research_cells) -"fiu" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/obj/structure/inflatable, -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"fiD" = ( -/obj/structure/bed/roller, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"fiF" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, +"fiw" = ( +/obj/structure/machinery/vending/coffee, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "bluefull" }, -/area/fiorina/station/civres_blue) -"fiI" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 1 +/area/fiorina/station/power_ring) +"fiG" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_7" }, -/obj/item/frame/rack, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + icon_state = "redfull" }, -/area/fiorina/station/disco) +/area/fiorina/station/security) "fiU" = ( /turf/open/floor/plating/plating_catwalk, /area/fiorina/tumor/ship) "fjd" = ( /turf/closed/wall/prison, /area/fiorina/lz/near_lzI) +"fje" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 5; + icon_state = "yellow" + }, +/area/fiorina/station/disco) +"fjg" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 + }, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"fjo" = ( +/obj/item/ammo_casing{ + icon_state = "casing_5_1" + }, +/obj/effect/decal/medical_decals{ + icon_state = "triagedecaldir" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) "fjr" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating/plating_catwalk/prison, @@ -8483,211 +8588,174 @@ /obj/item/attachable/magnetic_harness, /turf/open/floor/wood, /area/fiorina/station/civres_blue) +"fjV" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/fiorina/station/telecomm/lz1_cargo) "fjX" = ( /turf/closed/shuttle/elevator{ dir = 9 }, /area/fiorina/tumor/aux_engi) -"fkP" = ( -/obj/structure/platform{ +"fkG" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/cameras{ dir = 1 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) -"fkY" = ( -/obj/item/tool/wet_sign, -/obj/item/tool/mop{ - pixel_x = -6; - pixel_y = -1 + icon_state = "redfull" }, -/turf/open/floor/prison, /area/fiorina/station/security) -"flg" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"flm" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/prison{ - icon_state = "darkyellow2" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"flo" = ( +"fkH" = ( /obj/structure/platform{ - dir = 4 - }, -/turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" + dir = 8 }, -/area/fiorina/station/disco) -"flq" = ( -/obj/structure/closet/crate/miningcar{ - name = "\improper materials storage bin" +/obj/effect/decal/medical_decals{ + icon_state = "triagedecalbottomleft" }, -/obj/item/reagent_container/food/snacks/meat, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/botany) -"flC" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/station/medbay) +"fmb" = ( +/obj/item/storage/firstaid/toxin, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/floor/prison, -/area/fiorina/station/security) +/area/fiorina/station/chapel) "fmg" = ( /obj/item/shard{ icon_state = "medium" }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"fmL" = ( -/obj/item/frame/toolbox_tiles, -/turf/open/floor/prison{ - dir = 9; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"fmM" = ( -/obj/effect/landmark/survivor_spawner, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) -"fmU" = ( -/obj/effect/decal/cleanable/blood, +"fmE" = ( +/obj/effect/landmark/objective_landmark/medium, +/obj/structure/closet/secure_closet/engineering_personal, /turf/open/floor/prison{ - dir = 6; - icon_state = "green" + dir = 1; + icon_state = "darkbrown2" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/maintenance) "fmY" = ( /obj/item/device/cassette_tape/ocean, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"fnj" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/research_cells) "fnn" = ( /obj/structure/machinery/vending/cigarette/colony, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"fnt" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +"fno" = ( +/obj/structure/machinery/space_heater, +/obj/structure/platform{ + dir = 4 }, /turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" + dir = 4; + icon_state = "whitegreen" }, -/area/fiorina/station/disco) -"fnB" = ( -/turf/open/floor/prison, -/area/fiorina/station/security) +/area/fiorina/tumor/ice_lab) "fnD" = ( /turf/closed/shuttle/elevator{ dir = 4 }, /area/fiorina/station/telecomm/lz1_cargo) -"fnW" = ( -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" - }, -/area/fiorina/station/disco) -"fon" = ( -/obj/item/device/flashlight/lamp/tripod, +"fnY" = ( +/obj/structure/machinery/vending/cola, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"foL" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/prison{ - dir = 8; - icon_state = "blue_plate" +/area/fiorina/station/park) +"fob" = ( +/obj/structure/platform{ + dir = 4 }, -/area/fiorina/station/botany) -"foT" = ( -/obj/structure/machinery/power/port_gen/pacman, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"foV" = ( -/obj/structure/largecrate/random, -/obj/item/trash/pistachios, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/obj/structure/filingcabinet, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"foZ" = ( -/obj/item/stack/sandbags_empty, +/area/fiorina/station/power_ring) +"fop" = ( +/obj/structure/surface/rack, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/civres) -"fpi" = ( -/obj/item/clothing/head/soft/yellow, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkpurple2" +/area/fiorina/tumor/ice_lab) +"fou" = ( +/obj/structure/barricade/deployable{ + dir = 8 }, -/area/fiorina/tumor/servers) -"fpl" = ( -/obj/structure/barricade/sandbags{ +/turf/open/floor/prison, +/area/fiorina/station/security) +"fpg" = ( +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/machinery/light/double/blue{ dir = 4; - icon_state = "sandbag_0"; - pixel_y = 2 + pixel_x = 10; + pixel_y = 13 }, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) "fpn" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/tumor/aux_engi) -"fpp" = ( -/turf/open/floor/prison{ +"fpq" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/structure/bed/chair{ dir = 4; - icon_state = "green" + pixel_y = 4 }, -/area/fiorina/tumor/civres) +/obj/structure/bed/chair{ + dir = 4; + pixel_y = 8 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "bright_clean_marked" + }, +/area/fiorina/station/medbay) "fpB" = ( /obj/item/tool/wirecutters/clippers, /turf/open/floor/plating/prison, /area/fiorina/tumor/fiberbush) -"fpM" = ( -/obj/structure/machinery/landinglight/ds2/delaythree{ - dir = 4 +"fpN" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) +"fqg" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "cell_stripe" }, -/area/fiorina/lz/near_lzII) -"fpY" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/briefcase/inflatable, -/turf/open/floor/prison{ - icon_state = "yellowfull" +/area/fiorina/station/central_ring) +"fqh" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 }, -/area/fiorina/station/lowsec) -"fqD" = ( -/obj/structure/stairs/perspective{ +/turf/open/floor/prison{ dir = 5; - icon_state = "p_stair_full" + icon_state = "whitegreen" }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) +/area/fiorina/station/medbay) "fqF" = ( /obj/effect/landmark{ icon_state = "hive_spawn"; @@ -8696,123 +8764,160 @@ /obj/effect/landmark/ert_spawns/groundside_xeno, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"fqZ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/stack/sheet/metal/medium_stack, -/obj/effect/landmark/objective_landmark/medium, +"fqI" = ( +/obj/structure/machinery/space_heater, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/civres) -"frt" = ( -/obj/structure/bed/chair/comfy, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"frw" = ( -/obj/structure/bed{ - icon_state = "abed" + icon_state = "darkredfull2" }, -/obj/item/storage/fancy/crayons, +/area/fiorina/station/research_cells) +"frc" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - dir = 6; - icon_state = "whitepurple" + dir = 8; + icon_state = "blue" }, -/area/fiorina/station/research_cells) -"frY" = ( +/area/fiorina/station/civres_blue) +"frv" = ( +/obj/structure/machinery/door/airlock/prison_hatch/autoname, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"frM" = ( +/obj/effect/spawner/random/toolbox, +/obj/structure/surface/rack, +/obj/item/device/flashlight, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitepurplecorner" + dir = 9; + icon_state = "greenfull" + }, +/area/fiorina/station/transit_hub) +"frR" = ( +/obj/effect/decal/medical_decals{ + icon_state = "triagedecalbottom" }, -/area/fiorina/station/research_cells) -"fsf" = ( -/obj/structure/bed/roller, -/obj/effect/spawner/random/gun/rifle/highchance, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/medbay) "fsk" = ( /obj/structure/machinery/space_heater, /turf/open/floor/plating/prison, /area/fiorina/tumor/fiberbush) -"fsn" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ +"ftb" = ( +/obj/effect/landmark/monkey_spawn, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/civres) +"ftd" = ( +/obj/structure/platform{ dir = 4 }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) -"ftq" = ( -/obj/item/stack/cable_coil/orange, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/obj/structure/platform, +/obj/structure/platform_decoration{ + dir = 6 }, -/area/fiorina/tumor/ice_lab) -"ftv" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "red" - }, -/area/fiorina/station/security) -"ftH" = ( -/obj/structure/closet{ - density = 0; - pixel_y = 18 + icon_state = "floor_plate" }, -/obj/item/stool{ - pixel_x = 4; - pixel_y = 6 +/area/fiorina/station/botany) +"fth" = ( +/obj/effect/landmark/monkey_spawn, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/station/civres_blue) +"ftS" = ( +/obj/item/stack/rods, /turf/open/floor/prison{ - icon_state = "yellowfull" + icon_state = "whitegreen" }, -/area/fiorina/station/lowsec) -"ftY" = ( -/obj/effect/landmark/xeno_spawn, +/area/fiorina/station/medbay) +"ftU" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrown2" + icon_state = "darkbrownfull2" }, /area/fiorina/tumor/aux_engi) -"fum" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/structure/platform_decoration{ - dir = 1 +"fun" = ( +/obj/item/weapon/gun/smg/mp5, +/obj/item/ammo_casing{ + icon_state = "casing_6_1" }, /turf/open/floor/prison{ + dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/disco) -"fuA" = ( -/obj/item/stack/sheet/wood, +/area/fiorina/station/telecomm/lz1_cargo) +"fuw" = ( +/obj/item/stack/cable_coil, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"fuJ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/ashtray/plastic{ + pixel_x = 3 + }, +/obj/item/trash/cigbutt{ + pixel_y = 8 + }, +/obj/item/trash/cigbutt{ + pixel_x = 4 + }, +/obj/item/paper_bin{ + pixel_x = -10; + pixel_y = 8 + }, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/security/wardens) +"fuO" = ( +/obj/item/clipboard, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/servers) +"fvr" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, /turf/open/floor/prison{ dir = 8; - icon_state = "darkbrown2" + icon_state = "cell_stripe" }, /area/fiorina/station/park) -"fuF" = ( -/obj/structure/machinery/autolathe, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, +"fvH" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "cell_stripe" }, -/area/fiorina/tumor/civres) -"fvk" = ( -/obj/structure/barricade/metal/wired, +/area/fiorina/oob) +"fvK" = ( +/obj/item/stack/rods, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/power_ring) "fvL" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz2_maint) +"fwg" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/firstaid/adv{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/storage/firstaid/adv{ + pixel_x = 9; + pixel_y = 2 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) "fwn" = ( /obj/structure/lattice, /obj/item/stack/sheet/metal, @@ -8822,73 +8927,69 @@ /obj/item/poster, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"fwR" = ( -/obj/effect/decal/cleanable/blood/splatter{ - icon_state = "gib2" - }, -/turf/open/floor/prison{ - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"fwZ" = ( +"fwt" = ( +/obj/effect/decal/cleanable/blood/oil, /obj/effect/decal/medical_decals{ - icon_state = "docdecal1" + icon_state = "triagedecaldir" }, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) +"fwY" = ( +/obj/structure/barricade/metal/wired{ + health = 250; + icon_state = "metal_3" + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"fxa" = ( +/obj/structure/monorail{ + dir = 4; + name = "launch track" + }, +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzI) +"fxi" = ( +/obj/structure/machinery/vending/coffee, +/turf/open/floor/prison, +/area/fiorina/station/security) "fxt" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer{ icon_state = "plate" }, /area/fiorina/tumor/ship) -"fxz" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 4 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"fxP" = ( +"fxL" = ( +/obj/structure/filingcabinet, /turf/open/floor/prison{ - icon_state = "yellowcorner" + icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) -"fxY" = ( -/obj/item/device/flashlight/lamp/tripod, +/area/fiorina/tumor/aux_engi) +"fxS" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/clothing/mask/surgical, /turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"fye" = ( -/obj/structure/surface/rack, -/obj/item/tank/emergency_oxygen/engi, -/obj/item/tank/emergency_oxygen/engi, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" - }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/lowsec) "fyi" = ( /turf/open/floor/wood, /area/fiorina/station/research_cells) +"fyt" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "ywflowers_3" + }, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "fyy" = ( /obj/structure/bed/chair/wood/normal{ dir = 4 }, /turf/open/floor/carpet, /area/fiorina/station/civres_blue) -"fyA" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "green" - }, -/area/fiorina/tumor/aux_engi) "fyC" = ( /obj/structure/platform/kutjevo/smooth, /obj/structure/platform/kutjevo/smooth{ @@ -8896,53 +8997,27 @@ }, /turf/open/space, /area/fiorina/oob) +"fyL" = ( +/obj/structure/platform_decoration, +/turf/open/floor/prison, +/area/fiorina/station/disco) "fyO" = ( /obj/item/stack/rods, /turf/open/floor/plating/prison, /area/fiorina/station/park) -"fyQ" = ( -/obj/structure/bed/chair/comfy{ - dir = 4 - }, -/turf/open/floor/prison{ - dir = 6; - icon_state = "darkyellow2" - }, -/area/fiorina/station/flight_deck) -"fyT" = ( -/obj/item/trash/cigbutt/bcigbutt, -/obj/item/device/flashlight/lamp/tripod, +"fzp" = ( +/obj/structure/bed/chair, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"fzb" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 4 - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/medbay) -"fzs" = ( -/obj/structure/bed/chair/office/light{ - dir = 1 - }, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"fzt" = ( -/obj/structure/largecrate/random/barrel/white, -/obj/structure/barricade/wooden{ - dir = 4 + icon_state = "greenblue" }, +/area/fiorina/station/botany) +"fzC" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/gun/shotgun/highchance, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + icon_state = "darkbrown2" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/maintenance) "fzO" = ( /obj/structure/barricade/wooden{ dir = 4 @@ -8951,29 +9026,16 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"fAh" = ( -/obj/structure/closet/firecloset, -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 - }, -/obj/effect/landmark/objective_landmark/close, +"fAf" = ( +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"fAr" = ( +/obj/effect/landmark/xeno_spawn, /turf/open/floor/prison{ - dir = 10; + dir = 1; icon_state = "darkbrown2" }, -/area/fiorina/maintenance) -"fAs" = ( -/obj/structure/bed{ - icon_state = "abed" - }, -/obj/item/bedsheet/green, -/turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) +/area/fiorina/tumor/aux_engi) "fAt" = ( /obj/structure/flora/bush/ausbushes/ausbush{ desc = "Fiberbush(tm) infestations have been the leading cause in asbestos related deaths in spacecraft for 3 years in a row now."; @@ -9005,17 +9067,21 @@ /obj/effect/spawner/random/gun/pistol/lowchance, /turf/open/floor/wood, /area/fiorina/station/park) -"fAV" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 +"fAS" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/aux_engi) +"fAU" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper_bin{ + pixel_y = 7 }, /turf/open/floor/prison{ - dir = 5; - icon_state = "darkyellow2" + icon_state = "bluefull" }, -/area/fiorina/station/flight_deck) +/area/fiorina/station/power_ring) "fAZ" = ( /obj/structure/surface/rack, /obj/item/reagent_container/food/drinks/bottle/holywater{ @@ -9024,79 +9090,117 @@ }, /turf/open/floor/prison/chapel_carpet, /area/fiorina/station/chapel) -"fBc" = ( +"fBr" = ( +/obj/structure/closet/secure_closet/engineering_materials, /turf/open/floor/prison{ - dir = 10; - icon_state = "damaged1" + icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) -"fBd" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "darkyellow2" +/area/fiorina/tumor/civres) +"fBD" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"fCf" = ( +/obj/structure/bed/roller, +/obj/structure/machinery/iv_drip{ + pixel_y = 19 }, -/area/fiorina/station/power_ring) -"fBg" = ( -/obj/effect/alien/weeds/node, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" +/obj/item/bedsheet/green, +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, -/area/fiorina/tumor/aux_engi) -"fBi" = ( -/obj/structure/inflatable/popped/door, -/obj/item/ammo_magazine/m56d, -/turf/open/floor/plating/prison, -/area/fiorina/station/disco) -"fBp" = ( -/obj/structure/closet/firecloset, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + dir = 4; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"fCr" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/area/fiorina/maintenance) -"fBP" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"fCw" = ( +/obj/structure/machinery/vending/snack/packaged, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 }, -/area/fiorina/tumor/civres) -"fCz" = ( -/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" + icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/civres_blue) "fCD" = ( /obj/item/stack/sheet/metal, /obj/structure/machinery/light/double/blue, /turf/open/floor/plating/prison, /area/fiorina/station/security) +"fCF" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/cell/super{ + pixel_y = 12 + }, +/obj/item/cell/super, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/fiorina/tumor/civres) +"fCJ" = ( +/obj/structure/platform/kutjevo/smooth, +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/turf/open/space, +/area/fiorina/oob) +"fCW" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/communications, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) "fCZ" = ( /obj/structure/closet/crate/medical, /obj/item/clothing/mask/cigarette/pipe, /obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"fDo" = ( -/obj/effect/landmark/objective_landmark/close, +"fDb" = ( +/obj/structure/largecrate/random/secure, /turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" + icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"fDI" = ( -/obj/structure/prop/almayer/computers/mission_planning_system{ - density = 0; - desc = "Its a telephone, and a computer. Woah."; - name = "\improper funny telephone booth"; - pixel_x = 2; - pixel_y = 21 +/area/fiorina/station/security) +"fDi" = ( +/obj/structure/machinery/computer/arcade, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/medbay) +"fDE" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "damaged1" }, +/area/fiorina/station/central_ring) +"fDJ" = ( /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/disco) +/area/fiorina/lz/near_lzI) "fDQ" = ( /obj/structure/window/framed/prison/reinforced/hull, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -9105,104 +9209,85 @@ }, /turf/open/floor/plating/prison, /area/fiorina/oob) +"fEn" = ( +/turf/open/floor/prison, +/area/fiorina/tumor/ice_lab) +"fEH" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/station_alert, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) "fEY" = ( /obj/structure/machinery/power/apc, /turf/open/floor{ icon_state = "delivery" }, /area/fiorina/station/power_ring) -"fFf" = ( -/obj/item/stool, -/turf/open/floor/prison{ - icon_state = "yellowfull" +"fFv" = ( +/obj/structure/barricade/sandbags{ + icon_state = "sandbag_0"; + layer = 2.97; + pixel_y = -14 }, -/area/fiorina/station/lowsec) -"fFC" = ( -/obj/structure/bed/chair{ - dir = 8 +/turf/open/floor/prison{ + dir = 9; + icon_state = "yellow" }, -/obj/effect/decal/cleanable/blood, -/obj/effect/spawner/gibspawner/human, +/area/fiorina/station/disco) +"fFw" = ( +/obj/structure/largecrate/random, /turf/open/floor/prison{ - icon_state = "darkbrown2" + dir = 10; + icon_state = "floor_marked" }, -/area/fiorina/station/park) +/area/fiorina/station/power_ring) "fFE" = ( /obj/item/tool/screwdriver, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"fFU" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/paper, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +"fGi" = ( +/obj/structure/platform_decoration{ + dir = 1 }, -/area/fiorina/station/medbay) -"fGb" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/servers) -"fGe" = ( -/obj/structure/window/reinforced{ - dir = 8 + dir = 6; + icon_state = "darkbrown2" }, -/obj/structure/window/reinforced, +/area/fiorina/station/park) +"fGA" = ( +/obj/item/explosive/grenade/high_explosive/frag, /turf/open/floor/prison, /area/fiorina/station/security) -"fGp" = ( -/obj/structure/surface/rack, -/obj/item/handcuffs, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/fiorina/station/security) -"fGB" = ( -/obj/structure/prop/structure_lattice{ +"fGW" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/emails{ dir = 4 }, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"fGL" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/device/tracker, /turf/open/floor/prison{ - dir = 9; - icon_state = "yellow" + icon_state = "bluefull" }, -/area/fiorina/station/disco) -"fGM" = ( -/obj/item/stack/sandbags/large_stack, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" +/area/fiorina/station/power_ring) +"fHb" = ( +/obj/structure/monorail{ + name = "launch track" }, -/area/fiorina/station/flight_deck) -"fGY" = ( +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) +"fHo" = ( /turf/open/floor/prison{ - icon_state = "floorscorched2" + icon_state = "yellow" }, -/area/fiorina/tumor/civres) -"fHh" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ +/area/fiorina/station/lowsec) +"fHI" = ( +/obj/structure/platform_decoration{ dir = 4 }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"fHu" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/atmos_alert, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "floor_plate" }, /area/fiorina/station/power_ring) -"fHB" = ( -/obj/structure/monorail{ - name = "launch track" - }, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzII) "fHK" = ( /obj/structure/ice/thin/indestructible{ dir = 8; @@ -9211,65 +9296,31 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/station/research_cells) -"fHQ" = ( -/obj/structure/machinery/shower{ - pixel_y = 13 - }, -/obj/structure/curtain/shower, -/obj/structure/window{ - dir = 4 +"fIn" = ( +/obj/effect/landmark/corpsespawner/ua_riot, +/turf/open/floor/prison{ + icon_state = "redfull" }, -/obj/item/coin/uranium{ - desc = "You found one of the three uranium coins. It is entirely worthless." +/area/fiorina/station/security) +"fIq" = ( +/obj/effect/decal/hefa_cult_decals/d32{ + icon_state = "bee" }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" +/obj/structure/sign/prop2{ + pixel_y = 32 }, -/area/fiorina/station/medbay) -"fHU" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/machinery/computer/cameras{ - dir = 8 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/security) -"fHV" = ( -/obj/structure/machinery/landinglight/ds2/delaytwo{ - dir = 8 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/lz/near_lzII) -"fIj" = ( -/obj/item/clothing/suit/storage/hazardvest, /turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"fIv" = ( -/obj/item/shard{ - icon_state = "medium" +/area/fiorina/station/medbay) +"fIL" = ( +/obj/item/clothing/accessory/armband/cargo{ + desc = "Sworn to the shrapnel and the shards therein. So sayeth her command when the first detonation occured."; + name = "HEFA Order milita armband" }, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/servers) -"fII" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/light/double/blue{ dir = 4; - pixel_x = 10; - pixel_y = -3 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "blue" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/chapel) "fIT" = ( /obj/structure/largecrate/random/secure, /turf/open/floor/plating/prison, @@ -9286,19 +9337,12 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"fJx" = ( -/obj/item/storage/briefcase, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/transit_hub) -"fJO" = ( -/obj/structure/reagent_dispensers/water_cooler/stacks, +"fJV" = ( +/obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "yellow" }, -/area/fiorina/station/medbay) +/area/fiorina/station/lowsec) "fJW" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/clothing/accessory/storage/webbing, @@ -9314,122 +9358,116 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"fKq" = ( -/obj/item/storage/firstaid/regular, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"fKr" = ( -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_sn_full_cap" - }, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"fKv" = ( -/obj/structure/largecrate/random, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_marked" - }, -/area/fiorina/station/power_ring) -"fKF" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 - }, +"fKn" = ( +/obj/item/stock_parts/manipulator/pico, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkpurple2" }, -/area/fiorina/station/power_ring) -"fLa" = ( -/obj/effect/landmark/corpsespawner/ua_riot, +/area/fiorina/tumor/servers) +"fKu" = ( +/obj/item/device/flashlight/flare, /turf/open/floor/prison{ dir = 8; icon_state = "darkyellow2" }, -/area/fiorina/lz/near_lzI) -"fLq" = ( -/turf/open/floor/prison{ - dir = 5; - icon_state = "green" +/area/fiorina/station/telecomm/lz1_cargo) +"fKP" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21" }, -/area/fiorina/tumor/servers) -"fLr" = ( -/obj/item/smallDelivery, -/obj/structure/closet/fireaxecabinet{ - pixel_y = 32 +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"fLs" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 4 +/area/fiorina/tumor/ice_lab) +"fKX" = ( +/obj/item/storage/backpack{ + pixel_x = -11; + pixel_y = 15 }, +/obj/item/trash/syndi_cakes, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"fLO" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/device/radio{ - pixel_y = 8 +/area/fiorina/station/lowsec) +"fLb" = ( +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/floor/prison{ + dir = 9; + icon_state = "yellow" }, +/area/fiorina/station/lowsec) +"fLu" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ icon_state = "bluefull" }, /area/fiorina/station/power_ring) -"fLR" = ( -/obj/item/device/flashlight/lamp/tripod, +"fLH" = ( +/obj/structure/barricade/wooden{ + dir = 4 + }, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/research_cells) "fLS" = ( /obj/structure/bed/chair, /turf/open/floor/wood, /area/fiorina/station/park) -"fMk" = ( -/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, -/obj/effect/decal/cleanable/blood, +"fLX" = ( +/obj/structure/bed/sofa/south/grey/left, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/security) -"fMY" = ( -/obj/structure/reagent_dispensers/watertank{ - layer = 2.6 +/area/fiorina/station/civres_blue) +"fLY" = ( +/obj/structure/machinery/newscaster{ + pixel_y = 32 }, -/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzII) -"fNc" = ( +/area/fiorina/station/transit_hub) +"fMc" = ( /obj/structure/platform{ - dir = 4 + dir = 8; + layer = 2.5 }, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 +/obj/structure/machinery/door/airlock/prison_hatch/autoname{ + dir = 1 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"fNp" = ( -/obj/item/stack/sheet/metal, +/area/fiorina/tumor/ice_lab) +"fMn" = ( +/obj/structure/machinery/photocopier{ + pixel_y = 4 + }, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/servers) +/area/fiorina/station/medbay) +"fNA" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) +"fNN" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"fOe" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/device/flashlight/lamp, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/station/disco) "fOg" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 8 @@ -9438,79 +9476,65 @@ name = "astroturf" }, /area/fiorina/station/park) -"fOo" = ( -/obj/structure/closet/crate/medical, -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"fOi" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 6 }, -/area/fiorina/station/medbay) -"fOs" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/obj/item/reagent_container/food/drinks/cans/beer{ + pixel_x = -13; + pixel_y = 13 }, -/area/fiorina/station/medbay) -"fOt" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" +/turf/open/floor/prison, +/area/fiorina/station/central_ring) +"fOC" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkyellow2" }, -/obj/structure/platform, -/turf/open/floor/plating/prison, -/area/fiorina/station/security) -"fOw" = ( -/obj/structure/bed/chair{ - dir = 1 +/area/fiorina/station/telecomm/lz1_cargo) +"fOK" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + dir = 9; + icon_state = "darkyellow2" }, +/area/fiorina/station/flight_deck) +"fOT" = ( /turf/open/floor/prison{ - dir = 6; + dir = 1; icon_state = "blue" }, /area/fiorina/station/power_ring) -"fOZ" = ( -/obj/structure/bed{ - icon_state = "abed" +"fPl" = ( +/obj/structure/barricade/metal/wired{ + dir = 8 }, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" + icon_state = "yellowfull" }, /area/fiorina/station/lowsec) -"fPu" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, +"fPB" = ( +/turf/open/space, /area/fiorina/station/medbay) -"fPF" = ( -/obj/structure/barricade/wooden{ - dir = 8 - }, +"fQa" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + dir = 8; + icon_state = "cell_stripe" }, -/area/fiorina/station/telecomm/lz1_cargo) -"fPZ" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/area/fiorina/station/telecomm/lz1_tram) +"fQA" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_29"; + layer = 3.5; + pixel_y = 6 }, -/area/fiorina/station/medbay) -"fQx" = ( -/obj/item/reagent_container/food/drinks/bottle/tomatojuice, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/chapel) "fQB" = ( /obj/item/ammo_casing/shell{ icon_state = "shell_9_1" @@ -9518,36 +9542,68 @@ /obj/effect/spawner/random/gun/shotgun/highchance, /turf/open/floor/wood, /area/fiorina/station/park) +"fQI" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/obj/effect/decal/medical_decals{ + icon_state = "triagedecaldir" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) "fQV" = ( /obj/structure/platform/kutjevo/smooth{ dir = 4 }, /turf/open/space, /area/fiorina/oob) +"fQY" = ( +/obj/structure/machinery/portable_atmospherics/powered/pump, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"fRc" = ( +/obj/structure/toilet{ + dir = 8; + pixel_y = 8 + }, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/prison{ + dir = 5; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) "fRo" = ( /obj/structure/bed/chair, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"fRG" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"fRq" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" }, +/area/fiorina/station/security) +"fSa" = ( +/obj/effect/landmark/monkey_spawn, /turf/open/floor/prison{ - dir = 1; - icon_state = "green" + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) +"fSp" = ( +/obj/effect/decal/cleanable/blood{ + dir = 4; + icon_state = "gib6" + }, +/obj/item/stack/sheet/metal{ + amount = 5 }, -/area/fiorina/station/chapel) -"fSe" = ( -/obj/structure/bed/sofa/vert/grey, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"fSl" = ( -/obj/item/disk/data, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) +/area/fiorina/lz/near_lzI) "fSq" = ( /obj/structure/machinery/door/airlock/almayer/marine{ dir = 1; @@ -9577,28 +9633,23 @@ }, /turf/open/floor/almayer, /area/fiorina/tumor/ship) -"fSI" = ( -/obj/item/broken_device, +"fTd" = ( /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "green" }, -/area/fiorina/station/medbay) -"fSY" = ( -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/tumor/aux_engi) +"fTn" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_ew_full_cap" }, -/area/fiorina/tumor/ship) +/obj/structure/platform/stair_cut/alt, +/turf/open/floor/plating/prison, +/area/fiorina/station/chapel) "fTs" = ( /obj/structure/machinery/light/double/blue, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/power_ring) -"fTx" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/station/flight_deck) "fTz" = ( /obj/structure/closet, /obj/item/clothing/suit/poncho/red, @@ -9606,20 +9657,6 @@ /obj/item/clothing/suit/suspenders, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"fTA" = ( -/obj/effect/decal/medical_decals{ - icon_state = "docstripingdir" - }, -/obj/structure/bed/roller, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) "fUd" = ( /obj/structure/barricade/plasteel{ dir = 4 @@ -9640,90 +9677,122 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"fUu" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/trash/plate, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) -"fUF" = ( +"fUz" = ( /obj/structure/stairs/perspective{ + dir = 4; icon_state = "p_stair_full" }, -/turf/open/floor/plating/prison, -/area/fiorina/station/transit_hub) +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"fUC" = ( +/obj/structure/stairs/perspective, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"fUD" = ( +/obj/structure/dropship_equipment/mg_holder, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) +"fUP" = ( +/obj/structure/machinery/door/window/eastright{ + dir = 2 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/lz/near_lzI) "fUX" = ( /obj/structure/bedsheetbin, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"fUZ" = ( -/obj/structure/largecrate/supply, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"fVs" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/area/fiorina/station/medbay) -"fVA" = ( -/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - dir = 9; - icon_state = "darkbrown2" + dir = 10; + icon_state = "green" }, -/area/fiorina/tumor/aux_engi) -"fWc" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/station/chapel) +"fVY" = ( +/obj/effect/decal{ + icon = 'icons/obj/items/policetape.dmi'; + icon_state = "engineering_h"; + layer = 2.5; + pixel_y = -11 + }, +/obj/item/stack/sheet/metal{ + amount = 5 }, /turf/open/floor/prison{ - icon_state = "whitegreen" + dir = 8; + icon_state = "darkyellow2" }, -/area/fiorina/tumor/ice_lab) -"fWC" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/folder/black_random, +/area/fiorina/station/flight_deck) +"fWr" = ( /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 4; + icon_state = "red" + }, +/area/fiorina/lz/near_lzII) +"fWs" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_tram) +"fWy" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" }, /area/fiorina/station/power_ring) -"fWD" = ( -/obj/structure/machinery/recharge_station, +"fWH" = ( /turf/open/floor/prison{ - dir = 5; - icon_state = "darkbrown2" + icon_state = "yellowfull" }, -/area/fiorina/maintenance) -"fWL" = ( -/obj/structure/barricade/handrail{ - dir = 1; - pixel_y = 2 +/area/fiorina/station/disco) +"fWI" = ( +/obj/structure/monorail{ + dir = 9; + name = "launch track" }, -/obj/structure/barricade/handrail{ - dir = 8 +/turf/open/space, +/area/fiorina/oob) +"fWV" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "damaged1" }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"fWS" = ( -/obj/structure/stairs/perspective, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"fXe" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" +/area/fiorina/station/disco) +"fXo" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 }, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" + dir = 10; + icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_tram) -"fXv" = ( -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) +/area/fiorina/station/disco) "fXB" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/security) +"fXD" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "greenblue" + }, +/area/fiorina/station/botany) +"fXI" = ( +/turf/open/floor/prison{ + icon_state = "green" + }, +/area/fiorina/station/transit_hub) "fXL" = ( /obj/structure/disposalpipe/segment{ color = "#c4c4c4"; @@ -9735,119 +9804,90 @@ }, /turf/closed/wall/mineral/bone_resin, /area/fiorina/tumor/servers) -"fXQ" = ( -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/stairs/perspective{ - icon_state = "p_stair_sn_full_cap" - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) -"fXS" = ( +"fXW" = ( +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/fiorina/station/lowsec) -"fXT" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + dir = 8; + icon_state = "bluecorner" }, -/obj/item/toy/beach_ball, +/area/fiorina/station/power_ring) +"fYa" = ( +/obj/structure/inflatable, /turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/disco) -"fYn" = ( -/obj/structure/bed/chair, -/obj/structure/extinguisher_cabinet{ - pixel_y = 32 + dir = 10; + icon_state = "whitegreenfull" }, +/area/fiorina/station/medbay) +"fYf" = ( +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ icon_state = "yellowfull" }, /area/fiorina/station/disco) -"fYB" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/donut_box/empty, -/turf/open/floor/prison{ - icon_state = "redfull" +"fYo" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 }, -/area/fiorina/station/security) -"fYD" = ( -/obj/structure/bed/chair/office/dark, /turf/open/floor/prison, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/security) "fYW" = ( /obj/structure/machinery/light/double/blue, /turf/open/floor/carpet, /area/fiorina/station/security/wardens) +"fYY" = ( +/obj/item/ammo_casing{ + icon_state = "casing_6" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/lowsec) +"fZc" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/fancy/cigarettes/arcturian_ace{ + pixel_x = -4; + pixel_y = 9 + }, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) "fZd" = ( /obj/structure/machinery/landinglight/ds2/delayone{ dir = 1 }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzII) +"fZe" = ( +/obj/item/tool/shovel/etool, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/civres_blue) +"fZz" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/prison, +/area/fiorina/station/security) "fZD" = ( /obj/item/tool/warning_cone, /turf/open/floor/wood, /area/fiorina/station/park) -"gas" = ( -/obj/item/stack/rods, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"gaL" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" - }, -/area/fiorina/station/telecomm/lz1_tram) -"gaN" = ( -/obj/structure/machinery/vending/coffee, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"gaZ" = ( -/obj/structure/closet/secure_closet/engineering_electrical, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 - }, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/fiorina/tumor/civres) -"gbi" = ( -/obj/structure/inflatable/door, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" +"fZT" = ( +/obj/structure/mirror{ + pixel_x = -29 }, -/area/fiorina/station/research_cells) -"gbn" = ( -/obj/structure/stairs/perspective{ +/obj/structure/sink{ dir = 8; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 4 - }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"gbD" = ( -/obj/structure/bed/chair/comfy{ - dir = 4 + pixel_x = -12; + pixel_y = 2 }, /turf/open/floor/prison{ - dir = 5; - icon_state = "blue" + icon_state = "sterile_white" }, /area/fiorina/station/civres_blue) -"gbP" = ( +"fZW" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/cameras{ dir = 8 @@ -9860,45 +9900,112 @@ icon_state = "floor_plate" }, /area/fiorina/station/security) -"gbS" = ( -/obj/structure/closet/emcloset, -/obj/item/clothing/head/cmcap{ - pixel_x = -5; - pixel_y = 14 +"gag" = ( +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/item/clothing/glasses/mbcg{ - pixel_y = -14 +/area/fiorina/station/security) +"gaQ" = ( +/obj/structure/machinery/power/apc{ + dir = 4 }, /turf/open/floor/prison, -/area/fiorina/station/medbay) -"gbU" = ( -/obj/structure/surface/table/reinforced/prison, +/area/fiorina/station/security) +"gbf" = ( /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/park) -"gcr" = ( -/obj/item/tool/wirecutters/clippers, +/area/fiorina/station/power_ring) +"gbh" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/toolbox, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"gbk" = ( +/obj/item/trash/burger, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"gbv" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"gbF" = ( +/obj/item/clothing/gloves/botanic_leather, +/turf/open/floor/prison{ + dir = 8; + icon_state = "greenblue" + }, +/area/fiorina/station/botany) +"gbO" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/obj/item/trash/used_stasis_bag, /turf/open/floor/prison{ dir = 9; - icon_state = "greenfull" + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"gbR" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 }, -/area/fiorina/tumor/civres) -"gcy" = ( -/turf/open/floor/plating/plating_catwalk/prison, -/area/fiorina/station/lowsec) -"gdn" = ( -/obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/fiberbush) -"gdt" = ( -/obj/structure/window/framed/prison/reinforced/hull, +/area/fiorina/station/disco) +"gbT" = ( +/obj/structure/machinery/vending/cola, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"gbV" = ( +/obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) +"gcx" = ( +/obj/structure/monorail{ + dir = 4; + name = "launch track" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/transit_hub) +"gcD" = ( +/obj/structure/kitchenspike, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/fiorina/station/power_ring) +"gdQ" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/prison{ + dir = 1; + icon_state = "blue" }, /area/fiorina/station/chapel) +"gdS" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/prison{ + icon_state = "yellowfull" + }, +/area/fiorina/station/lowsec) "gec" = ( /obj/structure/prop/structure_lattice{ dir = 8; @@ -9917,6 +10024,14 @@ }, /turf/open/space, /area/fiorina/oob) +"ger" = ( +/obj/item/ammo_magazine/rifle/m16{ + current_rounds = 0 + }, +/turf/open/floor/prison{ + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) "geF" = ( /obj/structure/lattice, /turf/open/floor/almayer_hull, @@ -9925,19 +10040,13 @@ /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/wood, /area/fiorina/station/chapel) -"geU" = ( -/obj/structure/prop/structure_lattice{ - dir = 4 - }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 - }, +"geT" = ( +/obj/structure/machinery/cm_vending/sorted/medical/blood, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/tumor/ice_lab) "gfh" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ dir = 1; @@ -9953,30 +10062,6 @@ "gfo" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/maintenance) -"gfp" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) -"gfw" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/donut_box{ - pixel_y = 9 - }, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) "gfL" = ( /obj/structure/prop/souto_land/pole, /obj/structure/prop/souto_land/pole{ @@ -9985,10 +10070,6 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"gfN" = ( -/obj/structure/machinery/vending/coffee, -/turf/open/floor/prison, -/area/fiorina/station/medbay) "ggd" = ( /turf/closed/shuttle/ert{ icon_state = "leftengine_1" @@ -10006,48 +10087,14 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/security) -"ggp" = ( -/obj/structure/closet{ - density = 0; - pixel_y = 18 - }, -/obj/item/clothing/gloves/boxing/yellow, -/turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"ggu" = ( -/obj/item/ammo_casing{ - icon_state = "casing_6_1" - }, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/lowsec) -"ggB" = ( -/obj/item/stool, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/station/research_cells) -"ggG" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/machinery/space_heater, +"ggA" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/spray/pepper, +/obj/item/clothing/glasses/sunglasses/sechud, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/ice_lab) -"ggQ" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 1 + icon_state = "redfull" }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) +/area/fiorina/station/security) "ghg" = ( /obj/structure/barricade/handrail{ dir = 1; @@ -10062,13 +10109,6 @@ }, /turf/open/space, /area/fiorina/oob) -"ghv" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) "ghw" = ( /obj/structure/bed/chair/dropship/pilot, /obj/effect/landmark/objective_landmark/close, @@ -10076,104 +10116,91 @@ icon_state = "plate" }, /area/fiorina/tumor/ship) -"ghP" = ( +"ghz" = ( +/obj/structure/lz_sign/prison_sign, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"ghS" = ( +/obj/item/tool/warning_cone, +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_cargo) +"gir" = ( /turf/open/floor/prison{ dir = 9; - icon_state = "green" - }, -/area/fiorina/station/chapel) -"ghU" = ( -/obj/item/device/flashlight/lamp/tripod, -/turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "greenfull" }, /area/fiorina/tumor/servers) -"gik" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/recharger{ - pixel_y = 4 +"giw" = ( +/obj/structure/platform_decoration{ + dir = 1 }, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) +"giA" = ( +/obj/structure/bed/sofa/south/grey/left, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "redfull" }, -/area/fiorina/station/medbay) +/area/fiorina/station/security) "giX" = ( /obj/structure/barricade/handrail/type_b{ dir = 4 }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"gjg" = ( -/obj/structure/barricade/sandbags{ +"gjr" = ( +/obj/effect/landmark/static_comms/net_one, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"gjs" = ( +/obj/structure/machinery/light/double/blue{ dir = 1; - icon_state = "sandbag_0" - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"gjj" = ( -/obj/structure/reagent_dispensers/water_cooler/stacks{ - pixel_y = 17 + pixel_y = 21 }, /turf/open/floor/prison, -/area/fiorina/station/medbay) -"gjX" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"gkd" = ( -/obj/item/storage/wallet/random, +/area/fiorina/lz/near_lzII) +"gjz" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ dir = 10; - icon_state = "kitchen" + icon_state = "sterile_white" }, -/area/fiorina/tumor/civres) -"gkm" = ( -/obj/structure/machinery/line_nexter, +/area/fiorina/station/medbay) +"gjY" = ( +/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison{ - dir = 8; - icon_state = "red" + icon_state = "bluecorner" }, -/area/fiorina/station/security) -"gks" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" +/area/fiorina/station/chapel) +"gkv" = ( +/obj/structure/platform_decoration{ + dir = 1 }, -/area/fiorina/tumor/servers) -"gkt" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"gkZ" = ( -/obj/effect/decal/medical_decals{ - icon_state = "triagedecalleft" +/area/fiorina/tumor/ice_lab) +"gkC" = ( +/obj/structure/machinery/vending/cola, +/obj/structure/prop/souto_land/streamer{ + pixel_y = 24 }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkbrown2" }, +/area/fiorina/station/park) +"gkE" = ( +/obj/structure/surface/rack, +/obj/item/explosive/grenade/high_explosive/frag, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/tumor/servers) "glj" = ( /obj/structure/window/framed/prison, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"glw" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison, -/area/fiorina/tumor/ice_lab) "glD" = ( /obj/structure/bed{ icon_state = "abed" @@ -10184,50 +10211,48 @@ /obj/structure/window/framed/prison/reinforced, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"glH" = ( -/obj/item/stack/sandbags/large_stack, -/turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" - }, -/area/fiorina/station/disco) -"glI" = ( -/obj/item/trash/cigbutt, +"gmg" = ( +/obj/structure/bed/chair/comfy, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) -"glW" = ( -/obj/structure/holohoop{ - pixel_y = 25 + icon_state = "darkyellow2" }, -/turf/open/floor/prison{ - icon_state = "yellow" +/area/fiorina/station/flight_deck) +"gmp" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, -/area/fiorina/station/lowsec) -"gma" = ( /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) -"gmv" = ( -/obj/structure/largecrate/random/case, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/station/telecomm/lz1_tram) +"gmx" = ( +/obj/structure/closet/crate/miningcar{ + name = "\improper materials storage bin" }, -/area/fiorina/station/park) -"gmy" = ( -/obj/structure/barricade/handrail/type_b, +/obj/item/reagent_container/food/snacks/meat, /turf/open/floor/prison{ - dir = 6; - icon_state = "darkyellow2" + dir = 1; + icon_state = "greenblue" }, -/area/fiorina/station/flight_deck) -"gmS" = ( -/obj/effect/decal/cleanable/blood/gibs, -/obj/effect/spawner/random/gun/shotgun/midchance, +/area/fiorina/station/botany) +"gmF" = ( +/obj/structure/bed/sofa/vert/grey/top, /turf/open/floor/prison, /area/fiorina/station/security) +"gmG" = ( +/obj/structure/machinery/constructable_frame, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) +"gmN" = ( +/obj/structure/closet/secure_closet/engineering_materials, +/obj/effect/spawner/random/gun/smg, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) "gmT" = ( /obj/effect/landmark/xeno_spawn, /turf/open/organic/grass{ @@ -10235,178 +10260,110 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) -"gng" = ( -/obj/structure/platform, -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/platform_decoration{ - dir = 10 +"gnG" = ( +/obj/effect/decal/medical_decals{ + icon_state = "docstripingdir" }, +/obj/structure/bed/roller, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/park) -"gnj" = ( -/obj/item/stack/folding_barricade, -/turf/open/floor/prison, -/area/fiorina/station/security) -"gnm" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + dir = 10; + icon_state = "sterile_white" }, +/area/fiorina/station/medbay) +"gnL" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/tool/kitchen/rollingpin, +/obj/item/reagent_container/food/snacks/grown/carrot, +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/station/botany) -"gnz" = ( -/obj/item/tool/lighter/random{ - pixel_x = 14; - pixel_y = 13 + dir = 10; + icon_state = "kitchen" }, +/area/fiorina/station/civres_blue) +"gnQ" = ( +/obj/effect/spawner/random/toolbox, /turf/open/floor/prison, -/area/fiorina/station/power_ring) -"gnR" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 +/area/fiorina/station/civres_blue) +"gnY" = ( +/obj/structure/bed{ + icon_state = "abed" }, +/obj/item/storage/bible/hefa, /turf/open/floor/prison{ - dir = 8; - icon_state = "cell_stripe" + dir = 6; + icon_state = "whitepurple" }, -/area/fiorina/lz/near_lzI) -"gnS" = ( -/obj/effect/spawner/random/gun/rifle, +/area/fiorina/station/research_cells) +"goo" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "darkyellow2" - }, -/area/fiorina/lz/near_lzI) -"gnV" = ( -/obj/effect/decal/medical_decals{ - icon_state = "cryomid" + dir = 8; + icon_state = "yellow" }, +/area/fiorina/lz/near_lzII) +"goG" = ( +/obj/structure/window/framed/prison/reinforced, +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) +"gpr" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_cargo) +"gpA" = ( +/obj/item/trash/pistachios, /turf/open/floor/prison{ - dir = 1; icon_state = "whitegreen" }, -/area/fiorina/station/medbay) -"goh" = ( -/obj/structure/pipes/standard/manifold/visible, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"gol" = ( -/obj/structure/filingcabinet{ - pixel_x = 8; - pixel_y = 4 +/area/fiorina/tumor/ice_lab) +"gpG" = ( +/obj/structure/window_frame/prison, +/turf/open/floor/plating/prison, +/area/fiorina/station/security) +"gpY" = ( +/obj/item/explosive/grenade/high_explosive/m15{ + pixel_x = -9; + pixel_y = -8 }, -/obj/structure/filingcabinet{ - pixel_x = -8; - pixel_y = 4 +/obj/item/explosive/grenade/high_explosive/frag{ + pixel_x = 6; + pixel_y = 3 }, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/tumor/civres) -"gom" = ( -/obj/structure/closet/firecloset/full, +/area/fiorina/tumor/servers) +"gqM" = ( +/obj/structure/platform_decoration, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"goz" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrowncorners2" - }, -/area/fiorina/maintenance) -"goA" = ( +/area/fiorina/station/park) +"gqU" = ( /obj/structure/surface/table/reinforced/prison, +/obj/item/paper/janitor, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "yellowfull" }, -/area/fiorina/station/medbay) -"goG" = ( -/obj/structure/window/framed/prison/reinforced, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) -"goH" = ( -/obj/structure/surface/rack, -/obj/item/tool/mop, +/area/fiorina/station/disco) +"grg" = ( +/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"goM" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"gpq" = ( -/obj/structure/machinery/shower{ - dir = 1; - pixel_y = -1 + icon_state = "floor_plate" }, -/obj/structure/machinery/shower{ +/area/fiorina/station/telecomm/lz1_cargo) +"grA" = ( +/obj/structure/machinery/landinglight/ds2/delaythree{ dir = 4 }, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/fiorina/station/lowsec) -"gpB" = ( -/obj/item/storage/bible/hefa, -/turf/open/floor/prison{ - dir = 1; - icon_state = "green" - }, -/area/fiorina/station/chapel) -"gpG" = ( -/obj/structure/window_frame/prison, -/turf/open/floor/plating/prison, -/area/fiorina/station/security) -"gqd" = ( -/obj/item/tool/kitchen/utensil/pknife, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"gqe" = ( /turf/open/floor/prison, -/area/fiorina/station/disco) -"gqH" = ( -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrowncorners2" +/area/fiorina/lz/near_lzII) +"gsd" = ( +/obj/structure/barricade/handrail/type_b{ + dir = 1 }, -/area/fiorina/station/park) -"gqZ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/device/radio, -/obj/item/tool/pen/blue, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"grL" = ( -/obj/structure/bed/sofa/vert/grey, /turf/open/floor/prison, -/area/fiorina/station/security) -"grO" = ( -/obj/effect/landmark/corpsespawner/ua_riot, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/lz/near_lzII) "gsL" = ( /obj/structure/platform, /obj/structure/platform{ @@ -10417,18 +10374,54 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"gte" = ( -/obj/item/shard{ - icon_state = "large" +"gsN" = ( +/obj/structure/closet, +/obj/effect/spawner/random/gun/shotgun/midchance, +/turf/open/floor/plating/prison, +/area/fiorina/maintenance) +"gsU" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) +"gsX" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 }, /turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"gtf" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/obj/structure/platform, +/turf/open/floor/prison{ + icon_state = "darkbrown2" + }, /area/fiorina/station/park) -"gto" = ( -/obj/structure/machinery/vending/coffee, +"gtg" = ( +/obj/structure/barricade/sandbags{ + dir = 4; + icon_state = "sandbag_0"; + pixel_y = 2 + }, +/obj/structure/barricade/sandbags{ + icon_state = "sandbag_0"; + pixel_y = -14 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"gtr" = ( +/obj/structure/bedsheetbin, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkpurplefull2" }, -/area/fiorina/tumor/civres) +/area/fiorina/station/research_cells) "gtH" = ( /obj/structure/safe, /obj/item/storage/beer_pack, @@ -10437,15 +10430,25 @@ icon_state = "squares" }, /area/fiorina/station/medbay) -"gtM" = ( -/obj/structure/bed/chair/comfy{ - dir = 8 +"gtN" = ( +/obj/item/storage/beer_pack{ + pixel_y = 10 }, +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - dir = 9; icon_state = "yellow" }, -/area/fiorina/station/disco) +/area/fiorina/station/lowsec) +"gtP" = ( +/obj/item/trash/uscm_mre, +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_cargo) +"gtT" = ( +/obj/item/trash/eat, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/lz/near_lzI) "guf" = ( /obj/structure/bed/chair{ dir = 4; @@ -10453,35 +10456,88 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"guB" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 8; - layer = 3.5 - }, +"guv" = ( +/obj/item/packageWrap, +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "darkyellow2" }, +/area/fiorina/lz/near_lzI) +"gux" = ( +/obj/effect/landmark/corpsespawner/ua_riot, +/turf/open/floor/prison, /area/fiorina/station/disco) -"guG" = ( +"guz" = ( /turf/open/floor/prison{ dir = 9; icon_state = "greenfull" }, +/area/fiorina/station/transit_hub) +"guU" = ( +/obj/structure/prop/structure_lattice{ + dir = 4 + }, +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 + }, +/turf/open/floor/prison, +/area/fiorina/tumor/civres) +"gve" = ( +/obj/structure/filingcabinet, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/fiorina/tumor/servers) +"gvr" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/pill_bottle/inaprovaline/skillless, +/turf/open/floor/prison{ + dir = 1; + icon_state = "blue_plate" + }, /area/fiorina/station/botany) -"guQ" = ( +"gvz" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 + }, +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 9 + }, /turf/open/floor/prison{ - icon_state = "cell_stripe" + icon_state = "yellowfull" }, -/area/fiorina/station/power_ring) -"gvT" = ( -/obj/structure/closet/secure_closet/engineering_materials, -/obj/effect/landmark/objective_landmark/medium, +/area/fiorina/station/disco) +"gvZ" = ( +/obj/item/stack/sheet/wood{ + pixel_x = 1; + pixel_y = -3 + }, +/obj/item/stack/sheet/wood, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/tumor/aux_engi) -"gvX" = ( -/obj/structure/closet/secure_closet/security_empty, +/area/fiorina/tumor/servers) +"gwm" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/weapon/gun/energy/taser, /turf/open/floor/prison{ icon_state = "redfull" }, @@ -10489,13 +10545,6 @@ "gws" = ( /turf/open/floor/plating, /area/fiorina/oob) -"gwz" = ( -/obj/effect/spawner/random/gun/pistol, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) "gwH" = ( /turf/closed/wall/strata_ice/jungle{ desc = "It is made of Fiberbush(tm). It contains asbestos."; @@ -10511,51 +10560,66 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"gwX" = ( -/obj/item/stool, -/obj/item/reagent_container/food/drinks/bottle/bluecuracao{ - pixel_x = 15; - pixel_y = 25 - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) "gxj" = ( /obj/structure/surface/table/woodentable, /obj/item/toy/dice/d20, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"gxx" = ( -/obj/item/packageWrap, -/obj/effect/decal/cleanable/blood, +"gxn" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" + icon_state = "darkpurplefull2" }, /area/fiorina/lz/near_lzI) -"gxL" = ( -/obj/effect/decal{ - icon = 'icons/obj/items/policetape.dmi'; - icon_state = "engineering_h"; - layer = 2.5; - pixel_y = -11 +"gxQ" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" }, +/area/fiorina/tumor/aux_engi) +"gxR" = ( +/obj/item/stack/tile/plasteel, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "greenfull" + }, +/area/fiorina/tumor/civres) +"gyh" = ( +/obj/effect/decal/medical_decals{ + icon_state = "triagedecaldir" + }, +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"gyt" = ( +/obj/effect/landmark/monkey_spawn, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) +"gyy" = ( +/obj/structure/platform{ + dir = 4 }, -/area/fiorina/station/telecomm/lz1_cargo) -"gxN" = ( -/obj/item/stack/sheet/metal/medium_stack, /turf/open/floor/prison, -/area/fiorina/station/power_ring) -"gyi" = ( +/area/fiorina/station/transit_hub) +"gyA" = ( +/obj/structure/machinery/disposal, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue_plate" + icon_state = "floor_plate" }, -/area/fiorina/station/botany) +/area/fiorina/tumor/civres) "gyB" = ( /obj/structure/flora/bush/ausbushes/grassybush{ icon_state = "ywflowers_2" @@ -10565,12 +10629,6 @@ name = "astroturf" }, /area/fiorina/station/civres_blue) -"gyI" = ( -/obj/item/trash/candy, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) "gyJ" = ( /obj/structure/machinery/light/double/blue{ dir = 8; @@ -10579,102 +10637,136 @@ }, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"gyU" = ( +"gyP" = ( +/obj/item/stack/sheet/wood{ + amount = 10 + }, /turf/open/floor/prison{ - dir = 8; - icon_state = "cell_stripe" + dir = 10; + icon_state = "floor_plate" }, -/area/fiorina/station/park) -"gyW" = ( -/obj/item/weapon/harpoon, -/turf/open/floor/plating/prison, -/area/fiorina/maintenance) +/area/fiorina/station/telecomm/lz1_cargo) "gzb" = ( /obj/structure/cable/heavyduty{ icon_state = "1-2" }, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"gzd" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" - }, -/area/fiorina/station/medbay) -"gzy" = ( -/obj/structure/barricade/wooden, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" +"gzh" = ( +/obj/structure/reagent_dispensers/water_cooler{ + density = 0; + pixel_x = -11; + pixel_y = 13 }, -/area/fiorina/station/telecomm/lz1_cargo) -"gzz" = ( -/obj/structure/machinery/vending/cola, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/fiberbush) -"gzA" = ( -/obj/structure/machinery/gibber, -/obj/effect/decal/cleanable/blood{ - pixel_x = 8; - pixel_y = 10 - }, +/area/fiorina/station/power_ring) +"gzu" = ( +/obj/item/clothing/mask/cigarette/bcigarette, /turf/open/floor/prison{ - icon_state = "blue_plate" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/botany) -"gzF" = ( +/area/fiorina/station/research_cells) +"gzN" = ( /obj/structure/surface/table/reinforced/prison, -/obj/effect/landmark/corpsespawner/doctor, +/obj/item/toy/handcard/aceofspades, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/civres_blue) -"gzQ" = ( -/obj/structure/machinery/computer/crew, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/area/fiorina/station/research_cells) +"gAh" = ( +/obj/structure/prop/structure_lattice{ + dir = 4 + }, +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 }, -/area/fiorina/station/medbay) -"gAa" = ( -/obj/structure/largecrate/random/case, /turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/civres_blue) +"gAn" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison, +/area/fiorina/station/park) "gAA" = ( /obj/item/stack/sheet/metal/medium_stack, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"gAS" = ( -/obj/structure/monorail{ - dir = 4; - name = "launch track" +"gAC" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"gAQ" = ( +/obj/structure/machinery/landinglight/ds2/delaytwo{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/floor/plating/prison, /area/fiorina/lz/near_lzII) -"gBo" = ( -/obj/structure/closet/emcloset, +"gBe" = ( +/obj/structure/machinery/landinglight/ds2/delaythree, /turf/open/floor/prison{ - dir = 6; + icon_state = "floor_plate" + }, +/area/fiorina/lz/near_lzII) +"gBw" = ( +/obj/item/trash/chunk, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) +"gBx" = ( +/obj/structure/prop/structure_lattice{ + dir = 4 + }, +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/fiberbush) +"gBN" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 9; icon_state = "whitegreen" }, /area/fiorina/station/medbay) -"gCb" = ( -/obj/structure/barricade/sandbags{ - dir = 8; - icon_state = "sandbag_0"; - pixel_y = 2 +"gBP" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/fiorina/lz/near_lzI) +"gBR" = ( +/obj/structure/platform{ + dir = 4 }, +/obj/structure/barricade/handrail/type_b{ + dir = 4; + layer = 3.5 + }, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"gBY" = ( +/obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" + icon_state = "redfull" }, -/area/fiorina/station/disco) +/area/fiorina/station/chapel) "gCn" = ( /obj/structure/surface/table/woodentable, /obj/item/newspaper{ @@ -10698,16 +10790,20 @@ }, /turf/closed/wall/mineral/bone_resin, /area/fiorina/tumor/civres) -"gCX" = ( +"gCH" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper, /turf/open/floor/prison{ - icon_state = "darkbrown2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/aux_engi) -"gCY" = ( +/area/fiorina/station/medbay) +"gCK" = ( +/obj/effect/landmark/survivor_spawner, /turf/open/floor/prison{ - icon_state = "cell_stripe" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/flight_deck) +/area/fiorina/station/research_cells) "gDx" = ( /obj/structure/surface/table/woodentable, /obj/item/newspaper{ @@ -10719,158 +10815,107 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"gDz" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"gDP" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"gEe" = ( -/obj/item/reagent_container/food/drinks/bottle/patron, +"gDI" = ( +/obj/structure/bed/chair/office/dark, /turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"gEv" = ( -/obj/structure/bed/roller, +/area/fiorina/tumor/ice_lab) +"gEq" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" + icon_state = "platingdmg1" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/oob) "gEx" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/station/botany) -"gEF" = ( -/obj/structure/prop/structure_lattice{ - dir = 4; - health = 300 - }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/servers) -"gET" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/clothing/mask/cigarette/cigar/tarbacks, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/chapel) -"gEU" = ( -/obj/structure/monorail{ +"gEX" = ( +/obj/structure/stairs/perspective{ dir = 4; - name = "launch track" - }, -/turf/open/space, -/area/fiorina/oob) -"gEW" = ( -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "p_stair_full" }, -/area/fiorina/station/lowsec) -"gFc" = ( -/obj/effect/decal/cleanable/blood/drip, +/obj/structure/platform, /turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"gFe" = ( -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/tumor/fiberbush) +/area/fiorina/station/disco) "gFg" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"gFq" = ( +"gFp" = ( +/obj/structure/inflatable/door, /turf/open/floor/prison{ - dir = 5; - icon_state = "darkyellow2" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/telecomm/lz1_tram) -"gFG" = ( +/area/fiorina/station/medbay) +"gFN" = ( +/obj/item/stack/sheet/metal, /turf/open/floor/prison{ - icon_state = "blue" + dir = 1; + icon_state = "whitepurple" }, -/area/fiorina/station/civres_blue) -"gFK" = ( -/obj/item/stack/cable_coil, +/area/fiorina/station/research_cells) +"gFW" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkpurple2" + dir = 6; + icon_state = "green" }, -/area/fiorina/tumor/servers) -"gGp" = ( -/obj/item/ammo_casing{ - icon_state = "casing_1" +/area/fiorina/tumor/aux_engi) +"gFZ" = ( +/obj/structure/barricade/wooden{ + dir = 1 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 4; + icon_state = "darkyellow2" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"gGc" = ( +/obj/structure/platform{ + dir = 4 }, -/area/fiorina/station/medbay) -"gGu" = ( -/obj/item/stack/rods, /turf/open/floor/prison, -/area/fiorina/station/civres_blue) +/area/fiorina/station/disco) "gGx" = ( /obj/effect/landmark/queen_spawn, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"gGB" = ( -/obj/structure/platform_decoration{ - dir = 1 +"gHh" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"gGG" = ( -/obj/structure/closet/secure_closet/engineering_materials, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/civres) -"gHb" = ( -/obj/structure/prop/structure_lattice{ - health = 300 +/turf/open/floor/plating/prison, +/area/fiorina/station/research_cells) +"gHn" = ( +/obj/structure/filingcabinet{ + pixel_x = 8; + pixel_y = 4 }, -/obj/structure/prop/structure_lattice{ - pixel_y = 10 +/obj/structure/filingcabinet{ + pixel_x = -8; + pixel_y = 4 }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/area/fiorina/tumor/aux_engi) -"gHc" = ( -/obj/structure/machinery/vending/coffee, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "bluefull" }, -/area/fiorina/station/research_cells) -"gHh" = ( +/area/fiorina/station/power_ring) +"gHo" = ( /obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + dir = 4; + pixel_x = 10; + pixel_y = -3 }, -/turf/open/floor/plating/prison, -/area/fiorina/station/research_cells) -"gHl" = ( -/obj/structure/machinery/vending/cola, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) +/obj/structure/largecrate/random, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/fiorina/station/telecomm/lz1_tram) "gHy" = ( /obj/item/stack/sheet/metal/medium_stack, /turf/open/floor/plating/prison, @@ -10881,52 +10926,61 @@ }, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"gHF" = ( -/obj/effect/decal/medical_decals{ - icon_state = "cryomid" +"gHC" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" +/obj/structure/platform{ + dir = 4 }, +/turf/open/floor/prison, /area/fiorina/station/medbay) -"gHP" = ( -/obj/item/prop/helmetgarb/spacejam_tickets{ - desc = "A ticket to Souto Man's raffle!"; - name = "\improper Souto Raffle Ticket"; - pixel_x = 7; +"gIa" = ( +/obj/item/stool, +/obj/item/reagent_container/food/drinks/bottle/bluecuracao{ + pixel_x = 15; + pixel_y = 25 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) +"gIo" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/box/cups{ + pixel_x = -3; pixel_y = 6 }, +/obj/item/storage/box/cups, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue" + icon_state = "floor_plate" }, -/area/fiorina/station/chapel) -"gHW" = ( +/area/fiorina/station/power_ring) +"gIs" = ( +/obj/item/reagent_container/food/drinks/bottle/rum, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowcorners2" + dir = 1; + icon_state = "blue_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/botany) "gIB" = ( /obj/structure/window/framed/prison, /turf/open/floor/plating/prison, /area/fiorina/station/security) -"gIF" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/technology_scanner, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) +"gID" = ( +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/oob) "gJu" = ( /obj/effect/alien/weeds/node, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"gJG" = ( -/obj/item/stack/folding_barricade, +"gKg" = ( +/obj/effect/landmark/survivor_spawner, /turf/open/floor/prison{ - dir = 8; - icon_state = "red" + icon_state = "floor_plate" }, /area/fiorina/station/security) "gKi" = ( @@ -10941,43 +10995,20 @@ }, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"gKt" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/obj/structure/prop/souto_land/streamer{ - pixel_y = 24 - }, -/turf/open/floor/prison{ - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"gKu" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "Residential Apartment" +"gKG" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + dir = 1; + icon_state = "blue" }, -/area/fiorina/tumor/servers) -"gKA" = ( -/obj/structure/platform_decoration, +/area/fiorina/station/chapel) +"gLk" = ( +/obj/item/stool, /turf/open/floor/prison, -/area/fiorina/tumor/ice_lab) -"gKL" = ( -/obj/structure/platform, -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/platform_decoration{ - dir = 6 - }, -/turf/open/floor/prison{ - dir = 6; - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/power_ring) "gLu" = ( /turf/closed/shuttle/ert{ icon_state = "stan_leftengine" @@ -10990,64 +11021,54 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"gLG" = ( -/obj/item/paper, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/research_cells) -"gMw" = ( -/obj/structure/pipes/standard/tank/oxygen, +"gLK" = ( +/obj/structure/tunnel/maint_tunnel, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"gMJ" = ( -/obj/structure/barricade/deployable{ - dir = 4 + icon_state = "greenblue" }, +/area/fiorina/station/botany) +"gLV" = ( +/obj/item/clothing/head/welding, /turf/open/floor/prison{ - icon_state = "yellowfull" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/station/lowsec) -"gMV" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_sn_full_cap" +/area/fiorina/tumor/civres) +"gNx" = ( +/obj/structure/platform{ + dir = 1 }, /obj/structure/platform{ - dir = 4 + dir = 8 }, -/turf/open/floor/prison, -/area/fiorina/station/botany) -"gNF" = ( -/obj/structure/machinery/shower{ - dir = 1; - pixel_y = -1 +/obj/structure/platform_decoration{ + dir = 5 }, -/obj/structure/machinery/shower{ - dir = 8 +/obj/effect/decal/medical_decals{ + icon_state = "triagedecalbottomright" }, /turf/open/floor/prison{ - icon_state = "kitchen" + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"gNJ" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/area/fiorina/station/lowsec) -"gNK" = ( -/obj/item/stack/rods/plasteel, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/disco) -"gNW" = ( -/obj/item/bodybag, +/area/fiorina/tumor/servers) +"gNU" = ( +/obj/structure/platform{ + dir = 4 + }, /turf/open/floor/prison{ - dir = 8; - icon_state = "yellow" + icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/disco) "gNY" = ( /obj/structure/flora/bush/ausbushes/grassybush{ icon_state = "ppflowers_2" @@ -11057,15 +11078,24 @@ name = "astroturf" }, /area/fiorina/station/civres_blue) -"gOs" = ( -/obj/structure/bed/chair/comfy{ - dir = 4 +"gOd" = ( +/obj/item/stack/sheet/wood, +/turf/open/floor/prison{ + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) +"gOk" = ( +/obj/structure/cargo_container/grant/right{ + density = 0; + desc = "A huge industrial shipping container. You could slip just behind it."; + health = 5000; + layer = 4; + unacidable = 1 }, /turf/open/floor/prison{ - dir = 5; - icon_state = "darkyellow2" + icon_state = "floor_plate" }, -/area/fiorina/station/flight_deck) +/area/fiorina/station/power_ring) "gOJ" = ( /obj/structure/closet/secure_closet/medical2{ req_access_txt = "100" @@ -11076,29 +11106,46 @@ icon_state = "squares" }, /area/fiorina/station/medbay) -"gPm" = ( -/obj/item/ammo_casing{ - icon_state = "casing_8" - }, +"gOU" = ( +/obj/item/bodybag, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "yellow" }, /area/fiorina/station/lowsec) +"gPk" = ( +/obj/structure/barricade/metal/wired{ + dir = 4 + }, +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"gPo" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "green" + }, +/area/fiorina/tumor/civres) +"gPp" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/tool/kitchen/rollingpin, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/fiorina/station/power_ring) "gPs" = ( /obj/structure/surface/table/woodentable/fancy, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"gPO" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 +"gPE" = ( +/obj/structure/platform_decoration{ + dir = 8 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrown2" + dir = 10; + icon_state = "yellow" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/disco) "gPS" = ( /obj/item/stack/rods, /turf/open/floor/prison/chapel_carpet{ @@ -11106,28 +11153,26 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"gQh" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/device/flashlight/lamp/candelabra{ - layer = 3.2; - pixel_x = 1; - pixel_y = 13 +"gPV" = ( +/obj/item/ammo_casing{ + icon_state = "casing_8" }, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/fiorina/station/chapel) -"gQx" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_sn_full_cap" + dir = 10; + icon_state = "floor_plate" }, +/area/fiorina/station/telecomm/lz1_cargo) +"gQc" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) +"gQz" = ( +/obj/structure/bed/chair, /turf/open/floor/prison{ - dir = 8; - icon_state = "blue" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/chapel) +/area/fiorina/station/medbay) "gQK" = ( /obj/structure/disposalpipe/segment{ color = "#c4c4c4"; @@ -11138,24 +11183,31 @@ }, /turf/closed/wall/mineral/bone_resin, /area/fiorina/tumor/servers) -"gRm" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/effect/decal/medical_decals{ - icon_state = "docdecal1" - }, +"gQL" = ( +/obj/structure/surface/rack, +/obj/item/clothing/suit/storage/hazardvest, +/obj/item/clothing/suit/storage/hazardvest, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"gRf" = ( +/obj/structure/machinery/computer/crew, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"gRy" = ( -/obj/item/tool/shovel/etool, +"gRg" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) +/area/fiorina/station/flight_deck) +"gRA" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/disco) "gRT" = ( /obj/structure/surface/table/woodentable/fancy, /obj/structure/sign/poster{ @@ -11166,20 +11218,6 @@ /obj/item/device/flashlight/lamp/green, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"gRV" = ( -/obj/structure/machinery/disposal, -/obj/item/tool/kitchen/rollingpin{ - pixel_y = 8 - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" - }, -/area/fiorina/station/civres_blue) "gRW" = ( /obj/structure/machinery/light/double/blue{ dir = 1; @@ -11188,7 +11226,9 @@ /obj/structure/bed/chair/comfy, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"gSD" = ( +"gSf" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/explosive/grenade/incendiary/molotov, /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 @@ -11196,34 +11236,24 @@ /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"gSG" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/prop/souto_land/pole, -/obj/structure/prop/souto_land/pole{ - dir = 4; - pixel_y = 24 - }, +/area/fiorina/station/lowsec) +"gSg" = ( +/obj/structure/platform, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"gSN" = ( -/obj/effect/decal/cleanable/blood/splatter{ - icon_state = "handblood" + icon_state = "floor_plate" }, +/area/fiorina/station/power_ring) +"gSC" = ( +/obj/item/prop/helmetgarb/gunoil, +/turf/open/floor/prison, +/area/fiorina/maintenance) +"gSK" = ( +/obj/effect/landmark/yautja_teleport, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/station/transit_hub) "gSP" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/device/flashlight/lamp/candelabra{ @@ -11233,6 +11263,12 @@ }, /turf/open/floor/prison/chapel_carpet, /area/fiorina/station/chapel) +"gSX" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/prison, +/area/fiorina/station/park) "gTc" = ( /obj/item/storage/belt/shotgun/full/quackers, /obj/effect/spawner/gibspawner/human, @@ -11241,50 +11277,57 @@ name = "pool" }, /area/fiorina/station/park) -"gTw" = ( -/obj/structure/lattice, -/obj/structure/platform_decoration/kutjevo, -/turf/open/space/basic, -/area/fiorina/oob) -"gUf" = ( +"gTi" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "darkbrown2" + icon_state = "blue" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/chapel) +"gTy" = ( +/obj/item/stack/sheet/metal/medium_stack, +/obj/structure/surface/rack, +/turf/open/floor/prison{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) +"gTN" = ( +/turf/open/floor/prison{ + dir = 5; + icon_state = "darkpurple2" + }, +/area/fiorina/tumor/ice_lab) +"gTW" = ( +/obj/structure/platform, +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" + }, +/area/fiorina/station/transit_hub) "gUj" = ( /turf/closed/shuttle/ert{ icon_state = "stan3" }, /area/fiorina/tumor/ship) -"gUn" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/trash/plate{ - pixel_x = 1; - pixel_y = 3 +"gUu" = ( +/obj/structure/largecrate/random/barrel, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/fiorina/lz/near_lzI) +"gVc" = ( +/obj/structure/barricade/sandbags{ + dir = 8; + icon_state = "sandbag_0"; + pixel_y = 2 }, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"gUx" = ( /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"gUH" = ( -/obj/effect/decal/cleanable/blood/gibs/core, -/turf/open/floor/prison{ - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"gUO" = ( -/obj/item/tool/warning_cone, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison, -/area/fiorina/station/park) +/area/fiorina/station/disco) "gVs" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/plating/prison, @@ -11300,22 +11343,15 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"gVA" = ( -/obj/item/frame/rack, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"gWf" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 1 +"gVT" = ( +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" }, -/obj/item/frame/rack, /turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" + dir = 10; + icon_state = "floor_plate" }, -/area/fiorina/station/disco) +/area/fiorina/station/flight_deck) "gWg" = ( /obj/structure/powerloader_wreckage, /obj/effect/decal/cleanable/blood/gibs/robot/limb, @@ -11333,67 +11369,56 @@ /obj/effect/spawner/random/gun/rifle/midchance, /turf/open/floor/wood, /area/fiorina/station/disco) -"gWT" = ( -/obj/item/stack/sandbags/large_stack, -/turf/open/floor/prison{ - dir = 4; - icon_state = "green" - }, -/area/fiorina/tumor/civres) -"gXt" = ( -/turf/open/floor/prison{ - icon_state = "platingdmg1" +"gXd" = ( +/obj/structure/prop/almayer/computers/mission_planning_system{ + density = 0; + desc = "Its a telephone, and a computer. Woah."; + name = "\improper funny telephone booth"; + pixel_y = 21 }, +/turf/open/floor/prison, /area/fiorina/station/chapel) "gXu" = ( /obj/structure/surface/rack, /obj/effect/landmark/objective_landmark/far, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz2_maint) -"gXH" = ( -/obj/structure/prop/structure_lattice{ - dir = 4; - health = 300 - }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 - }, -/obj/structure/disposalpipe/segment{ - color = "#c4c4c4"; - dir = 2; - layer = 6; - name = "overhead pipe"; - pixel_x = -16; - pixel_y = 12 - }, +"gXF" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "darkyellow2" }, /area/fiorina/tumor/servers) -"gXL" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 +"gXI" = ( +/obj/item/book/manual/atmospipes, +/turf/open/floor/prison{ + dir = 9; + icon_state = "whitepurple" }, +/area/fiorina/station/research_cells) +"gYD" = ( +/obj/item/tool/wrench, /turf/open/floor/prison{ - icon_state = "yellowfull" + icon_state = "whitepurple" }, -/area/fiorina/station/lowsec) -"gYA" = ( -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 +/area/fiorina/station/research_cells) +"gYH" = ( +/obj/structure/closet/secure_closet/security_empty, +/obj/structure/window/reinforced{ + dir = 8 }, +/obj/item/ammo_magazine/shotgun/beanbag, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue_plate" + icon_state = "redfull" }, -/area/fiorina/station/botany) +/area/fiorina/station/security) +"gYM" = ( +/obj/structure/largecrate/random/barrel, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) "gZc" = ( /obj/effect/decal/hefa_cult_decals/d32{ icon_state = "4" @@ -11408,58 +11433,83 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/medbay) -"gZE" = ( +"gZg" = ( /obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/cameras{ - dir = 1 - }, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"gZT" = ( +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - icon_state = "panelscorched" + icon_state = "bluefull" }, -/area/fiorina/station/transit_hub) -"hab" = ( +/area/fiorina/station/power_ring) +"gZx" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/trash/plate{ - pixel_x = 1; - pixel_y = 3 +/obj/item/reagent_container/food/drinks/bottle/vodka{ + pixel_x = -4; + pixel_y = 12 + }, +/obj/item/reagent_container/food/drinks/bottle/vodka{ + pixel_x = 6; + pixel_y = 3 + }, +/turf/open/floor/prison{ + icon_state = "bluefull" }, -/turf/open/floor/prison, /area/fiorina/station/power_ring) -"hah" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +"gZG" = ( +/obj/item/stack/sheet/metal/medium_stack, +/obj/effect/landmark/monkey_spawn, +/turf/open/floor/prison{ + dir = 8; + icon_state = "blue" }, +/area/fiorina/station/civres_blue) +"gZM" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "darkbrowncorners2" }, -/area/fiorina/station/research_cells) -"ham" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, +/area/fiorina/station/park) +"hae" = ( /turf/open/floor/prison{ - dir = 4; + dir = 8; icon_state = "whitegreen" }, /area/fiorina/tumor/ice_lab) +"hao" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/microwave{ + pixel_y = 7 + }, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) "hay" = ( /turf/closed/shuttle/ert{ icon_state = "wy_leftengine" }, /area/fiorina/station/medbay) -"haU" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"haJ" = ( +/obj/item/disk, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/effect/decal/cleanable/blood, +/area/fiorina/tumor/servers) +"haQ" = ( +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - icon_state = "greenblue" + icon_state = "darkredfull2" }, -/area/fiorina/station/botany) +/area/fiorina/station/research_cells) +"hbn" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/fiorina/tumor/civres) "hbo" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/drinks/cans/souto/classic{ @@ -11490,56 +11540,34 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"hbq" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/cameras{ - dir = 4 +"hbp" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, +/obj/structure/platform, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"hbt" = ( +/obj/item/tool/screwdriver, /turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"hbC" = ( -/obj/structure/monorail{ - name = "launch track" + icon_state = "darkpurplefull2" }, -/turf/open/space, -/area/fiorina/oob) -"hcb" = ( +/area/fiorina/tumor/servers) +"hbH" = ( +/obj/item/stack/sandbags_empty/half, /turf/open/floor/prison{ - dir = 4; - icon_state = "greencorner" - }, -/area/fiorina/tumor/civres) -"hce" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/box/handcuffs{ - pixel_x = 6; - pixel_y = 1 - }, -/obj/item/storage/box/handcuffs{ - pixel_x = -7; - pixel_y = 1 - }, -/obj/item/storage/box/handcuffs{ - pixel_x = -2; - pixel_y = 11 - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + icon_state = "darkyellow2" }, -/turf/open/floor/prison{ - icon_state = "redfull" +/area/fiorina/lz/near_lzI) +"hcs" = ( +/obj/item/stack/sheet/metal{ + amount = 5 }, -/area/fiorina/station/security) -"hcf" = ( -/obj/item/paper/carbon, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/station/telecomm/lz1_cargo) "hcv" = ( /obj/item/stack/tile/plasteel{ pixel_x = 12; @@ -11550,40 +11578,88 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) +"hcB" = ( +/obj/structure/sign/poster{ + desc = "You are becoming hysterical."; + icon_state = "poster11"; + pixel_y = 32 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/flight_deck) +"hcY" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/park) "hds" = ( /obj/structure/cable/heavyduty{ icon_state = "1-2-8" }, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"hdv" = ( -/obj/item/tool/scythe, -/turf/open/floor/prison{ +"hdA" = ( +/obj/structure/barricade/wooden{ dir = 4; - icon_state = "blue_plate" + pixel_y = 4 }, -/area/fiorina/station/botany) -"heb" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_ew_full_cap" +/turf/open/floor/prison{ + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) +"hdR" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "yellow" }, -/obj/structure/platform/stair_cut, -/turf/open/floor/plating/prison, /area/fiorina/station/disco) -"heu" = ( -/obj/structure/closet/crate/miningcar{ - name = "\improper materials storage bin" +"hej" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "darkbrown2" }, -/obj/item/reagent_container/food/snacks/meat, +/area/fiorina/maintenance) +"hek" = ( +/obj/structure/closet/secure_closet/security_empty, +/obj/item/weapon/baton, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue_plate" + icon_state = "redfull" }, -/area/fiorina/station/botany) +/area/fiorina/station/security) +"heo" = ( +/obj/structure/closet/crate/trashcart, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/chapel) +"heA" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/aux_engi) "heO" = ( /turf/closed/shuttle/elevator, /area/fiorina/station/civres_blue) +"heT" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 6; + icon_state = "greenblue" + }, +/area/fiorina/station/botany) "hfc" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/window/reinforced{ @@ -11602,91 +11678,65 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"hfl" = ( -/obj/item/device/pinpointer, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) "hfT" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/station/flight_deck) -"hgp" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/cameras{ - dir = 4 - }, +"hgc" = ( +/obj/structure/largecrate/supply/medicine/medivend, /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/oob) -"hgr" = ( -/obj/item/device/flashlight/lamp/tripod, +/area/fiorina/station/medbay) +"hgh" = ( +/obj/item/trash/burger, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/civres_blue) -"hgu" = ( -/obj/structure/barricade/handrail/type_b{ dir = 4; - layer = 3.5 + icon_state = "greenfull" }, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"hgz" = ( -/obj/effect/landmark/corpsespawner/ua_riot/burst, +/area/fiorina/tumor/civres) +"hgA" = ( +/obj/item/ammo_magazine/smg/nailgun, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/maintenance) +"hgD" = ( +/obj/effect/alien/weeds/node, /turf/open/floor/prison{ dir = 4; - icon_state = "greenfull" + icon_state = "darkbrowncorners2" }, -/area/fiorina/tumor/civres) -"hgC" = ( +/area/fiorina/tumor/aux_engi) +"hgP" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - dir = 10; - icon_state = "green" + dir = 1; + icon_state = "darkbrowncorners2" }, -/area/fiorina/station/transit_hub) -"hgJ" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/plating/prison, -/area/fiorina/station/disco) +/area/fiorina/station/park) "hgS" = ( /turf/closed/shuttle/ert{ icon_state = "stan5" }, /area/fiorina/tumor/aux_engi) -"hhg" = ( -/obj/item/prop/helmetgarb/spacejam_tickets{ - desc = "A ticket to Souto Man's raffle!"; - name = "\improper Souto Raffle Ticket"; - pixel_x = 6; - pixel_y = 7 - }, -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"hhh" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_ew_full_cap" +"hhu" = ( +/obj/structure/surface/rack, +/obj/item/reagent_container/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" }, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) -"hhl" = ( -/obj/item/device/flashlight/flare/on, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"hhD" = ( +/obj/effect/decal/cleanable/blood/splatter, +/obj/structure/surface/rack, +/obj/item/clothing/gloves/latex, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) -"hhy" = ( -/turf/open/floor/prison{ - dir = 9; - icon_state = "darkbrown2" + icon_state = "sterile_white" }, -/area/fiorina/station/park) +/area/fiorina/station/medbay) "hhL" = ( /obj/effect/spawner/random/powercell, /obj/structure/disposalpipe/segment{ @@ -11698,71 +11748,55 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) +"hil" = ( +/obj/structure/surface/rack, +/obj/item/tool/plantspray/pests, +/obj/item/tool/plantspray/weeds, +/turf/open/floor/prison{ + dir = 4; + icon_state = "blue_plate" + }, +/area/fiorina/station/botany) "hir" = ( /obj/structure/window/framed/prison/reinforced, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"hiu" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/prison{ - dir = 8; - icon_state = "cell_stripe" - }, -/area/fiorina/station/telecomm/lz1_tram) -"hix" = ( -/obj/structure/closet{ - density = 0; - pixel_y = 18 - }, -/obj/item/clothing/gloves/boxing, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"hiO" = ( +/turf/closed/shuttle/elevator{ + dir = 4 }, +/area/fiorina/tumor/aux_engi) +"hiP" = ( +/obj/item/stack/rods, /turf/open/floor/prison{ dir = 1; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"hiG" = ( -/obj/item/storage/backpack/souto, -/turf/open/floor/prison, -/area/fiorina/station/chapel) -"hiK" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" + icon_state = "whitegreen" }, +/area/fiorina/station/medbay) +"hjp" = ( +/obj/structure/bed/chair/office/dark, /turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/fiorina/station/disco) -"hiO" = ( -/turf/closed/shuttle/elevator{ - dir = 4 + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/aux_engi) -"hja" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_sn_full_cap" +/area/fiorina/tumor/ice_lab) +"hjB" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" }, +/area/fiorina/station/research_cells) +"hjC" = ( /obj/structure/platform{ dir = 8 }, -/turf/open/floor/plating/prison, -/area/fiorina/station/botany) -"hjb" = ( -/obj/structure/closet/secure_closet/medical2, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"hjr" = ( -/obj/structure/inflatable/popped/door, -/turf/open/floor/prison{ - dir = 9; - icon_state = "whitegreen" +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_ew_half_cap" }, -/area/fiorina/station/medbay) +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzI) "hjE" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/window/reinforced, @@ -11771,9 +11805,17 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/security) -"hjP" = ( +"hjM" = ( +/obj/structure/filingcabinet, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/security) +"hjR" = ( +/obj/effect/landmark/monkey_spawn, /turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/transit_hub) "hjV" = ( /obj/structure/stairs/perspective, /turf/open/floor/plating/prison, @@ -11789,35 +11831,56 @@ }, /turf/open/floor/almayer_hull, /area/fiorina/oob) -"hkW" = ( -/obj/item/trash/popcorn, +"hko" = ( +/obj/effect/decal/medical_decals{ + icon_state = "docdecal1" + }, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"hll" = ( -/obj/item/tool/warning_cone, +"hkA" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkyellow2" }, -/area/fiorina/station/power_ring) -"hln" = ( -/obj/structure/bed/chair, +/area/fiorina/station/flight_deck) +"hkB" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" + dir = 8; + icon_state = "darkyellowcorners2" }, -/area/fiorina/station/park) -"hlq" = ( -/obj/structure/janitorialcart, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"hlK" = ( +/area/fiorina/station/telecomm/lz1_cargo) +"hkH" = ( +/obj/item/stack/sheet/wood, /turf/open/floor/prison{ - icon_state = "darkyellow2" + dir = 6; + icon_state = "whitepurple" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/research_cells) +"hkM" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno/body, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"hlk" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/clothing/mask/cigarette, +/obj/item/storage/fancy/cigarettes/emeraldgreen{ + pixel_x = -4; + pixel_y = 9 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/aux_engi) +"hlB" = ( +/obj/item/tool/kitchen/knife, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) "hlT" = ( /obj/structure/machinery/light/double/blue{ dir = 4; @@ -11826,80 +11889,69 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"hmd" = ( -/obj/structure/stairs/perspective{ +"hmq" = ( +/obj/item/device/flashlight, +/turf/open/floor/prison{ + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) +"hmE" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/prison{ dir = 4; - icon_state = "p_stair_sn_full_cap" + icon_state = "whitegreen" }, -/obj/structure/platform{ - dir = 4 +/area/fiorina/tumor/ice_lab) +"hmS" = ( +/obj/structure/monorail{ + name = "launch track" }, /turf/open/floor/plating/prison, /area/fiorina/station/park) -"hmg" = ( -/obj/structure/platform_decoration, +"hnh" = ( +/obj/item/reagent_container/food/drinks/sillycup, /turf/open/floor/prison, -/area/fiorina/station/disco) -"hmj" = ( -/obj/item/storage/firstaid/toxin, +/area/fiorina/station/power_ring) +"hnK" = ( +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/chapel) -"hmk" = ( -/turf/open/floor/prison{ - icon_state = "whitegreencorner" - }, -/area/fiorina/tumor/ice_lab) -"hmr" = ( -/obj/structure/bed/sofa/south/grey/right, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/station/transit_hub) -"hng" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/fiorina/tumor/servers) -"hnJ" = ( -/obj/item/clothing/under/stowaway, -/obj/structure/machinery/shower{ - pixel_y = 13 +/area/fiorina/station/park) +"hnM" = ( +/obj/item/shard{ + icon_state = "large" }, /turf/open/floor/prison{ - icon_state = "kitchen" + icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/security) "hob" = ( /obj/item/phone{ pixel_y = 7 }, /turf/open/floor/plating/prison, /area/fiorina/oob) -"hor" = ( -/obj/structure/bed/chair{ - dir = 1; - layer = 2.7 +"hoo" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "bluecorner" + }, +/area/fiorina/station/civres_blue) +"hox" = ( +/obj/structure/barricade/handrail{ + dir = 4 }, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) -"hoy" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/prison, -/area/fiorina/station/security) +/area/fiorina/station/central_ring) +"hoC" = ( +/obj/item/trash/popcorn, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/disco) "hoH" = ( /obj/effect/decal/cleanable/cobweb{ desc = "Spun only by the terrifying space widow. Some say that even looking at it will kill you."; @@ -11907,24 +11959,10 @@ }, /turf/open/space, /area/fiorina/oob) -"hoN" = ( -/obj/item/ammo_casing{ - dir = 8; - icon_state = "casing_6" - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"hoY" = ( -/obj/structure/surface/rack, -/obj/item/frame/table/almayer, -/obj/item/frame/table/almayer, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/civres) +"hoT" = ( +/obj/effect/landmark/survivor_spawner, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) "hoZ" = ( /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) @@ -11935,17 +11973,12 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/security) -"hpr" = ( -/obj/item/device/binoculars/civ, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, +"hpn" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" + icon_state = "darkbrown2" }, -/area/fiorina/station/lowsec) +/area/fiorina/tumor/aux_engi) "hpz" = ( /obj/structure/ice/thin/indestructible{ dir = 1; @@ -11954,32 +11987,23 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/station/research_cells) -"hpJ" = ( -/obj/structure/bed/roller, -/obj/structure/machinery/filtration/console{ - pixel_y = 22; - can_block_movement = 0 - }, -/obj/item/trash/used_stasis_bag, -/turf/open/floor/plating/prison, -/area/fiorina/station/medbay) -"hpN" = ( -/obj/structure/prop/almayer/computers/mission_planning_system{ - density = 0; - desc = "Its a telephone, and a computer. Woah."; - name = "\improper funny telephone booth"; - pixel_x = 2; - pixel_y = 21 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) "hpW" = ( /obj/item/stack/cable_coil/orange, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) +"hpX" = ( +/obj/effect/spawner/random/toolbox, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) +"hqb" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/telecomm/lz1_tram) "hqc" = ( /obj/structure/bed/chair/wood/normal, /turf/open/floor/carpet, @@ -11990,65 +12014,132 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"hqF" = ( -/obj/structure/prop/souto_land/pole{ +"hqG" = ( +/obj/structure/platform{ dir = 1 }, -/obj/structure/prop/souto_land/pole{ - dir = 8; - pixel_y = 24 +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 5 + }, +/turf/open/floor/prison{ + dir = 9; + icon_state = "whitegreen" }, +/area/fiorina/tumor/ice_lab) +"hqO" = ( /turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, +/area/fiorina/lz/near_lzII) +"hqX" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/structure/machinery/light/double/blue{ dir = 4; - icon_state = "darkbrown2" + pixel_x = 10; + pixel_y = 13 }, -/area/fiorina/station/park) -"hqZ" = ( -/obj/structure/surface/rack, -/obj/item/storage/firstaid/adv, -/obj/item/storage/firstaid/adv, -/obj/item/storage/firstaid/toxin, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "yellowfull" }, -/area/fiorina/station/medbay) +/area/fiorina/station/lowsec) +"hre" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/obj/item/device/flashlight, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"hrl" = ( +/obj/structure/bed/sofa/vert/grey, +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_tram) "hro" = ( /obj/structure/girder, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"hrX" = ( -/obj/structure/largecrate/random/case/double, +"hrw" = ( /turf/open/floor/prison{ - icon_state = "darkyellow2" + dir = 4; + icon_state = "darkpurple2" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/tumor/servers) +"hrz" = ( +/obj/structure/prop/almayer/computers/mission_planning_system{ + density = 0; + desc = "Its a telephone, and a computer. Woah."; + name = "\improper funny telephone booth"; + pixel_x = 2; + pixel_y = 21 + }, +/obj/structure/prop/almayer/computers/mission_planning_system{ + density = 0; + desc = "Its a telephone, and a computer. Woah."; + name = "\improper funny telephone booth"; + pixel_x = 2; + pixel_y = 21 + }, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"hrA" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) +"hrB" = ( +/obj/item/tool/weldingtool, +/turf/open/floor/prison, +/area/fiorina/station/security) +"hrL" = ( +/obj/structure/machinery/shower{ + dir = 1; + pixel_y = -1 + }, +/obj/structure/machinery/shower{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/fiorina/station/lowsec) "hsc" = ( /obj/structure/cable/heavyduty{ icon_state = "4-8" }, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"hsd" = ( -/obj/item/device/flashlight/flare, +"hsf" = ( +/obj/structure/bed/chair{ + dir = 8 + }, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + dir = 1; + icon_state = "darkbrown2" }, -/area/fiorina/station/telecomm/lz1_cargo) -"hss" = ( -/obj/structure/stairs/perspective{ +/area/fiorina/station/park) +"hsl" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "darkpurple2" + }, +/area/fiorina/tumor/servers) +"hsz" = ( +/obj/structure/machinery/light/double/blue{ dir = 1; - icon_state = "p_stair_full" + pixel_y = 21 }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"hsA" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + dir = 5; + icon_state = "yellow" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/disco) "hsC" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/door/window/southleft, @@ -12067,37 +12158,92 @@ }, /turf/open/floor/prison/chapel_carpet, /area/fiorina/maintenance) +"htq" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/ammo_magazine/rifle/m16{ + current_rounds = 0 + }, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) "htt" = ( /turf/closed/shuttle/ert, /area/fiorina/station/power_ring) -"htL" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/clipboard, +"htD" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "floor_plate" + }, +/area/fiorina/tumor/aux_engi) +"htO" = ( +/obj/item/ammo_casing{ + dir = 8; + icon_state = "casing_6" + }, +/obj/structure/barricade/metal{ + dir = 8; + health = 150; + icon_state = "metal_2" + }, +/obj/effect/spawner/random/gun/smg, +/turf/open/floor/prison{ + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) +"htT" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/prison{ + dir = 4; + icon_state = "bluecorner" }, /area/fiorina/station/power_ring) -"hue" = ( -/obj/effect/decal/cleanable/blood, +"htX" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "green" + }, +/area/fiorina/station/chapel) +"hub" = ( +/obj/structure/barricade/wooden{ + dir = 8 + }, /turf/open/floor/prison{ dir = 1; - icon_state = "darkbrowncorners2" + icon_state = "darkbrown2" }, /area/fiorina/station/park) "hul" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) +"huB" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/recharger{ + pixel_y = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/security) "huD" = ( /obj/item/tool/crowbar, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"huI" = ( -/obj/structure/reagent_dispensers/water_cooler, +"huG" = ( +/obj/item/tool/wirecutters, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "floor_plate" }, -/area/fiorina/station/security) +/area/fiorina/station/lowsec) +"huJ" = ( +/obj/structure/prop/almayer/computers/sensor_computer1{ + name = "computer" + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/station/lowsec) "hva" = ( /obj/structure/bed/chair/office/light{ dir = 4 @@ -12116,93 +12262,74 @@ icon_state = "plate" }, /area/fiorina/station/civres_blue) -"hvh" = ( -/obj/item/stack/tile/plasteel{ - pixel_x = 3; - pixel_y = 4 +"hvp" = ( +/obj/effect/landmark/monkey_spawn, +/turf/open/floor/prison{ + dir = 4; + icon_state = "whitegreen" }, +/area/fiorina/tumor/ice_lab) +"hvF" = ( +/obj/structure/grille, +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) +"hvL" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/civres_blue) -"hvi" = ( -/obj/effect/decal/medical_decals{ - icon_state = "docstripingdir" +/area/fiorina/tumor/aux_engi) +"hwr" = ( +/obj/item/prop/helmetgarb/spacejam_tickets{ + desc = "A ticket to Souto Man's raffle!"; + name = "\improper Souto Raffle Ticket"; + pixel_x = 7; + pixel_y = 6 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 8; + icon_state = "blue" }, -/area/fiorina/station/medbay) -"hvE" = ( +/area/fiorina/station/chapel) +"hwN" = ( +/obj/structure/inflatable/popped/door, +/turf/open/floor/prison{ + dir = 4; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) +"hwS" = ( /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/security/wardens) +"hxj" = ( /obj/structure/machinery/light/double/blue{ dir = 4; pixel_x = 10; pixel_y = 13 }, -/obj/structure/platform{ - dir = 1 - }, -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/platform_decoration{ - dir = 9 - }, -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/disco) -"hvF" = ( -/obj/structure/grille, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) -"hvG" = ( -/obj/item/weapon/gun/rifle/m16, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/prison, -/area/fiorina/station/security) -"hwn" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" - }, -/area/fiorina/tumor/aux_engi) -"hxg" = ( -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" - }, -/area/fiorina/maintenance) -"hxi" = ( -/obj/item/roller, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) -"hxk" = ( -/obj/structure/platform{ - dir = 4 - }, +/obj/structure/platform_decoration, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/transit_hub) +/area/fiorina/station/disco) "hxq" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz1_cargo) -"hxy" = ( -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"hxC" = ( -/turf/open/floor/prison{ - icon_state = "darkbrowncorners2" +"hxG" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8 }, -/area/fiorina/tumor/aux_engi) +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/turf/open/space/basic, +/area/fiorina/oob) "hxJ" = ( /obj/structure/sign/poster{ icon_state = "poster12"; @@ -12219,57 +12346,71 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/station/research_cells) -"hxU" = ( -/obj/item/shard{ - icon_state = "medium" - }, +"hyc" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrowncorners2" + }, +/area/fiorina/maintenance) +"hyo" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, -/area/fiorina/station/chapel) -"hyz" = ( /turf/open/floor/prison{ - icon_state = "platingdmg1" + icon_state = "sterile_white" }, /area/fiorina/station/civres_blue) -"hyG" = ( -/obj/structure/platform_decoration{ - dir = 4 - }, -/obj/item/clothing/gloves/botanic_leather, +"hyq" = ( +/obj/structure/closet/crate/medical, +/obj/item/tool/surgery/bonegel, +/obj/item/tool/surgery/bonegel, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/botany) -"hyR" = ( -/obj/structure/platform{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 8; - icon_state = "greenblue" - }, -/area/fiorina/station/botany) +/area/fiorina/station/medbay) +"hys" = ( +/obj/structure/grille, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "hyT" = ( /turf/closed/shuttle/ert{ icon_state = "stan_leftengine" }, /area/fiorina/tumor/aux_engi) -"hyX" = ( -/obj/structure/barricade/wooden{ - dir = 4 +"hzi" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/processor{ + desc = "It CAN blend it."; + icon_state = "blender_e"; + name = "Blendomatic"; + pixel_x = -2; + pixel_y = 10 + }, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "kitchen" }, /area/fiorina/station/civres_blue) -"hzq" = ( -/obj/item/storage/fancy/cigarettes/lucky_strikes, -/obj/structure/surface/table/reinforced/prison, +"hzv" = ( +/obj/structure/window/framed/prison, /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/medbay) +"hzF" = ( +/obj/structure/barricade/wooden{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) "hzG" = ( /obj/structure/machinery/landinglight/ds2/delaythree{ dir = 8; @@ -12279,46 +12420,65 @@ icon_state = "wy4" }, /area/fiorina/station/medbay) -"hAp" = ( -/obj/structure/disposalpipe/segment{ - color = "#c4c4c4"; - dir = 2; - layer = 6; - name = "overhead pipe"; - pixel_x = -16; - pixel_y = 12 - }, +"hzL" = ( +/obj/effect/landmark/xeno_spawn, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkpurple2" + icon_state = "darkbrowncorners2" }, -/area/fiorina/tumor/servers) -"hAL" = ( -/obj/structure/closet/secure_closet/guncabinet{ - req_access = null +/area/fiorina/tumor/aux_engi) +"hAs" = ( +/obj/structure/reagent_dispensers/water_cooler{ + pixel_x = -9; + pixel_y = 8 + }, +/obj/structure/reagent_dispensers/water_cooler{ + pixel_x = 11; + pixel_y = 8 + }, +/obj/structure/reagent_dispensers/water_cooler{ + pixel_x = 1; + pixel_y = 8 }, -/obj/item/weapon/gun/smg/mp5, -/obj/item/storage/belt/marine, -/obj/item/clothing/under/marine/ua_riot, -/obj/item/clothing/suit/storage/marine/veteran/ua_riot, -/obj/item/prop/helmetgarb/riot_shield, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) +"hAI" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/area/fiorina/station/security) -"hAY" = ( -/obj/item/stack/tile/plasteel, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/tumor/aux_engi) -"hBn" = ( -/obj/item/device/flashlight/lamp/tripod, +"hAP" = ( +/obj/item/clothing/under/stowaway, +/obj/structure/machinery/shower{ + pixel_y = 13 + }, /turf/open/floor/prison{ - dir = 6; - icon_state = "darkyellow2" + icon_state = "kitchen" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/lowsec) +"hAX" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "darkpurple2" + }, +/area/fiorina/tumor/ice_lab) +"hBc" = ( +/obj/structure/inflatable, +/turf/open/floor/prison{ + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"hBf" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkbrown2" + }, +/area/fiorina/tumor/aux_engi) "hBF" = ( /obj/structure/window_frame/prison/reinforced, /obj/item/stack/sheet/glass/reinforced{ @@ -12326,122 +12486,116 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"hBI" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/device/megaphone, +"hCc" = ( +/obj/item/reagent_container/food/snacks/meat, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/park) +"hCh" = ( +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) +"hCk" = ( +/obj/item/poster, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/tumor/ice_lab) -"hBP" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/phone{ - pixel_x = 7; - pixel_y = -16 + icon_state = "floor_plate" }, -/obj/item/phone{ - pixel_x = -3; - pixel_y = 16 +/area/fiorina/station/security) +"hCp" = ( +/obj/structure/prop/invuln{ + desc = "Floating cells are reserved for highly dangerous criminals. Whoever is out there is probably best left out there."; + icon = 'icons/obj/structures/doors/celldoor.dmi'; + icon_state = "door_closed"; + layer = 2.5; + name = "cell door" }, +/obj/structure/blocker/invisible_wall, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/security) -"hBX" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +/area/fiorina/tumor/servers) +"hCR" = ( +/obj/item/stack/sheet/wood, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "whitepurple" }, +/area/fiorina/station/research_cells) +"hDb" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "kitchen" }, -/area/fiorina/station/medbay) -"hCc" = ( -/obj/item/reagent_container/food/snacks/meat, -/turf/open/floor/plating/plating_catwalk/prison, -/area/fiorina/station/park) -"hCd" = ( -/obj/structure/barricade/metal/wired, +/area/fiorina/station/civres_blue) +"hDl" = ( +/obj/structure/machinery/photocopier, /turf/open/floor/prison{ - dir = 8; - icon_state = "yellow" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/lowsec) -"hCS" = ( +/area/fiorina/station/medbay) +"hDm" = ( +/obj/item/trash/burger, /obj/effect/landmark/monkey_spawn, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/chapel) -"hCT" = ( -/obj/item/stack/tile/plasteel, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/tumor/ice_lab) +"hDS" = ( +/obj/structure/platform{ + dir = 4 }, -/area/fiorina/tumor/civres) -"hCX" = ( -/obj/effect/landmark/wo_supplies/storage/belts/knifebelt, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) -"hDr" = ( -/obj/item/stool, -/turf/open/floor/prison{ - dir = 10; - icon_state = "damaged2" +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, -/area/fiorina/station/lowsec) -"hDx" = ( /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"hDy" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" +/area/fiorina/station/power_ring) +"hDV" = ( +/obj/effect/decal/medical_decals{ + icon_state = "docdecal1" }, -/area/fiorina/station/medbay) -"hDL" = ( +/obj/item/stack/cable_coil/blue, /turf/open/floor/prison{ dir = 10; - icon_state = "darkyellow2" + icon_state = "sterile_white" }, -/area/fiorina/station/telecomm/lz1_tram) +/area/fiorina/station/medbay) "hEb" = ( /turf/closed/shuttle/ert{ icon_state = "wy20" }, /area/fiorina/station/medbay) +"hEk" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/fiorina/station/flight_deck) "hEs" = ( /obj/structure/extinguisher_cabinet, /turf/closed/wall/prison, /area/fiorina/station/research_cells) -"hFe" = ( -/obj/structure/barricade/handrail/type_b{ - layer = 3.4 - }, -/obj/structure/barricade/handrail/type_b{ - dir = 8 - }, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +"hEv" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, -/area/fiorina/tumor/ice_lab) -"hFn" = ( -/obj/structure/inflatable/popped/door, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"hEZ" = ( /turf/open/floor/prison{ - dir = 9; - icon_state = "whitepurple" + icon_state = "platingdmg3" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/security) +"hFC" = ( +/obj/item/disk, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) "hFH" = ( /obj/item/gift, /obj/item/prop/helmetgarb/spacejam_tickets{ @@ -12450,29 +12604,49 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"hGz" = ( -/obj/item/clothing/gloves/botanic_leather, +"hFW" = ( +/obj/effect/spawner/random/tool, /turf/open/floor/prison{ - dir = 8; - icon_state = "greenblue" + dir = 1; + icon_state = "whitepurple" }, -/area/fiorina/station/botany) -"hGC" = ( -/obj/structure/platform{ - dir = 8 +/area/fiorina/station/research_cells) +"hGg" = ( +/obj/structure/sign/poster{ + desc = "You are becoming hysterical."; + icon_state = "poster11"; + pixel_x = -24 }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/medbay) +"hGn" = ( +/obj/structure/bed/sofa/vert/grey/bot, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) +"hGu" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/fancy/vials/random, /turf/open/floor/prison{ dir = 10; - icon_state = "greenblue" + icon_state = "whitegreenfull" }, -/area/fiorina/station/botany) -"hGZ" = ( -/obj/item/stack/cable_coil, +/area/fiorina/station/medbay) +"hGy" = ( +/obj/structure/inflatable/popped/door, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) +"hGW" = ( +/obj/effect/decal/cleanable/blood, +/obj/structure/bed{ + icon_state = "abed" + }, +/obj/effect/landmark/corpsespawner/ua_riot, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" + icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) +/area/fiorina/station/telecomm/lz1_cargo) "hHc" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/device/flashlight/lamp/candelabra{ @@ -12487,138 +12661,98 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"hHh" = ( -/obj/structure/machinery/landinglight/ds1/delayone, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/lz/near_lzI) "hHq" = ( /obj/structure/closet/cabinet, /obj/effect/landmark/objective_landmark/close, /turf/open/floor/wood, /area/fiorina/station/civres_blue) -"hHv" = ( -/obj/structure/platform{ - dir = 1 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) -"hIe" = ( -/obj/structure/machinery/vending/snack, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) -"hIo" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +"hHr" = ( +/obj/item/tool/warning_cone, /turf/open/floor/prison{ - dir = 1; + dir = 8; icon_state = "darkbrown2" }, -/area/fiorina/tumor/aux_engi) -"hIu" = ( +/area/fiorina/station/park) +"hHC" = ( +/obj/structure/prop/souto_land/streamer{ + dir = 4; + pixel_y = 24 + }, /obj/structure/bed/chair{ - dir = 8 + dir = 1 }, +/obj/effect/landmark/corpsespawner/security/liaison, /turf/open/floor/prison{ - dir = 8; - icon_state = "blue" + dir = 4; + icon_state = "darkbrown2" }, -/area/fiorina/station/power_ring) -"hJc" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" +/area/fiorina/station/park) +"hHH" = ( +/obj/effect/decal/cleanable/blood{ + desc = "Watch your step."; + icon_state = "gib6" }, -/area/fiorina/tumor/aux_engi) -"hJw" = ( -/turf/open/floor/prison{ +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_cargo) +"hHX" = ( +/obj/structure/toilet{ dir = 4; - icon_state = "bluecorner" + pixel_y = 8 }, -/area/fiorina/station/civres_blue) -"hKE" = ( -/obj/structure/inflatable, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ - dir = 10; + dir = 9; icon_state = "yellow" }, /area/fiorina/station/lowsec) -"hKI" = ( -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"hKJ" = ( -/obj/structure/closet/emcloset, -/obj/item/storage/pill_bottle/kelotane/skillless, +"hIO" = ( +/obj/structure/largecrate/random/barrel/green, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) -"hKW" = ( -/obj/structure/closet/crate/science{ - density = 0; - icon_state = "open_science"; - opened = 1 +/area/fiorina/station/medbay) +"hIX" = ( +/obj/structure/machinery/power/apc{ + dir = 1 }, -/obj/item/organ/lungs, -/obj/structure/machinery/light/double/blue{ +/turf/open/floor/prison{ dir = 1; - pixel_y = 21 + icon_state = "green" }, -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"hLt" = ( -/obj/structure/machinery/photocopier, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 +/area/fiorina/station/chapel) +"hJo" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 }, +/obj/item/reagent_container/food/drinks/flask/barflask, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitepurple" }, -/area/fiorina/tumor/civres) -"hLy" = ( -/obj/structure/machinery/light/double/blue, +/area/fiorina/station/research_cells) +"hKN" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "sterile_white" }, -/area/fiorina/lz/near_lzII) -"hLz" = ( -/turf/closed/wall/prison, -/area/fiorina/lz/near_lzII) -"hLK" = ( -/obj/structure/machinery/landinglight/ds2{ - dir = 8 +/area/fiorina/station/civres_blue) +"hKP" = ( +/obj/structure/platform{ + dir = 4 }, +/obj/item/tool/shovel/spade, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 9; + icon_state = "greenfull" }, +/area/fiorina/station/botany) +"hLz" = ( +/turf/closed/wall/prison, /area/fiorina/lz/near_lzII) "hLM" = ( /obj/structure/sign/safety/bulkhead_door, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/tumor/fiberbush) -"hLO" = ( -/obj/structure/bed/sofa/south/grey/right, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"hLX" = ( -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_sn_full_cap" - }, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/ice_lab) "hMf" = ( /obj/item/tool/candle{ pixel_x = -2; @@ -12626,50 +12760,53 @@ }, /turf/open/floor/wood, /area/fiorina/station/chapel) -"hMg" = ( -/obj/item/clothing/head/helmet/marine/specialist/hefa, -/turf/open/floor/prison, -/area/fiorina/station/park) -"hMK" = ( -/obj/effect/landmark/nightmare{ - insert_tag = "pizzatime" +"hMj" = ( +/obj/item/ammo_magazine/rifle/m16{ + current_rounds = 0 }, -/turf/closed/wall/r_wall/prison_unmeltable, -/area/fiorina/station/power_ring) -"hMX" = ( -/obj/item/weapon/twohanded/spear, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) +"hMA" = ( +/obj/item/tool/crowbar, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "whitegreen" }, -/area/fiorina/station/research_cells) -"hNc" = ( +/area/fiorina/station/medbay) +"hMH" = ( /obj/item/newspaper, /turf/open/floor/prison{ dir = 4; icon_state = "red" }, /area/fiorina/lz/near_lzII) -"hNY" = ( -/obj/item/stack/rods, -/turf/open/floor/plating/prison, -/area/fiorina/station/chapel) -"hOg" = ( -/obj/structure/largecrate/random/barrel, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +"hMK" = ( +/obj/effect/landmark/nightmare{ + insert_tag = "pizzatime" }, -/area/fiorina/station/medbay) -"hOz" = ( -/obj/item/clothing/accessory/armband/cargo{ - desc = "Sworn to the shrapnel and the shards therein. So sayeth her command when the first detonation occured."; - name = "HEFA Order milita armband" +/turf/closed/wall/r_wall/prison_unmeltable, +/area/fiorina/station/power_ring) +"hNj" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/box/cups, +/obj/item/storage/fancy/cigarettes/arcturian_ace{ + pixel_x = -6; + pixel_y = 20 + }, +/obj/item/storage/fancy/cigarettes/arcturian_ace{ + pixel_x = 6; + pixel_y = 20 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "bluecorner" + icon_state = "floor_plate" }, +/area/fiorina/station/power_ring) +"hNU" = ( +/obj/structure/janitorialcart, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"hNY" = ( +/obj/item/stack/rods, +/turf/open/floor/plating/prison, /area/fiorina/station/chapel) "hOA" = ( /obj/structure/sink{ @@ -12678,51 +12815,65 @@ }, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"hOR" = ( -/obj/structure/platform{ - dir = 8 +"hOG" = ( +/obj/structure/inflatable/popped/door, +/turf/open/floor/prison{ + dir = 9; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"hOQ" = ( +/obj/structure/platform_decoration{ + dir = 4 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, +/area/fiorina/station/central_ring) +"hPi" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_ew_full_cap" + }, +/obj/structure/platform/stair_cut, +/turf/open/floor/plating/prison, /area/fiorina/station/park) -"hOW" = ( +"hPq" = ( +/obj/structure/machinery/power/apc, /turf/open/floor/prison{ - icon_state = "floorscorched2" - }, -/area/fiorina/station/civres_blue) -"hPs" = ( -/obj/item/ammo_magazine/rifle/m16{ - current_rounds = 0 + dir = 4; + icon_state = "blue_plate" }, +/area/fiorina/station/botany) +"hPu" = ( +/obj/effect/spawner/random/tool, /turf/open/floor/prison{ - icon_state = "yellow" + dir = 1; + icon_state = "bluecorner" }, -/area/fiorina/station/lowsec) -"hPF" = ( -/obj/structure/reagent_dispensers/water_cooler{ - density = 0; - pixel_x = -8; - pixel_y = 16 +/area/fiorina/station/power_ring) +"hPL" = ( +/obj/item/tool/wrench, +/turf/open/floor/prison{ + dir = 6; + icon_state = "darkpurple2" }, +/area/fiorina/tumor/servers) +"hPN" = ( +/obj/item/stack/sheet/metal, /turf/open/floor/prison, -/area/fiorina/tumor/ice_lab) -"hPW" = ( -/obj/structure/monorail{ - name = "launch track" +/area/fiorina/station/security) +"hPO" = ( +/obj/effect/spawner/random/gun/rifle/highchance, +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkyellow2" }, -/turf/open/floor/plating/prison, -/area/fiorina/station/telecomm/lz1_tram) +/area/fiorina/lz/near_lzI) "hPY" = ( /obj/structure/surface/rack, /turf/open/floor/wood, /area/fiorina/station/chapel) -"hQg" = ( -/obj/item/bedsheet, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/fiorina/station/lowsec) "hQh" = ( /obj/structure/barricade/handrail/type_b{ dir = 8; @@ -12730,61 +12881,123 @@ }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"hQH" = ( -/obj/item/reagent_container/food/snacks/clownstears, -/obj/structure/closet/crate, +"hQj" = ( +/obj/structure/barricade/handrail{ + dir = 1; + pixel_y = 2 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/security) +"hQk" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 + }, /turf/open/floor/plating/prison, -/area/fiorina/station/civres_blue) +/area/fiorina/oob) +"hQM" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) +"hQQ" = ( +/obj/structure/largecrate/supply/supplies/tables_racks, +/turf/open/floor/prison{ + dir = 10; + icon_state = "yellow" + }, +/area/fiorina/station/disco) +"hQR" = ( +/obj/structure/barricade/metal/wired{ + dir = 1 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"hQT" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 + }, +/obj/item/stack/barbed_wire, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"hRb" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/lz/near_lzII) "hRs" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/corsat{ icon_state = "plate" }, /area/fiorina/tumor/aux_engi) -"hRV" = ( -/obj/structure/machinery/cm_vending/sorted/medical/no_access, -/obj/structure/window/reinforced{ - dir = 8; - health = 80 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) "hRX" = ( /turf/open/gm/river{ color = "#995555"; name = "pool" }, /area/fiorina/station/park) -"hSf" = ( -/obj/item/dogtag, +"hSk" = ( +/obj/structure/toilet, /turf/open/floor/prison{ - dir = 8; - icon_state = "blue" + icon_state = "sterile_white" }, /area/fiorina/station/civres_blue) -"hSF" = ( -/obj/structure/surface/table/reinforced/prison, +"hSl" = ( +/obj/structure/platform, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) +/area/fiorina/station/disco) +"hSo" = ( +/obj/structure/barricade/wooden{ + dir = 4 + }, +/obj/item/tool/crowbar/red, +/obj/structure/stairs/perspective{ + icon_state = "p_stair_ew_full_cap" + }, +/obj/structure/platform/stair_cut/alt, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/station/medbay) +"hSA" = ( +/obj/item/reagent_container/food/drinks/bottle/tomatojuice, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/aux_engi) +"hSG" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" + }, +/area/fiorina/tumor/fiberbush) "hSH" = ( /obj/item/reagent_container/food/snacks/donkpocket, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"hSL" = ( -/obj/effect/decal/hefa_cult_decals/d32{ - icon_state = "2" +"hSO" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"hSR" = ( -/obj/structure/window/reinforced, -/turf/open/floor/prison, -/area/fiorina/station/security) +/area/fiorina/lz/near_lzI) "hTf" = ( /obj/structure/prop/structure_lattice{ dir = 4; @@ -12796,88 +13009,85 @@ icon_state = "squares" }, /area/fiorina/station/telecomm/lz1_cargo) -"hTm" = ( -/obj/structure/machinery/landinglight/ds2{ - dir = 4 +"hTh" = ( +/obj/structure/machinery/landinglight/ds1/delaytwo{ + dir = 8 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/lz/near_lzII) -"hTr" = ( -/obj/structure/closet, -/obj/item/clothing/mask/gas/clown_hat, -/obj/effect/spawner/random/gun/shotgun/midchance, -/obj/item/clothing/under/marine/ucf_clown, -/turf/open/floor/plating/prison, -/area/fiorina/maintenance) +/area/fiorina/lz/near_lzI) +"hTo" = ( +/obj/item/smallDelivery, +/obj/structure/closet/fireaxecabinet{ + pixel_y = 32 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) "hTs" = ( /turf/closed/shuttle/elevator{ dir = 10 }, /area/fiorina/station/civres_blue) -"hTt" = ( -/turf/open/floor/prison{ - dir = 9; - icon_state = "darkpurple2" - }, -/area/fiorina/tumor/ice_lab) -"hTG" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" +"hTy" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/central_ring) "hTM" = ( /obj/item/stack/rods, /turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) -"hUf" = ( -/obj/effect/landmark/monkey_spawn, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"hUh" = ( -/turf/open/floor/prison{ - dir = 5; - icon_state = "darkpurple2" +"hTN" = ( +/obj/structure/platform_decoration/kutjevo, +/obj/structure/platform/kutjevo/smooth{ + dir = 1 }, -/area/fiorina/tumor/ice_lab) +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/turf/open/space, +/area/fiorina/oob) "hUi" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating/prison, /area/fiorina/station/park) -"hUH" = ( -/obj/structure/closet/secure_closet/security_empty, -/obj/structure/window/reinforced{ - dir = 8 +"hUj" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/technology_scanner, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"hUD" = ( +/obj/item/stack/rods, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greencorner" + }, +/area/fiorina/station/chapel) +"hUL" = ( +/obj/structure/sink{ + pixel_y = 23 + }, +/obj/item/paper_bin{ + pixel_x = -11; + pixel_y = -5 }, -/obj/item/storage/box/flashbangs, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/security) +/area/fiorina/station/medbay) "hUO" = ( /turf/open/floor/prison/chapel_carpet{ dir = 1; icon_state = "doubleside" }, /area/fiorina/maintenance) -"hUV" = ( -/obj/item/clothing/head/helmet/marine/veteran/ua_riot, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/security) -"hVm" = ( -/obj/item/trash/cigbutt/bcigbutt, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/fiorina/station/security) "hVu" = ( /obj/item/stack/sheet/metal, /obj/structure/cable/heavyduty{ @@ -12885,15 +13095,13 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"hVz" = ( -/obj/structure/closet/crate/miningcar{ - name = "\improper materials storage bin" - }, -/obj/item/reagent_container/food/snacks/meat, +"hVA" = ( +/obj/structure/largecrate/random/case, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitepurple" }, -/area/fiorina/station/security) +/area/fiorina/station/research_cells) "hVG" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ dir = 1; @@ -12909,188 +13117,266 @@ /obj/structure/lattice, /turf/open/space/basic, /area/fiorina/oob) -"hWB" = ( -/obj/item/device/flashlight/lamp/tripod, +"hWb" = ( +/obj/structure/machinery/photocopier{ + pixel_y = 4 + }, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "darkredfull2" }, -/area/fiorina/tumor/ice_lab) -"hWF" = ( -/obj/structure/machinery/door/airlock/prison_hatch/autoname{ - dir = 1 +/area/fiorina/station/security) +"hWi" = ( +/obj/structure/machinery/door/airlock/almayer/maint/autoname{ + dir = 1; + name = "\improper Null Hatch REPLACE ME"; + req_access = null; + req_one_access = null }, -/turf/open/floor/plating/plating_catwalk, -/area/fiorina/tumor/ship) -"hWJ" = ( -/obj/item/trash/sosjerky, +/turf/open/floor/plating/prison, +/area/fiorina/station/medbay) +"hWk" = ( +/obj/effect/decal/cleanable/blood, +/obj/effect/spawner/random/gun/rifle/lowchance, /turf/open/floor/prison{ - dir = 8; + dir = 9; icon_state = "darkyellow2" }, -/area/fiorina/station/flight_deck) -"hWU" = ( -/obj/effect/landmark/monkey_spawn, +/area/fiorina/lz/near_lzI) +"hWv" = ( +/obj/structure/surface/rack, +/obj/item/tool/crowbar/red, +/obj/item/storage/pill_bottle/inaprovaline/skillless, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"hWz" = ( +/obj/structure/platform{ + dir = 1 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) -"hXc" = ( +/area/fiorina/station/botany) +"hWF" = ( +/obj/structure/machinery/door/airlock/prison_hatch/autoname{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/fiorina/tumor/ship) +"hWG" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/paper_bin{ - pixel_y = 7 +/obj/item/device/radio{ + pixel_y = 8 }, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "floor_plate" }, /area/fiorina/station/power_ring) -"hXi" = ( -/obj/structure/surface/rack, +"hXF" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/toolbox, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/power_ring) +"hXG" = ( +/obj/structure/barricade/metal/wired{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) +"hXN" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/ashtray/plastic, +/obj/item/trash/cigbutt, +/obj/item/trash/cigbutt/ucigbutt{ + pixel_x = 5; + pixel_y = 12 + }, +/obj/item/weapon/gun/pistol/heavy, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"hXX" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/chapel) "hXZ" = ( /turf/closed/shuttle/ert{ icon_state = "wy2" }, /area/fiorina/station/medbay) -"hYK" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"hYT" = ( -/obj/item/disk/botany, +"hYl" = ( +/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue_plate" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/botany) -"hYV" = ( -/obj/structure/prop/resin_prop{ - dir = 4; - icon_state = "chair"; - pixel_y = 6 +/area/fiorina/station/medbay) +"hYs" = ( +/obj/structure/barricade/sandbags{ + icon_state = "sandbag_0"; + layer = 2.97; + pixel_y = -14 }, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"hYx" = ( +/obj/item/tool/wet_sign, +/obj/item/tool/mop{ + pixel_x = -6; + pixel_y = -1 + }, +/turf/open/floor/prison, +/area/fiorina/station/security) +"hYX" = ( +/obj/structure/machinery/bot/medbot, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, -/area/fiorina/tumor/ice_lab) -"hZp" = ( -/obj/structure/stairs/perspective{ +/area/fiorina/station/medbay) +"hZf" = ( +/obj/structure/machinery/portable_atmospherics/powered/scrubber, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"hZi" = ( +/turf/open/floor/prison{ + icon_state = "darkyellow2" + }, +/area/fiorina/station/telecomm/lz1_tram) +"hZG" = ( +/obj/structure/machinery/light/double/blue{ dir = 4; - icon_state = "p_stair_sn_full_cap" + pixel_x = 10; + pixel_y = -3 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue" + icon_state = "bluefull" }, -/area/fiorina/station/chapel) +/area/fiorina/station/power_ring) +"hZN" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkbrowncorners2" + }, +/area/fiorina/maintenance) "hZR" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"iah" = ( -/obj/item/ammo_casing{ - dir = 8; - icon_state = "cartridge_2" - }, +"iaa" = ( /turf/open/floor/prison{ dir = 8; - icon_state = "darkyellow2" + icon_state = "cell_stripe" }, -/area/fiorina/station/flight_deck) -"iaO" = ( +/area/fiorina/station/disco) +"iad" = ( +/obj/item/device/multitool, /turf/open/floor/prison{ - dir = 6; - icon_state = "blue" + dir = 9; + icon_state = "green" }, -/area/fiorina/tumor/servers) -"ibb" = ( -/obj/item/trash/used_stasis_bag{ - desc = "Wow, instant sand. They really have everything in space."; - name = "Insta-Sand! bag" +/area/fiorina/tumor/civres) +"iaE" = ( +/obj/structure/prop/structure_lattice{ + dir = 4 + }, +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) -"ibN" = ( +/area/fiorina/tumor/aux_engi) +"ibl" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "yellowcorner" - }, -/area/fiorina/station/lowsec) -"icj" = ( -/obj/effect/decal/medical_decals{ - icon_state = "triagedecalbottom" + dir = 9; + icon_state = "darkyellow2" }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" +/area/fiorina/lz/near_lzI) +"ibz" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" }, -/area/fiorina/station/medbay) -"ick" = ( -/obj/item/tool/candle, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/prison/chapel_carpet, -/area/fiorina/maintenance) -"icK" = ( -/obj/effect/decal/cleanable/blood/splatter{ - icon_state = "gibmid3" +/turf/open/floor/prison, +/area/fiorina/station/security) +"ibA" = ( +/obj/structure/barricade/metal/wired{ + health = 120; + icon_state = "metal_2" }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"icg" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 9; + icon_state = "whitegreen" }, -/area/fiorina/station/medbay) +/area/fiorina/tumor/ice_lab) +"icu" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/pizzabox/mushroom, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) "icS" = ( /obj/structure/bed/chair{ dir = 1 }, /turf/open/floor/wood, /area/fiorina/station/park) +"icT" = ( +/obj/structure/largecrate/random/case, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"idb" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/chapel) "idi" = ( /obj/item/trash/sosjerky, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"idq" = ( -/obj/item/ammo_casing{ - icon_state = "casing_5" - }, +"idj" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/briefcase/inflatable, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" + icon_state = "yellowfull" }, -/area/fiorina/lz/near_lzI) -"idE" = ( -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"idT" = ( -/obj/structure/barricade/wooden{ - dir = 4; - pixel_y = 4 +/area/fiorina/station/lowsec) +"idP" = ( +/obj/structure/platform{ + dir = 1 }, -/obj/structure/barricade/wooden, -/turf/open/floor/prison{ +/obj/structure/machinery/light/double/blue{ dir = 1; - icon_state = "whitegreen" + pixel_y = 21 }, -/area/fiorina/station/medbay) -"idV" = ( -/obj/structure/largecrate/random/secure, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, /area/fiorina/tumor/ice_lab) -"ied" = ( +"idS" = ( +/obj/structure/largecrate/random, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) +"iea" = ( /turf/open/floor/prison{ - dir = 9; - icon_state = "blue" + dir = 1; + icon_state = "whitegreencorner" }, -/area/fiorina/tumor/servers) +/area/fiorina/station/medbay) "ieu" = ( /obj/structure/platform{ dir = 4 @@ -13107,21 +13393,23 @@ icon_state = "squares" }, /area/fiorina/station/medbay) -"ieU" = ( -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/filingcabinet, -/obj/effect/landmark/objective_landmark/close, +"ieA" = ( +/obj/structure/barricade/handrail/type_b, /turf/open/floor/prison, -/area/fiorina/station/power_ring) -"ieW" = ( -/obj/structure/machinery/computer3/server/rack, -/obj/structure/barricade/handrail/type_b{ - dir = 4 +/area/fiorina/lz/near_lzI) +"ieJ" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) +/area/fiorina/tumor/fiberbush) +"ifc" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/prison{ + dir = 10; + icon_state = "kitchen" + }, +/area/fiorina/tumor/civres) "ifk" = ( /obj/structure/platform_decoration{ dir = 4 @@ -13130,6 +13418,11 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) +"ifm" = ( +/turf/open/floor/prison{ + icon_state = "greencorner" + }, +/area/fiorina/tumor/civres) "ifp" = ( /obj/structure/surface/table/woodentable, /obj/structure/machinery/light/double/blue{ @@ -13140,24 +13433,10 @@ /obj/item/tool/wrench, /turf/open/floor/carpet, /area/fiorina/station/civres_blue) -"ifq" = ( -/obj/item/stock_parts/micro_laser/ultra, -/turf/open/floor/prison{ - dir = 10; - icon_state = "darkpurple2" - }, -/area/fiorina/tumor/servers) -"ifs" = ( -/obj/structure/inflatable/popped, +"ifw" = ( +/obj/structure/bed/chair/comfy, /turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"ifI" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/tool/surgery/surgicaldrill, -/turf/open/floor/prison{ - icon_state = "yellowcorner" - }, -/area/fiorina/station/lowsec) +/area/fiorina/tumor/servers) "ifJ" = ( /obj/structure/bed/chair/dropship/pilot{ dir = 1 @@ -13169,19 +13448,58 @@ }, /turf/open/floor/almayer, /area/fiorina/tumor/ship) -"igA" = ( -/obj/effect/spawner/random/gun/smg, +"ifL" = ( +/obj/item/stack/sheet/metal/medium_stack, /turf/open/floor/prison{ - dir = 8; - icon_state = "green" + icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"igD" = ( -/obj/structure/largecrate/supply/medicine/iv, +/area/fiorina/tumor/servers) +"ifN" = ( +/obj/structure/machinery/vending/cigarette/colony, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "darkyellow2" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/lz/near_lzI) +"ifP" = ( +/obj/structure/machinery/cm_vending/sorted/tech/comp_storage{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkbrown2" + }, +/area/fiorina/maintenance) +"igc" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/powercell, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/servers) +"ign" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/lz/near_lzI) +"igu" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenblue" + }, +/area/fiorina/station/botany) "igQ" = ( /obj/structure/closet/cabinet, /obj/item/clothing/under/rank/janitor, @@ -13189,188 +13507,217 @@ /obj/item/clothing/head/bio_hood/janitor, /turf/open/floor/wood, /area/fiorina/station/civres_blue) -"iht" = ( +"igV" = ( +/obj/item/stack/cable_coil, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/security) +"ihn" = ( +/obj/item/paper/crumpled, +/turf/open/floor/prison{ + dir = 10; + icon_state = "kitchen" + }, +/area/fiorina/tumor/civres) +"ihp" = ( +/obj/structure/closet/crate/science{ + density = 0; + icon_state = "open_science"; + opened = 1 + }, +/obj/item/organ/lungs, /obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 + dir = 1; + pixel_y = 21 }, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"ihv" = ( +/obj/item/stock_parts/matter_bin/super, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "darkpurple2" }, -/area/fiorina/station/civres_blue) +/area/fiorina/tumor/servers) "ihz" = ( /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/plating/plating_catwalk, /area/fiorina/tumor/ship) -"ihA" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/tool, +"ihB" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "redfull" }, -/area/fiorina/station/power_ring) -"ihC" = ( -/obj/item/tool/wrench, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"iif" = ( -/obj/structure/bed/sofa/south/grey/left, +/area/fiorina/station/security) +"ihO" = ( +/obj/structure/machinery/computer/prisoner, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/security/wardens) -"iin" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/recharger{ - pixel_y = 4 + icon_state = "redfull" }, +/area/fiorina/station/security) +"ihV" = ( +/obj/structure/blocker/invisible_wall, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 9; + icon_state = "whitepurple" }, -/area/fiorina/station/security) -"iir" = ( -/obj/item/ammo_magazine/shotgun/buckshot, +/area/fiorina/oob) +"iie" = ( +/obj/structure/surface/rack, +/obj/item/storage/firstaid/adv, +/obj/item/storage/firstaid/adv, +/obj/item/storage/firstaid/toxin, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/research_cells) -"iiE" = ( -/obj/item/device/flashlight/lamp/tripod, -/obj/structure/machinery/light/double/blue, +/area/fiorina/station/medbay) +"iiw" = ( +/obj/structure/monorail{ + dir = 6; + name = "launch track" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/transit_hub) +"iiz" = ( +/obj/structure/machinery/gibber, /turf/open/floor/prison{ - icon_state = "whitepurple" + dir = 8; + icon_state = "blue_plate" + }, +/area/fiorina/station/botany) +"iiY" = ( +/obj/structure/platform_decoration{ + dir = 1 }, -/area/fiorina/station/research_cells) -"iiP" = ( -/obj/item/stack/tile/plasteel, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/flight_deck) +/area/fiorina/station/central_ring) +"ijd" = ( +/obj/item/trash/cigbutt, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) "ijs" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/toolbox, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"ijv" = ( -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 - }, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"ijP" = ( -/obj/effect/decal/cleanable/blood/oil, +"ijt" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "yellow" + dir = 10; + icon_state = "darkbrown2" }, -/area/fiorina/station/lowsec) -"ikq" = ( +/area/fiorina/station/park) +"ijC" = ( /turf/open/floor/prison{ - dir = 5; - icon_state = "whitepurple" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/research_cells) -"ikz" = ( +/area/fiorina/lz/near_lzI) +"ika" = ( /obj/structure/bed{ icon_state = "abed" }, -/obj/item/toy/beach_ball/holoball, /turf/open/floor/prison{ - dir = 6; - icon_state = "whitepurple" + icon_state = "darkpurplefull2" }, /area/fiorina/station/research_cells) -"ikA" = ( -/obj/item/reagent_container/food/drinks/coffee{ - name = "\improper paper cup" - }, +"ikt" = ( +/obj/structure/closet/bodybag, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 9; + icon_state = "whitegreen" }, -/area/fiorina/station/lowsec) -"ilb" = ( -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" +/area/fiorina/station/medbay) +"ikF" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_27"; + layer = 3.1; + pixel_x = -2; + pixel_y = 10 }, -/area/fiorina/station/park) -"ilh" = ( -/obj/item/clothing/under/marine/ua_riot, -/obj/item/clothing/head/helmet/marine/veteran/ua_riot, /turf/open/floor/prison, -/area/fiorina/station/security) -"ilv" = ( -/obj/item/ammo_magazine/smg/mp5, -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellowcorners2" +/area/fiorina/lz/near_lzII) +"ikL" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/medbay) +"ilr" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/recharger{ + pixel_y = 4 }, -/area/fiorina/station/telecomm/lz1_cargo) -"ilI" = ( /obj/structure/machinery/light/double/blue{ - pixel_y = -1 + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - icon_state = "blue_plate" + icon_state = "redfull" + }, +/area/fiorina/station/security) +"ilM" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" }, -/area/fiorina/station/botany) -"ilX" = ( -/obj/item/stack/folding_barricade, -/obj/structure/surface/table/woodentable/fancy, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" + dir = 8; + icon_state = "blue" }, /area/fiorina/station/chapel) -"imn" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/landmark/objective_landmark/close, +"img" = ( +/obj/effect/landmark/survivor_spawner, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"imp" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 }, -/area/fiorina/station/telecomm/lz1_tram) -"imt" = ( -/turf/open/floor/almayer, -/area/fiorina/tumor/ship) -"imw" = ( -/obj/structure/bed/roller, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "blue" }, -/area/fiorina/station/medbay) +/area/fiorina/station/civres_blue) +"imt" = ( +/turf/open/floor/almayer, +/area/fiorina/tumor/ship) "imz" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/corsat{ icon_state = "squares" }, /area/fiorina/station/civres_blue) -"imH" = ( -/obj/item/tool/shovel/etool, -/turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"imL" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/fancy/cigarettes/arcturian_ace{ - pixel_x = -4; - pixel_y = 9 - }, +"imG" = ( +/obj/item/trash/chunk, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 10; + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) -"inh" = ( +/area/fiorina/station/telecomm/lz1_cargo) +"imI" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_ew_full_cap" + }, +/obj/structure/platform/stair_cut, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"imN" = ( +/obj/structure/filingcabinet/disk, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"ing" = ( +/obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" + icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_tram) +/area/fiorina/tumor/aux_engi) "inA" = ( /obj/structure/surface/table/reinforced/prison{ flipped = 1 @@ -13378,16 +13725,63 @@ /obj/item/device/cassette_tape/hiphop, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) +"inO" = ( +/obj/effect/spawner/random/toolbox, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkbrown2" + }, +/area/fiorina/tumor/aux_engi) +"ioc" = ( +/turf/open/floor/prison{ + icon_state = "yellowfull" + }, +/area/fiorina/station/lowsec) +"iox" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/lowsec) +"ioE" = ( +/obj/structure/machinery/vending/cola, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/civres_blue) "ioM" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/station/medbay) -"ioP" = ( -/obj/structure/bed/sofa/south/grey/left, +"ioS" = ( +/obj/item/storage/briefcase, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/transit_hub) +/area/fiorina/station/medbay) +"ioV" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) +"ioW" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) "ipa" = ( /obj/structure/machinery/door/airlock/almayer/command{ dir = 2; @@ -13400,22 +13794,37 @@ /obj/structure/window/framed/prison, /turf/open/floor/plating/prison, /area/fiorina/station/botany) -"ipy" = ( -/obj/effect/alien/weeds/node, +"ipz" = ( +/obj/item/device/flashlight, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"ipA" = ( +/obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"ipM" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/ammo_magazine/pistol/heavy{ + pixel_y = 7 + }, +/obj/item/ammo_magazine/pistol/heavy{ + pixel_y = 12 }, -/area/fiorina/tumor/servers) -"ipJ" = ( -/obj/effect/spawner/random/sentry/midchance, /turf/open/floor/prison{ - icon_state = "kitchen" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/power_ring) -"iqt" = ( -/obj/item/fuelCell, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/medbay) +"ipV" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) "iqB" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/clothing/head/helmet/warden{ @@ -13425,32 +13834,6 @@ /obj/structure/machinery/computer/objective, /turf/open/floor/carpet, /area/fiorina/station/security/wardens) -"iqR" = ( -/obj/structure/platform_decoration{ - dir = 4 - }, -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_ew_full_cap" - }, -/obj/structure/platform{ - dir = 1 - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) -"iqV" = ( -/obj/item/clothing/mask/cigarette/bcigarette, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/research_cells) -"iry" = ( -/obj/structure/janitorialcart, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/civres_blue) "irB" = ( /turf/closed/wall/mineral/bone_resin, /area/fiorina/station/park) @@ -13461,99 +13844,37 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"irK" = ( -/obj/effect/spawner/random/gun/rifle/lowchance, +"irE" = ( +/obj/item/ammo_casing{ + icon_state = "casing_5" + }, /turf/open/floor/prison{ - dir = 8; + dir = 4; icon_state = "darkyellow2" }, /area/fiorina/station/flight_deck) -"isi" = ( -/obj/item/tool/soap, -/obj/structure/machinery/shower{ +"irQ" = ( +/obj/structure/machinery/light/double/blue{ dir = 1; - pixel_y = -1 - }, -/obj/structure/machinery/shower{ - dir = 8 - }, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/fiorina/station/research_cells) -"isB" = ( -/obj/structure/bed/chair/comfy{ - dir = 1 - }, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"isJ" = ( -/obj/structure/surface/rack, -/obj/item/key, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"isK" = ( -/obj/structure/inflatable, -/turf/open/floor/prison{ - icon_state = "yellow" + pixel_y = 21 }, -/area/fiorina/station/lowsec) -"isP" = ( -/obj/item/trash/snack_bowl, /turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" + icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/civres_blue) "itd" = ( /obj/item/tool/lighter/random, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/park) -"iti" = ( -/obj/effect/decal/cleanable/blood/splatter{ - icon_state = "gib2" - }, -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"itq" = ( -/obj/structure/machinery/reagentgrinder/industrial{ - pixel_y = 10 - }, -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/fiorina/station/power_ring) -"itt" = ( -/obj/item/frame/rack, -/obj/item/stack/medical/bruise_pack, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) "itv" = ( /obj/item/toy/handcard/uno_reverse_yellow, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"itC" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, +"itK" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrown2" + icon_state = "platingdmg3" }, -/area/fiorina/station/park) +/area/fiorina/maintenance) "itN" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/park) @@ -13564,24 +13885,25 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) -"iuV" = ( -/obj/structure/curtain, +"iuz" = ( +/obj/vehicle/train/cargo/trolley, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) +"iuC" = ( +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) -"iuW" = ( -/obj/structure/prop/almayer/computers/sensor_computer1{ - name = "computer" + icon_state = "yellowfull" }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/station/lowsec) +"iuN" = ( +/obj/structure/barricade/handrail/type_b{ + layer = 3.5 }, /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 1; + icon_state = "blue" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/tumor/servers) "iuZ" = ( /obj/item/stack/rods, /obj/structure/machinery/light/double/blue{ @@ -13594,6 +13916,18 @@ /obj/effect/spawner/gibspawner/human, /turf/open/space/basic, /area/fiorina/oob) +"ivr" = ( +/turf/open/floor/prison{ + icon_state = "cell_stripe" + }, +/area/fiorina/station/power_ring) +"ivw" = ( +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ + dir = 5; + icon_state = "yellow" + }, +/area/fiorina/station/disco) "ivz" = ( /obj/structure/barricade/handrail/type_b{ layer = 3.5 @@ -13602,55 +13936,47 @@ /obj/effect/landmark/corpsespawner/prison_security, /turf/open/floor/wood, /area/fiorina/station/park) -"ivB" = ( -/obj/structure/surface/rack, -/obj/item/storage/pouch/tools/full, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/plating/prison, -/area/fiorina/maintenance) -"ivL" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"ivD" = ( +/obj/item/tool/weldingtool{ + pixel_x = 6; + pixel_y = -2 }, -/area/fiorina/station/transit_hub) -"ivM" = ( -/obj/structure/bed/chair, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) -"ivR" = ( -/obj/structure/machinery/optable{ - desc = "This maybe could be used for advanced medical procedures."; - name = "Exam Table" - }, -/obj/item/bedsheet/ce{ - desc = "It crinkles, aggressively."; - name = "sterile wax sheet" - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, +/area/fiorina/tumor/servers) +"ivK" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "darkbrown2" }, -/area/fiorina/station/medbay) +/area/fiorina/maintenance) +"ivN" = ( +/obj/structure/window/reinforced, +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/attachment, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) "iwf" = ( /obj/structure/machinery/light/double/blue, /turf/open/floor/prison/chapel_carpet, /area/fiorina/station/chapel) -"iwK" = ( +"iwi" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/snacks/mre_pack/meal1, +/obj/effect/spawner/random/toolbox, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "bluefull" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/power_ring) +"iwu" = ( +/obj/item/newspaper, +/turf/open/floor/prison, +/area/fiorina/station/security) +"iwy" = ( +/obj/structure/bed/sofa/south/grey/right, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/security) "iwT" = ( /obj/structure/ice/thin/indestructible{ dir = 4; @@ -13663,16 +13989,33 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/station/research_cells) -"ixb" = ( -/obj/item/ammo_casing{ - dir = 8; - icon_state = "cartridge_2" +"iwZ" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 2; + name = "Residential Archives" }, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrowncorners2" + icon_state = "floor_plate" }, -/area/fiorina/station/park) +/area/fiorina/tumor/civres) +"ixl" = ( +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_cargo) +"ixn" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 9; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"ixK" = ( +/obj/item/reagent_container/food/snacks/meat, +/turf/open/floor/prison{ + icon_state = "greenblue" + }, +/area/fiorina/station/botany) "iyc" = ( /obj/item/stack/rods/plasteel, /turf/open/auto_turf/sand/layer1, @@ -13681,25 +14024,30 @@ /obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"iyq" = ( -/obj/structure/platform_decoration{ - dir = 4 +"iyk" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/prop/souto_land/pole, +/obj/structure/prop/souto_land/pole{ + dir = 4; + pixel_y = 24 }, /turf/open/floor/prison{ dir = 8; - icon_state = "cell_stripe" + icon_state = "darkbrown2" }, /area/fiorina/station/park) -"iyu" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, +"iys" = ( +/obj/effect/spawner/random/sentry/midchance, /turf/open/floor/prison{ - dir = 8; - icon_state = "cell_stripe" + icon_state = "kitchen" }, -/area/fiorina/station/botany) +/area/fiorina/station/power_ring) "iyS" = ( /obj/structure/bed/chair/dropship/pilot{ dir = 1 @@ -13711,55 +14059,76 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"izJ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/space_heater{ - pixel_x = -1; - pixel_y = 9 +"iyY" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/clothing/accessory/armband/cargo{ + desc = "Sworn to the shrapnel and the shards therein. So sayeth her command when the first detonation occured."; + name = "HEFA Order milita armband" }, /turf/open/floor/prison{ - dir = 10; - icon_state = "blue" + dir = 4; + icon_state = "greenfull" }, -/area/fiorina/station/power_ring) -"izP" = ( -/obj/structure/largecrate/random/secure, -/obj/effect/decal/medical_decals{ - icon_state = "triagedecalleft" +/area/fiorina/station/chapel) +"izh" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "cell_stripe" }, -/area/fiorina/station/medbay) +/area/fiorina/station/lowsec) +"izN" = ( +/obj/structure/machinery/computer/secure_data, +/obj/structure/surface/table/reinforced/prison, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/prison, +/area/fiorina/station/security) "izZ" = ( /turf/closed/wall/prison, /area/fiorina/station/disco) +"iAq" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" + }, +/obj/structure/platform, +/turf/open/floor/plating/prison, +/area/fiorina/station/civres_blue) +"iAr" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/obj/structure/platform, +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) "iAA" = ( /obj/effect/decal/cleanable/blood/splatter{ icon_state = "gib5" }, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"iAL" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/tumor/aux_engi) -"iAO" = ( -/obj/item/stack/sheet/wood, +"iAB" = ( /turf/open/floor/prison{ - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"iBi" = ( -/obj/structure/closet/crate/miningcar{ - name = "\improper materials storage bin" + dir = 10; + icon_state = "darkpurple2" }, +/area/fiorina/station/central_ring) +"iBr" = ( +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) +"iBM" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + dir = 5; + icon_state = "greenblue" }, /area/fiorina/station/botany) "iBP" = ( @@ -13767,62 +14136,53 @@ icon_state = "stan25" }, /area/fiorina/oob) -"iCo" = ( -/obj/structure/machinery/door/poddoor/almayer{ +"iCf" = ( +/obj/structure/closet{ density = 0; - dir = 4 - }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"iCC" = ( -/obj/item/storage/donut_box{ - pixel_y = 6 - }, -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - icon_state = "bluefull" + pixel_y = 18 }, -/area/fiorina/station/power_ring) -"iCP" = ( -/obj/structure/machinery/disposal, -/obj/item/tool/kitchen/rollingpin{ - pixel_y = 8 +/obj/item/clothing/gloves/boxing, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" + dir = 1; + icon_state = "yellow" }, -/area/fiorina/station/civres_blue) -"iCR" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_sn_full_cap" +/area/fiorina/station/lowsec) +"iCE" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/obj/structure/platform{ - dir = 8 +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"iCN" = ( +/obj/item/tool/wrench, /turf/open/floor/prison{ - dir = 10; - icon_state = "bright_clean2" + icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/lowsec) "iCU" = ( /obj/structure/sign/nosmoking_1, /turf/closed/wall/prison, /area/fiorina/station/disco) -"iDa" = ( -/obj/item/inflatable, -/turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" +"iDg" = ( +/obj/structure/barricade/sandbags{ + dir = 8; + icon_state = "sandbag_0"; + pixel_y = 2 }, -/area/fiorina/station/lowsec) -"iDo" = ( -/obj/structure/platform, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "darkbrown2" +/obj/structure/barricade/sandbags{ + icon_state = "sandbag_0"; + pixel_y = -14 }, -/area/fiorina/station/park) +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) "iDq" = ( /obj/structure/disposalpipe/segment{ color = "#c4c4c4"; @@ -13834,153 +14194,235 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"iDE" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, -/turf/open/floor/prison{ - icon_state = "darkbrown2" - }, -/area/fiorina/tumor/aux_engi) -"iEi" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_ew_full_cap" +"iDA" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 }, -/obj/structure/platform{ - dir = 1 +/obj/structure/barricade/wooden{ + dir = 8 }, -/turf/open/floor/plating/prison, -/area/fiorina/station/park) -"iEz" = ( -/obj/item/weapon/gun/smg/mp5, -/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" + icon_state = "floor_plate" }, /area/fiorina/station/telecomm/lz1_cargo) -"iFj" = ( -/turf/open/floor/prison{ - dir = 5; - icon_state = "darkbrown2" +"iDK" = ( +/obj/structure/closet/crate/miningcar{ + name = "\improper materials storage bin" }, -/area/fiorina/station/park) -"iFu" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 +/obj/item/reagent_container/food/snacks/meat, +/turf/open/floor/prison{ + dir = 4; + icon_state = "blue_plate" }, -/obj/item/reagent_container/food/drinks/flask/barflask, +/area/fiorina/station/botany) +"iDO" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitepurple" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) -"iFD" = ( -/obj/structure/prop/structure_lattice{ - dir = 4 - }, -/obj/structure/prop/structure_lattice{ +/area/fiorina/tumor/servers) +"iDQ" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/effect/spawner/random/gun/rifle, +/turf/open/floor/prison{ dir = 4; - layer = 3.1; - pixel_y = 10 + icon_state = "greenfull" }, -/turf/open/floor/prison, /area/fiorina/station/chapel) -"iGL" = ( -/obj/structure/bed/chair/comfy{ - dir = 4 +"iEl" = ( +/obj/structure/platform_decoration, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"iEA" = ( +/obj/structure/closet/crate/miningcar{ + name = "\improper materials storage bin" }, -/obj/structure/machinery/light/double/blue{ +/obj/item/reagent_container/food/snacks/meat, +/turf/open/floor/prison{ + icon_state = "greenblue" + }, +/area/fiorina/station/botany) +"iEF" = ( +/obj/item/tool/kitchen/utensil/fork, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/flight_deck) +"iEG" = ( +/obj/structure/sink{ dir = 8; - pixel_x = -10; + pixel_x = -12 + }, +/obj/item/reagent_container/glass/bottle/cyanide{ + pixel_x = -12; pixel_y = 13 }, /turf/open/floor/prison{ - dir = 6; - icon_state = "blue" + dir = 10; + icon_state = "yellow" }, -/area/fiorina/station/civres_blue) -"iGW" = ( -/obj/structure/machinery/light/double/blue, +/area/fiorina/station/lowsec) +"iFg" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + icon_state = "greenblue" + }, +/area/fiorina/station/botany) +"iFz" = ( +/obj/structure/closet/firecloset/full, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"iGX" = ( -/obj/effect/landmark/queen_spawn, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/fiberbush) -"iHn" = ( -/obj/item/frame/toolbox_tiles_sensor, -/obj/structure/surface/table/reinforced/prison, +/area/fiorina/tumor/ice_lab) +"iFB" = ( +/obj/structure/toilet{ + dir = 8; + pixel_y = 8 + }, +/turf/open/floor/prison{ + dir = 5; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"iFC" = ( +/obj/structure/surface/rack, +/obj/item/storage/toolbox/mechanical, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"iHJ" = ( +/area/fiorina/tumor/aux_engi) +"iFP" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/research_cells) +"iFZ" = ( /obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/cameras{ - network = list("PRISON") +/obj/item/reagent_container/food/snacks/hugemushroomslice, +/obj/item/reagent_container/food/snacks/hugemushroomslice{ + pixel_y = 3 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "redcorner" + icon_state = "kitchen" }, /area/fiorina/station/power_ring) -"iHU" = ( -/obj/structure/barricade/metal{ - dir = 8; - health = 150; - icon_state = "metal_2" +"iGw" = ( +/obj/item/stack/tile/plasteel, +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" }, +/area/fiorina/tumor/civres) +"iGx" = ( +/obj/structure/closet/crate/trashcart, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) -"iIS" = ( -/obj/structure/machinery/constructable_frame, +/area/fiorina/tumor/servers) +"iGX" = ( +/obj/effect/landmark/queen_spawn, /turf/open/floor/plating/prison, -/area/fiorina/station/telecomm/lz2_maint) -"iIX" = ( -/obj/structure/bed/chair, -/obj/structure/prop/souto_land/pole, -/obj/structure/prop/souto_land/pole{ - dir = 4; - pixel_y = 24 - }, -/turf/open/floor/prison{ - icon_state = "darkbrown2" +/area/fiorina/tumor/fiberbush) +"iHu" = ( +/obj/item/newspaper, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) +"iHB" = ( +/obj/structure/barricade/sandbags{ + dir = 8; + icon_state = "sandbag_0" }, -/area/fiorina/station/park) -"iJf" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - dir = 1; icon_state = "darkyellow2" }, -/area/fiorina/lz/near_lzI) -"iJj" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, -/obj/structure/inflatable/popped, -/obj/structure/barricade/wooden{ +/area/fiorina/station/telecomm/lz1_cargo) +"iHT" = ( +/obj/structure/barricade/handrail/type_b{ dir = 8 }, /turf/open/floor/prison{ - icon_state = "whitegreen" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"iJC" = ( -/obj/item/stack/sheet/metal, +/area/fiorina/station/power_ring) +"iHW" = ( +/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 4; + icon_state = "greenblue" }, -/area/fiorina/tumor/ice_lab) -"iJE" = ( +/area/fiorina/station/botany) +"iIl" = ( /obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_ew_full_cap" + }, +/obj/structure/platform/stair_cut, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzI) +"iIx" = ( +/obj/effect/decal/cleanable/blood{ + desc = "Watch your step."; + icon_state = "gib6" + }, +/turf/open/floor/prison{ dir = 4; - icon_state = "p_stair_full" + icon_state = "darkyellow2" + }, +/area/fiorina/station/flight_deck) +"iIE" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/box/cups, +/obj/item/reagent_container/food/drinks/coffee{ + name = "\improper paper cup"; + pixel_x = 8; + pixel_y = 16 }, /turf/open/floor/prison, +/area/fiorina/station/security) +"iIG" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/drinks/cans/waterbottle{ + pixel_x = 8; + pixel_y = 5 + }, +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/lowsec) +"iIS" = ( +/obj/structure/machinery/constructable_frame, +/turf/open/floor/plating/prison, +/area/fiorina/station/telecomm/lz2_maint) +"iIZ" = ( +/obj/item/stack/cable_coil, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkpurple2" + }, /area/fiorina/tumor/servers) "iJF" = ( /obj/structure/surface/table/reinforced/prison, @@ -13992,210 +14434,170 @@ icon_state = "squares" }, /area/fiorina/station/medbay) -"iJG" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/communications/simple, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) -"iJJ" = ( -/obj/item/reagent_container/food/drinks/bottle/orangejuice, -/turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"iJM" = ( -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/station/telecomm/lz1_tram) "iKg" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"iKj" = ( -/obj/structure/machinery/newscaster{ - pixel_y = 32 +"iKs" = ( +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/chapel) +"iKy" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, +/obj/effect/spawner/random/gun/pistol, +/turf/open/floor/prison{ + dir = 10; + icon_state = "yellow" }, +/area/fiorina/station/lowsec) +"iKF" = ( +/obj/structure/inflatable, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/station/transit_hub) -"iKs" = ( -/turf/open/floor/plating/plating_catwalk/prison, -/area/fiorina/station/chapel) -"iKC" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/ammo_magazine/shotgun/buckshot, +"iKI" = ( +/obj/effect/landmark/survivor_spawner, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "darkyellowcorners2" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"iKO" = ( +/obj/structure/barricade/wooden{ + dir = 1 }, -/area/fiorina/station/research_cells) -"iKG" = ( -/obj/structure/bed/chair, -/obj/effect/decal/cleanable/blood, -/obj/effect/landmark/corpsespawner/prison_security, -/turf/open/floor/prison, -/area/fiorina/station/park) -"iLy" = ( -/obj/item/stack/rods/plasteel, /turf/open/floor/prison{ - icon_state = "floorscorched2" + dir = 5; + icon_state = "whitegreen" }, -/area/fiorina/station/security) +/area/fiorina/station/medbay) +"iLl" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 + }, +/turf/open/floor/prison{ + icon_state = "yellowfull" + }, +/area/fiorina/station/lowsec) "iLJ" = ( /obj/effect/spawner/random/tool, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"iLQ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/stack/barbed_wire, -/obj/item/stack/barbed_wire, -/obj/item/stack/cable_coil/blue, -/obj/item/stack/cable_coil/blue, -/obj/item/stack/cable_coil/blue, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"iMm" = ( -/obj/structure/barricade/handrail/type_b{ - layer = 3.5 - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "blue" - }, -/area/fiorina/tumor/servers) "iMo" = ( /obj/structure/bed/chair/office/dark{ dir = 1 }, /turf/open/floor/carpet, /area/fiorina/station/security/wardens) -"iMF" = ( -/obj/structure/platform, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"iMq" = ( +/obj/structure/bed/chair{ + dir = 4; + pixel_y = 8 }, -/area/fiorina/station/disco) -"iMM" = ( -/obj/structure/machinery/vending/hydronutrients, /turf/open/floor/prison{ - dir = 1; - icon_state = "blue_plate" + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) +"iMN" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4; + layer = 3.25 }, -/area/fiorina/station/botany) -"iMS" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "whitegreenfull" }, /area/fiorina/tumor/ice_lab) -"iNw" = ( -/obj/structure/closet/crate/miningcar{ - name = "\improper materials storage bin" - }, -/obj/item/reagent_container/food/snacks/meat, +"iNk" = ( +/obj/structure/largecrate/random, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/park) -"iNO" = ( -/obj/structure/surface/table/reinforced/prison, +/area/fiorina/tumor/civres) +"iNt" = ( +/obj/item/device/whistle, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/medbay) "iOa" = ( /obj/structure/machinery/floodlight/landing/floor, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"iOe" = ( -/obj/effect/landmark/monkey_spawn, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"iOt" = ( +"iON" = ( +/obj/structure/closet/bombcloset, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ - dir = 8; - icon_state = "blue" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/civres_blue) -"iOE" = ( -/obj/structure/platform, +/area/fiorina/tumor/aux_engi) +"iOX" = ( /turf/open/floor/prison{ dir = 4; - icon_state = "cell_stripe" - }, -/area/fiorina/station/security) -"iOG" = ( -/obj/item/stack/sheet/wood, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + icon_state = "blue_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) -"iOJ" = ( +/area/fiorina/station/botany) +"iOY" = ( /turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" + dir = 6; + icon_state = "whitegreen" }, -/area/fiorina/station/disco) -"iPq" = ( -/obj/structure/machinery/washing_machine, -/obj/structure/machinery/washing_machine{ - pixel_y = 15 +/area/fiorina/tumor/ice_lab) +"iPv" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/cameras{ + dir = 4 }, -/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "yellowfull" + icon_state = "darkredfull2" }, -/area/fiorina/station/lowsec) +/area/fiorina/oob) "iPx" = ( /obj/item/device/flashlight/lamp/tripod, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"iPM" = ( +"iPz" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/donut_box/empty, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "redfull" }, -/area/fiorina/station/medbay) -"iPV" = ( -/turf/open/floor/prison{ +/area/fiorina/station/security) +"iQj" = ( +/obj/structure/machinery/photocopier, +/obj/structure/machinery/light/double/blue{ dir = 4; - icon_state = "red" - }, -/area/fiorina/lz/near_lzII) -"iPZ" = ( -/obj/structure/disposalpipe/segment{ - icon_state = "delivery_outlet"; - layer = 6; - name = "overhead ducting"; - pixel_y = 33 + pixel_x = 10; + pixel_y = -3 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/tumor/civres) -"iQu" = ( -/obj/structure/coatrack, -/obj/item/clothing/head/bowlerhat{ - pixel_y = 15 - }, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 +"iQz" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" }, +/turf/open/floor/plating/prison, +/area/fiorina/station/botany) +"iQH" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" + icon_state = "blue_plate" }, -/area/fiorina/tumor/civres) +/area/fiorina/station/botany) +"iQJ" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) "iQK" = ( /obj/structure/disposalpipe/broken{ dir = 1 @@ -14203,175 +14605,214 @@ /obj/structure/disposalpipe/broken, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"iQP" = ( -/obj/structure/machinery/vending/cigarette/colony, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) "iRa" = ( /obj/structure/window/framed/prison, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"iRc" = ( +"iRn" = ( /obj/structure/machinery/light/double/blue{ dir = 8; pixel_x = -10; pixel_y = 13 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"iRe" = ( -/obj/item/clothing/suit/chef/classic, -/obj/structure/bed/stool, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" - }, -/area/fiorina/station/civres_blue) -"iRy" = ( -/obj/structure/surface/rack, -/obj/item/storage/belt/gun/flaregun/full, -/obj/item/storage/belt/gun/flaregun/full, -/obj/item/storage/belt/gun/flaregun/full, -/turf/open/floor/prison{ - icon_state = "darkyellow2" + dir = 8; + icon_state = "darkbrown2" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/tumor/aux_engi) +"iRG" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/trash/chunk, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) "iRH" = ( /obj/item/frame/firstaid_arm_assembly, /obj/structure/surface/table/woodentable, /turf/open/floor/carpet, /area/fiorina/station/civres_blue) -"iSf" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/flora/pottedplant{ - pixel_y = 9 - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"iSh" = ( -/obj/structure/prop/structure_lattice{ - dir = 4 - }, -/obj/structure/prop/structure_lattice{ +"iRI" = ( +/turf/open/floor/prison{ dir = 4; - layer = 3.1; - pixel_y = 10 - }, -/turf/open/floor/prison, -/area/fiorina/station/park) -"iSi" = ( -/obj/structure/monorail{ - name = "launch track" - }, -/turf/open/floor/plating/prison, -/area/fiorina/oob) -"iSn" = ( -/obj/structure/barricade/metal/wired{ - dir = 8 - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + icon_state = "whitegreencorner" }, +/area/fiorina/tumor/ice_lab) +"iSg" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" + dir = 8; + icon_state = "darkyellow2" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/flight_deck) "iSu" = ( /turf/closed/wall/prison{ desc = "Come Meet Souto Man!"; icon_state = "rwall_s" }, /area/fiorina/station/park) -"iSG" = ( -/obj/effect/landmark/xeno_spawn, +"iSw" = ( +/obj/structure/machinery/disposal, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) -"iSQ" = ( +/area/fiorina/station/transit_hub) +"iSR" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" + dir = 8; + icon_state = "cell_stripe" + }, +/area/fiorina/oob) +"iSW" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/surgical_tray, +/obj/item/reagent_container/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" }, -/area/fiorina/station/telecomm/lz1_cargo) -"iTm" = ( -/turf/open/auto_turf/sand/layer1, -/area/fiorina/station/civres_blue) -"iTw" = ( -/obj/item/stack/sheet/metal, /turf/open/floor/prison{ icon_state = "redfull" }, -/area/fiorina/station/security) -"iTy" = ( -/obj/structure/machinery/photocopier, +/area/fiorina/station/medbay) +"iTj" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "cell_stripe" }, /area/fiorina/station/security) -"iTG" = ( -/obj/vehicle/train/cargo/trolley, +"iTm" = ( +/turf/open/auto_turf/sand/layer1, +/area/fiorina/station/civres_blue) +"iTr" = ( +/obj/structure/closet/basketball, +/obj/item/storage/pill_bottle/tramadol/skillless, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/transit_hub) -"iUy" = ( -/turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" +/area/fiorina/station/research_cells) +"iTs" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" }, -/area/fiorina/station/lowsec) +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/botany) +"iTt" = ( +/obj/structure/machinery/landinglight/ds2, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/lz/near_lzII) +"iTE" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkyellowcorners2" + }, +/area/fiorina/station/flight_deck) +"iTJ" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenblue" + }, +/area/fiorina/station/botany) +"iTK" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/prison, +/area/fiorina/station/security) +"iUa" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/obj/effect/decal/medical_decals{ + icon_state = "triagedecalbottomright" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"iUc" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/medbay) +"iUr" = ( +/obj/item/shard{ + icon_state = "large"; + name = "ice shard" + }, +/turf/open/floor/prison{ + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) +"iUB" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) "iUO" = ( /obj/structure/platform{ dir = 8 }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"iVb" = ( -/obj/structure/largecrate/random, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" +"iUS" = ( +/obj/structure/barricade/handrail/type_b, +/obj/structure/barricade/handrail/type_b{ + dir = 4 }, -/area/fiorina/station/telecomm/lz1_tram) -"iVt" = ( -/obj/effect/landmark/objective_landmark/far, /turf/open/floor/prison, +/area/fiorina/station/disco) +"iVo" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, /area/fiorina/station/park) "iVv" = ( /obj/structure/blocker/invisible_wall, /turf/open/space, /area/fiorina/oob) -"iVC" = ( -/obj/structure/platform{ - dir = 1 +"iVT" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) +"iWe" = ( +/obj/item/trash/candy, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 8; + icon_state = "whitegreen" }, /area/fiorina/station/medbay) -"iWg" = ( -/obj/structure/surface/table/reinforced/prison, +"iWp" = ( +/obj/item/reagent_container/food/drinks/coffee{ + name = "\improper paper cup" + }, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue_plate" + dir = 5; + icon_state = "yellow" }, -/area/fiorina/station/botany) +/area/fiorina/station/lowsec) "iWq" = ( /obj/structure/platform/kutjevo/smooth{ dir = 1 @@ -14383,155 +14824,131 @@ }, /turf/open/space, /area/fiorina/oob) -"iWy" = ( -/turf/open/floor/prison{ - dir = 5; - icon_state = "blue" +"iWP" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" }, -/area/fiorina/tumor/servers) -"iWW" = ( -/obj/structure/barricade/handrail/type_b, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"iXz" = ( -/obj/item/trash/cigbutt, /turf/open/floor/prison{ dir = 8; - icon_state = "blue" - }, -/area/fiorina/station/power_ring) -"iXL" = ( -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_tram) -"iYq" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "darkpurple2" + icon_state = "whitegreen" }, -/area/fiorina/tumor/ice_lab) -"iYI" = ( -/obj/structure/machinery/light/double/blue, +/area/fiorina/station/central_ring) +"iXq" = ( +/obj/item/stool, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "yellow" }, -/area/fiorina/station/transit_hub) -"iZn" = ( -/obj/structure/barricade/metal{ - health = 250; - icon_state = "metal_1" +/area/fiorina/station/lowsec) +"iXs" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +/obj/structure/platform, +/turf/open/floor/plating/prison, +/area/fiorina/station/medbay) +"iXJ" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 }, -/area/fiorina/tumor/ice_lab) -"iZt" = ( -/obj/structure/bed/chair/comfy, /turf/open/floor/prison{ - dir = 8; + dir = 6; icon_state = "blue" }, /area/fiorina/station/civres_blue) -"iZA" = ( -/obj/structure/largecrate/random/barrel, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/station/park) -"iZV" = ( -/turf/open/floor/prison{ - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"iZZ" = ( -/obj/structure/barricade/metal{ - health = 250; - icon_state = "metal_1" - }, +"iXV" = ( +/obj/structure/closet/l3closet/general, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"iYa" = ( /turf/open/floor/prison{ - dir = 6; - icon_state = "darkpurple2" + dir = 8; + icon_state = "bluecorner" }, -/area/fiorina/tumor/ice_lab) -"jae" = ( -/obj/structure/cargo_container/grant/left, +/area/fiorina/station/chapel) +"iYe" = ( +/obj/item/tool/wirecutters, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "bluecorner" }, /area/fiorina/station/power_ring) -"jah" = ( -/obj/item/tool/crowbar, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"jal" = ( -/obj/structure/largecrate/supply/explosives/mortar_flare, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"jao" = ( -/obj/structure/filingcabinet{ - pixel_x = 8; - pixel_y = 4 +"iYw" = ( +/turf/closed/wall/r_wall/prison_unmeltable, +/area/fiorina/station/central_ring) +"iYJ" = ( +/obj/structure/machinery/power/apc, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" }, -/obj/structure/filingcabinet{ - pixel_x = -8; - pixel_y = 4 +/area/fiorina/tumor/civres) +"iZm" = ( +/obj/item/trash/chips, +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 }, /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/station/power_ring) -"jas" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/weapon/baton, -/obj/item/reagent_container/food/drinks/coffee{ - pixel_x = -6; - pixel_y = 12 +/area/fiorina/tumor/servers) +"jaB" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/turf/open/space/basic, +/area/fiorina/oob) +"jbg" = ( +/obj/structure/holohoop{ + dir = 1 }, -/area/fiorina/station/research_cells) -"jax" = ( -/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 1; + icon_state = "yellow" }, -/area/fiorina/station/power_ring) -"jay" = ( -/obj/item/reagent_container/food/snacks/boiledegg, -/obj/structure/surface/table/reinforced/prison, +/area/fiorina/station/lowsec) +"jbm" = ( +/obj/item/clothing/under/color/orange, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) -"jaR" = ( -/obj/item/trash/cigbutt/ucigbutt{ - pixel_x = 5; - pixel_y = 12 - }, +/area/fiorina/station/lowsec) +"jbq" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 4; + icon_state = "whitegreen" }, /area/fiorina/station/medbay) -"jbk" = ( -/obj/item/stack/tile/plasteel, -/turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" +"jbu" = ( +/obj/structure/window/reinforced{ + dir = 8 }, -/area/fiorina/station/disco) -"jbx" = ( -/obj/structure/prop/almayer/computers/sensor_computer3, +/obj/structure/window/reinforced, +/turf/open/floor/prison, +/area/fiorina/station/security) +"jbF" = ( +/obj/structure/closet/secure_closet/guncabinet{ + req_access = null + }, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, +/obj/item/ammo_magazine/shotgun/buckshot, +/obj/item/ammo_magazine/shotgun/buckshot, +/obj/item/storage/belt/shotgun, +/obj/item/clothing/under/marine/ua_riot, +/obj/item/clothing/suit/storage/marine/veteran/ua_riot, +/obj/item/prop/helmetgarb/riot_shield, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "redfull" }, /area/fiorina/station/security) -"jbG" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/shuttle/dropship/flight/lz2, -/turf/open/floor/prison, -/area/fiorina/lz/console_II) "jbU" = ( /obj/structure/surface/table/reinforced/prison, /turf/open/floor/plating/prison, @@ -14543,109 +14960,69 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"jcg" = ( -/obj/effect/landmark/corpsespawner/ua_riot/burst, +"jci" = ( +/obj/structure/machinery/cm_vending/sorted/medical/blood, +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/tumor/civres) +/area/fiorina/station/medbay) "jcv" = ( /obj/structure/bed/chair/comfy{ dir = 4 }, /turf/open/floor/wood, /area/fiorina/station/park) -"jcB" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/stock_parts/subspace/amplifier{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/item/stock_parts/subspace/analyzer{ - pixel_x = -9; - pixel_y = 8 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"jcF" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 }, -/area/fiorina/station/power_ring) -"jdc" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/item/device/multitool, -/obj/item/device/multitool, -/obj/item/device/multitool, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) +"jcG" = ( /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 }, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" - }, -/area/fiorina/lz/near_lzI) -"jdh" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_29"; - pixel_y = 10 + icon_state = "floor_plate" }, +/area/fiorina/tumor/servers) +"jdn" = ( +/obj/structure/machinery/vending/snack, /turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"jdo" = ( -/obj/structure/machinery/washing_machine, -/obj/item/clothing/head/that{ - pixel_y = 10 - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + dir = 10; + icon_state = "whitegreenfull" }, +/area/fiorina/tumor/ice_lab) +"jew" = ( +/obj/structure/largecrate/supply/ammo, +/obj/item/storage/fancy/crayons, /turf/open/floor/prison{ - icon_state = "sterile_white" - }, -/area/fiorina/station/civres_blue) -"jeh" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_ew_full_cap" + dir = 10; + icon_state = "floor_plate" }, +/area/fiorina/station/telecomm/lz1_cargo) +"jeL" = ( /obj/structure/platform{ dir = 1 }, -/turf/open/floor/plating/prison, -/area/fiorina/station/telecomm/lz1_tram) -"jeD" = ( -/obj/structure/machinery/gibber, -/obj/effect/decal/cleanable/blood{ - pixel_x = -6; - pixel_y = 4 - }, -/turf/open/floor/prison{ - icon_state = "blue_plate" - }, -/area/fiorina/station/botany) -"jeY" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/tool/surgery/scalpel/laser{ - pixel_x = -5; - pixel_y = 12 - }, -/obj/item/tool/surgery/circular_saw{ - pixel_y = -2 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/obj/structure/platform{ + dir = 8 }, -/area/fiorina/station/telecomm/lz1_cargo) -"jfa" = ( -/obj/structure/machinery/cm_vending/sorted/marine_food{ - name = "\improper Fiorina Engineering Canteen Vendor" +/obj/structure/platform_decoration{ + dir = 5 }, /turf/open/floor/prison{ icon_state = "bluefull" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/chapel) "jfc" = ( /obj/item/stack/rods, /turf/open/floor/plating/prison, @@ -14655,21 +15032,6 @@ name = "pool" }, /area/fiorina/station/park) -"jfm" = ( -/obj/structure/lattice, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/turf/open/space/basic, -/area/fiorina/oob) "jfp" = ( /obj/structure/barricade/handrail, /obj/structure/barricade/handrail{ @@ -14679,82 +15041,113 @@ name = "astroturf" }, /area/fiorina/station/research_cells) -"jfD" = ( -/obj/item/weapon/gun/rifle/m16, -/obj/effect/decal/cleanable/blood, +"jft" = ( +/obj/structure/barricade/sandbags{ + icon_state = "sandbag_0"; + pixel_y = -14 + }, /turf/open/floor/prison{ dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) -"jfN" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 - }, +/area/fiorina/station/flight_deck) +"jfO" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 6; + icon_state = "yellow" }, -/area/fiorina/station/civres_blue) -"jgl" = ( -/obj/structure/platform_decoration{ +/area/fiorina/station/central_ring) +"jfT" = ( +/obj/structure/platform{ dir = 4 }, -/obj/item/trash/used_stasis_bag, -/turf/open/floor/prison{ - dir = 9; - icon_state = "whitegreen" +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" }, -/area/fiorina/station/medbay) +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) "jgu" = ( /turf/closed/wall/prison, /area/fiorina/station/park) -"jgW" = ( -/obj/structure/barricade/metal/wired{ - dir = 1 +"jgz" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, -/obj/item/bodybag/tarp/reactive, -/obj/item/bodybag/tarp/reactive, -/obj/structure/surface/rack, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" + icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) -"jhi" = ( -/obj/structure/prop/structure_lattice{ - dir = 4; - health = 300 +/area/fiorina/station/flight_deck) +"jgL" = ( +/obj/structure/bed/chair{ + dir = 8 }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" + }, +/area/fiorina/station/botany) +"jhl" = ( +/obj/structure/closet/emcloset, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/station/medbay) +"jhp" = ( +/obj/effect/spawner/random/tool, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/transit_hub) "jhG" = ( /turf/closed/shuttle/ert{ icon_state = "stan25" }, /area/fiorina/tumor/ship) -"jit" = ( +"jhN" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/obj/item/clothing/suit/armor/bulletproof/badge, /turf/open/floor/prison{ - icon_state = "panelscorched" + dir = 6; + icon_state = "yellow" }, -/area/fiorina/tumor/civres) -"jiJ" = ( -/obj/structure/prop/almayer/computers/mission_planning_system{ - density = 0; - desc = "Its a telephone, and a computer. Woah."; - name = "\improper funny telephone booth"; - pixel_y = 21 +/area/fiorina/station/lowsec) +"jiq" = ( +/obj/structure/lz_sign/prison_sign, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"jis" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, +/obj/structure/platform_decoration{ + dir = 1 }, /turf/open/floor/prison, -/area/fiorina/station/chapel) +/area/fiorina/station/disco) +"jiz" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) +"jiA" = ( +/obj/item/storage/firstaid/regular, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) "jiV" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/condiment/saltshaker, @@ -14768,20 +15161,6 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"jiW" = ( -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/station/transit_hub) -"jje" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/civres) "jjg" = ( /obj/structure/window/framed/prison, /turf/open/floor/plating/prison, @@ -14790,108 +15169,112 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) +"jjp" = ( +/obj/structure/largecrate/random/case, +/obj/item/storage/toolbox/emergency{ + pixel_y = 4 + }, +/turf/open/floor/prison{ + dir = 9; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) "jjs" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ req_one_access = null }, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) +"jjH" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) "jjM" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating/prison, /area/fiorina/tumor/fiberbush) -"jjS" = ( -/obj/effect/decal/cleanable/blood/xeno, -/turf/open/floor/prison{ - dir = 8; - icon_state = "blue_plate" - }, -/area/fiorina/station/botany) "jjW" = ( /turf/open/floor/prison/chapel_carpet{ dir = 1; icon_state = "doubleside" }, /area/fiorina/station/chapel) -"jka" = ( -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) "jkg" = ( /obj/structure/largecrate/supply, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"jki" = ( -/obj/item/weapon/twohanded/spear, +"jkj" = ( +/obj/structure/largecrate/random/case/small, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/research_cells) -"jkZ" = ( -/obj/structure/barricade/handrail, +/area/fiorina/tumor/aux_engi) +"jkw" = ( +/obj/structure/machinery/computer/atmos_alert, +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/station/research_cells) -"jlg" = ( -/obj/structure/bed/chair{ - dir = 8 + icon_state = "floor_plate" }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/area/fiorina/tumor/fiberbush) +"jkW" = ( +/obj/structure/dropship_equipment/fulton_system, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"jlb" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 }, -/area/fiorina/station/medbay) +/turf/open/floor/prison, +/area/fiorina/tumor/servers) "jlk" = ( /turf/closed/wall/mineral/bone_resin, /area/fiorina/tumor/aux_engi) +"jln" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/obj/item/card/id/silver/clearance_badge, +/turf/open/floor/prison{ + dir = 10; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) +"jlq" = ( +/obj/item/device/flashlight/lamp/tripod, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) +"jls" = ( +/obj/item/reagent_container/glass/bucket/janibucket, +/turf/open/floor/prison, +/area/fiorina/station/park) +"jlB" = ( +/obj/item/stack/nanopaste, +/turf/open/floor/prison{ + dir = 1; + icon_state = "blue" + }, +/area/fiorina/station/civres_blue) "jlH" = ( /obj/structure/platform/kutjevo/smooth{ dir = 8 }, /turf/open/space, /area/fiorina/oob) -"jlJ" = ( -/obj/effect/alien/weeds/node, -/obj/structure/prop/resin_prop{ - icon_state = "rack" - }, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"jlO" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_29"; - pixel_y = 10 - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, +"jlI" = ( +/obj/structure/bed/sofa/south/grey, /turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"jlW" = ( -/obj/effect/landmark/static_comms/net_one, -/turf/open/floor/prison{ - dir = 10; - icon_state = "darkyellow2" +/area/fiorina/station/disco) +"jlU" = ( +/obj/structure/machinery/cm_vending/sorted/marine_food{ + name = "\improper Fiorina Engineering Canteen Vendor" }, -/area/fiorina/station/telecomm/lz1_tram) -"jmm" = ( -/obj/effect/spawner/random/gun/rifle/highchance, /turf/open/floor/prison{ - icon_state = "damaged3" + icon_state = "bluefull" }, -/area/fiorina/station/security) +/area/fiorina/station/power_ring) "jmp" = ( /obj/item/ammo_magazine/handful/shotgun/incendiary{ unacidable = 1 @@ -14912,52 +15295,23 @@ }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"jms" = ( -/obj/structure/bed{ - icon_state = "abed" +"jmv" = ( +/obj/structure/machinery/shower{ + dir = 4 }, /turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" + icon_state = "kitchen" }, /area/fiorina/station/lowsec) -"jmy" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/aux_engi) "jmG" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/research_cells) -"jmM" = ( -/obj/structure/machinery/space_heater, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) -"jmO" = ( -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/platform, -/obj/structure/platform_decoration{ - dir = 10 - }, -/obj/structure/reagent_dispensers/fueltank{ - layer = 2.6 - }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"jmV" = ( -/obj/structure/barricade/wooden{ - dir = 8 - }, +"jna" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "whitepurplecorner" }, -/area/fiorina/maintenance) +/area/fiorina/station/research_cells) "jnd" = ( /obj/structure/machinery/light/double/blue{ dir = 8; @@ -14966,25 +15320,35 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/lz/near_lzII) -"jnr" = ( -/obj/structure/filingcabinet, -/obj/item/card/data/clown, -/obj/effect/landmark/objective_landmark/medium, +"jnm" = ( +/obj/structure/machinery/vending/sovietsoda, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" + icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) -"jnO" = ( +/area/fiorina/station/civres_blue) +"jnQ" = ( /obj/structure/machinery/light/double/blue{ dir = 8; pixel_x = -10; - pixel_y = 13 + pixel_y = -3 }, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "floor_plate" + }, +/area/fiorina/station/disco) +"jnU" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkpurple2" }, /area/fiorina/tumor/servers) +"jnX" = ( +/obj/item/storage/pill_bottle/spaceacillin/skillless, +/turf/open/floor/prison{ + dir = 5; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) "jor" = ( /obj/effect/spawner/random/attachment, /obj/structure/disposalpipe/segment{ @@ -15008,47 +15372,21 @@ name = "astroturf" }, /area/fiorina/station/park) -"joy" = ( -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/aux_engi) -"joz" = ( -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/transit_hub) -"joD" = ( -/obj/item/trash/used_stasis_bag, -/turf/open/floor/prison{ - dir = 5; - icon_state = "darkyellow2" - }, +"joJ" = ( +/obj/structure/bed/roller, +/obj/effect/decal/cleanable/blood/gibs/core, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) +"joU" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/prison, /area/fiorina/lz/near_lzI) -"joE" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_29"; - pixel_y = 6 - }, -/turf/open/floor/wood, -/area/fiorina/station/park) -"joS" = ( -/obj/item/weapon/gun/rifle/mar40, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) "jpc" = ( /obj/structure/barricade/wooden{ dir = 1 }, /turf/open/floor/wood, /area/fiorina/station/chapel) -"jpl" = ( -/obj/item/clothing/under/CM_uniform, -/turf/open/floor/prison, -/area/fiorina/station/security) "jpt" = ( /obj/structure/machinery/light/small{ dir = 8; @@ -15064,43 +15402,40 @@ icon_state = "plate" }, /area/fiorina/tumor/ship) +"jpx" = ( +/obj/item/ammo_casing{ + icon_state = "casing_8" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/lowsec) "jpN" = ( /obj/structure/sign/prop3{ desc = "Enlist in the Penal Battalions today! The USCM 3rd Fleet features a subset of UA sanctioned penal battalions, drawing from inmate popualtions across the colonies. Mostly New Argentina though." }, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/research_cells) -"jpR" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/folder/black_random, -/obj/item/folder/red{ - pixel_x = 3; - pixel_y = 5 - }, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"jpS" = ( -/obj/structure/prop/structure_lattice{ - dir = 4; - health = 300 +"jpQ" = ( +/obj/structure/bed/chair{ + dir = 4 }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "whitegreen" }, -/area/fiorina/tumor/ice_lab) -"jqg" = ( -/obj/structure/platform, +/area/fiorina/station/medbay) +"jpW" = ( +/obj/item/reagent_container/food/drinks/cans/souto/cherry, /turf/open/floor/prison{ - icon_state = "darkbrown2" + icon_state = "floor_plate" }, -/area/fiorina/station/park) +/area/fiorina/station/central_ring) "jqs" = ( /obj/structure/disposalpipe/segment{ color = "#c4c4c4"; @@ -15123,142 +15458,129 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz1_cargo) -"jqH" = ( -/obj/structure/curtain, +"jqE" = ( +/obj/item/circuitboard/robot_module/janitor, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"jqM" = ( +/obj/structure/reagent_dispensers/watertank, /turf/open/floor/prison{ - dir = 8; - icon_state = "cell_stripe" - }, -/area/fiorina/station/power_ring) -"jqR" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" + dir = 4; + icon_state = "blue_plate" }, +/area/fiorina/station/botany) +"jri" = ( +/obj/structure/closet/secure_closet/freezer/fridge/groceries, /obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 + dir = 4; + pixel_x = 10; + pixel_y = -3 }, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/disco) -"jqX" = ( -/obj/structure/platform{ - dir = 8 + dir = 4; + icon_state = "greenfull" }, -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_sn_full_cap" +/area/fiorina/tumor/civres) +"jrN" = ( +/turf/open/floor/prison{ + icon_state = "platingdmg1" }, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"jre" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/microwave{ - pixel_y = 6 +/area/fiorina/tumor/aux_engi) +"jrO" = ( +/obj/structure/platform_decoration{ + dir = 4 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" + dir = 9; + icon_state = "blue" }, -/area/fiorina/station/civres_blue) -"jrk" = ( +/area/fiorina/station/power_ring) +"jrT" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/recharger, +/obj/item/clothing/accessory/holobadge/cord, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrown2" + icon_state = "darkredfull2" }, -/area/fiorina/maintenance) -"jrn" = ( -/obj/item/reagent_container/food/snacks/xenoburger, -/obj/item/reagent_container/food/snacks/xenoburger, -/obj/item/reagent_container/food/snacks/xenoburger, -/obj/structure/closet/crate/freezer, +/area/fiorina/lz/near_lzI) +"jsf" = ( +/obj/structure/closet/crate/trashcart, /turf/open/floor/prison{ - icon_state = "kitchen" + icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"jru" = ( -/obj/structure/machinery/space_heater, +/area/fiorina/station/chapel) +"jsp" = ( +/obj/effect/spawner/random/toolbox, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) -"jrL" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 +/area/fiorina/tumor/civres) +"jsu" = ( +/obj/structure/surface/table/reinforced/prison{ + dir = 8; + flipped = 1 }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"jsn" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/structure/machinery/fuelcell_recycler, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_cargo) -"jsD" = ( -/obj/structure/bedsheetbin{ - icon_state = "linenbin-empty" +/obj/item/storage/box/ids, +/obj/item/reagent_container/food/drinks/cans/souto/grape{ + pixel_x = 14; + pixel_y = 7 }, /turf/open/floor/prison{ - dir = 8; - icon_state = "yellow" + icon_state = "darkredfull2" + }, +/area/fiorina/station/research_cells) +"jsU" = ( +/obj/item/stack/tile/plasteel{ + pixel_x = 3; + pixel_y = 4 }, -/area/fiorina/station/lowsec) -"jsE" = ( -/obj/effect/landmark/survivor_spawner, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/civres_blue) "jta" = ( /obj/structure/bed{ icon_state = "psychbed" }, /turf/open/floor/wood, /area/fiorina/station/civres_blue) -"jtv" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" - }, -/area/fiorina/maintenance) -"jtF" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 +"jtK" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_29"; + pixel_y = 6 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzII) -"jum" = ( -/obj/item/toy/crayon/mime, +/area/fiorina/station/security) +"jtM" = ( +/obj/effect/alien/weeds/node, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"juE" = ( -/obj/structure/closet/secure_closet/hydroponics, -/obj/effect/spawner/random/pills/lowchance, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" +/area/fiorina/tumor/aux_engi) +"juX" = ( +/obj/structure/machinery/door/poddoor/almayer{ + density = 0; + dir = 4 }, -/area/fiorina/station/botany) -"juS" = ( -/obj/effect/landmark/survivor_spawner, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/security) -"juW" = ( -/obj/item/reagent_container/food/snacks/meat, -/turf/open/floor/prison, +/area/fiorina/station/park) +"jva" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_ew_full_cap" + }, +/obj/structure/platform/stair_cut, +/turf/open/floor/plating/prison, +/area/fiorina/station/disco) +"jvi" = ( +/obj/structure/closet/wardrobe/orange, +/turf/open/floor/prison{ + icon_state = "yellowfull" + }, /area/fiorina/station/lowsec) "jvm" = ( /obj/item/storage/surgical_tray, @@ -15271,17 +15593,6 @@ icon_state = "squares" }, /area/fiorina/station/medbay) -"jvp" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/tumor/ice_lab) -"jvu" = ( -/obj/item/stool, -/turf/open/floor/prison, -/area/fiorina/station/disco) "jvy" = ( /mob/living/simple_animal/hostile/carp{ desc = "He is late for work."; @@ -15289,28 +15600,6 @@ }, /turf/open/space, /area/fiorina/oob) -"jvB" = ( -/obj/structure/closet/firecloset, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/prison{ - dir = 9; - icon_state = "darkbrown2" - }, -/area/fiorina/maintenance) -"jvE" = ( -/obj/structure/inflatable, -/turf/open/floor/prison{ - dir = 5; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"jvG" = ( -/obj/structure/inflatable/popped/door, -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) "jwc" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ dir = 1; @@ -15321,50 +15610,42 @@ "jwK" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/lz/near_lzII) -"jxa" = ( -/obj/structure/bed/chair, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) -"jxy" = ( -/obj/structure/inflatable/door, +"jxc" = ( +/obj/item/stack/sandbags_empty/half, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"jxm" = ( +/obj/item/trash/hotdog, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) -"jxN" = ( -/obj/structure/machinery/vending/coffee, +/area/fiorina/station/medbay) +"jyo" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "cell_stripe" }, -/area/fiorina/station/transit_hub) -"jxY" = ( -/turf/open/floor/prison{ - icon_state = "bluecorner" +/area/fiorina/station/power_ring) +"jyv" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, -/area/fiorina/station/civres_blue) -"jya" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "greenbluecorner" + icon_state = "floor_plate" }, -/area/fiorina/station/botany) -"jyc" = ( -/obj/structure/bed/chair{ - dir = 8 +/area/fiorina/station/security) +"jyF" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 }, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/research_cells) -"jyK" = ( -/turf/open/floor/prison{ - dir = 5; - icon_state = "darkyellow2" + icon_state = "yellow" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/lowsec) "jyM" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, /turf/open/floor/plating/prison, @@ -15373,85 +15654,70 @@ /obj/effect/landmark/corpsespawner/ua_riot/burst, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"jyR" = ( -/obj/structure/largecrate/supply/supplies/tables_racks, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"jzY" = ( -/obj/item/stack/tile/plasteel, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"jAx" = ( +"jyQ" = ( +/obj/item/device/flashlight, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) +"jyY" = ( +/obj/item/explosive/grenade/high_explosive/frag, /turf/open/floor/prison{ - dir = 1; - icon_state = "cell_stripe" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/station/security) -"jAy" = ( -/obj/item/ammo_casing{ - icon_state = "cartridge_1" +/area/fiorina/tumor/servers) +"jzN" = ( +/obj/structure/machinery/vending/cigarette/colony, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/civres_blue) +"jzP" = ( +/turf/open/floor/prison{ + icon_state = "bluecorner" + }, +/area/fiorina/station/power_ring) +"jAF" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/medical_decals{ + icon_state = "triagedecalleft" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" }, -/obj/effect/landmark/survivor_spawner, -/turf/open/floor/prison, /area/fiorina/station/medbay) "jAW" = ( /obj/structure/largecrate/supply/ammo, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"jBj" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "darkyellow2" +"jBn" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, -/area/fiorina/lz/near_lzI) -"jBK" = ( -/obj/structure/largecrate/random/case/double, -/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"jBL" = ( -/obj/item/weapon/harpoon, -/obj/effect/decal/cleanable/blood{ - icon_state = "gib6" - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"jBv" = ( +/obj/structure/bed/sofa/vert/grey/bot{ + pixel_y = 8 }, -/area/fiorina/station/disco) +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_tram) "jBQ" = ( /obj/structure/bed/chair/comfy, /turf/open/floor/wood, /area/fiorina/station/park) -"jBS" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/platform_decoration{ - dir = 5 - }, +"jCe" = ( /turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/chapel) -"jCl" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "damaged2" - }, -/area/fiorina/station/security) -"jCp" = ( -/obj/structure/machinery/landinglight/ds1/delaytwo, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + dir = 5; + icon_state = "darkpurple2" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/tumor/servers) "jCt" = ( /obj/structure/machinery/light/small{ dir = 4; @@ -15478,47 +15744,25 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) -"jCQ" = ( -/obj/item/reagent_container/food/drinks/cans/waterbottle, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"jCU" = ( -/obj/structure/closet{ - density = 0; - pixel_y = 18 - }, -/obj/item/clothing/gloves/combat, -/turf/open/floor/prison{ - dir = 9; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"jDj" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/tumor/aux_engi) -"jDk" = ( -/obj/item/stack/rods, -/turf/open/floor/prison{ - dir = 8; - icon_state = "blue" +"jCO" = ( +/obj/structure/platform{ + dir = 8 }, -/area/fiorina/station/chapel) -"jDL" = ( -/obj/structure/machinery/light/double/blue{ +/obj/structure/stairs/perspective{ dir = 1; - pixel_y = 21 + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) +"jDe" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 5; + icon_state = "yellow" }, -/area/fiorina/station/medbay) +/area/fiorina/station/disco) "jDR" = ( /obj/structure/machinery/light/double/blue{ dir = 1; @@ -15526,179 +15770,193 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"jDX" = ( -/obj/item/trash/burger, +"jEa" = ( +/obj/effect/landmark/corpsespawner/engineer, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" + dir = 1; + icon_state = "bluecorner" }, -/area/fiorina/tumor/civres) -"jEb" = ( +/area/fiorina/station/power_ring) +"jEr" = ( +/obj/structure/machinery/vending/snack, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"jEy" = ( +/obj/structure/machinery/iv_drip, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" + dir = 10; + icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"jEf" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, +"jEz" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) -"jEl" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/tumor/servers) -"jEG" = ( -/obj/structure/prop/resin_prop, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/tumor/civres) "jEK" = ( /obj/structure/bed/chair/office/light{ dir = 8 }, /turf/open/floor/wood, /area/fiorina/station/research_cells) -"jES" = ( -/obj/item/device/flashlight/lamp/tripod, +"jEQ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/shuttle/dropship/flight/lz2, +/turf/open/floor/prison, +/area/fiorina/lz/console_II) +"jET" = ( +/obj/structure/barricade/metal/wired{ + dir = 4 + }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/lowsec) +"jFh" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/botany) "jFl" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"jFN" = ( -/obj/item/explosive/grenade/high_explosive/m15, -/obj/effect/decal/cleanable/blood/splatter, +"jFz" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /turf/open/floor/prison{ - icon_state = "panelscorched" + dir = 1; + icon_state = "darkbrown2" }, /area/fiorina/tumor/aux_engi) +"jFD" = ( +/obj/structure/barricade/metal{ + health = 250; + icon_state = "metal_1" + }, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/ice_lab) "jFO" = ( /obj/effect/landmark/nightmare{ insert_tag = "poolparty" }, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/park) -"jGd" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"jFP" = ( +/obj/effect/landmark/monkey_spawn, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_tram) -"jGj" = ( -/obj/structure/bed/sofa/vert/grey, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_tram) -"jGA" = ( -/turf/open/floor/prison, -/area/fiorina/station/botany) -"jGL" = ( -/obj/structure/machinery/light/double/blue{ +/area/fiorina/tumor/ice_lab) +"jGf" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"jGs" = ( +/obj/structure/toilet{ dir = 8; - pixel_x = -10; - pixel_y = 13 + pixel_y = 8 }, +/obj/structure/blocker/invisible_wall, /turf/open/floor/prison{ - dir = 8; + dir = 5; icon_state = "whitepurple" }, -/area/fiorina/station/research_cells) -"jGP" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/paper_bin{ - pixel_x = 5; - pixel_y = 22 +/area/fiorina/oob) +"jGz" = ( +/obj/structure/closet{ + density = 0; + pixel_y = 18 }, +/obj/effect/spawner/random/tool, +/obj/item/clothing/gloves/combat, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/station/flight_deck) -"jGV" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/drinks/cans/waterbottle{ - pixel_x = 8; - pixel_y = 5 + icon_state = "darkpurplefull2" }, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 +/area/fiorina/station/research_cells) +"jGC" = ( +/obj/structure/platform{ + dir = 8 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) -"jIm" = ( -/obj/item/frame/firstaid_arm_assembly, +/area/fiorina/station/power_ring) +"jHj" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) -"jIZ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/firstaid/regular, +/area/fiorina/station/power_ring) +"jHp" = ( +/obj/structure/bed/sofa/south/grey/left, /turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/fiorina/station/research_cells) -"jJb" = ( -/obj/structure/barricade/wooden{ - dir = 8 + dir = 9; + icon_state = "greenfull" }, -/turf/open/floor/plating/prison, -/area/fiorina/maintenance) -"jJh" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/objective, +/area/fiorina/station/transit_hub) +"jHz" = ( /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "floor_plate" }, /area/fiorina/tumor/servers) -"jJF" = ( -/obj/structure/prop/almayer/computers/mission_planning_system{ - density = 0; - desc = "Its a telephone, and a computer. Woah."; - name = "\improper funny telephone booth"; - pixel_y = 21 +"jHC" = ( +/obj/structure/surface/rack, +/obj/item/tool/lighter, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"jHD" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, -/obj/structure/prop/almayer/computers/mission_planning_system{ - density = 0; - desc = "Its a telephone, and a computer. Woah."; - name = "\improper funny telephone booth"; - pixel_x = 17; - pixel_y = 21 +/obj/structure/platform, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/station/botany) +"jHU" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "sterile_white" }, /area/fiorina/station/medbay) -"jJG" = ( -/obj/item/stack/sheet/wood/medium_stack, -/obj/item/stack/sheet/wood/medium_stack, -/obj/structure/surface/rack, +"jHV" = ( +/obj/item/paper, +/obj/structure/inflatable/door, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + icon_state = "darkpurplefull2" }, -/area/fiorina/maintenance) -"jJM" = ( +/area/fiorina/station/research_cells) +"jIw" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/drinks/cans/waterbottle, +/obj/structure/machinery/computer/cameras{ + dir = 4 + }, /turf/open/floor/prison{ - icon_state = "yellowfull" + icon_state = "darkredfull2" }, -/area/fiorina/station/disco) +/area/fiorina/station/security) +"jIz" = ( +/obj/item/stack/sheet/metal/medium_stack, +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) +"jJb" = ( +/obj/structure/barricade/wooden{ + dir = 8 + }, +/turf/open/floor/plating/prison, +/area/fiorina/maintenance) "jJS" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/drinks/cans/souto/grape{ @@ -15726,32 +15984,30 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"jJT" = ( -/obj/item/stack/rods, -/turf/open/floor/prison, -/area/fiorina/station/security) -"jKb" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_sn_full_cap" +"jJZ" = ( +/obj/item/ammo_magazine/shotgun/buckshot, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" }, -/obj/structure/platform{ - dir = 8 +/area/fiorina/station/central_ring) +"jKv" = ( +/obj/item/tool/warning_cone, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" }, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"jKm" = ( -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/prison, -/area/fiorina/station/security) -"jKG" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_29"; - pixel_y = 10 +/area/fiorina/station/telecomm/lz1_cargo) +"jKz" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/landinglight/ds1/delaytwo{ + dir = 1 }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/fiorina/lz/near_lzI) "jKI" = ( /obj/structure/platform/kutjevo/smooth{ dir = 1 @@ -15766,66 +16022,37 @@ }, /turf/open/space, /area/fiorina/oob) -"jKL" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" - }, -/obj/structure/platform, -/turf/open/floor/prison{ - dir = 10; - icon_state = "bright_clean_marked" - }, -/area/fiorina/station/power_ring) "jKR" = ( /obj/structure/machinery/shower{ dir = 4 }, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/tumor/ice_lab) -"jLs" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"jLF" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/prison{ - dir = 5; - icon_state = "green" - }, -/area/fiorina/station/chapel) -"jLK" = ( -/obj/item/stack/sheet/metal, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison{ - icon_state = "platingdmg1" +"jLe" = ( +/obj/structure/machinery/constructable_frame, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"jLC" = ( +/obj/item/ammo_casing{ + dir = 8; + icon_state = "cartridge_2" }, -/area/fiorina/station/security) -"jLN" = ( -/obj/structure/closet/secure_closet/personal, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 8; + icon_state = "darkyellowcorners2" }, /area/fiorina/station/telecomm/lz1_cargo) -"jLS" = ( -/obj/structure/closet/bombcloset, -/obj/effect/spawner/random/gun/rifle/midchance, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/prison{ - dir = 6; - icon_state = "darkyellow2" +"jLD" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/machinery/cm_vending/sorted/tech/comp_storage{ + layer = 3.5 }, -/area/fiorina/station/flight_deck) -"jMe" = ( -/obj/structure/bed/chair/office/dark, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/power_ring) "jMf" = ( /obj/item/stack/tile/plasteel{ pixel_x = 5; @@ -15833,13 +16060,21 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) +"jMh" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/station/medbay) "jMk" = ( /obj/item/tool/screwdriver, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"jMz" = ( -/obj/structure/machinery/power/smes/buildable, -/turf/open/floor/prison, +"jMv" = ( +/obj/item/tool/wrench, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, /area/fiorina/station/power_ring) "jMH" = ( /obj/structure/barricade/metal/wired{ @@ -15849,6 +16084,16 @@ icon_state = "plate" }, /area/fiorina/tumor/ship) +"jNi" = ( +/obj/item/ammo_casing{ + dir = 2; + icon_state = "casing_5" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) "jNl" = ( /obj/structure/ice/thin/indestructible{ icon_state = "Straight" @@ -15856,84 +16101,105 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/station/research_cells) -"jNA" = ( -/obj/structure/bed/sofa/vert/grey/top, +"jNw" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "green" + dir = 9; + icon_state = "blue" }, -/area/fiorina/station/transit_hub) -"jOr" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/processor{ - desc = "It CAN blend it."; - icon_state = "blender_e"; - name = "Blendomatic"; - pixel_x = -2; - pixel_y = 10 +/area/fiorina/tumor/servers) +"jOb" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"jOd" = ( +/obj/effect/decal{ + icon = 'icons/obj/items/policetape.dmi'; + icon_state = "engineering_h"; + layer = 2.5; + pixel_y = -11 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" + dir = 8; + icon_state = "darkyellow2" }, -/area/fiorina/station/civres_blue) -"jOt" = ( +/area/fiorina/station/flight_deck) +"jOv" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 5; + icon_state = "blue" + }, +/area/fiorina/station/power_ring) +"jOY" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/drinks/coffee{ - pixel_x = 11; - pixel_y = 14 +/obj/structure/window/reinforced{ + dir = 8 }, +/obj/item/stack/cable_coil, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/fiberbush) -"jOJ" = ( -/obj/structure/machinery/space_heater, +/area/fiorina/station/security) +"jPK" = ( +/turf/closed/shuttle/elevator{ + dir = 6 + }, +/area/fiorina/station/telecomm/lz1_cargo) +"jPM" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "sterile_white" + }, +/area/fiorina/station/research_cells) +"jPY" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "Residential Apartment" }, -/area/fiorina/station/medbay) -"jOO" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/station/flight_deck) -"jOW" = ( -/obj/item/trash/eat, +/area/fiorina/tumor/servers) +"jQc" = ( +/obj/item/organ/lungs, +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzI) -"jPz" = ( -/obj/effect/alien/weeds/node, +/area/fiorina/station/telecomm/lz1_cargo) +"jQs" = ( /turf/open/floor/prison{ - dir = 5; + dir = 8; icon_state = "whitegreen" }, -/area/fiorina/tumor/ice_lab) -"jPK" = ( -/turf/closed/shuttle/elevator{ - dir = 6 - }, -/area/fiorina/station/telecomm/lz1_cargo) -"jPO" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/station/medbay) +"jQy" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "kitchen" }, -/obj/structure/barricade/wooden{ - dir = 8 +/area/fiorina/tumor/civres) +"jQS" = ( +/obj/structure/closet/secure_closet/guncabinet{ + req_access = null }, +/obj/item/clothing/under/marine/ua_riot, +/obj/item/clothing/suit/storage/marine/veteran/ua_riot, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "redfull" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/security) "jRf" = ( /obj/structure/girder/displaced, /turf/open/floor/plating/prison, @@ -15954,74 +16220,104 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"jRp" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_sn_full_cap" - }, +"jRC" = ( /obj/structure/platform{ dir = 4 }, +/obj/structure/platform, +/obj/structure/platform_decoration{ + dir = 6 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/transit_hub) +"jRF" = ( +/obj/item/stack/sheet/metal, /turf/open/floor/plating/prison, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "jRL" = ( /obj/structure/extinguisher_cabinet, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/disco) -"jRR" = ( -/obj/structure/inflatable, -/turf/open/floor/prison{ - icon_state = "yellowfull" +"jSc" = ( +/obj/structure/bed{ + icon_state = "abed" }, -/area/fiorina/station/lowsec) -"jSC" = ( -/obj/structure/largecrate/random/case/small, +/obj/item/reagent_container/food/drinks/flask/marine, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" + dir = 10; + icon_state = "whitepurple" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/research_cells) "jSD" = ( /obj/item/storage/toolbox/mechanical, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"jTe" = ( -/obj/structure/prop/structure_lattice{ - dir = 4; - health = 300 - }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"jSE" = ( +/obj/structure/closet/crate/trashcart, +/obj/item/trash/waffles, +/obj/item/stack/sheet/mineral/plastic, +/obj/item/stack/sheet/mineral/plastic, +/obj/item/stack/sheet/mineral/plastic, +/turf/open/floor/plating/prison, +/area/fiorina/maintenance) +"jSU" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/recharger, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"jSZ" = ( +/obj/structure/barricade/wooden{ + dir = 1 }, -/area/fiorina/tumor/fiberbush) -"jTk" = ( /turf/open/floor/prison{ + dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_tram) -"jTG" = ( -/obj/item/device/flashlight/lamp/tripod, +/area/fiorina/station/telecomm/lz1_cargo) +"jTo" = ( +/obj/item/prop/helmetgarb/gunoil, /turf/open/floor/prison{ - dir = 9; + dir = 4; icon_state = "whitegreen" }, /area/fiorina/station/medbay) +"jTD" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) "jTJ" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/station/lowsec) -"jUp" = ( -/obj/structure/window/reinforced/tinted, -/obj/item/storage/briefcase, -/obj/structure/surface/table/reinforced/prison, +"jTN" = ( +/obj/structure/filingcabinet{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/structure/filingcabinet{ + pixel_x = -8; + pixel_y = 4 + }, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "bluefull" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/power_ring) +"jUa" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) "jUs" = ( /obj/structure/machinery/light/double/blue{ dir = 1; @@ -16029,45 +16325,36 @@ }, /turf/open/floor/prison/chapel_carpet, /area/fiorina/station/chapel) -"jUz" = ( -/obj/structure/surface/table/reinforced/prison{ - flipped = 1 +"jUG" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" }, -/obj/item/reagent_container/food/snacks/eat_bar, +/turf/open/floor/plating/prison, +/area/fiorina/station/park) +"jUP" = ( +/obj/item/trash/c_tube, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"jUB" = ( -/obj/structure/barricade/wooden{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreen" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"jUI" = ( -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" +/area/fiorina/station/telecomm/lz1_cargo) +"jVj" = ( +/obj/structure/bed/chair, +/obj/structure/extinguisher_cabinet{ + pixel_y = 32 }, -/area/fiorina/station/park) -"jUK" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/station/telecomm/lz1_tram) -"jVC" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/recharger{ - pixel_y = 4 + icon_state = "yellowfull" }, +/area/fiorina/station/disco) +"jVt" = ( +/obj/structure/machinery/vending/coffee, /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/oob) +/area/fiorina/tumor/ice_lab) "jVE" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer{ @@ -16082,21 +16369,23 @@ }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"jVH" = ( +"jVM" = ( /turf/open/floor/prison{ - dir = 5; - icon_state = "darkbrown2" + icon_state = "green" }, -/area/fiorina/tumor/aux_engi) -"jVQ" = ( -/obj/structure/window/framed/prison/reinforced, +/area/fiorina/station/botany) +"jWg" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "floor_plate" + }, +/area/fiorina/tumor/aux_engi) +"jWk" = ( +/obj/structure/bed/chair{ + dir = 8 }, -/area/fiorina/station/security) -"jVW" = ( -/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ + dir = 8; icon_state = "blue" }, /area/fiorina/station/power_ring) @@ -16109,10 +16398,32 @@ name = "astroturf" }, /area/fiorina/station/research_cells) -"jWB" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/prison, -/area/fiorina/station/security) +"jWE" = ( +/obj/item/trash/used_stasis_bag{ + desc = "Wow, instant sand. They really have everything in space."; + name = "Insta-Sand! bag" + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "blue" + }, +/area/fiorina/station/civres_blue) +"jWI" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"jWY" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/obj/item/storage/fancy/cigar/tarbacks, +/turf/open/floor/prison{ + dir = 6; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) "jXj" = ( /obj/item/stack/rods, /turf/open/floor/plating/prison, @@ -16121,97 +16432,77 @@ /obj/structure/girder/reinforced, /turf/open/floor/almayer, /area/fiorina/tumor/ship) -"jXv" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/prison, -/area/fiorina/station/park) "jXz" = ( /turf/closed/wall/prison, /area/fiorina/tumor/servers) -"jXB" = ( -/obj/structure/machinery/computer/cameras{ - network = list("omega") +"jXV" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) +"jXZ" = ( +/turf/closed/shuttle/elevator, +/area/fiorina/tumor/aux_engi) +"jYm" = ( +/obj/structure/machinery/constructable_frame, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/structure/surface/table/reinforced/prison, +/area/fiorina/station/lowsec) +"jYn" = ( +/obj/structure/platform, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) -"jXC" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/pizzabox/mushroom, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"jXD" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/station/transit_hub) +"jYs" = ( +/obj/structure/machinery/door/airlock/prison_hatch/autoname{ + dir = 1 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/research_cells) +"jYt" = ( +/obj/structure/barricade/metal/wired{ + dir = 8 }, +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - dir = 1; - icon_state = "whitepurple" + dir = 8; + icon_state = "darkyellow2" }, -/area/fiorina/station/research_cells) -"jXO" = ( -/obj/structure/machinery/cm_vending/sorted/medical/no_access, +/area/fiorina/lz/near_lzI) +"jYK" = ( /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) -"jXQ" = ( -/obj/structure/platform{ - dir = 8 - }, -/obj/effect/decal/medical_decals{ - icon_state = "triagedecalbottomleft" + icon_state = "kitchen" }, +/area/fiorina/station/civres_blue) +"jYM" = ( +/obj/item/trash/chips, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "sterile_white" }, -/area/fiorina/station/medbay) -"jXZ" = ( -/turf/closed/shuttle/elevator, -/area/fiorina/tumor/aux_engi) -"jYd" = ( +/area/fiorina/station/research_cells) +"jYU" = ( /obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor/prison{ dir = 4; + icon_state = "darkyellow2" + }, +/area/fiorina/station/telecomm/lz1_tram) +"jYV" = ( +/obj/structure/stairs/perspective{ + dir = 8; icon_state = "p_stair_sn_full_cap" }, /obj/structure/platform{ dir = 4 }, -/turf/open/floor/plating/prison, +/turf/open/floor/prison, /area/fiorina/station/power_ring) -"jYs" = ( -/obj/structure/machinery/door/airlock/prison_hatch/autoname{ - dir = 1 - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/research_cells) -"jYB" = ( -/obj/structure/machinery/cm_vending/sorted/medical/blood, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) -"jYS" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 1 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/lz/near_lzII) -"jZb" = ( -/obj/item/ammo_magazine/shotgun/buckshot, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/lowsec) "jZc" = ( /obj/structure/disposalpipe/segment{ icon_state = "delivery_outlet"; @@ -16221,52 +16512,43 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"jZR" = ( -/obj/item/frame/rack, -/obj/structure/barricade/handrail/type_b{ - dir = 1 - }, +"jZk" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/station/lowsec) -"kau" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/stool{ - pixel_y = 12 +/area/fiorina/station/telecomm/lz1_tram) +"kag" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" }, +/area/fiorina/station/power_ring) +"kat" = ( /turf/open/floor/prison{ - icon_state = "yellowfull" + dir = 1; + icon_state = "green" }, -/area/fiorina/station/lowsec) -"kaB" = ( -/obj/effect/decal{ - icon = 'icons/obj/items/policetape.dmi'; - icon_state = "engineering_h"; - layer = 2.5; - pixel_y = -11 +/area/fiorina/station/botany) +"kaw" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, -/obj/structure/closet/bombcloset, +/obj/structure/platform, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/flight_deck) -"kaC" = ( -/obj/item/stack/cable_coil/random, -/turf/open/floor/prison{ - icon_state = "redfull" - }, /area/fiorina/station/security) -"kaH" = ( -/obj/structure/surface/rack, -/obj/item/tank/emergency_oxygen/engi, +"kaF" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/drinks/bottle/sake, /turf/open/floor/prison{ - dir = 6; - icon_state = "blue" + dir = 1; + icon_state = "darkyellow2" }, -/area/fiorina/station/power_ring) +/area/fiorina/lz/near_lzI) "kaO" = ( /obj/structure/machinery/light/double/blue{ dir = 4; @@ -16282,14 +16564,12 @@ /obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/tumor/aux_engi) -"kbg" = ( -/obj/structure/machinery/computer/drone_control, -/obj/structure/window/reinforced{ - dir = 4 +"kbh" = ( +/obj/item/explosive/grenade/incendiary/molotov, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/structure/window/reinforced, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) +/area/fiorina/station/lowsec) "kbi" = ( /obj/item/ammo_casing{ dir = 6; @@ -16298,129 +16578,48 @@ /obj/effect/spawner/random/gun/rifle/midchance, /turf/open/floor/wood, /area/fiorina/station/park) -"kbA" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "blue_plate" - }, -/area/fiorina/station/botany) -"kbO" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) -"kbT" = ( -/turf/open/floor/plating/prison, -/area/fiorina/tumor/fiberbush) -"kcn" = ( -/obj/effect/decal/medical_decals{ - icon_state = "triagedecaltopleft" - }, +"kbj" = ( +/obj/structure/surface/rack, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"kcw" = ( -/obj/structure/machinery/computer3/server/rack, -/obj/structure/window{ - dir = 4 + icon_state = "floor_plate" }, +/area/fiorina/station/telecomm/lz1_cargo) +"kbo" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/tumor/servers) -"kcz" = ( -/obj/structure/platform{ - dir = 1 + dir = 8; + icon_state = "greenblue" }, -/obj/structure/platform{ - dir = 8 +/area/fiorina/station/botany) +"kbt" = ( +/obj/structure/janitorialcart, +/obj/item/tool/mop{ + pixel_x = 7; + pixel_y = -1 }, -/obj/structure/platform_decoration{ - dir = 5 +/obj/item/toy/bikehorn/rubberducky{ + desc = "He's already fed up with your bullshit face."; + name = "Dug the duck"; + pixel_x = -3; + pixel_y = 8 }, /turf/open/floor/prison, /area/fiorina/station/power_ring) -"kcO" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/ashtray/plastic, -/obj/item/trash/cigbutt/ucigbutt{ - pixel_x = 5; - pixel_y = 12 - }, -/obj/item/trash/cigbutt/ucigbutt, -/obj/item/trash/cigbutt/cigarbutt{ - pixel_x = 5; - pixel_y = 11 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"kcP" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/disco) -"kdb" = ( -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreencorner" - }, -/area/fiorina/station/medbay) -"kdk" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/phone{ - pixel_x = 6; - pixel_y = -15 - }, -/obj/item/phone{ - pixel_y = 7 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/security) -"kdo" = ( -/obj/structure/inflatable, -/turf/open/floor/prison{ - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"kdw" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/microwave{ - desc = "So uh yeah, about that cat..."; - icon_state = "mwbloodyo"; - pixel_y = 6 - }, +"kbT" = ( +/turf/open/floor/plating/prison, +/area/fiorina/tumor/fiberbush) +"kdq" = ( +/obj/structure/machinery/vending/hydronutrients, /turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" + dir = 9; + icon_state = "greenfull" }, +/area/fiorina/station/botany) +"kds" = ( +/obj/item/clothing/suit/storage/hazardvest, +/turf/open/floor/prison, /area/fiorina/station/civres_blue) -"kdG" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "blue" - }, -/area/fiorina/tumor/servers) "kdK" = ( /obj/item/stack/tile/plasteel, /turf/open/floor/carpet, @@ -16429,81 +16628,76 @@ /obj/structure/largecrate/random/case/small, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/lz/near_lzI) -"keF" = ( +"kfL" = ( +/obj/structure/machinery/photocopier, +/turf/open/floor/prison, +/area/fiorina/station/security) +"kfW" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/device/flash, -/turf/open/floor/prison{ - icon_state = "redfull" +/obj/item/ashtray/plastic, +/obj/item/clothing/mask/cigarette, +/obj/item/trash/cigbutt/ucigbutt{ + pixel_y = 8 }, -/area/fiorina/station/security) -"keL" = ( -/obj/structure/prop/structure_lattice{ - dir = 4 +/obj/structure/sign/nosmoking_1{ + pixel_y = 30 }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 +/turf/open/floor/plating/prison, +/area/fiorina/maintenance) +"kfY" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" }, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) +"kgp" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "yellow" }, -/area/fiorina/station/security/wardens) -"keV" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/effect/spawner/random/gun/rifle, +/area/fiorina/station/lowsec) +"kgG" = ( /turf/open/floor/prison{ dir = 4; - icon_state = "greenfull" + icon_state = "darkyellow2" }, -/area/fiorina/station/chapel) -"kfl" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" +/area/fiorina/station/telecomm/lz1_cargo) +"kgN" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "yellowfull" }, -/turf/open/floor/plating/prison, -/area/fiorina/station/flight_deck) -"kfA" = ( +/area/fiorina/station/lowsec) +"kgQ" = ( +/obj/item/stool, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "floor_plate" + }, +/area/fiorina/station/lowsec) +"kgT" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper/carbon, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/area/fiorina/station/power_ring) -"kfE" = ( -/obj/docking_port/stationary/marine_dropship/lz2, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzII) -"kfF" = ( -/obj/item/stack/sheet/metal, -/obj/item/stack/sheet/metal, /turf/open/floor/prison{ dir = 10; icon_state = "sterile_white" }, -/area/fiorina/station/research_cells) -"kfW" = ( +/area/fiorina/station/medbay) +"kgY" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/ashtray/plastic, -/obj/item/clothing/mask/cigarette, -/obj/item/trash/cigbutt/ucigbutt{ - pixel_y = 8 - }, -/obj/structure/sign/nosmoking_1{ - pixel_y = 30 - }, -/turf/open/floor/plating/prison, -/area/fiorina/maintenance) -"kge" = ( -/obj/effect/spawner/random/gun/rifle/highchance, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" + dir = 1; + icon_state = "blue_plate" }, -/area/fiorina/lz/near_lzI) -"kgP" = ( -/obj/item/tool/wrench, +/area/fiorina/station/botany) +"khd" = ( +/obj/effect/spawner/random/tool, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrown2" }, /area/fiorina/tumor/aux_engi) "khu" = ( @@ -16517,66 +16711,60 @@ icon_state = "squares" }, /area/fiorina/station/civres_blue) -"kic" = ( -/obj/structure/barricade/wooden{ - dir = 1 - }, +"khw" = ( +/obj/effect/spawner/random/gun/rifle/midchance, /turf/open/floor/prison{ - dir = 5; - icon_state = "whitegreen" + dir = 8; + icon_state = "blue" }, -/area/fiorina/station/medbay) -"kik" = ( +/area/fiorina/station/power_ring) +"khY" = ( +/obj/structure/closet/secure_closet/medical3, /turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/security) -"kil" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/wood, -/area/fiorina/station/civres_blue) -"kis" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/station/medbay) +"kid" = ( +/obj/item/ammo_casing{ + icon_state = "casing_8" }, -/turf/open/floor/prison{ - icon_state = "yellowfull" +/obj/structure/surface/table/reinforced/prison{ + dir = 4; + flipped = 1 }, -/area/fiorina/station/lowsec) -"kiE" = ( -/obj/structure/bed/chair, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "sterile_white" }, /area/fiorina/station/medbay) -"kiW" = ( -/obj/item/ammo_casing{ - icon_state = "casing_1" - }, +"kii" = ( +/obj/effect/alien/weeds/node, /turf/open/floor/prison{ - icon_state = "darkyellow2" + dir = 9; + icon_state = "whitegreen" }, -/area/fiorina/station/telecomm/lz1_cargo) -"kjo" = ( -/obj/item/device/flashlight, +/area/fiorina/tumor/ice_lab) +"kil" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/wood, +/area/fiorina/station/civres_blue) +"kiR" = ( +/obj/item/tool/weldpack, +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) +"kiT" = ( +/obj/item/stack/sheet/metal, /turf/open/floor/prison{ - icon_state = "darkyellow2" + icon_state = "darkpurplefull2" }, -/area/fiorina/lz/near_lzI) -"kjz" = ( -/obj/item/trash/cigbutt/cigarbutt, +/area/fiorina/station/research_cells) +"kjt" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" + dir = 1; + icon_state = "whitepurple" }, -/area/fiorina/station/flight_deck) -"kjA" = ( -/obj/structure/platform_decoration, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) +/area/fiorina/station/research_cells) "kjP" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/door/window/northleft, @@ -16591,81 +16779,105 @@ name = "astroturf" }, /area/fiorina/station/park) -"kkk" = ( -/obj/structure/bed/chair/comfy{ - dir = 4 +"kjX" = ( +/obj/structure/bed/chair/comfy, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) +"kka" = ( +/obj/item/stack/sheet/metal{ + amount = 5 }, /turf/open/floor/prison{ - dir = 9; - icon_state = "whitegreen" + dir = 1; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) +"kke" = ( +/obj/effect/decal/medical_decals{ + icon_state = "triagedecaldir" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"kky" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, +"kkU" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/turf/open/space/basic, +/area/fiorina/oob) +"kle" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 5 + }, /turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) -"klb" = ( -/obj/item/tool/wirecutters, +/area/fiorina/station/botany) +"klh" = ( +/obj/structure/machinery/vending/security, /turf/open/floor/prison{ - dir = 1; - icon_state = "bluecorner" + icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"klg" = ( -/obj/item/stack/sheet/cardboard, -/turf/open/floor/prison, -/area/fiorina/station/disco) +/area/fiorina/station/security) "klp" = ( /turf/closed/shuttle/ert{ icon_state = "rightengine_1"; opacity = 0 }, /area/fiorina/tumor/ship) -"klv" = ( -/obj/item/device/flashlight/lamp/tripod, +"klt" = ( +/obj/structure/closet/secure_closet/freezer/fridge/full, /turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" + icon_state = "kitchen" }, -/area/fiorina/station/disco) +/area/fiorina/station/power_ring) +"klB" = ( +/obj/structure/machinery/landinglight/ds2/delayone, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) "klC" = ( /obj/structure/surface/table/reinforced/prison{ flipped = 1 }, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"klG" = ( -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/surface/rack, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"klL" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_sn_full_cap" +"klN" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/donut_box{ + pixel_y = 6 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue" + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) +"kmm" = ( +/obj/structure/bed/chair/comfy{ + dir = 1 }, -/area/fiorina/station/chapel) -"kmB" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "cell_stripe" + dir = 6; + icon_state = "yellow" + }, +/area/fiorina/station/disco) +"kmn" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_29"; + pixel_y = 6 }, -/area/fiorina/station/telecomm/lz1_tram) -"kmE" = ( -/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - icon_state = "darkbrown2" + icon_state = "floor_plate" }, -/area/fiorina/station/park) +/area/fiorina/station/security/wardens) "kmL" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic/autoname{ dir = 1; @@ -16681,58 +16893,70 @@ /obj/structure/surface/table/woodentable/fancy, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"kng" = ( -/obj/item/tool/stamp, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) +"knb" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) "knh" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"knt" = ( -/obj/effect/decal/cleanable/blood/splatter{ - icon_state = "gibup1" +"kny" = ( +/obj/item/stack/tile/plasteel{ + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/ice_lab) +"knW" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/station_alert{ + dir = 8 }, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "sterile_white" }, -/area/fiorina/station/medbay) -"knu" = ( -/obj/structure/bed/chair{ - dir = 8 +/area/fiorina/tumor/ice_lab) +"knY" = ( +/obj/structure/machinery/door/poddoor/almayer/locked{ + indestructible = 1; + name = "launch bay door" }, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" + dir = 4; + icon_state = "cell_stripe" }, -/area/fiorina/station/park) -"knv" = ( -/obj/structure/platform_decoration{ - dir = 1 +/area/fiorina/oob) +"kob" = ( +/obj/item/ammo_casing{ + icon_state = "cartridge_2" }, /turf/open/floor/prison{ - dir = 6; - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"kny" = ( -/obj/item/stack/tile/plasteel{ - pixel_x = 5; - pixel_y = 5 + icon_state = "floor_plate" }, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/ice_lab) -"kov" = ( -/obj/item/stack/rods, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - density = 0; - dir = 4 +/area/fiorina/station/central_ring) +"kok" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" }, +/area/fiorina/station/transit_hub) +"kon" = ( +/obj/structure/surface/rack, +/obj/item/stack/sheet/wood/medium_stack, /turf/open/floor/prison{ - icon_state = "platingdmg3" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/security) +/area/fiorina/maintenance) +"kor" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) "kow" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, @@ -16750,23 +16974,45 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"koV" = ( -/obj/structure/platform{ - dir = 4 +"koH" = ( +/obj/structure/surface/table/almayer, +/obj/item/clipboard, +/obj/item/paper, +/obj/item/tool/pen, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" }, -/obj/structure/platform, +/area/fiorina/station/medbay) +"koK" = ( +/obj/effect/decal{ + icon = 'icons/obj/items/policetape.dmi'; + icon_state = "engineering_h"; + layer = 2.5; + pixel_y = -11 + }, +/obj/structure/closet/bombcloset, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/flight_deck) +"koY" = ( /obj/structure/platform_decoration{ - dir = 6 + dir = 4 }, -/obj/structure/closet/emcloset, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"kpm" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "green" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/transit_hub) +/area/fiorina/station/medbay) +"kpe" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + dir = 8; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) "kpp" = ( /obj/item/trash/popcorn, /obj/structure/cable/heavyduty{ @@ -16774,55 +17020,74 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"kpN" = ( -/obj/item/prop/helmetgarb/spacejam_tickets{ - desc = "Low security prisoners would smuggle in arcade tickets after visitations. The tickets act as a stand in for paper currency in the prison economy, they're backed by the cigarette standard, since one ticket nets one cigarette at the prize booth. The cigarettes also get smuggled back in."; - name = "\improper arcade tickets"; - pixel_x = 1; - pixel_y = -1 - }, +"kpq" = ( /turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/station/research_cells) -"kqe" = ( -/obj/structure/monorail{ - name = "launch track" - }, -/obj/structure/platform{ - dir = 8; - layer = 2.5 + icon_state = "whitegreen" }, -/turf/open/floor/plating/prison, -/area/fiorina/station/telecomm/lz1_tram) -"kqr" = ( -/obj/item/ammo_magazine/smg/mp5, +/area/fiorina/tumor/ice_lab) +"kpu" = ( +/obj/structure/closet/wardrobe/orange, +/obj/item/explosive/mine/pmc, +/obj/effect/spawner/random/gun/smg, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" + icon_state = "yellowfull" + }, +/area/fiorina/station/lowsec) +"kpv" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 4 }, -/area/fiorina/station/telecomm/lz1_cargo) -"kqz" = ( /turf/open/floor/prison{ dir = 10; icon_state = "sterile_white" }, /area/fiorina/station/medbay) +"kpH" = ( +/obj/effect/decal/medical_decals{ + icon_state = "cryomid" + }, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"kpR" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/device/flashlight/lamp/candelabra{ + layer = 3.2; + pixel_x = 1; + pixel_y = 13 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/fiorina/station/chapel) +"kqy" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/ice_lab) "kqC" = ( /turf/closed/wall/prison, /area/fiorina/station/lowsec) -"kqF" = ( -/obj/effect/landmark/objective_landmark/far, +"kqJ" = ( +/obj/item/trash/used_stasis_bag, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 5; + icon_state = "darkyellow2" }, -/area/fiorina/station/power_ring) -"kqP" = ( -/obj/structure/surface/table/reinforced/prison, +/area/fiorina/lz/near_lzI) +"krb" = ( +/obj/structure/bookcase/manuals/engineering, /turf/open/floor/prison{ - icon_state = "yellowfull" + icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) +/area/fiorina/tumor/civres) "krn" = ( /obj/structure/barricade/handrail/type_b{ dir = 8; @@ -16832,51 +17097,35 @@ name = "astroturf" }, /area/fiorina/tumor/servers) -"krp" = ( -/obj/item/ammo_casing{ - icon_state = "casing_9_1" - }, -/turf/open/floor/prison{ - dir = 8; - icon_state = "yellowcorner" - }, -/area/fiorina/station/lowsec) -"krr" = ( -/obj/structure/machinery/filtration/console, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"krG" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/structure/platform{ +"krE" = ( +/obj/structure/bed/chair/comfy{ dir = 8 }, -/obj/structure/platform_decoration{ - dir = 5 - }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"krQ" = ( -/obj/item/trash/popcorn, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "darkyellow2" }, -/area/fiorina/station/disco) -"krT" = ( +/area/fiorina/station/flight_deck) +"ksu" = ( /obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "darkbrown2" - }, -/area/fiorina/maintenance) -"ksk" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + dir = 10; + icon_state = "yellow" }, +/area/fiorina/station/disco) +"ksE" = ( +/obj/structure/inflatable, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) +"ksL" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_ew_full_cap" }, +/obj/structure/platform/stair_cut, +/turf/open/floor/plating/prison, /area/fiorina/station/security) "ksV" = ( /obj/structure/barricade/handrail/type_b{ @@ -16887,71 +17136,45 @@ name = "astroturf" }, /area/fiorina/tumor/servers) -"kte" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/tool/kitchen/rollingpin, +"ksY" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) +"ktq" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "kitchen" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/power_ring) -"kty" = ( -/obj/structure/prop/ice_colony/surveying_device, +/area/fiorina/station/park) +"ktv" = ( +/obj/item/trash/sosjerky, +/turf/open/floor/prison, +/area/fiorina/station/security) +"ktC" = ( +/obj/item/explosive/grenade/high_explosive/frag, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue" + icon_state = "redfull" }, -/area/fiorina/tumor/servers) -"ktD" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/station/security) +"kue" = ( +/obj/structure/machinery/computer3/server/rack, +/obj/structure/window{ + dir = 4 }, -/area/fiorina/station/transit_hub) -"ktI" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/poster, /turf/open/floor/prison{ icon_state = "darkpurplefull2" }, -/area/fiorina/station/research_cells) -"kul" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "greenblue" - }, -/area/fiorina/station/botany) -"kur" = ( -/obj/item/trash/chips, +/area/fiorina/tumor/servers) +"kvg" = ( /obj/structure/machinery/light/double/blue{ dir = 4; pixel_x = 10; - pixel_y = 13 + pixel_y = -3 }, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + icon_state = "darkpurplefull2" }, /area/fiorina/tumor/servers) -"kuS" = ( -/obj/structure/machinery/optable{ - desc = "This maybe could be used for advanced medical procedures."; - name = "Exam Table" - }, -/obj/item/bedsheet/ce{ - desc = "It crinkles, aggressively."; - name = "sterile wax sheet" - }, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/medbay) -"kvd" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/drinks/golden_cup, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) "kvh" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 5 @@ -16967,62 +17190,29 @@ name = "astroturf" }, /area/fiorina/station/park) -"kvn" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/weapon/gun/energy/taser, +"kvu" = ( +/obj/item/weapon/gun/rifle/m16, +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 10; + icon_state = "floor_plate" }, -/area/fiorina/station/security) +/area/fiorina/station/telecomm/lz1_cargo) "kvx" = ( /obj/effect/landmark/monkey_spawn, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/medbay) -"kwa" = ( -/obj/structure/closet/crate/science{ - density = 0; - icon_state = "open_science"; - opened = 1 - }, -/obj/item/organ/eyes, -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"kwm" = ( -/obj/structure/bed/chair/comfy, -/turf/open/floor/prison{ - icon_state = "darkyellow2" - }, -/area/fiorina/station/flight_deck) -"kwv" = ( -/obj/item/reagent_container/food/drinks/sillycup, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"kwy" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/snacks/hugemushroomslice, -/obj/item/reagent_container/food/snacks/hugemushroomslice{ - pixel_y = 3 - }, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/fiorina/station/power_ring) -"kwK" = ( -/obj/structure/bed/chair{ - dir = 4; - pixel_x = -5 - }, -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 +"kvT" = ( +/obj/item/prop/helmetgarb/spacejam_tickets{ + desc = "A ticket to Souto Man's raffle!"; + name = "\improper Souto Raffle Ticket"; + pixel_x = 7; + pixel_y = 6 }, /turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" + icon_state = "blue" }, -/area/fiorina/station/medbay) +/area/fiorina/station/chapel) "kwL" = ( /obj/item/fuelCell, /obj/structure/platform, @@ -17037,61 +17227,89 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) +"kwZ" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/prison{ + dir = 6; + icon_state = "blue" + }, +/area/fiorina/station/civres_blue) "kxf" = ( /obj/item/stack/sheet/wood, /turf/open/floor/wood, /area/fiorina/station/park) -"kxo" = ( -/obj/structure/sign/poster{ - icon_state = "poster10"; - pixel_x = 32 +"kxl" = ( +/obj/structure/barricade/handrail/type_b{ + layer = 3.4 + }, +/obj/structure/barricade/handrail/type_b{ + dir = 8 + }, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"kxM" = ( -/obj/item/stack/rods, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrown2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/tumor/ice_lab) "kxQ" = ( /obj/structure/prop/resin_prop{ icon_state = "rack" }, /turf/open/floor/plating/prison, /area/fiorina/station/park) -"kxV" = ( -/obj/item/device/motiondetector, +"kxU" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "green" + }, +/area/fiorina/station/transit_hub) +"kyd" = ( +/obj/structure/machinery/vending/cola, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/disco) -"kye" = ( -/obj/structure/bed/chair{ - dir = 4; - pixel_x = -5 +/area/fiorina/station/security/wardens) +"kyh" = ( +/obj/structure/platform_decoration{ + dir = 4 }, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"kyF" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreen" + dir = 8; + icon_state = "blue" }, -/area/fiorina/station/medbay) -"kyl" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_17"; - pixel_y = 13 +/area/fiorina/station/civres_blue) +"kyU" = ( +/obj/item/prop/helmetgarb/spacejam_tickets{ + desc = "Low security prisoners would smuggle in arcade tickets after visitations. The tickets act as a stand in for paper currency in the prison economy, they're backed by the cigarette standard, since one ticket nets one cigarette at the prize booth. The cigarettes also get smuggled back in."; + name = "\improper arcade tickets"; + pixel_x = 1; + pixel_y = -1 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 9; + icon_state = "whitepurple" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/research_cells) "kyW" = ( /obj/item/stack/sandbags/large_stack, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) +"kyZ" = ( +/obj/item/clothing/under/CM_uniform, +/turf/open/floor/prison, +/area/fiorina/station/security) "kze" = ( /obj/structure/machinery/door/airlock/almayer/generic{ name = "Residential Apartment" @@ -17104,130 +17322,164 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) +"kzs" = ( +/obj/item/stack/sandbags/large_stack, +/turf/open/floor/prison{ + dir = 4; + icon_state = "green" + }, +/area/fiorina/tumor/civres) +"kzx" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "blue" + }, +/area/fiorina/station/civres_blue) "kzz" = ( /obj/item/tool/shovel/etool, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"kzI" = ( -/obj/structure/toilet{ - dir = 8; - pixel_y = 8 - }, -/obj/structure/blocker/invisible_wall, +"kzB" = ( +/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison{ dir = 5; - icon_state = "whitepurple" - }, -/area/fiorina/oob) -"kzN" = ( -/turf/open/floor/prison{ - icon_state = "floorscorched2" - }, -/area/fiorina/station/security) -"kzO" = ( -/obj/structure/monorail{ - name = "launch track" + icon_state = "green" }, +/area/fiorina/station/chapel) +"kzL" = ( +/obj/structure/bed/sofa/south/grey/right, /obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" }, -/turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) -"kAo" = ( +"kzR" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/clipboard, +/obj/structure/machinery/computer/cameras{ + dir = 4 + }, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkredfull2" }, -/area/fiorina/station/power_ring) -"kAr" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/structure/monorail{ - dir = 4; - name = "launch track" +/area/fiorina/station/research_cells) +"kAc" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/processor{ + desc = "It CAN blend it."; + icon_state = "blender_e"; + name = "Blendomatic"; + pixel_x = -2; + pixel_y = 10 }, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzII) -"kAt" = ( -/obj/effect/spawner/random/gun/shotgun/highchance{ - mags_max = 0; - mags_min = 0 +/turf/open/floor/prison{ + dir = 10; + icon_state = "kitchen" }, -/turf/open/floor/prison, -/area/fiorina/station/chapel) +/area/fiorina/station/civres_blue) "kAO" = ( /obj/item/folder/yellow, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) +"kBm" = ( +/obj/item/device/multitool, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"kBt" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) "kBE" = ( /obj/item/toy/bikehorn/rubberducky, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"kBV" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/prison, -/area/fiorina/station/park) -"kCg" = ( -/obj/effect/spawner/random/toolbox, -/turf/open/floor/prison{ +"kBX" = ( +/obj/structure/stairs/perspective{ dir = 4; - icon_state = "darkbrown2" + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/ice_lab) +"kCj" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/area/fiorina/tumor/aux_engi) -"kCv" = ( -/obj/item/trash/cigbutt/ucigbutt, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "green" }, /area/fiorina/station/chapel) -"kCG" = ( -/obj/structure/reagent_dispensers/watertank, +"kCH" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "blue_plate" + dir = 9; + icon_state = "darkbrown2" }, -/area/fiorina/station/botany) +/area/fiorina/tumor/aux_engi) "kCI" = ( /obj/item/weapon/baseballbat/metal, /turf/open/floor/plating/prison, /area/fiorina/station/chapel) -"kCK" = ( -/obj/item/trash/c_tube, +"kCN" = ( +/obj/structure/inflatable, +/obj/structure/barricade/handrail/type_b, +/obj/structure/barricade/handrail/type_b{ + dir = 8 + }, /turf/open/floor/prison{ dir = 10; - icon_state = "floor_plate" + icon_state = "whitegreenfull" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/medbay) +"kCS" = ( +/obj/structure/surface/rack, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/servers) +"kCT" = ( +/obj/structure/toilet{ + dir = 8; + pixel_y = 8 + }, +/obj/effect/spawner/random/gun/smg, +/turf/open/floor/prison{ + dir = 5; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) "kCY" = ( /obj/item/tool/weldingtool, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"kDg" = ( -/obj/item/trash/cigbutt/cigarbutt, +"kDa" = ( +/obj/structure/platform{ + dir = 4 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzI) -"kDj" = ( -/obj/structure/janitorialcart, -/obj/item/clothing/head/bio_hood/janitor{ - pixel_x = -4; - pixel_y = 5 - }, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"kDq" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" +/area/fiorina/station/park) +"kDw" = ( +/turf/open/floor/prison{ + icon_state = "darkyellowcorners2" }, -/obj/structure/platform, -/turf/open/floor/prison, -/area/fiorina/station/disco) +/area/fiorina/station/telecomm/lz1_cargo) "kDN" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 4 @@ -17236,48 +17488,20 @@ name = "astroturf" }, /area/fiorina/station/park) -"kDO" = ( -/obj/structure/disposalpipe/segment{ - color = "#c4c4c4"; - dir = 4; - layer = 6; - name = "overhead pipe"; - pixel_y = 12 - }, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/tumor/civres) -"kDW" = ( -/obj/item/tool/warning_cone{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/tool/warning_cone{ - pixel_x = -4; - pixel_y = 5 - }, -/obj/item/tool/warning_cone{ - pixel_x = -4; - pixel_y = 8 - }, -/obj/structure/surface/rack, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/maintenance) "kEj" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) -"kEp" = ( -/obj/structure/platform_decoration{ - dir = 1 +"kEx" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 }, -/turf/open/floor/prison, -/area/fiorina/station/park) +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/lz/near_lzII) "kEy" = ( /obj/structure/bed/chair/dropship/pilot{ dir = 1 @@ -17289,11 +17513,6 @@ }, /turf/open/floor/plating/prison, /area/fiorina/oob) -"kEE" = ( -/turf/open/floor/prison{ - icon_state = "green" - }, -/area/fiorina/station/chapel) "kEZ" = ( /obj/item/stack/tile/plasteel{ pixel_x = 12; @@ -17301,77 +17520,67 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"kFa" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/secure_data{ - dir = 4 - }, +"kFd" = ( +/obj/structure/machinery/vending/hydronutrients, /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 1; + icon_state = "blue_plate" }, -/area/fiorina/station/research_cells) -"kFH" = ( -/obj/effect/decal/cleanable/blood/oil, +/area/fiorina/station/botany) +"kGc" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/prison{ - dir = 8; - icon_state = "cell_stripe" - }, -/area/fiorina/station/medbay) -"kFM" = ( -/obj/item/stack/sheet/metal{ - amount = 5 + icon_state = "darkyellow2" }, -/turf/open/floor/prison, /area/fiorina/station/telecomm/lz1_cargo) -"kGh" = ( -/obj/structure/platform_decoration{ - dir = 4 - }, +"kGd" = ( +/obj/structure/barricade/wooden, /turf/open/floor/prison{ dir = 8; - icon_state = "darkbrown2" + icon_state = "whitepurple" }, -/area/fiorina/station/park) -"kGi" = ( -/obj/structure/bed/chair/office/light, +/area/fiorina/station/research_cells) +"kGo" = ( +/obj/structure/machinery/power/apc, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "whitepurple" }, /area/fiorina/station/research_cells) -"kGq" = ( -/obj/effect/decal/cleanable/blood/oil, +"kGB" = ( +/obj/structure/platform, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/transit_hub) -"kGu" = ( -/obj/structure/surface/rack, -/obj/item/storage/box/sprays, +/area/fiorina/station/security) +"kGD" = ( +/obj/structure/largecrate/random/mini/med, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/botany) -"kGw" = ( +/area/fiorina/station/medbay) +"kGZ" = ( /obj/structure/platform{ dir = 1 }, -/obj/structure/machinery/cm_vending/sorted/tech/comp_storage{ - layer = 3.5 +/obj/structure/platform{ + dir = 8 }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/obj/structure/platform_decoration{ + dir = 5 }, -/area/fiorina/station/power_ring) -"kGW" = ( -/obj/structure/largecrate/random/case, /turf/open/floor/prison, /area/fiorina/station/power_ring) "kHa" = ( /obj/item/storage/toolbox, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) +"kHc" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/prison, +/area/fiorina/station/medbay) "kHf" = ( /obj/structure/platform_decoration{ dir = 1 @@ -17381,28 +17590,57 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"kHu" = ( -/obj/effect/decal/medical_decals{ - icon_state = "cryocell2deval" +"kHv" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "bluecorner" }, +/area/fiorina/station/power_ring) +"kHF" = ( /turf/open/floor/prison{ - icon_state = "whitegreen" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/station/telecomm/lz1_cargo) "kHG" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzII) -"kIc" = ( -/obj/structure/platform_decoration, -/obj/effect/spawner/random/toolbox, +"kHH" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison, -/area/fiorina/station/power_ring) +/area/fiorina/station/disco) +"kHI" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/servers) +"kHS" = ( +/obj/structure/barricade/sandbags{ + icon_state = "sandbag_0"; + layer = 2.97; + pixel_y = -14 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"kHZ" = ( +/obj/item/stack/folding_barricade, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) +"kIb" = ( +/obj/structure/inflatable, +/turf/open/floor/prison{ + dir = 8; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) "kIe" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/book/manual/engineering_particle_accelerator{ - pixel_y = 6 - }, /obj/structure/prop/souto_land/pole{ dir = 1 }, @@ -17411,6 +17649,22 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) +"kIg" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/aux_engi) +"kIh" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/landinglight/ds1/delaythree{ + dir = 1 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/fiorina/lz/near_lzI) "kIo" = ( /obj/structure/girder, /turf/open/floor/almayer{ @@ -17418,37 +17672,48 @@ icon_state = "plating" }, /area/fiorina/tumor/ship) -"kIF" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 +"kIA" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/flora/pottedplant{ + pixel_y = 9 + }, +/obj/item/ammo_magazine/rifle/m16{ + current_rounds = 0 }, +/turf/open/floor/prison, +/area/fiorina/station/security) +"kIO" = ( +/obj/structure/machinery/vending/snack/packaged, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkpurplefull2" }, -/area/fiorina/tumor/fiberbush) +/area/fiorina/station/research_cells) +"kJd" = ( +/obj/item/tool/warning_cone, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) "kJf" = ( /obj/item/tool/wrench, /turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) -"kJC" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" - }, +"kJz" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/fuelcell_recycler, +/turf/open/floor/prison, /area/fiorina/station/telecomm/lz1_cargo) -"kJI" = ( -/obj/effect/decal/cleanable/blood{ - desc = "Watch your step."; - icon_state = "gib6" +"kJJ" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" + dir = 9; + icon_state = "yellow" }, -/area/fiorina/station/flight_deck) +/area/fiorina/station/disco) "kJS" = ( /obj/structure/barricade/handrail/type_b{ layer = 3.5 @@ -17461,29 +17726,65 @@ name = "astroturf" }, /area/fiorina/tumor/servers) -"kJX" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +"kJU" = ( +/obj/item/ammo_magazine/rifle/m16{ + current_rounds = 0 }, /turf/open/floor/prison, -/area/fiorina/station/disco) -"kKZ" = ( -/obj/effect/spawner/random/tool, +/area/fiorina/station/security) +"kKd" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) -"kLo" = ( -/obj/structure/machinery/light/double/blue{ +/area/fiorina/station/chapel) +"kKs" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/fiorina/station/flight_deck) +"kKt" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/weapon/baton, +/turf/open/floor/prison{ dir = 4; - pixel_x = 10; - pixel_y = -3 + icon_state = "greenfull" + }, +/area/fiorina/tumor/civres) +"kKP" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "blue" + }, +/area/fiorina/station/power_ring) +"kKQ" = ( +/obj/structure/platform/stair_cut/alt, +/obj/structure/stairs/perspective{ + icon_state = "p_stair_ew_full_cap" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) +"kLs" = ( +/obj/vehicle/powerloader{ + dir = 8 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/flight_deck) +/area/fiorina/station/power_ring) +"kLz" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" + }, +/area/fiorina/station/civres_blue) "kLI" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 9 @@ -17499,61 +17800,48 @@ name = "astroturf" }, /area/fiorina/station/civres_blue) -"kLN" = ( -/obj/structure/janitorialcart, -/obj/item/tool/mop{ - pixel_x = 7; - pixel_y = -1 - }, -/obj/item/toy/bikehorn/rubberducky{ - desc = "He's already fed up with your bullshit face."; - name = "Dug the duck"; - pixel_x = -3; - pixel_y = 8 - }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"kLQ" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"kLT" = ( -/obj/structure/platform{ - dir = 8 - }, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"kLX" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/phone, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/tumor/ice_lab) -"kLY" = ( -/obj/effect/decal/cleanable/blood/drip, +"kMm" = ( +/obj/structure/barricade/handrail, /turf/open/floor/prison{ - icon_state = "bluecorner" + icon_state = "floor_plate" }, -/area/fiorina/station/chapel) +/area/fiorina/station/central_ring) "kMq" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/civres_blue) -"kMU" = ( -/obj/effect/spawner/gibspawner/robot, -/turf/open/floor/plating/plating_catwalk/prison, +"kMC" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/objective, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/park) +"kME" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/stack/sheet/mineral/plastic, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"kMU" = ( +/obj/effect/spawner/gibspawner/robot, +/turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/maintenance) -"kNl" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 +"kMV" = ( +/obj/effect/decal{ + icon = 'icons/obj/items/policetape.dmi'; + icon_state = "engineering_h"; + layer = 2.5; + pixel_y = -11 }, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/flight_deck) +"kNk" = ( +/obj/item/stack/sheet/metal/medium_stack, +/obj/structure/surface/rack, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) "kNs" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/prison/chapel_carpet{ @@ -17561,12 +17849,6 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"kNz" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) "kNB" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/reagent_container/food/drinks/bottle/holywater{ @@ -17579,10 +17861,6 @@ /obj/item/stack/sheet/metal, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/tumor/ship) -"kNP" = ( -/obj/item/stack/medical/bruise_pack, -/turf/open/floor/prison, -/area/fiorina/station/security) "kNW" = ( /obj/structure/barricade/handrail/type_b{ layer = 3.5 @@ -17600,144 +17878,150 @@ /obj/item/reagent_container/spray/cleaner, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"kOb" = ( +"kOu" = ( +/obj/structure/bed/chair/office/light{ + dir = 4 + }, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/servers) +/area/fiorina/station/medbay) "kOB" = ( /turf/open/organic/grass{ desc = "It'll get in your shoes no matter what you do."; name = "astroturf" }, /area/fiorina/station/civres_blue) -"kOM" = ( -/obj/structure/monorail{ - name = "launch track" +"kOV" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/folder/black_random, +/obj/item/folder/red{ + pixel_x = 3; + pixel_y = 5 }, -/turf/open/floor/plating/prison, -/area/fiorina/station/park) -"kOZ" = ( -/obj/effect/spawner/random/tool, /turf/open/floor/prison{ - dir = 1; - icon_state = "bluecorner" + icon_state = "redfull" }, -/area/fiorina/station/power_ring) -"kPe" = ( -/obj/structure/largecrate/random, +/area/fiorina/station/security) +"kPf" = ( +/obj/structure/machinery/computer3/server/rack, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkpurplefull2" }, /area/fiorina/tumor/servers) -"kPi" = ( -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/prison{ - icon_state = "panelscorched" - }, -/area/fiorina/tumor/aux_engi) -"kPv" = ( -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/fiorina/station/power_ring) "kPz" = ( /obj/structure/lattice, /turf/open/space, /area/fiorina/oob) -"kPC" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_ew_full_cap" - }, -/obj/structure/platform/stair_cut, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) -"kPJ" = ( -/obj/item/ammo_magazine/smg/nailgun, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/maintenance) "kPY" = ( /turf/closed/wall/prison, /area/fiorina/tumor/fiberbush) -"kQY" = ( -/obj/item/device/flashlight/lamp/tripod, -/turf/open/floor/prison{ - dir = 9; - icon_state = "darkyellow2" - }, -/area/fiorina/station/flight_deck) -"kRt" = ( -/obj/structure/prop/structure_lattice{ +"kQr" = ( +/obj/structure/barricade/wooden{ dir = 4; - health = 300 + pixel_y = 4 }, -/obj/structure/prop/structure_lattice{ +/obj/structure/barricade/wooden, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"kQy" = ( +/obj/item/frame/rack, +/obj/structure/barricade/handrail/type_b{ dir = 4; - layer = 3.1; - pixel_y = 10 + layer = 3.5 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, /area/fiorina/tumor/ice_lab) -"kRM" = ( -/obj/item/tool/warning_cone, +"kQG" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/snacks/ricepudding, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) -"kSh" = ( -/turf/closed/shuttle/elevator{ - dir = 9 +/area/fiorina/tumor/servers) +"kQH" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" }, -/area/fiorina/station/telecomm/lz1_cargo) -"kSp" = ( -/obj/structure/surface/rack, -/turf/open/floor/prison{ - dir = 9; - icon_state = "whitegreen" +/obj/effect/decal/cleanable/blood{ + icon_state = "gibarm_flesh" }, -/area/fiorina/station/medbay) -"kSI" = ( -/obj/effect/landmark/corpsespawner/ua_riot, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/plating/prison, +/area/fiorina/tumor/ice_lab) +"kRO" = ( +/obj/item/tool/warning_cone{ + pixel_x = -4; + pixel_y = 2 }, -/area/fiorina/station/security) -"kSL" = ( -/obj/structure/platform, -/obj/item/clothing/gloves/botanic_leather, +/obj/item/tool/warning_cone{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/tool/warning_cone{ + pixel_x = -4; + pixel_y = 8 + }, +/obj/structure/surface/rack, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrownfull2" + }, +/area/fiorina/maintenance) +"kSd" = ( +/obj/structure/toilet{ + pixel_y = 4 }, -/area/fiorina/station/botany) -"kSP" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "sterile_white" }, /area/fiorina/station/medbay) -"kSU" = ( +"kSe" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + icon_state = "yellow" + }, +/area/fiorina/station/disco) +"kSh" = ( +/turf/closed/shuttle/elevator{ + dir = 9 }, /area/fiorina/station/telecomm/lz1_cargo) -"kTK" = ( -/obj/structure/surface/rack, -/obj/item/storage/toolbox/mechanical, +"kSB" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/maintenance) +"kSD" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/obj/structure/platform{ + dir = 8; + layer = 2.5 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/telecomm/lz1_tram) +"kTs" = ( /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/maintenance) +"kTD" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "blue" + }, +/area/fiorina/station/power_ring) "kTL" = ( /obj/item/stack/rods, /obj/item/shard{ @@ -17745,6 +18029,12 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) +"kTW" = ( +/obj/structure/barricade/metal/wired, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/lowsec) "kTY" = ( /obj/structure/machinery/defenses/sentry/premade/dumb{ dir = 4 @@ -17757,24 +18047,23 @@ /obj/structure/window/framed/prison, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"kUr" = ( +"kUo" = ( /obj/structure/surface/table/reinforced/prison, -/obj/effect/landmark/objective_landmark/science, +/obj/item/device/radio{ + pixel_y = 8 + }, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "bluefull" }, -/area/fiorina/tumor/servers) -"kUI" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 +/area/fiorina/station/power_ring) +"kUR" = ( +/obj/structure/platform{ + dir = 1 }, /turf/open/floor/prison{ - dir = 8; - icon_state = "blue" + icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) +/area/fiorina/station/flight_deck) "kVg" = ( /obj/item/stack/cable_coil/blue, /turf/open/floor/plating/prison, @@ -17783,73 +18072,78 @@ /obj/structure/largecrate/random, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"kVz" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, +"kVN" = ( +/obj/structure/window/framed/prison/reinforced, /turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreen" + icon_state = "redfull" }, -/area/fiorina/tumor/ice_lab) -"kWj" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/briefcase, +/area/fiorina/station/security) +"kVW" = ( +/obj/item/weapon/pole/wooden_cane, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue_plate" + icon_state = "floor_plate" + }, +/area/fiorina/tumor/civres) +"kWv" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/handcuffs, +/turf/open/floor/prison, +/area/fiorina/station/security) +"kWx" = ( +/obj/item/stack/tile/plasteel{ + pixel_x = 3; + pixel_y = 4 }, -/area/fiorina/station/botany) -"kWn" = ( -/obj/structure/inflatable, /turf/open/floor/prison{ - dir = 8; - icon_state = "yellow" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/lowsec) -"kWD" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/toy/deck/uno, +/area/fiorina/station/research_cells) +"kWL" = ( /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + dir = 10; + icon_state = "floor_marked" }, -/area/fiorina/station/botany) -"kWJ" = ( -/obj/item/tool/shovel/snow, -/obj/item/device/flashlight, -/obj/structure/surface/rack, +/area/fiorina/lz/near_lzII) +"kWS" = ( +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ dir = 10; icon_state = "sterile_white" }, /area/fiorina/tumor/ice_lab) -"kXw" = ( -/obj/item/circuitboard/machine/rdserver, +"kXk" = ( /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 5; + icon_state = "whitepurple" }, -/area/fiorina/tumor/servers) -"kXD" = ( -/obj/structure/window/framed/prison, -/turf/open/floor/plating/prison, -/area/fiorina/station/park) -"kXH" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/condiment/saltshaker{ - pixel_x = -5; - pixel_y = -6 +/area/fiorina/station/research_cells) +"kXm" = ( +/obj/structure/surface/rack, +/obj/item/weapon/gun/pistol/heavy, +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" }, -/obj/item/reagent_container/food/condiment/peppermill{ - pixel_x = -5; - pixel_y = -11 +/area/fiorina/station/medbay) +"kXs" = ( +/obj/structure/prop/structure_lattice{ + dir = 4; + health = 300 }, -/obj/item/reagent_container/food/snacks/cherrypie{ - pixel_y = 7 +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + icon_state = "floor_plate" }, -/area/fiorina/station/flight_deck) +/area/fiorina/tumor/aux_engi) +"kXD" = ( +/obj/structure/window/framed/prison, +/turf/open/floor/plating/prison, +/area/fiorina/station/park) "kXR" = ( /obj/structure/machinery/light/small{ dir = 4; @@ -17858,47 +18152,60 @@ }, /turf/open/floor/plating/plating_catwalk, /area/fiorina/tumor/ship) -"kYM" = ( -/obj/item/stack/tile/plasteel, +"kYd" = ( +/obj/structure/bed/chair/office/light{ + dir = 8 + }, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/medbay) +"kYi" = ( +/obj/effect/decal/cleanable/blood/splatter{ + icon_state = "handblood" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) +"kYz" = ( +/obj/structure/closet/crate/medical, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/medbay) "kYZ" = ( /obj/structure/surface/table/woodentable, /obj/item/cell/super/empty, /turf/open/floor/carpet, /area/fiorina/station/civres_blue) -"kZb" = ( -/obj/structure/machinery/vending/snack, +"kZl" = ( +/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/flight_deck) +/area/fiorina/tumor/aux_engi) +"kZu" = ( +/obj/structure/toilet{ + pixel_y = 4 + }, +/obj/item/prop/helmetgarb/gunoil{ + pixel_x = 2; + pixel_y = 25 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) "kZy" = ( /obj/item/clothing/mask/breath, /obj/structure/surface/table/reinforced/prison, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"kZI" = ( -/obj/item/stool, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/medbay) -"kZQ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/tool/stamp/captain, -/obj/structure/machinery/processor{ - icon_state = "blender_jug_f_red"; - pixel_x = -6; - pixel_y = 6 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/aux_engi) "kZS" = ( /obj/structure/machinery/light/double/blue{ dir = 8; @@ -17909,71 +18216,50 @@ icon_state = "plate" }, /area/fiorina/tumor/aux_engi) +"kZV" = ( +/obj/structure/bed/chair{ + dir = 4; + pixel_y = 4 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) "lag" = ( /obj/structure/cable/heavyduty{ icon_state = "4-8" }, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"lax" = ( -/turf/open/floor/prison{ - dir = 5; - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) -"laD" = ( -/obj/structure/barricade/wooden, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"laG" = ( -/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage{ - density = 0; - pixel_y = 16 +"laz" = ( +/obj/structure/machinery/landinglight/ds1/delayone{ + dir = 8 }, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/maintenance) +/area/fiorina/lz/near_lzI) "laJ" = ( /obj/structure/airlock_assembly, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"laP" = ( -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/station/telecomm/lz1_tram) -"laZ" = ( -/obj/item/reagent_container/food/drinks/coffee{ - name = "\improper paper cup" - }, +"laK" = ( +/obj/item/stool, /turf/open/floor/prison{ - dir = 5; + dir = 10; icon_state = "yellow" }, -/area/fiorina/station/lowsec) -"lbe" = ( -/obj/item/stack/sheet/metal{ - amount = 5 +/area/fiorina/station/disco) +"laX" = ( +/obj/structure/toilet{ + dir = 8 }, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" - }, -/area/fiorina/lz/near_lzI) -"lbk" = ( -/obj/effect/spawner/random/tech_supply, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + icon_state = "sterile_white" }, -/turf/open/floor/prison, -/area/fiorina/station/security) +/area/fiorina/station/civres_blue) "lbt" = ( /obj/structure/disposalpipe/segment{ color = "#c4c4c4"; @@ -17984,140 +18270,217 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"lbu" = ( -/obj/effect/decal/hefa_cult_decals/d32{ - icon_state = "bee" - }, -/obj/structure/sign/prop2{ - pixel_y = 32 +"lbz" = ( +/obj/structure/reagent_dispensers/water_cooler{ + pixel_x = 1; + pixel_y = 8 }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"lcu" = ( -/obj/structure/inflatable/popped/door, /turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreencorner" - }, -/area/fiorina/station/medbay) -"lcH" = ( -/obj/structure/prop/structure_lattice{ - dir = 4 + icon_state = "floor_plate" }, -/obj/structure/prop/structure_lattice{ +/area/fiorina/station/power_ring) +"lbK" = ( +/obj/structure/platform, +/obj/structure/stairs/perspective{ dir = 4; - layer = 3.1; - pixel_y = 10 - }, -/turf/open/floor/prison, -/area/fiorina/maintenance) -"lde" = ( -/obj/structure/prop/resin_prop{ - icon_state = "coolanttank" + icon_state = "p_stair_full" }, /turf/open/floor/plating/prison, -/area/fiorina/tumor/aux_engi) -"ldm" = ( -/obj/structure/toilet{ - dir = 8; - pixel_y = 8 - }, -/turf/open/floor/prison{ - dir = 5; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"ldt" = ( -/obj/item/ammo_casing{ - icon_state = "casing_6" - }, +/area/fiorina/station/power_ring) +"lbL" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/trash/cigbutt, /turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" + dir = 10; + icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) -"ldy" = ( -/obj/structure/bed/chair/office/dark{ - dir = 4; - layer = 3.25 +/area/fiorina/station/disco) +"lbZ" = ( +/obj/structure/platform{ + dir = 1 }, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, -/area/fiorina/tumor/ice_lab) -"ldT" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/station/medbay) +"lcm" = ( +/obj/structure/machinery/landinglight/ds2/delayone{ + dir = 4 }, -/obj/effect/landmark/corpsespawner/ua_riot, /turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreen" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"leq" = ( -/obj/effect/landmark/corpsespawner/prison_security, +/area/fiorina/lz/near_lzII) +"lcn" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"lev" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/corsat{ - icon_state = "plate" + icon_state = "panelscorched" }, -/area/fiorina/tumor/aux_engi) -"leF" = ( -/obj/item/trash/cigbutt/ucigbutt, -/turf/open/floor/wood, -/area/fiorina/station/civres_blue) -"leR" = ( -/obj/item/device/whistle, +/area/fiorina/station/transit_hub) +"lco" = ( +/obj/item/stack/sandbags/large_stack, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"lfo" = ( -/obj/structure/pipes/standard/manifold/visible, -/turf/open/floor/plating/prison, -/area/fiorina/station/medbay) -"lfJ" = ( +/area/fiorina/station/flight_deck) +"lcq" = ( +/obj/structure/platform/kutjevo/smooth, +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/turf/open/space/basic, +/area/fiorina/oob) +"lcE" = ( +/obj/structure/inflatable, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenblue" + dir = 5; + icon_state = "whitepurple" }, -/area/fiorina/station/botany) -"lfS" = ( -/obj/structure/surface/table/reinforced/prison, +/area/fiorina/station/research_cells) +"lcJ" = ( +/obj/effect/landmark/queen_spawn, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 4; + icon_state = "whitegreencorner" }, /area/fiorina/tumor/ice_lab) -"lgy" = ( -/obj/structure/surface/table/reinforced/prison, +"ldd" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/stack/rods, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 4; + icon_state = "greenfull" }, -/area/fiorina/station/security) -"lhj" = ( -/obj/structure/platform{ - dir = 1 +/area/fiorina/station/chapel) +"lde" = ( +/obj/structure/prop/resin_prop{ + icon_state = "coolanttank" + }, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/aux_engi) +"ldj" = ( +/obj/item/weapon/harpoon, +/obj/effect/decal/cleanable/blood{ + icon_state = "gib6" }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/transit_hub) -"lhQ" = ( +/area/fiorina/station/disco) +"ldz" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/obj/effect/spawner/random/sentry/midchance, +/turf/open/floor/prison{ + dir = 10; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) +"ldF" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/prison{ + dir = 10; + icon_state = "blue" + }, +/area/fiorina/station/power_ring) +"ldW" = ( +/obj/item/stack/sandbags, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/fiorina/station/power_ring) +"ldZ" = ( +/obj/item/explosive/grenade/incendiary/molotov, +/turf/open/floor/prison{ + dir = 4; + icon_state = "red" + }, +/area/fiorina/station/security) +"lev" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/fiorina/tumor/aux_engi) +"lex" = ( +/obj/structure/closet/crate, +/turf/open/floor/plating/prison, +/area/fiorina/station/civres_blue) +"leF" = ( +/obj/item/trash/cigbutt/ucigbutt, +/turf/open/floor/wood, +/area/fiorina/station/civres_blue) +"leN" = ( +/obj/structure/barricade/metal/wired{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "yellow" + }, +/area/fiorina/station/disco) +"leZ" = ( +/obj/item/trash/cigbutt, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"lfo" = ( +/obj/structure/pipes/standard/manifold/visible, +/turf/open/floor/plating/prison, +/area/fiorina/station/medbay) +"lfX" = ( +/obj/structure/inflatable/door, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/research_cells) +"lge" = ( /turf/open/floor/prison{ dir = 5; + icon_state = "blue" + }, +/area/fiorina/station/civres_blue) +"lgx" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/station/park) +"lgG" = ( +/obj/structure/coatrack, +/obj/item/clothing/suit/storage/CMB, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) +"lgH" = ( +/turf/open/floor/prison{ icon_state = "green" }, /area/fiorina/tumor/civres) +"lgS" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison, +/area/fiorina/station/park) +"lhJ" = ( +/obj/item/weapon/gun/flamer, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/ammo_magazine/flamer_tank, +/obj/item/ammo_magazine/flamer_tank, +/obj/item/storage/pouch/flamertank, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"lhS" = ( +/obj/item/ammo_magazine/smg/mp5, +/obj/item/ammo_magazine/smg/mp5, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) "lhY" = ( /obj/structure/sign/prop3{ desc = "Enlist in the Penal Battalions today! The USCM 3rd Fleet features a subset of UA sanctioned penal battalions, drawing from inmate popualtions across the colonies. Mostly New Argentina though." @@ -18131,36 +18494,20 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) -"lif" = ( -/obj/structure/closet/crate/bravo, -/obj/item/stack/sheet/metal/medium_stack, -/obj/item/stack/sheet/metal/medium_stack, -/obj/item/fuelCell, -/obj/item/stack/sheet/plasteel, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison{ - icon_state = "bluefull" +"lit" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/area/fiorina/station/power_ring) -"lik" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/pills/lowchance, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/transit_hub) "liA" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname{ dir = 1 }, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"liX" = ( -/obj/structure/reagent_dispensers/water_cooler/stacks, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/servers) "liZ" = ( /obj/structure/machinery/light/double/blue{ dir = 4; @@ -18177,60 +18524,68 @@ /obj/item/stack/cable_coil, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"ljA" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"ljx" = ( +/obj/structure/platform_decoration{ + dir = 8 }, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"ljW" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 + icon_state = "floor_plate" }, +/area/fiorina/station/civres_blue) +"ljV" = ( +/obj/effect/landmark/corpsespawner/ua_riot, +/turf/open/floor/prison, +/area/fiorina/station/security) +"lkb" = ( +/obj/item/tool/kitchen/knife, +/obj/structure/bed/roller, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) +"lkr" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 9; + icon_state = "whitegreen" }, /area/fiorina/tumor/ice_lab) -"ljZ" = ( -/obj/item/device/flashlight/flare, +"lku" = ( +/turf/closed/shuttle/ert{ + icon_state = "stan_rightengine" + }, +/area/fiorina/oob) +"lkA" = ( +/obj/structure/bed/sofa/south/grey/right, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzI) -"lka" = ( -/obj/structure/bed/chair{ - dir = 8 - }, +/area/fiorina/station/security/wardens) +"lkM" = ( +/obj/structure/inflatable/popped/door, /turf/open/floor/prison{ dir = 4; - icon_state = "yellow" + icon_state = "darkyellowfull2" }, -/area/fiorina/station/lowsec) -"lku" = ( -/turf/closed/shuttle/ert{ - icon_state = "stan_rightengine" +/area/fiorina/tumor/servers) +"lkP" = ( +/obj/item/shard{ + icon_state = "medium" }, -/area/fiorina/oob) -"lle" = ( -/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" + icon_state = "redfull" }, -/area/fiorina/station/medbay) -"lll" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/drinks/cans/aspen, +/area/fiorina/station/security) +"lkQ" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison, +/area/fiorina/station/security) +"lld" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" + dir = 8; + icon_state = "red" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/security) "lls" = ( /obj/structure/barricade/handrail/type_b{ layer = 3.5 @@ -18241,40 +18596,31 @@ /obj/item/reagent_container/food/drinks/cans/souto/diet/cherry, /turf/open/floor/wood, /area/fiorina/station/park) -"llC" = ( -/obj/structure/prop/structure_lattice{ - dir = 4 - }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; +"llE" = ( +/obj/structure/machinery/reagentgrinder/industrial{ pixel_y = 10 }, +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "kitchen" + }, +/area/fiorina/station/power_ring) +"llJ" = ( +/obj/item/stack/rods, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + density = 0; + dir = 4 }, -/area/fiorina/station/telecomm/lz1_cargo) -"llG" = ( -/obj/structure/prop/almayer/computers/sensor_computer3, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "platingdmg3" }, -/area/fiorina/tumor/servers) +/area/fiorina/station/security) "llQ" = ( /obj/structure/platform/kutjevo/smooth{ dir = 8 }, /turf/open/floor/almayer_hull, /area/fiorina/oob) -"llW" = ( -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "darkyellow2" - }, -/area/fiorina/station/telecomm/lz1_cargo) "lml" = ( /obj/structure/platform_decoration/kutjevo{ dir = 8 @@ -18290,259 +18636,287 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/medbay) -"lmr" = ( -/turf/open/floor/prison{ +"lmu" = ( +/obj/structure/machinery/light/double/blue{ dir = 1; - icon_state = "bluecorner" + pixel_y = 21 }, -/area/fiorina/station/chapel) -"lmy" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/toolbox, /turf/open/floor/prison{ + dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/park) -"lmM" = ( -/obj/structure/machinery/light/double/blue{ +/area/fiorina/station/flight_deck) +"lnK" = ( +/turf/closed/wall/r_wall/prison, +/area/fiorina/station/telecomm/lz1_tram) +"loj" = ( +/obj/item/stack/cable_coil, +/turf/open/floor/prison{ dir = 4; - pixel_x = 10; - pixel_y = -3 - }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"lmV" = ( -/turf/open/floor/prison, -/area/fiorina/tumor/fiberbush) -"lmX" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 + icon_state = "greenfull" }, -/obj/structure/mirror{ - pixel_x = -29 +/area/fiorina/tumor/civres) +"lou" = ( +/obj/item/ammo_box/magazine/misc/flares/empty{ + pixel_x = -1; + pixel_y = 7 }, /turf/open/floor/prison{ - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) -"lnf" = ( -/obj/structure/bed/chair/comfy{ +/area/fiorina/station/telecomm/lz1_cargo) +"loE" = ( +/obj/structure/window/reinforced{ dir = 8 }, -/turf/open/floor/prison{ - dir = 9; - icon_state = "darkyellow2" - }, -/area/fiorina/station/flight_deck) -"lnK" = ( -/turf/closed/wall/r_wall/prison, -/area/fiorina/station/telecomm/lz1_tram) -"lnU" = ( -/obj/item/stool, +/obj/structure/machinery/photocopier, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) -"lok" = ( +/area/fiorina/tumor/ice_lab) +"loP" = ( +/obj/structure/machinery/optable{ + desc = "This maybe could be used for advanced medical procedures."; + name = "Exam Table" + }, +/obj/item/bedsheet/ce{ + desc = "It crinkles, aggressively."; + name = "sterile wax sheet" + }, /turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" + icon_state = "redfull" }, -/area/fiorina/oob) -"loy" = ( -/obj/structure/closet/secure_closet/freezer/fridge/full, -/obj/effect/landmark/objective_landmark/close, +/area/fiorina/station/medbay) +"lpd" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "kitchen" + icon_state = "blue" }, -/area/fiorina/station/power_ring) -"lpf" = ( -/obj/item/storage/belt/marine, -/turf/open/floor/prison, -/area/fiorina/station/security) +/area/fiorina/station/chapel) "lpl" = ( /turf/closed/shuttle/ert{ icon_state = "stan27" }, /area/fiorina/lz/near_lzI) -"lpm" = ( -/obj/item/device/flashlight/lamp/tripod, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/lz/near_lzI) -"lpp" = ( -/obj/structure/barricade/sandbags{ - icon_state = "sandbag_0"; - layer = 2.97; - pixel_y = -14 - }, -/turf/open/floor/prison{ - dir = 9; - icon_state = "yellow" - }, -/area/fiorina/station/disco) "lpr" = ( /obj/structure/barricade/wooden{ dir = 1 }, /turf/open/floor/plating/prison, /area/fiorina/station/chapel) -"lps" = ( -/obj/structure/barricade/handrail/type_b, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"lpA" = ( -/obj/effect/landmark/monkey_spawn, -/turf/open/floor/prison{ - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"lpV" = ( -/obj/item/device/flashlight/lamp/tripod, +"lpw" = ( +/obj/effect/spawner/random/toolbox, /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 }, -/turf/open/floor/prison, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, /area/fiorina/station/medbay) -"lqi" = ( -/obj/effect/landmark/corpsespawner/engineer, +"lpH" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "bluecorner" + dir = 9; + icon_state = "green" }, -/area/fiorina/station/power_ring) -"lqo" = ( -/obj/structure/dropship_equipment/medevac_system, +/area/fiorina/station/chapel) +"lpS" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/disco) +"lpW" = ( +/obj/structure/largecrate/random/barrel/white, /turf/open/floor/prison{ dir = 10; - icon_state = "floor_marked" + icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/telecomm/lz1_cargo) +"lpX" = ( +/obj/structure/machinery/door/airlock/prison/horizontal, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/research_cells) +"lpZ" = ( +/obj/item/trash/boonie, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/research_cells) +"lqa" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) "lqq" = ( /turf/open/floor/wood, /area/fiorina/station/chapel) -"lqB" = ( -/obj/structure/closet/secure_closet/security_empty, -/obj/structure/window/reinforced{ - dir = 4 +"lqC" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" }, -/obj/item/weapon/classic_baton, +/area/fiorina/lz/near_lzI) +"lqI" = ( /turf/open/floor/prison{ - icon_state = "redfull" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/station/security) -"lrm" = ( -/obj/structure/barricade/metal/wired{ - health = 250; - icon_state = "metal_3" +/area/fiorina/lz/near_lzI) +"lqJ" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "lavendergrass_2" }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"lro" = ( -/obj/item/stack/cable_coil/blue, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) +"lqN" = ( +/obj/effect/decal/cleanable/blood{ + dir = 4; + icon_state = "gib6" + }, +/obj/effect/spawner/random/gun/rifle, /turf/open/floor/prison{ - icon_state = "whitegreencorner" + dir = 4; + icon_state = "darkyellow2" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/telecomm/lz1_cargo) +"lri" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "green" + }, +/area/fiorina/station/transit_hub) "lrA" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"lrC" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/station/park) "lrE" = ( /obj/structure/bed, /obj/item/bedsheet/rd, /obj/item/toy/katana, /turf/open/floor/almayer, /area/fiorina/tumor/ship) -"lsf" = ( -/obj/structure/largecrate/random, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/tumor/civres) -"lsl" = ( -/obj/item/tool/shovel, -/turf/open/floor/prison{ - dir = 6; - icon_state = "green" +"lrI" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/drinks/milk{ + pixel_x = 2; + pixel_y = 3 }, -/area/fiorina/tumor/civres) -"lso" = ( /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/tumor/fiberbush) -"lsr" = ( -/obj/structure/machinery/vending/cola, +"lrV" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/faxmachine, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "redfull" }, -/area/fiorina/station/park) -"lsU" = ( -/obj/effect/decal{ - icon = 'icons/obj/items/policetape.dmi'; - icon_state = "engineering_v" +/area/fiorina/station/security) +"lsn" = ( +/obj/structure/machinery/vending/cigarette/colony, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"lsO" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/stack/sheet/mineral/plastic/small_stack, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"lsR" = ( +/obj/structure/machinery/shower{ + pixel_y = 13 }, -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 +/obj/structure/machinery/shower{ + dir = 4 }, /turf/open/floor/prison{ - icon_state = "darkyellow2" + icon_state = "kitchen" }, -/area/fiorina/station/telecomm/lz1_cargo) -"ltb" = ( -/obj/structure/closet/secure_closet/guncabinet{ - req_access = null +/area/fiorina/station/lowsec) +"lsZ" = ( +/obj/item/tool/soap, +/obj/structure/machinery/shower{ + dir = 1; + pixel_y = -1 }, -/obj/item/weapon/gun/smg/mp5, -/obj/item/ammo_magazine/smg/mp5, -/obj/item/ammo_magazine/smg/mp5, -/obj/item/clothing/under/marine/ua_riot, -/obj/item/clothing/suit/storage/marine/veteran/ua_riot, -/obj/item/prop/helmetgarb/riot_shield, -/turf/open/floor/prison{ - icon_state = "redfull" +/obj/structure/machinery/shower{ + dir = 8 }, -/area/fiorina/station/security) -"ltu" = ( -/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "kitchen" }, -/area/fiorina/station/flight_deck) -"lty" = ( -/obj/item/toy/bikehorn, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"ltV" = ( +/area/fiorina/station/research_cells) +"ltd" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ dir = 10; - icon_state = "darkyellow2" + icon_state = "sterile_white" }, -/area/fiorina/lz/near_lzI) -"luv" = ( +/area/fiorina/station/medbay) +"lte" = ( +/obj/structure/barricade/metal{ + dir = 4; + health = 85; + icon_state = "metal_1" + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) +"ltz" = ( /obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer3/laptop/secure_data, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + dir = 1; + icon_state = "blue_plate" + }, +/area/fiorina/station/botany) +"ltA" = ( +/turf/open/floor/prison{ + icon_state = "floorscorched1" + }, +/area/fiorina/tumor/aux_engi) +"ltQ" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/station/security) +"luf" = ( +/obj/effect/decal/medical_decals{ + icon_state = "docdecal1" + }, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "sterile_white" }, /area/fiorina/station/medbay) +"lun" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/servers) +"lux" = ( +/obj/structure/inflatable/door, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/lowsec) "luy" = ( /obj/item/trash/candle, /turf/open/floor/prison/chapel_carpet{ @@ -18550,48 +18924,23 @@ icon_state = "doubleside" }, /area/fiorina/maintenance) -"luH" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/paper_bin{ - pixel_x = 5; - pixel_y = 22 - }, -/obj/item/coin/gold{ - desc = "Coin op, in this place, in this year, localized entirely on this table? .... I uh, yes."; - name = "arcade token"; - pixel_x = -6; - pixel_y = 3 - }, +"luZ" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/flight_deck) -"luU" = ( -/obj/effect/spawner/random/gun/rifle/midchance, +/area/fiorina/tumor/ice_lab) +"lvf" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/prison{ - dir = 8; - icon_state = "blue" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/power_ring) +/area/fiorina/tumor/aux_engi) "lvg" = ( /obj/item/trash/candle, /turf/open/floor/prison/chapel_carpet, /area/fiorina/maintenance) -"lvh" = ( -/obj/effect/decal/cleanable/blood/splatter{ - icon_state = "gib2" - }, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) "lvi" = ( /obj/structure/sign/poster{ icon_state = "poster6"; @@ -18599,39 +18948,23 @@ }, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"lvk" = ( -/obj/structure/bed/sofa/south/grey, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"lvs" = ( -/turf/open/floor/prison{ - icon_state = "green" - }, -/area/fiorina/tumor/civres) -"lvx" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) "lvy" = ( /turf/closed/shuttle/ert{ icon_state = "stan_rightengine" }, /area/fiorina/tumor/aux_engi) -"lvN" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/ashtray/plastic, -/obj/item/trash/cigbutt, -/obj/item/trash/cigbutt/ucigbutt{ - pixel_x = 5; - pixel_y = 12 +"lvD" = ( +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" }, -/obj/item/weapon/gun/pistol/heavy, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison, -/area/fiorina/station/medbay) +/area/fiorina/tumor/servers) +"lvV" = ( +/obj/structure/barricade/metal/wired, +/turf/open/floor/prison{ + dir = 8; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) "lwd" = ( /obj/structure/machinery/light/double/blue{ dir = 4; @@ -18640,50 +18973,57 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/medbay) -"lwB" = ( -/obj/structure/bed/chair{ +"lwn" = ( +/obj/structure/machinery/light/double/blue{ dir = 1; - layer = 2.7 + pixel_y = 21 }, -/turf/open/floor/prison{ - icon_state = "whitegreen" +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) +"lwp" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/book/manual/security_space_law{ + pixel_x = 8; + pixel_y = 1 + }, +/obj/item/book/manual/security_space_law{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/book/manual/security_space_law{ + pixel_x = 3; + pixel_y = 5 }, -/area/fiorina/station/medbay) -"lwG" = ( /turf/open/floor/prison{ - dir = 6; - icon_state = "darkbrown2" + icon_state = "redfull" + }, +/area/fiorina/station/security) +"lwq" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" }, -/area/fiorina/tumor/aux_engi) -"lwK" = ( /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 1; + icon_state = "whitegreen" }, -/area/fiorina/tumor/servers) -"lwO" = ( -/obj/structure/largecrate/supply/supplies/water, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"lxe" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/pistol/heavy, +/area/fiorina/station/central_ring) +"lwA" = ( +/obj/structure/largecrate/random/case, /turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/station/park) +"lxT" = ( +/obj/item/ammo_casing{ dir = 8; - icon_state = "cell_stripe" + icon_state = "casing_6" }, -/area/fiorina/station/medbay) -"lxk" = ( -/obj/structure/platform_decoration, /turf/open/floor/prison{ - icon_state = "whitegreen" + dir = 1; + icon_state = "darkbrown2" }, -/area/fiorina/tumor/ice_lab) -"lyd" = ( -/obj/structure/surface/rack, -/obj/item/folder/black, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison, -/area/fiorina/station/medbay) +/area/fiorina/station/park) "lyf" = ( /obj/structure/flora/bush/ausbushes/ausbush{ desc = "Fiberbush(tm) infestations have been the leading cause in asbestos related deaths in spacecraft for 3 years in a row now."; @@ -18692,48 +19032,24 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"lyg" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/box/cups, -/obj/item/storage/fancy/cigarettes/arcturian_ace{ - pixel_x = -6; - pixel_y = 20 - }, -/obj/item/storage/fancy/cigarettes/arcturian_ace{ - pixel_x = 6; - pixel_y = 20 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) -"lyF" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/guestpass{ - dir = 4; - reason = "Visitor" - }, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) "lyJ" = ( /obj/item/tool/crowbar, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"lyX" = ( -/obj/structure/inflatable/popped/door, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "whitegreen" +"lyY" = ( +/obj/item/trash/used_stasis_bag{ + desc = "Wow, instant sand. They really have everything in space."; + name = "Insta-Sand! bag" }, -/area/fiorina/station/medbay) -"lzb" = ( -/obj/structure/largecrate/random, +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) +"lzd" = ( +/obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/disco) +/area/fiorina/station/medbay) "lzm" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/window/reinforced/tinted, @@ -18745,54 +19061,94 @@ icon_state = "squares" }, /area/fiorina/station/telecomm/lz1_cargo) -"lzJ" = ( -/turf/open/floor/plating/prison, -/area/fiorina/station/park) -"lzO" = ( -/obj/structure/closet/firecloset/full, +"lzq" = ( +/obj/item/tool/wet_sign, +/obj/item/tool/mop{ + pixel_x = -6; + pixel_y = -1 + }, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"lzz" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/obj/item/storage/fancy/crayons, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 6; + icon_state = "whitepurple" }, -/area/fiorina/tumor/ice_lab) -"lzW" = ( -/obj/structure/barricade/sandbags{ - dir = 8; - icon_state = "sandbag_0" +/area/fiorina/station/research_cells) +"lzB" = ( +/obj/structure/closet/crate/miningcar{ + name = "\improper materials storage bin" }, +/obj/item/reagent_container/food/snacks/meat, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/station/telecomm/lz1_cargo) -"lzX" = ( +/area/fiorina/station/botany) +"lzE" = ( +/obj/structure/machinery/vending/snack/packaged, /turf/open/floor/prison{ - icon_state = "cell_stripe" + icon_state = "floor_plate" }, +/area/fiorina/station/civres_blue) +"lzJ" = ( +/turf/open/floor/plating/prison, /area/fiorina/station/park) -"lAf" = ( -/obj/item/tool/crowbar, +"lzP" = ( +/obj/item/ammo_casing{ + dir = 8; + icon_state = "cartridge_2" + }, /turf/open/floor/prison{ - icon_state = "whitegreen" + dir = 8; + icon_state = "darkbrowncorners2" }, -/area/fiorina/station/medbay) +/area/fiorina/station/park) "lAh" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/tumor/ice_lab) -"lAv" = ( -/obj/structure/sink{ - pixel_y = 15 +"lAn" = ( +/obj/effect/landmark/survivor_spawner, +/turf/open/floor/prison{ + icon_state = "darkbrown2" }, -/obj/structure/mirror{ - pixel_y = 28 +/area/fiorina/station/park) +"lAE" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison{ + icon_state = "darkyellow2" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"lAM" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/communications{ + dir = 4; + pixel_y = 5 }, /turf/open/floor/prison{ - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) -"lAS" = ( -/turf/open/floor/prison, /area/fiorina/station/power_ring) +"lAN" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/park) +"lAQ" = ( +/obj/structure/machinery/vending/snack/packaged, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/civres) "lAV" = ( /obj/structure/bed/stool, /turf/open/floor/plating/prison, @@ -18802,44 +19158,60 @@ /obj/structure/machinery/door/window/northright, /turf/open/floor/plating/prison, /area/fiorina/station/security/wardens) -"lBg" = ( -/obj/structure/machinery/door/airlock/prison_hatch/autoname{ - dir = 1 - }, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/medbay) -"lBJ" = ( -/obj/structure/bed/chair{ +"lBb" = ( +/obj/structure/machinery/light/double/blue{ dir = 4; - layer = 2.8 + pixel_x = 10; + pixel_y = 13 }, /turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"lCm" = ( -/obj/item/ammo_casing{ - icon_state = "cartridge_1" +/area/fiorina/station/central_ring) +"lBE" = ( +/obj/structure/barricade/metal/wired{ + dir = 8 }, +/obj/effect/spawner/random/sentry/midchance, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 1; + icon_state = "darkyellow2" }, -/area/fiorina/station/medbay) -"lCs" = ( -/obj/structure/barricade/metal/wired{ - dir = 4 +/area/fiorina/station/telecomm/lz1_cargo) +"lBI" = ( +/obj/item/ammo_casing{ + icon_state = "casing_5_1" }, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/station/lowsec) -"lCw" = ( +"lBR" = ( +/obj/effect/landmark/corpsespawner/ua_riot, /turf/open/floor/prison{ - dir = 9; - icon_state = "darkbrown2" + dir = 8; + icon_state = "whitegreen" }, -/area/fiorina/maintenance) +/area/fiorina/station/medbay) +"lBS" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/servers) +"lCl" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/tool/stamp/captain, +/obj/structure/machinery/processor{ + icon_state = "blender_jug_f_red"; + pixel_x = -6; + pixel_y = 6 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/aux_engi) "lCz" = ( /obj/structure/machinery/light/small, /obj/structure/largecrate/random/barrel/green, @@ -18847,59 +19219,52 @@ icon_state = "plate" }, /area/fiorina/tumor/ship) -"lCD" = ( -/obj/structure/closet/basketball, -/obj/item/storage/pill_bottle/tramadol/skillless, -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/station/research_cells) -"lCE" = ( -/obj/structure/platform{ +"lDo" = ( +/obj/item/storage/fancy/cigar, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"lDC" = ( +/obj/structure/platform/kutjevo/smooth, +/obj/structure/platform/kutjevo/smooth{ dir = 4 }, -/obj/item/tool/shovel/spade, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" +/turf/open/space/basic, +/area/fiorina/oob) +"lDG" = ( +/obj/structure/machinery/computer/drone_control, +/obj/structure/window/reinforced{ + dir = 4 }, -/area/fiorina/station/botany) -"lCZ" = ( -/obj/effect/landmark/objective_landmark/medium, +/obj/structure/window/reinforced, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"lDU" = ( +/obj/item/stack/cable_coil, /turf/open/floor/prison{ - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"lDe" = ( -/obj/structure/prop/souto_land/streamer{ - dir = 6 + icon_state = "floor_plate" }, +/area/fiorina/tumor/servers) +"lEd" = ( +/obj/structure/inflatable/popped/door, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" + dir = 9; + icon_state = "whitepurple" }, -/area/fiorina/station/park) -"lDm" = ( -/obj/structure/foamed_metal, +/area/fiorina/station/research_cells) +"lEg" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) -"lDC" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/turf/open/space/basic, -/area/fiorina/oob) -"lEa" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_ew_full_cap" +/area/fiorina/lz/near_lzII) +"lEk" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/communications{ + dir = 8; + icon_state = "commb" }, -/obj/structure/platform/stair_cut/alt, -/turf/open/floor/plating/prison, -/area/fiorina/station/chapel) +/turf/open/floor/prison, +/area/fiorina/tumor/servers) "lEp" = ( /obj/structure/platform/kutjevo/smooth{ dir = 8 @@ -18921,245 +19286,322 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"lEz" = ( +"lEF" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/cameras{ - dir = 4 + dir = 8 }, /turf/open/floor/prison{ icon_state = "darkredfull2" }, -/area/fiorina/station/disco) -"lEI" = ( +/area/fiorina/station/security) +"lEL" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood, +/obj/effect/spawner/gibspawner/human, /turf/open/floor/prison{ - dir = 10; - icon_state = "blue" + dir = 1; + icon_state = "darkbrown2" }, -/area/fiorina/tumor/servers) +/area/fiorina/station/park) "lFc" = ( /obj/effect/decal/cleanable/blood, /obj/effect/landmark/corpsespawner/security/liaison, /turf/open/floor/wood, /area/fiorina/station/park) -"lFj" = ( -/obj/effect/spawner/random/gun/pistol, +"lFg" = ( +/obj/item/paper, /turf/open/floor/prison{ dir = 10; icon_state = "sterile_white" }, -/area/fiorina/station/medbay) -"lFx" = ( -/obj/effect/decal/cleanable/blood, -/obj/structure/bed{ - icon_state = "abed" - }, -/obj/effect/landmark/corpsespawner/ua_riot, +/area/fiorina/station/research_cells) +"lFm" = ( +/obj/structure/bed/roller, +/obj/item/trash/used_stasis_bag, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/station/telecomm/lz1_cargo) -"lFC" = ( -/obj/item/clothing/head/cmcap, +"lFo" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = 1 + }, /turf/open/floor/prison{ - icon_state = "green" + icon_state = "floor_plate" }, -/area/fiorina/station/transit_hub) -"lFO" = ( -/obj/structure/largecrate/supply/supplies/water, +/area/fiorina/lz/near_lzII) +"lFv" = ( +/obj/item/stack/cable_coil, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"lFB" = ( /turf/open/floor/prison{ dir = 10; - icon_state = "floor_plate" + icon_state = "whitepurple" }, -/area/fiorina/station/telecomm/lz1_cargo) -"lGh" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/structure/machinery/landinglight/ds1/delaythree{ - dir = 1 +/area/fiorina/station/research_cells) +"lFD" = ( +/obj/item/tool/crowbar/red, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkbrown2" }, +/area/fiorina/tumor/aux_engi) +"lFM" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" }, -/area/fiorina/lz/near_lzI) -"lGm" = ( -/obj/structure/platform{ - dir = 1 - }, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"lGA" = ( -/obj/structure/machinery/bioprinter{ - stored_metal = 1000 - }, -/obj/structure/machinery/door/window/eastright, -/obj/structure/machinery/door/window/eastright{ - dir = 8 - }, +/area/fiorina/station/telecomm/lz1_tram) +"lFQ" = ( +/obj/structure/machinery/m56d_hmg/mg_turret/dropship, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) +"lFV" = ( +/obj/structure/machinery/space_heater, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "kitchen" }, -/area/fiorina/station/medbay) -"lHc" = ( -/obj/structure/bed{ - icon_state = "abed" +/area/fiorina/tumor/civres) +"lGL" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -1 }, -/obj/item/card/id/visa, /turf/open/floor/prison{ - icon_state = "whitepurple" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/chapel) +"lHw" = ( +/obj/structure/barricade/handrail/type_b, +/turf/open/floor/prison{ + icon_state = "darkyellow2" + }, +/area/fiorina/station/flight_deck) "lHx" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"lHy" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" +"lHE" = ( +/obj/item/explosive/grenade/high_explosive/frag, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/turf/open/floor/plating/prison, -/area/fiorina/station/disco) -"lHB" = ( -/obj/effect/spawner/random/gun/rifle/lowchance, +/turf/open/floor/prison, +/area/fiorina/station/security) +"lIj" = ( +/obj/structure/prop/ice_colony/surveying_device, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "blue" + }, +/area/fiorina/tumor/servers) +"lIk" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/ashtray/plastic, +/obj/item/trash/cigbutt/ucigbutt{ + pixel_x = 5; + pixel_y = 12 + }, +/obj/item/trash/cigbutt/ucigbutt, +/obj/item/trash/cigbutt/cigarbutt{ + pixel_x = 5; + pixel_y = 11 }, -/area/fiorina/lz/near_lzI) -"lHL" = ( -/obj/structure/surface/rack, -/obj/item/device/flashlight, -/obj/effect/decal/cleanable/blood, -/obj/item/attachable/bipod, -/obj/item/device/multitool, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/medbay) +"lIl" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 9 + }, +/turf/open/floor/prison{ + dir = 5; + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) +"lIt" = ( +/obj/structure/disposalpipe/segment{ + color = "#c4c4c4"; + dir = 4; + layer = 6; + name = "overhead pipe"; + pixel_y = 12 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/civres) "lIv" = ( /turf/closed/shuttle/ert{ icon_state = "stan5" }, /area/fiorina/lz/near_lzI) -"lIx" = ( -/obj/item/tool/wet_sign, +"lIA" = ( +/obj/effect/landmark/xeno_spawn, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrown2" }, -/area/fiorina/station/park) +/area/fiorina/tumor/aux_engi) +"lIC" = ( +/obj/structure/barricade/handrail/type_b{ + dir = 8 + }, +/obj/structure/bed/chair/office/dark{ + dir = 4; + layer = 3.25 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) "lIG" = ( /obj/structure/extinguisher_cabinet, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/research_cells) +"lIH" = ( +/obj/structure/machinery/processor, +/turf/open/floor/prison{ + dir = 8; + icon_state = "blue_plate" + }, +/area/fiorina/station/botany) "lIJ" = ( /obj/item/stack/rods, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"lJa" = ( -/obj/effect/decal{ - icon = 'icons/obj/items/policetape.dmi'; - icon_state = "engineering_h"; - layer = 2.5; - pixel_y = -11 - }, -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" +"lJf" = ( +/obj/structure/reagent_dispensers/fueltank/gas/hydrogen{ + layer = 2.6 }, -/area/fiorina/station/telecomm/lz1_cargo) -"lJm" = ( -/obj/item/device/flashlight/lamp/tripod, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/park) -"lJv" = ( +/area/fiorina/lz/near_lzII) +"lJx" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/storage/firstaid/regular, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 - }, -/turf/open/floor/prison{ - dir = 6; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"lJy" = ( -/obj/structure/platform{ - dir = 8 +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_29"; + pixel_y = 10 }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"lJI" = ( +/obj/item/clothing/suit/storage/hazardvest, +/obj/item/clothing/suit/storage/hazardvest, +/obj/structure/surface/rack, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/power_ring) -"lKd" = ( +/area/fiorina/maintenance) +"lJS" = ( +/obj/structure/largecrate/supply/medicine/iv, /turf/open/floor/prison{ dir = 10; - icon_state = "kitchen" + icon_state = "sterile_white" }, -/area/fiorina/tumor/civres) -"lKt" = ( -/obj/structure/sign/poster{ - icon_state = "poster18"; - pixel_y = 32 +/area/fiorina/station/medbay) +"lKI" = ( +/obj/structure/largecrate/random/case, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"lKP" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" }, /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 4; + icon_state = "blue" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/chapel) "lLe" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"lLv" = ( -/obj/structure/machinery/landinglight/ds2{ - dir = 8 - }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) "lLE" = ( /obj/item/bedsheet/blue, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"lLP" = ( -/obj/structure/bookcase/manuals/research_and_development{ - pixel_y = 10 - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitepurple" +"lLQ" = ( +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"lLS" = ( +/obj/structure/prop/resin_prop{ + icon_state = "sheater0" }, -/area/fiorina/station/research_cells) -"lLU" = ( -/obj/effect/landmark/corpsespawner/engineer, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) +/area/fiorina/tumor/aux_engi) +"lMh" = ( +/obj/structure/machinery/vending/coffee, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) "lMi" = ( /obj/structure/largecrate/random, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"lMB" = ( -/obj/effect/decal/cleanable/blood/gibs/core, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) -"lMM" = ( +"lMq" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/microwave{ + icon_state = "mwo"; + pixel_y = 6 + }, /turf/open/floor/prison{ - icon_state = "blue" + dir = 10; + icon_state = "kitchen" }, -/area/fiorina/tumor/servers) -"lNg" = ( -/obj/structure/monorail{ - name = "launch track" +/area/fiorina/station/civres_blue) +"lMV" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/communications{ + dir = 1 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_tram) +/area/fiorina/station/power_ring) +"lNc" = ( +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) +"lNf" = ( +/obj/item/inflatable, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) "lNv" = ( /obj/item/handcuffs/cable/pink, /turf/open/floor/prison/chapel_carpet{ @@ -19167,124 +19609,125 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"lNB" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/sign/poster{ - desc = "Hubba hubba."; - icon_state = "poster3"; - name = "magazine"; - pixel_x = 6; - pixel_y = 8 +"lNP" = ( +/obj/structure/bed/roller, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) +"lNR" = ( +/obj/item/trash/cigbutt/ucigbutt, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"lOe" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" }, -/obj/structure/sign/poster{ - desc = "Hubba hubba."; - icon_state = "poster17"; - name = "magazine" +/area/fiorina/station/telecomm/lz1_tram) +"lOk" = ( +/obj/structure/curtain, +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" }, -/obj/structure/sign/poster{ - desc = "The M41A is on the cover."; - icon_state = "poster15"; - name = "magazine"; - pixel_x = -5; - pixel_y = 5 +/area/fiorina/station/power_ring) +"lOm" = ( +/obj/structure/largecrate/random/case/small, +/obj/item/bodybag/tarp/reactive{ + pixel_y = 6 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/station/medbay) +"lOx" = ( /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 }, /turf/open/floor/prison{ + dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/security/wardens) -"lOa" = ( +/area/fiorina/station/telecomm/lz1_cargo) +"lOy" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - dir = 10; - icon_state = "damaged2" + icon_state = "darkyellow2" }, -/area/fiorina/station/lowsec) -"lOb" = ( -/obj/structure/closet/crate/internals, -/obj/item/tool/crew_monitor, +/area/fiorina/lz/near_lzI) +"lPA" = ( +/obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/prison, /area/fiorina/lz/near_lzI) -"lOo" = ( -/obj/structure/largecrate/random/case/double, +"lPE" = ( +/obj/structure/closet/secure_closet/freezer/kitchen, +/obj/item/reagent_container/food/condiment/enzyme, +/obj/item/reagent_container/food/condiment/enzyme, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + icon_state = "kitchen" + }, +/area/fiorina/station/power_ring) +"lQo" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/area/fiorina/tumor/aux_engi) -"lOE" = ( /turf/open/floor/prison{ - dir = 9; - icon_state = "blue" + dir = 4; + icon_state = "greenfull" }, -/area/fiorina/station/chapel) -"lPq" = ( -/obj/structure/prop/dam/crane, +/area/fiorina/station/transit_hub) +"lQJ" = ( +/obj/structure/closet/emcloset, +/obj/effect/landmark/objective_landmark/far, /turf/open/floor/prison{ - dir = 8; - icon_state = "floor_marked" + dir = 10; + icon_state = "darkbrown2" }, -/area/fiorina/tumor/servers) -"lPV" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" +/area/fiorina/maintenance) +"lQL" = ( +/obj/structure/machinery/space_heater, +/obj/structure/platform{ + dir = 8 }, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"lPW" = ( -/obj/structure/machinery/light/double/blue{ +/turf/open/floor/prison{ dir = 8; - pixel_x = -10; - pixel_y = 13 + icon_state = "whitegreen" }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"lQd" = ( -/obj/structure/closet/secure_closet/freezer/fridge/full, +/area/fiorina/tumor/ice_lab) +"lRk" = ( +/obj/item/stack/rods/plasteel, /turf/open/floor/prison{ - icon_state = "kitchen" + icon_state = "damaged3" }, -/area/fiorina/station/power_ring) -"lQf" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/tool, +/area/fiorina/station/security) +"lRq" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "cell_stripe" }, /area/fiorina/station/park) -"lQZ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/emails{ - pixel_y = 5 - }, +"lRr" = ( /turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) -"lRe" = ( -/obj/structure/bed/chair/comfy{ - dir = 8 + dir = 6; + icon_state = "blue" }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" +/area/fiorina/station/civres_blue) +"lRT" = ( +/turf/closed/wall/r_wall/prison_unmeltable, +/area/fiorina/lz/near_lzI) +"lRW" = ( +/obj/item/trash/used_stasis_bag{ + desc = "Wow, instant sand. They really have everything in space."; + name = "Insta-Sand! bag" }, -/area/fiorina/station/flight_deck) -"lRH" = ( -/obj/item/stack/cable_coil, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/security) -"lRI" = ( -/obj/item/device/flashlight/lamp/tripod, +/area/fiorina/station/civres_blue) +"lSb" = ( +/obj/structure/machinery/vending/snack, /turf/open/floor/prison, -/area/fiorina/station/park) -"lRT" = ( -/turf/closed/wall/r_wall/prison_unmeltable, -/area/fiorina/lz/near_lzI) +/area/fiorina/tumor/aux_engi) "lSj" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic/autoname{ dir = 2; @@ -19292,22 +19735,19 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"lSY" = ( -/obj/effect/spawner/random/tool, +"lSq" = ( +/obj/item/ammo_magazine/shotgun/buckshot, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "darkpurplefull2" }, /area/fiorina/station/research_cells) -"lTm" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/machinery/photocopier, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"lSS" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 }, -/area/fiorina/tumor/ice_lab) +/obj/structure/lattice, +/turf/open/space/basic, +/area/fiorina/oob) "lTp" = ( /obj/structure/sink{ pixel_y = 15 @@ -19316,34 +19756,18 @@ icon_state = "plate" }, /area/fiorina/tumor/ship) -"lUg" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" - }, -/obj/structure/platform, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"lTW" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_29"; + pixel_y = 6 }, -/area/fiorina/station/botany) +/turf/open/floor/prison, +/area/fiorina/station/power_ring) "lUi" = ( /turf/closed/shuttle/ert{ icon_state = "stan23" }, /area/fiorina/tumor/ship) -"lUp" = ( -/obj/structure/largecrate/random, -/obj/effect/decal/medical_decals{ - icon_state = "triagedecalbottomright" - }, -/obj/item/reagent_container/food/drinks/coffee{ - pixel_y = 13 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) "lUs" = ( /obj/structure/ice/thin/indestructible{ dir = 4; @@ -19367,52 +19791,48 @@ icon_state = "plate" }, /area/fiorina/station/civres_blue) +"lUv" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) "lUE" = ( /obj/structure/barricade/metal/wired{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/fiorina/tumor/ship) -"lVP" = ( -/obj/structure/machinery/constructable_frame, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"lUZ" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, /turf/open/floor/prison{ - dir = 10; - icon_state = "damaged2" - }, -/area/fiorina/station/lowsec) -"lWD" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 + icon_state = "darkredfull2" }, +/area/fiorina/station/research_cells) +"lVA" = ( /turf/open/floor/prison{ dir = 4; - icon_state = "greenblue" + icon_state = "cell_stripe" }, -/area/fiorina/station/botany) -"lXc" = ( -/obj/item/stool, +/area/fiorina/lz/near_lzII) +"lVQ" = ( +/obj/structure/inflatable/door, /turf/open/floor/prison{ - dir = 4; - icon_state = "yellow" + icon_state = "whitegreencorner" }, -/area/fiorina/station/lowsec) -"lXf" = ( -/turf/open/floor/prison{ - icon_state = "bluecorner" +/area/fiorina/station/medbay) +"lWn" = ( +/obj/structure/machinery/shower{ + pixel_y = 13 }, -/area/fiorina/station/power_ring) -"lXk" = ( -/obj/effect/spawner/random/toolbox, +/obj/item/tool/soap/nanotrasen, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "kitchen" }, -/area/fiorina/station/medbay) +/area/fiorina/tumor/civres) "lXs" = ( /obj/item/book/manual/marine_law, /obj/item/book/manual/marine_law{ @@ -19436,148 +19856,95 @@ }, /turf/open/ice/noweed, /area/fiorina/tumor/ice_lab) -"lYc" = ( -/obj/effect/alien/weeds/node, -/turf/open/floor/prison{ - icon_state = "darkbrown2" - }, -/area/fiorina/tumor/aux_engi) -"lYl" = ( -/obj/structure/barricade/handrail/type_b{ - layer = 3.4 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) -"lYr" = ( -/obj/item/ammo_magazine/smg/mp5, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"lYw" = ( -/obj/item/shard{ - icon_state = "large" - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"lYj" = ( +/obj/structure/sink{ + pixel_y = 15 }, -/area/fiorina/station/security) -"lYA" = ( -/obj/structure/machinery/landinglight/ds1{ - dir = 8 +/obj/structure/mirror{ + pixel_y = 28 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + icon_state = "sterile_white" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/civres_blue) "lZf" = ( /turf/closed/shuttle/elevator{ dir = 10 }, /area/fiorina/tumor/aux_engi) -"lZA" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic/autoname{ - icon = 'icons/obj/structures/doors/2x1prepdoor_charlie.dmi' - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/research_cells) -"lZC" = ( -/obj/structure/bed/chair{ - dir = 8 - }, +"lZm" = ( +/obj/item/trash/cigbutt, /turf/open/floor/prison{ - icon_state = "darkbrowncorners2" - }, -/area/fiorina/maintenance) -"lZL" = ( -/obj/structure/barricade/sandbags{ - dir = 8; - icon_state = "sandbag_0"; - pixel_y = 2 + dir = 4; + icon_state = "blue" }, +/area/fiorina/station/power_ring) +"lZo" = ( /obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"mak" = ( -/obj/structure/machinery/shower{ + dir = 4; + pixel_x = 10; pixel_y = 13 }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/fiberbush) +"lZp" = ( /turf/open/floor/prison{ icon_state = "kitchen" }, /area/fiorina/station/lowsec) -"mam" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" +"lZs" = ( +/obj/structure/disposalpipe/segment{ + color = "#c4c4c4"; + dir = 2; + layer = 6; + name = "overhead pipe"; + pixel_x = -16; + pixel_y = 12 }, -/obj/structure/platform/stair_cut/alt, /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/disco) -"maC" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/faxmachine, /turf/open/floor/prison, -/area/fiorina/station/security) -"maE" = ( -/obj/item/device/motiondetector, -/turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" +/area/fiorina/tumor/servers) +"lZA" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic/autoname{ + icon = 'icons/obj/structures/doors/2x1prepdoor_charlie.dmi' }, -/area/fiorina/station/lowsec) -"mbc" = ( -/obj/structure/machinery/vending/snack, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"mbe" = ( -/obj/effect/decal/cleanable/blood/xeno{ - icon_state = "xgib3" +/turf/open/floor/plating/prison, +/area/fiorina/station/research_cells) +"maA" = ( +/obj/item/stack/tile/plasteel, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" }, +/area/fiorina/tumor/ice_lab) +"maY" = ( +/obj/structure/prop/almayer/computers/sensor_computer2, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/flight_deck) +/area/fiorina/tumor/servers) "mbg" = ( /obj/structure/machinery/light/double/blue, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/medbay) -"mbi" = ( -/obj/effect/decal/medical_decals{ - icon_state = "docstripingdir" - }, -/obj/item/stack/rods/plasteel, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) "mbp" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ dir = 1 }, /turf/open/floor/plating/prison, /area/fiorina/oob) +"mbz" = ( +/obj/item/ammo_box/magazine/M16, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) "mbC" = ( /obj/item/clipboard, /turf/open/floor/plating/prison, @@ -19592,71 +19959,73 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"mbN" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/civres_blue) -"mcc" = ( -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/lowsec) "mcr" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/stock_parts/matter_bin/super, /turf/open/floor/wood, /area/fiorina/station/park) -"mct" = ( -/obj/item/trash/kepler, +"mcH" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" + icon_state = "blue" }, -/area/fiorina/station/medbay) -"mcE" = ( +/area/fiorina/tumor/servers) +"mcJ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/ammo_magazine/shotgun/buckshot, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellowcorners2" + icon_state = "yellowfull" }, -/area/fiorina/lz/near_lzI) -"mcG" = ( -/obj/effect/landmark{ - icon_state = "hive_spawn"; - name = "xeno_hive_spawn" +/area/fiorina/station/disco) +"mdd" = ( +/obj/item/storage/toolbox/electrical, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/servers) +"mdz" = ( +/obj/effect/decal/medical_decals{ + icon_state = "triagedecalleft" + }, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/obj/effect/landmark/ert_spawns/groundside_xeno, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) +"mdD" = ( +/obj/item/stool, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/area/fiorina/tumor/aux_engi) -"mcN" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" + icon_state = "bluefull" }, -/area/fiorina/lz/near_lzI) -"mcT" = ( -/obj/structure/barricade/handrail/type_b{ - layer = 3.4 +/area/fiorina/station/civres_blue) +"mdG" = ( +/obj/structure/prop/souto_land/streamer{ + dir = 1; + pixel_y = 24 }, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +/obj/structure/bed/chair{ + dir = 4; + pixel_y = 4 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "darkbrown2" }, -/area/fiorina/tumor/ice_lab) -"mdd" = ( -/obj/item/storage/toolbox/electrical, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/servers) -"mdn" = ( -/obj/structure/machinery/recharge_station, +/area/fiorina/station/park) +"mdH" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/card/id/guest{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/card/id/guest, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "redfull" }, /area/fiorina/station/security) "mdJ" = ( @@ -19666,18 +20035,22 @@ /obj/structure/platform/kutjevo/smooth, /turf/open/space, /area/fiorina/oob) -"mea" = ( -/obj/item/fuelCell, -/obj/structure/surface/rack, -/turf/open/floor/prison, -/area/fiorina/maintenance) -"med" = ( -/obj/structure/reagent_dispensers/watertank, +"mdS" = ( /turf/open/floor/prison{ + dir = 8; + icon_state = "greenbluecorner" + }, +/area/fiorina/station/botany) +"mdY" = ( +/obj/structure/machinery/light/double/blue{ dir = 4; - icon_state = "bluecorner" + pixel_x = 10; + pixel_y = 13 }, -/area/fiorina/station/power_ring) +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/flight_deck) "mei" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/cameras{ @@ -19692,51 +20065,6 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"mel" = ( -/obj/item/device/flashlight/lamp/tripod, -/turf/open/floor/prison{ - icon_state = "blue" - }, -/area/fiorina/station/power_ring) -"mey" = ( -/obj/item/trash/chunk, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/station/research_cells) -"meF" = ( -/obj/structure/closet/secure_closet/guncabinet{ - req_access = null - }, -/obj/item/clothing/under/marine/ua_riot, -/obj/item/clothing/suit/storage/marine/veteran/ua_riot, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"meG" = ( -/obj/structure/surface/rack, -/obj/item/tank/emergency_oxygen/engi, -/turf/open/floor/prison{ - icon_state = "bluecorner" - }, -/area/fiorina/station/power_ring) -"meM" = ( -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - dir = 8; - icon_state = "blue_plate" - }, -/area/fiorina/station/botany) -"mfd" = ( -/obj/structure/platform_decoration{ - dir = 4 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "bluecorner" - }, -/area/fiorina/station/power_ring) "mfe" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/weapon/twohanded/sledgehammer{ @@ -19744,26 +20072,12 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"mfo" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/disco) -"mft" = ( -/obj/structure/machinery/vending/snack, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"mfK" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, +"mfF" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + icon_state = "darkyellow2" }, -/area/fiorina/station/transit_hub) +/area/fiorina/lz/near_lzI) "mfR" = ( /obj/structure/bed{ icon_state = "psychbed" @@ -19774,45 +20088,35 @@ }, /turf/open/floor/wood, /area/fiorina/station/civres_blue) -"mfV" = ( -/obj/structure/inflatable/popped/door, +"mgh" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /turf/open/floor/prison{ - dir = 4; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"mgC" = ( -/obj/structure/sign/poster{ - desc = "You are becoming hysterical."; - icon_state = "poster11"; - pixel_y = 32 + icon_state = "whitegreen" }, +/area/fiorina/tumor/ice_lab) +"mgz" = ( /turf/open/floor/prison{ dir = 10; - icon_state = "floor_plate" + icon_state = "sterile_white" }, -/area/fiorina/station/flight_deck) -"mgU" = ( -/obj/effect/landmark/nightmare{ - insert_tag = "birthday" +/area/fiorina/station/research_cells) +"mgE" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkyellow2" }, -/area/fiorina/station/power_ring) -"mhb" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" +/area/fiorina/lz/near_lzI) +"mgO" = ( +/obj/structure/window{ + dir = 8 }, -/area/fiorina/station/medbay) -"mhe" = ( -/obj/item/tool/wrench, +/obj/item/circuitboard/machine/rdserver, /turf/open/floor/prison{ - dir = 1; - icon_state = "whitepurple" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/research_cells) +/area/fiorina/tumor/servers) "mho" = ( /obj/structure/machinery/light/double/blue{ dir = 1; @@ -19820,20 +20124,6 @@ }, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"mhu" = ( -/obj/item/paper/prison_station/inmate_handbook, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"mhv" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 8 - }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) "mhM" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ dir = 1; @@ -19845,64 +20135,33 @@ /obj/effect/spawner/random/gun/rifle/lowchance, /turf/open/auto_turf/sand/layer1, /area/fiorina/station/flight_deck) -"mhW" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/clothing/mask/cigarette, -/obj/item/storage/fancy/cigarettes/emeraldgreen{ - pixel_x = -4; - pixel_y = 9 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/aux_engi) -"mie" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_18"; - pixel_y = 12 - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/security/wardens) -"mii" = ( -/obj/item/weapon/pole/wooden_cane, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/civres) -"miu" = ( -/obj/structure/machinery/cm_vending/sorted/tech/comp_storage{ - density = 0; - pixel_y = 16 - }, +"mhS" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ dir = 1; - icon_state = "darkbrown2" - }, -/area/fiorina/maintenance) -"miB" = ( -/obj/structure/barricade/metal{ - health = 85; - icon_state = "metal_1" + icon_state = "greenblue" }, -/turf/open/floor/prison, -/area/fiorina/station/park) +/area/fiorina/station/botany) "miU" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating/prison, /area/fiorina/station/disco) -"miZ" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +"mjm" = ( +/obj/item/reagent_container/food/drinks/coffee{ + name = "\improper paper cup" }, -/obj/structure/platform{ - dir = 4 +/turf/open/floor/prison{ + dir = 5; + icon_state = "yellow" }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) +/area/fiorina/station/central_ring) +"mju" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) "mjx" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/tumor/servers) @@ -19912,61 +20171,66 @@ name = "pool" }, /area/fiorina/station/park) -"mjD" = ( -/obj/effect/decal{ - icon = 'icons/obj/items/policetape.dmi'; - icon_state = "engineering_h"; - layer = 2.5; - pixel_y = -11 - }, +"mkn" = ( /turf/open/floor/prison{ - dir = 4; + dir = 6; icon_state = "darkyellow2" }, -/area/fiorina/station/flight_deck) -"mki" = ( -/obj/item/stack/sandbags_empty/half, +/area/fiorina/station/power_ring) +"mkI" = ( +/obj/structure/machinery/microwave{ + desc = "So uh yeah, about that cat..."; + icon_state = "mwbloodyo"; + pixel_y = 6 + }, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"mlb" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" + dir = 5; + icon_state = "whitegreen" }, -/area/fiorina/station/flight_deck) -"mky" = ( -/obj/item/storage/firstaid/regular, +/area/fiorina/tumor/ice_lab) +"mld" = ( +/obj/structure/machinery/photocopier, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"mkB" = ( +/area/fiorina/station/security) +"mlg" = ( +/obj/effect/landmark/corpsespawner/ua_riot/burst, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrowncorners2" + dir = 1; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"mlu" = ( +/obj/structure/prop/invuln/minecart_tracks/bumper{ + dir = 1 }, -/area/fiorina/station/park) -"mli" = ( -/obj/structure/largecrate/random/case/double, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/telecomm/lz1_tram) +/area/fiorina/tumor/servers) "mlC" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/station/disco) -"mlM" = ( -/obj/structure/machinery/computer3/server/rack, -/obj/structure/barricade/handrail/type_b{ - dir = 8; - layer = 3.5 +"mlU" = ( +/obj/structure/machinery/shower{ + pixel_y = 13 }, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"mmh" = ( -/obj/item/trash/burger, -/turf/open/floor/prison, -/area/fiorina/station/disco) +/obj/item/tool/soap/syndie, +/obj/structure/closet/crate/trashcart, +/obj/effect/spawner/random/gun/special, +/obj/effect/landmark/objective_landmark/far, +/turf/open/floor/prison{ + dir = 10; + icon_state = "kitchen" + }, +/area/fiorina/tumor/civres) "mmp" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/stock_parts/matter_bin/adv{ @@ -19980,143 +20244,190 @@ /obj/item/reagent_container/food/drinks/bottle/sake, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"mmP" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/structure/monorail{ - dir = 10; - name = "launch track" +"mnd" = ( +/obj/structure/reagent_dispensers/water_cooler{ + density = 0; + pixel_x = -8; + pixel_y = 16 }, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzII) -"mni" = ( -/obj/structure/bed/chair/comfy{ - dir = 4 +/turf/open/floor/prison, +/area/fiorina/tumor/ice_lab) +"mnr" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, +/turf/open/floor/prison, +/area/fiorina/tumor/fiberbush) +"mns" = ( +/obj/item/stool, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/security) -"mnp" = ( -/obj/item/reagent_container/food/drinks/cans/waterbottle, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) +/area/fiorina/station/research_cells) "mny" = ( /turf/closed/wall/prison, /area/fiorina/station/flight_deck) -"moJ" = ( -/obj/structure/filingcabinet{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/structure/filingcabinet{ - pixel_x = -8; - pixel_y = 4 +"mnJ" = ( +/obj/item/stack/rods, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/station/chapel) +"mnR" = ( +/obj/structure/machinery/vending/cigarette/colony, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) +/area/fiorina/station/chapel) +"mom" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/tool/surgery/surgicaldrill, +/turf/open/floor/prison{ + icon_state = "yellowcorner" + }, +/area/fiorina/station/lowsec) +"moK" = ( +/obj/item/clothing/under/shorts/red, +/turf/open/floor/prison{ + icon_state = "yellowfull" + }, +/area/fiorina/station/central_ring) +"moQ" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) "moW" = ( /obj/effect/landmark/corpsespawner/ua_riot/burst, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) +"mpb" = ( +/obj/item/tool/warning_cone, +/turf/open/floor/prison, +/area/fiorina/station/park) "mpf" = ( /obj/structure/reagent_dispensers/fueltank/gas/hydrogen{ layer = 2.6 }, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/lz/near_lzII) -"mpr" = ( -/obj/structure/bed/chair/comfy{ - dir = 4 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) -"mpO" = ( -/obj/structure/machinery/power/smes/buildable{ - capacity = 1e+006; - dir = 1 - }, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"mpT" = ( -/obj/structure/platform{ +"mpB" = ( +/obj/structure/platform/kutjevo/smooth{ dir = 1 }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/flight_deck) -"mqc" = ( -/obj/item/reagent_container/food/drinks/cans/waterbottle, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/lz/near_lzII) -"mqo" = ( -/obj/structure/barricade/metal{ - health = 250; - icon_state = "metal_1" - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) -"mqY" = ( -/obj/structure/bed/chair{ - dir = 4; - pixel_y = 8 +/obj/structure/platform/kutjevo/smooth{ + dir = 8 }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" +/obj/structure/platform/kutjevo/smooth, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" }, -/area/fiorina/station/medbay) -"mrk" = ( +/turf/open/space/basic, +/area/fiorina/oob) +"mpE" = ( /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 }, -/turf/open/floor/plating/prison, -/area/fiorina/maintenance) -"mrm" = ( -/obj/item/stack/tile/plasteel{ - pixel_x = 5; - pixel_y = 5 +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" }, +/area/fiorina/station/botany) +"mpN" = ( +/obj/item/stock_parts/manipulator/pico, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 4; + icon_state = "darkpurple2" }, -/area/fiorina/tumor/ice_lab) -"mrn" = ( +/area/fiorina/tumor/servers) +"mpR" = ( +/obj/structure/machinery/vending/cigarette/colony, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) +"mpY" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22" }, +/obj/structure/barricade/handrail/type_b{ + dir = 1 + }, +/obj/structure/platform{ + dir = 4 + }, /turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/medbay) +"mqB" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + icon_state = "red" + }, +/area/fiorina/station/security) +"mqJ" = ( +/obj/structure/barricade/metal/wired{ + dir = 8 + }, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"mqM" = ( +/obj/item/stack/sandbags_empty/half, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/fiorina/station/flight_deck) +"mrk" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/plating/prison, +/area/fiorina/maintenance) "mrG" = ( /obj/structure/extinguisher_cabinet, /obj/structure/window/framed/prison, /turf/open/floor/plating/prison, /area/fiorina/station/disco) -"mrO" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, +"mrI" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med, +/turf/closed/wall/prison, +/area/fiorina/station/medbay) +"mrK" = ( +/obj/structure/closet/secure_closet/medical2, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/transit_hub) +/area/fiorina/station/telecomm/lz1_cargo) +"mrW" = ( +/obj/item/stack/rods, +/turf/open/floor/prison, +/area/fiorina/station/disco) "mrX" = ( /obj/structure/bed/chair{ dir = 8 }, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) +"msd" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) "msj" = ( /obj/item/toy/crayon/orange, /turf/open/floor/plating/prison, @@ -20130,16 +20441,6 @@ icon_state = "plating" }, /area/fiorina/tumor/ship) -"mss" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_tram) "msu" = ( /obj/structure/barricade/wooden{ dir = 4; @@ -20147,13 +20448,17 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"msv" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"msF" = ( +/obj/structure/closet/secure_closet/engineering_materials, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/tumor/aux_engi) +"msH" = ( +/obj/item/tool/surgery/cautery, /turf/open/floor/prison{ - dir = 9; + dir = 8; icon_state = "yellow" }, /area/fiorina/station/lowsec) @@ -20165,85 +20470,151 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"mtk" = ( +"mtD" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/microwave{ + pixel_y = 7 + }, /turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreencorner" + icon_state = "bluefull" }, -/area/fiorina/tumor/ice_lab) -"mtm" = ( -/obj/effect/spawner/random/toolbox, +/area/fiorina/station/power_ring) +"mtG" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrowncorners2" }, -/area/fiorina/tumor/civres) -"mtr" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/drinks/milk{ - pixel_x = 2; - pixel_y = 3 +/area/fiorina/station/park) +"mtP" = ( +/obj/structure/window/reinforced{ + dir = 8; + health = 80 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"mue" = ( +/obj/structure/closet{ + density = 0; + pixel_y = 18 }, -/area/fiorina/tumor/fiberbush) -"muB" = ( -/obj/effect/landmark/corpsespawner/ua_riot/burst, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + icon_state = "yellowfull" + }, +/area/fiorina/station/lowsec) +"muD" = ( +/obj/structure/tunnel, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/civres_blue) +"muX" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 }, -/area/fiorina/tumor/civres) -"muO" = ( -/turf/open/floor/prison, -/area/fiorina/station/chapel) -"muT" = ( -/obj/item/device/flashlight/flare/on, /turf/open/floor/prison{ dir = 1; icon_state = "whitegreen" }, /area/fiorina/tumor/ice_lab) -"muZ" = ( -/obj/item/storage/briefcase, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) "mvl" = ( /obj/structure/window/framed/prison/reinforced, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"mwL" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" +"mvp" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" }, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"mwU" = ( -/obj/structure/barricade/handrail/type_b{ +/area/fiorina/tumor/ice_lab) +"mvF" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/obj/structure/machinery/door/poddoor/almayer/locked{ + indestructible = 1; + name = "launch bay door" + }, +/turf/open/floor/plating/prison, +/area/fiorina/oob) +"mvV" = ( +/obj/structure/platform{ + dir = 4 + }, +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ dir = 4; - layer = 3.5 + icon_state = "whitegreen" }, -/obj/structure/disposalpipe/segment{ - icon_state = "delivery_outlet"; - layer = 6; - name = "overhead ducting"; - pixel_y = 33 +/area/fiorina/tumor/ice_lab) +"mvY" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/tool, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) +"mwu" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/spacecash/c10, +/obj/item/spacecash/c10{ + pixel_x = 5; + pixel_y = 10 + }, +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/lowsec) +"mwK" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/phone{ + pixel_x = -3; + pixel_y = 10 + }, +/obj/item/phone{ + pixel_x = 9; + pixel_y = -10 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/security) +"mwP" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) +"mxc" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) "mxk" = ( /obj/item/trash/tray, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/power_ring) -"mxn" = ( +"mxm" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/tool/plantspray/pests, /turf/open/floor/prison{ dir = 4; - icon_state = "bluecorner" + icon_state = "blue_plate" }, -/area/fiorina/station/chapel) +/area/fiorina/station/botany) "mxs" = ( /obj/item/storage/belt/marine/quackers, /obj/effect/spawner/gibspawner/human, @@ -20252,24 +20623,6 @@ name = "pool" }, /area/fiorina/station/park) -"mxz" = ( -/obj/item/bedsheet, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/lowsec) -"mxO" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, -/obj/structure/barricade/handrail/type_b{ - dir = 1 - }, -/obj/structure/platform{ - dir = 4 - }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) "mxQ" = ( /turf/closed/wall/prison, /area/fiorina/station/power_ring) @@ -20277,61 +20630,84 @@ /obj/effect/decal/cleanable/blood, /turf/open/floor/wood, /area/fiorina/station/chapel) -"myg" = ( -/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, +"myf" = ( +/obj/structure/filingcabinet, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"myi" = ( +/obj/item/tool/mop, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) -"myt" = ( +/area/fiorina/station/civres_blue) +"myj" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"myA" = ( +/obj/structure/bed/chair{ + dir = 4; + layer = 2.8 + }, +/obj/structure/barricade/handrail/type_b, /turf/open/floor/prison{ - dir = 10; - icon_state = "red" + icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"myO" = ( -/obj/structure/closet/firecloset/full, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/station/flight_deck) +"myH" = ( +/obj/item/storage/briefcase, +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" }, +/area/fiorina/station/transit_hub) +"myJ" = ( +/obj/structure/closet/bombcloset, +/obj/effect/spawner/random/gun/rifle/midchance, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreen" + dir = 6; + icon_state = "darkyellow2" }, -/area/fiorina/station/medbay) -"mzp" = ( -/obj/structure/disposalpipe/segment{ - icon_state = "delivery_outlet"; - layer = 6; - name = "overhead ducting"; - pixel_y = 33 +/area/fiorina/station/flight_deck) +"myK" = ( +/obj/structure/machinery/vending/cola, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/tumor/aux_engi) +"myQ" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "whitegreen" }, /area/fiorina/tumor/ice_lab) +"mzn" = ( +/obj/item/frame/firstaid_arm_assembly, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/civres_blue) "mzy" = ( /obj/structure/largecrate/random/barrel/green, /turf/open/floor/corsat{ icon_state = "plate" }, /area/fiorina/tumor/aux_engi) -"mzz" = ( -/obj/structure/bed/chair/comfy{ - dir = 1 +"mzJ" = ( +/obj/item/tool/lighter/random{ + pixel_x = 14; + pixel_y = 13 }, /turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"mzF" = ( -/obj/structure/bed/chair/comfy{ - dir = 4 - }, +/area/fiorina/station/power_ring) +"mzK" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "whitegreencorner" }, -/area/fiorina/station/civres_blue) +/area/fiorina/station/medbay) "mzS" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname{ dir = 1; @@ -20345,100 +20721,81 @@ opacity = 0 }, /area/fiorina/oob) -"mAg" = ( -/obj/structure/prop/souto_land/streamer{ - dir = 1; - pixel_y = 24 - }, -/obj/structure/bed/chair{ - dir = 4; - pixel_y = 4 +"mAs" = ( +/obj/item/broken_device, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" }, +/area/fiorina/station/medbay) +"mAt" = ( /turf/open/floor/prison{ - icon_state = "darkbrown2" + icon_state = "greenbluecorner" }, -/area/fiorina/station/park) -"mAv" = ( -/obj/item/ammo_magazine/rifle/m16{ - current_rounds = 0; - pixel_x = 10; - pixel_y = -8 +/area/fiorina/station/botany) +"mAK" = ( +/obj/structure/sign/poster{ + desc = "Hubba hubba."; + icon_state = "poster17"; + name = "magazine" }, -/obj/item/ammo_magazine/rifle/m16{ - current_rounds = 0 +/obj/structure/sign/poster{ + desc = "Hubba hubba."; + icon_state = "poster3"; + name = "magazine"; + pixel_x = 6; + pixel_y = 8 }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"mAz" = ( -/obj/structure/closet/emcloset, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - dir = 5; - icon_state = "whitegreen" + dir = 10; + icon_state = "sterile_white" }, /area/fiorina/station/medbay) -"mAA" = ( -/obj/item/storage/briefcase/inflatable, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"mAB" = ( -/obj/structure/filingcabinet{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/structure/filingcabinet{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/effect/landmark/objective_landmark/medium, +"mAN" = ( +/obj/item/toy/crayon/mime, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"mAE" = ( +/area/fiorina/station/power_ring) +"mAS" = ( /obj/structure/surface/table/reinforced/prison, -/obj/structure/reagent_dispensers/water_cooler/stacks{ - pixel_y = 11 - }, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/research_cells) -"mAG" = ( -/obj/structure/machinery/shower{ - pixel_y = 13 +/area/fiorina/tumor/ice_lab) +"mBG" = ( +/obj/structure/bed/chair/comfy, +/turf/open/floor/prison{ + icon_state = "yellowfull" }, -/obj/item/tool/soap/nanotrasen, +/area/fiorina/station/disco) +"mBJ" = ( +/obj/item/ammo_box/magazine/misc/flares/empty, /turf/open/floor/prison{ dir = 10; - icon_state = "kitchen" + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/civres) -"mBm" = ( -/obj/item/storage/briefcase, +/area/fiorina/tumor/ice_lab) +"mBZ" = ( +/obj/structure/machinery/disposal, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/station/transit_hub) -"mBy" = ( -/obj/structure/bed/chair{ - dir = 4; - pixel_y = 4 + icon_state = "floor_plate" }, +/area/fiorina/station/security/wardens) +"mCe" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "darkbrown2" - }, -/area/fiorina/maintenance) -"mBV" = ( -/obj/structure/platform_decoration{ - dir = 8 + dir = 1; + icon_state = "cell_stripe" }, +/area/fiorina/station/lowsec) +"mCp" = ( /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 1; + icon_state = "blue" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/chapel) "mCA" = ( /obj/structure/prop/resin_prop, /turf/open/floor/plating/prison, @@ -20447,179 +20804,202 @@ /obj/structure/extinguisher_cabinet, /turf/closed/wall/prison, /area/fiorina/station/lowsec) -"mCG" = ( -/obj/structure/machinery/processor, -/turf/open/floor/prison{ - dir = 8; - icon_state = "blue_plate" +"mCH" = ( +/obj/item/newspaper, +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) +"mCR" = ( +/obj/structure/platform, +/obj/structure/bed/chair{ + dir = 1; + layer = 2.7 }, -/area/fiorina/station/botany) -"mCT" = ( -/obj/structure/surface/rack, -/obj/item/handcuffs/zip, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "whitegreen" }, -/area/fiorina/station/lowsec) -"mDi" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +/area/fiorina/station/medbay) +"mDn" = ( +/turf/open/floor/prison{ + dir = 5; + icon_state = "green" }, -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 +/area/fiorina/tumor/servers) +"mDq" = ( +/obj/structure/closet/crate/miningcar{ + name = "\improper materials storage bin" }, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"mDs" = ( -/obj/item/stack/sandbags_empty/half, +/obj/item/reagent_container/food/snacks/meat, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" + dir = 4; + icon_state = "greenblue" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/botany) "mDz" = ( /obj/structure/bed/chair/wood/normal{ dir = 8 }, /turf/open/floor/carpet, /area/fiorina/station/civres_blue) -"mDV" = ( +"mDO" = ( +/obj/structure/bed{ + icon_state = "abed" + }, /turf/open/floor/prison{ - icon_state = "darkyellowcorners2" + dir = 6; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) +"mDS" = ( +/obj/structure/bed/chair/comfy{ + dir = 1 }, -/area/fiorina/station/telecomm/lz1_cargo) -"mEb" = ( -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/prison, -/area/fiorina/station/security) -"mEc" = ( /turf/open/floor/prison{ - icon_state = "darkbrowncorners2" + icon_state = "redfull" + }, +/area/fiorina/station/security) +"mEn" = ( +/obj/structure/machinery/photocopier{ + pixel_y = 4 }, -/area/fiorina/station/park) -"mEv" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/snacks/mre_pack/meal5, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "redfull" }, -/area/fiorina/station/research_cells) -"mEL" = ( -/obj/item/prop/helmetgarb/spacejam_tickets{ - desc = "A ticket to Souto Man's raffle!"; - name = "\improper Souto Raffle Ticket" +/area/fiorina/station/security) +"mEJ" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 }, +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/secure_data, /turf/open/floor/prison, -/area/fiorina/station/chapel) +/area/fiorina/station/security) "mEO" = ( /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"mFf" = ( -/obj/structure/surface/table/reinforced/prison, +"mEU" = ( /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 6; + icon_state = "yellow" }, -/area/fiorina/oob) -"mFh" = ( +/area/fiorina/station/disco) +"mEY" = ( +/obj/item/device/flashlight/on, /turf/open/floor/prison{ - dir = 9; - icon_state = "whitegreen" + dir = 1; + icon_state = "darkbrowncorners2" }, -/area/fiorina/station/medbay) -"mFm" = ( -/obj/item/tool/mop, +/area/fiorina/tumor/aux_engi) +"mFS" = ( +/obj/structure/cargo_container/grant/left, /turf/open/floor/prison{ icon_state = "floor_plate" }, +/area/fiorina/station/power_ring) +"mGf" = ( +/obj/effect/landmark/monkey_spawn, +/turf/open/floor/prison{ + dir = 4; + icon_state = "blue" + }, /area/fiorina/station/civres_blue) -"mFz" = ( -/obj/effect/decal/cleanable/blood/splatter{ - icon_state = "gibmid1" +"mGr" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"mGN" = ( +/obj/structure/platform{ + dir = 8 }, +/obj/item/prop/almayer/handheld1, +/obj/structure/surface/rack, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"mGX" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"mGe" = ( -/obj/structure/bed/chair{ +/area/fiorina/tumor/aux_engi) +"mGZ" = ( +/obj/item/trash/eat, +/obj/structure/machinery/light/double/blue{ dir = 1; - pixel_y = 3 - }, -/obj/effect/decal/cleanable/blood, -/obj/item/reagent_container/food/drinks/cans/beer{ - pixel_x = -11; - pixel_y = -6 + pixel_y = 21 }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/obj/structure/machinery/blackbox_recorder, +/obj/item/prop/almayer/flight_recorder/colony{ + pixel_x = -6; + pixel_y = 10 }, -/area/fiorina/station/lowsec) -"mGx" = ( -/obj/item/reagent_container/food/drinks/sillycup, /turf/open/floor/prison, /area/fiorina/station/power_ring) "mHC" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/maintenance) -"mHN" = ( -/obj/item/stack/tile/plasteel, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/ice_lab) "mHR" = ( /obj/structure/sign/prop3{ desc = "Enlist in the Penal Battalions today! The USCM 3rd Fleet features a subset of UA sanctioned penal battalions, drawing from inmate popualtions across the colonies. Mostly New Argentina though." }, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/tumor/aux_engi) -"mHZ" = ( -/obj/structure/toilet{ - dir = 8; - pixel_y = 8 - }, -/obj/effect/landmark/objective_landmark/science, +"mHY" = ( +/obj/item/frame/rack, /turf/open/floor/prison{ - dir = 5; - icon_state = "whitepurple" + icon_state = "redfull" }, -/area/fiorina/station/research_cells) -"mIk" = ( -/obj/structure/bed/chair{ - dir = 4 +/area/fiorina/station/security) +"mIf" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/obj/structure/platform, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/servers) +"mIr" = ( +/obj/structure/bed{ + icon_state = "abed" }, +/obj/item/reagent_container/food/snacks/wrapped/barcardine, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/medbay) +/area/fiorina/station/research_cells) "mIu" = ( /obj/effect/spawner/random/sentry/midchance, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"mIA" = ( -/obj/structure/bed{ - icon_state = "abed" +"mIQ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/microwave{ + pixel_y = 6 }, -/obj/item/bedsheet/green, /turf/open/floor/prison{ dir = 10; - icon_state = "yellow" + icon_state = "kitchen" }, -/area/fiorina/station/lowsec) -"mIE" = ( +/area/fiorina/station/civres_blue) +"mJc" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) -"mJe" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/prison, -/area/fiorina/station/civres_blue) +/area/fiorina/tumor/aux_engi) +"mJg" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/item/storage/pill_bottle/inaprovaline/skillless, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) "mJk" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/drinks/cans/aspen{ @@ -20639,39 +21019,39 @@ /obj/item/trash/kepler, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"mJy" = ( +"mJH" = ( +/obj/item/device/flashlight/flare/on, /turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreen" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/medbay) -"mJz" = ( -/obj/structure/closet/emcloset, +/area/fiorina/tumor/ice_lab) +"mKd" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + dir = 4; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) +"mKo" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkbrown2" }, /area/fiorina/maintenance) -"mJM" = ( -/obj/item/trash/uscm_mre, +"mKp" = ( +/obj/item/prop/helmetgarb/riot_shield, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"mKt" = ( -/obj/item/storage/toolbox, -/turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"mKy" = ( -/obj/structure/bed/chair, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"mKG" = ( +/area/fiorina/station/security) +"mKx" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "floor_marked" + icon_state = "blue_plate" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/botany) "mKS" = ( /obj/structure/platform/kutjevo/smooth{ dir = 1 @@ -20686,29 +21066,20 @@ }, /turf/open/space, /area/fiorina/oob) -"mLe" = ( -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 +"mLm" = ( +/obj/structure/platform_decoration{ + dir = 4 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/research_cells) -"mLB" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" + icon_state = "floor_plate" }, +/area/fiorina/station/botany) +"mLL" = ( +/obj/item/tool/mop, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"mLE" = ( -/obj/structure/closet, -/obj/item/reagent_container/spray/cleaner, -/obj/item/stack/sheet/plasteel/small_stack, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) +/area/fiorina/station/park) "mLP" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/smartfridge/drinks{ @@ -20716,55 +21087,38 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"mLS" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/platform_decoration{ - dir = 9 - }, +"mLY" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/botany) -"mMb" = ( -/obj/structure/machinery/photocopier{ - pixel_y = 4 + dir = 4; + icon_state = "darkbrown2" }, +/area/fiorina/tumor/aux_engi) +"mMa" = ( +/obj/structure/closet/emcloset, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 5; + icon_state = "whitegreen" }, /area/fiorina/station/medbay) -"mMf" = ( -/obj/structure/window/reinforced{ - dir = 8; - health = 80 - }, -/obj/structure/reagent_dispensers/water_cooler, +"mMh" = ( +/obj/effect/spawner/random/sentry/midchance, /turf/open/floor/prison{ dir = 10; icon_state = "sterile_white" }, /area/fiorina/station/medbay) -"mMo" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, +"mMi" = ( +/obj/item/tool/weldpack, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"mMq" = ( -/obj/item/trash/chips, +/area/fiorina/station/civres_blue) +"mMk" = ( +/obj/structure/prop/resin_prop, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/research_cells) +/area/fiorina/tumor/aux_engi) "mMH" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 6 @@ -20777,98 +21131,108 @@ name = "astroturf" }, /area/fiorina/station/civres_blue) -"mNg" = ( +"mMP" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/spacecash/c10, -/obj/item/spacecash/c10{ - pixel_x = 5; - pixel_y = 10 - }, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 - }, +/obj/item/trash/plate, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/lowsec) +/area/fiorina/tumor/ice_lab) +"mNc" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/prison, +/area/fiorina/station/security) "mNh" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/prison, /area/fiorina/station/chapel) -"mNj" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/paper_bin, +"mNB" = ( +/obj/effect/decal/hefa_cult_decals/d32, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"mNN" = ( +/obj/structure/largecrate/random/barrel/blue, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) -"mNn" = ( -/obj/structure/machinery/door/airlock/almayer/marine, +/area/fiorina/station/telecomm/lz1_cargo) +"mOf" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/ashtray/plastic, /turf/open/floor/prison{ - icon_state = "yellowfull" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/lowsec) -"mNC" = ( -/obj/structure/barricade/wooden, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/station/medbay) +"mOm" = ( +/obj/structure/platform{ + dir = 1 }, -/area/fiorina/station/power_ring) -"mNJ" = ( -/obj/structure/barricade/sandbags{ - dir = 8; - icon_state = "sandbag_0"; - pixel_y = 2 +/obj/structure/platform{ + dir = 4 }, -/obj/structure/barricade/sandbags{ - icon_state = "sandbag_0"; - pixel_y = -14 +/obj/structure/platform_decoration{ + dir = 9 }, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"mOn" = ( -/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "greenblue" + icon_state = "floor_plate" }, -/area/fiorina/station/botany) -"mOr" = ( -/obj/item/poster, +/area/fiorina/station/transit_hub) +"mOE" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/obj/structure/platform, /turf/open/floor/prison{ - dir = 9; - icon_state = "whitepurple" + dir = 10; + icon_state = "bright_clean_marked" }, -/area/fiorina/station/research_cells) -"mOC" = ( -/obj/structure/closet/crate/medical, -/obj/effect/spawner/random/toolbox, +/area/fiorina/station/power_ring) +"mOI" = ( /obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"mOF" = ( +/area/fiorina/station/lowsec) +"mOU" = ( +/obj/structure/barricade/handrail/type_b{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) +"mPe" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ dir = 8; - icon_state = "bluecorner" + icon_state = "cell_stripe" }, -/area/fiorina/station/civres_blue) -"mOW" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 1 +/area/fiorina/station/medbay) +"mPf" = ( +/obj/item/ammo_magazine/smg/mp5, +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkyellow2" }, +/area/fiorina/station/telecomm/lz1_cargo) +"mPg" = ( +/obj/item/trash/boonie, /turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"mPA" = ( -/obj/structure/barricade/wooden, +/area/fiorina/station/power_ring) +"mPn" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 + }, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/power_ring) "mPW" = ( /obj/structure/prop/structure_lattice{ dir = 4; @@ -20876,29 +21240,28 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz1_cargo) -"mQe" = ( -/obj/effect/decal/cleanable/blood, +"mPX" = ( /turf/open/floor/prison{ - icon_state = "greenblue" + dir = 5; + icon_state = "darkbrown2" }, -/area/fiorina/station/botany) -"mQn" = ( -/obj/structure/platform_decoration{ - dir = 1 +/area/fiorina/station/park) +"mQy" = ( +/obj/structure/closet/secure_closet/guncabinet{ + req_access = null }, +/obj/item/clothing/under/marine/ua_riot, +/obj/item/clothing/suit/storage/marine/veteran/ua_riot, +/obj/item/prop/helmetgarb/riot_shield, /turf/open/floor/prison{ - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) -"mQD" = ( -/obj/structure/barricade/sandbags{ - dir = 8; - icon_state = "sandbag_0"; - pixel_y = 2 + icon_state = "redfull" }, -/obj/item/storage/toolbox/syndicate, +/area/fiorina/station/security) +"mQB" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/cameras, /turf/open/floor/prison, -/area/fiorina/station/disco) +/area/fiorina/lz/near_lzI) "mQG" = ( /obj/structure/barricade/handrail/type_b{ dir = 8; @@ -20908,90 +21271,60 @@ name = "astroturf" }, /area/fiorina/station/civres_blue) -"mQZ" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/disco) -"mRk" = ( -/obj/item/tool/warning_cone{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/tool/warning_cone{ - pixel_x = -4; - pixel_y = 5 - }, -/obj/item/tool/warning_cone{ - pixel_x = -4; - pixel_y = 8 - }, -/obj/structure/surface/rack, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/maintenance) -"mRz" = ( -/obj/item/ammo_casing{ - dir = 6; - icon_state = "casing_10_1" - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"mRT" = ( -/obj/structure/platform{ +"mQV" = ( +/obj/item/tool/stamp, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) +"mRA" = ( +/obj/structure/bed/chair/office/dark{ dir = 1 }, -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/platform_decoration{ - dir = 9 - }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/transit_hub) -"mRU" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/book/manual/surgery, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/station/medbay) +"mRM" = ( +/obj/structure/monorail{ + dir = 5; + name = "launch track" }, +/turf/open/space, +/area/fiorina/oob) +"mRS" = ( /turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/medbay) -"mSM" = ( -/obj/item/stack/tile/plasteel{ - pixel_x = 3; - pixel_y = 4 + dir = 5; + icon_state = "darkpurple2" }, +/area/fiorina/station/central_ring) +"mSk" = ( +/obj/structure/surface/rack, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"mSo" = ( +/obj/structure/bed/sofa/south/grey/right, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/station/research_cells) -"mSN" = ( -/obj/effect/decal/cleanable/blood/oil, +/area/fiorina/station/transit_hub) +"mSp" = ( +/obj/item/clothing/under/marine/ua_riot, +/obj/item/weapon/gun/rifle/m16, /turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" + icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) -"mSY" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/atmos_alert, +/area/fiorina/station/security) +"mSP" = ( +/obj/effect/landmark/railgun_camera_pos, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"mSZ" = ( +/obj/effect/alien/weeds/node, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "darkbrown2" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/tumor/aux_engi) "mTa" = ( /obj/structure/ice/thin/indestructible{ dir = 8; @@ -21004,130 +21337,128 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/station/research_cells) -"mTq" = ( -/obj/structure/bed/chair{ - dir = 4; - layer = 2.8 - }, -/obj/structure/barricade/handrail/type_b, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/flight_deck) -"mTy" = ( -/obj/structure/machinery/door/poddoor/almayer/locked{ - indestructible = 1; - name = "launch bay door" - }, +"mTl" = ( +/obj/item/storage/box/gloves, /turf/open/floor/prison{ - dir = 8; - icon_state = "cell_stripe" - }, -/area/fiorina/oob) -"mTJ" = ( -/obj/item/stool, -/obj/item/trash/cigbutt{ - pixel_y = 8 + dir = 9; + icon_state = "greenfull" }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/station/transit_hub) +"mTs" = ( +/obj/structure/barricade/wooden{ + dir = 4 }, -/area/fiorina/station/power_ring) +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) "mTM" = ( /obj/item/tool/warning_cone, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"mTS" = ( -/obj/effect/landmark/survivor_spawner, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/fiorina/station/research_cells) -"mTX" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "blue" - }, -/area/fiorina/station/chapel) -"mUk" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 - }, -/turf/open/floor/prison{ - dir = 5; - icon_state = "whitegreen" +"mUd" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/area/fiorina/station/medbay) -"mUr" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/fancy/crayons, +/obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "sterile_white" }, -/area/fiorina/station/medbay) +/area/fiorina/station/research_cells) "mUA" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"mUV" = ( -/obj/structure/closet/basketball, -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/research_cells) -"mVg" = ( +"mUK" = ( /obj/structure/window{ - dir = 8 + dir = 4 }, /obj/item/circuitboard/machine/rdserver, /turf/open/floor/prison{ icon_state = "darkpurplefull2" }, /area/fiorina/tumor/servers) -"mWg" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_marked" +"mVd" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/sign/poster{ + desc = "Hubba hubba."; + icon_state = "poster3"; + name = "magazine"; + pixel_x = 6; + pixel_y = 8 }, -/area/fiorina/lz/near_lzII) -"mWi" = ( -/obj/structure/closet/secure_closet/engineering_materials, -/obj/effect/spawner/random/gun/smg, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" +/obj/structure/sign/poster{ + desc = "Hubba hubba."; + icon_state = "poster17"; + name = "magazine" }, -/area/fiorina/tumor/aux_engi) -"mWx" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 +/obj/structure/sign/poster{ + desc = "The M41A is on the cover."; + icon_state = "poster15"; + name = "magazine"; + pixel_x = -5; + pixel_y = 5 }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"mWF" = ( -/obj/structure/bed/chair{ +/obj/structure/machinery/light/double/blue{ dir = 1; - layer = 2.7 - }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"mWV" = ( -/obj/effect/decal/cleanable/blood{ - icon_state = "xtracks" + pixel_y = 21 }, /turf/open/floor/prison{ - dir = 1; - icon_state = "green" + icon_state = "floor_plate" }, -/area/fiorina/station/chapel) +/area/fiorina/station/security/wardens) +"mVk" = ( +/obj/item/stack/sheet/wood, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"mVn" = ( +/obj/structure/largecrate/random, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/fiorina/station/telecomm/lz1_tram) +"mVO" = ( +/obj/item/tool/extinguisher, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"mVY" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "damaged2" + }, +/area/fiorina/station/security) +"mWs" = ( +/obj/structure/prop/souto_land/streamer{ + dir = 6 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) +"mWO" = ( +/obj/effect/spawner/random/tool, +/obj/structure/surface/rack, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) +"mWR" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/communications/simple, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) +"mWS" = ( +/obj/item/stack/rods, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/security) "mWX" = ( /obj/structure/platform{ dir = 8 @@ -21144,152 +21475,75 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"mXe" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 4 - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/botany) "mXk" = ( /obj/structure/cable/heavyduty{ icon_state = "1-4" }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"mXq" = ( -/obj/structure/machinery/shower{ - pixel_y = 13 - }, -/obj/structure/machinery/shower{ - dir = 8 - }, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/fiorina/station/lowsec) -"mXI" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"mXT" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) -"mXY" = ( -/obj/structure/bed/chair/comfy{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 9; - icon_state = "blue" +"mXS" = ( +/obj/structure/closet/secure_closet/guncabinet{ + req_access = null }, -/area/fiorina/station/civres_blue) -"mYo" = ( -/obj/structure/machinery/photocopier, -/obj/structure/machinery/light/double/blue, +/obj/item/weapon/gun/launcher/grenade/m81, +/obj/item/storage/pill_bottle/kelotane, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"mYp" = ( -/obj/structure/bed{ - icon_state = "abed" + icon_state = "redfull" }, -/obj/item/storage/bible/hefa, +/area/fiorina/station/security) +"mYl" = ( +/obj/item/ammo_magazine/rifle/mar40, /turf/open/floor/prison{ - dir = 6; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"mYu" = ( -/obj/structure/window/reinforced{ dir = 8; - health = 80 - }, -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/med_data/laptop{ - dir = 4 + icon_state = "yellow" }, +/area/fiorina/station/lowsec) +"mYy" = ( +/obj/effect/landmark/monkey_spawn, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"mYN" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, -/obj/effect/decal/medical_decals{ - icon_state = "triagedecaldir" + dir = 1; + icon_state = "darkbrown2" }, +/area/fiorina/tumor/aux_engi) +"mYG" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"mYZ" = ( -/obj/structure/largecrate/random/case, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) +/area/fiorina/tumor/ship) "mZo" = ( /obj/item/tool/shovel, /turf/open/auto_turf/sand/layer1, /area/fiorina/tumor/civres) -"mZw" = ( -/obj/structure/prop/almayer/computers/sensor_computer1{ - name = "computer" +"mZy" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, +/obj/effect/spawner/random/gun/smg/lowchance, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) +"mZH" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" }, -/area/fiorina/station/security) -"mZG" = ( -/obj/item/paper/crumpled/bloody, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) -"mZV" = ( -/obj/structure/monorail{ - name = "launch track" - }, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 + icon_state = "sterile_white" }, -/turf/open/floor/plating/prison, -/area/fiorina/station/transit_hub) +/area/fiorina/station/central_ring) "naf" = ( /turf/closed/shuttle/ert, /area/fiorina/oob) -"naj" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "darkpurple2" - }, -/area/fiorina/tumor/servers) -"naN" = ( -/obj/effect/decal/cleanable/blood, +"naI" = ( +/obj/item/clothing/under/color/orange, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "yellow" }, -/area/fiorina/station/disco) +/area/fiorina/station/lowsec) "naW" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/tumor/civres) @@ -21297,84 +21551,87 @@ /obj/effect/decal/cleanable/blood, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz2_maint) -"nbo" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/prison, -/area/fiorina/station/chapel) -"nbv" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "blue" - }, -/area/fiorina/station/power_ring) -"nbU" = ( -/obj/structure/bed/chair{ - dir = 4 - }, +"nbP" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - icon_state = "darkbrown2" + dir = 1; + icon_state = "yellow" }, -/area/fiorina/station/park) -"ncn" = ( +/area/fiorina/station/lowsec) +"ncb" = ( /turf/open/floor/prison{ - dir = 9; - icon_state = "darkbrown2" + dir = 6; + icon_state = "darkyellow2" }, -/area/fiorina/tumor/aux_engi) -"ncP" = ( +/area/fiorina/lz/near_lzI) +"ncj" = ( +/obj/item/device/flashlight/lamp/tripod, /obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"nck" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/condiment/saltshaker{ + pixel_x = -5; + pixel_y = -6 + }, +/obj/item/reagent_container/food/condiment/peppermill{ + pixel_x = -5; + pixel_y = -11 + }, +/obj/item/reagent_container/food/snacks/cherrypie{ + pixel_y = 7 + }, +/turf/open/floor/prison{ dir = 4; - pixel_x = 10; - pixel_y = -1 + icon_state = "darkyellowfull2" }, +/area/fiorina/station/flight_deck) +"ncs" = ( +/obj/structure/machinery/vending/sovietsoda, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "blue_plate" }, -/area/fiorina/station/chapel) -"ncQ" = ( -/obj/structure/platform_decoration{ - dir = 4 +/area/fiorina/station/botany) +"ncF" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/prison{ + dir = 8; + icon_state = "whitegreen" }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"ndh" = ( -/obj/effect/decal/hefa_cult_decals/d32{ - icon_state = "4" +/area/fiorina/tumor/ice_lab) +"ncY" = ( +/obj/structure/bed/sofa/south/grey/right, +/obj/item/storage/briefcase{ + pixel_y = -2 }, -/obj/item/weapon/gun/shotgun/pump{ - starting_attachment_types = list(/obj/item/attachable/stock/shotgun) +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) +/area/fiorina/station/security) "ndl" = ( /obj/item/storage/box/cups, /obj/structure/surface/table/reinforced/prison, /obj/effect/spawner/random/pills/lowchance, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"nds" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/drinks/coffee{ - pixel_x = 11; - pixel_y = 14 - }, -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 +"ndD" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/structure/largecrate/random/mini/chest/c, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"ndt" = ( -/obj/structure/bed/sofa/vert/grey/top, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"ndC" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/faxmachine, +/area/fiorina/lz/near_lzII) +"ndQ" = ( +/obj/structure/machinery/recharge_station, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 5; + icon_state = "whitepurple" }, -/area/fiorina/station/security) +/area/fiorina/station/research_cells) "ndZ" = ( /obj/structure/machinery/constructable_frame{ icon_state = "box_1" @@ -21396,49 +21653,65 @@ name = "astroturf" }, /area/fiorina/station/park) -"nee" = ( -/obj/structure/bed/chair/office/dark{ - dir = 1 +"nez" = ( +/obj/item/ammo_casing{ + dir = 6; + icon_state = "casing_5" }, /turf/open/floor/prison{ dir = 1; - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) -"nej" = ( -/obj/item/storage/fancy/cigarettes/lucky_strikes, -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrown2" }, /area/fiorina/station/park) -"nes" = ( +"neE" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/prison, +/area/fiorina/station/security) +"neT" = ( +/obj/item/tool/wet_sign, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"neY" = ( /turf/open/floor/prison{ - dir = 6; - icon_state = "darkyellow2" + icon_state = "cell_stripe" }, -/area/fiorina/station/telecomm/lz1_tram) -"neD" = ( -/obj/effect/landmark/xeno_spawn, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreen" +/area/fiorina/station/central_ring) +"nfe" = ( +/obj/effect/decal/cleanable/blood/writing{ + icon_state = "u_psycopath_l"; + pixel_y = 4 + }, +/obj/effect/decal/cleanable/blood/writing{ + icon_state = "u_ketchup_l"; + pixel_x = 8; + pixel_y = 4 + }, +/obj/effect/decal/cleanable/blood/writing{ + icon_state = "u_guilty_l"; + pixel_x = -12; + pixel_y = 2 }, -/area/fiorina/tumor/ice_lab) -"neH" = ( -/obj/item/stack/sheet/metal, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "kitchen" + }, +/area/fiorina/station/power_ring) +"nfh" = ( +/obj/structure/machinery/landinglight/ds2/delayone{ + dir = 8 }, -/area/fiorina/station/research_cells) -"neX" = ( -/obj/structure/platform, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) +/area/fiorina/lz/near_lzII) +"nfu" = ( +/obj/effect/decal/medical_decals{ + icon_state = "cryomid" + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) "nfA" = ( /obj/structure/platform, /obj/item/stack/sheet/metal, @@ -21450,71 +21723,36 @@ }, /turf/open/floor/plating/prison, /area/fiorina/oob) -"nfI" = ( -/obj/structure/barricade/wooden{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) +"nfZ" = ( +/obj/structure/closet/firecloset, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison, +/area/fiorina/station/medbay) "nga" = ( /turf/closed/wall/strata_ice/jungle{ desc = "It is made of Fiberbush(tm). It contains asbestos."; name = "synthetic vegetation" }, /area/fiorina/station/civres_blue) -"ngd" = ( -/obj/item/trash/hotdog, +"ngg" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - dir = 8; - icon_state = "blue" + icon_state = "bluefull" }, /area/fiorina/station/power_ring) -"ngk" = ( -/obj/effect/landmark/monkey_spawn, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/fiorina/tumor/civres) -"ngq" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"ngr" = ( -/obj/structure/platform_decoration, -/obj/item/reagent_container/food/drinks/sillycup, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/flight_deck) -"ngG" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/obj/effect/landmark/objective_landmark/close, +"ngn" = ( +/obj/structure/machinery/deployable/barrier, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/tumor/aux_engi) -"nhd" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 4 + icon_state = "redfull" }, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_tram) -"nhi" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/tool, -/obj/effect/landmark/objective_landmark/medium, +/area/fiorina/station/security) +"ngF" = ( +/obj/item/device/flashlight/lamp/tripod, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + icon_state = "whitepurple" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/research_cells) "nho" = ( /obj/structure/platform{ dir = 1 @@ -21525,23 +21763,25 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"nhz" = ( +"nhM" = ( +/obj/structure/barricade/handrail/type_b{ + layer = 3.5 + }, /turf/open/floor/prison{ - icon_state = "whitepurplecorner" + dir = 1; + icon_state = "blue" + }, +/area/fiorina/station/civres_blue) +"nhX" = ( +/obj/structure/machinery/gibber, +/obj/effect/decal/cleanable/blood{ + pixel_x = -6; + pixel_y = 4 }, -/area/fiorina/station/research_cells) -"nhF" = ( -/obj/effect/landmark/corpsespawner/ua_riot, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "blue_plate" }, -/area/fiorina/station/medbay) -"nhR" = ( -/obj/structure/closet/bodybag, -/obj/effect/decal/cleanable/blood/gibs/limb, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) +/area/fiorina/station/botany) "nhY" = ( /obj/structure/extinguisher_cabinet, /turf/closed/wall/prison, @@ -21550,20 +21790,24 @@ /obj/structure/sign/safety/fire_haz, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) +"nie" = ( +/obj/effect/landmark/nightmare{ + insert_tag = "repairpanelslz" + }, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) +"nim" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkyellowcorners2" + }, +/area/fiorina/lz/near_lzI) "nip" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname{ dir = 1 }, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"nis" = ( -/obj/structure/barricade/sandbags{ - icon_state = "sandbag_0"; - layer = 2.97; - pixel_y = -14 - }, -/turf/open/floor/prison, -/area/fiorina/station/disco) "niw" = ( /obj/structure/barricade/handrail{ dir = 8 @@ -21572,25 +21816,37 @@ name = "astroturf" }, /area/fiorina/station/research_cells) -"njq" = ( -/obj/item/tool/weldpack, +"njg" = ( +/obj/effect/spawner/random/gun/rifle/lowchance, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "darkyellow2" }, -/area/fiorina/station/civres_blue) -"njx" = ( -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"njC" = ( -/obj/effect/decal{ - icon = 'icons/obj/items/policetape.dmi'; - icon_state = "engineering_h"; - layer = 2.5; - pixel_y = -11 +/area/fiorina/station/flight_deck) +"njm" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"nju" = ( +/obj/item/gift, +/turf/open/floor/prison{ + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) +"njG" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, /area/fiorina/station/telecomm/lz1_cargo) "njK" = ( @@ -21607,16 +21863,50 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/security) -"njT" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/device/taperecorder{ - pixel_x = 8; - pixel_y = 8 +"njN" = ( +/obj/item/stock_parts/micro_laser/ultra, +/turf/open/floor/prison{ + dir = 10; + icon_state = "darkpurple2" + }, +/area/fiorina/tumor/servers) +"njY" = ( +/obj/structure/inflatable/popped, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 1; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"nkg" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, +/turf/open/floor/prison{ + icon_state = "yellowfull" }, /area/fiorina/station/lowsec) +"nkF" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, +/area/fiorina/station/park) +"nkJ" = ( +/obj/structure/largecrate/supply/medicine/medkits, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) +"nkM" = ( +/obj/item/stack/cable_coil, +/turf/open/floor/prison{ + icon_state = "darkpurple2" + }, +/area/fiorina/tumor/servers) "nlw" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -21633,12 +21923,43 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) -"nmm" = ( -/turf/open/organic/grass{ - name = "astroturf" +"nmh" = ( +/obj/structure/window{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/servers) +"nmi" = ( +/obj/structure/machinery/door/airlock/almayer/marine{ + dir = 1; + icon = 'icons/obj/structures/doors/prepdoor_charlie.dmi' + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/research_cells) +"nmm" = ( +/turf/open/organic/grass{ + name = "astroturf" }, /area/fiorina/station/research_cells) -"nmx" = ( +"nmy" = ( +/obj/structure/machinery/space_heater, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/tumor/ice_lab) +"nmK" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/prison{ + dir = 8; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"nmL" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_21" }, @@ -21647,33 +21968,49 @@ icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"nmQ" = ( -/obj/structure/largecrate/random, -/turf/open/floor/prison, -/area/fiorina/station/research_cells) +"nmM" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) "nmT" = ( /obj/item/toy/crayon/blue, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"nnx" = ( +"nnr" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/disco) +"nny" = ( /obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/emails{ - dir = 8; - pixel_x = -2; - pixel_y = 7 +/obj/item/trash/cigbutt/bcigbutt, +/turf/open/floor/prison{ + icon_state = "bluefull" }, +/area/fiorina/station/power_ring) +"nnC" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/tool, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"nnX" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_ew_full_cap" +/area/fiorina/station/power_ring) +"nnG" = ( +/obj/structure/platform{ + dir = 4 }, -/obj/structure/platform/stair_cut, -/turf/open/floor/plating/prison, -/area/fiorina/station/botany) +/obj/structure/platform, +/obj/structure/platform_decoration{ + dir = 6 + }, +/obj/structure/closet/emcloset, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) "noa" = ( /obj/structure/largecrate/supply/supplies/plasteel, /turf/open/floor/plating/prison, @@ -21684,27 +22021,22 @@ name = "astroturf" }, /area/fiorina/station/park) -"noY" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" +"nor" = ( +/obj/effect/decal/medical_decals{ + dir = 4; + icon_state = "triagedecaldir" }, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"nph" = ( -/obj/item/stool, /turf/open/floor/prison{ - icon_state = "damaged2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/lowsec) -"npp" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" +/area/fiorina/station/medbay) +"noz" = ( +/obj/structure/platform{ + dir = 8 }, -/area/fiorina/station/botany) +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) "npx" = ( /obj/structure/barricade/handrail/type_b{ dir = 4; @@ -21714,47 +22046,6 @@ name = "astroturf" }, /area/fiorina/station/civres_blue) -"npz" = ( -/obj/structure/monorail{ - name = "launch track" - }, -/obj/structure/platform_decoration{ - dir = 1 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_tram) -"npN" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, -/obj/effect/spawner/random/gun/pistol, -/turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"npV" = ( -/obj/structure/machinery/vending/snack, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) -"nql" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/toolbox, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"nqs" = ( -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" - }, -/area/fiorina/tumor/aux_engi) "nqL" = ( /obj/structure/surface/rack, /obj/item/reagent_container/spray/cleaner, @@ -21766,106 +22057,110 @@ "nqN" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/security) -"nqV" = ( -/obj/item/device/cassette_tape/nam, +"nrd" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform, +/obj/structure/platform_decoration{ + dir = 10 + }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/station/botany) "nre" = ( /obj/item/stack/rods, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"nrq" = ( -/obj/effect/landmark/corpsespawner/ua_riot, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"nrI" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/tool/plantspray/pests, +"nrn" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "blue_plate" + dir = 5; + icon_state = "darkbrown2" }, -/area/fiorina/station/botany) -"nrL" = ( -/obj/structure/barricade/sandbags{ - icon_state = "sandbag_0"; - pixel_y = -14 +/area/fiorina/maintenance) +"nrU" = ( +/obj/item/tool/pickaxe, +/obj/item/tool/pickaxe{ + pixel_y = 5 }, -/obj/structure/machinery/m56d_hmg, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"nrR" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "green" +/obj/item/tool/pickaxe{ + pixel_y = 10 }, -/area/fiorina/station/transit_hub) -"nrY" = ( +/obj/structure/surface/rack, /turf/open/floor/prison{ - icon_state = "bluecorner" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/chapel) -"nsb" = ( -/obj/structure/bed/chair{ - dir = 4 +/area/fiorina/tumor/ice_lab) +"nsm" = ( +/obj/structure/machinery/cm_vending/sorted/medical/no_access, +/obj/structure/window/reinforced{ + dir = 8; + health = 80 }, /turf/open/floor/prison{ - dir = 9; - icon_state = "whitegreen" + dir = 10; + icon_state = "sterile_white" }, /area/fiorina/station/medbay) -"nsg" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "green" - }, -/area/fiorina/tumor/civres) -"nsn" = ( -/obj/structure/janitorialcart, -/obj/structure/machinery/light/double/blue{ +"nss" = ( +/obj/structure/stairs/perspective{ dir = 1; - pixel_y = 21 + icon_state = "p_stair_sn_full_cap" }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/research_cells) +"nsD" = ( +/obj/structure/prop/structure_lattice{ + dir = 4; + health = 300 + }, +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 }, -/area/fiorina/station/park) -"nsx" = ( -/obj/structure/closet/firecloset/full, -/obj/item/storage/pill_bottle/bicaridine/skillless, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) -"nsC" = ( -/obj/item/stack/sandbags_empty/half, +/area/fiorina/tumor/civres) +"ntc" = ( /turf/open/floor/prison{ - icon_state = "darkyellow2" + dir = 4; + icon_state = "green" }, -/area/fiorina/lz/near_lzI) -"nsH" = ( -/obj/structure/platform, +/area/fiorina/tumor/civres) +"ntf" = ( +/obj/item/implanter/compressed, +/obj/structure/safe, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ - dir = 8; - icon_state = "cell_stripe" + icon_state = "redfull" }, /area/fiorina/station/security) -"ntg" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_27"; - pixel_y = 6 - }, -/turf/open/floor/wood, -/area/fiorina/station/civres_blue) "ntv" = ( /obj/structure/window/framed/prison, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) +"ntw" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, +/area/fiorina/lz/near_lzI) +"ntx" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "yellow" + }, +/area/fiorina/station/disco) +"ntE" = ( +/obj/structure/barricade/handrail/type_b, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/disco) "ntH" = ( /obj/structure/ice/thin/indestructible{ dir = 8; @@ -21878,66 +22173,133 @@ }, /turf/open/ice/noweed, /area/fiorina/tumor/ice_lab) -"nuE" = ( -/obj/structure/inflatable/popped, +"ntM" = ( +/obj/structure/machinery/space_heater, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"ntZ" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"nub" = ( +/obj/structure/prop/structure_lattice{ + dir = 4; + health = 300 + }, +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/transit_hub) -"nvz" = ( -/obj/structure/flora/pottedplant/random, +/area/fiorina/tumor/servers) +"nuo" = ( +/obj/structure/bed/sofa/south/grey/left, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/security/wardens) +"nup" = ( +/obj/structure/barricade/handrail/type_b, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) +"nuN" = ( +/obj/structure/bed/chair/office/light{ + dir = 1 + }, /turf/open/floor/prison{ dir = 10; - icon_state = "kitchen" + icon_state = "sterile_white" }, -/area/fiorina/tumor/civres) -"nvC" = ( -/obj/structure/platform{ +/area/fiorina/station/medbay) +"nuX" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" + }, +/obj/structure/platform, +/turf/open/floor/plating/prison, +/area/fiorina/station/telecomm/lz1_tram) +"nvi" = ( +/obj/structure/barricade/wooden{ dir = 1 }, -/obj/structure/platform{ - dir = 4 +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"nvn" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + dir = 1; + icon_state = "bluecorner" }, +/area/fiorina/station/chapel) +"nvs" = ( /obj/structure/platform_decoration{ - dir = 9 + dir = 8 + }, +/obj/effect/decal/medical_decals{ + icon_state = "triagedecaldir" }, /turf/open/floor/prison{ - dir = 5; - icon_state = "whitegreen" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/medbay) "nvD" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/station/botany) -"nvF" = ( -/obj/structure/machinery/vending/cigarette/colony, +"nvK" = ( +/obj/structure/surface/rack, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison, -/area/fiorina/station/medbay) -"nvO" = ( -/obj/structure/machinery/light/double/blue{ +/area/fiorina/tumor/aux_engi) +"nvX" = ( +/turf/open/floor/prison{ dir = 8; - pixel_x = -10; - pixel_y = -3 + icon_state = "blue" }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"nvZ" = ( -/obj/structure/machinery/vending/coffee, +/area/fiorina/station/power_ring) +"nwv" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 8; + icon_state = "darkbrown2" }, -/area/fiorina/tumor/ice_lab) -"nwh" = ( -/obj/effect/decal/medical_decals{ - icon_state = "docstripingdir" +/area/fiorina/tumor/aux_engi) +"nwS" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" }, -/obj/structure/bed/roller, +/area/fiorina/station/telecomm/lz1_tram) +"nwT" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 1; + icon_state = "green" }, -/area/fiorina/station/medbay) +/area/fiorina/tumor/aux_engi) +"nxc" = ( +/obj/structure/sign/poster{ + icon_state = "poster18"; + pixel_y = 32 + }, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) "nxl" = ( /obj/structure/machinery/light/double/blue{ dir = 8; @@ -21948,61 +22310,66 @@ icon_state = "plate" }, /area/fiorina/station/civres_blue) -"nxH" = ( -/obj/item/trash/boonie, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"nxM" = ( -/obj/structure/barricade/sandbags{ - dir = 8; - icon_state = "sandbag_0"; - pixel_y = 2 +"nxq" = ( +/obj/item/prop/helmetgarb/spacejam_tickets{ + desc = "A ticket to Souto Man's raffle!"; + name = "\improper Souto Raffle Ticket"; + pixel_x = 7; + pixel_y = 6 }, /turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"nyk" = ( -/obj/structure/machinery/power/geothermal, +/area/fiorina/station/chapel) +"nxW" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 + }, +/obj/structure/barricade/wooden{ + dir = 4 + }, /turf/open/floor/prison{ - dir = 1; - icon_state = "bluecorner" + icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"nyl" = ( -/obj/structure/window{ - dir = 1 +/area/fiorina/station/telecomm/lz1_cargo) +"nxY" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 }, +/obj/structure/surface/table/reinforced/prison, +/obj/item/clothing/gloves/latex, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "redfull" }, -/area/fiorina/tumor/servers) -"nyo" = ( +/area/fiorina/station/medbay) +"nyq" = ( /obj/structure/platform, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"nyy" = ( -/obj/structure/machinery/vending/cigarette/colony, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/aux_engi) -"nyD" = ( -/obj/structure/barricade/handrail{ - dir = 8 + icon_state = "whitegreen" }, +/area/fiorina/station/medbay) +"nyC" = ( +/obj/item/stack/rods/plasteel, /turf/open/floor/prison{ - dir = 8; - icon_state = "red" + icon_state = "floorscorched2" }, /area/fiorina/station/security) -"nyQ" = ( -/obj/structure/dropship_equipment/mg_holder, +"nyF" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkredfull2" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/disco) +"nyO" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) "nyS" = ( /obj/structure/platform{ dir = 4 @@ -22013,17 +22380,34 @@ /obj/item/tool/extinguisher/mini, /turf/open/floor/plating/prison, /area/fiorina/station/security) -"nza" = ( -/obj/structure/machinery/deployable/barrier, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison, -/area/fiorina/station/security) -"nzm" = ( -/obj/structure/platform, +"nzf" = ( +/obj/structure/machinery/processor, +/obj/effect/decal/cleanable/blood{ + pixel_y = 20 + }, +/turf/open/floor/prison{ + icon_state = "blue_plate" + }, +/area/fiorina/station/botany) +"nzi" = ( +/obj/structure/barricade/wooden{ + dir = 8 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"nzu" = ( +/obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/security) +/area/fiorina/station/security/wardens) +"nzw" = ( +/obj/item/clothing/head/soft/yellow, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkpurple2" + }, +/area/fiorina/tumor/servers) "nzI" = ( /obj/structure/largecrate/random, /turf/open/floor/wood, @@ -22044,156 +22428,125 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"nAr" = ( +"nAm" = ( /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 4; + icon_state = "yellow" }, -/area/fiorina/station/civres_blue) -"nBp" = ( -/obj/item/weapon/gun/smg/nailgun, -/obj/structure/surface/rack, +/area/fiorina/lz/near_lzII) +"nAs" = ( +/obj/structure/inflatable, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + icon_state = "yellowfull" }, -/area/fiorina/maintenance) -"nBu" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/toolbox, +/area/fiorina/station/lowsec) +"nAK" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/fiorina/station/lowsec) +"nBb" = ( /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 }, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/transit_hub) -"nBB" = ( -/obj/structure/largecrate/random/barrel, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + dir = 1; + icon_state = "yellow" }, -/area/fiorina/lz/near_lzI) -"nBG" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/effect/decal/medical_decals{ - icon_state = "triagedecaldir" +/area/fiorina/station/lowsec) +"nBt" = ( +/obj/effect/decal/hefa_cult_decals/d32{ + icon_state = "4" }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/obj/item/weapon/gun/shotgun/pump{ + starting_attachment_types = list(/obj/item/attachable/stock/shotgun) }, +/turf/open/floor/prison, /area/fiorina/station/medbay) -"nBK" = ( -/obj/structure/platform{ - dir = 1 - }, +"nBw" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/botany) -"nBM" = ( -/obj/structure/closet/secure_closet/security_empty, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/ammo_magazine/shotgun/beanbag, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"nBO" = ( -/obj/effect/spawner/random/powercell, -/turf/open/floor/prison{ - icon_state = "bluefull" + dir = 8; + icon_state = "bluecorner" }, /area/fiorina/station/power_ring) -"nBR" = ( -/obj/structure/machinery/landinglight/ds1/delaytwo{ - dir = 1 +"nCh" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 }, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"nCm" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + dir = 8; + icon_state = "darkyellowcorners2" }, /area/fiorina/lz/near_lzI) -"nBV" = ( -/turf/open/floor/prison{ - icon_state = "darkpurple2" +"nCt" = ( +/obj/effect/decal/hefa_cult_decals/d32{ + icon_state = "2" }, -/area/fiorina/tumor/servers) -"nCa" = ( -/obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"nCl" = ( -/obj/structure/machinery/vending/cigarette/colony, +/area/fiorina/station/medbay) +"nCH" = ( +/obj/item/stack/rods, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/station/research_cells) -"nCu" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) -"nCw" = ( -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 - }, -/obj/structure/barricade/wooden{ - dir = 8 + dir = 5; + icon_state = "yellow" }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/station/disco) +"nCV" = ( +/obj/item/ammo_casing{ + icon_state = "casing_7_1" }, -/area/fiorina/station/telecomm/lz1_cargo) -"nCC" = ( -/obj/item/trash/candy, /turf/open/floor/prison{ dir = 10; - icon_state = "floor_plate" + icon_state = "sterile_white" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/medbay) "nCX" = ( /turf/open/organic/grass{ name = "astroturf" }, /area/fiorina/station/park) -"nDJ" = ( -/obj/structure/bed/chair/office/dark{ - dir = 4 - }, +"nDq" = ( +/obj/structure/bed/sofa/south/grey/left, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) -"nDT" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/handcuffs, -/turf/open/floor/prison, /area/fiorina/station/security) -"nDW" = ( -/obj/structure/machinery/space_heater, -/obj/structure/platform{ - dir = 8 +"nDr" = ( +/obj/structure/machinery/door/airlock/almayer/maint/autoname{ + name = "\improper Null Hatch REPLACE ME"; + req_access = null; + req_one_access = null }, +/turf/open/floor/plating/prison, +/area/fiorina/station/medbay) +"nDI" = ( +/obj/item/stack/tile/plasteel, /turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" + icon_state = "floor_plate" }, /area/fiorina/tumor/ice_lab) -"nEs" = ( +"nEh" = ( +/obj/item/device/flashlight, /turf/open/floor/prison{ - icon_state = "greencorner" + dir = 8; + icon_state = "blue" }, -/area/fiorina/tumor/civres) -"nEy" = ( -/obj/item/explosive/grenade/high_explosive/frag, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/station/civres_blue) +"nEB" = ( +/obj/item/device/flashlight, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/station/medbay) +"nEI" = ( +/obj/structure/machinery/deployable/barrier, /turf/open/floor/prison, /area/fiorina/station/security) "nEN" = ( @@ -22203,78 +22556,89 @@ name = "astroturf" }, /area/fiorina/station/research_cells) -"nFB" = ( +"nEP" = ( +/obj/structure/closet, +/obj/item/reagent_container/spray/cleaner, +/obj/item/stack/sheet/plasteel/small_stack, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"nEW" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/gift, -/turf/open/floor/wood, -/area/fiorina/station/park) -"nFI" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 +/obj/structure/machinery/computer/communications{ + dir = 1 }, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/medbay) -"nGk" = ( -/obj/structure/machinery/landinglight/ds1/delaytwo{ - dir = 4 + dir = 10; + icon_state = "sterile_white" }, +/area/fiorina/tumor/ice_lab) +"nFb" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/fancy/cigarettes/emeraldgreen, +/obj/item/tool/lighter, /turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) +"nFc" = ( +/obj/item/ammo_casing{ + icon_state = "cartridge_1" + }, +/obj/effect/landmark/survivor_spawner, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"nFB" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/gift, +/turf/open/floor/wood, +/area/fiorina/station/park) +"nFJ" = ( +/obj/structure/stairs/perspective{ dir = 4; - icon_state = "darkyellowfull2" + icon_state = "p_stair_full" }, +/turf/open/floor/prison, /area/fiorina/lz/near_lzI) -"nGq" = ( -/obj/structure/machinery/portable_atmospherics/powered/scrubber, +"nGp" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, /turf/open/floor/prison, -/area/fiorina/station/medbay) +/area/fiorina/station/disco) "nGy" = ( /obj/item/newspaper, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"nGz" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/park) -"nGI" = ( +"nGB" = ( /obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/station/park) -"nGW" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_sn_full_cap" + dir = 6; + icon_state = "yellow" }, -/obj/structure/platform_decoration{ - dir = 8 +/area/fiorina/station/disco) +"nGO" = ( +/obj/structure/largecrate/random/barrel/yellow, +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 }, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/ice_lab) -"nGX" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/communications{ - dir = 8; - icon_state = "commb" +/turf/open/floor/prison{ + dir = 10; + icon_state = "yellow" }, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"nHb" = ( +/area/fiorina/station/disco) +"nGV" = ( /obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 5; + icon_state = "whitepurple" }, -/area/fiorina/station/chapel) +/area/fiorina/station/research_cells) +"nGZ" = ( +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) "nHm" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/storage/fancy/cigar, @@ -22283,29 +22647,23 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"nHG" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/prison{ - dir = 1; - icon_state = "blue" - }, -/area/fiorina/station/chapel) -"nHH" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 - }, -/turf/open/floor/prison{ - dir = 9; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) "nHZ" = ( /turf/closed/shuttle/ert{ icon_state = "wy_rightengine" }, /area/fiorina/station/medbay) +"nIb" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/device/flashlight/lamp/candelabra{ + layer = 3.2; + pixel_x = 1; + pixel_y = 13 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/fiorina/station/transit_hub) "nIc" = ( /obj/structure/disposalpipe/segment{ color = "#c4c4c4"; @@ -22323,74 +22681,41 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/tumor/ice_lab) -"nIf" = ( -/obj/structure/platform{ - dir = 4 +"nIw" = ( +/obj/structure/prop/almayer/computers/sensor_computer1{ + name = "computer" }, -/obj/item/stool, -/obj/item/clothing/shoes/slippers_worn, /turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/civres_blue) -"nIh" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - density = 0; - dir = 4 + icon_state = "darkredfull2" }, -/turf/open/floor/prison, /area/fiorina/station/security) -"nIn" = ( -/obj/item/reagent_container/food/snacks/wrapped/booniebars, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/tumor/civres) -"nIo" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/microwave{ - pixel_y = 6 - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "blue_plate" +"nJq" = ( +/obj/structure/platform{ + dir = 1 }, -/area/fiorina/station/botany) -"nIq" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrowncorners2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) -"nIy" = ( -/obj/item/explosive/grenade/high_explosive/frag, +/area/fiorina/station/transit_hub) +"nJu" = ( +/obj/item/stack/rods, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) +"nJT" = ( +/obj/structure/inflatable/popped/door, /turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"nID" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + dir = 8; + icon_state = "whitegreen" }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/station/medbay) +"nKf" = ( +/obj/structure/bed/chair{ + dir = 1 }, -/area/fiorina/lz/near_lzII) -"nJC" = ( -/obj/item/stack/sheet/metal/medium_stack, -/obj/structure/surface/rack, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"nJQ" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/smg/nailgun, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + icon_state = "bluefull" }, -/area/fiorina/maintenance) +/area/fiorina/station/power_ring) "nKl" = ( /obj/structure/platform{ dir = 1 @@ -22403,16 +22728,17 @@ }, /turf/open/gm/river/desert/deep, /area/fiorina/lz/near_lzII) -"nKq" = ( -/obj/structure/bed/chair/comfy{ - dir = 4 +"nKo" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/microwave{ + icon_state = "mwo"; + pixel_y = 6 }, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ - dir = 6; - icon_state = "blue" + dir = 4; + icon_state = "greenfull" }, -/area/fiorina/station/civres_blue) +/area/fiorina/tumor/civres) "nKG" = ( /obj/item/stack/sheet/metal, /turf/open/floor/almayer{ @@ -22431,38 +22757,77 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"nLf" = ( -/obj/structure/bed/chair{ - dir = 8 +"nLS" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/condiment/saltshaker{ + pixel_x = -5; + pixel_y = -6 + }, +/obj/item/reagent_container/food/condiment/peppermill{ + pixel_x = -5; + pixel_y = -11 }, +/obj/item/reagent_container/food/snacks/doughslice, /turf/open/floor/prison{ dir = 4; - icon_state = "blue_plate" + icon_state = "darkyellowfull2" }, -/area/fiorina/station/botany) -"nLh" = ( -/obj/structure/platform{ - dir = 4 +/area/fiorina/station/flight_deck) +"nLV" = ( +/turf/closed/shuttle/ert{ + icon_state = "stan27" }, -/obj/structure/platform, -/obj/structure/platform_decoration{ - dir = 6 +/area/fiorina/tumor/aux_engi) +"nMg" = ( +/obj/effect/landmark/static_comms/net_one, +/turf/open/floor/prison{ + dir = 10; + icon_state = "darkyellow2" }, +/area/fiorina/station/telecomm/lz1_tram) +"nMi" = ( +/obj/structure/largecrate/random/secure, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/transit_hub) -"nLl" = ( +/area/fiorina/station/medbay) +"nMm" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "blue" + icon_state = "darkbrown2" }, +/area/fiorina/tumor/aux_engi) +"nMn" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/gun/pistol/lowchance, +/turf/open/floor/prison, /area/fiorina/station/power_ring) -"nLV" = ( -/turf/closed/shuttle/ert{ - icon_state = "stan27" +"nMp" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenblue" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/botany) +"nMz" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/central_ring) +"nMI" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison, +/area/fiorina/tumor/ice_lab) "nMZ" = ( /obj/structure/ice/thin/indestructible, /obj/structure/prop/invuln{ @@ -22482,6 +22847,36 @@ /obj/structure/surface/rack, /turf/open/floor/plating/prison, /area/fiorina/maintenance) +"nNS" = ( +/obj/item/device/flashlight/flare, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"nOe" = ( +/obj/structure/barricade/handrail/type_b{ + dir = 4 + }, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"nOg" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/civres_blue) +"nOi" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) "nOw" = ( /obj/structure/ice/thin/indestructible{ dir = 1; @@ -22490,6 +22885,10 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/tumor/ice_lab) +"nOy" = ( +/obj/effect/landmark/monkey_spawn, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) "nOz" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/device/flashlight/lamp/candelabra{ @@ -22499,21 +22898,6 @@ }, /turf/open/floor/wood, /area/fiorina/station/chapel) -"nOF" = ( -/turf/open/floor/prison{ - dir = 5; - icon_state = "darkyellow2" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"nPa" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) "nPj" = ( /obj/item/clothing/glasses/gglasses, /turf/open/space, @@ -22529,76 +22913,113 @@ icon_state = "plate" }, /area/fiorina/tumor/aux_engi) -"nPO" = ( -/obj/item/tool/pickaxe, -/obj/structure/platform{ - dir = 4 +"nQl" = ( +/obj/effect/decal/medical_decals{ + icon_state = "docstripingdir" }, +/obj/item/stack/rods/plasteel, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/medbay) "nQq" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited, /turf/closed/wall/prison, /area/fiorina/station/medbay) -"nQN" = ( +"nQu" = ( /turf/open/floor/prison{ - icon_state = "green" - }, -/area/fiorina/station/botany) -"nQS" = ( -/obj/structure/reagent_dispensers/water_cooler{ - density = 0; - pixel_x = -11; - pixel_y = 13 + icon_state = "floor_plate" }, +/area/fiorina/station/central_ring) +"nQE" = ( +/obj/item/stack/sheet/metal, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "whitegreen" }, -/area/fiorina/station/power_ring) -"nRb" = ( -/turf/open/floor/prison, -/area/fiorina/station/security/wardens) -"nRf" = ( -/obj/structure/largecrate/random/barrel/white, +/area/fiorina/tumor/ice_lab) +"nQF" = ( +/obj/structure/largecrate/random, /turf/open/floor/prison, -/area/fiorina/station/security) -"nRI" = ( -/obj/structure/machinery/light/small{ - dir = 4; - pixel_x = 11; - pixel_y = 10 +/area/fiorina/lz/near_lzI) +"nQH" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) -"nSa" = ( +/area/fiorina/lz/near_lzII) +"nQJ" = ( /obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, +/obj/structure/sink{ + pixel_y = 32 + }, +/obj/item/tool/kitchen/knife/butcher, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "kitchen" }, -/area/fiorina/tumor/aux_engi) -"nSi" = ( -/obj/structure/machinery/door/window/eastright{ - dir = 2 +/area/fiorina/station/power_ring) +"nRQ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/condiment/saltshaker{ + pixel_x = -5; + pixel_y = -6 + }, +/obj/item/reagent_container/food/condiment/peppermill{ + pixel_x = -5; + pixel_y = -11 }, /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/flight_deck) +"nRT" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"nRU" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/prison{ + dir = 6; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"nSh" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) "nSx" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/station/disco) -"nSz" = ( +"nSS" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/dropper, +/obj/item/attachable/bipod, /turf/open/floor/prison{ - icon_state = "yellowfull" + dir = 1; + icon_state = "darkyellow2" }, -/area/fiorina/station/disco) +/area/fiorina/lz/near_lzI) "nSU" = ( /obj/structure/surface/rack, /obj/item/storage/toolbox/emergency, @@ -22609,20 +23030,33 @@ icon_state = "stan5" }, /area/fiorina/tumor/ship) -"nTD" = ( -/obj/structure/platform{ - dir = 8 - }, -/obj/item/device/flashlight/lamp/tripod, +"nTv" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" + icon_state = "bluecorner" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/chapel) +"nTV" = ( +/obj/structure/machinery/autolathe/full, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) "nUb" = ( /obj/item/stack/rods, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) +"nUe" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ + req_one_access = null + }, +/turf/open/floor/prison, +/area/fiorina/station/park) +"nUm" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) "nUr" = ( /obj/structure/ice/thin/indestructible, /obj/structure/prop/invuln{ @@ -22648,162 +23082,205 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/tumor/ice_lab) -"nUy" = ( -/obj/structure/machinery/door/morgue{ - dir = 2; - name = "Confession Booth" - }, +"nUJ" = ( +/obj/effect/spawner/random/technology_scanner, +/turf/open/floor/plating/prison, +/area/fiorina/maintenance) +"nUS" = ( +/obj/structure/machinery/computer3/server/rack, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/chapel) -"nUF" = ( -/obj/structure/prop/resin_prop{ - icon_state = "rack" +/area/fiorina/tumor/servers) +"nVu" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 }, -/obj/structure/machinery/light/double/blue, +/obj/structure/largecrate/random/case/double, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + dir = 6; + icon_state = "whitepurple" }, -/area/fiorina/tumor/aux_engi) -"nUJ" = ( -/obj/effect/spawner/random/technology_scanner, -/turf/open/floor/plating/prison, -/area/fiorina/maintenance) -"nVq" = ( +/area/fiorina/station/research_cells) +"nVE" = ( +/obj/item/stack/tile/plasteel, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"nVN" = ( +/obj/item/trash/cigbutt, /turf/open/floor/prison{ - dir = 1; - icon_state = "blue" - }, -/area/fiorina/station/power_ring) -"nVA" = ( -/obj/structure/platform{ - dir = 4 + icon_state = "floor_plate" }, -/obj/item/shard{ - icon_state = "medium"; - name = "ice shard" +/area/fiorina/station/telecomm/lz1_cargo) +"nVR" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkbrown2" }, +/area/fiorina/tumor/aux_engi) +"nWh" = ( +/obj/item/tool/wrench, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"nWk" = ( +/obj/effect/spawner/random/gun/smg/midchance, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" + dir = 1; + icon_state = "darkbrown2" }, -/area/fiorina/tumor/ice_lab) -"nVH" = ( -/obj/structure/platform_decoration{ - dir = 4 +/area/fiorina/station/park) +"nWv" = ( +/obj/item/reagent_container/food/drinks/coffee{ + name = "\improper paper cup" + }, +/turf/open/floor/prison, +/area/fiorina/station/security) +"nWx" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/toolbox, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"nWB" = ( +/obj/structure/closet/firecloset, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 }, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 10; + icon_state = "darkbrown2" }, -/area/fiorina/station/power_ring) +/area/fiorina/maintenance) "nWC" = ( /obj/item/clothing/shoes/yellow, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"nWK" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/cameras{ - dir = 8 - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, +"nWM" = ( +/obj/structure/machinery/disposal, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "bluefull" }, -/area/fiorina/station/security) +/area/fiorina/station/power_ring) "nXj" = ( /obj/structure/curtain/black, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"nXq" = ( -/turf/open/floor/prison{ - icon_state = "cell_stripe" +"nXu" = ( +/obj/item/storage/backpack/satchel/lockable, +/turf/open/floor/prison, +/area/fiorina/station/security) +"nXE" = ( +/obj/item/ammo_casing{ + icon_state = "casing_6_1" }, -/area/fiorina/station/disco) +/obj/item/weapon/gun/smg/mp5, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"nXX" = ( +/obj/item/stack/medical/bruise_pack, +/turf/open/floor/prison, +/area/fiorina/station/security) "nYi" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 4 }, /turf/open/floor/plating/prison, /area/fiorina/station/security) -"nYk" = ( +"nYB" = ( +/obj/structure/barricade/wooden{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/civres_blue) +"nYE" = ( +/obj/item/tool/wrench, /turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/aux_engi) +"nYT" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/obj/structure/barricade/handrail{ dir = 1; - icon_state = "green" + icon_state = "hr_kutjevo"; + name = "solar lattice" }, -/area/fiorina/station/botany) -"nYw" = ( +/turf/open/space/basic, +/area/fiorina/oob) +"nZB" = ( /turf/open/floor/prison{ - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) -"nYA" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" +/area/fiorina/lz/near_lzII) +"nZI" = ( +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/structure/platform, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) +/area/fiorina/station/flight_deck) "nZQ" = ( /obj/structure/bed/chair/comfy{ dir = 4 }, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"nZT" = ( -/obj/effect/decal/cleanable/blood/xeno{ - icon_state = "xgib3" +"nZU" = ( +/obj/effect/decal{ + icon = 'icons/obj/items/policetape.dmi'; + icon_state = "engineering_h"; + layer = 2.5; + pixel_y = -11 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellow2" }, +/area/fiorina/station/flight_deck) +"oaa" = ( /turf/open/floor/prison{ dir = 10; icon_state = "floor_plate" }, /area/fiorina/station/flight_deck) -"oan" = ( -/obj/item/trash/semki, +"obh" = ( +/obj/structure/window/framed/prison/reinforced, /turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"oaI" = ( -/obj/structure/barricade/wooden{ - dir = 4; - pixel_y = 4 +/area/fiorina/station/security) +"oby" = ( +/obj/structure/platform{ + dir = 4 }, /turf/open/floor/prison{ - icon_state = "darkbrown2" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/station/park) -"oaX" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/supply_kit, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) +/area/fiorina/station/botany) "obz" = ( /obj/structure/machinery/computer/arcade, /turf/open/floor/plating/prison, /area/fiorina/maintenance) +"obE" = ( +/obj/structure/machinery/power/apc{ + start_charge = 0 + }, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) "obI" = ( /obj/effect/landmark/nightmare{ insert_tag = "engineeroffice" }, /turf/closed/wall/prison, /area/fiorina/tumor/civres) -"obL" = ( -/obj/effect/landmark/monkey_spawn, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/tumor/ice_lab) -"obT" = ( -/turf/open/floor/prison{ - dir = 1; - icon_state = "blue" - }, -/area/fiorina/station/civres_blue) "occ" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/drinks/cans/souto/lime{ @@ -22831,171 +23308,156 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"ocd" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/prison, -/area/fiorina/station/chapel) -"ocB" = ( -/obj/structure/bed{ - icon_state = "abed" - }, -/obj/item/coin/uranium, -/obj/item/bedsheet/green, -/turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"ocJ" = ( -/obj/structure/toilet{ - dir = 4; - pixel_y = 8 +"ode" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, +/turf/open/floor/plating/prison, +/area/fiorina/station/disco) +"odl" = ( +/obj/structure/tunnel/maint_tunnel, /turf/open/floor/prison{ - dir = 9; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"ocS" = ( -/obj/structure/disposalpipe/segment{ - color = "#c4c4c4"; - dir = 2; - layer = 6; - name = "overhead pipe"; - pixel_x = -16; - pixel_y = 12 + icon_state = "darkpurplefull2" }, +/area/fiorina/tumor/servers) +"ody" = ( +/obj/structure/machinery/autolathe, /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 }, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"odg" = ( -/obj/structure/inflatable/popped/door, -/turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"odH" = ( -/obj/item/trash/candle, /turf/open/floor/prison{ - icon_state = "darkyellow2" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"odN" = ( -/obj/structure/bed/chair{ - dir = 8 + icon_state = "floor_plate" }, -/obj/effect/spawner/random/gun/rifle/midchance, +/area/fiorina/tumor/civres) +"odC" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "blue" + icon_state = "platingdmg1" }, -/area/fiorina/station/power_ring) +/area/fiorina/tumor/civres) "odQ" = ( /obj/structure/largecrate/supply, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"oem" = ( -/obj/effect/landmark/objective_landmark/close, +"oer" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrown2" }, -/area/fiorina/tumor/aux_engi) -"oex" = ( -/obj/structure/bed/chair, +/area/fiorina/station/park) +"oev" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" + }, +/area/fiorina/tumor/civres) +"oeN" = ( +/obj/effect/landmark/corpsespawner/prison_security, /turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"oeT" = ( +/obj/structure/disposalpipe/segment{ + color = "#c4c4c4"; dir = 4; + layer = 6; + name = "overhead pipe"; + pixel_y = 12 + }, +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" + }, +/area/fiorina/tumor/civres) +"oeV" = ( +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ + dir = 8; icon_state = "blue_plate" }, /area/fiorina/station/botany) -"oeG" = ( -/obj/structure/largecrate/random, -/obj/effect/spawner/random/powercell, -/obj/item/device/camera/oldcamera{ - pixel_y = 11 - }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"oeZ" = ( -/obj/effect/landmark/monkey_spawn, -/turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"ofb" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/prison, -/area/fiorina/station/security) -"ofo" = ( +"oeY" = ( /obj/effect/spawner/random/tool, -/obj/structure/surface/rack, +/turf/open/floor/prison, +/area/fiorina/station/chapel) +"ofl" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + dir = 6; + icon_state = "yellow" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/disco) "ofq" = ( /turf/closed/shuttle/elevator{ dir = 10 }, /area/fiorina/station/telecomm/lz1_cargo) -"ofr" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/disco) "ofw" = ( /obj/structure/machinery/newscaster, /turf/closed/wall/prison, /area/fiorina/station/transit_hub) -"ofy" = ( -/obj/structure/machinery/photocopier, -/turf/open/floor/prison{ - icon_state = "darkredfull2" +"ofA" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_ew_full_cap" + }, +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) +"ofQ" = ( +/obj/structure/machinery/power/apc{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) +"oga" = ( +/obj/structure/bed{ + icon_state = "psychbed" }, -/area/fiorina/station/research_cells) -"ofF" = ( -/obj/structure/prop/souto_land/pole, /turf/open/floor/prison{ - icon_state = "darkbrown2" + dir = 5; + icon_state = "whitegreen" }, -/area/fiorina/station/park) -"ogd" = ( -/obj/structure/machinery/lapvend, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"ogo" = ( +/area/fiorina/station/medbay) +"ogf" = ( /obj/structure/monorail{ - dir = 9; name = "launch track" }, /turf/open/space, /area/fiorina/oob) -"ogr" = ( -/obj/item/stack/cable_coil/pink, -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) +"ogs" = ( +/obj/structure/machinery/power/geothermal, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) "ogM" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /turf/open/floor/plating/prison, /area/fiorina/tumor/fiberbush) -"ogX" = ( -/obj/vehicle/powerloader{ - dir = 8 - }, +"ohc" = ( +/obj/item/clothing/head/helmet/marine/veteran/ua_riot, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"ohs" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/goggles/lowchance, +/area/fiorina/station/security) +"ohl" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkpurple2" + }, +/area/fiorina/station/central_ring) +"ohx" = ( +/obj/item/tool/match, /turf/open/floor/prison{ icon_state = "redfull" }, @@ -23004,23 +23466,6 @@ /obj/structure/platform/kutjevo/smooth, /turf/closed/wall/mineral/bone_resin, /area/fiorina/tumor/ice_lab) -"ohI" = ( -/turf/open/floor/prison{ - icon_state = "blue_plate" - }, -/area/fiorina/station/botany) -"ohN" = ( -/obj/structure/machinery/shower{ - dir = 1; - pixel_y = -1 - }, -/obj/structure/machinery/shower{ - dir = 4 - }, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/fiorina/station/research_cells) "ohY" = ( /obj/item/circuitboard/machine/pacman/super, /obj/structure/machinery/constructable_frame{ @@ -23028,48 +23473,72 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"oii" = ( -/obj/structure/inflatable/popped, +"oib" = ( +/obj/item/trash/hotdog, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" + dir = 8; + icon_state = "blue" }, -/area/fiorina/station/medbay) -"oiu" = ( +/area/fiorina/station/power_ring) +"oih" = ( +/obj/item/paper/crumpled/bloody, /turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) +"oiF" = ( +/obj/structure/filingcabinet, +/obj/structure/machinery/light/double/blue{ dir = 1; - icon_state = "bluecorner" + pixel_y = 21 }, -/area/fiorina/station/power_ring) -"oiR" = ( -/obj/effect/landmark/queen_spawn, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" + dir = 4; + icon_state = "greenfull" }, -/area/fiorina/tumor/aux_engi) -"oja" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_sn_full_cap" +/area/fiorina/tumor/servers) +"oiV" = ( +/turf/open/floor/prison{ + icon_state = "darkpurple2" }, -/obj/structure/platform{ - dir = 8 +/area/fiorina/tumor/servers) +"oiX" = ( +/obj/structure/machinery/iv_drip, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/floor/plating/prison, -/area/fiorina/station/medbay) -"ojf" = ( -/obj/structure/machinery/portable_atmospherics/powered/pump, +/area/fiorina/station/telecomm/lz1_cargo) +"ojc" = ( +/obj/effect/alien/weeds/node, /turf/open/floor/prison{ - icon_state = "whitepurple" + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) +"ojj" = ( +/obj/effect/decal{ + icon = 'icons/obj/items/policetape.dmi'; + icon_state = "engineering_h"; + layer = 2.5; + pixel_y = -11 }, -/area/fiorina/station/research_cells) -"ojh" = ( -/obj/item/stack/rods/plasteel, /turf/open/floor/prison{ - dir = 5; - icon_state = "darkyellow2" + icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/telecomm/lz1_cargo) +"ojk" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/transit_hub) +"ojq" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzII) "ojv" = ( /obj/structure/machinery/light/double/blue{ dir = 8; @@ -23081,6 +23550,14 @@ "ojK" = ( /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz1_tram) +"ojW" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/civres) "okg" = ( /obj/structure/barricade/handrail/type_b{ dir = 1 @@ -23090,6 +23567,13 @@ "okv" = ( /turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) +"okE" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison, +/area/fiorina/station/disco) "okF" = ( /obj/structure/blocker/invisible_wall, /obj/structure/ice/thin/indestructible, @@ -23135,12 +23619,25 @@ }, /turf/open/ice/noweed, /area/fiorina/station/research_cells) -"okM" = ( -/obj/structure/machinery/vending/dinnerware, +"okG" = ( +/obj/structure/barricade/deployable{ + dir = 4 + }, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "yellowfull" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/lowsec) +"okJ" = ( +/obj/structure/machinery/shower{ + pixel_y = 13 + }, +/obj/structure/machinery/shower{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/fiorina/station/research_cells) "okT" = ( /obj/item/device/flashlight/lamp/tripod, /turf/open/floor/plating/prison, @@ -23161,38 +23658,23 @@ icon_state = "plate" }, /area/fiorina/tumor/ship) -"oli" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/ashtray/plastic{ - pixel_x = 3 +"olg" = ( +/obj/structure/closet/crate/delta{ + desc = "A crate with delta squad's symbol on it. Now how did that get here? The words 'HEFA was never real' are scrawled on it in black ink."; + name = "crate" }, -/obj/item/trash/cigbutt{ - pixel_y = 8 - }, -/obj/item/trash/cigbutt{ - pixel_x = 4 - }, -/obj/item/paper_bin{ - pixel_x = -10; - pixel_y = 8 - }, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/security/wardens) -"olm" = ( -/obj/item/device/binoculars, -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/fiberbush) -"olo" = ( -/obj/structure/machinery/disposal, -/turf/open/organic/grass{ - desc = "It'll get in your shoes no matter what you do."; - name = "astroturf" +/obj/item/ammo_box/magazine/shotgun/buckshot, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"olk" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"olo" = ( +/obj/structure/machinery/disposal, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" }, /area/fiorina/tumor/fiberbush) "oly" = ( @@ -23203,31 +23685,6 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz2_maint) -"olC" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "greencorner" - }, -/area/fiorina/station/chapel) -"olG" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/station_alert{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/tumor/ice_lab) -"olT" = ( -/obj/structure/machinery/computer3/server/rack, -/obj/structure/window{ - dir = 8 - }, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/tumor/servers) "omb" = ( /obj/structure/surface/table/woodentable/fancy, /obj/structure/machinery/computer/guestpass, @@ -23239,76 +23696,119 @@ }, /turf/open/space, /area/fiorina/oob) -"omi" = ( -/obj/structure/bed/sofa/south/grey/left, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"omD" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/structure/cable/heavyduty{ + icon_state = "4-8" + }, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/aux_engi) +"omI" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/floor/plating/prison, +/area/fiorina/station/transit_hub) +"omN" = ( +/obj/structure/platform_decoration{ + dir = 1 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/security/wardens) -"omw" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_sn_full_cap" +/area/fiorina/station/botany) +"omO" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/prison{ + icon_state = "cell_stripe" }, -/obj/structure/platform{ +/area/fiorina/station/medbay) +"onb" = ( +/obj/structure/bed/chair{ dir = 8 }, +/obj/structure/prop/souto_land/pole{ + dir = 1 + }, +/obj/structure/prop/souto_land/pole{ + dir = 8; + pixel_y = 24 + }, /turf/open/floor/prison{ - dir = 10; - icon_state = "bright_clean2" + icon_state = "darkbrown2" }, /area/fiorina/station/park) -"omD" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, -/obj/structure/cable/heavyduty{ - icon_state = "4-8" +"onh" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/cameras{ + dir = 4 }, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/aux_engi) -"omF" = ( -/obj/structure/curtain/shower, /turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" + icon_state = "redfull" + }, +/area/fiorina/station/security) +"ont" = ( +/obj/structure/platform_decoration{ + dir = 1 }, -/area/fiorina/tumor/civres) -"omI" = ( -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/plating/prison, -/area/fiorina/station/transit_hub) -"ond" = ( -/obj/structure/machinery/computer3/server/rack, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "bluefull" }, -/area/fiorina/tumor/servers) -"onw" = ( -/obj/structure/bed/chair, +/area/fiorina/station/power_ring) +"onB" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/item/device/multitool, +/obj/item/device/multitool, +/obj/item/device/multitool, /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 }, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 1; + icon_state = "darkyellow2" }, -/area/fiorina/tumor/servers) -"onz" = ( -/obj/structure/machinery/optable{ - desc = "This maybe could be used for advanced medical procedures."; - name = "Exam Table" +/area/fiorina/lz/near_lzI) +"onW" = ( +/obj/structure/machinery/shower{ + pixel_y = 13 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "kitchen" + }, +/area/fiorina/station/research_cells) +"ooq" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 5; + icon_state = "yellow" + }, +/area/fiorina/station/disco) +"oou" = ( +/obj/structure/closet/emcloset, +/obj/item/clothing/head/cmcap{ + pixel_x = -5; + pixel_y = 14 + }, +/obj/item/clothing/glasses/mbcg{ + pixel_y = -14 }, +/turf/open/floor/prison, /area/fiorina/station/medbay) +"oox" = ( +/obj/structure/bed/chair, +/turf/open/floor/prison{ + icon_state = "bluecorner" + }, +/area/fiorina/station/power_ring) "ooF" = ( /obj/structure/machinery/power/apc, /turf/open/floor/wood, /area/fiorina/station/park) +"ooO" = ( +/obj/item/storage/briefcase/inflatable, +/turf/open/floor/prison, +/area/fiorina/station/disco) "oph" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/reagent_container/food/drinks/bottle/holywater, @@ -23318,49 +23818,44 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"opy" = ( -/obj/item/shard{ - icon_state = "medium" - }, -/turf/open/floor/prison{ +"opj" = ( +/obj/structure/sink{ dir = 4; - icon_state = "whitegreen" + pixel_x = 12 }, -/area/fiorina/station/medbay) -"opB" = ( -/obj/structure/machinery/constructable_frame, +/obj/effect/decal/cleanable/blood/gibs, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 6; + icon_state = "yellow" }, /area/fiorina/station/lowsec) -"opC" = ( +"opM" = ( +/obj/structure/bed/chair, /turf/open/floor/prison{ - dir = 10; - icon_state = "darkbrown2" - }, -/area/fiorina/maintenance) -"opV" = ( -/obj/structure/bed{ - icon_state = "psychbed" + icon_state = "bluefull" }, +/area/fiorina/station/power_ring) +"opN" = ( +/obj/item/stack/rods, /turf/open/floor/prison{ - dir = 5; - icon_state = "whitegreen" + dir = 8; + icon_state = "blue" }, -/area/fiorina/station/medbay) -"oqn" = ( +/area/fiorina/station/chapel) +"opP" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ dir = 8; - icon_state = "cell_stripe" + icon_state = "greenblue" }, /area/fiorina/station/botany) -"oqu" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_ew_full_cap" +"oqG" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/tool, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) +/area/fiorina/station/park) "orr" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/device/flashlight/lamp/candelabra{ @@ -23374,77 +23869,112 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"ors" = ( -/obj/item/trash/candle, +"ort" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/prison{ + dir = 8; + icon_state = "green" + }, +/area/fiorina/station/chapel) +"orB" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "darkpurple2" + }, +/area/fiorina/tumor/servers) +"orC" = ( +/obj/structure/machinery/vending/sovietsoda, +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" + }, +/area/fiorina/station/botany) +"orD" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/book/manual/surgery{ + name = "Lung Transplants for Dummies"; + pixel_y = 4 + }, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, /area/fiorina/station/telecomm/lz1_cargo) -"orx" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" +"orV" = ( +/obj/item/tool/weldingtool, +/turf/open/auto_turf/sand/layer1, +/area/fiorina/tumor/civres) +"osv" = ( +/obj/structure/platform_decoration{ + dir = 1 }, -/area/fiorina/station/medbay) -"orA" = ( -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"orG" = ( -/obj/item/stack/sheet/metal/medium_stack, -/turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"osO" = ( -/obj/structure/inflatable/door, /turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" + dir = 8; + icon_state = "darkbrowncorners2" }, +/area/fiorina/station/park) +"osN" = ( +/obj/structure/closet/bodybag, +/obj/effect/decal/cleanable/blood/gibs/limb, +/turf/open/floor/prison, /area/fiorina/station/lowsec) -"osR" = ( -/obj/item/trash/semki, +"osQ" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/obj/item/bedsheet/green, /turf/open/floor/prison{ dir = 10; - icon_state = "floor_plate" + icon_state = "yellow" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/lowsec) "osX" = ( /obj/structure/cable/heavyduty{ icon_state = "0-4" }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"oti" = ( -/obj/item/device/flashlight/lamp/tripod, -/turf/open/floor/prison, -/area/fiorina/station/chapel) -"otq" = ( -/obj/effect/decal/cleanable/blood/oil, +"ota" = ( +/obj/effect/landmark/survivor_spawner, /turf/open/floor/prison{ - dir = 4; - icon_state = "bluecorner" + icon_state = "floor_plate" }, /area/fiorina/station/power_ring) -"otB" = ( -/obj/effect/decal/cleanable/blood/oil, +"otg" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" + dir = 8; + icon_state = "darkpurple2" }, -/area/fiorina/lz/near_lzI) -"otG" = ( -/obj/item/tool/scythe, +/area/fiorina/tumor/servers) +"oty" = ( +/obj/structure/closet/bombcloset, /turf/open/floor/prison{ - dir = 8; - icon_state = "blue_plate" + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/flight_deck) +"otz" = ( +/obj/structure/closet/crate/medical, +/obj/item/storage/fancy/vials/random, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"otC" = ( +/obj/structure/bed/chair/comfy{ + dir = 1 }, -/area/fiorina/station/botany) -"otP" = ( -/obj/item/stack/rods, /turf/open/floor/prison, -/area/fiorina/station/transit_hub) +/area/fiorina/station/security/wardens) +"otK" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "floor_marked" + }, +/area/fiorina/tumor/servers) "ouH" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/med_data/laptop{ @@ -23452,58 +23982,29 @@ }, /turf/open/floor/plating/plating_catwalk, /area/fiorina/tumor/ship) -"ouS" = ( -/obj/item/stack/rods, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +"ove" = ( +/obj/structure/platform_decoration{ + dir = 1 }, -/area/fiorina/station/medbay) -"ovc" = ( -/obj/structure/sink{ +/turf/open/floor/prison, +/area/fiorina/station/park) +"ovk" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/prison{ dir = 4; - pixel_x = 12 - }, -/obj/item/prop/helmetgarb/spacejam_tickets{ - desc = "Low security prisoners would smuggle in arcade tickets after visitations. The tickets act as a stand in for paper currency in the prison economy, they're backed by the cigarette standard, since one ticket nets one cigarette at the prize booth. The cigarettes also get smuggled back in."; - name = "\improper arcade tickets"; - pixel_x = 1; - pixel_y = -1 + icon_state = "whitegreencorner" }, +/area/fiorina/tumor/ice_lab) +"ovq" = ( /turf/open/floor/prison{ - dir = 6; - icon_state = "whitepurple" + dir = 10; + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) -"ovj" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison, /area/fiorina/station/telecomm/lz1_cargo) "ovr" = ( /obj/structure/girder/displaced, /turf/open/floor/plating/prison, /area/fiorina/station/security) -"ovB" = ( -/turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" - }, -/area/fiorina/station/disco) -"ovC" = ( -/obj/effect/decal/cleanable/blood/splatter{ - icon_state = "gib2" - }, -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreencorner" - }, -/area/fiorina/station/medbay) -"ovE" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellowcorners2" - }, -/area/fiorina/station/flight_deck) "ovJ" = ( /turf/open/floor/wood, /area/fiorina/station/medbay) @@ -23516,64 +24017,45 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"ovZ" = ( -/obj/structure/largecrate/supply/floodlights, +"owd" = ( +/obj/item/storage/backpack/souto, +/turf/open/floor/prison, +/area/fiorina/station/chapel) +"owp" = ( +/obj/effect/landmark/static_comms/net_two, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) -"own" = ( -/obj/item/stack/sheet/metal/medium_stack, -/obj/structure/surface/rack, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/lz/near_lzI) -"owv" = ( -/obj/structure/bed/roller, -/obj/structure/machinery/iv_drip{ - pixel_y = 19 - }, -/obj/item/bedsheet/green, +/area/fiorina/lz/near_lzII) +"owS" = ( /obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; + dir = 8; + pixel_x = -10; pixel_y = 13 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" + dir = 8; + icon_state = "whitepurple" }, -/area/fiorina/station/medbay) -"owG" = ( -/obj/structure/machinery/landinglight/ds1, -/turf/open/floor/prison{ +/area/fiorina/station/research_cells) +"oxp" = ( +/obj/structure/platform{ dir = 4; - icon_state = "darkyellowfull2" + layer = 2 }, -/area/fiorina/lz/near_lzI) -"oxg" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 +/obj/structure/machinery/door/airlock/prison_hatch/autoname{ + dir = 1 }, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/tumor/servers) -"oxk" = ( -/obj/structure/inflatable/popped/door, -/obj/effect/decal/medical_decals{ - icon_state = "triagedecaldir" + icon_state = "floor_plate" }, +/area/fiorina/tumor/ice_lab) +"oxv" = ( +/obj/effect/alien/weeds/node, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/tumor/servers) "oxA" = ( /turf/closed/shuttle/ert{ icon_state = "stan22" @@ -23585,158 +24067,115 @@ icon_state = "plate" }, /area/fiorina/tumor/aux_engi) -"oxN" = ( -/obj/structure/machinery/vending/hydroseeds, -/turf/open/floor/prison{ - dir = 1; - icon_state = "blue_plate" - }, -/area/fiorina/station/botany) "oxS" = ( /obj/item/paper/crumpled/bloody, /turf/open/floor/prison/chapel_carpet{ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"oxT" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/medbay) -"oxZ" = ( -/obj/structure/inflatable/popped, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, +"oxU" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreen" + dir = 4; + icon_state = "greenfull" }, -/area/fiorina/station/medbay) +/area/fiorina/station/transit_hub) "oyd" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"oyg" = ( +"oyk" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 5 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"oyo" = ( +/obj/structure/flora/pottedplant/random, /turf/open/floor/prison{ - dir = 8; - icon_state = "cell_stripe" + dir = 10; + icon_state = "kitchen" }, -/area/fiorina/station/security/wardens) -"oys" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 +/area/fiorina/tumor/civres) +"oyy" = ( +/obj/structure/bed{ + icon_state = "abed" }, /turf/open/floor/prison{ - dir = 8; - icon_state = "green" + dir = 10; + icon_state = "whitepurple" }, -/area/fiorina/station/chapel) +/area/fiorina/station/research_cells) "oyC" = ( /obj/structure/bed/sofa/south/grey/right, /turf/open/floor/wood, /area/fiorina/station/park) -"ozg" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/structure/platform{ - dir = 4 +"oyJ" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_29"; + pixel_y = 6 }, -/obj/structure/platform_decoration{ - dir = 9 +/turf/open/floor/wood, +/area/fiorina/station/park) +"oyO" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, -/obj/structure/largecrate/random, +/obj/structure/platform, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "bright_clean_marked" }, /area/fiorina/station/power_ring) -"ozh" = ( -/turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" - }, +"oyS" = ( +/obj/structure/bed/sofa/south/grey/left, +/turf/open/floor/prison, /area/fiorina/station/disco) -"ozH" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/landmark/objective_landmark/close, +"oyT" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "blue_plate" + dir = 8; + icon_state = "darkbrown2" }, -/area/fiorina/station/botany) -"oAa" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/clothing/accessory/armband/cargo{ - desc = "Sworn to the shrapnel and the shards therein. So sayeth her command when the first detonation occured."; - name = "HEFA Order milita armband" +/area/fiorina/station/park) +"oza" = ( +/obj/structure/largecrate/random/case/double, +/obj/effect/decal/medical_decals{ + icon_state = "triagedecalbottom" }, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/fiorina/station/chapel) -"oAm" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_ew_full_cap" + dir = 10; + icon_state = "sterile_white" }, -/obj/structure/platform/stair_cut/alt, -/turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"oAv" = ( -/obj/item/reagent_container/food/drinks/cans/waterbottle, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"oAH" = ( -/obj/structure/largecrate/random/case/double, +"ozC" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_29"; + pixel_y = 6 + }, /turf/open/floor/prison, -/area/fiorina/station/power_ring) -"oAL" = ( -/obj/effect/decal/cleanable/blood/writing{ - icon_state = "u_psycopath_l"; - pixel_y = 4 - }, -/obj/effect/decal/cleanable/blood/writing{ - icon_state = "u_ketchup_l"; - pixel_x = 8; - pixel_y = 4 - }, -/obj/effect/decal/cleanable/blood/writing{ - icon_state = "u_guilty_l"; - pixel_x = -12; - pixel_y = 2 - }, +/area/fiorina/station/security) +"oAf" = ( +/obj/item/trash/boonie, /turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/fiorina/station/power_ring) -"oAQ" = ( -/obj/item/shard{ - icon_state = "large"; - name = "ice shard" + dir = 10; + icon_state = "sterile_white" }, -/obj/structure/platform{ - dir = 8 +/area/fiorina/station/medbay) +"oAj" = ( +/obj/structure/machinery/bot/medbot{ + name = "Dr. O" }, /turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) -"oAV" = ( -/obj/structure/platform{ - dir = 4 + dir = 10; + icon_state = "whitegreenfull" }, -/turf/open/floor/prison, -/area/fiorina/station/park) -"oBd" = ( -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/medbay) "oBj" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/plating/prison, @@ -23749,48 +24188,81 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/station/research_cells) -"oBP" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreencorner" - }, -/area/fiorina/station/medbay) "oCe" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/station/park) -"oCI" = ( -/obj/structure/platform_decoration{ +"oCn" = ( +/obj/structure/platform{ dir = 1 }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 9 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/botany) +/area/fiorina/station/park) "oDe" = ( /obj/effect/landmark/monkey_spawn, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"oDn" = ( -/obj/structure/filingcabinet, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"oDz" = ( -/obj/structure/bed/chair/comfy, +"oDg" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/phone{ + pixel_x = 6; + pixel_y = -15 + }, +/obj/item/phone{ + pixel_y = 7 + }, /turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" + icon_state = "floor_plate" }, -/area/fiorina/station/disco) -"oDG" = ( -/obj/structure/barricade/wooden{ - dir = 4 +/area/fiorina/station/security) +"oDh" = ( +/obj/item/stack/rods, +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) +"oDH" = ( +/obj/item/device/flashlight/lamp/tripod, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - dir = 8; - icon_state = "whitepurple" + icon_state = "darkpurplefull2" }, /area/fiorina/station/research_cells) +"oDV" = ( +/obj/item/stack/rods, +/turf/open/floor/prison{ + dir = 8; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"oEi" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "blue" + }, +/area/fiorina/station/civres_blue) +"oEn" = ( +/obj/structure/closet/crate/bravo, +/obj/item/stack/sheet/metal/medium_stack, +/obj/item/stack/sheet/metal/medium_stack, +/obj/item/fuelCell, +/obj/item/stack/sheet/plasteel, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) "oEs" = ( /obj/structure/barricade/handrail/type_b{ layer = 3.5 @@ -23803,28 +24275,27 @@ name = "astroturf" }, /area/fiorina/station/civres_blue) -"oEt" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/book/manual/security_space_law{ - pixel_x = 3; - pixel_y = 5 +"oEu" = ( +/obj/structure/platform_decoration, +/obj/item/shard{ + icon_state = "medium"; + name = "ice shard" }, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "whitegreen" }, -/area/fiorina/station/security) +/area/fiorina/tumor/ice_lab) "oED" = ( /obj/effect/landmark/monkey_spawn, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"oEI" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"oEH" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" }, -/area/fiorina/station/disco) +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "oEK" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer{ @@ -23839,90 +24310,125 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"oEY" = ( -/obj/item/explosive/grenade/incendiary/molotov, +"oEN" = ( +/obj/item/prop/almayer/comp_closed{ + pixel_x = -1 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"oEQ" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "red" + dir = 6; + icon_state = "blue" }, -/area/fiorina/station/security) +/area/fiorina/station/power_ring) +"oEX" = ( +/obj/structure/closet/crate/miningcar{ + name = "\improper materials storage bin" + }, +/turf/open/floor/prison{ + icon_state = "greenblue" + }, +/area/fiorina/station/botany) +"oFf" = ( +/obj/item/reagent_container/food/drinks/cans/aspen, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/lowsec) "oFk" = ( /obj/structure/closet/secure_closet/engineering_personal, /turf/open/floor/almayer{ icon_state = "plate" }, /area/fiorina/tumor/ship) -"oFv" = ( +"oFp" = ( +/obj/structure/barricade/metal/wired{ + dir = 8 + }, /obj/structure/machinery/light/double/blue{ - pixel_y = -1 + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ + dir = 1; icon_state = "yellow" }, -/area/fiorina/station/disco) +/area/fiorina/station/lowsec) "oFI" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname{ dir = 1 }, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"oFW" = ( -/obj/structure/bed/chair{ - dir = 1; - layer = 2.7 +"oFO" = ( +/obj/effect/decal/medical_decals{ + icon_state = "cryotop" + }, +/obj/structure/pipes/standard/simple/visible{ + dir = 9 }, /turf/open/floor/prison{ - icon_state = "whitegreencorner" + dir = 10; + icon_state = "sterile_white" }, /area/fiorina/station/medbay) -"oGm" = ( +"oFU" = ( /obj/structure/machinery/light/double/blue{ dir = 4; pixel_x = 10; - pixel_y = -3 + pixel_y = 13 }, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + dir = 4; + icon_state = "greenblue" }, -/area/fiorina/tumor/civres) -"oGT" = ( -/obj/item/device/flashlight/lamp/tripod, +/area/fiorina/station/botany) +"oGg" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /turf/open/floor/prison{ - icon_state = "darkbrowncorners2" - }, -/area/fiorina/station/park) -"oGU" = ( -/obj/structure/surface/table/woodentable, -/obj/structure/machinery/recharger{ - pixel_y = 4 + dir = 4; + icon_state = "darkbrown2" }, -/turf/open/floor/carpet, -/area/fiorina/station/civres_blue) -"oHk" = ( -/obj/effect/decal{ - icon = 'icons/obj/items/policetape.dmi'; - icon_state = "engineering_v" +/area/fiorina/tumor/aux_engi) +"oGy" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" +/obj/structure/platform{ + dir = 4 }, -/area/fiorina/station/telecomm/lz1_cargo) -"oHn" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/pill_bottle/imidazoline, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, /area/fiorina/tumor/ice_lab) -"oHI" = ( +"oGR" = ( +/obj/structure/machinery/landinglight/ds1/delaythree{ + dir = 1 + }, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" }, +/area/fiorina/lz/near_lzI) +"oGU" = ( +/obj/structure/surface/table/woodentable, +/obj/structure/machinery/recharger{ + pixel_y = 4 + }, +/turf/open/floor/carpet, +/area/fiorina/station/civres_blue) +"oHi" = ( +/obj/item/stool, +/turf/open/floor/prison, /area/fiorina/station/disco) +"oHm" = ( +/turf/open/floor/prison{ + dir = 5; + icon_state = "darkbrown2" + }, +/area/fiorina/tumor/aux_engi) "oHX" = ( /obj/structure/ice/thin/indestructible{ dir = 4; @@ -23931,6 +24437,13 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/tumor/ice_lab) +"oIg" = ( +/obj/structure/platform, +/obj/structure/reagent_dispensers/fueltank/oxygentank{ + layer = 2.6 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) "oIq" = ( /obj/structure/ice/thin/indestructible{ dir = 1; @@ -23943,19 +24456,49 @@ }, /turf/open/ice/noweed, /area/fiorina/tumor/ice_lab) -"oIR" = ( +"oIz" = ( +/obj/structure/surface/rack, +/obj/item/storage/toolbox/mechanical/green, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/aux_engi) +"oIE" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkbrown2" + }, +/area/fiorina/tumor/aux_engi) +"oJd" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ + dir = 4; + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) +"oJl" = ( +/obj/structure/machinery/light/double/blue{ dir = 1; - icon_state = "bluecorner" + pixel_y = 21 }, -/area/fiorina/station/chapel) -"oJs" = ( -/obj/structure/machinery/photocopier, /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 4; + icon_state = "blue_plate" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/botany) +"oJm" = ( +/obj/item/tool/weldingtool, +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) +"oJK" = ( +/obj/structure/window/reinforced/tinted, +/obj/item/storage/briefcase, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/lz/near_lzI) "oJL" = ( /obj/structure/machinery/light/small{ dir = 8; @@ -23970,43 +24513,31 @@ }, /turf/open/floor/almayer, /area/fiorina/tumor/ship) -"oJO" = ( -/obj/structure/platform{ - dir = 4 +"oJN" = ( +/obj/structure/surface/table/reinforced/prison{ + flipped = 1 }, +/obj/item/reagent_container/food/snacks/eat_bar, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenblue" - }, -/area/fiorina/station/botany) -"oJU" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + dir = 10; + icon_state = "whitegreenfull" }, +/area/fiorina/station/medbay) +"oJY" = ( +/obj/item/stack/sandbags/large_stack, /turf/open/floor/prison{ - dir = 1; - icon_state = "greenblue" - }, -/area/fiorina/station/botany) -"oJW" = ( -/obj/structure/closet/bodybag, -/obj/effect/decal/cleanable/blood/gibs/down, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) -"oKa" = ( -/obj/item/trash/used_stasis_bag{ - desc = "Wow, instant sand. They really have everything in space."; - name = "Insta-Sand! bag" + dir = 6; + icon_state = "green" }, -/turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"oKl" = ( -/obj/structure/machinery/vending/cola, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/tumor/civres) +"oKf" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" }, -/area/fiorina/station/transit_hub) +/obj/structure/platform, +/turf/open/floor/plating/prison, +/area/fiorina/station/park) "oKn" = ( /obj/structure/holohoop{ dir = 4; @@ -24030,46 +24561,65 @@ icon_state = "plate" }, /area/fiorina/station/civres_blue) -"oLd" = ( -/obj/effect/landmark/corpsespawner/ua_riot/burst, +"oLF" = ( +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ - dir = 1; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"oLB" = ( -/obj/structure/platform{ - dir = 8 + icon_state = "darkbrown2" }, -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_ew_half_cap" +/area/fiorina/station/park) +"oLK" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/objective, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" }, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzI) -"oMy" = ( -/obj/structure/barricade/metal/wired{ - dir = 1 +/area/fiorina/tumor/servers) +"oLV" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/prison, +/area/fiorina/station/chapel) +"oLX" = ( +/obj/structure/surface/rack, +/obj/item/tank/emergency_oxygen/engi, +/turf/open/floor/prison{ + icon_state = "bluecorner" }, +/area/fiorina/station/power_ring) +"oMf" = ( +/obj/structure/bed/chair/comfy, /turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/security/wardens) +"oMu" = ( +/obj/effect/landmark/survivor_spawner, +/turf/open/floor/prison, +/area/fiorina/station/park) +"oMw" = ( +/obj/structure/toilet{ dir = 8; - icon_state = "darkyellow2" + pixel_y = 8 }, -/area/fiorina/lz/near_lzI) -"oMz" = ( -/obj/structure/inflatable, -/turf/open/floor/prison{ - dir = 9; - icon_state = "yellow" +/obj/item/prop/helmetgarb/spacejam_tickets{ + desc = "Low security prisoners would smuggle in arcade tickets after visitations. The tickets act as a stand in for paper currency in the prison economy, they're backed by the cigarette standard, since one ticket nets one cigarette at the prize booth. The cigarettes also get smuggled back in."; + name = "\improper arcade tickets"; + pixel_x = 1; + pixel_y = -1 }, -/area/fiorina/station/lowsec) -"oMR" = ( -/obj/item/paper, /turf/open/floor/prison{ - dir = 8; + dir = 5; icon_state = "whitepurple" }, /area/fiorina/station/research_cells) +"oNu" = ( +/obj/structure/barricade/handrail/type_b{ + layer = 3.4 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) "oNx" = ( /obj/structure/barricade/handrail{ dir = 4 @@ -24078,6 +24628,37 @@ name = "astroturf" }, /area/fiorina/station/research_cells) +"oNC" = ( +/obj/structure/inflatable, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) +"oOg" = ( +/obj/structure/barricade/handrail/type_b{ + dir = 4; + layer = 3.5 + }, +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/disco) +"oOh" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/cameras{ + dir = 8 + }, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) "oOi" = ( /obj/effect/decal/hefa_cult_decals/d32, /turf/open/floor/prison/chapel_carpet{ @@ -24085,56 +24666,75 @@ icon_state = "doubleside" }, /area/fiorina/maintenance) -"oOK" = ( -/obj/item/device/multitool, +"oOk" = ( +/obj/structure/platform, +/obj/structure/bed/chair{ + dir = 1; + layer = 2.7 + }, /turf/open/floor/prison{ - dir = 9; - icon_state = "green" + icon_state = "whitegreen" }, -/area/fiorina/tumor/civres) +/area/fiorina/station/medbay) +"oOp" = ( +/obj/structure/machinery/power/smes/buildable{ + capacity = 1e+006; + dir = 1 + }, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"oOw" = ( +/obj/structure/machinery/vending/coffee, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/civres_blue) +"oOU" = ( +/obj/structure/reagent_dispensers/water_cooler{ + density = 0; + pixel_x = -8; + pixel_y = 16 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/station/research_cells) "oOV" = ( /obj/structure/machinery/filtration/console{ pixel_y = 22 }, /turf/open/floor/almayer, /area/fiorina/tumor/ship) -"oPC" = ( -/obj/structure/platform{ - dir = 4 - }, +"oPn" = ( +/obj/structure/bed/roller, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/park) +/area/fiorina/station/medbay) "oPN" = ( /obj/structure/inflatable/popped/door, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"oPW" = ( -/obj/structure/closet/crate/medical, -/obj/item/clothing/gloves/latex, -/obj/item/clothing/gloves/latex, +"oPR" = ( /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/station/disco) +"oPU" = ( +/turf/open/floor/prison, +/area/fiorina/station/park) "oPZ" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/park) -"oQz" = ( -/obj/item/prop/almayer/comp_closed{ - pixel_x = -1 - }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"oQF" = ( -/obj/effect/decal/cleanable/blood/oil, +"oQk" = ( +/obj/structure/inflatable/popped, /turf/open/floor/prison{ - dir = 8; - icon_state = "greenblue" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/botany) +/area/fiorina/station/medbay) "oQI" = ( /obj/item/prop/helmetgarb/spacejam_tickets{ desc = "Low security prisoners would smuggle in arcade tickets after visitations. The tickets act as a stand in for paper currency in the prison economy, they're backed by the cigarette standard, since one ticket nets one cigarette at the prize booth. The cigarettes also get smuggled back in."; @@ -24144,57 +24744,71 @@ }, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"oQY" = ( -/turf/open/floor/prison{ - icon_state = "darkredfull2" +"oQS" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/area/fiorina/station/security) -"oRb" = ( -/obj/item/trash/boonie, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/disco) +"oRg" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/fiorina/station/telecomm/lz1_cargo) "oRR" = ( /obj/structure/surface/table/reinforced/prison, /turf/open/floor/wood, /area/fiorina/station/park) -"oSo" = ( -/obj/structure/machinery/door/airlock/prison_hatch/autoname, +"oSn" = ( +/obj/structure/inflatable/door, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 5; + icon_state = "yellow" }, /area/fiorina/station/lowsec) -"oSK" = ( -/obj/structure/monorail{ - dir = 9; - name = "launch track" +"oSz" = ( +/obj/item/shard{ + icon_state = "medium" }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"oSR" = ( -/obj/item/device/flashlight, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 9; + icon_state = "yellow" }, -/area/fiorina/station/research_cells) -"oTe" = ( +/area/fiorina/station/disco) +"oTa" = ( /obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/recharger{ - pixel_y = 4 +/obj/item/ashtray/plastic, +/obj/item/trash/cigbutt{ + pixel_y = 8 }, +/obj/item/trash/cigbutt, /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"oTi" = ( +/turf/open/floor/prison{ + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"oTy" = ( +/obj/structure/prop/structure_lattice{ + health = 300 + }, +/obj/structure/prop/structure_lattice{ + layer = 3.1; + pixel_y = 10 }, -/area/fiorina/station/security) -"oTl" = ( -/obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/chapel) +/area/fiorina/tumor/aux_engi) "oTz" = ( /obj/structure/barricade/handrail/type_b{ layer = 3.5 @@ -24207,17 +24821,27 @@ name = "astroturf" }, /area/fiorina/station/civres_blue) -"oTH" = ( -/obj/structure/bed/chair, +"oTP" = ( /turf/open/floor/prison{ - icon_state = "redfull" + dir = 10; + icon_state = "darkyellow2" }, -/area/fiorina/station/security) -"oTU" = ( -/turf/open/floor/prison{ +/area/fiorina/station/telecomm/lz1_tram) +"oTS" = ( +/obj/structure/stairs/perspective{ dir = 4; - icon_state = "darkbrowncorners2" + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"oTT" = ( +/obj/structure/platform_decoration{ + dir = 8 }, +/turf/open/floor/prison, /area/fiorina/station/park) "oUg" = ( /turf/closed/wall/prison, @@ -24229,70 +24853,88 @@ }, /turf/open/space, /area/fiorina/oob) -"oVn" = ( -/obj/structure/surface/rack, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"oVC" = ( +"oVk" = ( +/obj/vehicle/train/cargo/trolley, /turf/open/floor/prison{ - dir = 6; - icon_state = "green" + icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"oWc" = ( -/obj/effect/decal/cleanable/blood, +/area/fiorina/station/transit_hub) +"oWw" = ( /turf/open/floor/prison{ - icon_state = "blue_plate" - }, -/area/fiorina/station/botany) -"oWz" = ( -/obj/effect/landmark/corpsespawner/ua_riot, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"oWB" = ( -/obj/structure/prop/structure_lattice{ - dir = 4; - health = 300 - }, -/obj/structure/prop/structure_lattice{ dir = 4; - layer = 3.1; - pixel_y = 10 + icon_state = "darkbrowncorners2" }, +/area/fiorina/station/park) +"oWC" = ( +/obj/item/stack/sandbags/large_stack, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 5; + icon_state = "yellow" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/disco) "oWF" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz2_maint) -"oWV" = ( -/obj/structure/surface/rack, -/obj/item/storage/toolbox/mechanical/green, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"oWG" = ( +/obj/item/ammo_casing{ + dir = 6; + icon_state = "casing_10_1" }, -/area/fiorina/tumor/aux_engi) -"oWW" = ( /turf/open/floor/prison{ dir = 1; - icon_state = "redcorner" + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) +"oWY" = ( +/obj/structure/largecrate/random, +/obj/item/reagent_container/food/drinks/coffee{ + pixel_y = 13 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"oXb" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/prison{ + icon_state = "redfull" }, /area/fiorina/station/security) -"oXE" = ( -/obj/item/newspaper, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"oXJ" = ( -/obj/structure/machinery/shower{ - dir = 8 +"oXg" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + dir = 1; + icon_state = "yellow" }, +/area/fiorina/station/lowsec) +"oXk" = ( +/obj/structure/closet/secure_closet/personal, /turf/open/floor/prison{ - icon_state = "kitchen" + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/servers) +"oXD" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/drinks/cans/aspen, +/turf/open/floor/prison{ + dir = 10; + icon_state = "yellow" }, /area/fiorina/station/lowsec) +"oXI" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/effect/decal/medical_decals{ + icon_state = "docdecal1" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) "oXR" = ( /obj/structure/ice/thin/indestructible{ dir = 8; @@ -24310,46 +24952,65 @@ /obj/item/stock_parts/manipulator/nano, /turf/open/floor/wood, /area/fiorina/station/park) -"oYc" = ( -/obj/structure/machinery/shower{ - dir = 1; - pixel_y = -1 +"oYs" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/turf/open/floor/prison{ - icon_state = "kitchen" +/obj/structure/barricade/handrail/type_b{ + dir = 1 }, -/area/fiorina/station/research_cells) -"oYm" = ( -/obj/item/ammo_casing{ - icon_state = "casing_5" +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"oYG" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" }, -/obj/item/clothing/suit/armor/vest/security, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 4; + icon_state = "blue" }, -/area/fiorina/station/medbay) -"oYH" = ( -/obj/structure/monorail{ - name = "launch track" +/area/fiorina/station/chapel) +"oYW" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 }, -/turf/open/floor/plating/prison, -/area/fiorina/station/medbay) -"oYM" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/power_ring) -"oYX" = ( -/obj/effect/spawner/random/tool, +/area/fiorina/tumor/servers) +"oZf" = ( +/obj/structure/surface/rack, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor/prison{ - icon_state = "darkbrown2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/aux_engi) -"oZc" = ( +/area/fiorina/tumor/ice_lab) +"oZi" = ( +/obj/item/clothing/under/color/orange, +/turf/open/floor/prison, +/area/fiorina/station/security) +"oZj" = ( +/obj/effect/landmark/survivor_spawner, /turf/open/floor/prison{ - icon_state = "darkyellowcorners2" + icon_state = "darkredfull2" + }, +/area/fiorina/station/research_cells) +"oZk" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "darkpurple2" + }, +/area/fiorina/tumor/ice_lab) +"oZx" = ( +/obj/item/trash/used_stasis_bag{ + desc = "Wow, instant sand. They really have everything in space."; + name = "Insta-Sand! bag" }, +/turf/open/floor/prison, /area/fiorina/station/flight_deck) "oZy" = ( /obj/structure/platform{ @@ -24367,15 +25028,20 @@ /obj/effect/landmark/objective_landmark/science, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"oZR" = ( +"oZS" = ( /obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/door/window/eastright{ - dir = 1 +/obj/item/clipboard, +/turf/open/floor/prison{ + icon_state = "bluefull" }, +/area/fiorina/station/power_ring) +"oZU" = ( +/obj/structure/largecrate/random/case, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/security) +/area/fiorina/station/research_cells) "pab" = ( /obj/item/tool/weldpack{ pixel_x = 6 @@ -24386,70 +25052,69 @@ /obj/structure/surface/table/reinforced/prison, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/tumor/servers) +"pae" = ( +/obj/effect/decal/medical_decals{ + icon_state = "docdecal1" + }, +/turf/open/floor/prison{ + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) "pah" = ( /obj/structure/platform{ dir = 1 }, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"pan" = ( -/obj/item/reagent_container/food/snacks/meat, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison{ - icon_state = "greenblue" - }, -/area/fiorina/station/botany) -"pat" = ( -/obj/item/clothing/accessory/armband/cargo{ - desc = "Sworn to the shrapnel and the shards therein. So sayeth her command when the first detonation occured."; - name = "HEFA Order milita armband" +"pai" = ( +/obj/structure/machinery/cm_vending/sorted/marine_food{ + desc = "Prison meal vendor, containing preprepared meals fit for the dregs of society."; + name = "\improper Fiorina Green Block Canteen Vendor" }, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue" - }, -/area/fiorina/station/chapel) -"pax" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_29"; - pixel_y = 6 + icon_state = "floor_plate" }, +/area/fiorina/station/lowsec) +"paF" = ( +/obj/item/tool/shovel/etool, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzII) -"paQ" = ( -/obj/structure/platform{ - dir = 4 +/area/fiorina/station/civres_blue) +"paI" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzI) +"paO" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/cameras{ + dir = 8 }, -/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" + icon_state = "darkredfull2" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/security) "pbp" = ( /obj/structure/machinery/door/airlock/multi_tile/elevator/freight, /turf/open/floor/corsat{ icon_state = "plate" }, /area/fiorina/station/telecomm/lz1_cargo) -"pbC" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"pbF" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison{ +"pbv" = ( +/obj/structure/prop/structure_lattice{ + dir = 4 + }, +/obj/structure/prop/structure_lattice{ dir = 4; - icon_state = "darkyellow2" + layer = 3.1; + pixel_y = 10 }, -/area/fiorina/lz/near_lzI) -"pbS" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/surgical_tray/empty, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/servers) "pbV" = ( /obj/structure/platform/kutjevo/smooth{ dir = 1 @@ -24464,66 +25129,34 @@ }, /turf/open/space, /area/fiorina/oob) -"pbZ" = ( -/obj/item/trash/plate{ - pixel_x = 1; - pixel_y = 3 - }, +"pbX" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "blue" - }, -/area/fiorina/station/civres_blue) -"pcl" = ( -/obj/structure/machinery/shower{ - dir = 1; - pixel_y = -1 + icon_state = "red" }, -/turf/open/floor/prison{ - icon_state = "kitchen" +/area/fiorina/station/security) +"pca" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" }, -/area/fiorina/station/lowsec) +/turf/open/floor/prison, +/area/fiorina/station/power_ring) "pcu" = ( /turf/open/floor/almayer_hull, /area/fiorina/oob) -"pcD" = ( -/obj/structure/bookcase/manuals/engineering, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/tumor/civres) "pcK" = ( /obj/structure/surface/rack, /obj/item/reagent_container/food/drinks/cans/aspen, /obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating/prison, /area/fiorina/station/chapel) -"pdf" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 8 - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) -"pdm" = ( -/obj/structure/platform{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) -"pdw" = ( -/obj/item/stack/rods, +"pcN" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/tool, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/medbay) +/area/fiorina/station/research_cells) "pdB" = ( /obj/structure/machinery/light/double/blue{ dir = 1; @@ -24531,147 +25164,191 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/park) -"pdV" = ( -/obj/structure/machinery/shower{ - dir = 8 +"pdN" = ( +/obj/structure/machinery/disposal, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - icon_state = "kitchen" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) -"peh" = ( -/obj/structure/platform_decoration{ - dir = 4 +/area/fiorina/station/chapel) +"pdP" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"pdX" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "lavendergrass_1" }, -/obj/effect/decal/medical_decals{ - icon_state = "triagedecaldir" +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" }, +/area/fiorina/station/central_ring) +"pen" = ( +/obj/structure/bed/sofa/vert/grey/bot, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "green" }, -/area/fiorina/station/medbay) -"pes" = ( -/obj/structure/bed/chair, +/area/fiorina/station/transit_hub) +"peA" = ( +/obj/structure/machinery/computer/communications{ + dir = 4; + pixel_y = 5 + }, +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "greenfull" + }, +/area/fiorina/tumor/servers) +"peP" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 }, -/area/fiorina/station/power_ring) -"peY" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" + icon_state = "darkyellow2" }, -/area/fiorina/tumor/aux_engi) -"pfi" = ( -/obj/structure/monorail{ - dir = 6; - name = "launch track" +/area/fiorina/station/telecomm/lz1_cargo) +"pgb" = ( +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/ice_lab) +"pgx" = ( +/obj/structure/machinery/computer3/server/rack, +/obj/structure/window{ + dir = 8 }, -/turf/open/space, -/area/fiorina/oob) -"pfE" = ( -/obj/item/tool/wrench, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/lowsec) -"pfW" = ( -/obj/item/trash/cigbutt/cigarbutt, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"pgV" = ( -/obj/item/book/manual/atmospipes, +/area/fiorina/tumor/servers) +"pgQ" = ( /turf/open/floor/prison{ - dir = 9; - icon_state = "whitepurple" + dir = 10; + icon_state = "blue" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/chapel) "phe" = ( /obj/structure/girder, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"phg" = ( -/obj/effect/spawner/random/tool, +"pho" = ( +/obj/item/stack/sheet/wood, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "darkpurplefull2" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/research_cells) "phz" = ( /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"pie" = ( +"phC" = ( +/obj/item/newspaper, /turf/open/floor/prison{ - icon_state = "platingdmg3" + dir = 1; + icon_state = "whitegreen" }, -/area/fiorina/station/transit_hub) -"pip" = ( -/obj/structure/platform_decoration{ +/area/fiorina/tumor/ice_lab) +"phQ" = ( +/obj/structure/platform{ dir = 8 }, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"piy" = ( -/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison{ + dir = 8; + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) +"pim" = ( +/obj/structure/machinery/door/airlock/prison_hatch/autoname, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/lowsec) +"piw" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform_decoration{ + dir = 9 + }, +/obj/structure/platform{ + dir = 4 + }, /turf/open/floor/prison, /area/fiorina/lz/near_lzI) -"piL" = ( +"pjf" = ( +/obj/item/ammo_magazine/rifle/m16, +/obj/item/clothing/head/helmet/marine/veteran/ua_riot, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrowncorners2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/security) +"pjg" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "green" + }, +/area/fiorina/tumor/servers) +"pjE" = ( +/obj/structure/filingcabinet/filingcabinet{ + pixel_x = 8 + }, +/obj/structure/filingcabinet/filingcabinet{ + pixel_x = -8 + }, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) +"pjR" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/phone{ + pixel_x = 7; + pixel_y = -16 + }, +/obj/item/phone{ + pixel_x = -3; + pixel_y = 16 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/security) "pjT" = ( /obj/structure/surface/table/reinforced/prison, /obj/effect/landmark/objective_landmark/science, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"pka" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, +"pjW" = ( +/obj/effect/landmark/monkey_spawn, /turf/open/floor/prison{ - dir = 5; - icon_state = "whitepurple" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/research_cells) -"pkc" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/dropper, -/obj/item/attachable/bipod, +/area/fiorina/tumor/ice_lab) +"pkB" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" + dir = 4; + icon_state = "cell_stripe" }, /area/fiorina/lz/near_lzI) -"pkp" = ( -/obj/item/stack/cable_coil/cut, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"pkG" = ( -/obj/item/stool, -/turf/open/floor/prison{ - dir = 8; - icon_state = "blue" - }, -/area/fiorina/station/power_ring) "pkM" = ( /obj/structure/largecrate/machine, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"plc" = ( -/obj/structure/machinery/computer/arcade, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"plr" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, +"plh" = ( /turf/open/floor/prison{ - icon_state = "blue_plate" + dir = 10; + icon_state = "greenblue" }, /area/fiorina/station/botany) "plu" = ( @@ -24681,83 +25358,78 @@ "plK" = ( /turf/closed/wall/prison, /area/fiorina/station/security/wardens) -"pmg" = ( -/obj/structure/machinery/light/double/blue{ +"pma" = ( +/obj/structure/foamed_metal, +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) +"pmn" = ( +/obj/structure/surface/rack, +/obj/item/poster, +/obj/item/poster, +/turf/open/floor/prison{ dir = 1; - pixel_y = 21 + icon_state = "darkyellow2" }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"pmo" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "blue" - }, -/area/fiorina/station/power_ring) -"pmy" = ( -/obj/item/device/t_scanner, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/lz/near_lzI) +"pmv" = ( +/obj/structure/disposalpipe/segment{ + color = "#c4c4c4"; + dir = 2; + layer = 6; + name = "overhead pipe"; + pixel_x = -16; + pixel_y = 12 }, -/area/fiorina/station/civres_blue) -"pmM" = ( -/obj/structure/largecrate/random/case/double, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "darkpurple2" }, -/area/fiorina/station/park) -"pnc" = ( -/obj/structure/largecrate/random/case/double, -/obj/effect/decal/medical_decals{ - icon_state = "triagedecalbottom" +/area/fiorina/tumor/servers) +"pmC" = ( +/obj/effect/decal{ + icon = 'icons/obj/items/policetape.dmi'; + icon_state = "engineering_v" }, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "darkyellow2" }, -/area/fiorina/station/medbay) -"pnv" = ( -/obj/structure/reagent_dispensers/watertank, +/area/fiorina/station/telecomm/lz1_cargo) +"pnh" = ( /turf/open/floor/prison{ - dir = 6; - icon_state = "greenblue" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/station/botany) -"pnA" = ( -/obj/item/toy/handcard/uno_reverse_blue, +/area/fiorina/tumor/servers) +"pnx" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"pnP" = ( +/obj/effect/landmark/corpsespawner/ua_riot, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/lowsec) "pnS" = ( /obj/structure/surface/table/reinforced/prison, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/tumor/servers) -"poo" = ( -/obj/item/tool/crowbar/red, +"poC" = ( +/obj/structure/machinery/photocopier, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrown2" - }, -/area/fiorina/tumor/aux_engi) -"poD" = ( -/obj/structure/stairs/perspective{ - dir = 9; - icon_state = "p_stair_full" + icon_state = "darkredfull2" }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"ppb" = ( -/obj/structure/bed/chair{ - dir = 4 +/area/fiorina/station/research_cells) +"ppq" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_29"; + pixel_y = 10 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "redfull" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/security) "ppG" = ( /obj/item/stack/rods/plasteel, /turf/open/floor/plating/prison, @@ -24768,26 +25440,17 @@ }, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"ppK" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/donut_box{ - pixel_y = 6 - }, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) -"ppO" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 - }, +"ppQ" = ( +/obj/item/storage/briefcase, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) +"ppS" = ( +/obj/structure/bed/sofa/vert/grey/top, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" + dir = 1; + icon_state = "green" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/transit_hub) "ppX" = ( /obj/structure/closet/secure_closet/medical2{ req_access_txt = "100" @@ -24797,29 +25460,13 @@ icon_state = "squares" }, /area/fiorina/station/medbay) -"ppY" = ( -/obj/structure/barricade/sandbags{ - dir = 4; - icon_state = "sandbag_0"; - pixel_y = 2 - }, -/obj/item/storage/pouch/tools/full, +"ppZ" = ( +/obj/structure/machinery/vending/cigarette/colony, /turf/open/floor/prison{ dir = 10; - icon_state = "yellow" - }, -/area/fiorina/station/disco) -"pqq" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/tool, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "whitegreenfull" }, -/area/fiorina/station/transit_hub) +/area/fiorina/tumor/ice_lab) "pqz" = ( /obj/item/clothing/suit/storage/labcoat, /turf/open/organic/grass{ @@ -24830,19 +25477,18 @@ /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"pqG" = ( -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 - }, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/station/research_cells) "pqO" = ( /turf/closed/shuttle/ert{ icon_state = "stan20" }, /area/fiorina/tumor/ship) +"pqY" = ( +/obj/structure/monorail{ + dir = 9; + name = "launch track" + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) "prh" = ( /obj/structure/girder/reinforced, /turf/open/floor/almayer{ @@ -24850,127 +25496,170 @@ icon_state = "plating" }, /area/fiorina/tumor/ship) -"pri" = ( -/obj/structure/machinery/space_heater, +"prC" = ( +/obj/structure/machinery/autolathe/medilathe/full, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/fiberbush) -"pry" = ( -/obj/structure/prop/resin_prop{ - icon_state = "coolanttank" +/area/fiorina/station/medbay) +"prG" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/surface/rack, +/obj/item/stack/flag/yellow, +/obj/item/stack/flag/yellow, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"prL" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/space_heater{ + pixel_x = -1; + pixel_y = 9 }, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + dir = 10; + icon_state = "blue" }, -/area/fiorina/tumor/aux_engi) -"prP" = ( +/area/fiorina/station/power_ring) +"pse" = ( +/obj/item/weapon/gun/rifle/m16, +/obj/item/ammo_casing{ + dir = 6; + icon_state = "casing_5" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"psm" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison, +/area/fiorina/station/security) +"pst" = ( +/obj/structure/barricade/handrail{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) +"psx" = ( +/obj/structure/platform, /turf/open/floor/prison{ dir = 8; icon_state = "cell_stripe" }, -/area/fiorina/station/power_ring) -"pso" = ( -/obj/structure/platform{ - dir = 1 +/area/fiorina/station/botany) +"psL" = ( +/obj/structure/machinery/optable{ + desc = "This maybe could be used for advanced medical procedures."; + name = "Exam Table" }, -/obj/structure/platform{ - dir = 8 +/obj/item/bedsheet/ce{ + desc = "It crinkles, aggressively."; + name = "sterile wax sheet" }, -/obj/structure/platform_decoration{ - dir = 5 +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - dir = 9; - icon_state = "whitegreen" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/ice_lab) -"psO" = ( -/obj/structure/disposalpipe/segment{ - color = "#c4c4c4"; - dir = 2; - layer = 6; - name = "overhead pipe"; - pixel_x = -16; - pixel_y = 12 +/area/fiorina/station/medbay) +"psP" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 }, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) "pte" = ( /obj/structure/extinguisher_cabinet, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/power_ring) -"pty" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, +"pti" = ( +/obj/structure/machinery/vending/dinnerware, /turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) +"ptH" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/sink{ dir = 4; - icon_state = "greenfull" + pixel_x = 11 }, -/area/fiorina/tumor/civres) -"ptV" = ( -/obj/vehicle/train/cargo/trolley, +/obj/item/clothing/gloves/latex, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/transit_hub) -"ptZ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/pill_bottle/russianRed{ - pixel_y = 9 + icon_state = "redfull" }, -/obj/item/storage/pill_bottle/kelotane/skillless, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) +/area/fiorina/station/medbay) "puw" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/plating/prison, /area/fiorina/station/chapel) -"puB" = ( -/obj/structure/barricade/metal/wired{ - dir = 8 - }, +"puE" = ( +/turf/open/floor/plating/prison, +/area/fiorina/station/telecomm/lz1_cargo) +"pvi" = ( +/obj/item/ammo_box/magazine/M16, /obj/item/stack/sheet/metal{ amount = 5 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + dir = 4; + icon_state = "darkyellow2" }, -/area/fiorina/station/telecomm/lz1_cargo) -"puE" = ( -/turf/open/floor/plating/prison, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/lz/near_lzI) +"pvz" = ( +/obj/structure/janitorialcart, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) "pvD" = ( /turf/closed/wall/r_wall/prison_unmeltable{ desc = "A huge chunk of metal used to seperate rooms."; name = "metal wall" }, /area/fiorina/oob) -"pvT" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_sn_full_cap" +"pvE" = ( +/obj/item/clothing/under/color/orange, +/turf/open/floor/prison{ + icon_state = "yellowfull" }, +/area/fiorina/station/lowsec) +"pvF" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "whitegreencorner" }, /area/fiorina/tumor/ice_lab) -"pwg" = ( -/obj/structure/platform/stair_cut/alt, -/obj/structure/stairs/perspective{ - icon_state = "p_stair_ew_full_cap" +"pwo" = ( +/obj/structure/bed/chair/comfy{ + dir = 1 }, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) -"pwi" = ( -/obj/structure/platform{ - dir = 4 +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkyellow2" }, +/area/fiorina/station/flight_deck) +"pwC" = ( +/obj/effect/spawner/random/gun/rifle/highchance, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "damaged3" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/security) "pwL" = ( /obj/item/stack/tile/plasteel{ pixel_x = 12; @@ -24978,18 +25667,12 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"pwN" = ( -/obj/structure/barricade/handrail/type_b, +"pxf" = ( +/obj/structure/machinery/vending/snack, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/disco) -"pxa" = ( -/obj/item/circuitboard/machine/rdserver, -/turf/open/floor/prison{ - icon_state = "floorscorched1" - }, -/area/fiorina/tumor/servers) +/area/fiorina/station/flight_deck) "pxk" = ( /obj/structure/closet/cabinet, /obj/item/reagent_container/pill/cyanide, @@ -24997,58 +25680,43 @@ /obj/item/reagent_container/syringe, /turf/open/floor/wood, /area/fiorina/station/civres_blue) -"pxu" = ( -/obj/structure/machinery/vending/cola, +"pxr" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/donut_box{ + pixel_y = 6 + }, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "redfull" }, -/area/fiorina/tumor/aux_engi) -"pxI" = ( -/obj/item/reagent_container/food/snacks/eat_bar, +/area/fiorina/station/security) +"pxL" = ( /turf/open/floor/prison{ dir = 4; - icon_state = "whitegreen" + icon_state = "darkbrown2" }, -/area/fiorina/station/medbay) -"pxR" = ( -/obj/structure/closet/crate/trashcart, +/area/fiorina/maintenance) +"pxW" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, +/obj/item/tool/pickaxe, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "whitegreen" }, -/area/fiorina/station/chapel) -"pya" = ( -/obj/effect/spawner/random/tool, +/area/fiorina/tumor/ice_lab) +"pxX" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/prison{ - dir = 1; + dir = 6; icon_state = "whitepurple" }, /area/fiorina/station/research_cells) -"pyv" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/tumor/servers) "pyK" = ( /obj/structure/machinery/door/airlock/multi_tile/elevator/freight, /turf/open/floor/corsat{ icon_state = "plate" }, /area/fiorina/tumor/aux_engi) -"pyW" = ( -/obj/structure/closet/secure_closet/freezer/fridge/groceries, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/fiorina/tumor/civres) "pzh" = ( /obj/item/toy/beach_ball, /turf/open/gm/river{ @@ -25056,102 +25724,44 @@ name = "pool" }, /area/fiorina/station/park) -"pzG" = ( +"pzE" = ( /obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" - }, -/area/fiorina/station/power_ring) -"pzN" = ( -/obj/structure/closet{ - density = 0; - pixel_y = 18 - }, -/obj/item/stool, -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/lowsec) -"pzQ" = ( -/obj/item/paper, -/obj/structure/inflatable/door, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/station/research_cells) -"pzV" = ( -/obj/item/ammo_box/magazine/M16, -/obj/item/stack/sheet/metal{ - amount = 5 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" - }, -/area/fiorina/lz/near_lzI) -"pAe" = ( -/obj/structure/bed/chair/office/dark, /turf/open/floor/prison{ icon_state = "whitegreen" }, -/area/fiorina/tumor/ice_lab) -"pAt" = ( -/obj/effect/decal{ - icon = 'icons/obj/items/policetape.dmi'; - icon_state = "engineering_h"; - layer = 2.5; - pixel_y = -11 - }, -/obj/item/stack/sheet/metal{ - amount = 5 - }, +/area/fiorina/station/medbay) +"pzL" = ( +/obj/item/ammo_magazine/m56d, +/obj/item/ammo_magazine/m56d, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" - }, -/area/fiorina/station/flight_deck) -"pAB" = ( -/obj/structure/machinery/light/double/blue{ dir = 4; - pixel_x = 10; - pixel_y = 13 + icon_state = "cell_stripe" }, +/area/fiorina/station/central_ring) +"pAl" = ( +/obj/structure/reagent_dispensers/watertank, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/flight_deck) -"pAN" = ( -/obj/structure/machinery/landinglight/ds1{ - dir = 1 + dir = 8; + icon_state = "blue_plate" }, +/area/fiorina/station/botany) +"pAr" = ( +/obj/structure/largecrate/random, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/lz/near_lzI) -"pAO" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" + icon_state = "darkbrownfull2" }, -/obj/structure/platform, -/turf/open/floor/plating/prison, /area/fiorina/station/park) -"pBg" = ( -/obj/structure/surface/rack, -/obj/item/storage/toolbox/electrical, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/aux_engi) -"pBn" = ( -/obj/structure/surface/rack, +"pBb" = ( +/obj/structure/curtain/open/black, +/turf/open/floor/prison, +/area/fiorina/maintenance) +"pBe" = ( +/obj/effect/spawner/random/tool, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 4; + icon_state = "green" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/chapel) "pBq" = ( /obj/structure/largecrate/random/barrel/white, /turf/open/floor/plating/prison, @@ -25172,6 +25782,13 @@ }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzII) +"pBW" = ( +/obj/structure/largecrate/supply/floodlights, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) "pCc" = ( /obj/structure/ice/thin/indestructible{ dir = 8; @@ -25184,115 +25801,66 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/tumor/ice_lab) -"pCF" = ( -/obj/structure/lz_sign/prison_sign, +"pCG" = ( +/obj/structure/largecrate/random/case, /turf/open/floor/prison, /area/fiorina/lz/near_lzI) -"pCN" = ( -/obj/structure/toilet{ - dir = 1 - }, -/turf/open/floor/prison{ +"pCH" = ( +/obj/structure/monorail{ dir = 10; - icon_state = "kitchen" + name = "launch track" }, -/area/fiorina/tumor/civres) -"pCS" = ( -/obj/structure/platform_decoration, -/turf/open/floor/prison, +/turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) +"pCQ" = ( +/obj/structure/closet{ + density = 0; + pixel_y = 18 + }, +/obj/item/stool{ + pixel_x = 4; + pixel_y = 6 + }, +/turf/open/floor/prison{ + icon_state = "yellowfull" + }, +/area/fiorina/station/lowsec) "pCX" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"pCZ" = ( -/obj/structure/machinery/vending/cola, +"pDo" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic/autoname{ + icon = 'icons/obj/structures/doors/2x1prepdoor_charlie.dmi' + }, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/security) -"pDg" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" +/area/fiorina/station/research_cells) +"pDQ" = ( +/obj/structure/bed/sofa/south/grey/right, +/turf/open/floor/prison{ + icon_state = "redfull" }, -/turf/open/floor/plating/prison, -/area/fiorina/station/botany) -"pDH" = ( -/obj/effect/decal/cleanable/blood, -/obj/effect/spawner/random/gun/rifle/highchance, -/turf/open/floor/prison, /area/fiorina/station/security) -"pDV" = ( -/obj/structure/bed{ - icon_state = "abed" - }, +"pEt" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"pEe" = ( -/obj/structure/largecrate/random, -/obj/item/reagent_container/food/drinks/coffee{ - pixel_y = 13 + dir = 9; + icon_state = "darkbrown2" }, +/area/fiorina/maintenance) +"pFc" = ( +/obj/structure/machinery/vending/snack, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreen" + icon_state = "floor_plate" }, /area/fiorina/station/medbay) -"pEw" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" +"pFi" = ( +/obj/structure/platform_decoration{ + dir = 8 }, -/area/fiorina/station/telecomm/lz1_tram) -"pEL" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/obj/effect/spawner/random/gun/smg/lowchance, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/station/research_cells) -"pER" = ( -/obj/structure/closet/secure_closet/engineering_materials, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/tumor/aux_engi) -"pEY" = ( -/obj/structure/barricade/sandbags{ - dir = 4; - icon_state = "sandbag_0"; - pixel_y = 2 - }, -/obj/structure/barricade/sandbags{ - icon_state = "sandbag_0"; - pixel_y = -14 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/flight_deck) -"pFg" = ( -/obj/structure/bed{ - icon_state = "abed" - }, -/obj/item/reagent_container/food/snacks/wrapped/barcardine, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/station/research_cells) -"pFi" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk/prison, +/turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/telecomm/lz1_tram) "pFA" = ( /obj/item/storage/toolbox/emergency, @@ -25313,37 +25881,21 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/tumor/ice_lab) -"pFY" = ( -/obj/structure/largecrate/supply/supplies/mre, -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/lowsec) -"pGf" = ( -/obj/structure/platform{ - dir = 8 +"pFW" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/obj/item/prop/almayer/handheld1, -/obj/structure/surface/rack, /turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"pGg" = ( -/obj/structure/largecrate/random, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/tumor/aux_engi) -"pGi" = ( -/turf/open/floor/prison{ - icon_state = "darkyellow2" - }, -/area/fiorina/station/telecomm/lz1_tram) -"pGv" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_marked" +/area/fiorina/station/power_ring) +"pGy" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_ew_full_cap" }, -/area/fiorina/lz/near_lzII) +/obj/structure/platform/stair_cut, +/turf/open/floor/plating/prison, +/area/fiorina/station/botany) "pGH" = ( /turf/closed/shuttle/ert{ icon_state = "stan_white_t_up" @@ -25357,10 +25909,13 @@ name = "pool" }, /area/fiorina/station/park) -"pHc" = ( -/obj/effect/landmark/objective_landmark/close, +"pGS" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "yellowfull" }, /area/fiorina/station/lowsec) "pHh" = ( @@ -25375,28 +25930,29 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/tumor/ice_lab) -"pHu" = ( -/turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"pIi" = ( -/obj/structure/machinery/space_heater, -/obj/structure/platform{ +"pHi" = ( +/obj/structure/window/reinforced{ dir = 4 }, +/obj/structure/machinery/space_heater, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" + icon_state = "floor_plate" }, /area/fiorina/tumor/ice_lab) -"pIo" = ( -/obj/structure/machinery/light/double/blue, +"pHx" = ( +/obj/structure/barricade/metal/wired{ + dir = 4 + }, +/obj/item/device/flashlight/lamp/tripod, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, /turf/open/floor/prison{ - icon_state = "blue" + dir = 1; + icon_state = "yellow" }, -/area/fiorina/station/chapel) +/area/fiorina/station/lowsec) "pIs" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 4 @@ -25416,68 +25972,55 @@ /obj/item/reagent_container/food/snacks/grown/apple/poisoned, /turf/open/floor/wood, /area/fiorina/station/park) -"pIK" = ( -/obj/structure/platform, -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) -"pIX" = ( -/obj/structure/inflatable/door, +"pIw" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"pJa" = ( -/obj/structure/bed/chair/office/light{ +/area/fiorina/tumor/civres) +"pIA" = ( +/obj/structure/prop/structure_lattice{ dir = 4 }, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"pJo" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 }, -/area/fiorina/lz/near_lzI) +/turf/open/floor/prison, +/area/fiorina/station/park) +"pJc" = ( +/turf/open/floor/wood, +/area/fiorina/maintenance) "pJK" = ( /obj/structure/surface/rack, /obj/item/reagent_container/glass/bucket/mopbucket, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"pKd" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/ashtray/plastic, +"pJP" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "panelscorched" }, -/area/fiorina/station/medbay) -"pKh" = ( -/obj/item/stool{ - pixel_x = -4; +/area/fiorina/station/chapel) +"pKf" = ( +/obj/structure/machinery/washing_machine, +/obj/item/clothing/head/that{ pixel_y = 10 }, -/obj/structure/sign/poster{ - icon_state = "poster1"; - pixel_y = 32 +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" + icon_state = "sterile_white" }, -/area/fiorina/station/lowsec) -"pKz" = ( -/obj/structure/largecrate/random/barrel/blue, +/area/fiorina/station/civres_blue) +"pKu" = ( +/obj/item/tool/wet_sign, /turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/disco) +/area/fiorina/tumor/servers) "pKJ" = ( /obj/structure/flora/grass/tallgrass/jungle/corner, /obj/structure/barricade/wooden{ @@ -25491,50 +26034,69 @@ name = "astroturf" }, /area/fiorina/station/park) +"pKO" = ( +/obj/effect/decal/hefa_cult_decals/d32{ + icon_state = "2" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/servers) "pKY" = ( /obj/structure/cable/heavyduty{ icon_state = "2-4" }, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"pLh" = ( -/obj/structure/bed/sofa/vert/grey/bot, +"pLj" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"pLE" = ( +/obj/structure/machinery/washing_machine, +/obj/structure/machinery/washing_machine{ + pixel_y = 15 + }, /turf/open/floor/prison{ - icon_state = "green" + icon_state = "yellowfull" }, -/area/fiorina/station/transit_hub) -"pLk" = ( -/obj/structure/machinery/door/airlock/prison/horizontal, +/area/fiorina/station/lowsec) +"pLM" = ( +/obj/item/trash/cigbutt, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 8; + icon_state = "blue" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/power_ring) "pLQ" = ( /obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) -"pMA" = ( -/obj/structure/filingcabinet{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/structure/filingcabinet{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, +"pLS" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 8; + icon_state = "greencorner" }, -/area/fiorina/station/power_ring) +/area/fiorina/tumor/aux_engi) "pNj" = ( /obj/structure/bookcase, /turf/open/floor/carpet, /area/fiorina/station/civres_blue) +"pNG" = ( +/obj/structure/closet/crate/science{ + density = 0; + icon_state = "open_science"; + opened = 1 + }, +/obj/item/organ/eyes, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/prison, +/area/fiorina/station/medbay) "pNI" = ( /obj/item/stack/tile/plasteel{ pixel_x = 3; @@ -25542,48 +26104,27 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"pNV" = ( -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreencorner" - }, -/area/fiorina/station/medbay) -"pOd" = ( -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/flight_deck) -"pOm" = ( -/obj/effect/spawner/random/toolbox, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/tumor/aux_engi) -"pON" = ( -/obj/structure/closet, -/obj/item/storage/backpack/clown, -/obj/item/toy/bikehorn, -/turf/open/floor/prison{ +"pOU" = ( +/obj/structure/machinery/light/double/blue{ dir = 4; - icon_state = "bluecorner" - }, -/area/fiorina/station/power_ring) -"pPb" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + pixel_x = 10; + pixel_y = -3 }, -/area/fiorina/oob) +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "pPd" = ( /obj/structure/prop/resin_prop{ icon_state = "coolanttank" }, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"pPf" = ( -/obj/structure/bed/sofa/vert/grey/top, -/turf/open/floor/prison, -/area/fiorina/station/security) +"pPo" = ( +/obj/effect/landmark/corpsespawner/ua_riot/burst, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkpurple2" + }, +/area/fiorina/tumor/servers) "pPG" = ( /obj/structure/disposalpipe/segment{ color = "#c4c4c4"; @@ -25594,63 +26135,55 @@ }, /turf/closed/wall/prison, /area/fiorina/tumor/servers) -"pPQ" = ( -/obj/item/shard{ - icon_state = "medium"; - name = "ice shard" - }, -/obj/structure/platform{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) -"pQb" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/ammo_magazine/rifle/m16{ - current_rounds = 0 - }, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"pQh" = ( -/obj/item/trash/liquidfood, +"pQc" = ( +/obj/structure/closet/basketball, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "sterile_white" }, -/area/fiorina/tumor/ice_lab) -"pQq" = ( -/obj/item/tool/warning_cone, +/area/fiorina/station/research_cells) +"pQs" = ( +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) +"pQz" = ( /turf/open/floor/prison{ - icon_state = "yellowfull" + dir = 8; + icon_state = "bluecorner" }, -/area/fiorina/station/lowsec) -"pQu" = ( -/obj/structure/holohoop{ - dir = 1 +/area/fiorina/station/civres_blue) +"pRa" = ( +/obj/structure/bed{ + icon_state = "abed" }, /turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" + dir = 9; + icon_state = "whitepurple" }, -/area/fiorina/station/lowsec) -"pQD" = ( -/obj/structure/window/reinforced{ - dir = 1 +/area/fiorina/station/research_cells) +"pRp" = ( +/obj/structure/platform, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/station/transit_hub) +"pRx" = ( +/obj/structure/largecrate/random/barrel/white, /turf/open/floor/prison, -/area/fiorina/station/medbay) -"pRn" = ( -/obj/item/paper/crumpled, +/area/fiorina/station/power_ring) +"pRz" = ( /turf/open/floor/prison{ dir = 10; - icon_state = "kitchen" + icon_state = "red" }, -/area/fiorina/tumor/civres) +/area/fiorina/station/power_ring) +"pRD" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "bluecorner" + }, +/area/fiorina/station/power_ring) "pRG" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, @@ -25659,23 +26192,24 @@ /obj/item/weapon/wirerod, /turf/open/floor/plating/prison, /area/fiorina/tumor/fiberbush) -"pSm" = ( -/obj/structure/filingcabinet/filingcabinet{ - pixel_x = 8 - }, -/obj/structure/filingcabinet/filingcabinet{ - pixel_x = -8 - }, -/obj/effect/landmark/objective_landmark/science, +"pSr" = ( +/obj/structure/pipes/standard/manifold/visible, /turf/open/floor/prison{ dir = 10; icon_state = "sterile_white" }, /area/fiorina/station/medbay) -"pSJ" = ( -/obj/effect/landmark/corpsespawner/pmc, -/turf/open/floor/wood, -/area/fiorina/maintenance) +"pSs" = ( +/obj/item/ammo_box/magazine/misc/flares{ + layer = 3.1; + pixel_y = 16 + }, +/obj/structure/largecrate/random/secure, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) "pSU" = ( /obj/structure/surface/table/woodentable/fancy, /obj/structure/machinery/computer/med_data/laptop, @@ -25684,14 +26218,6 @@ "pTj" = ( /turf/open/floor/plating/prison, /area/fiorina/station/security) -"pTA" = ( -/obj/structure/toilet{ - dir = 4 - }, -/turf/open/floor/prison{ - icon_state = "sterile_white" - }, -/area/fiorina/station/civres_blue) "pTR" = ( /obj/structure/machinery/light/double/blue{ dir = 1; @@ -25704,42 +26230,61 @@ dir = 5 }, /area/fiorina/station/telecomm/lz1_cargo) -"pUS" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/ashtray/plastic, -/obj/item/clothing/mask/cigarette, -/obj/item/trash/cigbutt/ucigbutt{ - pixel_y = 8 +"pUf" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 }, -/obj/structure/sign/nosmoking_1{ - pixel_y = 30 +/obj/structure/platform_decoration, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/disco) +"pUo" = ( +/obj/structure/platform, +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 }, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "floor_plate" + }, +/area/fiorina/station/disco) +"pUG" = ( +/obj/item/stack/rods, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/security) -"pVq" = ( -/turf/open/floor/prison, /area/fiorina/station/research_cells) -"pVv" = ( -/obj/structure/platform{ - dir = 1 +"pUO" = ( +/obj/item/trash/boonie, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"pVw" = ( -/obj/structure/mirror{ - pixel_x = -32 +/area/fiorina/tumor/ice_lab) +"pVc" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12 +/turf/open/floor/wood, +/area/fiorina/station/civres_blue) +"pVk" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" + dir = 1; + icon_state = "darkyellow2" }, -/area/fiorina/tumor/civres) +/area/fiorina/lz/near_lzI) +"pVD" = ( +/obj/structure/window/framed/prison, +/turf/open/floor/prison{ + dir = 1; + icon_state = "blue_plate" + }, +/area/fiorina/station/botany) "pVR" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/storage/bible/hefa{ @@ -25748,24 +26293,31 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/wood, /area/fiorina/station/chapel) -"pWm" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/beer_pack{ - pixel_y = 7 - }, +"pVY" = ( +/obj/item/stack/sheet/mineral/plastic, /turf/open/floor/prison{ - icon_state = "yellowfull" + dir = 9; + icon_state = "yellow" }, /area/fiorina/station/lowsec) +"pWc" = ( +/obj/item/tool/crowbar/red, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/flight_deck) +"pWl" = ( +/obj/structure/machinery/power/geothermal, +/turf/open/floor/prison{ + dir = 1; + icon_state = "bluecorner" + }, +/area/fiorina/station/power_ring) "pWp" = ( /turf/closed/shuttle/ert{ icon_state = "stan8" }, /area/fiorina/tumor/ship) -"pWH" = ( -/obj/item/clipboard, -/turf/open/floor/prison, -/area/fiorina/station/park) "pWO" = ( /obj/item/stack/rods, /obj/structure/cable/heavyduty{ @@ -25773,22 +26325,39 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"pXj" = ( -/obj/item/tool/wet_sign, -/turf/open/floor/prison, -/area/fiorina/station/disco) +"pWX" = ( +/obj/item/ammo_casing{ + icon_state = "casing_5" + }, +/obj/item/clothing/suit/armor/vest/security, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) +"pXt" = ( +/obj/item/reagent_container/food/snacks/wrapped/booniebars, +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" + }, +/area/fiorina/tumor/civres) "pXH" = ( /obj/item/device/flashlight/lamp/tripod, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz1_tram) -"pXP" = ( -/obj/structure/bed/sofa/vert/grey/top, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"pXJ" = ( +/obj/effect/decal{ + icon = 'icons/obj/items/policetape.dmi'; + icon_state = "engineering_h"; + layer = 2.5; + pixel_y = -11 }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/fiorina/station/telecomm/lz1_cargo) "pXY" = ( /obj/structure/bookcase{ icon_state = "book-5" @@ -25801,43 +26370,33 @@ }, /turf/open/floor/wood, /area/fiorina/station/chapel) -"pYh" = ( -/obj/structure/largecrate/random, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"pYp" = ( -/obj/item/stack/sandbags/large_stack, +"pYz" = ( +/obj/structure/closet/emcloset, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/telecomm/lz1_cargo) -"pYI" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/storage/bible/hefa, +/area/fiorina/maintenance) +"pYB" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" + icon_state = "bluefull" }, -/area/fiorina/station/chapel) -"pYO" = ( -/obj/effect/landmark/survivor_spawner, -/turf/open/floor/prison{ - icon_state = "darkyellowcorners2" +/area/fiorina/station/power_ring) +"pYD" = ( +/obj/structure/monorail{ + dir = 5; + name = "launch track" }, -/area/fiorina/station/telecomm/lz1_cargo) -"pYW" = ( -/obj/item/tool/weldingtool/hugetank, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"pYL" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, -/area/fiorina/tumor/aux_engi) -"pZb" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "yellowcorner" + icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/botany) "pZm" = ( /obj/structure/machinery/light/small{ dir = 8; @@ -25852,14 +26411,36 @@ }, /turf/open/floor/plating/prison, /area/fiorina/oob) -"qam" = ( -/obj/structure/machinery/light/double/blue, +"pZn" = ( /turf/open/floor/prison{ - icon_state = "blue" + dir = 8; + icon_state = "yellowcorner" }, -/area/fiorina/station/civres_blue) -"qaO" = ( -/obj/structure/barricade/handrail/type_b{ +/area/fiorina/station/lowsec) +"pZp" = ( +/obj/item/tool/soap, +/obj/structure/machinery/shower{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/fiorina/station/research_cells) +"qaA" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/clipboard, +/turf/open/floor/prison{ + icon_state = "darkpurple2" + }, +/area/fiorina/tumor/servers) +"qaL" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) +"qaO" = ( +/obj/structure/barricade/handrail/type_b{ layer = 3.5 }, /obj/effect/decal/cleanable/blood, @@ -25869,6 +26450,14 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) +"qaT" = ( +/obj/structure/machinery/door/airlock/prison_hatch/autoname{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) "qbd" = ( /obj/structure/flora/bush/ausbushes/ausbush{ desc = "Fiberbush(tm) infestations are the leading cause in asbestos related deaths for 3 years in a row."; @@ -25880,30 +26469,32 @@ "qbl" = ( /turf/open/auto_turf/sand/layer1, /area/fiorina/lz/near_lzII) -"qbu" = ( -/obj/structure/bed/chair/office/dark{ - dir = 4 +"qbn" = ( +/obj/structure/barricade/wooden{ + dir = 8 }, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "floor_plate" }, -/area/fiorina/station/security) -"qbD" = ( +/area/fiorina/maintenance) +"qby" = ( +/obj/item/stack/sheet/metal{ + amount = 5 + }, +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_cargo) +"qbI" = ( +/obj/structure/surface/table/reinforced/prison, /obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" + pixel_y = 9 }, +/turf/open/floor/prison, +/area/fiorina/station/security) +"qbR" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/fiorina/station/transit_hub) -"qbT" = ( -/obj/item/trash/used_stasis_bag{ - desc = "Wow, instant sand. They really have everything in space."; - name = "Insta-Sand! bag" + icon_state = "kitchen" }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/power_ring) "qbW" = ( /obj/item/tool/candle{ pixel_x = -6; @@ -25918,73 +26509,67 @@ /obj/item/stack/catwalk, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"qcv" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "yellow" - }, -/area/fiorina/lz/near_lzII) -"qcK" = ( -/obj/effect/landmark/railgun_camera_pos, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"qcM" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/skills{ +"qcy" = ( +/obj/structure/barricade/wooden{ dir = 4 }, /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 10; + icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"qcT" = ( -/obj/structure/barricade/metal/wired{ - dir = 8 +/area/fiorina/station/telecomm/lz1_cargo) +"qcX" = ( +/obj/structure/machinery/vending/snack/packaged, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/park) "qdd" = ( /obj/structure/grille, /obj/structure/lattice, /turf/open/space/basic, /area/fiorina/oob) -"qdB" = ( -/obj/structure/largecrate/random/secure, +"qdf" = ( +/obj/item/reagent_container/food/drinks/cans/waterbottle, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) +"qdC" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/tumor/civres) +"qdE" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/tool/pen, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "redfull" }, /area/fiorina/station/security) "qdJ" = ( /obj/structure/window/framed/prison/reinforced, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"qeh" = ( -/obj/structure/bed/chair/comfy{ - dir = 1 - }, -/turf/open/floor/prison, -/area/fiorina/station/security/wardens) -"qeu" = ( -/obj/structure/toilet{ - pixel_y = 4 +"qes" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" }, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 8; + icon_state = "darkyellow2" }, -/area/fiorina/station/medbay) -"qew" = ( -/obj/structure/disposalpipe/segment{ - color = "#c4c4c4"; - dir = 2; - layer = 6; - name = "overhead pipe"; - pixel_x = -16; - pixel_y = 12 +/area/fiorina/station/telecomm/lz1_tram) +"qet" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) +/area/fiorina/station/security) "qeC" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/window/reinforced{ @@ -26001,18 +26586,23 @@ /obj/effect/spawner/random/pills/highchance, /turf/open/floor/plating/prison, /area/fiorina/station/security/wardens) -"qeU" = ( -/obj/structure/window/reinforced{ - dir = 8; - health = 80 +"qeN" = ( +/obj/structure/largecrate/supply/supplies/water, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"qeR" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/structure/bed/chair{ + dir = 4; + pixel_y = 4 }, -/obj/structure/filingcabinet, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_marked" }, -/area/fiorina/station/medbay) +/area/fiorina/station/park) "qeX" = ( /obj/structure/surface/table/reinforced/prison{ flipped = 1 @@ -26030,32 +26620,17 @@ }, /turf/open/gm/river/desert/deep, /area/fiorina/lz/near_lzII) -"qfu" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/prison{ - dir = 6; - icon_state = "whitepurple" - }, -/area/fiorina/oob) -"qfI" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"qfU" = ( +"qfg" = ( +/obj/effect/landmark/monkey_spawn, +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) +"qfi" = ( +/obj/structure/closet/secure_closet/personal, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenblue" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/botany) +/area/fiorina/station/telecomm/lz1_cargo) "qgd" = ( /obj/item/explosive/grenade/incendiary/molotov{ pixel_x = 8; @@ -26063,13 +26638,6 @@ }, /turf/open/space/basic, /area/fiorina/oob) -"qgh" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/book/manual/surgery, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/medbay) "qgi" = ( /obj/structure/disposalpipe/segment{ color = "#c4c4c4"; @@ -26080,33 +26648,28 @@ }, /turf/closed/wall/mineral/bone_resin, /area/fiorina/tumor/civres) -"qgq" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/tool/kitchen/utensil/knife{ - pixel_x = 9 - }, -/obj/item/reagent_container/food/snacks/tomatomeat{ - pixel_x = -6 +"qgk" = ( +/obj/structure/barricade/metal/wired{ + dir = 1 }, -/obj/item/reagent_container/food/snacks/tomatomeat{ - pixel_x = -6; - pixel_y = 3 +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkyellow2" }, -/obj/item/reagent_container/food/snacks/tomatomeat{ - pixel_x = -6; - pixel_y = 6 +/area/fiorina/lz/near_lzI) +"qgv" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/tool/surgery/scalpel/laser{ + pixel_x = -5; + pixel_y = 12 }, -/turf/open/floor/prison{ - dir = 6; - icon_state = "blue" +/obj/item/tool/surgery/circular_saw{ + pixel_y = -2 }, -/area/fiorina/station/power_ring) -"qgA" = ( -/obj/effect/landmark/corpsespawner/ua_riot, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "floor_plate" }, -/area/fiorina/station/security) +/area/fiorina/station/telecomm/lz1_cargo) "qgB" = ( /obj/item/clothing/gloves/rainbow, /turf/open/floor/plating/prison, @@ -26115,238 +26678,190 @@ /obj/item/reagent_container/food/drinks/golden_cup, /turf/open/space, /area/fiorina/oob) -"qgS" = ( -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 - }, -/obj/item/stack/barbed_wire, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"qhB" = ( -/obj/effect/decal/cleanable/blood, -/obj/item/trash/kepler, -/turf/open/floor/prison, -/area/fiorina/station/security) -"qiq" = ( -/obj/item/trash/cigbutt, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/aux_engi) -"qit" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" - }, -/obj/structure/platform, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"qjc" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/park) -"qjg" = ( -/obj/item/tool/shovel/etool, +"qhk" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/civres_blue) -"qjp" = ( -/obj/structure/prop/almayer/computers/mission_planning_system{ - density = 0; - desc = "Its a telephone, and a computer. Woah."; - name = "\improper funny telephone booth"; - pixel_x = 2; - pixel_y = 21 - }, -/obj/structure/prop/almayer/computers/mission_planning_system{ - density = 0; - desc = "Its a telephone, and a computer. Woah."; - name = "\improper funny telephone booth"; - pixel_x = 2; - pixel_y = 21 + dir = 6; + icon_state = "darkbrown2" }, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"qjC" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" +/area/fiorina/station/park) +"qhC" = ( +/obj/effect/decal/cleanable/blood/splatter{ + icon_state = "gib2" }, -/obj/structure/platform, -/turf/open/floor/plating/prison, -/area/fiorina/station/telecomm/lz1_tram) -"qjY" = ( -/obj/item/device/flashlight/lamp/tripod, -/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "yellow" + dir = 8; + icon_state = "whitegreen" }, -/area/fiorina/station/lowsec) -"qkf" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_29"; - layer = 3.5; - pixel_y = 6 +/area/fiorina/station/medbay) +"qhD" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/cameras{ + network = list("PRISON") }, /turf/open/floor/prison{ dir = 4; - icon_state = "greenfull" + icon_state = "redcorner" }, -/area/fiorina/station/transit_hub) -"qkg" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/wood, -/area/fiorina/station/park) -"qkk" = ( -/obj/structure/platform_decoration{ +/area/fiorina/station/power_ring) +"qhJ" = ( +/obj/structure/bed/chair/comfy{ dir = 1 }, /turf/open/floor/prison{ - icon_state = "darkpurple2" - }, -/area/fiorina/tumor/servers) -"qks" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 + dir = 8; + icon_state = "redcorner" }, -/obj/item/tool/pen, +/area/fiorina/station/power_ring) +"qhN" = ( /turf/open/floor/prison{ - icon_state = "redfull" + dir = 4; + icon_state = "redcorner" }, /area/fiorina/station/security) -"qkN" = ( +"qhP" = ( /obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/communications, -/turf/open/floor/plating/prison, -/area/fiorina/station/telecomm/lz2_maint) -"qkY" = ( -/obj/structure/bed{ - icon_state = "abed" +/obj/item/newspaper, +/obj/item/attachable/bipod, +/turf/open/floor/prison{ + icon_state = "darkyellow2" }, -/obj/effect/spawner/random/sentry/midchance, +/area/fiorina/lz/near_lzI) +"qhZ" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" + icon_state = "platingdmg3" }, -/area/fiorina/station/lowsec) -"qlf" = ( -/obj/structure/cable/heavyduty{ - icon_state = "1-2" +/area/fiorina/station/transit_hub) +"qif" = ( +/obj/item/inflatable, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/station/chapel) +"qiq" = ( +/obj/item/trash/cigbutt, /turf/open/floor/plating/prison, -/area/fiorina/station/civres_blue) -"qmd" = ( -/obj/item/storage/toolbox/antag, -/turf/open/floor/prison{ - dir = 8; - icon_state = "green" +/area/fiorina/tumor/aux_engi) +"qiK" = ( +/obj/structure/platform{ + dir = 1 }, -/area/fiorina/tumor/civres) -"qms" = ( -/obj/structure/barricade/deployable{ - dir = 8 +/obj/effect/decal/medical_decals{ + icon_state = "triagedecalbottomleft" }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"qmz" = ( -/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" + dir = 9; + icon_state = "whitegreen" }, /area/fiorina/station/medbay) -"qmC" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/structure/platform{ - dir = 8 +"qjb" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/toolbox, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/structure/platform_decoration{ - dir = 5 +/area/fiorina/tumor/servers) +"qjh" = ( +/obj/item/reagent_container/food/snacks/boiledegg, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/effect/decal/medical_decals{ - icon_state = "triagedecalbottomright" +/area/fiorina/tumor/aux_engi) +"qjM" = ( +/obj/structure/inflatable, +/obj/structure/barricade/handrail/type_b{ + dir = 4 }, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"qmO" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/paper_bin{ - pixel_x = 5; - pixel_y = 22 - }, -/obj/item/reagent_container/food/snacks/cheesyfries, -/turf/open/floor/prison{ +"qjR" = ( +/obj/structure/machinery/computer/station_alert{ dir = 4; - icon_state = "darkyellowfull2" + pixel_y = 5 }, -/area/fiorina/station/flight_deck) -"qmS" = ( -/obj/structure/surface/rack, -/obj/item/stack/sheet/wood/medium_stack, +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + icon_state = "floor_plate" }, -/area/fiorina/maintenance) -"qnc" = ( -/obj/structure/platform_decoration{ - dir = 8 +/area/fiorina/tumor/aux_engi) +"qjX" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - dir = 5; - icon_state = "blue" + dir = 1; + icon_state = "greenblue" }, -/area/fiorina/station/power_ring) -"qnq" = ( -/obj/effect/landmark/xeno_spawn, +/area/fiorina/station/botany) +"qkg" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/wood, +/area/fiorina/station/park) +"qkn" = ( +/obj/structure/surface/rack, +/obj/item/storage/pouch/tools/full, +/turf/open/floor/plating/prison, +/area/fiorina/maintenance) +"qkq" = ( /turf/open/floor/prison{ - dir = 9; - icon_state = "darkbrown2" + dir = 8; + icon_state = "whitegreen" }, -/area/fiorina/tumor/aux_engi) -"qnu" = ( +/area/fiorina/oob) +"qkt" = ( +/obj/structure/bed/chair/office/dark, /turf/open/floor/prison{ dir = 10; - icon_state = "damaged1" + icon_state = "sterile_white" }, -/area/fiorina/station/disco) -"qnB" = ( -/obj/structure/monorail{ - dir = 6; - name = "launch track" +/area/fiorina/tumor/ice_lab) +"qkN" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/communications, +/turf/open/floor/plating/prison, +/area/fiorina/station/telecomm/lz2_maint) +"qlf" = ( +/obj/structure/cable/heavyduty{ + icon_state = "1-2" }, /turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzII) -"qnE" = ( -/obj/structure/barricade/metal{ - dir = 4; - health = 85; - icon_state = "metal_1" +/area/fiorina/station/civres_blue) +"qmj" = ( +/obj/structure/closet/emcloset, +/obj/item/weapon/nullrod{ + desc = "The explosive tip has been deactivated."; + force = 25; + icon_state = "hefasword"; + name = "de-activated HEFA Sword" }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"qmv" = ( +/obj/structure/monorail{ + dir = 10; + name = "launch track" }, -/area/fiorina/station/park) -"qnK" = ( -/obj/structure/surface/table/reinforced/prison, +/turf/open/space, +/area/fiorina/oob) +"qnb" = ( +/obj/structure/bed/roller, /turf/open/floor/prison{ dir = 4; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"qny" = ( +/obj/item/tool/wirecutters/clippers, +/turf/open/floor/prison{ + dir = 9; icon_state = "greenfull" }, /area/fiorina/tumor/civres) -"qnQ" = ( -/obj/structure/machinery/vending/snack, -/turf/open/floor/prison, -/area/fiorina/station/security) "qob" = ( /obj/structure/machinery/light/double/blue{ dir = 1; @@ -26356,44 +26871,45 @@ icon_state = "plate" }, /area/fiorina/station/telecomm/lz1_cargo) -"qos" = ( -/obj/structure/bed/chair{ - dir = 8 +"qoc" = ( +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/tumor/civres) +"qof" = ( /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 1; + icon_state = "darkpurple2" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/disco) +"qov" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/newspaper, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/servers) "qoG" = ( /obj/item/toy/crayon/rainbow, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"qoZ" = ( -/obj/effect/decal/medical_decals{ - icon_state = "cryotop" - }, -/obj/structure/pipes/standard/simple/visible{ - dir = 9 +"qph" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/station/medbay) -"qpa" = ( -/obj/structure/largecrate/supply/supplies/tables_racks, +/area/fiorina/tumor/servers) +"qpk" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" + icon_state = "bluecorner" }, -/area/fiorina/station/disco) -"qpw" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 3 - }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) +/area/fiorina/station/civres_blue) "qpB" = ( /obj/item/stack/cable_coil/blue, /turf/open/floor/plating/prison, @@ -26403,56 +26919,110 @@ icon_state = "stan_leftengine" }, /area/fiorina/station/power_ring) -"qqa" = ( -/obj/structure/platform{ - dir = 1 +"qpN" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 22 }, -/obj/structure/platform{ - dir = 8 +/obj/item/coin/gold{ + desc = "Coin op, in this place, in this year, localized entirely on this table? .... I uh, yes."; + name = "arcade token"; + pixel_x = -6; + pixel_y = 3 }, -/obj/structure/platform_decoration{ - dir = 5 +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" }, +/area/fiorina/station/flight_deck) +"qpX" = ( +/obj/effect/landmark/monkey_spawn, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/botany) -"qqu" = ( -/obj/structure/surface/rack, -/obj/item/poster, -/obj/item/poster, +/area/fiorina/tumor/servers) +"qqc" = ( +/obj/structure/inflatable/popped, +/obj/effect/decal/medical_decals{ + icon_state = "triagedecaldir" + }, /turf/open/floor/prison{ + dir = 8; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"qqd" = ( +/obj/structure/stairs/perspective{ dir = 1; - icon_state = "darkyellow2" + icon_state = "p_stair_full" }, -/area/fiorina/lz/near_lzI) -"qqJ" = ( -/obj/item/stack/cable_coil, /turf/open/floor/prison, -/area/fiorina/station/disco) -"qqM" = ( -/obj/structure/closet/emcloset, -/obj/effect/landmark/objective_landmark/science, +/area/fiorina/station/security) +"qqC" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 + }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/research_cells) +"qqQ" = ( +/turf/open/floor/prison{ + dir = 5; + icon_state = "green" + }, +/area/fiorina/station/transit_hub) +"qqW" = ( +/obj/item/trash/cigbutt/cigarbutt, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitegreen" }, /area/fiorina/station/medbay) -"qqX" = ( -/obj/item/disk, +"qre" = ( +/obj/structure/platform_decoration, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) -"qqZ" = ( +/area/fiorina/station/central_ring) +"qrn" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "whitepurplecorner" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/medbay) +"qrt" = ( +/obj/effect/landmark/xeno_spawn, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) "qrz" = ( /obj/item/explosive/plastic, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz1_cargo) +"qrI" = ( +/obj/structure/bed/sofa/south/grey/left, +/obj/item/reagent_container/food/snacks/sandwich{ + pixel_y = 2 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/security) +"qrU" = ( +/obj/effect/landmark/monkey_spawn, +/turf/open/floor/prison{ + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"qsc" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) "qso" = ( /obj/structure/machinery/light/double/blue{ dir = 4; @@ -26461,32 +27031,46 @@ }, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"qtq" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/civres_blue) -"qty" = ( +"qss" = ( +/obj/structure/flora/pottedplant/random, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + icon_state = "floor_plate" }, /area/fiorina/tumor/civres) -"qtX" = ( -/obj/structure/blocker/invisible_wall, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitepurple" +"qsE" = ( +/obj/item/shard{ + icon_state = "large"; + name = "ice shard" + }, +/obj/structure/platform{ + dir = 8 }, -/area/fiorina/oob) -"quk" = ( -/obj/structure/largecrate/random/case/double, /turf/open/floor/prison{ - dir = 5; + dir = 8; icon_state = "whitegreen" }, +/area/fiorina/tumor/ice_lab) +"qsF" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkbrown2" + }, +/area/fiorina/maintenance) +"qtP" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/prop/helmetgarb/raincover, +/turf/open/floor/prison, /area/fiorina/station/medbay) +"qug" = ( +/obj/item/trash/plate{ + pixel_x = 1; + pixel_y = 3 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "blue" + }, +/area/fiorina/station/civres_blue) "qun" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 1 @@ -26498,28 +27082,12 @@ name = "astroturf" }, /area/fiorina/station/park) -"quy" = ( -/obj/item/tool/wrench, -/turf/open/floor/prison{ - dir = 6; - icon_state = "darkpurple2" - }, -/area/fiorina/tumor/servers) -"quU" = ( -/obj/structure/filingcabinet{ - pixel_x = -8 - }, -/obj/structure/filingcabinet{ - pixel_x = 8 - }, -/obj/item/reagent_container/food/drinks/coffeecup{ - pixel_x = -7; - pixel_y = 11 - }, +"quL" = ( +/obj/structure/machinery/vending/cigarette/colony, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "bluefull" }, -/area/fiorina/station/security) +/area/fiorina/station/power_ring) "qva" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/weapon/gun/smg/mp5, @@ -26528,53 +27096,14 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"qvk" = ( -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"qvn" = ( -/obj/structure/monorail{ - dir = 10; - name = "launch track" - }, -/turf/open/space, -/area/fiorina/oob) -"qvx" = ( -/obj/structure/barricade/metal/wired{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "yellow" - }, -/area/fiorina/station/disco) -"qvL" = ( -/obj/structure/platform_decoration, -/turf/open/floor/prison{ - dir = 6; - icon_state = "blue" - }, -/area/fiorina/station/power_ring) -"qwh" = ( -/obj/structure/barricade/wooden{ - dir = 4 +"qvN" = ( +/obj/structure/prop/resin_prop{ + icon_state = "rack" }, -/obj/structure/barricade/wooden, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) -"qwl" = ( -/obj/item/clothing/mask/cigarette/cigar/cohiba, -/obj/structure/surface/table/woodentable/fancy, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/fiorina/station/chapel) +/area/fiorina/tumor/servers) "qws" = ( /obj/effect/decal/hefa_cult_decals/d32{ icon_state = "bee" @@ -26584,46 +27113,38 @@ icon_state = "doubleside" }, /area/fiorina/maintenance) -"qwy" = ( -/obj/item/weapon/baton/cattleprod, +"qwG" = ( +/obj/structure/surface/rack, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitepurple" + dir = 6; + icon_state = "darkbrown2" }, -/area/fiorina/station/research_cells) -"qwJ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/paper_bin{ - pixel_x = 5; - pixel_y = 22 +/area/fiorina/maintenance) +"qwH" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" }, +/area/fiorina/station/lowsec) +"qwK" = ( /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "floorscorched2" }, /area/fiorina/station/civres_blue) -"qwU" = ( +"qxx" = ( +/obj/item/ammo_magazine/smg/mp5, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrowncorners2" - }, -/area/fiorina/maintenance) -"qxB" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 8 + dir = 10; + icon_state = "whitepurple" }, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"qxL" = ( -/obj/item/toy/deck, +/area/fiorina/station/research_cells) +"qxy" = ( +/obj/item/stack/sheet/metal, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/station/medbay) +/area/fiorina/tumor/servers) "qxN" = ( /obj/structure/barricade/sandbags{ dir = 8; @@ -26632,118 +27153,127 @@ }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzII) -"qyc" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"qyi" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, +"qxP" = ( /turf/open/floor/prison{ + dir = 10; icon_state = "darkbrown2" }, -/area/fiorina/station/park) -"qyk" = ( -/obj/structure/machinery/power/port_gen/pacman, +/area/fiorina/tumor/aux_engi) +"qxZ" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 + }, /turf/open/floor/prison{ - dir = 5; - icon_state = "darkyellow2" + icon_state = "yellowfull" }, -/area/fiorina/lz/near_lzI) -"qyB" = ( -/obj/structure/platform_decoration, +/area/fiorina/station/lowsec) +"qya" = ( +/obj/structure/closet{ + density = 0; + pixel_y = 18 + }, +/obj/item/clothing/gloves/combat, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "whitepurple" }, -/area/fiorina/station/park) -"qyX" = ( -/obj/structure/barricade/wooden, +/area/fiorina/station/research_cells) +"qyq" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ icon_state = "floor_plate" }, +/area/fiorina/station/power_ring) +"qyM" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, /area/fiorina/station/disco) -"qzl" = ( -/obj/structure/machinery/shower{ - pixel_y = 13 +"qzb" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" }, -/obj/structure/machinery/shower{ - dir = 8 +/obj/structure/platform{ + dir = 4 }, +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) +"qzo" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/prison, +/area/fiorina/station/security) +"qzM" = ( +/obj/structure/largecrate/random/case, /turf/open/floor/prison{ - icon_state = "kitchen" + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) +"qzZ" = ( +/obj/structure/barricade/sandbags{ + dir = 8; + icon_state = "sandbag_0"; + pixel_y = 2 }, -/area/fiorina/station/research_cells) -"qzn" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /turf/open/floor/prison{ - dir = 5; - icon_state = "whitegreen" + dir = 6; + icon_state = "yellow" }, -/area/fiorina/tumor/ice_lab) -"qzy" = ( +/area/fiorina/station/disco) +"qAe" = ( +/obj/item/trash/eat, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) -"qzB" = ( -/obj/item/reagent_container/food/condiment/peppermill{ - pixel_x = -5; - pixel_y = -11 +/area/fiorina/station/telecomm/lz1_cargo) +"qAk" = ( +/obj/item/shard{ + icon_state = "medium" }, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/civres_blue) -"qzI" = ( -/obj/item/tool/crowbar/red, +/area/fiorina/tumor/servers) +"qAl" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/flight_deck) -"qzS" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"qzW" = ( -/obj/effect/alien/weeds/node, +/area/fiorina/station/medbay) +"qAQ" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" + dir = 4; + icon_state = "cell_stripe" }, /area/fiorina/tumor/aux_engi) -"qzX" = ( -/obj/structure/machinery/photocopier{ - pixel_y = 4 - }, +"qBe" = ( +/turf/open/floor/prison, +/area/fiorina/station/disco) +"qBf" = ( /turf/open/floor/prison{ - icon_state = "redfull" + dir = 5; + icon_state = "yellow" }, -/area/fiorina/station/security) -"qBh" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/toy/handcard/aceofspades, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +/area/fiorina/station/central_ring) +"qBj" = ( +/obj/structure/window/reinforced{ + dir = 4 }, -/area/fiorina/station/research_cells) -"qBk" = ( -/obj/item/reagent_container/food/drinks/cans/aspen, +/obj/item/storage/briefcase, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) -"qBs" = ( -/obj/item/tool/mop{ - pixel_y = 23 - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison, -/area/fiorina/station/disco) +/area/fiorina/station/security/wardens) "qBB" = ( /obj/item/prop/helmetgarb/spacejam_tickets{ desc = "A ticket to Souto Man's raffle!"; @@ -26760,24 +27290,31 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"qBG" = ( -/obj/structure/inflatable/popped/door, -/obj/item/stack/barbed_wire, -/obj/effect/decal/cleanable/blood/oil, +"qBI" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ - dir = 6; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"qBQ" = ( -/obj/item/storage/secure/briefcase{ - pixel_x = 9; - pixel_y = 18 + icon_state = "darkredfull2" }, +/area/fiorina/station/research_cells) +"qBS" = ( +/obj/item/circuitboard/exosuit/peripherals/max/targeting, +/obj/structure/surface/rack, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) +/area/fiorina/tumor/civres) +"qBT" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/prison{ + dir = 6; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) "qCa" = ( /obj/structure/prop/resin_prop{ dir = 1; @@ -26786,50 +27323,48 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"qCs" = ( -/obj/structure/largecrate/random/case/small, +"qCk" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/condiment/saltshaker{ + pixel_x = -5; + pixel_y = -6 + }, +/obj/item/reagent_container/food/condiment/peppermill{ + pixel_x = -5; + pixel_y = -11 + }, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + icon_state = "bluefull" }, -/area/fiorina/tumor/aux_engi) -"qCw" = ( -/obj/structure/inflatable/popped/door, -/obj/item/ammo_casing{ - icon_state = "casing_1" +/area/fiorina/station/civres_blue) +"qCx" = ( +/obj/item/reagent_container/food/drinks/sillycup, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) +"qCE" = ( +/obj/structure/machinery/computer/emails{ + dir = 1; + pixel_y = 4 }, +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) +"qCK" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "damaged1" + }, +/area/fiorina/station/lowsec) "qCW" = ( /turf/closed/shuttle/elevator{ dir = 6 }, /area/fiorina/tumor/aux_engi) -"qDc" = ( -/obj/structure/monorail{ - dir = 9; - name = "launch track" - }, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzI) -"qDd" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_ew_full_cap" - }, -/obj/structure/platform/stair_cut/alt, -/turf/open/floor/plating/prison, -/area/fiorina/station/flight_deck) -"qDi" = ( -/obj/item/reagent_container/food/condiment/saltshaker{ - pixel_x = -5; - pixel_y = -6 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/civres_blue) "qDn" = ( /obj/item/stool, /obj/structure/sign/poster{ @@ -26841,76 +27376,60 @@ icon_state = "doubleside" }, /area/fiorina/maintenance) -"qDo" = ( -/obj/structure/janitorialcart, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"qDy" = ( -/obj/item/reagent_container/glass/bucket/janibucket, -/turf/open/floor/prison, -/area/fiorina/station/park) -"qDD" = ( +"qDq" = ( /obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; + dir = 8; + pixel_x = -10; pixel_y = -3 }, -/obj/structure/largecrate/random/case, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"qDG" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) -"qDH" = ( -/obj/structure/bookcase{ - icon_state = "book-5" - }, +/area/fiorina/station/telecomm/lz1_tram) +"qDZ" = ( +/obj/item/stack/rods, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 4; + icon_state = "whitegreen" }, /area/fiorina/station/medbay) -"qDI" = ( -/obj/structure/toilet{ - dir = 4; - pixel_y = 8 +"qEk" = ( +/obj/structure/bed/sofa/south/grey/left, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/obj/effect/decal/cleanable/blood/gibs, /turf/open/floor/prison{ - dir = 9; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"qDY" = ( -/obj/structure/barricade/sandbags{ - icon_state = "sandbag_0"; - pixel_y = -14 + icon_state = "floor_plate" }, +/area/fiorina/station/security/wardens) +"qEl" = ( +/obj/structure/closet/bodybag, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzI) -"qEn" = ( -/obj/structure/barricade/wooden, +/area/fiorina/station/medbay) +"qEs" = ( /turf/open/floor/prison{ dir = 4; - icon_state = "whitepurple" + icon_state = "yellowcorner" }, -/area/fiorina/station/research_cells) -"qFg" = ( -/obj/item/stack/rods, +/area/fiorina/station/lowsec) +"qEC" = ( +/obj/structure/largecrate/random/barrel/blue, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 6; + icon_state = "yellow" }, -/area/fiorina/station/power_ring) -"qFi" = ( -/obj/structure/machinery/light/small{ +/area/fiorina/station/disco) +"qFf" = ( +/obj/item/tool/kitchen/rollingpin, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/fiorina/station/power_ring) +"qFi" = ( +/obj/structure/machinery/light/small{ dir = 8; pixel_x = -11; pixel_y = 10 @@ -26920,109 +27439,108 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) +"qFs" = ( +/obj/structure/prop/structure_lattice{ + dir = 4 + }, +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 + }, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) "qFE" = ( /obj/structure/platform/kutjevo/smooth{ dir = 4 }, /turf/open/space/basic, /area/fiorina/oob) -"qFQ" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +"qFO" = ( +/obj/structure/barricade/wooden{ + dir = 8 }, -/obj/structure/barricade/handrail/type_b{ - dir = 1 +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"qGl" = ( -/obj/structure/largecrate/random/barrel/yellow, -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 +/area/fiorina/station/telecomm/lz1_cargo) +"qGe" = ( +/obj/structure/machinery/landinglight/ds1/delaytwo{ + dir = 4 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/station/disco) +/area/fiorina/lz/near_lzI) +"qGf" = ( +/obj/item/tool/scythe, +/turf/open/floor/prison{ + dir = 4; + icon_state = "blue_plate" + }, +/area/fiorina/station/botany) +"qGh" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/chapel) "qGn" = ( /turf/open/floor/corsat{ icon_state = "plate" }, /area/fiorina/station/telecomm/lz1_cargo) -"qGX" = ( -/obj/structure/prop/structure_lattice{ - health = 300 - }, -/obj/structure/prop/structure_lattice{ - layer = 3.1; - pixel_y = 10 - }, +"qGy" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"qGB" = ( +/obj/structure/barricade/wooden, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "whitepurple" }, -/area/fiorina/tumor/aux_engi) -"qHC" = ( +/area/fiorina/station/research_cells) +"qGO" = ( +/obj/structure/machinery/photocopier, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/medbay) +"qGP" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) "qHG" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited{ pixel_y = 25 }, /turf/open/floor/plating/plating_catwalk, /area/fiorina/tumor/ship) -"qHK" = ( -/obj/item/gift, -/turf/open/floor/prison{ - icon_state = "darkbrown2" +"qHX" = ( +/obj/structure/window/reinforced{ + dir = 8 }, -/area/fiorina/station/park) -"qHZ" = ( -/obj/item/tool/warning_cone, +/obj/item/clothing/head/helmet/marine/veteran/ua_riot, /turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_cargo) -"qIk" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/structure/machinery/cm_vending/sorted/tech/tool_storage{ - layer = 3.5 - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) +/area/fiorina/station/security) "qIq" = ( /obj/structure/largecrate/random/case/small, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"qIy" = ( -/obj/item/tool/match, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"qIO" = ( -/obj/item/stock_parts/manipulator/pico, -/turf/open/floor/prison{ - icon_state = "darkpurple2" - }, -/area/fiorina/tumor/servers) -"qIZ" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"qIT" = ( +/obj/item/prop/helmetgarb/spacejam_tickets{ + desc = "A ticket to Souto Man's raffle!"; + name = "\improper Souto Raffle Ticket" }, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "blue" }, -/area/fiorina/station/civres_blue) +/area/fiorina/station/chapel) "qJf" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/drinks/cans/souto/blue{ @@ -27050,15 +27568,32 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"qJJ" = ( -/obj/structure/bed/chair/comfy{ - dir = 8 +"qJl" = ( +/obj/structure/bedsheetbin{ + icon_state = "linenbin-empty" }, /turf/open/floor/prison{ - dir = 10; - icon_state = "blue" + dir = 8; + icon_state = "yellow" }, -/area/fiorina/station/civres_blue) +/area/fiorina/station/lowsec) +"qJr" = ( +/turf/open/floor/prison, +/area/fiorina/tumor/fiberbush) +"qJv" = ( +/obj/structure/closet/secure_closet/guncabinet{ + req_access = null + }, +/obj/item/weapon/gun/smg/mp5, +/obj/item/ammo_magazine/smg/mp5, +/obj/item/ammo_magazine/smg/mp5, +/obj/item/clothing/under/marine/ua_riot, +/obj/item/clothing/suit/storage/marine/veteran/ua_riot, +/obj/item/prop/helmetgarb/riot_shield, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) "qJK" = ( /obj/structure/largecrate/random/barrel/red, /turf/open/floor/almayer{ @@ -27076,37 +27611,74 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"qKs" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/spray/pepper, -/obj/item/clothing/glasses/sunglasses/sechud, +"qJP" = ( +/obj/effect/landmark/monkey_spawn, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "floor_plate" }, -/area/fiorina/station/security) -"qKF" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/station/chapel) +"qJQ" = ( +/obj/structure/barricade/metal/wired{ + dir = 8 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"qJR" = ( +/obj/item/disk/data, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/servers) +"qKq" = ( +/obj/structure/machinery/computer/arcade, +/obj/item/toy/syndicateballoon{ + anchored = 1; + pixel_x = 12; + pixel_y = 25 + }, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + layer = 2.8; + pixel_x = 15; + pixel_y = 5 }, /turf/open/floor/prison, -/area/fiorina/station/disco) +/area/fiorina/station/flight_deck) +"qKx" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_tram) "qKT" = ( /obj/item/stack/rods/plasteel, /turf/open/auto_turf/sand/layer1, /area/fiorina/lz/near_lzII) -"qLp" = ( -/obj/structure/bed/chair/comfy{ - dir = 4 +"qLa" = ( +/obj/item/weapon/baseballbat/metal, +/turf/open/floor/prison{ + dir = 8; + icon_state = "blue" }, +/area/fiorina/station/chapel) +"qLi" = ( +/obj/structure/toilet{ + dir = 8; + pixel_y = 8 + }, +/turf/open/floor/prison{ + dir = 5; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) +"qLv" = ( +/obj/structure/platform_decoration, /turf/open/floor/prison, -/area/fiorina/tumor/servers) -"qLz" = ( -/obj/structure/machinery/autolathe/medilathe/full, +/area/fiorina/station/transit_hub) +"qLH" = ( +/obj/item/trash/used_stasis_bag, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/lz/near_lzI) "qLI" = ( /obj/item/storage/toolbox, /obj/structure/machinery/light/double/blue{ @@ -27118,65 +27690,79 @@ icon_state = "plate" }, /area/fiorina/station/civres_blue) -"qLJ" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) "qLN" = ( /obj/item/storage/toolbox/mechanical/green, /turf/open/floor/corsat{ icon_state = "plate" }, /area/fiorina/tumor/aux_engi) -"qMV" = ( +"qMi" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + dir = 8; + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) +"qMs" = ( +/obj/item/stack/cable_coil/green, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/civres) +"qMI" = ( +/turf/open/floor/prison{ + icon_state = "damaged3" + }, +/area/fiorina/station/security) +"qNj" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 8 + }, /obj/structure/platform_decoration{ - dir = 1 + dir = 10 }, +/obj/structure/closet/firecloset/full, /turf/open/floor/prison{ dir = 10; - icon_state = "blue" + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"qNu" = ( +/obj/structure/closet/secure_closet/security_empty, +/obj/item/clothing/accessory/storage/holster, +/obj/structure/window/reinforced{ + dir = 4 }, -/area/fiorina/station/power_ring) -"qNm" = ( -/obj/structure/closet/secure_closet/engineering_materials, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "redfull" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/security) "qNv" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname{ dir = 1 }, /turf/open/floor/plating/prison, /area/fiorina/station/park) -"qNw" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/transit_hub) -"qNS" = ( -/obj/structure/machinery/vending/snack/packaged, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"qNy" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 22 }, -/area/fiorina/tumor/civres) -"qNW" = ( -/obj/structure/platform_decoration, +/obj/item/reagent_container/food/snacks/cheesyfries, /turf/open/floor/prison{ - icon_state = "darkbrowncorners2" - }, -/area/fiorina/station/park) -"qOd" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" + dir = 4; + icon_state = "darkyellowfull2" }, +/area/fiorina/station/flight_deck) +"qNF" = ( /turf/open/floor/prison{ - icon_state = "yellowfull" + dir = 5; + icon_state = "yellow" }, /area/fiorina/station/lowsec) "qOk" = ( @@ -27189,18 +27775,11 @@ /obj/structure/grille, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"qOy" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer3/laptop/secure_data, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"qOG" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/box/cups, +"qOu" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "damaged3" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/disco) "qON" = ( /obj/item/stack/cable_coil/cyan, /turf/open/floor/plating/prison, @@ -27217,17 +27796,13 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"qOY" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/firstaid/regular, +"qPa" = ( +/obj/item/device/motiondetector, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "yellow" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/lowsec) "qPb" = ( /turf/open/organic/grass{ desc = "It'll get in your shoes no matter what you do."; @@ -27238,32 +27813,42 @@ /obj/item/ammo_magazine/smg/nailgun, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/maintenance) -"qPC" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" +"qPL" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/powercell, +/obj/item/storage/syringe_case/burn{ + pixel_x = -10; + pixel_y = 8 }, -/turf/open/floor/plating/prison, -/area/fiorina/station/park) -"qPG" = ( -/obj/structure/machinery/washing_machine, /turf/open/floor/prison{ - icon_state = "sterile_white" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/civres_blue) -"qPT" = ( -/obj/structure/bed/chair/comfy, +/area/fiorina/station/research_cells) +"qQa" = ( /turf/open/floor/prison{ - icon_state = "blue" + dir = 1; + icon_state = "darkpurple2" }, -/area/fiorina/station/civres_blue) -"qQf" = ( -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/prison{ - dir = 10; - icon_state = "darkbrown2" +/area/fiorina/station/central_ring) +"qQb" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" }, -/area/fiorina/tumor/aux_engi) +/turf/open/floor/plating/prison, +/area/fiorina/station/flight_deck) +"qQd" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_29"; + pixel_y = 10 + }, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) "qQj" = ( /obj/structure/surface/rack, /obj/effect/landmark/objective_landmark/close, @@ -27277,6 +27862,15 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating/prison, /area/fiorina/maintenance) +"qQy" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/prison{ + dir = 9; + icon_state = "blue" + }, +/area/fiorina/station/power_ring) "qQA" = ( /obj/item/reagent_container/food/drinks/bottle/holywater{ desc = "A flask of the holy HEFA grenade oil."; @@ -27286,15 +27880,30 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"qQO" = ( -/obj/item/tool/wet_sign, +"qQM" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 + }, /turf/open/floor/prison, -/area/fiorina/tumor/servers) -"qQU" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/prop/helmetgarb/raincover, +/area/fiorina/station/disco) +"qRa" = ( +/obj/effect/decal/cleanable/blood/gibs/core, /turf/open/floor/prison, -/area/fiorina/station/medbay) +/area/fiorina/station/lowsec) +"qRf" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/obj/item/toy/beach_ball/holoball, +/turf/open/floor/prison{ + dir = 6; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) "qRg" = ( /obj/structure/sign/prop3{ desc = "Enlist in the Penal Battalions today! The USCM 3rd Fleet features a subset of UA sanctioned penal battalions, drawing from inmate popualtions across the colonies. Mostly New Argentina though." @@ -27313,90 +27922,83 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"qRD" = ( -/obj/item/device/flashlight/lamp/tripod, -/turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"qSg" = ( -/obj/structure/machinery/bot/medbot{ - name = "Dr. O" - }, +"qRK" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"qSv" = ( -/obj/structure/machinery/vending/snack/packaged, -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 + dir = 6; + icon_state = "darkpurple2" }, +/area/fiorina/station/central_ring) +"qRS" = ( +/obj/item/trash/candy, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) -"qTa" = ( -/turf/open/floor/prison{ +/area/fiorina/station/telecomm/lz1_cargo) +"qRW" = ( +/obj/structure/stairs/perspective{ dir = 8; - icon_state = "cell_stripe" + icon_state = "p_stair_ew_full_cap" }, -/area/fiorina/station/security) -"qTp" = ( -/obj/structure/sink{ - pixel_y = 23 +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) +"qSm" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"qSy" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks{ + pixel_y = 17 }, -/obj/item/prop/helmetgarb/rabbitsfoot{ - pixel_y = 22 +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"qSz" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/prison{ + dir = 1; + icon_state = "yellow" }, -/obj/item/reagent_container/food/drinks/bottle/kahlua{ - pixel_x = 5; - pixel_y = 25 +/area/fiorina/station/lowsec) +"qSA" = ( +/obj/item/trash/candy, +/turf/open/floor/prison{ + dir = 4; + icon_state = "whitegreen" }, +/area/fiorina/tumor/ice_lab) +"qTe" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"qTt" = ( +/obj/item/stack/tile/plasteel, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "yellow" }, -/area/fiorina/station/medbay) -"qTr" = ( -/obj/structure/surface/table/reinforced/prison, +/area/fiorina/station/disco) +"qTx" = ( +/obj/structure/surface/rack, +/obj/item/storage/firstaid/regular, +/obj/item/storage/firstaid/regular, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/tumor/ice_lab) -"qTy" = ( -/obj/structure/reagent_dispensers/water_cooler{ - pixel_x = -9; - pixel_y = 8 - }, -/obj/structure/reagent_dispensers/water_cooler{ - pixel_x = 11; - pixel_y = 8 + icon_state = "whitegreenfull" }, -/obj/structure/reagent_dispensers/water_cooler{ - pixel_x = 1; - pixel_y = 8 +/area/fiorina/station/medbay) +"qTQ" = ( +/obj/structure/platform_decoration, +/obj/item/reagent_container/food/drinks/sillycup, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/station/flight_deck) +"qTW" = ( +/obj/effect/landmark/survivor_spawner, /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 4; + icon_state = "blue" }, /area/fiorina/station/power_ring) -"qUe" = ( -/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, -/obj/item/ammo_casing/shell{ - icon_state = "shell_9_1" - }, -/obj/structure/barricade/metal{ - health = 250; - icon_state = "metal_1" - }, -/turf/open/floor/prison, -/area/fiorina/station/park) "qUo" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 6 @@ -27416,502 +28018,355 @@ name = "astroturf" }, /area/fiorina/station/park) -"qUp" = ( -/obj/effect/landmark{ - icon_state = "hive_spawn"; - name = "xeno_hive_spawn" - }, -/obj/effect/landmark/ert_spawns/groundside_xeno, +"qUw" = ( +/obj/item/device/multitool, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" + dir = 10; + icon_state = "yellow" }, -/area/fiorina/tumor/aux_engi) -"qUx" = ( -/obj/item/stack/tile/plasteel, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" +/area/fiorina/station/disco) +"qUC" = ( +/obj/item/ammo_casing{ + dir = 2; + icon_state = "casing_5" }, -/area/fiorina/tumor/civres) -"qUQ" = ( -/obj/item/stack/cable_coil, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/medbay) -"qUZ" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" + dir = 1; + icon_state = "darkbrown2" }, -/obj/structure/platform, -/obj/structure/machinery/light/double/blue{ +/area/fiorina/station/park) +"qVW" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison, +/area/fiorina/station/park) +"qXj" = ( +/obj/structure/machinery/shower{ + dir = 1; pixel_y = -1 }, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzI) -"qVe" = ( -/obj/structure/machinery/cm_vending/sorted/marine_food{ - desc = "Prison meal vendor, containing preprepared meals fit for the dregs of society."; - name = "\improper Fiorina Green Block Canteen Vendor" - }, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "kitchen" }, /area/fiorina/station/lowsec) -"qVq" = ( -/obj/item/ammo_box/magazine/misc/flares{ - layer = 3.1; - pixel_y = 16 - }, -/obj/structure/largecrate/random/secure, +"qXM" = ( +/obj/item/stack/tile/plasteel, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/civres) +"qYZ" = ( +/obj/structure/bed/chair, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "darkpurplefull2" }, -/area/fiorina/tumor/ice_lab) -"qVt" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 +/area/fiorina/tumor/servers) +"qZc" = ( +/obj/structure/prop/structure_lattice{ + dir = 4 }, -/turf/open/floor/prison{ +/obj/structure/prop/structure_lattice{ dir = 4; - icon_state = "darkyellowfull2" + layer = 3.1; + pixel_y = 10 }, -/area/fiorina/station/telecomm/lz1_tram) -"qVD" = ( -/obj/structure/platform, -/obj/structure/platform{ - dir = 8 +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/structure/platform_decoration{ - dir = 10 +/area/fiorina/station/telecomm/lz1_cargo) +"qZv" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" }, /turf/open/floor/prison{ - dir = 10; + dir = 4; icon_state = "whitegreen" }, -/area/fiorina/tumor/ice_lab) -"qVF" = ( -/obj/structure/platform, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/botany) -"qWa" = ( -/obj/effect/decal/cleanable/blood, -/obj/effect/spawner/random/gun/rifle/lowchance, +/area/fiorina/station/central_ring) +"raC" = ( +/obj/effect/landmark/corpsespawner/ua_riot, /turf/open/floor/prison{ - dir = 9; + dir = 8; icon_state = "darkyellow2" }, /area/fiorina/lz/near_lzI) -"qWf" = ( -/obj/item/trash/popcorn, -/turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"qWi" = ( -/obj/structure/largecrate/guns/merc, -/obj/item/toy/deck/uno, +"raL" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) -"qWw" = ( -/obj/structure/prop/souto_land/streamer{ - dir = 4; - pixel_y = 24 - }, -/obj/structure/bed/chair{ - dir = 1 + icon_state = "bluefull" }, -/obj/effect/landmark/corpsespawner/security/liaison, +/area/fiorina/station/civres_blue) +"raP" = ( +/obj/structure/barricade/wooden, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrown2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/park) -"qWB" = ( -/obj/structure/largecrate/random, +/area/fiorina/station/medbay) +"rbp" = ( +/obj/structure/closet/crate/medical, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/gloves/latex, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"qXl" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" - }, +/area/fiorina/station/medbay) +"rbv" = ( +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/security) -"qXM" = ( -/obj/item/stack/tile/plasteel, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/civres) -"qXP" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/prison, -/area/fiorina/station/chapel) -"qYc" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" + icon_state = "darkpurplefull2" }, +/area/fiorina/tumor/servers) +"rbI" = ( /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 }, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"qYq" = ( -/obj/effect/decal/cleanable/blood{ - desc = "Watch your step."; - icon_state = "gib6" - }, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_cargo) -"qZa" = ( -/obj/item/shard{ - icon_state = "large"; - name = "ice shard" - }, /turf/open/floor/prison{ - icon_state = "whitegreen" + dir = 5; + icon_state = "darkyellow2" }, -/area/fiorina/tumor/ice_lab) -"qZh" = ( -/obj/structure/platform_decoration, -/obj/item/shard{ - icon_state = "medium"; - name = "ice shard" +/area/fiorina/lz/near_lzI) +"rbK" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) +"rbW" = ( +/obj/structure/cargo_container/grant/right{ + health = 5000; + unacidable = 1 }, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"rbZ" = ( +/obj/structure/inflatable/popped/door, /turf/open/floor/prison{ - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) -"qZx" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_29"; - layer = 3.5; - pixel_y = 6 + dir = 10; + icon_state = "sterile_white" }, +/area/fiorina/station/medbay) +"rcc" = ( +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/chapel) -"qZL" = ( -/obj/structure/machinery/computer/arcade, -/obj/item/toy/syndicateballoon{ - anchored = 1; - pixel_x = 12; - pixel_y = 25 - }, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - layer = 2.8; - pixel_x = 15; - pixel_y = 5 + dir = 4; + icon_state = "blue_plate" }, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"qZW" = ( +/area/fiorina/station/botany) +"rce" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/storage/box/wy_mre{ - pixel_x = 5; - pixel_y = 2 +/obj/structure/reagent_dispensers/water_cooler{ + pixel_y = 11 }, /turf/open/floor/prison{ icon_state = "darkpurplefull2" }, /area/fiorina/station/research_cells) -"rar" = ( -/obj/structure/window/reinforced{ - dir = 4 +"rcg" = ( +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"rcl" = ( +/obj/structure/monorail{ + name = "launch track" }, -/obj/structure/window/reinforced, -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/firstaid/regular, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/obj/structure/machinery/constructable_frame{ + icon_state = "box_1" }, -/area/fiorina/tumor/ice_lab) -"raD" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzI) +"rcE" = ( +/obj/structure/inflatable/popped/door, +/obj/item/stack/barbed_wire, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison{ + dir = 6; + icon_state = "whitegreen" }, +/area/fiorina/station/medbay) +"rcI" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno/limb, /turf/open/floor/prison{ dir = 4; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"raF" = ( -/obj/item/card/id/silver/clearance_badge/cl{ - desc = "Wow sorry, didn't mean to drop that in front of you, it's real, btw."; - name = "certified powerloader operator card"; - registered_name = "John Forklift" + icon_state = "whitegreencorner" }, +/area/fiorina/station/medbay) +"rdi" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) -"rbD" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/cameras{ - dir = 8 + dir = 9; + icon_state = "greenfull" }, +/area/fiorina/station/transit_hub) +"rdo" = ( /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 1; + icon_state = "greenbluecorner" }, -/area/fiorina/station/security) -"rbE" = ( -/obj/structure/reagent_dispensers/water_cooler/stacks, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/area/fiorina/station/botany) +"rdt" = ( +/obj/structure/platform_decoration{ + dir = 1 }, -/area/fiorina/station/medbay) -"rbK" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/plating/prison, +/turf/open/floor/prison, /area/fiorina/station/power_ring) -"rcu" = ( -/obj/item/clothing/under/color/orange, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"rdS" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 - }, -/turf/open/floor/prison{ - icon_state = "yellowfull" +"red" = ( +/obj/structure/barricade/metal/wired{ + dir = 8 }, -/area/fiorina/station/lowsec) -"rdX" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"rez" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/device/flashlight/lamp/green, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" +/obj/structure/machinery/computer/cameras{ + dir = 4 }, -/area/fiorina/tumor/civres) -"rev" = ( /turf/open/floor/prison{ - icon_state = "blue" - }, -/area/fiorina/station/power_ring) -"reO" = ( -/obj/structure/platform_decoration{ - dir = 4 + icon_state = "darkredfull2" }, -/obj/structure/stairs/perspective{ - icon_state = "p_stair_sn_full_cap" +/area/fiorina/station/disco) +"reZ" = ( +/obj/structure/barricade/sandbags{ + dir = 8; + icon_state = "sandbag_0" }, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/ice_lab) -"rfa" = ( -/obj/structure/machinery/vending/coffee, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 10; + icon_state = "floor_plate" }, -/area/fiorina/station/security) +/area/fiorina/station/telecomm/lz1_cargo) "rfd" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited, /turf/closed/wall/prison, /area/fiorina/tumor/ice_lab) -"rfo" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"rfq" = ( -/obj/structure/bed/chair{ - dir = 8 - }, +"rfe" = ( +/obj/structure/surface/rack, +/obj/item/tool/mop, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" + dir = 10; + icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"rfD" = ( -/obj/structure/barricade/wooden, +"rft" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"rfG" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/toolbox/mechanical/green, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/maintenance) -"rfJ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/snacks/mre_pack/meal4{ - name = "\improper prison food"; - pixel_y = 9 + icon_state = "greenblue" }, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +/area/fiorina/station/botany) +"rfQ" = ( +/obj/effect/spawner/random/tech_supply, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/area/fiorina/station/research_cells) -"rfR" = ( -/obj/item/shard{ - icon_state = "medium"; - name = "ice shard" +/turf/open/floor/prison, +/area/fiorina/station/security) +"rgc" = ( +/obj/item/device/binoculars/civ, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - icon_state = "whitegreen" + dir = 1; + icon_state = "yellow" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/lowsec) "rgg" = ( /obj/item/tool/candle{ pixel_x = -2 }, /turf/open/floor/wood, /area/fiorina/station/chapel) -"rgD" = ( -/obj/effect/landmark/corpsespawner/ua_riot, +"rhf" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "cell_stripe" + }, +/area/fiorina/station/research_cells) +"rhh" = ( +/obj/structure/monorail{ + dir = 4; + name = "launch track" }, -/area/fiorina/station/lowsec) -"rhF" = ( -/obj/item/stack/sheet/metal/medium_stack, -/obj/structure/surface/rack, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 9; + icon_state = "greenfull" + }, +/area/fiorina/station/transit_hub) +"rhH" = ( +/obj/structure/bed{ + icon_state = "abed" }, -/area/fiorina/station/power_ring) -"rhK" = ( -/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + dir = 6; + icon_state = "whitepurple" }, -/area/fiorina/tumor/aux_engi) -"rib" = ( -/obj/item/trash/cigbutt/cigarbutt, +/area/fiorina/station/research_cells) +"rie" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ - dir = 1; + dir = 8; icon_state = "whitegreen" }, /area/fiorina/station/medbay) -"ril" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/fancy/cigarettes/emeraldgreen, -/obj/item/tool/lighter, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"riu" = ( -/obj/structure/reagent_dispensers/water_cooler{ - pixel_x = 1; - pixel_y = 8 - }, +"riP" = ( +/obj/item/stack/tile/plasteel, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) +/area/fiorina/tumor/aux_engi) "rja" = ( /turf/closed/wall/prison, /area/fiorina/station/civres_blue) -"rjn" = ( -/obj/structure/machinery/door/airlock/prison_hatch/autoname, +"rjy" = ( +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/park) -"rjz" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" - }, -/obj/effect/decal/cleanable/blood{ - icon_state = "gibarm_flesh" + dir = 10; + icon_state = "kitchen" }, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/ice_lab) -"rjE" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 +/area/fiorina/tumor/civres) +"rjP" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, /turf/open/floor/prison{ - dir = 1; - icon_state = "cell_stripe" + icon_state = "floor_plate" }, /area/fiorina/station/medbay) -"rjM" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/book/manual/surgery{ - name = "Lung Transplants for Dummies"; - pixel_y = 4 - }, +"rki" = ( +/obj/item/stack/tile/plasteel, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) -"rkb" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/obj/structure/machinery/light/double/blue{ +/area/fiorina/tumor/civres) +"rko" = ( +/obj/structure/platform_decoration, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"rkp" = ( +/obj/structure/toilet{ dir = 4; - pixel_x = 10; - pixel_y = 13 + pixel_y = 8 }, -/obj/effect/landmark/objective_landmark/medium, +/obj/effect/decal/cleanable/blood/gibs, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrown2" + dir = 9; + icon_state = "yellow" }, -/area/fiorina/maintenance) -"rkh" = ( -/obj/structure/closet/bodybag, -/obj/effect/decal/cleanable/blood/gibs/up, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison, /area/fiorina/station/lowsec) -"rkr" = ( +"rkv" = ( /turf/open/floor/prison{ - dir = 5; - icon_state = "greenblue" + dir = 8; + icon_state = "greencorner" }, -/area/fiorina/station/botany) -"rkB" = ( -/obj/item/device/flashlight, -/turf/open/floor/plating/prison, -/area/fiorina/station/disco) +/area/fiorina/station/chapel) +"rkF" = ( +/obj/structure/closet/secure_closet/personal, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/telecomm/lz1_cargo) "rkH" = ( /obj/structure/grille, /obj/structure/lattice, /turf/open/space, /area/fiorina/oob) -"rkQ" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/stack/rods, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/fiorina/station/chapel) "rkR" = ( /obj/item/clothing/glasses/science, /turf/open/space, @@ -27920,33 +28375,12 @@ /obj/item/stack/cable_coil/green, /turf/open/floor/wood, /area/fiorina/station/chapel) -"rlC" = ( -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/platform, -/obj/structure/platform_decoration{ - dir = 10 - }, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/chapel) -"rmb" = ( -/obj/structure/machinery/shower{ - dir = 4 - }, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/fiorina/station/research_cells) -"rmg" = ( -/obj/structure/largecrate/random/case, +"rlP" = ( +/obj/structure/largecrate/supply, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/medbay) "rmh" = ( /obj/structure/surface/rack, /obj/item/storage/bag/trash, @@ -27956,46 +28390,22 @@ /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"rmA" = ( -/turf/open/floor/prison{ - icon_state = "platingdmg3" - }, -/area/fiorina/station/security) -"rmG" = ( -/obj/item/ammo_casing{ - icon_state = "casing_5" - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" +"rmX" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" }, -/area/fiorina/station/flight_deck) -"rmI" = ( /obj/structure/platform{ - dir = 1 - }, -/obj/effect/decal/medical_decals{ - icon_state = "triagedecalbottomleft" - }, -/turf/open/floor/prison{ - dir = 9; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"rmS" = ( -/obj/effect/decal{ - icon = 'icons/obj/items/policetape.dmi'; - icon_state = "engineering_v" - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + dir = 8 }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" +/turf/open/floor/plating/prison, +/area/fiorina/station/disco) +"rmZ" = ( +/obj/structure/barricade/metal/wired{ + dir = 4 }, -/area/fiorina/station/telecomm/lz1_cargo) +/obj/structure/largecrate/random, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "rna" = ( /obj/structure/bed/chair/wood/normal{ dir = 4 @@ -28006,210 +28416,264 @@ }, /turf/open/floor/wood, /area/fiorina/station/civres_blue) -"rol" = ( -/obj/structure/monorail{ - dir = 4; - name = "launch track" +"rnl" = ( +/obj/structure/bed/chair/office/light{ + dir = 4 }, -/turf/open/floor/plating/prison, +/turf/open/floor/prison, /area/fiorina/station/transit_hub) -"roo" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = 1 +"rnn" = ( +/obj/structure/largecrate/supply/explosives/mortar_flare, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"rnE" = ( +/obj/structure/inflatable, +/turf/open/floor/prison{ + dir = 6; + icon_state = "yellow" }, +/area/fiorina/station/lowsec) +"rnM" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/fancy/crayons, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"roi" = ( +/obj/structure/prop/souto_land/streamer{ + dir = 9 }, -/area/fiorina/lz/near_lzII) -"ror" = ( -/obj/structure/largecrate/random/case/double, /turf/open/floor/prison{ - dir = 9; - icon_state = "whitepurple" + dir = 1; + icon_state = "darkbrown2" }, -/area/fiorina/station/research_cells) -"rov" = ( -/obj/effect/decal/cleanable/blood{ - icon_state = "gib6" +/area/fiorina/station/park) +"rot" = ( +/obj/structure/barricade/metal{ + health = 250; + icon_state = "metal_1" }, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" + dir = 6; + icon_state = "darkpurple2" }, /area/fiorina/tumor/ice_lab) -"rox" = ( -/obj/structure/platform_decoration, -/obj/structure/barricade/handrail/type_b{ - dir = 4; - layer = 3.5 +"roE" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/obj/effect/decal/medical_decals{ + icon_state = "triagedecalleft" }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"roF" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/machinery/computer/cameras{ + dir = 8 }, -/area/fiorina/station/disco) -"roC" = ( -/obj/item/tool/weldpack, -/turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"roN" = ( -/obj/structure/closet/crate/medical, -/obj/item/tool/surgery/bonegel, -/obj/item/tool/surgery/bonegel, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"roS" = ( -/obj/item/device/flashlight/lamp/tripod, +/area/fiorina/station/security) +"roH" = ( +/obj/structure/machinery/photocopier{ + pixel_y = 4 + }, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "darkredfull2" }, -/area/fiorina/station/power_ring) -"roY" = ( +/area/fiorina/oob) +"roQ" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "yellow" + }, +/area/fiorina/station/disco) +"rpf" = ( +/obj/structure/grille, /turf/open/floor/prison{ dir = 10; icon_state = "sterile_white" }, /area/fiorina/station/research_cells) -"rpe" = ( -/obj/structure/surface/rack, -/obj/item/tool/crowbar/red, -/obj/item/storage/pill_bottle/inaprovaline/skillless, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"rqL" = ( -/obj/structure/surface/rack, +"rpt" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/disco) +"rpL" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison, /area/fiorina/lz/near_lzII) -"rrb" = ( -/obj/structure/reagent_dispensers/water_cooler, +"rpT" = ( +/obj/item/ammo_casing{ + icon_state = "casing_5" + }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) +"rqh" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_ew_full_cap" + }, +/obj/structure/platform/stair_cut, +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) +"rqq" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/obj/effect/landmark/corpsespawner/ua_riot, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"rqA" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "blue" + }, +/area/fiorina/tumor/servers) +"rqC" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/fiorina/tumor/civres) +"rqG" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/area/fiorina/station/security/wardens) -"rrj" = ( -/obj/item/clothing/under/color/orange, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/civres_blue) +"rqY" = ( +/obj/structure/filingcabinet/disk, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/servers) +"rrs" = ( +/obj/item/stack/rods/plasteel, +/turf/open/floor/prison{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) "rru" = ( /obj/effect/spawner/random/goggles/midchance, /turf/open/organic/grass{ name = "astroturf" }, /area/fiorina/station/research_cells) -"rrP" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/prison{ - dir = 4; - icon_state = "green" - }, -/area/fiorina/station/chapel) -"rsh" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/clothing/mask/cigarette/weed{ - icon_state = "ucigoff" +"rrD" = ( +/obj/structure/machinery/landinglight/ds1{ + dir = 1 }, /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/station/lowsec) +/area/fiorina/lz/near_lzI) +"rsg" = ( +/obj/structure/platform_decoration, +/turf/open/floor/prison, +/area/fiorina/station/park) "rsp" = ( /obj/item/toy/crayon/purple, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"rss" = ( +"rsH" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/drinks/coffee, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, +/turf/open/floor/prison, /area/fiorina/station/medbay) -"rsz" = ( -/obj/structure/prop/structure_lattice{ - dir = 4; - health = 300 +"rsQ" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 8 }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 +/obj/structure/platform_decoration{ + dir = 10 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"rsE" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"rsW" = ( +/area/fiorina/station/power_ring) +"rsR" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" - }, -/area/fiorina/station/disco) -"rth" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 + dir = 5; + icon_state = "blue" }, +/area/fiorina/station/power_ring) +"rsU" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, /turf/open/floor/prison, /area/fiorina/tumor/aux_engi) -"rtM" = ( +"rtc" = ( +/obj/structure/window/framed/prison/reinforced, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"rtw" = ( /obj/structure/flora/pottedplant{ - icon_state = "pottedplant_29"; - pixel_y = 6 + icon_state = "pottedplant_22"; + layer = 2.8 }, +/obj/structure/barricade/handrail/type_b, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/security/wardens) -"rue" = ( -/obj/structure/monorail{ - dir = 10; - name = "launch track" +/area/fiorina/station/flight_deck) +"rty" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 }, -/turf/open/floor/plating/prison, -/area/fiorina/station/transit_hub) -"ruv" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "green" + dir = 5; + icon_state = "blue" }, -/area/fiorina/station/chapel) -"ruy" = ( +/area/fiorina/station/civres_blue) +"rtP" = ( +/obj/item/trash/cigbutt, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/tumor/ice_lab) -"ruB" = ( -/obj/effect/decal/medical_decals{ - dir = 4; - icon_state = "triagedecaldir" +/area/fiorina/station/medbay) +"rur" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" }, +/area/fiorina/station/park) +"ruu" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/alien/weeds/node, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 8; + icon_state = "darkbrown2" }, -/area/fiorina/station/medbay) +/area/fiorina/tumor/aux_engi) "ruD" = ( /turf/open/floor/wood, /area/fiorina/oob) -"ruE" = ( -/obj/effect/landmark/monkey_spawn, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) "ruJ" = ( /obj/structure/disposalpipe/segment{ color = "#c4c4c4"; @@ -28221,53 +28685,22 @@ }, /turf/closed/wall/prison, /area/fiorina/tumor/servers) -"rvf" = ( -/obj/effect/decal/cleanable/blood/tracks/footprints{ - dir = 1; - icon_state = "human2" - }, -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/lowsec) -"rvu" = ( -/obj/structure/toilet, -/turf/open/floor/prison{ - icon_state = "sterile_white" - }, -/area/fiorina/station/civres_blue) -"rvR" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/firstaid/adv{ - pixel_x = -5; - pixel_y = 2 - }, -/obj/item/storage/firstaid/adv{ - pixel_x = 9; - pixel_y = 2 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"rvW" = ( -/obj/structure/bed/chair, -/turf/open/floor/prison{ - icon_state = "bluecorner" - }, -/area/fiorina/station/power_ring) "rwj" = ( /obj/structure/barricade/plasteel, /turf/open/organic/grass{ name = "astroturf" }, /area/fiorina/station/park) -"rwt" = ( -/obj/effect/decal/cleanable/blood, +"rwm" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitepurple" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/research_cells) "rwu" = ( /obj/structure/bed/chair{ dir = 1 @@ -28280,95 +28713,89 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"rxh" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"rwK" = ( +/obj/item/clothing/under/color/orange, +/obj/item/clothing/under/color/orange, +/obj/item/clothing/under/color/orange, +/obj/structure/surface/rack, +/turf/open/floor/prison{ + dir = 4; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) +"rwQ" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/prison{ + dir = 8; + icon_state = "greenblue" }, +/area/fiorina/station/botany) +"rxg" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" + icon_state = "redcorner" }, -/area/fiorina/station/park) +/area/fiorina/station/security) "rxr" = ( /obj/structure/bed/chair/office/light{ dir = 8 }, /turf/open/floor/almayer_hull, /area/fiorina/oob) -"rxz" = ( -/obj/structure/curtain/open/black, -/turf/open/floor/prison, -/area/fiorina/maintenance) -"rym" = ( -/obj/structure/inflatable/popped/door, -/turf/open/floor/plating/prison, -/area/fiorina/station/disco) -"ryt" = ( -/obj/structure/window/framed/prison/reinforced, -/turf/open/floor/prison, -/area/fiorina/station/security) -"ryx" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" +"rxL" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4 }, -/area/fiorina/tumor/aux_engi) +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/fiorina/oob) +"rxM" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) "ryJ" = ( /obj/structure/machinery/door/airlock/prison/horizontal{ dir = 4 }, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"ryN" = ( +"rzp" = ( /turf/open/floor/prison{ - dir = 5; - icon_state = "whitegreen" + dir = 9; + icon_state = "yellow" }, -/area/fiorina/station/medbay) +/area/fiorina/station/lowsec) "rzt" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"rzR" = ( -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/prison{ - dir = 8; - icon_state = "bluecorner" +"rzF" = ( +/obj/structure/holohoop{ + pixel_y = 25 }, -/area/fiorina/station/power_ring) -"rAa" = ( -/obj/item/pamphlet/skill/powerloader, -/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"rAe" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) -"rAk" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 4 + icon_state = "yellow" }, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) +/area/fiorina/station/lowsec) "rAm" = ( /obj/structure/surface/rack, /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz2_maint) -"rAt" = ( -/obj/structure/barricade/wooden, +"rAw" = ( +/obj/structure/bed/chair, /turf/open/floor/prison{ - icon_state = "whitepurple" + dir = 10; + icon_state = "sterile_white" }, /area/fiorina/station/research_cells) "rAK" = ( @@ -28381,35 +28808,22 @@ health = 250; icon_state = "metal_1" }, -/turf/open/floor/wood, -/area/fiorina/station/park) -"rAQ" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"rAW" = ( -/obj/structure/largecrate/random, -/obj/structure/barricade/wooden, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/disco) -"rBa" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/window/reinforced{ - dir = 8 +/turf/open/floor/wood, +/area/fiorina/station/park) +"rAU" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/obj/item/stack/cable_coil, /turf/open/floor/prison{ icon_state = "floor_plate" }, +/area/fiorina/tumor/civres) +"rAY" = ( +/obj/item/ammo_magazine/rifle/m16{ + current_rounds = 0 + }, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/prison, /area/fiorina/station/security) "rBr" = ( /obj/item/device/flashlight/lamp/tripod, @@ -28420,6 +28834,15 @@ icon_state = "plate" }, /area/fiorina/station/civres_blue) +"rBu" = ( +/obj/structure/barricade/handrail/type_b{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/flight_deck) "rBz" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -28429,13 +28852,15 @@ "rBF" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/flight_deck) -"rBR" = ( -/obj/effect/decal/cleanable/blood/oil, +"rCe" = ( +/obj/structure/platform{ + dir = 4 + }, /turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" + dir = 6; + icon_state = "yellow" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/disco) "rCq" = ( /obj/structure/largecrate/supply/supplies/flares, /turf/open/floor/plating/prison, @@ -28446,96 +28871,49 @@ }, /turf/open/floor/wood, /area/fiorina/station/lowsec) -"rCL" = ( -/obj/structure/machinery/optable{ - desc = "This maybe could be used for advanced medical procedures."; - name = "Exam Table" - }, -/obj/item/bedsheet/ce{ - desc = "It crinkles, aggressively."; - name = "sterile wax sheet" - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/medbay) -"rCO" = ( +"rDu" = ( /obj/structure/stairs/perspective{ dir = 8; - icon_state = "p_stair_ew_full_cap" - }, -/obj/structure/platform/stair_cut, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/servers) -"rDl" = ( -/obj/item/trash/hotdog, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"rDm" = ( -/obj/item/tool/crowbar/red, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"rEe" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/station/botany) -"rEg" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 + icon_state = "p_stair_full" }, -/obj/item/storage/fancy/cigarettes/blackpack, -/turf/open/floor/prison{ - dir = 6; - icon_state = "whitepurple" +/obj/structure/platform, +/obj/structure/barricade/handrail/type_b{ + layer = 3.4 }, -/area/fiorina/station/research_cells) -"rEm" = ( -/obj/item/tool/weldingtool/largetank, /turf/open/floor/plating/prison, -/area/fiorina/station/civres_blue) -"rEH" = ( -/turf/open/floor/prison{ - icon_state = "platingdmg1" - }, -/area/fiorina/oob) -"rFr" = ( -/obj/structure/barricade/wooden{ - dir = 4; - pixel_y = 4 - }, -/turf/open/floor/prison{ - icon_state = "damaged3" - }, -/area/fiorina/station/disco) +/area/fiorina/station/medbay) "rFu" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison/chapel_carpet{ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"rFT" = ( -/obj/item/ammo_casing{ - icon_state = "casing_7_1" +"rFw" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"rFF" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" }, +/area/fiorina/tumor/ice_lab) +"rGc" = ( +/obj/structure/closet/firecloset/full, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/lowsec) +/area/fiorina/tumor/ice_lab) +"rGe" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer3/laptop/secure_data, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) "rGf" = ( /turf/open/auto_turf/sand/layer1, /area/fiorina/station/disco) @@ -28558,32 +28936,22 @@ name = "astroturf" }, /area/fiorina/station/park) -"rGV" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/lowsec) -"rHd" = ( -/obj/item/stock_parts/manipulator/pico, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkpurple2" - }, -/area/fiorina/tumor/servers) -"rHj" = ( -/obj/structure/surface/table/reinforced/prison{ - flipped = 1 +"rHf" = ( +/obj/structure/machinery/optable{ + desc = "This maybe could be used for advanced medical procedures."; + name = "Exam Table" }, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) +"rHh" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/prison{ + icon_state = "floorscorched1" + }, +/area/fiorina/station/chapel) "rHr" = ( /obj/effect/alien/weeds/node, /turf/open/floor/plating/prison, @@ -28592,59 +28960,58 @@ /obj/structure/window/framed/prison, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"rHx" = ( +"rHV" = ( +/obj/structure/bed/chair, /obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/civres_blue) -"rIo" = ( +/area/fiorina/tumor/servers) +"rHX" = ( /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "sterile_white" }, -/area/fiorina/station/chapel) -"rIC" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" +/area/fiorina/tumor/ice_lab) +"rIr" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 }, -/obj/structure/platform, -/turf/open/floor/prison, -/area/fiorina/station/disco) +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"rIy" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/phone{ + pixel_y = 7 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/station/security) "rIE" = ( /obj/item/stack/rods, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"rII" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) "rIS" = ( /obj/structure/sign/poster{ icon_state = "poster6" }, /turf/closed/wall/prison, /area/fiorina/station/medbay) -"rIW" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison{ - icon_state = "red" - }, -/area/fiorina/station/security) -"rIX" = ( +"rJc" = ( +/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) +/area/fiorina/station/chapel) "rJh" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/plating/prison, @@ -28655,18 +29022,22 @@ }, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"rJK" = ( +"rJF" = ( /turf/open/floor/prison{ - icon_state = "blue" + icon_state = "floor_plate" }, /area/fiorina/station/chapel) "rJO" = ( /turf/open/floor/carpet, /area/fiorina/station/security/wardens) -"rJT" = ( -/obj/item/storage/bag/trash, +"rJW" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 + }, /turf/open/floor/prison, -/area/fiorina/station/disco) +/area/fiorina/lz/near_lzI) "rJZ" = ( /obj/item/stack/cable_coil/green, /turf/open/floor/plating/prison, @@ -28681,99 +29052,94 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"rKB" = ( +"rKd" = ( +/obj/item/stool, +/obj/structure/sign/poster{ + icon_state = "poster14"; + pixel_y = 32 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) +"rKm" = ( +/obj/structure/machinery/vending/coffee, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) +"rKs" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/ammo_magazine/rifle/m16, +/obj/item/storage/box/cups, /turf/open/floor/prison{ - icon_state = "darkyellow2" + icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzI) -"rKS" = ( -/obj/item/tool/wrench, +/area/fiorina/station/power_ring) +"rKy" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "darkpurple2" + dir = 1; + icon_state = "greenblue" }, -/area/fiorina/tumor/servers) -"rKX" = ( -/obj/effect/landmark/monkey_spawn, +/area/fiorina/station/botany) +"rKA" = ( +/obj/structure/bed/chair/comfy, /turf/open/floor/prison{ - dir = 4; icon_state = "blue" }, /area/fiorina/station/civres_blue) -"rKZ" = ( -/obj/item/storage/toolbox/electrical, -/turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"rLb" = ( -/obj/structure/surface/rack, -/obj/item/clothing/suit/storage/hazardvest, -/obj/item/clothing/suit/storage/hazardvest, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"rLC" = ( -/obj/structure/window{ - dir = 4 +"rKG" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + dir = 8; + icon_state = "blue_plate" }, -/obj/item/circuitboard/machine/rdserver, +/area/fiorina/station/botany) +"rLA" = ( +/obj/structure/platform, +/turf/open/floor/prison, +/area/fiorina/station/botany) +"rLG" = ( /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "whitepurple" }, -/area/fiorina/tumor/servers) +/area/fiorina/station/research_cells) "rLJ" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/chapel) -"rLT" = ( -/obj/structure/machinery/photocopier, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"rMg" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/tumor/civres) -"rMt" = ( -/obj/item/shard{ - icon_state = "medium" - }, +"rMo" = ( +/obj/effect/landmark/objective_landmark/far, +/obj/structure/closet/secure_closet/engineering_personal, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 1; + icon_state = "darkbrown2" }, -/area/fiorina/tumor/servers) -"rME" = ( -/obj/structure/machinery/bot/medbot, +/area/fiorina/maintenance) +"rMq" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"rMP" = ( -/obj/structure/barricade/metal/wired{ - dir = 1 - }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"rMS" = ( -/obj/structure/largecrate/random/secure, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 1 - }, +"rMw" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - dir = 6; - icon_state = "whitegreen" + dir = 5; + icon_state = "yellow" }, -/area/fiorina/station/medbay) +/area/fiorina/station/disco) +"rMT" = ( +/obj/structure/prop/almayer/computers/mission_planning_system{ + density = 0; + desc = "Its a telephone, and a computer. Woah."; + name = "\improper funny telephone booth"; + pixel_y = 21 + }, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "rMY" = ( /obj/structure/machinery/light/small{ dir = 8; @@ -28795,46 +29161,25 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) -"rNp" = ( -/obj/item/reagent_container/glass/bucket/mopbucket, -/obj/item/tool/mop, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"rNF" = ( -/obj/item/stack/sandbags/large_stack, +"rNK" = ( +/obj/effect/spawner/random/gun/pistol/lowchance, /turf/open/floor/prison{ - dir = 6; - icon_state = "green" - }, -/area/fiorina/tumor/civres) -"rOa" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_tram) -"rOm" = ( -/obj/structure/platform_decoration{ - dir = 4 + dir = 1; + icon_state = "darkbrown2" }, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"rOo" = ( -/obj/structure/monorail{ - dir = 9; - name = "launch track" +/area/fiorina/station/park) +"rNV" = ( +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" }, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/aux_engi) +/area/fiorina/tumor/civres) "rOu" = ( /obj/structure/closet, /obj/effect/spawner/random/sentry/midchance, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"rOE" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) "rOI" = ( /obj/structure/flora/bush/ausbushes/ausbush{ desc = "Fiberbush(tm) infestations have been the leading cause in asbestos related deaths in spacecraft for 3 years in a row now."; @@ -28843,27 +29188,39 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"rON" = ( -/obj/structure/closet/crate/trashcart, -/obj/item/storage/pill_bottle/kelotane/skillless, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison, -/area/fiorina/station/park) -"rPh" = ( +"rOL" = ( +/obj/structure/machinery/floodlight{ + name = "Yard Floodlight" + }, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) -"rPu" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/structure/machinery/landinglight/ds1/delaytwo{ - dir = 1 +/area/fiorina/station/central_ring) +"rPd" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/stack/sheet/metal/medium_stack, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/civres) +"rPf" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/toolbox, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/transit_hub) +"rPD" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/lowsec) "rPI" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/drinks/cans/souto/cherry{ @@ -28891,20 +29248,16 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"rPQ" = ( -/obj/structure/sign/poster{ - desc = "You are becoming hysterical."; - icon_state = "poster11"; - pixel_x = -24 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/medbay) "rPS" = ( /obj/item/device/flashlight/lamp/tripod, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) +"rPW" = ( +/obj/effect/spawner/random/gun/rifle/lowchance, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/lz/near_lzI) "rPZ" = ( /obj/item/shard{ icon_state = "medium" @@ -28917,24 +29270,19 @@ /obj/effect/landmark/objective_landmark/far, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"rQm" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 - }, -/obj/structure/platform_decoration, +"rQu" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/stack/cable_coil/orange, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/disco) -"rQF" = ( -/obj/effect/decal/cleanable/blood, +/area/fiorina/maintenance) +"rQB" = ( /turf/open/floor/prison{ dir = 8; - icon_state = "greencorner" + icon_state = "sterile_white" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/lowsec) "rQK" = ( /obj/item/bananapeel{ name = "tactical banana peel" @@ -28943,45 +29291,34 @@ icon_state = "squares" }, /area/fiorina/station/medbay) -"rQP" = ( -/obj/structure/machinery/power/terminal{ - dir = 8 - }, +"rQN" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "bluecorner" + dir = 6; + icon_state = "darkbrown2" }, /area/fiorina/station/power_ring) -"rRb" = ( -/obj/item/shard{ - icon_state = "large" - }, +"rRg" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/stack/sheet/mineral/plastic, /turf/open/floor/prison{ icon_state = "darkpurplefull2" }, /area/fiorina/tumor/servers) -"rRO" = ( -/obj/item/ammo_magazine/rifle/m16{ - current_rounds = 0 - }, -/obj/structure/machinery/light/double/blue{ +"rRo" = ( +/turf/open/floor/prison{ dir = 1; - pixel_y = 21 + icon_state = "darkyellow2" }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"rRT" = ( -/obj/item/clothing/under/color/orange, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/station/telecomm/lz1_tram) +"rRz" = ( +/obj/structure/bed/chair/comfy{ + dir = 1 }, -/area/fiorina/station/security) -"rSh" = ( -/obj/item/stack/sheet/metal, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 1; + icon_state = "blue" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/civres_blue) "rSr" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ dir = 1; @@ -28989,19 +29326,38 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"rSM" = ( -/obj/structure/inflatable/popped, +"rSN" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/machinery/autolathe/full{ + layer = 2.98 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"rSU" = ( +/obj/structure/barricade/sandbags{ + dir = 4; + icon_state = "sandbag_0"; + pixel_y = 2 + }, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) +"rTd" = ( +/obj/item/ammo_casing{ + icon_state = "casing_5" + }, /turf/open/floor/prison{ + dir = 8; icon_state = "whitegreen" }, -/area/fiorina/station/medbay) -"rTb" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" +/area/fiorina/tumor/ice_lab) +"rTD" = ( +/obj/effect/spawner/random/powercell, +/turf/open/floor/prison{ + icon_state = "bluefull" }, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/power_ring) "rTH" = ( /obj/structure/sign/prop1{ layer = 2.5; @@ -29009,60 +29365,78 @@ }, /turf/open/floor/carpet, /area/fiorina/station/security/wardens) -"rTL" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_ew_full_cap" +"rTV" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/splatter{ + icon_state = "gibup1" }, -/obj/structure/platform/stair_cut/alt, -/turf/open/floor/plating/prison, -/area/fiorina/station/civres_blue) -"rUc" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "cell_stripe" + dir = 1; + icon_state = "whitegreen" }, -/area/fiorina/lz/near_lzI) -"rUr" = ( -/obj/structure/monorail{ - dir = 4; - name = "launch track" +/area/fiorina/station/medbay) +"rTZ" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitepurplecorner" }, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/research_cells) +"rUf" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "darkyellow2" + }, +/area/fiorina/tumor/servers) "rUA" = ( /obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating/prison, /area/fiorina/tumor/fiberbush) -"rUL" = ( -/obj/item/stack/cable_coil/green, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"rUQ" = ( +/obj/structure/prop/almayer/computers/mission_planning_system{ + density = 0; + desc = "Its a telephone, and a computer. Woah."; + name = "\improper funny telephone booth"; + pixel_y = 21 }, -/area/fiorina/tumor/civres) -"rUT" = ( -/obj/item/shard{ - icon_state = "medium" +/obj/structure/prop/almayer/computers/mission_planning_system{ + density = 0; + desc = "Its a telephone, and a computer. Woah."; + name = "\improper funny telephone booth"; + pixel_x = 17; + pixel_y = 21 }, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/security) -"rUY" = ( -/obj/structure/platform_decoration, +/area/fiorina/station/medbay) +"rVi" = ( +/obj/structure/barricade/handrail/type_b, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 6; + icon_state = "darkyellow2" }, -/area/fiorina/station/disco) -"rVy" = ( -/obj/structure/bed{ - icon_state = "abed" +/area/fiorina/station/flight_deck) +"rVp" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + dir = 6; + icon_state = "darkbrown2" }, -/obj/effect/spawner/random/pills/midchance, +/area/fiorina/maintenance) +"rVL" = ( +/obj/structure/largecrate/supply, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitepurple" + dir = 1; + icon_state = "yellow" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/lowsec) "rVM" = ( /obj/structure/closet/crate/miningcar, /obj/structure/barricade/wooden{ @@ -29075,121 +29449,133 @@ /obj/item/reagent_container/food/drinks/cans/beer, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"rVS" = ( -/obj/effect/landmark/corpsespawner/ua_riot/burst, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"rVQ" = ( +/obj/item/stack/sheet/metal/medium_stack, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"rVV" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 }, +/turf/open/floor/prison, +/area/fiorina/station/security) +"rWt" = ( +/obj/item/stack/cable_coil/cut, +/turf/open/floor/prison, /area/fiorina/tumor/servers) -"rVZ" = ( -/obj/structure/bed/chair/comfy{ - dir = 4 +"rWQ" = ( +/obj/structure/disposalpipe/segment{ + color = "#c4c4c4"; + dir = 2; + layer = 6; + name = "overhead pipe"; + pixel_x = -16; + pixel_y = 12 }, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"rXt" = ( +/obj/structure/surface/rack, +/obj/item/device/camera, /turf/open/floor/prison{ - dir = 6; - icon_state = "blue" + icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) -"rWi" = ( -/obj/structure/machinery/vending/sovietsoda, +/area/fiorina/tumor/fiberbush) +"rYw" = ( +/obj/item/trash/liquidfood, /turf/open/floor/prison{ - dir = 1; - icon_state = "blue_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/botany) -"rWX" = ( -/turf/open/floor/prison{ - icon_state = "damaged3" +/area/fiorina/tumor/ice_lab) +"rYy" = ( +/obj/item/stool{ + pixel_x = -4; + pixel_y = 10 }, -/area/fiorina/station/disco) -"rWZ" = ( -/obj/item/weapon/gun/rifle/m16, -/obj/item/ammo_casing{ - dir = 6; - icon_state = "casing_5" +/obj/structure/sign/poster{ + icon_state = "poster1"; + pixel_y = 32 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + dir = 1; + icon_state = "yellow" }, -/area/fiorina/station/telecomm/lz1_cargo) -"rXz" = ( -/obj/structure/pipes/unary/freezer{ - icon_state = "freezer_1" +/area/fiorina/station/lowsec) +"rYK" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) +"rYY" = ( +/obj/structure/bed/roller, +/obj/structure/machinery/filtration/console{ + can_block_movement = 0; + pixel_y = 22 }, +/obj/item/trash/used_stasis_bag, +/turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"rXT" = ( -/obj/structure/machinery/vending/cigarette/colony, +"rZe" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" + icon_state = "redfull" }, -/area/fiorina/lz/near_lzI) -"rYC" = ( -/obj/structure/stairs/perspective{ - dir = 10; - icon_state = "p_stair_full" +/area/fiorina/station/security/wardens) +"rZi" = ( +/turf/closed/shuttle/ert{ + icon_state = "stan_rightengine" }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"rYJ" = ( -/obj/structure/reagent_dispensers/watertank, +/area/fiorina/station/power_ring) +"rZI" = ( +/obj/structure/surface/rack, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrown2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/aux_engi) -"rZa" = ( -/obj/structure/barricade/metal/wired{ +/area/fiorina/station/medbay) +"rZN" = ( +/obj/structure/bed/chair/comfy{ dir = 8 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 9; + icon_state = "darkyellow2" }, -/area/fiorina/lz/near_lzI) -"rZh" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_ew_full_cap" +/area/fiorina/station/flight_deck) +"rZO" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 }, -/obj/structure/platform/stair_cut/alt, -/turf/open/floor/plating/prison, -/area/fiorina/station/park) -"rZi" = ( -/turf/closed/shuttle/ert{ - icon_state = "stan_rightengine" +/turf/open/floor/prison{ + icon_state = "redfull" }, -/area/fiorina/station/power_ring) -"rZr" = ( -/obj/item/stack/sandbags_empty/half, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) +/area/fiorina/station/security) "rZP" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/tumor/aux_engi) -"sad" = ( -/turf/open/floor/prison{ - dir = 9; - icon_state = "yellow" +"saL" = ( +/obj/structure/reagent_dispensers/water_cooler{ + pixel_x = -9; + pixel_y = 8 }, -/area/fiorina/station/disco) -"saI" = ( -/obj/item/stack/rods, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" +/obj/structure/reagent_dispensers/water_cooler{ + pixel_x = 11; + pixel_y = 8 + }, +/obj/structure/reagent_dispensers/water_cooler{ + pixel_x = 1; + pixel_y = 8 }, -/area/fiorina/tumor/aux_engi) -"saQ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/pill_bottle/inaprovaline/skillless, /turf/open/floor/prison{ - dir = 1; - icon_state = "blue_plate" + icon_state = "floor_plate" }, -/area/fiorina/station/botany) +/area/fiorina/station/power_ring) "sbf" = ( /obj/effect/landmark/corpsespawner/prisoner, /turf/open/gm/river{ @@ -29197,88 +29583,64 @@ name = "pool" }, /area/fiorina/station/park) -"sbg" = ( -/obj/item/trash/cigbutt, +"sbF" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 4; + icon_state = "red" }, -/area/fiorina/station/medbay) -"sbj" = ( -/obj/structure/bed/sofa/vert/grey/top, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_tram) -"sbp" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/firstaid/regular, +/area/fiorina/station/security) +"sbL" = ( +/obj/structure/surface/rack, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, -/area/fiorina/station/medbay) -"sbM" = ( -/obj/structure/bed/chair/comfy{ - dir = 8 +/area/fiorina/tumor/ice_lab) +"sbU" = ( +/obj/item/trash/pistachios, +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"sbW" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" + dir = 4; + icon_state = "greenbluecorner" }, -/area/fiorina/station/disco) -"sbQ" = ( +/area/fiorina/station/botany) +"scp" = ( /obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/toolbox, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"sbY" = ( -/obj/structure/inflatable, -/obj/structure/barricade/handrail/type_b, -/obj/structure/barricade/handrail/type_b{ - dir = 8 - }, +/obj/item/trash/uscm_mre, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"scg" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/lowsec) -"sct" = ( -/obj/structure/closet/crate/delta{ - desc = "A crate with delta squad's symbol on it. Now how did that get here? The words 'HEFA was never real' are scrawled on it in black ink."; - name = "crate" - }, -/obj/item/ammo_box/magazine/shotgun/buckshot, +"scG" = ( +/obj/item/reagent_container/food/drinks/sillycup, /turf/open/floor/prison, -/area/fiorina/station/medbay) -"scw" = ( -/obj/item/storage/beer_pack{ - pixel_y = 10 - }, -/obj/structure/surface/table/reinforced/prison, +/area/fiorina/station/flight_deck) +"scH" = ( +/obj/structure/machinery/washing_machine, /turf/open/floor/prison{ - icon_state = "yellow" + icon_state = "sterile_white" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/civres_blue) "scM" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/telecomm/lz1_tram) -"scU" = ( -/obj/structure/window/reinforced{ - dir = 4 +"scS" = ( +/obj/structure/barricade/handrail/type_b{ + dir = 8; + layer = 3.5 }, -/obj/item/storage/briefcase, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/security/wardens) +/area/fiorina/station/disco) "scZ" = ( /obj/structure/platform, /obj/structure/platform{ @@ -29289,21 +29651,24 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/security) -"sde" = ( -/obj/item/tool/kitchen/utensil/fork, +"sda" = ( +/obj/structure/largecrate/supply/supplies/mre, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"sdr" = ( +/obj/effect/landmark/corpsespawner/ua_riot, /turf/open/floor/prison{ dir = 10; - icon_state = "floor_plate" + icon_state = "whitegreenfull" }, -/area/fiorina/station/flight_deck) -"sdg" = ( -/obj/item/implanter/compressed, -/obj/structure/safe, -/obj/effect/landmark/objective_landmark/science, +/area/fiorina/station/medbay) +"sdE" = ( +/obj/item/storage/wallet/random, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 10; + icon_state = "kitchen" }, -/area/fiorina/station/security) +/area/fiorina/tumor/civres) "sdK" = ( /obj/structure/surface/table/woodentable, /obj/item/device/flashlight/lamp{ @@ -29313,33 +29678,68 @@ }, /turf/open/floor/carpet, /area/fiorina/station/civres_blue) +"sdR" = ( +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) +"sdV" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/fiorina/station/telecomm/lz1_cargo) "sdY" = ( /obj/structure/largecrate/random, /turf/open/floor/corsat{ icon_state = "plate" }, /area/fiorina/station/civres_blue) -"sel" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_ew_full_cap" +"seh" = ( +/obj/item/reagent_container/glass/bucket/janibucket, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/civres_blue) +"set" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) +"seF" = ( +/obj/structure/monorail{ + dir = 6; + name = "launch track" }, -/obj/structure/platform/stair_cut, /turf/open/floor/plating/prison, -/area/fiorina/station/park) +/area/fiorina/lz/near_lzII) "seW" = ( /turf/closed/shuttle/ert{ icon_state = "stan_r_w" }, /area/fiorina/tumor/ship) -"seY" = ( -/obj/item/frame/rack, -/obj/item/clothing/suit/storage/marine/veteran/ua_riot, -/obj/item/clothing/suit/storage/marine/veteran/ua_riot, +"sfe" = ( +/obj/structure/barricade/wooden{ + dir = 1 + }, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 8; + icon_state = "darkyellow2" }, -/area/fiorina/station/security) +/area/fiorina/station/telecomm/lz1_cargo) "sfi" = ( /obj/structure/platform_decoration{ dir = 1 @@ -29348,6 +29748,18 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) +"sfn" = ( +/obj/structure/disposalpipe/segment{ + icon_state = "delivery_outlet"; + layer = 6; + name = "overhead ducting"; + pixel_y = 33 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "kitchen" + }, +/area/fiorina/tumor/civres) "sfs" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/storage/fancy/candle_box, @@ -29356,29 +29768,69 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"sfw" = ( +"sfu" = ( +/obj/structure/toilet{ + dir = 4; + pixel_y = 8 + }, /turf/open/floor/prison{ - dir = 6; - icon_state = "darkbrown2" + dir = 9; + icon_state = "yellow" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/lowsec) +"sfI" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/aux_engi) "sfW" = ( /obj/structure/platform{ dir = 8 }, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"sgb" = ( -/obj/item/ammo_box/magazine/misc/flares/empty, +"sfZ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/weapon/baton, +/obj/item/reagent_container/food/drinks/coffee{ + pixel_x = -6; + pixel_y = 12 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/station/research_cells) +"sga" = ( +/obj/effect/decal{ + icon = 'icons/obj/items/policetape.dmi'; + icon_state = "engineering_h"; + layer = 2.5; + pixel_y = -11 + }, +/obj/structure/barricade/metal/wired, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/flight_deck) +"sgt" = ( +/obj/structure/inflatable/popped/door, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) "sgw" = ( /obj/structure/window_frame/prison, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) +"sgJ" = ( +/obj/structure/surface/rack, +/obj/item/storage/belt/gun/flaregun/full, +/obj/item/storage/belt/gun/flaregun/full, +/obj/item/storage/belt/gun/flaregun/full, +/turf/open/floor/prison{ + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) "sha" = ( /obj/item/storage/bible/hefa{ pixel_y = 3 @@ -29387,158 +29839,206 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/carpet, /area/fiorina/station/civres_blue) -"shq" = ( -/obj/structure/machinery/space_heater, +"shh" = ( +/obj/structure/machinery/shower{ + dir = 1; + pixel_y = -1 + }, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "kitchen" }, -/area/fiorina/tumor/ice_lab) -"shC" = ( -/obj/structure/machinery/autolathe/full, +/area/fiorina/station/research_cells) +"shH" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) +"sia" = ( +/obj/effect/landmark/objective_landmark/far, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/aux_engi) +"sig" = ( +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/fiberbush) +"siy" = ( +/obj/item/stack/cable_coil, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) +"siB" = ( +/obj/item/poster, +/turf/open/floor/prison{ + dir = 9; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"siE" = ( +/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, /turf/open/floor/prison{ icon_state = "darkbrownfull2" }, /area/fiorina/tumor/aux_engi) -"shG" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 +"siK" = ( +/obj/structure/prop/resin_prop{ + dir = 1; + icon_state = "chair"; + pixel_y = 6 + }, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"siW" = ( +/obj/structure/closet/bodybag, +/obj/effect/decal/cleanable/blood/gibs/up, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) +"sjd" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_ew_full_cap" }, +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzI) +"sjJ" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/clothing/gloves/latex, +/obj/structure/machinery/recharger{ + pixel_y = 4 + }, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "darkredfull2" }, -/area/fiorina/station/medbay) -"siz" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_sn_full_cap" +/area/fiorina/station/security) +"sjM" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/goggles/lowchance, +/turf/open/floor/prison{ + icon_state = "redfull" }, -/obj/structure/platform{ +/area/fiorina/station/security) +"sjR" = ( +/obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 8 }, +/obj/structure/barricade/wooden{ + dir = 4; + pixel_y = 4 + }, +/turf/open/organic/grass{ + name = "astroturf" + }, +/area/fiorina/station/park) +"sjT" = ( +/obj/structure/prop/structure_lattice{ + dir = 4; + health = 300 + }, +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 + }, +/obj/structure/disposalpipe/segment{ + color = "#c4c4c4"; + dir = 2; + layer = 6; + name = "overhead pipe"; + pixel_x = -16; + pixel_y = 12 + }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) -"siR" = ( -/obj/structure/machinery/shower{ - pixel_y = 13 +/area/fiorina/tumor/servers) +"sjX" = ( +/obj/item/reagent_container/blood, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenbluecorner" + }, +/area/fiorina/station/botany) +"sjZ" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, -/obj/item/tool/soap/syndie, -/obj/structure/closet/crate/trashcart, -/obj/effect/spawner/random/gun/special, -/obj/effect/landmark/objective_landmark/far, /turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" + icon_state = "yellowfull" }, -/area/fiorina/tumor/civres) -"sjc" = ( -/obj/structure/barricade/sandbags{ - dir = 8; - icon_state = "sandbag_0" +/area/fiorina/station/lowsec) +"skj" = ( +/obj/structure/closet/crate/miningcar{ + name = "\improper materials storage bin" }, +/obj/item/reagent_container/food/snacks/meat, /turf/open/floor/prison{ - icon_state = "darkyellow2" + icon_state = "yellow" }, -/area/fiorina/station/telecomm/lz1_cargo) -"sjl" = ( -/obj/item/stack/nanopaste, +/area/fiorina/station/lowsec) +"skG" = ( /turf/open/floor/prison{ - dir = 1; + dir = 10; icon_state = "blue" }, -/area/fiorina/station/civres_blue) -"sjn" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" +/area/fiorina/tumor/servers) +"slc" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/station/park) +"slh" = ( +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, -/area/fiorina/tumor/ice_lab) -"sjw" = ( -/turf/open/floor/prison{ - icon_state = "whitegreencorner" - }, -/area/fiorina/station/medbay) -"sjx" = ( -/obj/structure/machinery/vending/cola, -/turf/open/floor/prison, /area/fiorina/station/medbay) -"sjR" = ( -/obj/structure/flora/grass/tallgrass/jungle/corner{ - dir = 8 - }, +"sli" = ( /obj/structure/barricade/wooden{ - dir = 4; - pixel_y = 4 - }, -/turf/open/organic/grass{ - name = "astroturf" - }, -/area/fiorina/station/park) -"skM" = ( -/obj/effect/landmark/nightmare{ - insert_tag = "repairpanelslz" + dir = 4 }, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"skO" = ( -/obj/item/trash/cigbutt, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/station/telecomm/lz1_cargo) -"slG" = ( -/obj/structure/machinery/disposal, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) -"slM" = ( -/obj/structure/closet/crate/trashcart, -/obj/item/trash/waffles, -/obj/item/stack/sheet/mineral/plastic, -/obj/item/stack/sheet/mineral/plastic, -/obj/item/stack/sheet/mineral/plastic, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/plating/prison, -/area/fiorina/maintenance) -"sma" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 4 - }, +"sls" = ( +/obj/structure/pipes/standard/tank/oxygen, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "sterile_white" }, -/area/fiorina/tumor/ice_lab) -"smh" = ( -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 +/area/fiorina/station/medbay) +"slR" = ( +/obj/effect/decal/cleanable/blood{ + desc = "Watch your step."; + icon_state = "gib6" }, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + dir = 4; + icon_state = "darkyellow2" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"slT" = ( +/obj/structure/bed/chair/comfy{ + dir = 1 }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"smj" = ( +/obj/structure/barricade/handrail/type_b, +/turf/open/floor/prison, /area/fiorina/station/disco) -"smq" = ( -/obj/structure/closet/emcloset, +"sms" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "bluecorner" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/civres_blue) "smv" = ( /obj/item/trash/used_stasis_bag{ desc = "Wow, instant sand. They really have everything in space."; @@ -29546,64 +30046,40 @@ }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"smX" = ( -/obj/item/stock_parts/matter_bin/super, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkpurple2" +"smR" = ( +/obj/structure/barricade/metal/wired{ + dir = 8 }, -/area/fiorina/tumor/servers) -"snp" = ( -/obj/structure/machinery/vending/cigarette/colony, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/chapel) -"snq" = ( +/area/fiorina/lz/near_lzI) +"snr" = ( /obj/structure/platform{ - dir = 1 - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4 }, -/area/fiorina/station/park) -"sns" = ( -/obj/structure/machinery/vending/coffee, -/turf/open/floor/prison, -/area/fiorina/station/security) -"snO" = ( +/obj/item/stool, /turf/open/floor/prison{ - dir = 6; - icon_state = "blue" + icon_state = "bluefull" }, -/area/fiorina/station/power_ring) -"soc" = ( -/obj/effect/decal/cleanable/blood{ - dir = 4; - icon_state = "gib6" +/area/fiorina/station/civres_blue) +"snW" = ( +/obj/structure/prop/resin_prop{ + icon_state = "rack" }, -/obj/effect/spawner/random/gun/rifle, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"sol" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/device/camera, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + icon_state = "darkbrownfull2" }, +/area/fiorina/tumor/aux_engi) +"soj" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/station/medbay) +/area/fiorina/station/botany) "sov" = ( /turf/closed/shuttle/ert{ icon_state = "rightengine_1"; @@ -29616,15 +30092,14 @@ /obj/item/clothing/suit/armor/det_suit, /turf/open/floor/wood, /area/fiorina/station/civres_blue) -"soQ" = ( -/obj/structure/bed{ - icon_state = "abed" - }, +"spb" = ( +/obj/structure/closet/secure_closet/hydroponics, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitepurple" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/botany) "spl" = ( /obj/item/stack/sheet/metal, /obj/structure/barricade/handrail{ @@ -29634,17 +30109,52 @@ name = "astroturf" }, /area/fiorina/station/research_cells) -"sqg" = ( -/turf/open/floor/prison{ +"spm" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/flora/pottedplant{ + pixel_y = 9 + }, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison, +/area/fiorina/station/security) +"spA" = ( +/obj/structure/stairs/perspective{ dir = 8; - icon_state = "whitegreen" + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/prop/souto_land/pole{ + dir = 1 + }, +/obj/structure/prop/souto_land/pole{ + dir = 8; + pixel_y = 24 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) +"spH" = ( +/obj/structure/disposalpipe/segment{ + icon_state = "delivery_outlet"; + layer = 6; + name = "overhead ducting"; + pixel_y = 33 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" }, /area/fiorina/tumor/ice_lab) -"sql" = ( -/obj/structure/closet/bodybag, -/obj/effect/decal/cleanable/blood/gibs/body, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) +"spR" = ( +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/station/research_cells) "sqx" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ density = 0; @@ -29652,60 +30162,62 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/fiberbush) -"sqB" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - dir = 8; - icon_state = "cell_stripe" - }, -/area/fiorina/station/park) "sqC" = ( /obj/structure/extinguisher_cabinet, /turf/closed/wall/r_wall/prison, /area/fiorina/station/lowsec) -"sru" = ( +"sqR" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/stack/sheet/plasteel/medium_stack, -/obj/item/reagent_container/food/drinks/flask/vacuumflask{ - pixel_x = 7; - pixel_y = 22 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, +/obj/effect/spawner/random/supply_kit, +/turf/open/floor/prison, /area/fiorina/station/power_ring) -"srz" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"srp" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"srt" = ( +/obj/item/reagent_container/food/drinks/bottle/sake, /turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" + icon_state = "floor_plate" }, -/area/fiorina/station/disco) +/area/fiorina/tumor/civres) "srI" = ( /obj/item/tool/crowbar/red, /turf/open/floor/plating/prison, /area/fiorina/maintenance) +"srQ" = ( +/obj/structure/barricade/handrail, +/turf/open/floor/prison{ + dir = 5; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"ssb" = ( +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_tram) +"ssc" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "ywflowers_2" + }, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "sso" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/bag/plants, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"ssD" = ( -/obj/structure/machinery/door/poddoor/almayer/locked{ - indestructible = 1; - name = "launch bay door" - }, -/obj/structure/monorail{ - name = "launch track" - }, -/turf/open/floor/plating/prison, -/area/fiorina/oob) +"ssC" = ( +/obj/structure/largecrate/supply/supplies/tables_racks, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) "ssJ" = ( /obj/structure/lattice, /obj/structure/platform/kutjevo/smooth{ @@ -29713,119 +30225,191 @@ }, /turf/open/space, /area/fiorina/oob) +"ssM" = ( +/obj/structure/janitorialcart, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/civres_blue) "ssO" = ( /obj/item/ashtray/glass, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) +"ssR" = ( +/obj/item/clothing/under/shorts/black, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "sta" = ( /obj/structure/machinery/door/airlock/almayer/marine{ icon = 'icons/obj/structures/doors/prepdoor_charlie.dmi' }, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"stq" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +"stf" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"stw" = ( +/obj/structure/machinery/line_nexter, +/turf/open/floor/prison{ + dir = 8; + icon_state = "red" }, -/obj/structure/machinery/light/double/blue, +/area/fiorina/station/security) +"stC" = ( +/obj/structure/largecrate/random, /turf/open/floor/prison{ dir = 9; - icon_state = "yellow" + icon_state = "greenfull" }, -/area/fiorina/station/disco) -"stX" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "darkbrown2" +/area/fiorina/tumor/civres) +"stP" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 3 }, -/area/fiorina/tumor/aux_engi) -"suj" = ( -/obj/structure/barricade/wooden{ - dir = 1 +/turf/open/floor/prison, +/area/fiorina/station/central_ring) +"stU" = ( +/obj/structure/sign/poster{ + icon_state = "poster7"; + pixel_x = -26; + pixel_y = 6 }, +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"sun" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_sn_full_cap" + icon_state = "floor_plate" }, -/obj/structure/platform{ - dir = 8 +/area/fiorina/station/medbay) +"sue" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/device/tracker, +/turf/open/floor/prison{ + dir = 9; + icon_state = "yellow" }, -/turf/open/floor/plating/prison, /area/fiorina/station/disco) -"suB" = ( -/obj/structure/dropship_equipment/fulton_system, +"suq" = ( +/obj/item/stool, +/turf/open/floor/prison{ + dir = 10; + icon_state = "damaged2" + }, +/area/fiorina/station/lowsec) +"suX" = ( /turf/open/floor/prison, -/area/fiorina/station/power_ring) -"suE" = ( -/obj/structure/closet/secure_closet/guncabinet{ - req_access = null +/area/fiorina/station/central_ring) +"suY" = ( +/obj/item/device/cassette_tape/nam, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" }, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/reagent_container/glass/bottle/robot/antitoxin, -/obj/item/clothing/suit/storage/marine/veteran/ua_riot, -/obj/item/prop/helmetgarb/riot_shield, +/area/fiorina/station/medbay) +"svc" = ( +/obj/structure/prop/almayer/computers/sensor_computer2, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "darkredfull2" }, /area/fiorina/station/security) +"sve" = ( +/obj/item/explosive/grenade/phosphorus, +/obj/item/explosive/grenade/phosphorus, +/obj/item/explosive/grenade/phosphorus, +/obj/structure/surface/rack, +/obj/item/explosive/grenade/phosphorus, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) "svh" = ( /obj/structure/machinery/computer/telecomms/monitor, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"svF" = ( -/obj/structure/blocker/invisible_wall, +"svN" = ( +/obj/structure/machinery/shower{ + dir = 1; + pixel_y = -1 + }, +/obj/structure/machinery/shower{ + dir = 4 + }, /turf/open/floor/prison{ - dir = 9; - icon_state = "whitepurple" + icon_state = "kitchen" + }, +/area/fiorina/station/lowsec) +"svP" = ( +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/aux_engi) +"svW" = ( +/obj/structure/surface/rack, +/obj/item/clothing/gloves/latex, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/oob) -"svG" = ( -/obj/structure/machinery/portable_atmospherics/powered/pump, -/turf/open/floor/prison, /area/fiorina/station/medbay) "swg" = ( /obj/structure/platform_decoration/kutjevo, /turf/open/space, /area/fiorina/oob) -"swh" = ( -/obj/structure/machinery/power/geothermal, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"sws" = ( -/obj/structure/bed/chair/comfy{ - dir = 4 +"swj" = ( +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/tumor/civres) +"swJ" = ( +/obj/item/tool/shovel/snow, +/obj/item/device/flashlight, +/obj/structure/surface/rack, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" }, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_tram) -"syf" = ( -/obj/structure/inflatable, -/obj/structure/barricade/handrail/type_b{ - dir = 4 +/area/fiorina/tumor/ice_lab) +"swT" = ( +/obj/structure/platform{ + dir = 1 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"syF" = ( -/obj/structure/machinery/microwave{ - desc = "So uh yeah, about that cat..."; - icon_state = "mwbloodyo"; - pixel_y = 6 +/area/fiorina/tumor/ice_lab) +"sxc" = ( +/obj/item/weapon/gun/rifle/mar40, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/structure/surface/table/reinforced/prison, +/area/fiorina/station/lowsec) +"sxk" = ( +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) +/area/fiorina/tumor/servers) +"sxE" = ( +/turf/open/floor/prison{ + icon_state = "redcorner" + }, +/area/fiorina/station/power_ring) +"sxH" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/ice_lab) +"syj" = ( +/obj/item/clothing/under/color/orange, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) "syG" = ( /obj/item/tool/wirecutters/clippers, /turf/open/organic/grass{ @@ -29850,78 +30434,67 @@ /obj/structure/sign/safety/fridge, /turf/closed/wall/prison, /area/fiorina/station/power_ring) -"szK" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/wood, -/area/fiorina/station/park) -"szQ" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) -"sAe" = ( -/obj/effect/spawner/random/gun/smg, +"sze" = ( /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 1; + icon_state = "greencorner" }, -/area/fiorina/station/research_cells) -"sAk" = ( -/obj/item/stack/cable_coil, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/tumor/civres) +"szs" = ( +/obj/item/clothing/accessory/armband/cargo{ + desc = "Sworn to the shrapnel and the shards therein. So sayeth her command when the first detonation occured."; + name = "HEFA Order milita armband" }, -/area/fiorina/station/power_ring) -"sAv" = ( -/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/aux_engi) -"sAx" = ( -/obj/structure/bed{ - icon_state = "abed" + dir = 4; + icon_state = "bluecorner" }, -/obj/effect/spawner/random/goggles/lowchance, -/turf/open/floor/prison{ - dir = 6; - icon_state = "whitepurple" +/area/fiorina/station/chapel) +"szD" = ( +/obj/structure/stairs/perspective{ + dir = 9; + icon_state = "p_stair_full" }, -/area/fiorina/station/research_cells) -"sAK" = ( +/turf/open/floor/prison, +/area/fiorina/station/security) +"szK" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/wood, +/area/fiorina/station/park) +"szP" = ( +/obj/item/stack/sandbags_empty/half, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"sAp" = ( /obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) +"sAF" = ( +/obj/item/inflatable, /turf/open/floor/prison{ dir = 1; - icon_state = "greenblue" - }, -/area/fiorina/station/botany) -"sBl" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/glass/bottle/spaceacillin{ - pixel_x = -6; - pixel_y = 4 + icon_state = "yellow" }, -/obj/item/reagent_container/syringe{ - pixel_x = 3; - pixel_y = -3 +/area/fiorina/station/lowsec) +"sBf" = ( +/obj/structure/platform{ + dir = 1 }, -/obj/item/reagent_container/glass/bottle/spaceacillin{ - pixel_x = 6; - pixel_y = 12 +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) -"sBr" = ( -/obj/item/reagent_container/food/drinks/coffee, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" +/area/fiorina/station/park) +"sBj" = ( +/obj/structure/barricade/metal{ + health = 85; + icon_state = "metal_1" }, -/area/fiorina/station/telecomm/lz1_cargo) +/turf/open/floor/prison, +/area/fiorina/station/park) "sBA" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ dir = 1; @@ -29929,58 +30502,57 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/chapel) -"sCh" = ( -/obj/structure/bed{ - icon_state = "abed" - }, -/obj/item/card/id/silver/clearance_badge, +"sBM" = ( +/obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"sCj" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/microwave{ - icon_state = "mwo"; - pixel_y = 6 + dir = 4; + icon_state = "whitegreencorner" }, +/area/fiorina/station/medbay) +"sBO" = ( +/obj/structure/machinery/power/apc, /turf/open/floor/prison{ dir = 10; - icon_state = "kitchen" + icon_state = "whitegreenfull" }, -/area/fiorina/station/civres_blue) -"sCo" = ( +/area/fiorina/station/medbay) +"sBW" = ( /obj/structure/platform{ - dir = 1 + dir = 8 }, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"sBY" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/goggles/lowchance, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) -"sCB" = ( -/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" +/area/fiorina/station/park) +"sCe" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, -/area/fiorina/tumor/aux_engi) -"sDp" = ( -/obj/structure/largecrate/random, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/disco) -"sDF" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/microwave{ - pixel_y = 7 +/area/fiorina/station/chapel) +"sCH" = ( +/obj/item/frame/rack, +/obj/item/clothing/under/marine/ua_riot, +/turf/open/floor/prison{ + icon_state = "redfull" }, +/area/fiorina/station/security) +"sDn" = ( +/obj/structure/inflatable/popped/door, /obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "whitegreen" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/medbay) "sDL" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ dir = 1; @@ -29988,92 +30560,162 @@ }, /turf/open/floor/plating/prison, /area/fiorina/oob) -"sEi" = ( +"sDR" = ( +/obj/effect/decal/cleanable/blood/tracks/footprints{ + dir = 1; + icon_state = "human2" + }, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" + icon_state = "yellowfull" }, -/area/fiorina/lz/near_lzI) -"sED" = ( +/area/fiorina/station/lowsec) +"sDS" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/ammo_magazine/rifle/m16, /turf/open/floor/prison{ - icon_state = "damaged2" + icon_state = "darkyellow2" }, -/area/fiorina/station/disco) +/area/fiorina/lz/near_lzI) "sEO" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/lz/near_lzII) -"sFf" = ( -/obj/item/tool/crowbar/red, -/turf/open/floor/prison, -/area/fiorina/station/security) -"sFn" = ( -/obj/structure/machinery/door/window/northleft{ - dir = 4 +"sFd" = ( +/turf/open/floor/prison{ + dir = 5; + icon_state = "greenblue" }, +/area/fiorina/station/botany) +"sFo" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/toolbox, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "floor_plate" }, -/area/fiorina/station/security/wardens) -"sFI" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2; - name = "Residential Archives" +/area/fiorina/station/park) +"sFr" = ( +/obj/structure/barricade/handrail/type_b{ + dir = 8 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"sFN" = ( +/area/fiorina/station/flight_deck) +"sFH" = ( /obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/chem_dispenser/soda, +/obj/item/folder/red{ + pixel_x = 4; + pixel_y = -2 + }, +/obj/item/folder/red{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/tool/stamp, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/station/lowsec) +"sFY" = ( +/obj/structure/barricade/metal/wired{ + dir = 4 + }, +/obj/structure/largecrate/random/secure, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"sGa" = ( +/obj/structure/platform_decoration, /turf/open/floor/prison{ icon_state = "floor_plate" }, +/area/fiorina/station/disco) +"sGg" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/obj/item/stack/cable_coil, +/turf/open/floor/prison, /area/fiorina/station/power_ring) -"sGb" = ( -/obj/item/trash/used_stasis_bag{ - desc = "Wow, instant sand. They really have everything in space."; - name = "Insta-Sand! bag" +"sGk" = ( +/obj/structure/bed/roller, +/obj/structure/machinery/iv_drip{ + pixel_y = 19 }, +/obj/item/newspaper, +/obj/item/bedsheet/green, /turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" + dir = 4; + icon_state = "whitegreen" }, -/area/fiorina/station/disco) -"sGu" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/glass/bottle/spaceacillin{ - pixel_x = -6; - pixel_y = 4 +/area/fiorina/station/medbay) +"sGx" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/research_cells) +/area/fiorina/tumor/aux_engi) +"sGC" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/turf/open/floor/prison{ + dir = 10; + icon_state = "kitchen" + }, +/area/fiorina/station/civres_blue) "sGI" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/wood, /area/fiorina/station/park) -"sHb" = ( -/obj/structure/platform_decoration{ - dir = 4 +"sGX" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/snacks/mre_pack/meal4{ + name = "\improper prison food"; + pixel_y = 9 + }, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) +"sHe" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/stock_parts/subspace/amplifier{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/item/stock_parts/subspace/analyzer{ + pixel_x = -9; + pixel_y = 8 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/park) -"sHw" = ( -/obj/item/ammo_magazine/rifle/m16{ - current_rounds = 0 +/area/fiorina/station/power_ring) +"sHj" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, /turf/open/floor/prison{ - icon_state = "yellowcorner" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/lowsec) -"sHH" = ( -/turf/open/floor/prison, -/area/fiorina/station/lowsec) +/area/fiorina/station/research_cells) +"sHL" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/fiorina/tumor/civres) +"sHM" = ( +/obj/effect/decal/medical_decals{ + icon_state = "cryocell2deval" + }, +/turf/open/floor/prison{ + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) "sHO" = ( /obj/structure/platform/kutjevo/smooth{ dir = 1 @@ -30083,115 +30725,135 @@ }, /turf/open/space, /area/fiorina/oob) -"sHQ" = ( -/obj/structure/largecrate/random/case/double, +"sIg" = ( +/obj/item/device/pinpointer, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"sII" = ( -/obj/structure/bookcase{ - icon_state = "book-5"; - name = "\improper Mentor's Guide Bookcase" +/area/fiorina/station/telecomm/lz1_cargo) +"sIh" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 }, -/turf/open/floor/wood, -/area/fiorina/station/civres_blue) -"sIJ" = ( -/obj/structure/extinguisher_cabinet, -/turf/closed/wall/r_wall/prison, -/area/fiorina/lz/near_lzI) -"sIQ" = ( -/obj/item/stack/tile/plasteel, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/fiorina/tumor/civres) -"sIT" = ( -/obj/structure/machinery/landinglight/ds2/delaytwo{ - dir = 4 + icon_state = "redfull" }, +/area/fiorina/station/security) +"sIj" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "darkyellow2" }, -/area/fiorina/lz/near_lzII) -"sJc" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 +/area/fiorina/station/flight_deck) +"sIk" = ( +/obj/structure/machinery/shower{ + pixel_y = 13 }, /turf/open/floor/prison{ - icon_state = "yellowfull" + icon_state = "kitchen" }, /area/fiorina/station/lowsec) -"sJl" = ( -/obj/structure/largecrate/random/barrel/white, +"sIs" = ( +/obj/item/weapon/gun/smg/nailgun, +/obj/structure/surface/rack, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/maintenance) +"sIz" = ( +/obj/structure/machinery/computer/emails{ + pixel_y = 6 + }, +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/park) +"sIC" = ( +/turf/open/floor/prison, +/area/fiorina/tumor/civres) +"sII" = ( +/obj/structure/bookcase{ + icon_state = "book-5"; + name = "\improper Mentor's Guide Bookcase" + }, +/turf/open/floor/wood, +/area/fiorina/station/civres_blue) +"sIJ" = ( +/obj/structure/extinguisher_cabinet, +/turf/closed/wall/r_wall/prison, +/area/fiorina/lz/near_lzI) "sJu" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname{ dir = 1 }, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"sJw" = ( +"sJy" = ( +/obj/item/ammo_casing{ + icon_state = "casing_9_1" + }, /turf/open/floor/prison{ - icon_state = "floorscorched1" + dir = 8; + icon_state = "yellowcorner" }, -/area/fiorina/station/chapel) +/area/fiorina/station/lowsec) +"sJB" = ( +/obj/item/stack/folding_barricade, +/turf/open/floor/prison, +/area/fiorina/station/security) "sJN" = ( /obj/structure/sign/prop3{ desc = "Enlist in the Penal Battalions today! The USCM 3rd Fleet features a subset of UA sanctioned penal battalions, drawing from inmate popualtions across the colonies. Mostly New Argentina though." }, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/lz/near_lzI) -"sJT" = ( +"sJP" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) -"sKn" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/prison{ - dir = 6; - icon_state = "whitepurple" +/area/fiorina/station/lowsec) +"sKr" = ( +/obj/item/storage/secure/briefcase{ + pixel_x = 9; + pixel_y = 18 }, -/area/fiorina/station/research_cells) -"sKq" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "yellow" + icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzII) -"sKP" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 8 +/area/fiorina/station/lowsec) +"sKt" = ( +/obj/structure/bed/chair{ + dir = 1; + layer = 2.7 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "yellowfull" }, -/area/fiorina/station/power_ring) -"sKS" = ( -/obj/structure/bed/chair/comfy{ - dir = 4 +/area/fiorina/station/lowsec) +"sKu" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_ew_full_cap" }, -/turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" +/obj/structure/platform/stair_cut/alt, +/turf/open/floor/plating/prison, +/area/fiorina/station/medbay) +"sKY" = ( +/obj/structure/window/framed/prison/reinforced/hull, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"sLu" = ( +/obj/structure/prop/almayer/computers/sensor_computer1{ + name = "computer" }, -/area/fiorina/station/disco) -"sLo" = ( -/obj/structure/machinery/landinglight/ds1/delaythree{ - dir = 1 +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + icon_state = "darkredfull2" }, /area/fiorina/lz/near_lzI) "sLx" = ( @@ -30204,23 +30866,29 @@ }, /turf/closed/wall/r_wall/prison, /area/fiorina/tumor/civres) -"sLT" = ( -/obj/item/tool/weldingtool/largetank, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"sMe" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/book/manual/security_space_law{ + pixel_x = 3; + pixel_y = 5 }, -/area/fiorina/station/civres_blue) -"sMj" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/plating/prison, -/area/fiorina/station/disco) -"sMo" = ( -/obj/item/clothing/under/marine/ua_riot, -/obj/item/weapon/gun/rifle/m16, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkredfull2" }, /area/fiorina/station/security) +"sMX" = ( +/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) +"sMY" = ( +/obj/item/reagent_container/food/snacks/eat_bar, +/turf/open/floor/prison{ + dir = 1; + icon_state = "blue_plate" + }, +/area/fiorina/station/botany) "sNb" = ( /obj/item/device/radio, /turf/open/organic/grass{ @@ -30228,43 +30896,54 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) -"sNd" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" - }, +"sNg" = ( +/obj/structure/closet/firecloset/full, +/obj/item/storage/pill_bottle/bicaridine/skillless, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, /area/fiorina/tumor/ice_lab) -"sNu" = ( -/obj/structure/bed/chair{ +"sNi" = ( +/obj/item/device/flashlight, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/research_cells) +"sNj" = ( +/obj/structure/barricade/metal/wired{ dir = 8 }, -/turf/open/floor/prison{ - dir = 6; - icon_state = "darkbrown2" +/obj/item/stack/sheet/metal{ + amount = 5 }, -/area/fiorina/maintenance) -"sNK" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) +/area/fiorina/station/telecomm/lz1_cargo) "sNN" = ( /obj/structure/platform, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"sNT" = ( -/obj/effect/spawner/random/gun/pistol/lowchance, +"sNQ" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_tram) +"sNU" = ( /turf/open/floor/prison{ dir = 1; - icon_state = "darkbrown2" + icon_state = "red" }, -/area/fiorina/station/park) +/area/fiorina/station/security) "sOf" = ( /obj/item/clothing/mask/cigarette/weed{ icon_state = "ucigoff" @@ -30280,21 +30959,16 @@ /obj/structure/surface/table/reinforced/prison, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"sOn" = ( -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security/wardens) -"sOp" = ( -/obj/effect/decal/cleanable/blood{ - desc = "Watch your step."; - icon_state = "gib6" +"sOj" = ( +/obj/item/ammo_magazine/rifle/m16{ + current_rounds = 0 }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/area/fiorina/station/telecomm/lz1_cargo) +/turf/open/floor/prison, +/area/fiorina/station/security) "sOs" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/almayer{ @@ -30302,32 +30976,72 @@ icon_state = "plating" }, /area/fiorina/tumor/ship) -"sPk" = ( -/obj/structure/stairs/perspective{ +"sOM" = ( +/obj/item/device/flashlight/lamp/tripod, +/obj/structure/machinery/light/double/blue{ dir = 1; - icon_state = "p_stair_full" + pixel_y = 21 }, /turf/open/floor/prison, -/area/fiorina/station/power_ring) -"sPC" = ( -/obj/item/paper_bin{ - pixel_x = 5; - pixel_y = 22 +/area/fiorina/station/central_ring) +"sPh" = ( +/obj/item/stack/sheet/metal/medium_stack, +/obj/structure/surface/rack, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" }, +/area/fiorina/lz/near_lzI) +"sPi" = ( /turf/open/floor/prison{ dir = 8; - icon_state = "blue" + icon_state = "darkyellowcorners2" }, -/area/fiorina/station/civres_blue) -"sQK" = ( -/obj/effect/decal/cleanable/blood/splatter{ - icon_state = "gibdown1" +/area/fiorina/station/telecomm/lz1_cargo) +"sPt" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/obj/structure/platform/shiva, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"sPJ" = ( +/obj/structure/bed/chair{ + dir = 4 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/tumor/civres) +"sQr" = ( +/obj/structure/janitorialcart, +/obj/item/clothing/head/bio_hood/janitor{ + pixel_x = -4; + pixel_y = 5 + }, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"sQy" = ( +/obj/effect/decal/cleanable/blood, +/obj/effect/spawner/random/gun/pistol/midchance, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) +"sQz" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/ice_lab) +"sQC" = ( +/obj/structure/surface/rack, +/obj/item/handcuffs, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/station/security) "sQL" = ( /obj/structure/platform, /turf/open/gm/river{ @@ -30335,51 +31049,37 @@ name = "pool" }, /area/fiorina/station/park) -"sRb" = ( -/obj/item/trash/candy, -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 - }, -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"sRg" = ( -/obj/effect/landmark/monkey_spawn, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/civres) -"sRk" = ( -/obj/structure/largecrate/random/case, +"sRv" = ( +/obj/item/clothing/shoes/marine/upp/knife, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) +"sRE" = ( +/obj/structure/platform, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + icon_state = "darkbrown2" }, /area/fiorina/station/park) -"sRH" = ( -/obj/item/pamphlet/engineer, -/obj/structure/closet, -/obj/item/handcuffs, -/obj/effect/landmark/objective_landmark/close, +"sRJ" = ( +/obj/structure/machinery/constructable_frame, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 10; + icon_state = "damaged2" }, /area/fiorina/station/lowsec) -"sRV" = ( -/turf/open/floor/prison{ - icon_state = "floor_plate" +"sSM" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_ew_full_cap" }, -/area/fiorina/station/security) -"sSJ" = ( -/obj/structure/inflatable/popped/door, -/turf/open/floor/prison{ - dir = 8; - icon_state = "floor_marked" +/obj/structure/platform{ + dir = 1 }, -/area/fiorina/station/lowsec) +/turf/open/floor/plating/prison, +/area/fiorina/station/park) "sSY" = ( /obj/structure/disposalpipe/segment{ color = "#c4c4c4"; @@ -30391,16 +31091,17 @@ }, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/tumor/servers) -"sTa" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "red" - }, -/area/fiorina/station/security) "sTd" = ( /obj/item/device/flashlight/lamp/tripod, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) +"sTm" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/park) "sTu" = ( /obj/structure/prop/invuln{ desc = "An inflated membrane. This one is puncture proof. Wow!"; @@ -30410,34 +31111,86 @@ /obj/structure/blocker/invisible_wall, /turf/open/space, /area/fiorina/station/medbay) -"sTB" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" +"sTw" = ( +/obj/structure/barricade/wooden{ + dir = 8 }, -/obj/effect/decal/cleanable/blood/oil/streak, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"sTI" = ( +/obj/structure/machinery/cm_vending/sorted/medical/no_access, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ dir = 10; icon_state = "sterile_white" }, -/area/fiorina/station/research_cells) -"sTV" = ( +/area/fiorina/station/medbay) +"sTK" = ( +/obj/structure/barricade/wooden, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_marked" + dir = 4; + icon_state = "darkyellow2" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/telecomm/lz1_cargo) +"sTU" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 6 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/park) +"sUc" = ( +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) +"sUe" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood, +/obj/effect/spawner/gibspawner/human, +/turf/open/floor/prison{ + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) "sUl" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ density = 0 }, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"sUq" = ( -/obj/item/stack/sheet/metal/medium_stack, +"sUr" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/storage/bible/hefa, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "greenfull" }, -/area/fiorina/station/civres_blue) +/area/fiorina/station/chapel) +"sUt" = ( +/obj/effect/landmark/objective_landmark/far, +/turf/open/floor/prison, +/area/fiorina/station/park) +"sUV" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkbrowncorners2" + }, +/area/fiorina/tumor/aux_engi) "sUX" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/organic/grass{ @@ -30450,71 +31203,36 @@ icon_state = "squares" }, /area/fiorina/station/civres_blue) -"sVa" = ( -/obj/item/trash/used_stasis_bag{ - desc = "Wow, instant sand. They really have everything in space."; - name = "Insta-Sand! bag" - }, -/turf/open/floor/prison{ +"sVd" = ( +/obj/structure/stairs/perspective{ dir = 8; - icon_state = "blue" + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 4 }, -/area/fiorina/station/civres_blue) -"sVi" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/botany) "sVv" = ( /obj/structure/platform/kutjevo/smooth{ dir = 1 }, /turf/open/space, /area/fiorina/oob) -"sVw" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 4; - layer = 3.5 - }, -/obj/item/storage/bag/plasticbag, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"sVy" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 4; - layer = 3.5 - }, -/obj/item/trash/barcardine, +"sVS" = ( +/obj/item/trash/pistachios, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, /area/fiorina/tumor/ice_lab) -"sVD" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/pamphlet/skill/powerloader, +"sVT" = ( +/obj/effect/spawner/random/tool, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"sVM" = ( -/obj/structure/machinery/vending/cola, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/tumor/aux_engi) -"sVN" = ( -/obj/item/stack/rods, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/chapel) -"sVP" = ( -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" + icon_state = "sterile_white" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/tumor/ice_lab) "sVU" = ( /obj/structure/largecrate/machine, /obj/item/reagent_container/food/drinks/cans/aspen{ @@ -30522,75 +31240,147 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"sWu" = ( -/obj/structure/bed/chair{ - dir = 4 +"sVW" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkbrown2" }, +/area/fiorina/tumor/aux_engi) +"sVZ" = ( +/obj/structure/closet/secure_closet/hydroponics, +/obj/effect/spawner/random/pills/lowchance, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 9; + icon_state = "greenfull" + }, +/area/fiorina/station/botany) +"sWb" = ( +/obj/structure/prop/structure_lattice{ + dir = 4; + health = 300 + }, +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 }, -/area/fiorina/station/medbay) -"sWF" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "damaged2" + icon_state = "floor_plate" + }, +/area/fiorina/tumor/ice_lab) +"sWe" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "blue" + }, +/area/fiorina/station/civres_blue) +"sWl" = ( +/obj/structure/bed/roller, +/turf/open/floor/prison, +/area/fiorina/station/chapel) +"sWr" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" }, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) +"sWw" = ( +/obj/item/storage/bag/trash, +/turf/open/floor/prison, /area/fiorina/station/disco) +"sWX" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/research_cells) +"sXa" = ( +/obj/structure/machinery/filtration/console, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"sXe" = ( +/turf/open/floor/prison, +/area/fiorina/station/research_cells) "sXi" = ( /turf/open/floor/corsat{ icon_state = "plate" }, /area/fiorina/tumor/aux_engi) -"sXy" = ( -/obj/structure/surface/rack, +"sXt" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzII) +"sXP" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/hardpoint/support/flare_launcher{ + pixel_x = -1; + pixel_y = 5 + }, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkyellow2" }, -/area/fiorina/station/chapel) +/area/fiorina/lz/near_lzI) "sYn" = ( /obj/structure/machinery/light/double/blue, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"sYv" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 4 +"sYy" = ( +/obj/item/ammo_casing{ + icon_state = "casing_1" }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) -"sYM" = ( -/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"sYB" = ( +/turf/open/floor/prison{ + dir = 9; icon_state = "darkyellow2" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/station/telecomm/lz1_tram) "sYP" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating/prison, /area/fiorina/station/security) -"sZr" = ( -/obj/structure/largecrate/random/secure, +"sZt" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_tram) +"sZZ" = ( +/obj/structure/barricade/wooden, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"tam" = ( -/obj/structure/closet/secure_closet/guncabinet{ - req_access = null +/area/fiorina/station/telecomm/lz1_cargo) +"tad" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + dir = 9; + icon_state = "yellow" + }, +/area/fiorina/station/disco) +"tai" = ( +/obj/structure/bed/chair, +/obj/structure/prop/souto_land/pole, +/obj/structure/prop/souto_land/pole{ + dir = 4; + pixel_y = 24 }, -/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/storage/belt/shotgun, -/obj/item/clothing/under/marine/ua_riot, -/obj/item/clothing/suit/storage/marine/veteran/ua_riot, -/obj/item/prop/helmetgarb/riot_shield, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "darkbrown2" }, -/area/fiorina/station/security) +/area/fiorina/station/park) +"taj" = ( +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) "tan" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/oob) @@ -30600,108 +31390,135 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"tax" = ( -/obj/item/clothing/under/color/orange, +"taI" = ( +/obj/structure/machinery/vending/coffee, /turf/open/floor/prison{ - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"taX" = ( -/obj/structure/prop/structure_lattice{ - dir = 4 - }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 + icon_state = "darkpurplefull2" }, +/area/fiorina/station/research_cells) +"taL" = ( +/obj/item/clothing/under/color/orange, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) +/area/fiorina/station/security) +"taS" = ( +/obj/item/stack/cable_coil, +/turf/open/floor/prison{ + dir = 5; + icon_state = "blue" + }, +/area/fiorina/station/power_ring) "taY" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/space/basic, /area/fiorina/lz/near_lzI) -"tbs" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"tbC" = ( +"tbd" = ( +/obj/structure/inflatable, /turf/open/floor/prison{ - dir = 5; - icon_state = "green" + icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) -"tbZ" = ( -/obj/structure/filingcabinet, +/area/fiorina/tumor/ship) +"tbj" = ( +/obj/item/stack/sandbags_empty/half, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"tcl" = ( -/obj/structure/largecrate/random/mini/med, +/area/fiorina/station/flight_deck) +"tbm" = ( +/obj/item/stack/cable_coil, /turf/open/floor/prison{ - dir = 5; - icon_state = "whitegreen" + dir = 1; + icon_state = "darkpurple2" }, -/area/fiorina/station/medbay) -"tcJ" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" +/area/fiorina/tumor/servers) +"tbG" = ( +/obj/structure/bed{ + icon_state = "psychbed" + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" }, +/area/fiorina/tumor/servers) +"tco" = ( +/obj/item/paper/crumpled/bloody/csheet, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/botany) -"tcO" = ( +/area/fiorina/lz/near_lzII) +"tcB" = ( +/obj/effect/alien/weeds/node, /turf/open/floor/prison{ - dir = 8; - icon_state = "bluecorner" + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) +"tcD" = ( +/obj/effect/decal/cleanable/blood/splatter{ + icon_state = "gib2" + }, +/turf/open/floor/prison{ + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"tcL" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform, +/obj/structure/platform_decoration{ + dir = 10 + }, +/turf/open/floor/prison{ + icon_state = "bluefull" }, /area/fiorina/station/chapel) -"tdb" = ( +"tcW" = ( +/obj/structure/monorail{ + name = "launch track" + }, /obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + dir = 8; + pixel_x = -10; + pixel_y = -3 }, +/turf/open/floor/plating/prison, +/area/fiorina/station/transit_hub) +"tde" = ( +/obj/structure/largecrate/random, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkpurple2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) -"tdo" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" +/area/fiorina/station/central_ring) +"tdq" = ( +/obj/structure/platform_decoration{ + dir = 8 }, -/area/fiorina/station/park) -"tdA" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "redcorner" + icon_state = "floor_plate" }, /area/fiorina/station/power_ring) -"tdG" = ( -/obj/item/storage/backpack/satchel/lockable, -/turf/open/floor/prison, -/area/fiorina/station/security) -"tdZ" = ( -/obj/structure/platform_decoration, -/turf/open/floor/prison, -/area/fiorina/station/park) -"tef" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - layer = 2.5 +"tdr" = ( +/obj/structure/prop/resin_prop{ + dir = 4; + icon_state = "chair"; + pixel_y = 6 }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) "tel" = ( /turf/closed/wall/mineral/bone_resin, /area/fiorina/station/medbay) +"teq" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" + }, +/area/fiorina/station/botany) "tet" = ( /obj/structure/machinery/light/double/blue{ dir = 4; @@ -30712,19 +31529,42 @@ icon_state = "plate" }, /area/fiorina/station/telecomm/lz1_cargo) -"teH" = ( -/obj/structure/platform_decoration, +"teu" = ( +/obj/structure/reagent_dispensers/watertank, /turf/open/floor/prison{ - icon_state = "darkbrown2" + icon_state = "floor_plate" + }, +/area/fiorina/tumor/servers) +"teI" = ( +/obj/structure/largecrate/supply/supplies/tables_racks, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/civres) +"teK" = ( +/obj/structure/bed/chair{ + dir = 4 }, -/area/fiorina/station/park) -"teT" = ( -/obj/item/paper/crumpled, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) +"tfl" = ( +/obj/effect/decal/cleanable/blood{ + icon_state = "gib6" + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) +"tfw" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/servers) "tfx" = ( /obj/structure/barricade/wooden{ dir = 8 @@ -30738,45 +31578,139 @@ /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"tgc" = ( -/obj/item/tool/wet_sign, +"tge" = ( +/obj/structure/machinery/vending/coffee, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) -"tgv" = ( -/obj/structure/machinery/computer/emails{ - pixel_y = 6 +/area/fiorina/station/medbay) +"tgB" = ( +/obj/structure/barricade/wooden{ + dir = 4 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/chapel) +"tgK" = ( +/obj/structure/machinery/landinglight/ds1/delayone, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/fiorina/lz/near_lzI) +"tgL" = ( +/obj/structure/machinery/portable_atmospherics/powered/scrubber, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"thz" = ( /obj/structure/surface/table/reinforced/prison, +/obj/item/storage/lockbox/vials{ + pixel_x = -4; + pixel_y = 4 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/park) -"tgB" = ( -/obj/structure/barricade/wooden{ +/area/fiorina/station/lowsec) +"thI" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "blue" + }, +/area/fiorina/station/civres_blue) +"thV" = ( +/obj/item/tool/kitchen/utensil/pfork, +/turf/open/floor/prison{ + dir = 4; + icon_state = "blue" + }, +/area/fiorina/station/power_ring) +"tii" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/medbay) +"til" = ( +/obj/structure/platform{ + dir = 4 + }, +/obj/item/stool, +/obj/item/clothing/shoes/slippers_worn, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/civres_blue) +"tir" = ( +/obj/item/ammo_magazine/rifle/m16, +/turf/open/floor/prison, +/area/fiorina/station/security) +"tis" = ( +/obj/structure/inflatable, +/obj/structure/barricade/handrail/type_b, +/obj/structure/barricade/handrail/type_b{ dir = 4 }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"tiM" = ( +/obj/item/shard{ + icon_state = "medium"; + name = "ice shard" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) +"tiX" = ( +/obj/item/stack/sheet/mineral/plastic, /turf/open/floor/plating/prison, -/area/fiorina/station/chapel) -"the" = ( +/area/fiorina/station/lowsec) +"tiY" = ( /turf/open/floor/prison{ - icon_state = "floorscorched1" + icon_state = "floorscorched2" }, -/area/fiorina/station/security) -"thi" = ( +/area/fiorina/tumor/civres) +"tiZ" = ( /turf/open/floor/prison{ dir = 4; - icon_state = "cell_stripe" + icon_state = "darkbrown2" }, -/area/fiorina/tumor/aux_engi) -"thU" = ( -/obj/structure/prop/almayer/computers/sensor_computer1, +/area/fiorina/station/park) +"tja" = ( /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/lz/near_lzI) -"tih" = ( +/area/fiorina/station/medbay) +"tji" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + layer = 2.5 + }, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"tjp" = ( /obj/item/tool/warning_cone, /obj/structure/machinery/light/double/blue{ dir = 8; @@ -30785,75 +31719,82 @@ }, /turf/open/floor/prison, /area/fiorina/station/telecomm/lz1_cargo) -"tik" = ( -/obj/structure/barricade/handrail/type_b{ - layer = 3.5 - }, +"tjw" = ( +/obj/structure/platform_decoration, +/obj/structure/inflatable, /turf/open/floor/prison{ + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"tjR" = ( +/obj/structure/machinery/shower{ + pixel_y = 13 + }, +/obj/structure/machinery/shower{ dir = 1; - icon_state = "blue" + pixel_y = -1 + }, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/fiorina/station/research_cells) +"tkd" = ( +/obj/structure/filingcabinet, +/obj/structure/filingcabinet{ + pixel_x = 16 }, -/area/fiorina/station/civres_blue) -"tiW" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/trash/chunk, /turf/open/floor/prison, -/area/fiorina/station/power_ring) -"tiX" = ( -/obj/item/stack/sheet/mineral/plastic, -/turf/open/floor/plating/prison, -/area/fiorina/station/lowsec) -"tjo" = ( -/obj/structure/machinery/vending/coffee/simple, +/area/fiorina/station/security) +"tkg" = ( +/obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/station/park) -"tjQ" = ( -/obj/effect/spawner/random/tool, +"tkj" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "green" + dir = 1; + icon_state = "darkbrown2" }, -/area/fiorina/station/chapel) -"tjU" = ( +/area/fiorina/station/park) +"tkP" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_ew_full_cap" + }, +/obj/structure/platform/stair_cut/alt, +/turf/open/floor/plating/prison, +/area/fiorina/station/botany) +"tkZ" = ( /obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; + dir = 8; + pixel_x = -10; pixel_y = -3 }, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 8; + icon_state = "whitepurple" }, -/area/fiorina/tumor/servers) -"tke" = ( -/obj/structure/monorail{ - name = "launch track" +/area/fiorina/station/research_cells) +"tle" = ( +/obj/structure/filingcabinet{ + pixel_x = 8; + pixel_y = 4 }, -/obj/structure/machinery/constructable_frame{ - icon_state = "box_1" +/obj/structure/filingcabinet{ + pixel_x = -8; + pixel_y = 4 }, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzI) -"tkk" = ( -/obj/structure/machinery/light/double/blue, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"tld" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" + icon_state = "floor_plate" }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"tlp" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/microwave{ - pixel_y = 7 +/area/fiorina/tumor/civres) +"tlj" = ( +/obj/structure/bed/chair{ + dir = 4 }, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "bluecorner" }, /area/fiorina/station/power_ring) "tlq" = ( @@ -30872,24 +31813,46 @@ }, /turf/open/floor/almayer, /area/fiorina/tumor/ship) -"tlM" = ( -/obj/item/device/flashlight/lamp/tripod, +"tlC" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 5 + }, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/transit_hub) +/area/fiorina/station/power_ring) +"tlF" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/obj/structure/platform, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/flight_deck) +"tlJ" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) "tlQ" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"tlS" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/stack/sheet/mineral/plastic, -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/lowsec) "tlV" = ( /obj/structure/machinery/space_heater, /obj/item/device/flashlight/lamp{ @@ -30897,13 +31860,10 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz2_maint) -"tmi" = ( -/obj/item/device/flashlight, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) +"tmo" = ( +/obj/structure/stairs/perspective, +/turf/open/floor/plating/prison, +/area/fiorina/maintenance) "tmx" = ( /obj/structure/bed/chair{ dir = 1 @@ -30915,6 +31875,30 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) +"tmF" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) +"tmI" = ( +/obj/effect/alien/weeds/node, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkbrown2" + }, +/area/fiorina/tumor/aux_engi) +"tmL" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/civres_blue) +"tmX" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/prison, +/area/fiorina/station/park) "tna" = ( /obj/structure/bed/sofa/pews{ dir = 4 @@ -30925,65 +31909,19 @@ }, /turf/open/floor/wood, /area/fiorina/station/chapel) -"tnd" = ( -/obj/structure/largecrate/supply/medicine/medkits, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"tng" = ( -/obj/structure/computerframe, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/medbay) -"tnj" = ( -/obj/item/stack/sheet/mineral/plastic, -/turf/open/floor/prison{ - dir = 9; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"tno" = ( -/obj/item/stack/sheet/cardboard, +"tnw" = ( +/obj/effect/landmark/queen_spawn, /turf/open/floor/prison{ dir = 1; - icon_state = "yellow" + icon_state = "darkbrown2" }, -/area/fiorina/station/lowsec) -"tnr" = ( -/obj/effect/landmark/survivor_spawner, +/area/fiorina/tumor/aux_engi) +"tnY" = ( +/obj/structure/platform_decoration, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "whitegreen" }, /area/fiorina/station/medbay) -"tnA" = ( -/obj/structure/platform, -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/disco) -"tnH" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) -"tnP" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/pills/lowchance, -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/lowsec) "tob" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 2; @@ -30991,36 +31929,9 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"tom" = ( -/obj/structure/barricade/metal/wired{ - dir = 4 - }, -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/prison, -/area/fiorina/station/disco) -"tov" = ( -/obj/effect/spawner/random/gun/smg/midchance, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) "toE" = ( /turf/open/floor/carpet, /area/fiorina/station/civres_blue) -"toJ" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/cameras{ - dir = 8 - }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/fiorina/station/security) "tpa" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ req_one_access = null @@ -31041,85 +31952,116 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison/chapel_carpet, /area/fiorina/station/chapel) -"tpO" = ( -/obj/structure/machinery/microwave{ - desc = "There's two of them."; - pixel_y = 5 - }, -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/microwave{ - desc = "Holy shit"; - pixel_y = 18 - }, -/obj/item/storage/pill_bottle/kelotane/skillless{ - desc = "Don't touch -Dr. O"; - pixel_x = 6; - pixel_y = 31 +"tpw" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, +/obj/structure/largecrate/random/case, /turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"tpz" = ( +/obj/item/paper/carbon, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, /area/fiorina/station/medbay) -"tpY" = ( -/obj/effect/landmark/monkey_spawn, -/turf/open/floor/plating/prison, -/area/fiorina/station/civres_blue) -"tqM" = ( -/obj/structure/filingcabinet, +"tpE" = ( +/obj/item/tank/jetpack/carbondioxide, +/obj/structure/surface/rack, /turf/open/floor/prison{ icon_state = "floor_plate" }, +/area/fiorina/tumor/servers) +"tpF" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "green" + }, /area/fiorina/tumor/aux_engi) -"tqN" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/processor{ - desc = "It CAN blend it."; - icon_state = "blender_e"; - name = "Blendomatic"; - pixel_x = -2; - pixel_y = 10 +"tpY" = ( +/obj/effect/landmark/monkey_spawn, +/turf/open/floor/plating/prison, +/area/fiorina/station/civres_blue) +"tpZ" = ( +/obj/effect/decal/medical_decals{ + icon_state = "triagedecalleft" }, /turf/open/floor/prison{ dir = 10; - icon_state = "kitchen" + icon_state = "sterile_white" }, -/area/fiorina/station/civres_blue) -"tqQ" = ( -/turf/open/floor/prison{ +/area/fiorina/station/medbay) +"tql" = ( +/obj/structure/machinery/light/double/blue{ dir = 1; - icon_state = "darkyellowcorners2" + pixel_y = 21 }, -/area/fiorina/lz/near_lzI) -"tqR" = ( -/obj/structure/platform_decoration{ - dir = 4 +/turf/open/floor/prison{ + icon_state = "greenblue" }, -/obj/effect/decal/medical_decals{ - icon_state = "triagedecalleft" +/area/fiorina/station/botany) +"tqw" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/ice_lab) +"tqx" = ( +/obj/structure/prop/resin_prop{ + icon_state = "rack" }, +/obj/item/storage/toolbox, +/obj/item/storage/toolbox, /turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/fiorina/tumor/servers) +"tqP" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/obj/structure/platform/kutjevo/smooth, +/obj/structure/barricade/handrail{ dir = 1; - icon_state = "whitegreen" + icon_state = "hr_kutjevo"; + name = "solar lattice" }, -/area/fiorina/station/medbay) +/turf/open/space/basic, +/area/fiorina/oob) "trl" = ( /obj/item/trash/buritto, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"trB" = ( -/obj/effect/decal/cleanable/blood/oil, +"trJ" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/chapel) -"trH" = ( -/obj/structure/bed/chair{ - dir = 4; - pixel_y = 4 + icon_state = "darkpurple2" }, +/area/fiorina/station/central_ring) +"trN" = ( +/obj/item/stack/barbed_wire, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) +"trR" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/obj/item/storage/fancy/cigarettes/blackpack, +/turf/open/floor/prison{ + dir = 6; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) "trS" = ( /obj/structure/barricade/wooden{ dir = 8 @@ -31127,39 +32069,73 @@ /obj/structure/barricade/wooden, /turf/open/floor/plating/prison, /area/fiorina/station/chapel) -"tsi" = ( -/obj/structure/barricade/metal/wired, +"tsc" = ( +/obj/structure/machinery/door/poddoor/almayer/locked{ + indestructible = 1; + name = "launch bay door" + }, +/obj/structure/monorail{ + name = "launch track" + }, +/turf/open/floor/plating/prison, +/area/fiorina/oob) +"tsf" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/donut_box{ + pixel_y = 9 + }, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "bluefull" }, -/area/fiorina/station/lowsec) -"tsu" = ( -/obj/structure/platform_decoration{ - dir = 4 +/area/fiorina/station/power_ring) +"tsr" = ( +/obj/structure/pipes/unary/freezer{ + icon_state = "freezer_1" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" }, +/area/fiorina/station/medbay) +"tss" = ( +/obj/structure/bookcase/manuals/engineering, /turf/open/floor/prison{ dir = 9; - icon_state = "blue" + icon_state = "greenfull" }, -/area/fiorina/station/power_ring) -"tsQ" = ( -/obj/structure/platform_decoration{ - dir = 8 +/area/fiorina/tumor/civres) +"tst" = ( +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/oob) +"tsA" = ( +/obj/structure/barricade/metal{ + dir = 8; + health = 150; + icon_state = "metal_2" }, -/turf/open/floor/prison, -/area/fiorina/station/park) -"tts" = ( -/obj/structure/machinery/landinglight/ds2, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/ice_lab) +"tsH" = ( +/obj/structure/tunnel, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/tumor/fiberbush) +"tsN" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/ammo_magazine/rifle/m16{ + current_rounds = 0 }, -/area/fiorina/lz/near_lzII) -"ttK" = ( -/obj/structure/machinery/landinglight/ds2/delaythree, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkredfull2" }, -/area/fiorina/lz/near_lzII) +/area/fiorina/station/security) "tuf" = ( /obj/item/clothing/shoes/jackboots{ name = "Awesome Guy" @@ -31175,178 +32151,113 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"tuo" = ( -/obj/structure/prop/structure_lattice{ - dir = 4 - }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 - }, -/turf/open/floor/prison, -/area/fiorina/tumor/ice_lab) -"tur" = ( -/turf/open/floor/prison{ - dir = 6; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"tuB" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/tool/pen/blue/clicky, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) -"tuD" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"tuH" = ( -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 - }, -/obj/structure/bed/chair{ - dir = 1; - layer = 2.8 - }, +"tuA" = ( /turf/open/floor/prison{ - icon_state = "yellowfull" + dir = 8; + icon_state = "cell_stripe" }, -/area/fiorina/station/disco) +/area/fiorina/station/telecomm/lz1_tram) "tuX" = ( /obj/structure/platform{ dir = 1 }, /obj/structure/platform{ - dir = 4 - }, -/obj/structure/platform_decoration{ - dir = 9 - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) -"tvu" = ( -/obj/structure/machinery/vending/coffee, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) -"tvI" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) -"tvM" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/structure/platform_decoration{ - dir = 9 - }, -/obj/structure/platform{ - dir = 4 - }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"tvU" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_27"; - layer = 3.1; - pixel_x = -2; - pixel_y = 10 + dir = 4 }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"tvX" = ( +/obj/structure/platform_decoration{ + dir = 9 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) +"tvi" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /turf/open/floor/prison{ - dir = 1; - icon_state = "blue" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/chapel) +/area/fiorina/tumor/ice_lab) "twb" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/maintenance) -"twd" = ( -/obj/effect/decal/cleanable/blood, +"twR" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkbrown2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/park) -"twB" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/ammo_magazine/rifle/m16{ - current_rounds = 0 +/area/fiorina/tumor/ice_lab) +"txb" = ( +/obj/structure/window/framed/prison/reinforced{ + opacity = 1 }, +/obj/structure/machinery/door/poddoor/shutters/almayer, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "floor_plate" }, -/area/fiorina/station/security) -"twL" = ( -/obj/vehicle/train/cargo/trolley, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"txS" = ( -/obj/item/stack/sandbags, -/turf/open/floor/prison{ - icon_state = "kitchen" +/area/fiorina/station/chapel) +"txf" = ( +/obj/structure/prop/almayer/computers/sensor_computer1{ + name = "computer" }, -/area/fiorina/station/power_ring) -"tyb" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/lockbox/vials{ - pixel_x = -4; - pixel_y = 4 +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkredfull2" }, -/area/fiorina/station/lowsec) -"tyk" = ( -/obj/structure/barricade/handrail, -/turf/open/floor/prison{ +/area/fiorina/station/research_cells) +"txh" = ( +/obj/structure/bed/sofa/vert/grey, +/turf/open/floor/prison, +/area/fiorina/station/security) +"txY" = ( +/obj/structure/prop/souto_land/streamer{ dir = 1; - icon_state = "whitepurple" + pixel_y = 24 }, -/area/fiorina/station/research_cells) -"tyO" = ( -/obj/structure/closet/secure_closet/hydroponics, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/station/botany) -"tyQ" = ( -/obj/structure/machinery/door/airlock/prison_hatch/autoname{ - dir = 1 + dir = 8; + icon_state = "darkbrown2" }, +/area/fiorina/station/park) +"tyj" = ( /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 4; + icon_state = "blue" + }, +/area/fiorina/station/chapel) +"tyt" = ( +/obj/item/ammo_casing{ + dir = 8; + icon_state = "cartridge_2" }, -/area/fiorina/station/power_ring) -"tzj" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "greencorner" + dir = 8; + icon_state = "darkyellow2" + }, +/area/fiorina/station/flight_deck) +"tyC" = ( +/obj/structure/machinery/landinglight/ds2/delaytwo{ + dir = 4 }, -/area/fiorina/tumor/civres) -"tzx" = ( -/obj/structure/bed/sofa/vert/grey/top, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/lz/near_lzII) +"tyJ" = ( +/obj/item/reagent_container/food/snacks/xenoburger, +/obj/item/reagent_container/food/snacks/xenoburger, +/obj/item/reagent_container/food/snacks/xenoburger, +/obj/structure/closet/crate/freezer, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/fiorina/station/power_ring) "tzy" = ( /obj/item/ammo_magazine/smg/mp5, /obj/structure/extinguisher_cabinet{ @@ -31354,13 +32265,33 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"tzF" = ( -/obj/item/storage/pill_bottle/tramadol/skillless, +"tzM" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"tzN" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/obj/structure/platform/kutjevo/smooth, +/obj/structure/lattice, +/turf/open/space/basic, +/area/fiorina/oob) +"tzU" = ( +/obj/structure/machinery/vending/snack, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) +"tzW" = ( +/obj/effect/landmark/xeno_spawn, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "darkbrown2" }, -/area/fiorina/station/medbay) +/area/fiorina/tumor/aux_engi) "tAb" = ( /obj/structure/surface/rack, /obj/item/storage/backpack/general_belt{ @@ -31369,115 +32300,54 @@ /obj/item/storage/backpack/general_belt, /turf/open/floor/almayer, /area/fiorina/tumor/ship) -"tAf" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/research_cells) -"tAk" = ( -/obj/item/weapon/gun/rifle/m16, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"tAI" = ( -/obj/item/stack/rods, -/turf/open/floor/prison{ +"tAj" = ( +/obj/structure/machinery/light/double/blue{ dir = 1; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"tBa" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/ammo_magazine/shotgun/buckshot, -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/disco) -"tBe" = ( -/obj/effect/decal{ - icon = 'icons/obj/items/policetape.dmi'; - icon_state = "engineering_h"; - layer = 2.5; - pixel_y = -11 - }, -/obj/item/device/flashlight/flare, -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"tBt" = ( -/obj/item/newspaper, -/turf/open/floor/prison{ - icon_state = "green" + pixel_y = 21 }, -/area/fiorina/station/transit_hub) -"tBy" = ( /turf/open/floor/prison{ dir = 4; icon_state = "cell_stripe" }, -/area/fiorina/station/telecomm/lz1_tram) -"tBD" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/cameras{ - dir = 4 +/area/fiorina/station/medbay) +"tAE" = ( +/obj/structure/barricade/handrail, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"tAR" = ( +/obj/structure/surface/rack, +/obj/item/tool/extinguisher, +/obj/item/tool/crowbar{ + pixel_x = 5; + pixel_y = -5 }, +/obj/item/tool/crowbar, /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/security) +/area/fiorina/station/medbay) "tBP" = ( /obj/structure/machinery/shower{ dir = 1 }, /turf/open/floor/interior/plastic, /area/fiorina/station/research_cells) -"tBR" = ( -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 - }, +"tCv" = ( +/obj/effect/landmark/corpsespawner/ua_riot/burst, /turf/open/floor/prison{ dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"tBU" = ( -/obj/item/paper/crumpled/bloody/csheet, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/lz/near_lzII) -"tCf" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/flight_deck) -"tCj" = ( -/obj/structure/machinery/power/apc{ - dir = 8 + icon_state = "greenfull" }, +/area/fiorina/tumor/civres) +"tCH" = ( +/obj/item/stack/folding_barricade, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) -"tCu" = ( -/obj/item/frame/rack, -/obj/item/clothing/under/marine/ua_riot, -/turf/open/floor/prison{ - icon_state = "redfull" - }, /area/fiorina/station/security) "tCZ" = ( /obj/structure/platform/kutjevo/smooth{ @@ -31500,6 +32370,12 @@ }, /turf/open/floor/carpet, /area/fiorina/station/civres_blue) +"tDC" = ( +/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/aux_engi) "tDE" = ( /obj/structure/machinery/light/double/blue{ dir = 4; @@ -31515,28 +32391,12 @@ }, /turf/open/floor/wood, /area/fiorina/station/civres_blue) -"tDY" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, -/obj/item/tool/pickaxe, -/turf/open/floor/prison{ - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) -"tEb" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/flight_deck) -"tEj" = ( -/obj/item/device/flashlight/lamp/tripod, +"tEA" = ( +/obj/item/reagent_container/glass/bucket/janibucket, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/chapel) "tEH" = ( /obj/structure/window/framed/prison, /turf/open/floor/plating/prison, @@ -31548,9 +32408,25 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) -"tFu" = ( -/obj/effect/decal/cleanable/blood/oil, +"tEX" = ( +/obj/structure/machinery/vending/cigarette, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/transit_hub) +"tEY" = ( +/obj/structure/machinery/newscaster{ + pixel_y = 32 + }, /turf/open/floor/prison, +/area/fiorina/station/security) +"tFo" = ( +/obj/structure/reagent_dispensers/watertank{ + layer = 2.6 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, /area/fiorina/lz/near_lzII) "tFA" = ( /obj/structure/platform{ @@ -31558,67 +32434,67 @@ }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"tGi" = ( +"tFY" = ( +/obj/structure/platform, +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/firstaid/regular, /obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"tGl" = ( -/obj/structure/bed/sofa/vert/grey, -/turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + pixel_x = 10; + pixel_y = -3 }, -/area/fiorina/lz/near_lzII) -"tGF" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/newspaper, -/obj/item/attachable/bipod, /turf/open/floor/prison{ - icon_state = "darkyellow2" - }, -/area/fiorina/lz/near_lzI) -"tGO" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/communications{ - dir = 1 + dir = 6; + icon_state = "whitegreen" }, +/area/fiorina/station/medbay) +"tGU" = ( +/obj/structure/closet/crate/medical, +/obj/item/storage/pill_bottle/tramadol/skillless, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/ice_lab) -"tHh" = ( +/area/fiorina/station/medbay) +"tGY" = ( /obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/atmos_alert{ - dir = 8 +/obj/structure/window/reinforced{ + dir = 4 }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_18"; + pixel_y = 12 }, -/area/fiorina/tumor/fiberbush) +/turf/open/floor/plating/prison, +/area/fiorina/station/security/wardens) "tHl" = ( /obj/structure/inflatable, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"tHr" = ( -/obj/effect/decal/cleanable/blood/oil, +"tHw" = ( +/obj/item/stack/rods, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "darkbrown2" }, /area/fiorina/tumor/aux_engi) -"tHs" = ( +"tHF" = ( +/obj/structure/platform{ + dir = 8 + }, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/security) -"tHu" = ( -/obj/structure/inflatable, +/area/fiorina/station/medbay) +"tHJ" = ( +/obj/structure/closet/firecloset, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ - icon_state = "whitepurple" + dir = 9; + icon_state = "darkbrown2" }, -/area/fiorina/station/research_cells) +/area/fiorina/maintenance) "tHL" = ( /obj/structure/blocker/invisible_wall, /turf/closed/shuttle/ert{ @@ -31626,29 +32502,29 @@ opacity = 0 }, /area/fiorina/station/medbay) -"tHP" = ( -/obj/item/ammo_magazine/smg/mp5, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellow2" +"tIf" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/trash/plate{ + pixel_x = 1; + pixel_y = 3 }, -/area/fiorina/station/telecomm/lz1_cargo) -"tHU" = ( -/obj/structure/monorail{ - dir = 5; - name = "launch track" +/turf/open/floor/prison{ + icon_state = "kitchen" }, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzI) -"tHX" = ( -/obj/effect/decal/medical_decals{ - icon_state = "cryomid" +/area/fiorina/station/power_ring) +"tIn" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/prison, +/area/fiorina/station/chapel) +"tIp" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" +/obj/structure/platform/kutjevo/smooth{ + dir = 4 }, -/area/fiorina/station/medbay) +/turf/open/space/basic, +/area/fiorina/oob) "tIC" = ( /obj/structure/flora/bush/ausbushes/ausbush{ desc = "Fiberbush(tm) infestations are the leading cause in asbestos related deaths for 3 years in a row."; @@ -31660,36 +32536,44 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) -"tII" = ( -/obj/item/reagent_container/food/drinks/bottle/rum, -/turf/open/floor/prison{ - dir = 1; - icon_state = "blue_plate" - }, -/area/fiorina/station/botany) -"tIK" = ( -/obj/item/tool/screwdriver, -/turf/open/floor/prison{ - dir = 10; - icon_state = "green" - }, -/area/fiorina/tumor/civres) "tIU" = ( /obj/item/tool/candle, /turf/open/floor/prison/chapel_carpet, /area/fiorina/maintenance) -"tJe" = ( +"tIW" = ( /turf/open/floor/prison{ dir = 10; - icon_state = "green" + icon_state = "darkyellow2" }, -/area/fiorina/station/chapel) -"tJM" = ( -/obj/item/prop/helmetgarb/riot_shield, +/area/fiorina/lz/near_lzI) +"tJw" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/prison{ + dir = 6; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"tJC" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ + dir = 4; + icon_state = "blue_plate" + }, +/area/fiorina/station/botany) +"tJH" = ( +/obj/item/reagent_container/food/drinks/coffee, +/turf/open/floor/prison{ + dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/security) +/area/fiorina/station/telecomm/lz1_cargo) +"tJQ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/clothing/mask/cigarette/cigar/tarbacks, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/chapel) "tJR" = ( /obj/structure/machinery/computer/cameras/wooden_tv{ pixel_y = 7 @@ -31709,15 +32593,16 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) -"tKs" = ( -/obj/item/prop/helmetgarb/spacejam_tickets{ - desc = "A ticket to Souto Man's raffle!"; - name = "\improper Souto Raffle Ticket"; - pixel_x = 7; - pixel_y = 6 +"tKk" = ( +/obj/structure/bed{ + icon_state = "abed" }, -/turf/open/floor/prison, -/area/fiorina/station/chapel) +/obj/item/reagent_container/food/snacks/wrapped/barcardine, +/turf/open/floor/prison{ + dir = 10; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) "tKv" = ( /obj/structure/machinery/computer/secure_data{ dir = 8 @@ -31725,130 +32610,89 @@ /obj/structure/surface/table/woodentable/fancy, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"tLd" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/communications{ +"tKN" = ( +/obj/item/trash/used_stasis_bag{ + desc = "Wow, instant sand. They really have everything in space."; + name = "Insta-Sand! bag" + }, +/turf/open/floor/prison{ dir = 4; - pixel_y = 5 + icon_state = "green" }, +/area/fiorina/tumor/civres) +"tLk" = ( +/obj/item/paper/crumpled, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/medbay) "tLC" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"tLT" = ( -/obj/item/reagent_container/food/drinks/bottle/sake, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/civres) -"tLY" = ( -/obj/effect/landmark/monkey_spawn, -/turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) -"tMe" = ( -/turf/open/floor/prison{ - icon_state = "redcorner" - }, -/area/fiorina/station/power_ring) -"tMn" = ( -/obj/structure/platform_decoration{ - dir = 4 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/transit_hub) -"tMr" = ( -/obj/item/toy/deck, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +"tMb" = ( +/obj/structure/prop/souto_land/pole{ + dir = 1 }, -/area/fiorina/station/research_cells) -"tMx" = ( -/obj/structure/prop/almayer/computers/sensor_computer2, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "darkbrown2" }, -/area/fiorina/station/security) -"tMz" = ( -/obj/structure/closet/crate/bravo, -/obj/item/stack/sheet/metal/medium_stack, -/obj/item/stack/sheet/metal/medium_stack, -/obj/item/fuelCell, -/obj/item/stack/sheet/plasteel, +/area/fiorina/station/park) +"tMs" = ( +/obj/item/weapon/gun/smg/mp5, +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 4; + icon_state = "darkyellow2" }, -/area/fiorina/station/power_ring) -"tMA" = ( -/obj/structure/machinery/fuelcell_recycler, -/turf/open/floor/prison, /area/fiorina/station/telecomm/lz1_cargo) -"tMF" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 4; - layer = 3.5 +"tMS" = ( +/obj/effect/alien/weeds/node, +/obj/structure/prop/resin_prop{ + icon_state = "rack" }, -/obj/structure/platform_decoration{ - dir = 8 +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"tMU" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/disco) -"tML" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/cell/super{ - pixel_y = 12 - }, -/obj/item/cell/super, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, /area/fiorina/tumor/civres) -"tMP" = ( -/obj/structure/machinery/disposal, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"tNs" = ( -/obj/structure/platform_decoration, +"tMV" = ( +/obj/structure/closet/firecloset/full, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) -"tNt" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/trash/cigbutt/bcigbutt, +/area/fiorina/station/medbay) +"tNf" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/power_ring) -"tNu" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/hardpoint/support/flare_launcher{ - pixel_x = -1; - pixel_y = 5 +/area/fiorina/tumor/ice_lab) +"tNF" = ( +/obj/structure/closet/secure_closet/guncabinet{ + req_access = null }, +/obj/item/weapon/gun/smg/mp5, +/obj/item/storage/belt/marine, +/obj/item/clothing/under/marine/ua_riot, +/obj/item/clothing/suit/storage/marine/veteran/ua_riot, +/obj/item/prop/helmetgarb/riot_shield, /turf/open/floor/prison{ - icon_state = "darkyellow2" - }, -/area/fiorina/lz/near_lzI) -"tNS" = ( -/obj/structure/machinery/portable_atmospherics/powered/scrubber, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + icon_state = "redfull" }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) +/area/fiorina/station/security) "tNV" = ( /obj/item/stack/sheet/wood, /turf/open/floor/plating/prison, @@ -31856,39 +32700,23 @@ "tOc" = ( /turf/open/floor/wood, /area/fiorina/station/disco) -"tOo" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "blue_plate" - }, -/area/fiorina/station/botany) "tOp" = ( /obj/structure/window/framed/prison/cell, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"tOr" = ( -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) "tOG" = ( /obj/structure/surface/table/woodentable, /obj/item/storage/pill_bottle/kelotane/skillless, /turf/open/floor/carpet, /area/fiorina/station/civres_blue) -"tOK" = ( -/obj/structure/inflatable, -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) +"tOM" = ( +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"tOP" = ( +/obj/structure/platform, +/obj/structure/closet/radiation, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) "tOS" = ( /obj/structure/flora/grass/tallgrass/jungle, /obj/item/reagent_container/food/snacks/grown/eggplant{ @@ -31899,26 +32727,6 @@ name = "astroturf" }, /area/fiorina/station/park) -"tOZ" = ( -/obj/effect/spawner/random/toolbox, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"tPi" = ( -/obj/structure/monorail{ - name = "launch track" - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" - }, -/area/fiorina/lz/near_lzI) "tPz" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/device/flashlight/lamp/candelabra{ @@ -31931,279 +32739,196 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"tPN" = ( -/obj/structure/window/framed/prison/reinforced/hull, -/turf/open/floor/plating/prison, -/area/fiorina/maintenance) -"tPP" = ( -/obj/effect/landmark/objective_landmark/medium, +"tPA" = ( +/obj/structure/largecrate/supply/medicine/iv, /turf/open/floor/prison{ - dir = 9; + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"tPB" = ( +/turf/open/floor/prison{ + dir = 6; icon_state = "whitepurple" }, /area/fiorina/station/research_cells) -"tPQ" = ( +"tPC" = ( /turf/open/floor/prison{ - icon_state = "platingdmg1" + icon_state = "darkyellowcorners2" }, -/area/fiorina/station/security) -"tQi" = ( -/obj/structure/prop/souto_land/streamer{ - dir = 1; - pixel_y = 24 +/area/fiorina/station/flight_deck) +"tPN" = ( +/obj/structure/window/framed/prison/reinforced/hull, +/turf/open/floor/plating/prison, +/area/fiorina/maintenance) +"tQk" = ( +/obj/item/shard{ + icon_state = "medium" }, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" + icon_state = "floor_plate" }, -/area/fiorina/station/park) +/area/fiorina/tumor/servers) "tQm" = ( /obj/item/trash/boonie, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"tQn" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/fiberbush) -"tQq" = ( +"tQB" = ( +/obj/structure/window/framed/prison/reinforced/hull, +/turf/open/floor/plating/prison, +/area/fiorina/station/medbay) +"tRH" = ( +/turf/closed/wall/r_wall/prison_unmeltable, +/area/fiorina/station/botany) +"tSl" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/stack/sheet/mineral/plastic, /turf/open/floor/prison{ - dir = 8; - icon_state = "greencorner" + icon_state = "yellowfull" }, -/area/fiorina/tumor/civres) -"tQs" = ( -/obj/effect/decal/cleanable/blood/drip, +/area/fiorina/station/lowsec) +"tSm" = ( /turf/open/floor/prison{ dir = 8; icon_state = "greenblue" }, /area/fiorina/station/botany) -"tQB" = ( -/obj/structure/window/framed/prison/reinforced/hull, -/turf/open/floor/plating/prison, -/area/fiorina/station/medbay) -"tQJ" = ( -/obj/effect/landmark/survivor_spawner, -/turf/open/floor/prison{ - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"tQL" = ( +"tSL" = ( /obj/structure/platform{ dir = 1 }, /obj/structure/platform{ - dir = 8 + dir = 4 }, /obj/structure/platform_decoration{ - dir = 5 + dir = 9 }, +/obj/structure/largecrate/random, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/station/power_ring) -"tRa" = ( -/turf/open/floor/prison{ - dir = 9; - icon_state = "darkyellow2" - }, -/area/fiorina/lz/near_lzI) -"tRt" = ( -/obj/structure/closet/crate/miningcar{ - name = "\improper materials storage bin" - }, -/obj/item/reagent_container/food/snacks/meat, -/turf/open/floor/prison{ - dir = 1; - icon_state = "greenblue" - }, -/area/fiorina/station/botany) -"tRH" = ( -/turf/closed/wall/r_wall/prison_unmeltable, -/area/fiorina/station/botany) -"tSi" = ( -/obj/structure/bed/sofa/vert/grey/top, +"tSY" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"tSn" = ( -/turf/open/floor/prison{ - icon_state = "cell_stripe" +/area/fiorina/station/transit_hub) +"tTm" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/stool{ + pixel_y = 12 }, -/area/fiorina/station/medbay) -"tST" = ( -/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"tTr" = ( -/obj/structure/platform_decoration{ - dir = 1 + icon_state = "yellowfull" }, +/area/fiorina/station/lowsec) +"tTv" = ( +/obj/item/stack/sandbags/large_stack, /turf/open/floor/prison{ dir = 8; - icon_state = "bluecorner" - }, -/area/fiorina/station/power_ring) -"tTu" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkyellow2" }, -/area/fiorina/station/security) +/area/fiorina/station/telecomm/lz1_cargo) "tTA" = ( /obj/structure/prop/souto_land/pole{ dir = 1 }, /turf/open/floor/wood, /area/fiorina/station/park) -"tTK" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_7" - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) -"tTM" = ( -/obj/structure/machinery/iv_drip, +"tTB" = ( +/obj/item/clothing/gloves/boxing/green, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 6; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) +"tTI" = ( +/obj/structure/closet/bodybag, +/obj/effect/decal/medical_decals{ + dir = 4; + icon_state = "triagedecaldir" }, -/area/fiorina/station/telecomm/lz1_cargo) -"tTV" = ( -/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"tUe" = ( -/obj/structure/platform{ - dir = 8 + icon_state = "whitegreenfull" }, -/obj/structure/platform, -/obj/structure/platform_decoration{ - dir = 10 +/area/fiorina/station/medbay) +"tUs" = ( +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) +"tUC" = ( +/obj/item/stack/sheet/metal{ + amount = 5 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "darkyellow2" }, -/area/fiorina/station/botany) -"tUr" = ( -/obj/structure/closet/toolcloset, +/area/fiorina/lz/near_lzI) +"tUD" = ( +/obj/structure/closet, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" - }, -/area/fiorina/maintenance) -"tUs" = ( -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) -"tUA" = ( -/obj/structure/bed{ - icon_state = "abed" + dir = 10; + icon_state = "floor_plate" }, -/obj/item/explosive/grenade/incendiary/molotov, +/area/fiorina/station/flight_deck) +"tUG" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/toolbox/mechanical/green, /obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/lowsec) +/area/fiorina/maintenance) "tUS" = ( /obj/item/explosive/grenade/high_explosive/frag, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"tVt" = ( -/obj/structure/bed/chair/office/light{ - dir = 1 - }, +"tVf" = ( +/obj/structure/closet/crate/bravo, +/obj/item/stack/sheet/metal/medium_stack, +/obj/item/stack/sheet/metal/medium_stack, +/obj/item/fuelCell, +/obj/item/stack/sheet/plasteel, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"tVu" = ( -/obj/effect/decal{ - icon = 'icons/obj/items/policetape.dmi'; - icon_state = "engineering_v" + icon_state = "bluefull" }, +/area/fiorina/station/power_ring) +"tVI" = ( +/obj/structure/inflatable/popped/door, /turf/open/floor/prison{ dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"tVB" = ( -/obj/item/ammo_casing{ - dir = 8; - icon_state = "casing_6" - }, -/obj/structure/barricade/metal{ - dir = 8; - health = 150; - icon_state = "metal_2" - }, -/obj/effect/spawner/random/gun/smg, -/turf/open/floor/prison{ - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"tVG" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" + icon_state = "sterile_white" }, -/obj/structure/platform, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) +/area/fiorina/station/research_cells) "tVV" = ( /obj/effect/landmark/corpsespawner/ua_riot, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"tVX" = ( -/obj/structure/window/reinforced/tinted, -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/recharger, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/fiorina/lz/near_lzI) -"tVZ" = ( -/obj/structure/machinery/vending/security, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"tWe" = ( -/obj/structure/surface/rack, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/fire, +"tVY" = ( +/obj/structure/machinery/power/smes/buildable, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"tWf" = ( +/obj/structure/inflatable/popped, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) +"tWh" = ( +/obj/structure/closet/secure_closet/hydroponics, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"tWo" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + dir = 9; + icon_state = "greenfull" }, +/area/fiorina/station/botany) +"tWs" = ( +/obj/item/toy/deck, /turf/open/floor/prison{ - icon_state = "greenblue" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/botany) -"tWq" = ( +/area/fiorina/station/research_cells) +"tWz" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/trash/plate{ - pixel_x = 1; - pixel_y = 3 - }, +/obj/item/tool/pen/blue/clicky, /turf/open/floor/prison{ - icon_state = "kitchen" + icon_state = "floor_plate" }, /area/fiorina/station/power_ring) "tWI" = ( @@ -32213,31 +32938,32 @@ }, /turf/open/space, /area/fiorina/oob) -"tXi" = ( -/obj/structure/closet/secure_closet/guncabinet{ - req_access = null +"tXt" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/obj/item/storage/box/pillbottles, -/obj/item/clothing/under/marine/ua_riot, -/obj/item/clothing/suit/storage/marine/veteran/ua_riot, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/station/security) -"tXQ" = ( -/turf/open/floor/prison{ - icon_state = "platingdmg1" +/area/fiorina/station/transit_hub) +"tXD" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" }, -/area/fiorina/tumor/servers) -"tYc" = ( -/obj/effect/decal{ - icon = 'icons/obj/items/policetape.dmi'; - icon_state = "engineering_v" +/obj/structure/platform{ + dir = 4 }, +/turf/open/floor/plating/prison, +/area/fiorina/station/park) +"tXT" = ( +/obj/structure/machinery/vending/cola, /turf/open/floor/prison{ - icon_state = "darkyellow2" + icon_state = "redfull" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/security) "tYd" = ( /obj/structure/machinery/light/double/blue{ dir = 4; @@ -32248,100 +32974,136 @@ icon_state = "plate" }, /area/fiorina/tumor/aux_engi) -"tYr" = ( -/obj/structure/platform{ - dir = 4 +"tYg" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" }, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) +/area/fiorina/tumor/servers) +"tYt" = ( +/obj/structure/bed/roller, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) "tYw" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/tumor/civres) -"tYx" = ( -/obj/structure/surface/rack, -/obj/item/tool/lighter, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"tZo" = ( -/obj/item/newspaper, -/turf/open/floor/prison, -/area/fiorina/station/security) -"tZs" = ( -/obj/structure/machinery/landinglight/ds2/delayone{ - dir = 8 +"tYD" = ( +/obj/structure/platform_decoration, +/turf/open/floor/prison{ + dir = 6; + icon_state = "blue" }, +/area/fiorina/station/power_ring) +"tYQ" = ( +/obj/structure/bed/chair, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "blue_plate" }, -/area/fiorina/lz/near_lzII) -"tZN" = ( -/obj/effect/landmark/monkey_spawn, +/area/fiorina/station/botany) +"tYU" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper_bin, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/tumor/ice_lab) +"tZe" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/area/fiorina/tumor/servers) -"tZS" = ( /turf/open/floor/prison{ - icon_state = "platingdmg1" + icon_state = "yellowfull" }, -/area/fiorina/tumor/civres) -"tZV" = ( -/obj/structure/machinery/landinglight/ds1/delayone{ - dir = 8 +/area/fiorina/station/lowsec) +"tZk" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" }, +/area/fiorina/tumor/aux_engi) +"tZz" = ( +/obj/structure/prop/almayer/computers/sensor_computer1, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + icon_state = "darkredfull2" }, /area/fiorina/lz/near_lzI) +"tZO" = ( +/obj/item/frame/rack, +/turf/open/floor/plating/prison, +/area/fiorina/station/disco) "tZW" = ( /obj/item/tool/wet_sign, /turf/open/floor/almayer{ icon_state = "plate" }, /area/fiorina/tumor/ship) -"tZX" = ( -/obj/structure/bed/chair/comfy{ - dir = 4 - }, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) "uap" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/toy/deck, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"uat" = ( +"uaL" = ( +/obj/item/stack/sheet/wood, /turf/open/floor/prison{ dir = 8; icon_state = "darkbrown2" }, -/area/fiorina/maintenance) +/area/fiorina/station/park) +"uaM" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkbrowncorners2" + }, +/area/fiorina/tumor/aux_engi) "ubc" = ( /obj/structure/largecrate/random/barrel/green, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"ubk" = ( +"ubh" = ( +/obj/structure/machinery/shower{ + pixel_y = 13 + }, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, /turf/open/floor/prison{ - icon_state = "floorscorched1" + icon_state = "kitchen" }, -/area/fiorina/tumor/aux_engi) -"ubH" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" +/area/fiorina/station/lowsec) +"ubo" = ( +/obj/item/stack/sheet/metal/medium_stack, +/obj/structure/surface/rack, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/floor/prison, -/area/fiorina/station/security) +/area/fiorina/station/power_ring) +"ubA" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/emails{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) "ubN" = ( /turf/closed/shuttle/ert{ icon_state = "leftengine_1"; opacity = 0 }, /area/fiorina/tumor/aux_engi) +"ubP" = ( +/turf/open/floor/prison, +/area/fiorina/station/security) "ubQ" = ( /obj/structure/ice/thin/indestructible{ dir = 8; @@ -32350,59 +33112,84 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/station/research_cells) -"ubT" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, +"ubX" = ( /turf/open/floor/prison{ - icon_state = "bluefull" + dir = 5; + icon_state = "whitegreen" }, -/area/fiorina/station/power_ring) -"uch" = ( -/obj/structure/platform{ - dir = 4 +/area/fiorina/tumor/ice_lab) +"uci" = ( +/obj/effect/spawner/random/tool, +/obj/structure/surface/rack, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/turf/open/floor/prison, -/area/fiorina/station/disco) +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) "ucj" = ( /turf/closed/shuttle/ert{ icon_state = "stan25" }, /area/fiorina/station/power_ring) -"ucr" = ( +"ucu" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, /turf/open/floor/prison{ - dir = 10; - icon_state = "darkyellow2" + icon_state = "redfull" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/security) +"ucN" = ( +/obj/structure/tunnel, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "ucS" = ( /obj/structure/machinery/light/double/blue, -/turf/open/floor/plating/plating_catwalk/prison, -/area/fiorina/station/telecomm/lz1_tram) -"uds" = ( -/obj/item/ammo_casing{ - dir = 2; - icon_state = "casing_5" - }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/telecomm/lz1_tram) +"udj" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/civres) +"udt" = ( +/obj/structure/barricade/handrail{ dir = 1; - icon_state = "darkbrown2" + pixel_y = 2 }, -/area/fiorina/station/park) -"udY" = ( -/obj/structure/platform{ +/obj/structure/barricade/handrail{ dir = 8 }, -/obj/item/prop/almayer/flight_recorder, /turf/open/floor/prison, +/area/fiorina/station/security) +"udB" = ( +/obj/structure/bed/roller, +/obj/effect/spawner/random/gun/rifle/highchance, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, /area/fiorina/lz/near_lzI) -"uef" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, +"udE" = ( +/obj/structure/barricade/metal/wired, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) +"uen" = ( +/obj/item/weapon/gun/rifle/m16, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/telecomm/lz1_cargo) "uep" = ( /obj/effect/decal/cleanable/blood, /obj/effect/spawner/gibspawner/human, @@ -32415,121 +33202,150 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"ueA" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, +"ueI" = ( +/obj/structure/filingcabinet, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"ueF" = ( -/obj/structure/largecrate/random/barrel/yellow, +"ueP" = ( +/obj/item/paper/crumpled, /turf/open/floor/prison{ - icon_state = "yellow" + icon_state = "redfull" + }, +/area/fiorina/station/security) +"ueX" = ( +/obj/structure/bookcase{ + icon_state = "book-5" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" }, +/area/fiorina/station/medbay) +"ufE" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/prison, /area/fiorina/station/lowsec) -"ufo" = ( +"ufL" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"ufN" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/floor/prison{ + icon_state = "panelscorched" + }, +/area/fiorina/tumor/aux_engi) +"ufR" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "whitepurplecorner" + }, +/area/fiorina/station/research_cells) +"ugg" = ( /obj/structure/closet/crate/miningcar{ name = "\improper materials storage bin" }, /obj/item/reagent_container/food/snacks/meat, /turf/open/floor/prison, /area/fiorina/station/lowsec) -"ufX" = ( -/obj/item/reagent_container/food/drinks/sillycup, +"ugk" = ( /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "darkbrowncorners2" }, -/area/fiorina/station/power_ring) -"ugC" = ( -/obj/item/stack/cable_coil, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/tumor/aux_engi) +"ugm" = ( +/obj/structure/prop/resin_prop{ + icon_state = "coolanttank" }, -/area/fiorina/tumor/servers) -"ugH" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/paper, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkpurple2" + icon_state = "darkbrownfull2" }, -/area/fiorina/tumor/servers) -"ugT" = ( -/obj/effect/landmark/corpsespawner/ua_riot/burst, -/turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"ugU" = ( -/obj/structure/machinery/portable_atmospherics/canister/nitrogen, +"ugq" = ( +/obj/effect/decal/cleanable/blood/splatter{ + icon_state = "gibdown1" + }, /turf/open/floor/prison{ - dir = 8; - icon_state = "yellow" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/lowsec) -"uhb" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/drinks/sillycup{ - pixel_x = -5; - pixel_y = 10 +/area/fiorina/station/medbay) +"ugv" = ( +/obj/structure/platform/kutjevo/smooth, +/obj/structure/platform/kutjevo/smooth{ + dir = 4 }, -/obj/item/prop/helmetgarb/spacejam_tickets{ - desc = "Low security prisoners would smuggle in arcade tickets after visitations. The tickets act as a stand in for paper currency in the prison economy, they're backed by the cigarette standard, since one ticket nets one cigarette at the prize booth. The cigarettes also get smuggled back in."; - name = "\improper arcade tickets"; +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/turf/open/space/basic, +/area/fiorina/oob) +"ugP" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/trash/plate{ pixel_x = 1; - pixel_y = -1 + pixel_y = 3 }, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"uhd" = ( +/area/fiorina/station/power_ring) +"ugT" = ( +/obj/effect/landmark/corpsespawner/ua_riot/burst, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/aux_engi) +"uha" = ( +/obj/structure/prop/resin_prop{ + icon_state = "sheater0" + }, /turf/open/floor/prison{ - dir = 10; - icon_state = "darkpurple2" + icon_state = "darkbrownfull2" }, -/area/fiorina/tumor/servers) +/area/fiorina/tumor/aux_engi) "uhm" = ( /obj/structure/window_frame/prison/reinforced, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"uhH" = ( -/obj/structure/machinery/landinglight/ds1/delaythree{ - dir = 4 - }, +"uhA" = ( +/obj/structure/closet/bodybag, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/lz/near_lzI) -"uin" = ( -/obj/item/ammo_box/magazine/misc/flares/empty{ - pixel_x = -1; - pixel_y = 7 + dir = 10; + icon_state = "sterile_white" }, +/area/fiorina/station/research_cells) +"uhX" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 5; + icon_state = "whitegreen" }, -/area/fiorina/station/telecomm/lz1_cargo) -"uix" = ( -/obj/structure/bed/chair/office/dark, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"uiK" = ( -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/medical_decals{ - icon_state = "triagedecalleft" +/area/fiorina/station/medbay) +"uia" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 9; + icon_state = "greenfull" + }, +/area/fiorina/station/botany) +"uiD" = ( +/obj/structure/barricade/wooden{ + dir = 8 }, -/area/fiorina/station/medbay) -"uiR" = ( -/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "yellowfull" + icon_state = "darkbrown2" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/park) "uiV" = ( /obj/structure/platform{ dir = 4 @@ -32542,6 +33358,19 @@ }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) +"ujb" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkyellowcorners2" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"ujo" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) "ujs" = ( /obj/item/shard{ icon_state = "large"; @@ -32551,49 +33380,19 @@ name = "astroturf" }, /area/fiorina/station/research_cells) -"ujC" = ( -/obj/structure/toilet{ - dir = 8 - }, -/turf/open/floor/prison{ - icon_state = "sterile_white" - }, -/area/fiorina/station/civres_blue) -"ujJ" = ( -/obj/structure/monorail{ - dir = 5; - name = "launch track" - }, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/aux_engi) -"ujO" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/obj/structure/bed/chair{ - dir = 4; - pixel_y = 4 - }, -/obj/structure/bed/chair{ - dir = 4; - pixel_y = 8 - }, +"ujz" = ( +/obj/item/paper/prison_station/inmate_handbook, /turf/open/floor/prison{ dir = 10; - icon_state = "floor_marked" - }, -/area/fiorina/station/park) -"ukk" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 + icon_state = "floor_plate" }, -/obj/effect/spawner/random/pills/lowchance, +/area/fiorina/station/telecomm/lz1_cargo) +"ukg" = ( +/obj/item/trash/candle, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitepurple" + icon_state = "darkyellow2" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/telecomm/lz1_cargo) "ukr" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 10 @@ -32602,58 +33401,55 @@ name = "astroturf" }, /area/fiorina/station/park) -"ukz" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/gun/pistol/midchance, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkpurple2" - }, -/area/fiorina/tumor/servers) -"ukI" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreencorner" +"uky" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 8 }, -/area/fiorina/tumor/ice_lab) -"ukN" = ( -/obj/structure/bed/chair{ - dir = 1 +/obj/structure/platform_decoration{ + dir = 10 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreen" }, -/area/fiorina/station/security) +/area/fiorina/tumor/ice_lab) "ukR" = ( /obj/structure/window/framed/prison/reinforced/hull, /obj/structure/window/framed/prison/reinforced/hull, /turf/open/space/basic, /area/fiorina/lz/near_lzI) -"ulJ" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, +"ulc" = ( +/obj/item/paper, /turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" + dir = 8; + icon_state = "whitepurple" }, -/area/fiorina/station/lowsec) -"ulW" = ( -/obj/structure/prop/almayer/computers/sensor_computer2, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +/area/fiorina/station/research_cells) +"ume" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/drinks/coffee{ + pixel_x = 11; + pixel_y = 14 }, -/area/fiorina/tumor/servers) -"umq" = ( -/obj/structure/barricade/wooden{ - dir = 4 +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 }, +/obj/structure/largecrate/random/mini/chest/c, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) +"umg" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + icon_state = "blue" }, -/area/fiorina/station/telecomm/lz1_cargo) +/area/fiorina/station/civres_blue) +"umm" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) "umy" = ( /obj/structure/prop/resin_prop{ dir = 4; @@ -32662,6 +33458,20 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) +"umz" = ( +/obj/item/trash/kepler, +/turf/open/floor/prison{ + dir = 8; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"umI" = ( +/obj/item/clothing/gloves/boxing/blue, +/turf/open/floor/prison{ + dir = 9; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) "umW" = ( /obj/structure/bed/sofa/pews, /turf/open/floor/wood, @@ -32670,52 +33480,102 @@ /obj/effect/spawner/random/toolbox, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"unc" = ( -/obj/structure/coatrack, -/obj/item/clothing/suit/storage/CMB, +"uno" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"unp" = ( +/obj/structure/machinery/landinglight/ds1/delaythree{ + dir = 4 + }, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/fiorina/lz/near_lzI) +"unu" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" }, +/turf/open/floor/prison, /area/fiorina/station/security) -"unW" = ( -/obj/structure/machinery/shower{ - pixel_y = 13 +"unz" = ( +/obj/structure/closet/secure_closet/security_empty, +/obj/structure/window/reinforced{ + dir = 8 }, +/obj/item/storage/box/flashbangs, /turf/open/floor/prison{ - icon_state = "kitchen" + icon_state = "redfull" }, -/area/fiorina/station/research_cells) -"uod" = ( -/obj/structure/largecrate/random/barrel/white, +/area/fiorina/station/security) +"unA" = ( +/turf/open/floor/prison{ + icon_state = "platingdmg1" + }, +/area/fiorina/station/civres_blue) +"unF" = ( +/obj/item/tool/wirecutters, +/obj/structure/platform/shiva{ + dir = 1 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"uou" = ( +/obj/structure/barricade/sandbags{ + dir = 8; + icon_state = "sandbag_0"; + pixel_y = 2 + }, +/obj/item/storage/toolbox/syndicate, /turf/open/floor/prison, -/area/fiorina/station/power_ring) -"uol" = ( -/obj/structure/machinery/landinglight/ds1{ - dir = 4 +/area/fiorina/station/disco) +"uoH" = ( +/obj/structure/barricade/sandbags{ + dir = 4; + icon_state = "sandbag_0"; + pixel_y = 2 }, +/obj/item/storage/pouch/tools/full, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + dir = 10; + icon_state = "yellow" }, -/area/fiorina/lz/near_lzI) -"upt" = ( +/area/fiorina/station/disco) +"upf" = ( +/obj/structure/closet/toolcloset, +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkbrown2" + }, +/area/fiorina/maintenance) +"upr" = ( /obj/structure/platform, -/turf/open/floor/prison, -/area/fiorina/tumor/ice_lab) -"upF" = ( -/obj/structure/machinery/processor{ - desc = "It CAN blend it."; - icon_state = "blender_e"; - name = "Blendomatic"; +/turf/open/floor/prison{ + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"upw" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "red" + }, +/area/fiorina/lz/near_lzII) +"upK" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_27"; + layer = 3.1; pixel_x = -2; pixel_y = 10 }, -/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" + dir = 4; + icon_state = "redcorner" }, -/area/fiorina/station/civres_blue) +/area/fiorina/station/power_ring) "upM" = ( /obj/structure/disposalpipe/broken, /turf/open/floor/plating/prison, @@ -32724,118 +33584,107 @@ /obj/structure/sign/nosmoking_1, /turf/closed/wall/prison, /area/fiorina/station/security/wardens) -"uqa" = ( -/obj/item/clothing/accessory/armband/cargo{ - desc = "Sworn to the shrapnel and the shards therein. So sayeth her command when the first detonation occured."; - name = "HEFA Order milita armband" - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/chapel) -"uqo" = ( -/obj/effect/landmark/queen_spawn, +"upY" = ( +/turf/open/floor/prison, +/area/fiorina/station/lowsec) +"uqd" = ( +/obj/item/pamphlet/skill/powerloader, +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreencorner" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/tumor/ice_lab) -"uqp" = ( -/obj/structure/bed/sofa/vert/grey/bot{ - pixel_y = 8 +/area/fiorina/station/medbay) +"uqj" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" }, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_tram) -"urc" = ( -/obj/structure/largecrate/random/barrel/white, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/obj/structure/platform{ + dir = 8 }, /turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" + dir = 10; + icon_state = "bright_clean2" }, -/area/fiorina/station/disco) -"uri" = ( -/obj/structure/largecrate/supply/supplies/mre, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"urw" = ( -/obj/structure/machinery/vending/snack/packaged, +/area/fiorina/station/park) +"uqV" = ( +/obj/structure/inflatable, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 1; + icon_state = "whitepurple" }, /area/fiorina/station/research_cells) +"urv" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) "urJ" = ( /obj/structure/platform/kutjevo/smooth, /turf/open/floor/almayer_hull, /area/fiorina/oob) -"urS" = ( -/obj/item/trash/chunk, -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"usa" = ( -/turf/open/floor/prison{ - dir = 5; - icon_state = "green" - }, -/area/fiorina/station/chapel) "usg" = ( /obj/effect/spawner/random/attachment, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"usq" = ( -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"usz" = ( -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/lowsec) -"usA" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, -/turf/open/floor/prison{ - dir = 6; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"utf" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) "uts" = ( /obj/structure/surface/rack, /obj/item/storage/toolbox/mechanical/green, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"utC" = ( -/obj/item/stool, +"utw" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/secure_data{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/station/research_cells) +"utG" = ( +/obj/structure/closet{ + density = 0; + pixel_y = 18 + }, +/obj/item/clothing/gloves/boxing/blue, /turf/open/floor/prison{ dir = 1; - icon_state = "cell_stripe" + icon_state = "yellow" }, -/area/fiorina/station/flight_deck) -"utV" = ( -/obj/structure/machinery/light/double/blue{ +/area/fiorina/station/lowsec) +"utL" = ( +/obj/structure/bed/chair, +/turf/open/floor/prison{ dir = 1; - pixel_y = 21 + icon_state = "darkbrown2" }, +/area/fiorina/station/park) +"utW" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - dir = 5; + dir = 1; icon_state = "darkyellow2" }, -/area/fiorina/lz/near_lzI) +/area/fiorina/lz/near_lzI) +"uud" = ( +/obj/structure/bed/chair/office/dark, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"uuk" = ( +/obj/item/reagent_container/food/drinks/cans/waterbottle, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/lz/near_lzII) +"uuG" = ( +/obj/structure/machinery/washing_machine, +/obj/structure/machinery/washing_machine{ + pixel_y = 15 + }, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "yellowfull" + }, +/area/fiorina/station/lowsec) "uuJ" = ( /obj/structure/holohoop{ dir = 8; @@ -32860,84 +33709,86 @@ /obj/item/prop/helmetgarb/gunoil, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"uvh" = ( -/obj/structure/barricade/wooden{ - dir = 4 - }, +"uvn" = ( /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "darkyellow2" }, -/area/fiorina/station/research_cells) -"uvi" = ( -/obj/structure/reagent_dispensers/watertank, +/area/fiorina/station/telecomm/lz1_cargo) +"uvu" = ( /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + dir = 1; + icon_state = "redcorner" }, -/area/fiorina/station/park) -"uvy" = ( -/obj/effect/landmark{ - icon_state = "hive_spawn"; - name = "xeno_hive_spawn" +/area/fiorina/station/power_ring) +"uvF" = ( +/obj/structure/prop/structure_lattice{ + dir = 4 }, -/obj/effect/landmark/ert_spawns/groundside_xeno, -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreencorner" +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 }, -/area/fiorina/tumor/ice_lab) -"uvG" = ( -/obj/effect/decal/cleanable/blood/gibs/xeno/down, +/turf/open/floor/prison, +/area/fiorina/maintenance) +"uvS" = ( +/obj/structure/blocker/invisible_wall, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "whitepurple" }, -/area/fiorina/station/medbay) -"uwg" = ( -/obj/effect/spawner/random/tool, +/area/fiorina/oob) +"uvV" = ( +/obj/structure/coatrack, /turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) +"uvZ" = ( +/obj/structure/prop/structure_lattice{ dir = 4; - icon_state = "whitegreencorner" + health = 300 }, -/area/fiorina/tumor/ice_lab) +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/civres_blue) +"uwb" = ( +/obj/structure/largecrate/supply/supplies/water, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) "uwk" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"uwI" = ( -/obj/structure/machinery/power/smes/buildable{ - capacity = 1e+006; - dir = 1 +"uws" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_ew_full_cap" }, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" +/obj/structure/platform/stair_cut/alt, +/turf/open/floor/plating/prison, +/area/fiorina/station/civres_blue) +"uwT" = ( +/obj/structure/sign/poster{ + icon_state = "poster10"; + pixel_x = 32 }, -/area/fiorina/tumor/aux_engi) -"uwP" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/stack/sheet/mineral/plastic, /turf/open/floor/prison, -/area/fiorina/tumor/servers) -"uxa" = ( -/obj/effect/decal/cleanable/blood/splatter, +/area/fiorina/station/power_ring) +"uxd" = ( +/obj/effect/spawner/random/tool, /turf/open/floor/prison{ icon_state = "darkbrownfull2" }, /area/fiorina/tumor/aux_engi) -"uxi" = ( -/obj/effect/decal/medical_decals{ - icon_state = "triagedecaldir" - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"uxp" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/chapel) "uxv" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/plating/prison, @@ -32949,48 +33800,51 @@ name = "pool" }, /area/fiorina/station/park) -"uxO" = ( -/obj/effect/landmark/objective_landmark/far, -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" - }, -/area/fiorina/maintenance) -"uxY" = ( -/turf/open/floor/prison{ - dir = 6; - icon_state = "darkyellow2" - }, -/area/fiorina/lz/near_lzI) -"uyb" = ( -/obj/effect/decal/cleanable/blood{ - icon_state = "gib6" - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/disco) -"uyd" = ( -/obj/item/stack/sheet/metal, +"uye" = ( +/obj/item/weapon/gun/rifle/m16, +/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison, -/area/fiorina/station/lowsec) -"uyq" = ( +/area/fiorina/station/security) +"uyp" = ( +/obj/structure/filingcabinet, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"uyw" = ( /obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/prison{ icon_state = "bluefull" }, /area/fiorina/station/power_ring) -"uyr" = ( -/obj/item/device/flashlight/lamp/tripod, +"uyC" = ( +/obj/structure/machinery/shower{ + pixel_y = 13 + }, +/obj/structure/machinery/shower{ + dir = 4 + }, /turf/open/floor/prison{ - icon_state = "green" + icon_state = "kitchen" }, -/area/fiorina/station/chapel) +/area/fiorina/station/research_cells) "uyM" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) +"uyN" = ( +/obj/structure/prop/structure_lattice{ + dir = 4; + health = 300 + }, +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/fiberbush) "uza" = ( /obj/effect/decal/cleanable/blood/splatter{ icon_state = "gibup1" @@ -32998,57 +33852,35 @@ /obj/item/explosive/grenade/high_explosive/frag, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"uzd" = ( +"uzi" = ( +/obj/effect/landmark/monkey_spawn, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkpurple2" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/disco) +/area/fiorina/tumor/aux_engi) "uzw" = ( /obj/structure/machinery/light/double/blue, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"uzO" = ( -/obj/structure/barricade/metal/wired{ - dir = 4 +"uzy" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, -/obj/structure/largecrate/random/secure, /turf/open/floor/plating/prison, -/area/fiorina/station/disco) -"uzX" = ( -/obj/structure/barricade/wooden{ - dir = 8 - }, -/obj/structure/barricade/wooden, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/research_cells) -"uAi" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, -/obj/item/clothing/suit/armor/bulletproof/badge, -/turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"uAv" = ( +/area/fiorina/station/civres_blue) +"uzG" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "blue" + dir = 1; + icon_state = "darkbrown2" }, -/area/fiorina/station/civres_blue) -"uAG" = ( -/obj/structure/inflatable, +/area/fiorina/tumor/aux_engi) +"uAg" = ( /turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" + dir = 1; + icon_state = "whitegreencorner" }, -/area/fiorina/station/lowsec) +/area/fiorina/tumor/ice_lab) "uAX" = ( /obj/effect/decal/hefa_cult_decals/d32, /turf/open/floor/prison/chapel_carpet{ @@ -33063,137 +33895,116 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"uBS" = ( -/obj/structure/closet/secure_closet/personal, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +"uBV" = ( +/obj/structure/platform_decoration{ + dir = 4 }, -/area/fiorina/tumor/servers) -"uBW" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/trash/cigbutt, /turf/open/floor/prison{ icon_state = "bluefull" }, /area/fiorina/station/power_ring) -"uCa" = ( -/obj/structure/platform{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"uCu" = ( -/obj/effect/decal{ - icon = 'icons/obj/items/policetape.dmi'; - icon_state = "engineering_h"; - layer = 2.5; - pixel_y = -11 +"uCO" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 }, -/obj/structure/barricade/metal/wired, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/flight_deck) -"uCz" = ( -/obj/structure/sink{ - pixel_y = 23 +/area/fiorina/station/power_ring) +"uCX" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, -/obj/item/paper_bin{ - pixel_x = -11; - pixel_y = -5 +/obj/structure/platform, +/turf/open/floor/plating/prison, +/area/fiorina/station/park) +"uDX" = ( +/obj/structure/prop/structure_lattice{ + health = 300 + }, +/obj/structure/prop/structure_lattice{ + pixel_y = 10 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"uCD" = ( -/obj/effect/landmark/nightmare{ - insert_tag = "medicalhold" +/area/fiorina/tumor/aux_engi) +"uEh" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/guestpass{ + dir = 4; + reason = "Visitor" }, -/turf/closed/wall/prison, -/area/fiorina/station/medbay) -"uCW" = ( -/obj/item/reagent_container/glass/bucket/janibucket, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "bluefull" }, -/area/fiorina/station/chapel) +/area/fiorina/station/power_ring) "uEj" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) -"uEm" = ( +"uEy" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ dir = 4; - icon_state = "red" + icon_state = "cell_stripe" }, -/area/fiorina/station/security) -"uEN" = ( -/obj/structure/machinery/landinglight/ds2/delaytwo, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/tumor/servers) +"uEM" = ( +/obj/effect/decal/cleanable/blood{ + icon_state = "xtracks" }, -/area/fiorina/lz/near_lzII) -"uFc" = ( -/obj/structure/closet/secure_closet/security, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 1; + icon_state = "green" }, -/area/fiorina/station/disco) -"uFh" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" +/area/fiorina/station/chapel) +"uEY" = ( +/obj/structure/machinery/power/smes/buildable{ + capacity = 1e+006; + dir = 1 }, -/area/fiorina/station/lowsec) -"uFE" = ( -/obj/item/stack/sandbags_empty/half, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/flight_deck) -"uFM" = ( -/obj/structure/surface/table/reinforced/prison{ - dir = 4; - flipped = 1 +/area/fiorina/tumor/aux_engi) +"uFd" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/obj/structure/barricade/wooden{ + dir = 8 }, -/area/fiorina/station/medbay) -"uFX" = ( /turf/open/floor/prison{ - dir = 6; - icon_state = "darkpurple2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) -"uGb" = ( -/obj/structure/barricade/metal/wired{ - dir = 8 +/area/fiorina/station/telecomm/lz1_cargo) +"uFg" = ( +/obj/effect/landmark/nightmare{ + insert_tag = "birthday" }, -/obj/effect/spawner/random/sentry/midchance, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" + icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) -"uGq" = ( -/obj/effect/decal/medical_decals{ - icon_state = "cryomid" +/area/fiorina/station/power_ring) +"uFs" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_ew_full_cap" }, -/obj/structure/machinery/light/double/blue, +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/telecomm/lz1_tram) +"uFC" = ( +/obj/structure/barricade/metal/wired, /turf/open/floor/prison{ - icon_state = "whitegreen" + dir = 10; + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/station/telecomm/lz1_cargo) "uGu" = ( /obj/effect/decal/hefa_cult_decals/d32{ icon_state = "3" @@ -33203,14 +34014,24 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"uGD" = ( -/obj/item/tool/kitchen/knife, -/obj/structure/bed/roller, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) -"uGM" = ( -/turf/open/floor/prison, -/area/fiorina/station/park) +"uGI" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/lz/near_lzI) +"uGL" = ( +/obj/item/trash/used_stasis_bag{ + desc = "Wow, instant sand. They really have everything in space."; + name = "Insta-Sand! bag" + }, +/turf/open/floor/prison{ + dir = 5; + icon_state = "yellow" + }, +/area/fiorina/station/disco) "uGT" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, @@ -33218,63 +34039,40 @@ "uGY" = ( /turf/closed/wall/prison, /area/fiorina/station/security) -"uHL" = ( -/obj/item/stool{ - pixel_x = -4; - pixel_y = 23 +"uHl" = ( +/obj/item/tool/weldingtool, +/turf/open/floor/plating/prison, +/area/fiorina/station/civres_blue) +"uIg" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 6 }, /turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/lowsec) -"uHX" = ( -/obj/structure/machinery/door/airlock/prison_hatch/autoname{ +/area/fiorina/maintenance) +"uIB" = ( +/obj/structure/bed/chair{ dir = 1 }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/civres_blue) -"uIa" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, -/obj/effect/spawner/random/tool, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"uIb" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/prison{ - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"uIl" = ( -/obj/structure/machinery/cryo_cell, -/obj/structure/pipes/standard/cap/hidden, /turf/open/floor/prison{ dir = 10; icon_state = "sterile_white" }, /area/fiorina/station/medbay) -"uIu" = ( -/obj/item/storage/toolbox/electrical, -/obj/structure/surface/rack, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"uIL" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 }, -/area/fiorina/tumor/civres) -"uIG" = ( -/obj/structure/prop/structure_lattice{ - dir = 4 +/obj/structure/bed/chair{ + dir = 1; + layer = 2.8 }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 +/turf/open/floor/prison{ + icon_state = "yellowfull" }, -/turf/open/floor/prison, -/area/fiorina/tumor/civres) +/area/fiorina/station/disco) "uIS" = ( /obj/structure/window/framed/prison, /turf/open/floor/plating/prison, @@ -33287,49 +34085,93 @@ }, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"uJj" = ( -/obj/structure/largecrate/random/case, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"uJk" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 +"uJi" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, /turf/open/floor/prison{ icon_state = "yellowfull" }, +/area/fiorina/station/disco) +"uJp" = ( +/obj/structure/inflatable, +/turf/open/floor/prison{ + dir = 9; + icon_state = "yellow" + }, /area/fiorina/station/lowsec) -"uJM" = ( +"uJG" = ( +/obj/item/ammo_casing{ + icon_state = "casing_10_1" + }, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrowncorners2" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/maintenance) -"uJX" = ( -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison, -/area/fiorina/station/park) -"uKh" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/secure_data{ - dir = 8 +/area/fiorina/station/medbay) +"uJQ" = ( +/obj/item/stack/cable_coil, +/turf/open/floor/prison{ + dir = 6; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"uJR" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "ppflowers_2" + }, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" }, +/area/fiorina/station/central_ring) +"uKb" = ( +/obj/item/stack/tile/plasteel, /turf/open/floor/prison{ + dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/security) +/area/fiorina/station/flight_deck) "uKx" = ( /turf/closed/shuttle/ert, /area/fiorina/lz/near_lzI) -"uLd" = ( -/obj/structure/foamed_metal, +"uKE" = ( +/obj/item/clipboard, /turf/open/floor/prison, -/area/fiorina/station/civres_blue) +/area/fiorina/station/park) +"uKK" = ( +/obj/structure/bed/roller, +/obj/item/bedsheet/green, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"uKX" = ( +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security/wardens) +"uLf" = ( +/obj/structure/platform, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/park) +"uLj" = ( +/obj/effect/decal/cleanable/blood/gibs/robot/limb, +/turf/open/floor/prison{ + dir = 5; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"uLq" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/station/telecomm/lz1_tram) "uLr" = ( /obj/vehicle/powerloader, /obj/structure/platform{ @@ -33340,28 +34182,36 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"uLH" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) "uLJ" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/station_alert, /turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) -"uLX" = ( -/obj/structure/machinery/computer/arcade, +"uLM" = ( +/obj/item/clothing/mask/cigarette/cigar/cohiba, +/obj/structure/surface/table/woodentable/fancy, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "greenfull" + }, +/area/fiorina/station/chapel) +"uLV" = ( +/obj/item/bedsheet, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/fiorina/station/lowsec) +"uMc" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/prison, +/area/fiorina/station/security) +"uMm" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkbrown2" }, -/area/fiorina/station/medbay) +/area/fiorina/tumor/aux_engi) "uMq" = ( /obj/structure/machinery/light/small{ dir = 4; @@ -33374,56 +34224,108 @@ "uMw" = ( /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"uMH" = ( -/obj/item/ammo_magazine/smg/mp5, +"uMN" = ( +/obj/item/trash/semki, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitepurple" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) -"uNM" = ( -/turf/closed/wall/prison, -/area/fiorina/tumor/aux_engi) -"uNR" = ( -/obj/item/stack/cable_coil, +/area/fiorina/station/power_ring) +"uMT" = ( /turf/open/floor/prison{ - icon_state = "darkpurple2" + icon_state = "cell_stripe" }, +/area/fiorina/station/medbay) +"uMZ" = ( +/obj/structure/disposalpipe/segment{ + color = "#c4c4c4"; + dir = 4; + layer = 6; + name = "overhead pipe"; + pixel_y = 20 + }, +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 + }, +/turf/open/floor/prison, /area/fiorina/tumor/servers) -"uNX" = ( -/obj/effect/landmark/xeno_spawn, +"uNm" = ( +/obj/effect/decal/cleanable/blood, +/obj/effect/spawner/random/gun/rifle/highchance, +/turf/open/floor/prison, +/area/fiorina/station/security) +"uNp" = ( +/obj/structure/monorail{ + name = "launch track" + }, /turf/open/floor/prison{ - icon_state = "darkbrowncorners2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) -"uOb" = ( -/obj/structure/platform_decoration{ - dir = 8 +/area/fiorina/station/transit_hub) +"uNs" = ( +/obj/structure/machinery/landinglight/ds1, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/fiorina/lz/near_lzI) +"uNG" = ( +/obj/structure/machinery/power/apc{ + dir = 1 }, -/obj/item/stack/cable_coil, /turf/open/floor/prison, -/area/fiorina/station/power_ring) -"uOR" = ( -/obj/structure/platform_decoration{ - dir = 4 +/area/fiorina/lz/near_lzII) +"uNI" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzII) +"uNM" = ( +/turf/closed/wall/prison, +/area/fiorina/tumor/aux_engi) +"uOu" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/ice_lab) +"uOx" = ( +/obj/effect/decal/hefa_cult_decals/d32{ + icon_state = "bee" }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/botany) -"uPg" = ( -/obj/item/circuitboard/mecha/gygax/targeting, -/obj/structure/surface/rack, +/area/fiorina/tumor/servers) +"uOC" = ( +/turf/open/floor/prison{ + dir = 6; + icon_state = "blue" + }, +/area/fiorina/tumor/servers) +"uOM" = ( +/obj/structure/curtain, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"uPz" = ( -/obj/structure/closet/firecloset/full, +/area/fiorina/station/power_ring) +"uOP" = ( +/obj/item/newspaper, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"uPi" = ( +/obj/item/device/binoculars, +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/tumor/fiberbush) +"uPl" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowcorners2" + }, +/area/fiorina/station/telecomm/lz1_cargo) "uPA" = ( /obj/structure/platform{ dir = 1 @@ -33436,15 +34338,18 @@ }, /turf/open/gm/river/desert/deep, /area/fiorina/lz/near_lzII) -"uPD" = ( -/obj/structure/closet{ - density = 0; - pixel_y = 18 +"uPX" = ( +/turf/open/floor/prison{ + dir = 5; + icon_state = "green" }, +/area/fiorina/tumor/civres) +"uQk" = ( +/obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/prison{ - icon_state = "yellowfull" + icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) +/area/fiorina/tumor/fiberbush) "uQE" = ( /obj/item/stack/tile/plasteel{ pixel_x = 3; @@ -33452,57 +34357,49 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"uQF" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/emails{ - dir = 4 - }, +"uQJ" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreen" + dir = 4; + icon_state = "blue" }, -/area/fiorina/station/medbay) -"uRe" = ( -/obj/effect/landmark/survivor_spawner, +/area/fiorina/tumor/servers) +"uQT" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + dir = 6; + icon_state = "whitegreen" }, -/area/fiorina/station/disco) -"uRK" = ( -/obj/structure/platform{ - dir = 8 +/area/fiorina/tumor/ice_lab) +"uRv" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, -/turf/open/floor/prison, -/area/fiorina/station/park) -"uRO" = ( +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"uRF" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "green" + dir = 8; + icon_state = "whitegreencorner" }, -/area/fiorina/station/chapel) -"uRX" = ( -/obj/item/tool/shovel/spade, +/area/fiorina/station/medbay) +"uRI" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "blue_plate" - }, -/area/fiorina/station/botany) -"uSb" = ( -/obj/structure/barricade/wooden{ dir = 4; - pixel_y = 4 + icon_state = "darkbrowncorners2" }, +/area/fiorina/maintenance) +"uRT" = ( +/obj/item/device/flashlight, /turf/open/floor/prison{ dir = 10; - icon_state = "damaged1" - }, -/area/fiorina/station/disco) -"uSo" = ( -/obj/item/poster, -/turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "whitegreenfull" }, +/area/fiorina/tumor/ice_lab) +"uRZ" = ( +/obj/item/trash/barcardine, +/turf/open/floor/prison, /area/fiorina/station/security) "uSA" = ( /turf/open/floor/plating/plating_catwalk/prison, @@ -33513,16 +34410,19 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/lz/near_lzII) -"uST" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 +"uSU" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_29"; + pixel_y = 6 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) +/area/fiorina/lz/near_lzII) +"uSX" = ( +/obj/item/tool/kitchen/utensil/pknife, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) "uSY" = ( /obj/structure/platform{ dir = 8 @@ -33533,67 +34433,110 @@ /obj/vehicle/powerloader/ft, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"uTi" = ( +"uTb" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"uTr" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /turf/open/floor/prison{ dir = 8; + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) +"uTs" = ( +/obj/item/stack/rods, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) +"uTt" = ( +/obj/item/device/flashlight/flare, +/turf/open/floor/prison{ + dir = 1; icon_state = "darkyellowcorners2" }, /area/fiorina/station/telecomm/lz1_cargo) -"uTk" = ( -/obj/effect/landmark/static_comms/net_one, -/turf/open/floor/prison, +"uTw" = ( +/obj/item/weapon/gun/rifle/mar40, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, /area/fiorina/station/power_ring) -"uTp" = ( -/obj/structure/bed/chair, +"uTA" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/effect/spawner/random/gun/rifle/midchance, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 8; + icon_state = "blue" }, -/area/fiorina/station/research_cells) -"uTS" = ( -/obj/item/stock_parts/micro_laser/ultra, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"uTX" = ( +/area/fiorina/station/power_ring) +"uTR" = ( +/obj/structure/machinery/vending/cigarette/colony, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkpurple2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) -"uUT" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/card/id/gold{ - pixel_x = 2; - pixel_y = 4 +/area/fiorina/tumor/aux_engi) +"uVk" = ( +/obj/effect/decal{ + icon = 'icons/obj/items/policetape.dmi'; + icon_state = "engineering_v" + }, +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 }, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "darkyellow2" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/telecomm/lz1_cargo) "uVn" = ( /turf/closed/shuttle/ert{ icon_state = "stan_inner_w_1" }, /area/fiorina/tumor/ship) -"uVo" = ( -/obj/structure/machinery/landinglight/ds2/delaythree{ - dir = 4 - }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"uVv" = ( -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) "uVD" = ( /turf/open/floor/corsat{ icon_state = "squares" }, /area/fiorina/station/medbay) -"uVQ" = ( -/obj/item/device/flashlight/lamp/tripod, +"uVH" = ( +/obj/effect/decal{ + icon = 'icons/obj/items/policetape.dmi'; + icon_state = "engineering_v" + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"uVL" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/trash/plate{ + pixel_x = 1; + pixel_y = 3 + }, /turf/open/floor/prison, -/area/fiorina/station/disco) +/area/fiorina/station/power_ring) +"uVO" = ( +/obj/structure/prop/souto_land/pole{ + dir = 1 + }, +/obj/structure/prop/souto_land/pole{ + dir = 8; + pixel_y = 24 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkbrown2" + }, +/area/fiorina/station/park) "uVX" = ( /obj/structure/machinery/landinglight/ds1/delaythree{ dir = 4; @@ -33607,12 +34550,34 @@ /obj/item/trash/candy, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"uWg" = ( -/obj/effect/decal/cleanable/blood, +"uWe" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "blue_plate" + }, +/area/fiorina/station/botany) +"uWA" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 + }, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/fiorina/tumor/civres) +"uWO" = ( +/obj/structure/platform_decoration, /turf/open/floor/prison{ icon_state = "darkbrown2" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/park) "uWQ" = ( /obj/structure/platform{ dir = 8 @@ -33623,42 +34588,6 @@ }, /turf/open/gm/river/desert/deep, /area/fiorina/lz/near_lzII) -"uWS" = ( -/obj/item/ammo_casing{ - icon_state = "casing_8" - }, -/obj/structure/surface/table/reinforced/prison{ - dir = 4; - flipped = 1 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"uXa" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) -"uXc" = ( -/obj/effect/decal/medical_decals{ - icon_state = "triagedecalbottom" - }, -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"uXm" = ( -/obj/item/inflatable/door, -/obj/item/inflatable/door, -/obj/item/inflatable/door, -/obj/structure/surface/rack, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) "uXn" = ( /obj/structure/flora/bush/ausbushes/ausbush{ desc = "Fiberbush(tm) infestations have been the leading cause in asbestos related deaths in spacecraft for 3 years in a row now."; @@ -33670,12 +34599,6 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) -"uXu" = ( -/obj/item/stock_parts/matter_bin/super, -/turf/open/floor/prison{ - icon_state = "darkpurple2" - }, -/area/fiorina/tumor/servers) "uXw" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/skills, @@ -33690,68 +34613,71 @@ "uXD" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/tumor/ship) -"uXM" = ( -/obj/structure/bed/chair/comfy{ - dir = 1 +"uXK" = ( +/obj/structure/machinery/vending/cola, +/turf/open/floor/prison{ + icon_state = "bluefull" }, +/area/fiorina/station/power_ring) +"uXP" = ( +/obj/item/reagent_container/food/drinks/bottle/pwine, /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" + icon_state = "floor_plate" }, -/area/fiorina/station/disco) -"uXW" = ( -/obj/structure/bed/chair/office/light{ - dir = 8 +/area/fiorina/tumor/civres) +"uXY" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited{ + pixel_y = 32 }, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "kitchen" }, -/area/fiorina/station/medbay) +/area/fiorina/tumor/civres) +"uYi" = ( +/turf/open/floor/prison{ + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) +"uYo" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" + }, +/obj/structure/platform, +/turf/open/floor/plating/prison, +/area/fiorina/station/flight_deck) "uYx" = ( /obj/structure/prop/resin_prop{ icon_state = "coolanttank" }, /turf/open/floor/plating/prison, /area/fiorina/station/park) -"uYD" = ( -/obj/structure/bed{ - icon_state = "abed" +"uYS" = ( +/obj/structure/prop/invuln/minecart_tracks{ + dir = 1 + }, +/turf/open/floor/prison, +/area/fiorina/tumor/servers) +"uZt" = ( +/obj/item/prop/helmetgarb/spacejam_tickets{ + desc = "A ticket to Souto Man's raffle!"; + name = "\improper Souto Raffle Ticket"; + pixel_x = 7; + pixel_y = 6 }, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitepurple" + icon_state = "darkbrown2" }, -/area/fiorina/station/research_cells) -"uYR" = ( +/area/fiorina/station/park) +"uZu" = ( /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 }, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/security/wardens) -"uZe" = ( -/obj/item/stack/sheet/wood, -/turf/open/floor/prison{ - dir = 6; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"uZn" = ( -/obj/structure/machinery/vending/cola, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/security/wardens) -"uZr" = ( -/obj/structure/prop/resin_prop{ - icon_state = "sheater0" - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "darkbrown2" }, /area/fiorina/tumor/aux_engi) "uZA" = ( @@ -33759,234 +34685,188 @@ icon_state = "stan2" }, /area/fiorina/tumor/ship) -"uZD" = ( -/obj/structure/disposalpipe/segment{ - icon_state = "delivery_outlet"; - layer = 6; - name = "overhead ducting"; - pixel_y = 33 - }, +"uZP" = ( +/obj/effect/spawner/random/gun/rifle/lowchance, /turf/open/floor/prison{ dir = 10; - icon_state = "kitchen" - }, -/area/fiorina/tumor/civres) -"uZM" = ( -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/prison{ - icon_state = "darkbrown2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/telecomm/lz1_cargo) "uZX" = ( /obj/structure/curtain, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"vaj" = ( -/obj/structure/machinery/door/airlock/prison_hatch/autoname, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"vaO" = ( -/obj/structure/window/reinforced, -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/attachment, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"vbd" = ( -/obj/structure/machinery/washing_machine, -/obj/structure/machinery/washing_machine{ - pixel_y = 15 - }, -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/lowsec) -"vbe" = ( -/obj/structure/machinery/m56d_hmg/mg_turret/dropship{ - dir = 1 +"uZZ" = ( +/obj/effect/decal{ + icon = 'icons/obj/items/policetape.dmi'; + icon_state = "engineering_h"; + layer = 2.5; + pixel_y = -11 }, +/obj/item/device/flashlight/flare, /turf/open/floor/prison{ dir = 8; - icon_state = "whitegreen" + icon_state = "darkyellow2" }, -/area/fiorina/station/medbay) -"vbl" = ( +/area/fiorina/station/telecomm/lz1_cargo) +"vao" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"vaC" = ( /obj/structure/closet/bombcloset, -/obj/effect/landmark/objective_landmark/medium, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/stack/sheet/mineral/plastic, +/obj/item/stack/sheet/mineral/plastic, +/obj/item/stack/sheet/mineral/plastic, /turf/open/floor/prison{ icon_state = "darkbrownfull2" }, /area/fiorina/tumor/aux_engi) -"vbn" = ( -/obj/item/ammo_box/magazine/M16, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" - }, -/area/fiorina/lz/near_lzI) -"vbt" = ( -/obj/structure/surface/table/reinforced/prison{ - dir = 8; - flipped = 1 - }, -/obj/item/storage/box/ids, -/obj/item/reagent_container/food/drinks/cans/souto/grape{ - pixel_x = 14; - pixel_y = 7 - }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/fiorina/station/research_cells) -"vbF" = ( -/obj/item/stack/rods, -/turf/open/floor/prison{ - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) "vbG" = ( /obj/structure/prop/structure_lattice{ dir = 4 }, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"vbY" = ( -/obj/item/ammo_casing{ - dir = 6; - icon_state = "casing_5" - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) +"vbV" = ( +/obj/structure/machinery/vending/coffee, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) "vcf" = ( /turf/closed/shuttle/ert{ icon_state = "stan5" }, /area/fiorina/oob) -"vco" = ( +"vci" = ( +/obj/effect/spawner/random/toolbox, /turf/open/floor/prison{ - dir = 5; - icon_state = "darkpurple2" + icon_state = "floor_plate" }, -/area/fiorina/tumor/servers) -"vcr" = ( -/obj/structure/platform{ - dir = 4 +/area/fiorina/station/medbay) +"vcq" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor/prison{ + dir = 8; + icon_state = "blue_plate" }, -/obj/structure/prop/almayer/computers/mission_planning_system{ - density = 0; - desc = "Its a telephone, and a computer. Woah."; - name = "\improper funny telephone booth"; - pixel_x = 2; - pixel_y = 21 +/area/fiorina/station/botany) +"vcu" = ( +/obj/structure/platform_decoration{ + dir = 1 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/station/disco) -"vcy" = ( -/obj/structure/platform_decoration{ - dir = 8 +"vcv" = ( +/obj/item/tool/screwdriver, +/turf/open/floor/prison{ + icon_state = "yellowfull" }, -/turf/open/floor/prison, -/area/fiorina/station/medbay) +/area/fiorina/station/lowsec) "vcC" = ( /obj/item/stack/rods, /turf/open/space, /area/fiorina/oob) -"vdG" = ( -/obj/structure/surface/rack, -/obj/item/storage/firstaid/regular, -/obj/item/storage/firstaid/regular, +"vcN" = ( +/obj/structure/largecrate/random/case, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/medbay) -"vdI" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_sn_full_cap" +/area/fiorina/station/park) +"vdn" = ( +/obj/item/ammo_casing{ + icon_state = "cartridge_2" }, -/obj/structure/platform{ - dir = 4 +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" }, -/turf/open/floor/plating/prison, -/area/fiorina/station/transit_hub) -"vdZ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/window/reinforced{ - dir = 4 +/area/fiorina/station/medbay) +"vds" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "yellow" }, -/obj/item/frame/firstaid_arm_assembly, -/obj/item/stack/nanopaste{ - pixel_x = 11; - pixel_y = 6 +/area/fiorina/station/lowsec) +"vdH" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/security/wardens) -"vea" = ( -/obj/effect/decal{ - icon = 'icons/obj/items/policetape.dmi'; - icon_state = "engineering_h"; - layer = 2.5; - pixel_y = -11 + icon_state = "blue_plate" }, +/area/fiorina/station/botany) +"vdJ" = ( +/obj/effect/spawner/random/gun/smg, /turf/open/floor/prison{ dir = 8; - icon_state = "darkyellow2" + icon_state = "green" }, -/area/fiorina/station/flight_deck) -"vee" = ( -/obj/structure/barricade/metal/wired{ - dir = 4 +/area/fiorina/tumor/civres) +"vdN" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" }, -/obj/item/device/flashlight/lamp/tripod, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/station/telecomm/lz1_cargo) +"vdW" = ( +/obj/effect/decal/cleanable/blood{ + icon_state = "gib6" }, /turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" + icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) -"vei" = ( +/area/fiorina/station/disco) +"vel" = ( +/obj/structure/machinery/vending/coffee, /turf/open/floor/prison{ - icon_state = "yellow" + icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) +/area/fiorina/tumor/civres) "vem" = ( /turf/closed/shuttle/ert{ icon_state = "leftengine_1" }, /area/fiorina/lz/near_lzI) -"ven" = ( -/obj/effect/decal/medical_decals{ - icon_state = "cryomid" +"vev" = ( +/obj/structure/monorail{ + name = "launch track" }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/turf/closed/shuttle/ert{ + icon_state = "rightengine_1"; + layer = 3; + opacity = 0 }, -/area/fiorina/station/medbay) -"veB" = ( -/obj/structure/machinery/light/double/blue, +/area/fiorina/oob) +"veJ" = ( +/obj/item/clothing/head/helmet/marine/specialist/hefa, +/turf/open/floor/prison, +/area/fiorina/station/park) +"veP" = ( +/obj/effect/spawner/random/toolbox, /turf/open/floor/prison{ - icon_state = "yellow" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/lowsec) -"veM" = ( -/obj/item/stock_parts/micro_laser/ultra, +/area/fiorina/tumor/aux_engi) +"veR" = ( +/obj/structure/inflatable, /turf/open/floor/prison{ - icon_state = "darkpurple2" + dir = 10; + icon_state = "whitegreen" }, -/area/fiorina/tumor/servers) +/area/fiorina/station/medbay) +"veW" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_ew_full_cap" + }, +/obj/structure/platform/stair_cut/alt, +/turf/open/floor/plating/prison, +/area/fiorina/station/flight_deck) "vfz" = ( /obj/item/storage/box/donkpockets, /obj/structure/surface/table/reinforced/prison, @@ -33996,82 +34876,121 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"vfJ" = ( -/obj/structure/bed/sofa/south/grey/left, +"vfL" = ( +/obj/item/storage/box/flashbangs, +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/security) +/area/fiorina/station/medbay) "vfM" = ( /turf/closed/shuttle/ert{ icon_state = "stan27" }, /area/fiorina/station/power_ring) -"vfQ" = ( -/obj/structure/platform, -/turf/open/floor/prison, -/area/fiorina/station/park) -"vfR" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_sn_full_cap" +"vfO" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "floor_marked" }, -/obj/structure/platform{ - dir = 8 +/area/fiorina/station/lowsec) +"vgi" = ( +/obj/item/stack/rods, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_tram) -"vgS" = ( -/obj/item/stack/sheet/metal, +/area/fiorina/station/civres_blue) +"vgw" = ( +/obj/item/storage/toolbox/antag, /turf/open/floor/prison{ + dir = 8; + icon_state = "green" + }, +/area/fiorina/tumor/civres) +"vgC" = ( +/obj/structure/machinery/light/double/blue{ dir = 1; - icon_state = "whitepurple" + pixel_y = 21 }, -/area/fiorina/station/research_cells) -"vha" = ( -/obj/structure/closet/crate/miningcar{ - name = "\improper materials storage bin" +/turf/open/floor/prison{ + dir = 9; + icon_state = "darkyellow2" }, -/obj/item/reagent_container/food/snacks/meat, +/area/fiorina/lz/near_lzI) +"vgL" = ( +/obj/structure/closet/secure_closet/guncabinet{ + req_access = null + }, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, +/obj/item/ammo_magazine/shotgun/buckshot, +/obj/item/ammo_magazine/shotgun/buckshot, +/obj/item/clothing/under/marine/ua_riot, +/obj/item/storage/pill_bottle/alkysine, +/obj/item/clothing/suit/storage/marine/veteran/ua_riot, /turf/open/floor/prison{ - icon_state = "greenblue" + icon_state = "redfull" }, -/area/fiorina/station/botany) -"vhe" = ( -/obj/structure/closet/wardrobe/orange, -/obj/item/clothing/under/color/orange, +/area/fiorina/station/security) +"vhd" = ( +/obj/structure/window/reinforced/tinted, +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/recharger, /turf/open/floor/prison{ - icon_state = "yellowfull" + icon_state = "darkredfull2" }, -/area/fiorina/station/lowsec) +/area/fiorina/lz/near_lzI) +"vhk" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" + }, +/obj/structure/platform, +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) +"vhy" = ( +/obj/item/reagent_container/food/drinks/cans/waterbottle, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) "vhB" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/park) -"vhC" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/prison{ - icon_state = "greenblue" - }, -/area/fiorina/station/botany) "vhI" = ( /turf/open/gm/river{ color = "#990000"; name = "pool" }, /area/fiorina/station/park) -"viH" = ( -/obj/item/clipboard, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, +"viL" = ( +/obj/item/stock_parts/micro_laser/ultra, +/turf/open/floor/prison, /area/fiorina/tumor/servers) -"viV" = ( -/obj/structure/monorail{ - dir = 5; - name = "launch track" +"viX" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/turf/open/space/basic, +/area/fiorina/oob) +"vja" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) "vjl" = ( /obj/structure/closet/crate/trashcart, /obj/effect/spawner/random/tool, @@ -34083,28 +35002,10 @@ icon_state = "leftengine_1" }, /area/fiorina/station/power_ring) -"vjz" = ( -/obj/structure/bed/sofa/south/grey/right, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/station/transit_hub) "vjG" = ( /obj/item/device/flashlight/lamp/tripod, /turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) -"vjH" = ( -/obj/structure/machinery/computer/communications{ - dir = 4; - pixel_y = 5 - }, -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/fiorina/tumor/servers) "vjR" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating/prison, @@ -34121,67 +35022,67 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/wood, /area/fiorina/station/civres_blue) -"vky" = ( -/turf/open/floor/prison{ +"vki" = ( +/obj/structure/bed/roller, +/obj/structure/machinery/iv_drip{ + pixel_y = 19 + }, +/obj/item/bedsheet/green, +/obj/structure/machinery/light/double/blue{ dir = 4; - icon_state = "blue" + pixel_x = 10; + pixel_y = 13 }, -/area/fiorina/station/civres_blue) -"vkC" = ( -/obj/structure/inflatable/popped/door, /turf/open/floor/prison{ + dir = 4; icon_state = "whitegreen" }, /area/fiorina/station/medbay) -"vkM" = ( -/obj/item/reagent_container/food/drinks/bottle/pwine, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/civres) -"vkZ" = ( -/obj/structure/platform{ - dir = 8 +"vkt" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"vli" = ( -/obj/structure/bed/chair/comfy, +/obj/structure/platform, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"vlK" = ( +/obj/structure/surface/rack, /turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/disco) -"vlm" = ( -/obj/structure/machinery/power/apc{ - dir = 4 + dir = 9; + icon_state = "whitegreen" }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"vlt" = ( -/obj/structure/reagent_dispensers/water_cooler/stacks, +/area/fiorina/station/medbay) +"vlN" = ( +/obj/structure/surface/rack, +/obj/item/frame/table/almayer, +/obj/item/frame/table/almayer, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/flight_deck) -"vlT" = ( -/obj/effect/decal/cleanable/blood/oil, +/area/fiorina/tumor/civres) +"vlO" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - dir = 10; - icon_state = "darkyellow2" + dir = 4; + icon_state = "cell_stripe" }, -/area/fiorina/station/telecomm/lz1_tram) -"vlX" = ( -/obj/structure/closet{ - density = 0; - pixel_y = 18 +/area/fiorina/station/central_ring) +"vlS" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/flora/pottedplant{ + pixel_y = 9 }, -/obj/item/clothing/gloves/combat, -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/prison{ +/obj/structure/machinery/light/double/blue{ dir = 1; - icon_state = "whitepurple" + pixel_y = 21 }, -/area/fiorina/station/research_cells) +/turf/open/floor/prison, +/area/fiorina/station/security) +"vlU" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) "vmj" = ( /obj/effect/landmark/nightmare{ insert_tag = "podholder" @@ -34190,53 +35091,83 @@ icon_state = "leftengine_1" }, /area/fiorina/station/medbay) -"vmr" = ( -/obj/item/device/flashlight/lamp/tripod, +"vmt" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/telecomm/lz1_tram) +"vmL" = ( +/obj/structure/bed/roller, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 1; + icon_state = "darkyellow2" }, -/area/fiorina/station/medbay) -"vmH" = ( -/obj/item/tool/mop, +/area/fiorina/station/telecomm/lz1_cargo) +"vmT" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/chapel) -"vmW" = ( -/obj/structure/reagent_dispensers/water_cooler{ - density = 0; - pixel_x = -8; - pixel_y = 16 +/area/fiorina/tumor/aux_engi) +"vnl" = ( +/obj/structure/largecrate/random/barrel/white, +/obj/structure/barricade/wooden{ + dir = 4 }, /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 10; + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/telecomm/lz1_cargo) "vnr" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/telecomm/lz1_cargo) -"voa" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_tram) -"vok" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/window/reinforced{ - dir = 8 +"vnA" = ( +/obj/item/tool/warning_cone{ + pixel_x = -4; + pixel_y = 2 }, -/obj/item/phone{ - pixel_x = -3; - pixel_y = 10 +/obj/item/tool/warning_cone{ + pixel_x = -4; + pixel_y = 5 }, -/obj/item/phone{ - pixel_x = 9; - pixel_y = -10 +/obj/item/tool/warning_cone{ + pixel_x = -4; + pixel_y = 8 }, +/obj/structure/surface/rack, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/security) +/area/fiorina/maintenance) +"vnG" = ( +/turf/open/floor/prison, +/area/fiorina/maintenance) +"vnM" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) +"voh" = ( +/obj/item/tool/warning_cone, +/turf/open/floor/prison{ + icon_state = "yellowfull" + }, +/area/fiorina/station/lowsec) +"voi" = ( +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/station/park) "voq" = ( /obj/structure/machinery/computer/secure_data{ dir = 1 @@ -34244,92 +35175,80 @@ /obj/structure/surface/table/woodentable/fancy, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"voS" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" - }, -/area/fiorina/lz/near_lzI) -"vpk" = ( -/obj/item/trash/used_stasis_bag{ - desc = "Wow, instant sand. They really have everything in space."; - name = "Insta-Sand! bag" +"vov" = ( +/obj/structure/platform_decoration{ + dir = 8 }, /turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"vpB" = ( -/obj/effect/alien/weeds/node, +/area/fiorina/station/transit_hub) +"voI" = ( +/obj/item/tool/wrench, /turf/open/floor/prison{ - icon_state = "whitegreen" + icon_state = "bluefull" }, -/area/fiorina/tumor/ice_lab) -"vpJ" = ( +/area/fiorina/station/power_ring) +"voK" = ( /obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 }, -/obj/structure/platform, /turf/open/floor/plating/prison, -/area/fiorina/station/civres_blue) -"vqb" = ( -/obj/structure/platform, -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" +/area/fiorina/station/medbay) +"voO" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "yellow" }, -/turf/open/floor/prison, -/area/fiorina/station/botany) -"vqg" = ( -/obj/effect/landmark/xeno_spawn, +/area/fiorina/station/lowsec) +"voP" = ( +/obj/structure/dropship_equipment/medevac_system, /turf/open/floor/prison{ - icon_state = "whitegreen" + dir = 10; + icon_state = "floor_marked" }, -/area/fiorina/tumor/ice_lab) -"vqi" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/area/fiorina/station/power_ring) +"voV" = ( +/obj/item/ammo_casing{ + icon_state = "casing_6_1" }, /turf/open/floor/prison{ - icon_state = "cell_stripe" + icon_state = "floor_plate" }, /area/fiorina/station/lowsec) -"vqM" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/snacks/tomatosoup, -/turf/open/floor/prison{ - icon_state = "blue" +"vpN" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_ew_full_cap" }, -/area/fiorina/station/power_ring) -"vqZ" = ( -/obj/structure/machinery/vending/snack/packaged, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" +/obj/structure/platform/stair_cut, +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzII) +"vql" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/tool, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/area/fiorina/tumor/aux_engi) -"vrc" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_marked" + icon_state = "floor_plate" }, /area/fiorina/station/transit_hub) -"vrf" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/donut_box{ - pixel_y = 6 - }, +"vqs" = ( +/obj/item/paper/prison_station/inmate_handbook, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "darkredfull2" }, -/area/fiorina/station/security) -"vro" = ( -/obj/item/device/flashlight/lamp/tripod, +/area/fiorina/station/research_cells) +"vqW" = ( +/obj/item/stack/sheet/cardboard, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 8; + icon_state = "whitepurple" }, -/area/fiorina/station/medbay) +/area/fiorina/station/research_cells) "vrp" = ( /obj/structure/ice/thin/indestructible{ icon_state = "Corner" @@ -34337,179 +35256,173 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/station/research_cells) -"vrw" = ( -/obj/structure/machinery/vending/snack/packaged, +"vrA" = ( +/obj/structure/machinery/landinglight/ds1/delaythree{ + dir = 8 + }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/station/park) +/area/fiorina/lz/near_lzI) "vrF" = ( /obj/item/toy/crayon/green, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"vrM" = ( -/obj/structure/closet/secure_closet/security_empty, -/obj/item/book/manual/security_space_law, -/obj/effect/landmark/objective_landmark/close, +"vrH" = ( +/obj/item/stack/sheet/metal, +/obj/item/stack/sheet/metal, /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/research_cells) +"vrO" = ( +/obj/structure/closet/secure_closet/engineering_materials, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) +"vrR" = ( +/obj/structure/platform_decoration, +/obj/structure/barricade/handrail/type_b{ + dir = 4; + layer = 3.5 }, -/area/fiorina/station/security) -"vrN" = ( -/obj/structure/monorail{ - name = "launch track" +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/structure/machinery/door/poddoor/almayer/locked{ - indestructible = 1; - name = "launch bay door" +/area/fiorina/station/disco) +"vrS" = ( +/obj/item/reagent_container/food/snacks/donkpocket, +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" }, -/turf/open/floor/plating/prison, -/area/fiorina/oob) +/area/fiorina/station/transit_hub) "vrT" = ( /obj/structure/platform{ dir = 1 }, /turf/open/floor/prison/chapel_carpet, /area/fiorina/station/chapel) -"vrX" = ( -/obj/item/newspaper, +"vsr" = ( +/obj/structure/barricade/handrail, /turf/open/floor/prison{ - icon_state = "whitepurplecorner" + dir = 9; + icon_state = "whitepurple" }, /area/fiorina/station/research_cells) -"vsc" = ( -/turf/open/floor/prison{ - icon_state = "floorscorched1" - }, -/area/fiorina/station/civres_blue) -"vsg" = ( -/obj/structure/closet/emcloset, -/obj/effect/landmark/objective_landmark/far, -/turf/open/floor/prison{ - dir = 10; - icon_state = "darkbrown2" - }, -/area/fiorina/maintenance) -"vsq" = ( -/obj/effect/decal/cleanable/blood, +"vsL" = ( +/obj/structure/prop/dam/crane, /turf/open/floor/prison{ dir = 8; - icon_state = "darkyellowcorners2" + icon_state = "floor_marked" }, -/area/fiorina/station/telecomm/lz1_cargo) -"vsz" = ( -/obj/structure/machinery/light/double/blue, +/area/fiorina/tumor/servers) +"vsM" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/obj/item/ammo_magazine/smg/mp5, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 1; + icon_state = "whitepurple" }, -/area/fiorina/station/medbay) +/area/fiorina/station/research_cells) "vsT" = ( /obj/structure/cable/heavyduty{ icon_state = "1-8" }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"vtf" = ( -/obj/structure/machinery/vending/cigarette/colony, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +"vtc" = ( +/obj/structure/toilet{ + dir = 4 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "sterile_white" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/civres_blue) +"vtk" = ( +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, +/obj/item/ammo_casing/shell{ + icon_state = "shell_9_1" + }, +/obj/structure/barricade/metal{ + health = 250; + icon_state = "metal_1" + }, +/turf/open/floor/prison, +/area/fiorina/station/park) "vtl" = ( /obj/structure/bed/sofa/south/grey/left, /turf/open/floor/wood, /area/fiorina/station/park) -"vtn" = ( -/obj/structure/barricade/wooden, -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" +"vtr" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/glass/beaker{ + pixel_x = -5; + pixel_y = 15 }, -/area/fiorina/station/medbay) -"vtG" = ( -/obj/structure/window/reinforced{ - dir = 8; - health = 80 +/obj/item/reagent_container/glass/beaker{ + pixel_x = 5; + pixel_y = 2 }, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, -/area/fiorina/station/medbay) -"vtJ" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"vub" = ( -/obj/structure/prop/structure_lattice{ - dir = 4; - health = 300 - }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 +/area/fiorina/tumor/ice_lab) +"vts" = ( +/obj/effect/landmark/corpsespawner/engineer, +/obj/effect/decal/cleanable/blood, +/turf/open/auto_turf/sand/layer1, +/area/fiorina/tumor/civres) +"vtX" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 9; + icon_state = "yellow" }, +/area/fiorina/station/disco) +"vuK" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/prison, +/area/fiorina/station/security) +"vuS" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/prison, /area/fiorina/station/civres_blue) -"vuc" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 +"vuT" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" }, -/obj/structure/platform/kutjevo/smooth{ +/obj/structure/platform{ dir = 8 }, -/obj/structure/barricade/handrail{ +/turf/open/floor/prison{ + dir = 10; + icon_state = "bright_clean2" + }, +/area/fiorina/station/power_ring) +"vuV" = ( +/obj/structure/stairs/perspective{ dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" + icon_state = "p_stair_full" }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/fiorina/oob) -"vuE" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/structure/machinery/landinglight/ds2/delayone, /turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"vuW" = ( -/obj/structure/reagent_dispensers/water_cooler{ - pixel_x = -9; - pixel_y = 8 - }, -/obj/structure/reagent_dispensers/water_cooler{ - pixel_x = 11; - pixel_y = 8 - }, -/obj/structure/reagent_dispensers/water_cooler{ - pixel_x = 1; - pixel_y = 8 +/area/fiorina/station/power_ring) +"vuX" = ( +/obj/structure/platform_decoration{ + dir = 4 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"vvk" = ( -/obj/structure/barricade/handrail, -/turf/open/floor/prison{ - dir = 9; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) +/area/fiorina/station/park) "vvp" = ( /obj/item/tool/candle{ pixel_x = 5; @@ -34528,120 +35441,128 @@ icon_state = "squares" }, /area/fiorina/station/telecomm/lz1_cargo) -"vvX" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" +"vvT" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/microwave{ + desc = "So uh yeah, about that cat..."; + icon_state = "mwbloodyo"; + pixel_y = 6 }, -/area/fiorina/station/disco) -"vwc" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" + dir = 10; + icon_state = "kitchen" }, -/area/fiorina/station/park) +/area/fiorina/station/civres_blue) "vwt" = ( /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) +"vwx" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"vwD" = ( +/obj/item/stack/cable_coil, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/servers) "vwM" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ density = 0 }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"vxp" = ( +"vwN" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/microwave{ + pixel_y = 6 + }, /turf/open/floor/prison{ - icon_state = "yellow" + dir = 1; + icon_state = "blue_plate" }, -/area/fiorina/station/disco) -"vxr" = ( -/obj/item/newspaper, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"vxs" = ( -/turf/closed/shuttle/ert{ - icon_state = "stan_inner_w_2" +/area/fiorina/station/botany) +"vwX" = ( +/obj/structure/barricade/wooden{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"vxm" = ( +/obj/structure/platform{ + dir = 4 }, -/area/fiorina/tumor/ship) -"vxV" = ( /turf/open/floor/prison{ + dir = 4; icon_state = "greenblue" }, /area/fiorina/station/botany) -"vyu" = ( -/obj/item/clothing/suit/storage/hazardvest, -/turf/open/floor/wood, -/area/fiorina/station/civres_blue) -"vyz" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/goggles/lowchance, +"vxs" = ( +/turf/closed/shuttle/ert{ + icon_state = "stan_inner_w_2" + }, +/area/fiorina/tumor/ship) +"vxu" = ( +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "darkbrown2" }, /area/fiorina/station/park) -"vyA" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/structure/prop/souto_land/pole{ - dir = 1 +"vxz" = ( +/obj/structure/machinery/door/poddoor/almayer/locked{ + indestructible = 1; + name = "launch bay door" }, -/obj/structure/prop/souto_land/pole{ +/turf/open/floor/prison{ dir = 8; - pixel_y = 24 + icon_state = "cell_stripe" }, +/area/fiorina/oob) +"vxI" = ( +/obj/structure/largecrate/random/case/small, /turf/open/floor/prison{ - icon_state = "darkbrown2" + icon_state = "darkbrownfull2" }, /area/fiorina/station/park) -"vyF" = ( -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 +"vyu" = ( +/obj/item/clothing/suit/storage/hazardvest, +/turf/open/floor/wood, +/area/fiorina/station/civres_blue) +"vyv" = ( +/obj/structure/platform_decoration{ + dir = 1 }, +/obj/structure/inflatable/popped, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "whitegreen" }, -/area/fiorina/station/power_ring) -"vyU" = ( -/obj/effect/decal/cleanable/blood, +/area/fiorina/station/medbay) +"vyw" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" + dir = 9; + icon_state = "darkyellow2" }, /area/fiorina/station/telecomm/lz1_cargo) -"vyX" = ( -/obj/item/device/flashlight/lamp/tripod, -/turf/open/floor/prison{ - dir = 4; - icon_state = "blue_plate" +"vyK" = ( +/obj/structure/barricade/sandbags{ + dir = 1; + icon_state = "sandbag_0" }, -/area/fiorina/station/botany) -"vza" = ( -/obj/effect/decal/cleanable/blood/gibs, -/obj/effect/spawner/random/gun/rifle, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "darkyellow2" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/telecomm/lz1_cargo) "vzh" = ( /obj/structure/foamed_metal, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"vzk" = ( -/obj/effect/landmark/monkey_spawn, -/turf/open/floor/prison{ - icon_state = "darkpurple2" - }, -/area/fiorina/tumor/servers) "vzn" = ( /obj/structure/bed/chair/dropship/pilot{ dir = 1 @@ -34653,6 +35574,14 @@ }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) +"vzp" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) "vzB" = ( /obj/structure/machinery/door/poddoor/almayer/locked{ indestructible = 1; @@ -34660,48 +35589,60 @@ }, /turf/open/floor/plating/prison, /area/fiorina/oob) +"vzT" = ( +/obj/item/frame/toolbox_tiles_sensor, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/civres) "vzU" = ( /turf/closed/shuttle/ert{ icon_state = "leftengine_3"; opacity = 0 }, /area/fiorina/tumor/ship) -"vzZ" = ( -/obj/item/device/flashlight/lamp/tripod, +"vAU" = ( +/obj/structure/barricade/wooden{ + dir = 8 + }, +/obj/structure/barricade/wooden, /turf/open/floor/prison{ dir = 10; - icon_state = "floor_plate" + icon_state = "sterile_white" }, -/area/fiorina/station/flight_deck) -"vAi" = ( -/obj/item/stack/sandbags_empty/half, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"vAZ" = ( -/obj/item/stack/sheet/metal, +/area/fiorina/station/research_cells) +"vAX" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/civres) -"vBc" = ( -/obj/structure/surface/table/reinforced/prison{ dir = 8; - flipped = 1 + icon_state = "blue_plate" + }, +/area/fiorina/station/botany) +"vBa" = ( +/obj/structure/machinery/shower{ + dir = 4 }, -/obj/item/device/flashlight/lamp, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "kitchen" }, /area/fiorina/station/research_cells) -"vBO" = ( -/obj/effect/decal/cleanable/blood{ - layer = 3 +"vBF" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 }, /turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreen" + icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/medbay) +"vBH" = ( +/obj/item/storage/firstaid/regular, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) "vBP" = ( /obj/structure/platform/kutjevo/smooth{ dir = 4 @@ -34709,63 +35650,81 @@ /obj/structure/lattice, /turf/open/space/basic, /area/fiorina/oob) -"vBQ" = ( -/obj/structure/platform{ - dir = 1 - }, +"vBX" = ( /turf/open/floor/prison, -/area/fiorina/station/medbay) -"vBV" = ( -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/area/fiorina/station/transit_hub) +"vBZ" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" }, -/area/fiorina/station/medbay) -"vBY" = ( -/obj/item/stack/sheet/metal, +/obj/structure/platform, +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 + }, +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzI) +"vCl" = ( +/obj/item/tool/shovel/spade, /turf/open/floor/prison{ dir = 1; - icon_state = "blue" - }, -/area/fiorina/station/civres_blue) -"vCv" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_29"; - pixel_y = 6 - }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"vDc" = ( -/obj/structure/bed/sofa/south/grey/left, -/obj/item/reagent_container/food/snacks/sandwich{ - pixel_y = 2 + icon_state = "blue_plate" }, +/area/fiorina/station/botany) +"vCm" = ( +/obj/structure/platform, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/security) -"vDj" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 +/area/fiorina/station/botany) +"vCu" = ( +/obj/item/storage/bible/hefa, +/turf/open/floor/prison{ + dir = 1; + icon_state = "green" + }, +/area/fiorina/station/chapel) +"vCL" = ( +/obj/structure/prop/almayer/computers/mission_planning_system{ + density = 0; + desc = "Its a telephone, and a computer. Woah."; + name = "\improper funny telephone booth"; + pixel_x = 2; + pixel_y = 21 }, -/obj/item/clothing/gloves/latex, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 10; + icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"vDx" = ( -/obj/item/clothing/shoes/marine/upp_knife, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) -"vDK" = ( -/obj/item/stack/sheet/metal/medium_stack, +"vCQ" = ( +/obj/item/prop/helmetgarb/spacejam_tickets{ + desc = "A ticket to Souto Man's raffle!"; + name = "\improper Souto Raffle Ticket"; + pixel_x = 7; + pixel_y = 6 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "blue" + }, +/area/fiorina/station/chapel) +"vDf" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/transit_hub) +"vDL" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/station/central_ring) "vDO" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname{ dir = 1 @@ -34784,32 +35743,21 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"vED" = ( -/obj/structure/barricade/metal/wired{ - dir = 8 - }, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" - }, -/area/fiorina/lz/near_lzI) -"vEF" = ( -/obj/item/circuitboard/robot_module/janitor, -/turf/open/floor/prison, -/area/fiorina/station/disco) "vEK" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/power_ring) -"vEX" = ( -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 +"vFc" = ( +/obj/item/tool/warning_cone, +/obj/structure/barricade/metal{ + dir = 8; + health = 150; + icon_state = "metal_2" }, /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" + dir = 1; + icon_state = "darkbrown2" }, -/area/fiorina/station/disco) +/area/fiorina/station/park) "vFi" = ( /obj/structure/window_frame/prison, /obj/item/shard{ @@ -34839,70 +35787,55 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/security/wardens) -"vFF" = ( -/obj/item/trash/candy, +"vFA" = ( +/obj/effect/landmark/monkey_spawn, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" + icon_state = "darkpurple2" + }, +/area/fiorina/tumor/servers) +"vFS" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" }, /area/fiorina/tumor/ice_lab) -"vFQ" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +"vFV" = ( +/obj/structure/inflatable, +/turf/open/floor/prison{ + dir = 10; + icon_state = "yellow" }, -/turf/open/floor/plating/plating_catwalk/prison, -/area/fiorina/tumor/civres) +/area/fiorina/station/lowsec) "vFY" = ( /obj/item/reagent_container/glass/bucket, /turf/open/floor/plating/prison, /area/fiorina/tumor/fiberbush) -"vGe" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison, -/area/fiorina/station/security) -"vGv" = ( -/obj/structure/barricade/metal/wired{ - dir = 4 - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/disco) -"vGO" = ( -/obj/structure/platform{ - dir = 4 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/disco) -"vGV" = ( -/obj/item/shard{ - icon_state = "large" +"vGM" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 22 }, +/obj/item/reagent_container/food/snacks/eat_bar, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ dir = 4; - icon_state = "greenfull" - }, -/area/fiorina/station/transit_hub) -"vHG" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/lowsec) -"vHK" = ( -/obj/structure/barricade/wooden{ - dir = 8 + icon_state = "darkyellowfull2" }, +/area/fiorina/station/flight_deck) +"vHo" = ( /turf/open/floor/prison{ - icon_state = "darkbrown2" + dir = 5; + icon_state = "blue" }, -/area/fiorina/station/park) -"vHR" = ( -/obj/item/tool/screwdriver, +/area/fiorina/tumor/servers) +"vHD" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/trash/cigbutt, /turf/open/floor/prison{ - icon_state = "yellowfull" + icon_state = "bluefull" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/power_ring) "vHU" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/paper_bin{ @@ -34911,23 +35844,26 @@ }, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"vIF" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/microwave{ - icon_state = "mwo"; - pixel_y = 6 +"vHX" = ( +/obj/structure/barricade/handrail/type_b{ + dir = 4; + layer = 3.5 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "delivery_outlet"; + layer = 6; + name = "overhead ducting"; + pixel_y = 33 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" + icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"vII" = ( +/area/fiorina/tumor/ice_lab) +"vIG" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "whitepurple" + icon_state = "platingdmg2" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/security) "vJh" = ( /obj/effect/spawner/random/sentry/midchance, /turf/open/floor/plating/prison, @@ -34938,23 +35874,22 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/transit_hub) -"vJp" = ( -/obj/item/ammo_magazine/smg/mp5, -/obj/item/ammo_magazine/smg/mp5, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"vJq" = ( -/obj/effect/landmark/monkey_spawn, -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreencorner" +"vJo" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 }, -/area/fiorina/tumor/ice_lab) -"vJD" = ( /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/medbay) +"vJL" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison, +/area/fiorina/station/telecomm/lz1_tram) "vJN" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/toolbox/electrical{ @@ -34963,46 +35898,47 @@ /obj/item/storage/toolbox/mechanical, /turf/open/floor/almayer, /area/fiorina/tumor/ship) -"vKj" = ( -/obj/structure/barricade/handrail{ - dir = 1; - pixel_y = 2 +"vKz" = ( +/obj/item/stack/sheet/metal{ + amount = 5 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "darkyellow2" }, -/area/fiorina/station/security) +/area/fiorina/lz/near_lzI) "vKP" = ( /obj/structure/surface/rack, -/obj/item/weapon/katana, +/obj/item/weapon/sword/katana, /turf/open/floor/wood, /area/fiorina/station/security/wardens) +"vLe" = ( +/obj/structure/closet/toolcloset, +/obj/effect/landmark/objective_landmark/far, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkbrown2" + }, +/area/fiorina/maintenance) "vLH" = ( /obj/item/device/flashlight/lamp/tripod, /turf/open/floor/wood, /area/fiorina/station/park) -"vLV" = ( -/obj/item/inflatable, -/obj/structure/surface/table/reinforced/prison, +"vLO" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/chapel) -"vMb" = ( -/obj/structure/machinery/photocopier{ - pixel_y = 4 - }, +/area/fiorina/station/central_ring) +"vLX" = ( +/obj/effect/landmark/corpsespawner/ua_riot/burst, /turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/fiorina/station/security) -"vMh" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" + dir = 9; + icon_state = "greenfull" }, -/turf/open/floor/plating/prison, -/area/fiorina/station/medbay) +/area/fiorina/tumor/civres) "vMk" = ( /obj/structure/machinery/vending/snack/packaged, /turf/open/organic/grass{ @@ -35010,90 +35946,60 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) +"vMs" = ( +/obj/structure/machinery/vending/hydroseeds, +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" + }, +/area/fiorina/station/botany) "vMK" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/station/power_ring) -"vMQ" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "green" - }, -/area/fiorina/station/chapel) -"vMS" = ( -/obj/structure/bed/chair{ - dir = 1 +"vMN" = ( +/obj/structure/platform_decoration{ + dir = 4 }, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) -"vNq" = ( -/turf/closed/wall/r_wall/prison, -/area/fiorina/station/telecomm/lz1_cargo) -"vNr" = ( -/obj/structure/prop/souto_land/streamer{ - dir = 8; - pixel_y = 24 - }, -/obj/structure/bed/chair{ - dir = 1 + dir = 5; + icon_state = "darkbrown2" }, -/turf/open/floor/prison, /area/fiorina/station/park) -"vNt" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, +"vMT" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "green" + dir = 4; + icon_state = "darkyellowfull2" }, -/area/fiorina/station/chapel) -"vNx" = ( +/area/fiorina/station/flight_deck) +"vNd" = ( /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 }, +/obj/item/toy/beach_ball, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" - }, -/area/fiorina/tumor/aux_engi) -"vNF" = ( -/turf/open/floor/prison{ - dir = 1; - icon_state = "greencorner" + icon_state = "yellowfull" }, -/area/fiorina/station/chapel) -"vNY" = ( -/obj/item/tool/kitchen/utensil/pfork, +/area/fiorina/station/disco) +"vNq" = ( +/turf/closed/wall/r_wall/prison, +/area/fiorina/station/telecomm/lz1_cargo) +"vOm" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "blue" + dir = 8; + icon_state = "cell_stripe" }, -/area/fiorina/station/power_ring) -"vOj" = ( +/area/fiorina/station/botany) +"vOD" = ( /obj/effect/landmark/corpsespawner/ua_riot, /turf/open/floor/prison, -/area/fiorina/station/security) -"vOp" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/platform_decoration{ - dir = 9 - }, +/area/fiorina/lz/near_lzI) +"vOO" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "green" }, -/area/fiorina/station/park) -"vOz" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) +/area/fiorina/station/chapel) "vOP" = ( /obj/structure/disposalpipe/segment{ color = "#c4c4c4"; @@ -35104,23 +36010,23 @@ }, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/tumor/servers) -"vPa" = ( -/obj/item/tool/soap, -/turf/open/floor/prison{ - icon_state = "kitchen" +"vOZ" = ( +/obj/structure/largecrate/supply/supplies/metal, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"vPF" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/toy/prize/honk{ + anchored = 1; + layer = 2.9; + pixel_x = -1; + pixel_y = 13 }, -/area/fiorina/station/lowsec) -"vPk" = ( -/obj/structure/window/framed/prison, +/obj/structure/barricade/handrail/type_b, /turf/open/floor/prison{ - dir = 1; - icon_state = "blue_plate" + icon_state = "floor_plate" }, -/area/fiorina/station/botany) -"vPA" = ( -/obj/structure/machinery/landinglight/ds2/delayone, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) +/area/fiorina/station/flight_deck) "vPM" = ( /obj/structure/platform_decoration/kutjevo{ dir = 8 @@ -35133,183 +36039,234 @@ icon_state = "stan1" }, /area/fiorina/tumor/ship) -"vQr" = ( -/obj/structure/barricade/sandbags{ +"vQi" = ( +/obj/item/clothing/gloves/botanic_leather, +/turf/open/floor/prison{ dir = 4; - icon_state = "sandbag_0"; - pixel_y = 2 - }, -/obj/structure/barricade/sandbags{ - icon_state = "sandbag_0"; - pixel_y = -14 + icon_state = "blue_plate" }, +/area/fiorina/station/botany) +"vQC" = ( +/obj/structure/closet/crate/trashcart, +/obj/item/storage/pill_bottle/kelotane/skillless, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"vQN" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" +/area/fiorina/station/park) +"vQJ" = ( +/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage{ + density = 0; + pixel_y = 16 }, -/obj/structure/platform, -/turf/open/floor/plating/prison, -/area/fiorina/station/medbay) -"vRj" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/tool, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + dir = 1; + icon_state = "darkbrown2" }, -/area/fiorina/station/research_cells) +/area/fiorina/maintenance) +"vRk" = ( +/obj/structure/machinery/recharge_station, +/turf/open/floor/prison{ + dir = 9; + icon_state = "blue" + }, +/area/fiorina/station/power_ring) +"vRu" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/obj/structure/blocker/invisible_wall, +/turf/open/floor/prison{ + dir = 6; + icon_state = "whitepurple" + }, +/area/fiorina/oob) "vRA" = ( /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) -"vSk" = ( +"vRF" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/storage/box/cups{ - pixel_x = -3; - pixel_y = 6 +/obj/item/pamphlet/skill/powerloader, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" }, -/obj/item/storage/box/cups, +/area/fiorina/station/medbay) +"vRH" = ( +/obj/item/stack/sheet/metal, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, +/area/fiorina/tumor/ice_lab) +"vRP" = ( +/obj/item/trash/cigbutt/cigarbutt, +/turf/open/floor/prison, /area/fiorina/station/power_ring) -"vTl" = ( -/obj/item/stack/rods, +"vSC" = ( +/obj/item/reagent_container/food/condiment/saltshaker{ + pixel_x = -5; + pixel_y = -6 + }, /turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" + icon_state = "floor_plate" }, -/area/fiorina/station/disco) +/area/fiorina/station/civres_blue) +"vSW" = ( +/obj/structure/closet/crate/internals, +/obj/item/tool/crew_monitor, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"vTq" = ( +/obj/structure/prop/resin_prop, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) "vTv" = ( /turf/closed/shuttle/elevator{ dir = 5 }, /area/fiorina/station/civres_blue) -"vTB" = ( -/obj/structure/disposalpipe/segment{ - color = "#c4c4c4"; - dir = 4; - layer = 6; - name = "overhead pipe"; - pixel_y = 20 - }, -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 +"vTA" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "darkyellow2" }, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"vTT" = ( -/obj/structure/disposalpipe/segment{ - color = "#c4c4c4"; - dir = 4; - layer = 6; - name = "overhead pipe"; - pixel_y = 20 +/area/fiorina/station/flight_deck) +"vTI" = ( +/obj/structure/platform_decoration{ + dir = 8 }, -/turf/open/floor/prison, -/area/fiorina/tumor/servers) -"vUa" = ( -/obj/structure/inflatable, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/station/transit_hub) +"vTL" = ( +/obj/item/trash/hotdog, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"vTM" = ( +/obj/item/storage/donut_box{ + pixel_y = 6 + }, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/prison{ + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) +"vTR" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) "vUf" = ( /obj/structure/platform, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"vUn" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_ew_full_cap" +"vUl" = ( +/obj/structure/machinery/washing_machine, +/obj/structure/machinery/washing_machine{ + pixel_y = 15 }, -/obj/structure/platform/stair_cut/alt, -/turf/open/floor/plating/prison, -/area/fiorina/station/botany) +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + icon_state = "yellowfull" + }, +/area/fiorina/station/lowsec) "vUv" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/window/reinforced, /obj/item/reagent_container/food/snacks/donut/normal, /turf/open/floor/plating/prison, /area/fiorina/station/security) -"vUE" = ( -/obj/structure/machinery/computer/prisoner, +"vUF" = ( +/obj/item/tool/screwdriver, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 10; + icon_state = "green" }, -/area/fiorina/station/security) +/area/fiorina/tumor/civres) +"vUP" = ( +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) +"vUZ" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) "vVi" = ( /obj/structure/window/framed/prison, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"vVu" = ( -/obj/structure/surface/rack, -/obj/item/ammo_box/magazine/nailgun, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/maintenance) -"vVJ" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 +"vVx" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_ew_full_cap" }, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" +/obj/structure/platform/stair_cut, +/turf/open/floor/plating/prison, +/area/fiorina/station/flight_deck) +"vVN" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, -/area/fiorina/station/transit_hub) +/turf/open/floor/plating/prison, +/area/fiorina/station/flight_deck) "vWe" = ( /obj/structure/extinguisher_cabinet, /turf/closed/wall/prison, /area/fiorina/station/medbay) -"vWs" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - dir = 8; - icon_state = "cell_stripe" - }, -/area/fiorina/station/power_ring) -"vWI" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/disco) -"vXi" = ( -/obj/item/storage/briefcase, +"vWj" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 1; + icon_state = "darkpurple2" }, -/area/fiorina/station/medbay) -"vXr" = ( -/obj/structure/machinery/disposal, +/area/fiorina/tumor/servers) +"vWL" = ( +/obj/item/stock_parts/matter_bin/super, /turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" + icon_state = "darkpurple2" }, -/area/fiorina/station/civres_blue) -"vXB" = ( -/obj/item/shard{ - icon_state = "large" +/area/fiorina/tumor/servers) +"vXk" = ( +/obj/structure/machinery/light/double/blue{ + pixel_y = -1 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 4; + icon_state = "blue_plate" }, +/area/fiorina/station/botany) +"vXl" = ( +/obj/structure/surface/rack, +/obj/item/folder/black, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison, /area/fiorina/station/medbay) -"vXS" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +"vXy" = ( +/turf/open/floor/prison{ + dir = 6; + icon_state = "green" }, -/turf/open/floor/wood, -/area/fiorina/station/civres_blue) +/area/fiorina/tumor/civres) "vXT" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, @@ -35320,69 +36277,35 @@ icon_state = "plate" }, /area/fiorina/tumor/ship) -"vYA" = ( +"vYX" = ( +/obj/item/roller, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) +"vYY" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_29"; + layer = 3.5; + pixel_y = 6 + }, /turf/open/floor/prison{ dir = 4; - icon_state = "yellow" + icon_state = "greenfull" }, -/area/fiorina/station/disco) -"vYL" = ( -/obj/effect/decal/cleanable/blood, +/area/fiorina/station/transit_hub) +"vZs" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/chapel) -"vYM" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/drinks/cans/aspen, -/turf/open/floor/prison{ - icon_state = "darkyellow2" - }, -/area/fiorina/lz/near_lzI) -"vYP" = ( -/obj/structure/machinery/shower{ - pixel_y = 13 - }, -/obj/structure/machinery/shower{ - dir = 1; - pixel_y = -1 - }, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/fiorina/station/research_cells) -"vZc" = ( -/obj/structure/disposalpipe/segment{ - color = "#c4c4c4"; - dir = 4; - layer = 6; - name = "overhead pipe"; - pixel_y = 20 - }, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 - }, -/turf/open/floor/prison, /area/fiorina/tumor/servers) -"vZx" = ( -/obj/item/trash/cigbutt, -/turf/open/floor/prison{ - dir = 4; - icon_state = "blue" - }, -/area/fiorina/station/power_ring) "vZD" = ( /obj/item/storage/box/donkpockets, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"vZU" = ( -/obj/item/paper/crumpled, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) +"vZL" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) "vZV" = ( /turf/closed/wall/strata_ice/jungle{ desc = "It is made of Fiberbush(tm). It contains asbestos."; @@ -35392,24 +36315,10 @@ "vZX" = ( /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz2_maint) -"war" = ( -/obj/structure/platform, -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/platform_decoration{ - dir = 6 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/park) -"waz" = ( -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/fiorina/station/disco) +"wam" = ( +/obj/item/stack/medical/bruise_pack, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) "waN" = ( /obj/structure/platform{ dir = 1 @@ -35422,23 +36331,16 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"waP" = ( -/obj/structure/largecrate/random/case, -/obj/structure/machinery/light/double/blue, +"waQ" = ( /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + dir = 10; + icon_state = "darkyellow2" }, -/area/fiorina/station/park) +/area/fiorina/station/power_ring) "waU" = ( /obj/structure/machinery/light/double/blue, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz2_maint) -"wbn" = ( -/obj/structure/monorail{ - name = "launch track" - }, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/aux_engi) "wbp" = ( /obj/item/inflatable, /turf/open/organic/grass{ @@ -35446,14 +36348,14 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) -"wby" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +"wbr" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/firstaid/regular, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) +/area/fiorina/station/medbay) "wbB" = ( /obj/structure/computerframe, /obj/structure/machinery/light/double/blue{ @@ -35473,12 +36375,39 @@ "wbI" = ( /turf/open/floor/wood, /area/fiorina/station/park) -"wcm" = ( -/obj/structure/bed/chair, +"wbL" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/item/prop/almayer/comp_open{ + pixel_y = 6 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"wbP" = ( +/obj/item/storage/toolbox, +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) +"wbW" = ( +/obj/item/reagent_container/food/snacks/meat, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) +"wcB" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/gun/pistol/midchance, /turf/open/floor/prison{ - icon_state = "greenblue" + dir = 1; + icon_state = "darkpurple2" }, -/area/fiorina/station/botany) +/area/fiorina/tumor/servers) +"wcC" = ( +/obj/structure/closet/basketball, +/obj/item/storage/pill_bottle/bicaridine/skillless, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) "wcP" = ( /obj/effect/landmark/queen_spawn, /turf/open/floor/plating/prison, @@ -35487,99 +36416,81 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"wcX" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/hypospray, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" +"wdl" = ( +/obj/structure/barricade/handrail/type_b{ + dir = 4 }, -/area/fiorina/station/botany) -"wdA" = ( -/obj/item/trash/used_stasis_bag, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/lz/near_lzI) -"wdX" = ( -/obj/structure/prop/almayer/computers/mapping_computer, +/area/fiorina/station/disco) +"wdo" = ( +/obj/structure/closet, /turf/open/floor/prison{ - icon_state = "darkredfull2" + dir = 4; + icon_state = "bluecorner" + }, +/area/fiorina/station/power_ring) +"wdL" = ( +/obj/structure/barricade/wooden{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitepurple" }, /area/fiorina/station/research_cells) -"wef" = ( -/turf/open/floor/plating/prison, -/area/fiorina/station/research_cells) -"wek" = ( -/obj/effect/landmark/monkey_spawn, +"wdU" = ( +/obj/structure/foamed_metal, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/station/civres_blue) -"wen" = ( -/obj/item/prop/helmetgarb/spacejam_tickets{ - desc = "Low security prisoners would smuggle in arcade tickets after visitations. The tickets act as a stand in for paper currency in the prison economy, they're backed by the cigarette standard, since one ticket nets one cigarette at the prize booth. The cigarettes also get smuggled back in."; - name = "\improper arcade tickets"; - pixel_x = -7; - pixel_y = 7 - }, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"wew" = ( -/obj/item/stack/sheet/metal/medium_stack, -/obj/structure/surface/rack, +"wef" = ( +/turf/open/floor/plating/prison, +/area/fiorina/station/research_cells) +"wet" = ( +/obj/item/stack/sandbags/large_stack, /turf/open/floor/prison{ - dir = 5; + dir = 1; icon_state = "darkyellow2" }, -/area/fiorina/lz/near_lzI) -"weH" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 8 - }, -/obj/structure/bed/chair/office/dark{ +/area/fiorina/station/telecomm/lz1_cargo) +"weB" = ( +/obj/structure/machinery/light/double/blue{ dir = 4; - layer = 3.25 + pixel_x = 10; + pixel_y = 13 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) -"weK" = ( -/obj/structure/platform_decoration{ - dir = 1 + dir = 9; + icon_state = "greenfull" }, +/area/fiorina/station/transit_hub) +"weE" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrowncorners2" + icon_state = "panelscorched" }, -/area/fiorina/station/park) -"weN" = ( -/obj/structure/largecrate/random/case, +/area/fiorina/oob) +"weM" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + icon_state = "yellow" }, -/area/fiorina/tumor/aux_engi) -"weQ" = ( -/obj/structure/stairs/perspective{ +/area/fiorina/station/lowsec) +"weV" = ( +/obj/structure/sink{ dir = 8; - icon_state = "p_stair_full" - }, -/obj/structure/platform, -/turf/open/floor/prison{ - icon_state = "floor_plate" + pixel_x = -12; + pixel_y = 2 }, -/area/fiorina/station/security) -"weS" = ( -/obj/structure/machinery/processor, -/obj/effect/decal/cleanable/blood{ - pixel_y = 20 +/obj/structure/mirror{ + pixel_x = -29 }, /turf/open/floor/prison{ - icon_state = "blue_plate" + icon_state = "sterile_white" }, -/area/fiorina/station/botany) +/area/fiorina/station/civres_blue) "weX" = ( /obj/structure/barricade/metal{ health = 250; @@ -35587,30 +36498,51 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"wfi" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/prison{ - icon_state = "green" +"wfc" = ( +/obj/structure/machinery/disposal, +/obj/item/tool/kitchen/rollingpin{ + pixel_y = 8 }, -/area/fiorina/station/chapel) -"wfp" = ( -/obj/structure/machinery/landinglight/ds1/delaythree{ - dir = 8 +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ + dir = 10; + icon_state = "kitchen" + }, +/area/fiorina/station/civres_blue) +"wfo" = ( +/obj/structure/coatrack, +/obj/item/clothing/head/bowlerhat{ + pixel_y = 15 + }, +/obj/structure/machinery/light/double/blue{ dir = 4; - icon_state = "darkyellowfull2" + pixel_x = 10; + pixel_y = -3 }, -/area/fiorina/lz/near_lzI) -"wfy" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/paper_bin, -/obj/item/tool/stamp, /turf/open/floor/prison{ dir = 4; icon_state = "greenfull" }, /area/fiorina/tumor/civres) +"wfu" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"wfw" = ( +/obj/structure/barricade/wooden{ + dir = 4; + pixel_y = 4 + }, +/turf/open/floor/prison{ + icon_state = "damaged3" + }, +/area/fiorina/station/central_ring) "wfV" = ( /obj/effect/landmark/monkey_spawn, /turf/open/organic/grass{ @@ -35628,108 +36560,137 @@ }, /turf/open/space, /area/fiorina/oob) -"wgH" = ( +"wgq" = ( /obj/effect/landmark/monkey_spawn, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + dir = 4; + icon_state = "greenfull" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/tumor/civres) +"wgs" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/clothing/head/beret/eng{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/book/manual/engineering_guide{ + pixel_x = -4 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/fiorina/tumor/civres) +"wgO" = ( +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/park) "whf" = ( /turf/closed/shuttle/elevator{ dir = 4 }, /area/fiorina/station/civres_blue) -"whp" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"whu" = ( -/turf/open/floor/plating/plating_catwalk/prison, -/area/fiorina/tumor/civres) -"whL" = ( +"whl" = ( /obj/structure/machinery/cm_vending/sorted/tech/comp_storage, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/tumor/aux_engi) -"whR" = ( -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) -"wir" = ( -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = 30 - }, +"whr" = ( +/obj/structure/machinery/disposal, /turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"wiQ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/device/radio{ - pixel_x = -6; - pixel_y = 16 + dir = 10; + icon_state = "kitchen" }, -/obj/item/device/radio{ - pixel_x = 6; - pixel_y = 7 +/area/fiorina/station/civres_blue) +"whu" = ( +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/tumor/civres) +"wis" = ( +/obj/structure/platform_decoration{ + dir = 8 }, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "floor_plate" }, -/area/fiorina/station/security) -"wjk" = ( +/area/fiorina/station/disco) +"wiR" = ( +/obj/structure/surface/rack, +/obj/item/key, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - dir = 5; - icon_state = "blue" - }, -/area/fiorina/station/chapel) -"wjx" = ( -/obj/structure/barricade/deployable{ - dir = 1 + dir = 10; + icon_state = "whitegreen" }, +/area/fiorina/station/medbay) +"wjC" = ( +/obj/effect/landmark/xeno_spawn, /turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" + dir = 9; + icon_state = "darkbrown2" }, -/area/fiorina/station/lowsec) +/area/fiorina/tumor/aux_engi) "wjH" = ( /obj/item/stack/barbed_wire, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) +"wjO" = ( +/obj/structure/bed/chair, +/obj/effect/decal/cleanable/blood, +/obj/effect/landmark/corpsespawner/prison_security, +/turf/open/floor/prison, +/area/fiorina/station/park) +"wjT" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_7" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/power_ring) "wkd" = ( /obj/structure/machinery/status_display, /turf/closed/wall/prison, /area/fiorina/station/medbay) -"wkp" = ( -/obj/structure/machinery/iv_drip, +"wkg" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno/down, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"wkD" = ( -/obj/structure/largecrate/random/case/double, +"wky" = ( +/obj/structure/tunnel/maint_tunnel, /turf/open/floor/plating/prison, -/area/fiorina/station/disco) -"wlp" = ( -/obj/item/reagent_container/food/snacks/donkpocket, +/area/fiorina/tumor/aux_engi) +"wkA" = ( /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + dir = 8; + icon_state = "cell_stripe" }, -/area/fiorina/station/transit_hub) +/area/fiorina/station/power_ring) +"wkL" = ( +/obj/structure/bed/chair/comfy, +/turf/open/floor/prison{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/fiorina/station/flight_deck) +"wln" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/ice_lab) +"wlv" = ( +/obj/item/trash/barcardine, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) "wly" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/lz/near_lzII) -"wlz" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/civres) "wlG" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/plating/prison, @@ -35739,33 +36700,29 @@ /obj/item/bedsheet/blue, /turf/open/floor/almayer, /area/fiorina/tumor/ship) -"wlR" = ( -/obj/item/bodybag, -/obj/item/bodybag{ - pixel_y = 2 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/medbay) "wmd" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/tumor/fiberbush) -"wmp" = ( -/obj/structure/closet/secure_closet/freezer/fridge, +"wmm" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" + icon_state = "blue" }, -/area/fiorina/station/civres_blue) -"wmG" = ( -/obj/structure/inflatable, -/obj/structure/barricade/handrail/type_b, +/area/fiorina/station/power_ring) +"wmx" = ( +/obj/item/stack/folding_barricade, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 8; + icon_state = "red" }, -/area/fiorina/station/medbay) +/area/fiorina/station/security) +"wnh" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/prison{ + dir = 1; + icon_state = "blue" + }, +/area/fiorina/station/civres_blue) "wnq" = ( /obj/item/tool/match, /turf/open/floor/plating/plating_catwalk/prison, @@ -35776,74 +36733,78 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"wnz" = ( +"wnD" = ( /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) -"wnB" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 +/area/fiorina/tumor/fiberbush) +"wnM" = ( +/obj/structure/surface/rack, +/obj/item/storage/toolbox/electrical{ + pixel_y = -3 }, -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" +/obj/item/storage/toolbox/mechanical{ + pixel_y = 6 }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/fiorina/oob) -"wnW" = ( -/obj/structure/toilet{ - pixel_y = 4 +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "darkbrown2" }, -/obj/item/prop/helmetgarb/gunoil{ - pixel_x = 2; - pixel_y = 25 +/area/fiorina/maintenance) +"woh" = ( +/obj/structure/platform{ + dir = 1 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 1; + icon_state = "whitegreen" }, /area/fiorina/station/medbay) -"wot" = ( -/obj/item/weapon/baseballbat/metal, +"wol" = ( +/obj/structure/platform{ + dir = 4 + }, +/obj/item/shard{ + icon_state = "medium"; + name = "ice shard" + }, /turf/open/floor/prison{ - dir = 8; - icon_state = "blue" + dir = 4; + icon_state = "whitegreen" }, -/area/fiorina/station/chapel) -"woI" = ( -/obj/structure/closet/secure_closet/freezer/fridge, -/obj/effect/landmark/objective_landmark/close, +/area/fiorina/tumor/ice_lab) +"wou" = ( +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ dir = 10; - icon_state = "kitchen" + icon_state = "whitegreenfull" }, -/area/fiorina/station/civres_blue) -"wpf" = ( -/obj/structure/bed/chair/comfy, +/area/fiorina/tumor/ice_lab) +"wow" = ( +/obj/structure/closet/crate/medical, +/obj/effect/spawner/random/toolbox, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - dir = 6; - icon_state = "darkyellow2" + icon_state = "floor_plate" }, -/area/fiorina/station/flight_deck) -"wpp" = ( -/turf/open/floor/prison{ - dir = 6; - icon_state = "darkyellow2" +/area/fiorina/station/medbay) +"wps" = ( +/obj/structure/bed/sofa/south/grey/left, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/area/fiorina/station/power_ring) -"wpu" = ( -/obj/item/tool/soap, -/obj/structure/machinery/shower{ - dir = 8 +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" }, +/area/fiorina/station/transit_hub) +"wpy" = ( /turf/open/floor/prison{ - icon_state = "kitchen" + dir = 1; + icon_state = "greencorner" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/chapel) "wpD" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname{ dir = 1 @@ -35867,64 +36828,117 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) -"wqx" = ( -/obj/item/tool/wrench, +"wqs" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/poster, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/power_ring) -"wqM" = ( -/obj/structure/platform, -/obj/structure/closet/radiation, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"wrQ" = ( +/area/fiorina/station/research_cells) +"wqz" = ( +/obj/structure/closet{ + density = 0; + pixel_y = 18 + }, +/obj/item/clothing/gloves/combat, /turf/open/floor/prison{ - dir = 1; - icon_state = "whitepurplecorner" + dir = 9; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) +"wqY" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" }, /area/fiorina/station/research_cells) "wrR" = ( /turf/closed/wall/prison, /area/fiorina/station/botany) -"wsy" = ( -/obj/structure/machinery/door/poddoor/almayer/locked{ - indestructible = 1; - name = "launch bay door" +"wrT" = ( +/obj/item/shard{ + icon_state = "large" }, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"wsw" = ( +/obj/effect/spawner/random/tool, /turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" + icon_state = "darkpurplefull2" }, -/area/fiorina/oob) -"wsN" = ( -/obj/item/tool/surgery/cautery, +/area/fiorina/station/research_cells) +"wsz" = ( /turf/open/floor/prison{ dir = 8; + icon_state = "darkbrown2" + }, +/area/fiorina/tumor/aux_engi) +"wsM" = ( +/obj/structure/barricade/handrail/type_b{ + layer = 3.4 + }, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/tumor/ice_lab) +"wsX" = ( +/obj/item/trash/snack_bowl, +/turf/open/floor/prison{ + dir = 5; icon_state = "yellow" }, /area/fiorina/station/lowsec) -"wsY" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/pizzabox/margherita, +"wtm" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 + }, +/turf/open/floor/plating/prison, +/area/fiorina/oob) +"wty" = ( +/obj/structure/closet/secure_closet/security_empty, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/weapon/classic_baton, +/turf/open/floor/prison{ + icon_state = "redfull" + }, +/area/fiorina/station/security) +"wua" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "bluecorner" + }, +/area/fiorina/station/power_ring) +"wun" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 8; + icon_state = "whitegreencorner" }, -/area/fiorina/station/medbay) -"wtx" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/reagent_dispensers/water_cooler{ - pixel_y = 11 +/area/fiorina/tumor/ice_lab) +"wuz" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" }, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +/obj/structure/platform{ + dir = 8 }, -/area/fiorina/station/research_cells) -"wul" = ( -/obj/item/bedsheet/green, -/obj/structure/bed, -/obj/item/toy/farwadoll, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) "wuA" = ( @@ -35947,47 +36961,35 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"wuP" = ( -/obj/structure/machinery/power/apc, +"wuN" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue_plate" - }, -/area/fiorina/station/botany) -"wuT" = ( -/obj/structure/lattice, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/turf/open/space/basic, -/area/fiorina/oob) -"wvf" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/flora/pottedplant{ - pixel_y = 9 + icon_state = "darkbrownfull2" }, -/obj/item/ammo_magazine/rifle/m16{ - current_rounds = 0 +/area/fiorina/tumor/aux_engi) +"wuW" = ( +/obj/item/tool/warning_cone, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/floor/prison, -/area/fiorina/station/security) +/area/fiorina/station/disco) "wvH" = ( /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison/chapel_carpet{ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"wvS" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 - }, +"wvL" = ( +/obj/item/tool/wrench, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"wvU" = ( +/obj/structure/largecrate/supply/explosives/mines, /turf/open/floor/prison{ + dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/park) +/area/fiorina/station/telecomm/lz1_cargo) "wvY" = ( /obj/item/reagent_container/food/snacks/eat_bar, /obj/structure/machinery/light/double/blue{ @@ -35995,49 +36997,33 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"wwr" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/cameras{ - dir = 4 - }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/fiorina/station/research_cells) -"wwH" = ( -/obj/item/tool/wirecutters, +"wwa" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "floorscorched1" }, -/area/fiorina/station/lowsec) -"wwR" = ( -/obj/structure/largecrate/random/case, -/obj/item/storage/toolbox/emergency{ - pixel_y = 4 +/area/fiorina/tumor/civres) +"wwo" = ( +/obj/structure/machinery/cm_vending/sorted/marine_food{ + desc = "Prison meal vendor, containing preprepared meals fit for the dregs of society."; + name = "\improper Fiorina Engineering Canteen Vendor" }, /turf/open/floor/prison{ - dir = 9; - icon_state = "whitepurple" + icon_state = "bluefull" }, -/area/fiorina/station/research_cells) -"wwZ" = ( -/obj/structure/bed/sofa/south/grey/right, +/area/fiorina/station/power_ring) +"wxl" = ( +/obj/structure/machinery/recharge_station, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 5; + icon_state = "darkbrown2" }, -/area/fiorina/station/civres_blue) -"wxj" = ( -/obj/item/newspaper, -/turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"wxo" = ( -/obj/structure/closet/secure_closet/hydroponics, -/obj/effect/landmark/objective_landmark/close, +/area/fiorina/maintenance) +"wxW" = ( +/obj/structure/prop/almayer/computers/mapping_computer, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + icon_state = "darkredfull2" }, -/area/fiorina/station/botany) +/area/fiorina/station/research_cells) "wxX" = ( /obj/structure/machinery/computer/cameras{ dir = 8; @@ -36046,6 +37032,12 @@ /obj/structure/surface/table/woodentable/fancy, /turf/open/floor/wood, /area/fiorina/station/security/wardens) +"wxY" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/servers) "wxZ" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/window/reinforced{ @@ -36057,18 +37049,44 @@ /obj/structure/machinery/computer/cameras, /turf/open/floor/plating/prison, /area/fiorina/station/security/wardens) +"wyd" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 9 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/botany) "wyl" = ( /obj/structure/machinery/power/port_gen/pacman, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"wyP" = ( -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 +"wyK" = ( +/obj/structure/prop/structure_lattice{ + dir = 4; + health = 300 }, -/turf/open/floor/prison, -/area/fiorina/station/park) +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/oob) +"wyQ" = ( +/obj/structure/largecrate/supply/supplies/mre, +/turf/open/floor/prison{ + icon_state = "yellowfull" + }, +/area/fiorina/station/lowsec) "wyT" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, @@ -36079,104 +37097,99 @@ name = "astroturf" }, /area/fiorina/station/research_cells) -"wzE" = ( -/turf/closed/wall/r_wall/prison_unmeltable, -/area/fiorina/station/lowsec) -"wzS" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_29"; - pixel_y = 6 +"wzd" = ( +/obj/structure/stairs/perspective{ + dir = 10; + icon_state = "p_stair_full" }, /turf/open/floor/prison, /area/fiorina/station/security) -"wAa" = ( -/obj/structure/machinery/vending/snack/packaged, +"wzg" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ + dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) -"wAj" = ( -/obj/structure/machinery/shower{ - pixel_y = 13 +/area/fiorina/station/flight_deck) +"wzE" = ( +/turf/closed/wall/r_wall/prison_unmeltable, +/area/fiorina/station/lowsec) +"wzH" = ( +/turf/open/floor/prison{ + dir = 5; + icon_state = "blue" }, -/obj/structure/machinery/shower{ - dir = 4 +/area/fiorina/station/chapel) +"wzK" = ( +/obj/structure/platform{ + dir = 8 }, -/turf/open/floor/prison{ - icon_state = "kitchen" +/obj/item/prop/almayer/flight_recorder, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"wzT" = ( +/obj/structure/platform{ + dir = 8 }, -/area/fiorina/station/lowsec) -"wAl" = ( -/obj/structure/machinery/space_heater, -/turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" +/obj/structure/platform, +/obj/structure/platform_decoration{ + dir = 10 }, -/area/fiorina/tumor/civres) +/obj/structure/reagent_dispensers/fueltank{ + layer = 2.6 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) "wAn" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname{ dir = 1 }, /turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) -"wAr" = ( +"wAt" = ( /obj/structure/surface/table/reinforced/prison, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/phone{ - pixel_y = -4 - }, -/obj/item/phone{ - pixel_x = 7; - pixel_y = 10 - }, -/obj/item/tool/pen, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkredfull2" + }, +/area/fiorina/lz/near_lzI) +"wAQ" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 }, -/area/fiorina/station/security) -"wAv" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/toolbox, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "whitegreen" }, -/area/fiorina/station/power_ring) -"wAD" = ( -/obj/item/shard{ - icon_state = "large" +/area/fiorina/tumor/ice_lab) +"wBx" = ( +/obj/item/prop/helmetgarb/spacejam_tickets{ + desc = "A ticket to Souto Man's raffle!"; + name = "\improper Souto Raffle Ticket"; + pixel_x = 6; + pixel_y = 7 }, -/turf/open/floor/prison, -/area/fiorina/station/disco) -"wAR" = ( -/obj/structure/filingcabinet, -/obj/structure/filingcabinet{ - pixel_x = 16 +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkbrown2" }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"wAT" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/ashtray/plastic, -/obj/item/trash/cigbutt{ - pixel_y = 8 +/area/fiorina/station/park) +"wBB" = ( +/obj/structure/bed/chair/comfy{ + dir = 1 }, -/obj/item/trash/cigbutt, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"wBr" = ( -/obj/structure/bed/chair{ - dir = 1; - layer = 2.7 + icon_state = "yellow" }, +/area/fiorina/station/disco) +"wBE" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/drinks/cans/aspen, /turf/open/floor/prison{ - icon_state = "yellowfull" + icon_state = "darkyellow2" }, -/area/fiorina/station/lowsec) +/area/fiorina/lz/near_lzI) "wBK" = ( /obj/item/stack/tile/plasteel, /turf/open/floor/plating/prison, @@ -36185,65 +37198,76 @@ /obj/structure/largecrate/supply/supplies, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"wCA" = ( -/obj/item/reagent_container/glass/bucket/janibucket, +"wCI" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "darkbrowncorners2" }, -/area/fiorina/station/civres_blue) -"wCV" = ( -/obj/item/clothing/suit/storage/hazardvest, -/obj/item/clothing/suit/storage/hazardvest, -/obj/structure/surface/rack, +/area/fiorina/station/park) +"wCJ" = ( +/obj/effect/landmark/corpsespawner/ua_riot, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/maintenance) -"wDF" = ( -/obj/structure/bed/chair{ - dir = 1 + dir = 10; + icon_state = "sterile_white" }, +/area/fiorina/station/medbay) +"wDe" = ( +/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "greenblue" }, -/area/fiorina/station/power_ring) -"wDV" = ( -/obj/structure/bed/chair/comfy{ - dir = 1 +/area/fiorina/station/botany) +"wDw" = ( +/obj/effect/decal/medical_decals{ + icon_state = "cryomid" }, +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellow2" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/flight_deck) -"wEa" = ( -/obj/item/stack/rods, +/area/fiorina/station/medbay) +"wDz" = ( +/obj/structure/machinery/vending/snack, +/turf/open/floor/prison, +/area/fiorina/station/security) +"wDJ" = ( +/obj/structure/machinery/vending/cola, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) -"wEn" = ( -/obj/structure/barricade/handrail/type_b{ +/area/fiorina/tumor/fiberbush) +"wDK" = ( +/obj/structure/machinery/shower{ + pixel_y = 13 + }, +/obj/structure/curtain/shower, +/obj/structure/window{ dir = 8 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "sterile_white" }, -/area/fiorina/station/flight_deck) -"wEQ" = ( -/obj/structure/bed/chair/comfy{ - dir = 1 +/area/fiorina/station/medbay) +"wED" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, /turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" + dir = 4; + icon_state = "blue" }, -/area/fiorina/station/disco) -"wER" = ( +/area/fiorina/station/civres_blue) +"wEE" = ( +/obj/item/tool/crowbar/red, /turf/open/floor/prison{ - icon_state = "panelscorched" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/oob) +/area/fiorina/station/medbay) "wEX" = ( /obj/structure/machinery/light/double/blue{ dir = 8; @@ -36254,79 +37278,73 @@ icon_state = "plate" }, /area/fiorina/tumor/aux_engi) -"wEY" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/chapel) -"wFk" = ( -/obj/structure/machinery/landinglight/ds1/delayone{ - dir = 4 +"wFd" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + dir = 1; + icon_state = "darkpurple2" }, -/area/fiorina/lz/near_lzI) -"wFo" = ( +/area/fiorina/tumor/servers) +"wFp" = ( +/obj/item/stack/cable_coil/pink, /turf/open/floor/prison{ - icon_state = "floorscorched1" + dir = 1; + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) +"wFB" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 }, -/area/fiorina/tumor/civres) -"wFD" = ( -/obj/structure/bed/sofa/south/grey/right, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/security) -"wFE" = ( -/obj/structure/bed/chair{ - dir = 1 +/area/fiorina/station/lowsec) +"wFM" = ( +/obj/structure/machinery/power/apc{ + dir = 8 }, -/obj/item/prop/helmetgarb/spacejam_tickets{ - desc = "A ticket to Souto Man's raffle!"; - name = "\improper Souto Raffle Ticket"; - pixel_x = 6; - pixel_y = -7 +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" }, -/obj/structure/prop/souto_land/streamer{ - pixel_y = 24 +/area/fiorina/station/telecomm/lz1_cargo) +"wFS" = ( +/turf/open/floor/prison{ + icon_state = "floorscorched1" }, -/turf/open/floor/prison, -/area/fiorina/station/park) +/area/fiorina/station/chapel) "wFU" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"wGe" = ( -/obj/structure/barricade/metal/wired{ - dir = 8 +"wGb" = ( +/obj/item/ammo_casing{ + icon_state = "casing_1" }, /turf/open/floor/prison{ - icon_state = "yellowfull" + icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/central_ring) "wGf" = ( /obj/item/stack/rods, /turf/open/floor/wood, /area/fiorina/station/park) -"wGm" = ( +"wGA" = ( /obj/structure/machinery/light/double/blue{ - pixel_y = -1 - }, -/turf/open/floor/prison{ - icon_state = "darkyellow2" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"wGD" = ( -/obj/structure/bed/chair{ - dir = 8 + dir = 8; + pixel_x = -10; + pixel_y = 13 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/park) +/area/fiorina/station/power_ring) "wGM" = ( /obj/item/device/taperecorder{ pixel_x = 1; @@ -36335,6 +37353,18 @@ /obj/structure/surface/table/woodentable/fancy, /turf/open/floor/wood, /area/fiorina/station/chapel) +"wGX" = ( +/obj/effect/decal{ + icon = 'icons/obj/items/policetape.dmi'; + icon_state = "engineering_h"; + layer = 2.5; + pixel_y = -11 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/fiorina/station/telecomm/lz1_cargo) "wHl" = ( /obj/structure/platform_decoration{ dir = 8 @@ -36345,40 +37375,67 @@ /obj/effect/landmark/static_comms/net_two, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz2_maint) +"wHr" = ( +/obj/structure/barricade/handrail{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "red" + }, +/area/fiorina/station/security) "wHw" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/plating/prison, /area/fiorina/station/security/wardens) -"wHx" = ( -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +"wHC" = ( +/obj/structure/platform_decoration{ + dir = 4 }, -/area/fiorina/lz/near_lzI) -"wHE" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/item/storage/pill_bottle/inaprovaline/skillless, -/obj/effect/landmark/objective_landmark/close, +/obj/item/clothing/gloves/botanic_leather, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + icon_state = "floor_plate" + }, +/area/fiorina/station/botany) +"wId" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"wIk" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4 }, +/turf/open/floor/prison, +/area/fiorina/station/security) +"wIp" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/turf/open/floor/prison, /area/fiorina/tumor/aux_engi) -"wHX" = ( -/obj/item/tool/lighter/random, +"wIx" = ( +/obj/item/stack/sheet/metal, /turf/open/floor/prison{ - dir = 10; - icon_state = "kitchen" - }, -/area/fiorina/tumor/civres) -"wII" = ( -/obj/structure/toilet{ - dir = 8; - pixel_y = 8 + dir = 4; + icon_state = "red" }, +/area/fiorina/station/security) +"wIy" = ( +/obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" + icon_state = "floor_plate" }, -/area/fiorina/station/lowsec) +/area/fiorina/tumor/servers) +"wIG" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/platform_decoration/kutjevo, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/turf/open/space/basic, +/area/fiorina/oob) "wIJ" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer{ @@ -36393,34 +37450,18 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"wJa" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, +"wIL" = ( +/obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) +/area/fiorina/station/chapel) "wJd" = ( /obj/structure/barricade/handrail, /turf/open/organic/grass{ name = "astroturf" }, /area/fiorina/station/research_cells) -"wJf" = ( -/obj/structure/machinery/landinglight/ds1/delaythree, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/lz/near_lzI) -"wJt" = ( -/obj/structure/bed/chair/comfy, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) "wJw" = ( /obj/structure/closet/crate/trashcart, /obj/item/weapon/gun/rifle/m16, @@ -36430,87 +37471,86 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"wJJ" = ( -/obj/structure/closet/bodybag, -/turf/open/floor/prison{ - dir = 9; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) "wKb" = ( /obj/effect/spawner/random/gun/rifle/midchance, /turf/open/floor/wood, /area/fiorina/station/park) -"wKn" = ( -/obj/structure/barricade/metal/wired{ - health = 120; - icon_state = "metal_2" +"wKl" = ( +/obj/structure/bed/sofa/south/grey/right, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/fiorina/station/civres_blue) +"wKm" = ( +/obj/item/stack/sheet/cardboard, /turf/open/floor/prison, -/area/fiorina/lz/near_lzII) +/area/fiorina/station/disco) +"wKx" = ( +/obj/structure/machinery/landinglight/ds1{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/fiorina/lz/near_lzI) "wKE" = ( /obj/effect/landmark/monkey_spawn, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"wKF" = ( -/obj/structure/surface/rack, -/obj/item/storage/toolbox/mechanical/green, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" +"wKR" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/book/manual/surgery, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/area/fiorina/maintenance) -"wLf" = ( -/obj/structure/machinery/deployable/barrier, /turf/open/floor/prison{ icon_state = "redfull" }, -/area/fiorina/station/security) +/area/fiorina/station/medbay) "wLA" = ( /obj/structure/extinguisher_cabinet, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/security) -"wLI" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/ammo_box/magazine/misc/flares, +"wLS" = ( +/obj/item/tool/wrench, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "darkpurple2" }, /area/fiorina/tumor/servers) -"wLJ" = ( -/obj/structure/prop/souto_land/pole{ - dir = 1 - }, -/turf/open/floor/prison{ - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"wLN" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/skills{ +"wLT" = ( +/obj/structure/prop/structure_lattice{ dir = 4 }, +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 + }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"wLP" = ( +/area/fiorina/tumor/civres) +"wMe" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/clipboard, -/turf/open/floor/prison{ - icon_state = "darkpurple2" +/obj/item/reagent_container/blood/empty{ + pixel_x = -7; + pixel_y = 4 }, -/area/fiorina/tumor/servers) -"wLX" = ( -/obj/item/stack/cable_coil, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 +/obj/item/reagent_container/blood/BMinus{ + pixel_x = 7; + pixel_y = 4 }, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkpurple2" + icon_state = "floor_plate" }, +/area/fiorina/station/telecomm/lz1_cargo) +"wMh" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer3/laptop/secure_data, +/turf/open/floor/prison, /area/fiorina/tumor/servers) "wMi" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ @@ -36518,57 +37558,26 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/chapel) +"wMv" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/chapel) "wMz" = ( /obj/structure/machinery/faxmachine, /obj/structure/surface/table/woodentable/fancy, /turf/open/floor/carpet, /area/fiorina/station/security/wardens) -"wMG" = ( -/obj/item/stack/rods, -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) -"wMI" = ( -/obj/item/storage/box/gloves, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/station/transit_hub) -"wMP" = ( -/obj/item/stool, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/civres_blue) -"wMQ" = ( -/obj/structure/closet/secure_closet/freezer/kitchen, -/obj/item/reagent_container/food/condiment/enzyme, -/obj/item/reagent_container/food/condiment/enzyme, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/fiorina/station/power_ring) -"wMR" = ( -/obj/item/device/flashlight/lamp/tripod, +"wMA" = ( +/obj/item/disk/botany, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/lz/near_lzII) -"wMS" = ( -/obj/structure/sink{ dir = 4; - pixel_x = 12 - }, -/obj/structure/largecrate/random/case/double, -/turf/open/floor/prison{ - dir = 6; - icon_state = "whitepurple" + icon_state = "blue_plate" }, -/area/fiorina/station/research_cells) +/area/fiorina/station/botany) "wNi" = ( /obj/effect/landmark/yautja_teleport, /turf/open/floor/plating/prison, @@ -36582,142 +37591,122 @@ icon_state = "doubleside" }, /area/fiorina/station/chapel) -"wNw" = ( +"wNB" = ( +/obj/structure/closet/firecloset/full, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, /turf/open/floor/prison{ - dir = 9; - icon_state = "darkpurple2" + dir = 1; + icon_state = "whitegreen" }, -/area/fiorina/tumor/servers) -"wOc" = ( -/obj/structure/platform, -/obj/structure/platform{ +/area/fiorina/station/medbay) +"wND" = ( +/obj/structure/bed/chair/comfy{ dir = 8 }, -/obj/structure/platform_decoration{ - dir = 10 - }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 9; + icon_state = "blue" }, -/area/fiorina/station/power_ring) -"wOD" = ( +/area/fiorina/station/civres_blue) +"wNG" = ( /turf/open/floor/prison{ - dir = 8; - icon_state = "floor_marked" + icon_state = "darkredfull2" }, -/area/fiorina/tumor/servers) -"wOM" = ( -/obj/item/tool/kitchen/knife, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) -"wOR" = ( +/area/fiorina/station/security) +"wNM" = ( +/obj/item/tool/weldingtool, /turf/open/floor/prison{ - dir = 10; - icon_state = "greenblue" + icon_state = "floor_plate" }, -/area/fiorina/station/botany) -"wOS" = ( +/area/fiorina/station/civres_blue) +"wNX" = ( /turf/open/floor/prison{ - icon_state = "redcorner" + dir = 8; + icon_state = "green" }, -/area/fiorina/station/security) -"wOT" = ( -/obj/effect/decal/cleanable/blood/splatter, +/area/fiorina/station/chapel) +"wOG" = ( +/obj/structure/largecrate/random, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/station/disco) "wPz" = ( /turf/closed/shuttle/elevator, /area/fiorina/station/telecomm/lz1_cargo) -"wPF" = ( -/obj/item/trash/semki, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/power_ring) -"wPL" = ( -/obj/structure/platform_decoration, +"wQb" = ( /turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) -"wQh" = ( -/obj/structure/prop/almayer/computers/sensor_computer1{ - name = "computer" - }, -/obj/structure/machinery/light/double/blue{ dir = 1; - pixel_y = 21 + icon_state = "blue" + }, +/area/fiorina/station/civres_blue) +"wQg" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/door/window/eastright{ + dir = 1 }, /turf/open/floor/prison{ - icon_state = "darkredfull2" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) -"wQn" = ( -/obj/effect/landmark/static_comms/net_one, +/area/fiorina/station/security) +"wQD" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/weapon/gun/energy/taser, /turf/open/floor/prison{ - dir = 10; icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) -"wQs" = ( -/obj/effect/landmark/survivor_spawner, -/turf/open/floor/prison, -/area/fiorina/station/park) +/area/fiorina/station/security) "wQN" = ( /obj/structure/machinery/floodlight/landing/floor, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzII) +"wQR" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) "wQT" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"wRg" = ( -/obj/item/stack/sheet/metal, -/obj/structure/cable/heavyduty{ - icon_state = "1-2" - }, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/servers) -"wRh" = ( -/obj/structure/platform{ - dir = 1 - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitegreen" +"wQW" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 }, -/area/fiorina/station/medbay) -"wRn" = ( -/obj/structure/machinery/light/double/blue, /turf/open/floor/prison, /area/fiorina/station/park) -"wRo" = ( -/obj/structure/barricade/wooden{ - dir = 1 - }, +"wQY" = ( +/obj/structure/machinery/cm_vending/sorted/medical/no_access, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" }, -/area/fiorina/station/medbay) -"wRv" = ( -/obj/structure/bed/chair, -/turf/open/floor/prison{ - icon_state = "darkpurple2" +/area/fiorina/tumor/ice_lab) +"wRg" = ( +/obj/item/stack/sheet/metal, +/obj/structure/cable/heavyduty{ + icon_state = "1-2" }, +/turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"wRG" = ( -/obj/structure/platform{ - dir = 8 - }, +"wRz" = ( +/obj/structure/barricade/wooden, /turf/open/floor/prison{ dir = 8; - icon_state = "blue" + icon_state = "cell_stripe" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/central_ring) "wRP" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ dir = 1; @@ -36725,113 +37714,116 @@ }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"wRW" = ( -/obj/structure/prop/resin_prop{ - dir = 1; - icon_state = "chair"; - pixel_y = 6 - }, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"wRZ" = ( +"wSb" = ( +/obj/structure/machinery/gibber, /turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/fiorina/station/power_ring) +"wSc" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; dir = 1; - icon_state = "blue_plate" + health = 25000; + pixel_y = 19 + }, +/obj/item/stack/sheet/wood, +/obj/structure/machinery/computer/cameras/wooden_tv{ + desc = "Somehow, it still functions."; + layer = 3.1; + name = "discarded camera console"; + pixel_x = -6; + pixel_y = 5 }, -/area/fiorina/station/botany) -"wSe" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" + icon_state = "floor_plate" }, /area/fiorina/tumor/servers) "wSm" = ( /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzII) -"wTo" = ( -/obj/structure/platform{ - dir = 4 +"wSo" = ( +/obj/structure/platform_decoration{ + dir = 8 }, -/obj/item/stool, /turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/civres_blue) -"wTy" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_sn_full_cap" + dir = 4; + icon_state = "darkbrown2" }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"wTz" = ( -/obj/structure/machinery/vending/security, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/station/park) +"wSt" = ( +/obj/structure/monorail{ + dir = 9; + name = "launch track" }, -/area/fiorina/station/security) -"wTO" = ( -/obj/structure/bed{ - icon_state = "abed" +/turf/open/floor/plating/prison, +/area/fiorina/station/transit_hub) +"wSC" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/glass/bottle/spaceacillin{ + pixel_x = -6; + pixel_y = 4 }, -/obj/item/reagent_container/food/drinks/flask/marine, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitepurple" + icon_state = "darkredfull2" }, /area/fiorina/station/research_cells) -"wTV" = ( -/obj/structure/bed/chair{ - dir = 4 - }, +"wSD" = ( +/obj/item/reagent_container/food/drinks/cans/waterbottle, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"wSN" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/firstaid/regular, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "darkredfull2" }, /area/fiorina/station/research_cells) -"wUA" = ( +"wSU" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "green" + icon_state = "floor_plate" }, -/area/fiorina/tumor/aux_engi) -"wVu" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/area/fiorina/station/transit_hub) +"wSX" = ( +/obj/vehicle/train/cargo/trolley, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/tumor/aux_engi) -"wVI" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 + dir = 9; + icon_state = "greenfull" }, -/obj/effect/landmark/objective_landmark/science, +/area/fiorina/station/transit_hub) +"wTC" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "whitepurple" + dir = 5; + icon_state = "darkyellow2" }, -/area/fiorina/station/research_cells) -"wVK" = ( +/area/fiorina/station/telecomm/lz1_cargo) +"wTW" = ( +/obj/structure/machinery/door/airlock/prison_hatch/autoname, +/turf/open/floor/plating/prison, +/area/fiorina/station/disco) +"wUs" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "darkpurple2" + icon_state = "floorscorched1" }, -/area/fiorina/tumor/servers) -"wVL" = ( -/obj/structure/bed/chair{ - dir = 4 +/area/fiorina/station/civres_blue) +"wUz" = ( +/obj/item/frame/toolbox_tiles, +/turf/open/floor/prison{ + dir = 9; + icon_state = "whitepurple" }, -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 +/area/fiorina/station/research_cells) +"wVc" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/drinks/coffee{ + pixel_x = 11; + pixel_y = 14 }, /turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/tumor/fiberbush) "wWs" = ( /turf/open/floor/greengrid, /area/fiorina/station/security) @@ -36844,271 +37836,286 @@ }, /turf/open/floor/almayer_hull, /area/fiorina/station/medbay) -"wXf" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" +"wXe" = ( +/obj/structure/machinery/computer/cameras{ + dir = 1 }, -/area/fiorina/station/flight_deck) -"wXP" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/paper, /turf/open/floor/prison{ - icon_state = "darkpurple2" + icon_state = "redfull" }, -/area/fiorina/tumor/servers) -"wYx" = ( -/obj/item/storage/box/flashbangs, -/obj/structure/surface/table/reinforced/prison, +/area/fiorina/station/security) +"wXy" = ( +/obj/structure/largecrate/random, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 + }, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"wXN" = ( +/obj/structure/machinery/cryo_cell, +/obj/structure/pipes/standard/cap/hidden, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "sterile_white" }, /area/fiorina/station/medbay) -"wYE" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "cell_stripe" - }, -/area/fiorina/lz/near_lzII) -"wYG" = ( -/obj/structure/barricade/wooden{ - dir = 1 +"wXQ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, /turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" + icon_state = "floor_plate" }, -/area/fiorina/station/telecomm/lz1_cargo) -"wZn" = ( -/obj/structure/closet/secure_closet/guncabinet{ - req_access = null +/area/fiorina/station/lowsec) +"wYq" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/chem_dispenser/soda, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/item/clothing/under/marine/ua_riot, -/obj/item/clothing/suit/storage/marine/veteran/ua_riot, -/obj/item/prop/helmetgarb/riot_shield, +/area/fiorina/station/power_ring) +"wYP" = ( +/obj/structure/platform, +/obj/item/clothing/gloves/botanic_leather, /turf/open/floor/prison{ - icon_state = "redfull" + icon_state = "floor_plate" }, -/area/fiorina/station/security) -"wZo" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 +/area/fiorina/station/botany) +"wYT" = ( +/obj/structure/surface/rack, +/obj/item/tank/emergency_oxygen/engi, +/turf/open/floor/prison{ + dir = 6; + icon_state = "blue" }, +/area/fiorina/station/power_ring) +"wZt" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 8; + icon_state = "floor_marked" }, -/area/fiorina/station/civres_blue) +/area/fiorina/station/research_cells) "wZv" = ( /obj/item/stack/sheet/metal, /turf/open/floor/wood, /area/fiorina/station/park) -"wZE" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/station/research_cells) +"wZH" = ( +/obj/structure/filingcabinet, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) "wZN" = ( /obj/item/reagent_container/food/drinks/bottle/melonliquor, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"xaK" = ( -/obj/structure/barricade/handrail/type_b, +"xak" = ( +/obj/structure/closet/emcloset, +/obj/item/storage/pill_bottle/kelotane/skillless, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/power_ring) -"xaS" = ( -/obj/structure/prop/almayer/computers/sensor_computer1, +/area/fiorina/tumor/ice_lab) +"xat" = ( +/obj/item/stool, /turf/open/floor/prison{ - icon_state = "darkpurplefull2" + icon_state = "bluefull" }, -/area/fiorina/tumor/servers) -"xbq" = ( -/obj/item/stack/sheet/metal/medium_stack, -/obj/effect/landmark/monkey_spawn, +/area/fiorina/station/civres_blue) +"xaO" = ( +/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/prison{ - dir = 8; - icon_state = "blue" + icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) -"xbu" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/toy/prize/honk{ - anchored = 1; - layer = 2.9; - pixel_x = -1; - pixel_y = 13 +/area/fiorina/station/medbay) +"xbc" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/obj/structure/barricade/handrail/type_b, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "cell_stripe" + }, +/area/fiorina/station/central_ring) +"xbm" = ( +/obj/structure/machinery/line_nexter{ + id = "line2"; + pixel_x = -2 + }, +/obj/structure/barricade/handrail/type_b, +/turf/open/floor/prison, +/area/fiorina/station/disco) +"xbo" = ( +/obj/structure/barricade/sandbags{ + dir = 8; + icon_state = "sandbag_0"; + pixel_y = 2 }, -/area/fiorina/station/flight_deck) -"xbB" = ( /turf/open/floor/prison{ - icon_state = "darkyellow2" + dir = 5; + icon_state = "yellow" + }, +/area/fiorina/station/disco) +"xbp" = ( +/obj/item/card/id/silver/clearance_badge/cl{ + desc = "Wow sorry, didn't mean to drop that in front of you, it's real, btw."; + name = "certified powerloader operator card"; + registered_name = "John Forklift" }, -/area/fiorina/station/flight_deck) -"xbQ" = ( /turf/open/floor/prison{ - icon_state = "panelscorched" + icon_state = "bluefull" + }, +/area/fiorina/station/power_ring) +"xbr" = ( +/obj/structure/machinery/power/apc{ + dir = 4 }, -/area/fiorina/station/civres_blue) -"xca" = ( /turf/open/floor/prison{ - icon_state = "platingdmg2" + dir = 1; + icon_state = "green" }, -/area/fiorina/station/security) -"xcf" = ( -/obj/item/reagent_container/food/snacks/donkpocket, +/area/fiorina/station/transit_hub) +"xbE" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/drinks/cans/waterbottle, +/turf/open/floor/prison{ + icon_state = "yellowfull" + }, +/area/fiorina/station/disco) +"xbM" = ( /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/transit_hub) +/area/fiorina/station/lowsec) "xck" = ( /obj/structure/largecrate/random/case/small, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/park) -"xcJ" = ( -/obj/structure/platform, +"xcz" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) +"xcS" = ( /obj/structure/platform{ - dir = 4 + dir = 8 }, -/obj/structure/platform_decoration{ - dir = 6 +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/station/power_ring) -"xdy" = ( -/turf/open/floor/prison{ - icon_state = "darkredfull2" +"xdb" = ( +/obj/structure/closet/bodybag, +/obj/effect/decal/cleanable/blood/gibs/body, +/turf/open/floor/prison, +/area/fiorina/station/lowsec) +"xdt" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1 }, +/turf/open/space/basic, /area/fiorina/oob) "xdE" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz1_tram) -"xec" = ( +"xdL" = ( +/obj/effect/landmark/corpsespawner/ua_riot/burst, /turf/open/floor/prison{ - icon_state = "kitchen" + icon_state = "floor_plate" }, -/area/fiorina/station/research_cells) -"xed" = ( -/obj/structure/window/reinforced{ - dir = 4 +/area/fiorina/tumor/servers) +"xdT" = ( +/obj/item/trash/cigbutt, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/structure/window/reinforced{ - dir = 8 +/area/fiorina/station/power_ring) +"xdZ" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/secure_data, -/turf/open/floor/prison, -/area/fiorina/station/security) -"xeh" = ( -/obj/structure/surface/rack, -/obj/item/tool/extinguisher, -/obj/item/tool/crowbar{ - pixel_x = 5; - pixel_y = -5 +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/item/tool/crowbar, +/area/fiorina/station/lowsec) +"xei" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) +"xel" = ( +/obj/effect/landmark/survivor_spawner, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/station/lowsec) "xew" = ( /turf/closed/shuttle/ert{ icon_state = "stan_leftengine" }, /area/fiorina/lz/near_lzI) -"xeD" = ( -/obj/item/clothing/gloves/botanic_leather, -/turf/open/floor/prison{ - dir = 4; - icon_state = "blue_plate" - }, -/area/fiorina/station/botany) "xeO" = ( /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"xfd" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_ew_full_cap" - }, -/obj/structure/platform/stair_cut, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzI) -"xfq" = ( -/obj/effect/alien/weeds/node, -/turf/open/floor/prison{ - dir = 9; - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) -"xfw" = ( -/obj/effect/landmark/objective_landmark/science, +"xeX" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "darkpurple2" + icon_state = "platingdmg1" }, /area/fiorina/tumor/servers) -"xfA" = ( -/obj/structure/bed/chair{ +"xfb" = ( +/obj/item/inflatable, +/obj/item/inflatable, +/obj/item/inflatable, +/obj/item/inflatable, +/obj/item/inflatable, +/obj/structure/surface/rack, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"xfh" = ( +/obj/structure/barricade/wooden{ dir = 8 }, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/civres) -"xfG" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 1; + icon_state = "whitegreen" }, /area/fiorina/station/medbay) -"xfR" = ( +"xgb" = ( /obj/effect/landmark/corpsespawner/ua_riot/burst, /turf/open/floor/prison{ - dir = 1; - icon_state = "darkpurple2" - }, -/area/fiorina/tumor/servers) -"xfV" = ( -/obj/item/reagent_container/food/snacks/eat_bar, -/turf/open/floor/prison{ - dir = 1; - icon_state = "blue_plate" + icon_state = "floor_plate" }, -/area/fiorina/station/botany) +/area/fiorina/tumor/civres) "xgn" = ( /obj/structure/machinery/optable, /turf/open/floor/corsat{ icon_state = "squares" }, /area/fiorina/station/medbay) -"xgr" = ( -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" - }, -/area/fiorina/tumor/aux_engi) "xgx" = ( /obj/structure/machinery/defenses/tesla_coil{ faction_group = list("USCM") @@ -37117,16 +38124,54 @@ name = "astroturf" }, /area/fiorina/station/park) +"xgC" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + dir = 9; + icon_state = "yellow" + }, +/area/fiorina/station/disco) "xgF" = ( /obj/structure/machinery/light/double/blue, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"xhc" = ( +"xgH" = ( +/obj/item/toy/handcard/uno_reverse_blue, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/transit_hub) +/area/fiorina/station/research_cells) +"xgU" = ( +/obj/item/circuitboard/machine/rdserver, +/turf/open/floor/prison{ + icon_state = "floorscorched1" + }, +/area/fiorina/tumor/servers) +"xhL" = ( +/obj/effect/decal/medical_decals{ + icon_state = "triagedecaltopleft" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) +"xhM" = ( +/obj/structure/curtain/red, +/turf/open/floor/prison{ + icon_state = "sterile_white" + }, +/area/fiorina/station/civres_blue) +"xia" = ( +/obj/item/ammo_magazine/smg/mp5, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) "xiF" = ( /obj/structure/largecrate/random/case/double, /obj/structure/machinery/light/double/blue{ @@ -37135,6 +38180,18 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/security) +"xiL" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "blue_plate" + }, +/area/fiorina/station/botany) +"xiO" = ( +/obj/structure/machinery/vending/cigarette/free, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) "xja" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ req_one_access = null @@ -37145,84 +38202,63 @@ /obj/structure/computerframe, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz2_maint) -"xjv" = ( +"xjM" = ( /turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" - }, -/area/fiorina/station/power_ring) -"xjw" = ( -/obj/structure/machinery/landinglight/ds1/delaytwo{ - dir = 8 + dir = 8; + icon_state = "redcorner" }, +/area/fiorina/station/security) +"xkm" = ( +/obj/effect/landmark/static_comms/net_two, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + icon_state = "bluefull" }, -/area/fiorina/lz/near_lzI) -"xjK" = ( -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/area/fiorina/station/power_ring) +"xkq" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 4 }, -/area/fiorina/tumor/ice_lab) -"xjW" = ( -/obj/item/device/flashlight/flare, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellowcorners2" +/obj/structure/platform_decoration{ + dir = 6 }, -/area/fiorina/station/telecomm/lz1_cargo) -"xkj" = ( -/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/civres_blue) +/area/fiorina/station/power_ring) "xkv" = ( /turf/closed/wall/prison, /area/fiorina/station/telecomm/lz1_tram) -"xkC" = ( -/obj/structure/barricade/metal/wired{ - dir = 4 - }, -/obj/structure/machinery/m56d_hmg/mg_turret/dropship{ - dir = 4 - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "cell_stripe" - }, -/area/fiorina/station/disco) -"xkG" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 +"xlb" = ( +/obj/structure/machinery/door/airlock/prison_hatch/autoname{ + dir = 1 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"xkP" = ( -/obj/item/tool/mop, +/area/fiorina/station/civres_blue) +"xlk" = ( +/obj/effect/decal/medical_decals{ + icon_state = "cryomid" + }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/park) +/area/fiorina/station/medbay) "xlp" = ( /obj/structure/bed/chair/office/dark{ dir = 8 }, /turf/open/floor/wood, /area/fiorina/station/research_cells) -"xlq" = ( -/obj/structure/largecrate/supply, +"xlx" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/snacks/tomatosoup, /turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" + icon_state = "blue" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/power_ring) "xlZ" = ( /obj/structure/surface/table/woodentable, /obj/item/storage/box/pillbottles, @@ -37233,167 +38269,58 @@ icon_state = "stan27" }, /area/fiorina/oob) -"xmg" = ( -/obj/effect/landmark/static_comms/net_two, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) "xmj" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/device/flashlight/lamp/green, /turf/open/floor/carpet, /area/fiorina/station/security/wardens) -"xmH" = ( +"xmC" = ( +/obj/item/device/flashlight/flare/on, /turf/open/floor/prison{ dir = 1; - icon_state = "green" - }, -/area/fiorina/tumor/aux_engi) -"xmM" = ( -/obj/structure/barricade/metal/wired{ - dir = 1 + icon_state = "whitegreen" }, +/area/fiorina/tumor/ice_lab) +"xmV" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ + dir = 10; icon_state = "darkyellow2" }, -/area/fiorina/lz/near_lzI) -"xmX" = ( -/obj/structure/cargo_container/grant/right{ - health = 5000; - unacidable = 1 - }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) +/area/fiorina/station/telecomm/lz1_tram) "xna" = ( /obj/item/stack/tile/plasteel, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"xng" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkyellow2" - }, -/area/fiorina/station/flight_deck) "xno" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"xnp" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_full" - }, -/turf/open/floor/plating/prison, -/area/fiorina/station/power_ring) -"xnq" = ( -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"xns" = ( -/obj/structure/surface/rack, -/obj/item/reagent_container/spray/cleaner{ - desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; - name = "Surgery Cleaner" - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"xnA" = ( -/obj/structure/curtain/red, -/turf/open/floor/prison{ - icon_state = "sterile_white" - }, -/area/fiorina/station/civres_blue) -"xnE" = ( -/obj/structure/largecrate/random/case/small, -/obj/item/key/cargo_train, -/turf/open/floor/prison, -/area/fiorina/tumor/aux_engi) -"xnK" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/recharger, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"xnM" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_sn_full_cap" - }, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/ice_lab) -"xnN" = ( -/obj/structure/machinery/power/apc{ - dir = 1 - }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"xnR" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/box/cups, -/obj/item/reagent_container/food/drinks/coffee{ - name = "\improper paper cup"; - pixel_x = 8; - pixel_y = 16 +"xnt" = ( +/obj/structure/closet{ + density = 0; + pixel_y = 18 }, -/turf/open/floor/prison, -/area/fiorina/station/security) -"xnS" = ( +/obj/item/clothing/gloves/combat, /turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" + dir = 1; + icon_state = "whitepurple" }, -/area/fiorina/station/park) +/area/fiorina/station/research_cells) "xnU" = ( /obj/structure/machinery/camera/autoname/lz_camera, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzII) -"xnW" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/prison, -/area/fiorina/station/flight_deck) -"xog" = ( -/obj/effect/decal/cleanable/blood/gibs/xeno/limb, -/turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreencorner" - }, -/area/fiorina/station/medbay) "xoi" = ( /obj/item/reagent_container/food/drinks/cans/waterbottle, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"xoB" = ( -/obj/item/trash/chunk, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"xoF" = ( -/turf/open/floor/prison{ - dir = 9; - icon_state = "blue" - }, -/area/fiorina/station/power_ring) -"xoI" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/objective, +"xow" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "green" }, -/area/fiorina/station/park) +/area/fiorina/station/chapel) "xoK" = ( /obj/structure/closet, /obj/item/handcuffs, @@ -37401,130 +38328,147 @@ /obj/item/weapon/chainofcommand, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"xoQ" = ( -/obj/structure/machinery/light/double/blue, +"xoR" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/atmos_alert, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "bluefull" }, -/area/fiorina/tumor/civres) -"xpB" = ( -/obj/structure/surface/rack, -/obj/effect/landmark/objective_landmark/close, +/area/fiorina/station/power_ring) +"xpj" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "lavendergrass_4" + }, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) +"xpw" = ( +/obj/structure/machinery/power/apc{ + dir = 8 + }, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"xpx" = ( +/obj/item/storage/belt/marine, +/turf/open/floor/prison, +/area/fiorina/station/security) +"xpM" = ( +/obj/structure/platform, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) +"xpO" = ( +/obj/structure/machinery/power/terminal{ + dir = 1 }, -/area/fiorina/station/medbay) -"xqf" = ( -/obj/structure/closet/bombcloset, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/stack/sheet/mineral/plastic, -/obj/item/stack/sheet/mineral/plastic, -/obj/item/stack/sheet/mineral/plastic, /turf/open/floor/prison{ icon_state = "darkbrownfull2" }, /area/fiorina/tumor/aux_engi) -"xqj" = ( -/obj/structure/bed{ - icon_state = "abed" - }, +"xqP" = ( +/obj/structure/surface/rack, +/obj/item/tool/plantspray/weeds, /turf/open/floor/prison{ dir = 4; - icon_state = "whitepurple" + icon_state = "blue_plate" }, -/area/fiorina/station/research_cells) -"xqD" = ( -/obj/item/explosive/grenade/high_explosive/frag, -/turf/open/floor/prison, -/area/fiorina/station/security) -"xqG" = ( -/obj/item/stack/rods, +/area/fiorina/station/botany) +"xqY" = ( +/obj/effect/spawner/random/tool, /turf/open/floor/prison{ - dir = 4; - icon_state = "greencorner" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/chapel) -"xri" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "yellow" +/area/fiorina/tumor/ice_lab) +"xrd" = ( +/obj/structure/machinery/computer3/server/rack, +/obj/structure/barricade/handrail/type_b{ + dir = 4 }, -/area/fiorina/station/lowsec) -"xrn" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/gun/pistol/lowchance, /turf/open/floor/prison, -/area/fiorina/station/power_ring) -"xrs" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/device/flashlight/lamp/candelabra{ - layer = 3.2; - pixel_x = 1; - pixel_y = 13 +/area/fiorina/tumor/servers) +"xro" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/skills{ + dir = 4 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" + icon_state = "bluefull" }, -/area/fiorina/station/transit_hub) -"xrG" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_ew_full_cap" +/area/fiorina/station/power_ring) +"xrz" = ( +/obj/item/clothing/head/cmcap, +/turf/open/floor/prison{ + icon_state = "green" }, -/obj/structure/platform/stair_cut/alt, -/turf/open/floor/plating/prison, -/area/fiorina/station/disco) +/area/fiorina/station/transit_hub) "xrH" = ( /obj/structure/machinery/landinglight/ds2{ dir = 1 }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzII) -"xrJ" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"xrZ" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 }, -/area/fiorina/tumor/aux_engi) -"xrT" = ( -/obj/structure/inflatable, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/ship) -"xrU" = ( -/obj/structure/machinery/vending/cigarette, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/fiorina/station/civres_blue) +"xsh" = ( +/obj/structure/bed/roller, +/obj/structure/machinery/iv_drip{ + pixel_y = 19 }, -/area/fiorina/station/transit_hub) -"xsa" = ( -/obj/structure/bed/chair/comfy{ - dir = 1 +/obj/item/bedsheet/green, +/turf/open/floor/prison{ + dir = 4; + icon_state = "whitegreen" }, +/area/fiorina/station/medbay) +"xst" = ( +/obj/structure/platform, +/turf/open/floor/prison/chapel_carpet, +/area/fiorina/station/chapel) +"xsC" = ( +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ - dir = 8; - icon_state = "redcorner" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/power_ring) -"xsg" = ( -/obj/item/trash/pistachios, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 +/area/fiorina/station/medbay) +"xsS" = ( +/obj/structure/bed/chair{ + dir = 8 }, /turf/open/floor/prison, /area/fiorina/station/power_ring) -"xst" = ( -/obj/structure/platform, -/turf/open/floor/prison/chapel_carpet, -/area/fiorina/station/chapel) +"xsX" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) +"xtd" = ( +/obj/structure/largecrate/random/case/small, +/obj/item/key/cargo_train, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) "xte" = ( /obj/structure/platform_decoration, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/telecomm/lz1_tram) +"xtm" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/fiorina/tumor/aux_engi) "xtP" = ( /obj/structure/platform/kutjevo/smooth{ dir = 1 @@ -37539,68 +38483,30 @@ }, /turf/open/space, /area/fiorina/oob) -"xub" = ( -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/park) -"xup" = ( -/obj/structure/largecrate/supply/generator, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"xuw" = ( -/obj/item/stool, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/research_cells) -"xuH" = ( -/obj/item/ammo_casing{ - icon_state = "casing_7_1" - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" +"xuQ" = ( +/obj/effect/decal/medical_decals{ + icon_state = "docstripingdir" }, -/area/fiorina/station/medbay) -"xvs" = ( -/obj/item/stack/rods, /turf/open/floor/prison{ dir = 10; icon_state = "sterile_white" }, -/area/fiorina/station/research_cells) -"xvt" = ( -/obj/effect/landmark/corpsespawner/ua_riot, -/turf/open/floor/prison{ - dir = 8; - icon_state = "whitegreen" - }, /area/fiorina/station/medbay) +"xvv" = ( +/turf/open/floor/prison, +/area/fiorina/station/botany) "xvB" = ( /obj/structure/machinery/door/airlock/multi_tile/elevator/access{ name = "greenhouse airlock" }, /turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) -"xvD" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/snacks/ricepudding, +"xvC" = ( +/obj/structure/bed/chair, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkpurple2" }, /area/fiorina/tumor/servers) -"xvH" = ( -/obj/structure/filingcabinet, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/security) "xvI" = ( /obj/structure/disposalpipe/segment{ icon_state = "delivery_outlet"; @@ -37611,24 +38517,14 @@ /obj/item/trash/eat, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"xvR" = ( -/obj/item/stack/sheet/metal, +"xwo" = ( +/obj/structure/surface/rack, +/obj/item/storage/box/sprays, /turf/open/floor/prison{ dir = 9; icon_state = "greenfull" }, -/area/fiorina/tumor/civres) -"xwi" = ( -/obj/item/explosive/grenade/phosphorus, -/obj/item/explosive/grenade/phosphorus, -/obj/item/explosive/grenade/phosphorus, -/obj/structure/surface/rack, -/obj/item/explosive/grenade/phosphorus, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) +/area/fiorina/station/botany) "xwt" = ( /obj/structure/bed/chair/comfy, /turf/open/organic/grass{ @@ -37636,49 +38532,12 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) -"xwy" = ( -/obj/structure/closet/firecloset, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison, -/area/fiorina/station/medbay) -"xwA" = ( -/obj/item/ammo_casing{ - icon_state = "casing_6_1" - }, -/obj/item/weapon/gun/smg/mp5, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) "xwC" = ( /turf/closed/wall/mineral/bone_resin, /area/fiorina/tumor/fiberbush) -"xwD" = ( -/obj/item/tool/weldingtool/largetank, -/turf/open/floor/prison, -/area/fiorina/station/civres_blue) -"xxd" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison{ - dir = 6; - icon_state = "darkbrown2" - }, -/area/fiorina/maintenance) -"xxh" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkbrown2" - }, -/area/fiorina/tumor/aux_engi) "xxD" = ( /turf/open/floor/wood, /area/fiorina/station/civres_blue) -"xxE" = ( -/obj/item/stack/rods/plasteel, -/turf/open/floor/prison{ - icon_state = "damaged3" - }, -/area/fiorina/station/security) "xxP" = ( /obj/structure/flora/bush/ausbushes/grassybush{ icon_state = "lavendergrass_2" @@ -37688,50 +38547,37 @@ name = "astroturf" }, /area/fiorina/station/civres_blue) +"xxU" = ( +/obj/effect/decal/cleanable/blood{ + layer = 3 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) "xxX" = ( /obj/effect/decal/cleanable/blood/splatter{ icon_state = "gib4" }, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"xyf" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, -/turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_cargo) -"xyK" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ +"xyq" = ( +/obj/structure/bed/chair{ dir = 8 }, -/turf/open/floor/prison, -/area/fiorina/station/power_ring) -"xyR" = ( -/obj/structure/bedsheetbin, -/turf/open/floor/prison{ - dir = 8; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"xzb" = ( -/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + dir = 4; + icon_state = "blue_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/station/botany) +"xyw" = ( +/obj/structure/machinery/computer/arcade, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) "xzj" = ( /turf/open/floor/carpet, /area/fiorina/tumor/civres) -"xzr" = ( -/obj/item/prop/helmetgarb/gunoil, -/turf/open/floor/prison, -/area/fiorina/maintenance) "xzs" = ( /obj/structure/machinery/space_heater, /turf/open/organic/grass{ @@ -37739,40 +38585,33 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) -"xzI" = ( -/obj/item/tool/warning_cone, -/obj/structure/barricade/metal{ - dir = 8; - health = 150; - icon_state = "metal_2" - }, -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"xzW" = ( -/obj/structure/closet/wardrobe/orange, -/obj/item/explosive/mine/pmc, -/obj/effect/spawner/random/gun/smg, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison{ - icon_state = "yellowfull" - }, -/area/fiorina/station/lowsec) -"xAi" = ( -/obj/structure/machinery/vending/sovietsoda, +"xzN" = ( /turf/open/floor/prison{ dir = 9; - icon_state = "greenfull" + icon_state = "blue" }, -/area/fiorina/station/botany) +/area/fiorina/station/chapel) "xAl" = ( /obj/structure/cargo_container/grant/right{ desc = "A huge industrial shipping container. You're not sure how it got here." }, /turf/open/space, /area/fiorina/oob) +"xAo" = ( +/obj/item/trash/cigbutt/bcigbutt, +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) +"xAq" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/research_cells) "xAs" = ( /obj/item/device/reagent_scanner, /turf/open/organic/grass{ @@ -37780,26 +38619,23 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) -"xAw" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "sterile_white" - }, -/area/fiorina/station/lowsec) -"xAR" = ( -/obj/structure/prop/structure_lattice{ - dir = 4; - health = 300 +"xAY" = ( +/obj/effect/landmark{ + icon_state = "hive_spawn"; + name = "xeno_hive_spawn" }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 +/obj/effect/landmark/ert_spawns/groundside_xeno, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitegreencorner" }, +/area/fiorina/tumor/ice_lab) +"xBc" = ( +/obj/structure/barricade/wooden, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "whitepurple" }, -/area/fiorina/station/park) +/area/fiorina/station/research_cells) "xBl" = ( /obj/structure/surface/table/woodentable, /obj/item/circuitboard/apc, @@ -37814,103 +38650,73 @@ }, /turf/open/floor/carpet, /area/fiorina/station/civres_blue) -"xBv" = ( -/obj/structure/bed/roller, -/obj/effect/decal/cleanable/blood/gibs/core, -/turf/open/floor/prison, -/area/fiorina/station/lowsec) -"xBI" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" - }, -/area/fiorina/lz/near_lzII) -"xBK" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_29"; - pixel_x = 1; - pixel_y = 10 +"xBu" = ( +/obj/structure/platform_decoration{ + dir = 8 }, +/obj/effect/spawner/random/tool, /turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"xBR" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "redfull" +/area/fiorina/station/power_ring) +"xBN" = ( +/obj/item/prop/helmetgarb/spacejam_tickets{ + desc = "Low security prisoners would smuggle in arcade tickets after visitations. The tickets act as a stand in for paper currency in the prison economy, they're backed by the cigarette standard, since one ticket nets one cigarette at the prize booth. The cigarettes also get smuggled back in."; + name = "\improper arcade tickets"; + pixel_x = 1; + pixel_y = -1 }, -/area/fiorina/station/security/wardens) -"xBT" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkpurplefull2" }, -/area/fiorina/station/security/wardens) +/area/fiorina/station/research_cells) "xCa" = ( /obj/item/toy/crayon/rainbow, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"xCm" = ( -/obj/structure/barricade/sandbags{ - icon_state = "sandbag_0"; - pixel_y = -14 - }, +"xCg" = ( +/obj/item/stack/sheet/metal, /turf/open/floor/prison{ dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/flight_deck) -"xCo" = ( -/obj/structure/prop/structure_lattice{ - dir = 4; - health = 300 - }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 + icon_state = "sterile_white" }, -/obj/structure/disposalpipe/segment{ - color = "#c4c4c4"; - dir = 4; - layer = 6; - name = "overhead pipe"; - pixel_y = 20 +/area/fiorina/station/research_cells) +"xCh" = ( +/obj/structure/bed/chair{ + dir = 8 }, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/tumor/civres) -"xCs" = ( -/obj/effect/decal/medical_decals{ - icon_state = "cryocell1decal" + dir = 10; + icon_state = "sterile_white" }, +/area/fiorina/station/research_cells) +"xCp" = ( +/obj/structure/inflatable/popped, /turf/open/floor/prison{ icon_state = "whitegreen" }, /area/fiorina/station/medbay) -"xCy" = ( -/obj/item/paper/prison_station/inmate_handbook, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/fiorina/station/research_cells) -"xCW" = ( -/obj/structure/grille, +"xCr" = ( +/obj/structure/curtain/shower, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "kitchen" }, -/area/fiorina/station/research_cells) -"xDe" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison{ - icon_state = "green" +/area/fiorina/tumor/civres) +"xCv" = ( +/obj/structure/platform{ + dir = 4 }, -/area/fiorina/station/chapel) -"xDg" = ( -/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison, /area/fiorina/station/medbay) +"xCV" = ( +/obj/item/reagent_container/food/drinks/bottle/orangejuice, +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) +"xDk" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "blue" + }, +/area/fiorina/station/civres_blue) "xDq" = ( /turf/closed/shuttle/ert{ icon_state = "stan20" @@ -37920,120 +38726,135 @@ /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) -"xDz" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 8 +"xEi" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_29"; + pixel_y = 6 }, -/turf/open/floor/prison, -/area/fiorina/station/botany) -"xDQ" = ( /turf/open/floor/prison{ - icon_state = "cell_stripe" + icon_state = "floor_plate" }, -/area/fiorina/station/security) -"xEa" = ( -/obj/structure/closet/secure_closet/security_empty, -/obj/item/clothing/accessory/storage/holster, -/obj/structure/window/reinforced{ - dir = 4 +/area/fiorina/station/power_ring) +"xEy" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, /turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/security) -"xEE" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - indestructible = 1 - }, -/obj/item/clothing/head/that{ - anchored = 1; - indestructible = 1; - pixel_y = 7 + icon_state = "floor_plate" }, -/turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"xFe" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" - }, -/obj/structure/platform, -/obj/structure/barricade/handrail/type_b{ - layer = 3.4 +"xEH" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreen" }, -/turf/open/floor/plating/prison, /area/fiorina/station/medbay) +"xEW" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/power_ring) +"xEX" = ( +/obj/effect/spawner/random/gun/rifle, +/turf/open/floor/prison{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/fiorina/lz/near_lzI) "xFf" = ( /obj/structure/largecrate/random, /turf/open/floor/corsat{ icon_state = "plate" }, /area/fiorina/tumor/aux_engi) -"xFx" = ( +"xFg" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) +"xFJ" = ( +/obj/item/tool/soap, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/fiorina/station/lowsec) +"xFL" = ( +/obj/effect/decal{ + icon = 'icons/obj/items/policetape.dmi'; + icon_state = "engineering_v" + }, /turf/open/floor/prison{ dir = 10; - icon_state = "green" + icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"xFB" = ( -/obj/structure/platform, -/turf/open/floor/prison, -/area/fiorina/station/botany) +/area/fiorina/station/telecomm/lz1_cargo) "xFP" = ( /turf/closed/shuttle/ert{ icon_state = "stan_rightengine" }, /area/fiorina/lz/near_lzI) -"xGt" = ( -/obj/structure/window/framed/prison/reinforced, -/turf/open/floor/plating/prison, -/area/fiorina/station/security) -"xGY" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/obj/structure/bed/chair{ - dir = 4; - pixel_y = 4 +"xGc" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, /turf/open/floor/prison{ - dir = 10; - icon_state = "bright_clean_marked" + icon_state = "bluefull" + }, +/area/fiorina/station/civres_blue) +"xGd" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/clothing/mask/cigarette/weed{ + icon_state = "ucigoff" }, -/area/fiorina/station/medbay) -"xHV" = ( -/turf/closed/wall/mineral/bone_resin, -/area/fiorina/tumor/civres) -"xHY" = ( -/obj/effect/landmark/xeno_spawn, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + icon_state = "darkredfull2" }, -/area/fiorina/tumor/aux_engi) -"xIb" = ( -/obj/structure/platform{ - dir = 8; - layer = 2.5 +/area/fiorina/station/lowsec) +"xGi" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/obj/structure/machinery/door/airlock/prison_hatch/autoname{ - dir = 1 +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" }, +/area/fiorina/tumor/civres) +"xGl" = ( +/obj/structure/barricade/wooden, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/ice_lab) -"xIg" = ( -/obj/structure/largecrate/supply/medicine/medivend, +/area/fiorina/station/power_ring) +"xGr" = ( +/obj/item/trash/sosjerky, +/turf/open/floor/prison{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/fiorina/station/flight_deck) +"xGt" = ( +/obj/structure/window/framed/prison/reinforced, +/turf/open/floor/plating/prison, +/area/fiorina/station/security) +"xGD" = ( +/obj/structure/machinery/deployable/barrier, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison, +/area/fiorina/station/security) +"xHi" = ( +/obj/item/trash/candle, /turf/open/floor/prison{ dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/station/telecomm/lz1_cargo) +"xHV" = ( +/turf/closed/wall/mineral/bone_resin, +/area/fiorina/tumor/civres) "xIh" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/light/double/blue{ @@ -38043,73 +38864,121 @@ }, /turf/open/floor/wood, /area/fiorina/station/park) -"xIo" = ( +"xIq" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/platform_decoration{ + dir = 1 + }, /turf/open/floor/prison{ - dir = 6; - icon_state = "darkbrown2" + icon_state = "floor_plate" }, -/area/fiorina/station/park) +/area/fiorina/station/disco) "xIx" = ( /obj/structure/largecrate/random, /turf/open/floor/plating/prison, /area/fiorina/station/chapel) -"xJg" = ( -/obj/structure/platform{ - dir = 4; - layer = 2 - }, -/obj/structure/machinery/door/airlock/prison_hatch/autoname{ - dir = 1 - }, +"xJn" = ( +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkredfull2" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/disco) "xJw" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/civres_blue) -"xKf" = ( +"xJQ" = ( /obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue" + dir = 9; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) +"xKj" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/aux_engi) +"xKA" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/fiorina/oob) +"xKE" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/device/taperecorder{ + pixel_x = 8; + pixel_y = 8 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/fiorina/station/lowsec) +"xKP" = ( +/obj/structure/barricade/handrail, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" }, -/area/fiorina/station/civres_blue) -"xKj" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, -/turf/open/floor/plating/prison, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/research_cells) "xKX" = ( /turf/open/floor/plating/prison, /area/fiorina/station/disco) -"xLa" = ( +"xLd" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = 30 + }, /turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" + icon_state = "redfull" }, -/area/fiorina/oob) +/area/fiorina/station/security) +"xLf" = ( +/obj/effect/decal/cleanable/blood/splatter{ + icon_state = "gibmid1" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) "xLi" = ( /turf/closed/wall/prison, /area/fiorina/tumor/ice_lab) -"xLI" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/device/radio{ - pixel_y = 8 +"xLj" = ( +/obj/item/reagent_container/food/drinks/bottle/patron, +/turf/open/floor/prison, +/area/fiorina/station/civres_blue) +"xLn" = ( +/obj/structure/window/reinforced{ + dir = 1 }, +/turf/open/floor/prison, +/area/fiorina/station/medbay) +"xLx" = ( +/obj/item/bedsheet, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/power_ring) -"xLP" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, +/area/fiorina/station/lowsec) +"xLD" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, /turf/open/floor/prison{ - icon_state = "whitegreen" + icon_state = "bluefull" }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/power_ring) "xLQ" = ( /obj/structure/window/framed/prison, /turf/open/floor/plating/prison, @@ -38119,41 +38988,17 @@ /obj/effect/spawner/random/toolbox, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) -"xMg" = ( -/turf/open/floor/prison{ - dir = 9; - icon_state = "whitegreen" - }, -/area/fiorina/tumor/ice_lab) -"xMs" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/faxmachine, -/turf/open/floor/prison{ - icon_state = "bluefull" - }, -/area/fiorina/station/power_ring) -"xMN" = ( -/obj/structure/closet/secure_closet/hydroponics, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" - }, -/area/fiorina/station/botany) -"xMR" = ( -/turf/open/floor/prison{ - dir = 1; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) -"xMT" = ( -/obj/structure/bed/chair{ - dir = 4 - }, +"xMp" = ( +/obj/item/trash/c_tube, /turf/open/floor/prison{ - icon_state = "bluecorner" + dir = 10; + icon_state = "whitegreenfull" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/medbay) +"xMO" = ( +/obj/item/stack/sandbags_empty/half, +/turf/open/floor/prison, +/area/fiorina/station/flight_deck) "xMW" = ( /obj/structure/barricade/handrail{ dir = 1; @@ -38168,14 +39013,13 @@ }, /turf/open/space, /area/fiorina/oob) -"xNf" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/card/id/guest, -/obj/effect/landmark/objective_landmark/close, +"xMX" = ( +/obj/structure/inflatable/door, /turf/open/floor/prison{ - icon_state = "redfull" + dir = 8; + icon_state = "whitegreen" }, -/area/fiorina/station/security) +/area/fiorina/station/medbay) "xNg" = ( /obj/effect/decal/hefa_cult_decals/d32{ icon_state = "2" @@ -38188,22 +39032,63 @@ /obj/structure/extinguisher_cabinet, /turf/closed/wall/r_wall/prison, /area/fiorina/station/security) -"xNQ" = ( +"xNn" = ( /obj/structure/stairs/perspective{ - dir = 8; icon_state = "p_stair_sn_full_cap" }, /obj/structure/platform{ - dir = 4 + dir = 8 }, +/turf/open/floor/plating/prison, +/area/fiorina/station/transit_hub) +"xNw" = ( +/obj/item/fuelCell, /turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) +"xNG" = ( +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/security) +"xNJ" = ( +/obj/structure/barricade/handrail/type_b{ + dir = 1 + }, +/obj/item/frame/rack, +/turf/open/floor/prison{ + dir = 6; + icon_state = "yellow" + }, /area/fiorina/station/disco) -"xOa" = ( -/obj/structure/bookcase/manuals/engineering, +"xNU" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/fiorina/station/flight_deck) +"xOm" = ( +/obj/structure/bed/chair{ + dir = 8 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) +/area/fiorina/station/power_ring) +"xOs" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) "xOE" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname{ dir = 1 @@ -38212,60 +39097,30 @@ icon_state = "plate" }, /area/fiorina/tumor/ship) -"xOI" = ( -/obj/structure/machinery/vending/coffee, +"xOU" = ( +/obj/structure/largecrate/random/case/small, /turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/flight_deck) -"xOQ" = ( -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + dir = 8; + icon_state = "darkyellow2" }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzII) -"xOV" = ( -/obj/structure/machinery/gibber, +/area/fiorina/station/telecomm/lz1_cargo) +"xPk" = ( /turf/open/floor/prison{ dir = 8; - icon_state = "blue_plate" + icon_state = "greencorner" }, -/area/fiorina/station/botany) +/area/fiorina/tumor/civres) "xPG" = ( /obj/structure/bed/chair/comfy{ dir = 8 }, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"xPO" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) -"xPX" = ( -/obj/structure/machinery/disposal, +"xQx" = ( /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/transit_hub) -"xQb" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/glass/beaker{ - pixel_x = -5; - pixel_y = 15 - }, -/obj/item/reagent_container/glass/beaker{ - pixel_x = 5; - pixel_y = 2 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/tumor/ice_lab) +/area/fiorina/station/security/wardens) "xQC" = ( /obj/structure/platform/kutjevo/smooth, /obj/structure/platform/kutjevo/smooth{ @@ -38274,150 +39129,117 @@ /obj/structure/lattice, /turf/open/space/basic, /area/fiorina/oob) -"xQE" = ( -/obj/structure/closet/bodybag, -/obj/effect/decal/cleanable/blood/gibs/up, +"xRl" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, /turf/open/floor/prison, -/area/fiorina/station/lowsec) -"xRg" = ( -/obj/item/trash/popcorn, +/area/fiorina/station/telecomm/lz1_cargo) +"xRo" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"xRw" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ - dir = 8; + dir = 1; icon_state = "blue" }, /area/fiorina/station/power_ring) -"xRh" = ( +"xRI" = ( /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreen" + dir = 4; + icon_state = "yellow" }, -/area/fiorina/tumor/ice_lab) -"xSd" = ( -/turf/open/floor/prison{ - dir = 5; - icon_state = "blue" +/area/fiorina/station/lowsec) +"xRY" = ( +/obj/structure/bed{ + icon_state = "abed" }, -/area/fiorina/station/civres_blue) -"xSg" = ( -/obj/structure/flora/pottedplant/random, +/obj/item/card/id/visa, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "whitepurple" }, -/area/fiorina/tumor/civres) -"xSB" = ( -/obj/effect/spawner/random/toolbox, -/obj/structure/surface/rack, -/obj/item/device/flashlight, -/turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" +/area/fiorina/station/research_cells) +"xSz" = ( +/obj/structure/barricade/metal/wired{ + dir = 8 }, -/area/fiorina/station/transit_hub) -"xTa" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 13 +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"xSM" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" }, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenblue" + dir = 1; + icon_state = "whitegreen" }, -/area/fiorina/station/botany) -"xTe" = ( -/obj/structure/machinery/recharge_station, +/area/fiorina/station/central_ring) +"xTf" = ( +/obj/item/tool/kitchen/utensil/pspoon, /turf/open/floor/prison{ - dir = 9; + dir = 4; icon_state = "blue" }, /area/fiorina/station/power_ring) -"xTi" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/prop/souto_land/pole{ - dir = 1 - }, -/obj/structure/prop/souto_land/pole{ - dir = 8; - pixel_y = 24 +"xTD" = ( +/obj/structure/inflatable/popped/door, +/obj/effect/decal/medical_decals{ + icon_state = "triagedecaldir" }, /turf/open/floor/prison{ dir = 4; - icon_state = "darkbrown2" - }, -/area/fiorina/station/park) -"xTy" = ( -/obj/structure/barricade/deployable{ - dir = 4 + icon_state = "whitegreen" }, +/area/fiorina/station/medbay) +"xTW" = ( +/obj/structure/bed/sofa/vert/grey/top, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/security) +/area/fiorina/lz/near_lzII) "xUi" = ( /obj/structure/surface/rack, /obj/item/device/camera, /turf/open/floor/carpet, /area/fiorina/station/civres_blue) +"xUn" = ( +/obj/structure/machinery/door/poddoor/almayer{ + density = 0; + dir = 4 + }, +/turf/open/floor/prison, +/area/fiorina/station/medbay) "xUo" = ( /obj/structure/window/framed/prison, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzII) -"xUq" = ( -/obj/item/stack/barbed_wire, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) -"xUt" = ( -/obj/structure/machinery/vending/cigarette/colony, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/civres_blue) -"xUz" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "bluecorner" - }, -/area/fiorina/station/power_ring) -"xVh" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, -/turf/open/floor/prison, -/area/fiorina/station/transit_hub) -"xVm" = ( -/obj/effect/landmark/objective_landmark/close, +"xUr" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrownfull2" }, -/area/fiorina/station/security) -"xVv" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 +/area/fiorina/station/park) +"xVw" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ - dir = 6; + dir = 1; icon_state = "whitepurple" }, /area/fiorina/station/research_cells) -"xVD" = ( -/obj/structure/prop/resin_prop{ - icon_state = "rack" - }, +"xVJ" = ( +/obj/structure/surface/rack, +/obj/item/storage/toolbox/mechanical/green, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrownfull2" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/maintenance) "xVK" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 9 @@ -38429,107 +39251,138 @@ name = "astroturf" }, /area/fiorina/station/park) -"xVP" = ( -/turf/open/floor/prison{ - dir = 1; - icon_state = "darkyellowcorners2" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"xVR" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/sink{ - pixel_y = 32 - }, -/obj/item/tool/kitchen/knife/butcher, +"xVW" = ( /turf/open/floor/prison{ - icon_state = "kitchen" + dir = 9; + icon_state = "darkbrown2" }, -/area/fiorina/station/power_ring) +/area/fiorina/station/park) "xWc" = ( /obj/item/clothing/shoes/dress, /turf/open/space, /area/fiorina/oob) -"xWp" = ( -/obj/effect/landmark/xeno_spawn, +"xWE" = ( +/obj/item/reagent_container/food/condiment/peppermill{ + pixel_x = -5; + pixel_y = -11 + }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "bluefull" }, -/area/fiorina/tumor/ice_lab) -"xWH" = ( -/obj/structure/machinery/computer/emails{ - dir = 1; - pixel_y = 4 +/area/fiorina/station/civres_blue) +"xWG" = ( +/obj/item/weapon/twohanded/spear, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" }, +/area/fiorina/station/research_cells) +"xWV" = ( /obj/structure/surface/table/reinforced/prison, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/phone{ + pixel_y = -4 + }, +/obj/item/phone{ + pixel_x = 7; + pixel_y = 10 + }, +/obj/item/tool/pen, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" + }, +/area/fiorina/station/security) +"xXh" = ( +/obj/structure/machinery/door/airlock/prison_hatch/autoname{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "redfull" }, /area/fiorina/station/medbay) -"xWN" = ( -/obj/structure/bed/sofa/south/grey/left, +"xXl" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) +"xXt" = ( +/obj/structure/machinery/vending/snack, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/prison, +/area/fiorina/station/power_ring) +"xXY" = ( +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison{ icon_state = "floor_plate" }, +/area/fiorina/station/flight_deck) +"xYe" = ( +/obj/structure/tunnel/maint_tunnel, +/turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) -"xYA" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "blue_plate" +"xYg" = ( +/obj/docking_port/stationary/marine_dropship/lz2, +/turf/open/floor/plating/prison, +/area/fiorina/lz/near_lzII) +"xYo" = ( +/obj/structure/machinery/power/apc{ + dir = 8 }, -/area/fiorina/station/botany) -"xYB" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/condiment/saltshaker{ - pixel_x = -5; - pixel_y = -6 +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" }, -/obj/item/reagent_container/food/condiment/peppermill{ - pixel_x = -5; - pixel_y = -11 +/area/fiorina/tumor/aux_engi) +"xYJ" = ( +/obj/structure/bed{ + icon_state = "abed" }, -/obj/item/reagent_container/food/snacks/doughslice, /turf/open/floor/prison{ dir = 4; - icon_state = "darkyellowfull2" - }, -/area/fiorina/station/flight_deck) -"xYY" = ( -/obj/item/stool, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 + icon_state = "whitepurple" }, +/area/fiorina/station/research_cells) +"xYN" = ( +/obj/item/device/t_scanner, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "floor_plate" }, /area/fiorina/station/civres_blue) -"xZb" = ( -/obj/item/stack/rods, -/turf/open/floor/prison, -/area/fiorina/station/park) -"xZk" = ( -/obj/item/ammo_casing{ - dir = 8; - icon_state = "cartridge_2" +"xYR" = ( +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 22 }, /turf/open/floor/prison{ dir = 8; - icon_state = "darkyellowcorners2" + icon_state = "blue" }, -/area/fiorina/station/telecomm/lz1_cargo) -"xZo" = ( -/obj/item/prop/helmetgarb/spacejam_tickets{ - desc = "A ticket to Souto Man's raffle!"; - name = "\improper Souto Raffle Ticket"; - pixel_x = 7; - pixel_y = 6 +/area/fiorina/station/civres_blue) +"xZx" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper_bin, +/obj/item/tool/stamp, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" }, +/area/fiorina/tumor/civres) +"xZA" = ( /turf/open/floor/prison{ - icon_state = "blue" + dir = 4; + icon_state = "darkyellow2" }, -/area/fiorina/station/chapel) +/area/fiorina/station/telecomm/lz1_tram) "xZD" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/cameras{ @@ -38539,35 +39392,77 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) +"xZI" = ( +/obj/structure/prop/structure_lattice{ + dir = 4 + }, +/obj/structure/prop/structure_lattice{ + dir = 4; + layer = 3.1; + pixel_y = 10 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/security/wardens) +"xZM" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + dir = 8; + icon_state = "green" + }, +/area/fiorina/tumor/civres) +"xZN" = ( +/obj/item/clothing/under/shorts/green, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/station/central_ring) "xZR" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname{ dir = 1 }, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) -"yaz" = ( -/obj/structure/platform, -/obj/structure/closet/firecloset/full, -/obj/item/paper/prison_station/inmate_handbook, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"yaC" = ( -/obj/structure/machinery/vending/cigarette/free, +"xZU" = ( +/obj/structure/closet/crate/miningcar{ + name = "\improper materials storage bin" + }, /turf/open/floor/prison{ - icon_state = "darkbrownfull2" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/tumor/aux_engi) -"yaJ" = ( -/obj/structure/machinery/vending/sovietsoda, -/turf/open/floor/plating/prison, -/area/fiorina/station/medbay) -"yaU" = ( -/obj/effect/landmark/monkey_spawn, +/area/fiorina/station/botany) +"xZV" = ( +/obj/item/trash/semki, /turf/open/floor/prison{ + dir = 10; + icon_state = "floor_plate" + }, +/area/fiorina/station/telecomm/lz1_cargo) +"yar" = ( +/obj/structure/machinery/vending/cola, +/obj/structure/prop/souto_land/streamer{ dir = 1; + pixel_y = 24 + }, +/turf/open/floor/prison{ + dir = 8; icon_state = "darkbrown2" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/station/park) +"yat" = ( +/obj/item/inflatable/door, +/obj/item/inflatable/door, +/obj/item/inflatable/door, +/obj/structure/surface/rack, +/turf/open/floor/prison, +/area/fiorina/lz/near_lzI) +"yaJ" = ( +/obj/structure/machinery/vending/sovietsoda, +/turf/open/floor/plating/prison, +/area/fiorina/station/medbay) "yaY" = ( /obj/item/stack/sheet/metal, /turf/open/space, @@ -38592,50 +39487,37 @@ /obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /turf/open/floor/plating/prison, /area/fiorina/tumor/fiberbush) -"ybR" = ( -/obj/item/stack/sheet/metal{ - amount = 5 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"ybx" = ( +/obj/structure/platform, +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" }, -/area/fiorina/station/telecomm/lz1_cargo) +/turf/open/floor/prison, +/area/fiorina/station/botany) "ybU" = ( /obj/structure/prop/resin_prop{ icon_state = "sheater0" }, /turf/open/floor/plating/prison, /area/fiorina/station/park) -"ybY" = ( -/obj/structure/filingcabinet, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"ycd" = ( -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/maintenance) -"ycg" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/fancy/vials/random, +"ycf" = ( +/obj/structure/closet/secure_closet/security_empty, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "redfull" }, -/area/fiorina/station/medbay) -"ycj" = ( -/obj/structure/platform{ - dir = 1 +/area/fiorina/station/security) +"ycw" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 }, -/turf/open/floor/prison, -/area/fiorina/lz/near_lzI) -"ycn" = ( /turf/open/floor/prison{ - dir = 1; - icon_state = "darkbrowncorners2" + dir = 9; + icon_state = "greenfull" }, -/area/fiorina/tumor/aux_engi) +/area/fiorina/tumor/civres) "ycC" = ( /turf/open/floor/plating/prison, /area/fiorina/station/chapel) @@ -38643,72 +39525,91 @@ /obj/item/storage/pouch/radio, /turf/open/floor/plating/prison, /area/fiorina/tumor/fiberbush) -"ycN" = ( -/obj/item/tool/wrench, +"ycT" = ( +/obj/structure/machinery/space_heater, /turf/open/floor/prison{ - icon_state = "bluefull" + icon_state = "floor_plate" + }, +/area/fiorina/tumor/fiberbush) +"ydb" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 }, -/area/fiorina/station/power_ring) -"ycX" = ( /turf/open/floor/prison, -/area/fiorina/station/telecomm/lz1_cargo) -"ydk" = ( -/obj/effect/decal/cleanable/blood/drip, +/area/fiorina/station/civres_blue) +"ydd" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ - icon_state = "floorscorched1" + icon_state = "darkbrown2" }, -/area/fiorina/station/chapel) -"ydX" = ( +/area/fiorina/station/park) +"ydK" = ( /turf/open/floor/prison{ - dir = 9; - icon_state = "darkyellow2" + dir = 4; + icon_state = "blue" + }, +/area/fiorina/station/power_ring) +"ydQ" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/area/fiorina/station/telecomm/lz1_tram) -"ydY" = ( -/obj/structure/surface/rack, /turf/open/floor/prison{ - dir = 6; - icon_state = "darkbrown2" + icon_state = "whitegreen" + }, +/area/fiorina/tumor/ice_lab) +"yet" = ( +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" }, /area/fiorina/maintenance) -"yft" = ( -/obj/item/clothing/under/color/orange, +"yeA" = ( +/obj/item/reagent_container/food/drinks/cans/waterbottle, /turf/open/floor/prison, -/area/fiorina/station/security) -"yfB" = ( -/obj/effect/decal/medical_decals{ - icon_state = "docdecal1" +/area/fiorina/station/medbay) +"yeX" = ( +/obj/structure/bed/sofa/vert/grey/top, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) +"yfp" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" + }, +/obj/structure/platform/stair_cut/alt, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, -/obj/item/stack/cable_coil/blue, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, -/area/fiorina/station/medbay) -"yfC" = ( -/obj/structure/machinery/landinglight/ds2/delaythree{ - dir = 8 +/area/fiorina/station/disco) +"yfA" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "darkyellow2" }, -/area/fiorina/lz/near_lzII) +/area/fiorina/station/telecomm/lz1_cargo) "yfE" = ( /obj/structure/disposalpipe/junction{ dir = 4 }, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) -"yfH" = ( -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = -3 - }, +"yfK" = ( /turf/open/floor/prison{ - icon_state = "sterile_white" + dir = 1; + icon_state = "cell_stripe" }, -/area/fiorina/station/civres_blue) +/area/fiorina/maintenance) "yge" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 6 @@ -38722,10 +39623,31 @@ name = "astroturf" }, /area/fiorina/station/park) -"ygv" = ( -/obj/structure/machinery/light/double/blue, -/turf/open/floor/prison, -/area/fiorina/station/medbay) +"ygk" = ( +/obj/item/ammo_magazine/rifle/m16{ + current_rounds = 0 + }, +/turf/open/floor/prison{ + icon_state = "yellowcorner" + }, +/area/fiorina/station/lowsec) +"ygr" = ( +/obj/structure/platform, +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, +/area/fiorina/station/security) +"ygs" = ( +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/ice_lab) "ygw" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer{ @@ -38740,61 +39662,44 @@ }, /turf/open/floor/plating/prison, /area/fiorina/oob) -"ygH" = ( -/obj/item/ammo_casing{ - icon_state = "casing_1" - }, +"yhs" = ( +/obj/structure/surface/rack, +/obj/item/storage/firstaid/regular, +/obj/item/storage/pill_bottle/dexalin/skillless, /turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" + icon_state = "floor_plate" }, /area/fiorina/station/medbay) -"ygS" = ( -/obj/structure/largecrate/random/secure, -/obj/structure/machinery/light/double/blue{ - pixel_y = -1 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" - }, -/area/fiorina/station/disco) "yhu" = ( /obj/structure/window/framed/prison, /turf/open/floor/plating/prison, /area/fiorina/tumor/aux_engi) -"yhE" = ( -/obj/structure/machinery/vending/hydroseeds, +"yhJ" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/obj/item/prop/helmetgarb/spacejam_tickets{ + desc = "Low security prisoners would smuggle in arcade tickets after visitations. The tickets act as a stand in for paper currency in the prison economy, they're backed by the cigarette standard, since one ticket nets one cigarette at the prize booth. The cigarettes also get smuggled back in."; + name = "\improper arcade tickets"; + pixel_x = 1; + pixel_y = -1 + }, /turf/open/floor/prison{ - dir = 9; - icon_state = "greenfull" + dir = 6; + icon_state = "whitepurple" }, -/area/fiorina/station/botany) +/area/fiorina/station/research_cells) "yhR" = ( /obj/structure/sign/prop3{ desc = "Enlist in the Penal Battalions today! The USCM 3rd Fleet features a subset of UA sanctioned penal battalions, drawing from inmate popualtions across the colonies. Mostly New Argentina though." }, /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/medbay) -"yhT" = ( -/obj/structure/largecrate/supply/ammo, -/obj/item/storage/fancy/crayons, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_plate" - }, -/area/fiorina/station/telecomm/lz1_cargo) -"yil" = ( -/obj/structure/bed/roller, -/obj/structure/machinery/iv_drip{ - pixel_y = 19 - }, -/obj/item/bedsheet/green, -/turf/open/floor/prison{ - dir = 4; - icon_state = "whitegreen" - }, -/area/fiorina/station/medbay) +"yif" = ( +/obj/structure/machinery/disposal, +/turf/open/floor/prison, +/area/fiorina/tumor/aux_engi) "yio" = ( /turf/closed/shuttle/ert, /area/fiorina/tumor/aux_engi) @@ -38804,45 +39709,37 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) -"yiD" = ( -/obj/structure/machinery/vending/cigarette/colony, +"yiL" = ( +/obj/item/trash/cigbutt/bcigbutt, /turf/open/floor/prison{ icon_state = "darkredfull2" }, -/area/fiorina/lz/near_lzI) -"yiG" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, +/area/fiorina/station/security) +"yiR" = ( /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "panelscorched" }, -/area/fiorina/station/disco) -"yjs" = ( -/obj/item/reagent_container/food/snacks/eat_bar, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/area/fiorina/station/civres_blue) +"yiT" = ( +/obj/structure/barricade/sandbags{ + icon_state = "sandbag_0"; + pixel_y = -14 }, -/area/fiorina/station/medbay) -"yjO" = ( -/obj/structure/largecrate/supply/supplies/tables_racks, /turf/open/floor/prison{ + dir = 10; icon_state = "floor_plate" }, -/area/fiorina/tumor/civres) -"yke" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" - }, -/area/fiorina/station/research_cells) -"ykI" = ( -/obj/structure/largecrate/random/barrel/green, +/area/fiorina/lz/near_lzI) +"yjW" = ( +/obj/effect/landmark/corpsespawner/ua_riot, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/medbay) +/area/fiorina/station/security) +"ykw" = ( +/obj/structure/inflatable/popped, +/turf/open/floor/prison, +/area/fiorina/station/transit_hub) "ykO" = ( /obj/structure/ice/thin/indestructible{ icon_state = "Corner" @@ -38850,34 +39747,42 @@ /obj/structure/blocker/invisible_wall, /turf/open/ice/noweed, /area/fiorina/tumor/ice_lab) -"ykT" = ( -/turf/open/floor/prison{ - dir = 8; - icon_state = "darkpurple2" - }, -/area/fiorina/tumor/servers) "ykX" = ( /obj/structure/machinery/constructable_frame{ icon_state = "box_1" }, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz2_maint) -"ylf" = ( -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"yli" = ( +/obj/structure/sign/prop3{ + desc = "Enlist in the Penal Battalions today! The USCM 3rd Fleet features a subset of UA sanctioned penal battalions, drawing from inmate popualtions across the colonies. Mostly New Argentina though." }, -/area/fiorina/tumor/fiberbush) -"yls" = ( -/obj/structure/monorail{ - name = "launch track" +/turf/closed/wall/r_wall/prison_unmeltable, +/area/fiorina/station/central_ring) +"ylr" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 }, -/turf/open/floor/plating/prison, -/area/fiorina/lz/near_lzI) +/turf/open/floor/prison{ + dir = 4; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) "ylu" = ( /obj/item/tool/wrench, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) +"ylW" = ( +/obj/effect/decal/medical_decals{ + icon_state = "cryomid" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "sterile_white" + }, +/area/fiorina/station/medbay) (1,1,1) = {" bQM @@ -40679,12 +41584,12 @@ xHV xHV xHV xHV -ejk -hDx -hDx -hDx -hDx -hDx +lIt +swj +swj +swj +swj +swj sUl qPb qPb @@ -40885,18 +41790,18 @@ xHV xHV dXG dIo -hDx +swj dXG -diP -qmd -xFx -diP -kDO -diP -qty -diP -qty -oOK +gPo +vgw +eWr +gPo +oeT +gPo +eYz +gPo +eYz +iad sUl kVg kbT @@ -41097,18 +42002,18 @@ xHV dXG dXG dIo -hDx +swj dXG -bjx +cFT dXG -oVC -lhQ -kDO -lhQ -qty -lhQ -gcr -lhQ +vXy +uPX +oeT +uPX +eYz +uPX +qny +uPX aEi pRH qPb @@ -41309,18 +42214,18 @@ dIo dIo dXG dIo -wJa +cKb dXG -lhQ +uPX dXG -vAZ -hDx -ejk -hDx -hDx -hDx -hDx -rUL +eRl +swj +lIt +swj +swj +swj +swj +qMs sUl kbT rNc @@ -41521,16 +42426,16 @@ dXG dIo dXG dIo -hDx -hDx +swj +swj qXM -qty -hDx +eYz +swj naW sLx xHV clu -hDx +swj xHV xHV dHd @@ -41540,9 +42445,9 @@ kow tfP tfP tfP -dwk -lso -lso +rXt +wnD +wnD gmT jyM jjM @@ -41552,7 +42457,7 @@ kbT kbT kbT qPb -jTe +uyN tfP xwC xwC @@ -41728,22 +42633,22 @@ xHV xHV xHV xHV -rsz -rsz +nsD +nsD dIo dIo dIo -mtm -hDx +jsp +swj dXG -qty -hDx +eYz +swj naW xHV -omF -lKd -lKd -lKd +xCr +jQy +jQy +jQy xHV naW bQM @@ -41752,9 +42657,9 @@ bQM bQM tfP tfP -pri -lso -lso +ycT +wnD +wnD enH gmT enH @@ -41945,17 +42850,17 @@ dXG clu dXG dXG -hDx -hDx +swj +swj dXG -qty +eYz xHV naW xHV naW -uZD -lKd -wHX +sfn +jQy +bMz naW xHV xHV @@ -41965,8 +42870,8 @@ kPz kPz tfP tfP -tHh -olm +eyi +uPi qPb qPb qPb @@ -41988,11 +42893,11 @@ xwC jhG nTq gUj -xrT +tbd uXD -fSY +mYG uXD -xrT +tbd jhG kIo msn @@ -42158,18 +43063,18 @@ clu dXG dXG uVZ -hDx +swj dXG -qty +eYz xHV xHV -siR -omF -lKd +mlU +xCr +jQy lLe -lKd -lKd -pCN +jQy +jQy +dyY xHV bQM bQM @@ -42199,18 +43104,18 @@ xwC xwC xwC xwC -eOo -xrT +gBx +tbd kNN -fSY +mYG uXD -xrT -eOo +tbd +gBx cTr kbT kbT kbT -eOo +gBx xwC xwC xwC @@ -42361,7 +43266,7 @@ xHV xHV xHV xHV -hDx +swj dXG dXG dXG @@ -42370,16 +43275,16 @@ dIo dIo dIo dXG -hDx +swj lLe -qty +eYz xHV xHV naW naW -lKd +jQy lLe -lKd +jQy naW xHV xHV @@ -42410,12 +43315,12 @@ xwC qPb dnK qPb -lso -lso +wnD +wnD hLM -gdn +uQk tfP -gdn +uQk hLM pBq kbT @@ -42574,25 +43479,25 @@ xHV xHV xHV xHV -qty +eYz clu clu dIo xHV xHV -diP -qty -diP -qty +gPo +eYz +gPo +eYz dXG -hDx +swj dXG -pVw -pVw -lKd -lKd -lKd -pRn +bFL +bFL +jQy +jQy +jQy +ihn xHV xHV xHV @@ -42618,19 +43523,19 @@ qPb kbT kbT qPb -tQn -lso -lso -lso +ieJ +wnD +wnD +wnD qPb qPb kbT kbT kbT -lso -lso +wnD +wnD kbT -lso +wnD kbT kbT kbT @@ -42784,25 +43689,25 @@ xHV xHV xHV dIo -hDx -hDx +swj +swj dXG clu dXG dIo xHV -qty -lhQ -qty -lhQ -qty -qty -hDx +eYz +uPX +eYz +uPX +eYz +eYz +swj dXG -lKd -lKd -lKd -lKd +jQy +jQy +jQy +jQy xHV xHV xHV @@ -42827,13 +43732,13 @@ xwC gwH gwH qPb -lso +wnD kbT kbT -tQn -lso -lso -lso +ieJ +wnD +wnD +wnD qPb qPb qPb @@ -42996,20 +43901,20 @@ xHV xHV xHV dIo -qty -qty -qty +eYz +eYz +eYz dIo dXG -rsz -hDx +nsD +swj whu whu whu -hDx -qty -qty -xSg +swj +eYz +eYz +qss naW naW naW @@ -43208,26 +44113,26 @@ xHV xHV xHV dIo -wJa -hDx -hDx +cKb +swj +swj pwL oKq -hDx -diP -qty -diP -qty -diP -qty -qty -hDx +swj +gPo +eYz +gPo +eYz +gPo +eYz +eYz +swj naW xHV xHV -lKd -coh -nvz +jQy +ifc +oyo xHV xHV bQM @@ -43257,19 +44162,19 @@ kbT ogM kbT kbT -lso +wnD qPb qPb -lso +wnD kbT kbT -lso -lso +wnD +wnD kbT wbp qPb qPb -eOo +gBx kbT kbT kbT @@ -43416,30 +44321,30 @@ xHV xHV dXG xHV -qty +eYz xHV xHV dIo -qty -qty -qty +eYz +eYz +eYz dXG dXG -hDx -lhQ -qty -lhQ -qty -lhQ +swj +uPX +eYz +uPX +eYz +uPX dXG -qty -hDx +eYz +swj xHV xHV xHV -pRn -lKd -lKd +ihn +jQy +jQy naW naW xHV @@ -43463,20 +44368,20 @@ bQM xwC xwC xwC -gzz +wDJ qPb kbT ogM kbT kbT -lso +wnD qPb qPb -lso -eOo +wnD +gBx xwC xwC -lso +wnD xwC qPb qPb @@ -43501,9 +44406,9 @@ lHx lHx jlk jlk -sAv -pYW -sAv +tDC +hvL +tDC jlk baC baC @@ -43627,33 +44532,33 @@ xHV xHV xHV lLe -hDx -qty +swj +eYz xHV xHV dIo -hDx -hDx -hDx +swj +swj +swj dXG dXG dXG -hDx +swj xHV dIo xHV -hDx +swj dXG -qty +eYz xHV naW naW naW -ecF +uXY jSD -lKd -fDo -pCN +jQy +rjy +dyY xHV xHV kPz @@ -43678,8 +44583,8 @@ xwC xwC uXn qPb -tQn -lso +ieJ +wnD kbT kbT qPb @@ -43691,7 +44596,7 @@ xwC xwC xwC xwt -jOt +wVc qPb wfV qPb @@ -43708,14 +44613,14 @@ jlk jlk vZV vZV -syF -kZQ -nyy +mkI +lCl +uTR jlk jlk -qDG -sJT -qDG +hAI +hvL +hAI jlk jlk rZP @@ -43837,16 +44742,16 @@ tYw tYw tYw dIo -qty -qty -qty +eYz +eYz +eYz dXG -qty -qty -hDx -qty -qty -qty +eYz +eYz +swj +eYz +eYz +eYz dXG dXG xHV @@ -43854,16 +44759,16 @@ xHV xHV xHV xHV -hDx -qty -qty +swj +eYz +eYz xHV naW -mAG -omF -lKd +lWn +xCr +jQy jSD -gkd +sdE naW xHV xHV @@ -43874,12 +44779,12 @@ bQM tfP tfP tfP -eOo +gBx qPb qPb qPb qPb -eOo +gBx gwH gwH xwC @@ -43892,8 +44797,8 @@ gwH gwH xwC qPb -lso -lso +wnD +wnD kbT qPb xwC @@ -43903,33 +44808,33 @@ tfP tfP tfP xwt -mtr +lrI qPb -eOo +gBx kbT kbT -lso -lso -lso -lso -jTe +wnD +wnD +wnD +wnD +uyN xwC -fVA -gUf -gHb +cJY +qxP +uDX jlk vZV jmp -aKW +svP cyb -qDG +hAI jlk -uZr -aKW -sJT -aKW -qDG -sAv +lLS +svP +hvL +svP +hAI +tDC lHx bQM bQM @@ -44049,16 +44954,16 @@ tYw xHV xHV dIo -wJa +cKb lLe dXG -qty +eYz lLe dXG dXG -hDx -hDx -hDx +swj +swj +swj xHV xHV xHV @@ -44066,17 +44971,17 @@ xHV xHV xHV xHV -hDx +swj dXG -qty +eYz xHV naW naW naW -uZD -lKd -lKd -wAl +sfn +jQy +jQy +lFV xHV kPz kPz @@ -44117,31 +45022,31 @@ tfP xwt xwC qPb -lso -lso +wnD +wnD qPb qPb -lso +wnD kbT kbT kbT -tQn -sVP -gCX -bZF +ieJ +uzG +nMm +sia rGq -hjP -euT +taj +lzq rGq fAt -hjP +taj knh -sJT -sJT -sJT -wgH -sJT -sJT +hvL +hvL +hvL +uzi +hvL +hvL lHx bQM bQM @@ -44261,10 +45166,10 @@ tYw xHV xHV dIo -mLB -hDx +rAU +swj dXG -qty +eYz dXG dXG dXG @@ -44280,14 +45185,14 @@ xHV doD doD doD -qty +eYz xHV naW -mAG -omF -lKd -lKd -lKd +lWn +xCr +jQy +jQy +jQy xHV naW bQM @@ -44328,32 +45233,32 @@ gwH tfP dwQ dwQ -lso +wnD dwQ dwQ -lso +wnD dwQ dwQ kbT dwQ dwQ ogM -sVP +uzG lyf -aKW +svP rOI -hjP -hjP -hjP -hjP -hjP +taj +taj +taj +taj +taj knh -aKW -aKW -sJT -aKW -qDG -pxu +svP +svP +hvL +svP +hAI +myK lHx bQM bQM @@ -44474,32 +45379,32 @@ xHV xHV dIo dIo -mLB -hDx -qty -hDx -hDx +rAU +swj +eYz +swj +swj dXG -xvR -qty -qty +oev +eYz +eYz dIo -rsz +nsD qgB qoG dIo dXG dXG dXG -qty +eYz ame -hDx +swj naW naW xHV -hDx +swj dXG -hDx +swj xHV dHd kow @@ -44510,15 +45415,15 @@ gwH tfP gwH gwH -eOo +gBx qPb rNc qPb qPb -eOo +gBx qPb qPb -eOo +gBx gwH tfP kow @@ -44538,34 +45443,34 @@ ycK qPb qPb qPb -lso -lso +wnD +wnD qPb -lso -lso -lso +wnD +wnD +wnD uXn -lso -lso -lso -lso +wnD +wnD +wnD +wnD ogM -sVP -gCX +uzG +nMm uNM -hjP +taj rGq -mbc -aFn +lSb +vbV jlk -hjP +taj knh rGq -aKW -sJT -aKW -hjP -oVn +svP +hvL +svP +taj +nvK rZP bQM baC @@ -44691,37 +45596,37 @@ dIo dIo xHV xHV -hDx +swj dXG -hDx -hDx +swj +swj dIo dIo xHV avY dIo dXG -rsz +nsD dXG -diP -xFx -hDx -sRg -hDx -hDx -hDx -hDx -hDx -hDx +gPo +eWr +swj +ftb +swj +swj +swj +swj +swj +swj sUl qPb dnK dnK qPb gwH -eOo +gBx gwH -eOo +gBx xzs qPb qPb @@ -44750,10 +45655,10 @@ qPb fpB kbT kbT -lso -kIF -lso -lso +wnD +lZo +wnD +wnD xwC xwC xwC @@ -44762,8 +45667,8 @@ ogM ogM ogM xwC -sVP -gCX +uzG +nMm uNM yhu yhu @@ -44773,10 +45678,10 @@ uNM jlk jlk rZP -xVD -sJT -aKW -hjP +ble +hvL +svP +taj dpH jlk baC @@ -44904,10 +45809,10 @@ xHV xHV xHV dIo -qty -qty -qty -rsz +eYz +eYz +eYz +nsD xHV xHV xHV @@ -44915,16 +45820,16 @@ xHV dXG dXG dXG -bjx -tQq -xFx -diP -qty -diP -qty -diP -qty -diP +cFT +xPk +eWr +gPo +eYz +gPo +eYz +gPo +eYz +gPo sUl qPb qPb @@ -44936,7 +45841,7 @@ qPb qPb qPb qPb -qPb +tsH kbT qPb qPb @@ -44970,26 +45875,26 @@ xwC xwC xwC xwC -lso -lso -lso +wnD +wnD +wnD ogM -sVP -piL -peY -peY -peY -peY -peY -peY +uzG +dMt +wsz +wsz +wsz +wsz +wsz +wsz jlk jlk rZP -xVD -sJT -aKW -hjP -hlq +ble +hvL +svP +taj +hNU jlk baC baC @@ -45116,9 +46021,9 @@ xHV xHV xHV dIo -hDx -hDx -hDx +swj +swj +swj dXG xHV xHV @@ -45127,16 +46032,16 @@ xHV xHV xHV xHV -lhQ -fpp -oVC -lhQ -qty -lhQ -qty -lhQ -qty -lhQ +uPX +ntc +vXy +uPX +eYz +uPX +eYz +uPX +eYz +uPX sUl qPb qPb @@ -45186,21 +46091,21 @@ kbT kbT kbT ogM -jVH -bEn +oHm +mLY qbd -bEn -bEn -bEn -bEn -bEn -ycn -gCX +mLY +mLY +mLY +mLY +mLY +bZD +nMm rZP -xVD -sJT -aKW -hjP +ble +hvL +svP +taj dxE jlk baC @@ -45311,9 +46216,9 @@ xHV xHV xHV dXG -pty -hDx -pty +xGi +swj +xGi xHV xHV xHV @@ -45330,7 +46235,7 @@ xHV dIo dXG qXM -hDx +swj xHV gCE xHV @@ -45339,16 +46244,16 @@ xHV xHV xHV xHV -bby +sIC dXG qXM -hDx -qty -qty -qty -hDx -hDx -hDx +swj +eYz +eYz +eYz +swj +swj +swj sUl qPb cwB @@ -45391,27 +46296,27 @@ xwC xwC xwC xwC -jTe +uyN qPb qPb kbT kbT qPb jCA -aKW +svP fpn fpn -aKW +svP fpn fpn -aKW +svP lyf -sVP -stX +uzG +ddY rZP jlk -sJT -aKW +hvL +svP bfF rGq rZP @@ -45522,10 +46427,10 @@ xHV xHV xHV xHV -rsz -fBP -hDx -fBP +nsD +rqC +swj +rqC xHV xHV xHV @@ -45542,25 +46447,25 @@ xHV dIo dXG dXG -hDx +swj xHV xHV xHV xHV xHV dXG -hDx -hDx -bby +swj +swj +sIC dXG dXG -hDx -qty +swj +eYz xHV xHV xHV xHV -hDx +swj dHd kow kow @@ -45568,8 +46473,8 @@ kow tfP tfP tfP -ylf -ylf +sig +sig qPb qPb qPb @@ -45578,7 +46483,7 @@ qPb qPb xzs gwH -eOo +gBx tfP tfP kow @@ -45604,7 +46509,7 @@ xwC qPb qPb qPb -lso +wnD qPb kbT kbT @@ -45617,13 +46522,13 @@ jlk jlk jlk jlk -aKW -sVP -gCX +svP +uzG +nMm rZP jlk jlk -aKW +svP bfF rGq rZP @@ -45730,14 +46635,14 @@ xHV xHV xHV xHV -qty -qty -qty -qty -hDx -pty -hDx -fBP +eYz +eYz +eYz +eYz +swj +xGi +swj +rqC xHV xHV xHV @@ -45751,10 +46656,10 @@ dIo dIo dIo dIo -hDx +swj dXG -qty -hDx +eYz +swj xHV xHV xHV @@ -45766,9 +46671,9 @@ dXG dXG dXG dXG -hDx -qty -lsf +swj +eYz +stC xHV xHV xHV @@ -45781,13 +46686,13 @@ bQM tfP tfP kPY -cnU +jkw rNc qPb qPb qPb qPb -eOo +gBx gwH gwH gwH @@ -45814,11 +46719,11 @@ gwH xwC qPb qPb -lso +wnD kbT kbT kbT -lso +wnD kbT gwH gwH @@ -45829,13 +46734,13 @@ rZP rZP jlk jlk -bMd -hIo -iDE +mJc +jFz +aik rZP jlk jlk -aKW +svP bfF rGq lHx @@ -45941,46 +46846,46 @@ jXz xHV xHV xHV -qty -hDx -hDx -hDx -qty +eYz +swj +swj +swj +eYz dXG -fBP +rqC dXG -fBP -rsz -hDx -hDx +rqC +nsD +swj +swj nIc cmP dIo xHV xHV xHV -hDx -hDx -hDx -hDx -hDx +swj +swj +swj +swj +swj dXG dXG -hDx +swj xHV xHV xHV xHV dXG dXG -hDx -bby -bby -hDx +swj +sIC +sIC +swj dXG -hDx -qty -qty +swj +eYz +eYz xHV xHV xHV @@ -45993,7 +46898,7 @@ bQM bQM tfP kPY -ylf +sig xzs qPb qPb @@ -46025,12 +46930,12 @@ qPb gwH gwH qPb -lso +wnD kbT kbT kbT kbT -lmV +qJr qPb gwH gwH @@ -46041,9 +46946,9 @@ xKj jlk jlk jlk -aKW -sVP -gCX +svP +uzG +nMm rZP jlk jlk @@ -46144,56 +47049,56 @@ agi aWV agi jXz -ezr -gks +tbG +ach jXz -vjH -ezr +peA +tbG jXz -kPe +cPs xHV xHV -nIn -hDx -hDx -hDx -qty +pXt +swj +swj +swj +eYz dXG -fBP +rqC dXG dXG dXG dXG vwt -xCo +bxE yis dIo -hDx -hDx -hDx -qty -qty +swj +swj +swj +eYz +eYz dXG -qty -qty -qty -qty +eYz +eYz +eYz +eYz dXG xHV xHV xHV -rsz +nsD dXG dXG dXG xHV -rsz +nsD xHV -rsz -hDx -qty -qty -qty +nsD +swj +eYz +eYz +eYz xHV xHV xHV @@ -46206,12 +47111,12 @@ xHV tfP tfP kPY -bxW -gFe -gFe -gFe -gFe -bxW +mnr +hSG +hSG +hSG +hSG +mnr uNM uNM rZP @@ -46235,8 +47140,8 @@ kPY kbT kbT kbT -lso -lso +wnD +wnD kbT kbT kbT @@ -46251,11 +47156,11 @@ xKj jlk xKj rGq -jhi +kXs rGq -aKW -sVP -stX +svP +uzG +ddY rZP jlk jlk @@ -46356,33 +47261,33 @@ agi agi agi jXz -eOH -gks +oiF +ach jXz -hng -jnr +dyh +gve jXz -kPe +cPs xHV xHV -qty -hDx -hDx -hDx -qty +eYz +swj +swj +swj +eYz dXG lLe dXG dXG dXG dXG -hDx +swj lbt dXG -rsz +nsD dXG dXG -qty +eYz dXG qXM dXG @@ -46391,10 +47296,10 @@ dXG dXG dXG lLe -qty -hDx +eYz +swj xHV -hDx +swj dXG lLe dXG @@ -46402,11 +47307,11 @@ clu dXG clu dXG -hDx -xvR -qty -qty -hCT +swj +oev +eYz +eYz +rki xHV xHV pqC @@ -46419,36 +47324,36 @@ dIo uNM uNM uNM -sJT -sJT -sJT -sJT +hvL +hvL +hvL +hvL uNM uNM uNM uNM -hjP -hjP -hjP -hjP -hjP -hjP -hjP -hjP -rth -hjP -mrn -qzy -qzy -qzy -qzy -mrn +taj +taj +taj +taj +taj +taj +taj +taj +pLj +taj +iQJ +tZk +tZk +tZk +tZk +iQJ uNM -lmV +qJr kbT -lmV +qJr kbT -lso +wnD kbT kbT qPb @@ -46465,12 +47370,12 @@ xKj rGq rGq bDU -aKW -yaU -gCX +svP +mYy +nMm rZP jlk -jhi +kXs rGq osX rGq @@ -46569,24 +47474,24 @@ agi agi jXz jXz -gKu +jPY jXz -gKu +jPY jXz jXz -fGb +jHz xHV xHV -qty -qty -qty -qty +eYz +eYz +eYz +eYz dXG -hDx -fBP -hDx -fBP -rsz +swj +rqC +swj +rqC +nsD dXG dXG lbt @@ -46596,30 +47501,30 @@ dXG dXG dXG dXG -mLB -hDx -qty -hDx +rAU +swj +eYz +swj dXG eHD dXG dXG dXG -qty -bby +eYz +sIC qXM dXG dXG xHV dXG xHV -rsz -hDx -qty -qty -qty -hDx -hCT +nsD +swj +eYz +eYz +eYz +swj +rki xHV naW naW @@ -46631,15 +47536,15 @@ xHV jlk uNM uNM -sVP +uzG rGq rOI -piL -peY -peY -ppO -peY -gUf +dMt +wsz +wsz +iRn +wsz +qxP rGq rGq rGq @@ -46649,12 +47554,12 @@ rZP xKj xKj xKj -aKW -aKW -aKW -aKW -aKW -aKW +svP +svP +svP +svP +svP +svP jlk tfP kbT @@ -46677,9 +47582,9 @@ xKj rGq rGq rGq -aKW -sVP -gCX +svP +uzG +nMm jlk jlk rGq @@ -46773,31 +47678,31 @@ agi aWV agi agi -lwK +lvD agi agi agi agi mjx -eda -eQR -efz -eQR -efz -eQR -eda -eQR -efz +dDT +pjg +gir +pjg +gir +pjg +dDT +pjg +gir dXG -hDx -hDx -hDx +swj +swj +swj dXG xHV -hDx -fBP -hDx -fBP +swj +rqC +swj +rqC dXG wKE dXG @@ -46806,33 +47711,33 @@ dXG dXG dXG dXG -hDx -mLB +swj +rAU dIo -fBP -fBP +rqC +rqC dIo dIo dIo obI -wlz +dxP dXG -qty +eYz dXG dXG -bby -hDx -rsz +sIC +swj +nsD dXG dXG dXG -hDx -qty -qty -qty -hDx -hDx -hDx +swj +eYz +eYz +eYz +swj +swj +swj xHV xHV xHV @@ -46843,30 +47748,30 @@ xHV jlk uNM uNM -sVP +uzG fpn fpn -hjP +taj fpn -hjP +taj fpn fpn -gCX -gHb +nMm +uDX rGq rGq -aKW -aKW -aKW -jEf +svP +svP +svP +jWg jlk -jEf -aKW -aKW -aKW -aKW -gHb -aKW +jWg +svP +svP +svP +svP +uDX +svP jlk jlk jlk @@ -46889,9 +47794,9 @@ xKj rGq rGq gJu -joy -fBg -gCX +heA +tmI +nMm rGq knh rGq @@ -46985,21 +47890,21 @@ agi agi agi agi -cBU -wNw -ykT -uhd +rbv +aeb +otg +dLL hoZ mjx -efz -fLq -efz -fLq -efz -fLq -efz -fLq -efz +gir +mDn +gir +mDn +gir +mDn +gir +mDn +gir dXG dXG dXG @@ -47007,9 +47912,9 @@ dXG xHV xHV xHV -fBP -hDx -fBP +rqC +swj +rqC dXG dXG dXG @@ -47019,34 +47924,34 @@ lLe dXG dXG dXG -qty -fBP -fBP -aae +eYz +rqC +rqC +iYJ dIo -aat -fBP +kKt +rqC dCu -qty +eYz dXG dXG dXG dXG -bby +sIC dIo dIo -rsz +nsD dIo dIo -hDx -qty -qty -qty -diP -qty -diP -nsg -xFx +swj +eYz +eYz +eYz +gPo +eYz +gPo +byJ +eWr xHV dIo naW @@ -47055,32 +47960,32 @@ xHV jlk uNM uNM -jVH -bEn -gPO -bEn -bEn -bEn -bEn -ycn -gCX -aKW -aKW -aKW -aKW -aKW -aKW -jEf -jEf -jDj -awF -xHY -awF -sJT -aKW -aKW -aKW -aKW +oHm +mLY +arG +mLY +mLY +mLY +mLY +bZD +nMm +svP +svP +svP +svP +svP +svP +jWg +jWg +dZj +tcB +xtm +tcB +hvL +svP +svP +svP +svP jlk rGq rGq @@ -47101,15 +48006,15 @@ rGq rGq rGq jFl -aKW -xgr -gCX +svP +fAr +nMm rGq knh -hjP +taj pWO tuk -rGq +wky jlk baC baC @@ -47197,74 +48102,74 @@ agi agi agi hoZ -dpE -uTX -dPC -nBV -lwK -fGb -ege +igc +jnU +nUS +oiV +lvD +jHz +gNJ mjx mjx -ege +gNJ mjx mjx -ege +gNJ mjx mjx -mLB -hDx -hDx -hDx +rAU +swj +swj +swj xHV xHV xHV -jDX -hDx -fBP -rsz -hDx -hDx -xCo +hgh +swj +rqC +nsD +swj +swj +bxE dXG dXG dXG dXG -qty +eYz lLe -fBP -vIF -pyW +rqC +nKo +jri dIo -tML -iQu +fCF +wfo dIo -hDx -qty +swj +eYz dXG -hDx -hDx +swj +swj xHV dIo -iHn -fqZ -hoY +vzT +rPd +vlN dIo -qWB -qty -qty -qty -lhQ -qty -lhQ -tzj -lvs -hDx +iNk +eYz +eYz +eYz +uPX +eYz +uPX +sze +lgH +swj dIo naW xHV xHV -geU +iaE amF amF amF @@ -47273,26 +48178,26 @@ amF amF amF amF -geU -sVP -gCX -gHb -aKW -gHb -aKW -aKW -gHb -jEf +iaE +uzG +nMm +uDX +svP +uDX +svP +svP +uDX +jWg jlk -jDj -qnq -peY -qQf -sJT -gHb -aKW -gHb -aKW +dZj +wjC +wsz +tzW +hvL +uDX +svP +uDX +svP rGq rGq rGq @@ -47308,15 +48213,15 @@ rZP jlk jlk rGq -kgP +nYE rGq rGq rGq gJu -joy -fBg -gCX -aKW +heA +tmI +nMm +svP knh rGq hlT @@ -47409,40 +48314,40 @@ agi agi agi hoZ -cBU -vco -wVK -uFX -lwK +rbv +jCe +hrw +ddN +lvD mjx -efz -eQR -efz -eQR -efz -eQR -efz -eQR -efz +gir +pjg +gir +pjg +gir +pjg +gir +pjg +gir doD doD doD xHV xHV -fBP -fBP -fBP -hDx -fBP -hDx +rqC +rqC +rqC +swj +rqC +swj xHV xHV nIc dXG -rsz +nsD dXG dXG -qty +eYz nib dIo dIo @@ -47451,32 +48356,32 @@ dIo dIo dIo dIo -cua -qty +bbU +eYz dXG -hDx +swj xHV xHV dIo -xfA -fBP -uIu +ojW +rqC +eGO dIo dIo dIo dIo dIo dIo -hDx -hDx -lhQ -oVC -nsg -nsg -nsg -xFx -xHV -geU +swj +swj +uPX +vXy +byJ +byJ +byJ +eWr +xHV +iaE amF fjX jXZ @@ -47485,28 +48390,28 @@ jXZ jXZ lZf amF -geU -sVP -gCX -sJT -sJT -sJT -sJT -sJT -sJT -jDj -jDj -jDj -fBg -ePx -lYc -sJT -sJT -sJT -aKW -aKW +iaE +uzG +nMm +hvL +hvL +hvL +hvL +hvL +hvL +dZj +dZj +dZj +tmI +pnx +mSZ +hvL +hvL +hvL +svP +svP rGq -hjP +taj rGq rGq knh @@ -47514,21 +48419,21 @@ bfF rGq rGq rGq -aKW +svP jlk rZP daK rGq rGq -aKW +svP rGq rGq rGq wcP -aKW -sVP -gCX -aKW +svP +uzG +nMm +svP jlk jlk rZP @@ -47621,30 +48526,30 @@ agi agi agi hoZ -lwK -lwK -lwK -dCl -lwK +lvD +lvD +lvD +dSM +lvD mjx -egY -fLq -efz -fLq -efz -fLq -kur -fLq -efz +qph +mDn +gir +mDn +gir +mDn +iZm +mDn +gir hoZ -fGb -hDx +jHz +swj xHV xHV -hDx -hDx -hDx -hDx +swj +swj +swj +swj xHV xHV xHV @@ -47654,25 +48559,25 @@ cmP dIo dXG dXG -qty -qty +eYz +eYz dCu -fBP -eaL +rqC +wgs dIo -gol -fBP +tle +rqC dCu -qty +eYz dXG dXG dXG dXG dXG dXG -fBP -aZU -hDx +rqC +hbn +swj dIo xHV xHV @@ -47680,14 +48585,14 @@ xHV xHV dIo dIo -hSF -qty -qty -hDx +qoc +eYz +eYz +swj whu -tLT -lvs -xoQ +srt +lgH +pIw amF amF hiO @@ -47698,25 +48603,25 @@ kZS hiO amF amF -vNx -piL -peY -peY -peY -peY -peY -peY -peY -peY -peY -oiR -hjP -gCX -peY -gUf -sJT -aKW -aKW +uZu +dMt +wsz +wsz +wsz +wsz +wsz +wsz +wsz +wsz +wsz +tnw +taj +nMm +wsz +qxP +hvL +svP +svP rGq rGq rGq @@ -47726,21 +48631,21 @@ bfF rGq rGq rGq -aKW +svP rZP rZP rGq rGq rGq -aKW -aKW +svP +svP fpn fpn -mcG -aKW -sVP -gCX -aKW +ace +svP +uzG +nMm +svP jlk jlk rZP @@ -47831,32 +48736,32 @@ agi agi agi agi -gEF +nub pCX -lwK -wNw -ykT -uhd -lwK +lvD +aeb +otg +dLL +lvD jXz jXz -gEF +nub gLv jXz -gKu +jPY jXz jXz -liX +aDc hoZ -njx -fGb -bby +lLQ +jHz +sIC xHV -fBP -hDx -fBP -fBP -fBP +rqC +swj +rqC +rqC +rqC xHV xHV xHV @@ -47864,27 +48769,27 @@ xHV nIc yis dIo -fuF +ody dXG dXG dXG dIo -fBP -gaZ +rqC +uWA dIo -mAB -hLt +bbp +iQj dIo -mii -hDx -qty +kVW +swj +eYz dXG -hDx +swj xHV dIo -uPg -ctJ -hDx +qBS +sHL +swj dIo dXG dXG @@ -47892,14 +48797,14 @@ xHV xHV xHV dIo -hSF -diP -xFx -hDx -hDx -nEs -oVC -hDx +qoc +gPo +eWr +swj +swj +ifm +vXy +swj pyK sXi pyK @@ -47910,25 +48815,25 @@ rGq pyK sXi pyK -sVP -hjP +uzG +taj fpn fpn -hjP +taj fpn fpn -hjP +taj fpn fpn -hjP -qUp -hjP -gCX -ruE -gCX -sJT -aKW -aKW +taj +ajZ +taj +nMm +nOy +nMm +hvL +svP +svP rGq rGq jlk @@ -47938,21 +48843,21 @@ vsT rGq rGq rGq -aKW -mhW -yaC +svP +hlk +xiO rGq bDU rGq -peY -peY -peY -peY -qzW -nqs -crH -gCX -aKW +wsz +wsz +wsz +wsz +cBG +sVW +hgD +nMm +svP okT jlk rZP @@ -48045,28 +48950,28 @@ aWV hoZ hoZ hoZ -dBY -uTX -dPC -nBV -lwK -fGb +kCS +jnU +nUS +oiV +lvD +jHz erl hoZ hoZ jXz -gks +ach agi jXz agi -njx -njx -fGb -hDx +lLQ +lLQ +jHz +swj xHV -fBP -hDx -fBP +rqC +swj +rqC dIo dIo dIo @@ -48076,10 +48981,10 @@ xHV nIc dIo dIo -hSF +qoc dXG dXG -wlz +dxP dIo dIo dIo @@ -48087,16 +48992,16 @@ dIo dIo dIo dIo -xEE +cbE dXG -qty +eYz dXG -hDx +swj xHV dIo -mLB -hgz -yjO +rAU +tCv +teI dIo xHV mfe @@ -48104,14 +49009,14 @@ xHV xHV xHV dIo -hSF -qty -qty -fpp -fpp -oVC -qty -qty +qoc +eYz +eYz +ntc +ntc +vXy +eYz +eYz sXi fpn sXi @@ -48122,25 +49027,25 @@ rGq sXi fpn sXi -sVP -hxC -bEn -bEn -bEn -bEn -bEn -bEn -bEn -bEn -bEn -sVP -hjP -gCX -bEn -lwG -sJT -aKW -aKW +uzG +ugk +mLY +mLY +mLY +mLY +mLY +mLY +mLY +mLY +mLY +uzG +taj +nMm +mLY +aJv +hvL +svP +svP rGq rGq knh @@ -48151,20 +49056,20 @@ oDe rGq rGq rGq -aKW -sJT +svP +hvL rGq rGq rGq -bEn -bEn -bEn -bEn -ftY -nIq -uNX -lwG -aKW +mLY +mLY +mLY +mLY +oIE +uaM +hzL +aJv +svP rGq jlk rZP @@ -48255,14 +49160,14 @@ bQM bQM aWV cVQ -gEF +nub hoZ -lwK -vco -wVK -uFX -lwK -fGb +lvD +jCe +hrw +ddN +lvD +jHz hoZ hoZ agi @@ -48271,14 +49176,14 @@ agi agi agi agi -njx -njx -fGb -fGb -fGb -fBP -hDx -fBP +lLQ +lLQ +jHz +jHz +jHz +rqC +swj +rqC dIo tYw tYw @@ -48288,9 +49193,9 @@ xHV qgi xHV xHV -gGG +fBr dXG -qty +eYz dXG xHV xHV @@ -48301,10 +49206,10 @@ dXG dXG dXG egL -qty +eYz qXM dXG -hDx +swj dIo dIo dXG @@ -48316,14 +49221,14 @@ xHV xHV dIo dIo -hSF -diP -xFx -igA -nsg -xFx -qty -qty +qoc +gPo +eWr +vdJ +byJ +eWr +eYz +eYz sXi fpn sXi @@ -48334,26 +49239,26 @@ rGq sXi fpn sXi -sVP -gCX -sJT -sJT -sJT -sJT -sJT -sJT -sJT -sJT -sJT -fBg -ePx -lYc -sJT -sJT -sJT -aKW +uzG +nMm +hvL +hvL +hvL +hvL +hvL +hvL +hvL +hvL +hvL +tmI +pnx +mSZ +hvL +hvL +hvL +svP rGq -hjP +taj boe jlk rGq @@ -48363,20 +49268,20 @@ rGq rGq rGq rGq -aKW -sJT +svP +hvL rGq rGq rGq -aKW +svP rZP -aKW -aKW -ezb -xgr -lYc -aKW -aKW +svP +svP +jtM +fAr +mSZ +svP +svP rGq jlk rZP @@ -48469,11 +49374,11 @@ aWV pCX hoZ hoZ -dCl -lwK -dQA -lwK -lwK +dSM +lvD +hbt +lvD +lvD hoZ hoZ hoZ @@ -48484,13 +49389,13 @@ gQK agi aWV aWV -fGb +jHz hoZ hoZ hoZ -fBP -hDx -fBP +rqC +swj +rqC dIo tYw tYw @@ -48500,42 +49405,42 @@ xHV qgi xHV xHV -gGG +fBr dXG -qty +eYz dXG -hDx +swj xHV -hDx -qty -qty -qty -qty +swj +eYz +eYz +eYz +eYz dXG dXG dXG dXG -qty -hDx +eYz +swj dXG -hDx -qty -mLB +swj +eYz +rAU dIo dIo dIo dIo dIo dIo -hDx -rMg -qty -qty -hDx +swj +dUf +eYz +eYz +swj whu -tQq -xFx -hDx +xPk +eWr +swj sXi sXi sXi @@ -48546,24 +49451,24 @@ rGq sXi sXi sXi -sVP -gCX -gHb -aKW -gHb -aKW -aKW -gHb -aKW -gHb -sJT -xgr -gjX -uZM -sJT -gHb -aKW -gHb +uzG +nMm +uDX +svP +uDX +svP +svP +uDX +svP +uDX +hvL +fAr +rsU +lIA +hvL +uDX +svP +uDX rGq rGq jlk @@ -48574,20 +49479,20 @@ knh knh jlk jlk -aKW -aKW -sJT +svP +svP +hvL rGq rGq rGq -jmy +htD rZP jDR rGq -aKW -sVP -gCX -aKW +svP +uzG +nMm +svP rGq rGq rGq @@ -48679,13 +49584,13 @@ bQM bQM aWV hoZ -gEF +nub hoZ -lwK -wNw -ykT -uhd -lwK +lvD +aeb +otg +dLL +lvD jXz oED hoZ @@ -48695,14 +49600,14 @@ agi gQK agi agi -njx -fGb +lLQ +jHz hoZ pCX hoZ -fBP -dsv -fBP +rqC +bdE +rqC dIo dIo dIo @@ -48715,39 +49620,39 @@ xHV xHV dXG dXG -qty +eYz dXG -qty +eYz dXG dXG lLe dXG dXG -muB -qty -qty -qty -qty +vLX +eYz +eYz +eYz +eYz dXG dXG dXG -qty -hDx -vFQ -hDx +eYz +swj +qdC +swj whu -hDx +swj whu -hDx -rMg -hDx -diP -tIK -hDx -hDx -hDx -lvs -xoQ +swj +dUf +swj +gPo +vUF +swj +swj +swj +lgH +pIw amF amF hiO @@ -48758,23 +49663,23 @@ nPA hiO amF amF -vNx -gCX -aKW -xrJ -aKW -aKW -aKW -aKW -aKW -aKW -sJT -fBg -ePx -lYc -sJT -aKW -aKW +uZu +nMm +svP +fAS +svP +svP +svP +svP +svP +svP +hvL +tmI +pnx +mSZ +hvL +svP +svP rGq rGq jlk @@ -48784,22 +49689,22 @@ jlk bfF rGq rGq -jEG +mMk rZP rZP -qNm -myg -aKW -aKW -gvT -eev +msF +sMX +svP +svP +dZo +dae rZP rGq rGq -aKW -sVP -gCX -aKW +svP +uzG +nMm +svP rGq oyd rGq @@ -48893,31 +49798,31 @@ aWV cVQ hoZ pCX -lwK -uTX -dPC -nBV -lwK +lvD +jnU +nUS +oiV +lvD jXz hoZ -fGb -gEF +jHz +nub gVx hro jor jXz hoZ -njx -fGb +lLQ +jHz oED hoZ hoZ -fBP -hDx -fBP -fBP -fBP -fBP +rqC +swj +rqC +rqC +rqC +rqC pqC bQM bQM @@ -48925,8 +49830,8 @@ bQM pqC xHV xHV -hDx -hDx +swj +swj dXG dXG dXG @@ -48938,29 +49843,29 @@ dXG dXG dXG xHV -qty -qty -diP -qty -diP -qty -diP -qty -diP -qty -diP -qty -diP -qty -diP -hcb -lvs -diP -foZ -xFx -rNF -hDx -taX +eYz +eYz +gPo +eYz +gPo +eYz +gPo +eYz +gPo +eYz +gPo +eYz +gPo +eYz +gPo +bhW +lgH +gPo +cPC +eWr +oJY +swj +wLT amF aXn jXZ @@ -48969,22 +49874,22 @@ jXZ jXZ qCW amF -geU -jVH -lwG -aKW -aKW -oem -aKW -aKW -aKW -aKW -gHb -sJT -sVP -hjP -gCX -sJT +iaE +oHm +aJv +svP +svP +dVR +svP +svP +svP +svP +uDX +hvL +uzG +taj +nMm +hvL uNM yhu uNM @@ -48992,11 +49897,11 @@ jlk jlk jlk jlk -uwI +uEY kpp rGq rGq -nUF +snW rZP rZP rZP @@ -49009,8 +49914,8 @@ rZP rGq rGq rGq -sVP -gCX +uzG +nMm rGq lzJ lzJ @@ -49103,33 +50008,33 @@ agi agi aWV hoZ -gEF +nub hoZ -lwK -vco -wVK -uFX -lwK -gEF -fGb -fGb +lvD +jCe +hrw +ddN +lvD +nub +jHz +jHz jXz hhL hro jqs -gEF +nub hoZ -njx -fGb -fGb -fGb -fGb -fBP -hDx -hDx -hDx -hDx -fBP +lLQ +jHz +jHz +jHz +jHz +rqC +swj +swj +swj +swj +rqC pqC bQM bQM @@ -49137,42 +50042,42 @@ bQM pqC xHV xHV -hDx +swj dXG -hDx -xkG -hDx -hDx -jcg -fBP -fBP -hDx -hDx -xHV -xHV -xHV -qty -lhQ -qty -lhQ -qty -lhQ -qty -lhQ -qty -lhQ -qty -lhQ -qty -lhQ -tzj -lvs -lhQ -qty -lsl -xFx +swj +xEy +swj +swj +xgb +rqC +rqC +swj +swj +xHV +xHV +xHV +eYz +uPX +eYz +uPX +eYz +uPX +eYz +uPX +eYz +uPX +eYz +uPX +eYz +uPX +sze +lgH +uPX +gLV +enx +eWr apw -taX +wLT amF amF amF @@ -49181,34 +50086,34 @@ amF amF amF amF -geU +iaE jlk jlk jlk -aKW -aKW -aKW -aKW -nRI -aKW +svP +svP +svP +svP +bcz +svP jlk -sJT -sVP -hjP -gCX -sJT +hvL +uzG +taj +nMm +hvL yhu -jlJ +tMS jlk jlk jlk jlk jlk -uwI +uEY vsT rGq rGq -amj +uha rZP jlk jlk @@ -49226,7 +50131,7 @@ jlk ctc lzJ lzJ -uGM +oPU lzJ lzJ hUi @@ -49317,14 +50222,14 @@ aWV jXz jXz hoZ -lwK -lwK -lwK -lwK -lwK +lvD +lvD +lvD +lvD +lvD jXz jXz -fGb +jHz agi gQK agi @@ -49337,11 +50242,11 @@ aWV aWV aWV aWV -fBP -fBP -ngk -hDx -fBP +rqC +rqC +wgq +swj +rqC pqC bQM bQM @@ -49355,34 +50260,34 @@ dIo dIo dIo dIo -mLB -qty -qty -mLB -bby +rAU +eYz +eYz +rAU +sIC xHV xHV xHV xHV xHV -fGY +tiY dXG -qty -hDx -vFQ -hDx +eYz +swj +qdC +swj whu -hDx +swj whu -hDx -rMg -hDx -lhQ -oVC -hDx -hDx -hDx -apw +swj +dUf +swj +uPX +vXy +udj +swj +cRx +vts apw apw amF @@ -49397,18 +50302,18 @@ amF rZP rZP rZP -gHb -qGX -qGX +uDX +oTy +oTy rZP rZP jlk jlk -sJT -sVP -hjP -gCX -sJT +hvL +uzG +taj +nMm +hvL uNM jlk jlk @@ -49420,7 +50325,7 @@ rZP jDR rGq rGq -pry +ugm jlk jlk jlk @@ -49432,13 +50337,13 @@ rGq rGq rGq rGq -jhi +kXs jlk jlk jlk lzJ lzJ -uGM +oPU lzJ lzJ lzJ @@ -49528,14 +50433,14 @@ rmu aWV vOP aWV -fGb -fGb -fGb -ipy -iSG -ipy -fGb -fGb +jHz +jHz +jHz +oxv +wxY +oxv +jHz +jHz hoZ hoZ mJq @@ -49550,10 +50455,10 @@ pab pnS aWV agi -hDx -fBP -hDx -fBP +swj +rqC +swj +rqC tYw xHV xHV @@ -49567,34 +50472,34 @@ dIo dIo dIo dIo -hDx -fBP -fBP -hDx +swj +rqC +rqC +swj xHV xHV xHV xHV xHV xHV -hDx -tZS -qUx -mLB +swj +odC +iGw +rAU dIo dIo dIo kUj kUj kUj -hDx -rMg -qty -qty -hDx +swj +dUf +eYz +eYz +swj whu -hDx -apw +swj +orV mZo apw amF @@ -49608,19 +50513,19 @@ amF amF amF rZP -qzS -hjP -hjP -hjP -bHY +afW +taj +taj +taj +lhJ jlk rZP jlk -rhK -sVP -hjP -gCX -vqZ +kZl +uzG +taj +nMm +dkz jlk jlk jlk @@ -49644,7 +50549,7 @@ rGq oyd rGq rGq -jhi +kXs jlk jlk jlk @@ -49655,7 +50560,7 @@ fyO lzJ lzJ lzJ -cdD +tkj irB irB baC @@ -49733,15 +50638,15 @@ agi agi aWV jXz -njx -rpe -njx -tYx +lLQ +hWv +lLQ +jHC jXz pPG jXz hoZ -fGb +jHz hoZ gFg hoZ @@ -49751,38 +50656,38 @@ hoZ hoZ hoZ hoZ -gEF -jEl -efz -gEF -efz -jEl -gEF -efz -efz -gEF +nub +qxy +gir +nub +gir +qxy +nub +gir +gir +nub pCX -hDx -fBP -vAZ -fBP -hDx -diX +swj +rqC +eRl +rqC +swj +gyA xHV xHV xHV -rsz -hDx -hDx +nsD +swj +swj dIo -hDx -uST -hDx +swj +tMU +swj tYw xHV -qty -qty -hDx +eYz +eYz +swj xHV xHV xHV @@ -49791,24 +50696,24 @@ xHV xHV dIo dIo -jit -wFo +dOk +wwa dIo -xOa -xOa -hDx -hDx +krb +krb +swj +swj kUj kUj xHV -lhQ -oVC -gWT -fpp -bln -oVC +uPX +vXy +kzs +ntc +tKN +vXy apw -taX +wLT amF amF amF @@ -49817,26 +50722,26 @@ amF amF amF amF -geU +iaE jlk mHR -oBd -xnE -hjP -hjP -bBX +olk +xtd +taj +taj +pdP jlk rZP jlk -rhK -sVP -hjP -gCX -sVM +kZl +uzG +taj +nMm +aHJ jlk jlk -iqt -iqt +xNw +xNw jlk jlk umy @@ -49863,11 +50768,11 @@ jlk lzJ lzJ lzJ -xAR +eVK lzJ lzJ lzJ -cdD +tkj lzJ irB irB @@ -49944,14 +50849,14 @@ agi agi aWV jXz -njx -njx -njx -njx -njx -lwK -vTB -lwK +lLQ +lLQ +lLQ +lLQ +lLQ +lvD +efI +lvD hoZ hoZ hoZ @@ -49974,26 +50879,26 @@ hoZ pCX hoZ hoZ -gEF -fBP -hDx -fBP -hDx -jje -hDx -rsz -rsz -hDx +nub +rqC +swj +rqC +swj +sPJ +swj +nsD +nsD +swj qXM -hDx -sFI +swj +iwZ lLe -qty -qty +eYz +eYz fJj -hDx -fBP -fBP +swj +rqC +rqC qXM xHV xHV @@ -50002,25 +50907,25 @@ tYw tYw tYw dIo -pcD -fBP -fBP -fBP -qty -fBP -fBP -fBP -qty +tss +rqC +rqC +rqC +eYz +rqC +rqC +rqC +eYz kUj kUj -qty -muB -nsg -nsg -nsg +eYz +vLX +byJ +byJ +xZM apw -hDx -taX +swj +wLT amF fjX jXZ @@ -50029,27 +50934,27 @@ jXZ jXZ lZf amF -geU +iaE xFf rZP rZP -qGX -qGX -qGX +oTy +oTy +oTy rZP rZP rZP jlk jlk -sVP -hjP -gCX -sJT -jhi -rLb -hjP -hjP -hjP +uzG +taj +nMm +hvL +kXs +gQL +taj +taj +taj knh rGq rGq @@ -50080,7 +50985,7 @@ irB uYx lzJ lzJ -ajK +oer plu lzJ irB @@ -50155,15 +51060,15 @@ bQM agi agi rmu -cBY -njx -njx -njx -njx -njx -lwK -vTT -lwK +qGy +lLQ +lLQ +lLQ +lLQ +lLQ +lvD +bez +lvD hoZ hoZ gGx @@ -50187,26 +51092,26 @@ hoZ hoZ hoZ hoZ -hGZ -hDx -fBP +loj +swj +rqC jRk -nnx -hDx -hDx -vAZ +fcg +swj +swj +eRl dXG lLe dXG qXM dXG -qty -qty +eYz +eYz dXG -hDx -qty -qty -hDx +swj +eYz +eYz +swj xHV xHV tYw @@ -50214,24 +51119,24 @@ tYw tYw tYw dIo -qnK +rNV xzj kdK xzj -fBP +rqC xzj xzj xzj -fBP +rqC xHV kUj -lhQ -oVC -hDx -hDx -hDx -lvs -xoQ +uPX +vXy +swj +swj +swj +lgH +pIw amF amF hiO @@ -50245,24 +51150,24 @@ amF bDx jlk jlk -hjP -hjP -hjP -bBX +taj +taj +taj +pdP rZP kbb rZP jlk jlk -whp -gCX -sJT -aKW -aKW -aKW -aKW -aKW -bMd +stf +nMm +hvL +svP +svP +svP +svP +svP +mJc rGq rGq rGq @@ -50292,7 +51197,7 @@ irB irB lzJ lzJ -ajK +oer lzJ lzJ lzJ @@ -50367,15 +51272,15 @@ bQM agi agi rmu -njx -njx -njx -njx -njx -njx -lwK -vZc -lwK +lLQ +lLQ +lLQ +lLQ +lLQ +lLQ +lvD +uMZ +lvD hoZ hoZ fqF @@ -50399,51 +51304,51 @@ hoZ hoZ hoZ pCX -fBP -hDx -fBP -fBP -fBP -fBP -sIQ +rqC +swj +rqC +rqC +rqC +rqC +gxR dXG -hDx +swj dXG -rsz +nsD dIo -moJ -qty -moJ +eWA +eYz +eWA dIo -hDx -fBP -fBP -hDx -uIG +swj +rqC +rqC +swj +guU xHV tYw tYw tYw tYw dIo -wfy +xZx xzj xzj xzj -fBP +rqC xzj xzj xzj xHV xHV kUj -qty -qty -hDx +eYz +eYz +swj whu -nEs -oVC -hDx +ifm +vXy +swj pyK sXi pyK @@ -50454,27 +51359,27 @@ rGq pyK sXi pyK -ncn -gUf -sJT -sJT -sJT -pOm +kCH +qxP +hvL +hvL +hvL +veP fmY -aao -sJT +xYo +hvL jlk jlk jlk -hjP -gCX -sJT -sJT -sJT -iAL -sJT -aKW -bMd +taj +nMm +hvL +hvL +hvL +uxd +hvL +svP +mJc rGq bDU rGq @@ -50485,30 +51390,30 @@ rZP rZP jlk jlk -uvi -uGM -uGM -jUI +rur +oPU +oPU +voi fjr jgu jgu jgu irB -ajK +oer lzJ lzJ -uGM +oPU mCA irB irB irB irB -cdD +tkj lzJ lzJ lzJ fyO -uGM +oPU irB irB irB @@ -50579,17 +51484,17 @@ agi agi agi rmu -cEf -njx -njx -njx -njx -lwK +mVO +lLQ +lLQ +lLQ +lLQ +odl jXz pPG jXz -fGb -fGb +jHz +jHz hoZ vjT gFg @@ -50612,25 +51517,25 @@ hoZ hoZ hoZ lLe -hDx -hDx -hDx -hDx -hDx -fBP +swj +swj +swj +swj +swj +rqC xHV -rsz +nsD xHV xHV dIo -moJ -qty -moJ +eWA +eYz +eWA dIo -wJa -qty -qty -xoQ +cKb +eYz +eYz +pIw tYw tYw tYw @@ -50638,24 +51543,24 @@ tYw tYw tYw dIo -rdX +cTx xzj xzj xzj -fBP +rqC xzj xzj dXG xHV xHV dIo -lhQ -oVC -fpp -fpp -oVC -qty -qty +uPX +vXy +ntc +ntc +vXy +eYz +eYz sXi fpn sXi @@ -50666,26 +51571,26 @@ rGq sXi fpn sXi -sVP -piL -peY -cJa -peY +uzG +dMt +wsz +uMm +wsz ddM iQK ddM -peY -peY -bST -peY -hjP -piL -peY -peY -peY -gUf -sJT -aKW +wsz +wsz +ruu +wsz +taj +dMt +wsz +wsz +wsz +qxP +hvL +svP jlk jlk jlk @@ -50697,17 +51602,17 @@ dxE rZP jlk jlk -tdo -uGM -uGM -jUI -iZA +vxI +oPU +oPU +voi +bBB jgu jgu jgu -nsn -ajK -uGM +pvz +oer +oPU lzJ lzJ irB @@ -50715,9 +51620,9 @@ irB irB irB irB -cdD -ajK -iSh +tkj +oer +pIA lzJ lzJ lzJ @@ -50726,7 +51631,7 @@ irB irB irB irB -iAO +gOd wbI itN baC @@ -50791,9 +51696,9 @@ agi agi aWV jXz -lwK -lwK -lwK +lvD +lvD +lvD jXz aWV aWV @@ -50811,63 +51716,63 @@ hoZ hoZ hoZ hoZ -gEF -jEl -efz -gEF -jEl -efz -gEF -jEl -efz -gEF +nub +qxy +gir +nub +qxy +gir +nub +qxy +gir +nub agi hoZ dXG -fon -hDx -hDx -hDx -hDx -fBP +jEz +swj +swj +swj +swj +rqC dIo tYw xHV xHV dIo -moJ -oGm -moJ +eWA +ycw +eWA dIo -iPZ -fBP -fBP -hDx +bnM +rqC +rqC +swj tYw -gto -qNS +vel +lAQ tYw tYw tYw dIo -pcD -fBP -fBP -fBP -qty +tss +rqC +rqC +rqC +eYz xHV -fBP +rqC xHV xHV xHV -hDx -qty -qty -nsg -nsg -xFx -qty -qty +swj +eYz +eYz +byJ +byJ +eWr +eYz +eYz sXi fpn sXi @@ -50878,30 +51783,30 @@ rGq sXi fpn sXi -sVP -hxC -bEn -kCg -bEn -ajh -ihC -hxC -bEn -bEn -aQM -bEn -bEn -bEn -bEn -ycn -aKW -gCX -sJT -aKW -dro +uzG +ugk +mLY +inO +mLY +mEY +nWh +ugk +mLY +mLY +oGg +mLY +mLY +mLY +mLY +bZD +svP +nMm +hvL +svP +iXV jlk jlk -jhi +kXs rGq rGq rGq @@ -50909,16 +51814,16 @@ rGq rZP jlk jlk -lrC -uGM -uGM -xub -xub -xub +xUr +oPU +oPU +wgO +wgO +wgO vhB -xub -cdD -ajK +wgO +tkj +oer lzJ lzJ irB @@ -50927,18 +51832,18 @@ irB irB irB irB -cdD -ajK +tkj +oer irB irB lzJ lzJ -uGM +oPU irB irB irB -nfI -vHK +hub +uiD wbI itN baC @@ -51003,9 +51908,9 @@ agi agi sSY ruJ -ocS -psO -qew +lZs +evd +rWQ ruJ sSY aWV @@ -51037,11 +51942,11 @@ agi agi xHV xHV -fBP -fBP -fBP -fBP -fBP +rqC +rqC +rqC +rqC +rqC dIo xHV xHV @@ -51051,14 +51956,14 @@ dIo dIo dIo dIo -cDj -rIX -rIX -gma -gma -gma -gma -cDj +rqG +kLz +kLz +bNE +bNE +bNE +bNE +rqG xJw xJw rja @@ -51071,15 +51976,15 @@ egv egv egv egv -gma +bNE apf -lhQ -oVC -hDx -vkM -tQq -xFx -hDx +uPX +vXy +swj +uXP +xPk +eWr +swj sXi sXi sXi @@ -51090,27 +51995,27 @@ rGq sXi sXi sXi -jVH -lwG +oHm +aJv jlk jlk -mWi -sVP -hjP -gCX -sJT +gmN +uzG +taj +nMm +hvL jlk jlk jlk -pOm -sJT -sJT -sVP -hjP -gCX -sJT -aKW -tMP +veP +hvL +hvL +uzG +taj +nMm +hvL +svP +yif jlk jlk aHg @@ -51121,17 +52026,17 @@ cye jlk jlk jlk -lrC -uGM -uGM -xub -xub -xub +xUr +oPU +oPU +wgO +wgO +wgO vhB -xub -cdD -ajK -uGM +wgO +tkj +oer +oPU lzJ irB irB @@ -51139,18 +52044,18 @@ irB irB irB irB -cdD -ajK -uGM -uGM -uGM -uGM -uGM -uGM -uGM -uGM -cdD -iAO +tkj +oer +oPU +oPU +oPU +oPU +oPU +oPU +oPU +oPU +tkj +gOd qkg itN baC @@ -51215,25 +52120,25 @@ agi agi aWV jXz -lwK -lwK -lwK +lvD +lvD +lvD jXz jXz jXz jXz -uwP -uwP -dmu +kME +kME +imN jXz -lwK -njx +lvD +lLQ hoZ hoZ hoZ hoZ -fGb -fGb +jHz +jHz hoZ aWV aWV @@ -51249,48 +52154,48 @@ agi agi xJw xJw -eWu +gAh apf apf bvY apf -eWu +gAh egv -cDj -gma -gma -gma -gma -bfZ -bfZ -bfZ -bfZ -gma -gma -nAr -gbD -rVZ -nAr -cDj +rqG +bNE +bNE +bNE +bNE +pQs +pQs +pQs +pQs +bNE +bNE +raL +rty +iXJ +raL +rqG xJw rja -vub +uvZ apf apf -vub +uvZ egv egv egv egv egv -gma +bNE xna -qty -qty -hDx -hDx -hDx -lvs +eYz +eYz +swj +swj +swj +lgH rZP amF amF @@ -51307,25 +52212,25 @@ jlk jlk jlk jlk -sVP -hjP -gCX -eyM +uzG +taj +nMm +cHK jlk jlk jlk jlk -jXB -sJT -sVP -hjP -gCX -sJT +aKN +hvL +uzG +taj +nMm +hvL jlk jlk jlk jlk -jhi +kXs rGq rGq rGq @@ -51333,36 +52238,36 @@ rGq jlk jlk jlk -tdo -uGM -uGM -jUI -waP +vxI +oPU +oPU +voi +vcN jgu jgu jgu -rxh -ajK -uGM -rON -uGM -qDy +bxm +oer +oPU +vQC +oPU +jls irB irB irB irB -cdD -teH -oAV -oAV -tsQ -uGM -uGM -uGM -lRI -uGM -cdD -ajK +tkj +uWO +gSX +gSX +oTT +oPU +oPU +oPU +gAn +oPU +tkj +oer jFO itN itN @@ -51426,85 +52331,85 @@ agi agi agi aWV -cxl -cOq -njx -njx -lwK -njx -njx -njx -lwK -dfz -njx -njx -lwK -njx +rqY +hFC +lLQ +lLQ +lvD +lLQ +lLQ +lLQ +lvD +fuw +lLQ +lLQ +lvD +lLQ hoZ hoZ hoZ hoZ hoZ -fGb -fGb +jHz +jHz agi agi agi agi hoZ -fGb -eEo +jHz +qFs agi agi agi aWV aWV xJw -eWu -dUs -iOt -iOt -uAv +gAh +oEi +kyF +kyF +xDk apf -gma -gma -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -qPT -ddE -qwJ -eTn -mbN +bNE +bNE +pQs +pQs +pQs +pQs +pQs +pQs +pQs +pQs +pQs +pQs +pQs +rKA +qCk +cvd +rRz +cjG xJw rja -gma -xbQ +bNE +yiR xna -gma +bNE egv egv egv egv apf apf -vsc -tZS -oVC -fpp -fpp -fpp -oVC +wUs +odC +vXy +ntc +ntc +ntc +vXy rZP -geU +iaE amF aXn jXZ @@ -51513,68 +52418,68 @@ jXZ jXZ qCW amF -geU +iaE lev jlk jlk -mpO -evc -sVP -hjP -gCX +oOp +xpO +uzG +taj +nMm jlk jlk jlk jlk jlk jlk -sJT -sVP -hjP -oYX -sJT +hvL +uzG +taj +khd +hvL jlk jlk jlk rZP -ofo -aKW +mWO +svP rGq rGq rGq jlk jlk rZP -sRk -uGM -uGM -jUI +lwA +oPU +oPU +voi xck jgu oCe jgu -cdD -ajK -uGM -pWH -uGM -tdZ -oPC +tkj +oer +oPU +uKE +oPU +rsg +kDa irB jgu jgu -rZh -dMc +cPL +uCX jgu jgu -dxd -xub -qyB -oAV -oAV -tsQ -cdD -ajK +hcY +wgO +gqM +gSX +gSX +oTT +tkj +oer vLH itN aju @@ -51638,34 +52543,34 @@ agi agi agi aWV -cBB -njx -njx -njx -lwK -njx -njx -njx -lwK -njx -njx -njx -lwK -ykT -uhd -agi -gEF +rRg +lLQ +lLQ +lLQ +lvD +lLQ +lLQ +lLQ +lvD +lLQ +lLQ +lLQ +lvD +otg +dLL +agi +nub hoZ hoZ -fGb -fGb +jHz +jHz agi agi agi agi agi -fGb -eEo +jHz +qFs agi jXz jXz @@ -51673,48 +52578,48 @@ aWV aWV xJw xJw -tik +nhM mMH aBs -gFG -bfZ +cOj +pQs apf -bfZ -bfZ -bfZ -bfZ -gEe -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -nAr -mXY -qJJ -nAr -gma +pQs +pQs +pQs +pQs +xLj +pQs +pQs +pQs +pQs +pQs +pQs +pQs +raL +wND +imp +raL +bNE rja rja -gma +bNE apf apf -vsc -vub +wUs +uvZ egv -vub +uvZ apf -xbQ +yiR apf -gma -qty -qty +bNE +eYz +eYz tYw -hDx -hDx -hDx +swj +swj +swj uNM uNM uNM @@ -51728,74 +52633,74 @@ amF uNM uNM uNM -hjP -mpO -evc -kKZ -hjP -gCX +taj +oOp +xpO +hBf +taj +nMm jlk jlk jlk jlk jlk jlk -wVu -hIo +wuN +jFz jlk -iDE -wVu +aik +wuN jlk jlk jlk rZP -aBk -aKW +uci +svP rGq rGq rGq -ivM -nhi +bjR +mvY glG -jUI -uGM -uGM -jUI +voi +oPU +oPU +voi oPZ jgu oCe jgu -cdD -ajK -uGM -tdZ -oPC -war +tkj +oer +oPU +rsg +kDa +sTU jgu kXD jgu qOW -lDe -ofF +mWs +dCK chT jgu -rZh -qPC -dMc +cPL +sTm +uCX jgu jgu -dxd -cdD -ajK -hhy -vwc -vwc -vwc -fuA +hcY +tkj +oer +xVW +oyT +oyT +oyT +uaL qNv -iVt +sUt jgu -hMg +veJ irB baC baC @@ -51850,21 +52755,21 @@ agi agi agi aWV -jJh -njx -njx -njx -lwK -njx -njx -njx -lwK -njx -njx -njx -lwK -njx -nBV +oLK +lLQ +lLQ +lLQ +lvD +lLQ +lLQ +lLQ +lvD +lLQ +lLQ +lLQ +lvD +lLQ +oiV jXz hoZ hoZ @@ -51877,7 +52782,7 @@ agi agi hoZ hoZ -eEo +qFs egv xJw xJw @@ -51885,110 +52790,110 @@ xJw xJw xJw rja -tik +nhM dGx kLI -gFG -bfZ -bfZ -mJe -bfZ -bfZ -bfZ -bfZ -bfZ -eWu -bfZ -bfZ -bfZ -eWu -bfZ -bfZ -bfZ -bfZ -bfZ -gma +cOj +pQs +pQs +qGP +pQs +pQs +pQs +pQs +pQs +gAh +pQs +pQs +pQs +gAh +pQs +pQs +pQs +pQs +pQs +bNE apf apf -xbQ -gma +yiR +bNE apf apf apf apf apf apf -gma -gma +bNE +bNE apf -diP +gPo qXM -mLB +rAU tYw tYw dXG uNM -avf +qjR uNM -pYh -elY -hjP +eUo +wXy +taj uNM -hjP -elY -pYh +taj +wXy +eUo uNM uNM uNM -hjP -xqf -sJT -sVP -hjP -uWg -sJT +taj +vaC +hvL +uzG +taj +hpn +hvL jlk jlk jlk jlk -aKW -sJT -sVP -sVi -gCX -sJT -aKW +svP +hvL +uzG +wIp +nMm +hvL +svP jlk jlk rZP -wHE -aKW +mJg +svP rGq rGq rGq -aKW -shC +svP +nTV glG -jUI -uGM -uGM -jUI -nGI +voi +oPU +oPU +voi +ktq jgu jgu jgu -rxh -ajK -uGM -btz +bxm +oer +oPU +uLf jgu kXD jgu wbI wbI wbI -cdD -ajK +tkj +oer wbI eVf wnu @@ -51996,16 +52901,16 @@ wnu dqE tNV kXD -dxd -cdD -ajK +hcY +tkj +oer lzJ -mEc -bDN -bDN -bDN +mtG +tiZ +tiZ +tiZ qNv -xZb +cbA jgu irB irB @@ -52062,21 +52967,21 @@ agi agi agi aWV -cxl -njx -njx -njx -lwK -njx -njx -njx -lwK -njx -njx -njx -lwK -wVK -uFX +rqY +lLQ +lLQ +lLQ +lvD +lLQ +lLQ +lLQ +lvD +lLQ +lLQ +lLQ +lvD +hrw +ddN jXz agi agi @@ -52088,8 +52993,8 @@ hoZ agi agi hoZ -fGb -fGb +jHz +jHz egv xJw xJw @@ -52097,119 +53002,119 @@ xJw xJw xJw rja -xSd -vky -vky -dOs +lge +sWe +sWe +lRr apf -bfZ -bfZ -bfZ -bfZ -bfZ -gma -iht -gma -gma -gma -iht -gma -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -vsc +pQs +pQs +pQs +pQs +pQs +bNE +aPO +bNE +bNE +bNE +aPO +bNE +pQs +pQs +pQs +pQs +pQs +pQs +wUs hSH apf -vsc -hyz +wUs +unA apf apf apf -gma -gma +bNE +bNE apf egv egv -xmH -rQF -fyA -hjP -hjP -hjP -hjP -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -sJT -foV -hjP -hjP -sJT -iAL -sVP -jah -gCX -sJT +nwT +pLS +fTd +taj +taj +taj +taj +svP +svP +svP +svP +svP +svP +svP +svP +svP +hvL +bUt +taj +taj +hvL +uxd +uzG +cDb +nMm +hvL jlk jlk jlk -aKW -aKW -sJT -sVP -sVi -gCX -sJT -aKW +svP +svP +hvL +uzG +wIp +nMm +hvL +svP jlk jlk jlk -jhi +kXs rGq rGq rGq rGq -aKW -sCB +svP +siE glG -lrC -uGM -uGM -xub -xub -xub +xUr +oPU +oPU +wgO +wgO +wgO vhB -xub -cdD -ajK -tdZ -war +wgO +tkj +oer +rsg +sTU kXD oRR dLq -hhy -vwc -vwc -oTU -mkB -vwc -vwc -aNn +xVW +oyT +oyT +oWw +exI +oyT +oyT +ijt wbI wbI lzJ kXD -dxd -cdD +hcY +tkj lzJ irB lzJ @@ -52275,24 +53180,24 @@ agi agi aWV aWV -rCO -iJE -qit +cYV +fUz +edu aWV jXz jXz jXz aWV -rCO -iJE -dEI +cYV +fUz +mIf jXz -ykT -uhd +otg +dLL jXz agi agi -fGb +jHz hoZ hoZ idi @@ -52300,25 +53205,25 @@ hoZ agi agi hoZ -fGb -fGb +jHz +jHz rja rja rja rja rja rja -cDj -bfZ -bfZ +rqG +pQs +pQs apf -bfZ -bfZ -gma -gma -gma -gma -gma +pQs +pQs +bNE +bNE +bNE +bNE +bNE rja rja rja @@ -52326,15 +53231,15 @@ rja rja rja rja -cDj -gma -bfZ -bfZ -bfZ -bfZ -bfZ -hOW -hyz +rqG +bNE +pQs +pQs +pQs +pQs +pQs +qwK +unA rja rja xJw @@ -52345,43 +53250,43 @@ apf egv egv egv -tbC -wUA -fmU -hjP -hjP -hjP -aKW -sJT -sJT -sJT -sJT -sJT -sJT -sJT -sJT -sJT -sJT -sJT -sJT -sJT -sJT +cYI +tpF +gFW +taj +taj +taj +svP +hvL +hvL +hvL +hvL +hvL +hvL +hvL +hvL +hvL +hvL +hvL +hvL +hvL +hvL uNM -hIo -sVi -iDE +jFz +wIp +aik uNM -whL -nSa -tqM -aKW -aKW -sJT -sVP -sVi -gCX -sJT -aKW +whl +vmT +fxL +svP +svP +hvL +uzG +wIp +nMm +hvL +svP jlk jlk jlk @@ -52393,36 +53298,36 @@ rGq jlk jlk rZP -pmM -cFn -uGM -xub -xub -xub +aIB +bFC +oPU +wgO +wgO +wgO vhB -xub -cdD -ajK -btz +wgO +tkj +oer +uLf jgu jgu wbI wbI -cdD -oGT -bDN -twd -bDN -bDN -gqH -ajK +tkj +gZM +tiZ +oJd +tiZ +tiZ +wCI +oer wbI wbI wbI kXD -dxd -iFj -bDN +hcY +mPX +tiZ irB irB wbI @@ -52487,30 +53392,30 @@ aWV aWV jXz jXz -cQG -njx -qkk +eim +lLQ +orB jXz -olT -olT -olT +pgx +pgx +pgx jXz -cQG -njx -qkk +eim +lLQ +orB gKi -njx -nBV +lLQ +oiV jXz agi agi agi -fGb +jHz hoZ -ied -kdG -kdG -lEI +jNw +rqA +rqA +skG hoZ cto hoZ @@ -52520,12 +53425,12 @@ rja rja rja rja -xWN -bfZ -bfZ -bfZ -bfZ -gma +fLX +pQs +pQs +pQs +pQs +bNE rja rja vVi @@ -52540,15 +53445,15 @@ xUi rja rja rja -iht -gma -bfZ -bfZ -bfZ -bfZ +aPO +bNE +pQs +pQs +pQs +pQs apf -gma -cDj +bNE +rqG rja xJw xJw @@ -52560,11 +53465,11 @@ egv jlk jlk jlk -aKW -hjP -hjP -aKW -sJT +svP +taj +taj +svP +hvL uNM sgw vFi @@ -52578,26 +53483,26 @@ sgw vFi yhu uNM -sJT -sVP -hjP -uWg -sJT -sJT -sJT -sJT -sJT -sJT -sJT +hvL +uzG +taj +hpn +hvL +hvL +hvL +hvL +hvL +hvL +hvL jlk jlk -gCX -sJT -aKW +nMm +hvL +svP jlk jlk jlk -jhi +kXs rGq rGq rGq @@ -52608,31 +53513,31 @@ jlk irB irB irB -sRk -nGI +lwA +ktq jgu jgu jgu -rxh -teH -war +bxm +uWO +sTU kXD wbI jcv djf -cdD -ajK -sel -qjc -qjc -pAO -hoN -bWE +tkj +oer +hPi +jUG +jUG +oKf +lxT +alP wbI jcv wbI kXD -vOp +oCn wHl wbI irB @@ -52697,53 +53602,53 @@ agi agi aWV aWV -cvf -cvf -lwK -njx -nBV -cvf -fGb -pkp -fGb -cvf -lwK -njx -nBV +pbv +pbv +lvD +lLQ +oiV +pbv +jHz +rWt +jHz +pbv +lvD +lLQ +oiV gKi -wVK -uFX +hrw +ddN jXz agi agi agi agi hoZ -iMm +iuN krn kJS -lMM +mcH hoZ -fGb -fGb +jHz +jHz egv xJw xJw xJw xJw rja -wwZ -bfZ -bfZ -iJJ -bfZ -mbN +wKl +pQs +pQs +xCV +pQs +cjG rja -gRV -bMr -bMr -bMr -bMr +wfc +jYK +jYK +jYK +jYK mDz toE mDz @@ -52754,16 +53659,16 @@ eTC rja rja rja -gma -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -gma -gma -mbN +bNE +pQs +pQs +pQs +pQs +pQs +pQs +bNE +bNE +cjG rja xJw xJw @@ -52772,41 +53677,41 @@ egv jlk bQM lHx -ezz -cyL -ubk -hAY -sJT -ncn -peY -peY -peY -peY -peY -peY -peY -peY -peY -peY -peY -hwn -xxh -eUk -hjP -piL -cJa -peY -peY -peY -peY +dRs +jrN +ltA +riP +hvL +kCH +wsz +wsz +wsz +wsz +wsz +wsz +wsz +wsz +wsz +wsz +wsz +nwv +nVR +sUV +taj +dMt +uMm +wsz +wsz +wsz +wsz jlk jlk jlk jlk -gCX -sJT -aKW -aKW +nMm +hvL +svP +svP jlk jlk rGq @@ -52820,35 +53725,35 @@ jlk irB itN irB -lrC +xUr xck jgu itN jgu -cdD -jqg +tkj +bcT jgu jgu jBQ bvK dLq -cdD -ajK +tkj +oer pGK jfd hRX mjB -cdD -ajK +tkj +oer jBQ oRR dLq jgu jgu -dxd +hcY wbI -cdD -ajK +tkj +oer lzJ wbI irB @@ -52909,19 +53814,19 @@ agi aWV aWV jXz -cvf -cvf -lwK +pbv +pbv +lvD hoZ -lwK -cvf -cQX -fGb -lwK -cvf -lwK -lwK -lwK +lvD +pbv +vwD +jHz +lvD +pbv +lvD +lvD +lvD gKi gKi gKi @@ -52931,13 +53836,13 @@ agi agi agi hoZ -iMm +iuN ksV kNW -lMM +mcH hoZ -fGb -fGb +jHz +jHz rja xJw xJw @@ -52945,17 +53850,17 @@ xJw xJw rja rja -gma -gma -bfZ -bfZ -gma +bNE +bNE +pQs +pQs +bNE rja rja -tqN -jre -woI -bMr +kAc +mIQ +hDb +jYK xxD xxD xxD @@ -52967,15 +53872,15 @@ xxD hHq rja rja -gma -bfZ -bfZ -bfZ -dUs -iOt -iOt -uAv -gma +bNE +pQs +pQs +pQs +oEi +kyF +kyF +xDk +bNE rja rja rja @@ -52984,45 +53889,45 @@ egv bQM bQM lHx -jay -hjP +qjh +taj dlA -aKW -sJT -sVP -hjP -hjP -hjP -hjP -hjP -hjP -hjP -hjP -hjP -hjP -hjP -bMd -hjP -hjP -hjP -hjP -hjP -whp -hjP -hjP +svP +hvL +uzG +taj +taj +taj +taj +taj +taj +taj +taj +taj +taj +taj +mJc +taj +taj +taj +taj +taj +stf +taj +taj jlk jlk jlk jlk jlk jlk -sJT -aKW -aKW +hvL +svP +svP rGq knh -sJT -aKW +hvL +svP rGq rGq jlk @@ -53037,30 +53942,30 @@ irB jgu itN jgu -cdD -iDo +tkj +sRE jgu anu wbI rBz wbI -cdD -ajK +tkj +oer pGK hRX pzh sQL -vbY -ajK +nez +oer wbI rBz wbI qkg jgu -snq +sBf wbI -cdD -ajK +tkj +oer wbI vtl irB @@ -53121,48 +54026,48 @@ agi jXz jXz jXz -ykT -njx -njx -ykT -ykT -ykT +otg +lLQ +lLQ +otg +otg +otg gzb -ykT -ykT -ykT +otg +otg +otg wRg -ykT -ykT -ykT +otg +otg +otg gzb wRg gzb -ykT -ykT -ykT -ykT +otg +otg +otg +otg hoZ -iWy -kty -kOb -iaO -fGb -fGb -gma -blb -bfZ +vHo +lIj +uQJ +uOC +jHz +jHz +bNE +ydb +pQs xJw egv egv egv rja rja -gma -bfZ -bfZ -bfZ -gma +bNE +pQs +pQs +pQs +bNE rja vVi vVi @@ -53180,16 +54085,16 @@ xxD xxD rja rja -gma -bfZ -bfZ -tik +bNE +pQs +pQs +nhM mMH aBs -gFG -gma -gma -mbN +cOj +bNE +bNE +cjG rja xJw egv @@ -53198,30 +54103,30 @@ bQM rZP lHx rZP -hjP -aKW -ryx -sVP -hjP -hxC -bEn -bEn -bEn -bEn -bEn -bEn -bEn -bEn -bEn -aQM -poo -bEn -bEn -bEn -bEn -ycn -hxC -rYJ +taj +svP +ftU +uzG +taj +ugk +mLY +mLY +mLY +mLY +mLY +mLY +mLY +mLY +mLY +oGg +lFD +mLY +mLY +mLY +mLY +bZD +ugk +adE rZP rZP rZP @@ -53229,12 +54134,12 @@ rZP jlk jlk jlk -aKW +svP rGq rGq knh -sJT -aKW +hvL +svP rGq rGq jlk @@ -53249,30 +54154,30 @@ irB jgu jgu jgu -cdD -weK -gSG -vwc -vwc -vwc -vwc -oTU -ajK +tkj +osv +iyk +oyT +oyT +oyT +oyT +oWw +oer pGK mxs vhI fgM -cdD -ixb -vwc -vwc -vwc -cpS -omw -kGh -vwc -oTU -ajK +tkj +lzP +oyT +oyT +oyT +eNn +uqj +bFi +oyT +oWw +oer fyO oyC wbI @@ -53323,34 +54228,34 @@ cAW agi agi aPD -bpC -bIX -fGb -fGb -fGb +tpE +rUf +jHz +jHz +jHz hoZ hoZ hoZ mjx -njx -njx -fGb -fGb -fGb -qqX -fGb -njx -njx -njx -fGb -fGb -fGb -fGb -fGb -fGb -fGb -fGb -fGb +lLQ +lLQ +jHz +jHz +jHz +haJ +jHz +lLQ +lLQ +lLQ +jHz +jHz +jHz +jHz +jHz +jHz +jHz +jHz +jHz hoZ hoZ pCX @@ -53358,33 +54263,33 @@ hoZ hoZ hoZ hoZ -ngq -ied -iOt -iOt -uAv -bfZ +qSm +jNw +kyF +kyF +xDk +pQs rja egv -bfZ -bfZ +pQs +pQs egv ccH -gma -eWu -bfZ -bfZ -bfZ -bfZ -gma -gma -gma -gma -gma +bNE +gAh +pQs +pQs +pQs +pQs +bNE +bNE +bNE +bNE +bNE rja kze rja -wAa +lzE rja rja tDQ @@ -53393,15 +54298,15 @@ xxD xxD rja rja -cDj -bfZ -tik +rqG +pQs +nhM dGx kLI -gFG -bfZ -bfZ -gma +cOj +pQs +pQs +bNE rja xJw egv @@ -53410,20 +54315,20 @@ bQM bQM bQM lHx -aKW -aKW -sJT -kKZ -hjP -gCX -sJT -sJT -sJT -sJT -sJT -ngG -vbl -pER +svP +svP +hvL +hBf +taj +nMm +hvL +hvL +hvL +hvL +hvL +gsU +iON +vrO jlk jlk jlk @@ -53431,8 +54336,8 @@ jlk jlk jlk jlk -sVP -gCX +uzG +nMm jlk jlk jlk @@ -53441,12 +54346,12 @@ jlk jlk jlk jlk -aKW +svP rGq rGq knh -sJT -aKW +hvL +svP rGq rGq rGq @@ -53460,31 +54365,31 @@ irB irB itN itN -uGM -cdD -qNW -xTi -bDN -bDN -bDN -bDN -gqH -tQJ +oPU +tkj +fdR +spA +tiZ +tiZ +tiZ +tiZ +wCI +lAn dqa sbf vhI sQL -mRz -mEc -bDN -bDN -bDN -hqF -hmd -itC -bDN -bDN -xIo +oWG +mtG +tiZ +tiZ +tiZ +uVO +tXD +wSo +tiZ +tiZ +qhk wbI wbI wbI @@ -53535,8 +54440,8 @@ cAW agi agi aPD -bpC -bJz +tpE +gXF bPK clN clN @@ -53544,76 +54449,76 @@ clN clN clN crM -csH -cxd -wVK -wVK -wVK -wVK -wVK -lwK -njx -lwK -wVK -wVK -wVK -wVK -wVK -lwK -wVK -wVK -wVK -fGb +uYS +mlu +hrw +hrw +hrw +hrw +hrw +lvD +lLQ +lvD +hrw +hrw +hrw +hrw +hrw +lvD +hrw +hrw +hrw +jHz hoZ hoZ -wVK -wVK -wVK -wVK -fGb -tik +hrw +hrw +hrw +hrw +jHz +nhM mQG oEs -gFG -gma -gma +cOj +bNE +bNE apf -gma -gma +bNE +bNE lag -gma -gma -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ +bNE +bNE +pQs +pQs +pQs +pQs +pQs +pQs +pQs apf gHy -bfZ -hyz -gma -gma -bfZ -cMJ +pQs +unA +bNE +bNE +pQs +ioE rja jta jta rja -xnA +xhM rja rja rja -gma -xSd -vky -vky -dOs -gma -gma -gma +bNE +lge +sWe +sWe +lRr +bNE +bNE +bNE rja xJw egv @@ -53624,17 +54529,17 @@ bQM rZP lHx rZP -sJT -sVP -hjP -gCX -sJT -qGX -qGX -qGX -qGX -qGX -qGX +hvL +uzG +taj +nMm +hvL +oTy +oTy +oTy +oTy +oTy +oTy jlk jlk jlk @@ -53643,15 +54548,15 @@ jlk jlk jlk jlk -hIo -iDE +jFz +aik jlk jlk jlk jlk jlk jlk -aKW +svP rGq rGq rGq @@ -53672,22 +54577,22 @@ irB irB itN itN -uGM -cdD -iDo +oPU +tkj +sRE jgu anu wbI jcv wbI -cdD -ajK +tkj +oer pGK uxN gTc sQL -tov -ajK +nWk +oer wbI jcv wbI @@ -53747,8 +54652,8 @@ cAW agi agi aPD -bpG -bJz +uOx +gXF bQh hoZ hoZ @@ -53756,73 +54661,73 @@ hoZ hoZ jXz jXz -dBC -naj +jcG +hsl jXz -olT -olT -olT +pgx +pgx +pgx jXz -tdb -fGb -naj +wFd +jHz +hsl aWV -olT -olT -olT +pgx +pgx +pgx aWV -tdb +wFd hoZ hoZ hoZ hoZ -fGb +jHz hoZ hoZ -fGb -fGb -fGb -gma -tik +jHz +jHz +jHz +bNE +nhM npx oTz -gFG -gma -gma -gma +cOj +bNE +bNE +bNE apf -gma +bNE lag apf apf -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -gma -eWu +pQs +pQs +pQs +pQs +pQs +pQs +pQs +pQs +pQs +pQs +pQs +pQs +pQs +bNE +gAh rja rja rja rja -nYw -nYw -lmX +hKN +hKN +weV rja -qjg -bfZ +paF +pQs apf -imH -gma +aHH +bNE rja vVi vVi @@ -53836,45 +54741,45 @@ bQM bQM bQM lHx -sJT -sVP -hjP -gCX -sJT -sJT -pGg -pGg -pGg -sJT -sJT -pGg -pGg +hvL +uzG +taj +nMm +hvL +hvL +bHR +bHR +bHR +hvL +hvL +bHR +bHR jlk jlk jlk jlk -aKW -bVh -sVP -gCX -aKW -aKW +svP +ing +uzG +nMm +svP +svP jlk jlk -aKW -aKW -aKW -aKW -aKW +svP +svP +svP +svP +svP dYI yio yio hyT -wbn +sfI ubN -wbn -wbn -ujJ +sfI +sfI +bPT qCa jlk irB @@ -53883,23 +54788,23 @@ irB irB itN itN -tgv -uGM -cdD -jqg +sIz +oPU +tkj +bcT jgu jgu jBQ nAf dLq -cdD -ajK +tkj +oer pGK hRX sbf sQL -cdD -ajK +tkj +oer jBQ oRR dLq @@ -53960,78 +54865,78 @@ aWV aWV aWV aPD -bKM +caA bQh hoZ hoZ -cqU +lun jXz jXz -ieW -fGb -nBV -nyl -wNw -rKS -uhd -chS -uTX -fGb -nBV -nyl -wNw -ykT -uhd -chS -uTX +xrd +jHz +oiV +nmh +aeb +wLS +dLL +cRK +jnU +jHz +oiV +nmh +aeb +otg +dLL +cRK +jnU hoZ -ghU -eEo -eEo +vZs +qFs +qFs hoZ -fGb -eEo -eEo +jHz +qFs +qFs jXz jXz -bfZ -xSd -vky -vky -dOs -bfZ +pQs +lge +sWe +sWe +lRr +pQs rja egv -bfZ -bfZ +pQs +pQs egv egv -gma -rKZ -bfZ -bfZ -eWu -gma -gma -gma -gma -bfZ -bfZ -vsc -bfZ +bNE +dbi +pQs +pQs +gAh +bNE +bNE +bNE +bNE +pQs +pQs +wUs +pQs gHy -bfZ -gma -gma -gma +pQs +bNE +bNE +bNE rja rja -qPG -yfH -ujC +scH +hyo +laX rja -qIZ -oKa +irQ +lyY apf iTm apf @@ -54048,36 +54953,36 @@ bQM bQM bQM lHx -weN -sVP -hjP -piL -peY -peY -peY -peY -peY -xxh -peY -peY -peY -peY -peY -peY -peY -peY -peY -eUk -gCX -aKW -aKW -aKW -aKW -aKW -fQx -aKW +qzM +uzG +taj +dMt +wsz +wsz +wsz +wsz +wsz +nVR +wsz +wsz +wsz +wsz +wsz +wsz +wsz +wsz +wsz +sUV +nMm +svP +svP +svP +svP +svP +hSA +svP rGq -aKW +svP nLV wIJ iyS @@ -54086,7 +54991,7 @@ rGq rGq uyM rGq -bka +dga lde jlk uGT @@ -54095,23 +55000,23 @@ uGT itN itN itN -xoI -uGM -cdD -qyi -gng +kMC +oPU +tkj +eEX +aBD kXD wbI rBz wbI -uds -ajK -iEi -qPC -qPC -dMc -cdD -ajK +qUC +oer +sSM +sTm +sTm +uCX +tkj +oer wbI rBz wbI @@ -54172,32 +55077,32 @@ aPD aPD aPD aPD -fGb +jHz bQh hoZ hoZ hoZ jXz -ulW -fWS -fGb -nBV -lwK -uTX -njx -nBV -lwK -uTX -fGb -uNR -lwK -uTX -njx -nBV -lwK -uTX -fGB -eEo +maY +fUC +jHz +oiV +lvD +jnU +lLQ +oiV +lvD +jnU +jHz +nkM +lvD +jnU +lLQ +oiV +lvD +jnU +eSH +qFs agi agi agi @@ -54206,47 +55111,47 @@ aWV agi agi aWV -bfZ -bfZ -gma -gma -bfZ -bfZ +pQs +pQs +bNE +bNE +pQs +pQs xJw egv egv egv rja -cDj -bfZ -bfZ -bfZ -cDj +rqG +pQs +pQs +pQs +rqG rja vVi vVi vVi rja -gma -gma -bfZ -fIj -bfZ -bfZ -bfZ -bfZ -bfZ -gma +bNE +bNE +pQs +kds +pQs +pQs +pQs +pQs +pQs +bNE rja rja rja rja rja -gma -imH +bNE +aHH iTm iTm -ibb +lRW vVi toE mDz @@ -54260,70 +55165,70 @@ bQM bQM bQM lHx -sJT -sVP -hjP -whp -hjP -hjP -hjP -hjP -hjP -hjP -nCa -hjP -hjP -hjP -hjP -whp -hjP -hjP -ruE -hjP -gCX -aKW -aKW +hvL +uzG +taj +stf +taj +taj +taj +taj +taj +taj +jjH +taj +taj +taj +taj +stf +taj +taj +nOy +taj +nMm +svP +svP rGq -aKW -hjP -hjP -hjP -aKW -aKW +svP +taj +taj +taj +svP +svP bAc hgS hgS lvy eTb -wbn -wbn -wbn -rOo -wRW +sfI +sfI +sfI +dNx +siK jlk -pmM -gmv -xub -nGz -xub -lJm -xub -uGM -cdD -ajK -btz +aIB +bSS +wgO +dDn +wgO +slc +wgO +oPU +tkj +oer +uLf kXD wbI wbI wbI -cdD -mkB -vwc -vwc -dFE -vwc -oTU -ajK +tkj +exI +oyT +oyT +nOi +oyT +oWw +oer wbI wbI tNV @@ -54379,35 +55284,35 @@ bTo pcu pcu agi -aCi -aVT -bac -bdS -bry +hCp +wSc +gvZ +ivD +lkM hoZ bQh hoZ -fGb +jHz jXz aWV jXz -mlM -fGb -nBV -nyl -vco -wVK -cfz -chS -uTX -fGb -nBV -nyl -vco -wVK -uFX -chS -uTX +eEJ +jHz +oiV +nmh +jCe +hrw +cnH +cRK +jnU +jHz +oiV +nmh +jCe +hrw +ddN +cRK +jnU agi aWV aWV @@ -54420,8 +55325,8 @@ egv egv egv egv -gma -gma +bNE +bNE apf xJw xJw @@ -54429,34 +55334,34 @@ xJw xJw xJw rja -xWN -bfZ -bfZ -gma +fLX +pQs +pQs +bNE rja rja -iCP +bya xxD vkh rja vVi rja -gma -bfZ -gma -gma +bNE +pQs +bNE +bNE apf -bfZ -bfZ -oeZ -gma -gma -jfN -gma -gma -bfZ +pQs +pQs +qfg +bNE +bNE +dfh +bNE +bNE +pQs apf -bfZ +pQs kzz rja rja @@ -54472,70 +55377,70 @@ xJw bQM bQM rZP -lOo -sVP -hjP -hxC -bEn -bEn -bEn -bEn -bEn -bEn -bEn -bEn -bEn -bEn -bEn -bEn -kxM -bEn -bEn -bEn -lwG +lvf +uzG +taj +ugk +mLY +mLY +mLY +mLY +mLY +mLY +mLY +mLY +mLY +mLY +mLY +mLY +tHw +mLY +mLY +mLY +aJv rGq uNM uNM -aKW -hjP -aKW +svP +taj +svP fpn -aKW +svP fpn -aKW +svP fpn -aKW +svP fpn -tEj +kIg fpn -aKW +svP fpn -aKW +svP fpn vwM vhB -xub +wgO vhB -xub +wgO vhB -xub +wgO vhB -uGM -dGc -ajK -vfQ +oPU +gyt +oer +ckZ kXD aBJ wKb wbI -iFj -bDN -bDN -gqH -mEc -bDN -bDN -xIo +mPX +tiZ +tiZ +wCI +mtG +tiZ +tiZ +qhk wbI wZv lzJ @@ -54599,27 +55504,27 @@ aPD hoZ bQh hoZ -fGb +jHz jXz aWV jXz jXz -dBC -naj +jcG +hsl jXz -ond -ond -ond +kPf +kPf +kPf jXz -tdb -fGb -naj +wFd +jHz +hsl aWV -ond -ond -ond +kPf +kPf +kPf aWV -tdb +wFd agi aWV aWV @@ -54633,21 +55538,21 @@ egv egv egv apf -gma -gma +bNE +bNE rja xJw xJw xJw xJw rja -wwZ -bfZ -bfZ -gma +wKl +pQs +pQs +bNE rja -wmp -bMr +sGC +jYK xxD xxD sII @@ -54657,19 +55562,19 @@ vVi kze vVi rja -cDj -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -gma +rqG +pQs +pQs +pQs +pQs +pQs +pQs +pQs +pQs +pQs +pQs +pQs +bNE vVi xxD xxD @@ -54678,17 +55583,17 @@ vyu xxD xxD xxD -bMr -jre +jYK +mIQ wFU bQM bQM rZP -dbX -sVP -hjP -gCX -hJc +sGx +uzG +taj +nMm +gxQ rZP lHx lHx @@ -54700,42 +55605,42 @@ lHx jlk jlk jlk -sJT -uxa -saI -sJT -kPi -sJT +hvL +gbV +uTs +hvL +ufN +hvL jlk uNM ubN -hjP +taj ubN fpn -aKW +svP fpn -aKW +svP fpn -aKW +svP fpn -aKW +svP fpn -tHr +mGX fpn -aKW +svP fpn vwM vhB -xub +wgO vhB -xub +wgO vhB -xub +wgO vhB -uGM -cdD -ajK -vfQ +oPU +tkj +oer +ckZ kXD kIe tas @@ -54743,8 +55648,8 @@ tas tTA wbI wbI -cdD -kmE +tkj +ydd wbI wbI wbI @@ -54808,30 +55713,30 @@ aWV aWV aWV aPD -bNN +iGx bQh hoZ -fGb +jHz jXz aWV jXz -ieW -fGb -nBV -nyl -wNw -ykT -uhd -chS -uTX -fGb -nBV -nyl -wNw -ykT -uhd -chS -uTX +xrd +jHz +oiV +nmh +aeb +otg +dLL +cRK +jnU +jHz +oiV +nmh +aeb +otg +dLL +cRK +jnU agi aWV aWV @@ -54844,22 +55749,22 @@ egv apf apf lag -gma -gma +bNE +bNE apf -gma +bNE egv egv rja rja ccH -cDj -bfZ -bfZ -mbN +rqG +pQs +pQs +cjG rja -jOr -bMr +hzi +jYK xxD xxD xxD @@ -54867,21 +55772,21 @@ leF xxD xxD xxD -ntg +dsW rja rja -gma -bfZ -bfZ -dUs -iOt -iOt -uAv -bfZ -bfZ -bfZ -bfZ -bfZ +bNE +pQs +pQs +oEi +kyF +kyF +xDk +pQs +pQs +pQs +pQs +pQs tob xxD xxD @@ -54890,17 +55795,17 @@ xxD xxD xxD xxD -bMr -tqN +jYK +kAc wFU bQM bQM lHx -qCs -sVP -hjP -gCX -sJT +jkj +uzG +taj +nMm +hvL lHx bQM bQM @@ -54920,43 +55825,43 @@ rGq jlk jlk uNM -kTK -aKW -pBg +iFC +svP +cBm fpn -aKW +svP fpn -aKW +svP fpn -aKW +svP fpn -aKW +svP fpn -aKW +svP fpn -aKW +svP fpn vwM vhB -xub +wgO vhB -xub +wgO vhB -xub +wgO vhB -uGM -cdD -ajK -vfQ +oPU +tkj +oer +ckZ jgu jgu -sel -qjc -pAO +hPi +jUG +oKf jgu wuC -bod -wLJ +roi +tMb xIh itN wbI @@ -55019,31 +55924,31 @@ agi agi agi aPD -bAb -fGb +gkE +jHz bQh hoZ -cmm +teu jXz aWV -llG -fWS -fGb -nBV -lwK -uTX -njx -nBV -lwK -uTX -fGb -nBV -lwK -uTX -njx -nBV -fSl -uTX +cje +fUC +jHz +oiV +lvD +jnU +lLQ +oiV +lvD +jnU +jHz +oiV +lvD +jnU +lLQ +oiV +qJR +jnU agi aWV aWV @@ -55058,20 +55963,20 @@ apf lag egv apf -gma -gma +bNE +bNE egv egv -cMJ -qSv -cDj -bfZ -bfZ -bfZ -gma +ioE +fCw +rqG +pQs +pQs +pQs +bNE rja -sCj -bMr +lMq +jYK xxD xxD xxD @@ -55082,18 +55987,18 @@ xxD xxD jta vVi -gma -bfZ -bfZ -tik +bNE +pQs +pQs +nhM mMH aBs -gFG -eWu -bfZ -eWu -bfZ -gma +cOj +gAh +pQs +gAh +pQs +bNE rja rja rja @@ -55102,17 +56007,17 @@ rja tDQ xxD xxD -bMr -woI +jYK +hDb wFU bQM bQM lHx -sJT -sVP -hjP -gCX -sJT +hvL +uzG +taj +nMm +hvL lHx bQM bQM @@ -55126,49 +56031,49 @@ jlk jlk sgw sgw -jFN +bvr rGq sgw sgw jlk uNM ubN -aKW +svP ubN -tEj -hjP -hjP -hjP -hjP -hjP -hjP -hjP -hjP -hjP -hjP -hjP -hjP +kIg +taj +taj +taj +taj +taj +taj +taj +taj +taj +taj +taj +taj rZP -xub -xub -xub -xub -xub -xub -xub -gte -cdD -ajK -kEp -uRK -uRK -sHb -xub -btz +wgO +wgO +wgO +wgO +wgO +wgO +wgO +dmT +tkj +oer +ove +dJe +dJe +vuX +wgO +uLf jgu jgu -sel -aiK +hPi +gtf jgu itN jBQ @@ -55231,31 +56136,31 @@ agi agi agi aPD -bDC -fGb +eYs +jHz bQk hoZ hoZ jXz aWV jXz -mlM -fGb -nBV -nyl -vco -xfw -quy -chS -uTX -qqX -nBV -nyl -vco -rHd -uFX -chS -uTX +eEJ +jHz +oiV +nmh +jCe +dXi +hPL +cRK +jnU +haJ +oiV +nmh +jCe +mpN +ddN +cRK +jnU agi aWV aWV @@ -55269,18 +56174,18 @@ apf egv egv egv -gma -gma -gma -bfZ -eWu -gma -bfZ -bfZ -bfZ -bfZ -bfZ -gma +bNE +bNE +bNE +pQs +gAh +bNE +pQs +pQs +pQs +pQs +pQs +bNE rja rja vVi @@ -55295,36 +56200,36 @@ xxD jta rja rja -gma -bfZ -tik +bNE +pQs +nhM dGx kLI -gFG -dUs -iOt -iOt -uAv -bfZ -gma +cOj +oEi +kyF +kyF +xDk +pQs +bNE rja -rvu -lmX -xnA +hSk +weV +xhM xxD xxD xxD -bMr -vXr +jYK +whr xJw bQM bQM lHx -sJT -sVP -hjP -gCX -sJT +hvL +uzG +taj +nMm +hvL lHx bQM bQM @@ -55344,44 +56249,44 @@ fmg jlk jlk uNM -aJf -aKW -oWV -hjP -thi -thi -thi -thi -hjP +fhB +svP +oIz +taj +qAQ +qAQ +qAQ +qAQ +taj ohY eTb -gAa +icT eTb -bBX +pdP amF rZP rZP -xnS -xnS -xnS -xnS -xkP -lIx -xub -uGM -iFj -xIo -uGM -uGM -uGM -lRI -uGM -kEp -hOR -hOR -aMZ -knv -hOR +lgx +lgx +lgx +lgx +mLL +cOC +wgO +oPU +mPX +qhk +oPU +oPU +oPU +gAn +oPU +ove +dbr +dbr +vMN +fGi +dbr itN wbI qJL @@ -55443,31 +56348,31 @@ agi agi agi aPD -bHI +auj hoZ bQh hoZ -fGb +jHz hoZ jXz jXz jXz -dBC -naj +jcG +hsl jXz -kcw -pxa -kcw +kue +xgU +kue jXz -tdb -fGb -naj +wFd +jHz +hsl aWV -kcw -kcw -kcw +kue +kue +kue aWV -wLX +iIZ agi agi dxS @@ -55481,23 +56386,23 @@ egv egv eXp eXp -gma -gma -gma -gma -gma -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -cDj +bNE +bNE +bNE +bNE +bNE +pQs +pQs +pQs +pQs +pQs +pQs +pQs +rqG rja -gma -bfZ -gma +bNE +pQs +bNE rja vVi rja @@ -55507,18 +56412,18 @@ xxD xxD soN rja -gma -bfZ -xSd -vky -vky -dOs -tik +bNE +pQs +lge +sWe +sWe +lRr +nhM mMH aBs -gFG -bfZ -gma +cOj +pQs +bNE rja rja rja @@ -55532,11 +56437,11 @@ xJw xJw xJw xJw -jiW -jiW -jiW -jiW -jiW +guz +guz +guz +guz +guz cEw cEw cEw @@ -55546,13 +56451,13 @@ cEw cEw cEw cEw -jiW -jiW -bIg +guz +guz +brY okv -jiW -bIg -jiW +guz +brY +guz aTo aTo rZP @@ -55573,26 +56478,26 @@ rZP rZP rZP rZP -biH -biH -biH -biH +juX +juX +juX +juX itN itN itN itN -bLz -xnS +dGA +lgx vhB vhB -xnS +lgx vhB vhB -xnS +lgx vhB vhB -xnS -xnS +lgx +lgx vhB itN itN @@ -55659,28 +56564,28 @@ hoZ hoZ bUw hoZ -fGb +jHz hoZ jXz jXz -ieW -njx -lwK -ykT -ykT -ykT -ykT -ykT -lwK -njx -lwK -ykT -ykT -ykT -ykT -ykT -lwK -uTX +xrd +lLQ +lvD +otg +otg +otg +otg +otg +lvD +lLQ +lvD +otg +otg +otg +otg +otg +lvD +jnU agi agi agi @@ -55691,49 +56596,49 @@ qlf egv egv eXp -erB -roC -sLT -gma -eWu -gma -gma -bfZ -bfZ -bfZ -bfZ -eGV -bfZ -bfZ -bfZ -gma -bfZ -bfZ -bfZ -gma -gma +jnm +kiR +wNM +bNE +gAh +bNE +bNE +pQs +pQs +pQs +pQs +sAp +pQs +pQs +pQs +bNE +pQs +pQs +pQs +bNE +bNE vVi bQy rja -xnA +xhM rja rja rja -qIZ -mKt -dUs -iOt -iOt -uAv -tik +irQ +wbP +oEi +kyF +kyF +xDk +nhM dGx kLI -gFG -bfZ -bfZ -gma -gma -gma +cOj +pQs +pQs +bNE +bNE +bNE nip apf apf @@ -55744,81 +56649,81 @@ ojv apf apf nip -jiW -ktD -joz -joz -jiW +guz +jhp +wSU +wSU +guz bnA -wMI -fXv -fXv -xSB +mTl +vBX +vBX +frM bnA -joz -joz -lhj -jiW -aqJ -dfV -dfV -dfV +wSU +wSU +nJq +guz +iiw +awL +awL +awL xDq naf naf cqz ggd -ssD -bVO -ssD -dfV -cyd -cyd -cyd -cyd -dfV -kzO -dfV -dfV -dfV -dfV -dfV -kzO -dfV -cyd -cyd -cyd -cyd -dfV -ssD -iSi -ssD -kOM -kOM -kOM -kOM -kOM -kOM -kOM -kOM -kOM -kOM -kOM -kOM -kOM -kOM -ssD -iSi -ssD -iSi -hbC -hbC -iSi -hbC -hbC -hbC -hbC -cbb +tsc +hQk +tsc +awL +uNp +uNp +uNp +uNp +awL +tcW +awL +awL +awL +awL +awL +tcW +awL +uNp +uNp +uNp +uNp +awL +tsc +bEk +tsc +hmS +hmS +hmS +hmS +hmS +hmS +hmS +hmS +hmS +hmS +hmS +hmS +hmS +hmS +tsc +bEk +tsc +bEk +ogf +ogf +bEk +ogf +ogf +ogf +ogf +mRM bQM bQM bQM @@ -55871,29 +56776,29 @@ hoZ bNP hoZ hoZ -fGb +jHz hoZ jXz -xaS -fWS -fGb -njx -fGb -fGb -fGb -fGb -fGb -njx -tZN -uTS -fGb -fIv -fGb -fGb -fGb -njx -uTX -fGb +ddU +fUC +jHz +lLQ +jHz +jHz +jHz +jHz +jHz +lLQ +qpX +viL +jHz +tQk +jHz +jHz +jHz +lLQ +jnU +jHz agi agi bGY @@ -55903,49 +56808,49 @@ aVU bel hTs eXp -gma -bfZ +bNE +pQs apf -lDm -bfZ -bfZ -eaZ -bfZ -bfZ -gma -gma -gma -gma -bfZ -bfZ -bfZ -oeZ -bfZ -bfZ -bfZ -gma +wdU +pQs +pQs +gnQ +pQs +pQs +bNE +bNE +bNE +bNE +pQs +pQs +pQs +qfg +pQs +pQs +pQs +bNE rja rja rja -nYw -nYw -ajX +hKN +hKN +fZT rja -gma -bfZ -tik +bNE +pQs +nhM mMH aBs -gFG -xSd -vky -vky -dOs -hOW -bfZ +cOj +lge +sWe +sWe +lRr +qwK +pQs tpY -bfZ -gma +pQs +bNE nip apf apf @@ -55956,22 +56861,22 @@ apf apf apf nip -jiW -joz -fXv -joz -jiW +guz +wSU +vBX +wSU +guz uLJ -fzs -fXv -hgC -fXv +sUc +vBX +kxU +vBX wAn -joz -joz -lhj -jiW -rol +wSU +wSU +nJq +guz +gcx okv okv okv @@ -56030,7 +56935,7 @@ bQM bQM bQM bQM -gEU +bmT bQM bQM bQM @@ -56080,32 +56985,32 @@ agi agi agi hoZ -fGb +jHz hoZ hoZ hoZ hoZ jXz jXz -mlM -njx -lwK +eEJ +lLQ +lvD agi agi agi agi agi -lwK -njx -lwK -wVK -wVK -wVK -wVK -wVK -lwK -fpi -fGb +lvD +lLQ +lvD +hrw +hrw +hrw +hrw +hrw +lvD +nzw +jHz agi agi whf @@ -56115,134 +57020,134 @@ rBs nxl whf apf -gma -gGu +bNE +oDh vzh -lDm -uLd -xwD -bfZ -gGu -gma +wdU +pma +oJm +pQs +oDh +bNE rja rja rja rja -gma -eWu -bfZ -bfZ -bfZ -fIj -bfZ -eWu -cDj +bNE +gAh +pQs +pQs +pQs +kds +pQs +gAh +rqG rja rja -qPG -ujC +scH +laX rja rja -gma -bfZ -tik +bNE +pQs +nhM dGx kLI -gFG -eWu -bfZ -eWu -bfZ -bfZ -bfZ -bfZ -vsc -gma +cOj +gAh +pQs +gAh +pQs +pQs +pQs +pQs +wUs +bNE rja rja -eWu -eWu +gAh +gAh rja rja -eWu -eWu +gAh +gAh rja rja -jiW -joz -joz -joz -jiW +guz +wSU +wSU +wSU +guz uXw -fXv -akw -fXv -fXv +vBX +qqQ +vBX +vBX bnA -joz -joz -lhj -jiW -rol +wSU +wSU +nJq +guz +gcx okv -aqJ -dfV +iiw +awL iBP vcf vcf lku mzT -ssD -ciX -ssD -dfV -cyd -cyd -cyd -cyd -dfV -mZV -dfV -dfV -dfV -dfV -dfV -mZV -dfV -cyd -cyd -cyd -cyd -dfV -ssD -iSi -ssD -kOM -kOM -kOM -kOM -kOM -kOM -kOM -kOM -kOM -kOM -kOM -kOM -kOM -kOM -ssD -iSi -ssD -iSi -hbC -hbC -iSi -hbC -hbC -hbC -hbC -ogo +tsc +wtm +tsc +awL +uNp +uNp +uNp +uNp +awL +exW +awL +awL +awL +awL +awL +exW +awL +uNp +uNp +uNp +uNp +awL +tsc +bEk +tsc +hmS +hmS +hmS +hmS +hmS +hmS +hmS +hmS +hmS +hmS +hmS +hmS +hmS +hmS +tsc +bEk +tsc +bEk +ogf +ogf +bEk +ogf +ogf +ogf +ogf +fWI bQM bQM bQM @@ -56300,26 +57205,26 @@ hoZ jXz jXz jXz -njx -njx +lLQ +lLQ jXz agi agi -ond +kPf jXz -uTX -fGb +jnU +jHz agi aWV -olT -lwK -mVg +pgx +lvD +mgO aWV hoZ -uTX -fGb -nBV -lwK +jnU +jHz +oiV +lvD oKV rBs aVU @@ -56327,48 +57232,48 @@ bOK rBs khu apf -bfZ +pQs apf -uLd -uLd -bfZ -uLd -bfZ -oeZ -mbN +pma +pma +pQs +pma +pQs +qfg +cjG rja -jdo -pTA +pKf +vtc rja -cDj -gma -bfZ -bfZ -bfZ -bfZ -bfZ -bfZ -dAA -hyX +rqG +bNE +pQs +pQs +pQs +pQs +pQs +pQs +mTs +nYB rja rja rja rja -cDj -bfZ -bfZ -xSd -vky -vky -dOs -bfZ +rqG +pQs +pQs +lge +sWe +sWe +lRr +pQs apf -vsc +wUs apf -bfZ +pQs apf -bfZ -gma +pQs +bNE rja rja rja @@ -56381,28 +57286,28 @@ rja rja rja bnA -mfK -jiW -jiW -iYI +tXt +guz +guz +cYe bnA -mfK -pJa -fXv -jiW +tXt +rnl +vBX +guz bnA -qNw -joz -lhj -jiW -rol +vDf +wSU +nJq +guz +gcx pLQ -rol -jiW -jiW -jiW -jiW -ayA +gcx +guz +guz +guz +guz +gTW cEw cEw cEw @@ -56421,26 +57326,26 @@ tRH tRH tRH tRH -biH -biH -biH -biH +juX +juX +juX +juX itN itN itN itN -sqB -gyU +iVo +nkF vhB vhB -gyU +nkF vhB vhB -gyU +nkF vhB vhB -gyU -gyU +nkF +nkF vhB itN itN @@ -56502,36 +57407,36 @@ agi agi agi agi -fGb -fGb -fGb -ghU -fGb +jHz +jHz +jHz +vZs +jHz hoZ hoZ hoZ -fGb +jHz moW -njx -njx -nyl -agi -ykT -uhd -chS -uTX -fGb -agi -nyl -wNw -ykT -ifq -chS +lLQ +lLQ +nmh +agi +otg +dLL +cRK +jnU +jHz +agi +nmh +aeb +otg +njN +cRK rPZ -uTX -fGb -nBV -lwK +jnU +jHz +oiV +lvD aVU aVU aVU @@ -56540,46 +57445,46 @@ aVU gec apf nre -bfZ -bfZ -uLd -bfZ -bfZ -bfZ -bfZ -gma +pQs +pQs +pma +pQs +pQs +pQs +pQs +bNE rja -lAv -nYw +lYj +hKN rja rja rja -gma -hgr -gma -gma -bfZ -bfZ -bfZ -bfZ -nAr -gbD -iGL -nAr -bfZ -bfZ -bfZ -bfZ -bfZ -gma -gma -wZo -gma -gma +bNE +tmL +bNE +bNE +pQs +pQs +pQs +pQs +raL +rty +kwZ +raL +pQs +pQs +pQs +pQs +pQs +bNE +bNE +nOg +bNE +bNE apf -bfZ -bfZ -hOW +pQs +pQs +qwK apf rja rja @@ -56593,72 +57498,72 @@ rja rja rja bnA -vUa -ifs -nuE -vUa +iKF +ykw +alC +iKF bnA jbU xZD bnA bgc bnA -joz -vrc -lhj -jiW -rol +wSU +kok +nJq +guz +gcx okv -rol -jiW -joz +gcx +guz +wSU uSA uSA -aHx +pRp bnA -dnx -jiW -ioP +wps +guz +jHp wrR -iyu -oqn -oqn -cRS +mpE +vOm +vOm +psx ipd -npp -lfJ -coT -kul -kul -hja -hyR -hGC -iyq -gyU -gyU -gyU -xub -xub -xub -xub -hhy -aNn -uGM -uGM -gUO -uGM -uGM -uGM -uGM -uGM -hhy -aNn -uGM -uGM -uGM -wyP -uGM -uGM +soj +iTJ +kbo +tSm +tSm +iTs +bqC +art +fvr +nkF +nkF +nkF +wgO +wgO +wgO +wgO +xVW +ijt +oPU +oPU +mpb +oPU +oPU +oPU +oPU +oPU +xVW +ijt +oPU +oPU +oPU +wQW +oPU +oPU itN itN itN @@ -56717,33 +57622,33 @@ agi hoZ vjT gFg -ipy -fGb +oxv +jHz hoZ hoZ hoZ -fGb +jHz hoZ -njx -njx -lwK -uTX -njx -qIO -lwK -uTX -ugC -nBV -lwK -uTX +lLQ +lLQ +lvD +jnU +lLQ +fKn +lvD +jnU +lDU +oiV +lvD +jnU hoZ -nBV -fNp +oiV +kHI hoZ -uTX -fGb -nBV -lwK +jnU +jHz +oiV +lvD aVU aVU imz @@ -56751,18 +57656,18 @@ aVU aVU khu tfX -gFc -gFc -bfZ -bfZ -eWu -gGu -bfZ -bfZ -gma +vuS +vuS +pQs +pQs +gAh +oDh +pQs +pQs +bNE rja rja -xnA +xhM rja jta rja @@ -56770,101 +57675,101 @@ vVi vVi vVi rja -gma -dAA -bfZ -bfZ -qPT -ddE -qwJ -eTn -bfZ -bfZ -bfZ -gma -gma +bNE +mTs +pQs +pQs +rKA +qCk +cvd +rRz +pQs +pQs +pQs +bNE +bNE bis bis bis bis bis -muO +dBy mNh ycC -vYL -gXt -muO +idb +eQQ +dBy bis bis bis bis bis bis -pxR -fcX -bEO -kEE +jsf +heo +rJF +akp xvB -jiW -kpm -fXv -eAy -jiW -kpm -fXv -eAy -jiW +guz +aAA +vBX +fXI +guz +aAA +vBX +fXI +guz xvB -kpm -eZm -tMn -jiW -rol +aAA +xNn +eBr +guz +gcx pLQ -rol -jiW -joz -ndt -pLh -nyo +gcx +guz +wSU +yeX +pen +byT bnA -vjz -jiW -vjz +mSo +guz +mSo wrR -jGA -jGA -jGA -xFB +xvv +xvv +xvv +rLA ipd -npp -cLR -wRZ -wRZ -wRZ -pDg -wRZ -vxV -xub +soj +rKy +xiL +xiL +xiL +iQz +xiL +rft +wgO vhB vhB -xub +wgO vhB vhB -xub +wgO vhB -cdD -ajK +tkj +oer jgu jgu -uGM -uGM +oPU +oPU fZD wbI wbI agG -xzI -tVB +vFc +htO nKX wbI wbI @@ -56873,7 +57778,7 @@ wbI wbI wbI wbI -uGM +oPU jgu jgu itN @@ -56930,32 +57835,32 @@ hoZ gFg hoZ gFg -gEF +nub gzb gzb gzb -gEF +nub hoZ -njx -njx -nyl -vco -wVK -uFX -rMt -uTX -fGb -uXu -lwK -vco -pxa -uFX -chS +lLQ +lLQ +nmh +jCe +hrw +ddN +qAk +jnU +jHz +vWL +lvD +jCe +xgU +ddN +cRK hoZ -uTX -fGb -nBV -lwK +jnU +jHz +oiV +lvD rBs rBs aVU @@ -56963,36 +57868,36 @@ aVU vDR sUY apf -bfZ +pQs umZ -orG -bfZ -gFc -bfZ -bfZ -eGV -bfZ -gma +jIz +pQs +vuS +pQs +pQs +sAp +pQs +bNE vVi xxD -vXS +pVc xxD -vXr -upF -ejp -kdw +whr +dwJ +gnL +vvT rja -qwh -bfZ -gma -gma -nAr -mXY -qJJ -nAr -gma -gma -gma +dhL +pQs +bNE +bNE +raL +wND +imp +raL +bNE +bNE +bNE bis bis bis @@ -57002,81 +57907,81 @@ bis bis wGM ycC -gXt +eQQ ycC mNh dDU -olC +rkv bis bis bis -uCW -vmH -bEO -bEO -bEO -kEE +tEA +bQL +rJF +rJF +rJF +akp okv -jiW -kpm -fXv -eAy -jiW -kpm -fXv -eAy -jiW +guz +aAA +vBX +fXI +guz +aAA +vBX +fXI +guz okv -kpm -fUF +aAA +ojk uSA -jiW -rol +guz +gcx okv -rol -jiW -joz +gcx +guz +wSU uSA uSA -xVh -kLT -qxB -fXv -jiW +giw +noz +nSh +vBX +guz eMG -jGA -jGA -jGA -xFB +xvv +xvv +xvv +rLA ipd -xMN -cLR -wRZ -dMv -qfU -mXe -oJO -bcg -dFw -xub -xub -xub -xub -xub -xub -iNw -cdD -ajK +spb +rKy +xiL +mAt +nMp +jFh +vxm +heT +aZW +wgO +wgO +wgO +wgO +wgO +wgO +bRs +tkj +oer kXD -lsr +fnY vhB -kBV +bED wbI qUo fAv vtl -cdD -lCZ +tkj +oLF ivz jot fAv @@ -57085,8 +57990,8 @@ bNT jot fAv vtl -uGM -wRn +oPU +lgS jgu itN itN @@ -57142,30 +58047,30 @@ hoZ vjT gFg vjT -fGb +jHz lrA lrA lrA -fGb +jHz hoZ -njx -njx +lLQ +lLQ jXz -ond -ond -ond +kPf +kPf +kPf jXz -uTX -fGb -nBV -fGB -kXw -fNp -fNp +jnU +jHz +oiV +eSH +eEx +kHI +kHI aWV -fGb -uTX -fGb +jHz +jnU +jHz mbC dxS whf @@ -57174,37 +58079,37 @@ sdY rBs qLI gec -lDm -rEm +wdU +uHl nWC -sUq -eWu -lDm -eWu -gma -gFc -bfZ -bfZ +dtR +gAh +wdU +gAh +bNE +vuS +pQs +pQs tob xxD xxD xxD -bMr -bMr -iRe -aJK +jYK +jYK +fbF +bFg rja -qIZ -gma -dUs -iOt -iOt -iOt -iOt -iOt -iOt -iOt -uAv +irQ +bNE +oEi +kyF +kyF +kyF +kyF +kyF +kyF +kyF +xDk bis bis tpt @@ -57217,78 +58122,78 @@ ycC lqq ycC lqq -cmW +pJP ycC ycC -oys -ruv -ruv -ruv -tjQ -tJe -bEO -kEE +anW +wNX +wNX +wNX +ort +htX +rJF +akp okv -jiW -kpm -muZ -eAy -jiW -kpm -vxr -eAy -jiW +guz +aAA +ppQ +fXI +guz +aAA +iHu +fXI +guz okv -kpm -fUF +aAA +ojk uSA -jiW -rol +guz +gcx pLQ -rol -jiW -joz -fXv -fXv -fXv +gcx +guz +wSU +vBX +vBX +vBX uSA -ena -fXv -jiW +kfY +vBX +guz bPG -jGA -jGA -jGA -xFB +xvv +xvv +xvv +rLA ipd -xMN -cLR -tII -vxV +spb +rKy +gIs +rft wrR ipd ipd nvD -dxd +hcY vhB vhB -xub +wgO vhB vhB -xub +wgO vhB -cdD -ajK +tkj +oer kXD -tjo +cRg vhB -uGM +oPU aRT kjT qun oyC -cdD -ajK +tkj +oer aRT kjT qun @@ -57297,8 +58202,8 @@ qaO azs auQ oyC -uGM -uGM +oPU +oPU jgu jgu jgu @@ -57354,31 +58259,31 @@ hoZ gGx hoZ hoZ -fGb +jHz lrA agi lrA -fGb +jHz hoZ -njx -njx -nyl -wNw -ykT -uhd -chS -uTX -fGb -veM -lwK -wNw -esF -uhd -chS -fGb -uTX -fGb -eWu +lLQ +lLQ +nmh +aeb +otg +dLL +cRK +jnU +jHz +bRQ +lvD +aeb +aOm +dLL +cRK +jHz +jnU +jHz +gAh eXp vTv heO @@ -57387,16 +58292,16 @@ aVU bel bIZ eXp -lDm -gma -wEa -lDm -gma -njq -gma -bfZ -bfZ -gma +wdU +bNE +vgi +wdU +bNE +mMi +bNE +pQs +pQs +bNE rja rja mfR @@ -57406,17 +58311,17 @@ xxD xxD xxD vVi -dUs -iOt -hJw -gma -gma -gma -gma -gma -gma -gma -gFG +oEi +kyF +hoo +bNE +bNE +bNE +bNE +bNE +bNE +bNE +cOj bis bis sfs @@ -57428,79 +58333,79 @@ pYc lqq lqq geL -bEO +rJF ycC -uRO -ydk -ruv -bEO -bEO +bPQ +rHh +wNX +rJF +rJF ycC -bEO -kEE -bEO -kEE +rJF +akp +rJF +akp okv -jiW -kpm -ndt -pLh +guz +aAA +yeX +pen ofw -jNA -bzL -eAy -jiW +ppS +hGn +fXI +guz okv -kpm -fUF -joz -jiW -rol +aAA +ojk +wSU +guz +gcx aVd -rol -jiW -joz -fXv -fXv -fXv +gcx +guz +wSU +vBX +vBX +vBX uSA -ena -fXv -jiW +kfY +vBX +guz bPG -jGA -jGA -jGA -xFB +xvv +xvv +xvv +rLA ipd -cyO -cLR -wRZ -jya -kul -hja -hyR -hGC -sHb -xub -xub -iNw -xub -xub -xub -xub -cdD -ajK +kdq +rKy +xiL +mdS +tSm +iTs +bqC +art +vuX +wgO +wgO +bRs +wgO +wgO +wgO +wgO +tkj +oer jgu -vrw -uGM -uGM +qcX +oPU +oPU bNT kjT qun oRR -bAU -ajK +lEL +oer aRT kjT qun @@ -57509,10 +58414,10 @@ wbI cCt wbI wbI -uGM -uGM -jUI -bsF +oPU +oPU +voi +cEY jgu itN itN @@ -57566,31 +58471,31 @@ hoZ fqF hoZ hoZ -fGb +jHz lrA agi lrA -fGb +jHz hoZ -njx -njx -lwK -uTX -njx -nBV -lwK -uTX -fGb -nBV +lLQ +lLQ +lvD +jnU +lLQ +oiV +lvD +jnU +jHz +oiV hoZ hoZ -njx -nBV -fSl -fGb -uTX -fGb -eWu +lLQ +oiV +qJR +jHz +jnU +jHz +gAh nga eXp eXp @@ -57599,17 +58504,17 @@ apf apf apf eXp -gma -gma -gma +bNE +bNE +bNE rja -aVJ +oOw ccH -gma -eWu -bfZ -bfZ -cDj +bNE +gAh +pQs +pQs +rqG rja rja toE @@ -57618,17 +58523,17 @@ hqc xxD xxD tob -obT -gma -gma -gma -gma -gma -gma -gma -gma -gma -qam +wQb +bNE +bNE +bNE +bNE +bNE +bNE +bNE +bNE +bNE +umg bis bis tPz @@ -57642,77 +58547,77 @@ lqq ycC lqq sBA -jLF -rrP -vMQ -vMQ -vMQ -vNF -bEO -kEE -vLV +kzB +pBe +xow +xow +xow +wpy +rJF +akp +qif bis bnA -tGi -joz -joz -joz -hUf -joz -joz -joz -feY +wQR +wSU +wSU +wSU +hjR +wSU +wSU +wSU +tSY bnA -qNw -fUF -joz -jiW -rol +vDf +ojk +wSU +guz +gcx okv -rol -jiW -joz +gcx +guz +wSU uSA uSA -pCS -tYr -rAk -fXv -jiW +qLv +gyy +dpn +vBX +guz bPG -jGA -jGA -jGA -xFB +xvv +xvv +xvv +rLA ipd -yhE -rkr -qfU -djd -wRZ -pDg -wRZ -vxV -xub +vMs +sFd +nMp +rdo +xiL +iQz +xiL +rft +wgO hCc vhB -xub +wgO vhB vhB -lJm +slc vhB -dGc -ajK +gyt +oer kXD -nej +bmw vhB -uGM +oPU bNT kjT aPd vtl -cdD -nbU +tkj +bdb lls kjT qun @@ -57721,10 +58626,10 @@ bNT jot fAv vtl -uGM -uGM -uGM -jUI +oPU +oPU +oPU +voi jgu jgu jgu @@ -57778,30 +58683,30 @@ hoZ vjT gFg vjT -fGb +jHz lrA lrA lrA -fGb +jHz hoZ -tXQ -njx -nyl -vco -wVK -uFX -rRb -uTX -fGb -nBV +xeX +lLQ +nmh +jCe +hrw +ddN +dRk +jnU +jHz +oiV hoZ -tXQ -smX -uFX -chS +xeX +ihv +ddN +cRK agi -uTX -fGb +jnU +jHz egv nga nga @@ -57813,16 +58718,16 @@ nga nga apf apf -cMJ +ioE rja rja -xUt -gma -gma -bfZ -bfZ -wxj -gma +jzN +bNE +bNE +pQs +pQs +mCH +bNE vVi fyy toE @@ -57830,17 +58735,17 @@ toE pxk bJb rja -obT -jxY -vky -vky -vky -rKX -vky -vky -aMq -gma -gFG +wQb +qpk +sWe +sWe +sWe +mGf +sWe +sWe +sms +bNE +cOj bis bis nHm @@ -57855,76 +58760,76 @@ wMi wMi bis bis -bEO -bEO -bEO +rJF +rJF +rJF uXB -uRO -bEO -uyr -vLV +bPQ +rJF +vOO +qif bis bnA -tGi -joz -joz -joz -fXv -joz -joz -joz -feY +wQR +wSU +wSU +wSU +vBX +wSU +wSU +wSU +tSY bnA -qNw -fUF -xcf -jiW -rol +vDf +ojk +cQe +guz +gcx okv -rol -jiW -joz -ndt -pLh -nyo +gcx +guz +wSU +yeX +pen +byT bnA -ioP -mBm -ioP +jHp +myH +jHp wrR -vUn -tcJ -tcJ -lUg +tkP +pYL +pYL +jHD wrR wrR wrR wrR -cLR -dMv -mXe -oJO -bcg -dFw -xub -wvS -xub -xub -xub -xub -xub -cdD -ajK +rKy +mAt +jFh +vxm +heT +aZW +wgO +lAN +wgO +wgO +wgO +wgO +wgO +tkj +oer kXD -vyz +sBY itd -uGM +oPU bNT azs bJp oyC -hln -dfu +utL +uZt pIt azs auQ @@ -57933,12 +58838,12 @@ bNT azs auQ oyC -uGM -uGM -uGM -uGM -jUI -bsF +oPU +oPU +oPU +oPU +voi +cEY jgu itN itN @@ -57990,30 +58895,30 @@ hoZ gFg iKg gFg -gEF +nub gzb gzb gzb -gEF +nub hoZ -njx -njx +lLQ +lLQ jXz -kcw -kcw -kcw +kue +kue +kue jXz -gFK -fGb -nBV -fGB -fNp -rLC -kcw +tbm +jHz +oiV +eSH +kHI +mUK +kue aWV agi -vco -wVK +jCe +hrw qdJ apf kOB @@ -58029,12 +58934,12 @@ eXp eXp eXp rja -gma -eWu -bfZ -bfZ -bfZ -gma +bNE +gAh +pQs +pQs +pQs +bNE vVi sha pNj @@ -58042,17 +58947,17 @@ tDB rja rja rja -obT -gFG -gma -gma -gma -gma -gma -gma -obT -gma -gFG +wQb +cOj +bNE +bNE +bNE +bNE +bNE +bNE +wQb +bNE +cOj bis ycC fAZ @@ -58067,76 +58972,76 @@ clP clP bis bis -bEO -sVN +rJF +mnJ ycC -bEO -uRO -bEO -kEE -bEO -kEE +rJF +bPQ +rJF +akp +rJF +akp xvB -jiW -kpm -ndt -pLh -qkf -jNA -bzL -eAy -jiW +guz +aAA +yeX +pen +vYY +ppS +hGn +fXI +guz xvB -kpm -fUF -joz -jiW -rol +aAA +ojk +wSU +guz +gcx okv -rol -jiW -bLd +gcx +guz +eQY vJn vJn -bLg +asE bnA -hmr -jiW -vjz +kzL +guz +mSo wrR -gnm -guG -guG -guG -guG -cyO +uia +teq +teq +teq +teq +kdq ipd -flq -cLR -vxV -gyi -gyi -vyX +lzB +rKy +rft +iOX +iOX +eyO itN itN itN itN jgu -xub -xub -xub -cdD -ajK +wgO +wgO +wgO +tkj +oer jgu jgu -uGM -uGM +oPU +oPU agv rPI qJf gfL -lty -iIX +eRq +tai doq wbI tmx @@ -58145,12 +59050,12 @@ wbI wbI weX wbI -uGM -uGM -uGM -lRI -uGM -bcs +oPU +oPU +oPU +gAn +oPU +pAr jgu jgu jgu @@ -58202,34 +59107,34 @@ hoZ vjT gFg vjT -fGb +jHz hoZ hoZ hoZ hoZ hoZ -njx -tXQ +lLQ +xeX hoZ -ykT -ykT -ykT -ykT -lwK -fGb -lwK -ykT -ykT -ykT -ykT +otg +otg +otg +otg +lvD +jHz +lvD +otg +otg +otg +otg aWV jXz -fGb -fGb +jHz +jHz qdJ apf ybg -kOB +muD gyB kOB kOB @@ -58239,34 +59144,34 @@ kOB eXp eXp eXp -eWu +gAh rja -gma -gma -bfZ -bfZ -bfZ -gma +bNE +bNE +pQs +pQs +pQs +bNE rja vVi rja rja rja -dUs -iOt -hJw -gFG -gma -nAr -gbD -rVZ -nAr -gma -obT -gma -vsc +oEi +kyF +hoo +cOj +bNE +raL +rty +iXJ +raL +bNE +wQb +bNE +wUs ycC -bEO +rJF ycC lqq lqq @@ -58281,33 +59186,33 @@ tPz bis bis dje -bEO -bEO -uRO -hCS -kEE -bEO -kEE +rJF +rJF +bPQ +qJP +akp +rJF +akp okv -jiW -kpm -fXv -eAy -jiW -kpm -muZ -eAy -jiW +guz +aAA +vBX +fXI +guz +aAA +ppQ +fXI +guz okv -kpm -fUF +aAA +ojk uSA -jiW -rol +guz +gcx okv -rol -jiW -emU +gcx +guz +jYn wrR ipd ipd @@ -58316,55 +59221,55 @@ wrR wrR wrR wrR -guG -guG -guG -guG -guG -xAi +teq +teq +teq +teq +teq +orC ipd -iBi -cLR -vxV -gyi -gyi -aIK +xZU +rKy +rft +iOX +iOX +xqP tRH bQM bQM itN -ujO -uGM -uGM -xub -cdD -mkB -dkC -vwc -vwc -vwc -aDl -hhg -dFE -tQi -oTU -mAg -iKG -uGM -vNr -uGM -fdK -uGM -miB -uGM -gUO -uGM -uGM -uGM -uGM -uGM -jUI -dkP +cIQ +oPU +oPU +wgO +tkj +exI +hHr +oyT +oyT +oyT +yar +wBx +nOi +txY +oWw +mdG +wjO +oPU +eFR +oPU +ccY +oPU +sBj +oPU +mpb +oPU +oPU +oPU +oPU +oPU +voi +cUA jgu itN bQM @@ -58405,39 +59310,39 @@ bQM bQM agi agi -fGb -fGb -fGb +jHz +jHz +jHz aPD hoZ hoZ hoZ -fGb +jHz itv -fGb +jHz hoZ hoZ hoZ hoZ hoZ -njx -tXQ -fGb -fGb -fGb -fGb -fGb -uTX -fGb +lLQ +xeX +jHz +jHz +jHz +jHz +jHz +jnU +jHz hoZ -fGb -fGb -fGb -fGb -fGb -fGb -fGb -fGb +jHz +jHz +jHz +jHz +jHz +jHz +jHz +jHz egv nga kOB @@ -58451,33 +59356,33 @@ qdJ rja rja rja -eWu -dUs -pbZ -iOt -iOt -xbq -iOt -iOt -iOt -iOt -iOt -kUI -iOt -hJw -gma -gma -gFG -gma -qPT -ddE -qwJ -eTn -gma -obT -gma -gFG -gXt +gAh +oEi +qug +kyF +kyF +gZG +kyF +kyF +kyF +kyF +kyF +thI +kyF +hoo +bNE +bNE +cOj +bNE +rKA +qCk +cvd +rRz +bNE +wQb +bNE +cOj +eQQ mNh lqq mxR @@ -58495,88 +59400,88 @@ dje ycC hNY ycC -uRO -bEO -kEE -bEO -wfi +bPQ +rJF +akp +rJF +bDX okv -jiW -kpm -fXv -lFC -jiW -kpm -fXv -eAy -jiW +guz +aAA +vBX +xrz +guz +aAA +vBX +fXI +guz okv -kpm -fUF +aAA +ojk uSA -jiW -rol +guz +gcx okv -rol -jiW -nyo -vPk -ohI -lfJ -tQs -kul -kul -kul -kul -kul -kul -kul -kul -wOR -yhE +gcx +guz +byT +pVD +mKx +iTJ +rwQ +tSm +tSm +tSm +tSm +tSm +tSm +tSm +tSm +plh +vMs ipd -kGu -cLR -vxV -gyi -gyi -evH +xwo +rKy +rft +iOX +iOX +hil tRH bQM bQM itN -dMO -uGM -uGM -xub -iFj -bDN -bDN -eQv -bDN -bDN -cie -bDN -bDN -qWw -hue -gKt -eoR -uGM -wFE -uGM -uGM -uJX -qUe -uGM -uGM -uGM -uGM -uGM -uGM -uGM -dAk -lrC +qeR +oPU +oPU +wgO +mPX +tiZ +tiZ +kJd +tiZ +tiZ +gkC +tiZ +tiZ +hHC +hgP +ecD +exa +oPU +dkl +oPU +oPU +qVW +vtk +oPU +oPU +oPU +oPU +oPU +oPU +oPU +tmX +xUr jgu itN bQM @@ -58617,80 +59522,80 @@ bQM bQM agi agi -fGb +jHz aWV agi agi hoZ hoZ -fGb +jHz hoZ hoZ hoZ -fGb +jHz hoZ agi agi aWV agi jXz -wVK -wVK -wVK -wVK -lwK +hrw +hrw +hrw +hrw +lvD hoZ -fGb -nBV -lwK -wVK -wVK -wVK -wVK -lwK -fGb -fGb +jHz +oiV +lvD +hrw +hrw +hrw +hrw +lvD +jHz +jHz egv nga apf kOB kOB qdJ -qtq +ekF apf -gRy -nAr -dUs -iOt -iOt -iOt -hJw -gma +fZe +raL +oEi +kyF +kyF +kyF +hoo +bNE apf -gma -gma -gma -gma -gma -gma -gma -gma -gma -gma -gma -gma -gFG -gma -nAr -mXY -qJJ -nAr -gma -obT -gFG +bNE +bNE +bNE +bNE +bNE +bNE +bNE +bNE +bNE +bNE +bNE +bNE +cOj +bNE +raL +wND +imp +raL +bNE +wQb +cOj dWB -bEO -gXt +rJF +eQQ ycC lqq geL @@ -58707,72 +59612,72 @@ gPS dyB mNh dDU -uRO +bPQ ycC -kEE -bEO -kEE +akp +rJF +akp okv -jiW -kpm -ndt -pLh -qkf -jNA -bzL -eAy -jiW +guz +aAA +yeX +pen +vYY +ppS +hGn +fXI +guz okv -kpm -vdI -ivL -jiW -rol +aAA +aje +vTI +guz +gcx okv -rol -kGq -emU -vPk -ohI -ebm -qfU -qfU -qfU -fbL -qfU -qfU -qfU -qfU -djd -vxV -wcX +gcx +ffA +jYn +pVD +mKx +iBM +nMp +nMp +nMp +iHW +nMp +nMp +nMp +nMp +rdo +rft +aId ipd -wxo -cLR -vxV -gyi -gyi -gyi +cSh +rKy +rft +iOX +iOX +iOX tRH tRH bQM itN jgu -wGD -xub -xub +bGA +wgO +wgO wbI wbI wbI fZD -uGM -uGM +oPU +oPU hbo jJS occ qBB -ilb -vyA +vxu +onb rwu wbI uep @@ -58780,13 +59685,13 @@ wbI icS lFc rAK -uGM -uGM -jXv -uGM +oPU +oPU +aBZ +oPU vhB vhB -uGM +oPU jgu jgu jgu @@ -58829,8 +59734,8 @@ bQM bQM agi aWV -adk -alJ +tYg +clv dxS agi hoZ @@ -58838,8 +59743,8 @@ hoZ hoZ hoZ hoZ -nBV -fGb +oiV +jHz kAO agi agi @@ -58850,19 +59755,19 @@ aWV jXz jXz jXz -gEF +nub hoZ -fGb +jHz hoZ -gEF +nub jXz jXz jXz cvL -lwK +lvD hoZ -fGb -hvh +jHz +jsU apf kOB kOB @@ -58870,37 +59775,37 @@ kOB qdJ apf iTm -sVa -iOt -hJw -gma -gma -gma -gma +jWE +kyF +hoo +bNE +bNE +bNE +bNE apf -jxY -vky -vky -vky -vky -vky -vky -vky -vky -vky -vky -vky -vky -dOs +qpk +sWe +sWe +sWe +sWe +sWe +sWe +sWe +sWe +sWe +sWe +sWe +sWe +lRr rja rja rja rja rja rja -obT -gma -gFG +wQb +bNE +cOj bis ycC nzI @@ -58919,72 +59824,72 @@ clP dje ddG ddG -mWV -bEO -xDe +uEM +rJF +eqS bis bis bnA -qNw -joz -joz -joz -fXv -joz -joz -joz -feY +vDf +wSU +wSU +wSU +vBX +wSU +wSU +wSU +tSY bnA -qNw -vrc -lhj -jiW -rol +vDf +kok +nJq +guz +gcx okv -rol -wlp -emU +gcx +vrS +jYn wrR wrR -tWo -wRZ -gyi -nnX -dyd -dyd -vqb -kCG -wRZ -cLR -wcm -kWD +tql +xiL +iOX +pGy +eYN +eYN +ybx +jqM +xiL +rKy +fzp +aTO ipd -tyO -cLR -vxV -oex -gyi -dXH -dXH +tWh +rKy +rft +tYQ +iOX +uWe +uWe gEx bQM uGT -xub -uGM -uGM -xub +wgO +oPU +oPU +wgO bNT yge kvh wbI -uGM -uGM +oPU +oPU bNT jot nec vtl -cdD -ajK +tkj +oer bNT jot pIs @@ -58992,11 +59897,11 @@ kDN pIs fAv wbI -gUO -uGM +mpb +oPU jgu jgu -cHD +nUe cDl itN itN @@ -59041,17 +59946,17 @@ bQM agi agi aWV -aji -aqS +bPy +jyY dxS dxS hoZ bmV hoZ -uTX +jnU hoZ -nBV -fGb +oiV +jHz hoZ agi agi @@ -59059,46 +59964,46 @@ agi agi jXz jXz -uBS -uBS -lwK -lwK -tgc -lwK -lwK -wLI -kUr -jnO -dxg -bzC -lwK +oXk +oXk +lvD +lvD +pKu +lvD +lvD +bXe +iDO +oYW +qjb +qov +lvD hoZ pCX -gma +bNE iPx apf gNY egv qdJ -gRy +fZe iTm iTm -hvh -gma -gma -jxY -vky -vky -xKf -dOs +jsU +bNE +bNE +qpk +sWe +sWe +wED +lRr eXp -bFt -dCo -nAr -nAr -nAr -gma -bFt +xat +cBJ +raL +raL +raL +bNE +xat eXp dTx eXp @@ -59107,12 +60012,12 @@ eXp rja ubc gVs -hQH -hQH +lex +lex rja -obT +wQb kMq -gFG +cOj bis bis hPY @@ -59129,74 +60034,74 @@ kNs lqq agT eFD -uRO -bEO +bPQ +rJF hNY -bEO -kEE -bEO -bEO +rJF +akp +rJF +rJF bnA -iKj -joz -joz -joz -fXv -fJx -joz -joz -fXv +fLY +wSU +wSU +wSU +vBX +bnh +wSU +wSU +vBX bnA -fXv -joz -lhj -jiW -rol +vBX +wSU +nJq +guz +gcx okv -rol -kGq -emU +gcx +ffA +jYn wrR -jeD -pan -jjS -qqa -hyG -nYk -nQN -oCI -tUe -xYA -cLR -vxV -rEe +nhX +anT +vcq +kle +wHC +kat +jVM +omN +nrd +vAX +rKy +rft +jgL ipd -cyO -cLR -vxV -gyi -kWj -iWg -iWg +kdq +rKy +rft +iOX +aTY +rcc +rcc gEx bQM uGT -lmy -gbU -lQf +sFo +hnK +oqG jgu bNT azs auQ wbI -uGM -uGM +oPU +oPU wbI pKJ qun oyC -knu -fFC +hsf +sUe wbI ukr fOg @@ -59204,13 +60109,13 @@ fOg fOg rGK wbI -uGM -uGM +oPU +oPU eLu -vVu -cEl -cEl -ycd +dFK +kTs +kTs +yet eLu twb twb @@ -59253,17 +60158,17 @@ bQM agi aWV aak -akE -arS -aCV +pnh +pKO +gpY dxS hoZ hoZ -fGb +jHz hoZ hoZ hoZ -fGb +jHz hoZ agi agi @@ -59271,46 +60176,46 @@ agi agi aWV jXz -eTh -njx -lwK -wVK -lwK -njx -lwK -wOD -wOD -lwK -wOD -lPq -fGb +lBS +lLQ +lvD +hrw +lvD +lLQ +lvD +otK +otK +lvD +otK +vsL +jHz hoZ hoZ -gma +bNE nga esS apf egv qdJ -nAr -obT +raL +wQb apf -jxY -vky -xKf -dOs +qpk +sWe +wED +lRr rja rja rja rja eXp -xYY -gma -nAr -nAr -nAr -gma -wMP +mdD +bNE +raL +raL +raL +bNE +aqw eXp pTR apf @@ -59322,9 +60227,9 @@ apf apf apf rja -obT +wQb kMq -qam +umg bis bis bis @@ -59341,55 +60246,55 @@ clP dbq bis bis -hxU -bEO -uRO -bEO -kEE +wMv +rJF +bPQ +rJF +akp dje -bEO +rJF bnA -jiW -kpm -ndt -pLh +guz +aAA +yeX +pen ofw -jNA -bzL -eAy -jiW -fXv -fXv -vrc -lGm -jiW -rol +ppS +hGn +fXI +guz +vBX +vBX +kok +bem +guz +gcx okv -rol -jiW -nyo +gcx +guz +byT wrR -weS -mQe -xYA -nBK +nzf +dpZ +vAX +hWz bSM bSM bSM bSM -qVF -foL -cLR -vxV -iBi +vCm +pAl +rKy +rft +xZU ipd -xAi -cLR -vxV -gyi -iWg -eWO -iWg +orC +rKy +rft +iOX +rcc +bma +rcc gEx bQM uGT @@ -59401,14 +60306,14 @@ wbI mtj wbI wbI -xnS -xnS +lgx +lgx bNT kjT dqG nFB -sNT -ajK +rNK +oer vLH nCX dQW @@ -59416,13 +60321,13 @@ nCX nCX rwj wbI -uGM -uGM +oPU +oPU eLu -nJQ -cEl -cEl -clG +bSq +kTs +kTs +vnG eLu twb twb @@ -59466,15 +60371,15 @@ agi agi aWV agi -awh -aIZ +tqx +qvN dxS -fGb +jHz hoZ -fGb +jHz hoZ hoZ -nBV +oiV hoZ hoZ agi @@ -59483,32 +60388,32 @@ agi agi aWV jXz -lwK -lwK -wNw -njx -uhd -lwK -viH -wOD -wOD -lwK -wOD -wOD -fGb -fGb -fGb +lvD +lvD +aeb +lLQ +dLL +lvD +fuO +otK +otK +lvD +otK +otK +jHz +jHz +jHz apf uQE -gma +bNE apf rja rja -dUs -hJw -gma -gFG -mFm +oEi +hoo +bNE +cOj +myi rja rja eXp @@ -59516,13 +60421,13 @@ eXp eXp eXp eXp -bFt -gma -nAr -nAr -nAr -dCo -bFt +xat +bNE +raL +raL +raL +cBJ +xat eXp eXp eXp @@ -59534,9 +60439,9 @@ apf apf wvY rja -obT -gma -gFG +wQb +bNE +cOj bis ewE ewE @@ -59555,53 +60460,53 @@ bis bis bis bis -uRO -bEO -kEE -bEO -bEO +bPQ +rJF +akp +rJF +rJF bht hTM okv -pie -eAy -jiW -kpm -muZ -eAy -jiW -fXv -fXv -joz -lGm -tlM -rol +qhZ +fXI +guz +aAA +ppQ +fXI +guz +vBX +vBX +wSU +bem +rdi +gcx tER -rol -jiW -nyo +gcx +guz +byT wrR -gzA -eZL -cjs -mLS -eLO -eLO -eLO -eLO -eew -xYA -cLR -aLj -juE +eQz +ixK +rKG +wyd +oby +oby +oby +oby +ftd +vAX +rKy +oEX +sVZ ipd -yhE -cLR -vxV -gyi -gyi -nLf -nLf +vMs +rKy +rft +iOX +iOX +xyq +xyq gEx bQM bQM @@ -59613,14 +60518,14 @@ itN jgu jgu jgu -rjn -rjn +tkg +tkg jgu noe qun vtl -cdD -ajK +tkj +oer bNT jot kDN @@ -59628,14 +60533,14 @@ kDN kDN fAv vtl -uGM -uGM +oPU +oPU eLu -wKF -cEl -cEl -clG -rfG +xVJ +kTs +kTs +vnG +tUG twb twb kPz @@ -59681,74 +60586,74 @@ azZ lAh aMg dxS -fGb -fGb -fGb -uTX +jHz +jHz +jHz +jnU hoZ -nBV +oiV hoZ hoZ aWV aWV agi -fGb +jHz aWV jXz -lwK -wLP -qLp -fGb -frt -ugH -lwK -wSe -wSe -lwK -wSe -mSN +lvD +qaA +jlb +jHz +ifw +vWj +lvD +aZi +aZi +lvD +aZi +uEy egv -eWu -gma +gAh +bNE apf apf apf uQE apf lag -obT -pmy -gma -gFG -iry +wQb +xYN +bNE +cOj +ssM rja eXp -nAr -gbD -nKq -jIm +raL +rty +cui +mzn eXp -nIf -fiF -nAr -nAr -nAr -tNs -wTo +til +ljx +raL +raL +raL +bpe +snr eXp -nAr -gbD -rVZ -nAr -uHX +raL +rty +iXJ +raL +xlb apf apf apf apf -uHX -obT -gma -gFG +xlb +wQb +bNE +cOj wpD lpr ycC @@ -59762,57 +60667,57 @@ rFu clP fzO clP -nUy -aWD -aGs -bEO -nUy -uRO -bEO -kEE -sJw +eHk +bZn +txb +rJF +eHk +bPQ +rJF +akp +wFS hNY omI -jiW -kpm -fXv -eAy -jiW -kpm -fXv -eAy -jiW -fXv -fXv -joz -lhj -aVh +guz +aAA +vBX +fXI +guz +aAA +vBX +fXI +guz +vBX +vBX +wSU +nJq +rhh kJf okv -rol -jiW -emU +gcx +guz +jYn wrR wrR -haU -aVS -gyi -heu -heu -gyi -gyi -hYT -wRZ -cLR -vxV +iFg +bFJ +iOX +iDK +iDK +iOX +iOX +wMA +xiL +rKy +rft wrR wrR wrR -sAK -vxV -nLf -gyi -wuP +mhS +rft +xyq +iOX +hPq nvD tRH tRH @@ -59824,15 +60729,15 @@ bQM twb lXs hsZ -rxz +pBb jJb cME eLu noe qun oyC -cdD -ajK +tkj +oer bNT azs fOg @@ -59840,15 +60745,15 @@ fOg syU auQ oyC -uGM +oPU vhB ayX -jmV +qbn gfo qPr -ycd -clG -kDW +yet +vnG +kRO twb kPz bQM @@ -59895,72 +60800,72 @@ azZ agi qRg aWV -gEF +nub hoZ hoZ hoZ -gEF +nub agi agi agi hoZ -dfD -fGb +ifL +jHz jXz -lwK -wXP -qOy -xvD -nGX -ukz -lwK -wNw -uhd -njx -wNw -uhd +lvD +eME +wMh +kQG +lEk +wcB +lvD +aeb +dLL +lLQ +aeb +dLL egv -gma -gma +bNE +bNE apf apf apf apf apf lag -obT -gma -gma -gFG -wCA +wQb +bNE +bNE +cOj +seh rja eXp -qPT -ewY -gzF -sjl -mzF -dka -rTL -azN -azN -azN -vpJ -dka -gma -qPT -ddE -qwJ -eTn +rKA +bff +bxg +jlB +xrZ +xGc +uws +uzy +uzy +uzy +iAq +xGc +bNE +rKA +qCk +cvd +rRz rja apf esS apf -apf +xYe rja -obT -gma -gFG +wQb +bNE +cOj bis xIx ycC @@ -59975,58 +60880,58 @@ wMi wMi bis bis -jLF -nUy -dRm +kzB +eHk +eFq bis -uRO -bEO -kEE -bEO +bPQ +rJF +akp +rJF dje -gZT +lcn okv -aam -fXv -eAy -jiW -kpm -muZ -eAy -iTG -twL -fXv -joz -lhj -aVh +xbr +vBX +fXI +guz +aAA +ppQ +fXI +wSX +iuz +vBX +wSU +nJq +rhh uEj okv -rol -jiW -emU -vPk -ohI -lfJ -kul -oQF -kul -kul -kul -kul -tQs -kul -eVb -jya -kul -kul -kul -elq -jya -kul -kul -kul -kul -wOR +gcx +guz +jYn +pVD +mKx +iTJ +tSm +opP +tSm +tSm +tSm +tSm +rwQ +tSm +sjX +mdS +tSm +tSm +tSm +sbW +mdS +tSm +tSm +tSm +tSm +gLK gEx bQM bQM @@ -60036,15 +60941,15 @@ bQM tPN luy doY -rxz +pBb cME jJb eLu tOS qun -joE -cdD -qHK +oyJ +tkj +nju wbI nCX nCX @@ -60052,15 +60957,15 @@ xgx nCX pBT wbI -uGM +oPU vhB ayX -cEl +kTs gfo gfo -ycd -clG -mRk +yet +vnG +vnA twb kPz bQM @@ -60107,30 +61012,30 @@ bQM agi aWV agi -lwK -uTX +lvD +jnU hoZ -nBV -lwK +oiV +lvD agi -gEF -fGb +nub +jHz hoZ hoZ -fGb +jHz hoZ -dfa -nBV -njx -fGb -njx -uTX -lwK -uTX -nBV -njx -uTX -nBV +tfw +oiV +lLQ +jHz +lLQ +jnU +lvD +jnU +oiV +lLQ +jnU +oiV egv apf apf @@ -60140,39 +61045,39 @@ pKY qlf hcv hds -vBY -wek -gma -gFG +wnh +fth +bNE +cOj eXp eXp eXp -nAr -mXY -uAv -qzB -gma -gma -gma -nAr -nAr -nAr -gma -gma -gma -nAr -mXY -qJJ -nAr +raL +wND +xDk +xWE +bNE +bNE +bNE +raL +raL +raL +bNE +bNE +bNE +raL +wND +imp +raL rja rja rja rja rja rja -obT +wQb kMq -gFG +cOj bis ewE ycC @@ -60191,9 +61096,9 @@ bis bis bis bis -uRO -bEO -kEE +bPQ +rJF +akp bis bis bnA @@ -60202,43 +61107,43 @@ cEw bnA bnA bnA -pqq -joz -joz -joz -ptV -fXv -joz -lGm -aVh +vql +wSU +wSU +wSU +oVk +vBX +wSU +bem +rhh jji vjG -rol -jiW -nyo -vPk -ohI -dsQ -qfU -qfU -qfU -qfU -qfU -qfU -qfU -dDS -djd -dMv -qfU -qfU -djd -wRZ -wRZ -dMv -qfU -qfU -djd -vxV +gcx +guz +byT +pVD +mKx +dBt +nMp +nMp +nMp +nMp +nMp +nMp +nMp +mDq +rdo +mAt +nMp +nMp +rdo +xiL +xiL +mAt +nMp +nMp +rdo +rft gEx bQM bQM @@ -60248,15 +61153,15 @@ bQM twb qDn hUO -rxz +pBb cME cME eLu jgu iSu vtl -cdD -ajK +tkj +oer bNT esZ kDN @@ -60264,15 +61169,15 @@ kDN kDN exO wbI -uGM -uGM +oPU +oPU eLu -vVu -cEl -cEl -ycd -xzr -mRk +dFK +kTs +kTs +yet +gSC +vnA twb kPz bQM @@ -60319,138 +61224,138 @@ bQM agi agi agi -lwK -uTX +lvD +jnU pCX -nBV -lwK +oiV +lvD agi -gEF -dfD +nub +ifL hoZ hoZ hoZ -gEF -eQD -nBV -qQO -rVS -njx -uTX -lwK -xfR -nBV -njx -uTX -vzk -gma +nub +qYZ +oiV +neT +xdL +lLQ +jnU +lvD +pPo +oiV +lLQ +jnU +vFA +bNE apf iLJ apf -gma -gma -gma -gma +bNE +bNE +bNE +bNE rja -obT -gma -gma -mOF -iOt -iOt -iOt -iOt -sPC -iZt -cOn -cnn -iOt -hSf -iOt -iOt -iOt -iOt -iOt -iOt -iOt -iOt -iOt -iOt -iOt -iOt -iOt -iOt -iOt -iOt -hJw +wQb +bNE +bNE +pQz +kyF +kyF +kyF +kyF +xYR +ceB +frc +nEh +kyF +bpo +kyF +kyF +kyF +kyF +kyF +kyF +kyF +kyF +kyF +kyF +kyF +kyF +kyF +kyF +kyF +kyF +hoo kMq -qam +umg bis ewE ycC kCI bis -lOE -mTX -gQx +xzN +bDM +bTc lqq mxR lqq lqq lqq -ahn -mTX -axi +ilM +bDM +pgQ bis bFr -aaj -bEO -kEE -iFD +hIX +rJF +akp +bHt bFr cEw cEw cEw cEw bnA -oKl -joz -joz +aQR +wSU +wSU uSA -joz -ptV -fXv -vrc -lGm -jiW -rol +wSU +oVk +vBX +kok +bem +guz +gcx okv -rol -jiW -nyo +gcx +guz +byT wrR -plr -ilI +vdH +eyv wrR wrR -kbA -gyi -gYA +oJl +iOX +vXk wrR ipd wrR -oJU -vhC -wRZ -gyi -nnX -dyd -dyd -vqb -gyi -wRZ -cLR -vxV +qjX +wDe +xiL +iOX +pGy +eYN +eYN +ybx +iOX +xiL +rKy +rft tRH tRH tRH @@ -60460,15 +61365,15 @@ twb twb nzU lvg -rxz +pBb cME uzw eLu jgu jgu fic -cdD -ajK +tkj +oer bNT azs deB @@ -60476,15 +61381,15 @@ sjR deB auQ wbI -uGM -uGM +oPU +oPU eLu -nBp -cEl -cEl -kPJ -clG -kDW +sIs +kTs +kTs +hgA +vnG +kRO twb kPz bQM @@ -60531,93 +61436,93 @@ bQM aWV fXL fXL -gXH -hAp +sjT +pmv iDq iDq -gXH +sjT fXL agi -fGb +jHz hoZ hoZ hoZ -gEF -eQD -lwK -vco -usq -uFX -lwK -lwK -uTX -wRv -njx -uTX -nBV +nub +qYZ +lvD +jCe +sxk +ddN +lvD +lvD +jnU +xvC +lLQ +jnU +oiV uQE apf apf -gma -eWu +bNE +gAh egv egv rja rja -obT -gma -gma -wEa -gma -gma -gma -gma -gma -qDi -xkj -gma -gma -gma -gma -gma -gma -gma -gma -gma -gma -gma -gma -gma +wQb +bNE +bNE +vgi +bNE +bNE +bNE +bNE +bNE +vSC +eJK +bNE +bNE +bNE +bNE +bNE +bNE +bNE +bNE +bNE +bNE +bNE +bNE +bNE kMq kMq -gma -gma -gma +bNE +bNE +bNE kMq kMq -gma -gFG +bNE +cOj bis kCI ycC bis bis -cGm -kLY -klL +gKG +gjY +lKP lqq lqq lqq epV lqq -hZp -lmr -pIo +oYG +bXh +lpd bis bis -fRG -bEO -xDe +kCj +rJF +eqS bis bFr cEw @@ -60625,48 +61530,48 @@ cEw cEw cEw bnA -xrU +tEX uSA uSA -joz -joz -aVE -fXv -joz -lhj -jiW -rol +wSU +wSU +eys +vBX +wSU +nJq +guz +gcx kEj -rol -jiW -emU -vPk -oWc -ohI +gcx +guz +jYn +pVD +iQH +mKx ipd -rWi -ohI -wRZ -ohI -wRZ -saQ +ncs +mKx +xiL +mKx +xiL +gvr ipd -cLR -vxV -xYA -qqa -uOR -nYk -nQN -oCI -tUe -xYA -cLR -vxV +rKy +rft +vAX +kle +mLm +kat +jVM +omN +nrd +vAX +rKy +rft wrR -gyi -gyi -kCG +iOX +iOX +jqM wrR eLu eLu @@ -60679,8 +61584,8 @@ eLu noe qun msu -qnE -oaI +lte +hdA fbo wbI fZD @@ -60688,14 +61593,14 @@ wbI wbI wbI wbI -uGM -uGM +oPU +oPU eLu -qmS -cEl -cEl -clG -cyu +kon +kTs +kTs +vnG +uIg twb twb kPz @@ -60743,79 +61648,79 @@ bQM agi agi agi -lwK -uTX +lvD +jnU hoZ -nBV -lwK +oiV +lvD agi -fGb -fGb +jHz +jHz hoZ hoZ hoZ jXz -onw -njx -lwK -ykT -lwK -njx -pyv -vco -uFX -agi -vco -uFX +rHV +lLQ +lvD +otg +lvD +lLQ +cNe +jCe +ddN +agi +jCe +ddN apf esS -gma +bNE egv egv egv egv eXp rja -dUs -uAv -vky -rHx -vky -xKf -vky -dUs -iOt -iOt -uAv -vky -xKf -vky -vky -vky -vky -vky -xKf -vky -dUs -iOt -iOt -uAv -vky -vky -xKf -vky -vky -vky -vky -vky -dOs +oEi +xDk +sWe +kzx +sWe +wED +sWe +oEi +kyF +kyF +xDk +sWe +wED +sWe +sWe +sWe +sWe +sWe +wED +sWe +oEi +kyF +kyF +xDk +sWe +sWe +wED +sWe +sWe +sWe +sWe +sWe +lRr bis tgB tgB bis nOz -tvX -rJK +mCp +gTi xst lqq lqq @@ -60823,67 +61728,67 @@ lqq lqq lqq vrT -tvX -rJK +mCp +gTi nOz bis -uRO -uxp -kEE -iFD +bPQ +qGh +akp +bHt bFr cEw cEw cEw cEw bnA -jxN -joz -joz +dCt +wSU +wSU uSA -joz -joz -fXv -vrc -lhj -jiW -rol +wSU +wSU +vBX +kok +nJq +guz +gcx okv -rol -jiW -emU -vPk -ohI -ohI +gcx +guz +jYn +pVD +mKx +mKx ipd -oxN -ohI -wRZ -ohI -wRZ -ozH +drt +mKx +xiL +mKx +xiL +ltz ipd -cLR -vha -xYA -nBK +rKy +iEA +vAX +hWz bSM bSM bSM bSM -qVF -xYA -cLR -vxV +vCm +vAX +rKy +rft wrR -kbA -gyi -cxn +oJl +iOX +tJC wrR -jKm -aGV -ofb -nRf +qzo +neE +iTK +uMc eLu cME cME @@ -60891,23 +61796,23 @@ eLu fOg xVK fZD -cdD -ajK -uGM -uGM -uGM -uGM -uGM -uGM -uGM -gUO +tkj +oer +oPU +oPU +oPU +oPU +oPU +oPU +oPU +mpb vhB ayX -cEl +kTs gfo gfo -cEl -fBp +kTs +kSB twb twb kPz @@ -60955,11 +61860,11 @@ azZ agi agi hoZ -lwK -uTX +lvD +jnU hoZ -nBV -lwK +oiV +lvD hoZ hoZ hsc @@ -60967,13 +61872,13 @@ hoZ bmV aWV jXz -oxg -pyv -lwK -lwK -tjU -lwK -lwK +afX +cNe +lvD +lvD +kvg +lvD +lvD agi agi agi @@ -60981,24 +61886,24 @@ agi agi apf apf -gma +bNE egv egv tel ioM ioM ioM -oAm -vQN +sKu +iXs ioM ioM ioM ioM ioM -oAm -vMh -vMh -vQN +sKu +chx +chx +iXs ioM ioM ioM @@ -61008,17 +61913,17 @@ ioM ioM ioM ioM -oAm -vMh -vMh -vQN +sKu +chx +chx +iXs ioM ioM hVI hVI hVI -hDy -hDy +jMh +jMh hVI hVI hVI @@ -61026,22 +61931,22 @@ nXj nXj sJu lqq -tvX -rJK +mCp +gTi kHf -rlC +tcL nOz pVR nOz -jBS +jeL fKm -tvX -rJK +mCp +gTi lqq wpD -uRO -bEO -kEE +bPQ +rJF +akp bis bFr cEw @@ -61050,52 +61955,52 @@ cEw cEw cEw bnA -nBu -joz -joz -joz -joz -fXv -eZm -tMn -jiW -rol +rPf +wSU +wSU +wSU +wSU +vBX +xNn +eBr +guz +gcx okv -rol -jiW -emU -vPk -ohI -ohI +gcx +guz +jYn +pVD +mKx +mKx ipd -iMM -ohI -xfV -ohI -wRZ -nIo +kFd +mKx +sMY +mKx +xiL +vwN ipd -cLR -vxV -xYA -mLS -eLO -eLO -eLO -eLO -eew -xYA -cLR -jya +rKy +rft +vAX +wyd +oby +oby +oby +oby +ftd +vAX +rKy +mdS aMM -kul -kul -kul +tSm +tSm +tSm aMM -sRV -fnB -fnB -xDQ +gag +ubP +ubP +ejs liA cME cME @@ -61103,23 +62008,23 @@ liA nCX nCX wbI -cdD -ajK -uGM -gUO -uGM -uGM -uGM -uGM -uGM -uGM +tkj +oer +oPU +mpb +oPU +oPU +oPU +oPU +oPU +oPU vhB ayX -cEl +kTs gfo gfo -cEl -mJz +kTs +pYz twb twb kPz @@ -61167,11 +62072,11 @@ azZ agi agi agi -lwK -uTX +lvD +jnU pCX -nBV -lwK +oiV +lvD hoZ hoZ hsc @@ -61180,9 +62085,9 @@ hoZ aWV aWV aWV -eDs -eDs -eDs +wIy +wIy +wIy jXz aWV agi @@ -61193,25 +62098,25 @@ agi agi apf apf -eWu +gAh egv egv tel ioM ioM ioM -mJy -cwO +dOO +oTi ioM hVI hVI -goA -wYx -ryN -jEb -jEb -tur -kiE +slh +vfL +dAg +jbq +jbq +brC +gQz hVI hVI hVI @@ -61219,15 +62124,15 @@ hVI hVI hVI hVI -fPZ -ryN -jEb -jEb -tur -tSn +bLM +dAg +jbq +jbq +brC +uMT sJu -nFI -iPM +vBF +qrn hVI bmE bmE @@ -61238,8 +62143,8 @@ mEO mEO hVI nOz -tvX -rJK +mCp +gTi eTc sfi mWX @@ -61247,67 +62152,67 @@ mWX mWX ifk eTc -tvX -rJK +mCp +gTi nOz bis -uRO -bEO -olC -vNt +bPQ +rJF +rkv +fVs cvn bQM bQM bQM kPz wyT -joz -tBt -jiW -kpm -joz -joz -fXv -fUF -fXv -jiW -rol +wSU +dXK +guz +aAA +wSU +wSU +vBX +ojk +vBX +guz +gcx okv -rol -jiW -emU +gcx +guz +jYn wrR -plr -ilI +vdH +eyv wrR wrR -kbA -gyi -gYA +oJl +iOX +vXk wrR ipd wrR -oJU -vxV -wRZ -gyi -hdv -gyi -xeD -gyi -gyi -wRZ -cLR -dMv +qjX +rft +xiL +iOX +qGf +iOX +vQi +iOX +iOX +xiL +rKy +mAt aMM -qfU -qfU -qfU +nMp +nMp +nMp aMM -sRV -fnB -fnB -fnB +gag +ubP +ubP +ubP phe uJg cME @@ -61315,9 +62220,9 @@ eLu kDN exO wbI -cdD -ajK -uGM +tkj +oer +oPU eLu eLu eLu @@ -61327,10 +62232,10 @@ eLu eLu eLu eLu -jJG -cEl -cEl -wCV +cmE +kTs +kTs +lJI eLu twb twb @@ -61380,26 +62285,26 @@ agi agi agi aWV -eDs -eDs -eDs +wIy +wIy +wIy jXz -gEF -gEF +nub +nub agi agi -fGb -fGb +jHz +jHz jXz -rPh -rPh -rPh -rPh -rPh +pgb +pgb +pgb +pgb +pgb jXz xLi -smq -uPz +sQz +iFz azZ xLi rja @@ -61412,35 +62317,35 @@ ioM ioM ioM ioM -oAm -vQN +sKu +iXs ioM hVI -hBX -fPZ -fPZ -fPZ -fPZ -fPZ -fPZ -fPZ -hBX +fCr +bLM +bLM +bLM +bLM +bLM +bLM +bLM +fCr hVI hVI hVI hVI hVI -hBX -fPZ -ouS -xUq -fPZ -fPZ -tSn +fCr +bLM +eRZ +trN +bLM +bLM +uMT sJu cyV cyV -iPM +qrn cyV cyV sJu @@ -61450,76 +62355,76 @@ mJk svh hVI bis -tvX -tcO -mTX -mTX -mTX -mTX -mTX -mTX -mTX -hOz -rJK +mCp +iYa +bDM +bDM +bDM +bDM +bDM +bDM +bDM +szs +gTi bis bis -uRO -bEO -bEO -kEE +bPQ +rJF +rJF +akp cvn kPz kPz kPz cEw wyT -joz -eAy -jiW -kpm -joz -joz -fXv -fUF -fXv -jiW -rol +wSU +fXI +guz +aAA +wSU +wSU +vBX +ojk +vBX +guz +gcx okv -rol -jiW -dmH -xDz -wRZ -lfJ -kul -kul -kul -kul -kul -kul -kul -kul -elq -jya -kul -kul -kul -kul -kul -kul -kul -kul -elq -vxV +gcx +guz +bxA +cKU +xiL +iTJ +tSm +tSm +tSm +tSm +tSm +tSm +tSm +tSm +sbW +mdS +tSm +tSm +tSm +tSm +tSm +tSm +tSm +tSm +sbW +rft wrR -gyi -gyi -gyi +iOX +iOX +iOX wrR -fnB -fnB -fnB -ofb +ubP +ubP +ubP +iTK eLu cME cME @@ -61527,17 +62432,17 @@ eLu deB auQ wbI -cdD -ajK -wRn +tkj +oer +lgS eLu eLu eLu -mea -mea +bhf +bhf eLu -mea -mea +bhf +bhf eLu eLu ppI @@ -61591,68 +62496,68 @@ azZ azZ azZ azZ -rPh -rPh -rPh -rPh -rPh -xjK -kRt +pgb +pgb +pgb +pgb +pgb +mvp +cJL azZ xLi ddL ddL xLi -xjK -xjK -xjK -pQh -xjK -jES -xjK -xjK -xjK -azZ -azZ -fPZ -fPZ -fPZ +mvp +mvp +mvp +rYw +mvp +luZ +mvp +mvp +mvp +azZ +azZ +bLM +bLM +bLM mEO -fPZ -vmr +bLM +xsC hVI -jTG -kwK -kye -ryN -tur -fPZ -nHH -mhb -aja -leR -fPZ -fPZ -mFh -mhb -dFG -dla -dla -iRc -nsb -wVL -aja -fPZ -fPZ -bGs -hjr -bdL -dFG +bPV +aJo +ayB +dAg +brC +bLM +aKb +jQs +xEH +iNt +bLM +bLM +ddB +jQs +veR +fYa +fYa +gbv +gBN +jpQ +xEH +bLM +bLM +oQk +hOG +xMX +veR ioM hVI cyV cyV -iPM +qrn cyV mbg ioM @@ -61662,76 +62567,76 @@ mrX mrX pkM bis -wjk -bJF -bJF -bJF -lmr -bEO -nrY -bJF -bJF -bJF -dgF +wzH +tyj +tyj +tyj +bXh +rJF +nTv +tyj +tyj +tyj +dtS bis -sXy -usa -vNF -uqa -kEE +byB +etj +wpy +cCO +akp cvn bQM bQM bQM wyT -joz -ndt -pLh +wSU +yeX +pen ofw -jNA -bzL -mrO -fXv -vdI -ivL -jiW -rol +ppS +hGn +lit +vBX +aje +vTI +guz +gcx okv -rol -jiW -fXv -bYB -wRZ -cLR -wRZ -wRZ -wRZ -uRX -wRZ -wRZ -wRZ -wRZ -wRZ -wRZ -wRZ -wRZ -wRZ -wRZ -wRZ -wRZ -wRZ -wRZ -wRZ -mOn +gcx +guz +vBX +evT +xiL +rKy +xiL +xiL +xiL +vCl +xiL +xiL +xiL +xiL +xiL +xiL +xiL +xiL +xiL +xiL +xiL +xiL +xiL +xiL +xiL +fXD wrR wrR jRh wrR wrR -lbk -crO -fnB -aGV +rfQ +qMI +ubP +neE eLu eLu eLu @@ -61739,9 +62644,9 @@ eLu sGI szK wbI -iFj -xIo -uGM +mPX +qhk +oPU eLu mTM gyJ @@ -61755,8 +62660,8 @@ gyJ cME cME eLu -jvB -vsg +tHJ +lQJ twb twb twb @@ -61800,73 +62705,73 @@ lAh lAh azZ azZ -sqg -sqg -xRh -hhl -hTt -iHU -iYq -xjK -xMg -sqg -sqg -szQ -sqg -sqg -sqg -sqg -sqg -sqg -sqg -sqg -sqg -sqg -sqg -sqg -azZ -azZ -azZ -lle -mhb -mhb +hae +hae +ceJ +mJH +hAX +tsA +oZk +mvp +lkr +hae +hae +ncF +hae +hae +hae +hae +hae +hae +hae +hae +hae +hae +hae +hae +azZ +azZ +azZ +kpe +jQs +jQs mEO -mhb +jQs mEO mEO -fPZ -cwO -mFh -mhb -aja -mJy -qxL -cwO -mFh -mhb -aja -mJy -fPZ -vkC -mFh -mhb -aja -mJy -fPZ -cwO -mFh -vtn -aja -jUB -fPZ -vbF +bLM +oTi +ddB +jQs +xEH +dOO +asI +oTi +ddB +jQs +xEH +dOO +bLM +dVD +ddB +jQs +xEH +dOO +bLM +oTi +ddB +nmK +xEH +xfh +bLM +ftS ioM hVI -iPM -iPM +qrn +qrn hVI -iPM -iPM +qrn +qrn ioM ioM bmE @@ -61878,9 +62783,9 @@ jUs clP oxS eTc -nHG -bEO -rJK +gdQ +rJF +gTi eTc clP oxS @@ -61888,72 +62793,72 @@ iwf bFr cvn cvn -uRO -bEO -kEE +bPQ +rJF +akp cvn bFr cvn cvn cEw -joz -joz -eAy -jiW -kpm -joz -joz -fXv -vrc -lhj -jiW -rol +wSU +wSU +fXI +guz +aAA +wSU +wSU +vBX +kok +nJq +guz +gcx okv -rol -jiW -bLd -gMV -wRZ -rkr -qfU -qfU -qfU -qfU -qfU -qfU -qfU -qfU -djd -dMv -qfU -qfU -qfU -qfU -qfU -qfU -qfU -qfU -djd -vxV +gcx +guz +eQY +sVd +xiL +sFd +nMp +nMp +nMp +nMp +nMp +nMp +nMp +nMp +rdo +mAt +nMp +nMp +nMp +nMp +nMp +nMp +nMp +nMp +rdo +rft wrR -gyi -gyi -gyi +iOX +iOX +iOX wrR -fnB -fnB -fnB -fnB +ubP +ubP +ubP +ubP fXB -jUI -jUI +voi +voi vhB -uGM -uGM -uGM -uGM -uGM -lzX +oPU +oPU +oPU +oPU +oPU +lRq liA cME cME @@ -61967,10 +62872,10 @@ xno cME cME ayX -hxg -goz -tUr -fAh +qsF +dYV +upf +nWB twb kPz kPz @@ -62011,76 +62916,76 @@ bQM azZ azZ azZ -kbO -kbO -dFk -ezJ -xjK -rPh -ruy -iZn -xjK -tOr -hmk -kbO -mqo -kbO -kbO -kbO -kbO -kbO -fhZ -kbO -tLY -dFk -hmk -kbO -vFF -kbO +eqU +eqU +uAg +kpq +mvp +pgb +dqX +jFD +mvp +cer +pvF +eqU +eHn +eqU +eqU +eqU +eqU +eqU +hmE +eqU +hvp +uAg +pvF +eqU +qSA +eqU azZ azZ azZ -jEb -jEb -jEb -jEb +jbq +jbq +jbq +jbq mEO -ryN -jEb -tur -mJy -fPZ -cwO -ryN -jEb -tur -mJy -fPZ -cwO -ryN -jEb -qBG -mJy -wRo -vbF -ryN -jEb -tur -idT -fPZ -cwO -ryN -jEb -deE -tSn +dAg +jbq +brC +dOO +bLM +oTi +dAg +jbq +brC +dOO +bLM +oTi +dAg +jbq +rcE +dOO +ekz +ftS +dAg +jbq +brC +kQr +bLM +oTi +dAg +jbq +evk +uMT sJu cyV cyV -iPM +qrn cyV cyV -iPM -iPM +qrn +qrn cyV tQB bQM @@ -62090,9 +62995,9 @@ jjW tna umW jjW -tvX -bEO -rJK +mCp +rJF +gTi jjW tna umW @@ -62103,69 +63008,69 @@ cvn iKs iKs iKs -gQh -qwl -ilX -rkQ -xrs -bUy -joz -eAy -jiW -kpm -joz -joz -fXv +kpR +uLM +cxc +ldd +nIb +gSK +wSU +fXI +guz +aAA +wSU +wSU +vBX bnA -lGm -jiW -rue -dfV -efS -jiW -emU +bem +guz +pCH +awL +wSt +guz +jYn wrR -ohI -vxV -wRZ -gyi -nnX -dyd -dyd -vqb -gyi -wRZ -tRt -vxV -eqq -nrI -nnX -dyd -dyd -vqb -kCG -wRZ -cLR -jya +mKx +rft +xiL +iOX +pGy +eYN +eYN +ybx +iOX +xiL +gmx +rft +kgY +mxm +pGy +eYN +eYN +ybx +jqM +xiL +rKy +mdS aMM -kul -kul -kul +tSm +tSm +tSm aMM -sRV -fnB -fnB -fnB +gag +ubP +ubP +ubP fXB -jUI -jUI +voi +voi vhB -uGM -uGM -uGM -uGM -wQs -uGM +oPU +oPU +oPU +oPU +oMu +oPU eLu cME cPq @@ -62179,10 +63084,10 @@ cPq cME cME ayX -hxg +qsF mHC gfo -bNz +ivK twb twb kPz @@ -62225,74 +63130,74 @@ azZ azZ azZ azZ -ghv -ezJ -xjK -hUh -iJC -iZZ -xjK -muT -ezJ +nQE +kpq +mvp +gTN +wln +rot +mvp +xmC +kpq azZ azZ -xjK -xjK -xjK -xjK -xjK -xjK -xjK -xjK -tOr -ezJ -nvZ -xjK -xjK -tuo +mvp +mvp +mvp +mvp +mvp +mvp +mvp +mvp +cer +kpq +jVt +mvp +mvp +erj azZ azZ azZ azZ -jlg -vmr +eLw +xsC hVI -vmr -fPZ -fPZ -ryN -jEb -tur -fPZ -fPZ -fPZ -ryN -jEb -tur -fPZ -fPZ -bGs -kic -jEb -eYi -fPZ -ajN -fPZ -mUk -rfq -tur -fPZ -fPZ -fPZ -dxA +xsC +bLM +bLM +dAg +jbq +brC +bLM +bLM +bLM +dAg +jbq +brC +bLM +bLM +oQk +iKO +jbq +uJQ +bLM +raP +bLM +fqh +aSm +brC +bLM +bLM +bLM +omO sJu cyV cyV -iPM +qrn kvx cyV -iPM -iPM +qrn +qrn cyV tQB bQM @@ -62302,9 +63207,9 @@ jjW tna umW ovM -tvX -bEO -rJK +mCp +rJF +gTi alX tna umW @@ -62312,90 +63217,90 @@ jjW cvn bQM cvn -gpB -bEO -uxp -ruv -ruv -ruv -ruv -eeL -joz -ndt -pLh +vCu +rJF +qGh +wNX +wNX +wNX +wNX +lri +wSU +yeX +pen ofw -jNA -bzL -mrO -feY +ppS +hGn +lit +tSY bnA -lhj -jiW -jiW -jiW -jiW -jiW -emU +nJq +guz +guz +guz +guz +guz +jYn wrR -ohI -vxV -otG -qqa -uOR -nYk -nQN -oCI -tUe -xYA -cLR -vxV -meM -qqa -uOR -nYk -nQN -oCI -tUe -xYA -cLR -dMv +mKx +rft +aYf +kle +mLm +kat +jVM +omN +nrd +vAX +rKy +rft +oeV +kle +mLm +kat +jVM +omN +nrd +vAX +rKy +mAt aMM -qfU -qfU -qfU +nMp +nMp +nMp aMM -sRV -fnB -tZo -fnB +gag +ubP +iwu +ubP fXB -jUI -jUI +voi +voi vhB -xnS -uGM -uGM -uGM -uGM -wRn +lgx +oPU +oPU +oPU +oPU +lgS eLu eLu eLu -mea -mea +bhf +bhf eLu -mea -mea +bhf +bhf eLu eLu cME cME eLu -fWD -uJM +wxl +hZN gfo -goz -opC +dYV +dxv twb kPz bQM @@ -62438,30 +63343,30 @@ azZ azZ azZ azZ -ezJ -rPh -hWB -rPh -rPh -rPh -ghv -ezJ +kpq +pgb +vFS +pgb +pgb +pgb +nQE +kpq azZ xLi xLi xLi -dNF -dNF -jmM +rHX +rHX +esR xLi -idV -xjK -tOr -ezJ -npV -xjK -xjK -tuo +hrA +mvp +cer +kpq +jdn +mvp +mvp +erj azZ azZ azZ @@ -62471,11 +63376,11 @@ aFZ ioM ioM ioM -iCo -iCo -iCo -iCo -iCo +xUn +xUn +xUn +xUn +xUn aFZ aFZ tQB @@ -62485,27 +63390,27 @@ tQB tQB aFZ aFZ -fPZ -fPZ -fPZ +bLM +bLM +bLM hVI hVI hVI hVI hVI -daP -yfB -daP +luf +hDV +luf ioM hVI -iPM -iPM -iPM -iPM -ykI +qrn +qrn +qrn +qrn +hIO hVI -uLX -kZI +fDi +cqX tQB bQM bQM @@ -62514,9 +63419,9 @@ jjW tna umW jjW -tvX -bEO -rJK +mCp +rJF +gTi jjW tna umW @@ -62527,59 +63432,59 @@ cvn iKs iKs iKs -bEO +rJF iKs iKs iKs -joz -joz -joz -eAy -jiW -kpm -joz -joz -fXv +wSU +wSU +wSU +fXI +guz +aAA +wSU +wSU +vBX bnA -mRT -hxk -pip -fXv -pCS -hxk -nLh +mOm +cZP +vov +vBX +qLv +cZP +jRC wrR -plr -vxV -xYA -nBK +vdH +rft +vAX +hWz bSM bSM bSM bSM -kSL -xYA -cLR -vxV -mCG -nBK +wYP +vAX +rKy +rft +lIH +hWz bSM bSM bSM bSM -qVF -xYA -cLR -vxV +vCm +vAX +rKy +rft wrR -kbA -gyi -cxn +oJl +iOX +tJC wrR -fnB -fnB -fnB -vGe +ubP +ubP +ubP +aTx eLu eLu eLu @@ -62604,10 +63509,10 @@ tPN twb twb twb -laG -cEl -cEl -krT +vQJ +kTs +kTs +hej twb kPz kPz @@ -62650,29 +63555,29 @@ azZ azZ azZ azZ -ezJ +kpq azZ azZ azZ azZ azZ -tOr +cer azZ azZ xLi -eXd -dNF -xMg -sqg -xRh -pBn -xjK -xjK -tOr -ezJ -sNd -xjK -ehf +oZf +rHX +lkr +hae +ceJ +sbL +mvp +mvp +cer +kpq +fKP +mvp +vRH azZ azZ azZ @@ -62683,11 +63588,11 @@ aFZ ioM ioM ioM -iPM -idE -idE -idE -qUQ +qrn +byY +byY +byY +eRF aFZ bQM bQM @@ -62702,22 +63607,22 @@ jjs hVI hVI jvm -kqz +tja aif -hvi -kqz -kqz -kqz +xuQ +tja +tja +tja ioM -gSD -dDm -iPM -iPM -iPM -tng +iUc +nEB +qrn +qrn +qrn +bwj hVI -uLX -kZI +fDi +cqX tQB bQM bQM @@ -62726,9 +63631,9 @@ jjW tna umW alX -tvX -bEO -rJK +mCp +rJF +gTi jjW tna umW @@ -62736,62 +63641,62 @@ jjW cvn bQM cvn -uRO -bEO -bEO -vMQ -rrP -vMQ -vMQ -nrR -joz -joz -eAy -jiW -kpm -joz -joz -aiV +bPQ +rJF +rJF +xow +pBe +xow +xow +caC +wSU +wSU +fXI +guz +aAA +wSU +wSU +lNP bnA bnA -vGV -eXU -noY -tVG -xhc +eOI +aqj +fpN +bQj +oxU wrR wrR -ohI -vxV -xYA -mLS -eLO -eLO -eLO -eLO -eew -xYA -cLR -vxV -xOV -mLS -eLO -eLO -eLO -lCE -eew -xYA -cLR -vxV +mKx +rft +vAX +wyd +oby +oby +oby +oby +ftd +vAX +rKy +rft +iiz +wyd +oby +oby +oby +hKP +ftd +vAX +rKy +rft wrR -gyi -gyi -gyi +iOX +iOX +iOX wrR axA -fnB -fnB -fnB +ubP +ubP +ubP eLu iuZ cME @@ -62799,9 +63704,9 @@ nUJ cME cME eLu -jUI -jUI -lrC +voi +voi +xUr itN swg fQV @@ -62816,10 +63721,10 @@ fQV fQV erT twb -bxr +chE kMU gfo -bNz +ivK twb twb kPz @@ -62872,36 +63777,36 @@ phz azZ azZ xLi -mNj -xMg -sqg -xRh -pAe -qTr -xjK -xjK -tOr -ezJ -xjK -xjK -xjK -azZ -azZ -azZ -bQM -pfi -hbC -hbC -ssD -iSi -ssD -oYH -oYH -oYH -oYH -oYH +tYU +lkr +hae +ceJ +bGH +kWS +mvp +mvp +cer +kpq +mvp +mvp +mvp +azZ +azZ +azZ +bQM +dPZ +ogf +ogf +tsc +bEk +tsc +tii +tii +tii +tii +tii bTI -iSi +bEk hEb hzG hzG @@ -62909,26 +63814,26 @@ hay vmj bQM aFZ -fTA -kqz -kqz +cdY +tja +tja hVI iJF -tVt +nuN hVI -mbi -kqz -kqz -bII +nQl +tja +tja +cgx ioM -iPM +qrn cyV ndZ -iPM +qrn cyV cyV -iPM -iPM +qrn +qrn cyV tQB bQM @@ -62938,9 +63843,9 @@ jjW tna umW jjW -tvX -bEO -rJK +mCp +rJF +gTi jjW tna umW @@ -62951,59 +63856,59 @@ cvn iKs iKs iKs -gQh -keV -pYI -oAa -xrs -qbD +kpR +iDQ +sUr +iyY +nIb +lQo cEw wyT wyT wyT -joz -joz -fXv -fXv -jiW -fXv -fXv -fXv -fXv -bcH -guG -wRZ -ohI -vxV -wRZ -gyi -gyi -gyi -kCG -kCG -gyi -wRZ -cLR -vxV -wRZ -gyi -gyi -gyi -gyi -gyi -gyi -wRZ -cLR -vxV +wSU +wSU +vBX +vBX +guz +vBX +vBX +vBX +vBX +bXA +teq +xiL +mKx +rft +xiL +iOX +iOX +iOX +jqM +jqM +iOX +xiL +rKy +rft +xiL +iOX +iOX +iOX +iOX +iOX +iOX +xiL +rKy +rft wrR wrR jRh wrR wrR xiF -fnB -fnB -xDQ +ubP +ubP +ejs liA cME nqL @@ -63011,9 +63916,9 @@ cME cME cME eLu -jUI -jUI -sRk +voi +voi +lwA uGT bTo afk @@ -63028,11 +63933,11 @@ afk afk iWq tPN -uxO -cEl -cEl -dtc -mBy +rMo +kTs +kTs +ape +exy twb kPz bQM @@ -63084,34 +63989,34 @@ kBE azZ azZ xLi -mSY -nee -xjK -ezJ -dsT -mNj -xjK -xjK -tOr -ayv -jES +aJk +muX +mvp +kpq +iOY +tYU +mvp +mvp +cer +gpA +luZ lAh lAh azZ azZ bQM bQM -gEU +bmT bQM bQM -mTy -alu -mTy -kFH -bow -bow -bow -bow +vxz +iSR +vxz +mPe +esw +esw +esw +esw bTI bQM bFA @@ -63121,26 +64026,26 @@ hXZ aLp aLp aFZ -nwh -kqz -kqz +gnG +tja +tja hVI xgn -kqz +tja hVI -bgR -kcn -kqz -kqz +tpZ +xhL +tja +tja sJu -iPM +qrn lwd ndZ -iPM +qrn cyV cyV -iPM -iPM +qrn +qrn cyV aFZ aFZ @@ -63150,9 +64055,9 @@ jUs clP clP eTc -tvX -wEY -rJK +mCp +rJc +gTi eTc clP clP @@ -63160,9 +64065,9 @@ iwf bFr cvn cvn -uRO -oTl -kEE +bPQ +wIL +akp cvn bFr cvn @@ -63173,49 +64078,49 @@ cEw bQM bQM wyT -joz -joz -fXv -otP -jiW -fXv -fXv -fXv -fXv -fXv -guG -wRZ -wRZ -lfJ -kul -kul -kul -kul -kul -kul -kul -kul -elq -jya -kul -kul -kul -hGz -kul -kul -kul -kul -elq -vxV +wSU +wSU +vBX +nJu +guz +vBX +vBX +vBX +vBX +vBX +teq +xiL +xiL +iTJ +tSm +tSm +tSm +tSm +tSm +tSm +tSm +tSm +sbW +mdS +tSm +tSm +tSm +gbF +tSm +tSm +tSm +tSm +sbW +rft wrR qQt cME dkb uGY axA -fnB -fnB -vGe +ubP +ubP +aTx eLu eLu eLu @@ -63240,11 +64145,11 @@ afk afk iWq tPN -cWR +fmE dKX gfo -aXM -bTG +rQu +fzC twb kPz bQM @@ -63296,54 +64201,54 @@ azZ azZ azZ xLi -xjK -lax -nDJ -dsT -dNF -pBn -xjK -xjK -tOr -ezJ -xjK +mvp +ubX +wAQ +iOY +rHX +sbL +mvp +mvp +cer +kpq +mvp jKR lAh azZ azZ bQM bQM -gEU +bmT bQM bQM -wsy -aOh -wsy -hDy -hDy -hDy -qmz -hDy +knY +fvH +knY +jMh +jMh +jMh +cMb +jMh bTI bQM bFA -hpJ +rYY ePq mzS lEp wWW -lBg -hvi -tST -kqz +xXh +xuQ +gjz +tja tEH -kqz -kqz +tja +tja hVI -bjO -bjO -kqz -kqz +qEl +qEl +tja +tja ioM hVI hVI @@ -63358,23 +64263,23 @@ hVI hVI ioM bis -lOE -mTX -mTX -wot -mxn -bEO -tcO -mTX -jDk -mTX -axi +xzN +bDM +bDM +qLa +dZK +rJF +iYa +bDM +opN +bDM +pgQ bis -sXy -ghP -xqG -oTl -kEE +byB +lpH +hUD +wIL +akp cvn kPz kPz @@ -63385,59 +64290,59 @@ kPz kPz kPz wyT -xPX -joz -joz -joz -vVJ -joz -joz -joz -joz -joz -guG -tOo -wRZ -rkr -qfU -xTa -qfU -qfU -qfU -qfU -xTa -djd -wRZ -wRZ -dMv -lWD -qfU -qfU -qfU -qfU -qfU -qfU -qfU -pnv +iSw +wSU +wSU +wSU +weB +wSU +wSU +wSU +wSU +wSU +teq +cdV +xiL +sFd +nMp +oFU +nMp +nMp +nMp +nMp +oFU +rdo +xiL +xiL +mAt +igu +nMp +nMp +nMp +nMp +nMp +nMp +nMp +eSn wrR bcf cME cME uGY -fnB -fnB -fnB -fnB -fnB -clG -clG -clG -qTa -fnB -fnB -fnB -fnB -fnB +ubP +ubP +ubP +ubP +ubP +vnG +vnG +vnG +fRq +ubP +ubP +ubP +ubP +ubP dCM bTo afk @@ -63452,11 +64357,11 @@ afk afk iWq tPN -jtv -cEl -cEl -lZC -sNu +mKo +kTs +kTs +bYY +dwf twb kPz bQM @@ -63509,35 +64414,35 @@ azZ azZ xLi xLi -eXd -mNj -olG -aoH +oZf +tYU +knW +fop xLi -jmM -xjK -tOr -ezJ -xjK +esR +mvp +cer +kpq +mvp efT lAh azZ azZ bQM bQM -qvn -hbC -hbC -ssD -iSi -ssD -oYH -oYH -oYH -oYH -oYH +qmv +ogf +ogf +tsc +bEk +tsc +tii +tii +tii +tii +tii bTI -iSi +bEk eHC uVX uVX @@ -63545,48 +64450,48 @@ nHZ tHL sTu aFZ -hvi -kqz -kqz +xuQ +tja +tja hVI ieu ieu hVI hVI -bjO -kqz -kqz -iPM -rPQ -dVe -cmg -bzH +qEl +tja +tja +qrn +hGg +tge +pFc +stU ioM -bow +esw ioM hVI -idE -xwy -cRN +byY +nfZ +qmj ioM bis -tvX -nrY -bJF -bJF -oIR -bEO -nrY -bJF -bJF -lmr -rJK +mCp +nTv +tyj +tyj +nvn +rJF +nTv +tyj +tyj +bXh +gTi bis bis -uRO -bEO -bEO -kEE +bPQ +rJF +rJF +akp cvn bQM bQM @@ -63618,10 +64523,10 @@ tRH tRH nqN ceC -nIh -nIh -nIh -fHh +dCn +dCn +dCn +wIk ceC nqN tRH @@ -63636,20 +64541,20 @@ eLu cME cME ggk -jAx -fnB -crO -fnB -fnB -fnB -fnB -fnB -fnB -fnB -fnB -fnB -fnB -fnB +iTj +ubP +qMI +ubP +ubP +ubP +ubP +ubP +ubP +ubP +ubP +ubP +ubP +ubP nqN aKA jlH @@ -63664,10 +64569,10 @@ jlH jlH bUB twb -miu +ifP gfo gfo -bNz +ivK twb twb kPz @@ -63726,10 +64631,10 @@ lAh lAh lAh lAh -xjK -xjK -tOr -ezJ +mvp +mvp +cer +kpq xLi xLi azZ @@ -63743,11 +64648,11 @@ aFZ aFZ aFZ aSS -iPM -idE -xDg -idE -iPM +qrn +byY +duW +byY +qrn aFZ bQM bQM @@ -63757,48 +64662,48 @@ bQM bQM bQM aFZ -gkZ -kcn -kqz +mdz +xhL +tja tEH gOJ rQK uVD aif -wlR -mFh -bPk -mhb -mhb -mhb -iti -mhb -mct -aja +eVN +ddB +rie +jQs +jQs +jQs +qhC +jQs +umz +xEH ioM -bfg +dTX mEO mEO mEO ioM nOz -tvX -rJK +mCp +gTi eTc clP -wjk -pat -dgF +wzH +fIL +dtS clP eTc -tvX -rJK +mCp +gTi nOz bis -uRO -bEO -trB -kEE +bPQ +rJF +kKd +akp cvn bQM bQM @@ -63813,14 +64718,14 @@ bQM bQM bQM dCM -qdB -tHs -tHs -tHs -tHs -tHs -tHs -tHs +fDb +ihB +ihB +ihB +ihB +ihB +ihB +ihB dCM bQM kPz @@ -63829,12 +64734,12 @@ bQM kPz bQM dCM -mdn -ftv -tPQ -fnB -xca -sRV +dUu +sNU +dHU +ubP +vIG +gag dCM bQM kPz @@ -63846,22 +64751,22 @@ pJK eLu kNY cME -aJg +itK uGY -fnB -fnB -fnB -fnB -fnB -fnB -fnB -fnB -fnB -fnB -fnB -fnB -fnB -fnB +ubP +ubP +ubP +ubP +ubP +ubP +ubP +ubP +ubP +ubP +ubP +ubP +ubP +ubP uGY aWk aWk @@ -63876,10 +64781,10 @@ pRG aWk twb twb -laG -cEl -cEl -ajH +vQJ +kTs +kTs +wnM twb kPz kPz @@ -63937,11 +64842,11 @@ xLi xLi xLi xLi -qVq -sgb -xjK -tOr -ezJ +pSs +mBJ +mvp +cer +kpq lAh lAh lAh @@ -63955,11 +64860,11 @@ aFZ aFZ mIu ioM -iCo -iCo -iCo -iCo -iCo +xUn +xUn +xUn +xUn +xUn aFZ fQV fQV @@ -63969,33 +64874,33 @@ tQB tQB aFZ aFZ -gHF -tHX -tHX +wDw +ylW +ylW tEH gtH uVD ppX hVI -auH -ryN -pNV -sjw -jEb -jEb -pdw -jEb -pNV -cwO +ceq +dAg +iea +mzK +jbq +jbq +qDZ +jbq +iea +oTi ioM -hKW +ihp mEO mEO mEO sJu lqq -tvX -rJK +mCp +gTi jjW nOz dnz @@ -64003,14 +64908,14 @@ kNB bPl nOz jjW -tvX -rJK +mCp +gTi lqq wpD -uRO -uxp -bEO -kEE +bPQ +qGh +rJF +akp bFr bFr kPz @@ -64025,14 +64930,14 @@ kPz kPz kPz dCM -tTu -tHs -fhC -ftv -sRV -aqI -lRH -tHs +bBt +ihB +mWS +sNU +gag +pbX +igV +ihB dCM bQM kPz @@ -64041,12 +64946,12 @@ kPz kPz bQM dCM -sRV -ftv -fnB -iLy -aqI -sRV +gag +sNU +ubP +nyC +pbX +gag dCM bQM kPz @@ -64060,20 +64965,20 @@ cME cME uzw uGY -sRV -cvq +gag +cHl nqN nqN nqN -ksk -sRV -cvq +aME +gag +cHl nqN nqN nqN -ksk -sRV -cvq +aME +gag +cHl uGY vZX vZX @@ -64086,12 +64991,12 @@ oly vZX vZX jwc -lCw -uat -qwU +pEt +cxb +uRI gfo -fhc -ydY +hyc +qwG twb kPz bQM @@ -64141,24 +65046,24 @@ lAh xLi xLi xLi -npV -nvZ +jdn +jVt xLi xLi -nsx -hKJ +sNg +xak xLi xLi xLi xLi -xjK -tOr -ezJ +mvp +cer +kpq xLi -hBI -iMS +cyk +mAS xLi -jpS +sWb azZ tel tel @@ -64167,23 +65072,23 @@ hVI xLS mEO ioM -iPM -fPZ -kqz -fPZ -iPM +qrn +bLM +tja +bLM +qrn tQB pcu pcu pcu tQB -qLz -oPW -roN -iPM -kqz -kqz -kqz +prC +rbp +hyq +qrn +tja +tja +tja hVI tEH tEH @@ -64191,38 +65096,38 @@ hVI hVI tEH hVI -mJy -cwO -wJJ -mhb -mhb -aja -ogr -tkk +dOO +oTi +ikt +jQs +jQs +xEH +wFp +pzE ioM -kwa +pNG mEO mEO -idE +byY ioM nOz -tvX -rJK +mCp +gTi eTc clP -lOE -mTX -axi +xzN +bDM +pgQ clP eTc -tvX -rJK +mCp +gTi nOz bFr -uRO +bPQ iKs iKs -kEE +akp bFr bFr bQM @@ -64237,14 +65142,14 @@ bQM bQM bQM dCM -tTu -tHs -sRV -ftv -sRV -aqI -sRV -tHs +bBt +ihB +gag +sNU +gag +pbX +gag +ihB dCM bQM kPz @@ -64253,12 +65158,12 @@ bQM kPz bQM dCM -sRV -ftv -kzN -tPQ -aqI -hVz +gag +sNU +bSs +dHU +pbX +cDE dCM bQM kPz @@ -64272,20 +65177,20 @@ cME cME cME gIB -sTa -sTa +lld +lld dCM bQM dCM -sTa -sTa -sTa +lld +lld +lld dCM bQM dCM -sTa -sTa -sTa +lld +lld +lld ovr vZX vZX @@ -64298,11 +65203,11 @@ vZX vZX vZX jwc -hxg -cEl +qsF +kTs gfo gfo -bNz +ivK twb twb kPz @@ -64352,111 +65257,111 @@ azZ azZ xLi xLi -sNd -xjK -xjK -xjK -mZG -xjK -xjK -idV -bAS +fKP +mvp +mvp +mvp +oih +mvp +mvp +hrA +wou xLi xLi -aOd -tOr -ezJ -xIb -jMe -tGO +cGa +cer +kpq +fMc +qkt +nEW ddL ejw ejw ejw rBr -evg +cXp hVI xLS mEO sJu -hDy -fPZ -kqz -fPZ -hDy +jMh +bLM +tja +bLM +jMh tQB jlH jlH jlH tQB -iPM -iPM -cHJ -iPM -kqz -imw -kqz -mFh -mhb -mhb -mhb -sRb -mhb -xvt -avX -cwO -mJy -uIl -fbW -xCs -rib -kqz +qrn +qrn +jxm +qrn +tja +bOR +tja +ddB +jQs +jQs +jQs +iWe +jQs +lBR +afq +oTi +dOO +wXN +bJG +eOp +qqW +tja sJu mEO mEO mEO -lyd +vXl ioM bis -cGm -tcO -mTX -mTX -mxn -bEO -tcO -mTX -mTX -mxn -pIo +gKG +iYa +bDM +bDM +dZK +rJF +iYa +bDM +bDM +dZK +lpd bFr bFr -fRG -bEO -bEO -kEE +kCj +rJF +rJF +akp bFr bFr bFr bFr bFr bFr -gdt -gdt -gdt +gBY +gBY +gBY bFr -gdt -gdt -gdt +gBY +gBY +gBY dCM -qdB -tHs -sRV -ftv -sRV -aqI -sRV -tHs +fDb +ihB +gag +sNU +gag +pbX +gag +ihB nqN nqN nqN @@ -64466,10 +65371,10 @@ nqN nqN nqN ceC -nIh -nIh -nIh -kov +dCn +dCn +dCn +llJ ceC nqN nqN @@ -64484,20 +65389,20 @@ cME cME cME gIB -tHs -tHs +ihB +ihB dCM bQM dCM -tHs -tHs -tHs +ihB +ihB +ihB dCM bQM dCM -tHs -tHs -iTw +ihB +ihB +oXb nqN aWk aWk @@ -64510,11 +65415,11 @@ qkN vZX vZX aWk -cEB -jrk -rkb -czj -xxd +nrn +pxL +ddv +vLe +rVp twb kPz kPz @@ -64563,66 +65468,66 @@ azZ azZ azZ xLi -jXO -xjK -xMg -sqg -sqg -sqg -sqg -sqg -sqg -sqg +wQY +mvp +lkr +hae +hae +hae +hae +hae +hae +hae xZR -sqg -sqg -ukI -ezJ -xJg -dNF -cwU +hae +hae +iRI +kpq +oxp +rHX +tvi ddL -xjK -dNF -xjK -jpS +mvp +rHX +mvp +sWb phz hVI qeX mEO hVI -dVK -xpB -kqz -fPZ -idE +rsH +rZI +tja +bLM +byY aFZ tQB tQB tQB aFZ -iPM -fOo -bgb -lXk -kqz -kqz -kqz -mJy -kqz -kqz -kqz -kqz -kqz -kqz -kqz -cwO -mJy -rXz -goh -cwO -tAI -fwR +qrn +kYz +bAE +vci +tja +tja +tja +dOO +tja +tja +tja +tja +tja +tja +tja +oTi +dOO +tsr +pSr +oTi +hiP +tcD aFZ hVI hVI @@ -64630,23 +65535,23 @@ bmE hVI aFZ bFr -wjk -bJF -bJF -bJF -lmr -bEO -nrY -bJF -bJF -bJF -dgF +wzH +tyj +tyj +tyj +bXh +rJF +nTv +tyj +tyj +tyj +dtS bFr bis -lEa -cWG -cWG -eVL +fTn +hXX +hXX +byc bFr bFr bFr @@ -64662,30 +65567,30 @@ iKs iKs uGY uGY -tHs -sRV -ftv -sRV -aqI -sRV -tHs +ihB +gag +sNU +gag +pbX +gag +ihB hVG -fnB -fnB -fnB -fnB -fnB -dme -fnB -dAQ -qms -jLK -the -qms -aDr -fnB -fnB -fnB +ubP +ubP +ubP +ubP +ubP +nEI +ubP +fYo +fou +alY +cqT +fou +aNk +ubP +ubP +ubP uGY gKl cME @@ -64696,20 +65601,20 @@ nNJ kNY rmh ceC -fnB -fnB +ubP +ubP nqN bQM nqN -fnB -fnB -fnB +ubP +ubP +ubP nqN bQM nqN -dnE -fnB -fnB +tEY +ubP +ubP dCM bQM bQM @@ -64775,129 +65680,129 @@ azZ azZ azZ xLi -jYB -xjK -tOr -hmk -kbO -fhZ -kbO -kbO -kbO -kbO +geT +mvp +cer +pvF +eqU +hmE +eqU +eqU +eqU +eqU xZR -kbO -kbO -dFk -ezJ +eqU +eqU +uAg +kpq xLi -kLX -oHn +cZe +bKF ddL -xjK -dNF -xjK +mvp +rHX +mvp wfY -jpS +sWb hVI hVI mEO hVI -iPM -jUz -kqz -fPZ -iPM +qrn +oJN +tja +bLM +qrn hVI -mOC -eCh -oxT +wow +boF +xaO hVI hVI hVI -cLc -mMo -iPM -kqz -iPM -ryN -opy -eSZ -jEb -jEb -pdw -jEb -pNV +lOm +rjP +qrn +tja +qrn +dAg +tlJ +qnb +jbq +jbq +qDZ +jbq +iea mEO -mJy -gMw +dOO +sls lfo -cwO -mJy -cwO +oTi +dOO +oTi hVI -nmx -kkk -mJy -cwO -uQF +nmL +ixn +dOO +oTi +ubA bFr bFr uIS uIS bis -tvX -bEO -rJK +mCp +rJF +gTi bis uIS uIS bis bFr -qZx -tvX -muO -muO -rJK -bEO -mTX -mTX -bEO -muO -muO -rJK -lOE -mTX -mTX -mTX -mTX -axi -tvX +fQA +mCp +dBy +dBy +gTi +rJF +bDM +bDM +rJF +dBy +dBy +gTi +xzN +bDM +bDM +bDM +bDM +pgQ +mCp ggk -tHs -sRV -ftv -sRV -aqI -lYw -tHs +ihB +gag +sNU +gag +pbX +hnM +ihB hVG -fnB -fnB -eUD -fnB -fnB -fnB -wLf +ubP +ubP +rAY +ubP +ubP +ubP +ngn sYP -tHs -nIy -fgB -xxE -tHs -tHs -fnB -fnB +ihB +ktC +kHZ +lRk +ihB +ihB +ubP +ubP uGY cFq xno @@ -64908,20 +65813,20 @@ twb twb twb nqN -fnB -fnB +ubP +ubP nqN bQM nqN -fnB -fnB -fnB +ubP +ubP +ubP nqN bQM nqN -fnB -fnB -fnB +ubP +ubP +ubP dCM bQM bQM @@ -64988,20 +65893,20 @@ azZ azZ xLi xLi -xjK -tOr -ezJ -xjK -xjK -xjK -xjK -xjK -bAS +mvp +cer +kpq +mvp +mvp +mvp +mvp +mvp +wou xLi xLi -aOd -tOr -ezJ +cGa +cer +kpq xLi ddL ddL @@ -65015,101 +65920,101 @@ hVI hVI mEO hVI -gzd -rHj -kqz -fPZ -orx +tAj +dOt +tja +bLM +ckt hVI -gom -fPZ -fPZ -fPZ -fPZ +tMV +bLM +bLM +bLM +bLM hVI hVI hVI -iPM -mky -iPM +qrn +jiA +qrn hVI -vXB -mMf -bNA -hRV -mYu +aqo +sdR +jci +nsm +cGU mEO -mJy -vkC -mJy -aBX -fxz -cwO -mJy -cwO +dOO +dVD +dOO +hhD +kpv +oTi +dOO +oTi hVI -jDL -fPZ -fPZ -fPZ -uXW -xfG +xOs +bLM +bLM +bLM +kYd +bpx hVI -dZt -qZx +pdN +fQA bis wMi wMi wMi bis -gET -snp +tJQ +mnR bis bFr -qZx -tvX +fQA +mCp iKs iKs -xZo -bEO +kvT +rJF iKs iKs -bEO -mEL -muO -muO -muO +rJF +clb +dBy +dBy +dBy iKs iKs iKs dFh -muO -muO +dBy +dBy ggk -tHs -sRV -ftv -sRV -aqI -sRV -tHs +ihB +gag +sNU +gag +pbX +gag +ihB hVG -jJT -fnB -fnB -fnB -vfJ -fnB -wLf +bLE +ubP +ubP +ubP +nDq +ubP +ngn wWs wWs -sRV -dFO +gag +aej wWs wWs -tHs -vDc -xDQ +ihB +qrI +ejs ggk cME cME @@ -65120,20 +66025,20 @@ tPN bQM bQM dCM -tHs -tHs +ihB +ihB dCM bQM dCM -tHs -tHs -tHs +ihB +ihB +ihB dCM bQM dCM -tHs -tHs -tHs +ihB +ihB +ihB dCM bQM bQM @@ -65200,10 +66105,10 @@ azZ azZ xLi xLi -xjK -cjS -ezJ -xjK +mvp +phC +kpq +mvp xLi xLi ddL @@ -65211,15 +66116,15 @@ ddL ddL xLi xLi -xjK -tOr -ezJ -xQb -kyl -xjK -xjK -xjK -xjK +mvp +cer +kpq +vtr +epD +mvp +mvp +mvp +mvp phz phz phz @@ -65227,101 +66132,101 @@ mEO mEO mEO hVI -idE -fPZ -kqz -fPZ -idE +byY +bLM +tja +bLM +byY hVI -qqM -kqz -kqz -kqz -kqz -kqz +jhl +tja +tja +tja +tja +tja aif -kqz -kqz -kqz -cso +tja +tja +tja +yhs hVI -gSN -icK +kYi +aFQ xxX iAA aRt nUb -wOT -cwO -mJy -uIl -qoZ -kHu -mJy -kqz +lzd +oTi +dOO +wXN +oFO +sHM +dOO +tja aif -fPZ -opV -mJy -cwO -tur -pSm +bLM +oga +dOO +oTi +brC +pjE hVI -bEO -bEO -bEO -tvX -muO -rJK -bEO -bEO -kCv -bEO -bEO -bEO -tvX -muO -muO -rJK -bEO -gHP -bJF -bEO -muO -muO -rJK -wjk -bJF -bJF -bJF -bJF -dgF -tvX +rJF +rJF +rJF +mCp +dBy +gTi +rJF +rJF +bQv +rJF +rJF +rJF +mCp +dBy +dBy +gTi +rJF +vCQ +tyj +rJF +dBy +dBy +gTi +wzH +tyj +tyj +tyj +tyj +dtS +mCp ggk -tHs -sRV -ftv -sRV -aqI -fhC -iTw +ihB +gag +sNU +gag +pbX +mWS +oXb ceC xGt xGt ceC -fnB -wFD -fnB -tHs +ubP +iwy +ubP +ihB wWs wWs -sRV -sRV +gag +gag wWs wWs -tHs -egm -xDQ +ihB +ncY +ejs ggk cME cME @@ -65332,20 +66237,20 @@ tPN bQM bQM dCM -oEY -uEm +ldZ +sbF dCM bQM dCM -uEm -uEm -uEm +sbF +sbF +sbF dCM bQM dCM -uEm -uEm -uEm +sbF +sbF +sbF dCM bQM bQM @@ -65411,44 +66316,44 @@ azZ azZ azZ xLi -idV -xjK -tOr -ezJ -bAS +hrA +mvp +cer +kpq +wou xLi -pso -nDW -oAQ -nTD -qVD -shq -jES -tOr -ezJ -xjK -xjK -xjK -jES -xjK -xjK -xjK -xjK +hqG +lQL +qsE +qMi +uky +nmy +luZ +cer +kpq +mvp +mvp +mvp +luZ +mvp +mvp +mvp +mvp phz ecu mEO hVI hVI -hDy -fPZ -kqz -fPZ -hDy +jMh +bLM +tja +bLM +jMh vWe hVI -kqz -fPZ -aac +tja +bLM +sBO hVI hVI hVI @@ -65466,11 +66371,11 @@ azv nUb mEO uza -dnB -jEb -tur -mJy -tkk +ipA +jbq +brC +dOO +pzE hVI hVI hVI @@ -65479,61 +66384,61 @@ tEH tEH hVI hVI -muO -muO -bEO -tvX +dBy +dBy +rJF +mCp iKs -rJK -bEO -lOE -mTX -mTX -mTX -mTX -mxn +gTi +rJF +xzN +bDM +bDM +bDM +bDM +dZK iKs -nrY -dgF -qZx +nTv +dtS +fQA bFr bFr bFr -ocd -tKs -muO -mEL +oLV +nxq +dBy +clb bFr cvn cvn bFr -muO -muO +dBy +dBy uGY -kaC -tHs -tHs -tHs -tHs -tHs -tHs +any +ihB +ihB +ihB +ihB +ihB +ihB buz -gvX -aav +ycf +hek dCM -fnB -fnB -fnB -tHs +ubP +ubP +ubP +ihB wWs wWs -tPQ -fnB +dHU +ubP wWs wWs -tHs -fnB -fnB +ihB +ubP +ubP uGY obz lAV @@ -65544,20 +66449,20 @@ nqN nqN nqN nqN -sRV +gag fCD nqN nqN nqN -ksk -sRV -cvq +aME +gag +cHl nqN nqN nqN -ksk -sRV -cvq +aME +gag +cHl nqN nqN nqN @@ -65622,157 +66527,157 @@ azZ azZ azZ azZ -jpS -xjK -xjK -tOr -ezJ -xjK +sWb +mvp +mvp +cer +kpq +mvp ddL lXO nId ykO pCc -tDY -siz -xjK -tOr -mtk -sqg -sqg -sqg -sqg -sqg -sqg -xRh -xjK +pxW +ioV +mvp +cer +wun +hae +hae +hae +hae +hae +hae +ceJ +mvp phz mEO mEO hVI -vmr -fPZ -vXi -kqz -fPZ -fPZ -fPZ -rbE -kqz -fPZ -aRx -luv -hBX -fPZ -iRc -fPZ -dla -oja -dWx -fPZ -hjr -mhb +xsC +bLM +ioS +tja +bLM +bLM +bLM +jTD +tja +bLM +tGU +rGe +fCr +bLM +gbv +bLM +fYa +voK +koY +bLM +hOG +jQs mEO -mhb -wMG -kdb -ovC -jvG -mhb -mhb -mhb -avX -cwO -fPZ -fPZ -fPZ -fPZ -fPZ -fPZ -fPZ +jQs +oDV +sBM +bQn +nJT +jQs +jQs +jQs +afq +oTi +bLM +bLM +bLM +bLM +bLM +bLM +bLM sJu -rIo -muO -bEO -tvX +fie +dBy +rJF +mCp iKs -rJK -bEO -tvX +gTi +rJF +mCp iKs iKs -muO -muO +dBy +dBy iKs -nrY -dgF -qZx +nTv +dtS +fQA bFr bFr bQM bFr bis -jiJ -muO -hiG +gXd +dBy +owd cvn bQM bQM cvn -muO -kAt +dBy +aSM uGY uGY uGY uGY uGY nqN -aIf -fOt +ksL +eip gpG -tHs -qIy +ihB +ohx ceC -mAv -fnB -fnB -tHs +cxy +ubP +ubP +ihB wWs wWs -fMk -fnB +xNG +ubP wWs wWs -tHs -fnB -vGe +ihB +ubP +aTx nqN uGY uxv uxv uGY uGY -iSf -cHx -fnB -tdG -fnB -fnB -fnB -jCl -rIW -fnB -crO -fnB -fnB -fnB -fnB -fnB -fnB -crO -fnB -dAQ -fnB +vlS +psm +ubP +nXu +ubP +ubP +ubP +mVY +mqB +ubP +qMI +ubP +ubP +ubP +ubP +ubP +ubP +qMI +ubP +fYo +ubP nqN vZX vZX @@ -65835,104 +66740,104 @@ azZ azZ azZ xLi -jpS -jmM -tOr -ezJ -xjK +sWb +esR +cer +kpq +mvp ddL ntH nMZ oHX pFP -qZa -sjn -xjK -tOr -hmk -kbO -kbO -kbO -kbO -kbO -dFk -ezJ -xjK +iUr +tNf +mvp +cer +pvF +eqU +eqU +eqU +eqU +eqU +uAg +kpq +mvp phz mEO hVI hVI -nqV -kqz -kqz -kqz -kqz -kqz -kqz -kqz -kqz -fPZ -kiE -jOJ -fPZ -kqz -kqz -kqz -pIX -bNf -fPZ -fPZ +suY +tja +tja +tja +tja +tja +tja +tja +tja +bLM +gQz +ntM +bLM +tja +tja +tja +gFp +ikL +bLM +bLM mEO -sjw -jEb +mzK +jbq mEO -jEb -jEb -jEb -oii -jEb -jEb -jEb -pNV -cwO -fPZ -fPZ -fPZ -fPZ -fPZ -fPZ -fPZ +jbq +jbq +jbq +bXc +jbq +jbq +jbq +iea +oTi +bLM +bLM +bLM +bLM +bLM +bLM +bLM sJu -rIo -ekH -bEO -tvX +fie +sWl +rJF +mCp iKs -rJK -bEO -wjk -bJF -bJF -bJF -bJF -bJF -dgF -qZx +gTi +rJF +wzH +tyj +tyj +tyj +tyj +tyj +dtS +fQA bFr bFr bQM bQM bFr rLJ -qXP -muO -tKs +oeY +dBy +nxq bFr cvn cvn bFr -muO -muO +dBy +dBy eLu eLu fdf @@ -65942,49 +66847,49 @@ twb oZy nfA gpG -rUT -tHs +lkP +ihB hVG -jWB -vfJ -bfx -tHs +fZz +nDq +uRZ +ihB wWs wWs -sRV -sRV +gag +gag wWs wWs -tHs -vfJ -wOS -sTa -sTa -sTa -sTa -gJG -oWW -fnB -fnB -fnB -fnB -fnB -fnB -fnB -ftv -aqI +ihB +nDq +rxg +lld +lld +lld +lld +wmx +bCe +ubP +ubP +ubP +ubP +ubP +ubP +ubP +sNU +pbX sYP -fnB -fnB -fnB -fnB -fnB -fnB -fnB -fnB +ubP +ubP +ubP +ubP +ubP +ubP +ubP +ubP sYP -fnB -xDQ +ubP +ejs ggk vZX vZX @@ -66047,66 +66952,66 @@ azZ xLi xLi xLi -jpS -xjK -tOr -ezJ -ftq +sWb +mvp +cer +kpq +aUA ddL oIq nOw oXR pHh -qZh -sma -xjK -tOr -ezJ -xjK -xjK -xjK -xjK -xjK -tOr -ezJ -xjK +oEu +cKB +mvp +cer +kpq +mvp +mvp +mvp +mvp +mvp +cer +kpq +mvp hVI hVI hVI -sjx -fPZ -kqz -wLN +gbT +bLM +tja +ctC vWe -sbQ -kqz -fPZ -trH -kqz -fPZ -vsz +gbh +tja +bLM +kZV +tja +bLM +gAC hVI -tOZ -kqz -kqz -kqz -pIX -bNf -dKy +lpw +tja +tja +tja +gFp +ikL +xMp jyP -mJy -lyX +dOO +sDn hVI -vtG -vtG -vtG -qeU +mtP +mtP +mtP +cqP hVI tEH tEH hVI -oxZ -rSM +njY +xCp hVI tEH tEH @@ -66115,20 +67020,20 @@ hVI hVI hVI hVI -bEO -ncP -bEO -wjk -bJF -dgF -bEO -nHb -bEO -bEO -bEO -hmj -muO -muO +rJF +lGL +rJF +wzH +tyj +dtS +rJF +sCe +rJF +rJF +rJF +fmb +dBy +dBy bis bFr bQM @@ -66136,15 +67041,15 @@ bQM bQM bFr bis -jiJ -bMA -lOE -mTX -azI -mTX -mTX -axi -tvX +gXd +qIT +xzN +bDM +hwr +bDM +bDM +pgQ +mCp rHu bnL cME @@ -66154,49 +67059,49 @@ liA nyS scZ ceC -itt -aPF +bQW +fiG ceC -fnB -wFD -fnB -tHs +ubP +iwy +ubP +ihB wWs wWs -sRV -sRV +gag +gag wWs wWs -tHs -wFD -ezT -uEm -uEm -uEm -aQZ -uEm -ajr -fnB -fnB -fnB -fnB -fnB -qhB -rmA -ftv -aqI -fnB -fnB -sRV -sTa -sTa -sTa -sTa -sRV -fnB -fnB -fnB -xDQ +ihB +iwy +xjM +sbF +sbF +sbF +wIx +sbF +qhN +ubP +ubP +ubP +ubP +ubP +daY +hEZ +sNU +pbX +ubP +ubP +gag +lld +lld +lld +lld +gag +ubP +ubP +ubP +ejs ggk vZX vZX @@ -66261,71 +67166,71 @@ xLi phz phz phz -tOr -ezJ -bAS +cer +kpq +wou xLi -nvC -nPO -paQ -pIi -gKL -kWJ -xjK -tOr -vpB -xWp -xfq -sqg -xRh -hYV -tOr -ezJ -bAS +lIl +cEG +mvV +fno +byF +swJ +mvp +cer +ojc +ujo +kii +hae +ceJ +tdr +cer +kpq +wou hVI hVI hVI -gfN -rDm -kqz -cxF -sVD -qfI -kqz -gGp -jOJ -kqz -fPZ -brr -kcO -cqy -fPZ -kqz -fPZ -dla -fzb -mXI -fPZ -mJy -oBP +eUZ +wEE +tja +dTg +vRF +ewI +tja +sYy +ntM +tja +bLM +mRA +lIk +vJo +bLM +tja +bLM +fYa +cbF +eOy +bLM +dOO +uRF aif -fPZ -fPZ -fPZ -kuS +bLM +bLM +bLM +loP hVI -kSP -fPZ +rMq +bLM hVI -mJy -kqz +dOO +tja aif ovJ -fPZ +bLM sJu -hSL -euG -sct +nCt +yeA +olg aFZ cvn bFr @@ -66347,16 +67252,16 @@ twb twb twb twb -eTx -oti -muO -muO +tIn +dwP +dBy +dBy iKs iKs iKs iKs -muO -muO +dBy +dBy rHu xPG cME @@ -66369,46 +67274,46 @@ ceC xGt xGt ceC -fnB -fnB -fnB -tHs -tHs -tHs -tHs -tHs -tHs -tHs -tHs -fnB -nza +ubP +ubP +ubP +ihB +ihB +ihB +ihB +ihB +ihB +ihB +ihB +ubP +xGD nqN dCM dCM dCM nqN -flC -fnB -eVZ -fnB -hoy -fnB +lkQ +ubP +ktv +ubP +hPN +ubP pTj -fnB -ftv -aqI -rmA -fnB -azJ -pPf -grL -grL -apy -azJ -fnB -fnB -fnB -fnB +ubP +sNU +pbX +hEZ +ubP +jtK +gmF +txh +txh +afO +jtK +ubP +ubP +ubP +ubP plK plK wHw @@ -66467,89 +67372,89 @@ azZ azZ azZ xLi -ruy -ruy +dqX +dqX phz phz -csp +fEn kEZ -tOr -ezJ -xjK +cer +kpq +mvp xLi ddL ddL ddL xLi xLi -dMK -xjK -tOr -vqg -xjK -neD +nrU +mvp +cer +cvH +mvp +qrt xLi -fWc -xjK -tOr -ezJ -xjK +ydQ +mvp +cer +kpq +mvp hVI hVI hVI dvq -fPZ -kqz -hBX -rLT -sQK -mFz -kiE -pKd -kqz -fPZ -bET -luv -xnK -wsY -kqz -fPZ -dla -sbY -gRm -fwZ -dwM -cDr +bLM +tja +fCr +hDl +ugq +xLf +gQz +mOf +tja +bLM +scp +rGe +jSU +ajP +tja +bLM +fYa +kCN +oXI +hko +eUN +pae hVI -mRU -shG -fPZ -djA +wKR +nxY +bLM +iSW hVI -ivR +psL ovJ -aif -kqz -cwO +hWi +tja +oTi hVI -fgb -onz +jBn +rHf hVI -lbu +fIq mEO -gbS +oou aFZ -dhi -lDC +wIG +ugv qOk -mKS -mhv -cAW +tIp +lml hVS lDC qOk -mKS -mhv +nYT +vPM +bQM tPN ecL cME @@ -66559,72 +67464,72 @@ tpf tIU cME eLu -nbo -muO -rJK -wjk -bJF -bJF -bJF -bJF -dgF -tvX +cbd +dBy +gTi +wzH +tyj +tyj +tyj +tyj +dtS +mCp rHu rJu uzw kqC -cCq -dHp -dHp -uFh +rzp +vds +vds +elO abJ -usz -usz +ioc +ioc abJ -fnB -fnB -fnB -eoZ -cHx -fnB -fnB -fnB -fnB -fnB -fnB -fnB -dme +ubP +ubP +ubP +kJU +psm +ubP +ubP +ubP +ubP +ubP +ubP +ubP +nEI dCM bQM kPz bQM dCM -fnB -fnB -fnB -vGe +ubP +ubP +ubP +aTx uGY uGY uGY uGY gIB uGY -flC -fnB -sRV -uEm -uEm -uEm -uEm -sRV -fnB -fnB +lkQ +ubP +gag +sbF +sbF +sbF +sbF +gag +ubP +ubP wxZ qeC bLA -xBT -oyg -xBT +xQx +aEB +xQx plK vZX vZX @@ -66679,95 +67584,95 @@ azZ azZ xLi xLi -jpS +sWb phz ctD phz phz -xjK -tOr -ezJ -xjK -xjK -xjK -xjK -xjK +mvp +cer +kpq +mvp +mvp +mvp +mvp +mvp xLi rfd -xjK -xjK -tOr -vpB -xWp -jPz -kbO -dsT -xjK -tOr -ezJ -xjK -gkt -aDi -nvF -gkt -fPZ -kqz -mYo +mvp +mvp +cer +ojc +ujo +aMu +eqU +iOY +mvp +cer +kpq +mvp +uno +ciA +lsn +uno +bLM +tja +qGO hVI -jDL -xuH -knt -jOJ -ffm -fPZ -jlg -rLT -qfI -fPZ -kqz -cxF -xWH -wmG -iVC -fPZ -mJy -cwO +xOs +nCV +aeF +ntM +uIB +bLM +eLw +hDl +ewI +bLM +tja +dTg +qCE +eYr +lbZ +bLM +dOO +oTi nQq hVI hVI -lGA hVI hVI hVI hVI -nQq -mJy -tkk +hVI +mrI +dOO +pzE vWe hVI hVI hVI lyJ -ndh +nBt kwT tQB -daD +tqP afk afk afk -chA -qFE -dvY +xdt +tzN afk afk afk -dkg +rxL +fQV tPN ecL cME cME oOi -pSJ +pJc qws cME eLu @@ -66775,9 +67680,9 @@ eLu eLu eLu twb -mNn -mNn -mNn +eBO +eBO +eBO twb eLu eLu @@ -66785,58 +67690,58 @@ eLu kfW cME kqC -pHu -uGD -sHH -vei +dHD +lkb +upY +fHo vRA -usz -usz +ioc +ioc vRA -fnB -kNP -fnB -fnB -diS -fnB -fnB -fnB -fnB -fnB -fnB -fnB -fnB +ubP +nXX +ubP +ubP +ejL +ubP +ubP +ubP +ubP +ubP +ubP +ubP +ubP dCM bQM kPz bQM dCM -qms -fnB -qms -cph +fou +ubP +fou +ePM gIB -ndC -hbq -ejn -oTH +lrV +onh +sQy +adq hjE -fnB -fnB -fnB -sRV -sRV -sRV -sRV -fnB -fnB -fnB +ubP +ubP +ubP +gag +gag +gag +gag +ubP +ubP +ubP kjP -qeh -nRb -sOn -sOn -xBR +otC +dkn +uKX +uKX +rZe plK vZX waU @@ -66891,74 +67796,74 @@ azZ lAh xLi xLi -ruy +dqX phz phz phz xLi azZ -tOr -mtk -sqg -sqg -sqg -sqg -sqg -sqg +cer +wun +hae +hae +hae +hae +hae +hae xZR -sqg -sqg -uqo -ezJ -xjK -xjK -xjK -xjK -xjK -tOr -ezJ -xjK +hae +hae +lcJ +kpq +mvp +mvp +mvp +mvp +mvp +cer +kpq +mvp cyV -fPZ -fPZ +bLM +bLM cyV -fPZ -kqz -fPZ -sbp -fPZ -uWS -uFM -jlg -kqz -fPZ -jaR -ueA -nxH -kqz -kqz -cxF -goA -wmG -iVC -fPZ -mJy -cwO +bLM +tja +bLM +wbr +bLM +kid +ezU +eLw +tja +bLM +boI +vTR +oAf +tja +tja +dTg +slh +eYr +lbZ +bLM +dOO +oTi hVI -rCL -fPZ -fPZ -fPZ +dEj +bLM +bLM +bLM hVI -kSP -qSg +khY +oAj hVI -mJy -cwO -tbZ -adH +dOO +oTi +ueI +khY hVI -fUZ +rlP mEO lLE xoi @@ -66968,87 +67873,87 @@ afk hkh afk tCZ -pcu urJ afk hkh afk tCZ +pcu tPN -slM +jSE cME cME tIU gZc -ick +tIU cME liA cME qIq eLu -lcH -cCq -dHp -uFh -lcH +uvF +rzp +vds +elO +uvF wQT eLu cME cME cME oFI -pHu -lMB -sHH -veB +dHD +qRa +upY +voO kqC -kis -uiR +pGS +kgN kqC -rRO -hvG -fnB -fnB -fnB -fnB -fnB -fnB -fnB -fnB -fnB -fnB -vGe +sOj +uye +ubP +ubP +ubP +ubP +ubP +ubP +ubP +ubP +ubP +ubP +aTx nqN dCM dCM dCM nqN -flC -qms -fnB -nDT +lkQ +fou +ubP +kWv gIB -aVD -dzo -sRV -tHs +mdH +rVV +gag +ihB hsC -fnB -fnB -fnB -sRV -sRV -sRV -sRV -fnB -fnB -fnB +ubP +ubP +ubP +gag +gag +gag +gag +ubP +ubP +ubP lAY -nRb -nRb -sOn -sOn -sOn +dkn +dkn +uKX +uKX +uKX plK vZX vZX @@ -67103,89 +68008,89 @@ azZ lAh xLi xLi -ruy +dqX phz phz -ruy +dqX azZ azZ -tOr -lro -kbO -kbO -kbO -kbO -kbO -kbO +cer +bLO +eqU +eqU +eqU +eqU +eqU +eqU xZR -kbO -kbO -uvy -ezJ -xjK -xjK -xjK -xjK -xjK -tOr -ezJ -xjK +eqU +eqU +xAY +kpq +mvp +mvp +mvp +mvp +mvp +cer +kpq +mvp cyV -fPZ -fPZ +bLM +bLM cyV -fPZ -kqz -cxF -sbQ -sbg -fSI -mIk -fPZ -ygH -kqz -kqz -kqz -kqz -fPZ -fPZ -cxF -goA -wmG -iVC -leq -mJy -cwO +bLM +tja +dTg +gbh +leZ +mAs +teK +bLM +aHK +tja +tja +tja +tja +bLM +bLM +dTg +slh +eYr +lbZ +oeN +dOO +oTi hVI -djA -vDj -qgh -fPZ +iSW +ptH +bLM +bLM hVI -ivR +psL ovJ -aif -kqz -cwO -fPZ -fPZ +hWi +tja +oTi +bLM +bLM sJu -rjE -dQp -cnF +bxQ +mNB +byY fUX tQB -mdJ +mpB afk afk afk -cjA -cpW -cYa +eze +bHU afk afk afk -dMU +hxG +jlH twb twb twb @@ -67197,70 +68102,70 @@ bgy eLu cME cME -gyW +cME liA -cFy -mcc -vei +oXg +xbM +fHo xno dTf -lcH +uvF cME ljd cME oFI -pHu -sHH -sHH -hPs +dHD +upY +upY +ger abJ -usz -usz +ioc +ioc abJ -sFf -fnB -fnB -fnB -poD -ubH -ubH -ubH -ubH -ubH -rYC -fnB -wOS -sTa -sTa -sTa -sTa -sTa -oWW -eej -fnB -xnR +aUg +ubP +ubP +ubP +szD +cns +cns +cns +cns +cns +wzd +ubP +rxg +lld +lld +lld +lld +lld +bCe +nWv +ubP +iIE gIB -fnB -juS -fnB -fYB +ubP +gKg +ubP +iPz vUv -fnB -fnB -sRV -sTa -sTa -sTa -sTa -sRV -fnB -fnB +ubP +ubP +gag +lld +lld +lld +lld +gag +ubP +ubP cri hfc -mie -scU -sFn -vdZ +tGY +qBj +cZy +aGF plK wHw plK @@ -67314,92 +68219,92 @@ lAh lAh lAh xLi -jpS +sWb phz phz phz azZ xLi azZ -tOr -ezJ -jES -xjK -xjK -xjK -xjK +cer +kpq +luZ +mvp +mvp +mvp +mvp xLi rfd -xjK -xjK -tOr -vpB -xWp -xfq -sqg -xRh -xjK -tOr -ezJ -xjK +mvp +mvp +cer +ojc +ujo +kii +hae +ceJ +mvp +cer +kpq +mvp cyV -fPZ -fPZ +bLM +bLM cyV -fPZ -kqz -fPZ -wAT -trH -kqz -fPZ -fPZ -tnr -fPZ -fPZ -kqz -kqz -qDH -qDH -syf -syf -aNP -ebc -ven -gnV -uGq +bLM +tja +bLM +oTa +kZV +tja +bLM +bLM +img +bLM +bLM +tja +tja +ueX +ueX +qjM +qjM +tis +eca +xlk +nfu +kpH hVI tEH tEH -hVI -jjs +hzv +nDr hVI tEH tEH hVI -ldT -lAf -fPZ -xns +rqq +hMA +bLM +fgY vWe hVI hVI -anG +erD wyl aFZ -ggQ -eJQ -eJQ -tvI -sYv +xKA +xQC +llQ +viX +bsk +lSS +lcq +llQ +jaB +bsk +bQM bQM -ggQ -eJQ -eJQ -tvI -sYv kPz -eHa twb aLT cME @@ -67411,9 +68316,9 @@ cME cME cME kaO -maE -mcc -dds +qPa +xbM +weM daS cME cME @@ -67421,60 +68326,60 @@ cME cME eLu kqC -pHu -sHH -fxP -iUy +dHD +upY +eNa +efW vRA -usz -usz +ioc +ioc vRA -fnB -fnB -fnB -fnB -hss -tHs -tHs -tHs -tHs -tHs -dIi -fnB -ezT -uEm -uEm -uEm -uEm -uEm -ajr -fnB -fnB -aaW +ubP +ubP +ubP +ubP +qqd +ihB +ihB +ihB +ihB +ihB +unu +ubP +xjM +sbF +sbF +sbF +sbF +sbF +qhN +ubP +ubP +mNc gIB -sRV -vGe +gag +aTx uGY gIB uGY -nEy -fnB -azJ -pPf -grL -grL -apy -azJ -fnB -fnB -fnB +lHE +ubP +jtK +gmF +txh +txh +afO +jtK +ubP +ubP +ubP plK -uZn -nRb -sOn -oli +kyd +dkn +uKX +fuJ plK -uYR +hwS gRT vHU eki @@ -67526,92 +68431,92 @@ azZ azZ lAh xLi -ruy +dqX phz irD phz azZ azZ azZ -tOr -ezJ -xjK +cer +kpq +mvp xLi ddL ddL ddL xLi xLi -dMK -jES -tOr -vqg -uef -neD +nrU +luZ +cer +cvH +rFF +qrt xLi -fWc -xjK -tOr -ezJ -xjK -tef -tpO -nql -gkt -yjs -kqz -cJw -vdG -gzQ -kqz -luv -bcF -fPZ -fPZ -fPZ -kqz -vro -qDH +ydQ +mvp +cer +kpq +mvp +tji +azK +nWx +uno +atw +tja +koH +qTx +gRf +tja +rGe +dCv +bLM +bLM +bLM +tja +ltd +ueX aSS -qmC -uCa -uCa -jgl -mhb -avX -oBP -cnW -mhb -mhb -mhb -kqz -mhb -mhb -mhb -mhb -avX -cwO -fPZ -cqH -aFZ -aFZ -aFZ -aFZ -aFZ +gNx +tHF +tHF +gbO +jQs +afq +uRF +qqc +jQs +jQs +jQs +tja +jQs +jQs +jQs +jQs +afq +oTi +bLM +svW +hVI +hVI +hVI +hSo +hVI aFZ -cAW -cAW -bQM -bQM -bQM -bQM -cAW -cAW -cAW -cAW -cAW +sKY +sKY +iYw +iYw +iYw +iYw +iYw +iYw +sKY +sKY +iYw +kPz kPz -bTo twb twb twb @@ -67623,9 +68528,9 @@ cME rJh eLu eLu -pHu -mcc -vei +dHD +xbM +fHo vbG vZD cME @@ -67633,60 +68538,60 @@ cME cME eLu kqC -pHu -sHH -bfb +dHD +upY +skj uGY ceC xGt xGt ceC -fnB -fnB -eoZ -fnB -wTy -tHs -sRV -sRV -sRV -tHs -aQU -vlm -fbs +ubP +ubP +kJU +ubP +ibz +ihB +gag +gag +gag +ihB +dVx +gaQ +spm ceC ceC xNm ceC ceC -evv -fnB -fnB +eyy +ubP +ubP bZY uGY uxv uGY uGY -tHs -tHs -fnB -fnB -sRV -uEm -uEm -uEm -uEm -sRV -fnB -fnB -wzS +ihB +ihB +ubP +ubP +gag +sbF +sbF +sbF +sbF +gag +ubP +ubP +ozC plK -rtM -nRb -sOn -iif -nRb -xBT +kmn +dkn +uKX +nuo +dkn +xQx pSU dKo rJO @@ -67738,167 +68643,167 @@ azZ azZ lAh xLi -ruy +dqX phz phz phz phz -ruy +bMT azZ -tOr -ezJ -bAS +cer +kpq +wou xLi -pso -nTD -pdm -pPQ -qVD -cOy -xjK -tOr -vpB -xWp -jPz -kbO -dsT -xjK -tOr -ezJ -xjK +hqG +qMi +phQ +tiM +uky +bzU +mvp +cer +ojc +ujo +aMu +eqU +iOY +mvp +cer +kpq +mvp hVI rIS hVI dvq -fPZ -kqz -xeh -fPZ -tWe -kqz -qfI -fFU -cqy -fPZ -byr -kqz -kqz -dla -oja -peh -fPZ -bDD -mJy -sjw -jEb -jEb -oxk -jEb -jEb -jEb -hcf -jEb -jEb -kqz -pxI -jEb -tur -fPZ -goA -aFZ -dhi -lDC -qOk -mKS -mhv -bQM -bQM -bQM +bLM +tja +tAR +bLM +cvi +tja +ewI +gCH +vJo +bLM +otz +tja +tja +fYa +voK +fQI +bLM +hkM +dOO +mzK +jbq +jbq +xTD +jbq +jbq +jbq +tpz +jbq +jbq +tja +eOM +jbq +brC +bLM +slh +hVI +bLJ +bLJ +frv +bLJ +ofQ +hCh +suX +nQu +iUB +hCh +hCh +nQu +jcF +hCh +hCh +iYw +iYw +cAW bQM bQM bQM -cAW -cAW -cAW -cAW -cAW -hVS -lDC -qOk -mKS -mhv twb -ivB +qkn uzw eLu mrk cME jkg -lcH -xlq -mcc -vei +uvF +rVL +xbM +fHo xno cME -lcH +uvF cME cME cME kqC -pHu -sHH -vei +dHD +upY +fHo uGY -tBD -vrM -fGp +jIw +cRl +sQC ceC -fnB -fnB -fnB -fnB +ubP +ubP +ubP +ubP ceC -jVQ +kVN tpa tpa tpa -jVQ +kVN ceC ceC ceC ceC -eZD -wZn -meF +mXS +mQy +jQS ceC ceC -fkY -rmA +hYx +hEZ pTj -jCl -pDH -dme -fnB -ftv -aqI -fnB -fnB -fnB -sRV -sRV -sRV -sRV -fnB -fnB -fnB -fnB +mVY +uNm +nEI +ubP +sNU +pbX +ubP +ubP +ubP +gag +gag +gag +gag +ubP +ubP +ubP +ubP vFs -sOn -sOn -sOn -aFg -nRb -xBT +uKX +uKX +uKX +lkA +dkn +xQx gPs iMo rJO @@ -67955,90 +68860,90 @@ phz phz phz phz -ruy -xjK -tOr -ezJ -xjK +dqX +mvp +cer +kpq +mvp ddL lXO nId ykO pCc -mQn -siz -xjK -tOr -ezJ -xjK -xjK -xjK -xjK -xjK -tOr -ezJ -bAS +msd +ioV +mvp +cer +kpq +mvp +mvp +mvp +mvp +mvp +cer +kpq +wou hVI hVI hVI -exs -fPZ -kqz -xwi -fPZ -hqZ -kqz -fPZ -sbQ -luv -dBI -rLT -kqz -dqk -pIX -bNf -nBG -fKq -fPZ -mJy -cwO -mJM -fOs +fpq +bLM +tja +sve +bLM +iie +tja +bLM +gbh +rGe +bsR +hDl +tja +mMh +gFp +ikL +fwt +vBH +bLM +dOO +oTi +bNo +aEG hVI hVI hVI hVI -jjs +nDr hVI hVI -jjs +nDr hVI vWe -ruB -ruB -dID -aSS -daD -afk -afk -afk -bAB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -eDn -afk -afk -afk -dkg +nor +nor +tTI +vWe +eqZ +iVT +fqg +suX +nQu +nQu +nQu +nQu +nQu +nQu +nQu +nQu +nQu +nQu +nQu +suX +iYw +yli +iYw +bQM +bQM twb nSU cME @@ -68046,78 +68951,78 @@ eLu cME cME eLu -lcH -pHu -mcc -vei -lcH +uvF +dHD +xbM +fHo +uvF wQT eLu cYP qso -hTr +gsN kqC -pHu -sHH -vei +dHD +upY +fHo hVG -hVm +yiL cZV -oQY +wNG hVG -fnB -fnB -fnB -fnB +ubP +ubP +ubP +ubP ceC -xNf -sRV -sRV -sRV -unc +dZu +gag +gag +gag +lgG ceC -bOh -hUV -rRT -hUV -bFR -sMo -gVA +tCH +ohc +taL +ohc +pjf +mSp +mHY ceC -qnQ +wDz pTj -fnB +ubP pTj -gnj -crO -fnB -ftv -aqI -fnB -fnB -fnB -sRV -sRV -sRV -sRV -fnB -fnB -fnB -fnB +sJB +qMI +ubP +sNU +pbX +ubP +ubP +ubP +gag +gag +gag +gag +ubP +ubP +ubP +ubP vFs -sOn -sOn -sOn -fdS -nRb -xBT +uKX +uKX +uKX +oMf +dkn +xQx bWg tKv wxX rJO plK -keL -keL +xZI +xZI aPH nGy rJO @@ -68168,89 +69073,89 @@ phz phz irD phz -xjK -tOr -ezJ -xjK +mvp +cer +kpq +mvp ddL ntH nUr oHX pFP -rfR -sjn -xjK -tOr -mtk -sqg -sqg -sqg -sqg -sqg -ukI -ezJ -xjK +blA +tNf +mvp +cer +wun +hae +hae +hae +hae +hae +iRI +kpq +mvp hVI hVI hVI -xGY -fPZ -kqz -fPZ -fPZ -fPZ -kqz -fPZ -hBX -gwz -fPZ -vBV -aRB -kqz -dWN -bNf -uxi -fPZ -uvG -mJy -cwO -fPZ -jBK +euz +bLM +tja +bLM +bLM +bLM +tja +bLM +fCr +eCy +bLM +xsX +vdn +tja +rbZ +ikL +kke +bLM +wkg +dOO +oTi +bLM +eSO hVI -sol -fPZ -fPZ -fPZ -fPZ +aXR +bLM +bLM +bLM +bLM hVI -mFh -isJ -pQD -rME -fPZ -fPZ -tQB -urJ -afk -hkh -afk -bQp -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -eDn -afk -hkh -afk -tCZ +ddB +wiR +xLn +hYX +bLM +bLM +eHt +suX +aeI +aeI +aeI +aeI +aeI +aeI +aeI +nQu +nQu +nQu +aeI +aeI +aeI +aeI +nQu +nQu +suX +egk +iYw +bQM twb uts cME @@ -68259,9 +69164,9 @@ cME cME cME liA -pHu -mcc -ueF +dHD +xbM +fJV kqC kqC kqC @@ -68269,60 +69174,60 @@ kqC kqC kqC kqC -osO -mfV -odg +oSn +hwN +eJy uGY -toJ -twB -twB +lEF +tsN +tsN ceC -bsq -dzo -dzo -bsq +qbI +rVV +rVV +qbI ceC -vUE -fnB -fnB -fnB -sRV +ihO +ubP +ubP +ubP +gag hVG -yft -eSs -aHY -tXi -huI -lpf -seY +oZi +bcq +vgL +dHb +ezO +xpx +eIB ceC -sns -fnB -jmm -fnB -tPQ +fxi +ubP +pwC +ubP +dHU sYP -xqD -ftv -aqI -fnB -fnB -sRV -sTa -sTa -sTa -sTa -sRV -fnB -fnB -wzS +fGA +sNU +pbX +ubP +ubP +gag +lld +lld +lld +lld +gag +ubP +ubP +ozC plK upX -nRb -sOn -iif -nRb -xBT +dkn +uKX +nuo +dkn +xQx uMw rJO rJO @@ -68375,115 +69280,115 @@ azZ azZ xLi phz -ruy +dqX phz phz phz -jpS -xjK -tOr -ezJ -mrm +sWb +mvp +cer +kpq +ajw ddL oIq nOw oXR pHh -lxk -sma -xjK -tOr -hmk -kbO -kbO -kbO -kbO -kbO -kbO -dsT -xjK +apO +cKB +mvp +cer +pvF +eqU +eqU +eqU +eqU +eqU +eqU +iOY +mvp mEO mEO hVI hVI -hOg -kqz -kqz -kqz -kqz -kqz -kqz -wOT -kqz -bYq -kqz -kqz -kqz -qCw -bNf -ffU -fPZ -fPZ -mJy -cwO -hOg -xIg +gYM +tja +tja +tja +tja +tja +tja +lzd +tja +uJG +tja +tja +tja +caX +ikL +fjo +bLM +bLM +dOO +oTi +gYM +hgc hVI -mMb -dLx -gik -fPZ -fPZ -aif -ryN -gBo -qpw -fPZ -fPZ -fPZ -tQB -mdJ -afk -afk -afk -bAB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -rAe -afk -afk -afk -dMU +fMn +kOu +bLM +bLM +bLM +hWi +dAg +nRU +dhZ +bLM +bLM +bLM +stP +suX +aeI +ucN +aeI +aeI +aeI +aeI +aeI +nQu +nQu +nQu +aeI +aeI +aeI +aeI +aeI +aeI +nQu +shH +iYw +iYw twb -dTf -cME +eLu +eLu eLu srI dTf eLu twb -pHu -mcc -vei +dHD +xbM +fHo wzE -bux -bZu +sfu +jyF kqC -bux -bZu +sfu +jyF kqC -usz -usz -usz +ioc +ioc +ioc uGY xGt xGt @@ -68494,47 +69399,47 @@ ceC ceC ceC ceC -jpR -fnB -fnB -fnB -sRV +kOV +ubP +ubP +ubP +gag hVG -vOj -yft -dpI -fGe -suE -aBO -tCu +ljV +oZi +qHX +jbu +cKJ +tir +sCH ceC -wvf -cHx -fnB +kIA +psm +ubP pTj -fnB -dme -fnB -ftv -aqI -fnB -fnB -azJ -pPf -grL -grL -apy -azJ -fnB -fnB -vGe +ubP +nEI +ubP +sNU +pbX +ubP +ubP +jtK +gmF +txh +txh +afO +jtK +ubP +ubP +aTx plK -omi -nRb -sOn -aFg -nRb -xBT +qEk +dkn +uKX +lkA +dkn +xQx uMw rJO rJO @@ -68586,138 +69491,138 @@ azZ azZ xLi xLi -jpS +sWb phz -hWU +jFP phz -jpS +sWb xLi -xjK -tOr -ezJ +mvp +cer +kpq azZ xLi -nvC -nVA -paQ -pIi -gKL -shq -jES -tOr -ezJ -xjK -xjK -xjK -xjK -xjK -xjK -xjK -xjK +lIl +wol +mvV +fno +byF +nmy +luZ +cer +kpq +mvp +mvp +mvp +mvp +mvp +mvp +mvp +mvp mEO mEO mEO hVI -hOg -fPZ -goH -kqz -fPZ -fPZ -fPZ -lvh -fPZ -fPZ -gwz -lCm -fPu -dla -fzb -mYN -fPZ -mFh -xog -oBP -aja -lUp +gYM +bLM +rfe +tja +bLM +bLM +bLM +dCs +bLM +bLM +eCy +cTE +njm +fYa +cbF +nvs +bLM +ddB +rcI +uRF +xEH +cBX hVI mei oZz -vWe hVI hVI -uCD hVI hVI hVI -fPZ -fPZ -hBX -tQB -ggQ -eJQ -eJQ -tvI -sYv -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -ggQ -eJQ -eJQ -tvI -sYv -twb -wQT -dMa -eLu +hVI +hVI +bLM +bLM +iUa +bLJ +xXl +aeI +aeI +aeI +aeI +ssc +aeI +aeI +nQu +nQu +nQu +aeI +aeI +aeI +aeI +aeI +aeI +aeI +nQu +suX +neY +liA +yfK +tmo +gfo cME wQT eLu kqC -pHu -mcc -vei +dHD +xbM +fHo kqC -isP -fAs +wsX +bjt kqC -avl -ocB +qNF +ctW kqC -cCq -dHp -dHp -dHp -ugU -gNW -gNW -gNW -hKE +rzp +vds +vds +vds +car +gOU +gOU +gOU +vFV xGt -mni -tHs -mni -tHs -sRV -sRV -sRV -tHs +ucu +ihB +ucu +ihB +gag +gag +gag +ihB ceC -ryt -ryt +obh +obh nqN -hSR -tam -ilh +bxc +jbF +bBK ceC uGY uGY @@ -68731,22 +69636,22 @@ uGY uGY uGY uGY -sRV -uEm -uEm -uEm -uEm -sRV -fnB -fnB -fnB +gag +sbF +sbF +sbF +sbF +gag +ubP +ubP +ubP plK -aFg -nRb -sOn -fdS -nRb -xBT +lkA +dkn +uKX +oMf +dkn +xQx uMw rJO rJO @@ -68798,15 +69703,15 @@ azZ azZ xLi xLi -jpS +sWb phz phz phz phz xLi -xjK -tOr -ezJ +mvp +cer +kpq azZ xLi xLi @@ -68815,15 +69720,15 @@ ddL ddL xLi xLi -tmi -tOr -ezJ -xjK -bjy -kky -lvx -jpS -ruy +uRT +cer +kpq +mvp +icg +uTr +myQ +sWb +dqX lAh lAh aFZ @@ -68831,73 +69736,73 @@ aFZ bmE hVI hVI -lxe -ayM -kqz -fPZ -bow +kXm +ipM +tja +bLM +esw aFZ hVI hVI -kqz -kqz +tja +tja hVI hVI hVI yhR -rmI -mhb -avX -kqz -kqz -oBP -uXc -cQn -mhb -mhb -cQn -rAQ -bqy +qiK +jQs +afq +tja +tja +uRF +cZp +aWI +jQs +jQs +jQs +nRT +qNj hVI -kSp -pEe -aoa -aja -mFh -aja -aFZ -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -twb -twb +vlK +oWY +ddB +xEH +bLM +kke +xSM +tWf +aeI +aeI +aeI +aeI +aeI +aeI +aeI +nQu +hCh +nQu +aQH +aeI +uJR +aeI +aeI +ssc +aeI +nQu +suX +bLJ twb twb tPN +tPN +tPN twb -twb +eLu kqC -pHu -mcc -vei +dHD +xbM +fHo kqC ryJ end @@ -68905,67 +69810,67 @@ kqC ryJ end kqC -pHu -juW -sHH -nCu -ufo -sHH -sHH -eGz -isK +dHD +wbW +upY +ufE +ugg +upY +upY +gmG +ksE xGt -fHU -wAr -fHU -tHs -sRV -sRV -sRV -tHs -bpK -ukN -kSI +roF +xWV +roF +ihB +gag +gag +gag +ihB +wQD +aye +yjW hVG -yft -fnB -fnB +oZi +ubP +ubP hVG -sRV -sFf -sdg +gag +aUg +ntf uGY -pUS -tHs -tHs +aMS +ihB +ihB xGt -wTz -iTy -xvH +klh +mld +hjM uGY -fnB -fnB -fnB -fnB -fnB -sRV -sRV -sRV -sRV +ubP +ubP +ubP +ubP +ubP +gag +gag +gag +gag plK -fdS -nRb -sOn -sOn -sOn -xBT +oMf +dkn +uKX +uKX +uKX +xQx uMw rJO rJO rJO plK -keL -keL +xZI +xZI eYV lvi rJO @@ -69011,166 +69916,166 @@ azZ azZ xLi xLi -jpS +sWb phz phz phz phz -xjK -tOr -ezJ +mvp +cer +kpq azZ azZ -xjK -xjK -xjK -bAS +mvp +mvp +mvp +wou xLi xLi -aOd -tOr -ezJ -xjK -kVz +cGa +cer +kpq +mvp +tmF xLi -xLP +mgh azZ azZ azZ ohF pcu tQB -wnW -aUx +kZu +mAK hVI -rfo -fPZ -kqz -fPZ -idE +wfu +bLM +tja +bLM +byY tEH -fPZ -fPZ -fPZ -trH -trH -fPZ +bLM +bLM +bLM +kZV +kZV +bLM hVI hVI -wRh -kqz -kqz -nhF -kqz -kqz -icj -tST -kqz -kqz -kqz -cwO -eli +woh +tja +tja +wCJ +tja +tja +frR +gjz +tja +tja +tja +tnY +ciy hVI -myO -cwO -mJy -cwO -mJy -cwO -tQB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW +wNB +oTi +dOO +oTi +bLM +kke +lwq +hGy +aeI +pdX +aeI +aeI +aeI +aeI +lqJ +nQu +hCh +nQu +aeI +aeI +aeI +aeI +aeI +aeI +aeI +aeI +nQu +hCh +sKY +bQM bQM bQM bQM bQM wzE kqC -pHu -ikA -vei -usz -cCq -dHp -dHp -dHp -uFh -jRR -pHu -sHH -sHH -cVl -sHH -bSP -sHH -sHw -uAG +dHD +bPn +fHo +ioc +rzp +vds +vds +vds +elO +nAs +dHD +upY +upY +hMj +upY +dQe +upY +ygk +rnE xGt -cBT -hBP -rBa -ddO -sRV -fWL -nyD -gkm -oZR -xVm -tJM +cLC +pjR +jOY +wXe +gag +udt +wHr +stw +wQg +qet +mKp nqN -ltb -cbK -hAL +qJv +bqF +tNF ceC -xEa -fnB -lqB +qNu +ubP +wty uGY -aCT -fnB -sRV +giA +ubP +gag hVG -tHs -qbu -tHs +ihB +rZO +ihB hVG -sRV -sRV -sRV -sRV -sRV -sRV -sRV -sRV -cvq +gag +gag +gag +gag +gag +gag +gag +gag +cHl plK -lNB -nRb -nRb -nRb -sOn -xBT +mVd +dkn +dkn +dkn +uKX +xQx gHz aJX uMw @@ -69228,123 +70133,123 @@ phz phz phz phz -xjK -tOr -mtk -sqg -sqg -sqg -sqg -sqg -sqg +mvp +cer +wun +hae +hae +hae +hae +hae +hae xZR -sqg -sqg -uwg -ezJ -xjK -qzn -ham -btq +hae +hae +ovk +kpq +mvp +mlb +byG +uQT azZ azZ azZ bTo pcu aFZ -uCz -kqz +hUL +tja hVI -bow -fPZ -kqz -mUr -bow +esw +bLM +tja +rnM +esw tEH -fPZ -rAa -rss -dBI -ycg -fPZ +bLM +uqd +eUy +bsR +hGu +bLM aif rKa -cVk -oYm -lFj -cFC -kqz -kqz -icj -kqz -kqz -sZr -ffm -cwO +rTV +pWX +bDJ +rtP +tja +tja +frR +tja +tja +nMi +tja +upr hVI hVI -mAz -tur -quk -rMS -tcl -tur -tQB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW +mMa +brC +uhX +tJw +kGD +gyh +buG +tWf +aeI +aeI +aeI +aeI +aeI +aeI +aeI +nQu +suX +nQu +aeI +aeI +aeI +aeI +aeI +aeI +aeI +aeI +nQu +hCh +sKY +bQM bQM bQM bQM bQM wzE kqC -pHu -mcc -vei -usz -avl -xri -xri -xri -iUy -jRR -wjx -sHH -wOM -sHH -sHH -hxi -ufo -isK +dHD +xbM +fHo +ioc +qNF +xRI +xRI +xRI +efW +nAs +fcB +upY +hlB +upY +upY +vYX +ugg +ksE ceC ceC -bFY -tHs -wJt -vZU -sRV -vKj +sIh +ihB +kjX +ueP +gag +hQj nqN nqN nqN @@ -69355,27 +70260,27 @@ ceC nqN nqN ceC -hUH -sRV -nBM +unz +gag +gYH uGY -aVN -fnB -tHs +pDQ +ubP +ihB xGt -gbP -uKh -iin +fZW +cki +huB uGY sEO sEO sEO -alr -ddF -ddF -ddF -ddF -ddF +vpN +sXt +sXt +sXt +sXt +sXt plK plK plK @@ -69385,8 +70290,8 @@ dwT dwT plK plK -rrb -aYZ +nzu +mBZ aPH kPz kPz @@ -69439,101 +70344,101 @@ xLi xLi xLi phz -jpS -xjK -lax -kbO -kbO -kbO -kbO -kbO -kbO -kbO +sWb +mvp +ubX +eqU +eqU +eqU +eqU +eqU +eqU +eqU xZR -kbO -kbO -dFk -ezJ -xjK -xjK -xjK -xjK +eqU +eqU +uAg +kpq +mvp +mvp +mvp +mvp azZ bQM bQM bTo pcu aFZ -duB -kqz +wDK +tja aif -idE -fPZ -kqz -fPZ -idE +byY +bLM +tja +bLM +byY tEH -fPu -jlg -jlg -fPZ -fPZ -fPu -hVI -hVI -wRh -xzb -kqz -kqz -kqz -uXa -icj -vro -kqz -sWu -kqz -tkk +njm +eLw +eLw +bLM +bLM +njm hVI hVI -aFZ -tQB -tQB -aFZ -tQB -tQB -aFZ -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -wzE -hZR -hZR -wzE -wzE -vqi -pHu -mcc -veB +woh +hYl +tja +tja +tja +cCs +frR +ltd +tja +set +tja +nyq +bLJ +bLJ +bLJ +bLJ +bLJ +bLJ +bLJ +bLJ +bLJ +xXl +aeI +fyt +aeI +aeI +aeI +rOL +aeI +nQu +hCh +nQu +aeI +rOL +aeI +aeI +aeI +evl +aeI +aeI +nQu +shH +iYw +iYw +sKY +sKY +sKY +iYw +iYw +izh +dHD +xbM +voO kqC ryJ end @@ -69541,39 +70446,39 @@ kqC ryJ end kqC -azT -sHH -sHH -cPQ -sHH -sHH -pbS -isK +lNf +upY +upY +elc +upY +upY +eNr +ksE xGt -mni -tHs -mni -tHs -tHs -fnB -fnB +ucu +ihB +ucu +ihB +ihB +ubP +ubP pTj -sRV -uSo -bOh +gag +hCk +tCH wBK -nzm +kGB ceC -tVZ -tVZ +dBO +dBO uGY uGY uxv uGY uGY -ril -fnB -tHs +nFb +ubP +ihB uGY xGt xGt @@ -69582,20 +70487,20 @@ uGY jwK jnd jwK -aWR -hxy -aWR -aWR -hxy -aWR +nZB +fAf +nZB +nZB +fAf +nZB okg jnd mpf hLz -aWR -hxy -hxy -aWR +nZB +fAf +fAf +nZB aPH aPH aPH @@ -69652,23 +70557,23 @@ xLi xLi xLi xLi -xjK -xjK -xjK -xjK -xjK -xjK -xjK -xjK -bAS +mvp +mvp +mvp +mvp +mvp +mvp +mvp +mvp +wou xLi xLi -aOd -tOr -ezJ -xjK -xjK -xjK +cGa +cer +kpq +mvp +mvp +mvp azZ azZ bQM @@ -69679,11 +70584,11 @@ aFZ hVI hVI hVI -gjj -fPZ -kqz -fPZ -idE +qSy +bLM +tja +bLM +byY aFZ hVI hVI @@ -69693,121 +70598,121 @@ hVI hVI hVI hVI -wRh -kqz -kqz -kqz -kqz -sHQ -pnc -bII -kqz -kqz -hkW -iJj -fPZ -aFZ -aFZ -bce -gTw -wuT -qOk -jfm -vPM -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -wzE -mcc -mcc -mcc -sHH -mcc -cMg -mcc -vei +woh +tja +tja +tja +tja +jHU +oza +cgx +tja +tja +tja +vyv +nMz +nQu +wRz +fqg +fqg +eLX +edy +nQu +nQu +suX +aeI +aeI +aeI +aeI +aeI +aeI +fyt +nQu +hCh +kob +aeI +aeI +evl +aeI +hTy +aeI +aeI +aeI +nQu +nQu +srp +hOQ +fqg +fqg +fqg +nQu +srp +bqD +cAJ +xbM +fHo kqC -cCq -awo +rzp +tKk kqC -cCq -mIA +rzp +osQ kqC -pHu -sHH -sHH -sHH -nCu -juW -buO -isK +dHD +upY +upY +upY +ufE +wbW +fxS +ksE xGt -fHU -kdk -fHU -tHs -tHs -fnB -fnB +roF +oDg +roF +ihB +ihB +ubP +ubP pTj -juS -gmS -dhs +gKg +dFB +hrB sYP -nzm +kGB uGY -wir -tHs -rcu -tHs -sRV -quU +xLd +ihB +syj +ihB +gag +aOL uGY -jdh -fnB -tHs +ppq +ubP +ihB nqN -jKG -hxy -hxy -hxy -hxy -pbC -hxy -hxy +lJx +fAf +fAf +fAf +fAf +mxc +fAf +fAf jwK -aWR -aWR +nZB +nZB jwK -hxy -mOW -hxy -aAM +fAf +gsd +fAf +lJf hLz -nID +nQH jwK jwK -hLy +lEg wly kPz kPz @@ -69867,19 +70772,19 @@ xLi xLi xLi xLi -mwU -ruy -ruy -ruy -cft -cft +vHX +dqX +dqX +dqX +kQy +kQy xLi xLi phz -tOr -ezJ +cer +kpq rBr -xjK +mvp azZ azZ azZ @@ -69888,138 +70793,138 @@ bQM bTo pcu aFZ -fHQ -kqz +chZ +tja aif -idE -fPZ -kqz -fPZ -qQU +byY +bLM +tja +bLM +qtP aFZ fIT hVI mEO mEO -qDo +ddD hVI lmn -jXQ -tqR -bgR -uiK -bgR -izP +fkH +roE +tpZ +jAF +tpZ +crm nQq nQq -sZr -kqz -kqz -kqz -lcu -vbe -aja -tQB -cAW -ajx -afk -afk -afk -wnB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -hZR -mGe -gcy -gcy -sHH -sHH -pHu -mcc -vei +nMi +tja +tja +tja +bze +iWP +suX +jyQ +hCh +hCh +suX +fNA +hCh +ctY +ctY +iAB +nQu +nQu +nQu +nQu +nQu +nQu +nQu +suX +nQu +nQu +nQu +nQu +nQu +nQu +nQu +xFg +asz +asz +hCh +mGr +suX +hCh +hCh +hCh +suX +mGr +upY +dHD +xbM +fHo kqC -wII -bjk +qLi +dpe kqC -wII -bjk +qLi +dpe kqC -pHu -sHH -vDx -sHH -aLR -sHH -ifI -uAG +dHD +upY +sRv +upY +wam +upY +mom +rnE xGt -cBT -vok -cBT -tHs -tHs -fnB -fnB +cLC +mwK +cLC +ihB +ihB +ubP +ubP pTj -xTy -xTy -sRV -sRV -nzm +aIm +aIm +gag +gag +kGB cCB -tHs -fnB -fnB -cQu -fnB -tHs +ihB +ubP +ubP +eLQ +ubP +ihB cCB -tHs -fnB -tHs +ihB +ubP +ihB uGY hLz -wMR -aWR -aWR -aWR -aWR -aWR -aWR -aWR -aWR -aWR -aWR -aWR -aWR -hxy -bgG +ndD +nZB +nZB +nZB +nZB +nZB +nZB +nZB +nZB +nZB +nZB +nZB +nZB +fAf +tFo xUo -aWR +nZB jwK jwK -aWR +nZB ckm kPz bQM @@ -70078,18 +70983,18 @@ xLi xLi xLi xLi -lzO -xjK -dNF -ruy -dNF -xjK -xjK -xjK +rGc +mvp +rHX +dqX +rHX +mvp +mvp +mvp phz phz -tOr -ezJ +cer +kpq azZ azZ azZ @@ -70100,76 +71005,76 @@ bQM bTo pcu aFZ -qTp -kqz +bRo +tja hVI -idE -fPZ -kqz -fPZ -idE +byY +bLM +tja +bLM +byY sJu mEO sJu mEO mEO -ezo +akW hVI gZf -fPZ -mJy -bII -kqz -kqz -cLr +bLM +dOO +cgx +tja +tja +sTI hVI hVI -fcO -sZr -kqz -ajp -pIX -cYg -cwO -tQB -cAW -ajx -afk -hkh -afk -wnB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -hZR -mcc -sHH -sHH -sHH -sHH -pHu -mcc -vei +kgT +nMi +tja +tja +gFp +mZH +suX +suX +suX +bEA +suX +fNA +hCh +ohl +qQa +trJ +nQu +hCh +hCh +bkU +hCh +hCh +suX +bqX +suX +hCh +jXV +suX +hCh +hCh +nQu +umm +aDx +aDx +hCh +mGr +suX +suX +suX +suX +suX +mGr +upY +dHD +xbM +fHo kqC kqC kqC @@ -70177,61 +71082,61 @@ kqC kqC kqC mCF -iDa -sHH -sHH +sAF +upY +upY vRA -sHH -sHH -isK +upY +upY +ksE ceC ceC -bFY -tHs -bFY -tHs -tHs -sRV -qks +sIh +ihB +sIh +ihB +ihB +gag +qdE uGY -kik -kik +ltQ +ltQ nqN -kik -iOE +ltQ +ayo uGY -hce -jpl -tHs -tHs -fnB -sRV +eZQ +kyZ +ihB +ihB +ubP +gag hVG -sRV -fnB -tHs +gag +ubP +ihB uGY -mft -aWR -aWR -aWR -aWR -aWR -aWR -aWR -aWR -aWR -aWR -aWR -aWR -aWR -hxy -aWR +jEr +nZB +nZB +nZB +nZB +nZB +nZB +nZB +nZB +nZB +nZB +nZB +nZB +nZB +fAf +nZB xUo -aWR +nZB jwK jwK -aWR +nZB ckm kPz bQM @@ -70291,17 +71196,17 @@ xLi xLi xLi xLi -mzp -dNF -ruy -dNF -xjK -xjK -xjK +spH +rHX +dqX +rHX +mvp +mvp +mvp phz phz -tOr -ezJ +cer +kpq pPd azZ azZ @@ -70312,138 +71217,138 @@ tuf bTo pcu tQB -qeu -kqz +kSd +tja hVI -lpV -eAQ -kqz -fPZ -ygv +ncj +sdr +tja +bLM +egT aFZ hVI hVI mEO mEO -rNp +bWy hVI gZf -fPZ -mJy -kqz -kqz -iOe -feO +bLM +dOO +tja +tja +fSa +lJS nQq nQq -fJO -kqz -kqz -kqz -aSw -kqz -cwO -tQB -cAW -ajx -afk -afk -afk -wnB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -hZR -aCO -bMl -gcy -sHH -sHH -pHu -mcc -vei +qAl +tja +tja +tja +lVQ +qZv +suX +lFQ +aCZ +hCh +suX +fNA +hCh +mRS +mRS +qRK +nQu +dcO +nQu +nQu +nQu +nQu +dcO +suX +nQu +wGb +nQu +nQu +nQu +nQu +nQu +mjm +jfO +jfO +hCh +mGr +suX +hCh +hCh +hCh +suX +mGr +upY +dHD +xbM +fHo kqC -bux -bZu +sfu +jyF kqC -bux -bFN +sfu +iEG kqC -pHu -sHH -sHH +dHD +upY +upY vRA -rkh -xBv -isK +cKH +joJ +ksE xGt -maC -tHs -tHs -tHs -tHs -tHs -bDd +bjo +ihB +ihB +ihB +ihB +ihB +kfL uGY uGY -qTa -qTa +fRq +fRq nqN -qTa -nsH +fRq +ygr xGt -tHs -fnB -aDC -wiQ -vOj -sRV +ihB +ubP +lwp +dlr +ljV +gag hVG -sRV -fnB -tHs +gag +ubP +ihB uGY -gaN -aWR -aWR -aWR -aWR -tBU -aWR -aWR -aWR -aWR -aWR -aWR -aWR -bgG -hxy -aWR +lMh +nZB +nZB +nZB +nZB +tco +nZB +nZB +nZB +nZB +nZB +nZB +nZB +tFo +fAf +nZB xUo -aWR +nZB jwK jwK -aWR +nZB ckm kPz kPz @@ -70499,24 +71404,24 @@ xLi inA xLi xLi -csp -csp -pvT -pvT -xjK -jvp -ruy -dNF -xjK -xjK -xjK +fEn +fEn +kqy +kqy +mvp +sVT +dqX +rHX +mvp +mvp +mvp rBr phz -tOr -ezJ -xjK -ruy -jpS +cer +kpq +mvp +dqX +sWb azZ azZ azZ @@ -70527,135 +71432,135 @@ aFZ hVI hVI hVI -idE -fPZ -kqz -fPZ -idE +byY +bLM +tja +bLM +byY aFZ hVI -nGq +hZf mEO mEO hVI hVI gZf -fPZ -mJy -bII -kqz -fyT -kqz -tnd -ueA -bII -kqz -kqz -xzb -kdo -tzF -cwO -tQB -cAW -ajx -afk -afk -afk -wnB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -wzE -mcc -jZb -mcc -sHH -mcc -pHu -mcc -vei +bLM +dOO +cgx +tja +xAo +tja +nkJ +vTR +cgx +tja +tja +tja +tjw +cYS +nQu +pzL +vDL +eWf +qre +diL +nQu +nQu +aeI +aeI +aeI +aeI +aeI +aeI +aeI +aeI +nQu +hCh +nQu +aeI +aeI +aeI +aeI +aeI +aeI +aeI +aeI +nQu +nQu +oTS +vLO +eWf +eWf +eWf +nQu +oTS +iox +dHD +xbM +fHo kqC -avl -fAs +qNF +bjt kqC -avl -jms +qNF +mDO kqC -pHu -sHH +dHD +upY vRA -eNV -sHH -sHH -isK +vZL +upY +upY +ksE xGt -xed -tHs -tHs -tHs -tHs -tHs -wAR +mEJ +ihB +ihB +ihB +ihB +ihB +tkd cCB -sRV -sRV -sRV -sRV -sRV -nzm +gag +gag +gag +gag +gag +kGB xGt -tHs -fnB -keF -vrf -fnB -tHs +ihB +ubP +eWz +pxr +ubP +ihB uGY -tHs -tHs -pCZ +ihB +ihB +tXT uGY hLz -aWR -aWR -hxy -hxy -jrL -hxy -hxy +nZB +nZB +fAf +fAf +aXx +fAf +fAf jwK -aWR -aWR +nZB +nZB jwK -hxy -mOW -hxy -fMY +fAf +gsd +fAf +czJ hLz -nID -hxy -hxy -hLy +nQH +fAf +fAf +lEg wly ckm ckm @@ -70700,7 +71605,7 @@ bQM azZ azZ ejw -jpS +sWb etL phz phz @@ -70710,102 +71615,102 @@ gDx xLi xLi xLi -ruy -csp -csp -deN -deN -eRS -dNF -ruy -dNF -jmM +dqX +fEn +fEn +oGy +oGy +cLy +rHX +dqX +rHX +esR xLi xLi -ruy +dqX phz -tOr -ezJ +cer +kpq irD trl phz -ruy +dqX azZ azZ lAh -hPF -qFQ -sNK -idE -idE -gkt -idE -fPZ -iOe -fPZ -idE +mnd +oYs +nCh +byY +byY +uno +byY +bLM +fSa +bLM +byY eVm hVI -tNS +tgL mEO xgF hVI -fiD -wkp -fPZ -mJy -kqz -kqz -mqY -kqz -xzb -kqz -kqz -xzb -kqz -kqz -oFW -jEb -tur -tQB -cAW -ajx -afk -hkh -afk -wnB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -wzE -hZR -hZR -wzE -wzE -vqi -pHu -mcc -veB +oPn +jEy +bLM +dOO +tja +tja +iMq +tja +hYl +tja +tja +hYl +tja +tja +mCR +iYw +egk +sKY +sKY +sKY +iYw +iYw +sOM +nQu +aeI +eBa +aeI +aeI +aeI +aeI +rOL +aeI +nQu +hCh +nQu +aeI +rOL +aeI +pdX +aeI +xei +xpj +aeI +nQu +shH +iYw +iYw +sKY +sKY +sKY +iYw +iYw +izh +dHD +xbM +voO kqC ryJ end @@ -70813,53 +71718,53 @@ kqC ryJ end kqC -ulJ -sHH +nBb +upY vRA -sHH -sHH -oJW -isK +upY +upY +ejf +ksE xGt -adl -isB -tHs -pQb -lgy -tHs -mEb +izN +mDS +ihB +htq +lNc +ihB +vuK uGY -sRV -sRV -sRV -sRV -sRV -nzm +gag +gag +gag +gag +gag +kGB xGt -kvn -fnB -qKs -tHs -fnB -tHs +gwm +ubP +ggA +ihB +ubP +ihB uGY ceC uGY uGY nqN -jlO +qQd jwK jwK -hxy +fAf sEO sEO sEO -hxy -hxy +fAf +fAf jwK jwK -aWR -aWR +nZB +nZB okg liZ uSQ @@ -70869,9 +71774,9 @@ xja xja hLz hLz -mWg -mWg -mWg +eCK +eCK +eCK wly wly kPz @@ -70923,115 +71828,115 @@ xLi xLi xLi phz -ruy -ruy +dqX +dqX xLi xLi -cBQ -dNF -ruy -dNF -xjK +idP +rHX +dqX +rHX +mvp azZ azZ azZ -eyo -tOr -ezJ +vTq +cer +kpq phz -jpS +sWb phz -ruy -csp -xjK -xjK -csp -idE -idE +dqX +fEn +mvp +mvp +fEn +byY +byY hVI -jJF -fPZ -fPZ -fPZ -kqz -fPZ -idE +rUQ +bLM +bLM +bLM +tja +bLM +byY aFZ hVI -svG +fQY mEO mEO sJu -fPZ -fPZ -fPZ -urS -kqz -kqz -kqz -teT -kqz -kqz -kqz -kqz -kqz -kqz -lwB -aSS +bLM +bLM +bLM +abG +tja +tja +tja +tLk +tja +tja +tja +tja +tja +tja +oOk aFZ aFZ -cAW -ajx -afk -afk -afk -wnB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -dhi -fsn +fPB +bQM +bQM +bQM +sKY +hCh +nQu +aeI +aeI +aeI +aeI +aeI +aeI +aeI +eBa +nQu +suX +nQu +aeI +aeI +eBa +aeI +fyt +aeI +xpj +aeI +nQu +hCh +sKY +hTN +fyC qOk -gfp -mhv +mKS +erT wzE wzE -pHu -mcc -vei -usz -cCq -dHp -dHp -wsN -uFh -jRR -wjx -uyd -sHH -sHH -sHH -sHH -isK +dHD +xbM +fHo +ioc +rzp +vds +vds +msH +elO +nAs +fcB +gQc +upY +upY +upY +upY +ksE ceC ceC nqN @@ -71044,47 +71949,47 @@ nqN uxv ceC ceC -bBS -qXl -weQ +aPr +jyv +kaw uGY -evQ -fnB -fnB -fnB -fnB -tHs -rfa +ilr +ubP +ubP +ubP +ubP +ihB +rKm ceC hLz -gHl +byE hLz -hxy +fAf jwK jwK -hxy +fAf sEO sEO sEO -hxy -hxy +fAf +fAf jwK jwK -hxy -hxy +fAf +fAf hLz hLz hLz hLz -nxM -nxM +aQW +aQW wSm qxN qxN -hxy -hxy -hxy -hxy +fAf +fAf +fAf +fAf ybj wly wly @@ -71133,170 +72038,170 @@ azZ phz xZR phz -xjK +mvp phz -xjK +mvp irD -ldy -lYl -fkP -dNF -ruy -dNF -phg +iMN +oNu +aQY +rHX +dqX +rHX +xqY azZ xLi xLi -xjK -tOr -ezJ +mvp +cer +kpq phz phz phz kEZ -csp -xjK -xjK -csp -idE -idE +fEn +mvp +mvp +fEn +byY +byY hVI -hpN -fPZ -fPZ -fPZ -kqz -fPZ -idE +vCL +bLM +bLM +bLM +tja +bLM +byY aFZ hVI -svG +fQY mEO mEO hVI -fOs -fPZ -fPZ -ryN -owv -jEb -cjl -jEb -yil -jEb -aaf -eTd -jEb -jEb -lJv +aEG +bLM +bLM +dAg +vki +jbq +sGk +jbq +xsh +jbq +fCf +jTo +jbq +tja +tFY aFZ aFZ -aFZ -kPz -aGS -aNw -llQ -vuc -aTN -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -ajx +fPB +bQM +bQM +bQM +sKY +lqa +nQu +aeI +aeI +aeI +jJZ +cEW +aeI +aeI +aeI +nQu +hCh +nQu +aeI +eBa +aeI +aeI +aeI +aeI +aeI +aeI +nQu +hCh +sKY +dxl afk afk afk ghg wzE wzE -pHu -mcc -vei -usz -laZ -xri -xri -xri -iUy -jRR -wjx -sHH -sHH +dHD +xbM +fHo +ioc +iWp +xRI +xRI +xRI +efW +nAs +fcB +upY +upY vRA -nhR -sql -pZb -kWn -hKE +osN +xdb +pZn +kIb +vFV hZR kPz kPz kPz dCM -tMx -oQY -oQY -vMb +svc +wNG +wNG +hWb xGt -xBI -xBI -xBI +lVA +lVA +lVA gIB -ohs -qgA -tHs -sRV -tHs -mni -gZE +sjM +fIn +ihB +gag +ihB +ucu +fkG ceC -tvU -wMR -hxy -hxy -aWR -aWR -hxy -aWR -jtF -hxy -aWR -aWR -hxy -aWR -aWR -hxy -hxy -lPW -hxy -mqc -aWR +ikF +ndD +fAf +fAf +nZB +nZB +fAf +nZB +kEx +fAf +nZB +nZB +fAf +nZB +nZB +fAf +fAf +nyO +fAf +uuk +nZB wSm pBV qKT qbl wSm -aWR -wMR -hxy +nZB +ndD +fAf wly wly wly @@ -71345,41 +72250,41 @@ xLi xLi xLi xLi -aOd +cGa phz -xjK -app -bUJ -mcT -fkP -dNF -ruy -dNF +mvp +sVS +dwZ +wsM +aQY +rHX +dqX +rHX phz xLi xLi azZ -xjK -tOr +mvp +cer phz -xjK -jpS +mvp +sWb wNi -ruy -csp -xjK -xjK -gKA -mxO -arm -arm -arm -miZ -vcy -jCQ -fPZ -fPZ -edv +dqX +fEn +mvp +mvp +dvB +mpY +xCv +xCv +xCv +gHC +kHc +fbc +bLM +bLM +lDo aFZ aFZ aFZ @@ -71399,49 +72304,49 @@ tOp jmG sta sta -sta jmG jmG jmG jmG jmG -uwk -uwk jmG jmG jmG -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -ajx +jmG +cKa +cKa +rMT +aeI +aeI +aeI +aeI +aeI +aeI +pdX +nQu +hCh +nQu +nQu +nQu +nQu +hox +hox +hox +nQu +nQu +bVE +iYw +iYw +urJ afk hkh afk tCZ pcu wzE -pHu -mcc -veB +dHD +xbM +voO kqC ryJ end @@ -71449,66 +72354,66 @@ kqC ryJ end kqC -ulJ -sHH -sHH -sHH -sHH -xQE -hCX -sHH -isK +nBb +upY +upY +upY +upY +siW +bEm +upY +ksE hZR kPz bQM kPz dCM -mZw -oQY +nIw +wNG cZV -oTe +sjJ xGt -pGv -pGv -pGv +kWL +kWL +kWL gIB -qzX -tZX +mEn +psP uGY -vaj +dBs uGY -nWK -jdh +oOh +ppq ceC -xOQ -hxy -hxy -hxy -aWR -aWR -hxy -tzx -tGl -dSy -aWR -aWR -hxy -aWR -aWR -hxy -tSi -fSe -dSy -wMR -aWR +gjs +fAf +fAf +fAf +nZB +nZB +fAf +xTW +aAJ +dUi +nZB +nZB +fAf +nZB +nZB +fAf +aSA +cvv +dUi +ndD +nZB ppG qbl qbl wSm -rZr -aWR -aWR -hxy +jxc +nZB +nZB +fAf wly wly wly @@ -71557,170 +72462,170 @@ xLi xLi xLi xLi -nvZ +jVt phz -xjK -xjK -lfS -mcT -fkP -obL -ruy -dNF +mvp +mvp +bgD +wsM +aQY +pjW +dqX +rHX phz lAh lAh lAh -xjK -tOr -ezJ -xjK +mvp +cer +kpq +mvp lAh lAh beW -csp -kYM -xjK -upt +fEn +maA +mvp +ckA jmG mvl mvl mvl jmG -tuD -idE -idE -idE -idE +fer +byY +byY +byY +byY tOp -ror -wwR -uJj -kNz +ezd +jjp +hVA +lFB tOp -aaK -oDG -aRb +jWI +amZ +bsO cKa cKa -vJD -ggB -vJD -ggB -vJD +vUP +dVA +vUP +dVA +vUP hqD -aaK -dkj -kNz -hor +jWI +eow +lFB +aLX cKa -ocJ -rsE +bqu +rwm cKa -imL -ggB -ggB -mEv -uwk -cAW -cAW -cAW -cAW -hVS -vBP -vBP -vBP -vBP -vBP -vBP -vBP -vBP -vBP -vBP -vPM -cAW -cAW -cAW -cAW -cAW -bQM -ajx +fZc +dVA +rhf +nss +jYs +cMD +aeI +aeI +aeI +xpj +aeI +aeI +aeI +nQu +ele +nQu +evl +aeI +kMm +umI +moK +asz +eMI +nQu +bVE +iYw +jKI +mdJ afk afk afk xMW jlH wzE -ldt -mcc -vei +cPh +xbM +fHo kqC -cCq -pDV +rzp +mwP kqC -cCq -qkY +rzp +ldz kqC -avl -xri -xri -xri -xri -xri -xri -xri -uAG +qNF +xRI +xRI +xRI +xRI +xRI +xRI +xRI +rnE hZR kPz kPz kPz dCM -jbx -bck -rbD -oEt +bsc +rIy +paO +sMe xGt -wYE -wYE -wYE +hqO +hqO +hqO uGY njK cHF uGY -hxy +fAf uGY gIB gIB ceC -xnN -hxy -hxy -hxy -aWR -aWR -hxy -aWR -aWR -hxy -aWR -aWR -hxy -aWR -aWR -hxy -aWR -aWR -mnp -aWR -aWR -hxy +uNG +fAf +fAf +fAf +nZB +nZB +fAf +nZB +nZB +fAf +nZB +nZB +fAf +nZB +nZB +fAf +nZB +nZB +avJ +nZB +nZB +fAf wSm wSm -hxy -rZr -aWR -aWR -hxy +fAf +jxc +nZB +nZB +fAf wly tan tan @@ -71759,7 +72664,7 @@ vcC bQM bQM bQM -dOF +wyK azZ azZ eVq @@ -71769,118 +72674,118 @@ xLi xLi xLi xLi -iQP -ruy -xjK -xjK -ljW -lYl -fkP -dNF -mHN -dNF -xjK +ppZ +dqX +mvp +mvp +twR +oNu +aQY +rHX +nDI +rHX +mvp lAh lAh lAh -xjK -tOr -ezJ +mvp +cer +kpq lAh lAh lAh -ruy -csp -xjK -xjK -upt +dqX +fEn +mvp +mvp +ckA lIG -avs -wwr -dTv +spR +kzR +qBI mvl -vBQ -idE -bha -cif -cif +eqJ +byY +iEl +gBR +gBR jmG -fmL -aaK -kNz -kNz +wUz +jWI +lFB +lFB tOp -tOK -blQ -tHu +uqV +tVI +hBc cKa bRc -ggB -imL -ggB -iNO -ggB +dVA +fZc +dVA +akM +dVA hqD -bdI -roY -iZV -hor +uKK +mgz +rLG +aLX hqD -ikq -mYp +kXk +gnY cKa -qZW -ggB -ggB -biJ -uwk -cAW -cAW -cAW -cAW -rAe -afk -afk -afk -hkh -afk -afk -hkh -afk -afk -afk -eZq -cAW -cAW -cAW -cAW -cAW -cAW -fdV -wby +ejM +dVA +rhf +sWX +jYs +cMD +jpW +aeI +aeI +aeI +aeI +aeI +aeI +xFg +dYi +asz +aeI +aeI +kMm +bvs +nQu +bvs +eMI +suX +aPv +iYw +iYw +iYw +fCJ llQ -eZA -sYv -kPz +jKI +bUB +bQM wzE -pHu -mcc -vei +nBb +xbM +fHo kqC -wII -bjk +qLi +dpe kqC -wII -bjk +qLi +dpe kqC -gMJ -usz -gMJ +okG +ioc +okG kqC kqC -sSJ -sSJ -sSJ +dbI +dbI +dbI kqC wzE hZR @@ -71892,48 +72797,48 @@ xGt ceC xGt ceC -aWR -aWR -aWR -pax -hxy -hxy -pax -hxy -pax -hxy -hxy -pax -aWR -hxy -tFu -hxy -eZN -sIT -uVo -hTm -eZN -sIT -fpM -hTm -eZN -sIT -fpM -hTm -eZN -sIT -fpM -hTm -eZN -sIT -uVo -hTm -eZN -hxy -aWR -aWR -aWR -aWR +nZB +nZB +nZB +uSU +fAf +fAf +uSU +fAf +uSU +fAf +fAf +uSU +nZB +fAf +uNI +fAf +lcm +tyC +grA +aOT +lcm +tyC +cRZ +aOT +lcm +tyC +cRZ +aOT +lcm +tyC +cRZ +aOT +lcm +tyC +grA +aOT +lcm +fAf +nZB +nZB +nZB +nZB vzB fiq vzB @@ -71972,7 +72877,7 @@ bQM bQM bQM enY -dOF +wyK azZ azZ azZ @@ -71984,100 +72889,100 @@ xLi xLi phz xLi -ruy +dqX xLi xLi -cBQ -dNF -ruy -dNF -xjK +idP +rHX +dqX +rHX +mvp lAh lAh jZc -xjK -xjK -xjK -xnM -xnM -xnM -ruy -ruy -xjK -xjK -bcV +mvp +mvp +mvp +uOu +uOu +uOu +dqX +dqX +mvp +mvp +gkv cKa -hah +lUZ xlp -ofy +poC mvl -oAm -vMh -xFe -cPI -lvN +sKu +chx +rDu +dCg +hXN jmG -jXD -mhe -iZV -ojf +xVw +bwk +rLG +dlj tOp -ikq -vII -sKn +kXk +amn +pxX cKa bRc -ggB -uUT -ggB -ktI -ggB +dVA +cYi +dVA +wqs +dVA cKa -cYY -roY -iZV -hor +awU +mgz +rLG +aLX cKa kzh tOp cKa -rfJ -ggB -ggB -iwK -uwk -cAW -cAW -cAW -cAW -rAe -afk -afk -afk -pcu -afk -afk -pcu -afk -afk -afk -eZq -cAW -cAW -cAW -cAW -cAW -cAW -cAW -ajx +sGX +dVA +rhf +avc +cKa +xbc +suX +nQu +nQu +aeI +aeI +aeI +aeI +qBf +dYC +jfO +aeI +fyt +kMm +qBf +bvs +tTB +eMI +shH +cmy +wId +vOZ +iYw +sKY wzE wzE wzE wzE wzE -aan -gPm -vei +cQf +jpx +fHo kqC kqC kqC @@ -72085,43 +72990,43 @@ kqC kqC kqC mCF -oMz -kWn -hKE +uJp +kIb +vFV kqC -wAj -fXS -fXS -fXS -gpq +lsR +lZp +lZp +lZp +svN kqC -cCq -dHp -uFh +rzp +vds +elO abJ -usz -usz +ioc +ioc abJ -sKq -sKq -sKq -hxy -jYS -bkS -bkS -bkS -bkS -aWR -bkS -bkS -bkS -bkS -aWR -aWR -aWR -tts +goo +goo +goo +fAf +hRb +upw +upw +upw +upw +nZB +upw +upw +upw +upw +nZB +nZB +nZB +iTt wQN -wSm +xnU wSm wSm wSm @@ -72139,7 +73044,7 @@ wSm wSm wSm wSm -wSm +xnU wQN eAM wSm @@ -72184,10 +73089,10 @@ bQM bQM bQM fiq -aDh +dfc ePv ePv -aDh +dfc azZ lAh xLi @@ -72199,142 +73104,144 @@ phz kEZ phz xLi -cfD -dNF -ruy -dNF -xjK +jUa +rHX +dqX +rHX +mvp lAh -vtf -xjK -xMg -aZz -sqg -fde -rjz -fde -xjK -xjK -xjK -fcp -xjK +aeS +mvp +lkr +rTd +hae +tqw +kQH +tqw +mvp +mvp +mvp +hDm +mvp rSr -mIE -mIE -mIE +cOF +cOF +cOF mvl -idE -idE -idE -idE -jAy +byY +byY +byY +byY +nFc jmG -xMR -xMR -iZV -aUa +kjt +kjt +rLG +djF jmG sta sta sta jmG cKa -vJD -ggB -vJD -ggB -vJD +vUP +dVA +vUP +dVA +vUP cKa -bdI -fnj -iZV -vJD -hFn -dkj -oMR -dkj -dkj -kNz -vJD -vJD +uKK +hjB +rLG +vUP +lEd +eow +ulc +eow +eow +lFB +vUP +vUP jmG -cAW -cAW -bQM -bQM -rAe -afk -afk -afk -hkh -afk -afk -hkh -afk -afk -afk -eZq -cAW -cAW -cAW -cAW -cAW -cAW -cAW -ajx -hZR -gEW -mcc -fLR -usz -pHu -mcc -vei +egk +iYw +suX +suX +nQu +nQu +nQu +fDE +qBf +dYC +jfO +nQu +ele +nQu +pst +pst +pst +nQu +neY +dNk +cMD +hCh +ufL +hCh +oFI +mCe +xbM +sJP kqC -bux -bZu +dHD +xbM +fHo kqC -bux -bZu +sfu +jyF kqC -pHu -mxz -veB +sfu +jyF kqC -dhD -vPa -oXJ -fXS -bYG +dHD +xLx +voO kqC -ulJ -mcc -vei +ubh +xFJ +eao +lZp +qXj +kqC +nBb +xbM +fHo vRA -usz -usz +ioc +ioc vRA -hxy -hxy -aWR -hLy +fAf +fAf +nZB +lEg sEO -pXP -fSe -fSe -dSy -aWR -tSi -fSe -fSe -dSy -aWR -aWR -aWR -ttK +cCy +cvv +cvv +dUi +nZB +aSA +cvv +cvv +dUi +nZB +nZB +nZB +gBe +wSm +wSm +wSm wSm wSm -xnU wSm wSm wSm @@ -72350,22 +73257,20 @@ wSm wSm wSm wSm -xnU wSm -kfE eSF -qnB -fHB -fHB -fHB -ssD -iSi -ssD -hbC -hbC -hbC -hbC -cbb +seF +ojq +ojq +ojq +tsc +bEk +tsc +ogf +ogf +ogf +ogf +mRM bQM bQM bQM @@ -72400,8 +73305,8 @@ fiq fiq fiq fiq -aDh -ruy +dfc +dqX lAh lAh lAh @@ -72411,139 +73316,139 @@ phz phz phz xLi -mHN -ruy -ruy -ruy -ruy +nDI +dqX +dqX +dqX +dqX lAh lAh jZc -tOr -hmk -rov -fde -fde -fde -xjK -xjK -xjK -xjK -xjK +cer +pvF +tfl +tqw +tqw +tqw +mvp +mvp +mvp +mvp +mvp jmG mvl mvl mvl jmG -rfo -idE -idE -idE +wfu +byY +byY +byY hVI jmG -xMR -xMR -iZV -aFJ +kjt +kjt +rLG +gYD fSq -aaK -dkj -kNz +jWI +eow +lFB fSq -vJD -aaK -dkj -dkj -dkj -kNz -aau -xMR -roY -gUH -vJD -jvE -vII -vII -vII -vII -dyM -vJD -vJD +vUP +jWI +eow +eow +eow +lFB +oNC +kjt +mgz +rLG +vUP +lcE +amn +amn +amn +amn +tPB +vUP +vUP jmG -cAW -cAW -cAW -cAW -ggQ -jlH -jlH -tWI -llQ -jKI -tWI -llQ -jKI -jlH -jlH -sYv -cAW -cAW -cAW -cAW -cAW -cAW -cAW -bTo -hZR -gEW -ggu -mcc -usz -pHu -mcc -vei +bQM +iYw +sKY +iYw +hCh +hCh +lBb +dEh +hCh +hCh +hCh +aXO +pOU +ssR +nQu +aXO +nQu +nQu +neY +dNk +cMD +hCh +efR +hCh +oFI +mCe +xbM +xbM +ioc +dHD +xbM +fHo kqC -avl -jms +qNF +mDO kqC -avl -aIv +qNF +eub kqC -pHu -mcc -vei +dHD +xbM +fHo kqC -mak -pcl +sIk +dzE kqC -mak -pcl +sIk +dzE kqC -pHu -mcc -vei +dHD +xbM +fHo kqC -usz -usz +ioc +ioc kqC -qcv -qcv -hxy -aWR -iPV -iPV -iPV -iPV -iPV -aWR -iPV -iPV -iPV -iPV -hNc -aWR -aWR -uEN +nAm +nAm +fAf +nZB +fWr +fWr +fWr +fWr +fWr +nZB +fWr +fWr +fWr +fWr +hMH +nZB +nZB +bne wSm wSm wSm @@ -72566,7 +73471,7 @@ wSm wSm wSm xrH -gAS +axn wSm wSm wSm @@ -72577,7 +73482,7 @@ bQM bQM bQM bQM -gEU +bmT bQM bQM bQM @@ -72610,9 +73515,9 @@ kPz bQM bQM kPz -rEH -eok -eok +gEq +eIX +eIX azZ azZ azZ @@ -72621,57 +73526,57 @@ azZ azZ kny phz -xjK -xjK -xjK -xjK -csl -xjK -xjK -xjK -xjK -xjK -vBO -ezJ -cAV -hLX -hLX -nGW -ruy -lTm -qOY -xjK -xjK +mvp +mvp +mvp +mvp +pUO +mvp +mvp +mvp +mvp +mvp +xxU +kpq +jNi +ygs +ygs +kBX +dqX +loE +eIx +mvp +mvp lZA -vJD -vJD -vJD +vUP +vUP +vUP lZA -idE -idE -idE -idE -idE +byY +byY +byY +byY +byY lZA -xMR -xMR -iZV -iZV +kjt +kjt +rLG +rLG fSq -xMR -rmg -iZV +kjt +oZU +rLG fSq -vJD -pya -roY -roY -roY -iZV -pzQ -xMR -oRb -iZV +vUP +hFW +mgz +mgz +mgz +rLG +jHV +kjt +lpZ +rLG cKa kzh tOp @@ -72679,41 +73584,41 @@ cKa kzh tOp cKa -aaK -kNz +jWI +lFB jmG -bQM -bQM -cAW -cAW -bce -cAW -ecM -ecM -mlC -mlC -mlC -ecM -ecM -cAW -cAW -bce -cAW -bce -hVS -vBP -byl -byl -mhv -rAe +kPz +eHa +pcu +iYw +sKY +sKY +iYw +imI +oEH +oEH +oEH +vkt +bLJ +rcg +xZN +eWf +uRv +eWf +vlO +iYw +iYw +sKY +sKY +sKY wzE -dYr -mcc -mcc -usz -qRD -mcc -veB +gSf +xbM +xbM +ioc +nbP +xbM +voO kqC cRB end @@ -72721,41 +73626,41 @@ kqC ryJ end kqC -hpr -mcc -vei -mKG -fXS -fXS -bGy -hQg -fXS -mKG -pHu -mcc -vei +rgc +xbM +fHo +vfO +lZp +lZp +jmv +uLV +lZp +vfO +dHD +xbM +fHo abJ -usz -usz +ioc +ioc abJ -hxy -hxy -aWR -aWR -aWR -cAA +fAf +fAf +nZB +nZB +nZB +owp uPA uWQ -aWR -evD -aWR +nZB +ghz +nZB uPA uWQ -aWR -aWR -hxy -hxy -vuE +nZB +nZB +fAf +fAf +eZr wSm wSm wSm @@ -72778,7 +73683,7 @@ wSm wSm wSm fZd -gAS +axn wSm wSm wSm @@ -72789,7 +73694,7 @@ bQM bQM bQM bQM -gEU +bmT bQM bQM bQM @@ -72823,8 +73728,8 @@ bQM bQM kPz bQM -wER -lok +weE +qkq azZ azZ azZ @@ -72834,140 +73739,140 @@ azZ azZ phz azZ -sqg -sqg -sqg -sqg -sqg -sqg -sqg -sqg -sqg -ukI -ezJ -xjK -weH -hFe -sCo -csp -fYD -bmX -xjK -xjK +hae +hae +hae +hae +hae +hae +hae +hae +hae +iRI +kpq +mvp +lIC +kxl +swT +fEn +gDI +agh +mvp +mvp wef -vJD -vJD -vJD +vUP +vUP +vUP wef -idE -idE -idE -idE -idE +byY +byY +byY +byY +byY wef -ikq -ikq -dyM -dyM +kXk +kXk +tPB +tPB fSq -ikq -vII -dyM +kXk +amn +tPB fSq -vJD -ikq -vII -vII -vII -dyM -aau -xMR -roY -iZV +vUP +kXk +amn +amn +amn +tPB +oNC +kjt +mgz +rLG cKa -aaK -rVy +jWI +oyy cKa -cFE -uYD +drZ +oyy cKa -xMR -iZV +kjt +rLG uwk -bxa -byl -vBP -byl -mhv -kPz -ecM -rkB -rFr -miU -uSb -lzb -ecM -bQM -bQM +swg +fyC +qOk +sHO +erT kPz +iYw +hre +wfw +jRF +bvp +iiY +bLJ +bLJ +frv +frv +bLJ +frv +frv +iYw cAW -kPz -ajx -afk -afk -afk -ghg -fsn +bce +bce +bce wzE kqC -usz -wGe +ioc +fPl kqC -iSn -mcc -krp -dHp -dHp -hCd -dHp -dHp -uFh -usz -pHu -mcc -vei -mKG -fXS -fXS -oXJ -fXS -fXS -mKG -pHu -mcc -vei +oFp +xbM +sJy +vds +vds +lvV +vds +vds +elO +ioc +dHD +xbM +fHo +vfO +lZp +lZp +eao +lZp +lZp +vfO +dHD +xbM +fHo vRA -usz -usz +ioc +ioc vRA -hxy -hxy -aWR -aWR -aWR -aWR +fAf +fAf +nZB +nZB +nZB +nZB nKl qfc -aWR -hxy -aWR +nZB +fAf +nZB nKl qfc -aWR -aWR -aWR -aWR -tts +nZB +nZB +nZB +nZB +iTt wSm wSm wSm @@ -72990,7 +73895,7 @@ wSm wSm kHG eAM -gAS +axn wSm wSm wSm @@ -73001,7 +73906,7 @@ bQM bQM bQM bQM -gEU +bmT bQM bQM bQM @@ -73035,8 +73940,8 @@ bQM bQM kPz bQM -rEH -pPb +gEq +arW azZ azZ azZ @@ -73046,30 +73951,30 @@ azZ azZ azZ azZ -dNF -dNF -dNF +rHX +rHX +rHX bou -dNF -dNF -dNF -jvp -dNF -dNF -ezJ -xjK -fUu -mcT -sCo -csp -csp -sBl -xjK -xjK +rHX +rHX +rHX +sVT +rHX +rHX +kpq +mvp +mMP +wsM +swT +fEn +fEn +ciM +mvp +mvp cKa -roY -roY -roY +mgz +mgz +mgz cKa tOp tOp @@ -73077,10 +73982,10 @@ cKa tOp cKa cKa -ikq -ikq -dyM -dyM +kXk +kXk +tPB +tPB jmG jmG jmG @@ -73093,18 +73998,18 @@ cKa kzh tOp cKa -fiu -gbi -tHu +cIJ +lfX +rLG cKa -ldm -usA +iFB +dUx cKa -ldm -rEg +iFB +trR cKa -xMR -iZV +kjt +rLG uwk daD afk @@ -73112,75 +74017,74 @@ afk afk ghg gef -mlC -wkD -sMj -miU -xKX -hgJ -mlC -bQM +sKY +qTe +red +mqJ +qJQ +myj +rtc +idS +rcg +wvL +hys +rcg +rcg +sKY +cAW +bce +cAW cAW -kPz -bQM -kPz -bTo -afk -hkh -afk -tCZ -pcu wzE -msv -dHp -dHp -dHp -bop -scg -mcc -mcc -tsi -fxP -xri -xri -iUy -usz -pHu -mcc -vei +xJQ +mYl +vds +vds +qEs +rPD +xbM +xbM +kTW +eNa +xRI +xRI +efW +ioc +dHD +xbM +fHo kqC -hnJ -pcl +hAP +dzE kqC -mak -pcl +sIk +dzE kqC -pHu -mcc -vei +dHD +xbM +fHo kqC -usz -usz +ioc +ioc kqC -sKq -sKq -hxy -aWR -bkS -bkS -bkS -bkS -bkS -aWR -bkS -bkS -bkS -bkS -bkS -aWR -aWR -ttK -wSm +goo +goo +fAf +nZB +upw +upw +upw +upw +upw +nZB +upw +upw +upw +upw +upw +nZB +nZB +gBe wSm wSm wSm @@ -73191,6 +74095,7 @@ wSm wSm wSm wSm +xYg wSm wSm wSm @@ -73202,7 +74107,7 @@ wSm wSm wSm eSF -gAS +axn wSm wSm wSm @@ -73213,7 +74118,7 @@ bQM bQM bQM bQM -gEU +bmT bQM bQM bQM @@ -73246,9 +74151,9 @@ bQM bQM vcC kPz -eok +eIX fiq -xLa +bxd azZ azZ azZ @@ -73259,55 +74164,55 @@ azZ azZ azZ azZ -kbO -kbO -kbO -kbO -kbO -kbO -kbO -kbO -dFk -ezJ -dTp -sVy -bXa -sCo -csp -fYD -bmX -xjK -xjK +eqU +eqU +eqU +eqU +eqU +eqU +eqU +eqU +uAg +kpq +hjp +dsS +dXN +swT +fEn +gDI +agh +mvp +mvp lZA -vJD -vJD -vJD +vUP +vUP +vUP lZA -aaK -dkj -dkj -dkj -dkj -jGL -dkj -dkj -dkj -dkj -ddz -dkj -jGL -dkj -kNz +jWI +eow +eow +eow +eow +owS +eow +eow +eow +eow +vqW +eow +owS +eow +lFB cKa -aaK -soQ +jWI +oyy cKa -mOr -wTO +siB +jSc cKa -vlX -roY -iZV +qya +mgz +rLG hEs cKa cKa @@ -73315,8 +74220,8 @@ cKa cKa cKa cKa -xMR -iZV +kjt +rLG uwk urJ afk @@ -73324,74 +74229,74 @@ hkh afk tCZ pcu -mlC -rym -fBi -xKX -rym -rym -mlC -kPz -kPz -kPz -kPz -kPz -rAe -afk -afk -afk -fhz -tvI +sKY +aso +ber +rcg +aso +aso +rtc +idS +imI +sPt +hys +imI +sPt +sKY +bce +bce +cAW +cAW wzE -pHu -dui -mcc -dWM -mcc -mcc -mcc -qBk -mcc -qjY +dHD +voV +sxc +cxA +xbM +xbM +xbM +oFf +xbM +jlq kqC ryJ end kqC -hix -mcc -veB +iCf +xbM +voO kqC -dhD -fXS -bGy -fXS -bYG +ubh +lZp +jmv +lZp +qXj kqC -ulJ -mcc -vei +nBb +xbM +fHo abJ -usz -usz +ioc +ioc abJ -hxy -hxy -aWR -hLy +fAf +fAf +nZB +lEg sEO -pXP -fSe -fSe -dSy -aWR -tSi -fSe -fSe -dSy -aWR -aWR -aWR -uEN +cCy +cvv +cvv +dUi +nZB +aSA +cvv +cvv +dUi +nZB +nZB +nZB +bne wSm wSm wSm @@ -73414,7 +74319,7 @@ wSm wSm wSm xrH -gAS +axn wSm wSm wSm @@ -73425,7 +74330,7 @@ bQM bQM bQM bQM -gEU +bmT bQM bQM bQM @@ -73460,7 +74365,7 @@ bQM kPz vcC bQM -eok +eIX azZ azZ azZ @@ -73471,64 +74376,64 @@ azZ azZ azZ azZ -xjK -xjK +mvp +mvp azZ -xjK +mvp azZ -xjK -xjK -xjK -tOr -ezJ -xjK -ezx -ezx -reO -ruy -ggG -rar -xjK -xjK +mvp +mvp +mvp +cer +kpq +mvp +sxH +sxH +aaR +dqX +pHi +eFX +mvp +mvp wef -vJD -vJD -vJD +vUP +vUP +vUP wef -xMR -roY -roY -lSY -roY -roY -roY -roY -roY -roY -roY -roY -roY -lSY -iZV +kjt +mgz +mgz +xAq +mgz +mgz +mgz +mgz +mgz +mgz +mgz +mgz +mgz +xAq +rLG cKa -ldm -usA +iFB +dUx cKa -ldm -usA +iFB +dUx cKa -bGQ -roY -iZV +xnt +mgz +rLG cKa -ocJ -rsE +bqu +rwm cKa -ocJ -rsE +bqu +rwm cKa -xMR -iZV +kjt +rLG uwk mdJ afk @@ -73536,74 +74441,74 @@ afk afk xMW ssJ -mlC -xkC -tom -vGv -uzO -dhe -mlC -bQM -kPz -cAW +sKY +cvc +gPk +rmZ +sFY +neY +rtc +fOi +fac +ehO +hys +unF +ehO +sKY cAW bce -aKA -xQC -llQ -eZA -sYv -kPz +bce +bce wzE -lll -mcc -vza -mcc -mcc -vza -mcc -mcc -mcc -cCq +oXD +xbM +dJd +dBl +xbM +cZh +xbM +xbM +xbM +rzp kqC -cCq -sCh +rzp +jln kqC -cLE -mcc -uIb +eQb +xbM +kgp kqC -mXq -fXS -fXS -vPa -gNF +erU +lZp +lZp +xFJ +hrL kqC -pHu -mcc -vei +dHD +xbM +fHo vRA -usz -usz +ioc +ioc vRA -qcv -qcv -qcv -hxy -roo -iPV -iPV -hNc -iPV -aWR -iPV -iPV -iPV -iPV -aWR -hxy -hxy -vPA +nAm +nAm +nAm +fAf +lFo +fWr +fWr +hMH +fWr +nZB +fWr +fWr +fWr +fWr +nZB +fAf +fAf +klB wSm wSm wSm @@ -73626,7 +74531,7 @@ wSm wSm wSm fZd -gAS +axn wSm wSm wSm @@ -73637,7 +74542,7 @@ bQM bQM bQM bQM -gEU +bmT bQM bQM bQM @@ -73691,37 +74596,37 @@ lAh lAh lAh xvI -tOr -vJq -sqg -fde -fde -fde -xjK -xjK -xjK -xjK -xjK +cer +beh +hae +tqw +tqw +tqw +mvp +mvp +mvp +mvp +mvp cKa mvl mvl mvl cKa -ikq -vII -vII -wrQ -roY -nhz -vII -vII -vII -vII -vII -vII -wrQ -roY -fin +kXk +amn +amn +rTZ +mgz +cCe +amn +amn +amn +amn +amn +amn +rTZ +mgz +bOx cKa cKa cKa @@ -73729,18 +74634,18 @@ cKa cKa cKa cKa -pka -vII -dyM +nGV +amn +tPB cKa -dVm -dSw +jnX +rhH cKa -ikq -dSw +kXk +rhH cKa -ikq -dyM +kXk +tPB uwk aKA tWI @@ -73748,74 +74653,74 @@ llQ eOF bUB kPz +iYw +nQu +jRF +nzi +suX +tde +bLJ +izZ +wTW +wTW +izZ +wTW +wTW ecM -cjF -miU -xKX -gqe -lzb -ecM -ecM -mlC -mlC -mlC -mlC -ecM -ecM -pcu -fcZ -erT -bQM +cAW +bce +cAW +cAW wzE -scw -uFh -mcc -mcc -mcc -evf -dWM -mcc -cCq -pHu +gtN +elO +xbM +xbM +xbM +lBI +cxA +xbM +rzp +dHD kqC -wII -uAi +qLi +jhN kqC -pKh -mcc -vei +rYy +xbM +fHo kqC kqC -mKG -mKG -mKG +vfO +vfO +vfO kqC kqC -pHu -mcc -vei +dHD +xbM +fHo vMK goG goG vMK goG vMK -xOQ -hxy -hxy -pax -hxy -hxy -pax -hxy -pax -hxy -hxy -pax -aWR -aWR -aWR -tts +gjs +fAf +fAf +uSU +fAf +fAf +uSU +fAf +uSU +fAf +fAf +uSU +nZB +nZB +nZB +iTt wSm wSm wSm @@ -73838,7 +74743,7 @@ wSm wSm wSm eAM -kAr +cAO wSm wSm wSm @@ -73849,7 +74754,7 @@ bQM bQM bQM bQM -gEU +bmT bQM bQM bQM @@ -73901,49 +74806,49 @@ azZ azZ azZ lAh -vtf -xjK -lax -kbO -kbO -fde -fde -fde -xjK -xjK -xjK -xjK -xjK +aeS +mvp +ubX +eqU +eqU +tqw +tqw +tqw +mvp +mvp +mvp +mvp +mvp mvl -jIZ -wwr -sGu +wSN +kzR +wSC mvl -bhR -vJD -vJD -xMR -roY -fin +knb +vUP +vUP +kjt +mgz +bOx aSz uwk uwk uwk uwk aSz -jXD -roY -iZV +xVw +mgz +rLG cKa -ocJ -iFu +bqu +hJo cKa -ocJ -rsE +bqu +rwm cKa -dso -vJD -vJD +jGz +vUP +vUP cKa kzh tOp @@ -73951,8 +74856,8 @@ cKa kzh tOp cKa -vJD -vJD +vUP +vUP jmG jmG mlC @@ -73960,77 +74865,78 @@ mlC mlC mlC ecM -ecM -xKX -xKX -rWX -xKX +iYw +imI +oEH +oEH +oEH +vkt +bLJ xKX -ecM -cjF -cjF -cjF -cjF -cjF -cjF +iaa +iaa +tZO +iaa +iaa ecM mlC wzE -iWq -bQM wzE -glW -vei -mcc -mcc -jsE -mcc -mcc -mcc -pHu -pQu +wzE +wzE +rzF +fHo +xbM +xbM +xel +xbM +xbM +xbM +dHD +jbg kqC kqC kqC kqC -cjp -mcc -pZb -xyR -xyR -dHp -dHp -dHp -jsD -xyR -bop -mcc -vei +rKd +xbM +pZn +atY +atY +vds +vds +vds +qJl +atY +qEs +xbM +fHo goG -xMs -whR -lyF -cFQ +dYq +chg +uEh +gZx goG -hxy -hxy -hxy -hxy -hxy -hxy +fAf +fAf +fAf +fAf +fAf +fAf mxQ -xBI +lVA mxQ -hxy -hxy -hxy -hxy -aWR -aWR -ttK +fAf +fAf +fAf +fAf +nZB +nZB +gBe +wSm +wSm wSm wSm -xnU wSm wSm wSm @@ -74046,22 +74952,21 @@ wSm wSm wSm wSm -xnU wSm wSm eSF -mmP -fHB -fHB -fHB -ssD -iSi -ssD -hbC -hbC -hbC -hbC -ogo +due +ojq +ojq +ojq +tsc +bEk +tsc +ogf +ogf +ogf +ogf +fWI bQM bQM bQM @@ -74115,133 +75020,133 @@ azZ lAh lAh jZc -xjK -xjK -xjK -eAo -eAo -eAo -ruy -ruy -pQh -xjK -ruy +mvp +mvp +mvp +cYd +cYd +cYd +dqX +dqX +rYw +mvp +dqX mvl -jru +fqI xlp -mIE +cOF cKa cKa cKa cKa -xMR -roY -lpA +kjt +mgz +qrU uwk bQM bQM bQM bQM uwk -ikq -vII -dyM -cKa -ikq -dSw +kXk +amn +tPB cKa -ikq -dSw +kXk +rhH cKa -jCU -dkj -dkj -dkj -dkj -dkj -dkj -dkj -dkj -dkj -dkj -dkj -kNz +kXk +rhH cKa -fDI -gqe -cjF -qyX -cjF -jqR -cjF -qnu -xKX -sWF -cjF -mDi -gqe -gqe -gqe -gqe -gqe -gqe -aFO -cbH -wzE -hZR -hZR -wzE -vei -iUy -mcc -mcc -mcc -mcc -rFT -mcc -avl -xPO +wqz +eow +eow +eow +eow +eow +tkZ +eow +eow +eow +eow +eow +rIr +nmi +scS +scS +oPR +oPR +oPR +gbR +oPR +oPR +oPR +oPR +oPR +jnQ +oPR +oPR +oPR +oPR +oPR +oPR +jnQ +oPR +kqC +ioc +ioc +ioc +ioc +ioc +xbM +xbM +xbM +xbM +bkQ +xbM +qNF +qSz kqC -qDI -npN +rkp +iKy kqC -cvk -mcc -rrj -mcc -mxz -mcc -rrj -mcc -mcc -mcc -mcc -mcc -vei +utG +xbM +jbm +xbM +xLx +xbM +jbm +xbM +xbM +xbM +xbM +xbM +fHo goG -fHu -qos -jxa -hXc +xoR +ioW +opM +fAU goG -hxy -abe -hxy -hxy -hxy -cqc +fAf +rpL +fAf +fAf +fAf +qsc mxQ iyf mxQ -xOQ -hxy -hxy -hxy -aWR -aWR -uEN +gjs +fAf +fAf +fAf +nZB +nZB +bne wQN -wSm +xnU wSm wSm wSm @@ -74259,7 +75164,7 @@ wSm wSm wSm wSm -wSm +xnU wQN xrH wSm @@ -74333,31 +75238,31 @@ eWP lAh lAh lAh -csp -csp -xjK -xjK -csp +fEn +fEn +mvp +mvp +fEn cKa -vmW +oOU fyi -mIE +cOF mvl -vJD -vJD -vJD -xMR -roY -fin +vUP +vUP +vUP +kjt +mgz +bOx aSz uwk uwk uwk uwk aSz -cOl -vJD -vJD +cIt +vUP +vUP cKa kzh tOp @@ -74365,83 +75270,83 @@ cKa kzh tOp cKa -jXD -roY -roY -lSY -roY -roY -roY -roY -roY -roY -roY -gLG -iZV +xVw +mgz +mgz +xAq +mgz +mgz +mgz +mgz +mgz +mgz +mgz +lFg +rLG fSq -guB -cAv -rAW -cjF -vEF -gqe -gqe +oPR +qBe +exl +oPR +jqE +qBe +qBe miU -rWX +qOu xKX -pXj -gqe -gqe -gqe -bKs -gqe -gqe -gqe -gqe -nXq +eXz +qBe +qBe +qBe +eUP +qBe +qBe +qBe +qBe +eFQ wpO -usz -usz -usz -iUy -mcc -dWM -vza -mcc -qBk -dui -mcc -mcc -avl +ioc +ioc +ioc +efW +xbM +cxA +cZh +xbM +oFf +voV +xbM +xbM +qNF kqC -avl -iUy +qNF +efW kqC -ggp -xri -lXc -xri -xri -xri -xri -xri -ijP -xri -xri -xri -iUy +bki +xRI +iXq +xRI +xRI +xRI +xRI +xRI +mKd +xRI +xRI +xRI +efW goG -oJs -kfA -kfA -fWC +egd +pYB +pYB +bMI goG -hxy -hxy -hxy -hxy -hxy -hxy +fAf +fAf +fAf +fAf +fAf +fAf mxQ tUs mxQ @@ -74450,34 +75355,34 @@ iyf iyf mxQ vMK -hxy -hxy -tZs -hLK -yfC -fHV -tZs -lLv -yfC -fHV -tZs -hLK -yfC -fHV -tZs -hLK -yfC -fHV -tZs -hLK -yfC -fHV -tZs -aWR -aWR -aWR -aWR -aWR +fAf +fAf +nfh +bxe +cFg +gAQ +nfh +bIz +cFg +gAQ +nfh +bxe +cFg +gAQ +nfh +bxe +cFg +gAQ +nfh +bxe +cFg +gAQ +nfh +nZB +nZB +nZB +nZB +nZB vzB fiq vzB @@ -74545,86 +75450,86 @@ azZ lAh lAh lAh -glw -csp -xjK -xjK -csp +nMI +fEn +mvp +mvp +fEn rSr -mIE -mIE -mIE +cOF +cOF +cOF rSr -aaK -dkj -dkj -frY -roY -iZV -vJD -aaK -dkj -dkj -dkj -kNz -kpN -aaK -dkj -dkj -dkj -dkj -dkj -dkj -dkj -dkj -frY -roY +jWI +eow +eow +ufR +mgz +rLG +vUP +jWI +eow +eow +eow +lFB +xBN +jWI +eow +eow +eow +eow +eow +eow +eow +eow +ufR +mgz wef -roY -vrX -vII -vII -vII -vII -vII -vII -vII -dyM +mgz +cbY +amn +amn +amn +amn +amn +amn +amn +tPB fSq -cjF -gqe -gqe -gqe -sad -rsW -kJX -oXE -sED -gqe -kJX -gqe -gqe -gqe -gqe -gqe -gqe -gqe -qqJ -nXq +wdl +nOe +qBe +qBe +hdR +roQ +ccZ +uOP +cZR +qBe +ccZ +qBe +qBe +qBe +qBe +qBe +qBe +qBe +lFv +eFQ wpO -usz -usz -usz -pHu -ciZ -mcc -mcc -dWM -lCs -mcc -vza -cOb -veB +ioc +ioc +ioc +dHD +kbh +xbM +xbM +cxA +jET +xbM +cZh +fYY +voO kqC qRi end @@ -74632,63 +75537,63 @@ wzE wzE wzE kqC -usz -usz -usz -usz -dbL +ioc +ioc +ioc +ioc +pvE kqC jTJ goG goG goG vMK -lKt -kfA -kfA -slG +nxc +pYB +pYB +nWM vMK vMK -xOQ -hxy -hxy -hxy -hxy +gjs +fAf +fAf +fAf +fAf mxQ tUs mxQ -oYM -nVq -rev -oYM +gbf +fOT +apu +gbf vMK -xOQ -aWR -aWR -aWR -hxy -hxy -hxy -hxy -hxy -hxy -aWR -aWR -aWR -hxy -aWR -aWR -aWR -hxy -aWR -aWR -aWR -hxy -aWR -aWR -aWR -aWR -hxy +gjs +nZB +nZB +nZB +fAf +fAf +fAf +fAf +fAf +fAf +nZB +nZB +nZB +fAf +nZB +nZB +nZB +fAf +nZB +nZB +nZB +fAf +nZB +nZB +nZB +nZB +fAf wly tan tan @@ -74757,150 +75662,150 @@ lAh lAh lAh lAh -ruy -csp -xjK -xjK -csp +bMT +fEn +mvp +mvp +fEn cKa cKa cKa cKa cKa -xMR -roY -nhz -vII -vII -dyM -vJD -ikq -vII -vII -vII -dyM -vJD -xMR -roY -lSY -roY -roY -roY -roY -roY -roY +kjt +mgz +cCe +amn +amn +tPB +vUP +kXk +amn +amn +amn +tPB +vUP +kjt +mgz +xAq +mgz +mgz +mgz +mgz +mgz +mgz wef -roY -roY -roY -iZV +mgz +mgz +mgz +bOx jpN uwk uwk uwk lIG -vJD -vJD -vJD -fSq -ebP -dGw -gqe -gqe -vTl -ozh -cnu -gqe -gqe -gqe -cnu -gqe -gqe -gqe -gqe -bKs -gqe -gqe -gqe -cjF +vUP +sHj +vUP +cKa +oPR +qBe +qBe +qBe +nCH +mEU +oyS +qBe +qBe +qBe +oyS +qBe +qBe +qBe +qBe +eUP +qBe +qBe +qBe +oPR wpO -usz -usz -usz -avl -xri -xri -xri -ibN -mcc -lCs -mcc -mcc -pZb -dHp -dHp -uFh +ioc +ioc +ioc +qNF +xRI +xRI +xRI +nAK +xbM +jET +xbM +xbM +pZn +vds +vds +elO hZR bQM hZR -dDM -cCq -dHp -dHp -dHp -uFh -dDM +jvi +rzp +vds +vds +vds +elO +jvi duF -jao -qcM -dvs -kfA -kfA -kfA -kfA -kfA -bVY +jTN +xro +fGW +pYB +pYB +pYB +pYB +pYB +uvV vMK goG goG goG vMK -xBI +lVA mxQ deR mxQ -oYM -nVq -rev -oYM +gbf +fOT +apu +gbf vMK -hxy -aWR -aWR -aWR -hxy +fAf +nZB +nZB +nZB +fAf wly wly wly wly -tSi -fSe -dSy -hxy -hxy -aWR -aWR -hxy -hxy -hxy -aWR -hxy -hxy -hxy -hxy -aWR -hxy -hxy +aSA +cvv +dUi +fAf +fAf +nZB +nZB +fAf +fAf +fAf +nZB +fAf +fAf +fAf +fAf +nZB +fAf +fAf wly wly wly @@ -74976,12 +75881,12 @@ wef lSj cKa cKa -eJi -kNz -pLk -roY -roY -fin +pRa +lFB +lpX +mgz +mgz +bOx cKa kzh tOp @@ -74992,20 +75897,20 @@ cKa kzh tOp arn -jXD -roY -nhz -vII -vII -vII -vII -vII -vII -wrQ -roY -roY -roY -iZV +xVw +mgz +cCe +amn +amn +amn +amn +amn +amn +rTZ +mgz +mgz +mgz +rLG uwk bQM kPz @@ -75015,26 +75920,26 @@ hul cKa cKa cKa -qjp -gqe -gqe -gqe -nSz -nSz -lvk -gqe -gqe -gqe -lvk -gqe -gqe -gqe -cjF -cjF -rQm -yiG -rUY -vGO +hrz +qBe +qBe +qBe +fWH +fWH +jlI +qBe +qBe +qBe +jlI +qBe +qBe +qBe +oPR +oPR +hxj +wis +sGa +gNU kqC kqC ecd @@ -75043,75 +75948,75 @@ kqC cRB end kqC -vee -mcc -fxP -xri -xri -xri -xri -xri -iUy +pHx +xbM +eNa +xRI +xRI +xRI +xRI +xRI +efW hZR kPz hZR -vhe -pHu -rrj -mcc -mcc -vei -dDM +auS +dHD +jbm +xbM +xbM +fHo +jvi duF -eTo -rII -lAS -lAS -lAS -dmB -dmB -lAS -lAS -lAS -lAS -lAS -bYv +fEH +xsS +tOM +tOM +tOM +kor +kor +tOM +tOM +tOM +tOM +tOM +wZH mxQ iyf mxQ tUs mxQ -oYM -nVq -rev -oYM +gbf +fOT +apu +gbf vMK -dlX -iLQ -jbG -mzz -rqL +hhu +bOp +jEQ +slT +mSk wly kPz bQM wly -vJp -xwA -wKn -hxy -hxy -hxy -hxy -hxy -hxy -hxy -hxy -hxy -hxy -hxy -hxy -hxy -hxy +lhS +nXE +ibA +fAf +fAf +fAf +fAf +fAf +fAf +fAf +fAf +fAf +fAf +fAf +fAf +fAf +fAf wly wly bQM @@ -75182,82 +76087,82 @@ cAW jmG bQM jmG -vJD -aaK -dkj -kNz -roY +vUP +jWI +eow +lFB +mgz cKa -lLP -iZV +dJh +rLG uwk -xMR -roY -iZV +kjt +mgz +rLG cKa -aaK -soQ +jWI +oyy cKa -tPP -soQ +bTr +oyy cKa -cVX -soQ +kyU +oyy cKa -xMR -roY -fin +kjt +mgz +bOx cKa cKa -fdn -fdn +wZt +wZt cKa jmG gHh -roY -roY -roY -iZV +mgz +mgz +mgz +rLG uwk kPz kPz kPz uwk -mIE -mIE -kFa +cOF +cOF +utw lzm -gqe -gqe -gqe -gqe -cTA -rsW -hLO -gqe -gqe -gqe -hLO -gqe -pXj -gqe -cjF +qBe +qBe +qBe +qBe +oSz +roQ +dvg +qBe +qBe +qBe +dvg +qBe +eXz +qBe +oPR kqC kqC -xrG -kDq +dAd +hbp kqC kqC rCq vRA vRA kqC -eaQ -tUA +fLb +ayW kqC -pHu -mcc -dzj +dHD +xbM +rYK kqC cRB end @@ -75267,36 +76172,36 @@ end wzE bQM hZR -dDM -pHu -fxP -eag -ibN -vei -xzW +jvi +dHD +eNa +rwK +nAK +fHo +kpu duF -hXc -lAS -lAS -lAS -lAS -tNt -uBW -lAS -lAS -lAS -lAS -lAS -bYv +fAU +tOM +tOM +tOM +tOM +nny +vHD +tOM +tOM +tOM +tOM +tOM +wZH mxQ -oYM +gbf tUs tUs vDO -atE -nVq -rev -oYM +eBS +fOT +apu +gbf bzO bzO ybj @@ -75307,12 +76212,12 @@ wly kPz bQM wly -xBK -abe -lrm -hxy -mft -gHl +dUn +rpL +fwY +fAf +jEr +byE wly ckm ckm @@ -75394,66 +76299,66 @@ cAW jmG jmG jmG -vJD -xMR -roY -iZV -vJD +vUP +kjt +mgz +rLG +vUP cKa -ldm -usA +iFB +dUx uwk -xMR -roY -iZV +kjt +mgz +rLG cKa -ldm -usA +iFB +dUx cKa -ldm -usA +iFB +dUx cKa -dra -ovc +oMw +yhJ cKa -oLd -roY -iZV +mlg +mgz +rLG cKa -cQA -xec -xec -ohN +uyC +dzB +dzB +aYg cKa -xMR -roY -roY -mSM -iZV +kjt +mgz +mgz +kWx +rLG uwk bQM kPz bQM uwk -mIE +cOF fyi -kGi +dXS qva -dAe -lps -gqe -gqe -iOJ -ozh -kJX -gqe -gqe -gqe -kJX -gqe -gqe -gqe -rUY +xbm +smj +qBe +qBe +aZL +mEU +ccZ +qBe +qBe +qBe +ccZ +qBe +qBe +qBe +sGa kqC kqC vRA @@ -75464,51 +76369,51 @@ kqC tVV arl oFI -eGY -eOf +kCT +opj kqC -pHu -mcc -vei +dHD +xbM +fHo kqC -cCq -fOZ +rzp +bIP kqC -cCq -pDV +rzp +mwP wzE kPz jTJ -clZ -pHu -vei -vbd -pHu -vei -iPq +vUl +dHD +fHo +pLE +dHD +fHo +uuG jTJ -pMA -lAS -lAS -lAS -mKy -rII -rII -lAS -lAS -kxo -lAS -lAS -bYv +gHn +tOM +tOM +tOM +bkg +xsS +xsS +tOM +tOM +uwT +tOM +tOM +wZH mxQ -pes +eBj vfz tUs mxQ -oYM -nVq -rev -oYM +gbf +fOT +apu +gbf vEK bzO wly @@ -75606,18 +76511,18 @@ cAW cAW bQM uwk -vJD -ikq -vII -dyM -vJD +vUP +kXk +amn +tPB +vUP hEs cKa cKa cKa -dgx -uzX -aFV +wdL +vAU +hCR hEs cKa cKa @@ -75628,50 +76533,50 @@ cKa cKa cKa cKa -jXD -roY -iZV +xVw +mgz +rLG cKa -unW -wpu -xec -oYc +onW +pZp +dzB +shh cKa -xMR -roY +kjt +mgz wef -roY -iZV +mgz +rLG jmG bQM kPz bQM uwk -vbt +jsu fyi -aHs +haQ cKa -pwN -lps -wAD -gqe -gqe -gqe -gqe -gqe -rJT -gqe -kDj -gqe -gqe -gqe -oEI -jKb +ntE +smj +wrT +qBe +qBe +qBe +qBe +qBe +sWw +qBe +sQr +qBe +qBe +qBe +vcu +qQM abJ -cCq -dHp -uFh -wBr +rzp +vds +elO +sKt kqC vRA tiX @@ -75679,49 +76584,49 @@ kqC kqC kqC kqC -pHu -mcc -vei +dHD +xbM +fHo kqC -wII -bjk +qLi +dpe kqC -wII -bjk +qLi +dpe wzE bQM hZR -vbd -pHu -vei -vbd -pHu -vei -vbd +pLE +dHD +fHo +pLE +dHD +fHo +pLE duF -iJG -lAS -lAS -lAS -lAS -lAS -lAS -lAS +mWR +tOM +tOM +tOM +tOM +tOM +tOM +tOM ffZ mxQ mxQ iyf mxQ mxQ -oYM +gbf ndl aZN mxQ -oYM -nVq -rev -oYM -vCv +gbf +fOT +apu +gbf +lTW bzO bzO rzt @@ -75818,82 +76723,82 @@ cAW cAW bQM uwk -aaK -dkj -kNz -vJD -vJD +jWI +eow +lFB +vUP +vUP wef -ocJ -rsE -oWB -ehA -roY -rAt +bqu +rwm +eDA +vsM +mgz +xBc cKa -ocJ -rsE +bqu +rwm cKa -ocJ -rsE +bqu +rwm cKa -ocJ -rsE +bqu +rwm cKa -xMR -roY -iZV +kjt +mgz +rLG cKa -vYP +tjR cKa -unW -xec -fdn -xMR -roY -roY +onW +dzB +wZt +kjt +mgz +mgz wef -iZV +rLG uwk bQM kPz bQM jmG -vBc +bZI fyi -xCy +vqs mvl -pwN -lps -uzd -gqe -uzd -gqe -uzd -rUY -vGO -tMF -hgu -sVw -hgu -hgu -rox -xNQ +ntE +smj +qof +qBe +qof +qBe +qof +sGa +gNU +oOg +bno +bno +bno +bno +vrR +jOb vRA -pHu -djx -vei -wBr +dHD +bAM +fHo +sKt oFI vRA glD kqC -tnj -pDV +pVY +mwP kqC -pHu -mcc -dzj +dHD +xbM +rYK mCF kqC kqC @@ -75903,41 +76808,41 @@ kqC wzE kPz hZR -vbd -pHu -vei -vbd -pHu -tax -vbd +pLE +dHD +fHo +pLE +dHD +naI +pLE duF -lQZ -mWF -lAS -lAS -uyq -lAS -dCF -lAS +dLN +dPm +tOM +tOM +uyw +tOM +hoT +tOM mxQ nmT tUs rbK tUs tUs -rwt +aEC tUs tUs ffZ -oYM -nVq -rev -oYM -oYM +gbf +fOT +apu +gbf +gbf mxQ -iHJ -xsa -ayK +qhD +qhJ +upK bzO rzt rzt @@ -76030,72 +76935,72 @@ bce bce uwk uwk -xMR -roY -iZV -mey -vJD -oWB -ikq -dyM +kjt +mgz +rLG +gBw +vUP +eDA +kXk +tPB wef -xMR -roY -lHc +kjt +mgz +xRY cKa -ikq -dyM +kXk +tPB cKa -ikq -dyM +kXk +tPB cKa -ikq -sAx +kXk +ctI cKa -xMR -iqV -aad +kjt +gzu +kGo cKa -unW -rmb -pdV -xec -fdn -xMR -roY +onW +vBa +cMP +dzB +wZt +kjt +mgz jMf wef -iZV +rLG uwk kPz kPz kPz jmG -wdX +wxW jEK -mIE +cOF jce -pwN -lps -gqe -gqe -gqe -gqe -gqe -iMF +ntE +smj +qBe +qBe +qBe +qBe +qBe +hSl ecM -fYn -eqT -ofr -bhM -tBa -tuH +jVj +gqU +eac +dPe +mcJ +uIL kqC kqC -ulJ -mcc -vei -wBr +nBb +xbM +fHo +sKt kqC kqC kqC @@ -76103,57 +77008,57 @@ kqC ryJ end kqC -ulJ -mcc -vei +nBb +xbM +fHo kqC -bux -bZu +sfu +jyF kqC -aFh -bZu +hHX +jyF wzE bQM hZR -vbd -avl -iUy -vbd -avl -iUy -vbd +pLE +qNF +efW +pLE +qNF +efW +pLE duF -whR -lAS -lAS -lAS -tvu -lAS -lAS -lAS +chg +tOM +tOM +tOM +fiw +tOM +tOM +tOM vDO tUs mxQ tUs mxQ mxQ -jum +mAN mxQ tUs mxQ -oYM -nVq -rev -kfA -kfA -tyQ -sTV -tdA -oYM -cUE -lAS -oYM -myt +gbf +fOT +apu +pYB +pYB +qaT +fWy +uvu +gbf +erw +tOM +gbf +pRz bzO bQM kPz @@ -76241,19 +77146,19 @@ vBP fQV erT uwk -bsd -ikq -vII -dyM -vJD -pqG +wcC +kXk +amn +tPB +vUP +dFI cKa -oWB +eDA wef wef -bDu -hMX -iiE +wlv +xWG +ngF cKa kzh tOp @@ -76264,66 +77169,66 @@ cKa kzh tOp cKa -jXD -roY -iZV +xVw +mgz +rLG cKa -unW -oYc +onW +shh cKa -unW -fdn -xMR -roY +onW +wZt +kjt +mgz bJn aTM -iZV +rLG uwk bQM kPz bQM jmG -wQh -mTS -jas +txf +oZj +sfZ uhm -ebP -bej -uzd -gqe -uzd -gqe -uzd -tnA +wdl +iUS +qof +qBe +qof +qBe +qof +pUo ecM -fXT -nSz -nSz -nSz -nSz -nSz +vNd +fWH +fWH +fWH +fWH +fWH kqC -uPD -uHL -mcc -dzj +mue +bbI +xbM +rYK kqC kqC -pFY -aru -dHp -dHp -dHp -uFh -pHu -mcc -vei +wyQ +eTa +vds +vds +vds +elO +dHD +xbM +fHo kqC -avl -jms +qNF +mDO kqC -avl -jms +qNF +mDO wzE wzE wzE @@ -76336,36 +77241,36 @@ ecd kqC jTJ vMK -dhj -lAS -mKy -lik -lAS -lAS -sDF +mGZ +tOM +bkg +czr +tOM +tOM +hao mxQ jXj mxQ rsp mxQ -oYM -oYM +gbf +gbf mxQ tUs mxQ -oYM -aZQ -rev -oYM -oYM +gbf +xRw +apu +gbf +gbf mxQ -tdA -tMe -tdA -krr -mpr -krr -xsa +uvu +sxE +uvu +sXa +uCO +sXa +qhJ bzO bQM kPz @@ -76453,43 +77358,43 @@ afk afk ghg uwk -mAE -vJD -aaK -dkj -kNz -vJD -ahe -aaK -cmj -rfD -frY -oSR -qqZ -dkj -dkj -kNz -vJD -eJi -rfD -dkj -dkj -kNz -vJD -xMR -mMq -iZV +aoZ +vUP +jWI +eow +lFB +vUP +pDo +jWI +bXz +kGd +ufR +sNi +jna +eow +eow +lFB +vUP +pRa +kGd +eow +eow +lFB +vUP +kjt +jYM +rLG cKa -unW -xec -rmb -oYc +onW +dzB +vBa +shh cKa -xMR -roY +kjt +mgz wef -roY -iZV +mgz +bOx jmG uwk uwk @@ -76499,37 +77404,37 @@ mvl mvl uhm cKa -vcr -yiG -gqe -gqe -gqe -gqe -cjF -iMF +dnj +wis +qBe +qBe +qBe +qBe +oPR +hSl ecM bEX bEX izZ -cjF -cjF -cjF +oPR +oPR +oPR kqC -ftH -pHu -mcc -vei +pCQ +dHD +xbM +fHo abJ -usz -cCq -dHp -dHp -dHp -uFh -iUy -pHu -mcc -dzj +ioc +rzp +vds +vds +vds +elO +efW +dHD +xbM +rYK kqC ryJ end @@ -76540,35 +77445,35 @@ kqC wzE pah kwL -mcc -pfE +xbM +iCN qOq -mcc -mcc +xbM +xbM pah bhu goG -lAS -lAS -lAS -gfw -lAS -lAS -aem +tOM +tOM +tOM +tsf +tOM +tOM +dbW mxQ tUs tUs oBj mxQ -oYM +gbf mxQ mxQ msj mxQ -oYM -nVq -rev -oYM +gbf +fOT +apu +gbf vEK mxQ mxQ @@ -76665,132 +77570,132 @@ hkh afk tCZ uwk -wtx -vJD -xMR -roY -iZV -roY -roY -ikq -qEn -vII -vII -vII -vII -vII -vII -dyM -sAe -ikq -xqj -qEn -vII -dyM -vJD -xMR -roY -iZV +rce +vUP +kjt +mgz +rLG +mgz +mgz +kXk +qGB +amn +amn +amn +amn +amn +amn +tPB +baM +kXk +xYJ +qGB +amn +tPB +vUP +kjt +mgz +rLG cKa -qzl -pdV -xec -isi +okJ +cMP +dzB +lsZ hEs -xMR -roY -roY +kjt +mgz +mgz wef -iZV +rLG jYs -vWI -nSz -sad -qpa -nSz -nSz -vli -fGL -uXM -xrG -lHy -lHy -lHy -lHy -lHy -dBa -gqe -gqe -gqe -klg -gqe -gqe -cjF +uJi +fWH +hdR +hQQ +fWH +fWH +mBG +sue +wBB +dAd +ode +ode +ode +ode +ode +cry +qBe +qBe +qBe +wKm +qBe +qBe +oPR kqC -pzN -pHu -mcc -vei +cRI +dHD +xbM +fHo vRA -usz -avl -xri -xri -xri -iUy -uFh -qWf -mcc -vei -usz -cCq -dHp -dHp -dHp -uFh -usz +ioc +qNF +xRI +xRI +xRI +efW +elO +cHC +xbM +fHo +ioc +rzp +vds +vds +vds +elO +ioc duF koy gsL -pHc -mcc +mOI +xbM qOq -mcc -mcc +xbM +xbM ckx sNN goG -lAS -lAS -lAS -hzq -gnz -lAS -tlp +tOM +tOM +tOM +bPh +mzJ +tOM +mtD mxQ xCa pjT -wul +cHm mxQ -qFg +fvK hvF tUs tUs lhY -oYM -nVq -rev -oYM +gbf +fOT +apu +gbf vEK mxQ mxQ -kcz -vkZ -vkZ -vkZ -vkZ -vkZ -vkZ +kGZ +sBW +sBW +sBW +sBW +sBW +sBW bzO bzO bzO @@ -76877,12 +77782,12 @@ afk afk xMW uwk -wtx -vJD -ikq -vII -dyM -mLe +rce +vUP +kXk +amn +tPB +qqC eov efl fDQ @@ -76890,9 +77795,9 @@ eov tzy wef wef -pnA -vJD -bhR +xgH +vUP +knb wef wef tOp @@ -76900,110 +77805,110 @@ cKa kzh tOp cKa -jXD -roY -fin +xVw +mgz +bOx aSz aSz aSz hul aSz aSz -pka -vII -vII -vII -dyM +nGV +amn +amn +amn +tPB jYs -nSz -ozh -iOJ -ozh -iOJ -vYA -oDz -fnW -wEQ -gqe -cjF -cjF -enG -gqe -gqe -gqe -gqe -gqe -gqe -gqe -gqe -gqe -cjF +fWH +mEU +aZL +mEU +aZL +cGS +dBz +ivw +kmm +qBe +oPR +oPR +wuW +qBe +qBe +qBe +qBe +qBe +qBe +qBe +qBe +qBe +oPR kqC -uPD -gwX -mcc -dzj +mue +gIa +xbM +rYK kqC kqC -usz -avl -xri -xri -xri -iUy -pHu -mcc -vei -usz -avl -xri -xri -xri -iUy -rvf +ioc +qNF +xRI +xRI +xRI +efW +dHD +xbM +fHo +ioc +qNF +xRI +xRI +xRI +efW +sDR hBF -vHR -uJk -mcc -mcc +vcv +iLl +xbM +xbM qOq -wwH -mcc +huG +xbM pah mbH goG -lAS -lAS -lAS -aIR -lAS -lAS -hIe +tOM +tOM +tOM +quL +tOM +tOM +tzU mxQ tUs mxQ tUs tUs -oYM +gbf rbK tUs mxQ mxQ -oYM -nVq -rev -oYM +gbf +fOT +apu +gbf vEK -fKv -kcz -aWo -kfA -atE -kfA -lAS -lAS -oYM -oYM +fFw +kGZ +fHI +pYB +eBS +pYB +tOM +tOM +gbf +gbf bzO bQM kPz @@ -77089,37 +77994,37 @@ eJQ jlH bUB uwk -lCD -aaK -dkj -kNz -vJD -roY +iTr +jWI +eow +lFB +vUP +mgz eov -svF -qtX +ihV +uvS eov -pgV -uMH +gXI +qxx jAW -vJD -tMr -vJD +vUP +tWs +vUP wef -aaK -kNz +jWI +lFB cKa -aaK -soQ +jWI +oyy cKa -xMR -roY -iZV -vJD +kjt +mgz +rLG +vUP cKa -pVq +sXe wef -pVq +sXe aSz jmG jmG @@ -77127,35 +78032,35 @@ uwk uwk jmG jmG -ozh -kxV -cjF -cjF -cjF -cjF -cjF -cjF -cjF -cjF -cjF -cjF -gqe -gqe -gqe -gqe -gqe -gqe -gqe -gqe -gqe -gqe -aDw +mEU +bbn +oPR +oPR +oPR +oPR +oPR +oPR +oPR +oPR +oPR +oPR +qBe +qBe +qBe +qBe +qBe +qBe +qBe +qBe +qBe +qBe +pUf kqC kqC -ulJ -mcc -vei -wBr +nBb +xbM +fHo +sKt kqC ryJ end @@ -77163,9 +78068,9 @@ kqC ryJ end kqC -pHu -mcc -dzj +dHD +xbM +rYK kqC ryJ end @@ -77184,38 +78089,38 @@ ecd kqC jTJ vMK -pmg -lAS -lAS -lAS -lAS -lAS -lAS +pFW +tOM +tOM +tOM +tOM +tOM +tOM vDO tUs mxQ vrF hvF -oYM +gbf hvF oBj tUs vDO -atE -nVq -jVW -oYM -oYM -sTV -hHv +eBS +fOT +epB +gbf +gbf +fWy +vUZ waN sfW sfW sfW sfW sfW -oqu -jKL +qRW +mOE bzO tan tan @@ -77302,36 +78207,36 @@ bce bce uwk uwk -xMR -roY -iZV -vJD -iKC +kjt +mgz +rLG +vUP +cEg eov -kzI -qfu +jGs +vRu eov -ldm -wMS +iFB +nVu hqD -wZE -vJD -azg +jiz +vUP +cfU hqD -ldm -usA +iFB +dUx cKa -ldm -xVv +iFB +qBT cKa -xMR -roY -iZV -vJD +kjt +mgz +rLG +vUP glj -pVq +sXe wef -pVq +sXe odQ uwk bQM @@ -77339,101 +78244,101 @@ bQM bQM bQM uwk -iOJ -cjF -jBL -cjF -cjF -cjF -cjF -cjF -cjF -cjF -krQ -cjF -gqe -sad -aPi +aZL +oPR +ldj +oPR +oPR +oPR +oPR +oPR +oPR +oPR +hoC +oPR +qBe +hdR +ksu ecM mlC mlC mlC ecM -qKF -gqe -oEI -jKb +okE +qBe +vcu +qQM abJ -pHu -mcc -vei -wBr +dHD +xbM +fHo +sKt kqC -avl -jms +qNF +mDO kqC -avl -jms +qNF +mDO kqC -ulJ -mcc -vei +nBb +xbM +fHo kqC -cCq -pDV +rzp +mwP kqC -cCq -pDV +rzp +mwP kqC -qOG -lAS -eBC -nVq -rev -qTy -nVq -rev -oYM -cFf +rKs +tOM +wGA +fOT +apu +hAs +fOT +apu +gbf +xXt vMK -tld -lAS -lAS -lAS -xsg -lAS -qLJ +bRC +tOM +tOM +tOM +sbU +tOM +aXv mxQ tUs tUs jXj mxQ -oYM +gbf mxQ tUs hvF mxQ -oYM -nVq -xUz -nbv -nbv -pdf -aWo +gbf +fOT +nBw +nvX +nvX +wuz +fHI hfd fIW htt htt qpM vjq -euC -euC -euC -ssD -iSi -ssD -hbC -cbb +fHb +fHb +fHb +tsc +bEk +tsc +ogf +mRM bQM bQM bQM @@ -77514,11 +78419,11 @@ cAW cAW bQM uwk -ikq -vII -dyM -vJD -urw +kXk +amn +tPB +vUP +kIO eov dRO pvD @@ -77526,9 +78431,9 @@ eov cKa cKa cKa -pEL -vJD -pqG +mZy +vUP +dFI hEs cKa cKa @@ -77536,14 +78441,14 @@ cKa cKa cKa cKa -jXD -roY -iZV -vJD +xVw +mgz +rLG +vUP glj -pVq +sXe wef -pVq +sXe vJh uwk kPz @@ -77551,35 +78456,35 @@ kPz kPz kPz uwk -gqe -naN -cjF -rsW -kJX -iOJ -ozh -rsW -kJX -iOJ -cjF -cjF -gqe -adY -sKS +qBe +rpt +oPR +roQ +ccZ +aZL +mEU +roQ +ccZ +aZL +oPR +oPR +qBe +jDe +ofl mlC kPz kPz kPz mlC -gqe -bKs -rUY -xNQ +qBe +eUP +sGa +jOb vRA -avl -lka -iUy -usz +qNF +eux +efW +ioc kqC kqC kqC @@ -77587,26 +78492,26 @@ mCF kqC kqC kqC -pHu -mcc -vei +dHD +xbM +fHo kqC -wII -bjk +qLi +dpe kqC -wII -bjk +qLi +dpe kqC -riu -boh -oYM -nVq -rev -kfA -nVq -rev -oYM -tld +lbz +gLk +gbf +fOT +apu +pYB +fOT +apu +gbf +bRC vMK goG iyf @@ -77620,18 +78525,18 @@ mxQ uZX mxQ mxQ -iuV +uOM mxQ uZX mxQ mxQ -jae -nVq -oYM -oYM -oYM -amx -lAS +mFS +fOT +gbf +gbf +gbf +arT +tOM hfd vfM oEK @@ -77645,7 +78550,7 @@ vzB fiq vzB bQM -gEU +bmT bQM bQM bQM @@ -77726,36 +78631,36 @@ cAW cAW bQM uwk -vJD -aaK -dkj -kNz -cgE +vUP +jWI +eow +lFB +dbh eov doe cAW eov -ocJ -rsE +bqu +rwm cKa -qBh -vJD -vJD +gzN +vUP +vUP cKa -ocJ -rsE +bqu +rwm cKa -ocJ -rsE +bqu +rwm cKa -xMR -lSY -iZV -vJD +kjt +xAq +rLG +vUP cKa -nmQ +dcv wef -pVq +sXe lMi uwk bQM @@ -77763,29 +78668,29 @@ bQM bQM bQM uwk -rsW -uyb -cjF -stq +roQ +vdW +oPR +kJJ jRL mlC mlC mlC ecM -qYc -cjF -cjF -gqe -jJM -dlE +iCE +oPR +oPR +qBe +xbE +fYf mlC bQM bQM bQM mlC -bKs -gqe -fum +eUP +qBe +xIq kqC kqC vRA @@ -77793,15 +78698,15 @@ blG kqC kqC kqC -mcc -mcc -mcc -lnU -mcc -mcc -pHu -mcc -dzj +xbM +xbM +xbM +kgQ +xbM +xbM +dHD +xbM +rYK kqC kqC kqC @@ -77810,54 +78715,54 @@ kqC kqC kqC mxQ -lAS -oYM -nVq -rev -kfA -nVq -rev -oYM -lAS -sPk -kfA -kfA -kfA +tOM +gbf +fOT +apu +pYB +fOT +apu +gbf +tOM +vuV +pYB +pYB +pYB mxQ oXS fUr wcW -tTK +wjT mxQ -oYM -rwt -nQS -oYM +gbf +aEC +gzh +gbf mxQ tUs tUs bMu -btB -nVq -lXf -nLl -nLl -jYd -mXT +gOk +fOT +jzP +ydK +ydK +qzb +tdq hfd ucj bBA bBA rZi eMU -euC -euC -euC -ssD -iSi -ssD -hbC -ogo +fHb +fHb +fHb +tsc +bEk +tsc +ogf +fWI bQM bQM bQM @@ -77938,31 +78843,31 @@ cAW jmG jmG jmG -iir -xMR -fnj -iZV -gHc +lSq +kjt +hjB +rLG +taI eov ivb cAW eov -ikq -dyM +kXk +tPB cKa -uvh -aZZ -vJD +fLH +gCK +vUP cKa -ikq -dSw +kXk +rhH cKa -ikq -dSw +kXk +rhH cKa -xMR -roY -iZV +kjt +mgz +rLG cKa cKa cKa @@ -77975,95 +78880,95 @@ hxq hxq vnr vnr -ozh -cjF -cjF -iOJ +mEU +oPR +oPR +aZL mlC bQM kPz bQM mlC -rsW -cjF -cjF -gqe -gtM -sbM +roQ +oPR +oPR +qBe +vtX +dYo mlC kPz kPz kPz mlC -gqe -gqe -gqe +qBe +qBe +qBe kqC kqC -heb -rIC +jva +gEX wzE kqC -qVe -lnU -tlS -fFf -pWm -usz -lnU -tno -mcc -vei +pai +kgQ +tSl +diJ +ddt +ioc +kgQ +diF +xbM +fHo kqC -bux -bZu +sfu +jyF kqC -bux -bZu +sfu +jyF kqC -lyg -cfj -oYM -nVq -rev -ppK -nVq -mel -oYM -pfW -fqD -cmV -cmV -cmV +hNj +ijd +gbf +fOT +apu +klN +fOT +wmm +gbf +vRP +anR +pca +pca +pca vDO tUs rbK tUs tUs uZX -kfA -kfA -ppb -kfA -kfA +pYB +pYB +hQM +pYB +pYB tUs vjl mxQ -oYM -nVq -rev -oYM -oYM -fKv -hHv +gbf +fOT +apu +gbf +gbf +fFw +vUZ tuX vEi vEi vEi vEi vEi -hhh -eKu +faD +oyO bzO tan tan @@ -78150,11 +79055,11 @@ cAW jmG cAW jmG -vJD -ikq -vII -dyM -nCl +vUP +kXk +amn +tPB +mpR eov hxJ qgd @@ -78162,9 +79067,9 @@ eov kzh tOp cKa -evU -vJD -pqG +oDH +vUP +dFI cKa kzh tOp @@ -78172,110 +79077,110 @@ cKa kzh tOp cKa -jXD -roY -fin +xVw +mgz +bOx cKa -vJD -vJD -vJD +vUP +vUP +vUP cKa -xyf -tMA -ycX -jsn -ycX -eOS +xRl +cPz +ixl +kJz +ixl +bjf vNq -srz -cjF -cjF -gqe +hsz +oPR +oPR +qBe mlC kPz kPz kPz mlC -sad -cjF -cjF -gqe -iOJ -dhN +hdR +oPR +oPR +qBe +aZL +nGB ecM mlC mlC mlC ecM -qBs -gqe -gqe -gqe -eTJ -rOm -gGB -rOm +eLU +qBe +qBe +qBe +jis +dQV +nGp +dQV kqC -qVe -lnU -cbe -fFf -kqP -usz -rgD -pHu -mcc -vei +pai +kgQ +nkg +diJ +iuC +ioc +pnP +dHD +xbM +fHo kqC -avl -jms +qNF +mDO kqC -avl -jms +qNF +mDO kqC -riu -mGx -oYM -nVq -rev -iCC -nVq -rev -oYM -oYM -oYM -mgU -oYM -lAS +lbz +hnh +gbf +fOT +apu +vTM +fOT +apu +gbf +gbf +gbf +uFg +gbf +tOM mxQ -xjv -xjv -xjv -xjv +kag +kag +kag +kag uZX -oYM -kvd -ihA -fmM -oYM +gbf +dtk +nnC +ota +gbf mxQ mxQ mxQ -oYM -nVq -rev -oYM +gbf +fOT +apu +gbf vEK -sTV -pVv -oYM -kfA -atE -kfA -lAS -lAS -oYM -oYM +fWy +lUv +gbf +pYB +eBS +pYB +tOM +tOM +gbf +gbf bzO bQM kPz @@ -78371,73 +79276,73 @@ eov eov eov eov -vJD +vUP wef -vJD -ceZ -vJD -vJD -jki -aaK -dkj -aPq -rfD -kNz -vJD -xMR -roY -iZV +vUP +ika +vUP +vUP +bjZ +jWI +eow +aiv +kGd +lFB +vUP +kjt +mgz +rLG lZA -aaK -dkj -kNz +jWI +eow +lFB lZA -ycX -ycX -qHZ -qYq -qYq -ycX -sun -gqe -cjF -cjF -rsW +ixl +ixl +ghS +hHH +hHH +ixl +rmX +qBe +oPR +oPR +roQ mlC bQM kPz bQM mlC -iOJ -cjF -cjF -gqe -gqe -mmh -gqe -bKs -gqe -gqe -gqe -gqe -gqe -sad -rsW -gqe -gqe -gqe -ijv +aZL +oPR +oPR +qBe +qBe +gbk +qBe +eUP +qBe +qBe +qBe +qBe +qBe +hdR +roQ +qBe +qBe +qBe +fjg kqC -qVe -lnU -kau -fFf -tnP -fFf -mcc -pHu -mcc -dzj +pai +kgQ +tTm +diJ +aga +diJ +xbM +dHD +xbM +rYK kqC ryJ end @@ -78446,48 +79351,48 @@ ryJ end kqC kqC -pmg -mTJ -nVq -tTr -wRG -mfd -xUz -nbv -nbv -nbv -bPS -oYM -qLJ +pFW +cTy +fOT +wua +kKP +eqw +nBw +nvX +nvX +nvX +beB +gbf +aXv bzO rzt rzt rzt rzt bzO -kfA -kfA -deW -kfA -kfA +pYB +pYB +xOm +pYB +pYB mxQ -sfw -sfw -nyQ -nVq -rev -oYM -oYM -fKv -hHv +rQN +rQN +fUD +fOT +apu +gbf +gbf +fFw +vUZ waN sfW sfW sfW sfW sfW -oqu -jKL +qRW +mOE bzO tan tan @@ -78582,95 +79487,95 @@ jmG cKa cKa cKa -xCW -vJD -vJD -vJD -vJD -pFg -vJD -bhR -ikq -xqj -qEn -vII -uZe -vJD -xMR -roY -iZV +rpf +vUP +vUP +vUP +vUP +mIr +vUP +knb +kXk +xYJ +qGB +amn +hkH +vUP +kjt +mgz +rLG wef -xMR -roY -iZV +kjt +mgz +rLG wef -ycX -ycX -ycX -ycX -ycX -ovj -mfo -cjF -cjF -cjF -stq +ixl +ixl +ixl +ixl +ixl +gpr +nnr +oPR +oPR +oPR +kJJ ecM mlC mlC mlC ecM -qYc -cjF -cjF -gqe -gqe -gqe -gqe -gqe -gqe -gqe -gqe -gqe -gqe -klv -ozh -gqe -gqe -gqe -eRY +iCE +oPR +oPR +qBe +qBe +qBe +qBe +qBe +qBe +qBe +qBe +qBe +qBe +rMw +mEU +qBe +qBe +qBe +jLe kqC kqC -lVP -kqP +sRJ +iuC coj -usz -usz -mcc -pHu -mcc -vei -usz -cCq -dHp -dHp -dHp -uFh -usz +ioc +ioc +xbM +dHD +xbM +fHo +ioc +rzp +vds +vds +vds +elO +ioc ntv -lAS -oYM -nVq -oYM -oYM -oYM -oYM -oYM -oYM -oYM -rev -oYM -lAS +tOM +gbf +fOT +gbf +gbf +gbf +gbf +gbf +gbf +gbf +apu +gbf +tOM bzO bQM kPz @@ -78683,29 +79588,29 @@ iyf mxQ mxQ mxQ -suB -lAS -ogX -nVq -xUz -nbv -nbv -pdf -aWo +jkW +tOM +kLs +fOT +nBw +nvX +nvX +wuz +fHI hfd fIW htt htt qpM vjq -euC -euC -euC -ssD -iSi -ssD -hbC -cbb +fHb +fHb +fHb +tsc +bEk +tsc +ogf +mRM bQM bQM bQM @@ -78795,9 +79700,9 @@ cKa cKa cKa cKa -vJD -vJD -vJD +vUP +vUP +vUP jfc wef wef @@ -78808,81 +79713,81 @@ rPS wef wef jfc -xMR -roY -iZV +kjt +mgz +rLG lZA -xMR -roY -iZV +kjt +mgz +rLG lZA -ycX -ycX -ycX -ycX -ycX -ycX -mfo -cjF -cjF -cjF -iOJ -fnt -rsW -gqe -iOJ -fnt -rsW -cjF -cjF -sad -rsW -gqe -gqe -sad -rsW -gqe -gqe -gqe -gqe -nis -mQD -gqe -gas -gqe -qnu +ixl +ixl +ixl +ixl +ixl +ixl +nnr +oPR +oPR +oPR +aZL +eLy +roQ +qBe +aZL +eLy +roQ +oPR +oPR +hdR +roQ +qBe +qBe +hdR +roQ +qBe +qBe +qBe +qBe +hYs +uou +qBe +mrW +qBe +fWV tHl -fBc +qCK lIJ -fBc -usz -fpY -usz -mcc -avl -xri -iUy -usz -avl -xri -xri -xri -iUy -usz +qCK +ioc +idj +ioc +xbM +qNF +xRI +efW +ioc +qNF +xRI +xRI +xRI +efW +ioc ntv -lAS -oYM -eNs -nLl -nLl -nLl -nLl -nLl -nLl -oiu -rev -oYM -kLN +tOM +gbf +rsR +ydK +ydK +ydK +ydK +ydK +ydK +kHv +apu +gbf +kbt bzO rzt rzt @@ -78890,20 +79795,20 @@ rzt rzt bzO tJR -kfA -oYM -kfA +pYB +gbf +pYB wcW mxQ -lAS -lAS -oYM -nVq -rOE -oYM -oYM -amx -lAS +tOM +tOM +gbf +fOT +xEW +gbf +gbf +arT +tOM hfd vfM oEK @@ -78917,7 +79822,7 @@ vzB fiq vzB bQM -gEU +bmT bQM bQM bQM @@ -79006,74 +79911,74 @@ jmG cKa cKa cKa -xCW -aaK -dkj -kNz +rpf +jWI +eow +lFB hqD -aaK -qwy +jWI +clA wef -aaK -kNz +jWI +lFB jfc -aaK -kNz +jWI +lFB rPS -xMR -roY -iZV +kjt +mgz +rLG wef -ikq -vII -dyM +kXk +amn +tPB wef -ycX -ycX -ycX -ycX -qHZ -ycX -jRp -vvX -cjF -cjF -cjF -cjF -cjF -cjF -cjF -cjF -cjF -cjF -cjF -iOJ -ozh -gqe -bKs -iOJ -ozh -gqe -gqe -gqe -gqe -nis -gqe -gqe -gqe -jvu +ixl +ixl +ixl +ixl +ghS +ixl +lpS +ooq +oPR +oPR +oPR +oPR +oPR +oPR +oPR +oPR +oPR +oPR +oPR +aZL +mEU +qBe +eUP +aZL +mEU +qBe +qBe +qBe +qBe +hYs +qBe +qBe +qBe +oHi miU -ecp +sgt vRA -sHH +upY vRA vRA -usz -fFf -mcc +ioc +diJ +xbM vRA -mcc -mcc +xbM +xbM kqC ryJ end @@ -79082,54 +79987,54 @@ kqC ecd kqC kqC -pmg -oYM -oYM -oYM -oYM -oYM -oYM -oYM -oYM -nVq -rev -oYM -guQ +pFW +gbf +gbf +gbf +gbf +gbf +gbf +gbf +gbf +fOT +apu +gbf +ivr vDO -prP -prP -prP -jqH -oYM +wkA +wkA +wkA +lOk +gbf tUs -kfA -ppb -kfA +pYB +hQM +pYB tUs vDO -atE -lAS -oYM -nVq -lXf -nLl -nLl -jYd -mXT +eBS +tOM +gbf +fOT +jzP +ydK +ydK +qzb +tdq hfd ucj bBA bBA rZi eMU -euC -euC -euC -ssD -iSi -ssD -hbC -ogo +fHb +fHb +fHb +tsc +bEk +tsc +ogf +fWI bQM bQM bQM @@ -79219,123 +80124,123 @@ cKa cKa cKa cKa -xMR -roY -iZV +kjt +mgz +rLG hqD -mHZ -usA +fRc +dUx hqD -ldm -usA +iFB +dUx jfc -ldm -usA +iFB +dUx wef -xMR -roY -iZV +kjt +mgz +rLG cKa -vJD -vJD -vJD +vUP +vUP +vUP cKa -xyf -ycX -ycX -ycX -ycX -eOS +xRl +ixl +ixl +ixl +ixl +bjf vNq -hvE -vvX -ozh -rsW -hmg -dyi -dQY -eIp -uch -flo -dQY -dPQ -gqe -gqe -hmg -uch -uch -cWU -sad -rsW -gqe -hYK -lpp -ppY -gqe -gqe -gqe -gqe +gvz +ooq +mEU +roQ +fyL +fje +rCe +etq +gGc +dIx +rCe +gPE +qBe +qBe +fyL +gGc +gGc +tzM +hdR +roQ +qBe +kHH +fFv +uoH +qBe +qBe +qBe +qBe oPN vRA -lOa +aXC vRA -fBc +qCK lIJ vRA -sHH -sHH -sHH -qOd +upY +upY +upY +tZe kqC -cCq -pDV +rzp +mwP mxQ fCZ nZQ sso mxQ -mKy -xjv -lAS -rII -rII -lAS -lAS -lAS -oYM -nVq -rev -oYM -lAS +bkg +kag +tOM +xsS +xsS +tOM +tOM +tOM +gbf +fOT +apu +gbf +tOM bzO bzO mxQ tUs rVM -oYM -oYM -pes -qWi -vMS -mNC +gbf +gbf +eBj +cLZ +atd +xGl vDO -atE -lAS -oYM -nVq -rev -lAS -lAS -fKv -hHv +eBS +tOM +gbf +fOT +apu +tOM +tOM +fFw +vUZ tuX vEi vEi vEi vEi vEi -hhh -eKu +faD +oyO bzO tan tan @@ -79431,9 +80336,9 @@ cKa cKa cKa cKa -dgx -roY -iZV +wdL +mgz +rLG hEs cKa cKa @@ -79444,63 +80349,63 @@ cKa cKa cKa cKa -jXD -roY -iZV +xVw +mgz +rLG jmG uwk uwk uwk jmG vnr -ycX -ycX -ycX -ycX -ycX +ixl +ixl +ixl +ixl +ixl vNq vNq -xrG -lHy -lHy -dBa +dAd +ode +ode +cry vNq vNq vnr mlC mlC ecM -mam -lPV -lPV -kDq +yfp +hEv +hEv +hbp ecM nSx -lZL -gCb -ejO -gqe -gqe -iOJ -ozh -gqe -gqe -mAA -atx -jxy +gVc +xbo +qzZ +qBe +qBe +aZL +mEU +qBe +qBe +ooO +faw +lux wjH -nph -vHG -pQq +cqW +ckS +voh dtg -usz -sHH -sHH -sHH -qOd +ioc +upY +upY +upY +tZe kqC -wII -bjk +qLi +dpe mxQ gRW ssO @@ -79511,43 +80416,43 @@ iyf mxQ pte bzO -fLs -fLs -fLs -oYM -nVq -rev -oYM -fLs +mOU +mOU +mOU +gbf +fOT +apu +gbf +mOU bzO bzO mxQ tUs uZX -oYM +gbf tUs -kfA -deW -kfA +pYB +xOm +pYB tUs mxQ -sfw -lAS -rOE -nVq -rev -lAS +rQN +tOM +xEW +fOT +apu +tOM aRk -fKv -pVv -oYM -kfA -atE -kfA -lAS -lAS -oYM -oYM +fFw +lUv +gbf +pYB +eBS +pYB +tOM +tOM +gbf +gbf bzO bQM kPz @@ -79640,76 +80545,76 @@ cAW cAW jmG cKa -ocJ -wVI +bqu +moQ cKa -xMR -roY -cHq +kjt +mgz +vwX cKa -ocJ -rsE +bqu +rwm cKa -ocJ -rsE +bqu +rwm cKa -ocJ -ukk +bqu +aLC cKa -xMR -roY -iZV +kjt +mgz +rLG uwk bQM kPz kPz bQM hxq -ycX -ycX -ycX -ycX -ycX -ycX -cJo -ycX -ycX -ycX -ycX -tih -ycX +ixl +ixl +ixl +ixl +ixl +ixl +bcX +ixl +ixl +ixl +ixl +tjp +ixl ezn kPz kPz hxq -jLs -bTe -eRi -llW +ovq +vyw +bix +uTb ecM nSx -nrq -uVQ -gqe -gqe -gqe -gqe -gqe -klg -gqe -gqe -atx +gux +eio +qBe +qBe +qBe +qBe +qBe +wKm +qBe +qBe +faw tHl -opB -mcc -tyb -hDr -mcc -cel -mcc -mcc -aYA -mcc +jYm +xbM +thz +suq +xbM +wFB +xbM +xbM +xdZ +xbM kqC kqC kqC @@ -79723,16 +80628,16 @@ tUs mxQ bzO bzO -oYM -oYM -oYM -sTV -eNs -snO -sTV -oYM -oYM -oYM +gbf +gbf +gbf +fWy +rsR +oEQ +fWy +gbf +gbf +gbf mxQ iyf mxQ @@ -79743,23 +80648,23 @@ hvF mxQ mxQ mxQ -ieU -cNn -oYM -nVq -rev -lAS -xmX -lqo -hHv +fob +rxM +gbf +fOT +apu +tOM +rbW +voP +vUZ waN sfW sfW sfW sfW sfW -oqu -jKL +qRW +mOE bzO tan tan @@ -79852,65 +80757,65 @@ cAW cAW jmG cKa -ikq -ikz +kXk +qRf cKa -xMR -roY -iZV +kjt +mgz +rLG cKa -ikq -chJ +kXk +jWY cKa -ikq -frw +kXk +lzz cKa -ikq -dSw +kXk +rhH cKa -ikq -vII -dyM +kXk +amn +tPB uwk bQM kPz kPz bQM hxq -ycX -ycX -ycX -ycX -ycX -ycX -ycX -qHZ -ycX -ycX -qHZ -ycX -ycX +ixl +ixl +ixl +ixl +ixl +ixl +ixl +ghS +ixl +ixl +ghS +ixl +ixl vnr hxq hxq vnr -dXz -dpt -ycX -aap +lOx +oRg +ixl +uvn ecM nSx -aah -ckD -mQZ -gqe -sad -rsW -mQZ -gqe -gqe -gqe -qgS +ayG +laK +gRA +qBe +hdR +roQ +gRA +qBe +qBe +qBe +hQT jTJ jTJ kqC @@ -79923,8 +80828,8 @@ blG jTJ jTJ jTJ -mCT -sRH +bMG +anl ffZ tUs fgU @@ -79933,51 +80838,51 @@ noa mxQ mxQ mxQ -nPa -kfA -lAS -lAS -oYM -oYM -kfA -kfA -oYM -oYM -lAS -lAS -kfA -vWs +xLD +pYB +tOM +tOM +gbf +gbf +pYB +pYB +gbf +gbf +tOM +tOM +pYB +jyo mxQ mxQ mxQ -tMz -lif +tVf +oEn mxQ -uod -lAS -raF -pVv -oYM -nVq -xUz -nbv -nbv -pdf -aWo +pRx +tOM +xbp +lUv +gbf +fOT +nBw +nvX +nvX +wuz +fHI hfd fIW htt htt qpM vjq -euC -euC -euC -ssD -iSi -ssD -hbC -cbb +fHb +fHb +fHb +tsc +bEk +tsc +ogf +mRM bQM bQM bQM @@ -80067,9 +80972,9 @@ cKa kzh tOp cKa -xMR -roY -iZV +kjt +mgz +rLG cKa kzh tOp @@ -80080,102 +80985,102 @@ cKa kzh tOp cKa -cOl -vJD -vJD +cIt +vUP +vUP uwk bQM kPz kPz bQM hxq -bTe -eRi -kJC -eRi -eRi -eRi -eRi -eRi -eRi -dJl -eRi -eRi -eRi -eRi -eRi -jSC -eRi -eRi -gHW -bra -hrX +vyw +bix +fOC +bix +bix +bix +bix +bix +bix +fKu +bix +bix +bix +bix +bix +xOU +bix +bix +uPl +dIh +kGc nSx cVV -glH +oWC xKX -jbk -mQZ -iOJ -sad -rsW -mQZ -gqe -gqe -uix -fII +qTt +gRA +aZL +hdR +roQ +gRA +qBe +qBe +uud +wXQ ntv -gXL -dHp -dHp -xAw -rdS -usz -usz -dpr +hqX +vds +vds +rQB +gdS +ioc +ioc +qxZ duF -euR +sFH rCt -rsh +xGd mxQ tUs kZy mxQ mxQ mxQ -kfA -kfA -eCA -lAS -oYM -oYM -lAS -oYM -kfA -kfA -oYM -lAS -oYM -oYM -lAS -lAS -kfA -dxJ +pYB +pYB +eTr +tOM +gbf +gbf +tOM +gbf +pYB +pYB +gbf +tOM +gbf +gbf +tOM +tOM +pYB +cyR mxQ mxQ mxQ mxQ uLr tUs -fXQ -ncQ -oYM -nVq -oYM -oYM -oYM -amx -lAS +brl +kyh +gbf +fOT +gbf +gbf +gbf +arT +tOM hfd vfM oEK @@ -80189,7 +81094,7 @@ vzB fiq vzB bQM -gEU +bmT bQM bQM bQM @@ -80276,132 +81181,132 @@ cAW cAW jmG cKa -aaK -dkj -dkj -frY -roY -qqZ -dkj -dkj -rfD +jWI +eow +eow +ufR +mgz +jna +eow +eow +kGd wef -dkj -dkj -dkj -dkj -kNz -vJD -aaK -dkj -kNz +eow +eow +eow +eow +lFB +vUP +jWI +eow +lFB uwk bQM kPz kPz bQM hxq -dpt -jLs -jLs -grO -jLs -jLs -jLs -jLs -jLs -jLs -jLs -jLs -jLs -jLs -jLs -jLs -jLs -jLs -jLs -jLs -aap +oRg +ovq +ovq +ehr +ovq +ovq +ovq +ovq +ovq +ovq +ovq +ovq +ovq +ovq +ovq +ovq +ovq +ovq +ovq +ovq +uvn nSx nSx xKX rGf xKX -bRU -mQZ -iOJ -ozh -rsW -gqe -gqe -gqe +qUw +gRA +aZL +mEU +roQ +qBe +qBe +qBe kqC kqC kqC -aKF -sHH -xAw -uJk -usz -usz -sJc +fKX +upY +rQB +iLl +ioc +ioc +sjZ kqC -dFC +huJ caF -njT +xKE mxQ cLu wBX mxQ -nPa -kfA -lAS -lAS -oYM -oYM -lAS -lAS -lAS -oYM -jax -kfA -oYM -lAS -lAS -lAS -oYM -oYM -lAS -lAS -kfA -xmg +xLD +pYB +tOM +tOM +gbf +gbf +tOM +tOM +tOM +gbf +fLu +pYB +gbf +tOM +tOM +tOM +gbf +gbf +tOM +tOM +pYB +xkm mxQ mxQ mWY tUs -amx -lAS -oYM -nVq -lXf -nLl -nLl -jYd -mXT +arT +tOM +gbf +fOT +jzP +ydK +ydK +qzb +tdq hfd ucj bBA bBA rZi eMU -euC -euC -euC -ssD -iSi -ssD -hbC -ogo +fHb +fHb +fHb +tsc +bEk +tsc +ogf +fWI bQM bQM bQM @@ -80488,70 +81393,70 @@ cAW cAW jmG cKa -xMR -roY -roY -roY -roY -roY -roY -roY -roY +kjt +mgz +mgz +mgz +mgz +mgz +mgz +mgz +mgz wef -roY -roY -roY -roY -iZV -vJD -xMR -roY -iZV +mgz +mgz +mgz +mgz +rLG +vUP +kjt +mgz +rLG uwk bQM kPz kPz bQM hxq -dpt -jLs -mDV -iSQ -iSQ -iSQ -iSQ -iSQ -iSQ -xVP -jLs -mDV -iSQ -iSQ -iSQ -iSQ -iSQ -iSQ -xVP -jLs -aap +oRg +ovq +kDw +kgG +kgG +kgG +kgG +kgG +kgG +ujb +ovq +kDw +kgG +kgG +kgG +kgG +kgG +kgG +ujb +ovq +uvn cVV nSx -jzY +nVE xKX -sGb -ozh -gqe -mQZ -iOJ -ozh -gqe -gqe -uix -mNg +uGL +mEU +qBe +gRA +aZL +mEU +qBe +qBe +uud +mwu ntv -gXL -dHp -dHp +hqX +vds +vds jTJ jTJ vRA @@ -80559,55 +81464,55 @@ blG jTJ jTJ kqC -oSo +pim kqC mxQ tUs mxQ mxQ -kfA -lAS -oYM -oYM -xoF -lAS -lAS -kIc -pwi -fbT -mBV -wPL -fNc -pwi -uIa -lAS -lAS -bPS -oYM -oYM -lAS -kfA +pYB +tOM +gbf +gbf +ekx +tOM +tOM +dXT +egz +fpg +nmM +aMr +hDS +egz +xBu +tOM +tOM +beB +gbf +gbf +tOM +pYB mxQ mxQ uSY tUs -jYd -cNn -wPF -nVq -rev -oYM -oYM -sTV -hHv +qzb +rxM +uMN +fOT +apu +gbf +gbf +fWy +vUZ tuX vEi vEi vEi vEi vEi -hhh -eKu +faD +oyO bzO tan tan @@ -80700,126 +81605,126 @@ cAW cAW jmG cKa -eXC -vII -vII -vII -vII -vII -vII -vII -vII +ndQ +amn +amn +amn +amn +amn +amn +amn +amn ljc -vII -vII -vII -vII -dyM -vJD -ikq -raD -dyM +amn +amn +amn +amn +tPB +vUP +kXk +ylr +tPB uwk bQM kPz kPz bQM hxq -dpt -jLs -wGm +oRg +ovq +peP vnr hxq vnr vnr hxq vnr -elC -jLs -wGm +sTw +ovq +peP oUg -fPF -fPF +qFO +qFO oUg oUg oUg -ljA -jLs -wGm +yfA +ovq +peP nSx nSx -ajD -rsW -mQZ -gqe -sad -vEX +xgC +roQ +gRA +qBe +hdR +dVu nSx -qKF -gqe -gqe -gqe +okE +qBe +qBe +qBe kqC kqC kqC -mcc -sHH +xbM +upY sqC -cXY -kfl -kfl -dEo +vVx +qQb +qQb +tlF hfT -dAB -xng -dIq +ecU +iSg +vTA vDO tUs vDO -kfA -lAS -oYM -lAS -lAS -lAS -qvL -pwi -xcJ +pYB +tOM +gbf +tOM +tOM +tOM +tYD +egz +xkq mxQ mxQ -pwg -nYA +kKQ +vhk mxQ mxQ -ozg -pwi -qnc -lAS -lAS -lAS -oYM -lAS -kfA +tSL +egz +jOv +tOM +tOM +tOM +gbf +tOM +pYB mxQ -sfw -lAS -nBO -pVv -oYM -nVq -rev -oYM +rQN +tOM +rTD +lUv +gbf +fOT +apu +gbf vEK -sTV -pVv -oYM -kfA -atE -kfA -oYM -oYM -oYM -oYM +fWy +lUv +gbf +pYB +eBS +pYB +gbf +gbf +gbf +gbf bzO bQM kPz @@ -80915,19 +81820,19 @@ cKa cKa cKa cKa -yke -ggB -vJD -ggB -vJD -roY -roY -roY -vJD -ggB -czC -czC -czC +wsw +dVA +vUP +dVA +vUP +mgz +mgz +mgz +vUP +dVA +gtr +gtr +gtr cKa cKa cKa @@ -80937,100 +81842,100 @@ kPz kPz bQM hxq -dpt -jLs -aap +oRg +ovq +uvn hxq hoH bQM bQM bQM hxq -dpt -fPF -aap -dgB -jLs -hfl -lFO -eCg +oRg +qFO +uvn +jSZ +ovq +sIg +uwb +wvU oUg -dpt -tTV -aap -fvk -oHI -iOJ -sad -rsW -mQZ -iOJ -sad -ygS +oRg +vdN +uvn +uFC +qyM +aZL +hdR +roQ +gRA +aZL +hdR +dhc nSx -qKF -gqe -uix -fII +okE +qBe +uud +wXQ ntv -gXL -dHp -dHp +hqX +vds +vds ntv -mpT -jOO -xbB -ePf -jqX -kQY -xng -dIq +kUR +sIj +hkA +bDv +jCO +fOK +iSg +vTA bzO mxQ mxQ -kfA -lAS -oYM -lAS -kjA -pwi -xcJ +pYB +tOM +gbf +tOM +rko +egz +xkq mxQ jjg mxQ -eBC -kfA -kfA -ers +wGA +pYB +pYB +cwM mxQ jjg mxQ -aqW -pwi -uOb -lAS -oYM -lAS -kfA +cBn +egz +sGg +tOM +gbf +tOM +pYB mxQ mxQ mxQ -vkZ -ncQ -oYM -nVq -rev -oYM +sBW +kyh +gbf +fOT +apu +gbf mxk mxQ mxQ -lAS -lAS -lAS -lAS -lAS -lAS -lAS +tOM +tOM +tOM +tOM +tOM +tOM +tOM bzO bzO bzO @@ -81126,21 +82031,21 @@ jmG cKa cKa cKa -mUV -roY -roY -roY -roY -vJD -roY -roY -roY -vJD -roY -roY -xuw -vJD -vJD +pQc +mgz +mgz +mgz +mgz +vUP +mgz +mgz +mgz +vUP +mgz +mgz +mns +vUP +vUP tBP vNq vnr @@ -81149,91 +82054,91 @@ kPz kPz bQM hxq -dpt -jLs -aap +oRg +ovq +uvn hxq bQM bQM bQM bQM hxq -dpt -jLs -odH -dgB -dgB -iOG -jLs -aWP +oRg +ovq +ukg +jSZ +jSZ +mVk +ovq +cLS oUg -dpt -jLs -aap -jLs -oHI -mQZ -iOJ -ozh -rsW -mQZ -iOJ -pKz -rsW -mQZ -gqe -gqe +oRg +ovq +uvn +ovq +qyM +gRA +aZL +mEU +roQ +gRA +aZL +qEC +roQ +gRA +qBe +qBe kqC kqC kqC -qBQ -sHH +sKr +upY ntv -mpT -jOO -xbB -pOd -mwL -jOO -aRG -xbB +kUR +sIj +hkA +nZI +sWr +sIj +iBr +hkA bzO mxQ -kfA -eCA -oYM -xoF -lAS -neX +pYB +eTr +gbf +ekx +tOM +xpM mxQ jjg mxQ -jMz -lXf -oYM -kfA -kfA -oYM -nyk -swh +tVY +jzP +gbf +pYB +pYB +gbf +pWl +ogs mxQ jjg mxQ -hHv -lAS -bPS -wqx -eCA -kfA +vUZ +tOM +beB +jMv +eTr +pYB bzO bzO -oeG -lAS -oYM -nVq -rev -oYM -lAS +aGR +tOM +gbf +fOT +apu +gbf +tOM mxQ mxQ mxQ @@ -81339,20 +82244,20 @@ cKa cKa cKa cKa -roY -uTp -uTp -jkZ +mgz +rAw +rAw +xKP niw niw oKn niw jfp -dYP -roY -roY -vJD -vJD +pho +mgz +mgz +vUP +vUP tBP vNq vnr @@ -81361,95 +82266,95 @@ kPz kPz bQM hxq -dpt -jLs -aap +oRg +ovq +uvn hxq bQM bQM bQM bQM hxq -dpt -jLs -flm -iOG -dgB -eGg -tAk -mhu +oRg +ovq +lAE +mVk +jSZ +grg +uen +ujz oUg -dpt -kCK -aap -jLs -oHI -rsW -mQZ -iOJ -sad -vEX +oRg +jUP +uvn +ovq +qyM +roQ +gRA +aZL +hdR +dVu nSx -urc -sad -rsW -mQZ -uix -jGV +asf +hdR +roQ +gRA +uud +iIG ntv -gXL -dHp -dHp +hqX +vds +vds ntv -mpT -jOO -xbB -ngr -fKr -fAV -dxO -jLS +kUR +sIj +hkA +qTQ +jfT +drd +hEk +myJ bzO bzO -kfA -lAS -oYM -lAS -qvL -xcJ +pYB +tOM +gbf +tOM +tYD +xkq jjg -xTe -beV -rQP -rev -oYM -kfA -ycN -oYM -nVq -xUz -rzR -byn +vRk +pRD +bTC +apu +gbf +pYB +voI +gbf +fOT +nBw +fXW +ldF jjg -aqW -qnc -lAS -oYM -lAS -dxJ +cBn +jOv +tOM +gbf +tOM +cyR bzO bzO -pmg -lAS -oYM -nVq -rev -glI -lAS -oYM -lAS -oYM -lAS +pFW +tOM +gbf +fOT +apu +xdT +tOM +gbf +tOM +gbf +tOM bzO bzO bQM @@ -81549,22 +82454,22 @@ jmG jmG jmG jmG -vRj -vJD -roY -uTp -uTp -vvk +pcN +vUP +mgz +rAw +rAw +vsr nmm gWg nmm nmm wJd -kNz -xuw -roY -vJD -vJD +lFB +mns +mgz +vUP +vUP tBP vNq vnr @@ -81573,95 +82478,95 @@ kPz kPz bQM hxq -dpt -jLs -aap +oRg +ovq +uvn hxq bQM bQM bQM bQM hxq -eSg -bQx -aap -sJl -bpq -dnp -bpq -ovZ +erb +vhy +uvn +lpW +gyP +gPV +gyP +pBW oUg -dpt -ors -aap -jLs -oHI -ozh -rsW -mQZ -iOJ -ozh -qGl +oRg +xHi +uvn +ovq +qyM +mEU +roQ +gRA +aZL +mEU +nGO nSx -srz -ozh -rsW -mQZ +hsz +mEU +roQ +gRA kqC kqC kqC -mcc -sHH +xbM +upY jTJ -qDd -tEb -tEb -dwg +veW +vVN +vVN +uYo rBF rBF nhY mny bzO -oYM -lAS -oYM -lAS -lAS -neX +gbf +tOM +gbf +tOM +tOM +xpM mxQ mxQ -beV -oYM -oYM -lXf -oYM -kfA -kfA -oYM -klb -vDK -sAk -xUz +pRD +gbf +gbf +jzP +gbf +pYB +pYB +gbf +iYe +bnx +siy +nBw mxQ mxQ -hHv -lAS -lAS -oYM -lAS -xaK -oYM -lAS +vUZ +tOM +tOM +gbf +tOM +nup +gbf +tOM mxQ -oYM -nVq -rev -oYM -pmo -pmo -dyp -lAS -oYM +gbf +fOT +apu +gbf +buJ +buJ +xTf +tOM +gbf bzO bzO bzO @@ -81761,22 +82666,22 @@ cAW bQM fwn jmG -brS -vJD -roY -uTp -kfF -tyk +dVC +vUP +mgz +rAw +vrH +tAE nmm pqz nmm nmm wJd -iZV -roY -roY -aIp -jLN +rLG +mgz +mgz +rkF +qfi vNq vNq vNq @@ -81785,96 +82690,96 @@ vNq vNq vNq vNq -dpt -jLs -wGm +oRg +ovq +peP vnr hxq vnr vnr hxq vnr -ljA -jLs -wGm +yfA +ovq +peP oUg -fzt -umq +vnl +qcy oUg oUg oUg -ljA -jLs -aap -xnq +yfA +ovq +uvn +vja nSx -kcP -iOJ -rsW -mQZ -iOJ -sad -rsW -mQZ -iOJ -sad -rsW -jZR -wnz -wnz -cCq -uFh +oQS +aZL +roQ +gRA +aZL +hdR +roQ +gRA +aZL +hdR +roQ +cfa +qwH +qwH +rzp +elO jTJ -bxl -jOO -xbB -pOd -vlt -xOI -pOd -kZb +lmu +sIj +hkA +nZI +aoo +bcd +nZI +pxf bzO -oYM -lAS -oYM -lAS -kjA -xcJ +gbf +tOM +gbf +tOM +rko +xkq jjg -jMz -otq -oYM -oYM -rvW -cDZ -kfA -kfA +tVY +bxv +gbf +gbf +oox +lMV +pYB +pYB vjR doQ upM vjR -xUz -swh +nBw +ogs jjg -aqW -cNn -lAS -oYM -lAS -xaK -oYM -mKy -vaO -oYM -nVq -rev -dEF -hab -hab -oaX -vCv -lAS -ehg +cBn +rxM +tOM +gbf +tOM +nup +gbf +bkg +ivN +gbf +fOT +apu +xEi +uVL +uVL +sqR +lTW +tOM +wwo rzt bQM bQM @@ -81973,20 +82878,20 @@ cAW tan geF jmG -aDs -vJD -roY -uTp -uTp -bXk +qPL +vUP +mgz +rAw +rAw +uLj nmm rru nmm djB wJd -dyM -roY -avI +tPB +mgz +uhA oUg oUg oUg @@ -81997,96 +82902,96 @@ oUg oUg oUg oUg -dpt -hsd -uTi -wYG -eRi -eRi -eRi -eRi -eRi -gHW -nCC -uTi -eRi -eRi -kqr -eRi -eEh -eRi -gHW -eNm -cfc -lzW -oHI -mQZ -iOJ -ozh -vEX +oRg +nNS +sPi +sfe +bix +bix +bix +bix +bix +uPl +bww +sPi +bix +bix +mPf +bix +dWn +bix +uPl +kHS +iHB +reZ +qyM +gRA +aZL +mEU +dVu nSx -srz -ozh -rsW -mQZ -iOJ -ozh -jZR -sHH -wnz -avl -iUy +hsz +mEU +roQ +gRA +aZL +mEU +cfa +upY +qwH +qNF +efW jTJ -mgC -jOO -xbB -pOd -kwv -aRG -aRG -aRG -ewy -oYM -oYM -lAS -lAS -neX +hcB +sIj +hkA +nZI +scG +iBr +iBr +iBr +rtw +gbf +gbf +tOM +tOM +xpM mxQ mxQ -lXf -nLl -lXf -xMT -fOw -qOG -roS -kfA -vDK -dvV -lqi -kOZ -nLl -nyk +jzP +ydK +jzP +tlj +ekW +rKs +ngg +pYB +bnx +taS +jEa +hPu +ydK +pWl mxQ mxQ -kGw -lAS -lAS -oYM -xaK -oYM -lAS -kbg -oYM -nVq -rev -oYM -ngd -nbv -odN -lAS -oYM -ehg +jLD +tOM +tOM +gbf +nup +gbf +tOM +lDG +gbf +fOT +apu +gbf +oib +nvX +uTA +tOM +gbf +wwo rzt bQM bQM @@ -82187,18 +83092,18 @@ cAW jmG uwk jmG -roY -neH -wTV -rSh +mgz +xCg +iFP +kiT nmm nmm nmm nmm wJd -vJD -roY -roY +vUP +mgz +mgz oUg oUg oUg @@ -82207,97 +83112,97 @@ oUg oUg oUg oUg -llC +qZc qGn -dpt -jLs -jLs -jLs -dgB -jLs -bRu -lYr -jLs -jLs -jLs -tTV -jLs -bQx -lYr -jLs -mPA -jLs -jfD -jLs -aap -fvk -oHI -rsW -mQZ -iOJ -sad -vEX +oRg +ovq +ovq +ovq +jSZ +ovq +fun +xia +ovq +ovq +ovq +vdN +ovq +vhy +xia +ovq +sZZ +ovq +kvu +ovq +uvn +uFC +qyM +roQ +gRA +aZL +hdR +dVu nSx -srz -dDy +hsz +tad izZ -kcP -bGT +oQS +vao kqC -rGV -wnz +cYj +qwH mCF kqC jTJ -wXf -jOO -xbB -pOd -pOd -qzI -pOd -pOd -pOd -sTV -hll -oYM -oYM -dCb +oaa +sIj +hkA +nZI +nZI +pWc +nZI +nZI +nZI +fWy +dxW +gbf +gbf +gSg mxQ -cbx -oYM -oYM -oYM -sru -qOG -vuW -ufX +qyq +gbf +gbf +gbf +eEC +rKs +saL +qCx fEY bzO -oYM -kqF -oYM -oYM -oYM -iGW +gbf +drk +gbf +gbf +gbf +jHj mxQ -qIk -oYM -oYM -hll -sTV -oYM -oYM -oYM -oYM -nVq -rev -oYM -pmo -cRs -nLl -lAS -oYM +aNz +gbf +gbf +dxW +fWy +gbf +gbf +gbf +gbf +fOT +apu +gbf +buJ +qTW +ydK +tOM +gbf bzO bzO bQM @@ -82399,18 +83304,18 @@ cAW cAW cAW uwk -roY -roY -roY -tAf +mgz +mgz +mgz +jPM oBC jNl vrp mTa bsm -kNl -roY -roY +wqY +mgz +mgz oUg kSh wPz @@ -82419,98 +83324,98 @@ wPz wPz ofq oUg -llC +qZc qGn -nOF -iSQ -iSQ -iSQ -suj -iSQ -iSQ -iSQ -tHP -ilv -jLs -pYO -iSQ -fCz -iEz -gzy -iSQ -iSQ -xjW -osR -aap -jLs -oHI -ozh -rsW -mQZ -iOJ -ozh -rsW -mQZ -iOJ -gWf -mQZ -mQZ -aRG -aRG -aRG -aRG -aRG -oAv -wXf -jOO -ovE -xng -xng -xng -xng -xng -xng -fBd -kfA -kfA -kfA -ubT -xyK -kfA -kfA -kfA -kfA -ufX -kfA -kfA -kfA -kfA -kfA -kfA -kfA -cvp -kfA -kfA -kfA -iCR -nVH -kfA -kfA -kfA -xoF -nbv -nbv -nbv -nbv -beV -rev -dEF -xrn -jXC -gUn -vCv -lAS -ehg +wTC +kgG +kgG +kgG +gFZ +kgG +kgG +kgG +eRR +cXV +ovq +iKI +kgG +bRA +tMs +sTK +kgG +kgG +uTt +xZV +uvn +ovq +qyM +mEU +roQ +gRA +aZL +mEU +roQ +gRA +aZL +xNJ +gRA +gRA +iBr +iBr +iBr +iBr +iBr +qdf +oaa +sIj +iTE +iSg +iSg +iSg +iSg +iSg +iSg +waQ +pYB +pYB +pYB +ont +eGm +pYB +pYB +pYB +pYB +qCx +pYB +pYB +pYB +pYB +pYB +pYB +pYB +hpX +pYB +pYB +pYB +vuT +uBV +pYB +pYB +pYB +ekx +nvX +nvX +nvX +nvX +pRD +apu +xEi +nMn +icu +ugP +lTW +tOM +wwo rzt bQM bQM @@ -82611,18 +83516,18 @@ cAW cAW cAW jmG -roY -roY -roY -sTB +mgz +mgz +mgz +mUd ubQ okF fis lUs pqz -kNl -roY -roY +wqY +mgz +mgz mPW cpP aFK @@ -82633,96 +83538,96 @@ fnD oUg oUg qob -kSU -kSU -tBR +jGf +jGf +sdV oUg oUg oUg -kRM -sBr +jKv +tJH oUg -ljA -xoB -wGm +yfA +imG +peP oUg -jPO -dSz -aRY -nCw +uFd +hzF +aXp +iDA ggh -rmS -tVu -tYc -tVu -mQZ -iOJ -ozh -vYA -ozh -mQZ -mQZ -sDp -mQZ -fiI -mQZ -gNK -aRG -aRG -aRG -aRG -aRG -aRG -wXf -jOO -oZc -dxO -dxO -dxO -dxO -dxO -dxO -wpp -kfA -kfA -kfA -wPL -gbn -kfA -kfA -roS -kfA -kfA -kfA -kfA -kfA -kfA -kfA -kfA -kfA -kfA -kfA -kfA -kfA -jYd -mBV -kfA -kfA -kfA -eNs -nLl -nLl -nLl -nLl -nLl -fOw -oYM -iXz -hIu -xRg -lAS -oYM -ehg +acO +xFL +pmC +xFL +gRA +aZL +mEU +cGS +mEU +gRA +gRA +wOG +gRA +cum +gRA +eZW +iBr +iBr +iBr +iBr +iBr +iBr +oaa +sIj +tPC +hEk +hEk +hEk +hEk +hEk +hEk +mkn +pYB +pYB +pYB +aMr +jYV +pYB +pYB +ngg +pYB +pYB +pYB +pYB +pYB +pYB +pYB +pYB +pYB +pYB +pYB +pYB +pYB +qzb +nmM +pYB +pYB +pYB +rsR +ydK +ydK +ydK +ydK +ydK +ekW +gbf +pLM +jWk +eHQ +tOM +gbf +wwo rzt bQM bQM @@ -82823,18 +83728,18 @@ cAW cAW cAW uwk -roY -jyc -roY -sTB +mgz +xCh +mgz +mUd hpz hxM fHK iwT nmm -kNl -xvs -roY +wqY +pUG +mgz puE hTf qGn @@ -82845,96 +83750,96 @@ pbp qGn pbp qGn -dpt -eph -aap +oRg +kHF +uvn oUg -qvk -tCj -grO -jLs -sJl -dpt -jLs -aap -eBs -cWM -dCA -lFx -cky -laD -dpt -jLs -flm -xnq +mNN +wFM +ehr +ovq +lpW +oRg +ovq +uvn +nvi +wMe +jQc +hGW +lFm +nUm +oRg +ovq +lAE +vja nSx -srz -ozh -mQZ -oFv +hsz +mEU +gRA +dJt izZ bEX bEX bEX iCU -mQZ -mQZ -aRG -oAv -aRG -aRG -aRG -aRG -wXf -jOO -ere -wEn -wEn -pOd -pOd -pOd -eEk -sTV -oYM -hll -oYM -dCb +gRA +gRA +iBr +qdf +iBr +iBr +iBr +iBr +oaa +sIj +lHw +sFr +sFr +nZI +nZI +nZI +gRg +fWy +gbf +dxW +gbf +gSg mxQ -uLH -oYM -oYM -oYM -rhF -rhF +xcz +gbf +gbf +gbf +ubo +ubo mxQ -jxa -kfA -tuB -kAo -tLd -oYM -oYM -oYM -iGW +opM +pYB +tWz +duV +lAM +gbf +gbf +gbf +jHj mxQ -enh -oYM -hll -oYM -sTV -oYM -oYM -lAS -oYM -oYM -oYM -oYM -pmo -vNY -nLl -lAS -oYM -ehg +dNc +gbf +dxW +gbf +fWy +gbf +gbf +tOM +gbf +gbf +gbf +gbf +buJ +thV +ydK +tOM +gbf +wwo rzt bQM bQM @@ -83035,17 +83940,17 @@ cAW cAW cAW jmG -roY -roY -uTp -rSh +mgz +mgz +rAw +kiT wyU ujs nmm nmm wJd -vJD -roY +vUP +mgz wef puE cJv @@ -83057,96 +83962,96 @@ eqQ eqQ eqQ eqQ -dpt -eph -aap +oRg +kHF +uvn oUg -gDz -jLs -aWP -wQn -vyU -dpt -bQx -sjc -eBs -rjM -tTM -jeY -akc -laD -oHk -tVu -tYc -tVu -sad -ovB -vxp -qvx -ozh +mju +ovq +cLS +ekS +ePU +oRg +vhy +dkX +nvi +orD +oiX +qgv +aEQ +nUm +uVH +xFL +pmC +xFL +hdR +ntx +kSe +leN +mEU izZ -bzG -lEz -waz +fOe +rez +xJn bEX -uRe -mQZ +cRM +gRA bhX -aRG -vAi -mNJ -bVk -oan -nZT -jOO -ere -pOd -plc -utC -aRG -aRG -ewy -oYM -oYM -lAS -lAS -neX +iBr +xMO +iDg +urv +avT +gVT +sIj +lHw +nZI +xyw +cOB +iBr +iBr +rtw +gbf +gbf +tOM +tOM +xpM mxQ mxQ -kfA -joS -kfA -kfA -wDF -oYM -kfA -kfA -xLI -dZc -beV -beV -luU -med +pYB +uTw +pYB +pYB +nKf +gbf +pYB +pYB +hWG +qQy +pRD +pRD +khw +htT mxQ mxQ -hHv -lAS -lAS -oYM -xaK -oYM -lAS -lAS -lAS -lAS -oYM -vCv -hab -gIF -ptZ -vCv -lAS -ehg +vUZ +tOM +tOM +gbf +nup +gbf +tOM +tOM +tOM +tOM +gbf +lTW +uVL +hUj +dWp +lTW +tOM +wwo rzt bQM bQM @@ -83247,18 +84152,18 @@ cAW cAW cAW uwk -roY -uTp -uTp -vvk +mgz +rAw +rAw +vsr nmm nmm cYT nmm wJd -kNz +lFB wef -roY +mgz qrz puE lzn @@ -83269,95 +84174,95 @@ eqQ eqQ eqQ eqQ -dpt -eph -aap +oRg +kHF +uvn eUi -xup -bQx -jLs -rWZ -jLs -dpt -jLs -aap -eBs -igD -uin -rvR -aag -laD -dpt -jLs -aap -dfZ -iOJ -iOJ -ozh -mQZ -mQZ +bGB +vhy +ovq +pse +ovq +oRg +ovq +uvn +nvi +tPA +lou +fwg +qAe +nUm +oRg +ovq +uvn +uZP +aZL +aZL +mEU +gRA +gRA izZ -uFc +bIR gWq -waz +xJn bEX -eJP +lbL xKX iyc bhX -aRG -oAv -mNJ -aRG -wXf -jOO -xbB -pOd -aRG -wen -aRG -aRG -mTq -oYM -lAS -oYM -lAS -flg -wOc +iBr +qdf +iDg +iBr +oaa +sIj +hkA +nZI +iBr +fdC +iBr +iBr +myA +gbf +tOM +gbf +tOM +rdt +rsQ mxQ -oYM -oYM -oYM -wqx -kfA -oYM -kfA -qos -wAv -beV -fmM -oYM -lXf -uod +gbf +gbf +gbf +jMv +pYB +gbf +pYB +ioW +hXF +pRD +ota +gbf +jzP +pRx jjg -tQL -ncQ -lAS -oYM -lAS -xaK -oYM -qFg +tlC +kyh +tOM +gbf +tOM +nup +gbf +fvK qbY -lAS -lAS -oYM -gqd -hIu -nbv -nbv -lAS -oYM +tOM +tOM +gbf +uSX +jWk +nvX +nvX +tOM +gbf bzO bzO bQM @@ -83459,18 +84364,18 @@ cAW cAW cAW jmG -roY -uTp -uTp -vgS +mgz +rAw +rAw +gFN nmm nmm nmm nmm wJd -iZV -roY -xvs +rLG +mgz +pUG puE eqQ qGn @@ -83481,96 +84386,96 @@ qGn qGn qGn qGn -dpt -eph -aap +oRg +kHF +uvn oUg -ovZ -yhT -bQx -jLs -qvk -pYp -jLs -aap -eBs -hjb -gyI -eph -eph -laD -uGb -puB -kiW -jLs -mQZ -ovB -vxp -mQZ -mQZ +pBW +jew +vhy +ovq +mNN +wet +ovq +uvn +nvi +mrK +qRS +kHF +kHF +nUm +lBE +sNj +erh +ovq +gRA +ntx +kSe +gRA +gRA izZ -hiK +nyF tOc tOc bgd -mQZ -mQZ +gRA +gRA bhX mhR bhX -aRG -nrL -aRG -wXf -jOO -xbB -pOd -qZL -utC -aRG -lBJ -xbu -oYM -lAS -oYM -lAS -lAS -neX +iBr +dfA +iBr +oaa +sIj +hkA +nZI +qKq +cOB +iBr +aTL +vPF +gbf +tOM +gbf +tOM +tOM +xpM mxQ mxQ -lAS -uTk -oYM -lLU -kqF -kfA -kfA -oYM -beV -oYM -oYM -meG +tOM +gjr +gbf +fgq +drk +pYB +pYB +gbf +pRD +gbf +gbf +oLX mxQ mxQ -hHv -lAS -lAS -oYM -lAS -xaK -oYM -vDK +vUZ +tOM +tOM +gbf +tOM +nup +gbf +bnx qbY -gxN -lAS -oYM -egx -nLl -vZx -pmo -lAS -oYM -jfa +rVQ +tOM +gbf +mPg +ydK +lZm +buJ +tOM +gbf +jlU rzt bQM bQM @@ -83671,18 +84576,18 @@ bQM cAW cAW uwk -roY -uTp -uTp -dLF +mgz +rAw +rAw +srQ nmm sUX nmm nmm nEN -dyM -roY -roY +tPB +mgz +mgz mPW vvM tet @@ -83693,96 +84598,96 @@ fnD oUg oUg qob -kSU -kSU -tBR +jGf +jGf +sdV oUg oUg oUg -jLs -hXi +ovq +kbj oUg -rmS -tVu -lsU +acO +xFL +uVk oUg -gUx -eza -bfs -eir +njG +sli +fbX +nxW oUg -dzk -jLs -aap -jLs -jLs -iOJ -ozh -mQZ -smh +vmL +ovq +uvn +ovq +ovq +aZL +mEU +gRA +fXo izZ bEX mrG bEX izZ -kcP -fGM -vpk +oQS +lco +oZx bhX -uVv -vAi -fpl -aRG -wXf -jOO -xbB -pOd -aRG -aRG -aRG -uhb +ahm +xMO +rSU +iBr +oaa +sIj +hkA +nZI +iBr +iBr +iBr +aco bzO bzO -kfA -lAS -oYM -lAS -qMV -wOc +pYB +tOM +gbf +tOM +kTD +rsQ mxQ -lAS -lAS -oYM -kfA -oYM -kfA -kfA -oYM -nVq -lXf -meG -kaH +tOM +tOM +gbf +pYB +gbf +pYB +pYB +gbf +fOT +jzP +oLX +wYT jjg -tQL -tsu -lAS -oYM -lAS -dxJ +tlC +jrO +tOM +gbf +tOM +cyR bzO bzO -pmg +pFW yfE uBq baE -lAS -vCv -cyU -hab -tiW -vCv -oYM -jfa +tOM +lTW +lsO +uVL +iRG +lTW +gbf +jlU rzt bQM bQM @@ -83883,18 +84788,18 @@ kPz bce cAW jmG -roY -uTp -neH -jkZ +mgz +rAw +xCg +xKP spl oNx uuJ oNx jWy -vJD -roY -roY +vUP +mgz +mgz jqt pTU wPz @@ -83903,97 +84808,97 @@ wPz wPz jPK oUg -llC +qZc qGn -bTe -eRi -eRi -eRi -eRi -dJl -ami -eRi -lJa -gHW -jLs -uTi -eRi -tBe -eRi -eRi -jgW -lHL -gHW -jLs -vsq -ucr -jLs -jLs -jLs -wXf -wXf -wXf -bmO -wXf -bmO -wXf -bmO -wXf -uFE -wXf -iiP -pEY -vzZ -wXf -wXf -jOO -ere -pOd -plc -utC -aRG -nds +vyw +bix +bix +bix +bix +fKu +tTv +bix +wGX +uPl +ovq +sPi +bix +uZZ +bix +bix +bBr +eds +uPl +ovq +hkB +cOL +ovq +ovq +ovq +oaa +oaa +oaa +kMV +oaa +kMV +oaa +kMV +oaa +tbj +oaa +uKb +evC +wzg +oaa +oaa +sIj +lHw +nZI +xyw +cOB +iBr +ume bzO bzO -kfA -eCA -oYM -eNs -lAS -neX +pYB +eTr +gbf +rsR +tOM +xpM mxQ mxQ mxQ -jcB -kfA -dMm -kfA -kfA -oYM -pON -mLE +sHe +pYB +kBt +pYB +pYB +gbf +wdo +nEP mxQ jjg mxQ -hHv -lAS -snO -oYM -lAS -kfA +vUZ +tOM +oEQ +gbf +tOM +pYB bzO bzO -oYM +gbf qbY -gxN -lAS -oYM -lAS -nbv -hIu -nbv -lAS -eCA +rVQ +tOM +gbf +tOM +nvX +jWk +nvX +tOM +eTr bzO bzO bQM @@ -84095,18 +85000,18 @@ fiq cAW cAW uwk -roY -roY -roY -roY -roY -roY -roY -roY -roY -roY -roY -roY +mgz +mgz +mgz +mgz +mgz +mgz +mgz +mgz +mgz +mgz +mgz +mgz oUg oUg oUg @@ -84115,98 +85020,98 @@ oUg oUg oUg oUg -llC +qZc qGn -dpt -eph -eph -eph -eph -eph -eph -skO -gxL -eph -rDl -aAH -eph -gxL -eph -eph -ybR -eph -eph -ybR -eph -xZk -eRi -dJl -eRi -xng -aQK -xng -pAt -kjz -vea -xng -vea -irK -hWJ -xng -iah -xng -mbe -xng -xng -bsJ -ere -pOd -aRG -aRG -aRG -xnW +oRg +kHF +kHF +kHF +kHF +kHF +kHF +nVN +ojj +kHF +vTL +kBm +kHF +ojj +kHF +kHF +hcs +kHF +kHF +hcs +kHF +jLC +bix +fKu +bix +iSg +cJS +iSg +fVY +alK +jOd +iSg +jOd +njg +xGr +iSg +tyt +iSg +eQX +iSg +iSg +dBZ +lHw +nZI +iBr +iBr +iBr +dcy bzO bzO mxQ -kfA -lAS -oYM -lAS -flg -lJy -wOc +pYB +tOM +gbf +tOM +rdt +jGC +rsQ mxQ mxQ mxQ -eRH -kfA -kfA -fKF +aLz +pYB +pYB +mPn mxQ jjg mxQ -tQL -lJy -ncQ -lAS -oYM -lAS -kfA +tlC +jGC +kyh +tOM +gbf +tOM +pYB mxQ mxQ mxQ -oYM -oYM -oYM -oYM -lAS -oYM -oYM -lAS -oYM -dgz -oYM -bGt +gbf +gbf +gbf +gbf +tOM +gbf +gbf +tOM +gbf +lNR +gbf +uXK bzO bzO bzO @@ -84307,18 +85212,18 @@ fiq fiq tan jmG -roY -roY -roY -roY -roY -vJD -vJD -vJD -vJD -roY -roY -roY +mgz +mgz +mgz +mgz +mgz +vUP +vUP +vUP +vUP +mgz +mgz +mgz oUg oUg oUg @@ -84329,96 +85234,96 @@ oUg oUg oUg oUg -nOF -iSQ -iSQ -iSQ -iSQ -iSQ -gjg -iSQ -njC -iSQ -iSQ -iSQ -iSQ -njC -iSQ -soc -iSQ -iSQ -iSQ -iSQ -iSQ -iSQ -sOp -sOp -iSQ -kJI -dxO -dxO -mjD -dxO -mjD -rmG -mjD -dxO -mki -dxO -dxO -dxO -dxO -dxO -dxO -dxO -gmy -pOd -plc -utC -aRG -gCY +wTC +kgG +kgG +kgG +kgG +kgG +vyK +kgG +pXJ +kgG +kgG +kgG +kgG +pXJ +kgG +lqN +kgG +kgG +kgG +kgG +kgG +kgG +slR +slR +kgG +iIx +hEk +hEk +nZU +hEk +nZU +irE +nZU +hEk +mqM +hEk +hEk +hEk +hEk +hEk +hEk +hEk +rVi +nZI +xyw +cOB +iBr +brR vDO tUs mxQ -kfA -lAS -oYM -lAS -lAS -lAS -qMV -lJy -wOc +pYB +tOM +gbf +tOM +tOM +tOM +kTD +jGC +rsQ mxQ mxQ -kPC -bPf +rqh +iAr mxQ mxQ -tQL -lJy -tsu -lAS -lAS -lAS -oYM -eCA -kfA +tlC +jGC +jrO +tOM +tOM +tOM +gbf +eTr +pYB mxQ tUs vDO -atE -oYM -oYM -lAS -eCA -boh -boh -boh -boh -lAS -lAS -okM +eBS +gbf +gbf +tOM +eTr +gLk +gLk +gLk +gLk +tOM +tOM +pti bzO bzO bzO @@ -84551,78 +85456,78 @@ hxq hxq hxq vnr -vtJ -kSU -kSU +fjV +jGf +jGf vNq -dpt -ycX -doB -kFM -ycX -aBm -ycX -ycX -ycX -ycX -aap -eix -dZA -eix -kaB -wXf -uCu -wXf -bmO -wXf -xCm -wXf -wXf -wXf -wXf -wXf -sde -tCf -tCf -wXf -aRG -aRG -aRG -aRG +oRg +ixl +cCh +qby +ixl +gtP +ixl +ixl +ixl +ixl +uvn +oty +tUD +oty +koK +oaa +sga +oaa +kMV +oaa +jft +oaa +oaa +oaa +oaa +oaa +iEF +rBu +rBu +oaa +iBr +iBr +iBr +iBr mxQ tUs mxQ mxQ -kfA -lAS -oYM -oYM -eNs -lAS -lAS -flg -lJy -jka -nVH -ubT -vyF -lJy -ncQ -lAS -lAS -snO -oYM -oYM -lAS -kfA +pYB +tOM +gbf +gbf +rsR +tOM +tOM +rdt +jGC +dOZ +uBV +ont +xcS +jGC +kyh +tOM +tOM +oEQ +gbf +gbf +tOM +pYB mxQ mxQ tUs bzO -lAS -lAS -oYM -lAS +tOM +tOM +gbf +tOM mxQ mLP uap @@ -84732,14 +85637,14 @@ cAW tan tan tan -mFf -hgp -cXw +tst +iPv +roH lRT -fhX -wHx -wHx -esE +gxn +ijC +ijC +fdu lRT cAW vnr @@ -84763,21 +85668,21 @@ bQM bQM kPz xDw -tRa -fLa -ltV +ibl +raC +tIW dOX -qqu -rZa -ljZ -kDg -rZa -qHC -arq -qHC -fxY -qcT -hlK +pmn +smR +fgN +bMF +smR +fDJ +fSp +fDJ +vlU +xSz +uYi lRT deL dzl @@ -84786,64 +85691,64 @@ dzl dzl dzl dzl -skM -fpl -aRG -dEy -gOs -wpf -fTx -wXf -fTx -gOs -fyQ -fTx -vOz -aRG -ogd +nie +rSU +iBr +enu +xNU +wkL +vMT +oaa +vMT +xNU +kKs +vMT +ksY +iBr +bnJ mxQ cLu kVk mxQ -nPa -kfA -lAS -lAS -oYM -oYM -lAS -lAS -lAS -oYM -kfA -kfA -oYM -lAS -lAS -lAS -oYM -oYM -lAS -lAS -kfA -pzG +xLD +pYB +tOM +tOM +gbf +gbf +tOM +tOM +tOM +gbf +pYB +pYB +gbf +tOM +tOM +tOM +gbf +gbf +tOM +tOM +pYB +bAf mxQ cZr tUs bzO -lAS -lAS +tOM +tOM vEK -lAS +tOM jjg -xoF -pkG -nbv -nbv -nbv -nbv -nbv -izJ +ekx +cqV +nvX +nvX +nvX +nvX +nvX +prL rzt bQM bQM @@ -84944,14 +85849,14 @@ cAW cAW pcu nfF -xdy +gID ruD -jVC +dde taY -voS -hKI -hKI -hlK +ann +nGZ +nGZ +uYi lRT cAW vnr @@ -84975,21 +85880,21 @@ xDw xDw xDw lRT -hTG -qHC -kjo +pVk +fDJ +hmq sIJ -iJf -qWa -lbe -sEi -kge -sEi -oMy -vED -sEi -ltV -hlK +qaL +hWk +vKz +dnX +hPO +dnX +qgk +jYt +dnX +tIW +uYi xDw cAW bQM @@ -84999,19 +85904,19 @@ sVv bQM rBF dzl -bVk -vAi -kwm -cll -qmO -lRe -wXf -kwm -xYB -luH -wDV -aRG -dGj +urv +xMO +gmg +nRQ +qNy +cdp +oaa +gmg +nLS +qpN +pwo +iBr +obE mxQ mxQ tUs @@ -85019,24 +85924,24 @@ cFX mxQ mxQ mxQ -xjv -kfA -eCA -lAS -oYM -oYM -lAS -oYM -kfA -kfA -oYM -lAS -oYM -oYM -lAS -eCA -kfA -kfA +kag +pYB +eTr +tOM +gbf +gbf +tOM +gbf +pYB +pYB +gbf +tOM +gbf +gbf +tOM +eTr +pYB +pYB mxQ iyf mxQ @@ -85044,18 +85949,18 @@ eoW tUs bzO bzO -lAS +tOM vEK -lAS +tOM jjg -nVq -oYM -oYM -vSk -sFN -oYM -oYM -vqM +fOT +gbf +gbf +gIo +wYq +gbf +gbf +xlx rzt bQM bQM @@ -85156,14 +86061,14 @@ fiq fiq pcu fiq -xdy -xdy -xdy +gID +gID +gID taY -iJf -hKI -hKI -hlK +qaL +nGZ +nGZ +uYi lRT cAW vnr @@ -85181,27 +86086,27 @@ bQM bQM xDw xDw -uri -lwO -eqC -foT -fxY -hsA -iJf -jOW -hlK +sda +qeN +wSD +bHP +vlU +lqI +qaL +gtT +uYi dOX -jdc -vbn -tRa -lbe -idq -sEi -lbe -fLa -eWh -hlK -rKB +onB +mbz +ibl +vKz +rpT +dnX +vKz +raC +bec +uYi +sDS xDw dhi fQV @@ -85211,19 +86116,19 @@ sHO fQV erT dzl -kng -aRG -fTx -lnf -aVA -fTx -vzZ -fTx -lnf -aVA -fTx -aRG -aRG +mQV +iBr +vMT +rZN +krE +vMT +wzg +vMT +rZN +krE +vMT +iBr +iBr ffZ tUs tlQ @@ -85233,20 +86138,20 @@ vFn mxQ iyf mxQ -nPa -kfA -lAS -lAS -oYM -oYM -kfA -kfA -oYM -oYM -lAS -lAS -kfA -kfA +xLD +pYB +tOM +tOM +gbf +gbf +pYB +pYB +gbf +gbf +tOM +tOM +pYB +pYB mxQ mxQ mxQ @@ -85256,18 +86161,18 @@ hpW tUs tUs bzO -lAS +tOM vEK -lAS +tOM jjg -eNs -nLl -nLl -nLl -nLl -nLl -nLl -qgq +rsR +ydK +ydK +ydK +ydK +ydK +ydK +eyj rzt bQM bQM @@ -85372,10 +86277,10 @@ fiq nfF nfF lRT -iJf -dlW -dlW -hlK +qaL +cUd +cUd +uYi lRT cAW bce @@ -85392,28 +86297,28 @@ kPz bQM xDw xDw -lwO -eqC -hKI -hKI -hKI -hKI -hsA -iJf -qHC -hlK +qeN +wSD +nGZ +nGZ +nGZ +nGZ +lqI +qaL +fDJ +uYi dOX -pkc -bGr -aCn -tRa -sEi -sEi -sEi -gnS -sYM -hlK -jBj +nSS +udE +utW +ibl +dnX +dnX +dnX +xEX +mfF +uYi +lOy lRT ajx afk @@ -85423,19 +86328,19 @@ afk afk iWq dzl -aRG -aRG -wXf -wXf -wXf -wXf -wXf -wXf -wXf -wXf -wXf -pOd -gCY +iBr +iBr +oaa +oaa +oaa +oaa +oaa +oaa +oaa +oaa +oaa +nZI +brR vDO tUs tUs @@ -85447,16 +86352,16 @@ tUs mxQ mxQ bzO -oYM -oYM -oYM -sTV -xoF -bPS -sTV -oYM -oYM -iGW +gbf +gbf +gbf +fWy +ekx +beB +fWy +gbf +gbf +jHj bzO mxQ mxQ @@ -85468,13 +86373,13 @@ tUs tUs tUs vDO -atE +eBS vEK -lAS +tOM mxQ -wMQ -kPv -cbC +lPE +qbR +gcD mxQ syV iyf @@ -85584,10 +86489,10 @@ pcu atp cAW lRT -hTG +pVk hjW hjW -cxe +mgE lRT cAW bce @@ -85603,29 +86508,29 @@ bQM kPz bQM xDw -jyR -fxY -hKI -hKI -eqC -hKI -nJC -own -wew -rXT -uxY +ssC +vlU +nGZ +nGZ +wSD +nGZ +kNk +sPh +gTy +ifN +ncb dOX -aKc -aQE -iJf -joD -dlW -dlW -dIa -uxY -xmM -hlK -iRy +kaF +kka +qaL +kqJ +cUd +cUd +tUC +ncb +hXG +uYi +sgJ xDw ajx afk @@ -85635,19 +86540,19 @@ afk afk iWq dzl -aRG -aRG -fTx -gOs -fyQ -fTx -wXf -fTx -gOs -fyQ -fTx -pOd -pOd +iBr +iBr +vMT +xNU +kKs +vMT +oaa +vMT +xNU +kKs +vMT +nZI +nZI mxQ mxQ mxQ @@ -85657,16 +86562,16 @@ mxQ mxQ iyf mxQ -oAH +xRo bzO bzO bzO -sKP -oYM -nVq -rev -oYM -sKP +iHT +gbf +fOT +apu +gbf +iHT bzO bzO bzO @@ -85680,17 +86585,17 @@ cZr eoW tUs bzO -lAS +tOM vEK -lAS +tOM mxQ -xVR -ipJ -kwy +nQJ +iys +iFZ bzO -loy -txS -jrn +eET +ldW +tyJ bzO bQM bQM @@ -85796,10 +86701,10 @@ pcu fiq cAW lRT -iJf -sEi -sEi -hlK +qaL +dnX +dnX +uYi lRT cAW bce @@ -85815,10 +86720,10 @@ bQM kPz bQM xDw -hKI -hKI -hKI -fxY +nGZ +nGZ +nGZ +vlU xDw xDw xDw @@ -85827,17 +86732,17 @@ hir hir hir dOX -fye -gEv -jyK -dlW -dIa -dlW -gxx -dlW -uxY -hlK -tGF +eqi +tYt +bxy +cUd +tUC +cUd +guv +cUd +ncb +uYi +qhP xDw ajx afk @@ -85847,38 +86752,38 @@ afk afk iWq dzl -vOz -aRG -kwm -kXH -jGP -wDV -wXf -kwm -cll -cDf -wDV -pOd -pOd -kfA -sTV -rOE -ers -oYM -ers -oYM -prP -lAS -lAS +ksY +iBr +gmg +nck +ayH +pwo +oaa +gmg +nRQ +vGM +pwo +nZI +nZI +pYB +fWy +xEW +cwM +gbf +cwM +gbf +wkA +tOM +tOM rzt bQM rzt -lAS -oYM -nVq -rev -oYM -qLJ +tOM +gbf +fOT +apu +gbf +aXv mxQ cZr eoW @@ -85892,17 +86797,17 @@ bzO bzO bzO bzO -lAS +tOM vEK -lAS +tOM mxQ -itq -oAL -aIE +llE +nfe +bvg bzO -lQd -btP -jrn +klt +qFf +tyJ bzO bQM bQM @@ -86008,48 +86913,48 @@ pcu cAW cAW xDw -iJf -dlW -dlW -hlK +qaL +cUd +cUd +uYi lRT lRT lRT cAW cAW lRT -nBB -nBB -nBB -nBB +gUu +gUu +gUu +gUu lRT bQM kPz bQM xDw -hKI -dYv -hKI +nGZ +ipz +nGZ xDw xDw bQM bQM xDw -thU -diR -tVX -qHC -iJf -ojh -dlW -dlW -dlW -pzV -dlW -dlW -dlW -uxY -tNu +tZz +jrT +vhd +fDJ +qaL +rrs +cUd +cUd +cUd +pvi +cUd +cUd +cUd +ncb +sXP xDw fdV jlH @@ -86059,38 +86964,38 @@ eOF jlH bUB rBF -goM -aRG -fTx -lnf -aVA -fTx -wXf -fTx -lnf -aVA -fTx -pOd -pOd -kfA -nbv -nbv -nbv -nbv -nbv -bPS -oYM -lAS -lAS +lwn +iBr +vMT +rZN +krE +vMT +oaa +vMT +rZN +krE +vMT +nZI +nZI +pYB +nvX +nvX +nvX +nvX +nvX +beB +gbf +tOM +tOM rzt kPz rzt -lAS -oYM -nVq -rev -oYM -guQ +tOM +gbf +fOT +apu +gbf +ivr vDO tUs tUs @@ -86104,13 +87009,13 @@ kPz bQM bQM bzO -lAS -xjv -kGW +tOM +kag +lKI mxQ -cGg -kte -tWq +wSb +gPp +tIf bzO rzt rzt @@ -86220,48 +87125,48 @@ pcu cAW cAW xDw -iJf +qaL hjW hjW -hlK -hKI -nvO +uYi +nGZ +gsX lRT lRT lRT lRT -eps -ffN -eps -ffN +rFw +nQF +rFw +nQF lRT lRT lRT lRT xDw -hKI -hKI -hKI +nGZ +nGZ +nGZ xDw bQM bQM bQM lRT -iuW +sLu hva -nSi -qHC -iJf -qHC -wdA -fsf -qHC -qHC -qHC -lHB -bFh -hKI -vYM +fUP +fDJ +qaL +fDJ +qLH +udB +fDJ +fDJ +fDJ +rPW +dmQ +nGZ +wBE xDw cAW bQM @@ -86271,38 +87176,38 @@ sVv bQM bQM rBF -aRG -aRG -aRG -aRG -aRG -wXf -wXf -wXf -aRG -pOd -aRG -pOd -pOd -kfA -nLl -nLl -nLl -nLl -oiu -rev -oYM -lAS -lAS +iBr +iBr +iBr +iBr +iBr +oaa +oaa +oaa +iBr +nZI +iBr +nZI +nZI +pYB +ydK +ydK +ydK +ydK +kHv +apu +gbf +tOM +tOM rzt bQM rzt -lAS -oYM -nVq -rev -oYM -lAS +tOM +gbf +fOT +apu +gbf +tOM mxQ bzO bzO @@ -86432,48 +87337,48 @@ cAW cAW cAW xDw -iJf -sEi -sEi -mcE -ltV -hKI -hKI -hKI -piy -nvO -hKI -hKI -hKI -hKI -rUc -rUc -gnR -rUc -hsA -hsA -hsA -lpm +qaL +dnX +dnX +nCm +tIW +nGZ +nGZ +nGZ +fNN +gsX +nGZ +nGZ +nGZ +nGZ +ntw +ntw +cTD +ntw +lqI +lqI +lqI +gBP xDw bQM bQM bQM xDw -yiD -aOJ -jUp -qHC -qyk -dlW -dlW -dlW -dlW -dlW -dlW -dlW -dlW -pbF -uxY +dNC +wAt +oJK +fDJ +bSm +cUd +cUd +cUd +cUd +cUd +cUd +cUd +cUd +dZQ +ncb lRT xDw xDw @@ -86488,34 +87393,34 @@ iRa iRa iRa dOX -aIh -hsA -hsA +bTp +lqI +lqI fjd -pOd -ltu -pOd -kLo -kfA -sTV -oYM -fKF -oYM -nVq -rev -oYM -lAS -eCA +nZI +xXY +nZI +jgz +pYB +fWy +gbf +mPn +gbf +fOT +apu +gbf +tOM +eTr bzO rzt bzO -pmg -oYM -nVq -rev -rOE -lAS -fLO +pFW +gbf +fOT +apu +xEW +tOM +kUo rzt kPz rzt @@ -86644,28 +87549,28 @@ cAW cAW cAW xDw -iJf -oWz -hKI -hKI -tRa -ltV -hKI -tRa -sEi -ltV -hKI -tRa -sEi -ltV -hKI -tRa -pJo -ltV -iJf -hKI -hKI -hKI +qaL +vOD +nGZ +nGZ +ibl +tIW +nGZ +ibl +dnX +tIW +nGZ +ibl +dnX +tIW +nGZ +ibl +eEQ +tIW +qaL +nGZ +nGZ +nGZ lRT sJN lRT @@ -86675,14 +87580,14 @@ hir hir hir dOX -xfd -rTb -rTb -rTb -rTb -rTb -rTb -qUZ +iIl +cEb +cEb +cEb +cEb +cEb +cEb +vBZ dOX sIJ dOX @@ -86695,39 +87600,39 @@ xDw bQM xAl xDw -cfN -cfN -cfN -cfN -cfN -cfN -cfN -cfN +lqC +lqC +lqC +lqC +lqC +lqC +lqC +lqC fjd -pOd -pAB -pOd +nZI +mdY +nZI rBF rzt rzt rzt bzO -oYM -nVq -rev -oYM -rOE -oYM -oYM -oYM -oYM -wqx -oYM -nVq -rev -oYM -mKy -utf +gbf +fOT +apu +gbf +xEW +gbf +gbf +gbf +gbf +jMv +gbf +fOT +apu +gbf +bkg +gZg rzt bQM rzt @@ -86856,50 +87761,50 @@ cAW cAW cAW lRT -utV -tqQ -orA -hKI -iJf -hlK -hsA -iJf -hsA -hlK -hsA -iJf -hsA -hlK -hsA -iJf -hsA -hlK -iJf -hKI -hKI -hKI -hKI -pCF -hKI -mWx -hKI -hKI -lOb -hKI -rMP -hKI -hKI -hKI -iJf -hlK -hKI -hKI -hKI -jal -hKI -aai -ddc -qbT +rbI +nim +lPA +nGZ +qaL +uYi +lqI +qaL +lqI +uYi +lqI +qaL +lqI +uYi +lqI +qaL +lqI +uYi +qaL +nGZ +nGZ +nGZ +nGZ +jiq +nGZ +vzp +nGZ +nGZ +vSW +nGZ +hQR +nGZ +nGZ +nGZ +qaL +uYi +nGZ +nGZ +nGZ +rnn +nGZ +xpw +szP +edY xeO dNh dNh @@ -86907,14 +87812,14 @@ xDw bQM bQM xDw -cfN -hKI -hKI -hKI -hKI -hKI -hKI -cfN +lqC +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +lqC lRT rBF rBF @@ -86924,22 +87829,22 @@ bQM bQM bQM bzO -oYM -nVq -xUz -nbv -nbv -nbv -nbv -nbv -nbv -nbv -nbv -beV -rev -oYM -eCA -byt +gbf +fOT +nBw +nvX +nvX +nvX +nvX +nvX +nvX +nvX +nvX +pRD +apu +gbf +eTr +iwi rzt bQM rzt @@ -87069,64 +87974,64 @@ cAW cAW xDw xDw -jyK -tqQ -hKI -jyK -uxY -hKI -jyK -dlW -uxY -hKI -jyK -dlW -uxY -hKI -jyK -dlW -uxY -iJf -hKI -hKI +bxy +nim +nGZ +bxy +ncb +nGZ +bxy +cUd +ncb +nGZ +bxy +cUd +ncb +nGZ +bxy +cUd +ncb +qaL +nGZ +nGZ aHj -hKI +nGZ hjW hjW -hKI +nGZ wnq hjW -hKI +nGZ hjW -rMP -fxY -hKI -hKI -iJf -hlK -hKI +hQR +vlU +nGZ +nGZ +qaL +uYi +nGZ hjW hjW -fxY +vlU hjW -hKI -tRa -mDs -sEi +nGZ +ibl +cVu +dnX xeO smv xDw bQM bQM xDw -cfN -cfN -cfN -cfN -cfN -cfN -cfN -cfN +lqC +lqC +lqC +lqC +lqC +lqC +lqC +lqC xDw kPz kPz @@ -87136,22 +88041,22 @@ kPz kPz kPz bzO -tnH -nVq -lXf -nLl -nLl -nLl -nLl -nLl -nLl -nLl -nLl -nLl -snO -oYM -lAS -htL +eJt +fOT +jzP +ydK +ydK +ydK +ydK +ydK +ydK +ydK +ydK +ydK +oEQ +gbf +tOM +oZS rzt kPz rzt @@ -87282,59 +88187,59 @@ cAW cAW xDw xDw -jyK -dlW -hBn -hKI -hKI -hKI -hKI -lmM -mcN -mcN -mcN -rBR -mcN -mcN -crw -mcN -iJf -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -qcK -hKI -hKI -iJf -hlK -hKI -hKI -hKI -hKI -hKI -hKI -iJf -hKI -qHC -nsC -hKI +bxy +cUd +vnM +nGZ +nGZ +nGZ +nGZ +rJW +hSO +hSO +hSO +pkB +hSO +hSO +ign +hSO +qaL +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +mSP +nGZ +nGZ +qaL +uYi +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +qaL +nGZ +fDJ +hbH +nGZ lRT xDw xDw lRT -aIh -hsA -hsA -hsA +bTp +lqI +lqI +lqI lRT fjd lRT @@ -87348,21 +88253,21 @@ bQM bQM kPz bzO -oYM -nVq -rev -oYM -oYM -oYM -oYM -oYM -oYM -oYM -oYM -oYM -oYM -oYM -lAS +gbf +fOT +apu +gbf +gbf +gbf +gbf +gbf +gbf +gbf +gbf +gbf +gbf +gbf +tOM mxQ bzO bzO @@ -87510,43 +88415,43 @@ lRT lRT lRT lRT -dhV -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -ltV -qHC -hlK +vgC +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +tIW +fDJ +uYi xeO -qDY -cfN -cfN -cfN -cfN -hKI -hKI -hKI +yiT +lqC +lqC +lqC +lqC +nGZ +nGZ +nGZ lRT xeO lRT @@ -87560,21 +88465,21 @@ bQM bQM bQM bzO -oYM -nVq -rev -oYM -lAS -lAS -kLQ -lAS -lAS -lAS -lAS -lAS -lAS -lAS -guQ +gbf +fOT +apu +gbf +tOM +tOM +aAk +tOM +tOM +tOM +tOM +tOM +tOM +tOM +ivr vDO tUs tUs @@ -87722,43 +88627,43 @@ bQM vzB gws vzB -iJf -hKI -hsA -wFk -nGk -uhH -uol -wFk -nGk -uhH -uol -wFk -nGk -uhH -uol -wFk -nGk -uhH -uol -wFk -nGk -uhH -uol -wFk -hsA -hlK -dlW -uxY -hKI -vQr -hKI -hKI -hKI -hKI -hKI -fxY -hKI +qaL +nGZ +lqI +eDp +qGe +unp +wKx +eDp +qGe +unp +wKx +eDp +qGe +unp +wKx +eDp +qGe +unp +wKx +eDp +qGe +unp +wKx +eDp +lqI +uYi +cUd +ncb +nGZ +gtg +nGZ +nGZ +nGZ +nGZ +nGZ +vlU +nGZ lRT xeO lRT @@ -87772,18 +88677,18 @@ kPz kPz kPz bzO -oYM -nVq -rev -dMm -lAS -lAS -lAS -lAS -eCA -lAS -lAS -lAS +gbf +fOT +apu +kBt +tOM +tOM +tOM +tOM +eTr +tOM +tOM +tOM vEK vEK fTs @@ -87934,11 +88839,11 @@ bQM vzB gws vzB -iJf -hKI -owG +qaL +nGZ +uNs iOa -xeO +cCx xeO xeO xeO @@ -87956,21 +88861,21 @@ xeO xeO xeO xeO -xeO +cCx iOa -nBR -hlK -hKI -hKI -hKI -cfN -cfN -cfN -cfN -cfN -cfN -cfN -cfN +eLB +uYi +nGZ +nGZ +nGZ +lqC +lqC +lqC +lqC +lqC +lqC +lqC +lqC lRT xeO lRT @@ -87984,17 +88889,17 @@ bQM bQM bQM bzO -tnH -nVq -rev -oYM -kfA -kfA -kfA -kfA -aMz -kfA -kfA +eJt +fOT +apu +gbf +pYB +pYB +pYB +pYB +hZG +pYB +pYB bzO rzt rzt @@ -88138,20 +89043,19 @@ cAW cAW bQM bQM -pfi -hbC -hbC -hbC -hbC -ssD -iSi -ssD -tPi -viV -wJf +dPZ +ogf +ogf +ogf +ogf +tsc +bEk +tsc +dxc +pYD +ehy xeO xeO -cCx xeO xeO xeO @@ -88167,21 +89071,22 @@ xeO xeO xeO xeO -cCx xeO -bju -sLo -hlK -hKI -iWW +xeO +xeO +xeO +oGR +uYi +nGZ +ieA hQh hQh hQh hQh hQh hQh -qHC -qHC +fDJ +fDJ lRT lRT fjd @@ -88196,10 +89101,10 @@ bQM cAW bzO bzO -iqR -xnp -xnp -pIK +ofA +axx +axx +lbK bzO bzO bzO @@ -88350,7 +89255,7 @@ bQM bQM bQM bQM -gEU +bmT bQM bQM bQM @@ -88358,9 +89263,9 @@ bQM vzB gws vzB -iJf -bYS -jCp +qaL +czf +aTe xeO xeO xeO @@ -88382,48 +89287,48 @@ xeO xeO xeO xeO -pAN -hlK +rrD +uYi hjW -iWW +ieA xeO bym uKx uKx xew vem -eXr -eXr -yls -ssD -yls -ssD -iSi -hbC -iSi -hbC -hbC -hbC -hbC -hbC -ssD -kqe -eML -lNg -lNg -npz -ahR -vrN -dUZ -dUZ -dUZ +uGI +uGI +paI +tsc +paI +tsc +bEk +ogf +bEk +ogf +ogf +ogf +ogf +ogf +tsc +kSD +sNQ +aeo +aeo +dPr +cUU +mvF +kkU +kkU +kkU xDq naf naf cqz ggd -hbC -cbb +ogf +mRM bce cAW cAW @@ -88562,7 +89467,7 @@ bQM bQM bQM bQM -gEU +bmT bQM bQM bQM @@ -88570,9 +89475,9 @@ bQM vzB gws vzB -iJf -bYS -hHh +qaL +czf +tgK xeO xeO xeO @@ -88594,10 +89499,10 @@ xeO xeO xeO xeO -aVK -hlK +cfG +uYi hjW -iWW +ieA xeO lpl jVE @@ -88635,7 +89540,7 @@ kEy sDL bQM bQM -gEU +bmT bce cAW cAW @@ -88774,7 +89679,7 @@ bQM bQM bQM bQM -gEU +bmT bQM bQM bQM @@ -88782,9 +89687,9 @@ bQM vzB gws vzB -iJf -bYS -owG +qaL +czf +uNs xeO xeO xeO @@ -88806,48 +89711,48 @@ xeO xeO xeO mUA -nBR -hlK +eLB +uYi hjW -iWW +ieA xeO fSz lIv lIv xFP sov -eXr -eXr -yls -ssD -yls -ssD -iSi -hbC -iSi -hbC -hbC -hbC -hbC -hbC -ssD -hPW -lNg -lNg -lNg -lNg -hPW -vrN -dUZ -dUZ -dUZ +uGI +uGI +paI +tsc +paI +tsc +bEk +ogf +bEk +ogf +ogf +ogf +ogf +ogf +tsc +vmt +aeo +aeo +aeo +aeo +vmt +mvF +kkU +kkU +kkU iBP vcf vcf lku mzT -hbC -ogo +ogf +fWI bce cAW cAW @@ -88986,7 +89891,7 @@ bQM bQM bQM bQM -gEU +bmT bQM bQM bQM @@ -88994,10 +89899,9 @@ bQM vzB gws vzB -iJf -bYS -wJf -xeO +qaL +czf +ehy xeO xeO xeO @@ -89008,6 +89912,7 @@ xeO xeO xeO xeO +dYp xeO xeO xeO @@ -89018,10 +89923,10 @@ xeO xeO xeO xeO -sLo -hlK -hKI -iWW +oGR +uYi +nGZ +ieA xeO xeO xeO @@ -89198,7 +90103,7 @@ bQM bQM bQM bQM -gEU +bmT bQM bQM bQM @@ -89206,9 +90111,9 @@ bQM vzB gws vzB -iJf -bYS -jCp +qaL +czf +aTe xeO xeO xeO @@ -89230,48 +90135,48 @@ xeO xeO xeO xeO -pAN -hlK +rrD +uYi hjW -iWW +ieA xeO bym uKx uKx xew vem -eXr -eXr -yls -ssD -yls -ssD -iSi -hbC +uGI +uGI +paI +tsc +paI +tsc +bEk +ogf xDq naf naf cqz -bFj -hbC -ssD -hPW -lNg -lNg -lNg -lNg -hPW -vrN -dUZ -dUZ -dUZ -hbC -dUZ -hbC -hbC -hbC -hbC -cbb +cQv +ogf +tsc +vmt +aeo +aeo +aeo +aeo +vmt +mvF +kkU +kkU +kkU +ogf +kkU +ogf +ogf +ogf +ogf +mRM cAW bce bce @@ -89410,7 +90315,7 @@ cAW bQM bQM bQM -gEU +bmT bQM bQM bQM @@ -89418,9 +90323,9 @@ bQM vzB gws vzB -iJf -bYS -hHh +qaL +czf +tgK xeO xeO xeO @@ -89442,10 +90347,10 @@ xeO xeO xeO xeO -aVK -hlK +cfG +uYi hjW -iWW +ieA xeO lpl jVE @@ -89483,7 +90388,7 @@ bQM bQM bQM bQM -gEU +bmT cAW cAW bce @@ -89622,7 +90527,7 @@ cAW bQM bQM bQM -gEU +bmT bQM bQM bQM @@ -89630,9 +90535,9 @@ bQM vzB gws vzB -iJf -bYS -owG +qaL +czf +uNs xeO xeO xeO @@ -89654,48 +90559,48 @@ xeO xeO xeO xeO -rPu -hlK +jKz +uYi hjW -iWW +ieA xeO fSz lIv lIv xFP sov -eXr -eXr -yls -ssD -yls -ssD -iSi -hbC +uGI +uGI +paI +tsc +paI +tsc +bEk +ogf iBP vcf vcf lku -bOz -hbC -ssD -hPW -lNg -lNg -lNg -lNg -hPW -vrN -dUZ -dUZ -dUZ -hbC -dUZ -hbC -hbC -hbC -hbC -ogo +vev +ogf +tsc +vmt +aeo +aeo +aeo +aeo +vmt +mvF +kkU +kkU +kkU +ogf +kkU +ogf +ogf +ogf +ogf +fWI cAW cAW bce @@ -89834,20 +90739,19 @@ cAW bQM bQM bQM -qvn -hbC -hbC -hbC -hbC -ssD -iSi -ssD -tPi -oSK -wJf +qmv +ogf +ogf +ogf +ogf +tsc +bEk +tsc +dxc +pqY +ehy doA xeO -cCx xeO xeO xeO @@ -89863,21 +90767,22 @@ xeO xeO xeO xeO -cCx xeO xeO -lGh -hlK -hKI -iWW +xeO +xeO +kIh +uYi +nGZ +ieA giX giX giX giX giX giX -qHC -qHC +fDJ +fDJ scM scM xkv @@ -90054,11 +90959,11 @@ bQM vzB gws vzB -iJf -hKI -jCp +qaL +nGZ +aTe iOa -xeO +cCx xeO xeO xeO @@ -90076,42 +90981,42 @@ xeO xeO xeO xeO -xeO +cCx iOa -pAN -hlK -hKI -hKI -qyc -eps -tbs -eps -mYZ -hKI -hKI -hKI +rrD +uYi +nGZ +nGZ +fBD +rFw +joU +rFw +pCG +nGZ +nGZ +nGZ lnK -jUK -qVt -jUK +bcp +akZ +bcp scM xdE xdE xdE xdE scM -mli -qVt -atm +jZk +akZ +lOe lnK -jeh -bnK -bnK -qjC +uFs +hqb +hqb +nuX lnK -jGd -ctz -voa +vJL +eZi +qKx scM scM cAW @@ -90266,65 +91171,65 @@ bQM vzB gws vzB -iJf -hKI -hsA -tZV -lYA -wfp -xjw -tZV -lYA -wfp -xjw -tZV -lYA -wfp -xjw -tZV -lYA -wfp -xjw -tZV -lYA -wfp -xjw -tZV -hsA -hlK -sEi -ltV -hKI -hKI +qaL +nGZ +lqI +laz +dDI +vrA +hTh +laz +dDI +vrA +hTh +laz +dDI +vrA +hTh +laz +dDI +vrA +hTh +laz +dDI +vrA +hTh +laz +lqI +uYi +dnX +tIW +nGZ +nGZ kdR hjW -hKI +nGZ hjW hjW -hKI -vfR -ydX -hDL +nGZ +eVj +sYB +oTP qQl -jTk -kmB -kmB -kmB -hiu -kmB -iXL -ydX -hDL -bbT -iXL +ekb +tuA +tuA +tuA +fQa +tuA +ssb +sYB +oTP +qDq +ssb qQl qQl -iXL -jTk -sbj -jGj -uqp -jTk +ssb +ekb +epY +hrl +jBv +ekb xdE cAW cAW @@ -90478,65 +91383,65 @@ bQM lRT lRT lRT -utV -dlW -dlW -dlW -dlW -dlW -dlW -dlW -dlW -dlW -dlW -dlW -dlW -dlW -otB -dlW -dlW -dlW -dlW -dlW -dlW -dlW -dlW -dlW -dlW -uxY -qHC -hlK -sEi -sEi -sEi -sEi -sEi -sEi -sEi -sEi -fXe -inh -ydX -hDL -iXL -ydX -ydX -bUH -bUH -bUH -ydX -hDL -pGi -jTk +rbI +cUd +cUd +cUd +cUd +cUd +cUd +cUd +cUd +cUd +cUd +cUd +cUd +cUd +ipV +cUd +cUd +cUd +cUd +cUd +cUd +cUd +cUd +cUd +cUd +ncb +fDJ +uYi +dnX +dnX +dnX +dnX +dnX +dnX +dnX +dnX +qes +rRo +sYB +oTP +ssb +sYB +sYB +eot +eot +eot +sYB +oTP +hZi +ekb qQl -ydX -vlT +sYB +xmV qQl -jTk -ydX -bUH -jlW -iXL +ekb +sYB +eot +nMg +ssb xdE bce bce @@ -90690,65 +91595,65 @@ bQM lRT lRT lRT -pCF -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -hKI -iJf -qHC -qHC -hlK -dlW -dlW -dlW -dlW -dlW -dlW -dlW -dlW -bHl -inh -gFq -nes -iXL -gFq -gFq -pEw -pEw -pEw -gFq -nes -pGi -jTk +jiq +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +nGZ +qaL +fDJ +fDJ +uYi +cUd +cUd +cUd +cUd +cUd +cUd +cUd +cUd +jYU +rRo +aic +ckr +ssb +aic +aic +xZA +xZA +xZA +aic +ckr +hZi +ekb qQl -gFq -nes +aic +ckr qQl -jTk -gFq -pEw -nes -iXL +ekb +aic +xZA +ckr +ssb xdE cAW bce @@ -90902,65 +91807,65 @@ bQM bQM bQM lRT -hKI -hKI +nGZ +nGZ hjW hjW -hKI -krG -udY -cmI -eJq -pGf -cXq -klG -aHA -rTb -dKI -rTb -rTb -oLB +nGZ +oyk +wzK +wbL +rSN +mGN +prG +cpv +sjd +cEb +nFJ +cEb +cEb +hjC iUO iUO iUO iUO iUO -jmO -jyK -dlW -dlW -uxY -hKI -hKI +wzT +bxy +cUd +cUd +ncb +nGZ +nGZ hjW hjW -hKI +nGZ hjW hjW -hKI -nhd -gFq -nes +nGZ +fWs +aic +ckr qQl -jTk -tBy -tBy -tBy -tBy -tBy -rOa -gFq -nes -jTk -iXL +ekb +csL +csL +csL +csL +csL +sZt +aic +ckr +ekb +ssb qQl qQl -iXL -jTk -sbj -jGj -uqp -jTk +ssb +ekb +epY +hrl +jBv +ekb xdE cAW cAW @@ -91114,12 +92019,12 @@ bQM bQM bQM lRT -hKI -hKI +nGZ +nGZ hjW hjW -hKI -ycj +nGZ +vwx xeO xeO xeO @@ -91134,26 +92039,26 @@ xeO mUA xeO xeO -cXm -uXm +xfb +yat xeO -cvr -hKI -hKI -lmM -hKI -hKI -lmM -hKI -hKI -lmM -hKI -hKI -qDD +oIg +nGZ +nGZ +rJW +nGZ +nGZ +rJW +nGZ +nGZ +rJW +nGZ +nGZ +tpw lnK -iVb -dIK -iJM +mVn +gHo +nwS scM xdE xdE @@ -91161,17 +92066,17 @@ xdE xdE scM scM -jUK -jUK -jTk -jTk -jTk -jTk -jTk +bcp +bcp +ekb +ekb +ekb +ekb +ekb lnK -jGd -iXL -voa +vJL +ssb +qKx scM scM bce @@ -91327,30 +92232,30 @@ bQM bQM lRT lRT -gDP -hKI -hKI -hKI -ycj +ntZ +nGZ +nGZ +nGZ +vwx bym uKx uKx -tke -tke -yls -yls -yls -tHU +rcl +rcl +paI +paI +paI +dRx xeO sTd xeO mUA xeO -gqZ -ybY +cAU +uyp xeO vUf -hKI +nGZ lRT lRT atl @@ -91373,13 +92278,13 @@ pcu iWq bQM scM -sws -dBR -mss -tBy -tBy -tBy -gaL +aOC +dKB +gmp +csL +csL +csL +uLq scM scM scM @@ -91542,8 +92447,8 @@ lRT lRT lRT lRT -fLr -ycj +hTo +vwx lpl jVE vzn @@ -91552,17 +92457,17 @@ xeO xeO mUA xeO -rUr +fxa bHv ylu xeO xeO xeO -awx +mQB aTE xeO -yaz -hKI +aRv +nGZ lRT lRT xDw @@ -91585,8 +92490,8 @@ pcu iWq bQM scM -laP -imn +eNv +lFM scM xdE xdE @@ -91754,27 +92659,27 @@ bQM bQM bQM xDw -oQz -ycj +oEN +vwx fSz lIv lIv xFP sov -yls -yls -yls -qDc +paI +paI +paI +eeH dFM sov xeO xeO xeO -dIp -oDn +fCW +myf xeO -wqM -hKI +tOP +nGZ xDw bQM bQM @@ -91967,7 +92872,7 @@ bQM bQM lRT lRT -tvM +piw tFA tFA tFA @@ -91985,7 +92890,7 @@ tFA tFA tFA tFA -koV +nnG lRT lRT bQM diff --git a/maps/map_files/FOP_v3_Sciannex/sprinkles/20.poolparty.dmm b/maps/map_files/FOP_v3_Sciannex/sprinkles/20.poolparty.dmm index 22c8cb543d98..34dc51f305fb 100644 --- a/maps/map_files/FOP_v3_Sciannex/sprinkles/20.poolparty.dmm +++ b/maps/map_files/FOP_v3_Sciannex/sprinkles/20.poolparty.dmm @@ -553,7 +553,7 @@ dir = 4; pixel_y = 24 }, -/obj/item/toy/plushie_cade{ +/obj/item/toy/plush/barricade{ pixel_x = 1; pixel_y = -9 }, @@ -731,7 +731,7 @@ dir = 8; pixel_y = 24 }, -/obj/item/toy/plushie_cade{ +/obj/item/toy/plush/barricade{ pixel_x = -3; pixel_y = -9 }, @@ -763,7 +763,7 @@ pixel_y = 5; layer = 3.1 }, -/obj/item/toy/farwadoll{ +/obj/item/toy/plush/farwa{ pixel_x = -5; pixel_y = 4 }, @@ -847,7 +847,7 @@ /area/template_noop) "FD" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/toy/therapy_blue{ +/obj/item/toy/plush/therapy/blue{ pixel_y = 4 }, /obj/item/reagent_container/food/drinks/bottle/whiskey{ @@ -1271,7 +1271,7 @@ dir = 4; pixel_y = 24 }, -/obj/item/toy/plushie_cade{ +/obj/item/toy/plush/barricade{ pixel_x = 1; pixel_y = -9 }, @@ -1452,7 +1452,7 @@ dir = 8; pixel_y = 24 }, -/obj/item/toy/plushie_cade{ +/obj/item/toy/plush/barricade{ pixel_x = -1; pixel_y = -9 }, diff --git a/maps/map_files/FOP_v3_Sciannex/sprinkles/20.yardbasketball.dmm b/maps/map_files/FOP_v3_Sciannex/sprinkles/20.yardbasketball.dmm new file mode 100644 index 000000000000..6662ebf081f0 --- /dev/null +++ b/maps/map_files/FOP_v3_Sciannex/sprinkles/20.yardbasketball.dmm @@ -0,0 +1,337 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/wood, +/area/template_noop) +"b" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/wood, +/area/template_noop) +"d" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/turf/open/floor/wood, +/area/template_noop) +"e" = ( +/obj/item/trash/cigbutt{ + pixel_x = 5; + pixel_y = -6 + }, +/turf/open/floor/wood, +/area/template_noop) +"f" = ( +/obj/effect/landmark/corpsespawner/ua_riot, +/obj/effect/decal/cleanable/blood, +/obj/item/handcuffs/zip{ + pixel_y = -12 + }, +/turf/open/floor/wood, +/area/template_noop) +"g" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NS-center" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/wood, +/area/template_noop) +"i" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/turf/open/floor/wood, +/area/template_noop) +"j" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/turf/open/floor/wood, +/area/template_noop) +"k" = ( +/obj/item/ammo_casing{ + dir = 6; + icon_state = "casing_10_1" + }, +/turf/open/floor/wood, +/area/template_noop) +"l" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/turf/open/floor/wood, +/area/template_noop) +"n" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NS-center" + }, +/turf/open/floor/wood, +/area/template_noop) +"p" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/turf/open/floor/wood, +/area/template_noop) +"r" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NS-center" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/turf/open/floor/wood, +/area/template_noop) +"s" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/turf/open/floor/wood, +/area/template_noop) +"u" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/item/spacecash/c100{ + pixel_x = -11; + pixel_y = -6 + }, +/turf/open/floor/wood, +/area/template_noop) +"w" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/item/trash/barcardine, +/turf/open/floor/wood, +/area/template_noop) +"x" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/wood, +/area/template_noop) +"C" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NS-center" + }, +/obj/effect/decal/warning_stripes, +/turf/open/floor/wood, +/area/template_noop) +"G" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/wood, +/area/template_noop) +"H" = ( +/obj/item/trash/chunk, +/turf/open/floor/wood, +/area/template_noop) +"J" = ( +/obj/item/weapon/gun/smg/mac15{ + pixel_x = 12 + }, +/turf/open/floor/wood, +/area/template_noop) +"L" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/wood, +/area/template_noop) +"M" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/obj/effect/decal/warning_stripes, +/obj/structure/holohoop{ + dir = 8 + }, +/turf/open/floor/wood, +/area/template_noop) +"Q" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/turf/open/floor/wood, +/area/template_noop) +"R" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes, +/obj/structure/holohoop{ + dir = 4 + }, +/turf/open/floor/wood, +/area/template_noop) +"S" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/turf/open/floor/wood, +/area/template_noop) +"T" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, +/turf/open/floor/wood, +/area/template_noop) +"U" = ( +/obj/item/ammo_magazine/smg/uzi{ + current_rounds = 0; + pixel_x = 5; + pixel_y = 12 + }, +/turf/open/floor/wood, +/area/template_noop) +"W" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/wood, +/area/template_noop) +"Y" = ( +/turf/open/floor/wood, +/area/template_noop) +"Z" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NS-center" + }, +/obj/effect/decal/warning_stripes, +/obj/item/toy/beach_ball/holoball, +/turf/open/floor/wood, +/area/template_noop) + +(1,1,1) = {" +Q +G +R +G +a +"} +(2,1,1) = {" +w +s +Y +Y +l +"} +(3,1,1) = {" +s +d +C +T +S +"} +(4,1,1) = {" +s +Y +Y +Y +L +"} +(5,1,1) = {" +s +Y +Y +H +L +"} +(6,1,1) = {" +s +Y +e +Y +L +"} +(7,1,1) = {" +r +n +Z +n +g +"} +(8,1,1) = {" +s +J +U +Y +L +"} +(9,1,1) = {" +s +k +W +Y +L +"} +(10,1,1) = {" +u +f +Y +Y +L +"} +(11,1,1) = {" +p +b +C +G +i +"} +(12,1,1) = {" +s +Y +Y +Y +L +"} +(13,1,1) = {" +d +j +M +j +x +"} diff --git a/maps/map_files/FOP_v3_Sciannex/sprinkles/30.repairpanelslz.dmm b/maps/map_files/FOP_v3_Sciannex/sprinkles/30.repairpanelslz.dmm index 8fd994654199..d2ac75d644c7 100644 --- a/maps/map_files/FOP_v3_Sciannex/sprinkles/30.repairpanelslz.dmm +++ b/maps/map_files/FOP_v3_Sciannex/sprinkles/30.repairpanelslz.dmm @@ -170,7 +170,7 @@ }, /area/template_noop) "H" = ( -/obj/structure/reagent_dispensers/oxygentank, +/obj/structure/reagent_dispensers/fueltank/oxygentank, /turf/open/space, /area/template_noop) "I" = ( diff --git a/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm b/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm index df2c3e618917..6d99a9dc0f70 100644 --- a/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm +++ b/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm @@ -853,7 +853,6 @@ dir = 4 }, /obj/structure/machinery/door/airlock/almayer/secure/colony{ - locked = 0; name = "Colony Requesitions Storage Pod" }, /turf/open/floor/plating/icefloor, @@ -1333,7 +1332,6 @@ "aeC" = ( /obj/structure/machinery/door/airlock{ id_tag = "st_5"; - locked = 0; name = "Storage Unit"; req_one_access_txt = "100;101;102;103" }, @@ -11961,7 +11959,6 @@ "aHB" = ( /obj/structure/machinery/door/airlock/almayer/secure/colony{ id = "st_17"; - locked = 0; name = "Power Storage Unit" }, /turf/open/floor{ @@ -12406,7 +12403,6 @@ /obj/structure/machinery/door/airlock/almayer/secure/colony{ dir = 2; id = "st_18"; - locked = 0; name = "Disposals Storage Unit" }, /turf/open/floor{ @@ -13697,7 +13693,6 @@ /obj/structure/machinery/door/airlock/almayer/secure/colony{ dir = 2; id = "st_19"; - locked = 0; name = "Research Storage Unit" }, /turf/open/floor{ @@ -13859,7 +13854,7 @@ /turf/open/floor/wood, /area/ice_colony/surface/bar/bar) "aOC" = ( -/obj/item/weapon/gun/shotgun/double/with_stock, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /obj/effect/decal/cleanable/blood{ icon_state = "gib6" }, @@ -14261,7 +14256,7 @@ /area/ice_colony/surface/bar/bar) "aPy" = ( /obj/structure/surface/table/woodentable, -/obj/structure/machinery/chem_dispenser/beer, +/obj/structure/machinery/chem_dispenser/soda/beer, /obj/structure/machinery/alarm{ dir = 1; pixel_y = -24 @@ -14545,7 +14540,6 @@ "aQm" = ( /obj/structure/machinery/door/airlock/almayer/secure/colony{ id = "research_entrance"; - locked = 0; name = "Omicron Research Dome" }, /obj/structure/pipes/standard/simple/hidden/green{ @@ -14611,23 +14605,17 @@ /obj/structure/shuttle/diagonal{ icon_state = "swall_f9" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aQC" = ( /obj/structure/computerframe, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aQD" = ( /obj/structure/shuttle/diagonal{ icon_state = "swall_f5" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aQE" = ( /obj/structure/disposalpipe/segment{ @@ -14691,23 +14679,17 @@ /obj/structure/shuttle/diagonal{ icon_state = "swall_f9" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aQL" = ( /obj/structure/computerframe, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aQM" = ( /obj/structure/shuttle/diagonal{ icon_state = "swall_f5" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aQN" = ( /obj/effect/decal/cleanable/blood/oil, @@ -14951,17 +14933,13 @@ /area/ice_colony/surface/hangar/alpha) "aRz" = ( /obj/structure/machinery/light, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aRA" = ( /obj/structure/bed/chair{ dir = 1 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aRB" = ( /obj/structure/machinery/light{ @@ -14986,25 +14964,19 @@ /area/ice_colony/surface/hangar/beta) "aRF" = ( /obj/structure/machinery/light, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aRG" = ( /obj/structure/bed/chair{ dir = 1 }, /obj/effect/landmark/survivor_spawner, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aRH" = ( /obj/structure/machinery/light, /obj/item/weapon/gun/pistol/holdout, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aRI" = ( /obj/structure/surface/table, @@ -15241,9 +15213,7 @@ /area/ice_colony/surface/hangar/alpha) "aSi" = ( /obj/structure/machinery/door/unpowered/shuttle, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aSj" = ( /turf/closed/shuttle{ @@ -15285,9 +15255,7 @@ /area/ice_colony/surface/hangar/beta) "aSr" = ( /obj/structure/machinery/door/unpowered/shuttle, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aSs" = ( /turf/closed/shuttle{ @@ -15528,14 +15496,10 @@ /obj/structure/bed/chair{ dir = 4 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aSV" = ( -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aSW" = ( /obj/structure/machinery/light{ @@ -15544,9 +15508,7 @@ /obj/structure/bed/chair{ dir = 8 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aSY" = ( /obj/structure/machinery/light{ @@ -15555,14 +15517,10 @@ /obj/structure/bed/chair{ dir = 4 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aSZ" = ( -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aTa" = ( /obj/structure/machinery/light{ @@ -15571,9 +15529,7 @@ /obj/structure/bed/chair{ dir = 8 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aTb" = ( /turf/open/floor{ @@ -15749,33 +15705,25 @@ /obj/structure/bed/chair{ dir = 4 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aTA" = ( /obj/structure/bed/chair{ dir = 8 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aTD" = ( /obj/structure/bed/chair{ dir = 4 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aTE" = ( /obj/structure/bed/chair{ dir = 8 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aTH" = ( /obj/structure/machinery/power/apc{ @@ -16123,9 +16071,7 @@ pixel_x = 6; pixel_y = -4 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aUN" = ( /obj/structure/ice/thin/end{ @@ -16582,17 +16528,13 @@ /obj/structure/shuttle/diagonal{ icon_state = "swall_f10" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aWd" = ( /obj/structure/shuttle/diagonal{ icon_state = "swall_f6" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aWe" = ( /obj/structure/shuttle/diagonal{ @@ -16652,17 +16594,13 @@ /obj/structure/shuttle/diagonal{ icon_state = "swall_f10" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aWm" = ( /obj/structure/shuttle/diagonal{ icon_state = "swall_f6" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aWn" = ( /obj/structure/shuttle/diagonal{ @@ -16687,12 +16625,6 @@ "aWp" = ( /turf/open/floor/plating, /area/ice_colony/exterior/surface/landing_pad) -"aWq" = ( -/obj/docking_port/stationary/marine_dropship/lz1{ - name = "Hangar Landing Zone" - }, -/turf/open/floor/plating, -/area/ice_colony/exterior/surface/landing_pad) "aWr" = ( /obj/structure/machinery/landinglight/ds1/delayone{ dir = 4 @@ -19683,7 +19615,6 @@ /area/ice_colony/underground/maintenance/north) "bgR" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony{ - locked = 0; name = "\improper Underground Maintenance" }, /turf/open/floor/plating, @@ -19850,12 +19781,6 @@ icon_state = "dark2" }, /area/ice_colony/underground/requesition/lobby) -"bhs" = ( -/obj/docking_port/stationary/marine_dropship/lz2, -/turf/open/floor/plating/icefloor{ - icon_state = "warnplate" - }, -/area/ice_colony/underground/hangar) "bht" = ( /turf/open/floor/plating/icefloor{ icon_state = "warnplate" @@ -20414,7 +20339,6 @@ "bjz" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony{ dir = 1; - locked = 0; name = "\improper Underground Maintenance"; req_access_txt = "100" }, @@ -23743,7 +23667,6 @@ /obj/structure/machinery/door/airlock/almayer/secure/colony{ dir = 2; id = "engine_electrical_maintenance"; - locked = 0; name = "Underground Power Substation" }, /turf/open/floor{ @@ -24982,7 +24905,6 @@ /obj/structure/machinery/door/airlock/almayer/secure/colony{ dir = 2; id = "engine_electrical_maintenance"; - locked = 0; name = "Underground Power Substation" }, /turf/open/floor/plating, @@ -26856,7 +26778,7 @@ /area/ice_colony/underground/storage/highsec) "bCS" = ( /obj/structure/safe, -/obj/item/weapon/katana/replica, +/obj/item/weapon/sword/katana/replica, /obj/item/reagent_container/food/drinks/bottle/absinthe, /turf/open/floor{ dir = 1; @@ -27970,7 +27892,7 @@ /area/ice_colony/surface/bar/canteen) "bFZ" = ( /obj/structure/surface/table/reinforced, -/obj/item/toy/farwadoll, +/obj/item/toy/plush/farwa, /turf/open/floor{ icon_state = "darkblue2" }, @@ -28121,7 +28043,6 @@ /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/airlock/almayer/secure/colony{ dir = 2; - locked = 0; name = "Underground Secure Technical Storage" }, /turf/open/floor{ @@ -34506,6 +34427,10 @@ icon_state = "dark2" }, /area/ice_colony/surface/research) +"cEG" = ( +/obj/docking_port/stationary/marine_dropship/lz2, +/turf/open/floor/plating/icefloor, +/area/ice_colony/underground/hangar) "cVM" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -34910,6 +34835,12 @@ icon_state = "darkbrown2" }, /area/ice_colony/surface/hangar/alpha) +"sto" = ( +/obj/docking_port/stationary/marine_dropship/lz1{ + name = "LZ1: Hangar Landing Zone" + }, +/turf/open/floor/plating, +/area/ice_colony/exterior/surface/landing_pad) "sKH" = ( /obj/structure/surface/table, /obj/item/device/analyzer, @@ -52476,7 +52407,7 @@ aZW bcy bbc aZW -bhs +bht bhG bht aZW @@ -53594,7 +53525,7 @@ aZW aZW aZW aZW -aZW +cEG aZW aZW aZW @@ -89400,7 +89331,7 @@ aWp aWp aWp aWQ -aWq +aWp bbl aUP aUP @@ -90518,7 +90449,7 @@ aWp aWp aWp aWp -aWp +sto aWp aWp aWp diff --git a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm index ffe690c84baa..2ed8035a7972 100644 --- a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm +++ b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm @@ -17,10 +17,6 @@ /obj/structure/girder, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/colony/medseceng) -"aaf" = ( -/obj/item/lightstick/planted, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/cp_s_research) "aag" = ( /obj/structure/bed/chair{ dir = 4 @@ -113,29 +109,20 @@ /turf/open/auto_turf/ice/layer1, /area/shiva/exterior/cp_lz2) "aat" = ( -/obj/structure/ice/thin/single{ - opacity = 1; - unacidable = 0 +/obj/item/tool/shovel/snow{ + pixel_y = 8 }, -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) +/obj/item/tool/shovel/snow, +/obj/structure/surface/rack, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "aau" = ( /obj/effect/spider/stickyweb, /turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) +/area/shiva/interior/caves/cp_camp) "aav" = ( -/obj/effect/spider/stickyweb{ - icon_state = "stickyweb2" - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) -"aaw" = ( -/obj/effect/spider/cocoon{ - icon_state = "cocoon_large2" - }, /turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) +/area/shiva/exterior/telecomm/lz1_north) "aax" = ( /obj/structure/prop/ice_colony/surveying_device{ layer = 3.01; @@ -176,10 +163,6 @@ }, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/right_spiders) -"aaE" = ( -/mob/living/simple_animal/hostile/giant_spider/nurse, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) "aaF" = ( /obj/structure/platform/strata{ dir = 4 @@ -226,10 +209,6 @@ /obj/item/tool/pickaxe/drill, /turf/open/auto_turf/ice/layer1, /area/shiva/exterior/cp_colony_grounds) -"aaL" = ( -/obj/effect/spider/cocoon, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) "aaM" = ( /obj/structure/platform/strata{ dir = 4 @@ -247,10 +226,6 @@ /obj/item/explosive/plastic, /turf/open/auto_turf/ice/layer1, /area/shiva/exterior/cp_colony_grounds) -"aaP" = ( -/mob/living/simple_animal/hostile/giant_spider/hunter, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) "aaQ" = ( /obj/effect/spider/stickyweb, /obj/item/clothing/head/helmet/marine/sof, @@ -272,12 +247,6 @@ }, /turf/open/auto_turf/ice/layer1, /area/shiva/exterior/cp_lz2) -"aaU" = ( -/obj/effect/spider/cocoon{ - icon_state = "cocoon_large3" - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) "aaV" = ( /obj/effect/spider/stickyweb, /obj/effect/spider/cocoon{ @@ -301,7 +270,7 @@ "aaZ" = ( /obj/structure/fence, /turf/open/auto_turf/ice/layer1, -/area/shiva/interior/warehouse/caves) +/area/shiva/interior/caves/research_caves) "aba" = ( /obj/item/device/flashlight/lamp/tripod/grey, /turf/open/auto_turf/snow/layer3, @@ -455,7 +424,7 @@ /area/shiva/exterior/cp_lz2) "abv" = ( /obj/structure/prop/ice_colony/surveying_device, -/turf/open/auto_turf/ice/layer1, +/turf/open/auto_turf/snow/layer1, /area/shiva/interior/caves/cp_camp) "abw" = ( /obj/item/lightstick/red/spoke/planted{ @@ -493,20 +462,6 @@ }, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) -"abC" = ( -/mob/living/simple_animal/hostile/giant_spider/nurse, -/obj/effect/spider/stickyweb{ - icon_state = "stickyweb2" - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) -"abD" = ( -/obj/effect/spider/cocoon, -/obj/effect/spider/stickyweb{ - icon_state = "stickyweb2" - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) "abE" = ( /obj/effect/landmark/hunter_primary, /turf/open/auto_turf/ice/layer1, @@ -521,11 +476,6 @@ /obj/effect/landmark/hunter_secondary, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) -"abI" = ( -/obj/effect/spider/stickyweb, -/obj/item/device/flashlight/lamp/tripod/grey, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) "abJ" = ( /turf/open/shuttle/elevator/grating, /area/shiva/interior/colony/research_hab) @@ -535,11 +485,6 @@ }, /turf/open/auto_turf/ice/layer2, /area/shiva/interior/caves/right_spiders) -"abL" = ( -/obj/effect/spider/cocoon, -/obj/effect/spider/stickyweb, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) "abM" = ( /turf/closed/shuttle/elevator{ dir = 1 @@ -549,25 +494,6 @@ /obj/effect/spider/stickyweb, /turf/open/auto_turf/ice/layer0, /area/shiva/interior/caves/right_spiders) -"abO" = ( -/obj/effect/spider/cocoon{ - icon_state = "cocoon_large3" - }, -/obj/effect/spider/stickyweb{ - icon_state = "stickyweb2" - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) -"abP" = ( -/obj/structure/prop/ice_colony/surveying_device{ - dir = 4 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) -"abQ" = ( -/obj/structure/prop/ice_colony/surveying_device/measuring_device, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "abR" = ( /obj/structure/flora/grass/tallgrass/ice, /obj/structure/flora/bush/ausbushes/lavendergrass, @@ -579,12 +505,6 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_lz2) -"abT" = ( -/obj/structure/tunnel{ - id = "north_research_tunnel" - }, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "abU" = ( /obj/structure/flora/grass/tallgrass/ice/corner{ dir = 1 @@ -631,7 +551,7 @@ "abZ" = ( /obj/item/lightstick/planted, /turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "aca" = ( /obj/item/tank/oxygen, /obj/item/tank/oxygen, @@ -649,17 +569,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/colony/research_hab) -"acc" = ( -/obj/item/tool/shovel/spade{ - pixel_x = -3; - pixel_y = -3 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) -"acd" = ( -/obj/structure/machinery/space_heater, -/turf/open/auto_turf/ice/layer1, -/area/shiva/exterior/research_alley) "ace" = ( /turf/closed/shuttle/elevator/gears, /area/shiva/interior/colony/central) @@ -809,16 +718,6 @@ "acL" = ( /turf/closed/shuttle/elevator/arrivals, /area/shiva/interior/colony/central) -"acM" = ( -/mob/living/simple_animal/hostile/retaliate/clown{ - desc = "Uh oh, looks like Gonzo got blocked by a cave-in. How is he gonna get out of this one?"; - health = 10000; - move_to_delay = 2; - name = "Gonzo the Magnificent"; - rapid = 1 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/oob/dev_room) "acN" = ( /obj/structure/machinery/door/airlock/almayer/security/glass/colony{ name = "\improper Underground Security Interrogation"; @@ -826,12 +725,6 @@ }, /turf/open/floor/plating, /area/shiva/interior/colony/medseceng) -"acO" = ( -/obj/effect/decal/hefa_cult_decals/d96{ - desc = "Original map by Infernus, remapped by Triiodine." - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/oob/dev_room) "acP" = ( /obj/effect/landmark/xeno_spawn, /turf/open/auto_turf/ice/layer1, @@ -895,7 +788,6 @@ /area/shiva/interior/garage) "adp" = ( /obj/structure/closet/secure_closet/engineering_personal, -/obj/item/weapon/banhammer, /turf/open/floor/shiva{ dir = 1 }, @@ -1554,7 +1446,7 @@ "agy" = ( /obj/item/lightstick/planted, /turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "agz" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor{ @@ -1701,13 +1593,6 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) -"ahB" = ( -/obj/structure/machinery/light/double{ - dir = 8; - pixel_y = -5 - }, -/turf/open/floor/shiva, -/area/shiva/interior/colony/research_hab) "ahC" = ( /obj/structure/flora/bush/snow{ icon_state = "snowgrassbb_2" @@ -2116,9 +2001,8 @@ /turf/open/floor/plating, /area/shiva/interior/colony/medseceng) "ajy" = ( -/obj/structure/machinery/colony_floodlight, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/cp_s_research) +/turf/open/floor/shiva, +/area/shiva/interior/caves/cp_camp) "ajD" = ( /obj/structure/machinery/vending/snack, /turf/open/floor/shiva{ @@ -2231,7 +2115,7 @@ "akf" = ( /obj/item/lightstick/red/planted, /turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "akh" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/shiva{ @@ -2262,6 +2146,7 @@ /obj/structure/barricade/snow{ dir = 4 }, +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard/fortbiceps) "akr" = ( @@ -2742,16 +2627,6 @@ icon_state = "bluefull" }, /area/shiva/interior/colony/n_admin) -"ano" = ( -/obj/structure/closet/toolcloset, -/obj/structure/machinery/light/double{ - dir = 4; - pixel_y = -5 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/shiva/interior/aerodrome) "anq" = ( /obj/structure/toilet, /turf/open/floor/plating, @@ -3527,10 +3402,6 @@ }, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/cp_lz2) -"asC" = ( -/obj/structure/fence, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "asE" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 5 @@ -3706,10 +3577,6 @@ }, /turf/open/auto_turf/ice/layer0, /area/shiva/interior/caves/cp_camp) -"atJ" = ( -/obj/structure/flora/tree/dead/tree_3, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "atK" = ( /obj/structure/fence, /turf/open/auto_turf/snow/layer1, @@ -3960,6 +3827,10 @@ }, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_lz2) +"awP" = ( +/obj/item/lightstick/red/variant/planted, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "awY" = ( /obj/structure/flora/grass/tallgrass/ice, /obj/structure/flora/bush/ausbushes/lavendergrass{ @@ -4231,6 +4102,10 @@ icon_state = "yellowcorners" }, /area/shiva/interior/garage) +"ayz" = ( +/obj/structure/fence, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) "ayB" = ( /obj/structure/surface/table, /obj/item/device/flashlight, @@ -4254,12 +4129,6 @@ /obj/item/clothing/shoes/snow, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/cp_lz2) -"ayJ" = ( -/obj/structure/prop/invuln/ice_prefab/standalone{ - icon_state = "white" - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/research_alley) "ayK" = ( /obj/structure/prop/invuln/ice_prefab, /turf/open/auto_turf/snow/layer0, @@ -5180,10 +5049,6 @@ icon_state = "floor3" }, /area/shiva/interior/bar) -"aHz" = ( -/obj/structure/flora/tree/dead/tree_1, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "aHB" = ( /obj/structure/flora/bush/snow{ icon_state = "snowgrassbb_1" @@ -5220,19 +5085,12 @@ /obj/item/weapon/wirerod, /turf/open/shuttle/elevator/grating, /area/shiva/interior/aerodrome) -"aIO" = ( -/turf/closed/wall/shiva/prefabricated/red, -/area/shiva/interior/oob) "aJc" = ( /obj/structure/largecrate/random/mini/med, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/shiva/interior/valley_huts/no2) -"aJd" = ( -/obj/structure/surface/table/reinforced/prison, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "aJe" = ( /obj/effect/spawner/random/toolbox, /obj/effect/landmark/crap_item, @@ -5297,12 +5155,6 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) -"aJR" = ( -/obj/structure/flora/bush/snow{ - icon_state = "snowgrassgb_2" - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) "aJU" = ( /obj/structure/bed/chair/office/light{ dir = 8 @@ -5313,9 +5165,6 @@ /obj/structure/prop/invuln/ice_prefab/standalone/trim{ icon_state = "pink_trim" }, -/obj/structure/machinery/portable_atmospherics/powered/scrubber{ - icon_state = "psiphon:1" - }, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/valley) "aKn" = ( @@ -5324,18 +5173,6 @@ }, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/valley) -"aKo" = ( -/obj/structure/surface/rack, -/obj/item/ammo_rcd{ - pixel_x = -4 - }, -/obj/item/ammo_rcd{ - pixel_x = 4 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/shiva/interior/caves/cp_camp) "aKp" = ( /obj/effect/decal/cleanable/blood, /turf/open/auto_turf/snow/layer3, @@ -5347,33 +5184,12 @@ }, /turf/open/floor/plating, /area/shiva/interior/colony/medseceng) -"aKr" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_sn_full_cap" - }, -/turf/open/auto_turf/snow/layer0, -/area/shiva/interior/bar) "aKv" = ( /obj/item/stack/folding_barricade, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/shiva/interior/colony/s_admin) -"aKA" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" - }, -/turf/open/auto_turf/snow/layer0, -/area/shiva/interior/bar) -"aKD" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_sn_full_cap" - }, -/turf/open/auto_turf/snow/layer0, -/area/shiva/interior/bar) "aKJ" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1; @@ -5393,15 +5209,6 @@ }, /turf/open/floor/plating, /area/shiva/interior/aerodrome) -"aKP" = ( -/obj/structure/platform/strata{ - dir = 1 - }, -/obj/structure/platform/strata{ - dir = 4 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/lz1_valley) "aKQ" = ( /obj/structure/machinery/computer/cameras, /obj/structure/surface/table/reinforced/prison, @@ -5499,24 +5306,11 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/junkyard/cp_bar) -"aMk" = ( -/obj/effect/decal/cleanable/blood{ - dir = 4; - icon_state = "gib6" - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/junkyard/cp_bar) "aMl" = ( /obj/effect/landmark/corpsespawner/engineer, /obj/effect/decal/cleanable/blood, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard/cp_bar) -"aMn" = ( -/obj/structure/platform/strata{ - dir = 4 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/lz1_valley) "aMs" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -5551,16 +5345,6 @@ icon_state = "floor3" }, /area/shiva/interior/colony/central) -"aMy" = ( -/obj/structure/machinery/space_heater, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "snow_mat" - }, -/area/shiva/interior/caves/cp_camp) "aMz" = ( /obj/structure/machinery/smartfridge{ density = 0; @@ -5649,13 +5433,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) -"aMZ" = ( -/obj/structure/machinery/power/port_gen/pacman, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/cp_s_research) "aNb" = ( /obj/structure/safe, /obj/item/spacecash/c1000{ @@ -5786,27 +5563,11 @@ /obj/structure/machinery/colony_floodlight, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_colony_grounds) -"aOk" = ( -/obj/structure/prop/invuln/ice_prefab/standalone/trim{ - icon_state = "pink_trim" - }, -/turf/open/auto_turf/snow/layer4, -/area/shiva/exterior/valley) -"aOl" = ( -/obj/structure/prop/invuln/ice_prefab/roof_greeble{ - dir = 1 - }, -/turf/open/auto_turf/snow/layer4, -/area/shiva/exterior/valley) "aOo" = ( /obj/item/dogtag, /obj/effect/decal/cleanable/blood, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/bar) -"aOp" = ( -/obj/item/tool/shovel/snow, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/valley) "aOu" = ( /turf/closed/wall/shiva/ice, /area/shiva/interior/caves/medseceng_caves) @@ -5925,15 +5686,6 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/central) -"aPX" = ( -/obj/structure/prop/invuln/ice_prefab/trim{ - dir = 4 - }, -/obj/structure/prop/invuln/ice_prefab/roof_greeble{ - dir = 1 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "aQb" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/shiva{ @@ -5947,19 +5699,6 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) -"aQh" = ( -/obj/item/lightstick/red/spoke/planted{ - layer = 2.99; - pixel_x = -13; - pixel_y = 28 - }, -/obj/structure/largecrate/random/mini/small_case/b, -/obj/structure/largecrate/random/mini/small_case{ - pixel_x = 14; - pixel_y = -3 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) "aQi" = ( /obj/structure/largecrate/random/barrel/red, /turf/open/auto_turf/snow/layer2, @@ -6004,7 +5743,7 @@ /turf/open/floor/plating, /area/shiva/interior/colony/s_admin) "aRc" = ( -/obj/structure/machinery/chem_dispenser/beer{ +/obj/structure/machinery/chem_dispenser/soda/beer{ pixel_y = 8 }, /obj/structure/surface/table/reinforced/prison, @@ -6021,20 +5760,6 @@ /obj/item/stool, /turf/open/floor/shiva, /area/shiva/interior/bar) -"aRo" = ( -/obj/structure/largecrate/random/mini/med{ - pixel_x = -7; - pixel_y = 9 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/valley) -"aRp" = ( -/obj/structure/prop/invuln/ice_prefab/standalone/trim{ - icon_state = "pink_trim" - }, -/obj/structure/prop/invuln/ice_prefab/roof_greeble, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) "aRs" = ( /obj/structure/closet/radiation, /obj/structure/machinery/light/double{ @@ -6121,25 +5846,6 @@ /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/shiva, /area/shiva/interior/aerodrome) -"aSC" = ( -/obj/item/lightstick/red/spoke/planted{ - layer = 3.1; - pixel_x = -13; - pixel_y = 25 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/research_alley) -"aSF" = ( -/obj/item/reagent_container/glass/bucket{ - pixel_x = 8; - pixel_y = -8 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) -"aSG" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) "aSI" = ( /obj/structure/closet/radiation, /turf/open/floor/shiva{ @@ -6186,7 +5892,7 @@ name = "\improper Anti-Freeze Lounge" }, /turf/open/floor/plating, -/area/shiva/interior/bar) +/area/shiva/exterior/cp_s_research) "aSX" = ( /obj/structure/largecrate/random/mini/ammo, /turf/open/floor/plating, @@ -6233,52 +5939,10 @@ /obj/effect/spawner/random/tool, /turf/open/floor/shiva, /area/shiva/interior/aerodrome) -"aTr" = ( -/obj/item/tool/shovel/snow{ - pixel_y = 8 - }, -/obj/item/tool/shovel/snow, -/obj/structure/surface/rack, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) -"aTt" = ( -/obj/item/lightstick/red/variant/planted{ - pixel_x = 11; - pixel_y = 11 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) -"aTw" = ( -/obj/structure/prop/ice_colony/soil_net, -/obj/item/tool/shovel/spade{ - layer = 2.99; - pixel_x = -9; - pixel_y = -11 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) "aTE" = ( /obj/structure/largecrate/random/barrel, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/s_lz2) -"aTH" = ( -/obj/item/reagent_container/glass/bucket{ - pixel_x = 9; - pixel_y = 8 - }, -/obj/structure/largecrate/random/case, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/valley) -"aTL" = ( -/obj/structure/largecrate/random/case{ - pixel_y = 11 - }, -/obj/structure/largecrate/random/mini/chest/b{ - pixel_x = -4; - pixel_y = -5 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/valley) "aTO" = ( /obj/item/stack/rods, /turf/open/asphalt/cement, @@ -6357,9 +6021,7 @@ /obj/structure/bed/chair/dropship/pilot{ dir = 1 }, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "aUz" = ( /turf/closed/shuttle/ert{ @@ -6368,9 +6030,7 @@ /area/shiva/interior/aerodrome) "aUA" = ( /obj/structure/girder/reinforced, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "aUM" = ( /turf/open/floor/shiva{ @@ -6378,21 +6038,6 @@ icon_state = "green" }, /area/shiva/interior/colony/botany) -"aUP" = ( -/obj/structure/surface/rack, -/obj/item/stack/cable_coil/blue, -/obj/item/stack/cable_coil/orange{ - pixel_y = 6 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) -"aUQ" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = 12; - pixel_y = 25 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/research_alley) "aUS" = ( /obj/structure/machinery/disposal, /turf/open/floor/shiva{ @@ -6510,9 +6155,7 @@ icon_state = "equip_base"; name = "shuttle attachment point" }, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "aVF" = ( /obj/structure/surface/table, @@ -6524,15 +6167,11 @@ }, /area/shiva/interior/colony/medseceng) "aVL" = ( -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "aVM" = ( /obj/item/weapon/gun/pistol/holdout, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "aVN" = ( /turf/closed/shuttle/ert{ @@ -6579,17 +6218,8 @@ /area/shiva/interior/aerodrome) "aVU" = ( /obj/item/stack/sheet/metal, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) -"aVW" = ( -/obj/item/lightstick/red/variant/planted{ - pixel_x = -7; - pixel_y = -5 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) "aWb" = ( /obj/structure/foamed_metal, /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, @@ -6651,16 +6281,6 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) -"aWG" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -11; - pixel_y = 20 - }, -/obj/structure/flora/grass/tallgrass/ice/corner{ - dir = 4 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/junkyard) "aWH" = ( /obj/structure/flora/grass/tallgrass/ice/corner{ dir = 4 @@ -6678,18 +6298,14 @@ }, /area/shiva/interior/aerodrome) "aWS" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin14" - }, +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_left_to_right, /area/shiva/interior/aerodrome) "aWT" = ( /obj/item/ammo_magazine/pistol/holdout{ pixel_x = 6; pixel_y = -4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin14" - }, +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_left_to_right, /area/shiva/interior/aerodrome) "aWU" = ( /turf/closed/shuttle/ert{ @@ -6818,28 +6434,6 @@ opacity = 0 }, /area/shiva/interior/aerodrome) -"aYf" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/bed/chair/dropship/passenger{ - dir = 4 - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shiva/interior/aerodrome) -"aYg" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/bed/chair/dropship/passenger{ - dir = 8 - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shiva/interior/aerodrome) "aYx" = ( /turf/closed/shuttle/ert{ icon_state = "rightengine_3" @@ -6849,10 +6443,6 @@ /obj/structure/window_frame/shiva, /turf/open/floor/plating, /area/shiva/interior/aerodrome) -"aYF" = ( -/obj/item/stack/rods, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) "aYU" = ( /obj/structure/machinery/computer/arcade, /turf/open/floor/shiva{ @@ -6956,9 +6546,6 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/bar) -"bax" = ( -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/research_alley) "baN" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/tool/pen/blue{ @@ -6995,17 +6582,13 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_up_to_down, /area/shiva/interior/aerodrome) "bbg" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_up_to_down, /area/shiva/interior/aerodrome) "bbh" = ( /turf/closed/shuttle/ert{ @@ -7025,12 +6608,6 @@ /obj/item/stack/rods, /turf/open/floor/plating, /area/shiva/interior/aerodrome) -"bbt" = ( -/obj/item/shard{ - icon_state = "medium" - }, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/valley) "bbw" = ( /obj/structure/barricade/handrail/strata{ dir = 8 @@ -7040,12 +6617,6 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/deck) -"bbF" = ( -/obj/structure/platform/strata{ - dir = 8 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) "bbG" = ( /obj/structure/ice/thin/indestructible{ dir = 4; @@ -7103,33 +6674,11 @@ }, /turf/open/gm/river, /area/shiva/interior/warehouse/caves) -"bdk" = ( -/obj/structure/bed/chair/dropship/passenger{ - dir = 4 - }, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shiva/interior/aerodrome) "bdT" = ( /turf/open/floor/shiva{ icon_state = "radiator_tile2" }, /area/shiva/interior/colony/medseceng) -"bea" = ( -/obj/structure/bed/chair/dropship/passenger{ - dir = 8 - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shiva/interior/aerodrome) "ben" = ( /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/telecomm/lz1_north) @@ -7188,10 +6737,6 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) -"bfB" = ( -/obj/effect/spawner/random/tool, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/valley) "bfL" = ( /obj/structure/largecrate/random/mini/wooden, /turf/open/auto_turf/snow/layer2, @@ -7227,7 +6772,7 @@ icon_state = "snowgrassall_1" }, /turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "bhI" = ( /turf/open/floor/shiva{ dir = 6; @@ -7283,6 +6828,10 @@ }, /turf/open/floor/plating, /area/shiva/interior/colony/central) +"bkK" = ( +/obj/structure/inflatable/popped, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "bkP" = ( /obj/effect/spider/cocoon{ icon_state = "cocoon_large2" @@ -7301,6 +6850,10 @@ icon_state = "green" }, /area/shiva/interior/colony/botany) +"bme" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/ice/layer1, +/area/shiva/exterior/valley) "bmg" = ( /obj/structure/machinery/space_heater, /turf/open/auto_turf/snow/layer2, @@ -7340,12 +6893,6 @@ /obj/structure/bed/chair, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/junkyard) -"boz" = ( -/obj/structure/flora/grass/tallgrass/ice/corner{ - dir = 8 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/lz1_valley) "boA" = ( /obj/item/tool/crowbar, /turf/open/auto_turf/snow/layer1, @@ -7358,12 +6905,6 @@ /obj/docking_port/stationary/marine_dropship/lz1, /turf/open/floor/plating, /area/shiva/exterior/lz1_valley) -"boS" = ( -/obj/structure/flora/bush/snow{ - icon_state = "snowgrassbb_3" - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/cp_s_research) "boT" = ( /obj/structure/largecrate/random/mini/wooden{ pixel_y = 6 @@ -7389,9 +6930,7 @@ /area/shiva/interior/colony/research_hab) "bqN" = ( /obj/structure/machinery/door/airlock/almayer/generic, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "bqO" = ( /obj/effect/decal/cleanable/blood, @@ -7618,10 +7157,14 @@ /obj/structure/largecrate/random/barrel, /turf/open/floor/plating, /area/shiva/interior/colony/central) -"bBT" = ( -/obj/structure/inflatable/popped, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/research_alley) +"bCr" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/shuttle/dropship/flight/lz1, +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/turf/open/floor/plating, +/area/shiva/exterior/lz1_valley) "bDx" = ( /obj/item/reagent_container/food/drinks/flask/vacuumflask, /turf/open/floor/shiva, @@ -7661,16 +7204,6 @@ }, /turf/open/floor/plating, /area/shiva/interior/aerodrome) -"bGk" = ( -/obj/item/stack/rods, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/valley) -"bGx" = ( -/obj/item/shard{ - icon_state = "medium" - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) "bGU" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 9 @@ -7828,9 +7361,7 @@ /area/shiva/interior/lz2_habs) "bOh" = ( /obj/effect/landmark/survivor_spawner, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "bPu" = ( /obj/item/bodybag, @@ -7869,16 +7400,6 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) -"bQX" = ( -/obj/structure/prop/ice_colony/poly_kevlon_roll{ - pixel_y = 21 - }, -/obj/structure/prop/ice_colony/poly_kevlon_roll{ - pixel_x = -7; - pixel_y = 13 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "bQZ" = ( /turf/closed/wall/shiva/prefabricated/reinforced/hull, /area/shiva/interior/caves/s_lz2) @@ -7891,7 +7412,7 @@ "bRU" = ( /obj/structure/flora/tree/dead/tree_5, /turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "bSB" = ( /obj/structure/prop/invuln{ desc = "big pile energy."; @@ -8037,9 +7558,7 @@ /obj/structure/machinery/light{ dir = 8 }, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "bYS" = ( /obj/structure/machinery/light/double, @@ -8047,6 +7566,16 @@ icon_state = "red" }, /area/shiva/interior/colony/central) +"bYV" = ( +/obj/structure/machinery/disposal, +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/aerodrome) "bZZ" = ( /obj/effect/landmark/objective_landmark/far, /turf/open/floor/shiva{ @@ -8066,9 +7595,7 @@ /obj/structure/machinery/light{ dir = 4 }, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "cbt" = ( /obj/structure/surface/table, @@ -8089,6 +7616,10 @@ dir = 1 }, /area/shiva/interior/colony/s_admin) +"cbG" = ( +/obj/effect/spawner/random/tool, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "cbW" = ( /obj/structure/largecrate/random/mini/med, /turf/open/floor/plating, @@ -8106,6 +7637,13 @@ /obj/structure/prop/invuln/ice_prefab/standalone, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) +"ccT" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 12; + pixel_y = 25 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/cp_s_research) "cdh" = ( /obj/structure/fence, /turf/open/auto_turf/snow/layer2, @@ -8170,6 +7708,13 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/research_hab) +"cid" = ( +/obj/structure/platform/strata{ + dir = 4 + }, +/obj/structure/platform/strata, +/turf/open/gm/river, +/area/shiva/exterior/cp_s_research) "cio" = ( /turf/open/floor/shiva{ icon_state = "floor3" @@ -8200,9 +7745,7 @@ /area/shiva/interior/colony/research_hab) "clp" = ( /obj/item/tool/weldingtool, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "clz" = ( /obj/structure/machinery/cm_vending/sorted/tech/comp_storage{ @@ -8213,9 +7756,6 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) -"clK" = ( -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) "cnb" = ( /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/telecomm/lz2_northeast) @@ -8273,6 +7813,13 @@ icon_state = "red" }, /area/shiva/interior/colony/medseceng) +"cps" = ( +/obj/effect/decal/cleanable/blood{ + dir = 4; + icon_state = "gib6" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "cpC" = ( /obj/item/lightstick/red/variant/planted, /turf/open/auto_turf/snow/layer1, @@ -8399,10 +7946,6 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/botany) -"cyW" = ( -/obj/structure/girder, -/turf/open/auto_turf/snow/layer1, -/area/shiva/interior/caves/cp_camp) "czf" = ( /obj/structure/flora/bush/snow{ icon_state = "snowgrassall_1" @@ -8441,10 +7984,6 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) -"cBs" = ( -/obj/structure/machinery/cell_charger, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) "cBB" = ( /obj/item/clothing/shoes/snow, /obj/structure/surface/rack, @@ -8483,16 +8022,6 @@ /obj/structure/machinery/vending/cigarette, /turf/open/floor/shiva, /area/shiva/interior/bar) -"cBU" = ( -/turf/open/auto_turf/snow/layer1, -/area/shiva/interior/caves/research_caves) -"cBX" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -16; - pixel_y = -3 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "cCI" = ( /turf/open/floor/shiva{ dir = 8; @@ -8517,10 +8046,6 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) -"cEV" = ( -/obj/structure/inflatable, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "cFa" = ( /obj/structure/machinery/light/double{ dir = 4; @@ -8594,10 +8119,26 @@ }, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_lz2) +"cIs" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 2.99; + pixel_x = 12; + pixel_y = 28 + }, +/turf/closed/wall/shiva/ice, +/area/shiva/interior/caves/cp_camp) "cIV" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/research_caves) +/area/shiva/interior/warehouse/caves) +"cIZ" = ( +/obj/structure/surface/rack, +/obj/item/stack/cable_coil/blue, +/obj/item/stack/cable_coil/orange{ + pixel_y = 6 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "cJy" = ( /obj/structure/surface/table, /turf/open/floor/shiva{ @@ -8762,8 +8303,6 @@ "cSn" = ( /obj/structure/closet/secure_closet/guncabinet, /obj/item/weapon/gun/rifle/m41aMK1, -/obj/item/ammo_magazine/rifle/m41aMK1/toxin, -/obj/item/ammo_magazine/rifle/m41aMK1/toxin, /obj/item/ammo_magazine/rifle/m41aMK1, /obj/item/ammo_magazine/rifle/m41aMK1, /obj/item/ammo_magazine/rifle/m41aMK1, @@ -8794,6 +8333,13 @@ icon_state = "bluecorners" }, /area/shiva/interior/colony/central) +"cTU" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/turf/open/floor/plating, +/area/shiva/exterior/lz1_valley) "cTY" = ( /obj/item/ammo_magazine/flamer_tank, /turf/open/floor/shiva{ @@ -8872,6 +8418,15 @@ /obj/structure/prop/ice_colony/surveying_device, /turf/open/auto_turf/snow/layer2, /area/shiva/interior/caves/cp_camp) +"cXU" = ( +/obj/structure/platform/strata{ + dir = 1 + }, +/obj/structure/platform/strata{ + dir = 4 + }, +/turf/open/gm/river, +/area/shiva/exterior/cp_s_research) "cYa" = ( /turf/open/floor/shiva{ dir = 8; @@ -8967,11 +8522,19 @@ "daD" = ( /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard/cp_bar) +"dbv" = ( +/obj/structure/largecrate/random/case, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/aerodrome) "dbH" = ( /turf/closed/shuttle/ert{ icon_state = "stan1" }, /area/shiva/interior/aerodrome) +"dbO" = ( +/obj/structure/prop/invuln/ice_prefab/standalone, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "dbQ" = ( /obj/structure/bed/chair/office/light{ dir = 8 @@ -8980,6 +8543,17 @@ icon_state = "wredfull" }, /area/shiva/interior/colony/medseceng) +"dcn" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 2.99; + pixel_x = -13; + pixel_y = 28 + }, +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + dir = 1 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "dcu" = ( /obj/structure/flora/tree/dead/tree_4, /turf/open/auto_turf/snow/layer2, @@ -8999,12 +8573,6 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) -"ddA" = ( -/obj/structure/flora/bush/snow{ - icon_state = "snowgrassbb_1" - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) "dex" = ( /obj/structure/machinery/photocopier, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, @@ -9041,10 +8609,6 @@ /obj/vehicle/train/cargo/engine, /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/junkyard/cp_bar) -"dhx" = ( -/obj/item/device/binoculars/civ, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/research_caves) "diL" = ( /obj/structure/machinery/light/double{ dir = 1; @@ -9133,6 +8697,11 @@ /obj/structure/window/reinforced, /turf/open/floor/wood, /area/shiva/interior/colony/central) +"dnj" = ( +/obj/structure/surface/rack, +/obj/item/tool/shovel/snow, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) "dnv" = ( /obj/structure/prop/invuln/minecart_tracks/bumper{ dir = 5 @@ -9191,6 +8760,11 @@ /obj/item/device/flashlight/lamp, /turf/open/floor/carpet, /area/shiva/interior/colony/central) +"dro" = ( +/obj/structure/platform/strata, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/cp_s_research) "drx" = ( /obj/structure/bed/chair/comfy/black{ dir = 4 @@ -9311,7 +8885,7 @@ "dyt" = ( /obj/vehicle/train/cargo/trolley, /turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "dze" = ( /obj/effect/decal/warning_stripes{ icon_state = "W-corner" @@ -9364,14 +8938,10 @@ icon_state = "stan2" }, /area/shiva/interior/aerodrome) -"dCY" = ( -/obj/structure/ice/thin/single{ - opacity = 1; - unacidable = 0 - }, -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/auto_turf/ice/layer2, -/area/shiva/interior/caves/left_spiders) +"dDj" = ( +/obj/item/tool/shovel/snow, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "dDo" = ( /obj/structure/machinery/landinglight/ds1/spoke, /turf/open/floor/shiva{ @@ -9400,12 +8970,6 @@ dir = 1 }, /area/shiva/interior/colony/central) -"dHr" = ( -/obj/structure/flora/bush/snow{ - icon_state = "snowgrassall_3" - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) "dIF" = ( /obj/structure/machinery/photocopier, /turf/open/floor/shiva{ @@ -9537,13 +9101,8 @@ }, /area/shiva/interior/colony/n_admin) "dRb" = ( -/turf/closed/wall/shiva/ice, -/area/shiva/interior/caves/left_spiders) -"dRi" = ( -/obj/structure/prop/invuln/ice_prefab{ - dir = 10 - }, -/turf/open/auto_turf/ice/layer1, +/obj/structure/fence, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "dTj" = ( /obj/structure/machinery/space_heater, @@ -9644,10 +9203,6 @@ "dYp" = ( /turf/closed/wall/shiva/ice, /area/shiva/interior/bar) -"dYw" = ( -/obj/structure/machinery/defenses/sentry/premade, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/junkyard) "dZb" = ( /obj/structure/closet/secure_closet/guncabinet, /obj/structure/machinery/firealarm{ @@ -9706,12 +9261,6 @@ icon_state = "floor3" }, /area/shiva/interior/colony/research_hab) -"eaB" = ( -/obj/structure/platform/strata{ - dir = 4 - }, -/turf/open/auto_turf/snow/layer4, -/area/shiva/exterior/lz1_valley) "ebK" = ( /obj/structure/fence, /turf/open/auto_turf/snow/layer2, @@ -9735,9 +9284,15 @@ icon_state = "floor3" }, /area/shiva/interior/colony/botany) +"ecx" = ( +/obj/structure/largecrate/random, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/caves/cp_camp) "ecz" = ( /obj/structure/barricade/handrail/wire, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "ecZ" = ( /turf/open/floor/shiva{ @@ -9787,10 +9342,8 @@ }, /turf/open/floor/wood, /area/shiva/interior/colony/botany) -"ehe" = ( -/obj/effect/landmark/nightmare{ - insert_tag = "labs-entrance" - }, +"ehO" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/closed/wall/shiva/prefabricated/blue, /area/shiva/interior/colony/research_hab) "ehV" = ( @@ -9828,6 +9381,13 @@ /obj/structure/largecrate/random/case/double, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) +"elf" = ( +/obj/item/reagent_container/glass/bucket{ + pixel_x = 8; + pixel_y = -8 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "eln" = ( /obj/structure/surface/table, /obj/item/book/manual/engineering_guide{ @@ -9880,9 +9440,6 @@ /obj/structure/prop/invuln/ice_prefab, /turf/open/auto_turf/ice/layer0, /area/shiva/exterior/cp_lz2) -"enh" = ( -/turf/open/auto_turf/ice/layer1, -/area/shiva/exterior/research_alley) "eni" = ( /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_lz2) @@ -10145,13 +9702,6 @@ icon_state = "floor3" }, /area/shiva/interior/colony/research_hab) -"eGe" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/plating, -/area/shiva/exterior/lz1_valley) "eGq" = ( /obj/structure/platform/strata, /obj/structure/platform/strata{ @@ -10197,9 +9747,7 @@ /area/shiva/interior/colony/n_admin) "eHL" = ( /obj/item/tool/wrench, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "eHY" = ( /obj/item/lightstick/red/spoke/planted{ @@ -10238,17 +9786,6 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) -"eKp" = ( -/obj/item/reagent_container/glass/bucket{ - pixel_x = 8; - pixel_y = -8 - }, -/obj/item/reagent_container/glass/bucket{ - pixel_x = -2; - pixel_y = -8 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "eKY" = ( /obj/structure/closet/radiation, /obj/effect/landmark/crap_item, @@ -10266,11 +9803,6 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_lz2) -"eMx" = ( -/obj/structure/surface/rack, -/obj/item/tool/lighter/zippo, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) "eNr" = ( /obj/structure/bed, /obj/effect/landmark/corpsespawner/prisoner, @@ -10356,11 +9888,14 @@ icon_state = "floor3" }, /area/shiva/interior/colony/research_hab) -"eSc" = ( -/obj/structure/surface/rack, -/obj/item/tool/pickaxe/plasmacutter, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) +"eSf" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 2.99; + pixel_x = 12; + pixel_y = 28 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "eSt" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/shiva{ @@ -10382,6 +9917,12 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_colony_grounds) +"eUn" = ( +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + dir = 1 + }, +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/caves/cp_camp) "eUT" = ( /turf/closed/wall/shiva/prefabricated/white, /area/shiva/exterior/cp_lz2) @@ -10412,6 +9953,10 @@ icon_state = "snow_mat" }, /area/shiva/exterior/cp_lz2) +"eWl" = ( +/obj/structure/inflatable/popped, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/cp_s_research) "eWn" = ( /obj/structure/machinery/iv_drip, /turf/open/floor/shiva{ @@ -10436,6 +9981,10 @@ }, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/cp_lz2) +"eXQ" = ( +/obj/structure/inflatable/popped, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "eYH" = ( /turf/closed/wall/shiva/prefabricated/reinforced/hull, /area/shiva/exterior/cp_lz2) @@ -10468,17 +10017,6 @@ /obj/effect/landmark/ert_spawns/groundside_xeno, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/medseceng_caves) -"faR" = ( -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 8; - pixel_y = -9 - }, -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 5; - pixel_y = 10 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "faT" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 8; @@ -10486,20 +10024,6 @@ }, /turf/open/auto_turf/ice/layer0, /area/shiva/exterior/cp_lz2) -"faW" = ( -/obj/structure/prop/ice_colony/poly_kevlon_roll{ - dir = 1 - }, -/obj/structure/prop/ice_colony/poly_kevlon_roll{ - dir = 1; - pixel_y = 5 - }, -/obj/structure/prop/ice_colony/poly_kevlon_roll{ - dir = 1; - pixel_y = 10 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "fbf" = ( /obj/effect/decal/cleanable/blood/oil/streak, /obj/effect/decal/cleanable/dirt, @@ -10513,6 +10037,11 @@ icon_state = "floor3" }, /area/shiva/interior/colony/botany) +"fbS" = ( +/obj/structure/flora/grass/tallgrass/ice/corner, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "fcq" = ( /obj/structure/closet/coffin, /obj/effect/landmark/objective_landmark/close, @@ -10615,10 +10144,6 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/research_hab) -"fiy" = ( -/obj/docking_port/stationary/marine_dropship/lz2, -/turf/open/floor/plating, -/area/shiva/exterior/lz2_fortress) "fiK" = ( /turf/open/floor/wood, /area/shiva/interior/colony/botany) @@ -10640,9 +10165,6 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/colony/medseceng) -"fjv" = ( -/turf/open/auto_turf/snow/layer4, -/area/shiva/interior/caves/research_caves) "fjI" = ( /obj/structure/surface/table, /obj/item/storage/firstaid/o2, @@ -10725,13 +10247,20 @@ /obj/effect/landmark/objective_landmark/science, /turf/open/floor/wood, /area/shiva/interior/colony/botany) +"fmo" = ( +/obj/structure/platform/strata{ + dir = 4 + }, +/obj/structure/platform/strata, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) "fnw" = ( /obj/structure/stairs/perspective/ice{ dir = 1; icon_state = "p_stair_full" }, /turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/lz1_valley) +/area/shiva/interior/caves/research_caves) "fnx" = ( /turf/open/floor/shiva{ dir = 8; @@ -10756,17 +10285,15 @@ name = "shuttle attachment point" }, /obj/item/storage/firstaid/fire, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) -"fqb" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = 12; - pixel_y = 25 +"fpF" = ( +/obj/structure/stairs/perspective/ice{ + dir = 8; + icon_state = "p_stair_sn_full_cap" }, /turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) +/area/shiva/interior/warehouse/caves) "fqJ" = ( /obj/structure/bed/chair/office/dark{ dir = 1 @@ -10866,7 +10393,7 @@ "fxy" = ( /obj/item/lightstick/variant/planted, /turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "fxJ" = ( /obj/structure/surface/table, /obj/item/clipboard{ @@ -10927,6 +10454,10 @@ icon_state = "greenfull" }, /area/shiva/interior/colony/n_admin) +"fBA" = ( +/obj/structure/machinery/space_heater, +/turf/open/auto_turf/ice/layer1, +/area/shiva/exterior/cp_s_research) "fBJ" = ( /obj/structure/surface/table/woodentable, /obj/item/paper_bin, @@ -10952,6 +10483,10 @@ dir = 1 }, /area/shiva/interior/colony/botany) +"fDH" = ( +/obj/structure/machinery/colony_floodlight, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/junkyard) "fEf" = ( /obj/structure/machinery/vending/snack, /turf/open/floor/shiva{ @@ -11051,7 +10586,7 @@ "fHx" = ( /obj/vehicle/train/cargo/engine, /turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "fHH" = ( /obj/item/stack/sheet/metal, /turf/open/floor/shiva{ @@ -11155,6 +10690,21 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) +"fLk" = ( +/obj/item/clothing/shoes/snow, +/obj/structure/surface/rack, +/obj/item/clothing/shoes/snow, +/obj/item/clothing/suit/storage/snow_suit, +/obj/item/clothing/suit/storage/snow_suit, +/obj/item/tank/emergency_oxygen/engi, +/obj/effect/decal/strata_decals/grime/grime3{ + dir = 8 + }, +/obj/item/clothing/mask/rebreather, +/obj/item/tank/emergency_oxygen/engi, +/obj/item/clothing/mask/rebreather, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/colony/research_hab) "fLz" = ( /obj/structure/machinery/landinglight/ds2{ dir = 4 @@ -11199,10 +10749,25 @@ /obj/structure/bed/chair/office/dark, /turf/open/floor/carpet, /area/shiva/interior/colony/medseceng) +"fNf" = ( +/obj/structure/platform/strata{ + dir = 8 + }, +/obj/structure/platform/strata{ + dir = 1 + }, +/turf/open/gm/river, +/area/shiva/interior/warehouse/caves) "fNE" = ( /obj/structure/window/framed/shiva, /turf/open/floor/plating, /area/shiva/interior/colony/research_hab) +"fOa" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -11 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "fOE" = ( /obj/item/ammo_magazine/rifle/boltaction, /turf/open/floor/shiva{ @@ -11268,23 +10833,32 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/botany) -"fSR" = ( -/turf/open/floor/shiva, -/area/shiva/interior/caves/research_caves) "fTX" = ( /obj/structure/machinery/space_heater, /turf/open/floor/shiva{ dir = 1 }, /area/shiva/interior/bar) +"fUP" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "bluefull" + }, +/area/shiva/interior/aerodrome) "fUZ" = ( /obj/item/lightstick/red/planted, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard/cp_bar) -"fVl" = ( -/obj/structure/largecrate/random, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/cp_s_research) +"fVq" = ( +/obj/structure/prop/invuln/ice_prefab/standalone{ + icon_state = "pink" + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "fVw" = ( /obj/structure/prop/ice_colony/dense/planter_box/hydro{ density = 0 @@ -11323,14 +10897,31 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) +"fXp" = ( +/obj/structure/prop/invuln{ + desc = "The mounting points are ground down from heavy use. They'll need some maintenance work before they can be used again."; + icon = 'icons/obj/structures/props/almayer_props.dmi'; + icon_state = "equip_base"; + name = "shuttle attachment point" + }, +/obj/effect/landmark/objective_landmark/close, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/shuttle/can_surgery/black, +/area/shiva/interior/aerodrome) +"fXr" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 3.1; + pixel_x = -13; + pixel_y = 25 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "fXB" = ( /obj/structure/largecrate/random/case/double, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) -"fXQ" = ( -/obj/structure/largecrate/random/case, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "fXX" = ( /turf/open/floor/plating, /area/shiva/interior/caves/research_caves) @@ -11472,29 +11063,11 @@ /obj/item/stack/rods, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/warehouse) -"ggv" = ( -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 5; - pixel_y = -9 - }, -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 6; - pixel_y = 10 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "ggC" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/obj/structure/bed/chair{ - dir = 4; - pixel_y = 4 - }, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "snow_mat" +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 11 }, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "ggL" = ( /obj/structure/inflatable/popped, @@ -11531,6 +11104,9 @@ icon_state = "redfull" }, /area/shiva/interior/colony/research_hab) +"gik" = ( +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/aerodrome) "giH" = ( /obj/structure/machinery/door/airlock/almayer/security/glass/colony, /turf/open/floor/plating, @@ -11603,6 +11179,9 @@ dir = 8 }, /area/shiva/interior/colony/central) +"goe" = ( +/turf/open/auto_turf/ice/layer2, +/area/shiva/interior/aerodrome) "goh" = ( /obj/effect/decal/cleanable/blood{ icon_state = "gib6" @@ -11627,6 +11206,13 @@ /obj/structure/machinery/space_heater, /turf/open/floor/plating, /area/shiva/interior/colony/research_hab) +"gpj" = ( +/obj/item/lightstick/red/variant/planted{ + pixel_x = -7; + pixel_y = -5 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "gpn" = ( /obj/structure/largecrate/random/case, /turf/open/floor/shiva{ @@ -11636,6 +11222,17 @@ "gpz" = ( /turf/open/auto_turf/ice/layer0, /area/shiva/interior/caves/research_caves) +"gpF" = ( +/obj/structure/largecrate/random/case/double, +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "bluefull" + }, +/area/shiva/interior/aerodrome) "gpS" = ( /obj/structure/flora/bush/snow{ icon_state = "snowgrassbb_3" @@ -11681,6 +11278,16 @@ dir = 1 }, /area/shiva/interior/caves/s_lz2) +"grk" = ( +/obj/structure/platform/strata{ + dir = 8 + }, +/obj/structure/stairs/perspective/ice{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/warehouse/caves) "gso" = ( /obj/structure/platform/strata, /turf/open/gm/river, @@ -11746,12 +11353,16 @@ dir = 1 }, /area/shiva/interior/lz2_habs) +"guH" = ( +/obj/structure/prop/ice_colony/surveying_device, +/turf/open/auto_turf/ice/layer0, +/area/shiva/exterior/cp_s_research) "gva" = ( /obj/structure/prop/ice_colony/ground_wire{ dir = 8 }, /obj/item/lightstick/planted, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "gvz" = ( /turf/open/floor{ @@ -11764,12 +11375,6 @@ }, /turf/open/auto_turf/snow/layer3, /area/shiva/interior/colony/medseceng) -"gvY" = ( -/obj/structure/prop/ice_colony/surveying_device{ - dir = 1 - }, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "gwq" = ( /obj/structure/bed/chair/comfy/blue, /turf/open/floor/shiva{ @@ -11894,6 +11499,12 @@ }, /turf/closed/wall/shiva/ice, /area/shiva/interior/caves/cp_camp) +"gEn" = ( +/obj/structure/machinery/portable_atmospherics/powered/scrubber{ + icon_state = "psiphon:1" + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "gFb" = ( /obj/structure/surface/table, /obj/structure/window{ @@ -11998,28 +11609,19 @@ }, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) -"gJk" = ( -/obj/structure/platform/strata{ - dir = 4 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/lz1_valley) "gJo" = ( /turf/open/auto_turf/ice/layer1, /area/shiva/exterior/junkyard/cp_bar) +"gJF" = ( +/obj/item/lightstick/red/variant/planted, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "gJI" = ( /obj/structure/surface/rack, /obj/item/stack/cable_coil, /obj/item/tool/crowbar, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_lz2) -"gKf" = ( -/obj/structure/machinery/light/double{ - dir = 8; - pixel_y = -5 - }, -/turf/open/floor/shiva, -/area/shiva/interior/bar) "gKE" = ( /obj/structure/surface/table, /obj/item/stock_parts/matter_bin{ @@ -12135,6 +11737,16 @@ dir = 10 }, /area/shiva/interior/aerodrome) +"gQK" = ( +/obj/structure/platform/strata{ + dir = 8 + }, +/obj/structure/platform/strata{ + dir = 4 + }, +/obj/structure/platform/strata, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) "gQL" = ( /obj/structure/closet/cabinet, /obj/item/clothing/under/darkred, @@ -12264,6 +11876,10 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) +"gXu" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "gXS" = ( /turf/open/auto_turf/ice/layer1, /area/shiva/interior/colony/medseceng) @@ -12290,6 +11906,14 @@ /obj/item/lightstick/red/planted, /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/cp_colony_grounds) +"gZi" = ( +/obj/structure/closet/toolcloset, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) +"gZk" = ( +/obj/effect/landmark/hunter_primary, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/caves/cp_camp) "gZG" = ( /obj/structure/machinery/door/airlock/almayer/medical/colony{ dir = 2; @@ -12315,6 +11939,13 @@ /obj/structure/platform/strata, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/oob/dev_room) +"hbp" = ( +/obj/structure/stairs/perspective/ice{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/snow/layer4, +/area/shiva/exterior/junkyard) "hbu" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/snacks/flour{ @@ -12332,7 +11963,7 @@ /area/shiva/interior/warehouse/caves) "hbD" = ( /obj/structure/flora/grass/tallgrass/ice/corner{ - dir = 10 + dir = 6 }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/lz1_valley) @@ -12348,6 +11979,16 @@ icon_state = "floor3" }, /area/shiva/interior/colony/research_hab) +"hfw" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "redfull" + }, +/area/shiva/interior/colony/research_hab) "hfN" = ( /obj/structure/surface/table, /turf/open/floor/shiva{ @@ -12369,6 +12010,18 @@ /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor/plating/plating_catwalk/shiva, /area/shiva/interior/telecomm/lz1_biceps) +"hhT" = ( +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/lz1_valley) +"hic" = ( +/obj/structure/platform_decoration/strata{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/lz1_valley) "hif" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -12384,6 +12037,13 @@ /obj/structure/machinery/disposal, /turf/open/floor/wood, /area/shiva/interior/colony/central) +"hip" = ( +/obj/structure/platform/strata, +/obj/structure/platform/strata{ + dir = 4 + }, +/turf/open/gm/river, +/area/shiva/interior/warehouse/caves) "hju" = ( /turf/open/floor/shiva{ dir = 8; @@ -12407,10 +12067,14 @@ }, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) -"hlh" = ( -/obj/item/tool/pickaxe, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) +"hkZ" = ( +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + icon_state = "vent4"; + pixel_x = -4; + pixel_y = 10 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) "hlm" = ( /obj/structure/bed/chair{ dir = 8 @@ -12484,6 +12148,10 @@ "hng" = ( /turf/closed/wall/shiva/ice, /area/shiva/exterior/cp_colony_grounds) +"hnj" = ( +/obj/item/lightstick/red/variant/planted, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "hnw" = ( /obj/structure/coatrack, /turf/open/floor/wood, @@ -12569,9 +12237,6 @@ icon_state = "wredfull" }, /area/shiva/interior/colony/medseceng) -"hsu" = ( -/turf/open/auto_turf/ice/layer2, -/area/shiva/interior/caves/left_spiders) "hsw" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/circuitboard, @@ -12679,6 +12344,15 @@ /obj/structure/flora/tree/dead/tree_2, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_s_research) +"hye" = ( +/obj/structure/prop/ice_colony/flamingo{ + dir = 1 + }, +/obj/structure/platform_decoration/shiva/catwalk{ + dir = 8 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/lz1_valley) "hyu" = ( /turf/open/floor/shiva{ icon_state = "bluefull" @@ -12722,6 +12396,10 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/generic, /turf/open/floor/plating, /area/shiva/interior/colony/research_hab) +"hBn" = ( +/obj/effect/landmark/hunter_secondary, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "hBq" = ( /turf/open/auto_turf/snow/layer4, /area/shiva/interior/caves/cp_camp) @@ -12755,7 +12433,7 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 8 }, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "hCt" = ( /obj/structure/machinery/firealarm{ @@ -12833,7 +12511,7 @@ icon_state = "p_stair_sn_full_cap" }, /obj/structure/platform/shiva/catwalk{ - dir = 8 + dir = 4 }, /turf/open/floor/plating, /area/shiva/interior/aerodrome) @@ -12847,6 +12525,18 @@ }, /turf/open/floor/plating, /area/shiva/interior/colony/deck) +"hEx" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 12; + pixel_y = 25 + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) +"hEB" = ( +/obj/structure/surface/rack, +/obj/item/tool/lighter/zippo, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "hEE" = ( /obj/structure/barricade/handrail/wire{ dir = 8; @@ -12894,6 +12584,15 @@ }, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/junkyard/fortbiceps) +"hHR" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W-corner" + }, +/obj/structure/barricade/metal{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shiva/exterior/junkyard) "hHV" = ( /obj/structure/surface/table, /obj/structure/machinery/cell_charger, @@ -12912,12 +12611,6 @@ }, /turf/open/floor/plating/plating_catwalk/shiva, /area/shiva/exterior/lz2_fortress) -"hIn" = ( -/obj/structure/platform_decoration/strata{ - dir = 8 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/lz1_valley) "hIu" = ( /obj/structure/surface/rack, /obj/item/device/radio{ @@ -12942,10 +12635,6 @@ /obj/structure/flora/tree/dead/tree_4, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_colony_grounds) -"hJd" = ( -/obj/structure/prop/ice_colony/soil_net, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) "hJH" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony, /turf/open/floor/plating, @@ -13042,10 +12731,6 @@ /obj/structure/machinery/light/double, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) -"hRF" = ( -/obj/structure/inflatable, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/research_alley) "hRK" = ( /obj/effect/decal/cleanable/blood/drip{ icon_state = "3" @@ -13061,6 +12746,12 @@ }, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/s_lz2) +"hRY" = ( +/obj/structure/stairs/perspective/ice{ + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/ice/layer0, +/area/shiva/interior/warehouse/caves) "hSa" = ( /obj/effect/landmark/static_comms/net_two, /turf/open/auto_turf/ice/layer1, @@ -13133,6 +12824,13 @@ }, /turf/open/auto_turf/snow/layer4, /area/shiva/exterior/cp_lz2) +"hUA" = ( +/obj/structure/largecrate/random/secure, +/obj/item/ashtray/bronze{ + pixel_y = 7 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "hUG" = ( /obj/effect/landmark/xeno_hive_spawn, /obj/effect/landmark/ert_spawns/groundside_xeno, @@ -13147,13 +12845,6 @@ }, /turf/open/floor/wood, /area/shiva/interior/colony/medseceng) -"hVr" = ( -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "snow_mat" - }, -/area/shiva/interior/caves/cp_camp) "hVs" = ( /obj/structure/surface/table, /obj/item/evidencebag{ @@ -13183,16 +12874,6 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) -"hWY" = ( -/obj/structure/machinery/light/double{ - dir = 4; - pixel_y = -5 - }, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "multi_tiles" - }, -/area/shiva/interior/colony/research_hab) "hXB" = ( /obj/structure/flora/grass/tallgrass/ice, /turf/open/auto_turf/snow/layer2, @@ -13271,6 +12952,16 @@ dir = 1 }, /area/shiva/interior/colony/central) +"ibP" = ( +/obj/structure/closet/toolcloset, +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/aerodrome) "icC" = ( /obj/structure/machinery/light/double{ dir = 8; @@ -13298,10 +12989,6 @@ icon_state = "kitchen" }, /area/shiva/interior/bar) -"iel" = ( -/obj/structure/prop/ice_colony/surveying_device, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/research_caves) "ieo" = ( /obj/structure/bed/chair/office/light{ dir = 4 @@ -13348,12 +13035,6 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) -"ifQ" = ( -/obj/effect/landmark/nightmare{ - insert_tag = "labs-cave-complete" - }, -/turf/closed/wall/shiva/ice, -/area/shiva/interior/oob) "igl" = ( /obj/item/paper_bin, /obj/item/tool/pen/blue, @@ -13413,6 +13094,10 @@ /obj/effect/landmark/corpsespawner/wygoon, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/colony/central) +"ijm" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/ice/layer2, +/area/shiva/interior/warehouse/caves) "ijq" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/shiva{ @@ -13426,6 +13111,13 @@ /obj/structure/fence, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_lz2) +"ijE" = ( +/obj/structure/platform/strata, +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) "ijP" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; @@ -13473,6 +13165,10 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) +"ilW" = ( +/obj/item/lightstick/planted, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "imk" = ( /obj/effect/spider/stickyweb, /turf/open/auto_turf/ice/layer1, @@ -13501,6 +13197,16 @@ /obj/structure/machinery/colony_floodlight, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_lz2) +"ipY" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/structure/machinery/light/double, +/obj/item/weapon/gun/smg/pps43, +/obj/item/ammo_magazine/smg/pps43, +/obj/item/ammo_magazine/smg/pps43, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/medseceng) "iqh" = ( /obj/item/device/flashlight, /turf/open/floor/wood, @@ -13689,6 +13395,15 @@ icon_state = "red" }, /area/shiva/interior/colony/medseceng) +"ivE" = ( +/obj/structure/platform/strata{ + dir = 1 + }, +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/lz1_valley) "ivS" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/medium, @@ -13850,7 +13565,7 @@ /area/shiva/exterior/cp_lz2) "iDy" = ( /obj/structure/flora/grass/tallgrass/ice/corner{ - dir = 9 + dir = 4 }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/lz1_valley) @@ -13867,7 +13582,7 @@ icon_state = "p_stair_sn_full_cap" }, /obj/structure/platform/shiva/catwalk{ - dir = 4 + dir = 8 }, /turf/open/floor/plating, /area/shiva/interior/aerodrome) @@ -13899,13 +13614,12 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/botany) -"iGn" = ( -/obj/structure/machinery/light/double{ - dir = 4; - pixel_y = -5 +"iHu" = ( +/obj/structure/platform_decoration/shiva/catwalk{ + dir = 8 }, -/turf/open/floor/shiva, -/area/shiva/interior/bar) +/turf/open/auto_turf/snow/layer4, +/area/shiva/exterior/lz1_valley) "iHN" = ( /obj/effect/landmark/survivor_spawner, /turf/open/floor/shiva{ @@ -13939,10 +13653,20 @@ icon_state = "yellowfull" }, /area/shiva/interior/colony/research_hab) +"iIg" = ( +/obj/structure/stairs/perspective/ice{ + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/caves/research_caves) "iIP" = ( /obj/item/device/flashlight/lamp/tripod/grey, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/s_lz2) +"iIR" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "iJr" = ( /obj/effect/decal/cleanable/blood{ icon_state = "gib6" @@ -13966,6 +13690,12 @@ icon_state = "red" }, /area/shiva/interior/colony/medseceng) +"iKW" = ( +/obj/structure/platform_decoration/shiva/catwalk{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/lz1_valley) "iLf" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = 12; @@ -14009,6 +13739,15 @@ /obj/effect/decal/cleanable/blood, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/colony/central) +"iOp" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S-corner" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/turf/open/floor/plating, +/area/shiva/exterior/lz1_valley) "iOr" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 9 @@ -14083,13 +13822,6 @@ icon_state = "floor3" }, /area/shiva/interior/colony/central) -"iSp" = ( -/obj/item/tool/screwdriver, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) -"iSG" = ( -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "iTQ" = ( /obj/structure/girder, /turf/open/floor/plating, @@ -14265,12 +13997,6 @@ icon_state = "floor3" }, /area/shiva/interior/colony/research_hab) -"iYu" = ( -/obj/structure/surface/rack, -/obj/item/device/flashlight, -/obj/item/device/t_scanner, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) "iYC" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/interior/plastic/alt, @@ -14292,9 +14018,6 @@ dir = 1 }, /area/shiva/interior/garage) -"iZI" = ( -/turf/closed/wall/shiva/prefabricated/blue, -/area/shiva/interior/caves/cp_camp) "iZX" = ( /obj/structure/machinery/power/apc{ dir = 4; @@ -14318,6 +14041,9 @@ /obj/item/lightstick/red/planted, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/valley) +"jaT" = ( +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/warehouse/caves) "jaU" = ( /obj/structure/surface/table, /obj/item/device/whistle, @@ -14360,6 +14086,12 @@ }, /turf/open/floor/carpet, /area/shiva/interior/colony/research_hab) +"jfO" = ( +/obj/effect/spider/stickyweb{ + icon_state = "stickyweb2" + }, +/turf/open/auto_turf/ice/layer2, +/area/shiva/interior/caves/cp_camp) "jfS" = ( /obj/effect/landmark/nightmare{ insert_tag = "lz2-south-caves" @@ -14376,6 +14108,12 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/botany) +"jhm" = ( +/obj/structure/platform/shiva/catwalk{ + dir = 8 + }, +/turf/open/auto_turf/snow/layer4, +/area/shiva/exterior/lz1_valley) "jhq" = ( /turf/open/floor/shiva{ icon_state = "radiator_tile" @@ -14407,11 +14145,6 @@ dir = 1 }, /area/shiva/interior/colony/s_admin) -"jjq" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) "jkH" = ( /obj/item/lightstick/red/spoke/planted{ layer = 3.1; @@ -14420,16 +14153,12 @@ }, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/junkyard) -"jkM" = ( -/obj/structure/machinery/door_control/brbutton{ - id = "hangar_ice_2"; - pixel_y = 28 - }, -/obj/structure/platform/shiva/catwalk{ - dir = 8 +"jld" = ( +/obj/item/shard{ + icon_state = "medium" }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/lz1_valley) +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "jlv" = ( /obj/item/stack/sheet/wood, /obj/effect/decal/cleanable/blood{ @@ -14461,21 +14190,6 @@ "jmW" = ( /turf/open/auto_turf/ice/layer2, /area/shiva/interior/caves/cp_camp) -"jnc" = ( -/obj/structure/prop/invuln{ - desc = "The mounting points are ground down from heavy use. They'll need some maintenance work before they can be used again."; - icon = 'icons/obj/structures/props/almayer_props.dmi'; - icon_state = "equip_base"; - name = "shuttle attachment point" - }, -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/effect/landmark/objective_landmark/close, -/turf/open/shuttle{ - icon_state = "floor7" - }, -/area/shiva/interior/aerodrome) "jny" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/close, @@ -14529,7 +14243,7 @@ pixel_x = 15; pixel_y = -3 }, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "jpE" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, @@ -14538,7 +14252,7 @@ "jqo" = ( /obj/item/lightstick/planted, /obj/effect/decal/cleanable/blood/drip, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "jqx" = ( /obj/structure/platform/strata, @@ -14644,6 +14358,13 @@ icon_state = "warnplate" }, /area/shiva/interior/colony/medseceng) +"jzs" = ( +/obj/structure/largecrate/random/mini/wooden{ + pixel_x = -16; + pixel_y = -1 + }, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/warehouse/caves) "jAg" = ( /turf/open/floor/shiva{ icon_state = "snow_mat" @@ -14710,7 +14431,7 @@ icon_state = "large"; name = "ice shard" }, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "jDp" = ( /obj/structure/surface/table/woodentable, @@ -14723,6 +14444,14 @@ icon_state = "floor3" }, /area/shiva/interior/bar) +"jDv" = ( +/obj/structure/ice/thin/single{ + opacity = 1; + unacidable = 0 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/ice/layer1, +/area/shiva/exterior/valley) "jDB" = ( /obj/item/shard, /turf/open/floor/shiva{ @@ -14830,6 +14559,14 @@ }, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) +"jKm" = ( +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + icon_state = "vent5"; + pixel_x = 16; + pixel_y = 10 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) "jKN" = ( /obj/structure/fence, /turf/open/auto_turf/snow/layer0, @@ -14874,11 +14611,30 @@ icon_state = "chapel" }, /area/shiva/interior/colony/central) +"jNr" = ( +/obj/structure/machinery/colony_floodlight, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "jOi" = ( /turf/open/floor/shiva{ icon_state = "floor3" }, /area/shiva/interior/caves/cp_camp) +"jOv" = ( +/obj/structure/surface/rack, +/obj/item/device/flashlight, +/obj/item/device/t_scanner, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) +"jOA" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/item/weapon/gun/smg/pps43, +/obj/item/ammo_magazine/smg/pps43, +/obj/item/ammo_magazine/smg/pps43, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/medseceng) "jOP" = ( /obj/effect/decal/warning_stripes{ icon_state = "E-corner" @@ -14932,12 +14688,6 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/junkyard) -"jQt" = ( -/obj/structure/platform/shiva/catwalk{ - dir = 4 - }, -/turf/open/auto_turf/snow/layer4, -/area/shiva/exterior/lz1_valley) "jQy" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/colony{ dir = 1; @@ -15025,6 +14775,13 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/colony/medseceng) +"jWh" = ( +/obj/structure/stairs/perspective/ice{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/warehouse/caves) "jWL" = ( /obj/structure/machinery/space_heater, /obj/structure/machinery/light/double{ @@ -15040,6 +14797,15 @@ /obj/structure/flora/tree/dead/tree_4, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) +"jXM" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/research_hab) "jYO" = ( /obj/item/lightstick/red/spoke/planted{ layer = 3.1; @@ -15148,6 +14914,11 @@ icon_state = "yellowfull" }, /area/shiva/interior/colony/medseceng) +"kch" = ( +/obj/structure/surface/rack, +/obj/item/tool/pickaxe/plasmacutter, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "kcB" = ( /obj/structure/machinery/landinglight/ds2/spoke, /obj/structure/machinery/landinglight/ds2/delayone{ @@ -15227,14 +14998,6 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/junkyard) -"kfl" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, -/obj/structure/machinery/computer/shuttle/dropship/flight/lz1, -/turf/open/floor/plating, -/area/shiva/exterior/lz1_console) "kfW" = ( /obj/effect/decal/cleanable/blood/oil, /obj/effect/decal/cleanable/dirt, @@ -15333,13 +15096,19 @@ }, /turf/open/floor/plating, /area/shiva/interior/aerodrome) -"kjU" = ( -/obj/structure/machinery/light/double{ - dir = 8; - pixel_y = -5 +"kjX" = ( +/obj/structure/stairs/perspective/ice{ + dir = 1; + icon_state = "p_stair_full" }, -/turf/open/floor/wood, -/area/shiva/interior/aerodrome) +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/warehouse/caves) +"klF" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/cp_s_research) "klN" = ( /obj/effect/spider/stickyweb{ icon_state = "stickyweb2" @@ -15358,6 +15127,13 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/interior/colony/medseceng) +"kmO" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/turf/open/floor/shiva, +/area/shiva/interior/colony/research_hab) "kng" = ( /turf/open/auto_turf/ice/layer0, /area/shiva/interior/caves/right_spiders) @@ -15400,17 +15176,6 @@ icon_state = "radiator_tile2" }, /area/shiva/interior/colony/central) -"kqE" = ( -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 4; - pixel_y = -9 - }, -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 1; - pixel_y = 10 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "kqH" = ( /obj/structure/machinery/firealarm{ dir = 8; @@ -15437,12 +15202,6 @@ icon_state = "green" }, /area/shiva/interior/colony/botany) -"krT" = ( -/obj/effect/landmark/nightmare{ - insert_tag = "labs-elevator" - }, -/turf/closed/wall/shiva/prefabricated/orange, -/area/shiva/interior/colony/research_hab) "krU" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/largecrate/random/barrel/white, @@ -15544,6 +15303,9 @@ /obj/structure/fence, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/lz1_valley) +"kwa" = ( +/turf/open/floor/plating, +/area/shiva/exterior/junkyard) "kwc" = ( /obj/structure/bed/chair/comfy/blue, /obj/structure/machinery/light/double{ @@ -15589,6 +15351,10 @@ /obj/structure/largecrate/random/barrel/green, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) +"kyt" = ( +/obj/item/tool/shovel/snow, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/cp_s_research) "kyu" = ( /obj/structure/surface/table, /obj/structure/machinery/door/window/eastright{ @@ -15599,15 +15365,6 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/research_hab) -"kyw" = ( -/obj/structure/barricade/metal{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, -/turf/open/floor/plating, -/area/shiva/exterior/lz1_valley) "kyD" = ( /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/junkyard) @@ -15643,6 +15400,27 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/colony/medseceng) +"kAd" = ( +/obj/structure/closet/radiation, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) +"kAg" = ( +/mob/living/simple_animal/hostile/retaliate/clown{ + desc = "Uh oh, looks like Gonzo got blocked by a cave-in. How is he gonna get out of this one?"; + health = 10000; + move_to_delay = 2; + name = "Gonzo the Magnificent"; + rapid = 1 + }, +/obj/effect/decal/hefa_cult_decals/d96{ + desc = "Original map by Infernus, remapped by Triiodine." + }, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/oob/dev_room) +"kAm" = ( +/obj/structure/flora/tree/dead/tree_6, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "kAp" = ( /obj/item/stack/sheet/metal/small_stack, /obj/structure/foamed_metal, @@ -15759,13 +15537,6 @@ /obj/effect/landmark/static_comms/net_one, /turf/open/floor/wood, /area/shiva/interior/aerodrome) -"kGO" = ( -/obj/structure/platform/shiva/catwalk{ - dir = 8 - }, -/obj/item/lightstick/red/variant/planted, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/lz1_valley) "kGW" = ( /obj/structure/flora/tree/dead/tree_2, /turf/open/auto_turf/snow/layer2, @@ -15781,13 +15552,13 @@ icon_state = "redfull" }, /area/shiva/interior/colony/medseceng) -"kIo" = ( -/obj/structure/platform/shiva/catwalk{ - dir = 4 +"kHG" = ( +/obj/structure/largecrate/random/mini/med, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/obj/item/lightstick/red/variant/planted, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/lz1_valley) +/area/shiva/interior/caves/cp_camp) "kIq" = ( /obj/structure/bed/chair, /turf/open/floor/shiva{ @@ -16018,6 +15789,10 @@ icon_state = "yellowfull" }, /area/shiva/interior/colony/research_hab) +"kRq" = ( +/obj/item/lightstick/red/variant/planted, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "kRI" = ( /obj/structure/surface/table, /turf/open/floor/shiva{ @@ -16056,10 +15831,6 @@ }, /turf/open/gm/river, /area/shiva/interior/caves/cp_camp) -"kSW" = ( -/obj/item/circuitboard, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "kTd" = ( /turf/open/auto_turf/ice/layer0, /area/shiva/interior/colony/research_hab) @@ -16097,12 +15868,6 @@ }, /turf/open/floor/shiva, /area/shiva/interior/colony/research_hab) -"kVs" = ( -/obj/structure/platform_decoration/strata{ - dir = 1 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/valley) "kVA" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/weapon/twohanded/fireaxe, @@ -16264,11 +16029,8 @@ /turf/open/floor/plating, /area/shiva/interior/colony/central) "leg" = ( -/obj/effect/spider/cocoon{ - icon_state = "cocoon_large1" - }, -/turf/open/auto_turf/ice/layer2, -/area/shiva/interior/caves/left_spiders) +/turf/closed/wall/shiva/prefabricated/reinforced/hull, +/area/shiva/exterior/telecomm/lz1_north) "lfe" = ( /obj/structure/prop/ice_colony/soil_net, /turf/open/auto_turf/snow/layer1, @@ -16320,12 +16082,12 @@ /obj/structure/surface/rack, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/junkyard/fortbiceps) -"lhu" = ( -/obj/effect/landmark/nightmare{ - insert_tag = "south-spidercave" +"lhP" = ( +/obj/structure/prop/invuln/ice_prefab/standalone/trim{ + icon_state = "pink_trim" }, -/turf/closed/wall/shiva/ice, -/area/shiva/interior/oob) +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "lip" = ( /obj/structure/flora/grass/tallgrass/ice/corner{ dir = 10 @@ -16377,6 +16139,9 @@ icon_state = "redfull" }, /area/shiva/interior/colony/research_hab) +"llZ" = ( +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/warehouse/caves) "lmt" = ( /obj/structure/largecrate/random/barrel/red, /turf/open/auto_turf/snow/layer0, @@ -16432,7 +16197,7 @@ layer = 2.9 }, /turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "lok" = ( /obj/structure/cargo_container/ferret/left, /turf/open/auto_turf/snow/layer3, @@ -16493,6 +16258,17 @@ dir = 1 }, /area/shiva/interior/lz2_habs) +"lqu" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/colony/research_hab) +"lqT" = ( +/obj/effect/spider/stickyweb{ + icon_state = "stickyweb2" + }, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/caves/cp_camp) "lqY" = ( /obj/structure/largecrate/random/mini/small_case{ pixel_x = -9; @@ -16540,12 +16316,12 @@ icon_state = "kitchen" }, /area/shiva/interior/colony/central) -"ltJ" = ( -/obj/structure/platform_decoration/shiva/catwalk{ - dir = 8 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/lz1_valley) +"ltA" = ( +/obj/structure/surface/rack, +/obj/item/tool/shovel/snow, +/obj/item/storage/belt/utility/full, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) "luD" = ( /obj/structure/machinery/space_heater, /turf/open/auto_turf/snow/layer1, @@ -16624,15 +16400,6 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) -"lyE" = ( -/obj/structure/platform_decoration/shiva/catwalk{ - dir = 4 - }, -/obj/structure/prop/ice_colony/flamingo{ - dir = 1 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/lz1_valley) "lzQ" = ( /obj/effect/decal/warning_stripes{ icon_state = "NS-center" @@ -16648,8 +16415,11 @@ /turf/open/floor/plating, /area/shiva/interior/caves/research_caves) "lAN" = ( -/obj/item/lightstick/red/variant/planted, -/turf/open/auto_turf/ice/layer1, +/obj/effect/decal/cleanable/blood{ + dir = 4; + icon_state = "gib6" + }, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "lBC" = ( /obj/structure/machinery/landinglight/ds2/delaythree{ @@ -16663,18 +16433,13 @@ /obj/item/tool/pickaxe, /turf/open/auto_turf/ice/layer0, /area/shiva/interior/caves/s_lz2) -"lCe" = ( -/obj/structure/platform_decoration/shiva/catwalk{ - dir = 8 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/lz1_valley) -"lCp" = ( -/obj/structure/platform_decoration/shiva/catwalk{ - dir = 4 +"lCg" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" }, -/turf/open/auto_turf/snow/layer4, -/area/shiva/exterior/lz1_valley) +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "lDv" = ( /obj/structure/machinery/computer/crew, /turf/open/floor/shiva{ @@ -16738,6 +16503,12 @@ }, /turf/open/gm/river/no_overlay, /area/shiva/interior/caves/cp_camp) +"lGT" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "lGU" = ( /obj/structure/surface/table, /obj/item/storage/fancy/cigarettes/lucky_strikes{ @@ -16834,14 +16605,14 @@ icon_state = "greencorners" }, /area/shiva/interior/colony/botany) +"lLf" = ( +/obj/item/tool/screwdriver, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "lLv" = ( /obj/structure/machinery/power/port_gen/pacman, /turf/open/floor/plating, /area/shiva/exterior/lz1_valley) -"lLE" = ( -/obj/structure/prop/invuln/ice_prefab/standalone, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/research_alley) "lMO" = ( /obj/structure/barricade/snow{ dir = 8 @@ -16954,6 +16725,9 @@ icon_state = "floor3" }, /area/shiva/interior/valley_huts) +"lRJ" = ( +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/colony/research_hab) "lSz" = ( /obj/effect/landmark/survivor_spawner, /turf/open/floor/shiva{ @@ -16995,16 +16769,6 @@ icon_state = "snow_mat" }, /area/shiva/interior/colony/botany) -"lUL" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -11; - pixel_y = 25 - }, -/turf/open/floor/plating, -/area/shiva/exterior/lz1_valley) "lUQ" = ( /obj/structure/closet/toolcloset, /obj/effect/landmark/objective_landmark/close, @@ -17034,15 +16798,6 @@ }, /turf/open/gm/river/no_overlay, /area/shiva/interior/colony/central) -"lVJ" = ( -/obj/structure/surface/rack, -/obj/item/tool/shovel/snow, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) -"lVN" = ( -/obj/structure/closet/radiation, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "lWr" = ( /obj/structure/barricade/handrail/strata, /obj/structure/surface/table, @@ -17051,6 +16806,16 @@ dir = 1 }, /area/shiva/interior/colony/central) +"lWC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W-corner" + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -10; + pixel_y = -1 + }, +/turf/open/floor/plating, +/area/shiva/exterior/junkyard) "lWL" = ( /obj/effect/spider/cocoon{ icon_state = "cocoon_large3" @@ -17111,6 +16876,13 @@ icon_state = "floor3" }, /area/shiva/interior/bar) +"lXQ" = ( +/obj/structure/stairs/perspective/ice{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/warehouse/caves) "lYf" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 4; @@ -17220,10 +16992,6 @@ }, /turf/open/floor/plating, /area/shiva/exterior/lz1_valley) -"mda" = ( -/obj/structure/prop/ice_colony/soil_net, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "mdx" = ( /turf/open/floor/shiva{ dir = 1 @@ -17310,7 +17078,7 @@ "mhs" = ( /obj/effect/spawner/random/powercell, /turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "mhx" = ( /obj/structure/machinery/light/double, /turf/open/floor/shiva{ @@ -17328,10 +17096,6 @@ "mib" = ( /turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/medseceng_caves) -"mie" = ( -/obj/structure/prop/ice_colony/surveying_device/measuring_device, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/research_caves) "miD" = ( /turf/open/floor/shiva{ dir = 4; @@ -17350,6 +17114,13 @@ /obj/structure/largecrate/random/case/small, /turf/open/floor/plating, /area/shiva/interior/colony/central) +"mkC" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "mkK" = ( /obj/structure/surface/table/reinforced/prison, /turf/open/floor/shiva{ @@ -17361,19 +17132,17 @@ /obj/item/device/flashlight, /turf/open/auto_turf/ice/layer0, /area/shiva/interior/caves/s_lz2) +"mlX" = ( +/obj/docking_port/stationary/marine_dropship/lz2{ + name = "LZ2: Research Landing Zone" + }, +/turf/open/floor/plating, +/area/shiva/exterior/lz2_fortress) "mms" = ( /turf/open/floor/shiva{ dir = 1 }, /area/shiva/interior/colony/deck) -"mmW" = ( -/obj/structure/prop/invuln/ice_prefab/roof_greeble{ - icon_state = "vent5"; - pixel_x = 16; - pixel_y = 10 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "mnD" = ( /turf/open/floor/shiva{ icon_state = "radiator_tile2" @@ -17385,12 +17154,6 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/interior/colony/medseceng) -"mnZ" = ( -/turf/open/floor/shiva{ - dir = 4; - icon_state = "snow_mat" - }, -/area/shiva/interior/caves/cp_camp) "moV" = ( /obj/structure/closet/crate/freezer/rations, /obj/item/reagent_container/food/snacks/bigbiteburger, @@ -17408,6 +17171,10 @@ }, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) +"mpI" = ( +/obj/structure/fence, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/caves/cp_camp) "mqd" = ( /obj/structure/filingcabinet, /obj/item/paper/research_notes, @@ -17459,10 +17226,6 @@ icon_state = "green" }, /area/shiva/interior/colony/botany) -"msh" = ( -/obj/structure/flora/tree/dead/tree_6, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) "msu" = ( /obj/structure/closet/bodybag, /obj/effect/landmark/objective_landmark/close, @@ -17501,13 +17264,6 @@ /obj/structure/fence, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) -"muI" = ( -/obj/structure/barricade/handrail/wire{ - dir = 4 - }, -/obj/structure/barricade/handrail/wire, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "muN" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/device/flashlight/lamp, @@ -17557,12 +17313,25 @@ icon_state = "floor3" }, /area/shiva/interior/bar) +"mxr" = ( +/obj/structure/stairs/perspective/ice{ + dir = 8; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/junkyard) "myR" = ( /obj/structure/prop/invuln/ice_prefab/trim{ dir = 8 }, /turf/closed/wall/shiva/ice, /area/shiva/interior/caves/s_lz2) +"mzf" = ( +/obj/structure/flora/bush/snow{ + icon_state = "snowgrassbb_3" + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "mzx" = ( /obj/structure/prop/invuln/ice_prefab/standalone/trim, /turf/open/auto_turf/snow/layer2, @@ -17640,6 +17409,15 @@ icon_state = "bluefull" }, /area/shiva/interior/colony/s_admin) +"mCG" = ( +/obj/structure/platform_decoration/strata{ + dir = 4 + }, +/obj/structure/platform_decoration/strata{ + dir = 8 + }, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) "mCQ" = ( /obj/structure/prop/ice_colony/surveying_device/measuring_device{ dir = 1; @@ -17707,6 +17485,15 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) +"mGk" = ( +/obj/item/tool/shovel/snow, +/obj/item/storage/fancy/cigarettes/arcturian_ace{ + layer = 3.1; + pixel_x = -8; + pixel_y = 23 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "mGn" = ( /obj/structure/machinery/light/double{ dir = 4; @@ -17822,6 +17609,10 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) +"mKD" = ( +/obj/structure/machinery/cell_charger, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "mKF" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/auto_turf/ice/layer1, @@ -17845,12 +17636,6 @@ icon_state = "floor3" }, /area/shiva/interior/bar) -"mLR" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, -/turf/open/floor/plating, -/area/shiva/exterior/lz1_valley) "mLT" = ( /obj/structure/machinery/alarm{ pixel_y = 24 @@ -17872,6 +17657,19 @@ }, /turf/open/floor/plating, /area/shiva/interior/colony/medseceng) +"mME" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 2.99; + pixel_x = -13; + pixel_y = 28 + }, +/obj/structure/largecrate/random/mini/small_case/b, +/obj/structure/largecrate/random/mini/small_case{ + pixel_x = 14; + pixel_y = -3 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "mMK" = ( /turf/open/auto_turf/snow/layer4, /area/shiva/exterior/cp_lz2) @@ -17897,10 +17695,6 @@ }, /turf/open/auto_turf/snow/layer4, /area/shiva/exterior/lz1_valley) -"mOT" = ( -/mob/living/simple_animal/hostile/giant_spider/hunter, -/turf/open/auto_turf/ice/layer2, -/area/shiva/interior/caves/left_spiders) "mOY" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/shiva, @@ -17979,22 +17773,6 @@ icon_state = "floor3" }, /area/shiva/interior/colony/central) -"mTN" = ( -/obj/structure/barricade/handrail/wire{ - dir = 8 - }, -/obj/structure/prop/ice_colony/surveying_device/measuring_device{ - dir = 4; - pixel_x = -5; - pixel_y = -2 - }, -/obj/structure/prop/ice_colony/surveying_device/measuring_device{ - dir = 1; - pixel_x = 7; - pixel_y = 16 - }, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "mUB" = ( /obj/item/lightstick/red/spoke/planted{ layer = 2.99; @@ -18014,15 +17792,6 @@ }, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard/cp_bar) -"mUT" = ( -/obj/structure/machinery/light/double{ - dir = 4; - pixel_y = -5 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/shiva/interior/colony/research_hab) "mVl" = ( /obj/structure/prop/dam/truck, /turf/open/floor/shiva{ @@ -18169,6 +17938,11 @@ icon_state = "floor3" }, /area/shiva/interior/colony/central) +"ndb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/colony/research_hab) "ndJ" = ( /obj/structure/flora/bush/snow{ icon_state = "snowgrassall_3" @@ -18254,13 +18028,6 @@ /obj/item/tool/wrench, /turf/open/auto_turf/snow/layer1, /area/shiva/interior/colony/central) -"nhh" = ( -/obj/item/clothing/gloves/marine/veteran/insulated, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "yellow" - }, -/area/shiva/interior/colony/deck) "nhl" = ( /turf/open/floor/shiva{ dir = 5; @@ -18282,12 +18049,22 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/n_admin) -"nhF" = ( -/obj/structure/prop/ice_colony/surveying_device{ - dir = 4 +"nig" = ( +/obj/structure/prop/invuln/ice_prefab/standalone/trim{ + icon_state = "pink_trim" }, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer4, /area/shiva/interior/caves/cp_camp) +"nij" = ( +/obj/item/circuitboard, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) +"niA" = ( +/obj/structure/stairs/perspective/ice{ + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/caves/research_caves) "niL" = ( /obj/structure/platform/strata{ dir = 8 @@ -18300,10 +18077,6 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_lz2) -"nkH" = ( -/obj/structure/girder, -/turf/open/floor/shiva, -/area/shiva/interior/caves/research_caves) "nlx" = ( /obj/structure/platform/strata, /obj/structure/platform/strata{ @@ -18323,6 +18096,13 @@ dir = 1 }, /area/shiva/exterior/lz2_fortress) +"nmf" = ( +/obj/structure/prop/invuln/ice_prefab/standalone/trim{ + icon_state = "pink_trim" + }, +/obj/structure/prop/invuln/ice_prefab/roof_greeble, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "nmi" = ( /obj/item/weapon/twohanded/spear, /turf/open/floor/shiva{ @@ -18379,6 +18159,10 @@ }, /turf/open/auto_turf/snow/layer3, /area/shiva/interior/colony/medseceng) +"npY" = ( +/obj/structure/inflatable, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) "nqu" = ( /turf/open/floor/shiva{ dir = 1; @@ -18462,6 +18246,18 @@ }, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) +"nvu" = ( +/obj/structure/platform/strata{ + dir = 1 + }, +/obj/structure/platform/strata{ + dir = 4 + }, +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) "nvS" = ( /turf/open/floor/shiva{ dir = 8; @@ -18485,6 +18281,17 @@ /obj/structure/machinery/space_heater, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard) +"nxt" = ( +/obj/structure/platform_decoration/strata{ + dir = 1 + }, +/obj/item/lightstick/red/variant/planted{ + pixel_x = -7; + pixel_y = -5 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "nxA" = ( /obj/structure/bed/chair/office/dark{ dir = 4 @@ -18493,6 +18300,17 @@ icon_state = "floor3" }, /area/shiva/interior/colony/research_hab) +"nyc" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) +"nyS" = ( +/obj/structure/platform/strata{ + dir = 8 + }, +/obj/structure/platform/strata, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) "nzf" = ( /obj/structure/surface/table, /obj/structure/noticeboard{ @@ -18513,10 +18331,11 @@ /turf/open/floor/shiva, /area/shiva/interior/colony/research_hab) "nzr" = ( -/obj/structure/barricade/handrail/wire{ - dir = 8 +/obj/effect/decal/cleanable/blood{ + dir = 4; + icon_state = "gib6" }, -/turf/open/auto_turf/ice/layer0, +/turf/open/auto_turf/snow/layer2, /area/shiva/interior/caves/cp_camp) "nzR" = ( /obj/structure/largecrate/random/case/small, @@ -18526,18 +18345,6 @@ /obj/item/tool/crowbar, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard) -"nAp" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/desertdam/decals/road_stop{ - icon_state = "road_edge_decal8" - }, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "purplefull" - }, -/area/shiva/interior/colony/research_hab) "nAs" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/auto_turf/snow/layer1, @@ -18614,6 +18421,16 @@ }, /turf/open/floor/plating, /area/shiva/exterior/lz1_valley) +"nEQ" = ( +/obj/structure/inflatable, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) +"nEU" = ( +/obj/structure/prop/ice_colony/ground_wire{ + dir = 1 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "nEZ" = ( /obj/structure/machinery/vending/snack, /turf/open/floor/shiva{ @@ -18656,14 +18473,6 @@ dir = 1 }, /area/shiva/interior/colony/n_admin) -"nHp" = ( -/obj/structure/prop/invuln/ice_prefab/roof_greeble{ - icon_state = "vent4"; - pixel_x = -4; - pixel_y = 10 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "nHt" = ( /obj/structure/machinery/light/double{ dir = 1; @@ -18681,6 +18490,13 @@ }, /turf/open/floor/shiva, /area/shiva/interior/colony/research_hab) +"nIA" = ( +/obj/item/lightstick/red/variant/planted, +/obj/structure/platform/shiva/catwalk{ + dir = 8 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/aerodrome) "nIB" = ( /obj/structure/surface/table, /obj/item/device/taperecorder, @@ -18696,10 +18512,6 @@ }, /turf/open/floor/wood, /area/shiva/interior/bar) -"nJu" = ( -/obj/item/frame/rack, -/turf/open/auto_turf/snow/layer0, -/area/shiva/interior/caves/cp_camp) "nKc" = ( /obj/structure/machinery/door/airlock/almayer/medical/colony{ dir = 1; @@ -18772,15 +18584,6 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) -"nNl" = ( -/obj/structure/platform/strata{ - dir = 1 - }, -/obj/structure/platform/strata{ - dir = 4 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/lz1_valley) "nNN" = ( /obj/structure/bed/chair/comfy/black{ dir = 8 @@ -18808,13 +18611,6 @@ }, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/cp_colony_grounds) -"nOw" = ( -/obj/structure/stairs/perspective/ice{ - dir = 8; - icon_state = "p_stair_sn_full_cap" - }, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/lz1_valley) "nOB" = ( /obj/item/stack/sheet/metal, /turf/open/floor/shiva{ @@ -18822,6 +18618,15 @@ icon_state = "purplefull" }, /area/shiva/interior/colony/research_hab) +"nOK" = ( +/obj/structure/platform/strata{ + dir = 1 + }, +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/gm/river, +/area/shiva/exterior/cp_s_research) "nPb" = ( /obj/structure/prop/ice_colony/soil_net, /obj/structure/platform/strata{ @@ -18859,10 +18664,13 @@ icon_state = "bluefull" }, /area/shiva/interior/colony/n_admin) -"nRL" = ( -/obj/item/device/flashlight, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) +"nRD" = ( +/obj/structure/stairs/perspective/ice{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/warehouse/caves) "nSI" = ( /obj/structure/machinery/light/double{ dir = 1; @@ -18899,6 +18707,12 @@ }, /turf/open/floor/wood, /area/shiva/interior/aerodrome) +"nUk" = ( +/obj/structure/platform/strata{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "nUn" = ( /obj/structure/bed/chair{ dir = 8 @@ -18966,6 +18780,13 @@ "nZA" = ( /turf/open/auto_turf/ice/layer0, /area/shiva/interior/warehouse/caves) +"nZG" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -16; + pixel_y = -3 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "nZM" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/close, @@ -19023,12 +18844,6 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_lz2) -"ocl" = ( -/obj/effect/landmark/nightmare{ - insert_tag = "labs-larder" - }, -/turf/closed/wall/shiva/prefabricated/blue, -/area/shiva/interior/colony/research_hab) "ocv" = ( /obj/item/weapon/ice_axe/red, /turf/open/auto_turf/ice/layer0, @@ -19051,16 +18866,6 @@ }, /turf/open/floor/shiva, /area/shiva/interior/bar) -"ocI" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -10; - pixel_y = -1 - }, -/turf/open/floor/plating, -/area/shiva/exterior/lz1_valley) "odb" = ( /obj/structure/machinery/light/double{ dir = 8; @@ -19090,10 +18895,6 @@ }, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/lz1_valley) -"ofr" = ( -/obj/item/frame/rack, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "ofw" = ( /turf/open/auto_turf/snow/layer4, /area/shiva/exterior/junkyard) @@ -19139,6 +18940,12 @@ icon_state = "yellowfull" }, /area/shiva/interior/garage) +"ohd" = ( +/obj/structure/prop/ice_colony/ground_wire{ + dir = 1 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "ohq" = ( /obj/structure/largecrate/random/case, /turf/open/floor/shiva{ @@ -19157,6 +18964,17 @@ /obj/structure/flora/tree/dead/tree_1, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard) +"oiL" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 15; + pixel_y = -3 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -16; + pixel_y = -3 + }, +/turf/open/auto_turf/ice/layer1, +/area/shiva/exterior/cp_s_research) "oiX" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 10 @@ -19168,6 +18986,13 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/valley) +"okc" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/turf/open/floor/wood, +/area/shiva/interior/aerodrome) "okz" = ( /obj/effect/decal/cleanable/blood{ layer = 3 @@ -19184,9 +19009,6 @@ icon_state = "redfull" }, /area/shiva/interior/colony/medseceng) -"ols" = ( -/turf/closed/wall/shiva/prefabricated/reinforced/hull, -/area/shiva/exterior/valley) "olI" = ( /obj/item/device/pinpointer, /turf/open/floor/shiva{ @@ -19208,10 +19030,6 @@ /obj/item/evidencebag, /turf/open/floor/wood, /area/shiva/interior/colony/medseceng) -"onF" = ( -/obj/item/lightstick/red/variant/planted, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) "onM" = ( /obj/structure/bed/chair/office/dark{ dir = 1 @@ -19288,6 +19106,10 @@ dir = 1 }, /area/shiva/interior/colony/central) +"ork" = ( +/obj/structure/flora/tree/dead/tree_1, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "ors" = ( /obj/effect/decal/cleanable/dirt, /turf/open/auto_turf/ice/layer1, @@ -19311,6 +19133,16 @@ /obj/structure/prop/ice_colony/dense/ice_tray, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) +"osV" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/research_hab) "otA" = ( /obj/structure/machinery/computer/cameras/wooden_tv{ pixel_y = 7 @@ -19366,7 +19198,7 @@ "owr" = ( /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "owt" = ( /obj/structure/bed, /obj/item/bedsheet/medical, @@ -19440,14 +19272,6 @@ /obj/structure/largecrate, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/warehouse/caves) -"oCk" = ( -/obj/item/lightstick/red/spoke/planted{ - layer = 2.99; - pixel_x = 12; - pixel_y = 28 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/valley) "oCr" = ( /obj/item/shard{ icon_state = "large" @@ -19678,9 +19502,16 @@ "oQl" = ( /turf/closed/wall/shiva/ice, /area/shiva/exterior/valley) +"oQo" = ( +/turf/closed/wall/shiva/prefabricated, +/area/shiva/exterior/cp_s_research) "oRH" = ( /turf/open/auto_turf/snow/layer2, /area/shiva/interior/caves/cp_camp) +"oRK" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/valley) "oSU" = ( /obj/structure/machinery/disposal, /turf/open/floor/shiva{ @@ -19747,7 +19578,6 @@ pixel_x = -10; pixel_y = 13 }, -/obj/item/ammo_magazine/rifle/toxin, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) "oYw" = ( @@ -19769,6 +19599,7 @@ /obj/structure/platform/strata{ dir = 4 }, +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/junkyard) "oZs" = ( @@ -19831,7 +19662,7 @@ "pct" = ( /obj/effect/spider/stickyweb, /turf/open/auto_turf/ice/layer2, -/area/shiva/interior/caves/left_spiders) +/area/shiva/interior/caves/cp_camp) "pcC" = ( /obj/item/tool/pen/blue, /obj/structure/surface/table/reinforced/prison, @@ -19859,22 +19690,11 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/largecrate/random/barrel/yellow, /obj/structure/machinery/light/double{ - dir = 4; + dir = 8; pixel_y = -5 }, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) -"pei" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = 15; - pixel_y = -3 - }, -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -16; - pixel_y = -3 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "pey" = ( /obj/structure/platform/strata{ dir = 4 @@ -19887,6 +19707,10 @@ icon_state = "bluefull" }, /area/shiva/interior/colony/n_admin) +"pff" = ( +/obj/item/stack/rods, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "pfg" = ( /obj/structure/barricade/handrail/strata{ dir = 8 @@ -19976,10 +19800,6 @@ "plM" = ( /turf/open/auto_turf/ice/layer0, /area/shiva/exterior/junkyard) -"plS" = ( -/obj/structure/flora/bush/ausbushes/lavendergrass, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) "pmj" = ( /obj/effect/landmark/objective_landmark/close, /turf/open/auto_turf/ice/layer1, @@ -20023,6 +19843,15 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) +"poz" = ( +/obj/structure/platform/strata{ + dir = 1 + }, +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/lz1_valley) "ppb" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 9 @@ -20035,6 +19864,12 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) +"ppS" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "pqe" = ( /turf/closed/wall/shiva/prefabricated/reinforced/hull, /area/shiva/interior/bar) @@ -20066,7 +19901,7 @@ dir = 8 }, /turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/junkyard) +/area/shiva/interior/caves/research_caves) "prU" = ( /obj/structure/machinery/light/double{ dir = 8; @@ -20096,7 +19931,7 @@ pixel_x = 10; pixel_y = 11 }, -/obj/item/tool/weldingtool/largetank{ +/obj/item/tool/weldingtool{ pixel_x = -6; pixel_y = 4 }, @@ -20108,7 +19943,7 @@ icon_state = "p_stair_sn_full_cap" }, /turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/junkyard) +/area/shiva/interior/caves/research_caves) "ptr" = ( /turf/open/floor/shiva{ dir = 8; @@ -20168,10 +20003,6 @@ "pvv" = ( /turf/open/floor/shiva, /area/shiva/interior/aerodrome) -"pvR" = ( -/obj/structure/platform_decoration/strata, -/turf/open/gm/river, -/area/shiva/interior/caves/cp_camp) "pvU" = ( /obj/structure/flora/grass/tallgrass/ice, /turf/open/auto_turf/snow/layer2, @@ -20183,10 +20014,10 @@ /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) "pwT" = ( -/turf/open/floor/shiva{ - dir = 1; - icon_state = "snow_mat" +/obj/structure/flora/bush/snow{ + icon_state = "snowgrassall_1" }, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "pxi" = ( /obj/structure/closet/secure_closet/engineering_welding, @@ -20216,16 +20047,6 @@ dir = 1 }, /area/shiva/exterior/lz2_fortress) -"pyB" = ( -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 10; - pixel_y = -9 - }, -/obj/structure/prop/invuln/dense/ice_tray{ - pixel_y = 10 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "pyI" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -20317,7 +20138,14 @@ icon_state = "p_stair_sn_full_cap" }, /turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/lz1_valley) +/area/shiva/interior/caves/research_caves) +"pCw" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 12; + pixel_y = 25 + }, +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/caves/cp_camp) "pCH" = ( /obj/item/tool/shovel, /turf/open/auto_turf/snow/layer3, @@ -20364,10 +20192,6 @@ }, /turf/open/floor/shiva, /area/shiva/interior/colony/research_hab) -"pDH" = ( -/obj/structure/platform_decoration/strata, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) "pDW" = ( /obj/structure/prop/ice_colony/soil_net, /turf/open/auto_turf/snow/layer1, @@ -20424,11 +20248,6 @@ }, /turf/open/gm/river/no_overlay, /area/shiva/interior/caves/cp_camp) -"pFq" = ( -/obj/structure/surface/rack, -/obj/item/tool/crowbar/red, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/cp_s_research) "pFt" = ( /turf/open/floor/shiva{ icon_state = "red" @@ -20458,10 +20277,22 @@ dir = 1 }, /area/shiva/exterior/lz2_fortress) +"pGi" = ( +/obj/structure/prop/ice_colony/ground_wire, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "pGj" = ( /obj/item/weapon/ice_axe/red, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) +"pGt" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 3.1; + pixel_x = -13; + pixel_y = 25 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/cp_s_research) "pGL" = ( /obj/structure/platform/strata{ dir = 1 @@ -20496,6 +20327,15 @@ }, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard/cp_bar) +"pIV" = ( +/obj/structure/prop/invuln/ice_prefab/standalone/trim, +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + icon_state = "windsock"; + pixel_x = 6; + pixel_y = -1 + }, +/turf/closed/wall/shiva/ice, +/area/shiva/exterior/cp_s_research) "pJp" = ( /obj/effect/decal/cleanable/ash, /turf/open/floor/shiva{ @@ -20681,10 +20521,6 @@ icon_state = "yellowfull" }, /area/shiva/interior/colony/medseceng) -"pOy" = ( -/obj/structure/inflatable, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) "pOI" = ( /obj/structure/surface/table, /obj/item/reagent_container/food/drinks/dry_ramen, @@ -20714,10 +20550,6 @@ }, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) -"pPY" = ( -/obj/structure/inflatable/popped, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) "pQt" = ( /obj/item/stack/sheet/metal, /turf/open/floor/shiva{ @@ -20734,6 +20566,13 @@ }, /turf/open/floor/shiva, /area/shiva/interior/colony/research_hab) +"pRM" = ( +/obj/structure/platform_decoration/strata{ + dir = 1 + }, +/obj/structure/platform_decoration/strata, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) "pRU" = ( /obj/item/stack/cable_coil/white, /turf/open/auto_turf/ice/layer1, @@ -20835,16 +20674,18 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) +"pWp" = ( +/obj/structure/barricade/handrail/wire{ + dir = 4 + }, +/turf/open/auto_turf/ice/layer1, +/area/shiva/exterior/cp_s_research) "pWw" = ( /obj/structure/closet/cabinet, /obj/item/clothing/under/colonist, /obj/effect/landmark/good_item, /turf/open/floor/wood, /area/shiva/interior/colony/botany) -"pWY" = ( -/obj/structure/girder, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "pXU" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = -16; @@ -20900,6 +20741,18 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) +"qdh" = ( +/obj/structure/platform/strata{ + dir = 1 + }, +/obj/structure/platform/strata{ + dir = 4 + }, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) +"qdH" = ( +/turf/closed/wall/shiva/prefabricated/blue, +/area/shiva/exterior/junkyard/cp_bar) "qep" = ( /turf/open/auto_turf/snow/layer4, /area/shiva/exterior/cp_colony_grounds) @@ -20945,18 +20798,13 @@ icon_state = "yellowfull" }, /area/shiva/interior/garage) -"qfI" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N" - }, -/obj/structure/desertdam/decals/road_stop{ - icon_state = "road_edge_decal5" - }, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "purplefull" - }, -/area/shiva/interior/colony/research_hab) +"qfR" = ( +/obj/structure/flora/grass/tallgrass/ice, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/research_caves) +"qfZ" = ( +/turf/closed/wall/shiva/prefabricated/orange, +/area/shiva/interior/caves/research_caves) "qgd" = ( /obj/structure/prop/ice_colony/ground_wire, /turf/open/auto_turf/ice/layer2, @@ -20981,9 +20829,9 @@ dir = 1 }, /area/shiva/interior/colony/central) -"qgD" = ( -/turf/closed/wall/shiva/prefabricated/reinforced/hull, -/area/shiva/interior/colony/research_hab) +"qgP" = ( +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/warehouse/caves) "qhm" = ( /obj/structure/barricade/metal{ dir = 4 @@ -21018,6 +20866,10 @@ icon_state = "floor3" }, /area/shiva/interior/bar) +"qiy" = ( +/obj/structure/barricade/handrail/wire, +/turf/open/auto_turf/ice/layer1, +/area/shiva/exterior/cp_s_research) "qjY" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/snow/layer0, @@ -21148,6 +21000,13 @@ /obj/effect/landmark/objective_landmark/science, /turf/open/floor/interior/plastic/alt, /area/shiva/interior/warehouse) +"qnJ" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/turf/open/floor/shiva, +/area/shiva/interior/caves/cp_camp) "qof" = ( /obj/item/stack/cable_coil/blue, /obj/structure/airlock_assembly, @@ -21222,9 +21081,12 @@ dir = 1 }, /area/shiva/interior/colony/central) +"qrY" = ( +/turf/closed/wall/shiva/prefabricated/reinforced, +/area/shiva/exterior/junkyard) "qsN" = ( /obj/structure/machinery/light/double{ - dir = 8; + dir = 4; pixel_y = -5 }, /turf/open/floor/interior/plastic, @@ -21249,17 +21111,6 @@ /obj/item/lightstick/red/variant/planted, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/lz1_valley) -"quO" = ( -/obj/item/tool/shovel/snow, -/obj/item/tool/shovel/snow{ - pixel_y = 8 - }, -/obj/structure/surface/rack, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "snow_mat" - }, -/area/shiva/interior/caves/cp_camp) "qvr" = ( /obj/structure/machinery/alarm{ dir = 8; @@ -21350,16 +21201,6 @@ icon_state = "yellowfull" }, /area/shiva/interior/colony/medseceng) -"qBn" = ( -/obj/structure/prop/invuln/ice_prefab{ - dir = 9 - }, -/obj/structure/prop/invuln/ice_prefab/roof_greeble{ - icon_state = "vent5"; - pixel_y = 10 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/interior/caves/cp_camp) "qBM" = ( /obj/structure/platform/strata{ dir = 8 @@ -21367,12 +21208,6 @@ /obj/structure/platform/strata, /turf/open/gm/river, /area/shiva/interior/caves/cp_camp) -"qBN" = ( -/obj/effect/landmark/crap_item, -/turf/open/floor/shiva{ - icon_state = "radiator_tile" - }, -/area/shiva/interior/caves/cp_camp) "qCa" = ( /obj/structure/bed/chair{ dir = 4 @@ -21405,6 +21240,15 @@ icon_state = "floor3" }, /area/shiva/interior/colony/botany) +"qCW" = ( +/obj/structure/platform/strata{ + dir = 1 + }, +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) "qDg" = ( /obj/structure/bed/chair{ dir = 8 @@ -21446,8 +21290,19 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) +"qEH" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/aerodrome) +"qEK" = ( +/obj/structure/prop/invuln/ice_prefab/standalone{ + icon_state = "white" + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "qEQ" = ( /obj/structure/platform/strata, +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/junkyard) "qFx" = ( @@ -21468,17 +21323,6 @@ "qIr" = ( /turf/open/floor/plating/plating_catwalk/shiva, /area/shiva/interior/warehouse) -"qIu" = ( -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 4; - pixel_y = -9 - }, -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 9; - pixel_y = 10 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "qII" = ( /turf/open/floor/shiva{ dir = 6; @@ -21496,30 +21340,6 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) -"qKn" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/obj/structure/bed/chair{ - dir = 4; - pixel_y = 4 - }, -/obj/structure/bed/chair{ - dir = 4; - pixel_y = 8 - }, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "snow_mat" - }, -/area/shiva/interior/caves/cp_camp) -"qKA" = ( -/obj/structure/barricade/handrail/wire, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "qLA" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ dir = 8 @@ -21546,6 +21366,11 @@ /obj/structure/flora/grass/tallgrass/ice, /turf/open/auto_turf/snow/layer4, /area/shiva/exterior/cp_lz2) +"qMT" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "qNj" = ( /obj/structure/flora/tree/dead/tree_5, /turf/open/auto_turf/snow/layer2, @@ -21572,9 +21397,6 @@ }, /turf/open/gm/river, /area/shiva/exterior/cp_lz2) -"qNE" = ( -/turf/closed/wall/shiva/ice, -/area/shiva/exterior/research_alley) "qNK" = ( /obj/structure/surface/table, /obj/item/reagent_container/glass/beaker/cryopredmix{ @@ -21607,10 +21429,6 @@ /obj/item/storage/firstaid/rad, /turf/open/floor/interior/plastic/alt, /area/shiva/interior/warehouse) -"qOP" = ( -/obj/structure/machinery/power/port_gen/pacman, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/cp_s_research) "qOZ" = ( /obj/structure/bed/chair/comfy/beige{ dir = 8 @@ -21627,17 +21445,6 @@ }, /turf/open/floor/interior/plastic/alt, /area/shiva/interior/warehouse) -"qPi" = ( -/obj/structure/closet/toolcloset, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) -"qPj" = ( -/obj/structure/platform/strata{ - dir = 4 - }, -/obj/structure/platform/strata, -/turf/open/gm/river, -/area/shiva/interior/caves/left_spiders) "qRb" = ( /obj/structure/barricade/metal/wired, /turf/open/floor/shiva{ @@ -21670,10 +21477,6 @@ /obj/item/stack/sheet/metal, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_colony_grounds) -"qRV" = ( -/obj/structure/platform/strata, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) "qRX" = ( /obj/structure/tunnel{ id = "hydroponics_tunnel" @@ -21772,14 +21575,6 @@ icon_state = "greenfull" }, /area/shiva/interior/colony/n_admin) -"qXC" = ( -/obj/structure/prop/ice_colony/surveying_device/measuring_device{ - dir = 8; - pixel_x = -6; - pixel_y = 13 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "qXS" = ( /turf/open/floor/shiva, /area/shiva/interior/bar) @@ -21875,15 +21670,6 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/caves/cp_camp) -"rdQ" = ( -/obj/structure/prop/invuln/ice_prefab/standalone/trim, -/obj/structure/prop/invuln/ice_prefab/roof_greeble{ - icon_state = "windsock"; - pixel_x = 6; - pixel_y = -1 - }, -/turf/closed/wall/shiva/ice, -/area/shiva/exterior/research_alley) "rdS" = ( /obj/effect/decal/cleanable/dirt, /turf/open/asphalt/cement, @@ -21935,10 +21721,6 @@ /obj/structure/platform/strata, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_lz2) -"rfv" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "rfU" = ( /obj/structure/flora/grass/tallgrass/ice/corner{ dir = 9 @@ -21977,9 +21759,16 @@ icon_state = "redfull" }, /area/shiva/interior/colony/research_hab) +"rib" = ( +/obj/structure/ice/thin/single{ + opacity = 1; + unacidable = 0 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/ice/layer2, +/area/shiva/exterior/valley) "ril" = ( /obj/structure/closet/secure_closet/freezer/fridge, -/obj/item/ammo_magazine/rifle/m41aMK1/toxin, /turf/open/floor/shiva{ icon_state = "multi_tiles" }, @@ -22010,6 +21799,10 @@ /obj/structure/window/framed/shiva, /turf/open/floor/plating, /area/shiva/interior/garage) +"rkG" = ( +/obj/structure/flora/tree/dead/tree_2, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "rkS" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = -13; @@ -22023,6 +21816,15 @@ icon_state = "warnplate" }, /area/shiva/exterior/junkyard/fortbiceps) +"rld" = ( +/obj/structure/prop/ice_colony/ground_wire{ + dir = 4 + }, +/obj/structure/prop/ice_colony/ground_wire{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "rli" = ( /obj/structure/flora/tree/dead/tree_1, /turf/open/auto_turf/snow/layer2, @@ -22039,15 +21841,6 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/cp_colony_grounds) -"rnO" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S-corner" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, -/turf/open/floor/plating, -/area/shiva/exterior/lz1_valley) "rov" = ( /obj/item/lightstick/red/spoke/planted{ layer = 3.1; @@ -22068,7 +21861,7 @@ unacidable = 0 }, /turf/open/auto_turf/ice/layer2, -/area/shiva/interior/caves/left_spiders) +/area/shiva/interior/caves/cp_camp) "rpL" = ( /obj/structure/bed, /obj/item/bedsheet/medical, @@ -22082,6 +21875,20 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) +"rqK" = ( +/obj/structure/desertdam/decals/road_stop{ + icon_state = "road_edge_decal5"; + pixel_y = -17 + }, +/turf/closed/wall/shiva/prefabricated/orange, +/area/shiva/interior/colony/research_hab) +"rrj" = ( +/obj/item/lightstick/red/variant/planted{ + pixel_x = -7; + pixel_y = -5 + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/research_caves) "rsa" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/close, @@ -22113,10 +21920,6 @@ /obj/item/lightstick/red/variant/planted, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) -"rwy" = ( -/obj/structure/inflatable/popped, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/research_alley) "rwQ" = ( /obj/structure/bedsheetbin, /turf/open/floor/shiva{ @@ -22128,17 +21931,6 @@ /obj/structure/bed/chair, /turf/open/floor/interior/plastic/alt, /area/shiva/interior/warehouse) -"rxf" = ( -/obj/structure/largecrate/random/case/double, -/obj/structure/machinery/light/double{ - dir = 8; - pixel_y = -5 - }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "bluefull" - }, -/area/shiva/interior/aerodrome) "rxF" = ( /obj/structure/prop/invuln/ice_prefab/standalone{ icon_state = "pink" @@ -22172,6 +21964,10 @@ icon_state = "yellow" }, /area/shiva/interior/lz2_habs) +"rzw" = ( +/obj/structure/platform_decoration/strata, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "rzz" = ( /obj/structure/flora/pottedplant, /turf/open/floor/shiva{ @@ -22342,6 +22138,10 @@ icon_state = "floor3" }, /area/shiva/interior/colony/s_admin) +"rKq" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) "rKW" = ( /obj/structure/machinery/computer3/powermonitor, /turf/open/floor/shiva{ @@ -22395,6 +22195,15 @@ icon_state = "purplefull" }, /area/shiva/interior/colony/research_hab) +"rNx" = ( +/obj/structure/bed/chair/dropship/passenger{ + dir = 8 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_up_to_down, +/area/shiva/interior/aerodrome) "rNO" = ( /obj/structure/prop/ice_colony/soil_net, /turf/open/auto_turf/snow/layer2, @@ -22421,6 +22230,15 @@ }, /turf/open/floor/plating, /area/shiva/interior/colony/medseceng) +"rPa" = ( +/obj/structure/bed/chair/dropship/passenger{ + dir = 4 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_up_to_down, +/area/shiva/interior/aerodrome) "rRb" = ( /obj/structure/surface/rack, /obj/item/weapon/ice_axe, @@ -22458,6 +22276,9 @@ /obj/effect/landmark/objective_landmark/science, /turf/open/floor/plating, /area/shiva/interior/colony/research_hab) +"rRZ" = ( +/turf/closed/wall/shiva/prefabricated/reinforced, +/area/shiva/exterior/cp_s_research) "rSr" = ( /obj/structure/bed/chair/office/light, /turf/open/floor/shiva{ @@ -22493,7 +22314,7 @@ }, /area/shiva/interior/bar) "rUD" = ( -/obj/item/weapon/gun/shotgun/double/sawn{ +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb{ desc = "Shhhh, he's sleeping."; pixel_x = 3; pixel_y = -10 @@ -22514,6 +22335,10 @@ icon_state = "yellowfull" }, /area/shiva/interior/lz2_habs) +"rUW" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "rVF" = ( /obj/effect/landmark/objective_landmark/close, /turf/open/floor/shiva{ @@ -22561,6 +22386,13 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/research_hab) +"rWW" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 11; + pixel_y = 20 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "rXn" = ( /turf/closed/shuttle/elevator{ dir = 5 @@ -22582,6 +22414,10 @@ /obj/effect/landmark/railgun_camera_pos, /turf/open/auto_turf/ice/layer1, /area/shiva/exterior/cp_lz2) +"rYj" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer4, +/area/shiva/exterior/junkyard/cp_bar) "rZj" = ( /obj/structure/surface/table, /obj/structure/machinery/computer/station_alert{ @@ -22652,6 +22488,13 @@ "sax" = ( /turf/closed/wall/shiva/ice, /area/shiva/interior/warehouse/caves) +"saA" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 12; + pixel_y = 25 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "sbd" = ( /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/shiva{ @@ -22666,6 +22509,12 @@ /obj/structure/largecrate/random/barrel/green, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) +"scp" = ( +/obj/structure/platform_decoration/shiva/catwalk{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/lz1_valley) "scN" = ( /obj/structure/surface/table, /obj/item/device/assembly/infra, @@ -22744,6 +22593,12 @@ "sgX" = ( /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/telecomm/lz2_northeast) +"shi" = ( +/obj/structure/prop/invuln/ice_prefab/standalone/trim{ + icon_state = "white_trim" + }, +/turf/closed/wall/shiva/ice, +/area/shiva/exterior/cp_s_research) "shx" = ( /obj/structure/ice/thin/single{ opacity = 1; @@ -22818,14 +22673,6 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) -"skK" = ( -/obj/structure/prop/ice_colony/surveying_device/measuring_device{ - dir = 8; - pixel_x = -6; - pixel_y = 13 - }, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "slj" = ( /turf/open/floor/shiva{ icon_state = "radiator_tile" @@ -22876,9 +22723,6 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) -"snZ" = ( -/turf/closed/wall/shiva/prefabricated/reinforced, -/area/shiva/exterior/valley) "sod" = ( /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/junkyard/fortbiceps) @@ -22914,6 +22758,13 @@ icon_state = "floor3" }, /area/shiva/interior/colony/deck) +"srJ" = ( +/obj/structure/stairs/perspective/ice{ + dir = 4; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/caves/research_caves) "ssf" = ( /turf/open/auto_turf/snow/layer3, /area/shiva/interior/colony/central) @@ -22945,18 +22796,15 @@ /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/cp_colony_grounds) "sud" = ( -/turf/open/floor/shiva{ - icon_state = "snow_mat" +/obj/structure/flora/bush/snow{ + icon_state = "snowgrassbb_1" }, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "suD" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/medseceng_caves) -"swn" = ( -/obj/structure/largecrate/random, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "swF" = ( /obj/structure/machinery/firealarm{ dir = 8; @@ -22974,7 +22822,7 @@ icon_state = "medium"; name = "ice shard" }, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "swW" = ( /obj/structure/machinery/space_heater, @@ -23138,10 +22986,24 @@ icon_state = "floor3" }, /area/shiva/interior/colony/research_hab) +"sDd" = ( +/obj/item/lightstick/planted, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) +"sEC" = ( +/obj/structure/flora/grass/tallgrass/ice/corner{ + dir = 10 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "sFj" = ( /obj/structure/largecrate/random/case/double, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) +"sFs" = ( +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/aerodrome) "sFu" = ( /obj/item/tool/mop, /turf/open/floor/wood, @@ -23225,7 +23087,7 @@ /obj/item/shard{ icon_state = "large" }, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer1, /area/shiva/interior/caves/cp_camp) "sIX" = ( /obj/structure/machinery/constructable_frame{ @@ -23277,6 +23139,13 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/colony/botany) +"sKi" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/turf/open/floor/shiva, +/area/shiva/interior/aerodrome) "sKH" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = 12 @@ -23384,6 +23253,9 @@ icon_state = "redfull" }, /area/shiva/interior/colony/research_hab) +"sQX" = ( +/turf/open/auto_turf/ice/layer0, +/area/shiva/exterior/cp_s_research) "sRV" = ( /obj/effect/decal/cleanable/blood{ icon_state = "xgibdown1" @@ -23608,6 +23480,13 @@ icon_state = "green" }, /area/shiva/interior/colony/botany) +"teK" = ( +/obj/structure/stairs/perspective/ice{ + dir = 4; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/ice/layer2, +/area/shiva/interior/warehouse/caves) "tfd" = ( /turf/open/floor/wood, /area/shiva/interior/colony/central) @@ -23640,16 +23519,6 @@ dir = 1 }, /area/shiva/interior/colony/s_admin) -"thK" = ( -/obj/structure/platform/strata{ - dir = 8 - }, -/turf/open/gm/river, -/area/shiva/interior/caves/cp_camp) -"tig" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/auto_turf/snow/layer1, -/area/shiva/interior/caves/cp_camp) "tiw" = ( /obj/structure/machinery/light, /turf/open/floor/shiva{ @@ -23660,6 +23529,9 @@ /obj/structure/fence, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard) +"tjL" = ( +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/aerodrome) "tkb" = ( /obj/structure/surface/table, /obj/item/tool/pen/blue, @@ -23671,15 +23543,13 @@ /obj/structure/largecrate/random/case, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) -"tkB" = ( -/obj/structure/platform/strata{ - dir = 1 - }, -/obj/structure/platform/strata{ - dir = 8 +"tkS" = ( +/obj/structure/largecrate/random/mini/med{ + pixel_x = -7; + pixel_y = 9 }, -/turf/open/gm/river, -/area/shiva/interior/caves/left_spiders) +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "tle" = ( /obj/structure/prop/invuln/ice_prefab/standalone, /turf/open/auto_turf/snow/layer2, @@ -23722,6 +23592,10 @@ icon_state = "red" }, /area/shiva/interior/colony/central) +"tmP" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/aerodrome) "tmV" = ( /obj/structure/machinery/door/airlock/multi_tile/elevator/arrivals, /turf/open/shuttle/elevator/grating, @@ -23741,7 +23615,7 @@ /area/shiva/interior/bar) "tnz" = ( /obj/effect/decal/cleanable/blood, -/obj/item/weapon/gun/shotgun/double/with_stock, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /turf/open/floor/prison{ icon_state = "kitchen" }, @@ -23772,6 +23646,15 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_lz2) +"too" = ( +/obj/structure/prop/ice_colony/soil_net, +/obj/item/tool/shovel/spade{ + layer = 2.99; + pixel_x = -9; + pixel_y = -11 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "toA" = ( /turf/open/floor/shiva{ dir = 1; @@ -23794,6 +23677,10 @@ icon_state = "redfull" }, /area/shiva/interior/colony/research_hab) +"toO" = ( +/obj/item/stack/rods, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "tpg" = ( /turf/open/floor/plating/plating_catwalk/shiva, /area/shiva/exterior/lz1_valley) @@ -23801,7 +23688,10 @@ /obj/effect/decal/warning_stripes{ icon_state = "NW-out" }, -/obj/effect/decal/cleanable/dirt, +/obj/structure/desertdam/decals/road_stop{ + icon_state = "road_edge_decal5"; + pixel_x = -14 + }, /turf/open/floor/shiva{ dir = 8; icon_state = "purplefull" @@ -23832,15 +23722,6 @@ }, /turf/open/auto_turf/ice/layer0, /area/shiva/interior/caves/cp_camp) -"trw" = ( -/obj/structure/platform/strata{ - dir = 1 - }, -/obj/structure/platform/strata{ - dir = 4 - }, -/turf/open/gm/river, -/area/shiva/interior/caves/left_spiders) "trX" = ( /obj/structure/machinery/conveyor, /obj/effect/decal/cleanable/dirt, @@ -23878,13 +23759,6 @@ dir = 1 }, /area/shiva/exterior/cp_colony_grounds) -"tue" = ( -/obj/structure/platform/strata{ - dir = 8 - }, -/obj/structure/platform/strata, -/turf/open/gm/river, -/area/shiva/interior/caves/left_spiders) "tuz" = ( /obj/structure/platform_decoration/strata{ dir = 1 @@ -23950,12 +23824,6 @@ icon_state = "red" }, /area/shiva/interior/colony/medseceng) -"txO" = ( -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/shiva/interior/caves/cp_camp) "txS" = ( /turf/open/floor/shiva{ icon_state = "multi_tiles" @@ -24173,26 +24041,21 @@ }, /area/shiva/interior/colony/botany) "tJP" = ( -/obj/structure/surface/rack, -/turf/open/auto_turf/ice/layer0, +/obj/structure/flora/tree/dead/tree_4, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "tJS" = ( /obj/structure/blocker/invisible_wall, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) -"tJX" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/item/weapon/gun/smg/ppsh, -/obj/item/ammo_magazine/smg/ppsh, -/obj/item/ammo_magazine/smg/ppsh, -/turf/open/floor/shiva{ - dir = 1 - }, -/area/shiva/interior/colony/medseceng) "tJY" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" }, +/obj/structure/desertdam/decals/road_stop{ + icon_state = "road_edge_decal8"; + pixel_x = -14 + }, /turf/open/floor/shiva{ dir = 8; icon_state = "purplefull" @@ -24235,6 +24098,13 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) +"tLC" = ( +/obj/item/lightstick/red/variant/planted, +/obj/structure/platform/shiva/catwalk{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/aerodrome) "tLP" = ( /obj/structure/platform/shiva/catwalk{ dir = 1 @@ -24336,6 +24206,10 @@ icon_state = "floor3" }, /area/shiva/interior/valley_huts/no2) +"tPB" = ( +/obj/structure/platform/strata, +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/caves/cp_camp) "tPJ" = ( /obj/structure/platform/shiva/catwalk, /turf/open/auto_turf/snow/layer1, @@ -24376,10 +24250,6 @@ icon_state = "floor3" }, /area/shiva/interior/colony/botany) -"tRn" = ( -/obj/item/lightstick/red/variant/planted, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "tRq" = ( /obj/structure/filingcabinet{ pixel_x = 8; @@ -24438,7 +24308,7 @@ /area/shiva/interior/colony/research_hab) "tTc" = ( /obj/effect/landmark/monkey_spawn, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "tTd" = ( /obj/structure/prop/ice_colony/dense/planter_box{ @@ -24639,6 +24509,13 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) +"ucN" = ( +/obj/structure/flora/grass/tallgrass/ice/corner{ + dir = 6 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "udD" = ( /obj/structure/prop/dam/truck{ dir = 4; @@ -24736,13 +24613,9 @@ /obj/structure/largecrate/random/case/double, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/s_lz2) -"ugD" = ( -/obj/structure/machinery/light/double{ - dir = 4; - pixel_y = -5 - }, -/turf/open/floor/shiva, -/area/shiva/interior/aerodrome) +"ugC" = ( +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/oob) "ugP" = ( /obj/structure/computerframe, /turf/open/floor/shiva{ @@ -24792,18 +24665,15 @@ icon_state = "floor3" }, /area/shiva/interior/colony/s_admin) -"uil" = ( -/obj/structure/prop/invuln/ice_prefab/standalone/trim{ - icon_state = "white_trim" - }, -/turf/closed/wall/shiva/ice, -/area/shiva/exterior/research_alley) "uim" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/shiva{ icon_state = "multi_tiles" }, /area/shiva/interior/colony/research_hab) +"uir" = ( +/turf/closed/wall/shiva/prefabricated/reinforced, +/area/shiva/interior/caves/cp_camp) "uiI" = ( /obj/item/reagent_container/food/drinks/cans/beer, /turf/open/auto_turf/snow/layer0, @@ -24858,10 +24728,6 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) -"ukJ" = ( -/obj/item/ammo_magazine/rifle/m41aMK1/toxin, -/turf/open/floor/shiva, -/area/shiva/interior/colony/research_hab) "ukU" = ( /obj/structure/surface/table, /obj/item/clipboard, @@ -24886,6 +24752,10 @@ /obj/structure/platform/shiva/catwalk, /turf/open/floor/plating/plating_catwalk/shiva, /area/shiva/exterior/junkyard/fortbiceps) +"ulI" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/caves/cp_camp) "ulZ" = ( /obj/structure/platform/shiva/catwalk, /obj/structure/cable/heavyduty{ @@ -24939,11 +24809,11 @@ /turf/closed/wall/shiva/prefabricated/white, /area/shiva/exterior/cp_lz2) "uoZ" = ( -/obj/effect/spider/stickyweb{ - icon_state = "stickyweb2" +/obj/structure/tunnel{ + id = "south_tcomms_tunnel" }, /turf/open/auto_turf/ice/layer2, -/area/shiva/interior/caves/left_spiders) +/area/shiva/interior/caves/cp_camp) "upf" = ( /obj/item/tool/pickaxe, /turf/open/auto_turf/snow/layer1, @@ -24965,6 +24835,11 @@ icon_state = "purplefull" }, /area/shiva/interior/lz2_habs) +"upK" = ( +/obj/effect/landmark/corpsespawner/engineer, +/obj/effect/decal/cleanable/blood, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "uqb" = ( /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/lz1_valley) @@ -25067,6 +24942,12 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/botany) +"uxZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W-corner" + }, +/turf/open/floor/plating, +/area/shiva/exterior/junkyard) "uyI" = ( /obj/structure/largecrate/random/mini/small_case/c{ pixel_x = 11; @@ -25258,6 +25139,10 @@ /obj/item/stack/sheet/plasteel/medium_stack, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/s_lz2) +"uIE" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/colony/research_hab) "uII" = ( /obj/structure/surface/table, /obj/effect/landmark/corpsespawner/scientist, @@ -25265,6 +25150,13 @@ icon_state = "floor3" }, /area/shiva/interior/colony/research_hab) +"uIO" = ( +/obj/item/lightstick/red/variant/planted{ + pixel_x = 11; + pixel_y = 11 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "uJg" = ( /obj/item/clothing/shoes/snow, /obj/structure/surface/rack, @@ -25371,6 +25263,9 @@ }, /turf/open/gm/river/no_overlay, /area/shiva/interior/caves/cp_camp) +"uLi" = ( +/turf/open/auto_turf/ice/layer0, +/area/shiva/interior/aerodrome) "uLn" = ( /obj/structure/closet/secure_closet/medical1{ req_access_txt = "100" @@ -25412,16 +25307,6 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/cp_lz2) -"uMJ" = ( -/obj/structure/machinery/light/double{ - dir = 8; - pixel_y = -5 - }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "bluefull" - }, -/area/shiva/interior/aerodrome) "uNe" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Colony Engineering Locker Room" @@ -25429,14 +25314,6 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/floor/plating, /area/shiva/interior/colony/medseceng) -"uOc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "purplefull" - }, -/area/shiva/interior/colony/research_hab) "uOR" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/shiva{ @@ -25651,13 +25528,6 @@ icon_state = "greenfull" }, /area/shiva/interior/colony/botany) -"uZF" = ( -/obj/structure/barricade/handrail/wire{ - dir = 8 - }, -/obj/structure/barricade/handrail/wire, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "uZJ" = ( /obj/structure/bed/chair{ dir = 8 @@ -25676,10 +25546,6 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/colony/medseceng) -"vaT" = ( -/obj/effect/landmark/hunter_primary, -/turf/open/auto_turf/snow/layer1, -/area/shiva/interior/caves/cp_camp) "vbb" = ( /obj/structure/surface/table/woodentable, /obj/item/device/flashlight/lamp, @@ -25779,6 +25645,7 @@ /area/shiva/interior/colony/central) "veu" = ( /obj/structure/platform_decoration/strata, +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard) "vey" = ( @@ -25800,6 +25667,10 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/central) +"vgR" = ( +/obj/structure/platform_decoration/strata, +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/caves/cp_camp) "vhp" = ( /obj/structure/surface/table, /obj/effect/landmark/objective_landmark/close, @@ -25826,7 +25697,7 @@ "vhM" = ( /obj/structure/flora/tree/dead/tree_4, /turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "vhQ" = ( /obj/structure/machinery/space_heater, /turf/open/floor/shiva{ @@ -25848,13 +25719,6 @@ icon_state = "floor3" }, /area/shiva/interior/bar) -"vjg" = ( -/obj/structure/platform/strata, -/obj/structure/platform/strata{ - dir = 4 - }, -/turf/open/gm/river, -/area/shiva/interior/caves/cp_camp) "vjs" = ( /obj/effect/decal/warning_stripes{ icon_state = "E" @@ -25882,6 +25746,10 @@ icon_state = "redfull" }, /area/shiva/interior/colony/medseceng) +"vkr" = ( +/obj/item/device/flashlight, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "vkZ" = ( /obj/structure/largecrate/random, /turf/open/floor/shiva{ @@ -25917,10 +25785,6 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) -"vnr" = ( -/obj/structure/prop/ice_colony/soil_net, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "vnF" = ( /obj/structure/surface/table, /obj/item/device/radio, @@ -25996,6 +25860,10 @@ dir = 1 }, /area/shiva/interior/colony/s_admin) +"vrG" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "vrM" = ( /obj/effect/decal/warning_stripes{ pixel_y = 32 @@ -26020,7 +25888,7 @@ /area/shiva/interior/caves/s_lz2) "vtz" = ( /obj/effect/decal/cleanable/blood/drip, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer1, /area/shiva/interior/caves/cp_camp) "vuj" = ( /obj/structure/bed/roller, @@ -26036,6 +25904,10 @@ dir = 1 }, /area/shiva/interior/colony/central) +"vwn" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/auto_turf/ice/layer1, +/area/shiva/exterior/valley) "vwv" = ( /obj/effect/decal/cleanable/blood, /obj/effect/landmark/corpsespawner/scientist, @@ -26043,6 +25915,14 @@ icon_state = "wredfull" }, /area/shiva/interior/colony/medseceng) +"vwx" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 3.1; + pixel_x = -13; + pixel_y = 25 + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "vxb" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -26068,6 +25948,12 @@ icon_state = "floor3" }, /area/shiva/interior/colony/s_admin) +"vym" = ( +/obj/structure/prop/ice_colony/ground_wire{ + dir = 8 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "vyM" = ( /obj/structure/bed/roller, /turf/open/floor/plating, @@ -26146,6 +26032,12 @@ icon_state = "redfull" }, /area/shiva/interior/colony/medseceng) +"vCe" = ( +/obj/structure/flora/bush/snow{ + icon_state = "snowgrassbb_1" + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "vCj" = ( /obj/structure/barricade/snow{ dir = 1 @@ -26193,13 +26085,6 @@ /obj/structure/prop/ice_colony/surveying_device, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard/cp_bar) -"vEN" = ( -/obj/structure/largecrate/random/mini/wooden{ - pixel_x = -16; - pixel_y = -1 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/warehouse/caves) "vFi" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating, @@ -26260,16 +26145,6 @@ icon_state = "floor3" }, /area/shiva/interior/valley_huts/no2) -"vIk" = ( -/obj/structure/machinery/disposal, -/obj/structure/machinery/light/double{ - dir = 4; - pixel_y = -5 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/shiva/interior/aerodrome) "vIy" = ( /obj/structure/prop/invuln/ice_prefab/trim{ dir = 4 @@ -26296,6 +26171,9 @@ dir = 1 }, /area/shiva/interior/colony/deck) +"vJu" = ( +/turf/closed/wall/shiva/prefabricated/blue, +/area/shiva/exterior/valley) "vKu" = ( /turf/open/floor/shiva{ dir = 8; @@ -26318,15 +26196,9 @@ }, /area/shiva/interior/colony/botany) "vNN" = ( -/obj/structure/machinery/light/double{ - dir = 4; - pixel_y = -5 - }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "redfull" - }, -/area/shiva/interior/colony/research_hab) +/obj/structure/fence, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/warehouse/caves) "vOb" = ( /obj/structure/prop/ice_colony/surveying_device{ dir = 4 @@ -26353,6 +26225,9 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) +"vPr" = ( +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/warehouse/caves) "vPK" = ( /obj/structure/platform/strata{ dir = 1 @@ -26447,9 +26322,7 @@ /area/shiva/exterior/lz2_fortress) "vVq" = ( /obj/effect/landmark/objective_landmark/close, -/turf/open/shuttle/dropship{ - icon_state = "rasputin14" - }, +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_left_to_right, /area/shiva/interior/aerodrome) "vWf" = ( /obj/item/handcuffs, @@ -26512,6 +26385,12 @@ dir = 1 }, /area/shiva/interior/lz2_habs) +"vZS" = ( +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/auto_turf/snow/layer4, +/area/shiva/exterior/lz1_valley) "wag" = ( /turf/closed/wall/shiva/prefabricated/reinforced, /area/shiva/interior/colony/n_admin) @@ -26563,6 +26442,12 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) +"wfH" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -11 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "wfL" = ( /obj/structure/machinery/door/airlock/almayer/security/colony{ name = "\improper Underground Security Evidence Storage" @@ -26651,17 +26536,13 @@ dir = 1 }, /area/shiva/interior/lz2_habs) -"wiG" = ( -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 6; - pixel_y = -9 - }, -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 8; - pixel_y = 10 +"wiy" = ( +/obj/structure/barricade/snow{ + dir = 4 }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/junkyard/fortbiceps) "wiM" = ( /obj/structure/machinery/light/double{ dir = 1; @@ -26786,7 +26667,7 @@ pixel_y = 9 }, /turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "wtC" = ( /turf/open/floor/shiva{ dir = 6; @@ -26805,14 +26686,14 @@ }, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_lz2) -"wuw" = ( -/obj/item/lightstick/red/spoke/planted{ - layer = 3.1; - pixel_x = -13; - pixel_y = 25 +"wvd" = ( +/obj/structure/prop/ice_colony/surveying_device/measuring_device{ + dir = 8; + pixel_x = -6; + pixel_y = 13 }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) +/turf/open/auto_turf/ice/layer0, +/area/shiva/exterior/cp_s_research) "wvx" = ( /obj/structure/largecrate/random/case, /turf/open/floor/shiva, @@ -26831,6 +26712,21 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) +"wwl" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 3.1; + pixel_x = -13; + pixel_y = 25 + }, +/obj/structure/largecrate/random/case{ + pixel_y = 11 + }, +/obj/structure/largecrate/random/mini/chest/b{ + pixel_x = -4; + pixel_y = -5 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "wwp" = ( /obj/effect/landmark/hunter_secondary, /turf/open/auto_turf/snow/layer3, @@ -26843,9 +26739,13 @@ dir = 1 }, /area/shiva/exterior/cp_colony_grounds) -"wwW" = ( -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/research_alley) +"wwZ" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "wxs" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/spray/cleaner{ @@ -27053,6 +26953,13 @@ dir = 1 }, /area/shiva/interior/lz2_habs) +"wLM" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "wMh" = ( /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) @@ -27088,16 +26995,16 @@ /obj/structure/window/framed/shiva, /turf/open/floor/plating/icefloor, /area/shiva/interior/telecomm/lz1_biceps) -"wOf" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/structure/machinery/light/double, -/obj/item/weapon/gun/smg/ppsh, -/obj/item/ammo_magazine/smg/ppsh, -/obj/item/ammo_magazine/smg/ppsh, -/turf/open/floor/shiva{ - dir = 1 +"wNB" = ( +/obj/structure/machinery/door_control/brbutton{ + id = "hangar_ice_2"; + pixel_y = 28 }, -/area/shiva/interior/colony/medseceng) +/obj/structure/platform/shiva/catwalk{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/lz1_valley) "wOq" = ( /obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/shiva{ @@ -27116,9 +27023,10 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/research_hab) -"wPp" = ( -/turf/closed/wall/shiva/ice, -/area/shiva/interior/colony/research_hab) +"wPs" = ( +/obj/item/lightstick/red/variant/planted, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/cp_s_research) "wPz" = ( /obj/effect/decal/cleanable/blood/drip{ icon_state = "3" @@ -27146,10 +27054,6 @@ "wRm" = ( /turf/open/floor/plating, /area/shiva/interior/aerodrome) -"wRL" = ( -/obj/structure/prop/ice_colony/soil_net, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) "wSv" = ( /obj/item/lightstick/red/variant/planted{ pixel_x = -7; @@ -27188,15 +27092,8 @@ }, /area/shiva/interior/colony/research_hab) "wTx" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = 15; - pixel_y = -3 - }, -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -16; - pixel_y = -3 - }, -/turf/open/auto_turf/ice/layer0, +/obj/effect/spawner/random/toolbox, +/turf/open/auto_turf/snow/layer1, /area/shiva/interior/caves/cp_camp) "wTz" = ( /obj/structure/largecrate/random/mini/chest{ @@ -27253,6 +27150,10 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/research_hab) +"wXs" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/aerodrome) "wXQ" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/shiva{ @@ -27321,16 +27222,6 @@ icon_state = "bluefull" }, /area/shiva/interior/colony/n_admin) -"xbm" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) -"xbn" = ( -/obj/structure/prop/invuln/ice_prefab/trim{ - dir = 6 - }, -/turf/closed/wall/shiva/ice, -/area/shiva/interior/caves/cp_camp) "xbz" = ( /obj/structure/window/framed/shiva, /obj/structure/blocker/forcefield/multitile_vehicles, @@ -27342,12 +27233,6 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) -"xbT" = ( -/obj/effect/landmark/static_comms/net_one, -/turf/open/floor/shiva{ - icon_state = "yellowfull" - }, -/area/shiva/interior/telecomm/lz1_biceps) "xbZ" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 8 @@ -27356,10 +27241,6 @@ dir = 1 }, /area/shiva/exterior/cp_colony_grounds) -"xct" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "xcE" = ( /obj/structure/inflatable/popped, /turf/open/floor/shiva{ @@ -27385,7 +27266,7 @@ dir = 4; pixel_y = 10 }, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "xeE" = ( /obj/effect/decal/warning_stripes{ @@ -27394,10 +27275,6 @@ /obj/structure/window/reinforced, /turf/open/floor/wood, /area/shiva/interior/colony/central) -"xfZ" = ( -/obj/structure/prop/ice_colony/surveying_device, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "xgc" = ( /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/cp_s_research) @@ -27485,13 +27362,6 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) -"xog" = ( -/obj/structure/platform/strata, -/obj/structure/platform/strata{ - dir = 8 - }, -/turf/open/gm/river, -/area/shiva/interior/caves/cp_camp) "xoi" = ( /obj/structure/machinery/light/double{ dir = 1; @@ -27524,9 +27394,6 @@ /obj/structure/foamed_metal, /turf/open/floor/plating/plating_catwalk/shiva, /area/shiva/exterior/lz2_fortress) -"xrC" = ( -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) "xst" = ( /obj/item/lightstick/red/spoke/planted{ layer = 2.99; @@ -27561,6 +27428,10 @@ }, /turf/open/gm/river, /area/shiva/exterior/cp_lz2) +"xun" = ( +/obj/structure/tunnel, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/colony/research_hab) "xuz" = ( /obj/structure/machinery/space_heater, /turf/open/auto_turf/ice/layer1, @@ -27569,12 +27440,6 @@ /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/lz1_valley) -"xvd" = ( -/obj/structure/surface/rack, -/obj/item/tool/shovel/snow, -/obj/item/storage/belt/utility/full, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "xvf" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/paper_bin, @@ -27627,6 +27492,15 @@ icon_state = "redfull" }, /area/shiva/interior/colony/n_admin) +"xxY" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 2.99; + pixel_x = 12; + pixel_y = 28 + }, +/obj/structure/largecrate/random/case/double, +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/caves/cp_camp) "xyd" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 10 @@ -27641,9 +27515,7 @@ name = "shuttle attachment point" }, /obj/item/storage/firstaid/adv, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "xzo" = ( /obj/item/lightstick/red/spoke/planted{ @@ -27711,12 +27583,29 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) +"xCz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W-corner" + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -11; + pixel_y = 25 + }, +/turf/open/floor/plating, +/area/shiva/exterior/junkyard) "xCA" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison{ icon_state = "kitchen" }, /area/shiva/interior/bar) +"xCD" = ( +/obj/effect/decal/cleanable/blood{ + dir = 4; + icon_state = "gib6" + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "xCN" = ( /obj/structure/prop/souto_land/pole{ dir = 1 @@ -27791,9 +27680,6 @@ }, /turf/open/auto_turf/snow/layer4, /area/shiva/exterior/cp_lz2) -"xFP" = ( -/turf/open/auto_turf/snow/layer0, -/area/shiva/interior/colony/research_hab) "xFR" = ( /turf/open/floor/shiva{ dir = 8; @@ -27813,6 +27699,9 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) +"xHv" = ( +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/aerodrome) "xIL" = ( /obj/item/powerloader_clamp, /turf/open/floor/shiva{ @@ -27845,6 +27734,22 @@ icon_state = "yellowfull" }, /area/shiva/interior/colony/research_hab) +"xLy" = ( +/obj/structure/platform/strata, +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/gm/river, +/area/shiva/exterior/cp_s_research) +"xMs" = ( +/obj/structure/prop/ice_colony/ground_wire{ + dir = 4 + }, +/obj/structure/prop/ice_colony/ground_wire{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "xMz" = ( /turf/closed/wall/shiva/ice, /area/shiva/exterior/lz1_valley) @@ -27878,6 +27783,13 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/caves/cp_camp) +"xMX" = ( +/obj/effect/spawner/random/toolbox, +/obj/effect/landmark/crap_item, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/caves/cp_camp) "xNe" = ( /obj/structure/machinery/iv_drip, /turf/open/floor/shiva{ @@ -27885,16 +27797,9 @@ icon_state = "redfull" }, /area/shiva/interior/colony/medseceng) -"xNO" = ( -/turf/open/auto_turf/snow/layer4, -/area/shiva/exterior/research_alley) "xOb" = ( /turf/open/floor/plating/plating_catwalk/shiva, /area/shiva/interior/bar) -"xOT" = ( -/obj/item/device/flashlight/lamp/tripod/grey, -/turf/open/auto_turf/ice/layer2, -/area/shiva/interior/caves/left_spiders) "xPd" = ( /turf/open/floor/shiva{ icon_state = "radiator_tile2" @@ -28008,12 +27913,6 @@ }, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) -"xWy" = ( -/obj/structure/flora/grass/tallgrass/ice/corner{ - dir = 5 - }, -/turf/open/auto_turf/snow/layer4, -/area/shiva/exterior/junkyard) "xXv" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/trash/plate{ @@ -28038,6 +27937,10 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_colony_grounds) +"xXQ" = ( +/obj/structure/inflatable, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "xXV" = ( /obj/structure/closet/secure_closet/engineering_welding, /obj/effect/landmark/objective_landmark/close, @@ -28135,6 +28038,10 @@ icon_state = "floor3" }, /area/shiva/interior/lz2_habs) +"yhA" = ( +/obj/structure/fence, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "yhX" = ( /obj/structure/surface/table, /obj/item/tool/wrench{ @@ -28209,6 +28116,12 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/closed/wall/shiva/prefabricated, /area/shiva/interior/colony/medseceng) +"ylF" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "ylO" = ( /obj/structure/machinery/colony_floodlight_switch{ pixel_y = 32 @@ -28227,7 +28140,7 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 4 }, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer1, /area/shiva/interior/caves/cp_camp) "ylZ" = ( /obj/structure/machinery/light/double, @@ -28374,22 +28287,22 @@ puZ puZ puZ puZ -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -28519,39 +28432,39 @@ puZ puZ puZ puZ -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -aIO -pxA -pxA -pxA -pxA puZ puZ puZ -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -28674,46 +28587,46 @@ puZ puZ puZ puZ -asz -asz -asz -asz -asz -asz puZ -pxA -ueu -mMa -euA -vKu -euA -euA -vKu -rhS -oqQ -oqQ -rhS -ueu -pxA -pxA -pxA -pxA -pxA -sym -ctk -ugP -pxA -pxA -xwi -thc -ckI -dTn -pxA -pxA -rZt -rZt -rZt -pxA +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -28834,48 +28747,48 @@ puZ puZ puZ puZ -asz -asz -asz -goj -djO -goj -goj -asz -pxA -pxA -lkX -ffw -uim -vKu -uim -ffw -lkX -vKu -vKu -vKu -vKu -vKu -uLu -pxA -pxA -bJi -bJi -euA -vPR -euA -euA -bJi -euA -euA -vPR -euA -bJi -euA -euA -bJi -rZt -pxA +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -28996,50 +28909,50 @@ puZ puZ puZ puZ -asz -fjd -rZt -djO -kts -wAM -djO -asz -pxA -pxA -ift -smI -hUG -vKu -udJ -euA -ift -pKP -nNN -kZy -pKP -vKu -uLu -pxA -pxA -bJi -rZt -dTU -dTU -dTU -dTU -rZt -dTU -dTU -dTU -dTU -rZt -dTU -rZt -mwF -rZt -pxA -kTd -kTd +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +hFl +hFl +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -29158,51 +29071,51 @@ puZ puZ puZ puZ -asz -wgp -rZt -goj -qNK -hrb -goj -wnK -rZt -vKu -lkX -ift -sQU -vKu -sQU -ift -lkX -rhS -oqQ -oqQ -lNm -vKu -pxA -pxA -ctk -mwF -chU -bJi -euA -euA -euA -bJi -euA -euA -euA -euA -bJi -bJi -chU -mwF -rZt -twi -kue -kTd -flN +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +hFl +jCE +jCE +jCE +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -29317,55 +29230,55 @@ puZ puZ puZ puZ +tlB +oRH +tlB +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +hFl +jCE +jCE +kAg +jCE +jCE +puZ +puZ puZ puZ puZ -asz -tqs -rZt -goj -rZt -fHM -goj -wnK -rZt -vKu -wnK -rZt -rZt -wnK -rZt -rZt -wnK -vKu -vKu -vKu -vKu -vKu -bqy -pxA -ugP -mwF -chU -mwF -pxA -pxA -pxA -pxA -wnK -vKu -xIL -vKu -wnK -bJi -chU -bJi -rZt -twi -flN -flN -kue -flN puZ puZ puZ @@ -29465,6 +29378,8 @@ puZ puZ puZ puZ +ntJ +ntJ puZ puZ puZ @@ -29475,6 +29390,21 @@ puZ puZ puZ puZ +hBq +tlB +hBq +hBq +oRH +tlB +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -29482,52 +29412,35 @@ puZ puZ puZ puZ -asz -asz -rZt -goj -rZt -rZt -goj -wnK -xEB -vKu -wnK -rZt -rZt -eFQ -rZt -rZt -wnK -vKu -vKu -vKu -vKu -vKu -jqT -pxA -ctk -cVy -chU -mwF -pxA -kRV -kVe -wnK -mwF -mwF -yiS -mwF -vKu -mwF -chU -mwF -rZt -flN -flN -flN -kTd -kTd +puZ +puZ +puZ +snN +uqb +uqb +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +oaP +jCE +jCE +jCE +jCE +jCE +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -29626,6 +29539,9 @@ puZ puZ puZ puZ +wMh +ntJ +ntJ puZ puZ puZ @@ -29635,6 +29551,13 @@ puZ puZ puZ puZ +hBq +tlB +oRH +oRH +oRH +hBq +oRH puZ puZ puZ @@ -29644,68 +29567,58 @@ puZ puZ puZ puZ -asz -iIe -rZt -goj -fHM -rZt -goj -wnK -rZt -vKu -vKu -vKu -vKu -vKu -vKu -vKu -toN -vKu -vKu -dgF -hEE -wnK -pxA -pxA -pxA -wnK -wnK -wnK -pxA -hQO -pve -wnK -flN -wAP -flN -dJS -flN -mwF -chU -mwF -rZt -rZt -wBf -pxA -kTd -kue -flN puZ puZ -"} -(10,1,1) = {" puZ puZ puZ -caS -caS -caS -dsD -gpn -caS -caS -caS +puZ +puZ +puZ +uqb +uqb +uqb +kLM +uqb +uqb +uqb +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +hFl +jLx +iWS +jCE +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +"} +(10,1,1) = {" +puZ +puZ +puZ +caS +caS +caS +dsD +gpn +caS +caS +caS aac aac tQN @@ -29787,15 +29700,63 @@ puZ puZ puZ puZ +ntJ +wMh +wMh +wMh puZ puZ puZ -aau -aau -aau puZ puZ puZ +xAS +xAS +hBq +tlB +oRH +oRH +tlB +tlB +oRH +tlB +hBq +puZ +puZ +puZ +puZ +puZ +puZ +slO +slO +slO +puZ +puZ +mev +cQW +rbA +aDM +cko +rLu +rLu +nMR +uqb +uqb +uqb +uqb +uqb +uqb +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +jCE puZ puZ puZ @@ -29803,56 +29764,8 @@ puZ puZ puZ puZ -lhu puZ puZ -asz -bNu -rZt -djO -qCs -pPt -goj -wnK -qyE -wnK -asz -fNE -fNE -fNE -pxA -xvS -xvS -pxA -pxA -iQe -qaF -chU -pxA -pxA -pxA -vKu -vKu -vKu -pxA -lGU -wnK -wnK -aPd -aRz -aXi -bag -flN -mwF -chU -mwF -rZt -flN -flN -pxA -flN -kTd -kue puZ puZ "} @@ -29949,14 +29862,62 @@ puZ puZ puZ puZ +jmW +jmW +jmW +wMh +ntJ +puZ +puZ +puZ +vrG +gXu +xAS +xAS +oRH +hBq +oRH +tlB +oRH +xAS +xAS +oRH +hBq +oRH +puZ +puZ +puZ +puZ +puZ +slO +slO +slO +slO +puZ +lLv +cQW +rbA +uqb +mNs +xMz +slO +ofl +uqb +uqb +aDM +uqb +uqb +uqb +uqb +riV +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ -pct -hsu -hsu -aaP -aau -aau puZ puZ puZ @@ -29964,57 +29925,9 @@ puZ puZ puZ puZ -clK puZ puZ puZ -asz -iqt -rZt -goj -axa -hVs -djO -dBB -rZt -rZt -fNE -sdF -biM -biM -fNE -rZt -vKu -pxA -pxA -rZt -hEE -chU -gFb -sfM -oHF -wnK -wnK -wnK -pxA -lYG -wnK -wnK -aPe -aSJ -aXn -bah -flN -mwF -chU -mwF -flN -rZt -rZt -flN -flN -kTd -kue puZ puZ "} @@ -30111,72 +30024,72 @@ puZ puZ puZ puZ +wMh +wMh +wMh +jmW +ntJ +puZ +puZ +xAS +xAS +xAS +xAS +aFO +xAS +oRH +nmf +dcn +fVq +wwl +gpj +tlB +oRH +hBq +puZ +puZ +puZ +puZ +slO +slO +slO +poz +hhT +puZ +bCr +cTU +iOp +qza +mNs +slO +slO +ofl +uqb +xvb +kGW +aDM +uqb +uqb +uqb +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ -pct -hsu -aav -clK -uoZ -aau puZ puZ puZ -aav -clK -aav -clK -aav puZ puZ puZ -asz -asz -asz -goj -goj -djO -goj -wnK -rZt -rZt -fNE -nPH -biM -biM -fNE -chU -wnK -vFX -pxA -iQe -qaF -chU -kyu -drx -rZt -chU -rZt -chU -fNE -mHU -pDp -wnK -aQm -aXc -aXI -bbG -flN -mwF -chU -mwF -rZt -flN -rZt -flN -flN -flN -kue puZ puZ "} @@ -30273,72 +30186,72 @@ puZ puZ puZ puZ -puZ -aaw -hsu +wMh +wMh +wMh uoZ -clK -clK -aav -clK -aav -aav -rpE -clK -aav -aaP -aav -clK -dCY -asz -asz -asz -asz -asz -wnK -wnK -wnK -wnK -wnK -rZt -rZt -asz -wTm -biM -biM -fNE -chU -vKu -vQm -pxA -rZt -iQe -wnK -gFb -nMk -chU -rZt -chU -rZt -fNE -mWE -pDu -wnK -flN -flN -flN -flN -flN -mwF -chU -fww -sNX -dAt -flN -pxA -flN -flN -kue +ntJ +puZ +puZ +gEn +xAS +xAS +xAS +aFO +hBq +oRH +tlB +xxY +eHY +saA +oRH +lfe +oRH +oRH +puZ +puZ +puZ +puZ +vZS +vZS +niL +hic +aDM +uqb +uqb +uqb +uqb +mfa +jqx +slO +ivE +oqH +uqb +aDM +kLM +kLM +xvb +uqb +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ "} @@ -30435,72 +30348,72 @@ puZ puZ puZ puZ +wMh +jmW +wMh +wMh +wMh +puZ +puZ +gEn +tlB +oRH +aFO +aFO +aFO +hBq +hBq +xAS +oRH +xAS +oRH +oRH +oRH +xAS +xAS +kvQ +uqb +aDM +uqb +uqb +uqb +uqb +uqb +uqb +qza +kLM +hXX +kLM +mOv +niL +hic +kLM +uqb +uqb +aDM +xvb +uqb +uqb +uqb +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ -aaw -hsu -clK -aau -aau -clK -aav -hsu -aav -rpE -clK -aav -clK -aav -clK -dCY -asz -wFB -eSt -wFB -dTU -rZt -gAV -rZt -dTU -asz -asz -asz -asz -asz -goj -goj -fNE -chU -wnK -pxA -pxA -pxA -pxA -pxA -pxA -mcw -rZt -chU -rZt -chU -pxA -pxA -pxA -wnK -mwF -mwF -mwF -mwF -vKu -mwF -chU -uOR -rZt -acP -flN -pxA -flN -flN -kue puZ puZ "} @@ -30596,73 +30509,73 @@ puZ puZ puZ puZ +wMh +jmW +jmW +wMh +puZ +puZ +puZ +puZ +lhP +dcn +fVq +vwx +aFO +dDj +aFO +aFO +aFO +aFO +aFO +xAS +oRH +oRH +xAS +xAS +kvQ +iOu +kLM +kLM +kLM +kLM +kLM +uqb +uqb +uqb +uqb +kLM +iQq +uqb +uqb +kLM +kLM +kLM +uqb +uqb +uqb +uqb +kLM +uqb +kLM +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ -aaU -uoZ -aav -aau -dRb -dRb -aau -clK -clK -aau -dRb -dRb -dRb -dRb -aaL -abL -dCY -asz -gha -uuN -sNX -rZt -chU -gAV -chU -rZt -asz -dnH -jft -ghS -asz -goj -goj -pxA -rZH -vKu -ghU -pxA -vQm -vFX -pxA -pxA -wnK -wnK -wnK -wnK -wnK -pxA -rZt -vKu -vKu -wnK -vKu -wnK -vKu -wnK -bJi -chU -fww -gaJ -dAt -rZt -rZt -flN -flN -kTd puZ puZ "} @@ -30757,74 +30670,74 @@ puZ puZ puZ puZ +wMh +wMh +wMh +wMh +puZ +puZ +puZ +puZ +puZ +xAS +eSf +xAS +hEx +aFO +aFO +aFO +aFO +elf +too +xAS +oRH +aFO +aFO +xAS +aFO +iQq +iQq +iQq +iQq +uqb +uqb +uqb +uqb +kLM +kLM +iQq +gCx +uqb +uqb +qkI +iQq +kLM +kLM +kLM +kLM +gCx +kLM +uqb +uqb +aDM +upf +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ -clK -aav -clK -aav -tkB -tue -dRb -clK -hsu -aav -dRb -dRb -dRb -dRb -dRb -dRb -dRb -dRb -asz -wFB -eSt -wFB -dTU -rZt -gAV -rZt -txX -kRj -qOZ -cEj -qOZ -goj -fwv -goj -bXo -chU -kQJ -vKu -wnK -vKu -wnK -vKu -kap -rZt -crF -crF -crF -wnK -vKu -wnK -chU -rZt -chU -rZt -chU -rZt -chU -rZt -chU -mwF -byr -rZt -rZt -flN -flN -kTd -kue puZ puZ "} @@ -30919,74 +30832,74 @@ puZ puZ puZ puZ -clK -aav -hsu -aau -clK -trw -qPj -abL -clK -aav -aaL -dRb -dRb -dRb -dRb -dRb -dRb -dRb -dRb -asz -rZt -byr -rZt -rZt -chU -gAV -chU -iaK -feA -biM -biM -biM -uuv -yhX -goj -pxA -rZt -dTU -hWY -dTU -dTU -dTU -rZt -kap -rZt -crF -crF -crF -wnK -vKu -wnK -chU -rZt -chU -rZt -chU -rZt -chU -rZt -chU -mwF -bgC -flN -flN -rZt -flN -kTd -flN +wMh +lqT +wMh +puZ +puZ +puZ +puZ +puZ +puZ +xAS +xAS +aFO +aFO +aFO +aFO +xAS +xAS +oRH +uIO +oRH +oRH +xAS +tlB +xAS +xAS +kvQ +oUu +uqb +kLM +kLM +uqb +iQq +gCx +kLM +uqb +kLM +iQq +iQq +kLM +kLM +kLM +kLM +kLM +iQq +iQq +kLM +kLM +kLM +uqb +uqb +uqb +kLM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ "} @@ -31080,86 +30993,86 @@ puZ puZ puZ puZ -hsu +jmW pct -clK -clK -aav -clK -aaw -abL -clK -aav -hsu -abD -tkB -tue -dRb -dRb -dRb -dRb -dRb -dRb -asz -eaa -rZt -rZt -rZt -chU -gAV -chU -iaK -kTI -biM -xtI -qOd -goj -wnK -goj -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -wnK -wnK -wnK -wnK -wnK -pxA -rZt -vKu -vKu -wnK -vKu -wnK -vKu -wnK -bJi -chU -fww -sNX -dAt -flN -rZt -flN -kTd -puZ -puZ -puZ -"} -(19,1,1) = {" -puZ -puZ -puZ -caS -caS -mFm -mFm +wMh +pcY +pcY +pcY +pcY +pcY +pcY +oRH +xAS +aFO +aFO +aFO +aFO +xAS +oRH +tkS +xAS +aFO +oRH +xAS +oRH +xAS +xAS +xAS +kvQ +uqb +dgG +kLM +kLM +kLM +kLM +kLM +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +gCx +kLM +kLM +uqb +kLM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +"} +(19,1,1) = {" +puZ +puZ +puZ +caS +caS +mFm +mFm mFm mFm mhP @@ -31184,7 +31097,7 @@ gkY gkY mFm aar -fiy +gkY kiv mhP mFm @@ -31241,75 +31154,75 @@ puZ puZ puZ puZ -clK -uoZ -hsu -aau -aaP -clK -aau -aau -clK -aaE +wMh +jfO +jmW aau -hsu -uoZ -trw -qPj -dRb -dRb -dRb -dRb -dRb -dRb -asz -rZt -bgC -rZt -rZt -chU -gAV -chU -rZt -asz -biM -biM -biM -goj -lpA -uWA -pxA -tNP -lFp -jcv -fqJ -cSn -pxA -pxA -pxA -rZH -rZt -chU -rZt -rZt -pxA -pxA -pxA -wnK -mwF -mwF -mwF -mwF -vKu -mwF -chU -uOR -uuN -acP -flN -pxA -flN -kTd +ntJ +ntJ +wMh +wMh +wMh +oRH +xAS +aFO +aFO +aFO +oRH +xAS +eUn +tlB +xAS +aFO +xAS +xAS +oRH +oRH +rzw +nUk +xMz +xMz +uqb +uqb +kLM +kLM +gCx +iQq +iQq +cQW +cQW +cQW +iQq +iQq +iQq +gGH +iQq +iQq +cQW +cQW +cQW +cQW +kLM +iQq +iQq +iQq +kLM +uqb +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -31403,75 +31316,75 @@ puZ puZ puZ puZ -aav -clK -abC -clK -aau -aav -hsu -clK -clK -aau -clK -pct -hsu -aaL -dRb -dRb -dRb -dRb -aau -aau -dRb -asz -dAt -sNX -dAt -rZt -chU -gAV -chU -rZt -bXo -biM -biM -biM -goj -xJA -goj -bXo -vKu -soj -wnK -wnK -cSn -pxA -pxA -pxA -wnK -wnK -wnK -wnK -wnK -pxA -kRV -pEv -wnK -flN -flN -flN -flN -flN -mwF -chU -fww -sNX -dAt -rZt -pxA -kTd -flN +lqT +wMh +lqT +wMh +wMh +jmW +jmW +wMh +oRH +oRH +xAS +aFO +aFO +xAS +xAS +tlB +nig +mME +fVq +fXr +oRH +oRH +xAS +kRq +aFc +wMh +xMz +xMz +aDM +uqb +kLM +kLM +gGH +iQq +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +iQq +cQW +cQW +cQW +cQW +kLM +gGH +cQW +iQq +kLM +uqb +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -31565,74 +31478,74 @@ puZ puZ puZ puZ -aav -clK -aav -clK -aav -dRb -dRb -abI -clK -aau -aau -clK -aav -abD -dRb -dRb -aav -aav -hsu -clK -dRb -asz -gha -rZt -sNX -rZt -chU -gAV -chU -rZt -asz -wqc -tOq -hXQ -asz -goj -goj -pxA -vKu -wnK -wnK -cSn -pxA -pxA -sIX -chU -rZt -chU -rZt -wnK -pxA -pxA -nmT -pve -wnK -aPd -aRz -aXi -bag -flN -mwF -chU -mwF -flN -wBf -pxA -pxA -kTd +lqT +wMh +lqT +wMh +wMh +wMh +wMh +wMh +oRH +hBq +xAS +aFO +xAS +xAS +hBq +xAS +pcY +cIs +hBq +pCw +xAS +oRH +xAS +xAS +mfc +xMz +xMz +aDM +uqb +uqb +kLM +iQq +iQq +iQq +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +kLM +cQW +iQq +kLM +kLM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -31726,78 +31639,78 @@ puZ puZ puZ puZ -aav -hsu -aav -aav -clK -dRb -dRb -tkB -tue -xOT -aau -clK -aav -hsu -hsu -abD -rpE -hsu -hsu -uoZ -clK +lqT +jmW +lqT +lqT +wMh +abH +wMh +oRH +oRH +hBq +xAS +aFO +aFO +xAS +xAS +oRH +pcY +pcY +pcY +pcY +pcY aat -asz -dAt -sNX -dAt -rZt -chU -gAV -chU -asz -asz -asz -asz -asz -asz -asz -asz -pxA -vdS -wnK -vKu -pxA -pxA -ahu -wnK -wnK -wnK -wnK -mUT -uYt -amu -pxA -nrr -wnK -wnK -aPe -act -acA -bah -flN -mwF -chU -bJi -rZt -flN -flN -rZt -flN +oRH +oRH +xAS +oRH +xMz +xMz +aDM +uqb +kLM +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +kLM +kLM +kLM +aDM +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ -ifQ puZ "} (23,1,1) = {" @@ -31822,7 +31735,7 @@ gkY gkY gkY gkY -gkY +mlX gkY gkY gkY @@ -31888,75 +31801,75 @@ puZ puZ puZ puZ -uoZ -aav -clK -aaL -abD -dRb -dRb -trw -qPj -abD -hsu -aau -clK -aau -clK -uoZ -rpE -aav -aav -clK -aav -aat -asz -asz -asz -asz -asz -chU -gAV -chU -adS -aea -ptr -aew -aew -aex -asz -asz -lXy -nxA -vKu -vKu -bUe -rZt -chU -rZt -chU -dwQ -wnK -pxA -amu -amu -pxA -nzf -wnK -wnK -aQm -aXc -aXI -bbG -flN -mwF -chU -bJi -bJi -wBf -flN -kTd -kTd +jfO +lqT +wMh +wMh +wMh +oRH +oRH +oRH +tlB +tlB +xAS +aFO +aFO +xAS +oRH +oRH +pcY +pcY +pcY +pcY +pcY +pcY +cIZ +tlB +xAS +oRH +xMz +xMz +kLM +uqb +kLM +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +iQq +iQq +kLM +kLM +uqb +kLM +uqb +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -32051,73 +31964,73 @@ puZ puZ puZ rpE -rpE -rpE -dRb -dRb -dRb -dRb -dRb +jmW +jmW +pcY +pcY +xAS +oRH +oRH +tlB +xAS +tlB +xAS +xAS +oRH +xAS +oRH +pcY +pcY +pcY +pcY +pcY +pcY +yhA dRb -abO -aav -hsu -aaE -aav -aau -clK -rpE -aav -aaP -aav -clK -aat -aat -aat -aat +tlB dRb -asz -chU -gAV -chU -adT -rZt -rZt -rZt -rZt -mRU -aex -asz -nVn -iCJ -pxA -pxA -pxA -wnK -wnK -wnK -wnK -mUT -wnK -amu -jrg -jrg -pxA -nHH -pDp -wnK -flN -flN -flN -flN -flN -mwF -rZt -rZt -mwF -pxA -kTd -kTd +yhA +xMz +uqb +kLM +iQq +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +boD +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +iQq +iQq +iQq +iQq +iQq +kLM +lMO +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -32207,78 +32120,78 @@ tlB puZ wMh wMh -aFO -fuz -aFO -dJl -fuz -aFO +tlB +vym +tlB +sDd +vym +xAS wMh abB -dRb -dRb -dRb -dRb -dRb -dRb -tkB -tue -aav -hsu -clK -clK -aav -rpE -clK -aav -clK -aav -clK -clK -clK -clK -dRb -asz -chU -gAV -chU -adV -rZt -rZt -rZt -rZt -rZt -mOu -asz -asz -asz -asz -asz -rZt -flN -rZt -rZt -dwQ -pxA -amu -amu -jrg -jrg -pxA -mWE -pJA -wnK -mwF -mwF -mwF -mwF -vKu -bJi -bJi -chU -mwF -pxA -flN +pcY +pcY +xAS +xAS +tlB +xAS +tlB +xAS +tlB +oRH +ben +vpD +vpD +pcY +pcY +pcY +pcY +pcY +pcY +pcY +tlB +xAS +tlB +tlB +xMz +uqb +uqb +kLM +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +iQq +iQq +iQq +kLM +kLM +ath +aDM +kLM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -32369,100 +32282,100 @@ tlB tlB oRH oRH -elN +pGi jmW -tPs -elN +ohd +pGi jmW -tPs +nEU abv wMh -dRb -dRb -dRb -dRb -dRb -dRb -trw -qPj -clK -uoZ -clK -aav -clK -rpE -aav -clK -uoZ -mOT -uoZ -aav -dRb -dRb -dRb -asz -rZH -gAV -chU -adW -aeb -rZt -miD -miD -adi -aCB -asz -asz -asz -asz -wnK -wnK -wnK -wnK -dwQ -flN -jrg -jrg -jrg -jrg -jrg -pxA -pxA -pxA -wnK -wnK -vKu -wnK -vNN -wnK -rZt -mwF -chU -mwF -pxA -puZ -puZ -puZ -puZ -puZ -puZ -puZ -"} -(27,1,1) = {" -puZ -puZ -puZ -caS -caS -mFm -mFm -mFm -mFm -mhP -jLc -mFm -mFm -aar +pcY +aFO +aFO +wMh +uir +uir +wMh +xAS +oRH +oRH +vpD +vpD +qFx +pcY +pcY +pcY +pcY +pcY +pcY +tlB +xAS +aFO +xAS +tlB +xMz +uqb +uqb +uqb +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +iQq +kLM +kLM +lNg +uqb +kLM +kLM +vNN +kAw +kAw +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +"} +(27,1,1) = {" +puZ +puZ +puZ +caS +caS +mFm +mFm +mFm +mFm +mhP +jLc +mFm +mFm +aar mFm gkY gkY @@ -32528,80 +32441,80 @@ oRH oRH jVi oRH -xAS -aFO -aFO -vtz -pMV +tlB +tlB +tlB +rUW +xMs jqo -aFO -pMV -aFO +tlB +rld +tlB +xAS +wMh +wMh aFO wMh +jOi +ecx +uir +uir wMh -dRb -dRb -dRb -dRb -dRb -dRb -dRb -uoZ -clK -aav -clK -aav -dRb +hBq +xAS +vpD +vpD +vpD +ccu leg -uoZ -hsu -pct -dRb -dRb -dRb -dRb -dRb -asz -chU -gAV -chU -asz -asz -aed -asz -asz -aez -mRU -aeQ -asz -asz -rZt -flN -rZt -dwQ -flN -flN -amu -bJj -jrg -jrg -jrg -jrg -jrg -jrg -pxA -wnK -wnK -pxA -pxA -pxA -pxA -pxA -mwF -chU -mwF -pxA +pcY +pcY +pcY +pcY +rkG +xAS +aFO +xAS +tlB +xMz +aDM +uqb +uqb +kLM +iQq +iQq +iQq +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +kLM +cQW +iQq +kLM +kLM +wgM +kLM +ath +iQq +vNN +cwZ +kAw +puZ +puZ +puZ +puZ puZ puZ puZ @@ -32690,80 +32603,80 @@ jmW tlB oRH xAS -aFO +tlB vtz -aFO -aFO +xAS +tlB mCQ pPK eFI -aFO +tlB vtz gva -aFO +xAS wMh eFI wMh -dRb -dRb -dRb -dRb -dRb -hsu -aav -aav -dRb -dRb -dRb -aaw -aav +jOi +jOi +xMX +uir +wMh +wMh +wMh aav -dRb -dRb -lSU -lSU -lSU -lSU -lSU -chU -gAV -rZt -dTU -dTU -dTU -rZt -fNE -aeC -rZt -aeR -asz -wnK -dwQ -wnK -wnK -wnK -dwQ -bJj -bJj -jrg -jrg -bJj -osE -jrg -jrg -jrg -pxA -wnK -wnK -pxA -pxA -pxA -pxA -pxA -vKu -vKu -vKu -pxA +ben +vpD +vpD +vpD +pcY +pcY +pcY +pcY +tlB +tlB +xAS +tlB +xAS +xMz +aDM +uqb +uqb +uqb +kLM +gGH +iQq +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +kLM +cQW +cQW +cQW +cQW +kLM +gGH +cQW +kLM +uqb +lNg +erj +kLM +tcp +iQq +vNN +cwZ +kAw +kAw +hrk +puZ +puZ puZ puZ puZ @@ -32851,81 +32764,81 @@ pcY jmW wMh oRH -aFO -aFO -oRH -oRH +tlB +tlB +xAS +xAS wMh pcY jmW nuY wMh -elN +pGi jmW -tPs +ohd wMh wMh wMh wMh +jOi +kHG +uir wMh +ntJ +ntJ +wMh +wMh +wMh +wMh +oRH +pcY +pcY +pcY +pcY +yhA dRb +xAS dRb -aav -uoZ -clK -aav -dRb -dRb -dRb -dRb -dRb -dRb -dRb -dRb -lSU -rHO -rHO -fgK -lSU -chU -gAV -gAV -gAV -gAV -gAV -chU -fNE -aeP -miD -aiV -asz -rZt -rZt -rZt -rZt -flN -amu -fXX -bJj -jrg -bJj -bJj -bJj -bJj -bJj -osE -pxA -wnK -wnK -pxA -pxA -pxA -pxA -pxA -mwF -chU -mwF -pxA +yhA +xMz +cnt +cnt +uqb +xvb +kLM +gCx +kLM +iQq +cQW +cQW +cQW +iQq +iQq +iQq +gGH +kLM +kLM +cQW +cQW +cQW +cQW +kLM +iQq +iQq +kLM +kLM +lNg +xMz +xMz +iQq +kLM +vNN +cwZ +kAw +kAw +hrk +ugC +puZ puZ puZ puZ @@ -33022,72 +32935,72 @@ pcY pcY pcY wMh -aFO -pMV -dJl -aFO -aFO -aFO +tlB +xMs +ilW +xAS +xAS wMh -eFI +jOi +jOi wMh -dRb -rpE -rpE -rpE -dRb -dRb -dRb -dRb -dRb -dRb -dRb -dRb -dRb -ocl -dwQ -dwQ -dwQ -bXo -rZt -dTU -dTU -rZt -gAV -gAV -chU -asz -asz -asz -asz -asz -wnK -wnK -dwQ -wnK -fXX -bJj -bJj -gpz -gpz -gpz -bJj -osE -osE -gpz -gpz -xTK -fXX -fXX -jrg -jrg -jrg -jrg -pxA -xcE -ggL -xcE -pxA +uir +wMh +jmW +ntJ +jmW +ntJ +wMh +wMh +pcY +pcY +pcY +pcY +pcY +pcY +tlB +xAS +xAS +hBq +xMz +xMz +xMz +xMz +oqf +uqb +kTP +kLM +kLM +iQq +iQq +iQq +kLM +iQq +iQq +iQq +iQq +iQq +kLM +kLM +iQq +iQq +iQq +qkI +iQq +uqb +kLM +aDM +xMz +xMz +xMz +iQq +vNN +cwZ +kAw +kAw +kAw +hrk +puZ puZ puZ puZ @@ -33184,72 +33097,72 @@ pcY pcY pcY ouS -aFO +tlB jpp wMh wMh wMh +tlB +xAS wMh -aFO -aFO wMh -abP wMh +jmW +wMh +wMh +ntJ +jmW wMh -abB pcY pcY +tlB +hBq +tlB pcY -lSU -dRb -dRb -abY -abY -dRb -lSU -dwQ -dwQ -lSU -lSU -lSU -lSU -lSU -shO -gAV -gAV -chU -rZt -rZt -ahB -rZt -rZt -rZt -rZt -rZt -rZt -bJj -bJj -osE -gpz -bJj -bJj -bJj -bJj -bJj -gpz -gpz -rad -fXX -osE -gRJ -jrg -jrg -jrg -pxA -mwF -chU -mwF -pxA +hBq +tlB +xAS +aFO +tlB +hBq +xMz +xMz +xMz +xMz +aDM +uqb +kLM +gCx +kLM +kLM +kLM +kLM +kLM +kLM +iQq +iQq +kLM +iQq +iQq +kLM +uqb +iQq +iQq +iQq +kLM +xvb +uqb +uCs +xMz +xMz +xMz +xMz +cwZ +cwZ +kAw +kAw +kAw +hrk puZ puZ puZ @@ -33346,72 +33259,72 @@ pcY pcY pcY laz -aFO -aFO +tlB +tlB yjM kSO qBM -wMh -aFO -aFO -wMh +tlB +tlB +xAS +xAS xAS xAS -abQ +hBq +wMh +wMh +ntJ wMh -pcY -pcY -pcY -lSU dRb -abX -ors -ors -lSU -lSU -dwQ -dwQ -lSU -ada -ady -adE -lSU -goj -goj -goj -goj -goj -goj -goj -goj -goj -wnK -wnK -dwQ -flN -fXX -bJj -bJj -osE -bJj -bJj -gpz -gpz -bJj -bJj -xuz -ciL -bJj -bJj -bJj -jrg -jrg -jrg -amu -fXX -fXX -fSR -amu +xAS +hBq +tlB +tlB +hBq +tlB +tlB +tlB +xAS +aFO +tlB +xAS +tlB +xAS +kvQ +kLM +xvb +kLM +kLM +kLM +kLM +kLM +gCx +kJQ +kLM +qkI +iQq +kLM +iOu +kLM +iQq +qkI +lNg +kLM +lNg +uqb +uqb +xMz +xMz +xMz +xMz +xMz +xMz +cwZ +cwZ +kAw +kAw +kAw +kAw puZ puZ puZ @@ -33503,77 +33416,77 @@ wMh tQn nBo tlB -oRH +xAS sFj pcY kBo obH -aFO -aFO +tlB +tlB cQY rJI gso -pcY -wMh +tlB +tlB +tlB +oRH wMh -aFO -aFO +tlB +xAS xAS wMh -iZI ntJ -ntJ -pcY -lSU -abV -skl -skl -ors -elw -dwQ -dwQ -dwQ -lSU -ada -dwQ -dwQ -adI -goj -chU -goj -chU -chU -chU -goj -chU -aiD -rZt -flN -rZt -dwQ -bJj -osE -bJj -osE -osE -osE -gpz -bJj -gpz -gpz -bJj -ciL -gpz -bJj -xuz -jrg -jrg -jrg -amu -bJj -fSR -fXX -amu +wMh +mpI +hBq +tlB +tlB +xAS +xAS +xAS +xAS +xAS +xAS +xAS +aFO +xAS +tlB +xAS +cdh +aDM +uqb +kLM +kLM +uqb +uqb +kLM +kLM +kLM +iQq +bzK +iQq +iQq +kLM +kLM +iQq +iQq +iQq +iQq +iQq +iQq +iQq +xMz +xMz +xMz +xMz +xMz +xMz +kAw +kAw +kAw +kAw +kAw +kAw puZ puZ puZ @@ -33665,121 +33578,121 @@ pcY pcY pcY xeq -aFO +xAS tze wMh wMh pWn -aFO +tlB tTc cQY aNy xtc -nKD +tlB wMh wMh -vtz -aFO -aFO +tlB +tlB +tlB +xAS xAS wMh wMh -ntJ +aaA wMh -lSU -sgB -skl -skl -ors -dwQ -elw -dwQ -dwQ -adI -adj -dwQ -adH -lSU -goj -wnK -goj -wnK -wnK -wnK -goj -txU -goj -rZt -rZt -flN -asz -jrg -jrg -jrg -osE -osE -osE -osE -bJj -bJj -bJj -bJj -sLj -sLj -tnG -jrg -jrg -jrg -jrg -nkH -bJj -fXX -fSR -amu -puZ -puZ -puZ -puZ -puZ -puZ -puZ -"} -(35,1,1) = {" -puZ -puZ -puZ -caS -caS -mFm -mFm -mFm -caS -caS -mFm -mFm -caS -caS -mFm -lTL -caS -voH -slj -vOd -vOd -slj -las -caS -mFm -mFm -wMj -wMj -mFm -mFm -caS -voH -slj -vFq -ghK +xAS +tlB +xAS +xAS +aFO +aFO +aFO +aFO +aFO +tlB +xAS +aFO +xAS +tlB +kLM +uqb +kLM +kLM +kLM +kLM +kLM +iQq +iQq +kLM +iQq +iQq +iQq +iQq +kLM +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +xMz +xMz +xMz +xMz +xMz +xMz +kAw +kAw +kAw +kAw +kAw +kAw +puZ +puZ +puZ +puZ +puZ +puZ +puZ +"} +(35,1,1) = {" +puZ +puZ +puZ +caS +caS +mFm +mFm +mFm +caS +caS +mFm +mFm +caS +caS +mFm +lTL +caS +voH +slj +vOd +vOd +slj +las +caS +mFm +mFm +wMj +wMj +mFm +mFm +caS +voH +slj +vFq +ghK slj las caS @@ -33827,77 +33740,77 @@ wMh cQY xhU wMh -aFO -aFO -dJl -fuz -dJl -aFO -aFO -pXU +tlB +tlB +sDd +vym +sDd +tlB +tlB +nZG wMh wMh -aFO +tlB +hBq +tlB +tlB +oRH +tlB +tlB wMh wMh wMh -eFI +wMh +mpI +hBq +aFO +aFO +aFO +aFO aFO aFO xAS -wMh -ntJ -wMh -lSU -kbT -skl -skl -ors -lSU -lSU -dwQ -dwQ -lSU -dwQ -dwQ -dwQ -lSU -dtE -rZt -rZt -iXr -pue -wui -rZt -rZt -goj -asz -asz -asz -asz -asz -asz -jrg -jrg -jrg -bJj -bJj -bJj -gpz -osE -osE -bJj -osE -osE -jrg -jrg -jrg -jrg -jrg -bJj -gRJ -bJj -amu +tlB +tlB +tlB +xAS +aFO +xAS +kvQ +uqb +aDM +iQq +kLM +kLM +iQq +uqb +uqb +iQq +iQq +iQq +iQq +iQq +kLM +kLM +iQq +iQq +uqb +lNg +lNg +xvb +uqb +xMz +xMz +xMz +xMz +xMz +xMz +kAw +nZA +kAw +kAw +nZA +kAw puZ puZ puZ @@ -33989,77 +33902,77 @@ oRH cQY oRH sIP -aFO -aFO -elN +tlB +tlB +pGi jmW -tPs -aFO +ohd +tlB wMh wMh wMh -aFO -aFO +tlB +tlB +tlB +tlB +oRH +tlB +tlB +xAS +wMh wMh -aFO wMh +wMh +dRb +xAS +tlB +xAS aFO +xAS +xAS +tlB +tlB +xAS +xAS +xAS aFO -tTc +xAS aFO -vaT -wMh -wMh -lSU -xFP -mIx -aca -wPp -wPp -lSU -dwQ -dwQ -lSU -gpb -adC -adC -lSU -goj -wnK -goj -gKE -pue -iYc -onM -wnK -goj -asz -afz -azH -agZ -aUS -asz -jrg -jrg -jrg -jrg -jrg -bJj -gpz -osE -osE -gpz -bJj -bJj -mKF -jrg -jrg -gRJ -sUD -hXH -apD -hXH -czI +fKb +kLM +iQq +kLM +kLM +kLM +kLM +uqb +iOu +kLM +iQq +iQq +iQq +iQq +iQq +iOu +iQq +iQq +uqb +hbD +iDy +iDy +hzJ +hzJ +xMz +xMz +xMz +xMz +xMz +kAw +nZA +nZA +kAw +kAw +kAw puZ puZ puZ @@ -34149,80 +34062,80 @@ aFO aFO aFO wfP -oRH +xAS tlB oRH -aFO -dJl +tlB +sDd hCa -dJl -aFO -aFO +sDd +tlB +tlB wMh wMh -aFO -aFO -aFO -aFO -aFO -aFO -aFO -vtz -aFO +hBq +wMh +wMh +hBq +tlB +tlB xAS +tlB wMh +jmW pcY -lSU -wPp -wPp -acb -wPp -wPp -lSU -dwQ -dwQ -lSU -lSU -lSU -lSU -lSU -goj -chU -dsY -hTb -pRH -lpA -goj -chU -goj -fNE -afV -rZt -rZt -aCB -asz -jrg -jrg -jrg -jrg -bJj -bJj -bJj -gpz -gpz -gpz -bJj -bJj -bJj -jrg -gRJ -bJj -osE -gpz -bJj -bJj -jrg -puZ +pcY +pcY +pcY +hBq +xAS +xAS +pcY +pcY +xAS +xAS +xAS +xAS +cbG +ylF +tlB +uji +uji +uji +uji +uji +uAd +kbK +jpE +iQq +kLM +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +kLM +kLM +qoU +hXB +hzJ +hzJ +hzJ +xMz +xMz +xMz +xMz +kAw +kAw +kAw +kAw +kAw +kAw +hrk +hrk puZ puZ puZ @@ -34315,76 +34228,76 @@ pZB wMh wMh aaA -elN +pGi jmW swV -aFO -aFO -aFO -wMh -wMh -wMh -aFO -wMh +xAS +xAS +tlB wMh +hBq +tlB wMh -aFO -vtz +tlB +oRH +tlB +tlB wMh wMh +ntJ pcY pcY -lSU -wPp -wPp -wPp -wPp -wPp -lSU -elw -dwQ -dwQ -dwQ -dwQ -lSU -lQm -goj -chU -goj -dqH -rZt -sCl -onM -chU -goj -fNE -afX -rZt -rZt -ahS -asz -jrg -jrg -jrg -jrg -bJj -bJj -bJj -osE -bJj -bJj -gpz -bJj -bJj -jrg -osE -bJj -bJj -gpz -bJj -jrg -jrg -puZ +pcY +pcY +tlB +hBq +xAS +pcY +pcY +pcY +xAS +toO +jld +xAS +pff +tlB +uji +uji +uji +uji +uji +kLM +kLM +knI +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +kLM +uqb +uqb +uqb +qEB +hzJ +hzJ +hzJ +hzJ +kAw +hrk +kAw +kAw +kAw +kAw +kAw +nZA +kAw +kAw +kAw +kAw puZ puZ puZ @@ -34477,77 +34390,77 @@ pcY gXW gXW kQW -dJl +ilW ylU -dJl -aFO -wMh +ilW +tlB wMh -aFO wMh -aFO -aFO -aFO +xAS wMh -aFO -aFO +tlB +tlB +tlB +tlB xAS +tlB +wMh +wMh wMh pcY pcY pcY -wPp -wPp -wPp -lSU -lSU -lSU -lSU -dwQ -oaO -dwQ -dwQ -dwQ -bXo -rZt -goj -vuj -goj -eaz -rZt -nwd -goj -wnK -goj -fNE -aud -rZt -rZt -ahT -asz -jrg -jrg -jrg -jrg -bJj -bJj -bJj -bJj -bJj -bJj -bJj -gpz -gpz -bJj -osE -bJj -gpz -gpz -bJj -jrg -jrg -puZ -puZ +pcY +hBq +tlB +pcY +pcY +pcY +uKZ +iMA +aYy +bbj +aYy +iMA +uKZ +uji +uji +uji +uji +uji +uji +qhm +qhm +kXs +mcH +mcH +mcH +mcH +nEH +mcH +mcH +mcH +pNo +qhm +qhm +hzJ +hzJ +hzJ +hzJ +hzJ +kAw +kAw +kAw +hrk +hrk +kAw +nZA +nZA +kAw +kAw +kAw +kAw +hrk puZ puZ puZ @@ -34643,73 +34556,73 @@ mbt mbt abt wMh -aFO -aFO -aFO -aFO -aFO -aFO -fXQ -pcY -wMh -vtz +xAS +tlB +xAS +tlB xAS wMh -pcY wMh +tlB +tlB wMh -wPp -wPp -wPp -lSU -dwQ -dwQ -dwQ -oaO -dwQ -rEW -lSU -lSU -lSU -ehe -bxW -chU -goj -rZt -rZt -rZt -goj -chU -oag -asz -aud -rZt -rZt -tiw -asz -jrg -jrg -jrg -bJj -osE -bJj -bJj -jrg -bJj -osE -bJj -gpz -gpz -gpz -bJj -bJj -gpz -gpz -fXX -jrg -iTQ -puZ -puZ +wMh +wMh +jmW +pcY +pcY +pcY +uji +uKZ +uKZ +uji +uji +uji +uKZ +fRg +fRg +fRg +bfy +fRg +uKZ +uji +dMo +ibP +dMo +uji +uji +kLM +lNE +uqb +iOu +kLM +iQq +iQq +iQq +iQq +kLM +kLM +uqb +uqb +uqb +hzJ +huz +huz +huz +huz +ncS +ncS +ncS +huz +huz +hrk +kAw +kAw +kAw +kAw +kAw +hrk +hrk puZ puZ puZ @@ -34807,70 +34720,70 @@ gXW mbt abw wMh -aFO -aFO -aFO +tlB +tlB +xAS wMh -sFj -pcY wMh -aFO +tlB xAS wMh -iZI -ntJ +wMh ntJ wMh -wPp -wPp -lSU -dwQ -eBG -dwQ -dwQ -elw -rRP -lSU -cvn -lSU -exm -goj -rWS -fVI -rZt -rZt -rZt -goj -chU -goj -aeU -rZt -rZt -rZt -aCB -asz -jrg -jrg -jrg -osE -bJj -bJj -bJj -jrg -bJj -bJj -bJj -bJj -bJj -bJj -bJj -gpz -bJj -bJj -fXX -fXX -iTQ -puZ +pcY +pcY +pcY +uji +oYH +ahe +pvv +sKi +pvv +pvv +aWY +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +fRg +uji +aDM +uqb +uqb +uqb +kLM +kLM +iQq +iQq +iQq +iQq +kLM +kLM +sqb +lNg +aDM +aDM +huz +huz +huz +huz +tRN +rdS +xvQ +huz +huz +kAw +kAw +kAw +kAw +nZA +kAw +hrk puZ puZ puZ @@ -34968,108 +34881,108 @@ idR jHg aui ecz -aFO -aFO -aFO -wMh -jmW -pcY -pcY -pcY -aFO -aFO +tlB +tlB +tlB xAS -iZI +tlB +tlB +tlB +tlB wMh wMh ntJ -wPp -wPp -lSU -dwQ -lSU -lSU -lSU -lSU -lSU -lSU -dwQ -lSU -qRo -goj -wnK -goj -kMJ -rZt -neS -goj -wnK -oag -asz -agl -rZt -rZt -apk -asz -jrg -jrg -jrg -osE -bJj -bJj -jrg -jrg -bJj -bJj -gpz -gpz -bJj -bJj -bJj -gpz -bJj -fXX -bJj -fXX -amu -puZ -puZ -puZ -puZ -puZ -puZ -puZ -"} -(43,1,1) = {" -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -eni -mMK -ntc -vYm -vYm -vYm -vYm -vYm -vYm -vYm -vYm -vYm -vYm -vYm -ntc -vYm -vYm -vYm -vYm -eni +ntJ +pcY +pcY +pcY +uji +dtr +oYH +pvv +aTn +pvv +pvv +pvv +pvv +pvv +bfi +pvv +pvv +pvv +pvv +pvv +fRg +hGj +kLM +iOu +uqb +kJQ +uqb +iQq +iQq +iQq +iQq +kLM +iQq +kLM +uqb +kLM +que +aDM +huz +kys +pef +rdS +axJ +axJ +xvQ +fXB +ncS +kAw +nZA +kAw +kAw +nZA +kAw +hrk +puZ +puZ +puZ +puZ +puZ +puZ +"} +(43,1,1) = {" +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +eni +mMK +ntc +vYm +vYm +vYm +vYm +vYm +vYm +vYm +vYm +vYm +vYm +vYm +ntc +vYm +vYm +vYm +vYm +eni ntc ntc eni @@ -35132,69 +35045,69 @@ tes sPo wMh tze -aFO -xbm -pcY -pcY -pcY +tlB +tlB +tlB +tlB +xAS +xAS wMh wMh -vtz -aFO -cyW -xAS wMh wMh wMh -iZI -lSU -jis -lSU -acU -acU -lSU -lSU -lSU -fgH -lSU -bYk -goj -chU -dsY -uKo -rZt -wjK -goj -vTj -goj -asz -agm -rZt -rZt -ard -asz -asz -asz -jrg -bJj -bJj -bJj -jrg -jrg -jrg -bJj -gpz -bJj -gpz -bJj -osE -jrg -amu -fXX -fXX -bJj -amu -puZ +pcY +pcY +uji +fRg +oYH +pvv +pvv +aTh +aVx +aWI +aYd +baX +bcJ +pvv +pvv +pvv +pvv +pvv +fRg +hGj +kLM +iQq +kLM +uqb +kLM +iQq +iQq +iQq +iQq +iQq +kLM +iQq +iQq +kLM +kLM +kLM +huz +krU +axJ +axJ +trX +uLT +wTT +fXB +ncS +hrk +hrk +nZA +kAw +kAw +kAw +kAw puZ puZ puZ @@ -35293,70 +35206,70 @@ aRL uLf nlx wMh -aFO -aFO +tlB +tlB wMh -jmW -pcY wMh -aFO -aFO -aFO -aFO -vtz -aFO -aFO +wMh +wMh +tlB xAS wMh -iZI wMh -flN -kEs -agw -agw -kEs -wXh -lSU -cvn -lSU -wOO -goj -chU -goj -lfk -rZt -uII -aiD -chU -goj -fNE -aud -rZt -rZt -mRU -ptr -aue -asz -jrg -bJj -gpz -gpz -bJj -jrg -jrg -jrg -gpz -gpz -gpz -bJj -osE -jrg -iTQ -rbq -rbq -rbq -amu -puZ +wMh +ntJ +wMh +wMh +uKZ +fRg +oYH +pvv +pvv +aUw +aVB +aWQ +aVN +aVN +aVN +bqN +aVx +dbH +pvv +pvv +gxK +hGj +iQq +iQq +iQq +kLM +iQq +iQq +iQq +iQq +iQq +iQq +iQq +kLM +kLM +iQq +iQq +iQq +huz +axJ +axJ +rBC +rdS +axJ +axJ +tkm +ncS +hrk +hrk +kAw +kAw +kAw +kAw +kAw puZ puZ puZ @@ -35455,72 +35368,72 @@ wMh wMh jJv afY -aFO +tlB tTc wMh +gZk +tlB +tlB +tlB +xAS wMh wMh -aFO -aFO -aFO -aFO -aFO -aFO -tTc -vtz -aFO -eFI -xct wMh -kEs -flN -flN -kEs -flN -kOi -lSU -lSU -lSU -lSU -bxW -wnK -goj -aNf -rZt -nBs -goj -txU -goj -fNE -aud -ptr -miD -miD -rZt -ava -asz -asz -dVw -gpz -gpz -bJj -bJj -jrg -bJj -bJj -gpz -bJj -bJj -jrg -jrg -amu -rbq -rbq -rbq -amu -puZ -puZ -puZ +wMh +ntJ +ntJ +uKZ +aQg +oYH +pvv +aTh +aUx +aVL +aWS +rNx +bbg +rNx +aWS +bYO +aWQ +dbH +fhv +fRg +hGj +kLM +kLM +iQq +iQq +kLM +vdk +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +tpg +exX +qIr +axJ +axJ +axJ +dQq +axJ +huz +huz +huz +hrk +kAw +kAw +kAw +kAw +kAw +fNf +oFl puZ puZ puZ @@ -35616,77 +35529,77 @@ wMh ntJ wMh wMh +tlB +tlB +hBq +pcY wMh -aFO -aFO -aFO -aFO -aFO -aFO -wMh -pWY -wMh -wMh -xAS -xAS +tlB +tlB +tlB wMh +pcY +pcY wMh -tig wMh -eFI -flN -kEs -kEs -fgB -kEs -kOi -lSU -coj -coj -lSU -dtE -rZt -rZt -rZt -rZt -mgT -rZt -uvU -goj -fNE -aud -miD -ptr -ptr -rZt -aCB -aeU -dwQ -bJj -bJj -bJj -bJj -bJj -bJj -bJj -bJj -gpz -bJj -bJj -bJj -jrg -amu -gpz -bJj -osE -amu -puZ -puZ -puZ -puZ -puZ -puZ -puZ +ntJ +ntJ +uKZ +aQg +oYH +pvv +aTi +aUy +aVL +vVq +aVL +aVL +aVL +aWS +clp +aVU +aUA +gIQ +fRg +hGj +uqb +uqb +uqb +kLM +iQq +ipc +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +eSN +akF +alS +aMW +wHx +dQq +axJ +axJ +huz +huz +huz +hrk +nZA +nZA +nZA +kAw +kAw +rBk +hip +puZ +puZ +puZ +puZ "} (47,1,1) = {" puZ @@ -35770,7 +35683,7 @@ oRH oRH tlB wMh -tlB +xAS wMh wMh oRH @@ -35778,71 +35691,71 @@ tlB tlB wMh wMh -aFO -aFO -aFO -aFO -wMh -wMh -wMh -wMh -wMh -iZI -wMh -wMh -wMh +tlB +tlB +hBq +pcY +pcY +dRb +dRb +dRb +pcY +pcY +pcY +pcY wMh -jmW -xct wMh wMh -gCL -flN -kEs -flN -flN -vTc -rMI -dTU -dTU -rMI -goj -wnK -goj -wnK -wnK -wnK -goj -wnK -goj -fNE -aud -rZt -rZt -rZt -nBh -ajg -asz -asz -jrg -jrg -jrg -cBU -cBU -cBU -bJj -bJj -bJj -gpz -bJj -bJj -bJj -bJj -fXX -osE -fXX -amu -puZ +uKZ +fRg +oYH +pvv +aTj +aUz +aVU +aWS +rPa +baY +rPa +aWS +cbk +aWU +deV +eVG +fRg +hGj +uqb +kLM +kLM +iQq +iQq +ipc +iQq +kLM +iQq +iQq +iQq +iQq +iQq +iQq +iQq +tpg +exX +qIr +rdS +axJ +axJ +axJ +axJ +axJ +huz +huz +sax +hrk +nZA +nZA +kAw +kAw puZ puZ puZ @@ -35939,77 +35852,77 @@ wMh oRH oRH wMh -aFO -aFO -aFO -aFO -wMh -wMh -pcY +tlB +tlB +tlB +tlB +tlB +tlB +hBq +tlB +xAS pcY pcY pcY -iZI pcY -wMh -ntJ -wMh -xct -wMh -wMh -wMh -flN -flN -eit -kEs -kEs -flN -rMI -dTU -dTU -rMI -goj -chU -goj -chU -chU -chU -goj -chU -aiD -asz -twt -agY -aha -arK -arU -asz -asz -qNE -qNE -enh -xNO -bJj -cBU -cBU -cBU -bJj -fXX -gpz -gpz -vlD -bJj -bJj -bJj -osE -bJj -amu -amu -amu -amu -amu -amu -amu +uji +uKZ +uKZ +uji +dtr +oYH +pvv +fhv +aUA +aVB +aWU +aVx +aVx +aVx +bqN +aVN +deV +dKR +pvv +fRg +hGj +kLM +iQq +iQq +iQq +iQq +iQq +kLM +kLM +uqb +kLM +iQq +iQq +iQq +iQq +iQq +tpg +exX +qIr +aut +rdS +rdS +axJ +axJ +rdS +huz +huz +sax +hrk +kAw +nZA +kAw +kAw +puZ +puZ +puZ +puZ +puZ puZ "} (49,1,1) = {" @@ -36101,77 +36014,77 @@ wMh wMh wMh wMh -aFO -aFO -aFO -aFO -aFO -wMh -pcY -pcY +tlB +tlB +oRH +tlB +tlB +tlB +tlB +tlB +xAS pcY pcY pcY pcY -jmW -abT -wMh -iZI -pWY -wMh -wMh -flN -kEs -kEs -flN -eit -vTc -asz -coj -coj -asz -dtE -goj -goj -goj -goj -goj -goj -aiD -goj -asz -agz -asz -asz -asz -asz -asz -asz -qNE -enh -xNO -acd -cBU -cBU -cBU -bJj -cBU -bJj -gpz -gpz -bJj -bJj -gpz -rbq -fXX -rbq -mwJ -fXX -fXX -fXX -fXX -pLS -amu +uKZ +cHB +xSk +afd +fRg +oYH +aSA +gIQ +aTj +aVN +aWV +aYx +bbh +beK +pvv +pvv +pvv +pvv +pvv +fRg +hGj +iQq +iQq +iQq +iQq +iQq +iQq +kLM +aDM +kLM +iQq +iQq +iQq +iQq +iQq +iQq +iQq +huz +aut +rdS +aCy +tdc +axJ +axJ +tZW +huz +huz +sax +hrk +kAw +nZA +kAw +kAw +puZ +puZ +puZ +puZ +puZ puZ "} (50,1,1) = {" @@ -36261,94 +36174,94 @@ wMh hBq wMh oRH -aFO -aFO -aFO -aFO -aFO -wMh -wMh -wMh -pcY -pcY +tlB +tlB +tlB +oRH +tlB +oRH +tlB +tlB +tlB +tlB pcY pcY pcY pcY -jmW -jmW pcY -lSU -lSU -lSU -lSU -lSU -wBf -kEs -fgB -kEs -flN -asz -asz -asz -asz -asz -asz -tDg -iWX -wZh -asz -rMI -kdy -asz -asz -asz -asz -asz -asz -asz -asz -asz -qNE -xNO -enh -wwW -bJj -bJj -bJj -jrg -cBU -bJj -fXX -fXX -bJj -gpz -bJj -bJj -fXX -vOb -cuJ -fXX -bJj -fXX -fXX -pLS -amu -puZ -"} -(51,1,1) = {" -puZ -puZ -puZ -puZ -puZ -anc -anc -iXC -ukU -iPU -anc -edw +uKZ +xSk +aNq +oYH +fRg +oYH +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +fRg +hGj +iQq +iOu +kLM +iOu +kLM +kLM +iQq +kLM +iQq +iQq +iQq +iQq +pKK +iQq +iOu +kLM +huz +rdS +axJ +amH +tbR +axJ +rdS +ixC +huz +huz +sax +hrk +kAw +kAw +kAw +kAw +puZ +puZ +puZ +puZ +puZ +puZ +"} +(51,1,1) = {" +puZ +puZ +puZ +puZ +puZ +anc +anc +iXC +ukU +iPU +anc +edw bsM iVj qII @@ -36423,15 +36336,13 @@ hBq wMh oRH xAS -aFO +tlB jCZ pGj -aFO -abH -wMh -wMh -pcY -pcY +tlB +hBn +oRH +tlB pcY pcY pcY @@ -36440,62 +36351,64 @@ pcY pcY pcY pcY -lSU -lSU -lSU -aSI -aRs -uRt -flN -sBW -rZt -nOB -rMI -rMI -asz -tRq -wdy -dTU -bZZ -dTU -twc -fNE -rZt -uvU -asz -asz -qNE -qNE -qNE -qNE -qNE -qNE -qNE -qNE -cEV -kSW -wwW -cBU -bJj -jrg -jrg -cBU -cBU -bJj -bJj -bJj -bJj -bJj -fXX -osE -gpz -amu -amu -amu -fXX -igJ -fXX -amu +uKZ +hsw +aNp +bfR +oYH +oYH +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +gqe +uji +wNB +khx +jac +khx +iHu +idG +kLM +iQq +iQq +kLM +kLM +huz +huz +huz +huz +huz +huz +mpt +axJ +rxd +sFv +axJ +rdS +hRC +huz +huz +sax +qCr +kAw +nZA +kAw +kAw +puZ +puZ +puZ +puZ +puZ puZ "} (52,1,1) = {" @@ -36585,79 +36498,79 @@ tlB wMh oRH xAS -elN +pGi jmW swV -aFO -wMh -xAS -wMh -pcY -pcY -xbn -qBn -rdp +tlB +oRH +oRH +tlB pcY pcY pcY pcY pcY -lSU -lSU -aOv -afF -rZt -rZt -gLv -afF -wBf -wnK -dTU -pkK -asz -emq -chU -kbZ -chU -gTv -chU -fNE -uvU -rZt -asz -asz -qNE -qNE -qNE -enh -enh -iSG -xNO -iSG -hRF -bax -wwW -wvS -cBU -bJj -bJj -cBU -cBU -bJj -bJj -bJj -qMc -bJj -rbq -osE -gpz -gpz -amu -amu -fXX -fXX -lAb -amu +uji +uji +uji +uji +uKZ +uKZ +uji +uji +uji +qLA +uji +uKZ +aVT +fRg +fRg +oYH +uKZ +bFS +ail +ail +ail +uKZ +uji +uji +iMA +iMA +iMA +uKZ +ehV +aDM +kTP +iQq +iQq +kLM +uqb +huz +cio +ieD +aKR +aDu +huz +axJ +rdS +rti +ieD +axJ +axJ +hIu +huz +huz +sax +sax +nZA +nZA +kAw +kAw +kAw +puZ +puZ +puZ +puZ puZ "} (53,1,1) = {" @@ -36747,79 +36660,79 @@ wMh wMh wMh oRH -aFO -pMV -aFO -aFO -wMh -wMh -pcY -pcY +tlB +xMs +tlB +oRH +tlB +oRH pcY -xbn -ppb -rdp pcY pcY pcY pcY pcY -lSU -lSU -tSI -rZt -gLv -rZt -gLv -afF -wBf -wnK -dTU -wnK -asz -kbZ -chU -gTv -sHf -tRq -chU -ogu -rZt -ukJ -asz -asz -qNE -qNE -xNO -iSG -xNO -xNO -xNO -iSG -rwy -bBT -xrC -cBU -cBU -cBU -bJj -bJj -cBU -bJj -bJj -osE -bJj -bJj -bJj -amu -gpz -gpz -amu -amu -fXX -fXX -pLS -amu +uji +uji +fRg +aMs +bYV +lJh +loH +ppI +aMs +bKV +bKV +uKZ +nUa +bKV +bKV +bKV +iDW +bzh +fRg +fRg +fRg +fRg +aKS +fRg +ohq +mKB +cLq +iMA +avx +voo +kLM +iQq +iQq +kLM +tpg +exX +qIr +azS +qny +aDu +aut +kfW +axJ +axJ +axJ +axJ +axJ +rdS +huz +huz +sax +sax +nZA +nZA +kAw +kAw +kAw +puZ +puZ +puZ +puZ puZ "} (54,1,1) = {" @@ -36910,126 +36823,126 @@ wMh wMh oRH xAS -aFO -aFO +tlB +tlB wMh xAS -ntJ -pcY -pcY -pcY -xbn -qBn -rdp -wMh -wMh -wMh -ntJ +aFO pcY -lSU -lSU -afF -sBW -xDq -aSI -afF -aUT -asz -rMI -rMI -rMI -asz -emq -wnK -dTU -wnK -dTU -hfm -asz -rZt -rZq -asz -asz -rdQ -mmW -lLE -aSC -iSG -iSG -atJ -bax -bax -bBT -xrC -cBU -bJj -bJj -cBU -cBU -bJj -fjv -iTQ -osE -gpz -gpz -bJj -amu -gpz -gpz -amu -amu -fXX -fXX -amu -amu -puZ -"} -(55,1,1) = {" -puZ -puZ -puZ -puZ -anc -jWL -nTC -nTC -nTC -nTC -nTC -nTC -pFJ -anc -xkV -fxJ -frV -gNM -aMu -azy -vYm -vYm -vYm -vYm -vYm -vYm -vYm -vYm -ntc -ntc -aEJ -mMK -eni -kOV -kOV -vYm -ntc -ntc -eni -eni -eni -ntc -kOV -ntc -kOV +gUc +xgH +xgH +xgH +gQJ +uji +uji +fRg +fRg +fRg +fRg +fRg +fRg +fRg +bKV +bKV +iMA +vHX +aWX +bKV +bKV +bsC +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +fRg +xQa +iMA +avx +uqb +kLM +iQq +iQq +kLM +tpg +exX +alW +arW +anJ +dQq +hmo +rdS +axJ +dQq +axJ +axJ +axJ +axJ +huz +huz +sax +sax +nZA +nZA +kAw +kAw +kAw +puZ +puZ +puZ +puZ +puZ +"} +(55,1,1) = {" +puZ +puZ +puZ +puZ +anc +jWL +nTC +nTC +nTC +nTC +nTC +nTC +pFJ +anc +xkV +fxJ +frV +gNM +aMu +azy +vYm +vYm +vYm +vYm +vYm +vYm +vYm +vYm +ntc +ntc +aEJ +mMK +eni +kOV +kOV +vYm +ntc +ntc +eni +eni +eni +ntc +kOV +ntc +kOV eni kOV aam @@ -37071,78 +36984,78 @@ aFO xAS oRH xAS +tlB +tlB +xAS aFO -aFO -aFO -wMh xAS -ntJ -pcY -pcY +aFO pcY -xbn -ppb -rdp -wMh -ntJ -wMh -wMh -wMh -lSU -aNL -nmi -afP -asz -asz -aTQ -asz -asz -wnK -dTU -wnK -asz -asz -qkL -fNE -fNE -asz -asz -asz -crF -crF -asz -asz -qNE -iSG -bax -aUQ -xNO -iSG -iSG -iSG -wwW -pPY -wwW -bJj -fjv -fjv -fjv -bJj -fjv -jrg -amu -osE -gpz -gpz -fXX -bJj -gpz -gpz -amu -amu -fXX -fXX -amu +aGc +qkC +tzo +qkC +tGv +dtr +fRg +bKV +bKV +bKV +bKV +bKV +bKV +bKV +bKV +bKV +iMA +vHX +bKV +bKV +bKV +bsC +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +fRg +uKZ +uKZ +vqV +kLM +kLM +iQq +iQq +iQq +kLM +huz +pJM +ayZ +rdS +bqO +axJ +bqO +axJ +axJ +axJ +axJ +axJ +axJ +huz +huz +sax +sax +nZA +nZA +nZA +kAw +kAw +fNf +oFl +puZ puZ puZ "} @@ -37233,78 +37146,78 @@ aFO aFO xAS aFO +tlB +tlB +xAS aFO aFO aFO -wMh -wMh -ntJ -pcY -pcY -pcY -xbn -qBn -tyi -wMh -ntJ -ntJ -wMh -wMh -bXo -kxx -bIh -afQ -fNE -rZt -rZt -rZt -rZt -rZt -rZt -rZt -rkc -wnK -rZt -rZt -rZt -asz -asz -hMY -rZt -rZt -asz -asz -qNE -qPi -iSG -iSG -iSG -iSG -bax -iSG -wwW -pOy -wwW -jrg -cBU -fjv -fjv -fjv -jrg -jrg -amu -osE -gpz -osE -osE -bJj -gpz -amu -amu -amu -fXX -fXX -amu +xAS +aGd +aHd +aIG +tzo +aJk +fRg +fRg +bKV +bKV +aMK +aNl +aNl +aPn +bKV +bKV +tsU +uKZ +ocB +bKV +bKV +bKV +hDW +bAX +fRg +fRg +fRg +qXk +fRg +pvv +khz +fRg +iMA +nIA +scp +kLM +iQq +iQq +kLM +iQq +iQq +huz +aQq +axJ +axJ +axJ +axJ +jJZ +oXU +axJ +dQq +axJ +axJ +rdS +huz +huz +sax +sax +kAw +kAw +kAw +kAw +kAw +rBk +hip +puZ puZ puZ "} @@ -37392,81 +37305,81 @@ wMh wMh oRH oRH +xAS +tlB +tlB +hnj +tlB +tlB +xAS aFO aFO aFO -cou -aFO -aFO -xAS -wMh -pcY -jmW -pcY -pcY -aPX -dRi -abA -wMh -wMh -wMh -ntJ -wMh -asz -aNN -afN -afP -fNE -rZt -rZt -rZt -rZt -gGf -rZt -rZt -qVo -wnK -wnK -wnK -rZt -asz -asz -hLB -rZt -rZt -asz -asz -uil -iSG -ayJ -aSC -wwW -wwW -bax -wwW -wwW -cEV -rfv -jrg -amu -iTQ -amu -amu -amu -amu -amu -osE -gpz -osE -osE -bJj -gpz -amu -amu -amu -fXX -fXX -amu +aGd +tzo +qkC +tzo +aGd +fRg +fRg +bKV +bKV +bKV +bKV +kGz +bKV +bKV +ohE +bKV +uKZ +ahe +fRg +fRg +oYH +uKZ +bwk +cex +cex +cex +uKZ +xHu +pvv +pvv +oCG +kjM +oCG +iQq +iQq +iQq +kLM +aDM +kLM +iQq +huz +huz +avz +avz +axJ +axJ +alO +pJM +rgI +rdS +axJ +kLi +alP +huz +huz +sax +sax +kAw +kAw +nZA +kAw +kAw +kAw +puZ +puZ puZ puZ "} @@ -37560,75 +37473,75 @@ wMh wMh wMh aFO +tlB +xAS aFO xAS -wMh -jmW -jmW -wMh -wMh -wMh -ntJ -wMh -ntJ -wMh -wMh -ntJ -asz -asz -asz -asz -asz -asz -krT -rZt -rZt -rZt -gGf -bDx -asz -kXt -asz -wnK -rZt -asz -asz -kPX -rZt -rZt -asz -asz -qNE -nHp -bax -aUQ -wwW -wwW -bax -wwW -wwW -jrg -jrg -jrg -amu -igJ -fXX -fXX -fXX -fXX -fXX -osE -gpz -bJj -fXX -bJj -iTQ -amu -amu -amu -fXX -fXX -amu +aGb +tzo +qkC +tzo +aGd +fRg +fRg +bKV +bKV +pzj +pzi +bKV +bKV +bKV +bKV +bKV +oYH +bKV +bKV +bKV +bKV +oYH +bKV +bKV +bKV +bKV +iMA +sFR +pvv +pvv +oCG +wRm +oCG +iQq +iQq +iQq +szU +kLM +iQq +iQq +uqb +ncS +pTp +pTp +rdS +axJ +alO +huz +qWL +aut +axJ +kLi +kLi +huz +huz +sax +sax +kAw +kAw +nZA +nZA +kAw +kAw +puZ +puZ puZ puZ "} @@ -37723,74 +37636,74 @@ xAS wMh wMh aFO -aFO +tlB xAS -wMh -wMh -ntJ -ntJ -wMh -wMh -lAN -wMh -ntJ -ntJ -wMh -asz -abn -abF -abF -abF -acg -asz -aUU -aXh -mYX -bVr -aXh -aXh -bJf -rkc -wnK -rZt -hMY -asz -asz -crF -crF -asz -asz -xNO -iSG -iSG -iSG -iSG -wwW -xrC -xrC -iSG -enh -jrg -jrg -amu -lAb -fXX -fXX -fXX -fXX -fXX -fXX -bJj -bJj -gpz -osE -bJj -mwJ -bJj -fXX -fXX -fXX -amu +uji +aGe +tzo +tzo +aJj +aGd +fRg +fRg +bKV +bKV +aMK +aNl +aNl +aPn +bKV +bKV +bKV +fRg +bKV +bKV +bKV +bKV +uHA +bKV +bKV +rfd +bKV +iMA +hFJ +fRg +dZN +fRg +iMA +tLC +hye +kLM +iQq +kLM +iQq +iQq +kLM +uqb +ncS +mRc +rdS +aXk +axJ +jFq +huz +qPh +rdS +axJ +axJ +sXt +huz +huz +sax +sax +kAw +kAw +nZA +nZA +nZA +kAw +puZ +puZ puZ puZ "} @@ -37886,73 +37799,73 @@ wMh aFO aFO aFO -aFO -aFO -wMh -wMh -ntJ -gvY -ntJ -qXC -wMh -wMh -wMh -wMh -asz -abp -abG -abJ -abG -ach -asz -aWC -aWs -qkR -eRG -sbd -wnK -aXH -rkc -wnK -rZt -fir -asz -asz -rZt -rZt -asz -asz -iSG -iSG -iSG -bax -bax -wwW -xrC -nRL -kSW -enh -jrg -jrg -amu -cur -fXX -fXX -amu -amu -iTQ -bJj -fXX -gpz -gpz -bJj -fXX -cuJ -fXX -bJj -fXX -fXX -amu +tlB +uji +ahX +qkC +tzo +qkC +mhS +dtr +fRg +bKV +bKV +bKV +bKV +bKV +bKV +bKV +bKV +bKV +fRg +bKV +bKV +bKV +bKV +fRg +bKV +bKV +bKV +bKV +uKZ +uKZ +iMA +iMA +iMA +uKZ +uKZ +ehV +kLM +iQq +iQq +iQq +kLM +kLM +uqb +ncS +bWB +auh +aTO +hkS +itR +oNz +qOE +rdS +axJ +sYx +wFm +huz +huz +sax +sax +kAw +kAw +nZA +hrk +nZA +kAw +puZ +puZ puZ puZ "} @@ -38048,73 +37961,73 @@ wMh xAS xAS aFO -aFO -aFO -aFO -wMh -tRn -wMh -wMh -wMh -pyB -lAN -wMh -wMh -asz -abp -abJ -abJ -abJ -aSK -aTR -rMI -acY -rZt -bJi -rZt -wnK -aXH -rkc -wnK -wnK -asz -asz -dTj -rZt -rZt -tYA -fNE -iSG -aHz -iSG -bax -bax -eSc -xrC -cBs -xNO -enh -jrg -jrg -amu -amu -fXX -fXX -amu -jrg -osE -bJj -gpz -gpz -gpz -osE -bJj -iTQ -iTQ -amu -amu -amu -amu +xAS +uji +rXn +dsx +dsx +dsx +waS +uji +uji +fRg +fRg +pgh +fRg +fRg +fRg +lro +bKV +bKV +oYH +bKV +meg +bKV +bbi +beP +bKV +meg +bKV +bKV +eGG +bKV +bKV +ftr +obb +vHX +iMA +ehV +kLM +iQq +iQq +kLM +uqb +uqb +huz +huz +auh +bWB +qvY +gZZ +iof +aDu +qoY +axJ +axJ +wFm +sYx +huz +huz +sax +sax +nZA +kAw +nZA +nZA +nZA +kAw +puZ +puZ puZ puZ "} @@ -38211,70 +38124,70 @@ vXw wMh xAS aFO -aFO -aFO -aFO -wMh -kSO -thK -xog -kqE -wMh -wMh -wMh -asz -aNP -abJ -abG -abJ -abJ -rZt -kxx -oZs -bJi -bJi -bJi -wnK -bQx -asz -asz -qkL -asz -asz -rZt -rZt -iEF -cYC -fNE -iSG -iSG -bax -wwW -xrC -xrC -xrC -iSp -xNO -xNO -enh -jrg -jrg -amu -fXX -fXX -amu -jrg -bJj -gpz -bJj -bJj -bJj -osE -bJj -amu -puZ -puZ -puZ +uji +uji +uji +uji +uji +uji +uji +uji +uji +aKL +uji +aNh +aLs +uji +uji +iMA +iMA +uKZ +oYH +gxK +fRg +oYH +uKZ +iMA +iMA +uji +uKZ +uKZ +bKV +okc +bKV +krm +iXx +iMA +ehV +uqb +kLM +iQq +nAs +uqb +ajE +huz +qSW +arZ +aIh +aPf +gtx +aTO +oww +qmv +axJ +axJ +axJ +axJ +huz +huz +sax +sax +kAw +kAw +hrk +kAw +nZA +kAw puZ puZ puZ @@ -38373,71 +38286,71 @@ hPp pcY wMh xAS -aFO -aFO -nhF -aFO -rJI -pvR -vjg -wiG -wMh -ntJ -wMh -asz -aNR -abJ -abG -abJ -abJ -rZt -kxx -oZs -bJi -bJi -ahZ -eRG -aXH -rZt -rZt -rZt -hAX -crF -rZt -rZt -rZt -fhd -fNE -iSG -iSG -bax -wwW -xrC -xrC -xrC -xrC -xNO -xNO -enh -jrg -jrg -amu -eom -fXX -amu -osE -osE -bJj -bJj -bJj -bJj -bJj -bJj -amu -puZ -puZ -puZ -puZ +uji +uji +uji +uji +uji +uji +uji +uji +aLk +bKV +bKV +aNg +bKV +aOb +uji +snX +fRg +aKS +fRg +fRg +dLk +fRg +aKS +fRg +fRg +fRg +rIj +uKZ +giH +uji +iMA +iMA +iMA +uKZ +ehV +uqb +kLM +iQq +iQq +kLM +ajd +huz +fjS +anJ +aGf +aNE +ggr +hLE +qvY +qkQ +axJ +axJ +axJ +axJ +huz +huz +sax +iZj +kAw +kAw +hrk +kAw +nZA +kAw +hrk puZ puZ puZ @@ -38535,71 +38448,71 @@ pcY pcY wMh xAS -aFO -aFO -aFO -wMh -rJI -gso -aJd -ntJ +tPB wMh wMh +ntJ +ntJ +ntJ wMh -asz -abp -abJ -abJ -abJ -abJ -rZt -rMI -oZs -azm -bJi -rZt -wnK -aXH -rZt -rZt -rZt -dwQ -crF -rZt -rZt -rZt -rZt -fNE -iSG -iSG -wwW -xrC -wwW -jjq -iYu -eMx -xNO -xNO -jrg -jrg -jrg -amu -fXX -fXX -amu -osE -osE -gpz -bJj -jrg -bJj -bJj -gpz -osE -puZ -puZ -puZ -puZ +iMA +aKQ +bKV +bKV +omu +aFr +uji +uji +pvv +kJw +pvv +pvv +pvv +pvv +pvv +sYh +pvv +pvv +pvv +pvv +eGs +fRg +uji +xwo +jhm +bHC +bHC +iKW +kLM +iQq +iQq +iQq +iQq +qIr +oWk +qIr +anG +axJ +axJ +ggh +rdS +owe +axJ +rdS +axJ +axJ +axJ +huz +huz +sax +kAw +kAw +nZA +nZA +kAw +kAw +kAw +hrk puZ puZ puZ @@ -38697,71 +38610,71 @@ pcY jmW wMh aFO -aFO -aFO +tPB wMh -ntJ -rJI -gso -faR -ntJ wMh wMh +ntJ +ntJ wMh -asz -abp -abG -abJ -abG -acj -asz -aUX -aWB -gTU -wnK -wnK -wnK -aXH -rZt -rZt -rZt -asz -asz -rZt -rZt -hCY -hCY -fNE -iSG -iSG -xrC -wwW -bax -iSG -xrC -xrC -xNO -jrg -jrg -jrg -jrg -amu -fXX -fXX -amu -iTQ -bJj -gpz -bJj -jrg -bJj -bJj -gpz -osE -puZ -puZ -puZ -puZ +iMA +aJM +aJU +bKV +aLk +bMK +uji +snX +pvv +aSA +pvv +vFR +eVG +pvv +pvv +pvv +aSA +pvv +pvv +pvv +pvv +fRg +hvZ +kLM +iOu +kLM +iOu +kLM +iQq +kLM +iQq +iQq +iQq +qIr +oWk +qIr +ans +ans +aMW +fMq +aut +axJ +rdS +aut +huz +huz +huz +huz +huz +hrk +kAw +hrk +hrk +nZA +kAw +kAw +nZA +nZA puZ puZ puZ @@ -38859,70 +38772,70 @@ pcY jmW wMh nuy -nuy -aFO +vgR wMh ntJ -rJI -gso -qIu -ntJ ntJ wMh +ntJ wMh -asz -abx -abM -abM -abM -ack -asz -aUY -vjs -aXw -kaL -wnK -wnK -aXH -rZt -rZt -rZt -fNE -ril -rZt -iEF -far -nVL -fNE -iSG -wwW -xrC -wwW -wwW -enh -xNO -xNO -jrg -jrg -jrg -jrg -jrg -amu -fXX -fXX -osE -osE -gpz -gpz -jrg -jrg -bJj -bJj -osE -osE -puZ -puZ -puZ +uKZ +iMA +iMA +uji +uji +uji +uji +fRg +pvv +pvv +aTh +aVx +aWI +aYd +baX +bcJ +pvv +pvv +pvv +aSA +pvv +fRg +hvZ +kLM +iQq +iQq +iQq +iQq +kLM +iQq +iQq +iQq +iQq +qIr +akF +alS +ans +axJ +axJ +fbf +fbf +ook +hAS +aDu +huz +huz +huz +huz +huz +kAw +kAw +nZA +nZA +nZA +kAw +kAw +nZA puZ puZ puZ @@ -39021,70 +38934,70 @@ wMh wMh aFO nuy -nuy -aFO +hBq wMh -tRn -aNy -xtc -ggv +pcY ntJ +jmW +wMh ntJ wMh +fEl wMh -asz -asz -asz -asz -asz -asz -asz -ufb -wnK -jaU -uEx -bJi -bJi -aXH -rZt -rZt -rZt -fNE -mWA -rZt -iEF -etV -tNN -fNE -wwW -wwW -xrC -wwW -wwW -enh -enh -jrg -jrg -jrg -jrg -jrg -jrg -amu -fXX -fXX -osE -osE -bJj -bJj -jrg -jrg -jrg -bJj -bJj -bJj -puZ -puZ -puZ +hBq +lRJ +uKZ +fRg +gxK +pvv +pvv +aUw +fof +aWQ +aVN +aVN +aVN +bqN +aVN +dbH +wTz +pvv +fRg +hvZ +iQq +kLM +iQq +iQq +iQq +iQq +iQq +kLM +iQq +iQq +qIr +exX +qIr +rdS +rdS +axJ +axJ +axJ +bsS +pKf +iYC +huz +huz +oBV +pRU +hrk +hrk +kAw +nZA +nZA +nZA +kAw +kAw +nZA puZ puZ puZ @@ -39183,70 +39096,70 @@ aFO aFO aFO aFO -aFO -aFO -aFO -wMh -ofr -nJu -tze -wMh wMh -ntJ wMh pcY pcY -pcY -pcY -pcY -pcY -asz -asz -asz -ahu -qfI -bJi -bJi -nAp -rZt -asz -asz -asz -asz -qkL -asz -asz -asz -asz -wwW -wwW -iSG -enh -enh -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -amu -amu -amu -bJj -fXX -gpz -bJj -bJj -jrg -jrg -bJj -gpz -osE -puZ -puZ -puZ +jmW +jmW +wMh +wMh +fEl +upK +hBq +hBq +uKZ +fRg +fRg +pvv +aTh +aUx +aVM +aWS +rNx +bbg +rNx +aWS +bYO +aWQ +dbH +wvx +fRg +hvZ +kLM +iQq +kLM +iQq +iQq +iQq +kLM +snN +kTP +iQq +huz +huz +kLi +amI +aCy +rdS +axJ +axJ +nTu +hAS +sjh +huz +huz +tuA +kAw +hrk +hrk +kAw +kAw +kAw +nZA +kAw +kAw +nZA puZ puZ puZ @@ -39345,70 +39258,70 @@ tPs aFO aFO aFO -aFO -aFO -aFO -aFO -wMh -aFO -aFO -jmW wMh -lAN -ntJ wMh -cQY -skK -kSO -xog pcY pcY -asz -asz -asz -tpL -orO -orO -tJY -asz -asz -asz -gSJ -bJi -bJi -bJi -asz -xvd -lVJ -iSG -wwW -iSG -enh -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -fXX -bJj -bJj -gpz -bJj -bJj -bJj -gpz -bJj -puZ -puZ -puZ +pcY +pcY +pcY +pcY +pcY +lAN +nyc +tlB +uKZ +wUy +fRg +pvv +aTi +aUy +aVL +aWT +aVL +bOh +aVL +aWS +aVL +aVL +dCS +eoH +fRg +hvZ +iQq +iQq +kLM +iQq +iQq +kLM +bcM +aDM +lNg +kLM +huz +huz +dLi +amH +qsN +aMN +faH +hHf +nTu +qsN +iYC +huz +huz +dWO +hbB +kAw +hrk +kAw +kAw +kAw +kAw +kAw +oBV +nZA puZ puZ puZ @@ -39484,91 +39397,91 @@ aXb eni ntc kOV -oRH -xAS -aFO -aFO -aFO -wMh -jmW -xAS -xAS -aFO -aFO -xAS -xAS -aFO -aFO -cou -aFO -aFO -pMV -aFO -aFO -aFO -aFO -aFO -cou -aFO -aFO -aFO -aFO -aFO -aFO -aFO -wMh -wMh -wMh -cQY -ntJ -aNy -xtc -pcY -pcY -asz -crF -aXH -bJi -crF -crF -tHD -uEx -crF -fNE -hyx -xFp -xFp -sHL -asz -lVN -iSG -iSG -wwW -iSG -enh -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -gpz -bJj -gpz -gpz -gpz -bJj -bJj -bJj -bJj -puZ +oRH +xAS +aFO +aFO +aFO +wMh +jmW +xAS +xAS +aFO +aFO +xAS +xAS +aFO +aFO +cou +aFO +aFO +pMV +aFO +aFO +aFO +aFO +aFO +wMh +pcY +pcY +pcY +pcY +pcY +pcY +hBq +tlB +hBq +tlB +uKZ +xHu +fRg +pvv +aTj +cov +eHL +aWS +rPa +baY +rPa +aWS +fXp +aWU +deV +uyI +fRg +hvZ +iQq +iQq +iQq +iQq +iQq +iQq +kLM +aDM +uqb +iQq +huz +huz +huz +huz +huz +huz +huz +huz +huz +huz +huz +huz +huz +nNX +hbB +kAw +kAw +kAw +hrk +kAw +kAw +jzs puZ puZ puZ @@ -39669,68 +39582,68 @@ aFO aFO wMh aFO -nuy -aFO -aFO -aFO -xAS -aFO -aFO aFO -aFO -aFO -wMh -wMh -pei -wMh -xfZ -ntJ pcY pcY -asz -crF -aXH -tHD -crF -crF -tHD -uEx -crF -fNE -qud -tZA -ctC -ctC -asz -asC -asC -iSG -asC -asC -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -gpz -gpz -gpz -gpz -gpz -gpz -gpz -gpz -bJj -bJj +pcY +pcY +pcY +pcY +nyc +hBq +xCD +hBq +tlB +uKZ +uwS +fRg +pvv +pvv +aUw +xyY +aWU +aVx +aVx +aVx +bqN +aUA +deV +pti +pvv +fRg +hvZ +kLM +iQq +iQq +iQq +iQq +iQq +kLM +lNg +kLM +iQq +iQq +huz +huz +huz +huz +huz +huz +huz +huz +huz +huz +huz +huz +dWO +hbB +kAw +kAw +kAw +hrk +kAw +nZA +kAw puZ puZ puZ @@ -39831,68 +39744,68 @@ cou wMh wMh wMh -aFO -aFO -aFO -xAS wMh -jmW -aFO -aFO -aFO -aFO -aFO -aFO -cQY -mbt -mbt -mbt pcY pcY -asz -asz -asz -uOc -pCI -gmV -vTc -asz -asz -asz -fNE -fNE -fNE -fNE -asz -kVd -kVd -uzu -xgc -uzu -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -osE -gpz -gpz -gpz -gpz -bJj -bJj -bJj -gpz -bJj -bJj +pcY +pcY +pcY +hBq +nyc +hBq +cps +tlB +tlB +uKZ +oIR +fRg +pvv +pvv +aTj +aVN +aWV +aYx +bbh +beK +aSA +gIQ +oXM +pvv +pvv +fRg +hvZ +kLM +kLM +iQq +iQq +iQq +iQq +iQq +kLM +kLM +iQq +iQq +iQq +lXQ +cwZ +kAw +kAw +nZA +kAw +kAw +hrk +hrk +hrk +acl +kAw +kAw +hrk +kAw +kAw +kAw +kAw +kAw +puZ puZ puZ puZ @@ -39994,67 +39907,67 @@ wMh jmW jmW wMh -aFO -aFO -aFO -wMh -tJP -lAN -aFO -aFO -aFO -aFO -wMh -wMh -wMh -wMh -wMh -wMh pcY pcY -siZ -ukp -kVd -kVd -boW -boW -boW -siZ -dkv -xgc -kVd -kVd -rAH -rAH -kVd -uzu -boW -xgc -uzu -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -gpz -bJj -bJj -jrg -bJj -bJj -bJj -bJj -bJj -bJj +pcY +pcY +pcY +hBq +hBq +tlB +aFO +hBq +hBq +uKZ +rIj +wCn +pvv +pvv +pvv +pvv +pvv +mOY +drM +pvv +aSA +uaa +pvv +pvv +pvv +fRg +hvZ +kLM +iOu +kLM +iOu +kLM +kLM +iQq +kLM +iQq +iQq +kLM +iQq +jWh +cwZ +kAw +kAw +kAw +kAw +nZA +hrk +hrk +nZA +hRY +hrk +nZA +nZA +nZA +kAw +kAw +kAw +nDv +puZ puZ puZ puZ @@ -40126,98 +40039,98 @@ kOV kOV kOV kOV -kOV -kOV -aqd -eBc -aqI -aqI -aqI -aqI -asj -ntc -jmW -xAS -aFO -aFO -aFO -pMV -aFO -xAS -wMh -xAS -wMh -pcY -pcY -wMh -aFO -wMh -jmW -jmW -jmW -wMh -aFO -aFO -aFO -xAS -tJP -wMh -aFO -aFO -wMh -wMh -wMh -wMh -ntJ -ntJ -wMh -wMh -ukp -kVd -ckH -lIa -lIa -qjY -qjY -qjY -qjY -tsK -qjY -tsK -lIa -oHf -oHf -oHf -lIa -qjY -tsK -tsK -ckH -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -bJj -gpz -bJj -jrg -jrg -bJj -bJj -bJj -bJj -bJj -bJj -bJj +kOV +kOV +aqd +eBc +aqI +aqI +aqI +aqI +asj +ntc +jmW +xAS +aFO +aFO +aFO +pMV +aFO +xAS +wMh +xAS +wMh +pcY +pcY +wMh +aFO +wMh +jmW +jmW +jmW +wMh +pcY +pcY +pcY +pcY +tJP +nyc +tlB +xAS +xCD +xAS +hBq +uKZ +rIj +ohq +pvv +pvv +pvv +tXL +pvv +pvv +pvv +pvv +pvv +pvv +pvv +hZI +pvv +fWq +uji +iOA +aDM +lNg +kLM +uqb +uqb +iQq +iQq +kLM +kLM +kLM +kLM +fpF +wSv +kAw +kAw +kAw +kAw +kAw +nZA +nZA +nZA +aco +hrk +nZA +nZA +nZA +kAw +nZA +nZA +puZ +puZ +puZ puZ puZ puZ @@ -40318,68 +40231,68 @@ wMh jmW wMh wMh -aFO +wMh +pcY +pcY +tlB +hBq +tlB +xAS aFO xAS xAS -tJP -faW -faW -faW -jmW -wMh -wMh -wMh -ntJ -ntJ -wMh -wMh -kVd -kVd -kVd -kVd -kVd -boW -boW -boW -boW -xgc -boW -xgc -xgc -kVd -rAH -rAH -kVd -xgc -kVd -ukp -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -bJj -bJj -osE -bJj -bJj -jrg -jrg -bJj -bJj -osE -bJj -bJj -bJj -bJj +oRH +uKZ +uKZ +uKZ +fRg +fRg +fRg +fRg +fRg +fRg +oZR +fRg +iXc +fRg +bxL +bxL +gGc +rzR +uji +qrY +qrY +qrY +hHR +hHR +xCz +uxZ +uxZ +uxZ +lWC +hHR +hHR +sax +sax +sax +hrk +kAw +kAw +kAw +kAw +kAw +kAw +teK +hrk +hrk +hrk +kAw +nZA +nZA +puZ +puZ +puZ +puZ puZ puZ puZ @@ -40481,67 +40394,67 @@ wMh ntJ wMh aFO +hBq +xAS +xAS +xAS +xAS +xAS aFO -cpC -lfe -pcY -pcY -pcY -pcY -mTN +oRH nzr -uZF -wMh -wMh -ntJ -ntJ -wMh -kVd -kVd -xgc -xgc -boW -boW -boW -xgc -boW -xgc -xgc -rAH -xgc -xgc -rAH -rAH -kVd -xgc -uzu -mhs -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -bJj -jrg -bJj -bJj -bJj -iel -jrg -jrg -bJj -bJj -osE -bJj -bJj -jrg -bJj +xAS +oRH +hBq +uKZ +uKZ +uji +gpF +oYH +fUP +uji +uKZ +iMA +iMA +iMA +uKZ +uKZ +uKZ +uKZ +uji +ofw +ofw +jMf +tHd +kop +kop +kyD +kyD +kyD +tHd +kop +gzb +sax +sax +sax +bcV +oFl +kAw +kAw +kAw +hrk +bcV +tFd +hrk +hrk +kAw +nZA +nZA +nZA +puZ +puZ +puZ +puZ puZ puZ puZ @@ -40641,69 +40554,69 @@ ntc xAS wMh wMh -wMh -jmW -wMh -wMh -kSO -xog -pcY -pcY -pcY -kSO -xog +aFO +aFO +aFO +aFO +xAS +aFO +aFO +aFO +xAS +xAS +aFO wTx -wMh -wMh -ntJ -wMh -vnr -kVd -kVd -dyt -dyt -fHx -xgc -boW -boW -xgc -boW -boW -boW -xgc -xgc -kVd -rAH -rAH -uzu -kVd -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -bJj -bJj -bJj -bJj -osE -osE -bJj -bJj -bJj -mie -jrg -bJj -bJj -gpz -bJj -bJj -bJj -bJj +xAS +fOa +aFO +aFO +uji +uKZ +jLX +uKZ +uji +tHd +rtZ +tHd +tHd +rtZ +kop +kop +xvp +tHd +jMf +xvp +kop +kop +kop +tHd +kyD +kyD +kyD +tHd +kop +bhN +fCs +sax +sax +rBk +vAU +kAw +kAw +kAw +tad +tlr +tuz +tFy +hrk +kAw +nZA +nZA +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -40775,96 +40688,96 @@ aqI asj kOV kOV -kOV -kOV -eni -kOV -eni -eni -mMK -ntc -ntc -vYm -ntc -vYm -vYm -xAS -xAS -aFO -aFO -wMh -pcY -pcY -kOV -toD -toD -toD -toD -jmW -wMh -wMh -jmW -xAS -xAS -pcY -aNy -xtc -pcY -pcY -pcY -aNy -xtc -qKA -ntJ -wMh -wMh -ntJ -ntJ -kVd -kVd -boW -boW -xgc -boW -boW -boW -boW -boW -boW -boW -boW -kVd -xgc -rAH -rAH -uzu -kVd -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -jrg -bJj -bJj -bJj -osE -osE -bJj -gpz -bJj -bJj -jrg -gpz -gpz -bJj -bJj -bJj -bJj +kOV +kOV +eni +kOV +eni +eni +mMK +ntc +ntc +vYm +ntc +vYm +vYm +xAS +xAS +aFO +aFO +wMh +pcY +pcY +kOV +toD +toD +toD +toD +jmW +wMh +wMh +aFO +aFO +aFO +aFO +aFO +xAS +xAS +xAS +aFO +aFO +aFO +aFO +oRH +xAS +aFO +aFO +wwZ +qnJ +jOi +qnJ +mkC +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +tHd +iMC +kyD +kyD +tHd +tHd +kyD +tHd +kyD +kyD +tHd +kop +bhN +fCs +sax +sax +sax +sax +kAw +kAw +kAw +acl +rBk +vAU +hrk +kAw +nZA +nZA +nZA +puZ +puZ +puZ +puZ puZ puZ puZ @@ -40965,68 +40878,68 @@ kOV wMh wMh wMh -ntJ -pcY -pcY -pcY -pcY -pcY -pcY -pcY -pcY -pcY -gXW -muI -wMh wMh -eKp -mda +oRH wMh -wRL -kVd +xAS +xAS +xAS +aFO +aFO +xAS +xAS +xAS +xAS +xAS +aFO +aFO +aFO +wLM ajy -boW -akf -boW -boW -boW -boW -boW -boW -boW -boW -boW -xgc -xgc -kVd -kVd -uzu -ukp -jrg -jrg -jrg -jrg -jrg -jrg -xgc -ukp -ukp -kVd -kVd -bJj -bJj -bJj -bJj -gpz -dhx -bJj -osE -gpz -gpz -bJj -bJj -bJj -bJj +jOi +ajy +ppS +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +tHd +kop +lip +sax +sax +sax +sax +kAw +kAw +nZA +kAw +aco +kAw +hrk +kAw +nZA +nZA +nZA +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -41128,66 +41041,66 @@ pcY pcY wMh wMh -ntJ -wMh -wMh -pcY -bQX -wMh -cBX -wMh -wMh -hlh wMh +oRH +oRH +xAS wMh -pcY -pcY -pcY -acc -kVd -kVd -boW -boW -boW -boW -boW -boW -boW -boW -boW -fHx -boW -boW -kVd -xgc -rAH -kVd -kVd -uzu -ukp -jrg -jrg -jrg -jrg -jrg -ukp -kVd -xgc -xgc -rAH -kVd -bJj -bJj -bJj -bJj -bJj -bJj -gpz -gpz -bJj -bJj -jrg -bJj +aFO +xAS +oRH +xAS +xAS +aFO +aFO +aFO +aFO +aFO +wLM +ajy +jOi +ajy +ppS +kyD +kyD +kyD +kyD +kyD +kyD +tHd +tHd +kyD +tHd +tHd +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +tHd +ofw +sax +hrk +llZ +kAw +nZA +nZA +nZA +kAw +aco +kAw +kAw +kAw +nZA +kAw +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -41289,67 +41202,67 @@ aby pcY pcY wMh -wMh -wMh -wMh -wMh -wMh -wMh -wMh -hlh -hPp -hPp -hPp -hPp -hPp -hPp -hPp -pcY -pcY -kVd -kVd -dyt -dyt -fHx -boW -boW -boW -boW -boW -boW -dyt -boW -boW -boW -rAH -xgc -kVd -kVd -uzu -ukp -jrg -jrg -ukp -ukp -jrg -uzu -xgc -xgc -xgc -xgc -uzu -rAH -osE -bJj -bJj -bJj -bJj -gpz -gpz -bJj -bJj -bJj -bJj +hBq +vCe +oRH +oRH +xAS +xAS +aFO +aFO +xAS +xAS +oRH +xAS +xAS +aFO +aFO +aFO +wLM +ajy +jOi +ajy +ppS +tHd +tHd +tHd +kop +aQJ +kop +eyx +kop +tHd +kop +kop +tHd +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +grk +hrk +kAw +qgP +kAw +nZA +qgP +kAw +aco +kAw +nZA +kAw +kAw +nZA +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -41414,102 +41327,102 @@ oHE aLv pvU pvU -sfY -rfU -kOV -aCo -jrR -jrR -asu -mMK -eni -lop -eni -eni -eni -ntc -ntc -tJe -asB -ntc -ntc -vYm -ntc -eni -kOV -kOV -kOV -kOV -hUv -arP -arP -ijA -aqE -aqE -asI -abz -pcY -wMh -wMh -jmW -wMh -ntJ -wMh -ntJ -hlh -wMh -jmW -hPp -aMy -mnZ -pwT -mnZ -qKn -hPp -pcY -pcY -ukp -kVd -boW -boW -boW -boW -boW -xgc -boW -boW -boW -dyt -boW -boW -boW -kVd -xgc -rAH -uzu -uzu -uzu -ukp -ukp -uzu -uzu -fkB -xgc -uzu -rAH -rAH -uzu -rAH -kVd -osE -bJj -bJj -bJj -gpz -bJj -bJj -bJj -bJj +sfY +rfU +kOV +aCo +jrR +jrR +asu +mMK +eni +lop +eni +eni +eni +ntc +ntc +tJe +asB +ntc +ntc +vYm +ntc +eni +kOV +kOV +kOV +kOV +hUv +arP +arP +ijA +aqE +aqE +asI +abz +pcY +wMh +wMh +ulI +hBq +mzf +oRH +wMh +xAS +aFO +xAS +xAS +oRH +tlB +oRH +oRH +xAS +aFO +aFO +lCg +ajy +jOi +ajy +lGT +jMf +tHd +kop +jMf +sJo +ofw +etl +fLi +gGT +kop +tHd +xvp +kyD +kyD +kyD +tHd +kyD +kyD +kyD +tHd +oDi +nRD +kAw +vPr +kAw +nZA +nZA +sax +kAw +acp +kAw +nZA +nZA +kAw +nZA +puZ +puZ +puZ puZ puZ puZ @@ -41615,62 +41528,62 @@ ntJ wMh wMh wMh -ntJ -ntJ -ntJ wMh -sFj -hPp -hPp -quO +vzM +wMh +xAS +aFO +aFO +jNr +xAS pwT -hVr +tlB sud ggC -hPp -pcY -ukp -rAH -kVd -boW -boW -boW -boW -boW -boW -xgc -boW -boW -boW -boW -boW -boW -xgc -xgc -kVd -kVd -kVd -uzu -ukp -pLf -rAH -rAH -oHf -rAH -kVd -rAH -kVd -rAH -rAH -bJj -bJj -bJj -gpz -gpz -osE -bJj -bJj -bJj +xAS +aFO +uir +bni +bni +bni +uir +ofw +jMf +tHd +kop +jMf +gGT +kop +rli +kop +kop +tHd +kyD +kyD +kyD +tHd +kyD +tHd +kyD +kyD +kyD +tHd +kjX +kAw +vPr +qgP +vPr +sax +sax +sax +sax +kAw +nZA +nZA +kAw +puZ +puZ +puZ puZ puZ puZ @@ -41781,56 +41694,56 @@ jmW wMh ntJ ntJ -swn -hPp -aKo -qBN -jOi -jOi -jOi -fGb -hPp -xgc -rAH -xgc -kVd -boW -boW -boW -boW -xgc -boW -boW -boW -boW -boW -boW -boW -xgc -xgc -xgc -kVd -kVd -plS -uzu -uzu -rAH -rAH -rAH -fkB -xgc -rAH -kVd -kVd -bJj -bJj -bJj -osE -osE -gpz -osE -bJj -bJj +oRH +oRH +oRH +oRH +oRH +oRH +tlB +tlB +tlB +tHd +kwa +kwa +kyD +kyD +kyD +kyD +kyD +tHd +kyD +kyD +kyD +kyD +kyD +kop +kop +kop +tHd +tHd +jMf +jMf +qLS +ofw +ofw +kop +kyD +kop +hbp +kAw +llZ +nZA +nZA +acl +kAw +kAw +hrk +hrk +nZA +hrk +kAw +kAw puZ puZ puZ @@ -41944,55 +41857,55 @@ wMh jmW ntJ wMh -bni -jOi -txO -jOi -jOi -jOi -jOi -bni -xgc -xgc -boW -xgc -ajy -boW +oRH +oRH +oRH +oRH +oRH +tlB +hBq +tlB +tHd +qrY +kyD +kwa +kyD +kyD akf -boW -boW -xgc -boW -boW -boW -boW -boW -boW -xgc -kVd -kVd -kVd -plS +fDH +kyD +tHd +kyD +kyD +kyD +kop +kop +kop +kop +jMf +jMf +jMf +qLS bRU -uzu -rAH -ukp -uzu -rAH -fkB -uzu -uzu -uzu -ukp -bJj -bJj -bJj -osE -gpz -gpz -gpz -bJj -bJj +ofw +kop +mwE +ofw +kyD +hbp +kAw +kAw +jaT +hrk +aco +kAw +qgP +hrk +nZA +nZA +nZA +kAw +kAw puZ puZ puZ @@ -42106,54 +42019,54 @@ pcY wMh wMh wMh -bni -jOi -jOi -jOi -jOi -jOi -jOi -bni -rAH -rAH -boW -boW -boW -boW -boW -boW -boW -boW -boW -boW -boW -boW -boW -boW -kVd -uzu -kVd -kVd -kVd -uzu -plS -rAH -rAH -rAH -rAH -rAH -ckH -ukp -ukp -jrg -bJj -bJj -jrg -osE -gpz -gpz -osE -bJj +oRH +kAm +hBq +kAm +hBq +hBq +xAS +oRH +kop +qrY +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +jMf +ofw +jMf +jMf +jMf +ofw +qLS +kop +kyD +kop +kyD +mxr +kAw +vPr +vPr +nZA +acp +kAw +sax +hrk +nZA +nZA +hrk +kAw puZ puZ puZ @@ -42265,57 +42178,57 @@ wMh ntJ pcY pcY -kVd -kVd -kVd -hPp -hPp -hPp -hPp -hPp -hPp -hPp -hPp -rAH -xgc -xgc -boW +jMf +jMf +jMf +kAm +oRH +hBq +oRH +hBq +xAS +tlB +oRH +kop +qrY +kyD +kyD dyt dyt -boW -boW -boW -boW -boW -boW -boW -boW -xgc -boW -xgc -xgc -kVd -kVd -kVd -uzu -kVd -uzu +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +tHd +kyD +tHd +tHd +jMf +jMf +jMf +ofw +jMf +ofw bhB -rAH -rAH -ukp -jrg -jrg -jrg -jrg -jrg -bJj -bJj -osE -bJj -bJj -bJj -bJj +kop +kop +gss +sax +sax +sax +sax +sax +kAw +kAw +hrk +kAw +kAw +kAw +kAw puZ puZ puZ @@ -42427,57 +42340,57 @@ jmW pcY pcY pcY -rAH -rAH -rAH -siZ -pFq -fVl -qOP -aMZ -uzu -xgc -siZ -rAH -xgc -xgc -boW -boW +kop +kop +kop +kop +kop +kop +kop +kop +jMf +kop +ofw +kop +kyD +kyD +kyD +kyD fHx -boW -xgc -boW -boW -boW -boW -boW -boW -boW -boW -xgc -xgc -kVd -kVd -xgc -kVd -rAH -kVd -uzu -uzu -ddA -kVd -ukp -jrg -jrg -jrg -jrg -jrg -bJj -osE -bJj -bJj -bJj -bJj +kyD +tHd +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +tHd +tHd +jMf +jMf +tHd +jMf +kop +jMf +ofw +ofw +rgy +jMf +gss +sax +sax +sax +sax +sax +kAw +hrk +kAw +kAw +kAw +kAw puZ puZ puZ @@ -42589,56 +42502,56 @@ wMh pcY pcY pcY -rAH -rAH -rAH -kVd -kVd -kVd -kVd -kVd -kVd -kVd -kVd +kop +kop +kop +kop +kop +jMf +kop +ofw +jMf +jMf +jMf agy -boW -boW -boW -boW -boW -boW -boW -xgc -boW -boW -boW -boW -xgc -boW -boW -rAH -rAH -aaf -rAH -rAH -ddA -xgc -rAH -uzu -msh -uzu -uzu -rAH -ukp -jrg -jrg -jrg -jrg -jrg -osE -gpz -gpz -bJj +kyD +kyD +kyD +kyD +qrY +kyD +kyD +tHd +kyD +kyD +kyD +kyD +tHd +kyD +kop +kop +kop +bnD +kop +kop +rgy +tHd +kop +ofw +oxP +ofw +ofw +kop +mwE +sax +sax +sax +sax +sax +hrk +nZA +nZA +kAw puZ puZ puZ @@ -42751,56 +42664,56 @@ wMh pcY pcY pcY -rAH -rAH -rAH -kVd -uzu -kVd -uzu -kVd -uzu -kVd -rAH -xgc -ajy -boW -xgc -boW -boW -boW -boW -boW -boW -boW -boW -xgc -boW -boW -boW -kVd -kVd -rAH -rAH -kVd -rAH -rAH -xgc -kVd -kVd -kVd -rAH -rAH +kop +kop +kop +jMf +ofw +jMf +ofw +jMf +ofw +jMf +kop +tHd +kyD +kyD +kyD +kyD +qrY +kyD +kyD +kyD +kyD +kyD +kyD +tHd +kyD +kyD +kyD +jMf +jMf +kop +kop +jMf +kop +kop +tHd +jMf +jMf +jMf +kop +kop mhs -jrg -jrg -jrg -jrg -jrg -bJj -bJj -bJj -bJj +sax +sax +sax +sax +sax +kAw +kAw +qgP +kAw puZ puZ puZ @@ -42909,59 +42822,59 @@ kOV ntc kOV kOV -ukp -kVd -kVd -dHr -rAH -msh -uzu -uzu -xgc -rAH -kVd -kVd -rAH -xgc -rAH -xgc -xgc -boW -xgc -boW -xgc -boW -boW -xgc -xgc -xgc -xgc -boW -boW -boW -boW -kVd -kVd -kVd -kVd -ddA -rAH -kVd -kVd -rAH -xgc -xgc -kVd -uzu +mwE +jMf +jMf +mdV +kop +oxP +ofw +ofw +tHd +kop +jMf +jMf +kop +tHd +kop +fDH +tHd +kyD +tHd +kyD +qrY +kyD +kyD +tHd +tHd +tHd +tHd +kyD +kyD +kop +kop +jMf +jMf +jMf +jMf +rgy +kop +jMf +jMf +kop +tHd +tHd +jMf +ofw loe -jrg -jrg -jrg -jrg -jrg -bJj -gpz -bJj +sax +sax +sax +sax +sax +qgP +nZA +kAw puZ puZ puZ @@ -43071,59 +42984,59 @@ kOV kOV ntc kOV -kVd -kVd +jMf +jMf bhB -kVd -rAH -rAH -uzu -xgc -kVd -rAH -xgc -xgc -kVd -rAH -xgc -rAH -xgc -xgc -boW -boW -boW -xgc -uzu +jMf +kop +kop +ofw +tHd +jMf +kop +tHd +tHd +jMf +kop +tHd +kop +tHd +tHd +kyD +kyD +kyD +tHd +ofw gss gss gss gss -xgc -xgc -xgc -kVd -kVd -kVd -kVd -huF -uzu -rAH -uzu -aJR -kVd -rAH -rAH -rAH -rAH -kVd -rAH -jrg -jrg -jrg -jrg -bJj -gpz -bJj +tHd +tHd +tHd +jMf +jMf +jMf +jMf +gBp +ofw +kop +ofw +rEd +jMf +kop +kop +kop +kop +jMf +kop +sax +sax +sax +sax +hrk +nZA +kAw puZ puZ puZ @@ -43233,29 +43146,29 @@ kOV kOV ntc ntc -uzu +ofw vhM -uzu -kVd -kVd -rAH -rAH -kVd -rAH -uzu +ofw +jMf +jMf +kop +kop +jMf +kop +ofw dYp dYp dYp -kVd -kVd -rAH +jMf +jMf +kop fxy -boW -boW -boW +kyD +kyD +kyD fxy -xgc -rAH +tHd +kop gss gss gss @@ -43267,25 +43180,25 @@ tiO tiO gss abZ -kVd -kVd -rAH -rAH -rAH -boS -kVd -rAH -xgc -rAH -rAH -rAH -ukp -jrg -jrg -jrg -cIV -cIV -cIV +jMf +jMf +kop +kop +kop +gpS +jMf +kop +tHd +kop +kop +kop +mwE +sax +sax +sax +nZA +llZ +nZA puZ puZ puZ @@ -43395,16 +43308,16 @@ kOV kOV ntc ntc -kVd -uzu -kVd -kVd -rAH -kVd -xgc -rAH -rAH -uzu +jMf +ofw +jMf +jMf +kop +jMf +tHd +kop +kop +ofw dYp dYp dYp @@ -43445,9 +43358,9 @@ tHd mwE geE geE -mwE -mwE -mwE +kop +kop +plM tYw tYw tYw @@ -43557,15 +43470,15 @@ aEq ntc ntc vYm -xgc -kVd -kVd -xgc -xgc -rAH -xgc -kVd -uzu +tHd +jMf +jMf +tHd +tHd +kop +tHd +jMf +ofw dYp dYp dYp @@ -43719,15 +43632,15 @@ nOd nOd nOd nOd -xgc -xgc -kVd -xgc -kVd -xgc -kVd -uzu -uzu +tHd +tHd +jMf +tHd +jMf +tHd +jMf +ofw +ofw dYp dYp dYp @@ -43881,15 +43794,15 @@ dZb eOG aeN nOd -rAH -rAH -rAH -rAH -xgc -rAH -kVd +kop +kop +kop +kop +tHd +kop +jMf bRU -kVd +jMf dYp dYp dYp @@ -44043,15 +43956,15 @@ uhL uhL eHk nOd -kVd +jMf bhB -xgc -kVd -xgc -rAH -uzu -kVd -uzu +tHd +jMf +tHd +kop +ofw +jMf +ofw dYp dYp dYp @@ -44205,14 +44118,14 @@ uhL uhL eHk nOd -dHr -kVd -kVd -hxY -kVd -rAH -kVd -ddA +mdV +jMf +jMf +sJo +jMf +kop +jMf +rgy dYp dYp pqe @@ -44369,12 +44282,12 @@ nOd nOd nOd nOd -kVd -xgc -xgc -rAH -kVd -kVd +jMf +tHd +tHd +kop +jMf +jMf dYp dYp pqe @@ -44531,12 +44444,12 @@ uhL gIq jny nOd -rAH -xgc -xgc -kVd -uzu -dHr +kop +tHd +tHd +jMf +ofw +mdV dYp dYp pqe @@ -44693,12 +44606,12 @@ bVb goh okz nOd -kVd -xgc -xgc -kVd -huF -xgc +jMf +tHd +tHd +jMf +gBp +tHd dYp dYp pqe @@ -44855,12 +44768,12 @@ uFr tds uhL nOd -rAH +kop wta owr -uzu -plS -xgc +ofw +qLS +tHd dYp dYp pqe @@ -45017,11 +44930,11 @@ glG tds uhL nOd -rAH -aGF -boW -boW -boW +kop +aQJ +kyD +kyD +kyD dYp dYp dYp @@ -45179,11 +45092,11 @@ tWn hyu uhL nOd -rAH -kuS -boW -boW -boW +kop +oiH +kyD +kyD +kyD owr dYp dYp @@ -45341,12 +45254,12 @@ hyu uKN uhL nOd -rAH -xgc +kop +tHd owr -boW +kyD owr -boW +kyD dYp dYp pqe @@ -45714,7 +45627,7 @@ kyD tHd pDr tHd -dYw +kyD kyD kyD kyD @@ -45876,7 +45789,7 @@ tHd kyD pDr kyD -dYw +kyD kyD kyD kyD @@ -47663,7 +47576,7 @@ puZ hcJ cUl cUl -xbT +cUl hcJ puZ puZ @@ -50242,17 +50155,17 @@ kyD tHd veu oZq -hrk -kAw -kAw +ijm +cIV +cIV sax sax sax sax -sPM -sPM -sPM -sPM +wiy +wiy +wiy +wiy ako puZ puZ @@ -50403,15 +50316,15 @@ tHd kyD tHd qEQ -sax -kAw -nZA -kAw -sax -bcV -oFl -sax -sax +jrg +bJj +gpz +bJj +jrg +qCW +ijE +jrg +jrg aaZ aaZ aaZ @@ -50537,47 +50450,47 @@ iXm daD dKL aPk -hcH -tnu +rRZ +oQo aSQ -tnu -hcH -aWF -jMf -ofw -jMf -tHd -kop -jMf -gGT -kop -rli -kop -kop -tHd -kyD -kyD -kyD -tHd -kyD -tHd -kyD -kyD -kyD -qEQ -sax -hrk -hrk -kAw -kAw -rBk -vAU -sax -sax -kAw -nZA -nZA -kAw +oQo +rRZ +rWW +kVd +uzu +kVd +xgc +rAH +kVd +iIR +rAH +ork +rAH +rAH +xgc +boW +boW +boW +xgc +boW +xgc +boW +boW +boW +dro +jrg +osE +osE +bJj +bJj +qdh +fmo +jrg +jrg +bJj +gpz +gpz +bJj puZ puZ puZ @@ -50694,53 +50607,53 @@ bIV bFg bIV bIV -cZk +bFg daD cZk cZk bIV -aKr -gKf -lxn -gKf -aFA -kyD -tHd -jMf -tHd -kop -jMf -sJo -ofw -etl -fLi -gGT -kop -tHd -xvp -kyD -kyD -kyD -tHd -kyD -kyD -kyD -tHd -oDi +boW +boW +boW +boW +boW +boW +xgc +kVd +xgc +rAH +kVd +hxY +uzu +hUA +mGk +iIR +rAH +xgc +wPs +boW +boW +boW +xgc +boW +boW +boW +xgc +nxt prO -kAw -hrk -nZA -nZA -nZA -kAw -kAw -acl -kAw -nZA -nZA -kAw -nZA +bJj +osE +gpz +gpz +gpz +bJj +bJj +iIg +bJj +gpz +gpz +bJj +gpz puZ puZ puZ @@ -50859,50 +50772,50 @@ bIV bIV cZk bIV -bIV bFg -aKA -qXS -lxn -qXS -aFC -kyD -kyD -tHd -tHd -tHd -kop -aQJ -kop -eyx -kop -tHd -kop -kop -tHd -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD +cZk +rAH +boW +boW +boW +boW +boW +boW +xgc +xgc +xgc +rAH +aGF +rAH +klF +rAH +xgc +rAH +rAH +xgc +boW +boW +boW +boW +boW +boW +boW +boW +qjY ptm -hrk -kAw -nZA -nZA -nZA -kAw -kAw -aco -kAw -nZA -kAw -kAw -nZA +osE +bJj +gpz +gpz +gpz +bJj +bJj +niA +bJj +gpz +bJj +bJj +gpz puZ puZ puZ @@ -51022,49 +50935,49 @@ bIV bIV bFg bFg -bFg -aKA -qXS -lxn -qXS -aFC -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -tHd -tHd -kyD -tHd -tHd -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -tHd -ofw -sax -hrk -kAw -nZA -nZA -nZA -nZA -kAw -aco -kAw -kAw -kAw -nZA -kAw +cZk +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +xgc +xgc +boW +xgc +xgc +boW +boW +boW +boW +boW +boW +boW +boW +xgc +fkB +jrg +osE +bJj +gpz +gpz +gpz +gpz +bJj +niA +bJj +bJj +bJj +gpz +bJj puZ puZ puZ @@ -51184,50 +51097,50 @@ bIV bIV bIV bIV -bFg -aKA -qXS -lxn -qXS -aFC -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -tHd -kop -gzb -sax -sax -sax -sax -kAw -kAw -nZA -kAw -aco -kAw -hrk -kAw -nZA -nZA -nZA +cZk +xgc +xgc +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +xgc +rAH +ucN +jrg +jrg +jrg +jrg +bJj +bJj +gpz +bJj +niA +bJj +osE +bJj +gpz +gpz +gpz puZ puZ puZ @@ -51347,50 +51260,50 @@ bFg bFg cZk bIV -aKD -iGn -lxn -iGn -aFI -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -tHd -iMC -kyD -kyD -tHd -tHd -kyD -tHd -kyD -kyD -tHd -kop -bhN -fCs -sax -sax -sax -sax -kAw -kAw -kAw -acp -bcV -tFd -hrk -kAw -nZA -nZA -nZA +rAH +xgc +rAH +rAH +xgc +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +xgc +kyt +boW +boW +xgc +xgc +boW +xgc +boW +boW +xgc +rAH +fbS +qfR +jrg +jrg +jrg +jrg +bJj +bJj +bJj +srJ +qCW +nyS +osE +bJj +gpz +gpz +gpz puZ puZ puZ @@ -51509,50 +51422,50 @@ bFg aNe bIV aPm -uji -uKZ -jLX -uKZ -uji -aWG -xWy -tHd -rtZ -tHd -tHd -rtZ -kop -kop -xvp -tHd -jMf -xvp -kop -kop -kop -tHd -kyD -kyD -kyD -tHd -kop -bhN -fCs -sax -sax -bcV -oFl -kAw -kAw -kAw -tad -tlr -tuz -tFy -hrk -kAw -nZA -nZA +xgc +rAH +xgc +rAH +rAH +rAH +uzu +xgc +gJF +boW +boW +awP +rAH +xgc +wPs +xgc +kVd +wPs +rAH +rAH +rAH +xgc +boW +boW +boW +xgc +rAH +fbS +qfR +jrg +jrg +qCW +ijE +bJj +bJj +bJj +nvu +mCG +pRM +gQK +osE +bJj +gpz +gpz puZ puZ puZ @@ -51671,51 +51584,51 @@ aME bIV cZk xvA -iMA -rxf -oYH -uMJ -uji -uKZ -uKZ -uKZ -iMA -iMA -iMA -uKZ -uKZ -uKZ -uKZ -uji -ofw -ofw -jMf -tHd -kop -kop -kyD -kyD -kyD -tHd -kop -lip -sax -sax -sax -rBk -vAU -kAw -kAw -kAw -hrk -rBk -vAU -hrk -hrk -kAw -nZA -nZA -nZA +boW +xgc +wfH +rAH +xgc +rAH +wfH +rAH +boW +boW +boW +xgc +xgc +rAH +rAH +rAH +uzu +uzu +kVd +xgc +rAH +rAH +boW +boW +boW +xgc +rAH +sEC +jrg +jrg +jrg +qdh +fmo +bJj +bJj +bJj +osE +qdh +fmo +osE +osE +bJj +gpz +gpz +gpz puZ puZ puZ @@ -51831,53 +51744,53 @@ bFg bIV bIV cZk -uKZ -uKZ -uKZ -fRg -fRg -fRg -fRg -fRg -fRg -oZR -fRg -iXc -fRg -bxL -bxL -gGc -rzR -uji -hzJ -hzJ -hzJ -kyw -kyw -lUL -mLR -mLR -mLR -ocI -kyw -kyw -sax -sax -sax -hrk -kAw -kAw -kAw -kAw -kAw -kAw -hrk -hrk -hrk -hrk -kAw -nZA -nZA +rAH +rAH +rAH +rAH +rAH +boW +rAH +rAH +rAH +xgc +boW +boW +boW +rAH +rAH +rAH +rAH +rAH +rAH +rAH +rAH +rAH +rAH +rAH +boW +boW +xgc +rAH +rAH +oHf +jrg +jrg +jrg +osE +bJj +bJj +bJj +bJj +bJj +bJj +osE +osE +osE +osE +bJj +gpz +gpz puZ puZ puZ @@ -51993,54 +51906,54 @@ bIV aLZ bIV xvA -uKZ -rIj -ohq -pvv -pvv -pvv -tXL -pvv -pvv -pvv -pvv -pvv -pvv -pvv -hZI -pvv -fWq -uji -iOA -aDM -lNg -kLM -uqb -uqb -iQq -iQq -kLM -kLM -kLM -kLM +ukp +ukp +rAH +ukp +rAH +rAH +boW +ukp +kVd +kVd +boW +boW +boW +siZ +dkv +xgc +kVd +kVd +rAH +rAH +kVd +uzu +boW +xgc +uzu +boW +xgc +xgc +xgc +tsK pCe -wSv -kAw -kAw -kAw -kAw -kAw -nZA -nZA -nZA -kAw -hrk -nZA -nZA -nZA -kAw -nZA -nZA +rrj +bJj +bJj +bJj +bJj +bJj +gpz +gpz +gpz +bJj +osE +gpz +gpz +gpz +bJj +gpz +gpz puZ puZ puZ @@ -52155,55 +52068,55 @@ daD bFg xvA xvA -uKZ -rIj -wCn -pvv -pvv -pvv -pvv -pvv -mOY -drM -pvv -aSA -uaa -pvv -pvv -pvv -fRg -hvZ -kLM -iOu -kLM -iOu -kLM -kLM -iQq -kLM -iQq -iQq -kLM -iQq +rAH +rAH +ukp +rAH +rAH +rAH +ckH +lIa +lIa +qjY +qjY +qjY +qjY +tsK +qjY +tsK +lIa +oHf +oHf +oHf +lIa +qjY +tsK +tsK +ckH +tsK +qjY +qjY +tsK +qjY fnw -cwZ -kAw -kAw -kAw -kAw -nZA -hrk -hrk -nZA -nZA -hrk -nZA -nZA -nZA -kAw -kAw -kAw -nDv +wvS +bJj +bJj +bJj +bJj +gpz +osE +osE +gpz +gpz +osE +gpz +gpz +gpz +bJj +bJj +bJj +xuz puZ puZ puZ @@ -52316,57 +52229,57 @@ peb xvA aMj daD -daD -uKZ -oIR -fRg -pvv -pvv -aTh -aVx -aWI -aYd -baX -bcJ -aSA -gIQ -oXM -pvv -pvv -fRg -hvZ -kLM -kLM -iQq -iQq -iQq -iQq -iQq -kLM -kLM -iQq -iQq -iQq -nOw -cwZ -kAw -kAw -nZA -kAw -kAw -hrk -hrk -hrk -kAw -kAw -kAw -hrk -kAw -kAw -kAw -kAw -kAw -puZ +boW +qiy +pWp +pWp +pWp +pLf +pLf +asz +asz +asz +ndb +pCI +gmV +vTc +asz +asz +asz +fNE +fNE +fNE +fNE +asz +kVd +kVd +uzu +xgc +uzu +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +bJj +bJj +osE +gpz +gpz +gpz +gpz +bJj +bJj +bJj +gpz +bJj +bJj puZ puZ puZ @@ -52478,57 +52391,57 @@ peb xvA aLZ xvA -daD -uKZ -uwS -fRg -pvv -pvv -aUw -xyY -aWQ -aVx -aVx -aVx -bqN -aUA -dbH -pti -pvv -fRg -hvZ -kLM -iQq -iQq -iQq -iQq -iQq -kLM -lNg -kLM -iQq -iQq -huz -huz -huz -huz -huz -huz -huz -huz -huz -huz -huz -huz -dWO -hbB -kAw -kAw -kAw -hrk -kAw -nZA -kAw +ukp +oiL +ukp +guH +sQX +pLf +pLf +asz +crF +aXH +tHD +crF +crF +tHD +uEx +crF +fNE +qud +tZA +ctC +ctC +asz +ayz +ayz +kVd +ayz +ayz +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +bJj +bJj +gpz +gpz +gpz +gpz +gpz +gpz +gpz +gpz +bJj +bJj puZ puZ puZ @@ -52639,58 +52552,58 @@ aUd aUd xvA daD -xvA -daD -uKZ -xHu -fRg -pvv -aTh -aUx -eHL -aWS -aYf -baY -bdk -aWS -jnc -aWQ -dbH -uyI -fRg -hvZ -iQq -iQq -iQq -iQq -iQq -iQq -kLM -aDM -uqb -iQq -huz -huz -huz -huz -huz -huz -huz -huz -huz -huz -huz -huz -huz -nNX -hbB -kAw -kAw -kAw -hrk -kAw -kAw -vEN +bFg +ukp +qiy +sQX +cXU +cid +pLf +pLf +asz +crF +aXH +bJi +crF +crF +tHD +uEx +crF +fNE +hyx +xFp +xFp +sHL +asz +kAd +kVd +kVd +xgc +kVd +ukp +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +bJj +gpz +bJj +gpz +gpz +gpz +bJj +bJj +bJj +bJj +sax puZ puZ puZ @@ -52800,61 +52713,61 @@ aUd aUd aUd aUd -aMk +aMj peb -daD -uKZ -wUy -fRg -pvv -aTi -aUy -aVL -aWT -aVL -bOh -aVL -aWS -aVL -aVL -dCS -eoH -fRg -hvZ -iQq -iQq -kLM -iQq -iQq -kLM -bcM -aDM -lNg -kLM -huz -huz -dLi -amH -qsN -aMN -faH -hHf -nTu -qsN -iYC -huz -huz -dWO -hbB -kAw -hrk -kAw -kAw -kAw -kAw -kAw -oBV -nZA +ukp +qiy +wvd +nOK +xLy +pLf +pLf +asz +asz +asz +tpL +orO +orO +tJY +asz +asz +asz +gSJ +bJi +bJi +bJi +asz +ltA +dnj +kVd +xgc +kVd +ukp +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +bJj +fXX +bJj +bJj +gpz +bJj +bJj +bJj +gpz +bJj +sax +sax +sax puZ puZ puZ @@ -52963,60 +52876,60 @@ gJo gJo abg aMl -xvA -xvA -uKZ -fRg -fRg -pvv -aTj -cov -aVM -aWS -aYg -bbg -bea -aWS -cbk -aWU -deV -wvx -fRg -hvZ -kLM -iQq -kLM -iQq -iQq -iQq -kLM -snN -kTP -iQq -huz -huz -kLi -amI -aCy -rdS -axJ -axJ -nTu -hAS -sjh -huz -huz -tuA -kAw -hrk -hrk -kAw -kAw -kAw -nZA -kAw -kAw -nZA +rYj +pLf +pLf +pLf +pLf +pLf +pLf +asz +asz +asz +ahu +uEx +bJi +bJi +aXH +rZt +asz +asz +asz +asz +qkL +asz +asz +asz +asz +xgc +xgc +kVd +ukp +bJj +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +amu +amu +amu +bJj +fXX +gpz +bJj +bJj +jrg +jrg +bJj +gpz +osE +sax +sax +sax puZ puZ puZ @@ -53125,60 +53038,60 @@ qbF gJo abg gJo -xvA -xvA -uKZ -fRg -gxK -pvv -pvv -aUw -fof -aWU -aVN -aVN -aVN -bqN -aVN -deV -wTz -pvv -fRg -hvZ -iQq -kLM -iQq -iQq -iQq -iQq -iQq -kLM -iQq -iQq -tpg -exX -qIr -rdS -rdS -axJ -axJ -axJ -bsS -pKf -iYC -huz -huz -oBV -pRU -hrk -hrk -kAw -nZA -nZA -nZA -kAw -kAw -nZA +rYj +asz +asz +asz +asz +asz +asz +asz +ufb +wnK +jaU +uEx +bJi +bJi +aXH +rZt +rZt +rZt +fNE +mWA +rZt +iEF +etV +tNN +fNE +xgc +xgc +boW +xgc +xgc +ukp +ukp +jrg +jrg +jrg +jrg +jrg +jrg +amu +fXX +fXX +osE +osE +bJj +bJj +jrg +jrg +jrg +bJj +bJj +bJj +sax +sax +sax puZ puZ puZ @@ -53235,112 +53148,112 @@ lwo sYu sYu sYu -lwo -lwo -lwo -eOM -lwo -eOM -eOM -sYu -sYu -eOM -eOM -lwo -arX -arX -eOM -lwo -lwo -eOM -eOM -arX -eOM -aCH -toA -ver -ver -ver -ver -ver -ver -ver -ver -fEO -oDM -ktd -bFg -bIV -bFg -bFg -bFg -cZk -cZk -xvA -cgR -gJo -qbF -qbF -gJo -qbF -gJo -uKZ -iMA -iMA -uji -uji -uji -uji -fRg -pvv -pvv -aTj -aVN -aWV -aYx -bbh -beK -pvv -pvv -pvv -aSA -pvv -fRg -hvZ -kLM -iQq -iQq -iQq -iQq -kLM -iQq -iQq -iQq -iQq -tpg -akF -alS -ans -axJ -axJ -fbf -fbf -ook -hAS -aDu -huz -huz -huz -huz -huz -kAw -kAw -nZA -nZA -nZA -kAw -kAw -nZA +lwo +lwo +lwo +eOM +lwo +eOM +eOM +sYu +sYu +eOM +eOM +lwo +arX +arX +eOM +lwo +lwo +eOM +eOM +arX +eOM +aCH +toA +ver +ver +ver +ver +ver +ver +ver +ver +fEO +oDM +ktd +bFg +bIV +bFg +bFg +bFg +cZk +cZk +xvA +cgR +gJo +qbF +qbF +gJo +qbF +daD +xHv +xHv +xHv +wXs +asz +abn +abF +abF +abF +acg +asz +aUY +vjs +aXw +kaL +wnK +wnK +aXH +rZt +rZt +rZt +fNE +ril +rZt +iEF +far +nVL +fNE +kVd +xgc +boW +xgc +xgc +ukp +uzu +uzu +jrg +jrg +jrg +jrg +jrg +amu +fXX +fXX +osE +osE +gpz +gpz +jrg +jrg +bJj +bJj +osE +osE +sax +sax +sax puZ puZ puZ @@ -53441,69 +53354,69 @@ cZk cZk tBB gJo -gJo -gJo -qbF +bFg +qdH +qdH qbF -gJo -iMA -aJM -aJU -bKV -aLk -bMK -uji -snX -pvv -aSA -pvv -vFR -eVG -pvv -pvv -pvv -aSA -pvv -pvv -pvv -pvv -fRg -hvZ -kLM -iOu -kLM -iOu -kLM -iQq -kLM -iQq -iQq -iQq -tpg -oWk -qIr -ans -ans -aMW -fMq -aut -axJ -rdS -aut -huz -huz -huz -huz -huz -hrk -kAw -hrk -hrk -nZA -kAw -kAw -nZA -nZA +bIV +xHv +xHv +xHv +wXs +asz +abp +abG +abJ +abG +acj +asz +aUX +aWB +gTU +wnK +wnK +wnK +aXH +rZt +rZt +rZt +asz +asz +rZt +rZt +hCY +hCY +fNE +kVd +kVd +boW +xgc +rAH +kVd +boW +boW +uzu +jrg +jrg +jrg +jrg +amu +fXX +fXX +amu +iTQ +bJj +gpz +bJj +jrg +bJj +bJj +gpz +osE +sax +sax +sax +sax puZ puZ puZ @@ -53603,69 +53516,69 @@ xvA xvA tBB gJo -gJo -qbF +bFg +qdH qbF qbF gJo -iMA -aKQ -bKV -bKV -omu -aFr -uji -uji -pvv -kJw -pvv -pvv -pvv -pvv -pvv -sYh -pvv -pvv -pvv -pvv -eGs -fRg -uji -jac -jQt -khx -khx -ltJ -kLM -iQq -iQq -iQq -iQq -tpg -oWk -qIr -anG -axJ -axJ -ggh -rdS -owe -axJ -rdS -axJ -axJ -axJ -huz -huz +xHv +xHv +xHv +wXs +asz +abp +abJ +abJ +abJ +aSK +aTR +rMI +oZs +azm +bJi +rZt +wnK +aXH +rZt +rZt +rZt +hAX +crF +rZt +rZt +rZt +rZt +fNE +kVd +kVd +xgc +boW +xgc +qMT +jOv +hEB +uzu +uzu +jrg +jrg +jrg +amu +fXX +fXX +amu +osE +osE +gpz +bJj +jrg +bJj +bJj +gpz +osE +sax +sax +sax sax -kAw -kAw -nZA -nZA -kAw -kAw -kAw -hrk puZ puZ puZ @@ -53763,71 +53676,71 @@ bIV cZk cZk cZk -uji -uji -uji -uji -uji -uji -uji -uji -aLk -bKV -bKV -aNg -bKV -aOb -uji -snX -fRg -pgh -fRg -fRg -dLk -fRg -pgh -fRg -fRg -fRg -rIj -uKZ -giH -uji -iMA -iMA -iMA -uKZ -ehV -uqb -kLM -iQq -iQq -kLM -ajd -huz -fjS -anJ -aGf -aNE -ggr -hLE -qvY -qkQ -axJ -axJ -axJ -axJ -huz -huz +sFs +xHv +sFs +xHv +xHv +xHv +xHv +xHv +xHv +uLi +wXs +asz +aNR +abJ +abG +abJ +abJ +rZt +kxx +oZs +bJi +bJi +ahZ +eRG +aXH +rZt +rZt +rZt +dwQ +crF +rZt +rZt +rZt +fhd +fNE +kVd +kVd +rAH +xgc +boW +boW +boW +boW +uzu +uzu +ukp +jrg +jrg +amu +eom +fXX +amu +osE +osE +bJj +bJj +bJj +bJj +bJj +bJj +amu +sax +sax +sax sax -iZj -kAw -kAw -hrk -kAw -nZA -kAw -hrk puZ puZ puZ @@ -53925,70 +53838,70 @@ cZk cZk cZk cZk -uji -uji -uji -uji -uji -uji -uji -uji -uji -aKL -uji -aNh -aLs -uji -uji -iMA -iMA -uKZ -oYH -gxK -fRg -oYH -uKZ -iMA -iMA -uji -uKZ -uKZ -bKV -kjU -bKV -krm -iXx -iMA -ehV -uqb -kLM -iQq -nAs -uqb -ajE -huz -qSW -arZ -aIh -aPf -gtx -aTO -oww -qmv -axJ -axJ -axJ -axJ -huz -huz +tjL +xHv +xHv +gik +gik +gik +dbv +kaC +xHv +xHv +wXs +asz +aNP +abJ +abG +abJ +abJ +rZt +kxx +oZs +bJi +bJi +bJi +wnK +bQx +asz +asz +qkL +asz +asz +rZt +rZt +iEF +cYC +fNE +kVd +kVd +rAH +xgc +boW +boW +boW +lLf +uzu +uzu +ukp +jrg +jrg +amu +fXX +fXX +amu +jrg +bJj +gpz +bJj +bJj +bJj +osE +bJj +amu +sax sax sax -kAw -kAw -hrk -kAw -nZA -kAw puZ puZ puZ @@ -54087,72 +54000,72 @@ bIV bFg cZk bIV -uji -gUc -xgH -xgH -xgH -gQJ -uji -uji -fRg -fRg -aKS -fRg -fRg -fRg -lro -bKV -bKV -oYH -bKV -meg -bKV -bbi -beP -bKV -meg -bKV -bKV -eGG -bKV -bKV -ftr -obb -vHX -iMA -ehV -kLM -iQq -iQq -kLM -uqb -uqb -huz -huz -auh -bWB -qvY -gZZ -iof -aDu -qoY -axJ -axJ -wFm -sYx -huz -huz -sax -sax -nZA -kAw -nZA -nZA -nZA -kAw -puZ -puZ +xHv +sFs +xHv +xHv +gik +xHv +tmP +kaC +xHv +goe +wXs +asz +abp +abJ +abJ +abJ +abJ +rZt +rMI +acY +rZt +bJi +rZt +wnK +aXH +rkc +wnK +wnK +asz +asz +dTj +rZt +rZt +tYA +fNE +kVd +kuS +kVd +rAH +rAH +kch +boW +mKD +uzu +ukp +jrg +jrg +amu +amu +fXX +fXX +amu +jrg +osE +bJj +gpz +gpz +gpz +osE +bJj +iTQ +iTQ +amu +amu +amu +amu puZ puZ "} @@ -54249,72 +54162,72 @@ bIV fUZ bIV bIV -uji -ahX -qkC -tzo -qkC -mhS -dtr -fRg -bKV -bKV -bKV -bKV -bKV -bKV -bKV -bKV -bKV -fRg -bKV -bKV -bKV -bKV -fRg -bKV -bKV -bKV -bKV -uKZ -uKZ -iMA -iMA -iMA -uKZ -uKZ -ehV -kLM -iQq -iQq -iQq -kLM -kLM -uqb -ncS -bWB -auh -aTO -hkS -itR -oNz -qOE -rdS -axJ -sYx -wFm -huz -huz -sax -sax -kAw -kAw -nZA -hrk -nZA -kAw -puZ -puZ +xHv +xHv +xHv +xHv +xHv +goe +kaC +kaC +kaC +xHv +wXs +asz +abp +abG +abJ +abG +ach +asz +aWC +aWs +qkR +eRG +sbd +wnK +aXH +rkc +wnK +rZt +fir +rqK +asz +rZt +rZt +asz +asz +kVd +kVd +kVd +rAH +rAH +xgc +boW +vkr +nij +ukp +jrg +jrg +amu +cur +fXX +fXX +amu +amu +iTQ +bJj +fXX +gpz +gpz +bJj +fXX +cuJ +fXX +bJj +fXX +fXX +amu puZ puZ "} @@ -54411,72 +54324,72 @@ bIV bFg bFg bFg -uji -aGc -tzo -tzo -aJj -aJk -fRg -fRg -bKV -bKV -aMK -aNl -aNl -aPn -bKV -bKV -bKV -fRg -bKV -bKV -bKV -bKV -uHA -bKV -bKV -rfd -bKV -iMA -hFJ -fRg -dZN -fRg -iMA -kGO -lyE -kLM -iQq -kLM -iQq -iQq -kLM -uqb -ncS -mRc -rdS -aXk -axJ -jFq -huz -qPh -rdS -axJ -axJ -sXt -huz -huz -sax -sax -kAw -kAw -nZA -nZA -nZA -kAw -puZ -puZ +xHv +xHv +uLi +xHv +qEH +kaC +kaC +kaC +xHv +xHv +wXs +asz +abx +abM +abM +abM +ack +asz +aUU +aXh +mYX +bVr +aXh +aXh +bJf +rkc +wnK +rZt +hMY +asz +asz +crF +crF +asz +asz +uzu +kVd +kVd +kVd +kVd +xgc +boW +boW +kVd +ukp +jrg +jrg +amu +lAb +fXX +fXX +fXX +fXX +fXX +fXX +bJj +bJj +gpz +osE +bJj +mwJ +bJj +fXX +fXX +fXX +amu puZ puZ "} @@ -54535,110 +54448,110 @@ lwo lwo lwo eTV -lwo -eTV -lwo -lwo -eOM -eOM -lwo -eOM -qep -arX -arX -arX -amQ -arX -eOM -arX -arX -ktd -axK -ver -ver -ver -htb -ver -ver -ver -ver -bYd -ktd -ktd -gJo -bIV -bIV -bFg -bFg -bFg -bFg -bFg -bIV -aGb -tzo -qkC -tzo -aGd -fRg -fRg -bKV -bKV -pzj -pzi -kGz -bKV -bKV -bKV -bKV -oYH -bKV -bKV -bKV -bKV -oYH -bKV -bKV -bKV -bKV -iMA -sFR -pvv -pvv -oCG -kjM -tpg -iQq -iQq -iQq -szU -kLM -iQq -iQq -uqb -ncS -pTp -pTp -rdS -axJ -alO -huz -qWL -aut -axJ -kLi -kLi -huz -huz -sax -sax -kAw -kAw -nZA -nZA -kAw -kAw -puZ -puZ +lwo +eTV +lwo +lwo +eOM +eOM +lwo +eOM +qep +arX +arX +arX +amQ +arX +eOM +arX +arX +ktd +axK +ver +ver +ver +htb +ver +ver +ver +ver +bYd +ktd +ktd +gJo +bIV +bIV +bFg +bFg +bFg +bFg +bFg +bIV +xHv +sFs +xHv +xHv +goe +kaC +xHv +gik +xHv +wXs +asz +asz +asz +asz +asz +asz +asz +rZt +rZt +rZt +gGf +bDx +asz +kXt +asz +wnK +rZt +asz +asz +kPX +rZt +rZt +asz +asz +pLf +hkZ +rAH +ccT +xgc +xgc +rAH +xgc +xgc +jrg +jrg +jrg +amu +igJ +fXX +fXX +fXX +fXX +fXX +osE +gpz +bJj +fXX +bJj +iTQ +amu +amu +amu +fXX +fXX +amu puZ puZ "} @@ -54736,71 +54649,71 @@ bFg bFg bFg bFg -aGd -tzo -qkC -tzo -aGd -fRg -fRg -bKV -bKV -bKV -bKV -bKV -bKV -bKV -ohE -bKV -uKZ -ahe -fRg -fRg -oYH -uKZ -bwk -cex -cex -cex -uKZ -xHu -pvv -pvv -oCG -wRm -tpg -iQq -iQq -iQq -kLM -aDM -kLM -iQq -huz -huz -avz -avz -axJ -axJ -alO -pJM -rgI -rdS -axJ -kLi -alP -huz -huz -sax -sax -kAw -kAw -nZA -kAw -kAw -kAw -puZ -puZ +xHv +xHv +xHv +sFs +xHv +xHv +xHv +gik +gik +wXs +asz +aNN +afN +afP +fNE +rZt +rZt +rZt +rZt +gGf +rZt +rZt +qVo +wnK +wnK +wnK +rZt +asz +asz +hLB +rZt +rZt +asz +asz +shi +kVd +qEK +pGt +xgc +xgc +rAH +xgc +xgc +npY +rKq +jrg +amu +iTQ +amu +amu +amu +amu +amu +osE +gpz +osE +osE +bJj +gpz +amu +amu +amu +fXX +fXX +amu puZ puZ "} @@ -54898,71 +54811,71 @@ bFg bFg bFg bIV -aGd -aHd -aIG -tzo -aGd -fRg -fRg -bKV -bKV -aMK -aNl -aNl -aPn -bKV -bKV -tsU -uKZ -ocB -bKV -bKV -bKV -hDW -bzh -fRg -fRg -fRg -qXk -fRg -pvv -khz -fRg -iMA -kIo -lCe -kLM -iQq -iQq -kLM -iQq -iQq -huz -aQq -axJ -axJ -axJ -axJ -jJZ -oXU -axJ -dQq -axJ -axJ -rdS -huz -huz -sax -sax -kAw -kAw -kAw -kAw -kAw -bcV -oFl -puZ +xHv +xHv +xHv +uLi +xHv +xHv +xHv +gik +xHv +wXs +bXo +kxx +bIh +afQ +fNE +rZt +rZt +rZt +rZt +rZt +rZt +rZt +rkc +wnK +rZt +rZt +rZt +asz +asz +hMY +rZt +rZt +asz +asz +pLf +gZi +kVd +kVd +kVd +kVd +rAH +kVd +xgc +xXQ +boW +jrg +xgc +ukp +ukp +ukp +pLf +jrg +amu +osE +gpz +osE +osE +bJj +gpz +amu +amu +amu +fXX +fXX +amu puZ puZ "} @@ -54993,7 +54906,7 @@ fIz acT age agh -wOf +ipY acT pCJ agh @@ -55060,71 +54973,71 @@ bFg bFg bIV kaC -aGe -qkC -tzo -qkC -tGv -dtr -fRg -bKV -bKV -bKV -bKV -bKV -bKV -bKV -bKV -bKV -iMA -vHX -bKV -bKV -bKV -bsC -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -fRg -uKZ -uKZ -vqV -kLM -kLM -iQq -iQq -iQq -kLM -huz -pJM -ayZ -rdS -bqO -axJ -bqO -axJ -axJ -axJ -axJ -axJ -axJ -huz -huz -sax -sax -nZA -nZA -nZA -kAw -kAw -rBk -vAU -puZ +xHv +xHv +xHv +sFs +xHv +xHv +uLi +xHv +goe +wXs +lSU +aNL +nmi +afP +asz +asz +aTQ +asz +asz +wnK +dTU +wnK +asz +asz +qkL +fNE +fNE +asz +asz +asz +crF +crF +asz +asz +pLf +kVd +rAH +ccT +uzu +kVd +kVd +kVd +xgc +bkK +xgc +rAH +ukp +kVd +uzu +ukp +ukp +jrg +amu +osE +gpz +gpz +fXX +bJj +gpz +gpz +amu +amu +fXX +fXX +amu puZ puZ "} @@ -55155,7 +55068,7 @@ pxi acT afv agh -tJX +jOA acT sxp hCX @@ -55217,76 +55130,76 @@ oQl oQl oQl oQl -gJo -bFg -bFg -cZk -kaC -rXn -dsx -dsx -dsx -waS -uji -uji -fRg -fRg -fRg -fRg -fRg -fRg -fRg -bKV -bKV -iMA -vHX -aWX -bKV -bKV -bsC -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -fRg -xQa -iMA -avx -uqb -kLM -iQq -iQq -kLM -tpg -exX -alW -arW -anJ -dQq -hmo -rdS -axJ -dQq -axJ -axJ -axJ -axJ -huz -huz -sax -sax -nZA -nZA -kAw -kAw -kAw -puZ -puZ -puZ +gJo +bFg +bFg +cZk +kaC +xHv +xHv +xHv +xHv +xHv +goe +xHv +xHv +xHv +wXs +lSU +lSU +afF +sBW +xDq +aSI +afF +aUT +asz +rMI +rMI +rMI +asz +emq +wnK +dTU +wnK +dTU +hfm +asz +rZt +rZq +asz +asz +pIV +jKm +dbO +pGt +kVd +kVd +huF +rAH +rAH +bkK +boW +ukp +ukp +kVd +ukp +ukp +ukp +bJj +iTQ +osE +gpz +gpz +bJj +amu +gpz +gpz +amu +amu +fXX +fXX +amu puZ puZ "} @@ -55389,66 +55302,66 @@ kaC kaC kaC kaC -uji -uji -fRg -aMs -vIk -lJh -loH -ppI -aMs -bKV -bKV -uKZ -nUa -bKV -bKV -bKV -iDW -bAX -fRg -fRg -fRg -fRg -pgh -fRg -ohq -mKB -cLq -iMA -avx -voo -kLM -iQq -iQq -kLM -tpg -exX -qIr -azS -qny -aDu -aut -kfW -axJ -axJ -axJ -axJ -axJ -rdS -huz -huz -sax -sax -nZA -nZA -kAw -kAw -kAw -puZ -puZ -puZ +xHv +xHv +xHv +xHv +wXs +lSU +lSU +tSI +rZt +gLv +rZt +gLv +afF +wBf +wnK +dTU +wnK +asz +kbZ +chU +gTv +sHf +tRq +chU +ogu +rZt +rZt +asz +asz +pLf +pLf +uzu +kVd +uzu +uzu +uzu +boW +eXQ +eWl +boW +ukp +ukp +xgc +ukp +ukp +ukp +bJj +bJj +osE +bJj +bJj +bJj +amu +gpz +gpz +amu +amu +fXX +fXX +pLS puZ puZ "} @@ -55546,71 +55459,71 @@ mIL fQX fQX fQX -kaC -kaC -kaC -kaC -kaC -uji -uji -uji -uji -uKZ -uKZ -uji -uji -uji -qLA -uji -uKZ -aVT -fRg -fRg -oYH -uKZ -bFS -ail -ail -ail -uKZ -uji -uji -iMA -iMA -iMA -uKZ -ehV -aDM -kTP -iQq -iQq -kLM -uqb -huz -cio -ieD -aKR -aDu -huz -axJ -rdS -rti -ieD -axJ -axJ -hIu -huz -huz -sax -sax -nZA -nZA -kAw -kAw -kAw -puZ -puZ -puZ +oQl +oQl +oQl +oQl +oQl +mIL +mIL +gaz +mIL +bme +lSU +lSU +aOv +afF +rZt +rZt +gLv +afF +wBf +wnK +dTU +pkK +asz +emq +chU +kbZ +chU +gTv +chU +fNE +uvU +rZt +asz +asz +pLf +pLf +pLf +ukp +ukp +kVd +uzu +kVd +nEQ +ukp +xgc +ukp +xgc +kVd +ukp +ukp +ukp +bJj +bJj +bJj +qMc +bJj +rbq +osE +gpz +gpz +amu +amu +fXX +fXX +lAb puZ puZ "} @@ -55716,63 +55629,63 @@ oQl oQl oQl oQl -uKZ -hsw -aNp -bfR -oYH -oYH -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -gqe -uji -jkM -bHC -xwo -bHC -lCp -idG -kLM -iQq -iQq -kLM -kLM -huz -huz -huz -huz -huz -huz -mpt -axJ -rxd -sFv -axJ -rdS -hRC -huz -huz -sax -qCr -kAw -nZA -kAw -kAw -puZ -puZ -puZ -puZ +ood +bme +lSU +lSU +lSU +aSI +aRs +uRt +flN +sBW +rZt +nOB +rMI +rMI +asz +tRq +wdy +dTU +bZZ +dTU +twc +fNE +rZt +uvU +asz +asz +pLf +pLf +pLf +pLf +pLf +pLf +pLf +pLf +npY +nij +rAH +ukp +ukp +pLf +pLf +ukp +xgc +bJj +bJj +bJj +bJj +bJj +fXX +osE +gpz +amu +amu +amu +fXX +igJ +fXX puZ puZ "} @@ -55827,114 +55740,114 @@ arX arX arX bjv -bjv -ecj -ecj -ecj -ecj -ecj -ecj -aaN -agM -arX -aDI -eOM -eOM -pCH -lwo -lwo -eOM -lwo -eOM -arX -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -mIL -fQX -fQX -fQX -fQX -cKL -oQl -oQl -oQl -oQl -oQl -uKZ -xSk -aNq -oYH -fRg -oYH -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -fRg -hGj -iQq -iOu -kLM -iOu -kLM -kLM -iQq -kLM -iQq -iQq -iQq -iQq -pKK -iQq -iOu -kLM -huz -rdS -axJ -amH -tbR -axJ -rdS -ixC -huz -huz -sax -hrk -kAw -kAw -kAw -kAw -puZ -puZ -puZ -puZ +bjv +ecj +ecj +ecj +ecj +ecj +ecj +aaN +agM +arX +aDI +eOM +eOM +pCH +lwo +lwo +eOM +lwo +eOM +arX +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +mIL +fQX +fQX +fQX +fQX +cKL +oQl +oQl +oQl +oQl +oQl +mIL +bme +lSU +lSU +lSU +lSU +lSU +wBf +kEs +fgB +kEs +flN +asz +asz +asz +asz +asz +asz +tDg +iWX +wZh +asz +rMI +kdy +asz +asz +asz +asz +asz +asz +asz +asz +asz +pLf +uzu +ukp +xgc +ukp +ukp +ukp +pLf +ukp +bJj +fXX +fXX +bJj +gpz +bJj +bJj +fXX +vOb +cuJ +fXX +bJj +fXX +fXX +pLS puZ puZ "} @@ -56040,63 +55953,63 @@ oQl oQl oQl oQl -uKZ -cHB -xSk -afd -fRg -oYH -aSA -gIQ -aTh -aVx -aWI -aYd -baX -bcJ -pvv -pvv -pvv -pvv -pvv -fRg -hGj -iQq -iQq -iQq -iQq -iQq -iQq -kLM -aDM -kLM -iQq -iQq -iQq -iQq -iQq -iQq -iQq -huz -aut -rdS -aCy -tdc -axJ -axJ -tZW -huz -huz -sax -hrk -kAw -nZA -kAw -kAw -puZ -puZ -puZ -puZ +mIL +bme +lSU +twi +flN +flN +flN +kEs +kEs +flN +eit +vTc +asz +coj +coj +asz +dtE +goj +goj +goj +goj +goj +goj +aiD +goj +asz +agz +asz +asz +asz +asz +asz +asz +pLf +ukp +uzu +fBA +xgc +ukp +ukp +ukp +xgc +bJj +gpz +gpz +bJj +bJj +gpz +rbq +fXX +rbq +mwJ +fXX +fXX +fXX +fXX +pLS puZ puZ "} @@ -56202,63 +56115,63 @@ oQl oQl oQl oQl -uji -uKZ -uKZ -uji -dtr -oYH -pvv -fhv -aUA -aVB -aWQ -aVx -aVx -aVx -bqN -aVx -dbH -dKR -pvv -fRg -hGj -kLM -iQq -iQq -iQq -iQq -iQq -kLM -kLM -uqb -kLM -iQq -iQq -iQq -iQq -iQq -tpg -exX -qIr -aut -rdS -rdS -axJ -axJ -rdS -huz -huz -sax -hrk -kAw -nZA -kAw -kAw -puZ -puZ -puZ -puZ +mIL +mIL +uIE +flN +flN +flN +flN +flN +eit +kEs +kEs +flN +rMI +dTU +dTU +rMI +goj +chU +goj +chU +chU +chU +goj +chU +aiD +asz +twt +agY +aha +arK +arU +asz +asz +pLf +pLf +ukp +uzu +ukp +ukp +xgc +ukp +bJj +fXX +gpz +gpz +vlD +bJj +bJj +bJj +osE +bJj +amu +amu +amu +amu +amu +amu puZ puZ "} @@ -56365,58 +56278,58 @@ oQl oQl oQl mIL -mIL -mIL -uKZ -fRg -oYH -pvv -aTh -aUx -aVU -aWS -aYf -baY -bdk -aWS -bYO -aWQ -dbH -eVG -fRg -hGj -uqb -kLM -kLM -iQq -iQq -ipc -iQq -kLM -iQq -iQq -iQq -iQq -iQq -iQq -iQq -tpg -exX -qIr -rdS -axJ -axJ -axJ -axJ -axJ -huz -huz +fQX +gaz +uIE +flN +flN +gCL +flN +kEs +flN +flN +vTc +rMI +dTU +dTU +rMI +goj +wnK +goj +wnK +wnK +wnK +goj +wnK +goj +fNE +aud +rZt +rZt +rZt +nBh +ajg +asz +qfZ +jrg +jrg +jrg +ukp +ukp +ukp +bJj +bJj +bJj +gpz +bJj +bJj +bJj +bJj +fXX +osE +fXX +amu sax -hrk -nZA -nZA -kAw -kAw puZ puZ puZ @@ -56528,59 +56441,59 @@ oQl mIL mIL ood -ood -uKZ -aQg -oYH -pvv -aTi -aUy -aVL -vVq -aVL -aVL -aVL -aWS -clp -aVU -aUA -gIQ -fRg -hGj -uqb -uqb -uqb -kLM -iQq -ipc -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -eSN -akF -alS -aMW -wHx -dQq -axJ -axJ -huz -huz -huz -hrk -nZA -nZA -nZA -kAw -kAw -bcV -oFl +mIL +lqu +flN +eit +flN +kEs +kEs +fgB +kEs +kOi +lSU +coj +coj +lSU +dtE +rZt +rZt +rZt +rZt +mgT +rZt +uvU +goj +fNE +aud +miD +ptr +ptr +rZt +aCB +aeU +fXX +bJj +bJj +bJj +bJj +bJj +bJj +bJj +bJj +gpz +bJj +bJj +bJj +jrg +amu +gpz +bJj +osE +amu +sax +sax +sax puZ puZ puZ @@ -56682,67 +56595,67 @@ mIL mIL mPu fQX -fQX -fQX +jAL +jAL fQX mIL mIL mIL mIL ood -ood -uKZ -aQg -oYH -pvv -aTj -aUz -aVL -aWS -aYg -bbg -bea -aWS -cbk -aWU -deV -fhv -fRg -hGj -kLM -kLM -iQq -iQq -kLM -vdk -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -tpg -exX -qIr -axJ -axJ -axJ -dQq -axJ -huz -huz -huz -hrk -kAw -kAw -kAw -kAw -kAw -rBk -vAU +pqj +vwn +uIE +flN +kEs +flN +flN +kEs +flN +kOi +lSU +lSU +lSU +lSU +bxW +wnK +goj +aNf +rZt +nBs +goj +txU +goj +fNE +aud +ptr +miD +miD +rZt +ava +asz +qfZ +dVw +gpz +gpz +bJj +bJj +jrg +bJj +bJj +gpz +bJj +bJj +jrg +jrg +amu +rbq +rbq +rbq +amu +sax +sax +sax puZ puZ puZ @@ -56845,64 +56758,64 @@ mIL mIL fQX fQX -fQX -fQX -mIL +jAL +jAL mIL +vJu mIL ood +fQX +jAL mIL -mIL -uKZ -fRg -oYH -pvv -pvv -aUw -aVB -aWU -aVN -aVN -aVN -bqN -aVN -deV -pvv -pvv -gxK -hGj -iQq -iQq -iQq -kLM -iQq -iQq -iQq -iQq -iQq -iQq -iQq -kLM -kLM -iQq -iQq -iQq -huz -axJ -axJ -rBC -rdS -axJ -axJ -tkm -ncS -hrk -hrk -kAw -kAw -kAw -kAw -kAw +lSU +uIE +flN +kEs +agw +agw +kEs +wXh +lSU +cvn +lSU +wOO +goj +chU +goj +lfk +rZt +uII +aiD +chU +goj +fNE +aud +rZt +rZt +mRU +ptr +aue +asz +jrg +bJj +gpz +gpz +bJj +jrg +jrg +jrg +gpz +gpz +gpz +bJj +osE +jrg +iTQ +rbq +rbq +rbq +amu +sax puZ puZ puZ @@ -57010,61 +56923,61 @@ fQX fQX mIL mIL +vJu mIL mIL -mIL -oQl oQl -uji -fRg -oYH -pvv -pvv -aTj -aVN -aWV -aYx -bbh -beK -pvv -pvv -pvv -pvv -pvv -fRg -hGj -kLM -iQq -kLM -uqb -kLM -iQq -iQq -iQq -iQq -iQq -kLM -iQq -iQq -kLM -kLM -kLM -huz -krU -axJ -axJ -trX -uLT -wTT -fXB -ncS -hrk -hrk -nZA -kAw -kAw -kAw -kAw +mIL +mIL +lSU +ehO +jis +lSU +acU +acU +lSU +lSU +lSU +fgH +lSU +bYk +goj +chU +dsY +uKo +rZt +wjK +goj +vTj +goj +asz +agm +rZt +rZt +ard +asz +asz +asz +jrg +bJj +bJj +bJj +jrg +jrg +jrg +bJj +gpz +bJj +gpz +bJj +osE +jrg +amu +fXX +fXX +bJj +amu +sax puZ puZ puZ @@ -57167,66 +57080,66 @@ fQX fQX fQX fQX +jAL fQX -fQX -fQX -mIL +jAL mIL +jAL ood ood oQl oQl +ood oQl -uji -dtr -oYH -pvv -aTn -pvv -pvv -pvv -pvv -pvv -bfi -pvv -pvv -pvv -pvv -pvv -fRg -hGj -kLM -iOu -uqb -kJQ -uqb -iQq -iQq -iQq -iQq -kLM -iQq -kLM -uqb -kLM -que -aDM -huz -kys -pef -rdS -axJ -axJ -xvQ -fXB -ncS -kAw -nZA -kAw -kAw -nZA -kAw -hrk +oQl +lSU +dwQ +lSU +lSU +lSU +lSU +lSU +lSU +dwQ +lSU +qRo +goj +wnK +goj +kMJ +rZt +neS +goj +wnK +oag +asz +agl +rZt +rZt +apk +asz +jrg +jrg +jrg +osE +bJj +bJj +jrg +jrg +bJj +bJj +gpz +gpz +bJj +bJj +bJj +gpz +bJj +fXX +bJj +fXX +amu +sax puZ puZ puZ @@ -57338,57 +57251,57 @@ ood mIL oQl oQl +mIL oQl -uji -oYH -ahe -pvv -ugD -pvv -pvv -aWY -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -fRg -uji -aDM -uqb -uqb -uqb -kLM -kLM -iQq -iQq -iQq -iQq -kLM -kLM -sqb -lNg -aDM -aDM -huz -huz -huz -huz -tRN -rdS -xvQ -huz -huz -kAw -kAw -kAw -kAw -nZA -kAw -hrk +oQl +lSU +dwQ +eBG +dwQ +dwQ +elw +rRP +lSU +cvn +lSU +exm +goj +rWS +fVI +rZt +rZt +rZt +goj +chU +goj +aeU +rZt +rZt +rZt +aCB +asz +jrg +jrg +jrg +osE +bJj +bJj +bJj +jrg +bJj +bJj +bJj +bJj +bJj +bJj +bJj +gpz +bJj +bJj +fXX +fXX +iTQ +sax puZ puZ puZ @@ -57489,69 +57402,69 @@ iMb iMb iMb fQX +jAL fQX fQX fQX +jAL +mIL fQX fQX -mIL -mIL -mIL gaz oQl oQl oQl -uji -uKZ -uKZ -uji -uji -uji -uKZ -fRg -fRg -fRg -bfy -fRg -uKZ -uji -dMo -ano -dMo -uji -hzJ -kLM -lNE -uqb -iOu -kLM -iQq -iQq -iQq -iQq -kLM -kLM -uqb -uqb -uqb -hzJ -huz -huz -huz -huz -ncS -ncS -ncS -huz -huz -hrk -kAw -kAw -kAw -kAw -kAw -hrk -hrk +oQl +oQl +lSU +dwQ +dwQ +dwQ +oaO +dwQ +rEW +lSU +lSU +lSU +lSU +bxW +chU +goj +rZt +rZt +rZt +goj +chU +oag +asz +aud +rZt +rZt +tiw +asz +jrg +jrg +jrg +bJj +osE +bJj +bJj +jrg +bJj +osE +bJj +gpz +gpz +gpz +bJj +bJj +gpz +gpz +fXX +jrg +iTQ +sax +sax puZ puZ puZ @@ -57653,67 +57566,67 @@ iMb kri fQX fQX -fQX -fQX -fQX -fQX mIL mIL +jAL +mIL +jAL +mIL mIL oQl oQl oQl oQl -cKL -fQX -oQl -oQl oQl -uKZ -iMA -aYy -bbj -aYy -iMA -uKZ -uji -uji -uji -uji -uji -hzJ -qhm -qhm -kXs -mcH -mcH -mcH -mcH -nEH -mcH -mcH -mcH -pNo -qhm -qhm -hzJ -hzJ -hzJ -hzJ -hzJ -kAw -kAw -kAw -hrk -hrk -kAw -nZA -nZA -kAw -kAw -kAw -kAw -hrk +lSU +lSU +lSU +lSU +dwQ +oaO +dwQ +dwQ +dwQ +bXo +rZt +goj +vuj +goj +eaz +rZt +nwd +goj +wnK +goj +fNE +aud +rZt +rZt +ahT +asz +jrg +jrg +jrg +jrg +bJj +bJj +bJj +bJj +bJj +bJj +bJj +gpz +gpz +bJj +osE +bJj +gpz +gpz +bJj +jrg +jrg +sax +sax puZ puZ puZ @@ -57814,67 +57727,67 @@ fIT fQX iMb fQX -mIL -mIL -fQX -fQX -fQX +wMh +cQY +kSO +qBM +wMh mIL mIL ood oQl oQl +vJu oQl oQl -fQX -cKL -jAL oQl oQl oQl -jAL -aYF -bbt -jAL -bGk -fQX -snZ -hzJ -hzJ -hzJ -hzJ -kLM -kLM -knI -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -kLM -uqb -uqb -uqb -qEB -hzJ -hzJ -hzJ -hzJ -kAw -hrk -kAw -kAw -kAw -kAw -kAw -nZA -kAw -kAw -kAw -kAw +lSU +elw +dwQ +dwQ +dwQ +dwQ +lSU +lQm +goj +chU +goj +dqH +rZt +sCl +onM +chU +goj +fNE +afX +rZt +rZt +ahS +asz +jrg +jrg +jrg +jrg +bJj +bJj +bJj +osE +bJj +bJj +gpz +bJj +bJj +jrg +osE +bJj +bJj +gpz +bJj +jrg +jrg +sax puZ puZ puZ @@ -57975,68 +57888,68 @@ tPz fIT fQX iMb -mIL -mIL -mIL -fQX -fQX -fQX -fQX +wMh +wMh +cQY +rJI +gso +pcY +gaz mIL gaz oQl oQl +vJu oQl oQl -cKL -jAL -jAL +acb oQl oQl -jAL -jAL -jAL -jAL -bfB -bGx -fQX -snZ -hzJ -hzJ -hzJ -hzJ -uAd -kbK -jpE -iQq -kLM -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -kLM -kLM -qoU -hXB -hzJ -hzJ -hzJ -xMz -xMz -xMz -xMz -kAw -kAw -kAw -kAw -kAw -kAw -hrk -hrk +lSU +dwQ +dwQ +lSU +lSU +lSU +lSU +lSU +goj +chU +dsY +hTb +pRH +lpA +goj +chU +goj +fNE +afV +rZt +rZt +aCB +asz +jrg +jrg +jrg +jrg +bJj +bJj +bJj +gpz +gpz +gpz +bJj +bJj +bJj +jrg +gRJ +bJj +osE +gpz +bJj +bJj +jrg +sax puZ puZ puZ @@ -58137,67 +58050,67 @@ aXZ fIT fQX iMb +wMh +wMh +cQY +aNy +xtc +nKD mIL mIL mIL -fQX -fQX -fQX -fQX -mIL -mIL mIL mIL -mhl -fQX -fQX -fQX -fQX -jAL -jAL -fQX -fQX -jAL -jAL -jAL -pqj -jAL -pqj -fKb -kLM -iQq -kLM -kLM -kLM -kLM -uqb -iOu -kLM -iQq -iQq -iQq -iQq -iQq -iOu -iQq -iQq -uqb -hbD -boz -iDy -hzJ -hzJ -xMz -xMz -xMz -xMz -xMz -kAw -nZA -nZA -kAw -kAw -kAw +vJu +oRK +mIx +aca +oQl +oQl +lSU +dwQ +dwQ +lSU +gpb +adC +adC +lSU +goj +wnK +goj +gKE +pue +iYc +onM +wnK +goj +asz +afz +azH +agZ +aUS +asz +jrg +jrg +jrg +jrg +jrg +bJj +gpz +osE +osE +gpz +bJj +bJj +mKF +jrg +jrg +gRJ +sUD +hXH +apD +hXH +czI puZ puZ puZ @@ -58300,66 +58213,66 @@ fIT iMb fQX fQX -mIL -fQX -fQX -fQX -fQX -fQX +wMh +pXU +wMh +wMh +aFO +gaz mIL mIL mIL mIL -wxY -fQX -fQX -fQX -fQX -fQX -fQX -fQX -fQX -fQX -fQX -fQX -jAL -pqj -jAL -kvQ -uqb -aDM -iQq -kLM -kLM -iQq -uqb -uqb -iQq -iQq -iQq -iQq -iQq -kLM -kLM -iQq -iQq -uqb -lNg -lNg -xvb -uqb -xMz -xMz -xMz -xMz -xMz -xMz -kAw -nZA -kAw -kAw -nZA -kAw +vJu +kbT +skl +skl +ors +lSU +lSU +dwQ +dwQ +lSU +dwQ +dwQ +dwQ +lSU +dtE +rZt +rZt +iXr +pue +wui +rZt +rZt +goj +asz +asz +asz +asz +asz +asz +jrg +jrg +jrg +bJj +bJj +bJj +gpz +osE +osE +bJj +osE +osE +jrg +jrg +jrg +jrg +jrg +flN +fLk +flN +pxA puZ puZ puZ @@ -58461,67 +58374,67 @@ fIT fQX iMb iMb -fQX +jAL fQX fQX fQX fQX cKL -fQX -fQX +ood +cKL mIL mIL rcD -mIL -fQX -fQX -fQX -fQX -fQX -fQX -fQX -fQX -fQX -fQX -jAL -pqj -jAL -fQX -kLM -uqb -kLM -kLM -kLM -kLM -kLM -iQq -iQq -kLM -iQq -iQq -iQq -iQq -kLM -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -xMz -xMz -xMz -xMz -xMz -xMz -kAw -kAw -kAw -kAw -kAw -kAw +vJu +sgB +skl +skl +ors +dwQ +elw +dwQ +dwQ +adI +adj +dwQ +adH +lSU +goj +wnK +goj +wnK +wnK +wnK +goj +txU +goj +rZt +rZt +flN +asz +jrg +jrg +jrg +osE +osE +osE +osE +bJj +bJj +bJj +bJj +sLj +sLj +tnG +jrg +jrg +jrg +jrg +wBf +flN +dwQ +rZt +pxA puZ puZ puZ @@ -58630,60 +58543,60 @@ fQX cKL fQX fQX -fQX +ood mIL ood mIL -wxY -fQX -fQX -fQX -fQX -fQX -fQX -fQX -fQX -jAL -jAL -pqj -jAL -fQX -jAL -cdh -aDM -uqb -kLM -kLM -uqb -uqb -kLM -kLM -kLM -iQq -bzK -iQq -iQq -kLM -kLM -iQq -iQq -iQq -iQq -iQq -iQq -iQq -xMz -xMz -xMz -xMz -xMz -xMz -kAw -kAw -kAw -kAw -kAw -kAw +vJu +abV +skl +skl +ors +elw +dwQ +dwQ +dwQ +lSU +ada +dwQ +dwQ +adI +goj +chU +goj +chU +chU +chU +goj +chU +aiD +rZt +flN +rZt +dwQ +bJj +osE +bJj +osE +osE +osE +gpz +bJj +gpz +gpz +bJj +ciL +gpz +bJj +xuz +jrg +jrg +jrg +pxA +flN +rZt +dwQ +pxA puZ puZ puZ @@ -58796,56 +58709,56 @@ mIL mIL ood mIL -mhl -fQX -cKL -fQX -fQX -cKL -fQX -fQX -fQX -jAL -pqj -fQX -jAL -fQX -jAL -kvQ -kLM -xvb -kLM -kLM -kLM -kLM -kLM -gCx -kJQ -kLM -qkI -iQq -kLM -iOu -kLM -iQq -qkI -lNg -kLM -lNg -uqb -uqb -xMz -xMz -xMz -xMz -xMz -xMz -cwZ -cwZ -kAw -kAw -kAw -kAw +vJu +oQl +abX +ors +ors +lSU +lSU +dwQ +dwQ +lSU +ada +ady +adE +lSU +goj +goj +goj +goj +goj +goj +goj +goj +goj +wnK +wnK +dwQ +flN +fXX +bJj +bJj +osE +bJj +bJj +gpz +gpz +bJj +bJj +xuz +ciL +bJj +bJj +bJj +jrg +jrg +jrg +pxA +dwQ +dwQ +rZt +pxA puZ puZ puZ @@ -58888,7 +58801,7 @@ jVI kQF kzE acT -nhh +qOD kTZ iLS mms @@ -58944,7 +58857,7 @@ fQX fQX iMb iMb -fQX +jAL iMb iMb pQE @@ -58954,60 +58867,60 @@ pQE mIL gaz mIL -mIL -ood -gaz -mIL -oQl -oQl -fQX -cKL -fQX -oQl -cKL -fQX -jAL -pqj -fQX -cKL -xMz -xMz -xMz -xMz -aDM -uqb -kLM -gCx -kLM -kLM -kLM -kLM -kLM -kLM -iQq -iQq -kLM -iQq -iQq -kLM -uqb -iQq -iQq -iQq -kLM -xvb -uqb -uCs -xMz -xMz -xMz -xMz -cwZ -cwZ -kAw -kAw -kAw -hrk +mIL +jAL +gaz +mIL +vJu +oQl +oQl +abY +abY +oQl +lSU +dwQ +dwQ +lSU +lSU +lSU +lSU +lSU +shO +gAV +gAV +chU +rZt +rZt +kmO +rZt +rZt +rZt +rZt +rZt +rZt +bJj +bJj +osE +gpz +bJj +bJj +bJj +bJj +bJj +gpz +gpz +rad +fXX +osE +gRJ +jrg +jrg +jrg +pxA +mwF +chU +mwF +pxA puZ puZ puZ @@ -59120,56 +59033,56 @@ ood gaz ood mIL -mIL oQl oQl oQl oQl oQl oQl -fQX -jAL -jAL -cKL -xMz -xMz -xMz -xMz -oqf -uqb -kTP -kLM -kLM -iQq -iQq -iQq -kLM -iQq -iQq -iQq -iQq -iQq -kLM -kLM -iQq -iQq -iQq -qkI -iQq -uqb -kLM -aDM -xMz -xMz -xMz -iQq -fKb -cwZ -kAw -kAw -kAw -hrk -puZ +lSU +dwQ +dwQ +dwQ +bXo +rZt +dTU +dTU +rZt +gAV +gAV +chU +asz +asz +asz +asz +asz +wnK +wnK +dwQ +wnK +dwQ +bJj +bJj +gpz +gpz +gpz +bJj +osE +osE +gpz +gpz +xTK +fXX +fXX +jrg +jrg +jrg +jrg +pxA +xcE +ggL +xcE +pxA puZ puZ puZ @@ -59281,57 +59194,57 @@ ood ood mIL mIL -mIL -mIL -iMb +jAL oQl oQl oQl oQl -vAp -mhl -jAL -mhl -vAp -xMz -cnt -cnt -uqb -xvb -kLM -gCx -kLM -iQq -cQW -cQW -cQW -iQq -iQq -iQq -gGH -kLM -kLM -cQW -cQW -cQW -cQW -kLM -iQq -iQq -kLM -kLM -lNg -xMz -xMz -iQq -kLM -fKb -cwZ -kAw -kAw -hrk -kAw -puZ +oQl +oQl +lSU +rHO +rHO +fgK +lSU +chU +gAV +gAV +gAV +gAV +gAV +chU +fNE +aeP +miD +aiV +asz +rZt +rZt +rZt +rZt +flN +pxA +fXX +bJj +jrg +bJj +bJj +bJj +bJj +bJj +osE +pxA +wnK +wnK +pxA +pxA +pxA +pxA +pxA +mwF +chU +mwF +pxA puZ puZ puZ @@ -59444,56 +59357,56 @@ mIL mIL iMb iMb +oQl +iMb iMb iMb oQl oQl -oQl -oQl -fQX -fQX -jAL -fQX -jAL -xMz -aDM -uqb -uqb -uqb -kLM -gGH -iQq -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -kLM -cQW -cQW -cQW -cQW -kLM -gGH -boD -kLM -uqb -lNg -erj -kLM -tcp -iQq -fKb -cwZ -kAw -kAw -hrk -sax -puZ +lSU +lSU +lSU +lSU +lSU +chU +gAV +rZt +dTU +dTU +dTU +rZt +fNE +aeC +rZt +aeR +asz +wnK +dwQ +wnK +wnK +wnK +dwQ +bJj +bJj +jrg +jrg +bJj +osE +jrg +jrg +jrg +pxA +wnK +wnK +pxA +pxA +pxA +pxA +pxA +vKu +vKu +vKu +pxA puZ puZ puZ @@ -59603,59 +59516,59 @@ pQE mIL iMb iMb -vpD -vpD -vpD -ccu -ols +iMb +iMb +iMb oQl +iMb +iMb +iMb +iMb oQl oQl oQl -fQX -jAL -pqj -jAL -fQX -xMz -aDM -uqb -uqb -kLM -iQq -iQq -iQq -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -kLM -cQW -iQq -kLM -kLM -wgM -kLM -ath -iQq -fKb -cwZ -kAw -sax -sax -sax -puZ +oQl +oQl +asz +chU +gAV +chU +asz +asz +aed +asz +asz +aez +mRU +aeQ +asz +asz +rZt +flN +rZt +dwQ +flN +flN +amu +bJj +jrg +jrg +jrg +jrg +jrg +jrg +pxA +wnK +wnK +pxA +pxA +pxA +pxA +pxA +mwF +chU +mwF +pxA puZ puZ puZ @@ -59763,61 +59676,61 @@ pQE pQE mIL fQX +jAL +iMb +iMb +iMb +iMb +iMb +iMb +jAL +iMb +iMb iMb iMb -vpD -vpD -qFx -oQl -oQl -oQl oQl oQl oQl -fQX -jAL -pqj -jAL -fQX -xMz -uqb -uqb -uqb -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -iQq -kLM -kLM -lNg -uqb -kLM -kLM -fKb -kAw -kAw -sax -sax -sax -puZ +asz +rZH +gAV +chU +adW +aeb +rZt +miD +miD +adi +aCB +asz +asz +asz +asz +wnK +wnK +wnK +wnK +dwQ +flN +jrg +jrg +jrg +jrg +jrg +pxA +pxA +pxA +wnK +wnK +vKu +wnK +hfw +wnK +rZt +mwF +chU +mwF +pxA puZ puZ puZ @@ -59927,60 +59840,60 @@ fQX jAL fQX iMb -ben -vpD -vpD -oQl -oQl -oQl -oQl -oQl -oQl -oQl -fQX jAL -fQX -fQX -xMz -uqb -uqb -kLM -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -iQq -iQq -iQq -kLM -kLM -ath -aDM -kLM -sax -sax -sax -sax -sax -sax -sax -puZ -puZ +iMb +iMb +iMb +iMb +jAL +iMb +iMb +iMb +jAL +jAL +iMb +oQl +asz +chU +gAV +chU +adV +rZt +rZt +rZt +rZt +rZt +mOu +asz +asz +asz +asz +asz +rZt +flN +rZt +rZt +dwQ +pxA +pxA +pxA +jrg +jrg +pxA +mWE +pJA +wnK +mwF +mwF +mwF +mwF +vKu +bJi +bJi +chU +mwF +pxA +flN puZ puZ puZ @@ -60083,67 +59996,67 @@ fQX iMb iMb iMb -iMb +jAL fQX jAL fQX jAL jAL -vpD -ben -vpD -oQl -oQl -oQl -oQl -oQl +iMb +jAL +iMb +iMb +iMb +iMb +iMb +iMb +jDv +jDv +jDv +jDv oQl -vAp -mhl -fQX -mhl -vAp -xMz -uqb -kLM -iQq -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -iQq -iQq -iQq -iQq -iQq -kLM -lMO -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +asz +chU +gAV +chU +adT +rZt +rZt +rZt +rZt +mRU +aex +asz +nVn +iCJ +pxA +pxA +pxA +wnK +wnK +wnK +wnK +jXM +wnK +pxA +jrg +jrg +pxA +nHH +pDp +wnK +flN +flN +flN +flN +flN +mwF +rZt +rZt +mwF +pxA +kTd +kTd puZ puZ puZ @@ -60254,59 +60167,59 @@ pqj jAL iMb iMb -oQl -oQl -oQl -oQl -oQl -oQl -aUP -fQX -jAL iMb -xMz -xMz -kLM -uqb -kLM -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -iQq -iQq -kLM -kLM -uqb -kLM -uqb -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +iMb +iMb +iMb +iMb +jDv +asz +asz +asz +asz +asz +chU +gAV +chU +adS +aea +ptr +aew +aew +aex +asz +asz +lXy +nxA +vKu +vKu +bUe +rZt +chU +rZt +chU +dwQ +wnK +pxA +pxA +pxA +pxA +nzf +wnK +wnK +aQm +aXc +aXI +bbG +flN +mwF +chU +bJi +bJi +wBf +flN +kTd +kTd puZ puZ puZ @@ -60416,59 +60329,59 @@ pqj jAL jAL iMb -oQl -oQl -oQl -oQl -oQl -aTr +iMb iMb iMb jAL iMb -xMz -xMz -aDM -uqb -kLM -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -kLM -kLM -kLM -aDM -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +jDv +asz +dAt +sNX +dAt +rZt +chU +gAV +chU +asz +asz +asz +asz +asz +asz +asz +asz +pxA +vdS +wnK +vKu +pxA +pxA +ahu +wnK +wnK +wnK +wnK +jXM +uYt +pxA +pxA +nrr +wnK +wnK +aPe +act +acA +bah +flN +mwF +chU +bJi +rZt +flN +flN +rZt +flN puZ puZ puZ @@ -60578,59 +60491,59 @@ pqj jAL jAL cKL -jAL -oQl oQl -cKL -cKL -jAL iMb -jAL -jAL -pDH -xMz -xMz -aDM -uqb -uqb -kLM -iQq -iQq -iQq -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -kLM -cQW -iQq -kLM -kLM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +iMb +iMb +iMb +oQl +asz +gha +rZt +sNX +rZt +chU +gAV +chU +rZt +asz +wqc +tOq +hXQ +asz +goj +goj +pxA +vKu +wnK +wnK +cSn +pxA +pxA +sIX +chU +rZt +chU +rZt +wnK +pxA +pxA +nmT +pve +wnK +aPd +aRz +aXi +bag +flN +mwF +chU +mwF +flN +wBf +pxA +pxA +kTd puZ puZ puZ @@ -60740,60 +60653,60 @@ pqj pqj jAL jAL -fQX -aOk -aQh -rxF -wuw -iMb +oQl +oQl +oQl iMb jAL -onF -qRV -mIL -xMz -xMz -aDM -uqb -kLM -kLM -gGH -iQq -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -iQq -cQW -cQW -cQW -cQW -kLM -gGH -cQW -iQq -kLM -uqb -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +oQl +asz +dAt +sNX +dAt +rZt +chU +gAV +chU +rZt +bXo +biM +biM +biM +goj +xJA +goj +bXo +vKu +soj +wnK +wnK +cSn +pxA +pxA +pxA +wnK +wnK +wnK +wnK +wnK +pxA +kRV +pEv +wnK +flN +flN +flN +flN +flN +mwF +chU +fww +sNX +dAt +rZt +pxA +kTd +flN puZ puZ puZ @@ -60902,60 +60815,60 @@ pqj pqj pqj iMb -jAL -aOl -oCk -jAL -jJf -jAL -jAL -iMb -iMb -kVs -bbF -xMz -xMz -uqb -uqb -kLM -kLM -gCx -iQq -iQq -cQW -cQW -cQW -iQq -iQq -iQq -gGH -iQq -iQq -cQW -cQW -cQW -cQW -kLM -iQq -iQq -iQq -kLM -uqb -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +oQl +oQl +oQl +asz +rZt +bgC +rZt +rZt +chU +gAV +chU +rZt +asz +biM +biM +biM +goj +lpA +uWA +pxA +tNP +lFp +jcv +fqJ +cSn +pxA +pxA +pxA +rZH +rZt +chU +rZt +rZt +pxA +pxA +pxA +wnK +mwF +mwF +mwF +mwF +vKu +mwF +chU +uOR +uuN +acP +flN +pxA +flN +kTd puZ puZ puZ @@ -61064,60 +60977,60 @@ jAL pqj pqj pqj -pqj -jAL -iMb -aRo -jAL -pqj -iMb -jAL -iMb -jAL -jAL -jAL -kvQ -uqb -dgG -kLM -kLM -kLM -kLM -kLM -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -gCx -kLM -kLM -uqb -kLM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +oQl +oQl +oQl +asz +eaa +rZt +rZt +rZt +chU +gAV +chU +iaK +kTI +biM +xtI +qOd +goj +wnK +goj +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +wnK +wnK +wnK +wnK +wnK +pxA +rZt +vKu +vKu +wnK +vKu +wnK +vKu +wnK +bJi +chU +fww +sNX +dAt +flN +rZt +flN +kTd puZ puZ puZ @@ -61226,61 +61139,61 @@ jAL jAL pqj pqj -pqj -pqj -jAL -jAL -iMb -aTt -iMb -iMb -iMb -fQX -jAL -jAL -kvQ -oUu -uqb -kLM -kLM -uqb -iQq -gCx -kLM -uqb -kLM -iQq -iQq -kLM -kLM -kLM -kLM -kLM -iQq -iQq -kLM -kLM -kLM -uqb -uqb -uqb -kLM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +oQl +oQl +oQl +asz +rZt +byr +rZt +rZt +chU +gAV +chU +iaK +feA +biM +biM +biM +uuv +yhX +goj +pxA +rZt +dTU +osV +dTU +dTU +dTU +rZt +kap +rZt +crF +crF +crF +wnK +vKu +wnK +chU +rZt +chU +rZt +chU +rZt +chU +rZt +chU +mwF +bgC +flN +flN +rZt +flN +kTd +flN puZ puZ "} @@ -61388,61 +61301,61 @@ jAL jAL jAL pqj -pqj -pqj -pqj -pqj -aSF -aTw -iMb -iMb -jAL -pqj -jAL -pqj -iQq -iQq -iQq -iQq -uqb -uqb -uqb -uqb -kLM -kLM -iQq -gCx -uqb -uqb -qkI -iQq -kLM -kLM -kLM -kLM -gCx -kLM -uqb -uqb -aDM -upf -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +oQl +oQl +oQl +asz +wFB +eSt +wFB +dTU +rZt +gAV +rZt +txX +kRj +qOZ +cEj +qOZ +goj +fwv +goj +bXo +chU +kQJ +vKu +wnK +vKu +wnK +vKu +kap +rZt +crF +crF +crF +wnK +vKu +wnK +chU +rZt +chU +rZt +chU +rZt +chU +rZt +chU +mwF +byr +rZt +rZt +xun +flN +kTd +kue puZ puZ "} @@ -61550,61 +61463,61 @@ aKk lyh rxF wcF -pqj -aOp -pqj -pqj -fQX -iMb -iMb -jAL +oQl +oQl +oQl iMb iMb -jAL -jAL -kvQ -iOu -kLM -kLM -kLM -kLM -kLM -uqb -uqb -uqb -uqb -kLM -iQq -uqb -uqb -kLM -kLM -kLM -uqb -uqb -uqb -uqb -kLM -uqb -kLM -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +rib +asz +gha +uuN +sNX +rZt +chU +gAV +chU +rZt +asz +dnH +jft +ghS +asz +goj +goj +pxA +rZH +vKu +ghU +pxA +vQm +vFX +pxA +pxA +wnK +wnK +wnK +wnK +wnK +pxA +rZt +vKu +vKu +wnK +vKu +wnK +vKu +wnK +bJi +chU +fww +gaJ +dAt +rZt +rZt +flN +flN +kTd puZ puZ "} @@ -61708,65 +61621,65 @@ gkv gkv puZ puZ -aKn +jAL rMb iMb jJf -pqj -pqj -cKL -cKL -fQX -iMb -fQX iMb iMb iMb jAL -jAL -kvQ -uqb -aDM -uqb -uqb -uqb -uqb -uqb -uqb -qza -kLM -hXX -kLM -cko -rLu -nMR -kLM -uqb -uqb -aDM -xvb -uqb -uqb -uqb -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +iMb +rib +asz +wFB +eSt +wFB +dTU +rZt +gAV +rZt +dTU +asz +asz +asz +asz +asz +goj +goj +fNE +chU +wnK +pxA +pxA +pxA +pxA +pxA +pxA +mcw +rZt +chU +rZt +chU +pxA +pxA +pxA +wnK +mwF +mwF +mwF +mwF +vKu +mwF +chU +uOR +rZt +acP +flN +pxA +flN +flN +kue puZ puZ "} @@ -61874,61 +61787,61 @@ aKn jAL jAL jAL -pqj -cKL -iMb -fQX -cKL -aTH +jAL iMb iMb -hJd iMb iMb -puZ -puZ -puZ -puZ -eaB -eaB -gJk -hIn -aDM -uqb -uqb -uqb -uqb -mfa -jqx -slO -nNl -nMR -uqb -aDM -kLM -kLM -xvb -uqb -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +rib +asz +asz +asz +asz +asz +wnK +wnK +wnK +wnK +wnK +rZt +rZt +asz +wTm +biM +biM +fNE +chU +vKu +vQm +pxA +rZt +iQe +wnK +gFb +nMk +chU +rZt +chU +rZt +fNE +mWE +pDu +wnK +flN +flN +flN +flN +flN +mwF +chU +fww +sNX +dAt +flN +pxA +flN +flN +kue puZ puZ "} @@ -62036,61 +61949,61 @@ jAL jAL jAL jAL -pqj jAL iMb -aRp -lyh -rxF -wuw -aVW -fQX iMb -cKL -puZ -puZ -puZ -puZ -slO -slO -slO -aKP -aMn -puZ -kfl -eGe -rnO -qza -mNs -slO -slO -ofl -uqb -xvb -kGW -aDM -uqb -uqb -uqb -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +jAL +jAL +oQl +oQl +oQl +asz +asz +asz +goj +goj +djO +goj +wnK +rZt +rZt +fNE +nPH +biM +biM +fNE +chU +wnK +vFX +pxA +iQe +qaF +chU +kyu +drx +rZt +chU +rZt +chU +fNE +mHU +pDp +wnK +aQm +aXc +aXI +bbG +flN +mwF +chU +mwF +rZt +flN +rZt +flN +flN +flN +kue puZ puZ "} @@ -62198,61 +62111,61 @@ puZ aLD aMv jAL +oQl +oQl +oQl +oQl jAL -iMb -cKL -iMb -rMb -iMb -fqb -jAL -iMb -cKL -iMb -puZ -puZ -puZ -puZ -puZ -slO -slO -slO -slO -puZ -lLv -cQW -rbA -uqb -mNs -xMz -slO -ofl -uqb -uqb -aDM -uqb -uqb -uqb -uqb -riV -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +asz +iqt +rZt +goj +axa +hVs +djO +dBB +rZt +rZt +fNE +sdF +biM +biM +fNE +rZt +vKu +pxA +pxA +rZt +hEE +chU +gFb +sfM +oHF +wnK +wnK +wnK +pxA +lYG +wnK +wnK +aPe +aSJ +aXn +bah +flN +mwF +chU +mwF +flN +rZt +rZt +flN +flN +kTd +kue puZ puZ "} @@ -62360,61 +62273,61 @@ puZ puZ puZ jAL +oQl +oQl +oQl +oQl jAL -cKL -fQX -iMb -aSG -aTL -fQX -iMb -fQX -cKL -puZ -puZ -puZ -puZ -puZ -puZ -slO -slO -slO -puZ -puZ -mev -cQW -rbA -aDM -mOv -niL -niL -oqH -uqb -uqb -uqb -uqb -uqb -uqb -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -jCE -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +asz +bNu +rZt +djO +qCs +pPt +goj +wnK +qyE +wnK +asz +fNE +fNE +fNE +pxA +xvS +xvS +pxA +pxA +iQe +qaF +chU +pxA +pxA +pxA +vKu +vKu +vKu +pxA +lGU +wnK +wnK +aPd +aRz +aXi +bag +flN +mwF +chU +mwF +rZt +flN +flN +pxA +flN +kTd +kue puZ puZ "} @@ -62524,59 +62437,59 @@ puZ puZ puZ puZ -cKL -fQX -iMb -iMb -iMb -cKL -iMb -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -uqb -uqb -uqb -kLM -uqb -uqb -uqb -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -hFl -jLx -iWS -jCE -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +oQl +oQl +oQl +asz +iIe +rZt +goj +fHM +rZt +goj +wnK +rZt +vKu +vKu +vKu +vKu +vKu +vKu +vKu +toN +vKu +vKu +dgF +hEE +wnK +pxA +pxA +pxA +wnK +wnK +wnK +pxA +hQO +pve +wnK +flN +wAP +flN +dJS +flN +mwF +chU +mwF +rZt +rZt +wBf +pxA +kTd +kue +flN puZ puZ "} @@ -62687,57 +62600,57 @@ puZ puZ puZ puZ -cKL -fQX -cKL -cKL -iMb -fQX -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -snN -uqb -uqb -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -oaP -jCE -jCE -jCE -jCE -acO -puZ -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +oQl +oQl +asz +asz +rZt +goj +rZt +rZt +goj +wnK +xEB +vKu +wnK +rZt +rZt +eFQ +rZt +rZt +wnK +vKu +vKu +vKu +vKu +vKu +jqT +pxA +ctk +cVy +chU +mwF +pxA +kRV +kVe +wnK +mwF +mwF +yiS +mwF +vKu +mwF +chU +mwF +rZt +flN +flN +flN +kTd +kTd puZ puZ puZ @@ -62851,55 +62764,55 @@ puZ puZ puZ puZ -fQX -iMb -fQX -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -hFl -jCE -jCE -acM -jCE -jCE -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +asz +tqs +rZt +goj +rZt +fHM +goj +wnK +rZt +vKu +wnK +rZt +rZt +wnK +rZt +rZt +wnK +vKu +vKu +vKu +vKu +vKu +bqy +pxA +ugP +mwF +chU +mwF +pxA +pxA +pxA +pxA +wnK +vKu +xIL +vKu +wnK +bJi +chU +bJi +rZt +twi +flN +flN +kue +flN puZ puZ puZ @@ -63016,51 +62929,51 @@ puZ puZ puZ puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -hFl -jCE -jCE -jCE -puZ -puZ -puZ -puZ -puZ +asz +wgp +rZt +goj +qNK +hrb +goj +wnK +rZt +vKu +lkX +ift +sQU +vKu +sQU +ift +lkX +rhS +oqQ +oqQ +lNm +vKu +pxA +pxA +ctk +mwF +chU +bJi +euA +euA +euA +bJi +euA +euA +euA +euA +bJi +bJi +chU +mwF +rZt +twi +kue +kTd +flN puZ puZ puZ @@ -63178,50 +63091,50 @@ puZ puZ puZ puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -hFl -hFl -puZ -puZ -puZ -puZ -puZ +asz +fjd +rZt +djO +kts +wAM +djO +asz +pxA +pxA +ift +smI +hUG +vKu +udJ +euA +ift +pKP +nNN +kZy +pKP +vKu +uLu +pxA +pxA +bJi +rZt +dTU +dTU +dTU +dTU +rZt +dTU +dTU +dTU +dTU +rZt +dTU +rZt +mwF +rZt +pxA +kTd +kTd puZ puZ puZ @@ -63340,48 +63253,48 @@ puZ puZ puZ puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +asz +asz +asz +goj +djO +goj +goj +asz +pxA +pxA +lkX +ffw +uim +vKu +uim +ffw +lkX +vKu +vKu +vKu +vKu +vKu +uLu +pxA +pxA +bJi +bJi +euA +vPR +euA +euA +bJi +euA +euA +vPR +euA +bJi +euA +euA +bJi +rZt +pxA puZ puZ puZ @@ -63504,46 +63417,46 @@ puZ puZ puZ puZ +asz +asz +asz +asz +asz +asz puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +pxA +ueu +mMa +euA +vKu +euA +euA +vKu +rhS +oqQ +oqQ +rhS +ueu +pxA +pxA +pxA +pxA +pxA +sym +ctk +ugP +pxA +pxA +xwi +thc +ckI +dTn +pxA +pxA +rZt +rZt +rZt +pxA puZ puZ puZ @@ -63673,39 +63586,39 @@ puZ puZ puZ puZ +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA puZ puZ puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA puZ puZ puZ diff --git a/maps/map_files/Kutjevo/Kutjevo.dmm b/maps/map_files/Kutjevo/Kutjevo.dmm index d7d69fd34bc8..653416320eac 100644 --- a/maps/map_files/Kutjevo/Kutjevo.dmm +++ b/maps/map_files/Kutjevo/Kutjevo.dmm @@ -62,6 +62,10 @@ "adD" = ( /turf/open/floor/almayer/research/containment/floor1, /area/kutjevo/exterior/lz_dunes) +"adG" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/interior/colony_South) "adX" = ( /obj/item/stack/sheet/wood, /obj/structure/machinery/light, @@ -362,6 +366,15 @@ dir = 4 }, /area/kutjevo/interior/complex/Northwest_Dorms) +"axi" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + pixel_x = -4; + pixel_y = 10 + }, +/turf/open/gm/river/desert/shallow_edge{ + dir = 9 + }, +/area/kutjevo/exterior/spring) "axK" = ( /obj/item/trash/cigbutt/bcigbutt, /obj/structure/stairs/perspective/kutjevo{ @@ -381,7 +394,7 @@ /turf/open/floor/kutjevo/grey/plate, /area/kutjevo/interior/complex/med/cells) "azb" = ( -/obj/structure/machinery/chem_dispenser/beer{ +/obj/structure/machinery/chem_dispenser/soda/beer{ icon_state = "dispenser" }, /turf/open/floor/kutjevo/tan/multi_tiles, @@ -563,6 +576,10 @@ }, /turf/open/auto_turf/sand/layer0, /area/kutjevo/exterior/scrubland) +"aKg" = ( +/obj/structure/tunnel, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/interior/colony_South) "aKl" = ( /obj/structure/machinery/landinglight/ds1{ dir = 1 @@ -679,6 +696,13 @@ icon = 'icons/turf/floors/desert_water_toxic.dmi' }, /area/kutjevo/interior/oob) +"aXU" = ( +/obj/structure/barricade/wooden{ + dir = 1; + pixel_y = 13 + }, +/turf/open/desert/desert_shore/shore_edge1, +/area/kutjevo/exterior/spring) "aXV" = ( /obj/structure/machinery/colony_floodlight_switch, /turf/closed/wall/kutjevo/colony/reinforced, @@ -964,7 +988,7 @@ "bsq" = ( /obj/structure/tunnel, /turf/open/auto_turf/sand/layer0, -/area/kutjevo/interior/colony_central) +/area/kutjevo/interior/colony_north) "bsw" = ( /obj/structure/platform/kutjevo/smooth{ dir = 8 @@ -1958,6 +1982,14 @@ }, /turf/open/asphalt/cement_sunbleached, /area/kutjevo/interior/power) +"cKY" = ( +/obj/structure/prop/brazier/frame/full/campfire, +/obj/item/tool/match/paper{ + pixel_y = -2; + pixel_x = -11 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "cLn" = ( /obj/structure/stairs/perspective/kutjevo{ dir = 1; @@ -2286,6 +2318,11 @@ }, /turf/open/floor/plating/kutjevo, /area/kutjevo/interior/complex/botany) +"dcC" = ( +/turf/open/desert/desert_shore/shore_edge1{ + dir = 1 + }, +/area/kutjevo/exterior/spring) "ddi" = ( /obj/structure/platform/kutjevo, /obj/structure/blocker/invisible_wall, @@ -2418,6 +2455,11 @@ dir = 10 }, /area/kutjevo/interior/colony_South/power2) +"dnd" = ( +/turf/open/gm/river/desert/shallow_edge{ + dir = 8 + }, +/area/kutjevo/exterior/spring) "dnl" = ( /obj/structure/platform/kutjevo/rock, /turf/open/auto_turf/sand/layer1, @@ -2534,6 +2576,14 @@ icon = 'icons/turf/floors/desert_water_toxic.dmi' }, /area/kutjevo/interior/oob) +"dtV" = ( +/obj/structure/machinery/blackbox_recorder, +/obj/item/prop/almayer/flight_recorder/colony{ + pixel_x = 10; + pixel_y = 10 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/kutjevo/interior/complex/botany/east_tech) "duu" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ name = "\improper South Power Shutters" @@ -2668,6 +2718,15 @@ dir = 8 }, /area/kutjevo/exterior/runoff_river) +"dBt" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + pixel_x = -8; + pixel_y = 10 + }, +/turf/open/gm/river/desert/shallow_edge{ + dir = 5 + }, +/area/kutjevo/exterior/spring) "dBO" = ( /obj/structure/ladder, /obj/structure/blocker/invisible_wall, @@ -2736,6 +2795,12 @@ }, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/colony_South) +"dGi" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 1 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "dGx" = ( /obj/structure/window/framed/kutjevo, /turf/open/floor/kutjevo/tan, @@ -2859,6 +2924,11 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/colony_north) +"dOj" = ( +/turf/open/gm/river/desert/shallow_corner{ + dir = 1 + }, +/area/kutjevo/exterior/spring) "dOJ" = ( /obj/structure/barricade/deployable, /turf/open/floor/kutjevo/colors/purple/edge, @@ -2917,7 +2987,7 @@ /area/kutjevo/interior/power/comms) "dST" = ( /obj/effect/decal/cleanable/blood, -/obj/item/weapon/gun/shotgun/double/with_stock, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/complex/Northwest_Flight_Control) "dTn" = ( @@ -2949,6 +3019,10 @@ }, /turf/open/gm/river/desert/shallow, /area/kutjevo/exterior/runoff_river) +"dUc" = ( +/obj/structure/flora/grass/tallgrass/desert, +/turf/open/auto_turf/sand/layer2, +/area/kutjevo/exterior/spring) "dUy" = ( /obj/structure/platform/kutjevo/smooth, /turf/open/floor/kutjevo/multi_tiles{ @@ -3038,6 +3112,15 @@ /obj/structure/blocker/invisible_wall, /turf/open/floor/plating/kutjevo, /area/kutjevo/exterior/runoff_dunes) +"eaT" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/interior/colony_South) +"ebv" = ( +/turf/open/desert/desert_shore/shore_corner2{ + dir = 8 + }, +/area/kutjevo/exterior/spring) "ebB" = ( /turf/open/auto_turf/sand/layer1, /area/kutjevo/interior/colony_S_East) @@ -3419,6 +3502,9 @@ "evZ" = ( /turf/open/floor/almayer/research/containment/floor2, /area/kutjevo/interior/power) +"ewl" = ( +/turf/open/desert/desert_shore/desert_shore1, +/area/kutjevo/exterior/spring) "ewF" = ( /obj/item/phone{ pixel_x = 1; @@ -3540,6 +3626,20 @@ }, /turf/open/floor/kutjevo/grey/plate, /area/kutjevo/interior/construction) +"eCE" = ( +/obj/item/clipboard{ + pixel_y = 4; + pixel_x = -4 + }, +/obj/item/tool/pen{ + name = "stained pen"; + desc = "It's a seemingly normal pen... aside from the faint red fingerprints on the side..."; + pixel_x = 2; + pixel_y = 10 + }, +/obj/item/paper/crumpled/bloody, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "eCY" = ( /obj/structure/machinery/cryo_cell, /turf/open/floor/kutjevo/grey/plate, @@ -3596,6 +3696,10 @@ "eHX" = ( /turf/open/auto_turf/sand/layer0, /area/kutjevo/exterior/telecomm/lz1_south) +"eIq" = ( +/obj/item/tool/hatchet, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "eIL" = ( /turf/open/floor/kutjevo/colors/cyan/edge{ dir = 4 @@ -3851,6 +3955,9 @@ dir = 4 }, /area/kutjevo/interior/colony_South/power2) +"eVR" = ( +/turf/open/gm/river/desert/deep, +/area/kutjevo/exterior/spring) "eWP" = ( /obj/effect/landmark/corpsespawner/colonist/kutjevo, /turf/open/floor/kutjevo/multi_tiles, @@ -3935,6 +4042,10 @@ icon = 'icons/turf/floors/desert_water_toxic.dmi' }, /area/kutjevo/interior/power) +"fdH" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/exterior/spring) "fdS" = ( /obj/effect/decal/cleanable/blood/xeno{ icon_state = "xgib1" @@ -4106,6 +4217,10 @@ dir = 4 }, /area/kutjevo/interior/construction) +"fne" = ( +/obj/item/trash/barcardine, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "foE" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/barricade/handrail/kutjevo{ @@ -4403,6 +4518,12 @@ }, /turf/open/floor/plating/kutjevo, /area/kutjevo/interior/colony_South/power2) +"fMB" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 5 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "fNc" = ( /obj/structure/platform/kutjevo{ dir = 4 @@ -4581,6 +4702,14 @@ /obj/structure/prop/dam/gravestone, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/colony_N_East) +"fYr" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 8; + health = 25000 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "fYE" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/shuttle/dropship/flight/lz2, @@ -4703,6 +4832,10 @@ dir = 8 }, /area/kutjevo/interior/power/comms) +"giY" = ( +/obj/item/device/flashlight/lamp/tripod/grey, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "giZ" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited{ pixel_y = 28 @@ -4752,6 +4885,12 @@ }, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/oob) +"gnj" = ( +/obj/docking_port/stationary/marine_dropship/lz1{ + name = "LZ1: Dunes Landing Zone" + }, +/turf/open/floor/plating/kutjevo, +/area/shuttle/drop1/kutjevo) "gnP" = ( /turf/open/floor/kutjevo/colors/cyan/tile, /area/kutjevo/interior/complex/med/cells) @@ -4768,6 +4907,13 @@ dir = 10 }, /area/kutjevo/exterior/runoff_dunes) +"gok" = ( +/obj/structure/flora/bush/desert{ + icon_state = "tree_2"; + pixel_y = 14 + }, +/turf/open/desert/desert_shore/desert_shore1, +/area/kutjevo/exterior/spring) "goT" = ( /turf/closed/wall/kutjevo/rock, /area/kutjevo/exterior/runoff_dunes) @@ -4799,6 +4945,15 @@ /obj/item/clipboard, /turf/open/floor/kutjevo/colors/green, /area/kutjevo/interior/complex/botany) +"gsn" = ( +/obj/structure/flora/bush/desert{ + icon_state = "tree_2"; + pixel_y = 14 + }, +/turf/open/desert/desert_shore/desert_shore1{ + dir = 1 + }, +/area/kutjevo/exterior/spring) "gsq" = ( /obj/structure/filingcabinet, /obj/structure/window/reinforced/tinted{ @@ -4942,6 +5097,13 @@ "gBl" = ( /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/oob) +"gBu" = ( +/obj/structure/barricade/wooden{ + dir = 4; + pixel_y = 4 + }, +/turf/open/auto_turf/sand/layer2, +/area/kutjevo/exterior/spring) "gBI" = ( /obj/effect/decal/cleanable/blood/oil, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -5039,6 +5201,9 @@ dir = 8 }, /area/kutjevo/interior/complex/Northwest_Flight_Control) +"gFA" = ( +/turf/open/desert/desert_shore/shore_edge1, +/area/kutjevo/exterior/spring) "gHh" = ( /obj/structure/flora/grass/desert/lightgrass_9, /turf/open/auto_turf/sand/layer0, @@ -5058,6 +5223,15 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/kutjevo/grey/plate, /area/kutjevo/interior/foremans_office) +"gHV" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) +"gJx" = ( +/turf/open/gm/river/desert/shallow_corner{ + dir = 4 + }, +/area/kutjevo/exterior/spring) "gJB" = ( /obj/structure/stairs/perspective/kutjevo{ dir = 8; @@ -5706,6 +5880,11 @@ }, /turf/open/floor/kutjevo/plate, /area/kutjevo/interior/colony_central) +"hET" = ( +/turf/open/gm/river/desert/shallow_edge{ + dir = 10 + }, +/area/kutjevo/exterior/spring) "hFi" = ( /obj/structure/barricade/wooden{ dir = 1; @@ -5834,6 +6013,10 @@ icon_state = "platingdmg3" }, /area/kutjevo/interior/complex/Northwest_Dorms) +"hRG" = ( +/obj/structure/prop/dam/boulder/boulder2, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "hSo" = ( /obj/structure/flora/grass/tallgrass/desert/corner{ dir = 10 @@ -5947,6 +6130,11 @@ }, /turf/open/floor/plating/kutjevo, /area/kutjevo/exterior/construction) +"hZx" = ( +/obj/structure/flora/grass/tallgrass/desert, +/obj/structure/flora/grass/tallgrass/desert, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "iaj" = ( /turf/closed/wall/kutjevo/rock, /area/kutjevo/exterior/lz_river) @@ -6094,6 +6282,12 @@ }, /turf/open/floor/plating/kutjevo, /area/kutjevo/interior/complex/med/triage) +"irb" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 8 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "ird" = ( /obj/structure/blocker/invisible_wall, /obj/structure/platform/kutjevo{ @@ -6367,6 +6561,9 @@ /obj/item/storage/box/trackimp, /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/complex/botany/east_tech) +"iNI" = ( +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/exterior/spring) "iNY" = ( /obj/structure/barricade/wooden{ dir = 8 @@ -6527,6 +6724,13 @@ }, /turf/open/auto_turf/sand/layer0, /area/kutjevo/exterior/complex_border/med_rec) +"jac" = ( +/obj/item/device/radio{ + name = "damp shortwave radio"; + desc = "A regular shortwave radio, this one has experienced minor water damage but is still functional." + }, +/turf/open/desert/desert_shore/shore_corner2, +/area/kutjevo/exterior/spring) "jav" = ( /obj/structure/closet/secure_closet/engineering_welding, /obj/item/ammo_box/magazine/nailgun, @@ -6698,6 +6902,16 @@ /obj/item/stack/sheet/wood, /turf/open/floor/kutjevo/colors, /area/kutjevo/interior/power/comms) +"jnD" = ( +/obj/structure/barricade/wooden{ + dir = 4 + }, +/obj/structure/barricade/wooden{ + dir = 1; + pixel_y = 13 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "jnS" = ( /obj/structure/window/framed/kutjevo, /turf/open/floor/plating/kutjevo, @@ -7172,12 +7386,6 @@ "jYS" = ( /turf/open/auto_turf/sand/layer2, /area/kutjevo/interior/colony_S_East) -"jZJ" = ( -/obj/docking_port/stationary/marine_dropship/lz1{ - name = "Dunes Landing Zone" - }, -/turf/open/floor/plating/kutjevo, -/area/shuttle/drop1/kutjevo) "jZT" = ( /turf/open/floor/kutjevo/colors/cyan/edge{ dir = 8 @@ -7274,6 +7482,10 @@ /obj/structure/platform/kutjevo, /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/colony_north) +"kgx" = ( +/obj/structure/flora/grass/tallgrass/desert, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "khI" = ( /obj/structure/window/framed/kutjevo/reinforced/hull, /turf/open/floor/kutjevo/grey/plate, @@ -7494,12 +7706,6 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/auto_turf/sand/layer1, /area/kutjevo/interior/colony_north) -"kvd" = ( -/obj/docking_port/stationary/marine_dropship/lz2{ - name = "NW Colony Landing Zone" - }, -/turf/open/floor/plating/kutjevo, -/area/shuttle/drop2/kutjevo) "kvf" = ( /obj/structure/platform_decoration/kutjevo/rock{ dir = 4 @@ -7666,6 +7872,9 @@ "kDS" = ( /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/complex/botany) +"kEh" = ( +/turf/open/gm/river/desert/shallow_edge, +/area/kutjevo/exterior/spring) "kEG" = ( /obj/structure/sign/poster{ pixel_y = -32 @@ -7722,6 +7931,10 @@ "kIn" = ( /turf/open/auto_turf/sand/layer2, /area/kutjevo/exterior/scrubland) +"kIQ" = ( +/obj/structure/prop/dam/large_boulder/boulder2, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "kKb" = ( /obj/structure/barricade/wooden{ dir = 8 @@ -7835,10 +8048,20 @@ }, /turf/open/floor/plating/kutjevo, /area/kutjevo/interior/colony_South/power2) +"kQa" = ( +/obj/structure/bed/bedroll, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "kQo" = ( /obj/structure/girder, /turf/open/auto_turf/sand/layer1, /area/kutjevo/interior/construction) +"kQD" = ( +/turf/open/desert/desert_shore/desert_shore1{ + dir = 8 + }, +/area/kutjevo/exterior/spring) "kQU" = ( /obj/structure/platform/kutjevo{ dir = 8 @@ -8095,6 +8318,12 @@ /obj/effect/landmark/corpsespawner/colonist/kutjevo, /turf/open/gm/river/desert/deep/covered, /area/kutjevo/interior/power/comms) +"lkY" = ( +/obj/docking_port/stationary/marine_dropship/lz2{ + name = "LZ2: NW Colony Landing Zone" + }, +/turf/open/floor/plating/kutjevo, +/area/shuttle/drop2/kutjevo) "llg" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/auto_turf/sand/layer0, @@ -8320,6 +8549,12 @@ }, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/colony_north) +"lBu" = ( +/obj/structure/machinery/power/terminal{ + dir = 4 + }, +/turf/open/floor/kutjevo/multi_tiles, +/area/kutjevo/interior/power) "lBP" = ( /obj/structure/window/framed/kutjevo/reinforced, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -8353,6 +8588,11 @@ /obj/item/stack/sheet/wood, /turf/open/floor/kutjevo/colors/purple, /area/kutjevo/interior/complex/med/locks) +"lEf" = ( +/turf/open/gm/river/desert/shallow_edge{ + dir = 6 + }, +/area/kutjevo/exterior/spring) "lEA" = ( /turf/closed/wall/kutjevo/colony/reinforced, /area/kutjevo/interior/colony_central) @@ -8623,11 +8863,9 @@ /turf/open/floor/almayer/research/containment/floor2, /area/kutjevo/interior/complex/med/auto_doc) "lZT" = ( -/obj/structure/tunnel{ - id = "hole1" - }, -/turf/open/auto_turf/sand/layer2, -/area/kutjevo/interior/colony_north) +/obj/structure/tunnel, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/construction) "lZZ" = ( /obj/structure/platform_decoration/kutjevo{ dir = 4 @@ -8674,6 +8912,11 @@ "mbS" = ( /turf/closed/wall/kutjevo/colony, /area/kutjevo/interior/complex/botany) +"mct" = ( +/turf/open/gm/river/desert/shallow_corner{ + dir = 8 + }, +/area/kutjevo/exterior/spring) "mcv" = ( /obj/structure/window/framed/kutjevo/reinforced/hull, /obj/structure/blocker/invisible_wall, @@ -8969,6 +9212,10 @@ dir = 6 }, /area/kutjevo/interior/complex/med/locks) +"mvX" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "mwh" = ( /obj/structure/window/framed/kutjevo/reinforced, /turf/open/floor/kutjevo/colors/green/tile, @@ -8988,6 +9235,11 @@ /obj/item/frame/rack, /turf/open/floor/kutjevo/tan/multi_tiles, /area/kutjevo/interior/complex/botany/east_tech) +"myk" = ( +/turf/open/gm/river/desert/shallow_edge{ + dir = 4 + }, +/area/kutjevo/exterior/spring) "mzn" = ( /obj/structure/platform/kutjevo{ dir = 1 @@ -9007,6 +9259,18 @@ /obj/item/storage/pill_bottle/dexalin/skillless, /turf/open/floor/kutjevo/grey/plate, /area/kutjevo/interior/complex/med) +"mAD" = ( +/obj/structure/barricade/wooden{ + dir = 1; + pixel_y = 13 + }, +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 8; + health = 25000 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "mAH" = ( /obj/effect/decal/cleanable/blood, /obj/effect/decal/kutjevo_decals/catwalk, @@ -9300,6 +9564,11 @@ color = "#990000" }, /area/kutjevo/interior/oob) +"mNv" = ( +/turf/open/gm/river/desert/shallow_edge{ + dir = 5 + }, +/area/kutjevo/exterior/spring) "mNM" = ( /turf/closed/wall/kutjevo/colony, /area/kutjevo/exterior/runoff_bridge) @@ -9535,11 +9804,9 @@ /turf/open/desert/desert_shore/shore_corner2, /area/kutjevo/exterior/runoff_river) "niP" = ( -/obj/structure/tunnel{ - id = "hole3" - }, +/obj/structure/tunnel, /turf/open/auto_turf/sand/layer0, -/area/kutjevo/exterior/complex_border/botany_medical_cave) +/area/kutjevo/exterior/runoff_river) "niT" = ( /obj/structure/flora/grass/tallgrass/desert/corner{ dir = 1 @@ -10075,6 +10342,12 @@ /obj/structure/platform/kutjevo/rock, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/colony_central) +"nPq" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 6 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "nPs" = ( /obj/structure/blocker/invisible_wall, /turf/open/auto_turf/sand/layer1, @@ -10088,6 +10361,11 @@ /obj/structure/machinery/iv_drip, /turf/open/floor/kutjevo/colors/cyan, /area/kutjevo/interior/complex/med/triage) +"nPX" = ( +/turf/open/gm/river/desert/shallow_edge{ + dir = 9 + }, +/area/kutjevo/exterior/spring) "nQc" = ( /obj/structure/platform_decoration/kutjevo/rock, /obj/structure/platform_decoration/kutjevo/rock{ @@ -10226,6 +10504,12 @@ /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/complex/med/operating) +"nZC" = ( +/obj/structure/bed/bedroll, +/obj/effect/landmark/corpsespawner/colonist/kutjevo, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/exterior/spring) "nZK" = ( /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/complex/Northwest_Flight_Control) @@ -10243,6 +10527,12 @@ }, /turf/open/floor/kutjevo/tan/alt_inner_edge, /area/kutjevo/interior/complex/Northwest_Flight_Control) +"obv" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 10 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "oca" = ( /obj/structure/surface/table/almayer, /obj/item/device/flashlight/lamp, @@ -10779,6 +11069,10 @@ /obj/structure/filingcabinet/chestdrawer, /turf/open/floor/carpet, /area/kutjevo/interior/oob) +"oQb" = ( +/obj/structure/flora/grass/tallgrass/desert/corner, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "oQc" = ( /turf/closed/wall/kutjevo/colony, /area/kutjevo/interior/power_pt2_electric_boogaloo) @@ -10982,6 +11276,13 @@ icon_state = "0,5" }, /area/kutjevo/interior/construction) +"pfK" = ( +/obj/structure/barricade/wooden{ + dir = 1; + pixel_y = 13 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "pfR" = ( /obj/structure/platform/kutjevo/rock{ dir = 4 @@ -11108,6 +11409,15 @@ "pmv" = ( /turf/closed/wall/kutjevo/colony/reinforced, /area/kutjevo/exterior/complex_border/med_rec) +"pmD" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + pixel_x = -6; + pixel_y = 10 + }, +/turf/open/gm/river/desert/shallow_edge{ + dir = 6 + }, +/area/kutjevo/exterior/spring) "pmR" = ( /obj/structure/largecrate/supply/supplies/flares, /turf/open/auto_turf/sand/layer1, @@ -11678,6 +11988,10 @@ }, /turf/open/floor/kutjevo/colors/cyan/inner_corner, /area/kutjevo/interior/complex/med/triage) +"pVH" = ( +/obj/structure/tunnel, +/turf/open/auto_turf/sand/layer2, +/area/kutjevo/exterior/runoff_river) "pWe" = ( /obj/structure/platform_decoration/kutjevo/rock{ dir = 1 @@ -11725,6 +12039,11 @@ dir = 4 }, /area/kutjevo/interior/complex/botany/east_tech) +"qaU" = ( +/turf/open/desert/desert_shore/shore_corner2{ + dir = 1 + }, +/area/kutjevo/exterior/spring) "qaY" = ( /obj/structure/blocker/invisible_wall, /turf/open/desert/desert_shore/shore_corner2{ @@ -12094,6 +12413,12 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/colony_S_East) +"qFh" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 4 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "qFU" = ( /turf/open/desert/desert_shore/shore_corner2{ dir = 8 @@ -12187,11 +12512,9 @@ }, /area/kutjevo/interior/oob) "qLV" = ( -/obj/structure/tunnel{ - id = "hole2" - }, -/turf/open/auto_turf/sand/layer1, -/area/kutjevo/exterior/stonyfields) +/obj/structure/tunnel, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/interior/colony_S_East) "qMC" = ( /obj/structure/machinery/light{ dir = 4 @@ -12485,6 +12808,10 @@ /obj/structure/surface/table/reinforced/prison, /turf/open/floor/kutjevo/colors/red, /area/kutjevo/interior/complex/botany) +"riT" = ( +/obj/item/stack/sheet/wood/small_stack, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "rjS" = ( /obj/structure/blocker/invisible_wall, /obj/structure/platform/kutjevo{ @@ -12653,6 +12980,10 @@ /obj/structure/window/framed/kutjevo/reinforced/hull, /turf/open/floor/plating/kutjevo, /area/kutjevo/interior/power) +"rwC" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/sand/layer2, +/area/kutjevo/interior/colony_South) "rwL" = ( /obj/item/frame/table/almayer, /turf/open/floor/kutjevo/tan, @@ -12731,6 +13062,10 @@ "rCp" = ( /turf/open/desert/desert_shore/desert_shore1, /area/kutjevo/exterior/runoff_bridge) +"rDe" = ( +/obj/structure/prop/dam/boulder/boulder2, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/exterior/spring) "rDO" = ( /obj/effect/decal/medical_decals{ icon_state = "triagedecalbottomright" @@ -12990,6 +13325,13 @@ }, /turf/open/auto_turf/sand/layer0, /area/kutjevo/exterior/complex_border/botany_medical_cave) +"rUE" = ( +/obj/structure/barricade/wooden{ + dir = 4; + pixel_y = 4 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "rUM" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /obj/structure/girder, @@ -13204,6 +13546,9 @@ /obj/effect/spawner/random/tool, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/construction) +"skx" = ( +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "slb" = ( /obj/structure/machinery/light{ dir = 4 @@ -13291,6 +13636,10 @@ }, /turf/open/auto_turf/sand/layer1, /area/kutjevo/exterior/scrubland) +"soL" = ( +/obj/item/stack/sheet/wood/small_stack, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/exterior/spring) "soP" = ( /obj/structure/platform/kutjevo/smooth{ dir = 1 @@ -13536,6 +13885,11 @@ }, /turf/open/floor/kutjevo/colors, /area/kutjevo/interior/complex/botany) +"sGS" = ( +/turf/open/desert/desert_shore/shore_edge1{ + dir = 8 + }, +/area/kutjevo/exterior/spring) "sHg" = ( /obj/structure/bed/chair{ dir = 4 @@ -13851,6 +14205,12 @@ "tax" = ( /turf/open/gm/river/desert/shallow_edge, /area/kutjevo/exterior/runoff_dunes) +"tbx" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 9 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "tdC" = ( /obj/structure/bed/chair{ dir = 4 @@ -14245,7 +14605,6 @@ /area/kutjevo/interior/power) "tEV" = ( /obj/structure/surface/rack, -/obj/item/book/manual/engineering_particle_accelerator, /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/kutjevo/multi_tiles{ dir = 10 @@ -14427,18 +14786,6 @@ }, /turf/open/floor/plating/kutjevo, /area/kutjevo/interior/complex/botany) -"tRD" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 8 - }, -/obj/structure/platform_decoration/kutjevo{ - dir = 8 - }, -/obj/structure/platform_decoration/kutjevo{ - dir = 8 - }, -/turf/closed/wall/kutjevo/rock, -/area/kutjevo/interior/oob) "tRG" = ( /obj/structure/platform/kutjevo/smooth{ dir = 1; @@ -14535,6 +14882,11 @@ /obj/structure/blocker/invisible_wall, /turf/open/gm/river/desert/deep, /area/kutjevo/interior/oob) +"uaz" = ( +/turf/open/desert/desert_shore/desert_shore1{ + dir = 1 + }, +/area/kutjevo/exterior/spring) "ubm" = ( /obj/structure/machinery/light{ dir = 8 @@ -14562,6 +14914,11 @@ /obj/structure/platform/kutjevo/rock, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/colony_N_East) +"ueM" = ( +/turf/open/desert/desert_shore/shore_corner2{ + dir = 4 + }, +/area/kutjevo/exterior/spring) "ueO" = ( /obj/structure/prop/dam/boulder/boulder1, /turf/open/auto_turf/sand/layer0, @@ -14903,6 +15260,9 @@ }, /turf/open/auto_turf/sand/layer0, /area/kutjevo/exterior/complex_border/med_rec) +"uzJ" = ( +/turf/open/auto_turf/sand/layer2, +/area/kutjevo/exterior/spring) "uAh" = ( /obj/structure/platform/kutjevo/smooth, /turf/open/floor/kutjevo/multi_tiles, @@ -14943,7 +15303,7 @@ /turf/open/floor/kutjevo/colors/orange, /area/kutjevo/interior/power) "uBG" = ( -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, /turf/open/floor/kutjevo/grey/plate, /area/kutjevo/interior/complex/botany/east_tech) "uBO" = ( @@ -15154,6 +15514,10 @@ icon = 'icons/turf/floors/desert_water_toxic.dmi' }, /area/kutjevo/interior/oob) +"uNW" = ( +/obj/structure/prop/dam/boulder/boulder2, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/interior/colony_South) "uNZ" = ( /obj/structure/machinery/colony_floodlight, /obj/structure/platform/kutjevo/smooth{ @@ -15428,6 +15792,10 @@ /obj/structure/machinery/vending/snack, /turf/open/floor/kutjevo/colors/red, /area/kutjevo/interior/complex/botany) +"vdK" = ( +/obj/item/stack/sheet/wood/small_stack, +/turf/open/desert/desert_shore/desert_shore1, +/area/kutjevo/exterior/spring) "vdV" = ( /obj/structure/blocker/invisible_wall, /obj/structure/filtration/machine_96x96/indestructible{ @@ -15502,6 +15870,10 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/kutjevo/colors/green, /area/kutjevo/interior/complex/botany) +"vhC" = ( +/obj/structure/flora/grass/desert/lightgrass_11, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "vhQ" = ( /obj/structure/platform_decoration/kutjevo/rock{ dir = 8 @@ -15693,11 +16065,9 @@ /turf/open/floor/kutjevo/multi_tiles, /area/kutjevo/exterior/runoff_bridge) "vzy" = ( -/obj/structure/tunnel{ - id = "hole4" - }, -/turf/open/auto_turf/sand/layer0, -/area/kutjevo/exterior/scrubland) +/obj/structure/tunnel, +/turf/open/gm/dirtgrassborder2, +/area/kutjevo/exterior/complex_border/med_park) "vzC" = ( /obj/structure/platform/kutjevo{ dir = 1 @@ -16320,6 +16690,16 @@ }, /turf/open/floor/kutjevo/multi_tiles, /area/kutjevo/exterior/Northwest_Colony) +"wrO" = ( +/turf/open/gm/river/desert/shallow_edge{ + dir = 1 + }, +/area/kutjevo/exterior/spring) +"wrV" = ( +/turf/open/desert/desert_shore/desert_shore1{ + dir = 4 + }, +/area/kutjevo/exterior/spring) "wsf" = ( /obj/structure/platform_decoration/kutjevo/rock{ dir = 8 @@ -16347,6 +16727,13 @@ dir = 1 }, /area/kutjevo/interior/foremans_office) +"wtk" = ( +/obj/structure/barricade/wooden{ + dir = 4; + pixel_y = 4 + }, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/exterior/spring) "wtu" = ( /obj/structure/platform_decoration/kutjevo{ dir = 4 @@ -16657,13 +17044,6 @@ /obj/structure/blocker/invisible_wall, /turf/open/floor/kutjevo/colors/red/tile, /area/kutjevo/interior/oob/dev_room) -"wSN" = ( -/obj/structure/blocker/invisible_wall, -/obj/effect/landmark/corpsespawner/clown, -/turf/open/desert/desert_shore/desert_shore1{ - dir = 1 - }, -/area/kutjevo/interior/oob/dev_room) "wSU" = ( /obj/structure/machinery/light{ dir = 4 @@ -17025,6 +17405,11 @@ dir = 8 }, /area/kutjevo/interior/complex/med/operating) +"xuN" = ( +/turf/open/desert/desert_shore/shore_edge1{ + dir = 4 + }, +/area/kutjevo/exterior/spring) "xuY" = ( /obj/structure/barricade/wooden, /turf/open/floor/kutjevo/multi_tiles{ @@ -17045,6 +17430,9 @@ /obj/structure/window/framed/kutjevo/reinforced, /turf/open/floor/plating/kutjevo, /area/kutjevo/interior/complex/med/pano) +"xxf" = ( +/turf/open/gm/river/desert/shallow_corner, +/area/kutjevo/exterior/spring) "xxz" = ( /obj/structure/prop/dam/gravestone{ icon_state = "gravestone3" @@ -17224,6 +17612,12 @@ /obj/structure/barricade/wooden, /turf/open/floor/kutjevo/colors/red/tile, /area/kutjevo/interior/complex/botany) +"xPU" = ( +/obj/effect/landmark/nightmare{ + insert_tag = "communications" + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/construction) "xQz" = ( /turf/open/floor/kutjevo/colors/cyan/inner_corner{ dir = 1 @@ -17492,6 +17886,15 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/kutjevo/tan/alt_inner_edge, /area/kutjevo/interior/complex/Northwest_Flight_Control) +"yic" = ( +/obj/structure/flora/bush/desert{ + icon_state = "tree_2"; + pixel_y = 14 + }, +/turf/open/desert/desert_shore/desert_shore1{ + dir = 4 + }, +/area/kutjevo/exterior/spring) "yir" = ( /turf/open/floor/kutjevo/colors/orange, /area/kutjevo/interior/complex/botany/east) @@ -19702,10 +20105,10 @@ wGH cWV exI nbV -nbV umo nbV nbV +nbV lAI lAI lAI @@ -19888,7 +20291,7 @@ lAI lAI nbV nbV -jZJ +lAI nbV usd cWV @@ -20023,7 +20426,7 @@ rkt jBJ fOU ibm -wSN +rYs fAF fQB uam @@ -20546,7 +20949,7 @@ lAI lAI lAI lAI -lAI +gnj lAI lAI lAI @@ -20774,10 +21177,10 @@ sVF xBm wvX hzN -hzN wqk hzN hzN +hzN ppX ppX ppX @@ -20960,7 +21363,7 @@ ppX ppX hzN hzN -kvd +ppX hzN lNl xBm @@ -21372,10 +21775,10 @@ wGH cWV uhO bbc -nbV umo nbV nbV +nbV lAI lAI lAI @@ -21618,7 +22021,7 @@ ppX ppX ppX ppX -ppX +lkY ppX ppX ppX @@ -22444,10 +22847,10 @@ oJE xBm saK hzN -hzN wqk hzN hzN +hzN ppX ppX ppX @@ -25570,7 +25973,7 @@ uGd fkP vin pBV -hQj +lBu uBz cvm hQj @@ -25737,7 +26140,7 @@ eyU dyU pyp pyp -hQj +sNp pyp xjY xjY @@ -27676,7 +28079,7 @@ sYd bXl bXl bXl -vzy +bXl sYd bXl sYd @@ -31172,7 +31575,7 @@ bEp bEp bEp bEp -tKY +niP dic dic dic @@ -33237,7 +33640,7 @@ xJg xJg xJg xJg -qLV +xJg jfQ jfQ xJg @@ -34521,7 +34924,7 @@ jhS jhS jhS wff -niP +wff wff wff jhS @@ -35149,7 +35552,7 @@ dxF mxB mxB mxB -quy +vzy tUm wYp bGV @@ -35820,7 +36223,7 @@ dxF dxF dxF dxF -tRD +dxF dxF dxF dxF @@ -37395,7 +37798,7 @@ nKh nKh nKh wtH -sbX +pVH mtS fPH dTM @@ -39701,7 +40104,7 @@ xWK bKH xWK xWK -xWK +xPU xWK jhx bKH @@ -40565,7 +40968,7 @@ hws qwg vcY jhS -htT +dtV dkE tfx dkE @@ -42338,7 +42741,7 @@ bkR wTt bkR bEH -lZT +bEH hUk hUk hUk @@ -42685,7 +43088,7 @@ hUk hUk hUk hUk -xWK +lZT nlA xWK xWK @@ -43251,11 +43654,11 @@ bpj bpj bpj bpj -dxF -dxF -dxF -dxF -dxF +bpj +bpj +uzJ +skx +hRG dxF dxF dxF @@ -43418,12 +43821,12 @@ bpj bpj bpj bpj -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +skx +skx +skx +skx dxF dxF dxF @@ -43585,14 +43988,14 @@ bpj bpj oXH bpj -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +skx +skx +skx +skx +iNI +iNI dxF dxF dxF @@ -43753,14 +44156,14 @@ npL bpj bpj bpj -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +skx +skx +skx +uzJ +skx +skx +iNI dxF dxF dxF @@ -43920,16 +44323,16 @@ npL bpj bpj bpj +bpj dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +skx +skx +skx +skx +skx +skx +iNI dxF dxF dxF @@ -44091,13 +44494,13 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +hRG +skx +mvX +uzJ +skx +skx +hRG dxF dxF dxF @@ -44259,14 +44662,14 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +skx +skx +skx +skx +skx +skx +iNI dxF dxF dxF @@ -44426,15 +44829,15 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +iNI +skx +skx +skx +skx +skx +skx +skx +skx dxF dxF dxF @@ -44594,15 +44997,15 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +iNI +skx +skx +uzJ +skx +skx +skx +skx +iNI dxF dxF dxF @@ -44762,14 +45165,14 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +skx +skx +skx +skx +uzJ +uzJ +skx dxF dxF dxF @@ -44931,13 +45334,13 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +iNI +skx +skx +skx +mvX +skx +iNI dxF dxF dxF @@ -45100,12 +45503,12 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF +rDe +skx +skx +skx +skx +iNI dxF dxF dxF @@ -45268,12 +45671,12 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF +iNI +skx +uzJ +skx +skx +iNI dxF dxF dxF @@ -45435,12 +45838,12 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF +iNI +skx +uzJ +uzJ +skx +skx dxF dxF dxF @@ -45603,15 +46006,15 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +mAD +fYr +riT +fYr +skx +skx +skx +pfK dxF dxF dxF @@ -45771,16 +46174,16 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +eIq +skx +gHV +skx +uzJ +kIQ +skx +skx +skx dxF dxF dxF @@ -45938,17 +46341,17 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +giY +skx +skx +skx +mvX +skx +skx +skx +skx +kQa +vhC dxF dxF dxF @@ -46104,19 +46507,19 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +uzJ +skx +skx +iNI +iNI +fdH +iNI +soL +uzJ +cKY +mvX +hRG dxF dxF dxF @@ -46270,21 +46673,21 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +hRG +skx +skx +skx +iNI +dcC +kQD +kQD +kQD +aXU +nZC +gHV +eCE +skx +fne dxF dxF dxF @@ -46409,7 +46812,7 @@ wXd wXd wXd wXd -mMH +aKg bpj npL bpj @@ -46437,21 +46840,21 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +uzJ +skx +iNI +dcC +qaU +axi +dnd +hET +vdK +wtk +riT +rUE +gBu +rUE dxF dxF dxF @@ -46604,21 +47007,21 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +fMB +mvX +iNI +dcC +qaU +nPX +dOj +eVR +kEh +jac +gFA +iNI +skx +nPq +qFh dxF dxF dxF @@ -46770,23 +47173,23 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +kgx +dGi +uzJ +iNI +gsn +nPX +dOj +eVR +eVR +mct +hET +ewl +iNI +skx +oQb +kgx +dUc dxF dxF dxF @@ -46937,23 +47340,23 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +kgx +dGi +skx +iNI +uaz +wrO +eVR +eVR +eVR +eVR +kEh +gok +iNI +giY +oQb +kgx +kgx dxF dxF dxF @@ -47104,23 +47507,23 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +irb +tbx +skx +iNI +uaz +wrO +eVR +eVR +eVR +eVR +kEh +ewl +iNI +skx +oQb +kgx +kgx dxF dxF dxF @@ -47271,23 +47674,23 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +skx +skx +iNI +uaz +dBt +xxf +eVR +eVR +gJx +pmD +ewl +iNI +skx +obv +dUc +kgx dxF dxF dxF @@ -47438,22 +47841,22 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +vhC +uzJ +skx +iNI +xuN +ebv +mNv +myk +myk +lEf +ueM +sGS +iNI +kIQ +skx +obv dxF dxF dxF @@ -47606,21 +48009,21 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +skx +skx +iNI +xuN +wrV +wrV +yic +wrV +sGS +iNI +skx +skx +skx +skx dxF dxF dxF @@ -47773,21 +48176,21 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +skx +skx +mvX +iNI +iNI +iNI +iNI +iNI +iNI +skx +uzJ +skx +skx +uzJ dxF dxF dxF @@ -47926,24 +48329,8 @@ npL bpj bpj bpj -mMH -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +gBl dxF dxF dxF @@ -47954,6 +48341,22 @@ dxF dxF dxF dxF +iNI +iNI +jnD +skx +skx +uzJ +skx +kIQ +skx +skx +skx +skx +skx +mvX +skx +hRG dxF dxF dxF @@ -48093,6 +48496,8 @@ tCm bpj bpj bpj +bpj +bpj dxF dxF dxF @@ -48102,24 +48507,22 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +rDe +iNI +uzJ +skx +riT +skx +giY +skx +skx +skx +nPq +qFh +qFh +fMB +uzJ +vhC dxF dxF dxF @@ -48259,26 +48662,10 @@ mMH bpj bpj bpj -mMH -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +bpj +bpj dxF dxF dxF @@ -48286,6 +48673,22 @@ dxF dxF dxF dxF +iNI +skx +skx +skx +skx +jnD +skx +skx +skx +skx +uzJ +oQb +dUc +kgx +dGi +skx dxF dxF dxF @@ -48332,7 +48735,7 @@ bkR bkR bkR wTt -wTt +bsq hUk hUk hUk @@ -48426,31 +48829,31 @@ wXd npL bpj bpj +bpj +bpj +bpj +bpj +mMH mMH dxF dxF dxF dxF +iNI +skx +mvX +skx +skx +iNI +iNI dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +oQb +kgx +hZx dxF dxF dxF @@ -48593,21 +48996,21 @@ wXd bpj npL bpj -qOP -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +oXH +bpj +bpj +bpj +bpj +bpj +mMH dxF dxF +skx +skx +uzJ +skx +iNI +iNI dxF dxF dxF @@ -48762,18 +49165,18 @@ bpj bpj mMH dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +mMH +bpj +npL +bpj +bpj +mMH +bpj +bpj +skx +skx +skx +iNI dxF dxF dxF @@ -48930,16 +49333,16 @@ bpj dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +bpj +oXH +bpj +bpj +bpj +uzJ +skx +iNI dxF dxF dxF @@ -49098,14 +49501,14 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +bpj +bpj +bpj +bpj +skx +skx dxF dxF dxF @@ -49265,12 +49668,12 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF +mMH +bpj +bpj +npL +bpj +mMH dxF dxF dxF @@ -49434,10 +49837,10 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF +mMH +bpj +bpj +mMH dxF dxF dxF @@ -49601,11 +50004,11 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF +mMH +bpj +bpj +bpj +mMH dxF dxF dxF @@ -49706,7 +50109,7 @@ kZz feg feg feg -bsq +uiK mnT mnT mnT @@ -49768,11 +50171,11 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF +uNW +bpj +bpj +bpj +mMH dxF dxF dxF @@ -49936,10 +50339,10 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF +adG +eaT +rwC +eaT dxF dxF dxF @@ -50103,10 +50506,10 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF +mMH +oXH +bpj +bpj dxF dxF dxF @@ -50270,10 +50673,10 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF +mMH +bpj +bpj +bpj dxF dxF dxF @@ -50436,11 +50839,11 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF +mMH +bpj +bpj +bpj +mMH dxF dxF dxF @@ -50602,12 +51005,12 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +bpj +npL +bpj +mMH dxF dxF dxF @@ -50767,13 +51170,13 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +mMH +bpj +bpj +bpj +bpj +bpj +mMH dxF dxF dxF @@ -50934,13 +51337,13 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +mMH +bpj +npL +bpj +bpj +bpj +mMH dxF dxF dxF @@ -51100,13 +51503,13 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +bpj +bpj +bpj +bpj +npL dxF dxF dxF @@ -51267,12 +51670,12 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +oXH +bpj +bpj +bpj dxF dxF dxF @@ -51433,13 +51836,13 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +mMH +bpj +npL +bpj +bpj +bpj +bpj dxF dxF dxF @@ -51600,12 +52003,12 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF +mMH +bpj +bpj +bpj +bpj +mMH dxF dxF dxF @@ -51765,13 +52168,13 @@ bpj bpj dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +bpj +bpj +npL +bpj +mMH dxF dxF dxF @@ -51931,13 +52334,13 @@ bpj bpj bpj mMH -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +npL +bpj +bpj +bpj +bpj +bpj dxF dxF dxF @@ -52098,13 +52501,13 @@ bpj oXH bpj bpj -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +oXH +bpj +bpj +mMH +mMH dxF dxF dxF @@ -52265,11 +52668,11 @@ bpj bpj bpj bpj -dxF -dxF -dxF -dxF -dxF +bpj +bpj +bpj +npL +mMH dxF dxF dxF @@ -52433,9 +52836,9 @@ bpj bpj bpj mMH -dxF -dxF -dxF +bpj +bpj +bpj dxF dxF dxF @@ -53912,7 +54315,7 @@ ptY ebB ebB bOc -ptY +qLV dxF dxF dxF diff --git a/maps/map_files/Kutjevo/sprinkles/35.communications.dmm b/maps/map_files/Kutjevo/sprinkles/35.communications.dmm new file mode 100644 index 000000000000..d172399ca564 --- /dev/null +++ b/maps/map_files/Kutjevo/sprinkles/35.communications.dmm @@ -0,0 +1,545 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aA" = ( +/obj/structure/girder/displaced, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/auto_turf/sand/layer0, +/area/template_noop) +"cm" = ( +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 8 + }, +/area/template_noop) +"cL" = ( +/obj/item/clothing/suit/storage/hazardvest/yellow, +/turf/open/floor/kutjevo/tan, +/area/template_noop) +"cW" = ( +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"di" = ( +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 1 + }, +/area/template_noop) +"dl" = ( +/obj/structure/girder/displaced, +/obj/item/stack/sheet/metal, +/turf/open/auto_turf/sand/layer0, +/area/template_noop) +"gD" = ( +/obj/item/stack/rods, +/obj/item/tool/warning_cone, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"ix" = ( +/obj/item/tool/warning_cone, +/obj/item/paper/crumpled{ + pixel_x = 5; + pixel_y = -8 + }, +/obj/item/paper/crumpled{ + pixel_x = -4; + pixel_y = 14 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"lD" = ( +/obj/structure/machinery/door_display{ + desc = "A work schedule monitor. It appears to be broken."; + name = "Schedule Monitor" + }, +/turf/closed/wall/kutjevo/colony, +/area/template_noop) +"lZ" = ( +/obj/structure/bed/chair{ + dir = 4; + pixel_x = 4; + pixel_y = 5 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"mv" = ( +/obj/structure/girder, +/turf/open/floor/plating/kutjevo, +/area/template_noop) +"nn" = ( +/obj/structure/machinery/constructable_frame, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"oB" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 8; + layer = 2.8 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"oK" = ( +/obj/structure/machinery/photocopier, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"oU" = ( +/obj/structure/machinery/light, +/obj/structure/machinery/message_server, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"pP" = ( +/obj/structure/largecrate/random{ + pixel_y = 19; + layer = 3.02 + }, +/obj/structure/largecrate/random{ + pixel_x = -3; + pixel_y = 1 + }, +/obj/structure/barricade/handrail/kutjevo{ + layer = 3.1 + }, +/obj/structure/barricade/handrail/kutjevo{ + dir = 4 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"qp" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ + req_one_access = null + }, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 1 + }, +/area/template_noop) +"qM" = ( +/obj/structure/machinery/light, +/obj/effect/decal/cleanable/blood/oil, +/obj/item/tool/warning_cone, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"rm" = ( +/obj/structure/surface/rack, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"ry" = ( +/obj/item/stack/rods, +/obj/structure/fence, +/turf/open/auto_turf/sand/layer1, +/area/template_noop) +"rG" = ( +/obj/item/stack/rods, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"rP" = ( +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"sQ" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 1 + }, +/area/template_noop) +"uS" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp/on{ + pixel_x = 9; + pixel_y = 15; + layer = 3.04 + }, +/obj/item/clipboard{ + pixel_x = -6 + }, +/obj/item/tool/pen/blue/clicky{ + pixel_x = 9 + }, +/obj/item/paper_bin{ + pixel_x = 9; + pixel_y = 3 + }, +/obj/item/paper{ + info = "It has been three weeks since I was relocated to the 'finished' comms office. Me and Paul have been trying to work with this infernal racket going on, but by all that's holy I can't think- let alone recalibrate the new computers. Speaking of, these new computers are all fine and dandy but the sensor uplink tower still hasn't been setup properly after the accident with the apprentice, you know, the one that piled up those debris filled trash bags by Paul's 'desk' and then left. Anyway, like you said the builders didn't lay down the protective matting for the new flooring so there's dirt everywhere. For your sake Jeff, I hope your holiday doesn't end too soon, you still don't even have a desk yet."; + pixel_x = -5; + icon_state = "paper_words"; + name = "I should have gone on holiday" + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"wh" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/auto_turf/sand/layer0, +/area/template_noop) +"wC" = ( +/obj/structure/surface/rack, +/obj/item/notepad/blue, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"wO" = ( +/obj/structure/filingcabinet{ + density = 0; + layer = 3.0; + pixel_x = 8; + pixel_y = 18 + }, +/obj/structure/filingcabinet/chestdrawer{ + density = 0; + pixel_x = -8; + pixel_y = 18 + }, +/obj/structure/prop/rock{ + pixel_x = -8; + pixel_y = -5 + }, +/obj/structure/prop/rock{ + layer = 3.1; + pixel_y = 3 + }, +/obj/structure/prop/rock{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/structure/flora/pottedplant/random/unanchored{ + pixel_y = 16; + layer = 3.3 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"yQ" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/machinery/power/apc/weak{ + dir = 1 + }, +/obj/structure/surface/rack, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"zb" = ( +/turf/open/floor/kutjevo/tan/grey_edge, +/area/template_noop) +"zh" = ( +/obj/structure/surface/table/almayer, +/obj/effect/spawner/random/tool, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"Af" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 4 + }, +/area/template_noop) +"Ca" = ( +/obj/structure/window/framed/kutjevo, +/obj/structure/barricade/handrail/kutjevo{ + layer = 3.1 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"Ci" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 1 + }, +/area/template_noop) +"DY" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ + dir = 1; + req_one_access = null + }, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 4 + }, +/area/template_noop) +"EK" = ( +/obj/structure/window/framed/kutjevo, +/turf/open/floor/plating/kutjevo, +/area/template_noop) +"GH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/paper/crumpled{ + pixel_x = -4; + pixel_y = 14 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"IR" = ( +/obj/item/paper/crumpled, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"Jg" = ( +/obj/effect/spawner/random/toolbox, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 4 + }, +/area/template_noop) +"Jz" = ( +/obj/item/stack/sheet/metal, +/obj/item/stack/rods, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 4 + }, +/area/template_noop) +"Ks" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"KC" = ( +/obj/structure/bed/chair/comfy{ + dir = 1; + pixel_y = 11 + }, +/obj/item/paper/crumpled{ + pixel_x = -12; + pixel_y = 14 + }, +/obj/item/paper/crumpled{ + pixel_x = -5; + pixel_y = -2 + }, +/obj/item/paper/crumpled{ + pixel_x = 5; + pixel_y = -8 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"KD" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ + dir = 1; + req_one_access = null + }, +/turf/open/floor/plating/kutjevo, +/area/template_noop) +"LG" = ( +/obj/structure/fence, +/turf/open/auto_turf/sand/layer0, +/area/template_noop) +"LO" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/item/prop/alien/hugger, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"LR" = ( +/obj/structure/prop/almayer/computers/sensor_computer2, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"MV" = ( +/obj/structure/largecrate/random{ + pixel_y = 1 + }, +/obj/structure/largecrate/random{ + pixel_y = 19; + layer = 3.02; + pixel_x = -3 + }, +/obj/structure/barricade/handrail/kutjevo{ + layer = 3.1 + }, +/obj/structure/barricade/handrail/kutjevo{ + dir = 4 + }, +/obj/structure/barricade/handrail/kutjevo{ + dir = 8 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"Nr" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"Or" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"Pp" = ( +/obj/structure/prop/almayer/computers/sensor_computer1, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"Re" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/tool/warning_cone, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"Rj" = ( +/obj/item/stack/rods, +/obj/effect/decal/cleanable/blood/oil, +/obj/item/tool/warning_cone, +/turf/open/auto_turf/sand/layer0, +/area/template_noop) +"RK" = ( +/turf/closed/wall/kutjevo/colony, +/area/template_noop) +"SZ" = ( +/turf/closed/wall/kutjevo/colony/reinforced, +/area/template_noop) +"Ul" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ + req_one_access = null + }, +/turf/open/floor/kutjevo/tan/grey_edge, +/area/template_noop) +"Um" = ( +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 4 + }, +/area/template_noop) +"Vc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/tool/warning_cone, +/turf/open/auto_turf/sand/layer0, +/area/template_noop) +"Xi" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/tan/grey_edge, +/area/template_noop) +"Xq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 8 + }, +/area/template_noop) +"XS" = ( +/obj/structure/fence{ + desc = "A large metal mesh strewn between two poles. A 'Keep Out! Under Construction' sign dangles from one of the fence posts." + }, +/turf/open/auto_turf/sand/layer1, +/area/template_noop) +"Yo" = ( +/obj/item/clothing/head/hardhat/orange, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 1 + }, +/area/template_noop) +"YG" = ( +/obj/structure/machinery/power/port_gen/pacman, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"YO" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ + dir = 1; + req_one_access = null + }, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 8 + }, +/area/template_noop) +"Zf" = ( +/obj/structure/window/framed/kutjevo, +/obj/structure/barricade/handrail/kutjevo{ + layer = 3 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) + +(1,1,1) = {" +SZ +RK +RK +RK +qp +Ul +RK +RK +RK +RK +RK +RK +"} +(2,1,1) = {" +RK +pP +cW +cW +Ci +zb +Ca +Pp +oK +nn +oU +RK +"} +(3,1,1) = {" +KD +Nr +Ks +cW +di +Xi +Zf +uS +KC +IR +Or +RK +"} +(4,1,1) = {" +SZ +MV +Or +rP +Yo +zb +lD +LR +ix +GH +Re +EK +"} +(5,1,1) = {" +EK +wC +rG +LO +sQ +cL +cm +Xq +Xq +cm +cm +YO +"} +(6,1,1) = {" +EK +rm +lZ +nn +Or +Af +Um +Jg +Um +Jz +wh +DY +"} +(7,1,1) = {" +SZ +yQ +oB +wO +gD +zh +Rj +dl +YG +Vc +qM +RK +"} +(8,1,1) = {" +SZ +mv +RK +RK +aA +RK +LG +LG +mv +ry +XS +mv +"} diff --git a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm index 01df2b7e136e..7364b1609c3e 100644 --- a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm +++ b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm @@ -25,6 +25,15 @@ /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison, /area/lv522/outdoors/n_rockies) +"abe" = ( +/obj/structure/closet/crate, +/obj/effect/decal/cleanable/dirt, +/obj/item/tank/emergency_oxygen/double, +/obj/item/tank/emergency_oxygen/double, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "abo" = ( /turf/closed/wall/strata_outpost, /area/lv522/oob) @@ -41,6 +50,18 @@ icon_state = "cement1" }, /area/lv522/outdoors/colony_streets/north_east_street) +"abL" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 9 + }, +/turf/open/gm/river, +/area/lv522/atmos/sewer) "abS" = ( /obj/effect/acid_hole, /turf/closed/wall/strata_ice/dirty, @@ -76,14 +97,33 @@ icon_state = "white_cyan2" }, /area/lv522/indoors/a_block/executive) -"acp" = ( -/turf/open/floor/corsat{ - icon_state = "marked" +"acn" = ( +/obj/structure/largecrate/random/secure, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/lv522/atmos/way_in_command_centre) +"acp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison, /area/lv522/landing_zone_2/ceiling) "acq" = ( -/turf/open/asphalt/cement, -/area/lv522/outdoors/nw_rockies) +/obj/structure/largecrate/random{ + layer = 2.9 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor) +"acD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) "acE" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, @@ -107,6 +147,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) +"adl" = ( +/obj/item/storage/box/MRE{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/MRE{ + pixel_x = -1; + pixel_y = -6 + }, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) "adG" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/reagent_container/food/condiment/saltshaker, @@ -131,13 +182,23 @@ }, /turf/open/gm/river, /area/lv522/oob) +"aea" = ( +/obj/structure/largecrate/random, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/outdoors/n_rockies) "aee" = ( /obj/effect/decal/cleanable/dirt, /turf/closed/wall/strata_outpost, /area/lv522/indoors/b_block/bridge) -"aep" = ( -/turf/closed/wall/shiva/prefabricated, -/area/lv522/landing_zone_2/ceiling) +"aem" = ( +/obj/structure/barricade/plasteel/metal, +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/lv522/outdoors/colony_streets/north_street) "aeD" = ( /obj/structure/largecrate/random, /obj/effect/decal/cleanable/dirt, @@ -152,13 +213,14 @@ }, /area/lv522/indoors/c_block/mining) "afn" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -10; - pixel_y = 5 +/obj/item/reagent_container/spray/cleaner/drone{ + pixel_x = -3; + pixel_y = 6 }, -/obj/structure/prop/ice_colony/ground_wire, -/turf/open/auto_turf/shale/layer1, -/area/lv522/outdoors/colony_streets/central_streets) +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor) "afp" = ( /obj/structure/platform, /turf/open/gm/river, @@ -170,14 +232,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/b_block/bridge) -"afs" = ( -/obj/structure/machinery/power/apc/weak{ - dir = 1 - }, -/turf/open/floor/corsat{ - icon_state = "plate" - }, -/area/lv522/atmos/filt) "aft" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -193,16 +247,6 @@ icon_state = "squares" }, /area/lv522/atmos/north_command_centre) -"afB" = ( -/obj/structure/barricade/handrail{ - dir = 1 - }, -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/corsat{ - dir = 1; - icon_state = "brown" - }, -/area/lv522/atmos/east_reactor) "afI" = ( /obj/item/reagent_container/food/drinks/cans/beer{ pixel_x = -21; @@ -215,6 +259,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"afL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_x = -1; + pixel_y = 2 + }, +/turf/closed/wall/mineral/bone_resin, +/area/lv522/oob) "afX" = ( /obj/effect/decal/cleanable/dirt, /turf/open/asphalt/cement{ @@ -226,7 +278,7 @@ icon_state = "E"; pixel_x = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "agM" = ( /obj/effect/decal/cleanable/generic, @@ -234,17 +286,25 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/bridge) -"ahH" = ( -/obj/structure/machinery/door/poddoor/almayer{ - id = "E_B_Door"; - name = "\improper Emergency Blast Door"; - unacidable = 1 +"ahs" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "plate" }, -/obj/structure/blocker/invisible_wall, +/area/lv522/atmos/reactor_garage) +"ahH" = ( /turf/open/floor/corsat{ - icon_state = "marked" + dir = 9; + icon_state = "brown" }, /area/lv522/atmos/east_reactor/east) +"ahJ" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/cargo_intake) "ahP" = ( /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/north_street) @@ -275,7 +335,7 @@ dir = 10; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "aio" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -295,6 +355,10 @@ /obj/structure/barricade/handrail/wire, /turf/open/floor/wood, /area/lv522/indoors/a_block/fitness/glass) +"aiO" = ( +/obj/structure/window_frame/corsat, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) "aiP" = ( /obj/structure/machinery/camera/autoname/lz_camera, /turf/open/floor/plating, @@ -302,9 +366,6 @@ "aiQ" = ( /turf/closed/wall/strata_outpost, /area/lv522/outdoors/colony_streets/central_streets) -"ajm" = ( -/turf/open/floor/plating/plating_catwalk/prison, -/area/lv522/outdoors/nw_rockies) "ajw" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 @@ -323,6 +384,13 @@ }, /turf/closed/wall/strata_outpost, /area/lv522/oob) +"ajY" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "akh" = ( /obj/structure/foamed_metal, /obj/structure/pipes/standard/simple/hidden/green, @@ -340,13 +408,35 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/oob) +"akn" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) +"akp" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/prison, +/area/lv522/atmos/outdoor) "akM" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/oob) +"akP" = ( +/obj/structure/girder, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "akV" = ( /obj/structure/prop/invuln/ice_prefab, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_west_street) +"alx" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/asphalt/cement, +/area/lv522/outdoors/n_rockies) "alI" = ( /turf/closed/wall/strata_outpost/reinforced/hull, /area/lv522/oob) @@ -355,10 +445,26 @@ icon_state = "floor_plate" }, /area/lv522/oob) +"ama" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "amc" = ( /obj/structure/cargo_container/kelland/left, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) +"ame" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor) "amC" = ( /obj/structure/bed/roller, /obj/effect/landmark/objective_landmark/medium, @@ -380,13 +486,6 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms/glass) -"amS" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/prop/ice_colony/ground_wire{ - dir = 8 - }, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/colony_streets/central_streets) "amY" = ( /obj/structure/cargo_container/horizontal/blue/top, /obj/structure/flora/pottedplant{ @@ -406,6 +505,11 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor/east) +"anb" = ( +/turf/open/floor/prison{ + icon_state = "cell_stripe" + }, +/area/lv522/atmos/way_in_command_centre) "ann" = ( /obj/structure/barricade/wooden{ dir = 4 @@ -419,9 +523,6 @@ icon_state = "kitchen" }, /area/lv522/indoors/a_block/kitchen) -"ant" = ( -/turf/open/floor/plating/plating_catwalk/prison, -/area/lv522/outdoors/n_rockies) "anv" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/drinks/cans/souto/cranberry{ @@ -470,6 +571,19 @@ icon_state = "marked" }, /area/lv522/indoors/c_block/mining) +"aoi" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 1 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_east_street) +"aox" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "aoH" = ( /obj/structure/machinery/light, /obj/structure/machinery/disposal, @@ -485,6 +599,12 @@ icon_state = "cyan2" }, /area/lv522/indoors/a_block/medical) +"apd" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/sewer) "ape" = ( /obj/structure/bed/chair{ dir = 4 @@ -492,12 +612,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/a_block/security) -"api" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" - }, -/area/lv522/outdoors/n_rockies) "apt" = ( /obj/structure/pipes/vents/pump, /obj/effect/decal/cleanable/dirt, @@ -506,12 +620,27 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/bridge) +"apC" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/c_block/mining) "apS" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/south_east_street) +"aqo" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/east_reactor/south) "aqH" = ( /obj/structure/prop/vehicles/crawler{ icon_state = "crawler_crate_alt2"; @@ -519,12 +648,6 @@ }, /turf/open/floor/plating, /area/lv522/indoors/c_block/garage) -"aqI" = ( -/obj/structure/cargo_container/grant/left, -/turf/open/floor/corsat{ - icon_state = "plate" - }, -/area/lv522/atmos/north_command_centre) "aqT" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/corsat{ @@ -553,12 +676,20 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/bridges/op_centre) +"arN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/rack, +/obj/item/clothing/head/welding, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "arP" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = -9; pixel_y = 25 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "arV" = ( /obj/structure/surface/table/almayer, @@ -581,6 +712,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/a_block/kitchen) +"asH" = ( +/obj/structure/machinery/vending/coffee, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "asI" = ( /obj/structure/prop/invuln/overhead_pipe{ dir = 4; @@ -613,6 +750,14 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/hallway) +"atz" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "atL" = ( /obj/structure/closet/crate, /obj/structure/machinery/light/double{ @@ -625,6 +770,19 @@ icon_state = "floor_plate" }, /area/lv522/indoors/lone_buildings/storage_blocks) +"atO" = ( +/obj/structure/prop/vehicles/crawler{ + dir = 8; + layer = 3.1; + pixel_x = 5; + pixel_y = 7 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "atV" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/warning_stripes{ @@ -634,6 +792,18 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/n_rockies) +"aue" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 8; + pixel_x = -6; + pixel_y = 6 + }, +/obj/structure/platform_decoration{ + dir = 4 + }, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "aut" = ( /turf/open/floor/corsat{ dir = 5; @@ -664,12 +834,12 @@ /obj/item/stack/rods, /turf/open/floor/prison, /area/lv522/indoors/a_block/kitchen/glass) -"awm" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" +"awI" = ( +/obj/item/explosive/plastic/breaching_charge{ + unacidable = 1 }, -/turf/open/floor/plating, -/area/lv522/landing_zone_1/tunnel) +/turf/open/floor/prison, +/area/lv522/atmos/way_in_command_centre) "awK" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -699,6 +869,20 @@ /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/bridges/op_centre) +"axN" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/prison, +/area/lv522/outdoors/colony_streets/windbreaker/observation) +"axS" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "ayn" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -707,6 +891,12 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/hallway) +"ayX" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "aza" = ( /obj/structure/platform{ dir = 1 @@ -724,15 +914,19 @@ /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor) -"azJ" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/head/helmet/marine/grenadier{ - armor_bullet = 10; - desc = "Pairs with the M3-G4 heavy grenadier plating. A distant cousin of the experimental B18 defensive helmet. Decorated with a blue stripe the large hole in the side of this helmet somewhat limits its protection."; - name = "\improper damaged M3-G4 grenadier helmet" - }, +"azE" = ( +/obj/structure/bed/chair, /turf/open/floor/prison, -/area/lv522/indoors/a_block/admin) +/area/lv522/outdoors/colony_streets/windbreaker/observation) +"azF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/shiva{ + icon_state = "radiator_tile2" + }, +/area/lv522/indoors/a_block/corpo/glass) "azK" = ( /obj/item/prop/colony/used_flare, /turf/open/floor/prison, @@ -751,7 +945,7 @@ /obj/structure/cargo_container/wy/mid{ health = 5000 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "aAW" = ( /obj/effect/spawner/gibspawner/xeno, @@ -787,6 +981,12 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor) +"aCR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/cargo_intake) "aCS" = ( /obj/structure/surface/rack, /obj/item/clothing/suit/storage/hazardvest, @@ -828,6 +1028,12 @@ }, /turf/open/floor/plating, /area/lv522/outdoors/colony_streets/north_east_street) +"aDE" = ( +/obj/docking_port/stationary/marine_dropship/lz2{ + name = "LZ2: Southeast Landing Zone" + }, +/turf/open/floor/plating, +/area/shuttle/drop2/lv522) "aDS" = ( /turf/open/floor/corsat{ dir = 5; @@ -852,14 +1058,11 @@ /turf/open/floor/plating, /area/lv522/indoors/c_block/mining) "aEL" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - dir = 1; - icon_state = "brown" + icon_state = "plate" }, -/area/lv522/atmos/north_command_centre) +/area/lv522/atmos/east_reactor) "aEM" = ( /obj/structure/machinery/atm{ name = "Weyland-Yutani Automatic Teller Machine"; @@ -926,8 +1129,7 @@ dir = 1 }, /turf/open/floor/corsat{ - dir = 1; - icon_state = "brown" + icon_state = "plate" }, /area/lv522/atmos/north_command_centre) "aGy" = ( @@ -949,14 +1151,12 @@ /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/east_central_street) "aGI" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, +/obj/structure/largecrate/random/case/double, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - dir = 1; - icon_state = "browncorner" + icon_state = "plate" }, -/area/lv522/atmos/north_command_centre) +/area/lv522/atmos/east_reactor) "aGQ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/drip, @@ -998,8 +1198,8 @@ /obj/structure/closet/crate/weapon, /obj/item/weapon/gun/rifle/l42a, /obj/item/weapon/gun/rifle/l42a, -/obj/item/ammo_magazine/rifle/l42a, -/obj/item/ammo_magazine/rifle/l42a, +/obj/item/weapon/gun/rifle/l42a, +/obj/item/weapon/gun/rifle/l42a, /turf/open/floor/prison, /area/lv522/indoors/a_block/security) "aIp" = ( @@ -1019,6 +1219,14 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"aIM" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/reactor_garage) "aIY" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice3"; @@ -1030,32 +1238,43 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/hallway) -"aJh" = ( -/obj/structure/barricade/handrail{ - dir = 8 +"aJg" = ( +/obj/structure/fence{ + layer = 2.9 }, -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/corsat{ - dir = 8; - icon_state = "brown" +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/area/lv522/atmos/east_reactor) +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/lv522/outdoors/colony_streets/north_east_street) +"aJr" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "w-y2" + }, +/area/lv522/oob/w_y_vault) "aJS" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/objective_landmark/far, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/strata{ + icon_state = "blue1" }, /area/lv522/outdoors/colony_streets/windbreaker/observation) "aJT" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - dir = 4; - icon_state = "browncorner" + icon_state = "plate" }, -/area/lv522/atmos/north_command_centre) +/area/lv522/atmos/east_reactor) "aKf" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/prison{ @@ -1080,8 +1299,7 @@ dir = 4 }, /turf/open/floor/corsat{ - dir = 1; - icon_state = "brown" + icon_state = "plate" }, /area/lv522/atmos/north_command_centre) "aKO" = ( @@ -1093,6 +1311,20 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) +"aKQ" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "browncorner" + }, +/area/lv522/atmos/cargo_intake) +"aLf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "aLy" = ( /obj/structure/machinery/light{ dir = 4 @@ -1105,15 +1337,16 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/hallway) -"aLJ" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/floor/corsat{ - dir = 5; - icon_state = "brown" +"aLG" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "w-y0" }, -/area/lv522/atmos/north_command_centre) +/area/lv522/oob/w_y_vault) +"aLJ" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor) "aMI" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bed{ @@ -1126,6 +1359,18 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"aNn" = ( +/obj/structure/transmitter/colony_net{ + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Colony Corporate"; + pixel_y = 26 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/lv522/indoors/a_block/corpo) "aNr" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 @@ -1135,7 +1380,7 @@ /area/lv522/indoors/c_block/mining) "aNw" = ( /obj/item/prop/colony/used_flare, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "aNI" = ( /obj/structure/bed/chair{ @@ -1157,7 +1402,7 @@ /obj/item/lightstick/red/spoke/planted{ pixel_x = -14 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "aOP" = ( /obj/effect/spawner/gibspawner/xeno, @@ -1180,7 +1425,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "S" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "aPu" = ( /obj/effect/decal/cleanable/dirt, @@ -1199,16 +1444,6 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/security/glass) -"aPP" = ( -/obj/structure/barricade/handrail{ - dir = 4 - }, -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/corsat{ - dir = 4; - icon_state = "brown" - }, -/area/lv522/atmos/east_reactor) "aPS" = ( /obj/structure/stairs/perspective{ dir = 10; @@ -1227,6 +1462,13 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/medical) +"aQf" = ( +/obj/structure/surface/table/almayer, +/obj/item/map/lv522_map, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "aQs" = ( /obj/structure/machinery/telecomms/bus/preset_one, /turf/open/floor/prison{ @@ -1244,14 +1486,15 @@ }, /area/lv522/landing_zone_1/tunnel) "aQU" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/structure/machinery/computer/cameras{ + dir = 4; + network = null; + pixel_x = -16 }, /turf/open/floor/corsat{ - icon_state = "marked" + icon_state = "plate" }, -/area/lv522/atmos/north_command_centre) +/area/lv522/atmos/east_reactor/north) "aRd" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -1265,12 +1508,19 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/mining) +"aRB" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "aRH" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; pixel_x = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "aRM" = ( /obj/structure/stairs/perspective{ @@ -1331,14 +1581,14 @@ /obj/effect/decal/warning_stripes{ icon_state = "S" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "aTK" = ( /obj/structure/prop/dam/truck/cargo{ layer = 3.1 }, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "plate" }, /area/lv522/atmos/east_reactor/east) "aTP" = ( @@ -1396,8 +1646,18 @@ /obj/structure/platform{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) +"aVg" = ( +/obj/structure/platform/strata, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) +"aVj" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/prison, +/area/lv522/atmos/way_in_command_centre) "aVo" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/computer/PC, @@ -1414,6 +1674,9 @@ "aVt" = ( /obj/item/pamphlet/skill/powerloader, /obj/structure/surface/table/almayer, +/obj/structure/machinery/light{ + dir = 1 + }, /turf/open/floor/corsat{ icon_state = "plate" }, @@ -1450,6 +1713,17 @@ /obj/structure/ore_box, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"aWd" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper C-Block - Radio Tower Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/t_comm) "aWl" = ( /obj/structure/barricade/wooden, /obj/structure/pipes/standard/simple/hidden/green, @@ -1510,6 +1784,13 @@ icon_state = "blue_plate" }, /area/lv522/indoors/c_block/mining) +"aWX" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor) "aXa" = ( /turf/open/floor/corsat{ dir = 6; @@ -1528,6 +1809,12 @@ icon_state = "marked" }, /area/lv522/indoors/c_block/mining) +"aYd" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/prison, +/area/lv522/atmos/way_in_command_centre) "aYg" = ( /obj/effect/decal/cleanable/blood/oil, /obj/structure/surface/rack, @@ -1537,6 +1824,55 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/security) +"aYE" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block - Colony Operations Centre Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/closed{ + id = "East_Lock"; + name = "Emergency Lockdown" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/hallway) +"aYF" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal8"; + pixel_x = -16; + pixel_y = -16 + }, +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal7"; + pixel_x = 16; + pixel_y = -16 + }, +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal6"; + pixel_x = 16; + pixel_y = 16 + }, +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal5"; + pixel_x = -16; + pixel_y = 16 + }, +/obj/structure/holohoop{ + density = 0; + pixel_y = 27 + }, +/obj/item/toy/beach_ball/holoball{ + pixel_x = 8; + pixel_y = 5 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/lv522/indoors/a_block/fitness) "aYO" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -1581,11 +1917,26 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/corpo) +"bag" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "ban" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/blocker/invisible_wall, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"baG" = ( +/turf/open/floor/corsat{ + dir = 1; + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor/south) "baN" = ( /obj/structure/surface/rack, /obj/item/stack/sheet/metal/large_stack, @@ -1659,14 +2010,14 @@ /area/lv522/oob) "bcf" = ( /obj/effect/spawner/gibspawner/xeno, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "bcl" = ( /obj/structure/stairs/perspective{ dir = 6; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "bco" = ( /turf/open/floor/corsat{ @@ -1703,11 +2054,12 @@ }, /area/lv522/outdoors/colony_streets/north_west_street) "bdv" = ( +/obj/structure/largecrate/random/case, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - dir = 4; - icon_state = "browncorner" + icon_state = "plate" }, -/area/lv522/atmos/north_command_centre) +/area/lv522/atmos/east_reactor) "bdH" = ( /obj/structure/bed/chair{ dir = 4 @@ -1726,6 +2078,16 @@ icon_state = "cement4" }, /area/lv522/outdoors/nw_rockies) +"bdY" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/item/weapon/gun/launcher/grenade/m81/m79, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "beb" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -1748,8 +2110,8 @@ /area/lv522/outdoors/colony_streets/south_street) "bel" = ( /obj/structure/machinery/computer/crew/colony, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/strata{ + icon_state = "blue1" }, /area/lv522/outdoors/colony_streets/windbreaker/observation) "ben" = ( @@ -1774,6 +2136,12 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/bridges/corpo) +"bet" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/west_reactor) "bex" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/prison, @@ -1795,9 +2163,7 @@ }, /area/lv522/atmos/east_reactor/north) "bgc" = ( -/turf/open/floor/corsat{ - icon_state = "browncorner" - }, +/turf/open/floor/plating, /area/lv522/atmos/cargo_intake) "bgg" = ( /turf/open/floor/corsat{ @@ -1830,14 +2196,15 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/garage) -"bgS" = ( -/turf/open/auto_turf/shale/layer0, -/area/lv522/landing_zone_2/ceiling) "bgV" = ( /turf/open/asphalt/cement{ icon_state = "cement2" }, /area/lv522/outdoors/n_rockies) +"bha" = ( +/obj/item/stack/rods, +/turf/open/floor/prison, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "bhd" = ( /turf/open/floor/corsat{ dir = 5; @@ -1874,12 +2241,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) -"bhy" = ( -/obj/docking_port/stationary/marine_dropship/lz1{ - name = "Southwest Landing Zone" - }, -/turf/open/floor/plating, -/area/shuttle/drop1/lv522) "bhD" = ( /obj/structure/platform_decoration{ dir = 1 @@ -1921,6 +2282,24 @@ icon_state = "darkpurple2" }, /area/lv522/indoors/a_block/dorms) +"biZ" = ( +/obj/structure/barricade/sandbags{ + dir = 8 + }, +/obj/item/trash/uscm_mre, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) +"bjd" = ( +/turf/closed/wall/strata_outpost/reinforced, +/area/lv522/atmos/sewer) +"bjC" = ( +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/lv522/oob/w_y_vault) "bjF" = ( /obj/effect/decal/cleanable/blood/xeno, /obj/effect/decal/cleanable/liquid_fuel, @@ -1939,7 +2318,7 @@ icon_state = "SE-out"; pixel_x = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "bka" = ( /obj/item/clothing/shoes/jackboots{ @@ -2039,21 +2418,24 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/security/glass) -"bnd" = ( -/obj/structure/prop/turbine_extras, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/landing_zone_2/ceiling) "bnf" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/prison{ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/garage) +"bny" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transmitter/colony_net{ + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Reactor Garage"; + pixel_y = 26 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "bnz" = ( /obj/structure/surface/table/almayer, /obj/structure/flora/pottedplant{ @@ -2091,7 +2473,7 @@ pixel_y = 1 }, /obj/item/prop/colony/used_flare, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "bow" = ( /obj/structure/machinery/light, @@ -2137,6 +2519,15 @@ /obj/structure/cargo_container/grant/rightmid, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"bry" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/asphalt/cement{ + icon_state = "cement4" + }, +/area/lv522/outdoors/colony_streets/north_west_street) "bsx" = ( /obj/structure/cargo_container/kelland/right, /turf/open/floor/corsat{ @@ -2149,7 +2540,7 @@ pixel_x = 1; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "bsG" = ( /turf/open/floor/plating/plating_catwalk/prison, @@ -2163,8 +2554,8 @@ "btP" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/strata{ + icon_state = "blue1" }, /area/lv522/outdoors/colony_streets/windbreaker/observation) "buD" = ( @@ -2180,6 +2571,16 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/bridges/garden_bridge) +"bvI" = ( +/obj/structure/surface/table/almayer, +/obj/structure/prop/server_equipment/laptop, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/command_centre) "bvK" = ( /obj/structure/machinery/door/airlock/almayer/medical/glass{ dir = 1; @@ -2215,7 +2616,7 @@ pixel_x = -12; pixel_y = -4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "bwy" = ( /obj/structure/prop/ice_colony/dense/planter_box{ @@ -2231,6 +2632,10 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"bwF" = ( +/obj/item/stack/rods, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/south_street) "bwH" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/surface/rack, @@ -2248,7 +2653,7 @@ }, /area/lv522/indoors/c_block/t_comm) "bwU" = ( -/obj/structure/largecrate/random/case/double, +/obj/structure/largecrate/random, /turf/open/floor/corsat{ icon_state = "plate" }, @@ -2286,6 +2691,7 @@ /area/lv522/atmos/east_reactor) "bye" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ icon_state = "brown" }, @@ -2319,6 +2725,14 @@ icon_state = "floor_plate" }, /area/lv522/indoors/lone_buildings/storage_blocks) +"bzv" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + dir = 1; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/reactor_garage) "bzC" = ( /turf/closed/wall/r_wall/biodome/biodome_unmeltable, /area/lv522/atmos/cargo_intake) @@ -2334,13 +2748,11 @@ }, /area/lv522/oob) "bzL" = ( -/obj/structure/machinery/space_heater/radiator/red{ - dir = 4 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" +/obj/structure/machinery/camera/autoname, +/obj/structure/machinery/light/small{ + dir = 1 }, +/turf/open/floor/plating, /area/lv522/indoors/lone_buildings/engineering) "bAc" = ( /obj/structure/filingcabinet/seeds{ @@ -2397,6 +2809,13 @@ }, /turf/open/floor/wood, /area/lv522/indoors/a_block/fitness/glass) +"bBB" = ( +/obj/structure/prop/invuln/ice_prefab/trim{ + dir = 8 + }, +/obj/structure/cargo_container/grant/left, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/w_rockies) "bBF" = ( /obj/item/ammo_box/magazine/misc/mre, /obj/item/prop/colony/usedbandage{ @@ -2420,6 +2839,28 @@ }, /turf/open/gm/river, /area/lv522/indoors/a_block/kitchen/damage) +"bBJ" = ( +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/reactor_garage) +"bBW" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_east_street) +"bCd" = ( +/obj/structure/machinery/light, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor) "bCh" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison{ @@ -2442,6 +2883,16 @@ icon_state = "cement9" }, /area/lv522/outdoors/colony_streets/south_street) +"bCX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "bDk" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -2465,13 +2916,15 @@ /turf/open/floor/prison, /area/lv522/indoors/lone_buildings/storage_blocks) "bDw" = ( -/obj/structure/machinery/computer/cameras{ +/obj/vehicle/powerloader{ dir = 4; - network = null; - pixel_x = -16 + layer = 3.5 + }, +/obj/structure/machinery/light{ + dir = 8 }, /turf/open/floor/corsat{ - icon_state = "plate" + icon_state = "marked" }, /area/lv522/atmos/east_reactor/north) "bDI" = ( @@ -2564,6 +3017,9 @@ /obj/structure/machinery/cm_vending/sorted/tech/comp_storage{ req_access = list(7,23,27) }, +/obj/structure/machinery/light{ + dir = 4 + }, /turf/open/floor/corsat{ icon_state = "plate" }, @@ -2573,6 +3029,22 @@ icon_state = "white_cyan3" }, /area/lv522/indoors/a_block/medical) +"bHk" = ( +/obj/structure/barricade/sandbags, +/obj/effect/decal/cleanable/dirt, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) +"bHA" = ( +/obj/item/storage/backpack/marine/satchel{ + desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; + icon = 'icons/obj/janitor.dmi'; + icon_state = "trashbag3"; + name = "trash bag"; + pixel_x = -4; + pixel_y = 6 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_west_street) "bHF" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 @@ -2591,7 +3063,7 @@ /area/lv522/indoors/c_block/t_comm) "bIe" = ( /obj/item/stack/sheet/metal, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "bIh" = ( /obj/structure/surface/table/almayer, @@ -2636,11 +3108,23 @@ /turf/closed/wall/shiva/prefabricated/reinforced, /area/lv522/atmos/cargo_intake) "bIQ" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - icon_state = "flammable_pipe_3" +/obj/structure/largecrate/random/case/double, +/turf/open/floor/corsat{ + icon_state = "plate" }, -/turf/open/floor/corsat, /area/lv522/atmos/east_reactor) +"bIY" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "brown" + }, +/area/lv522/atmos/west_reactor) +"bJa" = ( +/turf/open/floor/shiva{ + icon_state = "radiator_tile2" + }, +/area/lv522/indoors/a_block/corpo/glass) "bJp" = ( /obj/item/storage/backpack/marine/satchel{ desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; @@ -2661,11 +3145,21 @@ icon_state = "kitchen" }, /area/lv522/indoors/a_block/kitchen) +"bJy" = ( +/obj/structure/surface/table/almayer, +/obj/effect/landmark/objective_landmark/far, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "bJE" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - dir = 9 +/obj/structure/prop/vehicles/crawler{ + icon_state = "crawler_fuel"; + pixel_y = 5 + }, +/turf/open/floor/corsat{ + icon_state = "plate" }, -/turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "bJG" = ( /obj/effect/decal/cleanable/dirt, @@ -2679,6 +3173,18 @@ icon_state = "darkyellowfull2" }, /area/lv522/indoors/c_block/t_comm) +"bJN" = ( +/obj/item/stack/folding_barricade, +/turf/open/floor/prison, +/area/lv522/atmos/way_in_command_centre) +"bJY" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + req_access_txt = "100" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) "bJZ" = ( /obj/structure/barricade/wooden{ dir = 4 @@ -2686,18 +3192,46 @@ /turf/open/floor/prison, /area/lv522/indoors/c_block/cargo) "bKb" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - dir = 8 +/obj/structure/surface/rack, +/obj/item/clothing/head/hardhat/dblue{ + pixel_x = 6; + pixel_y = 11 + }, +/obj/item/clothing/head/hardhat/white, +/turf/open/floor/corsat{ + icon_state = "plate" }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/corsat, /area/lv522/atmos/east_reactor) +"bKj" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/plasteel/small_stack, +/obj/item/ore/uranium, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/lv522/indoors/c_block/mining) "bKk" = ( /turf/open/floor/corsat{ dir = 8; icon_state = "browncorner" }, /area/lv522/atmos/cargo_intake) +"bKn" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Reactor_garage_1" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/reactor_garage) +"bKq" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/w_rockies) "bKO" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -2708,16 +3242,24 @@ }, /area/lv522/outdoors/colony_streets/central_streets) "bLh" = ( -/obj/structure/largecrate/random{ - layer = 2.9 +/obj/structure/surface/table/almayer, +/obj/structure/prop/server_equipment/laptop/on{ + pixel_x = 1; + pixel_y = 6 + }, +/turf/open/floor/corsat{ + icon_state = "plate" }, -/turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "bLk" = ( -/obj/item/reagent_container/spray/cleaner/drone{ - pixel_x = -3; +/obj/structure/surface/table/almayer, +/obj/item/tool/wirecutters{ pixel_y = 6 }, +/obj/item/weapon/wirerod{ + pixel_x = -3; + pixel_y = 3 + }, /turf/open/floor/corsat{ icon_state = "plate" }, @@ -2751,24 +3293,23 @@ }, /area/lv522/indoors/c_block/casino) "bMa" = ( -/obj/structure/largecrate/random/case/double, +/obj/structure/largecrate/random/case, /turf/open/floor/corsat{ - dir = 8; - icon_state = "brown" + icon_state = "plate" }, /area/lv522/atmos/east_reactor) "bMB" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "bMN" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = 12; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "bMX" = ( /turf/closed/shuttle{ @@ -2798,6 +3339,15 @@ icon_state = "wood" }, /area/lv522/indoors/b_block/bar) +"bNy" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Corporate Office Airlock"; + req_access_txt = "100" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/corpo) "bNA" = ( /obj/structure/machinery/light, /turf/open/floor/prison{ @@ -2805,10 +3355,18 @@ }, /area/lv522/indoors/a_block/dorms) "bNE" = ( -/obj/structure/largecrate/random/case, -/turf/open/floor/corsat{ - icon_state = "squares" +/obj/item/tank/oxygen{ + pixel_x = 4; + pixel_y = 19 }, +/obj/item/tool/mop{ + desc = "Unlock the power of Mop-Fu!"; + force = 35; + pixel_x = -12; + pixel_y = 24 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "bNJ" = ( /obj/structure/prop/invuln/lattice_prop{ @@ -2826,9 +3384,19 @@ }, /area/lv522/indoors/a_block/dorms) "bNT" = ( -/obj/structure/largecrate/random, +/obj/effect/landmark/xeno_spawn, /turf/open/floor/corsat{ - icon_state = "squares" + dir = 1; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor) +"bOv" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "marked" }, /area/lv522/atmos/east_reactor) "bOE" = ( @@ -2844,6 +3412,12 @@ icon_state = "floor_plate" }, /area/lv522/indoors/b_block/bar) +"bOX" = ( +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "bPH" = ( /obj/structure/prop/invuln/ice_prefab/trim{ dir = 6 @@ -2851,7 +3425,7 @@ /obj/structure/prop/invuln/ice_prefab/roof_greeble{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_street) "bPJ" = ( /turf/closed/wall/strata_outpost, @@ -2890,18 +3464,30 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/fitness/glass) +"bQq" = ( +/obj/structure/cargo_container/wy/mid{ + layer = 5 + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/w_rockies) +"bQA" = ( +/obj/structure/largecrate/random, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "bQC" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ +/obj/structure/bed/chair{ dir = 1 }, -/turf/open/floor/corsat, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, /area/lv522/atmos/east_reactor) "bQG" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "bQN" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -2917,6 +3503,10 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/bridge) +"bRv" = ( +/obj/item/trash/uscm_mre, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "bRN" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -2968,12 +3558,25 @@ icon_state = "radiator_tile2" }, /area/lv522/indoors/a_block/bridges/op_centre) +"bSM" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" + }, +/area/lv522/atmos/west_reactor) +"bSU" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/asphalt/cement, +/area/lv522/outdoors/n_rockies) "bTo" = ( /obj/structure/stairs/perspective{ dir = 9; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "bTA" = ( /obj/structure/surface/table/gamblingtable, @@ -3021,6 +3624,10 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/mining) +"bUy" = ( +/obj/structure/cargo_container/wy/left, +/turf/open/floor/plating, +/area/lv522/outdoors/colony_streets/north_east_street) "bUJ" = ( /obj/structure/largecrate/random/mini{ pixel_x = -2; @@ -3062,7 +3669,7 @@ layer = 3.1; pixel_y = 24 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "bVA" = ( /obj/structure/bed/chair{ @@ -3085,6 +3692,14 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/oob) +"bVX" = ( +/obj/structure/machinery/door/airlock/almayer/engineering/colony{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/filt) "bWd" = ( /obj/structure/flora/jungle/planttop1, /obj/structure/flora/bush/ausbushes/ppflowers, @@ -3105,6 +3720,10 @@ icon_state = "radiator_tile2" }, /area/lv522/oob) +"bWt" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/auto_turf/shale/layer2, +/area/lv522/outdoors/w_rockies) "bWA" = ( /obj/structure/prop/ice_colony/flamingo{ dir = 4; @@ -3116,6 +3735,15 @@ }, /turf/open/organic/grass, /area/lv522/indoors/a_block/garden) +"bWQ" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/reactor_garage) "bWX" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 @@ -3168,17 +3796,8 @@ /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) -"bXU" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2 - }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/b_block/bar) "bXZ" = ( /obj/structure/platform{ dir = 1 @@ -3217,12 +3836,21 @@ pixel_x = 6; pixel_y = 6 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "bYV" = ( /obj/structure/platform, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/south_street) +"bYZ" = ( +/obj/structure/bookcase{ + density = 0; + icon_state = "book-5"; + pixel_y = 16 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ship, +/area/lv522/atmos/way_in_command_centre) "bZd" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, @@ -3233,6 +3861,10 @@ icon_state = "browncorner" }, /area/lv522/atmos/east_reactor/north) +"bZB" = ( +/obj/structure/girder/displaced, +/turf/open/floor/corsat, +/area/lv522/atmos/outdoor) "bZF" = ( /obj/structure/fence, /obj/effect/decal/warning_stripes{ @@ -3310,6 +3942,21 @@ icon_state = "plate" }, /area/lv522/atmos/east_reactor/north) +"caE" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ship, +/area/lv522/atmos/way_in_command_centre) +"caN" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor/west) "caP" = ( /obj/effect/decal/cleanable/blood/xeno{ icon_state = "xgibleg" @@ -3326,6 +3973,24 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/kitchen/damage) +"caV" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) +"cbn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "whiteyellowfull" + }, +/area/lv522/oob/w_y_vault) "cbp" = ( /obj/structure/machinery/squeezer, /turf/open/floor{ @@ -3363,23 +4028,23 @@ dir = 8; icon_state = "flammable_pipe_3" }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ icon_state = "plate" }, /area/lv522/atmos/east_reactor) "cce" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - dir = 4; - icon_state = "flammable_pipe_3" +/obj/structure/surface/table/almayer, +/obj/item/device/analyzer{ + pixel_x = -9; + pixel_y = 3 }, -/turf/open/floor/corsat, -/area/lv522/atmos/east_reactor) -"ccg" = ( -/obj/structure/barricade/handrail{ - dir = 8 +/obj/item/clipboard{ + pixel_x = 5; + pixel_y = 3 }, /turf/open/floor/corsat{ - dir = 8; + dir = 1; icon_state = "brown" }, /area/lv522/atmos/east_reactor) @@ -3389,10 +4054,11 @@ /turf/open/floor/prison, /area/lv522/indoors/c_block/casino) "ccu" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - icon_state = "flammable_pipe_2" +/obj/structure/largecrate/random/case, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "brown" }, -/turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "ccN" = ( /obj/item/reagent_container/glass/bucket, @@ -3410,19 +4076,19 @@ /turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "cdj" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - dir = 8; - icon_state = "flammable_pipe_3" - }, +/obj/structure/largecrate/random, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "cdP" = ( -/obj/structure/prop/vehicles/crawler{ - icon_state = "crawler_fuel"; - pixel_y = 5 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/turf/open/floor/corsat, -/area/lv522/atmos/east_reactor) +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/north_command_centre) "cem" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -3443,21 +4109,19 @@ /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/east_central_street) "cfd" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/recharger, -/obj/effect/spawner/random/powercell, -/turf/open/floor/prison, +/obj/structure/closet/wardrobe/engineering_yellow, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, /area/lv522/indoors/lone_buildings/engineering) "cfg" = ( -/obj/item/clothing/head/hardhat/white, -/obj/structure/surface/rack, -/obj/item/clothing/head/hardhat/dblue{ - pixel_x = 6; - pixel_y = 11 +/obj/structure/prop/vehicles/crawler{ + dir = 8; + layer = 3.1 }, /turf/open/floor/corsat{ - dir = 8; - icon_state = "brown" + icon_state = "plate" }, /area/lv522/atmos/east_reactor) "cfv" = ( @@ -3470,6 +4134,18 @@ icon_state = "cement4" }, /area/lv522/outdoors/colony_streets/north_east_street) +"cfz" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper B-Block - Hydroponics Airlock" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "LV_522_Hydro-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/b_block/bridge) "cfT" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -3477,8 +4153,14 @@ /obj/effect/decal/warning_stripes{ icon_state = "S" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) +"cgn" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/gm/river, +/area/lv522/atmos/sewer) "cgB" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 @@ -3488,22 +4170,10 @@ icon_state = "greenfull" }, /area/lv522/indoors/a_block/fitness) -"cgG" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/c_block/bridge) "chm" = ( -/obj/structure/surface/table/almayer, -/obj/structure/prop/server_equipment/laptop/on{ - pixel_x = 1; - pixel_y = 6 - }, -/turf/open/floor/corsat{ - icon_state = "squares" - }, -/area/lv522/atmos/east_reactor) +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat, +/area/lv522/atmos/west_reactor) "cho" = ( /obj/item/weapon/gun/rifle/mar40/carbine, /turf/open/floor/plating{ @@ -3517,24 +4187,53 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/c_block/casino) +"chT" = ( +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "cia" = ( /turf/open/floor/strata{ icon_state = "white_cyan1" }, /area/lv522/indoors/lone_buildings/chunk) "cil" = ( -/obj/structure/surface/table/almayer, -/obj/item/weapon/wirerod{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/tool/wirecutters{ - pixel_y = 6 - }, +/obj/effect/landmark/queen_spawn, /turf/open/floor/corsat{ icon_state = "squares" }, /area/lv522/atmos/east_reactor) +"cim" = ( +/obj/structure/pipes/vents/pump, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 2 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) +"ciw" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" + }, +/turf/open/asphalt/cement, +/area/lv522/outdoors/n_rockies) "ciA" = ( /obj/structure/cargo_container/kelland/right, /turf/open/asphalt/cement{ @@ -3553,7 +4252,7 @@ "ciL" = ( /obj/item/tool/pen/clicky, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "marked" }, /area/lv522/atmos/east_reactor) "ciS" = ( @@ -3568,26 +4267,38 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/landing_zone_2) -"cjf" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/lv522/indoors/lone_buildings/engineering) "cjv" = ( /obj/structure/bed/chair/comfy{ dir = 4 }, /turf/open/floor/carpet, /area/lv522/indoors/b_block/bar) +"cjy" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper A-Block Corporate Office Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/bridges/corpo) "cjE" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) +"ckK" = ( +/obj/structure/prop/invuln/ice_prefab{ + dir = 1; + icon_state = "fab_2" + }, +/obj/structure/prop/invuln/ice_prefab{ + icon_state = "fab_2" + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/w_rockies) "ckT" = ( /obj/item/weapon/gun/revolver/cmb, /obj/structure/pipes/standard/simple/hidden/green{ @@ -3607,12 +4318,7 @@ }, /area/lv522/indoors/c_block/mining) "clf" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - icon_state = "flammable_pipe_2" - }, +/obj/effect/landmark/xeno_spawn, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "clR" = ( @@ -3649,8 +4355,20 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor) +"cmC" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper A-Block Fitness Centre Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/fitness) "cmF" = ( /obj/structure/prop/vehicles/crawler{ icon_state = "crawler_fuel"; @@ -3661,7 +4379,7 @@ dir = 8; layer = 2.9 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "cnw" = ( /obj/structure/bed/chair{ @@ -3672,6 +4390,13 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/casino) +"cnA" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "cnN" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -3777,6 +4502,14 @@ }, /turf/open/floor/prison, /area/lv522/indoors/b_block/bridge) +"cpZ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor/south) "cqb" = ( /obj/structure/stairs/perspective{ dir = 8; @@ -3784,6 +4517,12 @@ }, /turf/open/floor/prison, /area/lv522/indoors/c_block/cargo) +"cqe" = ( +/obj/structure/prop/invuln/ice_prefab{ + dir = 1 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/w_rockies) "cqh" = ( /obj/structure/surface/table/almayer, /obj/item/newspaper, @@ -3817,16 +4556,6 @@ icon_state = "floor_plate" }, /area/lv522/indoors/c_block/cargo) -"cqL" = ( -/obj/structure/largecrate/random/barrel/white, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/lv522/outdoors/colony_streets/north_street) "cqP" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -3871,18 +4600,12 @@ /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) "crX" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/poddoor/almayer/closed{ - dir = 8; - id = "Containers_west_LV522"; - name = "Emergency Lockdown" - }, +/obj/structure/prop/ice_colony/ground_wire, +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, /turf/open/floor/corsat{ icon_state = "marked" }, -/area/lv522/atmos/cargo_intake) +/area/lv522/atmos/east_reactor) "csv" = ( /obj/structure/platform{ dir = 1 @@ -3892,6 +4615,23 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/kitchen) +"csy" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor/south) +"csC" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper C-Block - Garage Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/garage) "csK" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -3900,6 +4640,16 @@ icon_state = "browncorner" }, /area/lv522/atmos/north_command_centre) +"csS" = ( +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "csU" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -3916,6 +4666,15 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/dorms) +"ctu" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper C-Block - Casino Airlock"; + welded = 1 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/casino) "ctE" = ( /obj/structure/foamed_metal, /turf/open/floor/plating, @@ -3927,12 +4686,28 @@ icon_state = "floor_marked" }, /area/lv522/outdoors/colony_streets/north_east_street) +"cuu" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, +/obj/effect/landmark/xeno_spawn, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "cuF" = ( -/obj/structure/machinery/door/airlock/almayer/maint, +/obj/item/tool/warning_cone{ + pixel_x = -10; + pixel_y = 11 + }, +/obj/structure/machinery/light{ + dir = 1 + }, /turf/open/floor/corsat{ - icon_state = "marked" + icon_state = "plate" }, -/area/lv522/atmos/north_command_centre) +/area/lv522/atmos/east_reactor/west) "cuY" = ( /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, /turf/open/floor/prison{ @@ -3967,22 +4742,34 @@ /area/lv522/indoors/c_block/mining) "cwq" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ icon_state = "plate" }, /area/lv522/atmos/east_reactor/north) -"cwL" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, +"cwr" = ( +/obj/structure/machinery/deployable/barrier, /obj/effect/decal/warning_stripes{ - icon_state = "W" + icon_state = "W"; + pixel_x = -1 }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/lv522/landing_zone_2/ceiling) +/area/lv522/atmos/way_in_command_centre) +"cwE" = ( +/obj/structure/largecrate/random/secure, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_west_street) +"cwL" = ( +/turf/closed/wall/shiva/prefabricated, +/area/lv522/landing_zone_2) +"cwN" = ( +/obj/structure/prop/invuln/ice_prefab{ + dir = 10 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/w_rockies) "cwO" = ( /obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/corsat, @@ -4057,20 +4844,21 @@ icon_state = "white_cyan2" }, /area/lv522/indoors/a_block/medical/glass) -"cyv" = ( -/obj/item/tool/mop{ - desc = "Unlock the power of Mop-Fu!"; - force = 35; - pixel_x = -12; - pixel_y = 24 - }, -/obj/item/tank/oxygen{ - pixel_x = 4; - pixel_y = 19 +"cyu" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/structure/machinery/light, /turf/open/floor/corsat{ icon_state = "plate" }, +/area/lv522/atmos/cargo_intake) +"cyv" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/corsat{ + icon_state = "squares" + }, /area/lv522/atmos/east_reactor) "cyH" = ( /obj/structure/machinery/space_heater/radiator/red{ @@ -4080,6 +4868,13 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/garage) +"cyO" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/west_reactor) "cyV" = ( /obj/structure/machinery/light{ dir = 1 @@ -4107,13 +4902,12 @@ }, /area/lv522/indoors/c_block/mining) "czC" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/turf/open/floor/corsat{ - icon_state = "squares" - }, -/area/lv522/atmos/east_reactor) +/turf/closed/wall/strata_outpost, +/area/lv522/atmos/east_reactor/east) +"czE" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "czG" = ( /obj/structure/sign/safety/radio_rad{ pixel_y = 26 @@ -4122,7 +4916,7 @@ icon_state = "N"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "czO" = ( /obj/structure/blocker/invisible_wall, @@ -4151,17 +4945,9 @@ /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_west_street) "cAp" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/analyzer{ - pixel_x = -9; - pixel_y = 3 - }, -/obj/item/clipboard{ - pixel_x = 5; - pixel_y = 3 - }, +/obj/effect/landmark/xeno_spawn, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "browncorner" }, /area/lv522/atmos/east_reactor) "cAx" = ( @@ -4225,6 +5011,10 @@ icon_state = "plate" }, /area/lv522/atmos/north_command_centre) +"cCH" = ( +/obj/effect/decal/cleanable/generic, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_east_street) "cCK" = ( /obj/structure/machinery/disposal, /turf/open/floor/prison{ @@ -4232,6 +5022,12 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) +"cCL" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) "cCN" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/generic, @@ -4257,7 +5053,7 @@ dir = 10; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "cDo" = ( /turf/open/floor/corsat{ @@ -4299,6 +5095,7 @@ /area/lv522/indoors/c_block/mining) "cEw" = ( /obj/structure/surface/table/almayer, +/obj/structure/machinery/light, /turf/open/floor/corsat{ icon_state = "brown" }, @@ -4360,13 +5157,11 @@ }, /area/lv522/indoors/b_block/bridge) "cGd" = ( -/obj/structure/surface/table/almayer, -/obj/structure/prop/server_equipment/laptop/on, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/corsat{ + dir = 5; + icon_state = "brown" }, -/area/lv522/outdoors/colony_streets/windbreaker/observation) +/area/lv522/atmos/east_reactor/east) "cGw" = ( /obj/structure/machinery/light{ dir = 8 @@ -4415,6 +5210,15 @@ }, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor) +"cHu" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + welded = 1 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/east_reactor/south) "cHw" = ( /obj/structure/largecrate/random, /turf/open/asphalt/cement{ @@ -4443,9 +5247,9 @@ }, /area/lv522/indoors/a_block/dorms) "cHL" = ( -/obj/structure/largecrate/random, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - dir = 4; + dir = 8; icon_state = "brown" }, /area/lv522/atmos/east_reactor) @@ -4480,16 +5284,24 @@ }, /area/lv522/indoors/b_block/hydro) "cIm" = ( -/obj/structure/largecrate/random/case, -/turf/open/floor/corsat, -/area/lv522/atmos/east_reactor) +/turf/open/floor/corsat{ + dir = 8; + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor/east) +"cIo" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper C-Block - Cargo Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/cargo) "cIr" = ( /obj/structure/bed/chair{ dir = 4 }, -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - icon_state = "flammable_pipe_2" - }, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "cIs" = ( @@ -4509,14 +5321,6 @@ }, /turf/open/floor/prison, /area/lv522/indoors/c_block/garage) -"cIC" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/floor/corsat{ - icon_state = "brown" - }, -/area/lv522/atmos/cargo_intake) "cIQ" = ( /obj/structure/surface/table/almayer, /obj/item/trash/plate{ @@ -4585,6 +5389,12 @@ icon_state = "brown" }, /area/lv522/oob) +"cJm" = ( +/obj/structure/prop/invuln/ice_prefab{ + dir = 1 + }, +/turf/open/auto_turf/shale/layer2, +/area/lv522/outdoors/w_rockies) "cJo" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -4593,25 +5403,22 @@ /area/lv522/atmos/north_command_centre) "cJy" = ( /obj/effect/decal/cleanable/blood/xeno, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "cJA" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/fence{ - layer = 2.9 +/obj/item/device/flashlight/lamp/tripod{ + layer = 6; + pixel_y = 11 }, -/turf/open/floor/strata{ - dir = 4; - icon_state = "floor3" +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) +"cJF" = ( +/obj/structure/platform_decoration{ + dir = 8 }, -/area/lv522/outdoors/nw_rockies) +/obj/item/stack/sheet/wood, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "cJW" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 @@ -4645,8 +5452,8 @@ /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/east_central_street) "cKp" = ( -/obj/structure/window/framed/colony, -/turf/open/floor/corsat, +/obj/structure/window/framed/strata/reinforced, +/turf/open/floor/plating, /area/lv522/atmos/east_reactor/north) "cKw" = ( /obj/structure/girder, @@ -4654,19 +5461,24 @@ /area/lv522/atmos/east_reactor/west) "cKy" = ( /obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor/west) "cKC" = ( /obj/structure/girder/displaced, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor/west) "cKF" = ( -/obj/structure/cargo_container/kelland/left, -/obj/item/explosive/plastic/breaching_charge{ - layer = 5 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/colony_streets/east_central_street) +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/nw_rockies) "cKG" = ( /turf/closed/wall/strata_ice/dirty, /area/lv522/outdoors/nw_rockies) @@ -4690,12 +5502,11 @@ /turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "cLb" = ( -/obj/structure/largecrate/random/case/double, -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - icon_state = "flammable_pipe_2" +/turf/open/floor/corsat{ + dir = 4; + icon_state = "browncorner" }, -/turf/open/floor/corsat, -/area/lv522/atmos/east_reactor) +/area/lv522/atmos/east_reactor/east) "cLi" = ( /obj/structure/barricade/deployable{ dir = 8 @@ -4729,6 +5540,14 @@ }, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) +"cLH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "cLQ" = ( /obj/structure/largecrate/random/secure, /turf/open/floor/prison{ @@ -4779,12 +5598,30 @@ icon_state = "white_cyan4" }, /area/lv522/indoors/a_block/medical/glass) -"cNB" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ +"cMW" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 }, -/turf/open/floor/corsat, -/area/lv522/atmos/east_reactor) +/turf/open/floor/corsat{ + dir = 6; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) +"cNB" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/east) +"cNO" = ( +/obj/structure/machinery/colony_floodlight_switch{ + pixel_y = 30 + }, +/turf/open/floor/plating, +/area/lv522/indoors/lone_buildings/engineering) "cNQ" = ( /turf/open/floor/corsat{ dir = 8; @@ -4799,7 +5636,7 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/hallway/damage) "cNV" = ( -/turf/closed/wall, +/turf/closed/wall/strata_outpost, /area/lv522/atmos/north_command_centre) "cOA" = ( /obj/structure/machinery/light{ @@ -4810,22 +5647,41 @@ icon_state = "floor_marked" }, /area/lv522/indoors/lone_buildings/storage_blocks) +"cOJ" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/cargo_intake) "cOZ" = ( /obj/structure/prop/invuln/overhead/flammable_pipe/fly, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ icon_state = "plate" }, /area/lv522/atmos/east_reactor) +"cPg" = ( +/obj/structure/surface/table/almayer, +/obj/item/ashtray/bronze{ + icon_state = "ashtray_full_bl"; + pixel_x = -8; + pixel_y = 7 + }, +/obj/item/toy/plush/farwa, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "cPi" = ( /obj/effect/spawner/gibspawner/xeno, /obj/effect/decal/cleanable/blood/xeno, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "cPx" = ( -/obj/structure/blocker/forcefield/vehicles, -/turf/open/floor/corsat{ - icon_state = "marked" - }, +/obj/structure/window/framed/corsat, +/turf/open/floor/corsat, /area/lv522/atmos/filt) "cPy" = ( /turf/open/floor/corsat{ @@ -4833,13 +5689,6 @@ icon_state = "brown" }, /area/lv522/atmos/filt) -"cPH" = ( -/obj/structure/blocker/forcefield/vehicles, -/turf/open/floor/corsat{ - dir = 8; - icon_state = "brown" - }, -/area/lv522/atmos/filt) "cPN" = ( /obj/structure/prop/invuln/overhead/flammable_pipe/fly{ dir = 1; @@ -4948,6 +5797,13 @@ icon_state = "cement4" }, /area/lv522/outdoors/colony_streets/central_streets) +"cRD" = ( +/obj/structure/blocker/forcefield/vehicles, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/east_reactor/south) "cRG" = ( /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor/corsat{ @@ -4971,20 +5827,28 @@ }, /area/lv522/atmos/north_command_centre) "cRT" = ( -/obj/structure/prop/vehicles/crawler{ - dir = 8; - layer = 3.1 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, /turf/open/floor/corsat{ - icon_state = "plate" + icon_state = "brown" }, -/area/lv522/atmos/east_reactor) +/area/lv522/atmos/east_reactor/east) "cSb" = ( /obj/structure/largecrate, /turf/open/floor/corsat{ icon_state = "plate" }, /area/lv522/atmos/east_reactor/west) +"cSf" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper C-Block - Cargo Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/cargo) "cSh" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -5017,6 +5881,10 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/kitchen/glass) +"cTU" = ( +/obj/structure/curtain/red, +/turf/open/floor/wood/ship, +/area/lv522/atmos/way_in_command_centre) "cTX" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/corsat, @@ -5047,11 +5915,11 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 8 }, -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 1 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "marked" }, /area/lv522/atmos/east_reactor) "cUl" = ( @@ -5069,6 +5937,26 @@ icon_state = "squares" }, /area/lv522/atmos/east_reactor/east) +"cUA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/vents/pump, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 2 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "cUG" = ( /turf/closed/wall/strata_outpost, /area/lv522/indoors/c_block/garage) @@ -5126,14 +6014,8 @@ icon_state = "darkredfull2" }, /area/lv522/outdoors/colony_streets/north_street) -"cWc" = ( -/obj/structure/blocker/forcefield/vehicles, -/turf/open/floor/corsat{ - icon_state = "squares" - }, -/area/lv522/atmos/filt) "cWf" = ( -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/atmos/cargo_intake) "cWg" = ( /obj/item/clothing/shoes/jackboots{ @@ -5162,6 +6044,15 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security) +"cWH" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor) "cWL" = ( /turf/open/floor/corsat{ dir = 8; @@ -5204,8 +6095,7 @@ "cWZ" = ( /obj/structure/blocker/forcefield/vehicles, /turf/open/floor/corsat{ - dir = 4; - icon_state = "brown" + icon_state = "marked" }, /area/lv522/atmos/filt) "cXf" = ( @@ -5213,6 +6103,14 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/casino) +"cXi" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/machinery/photocopier, +/obj/structure/machinery/light, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "cXm" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ @@ -5233,6 +6131,14 @@ /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison, /area/lv522/indoors/a_block/security) +"cYe" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor) "cYf" = ( /obj/structure/closet/secure_closet/freezer/fridge/full, /obj/item/reagent_container/food/condiment/enzyme, @@ -5244,7 +6150,7 @@ /area/lv522/indoors/a_block/kitchen) "cYn" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "cYE" = ( /obj/structure/surface/table/almayer, @@ -5309,6 +6215,10 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor/east) +"cZH" = ( +/obj/structure/blocker/invisible_wall, +/turf/open/floor/plating, +/area/lv522/atmos/sewer) "cZM" = ( /obj/structure/cargo_container/horizontal/blue/top, /turf/open/floor/prison{ @@ -5414,7 +6324,7 @@ }, /area/lv522/outdoors/colony_streets/central_streets) "dbi" = ( -/obj/item/clothing/suit/storage/marine/leader, +/obj/item/clothing/suit/storage/marine/medium/leader, /obj/item/clothing/head/helmet/marine/leader{ pixel_x = 9; pixel_y = 14 @@ -5487,12 +6397,18 @@ icon_state = "brown" }, /area/lv522/oob) -"dcm" = ( -/obj/structure/largecrate/random/barrel/yellow, +"dck" = ( +/obj/structure/surface/table/almayer, +/obj/item/trash/ceramic_plate{ + pixel_y = 6 + }, +/obj/item/trash/ceramic_plate{ + pixel_y = 8 + }, /turf/open/floor/corsat{ icon_state = "plate" }, -/area/lv522/atmos/north_command_centre) +/area/lv522/atmos/east_reactor/south) "dco" = ( /obj/structure/cargo_container/grant/right, /turf/open/floor/plating, @@ -5505,13 +6421,8 @@ icon_state = "marked" }, /area/lv522/atmos/east_reactor/west) -"dcB" = ( -/obj/structure/cargo_container/grant/rightmid, -/turf/open/floor/corsat{ - icon_state = "plate" - }, -/area/lv522/atmos/north_command_centre) "dcD" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ dir = 9; icon_state = "brown" @@ -5539,6 +6450,17 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) +"dcM" = ( +/obj/effect/decal/cleanable/blood, +/obj/effect/alien/resin/sticky, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) +"dcR" = ( +/obj/effect/alien/weeds/node/alpha, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/w_rockies) "ddo" = ( /obj/structure/surface/rack, /obj/item/stack/sheet/metal{ @@ -5555,15 +6477,6 @@ icon_state = "floor_marked" }, /area/lv522/atmos/cargo_intake) -"ddq" = ( -/obj/structure/surface/rack, -/obj/item/device/analyzer, -/obj/effect/landmark/objective_landmark/close, -/obj/item/stack/sandbags_empty/small_stack, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/lv522/indoors/c_block/mining) "ddr" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/drinks/bottle/davenport{ @@ -5661,7 +6574,7 @@ pixel_x = 1 }, /obj/structure/cargo_container/ferret/right, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "del" = ( /turf/open/floor/corsat{ @@ -5680,7 +6593,7 @@ /obj/structure/prop/structure_lattice{ layer = 2.9 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/east_central_street) "dfk" = ( /obj/structure/pipes/standard/manifold/hidden/green{ @@ -5724,10 +6637,33 @@ icon_state = "kitchen" }, /area/lv522/indoors/a_block/kitchen) +"dfK" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) +"dfV" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Dorms And Office Airlock"; + welded = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/dorms) "dgb" = ( /obj/structure/cryofeed, /turf/open/floor/bluegrid, /area/lv522/atmos/east_reactor) +"dgd" = ( +/turf/open/asphalt/cement{ + icon_state = "cement15" + }, +/area/lv522/outdoors/colony_streets/north_east_street) "dgj" = ( /obj/structure/machinery/light{ dir = 1 @@ -5738,18 +6674,24 @@ }, /area/lv522/indoors/a_block/dorms) "dgq" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - dir = 10 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/corsat, -/area/lv522/atmos/east_reactor) +/turf/open/floor/corsat{ + dir = 8; + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor/east) "dgI" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - dir = 8 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/turf/open/floor/corsat, -/area/lv522/atmos/east_reactor) +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/lv522/atmos/west_reactor) "dgJ" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison{ @@ -5787,6 +6729,11 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/hallway) +"dhH" = ( +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/lv522/landing_zone_2) "dhJ" = ( /turf/open/floor/corsat{ dir = 8; @@ -5810,9 +6757,8 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 8 }, -/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "marked" }, /area/lv522/atmos/east_reactor) "dhX" = ( @@ -5826,10 +6772,16 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) +"dio" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "dip" = ( /obj/structure/prop/ice_colony/ground_wire{ dir = 4 @@ -5872,6 +6824,12 @@ }, /turf/open/floor/prison, /area/lv522/indoors/lone_buildings/storage_blocks) +"djq" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/filt) "djD" = ( /obj/structure/surface/table/almayer, /obj/item/device/flashlight/lamp/on{ @@ -5887,16 +6845,6 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) -"djL" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 8; - pixel_x = -6; - pixel_y = 6 - }, -/obj/structure/largecrate/random, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/lv522/landing_zone_1/tunnel) "djM" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -5951,7 +6899,10 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/landing_zone_2/ceiling) "dkL" = ( -/turf/closed/wall/r_wall/biodome/biodome_unmeltable, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, /area/lv522/atmos/east_reactor/east) "dkP" = ( /obj/structure/prop/invuln/overhead/flammable_pipe/fly{ @@ -5965,8 +6916,15 @@ /area/lv522/oob) "dkX" = ( /obj/structure/platform_decoration, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) +"dli" = ( +/obj/structure/blocker/forcefield/vehicles, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/east_reactor/south) "dlC" = ( /obj/structure/prop/invuln/fire{ pixel_x = 8; @@ -5986,19 +6944,6 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/north_west_street) -"dlM" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "LV_522_Hydro-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/b_block/hydro) "dmm" = ( /obj/item/weapon/twohanded/folded_metal_chair{ pixel_y = -8 @@ -6026,6 +6971,19 @@ icon_state = "plate" }, /area/lv522/indoors/c_block/mining) +"dmE" = ( +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + desc = "It is made of Fiberbush(tm). It contains asbestos. Studies say that greenery calms the mind due to some sort evolved mechanism in the brain. This plant is not calming."; + icon_state = "pottedplant_21"; + layer = 3.1; + name = "synthethic potted plant"; + pixel_y = 12 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "dmG" = ( /obj/structure/barricade/deployable{ dir = 1 @@ -6085,10 +7043,6 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) -"dnA" = ( -/obj/structure/girder, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/colony_streets/north_east_street) "dnB" = ( /obj/item/clothing/head/helmet/marine/pilot, /turf/open/floor/corsat{ @@ -6157,6 +7111,12 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/dorms) +"dos" = ( +/obj/docking_port/stationary/marine_dropship/lz1{ + name = "LZ1: Southwest Landing Zone" + }, +/turf/open/floor/plating, +/area/shuttle/drop1/lv522) "dox" = ( /obj/structure/prop/invuln/ice_prefab/roof_greeble{ icon_state = "vent5"; @@ -6165,7 +7125,7 @@ /obj/structure/prop/invuln/ice_prefab{ dir = 9 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_street) "doC" = ( /obj/effect/landmark/xeno_spawn, @@ -6185,6 +7145,12 @@ icon_state = "browncorner" }, /area/lv522/atmos/west_reactor) +"dpg" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/west_reactor) "dpj" = ( /obj/structure/cargo_container/hd/mid/alt, /turf/open/floor/corsat{ @@ -6196,8 +7162,20 @@ dir = 1; icon_state = "fab_2" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) +"dpz" = ( +/obj/item/clothing/mask/facehugger{ + desc = "It has some sort of a tube at the end of its tail. What the hell is this thing?"; + icon_state = "facehugger_impregnated"; + layer = 3; + name = "????"; + stat = 2 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "dqn" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -6205,9 +7183,7 @@ /obj/structure/platform{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_middle, /area/lv522/landing_zone_forecon/UD6_Tornado) "dqr" = ( /obj/item/weapon/gun/rifle/m41a{ @@ -6262,13 +7238,26 @@ }, /area/lv522/indoors/b_block/hydro) "dsa" = ( +/obj/structure/fence, /obj/effect/decal/warning_stripes{ - icon_state = "W" + icon_state = "N"; + pixel_y = 1 }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" }, /area/lv522/landing_zone_2/ceiling) +"dsc" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/lv522/atmos/cargo_intake) "dsl" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -6340,20 +7329,6 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) -"dtl" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1; - name = "\improper Canteen"; - welded = 1 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "Sec-Kitchen-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/kitchen/glass) "dtr" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/corsat{ @@ -6370,6 +7345,16 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/casino) +"dtR" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) +"dtU" = ( +/obj/effect/spawner/gibspawner/human, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/w_rockies) "dua" = ( /obj/effect/decal/cleanable/dirt, /obj/item/prop/colony/used_flare, @@ -6394,6 +7379,19 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor/west) +"dvn" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper B-Block - Hydroponics Airlock" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "LV_522_Hydro-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/b_block/hydro) "dvp" = ( /obj/structure/largecrate/supply, /obj/structure/largecrate/supply{ @@ -6405,15 +7403,30 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/bridges/op_centre) "dvO" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, -/turf/open/floor/corsat, -/area/lv522/atmos/outdoor) +/obj/structure/platform_decoration/strata, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) +"dwd" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -9; + pixel_y = 25 + }, +/obj/structure/prop/ice_colony/ground_wire{ + dir = 4 + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/central_streets) "dwG" = ( -/obj/structure/largecrate/random/barrel/yellow, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ - icon_state = "marked" + dir = 4; + icon_state = "browncorner" }, -/area/lv522/atmos/north_command_centre) +/area/lv522/atmos/west_reactor) +"dwI" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/turf/open/floor/prison, +/area/lv522/atmos/way_in_command_centre) "dwO" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green, @@ -6433,11 +7446,10 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/c_block/t_comm) "dwP" = ( -/obj/structure/cargo_container/grant/rightmid{ - layer = 3.1 - }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ - icon_state = "plate" + dir = 1; + icon_state = "brown" }, /area/lv522/atmos/north_command_centre) "dwX" = ( @@ -6447,15 +7459,36 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/garage) +"dxc" = ( +/obj/structure/prop/invuln/overhead_pipe{ + name = "overhead pipe"; + pixel_x = -20; + pixel_y = 13 + }, +/turf/closed/wall/mineral/bone_resin, +/area/lv522/atmos/east_reactor/south) "dxl" = ( /obj/effect/decal/cleanable/flour, /turf/open/floor/prison{ icon_state = "kitchen" }, /area/lv522/indoors/a_block/kitchen) +"dxJ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "dxU" = ( -/turf/closed/wall, -/area/lv522/atmos/east_reactor/west) +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/west_reactor) "dxY" = ( /obj/structure/machinery/computer/telecomms/server{ pixel_y = 16 @@ -6468,7 +7501,7 @@ }, /area/lv522/indoors/c_block/mining) "dya" = ( -/obj/structure/largecrate/random/barrel, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -6497,7 +7530,7 @@ /area/lv522/indoors/a_block/medical) "dyS" = ( /obj/item/stack/sheet/wood, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "dzd" = ( /obj/structure/closet/secure_closet/marshal, @@ -6517,6 +7550,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -6528,6 +7562,19 @@ icon_state = "marked" }, /area/lv522/indoors/c_block/casino) +"dAf" = ( +/obj/structure/surface/table/almayer, +/obj/item/paper_bin{ + pixel_y = 5 + }, +/obj/item/tool/pen/blue/clicky, +/obj/structure/machinery/power/apc/weak{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/command_centre) "dAm" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -6535,6 +7582,15 @@ icon_state = "brown" }, /area/lv522/atmos/north_command_centre) +"dAG" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor) "dAQ" = ( /obj/structure/platform_decoration{ dir = 1 @@ -6589,6 +7645,15 @@ }, /turf/open/floor/plating, /area/lv522/outdoors/colony_streets/north_east_street) +"dBe" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor) "dBi" = ( /obj/structure/pipes/vents/pump, /obj/effect/decal/cleanable/dirt, @@ -6638,7 +7703,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "dDp" = ( /obj/structure/surface/table/almayer, @@ -6653,16 +7718,7 @@ }, /area/lv522/indoors/c_block/mining) "dDq" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, +/turf/closed/wall/shiva/prefabricated, /area/lv522/landing_zone_2/ceiling) "dDC" = ( /turf/open/floor/corsat{ @@ -6670,6 +7726,12 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor/west) +"dDF" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/filt) "dDS" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -6681,11 +7743,11 @@ /turf/open/floor/prison, /area/lv522/atmos/cargo_intake) "dEk" = ( -/obj/structure/closet/crate, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ - icon_state = "marked" + icon_state = "squares" }, -/area/lv522/atmos/east_reactor/west) +/area/lv522/atmos/north_command_centre) "dEm" = ( /obj/structure/closet, /turf/open/floor/prison, @@ -6760,7 +7822,7 @@ /area/lv522/indoors/a_block/admin) "dFg" = ( /obj/structure/cargo_container/horizontal/blue/bottom, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "dFn" = ( /obj/structure/bed, @@ -6780,18 +7842,12 @@ dir = 6 }, /area/lv522/indoors/c_block/mining) -"dFE" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/hallway) "dFH" = ( /obj/structure/machinery/power/port_gen/pacman{ layer = 3.1; pixel_y = 6 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "dFR" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -6800,11 +7856,20 @@ /turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "dFT" = ( -/obj/structure/largecrate, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor) +"dFY" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 1 + }, +/obj/structure/machinery/light, /turf/open/floor/corsat{ - icon_state = "marked" + icon_state = "plate" }, -/area/lv522/atmos/east_reactor/west) +/area/lv522/atmos/command_centre) "dGp" = ( /obj/structure/cargo_container/horizontal/blue/middle{ layer = 3.1 @@ -6855,18 +7920,13 @@ /turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "dHk" = ( -/obj/structure/prop/turbine_extras/left, -/turf/open/floor/corsat, -/area/lv522/atmos/east_reactor) -"dHx" = ( -/obj/structure/largecrate/random/barrel/red, -/obj/effect/decal/warning_stripes{ - icon_state = "S" +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" +/turf/open/floor/corsat{ + icon_state = "browncorner" }, -/area/lv522/outdoors/colony_streets/north_street) +/area/lv522/atmos/east_reactor) "dHy" = ( /obj/structure/bed/chair/comfy{ dir = 1 @@ -6899,7 +7959,7 @@ /obj/structure/cargo_container/horizontal/blue/top{ pixel_x = 16 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "dIi" = ( /obj/structure/cargo_container/horizontal/blue/middle, @@ -6960,14 +8020,9 @@ dir = 1 }, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "marked" }, /area/lv522/atmos/east_reactor) -"dJn" = ( -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/outdoors/nw_rockies) "dJp" = ( /obj/structure/bed/chair/comfy{ dir = 1 @@ -6982,8 +8037,7 @@ /area/lv522/atmos/east_reactor) "dJt" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/girder, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "dJB" = ( /obj/effect/decal/cleanable/dirt, @@ -6998,7 +8052,7 @@ /obj/structure/cargo_container/horizontal/blue/middle{ pixel_x = 16 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "dJN" = ( /turf/open/floor/corsat{ @@ -7045,10 +8099,6 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/corpo/glass) -"dLh" = ( -/obj/structure/largecrate/random, -/turf/open/floor/prison, -/area/lv522/outdoors/nw_rockies) "dLq" = ( /obj/item/prop/colony/proptag{ desc = "A fallen marine's information dog tag. It reads, Staff Sergeant Thomas 'Dog' Smith" @@ -7094,18 +8144,6 @@ /obj/effect/spawner/gibspawner/xeno, /turf/open/gm/river, /area/lv522/indoors/a_block/kitchen/damage) -"dMo" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "LV_522_Hydro-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/b_block/hydro) "dMp" = ( /obj/structure/machinery/light{ dir = 4 @@ -7120,6 +8158,13 @@ icon_state = "white_cyan2" }, /area/lv522/indoors/a_block/executive) +"dMu" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "brown" + }, +/area/lv522/atmos/west_reactor) "dMy" = ( /obj/structure/cargo_container/kelland/left, /turf/open/floor/prison{ @@ -7153,12 +8198,32 @@ icon_state = "marked" }, /area/lv522/atmos/north_command_centre) +"dNe" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + layer = 2.5; + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "dNm" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/dorms) +"dNn" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "dNK" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ name = "\improper Workshop Storage"; @@ -7181,8 +8246,17 @@ }, /area/lv522/indoors/a_block/security/glass) "dOa" = ( -/turf/closed/wall, +/turf/closed/wall/strata_outpost, /area/lv522/atmos/east_reactor/north) +"dOt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "dOw" = ( /turf/open/floor/corsat{ dir = 4; @@ -7224,6 +8298,12 @@ icon_state = "plate" }, /area/lv522/atmos/east_reactor/north) +"dPl" = ( +/obj/structure/largecrate/random, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/reactor_garage) "dPq" = ( /turf/open/floor/corsat{ dir = 1; @@ -7276,11 +8356,11 @@ }, /area/lv522/indoors/a_block/medical/glass) "dQg" = ( -/obj/structure/closet/crate, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "plate" }, -/area/lv522/atmos/east_reactor/west) +/area/lv522/atmos/east_reactor/north) "dQh" = ( /obj/structure/machinery/light{ dir = 1 @@ -7308,18 +8388,6 @@ }, /turf/open/floor/prison, /area/lv522/atmos/cargo_intake) -"dQv" = ( -/obj/structure/barricade/handrail{ - dir = 1 - }, -/obj/structure/barricade/handrail{ - dir = 8 - }, -/turf/open/floor/corsat{ - dir = 8; - icon_state = "brown" - }, -/area/lv522/atmos/east_reactor) "dQM" = ( /obj/structure/machinery/vending/dinnerware, /obj/effect/decal/cleanable/dirt, @@ -7344,12 +8412,6 @@ icon_state = "cement12" }, /area/lv522/outdoors/colony_streets/south_street) -"dRf" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/atmos/east_reactor) "dRn" = ( /obj/structure/machinery/door/airlock/almayer/secure/colony{ icon_state = "door_locked"; @@ -7364,24 +8426,30 @@ "dRy" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, /turf/open/floor/corsat{ - icon_state = "squares" + dir = 1; + icon_state = "brown" }, /area/lv522/atmos/east_reactor/south) -"dRD" = ( -/obj/structure/barricade/handrail{ - dir = 1 - }, -/obj/structure/barricade/handrail{ - dir = 4 +"dRK" = ( +/obj/structure/stairs/perspective{ + dir = 9; + icon_state = "p_stair_full" }, -/turf/open/floor/corsat{ - dir = 4; - icon_state = "brown" +/turf/open/asphalt/cement{ + icon_state = "cement4" }, -/area/lv522/atmos/east_reactor) +/area/lv522/outdoors/colony_streets/north_west_street) "dRL" = ( /turf/closed/wall/strata_outpost, /area/lv522/indoors/a_block/dorm_north) +"dRS" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/command_centre) "dSt" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -7392,7 +8460,7 @@ "dSy" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "brown" }, /area/lv522/atmos/east_reactor/east) "dSW" = ( @@ -7449,16 +8517,6 @@ icon_state = "platebot" }, /area/lv522/indoors/c_block/cargo) -"dUr" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Westlock"; - welded = 1 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/dorms) "dUD" = ( /obj/item/prop/colony/proptag{ desc = "A fallen marine's information dog tag. It reads, Ensign Robert 'Roach' Yangley" @@ -7489,6 +8547,21 @@ /obj/structure/surface/table/almayer, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"dUY" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/south_east_street) +"dVo" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "\improper Dormitories"; + welded = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/dorm_north) "dVD" = ( /obj/structure/surface/rack, /obj/item/tool/pickaxe, @@ -7496,6 +8569,10 @@ icon_state = "cement12" }, /area/lv522/outdoors/colony_streets/south_east_street) +"dVM" = ( +/obj/structure/curtain/red, +/turf/open/floor/prison, +/area/lv522/indoors/a_block/dorm_north) "dVU" = ( /obj/structure/machinery/power/apc/weak{ dir = 1 @@ -7505,6 +8582,10 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/medical) +"dWc" = ( +/obj/structure/closet/crate/trashcart, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_west_street) "dWn" = ( /obj/effect/spawner/random/toolbox, /turf/open/floor/plating/plating_catwalk/prison, @@ -7516,7 +8597,7 @@ /area/lv522/landing_zone_forecon/UD6_Tornado) "dWD" = ( /obj/structure/cargo_container/kelland/left, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/south_east_street) "dWE" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, @@ -7558,6 +8639,16 @@ icon_state = "squares" }, /area/lv522/atmos/east_reactor) +"dXo" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, +/obj/effect/landmark/xeno_spawn, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "dXq" = ( /obj/effect/landmark/monkey_spawn, /obj/structure/pipes/standard/simple/hidden/green, @@ -7570,6 +8661,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/a_block/security) +"dXB" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "dXI" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/reagent_container/food/drinks/flask/detflask{ @@ -7587,6 +8686,13 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor/east) +"dXX" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/belt/utility, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "dYb" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 @@ -7610,16 +8716,25 @@ /turf/open/floor/prison, /area/lv522/atmos/cargo_intake) "dYX" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - dir = 6 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "brown" }, -/turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "dZd" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe{ - dir = 6 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "browncorner" }, -/turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "dZr" = ( /obj/structure/ore_box, @@ -7632,6 +8747,7 @@ }, /area/lv522/indoors/c_block/mining) "dZs" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor/west) "dZw" = ( @@ -7656,12 +8772,15 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/security) -"dZA" = ( -/obj/structure/largecrate/random/barrel/yellow, +"dZG" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, /turf/open/floor/corsat{ - icon_state = "squares" + dir = 6; + icon_state = "brown" }, -/area/lv522/atmos/east_reactor/west) +/area/lv522/atmos/east_reactor/south) "dZM" = ( /obj/item/ammo_magazine/rifle/heap{ current_rounds = 0 @@ -7704,13 +8823,6 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) -"eai" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_marked" - }, -/area/lv522/atmos/outdoor) "eam" = ( /obj/structure/blocker/forcefield/vehicles, /turf/open/floor/corsat{ @@ -7718,7 +8830,7 @@ }, /area/lv522/atmos/command_centre) "ear" = ( -/obj/structure/largecrate, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ icon_state = "squares" }, @@ -7732,20 +8844,15 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/lone_buildings/storage_blocks) +"ebe" = ( +/obj/item/storage/pouch/autoinjector/full, +/turf/open/auto_turf/shale/layer2, +/area/lv522/outdoors/w_rockies) "ebn" = ( /turf/open/floor/prison{ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security/glass) -"ebr" = ( -/obj/structure/barricade/handrail{ - dir = 4 - }, -/turf/open/floor/corsat{ - dir = 4; - icon_state = "brown" - }, -/area/lv522/atmos/east_reactor) "ebt" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/asphalt/cement{ @@ -7763,7 +8870,14 @@ }, /area/lv522/oob) "ebR" = ( -/obj/structure/closet/secure_closet/engineering_welding, +/obj/structure/surface/table/almayer, +/obj/structure/transmitter/colony_net{ + dir = 1; + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Colony Engineering"; + pixel_y = -6 + }, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" @@ -7789,11 +8903,37 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/north_east_street) +"ecK" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "ecP" = ( /turf/closed/shuttle/dropship2/tornado{ icon_state = "25" }, /area/lv522/landing_zone_forecon/UD6_Tornado) +"ecU" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) +"edi" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 8; + pixel_x = -6; + pixel_y = 6 + }, +/obj/vehicle/train/cargo/trolley, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "edk" = ( /turf/open/floor/corsat{ dir = 8; @@ -7828,7 +8968,7 @@ /obj/structure/prop/invuln/ice_prefab{ dir = 10 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "eeb" = ( /obj/structure/prop/invuln/overhead_pipe{ @@ -7858,7 +8998,7 @@ /area/lv522/indoors/b_block/bridge) "eeY" = ( /obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "efk" = ( /obj/structure/machinery/light, @@ -7879,9 +9019,6 @@ icon_state = "marked" }, /area/lv522/atmos/east_reactor) -"efH" = ( -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/w_rockies) "efK" = ( /obj/item/stack/tile/plasteel{ name = "ceiling tile"; @@ -7897,6 +9034,17 @@ }, /turf/open/gm/river, /area/lv522/indoors/a_block/kitchen/damage) +"efM" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 10; + layer = 3.51 + }, +/turf/open/gm/river, +/area/lv522/atmos/sewer) "efR" = ( /obj/effect/decal/hefa_cult_decals/d32{ desc = "You think you can make out the iconography of a Xenomorph." @@ -7908,12 +9056,12 @@ }, /area/lv522/oob) "efS" = ( -/obj/structure/barricade/handrail{ - dir = 1 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - dir = 9; - icon_state = "brown" + icon_state = "marked" }, /area/lv522/atmos/east_reactor) "efT" = ( @@ -7968,19 +9116,20 @@ }, /area/lv522/indoors/a_block/kitchen) "egd" = ( -/obj/structure/barricade/handrail{ - dir = 1 - }, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ dir = 1; icon_state = "brown" }, /area/lv522/atmos/east_reactor) -"egt" = ( -/obj/structure/barricade/handrail{ - dir = 1 +"egj" = ( +/obj/structure/machinery/floodlight, +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" }, +/area/lv522/indoors/lone_buildings/storage_blocks) +"egt" = ( /obj/structure/powerloader_wreckage, /turf/open/floor/corsat{ dir = 1; @@ -8025,6 +9174,13 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/mining) +"egK" = ( +/obj/structure/bed/chair/comfy, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "egP" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1 @@ -8069,6 +9225,21 @@ /obj/effect/acid_hole, /turf/closed/wall/strata_outpost, /area/lv522/indoors/a_block/hallway) +"ehM" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/alien/resin/sticky, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) +"ehO" = ( +/obj/effect/alien/resin/sticky, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) "eil" = ( /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor/corsat{ @@ -8076,6 +9247,20 @@ icon_state = "brown" }, /area/lv522/oob) +"eiC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/prop/alien/hugger{ + pixel_x = -7; + pixel_y = -5 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "eiP" = ( /obj/structure/coatrack{ pixel_x = -6; @@ -8096,9 +9281,22 @@ icon_state = "greenfull" }, /area/lv522/landing_zone_1/ceiling) +"eiY" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/lv522/outdoors/colony_streets/north_street) "eiZ" = ( /turf/open/floor/prison, /area/lv522/outdoors/colony_streets/north_west_street) +"ejo" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "brown" + }, +/area/lv522/atmos/north_command_centre) "eju" = ( /obj/item/storage/backpack/marine/satchel{ desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; @@ -8128,8 +9326,8 @@ }, /area/lv522/indoors/a_block/dorms) "ejN" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 4 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 }, /turf/open/floor/corsat{ icon_state = "squares" @@ -8186,14 +9384,14 @@ pixel_x = 6; pixel_y = 7 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "elx" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 5 +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" }, -/turf/open/floor/prison, -/area/lv522/indoors/a_block/dorm_north) +/area/lv522/atmos/east_reactor) "elS" = ( /obj/item/stack/rods, /turf/open/floor/prison{ @@ -8204,8 +9402,8 @@ "elX" = ( /obj/structure/surface/table/almayer, /obj/item/clothing/suit/storage/CMB, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/strata{ + icon_state = "blue1" }, /area/lv522/outdoors/colony_streets/windbreaker/observation) "emb" = ( @@ -8228,6 +9426,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, +/obj/structure/machinery/light, /turf/open/floor/corsat{ icon_state = "plate" }, @@ -8262,12 +9461,6 @@ icon_state = "cement3" }, /area/lv522/outdoors/colony_streets/north_street) -"emW" = ( -/obj/effect/landmark/queen_spawn, -/turf/open/floor/corsat{ - icon_state = "plate" - }, -/area/lv522/atmos/east_reactor) "ene" = ( /turf/open/floor/shiva{ icon_state = "radiator_tile2" @@ -8280,11 +9473,21 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/b_block/bridge) -"enr" = ( -/obj/structure/pipes/standard/manifold/hidden/green, +"enk" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/light{ + dir = 1 + }, /turf/open/floor/corsat{ icon_state = "plate" }, +/area/lv522/atmos/east_reactor/south) +"enr" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, /area/lv522/atmos/east_reactor) "enD" = ( /obj/structure/curtain/red, @@ -8317,7 +9520,10 @@ /turf/open/floor/prison, /area/lv522/atmos/cargo_intake) "enT" = ( -/obj/vehicle/powerloader{ +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/vehicle/powerloader/ft{ dir = 4 }, /turf/open/floor/corsat{ @@ -8330,6 +9536,18 @@ }, /turf/closed/wall/r_wall/biodome/biodome_unmeltable, /area/lv522/oob) +"eoi" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/barricade/metal{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "eov" = ( /obj/structure/machinery/door/poddoor/almayer{ id = "Marked_1"; @@ -8352,10 +9570,17 @@ name = "\improper Secure Blast Door"; unacidable = 1 }, +/obj/structure/machinery/door/poddoor/almayer{ + id = "Marked_6"; + indestructible = 1; + layer = 3.3; + name = "\improper Secure Blast Door"; + unacidable = 1 + }, /turf/open/floor/corsat{ icon_state = "marked" }, -/area/lv522/atmos/east_reactor/east) +/area/lv522/oob) "eow" = ( /obj/structure/tunnel{ pixel_x = 2; @@ -8365,6 +9590,27 @@ icon_state = "marked" }, /area/lv522/atmos/west_reactor) +"eoA" = ( +/obj/item/prop/colony/used_flare, +/obj/item/clothing/mask/facehugger{ + desc = "It has some sort of a tube at the end of its tail. What the hell is this thing?"; + icon_state = "facehugger_impregnated"; + layer = 3; + name = "????"; + stat = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "eoH" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -8385,6 +9631,10 @@ icon_state = "plate" }, /area/lv522/atmos/west_reactor) +"epe" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "epq" = ( /obj/structure/pipes/vents/pump, /obj/structure/machinery/light{ @@ -8395,6 +9645,15 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/bridge) +"ept" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor) "epI" = ( /turf/open/floor/corsat{ dir = 8; @@ -8407,9 +9666,13 @@ /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) "epS" = ( -/obj/structure/prop/dam/truck/cargo, -/turf/open/floor/plating/plating_catwalk/prison, -/area/lv522/atmos/north_command_centre) +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/east) "epX" = ( /obj/item/storage/firstaid/toxin/empty, /obj/effect/decal/cleanable/dirt, @@ -8418,21 +9681,6 @@ icon_state = "white_cyan2" }, /area/lv522/indoors/a_block/medical/glass) -"eqb" = ( -/obj/structure/largecrate/random/mini{ - pixel_x = -8; - pixel_y = -8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/lv522/outdoors/colony_streets/north_street) "eqe" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -8455,6 +9703,13 @@ icon_state = "squares" }, /area/lv522/atmos/east_reactor) +"eqD" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/filt) "eqE" = ( /turf/open/floor/prison{ dir = 10; @@ -8473,6 +9728,10 @@ icon_state = "brown" }, /area/lv522/atmos/north_command_centre) +"eqV" = ( +/obj/structure/largecrate/random/barrel, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "erw" = ( /obj/vehicle/train/cargo/trolley, /obj/effect/landmark/objective_landmark/close, @@ -8511,20 +9770,19 @@ "eso" = ( /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) -"esx" = ( -/obj/structure/platform_decoration{ - dir = 8 +"esw" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/box/matches{ + pixel_y = 8 }, -/turf/open/floor/plating, -/area/lv522/landing_zone_1/tunnel) +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_west_street) "esB" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/floor/corsat{ - icon_state = "squares" - }, -/area/lv522/atmos/north_command_centre) +/turf/closed/wall/mineral/bone_resin, +/area/lv522/oob) "esF" = ( /obj/structure/surface/rack, /turf/open/floor/prison{ @@ -8572,6 +9830,20 @@ icon_state = "white_cyan2" }, /area/lv522/indoors/a_block/medical) +"eum" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper A-Block Canteen Airlock" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Sec-Kitchen-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/kitchen/glass) "eur" = ( /obj/structure/stairs/perspective{ dir = 8; @@ -8595,18 +9867,22 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 }, -/turf/open/floor/corsat{ - icon_state = "squares" +/turf/closed/wall/mineral/bone_resin, +/area/lv522/oob) +"euT" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" }, -/area/lv522/atmos/north_command_centre) +/obj/vehicle/train/cargo/engine, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "evu" = ( -/obj/structure/prop/maintenance_hatch{ +/obj/structure/tunnel/maint_tunnel{ pixel_y = 6 }, /obj/structure/machinery/light/small{ dir = 1 }, -/obj/structure/barricade/handrail, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) "evv" = ( @@ -8633,6 +9909,15 @@ icon_state = "plate" }, /area/lv522/atmos/east_reactor) +"evN" = ( +/obj/structure/window/framed/strata/reinforced, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/corpo/glass) "evS" = ( /obj/structure/platform, /obj/structure/platform{ @@ -8657,7 +9942,9 @@ /area/lv522/oob) "ewf" = ( /obj/structure/platform, -/turf/open/auto_turf/shale/layer0, +/turf/open/asphalt/cement{ + icon_state = "cement4" + }, /area/lv522/outdoors/colony_streets/south_east_street) "ewm" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -8699,14 +9986,8 @@ dir = 1; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) -"ewY" = ( -/obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/atmos/east_reactor) "exu" = ( /obj/structure/surface/rack, /obj/item/tool/minihoe{ @@ -8736,13 +10017,10 @@ }, /area/lv522/atmos/east_reactor) "exQ" = ( -/obj/structure/prop/maintenance_hatch{ - pixel_y = 6 - }, /obj/structure/machinery/light/small{ dir = 1 }, -/obj/structure/barricade/handrail, +/obj/structure/largecrate, /obj/effect/landmark/lv624/fog_blocker/short, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) @@ -8769,6 +10047,18 @@ icon_state = "marked" }, /area/lv522/atmos/north_command_centre) +"eym" = ( +/obj/structure/surface/rack, +/obj/item/storage/toolbox/mechanical/green{ + pixel_y = 13 + }, +/obj/item/storage/toolbox/mechanical/green{ + pixel_y = -3 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "eyn" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/asphalt/cement{ @@ -8784,7 +10074,7 @@ /obj/item/stack/tile/wood{ layer = 2.5 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "eyY" = ( /obj/structure/stairs/perspective{ @@ -8829,6 +10119,12 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor/east) +"ezB" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "ezC" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -8851,10 +10147,15 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 8 }, +/obj/effect/landmark/xeno_hive_spawn, +/obj/effect/landmark/ert_spawns/groundside_xeno, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "marked" }, /area/lv522/atmos/east_reactor) +"eAa" = ( +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/lv522/landing_zone_forecon/UD6_Typhoon) "eAg" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -8896,12 +10197,11 @@ }, /area/lv522/indoors/a_block/fitness/glass) "eAF" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - dir = 1; - icon_state = "flammable_pipe_3" +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "brown" }, -/turf/open/floor/corsat, -/area/lv522/atmos/east_reactor) +/area/lv522/atmos/east_reactor/east) "eAX" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/glass/fertilizer, @@ -8918,6 +10218,12 @@ /obj/item/stack/cable_coil/cut, /turf/open/floor/plating, /area/lv522/atmos/east_reactor) +"eBm" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor/south) "eBu" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/computer/PC{ @@ -8929,12 +10235,6 @@ icon_state = "blue_plate" }, /area/lv522/indoors/c_block/mining) -"eBy" = ( -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/corsat{ - icon_state = "plate" - }, -/area/lv522/atmos/east_reactor) "eBA" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -8954,7 +10254,7 @@ /area/lv522/atmos/east_reactor) "eCe" = ( /obj/effect/alien/resin/sticky, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "eCO" = ( /obj/structure/largecrate/random, @@ -8968,12 +10268,6 @@ }, /turf/open/floor/corsat, /area/lv522/atmos/cargo_intake) -"eCP" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/atmos/east_reactor) "eDc" = ( /obj/structure/bed/chair, /obj/structure/machinery/space_heater/radiator/red{ @@ -9010,6 +10304,18 @@ /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison, /area/lv522/indoors/c_block/cargo) +"eDD" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/reactor_garage) "eDI" = ( /obj/structure/machinery/light, /turf/open/floor/prison{ @@ -9027,6 +10333,12 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/garage) +"eDS" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/auto_turf/shale/layer2, +/area/lv522/outdoors/n_rockies) "eEv" = ( /turf/open/floor/prison{ icon_state = "kitchen" @@ -9059,12 +10371,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) -"eFk" = ( -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/atmos/east_reactor) "eFt" = ( /obj/vehicle/train/cargo/engine, /turf/open/floor/prison, @@ -9080,7 +10386,7 @@ /area/lv522/indoors/a_block/medical/glass) "eFP" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/closed/wall, +/turf/closed/wall/strata_outpost, /area/lv522/atmos/east_reactor) "eFT" = ( /obj/item/stack/tile/plasteel{ @@ -9088,10 +10394,10 @@ pixel_x = -2; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "eGs" = ( -/obj/structure/cargo_container/grant/right, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ icon_state = "plate" }, @@ -9113,6 +10419,12 @@ icon_state = "whiteyellowfull" }, /area/lv522/indoors/a_block/corpo/glass) +"eHp" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor) "eHu" = ( /obj/structure/closet/secure_closet/miner, /turf/open/floor/prison{ @@ -9136,6 +10448,11 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/garage) +"eHE" = ( +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/n_rockies) "eHF" = ( /obj/structure/cargo_container/kelland/right, /turf/open/floor/plating, @@ -9197,6 +10514,13 @@ icon_state = "greenfull" }, /area/lv522/indoors/a_block/fitness) +"eIT" = ( +/obj/structure/bed/chair/comfy, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "eJc" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/objective_landmark/close, @@ -9231,6 +10555,16 @@ /obj/item/prop/alien/hugger, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) +"eJq" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 8; + pixel_y = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "eJw" = ( /obj/item/clothing/mask/rebreather{ pixel_x = -7; @@ -9238,6 +10572,10 @@ }, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor) +"eJQ" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/shuttle/dropship/can_surgery/dark_grey, +/area/lv522/landing_zone_forecon/UD6_Typhoon) "eJR" = ( /turf/open/floor/prison, /area/lv522/outdoors/colony_streets/windbreaker/observation) @@ -9281,12 +10619,40 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/b_block/bar) +"eKK" = ( +/obj/structure/blocker/forcefield/vehicles, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/east_reactor/south) "eKL" = ( /obj/structure/bed/chair{ dir = 1 }, /turf/open/floor/prison, /area/lv522/indoors/b_block/hydro) +"eLf" = ( +/turf/open/asphalt/cement{ + icon_state = "cement4" + }, +/area/lv522/landing_zone_2) +"eLl" = ( +/obj/structure/machinery/door/airlock/almayer/medical{ + dir = 2; + name = "\improper A-Block - Colony Medical Centre Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/medical) +"eLx" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/east_reactor) "eLG" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = -19; @@ -9294,6 +10660,20 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) +"eLK" = ( +/obj/structure/showcase{ + desc = "The display model for a Weyland Yutani generation one synthetic. It almost feels like the eyes on this one follow you."; + icon = 'icons/mob/humans/species/r_synthetic.dmi'; + icon_state = "Synthetic_Template"; + name = "Display synthetic" + }, +/obj/structure/window/reinforced, +/obj/structure/sign/safety/synth_storage{ + pixel_x = 23; + pixel_y = 29 + }, +/turf/open/floor/bluegrid, +/area/lv522/indoors/a_block/corpo/glass) "eLN" = ( /obj/structure/machinery/light, /turf/open/floor{ @@ -9301,15 +10681,15 @@ icon_state = "whiteyellowfull" }, /area/lv522/indoors/a_block/corpo/glass) +"eLU" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/reactor_garage) "eLV" = ( -/obj/structure/barricade/handrail{ - dir = 1 - }, -/turf/open/floor/corsat{ - dir = 5; - icon_state = "brown" - }, -/area/lv522/atmos/east_reactor) +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat, +/area/lv522/oob) "eLZ" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ name = "\improper Cargo Bay Quartermaster" @@ -9344,10 +10724,11 @@ }, /area/lv522/atmos/east_reactor) "eMm" = ( -/obj/structure/largecrate/random/case, +/obj/structure/prop/invuln/fusion_reactor, +/obj/structure/prop/turbine_extras, +/obj/structure/prop/turbine_extras, /turf/open/floor/corsat{ - dir = 8; - icon_state = "brown" + icon_state = "plate" }, /area/lv522/atmos/east_reactor) "eMz" = ( @@ -9378,6 +10759,18 @@ icon_state = "cement12" }, /area/lv522/outdoors/colony_streets/south_street) +"eNc" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper C-Block - Cargo Airlock"; + welded = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/cargo) "eNf" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/spawner/gibspawner/xeno, @@ -9414,9 +10807,6 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - icon_state = "flammable_pipe_2" - }, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "eOj" = ( @@ -9455,8 +10845,19 @@ /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) +"eOT" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/machinery/power/apc/weak{ + dir = 1 + }, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "eOU" = ( /obj/structure/machinery/light{ dir = 4 @@ -9490,7 +10891,7 @@ /obj/structure/prop/invuln/ice_prefab{ dir = 5 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "ePK" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -9549,13 +10950,12 @@ }, /area/lv522/indoors/a_block/hallway) "eRg" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - dir = 1; - icon_state = "flammable_pipe_3" +/obj/structure/prop/turbine, +/obj/structure/prop/turbine_extras/border, +/turf/open/floor/corsat{ + icon_state = "plate" }, -/turf/open/floor/corsat, -/area/lv522/atmos/east_reactor) +/area/lv522/oob) "eRI" = ( /obj/structure/barricade/deployable{ dir = 8 @@ -9615,6 +11015,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/c_block/cargo) +"eTn" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "eTu" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -9625,19 +11031,12 @@ /obj/effect/landmark/lv624/fog_blocker/short, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) -"eTw" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" - }, -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "UD6 East"; - indestructible = 1 +"eTQ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 }, -/turf/open/floor/plating, -/area/lv522/landing_zone_forecon/UD6_Tornado) +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/sewer) "eTZ" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -9670,6 +11069,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ icon_state = "plate" }, @@ -9680,6 +11080,20 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_west_street) +"eUz" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper B-Block - Hydroponics Airlock" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "LV_522_Hydro-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/b_block/bridge) "eUO" = ( /turf/open/floor/corsat{ icon_state = "marked" @@ -9716,12 +11130,11 @@ }, /area/lv522/atmos/north_command_centre) "eVi" = ( -/obj/structure/barricade/handrail, -/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - icon_state = "plate" + icon_state = "brown" }, -/area/lv522/atmos/east_reactor) +/area/lv522/atmos/east_reactor/north) "eVW" = ( /obj/effect/landmark/monkey_spawn, /turf/open/floor/corsat{ @@ -9733,6 +11146,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -9745,15 +11159,36 @@ icon_state = "plate" }, /area/lv522/atmos/east_reactor/east) +"eWF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/firstaid/adv{ + layer = 3.1; + pixel_x = 3; + pixel_y = -2 + }, +/obj/structure/surface/rack, +/obj/item/storage/firstaid/adv{ + pixel_y = 14 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/indoors/a_block/security) "eWK" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 }, /turf/open/floor/corsat{ - dir = 8; + dir = 10; icon_state = "brown" }, /area/lv522/atmos/east_reactor/east) +"eWR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/landing_zone_2) "eWW" = ( /obj/structure/window_frame/strata, /obj/structure/pipes/standard/simple/hidden/green{ @@ -9779,13 +11214,11 @@ }, /area/lv522/indoors/a_block/kitchen) "eXe" = ( -/obj/structure/cargo_container/grant/right{ - layer = 3.1 - }, -/turf/closed/wall/mineral/bone_resin, -/area/lv522/atmos/north_command_centre) +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/west) "eXG" = ( -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "eXO" = ( /obj/structure/prop/invuln/ice_prefab{ @@ -9799,11 +11232,23 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/nw_rockies) +"eXU" = ( +/obj/structure/machinery/power/terminal, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/plating, +/area/lv522/indoors/lone_buildings/engineering) "eXV" = ( /obj/structure/cargo_container/horizontal/blue/bottom{ pixel_x = 16 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "eYh" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -9816,9 +11261,6 @@ }, /area/lv522/indoors/a_block/medical/glass) "eYA" = ( -/obj/item/weapon/gun/rifle/sniper/M42A{ - current_mag = null - }, /obj/item/clothing/head/headband/tan{ pixel_x = -10; pixel_y = 13 @@ -9829,25 +11271,29 @@ /turf/closed/wall/strata_outpost/reinforced, /area/lv522/landing_zone_1/tunnel) "eYT" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 10 - }, /obj/structure/prop/ice_colony/ground_wire{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) +"eZb" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/reactor_garage) "eZe" = ( /turf/open/asphalt/cement{ icon_state = "cement14" }, /area/lv522/outdoors/colony_streets/south_east_street) "eZq" = ( -/obj/structure/cargo_container/kelland/left, +/obj/structure/prop/turbine_extras/left, +/obj/structure/prop/invuln/fusion_reactor, /turf/open/floor/corsat{ icon_state = "plate" }, -/area/lv522/atmos/cargo_intake) +/area/lv522/oob) "eZv" = ( /obj/structure/fence, /obj/effect/decal/warning_stripes{ @@ -9857,6 +11303,14 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/n_rockies) +"eZF" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "eZK" = ( /turf/open/floor/prison{ icon_state = "floor_plate" @@ -9905,6 +11359,13 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/south_east_street) +"faJ" = ( +/obj/item/trash/uscm_mre{ + pixel_x = 12; + pixel_y = -7 + }, +/turf/open/floor/prison, +/area/lv522/outdoors/colony_streets/north_street) "faK" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/corsat{ @@ -9916,7 +11377,7 @@ dir = 8; pixel_x = 6 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "faZ" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -9943,7 +11404,6 @@ /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_east_street) "fbC" = ( -/obj/structure/barricade/handrail, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ icon_state = "brown" @@ -9964,18 +11424,10 @@ /obj/structure/platform{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/colony_streets/south_east_street) -"fbY" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" - }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "UD6 East"; - indestructible = 1 +/turf/open/asphalt/cement{ + icon_state = "cement3" }, -/turf/open/floor/plating, -/area/lv522/landing_zone_forecon/UD6_Tornado) +/area/lv522/outdoors/colony_streets/south_east_street) "fcd" = ( /obj/vehicle/train/cargo/trolley, /turf/open/floor/prison{ @@ -10012,6 +11464,21 @@ icon_state = "brown" }, /area/lv522/atmos/north_command_centre) +"fdb" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper C-Block - Casino Airlock"; + welded = 1 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/casino) +"fdf" = ( +/turf/open/asphalt/cement{ + icon_state = "cement15" + }, +/area/lv522/landing_zone_2) "fdh" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = 11; @@ -10024,16 +11491,22 @@ /obj/item/trash/plate, /turf/open/floor/carpet, /area/lv522/indoors/b_block/bar) -"fdt" = ( -/obj/docking_port/stationary/marine_dropship/lz2{ - name = "Southeast Landing Zone" +"fdC" = ( +/obj/structure/machinery/light{ + dir = 4 }, -/turf/open/floor/plating, -/area/shuttle/drop2/lv522) +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/filt) "fdE" = ( -/obj/structure/blocker/invisible_wall, -/turf/closed/wall/mineral/bone_resin, -/area/lv522/oob) +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "fdR" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -10042,6 +11515,11 @@ icon_state = "plate" }, /area/lv522/atmos/north_command_centre) +"fdS" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/item/stack/rods, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_east_street) "fdT" = ( /obj/structure/closet/crate, /turf/open/floor/prison{ @@ -10074,6 +11552,20 @@ icon_state = "plate" }, /area/lv522/atmos/east_reactor/west) +"feS" = ( +/obj/item/prop/colony/used_flare, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) +"feZ" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/east) "ffb" = ( /turf/open/floor/prison{ icon_state = "darkbrownfull2" @@ -10099,6 +11591,18 @@ icon_state = "floor3" }, /area/lv522/outdoors/colony_streets/south_street) +"ffr" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor/west) +"ffG" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/girder, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_east_street) "ffL" = ( /obj/item/clothing/mask/facehugger{ desc = "It has some sort of a tube at the end of its tail. What the hell is this thing?"; @@ -10109,6 +11613,20 @@ }, /turf/open/floor/prison, /area/lv522/landing_zone_2) +"ffO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transmitter/colony_net{ + dir = 8; + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Colony Medical"; + pixel_x = 16 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/lv522/indoors/a_block/medical/glass) "fgf" = ( /obj/item/ammo_magazine/m2c{ current_rounds = 0; @@ -10129,7 +11647,7 @@ pixel_x = 1; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "fgB" = ( /obj/item/lightstick/red/spoke/planted{ @@ -10181,10 +11699,8 @@ }, /area/lv522/atmos/cargo_intake) "fib" = ( -/obj/structure/barricade/handrail, -/turf/open/floor/corsat{ - icon_state = "plate" - }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "fiu" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -10194,12 +11710,20 @@ /turf/open/floor/prison, /area/lv522/indoors/c_block/cargo) "fiA" = ( -/obj/structure/barricade/handrail, +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ - dir = 10; - icon_state = "brown" + icon_state = "plate" }, -/area/lv522/atmos/east_reactor) +/area/lv522/atmos/east_reactor/east) +"fiB" = ( +/obj/structure/prop/invuln/ice_prefab{ + dir = 9 + }, +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + icon_state = "solarpanel1" + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/w_rockies) "fiG" = ( /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/dirt, @@ -10277,24 +11801,15 @@ /obj/structure/window, /turf/open/floor/prison, /area/lv522/indoors/c_block/casino) -"fkq" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/turf/open/floor/corsat{ - icon_state = "browncorner" - }, -/area/lv522/atmos/east_reactor) "fkB" = ( /obj/structure/barricade/deployable, /obj/effect/decal/cleanable/blood, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) -"fkL" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, -/turf/open/floor/corsat, -/area/lv522/atmos/east_reactor/south) +"fkD" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/auto_turf/shale/layer2, +/area/lv522/outdoors/colony_streets/north_west_street) "fkP" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -10306,21 +11821,12 @@ }, /area/lv522/indoors/b_block/bridge) "fkW" = ( -/obj/structure/barricade/handrail, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/corsat{ - dir = 6; + dir = 1; icon_state = "brown" }, /area/lv522/atmos/east_reactor) -"fla" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 5 - }, -/turf/open/floor/corsat{ - dir = 8; - icon_state = "brown" - }, -/area/lv522/atmos/east_reactor/east) "fld" = ( /mob/living/simple_animal/mouse, /turf/open/floor/prison, @@ -10337,6 +11843,17 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) +"flC" = ( +/obj/structure/machinery/light/small, +/obj/structure/machinery/camera/autoname{ + dir = 1; + network = list("interrogation") + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/lv522/indoors/lone_buildings/engineering) "flI" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/ashtray/bronze{ @@ -10348,14 +11865,6 @@ /obj/item/weapon/gun/revolver/m44/custom/pkd_special/k2049, /turf/open/floor/wood, /area/lv522/indoors/a_block/security) -"fmg" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/bridges/corpo) "fms" = ( /obj/structure/bed/chair/comfy, /obj/effect/decal/cleanable/dirt, @@ -10366,15 +11875,15 @@ dir = 10 }, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "plate" }, /area/lv522/atmos/east_reactor/east) "fmB" = ( -/obj/structure/cargo_container/kelland/right, /turf/open/floor/corsat{ - icon_state = "plate" + dir = 1; + icon_state = "brown" }, -/area/lv522/atmos/cargo_intake) +/area/lv522/oob) "fmH" = ( /obj/structure/pipes/vents/pump, /obj/effect/decal/cleanable/dirt, @@ -10406,7 +11915,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "S" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "fnm" = ( /obj/structure/surface/table/almayer, @@ -10420,19 +11929,31 @@ "fnA" = ( /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/south_west_street) +"fnF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, +/obj/item/toy/beach_ball, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = 9; + pixel_y = 17 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/lv522/indoors/a_block/fitness) "fol" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, /turf/open/floor/corsat{ dir = 9; icon_state = "brown" }, /area/lv522/atmos/filt) "fop" = ( -/obj/item/clipboard, -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - icon_state = "flammable_pipe_2" - }, /turf/open/floor/corsat, -/area/lv522/atmos/east_reactor) +/area/lv522/atmos/west_reactor) "foO" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/corsat, @@ -10477,6 +11998,12 @@ icon_state = "kitchen" }, /area/lv522/indoors/a_block/kitchen) +"fpm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor/south) "fpn" = ( /obj/item/device/analyzer, /turf/open/floor/corsat, @@ -10514,12 +12041,6 @@ icon_state = "brown" }, /area/lv522/atmos/north_command_centre) -"fpS" = ( -/obj/item/prop/helmetgarb/helmet_nvg/marsoc, -/turf/open/floor/corsat{ - icon_state = "plate" - }, -/area/lv522/oob) "fpW" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -10537,17 +12058,16 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/dorms/glass) -"frc" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "Sec-Kitchen-Lockdown"; - name = "\improper Storm Shutters" +"fqU" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - icon_state = "marked" + icon_state = "plate" }, -/area/lv522/indoors/a_block/kitchen) +/area/lv522/atmos/east_reactor/south) "frH" = ( /obj/item/clothing/head/hardhat/dblue{ layer = 6.1; @@ -10566,8 +12086,8 @@ }, /area/lv522/atmos/east_reactor/west) "frZ" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 4 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 }, /turf/open/floor/corsat{ icon_state = "squares" @@ -10585,6 +12105,7 @@ /obj/structure/machinery/power/apc/weak{ dir = 1 }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ icon_state = "plate" }, @@ -10619,15 +12140,19 @@ /turf/open/floor/prison, /area/lv522/atmos/cargo_intake) "fsV" = ( -/obj/structure/surface/table/almayer, +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ - icon_state = "plate" + icon_state = "marked" }, -/area/lv522/atmos/east_reactor) +/area/lv522/atmos/north_command_centre) "ftd" = ( /obj/structure/bed/chair{ dir = 1 }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/outdoors/colony_streets/windbreaker/observation) "ftl" = ( @@ -10639,8 +12164,21 @@ /obj/structure/barricade/wooden{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) +"fts" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/effect/decal/cleanable/dirt, +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/tool/pen/blue/clicky, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/lv522/atmos/way_in_command_centre) "ftA" = ( /obj/structure/surface/table/almayer, /obj/structure/platform{ @@ -10650,6 +12188,14 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"ftD" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper A-Block Fitness Centre Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/fitness/glass) "ftK" = ( /obj/structure/bed/chair, /turf/open/floor/plating, @@ -10667,7 +12213,7 @@ dir = 5 }, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "plate" }, /area/lv522/atmos/east_reactor/east) "ful" = ( @@ -10683,6 +12229,12 @@ /obj/item/prop/colony/used_flare, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) +"fuw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_west_street) "fuQ" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 @@ -10729,17 +12281,18 @@ /turf/open/floor/prison, /area/lv522/indoors/c_block/cargo) "fvQ" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - dir = 5 +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "browncorner" }, -/turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "fvV" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "fvX" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ @@ -10814,11 +12367,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/corsat{ - icon_state = "squares" - }, +/turf/open/floor/plating/plating_catwalk/prison, /area/lv522/atmos/east_reactor/south) "fxl" = ( /obj/vehicle/train/cargo/engine, @@ -10827,9 +12376,9 @@ }, /area/lv522/indoors/c_block/cargo) "fxq" = ( -/obj/structure/closet/crate/radiation, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - icon_state = "marked" + icon_state = "plate" }, /area/lv522/atmos/east_reactor/west) "fxZ" = ( @@ -10913,31 +12462,33 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/b_block/bridge) -"fzx" = ( -/obj/structure/barricade/handrail{ - dir = 8 - }, -/obj/structure/barricade/handrail, -/turf/open/floor/corsat{ - dir = 10; - icon_state = "brown" - }, -/area/lv522/atmos/east_reactor) -"fzz" = ( -/obj/structure/barricade/handrail{ - dir = 4 - }, -/obj/structure/barricade/handrail, +"fzu" = ( /turf/open/floor/corsat{ - dir = 6; + dir = 9; icon_state = "brown" }, -/area/lv522/atmos/east_reactor) +/area/lv522/atmos/reactor_garage) "fzC" = ( /turf/closed/shuttle/dropship2/tornado{ icon_state = "28" }, /area/lv522/landing_zone_forecon/UD6_Tornado) +"fzE" = ( +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/indoors/a_block/dorm_north) +"fzK" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "fzL" = ( /turf/open/floor/corsat{ dir = 4; @@ -10958,6 +12509,12 @@ }, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/north_east_street) +"fAt" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) "fAx" = ( /obj/structure/filingcabinet{ density = 0; @@ -10999,6 +12556,20 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) +"fAY" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper A-Block Fitness Centre Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/fitness) +"fBg" = ( +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/reactor_garage) "fBp" = ( /turf/open/asphalt/cement{ icon_state = "cement15" @@ -11022,12 +12593,27 @@ icon_state = "fake_wood" }, /area/lv522/atmos/east_reactor/east) +"fBR" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/south_east_street) "fBU" = ( -/obj/structure/cargo_container/kelland/right, +/obj/structure/cargo_container/horizontal/blue/top, +/obj/structure/machinery/light{ + dir = 1 + }, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "plate" }, /area/lv522/atmos/cargo_intake) +"fBY" = ( +/obj/item/prop/colony/used_flare, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/colony_streets/north_street) "fCb" = ( /obj/structure/platform{ dir = 1 @@ -11072,9 +12658,9 @@ icon_state = "gib6" }, /turf/open/asphalt/cement{ - icon_state = "cement12" + icon_state = "cement4" }, -/area/lv522/outdoors/colony_streets/south_west_street) +/area/lv522/outdoors/colony_streets/central_streets) "fCW" = ( /turf/open/floor/prison{ icon_state = "darkbrownfull2" @@ -11143,11 +12729,11 @@ }, /area/lv522/indoors/b_block/hydro) "fDC" = ( -/obj/structure/prop/server_equipment/laptop/on{ - layer = 3.1; - pixel_y = 10 +/obj/structure/prop/ice_colony/ground_wire, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "squares" }, -/turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "fDF" = ( /obj/structure/surface/rack, @@ -11171,14 +12757,18 @@ }, /area/lv522/atmos/east_reactor) "fDS" = ( -/obj/structure/machinery/power/apc/weak{ - dir = 1 +/obj/structure/machinery/conveyor{ + dir = 5; + id = "cargo_container" + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/structure/machinery/light{ + dir = 8 }, /turf/open/floor/corsat{ - dir = 1; - icon_state = "brown" + icon_state = "plate" }, -/area/lv522/atmos/west_reactor) +/area/lv522/atmos/cargo_intake) "fEe" = ( /obj/structure/platform, /obj/effect/decal/cleanable/dirt, @@ -11211,6 +12801,7 @@ /area/lv522/outdoors/colony_streets/south_east_street) "fFp" = ( /obj/item/clothing/gloves/yellow, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "fFw" = ( @@ -11265,6 +12856,10 @@ icon_state = "marked" }, /area/lv522/indoors/b_block/hydro) +"fGw" = ( +/obj/effect/spawner/gibspawner/xeno, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "fGH" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -11292,6 +12887,16 @@ icon_state = "plate" }, /area/lv522/atmos/north_command_centre) +"fHf" = ( +/obj/structure/platform, +/obj/structure/reagent_dispensers/watertank{ + layer = 2.9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) "fHy" = ( /obj/structure/barricade/wooden{ dir = 4 @@ -11316,6 +12921,16 @@ icon_state = "white_cyan2" }, /area/lv522/indoors/a_block/executive) +"fHH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "fIa" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -11357,6 +12972,7 @@ /area/lv522/indoors/a_block/kitchen/glass) "fIQ" = ( /obj/structure/blocker/forcefield/vehicles, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -11367,35 +12983,44 @@ icon_state = "brown" }, /area/lv522/atmos/north_command_centre) +"fJg" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/indoors/a_block/corpo/glass) "fJq" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/a_block/kitchen) +"fJr" = ( +/obj/structure/barricade/wooden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "fKf" = ( +/obj/structure/platform{ + dir = 1 + }, /turf/open/asphalt/cement{ icon_state = "cement12" }, /area/lv522/outdoors/colony_streets/north_east_street) "fKt" = ( -/obj/structure/largecrate/random/barrel, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ icon_state = "marked" }, /area/lv522/atmos/east_reactor/west) "fKu" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" +/obj/structure/largecrate, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" }, -/area/lv522/indoors/a_block/fitness) +/area/lv522/atmos/cargo_intake) "fLa" = ( /turf/closed/shuttle/dropship2/tornado{ icon_state = "47" @@ -11414,9 +13039,13 @@ }, /area/lv522/indoors/a_block/admin) "fLi" = ( +/obj/item/tool/warning_cone{ + pixel_x = -10; + pixel_y = 11 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - dir = 4; - icon_state = "browncorner" + icon_state = "plate" }, /area/lv522/atmos/east_reactor/west) "fLz" = ( @@ -11440,6 +13069,12 @@ }, /turf/closed/wall/strata_ice/dirty, /area/lv522/oob) +"fLA" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor) "fLF" = ( /obj/structure/machinery/door/poddoor/almayer/closed{ dir = 4; @@ -11468,9 +13103,7 @@ /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) "fLP" = ( -/obj/structure/barricade/handrail{ - dir = 1 - }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ dir = 1; icon_state = "brown" @@ -11480,12 +13113,24 @@ /obj/structure/prop/dam/crane, /turf/open/floor/prison, /area/lv522/atmos/outdoor) +"fLZ" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 2; + name = "\improper B-Block Bar" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/b_block/bar) "fMd" = ( /obj/structure/prop/invuln/overhead/flammable_pipe/fly{ dir = 8; pixel_x = -20 }, -/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 8 + }, /turf/open/floor/corsat{ icon_state = "plate" }, @@ -11496,6 +13141,9 @@ icon_state = "flammable_pipe_3"; pixel_x = -20 }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, /turf/open/floor/corsat{ icon_state = "squares" }, @@ -11550,6 +13198,16 @@ icon_state = "browncorner" }, /area/lv522/atmos/east_reactor) +"fNk" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/bed/chair, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "fNm" = ( /obj/effect/landmark/monkey_spawn, /turf/open/floor/carpet, @@ -11652,6 +13310,24 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"fQi" = ( +/obj/item/prop/colony/canister{ + dir = 8; + layer = 3.1; + pixel_y = 16 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/reactor_garage) +"fQD" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "fRc" = ( /obj/structure/machinery/mill, /turf/open/floor/prison{ @@ -11691,7 +13367,7 @@ desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "fRS" = ( /obj/effect/decal/cleanable/dirt, @@ -11709,6 +13385,18 @@ icon_state = "squares" }, /area/lv522/atmos/east_reactor/east) +"fSf" = ( +/obj/structure/blocker/invisible_wall, +/turf/closed/wall/strata_outpost/reinforced, +/area/lv522/atmos/sewer) +"fSj" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "fSo" = ( /obj/effect/landmark/lv624/fog_blocker/short, /obj/structure/machinery/landinglight/ds1, @@ -11725,10 +13413,16 @@ }, /area/lv522/indoors/a_block/dorms) "fSv" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" +/obj/structure/surface/table/almayer, +/obj/item/clothing/head/beret/eng, +/obj/item/ammo_box/magazine/nailgun/empty{ + pixel_x = -6; + pixel_y = 12 }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/turf/open/floor/prison, /area/lv522/indoors/lone_buildings/engineering) "fSR" = ( /obj/structure/surface/table/almayer, @@ -11771,9 +13465,7 @@ /obj/structure/stairs/perspective{ icon_state = "p_stair_full" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_middle, /area/lv522/landing_zone_forecon/UD6_Tornado) "fTs" = ( /turf/open/floor/corsat{ @@ -11781,16 +13473,6 @@ icon_state = "brown" }, /area/lv522/atmos/west_reactor) -"fTK" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Corporation Dome"; - req_access_txt = "100" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/corpo) "fTN" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -11850,6 +13532,18 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"fVC" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_y = -6 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_y = 10 + }, +/obj/structure/barricade/wooden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "fVU" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 1 @@ -11862,9 +13556,33 @@ icon_state = "cement3" }, /area/lv522/outdoors/colony_streets/central_streets) +"fWD" = ( +/obj/item/stack/folding_barricade, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "fWG" = ( /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/south_east_street) +"fWH" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper A-Block Kitchen Airlock" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Sec-Kitchen-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/kitchen) "fWW" = ( /obj/structure/prop/ice_colony/ground_wire{ dir = 1 @@ -11877,7 +13595,7 @@ pixel_x = 7; pixel_y = 17 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "fXa" = ( /obj/structure/machinery/vending/snack, @@ -11891,6 +13609,13 @@ icon_state = "19" }, /area/lv522/landing_zone_forecon/UD6_Tornado) +"fXs" = ( +/obj/structure/blocker/forcefield/vehicles, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/filt) "fXv" = ( /obj/structure/prop/ice_colony/ground_wire{ dir = 8 @@ -11935,11 +13660,12 @@ }, /area/lv522/atmos/cargo_intake) "fXU" = ( -/turf/open/floor/corsat{ - dir = 10; - icon_state = "brown" +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/area/lv522/atmos/east_reactor/west) +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor) "fXZ" = ( /obj/structure/curtain/medical, /turf/open/floor/strata{ @@ -11984,7 +13710,7 @@ /turf/open/gm/river, /area/lv522/landing_zone_1/tunnel) "fYP" = ( -/obj/structure/largecrate/random/barrel, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ icon_state = "brown" }, @@ -12001,11 +13727,35 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/t_comm) +"fZl" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/cameras/wooden_tv{ + desc = "An old TV hooked up to a video cassette recorder, you can even use it to time shift WOW."; + layer = 3.2; + name = "Television set"; + network = null; + pixel_x = -3; + pixel_y = 6 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/lv522/indoors/a_block/fitness) +"fZo" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 8; + pixel_x = -6; + pixel_y = 6 + }, +/obj/structure/closet/firecloset/full, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "fZy" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 10 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_street) "fZA" = ( /obj/structure/largecrate/random/barrel/red, @@ -12023,9 +13773,12 @@ }, /area/lv522/indoors/c_block/mining) "gat" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe/fly, -/turf/open/floor/corsat, -/area/lv522/atmos/east_reactor) +/obj/structure/cargo_container/horizontal/blue/middle, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/lv522/atmos/cargo_intake) "gaw" = ( /obj/structure/barricade/deployable{ dir = 1 @@ -12087,6 +13840,13 @@ }, /turf/open/floor/prison, /area/lv522/indoors/c_block/casino) +"gbo" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "gbq" = ( /obj/structure/stairs/perspective{ dir = 10; @@ -12118,11 +13878,12 @@ /turf/open/floor/prison, /area/lv522/atmos/cargo_intake) "gbQ" = ( -/obj/structure/largecrate, -/turf/open/floor/corsat{ - icon_state = "brown" +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 1 }, -/area/lv522/atmos/east_reactor/west) +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor) "gbR" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/strata{ @@ -12139,7 +13900,7 @@ pixel_x = -2; pixel_y = 16 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "gck" = ( /obj/structure/pipes/standard/manifold/hidden/green, @@ -12161,6 +13922,12 @@ icon_state = "marked" }, /area/lv522/atmos/north_command_centre) +"gcr" = ( +/obj/structure/closet/toolcloset, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "gcv" = ( /obj/structure/foamed_metal, /obj/structure/pipes/standard/simple/hidden/green, @@ -12176,9 +13943,15 @@ }, /turf/open/floor/carpet, /area/lv522/indoors/a_block/executive) +"gcX" = ( +/obj/structure/window_frame/strata/reinforced, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/lone_buildings/engineering) "gcY" = ( /obj/structure/cargo_container/ferret/left, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "gdk" = ( /obj/structure/surface/table/almayer, @@ -12195,9 +13968,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) +"gdA" = ( +/obj/structure/barricade/deployable, +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/lv522/outdoors/colony_streets/north_street) "gdJ" = ( -/obj/structure/largecrate/guns/merc, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ + dir = 1; icon_state = "brown" }, /area/lv522/atmos/east_reactor/west) @@ -12216,11 +13997,12 @@ }, /area/lv522/indoors/a_block/admin) "gdX" = ( -/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/structure/machinery/light, /turf/open/floor/corsat{ - icon_state = "brown" + icon_state = "squares" }, -/area/lv522/atmos/east_reactor/west) +/area/lv522/atmos/east_reactor) "gej" = ( /obj/structure/platform, /obj/effect/landmark/lv624/fog_blocker/short, @@ -12243,6 +14025,13 @@ icon_state = "cement2" }, /area/lv522/outdoors/colony_streets/central_streets) +"gem" = ( +/obj/structure/surface/rack, +/obj/item/clothing/head/welding, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "geq" = ( /obj/structure/prop/invuln/overhead/flammable_pipe/fly{ dir = 4; @@ -12288,6 +14077,21 @@ }, /turf/open/floor/carpet, /area/lv522/indoors/b_block/bar) +"geI" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -12; + pixel_y = 25 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) +"geP" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "geT" = ( /obj/structure/prop/invuln/overhead_pipe{ dir = 8; @@ -12303,8 +14107,22 @@ /obj/item/prop/alien/hugger{ pixel_y = 14 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) +"gfl" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 2; + name = "\improper A-Block - Colony Operations Centre Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/hallway) +"gfs" = ( +/obj/item/prop/alien/hugger, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "gfu" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/device/flashlight/lamp/green, @@ -12319,7 +14137,7 @@ pixel_y = 1 }, /obj/structure/cargo_container/ferret/mid, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "gfU" = ( /obj/effect/decal/cleanable/dirt, @@ -12383,6 +14201,12 @@ }, /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) +"gha" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/way_in_command_centre) "ghr" = ( /obj/structure/machinery/door/airlock/almayer/engineering, /turf/open/floor/corsat{ @@ -12421,6 +14245,19 @@ icon_state = "squares" }, /area/lv522/atmos/east_reactor/east) +"gib" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "gif" = ( /obj/item/stack/sheet/metal, /turf/open/floor/prison{ @@ -12438,6 +14275,16 @@ icon_state = "marked" }, /area/lv522/atmos/west_reactor) +"giV" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "giX" = ( /obj/structure/curtain/red, /turf/open/floor/wood, @@ -12459,8 +14306,21 @@ "gjA" = ( /obj/item/prop/alien/hugger, /obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/outdoors/colony_streets/windbreaker/observation) +"gjB" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 1; + pixel_y = 2 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "gjF" = ( /obj/effect/decal/cleanable/dirt, /obj/item/prop/colony/used_flare, @@ -12522,22 +14382,41 @@ icon_state = "floor_plate" }, /area/lv522/indoors/b_block/bar) +"gkH" = ( +/obj/structure/tunnel/maint_tunnel{ + pixel_y = 6 + }, +/obj/structure/machinery/light/small, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "gkY" = ( /obj/structure/closet/bombcloset, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/south_east_street) +"glj" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/cargo_intake) "gll" = ( -/obj/structure/largecrate, +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/structure/machinery/light{ + dir = 1 + }, /turf/open/floor/corsat{ icon_state = "plate" }, -/area/lv522/atmos/command_centre) +/area/lv522/atmos/cargo_intake) "glO" = ( /obj/item/stack/sheet/wood, /obj/effect/decal/warning_stripes{ icon_state = "S" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "glQ" = ( /obj/structure/stairs/perspective{ @@ -12556,11 +14435,19 @@ icon_state = "cement12" }, /area/lv522/outdoors/colony_streets/south_street) +"gmb" = ( +/obj/structure/prop/vehicles/crawler{ + layer = 2.9 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "gme" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "gmt" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -12577,11 +14464,11 @@ /turf/open/gm/river, /area/lv522/outdoors/colony_streets/south_street) "gnd" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/machinery/light, /turf/open/floor/corsat{ - icon_state = "plate" + icon_state = "squares" }, -/area/lv522/atmos/east_reactor/west) +/area/lv522/atmos/east_reactor) "gnf" = ( /obj/structure/machinery/landinglight/ds1/delaythree{ dir = 1 @@ -12603,6 +14490,13 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/mining) +"gnx" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/cargo_intake) "gny" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison{ @@ -12627,7 +14521,7 @@ icon_state = "N"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "gou" = ( /turf/open/floor/prison{ @@ -12679,8 +14573,12 @@ dir = 10; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) +"goY" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/w_rockies) "gpi" = ( /obj/structure/reagent_dispensers/fueltank, /obj/effect/decal/cleanable/dirt, @@ -12697,6 +14595,15 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/north_west_street) +"gpr" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper C-Block - Cargo Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/cargo) "gpu" = ( /obj/item/fuelCell{ pixel_x = -8; @@ -12713,10 +14620,6 @@ icon_state = "cement12" }, /area/lv522/outdoors/colony_streets/south_west_street) -"gpM" = ( -/obj/structure/girder/displaced, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/colony_streets/north_east_street) "gpN" = ( /obj/effect/spawner/gibspawner/xeno, /turf/open/auto_turf/shale/layer1, @@ -12760,6 +14663,12 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/medical) +"grq" = ( +/obj/structure/barricade/wooden{ + dir = 4 + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/central_streets) "grw" = ( /obj/effect/decal/cleanable/dirt, /obj/item/shard{ @@ -12819,15 +14728,15 @@ icon_state = "SE-out"; pixel_x = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "gsS" = ( /obj/effect/decal/cleanable/blood/drip, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "gsZ" = ( /obj/structure/cargo_container/horizontal/blue/top, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "gtr" = ( /obj/structure/machinery/light{ @@ -12842,7 +14751,7 @@ /area/lv522/indoors/c_block/t_comm) "gts" = ( /obj/structure/tunnel, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/east_central_street) "gtt" = ( /obj/structure/filingcabinet{ @@ -12859,6 +14768,29 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/casino) +"gtH" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/machinery/disposal, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/indoors/a_block/dorm_north) +"gtS" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/auto_turf/shale/layer2, +/area/lv522/outdoors/n_rockies) +"gtX" = ( +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "gug" = ( /obj/structure/cargo_container/horizontal/blue/bottom, /turf/open/floor/plating{ @@ -12871,7 +14803,7 @@ /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) "gul" = ( -/obj/structure/prop/maintenance_hatch{ +/obj/structure/tunnel/maint_tunnel{ pixel_y = 6 }, /turf/open/floor/prison{ @@ -12892,6 +14824,18 @@ icon_state = "kitchen" }, /area/lv522/indoors/b_block/bar) +"guE" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 9 + }, +/turf/open/asphalt/cement, +/area/lv522/outdoors/colony_streets/north_east_street) "guH" = ( /obj/structure/machinery/light{ dir = 4 @@ -12913,6 +14857,16 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/kitchen) +"gvk" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "gvr" = ( /obj/structure/closet/bodybag, /obj/structure/curtain/medical, @@ -12922,18 +14876,18 @@ }, /area/lv522/indoors/a_block/medical/glass) "gvs" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - dir = 1; - pixel_y = 6 +/obj/structure/machinery/space_heater, +/obj/item/reagent_container/food/drinks/coffee{ + pixel_x = 5; + pixel_y = 9 }, /turf/open/floor/corsat{ - dir = 8; - icon_state = "brown" + icon_state = "plate" }, -/area/lv522/atmos/east_reactor) +/area/lv522/atmos/cargo_intake) "gvG" = ( /obj/item/toy/beach_ball/holoball, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "gvH" = ( /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -12952,29 +14906,28 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/bridges/corpo) -"gwg" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "LV_522_Hydro-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/b_block/bridge) "gwk" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - pixel_y = 6 - }, -/turf/open/floor/corsat{ - dir = 4; - icon_state = "brown" +/obj/structure/cable/heavyduty{ + icon_state = "4-8" }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/plating, /area/lv522/atmos/east_reactor) "gwt" = ( /obj/structure/cargo_container/wy/right, /turf/open/floor/prison, /area/lv522/atmos/cargo_intake) +"gwC" = ( +/obj/effect/alien/resin/sticky, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) +"gwH" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/prop/colony/used_flare, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "gwK" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -13002,6 +14955,17 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/security) +"gxb" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 8; + pixel_y = 3 + }, +/obj/structure/pipes/vents/pump, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/reactor_garage) "gxc" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/snacks/cheeseburger, @@ -13009,10 +14973,6 @@ icon_state = "plate" }, /area/lv522/atmos/command_centre) -"gxe" = ( -/obj/item/stack/sandbags_empty/small_stack, -/turf/open/floor/plating/plating_catwalk/prison, -/area/lv522/indoors/b_block/bridge) "gxl" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/computer/PC, @@ -13059,7 +15019,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "gyb" = ( /obj/effect/decal/cleanable/dirt, @@ -13075,6 +15035,31 @@ icon_state = "plate" }, /area/lv522/atmos/command_centre) +"gyB" = ( +/obj/item/prop/colony/used_flare, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) +"gyC" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) +"gyK" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/north_command_centre) "gzk" = ( /obj/structure/prop/almayer/computers/sensor_computer2, /turf/open/floor/corsat{ @@ -13088,6 +15073,18 @@ /obj/structure/barricade/deployable, /turf/open/floor/prison, /area/lv522/atmos/cargo_intake) +"gzw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1; + pixel_y = -1 + }, +/obj/effect/landmark/corpsespawner/wy/manager, +/turf/open/floor{ + dir = 4; + icon_state = "whiteyellowfull" + }, +/area/lv522/oob/w_y_vault) "gzD" = ( /obj/structure/prop/almayer/computers/sensor_computer3, /turf/open/floor/corsat{ @@ -13119,6 +15116,12 @@ icon_state = "cement4" }, /area/lv522/outdoors/colony_streets/north_east_street) +"gzY" = ( +/obj/structure/largecrate/random, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "gAa" = ( /obj/structure/prop/ice_colony/ground_wire{ dir = 4 @@ -13127,7 +15130,7 @@ pixel_x = -9; pixel_y = 25 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "gAJ" = ( /obj/structure/surface/table/almayer, @@ -13140,8 +15143,15 @@ /obj/structure/prop/invuln/ice_prefab{ dir = 10 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) +"gAS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "gAU" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -13172,7 +15182,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "gBi" = ( /obj/structure/cargo_container/watatsumi/right, @@ -13182,7 +15192,7 @@ /obj/item/seeds/riceseed, /obj/structure/closet/crate, /obj/item/seeds/riceseed, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "gBy" = ( /obj/effect/decal/warning_stripes{ @@ -13232,14 +15242,14 @@ /turf/open/floor/wood, /area/lv522/indoors/a_block/executive) "gCV" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 +/obj/structure/machinery/conveyor{ + dir = 10; + id = "cargo_container" }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "plate" }, -/turf/open/floor/corsat, /area/lv522/atmos/cargo_intake) "gDz" = ( /obj/structure/barricade/wooden{ @@ -13281,28 +15291,16 @@ icon_state = "marked" }, /area/lv522/indoors/c_block/cargo) -"gEA" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass{ - dir = 8; - name = "\improper Marshall Head Office" - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "Sec-Kitchen-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/security) +"gEx" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "gEB" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "gEQ" = ( /obj/structure/surface/table/almayer, @@ -13358,6 +15356,10 @@ }, /turf/open/floor/prison, /area/lv522/indoors/c_block/casino) +"gFy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/lone_buildings/storage_blocks) "gFD" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/faxmachine, @@ -13397,6 +15399,13 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/garage) +"gGg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "gGk" = ( /obj/structure/prop/server_equipment/yutani_server, /turf/open/floor/corsat{ @@ -13459,6 +15468,14 @@ icon_state = "cement2" }, /area/lv522/outdoors/colony_streets/north_west_street) +"gHD" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/asphalt/cement{ + icon_state = "cement1" + }, +/area/lv522/outdoors/colony_streets/north_street) "gHF" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -13502,7 +15519,9 @@ /area/lv522/outdoors/colony_streets/south_east_street) "gIr" = ( /obj/structure/platform_decoration, -/turf/open/auto_turf/shale/layer0, +/turf/open/asphalt/cement{ + icon_state = "cement2" + }, /area/lv522/outdoors/colony_streets/south_east_street) "gIv" = ( /obj/structure/cargo_container/ferret/left, @@ -13517,6 +15536,15 @@ icon_state = "brown" }, /area/lv522/atmos/cargo_intake) +"gIZ" = ( +/obj/structure/bed/chair/comfy{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "gJm" = ( /obj/structure/cargo_container/ferret/mid, /turf/open/floor/prison, @@ -13541,6 +15569,13 @@ icon_state = "cement3" }, /area/lv522/outdoors/nw_rockies) +"gJK" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/reactor_garage) "gJL" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spider/spiderling/nogrow, @@ -13558,6 +15593,12 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/cargo) +"gKa" = ( +/obj/structure/machinery/colony_floodlight, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/outdoors/colony_streets/south_east_street) "gKg" = ( /obj/structure/platform, /obj/structure/machinery/door/poddoor/almayer/closed{ @@ -13580,6 +15621,15 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor) +"gKM" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor) "gKO" = ( /obj/structure/machinery/colony_floodlight{ layer = 4.3 @@ -13618,16 +15668,6 @@ /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison, /area/lv522/indoors/a_block/security) -"gLw" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "Sec-Corpo-Bridge-Lockdown" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/security) "gLK" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -13641,6 +15681,7 @@ "gLV" = ( /obj/structure/prop/server_equipment/yutani_server/broken{ density = 0; + layer = 3.5; pixel_y = 16 }, /obj/effect/decal/cleanable/dirt, @@ -13659,7 +15700,19 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/n_rockies) +"gMe" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 9 + }, +/turf/open/asphalt/cement, /area/lv522/outdoors/n_rockies) "gMy" = ( /obj/structure/stairs/perspective{ @@ -13701,6 +15754,9 @@ /area/lv522/indoors/a_block/dorms) "gNe" = ( /obj/structure/prop/server_equipment/yutani_server/off, +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor/corsat{ icon_state = "plate" }, @@ -13719,12 +15775,30 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/bridges/op_centre) +"gNs" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "gNJ" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /turf/open/floor/plating, /area/lv522/indoors/a_block/bridges/op_centre) +"gNN" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/lv522/oob/w_y_vault) "gOb" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/dirt, @@ -13735,7 +15809,7 @@ /area/lv522/indoors/b_block/hydro) "gOj" = ( /obj/structure/cargo_container/horizontal/blue/middle, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "gOo" = ( /obj/structure/prop/invuln/fusion_reactor, @@ -13746,10 +15820,9 @@ /area/lv522/atmos/east_reactor) "gOC" = ( /obj/structure/pipes/vents/pump, -/obj/structure/surface/rack, -/obj/item/weapon/shield/riot, -/obj/item/weapon/classic_baton, /obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, +/obj/item/ammo_box/magazine/shotgun/beanbag/empty, /turf/open/floor/prison{ icon_state = "darkredfull2" }, @@ -13777,6 +15850,13 @@ icon_state = "plate" }, /area/lv522/atmos/east_reactor) +"gOJ" = ( +/obj/item/tool/wirecutters{ + pixel_x = -1; + pixel_y = -6 + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/nw_rockies) "gOS" = ( /obj/structure/largecrate/random, /obj/structure/largecrate/random{ @@ -13787,10 +15867,6 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/prison, /area/lv522/indoors/c_block/cargo) -"gOX" = ( -/obj/structure/girder/reinforced, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/colony_streets/north_east_street) "gOZ" = ( /obj/structure/platform_decoration{ dir = 8 @@ -13824,7 +15900,7 @@ /obj/structure/platform_decoration{ dir = 5 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "gPw" = ( /obj/effect/decal/cleanable/dirt, @@ -13836,12 +15912,22 @@ }, /area/lv522/indoors/lone_buildings/outdoor_bot) "gPQ" = ( -/obj/structure/prop/turbine_extras, -/obj/structure/prop/invuln/fusion_reactor, +/obj/structure/machinery/conveyor{ + dir = 5; + id = "cargo_container" + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - icon_state = "plate" + dir = 9; + icon_state = "brown" }, -/area/lv522/atmos/east_reactor) +/area/lv522/atmos/cargo_intake) +"gQu" = ( +/mob/living/simple_animal/cat/kitten{ + dir = 8 + }, +/turf/open/floor/prison, +/area/lv522/indoors/a_block/dorm_north) "gQy" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/cameras/wooden_tv{ @@ -13854,9 +15940,6 @@ icon_state = "greenfull" }, /area/lv522/landing_zone_1/ceiling) -"gQN" = ( -/turf/open/auto_turf/shale/layer0_plate, -/area/lv522/outdoors/w_rockies) "gQV" = ( /obj/structure/platform{ dir = 4 @@ -13867,19 +15950,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) -"gRi" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/metal/large_stack, -/obj/item/ore/uranium, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison, -/area/lv522/indoors/c_block/mining) "gRj" = ( /obj/structure/platform{ dir = 4 }, /obj/item/prop/colony/used_flare, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "gRp" = ( /obj/structure/machinery/floodlight/landing, @@ -13889,7 +15965,7 @@ /area/lv522/landing_zone_2) "gRs" = ( /obj/structure/cargo_container/watatsumi/leftmid, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "gRw" = ( /obj/structure/pipes/standard/manifold/hidden/green{ @@ -13901,8 +15977,16 @@ /obj/structure/platform_decoration{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) +"gRJ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "gRK" = ( /obj/structure/bed/chair/comfy, /turf/open/floor/prison{ @@ -13944,18 +16028,20 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms/glass) +"gTc" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "gTw" = ( /turf/open/floor/corsat{ dir = 6; icon_state = "brown" }, /area/lv522/atmos/north_command_centre) -"gTJ" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 10 - }, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/n_rockies) "gTM" = ( /obj/structure/girder, /turf/open/floor/plating, @@ -14008,7 +16094,7 @@ }, /area/lv522/atmos/east_reactor/east) "gUA" = ( -/obj/structure/machinery/recharge_station, +/obj/structure/closet/secure_closet/engineering_welding, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" @@ -14038,6 +16124,11 @@ }, /turf/closed/wall/shiva/prefabricated/reinforced, /area/lv522/atmos/cargo_intake) +"gVf" = ( +/obj/structure/machinery/landinglight/ds2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/landing_zone_2) "gVg" = ( /obj/effect/decal/cleanable/blood/drip, /obj/effect/decal/cleanable/dirt, @@ -14047,7 +16138,7 @@ /obj/structure/platform_decoration{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "gVr" = ( /obj/effect/decal/cleanable/dirt, @@ -14066,7 +16157,10 @@ /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_west_street) "gVA" = ( -/turf/closed/wall/solaris/reinforced/hull/lv522, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, /area/lv522/landing_zone_2/ceiling) "gWb" = ( /obj/structure/surface/table/almayer, @@ -14080,6 +16174,21 @@ }, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"gWc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/deployable{ + dir = 4 + }, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) +"gWg" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "gWh" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ @@ -14094,6 +16203,13 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/medical) +"gWu" = ( +/obj/effect/spawner/gibspawner/xeno, +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/way_in_command_centre) "gWx" = ( /obj/structure/closet/secure_closet/miner{ pixel_x = 4 @@ -14160,6 +16276,13 @@ }, /turf/closed/wall/shiva/prefabricated/reinforced, /area/lv522/atmos/cargo_intake) +"gXI" = ( +/obj/structure/pipes/vents/pump, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "cell_stripe" + }, +/area/lv522/atmos/reactor_garage) "gXL" = ( /obj/item/prop/alien/hugger, /obj/effect/decal/cleanable/dirt, @@ -14168,10 +16291,11 @@ }, /area/lv522/indoors/lone_buildings/chunk) "gXR" = ( +/obj/structure/cargo_container/horizontal/blue/bottom, /turf/open/floor/corsat{ - icon_state = "browncorner" + icon_state = "squares" }, -/area/lv522/atmos/east_reactor/east) +/area/lv522/atmos/cargo_intake) "gXT" = ( /obj/item/shard{ icon_state = "medium" @@ -14192,6 +16316,10 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) +"gYc" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/corsat, +/area/lv522/atmos/reactor_garage) "gYs" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/door_control/brbutton/alt{ @@ -14211,12 +16339,29 @@ icon_state = "darkpurple2" }, /area/lv522/indoors/a_block/dorms) +"gYH" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Security Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/bridges/op_centre) +"gYK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "gYM" = ( -/obj/structure/blocker/forcefield/vehicles, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor/corsat, +/turf/closed/wall/strata_outpost/reinforced, /area/lv522/atmos/cargo_intake) "gYO" = ( /turf/open/floor/prison{ @@ -14239,7 +16384,7 @@ }, /area/lv522/indoors/a_block/kitchen/glass) "gZd" = ( -/obj/structure/machinery/power/apc/weak{ +/obj/structure/machinery/light{ dir = 1 }, /turf/open/floor/corsat{ @@ -14247,10 +16392,7 @@ }, /area/lv522/atmos/command_centre) "gZg" = ( -/obj/item/shard{ - icon_state = "medium" - }, -/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/engineering_electrical, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" @@ -14271,6 +16413,14 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/hydro) +"gZv" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper A-Block Shared Dorms Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/dorm_north) "gZJ" = ( /obj/structure/machinery/power/apc/weak{ dir = 1 @@ -14316,15 +16466,30 @@ icon_state = "plate" }, /area/lv522/atmos/command_centre) +"ham" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "han" = ( /obj/structure/cargo_container/horizontal/blue/bottom, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) +"hao" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat, +/area/lv522/atmos/cargo_intake) "haq" = ( /turf/open/floor/strata{ icon_state = "white_cyan3" }, /area/lv522/indoors/a_block/medical/glass) +"har" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison, +/area/lv522/atmos/way_in_command_centre) "hat" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -14359,6 +16524,16 @@ /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/plating, /area/lv522/indoors/c_block/mining) +"haG" = ( +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "haR" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -14372,6 +16547,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"hbj" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/filt) "hbk" = ( /obj/effect/spawner/gibspawner/robot, /turf/open/floor/corsat{ @@ -14414,6 +16595,16 @@ icon_state = "floor_marked" }, /area/lv522/landing_zone_2) +"hbw" = ( +/obj/item/explosive/grenade/high_explosive/m15{ + pixel_x = 8 + }, +/obj/item/prop/alien/hugger{ + pixel_x = -7; + pixel_y = -5 + }, +/turf/open/floor/prison, +/area/lv522/outdoors/colony_streets/north_street) "hbF" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /obj/structure/bed/chair/comfy{ @@ -14445,21 +16636,30 @@ icon_state = "squares" }, /area/lv522/atmos/east_reactor/east) -"hbO" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/plating, -/area/lv522/indoors/c_block/mining) -"hcv" = ( +"hcd" = ( /obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 + icon_state = "S" }, /obj/effect/decal/warning_stripes{ icon_state = "E"; pixel_x = 1 }, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) +"hcv" = ( +/obj/structure/fence, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" }, /area/lv522/landing_zone_2/ceiling) "hcx" = ( @@ -14468,13 +16668,11 @@ icon_state = "brown" }, /area/lv522/atmos/command_centre) -"hcG" = ( -/obj/structure/stairs/perspective{ - dir = 10; - icon_state = "p_stair_full" - }, -/turf/open/floor/plating, -/area/lv522/landing_zone_1/tunnel) +"hcE" = ( +/obj/item/stack/sheet/metal, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/prison, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "hcO" = ( /obj/structure/platform_decoration, /turf/open/floor/plating, @@ -14486,12 +16684,6 @@ icon_state = "brown" }, /area/lv522/atmos/cargo_intake) -"hcX" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 8 - }, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/colony_streets/north_street) "hcZ" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/corsat{ @@ -14500,6 +16692,9 @@ /area/lv522/atmos/command_centre) "hdd" = ( /obj/item/prop/alien/hugger, +/obj/structure/machinery/light{ + dir = 1 + }, /turf/open/floor/corsat{ icon_state = "plate" }, @@ -14527,6 +16722,12 @@ icon_state = "wood" }, /area/lv522/indoors/b_block/bar) +"hdu" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/turf/open/auto_turf/shale/layer2, +/area/lv522/outdoors/n_rockies) "hdG" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -14551,10 +16752,13 @@ }, /area/lv522/atmos/east_reactor/south) "hdR" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 6 +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" }, -/turf/open/floor/corsat, /area/lv522/atmos/cargo_intake) "hef" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -14620,6 +16824,10 @@ /area/lv522/indoors/a_block/bridges/op_centre) "hfi" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/prop/server_equipment/laptop/on{ + layer = 3.1; + pixel_y = 10 + }, /turf/open/floor/corsat{ dir = 1; icon_state = "brown" @@ -14678,7 +16886,7 @@ /area/lv522/indoors/b_block/hydro) "hgr" = ( /obj/structure/girder/reinforced, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "hgy" = ( /obj/structure/surface/rack, @@ -14711,15 +16919,32 @@ }, /area/lv522/atmos/east_reactor/west) "hgQ" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/corsat, +/obj/structure/prop/ice_colony/ground_wire{ + dir = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "brown" + }, /area/lv522/atmos/east_reactor) +"hhb" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/lv522/landing_zone_2) "hhu" = ( -/turf/open/floor/corsat{ +/obj/structure/machinery/conveyor{ dir = 8; - icon_state = "browncorner" + id = "cargo_container" }, -/area/lv522/atmos/east_reactor/east) +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/cargo_intake) "hhD" = ( /turf/open/asphalt/cement{ icon_state = "cement1" @@ -14731,12 +16956,50 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/bridge) +"hhJ" = ( +/obj/structure/surface/rack, +/obj/item/tool/crowbar, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) +"hhK" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Reactor_entry_2" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) +"hhQ" = ( +/obj/structure/closet/radiation, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/east_reactor/south) "hig" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ icon_state = "marked" }, /area/lv522/atmos/east_reactor/east) +"hij" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) +"hip" = ( +/obj/structure/pipes/vents/pump, +/turf/open/asphalt/cement{ + icon_state = "cement4" + }, +/area/lv522/outdoors/colony_streets/north_west_street) "hix" = ( /obj/structure/platform{ dir = 4 @@ -14835,6 +17098,12 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/garage) +"hkr" = ( +/obj/structure/girder, +/turf/open/asphalt/cement{ + icon_state = "cement4" + }, +/area/lv522/outdoors/colony_streets/north_street) "hku" = ( /obj/structure/surface/table/almayer, /obj/structure/pipes/standard/simple/hidden/green{ @@ -14955,10 +17224,22 @@ "hll" = ( /obj/structure/surface/table/almayer, /obj/item/device/binoculars, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/strata{ + icon_state = "blue1" }, /area/lv522/outdoors/colony_streets/windbreaker/observation) +"hlp" = ( +/obj/structure/machinery/conveyor{ + dir = 8; + id = "cargo_container" + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/cargo_intake) "hlH" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/handcuffs/cable/white, @@ -15047,15 +17328,6 @@ icon_state = "brown" }, /area/lv522/atmos/west_reactor) -"hnX" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2 - }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/dorms) "hoq" = ( /obj/structure/prop/invuln/ice_prefab/roof_greeble{ icon_state = "vent4"; @@ -15066,7 +17338,7 @@ icon_state = "N"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "hov" = ( /obj/effect/decal/warning_stripes{ @@ -15143,15 +17415,14 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/hallway) -"hpO" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Engineering Hut" +"hpI" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 }, /turf/open/floor/corsat{ - icon_state = "marked" + icon_state = "brown" }, -/area/lv522/indoors/lone_buildings/engineering) +/area/lv522/atmos/east_reactor/south) "hqp" = ( /obj/structure/coatrack{ pixel_x = 11 @@ -15160,19 +17431,13 @@ icon_state = "blue1" }, /area/lv522/indoors/a_block/dorm_north) -"hqr" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/weldingtool/hugetank{ - pixel_x = 8; - pixel_y = 7 - }, -/obj/item/tool/weldpack{ - pixel_y = 2 - }, +"hqB" = ( +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/cleanable/dirt, /turf/open/asphalt/cement{ - icon_state = "cement4" + icon_state = "cement3" }, -/area/lv522/outdoors/colony_streets/north_west_street) +/area/lv522/outdoors/colony_streets/north_street) "hqD" = ( /turf/open/floor/corsat{ dir = 1; @@ -15197,6 +17462,23 @@ icon_state = "cement2" }, /area/lv522/outdoors/colony_streets/east_central_street) +"hrl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/vending/coffee, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) +"hrw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "hrx" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/computer/PC{ @@ -15208,14 +17490,25 @@ }, /area/lv522/indoors/a_block/dorms) "hry" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 5 +/obj/structure/machinery/conveyor{ + dir = 10; + id = "cargo_container" }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - icon_state = "squares" + dir = 1; + icon_state = "browncorner" }, /area/lv522/atmos/cargo_intake) +"hrH" = ( +/obj/structure/platform_decoration, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "hrU" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/prison{ @@ -15262,7 +17555,7 @@ icon_state = "N"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "htA" = ( /obj/structure/barricade/wooden{ @@ -15325,10 +17618,21 @@ "huX" = ( /obj/structure/surface/table/almayer, /obj/effect/decal/cleanable/dirt, +/obj/structure/transmitter/colony_net{ + dir = 1; + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Colony Kitchen"; + pixel_y = -6 + }, /turf/open/floor/prison{ icon_state = "kitchen" }, /area/lv522/indoors/a_block/kitchen) +"hvh" = ( +/obj/structure/platform, +/turf/open/gm/river, +/area/lv522/atmos/sewer) "hvD" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 1 @@ -15336,6 +17640,39 @@ /obj/structure/bed/chair, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/c_block/mining) +"hvE" = ( +/obj/structure/fence, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/nw_rockies) +"hvZ" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass{ + dir = 8; + name = "\improper Marshal Head Office" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Sec-Kitchen-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/security) "hwa" = ( /obj/structure/platform/stair_cut{ icon_state = "platform_stair_alt" @@ -15385,7 +17722,7 @@ pixel_x = -3; pixel_y = -10 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "hwG" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, @@ -15397,29 +17734,21 @@ icon_state = "squares" }, /area/lv522/atmos/east_reactor/south) -"hxh" = ( -/turf/closed/wall, -/area/lv522/atmos/east_reactor/south) "hxn" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "hxt" = ( /obj/structure/surface/table/almayer, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/dorms) -"hxu" = ( -/turf/open/asphalt/cement{ - icon_state = "cement4" - }, -/area/lv522/outdoors/n_rockies) "hxy" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_street) "hxV" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -15491,9 +17820,6 @@ }, /area/lv522/indoors/c_block/mining) "hzk" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt, /turf/closed/wall/strata_outpost, /area/lv522/indoors/a_block/fitness) @@ -15512,11 +17838,21 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/cargo) +"hzw" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/barricade/deployable{ + dir = 1 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/way_in_command_centre) "hzA" = ( /obj/item/ammo_magazine/rifle/heap{ current_rounds = 0 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "hzM" = ( /obj/structure/fence{ @@ -15548,11 +17884,35 @@ icon_state = "kitchen" }, /area/lv522/indoors/a_block/kitchen) +"hzV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) +"hAd" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 2; + name = "\improper A-Block Dorms And Office Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/dorms) "hAg" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_street) "hAi" = ( /obj/structure/surface/table/almayer, @@ -15586,7 +17946,7 @@ /obj/structure/bed/chair{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "hAw" = ( /obj/structure/prop/invuln/ice_prefab/standalone{ @@ -15612,6 +17972,13 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) +"hAD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "hAE" = ( /obj/structure/fence{ layer = 2.9 @@ -15646,11 +18013,10 @@ }, /area/lv522/atmos/command_centre) "hBg" = ( -/obj/structure/prop/dam/truck/damaged, -/turf/open/floor/corsat{ - icon_state = "plate" - }, -/area/lv522/atmos/north_command_centre) +/obj/structure/cryofeed, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/bluegrid, +/area/lv522/atmos/east_reactor) "hBp" = ( /obj/structure/dispenser/oxygen, /obj/effect/decal/cleanable/dirt, @@ -15703,6 +18069,10 @@ icon_state = "browncorner" }, /area/lv522/atmos/command_centre) +"hCH" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/way_in_command_centre) "hCU" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /obj/structure/pipes/standard/simple/hidden/green, @@ -15719,6 +18089,18 @@ "hDa" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/atmos/command_centre) +"hDe" = ( +/obj/item/tool/lighter/zippo{ + layer = 3.1; + pixel_x = 12; + pixel_y = 18 + }, +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/colony_streets/north_street) "hDh" = ( /obj/structure/bed/chair/comfy, /turf/open/floor/corsat{ @@ -15726,7 +18108,7 @@ }, /area/lv522/atmos/command_centre) "hDy" = ( -/turf/closed/wall, +/turf/closed/wall/strata_outpost, /area/lv522/atmos/command_centre) "hDE" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -15760,6 +18142,12 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/admin) +"hEJ" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) "hES" = ( /obj/structure/bed/chair{ dir = 4 @@ -15781,9 +18169,7 @@ }, /area/lv522/indoors/c_block/mining) "hFm" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin4" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_left, /area/lv522/landing_zone_forecon/UD6_Tornado) "hFu" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -15791,6 +18177,12 @@ icon_state = "browncorner" }, /area/lv522/atmos/command_centre) +"hFA" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/sewer) "hFG" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison{ @@ -15801,6 +18193,9 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, +/obj/structure/platform{ + dir = 8 + }, /turf/open/asphalt/cement{ icon_state = "cement1" }, @@ -15811,6 +18206,9 @@ icon_state = "brown" }, /area/lv522/atmos/command_centre) +"hFX" = ( +/turf/open/auto_turf/shale/layer2, +/area/lv522/outdoors/colony_streets/south_street) "hGg" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bed/sofa/vert/white, @@ -15819,6 +18217,18 @@ icon_state = "whiteyellowfull" }, /area/lv522/indoors/a_block/corpo/glass) +"hGm" = ( +/obj/structure/closet/firecloset/full, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) +"hGJ" = ( +/obj/structure/platform_decoration/strata{ + dir = 1 + }, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) "hGU" = ( /obj/effect/landmark/monkey_spawn, /turf/open/floor/corsat{ @@ -15836,6 +18246,10 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) +"hHd" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison, +/area/lv522/atmos/outdoor) "hHh" = ( /obj/structure/machinery/colony_floodlight{ layer = 4.3 @@ -15845,14 +18259,11 @@ }, /area/lv522/outdoors/colony_streets/north_east_street) "hHj" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/obj/structure/largecrate, +/turf/open/floor/corsat{ + icon_state = "squares" }, -/area/lv522/outdoors/colony_streets/windbreaker/observation) +/area/lv522/atmos/cargo_intake) "hHN" = ( /obj/structure/bed/chair/comfy, /turf/open/floor/corsat{ @@ -15875,7 +18286,7 @@ /obj/item/weapon/gun/rifle/m41a{ current_mag = null }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "hIx" = ( /obj/structure/machinery/light{ @@ -15885,6 +18296,20 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/c_block/casino) +"hIz" = ( +/obj/structure/surface/table/almayer, +/obj/item/handcuffs{ + pixel_y = 12 + }, +/obj/item/handcuffs{ + pixel_y = 6 + }, +/obj/item/handcuffs, +/obj/item/weapon/classic_baton, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/indoors/a_block/security/glass) "hIA" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb2, @@ -15915,7 +18340,7 @@ /area/lv522/atmos/command_centre) "hIZ" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "hJp" = ( /obj/structure/machinery/light{ @@ -15927,25 +18352,12 @@ }, /area/lv522/indoors/a_block/dorms/glass) "hJq" = ( -/obj/structure/fence{ - layer = 2.9 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/strata{ - dir = 4; - icon_state = "floor3" +/obj/structure/platform/strata, +/obj/structure/platform/strata{ + dir = 4 }, -/area/lv522/outdoors/nw_rockies) +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) "hJB" = ( /turf/open/floor/corsat{ icon_state = "brown" @@ -15966,7 +18378,7 @@ }, /area/lv522/indoors/lone_buildings/storage_blocks) "hJZ" = ( -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "hKj" = ( /obj/effect/decal/cleanable/dirt, @@ -15981,8 +18393,8 @@ /obj/structure/surface/table/almayer, /obj/item/trash/ceramic_plate, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/strata{ + icon_state = "blue1" }, /area/lv522/outdoors/colony_streets/windbreaker/observation) "hKy" = ( @@ -15991,30 +18403,38 @@ icon_state = "floor_marked" }, /area/lv522/indoors/lone_buildings/outdoor_bot) -"hKz" = ( -/obj/item/clothing/under/liaison_suit/suspenders{ - pixel_x = -4; - pixel_y = 9 - }, -/obj/item/clothing/accessory/red, -/turf/open/floor/carpet, -/area/lv522/indoors/a_block/executive) "hKE" = ( /obj/structure/prop/ice_colony/ground_wire{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "hKG" = ( /obj/structure/prop/invuln/ice_prefab/standalone, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) +"hKI" = ( +/obj/structure/closet/firecloset/full, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/sewer) "hKJ" = ( /turf/open/floor/prison{ dir = 5; icon_state = "blue" }, /area/lv522/indoors/a_block/admin) +"hKK" = ( +/obj/item/clothing/mask/facehugger{ + desc = "It has some sort of a tube at the end of its tail. What the hell is this thing?"; + icon_state = "facehugger_impregnated"; + layer = 3; + name = "????"; + stat = 2 + }, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) "hKO" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice3"; @@ -16086,6 +18506,12 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/kitchen/glass) +"hLT" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/cargo_intake) "hLY" = ( /turf/open/floor/corsat{ icon_state = "brown" @@ -16134,7 +18560,7 @@ /area/lv522/outdoors/colony_streets/north_east_street) "hMN" = ( /obj/structure/cargo_container/kelland/right, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/south_east_street) "hMR" = ( /obj/effect/decal/cleanable/dirt, @@ -16150,8 +18576,16 @@ }, /turf/open/floor/prison, /area/lv522/indoors/c_block/casino) +"hNf" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "hNj" = ( /obj/item/stack/sheet/metal, +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "hNk" = ( @@ -16160,6 +18594,13 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/c_block/mining) +"hNt" = ( +/obj/item/trash/uscm_mre, +/obj/structure/surface/table/almayer, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "hNz" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 @@ -16181,11 +18622,17 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/dorms) +"hNP" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/open/gm/river, +/area/lv522/atmos/sewer) "hNR" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_street) "hNV" = ( /obj/item/stack/rods, @@ -16240,6 +18687,7 @@ "hOI" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /obj/structure/blocker/forcefield/vehicles, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -16302,7 +18750,7 @@ /area/lv522/indoors/b_block/bar) "hPM" = ( /obj/item/stack/sheet/metal, -/turf/open/auto_turf/shale/layer0_plate, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "hPO" = ( /obj/item/ammo_magazine/rifle/heap{ @@ -16311,15 +18759,21 @@ /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison, /area/lv522/atmos/cargo_intake) -"hPT" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2 - }, +"hPQ" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/corsat{ - icon_state = "marked" +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/transmitter/colony_net/rotary{ + phone_category = "LV522 Chances Claim"; + phone_id = "Chief Engineer Office"; + pixel_x = -2; + pixel_y = 6 }, -/area/lv522/indoors/a_block/hallway) +/obj/item/reagent_container/food/drinks/coffeecup/wy{ + pixel_x = 3; + pixel_y = -1 + }, +/turf/open/floor/wood/ship, +/area/lv522/atmos/way_in_command_centre) "hQh" = ( /obj/structure/largecrate/random, /obj/effect/decal/warning_stripes{ @@ -16367,7 +18821,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "hRy" = ( /obj/structure/prop/invuln/fusion_reactor, @@ -16400,7 +18854,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "hSs" = ( /obj/structure/cargo_container/kelland/left{ @@ -16418,6 +18872,13 @@ icon_state = "brown" }, /area/lv522/atmos/command_centre) +"hSQ" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/prison{ + dir = 1; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/way_in_command_centre) "hTd" = ( /obj/structure/window/reinforced{ dir = 1; @@ -16431,6 +18892,10 @@ "hTe" = ( /turf/open/gm/river, /area/lv522/landing_zone_1/tunnel) +"hTf" = ( +/obj/structure/platform_decoration, +/turf/open/asphalt/cement, +/area/lv522/outdoors/n_rockies) "hTg" = ( /obj/structure/surface/table/almayer, /turf/open/floor/corsat{ @@ -16478,7 +18943,7 @@ "hTW" = ( /obj/structure/largecrate/random/secure, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "hTX" = ( /obj/structure/machinery/light{ @@ -16545,18 +19010,6 @@ }, /turf/open/floor/prison, /area/lv522/atmos/cargo_intake) -"hVh" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/fancy/cigarettes/wypacket{ - pixel_x = 5; - pixel_y = 6 - }, -/obj/item/clothing/under/liaison_suit/suspenders, -/turf/open/floor/strata{ - dir = 4; - icon_state = "white_cyan1" - }, -/area/lv522/indoors/a_block/corpo/glass) "hVk" = ( /obj/item/stack/sheet/metal, /turf/open/floor{ @@ -16594,6 +19047,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/garage) +"hWC" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/prop/almayer/computers/sensor_computer2{ + layer = 2.0 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "hWD" = ( /obj/structure/barricade/deployable, /turf/open/floor/prison{ @@ -16602,10 +19066,10 @@ }, /area/lv522/indoors/a_block/admin) "hWI" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 4 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "hWJ" = ( /obj/structure/machinery/light{ @@ -16625,44 +19089,17 @@ /turf/open/floor/prison, /area/lv522/atmos/cargo_intake) "hXt" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 10 - }, -/turf/open/floor/corsat{ - icon_state = "plate" - }, -/area/lv522/atmos/cargo_intake) -"hXy" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 - }, -/obj/item/bedsheet/brown{ - pixel_y = 13 - }, -/obj/item/bedsheet/brown{ - layer = 3.1 - }, -/turf/open/floor/strata{ - icon_state = "blue1" +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_x = -1; + pixel_y = 2 }, -/area/lv522/indoors/a_block/dorm_north) +/turf/closed/wall/mineral/bone_resin, +/area/lv522/oob) "hXA" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ dir = 9; icon_state = "brown" @@ -16713,6 +19150,13 @@ icon_state = "floor_plate" }, /area/lv522/indoors/lone_buildings/storage_blocks) +"hYg" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/surface/table/almayer, +/turf/open/floor/corsat{ + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor/south) "hYk" = ( /obj/structure/window/reinforced{ dir = 4 @@ -16749,26 +19193,19 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/bridges/garden_bridge) -"hZf" = ( -/obj/structure/showcase{ - desc = "The display model for a Weyland Yutani generation one synthetic. It almost feels like the eyes on this one follow you."; - icon = 'icons/mob/humans/species/r_synthetic.dmi'; - icon_state = "Synthetic_Template"; - name = "Display synthetic" - }, -/obj/structure/window/reinforced, -/obj/item/clothing/under/marine/veteran/pmc, -/obj/item/clothing/mask/gas/pmc, -/obj/item/clothing/head/helmet/marine/veteran/pmc/leader{ - layer = 3.1; - pixel_y = 10 - }, -/obj/structure/sign/safety/synth_storage{ - pixel_x = 23; - pixel_y = 29 +"hZc" = ( +/obj/item/prop/colony/used_flare, +/obj/structure/cargo_container/wy/right, +/turf/open/floor/plating, +/area/lv522/outdoors/colony_streets/north_east_street) +"hZg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/prop/server_equipment/laptop/closed, +/obj/structure/surface/table/almayer, +/turf/open/floor/strata{ + icon_state = "blue1" }, -/turf/open/floor/bluegrid, -/area/lv522/indoors/a_block/corpo/glass) +/area/lv522/outdoors/colony_streets/windbreaker/observation) "hZn" = ( /obj/structure/prop/server_equipment/yutani_server{ pixel_x = -4 @@ -16777,6 +19214,13 @@ icon_state = "bcircuit" }, /area/lv522/atmos/east_reactor) +"hZC" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal/medium_stack, +/obj/item/ore/uranium, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison, +/area/lv522/indoors/c_block/mining) "hZK" = ( /obj/structure/prop/server_equipment/yutani_server/broken{ pixel_x = 3 @@ -16797,6 +19241,13 @@ }, /turf/open/floor/prison, /area/lv522/indoors/c_block/casino) +"hZO" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "hZR" = ( /obj/structure/closet/firecloset/full, /obj/effect/decal/cleanable/dirt, @@ -16836,6 +19287,11 @@ icon_state = "plate" }, /area/lv522/atmos/filt) +"iaM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/rods, +/turf/open/floor/plating, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "iaY" = ( /obj/item/prop/alien/hugger, /obj/structure/pipes/standard/simple/hidden/green{ @@ -16855,6 +19311,17 @@ /obj/effect/decal/cleanable/blood/xeno, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/nw_rockies) +"iby" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/reactor_garage) "ibE" = ( /turf/closed/shuttle/dropship2/tornado{ icon_state = "23" @@ -16877,6 +19344,11 @@ icon_state = "marked" }, /area/lv522/indoors/b_block/hydro) +"ica" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/prop/alien/hugger, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "ici" = ( /obj/effect/decal/cleanable/vomit{ icon_state = "vomit_4" @@ -16905,11 +19377,34 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor) +"icy" = ( +/obj/item/prop/alien/hugger, +/turf/open/floor/prison, +/area/lv522/indoors/lone_buildings/engineering) "icE" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/lone_buildings/storage_blocks) +"icM" = ( +/obj/structure/machinery/door_control{ + id = "Marked_6"; + name = "Cargo Shutter Control"; + pixel_y = 10 + }, +/obj/structure/surface/table/almayer, +/obj/item/prop{ + desc = "The first page reads. 'Classified Weyland Bio-Weapons Division level eight clearance required.' The rest talks about some sort of XX-121 combat stim?"; + icon = 'icons/obj/items/paper.dmi'; + icon_state = "folder_black"; + name = "Weyland classified intelligence folder"; + pixel_y = -2 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/lv522/oob/w_y_vault) "icT" = ( /obj/structure/machinery/light{ dir = 1 @@ -16929,6 +19424,18 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/bridge) +"idk" = ( +/turf/open/floor/corsat{ + dir = 4; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) +"idn" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/west) "idq" = ( /obj/structure/machinery/power/apc/weak{ dir = 1 @@ -16947,25 +19454,22 @@ }, /area/lv522/indoors/a_block/medical) "idH" = ( -/obj/structure/fence{ - layer = 2.9 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/strata{ - dir = 4; - icon_state = "floor3" +/obj/item/device/flashlight/flare/on, +/obj/effect/decal/cleanable/blood, +/obj/item/ammo_magazine/rifle/extended{ + current_rounds = 0; + pixel_x = 6; + pixel_y = 17 }, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "idL" = ( /turf/closed/wall/shiva/prefabricated/reinforced/hull, /area/lv522/oob) +"idX" = ( +/obj/structure/window/framed/corsat, +/turf/open/floor/plating, +/area/lv522/atmos/east_reactor/south) "iee" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -16993,6 +19497,22 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor) +"ieE" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/obj/effect/decal{ + icon = 'icons/mob/xenos/effects.dmi'; + icon_state = "acid_weak"; + layer = 2; + name = "weak acid"; + pixel_x = -10; + pixel_y = 4 + }, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "ieW" = ( /obj/structure/prop/invuln/ice_prefab/trim{ dir = 6 @@ -17003,14 +19523,23 @@ layer = 2.0; pixel_y = -13 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "iff" = ( /obj/structure/prop/invuln/ice_prefab/trim{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) +"ifg" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/plating, +/area/lv522/landing_zone_forecon/UD6_Tornado) "ifh" = ( /obj/structure/prop/invuln/overhead/flammable_pipe/fly{ dir = 1; @@ -17121,6 +19650,13 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/hallway) +"ihf" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "ihs" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -17131,7 +19667,7 @@ /area/lv522/indoors/a_block/dorms) "ihy" = ( /obj/structure/barricade/deployable, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "ihI" = ( /obj/structure/fence, @@ -17173,7 +19709,7 @@ dir = 8; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/indoors/a_block/bridges/dorms_fitness) "iiL" = ( /obj/structure/machinery/light{ @@ -17188,14 +19724,14 @@ icon_state = "SE-out"; pixel_x = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "ijv" = ( /obj/structure/barricade/deployable{ dir = 4 }, /obj/structure/barricade/deployable, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "ijB" = ( /obj/structure/machinery/shower{ @@ -17249,14 +19785,27 @@ /obj/effect/landmark/lv624/fog_blocker/short, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) +"ike" = ( +/obj/item/prop/alien/hugger, +/obj/structure/transmitter/colony_net{ + dir = 4; + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Colony Bar & Grill"; + pixel_x = -16 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/lv522/indoors/b_block/bar) "ikr" = ( -/obj/structure/prop/turbine_extras, -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - dir = 8; - icon_state = "flammable_pipe_3" +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 }, -/turf/open/floor/corsat, -/area/lv522/atmos/east_reactor) +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/cargo_intake) "ikw" = ( /obj/item/stack/sheet/metal, /turf/open/asphalt/cement{ @@ -17297,7 +19846,7 @@ /area/lv522/indoors/b_block/hydro) "ilK" = ( /obj/item/stack/sheet/metal, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "ilR" = ( /obj/effect/decal/cleanable/dirt, @@ -17343,16 +19892,6 @@ icon_state = "marked" }, /area/lv522/indoors/c_block/mining) -"imA" = ( -/obj/structure/pipes/vents/pump, -/obj/structure/machinery/camera/autoname, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/strata{ - icon_state = "blue1" - }, -/area/lv522/indoors/a_block/dorm_north) "imJ" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -17383,7 +19922,7 @@ /area/lv522/landing_zone_1/ceiling) "inp" = ( /obj/item/prop/colony/used_flare, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "inA" = ( /obj/effect/decal/cleanable/dirt, @@ -17400,11 +19939,11 @@ /area/lv522/outdoors/n_rockies) "iod" = ( /obj/structure/cargo_container/ferret/mid, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "ioA" = ( /obj/structure/cargo_container/ferret/right, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "ioD" = ( /obj/structure/prop/structure_lattice, @@ -17421,10 +19960,9 @@ }, /area/lv522/indoors/c_block/t_comm) "ipf" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/machinery/disposal, +/obj/structure/pipes/standard/simple/hidden/green, +/obj/item/tool/weldingtool/simple, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/strata{ icon_state = "blue1" }, @@ -17442,10 +19980,11 @@ /turf/open/auto_turf/sand/layer1, /area/lv522/indoors/b_block/bridge) "ipB" = ( -/obj/structure/prop/turbine_extras/border, -/obj/structure/prop/turbine, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, /turf/open/floor/corsat, -/area/lv522/atmos/east_reactor) +/area/lv522/atmos/cargo_intake) "ipC" = ( /obj/structure/toilet{ pixel_y = 16 @@ -17463,6 +20002,21 @@ icon_state = "white_cyan2" }, /area/lv522/indoors/toilet) +"ipH" = ( +/obj/structure/surface/table/almayer, +/obj/item/stack/sheet/mineral/gold{ + amount = 60; + pixel_y = 6 + }, +/obj/item/stack/sheet/mineral/gold{ + amount = 60; + pixel_y = 12 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/lv522/oob/w_y_vault) "ipN" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 @@ -17505,17 +20059,33 @@ /obj/effect/decal/cleanable/generic, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"iqz" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "iqQ" = ( /obj/structure/prop/invuln/ice_prefab{ icon_state = "fab_2" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "iqV" = ( /obj/structure/prop/invuln/minecart_tracks, /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) +"iqX" = ( +/obj/structure/machinery/landinglight/ds2{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/landing_zone_2) "iqZ" = ( /obj/structure/machinery/light, /turf/open/floor/prison{ @@ -17529,9 +20099,6 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/casino) -"irx" = ( -/turf/closed/wall, -/area/lv522/atmos/cargo_intake) "irH" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/reagent_container/food/drinks/drinkingglass{ @@ -17612,6 +20179,23 @@ icon_state = "floor_plate" }, /area/lv522/indoors/lone_buildings/storage_blocks) +"isL" = ( +/obj/structure/surface/table/almayer, +/obj/item/spacecash/c1000, +/obj/item/spacecash/c1000, +/obj/item/spacecash/c1000, +/obj/item/spacecash/c1000, +/obj/item/spacecash/c1000, +/obj/item/spacecash/c1000, +/obj/item/spacecash/c1000, +/obj/item/spacecash/c1000, +/obj/item/spacecash/c1000, +/obj/item/spacecash/c1000, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/lv522/oob/w_y_vault) "iti" = ( /obj/structure/machinery/power/monitor{ name = "Main Power Grid Monitoring" @@ -17629,12 +20213,11 @@ }, /area/lv522/indoors/a_block/corpo/glass) "itp" = ( -/obj/structure/prop/turbine_extras/left, -/obj/structure/prop/invuln/fusion_reactor, +/obj/structure/pipes/standard/manifold/fourway/hidden/green, /turf/open/floor/corsat{ - icon_state = "plate" + icon_state = "squares" }, -/area/lv522/atmos/east_reactor) +/area/lv522/atmos/cargo_intake) "its" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/corsat{ @@ -17702,6 +20285,14 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/hallway) +"iuC" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "iuK" = ( /obj/effect/landmark/survivor_spawner, /obj/effect/decal/cleanable/dirt, @@ -17710,14 +20301,6 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) -"iuQ" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - welded = 1 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/c_block/cargo) "iuW" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison{ @@ -17756,7 +20339,7 @@ icon_state = "N"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "ivz" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -17796,7 +20379,7 @@ dir = 8; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "iwF" = ( /obj/structure/machinery/conveyor{ @@ -17819,7 +20402,7 @@ pixel_x = -6; pixel_y = 7 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "ixf" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -17827,6 +20410,16 @@ icon_state = "marked" }, /area/lv522/atmos/command_centre) +"ixs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/indoors/a_block/corpo/glass) +"ixD" = ( +/turf/open/floor/corsat, +/area/lv522/atmos/north_command_centre) "ixO" = ( /obj/structure/prop/invuln/minecart_tracks/bumper{ dir = 1 @@ -17835,7 +20428,7 @@ /area/lv522/indoors/c_block/mining) "ixP" = ( /obj/structure/prop/ice_colony/ground_wire, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "ixQ" = ( /obj/structure/pipes/standard/manifold/hidden/green{ @@ -17843,6 +20436,10 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/admin) +"ixV" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "ixW" = ( /obj/structure/stairs/perspective{ dir = 8; @@ -17891,6 +20488,29 @@ icon_state = "plate" }, /area/lv522/atmos/cargo_intake) +"iyE" = ( +/obj/structure/largecrate/random, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/reactor_garage) +"iyQ" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) +"iyS" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "iyT" = ( /obj/structure/platform_decoration, /obj/effect/decal/cleanable/dirt, @@ -17900,6 +20520,14 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/bridge) +"izb" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "izj" = ( /obj/structure/prop/ice_colony/dense/planter_box{ dir = 8 @@ -17920,11 +20548,17 @@ }, /area/lv522/indoors/a_block/corpo/glass) "izp" = ( -/obj/structure/machinery/power/smes/buildable{ - capacity = 1e+006; - dir = 1 +/obj/structure/surface/table/almayer, +/obj/item/clothing/glasses/meson, +/obj/item/shard{ + icon_state = "medium" + }, +/obj/effect/landmark/objective_landmark/close, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" }, -/turf/open/floor/plating, /area/lv522/indoors/lone_buildings/engineering) "izr" = ( /obj/structure/platform/stair_cut, @@ -17957,6 +20591,9 @@ icon_state = "plate" }, /area/lv522/atmos/cargo_intake) +"iAv" = ( +/turf/closed/wall/strata_outpost/reinforced, +/area/lv522/atmos/reactor_garage) "iAU" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -17977,13 +20614,6 @@ /obj/structure/pipes/standard/manifold/hidden/green, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorm_north) -"iBd" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/c_block/garage) "iBe" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -17994,8 +20624,11 @@ }, /area/lv522/indoors/c_block/mining) "iBl" = ( -/obj/structure/largecrate/supply/supplies/metal, -/turf/open/auto_turf/shale/layer0, +/obj/structure/largecrate/random, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, /area/lv522/landing_zone_2/ceiling) "iBo" = ( /obj/structure/surface/rack, @@ -18044,14 +20677,14 @@ dir = 8; pixel_y = 29 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "iCb" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = -9; pixel_y = 25 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "iCk" = ( /obj/structure/surface/table/almayer, @@ -18097,6 +20730,18 @@ icon_state = "plate" }, /area/lv522/atmos/east_reactor/south) +"iDC" = ( +/obj/item/clothing/head/helmet/marine/grenadier{ + armor_bullet = 10; + desc = "Pairs with the M3-G4 heavy grenadier plating. A distant cousin of the experimental B18 defensive helmet. Decorated with a blue stripe the large hole in the side of this helmet somewhat limits its protection."; + name = "\improper damaged M3-G4 grenadier helmet"; + pixel_x = 3; + pixel_y = 13 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/colony_streets/north_street) "iDD" = ( /obj/item/stack/tile/plasteel{ name = "ceiling tile"; @@ -18112,19 +20757,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/outdoors/colony_streets/windbreaker/observation) -"iDO" = ( -/obj/item/reagent_container/food/drinks/cans/waterbottle{ - pixel_x = 10; - pixel_y = 5 - }, -/obj/item/reagent_container/food/snacks/wishsoup{ - pixel_x = -4; - pixel_y = -7 - }, -/turf/open/floor/strata{ - icon_state = "blue1" +"iEn" = ( +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" }, -/area/lv522/indoors/a_block/dorm_north) +/area/lv522/atmos/reactor_garage) "iEq" = ( /obj/structure/cargo_container/lockmart/mid, /turf/open/floor/prison{ @@ -18132,6 +20770,15 @@ icon_state = "floor_marked" }, /area/lv522/atmos/cargo_intake) +"iFk" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "iFB" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/computer/PC, @@ -18164,11 +20811,12 @@ }, /area/lv522/atmos/east_reactor/south) "iGc" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /obj/structure/pipes/standard/simple/hidden/green{ - dir = 5 + dir = 4 }, /turf/open/floor/corsat{ - icon_state = "brown" + icon_state = "squares" }, /area/lv522/atmos/cargo_intake) "iGl" = ( @@ -18195,14 +20843,10 @@ }, /area/lv522/landing_zone_2) "iGD" = ( -/obj/structure/prop/maintenance_hatch{ +/obj/structure/tunnel/maint_tunnel{ pixel_y = 6 }, /obj/structure/machinery/light/small, -/obj/structure/barricade/handrail{ - dir = 1; - pixel_y = 9 - }, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) "iGF" = ( @@ -18283,6 +20927,7 @@ /area/lv522/indoors/c_block/mining) "iHD" = ( /obj/item/prop/alien/hugger, +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison, /area/lv522/outdoors/colony_streets/windbreaker/observation) "iIa" = ( @@ -18314,7 +20959,7 @@ dir = 4; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/indoors/a_block/bridges/dorms_fitness) "iIG" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -18340,7 +20985,7 @@ /obj/structure/stairs/perspective{ icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "iIY" = ( /obj/item/shard{ @@ -18409,6 +21054,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) +"iKo" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "iKw" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -18423,6 +21074,10 @@ icon_state = "squares" }, /area/lv522/atmos/command_centre) +"iKF" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "iKJ" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -18444,7 +21099,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "S" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "iLc" = ( /obj/structure/closet/secure_closet/freezer/fridge/full, @@ -18463,6 +21118,15 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/corpo) +"iLn" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "iLq" = ( /obj/structure/surface/table/almayer{ dir = 1; @@ -18506,7 +21170,6 @@ }, /area/lv522/atmos/west_reactor) "iMC" = ( -/obj/structure/largecrate/random, /obj/effect/decal/warning_stripes{ icon_state = "N"; pixel_y = 1 @@ -18516,21 +21179,11 @@ }, /turf/open/floor/corsat, /area/lv522/atmos/cargo_intake) -"iML" = ( -/obj/structure/largecrate/random, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/lv522/outdoors/colony_streets/north_street) "iMQ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/space_heater/radiator/red, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/strata{ + icon_state = "blue1" }, /area/lv522/outdoors/colony_streets/windbreaker/observation) "iMS" = ( @@ -18582,7 +21235,7 @@ /obj/structure/prop/invuln/ice_prefab{ dir = 5 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "iOl" = ( /turf/open/floor/corsat{ @@ -18590,10 +21243,35 @@ icon_state = "browncorner" }, /area/lv522/atmos/cargo_intake) +"iOt" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/structure/machinery/light, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor) +"iOw" = ( +/obj/item/storage/toolbox/electrical{ + pixel_y = -6 + }, +/obj/item/storage/toolbox/mechanical/green{ + pixel_x = -11; + pixel_y = 9 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "iOx" = ( -/obj/structure/girder, -/turf/open/floor/corsat, -/area/lv522/atmos/north_command_centre) +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor) "iOG" = ( /turf/open/floor/corsat{ dir = 5; @@ -18625,7 +21303,7 @@ layer = 4.1; pixel_x = 15 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "iPb" = ( /obj/structure/cargo_container/lockmart/right, @@ -18638,8 +21316,19 @@ /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) +"iPy" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 2; + name = "\improper A-Block Dorms And Office Airlock"; + welded = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/dorms) "iPD" = ( /obj/structure/machinery/door/poddoor/almayer/closed{ id = "West LZ Storage"; @@ -18675,13 +21364,11 @@ }, /area/lv522/indoors/a_block/corpo) "iQb" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 5 - }, -/turf/open/floor/corsat{ - icon_state = "plate" +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/shiva{ + icon_state = "radiator_tile2" }, -/area/lv522/atmos/cargo_intake) +/area/lv522/atmos/way_in_command_centre) "iQe" = ( /turf/open/floor/corsat{ dir = 9; @@ -18694,6 +21381,10 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/b_block/bridge) +"iQt" = ( +/obj/structure/cargo_container/wy/mid, +/turf/open/floor/plating, +/area/lv522/outdoors/colony_streets/north_east_street) "iQF" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -18737,6 +21428,16 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor/south) +"iRW" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "iRY" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/corsat{ @@ -18757,10 +21458,12 @@ /turf/open/auto_turf/shale/layer2, /area/lv522/outdoors/colony_streets/north_west_street) "iSu" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_right, /area/lv522/landing_zone_forecon/UD6_Tornado) +"iSx" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/lv522/indoors/lone_buildings/storage_blocks) "iSF" = ( /obj/structure/surface/table/almayer, /obj/structure/prop/server_equipment/laptop/on, @@ -18778,6 +21481,23 @@ icon_state = "blue_plate" }, /area/lv522/indoors/c_block/mining) +"iTf" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper A-Block Security Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Sec-Kitchen-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/security) "iTn" = ( /obj/structure/bed/chair/comfy, /turf/open/floor/corsat{ @@ -18792,15 +21512,19 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/admin) "iTI" = ( -/obj/effect/landmark/lv624/fog_blocker/short, -/obj/effect/landmark/lv624/fog_blocker/short, -/turf/closed/wall/mineral/bone_resin, -/area/lv522/oob) +/obj/structure/platform, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "iTS" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 10 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "iTW" = ( /obj/item/stack/tile/plasteel{ @@ -18808,8 +21532,18 @@ pixel_x = -2; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) +"iTX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 2 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "iTY" = ( /obj/structure/surface/rack, /obj/item/clothing/suit/storage/hazardvest, @@ -18830,7 +21564,7 @@ pixel_x = 13; pixel_y = -1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "iUo" = ( /obj/effect/decal/cleanable/dirt, @@ -18923,6 +21657,14 @@ icon_state = "whitegreenfull" }, /area/lv522/oob) +"iWg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, +/obj/structure/prop/server_equipment/laptop/on, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "iWh" = ( /obj/structure/machinery/portable_atmospherics/canister/empty/oxygen, /turf/open/asphalt/cement{ @@ -18968,7 +21710,7 @@ /obj/structure/platform_decoration{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "iWZ" = ( /obj/structure/machinery/conveyor{ @@ -18987,6 +21729,12 @@ }, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"iXI" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/auto_turf/shale/layer2, +/area/lv522/outdoors/w_rockies) "iXM" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -19000,6 +21748,16 @@ /obj/structure/barricade/deployable, /turf/open/floor/prison, /area/lv522/indoors/a_block/admin) +"iYa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/lv522/indoors/a_block/fitness) "iYc" = ( /obj/structure/machinery/light, /obj/effect/decal/cleanable/dirt, @@ -19048,6 +21806,12 @@ icon_state = "squares" }, /area/lv522/atmos/cargo_intake) +"iYG" = ( +/obj/item/stack/sandbags_empty/small_stack, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/colony_streets/north_street) "iYL" = ( /obj/structure/machinery/conveyor{ dir = 8; @@ -19088,17 +21852,9 @@ /turf/open/floor/corsat, /area/lv522/atmos/east_reactor) "iZS" = ( -/obj/structure/safe{ - spawnkey = 0 - }, -/obj/item/stack/sheet/mineral/gold{ - amount = 60 - }, -/turf/open/floor/strata{ - dir = 4; - icon_state = "white_cyan1" - }, -/area/lv522/oob/w_y_vault) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/way_in_command_centre) "jab" = ( /obj/structure/window/framed/strata/reinforced, /turf/open/floor/corsat{ @@ -19113,7 +21869,7 @@ dir = 10; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "jas" = ( /turf/closed/wall/strata_outpost, @@ -19193,17 +21949,12 @@ }, /area/lv522/indoors/c_block/cargo) "jbn" = ( -/obj/structure/safe, -/obj/item/spacecash/c1000, -/obj/item/spacecash/c1000, -/obj/item/spacecash/c1000, -/obj/item/spacecash/c1000, -/obj/item/spacecash/c1000, -/turf/open/floor/strata{ - dir = 4; - icon_state = "white_cyan1" +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/area/lv522/oob/w_y_vault) +/turf/open/floor/prison, +/area/lv522/atmos/way_in_command_centre) "jbs" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -19324,6 +22075,14 @@ icon_state = "squares" }, /area/lv522/atmos/cargo_intake) +"jdv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/outdoor) "jdD" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -19332,30 +22091,20 @@ icon_state = "squares" }, /area/lv522/atmos/cargo_intake) -"jdI" = ( -/obj/structure/machinery/door/airlock/almayer/generic, +"jeb" = ( +/obj/vehicle/powerloader{ + dir = 8 + }, /turf/open/floor/corsat{ - icon_state = "marked" + icon_state = "plate" }, -/area/lv522/indoors/c_block/t_comm) +/area/lv522/atmos/reactor_garage) "jef" = ( /turf/open/floor/corsat{ dir = 8; icon_state = "browncorner" }, /area/lv522/atmos/east_reactor/south) -"jeo" = ( -/obj/structure/pipes/vents/pump, -/obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage{ - density = 0; - pixel_y = 16 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/lv522/indoors/lone_buildings/engineering) "jey" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, @@ -19398,6 +22147,49 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security) +"jfx" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 16 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 16 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) +"jfG" = ( +/obj/item/reagent_container/food/drinks/cans/waterbottle{ + pixel_x = 10; + pixel_y = 5 + }, +/obj/item/reagent_container/food/snacks/wishsoup{ + pixel_x = -4; + pixel_y = -7 + }, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/indoors/a_block/dorm_north) +"jfH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "jfK" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/computer/PC{ @@ -19410,6 +22202,11 @@ "jfO" = ( /turf/open/floor/prison, /area/lv522/indoors/a_block/kitchen/glass) +"jfP" = ( +/obj/structure/largecrate/random/barrel/white, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/c_block/mining) "jfZ" = ( /obj/structure/platform{ dir = 8 @@ -19430,6 +22227,13 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/north_west_street) +"jgI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/indoors/a_block/dorm_north) "jgV" = ( /obj/structure/surface/table/almayer, /obj/effect/decal/cleanable/dirt, @@ -19477,8 +22281,15 @@ pixel_x = 1; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) +"jhS" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor) "jhY" = ( /obj/structure/surface/table/almayer, /obj/item/clothing/glasses/meson, @@ -19580,6 +22391,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "S" }, +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/strata{ dir = 4; icon_state = "floor3" @@ -19587,17 +22399,11 @@ /area/lv522/outdoors/nw_rockies) "jiY" = ( /obj/effect/decal/cleanable/blood/oil, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, /turf/open/floor/corsat, /area/lv522/atmos/cargo_intake) -"jjc" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Greenhouse Storage" - }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/lone_buildings/outdoor_bot) "jjg" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison{ @@ -19605,6 +22411,23 @@ icon_state = "floor_marked" }, /area/lv522/atmos/cargo_intake) +"jjj" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Reactor_garage_2" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/reactor_garage) +"jjl" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "jjo" = ( /obj/structure/surface/table/almayer, /obj/item/clothing/suit/storage/hazardvest{ @@ -19615,15 +22438,16 @@ pixel_x = 6; pixel_y = 3 }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, /turf/open/floor/corsat{ icon_state = "squares" }, /area/lv522/atmos/cargo_intake) "jjq" = ( -/obj/structure/machinery/space_heater/radiator/red{ - dir = 4 - }, -/obj/structure/machinery/light{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/power/apc/weak{ dir = 1 }, /turf/open/floor/strata{ @@ -19650,22 +22474,9 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) -"jjF" = ( -/obj/item/reagent_container/food/snacks/stewedsoymeat{ - pixel_y = -6 - }, -/obj/item/trash/sosjerky{ - pixel_x = 8; - pixel_y = 12 - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 10 - }, -/turf/open/floor/prison, -/area/lv522/indoors/a_block/dorm_north) "jjG" = ( /obj/structure/prop/ice_colony/ground_wire, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "jjP" = ( /obj/structure/pipes/vents/pump, @@ -19675,6 +22486,9 @@ "jjU" = ( /obj/structure/surface/table/almayer, /obj/structure/prop/server_equipment/laptop/closed, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, /turf/open/floor/corsat{ icon_state = "squares" }, @@ -19686,6 +22500,18 @@ icon_state = "plate" }, /area/lv522/atmos/east_reactor/south) +"jjW" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Reactor_garage_1" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/reactor_garage) "jkp" = ( /obj/structure/fence{ layer = 2.9 @@ -19707,13 +22533,32 @@ /obj/structure/surface/table/almayer, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"jkJ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/way_in_command_centre) "jkL" = ( -/obj/structure/closet/secure_closet/engineering_electrical, +/obj/structure/machinery/recharge_station, +/obj/item/shard{ + icon_state = "medium" + }, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" }, /area/lv522/indoors/lone_buildings/engineering) +"jkO" = ( +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform, +/obj/structure/platform_decoration{ + dir = 6 + }, +/turf/open/asphalt/cement, +/area/lv522/outdoors/n_rockies) "jlc" = ( /obj/structure/surface/rack, /obj/item/tool/minihoe{ @@ -19773,10 +22618,10 @@ }, /area/lv522/indoors/c_block/cargo) "jmd" = ( -/obj/item/weapon/shield/riot, -/obj/item/weapon/classic_baton, -/obj/structure/surface/rack, /obj/effect/decal/cleanable/dirt, +/obj/structure/surface/rack, +/obj/item/weapon/gun/revolver/cmb, +/obj/item/ammo_magazine/revolver/cmb, /turf/open/floor/prison{ icon_state = "darkredfull2" }, @@ -19812,6 +22657,11 @@ "jmG" = ( /turf/closed/wall/strata_outpost, /area/lv522/indoors/c_block/cargo) +"jmN" = ( +/obj/effect/decal/cleanable/blood, +/obj/effect/spawner/gibspawner/human, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/w_rockies) "jmU" = ( /obj/structure/barricade/handrail, /turf/open/floor/coagulation{ @@ -19831,6 +22681,11 @@ icon_state = "floor_plate" }, /area/lv522/atmos/cargo_intake) +"jmX" = ( +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "jnb" = ( /obj/structure/machinery/light{ dir = 4 @@ -19880,6 +22735,14 @@ }, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"jnE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/sheet/metal, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "jnF" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -19905,6 +22768,12 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) +"joJ" = ( +/obj/structure/window/framed/strata/reinforced, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/reactor_garage) "joK" = ( /obj/structure/window/reinforced{ dir = 4 @@ -19932,6 +22801,13 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, +/obj/structure/transmitter/colony_net{ + dir = 4; + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Colony Garage"; + pixel_x = -16 + }, /turf/open/floor/prison{ icon_state = "darkbrownfull2" }, @@ -19946,14 +22822,17 @@ icon_state = "greenfull" }, /area/lv522/indoors/a_block/fitness) -"jpb" = ( -/obj/structure/closet/crate, -/turf/open/floor/prison, -/area/lv522/landing_zone_2) "jpc" = ( /obj/effect/spawner/gibspawner/xeno, /turf/open/floor/prison, /area/lv522/indoors/a_block/security/glass) +"jpm" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/machinery/light, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "jpx" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -19990,6 +22869,11 @@ icon_state = "cement9" }, /area/lv522/outdoors/colony_streets/north_west_street) +"jqL" = ( +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "jqO" = ( /obj/structure/platform{ dir = 4 @@ -19997,21 +22881,18 @@ /obj/structure/stairs/perspective{ icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) -"jqV" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Corporation Dome"; - req_access_txt = "100" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/corpo) "jrd" = ( /obj/structure/girder/displaced, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/central_streets) +"jri" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/west) "jrn" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/generic, @@ -20019,11 +22900,28 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/cargo) +"jro" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper A-Block - Colony Operations Centre Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "LV522CIC_1"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/admin) "jru" = ( /obj/structure/platform{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "jrB" = ( /obj/structure/machinery/vending/snack{ @@ -20047,6 +22945,18 @@ icon_state = "kitchen" }, /area/lv522/indoors/a_block/kitchen) +"jrE" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper B-Block - Hydroponics Airlock" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "LV_522_Hydro-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/b_block/hydro) "jrJ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/surface/table/reinforced/prison, @@ -20065,7 +22975,7 @@ /area/lv522/indoors/c_block/t_comm) "jrL" = ( /obj/item/stack/sheet/metal, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "jrQ" = ( /obj/effect/decal/warning_stripes{ @@ -20079,6 +22989,15 @@ /obj/effect/decal/cleanable/blood/xeno, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/nw_rockies) +"jsk" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Dorms And Office Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/dorms) "jsy" = ( /obj/structure/machinery/conveyor{ dir = 8; @@ -20102,14 +23021,14 @@ pixel_y = 25 }, /obj/effect/spawner/gibspawner/xeno, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "jsQ" = ( /obj/item/prop/alien/hugger, /turf/open/floor/prison, /area/lv522/atmos/cargo_intake) "jtf" = ( -/obj/structure/cargo_container/horizontal/blue/top, +/obj/structure/pipes/standard/manifold/hidden/green, /turf/open/floor/corsat{ icon_state = "squares" }, @@ -20147,12 +23066,6 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/corpo/glass) -"jub" = ( -/obj/structure/machinery/floodlight, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/indoors/lone_buildings/storage_blocks) "jud" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 1 @@ -20161,6 +23074,14 @@ icon_state = "bcircuit" }, /area/lv522/indoors/a_block/admin) +"jue" = ( +/obj/structure/prop/ice_colony/ground_wire, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -10; + pixel_y = 5 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/central_streets) "jur" = ( /obj/item/tool/warning_cone{ pixel_x = -10; @@ -20183,7 +23104,8 @@ "juw" = ( /obj/item/prop/colony/used_flare, /turf/open/floor/corsat{ - icon_state = "squares" + dir = 1; + icon_state = "brown" }, /area/lv522/atmos/east_reactor/south) "juQ" = ( @@ -20202,7 +23124,7 @@ icon_state = "N"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "jvf" = ( /obj/structure/cargo_container/arious/leftmid, @@ -20251,20 +23173,49 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms/glass) +"jwx" = ( +/obj/structure/reagent_dispensers/fueltank/gas, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "jwM" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) -"jwO" = ( -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/plating, -/area/lv522/indoors/c_block/mining) +"jwP" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper C-Block - Garage Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/garage) "jwT" = ( /obj/item/tool/wet_sign, /turf/open/floor/corsat{ icon_state = "squares" }, /area/lv522/atmos/cargo_intake) +"jwV" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 16 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 16 + }, +/turf/open/floor/wood/ship, +/area/lv522/atmos/way_in_command_centre) "jxu" = ( /obj/item/reagent_container/glass/bucket/janibucket{ pixel_x = 6; @@ -20298,7 +23249,7 @@ /obj/structure/platform_decoration{ dir = 10 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "jxF" = ( /obj/structure/largecrate/guns/russian, @@ -20309,6 +23260,20 @@ /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison, /area/lv522/atmos/outdoor) +"jxT" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper A-Block Security Airlock" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Sec-Kitchen-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/kitchen) "jyf" = ( /obj/structure/machinery/colony_floodlight{ layer = 4.3; @@ -20369,6 +23334,22 @@ icon_state = "cement12" }, /area/lv522/outdoors/colony_streets/central_streets) +"jzB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/vents/pump, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/obj/structure/machinery/light, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "jzC" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/surface/table/woodentable/fancy, @@ -20406,6 +23387,13 @@ /obj/item/reagent_container/food/drinks/cans/waterbottle, /turf/open/floor/prison, /area/lv522/indoors/a_block/admin) +"jzZ" = ( +/obj/structure/machinery/landinglight/ds2/delaytwo{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/landing_zone_2) "jAd" = ( /obj/structure/prop/vehicles/crawler{ icon_state = "crawler_covered_bed" @@ -20430,10 +23418,12 @@ /turf/open/floor/prison, /area/lv522/indoors/c_block/cargo) "jAV" = ( -/mob/living/simple_animal/cat/kitten{ - dir = 8 +/obj/item/prop/alien/hugger{ + pixel_x = -12; + pixel_y = 12 }, -/turf/open/floor/prison, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/dorm_north) "jBm" = ( /obj/structure/machinery/vending/hydronutrients, @@ -20443,11 +23433,19 @@ }, /area/lv522/indoors/b_block/bridge) "jBr" = ( -/turf/open/floor/strata{ - dir = 4; - icon_state = "white_cyan1" +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/area/lv522/oob/w_y_vault) +/obj/item/stack/folding_barricade, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "jBs" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -20502,6 +23500,12 @@ }, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/north_street) +"jBY" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/prison{ + icon_state = "cell_stripe" + }, +/area/lv522/atmos/way_in_command_centre) "jCb" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 10; @@ -20518,7 +23522,7 @@ pixel_x = 14; pixel_y = -4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "jCh" = ( /obj/structure/machinery/door/airlock/almayer/maint, @@ -20579,6 +23583,18 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/hallway) +"jDc" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/turf/open/asphalt/cement{ + icon_state = "cement4" + }, +/area/lv522/outdoors/colony_streets/north_west_street) "jDy" = ( /obj/structure/stairs/perspective{ dir = 4; @@ -20603,6 +23619,16 @@ /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) +"jDN" = ( +/obj/structure/filtration/machine_96x96/distribution{ + density = 0; + pixel_y = 16 + }, +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/gm/river, +/area/lv522/atmos/sewer) "jDO" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -20610,15 +23636,24 @@ /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_street) "jEa" = ( -/turf/open/floor{ - dir = 4; - icon_state = "whiteyellowfull" +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 4 }, -/area/lv522/oob/w_y_vault) +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "jEk" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, /obj/effect/landmark/xeno_spawn, +/obj/structure/machinery/light{ + dir = 4 + }, /turf/open/floor/corsat{ icon_state = "plate" }, @@ -20636,11 +23671,16 @@ }, /turf/closed/wall/r_wall/biodome/biodome_unmeltable, /area/lv522/oob) -"jEQ" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor, -/obj/structure/pipes/standard/simple/hidden/green, +"jEF" = ( +/obj/structure/transmitter/colony_net{ + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Reactor Meeting Room"; + pixel_y = 26 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/corsat{ - icon_state = "marked" + icon_state = "plate" }, /area/lv522/atmos/east_reactor/south) "jEW" = ( @@ -20650,6 +23690,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"jEX" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/asphalt/cement, +/area/lv522/outdoors/n_rockies) "jFa" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/computer/PC{ @@ -20678,11 +23724,6 @@ /obj/structure/cargo_container/arious/rightmid, /turf/open/floor/prison, /area/lv522/atmos/cargo_intake) -"jFt" = ( -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/atmos/east_reactor/south) "jFu" = ( /obj/structure/morgue{ dir = 8 @@ -20701,7 +23742,7 @@ /area/lv522/indoors/a_block/dorms) "jFG" = ( /obj/structure/cargo_container/arious/right, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "jGa" = ( /obj/item/storage/backpack/marine/satchel{ @@ -20712,7 +23753,7 @@ pixel_x = -4; pixel_y = 6 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "jGe" = ( /obj/structure/prop/invuln/overhead_pipe{ @@ -20728,13 +23769,13 @@ /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_west_street) "jGj" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, -/turf/open/floor/prison{ - icon_state = "darkredfull2" +/obj/effect/decal/cleanable/dirt, +/obj/item/maintenance_jack, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" }, -/area/lv522/indoors/a_block/security) +/area/lv522/indoors/a_block/corpo) "jGm" = ( /obj/structure/barricade/handrail{ dir = 4 @@ -20753,12 +23794,18 @@ /obj/structure/platform_decoration{ dir = 9 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "jGK" = ( /obj/structure/largecrate/random/secure, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) +"jHa" = ( +/obj/structure/cargo_container/wy/right{ + layer = 5 + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/w_rockies) "jHb" = ( /turf/open/gm/river, /area/lv522/oob) @@ -20803,6 +23850,14 @@ }, /turf/open/floor/plating, /area/lv522/landing_zone_1) +"jIA" = ( +/obj/structure/surface/rack, +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/sheet/metal/medium_stack, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/lv522/indoors/c_block/garage) "jIG" = ( /obj/item/tool/wet_sign{ pixel_x = -11; @@ -20819,6 +23874,7 @@ }, /area/lv522/indoors/c_block/cargo) "jII" = ( +/obj/structure/largecrate/random, /turf/open/floor/prison{ dir = 10; icon_state = "floor_marked" @@ -20884,6 +23940,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) +"jJI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "jJO" = ( /obj/structure/surface/table/almayer, /turf/open/floor/corsat{ @@ -20933,6 +23998,9 @@ }, /area/lv522/atmos/north_command_centre) "jKB" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, /turf/open/asphalt/cement{ icon_state = "cement15" }, @@ -21022,6 +24090,15 @@ }, /turf/open/floor/plating, /area/lv522/oob) +"jMK" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "jMZ" = ( /obj/structure/surface/table/almayer, /obj/item/tool/pen/blue/clicky{ @@ -21034,15 +24111,6 @@ /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) -"jNk" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Westlock" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/dorms) "jNv" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/strata{ @@ -21050,6 +24118,17 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/corpo/glass) +"jNQ" = ( +/obj/structure/machinery/space_heater/radiator/red{ + dir = 4 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/indoors/a_block/dorm_north) "jNV" = ( /obj/structure/surface/table/almayer, /obj/structure/flora/pottedplant{ @@ -21116,8 +24195,25 @@ pixel_x = 3; pixel_y = -2 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) +"jOx" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper B-Block - Hydroponics Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "LV_522_Hydro-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/b_block/bridge) "jOF" = ( /obj/effect/acid_hole, /turf/closed/wall/shiva/prefabricated/reinforced, @@ -21131,17 +24227,6 @@ }, /turf/open/floor/plating, /area/lv522/oob) -"jPd" = ( -/obj/structure/machinery/door/airlock/almayer/generic, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "LV_522_Hydro-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/b_block/hydro) "jPg" = ( /obj/structure/platform_decoration, /obj/structure/stairs/perspective{ @@ -21149,7 +24234,7 @@ icon_state = "p_stair_full" }, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "jPj" = ( /obj/structure/machinery/light{ @@ -21175,12 +24260,6 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/corpo) -"jPr" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 5 - }, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/colony_streets/central_streets) "jPv" = ( /turf/open/asphalt/cement{ icon_state = "cement14" @@ -21189,17 +24268,20 @@ "jPw" = ( /turf/open/floor/plating, /area/lv522/oob) -"jPI" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating/plating_catwalk/prison, -/area/lv522/outdoors/nw_rockies) -"jPO" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_marked" +"jPz" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/structure/machinery/light{ + dir = 8 }, -/area/lv522/indoors/lone_buildings/engineering) +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/east_reactor) +"jPC" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison, +/area/lv522/atmos/outdoor) "jQa" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/prop/dam/crane{ @@ -21230,16 +24312,20 @@ /turf/open/floor/wood, /area/lv522/indoors/a_block/executive) "jRY" = ( -/obj/structure/blocker/invisible_wall, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/nw_rockies) -"jRZ" = ( -/obj/structure/largecrate/random, +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, /turf/open/floor/corsat{ - dir = 5; - icon_state = "brown" + icon_state = "squares" }, /area/lv522/atmos/cargo_intake) +"jRZ" = ( +/obj/structure/largecrate/random, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/cargo_intake) "jSk" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/camera/autoname{ @@ -21261,19 +24347,20 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) -"jSG" = ( -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_marked" - }, -/area/lv522/indoors/lone_buildings/engineering) "jSR" = ( /obj/structure/machinery/conveyor, +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor/corsat{ icon_state = "plate" }, /area/lv522/atmos/cargo_intake) +"jSU" = ( +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/indoors/a_block/corpo/glass) "jSW" = ( /obj/structure/prop/ice_colony/dense/planter_box{ dir = 9 @@ -21288,7 +24375,12 @@ }, /area/lv522/indoors/b_block/bridge) "jTb" = ( -/obj/structure/cargo_container/horizontal/blue/middle, +/obj/structure/bed/chair/comfy{ + dir = 8 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, /turf/open/floor/corsat{ icon_state = "squares" }, @@ -21324,15 +24416,13 @@ /turf/open/floor/plating, /area/lv522/atmos/cargo_intake) "jTB" = ( -/obj/structure/prop/invuln{ - desc = "big pile energy."; - icon = 'icons/obj/structures/props/ice_colony/barrel_yard.dmi'; - icon_state = "pile_0"; - name = "barrel pile" +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 }, -/obj/structure/blocker/invisible_wall, -/turf/open/auto_turf/shale/layer1, -/area/lv522/outdoors/nw_rockies) +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/cargo_intake) "jTH" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -21342,7 +24432,7 @@ icon_state = "N"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "jTJ" = ( /obj/structure/cargo_container/watatsumi/leftmid, @@ -21358,12 +24448,29 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms/glass) +"jUc" = ( +/obj/structure/largecrate/random, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/barricade/metal{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "jUe" = ( /obj/structure/prop/ice_colony/ground_wire{ dir = 4 }, /turf/closed/wall/mineral/bone_resin, /area/lv522/oob) +"jUg" = ( +/obj/item/ammo_box/magazine/l42a/ap/empty, +/turf/open/floor/prison, +/area/lv522/indoors/a_block/security) "jUk" = ( /turf/open/floor/prison{ dir = 10; @@ -21424,15 +24531,17 @@ }, /area/lv522/indoors/lone_buildings/chunk) "jUY" = ( -/obj/structure/machinery/door/poddoor/almayer/closed{ - dir = 8; - id = "Containers_west_LV522"; - name = "Emergency Lockdown" +/obj/structure/machinery/door_control/brbutton{ + id = "Reactor_garage_2" }, +/turf/closed/wall/strata_outpost/reinforced, +/area/lv522/atmos/reactor_garage) +"jVa" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ - icon_state = "marked" + icon_state = "plate" }, -/area/lv522/atmos/cargo_intake) +/area/lv522/atmos/east_reactor) "jVq" = ( /obj/structure/machinery/landinglight/ds2/delaytwo{ dir = 4 @@ -21478,8 +24587,22 @@ /area/lv522/indoors/a_block/dorms) "jVS" = ( /obj/structure/cargo_container/kelland/right, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) +"jVV" = ( +/obj/structure/prop/invuln/minecart_tracks, +/obj/structure/closet/crate/miningcar{ + layer = 3.1; + name = "\improper materials storage bin"; + pixel_y = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/ore/slag, +/obj/item/ore/slag, +/obj/item/ore/slag, +/obj/item/ore/slag, +/turf/open/floor/prison, +/area/lv522/indoors/c_block/mining) "jWr" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, /obj/effect/landmark/xeno_spawn, @@ -21494,14 +24617,6 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor/south) -"jWJ" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/corsat{ - dir = 4; - icon_state = "browncorner" - }, -/area/lv522/atmos/east_reactor/south) "jWV" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/strata{ @@ -21518,6 +24633,15 @@ icon_state = "darkpurple2" }, /area/lv522/indoors/a_block/dorms) +"jWZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/platform_decoration{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "jXc" = ( /obj/structure/bed/chair{ dir = 1 @@ -21527,6 +24651,16 @@ icon_state = "greenfull" }, /area/lv522/indoors/a_block/fitness) +"jXp" = ( +/obj/structure/prop/invuln/rope{ + pixel_x = -5; + pixel_y = 26 + }, +/obj/item/weapon/ice_axe/red{ + pixel_y = 3 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/nw_rockies) "jXQ" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 @@ -21537,16 +24671,21 @@ /obj/structure/pipes/standard/simple/hidden/green, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/nw_rockies) -"jYj" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/corsat{ - dir = 1; - icon_state = "brown" +"jYc" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 }, -/area/lv522/atmos/east_reactor/south) +/turf/open/asphalt/cement{ + icon_state = "cement1" + }, +/area/lv522/outdoors/colony_streets/north_street) +"jYj" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor) "jYp" = ( -/obj/structure/prop/maintenance_hatch{ +/obj/structure/tunnel/maint_tunnel{ pixel_y = 6 }, /turf/open/floor/prison{ @@ -21563,14 +24702,13 @@ /obj/structure/prop/invuln/ice_prefab, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/nw_rockies) -"jYv" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/corsat{ - dir = 5; - icon_state = "brown" +"jYy" = ( +/obj/structure/machinery/power/smes/buildable{ + capacity = 1e+006; + dir = 1 }, -/area/lv522/atmos/east_reactor/south) +/turf/open/floor/plating, +/area/lv522/indoors/lone_buildings/engineering) "jYE" = ( /obj/structure/machinery/power/apc/weak{ dir = 1 @@ -21591,7 +24729,7 @@ icon_state = "p_stair_full" }, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "jYZ" = ( /obj/structure/filingcabinet, @@ -21633,6 +24771,12 @@ icon_state = "cement3" }, /area/lv522/landing_zone_1) +"jZE" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, +/turf/open/gm/river, +/area/lv522/atmos/sewer) "jZI" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/space_heater/radiator/red{ @@ -21660,6 +24804,13 @@ icon_state = "white_cyan3" }, /area/lv522/indoors/a_block/medical/glass) +"kaQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "kaV" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -21681,6 +24832,13 @@ }, /turf/open/gm/river, /area/lv522/oob) +"kbb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/sewer) "kbg" = ( /obj/structure/surface/table/almayer, /obj/item/clothing/suit/storage/hazardvest, @@ -21715,6 +24873,13 @@ icon_state = "platebot" }, /area/lv522/indoors/c_block/cargo) +"kbH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "kbJ" = ( /obj/vehicle/train/cargo/trolley, /turf/open/floor/corsat{ @@ -21751,6 +24916,9 @@ icon_state = "squares" }, /area/lv522/atmos/east_reactor/east) +"kcb" = ( +/turf/closed/wall/mineral/bone_resin, +/area/lv522/atmos/west_reactor) "kcd" = ( /obj/structure/pipes/standard/manifold/hidden/green, /turf/open/floor/plating/plating_catwalk/prison, @@ -21804,13 +24972,17 @@ pixel_x = 6; pixel_y = 7 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) +"kcL" = ( +/obj/item/prop/colony/used_flare, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/n_rockies) "kcN" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/east_central_street) "kcR" = ( /obj/structure/machinery/landinglight/ds2{ @@ -21823,6 +24995,27 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"kcY" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/prison, +/area/lv522/indoors/a_block/admin) +"kda" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) +"kdf" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" + }, +/obj/structure/platform/stair_cut{ + icon_state = "platform_stair_alt" + }, +/turf/open/asphalt/cement, +/area/lv522/outdoors/n_rockies) "kdi" = ( /obj/structure/platform{ dir = 8 @@ -21837,13 +25030,13 @@ /area/lv522/indoors/c_block/mining) "kdm" = ( /obj/structure/cargo_container/wy/right, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "kdo" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_street) "kdr" = ( /obj/structure/filingcabinet{ @@ -21861,6 +25054,20 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/cargo) +"kdw" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper A-Block Corporate Office Airlock"; + req_access_txt = "100" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/corpo) "kdx" = ( /obj/structure/largecrate/random/barrel/green, /turf/open/auto_turf/shale/layer1, @@ -21882,7 +25089,7 @@ "keb" = ( /obj/effect/decal/cleanable/blood/oil/streak, /obj/effect/spawner/gibspawner/xeno, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "kel" = ( /obj/structure/barricade/handrail{ @@ -21901,23 +25108,14 @@ dir = 6; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) -"kfa" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Colony Marshals" - }, -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "Sec-Kitchen-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/security) "kfi" = ( -/obj/structure/closet/toolcloset, +/obj/structure/surface/table/almayer, +/obj/effect/landmark/objective_landmark/close, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" @@ -21928,7 +25126,7 @@ pixel_x = -9; pixel_y = 25 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "kfs" = ( /obj/structure/stairs/perspective{ @@ -21940,17 +25138,23 @@ }, /area/lv522/indoors/c_block/casino) "kfu" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - name = "overhead pipe"; - pixel_x = -24; - pixel_y = -6 +/obj/structure/machinery/conveyor{ + dir = 8; + id = "cargo_container" + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" }, -/turf/closed/wall, /area/lv522/atmos/cargo_intake) "kfv" = ( -/turf/closed/wall/shiva/prefabricated, -/area/lv522/outdoors/colony_streets/south_east_street) +/obj/structure/largecrate/random/secure, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/lv522/landing_zone_2/ceiling) "kfw" = ( /obj/structure/prop/ice_colony/dense/planter_box{ dir = 5 @@ -21962,6 +25166,14 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/kitchen) +"kfA" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" + }, +/area/lv522/atmos/cargo_intake) "kfD" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/shiva{ @@ -21969,39 +25181,11 @@ }, /area/lv522/indoors/a_block/kitchen) "kfF" = ( -/obj/structure/desertdam/decals/road_edge{ - icon_state = "road_edge_decal8"; - pixel_x = -16; - pixel_y = -16 - }, -/obj/structure/desertdam/decals/road_edge{ - icon_state = "road_edge_decal7"; - pixel_x = 16; - pixel_y = -16 - }, -/obj/structure/desertdam/decals/road_edge{ - icon_state = "road_edge_decal6"; - pixel_x = 16; - pixel_y = 16 - }, -/obj/structure/desertdam/decals/road_edge{ - icon_state = "road_edge_decal5"; - pixel_x = -16; - pixel_y = 16 - }, -/obj/structure/holohoop{ - density = 0; - pixel_y = 27 - }, -/obj/item/toy/beach_ball/holoball{ - pixel_x = 8; - pixel_y = 5 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "squares" }, -/area/lv522/indoors/a_block/fitness) +/area/lv522/atmos/cargo_intake) "kfG" = ( /obj/structure/prop/dam/crane/cargo{ dir = 1; @@ -22014,15 +25198,35 @@ /turf/open/auto_turf/shale/layer1, /area/lv522/landing_zone_2) "kgb" = ( -/obj/structure/prop/invuln{ - desc = "big pile energy."; - icon = 'icons/obj/structures/props/ice_colony/barrel_yard.dmi'; - icon_state = "pile_0"; - name = "barrel pile" +/obj/item/weapon/twohanded/folded_metal_chair, +/turf/open/floor/corsat{ + icon_state = "squares" }, -/obj/structure/blocker/invisible_wall, -/turf/open/auto_turf/shale/layer1, -/area/lv522/outdoors/w_rockies) +/area/lv522/atmos/cargo_intake) +"kgm" = ( +/obj/structure/surface/table/almayer, +/obj/structure/prop/server_equipment/laptop/on, +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) +"kgC" = ( +/obj/structure/machinery/conveyor{ + dir = 5; + id = "cargo_container" + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/cargo_intake) "kgQ" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -22030,6 +25234,15 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/north_street) +"kgR" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "khd" = ( /turf/closed/wall/strata_outpost/reinforced/hull, /area/lv522/indoors/c_block/cargo) @@ -22040,6 +25253,15 @@ icon_state = "floor_marked" }, /area/lv522/indoors/lone_buildings/outdoor_bot) +"khm" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "kho" = ( /obj/structure/dispenser, /turf/open/floor/prison{ @@ -22060,11 +25282,6 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison, /area/lv522/indoors/a_block/admin) -"khB" = ( -/obj/structure/girder/reinforced, -/obj/structure/blocker/forcefield/vehicles, -/turf/closed/wall/mineral/bone_resin, -/area/lv522/oob) "khG" = ( /obj/structure/largecrate/random/barrel/yellow, /turf/open/auto_turf/shale/layer1, @@ -22080,10 +25297,30 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/c_block/cargo) +"khR" = ( +/obj/structure/largecrate/random, +/obj/item/storage/box/packet/high_explosive{ + pixel_x = -5; + pixel_y = -14 + }, +/obj/item/storage/pill_bottle/packet/oxycodone{ + pixel_x = -1; + pixel_y = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/colony_streets/north_street) "kib" = ( -/obj/structure/blocker/invisible_wall, -/turf/open/auto_turf/shale/layer1, -/area/lv522/outdoors/w_rockies) +/obj/item/clothing/head/hardhat/white, +/obj/item/prop/alien/hugger{ + pixel_x = 11; + pixel_y = -9 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/cargo_intake) "kie" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -22161,6 +25398,10 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"kiT" = ( +/obj/item/stack/medical/bruise_pack, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) "kiY" = ( /obj/structure/ore_box{ pixel_x = -4 @@ -22191,7 +25432,7 @@ dir = 4; indestructible = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/oob) "kjs" = ( /obj/item/stack/sheet/metal, @@ -22207,7 +25448,7 @@ }, /area/lv522/indoors/a_block/kitchen/glass) "kjU" = ( -/obj/structure/cargo_container/horizontal/blue/bottom, +/obj/item/reagent_container/food/snacks/donut, /turf/open/floor/corsat{ icon_state = "squares" }, @@ -22218,6 +25459,13 @@ icon_state = "squares" }, /area/lv522/atmos/west_reactor) +"kkq" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/machinery/light, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor) "kkr" = ( /obj/structure/prop/ice_colony/ground_wire{ dir = 8 @@ -22252,6 +25500,12 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/cargo) +"kkR" = ( +/obj/structure/bed/chair/comfy, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "kkS" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/prop/cash_register/off/open{ @@ -22293,6 +25547,7 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/corsat{ icon_state = "squares" }, @@ -22312,10 +25567,6 @@ /obj/item/trash/ceramic_plate{ pixel_y = 21 }, -/obj/item/storage/box/donkpockets{ - pixel_x = 13; - pixel_y = -11 - }, /turf/open/floor/corsat{ icon_state = "squares" }, @@ -22352,6 +25603,19 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) +"kmw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/uscm_mre{ + pixel_x = -12; + pixel_y = 7 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "kmz" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/corsat{ @@ -22373,6 +25637,13 @@ /obj/structure/platform_decoration{ dir = 4 }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, @@ -22455,6 +25726,14 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor/south) +"knT" = ( +/obj/structure/machinery/cm_vending/sorted/tech/tool_storage{ + density = 0; + pixel_x = -6; + pixel_y = 11 + }, +/turf/open/floor/prison, +/area/lv522/indoors/lone_buildings/engineering) "knW" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/camera/autoname{ @@ -22506,17 +25785,6 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/admin) -"kpm" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/obj/structure/prop/invuln/overhead_pipe{ - name = "overhead pipe"; - pixel_x = -20; - pixel_y = 13 - }, -/turf/open/floor/corsat{ - icon_state = "squares" - }, -/area/lv522/atmos/east_reactor/south) "kpo" = ( /turf/open/floor/corsat{ dir = 4; @@ -22543,6 +25811,17 @@ /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) "kpE" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, +/obj/effect/landmark/xeno_spawn, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) +"kpG" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/corsat{ dir = 1; icon_state = "browncorner" @@ -22573,16 +25852,12 @@ icon_state = "cement2" }, /area/lv522/outdoors/colony_streets/north_east_street) -"kqr" = ( -/obj/structure/blocker/forcefield/vehicles, -/turf/open/floor/corsat, -/area/lv522/atmos/cargo_intake) "kqJ" = ( /obj/structure/barricade/wooden{ dir = 4 }, /obj/item/stack/sheet/metal, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "kqT" = ( /obj/item/ammo_magazine/rifle/heap{ @@ -22591,11 +25866,20 @@ /turf/open/floor/prison, /area/lv522/outdoors/colony_streets/north_east_street) "kqX" = ( -/obj/structure/cargo_container/kelland/left, +/obj/item/clipboard, /turf/open/floor/corsat{ icon_state = "squares" }, /area/lv522/atmos/cargo_intake) +"kri" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/reactor_garage) "krj" = ( /obj/structure/prop/ice_colony/ground_wire{ dir = 1 @@ -22615,6 +25899,7 @@ /area/lv522/indoors/c_block/cargo) "krw" = ( /obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/monkey_spawn, /turf/open/floor/corsat, /area/lv522/atmos/cargo_intake) "kry" = ( @@ -22651,8 +25936,8 @@ pixel_y = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/strata{ + icon_state = "blue1" }, /area/lv522/outdoors/colony_streets/windbreaker/observation) "ksf" = ( @@ -22663,8 +25948,8 @@ /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/nw_rockies) "ksk" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 6 +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 8 }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/outdoors/colony_streets/windbreaker/observation) @@ -22674,14 +25959,12 @@ icon_state = "brown" }, /area/lv522/atmos/north_command_centre) -"ksv" = ( -/obj/structure/prop/invuln/overhead_pipe{ - name = "overhead pipe"; - pixel_x = -20; - pixel_y = 13 - }, +"kss" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "plate" }, /area/lv522/atmos/east_reactor/south) "ksA" = ( @@ -22689,6 +25972,25 @@ icon_state = "plate" }, /area/lv522/indoors/c_block/mining) +"ksO" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/barricade/metal{ + dir = 1 + }, +/obj/structure/barricade/metal{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "kti" = ( /obj/structure/platform, /obj/structure/platform{ @@ -22710,6 +26012,14 @@ }, /turf/open/floor/plating, /area/lv522/indoors/a_block/dorms) +"kua" = ( +/obj/effect/landmark/objective_landmark/close, +/obj/structure/closet/crate, +/obj/item/stack/sheet/plasteel/large_stack, +/turf/open/floor/plating{ + icon_state = "platebot" + }, +/area/lv522/indoors/c_block/cargo) "kug" = ( /obj/structure/closet/crate/trashcart, /obj/item/trash/pistachios, @@ -22755,6 +26065,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/c_block/casino) +"kuN" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "kvc" = ( /obj/structure/cargo_container/horizontal/blue/middle, /turf/open/floor/prison, @@ -22790,8 +26109,8 @@ "kvM" = ( /obj/structure/pipes/vents/pump, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/strata{ + icon_state = "blue1" }, /area/lv522/outdoors/colony_streets/windbreaker/observation) "kwc" = ( @@ -22803,6 +26122,9 @@ icon_state = "cement1" }, /area/lv522/outdoors/colony_streets/north_street) +"kwg" = ( +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/way_in_command_centre) "kwj" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -22844,11 +26166,6 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security/glass) -"kxh" = ( -/obj/structure/girder/displaced, -/obj/structure/blocker/forcefield/vehicles, -/turf/open/floor/corsat, -/area/lv522/atmos/cargo_intake) "kxm" = ( /obj/effect/landmark/monkey_spawn, /turf/open/floor/corsat{ @@ -22872,6 +26189,12 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/mining) +"kxH" = ( +/obj/item/prop/colony/used_flare, +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/lv522/outdoors/colony_streets/north_street) "kxW" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ @@ -22893,12 +26216,14 @@ /turf/open/floor/prison, /area/lv522/indoors/c_block/cargo) "kyz" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -10; - pixel_y = 25 +/obj/item/storage/box/donkpockets{ + pixel_x = -14; + pixel_y = -2 }, -/turf/open/auto_turf/shale/layer2, -/area/lv522/outdoors/colony_streets/central_streets) +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/cargo_intake) "kyB" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 @@ -22930,20 +26255,25 @@ dir = 1 }, /turf/open/floor/corsat{ + dir = 10; icon_state = "brown" }, /area/lv522/atmos/cargo_intake) +"kzc" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/cargo_intake) "kzd" = ( -/obj/structure/machinery/door_control{ - id = "Corpo Vault"; - name = "Cargo Shutter Control"; - pixel_y = 29 +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 }, -/turf/open/floor{ - dir = 4; - icon_state = "whiteyellowfull" +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/area/lv522/oob/w_y_vault) +/area/lv522/atmos/way_in_command_centre) "kze" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/prison{ @@ -22974,8 +26304,14 @@ pixel_x = 8; pixel_y = -5 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/east_central_street) +"kzG" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "kzR" = ( /obj/structure/machinery/door/airlock/almayer/generic{ name = "Bathroom" @@ -23018,7 +26354,7 @@ dir = 4 }, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "brown" }, /area/lv522/atmos/cargo_intake) "kBj" = ( @@ -23032,26 +26368,18 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/security) "kBm" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/space_heater, -/obj/item/reagent_container/food/drinks/coffee{ - pixel_x = 5; - pixel_y = 9 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 }, /turf/open/floor/corsat{ - icon_state = "squares" + dir = 10; + icon_state = "brown" }, -/area/lv522/atmos/cargo_intake) +/area/lv522/atmos/east_reactor/south) "kBq" = ( -/obj/structure/prop/ice_colony/ground_wire{ - dir = 1 - }, -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -10; - pixel_y = 29 - }, -/turf/open/auto_turf/shale/layer1, -/area/lv522/outdoors/colony_streets/central_streets) +/obj/structure/girder, +/turf/open/floor/plating, +/area/lv522/atmos/cargo_intake) "kBv" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 10 @@ -23226,6 +26554,10 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/admin) +"kEj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/reactor_garage) "kEl" = ( /obj/structure/platform_decoration{ dir = 4 @@ -23318,10 +26650,9 @@ /turf/open/floor/plating, /area/lv522/indoors/c_block/mining) "kFo" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, -/turf/open/floor/corsat, -/area/lv522/atmos/east_reactor/south) +/obj/item/clothing/suit/storage/marine/M3G, +/turf/closed/wall/mineral/bone_resin, +/area/lv522/oob) "kFx" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/strata{ @@ -23341,6 +26672,13 @@ icon_state = "cement9" }, /area/lv522/outdoors/colony_streets/north_street) +"kFP" = ( +/obj/structure/platform/strata{ + dir = 8 + }, +/obj/structure/platform/strata, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) "kGa" = ( /obj/structure/largecrate/random{ pixel_x = -5 @@ -23366,15 +26704,17 @@ /area/lv522/indoors/b_block/hydro) "kGX" = ( /obj/structure/tunnel, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_street) "kHd" = ( -/obj/effect/landmark/corpsespawner/wy/manager, -/turf/open/floor{ - dir = 4; - icon_state = "whiteyellowfull" +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 }, -/area/lv522/oob/w_y_vault) +/turf/open/floor/almayer{ + dir = 1; + icon_state = "w-y0" + }, +/area/lv522/atmos/way_in_command_centre) "kHy" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/flashbangs{ @@ -23446,6 +26786,14 @@ icon_state = "floor_marked" }, /area/lv522/outdoors/colony_streets/north_west_street) +"kIs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/plating, +/area/lv522/indoors/lone_buildings/engineering) "kIM" = ( /obj/item/ammo_magazine/rifle/m4ra/ap{ current_rounds = 0 @@ -23459,21 +26807,8 @@ /obj/effect/decal/warning_stripes{ icon_state = "SW-out" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) -"kIY" = ( -/obj/structure/platform, -/obj/structure/safe, -/obj/item/spacecash/c1000, -/obj/item/spacecash/c1000, -/obj/item/spacecash/c1000, -/obj/item/spacecash/c1000, -/obj/item/spacecash/c1000, -/turf/open/floor/strata{ - dir = 4; - icon_state = "white_cyan1" - }, -/area/lv522/oob/w_y_vault) "kIZ" = ( /obj/structure/machinery/door/poddoor/shutters/almayer/open{ dir = 4; @@ -23498,6 +26833,17 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"kJc" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 1; + pixel_y = 3 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "kJh" = ( /obj/item/stack/rods, /obj/structure/platform, @@ -23546,6 +26892,12 @@ icon_state = "2,0" }, /area/lv522/oob) +"kKj" = ( +/obj/structure/machinery/colony_floodlight, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/outdoors/colony_streets/north_east_street) "kKD" = ( /obj/effect/landmark/monkey_spawn, /obj/structure/pipes/standard/simple/hidden/green, @@ -23572,15 +26924,6 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) -"kLk" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, -/turf/open/floor/strata{ - dir = 4; - icon_state = "white_cyan1" - }, -/area/lv522/oob/w_y_vault) "kLs" = ( /obj/item/clothing/mask/facehugger{ desc = "It has some sort of a tube at the end of its tail. What the hell is this thing?"; @@ -23621,7 +26964,7 @@ /obj/structure/machinery/power/apc/weak{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/indoors/a_block/bridges/dorms_fitness) "kMr" = ( /obj/structure/coatrack{ @@ -23652,6 +26995,9 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) +"kMT" = ( +/turf/open/shuttle/dropship/can_surgery/dark_grey, +/area/lv522/landing_zone_forecon/UD6_Typhoon) "kNe" = ( /obj/item/shard{ icon_state = "medium" @@ -23659,10 +27005,12 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/admin) "kNj" = ( -/obj/structure/prop/invuln/ice_prefab/trim{ - dir = 8 +/obj/structure/prop/vehicles/crawler{ + dir = 8; + icon_state = "crawler_crate_alt2"; + layer = 3.1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "kNw" = ( /obj/item/prop/alien/hugger, @@ -23684,8 +27032,7 @@ "kNM" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1; - name = "\improper Dormitories"; - welded = 1 + name = "\improper Dormitories" }, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -23699,6 +27046,16 @@ icon_state = "rasputin15" }, /area/lv522/landing_zone_forecon/UD6_Tornado) +"kNY" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper A-Block Dorms And Office Airlock"; + welded = 1 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/dorms) "kOa" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -23718,8 +27075,8 @@ "kOz" = ( /obj/structure/machinery/vending/cigarette/colony, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/strata{ + icon_state = "blue1" }, /area/lv522/outdoors/colony_streets/windbreaker/observation) "kOE" = ( @@ -23728,6 +27085,15 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/atmos/cargo_intake) +"kOF" = ( +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "kOJ" = ( /obj/structure/machinery/conveyor{ dir = 8; @@ -23813,20 +27179,14 @@ /area/lv522/indoors/a_block/dorms) "kQc" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/strata{ + icon_state = "blue1" }, /area/lv522/outdoors/colony_streets/windbreaker/observation) "kQw" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 +/turf/open/floor/corsat{ + icon_state = "browncorner" }, -/turf/open/floor/corsat, /area/lv522/atmos/cargo_intake) "kQJ" = ( /obj/item/explosive/mine/active{ @@ -23856,7 +27216,7 @@ pixel_y = 1 }, /obj/effect/spawner/gibspawner/xeno, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "kQW" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -23882,7 +27242,8 @@ /obj/structure/prop/invuln/ice_prefab/trim{ dir = 6 }, -/turf/open/auto_turf/shale/layer0, +/obj/structure/cargo_container/grant/rightmid, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "kRg" = ( /obj/structure/pipes/standard/manifold/hidden/green{ @@ -23980,7 +27341,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "kSs" = ( /obj/structure/filingcabinet/chestdrawer{ @@ -24004,9 +27365,10 @@ /area/lv522/atmos/cargo_intake) "kSR" = ( /obj/structure/prop/invuln/ice_prefab/trim{ - dir = 4 + dir = 6 }, -/turf/open/auto_turf/shale/layer0, +/obj/structure/cargo_container/grant/right, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "kSS" = ( /obj/structure/cargo_container/horizontal/blue/middle, @@ -24035,6 +27397,7 @@ dir = 4 }, /obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/light, /turf/open/floor/corsat{ icon_state = "plate" }, @@ -24051,8 +27414,13 @@ }, /area/lv522/indoors/a_block/security/glass) "kTn" = ( -/obj/structure/cargo_container/kelland/left, -/turf/open/auto_turf/shale/layer0, +/obj/structure/prop/invuln/ice_prefab/trim{ + dir = 6 + }, +/obj/structure/cargo_container/kelland/left{ + layer = 2.9 + }, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "kTs" = ( /obj/effect/decal/cleanable/blood/oil, @@ -24095,17 +27463,24 @@ /turf/open/floor/prison, /area/lv522/indoors/a_block/security/glass) "kUs" = ( -/obj/structure/pipes/standard/manifold/hidden/green, +/obj/structure/prop/ice_colony/ground_wire{ + dir = 8 + }, /turf/open/floor/corsat{ - icon_state = "plate" + icon_state = "brown" }, /area/lv522/atmos/cargo_intake) "kUF" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_x = -1; + pixel_y = 2 }, -/turf/open/floor/corsat, -/area/lv522/atmos/cargo_intake) +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "kUH" = ( /obj/structure/closet/emcloset, /turf/open/floor/prison{ @@ -24113,9 +27488,22 @@ }, /area/lv522/indoors/a_block/security) "kUJ" = ( -/obj/structure/cargo_container/kelland/right, -/turf/open/auto_turf/shale/layer0, +/obj/structure/prop/invuln/ice_prefab/trim{ + dir = 4 + }, +/obj/structure/cargo_container/kelland/right{ + layer = 2.9 + }, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) +"kUM" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Corporate Office Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/security) "kUP" = ( /obj/structure/machinery/light{ dir = 1 @@ -24126,16 +27514,14 @@ }, /area/lv522/indoors/a_block/security) "kVa" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 4 - }, -/obj/structure/bed/chair{ - dir = 1 +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" }, /turf/open/floor/corsat{ icon_state = "squares" }, -/area/lv522/atmos/cargo_intake) +/area/lv522/atmos/east_reactor/south) "kVh" = ( /obj/item/prop/colony/used_flare, /turf/open/floor/prison, @@ -24155,8 +27541,12 @@ /area/lv522/indoors/a_block/dorms) "kVG" = ( /obj/structure/cargo_container/kelland/left, +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/auto_turf/shale/layer2, /area/lv522/outdoors/w_rockies) +"kVO" = ( +/turf/open/floor/wood/ship, +/area/lv522/atmos/way_in_command_centre) "kVP" = ( /obj/effect/spawner/gibspawner/xeno, /obj/effect/decal/cleanable/dirt, @@ -24188,7 +27578,8 @@ dir = 8 }, /turf/open/floor/corsat{ - icon_state = "squares" + dir = 8; + icon_state = "browncorner" }, /area/lv522/atmos/cargo_intake) "kWi" = ( @@ -24206,7 +27597,6 @@ }, /area/lv522/landing_zone_1/ceiling) "kWD" = ( -/obj/structure/pipes/standard/simple/hidden/green, /obj/structure/prop/vehicles/crawler{ icon_state = "crawler_crate_alt2"; layer = 3.1 @@ -24240,12 +27630,24 @@ }, /area/lv522/atmos/east_reactor/south) "kXc" = ( -/obj/structure/pipes/standard/simple/hidden/green, /obj/structure/prop/ice_colony/ground_wire{ dir = 8 }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) +"kXe" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/w_rockies) +"kXf" = ( +/obj/item/stack/sheet/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/lv522/landing_zone_2) "kXg" = ( /obj/structure/machinery/door/airlock/almayer/medical{ name = "Medical Laboratory Operating Theatre"; @@ -24278,23 +27680,19 @@ /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/w_rockies) "kXB" = ( -/obj/structure/prop/invuln/ice_prefab{ - dir = 5 +/obj/item/stack/sheet/metal, +/turf/open/floor/corsat{ + icon_state = "brown" }, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/w_rockies) +/area/lv522/atmos/cargo_intake) "kXY" = ( -/obj/structure/platform_decoration, -/turf/open/floor/strata{ - dir = 4; - icon_state = "white_cyan1" - }, -/area/lv522/oob/w_y_vault) +/turf/open/floor/prison, +/area/lv522/atmos/way_in_command_centre) "kYm" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "kYu" = ( /obj/structure/surface/table/almayer{ @@ -24319,8 +27717,8 @@ /obj/structure/machinery/light/small{ dir = 4 }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/strata{ + icon_state = "blue1" }, /area/lv522/outdoors/colony_streets/windbreaker/observation) "kYM" = ( @@ -24330,6 +27728,15 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security) +"kZe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "kZj" = ( /obj/item/ammo_magazine/rifle/m4ra/ap{ current_rounds = 0 @@ -24379,30 +27786,31 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/kitchen/damage) -"lau" = ( -/obj/item/stack/sheet/metal, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +"lag" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/power/apc/weak{ + dir = 1 }, /turf/open/floor/prison{ - dir = 4; - icon_state = "blue" + icon_state = "floor_plate" }, -/area/lv522/indoors/a_block/admin) -"laB" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ +/area/lv522/atmos/way_in_command_centre) +"lao" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/sewer) +"lau" = ( +/obj/item/stack/sheet/metal, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ +/turf/open/floor/prison{ dir = 4; - id = "LV522CIC_1"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" + icon_state = "blue" }, /area/lv522/indoors/a_block/admin) "laX" = ( @@ -24418,7 +27826,7 @@ layer = 4.2; pixel_y = 21 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "lbg" = ( /obj/structure/surface/table/almayer{ @@ -24434,18 +27842,20 @@ }, /area/lv522/indoors/a_block/dorms) "lbo" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/structure/platform{ - dir = 8 +/area/lv522/atmos/way_in_command_centre) +"lbt" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Reactor_entry_1" }, -/turf/open/floor/strata{ - dir = 4; - icon_state = "white_cyan1" +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" }, -/area/lv522/oob/w_y_vault) +/area/lv522/atmos/way_in_command_centre) "lbA" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 @@ -24460,8 +27870,22 @@ /area/lv522/indoors/a_block/admin) "lbH" = ( /obj/structure/largecrate/random, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/south_street) +"lbI" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 1; + pixel_x = -1; + pixel_y = 3 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "lbK" = ( /obj/structure/barricade/deployable{ dir = 8 @@ -24499,11 +27923,11 @@ }, /area/lv522/indoors/b_block/bar) "lcP" = ( -/obj/structure/surface/table/almayer, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "brown" }, -/area/lv522/atmos/east_reactor/south) +/area/lv522/atmos/west_reactor) "lcT" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/camera/autoname{ @@ -24524,6 +27948,19 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/admin) +"ldi" = ( +/obj/structure/machinery/light, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/cargo_intake) +"ldr" = ( +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" + }, +/obj/effect/spawner/gibspawner/xeno, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "ldu" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -24531,6 +27968,15 @@ /obj/effect/landmark/yautja_teleport, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_west_street) +"ldy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "cell_stripe" + }, +/area/lv522/atmos/reactor_garage) "ldC" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/plating, @@ -24541,26 +27987,6 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_west_street) -"lea" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "\improper Marshall Office Interrogation"; - req_access = null - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "Sec-Kitchen-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/security) "leg" = ( /turf/open/floor/prison{ dir = 10; @@ -24595,14 +28021,25 @@ /obj/item/prop/alien/hugger, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) +"leG" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Reactor_entry_2" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) "leH" = ( /obj/structure/barricade/deployable{ dir = 8 }, -/obj/item/clothing/suit/storage/marine/rto, +/obj/item/clothing/suit/storage/marine/medium/rto, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ - icon_state = "squares" + dir = 4; + icon_state = "brown" }, /area/lv522/atmos/east_reactor/south) "leI" = ( @@ -24644,6 +28081,18 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/dorms) +"lfj" = ( +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) +"lfA" = ( +/obj/structure/closet/crate, +/obj/item/weapon/classic_baton, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/lv522/landing_zone_2) "lfS" = ( /turf/open/asphalt/cement{ icon_state = "cement2" @@ -24667,7 +28116,7 @@ dir = 1 }, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "lhb" = ( /obj/structure/prop/invuln/ice_prefab{ @@ -24685,11 +28134,23 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/admin) +"lhp" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/barricade/deployable, +/obj/item/weapon/gun/rifle/m41a{ + current_mag = null + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "lhC" = ( /obj/structure/prop/invuln/ice_prefab{ - dir = 9 + dir = 5 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "lhD" = ( /obj/structure/barricade/handrail{ @@ -24734,6 +28195,13 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/security) +"lit" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/cargo_intake) "liD" = ( /obj/item/prop/alien/hugger, /turf/open/floor/prison{ @@ -24741,30 +28209,54 @@ icon_state = "floor_marked" }, /area/lv522/atmos/cargo_intake) +"liK" = ( +/obj/item/prop/colony/used_flare, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "liN" = ( /obj/structure/pipes/vents/pump, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) "ljd" = ( -/obj/item/reagent_container/food/snacks/donut, -/turf/open/floor/corsat, -/area/lv522/atmos/cargo_intake) +/obj/item/prop/colony/used_flare, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "ljm" = ( -/obj/item/clipboard, -/turf/open/floor/corsat, -/area/lv522/atmos/cargo_intake) -"ljq" = ( -/obj/item/weapon/twohanded/folded_metal_chair, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, +/obj/effect/landmark/xeno_spawn, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, /turf/open/floor/corsat{ icon_state = "squares" }, +/area/lv522/atmos/east_reactor/south) +"ljq" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating, /area/lv522/atmos/cargo_intake) "ljr" = ( /turf/closed/shuttle/elevator{ dir = 10 }, /area/lv522/indoors/c_block/mining) +"ljA" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/gm/river, +/area/lv522/atmos/filt) "ljQ" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, /obj/effect/landmark/corpsespawner/colonist/burst, @@ -24786,35 +28278,24 @@ /obj/item/prop/colony/used_flare, /turf/open/floor/prison, /area/lv522/indoors/a_block/kitchen) -"lko" = ( -/obj/structure/prop/invuln/ice_prefab{ - dir = 9 - }, -/obj/structure/prop/invuln/ice_prefab/roof_greeble{ - icon_state = "solarpanel1" - }, -/turf/open/auto_turf/shale/layer2, -/area/lv522/outdoors/w_rockies) -"lkr" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - welded = 1 +"lkl" = ( +/obj/structure/machinery/light{ + dir = 4 }, /turf/open/floor/corsat{ - icon_state = "marked" + icon_state = "plate" }, -/area/lv522/indoors/c_block/casino) +/area/lv522/atmos/east_reactor/south) +"lko" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/corsat, +/area/lv522/atmos/cargo_intake) "lkH" = ( /obj/item/ammo_magazine/rifle/heap{ current_rounds = 0 }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/admin) -"llc" = ( -/obj/structure/prop/invuln/ice_prefab{ - dir = 10 - }, -/turf/open/auto_turf/shale/layer1, -/area/lv522/outdoors/w_rockies) "llA" = ( /obj/effect/decal/cleanable/blood/drip, /obj/structure/pipes/standard/simple/hidden/green, @@ -24822,16 +28303,21 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/kitchen) -"llJ" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" +"llG" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 }, -/turf/open/floor/strata{ - dir = 4; - icon_state = "white_cyan1" +/turf/open/floor/corsat{ + dir = 6; + icon_state = "brown" }, -/area/lv522/oob/w_y_vault) +/area/lv522/atmos/east_reactor/south) +"llJ" = ( +/obj/structure/machinery/light, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "llM" = ( /obj/item/tool/kitchen/knife/butcher, /obj/effect/decal/cleanable/dirt, @@ -24841,7 +28327,7 @@ /area/lv522/indoors/a_block/kitchen) "llU" = ( /obj/structure/prop/invuln/ice_prefab, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "llX" = ( /obj/structure/prop/invuln/ice_prefab{ @@ -24879,8 +28365,10 @@ /obj/structure/barricade/deployable{ dir = 8 }, +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ - icon_state = "squares" + dir = 4; + icon_state = "brown" }, /area/lv522/atmos/east_reactor/south) "lmz" = ( @@ -24888,7 +28376,7 @@ current_mag = null }, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "plate" }, /area/lv522/atmos/east_reactor/south) "lmA" = ( @@ -24918,6 +28406,15 @@ icon_state = "floor_plate" }, /area/lv522/indoors/lone_buildings/outdoor_bot) +"lmI" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper A-Block Dorms And Office Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/dorms) "lmJ" = ( /obj/structure/prop/dam/crane/cargo, /turf/open/floor/plating, @@ -24928,16 +28425,27 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/dorms) -"lmY" = ( -/obj/item/clothing/suit/storage/marine/medium, -/turf/open/floor/corsat{ - icon_state = "squares" +"lmW" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, +/obj/item/stack/folding_barricade, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) +"lmY" = ( +/turf/closed/wall/strata_outpost, /area/lv522/atmos/east_reactor/south) "lnd" = ( -/obj/item/clothing/suit/storage/marine/medium, -/turf/closed/wall/mineral/bone_resin, -/area/lv522/oob) +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/prison{ + icon_state = "cell_stripe" + }, +/area/lv522/atmos/east_reactor/south) "lnj" = ( /obj/structure/barricade/wooden{ dir = 1 @@ -24948,6 +28456,9 @@ /area/lv522/indoors/a_block/kitchen/glass) "lnC" = ( /obj/structure/largecrate/supply/supplies/water, +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor/corsat{ icon_state = "plate" }, @@ -24965,6 +28476,18 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"lnK" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/asphalt/cement{ + icon_state = "cement1" + }, +/area/lv522/outdoors/colony_streets/north_street) "lnL" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 1 @@ -25015,6 +28538,15 @@ icon_state = "brown" }, /area/lv522/atmos/cargo_intake) +"loS" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/item/prop/alien/hugger, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "lpi" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -25035,6 +28567,10 @@ icon_state = "floor_marked" }, /area/lv522/indoors/lone_buildings/storage_blocks) +"lpy" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/filt) "lpH" = ( /obj/structure/barricade/handrail{ dir = 4 @@ -25042,18 +28578,26 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) -"lpP" = ( -/obj/structure/largecrate/random/mini/med, -/turf/open/auto_turf/shale/layer0, -/area/lv522/landing_zone_2/ceiling) "lpY" = ( /obj/structure/pipes/standard/manifold/hidden/green, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/security/glass) "lqb" = ( -/obj/structure/blocker/forcefield/vehicles, -/turf/closed/wall/r_wall/biodome/biodome_unmeltable, +/turf/closed/wall/strata_outpost/reinforced, /area/lv522/atmos/cargo_intake) +"lqd" = ( +/obj/structure/largecrate/random, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison, +/area/lv522/atmos/outdoor) +"lqI" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 9; + pixel_y = 25 + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "lqL" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/barricade/wooden, @@ -25064,9 +28608,21 @@ }, /area/lv522/indoors/a_block/bridges/garden_bridge) "lqY" = ( -/obj/structure/prop/invuln/ice_prefab, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/w_rockies) +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/sheet/metal, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/cargo_intake) +"lrd" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor/south) "lrh" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ @@ -25079,6 +28635,18 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) +"lrr" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Reactor_garage_3" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/reactor_garage) "lrt" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -25089,13 +28657,11 @@ }, /area/lv522/indoors/a_block/security) "lrG" = ( -/obj/item/prop/alien/hugger{ - pixel_x = 11; - pixel_y = -9 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 }, -/obj/item/clothing/head/hardhat/white, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "plate" }, /area/lv522/atmos/cargo_intake) "lrJ" = ( @@ -25106,6 +28672,12 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/kitchen) +"lrM" = ( +/turf/open/floor/corsat{ + dir = 8; + icon_state = "browncorner" + }, +/area/lv522/atmos/reactor_garage) "lrQ" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, /turf/open/floor/corsat{ @@ -25126,6 +28698,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) +"lsG" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_west_street) "lsR" = ( /obj/structure/fence{ layer = 2.9 @@ -25145,14 +28724,22 @@ /obj/structure/platform{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "lty" = ( /obj/structure/barricade/wooden{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) +"ltB" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_east_street) "ltC" = ( /obj/structure/bed/chair/comfy, /obj/structure/pipes/standard/simple/hidden/green{ @@ -25160,14 +28747,6 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) -"ltI" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Westlock" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/dorms) "lui" = ( /obj/effect/decal/cleanable/blood/drip, /obj/structure/pipes/standard/simple/hidden/green{ @@ -25175,12 +28754,19 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/security) +"lul" = ( +/obj/structure/surface/table/almayer, +/obj/item/frame/fire_alarm, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "lum" = ( /obj/structure/platform, /obj/structure/platform{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/south_east_street) "lvb" = ( /obj/structure/prop/ice_colony/ground_wire{ @@ -25190,7 +28776,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "lvl" = ( /obj/structure/surface/rack, @@ -25199,7 +28785,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "lvF" = ( /obj/item/tool/surgery/circular_saw, @@ -25209,11 +28795,9 @@ }, /area/lv522/indoors/a_block/medical) "lvH" = ( -/obj/structure/prop/invuln/ice_prefab{ - icon_state = "fab_2" - }, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/w_rockies) +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat, +/area/lv522/atmos/cargo_intake) "lvN" = ( /obj/structure/fence, /obj/effect/decal/warning_stripes{ @@ -25236,6 +28820,14 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/corpo/glass) +"lwc" = ( +/obj/structure/prop/vehicles{ + icon_state = "truck_damaged" + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "lwm" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ @@ -25243,6 +28835,13 @@ icon_state = "browncorner" }, /area/lv522/atmos/east_reactor/south) +"lwr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/sewer) "lwv" = ( /obj/structure/machinery/light{ dir = 8 @@ -25281,11 +28880,8 @@ /turf/open/floor/prison, /area/lv522/indoors/a_block/admin) "lxj" = ( -/obj/structure/prop/invuln/ice_prefab{ - dir = 1; - icon_state = "fab_2" - }, -/turf/open/auto_turf/shale/layer0, +/obj/structure/prop/invuln/ice_prefab, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "lxp" = ( /obj/structure/machinery/light{ @@ -25312,6 +28908,10 @@ "lxL" = ( /turf/open/floor/prison, /area/lv522/indoors/a_block/kitchen) +"lxN" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/indoors/a_block/corpo/glass) "lxW" = ( /obj/structure/cargo_container/kelland/left, /turf/open/floor/corsat{ @@ -25328,8 +28928,15 @@ /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) +"lyu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "lyD" = ( /turf/open/asphalt/cement{ icon_state = "cement15" @@ -25346,18 +28953,15 @@ }, /area/lv522/indoors/a_block/admin) "lzb" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" - }, -/obj/structure/platform{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/space_heater/radiator/red{ + dir = 8 }, -/turf/open/floor/strata{ - dir = 4; - icon_state = "white_cyan1" +/obj/structure/machinery/light, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/area/lv522/oob/w_y_vault) +/area/lv522/atmos/way_in_command_centre) "lze" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/warning_stripes{ @@ -25377,6 +28981,26 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/dorms) +"lzn" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass{ + name = "\improper Marshal Office Interrogation"; + req_access = null + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Sec-Kitchen-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/security) "lzw" = ( /obj/structure/prop/ice_colony/ground_wire, /turf/open/auto_turf/shale/layer1, @@ -25416,7 +29040,7 @@ /obj/structure/platform{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "lzV" = ( /obj/structure/platform_decoration, @@ -25431,6 +29055,11 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/south_east_street) +"lAa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/prison, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "lAj" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -25460,11 +29089,51 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/north_east_street) +"lAA" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" + }, +/area/lv522/atmos/cargo_intake) "lAD" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/structure/foamed_metal, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) +"lAK" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) +"lAM" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass{ + name = "\improper Marshal Office Armory" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Sec-Armoury-Lockdown" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/security) +"lAS" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" }, /area/lv522/atmos/east_reactor/south) "lBd" = ( @@ -25485,7 +29154,7 @@ /area/lv522/indoors/a_block/dorms) "lBl" = ( /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "lBu" = ( /obj/structure/machinery/light{ @@ -25503,7 +29172,7 @@ dir = 8; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "lBC" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -25515,7 +29184,7 @@ /area/lv522/indoors/b_block/bar) "lBE" = ( /obj/structure/prop/invuln/ice_prefab{ - dir = 1 + dir = 9 }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/w_rockies) @@ -25564,6 +29233,12 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/hallway) +"lCH" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/n_rockies) "lCQ" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -25581,15 +29256,22 @@ dir = 8 }, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "brown" }, /area/lv522/atmos/east_reactor/south) +"lDk" = ( +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "lDr" = ( /obj/item/prop/colony/proptag{ desc = "A fallen marine's information dog tag. It reads, Sergeant Douglas 'Bedwetter' Smith" }, +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ - icon_state = "squares" + dir = 6; + icon_state = "brown" }, /area/lv522/atmos/east_reactor/south) "lDC" = ( @@ -25610,9 +29292,14 @@ }, /area/lv522/outdoors/colony_streets/east_central_street) "lDN" = ( -/obj/item/clothing/suit/storage/marine/M3G, -/turf/closed/wall/mineral/bone_resin, -/area/lv522/oob) +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/east_reactor/south) "lDU" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/recharger, @@ -25627,11 +29314,24 @@ /area/lv522/indoors/a_block/security/glass) "lEb" = ( /obj/structure/pipes/vents/pump, +/obj/structure/machinery/door_display/research_cell{ + dir = 4; + id = "Reactor_e_entry_3"; + pixel_x = -16; + req_access = null + }, /turf/open/floor/corsat{ dir = 1; icon_state = "brown" }, /area/lv522/atmos/filt) +"lEd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/engineering_welding, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) "lEk" = ( /obj/structure/surface/table/almayer, /obj/item/device/radio{ @@ -25652,9 +29352,41 @@ }, /area/lv522/indoors/a_block/bridges/dorms_fitness) "lER" = ( -/obj/effect/landmark/lv624/fog_blocker/short, -/turf/closed/wall/solaris/reinforced/hull/lv522, -/area/lv522/oob) +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/cargo_intake) +"lEZ" = ( +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) +"lFa" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) +"lFd" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor) +"lFk" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/east_reactor) "lFt" = ( /turf/open/floor/corsat{ dir = 1; @@ -25759,6 +29491,13 @@ icon_state = "radiator_tile2" }, /area/lv522/indoors/c_block/cargo) +"lHk" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "lHl" = ( /obj/structure/surface/rack, /obj/item/reagent_container/food/snacks/sliceable/cheesewheel{ @@ -25775,10 +29514,17 @@ }, /area/lv522/indoors/a_block/kitchen) "lHu" = ( -/obj/structure/machinery/power/terminal{ - dir = 1 +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/disposal{ + density = 0; + layer = 3.1; + pixel_x = -6; + pixel_y = 16 }, -/turf/open/floor/plating, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/lone_buildings/engineering) "lHH" = ( /obj/effect/decal/cleanable/dirt, @@ -25816,6 +29562,19 @@ icon_state = "darkbrownfull2" }, /area/lv522/landing_zone_2) +"lIy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper B-Block - Hydroponics Airlock" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "LV_522_Hydro-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/b_block/hydro) "lIB" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -25826,18 +29585,6 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/bridge) -"lIC" = ( -/turf/open/floor/prison, -/area/lv522/indoors/lone_buildings/engineering) -"lIM" = ( -/obj/structure/machinery/door/poddoor/almayer/closed{ - id = "Corpo Vault"; - name = "Vault Lockdown" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/oob/w_y_vault) "lIR" = ( /obj/structure/prop/invuln/ice_prefab/trim{ dir = 8 @@ -25890,17 +29637,15 @@ }, /area/lv522/atmos/east_reactor/south) "lKu" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/glasses/meson, -/obj/item/shard{ - icon_state = "medium" +/obj/structure/machinery/power/smes/buildable{ + capacity = 1e+006; + dir = 1 }, -/obj/effect/landmark/objective_landmark/close, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, +/turf/open/floor/plating, /area/lv522/indoors/lone_buildings/engineering) "lKC" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -25919,20 +29664,14 @@ icon_state = "platingdmg3" }, /area/lv522/indoors/a_block/admin) -"lKH" = ( -/obj/structure/machinery/colony_floodlight{ - layer = 4.3; - pixel_y = 9 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/outdoors/colony_streets/south_east_street) "lLl" = ( /obj/structure/foamed_metal, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms/glass) +"lLA" = ( +/turf/open/floor/corsat, +/area/lv522/atmos/reactor_garage) "lLL" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/power/apc/weak{ @@ -25943,6 +29682,13 @@ icon_state = "darkyellowfull2" }, /area/lv522/indoors/c_block/t_comm) +"lMF" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "lMH" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -25960,9 +29706,11 @@ /obj/structure/barricade/deployable{ dir = 8 }, -/obj/item/ammo_magazine/m56d, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "plate" }, /area/lv522/atmos/east_reactor/south) "lMT" = ( @@ -26022,15 +29770,18 @@ /turf/open/floor/prison, /area/lv522/indoors/a_block/kitchen/glass) "lNA" = ( -/obj/structure/pipes/standard/simple/hidden/green{ +/obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 }, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor/south) "lNI" = ( /obj/item/ammo_magazine/m56d, +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 4 + }, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "plate" }, /area/lv522/atmos/east_reactor/south) "lNT" = ( @@ -26081,16 +29832,34 @@ icon_state = "cyan2" }, /area/lv522/indoors/a_block/medical) +"lPf" = ( +/obj/structure/stairs/perspective{ + dir = 10; + icon_state = "p_stair_full" + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/asphalt/cement, +/area/lv522/outdoors/n_rockies) "lPq" = ( -/obj/structure/largecrate/random, -/turf/open/auto_turf/shale/layer0, -/area/lv522/landing_zone_2/ceiling) +/obj/structure/platform{ + dir = 4 + }, +/turf/open/asphalt/cement, +/area/lv522/outdoors/colony_streets/south_east_street) "lPv" = ( /obj/effect/decal/cleanable/liquid_fuel, /turf/open/asphalt/cement{ icon_state = "cement4" }, /area/lv522/outdoors/colony_streets/north_street) +"lPM" = ( +/obj/structure/girder, +/turf/open/asphalt/cement{ + icon_state = "cement15" + }, +/area/lv522/outdoors/colony_streets/north_street) "lPT" = ( /obj/structure/bed/chair{ dir = 4 @@ -26112,7 +29881,7 @@ /obj/item/prop/colony/canister{ pixel_y = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "lQS" = ( /obj/structure/prop/vehicles/crawler{ @@ -26120,7 +29889,7 @@ icon_state = "crawler_crate_alt2"; layer = 3.1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "lRx" = ( /obj/structure/surface/table/almayer, @@ -26158,7 +29927,7 @@ pixel_x = 2; pixel_y = 9 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "lSl" = ( /obj/structure/barricade/wooden, @@ -26187,12 +29956,28 @@ /obj/structure/stairs/perspective{ icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "lSP" = ( /obj/structure/surface/table/almayer, +/obj/structure/transmitter/colony_net/rotary{ + phone_category = "LV522 Chances Claim"; + phone_id = "Colony Operations Centre"; + pixel_y = 6 + }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/admin) +"lTd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/outdoors/colony_streets/windbreaker/observation) +"lTi" = ( +/obj/structure/girder, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) "lTj" = ( /obj/structure/prop/invuln/minecart_tracks, /obj/structure/prop/invuln/minecart_tracks{ @@ -26235,6 +30020,13 @@ icon_state = "floor_marked" }, /area/lv522/indoors/lone_buildings/outdoor_bot) +"lUh" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_west_street) "lUi" = ( /obj/structure/bed/chair/comfy{ dir = 1 @@ -26249,18 +30041,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/b_block/hydro) -"lUy" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/outdoors/colony_streets/windbreaker/observation) "lUJ" = ( /obj/structure/stairs/perspective{ dir = 4; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "lUK" = ( /turf/open/floor/prison, @@ -26274,21 +30060,23 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) +"lUU" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Corporate Office Airlock"; + req_access_txt = "100" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/corpo) "lUV" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) -"lVg" = ( -/obj/structure/machinery/power/apc/weak{ - dir = 1 - }, -/turf/open/floor/corsat{ - icon_state = "plate" - }, -/area/lv522/atmos/cargo_intake) "lVp" = ( /turf/closed/wall/strata_outpost, /area/lv522/indoors/a_block/kitchen/glass) @@ -26316,12 +30104,6 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/bridges/corpo) -"lVG" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/corsat{ - icon_state = "brown" - }, -/area/lv522/atmos/cargo_intake) "lVK" = ( /obj/structure/closet/bodybag, /obj/effect/decal/cleanable/dirt, @@ -26356,9 +30138,11 @@ /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_east_street) "lWa" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, /turf/open/floor/corsat{ - icon_state = "browncorner" + icon_state = "plate" }, /area/lv522/atmos/cargo_intake) "lWf" = ( @@ -26378,7 +30162,7 @@ "lWj" = ( /obj/structure/platform, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "lWm" = ( /obj/structure/machinery/light, @@ -26399,6 +30183,10 @@ icon_state = "marked" }, /area/lv522/atmos/east_reactor) +"lXO" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "lXQ" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -26407,6 +30195,12 @@ icon_state = "squares" }, /area/lv522/atmos/east_reactor/south) +"lXY" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 + }, +/turf/open/floor/wood/ship, +/area/lv522/atmos/way_in_command_centre) "lYg" = ( /obj/structure/stairs/perspective{ dir = 6; @@ -26415,7 +30209,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "lYG" = ( /obj/structure/platform_decoration{ @@ -26428,6 +30222,12 @@ }, /turf/open/floor/plating, /area/lv522/indoors/c_block/mining) +"lYK" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/gm/river, +/area/lv522/atmos/sewer) "lYL" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -26447,8 +30247,14 @@ /obj/structure/prop/invuln/ice_prefab/standalone{ icon_state = "white" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) +"lZq" = ( +/obj/structure/closet/firecloset/full, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/indoors/a_block/dorm_north) "lZI" = ( /obj/effect/decal/cleanable/dirt, /obj/item/prop/colony/used_flare, @@ -26482,20 +30288,32 @@ /area/lv522/indoors/b_block/bar) "mad" = ( /obj/effect/decal/cleanable/blood, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "marked" }, /area/lv522/atmos/east_reactor/south) "maj" = ( -/obj/structure/pipes/standard/manifold/hidden/green, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, -/turf/open/floor/corsat, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, /area/lv522/atmos/east_reactor/south) +"mam" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/fence, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/lv522/landing_zone_2/ceiling) "max" = ( -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "may" = ( /obj/structure/sink{ @@ -26561,6 +30379,12 @@ "mbw" = ( /obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/dirt, +/obj/structure/transmitter/colony_net{ + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Colony Dining"; + pixel_y = 26 + }, /turf/open/floor/prison{ icon_state = "darkredfull2" }, @@ -26639,13 +30463,14 @@ }, /area/lv522/atmos/filt) "mcG" = ( -/obj/structure/machinery/light{ - dir = 1 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/turf/open/asphalt/cement{ - icon_state = "cement12" +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "brown" }, -/area/lv522/outdoors/colony_streets/central_streets) +/area/lv522/atmos/cargo_intake) "mcO" = ( /obj/structure/machinery/portable_atmospherics/canister/empty/oxygen{ layer = 4.4; @@ -26656,6 +30481,11 @@ icon_state = "cement14" }, /area/lv522/outdoors/colony_streets/south_street) +"mdp" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/item/tool/weldingtool, +/turf/open/floor/plating, +/area/lv522/indoors/lone_buildings/engineering) "mdr" = ( /obj/structure/bed/chair{ dir = 4 @@ -26672,32 +30502,21 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/atmos/filt) -"mdZ" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/corsat, -/area/lv522/atmos/cargo_intake) "meb" = ( /obj/structure/largecrate/random{ layer = 2.9 }, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) -"med" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 4 - }, -/turf/open/floor/corsat{ - icon_state = "plate" - }, -/area/lv522/atmos/filt) "mee" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/atmos/filt) +"men" = ( +/turf/open/floor/shiva{ + icon_state = "radiator_tile2" + }, +/area/lv522/atmos/way_in_command_centre) "meq" = ( /turf/open/floor/prison{ icon_state = "floor_plate" @@ -26709,6 +30528,15 @@ icon_state = "radiator_tile2" }, /area/lv522/indoors/a_block/bridges/corpo) +"meK" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "\improper C-Block - Cargo Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/bridge) "mfh" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -26723,15 +30551,22 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/hallway) -"mfS" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1 +"mfF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, +/obj/item/clothing/gloves/boxing{ + pixel_x = -5; + pixel_y = 5 }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/corsat{ - icon_state = "marked" +/obj/item/clothing/gloves/boxing/blue{ + pixel_x = 5; + pixel_y = -6 }, -/area/lv522/indoors/c_block/casino) +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/lv522/indoors/a_block/fitness) "mfV" = ( /obj/structure/machinery/light{ dir = 8 @@ -26762,7 +30597,7 @@ /area/lv522/indoors/c_block/cargo) "mgJ" = ( /obj/effect/decal/cleanable/blood/oil, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "mhn" = ( /obj/structure/surface/table/almayer, @@ -26799,8 +30634,15 @@ /obj/structure/platform_decoration{ dir = 5 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) +"mis" = ( +/obj/effect/alien/resin/sticky, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor/south) "miz" = ( /obj/structure/stairs/perspective{ dir = 1; @@ -26811,13 +30653,10 @@ }, /area/lv522/outdoors/colony_streets/north_street) "miH" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 1 - }, -/turf/open/floor/corsat{ - icon_state = "brown" +/turf/open/floor{ + icon_state = "bcircuit" }, -/area/lv522/atmos/cargo_intake) +/area/lv522/atmos/east_reactor/south) "miW" = ( /obj/structure/cargo_container/kelland/left, /turf/open/floor/prison{ @@ -26831,31 +30670,18 @@ }, /turf/open/auto_turf/shale/layer2, /area/lv522/outdoors/colony_streets/south_east_street) -"mji" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Corporation Dome"; - req_access_txt = "100" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/corpo/glass) "mjq" = ( -/obj/structure/barricade/handrail{ - dir = 1 - }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - icon_state = "plate" + dir = 8; + icon_state = "browncorner" }, -/area/lv522/atmos/east_reactor) +/area/lv522/atmos/west_reactor) "mjs" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor/corsat{ - dir = 6; - icon_state = "brown" - }, +/turf/open/floor/plating, /area/lv522/atmos/cargo_intake) "mjz" = ( /obj/structure/dispenser/oxygen, @@ -26877,6 +30703,16 @@ icon_state = "darkbrownfull2" }, /area/lv522/landing_zone_2/ceiling) +"mjF" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/reactor_garage) +"mjR" = ( +/obj/item/stack/sheet/metal, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/n_rockies) "mjT" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ @@ -26884,6 +30720,16 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) +"mjW" = ( +/obj/structure/machinery/vending/walkman{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/lv522/indoors/a_block/fitness) "mjY" = ( /obj/item/shard{ icon_state = "medium"; @@ -26897,13 +30743,15 @@ }, /area/lv522/indoors/b_block/bridge) "mkb" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 10 +/obj/structure/prop/server_equipment/yutani_server{ + density = 0; + pixel_y = 16 }, -/turf/open/floor/corsat{ - icon_state = "brown" +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" }, -/area/lv522/atmos/cargo_intake) +/area/lv522/atmos/east_reactor/south) "mkd" = ( /obj/item/stack/folding_barricade, /obj/effect/decal/cleanable/dirt, @@ -26911,13 +30759,22 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security) +"mkh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "mkm" = ( /obj/structure/closet/crate, /obj/effect/decal/warning_stripes{ icon_state = "N"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "mkJ" = ( /obj/structure/machinery/deployable/barrier, @@ -26925,25 +30782,12 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security) -"mkT" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/bridges/op_centre) "mkW" = ( /obj/structure/bed/chair{ dir = 4 }, /turf/open/floor/prison, /area/lv522/indoors/c_block/garage) -"mkZ" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/turf/open/floor/corsat{ - dir = 10; - icon_state = "brown" - }, -/area/lv522/atmos/cargo_intake) "mld" = ( /obj/structure/barricade/wooden{ dir = 1 @@ -26951,10 +30795,18 @@ /turf/open/floor/prison, /area/lv522/indoors/c_block/cargo) "mlp" = ( -/obj/effect/landmark/lv624/fog_blocker/short, -/obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer2, -/area/lv522/outdoors/colony_streets/north_street) +/obj/structure/machinery/computer3/server/rack{ + density = 0; + pixel_y = 16 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, +/area/lv522/atmos/east_reactor/south) "mly" = ( /obj/structure/closet/firecloset/full, /obj/effect/decal/cleanable/dirt, @@ -26969,11 +30821,10 @@ }, /area/lv522/indoors/a_block/dorms) "mlE" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, -/turf/open/floor/corsat{ - dir = 10; - icon_state = "brown" +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 }, +/turf/open/floor/corsat, /area/lv522/atmos/east_reactor/south) "mlO" = ( /obj/structure/bed/chair{ @@ -27005,16 +30856,13 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) -"mlY" = ( -/obj/structure/largecrate/random, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" +"mlR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/corsat{ + icon_state = "plate" }, -/area/lv522/outdoors/colony_streets/north_street) +/area/lv522/atmos/reactor_garage) "mlZ" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin{ @@ -27027,12 +30875,27 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) +"mmh" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "mmj" = ( -/obj/structure/largecrate, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "marked" }, -/area/lv522/atmos/cargo_intake) +/area/lv522/atmos/filt) "mmv" = ( /obj/structure/machinery/light{ dir = 8 @@ -27093,10 +30956,24 @@ /obj/item/clothing/suit/storage/marine/M3S, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor/south) +"mnx" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "mnz" = ( /obj/structure/platform_decoration{ dir = 8 }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, @@ -27108,12 +30985,33 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"mnQ" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/n_rockies) +"mnU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/ammo_magazine/rifle/l42a/extended{ + current_rounds = 0 + }, +/turf/open/floor/prison, +/area/lv522/indoors/a_block/security/glass) "mnX" = ( -/obj/item/weapon/gun/rifle/m41a{ - current_mag = null +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 }, -/turf/closed/wall/mineral/bone_resin, -/area/lv522/oob) +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/filt) +"moe" = ( +/turf/closed/wall/strata_outpost/reinforced/hull, +/area/lv522/oob/w_y_vault) "moz" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/light{ @@ -27149,12 +31047,41 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/fitness/glass) +"moQ" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper A-Block Shared Dorms Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) +"moZ" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/west) "mpr" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) +"mpF" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper B-Block - Hydroponics Airlock" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "LV_522_Hydro-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/b_block/bridge) "mpI" = ( /obj/structure/prop/server_equipment/yutani_server{ density = 0; @@ -27175,8 +31102,18 @@ /obj/structure/prop/vehicles/crawler{ layer = 3.2 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) +"mpQ" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 1; + pixel_y = 3 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "mpU" = ( /obj/structure/surface/rack, /obj/effect/decal/cleanable/dirt, @@ -27185,13 +31122,16 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) -"mqf" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/belt/marine/m41a, -/turf/open/floor/corsat{ - icon_state = "squares" +"mqc" = ( +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, -/area/lv522/atmos/east_reactor/south) +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "mqi" = ( /obj/structure/surface/table/almayer{ dir = 4; @@ -27215,10 +31155,11 @@ /turf/open/floor/wood, /area/lv522/indoors/a_block/fitness/glass) "mql" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/suit/storage/marine/heavy, +/obj/structure/machinery/door/airlock/almayer/engineering/colony{ + dir = 1 + }, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "marked" }, /area/lv522/atmos/east_reactor/south) "mqu" = ( @@ -27230,7 +31171,6 @@ }, /area/lv522/atmos/east_reactor/south) "mqv" = ( -/obj/effect/landmark/survivor_spawner/lv522_forecon_grenadier, /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, @@ -27239,6 +31179,9 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) +"mqx" = ( +/turf/open/gm/river, +/area/lv522/atmos/sewer) "mqA" = ( /obj/structure/stairs/perspective{ dir = 8; @@ -27249,7 +31192,7 @@ /area/lv522/atmos/filt) "mqC" = ( /obj/structure/cargo_container/horizontal/blue/top, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "mqH" = ( /obj/effect/decal/cleanable/dirt, @@ -27270,6 +31213,12 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/corpo/glass) +"mrL" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor) "mrM" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -27288,8 +31237,15 @@ /area/lv522/atmos/east_reactor/south) "mse" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) +"msf" = ( +/obj/structure/machinery/light, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor) "msj" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/plating/plating_catwalk/prison, @@ -27299,12 +31255,41 @@ /obj/item/device/analyzer/plant_analyzer, /turf/open/floor/prison, /area/lv522/indoors/b_block/hydro) +"msp" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/command_centre) "msr" = ( /obj/structure/barricade/deployable, /turf/open/floor/prison{ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security) +"msB" = ( +/obj/item/reagent_container/food/snacks/stewedsoymeat{ + pixel_y = -6 + }, +/obj/item/trash/sosjerky{ + pixel_x = 8; + pixel_y = 12 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/turf/open/floor/prison, +/area/lv522/indoors/a_block/dorm_north) +"msQ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/n_rockies) "mto" = ( /obj/effect/landmark/monkey_spawn, /turf/open/floor/corsat{ @@ -27326,11 +31311,18 @@ /obj/structure/flora/bush/ausbushes/ppflowers, /turf/open/floor/grass, /area/lv522/indoors/a_block/garden) -"mua" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/corsat{ - icon_state = "plate" +"mtM" = ( +/obj/structure/transmitter/colony_net{ + dir = 4; + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Colony Cargo"; + pixel_x = -16 }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/indoors/c_block/cargo) +"mua" = ( +/turf/closed/wall/r_wall/biodome/biodome_unmeltable, /area/lv522/atmos/filt) "mum" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -27339,6 +31331,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) +"muB" = ( +/obj/structure/girder, +/turf/open/asphalt/cement{ + icon_state = "cement1" + }, +/area/lv522/outdoors/colony_streets/north_street) "muO" = ( /obj/structure/surface/table/almayer, /obj/effect/decal/cleanable/dirt, @@ -27393,6 +31391,12 @@ /obj/item/prop/alien/hugger, /turf/open/floor/plating, /area/lv522/indoors/a_block/security) +"mvI" = ( +/obj/structure/bed/chair, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "mvP" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/lv624/fog_blocker/short, @@ -27433,12 +31437,25 @@ /area/lv522/outdoors/colony_streets/south_west_street) "mwp" = ( /obj/effect/spawner/random/tool, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) -"mwv" = ( -/obj/effect/landmark/lv624/fog_blocker/short, -/turf/closed/wall/strata_outpost/reinforced, -/area/lv522/oob/w_y_vault) +"mwC" = ( +/obj/item/clothing/head/welding, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/plating, +/area/lv522/indoors/lone_buildings/engineering) +"mwL" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper A-Block Corporate Office Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/corpo/glass) "mwT" = ( /obj/structure/prop/dam/truck, /obj/structure/prop/holidays/wreath{ @@ -27454,8 +31471,14 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) +"mxg" = ( +/obj/structure/machinery/colony_floodlight, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/garden) "mxo" = ( /obj/structure/surface/rack, /obj/item/clothing/head/hardhat, @@ -27470,7 +31493,7 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, /obj/effect/landmark/corpsespawner/colonist/burst, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "browncorner" }, /area/lv522/atmos/east_reactor/south) "mxt" = ( @@ -27518,6 +31541,9 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/hydro) +"myz" = ( +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/reactor_garage) "myC" = ( /obj/structure/machinery/vending/snack, /turf/open/floor/prison{ @@ -27576,9 +31602,31 @@ icon_state = "greenfull" }, /area/lv522/landing_zone_1/ceiling) +"mzi" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) +"mzP" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/recharger{ + pixel_y = 5 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) +"mzX" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/prison, +/area/lv522/atmos/way_in_command_centre) "mAg" = ( /obj/structure/prop/dam/crane/damaged, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "mAA" = ( /obj/structure/machinery/light, @@ -27598,16 +31646,26 @@ /obj/structure/closet/secure_closet/detective, /turf/open/floor/wood, /area/lv522/indoors/a_block/security) +"mAE" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -9; + pixel_y = -2 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/central_streets) "mAR" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "mAW" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/blood/oil, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "mBc" = ( /obj/structure/bed/chair/comfy{ @@ -27627,14 +31685,28 @@ }, /area/lv522/indoors/a_block/security) "mBy" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/corsat{ - icon_state = "plate" +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/area/lv522/atmos/cargo_intake) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/reactor_garage) "mBF" = ( /turf/closed/wall/strata_outpost, /area/lv522/indoors/b_block/bar) +"mBL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "w-y2" + }, +/area/lv522/atmos/way_in_command_centre) "mCm" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -27649,24 +31721,34 @@ /obj/item/storage/beer_pack, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/south_street) +"mCx" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "mCA" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/b_block/hydro) -"mCK" = ( -/obj/structure/blocker/forcefield/vehicles, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/atmos/cargo_intake) "mCQ" = ( -/obj/structure/blocker/forcefield/vehicles, -/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/blood, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ icon_state = "marked" }, -/area/lv522/atmos/cargo_intake) +/area/lv522/atmos/filt) +"mDw" = ( +/obj/structure/prop/invuln/ice_prefab{ + dir = 10 + }, +/turf/open/auto_turf/shale/layer2, +/area/lv522/outdoors/w_rockies) "mDz" = ( /obj/structure/prop/ice_colony/dense/planter_box{ dir = 8 @@ -27681,8 +31763,11 @@ }, /area/lv522/indoors/b_block/bridge) "mDT" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/auto_turf/shale/layer0, +/obj/structure/largecrate/random/mini, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, /area/lv522/landing_zone_2/ceiling) "mDX" = ( /obj/effect/decal/cleanable/dirt, @@ -27706,6 +31791,16 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms/glass) +"mEp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/reactor_garage) "mEx" = ( /obj/item/stack/rods, /turf/open/floor/prison, @@ -27721,6 +31816,12 @@ icon_state = "white_cyan2" }, /area/lv522/indoors/a_block/medical/glass) +"mEG" = ( +/obj/structure/largecrate/random, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/n_rockies) "mFe" = ( /obj/structure/machinery/light{ dir = 8 @@ -27731,6 +31832,17 @@ icon_state = "floor_marked" }, /area/lv522/indoors/lone_buildings/storage_blocks) +"mFg" = ( +/obj/structure/surface/table/almayer, +/obj/item/co2_cartridge{ + pixel_x = -8; + pixel_y = 14 + }, +/obj/item/clothing/accessory/armband/engine, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "mFm" = ( /obj/structure/surface/table/almayer, /obj/item/ashtray/plastic{ @@ -27758,6 +31870,14 @@ /obj/structure/platform/stair_cut/alt, /turf/open/floor/prison, /area/lv522/indoors/c_block/cargo) +"mFO" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper C-Block - Radio Tower Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/t_comm) "mFZ" = ( /obj/structure/barricade/handrail/strata{ dir = 8 @@ -27765,6 +31885,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/c_block/cargo) +"mGb" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison, +/area/lv522/atmos/reactor_garage) "mGD" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/computer/PC{ @@ -27827,9 +31955,11 @@ /turf/open/floor/grass, /area/lv522/indoors/a_block/garden) "mHZ" = ( -/obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/asphalt/cement, -/area/lv522/outdoors/colony_streets/north_street) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/shiva{ + icon_state = "radiator_tile2" + }, +/area/lv522/indoors/a_block/corpo/glass) "mIa" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -27839,6 +31969,15 @@ icon_state = "darkredfull2" }, /area/lv522/outdoors/colony_streets/north_street) +"mIq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "mIO" = ( /obj/structure/machinery/vending/coffee, /obj/structure/machinery/light{ @@ -27901,6 +32040,15 @@ icon_state = "cement4" }, /area/lv522/outdoors/colony_streets/north_east_street) +"mJG" = ( +/obj/structure/surface/rack, +/obj/item/device/analyzer, +/obj/effect/landmark/objective_landmark/close, +/obj/item/stack/sheet/cardboard/full_stack, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/lv522/indoors/c_block/mining) "mJQ" = ( /obj/item/storage/backpack/marine/satchel{ desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; @@ -27921,7 +32069,7 @@ dir = 4; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_street) "mJZ" = ( /obj/structure/surface/table/almayer, @@ -27931,8 +32079,11 @@ }, /area/lv522/indoors/a_block/kitchen) "mKu" = ( -/obj/structure/largecrate/random/secure, -/turf/open/auto_turf/shale/layer0, +/obj/structure/largecrate/random, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, /area/lv522/landing_zone_2/ceiling) "mKA" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -27945,14 +32096,27 @@ }, /area/lv522/indoors/a_block/admin) "mKN" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" - }, -/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/cargo_container/kelland/left, /turf/open/floor/corsat{ icon_state = "plate" }, /area/lv522/atmos/cargo_intake) +"mKQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/cargo_intake) +"mKZ" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 6; + pixel_x = 6; + pixel_y = 6 + }, +/obj/structure/largecrate/random, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/c_block/mining) "mLb" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -27966,6 +32130,18 @@ icon_state = "8,0" }, /area/lv522/oob) +"mLI" = ( +/obj/structure/barricade/deployable{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "mLO" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 @@ -27985,7 +32161,7 @@ pixel_x = 8; pixel_y = 15 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "mLW" = ( /obj/structure/machinery/portable_atmospherics/canister/empty/phoron{ @@ -27993,14 +32169,12 @@ layer = 3.1; pixel_y = 18 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "mLX" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, -/obj/effect/landmark/xeno_spawn, +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ - dir = 10; + dir = 4; icon_state = "brown" }, /area/lv522/atmos/east_reactor/south) @@ -28011,6 +32185,13 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor/south) +"mMr" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/faxmachine/corporate, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "mMv" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -28048,6 +32229,19 @@ /obj/structure/machinery/floodlight, /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) +"mNf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/reinforced/prison, +/obj/item/ashtray/glass, +/obj/item/clothing/mask/cigarette{ + pixel_x = 6; + pixel_y = 12 + }, +/obj/item/clothing/mask/cigarette, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/indoors/a_block/dorm_north) "mNm" = ( /turf/open/floor/corsat, /area/lv522/atmos/east_reactor/east) @@ -28075,6 +32269,12 @@ icon_state = "white_cyan2" }, /area/lv522/indoors/a_block/medical/glass) +"mNI" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "w-y1" + }, +/area/lv522/oob/w_y_vault) "mNR" = ( /obj/structure/prop/ice_colony/dense/planter_box{ dir = 9 @@ -28107,12 +32307,18 @@ icon_state = "greenfull" }, /area/lv522/landing_zone_1/ceiling) -"mOl" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 10 +"mOh" = ( +/obj/structure/machinery/space_heater/radiator/red{ + pixel_y = 16 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, +/area/lv522/atmos/reactor_garage) +"mOl" = ( +/obj/structure/cargo_container/kelland/right, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "plate" }, /area/lv522/atmos/cargo_intake) "mOs" = ( @@ -28144,6 +32350,12 @@ icon_state = "kitchen" }, /area/lv522/indoors/a_block/kitchen) +"mOI" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/way_in_command_centre) "mOJ" = ( /obj/structure/prop/ice_colony/dense/planter_box{ dir = 5 @@ -28198,15 +32410,29 @@ /turf/open/floor/carpet, /area/lv522/indoors/c_block/garage) "mPe" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Reactor_garage_2" + }, +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ - dir = 5; - icon_state = "brown" + icon_state = "marked" }, -/area/lv522/atmos/cargo_intake) +/area/lv522/atmos/reactor_garage) +"mPj" = ( +/turf/closed/wall/strata_outpost, +/area/lv522/atmos/sewer) "mPr" = ( /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/south_street) +"mPs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "mPy" = ( /obj/structure/largecrate/random/barrel/green, /turf/open/floor/prison{ @@ -28231,15 +32457,6 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) -"mPQ" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - welded = 1 - }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/dorms) "mPR" = ( /obj/structure/machinery/light{ dir = 4 @@ -28249,18 +32466,13 @@ "mPY" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, /obj/effect/landmark/xeno_spawn, -/turf/open/floor/corsat{ - icon_state = "brown" - }, +/turf/open/floor/corsat, /area/lv522/atmos/east_reactor/south) "mQd" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" }, -/obj/structure/platform{ - dir = 8 - }, -/turf/open/gm/river, +/turf/closed/wall/r_wall/biodome/biodome_unmeltable, /area/lv522/atmos/filt) "mQh" = ( /obj/structure/surface/table/almayer, @@ -28284,16 +32496,19 @@ icon_state = "darkbrownfull2" }, /area/lv522/landing_zone_2/ceiling) -"mQo" = ( -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/prison, -/area/lv522/outdoors/colony_streets/north_street) "mQq" = ( /obj/structure/machinery/space_heater/radiator/red{ dir = 8 }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/dorms/glass) +"mQt" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "mQv" = ( /obj/effect/decal/cleanable/dirt, /obj/item/prop/colony/used_flare, @@ -28349,7 +32564,7 @@ pixel_x = 9; pixel_y = -2 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "mRO" = ( /obj/structure/prop/structure_lattice, @@ -28360,10 +32575,11 @@ /turf/open/floor/wood, /area/lv522/indoors/a_block/executive) "mSc" = ( -/obj/effect/landmark/lv624/fog_blocker/short, -/obj/effect/landmark/lv624/fog_blocker/short, -/turf/closed/wall/strata_outpost/reinforced, -/area/lv522/oob/w_y_vault) +/obj/item/tool/wet_sign, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/cargo_intake) "mSe" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/bridges/garden_bridge) @@ -28417,6 +32633,12 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/medical) +"mTE" = ( +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) "mTK" = ( /obj/structure/largecrate/supply/medicine/medkits, /obj/structure/largecrate/guns/merc{ @@ -28484,10 +32706,17 @@ /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "mUG" = ( /obj/structure/platform_decoration, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, @@ -28507,6 +32736,10 @@ /area/lv522/indoors/a_block/kitchen) "mVi" = ( /obj/structure/platform, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, @@ -28522,6 +32755,10 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/bridges/op_centre) +"mVm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall/strata_outpost/reinforced, +/area/lv522/atmos/way_in_command_centre) "mVt" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -28563,18 +32800,14 @@ }, /area/lv522/outdoors/nw_rockies) "mWd" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, +/obj/structure/largecrate/random/secure, +/turf/open/floor/prison, /area/lv522/landing_zone_2/ceiling) "mWw" = ( /obj/item/prop/colony/proptag{ desc = "A fallen marine's information dog tag. It reads, Corporal Donald 'Firefly' Harrow" }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/atmos/outdoor) "mWF" = ( @@ -28595,8 +32828,8 @@ "mXn" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/corsat{ - dir = 4; - icon_state = "browncorner" + dir = 10; + icon_state = "brown" }, /area/lv522/atmos/cargo_intake) "mXy" = ( @@ -28610,11 +32843,10 @@ }, /area/lv522/indoors/b_block/bar) "mXA" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ - icon_state = "marked" + dir = 8; + icon_state = "browncorner" }, /area/lv522/atmos/cargo_intake) "mYo" = ( @@ -28683,21 +32915,33 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) +"mZM" = ( +/obj/structure/cargo_container/wy/left{ + layer = 5 + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/w_rockies) "mZN" = ( -/turf/open/asphalt/cement{ - icon_state = "cement9" +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/area/lv522/outdoors/n_rockies) +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor/south) "mZQ" = ( /obj/structure/barricade/deployable, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_east_street) "mZU" = ( -/obj/structure/platform_decoration{ +/obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 }, -/turf/open/gm/river, -/area/lv522/atmos/filt) +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor/south) "mZW" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/gm/river, @@ -28726,7 +32970,7 @@ }, /area/lv522/outdoors/colony_streets/north_east_street) "nax" = ( -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "naC" = ( /obj/structure/shuttle/engine/heater{ @@ -28831,6 +33075,12 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security) +"nbD" = ( +/obj/structure/machinery/light, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/command_centre) "nbE" = ( /obj/structure/cargo_container/kelland/right, /turf/open/floor/prison, @@ -28840,6 +33090,13 @@ icon_state = "77" }, /area/lv522/landing_zone_forecon/UD6_Typhoon) +"nbT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + dir = 1; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/cargo_intake) "ncg" = ( /obj/structure/platform{ dir = 8 @@ -28848,19 +33105,24 @@ icon_state = "cement1" }, /area/lv522/outdoors/colony_streets/south_street) -"ncs" = ( -/obj/structure/largecrate/random/barrel/white, -/obj/effect/decal/warning_stripes{ - icon_state = "S" +"ncp" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper B-Block Bar" }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 +/turf/open/floor/corsat{ + icon_state = "marked" }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" +/area/lv522/indoors/b_block/bar) +"ncv" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/area/lv522/outdoors/colony_streets/north_street) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "ncz" = ( /obj/structure/platform, /obj/effect/decal/warning_stripes{ @@ -28872,7 +33134,7 @@ }, /area/lv522/outdoors/colony_streets/north_east_street) "ncA" = ( -/obj/structure/blocker/forcefield/vehicles, +/obj/item/clothing/suit/storage/marine/medium, /turf/closed/wall/mineral/bone_resin, /area/lv522/oob) "ncJ" = ( @@ -28921,7 +33183,7 @@ icon_state = "NW-out"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "nee" = ( /obj/structure/pipes/standard/manifold/hidden/green, @@ -28936,6 +33198,18 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/security) +"nem" = ( +/obj/structure/transmitter/colony_net{ + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Colony Northern Dorms"; + pixel_y = 26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/indoors/a_block/dorm_north) "nez" = ( /obj/item/ammo_magazine/rifle/heap{ current_rounds = 0 @@ -28945,6 +33219,15 @@ icon_state = "floor_marked" }, /area/lv522/outdoors/colony_streets/north_east_street) +"neI" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/way_in_command_centre) "neO" = ( /obj/structure/machinery/light{ dir = 8 @@ -28991,6 +33274,13 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/north_east_street) +"nfk" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 10; + pixel_y = 21 + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/central_streets) "nfm" = ( /obj/structure/machinery/light{ dir = 4 @@ -29005,13 +33295,10 @@ }, /area/lv522/indoors/a_block/bridges/garden_bridge) "nfq" = ( -/turf/closed/shuttle/dropship2/tornado{ - icon_state = "18" +/turf/closed/shuttle/dropship2/tornado/typhoon{ + icon_state = "36" }, /area/lv522/landing_zone_forecon/UD6_Typhoon) -"nfx" = ( -/turf/open/floor/plating, -/area/lv522/indoors/lone_buildings/engineering) "nfP" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -29045,6 +33332,9 @@ /obj/structure/platform{ dir = 4 }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, @@ -29140,14 +33430,18 @@ icon_state = "wood-broken" }, /area/lv522/indoors/b_block/bar) +"niT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/indoors/a_block/dorm_north) "niU" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/foamed_metal, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor/corsat{ - icon_state = "brown" - }, +/turf/open/floor/plating, /area/lv522/atmos/cargo_intake) "njd" = ( /obj/structure/platform_decoration, @@ -29161,6 +33455,28 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) +"njn" = ( +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) +"njF" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor) "njH" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -29212,6 +33528,13 @@ icon_state = "cement12" }, /area/lv522/outdoors/nw_rockies) +"nky" = ( +/obj/structure/machinery/power/apc/weak, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/lv522/indoors/lone_buildings/engineering) "nkX" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -29236,16 +33559,8 @@ pixel_x = 12; pixel_y = -7 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) -"nlO" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/metal/large_stack, -/obj/item/stack/sheet/metal/large_stack, -/turf/open/floor/plating{ - icon_state = "platebot" - }, -/area/lv522/indoors/c_block/cargo) "nlR" = ( /obj/structure/window/reinforced{ dir = 4; @@ -29283,7 +33598,7 @@ pixel_x = -6; pixel_y = -18 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "nlW" = ( /obj/item/stack/sheet/wood, @@ -29302,6 +33617,16 @@ }, /turf/open/floor/carpet, /area/lv522/indoors/c_block/garage) +"nmt" = ( +/obj/structure/machinery/light, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "nmB" = ( /obj/structure/surface/table/almayer{ dir = 8; @@ -29316,20 +33641,6 @@ /obj/item/prop/alien/hugger, /turf/open/floor/prison, /area/lv522/atmos/outdoor) -"nmL" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Colony Kitchen" - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "Sec-Kitchen-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/kitchen) "nmX" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, @@ -29352,9 +33663,9 @@ "nno" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - icon_state = "brown" + icon_state = "marked" }, -/area/lv522/atmos/east_reactor/south) +/area/lv522/atmos/east_reactor) "nnv" = ( /obj/item/reagent_container/food/drinks/coffeecup/wy{ pixel_x = -4; @@ -29406,8 +33717,18 @@ icon_state = "browncorner" }, /area/lv522/atmos/east_reactor/south) +"noH" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper C-Block - Casino Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/casino) "noL" = ( -/obj/structure/blocker/invisible_wall, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/nw_rockies) "noT" = ( @@ -29428,14 +33749,22 @@ }, /area/lv522/atmos/east_reactor/south) "npb" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" }, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "marked" }, /area/lv522/atmos/east_reactor/south) +"npd" = ( +/obj/structure/machinery/light, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor) "npp" = ( /obj/structure/girder, /obj/structure/prop/invuln/lattice_prop{ @@ -29550,6 +33879,13 @@ }, /turf/open/floor/plating, /area/lv522/oob) +"nqE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "brown" + }, +/area/lv522/atmos/cargo_intake) "nqN" = ( /obj/structure/machinery/camera/autoname{ dir = 8 @@ -29563,10 +33899,11 @@ }, /area/lv522/indoors/a_block/corpo/glass) "nqQ" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, -/turf/open/floor/prison, -/area/lv522/atmos/outdoor) +/obj/item/stack/sheet/metal, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "nqY" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -29585,8 +33922,12 @@ }, /area/lv522/indoors/a_block/dorms) "nrh" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, -/turf/open/floor/prison, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, /area/lv522/atmos/outdoor) "nri" = ( /obj/structure/platform_decoration, @@ -29609,7 +33950,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "nrA" = ( /obj/structure/surface/rack, @@ -29631,15 +33972,40 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/medical/glass) +"nrL" = ( +/obj/structure/surface/table/almayer{ + dir = 8; + flipped = 1 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "blue_plate" + }, +/area/lv522/indoors/a_block/admin) "nrP" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/security) -"nsd" = ( +"nrT" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/plating_catwalk/prison, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/shiva{ + icon_state = "radiator_tile2" + }, +/area/lv522/indoors/a_block/corpo/glass) +"nsd" = ( +/obj/effect/decal/cleanable/generic, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, /area/lv522/indoors/lone_buildings/engineering) "nsr" = ( /obj/structure/surface/table/almayer, @@ -29673,14 +34039,22 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms/glass) +"ntk" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper C-Block - Garage Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/garage) "ntq" = ( /obj/structure/prop/invuln/overhead_pipe{ name = "overhead pipe"; pixel_x = -20; pixel_y = 24 }, -/turf/closed/wall/r_wall/biodome/biodome_unmeltable, -/area/lv522/oob) +/turf/closed/wall/mineral/bone_resin, +/area/lv522/atmos/east_reactor/south) "ntK" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ @@ -29689,17 +34063,28 @@ }, /area/lv522/indoors/c_block/mining) "ntL" = ( -/obj/structure/prop/invuln/ice_prefab/trim{ - dir = 6 - }, -/turf/open/auto_turf/shale/layer1, -/area/lv522/outdoors/w_rockies) +/obj/item/stack/sheet/metal, +/turf/open/floor/corsat, +/area/lv522/atmos/reactor_garage) "ntN" = ( /obj/structure/platform{ dir = 4 }, /turf/closed/wall/mineral/bone_resin, /area/lv522/oob) +"ntQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "ntS" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/camera/autoname, @@ -29722,21 +34107,12 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/security) -"nue" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "LV_522_Hydro-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" +"nuo" = ( +/obj/structure/machinery/light, +/turf/open/floor/strata{ + icon_state = "blue1" }, -/area/lv522/indoors/b_block/hydro) -"num" = ( -/obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/floor/plating/plating_catwalk/prison, -/area/lv522/atmos/cargo_intake) +/area/lv522/indoors/a_block/dorm_north) "nuG" = ( /obj/structure/platform{ dir = 4 @@ -29782,10 +34158,8 @@ }, /area/lv522/landing_zone_1/ceiling) "nvd" = ( -/obj/effect/landmark/monkey_spawn, -/turf/open/floor/corsat{ - icon_state = "plate" - }, +/obj/structure/girder/reinforced, +/turf/open/floor/plating, /area/lv522/atmos/cargo_intake) "nvt" = ( /obj/effect/decal/cleanable/dirt, @@ -29824,9 +34198,12 @@ }, /area/lv522/indoors/a_block/dorms) "nwR" = ( -/obj/structure/cargo_container/kelland/left, -/turf/open/floor/corsat{ - icon_state = "plate" +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, /area/lv522/atmos/east_reactor/south) "nwZ" = ( @@ -29849,11 +34226,27 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) +"nxu" = ( +/turf/open/floor/plating, +/area/lv522/indoors/lone_buildings/storage_blocks) "nxF" = ( /obj/structure/machinery/light/small, /obj/effect/landmark/lv624/fog_blocker/short, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) +"nxJ" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "\improper B-Block - Hydroponics Airlock" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "LV_522_Hydro-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/b_block/hydro) "nxO" = ( /obj/structure/barricade/wooden{ dir = 1; @@ -29869,9 +34262,15 @@ }, /area/lv522/indoors/a_block/admin) "nxQ" = ( -/obj/structure/cargo_container/kelland/right, -/turf/open/floor/corsat{ - icon_state = "plate" +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, /area/lv522/atmos/east_reactor/south) "nye" = ( @@ -29882,6 +34281,12 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/south_west_street) +"nyv" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/turf/open/floor/prison, +/area/lv522/outdoors/colony_streets/north_street) "nyJ" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 @@ -29913,11 +34318,9 @@ }, /area/lv522/oob) "nzR" = ( -/obj/structure/prop/invuln/ice_prefab{ - dir = 5 - }, -/turf/open/auto_turf/shale/layer1, -/area/lv522/outdoors/w_rockies) +/obj/item/stack/sheet/metal, +/turf/closed/wall/r_wall/biodome/biodome_unmeltable, +/area/lv522/atmos/cargo_intake) "nzU" = ( /obj/structure/barricade/deployable, /turf/open/floor/prison{ @@ -29930,7 +34333,7 @@ pixel_x = -16; pixel_y = 9 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "nAa" = ( /obj/structure/bed/stool, @@ -29960,6 +34363,19 @@ "nBe" = ( /turf/open/floor/plating, /area/lv522/indoors/a_block/kitchen/damage) +"nBo" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/generic/glass, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) +"nBs" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/auto_turf/shale/layer2, +/area/lv522/outdoors/colony_streets/north_west_street) "nBv" = ( /obj/item/prop/alien/hugger{ pixel_x = 3; @@ -29979,11 +34395,27 @@ /obj/item/tool/scythe, /turf/open/floor/prison, /area/lv522/indoors/b_block/hydro) +"nCa" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/n_rockies) "nCt" = ( /obj/effect/decal/cleanable/blood/gibs/xeno/body, /obj/effect/spawner/gibspawner/xeno, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) +"nCC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + layer = 2.5; + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "whiteyellowfull" + }, +/area/lv522/oob/w_y_vault) "nCX" = ( /obj/structure/largecrate/random/barrel, /turf/open/floor/corsat{ @@ -30015,7 +34447,7 @@ dir = 4 }, /obj/structure/platform, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "nDz" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -30033,31 +34465,38 @@ /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/east_central_street) "nDM" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/prison, +/turf/closed/wall/strata_outpost/reinforced, /area/lv522/outdoors/n_rockies) "nDR" = ( /obj/item/tool/wrench, /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) +"nDS" = ( +/obj/structure/transmitter/colony_net{ + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Colony Dorms"; + pixel_y = 26 + }, +/turf/open/floor/prison, +/area/lv522/indoors/a_block/dorms) "nEd" = ( -/obj/structure/platform{ - dir = 4 +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 8; + pixel_y = -1 }, -/obj/structure/platform{ - dir = 8 +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 1; - name = "overhead pipe"; - pixel_x = -8; - pixel_y = -6 +/obj/structure/machinery/light{ + dir = 1 }, -/obj/structure/prop/invuln/pipe_water{ - pixel_y = 17 +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/gm/river, -/area/lv522/atmos/cargo_intake) +/area/lv522/atmos/east_reactor/south) "nEq" = ( /obj/effect/landmark/lv624/fog_blocker/short, /turf/open/floor/plating/plating_catwalk/prison, @@ -30068,16 +34507,27 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms/glass) +"nEY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/indoors/lone_buildings/engineering) +"nFc" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/way_in_command_centre) "nFj" = ( /turf/open/floor/plating, /area/lv522/landing_zone_1) "nFt" = ( -/obj/structure/blocker/forcefield/vehicles, -/obj/structure/blocker/invisible_wall, +/obj/structure/pipes/vents/pump, +/obj/structure/machinery/power/apc/weak{ + dir = 1 + }, /turf/open/floor/corsat{ icon_state = "plate" }, -/area/lv522/oob) +/area/lv522/atmos/filt) "nFM" = ( /obj/effect/landmark/objective_landmark/science, /obj/effect/decal/cleanable/dirt, @@ -30099,20 +34549,10 @@ /area/lv522/indoors/c_block/casino) "nFO" = ( /obj/structure/prop/invuln/ice_prefab{ - dir = 9 + dir = 5 }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/w_rockies) -"nFQ" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "LV_522_Hydro-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/b_block/hydro) "nGc" = ( /obj/effect/alien/resin/sticky, /turf/open/gm/river, @@ -30120,7 +34560,7 @@ "nGe" = ( /obj/structure/cargo_container/kelland/left, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "nGq" = ( /obj/effect/spawner/gibspawner/xeno, @@ -30144,7 +34584,7 @@ icon_state = "NW-out"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "nGC" = ( /obj/structure/stairs/perspective{ @@ -30168,12 +34608,24 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/north_street) +"nHg" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/shiva{ + icon_state = "radiator_tile2" + }, +/area/lv522/atmos/way_in_command_centre) "nHi" = ( /turf/open/floor/prison{ dir = 10; icon_state = "floor_marked" }, /area/lv522/landing_zone_1) +"nHl" = ( +/obj/structure/barricade/sandbags, +/turf/open/asphalt/cement{ + icon_state = "cement14" + }, +/area/lv522/outdoors/colony_streets/north_street) "nHA" = ( /turf/open/floor/prison{ icon_state = "darkbrownfull2" @@ -30236,10 +34688,27 @@ "nJv" = ( /turf/closed/wall/strata_outpost, /area/lv522/indoors/lone_buildings/engineering) +"nJO" = ( +/obj/structure/surface/table/almayer, +/obj/effect/landmark/objective_landmark/far, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "nJV" = ( /obj/structure/noticeboard, -/turf/closed/wall/solaris/reinforced/hull/lv522, -/area/lv522/oob) +/turf/closed/wall/strata_outpost, +/area/lv522/outdoors/colony_streets/windbreaker/observation) +"nJW" = ( +/obj/item/toy/plush/farwa{ + desc = "A Farwa plush doll. Once soft and comforting now just really wet."; + name = "Soaked farwa plush doll" + }, +/turf/open/gm/river, +/area/lv522/atmos/sewer) "nKh" = ( /obj/structure/machinery/camera/autoname{ dir = 8 @@ -30273,21 +34742,14 @@ /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/north_street) "nKo" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/door_control/brbutton/alt{ - id = "Secure_Master_Armoury"; - name = "remote door-control" - }, -/obj/item/limb/hand/l_hand{ - dir = 1; - pixel_x = 9; - pixel_y = 3 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - icon_state = "darkredfull2" +/obj/item/weapon/gun/rifle/l42a{ + current_mag = null }, -/area/lv522/indoors/a_block/security) +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/indoors/a_block/security/glass) "nKK" = ( /obj/structure/platform{ dir = 8 @@ -30352,7 +34814,6 @@ }, /area/lv522/outdoors/colony_streets/north_street) "nLW" = ( -/obj/item/tool/weldingtool/simple, /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 }, @@ -30366,29 +34827,33 @@ /turf/open/auto_turf/shale/layer1, /area/lv522/landing_zone_1) "nMd" = ( -/obj/structure/surface/table/almayer, -/obj/effect/landmark/objective_landmark/close, +/obj/structure/closet/toolcloset, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" }, /area/lv522/indoors/lone_buildings/engineering) +"nMl" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison, +/area/lv522/atmos/reactor_garage) "nMt" = ( /obj/structure/surface/table/almayer, /obj/effect/decal/cleanable/dirt, +/obj/item/ammo_box/magazine/l42a, /turf/open/floor/prison{ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security) "nMw" = ( -/obj/item/clothing/head/hardhat, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 }, -/turf/open/floor/corsat{ - icon_state = "squares" +/turf/open/floor/shiva{ + icon_state = "radiator_tile2" }, -/area/lv522/atmos/cargo_intake) +/area/lv522/atmos/way_in_command_centre) "nMz" = ( /obj/item/prop/alien/hugger, /obj/structure/pipes/standard/simple/hidden/green{ @@ -30399,6 +34864,13 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"nMB" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ship, +/area/lv522/atmos/way_in_command_centre) "nMC" = ( /obj/structure/platform{ dir = 4 @@ -30410,15 +34882,6 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/north_street) -"nMP" = ( -/obj/structure/largecrate/random/secure, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/lv522/outdoors/colony_streets/north_street) "nMT" = ( /obj/structure/machinery/colony_floodlight{ layer = 4.3; @@ -30428,6 +34891,10 @@ icon_state = "marked" }, /area/lv522/outdoors/colony_streets/north_street) +"nMX" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/prison, +/area/lv522/atmos/way_in_command_centre) "nNf" = ( /obj/structure/platform{ dir = 8 @@ -30487,11 +34954,13 @@ }, /area/lv522/indoors/a_block/corpo/glass) "nNL" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/corsat{ - icon_state = "marked" +/obj/item/ammo_magazine/rifle, +/obj/item/ammo_magazine/rifle{ + pixel_x = -10; + pixel_y = 9 }, -/area/lv522/atmos/cargo_intake) +/turf/open/asphalt/cement, +/area/lv522/outdoors/nw_rockies) "nNM" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 @@ -30586,13 +35055,22 @@ /obj/structure/platform_decoration{ dir = 6 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "nPc" = ( /obj/structure/platform_decoration, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"nPn" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/plating, +/area/lv522/landing_zone_forecon/UD6_Tornado) "nPo" = ( /obj/item/prop/alien/hugger, /obj/effect/decal/cleanable/dirt, @@ -30625,11 +35103,29 @@ "nPN" = ( /turf/closed/shuttle/dropship2/tornado, /area/lv522/landing_zone_forecon/UD6_Tornado) +"nPV" = ( +/obj/structure/bed/chair/comfy, +/turf/open/floor/prison, +/area/lv522/atmos/way_in_command_centre) "nQa" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, /turf/open/asphalt/cement{ icon_state = "cement14" }, /area/lv522/outdoors/colony_streets/north_east_street) +"nQk" = ( +/obj/structure/barricade/deployable{ + dir = 1 + }, +/obj/structure/barricade/deployable{ + dir = 8 + }, +/turf/open/asphalt/cement{ + icon_state = "cement2" + }, +/area/lv522/outdoors/colony_streets/north_street) "nQn" = ( /obj/item/stack/rods, /obj/structure/machinery/light{ @@ -30652,18 +35148,35 @@ /area/lv522/outdoors/colony_streets/north_street) "nQz" = ( /obj/structure/platform_decoration, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "nQG" = ( /obj/item/stack/sheet/wood, /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) +"nQL" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -12; + pixel_y = -1 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "nQM" = ( /obj/structure/cargo_container/watatsumi/leftmid, /turf/open/asphalt/cement{ icon_state = "cement4" }, /area/lv522/outdoors/colony_streets/north_west_street) +"nQO" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "nQQ" = ( /obj/item/storage/backpack/marine/satchel{ desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; @@ -30673,7 +35186,7 @@ pixel_x = 4; pixel_y = 21 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "nQT" = ( /obj/structure/machinery/door/airlock/almayer/maint, @@ -30692,6 +35205,30 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"nRs" = ( +/obj/structure/prop/ice_colony/ground_wire{ + dir = 8 + }, +/obj/structure/prop/ice_colony/ground_wire, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/central_streets) +"nRy" = ( +/obj/structure/closet/fireaxecabinet{ + pixel_y = 29 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) +"nRI" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/colony_streets/north_street) "nRJ" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/faxmachine, @@ -30716,6 +35253,11 @@ icon_state = "marked" }, /area/lv522/indoors/c_block/t_comm) +"nRY" = ( +/obj/structure/largecrate/random/secure, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "nSm" = ( /obj/structure/surface/table/almayer, /obj/item/trash/plate, @@ -30786,18 +35328,18 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorm_north) +"nTj" = ( +/obj/effect/landmark/lv624/fog_blocker/short, +/turf/closed/wall/strata_outpost/reinforced/hull, +/area/lv522/oob/w_y_vault) "nTl" = ( -/obj/effect/landmark/xeno_hive_spawn, -/obj/effect/landmark/ert_spawns/groundside_xeno, -/turf/open/floor/corsat{ - icon_state = "plate" - }, +/turf/closed/wall/r_wall/biodome/biodome_unmeltable, /area/lv522/atmos/east_reactor) "nTp" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "nTv" = ( /turf/closed/wall/strata_outpost, @@ -30833,23 +35375,14 @@ /turf/open/floor/prison, /area/lv522/landing_zone_1) "nUD" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, /turf/open/floor/corsat{ dir = 1; icon_state = "browncorner" }, /area/lv522/atmos/filt) -"nUF" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/structure/largecrate/random/case/small, -/turf/open/floor/plating, -/area/lv522/indoors/c_block/mining) "nUO" = ( /obj/structure/closet/crate/trashcart, /turf/open/auto_turf/shale/layer1, @@ -30891,10 +35424,15 @@ icon_state = "greenfull" }, /area/lv522/indoors/a_block/fitness) +"nVr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "nVN" = ( /obj/item/ammo_magazine/flamer_tank/empty, /obj/effect/decal/cleanable/liquid_fuel, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_street) "nVR" = ( /obj/structure/platform_decoration{ @@ -30914,6 +35452,9 @@ "nVW" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/fence, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, @@ -31050,22 +35591,6 @@ }, /turf/open/floor/plating, /area/lv522/indoors/c_block/garage) -"nXI" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "LV_522_Hydro-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/b_block/bridge) "nXK" = ( /obj/structure/barricade/wooden{ dir = 8; @@ -31080,6 +35605,18 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/casino) +"nXM" = ( +/obj/structure/barricade/sandbags{ + dir = 8 + }, +/obj/item/prop/alien/hugger{ + pixel_x = 13; + pixel_y = -5 + }, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "nXO" = ( /obj/item/ammo_box/magazine/misc/flares, /turf/open/floor/prison, @@ -31099,7 +35636,7 @@ icon_state = "E"; pixel_x = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "nXY" = ( /obj/effect/decal/cleanable/dirt, @@ -31117,11 +35654,24 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/hallway) +"nYz" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/n_rockies) "nYF" = ( /obj/item/weapon/twohanded/folded_metal_chair, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/bridges/garden_bridge) +"nYM" = ( +/obj/structure/cargo_container/wy/mid, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/w_rockies) "nYQ" = ( /obj/structure/platform_decoration{ dir = 1 @@ -31154,15 +35704,6 @@ /obj/effect/decal/cleanable/generic, /turf/open/floor/prison, /area/lv522/indoors/a_block/kitchen) -"nZn" = ( -/obj/effect/landmark/objective_landmark/close, -/obj/structure/closet/crate, -/obj/item/stack/sheet/plasteel/large_stack, -/obj/item/stack/sheet/plasteel/large_stack, -/turf/open/floor/plating{ - icon_state = "platebot" - }, -/area/lv522/indoors/c_block/cargo) "nZv" = ( /obj/structure/machinery/conveyor{ dir = 4; @@ -31177,15 +35718,6 @@ icon_state = "greenfull" }, /area/lv522/indoors/a_block/fitness) -"nZx" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/plasteel/medium_stack, -/obj/item/ore/uranium, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/lv522/indoors/c_block/mining) "nZF" = ( /turf/open/floor/prison{ icon_state = "floor_plate" @@ -31197,21 +35729,19 @@ }, /area/lv522/outdoors/n_rockies) "oaj" = ( -/obj/structure/fence{ - layer = 2.9 - }, /obj/structure/pipes/standard/simple/hidden/green, +/turf/closed/wall/r_wall/biodome/biodome_unmeltable, +/area/lv522/atmos/cargo_intake) +"oan" = ( /obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" + icon_state = "E"; + pixel_x = 1 }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor{ + dir = 4; + icon_state = "whiteyellowfull" }, -/area/lv522/outdoors/colony_streets/central_streets) +/area/lv522/oob/w_y_vault) "oaq" = ( /obj/item/storage/backpack/marine/satchel{ desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; @@ -31295,6 +35825,20 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/corpo/glass) +"oda" = ( +/obj/structure/prop/invuln/minecart_tracks, +/obj/structure/closet/crate/miningcar{ + layer = 3.1; + name = "\improper materials storage bin"; + pixel_y = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/sheet/metal/small_stack, +/obj/item/ore/slag, +/obj/item/ore/slag, +/obj/item/ore/slag, +/turf/open/floor/prison, +/area/lv522/indoors/c_block/mining) "odg" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/snacks/plaincakeslice{ @@ -31307,12 +35851,6 @@ icon_state = "kitchen" }, /area/lv522/indoors/a_block/kitchen) -"odi" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/outdoors/colony_streets/north_street) "odt" = ( /obj/structure/window_frame/strata, /obj/item/stack/rods, @@ -31363,17 +35901,14 @@ }, /area/lv522/indoors/a_block/bridges/dorms_fitness) "oem" = ( -/obj/structure/pipes/standard/simple/hidden/green{ +/obj/structure/bed/chair/comfy{ dir = 4 }, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 - }, /turf/open/floor/prison{ dir = 4; - icon_state = "greenfull" + icon_state = "cell_stripe" }, -/area/lv522/indoors/a_block/fitness) +/area/lv522/atmos/east_reactor/south) "oet" = ( /obj/structure/prop/dam/crane/cargo{ dir = 1 @@ -31439,9 +35974,15 @@ icon_state = "blue_plate" }, /area/lv522/indoors/c_block/mining) +"oeU" = ( +/obj/structure/bed/chair/comfy{ + dir = 1 + }, +/turf/open/floor/prison, +/area/lv522/atmos/way_in_command_centre) "oeX" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "ofd" = ( /obj/structure/window/framed/strata/reinforced, @@ -31457,14 +35998,8 @@ dir = 4; pixel_x = -9 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) -"ofF" = ( -/obj/structure/prop/dam/truck/cargo, -/turf/open/asphalt/cement{ - icon_state = "cement1" - }, -/area/lv522/landing_zone_2) "ofS" = ( /obj/structure/cargo_container/kelland/left, /turf/open/floor/prison{ @@ -31629,15 +36164,12 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/bridges/op_centre) -"oik" = ( -/obj/structure/machinery/colony_floodlight{ - layer = 4.3; - pixel_y = 9 - }, -/turf/open/floor/corsat{ - icon_state = "marked" +"oim" = ( +/obj/structure/machinery/light{ + dir = 4 }, -/area/lv522/indoors/a_block/garden) +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor) "oiA" = ( /obj/structure/stairs/perspective{ dir = 4; @@ -31655,7 +36187,7 @@ icon_state = "p_stair_full" }, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "oiD" = ( /obj/structure/machinery/light/double/blue{ @@ -31667,13 +36199,6 @@ icon_state = "plate" }, /area/lv522/indoors/c_block/mining) -"oiK" = ( -/obj/structure/prop/turbine_extras/border, -/obj/structure/prop/turbine, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/landing_zone_2/ceiling) "oiP" = ( /obj/structure/platform_decoration{ dir = 1 @@ -31691,10 +36216,8 @@ }, /area/lv522/indoors/lone_buildings/storage_blocks) "oiW" = ( -/obj/effect/landmark/monkey_spawn, -/turf/open/floor/corsat{ - icon_state = "squares" - }, +/obj/structure/foamed_metal, +/turf/open/floor/plating, /area/lv522/atmos/cargo_intake) "oiY" = ( /obj/effect/landmark/lv624/fog_blocker/short, @@ -31722,6 +36245,12 @@ icon_state = "greenfull" }, /area/lv522/landing_zone_1/ceiling) +"ojn" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor) "ojp" = ( /turf/closed/wall/strata_outpost, /area/lv522/indoors/a_block/bridges/garden_bridge) @@ -31757,6 +36286,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"ojA" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper C-Block - Cargo Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/bridge) "ojW" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -31764,6 +36301,29 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/hallway) +"okj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/backpack/marine/satchel{ + desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; + icon = 'icons/obj/janitor.dmi'; + icon_state = "trashbag3"; + name = "trash bag"; + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/storage/backpack/marine/satchel{ + desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; + icon = 'icons/obj/janitor.dmi'; + icon_state = "trashbag3"; + name = "trash bag"; + pixel_x = 3; + pixel_y = -2 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/sewer) "okA" = ( /obj/structure/surface/rack, /obj/structure/machinery/camera/autoname{ @@ -31851,6 +36411,14 @@ icon_state = "cement4" }, /area/lv522/outdoors/colony_streets/north_east_street) +"onM" = ( +/obj/structure/barricade/deployable{ + dir = 1 + }, +/turf/open/floor/shiva{ + icon_state = "radiator_tile2" + }, +/area/lv522/atmos/way_in_command_centre) "onT" = ( /obj/structure/largecrate/random, /obj/effect/decal/cleanable/dirt, @@ -31869,13 +36437,13 @@ /turf/closed/wall/strata_ice/dirty, /area/lv522/oob) "ooh" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/head/beret/eng, -/obj/item/ammo_box/magazine/nailgun/empty{ - pixel_x = -6; - pixel_y = 12 +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Generator Room"; + welded = 1 + }, +/turf/open/floor/corsat{ + icon_state = "marked" }, -/turf/open/floor/prison, /area/lv522/indoors/lone_buildings/engineering) "oot" = ( /turf/open/floor/prison{ @@ -31883,12 +36451,14 @@ icon_state = "darkpurple2" }, /area/lv522/indoors/a_block/dorms) -"oow" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"oox" = ( +/obj/structure/stairs/perspective{ + dir = 10; + icon_state = "p_stair_full" }, -/area/lv522/outdoors/colony_streets/north_street) +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "ooG" = ( /obj/structure/machinery/power/apc/weak{ dir = 1 @@ -32027,6 +36597,12 @@ }, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"orm" = ( +/obj/structure/platform/strata{ + dir = 4 + }, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) "ort" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ @@ -32042,7 +36618,7 @@ /area/lv522/indoors/a_block/hallway) "orE" = ( /obj/item/prop/colony/used_flare, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "orI" = ( /obj/structure/surface/table/almayer, @@ -32063,7 +36639,7 @@ /obj/structure/prop/invuln/ice_prefab/roof_greeble{ icon_state = "smokestack" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "orS" = ( /obj/effect/decal/cleanable/blood/xeno, @@ -32094,6 +36670,26 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/north_west_street) +"osm" = ( +/obj/structure/transmitter/colony_net{ + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Reactor Sewer"; + pixel_y = 26 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) +"osE" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Corporate Office Airlock"; + req_access_txt = "100" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/corpo/glass) "osN" = ( /turf/open/asphalt/cement{ icon_state = "cement4" @@ -32131,15 +36727,15 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/medical) -"otC" = ( -/obj/structure/machinery/colony_floodlight{ - layer = 4.3; - pixel_y = 9 +"otx" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 }, -/turf/open/floor/corsat{ - icon_state = "marked" +/obj/structure/platform_decoration, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/area/lv522/outdoors/colony_streets/north_east_street) +/area/lv522/atmos/sewer) "otH" = ( /obj/structure/surface/table/almayer, /obj/item/prop/colony/proptag{ @@ -32151,6 +36747,15 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) +"otM" = ( +/obj/structure/machinery/space_heater/radiator/red{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/lv522/indoors/lone_buildings/engineering) "otQ" = ( /turf/open/floor/corsat{ icon_state = "marked" @@ -32196,6 +36801,16 @@ }, /turf/open/gm/river, /area/lv522/outdoors/colony_streets/south_street) +"ouv" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/machinery/camera/autoname, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/indoors/a_block/dorm_north) "ouG" = ( /obj/structure/barricade/deployable{ dir = 8 @@ -32237,13 +36852,22 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/c_block/casino) +"ovC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "ovT" = ( /obj/structure/stairs/perspective{ dir = 4; icon_state = "p_stair_full" }, /obj/structure/platform, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/indoors/a_block/bridges/dorms_fitness) "owe" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -32288,6 +36912,22 @@ }, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"oxt" = ( +/obj/structure/fence{ + layer = 2.9 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/lv522/outdoors/colony_streets/north_street) "oxH" = ( /obj/structure/barricade/handrail/strata{ dir = 8 @@ -32336,6 +36976,12 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) +"oyK" = ( +/obj/effect/spawner/gibspawner/xeno, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "oyM" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -32353,7 +36999,7 @@ "oyY" = ( /obj/structure/largecrate, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "ozk" = ( /obj/structure/prop/invuln/lattice_prop{ @@ -32394,9 +37040,6 @@ "ozJ" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/objective_landmark/far, -/obj/structure/machinery/power/apc/weak{ - dir = 1 - }, /turf/open/floor/strata{ icon_state = "blue1" }, @@ -32443,7 +37086,7 @@ /obj/structure/platform_decoration{ dir = 9 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "oAJ" = ( /obj/structure/bookcase{ @@ -32456,6 +37099,25 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"oAY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 16 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 16 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "oBf" = ( /obj/structure/bed/chair/wheelchair, /turf/open/floor/prison, @@ -32470,7 +37132,6 @@ /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) "oBx" = ( -/obj/item/prop/alien/hugger, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorm_north) @@ -32525,20 +37186,29 @@ icon_state = "white_cyan4" }, /area/lv522/indoors/a_block/medical) -"oCW" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 8; - pixel_x = -6; - pixel_y = 6 +"oDj" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1 }, -/turf/open/floor/plating, -/area/lv522/landing_zone_1/tunnel) +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/reactor_garage) "oDu" = ( /obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/corsat{ icon_state = "marked" }, /area/lv522/indoors/a_block/dorms) +"oDU" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/command_centre) "oDZ" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ @@ -32546,6 +37216,14 @@ icon_state = "darkyellowfull2" }, /area/lv522/indoors/lone_buildings/outdoor_bot) +"oEc" = ( +/obj/structure/largecrate/random/secure, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, +/area/lv522/landing_zone_2/ceiling) "oEw" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -32697,6 +37375,25 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) +"oHR" = ( +/obj/structure/transmitter/colony_net{ + dir = 4; + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Colony Security"; + pixel_x = -16 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/indoors/a_block/security/glass) +"oHW" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal/large_stack, +/turf/open/floor/plating{ + icon_state = "platebot" + }, +/area/lv522/indoors/c_block/cargo) "oIr" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ @@ -32791,7 +37488,7 @@ /obj/structure/platform_decoration{ dir = 6 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "oKe" = ( /obj/structure/pipes/standard/manifold/hidden/green{ @@ -32817,7 +37514,7 @@ dir = 10 }, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "oKI" = ( /obj/structure/stairs/perspective{ @@ -32831,9 +37528,22 @@ }, /area/lv522/outdoors/colony_streets/north_east_street) "oKK" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/plating/plating_catwalk/prison, -/area/lv522/atmos/filt) +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/east_reactor/south) +"oKN" = ( +/obj/structure/transmitter/colony_net{ + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Reactor Central Office"; + pixel_y = 26 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/command_centre) "oKP" = ( /obj/structure/machinery/autolathe, /obj/effect/decal/cleanable/dirt, @@ -32915,6 +37625,11 @@ icon_state = "white_cyan2" }, /area/lv522/indoors/a_block/medical) +"oLK" = ( +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/reactor_garage) "oLW" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -32939,11 +37654,37 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/bridges/op_centre) +"oMo" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/device/flashlight/lamp/green{ + layer = 3.5; + pixel_y = 13 + }, +/turf/open/floor/wood/ship, +/area/lv522/atmos/way_in_command_centre) +"oMt" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Security Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "Sec-Kitchen-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/security) "oML" = ( /turf/open/floor/corsat{ icon_state = "brown" }, /area/lv522/atmos/north_command_centre) +"oMX" = ( +/obj/item/storage/belt/grenade, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison, +/area/lv522/outdoors/colony_streets/north_street) "oNd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/surface/table/reinforced/prison, @@ -33002,16 +37743,19 @@ icon_state = "marked" }, /area/lv522/indoors/lone_buildings/storage_blocks) +"oOD" = ( +/obj/structure/prop/invuln/ice_prefab{ + dir = 1; + icon_state = "fab_2" + }, +/turf/open/auto_turf/shale/layer2, +/area/lv522/outdoors/w_rockies) "oOS" = ( /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/north_west_street) "oPc" = ( -/obj/item/clothing/gloves/yellow, -/obj/structure/machinery/space_heater/radiator/red, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/lone_buildings/engineering) "oPs" = ( /obj/effect/decal/cleanable/dirt, @@ -33071,22 +37815,12 @@ /area/lv522/indoors/a_block/dorm_north) "oQC" = ( /obj/structure/platform_decoration, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "oQN" = ( /obj/structure/largecrate/random/case, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) -"oQV" = ( -/obj/structure/largecrate/random/barrel/green, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/lv522/outdoors/colony_streets/north_street) "oQW" = ( /obj/structure/machinery/light{ dir = 8 @@ -33143,7 +37877,7 @@ pixel_x = 17; pixel_y = 31 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "oSA" = ( /obj/structure/surface/rack, @@ -33165,6 +37899,7 @@ /area/lv522/indoors/a_block/bridges) "oSX" = ( /obj/structure/blocker/forcefield/vehicles, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -33178,7 +37913,7 @@ icon_state = "p_stair_full" }, /obj/structure/platform/stair_cut, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/indoors/a_block/bridges/dorms_fitness) "oTd" = ( /obj/structure/cargo_container/ferret/mid, @@ -33200,8 +37935,14 @@ }, /area/lv522/indoors/a_block/dorms) "oTp" = ( -/obj/structure/machinery/light, -/turf/open/floor/plating, +/obj/structure/surface/table/almayer, +/obj/item/ammo_box/magazine/nailgun/empty{ + pixel_y = 5 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/prison, /area/lv522/indoors/lone_buildings/engineering) "oTD" = ( /obj/item/lightstick/red/spoke/planted{ @@ -33215,7 +37956,7 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "oTG" = ( /obj/structure/largecrate/random, @@ -33247,7 +37988,7 @@ /area/lv522/landing_zone_2) "oTX" = ( /obj/effect/spawner/gibspawner/xeno, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "oTY" = ( /obj/structure/flora/jungle/plantbot1, @@ -33262,6 +38003,9 @@ icon_state = "wood" }, /area/lv522/indoors/b_block/bar) +"oUq" = ( +/turf/closed/wall/strata_outpost/reinforced, +/area/lv522/atmos/way_in_command_centre) "oUC" = ( /obj/structure/prop/invuln/overhead/flammable_pipe/fly{ pixel_y = 6 @@ -33270,6 +38014,16 @@ icon_state = "plate" }, /area/lv522/atmos/east_reactor) +"oUE" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1; + pixel_y = -1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "oUZ" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/corsat{ @@ -33290,6 +38044,11 @@ }, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"oVt" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) "oVA" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/reagent_container/food/drinks/coffee, @@ -33330,19 +38089,29 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/garage) +"oVO" = ( +/obj/structure/fence{ + layer = 2.9 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/lv522/outdoors/colony_streets/north_street) "oVS" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ icon_state = "marked" }, /area/lv522/indoors/c_block/mining) -"oWb" = ( -/obj/effect/landmark/static_comms/net_one, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_marked" - }, -/area/lv522/indoors/lone_buildings/engineering) "oWq" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -33370,6 +38139,13 @@ icon_state = "marked" }, /area/lv522/landing_zone_1/tunnel) +"oWS" = ( +/obj/item/prop/colony/used_flare, +/obj/structure/machinery/light, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "oWV" = ( /obj/structure/machinery/light{ dir = 4 @@ -33384,6 +38160,20 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/kitchen/glass) +"oXd" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) +"oXk" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/reactor_garage) "oXp" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 @@ -33421,14 +38211,6 @@ /obj/structure/barricade/deployable, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/admin) -"oXV" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Greenhouse Storage" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/lone_buildings/outdoor_bot) "oXX" = ( /obj/structure/window/framed/strata/reinforced, /obj/structure/machinery/door/poddoor/almayer/closed{ @@ -33441,7 +38223,7 @@ /area/lv522/indoors/a_block/hallway) "oXZ" = ( /obj/structure/cargo_container/kelland/left, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/east_central_street) "oYa" = ( /obj/structure/stairs/perspective{ @@ -33449,12 +38231,22 @@ icon_state = "p_stair_full" }, /obj/structure/platform, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/indoors/a_block/bridges/dorms_fitness) +"oYu" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "oYM" = ( /obj/structure/platform_decoration, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "oYO" = ( /obj/structure/platform{ @@ -33464,7 +38256,7 @@ dir = 8 }, /obj/structure/platform, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "oYZ" = ( /obj/effect/decal/cleanable/dirt, @@ -33482,8 +38274,13 @@ /area/lv522/indoors/a_block/fitness) "oZN" = ( /obj/structure/platform, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) +"pab" = ( +/obj/structure/machinery/landinglight/ds2/delayone, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/landing_zone_2) "pag" = ( /obj/structure/largecrate/random/secure, /obj/structure/largecrate/random/secure{ @@ -33511,8 +38308,14 @@ "paT" = ( /obj/structure/cargo_container/kelland/right, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) +"pbi" = ( +/obj/structure/machinery/door_control/brbutton{ + id = "Reactor_garage_1" + }, +/turf/closed/wall/strata_outpost/reinforced, +/area/lv522/atmos/reactor_garage) "pbp" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/dorms/glass) @@ -33535,6 +38338,10 @@ icon_state = "floor_plate" }, /area/lv522/indoors/lone_buildings/storage_blocks) +"pco" = ( +/obj/structure/pipes/standard/manifold/fourway/hidden/green, +/turf/open/floor/prison, +/area/lv522/atmos/way_in_command_centre) "pcr" = ( /obj/structure/filingcabinet/seeds{ density = 0; @@ -33559,6 +38366,10 @@ icon_state = "floor_marked" }, /area/lv522/indoors/lone_buildings/outdoor_bot) +"pcH" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/way_in_command_centre) "pcO" = ( /obj/structure/stairs/perspective{ dir = 5; @@ -33574,6 +38385,17 @@ /obj/item/weapon/twohanded/fireaxe, /turf/open/floor/prison, /area/lv522/indoors/a_block/security/glass) +"pcV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "pdp" = ( /obj/structure/prop/invuln/overhead_pipe{ dir = 8; @@ -33587,6 +38409,19 @@ }, /turf/open/gm/river, /area/lv522/landing_zone_1/tunnel) +"pdq" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper B-Block - Hydroponics Airlock"; + welded = 1 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "LV_522_Hydro-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/b_block/hydro) "pdr" = ( /obj/structure/curtain/red, /obj/effect/decal/cleanable/dirt, @@ -33661,12 +38496,24 @@ dir = 9; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) +"pex" = ( +/obj/structure/barricade/deployable{ + dir = 1 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/way_in_command_centre) "pez" = ( /obj/structure/cargo_container/horizontal/blue/top, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "peM" = ( /obj/structure/platform_decoration{ @@ -33771,7 +38618,10 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Reactor_e_entry_3" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -33801,7 +38651,7 @@ pixel_x = 10; pixel_y = 21 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "pgn" = ( /obj/effect/decal/cleanable/dirt, @@ -33840,6 +38690,13 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security) +"pgy" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/west_reactor) "pgG" = ( /obj/structure/platform_decoration{ dir = 4 @@ -33855,13 +38712,15 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/north_east_street) -"pgL" = ( +"pgJ" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_marked" +/obj/structure/machinery/light{ + dir = 4 }, -/area/lv522/atmos/outdoor) +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor) "pha" = ( /obj/structure/bed/chair{ can_buckle = 0; @@ -33916,7 +38775,7 @@ /area/lv522/landing_zone_1/ceiling) "pit" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "piD" = ( /turf/open/floor/plating/plating_catwalk/prison, @@ -33935,9 +38794,16 @@ /turf/open/floor/wood, /area/lv522/indoors/a_block/fitness/glass) "piW" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/auto_turf/shale/layer1, -/area/lv522/outdoors/n_rockies) +/obj/structure/surface/table/almayer, +/obj/item/paper_bin{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/tool/pen/blue/clicky, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/east_reactor/south) "piY" = ( /obj/structure/platform{ dir = 4 @@ -34009,6 +38875,16 @@ icon_state = "9" }, /area/lv522/landing_zone_forecon/UD6_Tornado) +"pkE" = ( +/obj/structure/powerloader_wreckage, +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/reactor_garage) "pkH" = ( /obj/effect/landmark/lv624/fog_blocker/short, /turf/open/floor/prison{ @@ -34017,12 +38893,17 @@ }, /area/lv522/landing_zone_1) "plb" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door_display/research_cell{ + dir = 4; + id = "Reactor_e_entry_4"; + pixel_x = -16; + req_access = null + }, /turf/open/floor/corsat{ - icon_state = "marked" + dir = 1; + icon_state = "brown" }, -/area/lv522/indoors/a_block/fitness) +/area/lv522/atmos/filt) "pli" = ( /obj/effect/decal/cleanable/dirt, /obj/item/prop/colony/used_flare, @@ -34136,7 +39017,7 @@ /area/lv522/indoors/a_block/hallway) "poZ" = ( /obj/structure/cargo_container/kelland/right, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "pps" = ( /turf/closed/shuttle/dropship2/tornado/typhoon{ @@ -34156,7 +39037,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "S" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "ppF" = ( /turf/closed/shuttle/dropship2/tornado/typhoon{ @@ -34181,6 +39062,12 @@ icon_state = "marked" }, /area/lv522/indoors/c_block/mining) +"ppX" = ( +/obj/item/prop/colony/used_flare, +/turf/open/asphalt/cement{ + icon_state = "cement1" + }, +/area/lv522/outdoors/colony_streets/north_street) "pqj" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/spacecash/c1000, @@ -34223,6 +39110,12 @@ icon_state = "cyan2" }, /area/lv522/indoors/a_block/medical) +"pqQ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/sewer) "pqR" = ( /obj/effect/decal/cleanable/cobweb2, /turf/open/asphalt/cement, @@ -34247,7 +39140,6 @@ /turf/open/floor/prison, /area/lv522/outdoors/colony_streets/north_west_street) "prT" = ( -/obj/structure/pipes/standard/simple/hidden/green, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /obj/structure/cargo_container/grant/rightmid, /turf/open/auto_turf/shale/layer1, @@ -34305,18 +39197,15 @@ pixel_x = 1; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "psq" = ( -/obj/structure/machinery/power/apc/weak{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" }, -/area/lv522/indoors/a_block/fitness) +/area/lv522/atmos/filt) "psC" = ( /turf/closed/wall/strata_outpost/reinforced/hull, /area/lv522/indoors/a_block/hallway) @@ -34339,14 +39228,12 @@ }, /area/lv522/indoors/a_block/hallway) "ptc" = ( -/obj/structure/bed/chair, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "browncorner" }, -/area/lv522/indoors/a_block/fitness) +/area/lv522/atmos/filt) "ptp" = ( /obj/structure/machinery/light, /obj/effect/decal/cleanable/dirt, @@ -34371,16 +39258,6 @@ icon_state = "cement4" }, /area/lv522/outdoors/colony_streets/north_east_street) -"pur" = ( -/obj/structure/prop/turbine_extras/left, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/landing_zone_2/ceiling) "puu" = ( /obj/structure/machinery/cm_vending/sorted/medical/no_access, /turf/open/floor/strata{ @@ -34406,13 +39283,9 @@ }, /area/lv522/indoors/a_block/hallway) "puV" = ( -/obj/structure/bed/chair, -/obj/item/prop/alien/hugger, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/lv522/indoors/a_block/fitness) +/obj/structure/cargo_container/kelland/right, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_west_street) "puY" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = -9; @@ -34430,19 +39303,19 @@ icon_state = "greenfull" }, /area/lv522/landing_zone_1) -"pvE" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +"pvz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light, /turf/open/floor/corsat{ - icon_state = "marked" + icon_state = "plate" }, -/area/lv522/indoors/c_block/cargo) +/area/lv522/atmos/east_reactor/south) "pvW" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = -12; pixel_y = 25 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "pwa" = ( /turf/open/auto_turf/shale/layer1, @@ -34457,19 +39330,6 @@ icon_state = "darkpurple2" }, /area/lv522/indoors/a_block/dorms) -"pwk" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/item/stack/sheet/metal/large_stack, -/obj/structure/closet/crate, -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/sheet/metal/medium_stack, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_marked" - }, -/area/lv522/indoors/lone_buildings/storage_blocks) "pwu" = ( /obj/structure/platform_decoration{ dir = 8 @@ -34478,15 +39338,42 @@ /area/lv522/indoors/c_block/cargo) "pwz" = ( /obj/structure/cargo_container/horizontal/blue/middle, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) -"pwC" = ( -/obj/structure/bed/chair, +"pwA" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) +"pwB" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 2 + }, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" + icon_state = "floor_plate" }, -/area/lv522/indoors/a_block/fitness) +/area/lv522/atmos/way_in_command_centre) +"pwC" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) +"pwF" = ( +/obj/structure/prop/invuln/pipe_water{ + pixel_x = 3; + pixel_y = 10 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_y = -6 + }, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "pwH" = ( /obj/effect/landmark/lv624/fog_blocker/short, /obj/structure/machinery/landinglight/ds1/delayone{ @@ -34504,6 +39391,20 @@ icon_state = "cell_stripe" }, /area/lv522/indoors/lone_buildings/storage_blocks) +"pwR" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/weldpack{ + pixel_y = 2 + }, +/turf/open/asphalt/cement{ + icon_state = "cement4" + }, +/area/lv522/outdoors/colony_streets/north_west_street) +"pwT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/prison, +/area/lv522/indoors/lone_buildings/engineering) "pwW" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -34514,38 +39415,22 @@ }, /area/lv522/indoors/b_block/bridge) "pwX" = ( -/obj/structure/machinery/vending/walkman{ - density = 0; - pixel_y = 16 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/lv522/indoors/a_block/fitness) +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) "pxb" = ( -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "pxk" = ( /obj/structure/largecrate/random/barrel/red, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "pxN" = ( -/obj/structure/machinery/space_heater/radiator/red{ - dir = 1; - pixel_y = 26 - }, +/obj/structure/surface/table/almayer, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/lv522/indoors/a_block/fitness) -"pxQ" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 1 + icon_state = "floor_plate" }, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/colony_streets/central_streets) +/area/lv522/atmos/east_reactor/south) "pxS" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison{ @@ -34557,6 +39442,13 @@ icon_state = "95" }, /area/lv522/landing_zone_forecon/UD6_Typhoon) +"pyc" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/prison{ + dir = 1; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/way_in_command_centre) "pyo" = ( /obj/structure/machinery/conveyor{ dir = 10; @@ -34618,7 +39510,7 @@ pixel_x = 9; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "pzj" = ( /obj/structure/surface/table/reinforced/prison, @@ -34635,7 +39527,7 @@ /area/lv522/indoors/c_block/garage) "pzo" = ( /obj/item/weapon/twohanded/folded_metal_chair, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "pzs" = ( /obj/structure/barricade/wooden, @@ -34662,24 +39554,19 @@ }, /area/lv522/outdoors/colony_streets/south_west_street) "pAp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/space_heater/radiator/red{ - dir = 4 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/lv522/indoors/a_block/fitness) +/obj/structure/largecrate, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_west_street) +"pAw" = ( +/obj/item/prop/colony/used_flare, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) "pAN" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 8 - }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + dir = 1; + icon_state = "cell_stripe" }, -/area/lv522/indoors/a_block/fitness) +/area/lv522/atmos/east_reactor/south) "pAW" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -34792,7 +39679,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "pCG" = ( /obj/structure/stairs/perspective{ @@ -34810,13 +39697,21 @@ /turf/open/floor/prison, /area/lv522/indoors/b_block/hydro) "pCT" = ( -/obj/structure/machinery/disposal, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison, +/obj/structure/machinery/power/terminal, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/plating, /area/lv522/indoors/lone_buildings/engineering) "pCU" = ( -/obj/item/prop/alien/hugger, -/turf/open/floor/prison, +/obj/item/ammo_magazine/smg/nailgun{ + current_rounds = 0 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, /area/lv522/indoors/lone_buildings/engineering) "pCW" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -34858,24 +39753,14 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/kitchen/glass) -"pDG" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/generic, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/fitness) "pDM" = ( -/obj/structure/bed/chair{ +/obj/structure/bed/chair/comfy{ dir = 4 }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/lv522/indoors/a_block/fitness) +/area/lv522/atmos/east_reactor/south) "pDU" = ( /obj/structure/barricade/wooden{ dir = 4 @@ -34918,31 +39803,18 @@ /area/lv522/atmos/east_reactor/south) "pEp" = ( /obj/structure/surface/table/almayer, -/obj/item/clothing/gloves/boxing{ - pixel_x = -5; +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 8; pixel_y = 5 }, -/obj/item/clothing/gloves/boxing/blue{ - pixel_x = 5; - pixel_y = -6 - }, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "floor_plate" }, -/area/lv522/indoors/a_block/fitness) +/area/lv522/atmos/east_reactor/south) "pEs" = ( -/obj/structure/surface/table/almayer, -/obj/item/toy/beach_ball, -/obj/item/reagent_container/food/drinks/bottle/sake{ - pixel_x = 9; - pixel_y = 17 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/lv522/indoors/a_block/fitness) +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/east_reactor/south) "pEu" = ( /obj/structure/machinery/space_heater/radiator/red{ dir = 8 @@ -34953,13 +39825,21 @@ }, /area/lv522/indoors/a_block/admin) "pEv" = ( -/obj/structure/largecrate/random/mini/wooden, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Reactor_e_entry_4" }, -/area/lv522/indoors/a_block/fitness) +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/filt) +"pEw" = ( +/obj/structure/blocker/forcefield/vehicles, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/command_centre) "pEA" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = -9; @@ -34981,12 +39861,20 @@ "pFw" = ( /obj/structure/cargo_container/horizontal/blue/middle, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "pFF" = ( /obj/structure/platform_decoration{ dir = 1 }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, @@ -34996,7 +39884,7 @@ dir = 1; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "pFQ" = ( /obj/item/prop/alien/hugger, @@ -35005,12 +39893,27 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security) +"pGe" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "pGg" = ( /obj/structure/bed/chair{ dir = 8 }, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorm_north) +"pGh" = ( +/turf/closed/wall/strata_outpost/reinforced, +/area/lv522/outdoors/colony_streets/north_street) "pGl" = ( /turf/closed/wall/strata_outpost/reinforced/hull, /area/lv522/indoors/a_block/kitchen) @@ -35044,8 +39947,21 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/admin) +"pGQ" = ( +/obj/item/prop/alien/hugger, +/turf/open/floor/wood/ship, +/area/lv522/atmos/way_in_command_centre) "pGY" = ( /obj/effect/decal/cleanable/blood/xeno, +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 5 + }, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/north_east_street) "pHi" = ( @@ -35101,10 +40017,16 @@ pixel_x = -9; pixel_y = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) +"pJb" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Fitness Centre Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/fitness) "pJd" = ( /obj/effect/decal/cleanable/cobweb2, /obj/structure/surface/table/almayer, @@ -35114,6 +40036,19 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/hydro) +"pJh" = ( +/obj/structure/surface/table/almayer{ + dir = 4; + flipped = 1 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "blue_plate" + }, +/area/lv522/indoors/a_block/admin) "pJj" = ( /obj/structure/closet/crate/hydroponics/prespawned, /turf/open/floor/prison{ @@ -35195,7 +40130,10 @@ }, /area/lv522/indoors/a_block/admin) "pKv" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Reactor_e_entry_3" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -35221,7 +40159,7 @@ dir = 6 }, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "pLs" = ( /obj/structure/barricade/wooden{ @@ -35235,18 +40173,18 @@ pixel_x = 9; pixel_y = 25 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) -"pLN" = ( -/obj/structure/machinery/door/airlock/almayer/medical{ - dir = 2; - name = "Medical Airlock" +"pLP" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/corsat{ - icon_state = "marked" +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/area/lv522/indoors/a_block/medical) +/area/lv522/atmos/way_in_command_centre) "pLT" = ( /obj/item/reagent_container/glass/bucket/janibucket{ desc = "It's a large bucket that fits in a janitorial cart. Holds 500 units. The lip is stained."; @@ -35256,17 +40194,6 @@ /obj/effect/decal/strata_decals/grime/grime3, /turf/open/floor/plating, /area/lv522/indoors/a_block/security) -"pMc" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 8; - pixel_x = -6; - pixel_y = 6 - }, -/obj/structure/platform_decoration{ - dir = 4 - }, -/turf/open/floor/plating, -/area/lv522/landing_zone_1/tunnel) "pMd" = ( /obj/structure/window/framed/strata/reinforced, /turf/open/floor/corsat{ @@ -35274,12 +40201,11 @@ }, /area/lv522/indoors/a_block/dorms) "pMg" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -13 +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "marked" }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/w_rockies) +/area/lv522/atmos/filt) "pMs" = ( /obj/structure/surface/table/gamblingtable, /obj/item/card/id/visa{ @@ -35297,24 +40223,19 @@ }, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) -"pMt" = ( -/obj/structure/machinery/door/airlock/almayer/medical{ - dir = 2; - name = "Medical Airlock" - }, -/turf/open/floor/corsat{ - icon_state = "marked" +"pMz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 }, -/area/lv522/indoors/a_block/medical) +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/sewer) "pMT" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 1 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/lv522/indoors/a_block/fitness) +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/outdoors/nw_rockies) "pNa" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 @@ -35323,6 +40244,15 @@ icon_state = "marked" }, /area/lv522/landing_zone_1/tunnel) +"pNc" = ( +/obj/structure/prop/server_equipment/yutani_server/broken, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/command_centre) "pNf" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 @@ -35348,6 +40278,19 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/kitchen) +"pNv" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/cargo_intake) +"pNF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/reactor_garage) "pNJ" = ( /obj/structure/stairs/perspective{ dir = 4; @@ -35366,6 +40309,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/c_block/t_comm) +"pOa" = ( +/obj/structure/machinery/colony_floodlight, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/outdoors/colony_streets/east_central_street) +"pOb" = ( +/obj/item/prop/colony/used_flare, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "pOd" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -35410,6 +40363,15 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"pOK" = ( +/obj/structure/platform/strata{ + dir = 1 + }, +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) "pON" = ( /obj/structure/filingcabinet/chestdrawer{ density = 0; @@ -35427,40 +40389,33 @@ }, /area/lv522/indoors/a_block/admin) "pPm" = ( -/obj/structure/bed/chair, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/obj/structure/largecrate, +/turf/open/asphalt/cement{ + icon_state = "cement4" }, -/area/lv522/indoors/a_block/fitness) +/area/lv522/outdoors/colony_streets/north_west_street) "pPt" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 6 +/obj/structure/largecrate/random, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/outdoors/nw_rockies) +"pPv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/obj/structure/bed/chair, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/area/lv522/indoors/a_block/fitness) -"pPC" = ( -/obj/structure/machinery/computer/cameras/wooden_tv{ - desc = "An old TV hooked up to a video cassette recorder, you can even use it to time shift WOW."; - layer = 3.2; - name = "Television set"; - network = null; - pixel_x = -3; - pixel_y = 6 +/obj/item/weapon/gun/rifle/m41a{ + current_mag = null }, -/obj/structure/surface/table/almayer, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" + icon_state = "darkredfull2" }, -/area/lv522/indoors/a_block/fitness) +/area/lv522/outdoors/colony_streets/north_street) +"pPC" = ( +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/outdoors/nw_rockies) "pPV" = ( /obj/structure/toilet{ dir = 4 @@ -35472,6 +40427,11 @@ icon_state = "white_cyan2" }, /area/lv522/indoors/a_block/dorms) +"pQq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset/full, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "pQx" = ( /obj/structure/closet/firecloset/full, /turf/open/floor/prison{ @@ -35522,10 +40482,21 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/bridge) +"pQR" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/east_reactor) "pRf" = ( -/obj/structure/pipes/standard/manifold/hidden/green, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/corsat{ - icon_state = "squares" + icon_state = "brown" }, /area/lv522/atmos/cargo_intake) "pRg" = ( @@ -35533,13 +40504,8 @@ /turf/open/floor/plating, /area/lv522/landing_zone_1) "pRh" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/gloves/black, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/lv522/indoors/a_block/fitness) +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/outdoors/n_rockies) "pRi" = ( /obj/structure/machinery/seed_extractor, /obj/effect/decal/cleanable/dirt, @@ -35552,7 +40518,7 @@ /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "pRH" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -35582,19 +40548,6 @@ icon_state = "brown" }, /area/lv522/atmos/cargo_intake) -"pSj" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "LV_522_Hydro-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/b_block/bridge) "pSs" = ( /obj/structure/machinery/light{ dir = 4 @@ -35608,6 +40561,15 @@ icon_state = "white_cyan2" }, /area/lv522/indoors/a_block/dorms) +"pSK" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "w-y1" + }, +/area/lv522/atmos/way_in_command_centre) "pTa" = ( /obj/structure/prop/vehicles/crawler{ layer = 3.1 @@ -35637,9 +40599,7 @@ /area/lv522/indoors/a_block/dorms) "pTH" = ( /obj/structure/machinery/door/airlock/hatch/cockpit/two, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) "pTO" = ( /obj/effect/decal/cleanable/dirt, @@ -35694,6 +40654,12 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"pUf" = ( +/obj/structure/tent/big, +/turf/open/asphalt/cement{ + icon_state = "cement1" + }, +/area/lv522/outdoors/colony_streets/north_street) "pUo" = ( /obj/structure/pipes/vents/pump, /obj/effect/decal/cleanable/dirt, @@ -35709,8 +40675,7 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 4 }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "pVb" = ( /obj/item/prop/colony/used_flare, @@ -35724,7 +40689,7 @@ dir = 5; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "pVo" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -35769,6 +40734,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/a_block/security) +"pVH" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/way_in_command_centre) "pVX" = ( /obj/structure/machinery/light{ dir = 8 @@ -35802,21 +40776,26 @@ icon_state = "darkbrownfull2" }, /area/lv522/landing_zone_2/ceiling) +"pWC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "pWR" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "pWW" = ( /obj/item/stack/sheet/wood, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/obj/structure/machinery/camera/autoname, -/obj/structure/machinery/light/small{ - dir = 1 - }, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" @@ -35829,11 +40808,23 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) -"pXk" = ( -/obj/structure/surface/table/almayer, +"pXh" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/powercell, -/obj/structure/machinery/cell_charger, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) +"pXk" = ( +/obj/structure/machinery/power/monitor{ + name = "Main Power Grid Monitoring" + }, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" @@ -35853,6 +40844,10 @@ /obj/structure/cargo_container/kelland/right, /turf/open/floor/prison, /area/lv522/landing_zone_2) +"pXv" = ( +/obj/item/prop/alien/hugger, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "pXx" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -35877,6 +40872,14 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/bridge) +"pXR" = ( +/obj/structure/barricade/sandbags, +/obj/item/trash/uscm_mre{ + pixel_x = -8; + pixel_y = 10 + }, +/turf/open/asphalt/cement, +/area/lv522/outdoors/colony_streets/north_street) "pYf" = ( /obj/structure/machinery/light{ dir = 8 @@ -35911,7 +40914,7 @@ /obj/structure/platform_decoration{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "pYO" = ( /obj/structure/prop/invuln/overhead_pipe{ @@ -35950,6 +40953,21 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_east_street) +"pZy" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_container/food/snacks/mre_pack/meal1{ + desc = "A tray of standard UA food. Stale cornbread, tomato paste and some green goop fill this tray."; + name = "\improper UA Prepared Meal (cornbread)"; + pixel_y = 9 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "pZA" = ( /obj/item/storage/secure/safe{ pixel_y = 29 @@ -35997,7 +41015,7 @@ "qbf" = ( /obj/structure/cargo_container/horizontal/blue/bottom, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "qbi" = ( /obj/structure/stairs/perspective{ @@ -36042,7 +41060,7 @@ layer = 2; name = "weak acid" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "qbI" = ( /obj/structure/prop/invuln/ice_prefab/trim{ @@ -36059,16 +41077,8 @@ pixel_y = 21 }, /obj/structure/sign/safety/high_voltage, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) -"qbL" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/dorms) "qbW" = ( /obj/structure/prop/invuln/ice_prefab/trim{ dir = 8 @@ -36096,6 +41106,25 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) +"qce" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_container/food/drinks/cans/waterbottle{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/reagent_container/food/drinks/cans/waterbottle{ + pixel_y = 7 + }, +/obj/item/reagent_container/food/drinks/cans/waterbottle{ + pixel_x = -7; + pixel_y = 7 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "qcw" = ( /obj/effect/spawner/gibspawner/human, /obj/effect/decal/cleanable/dirt, @@ -36120,8 +41149,11 @@ }, /area/lv522/landing_zone_1) "qda" = ( -/obj/structure/largecrate/random/barrel, -/turf/open/auto_turf/shale/layer0, +/obj/structure/largecrate/random/barrel/green, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, /area/lv522/landing_zone_2/ceiling) "qdc" = ( /obj/structure/desertdam/decals/road_edge{ @@ -36159,17 +41191,11 @@ }, /area/lv522/indoors/c_block/mining) "qeJ" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 4 - }, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" +/obj/structure/prop/vehicles/crawler, +/turf/open/floor/corsat{ + icon_state = "plate" }, -/area/lv522/indoors/a_block/fitness) +/area/lv522/atmos/reactor_garage) "qeK" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -36178,6 +41204,23 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"qfm" = ( +/obj/structure/prop/ice_colony/ground_wire{ + dir = 8 + }, +/obj/structure/prop/ice_colony/ground_wire, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -10; + pixel_y = 10 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/central_streets) +"qfo" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/lv522/atmos/way_in_command_centre) "qfu" = ( /obj/structure/foamed_metal, /obj/effect/decal/cleanable/dirt, @@ -36206,13 +41249,26 @@ /obj/structure/barricade/deployable{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) +"qfP" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Security Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "Sec-Kitchen-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/kitchen) "qgj" = ( /obj/structure/barricade/wooden{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "qgr" = ( /obj/structure/machinery/light/small, @@ -36224,14 +41280,10 @@ /turf/open/floor/plating, /area/lv522/oob) "qgx" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 9 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/lv522/indoors/a_block/fitness) +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) "qhm" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -36240,11 +41292,6 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/lone_buildings/chunk) -"qhA" = ( -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/dorm_north) "qhO" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -36260,7 +41307,7 @@ dir = 4; pixel_x = -8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "qio" = ( /obj/structure/pipes/standard/manifold/hidden/green{ @@ -36286,6 +41333,13 @@ icon_state = "darkyellowfull2" }, /area/lv522/indoors/c_block/t_comm) +"qix" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "qiC" = ( /obj/structure/machinery/camera/autoname{ dir = 8 @@ -36298,9 +41352,7 @@ }, /area/lv522/indoors/a_block/bridges) "qiG" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 - }, +/obj/structure/window/framed/strata/reinforced, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, @@ -36386,9 +41438,7 @@ name = "????"; stat = 2 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/lv522/landing_zone_forecon/UD6_Tornado) "qkw" = ( /obj/structure/prop/invuln/remote_console_pod, @@ -36399,6 +41449,11 @@ }, /turf/open/floor/prison, /area/shuttle/drop1/lv522) +"qle" = ( +/obj/structure/machinery/landinglight/ds2/delaytwo, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/landing_zone_2) "qlr" = ( /obj/item/trash/barcardine, /obj/effect/decal/cleanable/dirt, @@ -36438,6 +41493,13 @@ }, /turf/open/floor/plating, /area/lv522/outdoors/colony_streets/central_streets) +"qma" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_west_street) "qml" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -36468,11 +41530,7 @@ }, /area/lv522/indoors/a_block/admin) "qmA" = ( -/obj/effect/decal/cleanable/generic, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, +/turf/open/floor/plating, /area/lv522/indoors/lone_buildings/engineering) "qmD" = ( /obj/structure/fence, @@ -36504,7 +41562,7 @@ /obj/structure/platform_decoration{ dir = 6 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "qnk" = ( /obj/structure/surface/table/almayer, @@ -36594,9 +41652,7 @@ dir = 8 }, /obj/effect/decal/cleanable/blood/splatter, -/turf/open/shuttle/dropship{ - icon_state = "rasputin6" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_left, /area/lv522/landing_zone_forecon/UD6_Typhoon) "qnY" = ( /obj/structure/surface/table/almayer, @@ -36606,6 +41662,14 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"qoj" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/colony_streets/north_street) "qot" = ( /obj/structure/surface/table/almayer, /obj/item/stack/sheet/cardboard/full_stack, @@ -36621,10 +41685,14 @@ icon_state = "cell_stripe" }, /area/lv522/indoors/lone_buildings/storage_blocks) -"qpg" = ( -/turf/open/shuttle/dropship{ - icon_state = "floor8" +"qpd" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "cell_stripe" }, +/area/lv522/atmos/sewer) +"qpg" = ( +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/lv522/landing_zone_forecon/UD6_Typhoon) "qpq" = ( /obj/structure/surface/table/almayer, @@ -36635,6 +41703,18 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/security/glass) +"qpy" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 1; + pixel_x = -1; + pixel_y = 3 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "qpz" = ( /obj/structure/cable/heavyduty{ icon_state = "1-2" @@ -36655,9 +41735,26 @@ /turf/closed/wall/mineral/bone_resin, /area/lv522/oob) "qpE" = ( -/obj/structure/largecrate/random/barrel/green, -/turf/open/auto_turf/shale/layer0, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, /area/lv522/landing_zone_2/ceiling) +"qpJ" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "\improper A-Block Canteen Airlock"; + welded = 1 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "Sec-Kitchen-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/kitchen/glass) "qqc" = ( /obj/structure/filingcabinet, /turf/open/floor/prison{ @@ -36672,6 +41769,13 @@ icon_state = "white_cyan3" }, /area/lv522/indoors/a_block/medical) +"qqq" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" + }, +/area/lv522/atmos/filt) "qqx" = ( /obj/structure/barricade/wooden{ dir = 4 @@ -36686,9 +41790,17 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/bridges/op_centre) "qqD" = ( -/obj/item/ammo_box/magazine/shotgun/buckshot/empty, /obj/structure/surface/table/almayer, /obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/door_control/brbutton/alt{ + id = "Sec-Armoury-Lockdown"; + name = "remote door-control" + }, +/obj/item/limb/hand/l_hand{ + dir = 1; + pixel_x = 9; + pixel_y = 3 + }, /turf/open/floor/prison{ icon_state = "darkredfull2" }, @@ -36701,8 +41813,30 @@ /obj/structure/platform_decoration{ dir = 10 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) +"qqJ" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/asphalt/cement, +/area/lv522/outdoors/n_rockies) +"qqN" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 16 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 16 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/lv522/oob/w_y_vault) "qqR" = ( /obj/structure/platform, /obj/structure/stairs/perspective{ @@ -36717,9 +41851,7 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin7" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_right, /area/lv522/outdoors/w_rockies) "qqW" = ( /obj/structure/surface/rack, @@ -36753,6 +41885,17 @@ icon_state = "white_cyan2" }, /area/lv522/outdoors/w_rockies) +"qro" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/filt) +"qrG" = ( +/obj/structure/surface/table/almayer, +/obj/item/map/lv522_map, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "qsd" = ( /obj/structure/pipes/standard/simple/visible{ dir = 10 @@ -36816,10 +41959,20 @@ /obj/structure/platform{ dir = 8 }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/garden) +"qsW" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/gm/river, +/area/lv522/atmos/sewer) "qtc" = ( /turf/closed/shuttle/dropship2/tornado/typhoon{ icon_state = "74" @@ -36843,6 +41996,13 @@ /obj/structure/cargo_container/horizontal/blue/top, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_west_street) +"qts" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison, +/area/lv522/atmos/way_in_command_centre) "qtx" = ( /obj/structure/barricade/wooden{ dir = 4 @@ -36885,7 +42045,7 @@ icon_state = "E"; pixel_x = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "qup" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -36902,7 +42062,7 @@ /area/lv522/indoors/c_block/mining) "quw" = ( /obj/item/clothing/head/welding, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "quD" = ( /obj/effect/decal/cleanable/blood/oil, @@ -36915,6 +42075,16 @@ icon_state = "floor_marked" }, /area/lv522/landing_zone_1) +"qvb" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "qvA" = ( /turf/open/floor/prison{ dir = 10; @@ -36946,6 +42116,15 @@ }, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"qvQ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/north_command_centre) "qvY" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/prison, @@ -37028,7 +42207,7 @@ /obj/item/ammo_magazine/sniper{ current_rounds = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "qxD" = ( /obj/structure/machinery/microwave, @@ -37053,6 +42232,18 @@ icon_state = "cyan2" }, /area/lv522/indoors/a_block/medical) +"qxO" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_y = -6 + }, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) +"qxX" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/indoors/a_block/dorm_north) "qxZ" = ( /obj/structure/bed/chair{ can_buckle = 0; @@ -37075,9 +42266,20 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"qyp" = ( +/obj/structure/transmitter/colony_net{ + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Reactor Eastern Reactor Control"; + pixel_y = 26 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor) "qyG" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "qyI" = ( /obj/structure/closet/firecloset/full, @@ -37109,8 +42311,10 @@ /turf/open/floor/wood, /area/lv522/indoors/a_block/fitness/glass) "qzp" = ( -/obj/structure/machinery/door/airlock/dropship_hatch/two{ - dir = 8 +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{ + id = "sh_dropship2"; + dir = 2; + name = "\improper Typhoon crew hatch" }, /turf/open/shuttle/dropship{ icon_state = "rasputin3" @@ -37140,7 +42344,7 @@ pixel_x = -3; pixel_y = 6 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "qzA" = ( /obj/item/reagent_container/glass/bucket/janibucket{ @@ -37168,7 +42372,7 @@ /obj/structure/stairs/perspective{ icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "qzQ" = ( /turf/open/floor/prison, @@ -37202,6 +42406,12 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms/glass) +"qAS" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "browncorner" + }, +/area/lv522/atmos/reactor_garage) "qAX" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -37321,6 +42531,19 @@ icon_state = "floor_plate" }, /area/lv522/indoors/b_block/bar) +"qCE" = ( +/obj/item/clothing/mask/facehugger{ + desc = "It has some sort of a tube at the end of its tail. What the hell is this thing?"; + icon_state = "facehugger_impregnated"; + layer = 3; + name = "????"; + stat = 2 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor/south) "qCL" = ( /obj/structure/bed/chair{ dir = 8 @@ -37341,7 +42564,7 @@ dir = 6; pixel_y = 29 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "qDd" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm{ @@ -37353,6 +42576,14 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/hallway) +"qDl" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_west_street) "qDr" = ( /obj/item/ammo_magazine/rifle/heap{ current_rounds = 0 @@ -37368,7 +42599,7 @@ icon_state = "p_stair_full" }, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "qDw" = ( /obj/effect/decal/cleanable/generic, @@ -37380,7 +42611,7 @@ icon_state = "p_stair_full" }, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "qDL" = ( /turf/closed/wall/strata_outpost, @@ -37393,7 +42624,7 @@ /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "qEc" = ( /obj/effect/decal/cleanable/dirt, @@ -37415,6 +42646,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/b_block/bridge) +"qEr" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "\improper C-Block - Casino Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/casino) "qEu" = ( /obj/structure/stairs/perspective{ dir = 10; @@ -37424,21 +42665,19 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) -"qET" = ( -/obj/structure/platform{ +"qEQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 1; - name = "overhead pipe"; - pixel_x = -8; - pixel_y = -6 +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/sewer) +"qET" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" }, -/turf/open/gm/river, -/area/lv522/atmos/cargo_intake) +/area/lv522/atmos/east_reactor/south) "qEU" = ( /obj/structure/window/framed/strata/reinforced, /obj/structure/pipes/standard/simple/hidden/green{ @@ -37448,6 +42687,21 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/dorms) +"qFc" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/reagent_dispensers/fueltank{ + layer = 2.9 + }, +/obj/structure/barricade/metal{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "qFs" = ( /turf/closed/shuttle/dropship2/tornado/typhoon{ icon_state = "66" @@ -37458,20 +42712,28 @@ icon_state = "cement1" }, /area/lv522/outdoors/colony_streets/north_west_street) -"qFP" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -9; - pixel_y = 25 - }, -/obj/structure/prop/ice_colony/ground_wire{ - dir = 4 +"qFW" = ( +/obj/effect/spawner/gibspawner/xeno, +/turf/open/floor/corsat{ + icon_state = "squares" }, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/colony_streets/central_streets) +/area/lv522/atmos/east_reactor/south) "qGf" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/central_streets) +"qGh" = ( +/obj/structure/transmitter/colony_net{ + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Colony Fitness"; + pixel_y = 26 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/lv522/indoors/a_block/fitness) "qGq" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -37562,12 +42824,34 @@ icon_state = "white_cyan2" }, /area/lv522/landing_zone_forecon/UD6_Typhoon) +"qHD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light, +/turf/open/floor/wood/ship, +/area/lv522/atmos/way_in_command_centre) "qHI" = ( /obj/vehicle/powerloader/jd{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) +"qIt" = ( +/obj/structure/largecrate/random/barrel/blue, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/c_block/mining) +"qIu" = ( +/obj/structure/bed/bedroll{ + dir = 1; + layer = 6; + pixel_y = 16 + }, +/obj/item/bedsheet/ce{ + layer = 6.1; + pixel_y = 17 + }, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) "qIy" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -37624,9 +42908,7 @@ /obj/item/clothing/suit/storage/RO{ name = "\improper UA jacket" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/lv522/landing_zone_forecon/UD6_Typhoon) "qJy" = ( /obj/structure/largecrate/random, @@ -37693,6 +42975,12 @@ }, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/central_streets) +"qKO" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "qKV" = ( /obj/structure/platform_decoration{ dir = 8 @@ -37799,7 +43087,7 @@ dir = 8 }, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "qMX" = ( /obj/structure/cargo_container/horizontal/blue/middle{ @@ -37917,12 +43205,10 @@ }, /area/lv522/indoors/b_block/bar) "qOa" = ( -/obj/structure/machinery/cm_vending/sorted/tech/comp_storage{ - density = 0; - pixel_x = -4; - pixel_y = 12 +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" }, -/turf/open/floor/prison, /area/lv522/indoors/lone_buildings/engineering) "qOi" = ( /obj/structure/prop/invuln/fire{ @@ -37961,6 +43247,12 @@ icon_state = "white_cyan3" }, /area/lv522/indoors/a_block/medical) +"qPm" = ( +/obj/item/ammo_box/magazine/misc/mre/empty, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "qPq" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 @@ -38006,12 +43298,6 @@ }, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) -"qPS" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/security) "qPT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/space_heater/radiator/red{ @@ -38044,7 +43330,7 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "qQo" = ( /obj/structure/closet/bodybag, @@ -38085,7 +43371,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "qQM" = ( /obj/structure/stairs/perspective{ @@ -38128,6 +43414,14 @@ icon_state = "darkpurple2" }, /area/lv522/indoors/a_block/dorms) +"qRw" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/reactor_garage) "qRB" = ( /obj/structure/closet/crate, /obj/item/stack/sheet/plasteel/medium_stack, @@ -38196,7 +43490,7 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/dorms) "qSH" = ( -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "qSL" = ( /obj/structure/surface/table/almayer, @@ -38280,8 +43574,10 @@ }, /area/lv522/indoors/a_block/security) "qTE" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, -/turf/open/floor/corsat, +/obj/item/clothing/suit/storage/marine/medium, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, /area/lv522/atmos/east_reactor/south) "qTG" = ( /obj/structure/window/framed/strata/reinforced, @@ -38315,7 +43611,7 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "qTO" = ( /obj/structure/largecrate/supply/ammo/m41a/half{ @@ -38329,9 +43625,7 @@ layer = 3.1; pixel_y = -15 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) "qUf" = ( /obj/item/ammo_magazine/rifle/m4ra/ext{ @@ -38361,11 +43655,13 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "qUq" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/prison, +/turf/open/floor/strata{ + icon_state = "blue1" + }, /area/lv522/indoors/a_block/dorm_north) "qUs" = ( /obj/structure/window/framed/strata/reinforced, @@ -38374,6 +43670,14 @@ icon_state = "marked" }, /area/lv522/indoors/c_block/t_comm) +"qUz" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "qUD" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited{ pixel_x = 30 @@ -38384,9 +43688,7 @@ pixel_x = 1; pixel_y = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) "qUL" = ( /turf/open/floor/plating, @@ -38423,9 +43725,26 @@ icon_state = "64" }, /area/lv522/landing_zone_forecon/UD6_Typhoon) +"qVo" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Electronics Storage" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/lone_buildings/outdoor_bot) "qVN" = ( -/turf/open/floor/plating/plating_catwalk/prison, -/area/lv522/atmos/cargo_intake) +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Reactor_e_entry_4" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/filt) "qVQ" = ( /obj/structure/machinery/camera/autoname{ dir = 8 @@ -38437,13 +43756,11 @@ /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) "qWf" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, +/turf/open/floor/prison, /area/lv522/indoors/lone_buildings/engineering) "qWt" = ( /obj/structure/window/framed/strata/reinforced, @@ -38502,7 +43819,7 @@ /obj/structure/platform{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "qYc" = ( /obj/structure/surface/table/almayer, @@ -38511,6 +43828,14 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/fitness/glass) +"qYk" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/cargo_intake) "qYl" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -38524,6 +43849,13 @@ /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/fitness/glass) +"qYp" = ( +/obj/structure/surface/table/almayer, +/obj/item/trash/ceramic_plate, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "qYq" = ( /obj/structure/machinery/light{ dir = 4 @@ -38553,6 +43885,18 @@ icon_state = "greenfull" }, /area/lv522/indoors/a_block/fitness) +"qYy" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "qYG" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 @@ -38560,6 +43904,24 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/b_block/hydro) +"qYM" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/reactor_garage) +"qYP" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 5 + }, +/turf/open/asphalt/cement, +/area/lv522/outdoors/colony_streets/north_east_street) "qYX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/flour, @@ -38576,6 +43938,13 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/bridge) +"qZf" = ( +/obj/item/storage/belt/marine{ + pixel_x = 7; + pixel_y = 5 + }, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) "qZh" = ( /obj/structure/surface/table/almayer, /obj/item/storage/fancy/egg_box, @@ -38592,7 +43961,7 @@ }, /area/lv522/outdoors/colony_streets/north_east_street) "qZB" = ( -/obj/structure/barricade/handrail, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ icon_state = "brown" }, @@ -38603,12 +43972,17 @@ }, /area/lv522/indoors/a_block/hallway) "qZJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/camera/autoname{ - dir = 1 +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" }, -/obj/structure/machinery/light/small, -/turf/open/floor/plating, /area/lv522/indoors/lone_buildings/engineering) "qZT" = ( /obj/item/prop/colony/usedbandage{ @@ -38636,6 +44010,15 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_east_street) +"rah" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/item/trash/uscm_mre, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "raj" = ( /obj/structure/window/framed/strata/reinforced, /turf/open/floor/corsat{ @@ -38664,6 +44047,15 @@ icon_state = "radiator_tile2" }, /area/lv522/indoors/a_block/bridges/op_centre) +"raH" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ship, +/area/lv522/atmos/way_in_command_centre) +"raI" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/indoors/a_block/corpo/glass) "raQ" = ( /obj/structure/bed/chair{ dir = 4 @@ -38731,11 +44123,9 @@ /turf/open/floor/wood, /area/lv522/indoors/a_block/fitness/glass) "rbc" = ( -/obj/item/shard{ - icon_state = "medium" - }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/plating_catwalk/prison, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison, /area/lv522/indoors/lone_buildings/engineering) "rbj" = ( /obj/item/weapon/twohanded/folded_metal_chair, @@ -38763,12 +44153,28 @@ dir = 8; layer = 3.1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) +"rbW" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor) "rbX" = ( /obj/effect/landmark/yautja_teleport, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/east_central_street) +"rbZ" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) "rcd" = ( /obj/structure/surface/table/almayer, /obj/item/clothing/accessory/poncho, @@ -38776,14 +44182,14 @@ /area/lv522/indoors/a_block/admin) "rcr" = ( /obj/structure/barricade/deployable, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "rcO" = ( /obj/structure/prop/ice_colony/ground_wire{ dir = 1; layer = 2.9 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "rcP" = ( /obj/structure/desertdam/decals/road_edge{ @@ -38837,6 +44243,15 @@ icon_state = "floor_plate" }, /area/lv522/indoors/b_block/bar) +"rdf" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/reactor_garage) "rdq" = ( /obj/structure/prop/invuln/ice_prefab/roof_greeble{ icon_state = "vent2"; @@ -39010,16 +44425,6 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/carpet, /area/lv522/indoors/c_block/garage) -"rgd" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" - }, -/turf/open/asphalt/cement{ - icon_state = "cement4" - }, -/area/lv522/outdoors/n_rockies) "rge" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/light, @@ -39046,26 +44451,20 @@ /obj/structure/platform, /turf/open/floor/prison, /area/lv522/indoors/c_block/cargo) -"rgW" = ( -/obj/structure/surface/table/almayer, -/obj/item/ashtray/bronze{ - icon_state = "ashtray_full_bl"; - pixel_x = -8; - pixel_y = 7 - }, -/obj/item/toy/farwadoll, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"rgS" = ( +/obj/structure/platform_decoration{ + dir = 4 }, -/area/lv522/outdoors/colony_streets/windbreaker/observation) -"rhh" = ( -/obj/structure/machinery/power/apc/weak{ +/obj/structure/barricade/wooden{ dir = 1 }, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) +"rhh" = ( /obj/structure/bed/chair/wheelchair, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/strata{ + icon_state = "blue1" }, /area/lv522/outdoors/colony_streets/windbreaker/observation) "rhk" = ( @@ -39111,9 +44510,7 @@ /obj/item/ammo_magazine/rifle/heap{ current_rounds = 0 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/lv522/landing_zone_forecon/UD6_Typhoon) "rii" = ( /turf/closed/shuttle/dropship2/tornado{ @@ -39154,6 +44551,20 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/bridge) +"rjl" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/cleanable/blood, +/obj/structure/transmitter/colony_net{ + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Reactor Entrance Office"; + pixel_y = 26 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "rjn" = ( /obj/structure/prop/invuln/ice_prefab/trim{ dir = 6; @@ -39169,7 +44580,7 @@ layer = 4.2; pixel_y = 21 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "rjx" = ( /obj/structure/largecrate/random/barrel/green{ @@ -39204,9 +44615,7 @@ /obj/structure/barricade/deployable{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) "rkV" = ( /obj/effect/decal/cleanable/dirt, @@ -39215,6 +44624,13 @@ icon_state = "radiator_tile2" }, /area/lv522/indoors/a_block/bridges/op_centre) +"rla" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" + }, +/area/lv522/atmos/filt) "rls" = ( /obj/structure/bed/chair{ dir = 1 @@ -39223,14 +44639,9 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security) -"rlE" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - welded = 1 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/bridges/op_centre) +"rlB" = ( +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "rlI" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -39273,6 +44684,12 @@ "rmt" = ( /turf/closed/wall/strata_outpost, /area/lv522/indoors/a_block/fitness/glass) +"rmA" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 8 + }, +/turf/open/floor/prison, +/area/lv522/atmos/way_in_command_centre) "rmC" = ( /obj/structure/bed/chair{ dir = 1 @@ -39297,6 +44714,19 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/hallway) +"rmV" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) +"rmX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_west_street) "rng" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/camera/autoname{ @@ -39335,7 +44765,7 @@ }, /area/lv522/outdoors/colony_streets/north_street) "rnB" = ( -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/east_central_street) "rnG" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -39368,6 +44798,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) +"rov" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/cargo_intake) "rox" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -39462,6 +44901,14 @@ icon_state = "floor_plate" }, /area/lv522/indoors/c_block/cargo) +"rqE" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/prop/almayer/CICmap{ + pixel_x = 16; + pixel_y = 16 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/way_in_command_centre) "rqP" = ( /obj/structure/stairs/perspective{ dir = 4; @@ -39470,9 +44917,14 @@ /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) "rqT" = ( -/obj/structure/curtain/red, -/turf/open/floor/prison, -/area/lv522/indoors/a_block/dorm_north) +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/filt) "rrf" = ( /obj/structure/platform, /obj/structure/prop/invuln/lattice_prop{ @@ -39489,6 +44941,10 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms/glass) +"rrB" = ( +/obj/vehicle/powerloader, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/lv522/landing_zone_forecon/UD6_Tornado) "rrI" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -39537,11 +44993,19 @@ /obj/item/toy/beach_ball, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorm_north) +"rsD" = ( +/obj/structure/stairs/perspective{ + dir = 6; + icon_state = "p_stair_full" + }, +/obj/structure/largecrate/random/barrel, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "rsF" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "rsM" = ( /obj/structure/stairs/perspective{ @@ -39577,7 +45041,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "rtv" = ( /obj/structure/machinery/cm_vending/sorted/medical/no_access, @@ -39589,6 +45053,12 @@ icon_state = "white_cyan3" }, /area/lv522/indoors/a_block/medical/glass) +"rtw" = ( +/turf/open/floor/corsat{ + dir = 5; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "rtz" = ( /obj/item/stack/sheet/wood, /obj/item/ore/diamond, @@ -39598,23 +45068,20 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/c_block/cargo) "rtI" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, +/obj/structure/largecrate/random/barrel/white, /turf/open/floor/prison, -/area/lv522/outdoors/colony_streets/windbreaker/observation) +/area/lv522/outdoors/nw_rockies) "rtX" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/strata{ + icon_state = "blue1" }, /area/lv522/outdoors/colony_streets/windbreaker/observation) "ruc" = ( /obj/structure/cargo_container/kelland/left{ layer = 2.9 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/east_central_street) "ruf" = ( /obj/structure/bed/chair/comfy{ @@ -39624,12 +45091,8 @@ /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) "ruj" = ( -/obj/structure/machinery/door_control{ - id = "UD6"; - name = "Cargo Shutter Control" - }, /turf/closed/shuttle/dropship2/tornado/typhoon{ - icon_state = "53" + icon_state = "59" }, /area/lv522/landing_zone_forecon/UD6_Typhoon) "rus" = ( @@ -39645,17 +45108,14 @@ /area/lv522/outdoors/colony_streets/north_east_street) "ruH" = ( /obj/structure/pipes/standard/manifold/hidden/green{ - dir = 8 + dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "ruS" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms/glass) -"ruU" = ( -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/colony_streets/central_streets) "ruW" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/firstaid/adv/empty{ @@ -39683,13 +45143,20 @@ icon_state = "cyan2" }, /area/lv522/indoors/a_block/medical) +"rvg" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/reactor_garage) "rvh" = ( /obj/effect/decal/cleanable/blood/gibs/xeno/body, /obj/effect/spawner/gibspawner/xeno, /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "rvu" = ( /obj/structure/prop/ice_colony/dense/planter_box{ @@ -39725,7 +45192,7 @@ /obj/structure/prop/invuln/ice_prefab/trim{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_street) "rvI" = ( /turf/open/asphalt/cement{ @@ -39778,7 +45245,7 @@ /area/lv522/indoors/a_block/fitness/glass) "rwB" = ( /obj/structure/cargo_container/grant/left, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "rwC" = ( /obj/structure/cargo_container/kelland/left, @@ -39786,7 +45253,7 @@ /area/lv522/indoors/c_block/mining) "rwE" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "rwK" = ( /obj/structure/desertdam/decals/road_edge{ @@ -39799,6 +45266,11 @@ /obj/structure/machinery/light/double, /turf/open/floor/wood, /area/lv522/indoors/a_block/fitness/glass) +"rwM" = ( +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/lone_buildings/engineering) "rwR" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -39851,15 +45323,6 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/medical) -"rxN" = ( -/obj/structure/stairs/perspective{ - dir = 9; - icon_state = "p_stair_full" - }, -/turf/open/asphalt/cement{ - icon_state = "cement4" - }, -/area/lv522/outdoors/n_rockies) "rxT" = ( /obj/structure/machinery/door/poddoor/almayer/closed{ id = "East_Lock"; @@ -39869,31 +45332,19 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/hallway) -"ryb" = ( -/obj/structure/largecrate/random/barrel/red, +"ryj" = ( +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/lv522/outdoors/colony_streets/north_street) -"ryj" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 6 - }, -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" - }, -/turf/open/asphalt/cement{ - icon_state = "cement4" - }, -/area/lv522/outdoors/colony_streets/north_street) +/area/lv522/indoors/a_block/corpo/glass) "rys" = ( /obj/structure/stairs/perspective{ dir = 4; icon_state = "p_stair_full" }, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "ryu" = ( /obj/structure/surface/rack, @@ -39912,6 +45363,15 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/security) +"ryI" = ( +/obj/structure/largecrate/random, +/obj/item/explosive/plastic/breaching_charge{ + pixel_y = -2 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/colony_streets/north_street) "ryO" = ( /obj/structure/window/framed/strata/reinforced, /obj/structure/curtain/red, @@ -39920,35 +45380,28 @@ }, /area/lv522/indoors/a_block/executive) "ryT" = ( -/obj/structure/stairs/perspective{ - dir = 5; - icon_state = "p_stair_full" - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/asphalt/cement{ - icon_state = "cement4" +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light, +/turf/open/floor/shiva{ + icon_state = "radiator_tile2" }, -/area/lv522/outdoors/colony_streets/north_street) +/area/lv522/indoors/a_block/corpo/glass) "ryU" = ( /turf/open/floor/prison{ dir = 4; icon_state = "greenfull" }, /area/lv522/landing_zone_1) -"ryW" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/outdoors/colony_streets/north_street) "rza" = ( /turf/open/floor/corsat{ dir = 8; icon_state = "brown" }, /area/lv522/atmos/filt) +"rzq" = ( +/obj/structure/cargo_container/kelland/left, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_west_street) "rzz" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/lv624/fog_blocker/short, @@ -39988,19 +45441,6 @@ icon_state = "darkpurple2" }, /area/lv522/indoors/a_block/dorms) -"rAt" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" - }, -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "UD6 East"; - indestructible = 1 - }, -/turf/open/floor/plating, -/area/lv522/landing_zone_forecon/UD6_Tornado) "rAu" = ( /obj/structure/platform_decoration, /obj/effect/landmark/lv624/fog_blocker/short, @@ -40017,6 +45457,19 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/bridges) +"rAL" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/light, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/cargo_intake) +"rAM" = ( +/obj/structure/largecrate/random/case, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "rAX" = ( /turf/open/floor{ dir = 4; @@ -40027,7 +45480,7 @@ /obj/structure/platform{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "rBy" = ( /obj/effect/landmark/objective_landmark/medium, @@ -40045,6 +45498,11 @@ icon_state = "41" }, /area/lv522/landing_zone_forecon/UD6_Typhoon) +"rBV" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "rBZ" = ( /turf/closed/shuttle/dropship2/tornado{ icon_state = "97" @@ -40066,10 +45524,22 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) +"rCu" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/lv522/outdoors/n_rockies) +"rCz" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor/glass/colony{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/east_reactor/south) "rCE" = ( /obj/structure/machinery/light{ dir = 8 @@ -40097,34 +45567,28 @@ icon_state = "cement2" }, /area/lv522/outdoors/colony_streets/south_east_street) +"rCV" = ( +/obj/item/prop/colony/used_flare, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "rDb" = ( /obj/item/device/m56d_post, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/lv522/landing_zone_forecon/UD6_Typhoon) "rDu" = ( -/obj/structure/closet/crate/ammo, -/obj/item/ammo_magazine/m56d, -/obj/item/ammo_magazine/m56d, -/obj/item/device/m56d_gun, -/obj/structure/barricade/handrail{ - dir = 4 - }, -/obj/structure/barricade/handrail{ - dir = 8 +/obj/structure/machinery/door_control{ + id = "UD6"; + name = "Cargo Shutter Control" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" +/turf/closed/shuttle/dropship2/tornado/typhoon{ + icon_state = "53" }, /area/lv522/landing_zone_forecon/UD6_Typhoon) "rDz" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) "rDM" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -40147,6 +45611,15 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) +"rEj" = ( +/obj/structure/machinery/door/airlock/almayer/medical{ + dir = 2; + name = "\improper A-Block - Colony Medical Centre Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/medical) "rEm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bed/chair{ @@ -40156,15 +45629,10 @@ icon_state = "floor_plate" }, /area/lv522/indoors/c_block/t_comm) -"rEo" = ( -/obj/structure/machinery/colony_floodlight{ - layer = 4.3; - pixel_y = 9 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/outdoors/colony_streets/east_central_street) +"rEP" = ( +/obj/effect/spawner/gibspawner/human, +/turf/open/auto_turf/shale/layer2, +/area/lv522/outdoors/w_rockies) "rEV" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/corsat{ @@ -40209,7 +45677,7 @@ /area/lv522/landing_zone_forecon/UD6_Typhoon) "rGi" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "rGm" = ( /obj/item/tool/weldingtool, @@ -40259,18 +45727,6 @@ /obj/item/trash/chips, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/east_central_street) -"rIa" = ( -/obj/structure/surface/table/almayer, -/obj/item/toy/farwadoll{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/item/toy/farwadoll, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" - }, -/area/lv522/indoors/a_block/fitness/glass) "rIj" = ( /obj/structure/fence{ layer = 2.9 @@ -40281,14 +45737,10 @@ }, /area/lv522/outdoors/colony_streets/south_west_street) "rIn" = ( -/obj/item/ammo_magazine/smg/nailgun{ - current_rounds = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 }, +/turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/lone_buildings/engineering) "rIr" = ( /obj/structure/stairs/perspective{ @@ -40348,11 +45800,7 @@ }, /area/lv522/indoors/a_block/dorms) "rJf" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1; - name = "\improper Dormitories" - }, -/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/window/framed/strata/reinforced, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -40370,12 +45818,13 @@ icon_state = "cement15" }, /area/lv522/outdoors/colony_streets/south_west_street) -"rJz" = ( -/obj/structure/machinery/door/airlock/almayer/generic, -/turf/open/floor/corsat{ - icon_state = "marked" +"rJB" = ( +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" }, -/area/lv522/indoors/a_block/fitness/glass) +/obj/effect/spawner/gibspawner/xeno, +/turf/open/asphalt/cement, +/area/lv522/outdoors/colony_streets/north_street) "rJC" = ( /obj/structure/window_frame/strata, /obj/item/shard{ @@ -40391,14 +45840,19 @@ /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) "rJI" = ( -/obj/structure/barricade/handrail/wire{ - layer = 3.1 - }, +/obj/structure/largecrate/random, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" + dir = 10; + icon_state = "floor_marked" }, -/area/lv522/indoors/a_block/fitness) +/area/lv522/outdoors/nw_rockies) +"rKa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/alien/resin/sticky, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor/south) "rKe" = ( /obj/structure/platform{ dir = 8 @@ -40435,6 +45889,25 @@ icon_state = "whitegreenfull" }, /area/lv522/indoors/a_block/fitness) +"rKz" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/bed/chair, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) +"rKS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/reactor_garage) "rKW" = ( /obj/effect/decal/cleanable/blood, /obj/structure/pipes/standard/simple/hidden/green, @@ -40465,6 +45938,12 @@ icon_state = "marked" }, /area/lv522/indoors/b_block/hydro) +"rLk" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/lv522/outdoors/colony_streets/north_street) "rLq" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -40512,12 +45991,18 @@ }, /area/lv522/indoors/a_block/fitness) "rLB" = ( -/obj/structure/pipes/standard/manifold/hidden/green, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/fence, /turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" + icon_state = "floor_plate" }, -/area/lv522/indoors/a_block/fitness) +/area/lv522/outdoors/nw_rockies) "rMb" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -40542,9 +46027,7 @@ }, /area/lv522/indoors/a_block/admin) "rMi" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 9 - }, +/obj/structure/pipes/standard/manifold/hidden/green, /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ dir = 10; @@ -40572,6 +46055,12 @@ }, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/east_central_street) +"rMD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "rME" = ( /turf/closed/wall/solaris/reinforced/hull/lv522, /area/lv522/outdoors/colony_streets/north_east_street) @@ -40580,11 +46069,11 @@ /area/lv522/outdoors/colony_streets/central_streets) "rMR" = ( /obj/structure/largecrate/random/secure, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "rNm" = ( /obj/structure/largecrate/random/barrel/blue, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "rNs" = ( /obj/item/stack/sheet/wood, @@ -40612,12 +46101,6 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/lone_buildings/chunk) -"rNM" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/n_rockies) "rNO" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/objective_landmark/close, @@ -40632,7 +46115,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "rOg" = ( /turf/open/floor/prison, @@ -40706,7 +46189,7 @@ dir = 4 }, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "rQd" = ( /obj/structure/closet/secure_closet/quartermaster, @@ -40733,6 +46216,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) +"rQL" = ( +/obj/structure/platform_decoration/strata{ + dir = 4 + }, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) "rRa" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/toy/deck{ @@ -40744,17 +46233,6 @@ icon_state = "wood" }, /area/lv522/indoors/b_block/bar) -"rRc" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - welded = 1 - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/c_block/cargo) "rRm" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -40792,6 +46270,13 @@ icon_state = "darkbrownfull2" }, /area/lv522/landing_zone_2/ceiling) +"rRA" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/machinery/light, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "rRJ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ @@ -40869,6 +46354,15 @@ icon_state = "greenfull" }, /area/lv522/landing_zone_1/ceiling) +"rSs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "rSG" = ( /obj/item/clothing/shoes/jackboots{ pixel_x = 5; @@ -40900,7 +46394,9 @@ /obj/structure/platform_decoration{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/asphalt/cement{ + icon_state = "cement9" + }, /area/lv522/outdoors/colony_streets/south_east_street) "rTh" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -40933,6 +46429,15 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/east_central_street) +"rUl" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/cargo_intake) "rUr" = ( /obj/structure/machinery/prop/almayer/computer/PC{ pixel_y = 5 @@ -40940,6 +46445,18 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/a_block/admin) +"rUX" = ( +/obj/structure/shuttle/engine/heater{ + dir = 4; + pixel_x = 4 + }, +/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ + dir = 4; + icon_state = "flammable_pipe_3"; + pixel_x = 2 + }, +/turf/closed/wall/mineral/bone_resin, +/area/lv522/oob) "rVa" = ( /obj/structure/machinery/colony_floodlight{ density = 0; @@ -40958,6 +46475,16 @@ icon_state = "cement14" }, /area/lv522/outdoors/colony_streets/central_streets) +"rVB" = ( +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" + }, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "rVO" = ( /obj/structure/surface/table/almayer, /turf/open/floor/prison{ @@ -40965,6 +46492,12 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) +"rVR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/lv522/landing_zone_2) "rVW" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/light{ @@ -41003,10 +46536,43 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/mining) +"rXa" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/light, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "rXb" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) +"rXq" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/obj/structure/platform, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) +"rXr" = ( +/obj/structure/fence{ + layer = 2.9 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/lv522/outdoors/nw_rockies) "rXE" = ( /obj/item/stack/sheet/wood, /turf/open/floor/prison{ @@ -41033,15 +46599,6 @@ }, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/north_street) -"rYp" = ( -/obj/structure/largecrate/random/mini{ - pixel_x = 10; - pixel_y = 4 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/outdoors/colony_streets/north_street) "rYq" = ( /obj/structure/platform, /obj/structure/platform{ @@ -41053,6 +46610,14 @@ /obj/effect/landmark/lv624/fog_blocker/short, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/south_west_street) +"rYu" = ( +/obj/structure/barricade/deployable{ + dir = 8 + }, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "rYD" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -41088,15 +46653,14 @@ /obj/structure/prop/invuln/ice_prefab/trim{ dir = 6 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_street) "rZg" = ( -/obj/structure/machinery/cm_vending/sorted/tech/tool_storage{ - density = 0; - pixel_x = 5; - pixel_y = 11 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/turf/open/floor/prison, +/turf/open/floor/plating, /area/lv522/indoors/lone_buildings/engineering) "rZi" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -41136,7 +46700,7 @@ /obj/item/tool/weldpack{ pixel_y = 17 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "sam" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -41148,13 +46712,24 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/admin) -"sau" = ( -/obj/structure/closet/crate, -/obj/effect/decal/cleanable/dirt, +"say" = ( +/obj/structure/pipes/vents/pump, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 2 + }, +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/lv522/indoors/lone_buildings/storage_blocks) +/area/lv522/atmos/way_in_command_centre) "saz" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -41220,6 +46795,13 @@ icon_state = "marked" }, /area/lv522/indoors/c_block/mining) +"sbh" = ( +/obj/structure/platform_decoration, +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/turf/open/asphalt/cement, +/area/lv522/landing_zone_2/ceiling) "sbm" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -41290,9 +46872,7 @@ dir = 8; pixel_y = -5 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) "scw" = ( /obj/item/ammo_magazine/rifle/heap{ @@ -41310,9 +46890,7 @@ dir = 4; pixel_y = -5 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) "scM" = ( /obj/structure/surface/table/almayer, @@ -41346,6 +46924,14 @@ /obj/effect/landmark/lv624/fog_blocker/short, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) +"sdR" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "sec" = ( /obj/structure/prop/invuln/fire{ pixel_x = -7; @@ -41363,7 +46949,10 @@ /obj/structure/machinery/light{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "seA" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -41371,6 +46960,10 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/hallway) +"seF" = ( +/obj/structure/window/framed/corsat, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) "seG" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 @@ -41402,6 +46995,12 @@ icon_state = "cement9" }, /area/lv522/outdoors/colony_streets/south_west_street) +"sfc" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/way_in_command_centre) "sfm" = ( /obj/structure/surface/table/almayer, /obj/item/toy/bikehorn, @@ -41417,13 +47016,21 @@ /obj/structure/stairs/perspective{ icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) +"sfM" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "sfO" = ( /obj/structure/platform_decoration{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "sfZ" = ( /obj/structure/prop/invuln/fire{ @@ -41438,6 +47045,14 @@ /obj/item/stack/sheet/wood, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/c_block/cargo) +"sgq" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "sgG" = ( /obj/structure/surface/table/almayer, /obj/item/tool/kitchen/tray{ @@ -41478,6 +47093,21 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/casino) +"she" = ( +/obj/structure/machinery/floodlight, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/lone_buildings/storage_blocks) +"shh" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{ + dir = 1; + id = "sh_dropship2"; + name = "\improper Typhoon crew hatch" + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/lv522/landing_zone_forecon/UD6_Typhoon) "shm" = ( /obj/structure/machinery/vending/cola, /obj/effect/decal/cleanable/dirt, @@ -41491,6 +47121,10 @@ icon_state = "86" }, /area/lv522/landing_zone_forecon/UD6_Tornado) +"shD" = ( +/obj/item/stack/rods, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_east_street) "shK" = ( /obj/structure/surface/table/almayer, /obj/effect/spawner/random/toy, @@ -41528,6 +47162,14 @@ icon_state = "marked" }, /area/lv522/indoors/c_block/cargo) +"siB" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "siT" = ( /obj/structure/bed/chair{ dir = 1 @@ -41547,6 +47189,12 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/south_street) +"sjb" = ( +/obj/item/stack/sandbags/small_stack, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "sjd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/surface/rack, @@ -41581,6 +47229,16 @@ icon_state = "whitegreenfull" }, /area/lv522/indoors/a_block/fitness) +"sjx" = ( +/obj/item/prop/colony/canister{ + layer = 3.1; + pixel_y = 16 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "sjy" = ( /turf/closed/wall/strata_outpost, /area/lv522/indoors/a_block/security) @@ -41613,6 +47271,11 @@ icon_state = "floor_plate" }, /area/lv522/indoors/c_block/mining) +"sjQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/chair, +/turf/open/floor/prison, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "sjS" = ( /obj/structure/closet/crate/green, /obj/item/device/sentry_computer, @@ -41637,29 +47300,25 @@ icon_state = "white_cyan2" }, /area/lv522/indoors/a_block/dorms) -"skn" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2; - welded = 1 +"skk" = ( +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" }, -/obj/structure/pipes/standard/simple/hidden/green, +/area/lv522/atmos/east_reactor/south) +"skC" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/corsat{ - icon_state = "marked" + icon_state = "plate" }, -/area/lv522/indoors/a_block/dorms) +/area/lv522/atmos/reactor_garage) "skE" = ( /turf/closed/shuttle/dropship2/tornado{ icon_state = "63" }, /area/lv522/landing_zone_forecon/UD6_Tornado) -"skQ" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/fitness) "skS" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -41688,8 +47347,19 @@ dir = 6; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) +"slt" = ( +/obj/structure/surface/table/almayer, +/obj/structure/transmitter/colony_net/rotary{ + phone_category = "LV522 Chances Claim"; + phone_id = "Reactor Control"; + pixel_y = 6 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "slD" = ( /obj/structure/prop/invuln/ice_prefab/trim{ dir = 6 @@ -41725,7 +47395,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "smi" = ( /obj/item/prop/alien/hugger, @@ -41735,9 +47405,11 @@ /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) "smr" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/wood, -/area/lv522/indoors/a_block/fitness/glass) +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/reactor_garage) "sms" = ( /obj/effect/decal/cleanable/blood/drip, /obj/structure/pipes/standard/simple/hidden/green{ @@ -41758,6 +47430,12 @@ icon_state = "cyan2" }, /area/lv522/indoors/a_block/medical/glass) +"smK" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/oob) "smR" = ( /turf/open/floor/corsat{ icon_state = "marked" @@ -41789,7 +47467,7 @@ /area/lv522/indoors/a_block/security) "sno" = ( /obj/structure/prop/invuln/ice_prefab, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "snu" = ( /obj/structure/window/reinforced{ @@ -41801,14 +47479,13 @@ icon_state = "blue_plate" }, /area/lv522/indoors/c_block/mining) -"snI" = ( -/obj/structure/machinery/floodlight, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" +"snP" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/surface/table/almayer, +/turf/open/floor/corsat{ + icon_state = "plate" }, -/area/lv522/indoors/lone_buildings/storage_blocks) +/area/lv522/atmos/east_reactor/south) "snR" = ( /obj/structure/surface/rack, /obj/item/tank/oxygen, @@ -41830,11 +47507,24 @@ /obj/effect/decal/cleanable/generic, /turf/open/floor/prison, /area/lv522/indoors/c_block/t_comm) +"soS" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/structure/machinery/space_heater/radiator/red{ + dir = 1; + pixel_y = 26 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/lv522/indoors/a_block/fitness) "spe" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_street) "spj" = ( /obj/effect/landmark/lv624/fog_blocker/short, @@ -41846,6 +47536,17 @@ /obj/effect/decal/cleanable/cobweb2, /turf/open/floor/carpet, /area/lv522/indoors/b_block/bar) +"spn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "whiteyellowfull" + }, +/area/lv522/oob/w_y_vault) "spo" = ( /turf/open/asphalt/cement{ icon_state = "cement12" @@ -41856,7 +47557,7 @@ icon_state = "E"; pixel_x = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "spy" = ( /obj/structure/fence, @@ -41881,6 +47582,15 @@ icon_state = "marked" }, /area/lv522/indoors/c_block/mining) +"spB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "spI" = ( /turf/open/floor/corsat{ dir = 4; @@ -41921,10 +47631,36 @@ icon_state = "cement15" }, /area/lv522/outdoors/colony_streets/central_streets) +"sqH" = ( +/obj/structure/machinery/door_display/research_cell{ + dir = 8; + id = "Reactor_entry_2"; + pixel_x = 16; + req_access = null + }, +/obj/item/prop/alien/hugger, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "sqQ" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/a_block/kitchen/damage) +"srf" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "srk" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -41947,6 +47683,12 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/cargo) +"srE" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/turf/open/floor/plating, +/area/lv522/landing_zone_forecon/UD6_Tornado) "srJ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/liquid_fuel, @@ -41965,9 +47707,26 @@ icon_state = "cement4" }, /area/lv522/outdoors/colony_streets/north_west_street) +"srS" = ( +/obj/structure/machinery/landinglight/ds2/delaythree{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/landing_zone_2) +"sse" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "ssh" = ( /obj/structure/closet/crate/trashcart, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "ssj" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -42047,6 +47806,28 @@ }, /turf/open/floor/prison, /area/lv522/indoors/b_block/hydro) +"suG" = ( +/obj/item/prop/colony/used_flare, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) +"suS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "suV" = ( /obj/structure/machinery/computer/cameras/wooden_tv{ desc = "An old TV hooked up to a video cassette recorder, you can even use it to time shift WOW."; @@ -42093,23 +47874,15 @@ /obj/structure/platform_decoration{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "svK" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_east_street) "svW" = ( -/turf/closed/wall, +/turf/closed/wall/strata_outpost, /area/lv522/atmos/east_reactor) -"swf" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/c_block/cargo) "swr" = ( /turf/closed/shuttle/dropship2/tornado{ icon_state = "45" @@ -42127,12 +47900,9 @@ }, /area/lv522/atmos/east_reactor) "swD" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, +/obj/structure/largecrate/supply/supplies/metal, /turf/open/floor/prison{ - icon_state = "floor_plate" + icon_state = "darkbrownfull2" }, /area/lv522/landing_zone_2/ceiling) "swF" = ( @@ -42165,7 +47935,7 @@ /area/lv522/indoors/a_block/hallway) "sxg" = ( /obj/item/stack/rods, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/south_street) "sxp" = ( /obj/structure/surface/table/almayer, @@ -42175,10 +47945,18 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/security/glass) -"sxV" = ( -/obj/structure/largecrate/random, -/turf/open/floor/plating/plating_catwalk/prison, -/area/lv522/outdoors/nw_rockies) +"sxU" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/west) +"syg" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "syl" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -42211,14 +47989,14 @@ icon_state = "N"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "syH" = ( /obj/structure/stairs/perspective{ dir = 9; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "syM" = ( /obj/structure/machinery/door/airlock/almayer/generic{ @@ -42229,12 +48007,30 @@ icon_state = "marked" }, /area/lv522/landing_zone_1/ceiling) +"syV" = ( +/obj/structure/bed/chair/comfy, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "syW" = ( /obj/item/explosive/mine/active{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_east_street) +"szh" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/barricade/deployable, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "szo" = ( /obj/structure/platform{ dir = 8 @@ -42294,7 +48090,7 @@ /obj/structure/platform_decoration{ dir = 5 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "sAx" = ( /obj/structure/surface/table/almayer, @@ -42351,6 +48147,19 @@ /obj/structure/machinery/squeezer, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"sBH" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) +"sBX" = ( +/obj/structure/girder, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_east_street) "sCb" = ( /obj/structure/platform_decoration{ dir = 8 @@ -42407,6 +48216,18 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor/north) +"sCP" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/closet/crate, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/pouch/medkit/full_advanced, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "sDa" = ( /obj/structure/machinery/light/small{ dir = 8; @@ -42421,13 +48242,23 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/lone_buildings/chunk) +"sDf" = ( +/turf/open/floor/corsat{ + dir = 5; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "sDq" = ( /obj/structure/barricade/wooden{ dir = 4 }, /obj/item/weapon/twohanded/folded_metal_chair, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) +"sDv" = ( +/obj/structure/girder/displaced, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_east_street) "sDz" = ( /obj/structure/largecrate/random{ layer = 2.9 @@ -42440,31 +48271,11 @@ "sDS" = ( /turf/open/floor/prison, /area/lv522/outdoors/nw_rockies) -"sDY" = ( -/obj/structure/surface/table/almayer, -/obj/item/handcuffs{ - pixel_y = 12 - }, -/obj/item/handcuffs{ - pixel_y = 6 - }, -/obj/item/handcuffs, -/obj/item/weapon/baton{ - pixel_x = -2; - pixel_y = 10 - }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/lv522/indoors/a_block/security/glass) "sEa" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, +/turf/open/floor/prison, /area/lv522/indoors/lone_buildings/engineering) "sEc" = ( /obj/structure/bed/bedroll{ @@ -42494,6 +48305,15 @@ icon_state = "floor_plate" }, /area/lv522/indoors/lone_buildings/storage_blocks) +"sFb" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "sFf" = ( /obj/item/trash/burger, /obj/effect/decal/cleanable/dirt, @@ -42529,7 +48349,7 @@ /obj/structure/prop/invuln/ice_prefab{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "sFS" = ( /turf/closed/shuttle/dropship2/tornado/typhoon{ @@ -42555,6 +48375,18 @@ icon_state = "cement12" }, /area/lv522/outdoors/nw_rockies) +"sGv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "sGD" = ( /obj/item/shard{ icon_state = "medium" @@ -42565,6 +48397,10 @@ icon_state = "darkyellowfull2" }, /area/lv522/indoors/c_block/t_comm) +"sGF" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/closed/wall/mineral/bone_resin, +/area/lv522/oob) "sGQ" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/computer/PC{ @@ -42575,15 +48411,11 @@ "sGT" = ( /obj/structure/barricade/deployable, /obj/effect/decal/cleanable/blood/splatter, -/turf/open/shuttle/dropship{ - icon_state = "rasputin4" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_left, /area/lv522/landing_zone_forecon/UD6_Typhoon) "sGY" = ( /obj/structure/barricade/deployable, -/turf/open/shuttle/dropship{ - icon_state = "floor8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/lv522/landing_zone_forecon/UD6_Typhoon) "sHb" = ( /obj/structure/platform_decoration{ @@ -42606,9 +48438,7 @@ /area/lv522/landing_zone_1/tunnel) "sHg" = ( /obj/structure/barricade/deployable, -/turf/open/shuttle/dropship{ - icon_state = "rasputin8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_right, /area/lv522/landing_zone_forecon/UD6_Typhoon) "sHk" = ( /obj/structure/curtain/red, @@ -42616,6 +48446,13 @@ icon_state = "marked" }, /area/lv522/indoors/c_block/casino) +"sHy" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/west_reactor) "sHS" = ( /obj/structure/stairs/perspective{ dir = 5; @@ -42694,16 +48531,6 @@ }, /turf/open/floor/prison, /area/lv522/indoors/lone_buildings/storage_blocks) -"sJl" = ( -/obj/structure/machinery/power/apc/weak{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/lv522/indoors/lone_buildings/engineering) "sJI" = ( /obj/structure/surface/table/almayer, /obj/item/key/cargo_train, @@ -42835,10 +48662,49 @@ /obj/structure/window/reinforced, /turf/open/floor/bluegrid, /area/lv522/indoors/a_block/corpo/glass) +"sLc" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/faxmachine{ + pixel_y = 2 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "sLk" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/security) +"sLl" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/bedsheet/brown{ + pixel_y = 13 + }, +/obj/item/bedsheet/brown{ + layer = 3.1 + }, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/indoors/a_block/dorm_north) "sLn" = ( /obj/effect/decal/cleanable/greenglow, /obj/item/reagent_container/glass/beaker, @@ -42870,11 +48736,6 @@ }, /turf/open/floor/plating, /area/lv522/indoors/c_block/garage) -"sLT" = ( -/obj/structure/largecrate/random/case, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/lv522/landing_zone_1/tunnel) "sLU" = ( /obj/structure/sign/safety/synth_storage{ pixel_x = 23; @@ -42899,8 +48760,19 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) +"sMA" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 4; + pixel_x = 2 + }, +/turf/open/floor/wood/ship, +/area/lv522/atmos/way_in_command_centre) "sMI" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/camera/autoname{ @@ -42921,7 +48793,7 @@ /area/lv522/outdoors/colony_streets/east_central_street) "sMN" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "sMV" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -42943,6 +48815,10 @@ /obj/structure/window/reinforced, /turf/open/floor/bluegrid, /area/lv522/indoors/a_block/corpo/glass) +"sNk" = ( +/obj/effect/landmark/survivor_spawner/lv522_forecon_sniper, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/nw_rockies) "sNm" = ( /obj/structure/platform{ dir = 8 @@ -43027,6 +48903,11 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/south_west_street) +"sOL" = ( +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "sOM" = ( /obj/structure/platform{ dir = 1 @@ -43037,7 +48918,7 @@ /obj/structure/platform_decoration{ dir = 9 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "sON" = ( /turf/open/floor/prison{ @@ -43112,12 +48993,23 @@ /area/lv522/indoors/a_block/security) "sPs" = ( /obj/item/stack/rods, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "sPw" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) +"sPH" = ( +/obj/structure/machinery/door/poddoor/almayer/closed{ + dir = 4; + id = "Corpo Vault"; + name = "Vault Lockdown" + }, +/obj/effect/landmark/lv624/fog_blocker/short, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/oob/w_y_vault) "sPS" = ( /obj/structure/surface/table/almayer, /obj/effect/spawner/random/toolbox, @@ -43125,6 +49017,12 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security) +"sPU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement{ + icon_state = "cement1" + }, +/area/lv522/outdoors/colony_streets/north_street) "sQb" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison{ @@ -43148,16 +49046,15 @@ icon_state = "cement3" }, /area/lv522/outdoors/n_rockies) +"sQA" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "sQD" = ( -/obj/structure/machinery/colony_floodlight_switch{ - pixel_y = 30 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/generic, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 }, +/turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/lone_buildings/engineering) "sQI" = ( /obj/effect/decal/cleanable/generic, @@ -43188,6 +49085,24 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"sQR" = ( +/obj/item/stack/sheet/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, +/area/lv522/landing_zone_2) +"sQS" = ( +/obj/item/prop/alien/hugger, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "sQT" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -43197,6 +49112,16 @@ icon_state = "platingdmg1" }, /area/lv522/indoors/a_block/bridges/op_centre) +"sQY" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + req_one_access_txt = "100"; + welded = 1 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/mining) "sQZ" = ( /obj/item/weapon/twohanded/folded_metal_chair, /turf/open/floor/prison{ @@ -43217,6 +49142,15 @@ }, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/north_east_street) +"sRx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "sRA" = ( /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/w_rockies) @@ -43270,6 +49204,15 @@ icon_state = "cement9" }, /area/lv522/outdoors/colony_streets/north_street) +"sSv" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) "sSG" = ( /obj/structure/stairs/perspective{ dir = 1; @@ -43311,14 +49254,14 @@ }, /area/lv522/indoors/c_block/mining) "sTr" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Reactor_garage_3" }, -/turf/open/asphalt/cement{ - icon_state = "cement4" +/turf/open/floor/corsat{ + icon_state = "marked" }, -/area/lv522/outdoors/n_rockies) +/area/lv522/atmos/reactor_garage) "sTy" = ( /obj/structure/window_frame/strata, /obj/item/stack/rods, @@ -43355,7 +49298,7 @@ pixel_x = 11; pixel_y = 25 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/east_central_street) "sUj" = ( /obj/structure/stairs/perspective{ @@ -43379,15 +49322,6 @@ icon_state = "cell_stripe" }, /area/lv522/indoors/c_block/cargo) -"sUN" = ( -/obj/structure/largecrate/random/barrel/yellow, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/lv522/outdoors/colony_streets/north_street) "sVJ" = ( /obj/structure/barricade/handrail{ layer = 3.7 @@ -43402,6 +49336,14 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/hallway) +"sVX" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/lv522/landing_zone_forecon/UD6_Typhoon) +"sWn" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall/strata_outpost/reinforced, +/area/lv522/atmos/cargo_intake) "sWr" = ( /turf/open/floor/prison, /area/lv522/indoors/a_block/admin) @@ -43455,9 +49397,10 @@ }, /area/lv522/outdoors/colony_streets/north_west_street) "sXM" = ( -/obj/structure/machinery/power/monitor{ - name = "Main Power Grid Monitoring" - }, +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/powercell, +/obj/structure/machinery/cell_charger, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" @@ -43493,6 +49436,10 @@ /obj/structure/platform, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/north_east_street) +"sYl" = ( +/obj/item/stack/sheet/metal, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_east_street) "sYv" = ( /obj/structure/platform{ dir = 8 @@ -43521,6 +49468,11 @@ icon_state = "blue1" }, /area/lv522/indoors/a_block/dorm_north) +"sZz" = ( +/obj/structure/largecrate/random/case/small, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/c_block/mining) "taj" = ( /obj/structure/closet/crate, /turf/open/asphalt/cement{ @@ -43571,6 +49523,14 @@ icon_state = "cement4" }, /area/lv522/outdoors/colony_streets/south_east_street) +"taS" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/asphalt/cement{ + icon_state = "cement14" + }, +/area/lv522/outdoors/n_rockies) "taW" = ( /obj/structure/platform{ dir = 8 @@ -43579,7 +49539,7 @@ icon_state = "p_stair_full" }, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "tbl" = ( /turf/closed/shuttle/dropship2/tornado/typhoon{ @@ -43608,6 +49568,17 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/north_west_street) +"tbK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "whiteyellowfull" + }, +/area/lv522/oob/w_y_vault) "tcj" = ( /obj/structure/machinery/light, /turf/open/floor/shiva{ @@ -43710,6 +49681,19 @@ icon_state = "47" }, /area/lv522/landing_zone_forecon/UD6_Typhoon) +"tdM" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 5; + layer = 3.51 + }, +/turf/open/gm/river, +/area/lv522/atmos/sewer) "tdS" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -43778,6 +49762,12 @@ }, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/south_east_street) +"teE" = ( +/obj/structure/bed/chair/comfy, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "teL" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -43789,6 +49779,15 @@ icon_state = "rasputin15" }, /area/lv522/landing_zone_forecon/UD6_Typhoon) +"teO" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper C-Block - Cargo Airlock"; + welded = 1 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/cargo) "tfb" = ( /obj/structure/stairs/perspective{ dir = 8; @@ -43814,14 +49813,23 @@ icon_state = "floor_plate" }, /area/lv522/landing_zone_1/ceiling) -"tfP" = ( -/obj/structure/stairs/perspective{ - dir = 5; - icon_state = "p_stair_full" +"tfK" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" }, -/turf/open/asphalt/cement{ - icon_state = "cement4" +/area/lv522/atmos/east_reactor/south) +"tfO" = ( +/obj/item/prop/colony/usedbandage{ + dir = 9; + pixel_x = 5; + pixel_y = 15 }, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) +"tfP" = ( +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "tfV" = ( /turf/closed/shuttle/dropship2/tornado/typhoon{ @@ -43829,11 +49837,11 @@ }, /area/lv522/landing_zone_forecon/UD6_Typhoon) "tfW" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, -/turf/open/floor/corsat{ - icon_state = "plate" +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" }, -/area/lv522/atmos/cargo_intake) +/area/lv522/atmos/reactor_garage) "tfZ" = ( /obj/effect/spider/spiderling/nogrow, /turf/open/floor/prison{ @@ -43845,6 +49853,14 @@ /obj/structure/machinery/prop/almayer/CICmap, /turf/open/floor/prison, /area/lv522/indoors/a_block/admin) +"tgn" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Dorms And Office Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/dorms) "tgq" = ( /obj/structure/surface/rack, /turf/open/floor/prison{ @@ -43883,6 +49899,9 @@ /area/lv522/landing_zone_forecon/UD6_Tornado) "thi" = ( /obj/effect/decal/cleanable/blood/xeno, +/obj/structure/platform{ + dir = 8 + }, /turf/open/asphalt/cement{ icon_state = "cement1" }, @@ -43920,7 +49939,7 @@ /area/lv522/outdoors/colony_streets/central_streets) "tiJ" = ( /obj/item/explosive/grenade/incendiary/molotov, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "tiM" = ( /obj/structure/bed/chair{ @@ -43964,8 +49983,11 @@ }, /area/lv522/indoors/c_block/garage) "tjx" = ( -/obj/structure/largecrate/random/mini, -/turf/open/auto_turf/shale/layer0, +/obj/structure/largecrate/random/barrel, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, /area/lv522/landing_zone_2/ceiling) "tjM" = ( /obj/structure/pipes/standard/manifold/fourway/hidden/green, @@ -43996,6 +50018,20 @@ /mob/living/simple_animal/mouse, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"tku" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper B-Block - Hydroponics Airlock" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "LV_522_Hydro-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/b_block/hydro) "tkx" = ( /obj/structure/machinery/light{ dir = 1 @@ -44049,8 +50085,14 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) +"tlv" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "tlz" = ( /obj/structure/bed/chair{ dir = 1 @@ -44071,12 +50113,6 @@ /obj/structure/platform, /turf/open/gm/river, /area/lv522/landing_zone_1/tunnel) -"tlM" = ( -/obj/structure/machinery/door/airlock/almayer/generic, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/c_block/garage) "tlR" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/faxmachine{ @@ -44103,10 +50139,6 @@ icon_state = "greenfull" }, /area/lv522/indoors/a_block/fitness) -"tms" = ( -/obj/structure/largecrate/random, -/turf/open/floor/plating, -/area/lv522/indoors/c_block/mining) "tmy" = ( /obj/structure/machinery/light{ dir = 1 @@ -44116,18 +50148,6 @@ icon_state = "radiator_tile2" }, /area/lv522/indoors/b_block/bridge) -"tmA" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - welded = 1 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "LV_522_Hydro-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/b_block/hydro) "tmC" = ( /obj/structure/platform{ dir = 1 @@ -44184,7 +50204,9 @@ /obj/structure/platform{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/asphalt/cement{ + icon_state = "cement1" + }, /area/lv522/outdoors/colony_streets/south_east_street) "tns" = ( /obj/structure/machinery/landinglight/ds1{ @@ -44221,6 +50243,16 @@ icon_state = "whiteyellowfull" }, /area/lv522/indoors/a_block/corpo/glass) +"tnU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "tog" = ( /obj/structure/pipes/vents/pump, /obj/effect/decal/cleanable/dirt, @@ -44229,6 +50261,12 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/bridge) +"tos" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/turf/open/asphalt/cement, +/area/lv522/landing_zone_2/ceiling) "tov" = ( /obj/item/stack/tile/plasteel{ name = "ceiling tile"; @@ -44309,6 +50347,11 @@ icon_state = "white_cyan3" }, /area/lv522/indoors/a_block/medical/glass) +"tpV" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/toolbox/mechanical/green, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/way_in_command_centre) "tpZ" = ( /obj/structure/curtain/red, /turf/open/floor/prison, @@ -44320,19 +50363,23 @@ icon_state = "floor_marked" }, /area/lv522/outdoors/colony_streets/north_east_street) -"tqG" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/obj/structure/pipes/standard/simple/hidden/green{ +"tqh" = ( +/obj/structure/bed/chair/comfy{ dir = 1 }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "LV522CIC_1"; - name = "\improper Storm Shutters" - }, /turf/open/floor/corsat{ - icon_state = "marked" + dir = 1; + icon_state = "brown" }, -/area/lv522/indoors/a_block/admin) +/area/lv522/atmos/east_reactor/south) +"tqT" = ( +/obj/item/clothing/accessory/red, +/obj/item/clothing/under/liaison_suit/field{ + pixel_y = 9; + pixel_x = -4 + }, +/turf/open/floor/carpet, +/area/lv522/indoors/a_block/executive) "tqU" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -44463,13 +50510,20 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/bridge) +"ttf" = ( +/obj/effect/landmark/corpsespawner/forecon_spotter, +/obj/item/weapon/gun/rifle/m41a{ + current_mag = null + }, +/obj/effect/spawner/gibspawner/human, +/obj/effect/decal/cleanable/blood, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/nw_rockies) "tth" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "tti" = ( /obj/structure/platform_decoration{ @@ -44490,13 +50544,22 @@ /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/lone_buildings/storage_blocks) +"ttE" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Electronics Storage" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/lone_buildings/outdoor_bot) "ttT" = ( /obj/structure/stairs/perspective{ dir = 1; icon_state = "p_stair_full" }, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "tue" = ( /obj/structure/machinery/cryo_cell, @@ -44568,7 +50631,7 @@ /obj/structure/barricade/wooden{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "tvx" = ( /obj/effect/decal/cleanable/dirt, @@ -44646,12 +50709,22 @@ /area/lv522/indoors/a_block/medical) "twT" = ( /obj/structure/cargo_container/grant/right, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "twY" = ( /mob/living/simple_animal/mouse, /turf/open/organic/grass, /area/lv522/indoors/a_block/garden) +"txo" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "txs" = ( /turf/open/floor/corsat{ dir = 1; @@ -44667,6 +50740,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/dorms/glass) +"tyb" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "tyc" = ( /obj/structure/surface/rack, /obj/item/storage/bag/ore, @@ -44714,6 +50796,15 @@ }, /turf/open/floor/wood, /area/lv522/indoors/a_block/fitness/glass) +"tyU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "tzd" = ( /turf/closed/shuttle/elevator{ dir = 4 @@ -44727,9 +50818,7 @@ dir = 4; pixel_y = -5 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "tzz" = ( /obj/structure/largecrate/random/secure, @@ -44759,6 +50848,13 @@ icon_state = "rasputin15" }, /area/lv522/landing_zone_forecon/UD6_Typhoon) +"tzM" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "tzY" = ( /obj/structure/bed{ layer = 2.7; @@ -44799,13 +50895,16 @@ /obj/structure/platform{ dir = 1 }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/garden) "tBb" = ( /obj/structure/prop/dam/drill, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "tBw" = ( /obj/structure/prop/invuln/lifeboat_hatch_placeholder{ @@ -44824,12 +50923,10 @@ /obj/structure/barricade/wooden{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "tBM" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin6" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_left, /area/lv522/landing_zone_forecon/UD6_Tornado) "tBQ" = ( /obj/structure/prop/ice_colony/ground_wire{ @@ -44850,15 +50947,25 @@ icon_state = "whitegreenfull" }, /area/lv522/indoors/a_block/fitness) -"tBT" = ( +"tCa" = ( +/obj/item/trash/uscm_mre{ + pixel_x = 10; + pixel_y = -2 + }, +/obj/item/trash/uscm_mre{ + pixel_y = 10 + }, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) +"tCg" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; - name = "\improper Eastlock" + name = "\improper Emergency Engineering" }, /turf/open/floor/corsat{ icon_state = "marked" }, -/area/lv522/indoors/a_block/hallway) +/area/lv522/indoors/lone_buildings/engineering) "tCh" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -44874,7 +50981,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "tCs" = ( /obj/structure/machinery/prop/almayer/computer/PC{ @@ -44887,9 +50994,7 @@ /turf/closed/wall/strata_ice/dirty, /area/lv522/outdoors/colony_streets/south_east_street) "tCR" = ( -/turf/open/shuttle/dropship{ - icon_state = "floor8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/lv522/landing_zone_forecon/UD6_Tornado) "tCX" = ( /turf/open/floor/corsat{ @@ -44904,19 +51009,8 @@ /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "tDm" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin7" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_right, /area/lv522/landing_zone_forecon/UD6_Tornado) -"tDq" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1 - }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/fitness) "tDu" = ( /obj/structure/machinery/computer/operating, /obj/structure/surface/table/reinforced/prison, @@ -45098,7 +51192,7 @@ pixel_x = -8; pixel_y = 7 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "tGh" = ( /obj/effect/decal/cleanable/dirt, @@ -45109,19 +51203,16 @@ dir = 1; icon_state = "fab_2" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_street) -"tGm" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Corporate Liason" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/corpo) "tGo" = ( /turf/open/floor/wood, /area/lv522/indoors/c_block/casino) +"tGw" = ( +/turf/open/asphalt/cement{ + icon_state = "cement9" + }, +/area/lv522/landing_zone_2) "tGy" = ( /obj/structure/bed/chair/comfy, /obj/item/stack/sheet/wood, @@ -45181,6 +51272,13 @@ icon_state = "squares" }, /area/lv522/indoors/c_block/mining) +"tHC" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/filt) "tHJ" = ( /obj/structure/platform{ dir = 8 @@ -45204,9 +51302,7 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "tIM" = ( /obj/structure/prop/vehicles/crawler{ @@ -45218,6 +51314,16 @@ icon_state = "cement4" }, /area/lv522/outdoors/colony_streets/east_central_street) +"tIS" = ( +/obj/structure/barricade/handrail{ + dir = 8 + }, +/obj/item/stack/sheet/metal, +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "tIT" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -45254,8 +51360,23 @@ icon_state = "p_stair_full" }, /obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) +"tJM" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/structure/machinery/camera/autoname{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/lv522/indoors/a_block/fitness) "tJN" = ( /obj/structure/bed/chair, /turf/open/floor/prison, @@ -45270,7 +51391,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "tKf" = ( /obj/structure/machinery/washing_machine{ @@ -45314,6 +51435,16 @@ /obj/effect/spawner/random/toolbox, /turf/open/floor/plating, /area/lv522/indoors/c_block/garage) +"tKR" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 8; + pixel_y = 3 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/reactor_garage) "tKS" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/lv624/fog_blocker/short, @@ -45384,6 +51515,16 @@ icon_state = "plate" }, /area/lv522/atmos/cargo_intake) +"tLX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "whiteyellowfull" + }, +/area/lv522/oob/w_y_vault) "tMk" = ( /turf/open/floor/prison, /area/lv522/indoors/a_block/bridges/dorms_fitness) @@ -45448,9 +51589,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/lv522/indoors/c_block/casino) +"tMV" = ( +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/east_reactor/south) "tNc" = ( /obj/structure/prop/ice_colony/ground_wire, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/south_street) "tNl" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -45467,17 +51613,20 @@ /area/lv522/indoors/a_block/hallway) "tNQ" = ( /obj/structure/largecrate, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) +"tNS" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating, +/area/lv522/indoors/lone_buildings/storage_blocks) "tNT" = ( -/obj/structure/desertdam/decals/road_edge{ - icon_state = "road_edge_decal3"; - pixel_y = -12 +/obj/structure/prop/vehicles/crawler{ + icon_state = "crawler_covered_bed" }, -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/barricade/handrail/wire, -/turf/open/floor/wood, -/area/lv522/indoors/a_block/fitness/glass) +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "tOe" = ( /obj/structure/platform{ dir = 8 @@ -45498,7 +51647,10 @@ dir = 8; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_east_street) +"tOt" = ( +/turf/closed/wall/strata_outpost, /area/lv522/outdoors/colony_streets/north_east_street) "tOv" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -45515,6 +51667,15 @@ }, /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) +"tOM" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor/south) "tOV" = ( /obj/structure/cargo_container/watatsumi/leftmid, /turf/open/asphalt/cement{ @@ -45543,7 +51704,7 @@ /obj/structure/platform{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "tPr" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -45559,7 +51720,7 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "tPx" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -45590,6 +51751,16 @@ }, /turf/open/floor/prison, /area/lv522/indoors/c_block/casino) +"tQe" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "\improper A-Block Corporate Office Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/corpo) "tQi" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/bridges/corpo) @@ -45599,20 +51770,12 @@ icon_state = "floor_plate" }, /area/lv522/indoors/lone_buildings/outdoor_bot) -"tQE" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Canteen" - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "Sec-Kitchen-Lockdown"; - name = "\improper Storm Shutters" - }, +"tQw" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ icon_state = "marked" }, -/area/lv522/indoors/a_block/kitchen/glass) +/area/lv522/atmos/east_reactor/west) "tQF" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ id = "Sec-Corpo-Bridge-Lockdown" @@ -45626,6 +51789,13 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/bridges) +"tRs" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/obj/structure/largecrate/random, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "tRI" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/cameras/wooden_tv{ @@ -45643,6 +51813,12 @@ icon_state = "greenfull" }, /area/lv522/landing_zone_1/ceiling) +"tRS" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "tSb" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -45651,11 +51827,11 @@ icon_state = "N"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "tSm" = ( /obj/structure/cargo_container/kelland/right, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/east_central_street) "tSn" = ( /obj/structure/girder, @@ -45694,12 +51870,29 @@ icon_state = "rasputin15" }, /area/lv522/landing_zone_forecon/UD6_Typhoon) +"tTl" = ( +/obj/structure/prop/almayer/computers/sensor_computer3{ + layer = 2.9 + }, +/obj/structure/machinery/door_display/research_cell{ + id = "Reactor_entry_1"; + pixel_x = 5; + pixel_y = -7; + req_access = null + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "tTr" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = -13 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) +"tTv" = ( +/turf/closed/wall/r_wall/biodome/biodome_unmeltable, +/area/lv522/atmos/way_in_command_centre) "tTD" = ( /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/east_central_street) @@ -45770,11 +51963,17 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "tUM" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/dorms) +"tVa" = ( +/obj/structure/window/framed/strata/reinforced, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) "tVj" = ( /obj/structure/largecrate/random/barrel/white, /obj/effect/landmark/lv624/fog_blocker/short, @@ -45787,7 +51986,7 @@ /obj/structure/barricade/wooden{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "tVw" = ( /obj/effect/decal/cleanable/dirt, @@ -45818,6 +52017,19 @@ icon_state = "cement4" }, /area/lv522/outdoors/colony_streets/north_east_street) +"tWv" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/structure/largecrate/random/case/small, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/c_block/mining) "tWC" = ( /obj/structure/closet/firecloset/full, /turf/open/floor/prison{ @@ -45827,7 +52039,7 @@ /area/lv522/indoors/a_block/fitness) "tWE" = ( /obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "tWX" = ( /obj/item/storage/backpack, @@ -45861,6 +52073,13 @@ icon_state = "greenfull" }, /area/lv522/indoors/a_block/fitness) +"tXc" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/obj/vehicle/train/cargo/trolley, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "tXd" = ( /obj/structure/prop/invuln/lattice_prop{ dir = 1; @@ -45884,6 +52103,14 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"tXp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor/south) "tXG" = ( /obj/structure/bed/chair{ dir = 8 @@ -45895,13 +52122,6 @@ icon_state = "floor_plate" }, /area/lv522/landing_zone_1/ceiling) -"tXS" = ( -/obj/structure/stairs/perspective{ - dir = 6; - icon_state = "p_stair_full" - }, -/turf/open/floor/plating, -/area/lv522/landing_zone_1/tunnel) "tXW" = ( /turf/open/auto_turf/shale/layer2, /area/lv522/outdoors/colony_streets/south_east_street) @@ -45985,7 +52205,7 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "tZJ" = ( /obj/structure/reagent_dispensers/water_cooler/stacks{ @@ -46007,7 +52227,7 @@ dir = 4 }, /obj/effect/landmark/lv624/fog_blocker/short, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "tZP" = ( /obj/item/prop/alien/hugger, @@ -46060,6 +52280,10 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/dorms/glass) +"uaY" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall/strata_outpost, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "ubd" = ( /obj/structure/closet/boxinggloves, /turf/open/floor/prison{ @@ -46091,6 +52315,11 @@ icon_state = "kitchen" }, /area/lv522/indoors/a_block/fitness) +"ubF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/sewer) "ubH" = ( /obj/structure/stairs/perspective{ dir = 6; @@ -46144,11 +52373,17 @@ icon_state = "greenfull" }, /area/lv522/indoors/a_block/fitness) +"ucY" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) "udi" = ( /obj/structure/platform{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "udv" = ( /obj/structure/surface/table/almayer, @@ -46178,12 +52413,32 @@ icon_state = "floor_plate" }, /area/lv522/indoors/lone_buildings/storage_blocks) +"udM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/indoors/lone_buildings/engineering) "udR" = ( /turf/open/floor/corsat{ dir = 4; icon_state = "brown" }, /area/lv522/atmos/cargo_intake) +"udU" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/cargo_intake) "uea" = ( /obj/structure/surface/table/almayer, /obj/structure/window/reinforced, @@ -46214,7 +52469,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "uew" = ( /obj/item/tool/screwdriver, @@ -46281,7 +52536,8 @@ /area/lv522/indoors/a_block/security) "ueY" = ( /obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 + dir = 1; + welded = 1 }, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ id = "LV_522_Hydro-Lockdown"; @@ -46344,15 +52600,16 @@ }, /area/lv522/indoors/a_block/hallway) "ugi" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -9; - pixel_y = -2 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 }, -/obj/structure/prop/ice_colony/ground_wire{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" }, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/colony_streets/central_streets) +/area/lv522/atmos/cargo_intake) "ugn" = ( /obj/structure/prop/invuln/ice_prefab/roof_greeble{ icon_state = "vent2"; @@ -46395,6 +52652,7 @@ /area/lv522/landing_zone_2) "ugN" = ( /obj/item/storage/backpack/marine/satchel/scout_cloak, +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor/south) "ugR" = ( @@ -46402,7 +52660,7 @@ /turf/open/floor/carpet, /area/lv522/indoors/c_block/casino) "ugV" = ( -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_street) "ugX" = ( /obj/effect/decal/cleanable/dirt, @@ -46431,20 +52689,12 @@ /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) "uhx" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - name = "overhead pipe"; - pixel_x = 16; - pixel_y = -6 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 6; - name = "overhead pipe"; - pixel_x = -8; - pixel_y = -6 +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/turf/open/floor/plating/plating_catwalk/prison, -/area/lv522/atmos/cargo_intake) +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) "uhF" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/weapon/pole/fancy_cane, @@ -46499,7 +52749,7 @@ dir = 1; icon_state = "fab_2" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "uih" = ( /obj/effect/decal/cleanable/dirt, @@ -46531,8 +52781,7 @@ }, /area/lv522/indoors/a_block/admin) "uiK" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "uiM" = ( /turf/open/floor/prison, @@ -46573,15 +52822,15 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "uje" = ( /obj/effect/decal/cleanable/blood/oil, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/south_east_street) "ujg" = ( -/obj/structure/window/framed/colony, -/turf/open/floor/corsat, +/obj/structure/window/framed/strata/reinforced, +/turf/open/floor/plating, /area/lv522/atmos/east_reactor/south) "ujq" = ( /obj/structure/surface/table/reinforced/prison, @@ -46618,8 +52867,10 @@ /area/lv522/outdoors/colony_streets/north_east_street) "ukp" = ( /obj/structure/surface/table/almayer, -/obj/item/ammo_box/magazine/nailgun/empty{ - pixel_y = 5 +/obj/structure/machinery/recharger, +/obj/effect/spawner/random/powercell, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 }, /turf/open/floor/prison, /area/lv522/indoors/lone_buildings/engineering) @@ -46650,6 +52901,13 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/security/glass) +"ukT" = ( +/obj/structure/closet/crate, +/obj/item/storage/pouch/pressurized_reagent_canister/revival, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "ulh" = ( /turf/closed/shuttle/dropship2/tornado{ icon_state = "3" @@ -46690,7 +52948,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "unt" = ( /turf/closed/wall/mineral/bone_resin, @@ -46699,14 +52957,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/c_block/cargo) -"unE" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/hallway) "unM" = ( /obj/structure/platform{ dir = 4 @@ -46715,7 +52965,7 @@ dir = 1; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "unQ" = ( /obj/structure/surface/rack, @@ -46731,6 +52981,12 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"unU" = ( +/obj/structure/prop/dam/crane/damaged, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/reactor_garage) "unX" = ( /obj/item/weapon/twohanded/folded_metal_chair, /obj/structure/pipes/standard/simple/hidden/green{ @@ -46799,6 +53055,13 @@ icon_state = "marked" }, /area/lv522/indoors/b_block/bridge) +"upa" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "upc" = ( /obj/structure/machinery/suit_storage_unit{ pixel_x = -9 @@ -46877,7 +53140,7 @@ /turf/open/floor/plating, /area/lv522/indoors/a_block/admin) "uqt" = ( -/obj/structure/largecrate, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -46916,6 +53179,13 @@ }, /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) +"urp" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/largecrate/random, +/turf/open/asphalt/cement, +/area/lv522/outdoors/n_rockies) "uru" = ( /turf/closed/shuttle/dropship2/tornado{ icon_state = "66" @@ -46940,12 +53210,10 @@ }, /area/lv522/outdoors/colony_streets/north_street) "usn" = ( -/obj/structure/machinery/light{ - dir = 4 - }, +/obj/effect/landmark/static_comms/net_one, /turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" + dir = 10; + icon_state = "floor_marked" }, /area/lv522/indoors/lone_buildings/engineering) "usy" = ( @@ -47011,6 +53279,11 @@ icon_state = "greenfull" }, /area/lv522/landing_zone_1/ceiling) +"utq" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/item/stack/sheet/metal, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_east_street) "utx" = ( /obj/structure/surface/table/almayer, /obj/item/ashtray/plastic{ @@ -47030,6 +53303,20 @@ icon_state = "greenfull" }, /area/lv522/landing_zone_1/ceiling) +"utH" = ( +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_x = -1; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "utR" = ( /obj/structure/machinery/power/apc/weak{ dir = 1 @@ -47064,6 +53351,12 @@ /obj/effect/landmark/lv624/fog_blocker/short, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) +"uul" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/floor/corsat{ + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor/south) "uur" = ( /obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/strata{ @@ -47120,7 +53413,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "SW-out" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "uvk" = ( /obj/structure/prop/server_equipment/yutani_server/broken{ @@ -47133,6 +53426,15 @@ icon_state = "darkyellowfull2" }, /area/lv522/indoors/lone_buildings/outdoor_bot) +"uvt" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "uvC" = ( /obj/structure/closet/crate/trashcart, /obj/item/trash/buritto, @@ -47151,6 +53453,10 @@ icon_state = "cement4" }, /area/lv522/outdoors/colony_streets/north_west_street) +"uwe" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "uwk" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -47176,7 +53482,7 @@ }, /area/lv522/landing_zone_forecon/UD6_Tornado) "uwT" = ( -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "uwY" = ( /obj/item/stack/rods, @@ -47200,13 +53506,19 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/medical/glass) +"uxd" = ( +/obj/effect/spawner/gibspawner/xeno, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/nw_rockies) "uxf" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ icon_state = "marked" }, /area/lv522/atmos/cargo_intake) "uxi" = ( /obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -47223,19 +53535,13 @@ icon_state = "SE-out"; pixel_x = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "uya" = ( /turf/open/floor/prison{ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/garage) -"uye" = ( -/obj/structure/largecrate/random, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/outdoors/colony_streets/north_street) "uyt" = ( /turf/open/floor/prison{ icon_state = "darkredfull2" @@ -47288,10 +53594,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) -"uzk" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/plating/plating_catwalk/prison, -/area/lv522/outdoors/nw_rockies) "uzr" = ( /obj/structure/stairs/perspective{ dir = 8; @@ -47300,13 +53602,19 @@ /obj/structure/platform, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) -"uzI" = ( -/obj/structure/platform_decoration, -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" +"uzD" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + pixel_x = 4; + pixel_y = 6 }, -/turf/open/auto_turf/shale/layer0, -/area/lv522/landing_zone_2) +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) +"uzI" = ( +/turf/closed/wall/solaris/reinforced/hull/lv522, +/area/space) "uzK" = ( /obj/item/stack/rods, /turf/open/floor/prison{ @@ -47329,6 +53637,13 @@ "uAa" = ( /turf/open/floor/prison, /area/lv522/outdoors/colony_streets/north_street) +"uAb" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_west_street) "uAd" = ( /turf/open/floor/corsat{ dir = 1; @@ -47347,10 +53662,27 @@ }, /turf/open/floor/plating, /area/lv522/indoors/a_block/admin) +"uBd" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block - Colony Operations Centre Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/hallway) "uBm" = ( /obj/structure/girder, /turf/open/auto_turf/shale/layer2, /area/lv522/outdoors/colony_streets/east_central_street) +"uBs" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 8 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 11 + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "uBX" = ( /obj/structure/machinery/light{ dir = 1; @@ -47394,14 +53726,16 @@ /turf/open/floor/prison, /area/lv522/indoors/a_block/security) "uDs" = ( -/obj/item/clothing/head/beret/sec/hos, +/obj/item/clothing/head/CMB, /obj/effect/decal/cleanable/blood, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/security) -"uDF" = ( -/obj/structure/largecrate/random, -/turf/open/floor/prison, -/area/lv522/outdoors/colony_streets/north_street) +"uDC" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/east) "uDM" = ( /obj/structure/machinery/light/double{ dir = 8; @@ -47410,9 +53744,7 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "uDP" = ( /obj/structure/bed/chair/comfy{ @@ -47557,8 +53889,18 @@ /area/lv522/landing_zone_1) "uFz" = ( /obj/item/clipboard, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) +"uFA" = ( +/obj/structure/surface/table/almayer, +/obj/item/paper_bin{ + pixel_x = -7; + pixel_y = 7 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "uFB" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 10; @@ -47591,6 +53933,12 @@ icon_state = "marked" }, /area/lv522/indoors/c_block/mining) +"uFT" = ( +/turf/open/floor/corsat{ + dir = 10; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "uGa" = ( /obj/effect/decal/cleanable/dirt, /obj/item/storage/pill_bottle/tramadol/skillless{ @@ -47602,12 +53950,33 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/hallway) +"uGd" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_west_street) +"uGj" = ( +/obj/structure/barricade/deployable{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "uGl" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/cargo) +"uGK" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/reactor_garage) "uGO" = ( /obj/structure/coatrack{ pixel_x = 11; @@ -47688,7 +54057,7 @@ /area/lv522/indoors/a_block/hallway) "uIe" = ( /obj/structure/ore_box, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "uIk" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -47696,6 +54065,13 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/b_block/bridge) +"uIn" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, +/area/lv522/landing_zone_2) "uIo" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/prison{ @@ -47820,8 +54196,13 @@ }, /area/lv522/indoors/a_block/bridges/op_centre) "uKD" = ( -/turf/closed/wall/strata_outpost/reinforced, -/area/lv522/oob/w_y_vault) +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/filt) "uKE" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -47830,15 +54211,13 @@ /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) "uKQ" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/lv522/landing_zone_forecon/UD6_Tornado) "uKR" = ( /obj/structure/barricade/wooden{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/east_central_street) "uKS" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -47909,7 +54288,8 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/obj/structure/prop/ice_colony/ground_wire, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "uMc" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -47929,6 +54309,10 @@ icon_state = "radiator_tile2" }, /area/lv522/indoors/a_block/kitchen) +"uMr" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison, +/area/lv522/landing_zone_2) "uMM" = ( /obj/item/prop/alien/hugger, /turf/open/floor/prison, @@ -47956,7 +54340,7 @@ /area/lv522/indoors/c_block/casino) "uNg" = ( /obj/item/tool/pickaxe, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "uNp" = ( /turf/open/floor/carpet, @@ -48070,6 +54454,12 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/bridges/corpo_fitness) +"uOP" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/asphalt/cement{ + icon_state = "cement9" + }, +/area/lv522/outdoors/colony_streets/north_street) "uPc" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/atmos/west_reactor) @@ -48096,6 +54486,15 @@ icon_state = "floor_marked" }, /area/lv522/landing_zone_1/ceiling) +"uPv" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + pixel_y = 3 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "uPy" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -48138,11 +54537,11 @@ }, /area/lv522/indoors/a_block/corpo/glass) "uQi" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 9 +/obj/item/clothing/suit/storage/marine/medium/smooth, +/turf/open/floor/corsat{ + icon_state = "plate" }, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/colony_streets/north_west_street) +/area/lv522/atmos/east_reactor/south) "uQn" = ( /obj/structure/platform{ dir = 1 @@ -48259,16 +54658,16 @@ }, /area/lv522/outdoors/colony_streets/north_west_street) "uSo" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - dir = 4; - icon_state = "greenfull" +/obj/item/storage/backpack/marine/satchel{ + desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; + icon = 'icons/obj/janitor.dmi'; + icon_state = "trashbag3"; + name = "trash bag"; + pixel_x = -4; + pixel_y = 6 }, -/area/lv522/indoors/a_block/fitness) +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_west_street) "uSv" = ( /obj/effect/acid_hole, /turf/closed/wall/strata_outpost, @@ -48285,23 +54684,17 @@ icon_state = "31" }, /area/lv522/landing_zone_forecon/UD6_Tornado) -"uSI" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1; - name = "\improper Corporate Liason" - }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/corsat{ - icon_state = "marked" +"uSJ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 }, -/area/lv522/indoors/a_block/corpo) +/turf/open/floor/prison, +/area/lv522/indoors/a_block/dorm_north) "uSY" = ( /obj/structure/machinery/colony_floodlight{ layer = 4.3 }, -/turf/open/asphalt/cement{ - icon_state = "cement4" - }, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "uSZ" = ( /obj/item/toy/beach_ball/holoball{ @@ -48311,7 +54704,7 @@ /obj/structure/holohoop{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "uTd" = ( /obj/structure/machinery/landinglight/ds1/delaytwo{ @@ -48335,6 +54728,13 @@ /obj/structure/window_frame/strata, /turf/open/floor/plating, /area/lv522/indoors/a_block/corpo) +"uTy" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "uTI" = ( /obj/structure/machinery/light{ dir = 8 @@ -48414,11 +54814,12 @@ /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms/glass) "uVa" = ( -/obj/effect/spawner/gibspawner/xeno, -/turf/open/asphalt/cement{ - icon_state = "cement1" +/obj/effect/landmark/monkey_spawn, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "marked" }, -/area/lv522/outdoors/colony_streets/north_east_street) +/area/lv522/atmos/filt) "uVj" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ @@ -48511,7 +54912,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "S" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "uWI" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ @@ -48522,7 +54923,7 @@ }, /area/lv522/indoors/b_block/bar) "uWO" = ( -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "uWT" = ( /obj/structure/machinery/portable_atmospherics/hydroponics{ @@ -48533,27 +54934,21 @@ }, /area/lv522/indoors/b_block/hydro/glass) "uXa" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, +/obj/structure/largecrate/random/barrel/green, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 10; + icon_state = "floor_marked" }, /area/lv522/landing_zone_2/ceiling) "uXj" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "uXp" = ( /obj/item/weapon/twohanded/folded_metal_chair, /obj/effect/decal/warning_stripes{ icon_state = "S" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "uXu" = ( /obj/structure/stairs/perspective{ @@ -48572,6 +54967,18 @@ /obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"uXZ" = ( +/obj/structure/surface/table/almayer, +/obj/item/toy/plush/farwa{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/toy/plush/farwa, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/lv522/indoors/a_block/fitness/glass) "uYi" = ( /obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/dirt, @@ -48579,6 +54986,11 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/casino) +"uYk" = ( +/obj/structure/largecrate/random, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/c_block/mining) "uYq" = ( /obj/structure/cargo_container/grant/left, /turf/open/floor/plating{ @@ -48592,6 +55004,13 @@ icon_state = "greenfull" }, /area/lv522/landing_zone_1) +"uZf" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "brown" + }, +/area/lv522/atmos/west_reactor) "uZC" = ( /obj/structure/surface/table/almayer, /obj/item/trash/plate{ @@ -48613,6 +55032,12 @@ icon_state = "greenfull" }, /area/lv522/indoors/a_block/fitness) +"uZV" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/way_in_command_centre) "vae" = ( /obj/item/prop/colony/used_flare, /turf/open/auto_turf/shale/layer1, @@ -48650,11 +55075,12 @@ }, /area/lv522/indoors/c_block/cargo) "vaZ" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -10; + pixel_y = 25 }, -/turf/closed/wall/strata_ice/dirty, -/area/lv522/oob) +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/central_streets) "vbk" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -48662,19 +55088,24 @@ /obj/structure/platform{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_middle, /area/lv522/landing_zone_forecon/UD6_Tornado) "vbm" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 6; - name = "overhead pipe"; - pixel_x = -10; - pixel_y = -6 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/turf/open/floor/plating/plating_catwalk/prison, -/area/lv522/atmos/cargo_intake) +/obj/item/clothing/mask/facehugger{ + desc = "It has some sort of a tube at the end of its tail. What the hell is this thing?"; + icon_state = "facehugger_impregnated"; + layer = 3; + name = "????"; + stat = 2 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "vbu" = ( /obj/effect/landmark/lv624/fog_blocker/short, /turf/open/floor/prison, @@ -48736,6 +55167,18 @@ "vcu" = ( /turf/closed/shuttle/dropship2/tornado/typhoon, /area/lv522/landing_zone_forecon/UD6_Typhoon) +"vcF" = ( +/obj/structure/stairs/perspective{ + dir = 5; + icon_state = "p_stair_full" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "vcH" = ( /obj/structure/barricade/wooden, /obj/effect/decal/cleanable/dirt, @@ -48751,11 +55194,8 @@ }, /area/lv522/indoors/c_block/mining) "vcR" = ( -/obj/structure/fence, -/turf/open/floor/strata{ - dir = 4; - icon_state = "floor3" - }, +/obj/structure/largecrate/random/mini/med, +/turf/open/floor/prison, /area/lv522/landing_zone_2/ceiling) "vda" = ( /obj/effect/decal/warning_stripes{ @@ -48799,6 +55239,15 @@ icon_state = "darkbrownfull2" }, /area/lv522/landing_zone_2/ceiling) +"vdz" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper C-Block - Garage Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/bridge) "vdH" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/space_heater/radiator/red{ @@ -48988,6 +55437,13 @@ /obj/effect/decal/cleanable/blood, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/w_rockies) +"vhr" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "vht" = ( /obj/structure/closet/emcloset, /turf/open/floor/prison{ @@ -48995,6 +55451,13 @@ icon_state = "greenfull" }, /area/lv522/indoors/a_block/fitness/glass) +"vhA" = ( +/obj/item/prop/colony/used_flare, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor/south) "vhC" = ( /turf/closed/shuttle/dropship2/tornado/typhoon{ icon_state = "4" @@ -49010,28 +55473,15 @@ icon_state = "6" }, /area/lv522/landing_zone_forecon/UD6_Typhoon) -"vil" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Colony Marshals" - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +"vir" = ( +/obj/structure/closet/wardrobe/engineering_yellow, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ +/turf/open/floor/prison{ dir = 4; - id = "Sec-Kitchen-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/security) -"vir" = ( -/obj/structure/machinery/power/geothermal{ - fail_rate = 5 + icon_state = "darkyellowfull2" }, -/turf/open/floor/plating, /area/lv522/indoors/lone_buildings/engineering) "viA" = ( /obj/item/lightstick/red/spoke/planted{ @@ -49041,7 +55491,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "viC" = ( /obj/structure/bed/chair/comfy{ @@ -49062,13 +55512,35 @@ icon_state = "cyan2" }, /area/lv522/indoors/a_block/medical) +"viE" = ( +/obj/structure/platform/strata{ + dir = 1 + }, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) "viG" = ( /obj/effect/decal/cleanable/cobweb, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/east_central_street) +"viH" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) +"viI" = ( +/obj/structure/pipes/vents/pump, +/obj/vehicle/powerloader, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "viN" = ( /obj/effect/decal/cleanable/blood/oil/streak, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "viR" = ( /obj/structure/surface/table/woodentable/fancy, @@ -49100,13 +55572,14 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "vju" = ( -/turf/closed/wall/strata_outpost, -/area/lv522/oob/w_y_vault) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/reactor_garage) "vjv" = ( /turf/closed/shuttle/dropship2/tornado{ icon_state = "69" @@ -49201,12 +55674,9 @@ /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) "vlq" = ( -/obj/structure/bed/chair, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/lv522/indoors/a_block/fitness) +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) "vlv" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/radio/off{ @@ -49251,12 +55721,6 @@ icon_state = "greenfull" }, /area/lv522/indoors/a_block/fitness) -"vmp" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/c_block/casino) "vmG" = ( /obj/structure/surface/table/gamblingtable, /obj/item/reagent_container/food/drinks/drinkingglass{ @@ -49325,14 +55789,6 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/bridges/op_centre) -"vnB" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/corpo/glass) "vnX" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/strata{ @@ -49345,6 +55801,13 @@ /obj/structure/bed/chair{ dir = 8 }, +/obj/structure/transmitter/colony_net{ + dir = 8; + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Colony Casino"; + pixel_x = 16 + }, /turf/open/floor/prison{ icon_state = "darkbrownfull2" }, @@ -49387,11 +55850,23 @@ icon_state = "cement2" }, /area/lv522/outdoors/colony_streets/central_streets) +"voX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/prop/alien/hugger, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "vpa" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_street) "vpe" = ( /obj/effect/decal/cleanable/dirt, @@ -49418,6 +55893,15 @@ /obj/structure/window/framed/strata/reinforced, /turf/open/floor/plating, /area/lv522/landing_zone_2/ceiling) +"vpq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "vpB" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/space_heater/radiator/red{ @@ -49444,6 +55928,15 @@ icon_state = "70" }, /area/lv522/landing_zone_forecon/UD6_Tornado) +"vqe" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/lv522/oob/w_y_vault) "vqk" = ( /obj/vehicle/train/cargo/trolley, /obj/structure/machinery/light, @@ -49469,6 +55962,15 @@ /obj/effect/landmark/lv624/fog_blocker/short, /turf/open/auto_turf/shale/layer2, /area/lv522/landing_zone_1) +"vqF" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement{ + icon_state = "cement1" + }, +/area/lv522/outdoors/colony_streets/north_street) "vqH" = ( /obj/structure/machinery/light{ dir = 1 @@ -49512,6 +56014,17 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) +"vrE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "whiteyellowfull" + }, +/area/lv522/oob/w_y_vault) "vrV" = ( /obj/structure/window/framed/corsat/hull, /turf/open/floor/corsat{ @@ -49546,6 +56059,18 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/south_west_street) +"vsj" = ( +/obj/structure/reagent_dispensers/fueltank/gas, +/obj/item/tool/weldpack{ + layer = 3.1; + pixel_x = -5; + pixel_y = 13 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "vsk" = ( /obj/structure/coatrack{ pixel_x = -6; @@ -49573,6 +56098,18 @@ icon_state = "cement1" }, /area/lv522/outdoors/colony_streets/south_east_street) +"vsy" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "vsG" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -49593,6 +56130,15 @@ icon_state = "marked" }, /area/lv522/indoors/c_block/mining) +"vsZ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "vtc" = ( /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/nw_rockies) @@ -49669,6 +56215,15 @@ icon_state = "floor_marked" }, /area/lv522/landing_zone_1/ceiling) +"vuS" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "vuY" = ( /obj/item/clothing/mask/facehugger{ desc = "It has some sort of a tube at the end of its tail. What the hell is this thing?"; @@ -49693,7 +56248,7 @@ /area/lv522/indoors/b_block/bridge) "vwi" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_street) "vwl" = ( /obj/structure/closet/cabinet, @@ -49747,11 +56302,29 @@ /obj/structure/cargo_container/watatsumi/right, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_east_street) +"vxq" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "vxv" = ( /obj/structure/surface/table/woodentable/fancy, /obj/effect/landmark/objective_landmark/close, /turf/open/floor/carpet, /area/lv522/indoors/b_block/bar) +"vxD" = ( +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" + }, +/turf/open/floor/prison{ + icon_state = "cell_stripe" + }, +/area/lv522/atmos/way_in_command_centre) "vxG" = ( /obj/structure/stairs/perspective{ dir = 1; @@ -49768,19 +56341,6 @@ /obj/structure/barricade/wooden, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) -"vxT" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/closed{ - id = "East_Lock"; - name = "Emergency Lockdown" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/hallway) "vxY" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/camera/autoname{ @@ -49794,14 +56354,6 @@ icon_state = "cyan2" }, /area/lv522/indoors/a_block/medical) -"vyk" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/c_block/bridge) "vyz" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/plating/plating_catwalk/prison, @@ -49821,12 +56373,20 @@ }, /area/lv522/indoors/a_block/medical) "vzc" = ( -/obj/structure/closet/wardrobe/engineering_yellow, -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" +/obj/structure/machinery/power/geothermal{ + fail_rate = 5 }, +/turf/open/floor/plating, /area/lv522/indoors/lone_buildings/engineering) +"vzd" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor/west) "vzg" = ( /obj/item/stack/rods{ pixel_y = -2 @@ -49886,16 +56446,15 @@ /obj/structure/cargo_container/watatsumi/leftmid{ layer = 3.3 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) -"vzE" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/b_block/bar) +"vzz" = ( +/obj/structure/closet/crate, +/obj/item/storage/pouch/shotgun/large/slug, +/obj/item/storage/pouch/general/large/m39ap, +/obj/item/storage/pouch/flamertank, +/turf/open/floor/prison, +/area/lv522/landing_zone_2) "vzV" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/camera/autoname{ @@ -49931,6 +56490,14 @@ icon_state = "floor_marked" }, /area/lv522/landing_zone_1/ceiling) +"vAX" = ( +/obj/structure/bed/chair/comfy, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "vBa" = ( /obj/structure/girder/displaced, /turf/open/asphalt/cement{ @@ -49998,6 +56565,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/garage) +"vBL" = ( +/obj/effect/spawner/gibspawner/xeno, +/turf/open/asphalt/cement{ + icon_state = "cement9" + }, +/area/lv522/outdoors/colony_streets/north_street) "vBM" = ( /obj/structure/barricade/handrail{ dir = 8 @@ -50011,6 +56584,17 @@ /obj/structure/bed/chair, /turf/open/floor/prison, /area/lv522/indoors/c_block/garage) +"vBV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/uscm_mre, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "vCy" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -50064,8 +56648,10 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/hallway) "vDo" = ( -/turf/closed/wall/strata_ice/dirty, -/area/lv522/landing_zone_2) +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/landing_zone_2/ceiling) "vDp" = ( /obj/structure/surface/table/almayer, /obj/item/device/flashlight/lamp{ @@ -50082,9 +56668,13 @@ /turf/open/floor/prison, /area/lv522/indoors/c_block/garage) "vDw" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, -/turf/open/floor/prison, -/area/lv522/atmos/outdoor) +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/sheet/metal, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) "vDL" = ( /obj/structure/prop/ice_colony/dense/planter_box{ dir = 5 @@ -50097,6 +56687,21 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/bridge) +"vDT" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block - Colony Operations Centre Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 1 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "LV522CIC_1"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/admin) "vDV" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -50109,7 +56714,7 @@ /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "vEw" = ( /obj/structure/filingcabinet{ @@ -50160,15 +56765,26 @@ dir = 9; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) +"vFD" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform, +/obj/structure/platform_decoration{ + dir = 10; + layer = 3.51 + }, +/turf/open/gm/river, +/area/lv522/atmos/sewer) "vFH" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/item/lightstick/red/spoke/planted{ pixel_x = -9; pixel_y = 25 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "vFJ" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -50186,12 +56802,6 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) -"vFS" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/fitness) "vGb" = ( /obj/structure/machinery/colony_floodlight{ density = 0; @@ -50218,18 +56828,40 @@ /obj/effect/decal/cleanable/blood/xeno, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_east_street) +"vGB" = ( +/obj/structure/window/framed/strata/reinforced, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "vGG" = ( /obj/structure/pipes/standard/manifold/hidden/green, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/dorms) "vGP" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, /area/lv522/indoors/lone_buildings/engineering) +"vHd" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "vHo" = ( -/obj/item/clothing/head/welding, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, /area/lv522/indoors/lone_buildings/engineering) "vHw" = ( /obj/structure/barricade/wooden{ @@ -50289,7 +56921,7 @@ /area/lv522/indoors/a_block/dorms) "vHN" = ( /obj/structure/prop/ice_colony/ground_wire, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "vHU" = ( /obj/structure/surface/table/almayer, @@ -50320,6 +56952,16 @@ icon_state = "darkpurple2" }, /area/lv522/indoors/a_block/dorms) +"vIe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/lv522/indoors/a_block/fitness) "vIg" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1; @@ -50352,6 +56994,14 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor/south) +"vIU" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "vJb" = ( /turf/open/floor/prison{ dir = 1; @@ -50394,6 +57044,21 @@ icon_state = "greenfull" }, /area/lv522/indoors/a_block/fitness) +"vJw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/backpack/marine/satchel{ + desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; + icon = 'icons/obj/janitor.dmi'; + icon_state = "trashbag3"; + name = "trash bag"; + pixel_x = -4; + pixel_y = 5 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/sewer) "vJD" = ( /obj/structure/window/framed/strata/reinforced, /obj/structure/curtain/red, @@ -50424,18 +57089,6 @@ icon_state = "marked" }, /area/lv522/indoors/c_block/casino) -"vKm" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "LV_522_Hydro-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/b_block/bridge) "vKA" = ( /obj/structure/surface/table/almayer, /obj/item/clothing/under/redpyjamas, @@ -50459,6 +57112,10 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) +"vKP" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) "vKR" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -50528,13 +57185,6 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/casino) -"vLW" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/c_block/cargo) "vMg" = ( /obj/structure/safe, /turf/open/floor/prison{ @@ -50595,6 +57245,13 @@ "vNk" = ( /turf/closed/wall/strata_outpost, /area/lv522/indoors/c_block/casino) +"vNr" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor) "vNy" = ( /obj/effect/decal/cleanable/blood, /obj/structure/bed/roller, @@ -50672,19 +57329,6 @@ icon_state = "squares" }, /area/lv522/atmos/command_centre) -"vOR" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Corporation Office"; - req_access_txt = "100" - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/corpo/glass) "vOT" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/shiva{ @@ -50723,7 +57367,7 @@ icon_state = "E"; pixel_x = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) "vPl" = ( /obj/effect/decal/cleanable/dirt, @@ -50735,6 +57379,12 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/admin) +"vPm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement{ + icon_state = "cement4" + }, +/area/lv522/outdoors/colony_streets/north_street) "vPs" = ( /obj/structure/prop/dam/crane/damaged, /obj/structure/platform, @@ -50747,20 +57397,6 @@ /obj/structure/platform, /turf/open/floor/plating, /area/lv522/indoors/c_block/garage) -"vPA" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Corporation Office"; - req_access_txt = "100" - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/corpo) "vPO" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 8; @@ -50768,6 +57404,12 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) +"vQn" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor) "vQL" = ( /obj/effect/decal/cleanable/blood, /obj/structure/pipes/standard/simple/hidden/green{ @@ -50826,6 +57468,14 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"vRv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/largecrate/random/mini/wooden, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/lv522/indoors/a_block/fitness) "vRQ" = ( /obj/structure/surface/table/almayer, /obj/item/stack/sheet/metal/medium_stack, @@ -50859,6 +57509,7 @@ /area/lv522/indoors/c_block/mining) "vSJ" = ( /obj/structure/blocker/forcefield/vehicles, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -50873,6 +57524,15 @@ }, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/central_streets) +"vSO" = ( +/obj/structure/machinery/power/apc/weak{ + dir = 1 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "greenfull" + }, +/area/lv522/indoors/a_block/fitness) "vSU" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -50881,7 +57541,7 @@ /area/lv522/indoors/a_block/executive) "vSV" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/prop/maintenance_hatch{ +/obj/structure/tunnel/maint_tunnel{ pixel_y = 6 }, /turf/open/floor/prison{ @@ -50901,13 +57561,28 @@ pixel_x = 12; pixel_y = 6 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "vTx" = ( /turf/open/asphalt/cement{ icon_state = "cement3" }, /area/lv522/outdoors/colony_streets/north_east_street) +"vTH" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) +"vTK" = ( +/obj/structure/prop/vehicles{ + icon_state = "van_damaged" + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/lv522/atmos/reactor_garage) "vTO" = ( /obj/structure/machinery/landinglight/ds1{ dir = 1 @@ -51005,7 +57680,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "vVh" = ( /obj/structure/machinery/light{ @@ -51040,6 +57715,13 @@ icon_state = "marked" }, /area/lv522/indoors/b_block/bar) +"vVx" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) "vVS" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -51047,15 +57729,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) -"vWc" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/landing_zone_2/ceiling) "vWe" = ( /obj/structure/barricade/wooden{ dir = 1; @@ -51074,15 +57747,18 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) -"vWp" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - welded = 1 +"vWv" = ( +/obj/structure/stairs/perspective{ + dir = 5; + icon_state = "p_stair_full" }, -/turf/open/floor/corsat{ - icon_state = "marked" +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/area/lv522/indoors/c_block/casino) +/turf/open/asphalt/cement{ + icon_state = "cement4" + }, +/area/lv522/outdoors/colony_streets/north_west_street) "vWI" = ( /obj/structure/largecrate/random, /turf/open/floor/prison, @@ -51139,7 +57815,7 @@ /obj/structure/platform_decoration{ dir = 8 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "vYL" = ( /obj/structure/pipes/standard/manifold/hidden/green, @@ -51230,6 +57906,10 @@ }, /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) +"vZY" = ( +/obj/structure/cargo_container/grant/rightmid, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/w_rockies) "wac" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ @@ -51237,6 +57917,12 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/hallway) +"waj" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "wan" = ( /obj/structure/surface/table/almayer, /turf/open/floor/prison{ @@ -51276,7 +57962,7 @@ /obj/structure/platform{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/south_east_street) "waZ" = ( /obj/item/trash/uscm_mre, @@ -51292,13 +57978,22 @@ }, /area/lv522/indoors/lone_buildings/storage_blocks) "wbj" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Generator Room" +/obj/structure/machinery/cm_vending/sorted/tech/comp_storage{ + density = 0; + pixel_x = 13; + pixel_y = 11 }, -/turf/open/floor/corsat{ - icon_state = "marked" +/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage{ + density = 0; + pixel_x = -13; + pixel_y = 11 }, +/turf/open/floor/prison, /area/lv522/indoors/lone_buildings/engineering) +"wbo" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/c_block/mining) "wbt" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/auto_turf/shale/layer1, @@ -51378,6 +58073,11 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/corpo/glass) +"wcM" = ( +/obj/structure/largecrate/random/secure, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/c_block/mining) "wcO" = ( /obj/structure/machinery/light{ dir = 4 @@ -51412,6 +58112,11 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"wcY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/largecrate/random/case, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "wdd" = ( /obj/item/stack/sheet/wood, /obj/effect/decal/cleanable/dirt, @@ -51431,9 +58136,7 @@ }, /area/lv522/indoors/a_block/security/glass) "wdj" = ( -/turf/open/floor/corsat{ - icon_state = "marked" - }, +/turf/open/floor/prison, /area/lv522/indoors/lone_buildings/engineering) "wdy" = ( /turf/open/asphalt/cement{ @@ -51452,7 +58155,7 @@ /obj/structure/platform{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "wea" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -51483,13 +58186,13 @@ dir = 10; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "weJ" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "weM" = ( /obj/structure/cargo_container/horizontal/blue/middle{ @@ -51565,6 +58268,13 @@ /obj/structure/pipes/standard/manifold/fourway/hidden/green, /turf/open/floor/prison, /area/lv522/indoors/c_block/cargo) +"wft" = ( +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" + }, +/obj/effect/spawner/gibspawner/xeno, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "wfC" = ( /obj/structure/stairs/perspective{ dir = 8; @@ -51693,6 +58403,12 @@ icon_state = "darkbrownfull2" }, /area/lv522/landing_zone_2) +"whK" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/east_reactor/south) "whR" = ( /obj/item/newspaper, /obj/effect/decal/cleanable/dirt, @@ -51749,7 +58465,7 @@ /obj/structure/stairs/perspective{ icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "wjf" = ( /obj/structure/bed/chair/wood/normal{ @@ -51757,6 +58473,15 @@ }, /turf/open/floor/carpet, /area/lv522/indoors/c_block/casino) +"wjy" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor/south) "wjE" = ( /obj/structure/platform_decoration{ dir = 8 @@ -51765,7 +58490,7 @@ dir = 6; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) "wjF" = ( /obj/structure/cargo_container/horizontal/blue/middle{ @@ -51780,6 +58505,17 @@ }, /turf/open/floor/prison, /area/lv522/indoors/lone_buildings/outdoor_bot) +"wjP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "whiteyellowfull" + }, +/area/lv522/oob/w_y_vault) "wke" = ( /obj/structure/stairs/perspective{ dir = 1; @@ -51963,11 +58699,21 @@ layer = 3.1; pixel_y = 17 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "woG" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/atmos/filt) +"woR" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/gm/river, +/area/lv522/atmos/filt) +"woU" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/sewer) "wpa" = ( /obj/structure/prop/server_equipment{ icon_state = "rackframe_broken" @@ -52053,6 +58799,12 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/bridge) +"wrc" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/reactor_garage) "wrg" = ( /obj/structure/coatrack{ pixel_x = 10; @@ -52112,7 +58864,7 @@ dir = 1; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "wsT" = ( /obj/structure/machinery/light{ @@ -52134,6 +58886,12 @@ icon_state = "cement4" }, /area/lv522/outdoors/colony_streets/north_street) +"wsY" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/central_streets) "wth" = ( /obj/structure/prop/ice_colony/ground_wire{ dir = 1 @@ -52223,7 +58981,7 @@ /area/lv522/indoors/a_block/corpo) "wvd" = ( /obj/structure/prop/dam/crane/damaged, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "wvq" = ( /obj/structure/machinery/seed_extractor, @@ -52235,6 +58993,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/lone_buildings/outdoor_bot) +"wvB" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "wvO" = ( /obj/structure/filingcabinet, /turf/open/floor/strata{ @@ -52250,6 +59016,14 @@ icon_state = "plate" }, /area/lv522/atmos/east_reactor/north) +"wvX" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Shared Dorms Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "wvY" = ( /obj/structure/window/framed/strata/reinforced, /turf/open/floor/plating, @@ -52265,6 +59039,13 @@ /obj/structure/pipes/standard/manifold/fourway/hidden/green, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/dorms) +"wwi" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/east_reactor/west) "wwn" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/tool/shovel/etool/folded, @@ -52299,6 +59080,11 @@ icon_state = "marked" }, /area/lv522/oob) +"wwG" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/toolbox/emergency, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/way_in_command_centre) "wwJ" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -52412,14 +59198,16 @@ }, /area/lv522/indoors/b_block/hydro) "wyA" = ( -/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ - icon_state = "flammable_pipe_2" - }, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor/corsat, -/area/lv522/atmos/east_reactor) +/obj/item/weapon/gun/rifle/m41a{ + current_mag = null + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "wyE" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/objective_landmark/medium, @@ -52476,7 +59264,7 @@ icon_state = "N"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_west_street) "wzJ" = ( /obj/structure/machinery/light, @@ -52502,6 +59290,21 @@ icon_state = "68" }, /area/lv522/landing_zone_forecon/UD6_Tornado) +"wAB" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) +"wAE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "wAM" = ( /obj/structure/cargo_container/horizontal/blue/middle, /obj/structure/largecrate/supply/floodlights{ @@ -52528,9 +59331,7 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "wBx" = ( /obj/structure/machinery/landinglight/ds2/delayone{ @@ -52540,8 +59341,26 @@ /area/lv522/landing_zone_2) "wBA" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) +"wBG" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8; + pixel_x = -4 + }, +/obj/structure/prop/invuln/overhead/flammable_pipe/fly{ + dir = 8; + icon_state = "flammable_pipe_3"; + pixel_x = -3 + }, +/turf/closed/wall/mineral/bone_resin, +/area/lv522/atmos/west_reactor) +"wBR" = ( +/obj/structure/powerloader_wreckage, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "wCr" = ( /turf/closed/shuttle/dropship2/tornado{ icon_state = "64" @@ -52633,6 +59452,9 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) +"wDj" = ( +/turf/closed/wall/strata_outpost, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "wDk" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison{ @@ -52640,6 +59462,20 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) +"wDu" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/transmitter/colony_net{ + dir = 8; + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Colony Botany"; + pixel_x = 16 + }, +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" + }, +/area/lv522/indoors/b_block/hydro) "wDy" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor{ @@ -52683,12 +59519,14 @@ }, /area/lv522/landing_zone_2) "wEz" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, -/turf/open/floor/corsat{ - dir = 6; - icon_state = "brown" +/obj/structure/prop/server_equipment/yutani_server{ + density = 0; + pixel_y = 16 }, -/area/lv522/atmos/cargo_intake) +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/lv522/outdoors/nw_rockies) "wEE" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/surface/table/almayer, @@ -52722,16 +59560,31 @@ /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/prison, /area/lv522/indoors/c_block/cargo) +"wFv" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) +"wFA" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, +/area/lv522/atmos/outdoor) "wFB" = ( /obj/structure/window/framed/strata/reinforced, /turf/open/floor/corsat{ icon_state = "marked" }, /area/lv522/indoors/c_block/cargo) -"wFC" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/plating, -/area/lv522/indoors/c_block/mining) "wFP" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bed/chair{ @@ -52759,6 +59612,16 @@ /obj/effect/decal/cleanable/blood, /turf/open/floor/prison, /area/lv522/indoors/c_block/casino) +"wGq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "wGE" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/computer/PC{ @@ -52779,6 +59642,16 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/kitchen/glass) +"wGH" = ( +/obj/item/prop/colony/usedbandage{ + dir = 5; + pixel_y = 8 + }, +/obj/item/prop/colony/usedbandage{ + dir = 10 + }, +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) "wGJ" = ( /obj/item/stack/sheet/wood, /turf/open/floor/prison, @@ -52849,6 +59722,24 @@ /obj/structure/cargo_container/horizontal/blue/middle, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"wHX" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 8; + pixel_x = -6; + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/c_block/mining) +"wHY" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper A-Block - Colony Operations Centre Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/hallway) "wIi" = ( /obj/structure/machinery/colony_floodlight{ layer = 4.3 @@ -52864,6 +59755,19 @@ }, /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) +"wIx" = ( +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "wIE" = ( /obj/structure/flora/bush/ausbushes/ppflowers, /turf/open/organic/grass, @@ -52889,6 +59793,12 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"wJk" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "wJq" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/c_block/mining) @@ -52941,6 +59851,19 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) +"wLp" = ( +/turf/closed/wall/mineral/bone_resin, +/area/lv522/atmos/east_reactor/west) +"wLw" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 8; + pixel_x = -6; + pixel_y = 6 + }, +/obj/structure/closet/emcloset, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "wLN" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/drinks/coffee, @@ -53024,16 +59947,20 @@ /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) "wOo" = ( -/turf/open/floor/plating/plating_catwalk/prison, +/obj/structure/pipes/vents/pump, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, /area/lv522/indoors/lone_buildings/engineering) "wOu" = ( -/obj/structure/desertdam/decals/road_edge{ - icon_state = "road_edge_decal3"; - pixel_y = 16 +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 8 }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/wood, -/area/lv522/indoors/a_block/fitness/glass) +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/lv522/outdoors/n_rockies) "wOC" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/objective_landmark/close, @@ -53056,27 +59983,43 @@ icon_state = "darkyellowfull2" }, /area/lv522/indoors/lone_buildings/outdoor_bot) -"wPA" = ( -/obj/structure/window/framed/solaris/reinforced, -/turf/open/floor/corsat{ - icon_state = "marked" +"wPL" = ( +/obj/structure/platform_decoration/strata{ + dir = 8 }, -/area/lv522/outdoors/colony_streets/windbreaker/observation) +/turf/closed/wall/strata_ice/dirty, +/area/lv522/oob) "wPN" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = 11; pixel_y = 25 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) "wPR" = ( /turf/open/floor/wood{ icon_state = "wood-broken6" }, /area/lv522/indoors/b_block/bar) +"wPV" = ( +/obj/structure/closet/crate, +/obj/item/storage/xeno_tag_case, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "wQa" = ( /turf/open/auto_turf/shale/layer1, /area/lv522/landing_zone_2) +"wQs" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 + }, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "wQy" = ( /turf/open/floor/prison{ dir = 10; @@ -53099,6 +60042,15 @@ icon_state = "darkpurple2" }, /area/lv522/indoors/a_block/dorms) +"wRf" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/sewer) "wRk" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -53122,7 +60074,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "wRC" = ( /obj/structure/machinery/light, @@ -53153,6 +60105,15 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/bridges/garden_bridge) +"wSb" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor) "wSr" = ( /obj/structure/surface/table/reinforced/prison, /turf/open/floor/strata{ @@ -53164,42 +60125,13 @@ /obj/effect/decal/cleanable/blood/gibs, /turf/open/floor/prison, /area/lv522/indoors/a_block/kitchen/glass) -"wSz" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "LV522CIC_1"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/admin) "wSF" = ( /obj/structure/stairs/perspective{ dir = 10; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_1) -"wSH" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 1 - }, -/turf/open/auto_turf/shale/layer0, -/area/lv522/outdoors/n_rockies) -"wSW" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/lv522/outdoors/colony_streets/north_street) "wTf" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/reagent_container/food/snacks/monkeyburger{ @@ -53241,6 +60173,10 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/corpo) +"wTv" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/west_reactor) "wTx" = ( /obj/structure/cargo_container/kelland/left, /turf/open/floor/prison{ @@ -53277,6 +60213,13 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/corpo) +"wTV" = ( +/obj/structure/prop/vehicles, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/reactor_garage) "wUj" = ( /obj/structure/closet/crate/miningcar/yellow, /obj/item/ore/coal, @@ -53289,6 +60232,15 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/mining) +"wUp" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "wUx" = ( /obj/structure/barricade/deployable{ dir = 8 @@ -53301,6 +60253,12 @@ /obj/structure/closet/toolcloset, /turf/open/floor/plating, /area/lv522/oob) +"wVf" = ( +/obj/structure/machinery/power/apc/weak{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/west_reactor) "wVo" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = -9; @@ -53309,7 +60267,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/south_east_street) "wVF" = ( /obj/structure/machinery/door_control/brbutton{ @@ -53328,6 +60286,14 @@ }, /turf/open/floor/plating, /area/lv522/oob) +"wWc" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor/south) "wWe" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/carpet, @@ -53409,7 +60375,7 @@ /obj/structure/platform_decoration{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "wYU" = ( /obj/structure/stairs/perspective{ @@ -53457,6 +60423,16 @@ /obj/structure/window/framed/strata/reinforced, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"wZz" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/lv522/landing_zone_2/ceiling) "wZH" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/snacks/cheesyfries, @@ -53516,6 +60492,15 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/kitchen/glass) +"xaN" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/lv522/landing_zone_2/ceiling) "xaQ" = ( /obj/structure/surface/table/almayer, /obj/item/weapon/gun/lever_action/r4t{ @@ -53547,13 +60532,13 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "xbM" = ( /obj/structure/prop/vehicles/crawler{ icon_state = "crawler_fuel" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/south_east_street) "xbN" = ( /obj/structure/machinery/sleep_console, @@ -53633,7 +60618,7 @@ layer = 3.5; pixel_y = 10 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "xdn" = ( /obj/structure/surface/table/almayer, @@ -53660,13 +60645,14 @@ pixel_x = 6; pixel_y = 7 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "xdD" = ( -/obj/structure/window_frame/strata/reinforced, -/turf/open/floor/corsat{ - icon_state = "marked" +/obj/structure/pipes/standard/simple/hidden/green, +/obj/item/shard{ + icon_state = "medium" }, +/turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/lone_buildings/engineering) "xdF" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -53686,7 +60672,7 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "xeg" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -53694,6 +60680,9 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/bridges) +"xei" = ( +/turf/closed/wall/strata_ice/dirty, +/area/space) "xen" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -53736,6 +60725,13 @@ /area/lv522/outdoors/colony_streets/north_east_street) "xfS" = ( /obj/structure/surface/table/woodentable/fancy, +/obj/structure/transmitter/colony_net{ + dir = 1; + phone_category = "LV522 Chances Claim"; + phone_color = "red"; + phone_id = "Colony Private Casino"; + pixel_y = -6 + }, /turf/open/floor/wood, /area/lv522/indoors/c_block/casino) "xfW" = ( @@ -53751,12 +60747,26 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) +"xgl" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/north_command_centre) "xgA" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/c_block/bridge) +"xgE" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "xgH" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -53862,12 +60872,6 @@ icon_state = "32" }, /area/lv522/landing_zone_forecon/UD6_Typhoon) -"xig" = ( -/obj/structure/closet/crate, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/indoors/lone_buildings/storage_blocks) "xiu" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -53889,14 +60893,11 @@ }, /area/lv522/indoors/a_block/dorms) "xiY" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/floor/corsat{ - dir = 9; - icon_state = "brown" + icon_state = "squares" }, -/area/lv522/atmos/north_command_centre) +/area/lv522/atmos/east_reactor/west) "xje" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -53947,12 +60948,9 @@ }, /area/lv522/indoors/b_block/bar) "xjU" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/item/prop/alien/hugger, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/obj/structure/closet/firecloset/full, +/turf/open/floor/strata{ + icon_state = "blue1" }, /area/lv522/outdoors/colony_streets/windbreaker/observation) "xjY" = ( @@ -53986,9 +60984,7 @@ dir = 8; pixel_y = -5 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "xkr" = ( /obj/effect/landmark/objective_landmark/medium, @@ -54031,7 +61027,7 @@ /area/lv522/indoors/a_block/dorms) "xly" = ( /obj/structure/cargo_container/grant/rightmid, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "xlI" = ( /turf/open/floor/shiva{ @@ -54063,6 +61059,10 @@ }, /turf/open/floor/carpet, /area/lv522/indoors/c_block/garage) +"xlU" = ( +/obj/item/prop/colony/used_flare, +/turf/open/asphalt/cement, +/area/lv522/outdoors/colony_streets/north_street) "xlV" = ( /obj/structure/surface/table/almayer, /obj/item/device/flashlight/lamp, @@ -54113,6 +61113,10 @@ icon_state = "whiteyellowfull" }, /area/lv522/indoors/a_block/corpo) +"xmT" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat, +/area/lv522/atmos/west_reactor) "xni" = ( /obj/structure/bed/chair{ dir = 1 @@ -54204,6 +61208,18 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/corpo) +"xnX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/obj/structure/platform_decoration{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "xoj" = ( /obj/structure/largecrate/random/barrel/red, /obj/effect/decal/cleanable/dirt, @@ -54211,11 +61227,18 @@ icon_state = "floor_plate" }, /area/lv522/indoors/lone_buildings/storage_blocks) -"xpg" = ( -/obj/structure/prop/server_equipment/yutani_server, -/turf/open/floor/prison{ - icon_state = "floor_plate" +"xoC" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 2; + name = "\improper A-Block - Colony Operations Centre Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" }, +/area/lv522/indoors/a_block/hallway) +"xpg" = ( +/turf/closed/wall/strata_outpost/reinforced, /area/lv522/outdoors/nw_rockies) "xpu" = ( /obj/structure/platform, @@ -54231,7 +61254,7 @@ dir = 1; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "xpX" = ( /obj/structure/barricade/deployable{ @@ -54318,21 +61341,27 @@ /obj/structure/bed/sofa/south/grey/left, /turf/open/floor/wood, /area/lv522/indoors/a_block/executive) -"xsi" = ( -/obj/structure/machinery/door/airlock/almayer/generic, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/c_block/garage) "xsq" = ( /obj/structure/machinery/landinglight/ds2{ dir = 8 }, /turf/open/floor/plating, /area/lv522/landing_zone_2) +"xsE" = ( +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform, +/obj/structure/platform_decoration{ + dir = 6 + }, +/turf/open/gm/river, +/area/lv522/atmos/sewer) +"xsN" = ( +/obj/structure/largecrate/random/barrel, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "xtb" = ( /turf/closed/wall/strata_outpost, /area/lv522/indoors/a_block/fitness) @@ -54360,13 +61389,11 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) -"xto" = ( -/obj/item/tool/shovel/etool, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk/prison, -/area/lv522/indoors/b_block/bridge) +"xtH" = ( +/obj/effect/spawner/gibspawner/human, +/obj/item/device/defibrillator/compact, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/w_rockies) "xtO" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -54398,6 +61425,28 @@ icon_state = "kitchen" }, /area/lv522/indoors/b_block/bar) +"xuD" = ( +/obj/structure/surface/table/almayer, +/obj/item/paper_bin/wy{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/device/flashlight/lamp{ + pixel_x = -8; + pixel_y = 10 + }, +/obj/item/tool/pen, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) +"xuQ" = ( +/obj/structure/largecrate/random/secure, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) "xuU" = ( /turf/open/floor/corsat{ dir = 9; @@ -54411,6 +61460,19 @@ icon_state = "floor_marked" }, /area/lv522/outdoors/colony_streets/north_west_street) +"xvj" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block - Colony Operations Centre Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "LV522CIC_1"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/admin) "xvl" = ( /turf/closed/wall/strata_outpost, /area/lv522/indoors/c_block/bridge) @@ -54419,6 +61481,18 @@ /obj/effect/spider/spiderling/nogrow, /turf/open/floor/prison, /area/lv522/indoors/c_block/t_comm) +"xvy" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/fancy/cigarettes/wypacket{ + pixel_x = 5; + pixel_y = 6 + }, +/obj/item/clothing/suit/storage/jacket/marine/corporate, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/lv522/indoors/a_block/corpo/glass) "xvB" = ( /obj/structure/window/framed/strata/reinforced, /turf/open/floor/corsat{ @@ -54462,8 +61536,18 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/hydro) +"xwK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/item/stack/sandbags/small_stack, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "xwO" = ( -/obj/structure/cargo_container/watatsumi/leftmid, +/obj/structure/cargo_container/seegson/left, /turf/open/floor/prison, /area/lv522/outdoors/colony_streets/north_west_street) "xwZ" = ( @@ -54484,7 +61568,7 @@ pixel_x = -7; pixel_y = 27 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "xxq" = ( /turf/open/asphalt/cement{ @@ -54504,17 +61588,8 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/hallway) -"xxz" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 6; - pixel_x = 6; - pixel_y = 6 - }, -/obj/structure/largecrate/random, -/turf/open/floor/plating, -/area/lv522/indoors/c_block/mining) "xxJ" = ( -/obj/structure/cargo_container/watatsumi/rightmid, +/obj/structure/cargo_container/seegson/mid, /obj/effect/decal/warning_stripes{ icon_state = "E"; pixel_x = 1 @@ -54530,14 +61605,23 @@ /turf/open/floor/prison, /area/lv522/indoors/a_block/admin) "xxV" = ( -/obj/structure/cargo_container/watatsumi/right, +/obj/structure/cargo_container/seegson/right, /turf/open/asphalt/cement{ icon_state = "cement1" }, /area/lv522/outdoors/colony_streets/north_west_street) +"xxW" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/cargo_intake) "xyf" = ( /obj/structure/cargo_container/kelland/left, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "xyi" = ( /obj/structure/closet/emcloset, @@ -54552,6 +61636,11 @@ icon_state = "darkyellowfull2" }, /area/lv522/indoors/lone_buildings/outdoor_bot) +"xyC" = ( +/obj/structure/machinery/landinglight/ds2/delaythree, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/landing_zone_2) "xyL" = ( /obj/structure/window/framed/strata/reinforced, /turf/open/floor/corsat{ @@ -54563,6 +61652,16 @@ icon_state = "cement1" }, /area/lv522/outdoors/colony_streets/central_streets) +"xzj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/lv522/indoors/lone_buildings/engineering) "xzn" = ( /turf/open/floor/prison, /area/lv522/atmos/outdoor) @@ -54594,7 +61693,7 @@ dir = 5; icon_state = "p_stair_full" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "xzV" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -54675,6 +61774,19 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security) +"xBi" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper A-Block Corporate Office Airlock"; + req_access_txt = "100" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/corpo/glass) "xBo" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 1 @@ -54687,20 +61799,13 @@ /turf/open/floor/prison, /area/lv522/indoors/c_block/t_comm) "xBL" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - name = "overhead pipe"; - pixel_x = -10; - pixel_y = -6 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 1; - name = "overhead pipe"; - pixel_x = -8; - pixel_y = 15 +/turf/open/asphalt/cement{ + icon_state = "cement12" }, -/turf/open/floor/plating/plating_catwalk/prison, -/area/lv522/atmos/cargo_intake) +/area/lv522/outdoors/n_rockies) "xBS" = ( /obj/structure/stairs/perspective{ dir = 6; @@ -54729,6 +61834,12 @@ }, /turf/open/floor/carpet, /area/lv522/indoors/a_block/executive) +"xCS" = ( +/obj/structure/machinery/light, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "xCT" = ( /turf/open/floor/prison, /area/lv522/indoors/a_block/dorm_north) @@ -54749,8 +61860,11 @@ "xDt" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/prop/ice_colony/ground_wire, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) +"xDu" = ( +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/indoors/a_block/corpo/glass) "xDC" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 1; @@ -54824,6 +61938,13 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_west_street) +"xEk" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "brown" + }, +/area/lv522/atmos/cargo_intake) "xEp" = ( /obj/structure/cargo_container/kelland/right, /turf/open/floor/prison{ @@ -54839,9 +61960,13 @@ /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) "xED" = ( -/obj/effect/landmark/lv624/fog_blocker/short, -/turf/closed/wall/mineral/bone_resin, -/area/lv522/oob) +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Reactor_entry_1" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) "xEH" = ( /obj/structure/machinery/landinglight/ds1{ dir = 1 @@ -54851,9 +61976,24 @@ icon_state = "greenfull" }, /area/lv522/landing_zone_1) +"xFg" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/turf/open/asphalt/cement{ + icon_state = "cement1" + }, +/area/lv522/outdoors/colony_streets/north_street) "xFp" = ( /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/north_east_street) +"xFt" = ( +/obj/structure/pipes/standard/manifold/hidden/green, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor/south) "xFv" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -54874,6 +62014,16 @@ /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison, /area/lv522/indoors/c_block/casino) +"xFH" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "\improper A-Block Fitness Centre Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/fitness) "xGa" = ( /obj/effect/decal/cleanable/blood/xeno{ icon_state = "xgib3" @@ -54886,6 +62036,18 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_west_street) +"xGd" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Security Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Sec-Corpo-Bridge-Lockdown" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/security) "xGf" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, @@ -54895,7 +62057,7 @@ pixel_x = 13; pixel_y = 29 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) "xGC" = ( /obj/item/reagent_container/glass/bucket/janibucket, @@ -54904,17 +62066,22 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/mining) -"xHj" = ( -/obj/structure/prop/invuln/minecart_tracks, -/obj/structure/closet/crate/miningcar{ - layer = 3.1; - name = "\improper materials storage bin"; - pixel_y = 8 +"xGR" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/sheet/metal/medium_stack, -/turf/open/floor/prison, -/area/lv522/indoors/c_block/mining) +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/way_in_command_centre) +"xGX" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor/south) "xHr" = ( /obj/structure/pipes/vents/pump, /obj/structure/machinery/camera/autoname, @@ -54923,6 +62090,20 @@ }, /turf/open/floor/wood, /area/lv522/indoors/c_block/casino) +"xHz" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper Corporate Liaison Office " + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/corpo) +"xHO" = ( +/obj/structure/girder, +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/lv522/outdoors/colony_streets/north_street) "xIr" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -54955,13 +62136,21 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) -"xJB" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" +"xJg" = ( +/obj/structure/machinery/light, +/turf/open/floor/strata{ + icon_state = "blue1" }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/area/lv522/outdoors/colony_streets/windbreaker/observation) +"xJt" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/turf/open/floor/corsat{ + icon_state = "marked" }, +/area/lv522/atmos/way_in_command_centre) +"xJB" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/prison, /area/lv522/landing_zone_2/ceiling) "xJF" = ( /obj/structure/window_frame/strata, @@ -55001,19 +62190,26 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/admin) "xJX" = ( -/obj/item/tool/weldingtool, -/obj/effect/decal/cleanable/blood/oil, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/obj/effect/decal/cleanable/generic, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, /area/lv522/indoors/lone_buildings/engineering) "xKc" = ( -/obj/structure/largecrate/supply/supplies/mre, /obj/structure/barricade/handrail{ - dir = 4 + dir = 8 }, /obj/structure/barricade/handrail{ - dir = 8 + dir = 4 }, +/obj/structure/closet/crate/ammo, +/obj/item/ammo_magazine/m56d, +/obj/item/ammo_magazine/m56d, +/obj/item/device/m56d_gun, /turf/open/shuttle/dropship{ icon_state = "rasputin15" }, @@ -55041,6 +62237,14 @@ /obj/item/prop/alien/hugger, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) +"xLi" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "xLm" = ( /turf/open/floor/corsat{ icon_state = "plate" @@ -55069,6 +62273,15 @@ /obj/item/prop/alien/hugger, /turf/open/floor/prison, /area/lv522/outdoors/colony_streets/north_west_street) +"xLr" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/sewer) "xLU" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -55079,7 +62292,7 @@ /obj/structure/prop/invuln/ice_prefab{ dir = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "xMl" = ( /obj/structure/filingcabinet{ @@ -55108,6 +62321,13 @@ icon_state = "floor_plate" }, /area/lv522/indoors/b_block/bar) +"xME" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "browncorner" + }, +/area/lv522/atmos/east_reactor/south) "xMO" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, @@ -55141,6 +62361,13 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison, /area/lv522/indoors/b_block/hydro) +"xNt" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "xNu" = ( /obj/structure/platform_decoration{ dir = 8 @@ -55148,18 +62375,17 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) -"xNw" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 +"xNG" = ( +/obj/structure/machinery/computer/crew/colony{ + density = 0; + pixel_y = 16 }, -/turf/open/floor/corsat{ - icon_state = "marked" +/turf/open/floor/strata{ + icon_state = "blue1" }, -/area/lv522/indoors/a_block/hallway) +/area/lv522/outdoors/colony_streets/windbreaker/observation) "xNR" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ @@ -55253,11 +62479,7 @@ /turf/closed/shuttle/elevator, /area/lv522/indoors/c_block/mining) "xPH" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" - }, -/turf/open/auto_turf/shale/layer0, +/turf/open/floor/prison, /area/lv522/landing_zone_2/ceiling) "xPK" = ( /obj/structure/largecrate/random, @@ -55292,13 +62514,15 @@ /area/lv522/indoors/a_block/executive) "xPY" = ( /obj/structure/fence, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/lv522/atmos/outdoor) "xQc" = ( -/obj/structure/window/framed/corsat, -/turf/open/floor/corsat, +/turf/closed/wall/r_wall/biodome/biodome_unmeltable, /area/lv522/atmos/east_reactor/south) "xQi" = ( /obj/structure/closet/firecloset/full, @@ -55318,6 +62542,10 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/medical) +"xQq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/ship, +/area/lv522/atmos/way_in_command_centre) "xQw" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin{ @@ -55331,6 +62559,11 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/hallway) +"xQR" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "xRg" = ( /obj/structure/bed/chair/comfy{ dir = 1 @@ -55349,7 +62582,7 @@ /area/lv522/outdoors/colony_streets/north_street) "xRn" = ( /obj/item/clothing/head/hardhat, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "xRo" = ( /obj/structure/machinery/space_heater/radiator/red{ @@ -55417,15 +62650,6 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms/glass) -"xRI" = ( -/obj/structure/machinery/door/airlock/almayer/generic, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/c_block/t_comm) "xRK" = ( /turf/open/asphalt/cement{ icon_state = "cement2" @@ -55458,7 +62682,7 @@ /area/lv522/indoors/b_block/hydro) "xSv" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) "xSA" = ( /obj/structure/machinery/light{ @@ -55474,6 +62698,24 @@ /obj/structure/largecrate/random/barrel/green, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) +"xSE" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/lv522/atmos/way_in_command_centre) +"xSL" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/south) "xSN" = ( /turf/open/floor/corsat{ icon_state = "marked" @@ -55551,6 +62793,10 @@ icon_state = "floor_plate" }, /area/lv522/indoors/b_block/bar) +"xUq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat, +/area/lv522/atmos/reactor_garage) "xUx" = ( /turf/open/floor/corsat{ icon_state = "plate" @@ -55580,8 +62826,14 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_west_street) +"xVB" = ( +/obj/structure/machinery/deployable/barrier, +/turf/open/floor/shiva{ + icon_state = "radiator_tile2" + }, +/area/lv522/atmos/way_in_command_centre) "xVG" = ( /obj/structure/largecrate/random, /obj/effect/decal/warning_stripes{ @@ -55704,6 +62956,14 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/kitchen/glass) +"xXv" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) "xXz" = ( /obj/structure/foamed_metal, /obj/effect/decal/cleanable/dirt, @@ -55788,6 +63048,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/bridges/corpo) +"xZE" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/prison, +/area/lv522/atmos/way_in_command_centre) "xZL" = ( /obj/structure/machinery/conveyor{ dir = 5; @@ -55809,6 +63075,16 @@ }, /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/north_east_street) +"xZS" = ( +/obj/item/clothing/gloves/yellow, +/obj/structure/machinery/space_heater/radiator/red{ + pixel_y = 26 + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/lv522/indoors/lone_buildings/engineering) "yae" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin{ @@ -55828,10 +63104,20 @@ icon_state = "N"; pixel_y = 1 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) +"yai" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/lv522/atmos/east_reactor/south) "yaj" = ( -/turf/closed/wall/r_wall/biodome/biodome_unmeltable, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat, /area/lv522/atmos/east_reactor/south) "yak" = ( /obj/structure/machinery/portable_atmospherics/canister/empty/oxygen, @@ -55843,33 +63129,51 @@ }, /area/lv522/indoors/c_block/mining) "yar" = ( -/turf/open/floor/prison{ - dir = 4; - icon_state = "darkyellowfull2" - }, -/area/lv522/landing_zone_2/ceiling) -"yat" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "\improper Marshall Office Armory" +/obj/structure/fence, +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ +/turf/open/floor/strata{ dir = 4; - id = "Sec-Armoury-Lockdown" + icon_state = "floor3" }, +/area/lv522/landing_zone_2/ceiling) +"yaw" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/corsat{ icon_state = "marked" }, -/area/lv522/indoors/a_block/security) +/area/lv522/atmos/reactor_garage) +"yaC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/way_in_command_centre) "yaF" = ( /obj/effect/spawner/gibspawner/xeno, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) +"yaH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/lv522/atmos/sewer) "yba" = ( /obj/structure/largecrate/random{ layer = 2.9 @@ -55892,7 +63196,7 @@ /area/lv522/oob) "ybj" = ( /obj/item/prop/alien/hugger, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "ybt" = ( /obj/structure/surface/table/almayer, @@ -55905,7 +63209,7 @@ }, /area/lv522/indoors/a_block/security/glass) "ybz" = ( -/turf/closed/wall/shiva/prefabricated, +/turf/open/asphalt/cement, /area/lv522/landing_zone_2) "ybM" = ( /obj/structure/surface/table/reinforced/prison, @@ -55925,6 +63229,13 @@ icon_state = "marked" }, /area/lv522/indoors/lone_buildings/storage_blocks) +"ycc" = ( +/obj/structure/largecrate/random/barrel, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/lv522/landing_zone_2/ceiling) "yct" = ( /obj/structure/surface/rack, /obj/effect/decal/cleanable/dirt, @@ -55941,6 +63252,10 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/kitchen) +"ycw" = ( +/obj/structure/girder/reinforced, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_east_street) "ycE" = ( /turf/open/floor/carpet, /area/lv522/indoors/b_block/bar) @@ -55957,7 +63272,7 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 4 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "ycO" = ( /obj/structure/machinery/light, @@ -55967,9 +63282,13 @@ }, /area/lv522/indoors/b_block/bridge) "ycV" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, -/turf/open/floor/corsat, -/area/lv522/atmos/cargo_intake) +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/asphalt/cement{ + icon_state = "cement15" + }, +/area/lv522/outdoors/n_rockies) "ydb" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, @@ -55994,9 +63313,8 @@ }, /area/lv522/outdoors/colony_streets/north_west_street) "ydD" = ( -/obj/item/weapon/shield/riot, -/obj/item/weapon/classic_baton, -/obj/structure/surface/rack, +/obj/structure/surface/table/almayer, +/obj/item/ammo_box/magazine/shotgun/buckshot/empty, /turf/open/floor/prison{ icon_state = "darkredfull2" }, @@ -56040,6 +63358,11 @@ icon_state = "floor_marked" }, /area/lv522/outdoors/colony_streets/north_west_street) +"yeH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, +/turf/open/floor/prison, +/area/lv522/outdoors/colony_streets/windbreaker/observation) "yeM" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -56064,6 +63387,14 @@ "yfu" = ( /turf/open/floor/prison, /area/lv522/indoors/lone_buildings/storage_blocks) +"yfz" = ( +/obj/structure/largecrate/random/mini, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, +/area/lv522/landing_zone_2/ceiling) "yfH" = ( /obj/structure/window/framed/strata/reinforced, /turf/open/floor/plating, @@ -56111,6 +63442,13 @@ }, /turf/open/floor/prison, /area/lv522/indoors/c_block/casino) +"ygu" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "brown" + }, +/area/lv522/atmos/east_reactor/west) "ygw" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -56118,12 +63456,11 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/security) -"ygJ" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +"ygD" = ( /turf/open/floor/corsat{ icon_state = "marked" }, -/area/lv522/indoors/a_block/dorms) +/area/lv522/outdoors/colony_streets/windbreaker/observation) "yhi" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, @@ -56136,7 +63473,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "S" }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_street) "yhy" = ( /obj/structure/surface/table/reinforced/prison, @@ -56151,6 +63488,14 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/medical/glass) +"yhz" = ( +/obj/structure/window_frame/corsat, +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" + }, +/turf/open/floor/corsat, +/area/lv522/atmos/east_reactor/south) "yhG" = ( /obj/structure/bed/chair{ dir = 8 @@ -56181,7 +63526,10 @@ }, /area/lv522/indoors/a_block/dorms) "yim" = ( -/turf/open/auto_turf/shale/layer0, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "yiu" = ( /turf/open/floor/corsat{ @@ -56197,10 +63545,7 @@ }, /area/lv522/indoors/a_block/dorms) "yiM" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "yiZ" = ( /obj/structure/prop/vehicles/crawler{ @@ -56210,8 +63555,32 @@ pixel_x = 6; pixel_y = 6 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/east_central_street) +"yja" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Security Airlock"; + welded = 1 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/bridges/op_centre) +"yje" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/atmos/sewer) +"yjg" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor/glass/colony, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/atmos/east_reactor/south) "yjm" = ( /obj/structure/largecrate/random, /turf/open/asphalt/cement, @@ -56272,25 +63641,12 @@ icon_state = "radiator_tile2" }, /area/lv522/indoors/a_block/bridges/corpo) -"yjD" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/lv522/outdoors/colony_streets/north_street) "yjK" = ( /obj/structure/prop/ice_colony/ground_wire{ dir = 4 }, /obj/item/tool/weldingtool, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/south_east_street) "yjL" = ( /turf/open/floor/prison{ @@ -56403,6 +63759,15 @@ icon_state = "greenfull" }, /area/lv522/landing_zone_1/ceiling) +"yld" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/alien/resin/sticky, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/lv522/atmos/east_reactor/south) "ylm" = ( /turf/open/asphalt/cement{ icon_state = "cement12" @@ -56427,7 +63792,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/auto_turf/shale/layer0, +/turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/n_rockies) "ylY" = ( /obj/structure/pipes/standard/manifold/hidden/green, @@ -57391,10 +64756,10 @@ cpy cpy cpy cpy -cpy -cpy -cpy -cpy +dvO +orm +orm +wPL cpy cpy cpy @@ -57617,15 +64982,14 @@ cpy cpy cpy cpy +dvO +hJq +kiT +tfO +viE cpy cpy cpy -cpy -cpy -cpy -cpy -cpy -vtc auG auG cpy @@ -57636,6 +65000,7 @@ cpy cpy cpy cpy +cpy auG vtc vtc @@ -57844,25 +65209,25 @@ cpy cpy cpy cpy +hJq +qZf +wGH cpy -cpy -cpy -cpy -cpy +viE cpy cpy vtc vtc vtc vtc -vtc +cpy cpy cpy cpy auG auG vtc -jiW +vtc vtc vtc vtc @@ -58070,12 +65435,12 @@ cpy cpy cpy cpy +aVg +adl cpy cpy -cpy -cpy -cpy -cpy +pOK +rQL cpy auG vtc @@ -58083,13 +65448,13 @@ vtc vtc vtc vtc -vtc +cpy cpy vtc vtc vtc vtc -jiW +vtc vtc vtc vtc @@ -58297,11 +65662,11 @@ cpy cpy cpy cpy +aVg +tCa cpy -cpy -cpy -cpy -cpy +qIu +viE cpy cpy auG @@ -58310,13 +65675,13 @@ vtc vtc vtc vtc +rXr vtc vtc vtc vtc vtc -vtc -jiW +uWO uWO vtc vtc @@ -58333,7 +65698,7 @@ uWO vtc vtc auG -jiW +vtc cpy cpy cpy @@ -58524,26 +65889,26 @@ cpy cpy cpy cpy +aVg cpy +cJA cpy +viE cpy -cpy -cpy -cpy -vtc -vtc +jXp vtc vtc vtc vtc vtc vtc +rXr vtc uWO uWO uWO uWO -jiW +uWO uWO uWO vtc @@ -58560,11 +65925,11 @@ uWO uWO vtc vtc -jiW -auG -vtc vtc -wms +auG +cpy +cpy +cpy rWS sRA sRA @@ -58730,10 +66095,6 @@ abo cpy cpy cpy -saC -cpy -cpy -cpy cpy cpy cpy @@ -58755,22 +66116,26 @@ cpy cpy cpy cpy +hGJ +kFP cpy +pOK +rQL cpy -vtc +sNk vtc vtc uWO gxN hIZ hIZ -hIZ +jiW hSi uWO uWO uWO uWO -jiW +uWO uWO uWO uWO @@ -58787,14 +66152,14 @@ uWO uWO uWO vtc -jiW vtc -jrT vtc -wnl -kVG -sRA -sRA +jrT +cpy +cpy +kBT +uiK +mZM sRA sRA rWS @@ -58814,8 +66179,8 @@ sfZ vcu kor rWS -gQN -gQN +uiK +uiK rWS ePl cpy @@ -58956,9 +66321,6 @@ cpy cpy cpy cpy -saC -saC -saC cpy cpy cpy @@ -58982,6 +66344,9 @@ cpy cpy cpy cpy +hGJ +mTE +rQL cpy cpy vtc @@ -58997,7 +66362,7 @@ hIZ hIZ mAW hIZ -cJA +hIZ hIZ hIZ hIZ @@ -59014,21 +66379,21 @@ jXT hIZ ivz hIZ -idH +hIZ hSi vtc -uWO -wnu -nvB -sRA -sRA +cpy +cpy +vZY +dcR +bQq sRA rWS pRK qmM qGQ qTh -qzp +rjP qzp nfq fDg @@ -59039,11 +66404,11 @@ sci sFS tcz vfl -gQN +uiK rWS rWS sRA -gQN +uiK rWS cpy cpy @@ -59182,11 +66547,11 @@ cpy cpy cpy cpy -saC -saC -saC -saC -saC +cpy +cpy +cpy +cpy +cpy tiQ tiQ tiQ @@ -59217,14 +66582,14 @@ uWO uWO gEB uWO -uWO +gOJ cpy lQS uWO uWO mwp uWO -jiW +uWO uWO dHR dJJ @@ -59241,22 +66606,22 @@ vtc vtc vtc vtc -jiW -lMH vtc +lMH vtc -jRY -noL -jTB +cpy +cpy +kLQ sRA +jHa sRA obe pRM qnk qHA qTO -rhB -qJl +kMT +eJQ rCp scv rCp @@ -59408,8 +66773,8 @@ cpy cpy cpy cpy -saC -saC +cpy +cpy tiQ tiQ tiQ @@ -59451,7 +66816,7 @@ mgJ mwp uWO uWO -jiW +aRH vPk vPk vPk @@ -59468,24 +66833,24 @@ dXa auG vtc vtc -jiW +vtc lMH jrT vtc -noL -noL -noL +cpy +cpy +cpy pps pxY pIu nbO qnV -rjP -rjP +eAa +eAa rig -rjP +eAa rDb -rjP +eAa sGT tdS tzA @@ -59493,8 +66858,8 @@ tSJ scw uEr vgM -gQN -gQN +uiK +uiK sRA sRA sRA @@ -59596,7 +66961,7 @@ sYH sYH nFj nFj -bhy +sYH gnf ryU wes @@ -59634,9 +66999,9 @@ cpy cpy cpy cpy -saC -saC -saC +cpy +tiQ +tiQ tiQ saC saC @@ -59672,13 +67037,13 @@ uWO gEB uWO uWO -uWO +rXr uWO uWO uWO uWO aRH -hJq +cKF bIJ bIJ bIJ @@ -59695,13 +67060,13 @@ jus eXO emm vtc -jiW +vtc lMH vtc uWO -noL -noL -noL +cpy +cpy +cpy ppF pys pIO @@ -59859,10 +67224,10 @@ cpy cpy cpy cpy -saC -saC -saC -saC +cpy +tiQ +tiQ +tiQ saC saC saC @@ -59871,10 +67236,10 @@ saC fTs fTs fTs +bSM fTs -fTs -fTs -fTs +dWE +dWE saC saC saC @@ -59883,7 +67248,7 @@ saC saC tiQ tiQ -cpy +tiQ cpy cpy cpy @@ -59897,9 +67262,9 @@ vtc uWO uWO gEB +idH uWO -uWO -uWO +rXr uWO uWO uWO @@ -59923,22 +67288,22 @@ fTi ksf kPO jYu -gEB -vtc -vtc -uWO -vtc -vtc +hvE +sLZ +sLZ +sLZ +cpy +cpy pqZ pyO qst gTM qqS qJw -rjP -rjP -rus -rjP +eAa +eAa +sVX +eAa rig sHg teL @@ -59950,7 +67315,7 @@ vhd sRA sRA sRA -rWS +rEP ien cpy cpy @@ -60085,20 +67450,20 @@ cpy cpy cpy cpy +tiQ +tiQ +tiQ saC saC saC saC saC saC -saC -saC -saC -uIW uIW uIW uIW uIW +dxU uIW uIW saC @@ -60112,7 +67477,7 @@ saC saC tiQ tiQ -cpy +tiQ cpy cpy cpy @@ -60125,7 +67490,7 @@ uWO uWO gEB uWO -uWO +ttf cpy cpy uWO @@ -60154,9 +67519,9 @@ lMH vtc vtc vtc -noL -noL -kgb +vtc +cpy +cpy rWS rWS pUc @@ -60174,10 +67539,10 @@ sdE sIx rFp vhC -gQN -gQN -sRA -rWS +uiK +uiK +jmN +ebe ien ien ien @@ -60228,9 +67593,9 @@ ien umf vXc vXc -ruU -ruU -ruU +yiM +yiM +yiM ien cpy cpy @@ -60311,6 +67676,8 @@ cpy cpy cpy cpy +tiQ +tiQ saC saC saC @@ -60318,18 +67685,16 @@ saC saC saC saC -saC -saC -uIW -uIW -uIW uIW uIW uIW uIW uIW +dxU uIW uIW +kkc +kkc saC saC saC @@ -60340,22 +67705,22 @@ saC saC saC tiQ +tiQ cpy cpy cpy cpy cpy -cpy +cKG auG vtc vtc -uWO gEB +uWO lfS cpy cpy cpy -cpy uWO uWO cpy @@ -60381,17 +67746,17 @@ lMH ibu vtc vtc -noL -noL -kib +vtc +cpy +cpy rWS sRA pUc qst qLz qVl -qzp -qzp +rjP +shh rFp sdE sIx @@ -60401,9 +67766,9 @@ xic qOi tbl vhJ -gQN -sRA +uiK sRA +dtU ien ien jTJ @@ -60431,7 +67796,7 @@ czW sjY ien lSg -hqr +pwR ylo ylo ylo @@ -60450,7 +67815,7 @@ ylo ylo ylo ylo -spo +ien ien vXc vXc @@ -60494,7 +67859,7 @@ sYH sYH sYH sYH -sYH +dos sYH sYH sYH @@ -60537,8 +67902,8 @@ cpy cpy cpy cpy -saC -saC +tiQ +tiQ saC saC saC @@ -60557,7 +67922,7 @@ uIW iJA uIW uIW -uIW +kkc saC saC saC @@ -60568,19 +67933,19 @@ saC saC saC tiQ +tiQ cpy cpy cpy cpy -cpy -xXV +lqb xXV xXV xXV gJD -acq -tiQ -cpy +xXV +nNL +xpg cpy cpy cpy @@ -60609,9 +67974,9 @@ jXT jXT jXT noL -noL -kib -sRA +cpy +cpy +cpy sRA sRA qtc @@ -60629,8 +67994,8 @@ sIK uEX vhO hPM -gQN -gQN +uiK +xtH ien sON ezH @@ -60660,7 +68025,7 @@ hJZ hJZ sus ylo -pwk +sCP tfZ wHi pYf @@ -60674,12 +68039,12 @@ hYf wHi jZe wky -xig +wPV tyl ylo -spo -umf -vXc +ien +ien +ien vXc vXc vXc @@ -60763,8 +68128,8 @@ bMX cpy cpy cpy -saC -saC +cpy +tiQ saC saC saC @@ -60784,11 +68149,11 @@ uIW uIW uIW uIW -uIW -uIW +kkc +kkc saC -uIW -uIW +kkc +kkc saC saC hnD @@ -60800,14 +68165,14 @@ tiQ tiQ tiQ tiQ -saC -khB -kqr -kxh +lqb +lqb +lqb +lqb gYM -kqr lqb -cpy +lqb +xpg cpy cpy cpy @@ -60838,7 +68203,7 @@ vtc lMH vtc wms -sRA +cpy sRA sRA sRA @@ -60900,12 +68265,12 @@ emt pck hYf erS -sau -xig +abe +ukT ofS ylo -rMF -jPv +ien +ien vXc vXc vXc @@ -60990,8 +68355,8 @@ bMX cpy cpy cpy -saC -saC +tiQ +tiQ saC saC saC @@ -61005,6 +68370,7 @@ uIW uIW uIW uIW +dxU uIW uIW uIW @@ -61014,8 +68380,7 @@ uIW uIW uIW uIW -uIW -uIW +dxU uIW uIW doP @@ -61024,17 +68389,17 @@ saC saC saC saC -saC -saC -saC -saC -fTS -fTS -fTS -hkT +tiQ +tiQ +tiQ +tiQ bzC +kBq +oiW +niU +ljq bzC -tiQ +xpg cpy cpy cpy @@ -61062,15 +68427,15 @@ vtc uWO uWO vtc -lMH -vtc -wnl +mnr +jXT +nYM kVG -rWS -sRA -sRA -sRA -sRA +bWt +wbt +wbt +wbt +kXe sRA sRA sRA @@ -61132,10 +68497,10 @@ wHi cAW ylo ylo -mcG +ien +vXc +vXc vXc -cpy -cpy umf vXc vXc @@ -61232,6 +68597,7 @@ uIW uIW uIW uIW +dxU uIW uIW uIW @@ -61241,8 +68607,7 @@ uIW uIW uIW uIW -uIW -uIW +dxU uIW uIW uIW @@ -61251,19 +68616,19 @@ hnD saC saC saC -saC -saC -saC -saC -tKb -xuU -hAk -kQR -fTS +tiQ +tiQ +tiQ +tiQ bzC -cpy +oiW +oiW +niU +oiW +bzC +xpg cKG -sDS +rtI ncS mWc cpy @@ -61274,9 +68639,9 @@ bQG bQG bQG cjE -uWO -uWO -uWO +vtc +vtc +vtc uWO uWO uWO @@ -61289,7 +68654,7 @@ vtc vtc uWO vtc -lMH +vtc vtc wnu nvB @@ -61297,7 +68662,7 @@ sRA sRA sRA sRA -sRA +kXo sRA cpy cpy @@ -61356,13 +68721,13 @@ isG vBM hYf wHi -vBM -yfu -iPD -spo +tIS +xQR +waj +ien +ien +vXc vXc -cpy -cpy umf umf vXc @@ -61459,7 +68824,7 @@ dnQ fzL fzL fzL -fzL +dMu fzL fzL fzL @@ -61469,7 +68834,7 @@ fzL ssn uIW uIW -iJA +pgy uIW uIW uIW @@ -61478,19 +68843,19 @@ hTh saC saC saC -saC -saC -saC -xuU -hAk -txs -xZw +tiQ +tiQ +tiQ +bzC +bzC +oiW +oiW niU -fTS +kBq bzC -cpy -sDS -eqE +xpg +pMT +rJI xmj mWc uWO @@ -61500,15 +68865,15 @@ uWO uWO uWO uWO +vtc +vtc +vtc uWO uWO uWO uWO -uWO -uWO -uWO -uWO -uWO +vtc +vtc uWO uWO auG @@ -61516,7 +68881,7 @@ vtc vtc uWO uWO -lMH +vtc vtc cpy cpy @@ -61524,7 +68889,7 @@ sRA rWS sRA sRA -rWS +iXI cpy cpy cpy @@ -61582,30 +68947,30 @@ bZd yfu yfu bZd -yfu -bZd -wHi -iPD -spo +xQR +vTH +gFy +nxu +ien +vXc vXc vXc -cpy cpy umf -ruU +yiM fXx nJv xVd -vir -vir -vir +vGP +usn +nJv nJv rCa rCa nJv -nJv -jSG -oWb +vzc +vzc +vzc xVd nJv hpq @@ -61685,65 +69050,65 @@ uIW hTh uPc uPc -uPc -kmd +kcb +kcb mTd mTd uPc uPc kmd -uPc +saC bco uIW uIW -uIW +dxU uIW uIW uIW uIW doP hnD +fop saC -saC -saC -saC -fTS -xeG -xZw -oiW -xZw -cIC +tiQ +tiQ bzC bzC -tiQ -sDS +bzC +oiW +ljq +niU +oiW +bzC +xpg +pPt eqE xmj mWc uWO +vtc +vtc +vtc uWO uWO uWO uWO +vtc uWO uWO uWO uWO uWO -uWO -uWO -uWO -uWO -uWO -uWO -uWO +vtc +vtc +vtc uWO uWO vtc vtc auG uWO -lMH +vtc vtc kBD cpy @@ -61751,7 +69116,7 @@ cpy sRA sRA rWS -rWS +iXI sRA cpy cpy @@ -61761,7 +69126,7 @@ sRA sRA sRA sRA -efH +uiK sRA sRA sRA @@ -61808,32 +69173,32 @@ yfu bZd bZd yfu -yfu -bZd -bZd -yfu -iPD -spo +tNS +gFy +gFy +rBV +iSx +ien vXc vXc cpy cpy umf -ruU +yiM fXx nJv -vir +nJv +vGP vGP -nfx qZJ +otM +wdj +qOa nJv -sJl -lIC -qWf bzL -jPO -jPO -nJv +qmA +qmA +vzc nJv hpq ofi @@ -61912,15 +69277,15 @@ uIW hTh uPc tKo -naC +wBG tiQ mTd mTd tKo naC tiQ -uPc -bco +saC +saC uIW uIW kkc @@ -61930,28 +69295,28 @@ uIW uIW uIW doP -saC -saC +fop +fop tiQ tiQ -eZq -xeG -xZw -xZw +bzC +bzC +bzC +nvd bgc mjs nvd bzC -ajm -sDS +xpg +pPt sDS xmj mWc uWO uWO -uWO -uWO -oTX +vtc +vtc +uxd uWO aNw uWO @@ -61962,15 +69327,15 @@ uWO uWO uWO uWO -uWO -uWO +vtc +vtc uWO uWO uWO vtc auG uWO -gEB +uWO vtc kBD cpy @@ -61978,17 +69343,17 @@ cpy sRA rWS rWS -sRA +kXo sRA sRA cpy cpy rWS sRA -efH -efH -efH -efH +uiK +uiK +uiK +uiK nCt sRA sRA @@ -62036,30 +69401,30 @@ yfu bZd bZd bZd -yfu -bZd -yfu -iPD -spo -vXc +bOX +gFy +tNS +xQR +ien +ien vXc cpy vXc vXc -ruU +yiM fAA nJv vir xJX -vGP -nfx -nJv +vHo +udM +nEY sQD nsd -nsd -nsd +nJv +cNO qmA -cjf +mdp vzc nJv gpB @@ -62133,23 +69498,23 @@ saC saC saC saC -uIW -uIW -uIW -hTh +saC +dxU +dxU +lcP tiQ tiQ tiQ tiQ -mTd -mTd +dpg +dpg tiQ tiQ tiQ tiQ -fDS -uIW -uIW +saC +saC +kkc kkc kkc uIW @@ -62158,19 +69523,19 @@ uIW uIW uIW uIW -saC -saC -tiQ -fmB -xeG -xZw -xZw -xrA +fop +fop +xmT +fTS +fTS +fTS +fTS +fTS hkT fTS bzC -ajm -sDS +xpg +xpg eqE xmj mWc @@ -62197,25 +69562,25 @@ uWO uWO vtc vtc -gEB +uWO vtc kBT -efH -efH -sRA -efH +uiK +uiK sRA +uiK sRA -efH -efH +bKq +goY +rsF rWS rWS sRA -efH -efH -efH -efH -efH +uiK +uiK +uiK +uiK +uiK cpy sRA sRA @@ -62264,29 +69629,29 @@ qpc nKj dGK qpc -snI -jub +she +egj ylo -spo +ien vXc vXc vXc vXc -ruU -ruU +yiM +yiM taj nJv -vir -nfx -vHo +cfd +vIy +vIy oTp -nJv +knT sEa -vIy -ukp +nky +nJv rZg -vIy -vIy +mwC +kIs vzc nJv gpB @@ -62373,31 +69738,31 @@ mTd tJk saQ tiQ -uPc -bco -uIW -uIW -uIW -uIW -uIW +saC +saC +saC +saC +kkc +kkc +kkc uIW uIW uIW uIW uIW -saC -saC -tiQ +fop +fop +xmT tKb jRZ -iOl -xZw -xrA +xuU +hAk +kyb hkT -tiQ -tiQ -tiQ -sDS +bzC +bzC +bzC +xpg eqE xmj mWc @@ -62424,25 +69789,25 @@ uWO uWO vtc vtc -mnr -hIZ +vtc +uWO prT kWD -pMg +tTr pUR uiK uiK uiK uiK ruH -uiK -uiK -uiK -uiK -uiK -uiK -uiK -uiK +goY +goY +goY +goY +goY +goY +goY +goY rsF sRA sRA @@ -62494,28 +69859,28 @@ hsz jnr ylo ylo -mcG +ien vXc vXc vXc -ruU -ruU -ruU +yiM +yiM +yiM fXx -xvQ -izp +nJv +nJv lHu -vIy +pwT fSv wbj rIn wOo ooh qOa -nsd +vIy pCT -nJv -nJv +jYy +xvQ hpq ofi tZh @@ -62601,20 +69966,20 @@ uPc uPc kmd uPc -bcP -fzL -fzL -fzL -fzL -fzL +saC +saC +saC +saC +saC +gFG fzL fzL fzL fzL -saC -saC -saC -tiQ +fop +fop +fop +xmT jqz fTS xeG @@ -62623,8 +69988,8 @@ kxm hkT fTS bzC -jPI -sDS +xpg +xpg mGH xmj mWc @@ -62655,18 +70020,18 @@ vtc uWO kLQ sRA -efH -efH +uiK +uiK hKE hKE jsM -efH +uiK hRu -efH -efH +uiK +uiK nCt -efH -efH +uiK +uiK tTr hKE hKE @@ -62720,30 +70085,30 @@ ylo ylo ylo ylo -rMF -sql -vXc +ien +ien +ien vXc -ruU -ruU -ruU -ruU -fXx -xvQ +yiM +yiM +yiM +yiM +fCU +kvq izp -lHu -vIy -fSv +qWf +icy +wdj +wdj wdj -cjf pCU -lIC -lIC +rwM +qOa vIy -lIC +eXU lKu -kvq -fCU +xvQ +hpq ofi max max @@ -62829,20 +70194,20 @@ vAi vAi fTO uIW +saC +saC +saC +saC +saC uIW uIW uIW uIW -uIW -uIW -uIW -uIW -uIW -saC -saC -saC -tiQ -tiQ +fop +fop +fop +xmT +fop fTS xeG xZw @@ -62850,8 +70215,8 @@ xrA kOE lgf bzC -ajm -sDS +xpg +pPC eqE xmj mWc @@ -62881,24 +70246,24 @@ vtc vtc uWO kNj -nzR -kXB -lqY -efH -efH -efH -efH +sRA +uiK +uiK +uiK +uiK +uiK +uiK hRu -efH -efH -efH -efH +uiK +uiK +uiK +uiK orE -efH -efH -efH +uiK +uiK +uiK hRu -efH +uiK sRA wnu sjY @@ -62948,26 +70313,26 @@ dbc xyN xyN sql -vXc -ruU -ruU -ruU -ruU -ruU -ruU +ien +yiM +yiM +yiM +yiM +yiM +yiM fXx xvQ sXM -vIy -vIy +ukp +xdD oPc +nEY +sQD +flC nJv -jeo -nsd -wOo -nsd +xZS rbc -cfd +vIy pXk xvQ hpq @@ -63058,18 +70423,18 @@ uPc uIW mTd giF -mTd -mTd -mTd -mTd -uIW -uIW -saC saC saC saC saC saC +uIW +fop +fop +fop +fop +chm +fop fTS xeG xZw @@ -63077,8 +70442,8 @@ xrF fTS fTS bzC -sxV -sDS +xpg +xpg sDS xmj mWc @@ -63107,25 +70472,25 @@ uWO uWO vtc vtc -ntL -lhb -lko -lvH -efH -efH -efH -efH +sRA +sRA +rWS +uiK +uiK +uiK +uiK +uiK hRu rGi -efH -efH -efH -efH -efH -efH +uiK +uiK +uiK +uiK +uiK +uiK sRA rtr -uiK +goY wbt wov wov @@ -63165,7 +70530,7 @@ rwE rwE rwE hWI -jPr +yiM vXc vXc vXc @@ -63175,23 +70540,23 @@ dbc umf umf vXc -ruU -ruU -ruU -ruU -ruU -ruU -ruU +ien +yiM +yiM +yiM +yiM +yiM +yiM fXx nJv xVd kfi ebR jkL -nJv +xzj pWW qLa -usn +nJv gZg gUA nMd @@ -63287,25 +70652,25 @@ mTd dWT dWT vAi -vAi -mTd -uIW -uIW -saC saC saC saC saC saC -fTS +fop +fop +fop +chm +chm +hLT xeG xZw xrA fTS -tiQ -tiQ -tiQ -dLh +bzC +bzC +bzC +xpg eqE xmj mWc @@ -63334,26 +70699,26 @@ uWO uWO uWO vtc -ntL +bBB nFO lhC lxj sRA -efH -efH -efH +uiK +uiK +uiK hRu -efH -efH -efH -efH +uiK +uiK +uiK +uiK keb -efH +uiK sRA kor vae -efH -efH +uiK +uiK sRA clY xfe @@ -63387,40 +70752,40 @@ ydA tbJ uIr jPv -ruU -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM +yiM +eYT eYT -amS kXc -rXb -rXb -rXb -oaj -rXb -rXb -rXb -rwE -rwE -rwE -rwE -jPr -ruU -ruU +vXc +vXc +vXc +dbc +vXc +vXc +ien +ien +ien +yiM +yiM +yiM +yiM +yiM fXx gbB nJv xvQ -xvQ -xvQ +gcX +kvq ivK wng -hpO +tCg ivK -kvq -xdD +xvQ +xvQ xvQ nJv kmq @@ -63515,15 +70880,15 @@ vAi dWT vAi vAi -mTd -uIW -uIW -uIW saC saC saC saC saC +fop +chm +chm +chm saC kih uQI @@ -63531,8 +70896,8 @@ pLj kOJ lhD bzC -uzk -sDS +xpg +xpg eqE hQh mWc @@ -63557,31 +70922,31 @@ uWO uWO mWc uWO -uWO +vtc uWO uWO uWO kRf lhb -llc -lBE +lhb +ckK sRA sRA -efH -efH +uiK +uiK hRu -efH -efH -efH -efH +uiK +uiK +uiK +uiK nCt sRA asn sRA iWo -efH -efH -efH +uiK +uiK +uiK wKj xfr clY @@ -63609,34 +70974,34 @@ nLm nLm nLm eBA -jNk +lmI nLm nLm nLm rMF jPv -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM arP -ruU -ruU +yiM +yiM puY vXc vXc dbc vXc vXc -ruU -ruU -ruU -ruU -ruU yiM -ruU -ruU -ruU +ien +yiM +yiM +yiM +yiM +yiM +yiM +yiM pUv xyN xyN @@ -63744,12 +71109,12 @@ bXq vAi mTd uIW -uIW -uIW -saC saC saC saC +chm +chm +chm tiQ saC kiD @@ -63758,8 +71123,8 @@ tCh kOQ lhD bzC -sxV -sDS +xpg +pPt sDS ncS sGt @@ -63783,32 +71148,32 @@ uWO iTW uWO mWc -uWO -uWO -uWO +vtc +vtc +vtc uWO uWO kSR -llc lBE -rWS +lBE +oOD rWS sRA sRA -efH +uiK hRu -efH -efH +uiK +uiK orE sRA sRA sRA -efH -efH +uiK +uiK viN rGi -efH -efH +uiK +uiK hJZ jGh xyf @@ -63842,29 +71207,29 @@ jOr nLm nLm spo -ruU -ruU -ruU -ruU -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM +yiM +yiM +yiM +yiM vXc vXc dbc vXc -ruU -qFP -qQi -qQi -arP -ruU yiM -ruU -ruU -ruU -qFP +yiM +ien +yiM +yiM +yiM +yiM +yiM +yiM +yiM +dwd qQi qQi puY @@ -63972,22 +71337,22 @@ vAi mTd uIW uIW -uIW saC saC saC +chm saC tiQ saC -isu -mdZ +oJS +oJS tCh isu lhD bzC -sxV -sDS -eqE +xpg +xpg +rJI ncS sGt uWO @@ -64011,29 +71376,29 @@ uWO gcY nkv uWO -uWO -uWO +vtc +vtc uWO uWO kTn -efH -sRA -rWS +fiB +cwN +cJm rWS rWS kQW wbt rvh -efH -efH +uiK +uiK rWS asn sRA -efH -efH +uiK +uiK asn -efH -efH +uiK +uiK sRA ien ien @@ -64069,11 +71434,11 @@ jfZ ftA nLm spo -ruU -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM +yiM wdy iPR iPR @@ -64082,12 +71447,12 @@ iPR dbc jPv vXc -vXc -ruU -ruU -ruU -ruU -pxQ +ien +ien +ien +yiM +yiM +pWR rwE rwE rwE @@ -64206,15 +71571,15 @@ saC saC tiQ tiQ -isu -kQw -gCV -isu -tiQ -tiQ -tiQ -sDS -eqE +oJS +oJS +oJS +oJS +bzC +bzC +bzC +xpg +rJI bkE sGt uWO @@ -64239,12 +71604,12 @@ iod uWO uWO uWO -uWO +vtc uWO uWO kUJ -rWS -sRA +mDw +cqe ien sRA sRA @@ -64257,10 +71622,10 @@ asn asn ien asn -efH +uiK ien -efH -efH +uiK +uiK ien ien ien @@ -64285,7 +71650,7 @@ clY sjY sjY oNQ -ltI +tgn vJT uOs tUM @@ -64294,12 +71659,12 @@ uOs tUM uOs kcS -ltI +tgn spo -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM wdy gbB nLm @@ -64310,17 +71675,17 @@ nLm rMF jPv vXc -vXc -ruU -ruU -ruU +ien +yiM +yiM +yiM +wsY +yiM +yiM +yiM +yiM +yiM yiM -ruU -ruU -ruU -ruU -ruU -ruU vXc vXc wdy @@ -64393,7 +71758,7 @@ bMX (36,1,1) = {" bMX tiQ -saC +tiQ saC saC saC @@ -64425,25 +71790,25 @@ uIW uIW uIW uIW -uIW -tiQ -tiQ +saC +saC +saC saC saC tiQ tiQ tiQ -isu -irx -irx -isu -tiQ -tiQ +oJS +oJS +oJS +oJS +bzC +bzC xpg -dJn -dJn +xpg +rLB bkE -mWc +wEz uWO uWO bdX @@ -64537,16 +71902,16 @@ nLm nLm rVa jPv +ien vXc vXc -vXc -ruU yiM -ruU -ruU -ruU -ruU -ruU +wsY +yiM +yiM +yiM +yiM +yiM vXc vXc wdy @@ -64620,7 +71985,7 @@ bMX (37,1,1) = {" bMX cpy -saC +tiQ saC saC saC @@ -64651,24 +72016,24 @@ fTs fTs fTs fTs -fTs -fTs -fTs -tiQ -tiQ +eLV +saC +saC +saC +saC saC tiQ jqz tiQ isu -fTS -fTS -isu -tiQ -tiQ -tiQ -sDS -eqE +oJS +oJS +oJS +bzC +bzC +bzC +xpg +rJI bkE mWc uWO @@ -64763,16 +72128,16 @@ wan wEQ nLm nLm -rMF -jPv -vXc +ien +ien +ien vXc umf xTV umf -ruU -ruU -ruU +yiM +yiM +yiM vXc vXc wdy @@ -64878,23 +72243,23 @@ uIW uIW uIW uIW -uIW -uIW -uIW -dnQ -fGJ +eLV +eLV +saC +saC +saC saC tiQ xZL jSR pyo xuU -kyb -isu -fTS +oJS +oJS +oJS bzC -ajm -sDS +xpg +xpg eqE ncS mWc @@ -64934,11 +72299,11 @@ slO hJZ hJZ hJZ -hJZ -hJZ -hJZ -hJZ -hJZ +uAb +lsG +lsG +lsG +qDl clY vjG kCJ @@ -64971,7 +72336,7 @@ nLm nLm pMd eBA -dUr +kNY pMd nLm nLm @@ -64991,14 +72356,14 @@ uDP kDH nLm nLm -spo +ien vXc vXc vXc wYa vXc vXc -ruU +yiM vXc umf wdy @@ -65097,20 +72462,20 @@ mTd tKo naC tiQ -uPc +wVf nDz uIW uIW uIW -saC -uIW -iJA -uIW -uIW +eLV uIW -hTh -vAi -vAi +eLV +eLV +eLV +eLV +saC +saC +saC tiQ jsy loD @@ -65118,10 +72483,10 @@ lSs uLk mwf kOU -fTS +oJS bzC -ajm -sDS +xpg +pPC sDS ncS mWc @@ -65145,7 +72510,7 @@ eaE uWO uWO ilK -uWO +vtc uWO uWO uWO @@ -65161,11 +72526,11 @@ slO hJZ clY hJZ -hJZ +rmX xkO xkO xkO -clY +lUh clY clY oTd @@ -65218,12 +72583,12 @@ fjP vJT pfV nLm -spo +ien vXc -cpy vXc -wYa vXc +wYa +cpy vXc vXc vXc @@ -65302,15 +72667,15 @@ bMX bMX cpy tiQ -saC +tiQ saC saC ssn uIW iJA uIW -uIW -uIW +chm +chm saC uIW uIW @@ -65325,18 +72690,18 @@ tiQ tiQ tiQ tiQ -nDz -uIW -uIW -uIW -saC +dgI +dxU +dxU +smK +eLV +eLV +eLV +eLV +eLV +eLV saC saC -uIW -uIW -dnQ -fGJ -vAi tiQ tiQ isu @@ -65345,10 +72710,10 @@ xZw xZw xrA fTS -fTS +oJS bzC -ajm -sDS +xpg +xpg eqE xmj mWc @@ -65371,9 +72736,9 @@ eaE eaE uWO uWO -uWO -uWO -uWO +vtc +vtc +vtc pit ien ien @@ -65388,11 +72753,11 @@ slO hJZ clY clY -hJZ +rmX xkO sKj xkO -clY +lUh clY clY srQ @@ -65421,14 +72786,14 @@ iIK uUB lLl gcv -skn +iPy xIr pQA jhl sPk dnM pxS -hnX +hAd eIk cDH cDH @@ -65444,17 +72809,17 @@ tUM uOs uOs vJT -pMd -spo -afn +nLm +ien +ien +vXc +jue +wYa cpy cpy -wYa vXc vXc -vXc -vXc -ruU +yiM fXx rMF vVs @@ -65529,41 +72894,41 @@ bMX bMX cpy cpy +tiQ saC -saC -vAi -bcP -ssn -uIW -uIW -uIW +dWT +bIY +dwG +dxU +chm +chm saC saC saC uIW hTh -uPc +wTv tJk saQ tiQ mTd mTd tJk -saQ +rUX tiQ fwo nDz uIW uIW -saC -saC -saC +eLV +eLV +eLV uIW uIW -dnQ -fGJ -vAi -vAi +eLV +eLV +saC +saC tiQ xZL pyo @@ -65571,11 +72936,11 @@ iWZ xZw xZw xrA -fTS -tiQ -tiQ -tiQ -dLh +ldi +bzC +bzC +bzC +xpg eqE xmj mWc @@ -65598,9 +72963,9 @@ jvf eaE uWO uWO -uWO -uWO -uWO +vtc +vtc +vtc uWO uWO ien @@ -65615,11 +72980,11 @@ eUt hJZ hJZ clY -hJZ +rmX xkO xWx xkO -clY +lUh clY clY oNQ @@ -65671,17 +73036,17 @@ uOs uOs lsD wyE -pMd -spo +nLm +ien +vXc +vXc upz -cpy -cpy tDd wLh -vXc -ruU -ruU -ruU +cpy +yiM +yiM +yiM fXx rMF vVs @@ -65758,41 +73123,41 @@ cpy cpy tiQ tiQ -vAi +dWT vAi bco uIW -uIW +chm saC saC saC saC uIW hTh -uPc +wTv uPc uPc kmd mTd mTd uPc -uPc -kmd +saC +saC uPc nDz uIW uIW uIW -saC +eLV uIW uIW uIW hTh -vAi -vAi +eLV +eLV tiQ tiQ -isu +hhu loD uEl xZw @@ -65801,8 +73166,8 @@ xrF kPG lgf bzC -sxV -dLh +xpg +xpg eqE xmj mWc @@ -65826,8 +73191,8 @@ eaE uWO uWO oTX -uWO -uWO +vtc +vtc uWO uWO ien @@ -65842,11 +73207,11 @@ eUt clY hJZ hJZ -hJZ +uGd sek -hJZ +fuw sek -clY +qma clY hJZ oNQ @@ -65899,16 +73264,16 @@ vJT whn tek nLm -spo +ien +vXc +vXc vXc wth -cpy -vaZ wYa -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM fXx mBF mBF @@ -65993,10 +73358,10 @@ uIW saC saC saC -uIW -uIW -doP -fTs +chm +kkc +mjq +dWE dWE fTs fTs @@ -66004,13 +73369,13 @@ fTs fTs fTs fTs -fTs +bSM fTs fGH uIW uIW uIW -uIW +dxU uIW uIW dnQ @@ -66018,18 +73383,18 @@ fGJ vAi tiQ tiQ -xZL -pyo -iWZ -xZw +kgC +gCV +kfu xZw xZw -xrA +kQw +pRT kQK fTS bzC -ajm -sDS +xpg +pPt sDS xmj mWc @@ -66054,7 +73419,7 @@ uWO iTW uWO aNw -uWO +vtc uWO ien ien @@ -66083,7 +73448,7 @@ wKR qFE wcR hJZ -slO +eUt qQh nLm nLm @@ -66126,16 +73491,16 @@ oDu nLm nLm nLm -spo +ien +ien +umf vXc -kyz -cpy vaZ wYa -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM fXx rMF vVs @@ -66213,16 +73578,15 @@ cpy cpy cpy tiQ -vAi +dWT vAi bcP ssn uIW saC -uIW -uIW -uIW -uIW +chm +chm +chm kkc kkc uIW @@ -66232,62 +73596,63 @@ uIW uIW uIW uIW +dxU uIW gmt uIW uIW iJA -uIW +dxU uIW dnQ fGJ vAi vAi tiQ -xZL -pyo -loD -uEl -xZw -xZw -xZw +fDS +gCV +gPQ +hry +kfF +kfF xrA -hkT +kPG +lER nCX bzC -ant -lUK +nDM +nDM jII aFA ylm -yim -yim -yim -yim +tfP +tfP +tfP +tfP bIe -yim -yim +tfP +tfP eaE eaE eaE -yim +tfP jsQ eaE fXS eaE -yim +tfP eaE -yim -yim +tfP +tfP oeX -yim -yim -yim -bgV +tfP +tfP +tfP +tfP ien -ydA -ydA -ydA +hJZ +hJZ +gHz vne ydA ydA @@ -66310,7 +73675,7 @@ iPu wBA wBA wBA -uQi +ldM oNQ nLm fcv @@ -66353,16 +73718,16 @@ fVB cxC rzG nLm -spo +ien vXc umf -cpy -vaZ +vXc +vXc wYa umf -ruU -ruU -ruU +yiM +yiM +yiM fXx rMF vVs @@ -66445,26 +73810,26 @@ vAi vAi bcP ssn -uIW -uIW -uIW -uIW -uIW -uIW +chm +chm +chm +chm +kkc +kkc uIW uIW uIW saC saC -uIW -uIW -uIW +kkc +kkc +kkc uIW gmt uIW uIW uIW -uIW +dxU dnQ fGJ vAi @@ -66472,22 +73837,22 @@ vAi tiQ tiQ isu -loD -uEl -xZw -xZw +gPQ +hry +kfF +kfF saC -xZw xrA -hkT -tiQ -tiQ -tiQ +rAL +bzC +bzC +bzC +bzC nDM jII aFA ylm -yim +tfP ylC qyG qyG @@ -66509,12 +73874,12 @@ qyG qyG qyG gMc -yim +tfP uSY -xtb -xtb -xtb -xtb +ien +pAp +hJZ +oNQ xtb xtb xtb @@ -66529,15 +73894,15 @@ xtb xtb xtb rvI -hJZ +clY hJZ hJZ hJZ slO hJZ hJZ -hJZ -hJZ +clY +clY oNQ nLm qZh @@ -66580,16 +73945,16 @@ bGL koj aMI nLm -spo +ien +vXc vXc vXc -cpy xLU pnE vXc umf -ruU -ruU +yiM +yiM fXx mBF mBF @@ -66649,7 +74014,7 @@ bPJ bPJ bPJ bPJ -pMc +aue wfP dnO bPJ @@ -66673,25 +74038,25 @@ vAi vAi bcP fzL -ssn -iJA -uIW -uIW -uIW -uIW -uIW +chm +chm +chm +chm +kkc +dxU +dxU saC saC uIW uIW -uIW +dxU uIW uIW gmt uIW uIW dnQ -fzL +dMu fGJ vAi vAi @@ -66701,26 +74066,26 @@ xZL pyo iWZ xZw -xZw +kfF saC saC -xZw xrA -hkT -fTS -irx -irx -irx +lrG +rUl +aCR +lqb +lqb +lqb lUK aFA ylm +tfP yim -rNM bou bcf -yim -yim -yim +tfP +tfP +tfP eaE erw eaE @@ -66731,24 +74096,24 @@ nZF nZF nZF nZF +tfP +tfP +tfP +tfP yim -yim -yim -yim -rNM -yim -hxu -xtb -daz +tfP +ien +ien +ien pAp -knW +oNQ xtb qtE qNM oiZ rod kvJ -rIa +uXZ seJ xtb myP @@ -66807,8 +74172,8 @@ sKH weR nLm nLm -spo -vXc +ien +ien vXc vXc wYa @@ -66816,7 +74181,7 @@ vXc vXc vXc vXc -ruU +yiM fXx rMF mBF @@ -66876,11 +74241,11 @@ kEl peM jba bPJ -mJs -wfP +edi +pXv wfP -jJF -sLT +pQq +nVr bPJ cpy cpy @@ -66900,10 +74265,10 @@ vAi bXq vAi vAi -bcP -ssn +chm +chm saC -uIW +chm uIW uIW uIW @@ -66911,7 +74276,7 @@ uIW uIW uIW eAg -eOn +cyO eOn eOn fsf @@ -66921,8 +74286,8 @@ fGJ saC tiQ fIQ -eam -eam +pEw +pEw tiQ isu xuU @@ -66931,22 +74296,22 @@ xZw rEV saC saC -xZw bKk +hAk kQR fTS -fTS -lrh -ddy +aCR +sWn +nbT lUK aFA ylm +tfP yim -rNM -yim -yim -yim -yim +tfP +tfP +tfP +tfP eaE eaE eDt @@ -66957,18 +74322,18 @@ eaE fXS eaE eaE -yim -yim +tfP +tfP eFT bcf +tfP yim -rNM -yim -hxu -xtb -wCy -wmk -xqd +tfP +tfP +ien +cwE +hJZ +oNQ xyL qxi oiZ @@ -67036,8 +74401,8 @@ qiJ nLm aiQ vXc -kBq vXc +qfm wYa vXc vXc @@ -67050,7 +74415,7 @@ mBF mBF mBF oPx -vzE +ncp mBF mBF mBF @@ -67093,7 +74458,7 @@ ofi max ofi ofi -max +ofi ofi ofi osN @@ -67104,10 +74469,10 @@ hTe jFl aQH mJs +czE wfP wfP -wfP -jJF +wcY bPJ bPJ cpy @@ -67130,7 +74495,7 @@ vAi vAi saC saC -uIW +chm uIW uIW uIW @@ -67149,9 +74514,9 @@ saC tiQ fUT uFG -uFG +nbD tiQ -isu +hlp xeG iYy xZw @@ -67168,12 +74533,12 @@ ddy lUK aFA ylm +tfP yim -rNM -yim -yim -yim -yim +tfP +tfP +tfP +tfP eaE eaE eDt @@ -67184,25 +74549,25 @@ gFp fXS jqa enS +tfP +tfP +tfP +tfP +tfP yim -yim -yim -yim -yim -rNM -yim -rxN -xtb -wCy -gvT -pVx +tfP +tfP +ien +clY +clY +dRK xtb bQl qOn qYc rpe bQl -rJz +ftD bQl xtb xWF @@ -67263,7 +74628,7 @@ wLN nLm qQM vXc -wth +nRs vXc wYa vXc @@ -67332,10 +74697,10 @@ sHd bPJ eeb wfP +ixV wfP wfP -wfP -wfP +uwe bPJ bPJ cpy @@ -67367,15 +74732,15 @@ uIW eQf gFG gFG -fzL -fGJ +gFG +uZf saC saC saC tiQ tiQ -eam -eam +pEw +pEw hOI tiQ isu @@ -67386,7 +74751,7 @@ xZw saC saC saC -xZw +mKQ kRp xWc rTh @@ -67394,13 +74759,13 @@ nWl dgJ aaX atV -bjT +wOu qyG rOf bIe -yim +tfP eFT -yim +tfP dEc eaE eFt @@ -67411,19 +74776,19 @@ eaE fXS hUZ eaE +tfP +tfP +tfP +tfP +pjJ yim -yim -yim -yim -yim -rNM -yim -sTr -vFS -pVx -xTs -pVx -vFS +tfP +ien +ien +ien +clY +bry +pJb xOb oiZ oiZ @@ -67431,7 +74796,7 @@ jBs oiZ xOb xOb -vFS +pJb xqd uEC xTs @@ -67439,7 +74804,7 @@ xTs uEC uEC pVx -vFS +pJb rZF tYZ kdy @@ -67447,7 +74812,7 @@ kdy kdy tMk lEF -ygJ +tgn vJT oot fjP @@ -67464,14 +74829,14 @@ ktx biY bNJ seG -mPQ +dfV osU uyP esa qvJ jDJ osU -doq +jsk enP dnM dnM @@ -67487,7 +74852,7 @@ dnM esa gYF kcS -ygJ +tgn qQM vXc wth @@ -67495,7 +74860,7 @@ vXc wYa vXc vXc -ruU +yiM wdy rMF mBF @@ -67558,7 +74923,7 @@ bPJ bPJ bPJ bPJ -wfP +rAM wfP wfP wfP @@ -67582,7 +74947,7 @@ vSJ vSJ vSJ cNV -tiQ +cNV saC saC saC @@ -67592,9 +74957,9 @@ bcP fzL fzL eTZ -vAi -vAi -vAi +dWT +dWT +dWT saC saC tiQ @@ -67610,10 +74975,10 @@ xeG iYy xZw xZw -xZw +mKQ saC -xZw -xZw +mKQ +mKQ uHn xZw xrA @@ -67621,35 +74986,35 @@ lrh ddy lUK aFA -ylm -yim -yim -yim -yim -yim +xBL +tfP +tfP +tfP +tfP +tfP bcf dEM dZM liD fXS fXS -yim +tfP fXS fXS jtu gSw -yim -yim -yim +tfP +tfP +tfP ylm +pjJ yim -wSH -qyG -rgd -uwk -cZN -pAN -uZO +tfP +tfP +ien +clY +clY +jDc uwk fvk tqU @@ -67706,7 +75071,7 @@ trj nLm nLm nLm -uOs +nDS uMM uOs fjP @@ -67720,8 +75085,8 @@ vXc wth vXc wYa -ruU -ruU +yiM +yiM wdy rMF mBF @@ -67789,7 +75154,7 @@ qxf wfP wfP wfP -wfP +pXv sRM bPJ cpy @@ -67809,15 +75174,15 @@ xho xho xho xho -tiQ +cNV saC saC saC tiQ dWT -vAi -bXq -vAi +bet +sHy +bet eUs tiQ tiQ @@ -67838,8 +75203,8 @@ iYy xZw xZw xZw -xZw -xZw +mKQ +mKQ xZw kRw udR @@ -67848,35 +75213,35 @@ lrh ddy lUK rnp -ylm -yim -yim -yim +xBL +tfP +tfP +tfP bIJ -yim -yim +tfP +tfP dYK eaE eaE bex eaE -yim +tfP eaE eaE eaE eaE eFT -yim +tfP bIJ ylm -yim -rNM +pjJ yim tfP -xtb -xqd -jLF -xqd +tfP +ien +sjY +clY +vWv xtb eAD dKC @@ -67945,9 +75310,9 @@ nLm qQM vXc puY -ruU yiM -ruU +wsY +yiM wdy gbB mBF @@ -68036,7 +75401,7 @@ yeS xho yeS xho -tiQ +cNV saC saC saC @@ -68066,22 +75431,22 @@ xZw xZw xZw xZw -xZw -rEV +kQw +iyl kRJ -fTS -fTS -lrh +aCR +aCR +lqb ddy wgn eZv -ylm -yim -yim -yim +xBL +tfP +tfP +tfP bIJ bIJ -yim +tfP abV abV eUf @@ -68092,18 +75457,18 @@ abV jmW ugu abV -yim +tfP bIJ bIJ ylm -yim -rNM -yim -hxu -xtb -xWF -pAW -xqd +pjJ +lCH +tfP +ien +ien +ien +sjY +hip xyL vht oiZ @@ -68171,10 +75536,10 @@ wan nLm aiQ vXc -ruU -ruU yiM -ruU +yiM +wsY +yiM fXx mBF mBF @@ -68240,10 +75605,10 @@ cpy cpy bPJ bPJ +gfs wfP wfP -wfP -jJF +gWc wfP bPJ cpy @@ -68263,7 +75628,7 @@ kwJ faZ kwJ xho -tiQ +cNV saC saC saC @@ -68279,7 +75644,7 @@ saC saC saC tiQ -gxM +dAf uFG xdF htX @@ -68287,28 +75652,28 @@ hDh jFa hDy iti -xeG +fKu iZg +hHj xZw xZw -mmj -mmj xZw xrA -hkT -fTS -irx -irx -irx +kPG +udU +aCR +lqb +lqb +lqb jUq sbm -ylm -yim +xBL +tfP bcf -yim -yim -yim -yim +tfP +tfP +tfP +tfP cpy inU cpy @@ -68316,21 +75681,21 @@ cpy gGx inU inU -yim -yim +tfP +pjJ inU inU inU inU bcU -yim -rNM -yim -hxu -xtb -psq -pCW -xqd +pjJ +lCH +tfP +tfP +ien +sjY +clY +oNQ xtb qyI mDX @@ -68398,10 +75763,10 @@ nLm nLm spo vXc -ruU -ruU yiM -ruU +yiM +wsY +yiM fXx rMF vVs @@ -68468,9 +75833,9 @@ cpy cpy bPJ bPJ -wfP -wfP -wfP +fVC +qxO +pwF bPJ bPJ cpy @@ -68490,7 +75855,7 @@ kwJ xho kwJ xho -tiQ +cNV saC saC saC @@ -68511,76 +75876,76 @@ gZd hjB iKC hDh -hON +dFY hDy -fTS -xeG +fBU +gat +gXR +hHj +xZw xZw xZw -jtf -jTb -kjU -mmj xrA -hkT -tiQ -tiQ -tiQ +rAL +bzC +bzC +bzC +bzC +nDM gWI inU -inU -bcU -yim -yim -yim -yim -yim +ycV +tfP +tfP +tfP +tfP +tfP cpy cpy cpy fgf cpy -yim +tfP hzA ihy -yim -yim -yim -yim -yim -yim -yim -yim -rNM -yim -hxu -xtb -xtb -pDG -xyL +tfP +tfP +pjJ +pjJ +pjJ +pjJ +pjJ +pjJ +lCH +tfP +tfP +ien +sjY +clY +oNQ xtb xtb xtb xyL -pDG +cmC xyL xtb xtb xtb xtb xtb -pVx +fZl uEC uEC uEC nZv xtb tvO -spe -vwi -vwi -vwi -vwi +jXQ +iKF +iKF +iKF +iKF tOv nLm fVB @@ -68624,11 +75989,11 @@ mNX aoH nLm spo -ruU -ruU -ruU yiM -ruU +yiM +yiM +wsY +yiM fXx rMF vVs @@ -68712,22 +76077,22 @@ cpy cpy cpy tiQ -xho +cNV kwJ xho kwJ -xho -tiQ +cNV +cNV saC saC saC saC saC -otQ -otQ -otQ -eVg -otQ +uqt +uqt +uqt +qvQ +saC saC saC saC @@ -68747,22 +76112,22 @@ xZw xZw xZw kkr -kkr -xrA -hkT +kUs +lrG +lWa fTS bzC -ant +nDM +nDM ylm +pjJ yim -yim -yim -yim -yim -yim -yim -yim -yim +tfP +tfP +tfP +tfP +tfP +tfP cpy cpy cpy @@ -68770,28 +76135,28 @@ cpy cpy hIp ijv -yim -yim -yim -inp -yim -yim -yim -yim -rNM -yim -hxu +tfP +tfP +pjJ +kcL +pjJ +pjJ +pjJ +pjJ +lCH +tfP +ien +ien +ien +clY +oNQ xtb xtb -cgB -pMT -rrN -qyM xtb -qYv +vSO cgB hwf -rrN +tJM qYv qYv qYv @@ -68804,10 +76169,10 @@ pVx xtb tvO fjr -ugV -ugV -ugV -ugV +fjr +fjr +fjr +fjr tPx nLm fVB @@ -68851,11 +76216,11 @@ vJT tsx nLm spo -ruU -ruU -ruU yiM -ruU +yiM +yiM +wsY +vXc fXx mBF mBF @@ -68867,7 +76232,7 @@ hMI pCg nAa pZV -mbG +ike wDy mMI mBF @@ -68924,7 +76289,7 @@ cpy bPJ bPJ wfP -wfP +ixV bPJ bPJ cpy @@ -68939,12 +76304,12 @@ cpy cpy cpy tiQ -xho +cNV yeS xho yeS -xho -tiQ +cNV +cNV saC saC tiQ @@ -68954,7 +76319,7 @@ ksm ksm ksm goK -saC +ixD saC tiQ tiQ @@ -68979,16 +76344,16 @@ kyK kSC lgf bzC -ant +nDM +pRh ylm -yim -yim -yim -yim -yim -yim -yim -yim +pjJ +lCH +tfP +tfP +tfP +tfP +tfP pjJ vjW cpy @@ -68996,24 +76361,24 @@ cpy cpy cpy cpy +tfP +tfP +tfP +tfP +pjJ +pjJ +pjJ +pjJ +tfP yim -yim -yim -yim -yim -yim -yim -yim -yim -rNM -yim -uSY -xtb +tfP +tfP +ien +clY +clY +oNQ xtb -kfF -pVx -roT -pVx +aYF qQp xqd xTs @@ -69034,7 +76399,7 @@ emH emH emH tNr -ugV +fjr tPx nLm nLm @@ -69078,11 +76443,11 @@ nLm nLm nLm spo -ruU -ruU -ruU yiM -ruU +yiM +yiM +wYa +vXc fXx rMF vVs @@ -69152,7 +76517,7 @@ cpy bPJ wfP wfP -wfP +ixV bPJ cpy bMX @@ -69166,12 +76531,12 @@ cpy cpy cpy tiQ -xho +cNV kwJ xho kwJ -xho -tiQ +cNV +cNV unt ifi gcn @@ -69206,16 +76571,16 @@ xrA hkT fTS bzC -ant +nDM +nDM ylm -yim -yim -yim -yim -yim -yim -yim -yim +pjJ +lCH +pjJ +tfP +pjJ +pjJ +tfP pjJ pjJ vjW @@ -69224,23 +76589,23 @@ cpy cpy vjW inp +tfP +tfP +tfP +tfP +pjJ +pjJ +tfP +tfP yim -yim -yim -yim -yim -yim -yim -yim -rNM -yim -hxu -xtb +tfP +tfP +ien +clY +clY +oNQ xtb -pVx -pVx -roT -uEC +mjW uEC uEC uEC @@ -69261,7 +76626,7 @@ xtb xtb xtb tEJ -ugV +fjr tPx nLm iJS @@ -69305,11 +76670,11 @@ ijB pPV nLm sFp -ruU -ruU -ruU yiM -ruU +yiM +vXc +wYa +vXc fXx rMF vVs @@ -69377,7 +76742,7 @@ cpy cpy cpy bPJ -jJF +ica wfP fvn bPJ @@ -69398,7 +76763,7 @@ kwJ xho kwJ faZ -tiQ +cNV xho dpj otQ @@ -69431,17 +76796,13 @@ klx xZw xrA kTd -tiQ -tiQ -tiQ +bzC +bzC +bzC +nDM ylm -yim -yim -yim -yim -yim -yim -yim +vjW +lCH pjJ pjJ pjJ @@ -69451,23 +76812,27 @@ pjJ pjJ pjJ pjJ -yim -yim -yim -yim +pjJ +pjJ +pjJ +pjJ +tfP +tfP +tfP +pjJ cpy +pjJ +pjJ +tfP yim -yim -yim -rNM -yim -hxu +tfP +ien +ien +ien +clY +oNQ xtb -ptc -xqd -pVx -vsG -qyM +soS qyM raQ raQ @@ -69488,7 +76853,7 @@ wRJ xmk xtb tvO -ugV +fjr tPx nLm kKc @@ -69532,11 +76897,11 @@ pSs hau nLm spo -ruU -ruU +yiM +yiM gAa uLF -ugi +vXc fXx mBF mBF @@ -69625,7 +76990,7 @@ kwJ xho kwJ xho -tiQ +cNV xho drS dNd @@ -69641,59 +77006,59 @@ otQ otQ fGN tiQ -gAJ +bvI hai xdF fXv hup -uFG +msp uFG hDy -fTS +qYk xeG xZw saC saC saC -xZw +mKQ xrA hkT fTS bzC -ant +nDM +nDM ylm -yim -yim -yim -yim -yim -yim -yim -bgV -sQu -sQu -sQu -oaa +vjW +eDS pjJ pjJ pjJ pjJ pjJ -yim -yim +pjJ +pjJ +pjJ +pjJ +pjJ +pjJ +pjJ +pjJ +pjJ +tfP +tfP cpy cpy cpy +pjJ +tfP yim -yim -rNM -yim -hxu -xyL -joe -xTs -vlq -vsG +tfP +tfP +ien +rzq +clY +oNQ +xtb rmt qdc raS @@ -69704,8 +77069,8 @@ uEC xTs tlz xtb -xqd -xTs +mfF +iYa pAW xTs vIb @@ -69715,7 +77080,7 @@ pVx rKt xtb tvO -ugV +fjr tPx nLm nLm @@ -69759,11 +77124,11 @@ nLm nLm nLm afX -ruU -ruU -tiJ +vXc yiM -ruU +tiJ +mAE +vXc fXx rMF uWI @@ -69852,7 +77217,7 @@ yeS xho yeS xho -tiQ +cNV hAr uCr otQ @@ -69880,47 +77245,47 @@ fTS xeG xZw saC -xZw saC -xZw +saC +mKQ xrA kQK fTS bzC -ant +nDM +pRh ylm -yim -yim -yim -yim -yim +vjW +eDS +pjJ +pjJ bgV sQu -gWI -tiQ -gWI -gWI -gWI +sQu +mjR +sQu +sQu +sQu sQu sQu sQu oaa pjJ -yim -yim -yim +pjJ +pjJ +pjJ cpy +pjJ +pjJ +tfP yim -yim -yim -rNM -yim -hxu -xyL +tfP +tfP +ien puV -xTs -vlq -oem +clY +oNQ +xyL qBe mqk hLo @@ -69931,18 +77296,18 @@ siT uEC xqd xtb -xqd -uEC +fnF +siT pAW xTs -xqd +vRv xtb joe uRx jLF xtb tvO -ugV +fjr tPx nLm tsv @@ -69986,11 +77351,11 @@ mPL mPL nLm tiC -ruU -ruU -ruU -mAR -rwE +vXc +vXc +yiM +tDd +rXb hNz qGf aio @@ -70001,7 +77366,7 @@ rAf rAf toF rlI -bXU +fLZ wCJ ghu cbp @@ -70035,7 +77400,7 @@ cpy max max yjT -oXV +qVo oDZ wvt vou @@ -70044,7 +77409,7 @@ lUf lmF aGQ tML -jjc +ttE wzH max cpy @@ -70058,7 +77423,7 @@ max osN bPJ oeN -bLA +rgS wfP hiL bPJ @@ -70079,7 +77444,7 @@ xho xho xho xho -tiQ +cNV eZY uCr otQ @@ -70105,49 +77470,49 @@ ibT ixf tLQ jbs -xWc -xWc -xWc -xWc -xWc -rTh -kUs +ikr +saC +saC +saC +mKQ +xrA +hkT nCX bzC -ant +nDM +nDM gWI sQu -sQu -sQu +msQ sQu sQu gWI -tiQ -tiQ -tiQ -tiQ -tiQ -tiQ -tiQ -tiQ -tiQ +iAv +bZB +iAv +iAv +iAv +iAv +iAv +iAv +iAv ylm pjJ +pjJ +pjJ +pjJ +pjJ +pjJ +tfP +tfP yim -yim -yim -yim -yim -yim -yim -rNM -yim -hxu +tfP +ien +ien +ien +clY +oNQ xyL -pwC -xTs -vlq -oem xPA igv hLo @@ -70157,19 +77522,19 @@ rLq siT xTs pVx -vFS -xqd +pJb +vIe uEC roT uEC xqd -vFS +pJb pVx gvT jLF xyL tvO -ugV +fjr xWL lfe lbg @@ -70215,9 +77580,9 @@ pMd ssl sDq faQ -ruU +yiM sPs -ruU +vXc tvn mBF mBF @@ -70284,8 +77649,8 @@ max max osN bPJ -awm -wfP +tXc +fJr wfP wfP bPJ @@ -70306,8 +77671,8 @@ vSJ vSJ vSJ cNV -tiQ -dcm +cNV +eGs dtr otQ xho @@ -70330,51 +77695,51 @@ hye hRd uFG hDy -fTS -xeG -xZw -uAm -xZw -xZw -xZw -xrF -hkT -tiQ -tiQ -tiQ -api -api -api -api -api -api -tiQ -tiQ -nqQ -tiQ -pgL -nqQ -dvO +xxW +dsc +rov saC -tjR -tiQ +saC +saC +kzc +lit +cyu +bzC +bzC +bzC +nDM +gWI +gWI +bSU +gWI +iAv +iAv +iAv +vZP +iAv +saC +saC +saC +saC +saC +iAv ylm +pjJ +pjJ +tfP +pjJ +pjJ +tfP +tfP +tfP yim -yim -yim -yim -yim -yim -yim -yim -rNM -yim -hxu +tfP +tfP +ien +clY +clY +pPm xtb -pwX -uEC -uEC -fKu xPA bID rSd @@ -70396,7 +77761,7 @@ jxz jLX xOQ xRk -vwi +iKF xWP yiH ukB @@ -70510,9 +77875,9 @@ max max max osN -pNa -awm -wfP +aQH +euT +fJr wfP bPJ bPJ @@ -70534,8 +77899,8 @@ xho xho xho cNV -dyl -dwG +eGs +otQ otQ xho uAd @@ -70549,59 +77914,59 @@ otQ otQ xho tiQ -gGq +pNc uFG qml uFG uFG -uFG +dRS hDy hDy fTS xeG jiY -uAm -xZw -xZw +saC +saC +saC xZw xrA hkT -fTS nCX -tiQ -jUY -jUY -jUY -jUY +bzC +iAv jUY -tiQ -tiQ -vDw -vDw -eai -eai -saC +smr +smr +kri +iAv +iAv +iAv +xzn +xzn +nrh +nrh saC saC tjR +tjR xPY ylm oeX +tfP +tfP +tfP +tfP +tfP +tfP +tfP yim -yim -yim -yim -yim -yim -yim -rNM -yim -hxu -xtb -pxN -uEC +tfP +uSY +ien +clY +clY pPm -fKu +xtb xPA hLo hLo @@ -70623,7 +77988,7 @@ uEC wmk xtb tvO -ugV +fjr tPx lfe ppy @@ -70649,7 +78014,7 @@ qDR dnM sPk pxS -doq +jsk fqD oFr lOi @@ -70668,9 +78033,9 @@ rHu pMd aWo mpN -ruU -tVv -tVv +vXc +grq +grq kqJ mAR wCR @@ -70739,9 +78104,9 @@ max osN bPJ cLB -esx +cJF wfP -iGD +gkH bPJ cpy bMX @@ -70761,19 +78126,19 @@ xho kwJ xho cNV -aqI +eGs uqt -otQ -xho -uAd +uqt +xgl +dwP saC saC saC saC saC -vDV -xho -xho +cdP +xgl +xgl hDy hDy hDy @@ -70786,31 +78151,31 @@ hDy fTS fTS xeG -uAm +ipB xZw -oiW +saC xZw xZw bKk -hkY -kyb -fTS -tiQ -lVg -fTS -fTS -fTS +kQR fTS -tiQ +bzC +iAv +iAv +sTr +sTr +lrr +iAv +iAv mWw nmK nrh -xzn +nrh xzn xzn fLS -saC xzn +hHd xPY ylm ylC @@ -70822,19 +78187,19 @@ qyG qyG qyG eeY -yim -rxN -xtb -pVx -uEC -pPt -qeJ -wOu -smr -smr -smr -tNT -rLB +tfP +ien +ien +ien +clY +oNQ +xyL +xPA +hLo +hLo +hLo +aiw +cgB siT uEC tlX @@ -70850,7 +78215,7 @@ pVx uEC xtb tvO -ugV +fjr tPx fSq geB @@ -70898,7 +78263,7 @@ tVv qgj tvq ftl -ruU +yiM rwB gBe fXx @@ -70966,7 +78331,7 @@ pAj fnA bPJ bPJ -fCb +aRB jJF bPJ bPJ @@ -70988,8 +78353,8 @@ uTj cBi xho cNV -dcB -uqt +eGs +otQ otQ xho uAd @@ -71009,52 +78374,52 @@ hkT fTS fTS fTS -fTS +glj fTS xuU txs -xZw +uHn xZw xZw tZs xZw xZw -uHn -xrA -fTS -fTS -fTS -fTS -fTS +mcG +aCR +bzC +iAv +iAv +tfW +tfW mBy -fTS -tiQ +iAv +iAv saC eYA -saC -xzn +akp +hHd mTo xkB xzn -saC xzn +hHd xPY ylm -rNM -yim yim +tfP +tfP cpy +tfP +tfP +tfP +tfP yim -yim -yim -yim -gTJ -piW -rgd -plb -cZN -uIO -qgx +pjJ +pjJ +ien +esw +clY +oNQ xtb qBc jZo @@ -71062,7 +78427,7 @@ rbb jZo rwK hzk -uEC +qGh uEC jXc xtb @@ -71077,7 +78442,7 @@ vmo pVx xtb tvO -ugV +fjr tPx nLm tTU @@ -71123,11 +78488,11 @@ nLm vBa ofy sPs -tVv -tVv -ruU -xly +grq +grq yiM +xly +wYa fXx rMF tSL @@ -71216,7 +78581,7 @@ oML xho cNV eGs -dwG +otQ otQ xho uAd @@ -71229,60 +78594,60 @@ oEw yeS oML fTS -uxf +lrh gIH hcV hkY hAk hAk hRj -ick +kfA ick iMS xWc -xWc +itp xWc xWc xWc krw -xWc +ahJ pRf -bKk -hAk -hAk -hAk -hAk -hAk -kyb -fTS saC +bzC +iAv +geP +jqL +jqL +rKz +wAB +iAv saC saC saC -xzn +hHd mTo mTo xzn +hHd xzn -xzn -xPY +jdv ylm -rNM yim +tfP cpy cpy cpy -yim -yim -yim +tfP +tfP +tfP yim pjJ -sTr -pnx -xqd -xTs -uEC -rJI +pjJ +ien +dWc +clY +oNQ +xyL xPA hLo hLo @@ -71304,7 +78669,7 @@ xyL xtb xtb tvO -ugV +fjr tPx nLm nLm @@ -71348,11 +78713,11 @@ rHu nLm nLm afX -ruU +vXc jrL qig -ruU -ruU +yiM +yiM twT voL rMF @@ -71361,7 +78726,7 @@ tSL ibW tSL tSL -jPd +dvn tSL rdz kTF @@ -71376,7 +78741,7 @@ tSL phn kzT xNR -dMo +nxJ hpq ofi ofi @@ -71442,7 +78807,7 @@ jJa gTw xho cNV -lxW +eGs dya otQ xho @@ -71463,53 +78828,53 @@ hlf tso tso hRG +kzc xZw xZw xZw +iGc xZw -rEV -xZw -xZw -saC -saC -xZw -uHn -rEV xZw xZw -uAm xZw -lWa -pRT +mKQ saC saC +bzC +iAv +wTV +hAD +lEZ +fNk +wAB +iAv saC saC -vZP +jPC xzn xkB xkB xzn xzn vZP -xPY +jdv ylm -rNM yim +tfP cpy cpy cpy cpy -yim -yim -pjJ -pjJ tfP +tfP +lCH +pjJ +ien +ien +ien +clY +oNQ xtb -pVx -xTs -xTs -rJI xPA hLo hLo @@ -71554,7 +78919,7 @@ nLm nLm nLm eBA -qbL +lmI nLm nLm nLm @@ -71575,12 +78940,12 @@ nLm nLm rMF sql -ruU -ruU +yiM +yiM sPw -ruU -ruU -ruU +yiM +vXc +vXc rOP tSL tSL @@ -71617,7 +78982,7 @@ fnA wIr wIr vLI -pSj +mpF wIr wIr kmq @@ -71648,7 +79013,7 @@ cpy cpy bPJ wfP -wfP +uwe sRM bPJ cpy @@ -71659,7 +79024,7 @@ bMX cpy cpy cpy -tiQ +cpy tiQ vDV uTj @@ -71669,7 +79034,7 @@ oML xho xho cNV -fcV +eGs dya otQ xho @@ -71683,60 +79048,60 @@ oEw fwX oML fTS -uxf +lrh gMy udR iKw udR udR udR -udR +xEk iyl iOl xZw -xZw -xZw -saC -saC -saC -xZw uHn xZw xZw xZw -uAm -xZw -xrA -fTS -nCX +mKQ saC saC -tjR -xzn -xzn +saC +bzC +iAv +eTn +gbo +bBJ +iuC +axS +iAv +saC +lqd xzn xzn xzn +hHd +hHd xzn xzn -xPY +jdv ylm -rNM yim +tfP cpy cpy cpy cpy -yim +tfP pjJ +lCH pjJ pjJ -hxu +ien +nBs +clY +oNQ xtb -pVx -xTs -xTs -rJI xPA wiz rwx @@ -71757,7 +79122,7 @@ xAO xAO xAO xyL -tvO +kxH ugV hNR xhL @@ -71803,10 +79168,10 @@ rMF sql vXc bMN -ruU -ruU +yiM +yiM pWR -rwE +rXb uHE oXp tSL @@ -71886,8 +79251,8 @@ bMX cpy cpy cpy +cpy tiQ -xho vDV kmz yeS @@ -71910,60 +79275,60 @@ fpH dOw gTw fTS -uxf +lrh gHF fTS hkT fTS fTS -oJS -oJS -oJS -iOG -jci -xZw -xZw saC saC saC -saC -mOl -hry -xZw +iOG +jci +uHn xZw xZw xZw -xrA saC saC saC saC +bzC +iAv +eTn +iEn +bBJ +iuC +kzG +iAv saC +saC +hHd xzn +hHd +hHd xzn xzn xzn -xzn -xzn -xzn -xPY +jdv ylm -rNM yim +tfP cpy cpy cpy cpy vjW pjJ +lCH pjJ pjJ -hxu +ien +hmM +clY +oNQ xtb -pVx -pDM -pPC -rJI xPA piE hLo @@ -71988,7 +79353,7 @@ tvO ugV hNR ugV -sSn +uOP yjm nLm lfe @@ -71997,10 +79362,10 @@ lfe nLm ahP wCC -ugV -ugV -ugV -ugV +fjr +rCV +fjr +fjr bPH dox tGl @@ -72012,9 +79377,9 @@ qGK qSk ofd spo -ruU -ruU -ruU +vXc +vXc +vXc mqC pwz dFg @@ -72030,10 +79395,10 @@ sql vXc vXc upz -ruU -ruU yiM -ruU +yiM +wsY +vXc fXx tSL tSL @@ -72100,7 +79465,7 @@ vDL wIr wIr bPJ -guh +xsN wfP wfP bPJ @@ -72113,16 +79478,16 @@ bMX cpy cpy cpy +cpy tiQ -xho -xiY -ote +vDV +uAd yeS yeS oML xho xho -otQ +uqt xho uTj ksm @@ -72132,10 +79497,10 @@ saC saC saC saC -jKu -xho -xho -dyl +gyK +xgl +xgl +xgl hDy hDy hDy @@ -72145,27 +79510,27 @@ hzq hDy hDy hDy -oJS -oJS -xeG -xZw -xZw -saC saC saC -saC -qpD +xeG uHn -oiW xZw xZw saC saC saC +qpD saC -tiQ -saC -xzn +bzC +iAv +gem +sjx +bBJ +iuC +jqL +iAv +saC +hHd nsv jxI jxI @@ -72183,14 +79548,14 @@ cpy cpy cpy pjJ +lCH pjJ -pjJ -hxu +ien +ien +ien +sjY +oNQ xyL -joe -pEp -pRh -rJI qBe sKz hLo @@ -72200,7 +79565,7 @@ kcw sjp ohP oZC -tDq +xFH oZC cZN rrN @@ -72216,18 +79581,18 @@ ugV hNR ugV ugV -sSn +vBL cHw cHw hhD -hhD +ppX hhD wCC ugV ugV kGX -ugV -ugV +fjr +fjr rZc dox tGl @@ -72239,13 +79604,13 @@ uMO rqs ofd spo -ruU +vXc laX dFH -ruU -ruU -ruU -ruU +vXc +vXc +vXc +vXc pUv xyN xyN @@ -72258,9 +79623,9 @@ vXc vXc upz vXc -ruU yiM -ruU +wsY +yiM fXx tSL tSL @@ -72320,15 +79685,15 @@ wIr vDL tog fTP -xto -gxe +xgH +oLa qzQ hhI vDL wIr wIr -guh -wfP +nRY +uwe wfP bPJ cpy @@ -72339,17 +79704,17 @@ bMX bMX cpy cpy +cpy +cpy tiQ -tiQ -xho -aEL -yeS +vDV +uAd yeS yeS epI cBi xho -otQ +uqt xho uAd yeS @@ -72362,7 +79727,7 @@ yeS jKu xho otQ -uqt +otQ dyl tiQ gNe @@ -72370,39 +79735,39 @@ uFG qml uFG uFG -uFG +msp hDy hDy -fTS -xeG -xZw -xZw -xZw saC +dsc +rov +kzc saC saC -hdR -hRG -xZw -xZw saC saC saC saC -tiQ -tiQ -tjR +bzC +iAv +eym +iEn +bBJ +iuC +jqL +iAv +lqd xzn sQN xkB xkB -xkB -xzn +wFA +hHd xzn xzn xPY ylm -yim +tfP cpy cpy cpy @@ -72410,14 +79775,14 @@ cpy cpy cpy cpy +lCH pjJ pjJ -hxu -xyL -joe -pEs -xTs -pVx +ien +fkD +clY +oNQ +xtb rmt bBt rcP @@ -72442,19 +79807,19 @@ tvO ugV hNR ugV +pOb ugV +fjr +fjr +fjr +fjr ugV ugV ugV +wft ugV ugV -ugV -ugV -ugV -ugV -ugV -ugV -ugV +fjr rZc dox tGl @@ -72466,14 +79831,14 @@ uMO rqs ofd spo -ruU +vXc rjn bVu -ruU -ruU -ruU -ruU -ruU +vXc +vXc +vXc +vXc +vXc vXc vXc vXc @@ -72486,8 +79851,8 @@ vXc upz vXc vXc +wsY yiM -ruU pUv rMF tSL @@ -72555,7 +79920,7 @@ hhI lBd wIr guh -wfP +bQA wfP bPJ cpy @@ -72566,17 +79931,17 @@ bMX bMX cpy cpy +cpy +cpy cpn -xho -xho aGg -dLs +dAm dXq ekt eoH eqU cJo -cRN +fsV cJo dAm dLs @@ -72584,7 +79949,7 @@ afA saC saC esB -dLs +sGF dLs fcW xho @@ -72600,36 +79965,36 @@ wyv uFG uFG hDy -fTS +qYk xeG -xZw +uHn xZw saC saC saC saC -kUF -ljd -lrG -rEV saC saC -saC -tiQ -tiQ -tiQ -xzn +bzC +iAv +geP +iEn +bBJ +iuC +eTn +iAv +hHd xzn sQN xkB mTo xkB ufA -xzn +hHd xzn xPY ylm -yim +tfP cpy cpy cpy @@ -72637,14 +80002,14 @@ cpy cpy vjW pjJ +lCH pjJ pjJ -hxu +ien +bHA +clY +oNQ xyL -xqd -pEv -xTs -pVx fwy fwy vmo @@ -72668,11 +80033,10 @@ xyL tvO ugV spe -hcX -vwi -vwi +uBs vwi vwi +gEx vwi vwi vwi @@ -72681,7 +80045,8 @@ vwi vwi vwi vwi -vpa +lqI +nQx rvx fZy hAg @@ -72693,7 +80058,7 @@ qGK rqs ofd spo -ruU +vXc qbI qlD qpz @@ -72714,10 +80079,10 @@ vXc pEA tpD tBQ -ruU -ruU +yiM +yiM fXx -tmA +pdq xNR wnM kzT @@ -72728,7 +80093,7 @@ qNl kzT wnM yfS -nFQ +jrE yfS wnM wnM @@ -72738,16 +80103,16 @@ kzT kzT kzT kDY -nue +lIy xNR yfS yfS kLO -gwg +cfz jmv tkf dgY -gwg +cfz cHb qzQ oLa @@ -72757,7 +80122,7 @@ tkf fTP fTP pCG -gwg +cfz jmv oLa oLa @@ -72770,7 +80135,7 @@ tkf tkf tkf dgY -gwg +cfz cHb oqp oLa @@ -72781,9 +80146,9 @@ qzQ hhI hLx wIr -hcG -wfP -wfP +oox +mzi +pXv bPJ cpy cpy @@ -72793,25 +80158,25 @@ bMX bMX cpy cpy +cpy +cpy cpn -xho -uTj -aGI -yeS +vDV +uAd yeS yeS oML cCC xho -otQ +uqt xho aut dOw ajw bRN -dLs +sGF euN -yeS +saC yeS jKu xho @@ -72820,7 +80185,7 @@ otQ xho tiQ xce -uFG +oKN xdF iKC hCv @@ -72829,22 +80194,22 @@ uFG iwJ fTS xeG -xZw +uHn jwT saC saC saC -kAI -uHn -ljm -xZw -xZw saC saC saC -tiQ -tiQ -tiQ +bzC +iAv +lwc +iEn +bBJ +iyS +eTn +iAv xzn klj lbX @@ -72853,7 +80218,7 @@ klj xzn gBi saC -xzn +hHd xPY ylm pjJ @@ -72864,14 +80229,14 @@ cpy pjJ pjJ pjJ +lCH pjJ -pjJ -hxu -xtb -xqd +ien +ien +ien uSo -fwy -fwy +oNQ +xtb pVx xqd qPT @@ -72893,25 +80258,25 @@ xAO xAO xtb tvO -ugV +pOb ugV hNR -xRK -emH -emH -emH -emH -emH -emH -emH -emH -emH +nQk +rYu +siB +hqB +oXd +nXM +sjb +biZ +ieE +akP tNr ugV spe -vpa -ugV -ugV +nQx +fjr +rCV crH pQE pQE @@ -72920,15 +80285,15 @@ oSH pQE pQE spo -ruU -ruU -ruU -ruU -ruU -ruU -ruU -ruU -ruU +vXc +vXc +vXc +vXc +vXc +vXc +yiM +yiM +yiM trW uFB taH @@ -72937,7 +80302,7 @@ lrm pnO umf vXc -ruU +yiM vXc vXc tDd @@ -72954,7 +80319,7 @@ mCA qYG wyy phu -phu +wDu cKi phu phu @@ -73008,9 +80373,9 @@ qzQ aPu jmv ueY -awm -wfP -wfP +tRs +eqV +bQA bPJ cpy cpy @@ -73020,11 +80385,11 @@ bMX bMX cpy cpy +cpy +cpy cpn -faZ +vDV uAd -oEw -yeS yeS yeS oML @@ -73036,8 +80401,8 @@ cCC xho xho uAd -yeS -xho +saC +saC xho yeS jKu @@ -73056,56 +80421,56 @@ kck ixf tLQ jbs -xWc -xWc -xWc -xWc -xWc -kBm -kVa -xWc -xWc -xWc -iGc +jtf +kgb +xZw saC saC -tiQ -tiQ -tiQ -tiQ -fTS -hkT -fTS -fTS -tiQ saC saC saC -xPY +oaj +iAv +jqL +vTK +bBJ +iyS +eTn +iAv +pbi +bKn +jjW +bKn +bKn +iAv +iAv +iAv +iAv +iAv ylm +vjW pjJ pjJ pjJ -vjW -vjW pjJ pjJ pjJ pjJ +lCH pjJ -mZN -xtb -xtb -xtb +pjJ +ien +hJZ +hJZ +oNQ xtb xyL xyL xtb xtb xtb -xtb rMb -skQ +fAY xtb xtb xtb @@ -73120,25 +80485,25 @@ xyL xtb xtb tEJ -ugV +fjr ugV hNR -crH -wSW -cVR -cVR +hkr +pPv +kmw +ovC +rah +lmW cVR -cVR -cVR -cVR -nMP -eqb -tvO -ugV -ugV -spe -vpa +iRW +ovC +szh +rLk +epe ugV +jXQ +nQx +fjr nIu ofd iiL @@ -73147,15 +80512,15 @@ uMO oXF ofd aPS -ruU -ruU -ruU -ruU -ruU -ruU -ruU -ruU -ruU +vXc +vXc +vXc +vXc +vXc +yiM +yiM +yiM +yiM cXq hDI taH @@ -73163,10 +80528,10 @@ taH taH jom vXc -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM vXc vXc voL @@ -73235,8 +80600,8 @@ fTP aPu pfq wIr -tXS -wfP +rsD +bQA wfP bPJ cpy @@ -73247,11 +80612,11 @@ bMX bMX cpy cpy +cpy +cpy cpn -xho -aut -aJT -yeS +vDV +uAd yeS yeS oML @@ -73263,8 +80628,8 @@ dCx dtr xho uAd -xho -kwJ +saC +saC kwJ xho jKu @@ -73281,51 +80646,51 @@ hFS uFG uFG hDy -fTS +gll xeG -xZw +uHn xZw xZw klL -xZw -xZw -xZw -xZw -xZw -xZw -mkb -iQb -tiQ -tiQ -tiQ -tiQ -tiQ -jUY -crX -jUY -jUY -tiQ -tiQ saC saC -xPY -ylm -vjW -pjJ -pjJ -pjJ -pjJ -pjJ -pjJ -pjJ +saC +saC +bzC +iAv +gmb +iEn +fQi +iyS +jqL +iAv +kzG +jqL +qUz +jqL +jqL +gcr +skC +iAv +iAv +iAv +jEX +sQu +sQu +sQu +sQu +sQu +sQu +oaa pjJ +lCH vjW -cpy -cpy -cpy -cpy +pjJ ien -hhD +hJZ +hJZ +jqF +vne hhD ahP xyL @@ -73347,25 +80712,25 @@ hhD hhD hhD wCC -ugV +fjr ugV hNR -crH +hkr vCy +fBY +iDC +qoj urY urY -urY -rYp -urY -ryW -ryW -sUN -tvO -ugV -ugV +iYG +fIr +lhp +eiY +epe ugV -spe -vwi +lXO +jXQ +iKF sQL wyI gny @@ -73374,15 +80739,15 @@ qGK xvW jct qQM -ruU -pgm -ruU -ruU -ruU -ruU +vXc pgm -ruU -ruU +vXc +yiM +yiM +yiM +nfk +yiM +yiM gek hXO hXO @@ -73392,9 +80757,9 @@ fVU lNU lNU rVe -ruU -ruU -ruU +yiM +yiM +yiM vXc rOP tSL @@ -73403,7 +80768,7 @@ tSL ibW ibW ily -dlM +tku ibW ibW tSL @@ -73462,7 +80827,7 @@ aPu mOJ wIr wIr -wfP +mzi wfP jJF bPJ @@ -73474,11 +80839,11 @@ bMX bMX cpy cpy +cpy +cpy cpn -xho -xho -aEL -yeS +vDV +uAd yeS yeS epI @@ -73490,69 +80855,69 @@ dCx otQ xho uAd -xho -epS +saC +kwJ kwJ xho jKu xho otQ dtr -xho +saC tiQ -hTg +oDU uFG hjB hBB uFG -uFG +dRS hDy hDy -fTS -xeG -xZw -xZw -xZw -xZw -xZw -xZw -xZw -ljq +gvs +hdR +uHn xZw xZw -xrA -hkT -fTS -tiQ -tiQ -tiQ -tiQ -fTS -fTS -fTS -fTS -tiQ +kyz +mKQ saC saC saC -xPY +bzC +iAv +jqL +iEn +bBJ +iyS +jqL +iAv +pkE +fzu +jMK +lEZ +lEZ +uFT +eTn +atO +iAv +iAv +kdf +ciw +ciw +ciw +lPf +qqJ +jEX ylm -vjW -vjW -pjJ pjJ +lCH pjJ -pjJ -pjJ -vjW -vjW -cpy -cpy -cpy -cpy -cpy ien -fjr +ien +ien +hJZ +hJZ +vne fjr crH xyL @@ -73570,29 +80935,29 @@ vkG vKF xyL tvO -ugV -ugV -ugV -ugV -ugV -ugV -hNR -crH -vCy -uye -uAa -uAa +fjr +fjr +fjr +fjr +fjr +fjr +vHd +vPm +eoi +khR +hbw uAa -uDF -mQo -odi -dHx -tvO -ugV -ugV -ugV -ugV +oMX +faJ +nyv +urY +izb +gdA ugV +fjr +fjr +fjr +lXO miz tRd xvW @@ -73601,15 +80966,15 @@ bGT xvW tRd qQM -ruU -qQi +vXc +tpD qQi qQi qQi qQi sMa -ruU -ruU +yiM +yiM cRB trZ trZ @@ -73619,9 +80984,9 @@ trZ trZ trZ bKO -ruU -ruU -ruU +yiM +yiM +yiM vXc rOP tSL @@ -73701,31 +81066,31 @@ bMX bMX cpy cpy +cpy +cpy tiQ -tiQ -xho aKK -yeS +uAd yeS yeS yeS oML xho cNV -hBg +saC otQ otQ xho uAd -xho +xgl kwJ ezU xho jKu xho otQ -otQ -aqI +saC +saC tiQ xce xce @@ -73737,46 +81102,46 @@ hDy iyq fTS xeG -xZw +uHn jxu xZw rEV -xZw -saC -saC -xZw -xZw -xZw -bKk -kQR -fTS -tiQ -tiQ -tiQ -tiQ -xuU -hkY -hAk -hAk -saC +mKQ saC saC saC -tiQ -gWI -gWI -sQu -sQu -sQu +bzC +iAv +vsj +hij +bBJ +iuC +jqL +jjj +eTn +gbo +sFb +pNF +uFT +lrM +uFT +eTn +iAv +iAv +mnQ +rCu +rCu +eHE +aea +mEG +alx ylm +vjW +lCH pjJ pjJ -cpy -cpy -cpy -cpy -cpy -cpy +pjJ +ien ien ien ien @@ -73785,7 +81150,7 @@ crH xyL qxp qPT -uEC +rKt xTs kMr nXl @@ -73797,29 +81162,29 @@ qfD vLu xyL tvO -ugV -ugV -ugV +fjr +fjr +fjr cpy -ugV -ugV -hNR -crH -iML -uye -urY -urY +sQA +fjr +tzM +vPm +jUc +ryI +hDe +iYG +nRI +fIr +fBY urY -uye -ryb -oow -sUN -tvO -ugV +izb +aem ugV +rCV cpy -ugV -ugV +fjr +fjr wsX ofd oWV @@ -73828,14 +81193,14 @@ qGK oWV ofd ubH -ruU -ruU -ruU -ruU -ruU -ruU +vXc +yiM +yiM +yiM +yiM +yiM sMa -ruU +yiM vXc lSq trZ @@ -73846,9 +81211,9 @@ sDa hCV trZ bKO -ruU -ruU -ruU +yiM +yiM +vXc vXc rOP rMF @@ -73879,8 +81244,8 @@ tOo tSL dGD lyD -nax -nax +mPr +hFX bCy tOo wIr @@ -73893,12 +81258,12 @@ wIr wIr dGD lyD -nax -nax -nax -nax -nax -nax +mPr +mPr +mPr +mPr +mPr +mPr nax nax mPr @@ -73929,30 +81294,30 @@ bMX cpy cpy cpy +cpy tiQ -xho -aLJ -bdv +vDV +uAd yeS yeS yeS oML xho -cNV -xho +saC +saC otQ otQ xho uAd -yeS +dEk xho xho yeS jKu xho otQ -uqt -dwP +saC +saC tiQ gxl hai @@ -73964,89 +81329,89 @@ hDy iyC xuU txs -xZw +uHn jBy uAm -xZw +mKQ saC saC saC saC -xZw -rEV -xZw -miH -lgf -tiQ -tiQ -tiQ -hAk -txs -uHn -xZw -xZw -xZw -saC -saC -saC -tiQ -tiQ -saC -saC -tiQ -tiQ +uAm +iAv +bny +gbo +bBJ +iuC +jqL +jjj +jqL +gbo +aIM +bBJ +qYM +bBJ +jmX +mlR +iAv +iAv +joJ +fBg +oDj +joJ +iAv +iAv +alx ylm -pjJ -pjJ -cpy -cpy -cpy -cpy -cpy -cpy -cpy -ien -rxI -fjr +vjW +hdu +nCa +nCa +nCa +nCa +nCa +gtS +oVO +nQx crH xtb xtb xtb -pnx -skQ +rMb +fAY xtb xtb xtb xtb xtb rMb -skQ +fAY xtb xtb tvO -ugV -ugV +fjr +fjr cpy cpy cpy -ugV -hNR +fGw +lHk crH -yjD +ksO +qFc +vBV +tnU +bdY +eiC mIa -mIa -mIa -mIa -mlY -cqL -oQV -ncs -tvO -ugV -ugV +xwK +hcd +xHO +fjr +fjr cpy cpy -ugV +fjr crH pQE pQE @@ -74055,12 +81420,12 @@ cXm pQE pQE spo -ruU -ruU -ruU +vXc +yiM +yiM iBY sno -ruU +yiM sMa vXc umf @@ -74073,9 +81438,9 @@ ljW xMu bvK bKO -ruU -ruU -ruU +yiM +yiM +vXc vXc cys rMF @@ -74105,25 +81470,25 @@ oIu oIu oIu lyD -nax -nax -nax -nax +mPr +mPr +hFX +hFX bCy bYV wIr wIr bZV -pSj +mpF wIr wIr rZK lyD -nax -nax -nax -nax -nax +mPr +mPr +mPr +mPr +mPr nax nax nax @@ -74141,7 +81506,7 @@ srk vLI wIr bPJ -djL +wLw wfP wfP wfP @@ -74156,30 +81521,30 @@ bMX cpy cpy cpy +cpy tiQ -xho vDV uAd yeS yeS yeS oML -xho -cNV -xho -otQ +saC +saC +saC +saC otQ xho uAd -yeS +dEk yeS yeS yeS jKu xho -otQ -uqt -eXe +saC +saC +saC tiQ gxl gYT @@ -74191,7 +81556,7 @@ hDy izY xeG xZw -xZw +uHn uAm uAm klW @@ -74199,47 +81564,47 @@ saC saC saC saC -xZw -xZw -bgc -mjs -fTS -tiQ -tiQ +uAm +lLA +qeJ +mQt +idk +cMW +hZO mPe -iOl -xZw -uHn -xZw -xZw -xZw -saC -saC -saC -saC -saC -saC -saC -saC -tiQ -ylm +sgq +lFa +iLn +eZb +nQO +qAS +nQO +ahs +gJK +bzv +eLU +oXk +bWQ +mjF +gXI +joJ +urp +hTf +nYz +nYz +nYz +nYz +nYz +nYz +taS vjW -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -ien -rxI -fjr +oxt +jDO sSn hhD hhD rxu -smY +lnK smY kwc hhD @@ -74251,29 +81616,29 @@ vlN utd qDL tEJ -ugV +fjr cpy cpy cpy cpy cpy -hNR +gwH sSn +jYc hhD +jYc +sPU +pUf hhD hhD -hhD -hhD -hhD -hhD -hhD -hhD -wCC -ugV +vqF +muB +lPM +fjr cpy cpy cpy -ugV +fjr crH ofd otj @@ -74282,12 +81647,12 @@ uMO rmi ofd spo -ruU -ruU -ruU +vXc +yiM +yiM qCY iqQ -ruU +yiM puY vXc umf @@ -74300,9 +81665,9 @@ xMu wrg trZ bKO -ruU -ruU -ruU +yiM +vXc +vXc vXc wYa pUv @@ -74317,8 +81682,8 @@ tSL tSL rMF sql -ruU -ruU +yiM +yiM vXc vXc vXc @@ -74331,12 +81696,12 @@ ffo nax nax nax -nax -nax -nax -nax -nax -nax +mPr +mPr +mPr +mPr +hFX +hFX bdL rQg hYL @@ -74345,11 +81710,11 @@ jmv hYL rQg vdp -nax -nax +mPr +mPr tNc -tZF -tZF +gUj +gUj tZF iCb nax @@ -74368,7 +81733,7 @@ oIu tOo bPJ bPJ -oCW +fZo wfP wfP wfP @@ -74383,7 +81748,7 @@ bMX cpy cpy cpy -tiQ +cpy tiQ vDV uAd @@ -74392,13 +81757,13 @@ yeS yeS cCQ saC -tiQ saC -iOx +saC +saC saC saC aut -dOw +ejo dOw dOw dOw @@ -74418,55 +81783,55 @@ hDy iBs oQs jcq -xZw -xZw -xZw -saC -saC -saC -saC -xZw -xZw -xZw -xrA -hkT -fTS -tiQ -tiQ -fTS -xeG -xZw -kUF -xZw -xZw -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +uHn +kib +kjU saC -cpy saC saC saC -cpy -cpy -cpy -ien -ien -ien -fjr -fjr -fjr -fjr -fjr -fjr +mKN +lko +lLA +jqL +tNT +mvI +pZy +wAB +jUY +qUz +rtw +idk +gNs +mCx +ham +jqL +jeb +fBg +mEp +myz +smr +kri +kEj +ldy +joJ +gMe +jkO +oUq +oUq +tVa +tVa +oUq +oUq +oUq +oUq +oUq +jXQ +iKF +iKF +iKF +iKF +iKo fjr fjr fjr @@ -74478,29 +81843,29 @@ vlX utd uep tvO -ugV +fjr cpy cpy cpy cpy -ugV -hNR -ugV -ugV -ugV -ugV -ugV +fjr +nQL ugV ugV ugV +qrG +bRv ugV ugV +epe +bHk ugV ugV +geI cpy cpy cpy -ugV +fjr crH ofd qSk @@ -74509,14 +81874,14 @@ qGK qSk ofd spo -ruU -ruU -ruU +vXc +yiM +yiM qCY uie -ruU -ruU -ruU +yiM +yiM +yiM vXc lSq trZ @@ -74527,9 +81892,9 @@ cia tEC hVw bKO -ruU -ruU -ruU +yiM +vXc +vXc vXc wYa umf @@ -74543,27 +81908,27 @@ rMF tSL rMF sql -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM vXc vXc vXc umf vXc vXc -ruU +yiM ffo nax nax -nax -nax -nax -nax -nax -nax -nax +mPr +mPr +mPr +mPr +mPr +mPr +hFX bdL rQg hYL @@ -74572,8 +81937,8 @@ tkf hYL rQg vdp -nax -nax +mPr +mPr tNc nax nax @@ -74612,10 +81977,11 @@ cpy cpy cpy tiQ -vDV -uAd -yeS -bXA +cdP +dwP +dEk +dEk +saC saC saC saC @@ -74625,7 +81991,6 @@ saC saC saC saC -otQ otQ eyh cRN @@ -74639,54 +82004,54 @@ xce hdd xdF hBD -uFG +nbD xce hDy fTS iOO jdl -jcq -xZw +jRY xZw +kqX saC saC saC -xZw -xZw -xZw -xZw xrA -hkT -tiQ -tiQ -tiQ -lgf -xeG -xZw -uHn -xZw -xZw -tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -cpy -saC -cpy -ien +mOl +uAm +lLA +ntL +jqL +jwx +qce +iAv +iAv +viI +iOw +kzG +bag +dtR +eTn +mlR +iAv +iAv +iAv +joJ +fBg +iby +joJ +iAv +iAv +iAv +oUq +oUq +oAY +lDk +uFA +bJy +oUq +oUq +oUq fjr rxI fjr @@ -74705,29 +82070,29 @@ vlX utd uep tvO -ugV +fjr cpy cpy cpy -ugV -ugV +fjr +fjr hNR ugV xRK emH +hNt +aQf +qPm emH -emH -emH -emH -emH -tNr -ugV -ugV -ugV -ugV +oXd +nHl +fjr +fjr +fjr +ldr cpy -ugV -ugV +fjr +fjr lPv ofd aOP @@ -74736,15 +82101,15 @@ qGK qSk ofd spo -ruU -ruU -ruU +yiM +yiM +yiM qCY uie -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM lSq trZ gCE @@ -74754,9 +82119,9 @@ xMu mcf hVw bKO -ruU -ruU -ruU +yiM +yiM +vXc vXc wYa vXc @@ -74769,28 +82134,28 @@ xyN xyN xyN sql -ruU -ruU -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM +yiM +yiM vXc vXc vXc -ruU -ruU -ruU +yiM +yiM +yiM ffo nax nax -nax -nax -nax -nax -nax -nax -nax +mPr +mPr +mPr +mPr +mPr +mPr +mPr bdL rQg hYL @@ -74799,9 +82164,9 @@ tkf hYL rQg vdp -nax -nax -nax +mPr +mPr +mPr iCb nax nax @@ -74843,7 +82208,9 @@ vDV uAd yeS yeS -yeS +bXA +saC +saC saC saC saC @@ -74852,10 +82219,8 @@ saC saC saC saC -yeS -yeS oEw -yeS +saC saC saC saC @@ -74875,45 +82240,45 @@ jds jjo xZw xZw -xZw -saC -kBJ -xZw -jwT -xZw -xZw -lVG -hkT -fTS -mCK -gHF -fTS -xeG -xZw -uHn -xZw -xZw -tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC saC saC -saC -saC -saC -ien +kBJ +kXB +mSc +uAm +uAm +lLA +lLA +iAv +iAv +iAv +iAv +fBg +unU +wBR +iAv +iAv +uGK +iAv +iAv +iAv +iAv +iyE +tfW +rdf +vju +vju +rKS +vju +xJt +lbo +lbo +kXY +kXY +lDk +bJy +oUq +oUq fjr fjr fjr @@ -74932,12 +82297,12 @@ vlX vgI uep tvO -ugV -ugV +fjr +fjr cpy -ugV +fjr hxy -vwi +iKF kdo xRK yjp @@ -74947,13 +82312,13 @@ sjy sjy sjy sjy -ahP +pXR tNr -ugV -ugV -ugV -ugV -ugV +fjr +fjr +fjr +fjr +fjr nVN xlL ofd @@ -74963,15 +82328,15 @@ qGK rqs ofd spo -ruU -ruU -ruU +yiM +yiM +yiM bYS xLY -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM lSq trZ iLc @@ -74981,43 +82346,43 @@ ljW uVH hVw bKO -ruU -ruU -ruU +yiM +yiM +yiM vXc wYa vXc vXc vXc jbv -ruU -ruU -ruU -ruU -ruU -ruU -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM +yiM +yiM +yiM +yiM +yiM +yiM vXc vXc vXc umf vXc vXc -ruU -ruU +yiM +yiM ffo nax -nax -nax -nax -nax -nax -nax -nax -nax +mPr +mPr +mPr +mPr +mPr +mPr +mPr +mPr bdL rQg pfD @@ -75026,8 +82391,8 @@ tkf hYL rQg vdp -nax -nax +mPr +mPr nax bjX nXX @@ -75078,10 +82443,10 @@ saC saC saC saC -xho -yeS -yeS -oEw +saC +saC +saC +qpD saC saC saC @@ -75103,45 +82468,45 @@ jjU jCq xZw xZw -kqX +saC kBL kAI -xZw -xZw -xZw -bKk -kQR fTS -mCK -gHF -xuU -txs -xZw -hkT -xZw -saC -tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -ien -ien -ien +hao +uAm +uAm +nzR +bzC +bzC +bzC +iAv +fBg +fBg +iAv +iAv +lLA +lLA +xUq +xUq +iAv +mOh +vju +nMl +wrc +mjF +mGb +eDD +rvg +fAt +spB +kXY +nFc +rqE +kXY +slt +oUq +oUq +oUq fjr fjr fjr @@ -75160,11 +82525,11 @@ utd qDL ahP tNr -ugV -ugV -ugV -hNR -ugV +fjr +fjr +fjr +jDO +fjr ugV crH sjy @@ -75197,8 +82562,8 @@ cWT cWT cWT kEZ -ruU -ruU +yiM +yiM lSq trZ qLJ @@ -75208,8 +82573,8 @@ qhm cia trZ bKO -ruU -ruU +yiM +yiM vXc vXc tDd @@ -75234,17 +82599,17 @@ umf umf vXc vXc -ruU +yiM ffo nax nax -nax -nax -nax -nax -nax -nax -nax +mPr +mPr +hFX +hFX +hFX +mPr +mPr bdL wIr wIr @@ -75254,7 +82619,7 @@ wIr wIr vdp sxg -nax +mPr bjX yhj ylo @@ -75305,11 +82670,11 @@ saC saC saC saC -otQ -otQ +saC +saC otQ eVg -saC +otQ saC saC saC @@ -75326,48 +82691,48 @@ hDy saC xeG xZw -jdD +jTb xZw xZw xZw -fBU +kzc kCM kWa -rEV -xZw -xZw -xZw -mkb -tLQ -mCQ -mKN -jbs -xWc -tLQ -num +mXn fTS +lqY saC saC saC saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -ien +bzC +bzC +iAv +iAv +iAv +gYc +lLA +lLA +lLA +xUq +yaw +vju +qRw +vju +vju +oLK +tKR +gxb +dPl +tVa +dio +kXY +nFc +dwI +kXY +lDk +oUq +oUq rxI fjr fjr @@ -75382,7 +82747,7 @@ yjp beB beB uPk -vnB +mwL beB wrC wrC @@ -75390,10 +82755,10 @@ xXR emH emH tNr -hNR -ugV +gwH +fjr xRK -ahP +rJB sjy uxn ckT @@ -75425,7 +82790,7 @@ lVp lVp aHH kEZ -ruU +yiM lSq trZ hVw @@ -75469,9 +82834,9 @@ yhR yhR yhR gGM -nax -nax -nax +hFX +hFX +mPr bdL wIr wIr @@ -75480,8 +82845,8 @@ dgY wIr wIr vdp -nax -nax +mPr +mPr aPe ylo ylo @@ -75532,12 +82897,12 @@ saC saC saC saC -kbV +wLp kbV kbV gPq kbV -saC +kbV saC saC tiQ @@ -75553,49 +82918,49 @@ hDy saC saC xZw -xZw -xZw -xZw -xZw -xZw -xZw -xZw -xZw -xZw -xZw -rEV -xrA -fTS -mCK -gHF -xeG -xZw -tKb -kQK -fTS -xZw -saC -saC -saC -saC -saC -saC +jTB +xWc +xWc +xWc +gnx +xWc +xWc +mXA +ick +lvH +lAA +ugi saC saC saC saC saC saC -iTI -xED -xED -xED -xED -xED -xED -xED -lER -mlp +iAv +iAv +iAv +iAv +iAv +iAv +iAv +iAv +iAv +iAv +iAv +iAv +iAv +iAv +iAv +oUq +jfx +nMX +rmA +nMX +nMX +rRA +oUq +oUq +rxI rxI fjr ugV @@ -75617,8 +82982,8 @@ wrC wrC wrC tvO -hNR -ugV +jDO +fjr crH sjy sjy @@ -75697,8 +83062,8 @@ jmG jmG pqR gGM -nax -nax +hFX +mPr bdL rQg hYL @@ -75707,8 +83072,8 @@ tkf pfD rQg vdp -nax -nax +mPr +mPr uXp ylo fCW @@ -75753,12 +83118,12 @@ gTw xho cNV cNV -dxU -cSb -qUQ +cNV +fxq +fxq saC saC -qUQ +wLp qUQ qUQ qUQ @@ -75779,30 +83144,20 @@ gxM tiQ saC saC -ycV -saC saC -rEV -kmg xZw xZw +rEV +kmg +kzc xZw xZw xZw xZw xZw -xrA -fTS -ncA -saC -xeG xZw -fTS -kQK -qVN -fTS -xZw -saC +uHn +kfF saC saC saC @@ -75812,25 +83167,35 @@ saC saC saC saC -iTI -iTI -uKD -uKD -uKD -uKD -uKD -uKD -uKD -uKD -mwv -uKD +tTv +tTv +tTv +tTv +tTv +tTv +tTv +tTv +tTv +tTv +tTv +oUq +hWC +vcF +vsy +wUp +wUp +rXq +oUq +oUq +oUq +ugV ugV ugV ugV ugV crH beB -hZf +eLK tmC tDQ ueR @@ -75844,13 +83209,13 @@ wSr jNY wrC tvO -hNR +jDO xRK -ahP +xlU sjy sjy sjy -lea +lzn sjy tpa tpa @@ -75861,8 +83226,8 @@ kRb kBk iJu uDs -uDb -nKo +jUg +uVj sjy ogK oud @@ -75881,12 +83246,12 @@ lVp jzu vXc vXc -ruU -ruU -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM +yiM +yiM vXc vXc vXc @@ -75924,8 +83289,8 @@ jmG jmG jmG xAR -nax -nax +hFX +mPr bdL rQg hYL @@ -75935,7 +83300,7 @@ hYL rQg vdp lbH -sxg +bwF aPe nnG yfu @@ -75980,12 +83345,12 @@ xho cNV cNV cNV -dxU +cNV cSb dcD -dDC -dDC -dDC +moZ +moZ +moZ dDC dDC dDC @@ -75994,42 +83359,35 @@ dDC fhQ fpB dDC -dDC -fXU -gll +saC +saC +saC tiQ iBI -uFG -uFG +xmD +xCS tiQ tiQ tiQ saC -qTE -ycV saC saC saC xZw xZw xZw +kzc xZw xZw xZw xZw xZw +xZw +uHn +rEV +aKQ saC saC -ncA -saC -saC -xZw -fTS -kQK -fTS -xZw -xZw -xZw saC saC saC @@ -76039,18 +83397,25 @@ saC saC saC saC -xED -uKD -uKD -vju -vju -vju -vju -vju -vju -uKD -mwv -tvO +tTv +men +xVB +onM +men +iQb +pXh +tTv +oUq +tTl +bJN +jbn +kXY +kXY +jWZ +oUq +oUq +ugV +ugV ugV ugV ugV @@ -76071,24 +83436,24 @@ jyw jPk wrC tvO -hNR +jDO crH sjy sjy mhn -sDY +hIz kTm -ebn +oHR ort wdi wdi sjy sjy jmd -jmd +eWF oLW mbF -jGj +jft xbj sjy mNR @@ -76112,9 +83477,9 @@ qtN qtN qtN vKO -ruU -ruU -ruU +yiM +yiM +yiM vXc wdy rMF @@ -76151,8 +83516,8 @@ dUW dUW jmG xAR -nax -nax +mPr +mPr bdL rQg pfD @@ -76161,7 +83526,7 @@ oLa hYL rQg vdp -nax +mPr qbG aPe nnG @@ -76186,7 +83551,7 @@ eso sCi jas nQu -tms +uYk jas cpy cpy @@ -76201,18 +83566,18 @@ cpy cpy cpy tiQ -aQU -cuF +eVg +otQ +otQ cNV cNV cNV cNV -dxU qUQ jth kbV -dQg -dZA +kbV +ear tjg tjg tjg @@ -76220,19 +83585,17 @@ kbV tjg tjg gPq -dEk -fKt -fYP -gll +saC +saC +saC +saC tiQ -xVq -xVq -xVq +dli +dli +dli tiQ tiQ tiQ -qTE -qTE saC saC saC @@ -76240,48 +83603,50 @@ saC saC xZw xZw +saC xZw xZw xZw xZw xZw -xrA -saC -ncA -saC -saC -xZw -fTS -kQK -fTS xZw +uHn xZw -rEV +kfF saC saC saC saC saC saC +mqc saC saC saC +gYK +say +khm +cwr +mLI +pLP +pGe +voX xED -uKD -vju -vju -jbn +pVH +lDk +har jbn -jbn -kIY -vju -vju -mwv -tvO -ugV -ugV -ugV -xRK +awI +kXY +lbo +lbo +tVa +emH +emH +emH +emH +emH +emH ahP beB sLU @@ -76313,7 +83678,7 @@ sjy sjy uqx sjy -yat +lAM sjy uqx sjy @@ -76339,9 +83704,9 @@ xkO xkO xkO weQ -ruU +yiM aOi -ruU +yiM vXc fXx jmG @@ -76378,8 +83743,8 @@ jwM nBP jmG xAR -nax -nax +mPr +mPr bdL rQg hYL @@ -76413,7 +83778,7 @@ vpe wHz jas nQu -nQu +wbo jas cpy cpy @@ -76430,85 +83795,85 @@ cpy tiQ wvV xLm -cNV -enT -cNV +xLm +dOa +bDw enT dOa -jur +cuF jth -dEk -dEk +tjg +tjg ear -dFT +tjg tjg tjg kbV tjg tjg gPq -dEk -dEk -fYP -uFG +saC +saC +saC +saC tiQ -xmD +lAK hmV vIS -qTE -qTE -qTE -qTE saC saC saC saC saC saC -udR +saC +saC +saC +saC +saC iOl kmg xZw xZw xZw xZw -xrA -fTS -mCK -saC -xeG -xZw -fTS -kQK -fTS +uHn xZw xZw +pNv saC saC saC saC +pwB +kwg +kwg saC -saC -saC -saC -saC -saC +kwg +gha +aYd +vxD +kwg +kwg +kwg +gha +kXY xED -uKD -vju +pyc +kwg iZS jBr -jEa -jEa -kLk +mPs +oYu +kXY lbo -vju -mwv -tvO -ugV -ugV -ugV -crH +oUq +beB +dhQ +dhQ +dhQ +dhQ +beB beB beB sMY @@ -76568,7 +83933,7 @@ waD qJN vXc vHN -ruU +yiM vXc fXx jmG @@ -76605,8 +83970,8 @@ fhu brk jmG xAR -nax -nax +mPr +mPr bdL rQg hYL @@ -76657,35 +84022,35 @@ cpy tiQ aVo xLm -bDw xLm -bDw +aQU +xLm xLm dOa qUQ jth -dFT -dFT +tjg +tjg ear -dZA -dZA kbV +kbV +kbV +xiY +fKt +fKt +vzd +tQw +saC +saC +saC saC -tjg -tjg -gPq -dFT -dFT -gbQ -qUQ -qjG xmD hna yiu saC saC saC -qTE +saC saC tiQ tiQ @@ -76696,46 +84061,46 @@ saC iOG udR udR +nqE +nqE +udR +iKw +udR udR -iOl -xZw -xrA -fTS -mCK -gHF -xeG -xZw -fTS -kQK -fTS -xZw -xZw -saC -saC -saC -saC -saC -saC saC saC saC saC -xED -uKD -vju -iZS +sse +kwg +mOI +pcH +pcH +pcH +hSQ +pco +jBY +pcH +sGF +pcH +hSQ +nMX +lbt +hzw +pcH +pcH jEa kHd -jEa -jEa +kgR +kXY llJ -lIM +oUq +nrT mHZ -tvO -ugV -ugV -ugV -nIu +bJa +bJa +mHZ +ryT beB pVX sNm @@ -76795,7 +84160,7 @@ xkO cqs vXc vHN -ruU +yiM vXc fXx jmG @@ -76832,8 +84197,8 @@ ild dco jmG xAR -nax -nax +mPr +mPr bdL rQg dni @@ -76865,7 +84230,7 @@ dZw kwj kwj cxo -ppU +sQY nQu nQu jas @@ -76893,11 +84258,11 @@ qUQ jth tjg tjg +ear kbV kbV -kbV -saC -saC +xiY +xiY tjg tjg gPq @@ -76905,65 +84270,65 @@ tjg tjg hJB qUQ -qjG +vlq xmD hna yiu hLY saC saC -qTE +saC saC iDg -iDg +rXa tiQ tiQ tiQ saC kDU fTS -fTS -fTS -xeG -lWa -pRT -fTS -mCK -gHF -iOG -mXn -xZw -hkT -xZw -xZw -uAm -xZw -saC +cOJ saC saC +aCR +hkT +fTS +fTS saC saC saC +men +sse +kwg +jkJ +kwg +mmh +sQS +mPs +cim +mPs saC saC saC +fWD +iTX xED -uKD -vju -vju +pex +lDk +kXY kzd -jEa -jEa -jEa -llJ -lIM -mHZ -tvO -ugV -ugV -ugV -miz -mji +pSK +kgR +kwg +anb +bJY +jSU +xDu +xDu +xDu +raI +jSU +osE ijE nTx eHn @@ -76974,10 +84339,10 @@ vBI nTx vNy mvR -jqV +bNy jyx xmN -fTK +lUU kgQ mLO fIr @@ -77005,7 +84370,7 @@ hnk xGf xGf xiG -dtl +qpJ fCl yca jfO @@ -77022,7 +84387,7 @@ waD qJN vXc eLG -ruU +yiM vXc fXx jmG @@ -77059,8 +84424,8 @@ gwP psF jmG xAR -nax -nax +mPr +mPr bdL wIr wIr @@ -77069,7 +84434,7 @@ jmv wIr wIr glV -nax +mPr nax nax uvg @@ -77120,75 +84485,75 @@ qUQ jth tjg tjg -kbV -kbV -saC +xiY +xiY saC saC +xiY kbV kbV -gPq -tjg -tjg -hJB -qUQ -qjG -xmD +caN +hgM +hgM +idn +cSh +oVt +dNn hna yiu hLY saC -hxh +lmY iBI iQe pfj jjV -jjV +cuu jVC tiQ tiQ kEx kWH tiQ -qjG -xeG -xrA -fTS -fTS -mCK -gHF -fTS -xeG -xZw -uHn -xZw -xZw -xZw -xZw -xrA saC saC saC +uhx +pwX +pwX saC saC +tTv +men +sse +iZS +jkJ +wIx +jfH +men +iQb +tTv +bUN saC saC saC -xED -uKD -vju -iZS -jEa -jEa -jEa -jEa -llJ -lIM -mHZ -tvO -ugV -ugV -ugV +saC +saC +tTv +mVm +sBH +kXY +wGq +mBL +giV +pcH +jBY +fAt +ixs +lxN +lxN +lxN +fJg ryj qIy jWV @@ -77214,7 +84579,7 @@ sjy sjy sjy lhK -azl +nKo mqH ybt sjy @@ -77249,7 +84614,7 @@ xkO weQ vXc vXc -ruU +yiM vXc pUv rMF @@ -77286,8 +84651,8 @@ jtg liN jmG xAR -nax -nax +mPr +mPr bdL wIr wIr @@ -77296,7 +84661,7 @@ jmv wIr wIr vdp -nax +mPr nax nax nax @@ -77320,7 +84685,7 @@ hBp eso vpe jas -nQu +wbo nQu jas cpy @@ -77347,24 +84712,24 @@ jur jth fsC kbV -kbV +xiY saC saC saC -kbV -kbV +ffr +xiY kbV gPq fsC kbV hJB qUQ -qjG -hdQ +pwX +knt qjG yiu hLY -saC +qJE ujg iCk iQF @@ -77375,47 +84740,47 @@ xmD xmD tiQ kEA +seF tiQ -tiQ +saC +saC +saC +yaj qjG qjG -xrA -fTS -tiQ -tiQ -tiQ -fTS -xeG -xZw -uHn -oiW -xZw -xZw -xZw -xrA -fTS -tiQ -tiQ -tiQ saC saC +tTv +nHg +hzV +iZS +jkJ +xLi +men +men +tTv +tTv +tTv saC saC -xED -uKD -vju -iZS -jBr -jEa -jEa +saC +saC +tTv +tTv +mVm +hrl +kXY +oUE +ntQ +dNe kXY lzb -vju -mwv -tvO -ugV -ugV -ugV +oUq +nrT +mHZ +bJa +mHZ +azF ryT beB ijJ @@ -77442,7 +84807,7 @@ sjy sjy lhK azl -mqH +mnU xhu sjy vHU @@ -77459,7 +84824,7 @@ hnk lxL lxL tVN -dtl +qpJ gDz jfO xXo @@ -77475,8 +84840,8 @@ eOE eOE upZ vXc -ruU -ruU +yiM +yiM vXc vXc pUv @@ -77513,8 +84878,8 @@ kbF dUq jmG xAR -nax -nax +mPr +mPr bdL rQg pfD @@ -77523,8 +84888,8 @@ tkf pfD rQg vdp -nax -nax +mPr +mPr nax nax nax @@ -77547,7 +84912,7 @@ cwe vpe oCs jas -nQu +wbo nQu jas cpy @@ -77570,28 +84935,28 @@ tDR cqP cEw dOa -qUQ +fxq jth tjg tjg -kbV -kbV +xiY saC saC saC -kbV -kbV +saC +xiY +xiY gPq tjg tjg hJB qUQ -qjG -xmD +pwX +knt qjG yiu hLY -xmD +qJE ujg iDg iRV @@ -77602,48 +84967,48 @@ jWr xmD xmD jVC -qjG -qjG -qjG -qjG -qjG -fTS -saC -saC -saC -fTS -xeG -xZw -kUF -uAm -uAm -xZw -xZw -xrA -fTS -uxf -cpn -saC +miH saC saC saC +qgx +yaj +qjG +qjG +qgx saC -xED -uKD -vju -vju -jbn -jbn -jbn -kIY -vju -vju -mwv -tvO -ugV -ugV -ugV -tPx +tTv +men +kUF +gWu +neI +xLi +men +tTv +tTv +oUq +oUq +oUq +saC +oUq +oUq +oUq +oUq +oUq +uzD +oeU +kXY +aYd +kXY +lbo +sLc +oUq +beB +dhQ +dhQ +dhQ +evN +beB beB beB beB @@ -77653,7 +85018,7 @@ beB beB beB uam -vOR +xBi wrC sgT sgT @@ -77696,13 +85061,13 @@ uaH isA jzu vXc -ruU -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM +yiM vXc -ruU +yiM vXc vXc vXc @@ -77740,8 +85105,8 @@ gug cho jmG xAR -nax -nax +mPr +hFX bdL rQg hYL @@ -77750,12 +85115,12 @@ tkf hYL rQg vdp +mPr +mPr nax nax nax -nax -nax -nax +mPr mPr mPr mPr @@ -77774,7 +85139,7 @@ yak qbB snR jas -tms +uYk nQu jas cpy @@ -77797,28 +85162,28 @@ spI crm cEx dOa -qUQ +fxq jth tjg tjg -kbV saC saC saC -kbV -kbV -kbV +saC +saC +saC +xiY gPq tjg tjg -fYP +hJB qUQ -qjG -qJE +vlq +knt hna yiu hLY -hdQ +vhr ujg iFB iSc @@ -77829,48 +85194,48 @@ jWB xYD kry jjV -qjG -qjG -qjG -qjG -qjG -mkZ -saC -saC -saC -saC -txs -xZw -uHn -xZw -xZw -xZw -oiW -xrA -tKb -uxf -ybd +miH saC saC saC +pwC +yaj +qjG +qjG saC saC -xED -uKD -uKD -vju -vju -vju -vju -vju -vju -uKD -mSc -tvO -ugV -ugV -fjr -xhd +tTv +tTv +cUA +nMX +pco +jzB +tTv +tTv +oUq +oUq +ucY +hGm +oUq +oUq +oUq +lEd +fHf +oUq +lag +lDk +kXY +aYd +nPV +qpy +oUq +oUq +hhD +hhD +hhD +hhD +xFg +gHD ahP yjp wrC @@ -77924,16 +85289,16 @@ isA jzu vXc vXc -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM vXc vXc vXc vXc vXc -ruU +yiM fXx jmG oQN @@ -77967,8 +85332,8 @@ ild jmG jmG xAR -nax -nax +mPr +hFX bdL rQg hYL @@ -77977,12 +85342,12 @@ oLa hYL rQg vdp +mPr +mPr +mPr nax -nax -nax -nax -nax -nax +mPr +mPr mPr mPr mPr @@ -78024,29 +85389,29 @@ bYd cvP dOa dOa -qUQ -jth -kbV -kbV +fxq +gdJ +ear +ear saC saC saC -kbV -fsC -kbV -kbV -gPq -tjg +saC +saC +saC +saC +vzd +fKt fKt fYP -qUQ -qjG -qJE +fxq +saC +knt hna yiu hLY -xmD -hxh +qJE +lmY iFV iDg jey @@ -78057,43 +85422,43 @@ kmP xmD jVC kXa -qjG -qjG -qjG -saC -saC saC saC saC -saC -xZw -xZw -uHn -fTS -fTS -fTS -xZw -xrA -fTS -uxf -ybd -saC +pwC +yaj +qjG +qjG saC saC saC saC +afL +sfc +xSE +bCX +iQb +tTv +oUq +cCL +sGv +xgE +yaC +vIU +kZe +mkh iTI -iTI -uKD -uKD -uKD -uKD -uKD -uKD -uKD -uKD -mwv -uKD +oUq +oUq +nJO +bJy +dio +kkR +lbI +oUq +oUq +pGh +ugV ugV ugV fjr @@ -78108,7 +85473,7 @@ iPZ uSv jyx uQF -jyx +jGj wwy jPw qgr @@ -78149,7 +85514,7 @@ jfO gYX isA jzu -ruU +yiM vXc vXc umf @@ -78158,9 +85523,9 @@ vXc vXc vXc vXc -ruU -ruU -ruU +yiM +yiM +yiM fXx jmG qxm @@ -78194,8 +85559,8 @@ gug jmG tOo lyD -nax -nax +hFX +hFX bdL rQg pfD @@ -78204,12 +85569,12 @@ dgY hYL rQg vdp -nax -nax -nax -nax -nax -nax +mPr +mPr +mPr +mPr +mPr +mPr mPr mPr tEu @@ -78251,75 +85616,75 @@ dOa dOa dOa dZs -jur +fLi jth tjg tjg -kbV saC saC -kbV -kbV -kbV -kbV +saC +saC +saC +saC +saC frL -fxq -fxq -gdJ -qUQ -qTE -qJE +tjg +tjg +hJB +sxU +saC +knt hna yiu saC saC -hxh -hxh +lmY +lmY ujg ujg ujg -hxh -hxh +lmY +lmY kne mqu -hxh +lmY saC +saC +saC +pwC qjG +yaj qjG -qjG -qjG +pwC saC saC saC saC -iOG -iOl -xZw hXt -tso -tso -tso -iQb -xrA -fTS -uxf -ybd -saC -saC saC -saC -saC -saC -iTI -xED -xED -xED -xED -xED -xED -xED -lER -mlp +jkJ +mIq +iQb +tTv +oUq +vVx +fHH +kXY +xZE +kXY +xZE +kXY +gTc +fzK +oUq +oUq +oUq +nBo +oUq +oUq +oUq +oUq +rxI fjr ugV ugV @@ -78333,7 +85698,7 @@ tFk uhF jyx wrC -iPZ +aNn mYo wcO sgT @@ -78376,8 +85741,8 @@ jfO gYX isA jzu -ruU -ruU +yiM +yiM vXc vXc vXc @@ -78403,9 +85768,9 @@ jmG jmG jmG khd -rRc +eNc wZy -iuQ +teO khd aZj aZj @@ -78420,22 +85785,22 @@ vBd vBd jmG xAR -nax -nax +mPr +hFX tEu bYV wIr wIr bZV -pSj +mpF wIr wIr rZK gGM -nax -nax -nax -nax +mPr +mPr +mPr +mPr mPr mPr mPr @@ -78476,81 +85841,81 @@ dOa dOa dOa cwq -xLm +dQg dZs -qUQ +fxq ddN tjg tjg -kbV -kbV saC saC -kbV -kbV -kbV +saC +saC +saC +saC +saC gPq tjg tjg -fYP -gnd -qTE -xmD +hJB +saC +saC +knt hna yiu -yiu +saC +saC +saC saC xmD xmD xmD -xmD -xmD -xmD +atz xmD knt xmD saC saC -qjG +saC lrQ qjG qjG yaj +qjG +qgx saC saC saC -saC -xeG -rEV -xZw -nvd -fTS -fTS -uHn -xrA -fTS -uxf -ybd -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -ien +bUN +sse +kwg +jkJ +xLi +iQb +tTv +oUq +oUq +suS +kXY +wwG +hCH +hCH +mzX +har +qvb +oUq +bYZ +kVO +caE +xQq +oUq +oUq +oUq rxI fjr fjr ugV -ugV +fjr jDO crH wrC @@ -78561,7 +85926,7 @@ jyx uuA wrC vpO -vPA +kdw wrC sgT sgT @@ -78604,17 +85969,17 @@ uWz lVp jzu vXc -ruU -ruU -ruU -ruU -ruU +yiM +yiM +yiM +yiM +yiM vXc wdy rMF jmG six -swf +cIo jmG jmG jmG @@ -78647,7 +86012,7 @@ ild meb jmG xAR -nax +mPr tEu tOo wIr @@ -78660,8 +86025,8 @@ wIr wIr dGD mcO -nax -nax +mPr +mPr mPr mPr mPr @@ -78703,30 +86068,30 @@ bgg bIr tDR tDR -cDo +eVi dZs qUQ jth tjg tjg -kbV -kbV -kbV -kbV -kbV -kbV +saC +saC +saC +saC +saC +saC kbV gPq kbV kbV -fYP -qUQ -qjG -xmD +hJB +saC +saC +knt hna -yiu -yiu -vIS +wea +jef +uTy vIS vIS vIS @@ -78735,55 +86100,55 @@ vIS gnA gwK knS -yiu +vIS saC saC ljQ pfj -xmD -jVC -yaj +qjG +qjG yaj +qjG +pwC saC saC saC -xeG -xZw -xZw -xZw -xZw -tZs +bUN +utH +kwg +jkJ +xLi nMw -xrA -fTS -uxf -ybd -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -ien -ien -ien +tTv +oUq +hEJ +kgR +aVj +hCH +hCH +tpV +kXY +har +ecK +oUq +xQq +kVO +qfo +nMB +oUq +oUq +oUq +oUq +fjr fjr fjr -ugV fjr jDO crH wrC wrC wrC -tGm +xHz wrC wrC wrC @@ -78793,7 +86158,7 @@ wcp wwM jYZ hlH -hVh +xvy jtZ lvX lvX @@ -78930,30 +86295,30 @@ bgg bIr tDR tDR -cDo +eVi cKw qUQ jth tjg dQm kbV -kbV -kbV -kbV -kbV -kbV +saC +saC +saC +saC +saC fsC gPq kbV kbV -hJB -qUQ -qjG -xmD +saC +saC +saC +knt hna yiu yiu -yiu +xwZ wea yiu mrc @@ -78967,39 +86332,39 @@ saC saC saC lwm -vIS -pfj -jjV -yaj -saC -saC -saC -saC -xZw -xZw -xZw -xZw -rEV -uHn -xrA -fTS -saC -ybd -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +pwX +pwX +uhx +vlq +vlq saC saC saC -ien +iQb +sse +uZV +neI +xLi +men +tTv +oUq +xuQ +fHH +kXY +aVj +har +qts +nMX +nMX +gvk +sSv +raH +hPQ +sMA +oMo +oUq +oUq +oUq fjr fjr fjr @@ -79030,7 +86395,7 @@ sjy sjy sjy nAu -vil +iTf sjy sjy sjy @@ -79052,7 +86417,7 @@ lVp lVp lVp qVb -tQE +eum lVp kqb kqb @@ -79158,29 +86523,29 @@ tDR tDR tDR cEM -dZs +eXe jur jth kbV kbV kbV +fKt tjg tjg -tjg -tjg +saC eHR bVF frZ -hgM -hgM -gdX -cSh -pHT -hef +tjg +tjg +saC +saC +saC +gRJ ggH wXA wXA -wXA +xGX wXA wXA gck @@ -79193,40 +86558,40 @@ saC saC saC yiu -lAD -yiu -hLY -xmD -jVC -saC -saC -saC -saC -saC -udR -udR -udR -udR -iKw -wEz -saC -saC -ybd -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +wea +qjG +qjG +yaj +qjG saC saC saC -ien +tTv +sqH +pwB +kXY +aYd +njn +nmt +tTv +oUq +oUq +acn +vpq +lDk +lDk +kuN +lbo +hrH +wFv +oUq +kVO +pGQ +lXY +fts +oUq +oUq +oUq fjr fjr fjr @@ -79349,7 +86714,7 @@ nax nax fki jas -ddq +mJG eso eso eso @@ -79391,7 +86756,7 @@ ddS bVF bVF bVF -hgM +wwi dcy hgM hgM @@ -79399,15 +86764,15 @@ eHS kbV kbV tjg -tjg -hJB -qUQ +saC +saC +saC tiQ -xmD +lAK hna yiu yiu -yiu +xwZ yiu yiu nqe @@ -79419,42 +86784,42 @@ saC saC saC yiu -yiu -pEm -xwZ -lwm +mrc +wXA +pHT +pHT mlE saC saC saC -saC -saC -saC -saC -fTS -fTS -fTS -lgf -tfW -tfW -saC -ybd -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -cpy -saC -ien -ien -ien +tiQ +tTv +tTv +leG +leG +hhK +leG +tTv +tTv +tTv +oUq +oUq +oUq +oUq +akn +xGR +oUq +oUq +oUq +oUq +jwV +kVO +qHD +oUq +oUq +oUq +oUq +oUq fjr fjr rxI @@ -79467,7 +86832,7 @@ tpz tGY uiO uwn -uSI +tQe itl aVD oLu @@ -79502,13 +86867,13 @@ ucM cpJ cLi ycv -frc +qfP ycv uKa ucM uKa ycv -frc +qfP ycv uKa uKa @@ -79519,12 +86884,12 @@ eSY tPs tPs jUI -vLW +cSf grP jze grP grP -vLW +cSf xNd iYt oFU @@ -79547,17 +86912,17 @@ grP aVA xNd xNd -vLW +cSf oFU tPs tPs tPs oFU -pvE +gpr tZc pOs tZc -vKm +eUz vUe hoy qzU @@ -79584,8 +86949,8 @@ xFv bxr iqV iqV -xHj -xHj +oda +jVV boQ vpe tuK @@ -79612,13 +86977,13 @@ tDR tDR tDR cDo -dZs +eXe qUQ jth dGV roM roM -roM +ygu duN erZ roM @@ -79626,27 +86991,27 @@ roM roM roM roM -fLi -hJB -qUQ -tiQ saC saC +saC +tiQ +saC +hna yiu yiu -yiu -yiu +saC +saC yiu nqe yiu yiu -yiu -yiu saC -pEm -yiu +saC +saC +saC yiu yiu +nqe yiu yiu saC @@ -79655,32 +87020,32 @@ saC saC tiQ tiQ -saC -saC -saC -saC -saC -saC -saC -nNL -saC -saC -tiQ -tiQ -saC -saC -saC -saC -saC -saC -saC -saC -cpy -cpy -cpy -saC -saC -ien +hhQ +ehM +fdE +ayX +lAS +hef +hNf +vsZ +tiQ +tiQ +tiQ +bjd +fSj +qKO +dOt +rSs +oUq +oUq +oUq +oUq +cTU +oUq +oUq +oUq +oUq +oUq rxI fjr fjr @@ -79706,7 +87071,7 @@ nTx nTx nTx mvR -qPS +kUM oGp xxs eUh @@ -79845,68 +87210,68 @@ del dHc qUQ qUQ -qUQ +jri dEL qUQ qUQ qUQ qUQ qUQ -qUQ -del saC saC -tiQ -saC saC saC -yiu -yiu -yiu -yiu -nqe -yiu -yiu -yiu -pEm -pEm -pEm -yiu -yiu -yiu -yiu -saC +tiQ saC saC saC -jjV -qJE -tiQ -tiQ -tiQ saC saC saC saC -saC -fTS -irx -tiQ -tiQ +wjy +xwZ +xwZ saC saC saC saC +yiu +yiu +nqe +yiu saC saC saC saC +jjV +qJE +tiQ +hhQ +gtX +qjG +vIS +upa +vuS +pfj +ncv +tfK +dXB +tiQ +bjd +eZF +lfj +lfj +yje +bjd +nTj +nTj +nTj +sPH +nTj +nTj +nTj cpy -cpy -cpy -cpy -cpy -saC ien rxI nri @@ -80072,12 +87437,12 @@ dfn dfn dfn jEu -oSX +nTl eWn -svW -svW oSX oSX +oSX +nTl jEu saC saC @@ -80089,50 +87454,50 @@ saC saC saC saC -yiu -yiu +saC +saC nqe yiu yiu yiu -pEm -pEm -pEm -xwZ +saC +saC +saC xwZ xwZ -yiu +mZN +pEm saC saC mxp +jWB +xmD +xQc +xQc +xQc +eoA +ehO +qjG +yiu +yiu jef -pfj -qJE -tiQ -irx -irx -irx -irx -irx -irx -irx vbm -irx -tiQ -tiQ -saC -saC -saC -saC -saC -saC -saC -cpy -cpy -cpy -cpy -cpy -saC +viH +gjB +tiQ +bjd +pqQ +tdM +vFD +yje +bjd +nTj +qqN +vqe +bjC +vqe +isL +nTj ien ien ien @@ -80187,7 +87552,7 @@ kqb kqb kqb mUS -nmL +fWH kqb kqb kqb @@ -80220,7 +87585,7 @@ wiE yhi vNi nNA -qic +mtM rqA gXc yhi @@ -80317,50 +87682,50 @@ saC saC saC saC -yiu +pEm nqe yiu yiu yiu -pEm -yiu -yiu +saC +saC +xzu yiu yiu -xzu +ljm saC saC saC -xzu -wea -hLY +cnA +hdQ +xmD +xQc qJE +xQc qJE -mXA -tKb -qVN -uhx -nEd -qET -nEd -xBL -irx -tiQ -tiQ -saC -saC -saC -saC -saC -saC -saC -saC -cpy -cpy -saC +qJE +qjG +yiu +qjG +qjG +nqe +hLY +oWS +tiQ +bjd +qEQ +lYK +hvh +pqQ +bjd +nTj +qqN +tbK +oan +wjP +isL +nTj cpy -saC -saC ien rxI nLF @@ -80522,9 +87887,9 @@ xLm tiQ tiQ tiQ -dgb -dgb -dgb +hBg +hBg +hBg tiQ lXC lXC @@ -80544,49 +87909,49 @@ saC saC saC saC -yiu +pEm nqe yiu yiu yiu -yiu -yiu +saC xzu yiu yiu yiu +nqe xzu saC -pEm -xzu -yiu -jef -mLX +eBm +gWg +xmD +xQc +xQc qJE -irx -irx -irx -irx -irx -irx -irx -kfu -irx -tiQ -tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -cpy -saC +xQc +xQc +gAS +chT +mis +yiu +acD +nqe +hLY +dcM +tiQ +bjd +qEQ +lYK +hvh +pqQ +bjd +nTj +ipH +cbn +aLG +tLX +bjC +nTj ien ien ien @@ -80657,7 +88022,7 @@ bmg xXg jmG gEk -swf +cIo jmG jmG jmG @@ -80690,7 +88055,7 @@ ubJ ubJ jmG hMz -uwT +fWG jqr xzK wIr @@ -80747,19 +88112,19 @@ xLm cbB tiQ tiQ +aEL +aEL +aEL +aEL jcl +jVa jcl jcl -jcl -jcl -jcl -mjq -jcl ewp fIe fIe -eVi fIe +aWX fIe fMd ewt @@ -80770,50 +88135,50 @@ tiQ saC saC saC -saC -yiu +pEm +pEm nqe yiu yiu yiu +xwZ yiu -xzu mrc wXA wXA -wXA +mZU wXA hwG -xwZ -xzu -yiu -yiu -mMj +syg +jjV +xmD +cHu +jVC qJE qJE +cHu +cLH +gAS +aox +rKa +fpm +yld +hpI +xmD tiQ -tiQ -tiQ -tiQ -tiQ -tiQ -tiQ -tiQ -tiQ -tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +bjd +qEQ +lYK +hvh +pqQ +bjd +nTj +icM +cbn +mNI +tLX +bjC +nTj ien ien ien @@ -80917,14 +88282,14 @@ ubJ ubJ jmG hMz -uwT -uwT +fWG +fWG jqr xzK wIr wIr vLI -nXI +jOx wIr wIr xzK @@ -80973,19 +88338,19 @@ bsx tiQ tiQ tiQ -oUZ -jcl +aJT +aEL cTX iZI iZI iZI svW -efS +ept hRW ewm hRW gqg -fiA +npd svW swu fMx @@ -80998,55 +88363,55 @@ tiQ tiQ saC saC -saC +pEm mbq wXA wXA wXA -wXA +xGX wXA mAC yiu yiu yiu yiu -nqe -pEm -pEm -mxp -yiu -jef -jWr +cpZ +kda qJE -tiQ -tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +xQc +xQc +xmD +mPY +qJE +xQc +xQc +fqU +ecU +tXp +xwZ +lrd +ihf +lyu +tiQ +bjd +eZF +lYK +hvh +eZF +bjd +nTj +ipH +vrE +aJr +tLX +bjC +nTj ien ien ien -saC +cpy ien -saC +cpy ien ien rME @@ -81059,7 +88424,7 @@ wKg wKg wKg vQT -fmg +cjy wKg wKg wKg @@ -81144,9 +88509,9 @@ ild jwM six hMz -uwT -uwT -uwT +fWG +fWG +fWG jqr xxq xxq @@ -81161,7 +88526,7 @@ qUh uwT uwT uwT -uwT +fWG bqE pIx eso @@ -81199,23 +88564,23 @@ xLm tiQ tiQ cbY -jcl -jcl -iZI +aEL +aEL +aLJ dDS iZI iZI -iZI svW -fLP +svW +aCQ swu eRN swu swu -qZB +hwt svW -swu -swu +svW +eRN swu swu saC @@ -81226,55 +88591,55 @@ tiQ tiQ saC saC +pEm yiu yiu yiu +xwZ yiu yiu yiu yiu yiu yiu -yiu -yiu -nqe -yiu -pEm -pEm -yiu -yiu +wvB +xmD +qJE +xQc +xmD +xmD mPY qJE qJE +xQc +rjl +gyB +aox +yiu +wvB +csS +yai tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +bjd +pqQ +lYK +hvh +eZF +bjd +nTj +qqN +gzw +spn +nCC +isL +nTj +cpy +cpy +cpy +cpy +cpy +cpy +cpy ien rMR jGa @@ -81309,7 +88674,7 @@ gwR sjy sjy sjy -gEA +hvZ sjy sjy cBs @@ -81371,9 +88736,9 @@ ild ild qfz hMz -uwT -uwT -uwT +fWG +fWG +fWG uwT uwT uwT @@ -81384,11 +88749,11 @@ uwT uwT uwT uwT -uje -uwT -uwT -uwT +dUY uwT +fWG +fWG +fWG bqE pIx eso @@ -81424,25 +88789,25 @@ cpy tiQ tiQ tiQ -jcl -jcl -iZI -iZI -iZI +aEL +aEL +aLJ +aLJ +aLJ dDS iZI fFw -iZI +fib jcl -fLP +aCQ dXd exB jcl swu -qZB +hwt jcl -swu -fMT +eHp +dHk gKD gpu tra @@ -81454,53 +88819,53 @@ saC saC saC saC +pEm +pEm yiu +xwZ yiu yiu yiu yiu yiu yiu -yiu -yiu -yiu -mbq -lXQ -yiu -xwZ -wea -yiu -jef +wvB +xmD +xQc +xQc +hdQ +iQe +vIS jWr qJE +xQc +xQc +enk +aox +yiu +wvB +pvz +xQc tiQ -tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +bjd +pqQ +lYK +hvh +pqQ +bjd +nTj +qqN +bjC +gNN +bjC +isL +nTj +cpy +cpy +cpy +cpy +cpy +cpy ien ien ien @@ -81523,14 +88888,14 @@ opl opl kEN ben -gLw +xGd ygw ndb vbX tjM ndb ygw -kfa +oMt ogf nLD xen @@ -81599,9 +88964,9 @@ jwM qfz xzK eZe -uwT -uwT -uwT +fWG +fWG +fWG uwT uwT uwT @@ -81611,11 +88976,11 @@ uwT uwT uwT uwT -uwT -uwT -uwT +fWG +fWG +fWG uje -uwT +fWG bqE jas jas @@ -81650,26 +89015,26 @@ cpy cpy tiQ tiQ -jcl -jcl -iZI -iZI -iZI +aEL +aEL +aLJ +aLJ +aLJ iZI dDS iZI iZI -iZI -jcl -fLP -evx -svW svW jcl -qZB +aCQ +evx +nTl +nTl jcl -swu hwt +jcl +svW +dYX hRy gqG gOo @@ -81682,53 +89047,53 @@ saC saC saC saC +pEm +saC saC yiu +kVa yiu yiu yiu -yiu -yiu -yiu -wea -yiu -nqe -xzu -pEm -dRy +uul +dZG +xmD +seF +qJE +lrQ dRy yiu mMj qJE qJE +seF +uPv +iSc +qjG +wvB +xmD +dmE tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +bjd +eZF +lYK +hvh +pqQ +bjd +nTj +nTj +nTj +nTj +nTj +nTj +nTj +cpy +cpy +cpy +cpy +cpy +cpy +cpy ien tNQ qSH @@ -81827,8 +89192,8 @@ qEc jmG gkY eZe -uwT -uwT +fWG +fWG uwT uwT uwT @@ -81836,13 +89201,13 @@ tUL uwT uwT uwT -uwT -uwT -uwT -uwT -uwT -uwT -uwT +fWG +fWG +fWG +fWG +fWG +fWG +fWG jqr xzK jas @@ -81876,27 +89241,27 @@ cpy cpy cpy tiQ -jcl -jcl -iZI -iZI -bIQ -cce -iZI -dDS -bIQ -cce -iZI -jcl -fLP -emr -svW +aEL +aEL +aLJ +aLJ +aLJ +aLJ +fib +fXU +fib +fib svW jcl +aCQ +emr +nTl +nTl +dBe qZB -jcl -swu -hwt +jVa +svW +dYX jcl jcl gOG @@ -81911,51 +89276,51 @@ saC saC saC saC +vjl +vjl yiu yiu yiu yiu -yiu -yiu -yiu -yiu -nqe -xzu -pEm -pEm -pEm +hLY +knt +kOF +seF +qJE +iQe +baG yiu jef jWr qJE +seF +xuD +ezB +qjG +tOM +egK +gjB tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +bjd +pqQ +lYK +hvh +qEQ +bjd +moe +moe +moe +moe +moe +moe +moe +cpy +cpy +cpy +cpy +cpy +cpy +cpy ien rNm jOw @@ -82055,7 +89420,7 @@ jmG jmG hkO eZe -uwT +fWG uwT uwT ixP @@ -82064,13 +89429,13 @@ uwT uwT cpy cpy -uwT -uwT -uwT -uwT -uwT -uwT -uwT +fWG +fWG +fWG +fWG +fWG +fWG +fWG bqE jas wTx @@ -82103,27 +89468,27 @@ cpy cpy tiQ tiQ -jcl +aEL +aLJ +aLJ +dFT +aLJ iZI iZI -fFw -bJE -ccu -ccu -wyA -fvQ +dDS iZI iZI -jcl -fLP -evx svW -svW -jcl -qZB +jVa +fLP +wSb +nTl +nTl jcl -swu hwt +jcl +svW +dYX hRy grz uNT @@ -82137,51 +89502,51 @@ saC saC saC saC -xzu -yiu -yiu -yiu +saC +vjl +vjl +vjl xzu xzu xzu -yiu -yiu -fxh -yiu -dRy +hLY +knt +xQc +xQc +srf dRy -pEm +yiu yiu wea nmX qJE +xQc +xQc +ayX +hna +nqe +feS +iDg tiQ -tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +bjd +pqQ +lYK +hvh +qEQ +bjd +bjd +bjd +bjd +bjd +bjd +bjd +alI +alI +alI +cpy +cpy +cpy +cpy ien ien ien @@ -82223,7 +89588,7 @@ sjy kqb kqb mUS -egP +jxT kqb kqb pGl @@ -82282,22 +89647,22 @@ ngL jmG jmG dVD -uwT +fWG uwT uwT ixP tKe -uwT +fWG cpy cpy uje -uwT -uwT -uwT +fWG +fWG +fWG dWD -uwT -uwT -uwT +fWG +fWG +fWG xgW jas xqV @@ -82329,28 +89694,28 @@ cpy cpy tiQ tiQ -jcl -jcl +aEL +aEL +aLJ +aLJ +iZI +iZI iZI -bIQ -cce -eAF -cdj iZI cHj -dgq +azz azz eFP fIe egd ejN -ewt -jcl +fLA +fLA eVW -qZB +hwt jcl svW -hwt +rbW tiQ tiQ tiQ @@ -82365,51 +89730,51 @@ saC saC saC saC -jWJ -yiu -yiu -tiQ -tiQ -xzu -yiu -yiu -fxh -yiu -yiu -yiu -tiQ +vjl +vjl +vjl +vjl +vlq +xwZ +syg +iqz +xQc +qJE +qJE +aox +xwZ xwZ pEm -nno +syg qJE qJE +xQc +pwA +kaQ +nqe +hLY +xmD tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +bjd +pqQ +lYK +hvh +eZF +bjd +okj +vJw +apd +apd +lfj +bjd +bjd +bjd +alI +cpy +cpy +cpy +cpy +cpy ien iqb kdx @@ -82473,7 +89838,7 @@ cpy tTD tTD lpi -vmp +noH sCr uew xMO @@ -82506,25 +89871,25 @@ jwM ild ild vBd -nZn +kua jmG fEY -uwT +fWG uwT uwT ixP -tKe -uwT -uwT -uwT -uwT -uwT -uwT -uwT +fBR +fWG +fWG +fWG +fWG +fWG +fWG +fWG hMN -uwT +fWG xbM -uwT +fWG xzK jas myC @@ -82555,29 +89920,29 @@ bMX cpy cpy tiQ -oUZ -jcl +aJT +aEL +aLJ +aLJ iZI iZI -bJE -ccu -ccu -ccu -ccu -wyA -fvQ +iZI +iZI +iZI +dDS +iZI iZI svW jcl -fLP +aCQ swu -eRN +ojn swu swu -qZB -jcl -svW hwt +aEL +svW +dYX hRy ifh gOo @@ -82593,50 +89958,50 @@ saC thU thU thU -kpm -ksv -ksv +saC +saC +dxc ntq -lcP -yiu -pEm +qjG +hLY +knt npb -xwZ -xwZ -pEm -tiQ +xmD +iQe +baG +yiu yiu yiu jef pfj -nwR -tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +tRS +yhz +xmD +kaQ +nqe +qjG +hKK +tiQ +bjd +eZF +lYK +hvh +eTQ +qKO +woU +woU +woU +woU +xXv +lfj +bjd +bjd +alI +cpy +cpy +cpy +cpy +cpy ien isa svK @@ -82733,13 +90098,13 @@ ild uqP wjF ngL -nlO +oHW jmG fEY +fWG uwT uwT -uwT -uwT +fWG wVo dqB con @@ -82782,29 +90147,29 @@ bMX cpy tiQ tiQ -jcl -iZI +aEL +aLJ +aLJ iZI iZI -dYX ccN cwO cwO cKQ cUg -dgI -dHj iZI +dHj +vNr jcl egt swu -eRN swu swu -qZB -jcl swu hwt +aEL +cWH +dYX jcl jcl gOG @@ -82821,48 +90186,48 @@ tiQ saC saC saC -yiu -yiu -lcP -lcP -yiu -yiu -nqe -yiu -yiu +saC +saC +vjl +qjG +hLY +knt +whK +xmD +hna yiu yiu yiu yiu noD jWB -nxQ -tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +tRS +aiO +snP +vxq +dxJ +jWB +pAw +tiQ +bjd +yje +lYK +jZE +hNP +hNP +hNP +hNP +hNP +vFD +dfK +xXv +lfj +bjd +alI +cpy +cpy +cpy +cpy ien ien ien @@ -82878,7 +90243,7 @@ xjF vSc xjF gCO -hKz +tqT wgW wgW jRT @@ -82896,7 +90261,7 @@ ulZ ulZ wIE mVi -oik +mxg tAu hre oTY @@ -82966,7 +90331,7 @@ gIh uwT uwT uwT -uwT +fWG rCQ xzK jas @@ -83008,30 +90373,30 @@ bMX bMX cpy tiQ -jcl -jcl -iZI +acq +bJE +aLJ dFR azz -bKb +azz azz azz cFR cKS eJw -eAF -ikr iZI +iZI +fib jcl -fLP +aCQ swu -eRN swu swu -qZB -fsV swu hwt +jcl +mrL +dYX hRy oUC uNT @@ -83046,16 +90411,16 @@ iSF jeD tiQ saC -jYj -yiu -yiu -yiu -yiu -yiu -yiu +saC +saC +saC +qjG +qjG yiu +hLY +knt mad -yiu +xmD juw wea yiu @@ -83064,33 +90429,33 @@ yiu hLY saC saC -tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +xQc +mMr +eJq +knt +xmD +jpm +tiQ +bjd +yje +abL +qsW +qsW +qsW +qsW +cgn +mqx +jZE +vFD +pqQ +qpd +bjd +alI +cpy +cpy +cpy +cpy +cpy ien iel iel @@ -83193,7 +90558,7 @@ ciA uwT uwT uwT -uwT +fWG jKa jas jas @@ -83235,30 +90600,30 @@ bMX bMX cpy tiQ -jcl -iZI +afn iZI +bNE dDS iZI -eRg -cdj +fFw +iZI cxu cGY hgy iZI iZI -ipB -fDC +iZI +aLJ jcl -fLP -ijO -gex -eAz +aCQ +bOv lXC -qZB -fsV -swu +eAz +lFk hwt +jcl +mrL +dYX tiQ tiQ tiQ @@ -83273,15 +90638,15 @@ iTn jfK tiQ jEq -jYv -kpo -yiu +saC +qjG +qjG yiu yiu yiu lDc lMN -nqe +whK mnw qjG yiu @@ -83293,31 +90658,31 @@ saC tiQ tiQ tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +seF +kne +rCz +yhz +tiQ +bjd +eTQ +aLf +kbb +pMz +yaH +tyU +lYK +mqx +mqx +hvh +pqQ +qpd +bjd +alI +cpy +cpy +cpy +cpy +cpy ien iel iel @@ -83391,7 +90756,7 @@ vNk vNk vNk vKl -vWp +fdb vNk vNk vNk @@ -83420,7 +90785,7 @@ uwT uwT uwT uwT -uwT +fWG jKa jas rWX @@ -83449,7 +90814,7 @@ lHS phq aam jas -wFC +wcM aEF jas cpy @@ -83462,33 +90827,33 @@ bMX bMX cpy tiQ -jcl +aEL aqT azz aZD iZI -bLh -cdP iZI +iZI +clf cHj frH ciS iZI -dHk +iZI fFp -svW -fLP -swu -eRN -swu -swu -qZB -svW -swu -hwt -hRy -ifh -gPQ +nno +nTl +nTl +nTl +nTl +nTl +nTl +lXC +eHp +dYX +jcl +jcl +jcl aCQ lXC lXC @@ -83501,49 +90866,49 @@ tFZ tiQ lKl xmD -hna -yiu -yiu +rVB +mbs +mLX leH lmu lDr lNI -lNA +aqo ugN -qjG -yiu +pHT +lXQ yiu yiu yiu hLY +tRS +cRD +sRx +cRD xmD -ybd -nFt -ybd -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +knt +xmD +skk +tiQ +bjd +bjd +bjd +wRf +bjd +hKI +hFA +lYK +mqx +mqx +hvh +pqQ +qpd +bjd +alI +cpy +cpy +cpy +cpy ien ien ien @@ -83647,7 +91012,7 @@ uwT uwT uwT uwT -uwT +fWG jKa gSn vpe @@ -83676,7 +91041,7 @@ phq phq qYq jas -nQu +wbo aEF jas cpy @@ -83690,33 +91055,33 @@ bMX cpy tiQ jEu -jcl +aEL svW svW -bwU -bLk jcl -cyv +jcl +jcl +jcl aqT jcl eJZ dgO +aEL +nno +nno +nTl +nTl +nTl +nTl +nTl +nTl +lXC +eLx +dYX jcl -svW -svW -fLP jcl -evx -eBy jcl -qZB -svW -svW -hwt -jcl -jcl -gOG -heF +aCQ lXC lXC tiQ @@ -83724,54 +91089,54 @@ tiQ idq jcl jcl -oUZ +kkq tiQ jEu xmD -hna -yiu -kEL +xYD +fxh +ezB saC lmz -juw -yiu -fkL +liK +xmD +saC saC qjG -qjG +yaj yiu kEL yiu noV -xmD -ybd -nFt -ybd -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +lyu +cRD +ayX +xVq +liK +gyC +pfj +pvz +tiQ +tiQ +bjd +rMD +eZF +bjd +bjd +bjd +lYK +mqx +mqx +hvh +pqQ +qpd +bjd +alI +cpy +cpy +cpy +cpy +cpy ien ssh tNQ @@ -83874,7 +91239,7 @@ cpy cpy uwT uwT -uwT +fWG taQ oVS kwj @@ -83903,7 +91268,7 @@ eJd ptU jas jas -nQu +wbo aEF jas cpy @@ -83917,32 +91282,32 @@ bMX cpy cpy efy -jcl +bKb aAb hRW -eMm -bMa -cfg +hRW +hRW +hRW hRW gqg hRW eMl -dhJ -hRW -dQv -ccg -egD -swu -eRN -swu -swu -dhJ -aJh -fzx -hwt -hRy -oUC -itp +iOx +cHL +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +dYX +jcl +jcl +jcl aCQ lXC lXC @@ -83952,53 +91317,53 @@ ier hRW kHX jcl -aqT +dAG tiQ jYE -hna -yiu +xYD +knt +lAD saC saC -lmY +seF +xQc saC saC -fkL -mnX myV -qjG +yaj qjG yiu yiu hLY +haG +xVq xmD -ybd -nFt -ybd -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +xVq +xmD +jjl +hLY +vDw +rbZ +qjG +bjd +rMD +eZF +bjd +fSf +cZH +jDN +mqx +nJW +hvh +eZF +lfj +bjd +alI +cpy +cpy +cpy +cpy +cpy ien tNQ qSH @@ -84021,12 +91386,12 @@ xjF xFp dHF xZP -mkT +gYH xAZ xAZ xOw ykT -rlE +yja buI mSe nYF @@ -84036,12 +91401,12 @@ mSe nDn hYV mZj -rlE +yja xAZ qqx pag bia -mkT +gYH lDE tTD tTD @@ -84056,7 +91421,7 @@ cpy cpy rnB plN -rEo +pOa jKb tTD rnB @@ -84145,30 +91510,30 @@ cpy cpy efy jcl -aCQ +bNT swu bxU -bNE -chm -czC swu swu -eMz swu swu -lXC -eBy -swu -jcl -evx -jcl -oUZ -swu -jcl -lXC -dhJ +cyv +eMz +cyv +gdX +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +dZd +hRW hRW -gvs hRW egD lXC @@ -84181,56 +91546,56 @@ iUT kHX evx xQc -xmD -hna -juw -saC +lAK +xYD +ljd saC saC +ncA lDN +pxN saC -fkL -saC -yiu +xQc +sdR +lNA +wXA +vhA +wXA +iyQ +qix +eKK +hef +eKK +hef +iFk +jef +pfj qjG -yiu -juw -yiu -hLY -xmD -ybd -nFt -ybd -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -ien -ien -ien -wPA -wPA -ien -ien +qjG +bjd +nRy +pqQ +bjd +fSf +cZH +mqx +mqx +mqx +hvh +pqQ +qpd +bjd +alI +cpy +cpy +cpy +wDj +wDj +wDj +vGB +vGB +wDj +wDj pZo vGp vGp @@ -84245,7 +91610,7 @@ dHF gLa dHF hAw -dHF +dgd qSH sPh uKy @@ -84300,12 +91665,12 @@ nYW vkD ngx sSG -lkr +ctu cXf qDw ngx wNp -lkr +ctu xgA bsG vOT @@ -84350,8 +91715,8 @@ qHr vpe vxa ppU -nQu -nQu +wbo +wbo nQu nQu nQu @@ -84371,93 +91736,93 @@ bMX cpy cpy efy -jcl -aCQ -swu -swu -bNT -cil -cAp -swu -ezW -cUh -dhW -oWq -dRf -fIe -oWq -fIe -ewY -eCP -jcl -swu -jcl -lXC +bLh +bQC lXC lXC -ijO lXC lXC lXC lXC +ezW +cUh +dhW +nno +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +efS +elx +enr +elx +elx +elx +elx hNj hXA -egD -cHy -jIQ -bXl -jln -jEQ -hef -ggH -wXA -kFo -kFo -kFo -kFo +fvQ +fDC +gwk +hgQ +exB +xQc +xmD +xmD +knt kFo +saC +nwR +oem maj -mqf -yiu -yiu -yiu +maj +seF +knt +hna yiu yiu -hLY +pEm +tlv +qJE +xVq xmD -ybd -nFt -ybd -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -ien +xVq +ayX +hna +yiu +oyK +ayX +vKP +bjd +osm +pqQ +bjd +fSf +cZH +cgn +mqx +mqx +hvh +pqQ +qpd +bjd +alI +cpy +cpy +wDj nJV elX hll hKu ksa kOz -ien +wDj lVZ vGp vGp @@ -84578,13 +91943,13 @@ vpe ahZ jas jas -dLC -xxz -pYO -pYO +jfP +mKZ pYO pYO -nUF +apC +apC +tWv jas jas cpy @@ -84598,30 +91963,30 @@ bMX cpy cpy efy -jcl -aCQ -swu -swu -iRY +bLk +cce +lXC +lXC +ijO ciL -swu -cHy +lXC +crX eBi cUl dhX dIX -lXC -jcl -iRY -jcl -gex -eFk -jcl -swu nTl -lXC -lXC -lXC +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nno +nno lXC lXC lXC @@ -84634,57 +91999,57 @@ cHy jIQ bXl jcl -jFt -xmD -hna -yiu -saC -saC +xQc +tMV +tMV +kne +xQc +mkb lnd -saC -saC -fkL +xYD +pAN +maj mql -lcP -yiu +knt +hna yiu yiu yiu -hLY +syg xmD -ybd -fdE -ybd -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -ien +xVq +xmD +xVq +uGj +hna +wea +hLY +dpz +qjG +bjd +lfj +pqQ +bjd +bjd +bjd +lYK +mqx +mqx +hvh +pqQ +qpd +bjd +alI +cpy +cpy +wDj aJS ezo eJR iDH eJR rtX -lUy +wvX tJm vGp vGp @@ -84784,16 +92149,16 @@ uwT uwT uwT jqr -cpy -cpy -cpy -cpy +xxq +xxq +xxq +xzK jas jas -nZx +bKj vpe eso -gRi +hZC coR jas sjA @@ -84825,31 +92190,31 @@ bMX cpy cpy efy -jcl +bMa aCQ swu swu swu -swu +cil swu swu eBH cVc dip -swu -lXC -jcl -swu -emW -evx -jcl -jcl -swu -jcl -lXC -fMT -tra -gwk +gnd +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +gKM +jhS +jhS tra egY lXC @@ -84863,51 +92228,51 @@ tCX jcl xQc jjV +xmD +knt +xQc +mlp +nxQ +oKK +pDM +qTE +xQc +wyA hna yiu -saC -saC -saC -saC -saC -nqe -yiu -lcP yiu yiu -yiu -yiu -hLY +syg xmD -ybd -fdE -ybd -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -ien -rgW +cRD +uvt +xVq +uGj +gGg +wTq +jWB +lKl +lTi +bjd +lul +dfK +qKO +xLr +xXv +lYK +mqx +mqx +hvh +pqQ +qpd +bjd +alI +alI +alI +wDj +cPg eJR -gok +kbH iHD ksk kQc @@ -85011,11 +92376,11 @@ uwT uwT uwT uwT -cpy -cpy -cpy -cpy -cpy +uwT +uwT +uwT +bqE +xzK jas gbh vpe @@ -85035,7 +92400,7 @@ ctE jas aEF nQu -wFC +wcM jas cpy cpy @@ -85052,32 +92417,32 @@ bMX cpy cpy efy -jcl -aDS +bIQ +ccu +tra tra tra tra tra tra -cHL tra cVm -fMT +cAp tra -dRD -ebr -egY -swu -eRN -swu -swu -fkq -aPP -fzz -hwt -hRy -ifh -gPQ +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +nTl +vQn +aEL +aEL +jcl aCQ lXC lXC @@ -85087,58 +92452,58 @@ aDS tra tCX jcl -jcl +cYe tiQ -jjV +dXo +xYD +kpE +xQc +xQc +nEd +piW +pEp +xQc +xQc +knt hna -xzu -saC -saC -saC -saC -wea -nqe -yiu -yiu -yiu -yiu -yiu +qFW yiu -hLY -xmD -ybd -nFt -ybd -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC +noD +ihf +suG +cRD +lkl +xVq +hdQ +ayX +nqQ +hdQ +asH +tiQ +bjd +dXX +pWC +rMD +bjd +pqQ +lYK +mqx +mqx +hvh +eZF +bjd +bjd +bjd +bjd +bjd +mPj bel ftd -gok +lTd iJE kvM kYL -ien +wDj lYg qSH qSH @@ -85208,7 +92573,7 @@ uQr wpd hMT hFG -mfS +qEr osV qAt wMq @@ -85235,14 +92600,14 @@ ybj uwT uwT uwT -uwT -uwT -uwT -cpy -cpy -cpy -cpy -cpy +dqB +con +con +con +con +con +xzK +xzK jas jas gSn @@ -85262,7 +92627,7 @@ ctE jas kFd nQu -jwO +qIt jas cpy cpy @@ -85279,93 +92644,93 @@ bMX cpy tiQ jEu -jcl +bIQ svW svW oUZ jcl jcl -bwU -cRT -jcl -eJZ -hwt jcl -svW -svW -afB jcl -evx jcl +eJZ +hwt jcl -qZB -svW -svW +lXC +lXC +nTl +nTl +nTl +nTl +nTl +nTl +nno +lXC hwt +jVa jcl jcl -gOG -hfE +fkW lXC lXC hOy tiQ +qyp jcl jcl -jcl -jcl +bCd tiQ jEu xmD -hna -xzu -xzu -saC -saC -juw -yiu -mbq -lXQ -yiu +xYD +kpE +xmD +xQc +xQc +seF +xQc +xQc +uQi +knt juw kEL yiu -yiu hLY -xmD -ybd -nFt -ybd -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -cpy -saC -saC -saC saC saC +tiQ +tiQ +tiQ +seF +tMV +rCz +seF +tiQ +tiQ +bjd +bjd +bjd +bjd +bjd +qEQ +abL +cgn +mqx +hvh +dfK +woU +woU +woU +xnX +gib +mPj btP -eJR +axN eJR iMQ -ien -ien -ien +wDj +wDj +wDj pRv xSv xSv @@ -85393,7 +92758,7 @@ gUi jHi fkj mVi -oik +mxg tAu mHU fkj @@ -85462,17 +92827,17 @@ uwT uwT uwT uwT -uwT -uwT -uwT -uwT -cpy -cpy -cpy -cpy -cpy -ofF -tkA +bqE +uzI +dDq +dDq +uzI +dDq +dDq +uzI +uzI +uzI +ybz tkA tkA tkA @@ -85487,9 +92852,9 @@ ctE ctE ctE jas -aEF +wHX nQu -hbO +sZz jas cpy cpy @@ -85505,7 +92870,7 @@ bMX bMX saC tiQ -jcl +bwU aqT azz azz @@ -85519,19 +92884,19 @@ dDS fFw iZI iZI -svW -fLP -swu -eRN -swu -swu -qZB -svW +lXC +nTl +nTl +nTl +nTl +nTl +nTl +lXC swu hwt -hRy -oUC -itp +jVa +jcl +jcl aCQ lXC lXC @@ -85544,53 +92909,53 @@ jhY tiQ jjV xmD -hna -yiu -wea -yiu -yiu -yiu -yiu -yiu -mbq -lXQ -wea -yiu -yiu -yiu -hLY -saC -ybd -nFt -ybd -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -cpy -cpy -cpy +xYD +fxh +hdQ +tMV +whK +xmD +xmD +xmD +xmD +gyC +kpG saC saC saC saC -bUN +tiQ +tiQ +yai +ayX +ayX +xmD +xmD +kss +tiQ +tiQ +alI +alI +alI +alI +bjd +lwr +rSs +abL +cgn +jZE +hNP +hNP +hNP +efM +caV +pcV +xLr +lAa gjA rtX -ien -ien +wDj +wDj vGp vGp pZo @@ -85686,20 +93051,20 @@ fWG uwT uwT pLu -gVA -aep -aep -gVA -aep -aep -gVA -gVA -gVA -cpy -cpy -cpy -wQa -wQa +uwT +uwT +uwT +bqE +yar +fOX +fOX +rOb +rOb +rOb +xaN +vDo +tos +dhH wQa wQa wQa @@ -85714,7 +93079,7 @@ ctE ctE ctE jas -aEF +wHX nQu fZA jas @@ -85733,26 +93098,26 @@ bMX saC saC saC +aLJ iZI iZI iZI iZI -gat dDS fFw -cIm -hgQ +iZI +iZI dDS iZI -gat +iZI iZI jcl -fLP -lXC -gex -lXC -lXC -qZB +aCQ +pQR +nno +nno +jPz +hwt jcl iRY hwt @@ -85771,52 +93136,52 @@ jic tiQ jjV iQe -kpE -yiu -yiu -yiu -yiu -yiu -yiu -yiu -yiu -nqe -yiu -yiu +vIS +kBm +pEs +qET +aqo +pEs +rmV +gwK +gwK +xFt yiu yiu -hLY -saC -tiQ -tiQ -tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC saC saC saC +tiQ +kgm +gIZ +iQe +vIS +vIS +pfj +vAX +kJc +tiQ saC -cpy -cpy -cpy -cpy -cpy saC saC -bUN +alI +bjd +gzY +ama +kbb +abL +qsW +qsW +qsW +qsW +xsE +eZF +tyb +lao +iJE gok -hHj -wPA +rtX +vGB mTa oqn pdv @@ -85824,7 +93189,7 @@ umR qSH qSH qSH -qSH +vGp vGp ecq qSH @@ -85840,7 +93205,7 @@ xAw pKX pKX kIZ -laB +jro pKX pKX pKX @@ -85913,20 +93278,20 @@ oTD ycM miZ tXW -aep -yar -yar -yar -yar -yar +uwT +uwT +uwT +bqE yar -aep -wQa -wQa -wQa -wQa -wQa -wQa +fOX +gVA +gVA +xPH +gVA +xaN +vDo +tos +dhH wQa wQa wQa @@ -85959,27 +93324,27 @@ bMX bMX saC saC -jcl -jcl +aGI +bdv +aLJ +aLJ iZI iZI +dDS iZI -bJE -clf -ccu cIr -cLb +iZI eOe -fop -fvQ +iZI +iZI fFw jcl -fLP -swu -eRN -swu +aCQ swu -qZB +mrL +mrL +mrL +hwt jcl swu hwt @@ -85999,59 +93364,59 @@ tiQ xmD hna yiu -yiu -yiu -tiQ -yiu -yiu -kEL +hLY +xmD +tMV +whK +xmD +ajY yiu yiu nqe yiu -tiQ -saC yiu -hLY +yiu saC saC tiQ +dck +hmV +qCE +xSL +txo +jef +pfj +tfK +tiQ saC saC saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -cpy -cpy -cpy -cpy -cpy -ien -cGd -rtI -hKu -wPA +alI +bjd +bjd +lfj +eTQ +woU +aLf +ubF +ubF +woU +woU +otx +qYy +mPj +rtX +iJE +rtX +vGB ncz -otC +kKj pgp umR qSH qSH -qSH -qSH +vGp +vGp kqp ecq vTx @@ -86082,7 +93447,7 @@ gdO gdO gdO ayn -xNw +wHY gdO gdO tTK @@ -86140,20 +93505,20 @@ xbk mRx psQ fWG -aep -cwL -dsa -dsa -bnd -uXa -yar -aep -wQa -eXG -cex -cex -wQa -wQa +uwT +uwT +uwT +bqE +mam +fOX +gVA +gVA +acp +gVA +xaN +vDo +tos +dhH wQa wQa wQa @@ -86187,28 +93552,28 @@ bMX saC saC saC -jcl -iZI -iZI -iZI -dZd +aGI +aLJ +aLJ +aLJ +aLJ dDS iZI iZI iZI dDS fpn -cNB iZI +oim jcl -fLP +aCQ swu -eRN swu -iRY +mrL +lFd qZB -jcl -swu +jVa +pgJ hwt jcl jcl @@ -86226,58 +93591,58 @@ tiQ vjl hna yiu -yiu +hLY +xCS tiQ tiQ +lAK +xNt yiu yiu -wea +nqe yiu yiu -nqe yiu +hLY +xmD +idX +mFg +tqh +iQe +csy +wWc +pfj +syV +kJc tiQ saC saC -jef -saC -saC -tiQ -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC saC -saC -saC -saC -saC -saC -saC -saC -cpy -cpy -cpy -cpy -ien +alI +alI +bjd +bjd +bjd +bjd +bjd +bjd +bjd +bjd +bjd +bjd +bjd +mPj rhh rtX xjU -ien +wDj nff oxT pgG umR qSH -qSH -qSH +vGp +vGp kqp xFp tDS @@ -86367,20 +93732,20 @@ qTI fss noT fWG -aep -mWd -rZL -rZL -oiK -xJB -gVA -gVA +uwT +uwT +uwT +bqE +uzI +rOb gVA -eXG -eXG -eXG -wQa -wQa +qpE +acp +xPH +xaN +vDo +tos +dhH wQa wQa wQa @@ -86415,10 +93780,10 @@ saC saC saC saC -jcl -iZI -iZI -bQC +aGI +aLJ +aLJ +dFT cmB azz azz @@ -86428,12 +93793,12 @@ iZI dJs svW jcl -fLP +aCQ swu -eRN swu swu -qZB +swu +hwt jcl svW hwt @@ -86452,66 +93817,66 @@ saC saC saC saC -bkQ -saC -saC +yiu saC saC -yiu -yiu +tiQ +tiQ +xmD +hna yiu mrc mAC yiu yiu -saC -saC -saC -saC -saC +kVa +hLY +hdQ +yjg +xmD +hna +wAE +lmY +lmY +sfM +hLY +xmD tiQ saC saC saC saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -cpy -cpy -cpy -ien -ien -ien -wPA -ien -ien +alI +alI +alI +alI +alI +alI +alI +wDj +wDj +wDj +wDj +wDj +wDj +vGB +moQ +vGB +wDj qSH qSH qSH umR -qSH -qSH -qSH +vGp +vGp +vGp uRb tDS tDS vzg vUx nmB -nmB +nrL nmB ddP vwQ @@ -86594,20 +93959,20 @@ uwT uwT fWG fWG -gVA -hcv -swD -swD -pur -dDq -vWc +uwT +uwT +uwT +bqE +uzI +rOb +xPH acp -lSF -eXG -eXG -vDo +xPH +xPH +wZz vDo -wQa +tos +dhH wQa wQa wQa @@ -86644,23 +94009,23 @@ saC saC saC saC +cdj +aLJ +aLJ +aLJ iZI iZI -iZI -iZI -iZI -gat dDS fFw iZI svW jcl -fLP -dXd -exB +aCQ +swu +jcl jcl swu -qZB +hwt jcl svW bye @@ -86682,20 +94047,27 @@ saC saC saC saC +tiQ +tiQ saC -saC -saC -wTq +rVB mbs msb wTq wTq wTq wTq -saC -saC -saC -saC +jWB +xmD +tMV +xmD +hna +wAE +lmY +lmY +sfM +hLY +ayX tiQ saC saC @@ -86707,31 +94079,24 @@ saC saC saC saC +wDj +wDj saC saC saC -saC -saC -saC -saC -saC -saC -saC -cpy -cpy -cpy -ien -qSH -qSH -qSH -qSH +wDj +eOT +sOL +sOL +sOL +wDj qSH qSH qSH umR -qSH -qSH -qSH +vGp +vGp +vGp uRb hDZ nuQ @@ -86821,20 +94186,20 @@ uwT uwT fWG fWG +uwT +uwT +uwT +bqE +yar +fOX gVA -cwL -dsa -dsa -bnd -uXa -vWc -acp -lSF -eXG -cex +gVA +gVA +gVA +wZz vDo -wQa -wQa +tos +dhH wQa wQa cex @@ -86872,28 +94237,28 @@ saC saC saC saC -iZI -iZI -iZI -iZI -dZd -cHj -azz -azz -azz +aLJ +aLJ +aLJ +aLJ +fib +gbQ +jYj +jYj +eFP fIe egd -enr -svW -svW +ewt +nTl +nTl jcl -qZB +hwt jcl -swu +svW hwt hRy ifh -gOo +eMm aCQ lXC lXC @@ -86909,20 +94274,27 @@ saC saC saC saC -saC -saC +tiQ +tiQ xmD xmD knt xmD xmD xmD +lkl xmD xmD -saC -saC -saC -tiQ +xmD +idX +iDg +tqh +gGg +xME +hYg +jWB +eIT +kJc tiQ saC saC @@ -86934,31 +94306,24 @@ saC saC saC saC +wDj saC saC saC -saC -saC -saC -saC -saC -saC -saC -saC -cpy -cpy -ien -qSH -qSH -qSH -qSH +arN +vGB +sOL +eJR +eJR +fQD +vGB qSH qSH qSH umR -qSH -qSH -qSH +vGp +vGp +vGp uRb fRk peS @@ -87033,7 +94398,7 @@ vOT xgA acE kEQ -vyk +meK otS fWG cpy @@ -87041,27 +94406,27 @@ cpy uwT uwT uwT -uwT -uwT +fWG +fWG uwT uwT cpy fWG uwT -aep -mWd -rZL -rZL -oiK -xJB +uwT +uwT +uwT +bqE +yar +fOX gVA gVA gVA -wQa -wQa -wQa -wQa -wQa +qpE +wZz +vDo +tos +dhH cex cex eXG @@ -87100,28 +94465,28 @@ saC saC saC saC +aLJ +aLJ +aLJ iZI -iZI -iZI -cNB dDS iZI -gat iZI -jcl -fLP -evx -svW svW -jcl +jVa +fLP +iOt +nTl +nTl +dBe qZB -jcl -swu +jVa +svW hwt jcl jcl -saC -saC +eRg +fmB saC saC saC @@ -87148,6 +94513,16 @@ tiQ tiQ tiQ tiQ +tiQ +snP +sDf +kpo +wQs +llG +noD +lMF +iDg +tiQ saC saC saC @@ -87158,34 +94533,24 @@ saC saC saC saC +wDj saC saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -ien -ien -ien -qSH -qSH +iJE +hZg +vGB +sOL +rlB +azE +qYp +vGB qSH -cpy qSH qSH umR -qSH -qSH -qSH +vGp +vGp +vGp uRb tDS pKo @@ -87197,7 +94562,7 @@ xuk kHP wxZ ldg -tqG +vDT kSb nIa jvu @@ -87267,28 +94632,28 @@ cpy uwT uwT uwT +fWG +fWG +fWG +fWG uwT +cpy +uIe uwT uwT uwT uwT -cpy -uIe -uwT -aep -hcv -swD -swD -pur -dDq -yar -aep -eXG -wQa -wQa -wQa -cex -cex +bqE +mam +fOX +fOX +rOb +rOb +fOX +wZz +vDo +tos +dhH eXG eXG eXG @@ -87326,28 +94691,28 @@ saC saC saC saC -jcl -iZI -iZI -iZI +cfg +aLJ +aLJ +aLJ iZI dDS iZI -dZd iZI +svW jcl -fLP +aCQ evx -svW -svW +nTl +nTl jcl -qZB +hwt jcl -swu +svW hwt hRy gqG -tiQ +eZq saC saC saC @@ -87371,11 +94736,20 @@ mbM xUx xUx pNo -cPx +uKD mQd -mZU +nbj saC tiQ +mzP +gIZ +gGg +wTq +wTq +jWB +teE +mpQ +tiQ saC saC saC @@ -87386,33 +94760,24 @@ saC saC saC saC +wDj saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -ien -qSH +hhJ +sOL +sOL +vGB +sOL +rlB +eJR +loS +vGB qSH qSH qSH -cpy -cpy -cpy umR -qSH -qSH -qSH +vGp +vGp +vGp uRb tDS sWB @@ -87495,27 +94860,27 @@ uwT uwT uwT uwT +fWG +fWG +fWG uwT +cpy uwT uwT uwT -cpy uwT uwT -aep -yar -yar -yar -yar -yar -yar -aep -eXG -wQa -wQa -eXG -eXG -eXG +bqE +uzI +hcv +hcv +uzI +hcv +hcv +uzI +uzI +uzI +dhH eXG eXG eXG @@ -87554,23 +94919,23 @@ saC saC saC oUZ -jcl -iZI -iZI +aEL +aLJ +aLJ iZI dDS iZI -cNB iZI +fib jcl -fLP +aCQ equ ewt jcl dXd fbC fIe -oWq +ame fDn fDH fFE @@ -87594,16 +94959,22 @@ vrV xUx lFt xUx -mcE -xUx +mdD +woG xUx pNo -cPx -mQw -sZq +xUx +mQd +nbj sZq -saC -saC +tiQ +tiQ +jEF +ayX +ayX +ayX +dpz +cXi tiQ tiQ saC @@ -87616,30 +94987,24 @@ saC saC saC saC +wDj saC saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -saC -ien -qSH +ygD +jJI +uaY +xNG +eJR +eJR +xJg +wDj +aij qSH qSH -cpy -cpy -cpy -cpy umR qSH -qSH -qSH +vGp +vGp uRb hDZ vav @@ -87674,7 +95039,7 @@ niE seA tNC fyD -pLN +eLl sBy qqk tMl @@ -87723,26 +95088,26 @@ uwT tXW uwT uwT +fWG uwT uwT uwT uwT uwT uwT -gVA -aep -aep -gVA -aep -aep -gVA -gVA -gVA -wQa -eXG -eXG -eXG -eXG +uwT +uwT +bqE +cwL +ybz +ybz +cwL +ybz +ybz +ybz +cwL +ybz +dhH wPN eXG eXG @@ -87781,23 +95146,23 @@ saC saC saC saC -jcl -jcl -jcl -iZI +aEL +aEL +aEL +aLJ dDS iZI iZI -iZI svW -fLP +svW +aCQ swu exZ oWq eKj -qZB +hwt +svW svW -swu swu swu eRN @@ -87825,13 +95190,16 @@ mdD woG xWz pNo -cPx -mQw -sZq +xUx +mQd +nbj sZq sZq -saC -saC +tiQ +cPx +cPx +cPx +tiQ tiQ tiQ tiQ @@ -87844,29 +95212,26 @@ saC saC saC saC +sYl saC saC +utq saC qSH qSH -qSH -cYn -saC -saC -saC -ien -ien -ien -qSH -qSH +jnE +sOL +rlB +eJR +rtX +wvX +nTp qSH qSH -cpy -qSH umR qSH -qSH -qSH +vGp +vGp uRb svf ydV @@ -87956,20 +95321,20 @@ uwT uwT uwT uwT -kfv -uwT -uwT -aep uwT uwT uwT +bqE ybz -eXG -eXG -eXG -eXG -eXG -eXG +ybz +ybz +ybz +ybz +ybz +ybz +ybz +ybz +dhH uja uja uja @@ -87981,7 +95346,7 @@ wQa wQa wQa wQa -wQa +eLf jas pVy vpe @@ -87989,8 +95354,8 @@ eso wNX xlV jas -cpy -cpy +dhH +eXG cpy cpy cpy @@ -88010,19 +95375,19 @@ saC saC saC tiQ -jcl -jcl +aEL +aEL cTX iZI iZI iZI svW -eLV +njF tra tra tra eNT -fkW +msf svW swu swu @@ -88044,23 +95409,23 @@ jZS jZS jGm mPz -vrV -saC +tiQ +xUx lFt xUx mdD woG xUx pNo -saC -mQw +xUx +mQd +nbj +sZq sZq sZq sZq sZq sZq -saC -saC tiQ tiQ saC @@ -88075,32 +95440,32 @@ saC saC cYn qSH +shD +cCH qSH qSH -qSH -qSH -qSH +bha cYn -ecq -qSH -ecq -qSH -qSH -qSH qSH +eJR +rlB +iJE +rtX +ygD +nTp qSH qSH umR qSH qSH -qSH +vGp uRb tDS tDS ddC btb tAh -tAh +pJh jLf tAh oew @@ -88121,14 +95486,14 @@ hYw hKJ mjT eOl -unE +gfl mMQ mWF njH psT poQ pzs -pMt +rEj vyH rYD aNP @@ -88186,17 +95551,17 @@ uwT uwT uwT uwT -uwT -uwT -uwT -uwT -eXG -eXG -eXG -eXG -eXG -eXG -eXG +bqE +ybz +ybz +ybz +ybz +ybz +ybz +ybz +ybz +ybz +dhH eXG eXG eXG @@ -88208,7 +95573,7 @@ wQa wQa wQa wQa -wQa +eLf jas jas ozw @@ -88216,8 +95581,8 @@ eso ozw jas jas -cpy -cpy +dhH +eXG cpy cpy cpy @@ -88239,18 +95604,18 @@ saC tiQ tiQ cOZ -jcl +aEL oUZ jcl jcl +jVa jcl -mjq jcl jcl jcl evx -fib jcl +jVa jcl jcl jcl @@ -88271,17 +95636,17 @@ jHb jHb jIR kKh -vrV -saC +tiQ +fdC lFt xUx -mdD -woG +mcE xUx -saC -saC -mQw -sZq +xUx +pNo +fdC +mQd +nbj sZq sZq sZq @@ -88304,17 +95669,17 @@ qSH qSH qSH qSH -qSH -qSH -qSH -qSH -ecq -qSH -ecq -qSH -qSH -qSH -qSH +rtX +eJR +eJR +eJR +eJR +eJR +hcE +sjQ +wJk +wDj +bcl qSH qSH umR @@ -88335,7 +95700,7 @@ tDS tDS thc kIZ -laB +jro thc tDS tDS @@ -88413,17 +95778,17 @@ uwT uwT uwT uwT -uwT -uwT -uwT -uwT -eXG -eXG -eXG -eXG -wQa -wQa -wQa +bqE +cwL +ybz +ybz +cwL +ybz +ybz +ybz +cwL +ybz +dhH eXG eXG eXG @@ -88435,17 +95800,17 @@ wQa wQa fdh wQa -wQa -eXG +tGw +ybz jas jas ogT jas jas -cpy -cpy -cpy -cpy +ybz +fdf +eXG +eXG cpy cpy cpy @@ -88498,17 +95863,17 @@ jHb jHb jHb kKh -vrV -saC -saC -xUx -mcE -xUx -xUx -saC -saC -mQw -sZq +tiQ +mua +mua +pEv +qVN +pEv +pEv +mua +mua +mua +nbj sZq sZq mZW @@ -88532,15 +95897,15 @@ qSH qSH qSH qSH +eJR qSH qSH -qSH -ecq -qSH -ecq -qSH -qSH -qSH +eJR +iJE +eJR +azE +wJk +wDj qSH qSH qSH @@ -88617,7 +95982,7 @@ oNd uuD xXg imT -cgG +ojA ffb xhD bsG @@ -88640,17 +96005,17 @@ uwT uwT uwT uwT -uwT -uwT -uwT -uwT -eXG -eXG -eXG -wQa -cex -wQa -wQa +bqE +uzI +hcv +hcv +uzI +hcv +hcv +uzI +uzI +uzI +dhH wQa eXG eXG @@ -88663,16 +96028,16 @@ fII wQa wQa eXG +tGw +tkA +tkA +tkA +tkA +tkA +fdf eXG eXG eXG -eXG -cpy -cpy -cpy -cpy -cpy -cpy cpy cpy cpy @@ -88692,7 +96057,7 @@ saC saC saC saC -saC +tiQ tiQ tiQ tiQ @@ -88725,17 +96090,17 @@ jIR jHb jHb kKh -vrV +tiQ saC -lFt +plb xWz mcE xUx xUx -saC +pNo cPx -mQw -mZW +ljA +woR sZq sZq mZW @@ -88756,22 +96121,22 @@ qSH qSH qSH qSH +sYl +tOt +iaM +sYl +cCH +yeH +bha +eJR +eJR +eJR +mnx +wDj qSH qSH qSH qSH -qSH -qSH -ecq -qSH -ecq -qSH -qSH -qSH -cpy -qSH -qSH -qSH umR qSH qSH @@ -88791,7 +96156,7 @@ dEy iss lbA ufs -wSz +xvj sQb lOk mqv @@ -88867,17 +96232,17 @@ uwT uwT uwT uwT -uwT -uwT -uwT -uwT -wQa -wQa -wQa -wQa -cex -wQa -wQa +bqE +yar +iBl +mDT +swD +fOX +fOX +xaN +vDo +tos +dhH eXG eXG eXG @@ -88897,8 +96262,8 @@ eXG eXG eXG eXG -cpy -cpy +eXG +eXG cpy cpy cpy @@ -88919,18 +96284,18 @@ saC saC saC saC -saC -saC -dkL +tiQ +uMP +epS uMP uMP jEu +nTl oSX oSX -svW -svW -eWn oSX +eWn +nTl tiQ fBP fNm @@ -88952,7 +96317,7 @@ jHb jHb jHb kKh -vrV +tiQ saC lFt xUx @@ -88960,10 +96325,10 @@ mcE xUx xUx pNo -cPx +bVX mQw -mZW -mZW +sZq +sZq sZq sZq sZq @@ -88982,26 +96347,26 @@ qSH qSH qSH qSH -cYn -saC -saC -qSH -qSH +fdS qSH -qSH -ien -ien -ien -vTx -vTx -cpy cpy -cpy -vTx -vTx -qJU -vTx -vTx +tOt +qSH +cYn +xei +hrw +iWg +sOL +sOL +sOL +wDj +ltB +ltB +ltB +ltB +bBW +ltB +ltB nQa qSH qSH @@ -89088,23 +96453,23 @@ uwT uwT uwT uwT -uwT +fWG tXW tXW -kfv -uwT uwT -aep uwT uwT -uwT -ybz -eXG -wQa -wQa -wQa -wQa -eXG +bqE +yar +iBl +mKu +gVA +xPH +gVA +xaN +vDo +tos +dhH eXG eXG eXG @@ -89125,7 +96490,7 @@ eXG eXG eXG eXG -cpy +eXG cpy cpy cpy @@ -89146,18 +96511,18 @@ saC saC saC saC -saC -saC +cpn +uMP ahH -kca -kca -cIV +dJN uMP uMP +epS uMP uMP -eWy uMP +eWy +epS tiQ fCE fOM @@ -89179,7 +96544,7 @@ jHb jHb jHb kKh -vrV +tiQ saC lFt xUx @@ -89190,7 +96555,7 @@ pNo cPx mSl mZX -mZW +sZq sZq sZq nGc @@ -89209,27 +96574,27 @@ qSH qSH qSH qSH -saC -saC -saC -saC -qSH -cYn -saC -saC -ien +cpy +cpy +cpy +cpy +cpy dRL dRL dRL dRL +rJf +gZv +rJf dRL dRL dRL -qhA +rJf +rJf qiG +rJf dRL -dRL -xFp +guE nQa qSH qSH @@ -89315,23 +96680,23 @@ uwT uwT uwT uwT +fWG +fWG uwT uwT uwT +uwT +bqE +mam +kfv +mKu gVA -vcR -vcR -gVA -vcR -vcR -gVA -gVA +xPH gVA -wQa -wQa -wQa -eXG -eXG +xaN +vDo +tos +dhH eXG eXG eXG @@ -89373,18 +96738,18 @@ saC saC saC saC -saC -saC -ahH -uMP +cpn uMP -cIW +dkL +cIm +cWL +cWL ana dSt dSt dSt eWK -fla +fuf tiQ fCN fPV @@ -89406,7 +96771,7 @@ jHb jHb jIR kKh -vrV +tiQ saC lFt iWy @@ -89437,18 +96802,18 @@ qSH qSH qSH qSH -saC -saC -saC -saC -saC -saC -saC +cpy +cpy +cpy dRL dRL -jjq +jNQ dRL dRL +yfP +yfP +niT +dRL dRL dRL sZs @@ -89457,7 +96822,7 @@ qje qSj dRL dRL -xFp +guE nQa qSH qSH @@ -89541,24 +96906,24 @@ uwT uwT uwT uwT +fWG +fWG +uwT uwT uwT uwT fWG -vcR -lPq -tjx -iBl -bgS -bgS +bqE +uzI +rOb xPH acp -lSF -wQa -eXG -eXG -eXG -eXG +acp +xPH +xaN +vDo +tos +dhH eXG eXG wQa @@ -89581,7 +96946,7 @@ eXG eXG eXG eXG -cpy +eXG cpy cpy cpy @@ -89600,18 +96965,18 @@ saC saC saC saC -saC -saC -dkL -dkL -dkL +tiQ +uMP dkL kca kca kca +kca +kca +kca eGL dSy -haR +eWy tiQ tiQ fRd @@ -89633,7 +96998,7 @@ jHb jHb jHb kKh -vrV +tiQ saC lFt kLs @@ -89664,17 +97029,17 @@ qSH qSH qSH cYn -saC -saC -saC -saC -saC -saC -saC +cpy +cpy +cpy dRL -hXy +sLl xCT -hXy +sLl +dRL +yfP +xCT +niT dRL dRL ozJ @@ -89685,7 +97050,7 @@ xCT rsl dRL dRL -xFp +guE nQa qSH qSH @@ -89723,7 +97088,7 @@ gGa gVr klz hMR -hMR +ffO smF hMR pBl @@ -89769,23 +97134,23 @@ uwT uwT uwT cpy +fWG +fWG +uwT uwT uwT fWG -vcR -lPq -lPq -bgS -bgS -bgS -xPH +bqE +uzI +rOb +gVA +gVA acp -lSF -eXG -eXG -eXG -eXG -wQa +gVA +xaN +vDo +tos +dhH wQa cex cex @@ -89827,17 +97192,17 @@ saC saC saC saC -saC -saC -ahH +cpn uMP -cIV +cGd +dXN +dXN mNm mNm kca kca kca -kca +dKF fmv fuf tiQ @@ -89860,7 +97225,7 @@ kba kba jHb kKh -vrV +tiQ saC lFt xUx @@ -89890,19 +97255,19 @@ qSH qSH qSH qSH -dnA -saC -saC -saC -saC -saC -saC -saC +qSH +cpy +cpy +cpy dRL dRL -rqT +dVM dRL dRL +gMV +xCT +nuo +dRL npA oAd xCT @@ -89970,9 +97335,9 @@ uuD uuD uuD uuD -jdI +mFO rWP -xRI +aWd uuD uuD uuD @@ -89998,21 +97363,21 @@ uwT cpy cpy fWG +uwT +uwT +uwT fWG -vcR -mKu -lPq -bgS -bgS -bgS +bqE +uzI +fOX +mWd xPH -acp -lSF -eXG -eXG -cex -cex -wQa +xPH +xPH +wZz +vDo +tos +dhH wQa wQa eXG @@ -90054,20 +97419,20 @@ saC saC saC saC -saC -saC -ahH +cpn uMP -cIW -kca -kca -kca -kca -kca +feZ +uMP +uMP +uMP +dkL kca kca -haR kca +cIm +dJN +eWy +uMP tiQ ggM fCE @@ -90088,10 +97453,10 @@ jJj jJj mLp tiQ -xUx -lFt -xUx -mcE +nFt +psq +nUV +mbM xUx xUx pNo @@ -90116,20 +97481,20 @@ saC qSH qSH qSH -dnA -saC -saC -saC -saC -saC -saC -saC -saC +qSH +cpy +cpy +cpy +cpy dRL -imA -elx -hXy +ouv +uSJ +sLl dRL +nem +fzE +yfP +rJf nLi oBf xCT @@ -90139,7 +97504,7 @@ xCT rsq xCT yfP -dRL +rJf fKf qSH qSH @@ -90224,28 +97589,28 @@ uwT uwT cpy cpy +fWG +uwT uwT uwT +fWG +bqE +dsa +kfv +oEc +tjx +vcR gVA -bgS -bgS -bgS -bgS -bgS -xPH -acp -lSF -eXG -cex -cex -wQa -wQa +wZz +vDo +tos +dhH wQa dkX rBd nPb -fdT -hIf +lfA +rVR hIf rqn iGr @@ -90282,19 +97647,19 @@ saC saC saC tiQ -cYQ -dkL +czC +czC +czC +czC +uMP dkL -tiQ -kca -kca kca aVs cAy cIs -kca -haR -kca +cIm +cNB +uMP tiQ ghr tiQ @@ -90305,23 +97670,23 @@ tiQ vrV vrV vrV -vrV -vrV -vrV -vrV -vrV +tiQ +tiQ +tiQ +tiQ +tiQ vrV vrV vrV tiQ tiQ -afs -lFt -xUx -mcE -mto -xUx -pNo +mua +mua +pMg +rqT +uVa +pMg +mua tiQ tiQ tiQ @@ -90342,19 +97707,19 @@ saC saC qSH cYn -dnA -dnA -saC -saC -saC -saC -saC -saC -saC -saC +qSH +qSH +cpy +cpy +cpy +cpy dRL +gtH +msB +oBx +dVo ipf -jjF +qxX qUq kNM nLW @@ -90436,7 +97801,7 @@ wrY xvl xvl lot -aTR +vdz xvl xvl xWO @@ -90453,27 +97818,27 @@ cpy cpy fWG fWG -gVA -bgS -bgS -bgS -bgS -bgS -xPH -acp -lSF -eXG -cex -wQa -wQa -eXG +uwT +uwT +fWG +bqE +dsa +kfv +oEc +uXa +xJB +yfz +wZz +vDo +tos +dhH dkX nPb gRp iGr iGr -qvA -qvA +uIn +uIn rqn qvA lhE @@ -90513,18 +97878,18 @@ cZu cWL dJN cIV -kca -kca +uMP +dkL kca kca mNm kca kca -haR -kca -kca -kca -dKF +cRT +uMP +epS +uMP +uMP saC tiQ tiQ @@ -90540,12 +97905,12 @@ xUx xUx xUx xUx -xUx -xUx +hOH +mua fol -nUD -xUx -mdD +ptc +nUV +bOE woG xUx cNQ @@ -90558,7 +97923,7 @@ xSN xSN xSN xSN -xSN +pMg xSN xSN xSN @@ -90567,23 +97932,23 @@ tiQ tiQ tiQ saC -dnA -dnA -gpM +qSH +qSH +qSH eCe -gOX -saC -saC -saC -saC -saC -saC -saC +qSH +cpy +cpy +cpy dRL -iDO -jAV -hXy +jfG +gQu +sLl dRL +yfP +jAV +yfP +rJf nSA oBR pjT @@ -90593,9 +97958,9 @@ reo xCT xCT yfP -dRL +rJf fKf -qSH +vGp qSH qSH qSH @@ -90651,9 +98016,9 @@ cUG cUG cUG cUG -tlM +ntk wao -xsi +jwP cUG cUG cUG @@ -90680,27 +98045,27 @@ cpy cpy fWG tXW -gVA -bgS -mKu -bgS -bgS -bgS -xPH -acp -lSF -wQa -wQa -wQa -dkX -rBd +uwT +uwT +fWG +bqE +dsa +fOX +qda +rOb +ycc +ycc +wZz +vDo +sbh +hhb nPb hIf jLk jMy qGI -wDa -wDa +uMr +uMr rqn wDa vbF @@ -90740,18 +98105,18 @@ dah kca dKF cIW -kca -kca +uMP +dkL kca kca kca mNm mNm -haR -kca -kca -kca -dKF +dgq +cWL +cWL +cWL +dJN saC saC saC @@ -90761,31 +98126,31 @@ rza rza rza saC -rza +saC rza jJO kbg kqa rza -rza -rza +qqq +mmj nUD xUx xUx -mdD +woG woG xUx xUx cNQ -cPH -rza -rza -rza +cWZ rza +rla rza rza rza rza +qqq +qqq rza rza rza @@ -90800,17 +98165,17 @@ eCe cYn eCe eCe -saC -saC -saC -saC -saC -saC +cpy +cpy dRL dRL -rqT +dVM dRL dRL +gMV +xCT +nuo +dRL odQ oBR ppK @@ -90822,8 +98187,8 @@ hqp dRL dRL fKf -qSH -qSH +vGp +vGp qSH qSH qSH @@ -90904,22 +98269,22 @@ uwT uwT uwT cpy -uwT +fWG tXW uwT -vcR -mKu -mKu -qda -lpP -bgS -xPH -acp -lSF -wQa -dkX -rBd -nPb +uwT +uwT +uwT +bqE +uzI +dDq +dDq +uzI +uzI +uzI +uzI +uzI +uzI hIf hIf hIf @@ -90927,7 +98292,7 @@ wEo pXu kiY dOI -qvA +uIn rqn qvA tur @@ -90937,8 +98302,8 @@ qvA hIf aKn hIf -jGp -rBd +rnq +rnq sfO eXG eXG @@ -90967,7 +98332,7 @@ vEw dXN dKM cYQ -kca +uMP mNm mNm kca @@ -90978,8 +98343,8 @@ haR kca kca kca -hhu -kca +dKF +uMP saC xUx xSN @@ -90988,33 +98353,33 @@ iam nUV nUV nUV -nUV +tHC nUV jKm nUV nUV nUV kKD -nUV -nUV -nUV -oKK -med -mua -woG -xUx -xUx -cWc -xUx -xUx +mnX xUx xUx +woG +mua +mua +woG xUx xUx +cWZ xUx +qro xUx xUx xUx +hOH +hOH +hOH +hOH +hOH xUx xUx ybd @@ -91027,16 +98392,16 @@ eCe qSH qSH eCe -saC -saC -saC -saC -saC -saC +cpy +cpy dRL -hXy +sLl xCT -hXy +sLl +dRL +jjq +xCT +yfP dRL dRL oQt @@ -91047,10 +98412,10 @@ rfk nKh dRL dRL -xFp +qYP jKB -qSH -qSH +vGp +vGp qSH qSH qSH @@ -91060,7 +98425,7 @@ svf rEc wWV kAj -azJ +kcY tgj svo bqo @@ -91108,7 +98473,7 @@ tum tum pRH gEd -iBd +csC pRH pRH pRH @@ -91130,28 +98495,28 @@ fWG uwT uwT uwT -uwT +fWG uwT tXW uwT -vcR -mKu -mKu -qpE -mDT -tjx -xPH -acp -lSF -dkX -nPb +uwT +uwT +uwT +jqr +xxq +xzK +xzK +uzI +uzI +uzI +uzI hIf hIf hIf qvA qvA bYx -jpb +vzz hbu qvA qvA @@ -91194,8 +98559,8 @@ tiQ tiQ dKO cYQ -kca -mNm +uMP +uDC mNm mNm kca @@ -91205,8 +98570,8 @@ haR fCP fSe fCP -kca -kca +dKF +uMP hig xUx xSN @@ -91215,35 +98580,35 @@ mdD woG woG xUx -xUx +qro xUx woG woG woG xUx kLc -xUx -woG -woG -xUx -saC -xUx -xUx +pMg woG woG -cWc -xUx -xUx -woG +mua +tiQ +mua +mua woG woG +cWZ xUx -xUx -xUx +qro woG woG woG -mHP +hOH +hOH +hOH +mee +mee +lpy +eqD ybd saC saC @@ -91255,16 +98620,16 @@ qSH qSH qSH eCe -saC -saC -saC -saC -saC +cpy dRL dRL gMV dRL dRL +jgI +mNf +lZq +dRL dRL dRL gMV @@ -91273,12 +98638,12 @@ qQt rge dRL dRL -xFp +qYP jKB -qSH -qSH -qSH -qSH +vGp +vGp +vGp +vGp qSH qSH umR @@ -91361,16 +98726,16 @@ uwT uwT uwT uwT -vcR -bgS -qpE -bgS -qda -qda -xPH -acp +uwT +uwT +uwT +uwT +fWG +bqE +xzK +uzI +uzI uzI -nPb hIf jVq gxp @@ -91424,16 +98789,16 @@ tiQ tiQ tiQ aTK -kca -kca +cGd +cLb mNm foO fuQ fDi fSR ghy -hTk -hTk +eAF +fiA hCU nUV oyM @@ -91442,32 +98807,32 @@ bOE woG woG xUx -xUx +qro xUx woG woG woG xUx xUx -iWy -woG -woG -saC -saC -saC -xUx +mCQ woG woG -cWc -xUx -xUx -woG +tiQ +tiQ +tiQ +mua woG woG +cWZ xUx -xUx -xUx -woG +hOH +lpy +lpy +lpy +hOH +hOH +hOH +mee woG woG xUx @@ -91482,12 +98847,9 @@ qSH qSH qSH cYn -eCe -saC -saC -saC -saC -saC +gwC +cpy +dRL dRL dRL dRL @@ -91495,18 +98857,21 @@ dRL dRL dRL dRL -qhA -qiG dRL dRL +rJf +rJf +qiG +rJf +dRL pGY jKB -qSH -qSH -qSH -qSH -qSH -qSH +vGp +vGp +vGp +vGp +vGp +vGp qSH umR onj @@ -91588,17 +98953,17 @@ uwT uwT uwT uwT -gVA -vcR -vcR -gVA -vcR -vcR -gVA -gVA -gVA +uwT +uwT +uwT +uwT +uwT +bqE +uzI +uzI +uzI gRp -sol +pab xYA aiP xYA @@ -91651,16 +99016,16 @@ dSW tiQ tiQ mNm -kca -kca +uMP +dkL mNm kca haR cUx fSX cUx -kca -kca +dKF +uMP hig xWz xSN @@ -91669,31 +99034,31 @@ xUx xUx xUx iWy -xUx +qro xUx jKo kbu xWz xUx kLs -xUx +pMg xUx mHP woG -saC -xUx +tiQ +mua woG xUx xUx -cWc -xUx -xUx +cWZ +hOH +hOH xUx xUx xUx mHP -xUx -xUx +hOH +hOH xUx xUx dbs @@ -91710,30 +99075,30 @@ qSH qSH qSH eCe -saC -saC -saC -saC -saC -saC -saC +cpy +cpy +cpy +cpy +cpy +cpy +cpy ien ien ien -dHF -dHF -dHF +whD +whD +whD hFL thi -uVa +dHz jKB -qSH -qSH -qSH -qSH -qSH -qSH -qSH +vGp +vGp +vGp +vGp +vGp +vGp +vGp qSH yaF kJh @@ -91820,12 +99185,12 @@ uwT uwT uwT uwT -uwT -uwT -rnq +bqE +xzK +uzI sDz hIf -rFT +gVf xYA xYA xYA @@ -91846,7 +99211,7 @@ aIp aIp xYA xYA -fdt +aIp kcR hIf cDi @@ -91886,8 +99251,8 @@ hbN kca mNm mNm -kca -kca +dKF +uMP hig xUx xSN @@ -91902,8 +99267,8 @@ aCJ kbJ aCJ aCJ -aCJ -aCJ +hOG +hbj lnF xUx xUx @@ -91912,8 +99277,8 @@ woG xUx xUx mEg -cWZ -aCJ +fXs +hOG aCJ aCJ aCJ @@ -91936,15 +99301,15 @@ qSH qSH qSH qSH -saC -saC -saC -saC -saC -saC -saC -saC -saC +qSH +qSH +cpy +cpy +cpy +cpy +cpy +cpy +cpy ien lyP vGp @@ -91954,13 +99319,13 @@ itJ lTV lTV lTV -xSv -xSv -xSv -xSv -xSv -xSv -xSv +lTV +lTV +lTV +lTV +lTV +lTV +lTV xSv tWE onj @@ -91984,7 +99349,7 @@ gdO gdO psC ayn -tBT +wHY psC gdO tTK @@ -92017,7 +99382,7 @@ nKK fzf sHY wao -whs +jIA tID uaI wqA @@ -92047,12 +99412,12 @@ fbS fbS fbS fbS -fbS -fbS -rnq +lPq +lPq +uzI sDz -hIf -vJr +rVR +xyC xYA xYA xYA @@ -92099,22 +99464,22 @@ tiQ joK cPU daL -fpS +xcU dLz xcU edk eil eof -kca -kca +uMP +dkL kca kca kca kca mNm mNm -kca -gXR +dKF +uMP tiQ saC saC @@ -92128,9 +99493,9 @@ saC saC xUx xUx -xUx -xUx -xUx +hOH +hOH +mua lnU lnF xUx @@ -92163,15 +99528,15 @@ qSH qSH qSH qSH -saC -saC -saC -saC -saC -saC -saC -saC -saC +qSH +qSH +qSH +cpy +cpy +cpy +cpy +cpy +cpy ien mbx vGp @@ -92182,10 +99547,10 @@ vGp vGp vGv vGp -qSH -qSH -qSH -qSH +vGp +vGp +vGp +vGp mTa oqn pdv @@ -92264,7 +99629,7 @@ uwT uwT uwT uwT -uwT +fWG uwT uwT gIr @@ -92278,8 +99643,8 @@ vpp snX snX qvA -hIf -kFB +rVR +qle aIp aIp aIp @@ -92301,7 +99666,7 @@ aIp aIp aIp aIp -yfK +jzZ hIf lSF eXG @@ -92332,15 +99697,15 @@ akM xcU pYP eov +uMP +dkL kca kca kca kca kca kca -kca -kca -kca +dKF saC saC saC @@ -92348,23 +99713,23 @@ saC saC vrV vrV -vrV -vrV -vrV -vrV -vrV +tiQ +tiQ +tiQ +tiQ +tiQ vrV vrV vrV tiQ tiQ -xSN -xSN -xSN -xSN -xSN -xSN -xSN +mua +mua +pMg +pMg +pMg +pMg +mua tiQ tiQ tiQ @@ -92390,14 +99755,14 @@ cYn qSH qSH qSH -saC -saC -saC -saC -saC -saC -saC -saC +qSH +qSH +qSH +qSH +cpy +cpy +cpy +cpy ien ien ien @@ -92410,11 +99775,11 @@ vGp lyP cpy vGp -qSH -qSH -qSH +vGp +vGp +vGp ncz -otC +kKj pgp umR gMG @@ -92441,7 +99806,7 @@ bHF kpN seA ojW -hPT +xoC gAU lBu ipN @@ -92478,7 +99843,7 @@ xCY bnf cUG cUG -xsi +jwP cUG cUG cUG @@ -92490,9 +99855,9 @@ uwT uwT uwT uwT -uwT +fWG cpy -uwT +fWG uwT ewf snX @@ -92505,7 +99870,7 @@ yjP oQW snX snX -hIf +rVR sol aIp aIp @@ -92528,7 +99893,7 @@ aIp aIp xYA xYA -jYr +srS hIf lSF eXG @@ -92559,15 +99924,15 @@ dUj edP ekK tiQ +uMP +cGd dXN dXN dXN dXN dXN dXN -dXN -dXN -dXN +dKM saC saC tiQ @@ -92617,15 +99982,15 @@ eCe qSH qSH qSH -saC -saC -saC -saC -saC -saC -saC -saC -saC +qSH +qSH +qSH +qSH +qSH +qSH +cpy +cpy +cpy qBQ kyH fbA @@ -92638,8 +100003,8 @@ cpy cpy lyP vGp -qSH -qSH +vGp +vGp nff oxT pgG @@ -92716,10 +100081,10 @@ uwT uwT uwT uwT -uwT +fWG cpy cpy -uwT +fWG uwT ewf vpp @@ -92744,7 +100109,7 @@ aIp aIp aIp aIp -aIp +aDE aIp aIp aIp @@ -92755,8 +100120,8 @@ aIp aIp xYA xYA -kcR -hIf +iqX +rVR lSF eXG eXG @@ -92787,12 +100152,12 @@ efR tiQ tiQ bbL -uMP +feZ faK uMP uMP uMP -uMP +feZ uMP saC saC @@ -92844,14 +100209,14 @@ eCe qSH qSH qSH -saC -saC -saC -saC -saC -saC -saC -saC +qSH +qSH +qSH +qSH +qSH +qSH +qSH +cpy cpy rdq saY @@ -92866,8 +100231,8 @@ cpy cpy vGp syW -qSH -qSH +vGp +vGp qSH qSH umR @@ -92943,7 +100308,7 @@ uwT uwT uwT uwT -uwT +fWG cpy cpy cpy @@ -92983,7 +100348,7 @@ aIp xYA xYA wBx -hIf +rVR lSF eXG eXG @@ -93072,13 +100437,13 @@ qSH qSH cYn eCe -saC -saC -saC -saC -saC -saC -saC +qSH +qSH +qSH +qSH +qSH +qSH +cpy ien ien ien @@ -93093,7 +100458,7 @@ cpy cpy cpy cpy -qSH +vGp qSH qSH qSH @@ -93164,12 +100529,12 @@ inA xjO hMz fac -lKH +gKa spW uwT uwT uwT -uwT +fWG cpy cpy cpy @@ -93210,7 +100575,7 @@ aIp aIp aIp yfK -hIf +rVR lSF eXG eXG @@ -93294,17 +100659,17 @@ saC saC saC saC -cYn +ffG qSH qSH eCe cpy cpy -cpy -cpy -saC -saC -cpy +qSH +qSH +qSH +qSH +qSH cpy cpy ien @@ -93395,7 +100760,7 @@ tOe nVR uwT uwT -uwT +fWG cpy cpy cpy @@ -93413,7 +100778,7 @@ fOX mjE snX snX -hIf +rVR sol xYA xYA @@ -93500,7 +100865,7 @@ woG woG xUx pNo -xSN +pMg mUh ngo wbR @@ -93522,16 +100887,16 @@ saC saC saC eCe -qSH +sBX eCe eCe cpy cpy cpy -cpy -cpy -cpy -cpy +qSH +qSH +qSH +qSH cpy cpy ien @@ -93565,15 +100930,15 @@ qSH qSH qSH umR -qSH -qSH -qSH +vGp +vGp +vGp uRb gdO gdO gdO ayn -tBT +wHY gdO gdO gdO @@ -93622,12 +100987,12 @@ uwT uwT uwT uwT -uwT +fWG cpy cpy cpy cpy -uwT +tXW uwT rTf lum @@ -93640,8 +101005,8 @@ vpp snX snX oYO -hIf -rFT +rVR +gVf xYA xYA xYA @@ -93727,7 +101092,7 @@ xUx xUx xUx pNo -xSN +pMg mUl wbR wbR @@ -93751,15 +101116,15 @@ saC eCe eCe eCe -uwF -cpy -cpy -cpy cpy cpy cpy cpy cpy +qSH +qSH +qSH +qSH ien ien ien @@ -93784,17 +101149,17 @@ lzU gRD qSH qSH -qSH -qSH -qSH -qSH -qSH +vGp +vGp +vGp +vGp +vGp qSH qSH umR qSH -qSH -qSH +vGp +vGp hHh sYk gdO @@ -93849,12 +101214,12 @@ uwT uwT uwT uwT -uwT +fWG cpy cpy cpy cpy -uwT +tXW uwT uwT rTf @@ -93864,11 +101229,11 @@ tni tni tni tni -tni -rnq +cpy +cpy nDt gRp -vJr +xyC xYA aiP xYA @@ -93952,9 +101317,9 @@ lFt kLs xUx xUx -hOH +xUx pNo -xSN +hbj mUl wbR wbR @@ -93974,20 +101339,20 @@ saC saC saC saC -qSH -qSH +sBX +sBX eCe -qSH -cpy -cpy -cpy -cpy -cpy -cpy +ycw cpy cpy cpy cpy +qSH +qSH +qSH +qSH +qSH +qSH ien amc qSH @@ -94013,15 +101378,15 @@ lzU gRD qSH lyP -qSH -qSH -qSH -qSH +vGp +vGp +vGp +vGp qSH umR qSH -qSH -qSH +vGp +vGp vGp mJF oXX @@ -94076,13 +101441,13 @@ uwT uwT uwT uwT -uwT +fWG cpy cpy cpy cpy cpy -uwT +fWG uwT uwT uwT @@ -94090,9 +101455,9 @@ uwT cpy uwT uwT -uwT -uwT -rnq +cpy +cpy +cpy iWN jxD hIf @@ -94122,7 +101487,7 @@ sAt svG eXG eXG -wQa +cpy cpy cpy bMX @@ -94178,10 +101543,10 @@ xUx lFt xUx xUx -hOH -hOH -pNo -xSN +xUx +xUx +djq +hbj mUl wbR wbR @@ -94203,18 +101568,18 @@ saC cYn qSH qSH -qSH -qSH -cpy -cpy -cpy -cpy -cpy +sBX +sDv cpy cpy cpy cpy cpy +qSH +qSH +qSH +qSH +qSH ien poZ qSH @@ -94242,13 +101607,13 @@ gRD qSH lyP vGp -qSH -qSH -qSH +vGp +vGp +vGp umR qSH qSH -qSH +vGp vGp gzT gdO @@ -94303,24 +101668,24 @@ uwT uwT uwT uwT -uwT +fWG cpy cpy cpy cpy cpy cpy -uwT +fWG uwT uwT cpy cpy cpy -uwT -uwT -rnq -rnq -rnq +cpy +cpy +cpy +cpy +cpy iWN jxD hIf @@ -94330,14 +101695,14 @@ qvA qvA qvA dEm -qvA +uIn qvA ugG rqn qvA rRY qvA -wDa +uMr oTL pbO oTL @@ -94349,7 +101714,7 @@ svG eXG eXG eXG -wQa +cpy cpy cpy bMX @@ -94405,10 +101770,10 @@ xUx lFt xUx woG -mee -xUx -pNo -xSN +woG +hOH +djq +hbj mUl wbR wbR @@ -94437,10 +101802,10 @@ cpy cpy cpy cpy -cpy -cpy -cpy -cpy +qSH +qSH +qSH +qSH ien ien ien @@ -94470,20 +101835,20 @@ lzU gRD qSH vGp -qSH -qSH +vGp +vGp qQB uet -uet -uet +aoi +aoi dcc vxG -vxT +aYE vCG vUj puJ pej -dFE +uBd lDE rnB rnB @@ -94500,7 +101865,7 @@ tTD tTD tSm rnB -cKF +oXZ uKR rnB rnB @@ -94529,7 +101894,7 @@ uwT uwT uwT uwT -uwT +fWG cpy cpy cpy @@ -94537,45 +101902,45 @@ cpy cpy cpy cpy -uwT -uwT +tXW uwT uwT cpy cpy -uwT -uwT -uwT -ybz -wQa +cpy +cpy +cpy +cpy +cpy +cpy eXG iWN -jru -jxD -hIf -hIf +rnq +rnq +rVR +rVR hIf qvA qXH -qvA -qvA +uIn +uIn rRY rqn qvA rRY qvA -wDa -pbO +uMr +sQR rNs whG fdT -sAt -jru +rnq +rnq svG eXG eXG eXG -wQa +cpy cpy cpy cpy @@ -94634,7 +101999,7 @@ xUx woG woG xUx -pNo +djq xSN mUl wbR @@ -94664,11 +102029,11 @@ cpy cpy cpy cpy -cpy -cpy -cpy -cpy -cpy +qSH +qSH +qSH +qSH +qSH ien fjk qSH @@ -94697,7 +102062,7 @@ krH oAu lzU gRD -qSH +vGp vGp qSH qSH @@ -94754,8 +102119,8 @@ uwT uwT uwT uwT -uwT -uwT +fWG +fWG cpy cpy cpy @@ -94765,15 +102130,15 @@ cpy cpy cpy cpy -uwT -uwT -uwT -uwT -uwT -uwT -uwT -uwT -ybz +tXW +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy eXG eXG eXG @@ -94781,8 +102146,8 @@ eXG iWN jru jxD -hIf -hIf +rVR +rVR crM wDa ffL @@ -94792,7 +102157,7 @@ wDa sIr wDa wDa -rNs +kXf iGr sAt jru @@ -94802,7 +102167,7 @@ eXG eXG eXG eXG -wQa +cpy cpy cpy cpy @@ -94861,7 +102226,7 @@ xUx woG woG xUx -pNo +dDF xSN mUl wbR @@ -94890,12 +102255,12 @@ cpy cpy cpy cpy -cpy -cpy -cpy -cpy -cpy -cpy +qSH +qSH +qSH +qSH +qSH +qSH ien igg rMR @@ -94994,14 +102359,14 @@ cpy cpy cpy cpy -uwT -uwT -uwT -uwT -uwT -rnq -rnq -rnq +cpy +cpy +cpy +cpy +cpy +cpy +cpy +eXG eXG cex cex @@ -95009,7 +102374,7 @@ wQa eXG iWN jxD -hIf +rVR hIf hIf qvA @@ -95029,7 +102394,7 @@ eXG eXG eXG eXG -wQa +cpy cpy cpy cpy @@ -95088,7 +102453,7 @@ xUx xUx xUx xWz -pNo +dDF xSN mUl nhb @@ -95117,12 +102482,12 @@ cpy cpy cpy cpy -cpy -cpy -cpy -cpy -cpy -ien +qSH +qSH +qSH +qSH +qSH +rME ien ien rMR @@ -95225,10 +102590,10 @@ cpy cpy cpy cpy -uwT -uwT -ybz -cex +cpy +cpy +cpy +cpy wQa wQa wQa @@ -95241,8 +102606,8 @@ jxD gRp hIf hIf -rqn -hIf +eWR +rVR hIf gRp sAt @@ -95254,9 +102619,9 @@ eXG eXG eXG eXG -wQa +cpy eXG -wQa +cpy cpy cpy cpy @@ -95300,163 +102665,163 @@ cpy cpy cpy cpy -saC -saC -saC -saC -saC -tiQ -yjL -yjL -tiQ -owC -owC -owC -owC -owC -owC -owC -tiQ -mVE -niu -wbR -tiQ -tiQ -tiQ -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -qSH -qSH -qSH -qSH -qSH -qSH -qSH -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -ien -cpy -qSH -oZN -aSR -krH -qUL -qUL -qUL -qUL -qUL -qUL -nSF -qUL -qUL -eRI -eRI -sct -fzC -dIr -wqt -iRl -qUL -qUL -qUL -aDs -qUL -krH -aSR -ltf -qSH -vGp -vGp -kQJ -tPb -onj -gdO -ene -puJ -puJ -ene -gdO -cpy -rnB -rnB -rnB -rnB -tTD -sKJ -sKJ -cpy -cpy -cpy -cpy -cpy -cpy +saC +saC +saC +saC +saC +tiQ +yjL +yjL +tiQ +owC +owC +owC +owC +owC +owC +owC +tiQ +mVE +niu +wbR +tiQ +tiQ +tiQ +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +qSH +qSH +qSH +qSH +qSH +qSH +qSH +cpy +cpy +cpy +cpy +cpy +qSH +qSH +qSH +qSH +qSH +cpy +cpy +ien +cpy +qSH +oZN +aSR +krH +qUL +qUL +qUL +qUL +qUL +qUL +nSF +qUL +qUL +eRI +eRI +sct +fzC +dIr +wqt +iRl +qUL +qUL +qUL +aDs +qUL +krH +aSR +ltf +qSH +vGp +vGp +kQJ +tPb +onj +gdO +ene +puJ +puJ +ene +gdO +cpy +rnB +rnB +rnB +rnB +tTD +sKJ +sKJ +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +rnB +rnB +rnB +rnB +yiZ +rnB +rnB +rnB +rnB +uwT +uwT +uwT +uwT +idL +uwT +fWG +tXW +tXW +idL +fWG +fWG +tXW +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy +cpy cpy cpy cpy cpy -cpy -rnB -rnB -rnB -rnB -yiZ -rnB -rnB -rnB -rnB -uwT -uwT -uwT -uwT -idL -uwT -fWG -tXW -tXW -idL -fWG -fWG -tXW -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -ybz -cex -wQa wQa wQa wQa @@ -95467,21 +102832,21 @@ cex iWN jru jxD -hIf -hIf -hIf +rVR +rVR +rVR sAt jru svG eXG eXG eXG -wQa +cpy eXG eXG eXG -wQa -wQa +cpy +cpy cpy cpy cpy @@ -95571,10 +102936,10 @@ cpy cpy cpy cpy -cpy -cpy -cpy -cpy +qSH +qSH +qSH +qSH cpy cpy ien @@ -95683,9 +103048,9 @@ cpy cpy cpy cpy -cex -wQa -cex +cpy +cpy +cpy cex cex cex @@ -95702,13 +103067,13 @@ eXG eXG eXG eXG -wQa -wQa -wQa -wQa -wQa -wQa -wQa +cpy +cpy +cpy +cpy +cpy +cpy +cpy cpy cpy cpy @@ -95798,11 +103163,11 @@ cpy cpy cpy cpy -cpy -cpy -cpy -cpy -cpy +qSH +qSH +qSH +qSH +qSH ien ien ien @@ -95920,14 +103285,14 @@ cpy cpy cpy cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy -cpy +eXG +eXG +eXG +eXG +eXG +eXG +eXG +eXG cpy cpy cpy @@ -96026,12 +103391,12 @@ cpy cpy cpy cpy -cpy -cpy -cpy -cpy -cpy -ien +qSH +qSH +qSH +qSH +qSH +aJg qSH qSH pFH @@ -96149,10 +103514,10 @@ cpy cpy cpy cpy -cpy -cpy -cpy -cpy +eXG +eXG +eXG +eXG cpy cpy cpy @@ -96253,12 +103618,12 @@ cpy cpy cpy cpy -cpy -cpy -cpy -cpy -cpy -ien +qSH +qSH +qSH +qSH +qSH +aJg qSH qSH pFH @@ -96282,9 +103647,9 @@ dqn dic uDM tth -eTw +nPn lVs -qUL +bUy lAn krH nTp @@ -96481,11 +103846,11 @@ cpy cpy cpy cpy -cpy -cpy -cpy -cpy -ien +qSH +qSH +qSH +qSH +aJg qSH qSH pFH @@ -96508,10 +103873,10 @@ tCR fTm uKQ uKQ -uKQ -fbY -qUL +rrB +srE qUL +iQt lAn krH nTp @@ -96736,9 +104101,9 @@ vbk xNu vjs tIF -rAt +ifg gOZ -iRl +hZc lAn krH nTp diff --git a/maps/map_files/LV624/LV624.dmm b/maps/map_files/LV624/LV624.dmm index 937599e70947..cd28e7341917 100644 --- a/maps/map_files/LV624/LV624.dmm +++ b/maps/map_files/LV624/LV624.dmm @@ -283,6 +283,9 @@ /area/lv624/ground/caves/west_caves) "abH" = ( /obj/effect/landmark/good_item, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/west_caves) "abI" = ( @@ -398,7 +401,7 @@ "aco" = ( /obj/effect/landmark/crap_item, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/turf/open/gm/dirt, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_east_caves) "acp" = ( /turf/closed/wall/cult, @@ -506,7 +509,7 @@ /obj/structure/tunnel{ id = "hole1" }, -/turf/open/gm/dirt, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/west_caves) "acL" = ( /obj/item/tool/shovel, @@ -581,6 +584,9 @@ /area/lv624/lazarus/crashed_ship_containers) "acY" = ( /obj/effect/landmark/hunter_primary, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) "acZ" = ( @@ -866,7 +872,7 @@ /area/lv624/ground/caves/south_east_caves) "aec" = ( /obj/structure/surface/table/woodentable/poor, -/obj/item/weapon/gun/shotgun/double, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /turf/open/floor/wood, /area/lv624/ground/caves/north_central_caves) "aed" = ( @@ -1119,8 +1125,10 @@ }, /area/lv624/ground/barrens/containers) "afu" = ( -/obj/structure/machinery/floodlight, /obj/item/ammo_casing, +/obj/structure/machinery/floodlight/landing{ + name = "bolted floodlight" + }, /turf/open/floor/plating{ dir = 9; icon_state = "warnplate" @@ -1154,7 +1162,9 @@ }, /area/lv624/ground/barrens/central_barrens) "afy" = ( -/obj/structure/machinery/floodlight, +/obj/structure/machinery/floodlight/landing{ + name = "bolted floodlight" + }, /turf/open/floor/plating{ dir = 5; icon_state = "warnplate" @@ -1205,11 +1215,6 @@ /obj/item/ammo_casing, /turf/open/floor/plating, /area/lv624/ground/barrens/central_barrens) -"afM" = ( -/obj/structure/machinery/floodlight, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/plating, -/area/lv624/ground/barrens/central_barrens) "afN" = ( /obj/item/ammo_casing, /turf/open/floor/plating, @@ -1389,10 +1394,6 @@ "agA" = ( /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/south_east_caves) -"agC" = ( -/obj/structure/machinery/floodlight, -/turf/open/floor/plating, -/area/lv624/ground/barrens/central_barrens) "agD" = ( /obj/structure/surface/table/reinforced{ dir = 8; @@ -1407,8 +1408,10 @@ /turf/open/floor/plating, /area/lv624/ground/barrens/central_barrens) "agF" = ( -/obj/structure/machinery/floodlight, /obj/item/ammo_casing, +/obj/structure/machinery/floodlight/landing{ + name = "bolted floodlight" + }, /turf/open/floor/plating, /area/lv624/ground/barrens/central_barrens) "agG" = ( @@ -1585,7 +1588,9 @@ }, /area/lv624/ground/barrens/west_barrens/ceiling) "ahM" = ( -/obj/structure/machinery/floodlight, +/obj/structure/machinery/floodlight/landing{ + name = "bolted floodlight" + }, /turf/open/floor/plating{ dir = 10; icon_state = "warnplate" @@ -1625,7 +1630,9 @@ }, /area/lv624/ground/barrens/central_barrens) "ahT" = ( -/obj/structure/machinery/floodlight, +/obj/structure/machinery/floodlight/landing{ + name = "bolted floodlight" + }, /turf/open/floor/plating{ dir = 6; icon_state = "warnplate" @@ -2515,6 +2522,9 @@ /obj/structure/flora/jungle/alienplant1, /turf/open/gm/grass/grass1, /area/lv624/ground/barrens/south_eastern_jungle_barrens) +"amk" = ( +/turf/closed/wall/strata_ice/jungle, +/area/lv624/ground/caves/north_west_caves) "aml" = ( /obj/structure/disposalpipe/segment, /obj/structure/grille, @@ -2577,6 +2587,13 @@ /obj/structure/flora/jungle/alienplant1, /turf/open/gm/river, /area/lv624/ground/river/west_river) +"amI" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "amK" = ( /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, @@ -2704,6 +2721,10 @@ icon_state = "whiteyellowcorner" }, /area/lv624/lazarus/corporate_dome) +"anM" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "anP" = ( /obj/structure/flora/bush/ausbushes/ppflowers, /turf/open/gm/grass/grass1, @@ -2761,7 +2782,6 @@ /obj/item/clothing/glasses/hud/health, /obj/effect/landmark/crap_item, /obj/item/reagent_container/spray/cleaner, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ icon_state = "whitebluefull" }, @@ -3936,9 +3956,7 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor{ - icon_state = "cult" - }, +/turf/open/floor/wood, /area/lv624/ground/jungle/west_jungle/ceiling) "auP" = ( /obj/effect/landmark/lv624/fog_blocker, @@ -4034,7 +4052,7 @@ icon_state = "Synthetic_Template"; name = "Eternal guardian" }, -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ layer = 3.1; pixel_x = -6; pixel_y = 7 @@ -4101,7 +4119,6 @@ /area/lv624/lazarus/research) "avu" = ( /obj/structure/closet/lasertag/red, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" @@ -4151,12 +4168,6 @@ dir = 8 }, /obj/structure/surface/table, -/obj/item/storage/box/disks{ - layer = 2.9; - pixel_x = 5; - pixel_y = 5 - }, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ icon_state = "white" }, @@ -4372,7 +4383,6 @@ /area/lv624/lazarus/research) "awq" = ( /obj/item/clothing/glasses/regular, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ icon_state = "white" }, @@ -4877,7 +4887,9 @@ /turf/open/gm/coast/beachcorner/north_west, /area/lv624/ground/jungle/west_jungle) "ayj" = ( -/obj/structure/machinery/optable, +/obj/structure/machinery/bioprinter{ + stored_metal = 1000 + }, /obj/structure/machinery/light/small{ dir = 4 }, @@ -5070,7 +5082,7 @@ /area/lv624/lazarus/research) "ayN" = ( /obj/structure/flora/bush/ausbushes/reedbush, -/turf/open/gm/grass/grass1, +/turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/jungle/west_jungle) "ayO" = ( /obj/item/weapon/baseballbat/metal, @@ -5110,7 +5122,7 @@ /area/lv624/ground/jungle/west_jungle) "ayU" = ( /obj/structure/machinery/colony_floodlight, -/turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, +/turf/open/gm/dirtgrassborder/north, /area/lv624/ground/jungle/south_central_jungle) "ayV" = ( /obj/structure/flora/bush/ausbushes/var3/sparsegrass, @@ -5155,12 +5167,6 @@ icon_state = "vault" }, /area/lv624/lazarus/robotics) -"azb" = ( -/obj/structure/prop/mech/mech_parts/part/gygax_torso, -/turf/open/floor{ - icon_state = "vault" - }, -/area/lv624/lazarus/robotics) "azc" = ( /obj/structure/machinery/power/apc{ dir = 1; @@ -5243,7 +5249,6 @@ /area/lv624/lazarus/fitness) "azm" = ( /obj/structure/closet/boxinggloves, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" @@ -5314,9 +5319,9 @@ }, /area/lv624/lazarus/sleep_female) "azB" = ( -/obj/effect/landmark/static_comms/net_one, +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, /turf/open/gm/dirt, -/area/lv624/ground/colony/telecomm/tcommdome/south) +/area/lv624/ground/jungle/north_west_jungle) "azD" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, @@ -5375,7 +5380,6 @@ /area/lv624/lazarus/fitness) "azM" = ( /obj/structure/closet/secure_closet/hydroponics, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" @@ -5421,7 +5425,6 @@ }, /obj/structure/machinery/light, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ dir = 5; icon_state = "whitepurple" @@ -5445,6 +5448,10 @@ }, /turf/open/floor/vault, /area/lv624/lazarus/quartstorage) +"azX" = ( +/obj/effect/landmark/hunter_primary, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "azY" = ( /obj/item/weapon/harpoon/yautja{ anchored = 1; @@ -5502,13 +5509,6 @@ icon_state = "vault" }, /area/lv624/lazarus/robotics) -"aAk" = ( -/obj/structure/prop/mech/mech_parts/chassis/gygax, -/turf/open/floor{ - dir = 8; - icon_state = "vault" - }, -/area/lv624/lazarus/robotics) "aAl" = ( /turf/open/gm/dirt, /area/lv624/ground/jungle/west_jungle) @@ -5849,7 +5849,7 @@ /area/lv624/ground/river/west_river) "aBo" = ( /obj/docking_port/stationary/marine_dropship/lz2{ - name = "Robotics Landing Zone" + name = "LZ2: Robotics Landing Zone" }, /turf/open/floor/plating, /area/lv624/lazarus/landing_zones/lz2) @@ -6017,15 +6017,6 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) -"aBR" = ( -/obj/structure/largecrate, -/obj/structure/prop/mech/mech_parts/part/gygax_armor{ - layer = 1 - }, -/turf/open/floor/plating{ - icon_state = "platebot" - }, -/area/lv624/lazarus/robotics) "aBS" = ( /obj/structure/barricade/wooden{ dir = 8 @@ -6195,7 +6186,6 @@ /obj/item/tool/crowbar, /obj/item/clothing/gloves/yellow, /obj/item/stack/medical/bruise_pack, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ icon_state = "bluecorner" }, @@ -6369,8 +6359,9 @@ }, /area/lv624/lazarus/sleep_male) "aCV" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/grass/grass1, -/area/lv624/lazarus/sleep_male) +/area/lv624/ground/jungle/central_jungle) "aCX" = ( /turf/open/floor/grass, /area/lv624/lazarus/main_hall) @@ -6398,7 +6389,6 @@ /obj/structure/surface/table, /obj/item/weapon/gun/pistol/holdout, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating{ icon_state = "platebot" }, @@ -7226,7 +7216,7 @@ /area/lv624/lazarus/toilet) "aFQ" = ( /obj/structure/window_frame/wood, -/turf/open/floor/plating, +/turf/open/floor/wood, /area/lv624/ground/jungle/west_jungle/ceiling) "aFR" = ( /turf/open/floor{ @@ -7256,7 +7246,6 @@ /obj/structure/surface/table, /obj/item/trash/cheesie, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ dir = 5; icon_state = "whitepurple" @@ -7930,6 +7919,12 @@ /obj/effect/landmark/monkey_spawn, /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/west_jungle) +"aIA" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "aIB" = ( /obj/structure/closet, /turf/open/floor{ @@ -7937,10 +7932,21 @@ icon_state = "purple" }, /area/lv624/lazarus/sleep_female) +"aIE" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 11; + pixel_y = -2 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "aIH" = ( /obj/structure/surface/table/woodentable/poor, /obj/item/clothing/mask/cigarette/cigar, -/obj/item/weapon/gun/shotgun/double/with_stock, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor/wood, /area/lv624/ground/jungle/west_jungle/ceiling) @@ -8563,7 +8569,7 @@ /area/lv624/ground/jungle/south_west_jungle) "aLz" = ( /obj/docking_port/stationary/marine_dropship/lz1{ - name = "Nexus Landing Zone" + name = "LZ1: Nexus Landing Zone" }, /turf/open/floor/plating, /area/lv624/lazarus/landing_zones/lz1) @@ -8788,7 +8794,7 @@ /area/lv624/lazarus/landing_zones/lz1) "aMr" = ( /obj/effect/landmark/lv624/xeno_tunnel, -/turf/open/gm/grass/grass1, +/turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, /area/lv624/ground/jungle/east_jungle) "aMt" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, @@ -8861,7 +8867,6 @@ /obj/item/ammo_magazine/pistol/highpower, /obj/item/ammo_magazine/pistol/highpower, /obj/item/ammo_magazine/pistol/highpower, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ icon_state = "cult" }, @@ -9203,12 +9208,6 @@ /obj/effect/landmark/crap_item, /obj/effect/landmark/crap_item, /obj/item/clothing/suit/armor/vest/security, -/obj/structure/machinery/door_control{ - id = "secure_inner_blast"; - name = "Secure Inner Doors"; - pixel_x = 25; - pixel_y = 5 - }, /turf/open/floor{ icon_state = "cult" }, @@ -9540,8 +9539,17 @@ icon_state = "chapel" }, /area/lv624/lazarus/chapel) +"aPM" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "aPN" = ( /obj/structure/window_frame/colony/reinforced, +/obj/item/stack/rods, /turf/open/floor/plating, /area/lv624/lazarus/comms) "aPO" = ( @@ -9552,8 +9560,7 @@ req_one_access = null }, /turf/open/floor{ - dir = 9; - icon_state = "brown" + icon_state = "delivery" }, /area/lv624/lazarus/comms) "aPR" = ( @@ -9839,38 +9846,28 @@ "aRd" = ( /obj/structure/surface/table, /obj/item/device/mmi/radio_enabled, -/turf/open/floor{ - dir = 9; - icon_state = "brown" - }, -/area/lv624/lazarus/comms) -"aRe" = ( -/obj/structure/surface/table, -/obj/item/device/flashlight, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor{ dir = 9; icon_state = "brown" }, /area/lv624/lazarus/comms) -"aRf" = ( -/obj/structure/surface/table, -/obj/item/device/radio/headset{ - frequency = 1469; - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/device/radio/headset{ - frequency = 1469 - }, -/obj/structure/machinery/light{ - dir = 1 +"aRe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/power/monitor, +/obj/item/ashtray/glass{ + pixel_x = 3; + pixel_y = 15 }, /turf/open/floor{ dir = 9; icon_state = "brown" }, /area/lv624/lazarus/comms) +"aRf" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/gm/grass/grass1, +/area/lv624/ground/jungle/west_central_jungle) "aRg" = ( /turf/open/floor/plating, /area/lv624/lazarus/landing_zones/lz2) @@ -9882,10 +9879,11 @@ }, /area/lv624/lazarus/chapel) "aRi" = ( -/obj/structure/surface/table, -/obj/item/ashtray/glass, -/obj/item/tool/crowbar, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, /turf/open/floor{ dir = 9; icon_state = "brown" @@ -10114,8 +10112,14 @@ /turf/open/floor/plating, /area/lv624/lazarus/landing_zones/lz1) "aSd" = ( -/obj/structure/bed/chair/office/light{ - dir = 1 +/obj/structure/machinery/blackbox_recorder, +/obj/item/prop/almayer/flight_recorder/colony{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, /turf/open/floor{ dir = 9; @@ -10123,8 +10127,12 @@ }, /area/lv624/lazarus/comms) "aSe" = ( -/obj/structure/surface/table, -/obj/item/device/multitool, +/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 9; icon_state = "brown" @@ -10264,30 +10272,24 @@ }, /area/lv624/lazarus/canteen) "aSI" = ( -/obj/structure/machinery/computer/telecomms/server, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 9; icon_state = "brown" }, /area/lv624/lazarus/comms) "aSJ" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - frequency = 1469; - name = "General Listening Channel"; - pixel_x = -30 - }, /turf/open/floor{ - dir = 9; - icon_state = "brown" + icon_state = "podhatchfloor" }, /area/lv624/lazarus/comms) "aSK" = ( -/obj/structure/machinery/computer/telecomms/traffic, -/turf/open/floor{ - dir = 9; - icon_state = "brown" - }, +/obj/structure/window_frame/colony/reinforced, +/obj/item/shard, +/turf/open/floor/plating, /area/lv624/lazarus/comms) "aSL" = ( /turf/closed/wall/r_wall, @@ -10300,7 +10302,6 @@ "aSQ" = ( /obj/structure/safe/floor{ name = "safe"; - pixel_x = 30; spawnkey = 0 }, /turf/open/floor{ @@ -10377,25 +10378,25 @@ "aTg" = ( /turf/closed/wall, /area/lv624/lazarus/comms) -"aTh" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor{ - dir = 9; - icon_state = "brown" - }, -/area/lv624/lazarus/comms) "aTi" = ( -/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 9; icon_state = "brown" }, /area/lv624/lazarus/comms) "aTj" = ( -/obj/structure/machinery/blackbox_recorder, -/obj/item/prop/almayer/flight_recorder/colony{ - pixel_x = -6; - pixel_y = 10 +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/structure/machinery/computer/telecomms/traffic{ + layer = 3.1; + pixel_y = 16 + }, +/obj/structure/bed/chair/office/light{ + dir = 1; + layer = 3.2 }, /turf/open/floor{ dir = 9; @@ -10405,8 +10406,7 @@ "aTk" = ( /obj/effect/landmark/static_comms/net_one, /turf/open/floor{ - dir = 9; - icon_state = "brown" + icon_state = "podhatchfloor" }, /area/lv624/lazarus/comms) "aTo" = ( @@ -10441,6 +10441,11 @@ /obj/structure/machinery/colony_floodlight_switch{ pixel_y = 30 }, +/obj/item/device/assembly/voice, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, /turf/open/floor{ icon_state = "dark" }, @@ -10454,6 +10459,12 @@ /obj/item/shard, /turf/open/floor/plating, /area/lv624/lazarus/captain) +"aTy" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "aTB" = ( /obj/structure/machinery/light/small, /turf/open/floor{ @@ -10526,7 +10537,6 @@ /obj/structure/machinery/power/apc{ dir = 1; name = "Telecomms APC"; - pixel_y = 30; start_charge = 15 }, /turf/open/floor{ @@ -10534,7 +10544,12 @@ }, /area/lv624/lazarus/comms) "aTK" = ( -/turf/open/gm/dirt, +/obj/structure/surface/rack, +/obj/item/device/multitool, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, /area/lv624/lazarus/comms) "aTM" = ( /turf/open/floor{ @@ -10542,6 +10557,10 @@ }, /area/lv624/lazarus/engineering) "aTN" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, /turf/open/floor/plating{ icon_state = "warnplate" }, @@ -10668,22 +10687,18 @@ req_one_access = null }, /turf/open/floor{ - dir = 9; - icon_state = "brown" + icon_state = "delivery" }, /area/lv624/lazarus/comms) "aUl" = ( -/obj/item/device/multitool, -/obj/structure/surface/rack, -/turf/open/floor{ - dir = 9; - icon_state = "brown" - }, -/area/lv624/lazarus/comms) +/turf/open/gm/dirtgrassborder/south, +/area/lv624/ground/colony/north_tcomms_road) "aUo" = ( /obj/effect/spawner/random/toolbox, /obj/structure/surface/table/reinforced/prison, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/foamed_metal, /turf/open/floor{ icon_state = "dark" }, @@ -10700,17 +10715,18 @@ }, /area/lv624/lazarus/engineering) "aUt" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/device/assembly/timer, -/obj/item/device/assembly/voice, -/obj/item/tool/crowbar, -/turf/open/floor{ - icon_state = "dark" - }, -/area/lv624/lazarus/engineering) +/obj/structure/flora/jungle/vines/heavy, +/obj/structure/window_frame/colony, +/obj/item/shard, +/turf/open/floor/plating, +/area/lv624/lazarus/yggdrasil) "aUu" = ( /obj/structure/machinery/light, /obj/structure/bed/stool, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, /turf/open/floor{ icon_state = "dark" }, @@ -10876,6 +10892,7 @@ /area/lv624/ground/jungle/south_west_jungle) "aVb" = ( /obj/structure/machinery/light, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 9; icon_state = "brown" @@ -10888,6 +10905,7 @@ /obj/structure/machinery/power/geothermal{ fail_rate = 5 }, +/obj/structure/platform, /turf/open/floor/plating{ dir = 6; icon_state = "warnplate" @@ -10906,6 +10924,10 @@ /obj/structure/machinery/power/geothermal{ fail_rate = 5 }, +/obj/item/clothing/head/hardhat/orange{ + pixel_x = -7; + pixel_y = 13 + }, /turf/open/floor/plating{ dir = 8; icon_state = "warnplate" @@ -10924,6 +10946,9 @@ }, /area/lv624/lazarus/engineering) "aVj" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; locked = 1; @@ -10932,7 +10957,7 @@ req_one_access = null }, /turf/open/floor{ - icon_state = "dark" + icon_state = "delivery" }, /area/lv624/lazarus/engineering) "aVk" = ( @@ -11033,11 +11058,12 @@ /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) "aVF" = ( -/obj/structure/machinery/power/apc{ - dir = 1; - name = "Geothermal APC"; - pixel_y = 30; - start_charge = 0 +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, /turf/open/floor{ icon_state = "dark" @@ -11050,22 +11076,28 @@ name = "General Listening Channel"; pixel_y = 30 }, +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/obj/structure/platform/stair_cut, +/obj/item/clothing/head/hardhat/orange, /turf/open/floor{ icon_state = "dark" }, /area/lv624/lazarus/engineering) "aVH" = ( -/obj/item/clothing/head/hardhat/orange, /obj/structure/machinery/light{ dir = 1 }, +/obj/structure/foamed_metal, /turf/open/floor{ icon_state = "dark" }, /area/lv624/lazarus/engineering) "aVI" = ( -/obj/structure/foamed_metal, /obj/structure/machinery/vending/coffee, +/obj/structure/foamed_metal, /turf/open/floor{ icon_state = "dark" }, @@ -11160,45 +11192,24 @@ /obj/item/ore/silver, /turf/open/floor/greengrid, /area/lv624/lazarus/secure_storage) -"aWb" = ( -/obj/structure/machinery/door_control{ - id = "secure_inner_blast"; - name = "Secure Inner Doors"; - pixel_x = 25; - pixel_y = 5 - }, -/obj/structure/machinery/door_control{ - id = "secure_outer_blast"; - name = "Secure Outer Doors"; - pixel_x = 25; - pixel_y = -5 - }, -/turf/open/floor/greengrid, -/area/lv624/lazarus/secure_storage) "aWc" = ( /obj/structure/computerframe{ anchored = 1 }, -/obj/structure/machinery/door_control{ - id = "secure_outer_blast"; - name = "Secure Outer Doors"; - pixel_x = 25; - pixel_y = -5 - }, -/turf/open/floor/greengrid, +/turf/open/floor/plating, /area/lv624/lazarus/secure_storage) "aWd" = ( -/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, +/obj/item/shard, /turf/open/floor{ - dir = 9; - icon_state = "brown" + icon_state = "podhatchfloor" }, /area/lv624/lazarus/comms) "aWe" = ( -/obj/structure/machinery/computer/telecomms/monitor, +/obj/structure/machinery/computer/telecomms/monitor{ + pixel_y = 16 + }, /turf/open/floor{ - dir = 9; - icon_state = "brown" + icon_state = "dark" }, /area/lv624/lazarus/comms) "aWf" = ( @@ -11207,9 +11218,8 @@ req_access_txt = "100"; req_one_access = null }, -/obj/structure/foamed_metal, /turf/open/floor{ - icon_state = "dark" + icon_state = "delivery" }, /area/lv624/lazarus/engineering) "aWg" = ( @@ -11217,6 +11227,7 @@ /obj/structure/lattice{ layer = 2.9 }, +/obj/structure/platform, /turf/open/floor/plating{ dir = 10; icon_state = "warnplate" @@ -11292,6 +11303,10 @@ icon_state = "whiteyellowfull" }, /area/lv624/ground/jungle/south_west_jungle/ceiling) +"aWq" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/gm/dirtgrassborder/east, +/area/lv624/ground/jungle/north_west_jungle) "aWs" = ( /obj/structure/flora/jungle/vines/heavy{ pixel_x = -28 @@ -11299,24 +11314,7 @@ /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) -"aWu" = ( -/obj/structure/machinery/door/poddoor/almayer{ - dir = 4; - id = "secure_inner_blast"; - layer = 3.3; - name = "\improper Secure Armory Blast Door"; - unacidable = 1 - }, -/turf/open/floor/greengrid, -/area/lv624/lazarus/secure_storage) "aWv" = ( -/obj/structure/machinery/door/poddoor/almayer{ - dir = 4; - id = "secure_outer_blast"; - layer = 3.3; - name = "\improper Secure Armory Blast Door"; - unacidable = 1 - }, /turf/open/floor/plating{ icon_state = "platebotc" }, @@ -11325,28 +11323,38 @@ /obj/effect/decal/remains/xeno, /turf/open/gm/dirt, /area/lv624/ground/colony/south_medbay_road) -"aWx" = ( -/obj/structure/bed/chair/office/light, +"aWy" = ( +/obj/structure/surface/table, +/obj/item/device/radio/headset{ + frequency = 1469; + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/device/radio/headset{ + frequency = 1469 + }, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor{ dir = 9; icon_state = "brown" }, /area/lv624/lazarus/comms) -"aWy" = ( -/obj/structure/foamed_metal, -/turf/open/gm/dirt, -/area/lv624/lazarus/comms) "aWz" = ( /obj/structure/window_frame/colony/reinforced, /turf/open/floor/plating, /area/lv624/lazarus/engineering) "aWA" = ( -/obj/structure/foamed_metal, -/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, +/obj/structure/machinery/computer/telecomms/server{ + pixel_y = 16 + }, +/obj/structure/bed/chair/office/light{ + dir = 1 + }, /turf/open/floor{ - icon_state = "dark" + dir = 9; + icon_state = "brown" }, -/area/lv624/lazarus/engineering) +/area/lv624/lazarus/comms) "aWC" = ( /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, @@ -11358,31 +11366,35 @@ }, /area/lv624/lazarus/engineering) "aWE" = ( -/obj/structure/sign/safety/high_voltage{ - pixel_x = 7; - pixel_y = -32 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/obj/structure/surface/table/reinforced/prison, -/obj/item/tool/extinguisher, -/obj/effect/spawner/random/powercell, +/obj/item/prop/alien/hugger, /turf/open/floor{ - icon_state = "dark" + dir = 9; + icon_state = "brown" }, -/area/lv624/lazarus/engineering) +/area/lv624/lazarus/comms) "aWF" = ( +/obj/effect/spawner/random/toolbox, +/obj/structure/surface/table/reinforced/prison, +/obj/item/device/radio, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /obj/structure/machinery/light, -/obj/structure/machinery/power/monitor{ - name = "Main Power Grid Monitoring" - }, /turf/open/floor{ icon_state = "dark" }, /area/lv624/lazarus/engineering) "aWG" = ( -/obj/effect/spawner/random/toolbox, -/obj/structure/surface/table/reinforced/prison, -/obj/item/device/radio, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/obj/structure/platform{ + layer = 3.1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "dark" }, @@ -11391,6 +11403,10 @@ /obj/structure/surface/table/reinforced/prison, /obj/item/folder, /obj/item/device/assembly/signaller, +/obj/structure/platform_decoration{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "dark" }, @@ -11400,6 +11416,7 @@ /obj/item/device/flashlight, /obj/effect/spawner/random/tool, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "dark" }, @@ -11479,46 +11496,35 @@ /turf/open/floor/greengrid, /area/lv624/lazarus/secure_storage) "aWX" = ( -/obj/structure/surface/table, -/obj/item/tool/weldingtool, -/obj/item/tool/wrench, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor{ - dir = 9; - icon_state = "brown" +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, -/area/lv624/lazarus/comms) -"aWY" = ( -/obj/structure/surface/table, -/obj/item/device/radio/off{ - frequency = 1469 +/obj/structure/machinery/light{ + dir = 4 }, +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/rods, /turf/open/floor{ dir = 9; icon_state = "brown" }, /area/lv624/lazarus/comms) +"aWY" = ( +/turf/closed/wall, +/area/lv624/lazarus/yggdrasil) "aWZ" = ( -/obj/structure/surface/table, -/obj/item/clothing/head/soft/blue, -/obj/structure/machinery/light, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor{ - dir = 9; - icon_state = "brown" - }, -/area/lv624/lazarus/comms) +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/gm/grass/grass1, +/area/lv624/ground/colony/west_tcomms_road) "aXa" = ( -/obj/structure/surface/table, -/obj/item/device/radio/off{ - frequency = 1469 - }, -/obj/item/tool/crowbar, /obj/structure/machinery/light, -/obj/item/tool/hatchet{ - pixel_x = 6; - pixel_y = 4 +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, +/obj/structure/platform, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 9; icon_state = "brown" @@ -11531,11 +11537,24 @@ }, /area/lv624/lazarus/sleep_male) "aXd" = ( -/turf/open/gm/dirtgrassborder/south, +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, /area/lv624/lazarus/comms) "aXe" = ( -/obj/structure/foamed_metal, -/turf/open/gm/dirtgrassborder/south, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/item/tool/crowbar, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, /area/lv624/lazarus/comms) "aXf" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ @@ -11546,7 +11565,7 @@ req_one_access = null }, /turf/open/floor{ - icon_state = "dark" + icon_state = "delivery" }, /area/lv624/lazarus/engineering) "aXg" = ( @@ -11557,7 +11576,7 @@ req_one_access = null }, /turf/open/floor{ - icon_state = "dark" + icon_state = "delivery" }, /area/lv624/lazarus/engineering) "aXh" = ( @@ -11582,19 +11601,29 @@ /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) "aXn" = ( -/obj/structure/fence, -/turf/open/gm/grass/grass1, -/area/lv624/ground/jungle/south_central_jungle) +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "aXo" = ( /obj/effect/landmark/crap_item, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) "aXs" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/power/apc{ + dir = 1; + name = "Geothermal APC"; + start_charge = 0 }, /turf/open/floor{ - icon_state = "dark" + icon_state = "delivery" }, /area/lv624/lazarus/engineering) "aXt" = ( @@ -11615,6 +11644,7 @@ dir = 1 }, /obj/structure/reagent_dispensers/fueltank, +/obj/effect/spawner/random/tool, /turf/open/floor{ icon_state = "dark" }, @@ -11707,6 +11737,7 @@ /obj/structure/machinery/light{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "dark" }, @@ -11721,6 +11752,7 @@ /area/lv624/lazarus/security) "aXN" = ( /obj/effect/spawner/random/powercell, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "dark" }, @@ -11767,7 +11799,14 @@ /area/lv624/lazarus/landing_zones/lz2) "aXZ" = ( /obj/structure/surface/rack, -/obj/effect/spawner/random/tool, +/obj/item/weapon/gun/smg/nailgun, +/obj/item/weapon/gun/smg/nailgun, +/obj/item/ammo_magazine/smg/nailgun, +/obj/item/ammo_magazine/smg/nailgun, +/obj/item/ammo_magazine/smg/nailgun, +/obj/item/ammo_magazine/smg/nailgun, +/obj/item/ammo_magazine/smg/nailgun, +/obj/item/ammo_magazine/smg/nailgun, /turf/open/floor{ icon_state = "dark" }, @@ -11796,19 +11835,13 @@ /turf/open/floor/greengrid, /area/lv624/lazarus/secure_storage) "aYh" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/smg/nailgun, -/obj/item/weapon/gun/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/rods, /turf/open/floor{ - icon_state = "dark" + dir = 9; + icon_state = "brown" }, -/area/lv624/lazarus/engineering) +/area/lv624/lazarus/comms) "aYj" = ( /obj/effect/landmark/lv624/xeno_tunnel, /obj/structure/flora/jungle/vines/light_3, @@ -11916,6 +11949,11 @@ icon_state = "red" }, /area/lv624/lazarus/security) +"aYI" = ( +/turf/open/gm/dirt{ + icon_state = "desert0" + }, +/area/lv624/ground/caves/south_west_caves) "aYJ" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/trash/chips, @@ -12000,15 +12038,6 @@ /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/dirt, /area/lv624/ground/river/west_river) -"aZc" = ( -/obj/structure/surface/table, -/obj/item/weapon/twohanded/fireaxe, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor{ - dir = 9; - icon_state = "brown" - }, -/area/lv624/lazarus/comms) "aZd" = ( /obj/structure/closet/radiation, /obj/item/device/radio/intercom{ @@ -12017,6 +12046,7 @@ name = "General Listening Channel"; pixel_x = -30 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "dark" }, @@ -12027,6 +12057,7 @@ /obj/item/book/manual/engineering_guide, /obj/item/book/manual/engineering_hacking, /obj/item/book/manual/atmospipes, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "dark" }, @@ -12037,7 +12068,7 @@ /obj/item/device/analyzer, /obj/item/device/multitool, /obj/item/device/assembly/prox_sensor, -/obj/effect/landmark/objective_landmark/medium, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "dark" }, @@ -12055,14 +12086,16 @@ "aZh" = ( /obj/structure/surface/table, /obj/effect/landmark/objective_landmark/close, +/obj/item/tool/crowbar, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor{ - dir = 9; - icon_state = "brown" + icon_state = "dark" }, /area/lv624/lazarus/comms) "aZi" = ( /obj/structure/surface/table/woodentable/fancy, -/obj/structure/machinery/chem_dispenser/beer{ +/obj/structure/machinery/chem_dispenser/soda/beer{ pixel_y = 26 }, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, @@ -12131,6 +12164,7 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "dark" }, @@ -12138,6 +12172,7 @@ "aZy" = ( /obj/structure/closet/secure_closet/engineering_personal, /obj/effect/landmark/objective_landmark/close, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "dark" }, @@ -12151,7 +12186,6 @@ dir = 4 }, /obj/effect/landmark/objective_landmark/close, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ dir = 1; icon_state = "redcorner" @@ -12162,7 +12196,6 @@ /obj/structure/machinery/light/small{ dir = 8 }, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor/wood{ icon_state = "wood-broken4" }, @@ -12212,15 +12245,28 @@ }, /area/lv624/lazarus/hop) "aZG" = ( -/obj/structure/filingcabinet, -/obj/effect/landmark/objective_landmark/close, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, /turf/open/floor{ - icon_state = "dark" + dir = 9; + icon_state = "brown" }, -/area/lv624/lazarus/engineering) +/area/lv624/lazarus/comms) "aZI" = ( -/obj/structure/filingcabinet/chestdrawer, +/obj/structure/filingcabinet/chestdrawer{ + density = 0; + pixel_x = -8; + pixel_y = 16 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 7; + pixel_y = 16 + }, /obj/effect/landmark/objective_landmark/close, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "dark" }, @@ -12234,8 +12280,11 @@ }, /area/lv624/lazarus/engineering) "aZK" = ( -/obj/structure/surface/rack, -/obj/item/clothing/mask/gas, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, /turf/open/floor{ dir = 9; icon_state = "brown" @@ -12275,6 +12324,17 @@ /obj/structure/flora/bush/ausbushes/var3/fullgrass, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"bak" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) +"bav" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno/up, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "baN" = ( /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass2, @@ -12349,6 +12409,29 @@ /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/west_central_jungle) +"bcb" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) +"bcU" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = -10; + pixel_y = -2 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) +"bdu" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "bdL" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/stack/sheet/metal{ @@ -12409,6 +12492,7 @@ dir = 8; health = 80 }, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 4; icon_state = "whiteyellowfull" @@ -12418,9 +12502,21 @@ /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"bje" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "bkG" = ( /turf/open/gm/coast/beachcorner/north_west, /area/lv624/ground/river/central_river) +"bkK" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "bkP" = ( /obj/structure/flora/jungle/vines/light_3, /obj/structure/blocker/forcefield/multitile_vehicles, @@ -12438,7 +12534,7 @@ "bnz" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1; - name = "\improper Corporate Liason" + name = "\improper Corporate Liaison" }, /turf/open/floor{ icon_state = "white" @@ -12448,6 +12544,12 @@ /obj/structure/flora/bush/ausbushes/pointybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"bnM" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "bnX" = ( /obj/structure/flora/bush/ausbushes/reedbush, /turf/open/gm/coast/beachcorner/south_west, @@ -12480,6 +12582,10 @@ /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"brC" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "bsR" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/jungle/south_west_jungle) @@ -12521,8 +12627,7 @@ /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz1) "btS" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, -/turf/open/gm/grass/grass1, +/turf/open/gm/dirtgrassborder/north, /area/lv624/ground/jungle/east_jungle) "btX" = ( /turf/open/gm/river, @@ -12553,6 +12658,24 @@ /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/south_medbay_road) +"bvj" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) +"bvq" = ( +/obj/structure/prop/mech/parts/chassis/gygax, +/turf/open/floor{ + dir = 8; + icon_state = "vault" + }, +/area/lv624/lazarus/robotics) +"bvS" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) +"bvX" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "bwc" = ( /turf/open/gm/coast/beachcorner2/north_east, /area/lv624/ground/barrens/west_barrens) @@ -12563,6 +12686,12 @@ /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_central_jungle) +"bxb" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "byl" = ( /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, @@ -12606,6 +12735,14 @@ "bBu" = ( /turf/open/gm/coast/beachcorner2/south_west, /area/lv624/ground/jungle/west_jungle) +"bBT" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "bCe" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/jungle/south_east_jungle) @@ -12619,6 +12756,14 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"bEj" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "bEq" = ( /turf/open/gm/dirtgrassborder/north, /area/lv624/ground/barrens/south_eastern_barrens) @@ -12667,11 +12812,24 @@ }, /turf/open/gm/coast/beachcorner/north_east, /area/lv624/ground/caves/sand_temple) +"bJe" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "bJz" = ( /obj/effect/decal/cleanable/blood, /obj/effect/landmark/corpsespawner/wygoon, /turf/open/floor/wood, /area/lv624/ground/caves/north_central_caves) +"bJQ" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/structure/blocker/forcefield/multitile_vehicles, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "bLs" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, /obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, @@ -12680,6 +12838,18 @@ "bLE" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/caves/sand_temple) +"bLH" = ( +/obj/structure/machinery/power/monitor{ + name = "Main Power Grid Monitoring" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) "bMu" = ( /turf/open/gm/dirtgrassborder/west, /area/lv624/ground/jungle/east_jungle) @@ -12699,6 +12869,7 @@ dir = 4; health = 80 }, +/obj/effect/landmark/objective_landmark/close, /turf/open/gm/dirt, /area/lv624/ground/caves/sand_temple) "bOg" = ( @@ -12707,6 +12878,15 @@ }, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_barrens) +"bOm" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 4 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) "bOy" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; @@ -12721,6 +12901,24 @@ }, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/north_east_jungle) +"bPE" = ( +/obj/structure/flora/bush/ausbushes/pointybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) +"bQf" = ( +/obj/structure/machinery/power/port_gen/pacman/super, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) +"bQz" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "bQA" = ( /obj/structure/stairs/perspective{ color = "#b29082"; @@ -12754,6 +12952,13 @@ }, /turf/open/floor/vault, /area/lv624/lazarus/quartstorage) +"bUc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/shard, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/comms) "bUs" = ( /obj/structure/surface/table/woodentable/poor, /obj/item/ammo_magazine/shotgun/buckshot, @@ -12832,6 +13037,10 @@ icon_state = "white" }, /area/lv624/lazarus/medbay) +"cdw" = ( +/obj/effect/landmark/objective_landmark/science, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "cdF" = ( /obj/effect/landmark/nightmare{ insert_tag = "lv-centralcaves" @@ -12847,6 +13056,11 @@ "cfD" = ( /turf/closed/wall/r_wall/unmeltable, /area/lv624/lazarus/quartstorage/outdoors) +"cfL" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/gm/grass/grass1/weedable, +/area/lv624/ground/caves/north_east_caves) "cfN" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/lv624/ground/jungle/north_jungle) @@ -12889,10 +13103,27 @@ /obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, /turf/open/gm/dirt, /area/lv624/ground/caves/west_caves) +"chi" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = -10; + pixel_y = -2 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "cij" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/caves/sand_temple) +"ciz" = ( +/obj/item/device/assembly/signaller{ + pixel_x = -6; + pixel_y = -9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) "ciA" = ( /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" @@ -12911,6 +13142,13 @@ }, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) +"clO" = ( +/obj/effect/landmark/crap_item, +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "cmf" = ( /obj/structure/flora/jungle/planttop1, /turf/open/gm/grass/grass1, @@ -12933,6 +13171,12 @@ icon_state = "squareswood" }, /area/lv624/ground/caves/sand_temple) +"cop" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "cpQ" = ( /turf/open/gm/dirtgrassborder/north, /area/lv624/ground/caves/sand_temple) @@ -12951,6 +13195,14 @@ /obj/structure/flora/jungle/vines/light_1, /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/north_west_jungle) +"cqC" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "cqE" = ( /obj/structure/barricade/wooden, /obj/structure/flora/jungle/vines/light_2, @@ -12959,9 +13211,27 @@ icon_state = "warning" }, /area/lv624/lazarus/landing_zones/lz1) +"cqH" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/chanterelle, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"cqN" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"crn" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "crF" = ( /obj/structure/flora/bush/ausbushes/var3/fernybush, -/turf/open/gm/grass/grass1, +/obj/structure/flora/jungle/vines/heavy, +/turf/open/gm/dirtgrassborder/west, /area/lv624/ground/jungle/east_jungle) "csu" = ( /obj/structure/flora/bush/ausbushes/reedbush, @@ -12971,9 +13241,12 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/gm/dirt, /area/lv624/ground/barrens/central_barrens) +"ctS" = ( +/obj/structure/fence, +/turf/open/gm/dirt, +/area/lv624/ground/colony/west_tcomms_road) "cvk" = ( /obj/structure/fence, -/obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/jungle/west_central_jungle) "cwv" = ( @@ -12990,16 +13263,30 @@ icon_state = "desert_dug" }, /area/lv624/ground/barrens/west_barrens) +"cxi" = ( +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "cys" = ( /obj/structure/foamed_metal, /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/east_central_jungle) -"czq" = ( -/obj/effect/landmark/objective_landmark/medium, +"cyP" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" + }, +/obj/structure/platform/stair_cut/alt, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - icon_state = "dark" + dir = 9; + icon_state = "brown" }, -/area/lv624/lazarus/corporate_dome) +/area/lv624/lazarus/comms) +"czq" = ( +/obj/effect/landmark/objective_landmark/science, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "czu" = ( /obj/structure/flora/bush/ausbushes/var3/leafybush, /turf/open/gm/grass/grass1, @@ -13046,10 +13333,41 @@ "cCr" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/east_jungle) +"cCP" = ( +/turf/open/gm/dirt{ + icon_state = "desert1" + }, +/area/lv624/ground/caves/south_west_caves) +"cDr" = ( +/obj/structure/girder, +/turf/open/gm/grass/grass1, +/area/lv624/ground/caves/north_central_caves) +"cDQ" = ( +/obj/item/ammo_magazine/sentry{ + current_rounds = 0; + pixel_y = -13 + }, +/obj/item/ammo_casing/bullet{ + icon_state = "cartridge_10_1" + }, +/obj/item/ammo_casing/bullet{ + icon_state = "casing_9_1" + }, +/obj/item/ammo_casing/bullet{ + icon_state = "cartridge_6_1" + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "cEh" = ( /obj/structure/flora/bush/ausbushes/pointybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"cEi" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "cEn" = ( /obj/effect/decal/remains/xeno, /turf/open/gm/dirt, @@ -13062,6 +13380,12 @@ /obj/structure/flora/bush/ausbushes/var3/fullgrass, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"cHW" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "cIL" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, @@ -13074,6 +13398,9 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) "cJw" = ( @@ -13109,6 +13436,23 @@ /obj/effect/landmark/lv624/fog_blocker, /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/river/west_river) +"cMG" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) +"cNE" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/shard, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "cNH" = ( /obj/structure/surface/rack, /obj/item/storage/box/beakers, @@ -13134,10 +13478,22 @@ "cPV" = ( /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_central_jungle) +"cQB" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/amanita, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "cQJ" = ( /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"cQU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/device/multitool, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "cQX" = ( /obj/structure/stairs/perspective{ color = "#b29082"; @@ -13159,6 +13515,12 @@ /obj/item/tool/surgery/surgicaldrill/predatorsurgicaldrill, /turf/open/gm/dirt, /area/lv624/ground/caves/sand_temple) +"cSL" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "cTi" = ( /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/grass/grass1, @@ -13180,6 +13542,10 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/west_nexus_road) +"cWs" = ( +/obj/structure/flora/bush/ausbushes/var3/sunnybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "cXd" = ( /obj/effect/landmark/monkey_spawn, /obj/structure/flora/jungle/vines/heavy, @@ -13207,6 +13573,14 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/closed/wall/mineral/sandstone/runed, /area/lv624/ground/caves/sand_temple) +"daY" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_membrane, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "dbA" = ( /obj/structure/xenoautopsy/tank, /turf/open/shuttle{ @@ -13223,6 +13597,15 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"deU" = ( +/obj/item/circuitboard/airlock{ + pixel_x = 12 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/lv624/ground/colony/telecomm/cargo) "dff" = ( /obj/structure/bed/sofa/vert/grey, /turf/open/floor{ @@ -13234,7 +13617,7 @@ /obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, /obj/effect/landmark/corpsespawner/scientist, -/turf/open/gm/dirt, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/east_caves) "dhp" = ( /obj/structure/flora/bush/ausbushes/reedbush, @@ -13285,9 +13668,18 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"dmT" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "dmZ" = ( /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/north_east_jungle) +"doe" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "dop" = ( /obj/structure/flora/jungle/planttop1, /turf/open/gm/grass/grass1, @@ -13309,6 +13701,12 @@ icon_state = "whiteyellowfull" }, /area/lv624/ground/barrens/south_eastern_barrens) +"dqz" = ( +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/lv624/ground/colony/telecomm/cargo) "dqK" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/grass/grass1, @@ -13327,6 +13725,19 @@ icon_state = "dark" }, /area/lv624/ground/barrens/north_east_barrens/ceiling) +"drX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) +"dsi" = ( +/obj/effect/landmark/monkey_spawn, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) "dsz" = ( /obj/structure/closet/crate/hydroponics/prespawned, /obj/effect/landmark/objective_landmark/close, @@ -13335,6 +13746,13 @@ icon_state = "green" }, /area/lv624/lazarus/hydroponics) +"dtr" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "dvf" = ( /obj/structure/flora/bush/ausbushes/var3/sparsegrass, /turf/open/gm/grass/grass1, @@ -13397,6 +13815,31 @@ }, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/caves/sand_temple) +"dzM" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) +"dAu" = ( +/obj/effect/landmark/crap_item, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"dBS" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = -10 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) +"dCD" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "dCL" = ( /obj/item/reagent_container/food/drinks/cans/waterbottle{ pixel_x = 2 @@ -13441,6 +13884,9 @@ "dFz" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_membrane, /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/west_caves) "dGc" = ( @@ -13454,16 +13900,46 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/gm/dirt, /area/lv624/ground/caves/central_caves) +"dHg" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "dHo" = ( /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/lv624/ground/jungle/north_jungle) +"dHr" = ( +/obj/item/weapon/twohanded/fireaxe, +/obj/effect/decal/cleanable/blood, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/comms) "dId" = ( /obj/structure/machinery/cm_vending/sorted/medical/no_access, /turf/open/floor{ icon_state = "whiteblue" }, /area/lv624/lazarus/medbay) +"dIj" = ( +/obj/structure/flora/bush/ausbushes/reedbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) +"dIu" = ( +/obj/structure/flora/bush/ausbushes/genericbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) +"dIv" = ( +/obj/structure/flora/bush/ausbushes/var3/leafybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) +"dID" = ( +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" + }, +/area/lv624/ground/caves/sand_temple) "dIO" = ( /turf/open/gm/dirt{ icon_state = "desert0" @@ -13478,6 +13954,10 @@ "dKg" = ( /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/barrens/south_eastern_jungle_barrens) +"dKl" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "dLd" = ( /obj/structure/bookcase, /obj/item/book/manual/research_and_development, @@ -13489,6 +13969,13 @@ icon_state = "whiteblue" }, /area/lv624/lazarus/corporate_dome) +"dLm" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "dLn" = ( /obj/effect/acid_hole, /turf/closed/wall/r_wall, @@ -13499,9 +13986,19 @@ }, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/jungle/east_jungle) +"dLW" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "dLY" = ( /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_jungle) +"dMc" = ( +/obj/structure/flora/jungle/planttop1, +/turf/open/gm/dirtgrassborder/south, +/area/lv624/ground/jungle/south_central_jungle) "dMF" = ( /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" @@ -13530,11 +14027,19 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_jungle) +"dOb" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/angel, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "dOf" = ( /obj/effect/decal/cleanable/blood/drip, /obj/effect/landmark/crap_item, /turf/open/gm/dirt, /area/lv624/lazarus/crashed_ship_containers) +"dOA" = ( +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "dOC" = ( /obj/structure/kitchenspike, /obj/effect/decal/cleanable/blood, @@ -13593,12 +14098,18 @@ /area/lv624/lazarus/crashed_ship_containers) "dWM" = ( /obj/effect/landmark/monkey_spawn, -/turf/open/gm/dirt, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_west_caves) "dXq" = ( /obj/structure/platform_decoration/mineral/sandstone/runed, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_barrens) +"dYx" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "dYE" = ( /obj/structure/fence, /turf/open/gm/dirt, @@ -13610,7 +14121,6 @@ "dZH" = ( /obj/structure/filingcabinet, /obj/structure/machinery/light, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ icon_state = "whiteblue" }, @@ -13623,6 +14133,14 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating, /area/lv624/ground/barrens/central_barrens) +"eaI" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "eaJ" = ( /obj/item/stack/sheet/wood{ amount = 2 @@ -13632,10 +14150,21 @@ icon_state = "bot" }, /area/lv624/lazarus/landing_zones/lz1) +"ebr" = ( +/turf/open/gm/dirtgrassborder/east, +/area/lv624/ground/jungle/south_central_jungle) "ebS" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/colony/south_nexus_road) +"ecn" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "ecy" = ( /turf/closed/wall/sulaco, /area/lv624/lazarus/crashed_ship_containers) @@ -13662,9 +14191,27 @@ "efp" = ( /turf/open/gm/grass/grass1, /area/lv624/ground/colony/west_tcomms_road) +"eft" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "efX" = ( /turf/open/gm/coast/east, /area/lv624/ground/river/east_river) +"egc" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) +"egU" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "ehy" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "Hydroponics" @@ -13696,6 +14243,14 @@ /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/north_jungle) +"ejp" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "ejx" = ( /obj/structure/disposalpipe/segment, /obj/structure/window/framed/colony, @@ -13727,6 +14282,32 @@ icon_state = "green" }, /area/lv624/lazarus/hydroponics) +"elp" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) +"elO" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) +"enn" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "eny" = ( /obj/structure/flora/grass/tallgrass/jungle, /turf/open/gm/grass/grass1, @@ -13735,12 +14316,22 @@ /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/south_medbay_road) +"eot" = ( +/obj/structure/prop/mech/parts/gygax_torso, +/turf/open/floor{ + icon_state = "vault" + }, +/area/lv624/lazarus/robotics) "eoM" = ( /turf/open/floor{ dir = 4; icon_state = "whitebluecorner" }, /area/lv624/lazarus/medbay) +"eoW" = ( +/obj/structure/flora/bush/ausbushes/pointybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "epG" = ( /obj/structure/showcase, /obj/structure/window/reinforced{ @@ -13770,6 +14361,10 @@ icon_state = "whitebluefull" }, /area/lv624/lazarus/medbay) +"eqS" = ( +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "erx" = ( /turf/open/gm/coast/beachcorner/south_east, /area/lv624/ground/jungle/west_jungle) @@ -13784,6 +14379,24 @@ icon_state = "cult" }, /area/lv624/ground/caves/south_west_caves) +"etU" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) +"euh" = ( +/obj/effect/landmark/objective_landmark/medium, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"euU" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "euW" = ( /obj/structure/surface/table/woodentable/poor, /obj/item/tool/candle, @@ -13795,14 +14408,29 @@ /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_jungle) +"ewg" = ( +/obj/structure/surface/table/reinforced/prison{ + color = "#6b675e" + }, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/gm/dirt, +/area/lv624/ground/caves/sand_temple) "exf" = ( /turf/open/gm/dirtgrassborder/north, /area/lv624/ground/jungle/south_west_jungle) "eyb" = ( -/obj/structure/fence, -/obj/structure/flora/bush/ausbushes/lavendergrass, -/turf/open/gm/dirtgrassborder/west, -/area/lv624/ground/colony/west_tcomms_road) +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/shard, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "eyn" = ( /obj/structure/flora/jungle/vines/light_3, /turf/closed/wall/strata_ice/jungle, @@ -13854,7 +14482,6 @@ /obj/structure/machinery/light{ dir = 8 }, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 9; icon_state = "green" @@ -13932,6 +14559,12 @@ icon_state = "floor4" }, /area/lv624/lazarus/crashed_ship_containers) +"eMe" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "eNK" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, /area/lv624/ground/jungle/south_east_jungle) @@ -13941,6 +14574,9 @@ icon_state = "desert_dug" }, /area/lv624/ground/barrens/south_eastern_jungle_barrens) +"eOk" = ( +/turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, +/area/lv624/ground/jungle/east_jungle) "eOq" = ( /obj/structure/machinery/colony_floodlight, /turf/open/gm/dirt, @@ -13966,6 +14602,9 @@ /obj/structure/largecrate/random, /turf/open/floor, /area/lv624/lazarus/landing_zones/lz1) +"eQL" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) "eSg" = ( /obj/structure/flora/jungle/vines/heavy, /turf/closed/wall/strata_ice/jungle, @@ -13986,6 +14625,10 @@ icon_state = "cult" }, /area/lv624/ground/caves/south_west_caves) +"eYb" = ( +/obj/structure/flora/bush/ausbushes/var3/sunnybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "eYh" = ( /obj/structure/surface/rack, /obj/effect/landmark/objective_landmark/close, @@ -13999,6 +14642,10 @@ /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/river, /area/lv624/ground/river/east_river) +"eZg" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/amanita, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "eZC" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -14030,6 +14677,16 @@ /obj/structure/flora/jungle/planttop1, /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/east_jungle) +"fcQ" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = -5; + pixel_y = -5 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "fdl" = ( /turf/open/floor, /area/lv624/lazarus/hydroponics) @@ -14086,6 +14743,13 @@ /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"fij" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/chair/office/light, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/comms) "fio" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 9 @@ -14106,10 +14770,9 @@ /turf/open/gm/grass/grass1, /area/lv624/ground/colony/west_nexus_road) "fja" = ( -/obj/item/attachable/bayonet{ +/obj/item/weapon/unathiknife{ desc = "A curved blade made of a strange material. It looks both old and very sharp."; force = 30; - icon_state = "unathiknife"; name = "\improper alien blade"; throwforce = 26 }, @@ -14137,12 +14800,25 @@ icon_state = "asteroidfloor" }, /area/lv624/lazarus/corporate_dome) +"fmV" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) +"fmW" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "fpn" = ( /turf/open/gm/coast/beachcorner/north_east, /area/lv624/ground/barrens/east_barrens) "fqh" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/jungle/east_jungle) +"fqi" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "fqM" = ( /obj/structure/machinery/power/apc{ start_charge = 0 @@ -14152,14 +14828,25 @@ icon_state = "asteroidwarning" }, /area/lv624/ground/colony/telecomm/sw_lz2) +"frV" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "fsa" = ( /obj/structure/surface/table, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 8; icon_state = "barber" }, /area/lv624/lazarus/kitchen) +"fsc" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "fsu" = ( /obj/structure/machinery/light{ dir = 8 @@ -14227,6 +14914,12 @@ icon_state = "squareswood" }, /area/lv624/ground/caves/sand_temple) +"fAs" = ( +/obj/item/tool/crowbar, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) "fAz" = ( /obj/structure/machinery/cm_vending/sorted/medical/no_access, /turf/open/floor{ @@ -14255,10 +14948,18 @@ icon_state = "warning" }, /area/lv624/lazarus/landing_zones/lz1) +"fDE" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "fDO" = ( /obj/structure/flora/jungle/alienplant1, /turf/open/gm/river, /area/lv624/ground/barrens/west_barrens) +"fDT" = ( +/turf/open/gm/dirt{ + icon_state = "desert_dug" + }, +/area/lv624/ground/caves/south_west_caves) "fEn" = ( /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass1, @@ -14280,7 +14981,6 @@ /area/lv624/lazarus/quartstorage) "fFM" = ( /obj/structure/surface/rack, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor{ dir = 8; icon_state = "vault" @@ -14295,10 +14995,16 @@ /obj/structure/machinery/power/apc{ start_charge = 0 }, -/turf/open/floor/plating{ - icon_state = "platebotc" +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, /area/lv624/ground/colony/telecomm/cargo) +"fGn" = ( +/obj/effect/decal/grass_overlay/grass1, +/obj/structure/flora/bush/ausbushes/pointybush, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "fGO" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/grass/grass1, @@ -14309,6 +15015,13 @@ icon_state = "white" }, /area/lv624/lazarus/corporate_dome) +"fHw" = ( +/obj/item/device/sentry_computer{ + pixel_y = 5 + }, +/obj/structure/surface/table, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "fHz" = ( /obj/structure/flora/jungle/vines/light_3, /turf/closed/wall/strata_ice/jungle, @@ -14326,12 +15039,40 @@ /obj/structure/window/framed/colony/reinforced, /turf/open/floor, /area/lv624/lazarus/medbay) +"fIW" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "fJQ" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 1 }, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/west_tcomms_road) +"fKc" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) +"fLf" = ( +/obj/effect/landmark/survivor_spawner, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) +"fLh" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/angel, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) +"fMa" = ( +/obj/item/prop/alien/hugger, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) "fMl" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; @@ -14354,9 +15095,27 @@ "fPH" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/west_central_jungle) +"fQx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) "fQL" = ( /turf/open/gm/coast/beachcorner2/south_east, /area/lv624/ground/river/west_river) +"fRD" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) +"fRU" = ( +/obj/structure/flora/bush/ausbushes/genericbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "fSX" = ( /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/east_jungle) @@ -14376,6 +15135,14 @@ "fTM" = ( /turf/open/gm/dirt, /area/lv624/ground/caves/south_east_caves) +"fTN" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) +"fUj" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "fXr" = ( /obj/effect/landmark/crap_item, /turf/open/gm/dirt, @@ -14389,6 +15156,10 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) +"fYG" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "fZO" = ( /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/jungle/north_west_jungle) @@ -14422,6 +15193,16 @@ /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/south_central_jungle) +"gcB" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 6; + pixel_y = -8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "gcI" = ( /obj/effect/landmark/crap_item, /turf/open/shuttle{ @@ -14447,6 +15228,13 @@ "gdx" = ( /turf/open/gm/coast/north, /area/lv624/ground/barrens/west_barrens) +"gdy" = ( +/obj/structure/surface/table/reinforced/prison{ + color = "#6b675e" + }, +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/dirt, +/area/lv624/ground/caves/sand_temple) "gef" = ( /obj/item/stack/sheet/wood{ amount = 2 @@ -14500,6 +15288,16 @@ /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/grass/grass1, /area/lv624/ground/barrens/south_eastern_jungle_barrens) +"gnt" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = -5; + pixel_y = -5 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "gnx" = ( /turf/open/floor{ icon_state = "white" @@ -14509,16 +15307,25 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/colony/north_nexus_road) +"gos" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "gpC" = ( /obj/structure/flora/jungle/vines/light_2, /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/jungle/west_central_jungle) "gqG" = ( -/obj/item/device/assembly/infra, +/obj/structure/sign/safety/high_voltage{ + pixel_x = 7; + pixel_y = -32 + }, /obj/structure/surface/table/reinforced/prison, +/obj/item/tool/extinguisher, +/obj/effect/spawner/random/powercell, +/obj/item/device/assembly/infra, /obj/effect/spawner/random/powercell, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor{ icon_state = "dark" }, @@ -14527,10 +15334,21 @@ /obj/structure/flora/jungle/planttop1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_jungle) +"grW" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "grZ" = ( /obj/effect/landmark/objective_landmark/science, /turf/open/floor/plating, /area/lv624/ground/barrens/central_barrens) +"gsq" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "gss" = ( /obj/structure/largecrate/random/barrel/yellow, /turf/open/shuttle{ @@ -14570,6 +15388,17 @@ /obj/structure/flora/jungle/vines/heavy, /turf/closed/wall/mineral/sandstone/runed/decor, /area/lv624/ground/jungle/south_west_jungle/ceiling) +"gvm" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) +"gvr" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "gwP" = ( /turf/open/gm/dirt, /area/lv624/ground/caves/west_caves) @@ -14588,6 +15417,12 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"gze" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "gzo" = ( /turf/open/gm/dirt{ icon_state = "desert3" @@ -14599,6 +15434,10 @@ icon_state = "dark" }, /area/lv624/lazarus/quartstorage) +"gzH" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "gzW" = ( /obj/effect/landmark/hunter_secondary, /turf/open/gm/dirt, @@ -14651,13 +15490,25 @@ /obj/structure/flora/bush/ausbushes/var3/sparsegrass, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"gIe" = ( +/obj/effect/landmark/objective_landmark/medium, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "gKg" = ( -/obj/item/clothing/head/hardhat/orange, /turf/open/floor/plating{ dir = 5; icon_state = "warnplate" }, /area/lv624/lazarus/engineering) +"gKN" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "gMe" = ( /obj/effect/landmark/nightmare{ insert_tag = "lv-rightsidepass" @@ -14670,12 +15521,22 @@ }, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) +"gPu" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "gPN" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, /area/lv624/ground/barrens/south_eastern_barrens) "gQr" = ( /turf/open/gm/coast/beachcorner/south_east, /area/lv624/ground/caves/sand_temple) +"gRk" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "gRm" = ( /obj/structure/flora/bush/ausbushes/ppflowers, /turf/open/gm/dirtgrassborder/north, @@ -14683,6 +15544,12 @@ "gRx" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/colony/south_medbay_road) +"gTj" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "gTu" = ( /obj/structure/filingcabinet{ density = 0; @@ -14715,6 +15582,18 @@ "gUq" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/south_east_jungle) +"gVw" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"gVR" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "gWf" = ( /obj/structure/surface/rack, /obj/item/stack/sandbags/large_stack{ @@ -14730,6 +15609,12 @@ icon_state = "vault" }, /area/lv624/lazarus/quartstorage) +"gWE" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/floor/sandstone/runed, +/area/lv624/ground/caves/south_east_caves) "gWI" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/grass/grass1, @@ -14755,6 +15640,16 @@ /obj/structure/prop/brazier, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/caves/sand_temple) +"han" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/amanita, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"hav" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "haN" = ( /obj/structure/flora/bush/ausbushes/grassybush, /turf/open/gm/grass/grass1, @@ -14806,6 +15701,16 @@ icon_state = "asteroidwarning" }, /area/lv624/lazarus/landing_zones/lz2) +"hez" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 2; + pixel_y = 7 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "heC" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 6 @@ -14838,6 +15743,11 @@ }, /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/west_jungle) +"hhs" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "hhv" = ( /turf/open/floor{ dir = 8; @@ -14853,6 +15763,12 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/colony/west_tcomms_road) +"hjo" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "hke" = ( /obj/structure/platform/mineral/sandstone/runed, /obj/structure/stairs/perspective{ @@ -14862,6 +15778,25 @@ }, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_barrens) +"hkT" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"hmq" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"hmJ" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "hmK" = ( /obj/structure/flora/jungle/planttop1, /turf/open/gm/grass/grass1, @@ -14871,6 +15806,22 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/west, /area/lv624/ground/jungle/west_central_jungle) +"hpG" = ( +/turf/open/floor{ + dir = 1; + icon_state = "bot" + }, +/area/lv624/ground/caves/north_central_caves) +"hpK" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = -10; + pixel_y = -2 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "hpN" = ( /obj/structure/surface/table, /obj/effect/landmark/good_item, @@ -14906,6 +15857,15 @@ "hsc" = ( /turf/closed/wall/r_wall, /area/lv624/ground/river/central_river) +"htV" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 4 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "huH" = ( /obj/structure/flora/jungle/planttop1, /obj/structure/flora/jungle/vines/light_3, @@ -14925,6 +15885,13 @@ /obj/effect/decal/remains/xeno, /turf/open/gm/grass/grass1, /area/lv624/ground/barrens/south_eastern_jungle_barrens) +"hyF" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "hyK" = ( /obj/effect/landmark/hunter_primary, /turf/open/gm/grass/grass1, @@ -14956,10 +15923,21 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, /turf/open/gm/dirt, /area/lv624/ground/caves/central_caves) +"hDe" = ( +/obj/structure/bed/stool, +/obj/item/prop/alien/hugger, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) "hDX" = ( /obj/effect/decal/remains/xeno, /turf/open/gm/dirt, /area/lv624/ground/colony/west_tcomms_road) +"hEe" = ( +/obj/effect/landmark/crap_item, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) "hEl" = ( /obj/structure/flora/jungle/vines/light_2, /turf/closed/wall/strata_ice/jungle, @@ -15011,6 +15989,20 @@ /obj/effect/landmark/objective_landmark/far, /turf/open/floor/vault, /area/lv624/lazarus/quartstorage) +"hJh" = ( +/obj/structure/coatrack{ + pixel_x = 11; + pixel_y = 14 + }, +/obj/item/clothing/head/soft/blue{ + pixel_x = 7; + pixel_y = 28 + }, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "hJn" = ( /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/grass/grass2, @@ -15024,6 +16016,10 @@ }, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/east_jungle) +"hKP" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "hLu" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/south_central_jungle) @@ -15061,6 +16057,22 @@ /obj/item/clothing/under/colonist, /turf/open/floor/vault, /area/lv624/lazarus/quartstorage) +"hNT" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"hOo" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/rods, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "hPV" = ( /obj/effect/decal/remains/xeno{ pixel_x = 31 @@ -15077,6 +16089,18 @@ icon_state = "vault" }, /area/lv624/lazarus/quartstorage) +"hRy" = ( +/turf/open/gm/dirt{ + icon_state = "desert3" + }, +/area/lv624/ground/caves/south_west_caves) +"hRB" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "hRI" = ( /obj/structure/flora/bush/ausbushes/reedbush, /turf/open/gm/grass/grass1, @@ -15102,6 +16126,10 @@ /obj/effect/landmark/monkey_spawn, /turf/open/gm/dirt, /area/lv624/ground/jungle/east_central_jungle) +"hTR" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "hUs" = ( /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/south_west_jungle) @@ -15133,11 +16161,12 @@ }, /area/lv624/lazarus/medbay) "hZn" = ( -/obj/structure/flora/grass/tallgrass/jungle/corner{ - dir = 8 +/obj/item/stack/sheet/metal{ + pixel_x = 6; + pixel_y = 30 }, -/turf/open/gm/grass/grass1, -/area/lv624/ground/jungle/east_jungle) +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "hZW" = ( /obj/effect/landmark/objective_landmark/close, /turf/open/floor{ @@ -15178,8 +16207,12 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"icd" = ( +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "idz" = ( -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ pixel_x = 6; pixel_y = 7 }, @@ -15206,10 +16239,24 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz1) +"ieN" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 2; + pixel_y = 7 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "ifk" = ( /obj/structure/flora/bush/ausbushes/var3/brflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_central_jungle) +"ifr" = ( +/obj/structure/flora/bush/ausbushes/pointybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "ifF" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, /area/lv624/ground/jungle/south_east_jungle) @@ -15220,11 +16267,41 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) +"igN" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) +"ihS" = ( +/obj/structure/surface/table, +/obj/item/reagent_container/food/drinks/cans/lemon_lime{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/structure/prop/server_equipment/laptop/on{ + pixel_y = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) "iiK" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /obj/effect/landmark/queen_spawn, /turf/open/gm/dirt, /area/lv624/ground/caves/east_caves) +"iiO" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) +"ikA" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/chanterelle, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "ilf" = ( /obj/structure/flora/jungle/vines/light_3, /obj/structure/flora/jungle/vines/heavy, @@ -15232,6 +16309,13 @@ /obj/structure/flora/jungle/planttop1, /turf/open/floor/plating, /area/lv624/lazarus/corporate_dome) +"ilF" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8 + }, +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "ilO" = ( /obj/structure/surface/table/woodentable/poor, /obj/item/device/flashlight/lantern{ @@ -15247,13 +16331,33 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/greengrid, /area/lv624/lazarus/secure_storage) +"ioC" = ( +/turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, +/area/lv624/ground/jungle/east_jungle) "isF" = ( /obj/effect/landmark/hunter_primary, /turf/open/gm/dirt, /area/lv624/ground/caves/south_west_caves) +"isJ" = ( +/obj/structure/surface/table, +/obj/item/storage/beer_pack{ + pixel_y = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) +"isL" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/obj/structure/flora/bush/ausbushes/palebush, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "isR" = ( -/obj/effect/landmark/objective_landmark/medium, -/obj/structure/largecrate/random, +/obj/structure/surface/table, +/obj/item/device/flashlight, +/obj/item/device/radio/off{ + frequency = 1469 + }, /turf/open/floor{ dir = 9; icon_state = "brown" @@ -15265,6 +16369,13 @@ icon_state = "asteroidwarning" }, /area/lv624/lazarus/landing_zones/lz2) +"iuf" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "iuO" = ( /turf/open/gm/dirtgrassborder{ icon_state = "desert3" @@ -15296,6 +16407,12 @@ icon_state = "multi_tiles" }, /area/lv624/ground/caves/sand_temple) +"iye" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "iyr" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, @@ -15336,11 +16453,8 @@ /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/west_central_jungle) "iBy" = ( -/obj/structure/flora/bush/ausbushes/lavendergrass, -/turf/open/floor/plating{ - icon_state = "platebotc" - }, -/area/lv624/ground/colony/telecomm/cargo) +/turf/open/gm/dirtgrassborder/east, +/area/lv624/ground/jungle/east_jungle) "iBD" = ( /turf/open/floor{ dir = 10; @@ -15351,6 +16465,11 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/colony/west_nexus_road) +"iDX" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_membrane, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "iFp" = ( /obj/structure/flora/jungle/vines/light_1, /obj/structure/barricade/wooden{ @@ -15361,14 +16480,26 @@ icon_state = "warning" }, /area/lv624/lazarus/landing_zones/lz1) +"iGf" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "iGn" = ( /obj/effect/landmark/hunter_primary, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"iGx" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "iHQ" = ( /obj/structure/xenoautopsy/tank/broken, /turf/open/gm/dirt, /area/lv624/lazarus/crashed_ship_containers) +"iIB" = ( +/turf/closed/wall/strata_ice/jungle, +/area/lv624/ground/caves/south_central_caves) "iIF" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/barrens/south_eastern_barrens) @@ -15388,9 +16519,6 @@ /area/lv624/ground/barrens/south_eastern_jungle_barrens) "iKp" = ( /obj/structure/surface/rack, -/obj/item/clothing/mask/gas/pmc/leader, -/obj/item/clothing/under/marine/veteran/pmc, -/obj/item/clothing/gloves/marine/veteran/pmc, /turf/open/shuttle{ icon_state = "floor4" }, @@ -15413,6 +16541,10 @@ /obj/structure/ore_box, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_west_barrens) +"iNJ" = ( +/obj/structure/flora/bush/ausbushes/var3/leafybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "iOz" = ( /obj/structure/barricade/handrail/strata{ dir = 4 @@ -15454,6 +16586,14 @@ /obj/structure/flora/bush/ausbushes/ppflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) +"iTQ" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "iUm" = ( /obj/structure/flora/bush/ausbushes/var3/fernybush, /turf/open/gm/grass/grass1, @@ -15480,10 +16620,27 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/colony/west_nexus_road) +"iXX" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/angel, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "iYJ" = ( /obj/structure/flora/bush/ausbushes/var3/fullgrass, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/west_tcomms_road) +"iYL" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + frequency = 1469; + name = "General Listening Channel"; + pixel_y = 26 + }, +/obj/item/prop/alien/hugger, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "iZG" = ( /obj/effect/landmark/crap_item, /turf/open/gm/dirt, @@ -15512,19 +16669,64 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_jungle) +"jcn" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "jdi" = ( /obj/structure/flora/jungle/vines/heavy, /obj/structure/flora/jungle/vines/light_3, /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"jdL" = ( +/obj/structure/foamed_metal, +/obj/structure/flora/jungle/vines/light_2, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/lv624/lazarus/engineering) +"jeL" = ( +/turf/closed/wall/r_wall, +/area/lv624/ground/caves/north_central_caves) +"jfN" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "jga" = ( /turf/open/gm/river, /area/lv624/ground/jungle/west_jungle) +"jgj" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) +"jgy" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "jgJ" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/colony/south_nexus_road) +"jhj" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "jhG" = ( /obj/structure/barricade/handrail/strata{ dir = 8 @@ -15548,6 +16750,12 @@ /obj/structure/machinery/colony_floodlight, /turf/open/gm/dirt, /area/lv624/ground/colony/north_tcomms_road) +"jlt" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "jnG" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; @@ -15571,6 +16779,21 @@ icon_state = "whitebluecorner" }, /area/lv624/lazarus/corporate_dome) +"jpX" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"jqr" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "jrC" = ( /obj/structure/curtain/red, /turf/open/shuttle{ @@ -15595,7 +16818,18 @@ /obj/structure/cargo_container/lockmart/mid, /turf/open/floor, /area/lv624/ground/barrens/containers) +"jvQ" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "jwW" = ( +/obj/structure/platform_decoration, +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, /turf/open/floor/plating{ dir = 6; icon_state = "warnplate" @@ -15670,6 +16904,23 @@ icon_state = "floor6" }, /area/lv624/ground/caves/sand_temple) +"jBl" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) +"jCO" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8; + pixel_y = 13 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) +"jDY" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno/limb, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "jEc" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, @@ -15690,6 +16941,12 @@ /obj/structure/flora/bush/ausbushes/var3/brflowers, /turf/open/gm/dirt, /area/lv624/ground/jungle/south_west_jungle/ceiling) +"jGU" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "jGW" = ( /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/central_jungle) @@ -15713,11 +16970,37 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) +"jIr" = ( +/obj/structure/largecrate, +/obj/structure/prop/mech/parts/gygax_armor{ + layer = 1 + }, +/turf/open/floor/plating{ + icon_state = "platebot" + }, +/area/lv624/lazarus/robotics) +"jJg" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) +"jKc" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "jKu" = ( /obj/structure/flora/bush/ausbushes/var3/fernybush, /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/jungle/west_central_jungle) +"jKX" = ( +/obj/structure/surface/table/reinforced/prison{ + color = "#6b675e" + }, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/sandstone/runed, +/area/lv624/ground/caves/sand_temple) "jLc" = ( /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/coast/beachcorner/north_east, @@ -15735,6 +17018,12 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/west_central_jungle) +"jLY" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "jMk" = ( /obj/structure/lattice{ layer = 2.9 @@ -15750,6 +17039,12 @@ icon_state = "warnplate" }, /area/lv624/lazarus/engineering) +"jMD" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "jMH" = ( /obj/structure/stairs/perspective{ color = "#6b675e"; @@ -15801,6 +17096,7 @@ /obj/item/stack/sheet/mineral/sandstone{ amount = 50 }, +/obj/effect/landmark/objective_landmark/far, /turf/open/gm/dirt, /area/lv624/ground/caves/sand_temple) "jRm" = ( @@ -15819,6 +17115,20 @@ icon_state = "white" }, /area/lv624/lazarus/corporate_dome) +"jRJ" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) +"jRL" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 2; + pixel_y = 7 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "jRM" = ( /obj/structure/flora/bush/ausbushes/var3/fullgrass, /obj/effect/landmark/lv624/fog_blocker, @@ -15881,6 +17191,27 @@ /obj/effect/landmark/monkey_spawn, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_jungle) +"jZX" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"kae" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) +"kbn" = ( +/obj/structure/machinery/sensortower, +/turf/open/floor{ + dir = 1; + icon_state = "bot" + }, +/area/lv624/ground/caves/north_central_caves) "kbr" = ( /obj/structure/showcase{ desc = "An ancient, dusty tomb with strange alien writing. It's best not to touch it."; @@ -15896,6 +17227,10 @@ /obj/effect/landmark/lv624/fog_blocker, /turf/closed/wall/rock/brown, /area/lv624/ground/river/west_river) +"kdj" = ( +/obj/structure/flora/bush/ausbushes/pointybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "keS" = ( /turf/open/floor/plating, /area/lv624/ground/barrens/east_barrens/ceiling) @@ -15918,6 +17253,22 @@ "kjC" = ( /turf/open/gm/coast/beachcorner/south_east, /area/lv624/ground/barrens/east_barrens) +"kjD" = ( +/obj/structure/flora/jungle/vines/light_3, +/turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, +/area/lv624/ground/jungle/east_jungle) +"klD" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) +"kmH" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "kmP" = ( /obj/item/stool, /turf/open/gm/dirt, @@ -15937,6 +17288,12 @@ /obj/structure/flora/bush/ausbushes/var3/sunnybush, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, /area/lv624/ground/barrens/south_eastern_jungle_barrens) +"kpx" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "kqx" = ( /obj/structure/flora/jungle/plantbot1, /obj/structure/flora/jungle/vines/light_3, @@ -15946,10 +17303,26 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/dirt, /area/lv624/ground/caves/sand_temple) +"krs" = ( +/turf/open/gm/dirt{ + icon_state = "desert2" + }, +/area/lv624/ground/caves/south_west_caves) +"ksc" = ( +/obj/structure/flora/bush/ausbushes/var3/sunnybush{ + icon_state = "fernybush_2"; + pixel_y = 10 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "ksB" = ( /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/caves/sand_temple) +"ksM" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/gm/dirtgrassborder/south, +/area/lv624/ground/jungle/south_central_jungle) "ksQ" = ( /obj/structure/surface/rack, /obj/item/storage/toolbox/mechanical{ @@ -15972,6 +17345,12 @@ }, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, /area/lv624/ground/barrens/south_eastern_barrens) +"ktr" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "kuP" = ( /obj/item/tool/hatchet{ pixel_x = 6; @@ -15989,6 +17368,11 @@ "kvo" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/jungle/east_central_jungle) +"kvv" = ( +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/comms) "kvE" = ( /obj/structure/machinery/landinglight/ds2/delaythree, /turf/open/floor/plating, @@ -16002,12 +17386,35 @@ /obj/effect/landmark/monkey_spawn, /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz2) +"kxv" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "kxI" = ( /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) "kyc" = ( /turf/open/gm/coast/beachcorner/north_east, /area/lv624/ground/river/central_river) +"kyt" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"kyz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) "kyN" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/grass/grass1, @@ -16029,6 +17436,19 @@ icon_state = "green" }, /area/lv624/lazarus/hydroponics) +"kzn" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) +"kzp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/foamed_metal, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) "kzu" = ( /obj/structure/flora/bush/ausbushes/grassybush, /turf/open/gm/grass/grass1, @@ -16037,6 +17457,10 @@ /obj/structure/flora/bush/ausbushes/var3/sunnybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"kzw" = ( +/obj/structure/flora/bush/ausbushes/var3/sunnybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "kzE" = ( /obj/structure/cargo_container/lockmart/right, /turf/open/floor, @@ -16068,6 +17492,14 @@ icon_state = "vault" }, /area/lv624/lazarus/quartstorage) +"kBq" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, +/area/lv624/ground/jungle/south_west_jungle) +"kCD" = ( +/obj/structure/flora/bush/ausbushes/var3/leafybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "kFx" = ( /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, @@ -16076,8 +17508,12 @@ /turf/open/gm/coast/beachcorner/north_east, /area/lv624/ground/barrens/west_barrens) "kGk" = ( -/turf/closed/wall/r_wall, -/area/lv624/ground/colony/telecomm/tcommdome/south) +/obj/item/storage/toolkit/empty{ + pixel_x = 5; + pixel_y = -3 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) "kHB" = ( /turf/open/gm/dirt{ icon_state = "desert3" @@ -16086,6 +17522,10 @@ "kHU" = ( /turf/open/gm/grass/grass1, /area/lv624/ground/caves/sand_temple) +"kIM" = ( +/obj/structure/flora/bush/ausbushes/reedbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "kJm" = ( /turf/open/gm/coast/beachcorner2/north_east, /area/lv624/ground/barrens/south_eastern_jungle_barrens) @@ -16097,11 +17537,45 @@ /obj/structure/flora/jungle/planttop1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"kKa" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) +"kKL" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) +"kLl" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "kLP" = ( /obj/structure/flora/jungle/plantbot1, /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"kML" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "kNm" = ( /obj/effect/landmark/hunter_primary, /turf/open/gm/grass/grass1, @@ -16137,7 +17611,7 @@ "kRr" = ( /obj/structure/surface/rack, /obj/item/storage/belt/shotgun/full, -/obj/item/weapon/gun/shotgun/double/with_stock, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb{ pixel_y = -6 }, @@ -16168,6 +17642,12 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/colony/north_tcomms_road) +"kVG" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_membrane, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "kVP" = ( /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, @@ -16183,12 +17663,22 @@ }, /turf/open/floor/plating, /area/lv624/lazarus/landing_zones/lz2) +"kWV" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "kWX" = ( +/obj/effect/landmark/objective_landmark/medium, +/obj/structure/largecrate/random, /turf/open/floor{ - dir = 8; - icon_state = "asteroidwarning" + dir = 9; + icon_state = "brown" }, -/area/lv624/ground/colony/telecomm/sw_lz2) +/area/lv624/lazarus/comms) +"kXE" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/gm/dirtgrassborder/north, +/area/lv624/ground/jungle/south_central_jungle) "kYx" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 9 @@ -16222,6 +17712,11 @@ icon_state = "whiteblue" }, /area/lv624/lazarus/corporate_dome) +"lav" = ( +/turf/open/gm/dirt{ + icon_state = "desert_dug" + }, +/area/lv624/ground/caves/west_caves) "laY" = ( /obj/structure/flora/jungle/vines/light_1, /turf/closed/wall/strata_ice/jungle, @@ -16229,12 +17724,23 @@ "lbd" = ( /turf/open/gm/coast/beachcorner/north_west, /area/lv624/ground/barrens/west_barrens) +"lbt" = ( +/obj/effect/landmark/hunter_primary, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "lbX" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 10 }, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/east_jungle) +"ldi" = ( +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "ldB" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 4 @@ -16252,6 +17758,24 @@ /obj/structure/flora/bush/ausbushes/genericbush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"lhE" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) +"lhH" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"liI" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "lju" = ( /turf/open/gm/coast/beachcorner2/south_east, /area/lv624/ground/river/central_river) @@ -16263,6 +17787,11 @@ /obj/structure/inflatable/popped/door, /turf/open/gm/dirt, /area/lv624/lazarus/crashed_ship_containers) +"lkq" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "lkF" = ( /obj/item/stack/sheet/wood{ amount = 2 @@ -16274,6 +17803,10 @@ icon_state = "warning" }, /area/lv624/lazarus/landing_zones/lz1) +"lnr" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "lnK" = ( /obj/structure/flora/bush/ausbushes/genericbush, /obj/effect/landmark/nightmare{ @@ -16289,6 +17822,16 @@ /obj/effect/landmark/hunter_primary, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, /area/lv624/ground/jungle/south_east_jungle) +"loP" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/obj/structure/flora/bush/ausbushes/genericbush, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "lpV" = ( /turf/open/floor/plating{ icon_state = "platebotc" @@ -16326,10 +17869,12 @@ /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) "lud" = ( -/obj/structure/fence, -/obj/structure/flora/bush/ausbushes/lavendergrass, -/turf/open/gm/dirtgrassborder/west, -/area/lv624/ground/colony/north_tcomms_road) +/obj/structure/foamed_metal, +/obj/structure/flora/jungle/vines/heavy, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/lv624/lazarus/engineering) "lxr" = ( /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/dirtgrassborder/south, @@ -16352,15 +17897,44 @@ "lyS" = ( /turf/closed/wall/r_wall/unmeltable, /area/lv624/lazarus/quartstorage) +"lyZ" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) +"lzf" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "lzE" = ( /turf/open/gm/dirt{ icon_state = "desert0" }, /area/lv624/ground/barrens/west_barrens) +"lzW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) "lAX" = ( /obj/structure/flora/bush/ausbushes/reedbush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"lBl" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "lBq" = ( /obj/structure/barricade/handrail/strata, /obj/structure/barricade/handrail/strata{ @@ -16381,6 +17955,11 @@ "lBw" = ( /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/south_east_jungle) +"lCG" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/cleanable/blood/gibs/robot/down, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "lDh" = ( /obj/item/clothing/suit/armor/yautja_flavor, /turf/open/floor/strata{ @@ -16438,6 +18017,13 @@ icon_state = "dark" }, /area/lv624/lazarus/quartstorage) +"lIL" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "lIU" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, /area/lv624/ground/jungle/south_central_jungle) @@ -16477,6 +18063,16 @@ icon_state = "warning" }, /area/lv624/lazarus/landing_zones/lz2) +"lKl" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 6; + pixel_y = -8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "lKF" = ( /turf/closed/wall/rock/brown, /area/lv624/ground/barrens/containers) @@ -16484,12 +18080,23 @@ /obj/structure/shuttle/engine/propulsion, /turf/open/gm/dirt, /area/lv624/ground/barrens/north_east_barrens) +"lLK" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "lLO" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 10 }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_jungle) +"lLU" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/obj/structure/flora/bush/ausbushes/genericbush, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "lNe" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor{ @@ -16497,6 +18104,16 @@ icon_state = "whitebluecorner" }, /area/lv624/lazarus/corporate_dome) +"lNG" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 2; + pixel_y = 7 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "lPJ" = ( /turf/open/gm/dirtgrassborder{ icon_state = "desert" @@ -16505,6 +18122,11 @@ "lQC" = ( /turf/open/gm/dirt, /area/lv624/ground/barrens/east_barrens) +"lQP" = ( +/obj/structure/window_frame/colony, +/obj/item/shard, +/turf/open/floor/plating, +/area/lv624/lazarus/comms) "lRd" = ( /obj/item/stack/sheet/wood{ amount = 2 @@ -16534,6 +18156,23 @@ icon_state = "whiteblue" }, /area/lv624/lazarus/corporate_dome) +"lSA" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) +"lSN" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) +"lTv" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "lTZ" = ( /obj/item/tool/shovel, /turf/open/gm/dirt, @@ -16555,6 +18194,25 @@ /obj/structure/prop/brazier/torch, /turf/closed/wall/rock/brown, /area/lv624/ground/caves/sand_temple) +"lUQ" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/structure/blocker/forcefield/multitile_vehicles, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"lWh" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"lWl" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "lWw" = ( /obj/structure/stairs/perspective{ color = "#b29082"; @@ -16567,6 +18225,12 @@ "lWO" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/lv624/ground/jungle/south_west_jungle) +"lYt" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "lYB" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, @@ -16610,6 +18274,20 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"mbN" = ( +/obj/structure/flora/jungle/vines/heavy, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) +"mca" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 2; + pixel_y = 7 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "mdQ" = ( /turf/closed/wall/rock/brown, /area/lv624/ground/caves/west_caves) @@ -16617,6 +18295,16 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"mfn" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 2; + pixel_y = -2 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "mfu" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 8 @@ -16631,6 +18319,12 @@ /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) +"mgi" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "mgs" = ( /obj/structure/machinery/door/poddoor/almayer{ dir = 8; @@ -16672,6 +18366,9 @@ icon_state = "grass1" }, /area/lv624/ground/barrens/south_eastern_barrens) +"mkn" = ( +/turf/open/floor/plating, +/area/lv624/lazarus/secure_storage) "mko" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/north, @@ -16690,7 +18387,9 @@ "mkU" = ( /obj/structure/foamed_metal, /obj/structure/flora/jungle/vines/light_2, -/turf/open/floor/plating, +/turf/open/floor{ + icon_state = "delivery" + }, /area/lv624/lazarus/engineering) "mkW" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ @@ -16698,10 +18397,22 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"mkZ" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/obj/structure/foamed_metal, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) "mmu" = ( /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/west_tcomms_road) +"mnr" = ( +/turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, +/area/lv624/ground/jungle/east_jungle) "mnK" = ( /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/grass/grass1, @@ -16739,6 +18450,11 @@ /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/dirt, /area/lv624/ground/river/east_river) +"mrg" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "mrQ" = ( /obj/structure/bed/chair/comfy/black{ dir = 4 @@ -16776,8 +18492,9 @@ /area/lv624/ground/jungle/north_east_jungle) "mvc" = ( /obj/effect/landmark/static_comms/net_two, -/turf/open/floor/plating{ - icon_state = "platebotc" +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, /area/lv624/ground/colony/telecomm/cargo) "mvr" = ( @@ -16808,6 +18525,15 @@ /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"mBH" = ( +/obj/structure/foamed_metal{ + layer = 3.1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) "mBL" = ( /turf/open/floor{ dir = 1; @@ -16830,6 +18556,12 @@ icon_state = "whiteblue" }, /area/lv624/lazarus/corporate_dome) +"mEo" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "mEw" = ( /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/dirtgrassborder/south, @@ -16838,10 +18570,22 @@ /obj/effect/landmark/crap_item, /turf/open/gm/dirt, /area/lv624/ground/colony/north_nexus_road) +"mFZ" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "mGG" = ( /obj/structure/window_frame/colony/reinforced, /turf/open/floor/plating, /area/lv624/lazarus/corporate_dome) +"mHk" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "mHM" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/colony/south_medbay_road) @@ -16856,6 +18600,10 @@ icon_state = "whiteyellowcorner" }, /area/lv624/lazarus/corporate_dome) +"mJF" = ( +/obj/structure/flora/bush/ausbushes/palebush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "mKf" = ( /turf/open/gm/dirt, /area/lv624/ground/colony/west_nexus_road) @@ -16865,6 +18613,10 @@ }, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) +"mLv" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "mMq" = ( /obj/structure/flora/jungle/planttop1, /turf/open/gm/grass/grass1, @@ -16884,6 +18636,12 @@ icon_state = "vault" }, /area/lv624/lazarus/quartstorage) +"mNl" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "mNz" = ( /obj/structure/flora/bush/ausbushes/var3/fernybush, /turf/open/gm/grass/grass1, @@ -16900,6 +18658,10 @@ /obj/structure/flora/bush/ausbushes/ausbush, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_jungle_barrens) +"mOL" = ( +/obj/structure/flora/bush/ausbushes/var3/leafybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "mPt" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/barrens/south_eastern_jungle_barrens) @@ -16976,6 +18738,10 @@ icon_state = "whiteblue" }, /area/lv624/lazarus/corporate_dome) +"mVr" = ( +/obj/structure/flora/bush/ausbushes/palebush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "mVK" = ( /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, @@ -16986,6 +18752,10 @@ "mWe" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, /area/lv624/ground/jungle/south_west_jungle) +"mWA" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "mXR" = ( /turf/open/gm/dirtgrassborder/west, /area/lv624/ground/colony/north_nexus_road) @@ -17016,10 +18786,22 @@ icon_state = "asteroidwarning" }, /area/lv624/lazarus/landing_zones/lz2) +"ndk" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "ndK" = ( /obj/structure/flora/jungle/vines/light_1, /turf/closed/wall/r_wall, /area/lv624/lazarus/corporate_dome) +"ner" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "nfD" = ( /obj/effect/landmark/survivor_spawner, /turf/open/gm/dirt, @@ -17034,6 +18816,14 @@ }, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_barrens) +"nha" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "nhi" = ( /obj/structure/flora/bush/ausbushes/genericbush, /turf/open/gm/grass/grass1, @@ -17048,10 +18838,20 @@ icon_state = "asteroidwarning" }, /area/lv624/lazarus/landing_zones/lz2) +"njl" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "njC" = ( /obj/effect/landmark/crap_item, /turf/open/gm/dirt, /area/lv624/ground/colony/west_tcomms_road) +"njO" = ( +/turf/open/floor{ + dir = 5; + icon_state = "asteroidwarning" + }, +/area/lv624/ground/colony/telecomm/cargo) "nkg" = ( /obj/structure/prop/brazier/torch, /turf/closed/wall/mineral/sandstone/runed, @@ -17112,6 +18912,17 @@ icon_state = "desert3" }, /area/lv624/ground/barrens/west_barrens) +"nrK" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "nrP" = ( /obj/structure/transmitter/colony_net{ phone_category = "Lazarus Landing"; @@ -17120,6 +18931,15 @@ }, /turf/open/floor/vault, /area/lv624/lazarus/quartstorage) +"nrR" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = -10 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "nsk" = ( /turf/open/gm/dirt, /area/lv624/ground/river/west_river) @@ -17143,6 +18963,9 @@ icon_state = "whiteyellowfull" }, /area/lv624/ground/barrens/south_eastern_barrens) +"ntr" = ( +/turf/closed/wall/strata_ice/jungle, +/area/lv624/ground/barrens/north_east_barrens) "ntL" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/south, @@ -17192,6 +19015,13 @@ /turf/open/gm/dirt, /area/lv624/lazarus/landing_zones/lz2) "nwR" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, /turf/open/floor/plating{ dir = 10; icon_state = "warnplate" @@ -17214,6 +19044,12 @@ icon_state = "whiteyellowcorner" }, /area/lv624/lazarus/corporate_dome) +"nys" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "nzw" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, @@ -17272,10 +19108,9 @@ /turf/open/gm/dirt, /area/lv624/ground/caves/sand_temple) "nED" = ( -/obj/item/attachable/bayonet{ +/obj/item/weapon/unathiknife{ desc = "A curved blade made of a strange material. It looks both old and very sharp."; force = 30; - icon_state = "unathiknife"; name = "\improper alien blade"; throwforce = 26 }, @@ -17371,6 +19206,12 @@ /obj/structure/flora/grass/tallgrass/jungle, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"nLF" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "nLH" = ( /obj/structure/prop/tower, /turf/open/floor{ @@ -17392,6 +19233,16 @@ /obj/structure/flora/jungle/vines/heavy, /turf/closed/wall/r_wall, /area/lv624/lazarus/corporate_dome) +"nNu" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 6; + pixel_y = -8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) "nNw" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, @@ -17423,6 +19274,16 @@ icon_state = "squareswood" }, /area/lv624/ground/caves/sand_temple) +"nQH" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 6; + pixel_y = -8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "nRb" = ( /obj/structure/stairs/perspective{ color = "#b29082"; @@ -17434,6 +19295,13 @@ icon_state = "whiteyellowfull" }, /area/lv624/ground/caves/sand_temple) +"nRA" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8; + pixel_y = 13 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "nSg" = ( /obj/structure/window/framed/colony, /turf/open/floor{ @@ -17483,6 +19351,10 @@ icon_state = "white" }, /area/lv624/lazarus/corporate_dome) +"nUZ" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "nVC" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 6 @@ -17546,6 +19418,11 @@ /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/grass/grass2, /area/lv624/ground/barrens/south_eastern_jungle_barrens) +"oas" = ( +/turf/open/floor{ + icon_state = "delivery" + }, +/area/lv624/lazarus/engineering) "oaL" = ( /obj/structure/flora/bush/ausbushes/ausbush, /turf/open/gm/grass/grass1, @@ -17613,14 +19490,26 @@ icon_state = "squareswood" }, /area/lv624/ground/caves/sand_temple) +"ofg" = ( +/turf/open/gm/dirt{ + icon_state = "desert1" + }, +/area/lv624/ground/caves/west_caves) "ofv" = ( /obj/effect/landmark/crap_item, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/south_medbay_road) +"ogJ" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "ogM" = ( /turf/open/gm/dirt, /area/lv624/ground/river/east_river) "ogR" = ( +/obj/item/prop/alien/hugger, /turf/open/floor/plating{ dir = 9; icon_state = "warnplate" @@ -17630,6 +19519,21 @@ /obj/structure/flora/bush/ausbushes/var3/stalkybush, /turf/open/gm/dirt, /area/lv624/ground/river/central_river) +"oha" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"ohf" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8; + pixel_y = 13 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "ohE" = ( /obj/structure/surface/table/woodentable/poor, /obj/item/reagent_container/food/snacks/tomatomeat, @@ -17646,9 +19550,30 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating, /area/lv624/ground/barrens/central_barrens) +"oiR" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) +"omu" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/west_jungle) "omK" = ( /turf/open/gm/coast/beachcorner/south_east, /area/lv624/ground/barrens/west_barrens) +"onP" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"onU" = ( +/turf/closed/wall/strata_ice/jungle, +/area/lv624/ground/caves/west_caves) "oov" = ( /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/dirt, @@ -17676,6 +19601,26 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"orB" = ( +/turf/open/floor{ + dir = 4; + icon_state = "asteroidwarning" + }, +/area/lv624/ground/colony/telecomm/cargo) +"osf" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 11; + pixel_y = -2 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"otl" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "oua" = ( /obj/effect/landmark/crap_item, /turf/open/gm/dirt, @@ -17695,9 +19640,21 @@ /obj/item/stack/sheet/wood, /turf/open/gm/dirt, /area/lv624/lazarus/crashed_ship_containers) +"owe" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "owQ" = ( /turf/open/gm/coast/east, /area/lv624/ground/barrens/east_barrens) +"owZ" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "oxY" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 6 @@ -17731,7 +19688,6 @@ /area/lv624/ground/caves/sand_temple) "oyT" = ( /obj/structure/closet/toolcloset, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/plating{ dir = 1; icon_state = "asteroidfloor" @@ -17760,12 +19716,28 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"oDE" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "oDY" = ( /obj/structure/platform_decoration/mineral/sandstone/runed{ dir = 4 }, /turf/open/gm/coast/north, /area/lv624/ground/caves/sand_temple) +"oEc" = ( +/obj/item/ammo_casing/bullet{ + icon_state = "cartridge_6_1" + }, +/obj/item/ammo_casing/bullet{ + icon_state = "cartridge_3_1" + }, +/obj/item/ammo_casing/bullet{ + icon_state = "cartridge_10_1" + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "oED" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, @@ -17788,6 +19760,14 @@ "oFf" = ( /turf/open/gm/grass/grass1, /area/lv624/ground/river/east_river) +"oFJ" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "oFO" = ( /obj/structure/platform_decoration/mineral/sandstone/runed{ dir = 1 @@ -17821,6 +19801,22 @@ /obj/structure/flora/bush/ausbushes/pointybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"oHU" = ( +/obj/structure/girder, +/turf/open/floor{ + icon_state = "asteroidplating" + }, +/area/lv624/ground/caves/north_central_caves) +"oIO" = ( +/obj/structure/surface/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/device/radio/off{ + frequency = 1469 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/comms) "oJL" = ( /obj/effect/landmark/crap_item, /turf/open/gm/grass/grass1, @@ -17885,9 +19881,22 @@ icon_state = "loadingarea" }, /area/lv624/lazarus/landing_zones/lz1) +"oQm" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "oRH" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/north_east_jungle) +"oRY" = ( +/obj/structure/surface/rack, +/obj/item/clothing/mask/gas, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "oSh" = ( /obj/item/stack/sheet/wood{ amount = 2 @@ -17964,8 +19973,8 @@ /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/jungle/south_west_jungle) "oXI" = ( -/turf/open/gm/grass/grass2, -/area/lv624/ground/jungle/north_west_jungle) +/turf/closed/wall/r_wall/unmeltable, +/area/lv624/lazarus/landing_zones/lz2) "oXS" = ( /turf/open/gm/coast/west, /area/lv624/ground/river/central_river) @@ -17993,6 +20002,18 @@ /obj/structure/window/framed/colony/reinforced, /turf/open/floor/plating, /area/lv624/lazarus/corporate_dome) +"paQ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/fancy/cigarettes/wypacket{ + pixel_x = 5; + pixel_y = 6 + }, +/obj/item/clothing/under/liaison_suit/blue, +/turf/open/floor{ + dir = 6; + icon_state = "whiteyellow" + }, +/area/lv624/lazarus/corporate_dome) "pba" = ( /obj/structure/flora/bush/ausbushes/var3/sparsegrass, /turf/open/gm/grass/grass1, @@ -18005,6 +20026,13 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/colony/south_nexus_road) +"pbG" = ( +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "squareswood" + }, +/area/lv624/ground/caves/sand_temple) "pca" = ( /obj/effect/landmark/nightmare{ insert_tag = "nexuscenter" @@ -18022,7 +20050,7 @@ /area/lv624/ground/barrens/east_barrens) "pcu" = ( /obj/structure/flora/bush/ausbushes/genericbush, -/turf/open/gm/grass/grass1, +/turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, /area/lv624/ground/jungle/east_jungle) "pcz" = ( /obj/effect/landmark/objective_landmark/medium, @@ -18047,6 +20075,10 @@ }, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, /area/lv624/ground/barrens/south_eastern_barrens) +"pgc" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) "pgf" = ( /obj/structure/machinery/power/apc{ dir = 1; @@ -18080,6 +20112,15 @@ /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) +"pkU" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "plf" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, @@ -18090,6 +20131,10 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/west_tcomms_road) +"pmt" = ( +/obj/effect/landmark/objective_landmark/science, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "pmz" = ( /turf/open/gm/dirt{ icon_state = "desert2" @@ -18114,6 +20159,13 @@ icon_state = "white" }, /area/lv624/lazarus/corporate_dome) +"poX" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "ppR" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, /area/lv624/ground/colony/north_nexus_road) @@ -18123,6 +20175,10 @@ }, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/jungle/east_central_jungle) +"pqa" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "prd" = ( /obj/structure/flora/jungle/vines/light_2, /turf/open/floor{ @@ -18157,6 +20213,11 @@ icon_state = "floor4" }, /area/lv624/lazarus/crashed_ship_containers) +"ptm" = ( +/turf/open/gm/dirt{ + icon_state = "desert0" + }, +/area/lv624/ground/caves/west_caves) "ptr" = ( /obj/structure/flora/bush/ausbushes/palebush, /turf/open/gm/grass/grass1, @@ -18206,10 +20267,24 @@ icon_state = "white" }, /area/lv624/lazarus/medbay) +"pzP" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/comms) +"pAE" = ( +/obj/structure/flora/bush/ausbushes/var3/leafybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "pBk" = ( /obj/structure/flora/bush/ausbushes/ppflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"pBH" = ( +/obj/structure/flora/jungle/plantbot1, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "pDh" = ( /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" @@ -18248,6 +20323,12 @@ /obj/effect/landmark/hunter_primary, /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz1) +"pET" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "pEV" = ( /turf/open/floor/strata{ color = "#5e5d5d"; @@ -18257,10 +20338,24 @@ "pFe" = ( /turf/open/gm/dirtgrassborder/west, /area/lv624/ground/jungle/south_east_jungle) +"pFB" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "pGD" = ( /obj/structure/flora/bush/ausbushes/var3/fernybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"pGL" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "pHn" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/gm/dirt, @@ -18276,6 +20371,12 @@ icon_state = "whiteblue" }, /area/lv624/lazarus/corporate_dome) +"pIl" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "pIy" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/north, @@ -18284,6 +20385,10 @@ /obj/structure/platform_decoration/mineral/sandstone/runed, /turf/open/floor/sandstone/runed, /area/lv624/ground/barrens/south_eastern_barrens) +"pIB" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "pIC" = ( /obj/effect/landmark/hunter_secondary, /turf/open/gm/grass/grass1, @@ -18296,6 +20401,12 @@ /obj/effect/landmark/hunter_secondary, /turf/open/gm/grass/grass1, /area/lv624/lazarus/quartstorage/outdoors) +"pKm" = ( +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/lv624/ground/colony/telecomm/sw_lz2) "pKp" = ( /obj/effect/landmark/crap_item, /turf/open/floor{ @@ -18311,6 +20422,19 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/colony/west_nexus_road) +"pLv" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 4 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) +"pMM" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/gm/dirtgrassborder/east, +/area/lv624/ground/jungle/east_jungle) "pMV" = ( /obj/effect/landmark/hunter_primary, /turf/open/gm/dirt, @@ -18347,12 +20471,16 @@ "pQn" = ( /obj/structure/machinery/door/airlock/almayer/generic{ locked = 1; - name = "\improper Corporate Liason" + name = "\improper Corporate Liaison" }, /turf/open/floor{ icon_state = "white" }, /area/lv624/lazarus/corporate_dome) +"pQV" = ( +/obj/structure/flora/bush/ausbushes/palebush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "pRe" = ( /obj/item/storage/firstaid/adv/empty, /obj/structure/machinery/door_control{ @@ -18399,9 +20527,21 @@ }, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_barrens) +"pRD" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "pRT" = ( /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/caves/sand_temple) +"pSe" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "pSt" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, @@ -18416,6 +20556,15 @@ "pUm" = ( /turf/closed/wall/rock/brown, /area/lv624/ground/caves/east_caves) +"pVZ" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = -10 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "pXI" = ( /obj/structure/flora/grass/tallgrass/jungle, /turf/open/gm/grass/grass1, @@ -18442,6 +20591,18 @@ /obj/item/clothing/mask/gas, /turf/open/floor/vault, /area/lv624/lazarus/quartstorage) +"qap" = ( +/obj/structure/machinery/light, +/obj/structure/stairs/perspective{ + dir = 9; + icon_state = "p_stair_full" + }, +/obj/structure/platform, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "qaE" = ( /obj/effect/landmark/hunter_primary, /obj/effect/landmark/queen_spawn, @@ -18456,6 +20617,12 @@ /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_jungle) +"qdx" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "qdQ" = ( /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, @@ -18469,6 +20636,13 @@ icon_state = "white" }, /area/lv624/lazarus/corporate_dome) +"qez" = ( +/obj/effect/landmark/good_item, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/comms) "qeW" = ( /turf/open/gm/coast/beachcorner2/north_west, /area/lv624/ground/caves/sand_temple) @@ -18488,9 +20662,40 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/floor, /area/lv624/lazarus/landing_zones/lz2) +"qfK" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "qgA" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/lv624/ground/jungle/south_east_jungle) +"qhl" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) +"qit" = ( +/obj/item/prop/alien/hugger{ + pixel_x = -20; + pixel_y = 8 + }, +/obj/item/tool/hatchet{ + pixel_x = -14; + pixel_y = 6 + }, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) +"qiL" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/amanita, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "qjf" = ( /turf/open/floor, /area/lv624/ground/barrens/containers) @@ -18498,6 +20703,10 @@ /obj/structure/flora/bush/ausbushes/var3/fernybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"qns" = ( +/obj/structure/machinery/colony_floodlight, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) "qnQ" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/grass/grass2, @@ -18516,6 +20725,14 @@ "qqJ" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/caves/sand_temple) +"qrH" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "qsM" = ( /obj/structure/platform/mineral/sandstone/runed{ dir = 1 @@ -18525,6 +20742,14 @@ "qtj" = ( /turf/open/gm/dirt, /area/lv624/ground/jungle/south_central_jungle) +"qtK" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "qtS" = ( /obj/structure/flora/bush/ausbushes/reedbush, /turf/open/gm/grass/grass1, @@ -18675,7 +20900,9 @@ "qGR" = ( /obj/structure/foamed_metal, /obj/structure/flora/jungle/vines/heavy, -/turf/open/floor/plating, +/turf/open/floor{ + icon_state = "delivery" + }, /area/lv624/lazarus/engineering) "qHC" = ( /obj/structure/largecrate/random/barrel/red, @@ -18688,6 +20915,10 @@ "qIO" = ( /turf/open/gm/dirt, /area/lv624/ground/colony/west_tcomms_road) +"qJe" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "qJg" = ( /obj/structure/surface/table, /obj/effect/landmark/objective_landmark/science, @@ -18705,11 +20936,16 @@ /obj/structure/flora/bush/ausbushes/var3/leafybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_jungle) +"qJE" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "qKl" = ( /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/colony/north_nexus_road) "qKC" = ( -/obj/structure/flora/jungle/vines/heavy, /turf/open/floor{ dir = 9; icon_state = "asteroidwarning" @@ -18723,6 +20959,24 @@ /obj/structure/flora/jungle/alienplant1, /turf/open/gm/river, /area/lv624/ground/jungle/west_jungle) +"qNl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) +"qNz" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "qNQ" = ( /obj/structure/machinery/landinglight/ds2/delayone{ dir = 4 @@ -18748,6 +21002,14 @@ icon_state = "whiteyellowfull" }, /area/lv624/ground/caves/sand_temple) +"qPY" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "qRj" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/gm/dirt, @@ -18758,6 +21020,16 @@ }, /turf/open/gm/dirt, /area/lv624/lazarus/crashed_ship_containers) +"qSG" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"qSS" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "qSZ" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 10 @@ -18780,9 +21052,32 @@ "qUM" = ( /turf/open/gm/dirtgrassborder/north, /area/lv624/ground/jungle/west_central_jungle) +"qVh" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) +"qVi" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = -10; + pixel_y = -2 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) +"qVN" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "qWf" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/colony/west_nexus_road) +"qWI" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "qXo" = ( /obj/structure/surface/rack, /obj/item/explosive/grenade/incendiary/molotov, @@ -18791,6 +21086,12 @@ icon_state = "vault" }, /area/lv624/lazarus/quartstorage) +"qXt" = ( +/obj/item/stack/rods, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/comms) "qYF" = ( /obj/structure/flora/bush/ausbushes/var3/sunnybush, /turf/open/gm/dirt, @@ -18799,6 +21100,10 @@ /obj/structure/flora/bush/ausbushes/var3/sparsegrass, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/south_west_jungle) +"qYS" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "qZv" = ( /obj/structure/flora/grass/tallgrass/jungle, /turf/open/gm/grass/grass1, @@ -18821,12 +21126,26 @@ icon_state = "desert1" }, /area/lv624/ground/barrens/west_barrens) +"rbs" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"rby" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "rck" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 5 }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"rcy" = ( +/obj/structure/flora/jungle/vines/heavy, +/turf/open/gm/dirtgrassborder/west, +/area/lv624/ground/jungle/east_jungle) "rcR" = ( /obj/effect/landmark/hunter_primary, /turf/open/gm/dirt, @@ -18873,10 +21192,26 @@ /obj/structure/flora/jungle/vines/heavy, /turf/closed/wall/r_wall, /area/lv624/lazarus/corporate_dome) +"rgj" = ( +/obj/effect/decal/remains/xeno, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "rgQ" = ( /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"rhi" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 4 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "rit" = ( /turf/open/gm/coast/south, /area/lv624/ground/river/central_river) @@ -18887,20 +21222,55 @@ icon_state = "green" }, /area/lv624/lazarus/hydroponics) +"rkZ" = ( +/obj/item/shard, +/obj/item/stack/rods, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "rmg" = ( -/obj/structure/machinery/power/monitor, -/obj/structure/foamed_metal, /obj/structure/machinery/light{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/foamed_metal, /turf/open/floor{ icon_state = "dark" }, /area/lv624/lazarus/engineering) +"rmt" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 4 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"rmW" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 11; + pixel_y = -2 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "rox" = ( /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"roQ" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"rpx" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "rpR" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/floor{ @@ -18956,6 +21326,9 @@ /obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, /obj/effect/landmark/corpsespawner/wygoon, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/east_caves) "rwB" = ( @@ -18969,6 +21342,11 @@ icon_state = "desert_dug" }, /area/lv624/ground/barrens/south_eastern_barrens) +"ryp" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "ryJ" = ( /obj/structure/surface/table, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, @@ -18983,6 +21361,12 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"rze" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "rzT" = ( /obj/structure/flora/jungle/vines/light_3, /obj/item/stack/sheet/wood{ @@ -19005,6 +21389,16 @@ icon_state = "asteroidfloor" }, /area/lv624/lazarus/corporate_dome) +"rAU" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 6; + pixel_y = -8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "rBF" = ( /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/grass/grass1, @@ -19023,6 +21417,13 @@ "rCV" = ( /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/south_central_jungle) +"rER" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/obj/structure/flora/bush/ausbushes/reedbush, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "rGd" = ( /obj/structure/girder/displaced, /obj/structure/shuttle/engine/propulsion, @@ -19041,10 +21442,20 @@ }, /turf/open/floor/vault, /area/lv624/lazarus/quartstorage) +"rGE" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 6; + pixel_y = -8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "rGW" = ( -/obj/structure/flora/bush/ausbushes/genericbush, -/turf/open/gm/grass/grass2, -/area/lv624/ground/jungle/north_west_jungle) +/obj/structure/flora/jungle/vines/light_3, +/turf/open/gm/dirtgrassborder/south, +/area/lv624/ground/jungle/east_jungle) "rGZ" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/gm/dirt, @@ -19054,11 +21465,34 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"rHV" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"rIc" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"rIm" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "rIq" = ( /obj/structure/flora/jungle/vines/light_1, /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_central_jungle) +"rID" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "rJd" = ( /obj/structure/bed/alien{ color = "#aba9a9" @@ -19139,6 +21573,9 @@ icon_state = "green" }, /area/lv624/lazarus/hydroponics) +"rSy" = ( +/turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, +/area/lv624/ground/jungle/east_jungle) "rTG" = ( /obj/structure/machinery/colony_floodlight, /obj/structure/flora/jungle/vines/light_3, @@ -19148,6 +21585,13 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/colony/north_tcomms_road) +"rTT" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"rUX" = ( +/obj/structure/flora/bush/ausbushes/genericbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "rVH" = ( /obj/structure/transmitter/colony_net{ phone_category = "Lazarus Landing"; @@ -19160,6 +21604,12 @@ icon_state = "brown" }, /area/lv624/lazarus/comms) +"rWs" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "rWW" = ( /obj/structure/flora/bush/ausbushes/grassybush, /turf/open/gm/river, @@ -19169,12 +21619,21 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_central_jungle) +"rYe" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "rYA" = ( /obj/structure/platform/mineral/sandstone/runed{ dir = 1 }, /turf/open/gm/dirt, /area/lv624/ground/caves/sand_temple) +"rYI" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/river, +/area/lv624/ground/caves/west_caves) "rZL" = ( /obj/structure/surface/rack, /obj/item/ammo_magazine/rifle/mar40, @@ -19197,6 +21656,12 @@ icon_state = "white" }, /area/lv624/lazarus/corporate_dome) +"scs" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "sdh" = ( /obj/structure/barricade/sandbags/wired, /turf/open/floor/wood, @@ -19217,6 +21682,9 @@ icon_state = "vault" }, /area/lv624/lazarus/quartstorage) +"sfg" = ( +/turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, +/area/lv624/ground/jungle/south_central_jungle) "sfH" = ( /obj/structure/inflatable, /turf/open/gm/dirt, @@ -19230,6 +21698,16 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, /area/lv624/ground/colony/north_nexus_road) +"sgU" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) +"shb" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "shq" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 10 @@ -19260,6 +21738,15 @@ }, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) +"snc" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 4 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "sne" = ( /obj/item/ammo_casing/bullet{ icon_state = "cartridge_10_1" @@ -19281,13 +21768,36 @@ icon_state = "cult" }, /area/lv624/lazarus/armory) +"soz" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) +"soY" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "spm" = ( /obj/structure/flora/jungle/alienplant1, /turf/open/gm/river, /area/lv624/ground/barrens/east_barrens) +"spK" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "sqj" = ( /turf/open/gm/river, /area/lv624/ground/river/central_river) +"sqs" = ( +/obj/item/stack/sheet/metal{ + pixel_x = -7; + pixel_y = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "sqw" = ( /obj/structure/machinery/colony_floodlight, /obj/structure/flora/jungle/vines/heavy, @@ -19307,6 +21817,12 @@ icon_state = "whiteyellowfull" }, /area/lv624/ground/caves/sand_temple) +"srn" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "ssc" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, /area/lv624/ground/jungle/east_central_jungle) @@ -19314,6 +21830,11 @@ /obj/structure/flora/jungle/vines/light_3, /turf/closed/wall/mineral/sandstone/runed, /area/lv624/ground/caves/sand_temple) +"stt" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "suv" = ( /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass2, @@ -19322,6 +21843,15 @@ /obj/structure/flora/bush/ausbushes/grassybush, /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz2) +"svv" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) "swR" = ( /obj/structure/flora/jungle/vines/light_3, /obj/structure/flora/jungle/vines/heavy, @@ -19331,13 +21861,24 @@ /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_jungle) +"sxl" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "sxn" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/barrens/south_eastern_barrens) +"sxo" = ( +/obj/structure/flora/bush/ausbushes/var3/leafybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "sxY" = ( /obj/structure/surface/rack, /obj/item/moneybag, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor/greengrid, /area/lv624/lazarus/corporate_dome) "syc" = ( @@ -19352,6 +21893,16 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/north, /area/lv624/ground/colony/south_medbay_road) +"sAh" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) +"sAI" = ( +/obj/structure/flora/jungle/planttop1, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "sBg" = ( /obj/structure/machinery/vending/cigarette, /obj/structure/machinery/light{ @@ -19370,6 +21921,9 @@ /obj/structure/flora/bush/ausbushes/var3/leafybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"sBY" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "sCg" = ( /obj/structure/stairs/perspective{ color = "#b29082"; @@ -19399,10 +21953,23 @@ /obj/structure/flora/bush/ausbushes/var3/brflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"sET" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "sFc" = ( /obj/structure/flora/bush/ausbushes/var3/stalkybush, /turf/open/gm/river, /area/lv624/ground/river/west_river) +"sFD" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "sFY" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Workshop Storage"; @@ -19456,6 +22023,19 @@ /obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, /turf/open/gm/dirt, /area/lv624/ground/caves/central_caves) +"sLT" = ( +/obj/structure/flora/bush/ausbushes/palebush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) +"sLU" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "sLX" = ( /obj/structure/bed/chair/comfy/black{ dir = 8 @@ -19473,10 +22053,23 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"sNq" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "sOp" = ( /obj/structure/flora/jungle/planttop1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) +"sOC" = ( +/obj/item/stack/sheet/metal{ + pixel_x = 16; + pixel_y = -10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "sOZ" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/south, @@ -19489,10 +22082,17 @@ /obj/structure/flora/bush/ausbushes/ausbush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"sPK" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/angel, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "sRH" = ( /obj/structure/flora/bush/ausbushes/palebush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"sRW" = ( +/turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, +/area/lv624/ground/jungle/east_jungle) "sSE" = ( /obj/structure/flora/bush/ausbushes/ppflowers, /turf/open/gm/grass/grass1, @@ -19520,6 +22120,19 @@ /obj/structure/window/framed/colony/reinforced, /turf/open/floor, /area/lv624/lazarus/hydroponics) +"sVx" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_membrane, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"sWk" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/lv624/lazarus/secure_storage) "sWy" = ( /obj/effect/landmark/monkey_spawn, /turf/open/gm/grass/grass1, @@ -19551,6 +22164,16 @@ icon_state = "squareswood" }, /area/lv624/ground/caves/sand_temple) +"sXg" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = -10; + pixel_y = -2 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "sXi" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 1 @@ -19571,8 +22194,6 @@ }, /area/lv624/lazarus/landing_zones/lz1) "taK" = ( -/obj/structure/fence, -/obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, /area/lv624/ground/colony/north_tcomms_road) "tbV" = ( @@ -19580,6 +22201,16 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"tcF" = ( +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) +"tde" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "tdX" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -19632,8 +22263,18 @@ /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/coast/north, /area/lv624/ground/river/west_river) +"thk" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = -5; + pixel_y = -5 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "thn" = ( -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ pixel_x = -6; pixel_y = 7 }, @@ -19660,6 +22301,13 @@ icon_state = "multi_tiles" }, /area/lv624/ground/caves/sand_temple) +"thI" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "thS" = ( /obj/structure/barricade/handrail/strata{ dir = 8 @@ -19667,16 +22315,22 @@ /obj/structure/barricade/handrail/strata, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/barrens/south_eastern_barrens) -"tiw" = ( -/mob/living/simple_animal/bat, -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, -/turf/open/gm/dirt, -/area/lv624/ground/caves/north_west_caves) "tka" = ( -/obj/effect/landmark/lv624/xeno_tunnel, -/turf/open/gm/grass/grass1, +/obj/item/ammo_casing/bullet{ + icon_state = "casing_9_1" + }, +/obj/item/ammo_casing/bullet{ + icon_state = "cartridge_6_1" + }, +/obj/item/ammo_casing/bullet{ + icon_state = "cartridge_9_1" + }, +/turf/open/gm/dirt, /area/lv624/ground/jungle/north_west_jungle) +"tlk" = ( +/obj/structure/flora/bush/ausbushes/reedbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "tlD" = ( /obj/structure/flora/bush/ausbushes/var3/fernybush, /turf/open/gm/river, @@ -19700,6 +22354,11 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"tnY" = ( +/turf/open/gm/dirt{ + icon_state = "desert3" + }, +/area/lv624/ground/caves/west_caves) "toz" = ( /obj/structure/flora/bush/ausbushes/pointybush, /turf/open/gm/grass/grass1, @@ -19729,6 +22388,10 @@ /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_central_jungle) +"tqQ" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "trs" = ( /obj/item/tool/shovel, /turf/open/gm/dirt, @@ -19751,6 +22414,13 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/west, /area/lv624/ground/colony/north_nexus_road) +"tti" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8; + pixel_y = 13 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "ttu" = ( /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass1, @@ -19766,6 +22436,16 @@ /obj/structure/barricade/handrail/strata, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/lv624/ground/barrens/south_eastern_barrens) +"tuJ" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = -5; + pixel_y = -5 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "tuX" = ( /obj/effect/landmark/crap_item, /turf/open/floor/wood{ @@ -19822,6 +22502,16 @@ /obj/effect/landmark/crap_item, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"tzP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "tBB" = ( /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, @@ -19841,6 +22531,14 @@ }, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_barrens) +"tEm" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "tEn" = ( /obj/structure/flora/jungle/vines/light_3, /turf/open/floor{ @@ -19940,18 +22638,65 @@ icon_state = "whiteyellowfull" }, /area/lv624/ground/barrens/south_eastern_barrens) +"tMP" = ( +/obj/structure/window_frame/colony, +/turf/open/floor/plating, +/area/lv624/lazarus/comms) +"tMQ" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "tOS" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/gm/dirt, /area/lv624/ground/caves/west_caves) +"tOV" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) +"tPH" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_membrane, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"tQU" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 2; + pixel_y = 7 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "tRu" = ( /obj/effect/landmark/hunter_primary, /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"tRE" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) +"tRM" = ( +/obj/structure/flora/bush/ausbushes/palebush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "tSd" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/lazarus/quartstorage/outdoors) +"tSi" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "tSN" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/grass/grass1, @@ -19966,6 +22711,12 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"tVw" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "tWw" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor{ @@ -19988,12 +22739,18 @@ }, /area/lv624/lazarus/crashed_ship_containers) "tYx" = ( -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor{ - dir = 9; - icon_state = "brown" +/obj/effect/landmark/objective_landmark/medium, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 }, -/area/lv624/lazarus/comms) +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"tYW" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "tZa" = ( /obj/structure/flora/bush/ausbushes/var3/stalkybush, /turf/open/gm/coast/beachcorner/south_east, @@ -20005,6 +22762,20 @@ "tZD" = ( /turf/closed/wall/r_wall, /area/lv624/lazarus/landing_zones/lz2) +"uaz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/chair/office/light{ + dir = 8 + }, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) +"uaL" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "uaP" = ( /obj/structure/flora/bush/ausbushes/var3/fernybush, /turf/open/gm/grass/grass1, @@ -20097,10 +22868,27 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/north, /area/lv624/ground/colony/north_tcomms_road) +"uiW" = ( +/obj/structure/barricade/metal/wired{ + dir = 1; + health = 10; + is_wired = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "ujd" = ( /obj/structure/flora/bush/ausbushes/ausbush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) +"ukh" = ( +/obj/item/ammo_casing/bullet{ + icon_state = "cartridge_6_1" + }, +/obj/item/ammo_casing/bullet{ + icon_state = "casing_9_1" + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "ukk" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 1 @@ -20112,9 +22900,28 @@ icon_state = "desert1" }, /area/lv624/ground/barrens/south_eastern_barrens) +"ukS" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/item/device/flashlight{ + pixel_y = 5 + }, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) +"ukY" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "ukZ" = ( -/turf/open/floor/plating{ - icon_state = "platebotc" +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, /area/lv624/ground/colony/telecomm/cargo) "ulj" = ( @@ -20141,16 +22948,28 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, /turf/open/gm/dirt, /area/lv624/ground/caves/east_caves) +"unp" = ( +/turf/closed/wall/strata_ice/jungle, +/area/lv624/ground/caves/south_east_caves) "uns" = ( -/obj/item/stack/sheet/wood{ - amount = 2 - }, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/vault, -/area/lv624/lazarus/quartstorage) -"unT" = ( +/obj/effect/landmark/objective_landmark/medium, /turf/open/gm/dirt, -/area/lv624/ground/colony/telecomm/tcommdome/south) +/area/lv624/ground/caves/south_east_caves) +"unT" = ( +/obj/structure/flora/jungle/vines/heavy, +/turf/open/gm/dirtgrassborder/south, +/area/lv624/ground/jungle/east_jungle) +"uop" = ( +/obj/structure/flora/bush/ausbushes/reedbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) +"upp" = ( +/obj/structure/platform_decoration, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "upM" = ( /obj/effect/landmark/crap_item, /turf/open/gm/grass/grass1, @@ -20161,6 +22980,17 @@ /obj/effect/landmark/corpsespawner/colonist/random/burst, /turf/open/gm/dirt, /area/lv624/ground/caves/east_caves) +"upV" = ( +/obj/item/stack/cable_coil/random{ + pixel_x = 7; + pixel_y = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) +"uqm" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "urR" = ( /turf/open/floor/corsat{ dir = 1; @@ -20177,12 +23007,26 @@ /obj/structure/flora/bush/ausbushes/reedbush, /turf/open/gm/dirt, /area/lv624/ground/barrens/central_barrens) +"uuf" = ( +/obj/effect/landmark/hunter_primary, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) +"uuV" = ( +/obj/effect/landmark/hunter_primary, +/turf/open/gm/dirtgrassborder/south, +/area/lv624/ground/jungle/east_jungle) "uve" = ( /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/barrens/south_eastern_jungle_barrens) "uvh" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/barrens/south_eastern_barrens) +"uwG" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "uxh" = ( /obj/structure/flora/bush/ausbushes/var3/brflowers, /turf/open/gm/grass/grass1, @@ -20192,13 +23036,32 @@ /obj/effect/landmark/corpsespawner/security/liaison, /turf/open/floor/wood, /area/lv624/ground/caves/north_central_caves) +"uxL" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 11; + pixel_y = -2 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "uxT" = ( /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/coast/east, /area/lv624/ground/river/east_river) +"uxU" = ( +/turf/closed/wall/strata_ice/jungle, +/area/lv624/ground/caves/central_caves) "uya" = ( /turf/open/gm/dirt, /area/lv624/lazarus/crashed_ship_containers) +"uyn" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "uzH" = ( /turf/open/floor/plating{ dir = 8; @@ -20208,6 +23071,11 @@ "uAp" = ( /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/barrens/south_eastern_barrens) +"uBR" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "uDd" = ( /obj/structure/showcase{ desc = "An ancient, dusty tomb with strange alien writing. It's best not to touch it."; @@ -20269,6 +23137,12 @@ icon_state = "whitebluecorner" }, /area/lv624/lazarus/corporate_dome) +"uHc" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "uHI" = ( /obj/structure/flora/bush/ausbushes/var3/leafybush, /turf/open/gm/grass/grass2, @@ -20291,11 +23165,17 @@ }, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/north_jungle) +"uMd" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "uMz" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, -/turf/open/gm/dirt, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/central_caves) "uMD" = ( /obj/structure/flora/jungle/vines/light_3, @@ -20306,10 +23186,34 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/lv624/ground/caves/sand_temple) +"uOl" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"uOu" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/libertycap, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) +"uOD" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"uOK" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor{ + icon_state = "cult" + }, +/area/lv624/ground/caves/south_west_caves) "uRb" = ( /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/west_tcomms_road) +"uRe" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "uRE" = ( /turf/open/gm/dirtgrassborder/west, /area/lv624/lazarus/landing_zones/lz2) @@ -20379,12 +23283,28 @@ icon_state = "dark" }, /area/lv624/lazarus/corporate_dome) +"uWJ" = ( +/turf/closed/wall/strata_ice/jungle, +/area/lv624/ground/caves/south_west_caves) +"uXT" = ( +/obj/item/device/assembly/timer, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) +"uXV" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/south_central_jungle) "uXW" = ( /obj/structure/barricade/sandbags/wired, /turf/open/floor/wood{ icon_state = "wood-broken" }, /area/lv624/ground/caves/north_central_caves) +"uYj" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "uYC" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 6 @@ -20423,10 +23343,39 @@ /obj/structure/flora/bush/ausbushes/reedbush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"vbh" = ( +/obj/item/device/radio/off{ + frequency = 1469; + pixel_x = -9; + pixel_y = -13 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) +"vbK" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "vcY" = ( /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz2) +"vdl" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) +"vdt" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "vdy" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; @@ -20438,6 +23387,10 @@ icon_state = "dark" }, /area/lv624/lazarus/corporate_dome) +"vef" = ( +/obj/effect/landmark/objective_landmark/science, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "veo" = ( /obj/item/ammo_casing/bullet{ icon_state = "cartridge_3_1" @@ -20481,6 +23434,19 @@ /obj/structure/girder, /turf/open/gm/dirt, /area/lv624/lazarus/crashed_ship_containers) +"vih" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"viC" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "vjH" = ( /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass1, @@ -20508,6 +23474,25 @@ /obj/effect/landmark/objective_landmark/far, /turf/open/gm/dirt, /area/lv624/ground/jungle/south_central_jungle) +"vkS" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 2; + pixel_y = 7 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) +"vle" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "vly" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -20546,6 +23531,14 @@ /obj/structure/flora/bush/ausbushes/ausbush, /turf/open/gm/grass/grass1, /area/lv624/ground/barrens/south_eastern_barrens) +"vtk" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "vtt" = ( /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/grass/grass1, @@ -20580,6 +23573,13 @@ }, /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz2) +"vxj" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "vxU" = ( /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/grass/grass1, @@ -20591,6 +23591,25 @@ icon_state = "vault" }, /area/lv624/lazarus/quartstorage) +"vAg" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) +"vAB" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"vAT" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) +"vBd" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "vBe" = ( /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/jungle/east_central_jungle) @@ -20637,6 +23656,19 @@ }, /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz1) +"vGj" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"vGy" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "vHe" = ( /obj/structure/surface/rack, /obj/item/stack/sheet/plasteel{ @@ -20669,6 +23701,12 @@ /obj/item/bananapeel, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_jungle) +"vJM" = ( +/obj/item/shard, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/comms) "vKc" = ( /obj/effect/landmark/crap_item, /turf/open/gm/grass/grass1, @@ -20680,29 +23718,58 @@ "vLO" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/lazarus/quartstorage/outdoors) +"vMC" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "vMV" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/structure/blocker/forcefield/multitile_vehicles, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/gm/dirt, /area/lv624/ground/caves/south_west_caves) +"vNs" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "vNP" = ( /obj/effect/landmark/monkey_spawn, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_jungle) +"vNT" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "vNW" = ( /obj/structure/flora/bush/ausbushes/grassybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) "vOD" = ( -/turf/open/floor{ - dir = 9; - icon_state = "asteroidwarning" - }, -/area/lv624/ground/colony/telecomm/tcommdome/south) +/obj/structure/flora/bush/ausbushes/reedbush, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "vOF" = ( /turf/open/gm/dirtgrassborder/west, /area/lv624/ground/jungle/south_central_jungle) +"vPo" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "vPu" = ( /obj/effect/landmark/objective_landmark/close, /turf/open/floor, @@ -20710,10 +23777,29 @@ "vPV" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/jungle/east_jungle) +"vQR" = ( +/obj/structure/flora/bush/ausbushes/var3/sunnybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) +"vRe" = ( +/obj/structure/surface/table, +/obj/structure/machinery/light, +/obj/item/tool/wrench, +/obj/item/tool/weldingtool, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "vSG" = ( /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"vUj" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/gm/dirtgrassborder/south, +/area/lv624/ground/jungle/south_west_jungle) "vUw" = ( /obj/structure/flora/bush/ausbushes/var3/fullgrass, /turf/open/gm/dirt, @@ -20727,12 +23813,18 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/greengrid, /area/lv624/lazarus/secure_storage) +"vVe" = ( +/turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, +/area/lv624/ground/jungle/south_central_jungle) "vVf" = ( /turf/open/floor{ dir = 5; icon_state = "asteroidwarning" }, /area/lv624/ground/colony/telecomm/sw_lz2) +"vVC" = ( +/turf/closed/wall/strata_ice/jungle, +/area/lv624/ground/caves/east_caves) "vVD" = ( /obj/structure/flora/jungle/vines/light_3, /turf/closed/wall/rock/brown, @@ -20748,15 +23840,46 @@ /obj/structure/flora/jungle/vines/light_3, /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/east_jungle) +"vXP" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "vXW" = ( /obj/structure/flora/jungle/vines/light_3, /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"vYL" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "dark" + }, +/area/lv624/lazarus/engineering) +"vZT" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"waw" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) +"wbg" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "wbK" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"wbM" = ( +/turf/open/floor, +/area/lv624/ground/caves/north_central_caves) "wbP" = ( /obj/structure/flora/jungle/vines/light_3, /turf/open/floor/sandstone/runed, @@ -20805,6 +23928,16 @@ }, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/caves/sand_temple) +"whk" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 2; + pixel_y = 7 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "whr" = ( /obj/item/ammo_magazine/smg/mp5, /obj/item/ammo_magazine/smg/mp5, @@ -20821,6 +23954,10 @@ icon_state = "desert2" }, /area/lv624/ground/barrens/south_eastern_barrens) +"whx" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "whQ" = ( /obj/structure/flora/bush/ausbushes/var3/sunnybush{ desc = "The oranges aren't done yet... this sucks."; @@ -20876,6 +24013,15 @@ }, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) +"woF" = ( +/obj/structure/flora/jungle/vines/light_3, +/obj/structure/barricade/metal/wired{ + dir = 1; + health = 10; + is_wired = 1 + }, +/turf/open/gm/dirtgrassborder/east, +/area/lv624/ground/jungle/north_west_jungle) "woK" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/wood{ @@ -20890,7 +24036,7 @@ icon_state = "Synthetic_Template"; name = "Eternal guardian" }, -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ layer = 3.1; pixel_x = 6; pixel_y = 7 @@ -20906,9 +24052,19 @@ icon_state = "multi_tiles" }, /area/lv624/ground/caves/sand_temple) +"woT" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "wpw" = ( /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"wpY" = ( +/obj/structure/flora/bush/ausbushes/var3/leafybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) "wqy" = ( /obj/structure/flora/bush/ausbushes/reedbush, /turf/open/gm/dirt, @@ -20930,18 +24086,10 @@ /obj/structure/flora/jungle/vines/light_2, /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/north_east_jungle) -"wtK" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/fancy/cigarettes/wypacket{ - pixel_x = 5; - pixel_y = 6 - }, -/obj/item/clothing/under/liaison_suit/suspenders, -/turf/open/floor{ - dir = 6; - icon_state = "whiteyellow" - }, -/area/lv624/lazarus/corporate_dome) +"wty" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "wvO" = ( /obj/structure/flora/bush/ausbushes/genericbush, /turf/open/gm/grass/grass1, @@ -20950,6 +24098,11 @@ /obj/effect/decal/remains/xeno, /turf/open/gm/dirt, /area/lv624/ground/barrens/central_barrens) +"wwI" = ( +/turf/open/floor{ + icon_state = "asteroidplating" + }, +/area/lv624/ground/caves/north_central_caves) "wxP" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/jungle/north_jungle) @@ -20958,18 +24111,16 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) -"wAe" = ( -/obj/effect/decal/cleanable/blood/splatter, -/obj/structure/machinery/door_control{ - id = "secure_inner_blast"; - name = "Secure Inner Doors"; - pixel_x = -25; - pixel_y = 5 - }, -/turf/open/floor{ - icon_state = "white" +"wzI" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"wAF" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 }, -/area/lv624/lazarus/research) +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "wAI" = ( /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/dirtgrassborder/south, @@ -20982,6 +24133,12 @@ /obj/item/clothing/suit/armor/yautja_flavor, /turf/open/floor/sandstone/runed, /area/lv624/ground/barrens/south_eastern_barrens) +"wCs" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "wEO" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -21007,12 +24164,28 @@ icon_state = "wood-broken3" }, /area/lv624/ground/caves/north_central_caves) +"wHh" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "wHp" = ( /turf/open/floor/plating{ dir = 1; icon_state = "asteroidfloor" }, /area/lv624/lazarus/landing_zones/lz2) +"wHE" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = -1; + pixel_y = 7 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "wJA" = ( /obj/structure/flora/jungle/vines/light_3, /obj/structure/window/framed/colony/reinforced, @@ -21047,10 +24220,28 @@ icon_state = "asteroidwarning" }, /area/lv624/lazarus/landing_zones/lz2) +"wLT" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "wMk" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_central_jungle) +"wMr" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + light_on = 1; + light_range = 1; + light_system = 1; + pixel_x = 2; + pixel_y = 7 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) +"wNp" = ( +/obj/effect/landmark/objective_landmark/medium, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "wNB" = ( /obj/structure/flora/jungle/vines/light_3, /turf/open/floor{ @@ -21089,6 +24280,18 @@ /obj/structure/flora/bush/ausbushes/grassybush, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/south_west_jungle) +"wQK" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) +"wRb" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "wSg" = ( /obj/structure/inflatable/popped, /turf/open/gm/dirt, @@ -21156,6 +24359,11 @@ /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/wood, /area/lv624/ground/caves/north_central_caves) +"wUv" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/obj/structure/flora/jungle/vines/heavy, +/turf/open/gm/dirtgrassborder/north, +/area/lv624/ground/jungle/east_jungle) "wUz" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirt, @@ -21200,14 +24408,12 @@ /turf/open/gm/dirt, /area/lv624/ground/barrens/north_east_barrens) "wXg" = ( -/obj/structure/machinery/power/apc{ - start_charge = 0 - }, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidwarning" +/obj/item/stack/sheet/metal{ + pixel_x = 16; + pixel_y = -10 }, -/area/lv624/ground/colony/telecomm/tcommdome/south) +/turf/open/gm/dirt, +/area/lv624/ground/jungle/west_jungle) "wXp" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, /area/lv624/ground/jungle/west_central_jungle) @@ -21219,6 +24425,18 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"wYz" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"wYB" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "wZc" = ( /obj/structure/flora/bush/ausbushes/var3/brflowers, /turf/open/gm/grass/grass1, @@ -21236,6 +24454,10 @@ }, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_barrens) +"xar" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "xbu" = ( /obj/item/shard, /turf/open/floor{ @@ -21250,6 +24472,10 @@ /obj/structure/flora/bush/ausbushes/pointybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"xdb" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "xdO" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/south_west_jungle) @@ -21275,6 +24501,14 @@ /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/south_west_jungle) +"xfa" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "xfP" = ( /obj/item/stack/rods, /obj/item/shard, @@ -21286,6 +24520,17 @@ "xgE" = ( /turf/closed/wall/r_wall, /area/lv624/lazarus/corporate_dome) +"xhc" = ( +/mob/living/simple_animal/bat, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) +"xhv" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "xhC" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/lv624/ground/barrens/south_eastern_barrens) @@ -21296,6 +24541,10 @@ icon_state = "whiteyellow" }, /area/lv624/lazarus/corporate_dome) +"xmK" = ( +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "xov" = ( /obj/effect/landmark/hunter_primary, /turf/open/gm/dirt, @@ -21313,6 +24562,9 @@ /obj/structure/platform_decoration/mineral/sandstone/runed, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/caves/sand_temple) +"xpR" = ( +/turf/closed/wall/strata_ice/jungle, +/area/lv624/ground/caves/north_east_caves) "xqV" = ( /obj/structure/surface/rack, /obj/effect/landmark/objective_landmark/medium, @@ -21341,6 +24593,14 @@ /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/dirt, /area/lv624/ground/river/west_river) +"xvz" = ( +/obj/structure/platform_decoration, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 9; + icon_state = "brown" + }, +/area/lv624/lazarus/comms) "xvN" = ( /obj/structure/barricade/handrail/strata{ dir = 1 @@ -21361,6 +24621,10 @@ "xwr" = ( /turf/open/gm/dirt, /area/lv624/ground/barrens/west_barrens) +"xwN" = ( +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "xwQ" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/handcuffs/cable/white{ @@ -21375,12 +24639,19 @@ /obj/structure/surface/table/reinforced/prison, /obj/item/tool/crowbar, /obj/item/reagent_container/spray/cleaner, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor{ dir = 9; icon_state = "whiteyellow" }, /area/lv624/lazarus/corporate_dome) +"xyH" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "xyI" = ( /obj/item/ammo_magazine/rifle/nsg23{ current_rounds = 0 @@ -21404,6 +24675,10 @@ "xBm" = ( /turf/open/gm/river, /area/lv624/ground/barrens/west_barrens) +"xBO" = ( +/obj/structure/flora/bush/ausbushes/palebush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "xCF" = ( /obj/item/ammo_magazine/smg/mp5, /obj/item/weapon/gun/smg/mp5, @@ -21435,10 +24710,23 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"xGL" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "xHa" = ( /obj/effect/landmark/crap_item, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"xHW" = ( +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "xJA" = ( /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/river, @@ -21457,14 +24745,36 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/jungle/west_jungle) +"xKL" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "xLi" = ( /obj/structure/surface/rack, /obj/item/storage/box/lights/mixed, /turf/open/floor/vault, /area/lv624/lazarus/quartstorage) +"xLT" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/lv624/lazarus/secure_storage) +"xNi" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "xNK" = ( /turf/open/gm/dirt, /area/lv624/ground/barrens/containers) +"xNQ" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/gm/dirtgrassborder/east, +/area/lv624/ground/jungle/south_central_jungle) "xPk" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, /area/lv624/ground/colony/south_medbay_road) @@ -21493,12 +24803,22 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_jungle) +"xRe" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "xRo" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 1 }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"xSk" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "xSA" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, @@ -21506,12 +24826,13 @@ /turf/open/gm/dirt, /area/lv624/ground/caves/east_caves) "xTa" = ( -/obj/structure/largecrate/random, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/plating{ - icon_state = "platebot" - }, -/area/lv624/lazarus/robotics) +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"xTM" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/west_jungle) "xTT" = ( /turf/open/gm/dirt, /area/lv624/ground/jungle/south_west_jungle) @@ -21528,6 +24849,15 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"xVN" = ( +/turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, +/area/lv624/ground/jungle/south_central_jungle) +"xWy" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "xXB" = ( /obj/structure/flora/bush/ausbushes/var3/sunnybush, /turf/open/gm/grass/grass1, @@ -21539,6 +24869,12 @@ /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"xYD" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "xZE" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, @@ -21567,8 +24903,24 @@ /area/lv624/ground/barrens/south_eastern_jungle_barrens) "ydz" = ( /obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/gm/dirt, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/central_caves) +"ydX" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor/glass/colony{ + name = "\improper Communications Dome"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/lv624/lazarus/engineering) +"yfe" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "yfH" = ( /turf/open/shuttle{ icon_state = "floor4" @@ -21581,6 +24933,10 @@ /obj/structure/flora/bush/ausbushes/reedbush, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, /area/lv624/ground/river/east_river) +"ygp" = ( +/obj/structure/surface/rack, +/turf/open/floor/greengrid, +/area/lv624/lazarus/secure_storage) "yhd" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, /area/lv624/ground/caves/sand_temple) @@ -21602,6 +24958,11 @@ icon_state = "purple" }, /area/lv624/lazarus/sleep_female) +"yhT" = ( +/turf/open/gm/dirt{ + icon_state = "desert2" + }, +/area/lv624/ground/caves/west_caves) "yhY" = ( /obj/structure/inflatable/door, /turf/open/gm/dirt, @@ -21616,9 +24977,10 @@ }, /area/lv624/lazarus/corporate_dome) "yiE" = ( -/obj/structure/flora/bush/ausbushes/pointybush, +/obj/structure/flora/jungle/vines/heavy, +/obj/effect/landmark/lv624/xeno_tunnel, /turf/open/gm/grass/grass1, -/area/lv624/ground/jungle/east_jungle) +/area/lv624/ground/jungle/north_west_jungle) "yiT" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/firstaid/adv{ @@ -21633,6 +24995,10 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/colony/west_tcomms_road) +"yjs" = ( +/obj/structure/flora/bush/ausbushes/pointybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "yjN" = ( /obj/structure/flora/jungle/vines/heavy, /obj/structure/machinery/door/airlock/sandstone/runed/destroyable{ @@ -22904,7 +26270,7 @@ mdQ mdQ gwP gwP -gwP +yhT mdQ mdQ mdQ @@ -23356,10 +26722,10 @@ gwP gwP gwP tOS -gwP -gwP -gwP -tOS +vle +qdx +qdx +hyF gwP gwP gwP @@ -23375,7 +26741,7 @@ afV afV nBh nBh -nBh +uOK afV nBh nBh @@ -23582,18 +26948,18 @@ gwP gwP gwP gwP +vle +qdx +cHW +dOA +dmT +grW +xKL gwP -gwP -gwP -gwP -gwP -gwP -gwP -gwP -gwP +yhT tOS gwP -gwP +ptm gwP gwP gwP @@ -23617,7 +26983,7 @@ nBh afV ane ane -ahF +euh ahF ane ane @@ -23805,19 +27171,19 @@ mdQ mdQ mdQ gwP +ptm gwP -gwP -gwP +tnY tOS gwP -gwP -gwP -gwP -gwP -gwP -gwP -gwP -gwP +wQK +cQB +dmT +dmT +rmW +ndk +grW +xKL gwP gwP gwP @@ -23853,7 +27219,7 @@ amy ane ane ane -ahF +krs ahF ane ane @@ -24038,14 +27404,14 @@ gwP gwP gwP gwP -gwP +wQK mdQ mdQ -mdQ -mdQ -gwP -gwP -gwP +onU +onU +owe +dmT +uRe gwP gwP gwP @@ -24073,7 +27439,7 @@ nBh afV ahF ahF -ahF +aYI ahF ahF ahF @@ -24263,23 +27629,23 @@ gwP gwP gwP gwP -gwP -gwP -gwP -mdQ -mdQ +vle +qdx +qdx mdQ mdQ mdQ +onU +onU mdQ -gwP -tOS +dmT +igN gwP gwP mdQ gwP gwP -gwP +yhT gwP gwP gwP @@ -24490,18 +27856,18 @@ mdQ gwP gwP tOS -gwP -gwP -gwP -mdQ -mdQ +vle +amI +dmT mdQ mdQ +onU +onU +onU mdQ mdQ -mdQ -gwP -gwP +bcb +wHh gwP gwP mdQ @@ -24509,7 +27875,7 @@ mdQ gwP gwP gwP -gwP +pqa ane afV afV @@ -24538,7 +27904,7 @@ ahF ahF ahF ahF -ahF +cCP ahF ane ane @@ -24718,13 +28084,13 @@ gwP gwP gwP gwP -gwP -gwP -mdQ -mdQ -mdQ +wQK +dmT mdQ mdQ +onU +onU +onU mdQ mdQ gwP @@ -24745,7 +28111,7 @@ afV afV afV afV -nBh +uOK eVH nBh nBh @@ -24942,22 +28308,22 @@ mdQ mdQ mdQ mdQ +ofg gwP gwP gwP -gwP -gwP -gwP -gwP -mdQ -mdQ -mdQ +wQK +dmT +fRU +onU +onU +onU mdQ mdQ gwP gwP gwP -gwP +ptm gwP gwP mdQ @@ -24976,8 +28342,8 @@ afV afV afV afV -ahF -ahF +hRy +aYI ahF afV afV @@ -25170,24 +28536,24 @@ gwP mdQ mdQ gwP +ptm gwP gwP gwP -gwP -gwP -gwP -gwP -gwP -gwP -mdQ +wQK +dmT +dmT +nRA +htV +onU mdQ +uRe gwP gwP gwP gwP gwP -gwP -gwP +vef mdQ mdQ mdQ @@ -25202,6 +28568,7 @@ ahF ahF ahF ahF +aYI ahF ahF ahF @@ -25212,8 +28579,7 @@ ahF ahF ahF ahF -ahF -ahF +krs ahF ane ane @@ -25397,19 +28763,19 @@ gwP gwP mdQ mdQ +lav gwP gwP +ofg gwP -gwP -gwP -gwP -tOS -gwP -gwP -gwP -gwP -gwP -gwP +hjo +gvm +qJE +dmT +dmT +dmT +fLh +uRe gwP tOS gwP @@ -25436,7 +28802,7 @@ ahF ahF ahF ahF -ahF +fDT ahF ahF ahF @@ -25632,12 +28998,12 @@ gwP gwP gwP gwP -gwP -gwP -gwP -tOS -gwP -gwP +hjo +qJE +tlk +gRk +owZ +wHh gwP gwP gwP @@ -25662,7 +29028,7 @@ ahF ahF ahF ahF -ahF +krs ahF ahF ahH @@ -25670,14 +29036,14 @@ ahF ahF ahF ahF -ahF +cCP ahF ane +fDT ahF ahF ahF -ahF -ahF +aYI ahF ahF ane @@ -25853,6 +29219,7 @@ gwP gwP gwP aca +ptm gwP gwP gwP @@ -25860,14 +29227,13 @@ gwP gwP gwP gwP +hjo +qhl +qhl +wHh gwP -gwP -gwP -gwP -gwP -gwP -gwP -gwP +ptm +yhT gwP mdQ mdQ @@ -25886,10 +29252,10 @@ ahF ahF ahV ahF -ahF -ahH -ahF -ahF +xYD +gTj +gTj +nys ahF ahF ahF @@ -26112,13 +29478,13 @@ ane ane ahF ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF +xYD +hmq +lYt +chi +fmW +rHV +nys ePu ahF ahF @@ -26133,9 +29499,9 @@ ane ahF ahF ahF -ahF -ahF -ahF +hRy +hRy +fDT afV ane ane @@ -26274,13 +29640,13 @@ abM abM abM abM -abM +amk +onU mdQ mdQ mdQ mdQ -mdQ -gwP +uRe gwP gwP gwP @@ -26339,19 +29705,19 @@ ane ane ane ane +xYD +lYt +fmW +fmW +uWJ +ilF +fmW +rHV +nys ahF ahF ahF -ahF -ane -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF +aYI ahF ahH ahF @@ -26467,18 +29833,18 @@ abB abB abB abN -abN -abN -abN -abM -abM -abM +pSe +kzn +tcF +amk +amk +amk +amk abM abM abM abM -abM -abN +qVh abN abN abN @@ -26501,14 +29867,14 @@ abN abM abM abM -abM -abM +amk +amk +onU +onU mdQ -mdQ -mdQ -tOS -gwP -gwP +gRk +dmT +uRe gwP gwP gwP @@ -26567,16 +29933,16 @@ ane ane ane ahF -ahF -ahF -ahF -ane -ane -ane -ahF -ahF -ahF -ahF +wAF +aIE +fmW +uWJ +uWJ +uWJ +fmW +fmW +vGj +nys ahF ahF ahF @@ -26692,21 +30058,21 @@ abM abM abB abB -tiw -abN -abN -abN -abN +abB +tgL abN abN +lTv +pLv +sBY +amk +amk +amk +amk +amk abM -abM -abM -abM -abM -abM -abN -abN +qiL +qVh abQ abN abN @@ -26727,16 +30093,16 @@ abN abN abN abN -abN -abN -abN -abN -mdQ -mdQ -mdQ -gwP -gwP -gwP +cMG +waw +cWs +sBY +onU +onU +onU +lKl +tRM +uRe gwP gwP gwP @@ -26751,11 +30117,11 @@ gwP gwP gwP gwP -gwP -gwP -gwP -gwP -gwP +vle +jvQ +jvQ +jvQ +xKL gwP gwP gwP @@ -26795,20 +30161,20 @@ ane ane ahF ahF +wAF +fmW +uWJ +uWJ +uWJ +eoW +fmW +fmW +fmW +rHV +vXP +nys ahF -ahF -ane -ane -ane -ahF -ahF -ahH -ahF -ahF -ahF -ahF -ahF -ahF +aYI ahF ahF ahF @@ -26843,8 +30209,8 @@ aFm auO aFm aFm -uSw -asa +aAl +aqR asa aja asa @@ -26924,17 +30290,17 @@ abN abN abN abN -abN -abN -abN -abN -abN -abM -abM -abN -abN -abN -abN +pSe +kzn +sBY +sBY +sBY +amk +amk +gnt +qVN +sBY +qVh abN abN abN @@ -26954,17 +30320,17 @@ abN abN abN abQ -abN -abN -abN -abN -abN -aca -gwP -gwP -gwP -gwP -gwP +cMG +waw +sBY +sBY +sBY +iGf +dKl +dmT +dmT +owZ +wHh gwP gwP gwP @@ -26977,14 +30343,14 @@ gwP aYC gwP gwP -gwP -gwP -gwP -tOS -gwP -gwP -gwP -gwP +vle +jvQ +pkU +gRk +lLK +dmT +grW +xKL gwP gwP gwP @@ -27022,19 +30388,19 @@ ane ane ahF ahF -ahH -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF ahF +doe +pIl +eZg +fmW +fmW +fmW +fmW +fmW +fmW +fmW +fmW +rHV ahF ahF ane @@ -27071,9 +30437,9 @@ aue auf aXC aFm -aro +aAl ayN -asc +asx ayT aAp aAp @@ -27153,16 +30519,16 @@ abN abN abN abN -abQ -abN -abN -abN -abN -abN -abN -abN -abN -abN +bak +kzn +iXX +sBY +sBY +iNJ +sBY +sBY +frV +klD abN abN abN @@ -27181,17 +30547,17 @@ abN abN abN abN -abN -abN -abN -abN -abQ -abN -aca -gwP -tOS -gwP -gwP +cMG +waw +sBY +sBY +fTN +sBY +iGf +dmT +gRk +owZ +wHh gwP gwP gwP @@ -27205,15 +30571,15 @@ gwP aca gwP gwP -gwP -xZE -xZE -xZE -gwP -gwP -gwP -gwP -gwP +jGU +hhs +hhs +hhs +htV +dOA +fRU +grW +xKL gwP gwP gwP @@ -27249,20 +30615,20 @@ ane ane ane ahF +aYI ahF ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF +doe +pIl +uqm +fmW +fmW +fmW +ikA +fmW +fmW +wty +chi ane ane ane @@ -27275,7 +30641,7 @@ ane ahF ahF ahH -ahF +cCP ahF ane ane @@ -27299,9 +30665,9 @@ auf auf aZp aFm -aro -aro -ayT +aAl +omu +aqS aAp aAp aAp @@ -27377,19 +30743,19 @@ abN abN abN abN -abQ -abN -abN -abN -abN -abN -abN -abN -abN -abN -abN -abQ -abN +vNs +bdu +bdu +bdu +jKc +pSe +jLY +jLY +jLY +jLY +jLY +kKa +klD abN abN abN @@ -27408,17 +30774,17 @@ abM abB abN abN -abN -abN -abN -abN -abN -abN -abN -aca -gwP -gwP -gwP +cMG +waw +gvr +uOu +sBY +iNJ +sBY +iGf +owZ +qhl +wHh gwP qaE gwP @@ -27435,14 +30801,14 @@ gwP gwP mdQ mdQ -mdQ -mdQ -mdQ -xZE -xZE -xZE -gwP -gwP +onU +onU +onU +hhs +hhs +hhs +grW +jvQ gwP gwP tOS @@ -27462,7 +30828,7 @@ gwP gwP gwP gwP -gwP +wNp mdQ acp acp @@ -27478,25 +30844,25 @@ ane ane ahF ahF +vZT ahF ahF -ahF -ahF -ahF -ahF +doe +qSS +pIl dWM -ahF -ahF -ahF -ahF -ahF -ahF +fmW +fmW +fmW +fmW +sAI +pBH ane ane afV afV -ahF -ahF +hRy +krs afV afV ane @@ -27527,9 +30893,9 @@ aug wFx avo aFQ -axX -baN -aAp +xTM +aAl +aDv aAp aAp nmO @@ -27602,16 +30968,16 @@ abN abN abN abN -abN -abN -abN -abN -abN -abN -abN -abN -abN -abN +cMG +bdu +bdu +waw +tcF +sBY +sBY +mgi +bdu +jKc abQ abN abN @@ -27635,12 +31001,12 @@ abN abN dhD abN -abQ -abN -abN -abN -abN -abM +vNs +waw +sBY +sBY +sBY +amk abM abM mdQ @@ -27664,15 +31030,15 @@ mdQ mdQ mdQ mdQ -mdQ -mdQ -mdQ -mdQ -xZE -xZE -xZE -gwP -gwP +onU +onU +onU +onU +hhs +hhs +hhs +grW +xKL gwP gwP gwP @@ -27709,21 +31075,21 @@ ane ane ane ahF +fDT ahF -ahF -ahF -ahF -ahF -ahF -ahF -ane -ane -ane +wAF +fmW +fmW +snc +fmW +uWJ +uWJ +uWJ ane ane afV ahF -ahF +aYI ahF ahF afV @@ -27749,15 +31115,15 @@ aud bGb auP aqi -aqS +ase aFm aZn axp auf aFm -asw -aro -aAp +aAl +wXg +aDv aAp nmO aXX @@ -27829,17 +31195,17 @@ abM abN abN abN -abQ -abN -abN -abN -abN -abN -abN -abN -abN -abN -abN +vNs +waw +dIj +sBY +sBY +sBY +sBY +pLv +sBY +sBY +hKP abN abN abN @@ -27862,14 +31228,14 @@ abN abN abQ dhD -abN -abN -abN -abN -abN -abN -abM -abM +cMG +waw +sBY +sBY +sBY +sBY +amk +amk abM mdQ mdQ @@ -27894,13 +31260,13 @@ mdQ mdQ mdQ mdQ -mdQ -mdQ -mdQ -mdQ -xZE -xZE -gwP +onU +onU +onU +onU +hhs +hhs +uRe gwP gwP gwP @@ -27938,13 +31304,13 @@ afV afV afV ahF -ahF -ahH -ahF -ahF -ahF -ahF -ane +cCP +wAF +fmW +fmW +jCO +uqm +uWJ ane ane ane @@ -27976,16 +31342,16 @@ aud aud aud auP -aqR -arn +aAl +aAl aFm aIH auR auf aFm -atC -ayT -aAp +aAl +aAl +aDv aAp aXX aRG @@ -28057,17 +31423,17 @@ abM abN abN abN -abN -abN -abN -abN -abM -abM -abM -abM -abN -abN -abN +vGy +sBY +whk +sBY +amk +amk +amk +amk +sBY +sBY +hKP abN abN abN @@ -28090,14 +31456,14 @@ abN abN abN dhD -abN -abN -abN -abN -abN -abM -abM -abM +vGy +sBY +sBY +gnt +sBY +amk +amk +amk abM mdQ mdQ @@ -28123,10 +31489,10 @@ mdQ mdQ mdQ mdQ -mdQ -mdQ -mdQ -mdQ +onU +onU +onU +onU mdQ gwP gwP @@ -28162,14 +31528,14 @@ ahF ahF ahF ahF -ahF +cCP ahF afJ -ahF -ahF -ahF -ahF -ahF +xYD +vXP +lYt +dIu +fmW ane ane ane @@ -28182,7 +31548,7 @@ ahF ahF ahF ahF -ahF +cCP ahF ahF ahF @@ -28204,16 +31570,16 @@ sFc aud aud auP -aqS -aro +aAl +aAl aFm aFm aFQ aFm aFm -atC -aAp -aAp +aAl +qKC +pKm aAp nmO aZP @@ -28285,15 +31651,15 @@ abN abN abN abN -abN -abM -abM -abM -abM -abM -abM +vGy abM abM +amk +amk +amk +amk +amk +amk abM abM abM @@ -28318,14 +31684,14 @@ abN abN abN dhD -abN -abN -abN -abN -abM -abM -abM -abM +vGy +qVN +sBY +ksc +amk +amk +amk +amk abM mdQ mdQ @@ -28352,8 +31718,8 @@ mdQ mdQ mdQ mdQ -mdQ -mdQ +onU +onU mdQ mdQ mdQ @@ -28384,7 +31750,7 @@ acp ane ane ahF -ahF +fDT ahF ahF ahH @@ -28393,10 +31759,10 @@ ahF ahF ahF afJ -ahF -ahF -ahF -ahF +wAF +fmW +fmW +fmW ane ane ane @@ -28432,14 +31798,14 @@ aud aud aud avy -teS -rGW -psh -nuW -psh -vEp +jRJ +oTJ +oTJ +uiW +sqs +oTJ qKC -kWX +pKm hdh oKP aAp @@ -28512,14 +31878,14 @@ abM abN abN abN -abN -abN -abM -abM -abM +cMG +waw abM abM abM +amk +amk +amk abM abM abM @@ -28549,10 +31915,10 @@ abM abM abM abM -abM -abM -abM -abM +amk +amk +amk +amk abM abM mdQ @@ -28616,15 +31982,15 @@ ahF ahF ahF ahF -ahF -ahF -ahF -ahF +gTj +gTj +gTj +nys afV -ahF -ahF -ane -ane +wAF +tQU +uWJ +uWJ ane ane ane @@ -28639,7 +32005,7 @@ ahF ahF ahF ahF -ahF +krs ahF ahF ahF @@ -28660,12 +32026,12 @@ aud arU aud auP -teS -psh -dop -kVP -psh -psh +vOD +oTJ +azB +sOC +oTJ +oTJ mBL hdh hdh @@ -28676,7 +32042,7 @@ aZP aOB oOB aRg -aRg +aCi aRg aRg aRg @@ -28694,7 +32060,7 @@ aRg aRg aRg aRg -aRg +aCi aRg odw aRg @@ -28739,14 +32105,14 @@ abM abN abN abQ -abN -abN -abN -abM +cMG +waw +tcF abM abM abM abM +amk abM abM abM @@ -28778,8 +32144,8 @@ abM abM abM abM -abM -abM +amk +amk abM abM mdQ @@ -28843,21 +32209,21 @@ afV ahF isF ahF -ahF -ahF -ahF -ahF -ahF +lYt +fmW +gos +fmW +lWl afV afV -ane -ane +uWJ +uWJ ane ane ane ane afV -ahF +pmt ahF ahF ahF @@ -28888,15 +32254,15 @@ aud aud aud auP -teS -pYq -hIq -nuW -psh -psh +oTJ +tRE +jRJ +oTJ +ukh +njl vVf fqM -aAp +oXI aAp fuy aXX @@ -28906,7 +32272,6 @@ aTv aRg aRg aRg -aCi aRg aRg aRg @@ -28921,9 +32286,10 @@ aRg aRg aRg aRg -aCi +aRg +aRg aKO -aBo +aRg aEw aRg wLz @@ -28967,8 +32333,8 @@ abM abN abN abN -abN -abN +vGy +sBY abM abM abM @@ -29070,13 +32436,13 @@ ane vUx vMV vMV -vMV -vMV -ane -ahF -ahF -ahF -ahF +lUQ +bJQ +uWJ +nQH +fmW +lWl +krs afV ane ane @@ -29090,7 +32456,7 @@ ahF ahF ahF ahF -ahF +krs ahF ahV ahF @@ -29116,15 +32482,15 @@ aud aud amG auP -teS -qSZ -fio -nuW +oTJ +oTJ +bav +uiW tka +lCG +cDQ +oTJ nuW -psh -cRT -cqz aAp cIL nmO @@ -29194,9 +32560,9 @@ abM abM abN abN -abN -abN -abN +cMG +waw +pLv abM abM abM @@ -29298,12 +32664,12 @@ ane afV ahF ahF -ahF -ahF -ane -ahF -ahF -ahF +wAF +fmW +uWJ +dIu +fmW +lWl ahF afV afV @@ -29314,7 +32680,7 @@ afV ahF ahF ahF -ahF +fDT ahF ahH ahF @@ -29324,7 +32690,7 @@ ahF ahF ahF ahF -ahF +aYI ahF ane ane @@ -29344,14 +32710,14 @@ aud arV aud auP -teS -kRg -nVG -psh -nuW -txx -cRT -cRT +oTJ +azX +qJe +oTJ +oTJ +oEc +fHw +oTJ aAp aAp aAp @@ -29421,10 +32787,10 @@ abM abM abN abN -abN -abN -abN -abM +cMG +waw +sBY +amk abM abM abM @@ -29526,16 +32892,16 @@ ane ane ahF ahF -ahH -ahF -ane -ane -ahF -ahF -ahF -ahF +thI +cdw +uWJ +uWJ +dOb +lWl +aYI ahF ahF +krs ahF ahF ahF @@ -29572,15 +32938,15 @@ aud aud aud auP -eHQ -pOC -nuW -oXI -nuW -cqz -cTi -cRT -cRT +vOD +jRJ +oTJ +oTJ +oTJ +asH +oTJ +oTJ +oTJ aAp aAp aXX @@ -29622,11 +32988,11 @@ aTf aUj aUQ aUQ -vUO +ygp aUQ gte aUQ -iml +ygp aUQ aUQ aYs @@ -29649,11 +33015,11 @@ abM abM abN abN -abN -abQ -abN -abM -abM +vGy +fTN +sLT +amk +amk abM abM abM @@ -29752,20 +33118,20 @@ acp ane ane ane +krs ahF -ahF -ahF -ahF -ane -ane -ahF -ahF -ahF -ahF +wAF +fmW +uWJ +uWJ +kzw +kyt +nys ahF ahF ahF ahF +krs ahF ahF ahF @@ -29801,14 +33167,14 @@ amG aud auP oTJ -teS -psh -psh -dmS -cRT -cRT -dmS -txx +oTJ +oTJ +hZn +oTJ +oTJ +oTJ +oTJ +nuW aAp nmO aXX @@ -29825,7 +33191,7 @@ aRg aKO aRg aRg -aRg +aBo aRg aRg aRg @@ -29877,11 +33243,11 @@ abM abN abN abN -tgL -abN -abM -abM -abM +xhc +sBY +amk +amk +amk abM abM abM @@ -29982,15 +33348,14 @@ ane ane ahF ahF -ahF -ahF -ahF -ane -ahF -ahF -ahF -ahF -ahH +wAF +tOV +fKc +uWJ +jCO +fmW +rHV +nys ahF ahF ahF @@ -29998,6 +33363,7 @@ ahF ahF ahF ahF +krs ahF ahF ahF @@ -30029,13 +33395,13 @@ aud aud auP asH -teS -psh -pGD -vXW -cTi -cTi -psh +jDY +oTJ +oTJ +tlE +fZO +fZO +fZO aAp aAp cIL @@ -30105,10 +33471,10 @@ abM abN abN abN -abN -abN -abM -abM +vGy +sBY +amk +amk abM abM abM @@ -30210,17 +33576,17 @@ afV afV ahF ahF -ahF -ahF -ahF -ane +doe +pIl +fmW +uWJ ane -ane -ahF -ahF -ahF +uWJ +fmW +qSG ahF ahF +cCP ahF ahH ahF @@ -30257,10 +33623,10 @@ aud amG auP oTJ -teS -psh -pYJ -cRT +tlE +aWq +woF +gyP vEp txx xHa @@ -30333,10 +33699,10 @@ abM abN abN abN -abN -abN -abN -abM +vGy +sBY +bPE +amk abM abM abM @@ -30435,18 +33801,18 @@ acp ane ane ahF +cCP ahF ahF ahF -ahF -ahF -ahF +wYz +chi +uWJ ane -ane -ane -ahF -ahF -ahF +uWJ +fmW +rHV +nys ahF ahF ahF @@ -30487,7 +33853,7 @@ auP oTJ teS pDI -cRT +yiE pYJ dmS cRT @@ -30561,11 +33927,11 @@ abM abN abN abN -abN -abN -abN -abN -abB +pSe +kzn +sBY +dBS +stt abM abM abM @@ -30636,8 +34002,8 @@ mdQ mdQ mdQ mdQ -gwP -gwP +qdx +xKL gwP gwP gwP @@ -30667,15 +34033,15 @@ ahF ane ane ahF -ahH ahF +pIl ane ane -ane -ahF -ahF -ahF -ahF +uWJ +tOV +fmW +rHV +nys ahF ahF ahF @@ -30730,7 +34096,7 @@ aTv aRg aRg aRg -aCi +aRg aRg aRg aRg @@ -30745,7 +34111,7 @@ aRg aRg aRg aRg -aCi +aRg aRg aRg aEw @@ -30762,10 +34128,10 @@ aTf aTf aTf aUQ -aWb aUQ aUQ aUQ +sWk aUQ aUQ aTf @@ -30790,12 +34156,12 @@ abM abN abN abN -abQ -abN -abN -abB -abB -abB +bak +kzn +qYS +stt +stt +stt abM abM abM @@ -30863,9 +34229,9 @@ mdQ mdQ mdQ mdQ -gwP -gwP -gwP +tlk +dmT +uRe gwP gwP acS @@ -30886,7 +34252,7 @@ gwP aes aez aez -aez +rYI acp ane ane @@ -30896,16 +34262,16 @@ ane ane ane ahF -ahF -ahF -ahF +doe +pIl +fmW +uWJ +uWJ ane -ane -ane -ahF -ahF -ahF -ahF +eZg +rHV +gTj +nys isF ahF ahF @@ -30956,7 +34322,7 @@ aZP aOB kvE aRg -aRg +aCi aRg aRg aRg @@ -30974,7 +34340,7 @@ aRg aRg aRg aRg -aRg +aCi aRg byK aRg @@ -30991,11 +34357,11 @@ aTf aTf aTf aTf -aWu -aWu -aWu -aTf -aTf +mkn +xLT +mkn +xLT +sWk aTf aTf aXh @@ -31019,12 +34385,12 @@ abM abN abN abN -abN -abN -abN -abN -abN -abB +pSe +jLY +jLY +jLY +jLY +qrH abM abM abM @@ -31092,8 +34458,8 @@ mdQ mdQ mdQ mdQ -gwP -tOS +dmT +igN gwP gwP gwP @@ -31125,20 +34491,20 @@ ane ane ahF ahF -ahF -ahF -ahF -ane +doe +pIl +fcQ +uWJ ane ane -ahF -ahH -ahF -ahF +fmW +fmW +lWl ahF ahF ahF ahF +krs ahF ahF ahF @@ -31219,13 +34585,13 @@ efp aTf aTf aWc -aUQ -aUQ -aUQ -aTf -aTf -aTf -cWm +mkn +mkn +sWk +mkn +mkn +xLT +kBq aXh aXh aKb @@ -31318,10 +34684,10 @@ mdQ mdQ mdQ mdQ -mdQ -gwP -gwP -gwP +onU +dmT +dmT +uRe gwP gwP gwP @@ -31347,26 +34713,26 @@ mdQ ane afV ahF +aYI +krs ahF ahF ahF ahF ahF +wYz +fmW +fmW +uWJ +uWJ +uWJ +fmW +lWl ahF -ahF -ahF -ahF -ahF -ane -ane -ane -ahF -ahF -ahF -ahF -ahF -ahF -ahF +hRy +hRy +hRy +hRy ahF ahF ahF @@ -31447,13 +34813,13 @@ efp efp aTf aTf +xLT aWv aWv -aWv -aTf -aXh -aXh -aXh +xLT +xTT +xTT +vUj qGH aLj aXk @@ -31545,13 +34911,12 @@ mdQ mdQ mdQ mdQ -mdQ -mdQ -gwP -gwP +onU +onU +dmT +dmT +kVG sMx -sMx -gwP gwP gwP gwP @@ -31559,6 +34924,7 @@ gwP gwP gwP gwP +pqa acp xZE gwP @@ -31580,16 +34946,16 @@ ahF ahF ahF ahF +fDT ahF ahF -ahF -ahH -ahF -ane -ane -ahF -ahF -ahF +pIl +fmW +uWJ +uWJ +wHE +fmW +lWl ahF ahF ahF @@ -31678,10 +35044,10 @@ uSq qIO qIO qIO -ntL -mnK -kxI -wkP +qIO +uXV +qtj +dMc knp iIU kZw @@ -31773,11 +35139,11 @@ mdQ mdQ mdQ mdQ -mdQ -mdQ -gwP -gwP -sMx +onU +onU +dmT +xHW +kVG sMx gwP gwP @@ -31804,20 +35170,20 @@ ane afV ahF ahF +vZT ahF ahF ahF ahF ahF ahF -ahF -ahF -ahF -ane +wYz +sgU +uWJ ane -ahF -ahF -ahF +xBO +lWh +dYx ahF ahH ahF @@ -31906,10 +35272,10 @@ uSq njC qIO qIO -ntL -kxI -tsa -kxI +qIO +qtj +qtj +ksM rox wqz kZw @@ -32001,11 +35367,11 @@ mdQ mdQ mdQ mdQ -mdQ -gwP -gwP -gwP -gwP +onU +lKl +dmT +dmT +uRe gwP gwP gwP @@ -32034,17 +35400,17 @@ ahF ane ane ane +hRy +hRy +hRy ahF ahF -ahF -ahF -ahF -ahF -ahF +doe +pIl ane ane -ahF -ahF +lWh +dYx ahH ahF ahF @@ -32135,9 +35501,9 @@ hDX qIO qIO aXH -kxI -gGd -kxI +ebr +xNQ +vVe kxI wbK rHp @@ -32223,17 +35589,17 @@ mdQ mdQ mdQ mdQ -mdQ -mdQ -gwP -gwP -xZE +onU +onU +ieN +kWV xZE -xZE -gwP -gwP -gwP -gwP +xyH +hhs +ndk +dmT +dmT +uRe tOS gwP sMx @@ -32262,7 +35628,7 @@ ahF ahF ane ane -ahF +krs afV afV afV @@ -32449,19 +35815,19 @@ mdQ mdQ mdQ mdQ +jGU +ndk +onU +dmT +dmT +kWV gwP -gwP -mdQ -gwP -gwP -gwP -gwP -gwP -aca -gwP -abO -gwP -gwP +hjo +qtK +qhl +clO +qhl +wHh gwP gwP sMx @@ -32490,20 +35856,20 @@ ahF ahF ane ane -ahF +cCP afV ahF ahF ahF ahF ane -ahF +aYI ahF ahF ane ahF -ahF -ahF +aYI +fDT ahF ane ane @@ -32677,20 +36043,20 @@ gwP mdQ gwP gwP -gwP -gwP -aca -gwP -gwP -gwP +jGU +dmT +iGf +dmT +owZ +wHh tOS gwP aca gwP gwP -gwP -gwP -gwP +vle +qdx +xKL gwP gwP gwP @@ -32905,22 +36271,22 @@ gwP gwP gwP gwP -gwP -tOS -aca -gwP -gwP +hjo +kML +ukY +soY +wHh gwP gwP gwP aca -gwP -gwP -gwP -gwP -gwP -gwP -gwP +vle +qdx +cHW +dmT +grW +qdx +xKL gwP gwP gwP @@ -33010,8 +36376,8 @@ axi axj avH aBp -aBR -xTa +jIr +aCk ado aXX aXX @@ -33028,7 +36394,7 @@ kWH kWH kWH kWH -czq +kWH kWH kWH vdy @@ -33143,15 +36509,15 @@ gwP gwP mdQ mdQ -xZE -xZE -xZE -gwP -gwP -gwP +hhs +hhs +hhs +fLh +dmT +grW acp acp -gwP +xKL gwP gwP abO @@ -33264,7 +36630,7 @@ rAo fkJ fau xgE -efp +aWZ efp efp efp @@ -33371,16 +36737,16 @@ mdQ mdQ mdQ mdQ -mdQ -mdQ -xZE -xZE -xZE -gwP -gwP -xZE -xZE -gwP +onU +onU +hhs +hhs +hhs +dmT +dmT +hhs +eft +xKL gwP oMZ oMZ @@ -33493,7 +36859,7 @@ xgE sFY xgE xgE -eyb +bgL bgL bgL bgL @@ -33545,7 +36911,7 @@ abN abM abM abM -abM +amk abM abM abM @@ -33600,16 +36966,16 @@ mdQ mdQ mdQ mdQ -mdQ -mdQ +onU +onU acK -gwP -gwP -gwP -gwP -xZE -aca -aca +dmT +dmT +kCD +dmT +hhs +soz +jqr dFz oMZ aca @@ -33772,9 +37138,9 @@ tdX tdX abm abM -abM -abM -abM +amk +amk +amk abM abM abM @@ -33829,17 +37195,17 @@ mdQ mdQ mdQ mdQ -mdQ -mdQ -gwP -gwP -gwP -gwP -aYC -eGD -eGD -eGD -eGD +onU +onU +htV +dmT +dmT +dmT +sNq +rTT +rTT +nLF +rbs eGD eGD eGD @@ -33999,11 +37365,11 @@ aaW aaW aaW abm -abm -abm -abM -abM -abM +aaF +aaF +amk +amk +amk abM abM abM @@ -34058,16 +37424,16 @@ mdQ mdQ mdQ mdQ -mdQ -mdQ -mdQ -mdQ -mdQ -xZE -eGD -eGD -eGD -acq +onU +onU +onU +onU +onU +hhs +rTT +aIA +lhH +lkq eGD eGD eGD @@ -34147,7 +37513,7 @@ aym axi aza azG -aAk +bvq axi aBr axi @@ -34228,11 +37594,11 @@ aaw aaw aaw aaw -abm -abm -abm -abm -abM +aaF +aaF +aaF +aaF +amk abM abM abM @@ -34289,14 +37655,14 @@ mdQ abS abS abS -abS -abS -abS -abS -eGD -eGD -eGD -ufG +iIB +iIB +iIB +iIB +rTT +rTT +nLF +liI eGD eGD ufG @@ -34373,7 +37739,7 @@ axj axj axj ayG -azb +eot axi axj axj @@ -34459,9 +37825,9 @@ aaw aaw aaw aaw -abm -abm -abm +aaF +aaF +aaF abm abm abM @@ -34518,16 +37884,16 @@ abS abS abS abS -abS -abS -abS -eGD -adc -eGD -ufG -eGD +iIB +iIB +iIB +rTT +dAu +hkT +shb eGD eGD +gIe ufG eGD ufG @@ -34688,8 +38054,8 @@ aaw aaw aaw aaw -abm -abm +aaF +aaF abm abm abm @@ -34712,8 +38078,8 @@ mdQ mdQ mdQ mdQ -aca -xZE +jqr +sxl xZE acp acu @@ -34747,12 +38113,12 @@ abS abS abS abS -abS -abS -eGD -eGD -eGD -ufG +iIB +iIB +rmt +rTT +tde +vtk eGD acq eGD @@ -34860,7 +38226,7 @@ xgE sxY sxY xgE -cPV +aRf cPV uSq qIO @@ -34917,7 +38283,7 @@ aaw aaw aaw aaw -abm +aaF abm abm abm @@ -34940,8 +38306,8 @@ mdQ mdQ mdQ mdQ -gwP -gwP +fLh +uRe acp acu acu @@ -34976,10 +38342,10 @@ abS abS abS abS -abS -eGD -eGD -eGD +iIB +rTT +rTT +onP ufG eGD eGD @@ -35167,9 +38533,9 @@ mdQ mdQ mdQ mdQ -mdQ -tOS -gwP +onU +gRk +uRe acu acu acu @@ -35205,9 +38571,9 @@ abS abS abS abS -eGD -eGD -eGD +wzI +tde +uwG eGD eGD eGD @@ -35394,10 +38760,10 @@ acf mdQ mdQ mdQ -mdQ -mdQ -gwP -gwP +onU +onU +dmT +uRe acp acu acy @@ -35433,8 +38799,8 @@ abS ady ady ady -eGD -eGD +tde +uwG ufG hzR eGD @@ -35621,11 +38987,11 @@ acf acf acf acf -mdQ -mdQ -mdQ -gwP -gwP +onU +onU +onU +dmT +grW xZE acp acu @@ -35660,8 +39026,8 @@ abS abS ady eGD -eGD -eGD +fqi +uwG eGD ufG hzR @@ -35849,11 +39215,11 @@ acf acf acf acf -mdQ -mdQ -mdQ -gwP -gwP +onU +onU +onU +dOA +dmT xZE xZE acp @@ -36078,12 +39444,12 @@ acf acf acf mdQ +onU mdQ -mdQ -gwP -gwP -gwP -gwP +htV +dmT +grW +xKL xZE xZE xZE @@ -36121,11 +39487,11 @@ adP eGD acq eGD -eGD -eGD -acq -eGD -eGD +bje +gVw +vih +gVw +rbs eGD eGD eGD @@ -36225,7 +39591,7 @@ gnx gnx fzg pyG -wtK +paQ wJA wMk wMk @@ -36234,8 +39600,8 @@ uSq qIO qIO qIO -qIO -qIO +ctS +ctS ntL kxI kxI @@ -36285,7 +39651,7 @@ aah aaH aaw aaw -abm +aaF abm abm abm @@ -36308,10 +39674,10 @@ acf mdQ mdQ mdQ -uSF -gwP -gwP -gwP +iGx +dmT +cQB +uRe gwP gwP gwP @@ -36332,7 +39698,7 @@ eGD eGD eGD eGD -eGD +xTa abS abS abS @@ -36347,14 +39713,14 @@ eGD adP adP adP -eGD -eGD -eGD -eGD -eGD -eGD -eGD -eGD +bje +gVw +tMQ +rTT +mJF +rTT +nLF +rbs eGD ady ady @@ -36462,9 +39828,9 @@ uSq njC qIO qIO -qIO -qIO -ntL +ctS +sfg +vVe kxI jxG qZv @@ -36513,8 +39879,8 @@ aah aaH aaw aaw -abm -abm +aaF +aaF abm abm abm @@ -36536,14 +39902,14 @@ acf acf mdQ mdQ -xZE -xZE -gwP -tOS -gwP +hhs +hhs +uaL +iuf +jvQ abH -gwP -gwP +jvQ +xKL gwP gwP gwP @@ -36574,15 +39940,15 @@ eGD eGD eGD adP -adP -adP -eGD -eGD -eGD -eGD -eGD -eGD -eGD +daY +tPH +rTT +pIB +rTT +hpK +rTT +ohf +onP eGD ady abS @@ -36690,9 +40056,9 @@ uSq qIO qIO qIO -qIO -qIO -ntL +ctS +hLu +kxI kxI oAJ qZv @@ -36740,9 +40106,9 @@ aah aah aaH aaw -abm -abm -abm +aaF +aaF +aaF abm abm abm @@ -36765,15 +40131,15 @@ acf acf mdQ mdQ -xZE -xZE -xZE -xZE -gwP -gwP -gwP -gwP -gwP +hhs +hhs +hhs +hhs +dmT +dmT +grW +jvQ +xKL gwP gwP gwP @@ -36802,15 +40168,15 @@ acq eGD eGD eGD -adP -adP -eGD -eGD -abS -abS -abS -eGD -eGD +sVx +iDX +kdj +rTT +iIB +iIB +iIB +uOD +onP abS abS abS @@ -36919,8 +40285,8 @@ aPT aUk aPT aPt -qIO -ntL +hLu +kxI kxI gzd eqs @@ -36968,8 +40334,8 @@ aaU aah aaz aay -abm -abm +aaF +aaF abm abm abm @@ -36995,13 +40361,13 @@ acf mdQ mdQ mdQ -mdQ -mdQ -mdQ -gwP -gwP -gwP -gwP +onU +onU +onU +sXg +dmT +tlk +uRe gwP acf acf @@ -37029,12 +40395,12 @@ eGD eGD eGD eGD -eGD -eGD -eGD -eGD -abS -abS +bje +tMQ +rTT +rTT +iIB +iIB abS abS abS @@ -37143,9 +40509,9 @@ aPT aPT aPT aPt -aTG -aQn +vMC aQn +qNl aPt aPT aPT @@ -37196,7 +40562,7 @@ aah aah aah aaH -abm +aaF abm abm abm @@ -37224,12 +40590,12 @@ acf acf acf acf -acf -acf -acf -acf -dGQ -any +uxU +uxU +uxU +uxU +ryp +vbK dGQ acf acf @@ -37257,11 +40623,11 @@ eGD adc eGD eGD -eGD -abS -abS -abS +fqi abS +iIB +iIB +iIB abS abS abS @@ -37367,17 +40733,17 @@ bwR cPV bCH aPT +aWy +aXd aQn -aON -aQn -aQn -aQn -aQn +aTi +aTi aQn aQn +aTi aQn isR -aSg +vRe aPT ooM nuU @@ -37452,12 +40818,12 @@ acf acf acf acf -abl -abl -abl -abl -abl -abl +fDE +pAE +fDE +vAB +fDE +nUZ abl acf acf @@ -37484,7 +40850,7 @@ eGD eGD eGD eGD -eGD +xTa abS abS abS @@ -37600,12 +40966,12 @@ aQn aQn aQn aTH -aUl aQn aQn aQn aQn -aWX +aQn +uaz aPT kxI kxI @@ -37677,15 +41043,15 @@ acf acf acf acf -abl -abl -abl -abl -abl -abl -abl -abl -abl +pAE +fDE +fDE +sPK +ogJ +scs +scs +scs +jgy abl abl abl @@ -37821,19 +41187,19 @@ byY fTf nhi cPV -cPV +aRf aPT -aRe -aSd -aSI -aTg +aWA aQn +aON +aTg +iYL aQn aQn aTg -aWd -aSd -aWY +hJh +aQn +aTi aPT kxI kxI @@ -37904,12 +41270,12 @@ acf izh izh izh -izh -abl -abv -abl -abl -abl +ejp +scs +rIc +scs +scs +jgy abl abl abl @@ -38048,10 +41414,10 @@ ylL byY mun oGs -lud +oGs aPt aPt -aRf +euU aQn aTg aTg @@ -38060,8 +41426,8 @@ aQn aVb aTg aTg +aTG aQn -aWZ aPt aPt kxI @@ -38158,10 +41524,10 @@ abS abS eGD eGD -eGD -eGD -eGD -eGD +bje +gVw +gVw +rbs eGD acO eGD @@ -38278,19 +41644,19 @@ byY byY byY aPN +cNE +aTi aQn aQn aQn -aSJ -aTh -aQn aQn aQn -aTh -tYx aQn +cQU +aTi aQn aQn +xfa aPT kxI lAX @@ -38384,13 +41750,13 @@ abl abl abl dGQ -eGD -eGD -acY -eGD -eGD -eGD -eGD +bje +gVw +lbt +rTT +rTT +nLF +rbs acO eGD acq @@ -38508,9 +41874,9 @@ byY aPO aQn aQn +rkZ aQn -aQn -aQn +aTi vEj aTg rVH @@ -38576,7 +41942,7 @@ aaw aaw aaw aaw -abm +aaF abm abm acf @@ -38612,13 +41978,13 @@ abl abl abl dGQ -eGD -acq -eGD -eGD -eGD -eGD -eGD +wbg +xdb +rTT +mca +rTT +rTT +onP acO eGD eGD @@ -38733,20 +42099,20 @@ byY byY byY byY -aPN -aQn -aQn +aSK +aSI +aYh aQn aQn aTi -aQn -aQn -aQn aTi -aQn -aQn -aQn -aQn +qit +upp +jfN +jfN +gKN +xvz +elO aPT kxI lIU @@ -38804,8 +42170,8 @@ aaw aaw aaw aaw -abm -abm +aaF +aaF acf acf acf @@ -38840,13 +42206,13 @@ abl abl abl dGQ -eGD -eGD -eGD +wbg +rTT +rTT +iIB +iIB abS -abS -abS -eGD +onP acO eGD eGD @@ -38928,7 +42294,7 @@ auV atU avE atp -wAe +awr atU axH aum @@ -38963,16 +42329,16 @@ byY taK aPt aPt -aTI +aQn aQn aTg aTg -aTI -aQn -aVb +kKL +aXn +qap aTg aTg -aTG +cyP aXa aPt aPt @@ -39031,8 +42397,8 @@ aaw aaw abm abm -abm -abm +aaF +aaF abm acf acf @@ -39070,8 +42436,8 @@ abl izh abS abS -abS -abS +iIB +iIB abS abS abS @@ -39188,27 +42554,27 @@ uiN byY byY byY -fTf +aUl aPT aRi +aTi aQn aQn -aSK aTg aTJ -aQn -aQn +aZG +qNz aTg aWe -aWx -aZc +kvv +kvv aPT kxI kxI awQ qtj qtj -hLu +xVN tsa tsa aac @@ -39258,8 +42624,8 @@ aaw aaw aaw abm -abm -abm +aaF +aaF abm abm acf @@ -39416,28 +42782,28 @@ uiN byY byY byY -fTf +aUl aPT aSe +aWE +aXn aQn aQn -aQn -aQn -aQn +oiR aZK -aQn -aQn -aQn -aQn +qNz +kvv +kvv +kvv aZh aPT kxI kxI dEc pcA -azB -vOD -kGk +qtj +qtj +tsa tsa aac aaa @@ -39486,7 +42852,7 @@ aaw aaw aaw abm -abm +aaF abm acf acf @@ -39644,28 +43010,28 @@ uiN byY byY byY -fTf +aUl aPT -aQn +aSJ aTk +aXe aQn aQn -aTj -aQn -aQn -aQn -aTH -aQn aQn aQn +qNz +qez +kvv +fij +oIO aPT sBJ kxI kxI ayU -unT -wXg -kGk +qtj +qtj +tsa tsa aac aaa @@ -39713,8 +43079,8 @@ aaw aaw aaw aaw -abm -abm +aaF +aaF abm acf acf @@ -39764,8 +43130,8 @@ abS abS abS abS -eGD -acq +gVw +jpX eGD abS abS @@ -39867,33 +43233,33 @@ aLv aJr iSg aJr -aJr +aCV aIO aMN aNA aMN aIO aPt -aTI -aQn -aQn +aWd +aSJ +aZG aQn -aPt aQn aQn aQn +qNz +kvv +dHr +bUc aPt -aPT -aPT -aPN aPt tzK kxI kxI -ooM -unT -kGk -kGk +kXE +qtj +tsa +tsa tsa aac aaa @@ -39941,7 +43307,7 @@ aaw aaw aaw aaw -abm +aaF abm abm acf @@ -39992,8 +43358,8 @@ abS abS abS abS -acO -acO +bBT +rze acO abS abS @@ -40101,20 +43467,20 @@ aMO aKB aMP aIO -aSg +aSd +aTj +aWX +eyb aQn aQn aQn aQn -aPt -aPT -aUk -aPT -aPt -aTK -aTK -aXd -aXn +nrK +kvv +kvv +qXt +tMP +kxI kxI tsa kxI @@ -40169,8 +43535,8 @@ aaw aaw aaw aaw -abm -abm +aaF +aaF abm acf acf @@ -40220,11 +43586,11 @@ abS abS abS abS +rTT +nLF +rbs eGD -eGD -eGD -eGD -eGD +xTa abS abS wVk @@ -40329,20 +43695,20 @@ aMP aNB aNJ aIO +aUt aIL -aIL -aIO +aWY aRe -aQn -aPT -aTK -aTK -aTK -aTK -aTK -aWy -aXe -aXn +tzP +bJe +ukS +aTi +hOo +vJM +kvv +pzP +lQP +kxI kxI kxI kxI @@ -40397,8 +43763,8 @@ aax aaE aaw aaw -abm -abm +aaF +aaF abm acf acf @@ -40446,11 +43812,11 @@ abS abS abS abS -abS -eGD -eGD -eGD -eGD +iIB +rTT +kdj +rTT +onP eGD eGD abS @@ -40562,15 +43928,15 @@ aQo aJz aIO aSg -aPT -aTK +aPt aTK +oRY aSL +aWf aVB aWf -fFN aSL -aXn +sBJ kxI kxI lUc @@ -40620,13 +43986,13 @@ aaH aaw aaw aaw +oHU aaw aaw -aaw -aaw -aaw -abm -abm +cDr +jeL +aaF +aaF abm acf acf @@ -40673,12 +44039,12 @@ abS abS abS abS -abS -abS -eGD -eGD -eGD -eGD +iIB +iIB +rTT +rTT +rTT +onP eGD eGD abS @@ -40698,7 +44064,7 @@ ajW afI ajW ajW -agC +ajW afN ajW ajW @@ -40789,14 +44155,14 @@ aEt aQp aRo aIO -aSg +kWX aSL aSL aSL aSL rmg aTq -aWA +aTq aSL aSL aVB @@ -40850,10 +44216,10 @@ aaw aaw aaw aaw -aaw -aaw -aaw -abm +wwI +wbM +jeL +aaF abm abm acf @@ -40900,13 +44266,13 @@ abS abS abS abS -abS -abS -abS -eGD -eGD -eGD -eGD +iIB +iIB +iIB +mca +rTT +tde +uwG eGD eGD abS @@ -41022,9 +44388,9 @@ aSL aVg tem aVd -aTM +kzp +aTq aTq -aZG aSX aZI aXJ @@ -41077,10 +44443,10 @@ aay aaw aaw aaw -aaw -aaw -aaw -aaw +wbM +kbn +wbM +jeL abm abm abm @@ -41128,12 +44494,12 @@ abS abS abS abS -abS -eGD -eGD -eGD -eGD -eGD +iIB +rTT +rTT +rTT +rTT +onP acq eGD eGD @@ -41251,12 +44617,12 @@ ogR aUs nwR aTM -aTM -aTM +aTq +kzp aXf aTM aTM -aXW +mBH aVB kxI kxI @@ -41305,10 +44671,10 @@ aaz aay aaw aaw -aaw -aaw -aaw -aaw +wwI +hpG +wbM +jeL abm abm abm @@ -41358,11 +44724,11 @@ abS abS abS abS -eGD -acq -eGD +rTT +xdb +rTT acY -eGD +rbs eGD eGD abS @@ -41474,12 +44840,12 @@ aQs aQo aSi mkU -qGR +lud aWD aUq aTN aTM -aTM +fMa aUo aSX aZJ @@ -41533,10 +44899,10 @@ aah aaH aaw aaw -aaw -aaw -aaw -aaw +wbM +wbM +wwI +jeL abm abm abm @@ -41585,12 +44951,12 @@ abS abS abS abS -eGD -eGD -eGD -eGD -eGD -eGD +wzI +aIA +rTT +rTT +rTT +onP eGD eGD abS @@ -41702,13 +45068,13 @@ aQt aQo aSj qGR -mkU +jdL aWD aUq aTN udM aTM -aWE +aUx aSX aSX aSX @@ -41762,9 +45128,9 @@ aaH aaw aaw aaw -aaw -aaw -aaw +cDr +jeL +jeL abm abm abm @@ -41814,11 +45180,11 @@ abS abS abS abS -abS -eGD -eGD -eGD -eGD +iIB +rTT +rTT +rTT +onP eGD eGD abS @@ -41833,7 +45199,7 @@ jaa wVk wVk afx -afM +agf ajW agi ajW @@ -41843,7 +45209,7 @@ agT ahh ahl afN -agC +ajW ahS afk wVk @@ -41941,7 +45307,7 @@ aSX aZd aZx aXZ -aYh +vYL aVB kxI kxI @@ -42042,11 +45408,11 @@ abS abS abS abS -abS -abS -eGD -eGD -eGD +iIB +iIB +rTT +uxL +onP eGD abS abS @@ -42162,14 +45528,14 @@ aSL aVf jMk aWg -aTM -aTM +lzW +kyz aWF aSX -aXs +svv aTM aZM -aTM +vYL aXg kyN kxI @@ -42271,10 +45637,10 @@ abS abS abS abS -abS -eGD -eGD -eGD +iIB +rTT +rTT +onP eGD abS abS @@ -42391,9 +45757,9 @@ aSX aSX aSX aXs +drX aTM -aTM -aXg +ydX aTM aVC aTM @@ -42499,10 +45865,10 @@ abS abS abS abS -abS -eGD -eGD -eGD +iIB +rTT +cxi +onP eGD abS abS @@ -42616,12 +45982,12 @@ aJz aSL aTs aTP -aUt +bLH aSX aVF -aTM -aTM -aXg +iiO +uXT +oas aTM aTM aZf @@ -42728,10 +46094,10 @@ abS abS abS abS -eGD -eGD -eGD -eGD +rTT +rTT +nLF +rbs eGD abS abS @@ -42847,12 +46213,12 @@ aTR aUu aSX aVG -aTM +vdl aWG aSX aXt aWi -aYc +bQf aVB dEp kxI @@ -42955,11 +46321,11 @@ abS abS abS abS -eGD -eGD -eGD -acq -eGD +rTT +rTT +hpK +xdb +onP eGD abS abS @@ -42978,7 +46344,7 @@ ajW agl ajW ajW -agC +ajW ajW afN eah @@ -43071,11 +46437,11 @@ xuk oUy aSL aTu -aZM -aTM +fLf +fQx aVj -aTM -aWi +mkZ +hDe aWH aSX aXu @@ -43182,12 +46548,12 @@ abS abS abS abS -eGD -eGD -eGD -eGD -eGD -eGD +brC +rTT +rTT +rTT +rTT +onP eGD abS abS @@ -43300,7 +46666,7 @@ mNO fFN aTM aTM -aUx +fAs aSX aVH aTq @@ -43378,12 +46744,12 @@ abl abl abl abl -abl -abl -abl -abl -abl -abl +gPu +jcn +jcn +jcn +jcn +jcn acf acf acf @@ -43410,12 +46776,12 @@ abS abS abS abS -eGD -eGD -acq -eGD -eGD -eGD +rTT +rTT +xdb +rTT +lnr +onP eGD abS abS @@ -43606,12 +46972,12 @@ abv abl abl abl -abl -abl -abl -abl -abl -abl +xWy +cqH +fDE +bvX +fDE +fDE acf acf acf @@ -43639,11 +47005,11 @@ abS abS abS abS -eGD -eGD -eGD -eGD -eGD +rTT +mOL +rTT +tde +uwG eGD abS abS @@ -43758,7 +47124,7 @@ aSm aSm oUy aSL -hHc +aVB aWf aVB aSL @@ -43836,10 +47202,10 @@ abl abl acf acf -acf -dGQ +uxU +ryp uMz -dGQ +ryp acf acf acf @@ -43867,10 +47233,10 @@ abS abS abS abS -eGD -eGD -eGD -eGD +ohf +rTT +rTT +onP eGD abS abS @@ -44064,11 +47430,11 @@ acf acf acf acf -acf -acf -abl -abl -abl +uxU +uxU +fDE +gcB +fDE acf acf acf @@ -44094,11 +47460,11 @@ abS abS abS abS -abS -eGD -eGD -acq -eGD +iIB +rTT +rTT +xdb +onP eGD abS abS @@ -44293,10 +47659,10 @@ acf acf acf acf -acf -abl -abl -abl +uxU +fDE +tti +fDE acf acf acf @@ -44321,12 +47687,12 @@ abS abS abS abS -abS -abS -eGD -eGD -eGD -eGD +iIB +iIB +rTT +rmt +rTT +onP abS abS abS @@ -44521,15 +47887,15 @@ acf acf acf acf -acf -abl -abv -abl -abl -acf +uxU +fDE +otl +fDE +fDE acf acf -abl +uxU +fDE acf acf acf @@ -44539,7 +47905,7 @@ abl abl abv abl -abl +gPu abS abS abS @@ -44548,13 +47914,13 @@ abS abS abS abS -abS -abS -abS -eGD -eGD -eGD -eGD +iIB +iIB +iIB +rTT +rTT +rTT +onP abS abS abS @@ -44750,24 +48116,24 @@ acf acf acf acf -abl -abl -abl -abl -acf +fDE +fDE +fDE +fDE +uxU +uxU +uxU +hez +fDE +spK acf acf -abl -abl -abl -acf acf acf -acf -abl abl abl abl +kxv abS abS abS @@ -44777,10 +48143,10 @@ abS abS abS abS -abS -abS -cIU -cIU +iIB +iIB +hav +hav cIU abS abS @@ -44869,7 +48235,7 @@ oUy aMD bbJ bbO -aCV +oUy aDS aDS aFh @@ -44979,15 +48345,15 @@ acf acf acf acf -abl -abl -abl -abl -acf -acf -abl -abl -abl +fDE +fDE +fDE +czq +uxU +uxU +rUX +fDE +spK abl acf acf @@ -44995,8 +48361,8 @@ acf abl abl abl -abl -abl +kxv +han abS abS abS @@ -45007,9 +48373,9 @@ abS abS abS abS -pDt -pDt -pDt +aTy +aTy +tYW abS pDt pDt @@ -45208,14 +48574,14 @@ acf acf acf acf -abl -abl -abl -acf -izh -abl -abv -abl +fDE +fDE +fDE +uxU +mrg +fDE +poX +jgy acf acf acf @@ -45223,9 +48589,9 @@ abl abl abl abl -abl -abl -abS +uMd +bvX +iIB abS abS abS @@ -45436,13 +48802,13 @@ acf acf acf acf -izh -abl -abl -abv -dGQ -abl -abl +mrg +fDE +fDE +otl +ryp +ogJ +jgy abl acf acf @@ -45450,16 +48816,16 @@ acf abl abl abl -abl -abl -abS -abS -abS -abS +kxv +fDE +iIB +iIB abS abS abS abS +iIB +iIB abS abS abS @@ -45664,12 +49030,12 @@ acf acf acf acf -izh -abl -abl -abl -izh -abl +mrg +sPK +fDE +fDE +mrg +spK abl abl abl @@ -45679,16 +49045,16 @@ abl abv abl abl -abl +uOl ydz -pDt -pDt -pDt -pDt -abS -abS -pDt -pDt +eQL +eQL +eQL +pgc +iIB +iIB +bOm +xhv abS pDt pDt @@ -45893,11 +49259,11 @@ acf acf acf acf -abl -abl -abl -izh -abl +fDE +fDE +fDE +mrg +spK abl abl abl @@ -45907,16 +49273,16 @@ abl abl abl abl -abl -ydz -pDt -qRj -pDt -pDt -pDt -pDt -pDt -pDt +bnM +lIL +aTy +xNi +aTy +bxb +eQL +eQL +eQL +xhv pDt pDt pDt @@ -46121,30 +49487,30 @@ acf acf acf acf -acf -abl -abl -dGQ -abl -abl +uxU +tti +fDE +ryp +spK abl -abl -dGQ -abl -abl -abl -abl -abl -abl -ydz -pDt -pDt -pDt -pDt -pDt -pDt +gPu +jcn +ner +jcn +jcn +jcn +jcn +jcn +jcn +dLm +kae pDt pDt +kpx +aTy +aTy +aTy +tYW pDt pDt pDt @@ -46347,32 +49713,32 @@ acf acf acf acf +uxU +uxU +uxU +fDE +fDE acf -acf -acf -abl -abl -acf -abl -abl -abv -abl -dGQ -abl -abl -abl -abl -abl -abl +xRe +kLl +cqN +fDE +ryp +fDE +fDE +fDE +fDE +osf +hNT ydz +xhv pDt pDt -pDt -pDt -pDt -pDt -pDt -qRj +dCD +hmJ +hmJ +hmJ +enn pDt pDt pDt @@ -46574,33 +49940,33 @@ acf acf acf acf +uxU +uxU +fDE +fDE +fDE +fDE acf acf -abl -abl -abl -abl -acf -acf -abl -abl -abl -acf -acf -abl -abl -abl -abv -abl +fDE +icd +fDE +uxU +uxU +fDE +fDE +han +otl +fDE acf +xhv pDt -pDt -pDt -pDt -pDt -pDt -pDt -pDt +dCD +cEi +wpY +eQL +eQL +xhv pDt oeN oeN @@ -46799,36 +50165,36 @@ abv abl abl acf -abl -abl -acf -acf -abl -abl -abl -abl -abl -acf -acf -abl -abl -abl +xWy +fDE acf +uxU +fDE +fDE +yjs +fDE +fDE acf acf -abl -abl +fDE +cSL +fDE +uxU acf acf +fDE +mVr +uxU +uxU acf +tYW pDt -pDt -pDt -pDt -pDt -nbw -iZG -pDt +crn +eQL +eQL +ntr +hEe +xhv pDt oeN adC @@ -47027,36 +50393,36 @@ abl abl abl abl -abl -abl -dGQ -abl -abl -abl -abl -abl +xWy +cSL +ryp +fDE +fDE +pVZ +fDE +fDE acf acf +uxU +fDE +fDE +fDE +fDE acf -abl -abl -abl -abl -acf -acf -abl -abl acf +fDE +fDE +uxU acf acf nbw pDt -pDt -nbw +crn nbw -nbw -pDt -pDt +ntr +ntr +nNu +xhv pDt oeN adD @@ -47255,26 +50621,26 @@ abl abl abl abl -abl -abl -dGQ -abl -abl -abl -abl -abl -abl -acf -acf -acf -abl -abl -abl -acf +bnM +uOl +ryp +fDE +fDE +fDE +fDE +ogJ +jgy acf +uxU +uxU +fDE +ogJ +tYx acf acf acf +uxU +uxU acf acf nbw @@ -47282,9 +50648,9 @@ nbw nbw nbw nbw -pDt -pDt -pDt +eQL +eQL +xhv pDt oeN adE @@ -47484,19 +50850,19 @@ abl abl abv abl +bnM +oha +rWs +rWs +rWs +vBd +jgy abl -dGQ -abl -abl -abl -abv -abl -abl -acf acf -abl -abl -abv +uxU +osf +fDE +qWI abl acf acf @@ -47509,10 +50875,10 @@ acf nbw nbw nbw -pDt -pDt -pDt -qRj +aTy +aTy +aTy +hRB pDt oeN abt @@ -47688,9 +51054,9 @@ aaE aaw aaw aaw -aaF -aaF -aaF +abm +abm +abm aaF aaF abm @@ -47722,9 +51088,9 @@ abl abl acf acf -abl -abl -abl +fDE +ogJ +jgy abl acf acf @@ -47918,7 +51284,7 @@ aaw aaw aaF aaF -aaF +abm aaF aaF abm @@ -47944,14 +51310,14 @@ acf acf acf acf -abl -abl -abl +kLl +kLl +kLl abl acf acf acf -abl +jgy abl abl acf @@ -48144,10 +51510,10 @@ aaw aaw aaw aaw -abm -abm -abm -abm +aaF +aaF +aaF +aaF abm abm abm @@ -48171,11 +51537,11 @@ acf acf acf acf -acf -abl -abl -abl -abl +uxU +fDE +roQ +fDE +spK abl acf abl @@ -48373,8 +51739,8 @@ aaw aaw aaw abm -abm -abm +aaF +aaF abm abm abm @@ -48398,12 +51764,12 @@ acf acf acf acf -acf -acf -izh -abl -abl -abv +uxU +uxU +mrg +fDE +fDE +qWI abl abl abl @@ -48601,235 +51967,7 @@ aaw aaw aaw abm -abm -acf -acf -acf -acf -acf -acf -acf -acf -acf -acf -acf -acf -acf -acf -acf -izh -abl -abl -abl -izh -acf -acf -acf -acf -acf -acf -izh -abl -abl -abl -abl -abl -abl -abl -abl -izh -acf -acf -acf -acf -ecy -adn -jWM -ecy -ecy -wSi -ecy -ecy -jWM -rGd -pHn -pDt -qRj -pDt -pDt -pDt -pDt -pDt -ugG -qRj -aen -xNK -xNK -qjf -qjf -hhU -qjf -qjf -qjf -qjf -aex -qjf -qjf -gzo -gzo -nIA -lQC -lQC -lQC -lQC -lQC -lQC -lQC -lQC -iXj -aiA -nOD -ajh -ajs -sqj -sqj -sqj -sqj -sqj -rit -dVH -oRH -fuY -cpY -cpY -cpY -guY -cpY -vSG -vSG -vtt -cwV -fuY -fuY -lSs -lSs -fuY -vSG -vjH -vSG -vtt -fuY -fuY -oER -gYs -jRm -jRm -jRm -jRm -jRm -jRm -jRm -jRm -jRm -jRm -jRm -jRm -jRm -jRm -ayu -azu -azu -azt -azt -azt -aCa -aCx -aCX -aDw -aCX -aER -aFt -aFT -aFt -aGN -aHh -abV -aHK -aJe -aJJ -aKy -aKM -aHK -aMh -aNj -aFt -aOM -aPx -aQa -aFt -aRN -aFt -aSV -aHh -aUa -aUH -azt -azt -azt -aWM -yle -yle -yle -yle -cqw -kxI -kxI -kxI -tsa -tsa -aac -aaa -aaa -aaa -aaa -"} -(120,1,1) = {" -aac -abm -abm -abm -abm -abm -abm -abm -abm -abm -aaw -aaw -aaw -aaw -aaw -aaw -aaw -aaw -aaw -aaw -aaw -aaw -aaF -aaF -aaF -aaF -aaw -aaw -aaw -aaw -aaw -aaw -aaw -aaw -abm -abm +aaF acf acf acf @@ -48847,18 +51985,246 @@ acf acf izh abl -abv +abl abl izh acf acf acf acf +uxU +uxU +mrg +thk +ogJ +jgy +abl +abl +abl +abl +abl +izh +acf +acf +acf +acf +ecy +adn +jWM +ecy +ecy +wSi +ecy +ecy +jWM +rGd +pHn +pDt +qRj +pDt +pDt +pDt +pDt +pDt +ugG +qRj +aen +xNK +xNK +qjf +qjf +hhU +qjf +qjf +qjf +qjf +aex +qjf +qjf +gzo +gzo +nIA +lQC +lQC +lQC +lQC +lQC +lQC +lQC +lQC +iXj +aiA +nOD +ajh +ajs +sqj +sqj +sqj +sqj +sqj +rit +dVH +oRH +fuY +cpY +cpY +cpY +guY +cpY +vSG +vSG +vtt +cwV +fuY +fuY +lSs +lSs +fuY +vSG +vjH +vSG +vtt +fuY +fuY +oER +gYs +jRm +jRm +jRm +jRm +jRm +jRm +jRm +jRm +jRm +jRm +jRm +jRm +jRm +jRm +ayu +azu +azu +azt +azt +azt +aCa +aCx +aCX +aDw +aCX +aER +aFt +aFT +aFt +aGN +aHh +abV +aHK +aJe +aJJ +aKy +aKM +aHK +aMh +aNj +aFt +aOM +aPx +aQa +aFt +aRN +aFt +aSV +aHh +aUa +aUH +azt +azt +azt +aWM +yle +yle +yle +yle +cqw +kxI +kxI +kxI +tsa +tsa +aac +aaa +aaa +aaa +aaa +"} +(120,1,1) = {" +aac +abm +abm +abm +abm +abm +abm +abm +abm +abm +aaw +aaw +aaw +aaw +aaw +aaw +aaw +aaw +aaw +aaw +aaw +aaw +aaF +aaF +aaF +aaF +aaw +aaw +aaw +aaw +aaw +aaw +aaw +aaw +aaF +aaF +acf +acf +acf +acf +acf +acf +acf +acf +acf +acf +acf +acf +acf acf acf izh abl +abv abl +izh +acf +acf +acf +acf +uxU +acf +mrg +kIM +spK abl abl abv @@ -49056,7 +52422,7 @@ aaw aaw aaw aaw -abm +aaF abm acf acf @@ -49084,9 +52450,9 @@ acf acf acf acf -izh -abl -abl +mrg +fDE +spK abl abl abl @@ -49311,10 +52677,10 @@ acf acf acf acf -izh -izh -abl -abl +mrg +mrg +ogJ +jgy abl abl abl @@ -49539,9 +52905,9 @@ acf acf acf acf -izh -abl -abl +iTQ +rWs +jgy abv abl abl @@ -49767,7 +53133,7 @@ acf acf acf acf -izh +jZX abl abl abl @@ -50908,8 +54274,8 @@ acf acf acf acf -dGQ -any +oFJ +sLU dGQ acf acf @@ -51135,10 +54501,10 @@ pUm pUm pUm pUm -pUm -acg -acg -acg +vVC +bvj +mHk +egU pUm whU whU @@ -51352,21 +54718,21 @@ acf acf acf acf +vVC pUm pUm -pUm +iye +dtr acg -aaN -acg -pUm -pUm pUm pUm pUm pUm -acg -acg -acg +vVC +vVC +uop +bvj +xar pUm whU whU @@ -51402,7 +54768,7 @@ ahv slW uFA nPk -urR +pbG nUs uFA aeg @@ -51579,22 +54945,22 @@ acf acf acf acf -acf -pUm -pUm -acg -acg -acg -acg -pUm +uxU +vVC +vVC +fYG +bvj +mHk +iye pUm pUm pUm pUm -pUm -acg -acg -acg +vVC +vVC +rhi +etU +xar pUm whU whU @@ -51806,33 +55172,33 @@ acf acf acf acf +vVC +vVC +vVC +vVC +bvj +jRL +bvj +bvj pUm pUm pUm pUm -acg -acg -acg -acg -pUm -pUm -pUm -pUm -pUm -acg -acg -aaN -acg +vVC +bvj +bvj +jgj +dLW pUm whU whU whU whU fTM -fTM -fTM -fTM -fTM +lSA +yfe +yfe +uyn fTM fTM fTM @@ -52034,22 +55400,22 @@ pZb acf acf pUm +vVC +vVC +vVC +bvj +bvj +pQV +bvj pUm pUm pUm -acg -acg -acg -acg -pUm pUm pUm -pUm -pUm -pUm -acg -acg -acg +vVC +xwN +wCs +dLW acg pUm whU @@ -52058,20 +55424,20 @@ whU whU whU whU -fTM -fTM -fTM -fTM -akL -fTM -fTM -fTM -fTM +vAT +wLT +lBl +yfe +bQz fTM fTM fTM fTM fTM +lSA +eMe +eMe +uyn vCG pDt pDt @@ -52262,249 +55628,249 @@ pZb pZb pUm pUm +vVC +vVC +vVC +bvj +oQm +bvj pUm pUm -pUm -acg -aaN -acg -pUm -pUm -pUm -pUm -pUm -pUm -pUm -acg -acg -acg -pUm -pUm -whU -whU -whU -whU -whU -whU -whU -fTM -fTM -fTM -fTM -fTM -jMS -jMS -fTM -fTM -fTM -fTM -fTM -fTM -vCG -pDt -pDt -iZG -pDt -pDt -pDt -ahv -ahv -ahv -aeg -uDd -iSa -mhZ -mhZ -mhZ -pEV -uFA -cRm -rYA -agX -ahv -ahv -ahv -ahv -ahv -ahv -agX -xch -xch -xch -xch -xch -rGZ -xch -xch -xch -xch -ajx -ajJ -akb -akt -akD -akP -akt -akD -alK -ama -cpY -dmZ -dmZ -cpY -cpY -cpY -cpY -dNx -cwV -fuY -fuY -fuY -cpY -cpY -cpY -cpY -cpY -aqG -aqW -aqW -arH -aqW -aqW -aqW -asj -asj -asA -asj -avc -ask -ask -ask -ask -arK -axY -abY -atH -ati -ati -wWs -ati -ruB -ati -aAD -ati -axZ -aEf -aEg -aEg -aEg -aGx -aGP -azt -azt -azt -azv -azt -azt -azt -azt -azt -acs -aMl -aOR -aPD -aPD -aPD -aNo -aNo -aky -apu -apu -apu -apu -apu -fir -jzZ -wpw -buL -mZf -bCT -wpw -wpw -wpw -cMj -lBw -lBw -aac -aaa -aaa -aaa -aaa -"} -(136,1,1) = {" -aac -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -aag -aag -aag -aai -aag -aag -aag -aag -aag -aag -aag -aag -aag -aab -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pZb -pUm -pUm -pUm -pUm -acg -acg -acg +pUm +pUm +pUm +pUm +pUm +bvj +xar acg pUm pUm +whU +whU +whU +whU +whU +whU +unp +vAT +lNG +vAT +lBl +uyn +jMS +jMS +fTM +lSA +bkK +vAT +vAT +lBl +vCG +pDt +pDt +iZG +pDt +pDt +pDt +ahv +ahv +ahv +aeg +uDd +iSa +mhZ +mhZ +mhZ +pEV +uFA +cRm +rYA +agX +ahv +ahv +ahv +ahv +ahv +ahv +agX +xch +xch +xch +xch +xch +rGZ +xch +xch +xch +xch +ajx +ajJ +akb +akt +akD +akP +akt +akD +alK +ama +cpY +dmZ +dmZ +cpY +cpY +cpY +cpY +dNx +cwV +fuY +fuY +fuY +cpY +cpY +cpY +cpY +cpY +aqG +aqW +aqW +arH +aqW +aqW +aqW +asj +asj +asA +asj +avc +ask +ask +ask +ask +arK +axY +abY +atH +ati +ati +wWs +ati +ruB +ati +aAD +ati +axZ +aEf +aEg +aEg +aEg +aGx +aGP +azt +azt +azt +azv +azt +azt +azt +azt +azt +acs +aMl +aOR +aPD +aPD +aPD +aNo +aNo +aky +apu +apu +apu +apu +apu +fir +jzZ +wpw +buL +mZf +bCT +wpw +wpw +wpw +cMj +lBw +lBw +aac +aaa +aaa +aaa +aaa +"} +(136,1,1) = {" +aac +pZb +pZb +pZb +pZb +pZb +pZb +pZb +pZb +pZb +pZb +pZb +pZb +pZb +pZb +pZb +pZb +pZb +aag +aag +aag +aai +aag +aag +aag +aag +aag +aag +aag +aag +aag +aab +pZb +pZb +pZb +pZb +xpR +xpR +pZb +pZb +pZb +pZb +pZb +pZb +pZb +pZb pUm pUm pUm +vVC +bvj +mfn +bvj +bvj pUm pUm -gkC -nzw +pUm +pUm +pUm +pUm +pUm +nha +tEm gkC pUm pUm @@ -52514,19 +55880,19 @@ whU whU whU whU -whU -whU -whU -fTM -fTM -fTM -jMS -jMS -akL -fTM -fTM -fTM -fTM +unp +unp +unp +wLT +vAT +lBl +vAg +pGL +tSi +bkK +vAT +jJg +nrR whU whU pDt @@ -52704,12 +56070,12 @@ aag pZb pZb pZb -aag -pZb -pZb -pZb -pZb -pZb +uYj +xpR +xpR +xpR +xpR +xpR pZb pZb pZb @@ -52720,10 +56086,10 @@ pUm pUm pUm pUm -acg -acg -acg -acg +bvj +bvj +bvj +ifr pUm nzw nzw @@ -52744,17 +56110,17 @@ whU whU whU whU +unp +unp +vAT +vAT +vAT +vAT +vAT +vAT whU -whU -fTM -fTM -fTM -fTM -fTM -fTM -whU -whU -whU +unp +unp whU whU pDt @@ -52772,7 +56138,7 @@ pEV mhZ mhZ mhZ -pEV +dID kbr jFc rYA @@ -52921,24 +56287,24 @@ aag aag aag aag -aag -aag -aag -aag -aag -aag -aag -aag -pZb -pZb -pZb -aag +tVw +srn +srn +srn +pRD aag aag aag pZb pZb pZb +uYj +eqS +uYj +tuJ +xpR +xpR +xpR pZb pZb pZb @@ -52947,12 +56313,12 @@ pZb pUm pUm pUm -acg -acg -acg -acg -acg -acg +rID +woT +woT +woT +woT +dLW acg acg acg @@ -52973,15 +56339,15 @@ whU whU whU whU -fTM -fTM -akL -fTM -fTM -fTM -whU +vAT +sxo +rby +vAT +vAT +jMD whU whU +unp whU whU whU @@ -53078,7 +56444,7 @@ ati wWs ati aDE -uns +atE asN aFG aFZ @@ -53149,24 +56515,24 @@ aag aag aag aag -aag -aag -aag -aai -aag -aag +dzM +uYj +tuJ +gzH +qfK +pRD aag aag aag pZb pZb -aag -aag -aag -aag -aag -aag -aag +uYj +uYj +uYj +mWA +uYj +uYj +uYj pZb pZb pZb @@ -53200,13 +56566,13 @@ whU whU whU whU -fTM -fTM -fTM -fTM -fTM -fTM -fTM +jlt +jlt +jlt +jlt +jlt +jlt +pET whU whU whU @@ -53376,27 +56742,27 @@ aai aag aag aag -aag -aai -aag -aag -aag -aag -aag +tVw +vxj +uYj +uYj +dHg +uYj +rIm aag aai aag vly -aag -aag -aag -aag -aag -aag -aag -aag -aag -aag +wYB +pFB +pFB +fsc +uYj +uYj +uYj +dIv +uYj +uYj pZb pZb pZb @@ -53439,9 +56805,9 @@ whU whU whU whU -fTM -fTM -fTM +yfe +yfe +uyn fTM fTM fTM @@ -53603,14 +56969,14 @@ aag aag aag aag -aag -aag -aag -aag -pZb -aag -aag -aag +tVw +uHc +uYj +uYj +xpR +uYj +uYj +rIm aag aag aag @@ -53618,15 +56984,15 @@ vly aag aai aag -aag -aag -aai -aag -aag -aag -aag -aag -aag +wYB +pFB +sET +pFB +pFB +pFB +pFB +pFB +mFZ vly acg acg @@ -53668,8 +57034,8 @@ whU whU whU whU -fTM -fTM +vAT +fIW fTM fTM fTM @@ -53830,15 +57196,15 @@ aag aag aag aag -aag -aag -aag -aag -pZb -pZb -aag -aag -aag +tVw +uHc +uYj +eYb +xpR +xpR +uYj +uYj +rIm aag aag aag @@ -53856,11 +57222,11 @@ aag aag aag vly -acg -acg -acg -acg -acg +cop +iye +iye +iye +egU acg acg acg @@ -53896,8 +57262,8 @@ whU whU whU whU -fTM -fTM +fUj +fIW aeT fTM fTM @@ -54058,15 +57424,15 @@ aag aag aag aag -aag -aag -aab -pZb -pZb -pZb -aag -aag -aag +dzM +uYj +rYe +xpR +xpR +xpR +uYj +uYj +rIm aag aag aag @@ -54082,14 +57448,14 @@ aag aag aag aag -aag -vly -acg -acg -acg -acg -acg -acg +tVw +cqC +kmH +mLv +bvj +bvj +elp +egU acg acg acg @@ -54114,8 +57480,7 @@ jMS jMS fTM fTM -fTM -whU +uns whU whU whU @@ -54123,9 +57488,10 @@ whU whU whU whU -fTM -fTM -fTM +unp +vAT +vAT +fIW fTM sIH fTM @@ -54286,15 +57652,15 @@ aag aag aag aai -aag -aab -aab -pZb -pZb -aab -aag -aag -aag +dzM +rYe +rYe +xpR +xpR +rYe +uYj +anM +rIm aag aag aag @@ -54310,15 +57676,15 @@ aag aag aai aag -aag -vly -acg -acg -aaN -acg -acg -acg -acg +jBl +vdt +bvj +bvj +oQm +bvj +mfn +mHk +egU acg acg acg @@ -54350,10 +57716,10 @@ whU whU whU whU -whU -whU -fTM -fTM +unp +unp +vAT +fIW fTM agd afE @@ -54514,15 +57880,15 @@ aag aag aag aag -aab -aab +eaI +rYe pZb +xpR pZb -pZb -aab -aag -aag -aag +rYe +tuJ +uYj +rIm aag aag aag @@ -54538,15 +57904,15 @@ aag aag aag aag -aag -aci -pUm -pUm -pUm -pUm -acg -acg -acg +jBl +xSk +vVC +vVC +vVC +vVC +bvj +fmV +oDE acg acg pUm @@ -54579,9 +57945,9 @@ whU whU whU whU -whU -fTM -fTM +unp +rGE +fIW akL adZ fTM @@ -54742,15 +58108,15 @@ aag aag aag aag -aab +eaI pZb pZb pZb pZb -aab -aag -aag -aag +rYe +ktr +sFD +mFZ aag aag aag @@ -54766,15 +58132,15 @@ aag aag aag aag -aag +wYB pZb pUm -pUm -pUm -pUm -pUm -xSA -nzw +vVC +vVC +vVC +vVC +lyZ +lhE gkC pUm pUm @@ -54807,9 +58173,9 @@ whU whU whU whU -whU -fTM -fTM +unp +vAT +fIW fTM adH fTM @@ -54959,10 +58325,10 @@ pZb pZb pZb pZb -aab -aab -aag -aag +vPo +vPo +wRb +pRD aag aag aag @@ -54975,8 +58341,8 @@ pZb pZb pZb pZb -aag -aag +ktr +mFZ aag aag aai @@ -54998,11 +58364,11 @@ aag pZb pUm pUm +vVC +vVC pUm -pUm -pUm -acg -acg +fYG +oDE acg pUm pUm @@ -55035,9 +58401,9 @@ whU whU whU whU -fTM -fTM -fTM +vQR +vAT +fIW aeT aek agA @@ -55187,11 +58553,11 @@ pZb pZb pZb pZb -aab -aag -aag -aag -aag +rYe +fRD +uYj +lLU +pRD aag aag aag @@ -55203,7 +58569,7 @@ pZb pZb pZb pZb -aag +mFZ aag aag aag @@ -55229,8 +58595,8 @@ pUm pUm pUm pUm -acg -acg +wCs +dLW acg pUm pUm @@ -55263,9 +58629,9 @@ whU fTM whU whU -fTM -fTM -fTM +sAh +sAh +pET fTM adH fTM @@ -55359,7 +58725,6 @@ aGz aGz aDJ ank -ank ano ank ank @@ -55368,6 +58733,7 @@ ank ank ank ank +ank ano ank ank @@ -55414,12 +58780,12 @@ pZb pZb pZb pZb -pZb -aab -aag -aai -aag -aag +xpR +rYe +uYj +gzH +mEo +rpx aag aag aag @@ -55457,8 +58823,8 @@ pUm pUm pUm pUm -acg -acg +xGL +egU acg pUm pUm @@ -55606,7 +58972,7 @@ ank ank ank ank -aLz +ank aSa aMq aky @@ -55642,12 +59008,12 @@ pZb pZb pZb pZb -pZb -pZb -aag -aag -aag -aag +xpR +xpR +uYj +wMr +uYj +rpx aag aag aag @@ -55686,8 +59052,8 @@ pUm pUm pUm pUm -acg -aaN +mHk +dtr pUm pUm pUm @@ -55870,12 +59236,12 @@ pZb pZb pZb pZb -pZb -pZb -aag -aag -aag -aag +xpR +xpR +uYj +uYj +uYj +rpx aag aai aag @@ -55913,10 +59279,10 @@ pUm pUm pUm pUm -pUm -acg -acg -acg +vVC +bvj +mHk +egU abj pUm acg @@ -55952,9 +59318,9 @@ vCG fTM akL fTM -fTM -aeT -agA +lSA +rgj +gWE ahv ahv slW @@ -56099,11 +59465,11 @@ pZb pZb pZb pZb -pZb -aag -aag -aag -aag +xpR +bvS +uYj +ktr +mFZ aag aag aag @@ -56140,12 +59506,12 @@ pUm pUm pUm pUm -pUm -pUm -acg -acg -acg -acg +vVC +vVC +xmK +bvj +mHk +egU abo acg acg @@ -56180,9 +59546,9 @@ vCG fTM fTM fTM -fTM -fTM -fTM +vNT +vAT +vkS ahv ahv slW @@ -56328,9 +59694,9 @@ pZb pZb pZb pZb -aag -aag -aag +uYj +ktr +mFZ aag aag aag @@ -56368,12 +59734,12 @@ pUm pUm pUm pUm -pUm -pUm -acg -acg -acg -acg +vVC +vVC +rhi +bvj +mNl +oDE acg acg acg @@ -56407,10 +59773,10 @@ fTM whU whU fTM -fTM -fTM -fTM -fTM +lSA +bkK +vAT +vAT ahv ahv aeg @@ -56508,7 +59874,7 @@ ank ank ank ank -ank +aLz ank ank ank @@ -56556,8 +59922,8 @@ pZb pZb pZb pZb -aab -aag +aPM +mFZ aag aag aag @@ -56596,12 +59962,12 @@ pUm pUm pUm pUm -pUm -pUm -acg -acg -acg -acg +vVC +vVC +bvj +bvj +wCs +dLW acg vjL acg @@ -56625,10 +59991,10 @@ whU jMS jMS fTM -fTM -fTM -fTM -fTM +lSA +eMe +eMe +uyn jMS jMS fTM @@ -56636,9 +60002,9 @@ whU ajc vCG whU -fTM -fTM -ahv +vAT +hTR +pRT ahv ahv ahv @@ -56826,9 +60192,9 @@ pUm pUm pUm pUm -acg -acg -acg +bvj +rER +dLW iiK acg acg @@ -56852,21 +60218,21 @@ whU whU whU whU -fTM -fTM -fTM -fTM -fTM -fTM -akL +eMe +bkK +ldi +vAT +lBl +loP +bQz fTM wEO fTM akL whU -whU -whU -ahv +unp +unp +pRT ahv ahv afS @@ -57053,9 +60419,9 @@ pUm pUm pUm pUm -acg -acg -acg +woT +woT +dLW acg acg acg @@ -57081,13 +60447,13 @@ whU whU whU aco -fTM -fTM -fTM -fTM -fTM -fTM -fTM +vAT +vAT +bcU +vAT +whx +lBl +uyn wEO fTM fTM @@ -57309,13 +60675,13 @@ whU whU whU whU -whU -whU -whU -fTM -fTM -fTM -fTM +unp +unp +unp +vAT +vAT +vAT +tqQ eFS fTM fTM @@ -57539,11 +60905,11 @@ whU whU whU whU -whU -whU -whU -wEO -wEO +unp +unp +unp +gsq +viC wEO fTM fTM @@ -57639,7 +61005,6 @@ btF aDi aDL ank -ank ano ank ank @@ -57648,6 +61013,7 @@ ank ank ank ank +ank ano ank ank @@ -57769,9 +61135,9 @@ whU whU whU whU -jMS -fTM -fTM +vAg +vAT +lSN fTM akL fTM @@ -57850,10 +61216,10 @@ atI avS atI asN -dLY -dLY -dLY -dLY +ihS +oUa +oUa +deU fFZ xDw apu @@ -57927,12 +61293,12 @@ pZb pZb pZb pZb -aab -aab -aag -aag -aag -aag +vPo +vPo +lzf +wRb +wRb +pRD aag aag aai @@ -57997,9 +61363,9 @@ whU whU whU whU -jMS -fTM -fTM +ecn +jlt +pET fTM fTM diW @@ -58072,16 +61438,16 @@ vNP dLY dLY pcu -dLY -dLY -dLY -dLY -lxX -dLY -dLY -hRS -dLY -dLY +ioC +oUa +oUa +oUa +oUa +oUa +isJ +oUa +kGk +dqz ukZ mvc apu @@ -58156,15 +61522,15 @@ pZb pZb pZb pZb -aab -aab -aag -aai -aag -aag -aag -aag -aag +rYe +rYe +uYj +gzH +qfK +wRb +wRb +wRb +pRD aag aag aag @@ -58189,7 +61555,7 @@ pZb pZb pZb pUm -pUm +vVC aaQ aaR aaR @@ -58299,18 +61665,18 @@ dLY dLY fSX dLY -dLY -fSX btS -dLY -dLY -dLY -dLY -dLY -vNP -eCx -dLY -iBy +oUa +oUa +oUa +oUa +oUa +oUa +vbh +dsi +oUa +dqz +ukZ ukZ apu apu @@ -58385,15 +61751,15 @@ pZb pZb pZb pZb -aab -aab -aag -aag -aag -aag -aag -aag -aag +cfL +rYe +uYj +qVi +egc +uYj +mEo +isL +pRD aag aag aai @@ -58416,9 +61782,9 @@ pZb pZb pZb pZb -pUm -pUm -nzw +vVC +vVC +uBR aaQ aaR aaR @@ -58527,21 +61893,21 @@ dLY dLY fED dLY -dLY -dLY -dLY -fSX -dLY -dLY -dLY -dLY -dLY -dLY -dLY -dLY +btS +oUa +oUa +oUa +oUa +oUa +oUa +oUa +upV +oUa +njO +orB apu apu -dLY +oUa apu apu apu @@ -58613,15 +61979,15 @@ pZb pZb pZb pZb -pZb -pZb -pZb -pZb -pZb -aab -aab -aag -aag +xpR +xpR +xpR +xpR +xpR +rYe +rYe +uYj +rpx aag aag aag @@ -58644,10 +62010,10 @@ pZb pZb pZb pZb -pUm -pUm -nzw -nzw +vVC +vVC +uBR +uBR aaQ aaQ aaQ @@ -58755,21 +62121,21 @@ fSX dLY dLY fSX -dLY -dLY +btS +oUa jik -dLY -dLY -dLY -dLY -dLY -dLY -crF -dLY -dLY -dLY -hmK -xVk +oUa +oUa +oUa +oUa +oUa +oUa +oUa +ciz +oUa +oUa +oUa +oUa apu apu apu @@ -58842,14 +62208,14 @@ pZb pZb pZb pZb -pZb -pZb -pZb -pZb -pZb -aab -aab -aab +xpR +xpR +xpR +xpR +xpR +rYe +rYe +gze aab aab aab @@ -58872,10 +62238,10 @@ pZb pZb pZb pZb -pUm -pUm -acg -nzw +vVC +vVC +bvj +uBR nzw nzw nzw @@ -58983,22 +62349,22 @@ dLY gAI dLY dLY -dLY -lxX -dLY -dLY -dLY -hRS -dLY -dLY -dLY -qcX -dLY -dLY -yiE -kNm -dLY -eSg +eOk +rSy +oUa +oUa +oUa +oUa +oUa +oUa +oUa +qns +oUa +oUa +oUa +uuf +oUa +cCr vKt apu apu @@ -59071,6 +62437,9 @@ pZb pZb pZb pZb +xpR +xpR +xpR pZb pZb pZb @@ -59097,15 +62466,12 @@ pZb pZb pZb pZb -pZb -pZb -pZb -pUm -pUm -acg -acg -acg -acg +vVC +vVC +bvj +bvj +mHk +egU acg aaN acg @@ -59118,9 +62484,9 @@ acg acg acg acg -acg -acg -nzw +iye +iye +bEj acg aaN acg @@ -59212,21 +62578,21 @@ fSX dLY dLY dLY -dLY -qcX -dLY -dLY -dLY +btS +qns +oUa +oUa +oUa jik -dLY -dLY -dLY -dLY +oUa +oUa +oUa +oUa jik -dLY -dLY -vKt -vKt +oUa +oUa +oUa +cCr djI dZY djI @@ -59328,13 +62694,13 @@ pZb pZb pZb pZb -pUm -pUm -pUm -acg -acg -acg -acg +vVC +vVC +vVC +bvj +bvj +mHk +egU acg nzw bfY @@ -59346,9 +62712,9 @@ nzw nzw nzw pUm -acg -acg -nzw +pQV +bvj +lhE acg acg acg @@ -59440,21 +62806,21 @@ fSX dLY gMe gcn -fSX -dLY -hmK -xVk -dLY -dLY -dLY -uYC -psc -xQI -dLY -dLY -crF -dLY -vKt +btS +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +cCr rON djI vKt @@ -59557,13 +62923,13 @@ pZb pZb pZb pUm -pUm -pUm -acg -acg -aaN -acg -acg +vVC +vVC +bvj +bvj +oQm +mHk +egU nzw nHq jAo @@ -59572,11 +62938,11 @@ acg umb iyr eZC -nzw -pUm +uBR pUm -acg -nzw +vVC +rAU +lhE acg acg acg @@ -59668,21 +63034,21 @@ hKk psc xQI dLY -dLY -dLY -dLY -dLY -dLY -uYC -psc -eil -eil -sXi -dLY -sHT -dLY -hRS -dLY +btS +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +cCr jik jik rON @@ -59785,14 +63151,14 @@ pZb pZb pZb pUm -pUm -pUm -pUm -acg -acg -acg -acg -nzw +vVC +vVC +vVC +bvj +bvj +bvj +mHk +bEj jAo acg gkC @@ -59800,12 +63166,12 @@ acg gkC acg jAo -nzw -pUm -pUm +uBR +vVC +vVC aaQ -nzw -acg +qPY +egU acg acg acg @@ -59895,22 +63261,22 @@ cCr lLO eil sXi -dLY -dLY -fSX -fSX -dLY -dLY -lLO -hZn -eil -eil -dNN -dLY -dLY -dLY -dLY -dLY +sRW +ioC +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +cCr jik jik jik @@ -60014,13 +63380,13 @@ pZb pZb pUm pUm +vVC +vVC +vVC pUm -pUm -pUm -pUm -acg -acg -nzw +bvj +bvj +gVR umb umb umb @@ -60028,12 +63394,12 @@ aaN umb umb umb -nzw -pUm -pUm -pUm -nzw -acg +uBR +vVC +vVC +vVC +uBR +oDE acg acg acg @@ -60063,7 +63429,7 @@ afS izX rwB agX -aut +jKX jFc rJd boe @@ -60123,23 +63489,23 @@ cCr dLY xDR sXi -dLY -dLY -dLY -dLY -dLY -lxX +btS +oUa +oUa +oUa +oUa +oUa jik -dLY -lLO -dNN -dLY -hRS -dLY -dLY -dLY -fED -dLY +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +vPV +fqh vKt jik jik @@ -60243,12 +63609,12 @@ pZb pUm pUm pUm -pUm -pUm -pUm -acg -acg -nzw +vVC +vVC +vVC +bvj +bvj +qPY rwx acg gkC @@ -60256,12 +63622,12 @@ acg gkC acg dfJ -nzw -pUm +uBR pUm -pUm -nzw -acg +vVC +vVC +uBR +oDE acg acg acg @@ -60297,7 +63663,7 @@ kSH boe rJd aeg -hcN +ewg twN uOi ufW @@ -60351,23 +63717,23 @@ cCr dLY xDR sXi -dLY -eCx -dLY -hRS -dLY -dLY -dLY -dLY -lxX -dLY -dLY +eOk +pMM +iBy +rSy +oUa +mnr +iBy +rSy +oUa +oUa +oUa jik jik -bMu -bMu -bMu -fqh +jik +iBy +iBy +iab hmK xVk dLY @@ -60472,25 +63838,25 @@ pUm pUm pUm pUm +vVC +vVC +vVC pUm -pUm -pUm -pUm -nzw -rPK +uBR +jhj upQ umb acg umb fAD rPK -nzw -pUm +uBR pUm pUm -nzw -acg -aaN +vVC +uBR +mHk +dtr acg acg acg @@ -60581,21 +63947,21 @@ lbX dNN dLY fSX +hRS +btS +oUa +uuV dLY +eOk +iBy +jik +iBy +iab +jik dLY dLY -kNm -dLY -dLY -dLY -jik dLY dLY -jik -oUa -oUa -oUa -cCr dLY dLY dLY @@ -60603,8 +63969,8 @@ dLY djI jik crF -dLY -dZY +rcy +kjD dZY fbD xVk @@ -60701,11 +64067,11 @@ pUm pUm pUm pUm +vVC pUm pUm -pUm -nzw -nzw +uBR +gVR nzw nzw nzw @@ -60716,9 +64082,9 @@ nzw pUm pUm pUm -nzw -acg -acg +uBR +bvj +fGn acg acg aaQ @@ -60750,7 +64116,7 @@ ahv ahv ahv afS -hcN +gdy afS aeg uOi @@ -60810,8 +64176,8 @@ fSX dLY dLY dLY -dLY -dLY +eOk +iBy jik dLY fED @@ -60821,18 +64187,18 @@ jik kNm jik jik -oUa -oUa -cCr -jik dLY -kNm +dLY dLY jik dLY +kNm dLY -djI -dZY +jik +oUa +oUa +mbN +rGW jik jik vWs @@ -61056,11 +64422,11 @@ jik jik dLY dLY -hRS -dLY -dLY -djI -djI +wUv +oUa +oUa +mbN +unT djI uVU jik diff --git a/maps/map_files/LV624/armory/10.cheese.dmm b/maps/map_files/LV624/armory/10.cheese.dmm index 760329c216dd..cee714b1c170 100644 --- a/maps/map_files/LV624/armory/10.cheese.dmm +++ b/maps/map_files/LV624/armory/10.cheese.dmm @@ -110,7 +110,6 @@ /obj/item/ammo_magazine/pistol/highpower, /obj/item/ammo_magazine/pistol/highpower, /obj/item/ammo_magazine/pistol/highpower, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ icon_state = "cult" }, @@ -183,12 +182,6 @@ pixel_x = 8; pixel_y = -4 }, -/obj/structure/machinery/door_control{ - id = "secure_inner_blast"; - name = "Secure Inner Doors"; - pixel_x = 25; - pixel_y = 5 - }, /turf/open/floor{ icon_state = "cult" }, diff --git a/maps/map_files/LV624/armory/10.extra.dmm b/maps/map_files/LV624/armory/10.extra.dmm index 612cf5c34ea1..7086e945d1ad 100644 --- a/maps/map_files/LV624/armory/10.extra.dmm +++ b/maps/map_files/LV624/armory/10.extra.dmm @@ -125,7 +125,6 @@ /obj/item/explosive/grenade/flashbang, /obj/item/explosive/grenade/flashbang, /obj/item/ammo_magazine/shotgun/beanbag, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ icon_state = "cult" }, @@ -188,12 +187,6 @@ /obj/effect/landmark/crap_item, /obj/item/ammo_magazine/smg/m39/extended, /obj/item/weapon/gun/smg/m39, -/obj/structure/machinery/door_control{ - id = "secure_inner_blast"; - name = "Secure Inner Doors"; - pixel_x = 25; - pixel_y = 5 - }, /turf/open/floor{ icon_state = "cult" }, diff --git a/maps/map_files/LV624/armory/10.looted.dmm b/maps/map_files/LV624/armory/10.looted.dmm index 09d0371c7c39..b81e0660816d 100644 --- a/maps/map_files/LV624/armory/10.looted.dmm +++ b/maps/map_files/LV624/armory/10.looted.dmm @@ -79,7 +79,6 @@ }, /area/lv624/lazarus/main_hall) "l" = ( -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ icon_state = "platingdmg3" }, @@ -187,18 +186,6 @@ icon_state = "cult" }, /area/lv624/lazarus/armory) -"K" = ( -/obj/item/stack/sheet/metal, -/obj/structure/machinery/door_control{ - id = "secure_inner_blast"; - name = "Secure Inner Doors"; - pixel_x = 25; - pixel_y = 5 - }, -/turf/open/floor{ - icon_state = "cult" - }, -/area/lv624/lazarus/armory) "T" = ( /obj/structure/machinery/door_control{ id = "garage_blast"; @@ -273,7 +260,7 @@ i w w w -K +w p i "} diff --git a/maps/map_files/LV624/cargospecial/cargospecial2_weapons.dmm b/maps/map_files/LV624/cargospecial/cargospecial2_weapons.dmm index d2e5c33cc12a..d9da1c3daa4c 100644 --- a/maps/map_files/LV624/cargospecial/cargospecial2_weapons.dmm +++ b/maps/map_files/LV624/cargospecial/cargospecial2_weapons.dmm @@ -47,7 +47,7 @@ /obj/structure/surface/table/reinforced/prison, /obj/item/ammo_magazine/smg/mp27, /obj/item/ammo_magazine/smg/mp27, -/obj/item/weapon/gun/shotgun/double/with_stock{ +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb{ pixel_y = -4 }, /obj/item/weapon/gun/smg/mp27{ diff --git a/maps/map_files/LV624/cargospecial/cargospecial3_gear.dmm b/maps/map_files/LV624/cargospecial/cargospecial3_gear.dmm index d89618cb3041..80d478e1ef51 100644 --- a/maps/map_files/LV624/cargospecial/cargospecial3_gear.dmm +++ b/maps/map_files/LV624/cargospecial/cargospecial3_gear.dmm @@ -1,11 +1,6 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /obj/structure/surface/rack, -/obj/item/clothing/gloves/marine/veteran/pmc{ - pixel_x = 2; - pixel_y = -3 - }, -/obj/item/clothing/gloves/marine/veteran/pmc, /turf/open/floor{ dir = 8; icon_state = "vault" @@ -43,7 +38,6 @@ /obj/structure/surface/rack, /obj/item/clothing/accessory/storage/black_vest/brown_vest, /obj/item/clothing/accessory/storage/black_vest/brown_vest, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor{ dir = 8; icon_state = "vault" diff --git a/maps/map_files/LV624/centralcaves/10.T.dmm b/maps/map_files/LV624/centralcaves/10.T.dmm index c9b62878872c..56c54485e09e 100644 --- a/maps/map_files/LV624/centralcaves/10.T.dmm +++ b/maps/map_files/LV624/centralcaves/10.T.dmm @@ -1,4 +1,22 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"b" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"c" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "d" = ( /turf/closed/wall/rock/brown, /area/lv624/ground/caves/central_caves) @@ -16,7 +34,7 @@ /area/lv624/ground/caves/central_caves) "h" = ( /obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/gm/dirt, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/central_caves) "i" = ( /obj/structure/blocker/forcefield/multitile_vehicles, @@ -24,6 +42,10 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) +"j" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/amanita, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "k" = ( /turf/open/gm/dirt, /area/lv624/ground/barrens/north_east_barrens) @@ -53,44 +75,136 @@ icon_state = "warning" }, /area/lv624/ground/barrens/containers) +"s" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"t" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 4; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) +"u" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"v" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "w" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/gm/dirt, /area/lv624/ground/barrens/west_barrens) -"z" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/turf/open/gm/dirt, -/area/lv624/ground/caves/central_caves) "A" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/gm/dirt, /area/lv624/ground/caves/central_caves) +"B" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"C" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"D" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"E" = ( +/turf/closed/wall/strata_ice/jungle, +/area/lv624/ground/caves/south_central_caves) +"F" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "G" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) +"H" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) +"I" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) +"K" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 2; + pixel_y = 7; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"M" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) +"N" = ( +/obj/effect/landmark/hunter_primary, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"O" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "Q" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) +"R" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"S" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"U" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "V" = ( /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) +"Z" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) (1,1,1) = {" f -z -V -V -V -V -G -V -V +g +B +b +N +S +S +s +F Q V V @@ -107,13 +221,13 @@ l (2,1,1) = {" f g -V -V -V -V -V -V -V +R +U +S +K +S +S +v Q V V @@ -130,14 +244,14 @@ l (3,1,1) = {" f g -V -G -V -V -l +R +S +S +E +E l -n -n +v +Q V G V @@ -153,10 +267,10 @@ w (4,1,1) = {" f A -V -V l l +E +E l l l @@ -207,7 +321,7 @@ l l l l -V +C V V V @@ -674,7 +788,7 @@ V V G V -V +C l l l @@ -705,9 +819,9 @@ o (28,1,1) = {" f e -V -V -V +D +D +D l l l @@ -727,9 +841,9 @@ p "} (29,1,1) = {" f -f -V -V +O +S +S l l l @@ -750,8 +864,8 @@ p "} (30,1,1) = {" f -f -f +O +j l l l @@ -773,9 +887,9 @@ p "} (31,1,1) = {" f -f -f -l +c +Z +E l l l @@ -795,16 +909,16 @@ k p "} (32,1,1) = {" -f -f -l -l -l -l +O +u +E +E l l l l +E +E l l l @@ -819,16 +933,16 @@ p "} (33,1,1) = {" f -f +a h -k -k -k -k -l -l -k -k +H +H +H +M +E +E +t +I l k k diff --git a/maps/map_files/LV624/centralcaves/10.qc.dmm b/maps/map_files/LV624/centralcaves/10.qc.dmm index 67c707f60afa..5f63ae797e02 100644 --- a/maps/map_files/LV624/centralcaves/10.qc.dmm +++ b/maps/map_files/LV624/centralcaves/10.qc.dmm @@ -1,834 +1,1065 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"e" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, +"aD" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"bV" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"dd" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"gU" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/central_caves) -"f" = ( +"hJ" = ( +/obj/effect/decal/grass_overlay/grass1, /turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"hP" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 11; + pixel_y = -2; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"hW" = ( +/obj/structure/fence, +/turf/open/floor{ + dir = 9; + icon_state = "warning" + }, +/area/lv624/ground/barrens/containers) +"iS" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"kc" = ( +/obj/structure/flora/bush/ausbushes/pointybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"ks" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 2; + pixel_y = 7; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"lp" = ( +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/central_caves) -"g" = ( +"lq" = ( +/turf/closed/wall/rock/brown, +/area/lv624/ground/barrens/west_barrens) +"mN" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) +"oB" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/amanita, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_central_caves) -"h" = ( +"oJ" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/gm/dirt, /area/lv624/ground/caves/central_caves) -"k" = ( -/turf/open/gm/dirt, +"pd" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"pC" = ( +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/barrens/north_east_barrens) -"l" = ( -/turf/closed/wall/rock/brown, +"pR" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8; + pixel_y = 13 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"qK" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) -"m" = ( +"ry" = ( +/obj/structure/flora/bush/ausbushes/var3/leafybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"sL" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"sO" = ( +/turf/closed/wall/strata_ice/jungle, +/area/lv624/ground/caves/south_central_caves) +"vC" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"vR" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"wk" = ( +/turf/closed/wall/rock/brown, +/area/lv624/ground/caves/south_central_caves) +"wL" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) -"n" = ( +"yv" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) -"o" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +"yD" = ( /turf/open/gm/dirt, /area/lv624/ground/barrens/north_east_barrens) -"q" = ( -/obj/structure/fence, -/turf/open/floor{ - dir = 9; - icon_state = "warning" +"yO" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) +"zh" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 }, -/area/lv624/ground/barrens/containers) -"r" = ( +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"An" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"AL" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"DG" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"ER" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"GE" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 4; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) +"GR" = ( +/obj/effect/landmark/hunter_primary, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"Is" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"Jf" = ( +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"JB" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"JX" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"JZ" = ( /obj/structure/fence, /turf/open/floor{ dir = 1; icon_state = "warning" }, /area/lv624/ground/barrens/containers) -"w" = ( +"KX" = ( +/turf/open/gm/dirt, +/area/lv624/ground/barrens/west_barrens) +"Od" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"Oe" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"Pd" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) -"y" = ( -/turf/closed/wall/rock/brown, -/area/lv624/ground/barrens/west_barrens) -"C" = ( +"PB" = ( /turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"Rx" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_central_caves) -"O" = ( +"Tu" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"Uu" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 4; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"UB" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"Vd" = ( /obj/effect/landmark/hunter_primary, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) -"P" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_membrane, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, +"VY" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = -10; + pixel_y = -2; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"Xj" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) -"Y" = ( +"XV" = ( /turf/open/gm/dirt, -/area/lv624/ground/barrens/west_barrens) +/area/lv624/ground/caves/south_central_caves) +"ZM" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) +"ZU" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) (1,1,1) = {" -f -n -C -C -O -C -C -C -C -n -C -g -C -C -l -l -l -l -l -l -l +PB +qK +dd +DG +Vd +ER +ER +wL +Xj +qK +XV +sL +XV +XV +wk +wk +wk +wk +wk +wk +wk "} (2,1,1) = {" -f -n -C -g -C -C -C -g -C -n -C -C -C -C -C -l -l -l -l -y -Y +PB +qK +JB +Rx +ER +ks +ER +ER +hJ +qK +XV +XV +XV +XV +XV +wk +wk +wk +wk +lq +KX "} (3,1,1) = {" -f -n -C -C -l -l -l -w -w -w -C -C -C -C -C -C -l -l -l -Y -Y +PB +qK +JB +ER +ER +sO +sO +wk +hJ +qK +XV +XV +XV +XV +XV +XV +wk +wk +wk +KX +KX "} (4,1,1) = {" -f -w -l -l -l -l -l -l -l -l -l -C -C -C -C -C -l -l -l -Y -Y +PB +aD +wk +wk +sO +sO +wk +wk +wk +wk +wk +XV +XV +XV +XV +XV +wk +wk +wk +KX +KX "} (5,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -C -C -C -C -C -C -l -l -y -Y +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +XV +XV +XV +XV +XV +XV +wk +wk +lq +KX "} (6,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -l -l -C -C -C -C -C -l -y -Y +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +XV +XV +XV +XV +XV +wk +lq +KX "} (7,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -l -l -l -C -g -C -C -l -l -y +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +Tu +yv +qK +qK +wk +wk +lq "} (8,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -l -l -l -n -n -n -n -l -l -l +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +ER +wL +Xj +XV +AL +wk +wk "} (9,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -l -l -l -C -C -C -C -C -l -l +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +ER +kc +ER +hJ +XV +XV +wk +wk "} (10,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -l -l -P -C -C -C -C -C -l -l +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +sO +ER +ER +ER +hJ +XV +XV +wk +wk "} (11,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -l -P -P -C -C -C -C -l -l -l +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +sO +sO +ks +ER +bV +zh +XV +XV +wk +wk "} (12,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -P -P -C -C -C -C -l -l -l -l +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +sO +sO +sO +ER +ER +hJ +sL +XV +XV +wk +wk "} (13,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -P -C -C -C -C -g -l -l -l -l +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +sO +ER +ER +Rx +ER +GR +Xj +XV +XV +wk +wk "} (14,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -l -C -C -C -O -C -l -l -l -l +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +sO +ER +ER +ER +ER +hJ +XV +XV +wk +wk "} (15,1,1) = {" -l -l -l -l -l -l -C -C -l -l -l -l -l -C -C -C -C -C -l -l -l +wk +wk +wk +wk +wk +wk +XV +XV +wk +wk +wk +pd +iS +ER +ER +ER +hJ +XV +XV +wk +wk "} (16,1,1) = {" -l -l -l -l -l -C -C -C -C -l -l -l -l -l -C -C -C -C -C -l -l +wk +wk +wk +wk +wk +XV +XV +XV +XV +wk +wk +wk +sO +sO +ER +hP +hJ +XV +wk +wk +wk "} (17,1,1) = {" -l -l -l -C -C -C -C -C -C -C -l -l -l -C -C -g -C -C -l -l -l +wk +wk +wk +XV +XV +XV +XV +XV +XV +XV +wk +wk +wk +sO +ER +ER +hJ +XV +wk +wk +wk "} (18,1,1) = {" -l -l -l -C -C -g -C -C -C -g -C -C -l -C -C -C -C -P -l -l -l +wk +wk +wk +XV +XV +sL +XV +XV +XV +sL +XV +XV +wk +sO +ER +Jf +hJ +XV +wk +wk +wk "} (19,1,1) = {" -l -l -C -C -C -C -C -C -C -C -C -C -n -C -C -C -C -P -l -l -l +wk +wk +XV +XV +XV +XV +XV +XV +XV +XV +XV +XV +Od +ER +ER +ER +wL +Xj +XV +wk +wk "} (20,1,1) = {" -l -C -C -C -C -C -l -l -C -C -C -C -n -C -C -C -C -P -P -l -l +wk +XV +XV +XV +XV +XV +wk +wk +XV +XV +XV +XV +Od +ER +ER +VY +Rx +hJ +XV +wk +wk "} (21,1,1) = {" -f -C -C -C -C -C -l -l -C -C -C -g -w -C -C -C -g -C -P -l -l +PB +XV +XV +XV +XV +XV +wk +wk +XV +XV +XV +sL +Pd +ER +ER +ER +ER +hJ +XV +wk +wk "} (22,1,1) = {" -f -C -g -C -C -l -l -l -l -C -C -C -n -C -C -C -C -C -P -l -l +PB +XV +sL +XV +XV +wk +wk +wk +wk +XV +XV +XV +Od +ER +Rx +ER +JX +hJ +XV +wk +wk "} (23,1,1) = {" -f -f -C -C -l -l -l -l -l -l -C -C -n -C -C -C -C -C -P -l -l +PB +PB +XV +XV +wk +wk +wk +wk +wk +wk +XV +XV +Od +ER +ry +ER +bV +zh +XV +wk +wk "} (24,1,1) = {" -f -f -C -C -l -l -l -l -l -l -l -l -l -C -C -C -C -C -C -l -l +PB +PB +XV +XV +wk +wk +wk +wk +wk +wk +wk +wk +wk +pR +ER +ER +hJ +XV +wk +wk +wk "} (25,1,1) = {" -f -f -C -l -l -l -l -l -l -l -l -l -C -C -C -C -C -C -l -l -l +PB +PB +XV +wk +wk +wk +wk +wk +wk +wk +sO +sO +ER +ER +ER +Rx +hJ +XV +wk +wk +wk "} (26,1,1) = {" -f -f -C -l -l -l -l -l -l -l -l -C -C -C -C -g -C -C -l -l -l +PB +PB +XV +wk +wk +wk +wk +wk +wk +wk +sO +ER +ER +ER +Uu +ER +hJ +wk +wk +wk +wk "} (27,1,1) = {" -f -f -l -l -l -l -l -l -l -l -l -l -C -C -C -C -C -l -l -l -q +PB +PB +wk +wk +wk +wk +wk +wk +wk +wk +sO +sO +ER +ER +ER +ER +hJ +wk +wk +wk +hW "} (28,1,1) = {" -f -h -l -l -l -l -l -l -l -l -l -l -l -C -C -C -C -l -l -l -r +PB +oJ +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +ER +ER +ER +wk +wk +wk +wk +JZ "} (29,1,1) = {" -f -f -l -l -l -l -l -l -l -l -l -l -l -m -m -m -l -l -l -l -r +PB +UB +wk +wk +wk +wk +wk +wk +wk +wk +wk +sO +sO +An +An +vC +wk +wk +wk +wk +JZ "} (30,1,1) = {" -f -f -l -l -l -l -l -l -l -l -l -l -l -k -k -k -l -l -k -k -r +PB +UB +oB +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +ZM +ZM +ZM +wk +wk +yD +yD +JZ "} (31,1,1) = {" -f -f -f -l -l -l -l -l -l -l -l -l -k -k -k -k -k -k -k -k -r +PB +gU +Oe +sO +wk +wk +wk +wk +wk +wk +wk +wk +yD +yD +yD +yD +yD +yD +yD +yD +JZ "} (32,1,1) = {" -h -f -l -l -l -l -l -l -l -l -l -l -l -k -k -k -k -k -o -k -r +UB +lp +sO +sO +wk +wk +wk +wk +sO +sO +wk +wk +wk +yD +yD +yD +yD +yD +mN +yD +JZ "} (33,1,1) = {" -f -e -e -k -k -k -l -l -l -k -k -l -k -k -k -k -k -k -k -k -r +PB +ZU +Is +pC +pC +pC +vR +sO +sO +GE +yO +wk +yD +yD +yD +yD +yD +yD +yD +yD +JZ "} diff --git a/maps/map_files/LV624/crashedship/10.digsite.dmm b/maps/map_files/LV624/crashedship/10.digsite.dmm index ccc8111d9956..6132b455f14d 100644 --- a/maps/map_files/LV624/crashedship/10.digsite.dmm +++ b/maps/map_files/LV624/crashedship/10.digsite.dmm @@ -219,15 +219,6 @@ /obj/effect/alien/weeds/node, /turf/open/gm/dirt, /area/lv624/ground/barrens/north_east_barrens) -"FG" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/item/clothing/gloves/marine/veteran/pmc, -/turf/open/shuttle{ - icon_state = "floor4" - }, -/area/lv624/lazarus/crashed_ship_containers) "Gs" = ( /obj/structure/girder, /turf/closed/shuttle{ @@ -503,7 +494,7 @@ xg zH cv uw -FG +cv Xk Gs Xk diff --git a/maps/map_files/LV624/gym/20.pool.dmm b/maps/map_files/LV624/gym/20.pool.dmm index 92bba9a7dcff..be863f49c556 100644 --- a/maps/map_files/LV624/gym/20.pool.dmm +++ b/maps/map_files/LV624/gym/20.pool.dmm @@ -101,7 +101,6 @@ /area/lv624/lazarus/fitness) "li" = ( /obj/effect/decal/cleanable/blood/splatter, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" @@ -209,7 +208,6 @@ }, /obj/structure/surface/table, /obj/item/storage/box/cups, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" @@ -354,7 +352,6 @@ /obj/item/clothing/mask/snorkel, /obj/item/clothing/mask/snorkel, /obj/item/clothing/mask/snorkel, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" diff --git a/maps/map_files/LV624/gym/30.alternate.dmm b/maps/map_files/LV624/gym/30.alternate.dmm index 8762e50bc905..79d0887c2219 100644 --- a/maps/map_files/LV624/gym/30.alternate.dmm +++ b/maps/map_files/LV624/gym/30.alternate.dmm @@ -69,11 +69,10 @@ /obj/structure/surface/rack, /obj/item/clothing/shoes/black, /obj/item/clothing/shoes/orange{ + name = "running shoes"; pixel_x = -5; - pixel_y = -9; - name = "running shoes" + pixel_y = -9 }, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" @@ -373,7 +372,6 @@ "DH" = ( /obj/structure/closet/lasertag/blue, /obj/item/tool/crowbar, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" @@ -646,7 +644,6 @@ id = "lv_gym_1"; name = "treadmill" }, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" diff --git a/maps/map_files/LV624/hydro/30.destroyed.dmm b/maps/map_files/LV624/hydro/30.destroyed.dmm index a1c9ebcf3dbb..09eb12287a58 100644 --- a/maps/map_files/LV624/hydro/30.destroyed.dmm +++ b/maps/map_files/LV624/hydro/30.destroyed.dmm @@ -64,7 +64,6 @@ /area/lv624/ground/colony/south_medbay_road) "ft" = ( /obj/item/clothing/gloves/marine/veteran/pmc{ - name = "damaged WY PMC gloves"; armor_bio = 10; armor_bomb = 10; armor_bullet = 15; @@ -72,7 +71,8 @@ armor_internaldamage = 15; armor_laser = 15; armor_melee = 15; - armor_rad = 10 + armor_rad = 10; + name = "damaged WY PMC gloves" }, /turf/open/floor{ icon_state = "platingdmg1" @@ -164,17 +164,17 @@ /area/lv624/lazarus/hydroponics) "mK" = ( /obj/item/clothing/suit/storage/marine/veteran/pmc/light/synth{ - desc = "A modification of the standard Armat Systems M3 armor. This variant was designed for PMC Support Units in the field, offering protection and storage while not restricting movement. This set seems damaged..."; - name = "damaged M4 synthetic PMC armor"; + desc = "A serious modification of the standard Armat Systems M3 armor. This variant was designed for PMC Support Units in the field, with every armor insert removed. It's designed with the idea of a high speed lifesaver in mind. This set seems damaged..."; + name = "damaged M4 Synthetic PMC armor"; pixel_x = -5; pixel_y = -5 }, /obj/effect/spawner/gibspawner/robot, /obj/item/limb/head/synth{ - pixel_x = 9; - pixel_y = 3; + desc = "This appears to be the head of a synthetic, though it it is so destroyed there is no way in hell anyone is going to bring it back to even basic functionality."; name = "shattered synthetic head"; - desc = "This appears to be the head of a synthetic, though it it is so destroyed there is no way in hell anyone is going to bring it back to even basic functionality." + pixel_x = 9; + pixel_y = 3 }, /obj/item/robot_parts/arm/l_arm, /turf/open/floor{ @@ -368,10 +368,6 @@ icon_state = "platingdmg1" }, /area/lv624/lazarus/hydroponics) -"DN" = ( -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/plating, -/area/lv624/lazarus/hydroponics) "Ed" = ( /obj/item/stack/sheet/metal, /turf/open/floor{ @@ -571,7 +567,6 @@ /obj/item/ammo_magazine/smg/fp9000, /obj/item/ammo_magazine/smg/fp9000, /obj/item/clothing/gloves/marine/veteran/pmc{ - name = "damaged WY PMC gloves"; armor_bio = 10; armor_bomb = 10; armor_bullet = 15; @@ -580,6 +575,7 @@ armor_laser = 15; armor_melee = 15; armor_rad = 10; + name = "damaged WY PMC gloves"; pixel_y = 9 }, /turf/open/floor/plating, @@ -591,8 +587,6 @@ /area/lv624/lazarus/hydroponics) "RT" = ( /obj/item/clothing/shoes/veteran/pmc{ - slowdown = 0.5; - name = "scuffed shoes"; armor_bio = 15; armor_bomb = 5; armor_bullet = 15; @@ -601,8 +595,10 @@ armor_laser = 5; armor_melee = 15; desc = "The height of fashion, but these look to be woven with protective fiber. This pair seems heavily damaged, especially around the soles..."; + name = "scuffed shoes"; pixel_x = -14; - pixel_y = -10 + pixel_y = -10; + slowdown = 0.5 }, /turf/open/floor{ dir = 9; @@ -874,7 +870,7 @@ bd aO QR mK -DN +Wg TC Wg TC diff --git a/maps/map_files/LV624/maintemple/1.intact.dmm b/maps/map_files/LV624/maintemple/1.intact.dmm index 27e4f42b6152..8f7c741d80c6 100644 --- a/maps/map_files/LV624/maintemple/1.intact.dmm +++ b/maps/map_files/LV624/maintemple/1.intact.dmm @@ -130,6 +130,7 @@ desc = "An old hide from a fearsome creature."; name = "hunter hide" }, +/obj/effect/landmark/objective_landmark/far, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) "dE" = ( @@ -311,6 +312,13 @@ icon_state = "multi_tiles" }, /area/lv624/ground/caves/sand_temple) +"fQ" = ( +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" + }, +/area/lv624/ground/caves/sand_temple) "fV" = ( /obj/structure/prop/brazier/torch, /turf/closed/wall/rock/brown, @@ -404,6 +412,7 @@ name = "sacred ceremonial dagger"; pixel_x = 9 }, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) "hA" = ( @@ -465,7 +474,7 @@ /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_barrens) "iN" = ( -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ pixel_x = -6; pixel_y = 7 }, @@ -507,6 +516,7 @@ color = "#6b675e" }, /obj/item/restraints, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/strata{ color = "#5e5d5d"; icon_state = "multi_tiles" @@ -875,7 +885,7 @@ icon_state = "Synthetic_Template"; name = "Eternal guardian" }, -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ layer = 3.1; pixel_x = 6; pixel_y = 7 @@ -1122,7 +1132,7 @@ /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple/powered) "BI" = ( -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ pixel_x = 6; pixel_y = 7 }, @@ -1148,6 +1158,25 @@ icon_state = "multi_tiles" }, /area/lv624/ground/caves/sand_temple) +"BY" = ( +/obj/structure/surface/table/reinforced/prison{ + color = "#6b675e" + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 80 + }, +/obj/item/hunting_trap{ + desc = "A bizarre alien device used for trapping and killing prey."; + name = "Alien Mine" + }, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/sandstone/runed, +/area/lv624/ground/caves/sand_temple) "Cr" = ( /obj/effect/decal/cleanable/blood{ basecolor = "#20d450"; @@ -1186,7 +1215,7 @@ icon_state = "Synthetic_Template"; name = "Eternal guardian" }, -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ layer = 3.1; pixel_x = -6; pixel_y = 7 @@ -1228,7 +1257,7 @@ dir = 4; health = 80 }, -/obj/item/weapon/claymore/mercsword/machete{ +/obj/item/weapon/sword/machete{ desc = "This machete seems not standard issue, indeed it seems to be an ancient military design. Smells like the jungle."; name = "\improper Dutch's Machete" }, @@ -1445,6 +1474,7 @@ /obj/item/XenoItem/AntiAcid{ pixel_x = 4 }, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) "LF" = ( @@ -1710,6 +1740,7 @@ color = "#6b675e" }, /obj/item/stack/yautja_rope, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple/powered) "SF" = ( @@ -1746,6 +1777,7 @@ amount = 50; pixel_y = 7 }, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/corsat{ dir = 1; icon_state = "squareswood" @@ -2374,7 +2406,7 @@ gL Jc Jc Jc -gL +fQ wS oi qf @@ -3332,7 +3364,7 @@ ZX ZX GT OC -KB +BY mv mv mv diff --git a/maps/map_files/LV624/maintemple/2.flooded.dmm b/maps/map_files/LV624/maintemple/2.flooded.dmm index f375b61213ce..8643676807fc 100644 --- a/maps/map_files/LV624/maintemple/2.flooded.dmm +++ b/maps/map_files/LV624/maintemple/2.flooded.dmm @@ -39,6 +39,7 @@ dir = 8; health = 80 }, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) "aN" = ( @@ -259,7 +260,7 @@ /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/barrens/south_eastern_barrens) "hu" = ( -/obj/item/weapon/claymore/mercsword, +/obj/item/weapon/sword, /turf/open/gm/coast/beachcorner2/north_west, /area/lv624/ground/caves/sand_temple) "hA" = ( @@ -332,6 +333,13 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/caves/sand_temple) +"jc" = ( +/obj/structure/platform_decoration/mineral/sandstone/runed{ + dir = 1 + }, +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/dirt, +/area/lv624/ground/caves/sand_temple) "jZ" = ( /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, @@ -347,6 +355,7 @@ /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" }, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) "lI" = ( @@ -677,7 +686,7 @@ icon_state = "Synthetic_Template"; name = "Eternal guardian" }, -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ layer = 3.1; pixel_x = 6; pixel_y = 7 @@ -784,6 +793,7 @@ dir = 4; health = 80 }, +/obj/effect/landmark/objective_landmark/close, /turf/open/gm/dirt, /area/lv624/ground/caves/sand_temple) "wt" = ( @@ -1002,7 +1012,7 @@ /turf/open/gm/dirt, /area/lv624/ground/caves/sand_temple) "BI" = ( -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ pixel_x = 6; pixel_y = 7 }, @@ -1086,7 +1096,7 @@ icon_state = "Synthetic_Template"; name = "Eternal guardian" }, -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ layer = 3.1; pixel_x = -6; pixel_y = 7 @@ -1137,6 +1147,13 @@ "EJ" = ( /turf/open/gm/coast/beachcorner2/south_west, /area/lv624/ground/caves/sand_temple) +"EL" = ( +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" + }, +/area/lv624/ground/caves/sand_temple) "EM" = ( /obj/structure/showcase{ color = "#95948B"; @@ -1302,6 +1319,13 @@ }, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/caves/sand_temple) +"Ip" = ( +/obj/structure/surface/table/reinforced/prison{ + color = "#6b675e" + }, +/obj/effect/landmark/objective_landmark/far, +/turf/open/gm/dirt, +/area/lv624/ground/caves/sand_temple) "Ix" = ( /obj/structure/barricade/handrail/strata, /obj/structure/barricade/handrail/strata{ @@ -1798,6 +1822,20 @@ }, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, /area/lv624/ground/barrens/south_eastern_barrens) +"Xr" = ( +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "squareswood" + }, +/area/lv624/ground/caves/sand_temple) +"XQ" = ( +/obj/structure/surface/table/reinforced/prison{ + color = "#6b675e" + }, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/gm/dirt, +/area/lv624/ground/caves/sand_temple) "XV" = ( /obj/structure/bed/chair/comfy/black{ dir = 1 @@ -2006,7 +2044,7 @@ GT Jm rL Dg -Ge +Xr we rL xO @@ -2260,7 +2298,7 @@ gL Jc Jc Jc -gL +EL wS if qf @@ -2848,7 +2886,7 @@ ma wU po MB -Yu +jc py yc dA @@ -3641,7 +3679,7 @@ GT SW Ai Br -UX +XQ Mq Zi mv @@ -3728,7 +3766,7 @@ GT GT GT OC -UX +Ip OC xO FS diff --git a/maps/map_files/LV624/medbay/10.destroyed.dmm b/maps/map_files/LV624/medbay/10.destroyed.dmm index 34dbd1981cf0..88e17a3aeee0 100644 --- a/maps/map_files/LV624/medbay/10.destroyed.dmm +++ b/maps/map_files/LV624/medbay/10.destroyed.dmm @@ -300,12 +300,6 @@ /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) -"AB" = ( -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor{ - icon_state = "whitebluefull" - }, -/area/lv624/lazarus/medbay) "Be" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, @@ -806,7 +800,7 @@ Il yU QR QR -AB +YJ vm uV fX diff --git a/maps/map_files/LV624/medbay/30.larvasurgery.dmm b/maps/map_files/LV624/medbay/30.larvasurgery.dmm index a47a2cd2ed62..b67b5e7bf1c5 100644 --- a/maps/map_files/LV624/medbay/30.larvasurgery.dmm +++ b/maps/map_files/LV624/medbay/30.larvasurgery.dmm @@ -480,7 +480,6 @@ /obj/structure/machinery/light{ dir = 8 }, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ dir = 8; icon_state = "whiteblue" diff --git a/maps/map_files/LV624/science/10.yautja.dmm b/maps/map_files/LV624/science/10.yautja.dmm index d0dfdca90fc7..04e671be3259 100644 --- a/maps/map_files/LV624/science/10.yautja.dmm +++ b/maps/map_files/LV624/science/10.yautja.dmm @@ -184,9 +184,9 @@ }, /obj/effect/landmark/crap_item, /obj/structure/transmitter/colony_net{ - pixel_y = 24; phone_category = "Lazarus Landing"; - phone_id = "Research Dome" + phone_id = "Research Dome"; + pixel_y = 24 }, /turf/open/floor{ dir = 5; @@ -326,7 +326,6 @@ /area/lv624/lazarus/research) "aQ" = ( /obj/item/clothing/glasses/regular, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ icon_state = "white" }, @@ -456,7 +455,6 @@ /obj/structure/surface/table, /obj/item/explosive/grenade/spawnergrenade/smartdisc, /obj/item/explosive/grenade/spawnergrenade/smartdisc, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ dir = 5; icon_state = "whitepurple" @@ -528,7 +526,6 @@ "LE" = ( /obj/structure/surface/table, /obj/effect/landmark/crap_item, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ dir = 5; icon_state = "whitepurple" @@ -541,18 +538,6 @@ icon_state = "white" }, /area/lv624/lazarus/research) -"WJ" = ( -/obj/effect/landmark/crap_item, -/obj/structure/machinery/door_control{ - id = "secure_inner_blast"; - name = "Secure Inner Doors"; - pixel_x = -25; - pixel_y = 5 - }, -/turf/open/floor{ - icon_state = "white" - }, -/area/lv624/lazarus/research) "Zw" = ( /obj/structure/surface/table, /obj/item/storage/fancy/vials/random, @@ -673,7 +658,7 @@ al ar aJ Lo -WJ +gd ar aZ CC diff --git a/maps/map_files/LV624/science/40.fullylocked.dmm b/maps/map_files/LV624/science/40.fullylocked.dmm index 63a5d17558f3..933de359a481 100644 --- a/maps/map_files/LV624/science/40.fullylocked.dmm +++ b/maps/map_files/LV624/science/40.fullylocked.dmm @@ -7,7 +7,7 @@ /area/lv624/lazarus/research) "ac" = ( /obj/structure/window/framed/colony/reinforced, -/obj/structure/machinery/door/poddoor/almayer/locked{ +/obj/structure/machinery/door/poddoor/almayer/planet_side_blastdoor{ id = "science_blast"; layer = 3.3; name = "\improper Science Wing Blast Door" @@ -15,7 +15,7 @@ /turf/open/floor/plating, /area/lv624/lazarus/research) "ad" = ( -/obj/structure/machinery/door/poddoor/almayer/locked{ +/obj/structure/machinery/door/poddoor/almayer/planet_side_blastdoor{ id = "science_blast"; layer = 3.3; name = "\improper Science Wing Blast Door" @@ -41,7 +41,7 @@ /area/lv624/ground/jungle/north_west_jungle) "ai" = ( /obj/structure/window_frame/colony/reinforced, -/obj/structure/machinery/door/poddoor/almayer/locked{ +/obj/structure/machinery/door/poddoor/almayer/planet_side_blastdoor{ id = "science_blast"; layer = 3.3; name = "\improper Science Wing Blast Door" @@ -73,7 +73,7 @@ /area/lv624/ground/colony/south_medbay_road) "ao" = ( /obj/structure/window/framed/colony/reinforced, -/obj/structure/machinery/door/poddoor/almayer/locked{ +/obj/structure/machinery/door/poddoor/almayer/planet_side_blastdoor{ dir = 4; id = "science_blast"; layer = 3.3; @@ -218,7 +218,7 @@ }, /area/lv624/lazarus/research) "aI" = ( -/obj/structure/machinery/door/poddoor/almayer/locked{ +/obj/structure/machinery/door/poddoor/almayer/planet_side_blastdoor{ dir = 4; id = "science_blast"; layer = 3.3; @@ -329,14 +329,13 @@ /obj/structure/surface/table, /obj/structure/machinery/cell_charger, /obj/item/tool/crowbar, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ dir = 5; icon_state = "whitepurple" }, /area/lv624/lazarus/research) "aU" = ( -/obj/structure/machinery/door/poddoor/almayer/locked{ +/obj/structure/machinery/door/poddoor/almayer/planet_side_blastdoor{ dir = 4; id = "science_blast"; layer = 3.3; @@ -367,7 +366,6 @@ /area/lv624/lazarus/research) "bm" = ( /obj/structure/surface/table, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ icon_state = "freezerfloor" }, @@ -419,17 +417,6 @@ "bF" = ( /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/central_jungle) -"gu" = ( -/obj/structure/machinery/door_control{ - id = "secure_inner_blast"; - name = "Secure Inner Doors"; - pixel_x = -25; - pixel_y = 5 - }, -/turf/open/floor{ - icon_state = "white" - }, -/area/lv624/lazarus/research) "ky" = ( /obj/effect/landmark/objective_landmark/science, /turf/open/floor{ @@ -438,9 +425,9 @@ /area/lv624/lazarus/research) "oe" = ( /obj/structure/transmitter/colony_net{ - pixel_y = 24; phone_category = "Lazarus Landing"; - phone_id = "Research Dome" + phone_id = "Research Dome"; + pixel_y = 24 }, /turf/open/floor{ dir = 5; @@ -603,14 +590,14 @@ ab "} (7,1,1) = {" ac -bn +Tz aq ay ay au aQ Kl -gu +ak au bp ay @@ -715,7 +702,7 @@ bb ay ab bn -bn +Tz aj ac bE diff --git a/maps/map_files/LV624/standalone/clfship.dmm b/maps/map_files/LV624/standalone/clfship.dmm index 362eef00fd21..10a6618c681d 100644 --- a/maps/map_files/LV624/standalone/clfship.dmm +++ b/maps/map_files/LV624/standalone/clfship.dmm @@ -127,6 +127,16 @@ /obj/structure/surface/table/reinforced/prison, /turf/open/gm/dirt, /area/lv624/lazarus/crashed_ship) +"eD" = ( +/obj/structure/surface/table/woodentable, +/obj/effect/spawner/random/toolbox, +/obj/item/toy/deck/uno{ + pixel_x = -3; + pixel_y = 4 + }, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/wood, +/area/lv624/lazarus/crashed_ship) "eG" = ( /obj/structure/largecrate/random/barrel/red, /turf/open/gm/dirt, @@ -161,9 +171,7 @@ }, /area/lv624/lazarus/crashed_ship) "fA" = ( -/obj/structure/transmitter/colony_net{ - network_receive = "CLF"; - networks_transmit = list("CLF"); +/obj/structure/transmitter/clf_net{ phone_category = "CR-116"; phone_id = "Armoury"; pixel_y = 32 @@ -290,6 +298,21 @@ /obj/item/weapon/gun/smg/fp9000, /turf/open/floor/plating, /area/lv624/lazarus/crashed_ship) +"hZ" = ( +/obj/structure/bed, +/obj/item/bedsheet/blue, +/obj/item/weapon/gun/pistol/heavy, +/obj/item/ammo_magazine/pistol/heavy, +/obj/item/ammo_magazine/pistol/heavy, +/obj/item/ammo_magazine/pistol/heavy, +/obj/item/ammo_magazine/pistol/heavy, +/obj/item/clothing/accessory/storage/webbing, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "green" + }, +/area/lv624/lazarus/crashed_ship) "id" = ( /turf/open/floor/plating{ dir = 5; @@ -408,6 +431,19 @@ icon_state = "platingdmg1" }, /area/lv624/lazarus/crashed_ship) +"kO" = ( +/obj/structure/bed, +/obj/item/bedsheet/green, +/obj/structure/machinery/light/small{ + dir = 1; + pixel_y = 20 + }, +/obj/item/toy/plush/farwa, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "green" + }, +/area/lv624/lazarus/crashed_ship) "kY" = ( /obj/structure/machinery/door/airlock/almayer/generic, /turf/open/floor{ @@ -455,12 +491,6 @@ "lr" = ( /turf/open/floor/plating/plating_catwalk, /area/lv624/lazarus/crashed_ship) -"lv" = ( -/obj/item/stack/rods, -/turf/open/floor{ - icon_state = "platingdmg1" - }, -/area/lv624/lazarus/crashed_ship) "lC" = ( /obj/item/ammo_magazine/sniper/svd, /turf/open/floor/plating, @@ -545,19 +575,6 @@ icon_state = "platingdmg1" }, /area/lv624/lazarus/crashed_ship) -"ox" = ( -/obj/structure/bed, -/obj/item/bedsheet/green, -/obj/structure/machinery/light/small{ - dir = 1; - pixel_y = 20 - }, -/obj/item/toy/farwadoll, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "green" - }, -/area/lv624/lazarus/crashed_ship) "oI" = ( /obj/item/stack/rods, /obj/effect/landmark/corpsespawner/clf, @@ -663,20 +680,6 @@ icon_state = "green" }, /area/lv624/lazarus/crashed_ship) -"sI" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/toolbox, -/obj/structure/transmitter/colony_net/rotary{ - network_receive = "CLF"; - networks_transmit = list("CLF"); - phone_category = "CR-116"; - phone_color = "yellow"; - phone_id = "Engineering" - }, -/turf/open/floor/almayer{ - icon_state = "orangecorner" - }, -/area/lv624/lazarus/crashed_ship) "sO" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -960,6 +963,13 @@ icon_state = "whitebluefull" }, /area/lv624/lazarus/crashed_ship) +"zJ" = ( +/obj/item/stack/rods, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor{ + icon_state = "platingdmg1" + }, +/area/lv624/lazarus/crashed_ship) "Aa" = ( /obj/effect/vehicle_spawner/van/fixed{ color = "#4a9eed"; @@ -1058,15 +1068,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/lv624/lazarus/crashed_ship) -"Cs" = ( -/obj/structure/surface/table/almayer, -/obj/item/tank/oxygen/red, -/obj/item/storage/bag/trash, -/obj/item/tool/screwdriver, -/turf/open/floor{ - icon_state = "platingdmg1" - }, -/area/lv624/lazarus/crashed_ship) "Ct" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 8; @@ -1132,6 +1133,15 @@ icon_state = "green" }, /area/lv624/lazarus/crashed_ship) +"DO" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/firstaid/regular, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "emerald" + }, +/area/lv624/lazarus/crashed_ship) "DS" = ( /obj/structure/surface/table/woodentable, /obj/item/storage/firstaid/regular{ @@ -1247,15 +1257,6 @@ icon_state = "emerald" }, /area/lv624/lazarus/crashed_ship) -"GO" = ( -/obj/structure/surface/table/woodentable, -/obj/effect/spawner/random/toolbox, -/obj/item/toy/deck/uno{ - pixel_x = -3; - pixel_y = 4 - }, -/turf/open/floor/wood, -/area/lv624/lazarus/crashed_ship) "GQ" = ( /obj/effect/landmark/corpsespawner/engineer, /turf/open/floor/plating, @@ -1270,20 +1271,6 @@ icon_state = "platingdmg1" }, /area/lv624/lazarus/crashed_ship) -"GY" = ( -/obj/structure/bed, -/obj/item/bedsheet/blue, -/obj/item/weapon/gun/pistol/heavy, -/obj/item/ammo_magazine/pistol/heavy, -/obj/item/ammo_magazine/pistol/heavy, -/obj/item/ammo_magazine/pistol/heavy, -/obj/item/ammo_magazine/pistol/heavy, -/obj/item/clothing/accessory/storage/webbing, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "green" - }, -/area/lv624/lazarus/crashed_ship) "Hg" = ( /obj/structure/cargo_container/arious/rightmid, /turf/open/floor{ @@ -1594,6 +1581,19 @@ /obj/structure/machinery/floodlight, /turf/open/gm/dirt, /area/lv624/ground/caves/south_west_caves) +"OZ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/spawner/random/toolbox, +/obj/structure/transmitter/clf_net/rotary{ + phone_category = "CR-116"; + phone_color = "yellow"; + phone_id = "Engineering" + }, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/almayer{ + icon_state = "orangecorner" + }, +/area/lv624/lazarus/crashed_ship) "Pu" = ( /obj/effect/landmark/corpsespawner/clf, /turf/open/floor{ @@ -1661,9 +1661,7 @@ /area/lv624/lazarus/crashed_ship) "Qj" = ( /obj/structure/machinery/body_scanconsole, -/obj/structure/transmitter/colony_net{ - network_receive = "CLF"; - networks_transmit = list("CLF"); +/obj/structure/transmitter/clf_net{ phone_category = "CR-116"; phone_color = "green"; phone_id = "Medical Bay"; @@ -1820,6 +1818,16 @@ icon_state = "emeraldcorner" }, /area/lv624/lazarus/crashed_ship) +"Up" = ( +/obj/structure/surface/table/almayer, +/obj/item/tank/oxygen/red, +/obj/item/storage/bag/trash, +/obj/item/tool/screwdriver, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor{ + icon_state = "platingdmg1" + }, +/area/lv624/lazarus/crashed_ship) "Uv" = ( /obj/item/ammo_magazine/smg/fp9000, /turf/open/floor/plating{ @@ -1957,14 +1965,6 @@ icon_state = "warnplate" }, /area/lv624/lazarus/crashed_ship) -"Xa" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/firstaid/regular, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "emerald" - }, -/area/lv624/lazarus/crashed_ship) "Xm" = ( /turf/open/floor/plating{ icon_state = "platingdmg3" @@ -1993,9 +1993,7 @@ }, /area/lv624/lazarus/crashed_ship) "XM" = ( -/obj/structure/transmitter/colony_net{ - network_receive = "CLF"; - networks_transmit = list("CLF"); +/obj/structure/transmitter/clf_net{ phone_category = "CR-116"; phone_id = "Cargo Bay"; pixel_y = 32 @@ -2487,7 +2485,7 @@ xh wV lr gQ -sI +OZ Xq Qj lr @@ -2536,7 +2534,7 @@ lr DY HR Xq -Xa +DO Ud lr ch @@ -2573,7 +2571,7 @@ te UV Ro Sy -Cs +Up ok dN Bc @@ -2956,7 +2954,7 @@ wx LG ln Bg -GO +eD uX Xq Mz @@ -3189,7 +3187,7 @@ vo lr RS Xq -ox +kO Dv sH IG @@ -3201,7 +3199,7 @@ jr Xq ou dN -lv +zJ Qf Hg dN @@ -3379,7 +3377,7 @@ Ab Ab Ab Ns -GY +hZ IP Xq Nw diff --git a/maps/map_files/LV624/standalone/laststand.dmm b/maps/map_files/LV624/standalone/laststand.dmm index dd516a9cd479..43201f92cb17 100644 --- a/maps/map_files/LV624/standalone/laststand.dmm +++ b/maps/map_files/LV624/standalone/laststand.dmm @@ -99,8 +99,8 @@ /area/lv624/ground/caves/north_central_caves) "au" = ( /obj/structure/surface/table/woodentable/poor, -/obj/item/weapon/gun/shotgun/double/with_stock, -/obj/item/weapon/gun/shotgun/double/with_stock{ +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb{ pixel_y = 7 }, /turf/open/floor/wood, diff --git a/maps/map_files/LV624/standalone/sandtemple-jungle.dmm b/maps/map_files/LV624/standalone/sandtemple-jungle.dmm index 3b5a0176fb01..770d6a93473e 100644 --- a/maps/map_files/LV624/standalone/sandtemple-jungle.dmm +++ b/maps/map_files/LV624/standalone/sandtemple-jungle.dmm @@ -55,10 +55,9 @@ /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/south_west_jungle) "lR" = ( -/obj/item/attachable/bayonet{ +/obj/item/weapon/unathiknife{ desc = "A curved blade made of a strange material. It looks both old and very sharp."; force = 30; - icon_state = "unathiknife"; name = "\improper alien blade"; throwforce = 26 }, diff --git a/maps/map_files/New_Varadero/New_Varadero.dmm b/maps/map_files/New_Varadero/New_Varadero.dmm index b8733f060c4c..ca983240307f 100644 --- a/maps/map_files/New_Varadero/New_Varadero.dmm +++ b/maps/map_files/New_Varadero/New_Varadero.dmm @@ -1,22 +1,19 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aad" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/folder/black_random{ - pixel_x = -4; - pixel_y = -4 - }, -/obj/item/folder/black_random, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/records) "aae" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/shiva, /area/varadero/interior/disposals) -"aai" = ( -/turf/open/auto_turf/sand_white/layer0, -/area/varadero/interior/maintenance) +"aag" = ( +/obj/effect/overlay/palmtree_r{ + icon_state = "palm2"; + pixel_x = 21 + }, +/obj/effect/decal/cleanable/blood/drip{ + pixel_y = 15; + pixel_x = -14 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "aaA" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/bed/sofa/vert/grey/top, @@ -24,6 +21,22 @@ icon_state = "floor3" }, /area/varadero/interior/medical) +"aaG" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/gm/coast/beachcorner2/south_west, +/area/varadero/exterior/monsoon) +"abf" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 4 + }, +/mob/living/simple_animal/mouse, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/varadero/interior/medical) "abl" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/radio, @@ -32,6 +45,15 @@ icon_state = "red" }, /area/varadero/interior/security) +"abu" = ( +/obj/item/stack/sheet/wood, +/obj/item/shard{ + icon_state = "large"; + pixel_x = -5; + pixel_y = -6 + }, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "abE" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -43,18 +65,18 @@ }, /turf/open/floor/plating, /area/varadero/interior/maintenance/security) -"acq" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/microwave{ - desc = "There's two of them."; - pixel_x = -3; - pixel_y = 7 +"abK" = ( +/obj/structure/barricade/handrail/wire{ + dir = 4 }, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "blue" +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/technical_storage) +/area/varadero/exterior/pontoon_beach) +"abL" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/swcaves) "acO" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/box/beakers, @@ -64,12 +86,15 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) +"adw" = ( +/turf/closed/wall/r_wall, +/area/varadero/interior/cargo) "adC" = ( /obj/item/clipboard{ pixel_x = 4; pixel_y = 5 }, -/turf/open/floor/wood, +/turf/open/floor/carpet, /area/varadero/interior/research) "adR" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -78,6 +103,12 @@ icon_state = "multi_tiles" }, /area/varadero/interior/electrical) +"aer" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "afg" = ( /turf/closed/wall/r_wall/elevator{ dir = 8 @@ -106,6 +137,12 @@ icon_state = "green" }, /area/varadero/interior/hall_SE) +"afz" = ( +/obj/structure/machinery/door/airlock/multi_tile/elevator/access/dormatory, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/hall_N) "afR" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -117,10 +154,49 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) +"agi" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/turf/open/floor/wood, +/area/varadero/interior/bunks) "agl" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/wood, /area/varadero/interior/hall_SE) +"agn" = ( +/obj/structure/window_frame/colony, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) +"agJ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/box/trackimp, +/obj/item/device/binoculars, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "red" + }, +/area/varadero/interior/security) "agM" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/airlock/almayer/secure{ @@ -133,9 +209,18 @@ }, /turf/open/floor/plating, /area/varadero/interior/electrical) +"ahb" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/effect/overlay/palmtree_r, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz1_near) "ahg" = ( /turf/closed/wall, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/dock_control) "ahD" = ( /obj/item/shard{ icon_state = "medium" @@ -157,28 +242,15 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) -"aii" = ( -/mob/living/simple_animal/hostile/retaliate/clown{ - desc = "They lacked critical information when they asked for this. But ask and you shall receive. Gonzo is here hunting an escaped Nexus 7 who is hiding amongst UA service members."; - health = 10000; - move_to_delay = 2; - name = "Gonzo the Magnificent"; - rapid = 1 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/oob) -"aiK" = ( -/obj/structure/machinery/door_control{ - id = "undergroundhangarsouth"; - name = "Underground Hangar Lock"; - pixel_x = -24 +"aiR" = ( +/obj/structure/machinery/door/airlock/almayer/security{ + name = "\improper Underground Security Evidence Storage"; + req_access_txt = "100" }, -/turf/open/floor/plating/icefloor{ - icon_state = "warnplate" +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/security) "akd" = ( /obj/structure/closet/secure_closet/freezer/fridge, /obj/structure/machinery/firealarm{ @@ -196,6 +268,12 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) +"akg" = ( +/obj/effect/overlay/palmtree_r, +/turf/open/gm/dirt{ + icon_state = "desert0" + }, +/area/varadero/exterior/monsoon) "akk" = ( /obj/structure/surface/table/woodentable, /obj/structure/pipes/standard/simple/hidden/green{ @@ -209,6 +287,17 @@ }, /turf/open/floor/carpet, /area/varadero/interior/library) +"akn" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno/up, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/vessel) +"akO" = ( +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/mess) "ald" = ( /obj/structure/pipes/unary/freezer{ dir = 8; @@ -236,13 +325,22 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/wood, /area/varadero/interior/bunks) -"alE" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +"alD" = ( +/obj/structure/filtration/coagulation_arm{ + indestructible = 1; + layer = 2.1; + density = 0 }, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/obj/structure/barricade/handrail/wire{ + dir = 8; + layer = 2.991 + }, +/obj/structure/platform, +/turf/open/gm/river/desert/deep/covered, +/area/varadero/interior/maintenance/north) "alG" = ( /obj/structure/bed/chair{ dir = 8 @@ -260,20 +358,22 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/caves) -"amu" = ( -/turf/closed/wall/r_wall, -/area/varadero/exterior/lz1_near) -"amK" = ( -/obj/structure/pipes/standard/simple/hidden/green{ +"alM" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/machinery/light/small{ - dir = 1 +/obj/structure/machinery/sleep_console, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/area/varadero/interior/medical) +"ami" = ( +/obj/structure/prop/dam/crane/damaged{ + dir = 4 }, -/area/varadero/interior/maintenance/security) +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves/digsite) "ani" = ( /obj/structure/machinery/vending/security, /turf/open/floor/shiva{ @@ -281,13 +381,6 @@ icon_state = "blue" }, /area/varadero/interior/technical_storage) -"ann" = ( -/obj/structure/machinery/door/airlock/almayer/security{ - name = "\improper Underground Security Evidence Storage"; - req_access_txt = "100" - }, -/turf/open/floor/plating, -/area/varadero/interior/security) "anu" = ( /obj/structure/disposalpipe/junction{ dir = 8; @@ -300,15 +393,12 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_N) -"anO" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/security/glass{ - dir = 1; - name = "\improper Underground Security Detective's Office"; - req_access_txt = "100" - }, -/turf/open/floor/plating, -/area/varadero/interior/security) +"anA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/woodentable, +/obj/item/storage/box/drinkingglasses, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "aoi" = ( /obj/item/device/flashlight/lamp/tripod, /turf/open/floor/plating/icefloor{ @@ -326,17 +416,31 @@ icon_state = "redfull" }, /area/varadero/interior/medical) -"aoU" = ( -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/wood, -/area/varadero/interior/records) -"apl" = ( -/obj/structure/reagent_dispensers/water_cooler/stacks{ - density = 0; - pixel_y = 17 +"aoC" = ( +/turf/closed/wall/rock/brown, +/area/varadero/interior/comms2) +"aoE" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating, +/area/varadero/interior/maintenance/research) +"apj" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/turf/open/floor/wood, -/area/varadero/interior/chapel) +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/security) +"apG" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/item/lightstick/variant/planted, +/turf/open/gm/coast/beachcorner/south_west, +/area/varadero/exterior/farocean) +"apH" = ( +/obj/item/tool/wrench, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) "apI" = ( /obj/structure/machinery/computer/cameras/telescreen{ name = "Interrogation Telescreen"; @@ -351,6 +455,15 @@ icon_state = "red" }, /area/varadero/interior/security) +"apY" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/hall_SE) "aqb" = ( /obj/structure/machinery/light{ dir = 4 @@ -360,18 +473,35 @@ icon_state = "snow_mat" }, /area/varadero/interior/security) -"aqf" = ( -/obj/structure/pipes/vents/pump{ - dir = 4 +"aqh" = ( +/obj/structure/flora/bush/desert{ + icon_state = "tree_2"; + pixel_x = -18; + pixel_y = -8 }, -/turf/open/floor/shiva, -/area/varadero/interior/technical_storage) +/obj/structure/prop/ice_colony/dense/planter_box/hydro{ + pixel_x = -17; + pixel_y = -19 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/pontoon_beach) "aqk" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) +"aqq" = ( +/obj/structure/prop/rock/brown, +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/gm/coast/beachcorner/south_east, +/area/varadero/exterior/pontoon_beach) "aqw" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -390,11 +520,21 @@ icon_state = "greenfull" }, /area/varadero/interior/hall_N) -"arG" = ( -/obj/structure/machinery/power/port_gen/pacman/mrs, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +"arC" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, +/area/varadero/interior/comms1) +"arF" = ( +/obj/structure/closet/crate/trashcart, +/obj/item/trash/ceramic_plate, +/obj/item/trash/popcorn, +/obj/item/trash/candy, +/obj/item/tool/crowbar, +/obj/item/tool/lighter/zippo, +/turf/open/auto_turf/sand_white/layer1, /area/varadero/exterior/lz1_near) "asf" = ( /obj/structure/bed/chair/hunter{ @@ -404,28 +544,11 @@ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) -"asi" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/closed/wall/r_wall, -/area/varadero/interior/caves/east) "asx" = ( /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) -"asJ" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/turf/open/gm/coast/north, -/area/varadero/exterior/pontoon_beach) -"atb" = ( -/obj/structure/machinery/vending/snack, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "yellow" - }, -/area/varadero/interior/cargo) "atz" = ( /obj/structure/machinery/vending/cigarette/colony, /turf/open/floor/shiva{ @@ -439,18 +562,18 @@ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) -"auf" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/plating, -/area/varadero/interior/security) -"auy" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +"aud" = ( +/obj/structure/sink{ + pixel_y = 15 }, -/turf/open/gm/river, -/area/varadero/interior/caves/north_research) +/obj/structure/mirror{ + pixel_y = 28 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/floor{ + icon_state = "white" + }, +/area/varadero/interior/toilets) "auE" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -461,10 +584,6 @@ icon_state = "greenfull" }, /area/varadero/interior/hall_NW) -"auU" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/wood, -/area/varadero/exterior/lz1_near) "avl" = ( /obj/structure/disposalpipe/junction{ dir = 8; @@ -490,33 +609,65 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/gm/dirt, /area/varadero/exterior/lz1_near) -"awf" = ( -/obj/item/toy/beach_ball, -/turf/open/gm/coast/south, -/area/varadero/exterior/pontoon_beach) -"axX" = ( -/obj/structure/machinery/door/poddoor/two_tile/four_tile/vertical/secure{ - id = "undergroundhangarwest"; - name = "Underground Hangar" +"avX" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/coast/beachcorner/north_east, +/area/varadero/exterior/comms4) +"awr" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/turf/open/gm/dirt{ + icon_state = "desert0" }, -/turf/open/floor/plating/icefloor, /area/varadero/exterior/lz1_near) +"awu" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/research) +"awJ" = ( +/turf/open/gm/coast/beachcorner/south_east, +/area/varadero/interior_protected/caves/central) +"axh" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) +"axs" = ( +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) +"axv" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) "axY" = ( /obj/structure/bed/chair/comfy/lime, /turf/open/floor/wood, /area/varadero/interior/research) -"axZ" = ( -/obj/structure/flora/pottedplant{ - desc = "How did that get in there?"; - icon_state = "pottedplant_22"; - pixel_y = 8 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/river, -/area/varadero/interior_protected/caves) "ayo" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -527,12 +678,54 @@ icon_state = "multi_tiles" }, /area/varadero/interior/administration) -"azH" = ( -/obj/structure/tunnel{ - id = "cargo_tunnel" +"ayx" = ( +/obj/structure/prop/power_transformer{ + dir = 0 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, +/area/varadero/exterior/lz2_near) +"ayF" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, /turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior/caves/north_research) +/area/varadero/exterior/lz2_near) +"azh" = ( +/obj/item/clothing/shoes/swimmingfins, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "snow_mat" + }, +/area/varadero/interior/maintenance) +"azr" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) +"azv" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/hall_SE) +"azw" = ( +/obj/structure/largecrate/random/mini/wooden, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "azK" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -550,6 +743,59 @@ }, /turf/open/floor/wood, /area/varadero/interior/administration) +"aAj" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/mess) +"aAr" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -1; + pixel_y = 9; + indestructible = 1; + unacidable = 1 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/farocean) +"aAC" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) +"aAX" = ( +/obj/docking_port/stationary/marine_dropship/lz2{ + name = "LZ2: Palm Airfield" + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"aAY" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) "aBp" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -558,24 +804,49 @@ icon_state = "freezerfloor" }, /area/varadero/interior/cargo) +"aBz" = ( +/obj/item/stack/cable_coil, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) "aBB" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"aBE" = ( -/obj/structure/tunnel{ - id = "east_cargo_tunnel" - }, -/turf/open/auto_turf/sand_white/layer0, -/area/varadero/interior/caves/north_research) "aBK" = ( /obj/structure/flora/bush/ausbushes/var3/brflowers{ icon_state = "brflowers_3" }, /turf/open/gm/grass/grass1/weedable, /area/varadero/interior_protected/caves/central) +"aBO" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/disposals) +"aCd" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/comms4) "aCl" = ( /obj/structure/machinery/door/airlock/strata/autoname{ autoname = 0; @@ -588,21 +859,12 @@ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) -"aCm" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/bed/chair{ - buckling_y = 18; - dir = 8; - icon_state = "chair_alt"; - pixel_x = -5; - pixel_y = 12 - }, +"aCo" = ( +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/maintenance/security) +/area/varadero/exterior/lz1_near) "aCz" = ( /obj/structure/window/framed/colony/reinforced, /turf/open/floor/shiva{ @@ -622,13 +884,30 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) -"aCM" = ( -/obj/structure/closet/toolcloset, +"aCW" = ( +/obj/effect/overlay/palmtree_r{ + icon_state = "palm2" + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) +"aCX" = ( +/obj/structure/barricade/handrail/wire{ + dir = 4 + }, /turf/open/floor{ dir = 1; icon_state = "asteroidfloor" }, -/area/varadero/exterior/lz1_near) +/area/varadero/exterior/lz2_near) +"aCY" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/power/apc{ + dir = 1 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) "aDu" = ( /obj/structure/machinery/power/apc{ dir = 1; @@ -700,20 +979,6 @@ icon_state = "redfull" }, /area/varadero/interior/medical) -"aEn" = ( -/obj/structure/stairs/perspective{ - color = "#6b675e"; - dir = 1; - icon_state = "p_stair_full" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/turf/open/floor/strata{ - color = "#5e5d5d"; - icon_state = "multi_tiles" - }, -/area/varadero/interior_protected/vessel) "aED" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice12"; @@ -724,6 +989,16 @@ icon_state = "floor3" }, /area/varadero/interior/hall_SE) +"aEQ" = ( +/obj/structure/shuttle/engine/router{ + dir = 4; + unacidable = 0 + }, +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" + }, +/area/varadero/interior_protected/vessel) "aFg" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -749,21 +1024,21 @@ icon_state = "floor3" }, /area/varadero/interior/laundry) -"aFo" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) -"aFr" = ( -/obj/effect/overlay/palmtree_r{ - icon_state = "palm2" - }, -/turf/closed/wall/rock/brown, -/area/varadero/interior/oob) "aFt" = ( /turf/closed/wall, /area/varadero/interior_protected/maintenance/south) +"aFu" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/varadero/interior/cargo) +"aFK" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/electrical) "aFM" = ( /obj/structure/machinery/door/window/brigdoor/westleft{ dir = 4; @@ -777,6 +1052,25 @@ icon_state = "floor3" }, /area/varadero/interior/security) +"aFX" = ( +/obj/effect/decal/warning_stripes/asteroid{ + dir = 1; + icon_state = "warning_s" + }, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "greencorners" + }, +/area/varadero/interior/hall_SE) +"aGx" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/carpet, +/area/varadero/interior/chapel) "aGX" = ( /obj/structure/closet/firecloset/full, /obj/structure/machinery/light{ @@ -804,16 +1098,35 @@ /obj/effect/landmark/objective_landmark/science, /turf/open/floor/wood, /area/varadero/interior/research) -"aHy" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" +"aHu" = ( +/turf/open/gm/dirt{ + icon_state = "desert3" }, /area/varadero/exterior/lz1_near) -"aHM" = ( -/obj/structure/machinery/firealarm{ - pixel_y = 24 +"aHw" = ( +/obj/structure/prop/structure_lattice{ + dir = 1; + health = 300 + }, +/obj/structure/prop/structure_lattice{ + dir = 1; + layer = 3.1; + pixel_y = 10 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) +"aHy" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) +"aHM" = ( +/obj/structure/machinery/firealarm{ + pixel_y = 24 }, /turf/open/floor/wood, /area/varadero/interior/security) @@ -870,14 +1183,36 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 1 }, -/obj/item/clothing/mask/gas/yautja{ - pixel_x = 1; - pixel_y = -12 - }, /turf/open/shuttle{ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) +"aJD" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) "aJF" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -888,6 +1223,12 @@ }, /turf/open/floor/carpet, /area/varadero/interior/hall_SE) +"aJI" = ( +/obj/effect/landmark/ert_spawns/groundside_xeno, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/varadero/interior/research) "aJP" = ( /obj/structure/bed/chair/wood/normal, /turf/open/floor/carpet, @@ -912,12 +1253,26 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) +"aKJ" = ( +/obj/item/tool/warning_cone, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = -8 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "aLc" = ( /turf/open/floor/shiva{ dir = 4; icon_state = "yellowcorners" }, /area/varadero/interior/disposals) +"aLl" = ( +/turf/open/floor/shiva{ + icon_state = "wred" + }, +/area/varadero/interior/medical) "aLn" = ( /obj/effect/landmark/hunter_primary, /turf/open/floor/shiva{ @@ -930,42 +1285,42 @@ icon_state = "redfull" }, /area/varadero/interior/medical) -"aNz" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "req_sec_storage"; - name = "\improper Requesitions Storage Shutters" +"aMC" = ( +/turf/closed/wall/r_wall/unmeltable, +/area/varadero/interior/maintenance/north) +"aMN" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/machinery/light/small{ + dir = 1 }, -/turf/open/floor/plating, -/area/varadero/interior/cargo) +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "aOg" = ( /turf/open/gm/grass/grass1/weedable, /area/varadero/interior_protected/caves/central) -"aOi" = ( -/turf/open/floor/shiva{ - dir = 8; - icon_state = "snow_mat" - }, -/area/varadero/interior/security) -"aOZ" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -11 - }, -/turf/open/floor{ - icon_state = "white" +"aOG" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -1; + pixel_y = 9; + indestructible = 1; + unacidable = 1 }, -/area/varadero/interior/toilets) +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/digsite) "aPe" = ( /obj/effect/decal/cleanable/blood, /obj/effect/landmark/corpsespawner/scientist, /turf/open/floor/carpet, /area/varadero/interior/hall_SE) -"aPw" = ( -/obj/structure/closet/crate/freezer, -/turf/open/floor{ - icon_state = "freezerfloor" +"aPQ" = ( +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/shiva{ + dir = 1 }, -/area/varadero/interior/cargo) +/area/varadero/interior/research) "aPU" = ( /obj/structure/bed/chair{ icon_state = "chair_alt" @@ -986,7 +1341,7 @@ "aQq" = ( /obj/structure/window/framed/colony/reinforced/hull, /turf/open/floor/plating/icefloor, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/dock_control) "aQu" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -1002,46 +1357,77 @@ icon_state = "red" }, /area/varadero/interior/morgue) +"aQN" = ( +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) +"aQR" = ( +/obj/structure/pipes/standard/manifold/hidden/green, +/obj/effect/landmark/objective_landmark/far, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/security) +"aQY" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/tool/screwdriver, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) "aRr" = ( /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/hall_NW) -"aRH" = ( -/obj/structure/machinery/power/apc{ - pixel_y = -24; - start_charge = 0 +"aRL" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/door/window/eastright{ + dir = 1; + pixel_y = 17 + }, +/obj/item/weapon/gun/revolver/cmb{ + pixel_y = 2 + }, +/obj/item/clothing/ears/earmuffs{ + icon_state = "earmuffs2"; + pixel_x = 2; + pixel_y = 8 }, /turf/open/floor/shiva{ icon_state = "floor3" }, -/area/varadero/interior/medical) -"aRI" = ( -/obj/item/toy/handcard/uno_reverse_purple{ - pixel_x = 9; - pixel_y = 6 +/area/varadero/interior/security) +"aSe" = ( +/obj/item/reagent_container/food/snacks/birthdaycakeslice, +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) +"aSj" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 }, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) +"aSt" = ( +/obj/item/stack/sheet/wood, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) +"aSU" = ( +/obj/structure/catwalk, +/turf/open/floor/plating/plating_catwalk, +/area/varadero/interior/maintenance/north) +"aTg" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/gm/dirt{ + icon_state = "desert3" }, /area/varadero/exterior/lz1_near) -"aTc" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - name = "\improper Underground Maintenance"; - req_access_txt = "100"; - req_one_access = null - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance) "aTh" = ( -/obj/structure/machinery/alarm{ - dir = 1; - pixel_y = -24 - }, /obj/effect/landmark/hunter_primary, /turf/open/floor/shiva{ icon_state = "floor3" @@ -1069,17 +1455,18 @@ dir = 1 }, /area/varadero/interior/cargo) -"aUj" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1; - name = "\improper Underground Lavatory"; - req_access_txt = "100"; - req_one_access = null +"aTY" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/turf/open/floor/plating, -/area/varadero/interior/laundry) +/area/varadero/exterior/pontoon_beach) +"aUA" = ( +/obj/structure/prop/rock/brown, +/obj/structure/prop/invuln/lattice_prop, +/turf/open/gm/coast/beachcorner/north_west, +/area/varadero/exterior/pool) "aUD" = ( /obj/structure/bed/chair/comfy/beige{ dir = 4 @@ -1103,21 +1490,51 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"aVE" = ( -/obj/structure/pipes/standard/manifold/hidden/green, +"aVs" = ( +/obj/structure/machinery/door/poddoor/almayer/planet_side_blastdoor{ + id = "undergroundhangarsouth"; + unacidable = 1; + name = "Pontoon South Door"; + openspeed = 17 + }, +/turf/open/floor/plating/icefloor{ + dir = 1; + icon_state = "warnplate" + }, +/area/varadero/interior/maintenance/north) +"aVt" = ( +/obj/structure/prop/structure_lattice{ + density = 0; + desc = "On closer inspection, everything on these shelves are made of plastic."; + icon_state = "book-3"; + name = "book case" + }, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/varadero/interior/library) +"aVF" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/microwave{ + desc = "There's two of them."; + pixel_x = -3; + pixel_y = 7 + }, +/obj/structure/machinery/light{ + dir = 1 + }, /turf/open/floor/shiva{ - dir = 8; - icon_state = "green" + dir = 1; + icon_state = "blue" }, -/area/varadero/interior/mess) +/area/varadero/interior/technical_storage) "aVQ" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited, /turf/closed/wall, /area/varadero/interior/hall_N) -"aWz" = ( -/obj/structure/bed/chair, -/turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) "aWA" = ( /obj/structure/largecrate/random/case/small, /turf/open/floor/shiva{ @@ -1131,6 +1548,10 @@ icon_state = "darkgreencorners2" }, /area/varadero/interior/hall_SE) +"aXb" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves/digsite) "aXm" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -1139,6 +1560,26 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) +"aXn" = ( +/obj/structure/prop/rock/brown, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/eastocean) +"aXt" = ( +/obj/structure/catwalk, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/gm/river/desert/deep{ + base_river_slowdown = 0 + }, +/area/varadero/interior/maintenance/north) "aXz" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -1147,6 +1588,25 @@ icon_state = "snow_mat" }, /area/varadero/interior/maintenance) +"aXA" = ( +/obj/structure/largecrate/supply/medicine/iv, +/turf/open/shuttle/elevator/grating, +/area/varadero/interior/records) +"aYg" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior/caves/north_research) "aZb" = ( /obj/structure/bedsheetbin{ icon_state = "linenbin-empty" @@ -1159,15 +1619,31 @@ icon_state = "floor3" }, /area/varadero/interior/bunks) -"aZt" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - name = "\improper Underground Maintenance"; - req_access_txt = "100"; - req_one_access = null +"aZq" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 }, -/turf/open/floor/plating, -/area/varadero/exterior/lz1_near) +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/structure/machinery/light, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/varadero/interior/medical) "aZv" = ( /obj/structure/bed/chair{ dir = 4; @@ -1175,23 +1651,17 @@ }, /turf/open/floor/wood, /area/varadero/interior/hall_SE) -"aZZ" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/bed/chair{ - icon_state = "chair_alt"; - pixel_x = 3; - pixel_y = 17 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +"aZX" = ( +/turf/open/floor/shiva{ + dir = 4; + icon_state = "yellow" }, -/area/varadero/interior/maintenance/security) +/area/varadero/interior/comms3) "baa" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 }, +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, @@ -1205,6 +1675,19 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) +"bah" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/pontoon_beach) "bak" = ( /obj/structure/prop/invuln/overhead_pipe{ dir = 4; @@ -1226,14 +1709,33 @@ icon_state = "red" }, /area/varadero/interior/security) +"baN" = ( +/obj/structure/closet/crate/secure, +/obj/effect/landmark/objective_landmark/close, +/obj/item/trash/wy_chips_pepper, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/cargo) "bbt" = ( /obj/effect/landmark/hunter_primary, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) -"bbS" = ( -/obj/item/stack/sheet/wood/small_stack, +"bbG" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/gm/coast/west, +/area/varadero/exterior/pontoon_beach) +"bbK" = ( +/obj/effect/decal/cleanable/blood/drip, /turf/open/gm/dirt, -/area/varadero/interior/maintenance/north) +/area/varadero/exterior/lz2_near) +"bbW" = ( +/obj/item/clothing/under/shorts/black, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "bluefull" + }, +/area/varadero/interior/maintenance) "bcg" = ( /obj/structure/surface/rack, /obj/structure/window/reinforced{ @@ -1246,6 +1748,38 @@ icon_state = "purplefull" }, /area/varadero/interior/research) +"bcD" = ( +/obj/item/tool/wet_sign, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/eastbeach) +"bdc" = ( +/obj/item/stack/tile/plasteel{ + layer = 2.89; + pixel_x = 17; + pixel_y = 16 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) +"bdH" = ( +/turf/open/gm/coast/beachcorner/north_east, +/area/varadero/interior/caves/north_research) +"bdJ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/security{ + name = "\improper Underground Security Custodial Closet"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/security) "ben" = ( /obj/structure/filingcabinet{ density = 0; @@ -1267,6 +1801,16 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/wood, /area/varadero/interior/bunks) +"bez" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/closet/crate, +/obj/effect/landmark/objective_landmark/far, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "beE" = ( /obj/item/device/taperecorder, /obj/structure/surface/table/reinforced/prison, @@ -1274,6 +1818,9 @@ icon_state = "redfull" }, /area/varadero/interior/security) +"beK" = ( +/turf/open/gm/coast/beachcorner/north_east, +/area/varadero/exterior/lz2_near) "beM" = ( /obj/structure/machinery/light{ dir = 4 @@ -1285,12 +1832,6 @@ icon_state = "red" }, /area/varadero/interior/security) -"beU" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/turf/open/gm/coast/beachcorner/south_west, -/area/varadero/exterior/eastbeach) "bfg" = ( /obj/structure/surface/table, /obj/item/ashtray/plastic, @@ -1319,14 +1860,19 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) -"bgi" = ( -/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ - icon_state = "sparsegrass_2" - }, +"bfX" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood, +/obj/effect/landmark/corpsespawner/colonist, /turf/open/gm/dirt{ icon_state = "desert3" }, -/area/varadero/exterior/pontoon_beach) +/area/varadero/exterior/eastbeach) +"bgh" = ( +/turf/open/floor/plating/icefloor{ + icon_state = "warnplate" + }, +/area/varadero/interior/maintenance/north) "bgl" = ( /turf/open/floor/shiva{ dir = 1; @@ -1336,50 +1882,23 @@ "bgE" = ( /turf/closed/wall/r_wall, /area/varadero/interior/maintenance/north) -"bhp" = ( -/obj/structure/surface/rack, -/obj/item/ammo_magazine/pistol/mod88, -/obj/item/ammo_magazine/pistol/mod88, -/obj/item/ammo_magazine/pistol/mod88, -/obj/item/ammo_magazine/pistol/mod88{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/ammo_magazine/pistol/mod88{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/ammo_magazine/pistol/mod88{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/ammo_magazine/pistol/mod88{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/ammo_magazine/pistol/mod88{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/ammo_magazine/pistol/mod88, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "red" - }, -/area/varadero/interior/security) "bhF" = ( /obj/structure/sign/safety/water{ pixel_x = 15 }, /turf/closed/wall/r_wall, /area/varadero/interior/hall_N) -"bhS" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/wood, -/area/varadero/interior/research) +"bhU" = ( +/obj/structure/machinery/floodlight{ + name = "Floodlight"; + unacidable = 0; + wrenchable = 1 + }, +/obj/structure/platform_decoration/kutjevo{ + dir = 8 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/digsite) "bih" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -1407,17 +1926,6 @@ icon_state = "floor3" }, /area/varadero/interior/morgue) -"biA" = ( -/obj/structure/prop/ice_colony/dense/planter_box/hydro{ - density = 0 - }, -/obj/structure/flora/bush/desert{ - icon_state = "tree_2"; - pixel_x = -1; - pixel_y = 12 - }, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) "biF" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/pipes/standard/simple/hidden/green, @@ -1432,6 +1940,18 @@ icon_state = "purplefull" }, /area/varadero/interior/research) +"biS" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "bjf" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -1445,13 +1965,6 @@ icon_state = "purplefull" }, /area/varadero/interior/research) -"bjz" = ( -/obj/structure/sign/safety/water, -/obj/structure/sign/safety/south{ - pixel_x = 15 - }, -/turf/closed/wall/r_wall, -/area/varadero/interior/maintenance) "bjA" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/shiva{ @@ -1459,6 +1972,10 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"bjC" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "bjP" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/far, @@ -1466,13 +1983,12 @@ icon_state = "floor3" }, /area/varadero/interior/records) -"bkx" = ( -/obj/structure/machinery/constructable_frame, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "yellow" +"bko" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 }, -/area/varadero/interior/electrical) +/turf/open/gm/coast/west, +/area/varadero/exterior/monsoon) "bkC" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/airlock/almayer/secure{ @@ -1500,12 +2016,10 @@ "bkM" = ( /turf/closed/wall, /area/varadero/interior/hall_SE) -"bkU" = ( -/turf/open/floor/plating/icefloor{ - dir = 8; - icon_state = "warnplate" - }, -/area/varadero/exterior/lz1_near) +"bls" = ( +/obj/effect/landmark/ert_spawns/groundside_xeno, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/central) "bmt" = ( /obj/structure/surface/rack, /obj/structure/window/reinforced{ @@ -1518,6 +2032,20 @@ icon_state = "purplefull" }, /area/varadero/interior/research) +"bmI" = ( +/obj/effect/landmark/xeno_hive_spawn, +/obj/effect/landmark/ert_spawns/groundside_xeno, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/digsite) +"bmV" = ( +/obj/effect/decal/warning_stripes/asteroid{ + icon_state = "warning_s" + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) "bnc" = ( /obj/structure/surface/table, /obj/item/reagent_container/food/drinks/cup{ @@ -1535,6 +2063,23 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"bnf" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) +"bng" = ( +/obj/structure/surface/rack, +/obj/item/tool/pickaxe, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) +"bnm" = ( +/turf/closed/wall/rock/brown, +/area/varadero/interior/cargo) "bnB" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -1548,12 +2093,16 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"bnH" = ( +/obj/structure/prop/dam/truck/damaged, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "boI" = ( /obj/structure/prop/almayer/computers/sensor_computer2, /turf/open/floor/prison{ icon_state = "darkredfull2" }, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/dock_control) "boV" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -1563,16 +2112,22 @@ icon_state = "snow_mat" }, /area/varadero/interior/maintenance) -"bpM" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 1; - pixel_y = 7 +"bpH" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, +/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior_protected/maintenance/south) +/area/varadero/interior/cargo) +"bpI" = ( +/obj/effect/landmark/hunter_secondary, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/hall_N) "bpT" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -1624,30 +2179,29 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) -"bsH" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +"bte" = ( +/obj/structure/closet/crate/radiation, +/obj/item/stack/sheet/mineral/phoron/medium_stack{ + pixel_x = -5 }, -/area/varadero/interior_protected/maintenance/south) -"btl" = ( -/obj/structure/machinery/light{ - dir = 1 +/obj/item/stack/sheet/mineral/uranium/small_stack{ + pixel_y = -7; + pixel_x = 5 }, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "green" +/obj/item/stack/sheet/mineral/lead{ + pixel_x = 2; + pixel_y = 6; + amount = 5 }, -/area/varadero/interior/mess) -"bug" = ( -/obj/structure/bed/chair{ - dir = 8 +/turf/open/shuttle/elevator, +/area/varadero/interior/hall_N) +"btU" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/turf/open/floor/shiva, -/area/varadero/interior/technical_storage) +/turf/open/gm/coast/beachcorner2/south_west, +/area/varadero/exterior/pontoon_beach) "bum" = ( /obj/structure/machinery/shower{ dir = 4 @@ -1658,6 +2212,14 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/carpet, /area/varadero/interior/administration) +"buB" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/hall_SE) "buH" = ( /obj/structure/machinery/light, /turf/open/floor/shiva{ @@ -1665,20 +2227,6 @@ icon_state = "greenfull" }, /area/varadero/interior/hall_SE) -"buN" = ( -/obj/structure/prop/rock/brown{ - layer = 2 - }, -/obj/structure/bed{ - can_buckle = 0; - desc = "A lightweight support lattice."; - icon = 'icons/obj/structures/structures.dmi'; - icon_state = "latticefull"; - layer = 2.1; - name = "lattice" - }, -/turf/open/gm/river, -/area/varadero/interior_protected/vessel) "bvE" = ( /obj/structure/machinery/power/apc{ dir = 1; @@ -1689,39 +2237,26 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) -"bvR" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/barricade/handrail{ - desc = "Your platforms look pretty heavy king, let me support them for you."; - dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" - }, -/turf/open/gm/river, -/area/varadero/interior/oob) -"bvS" = ( -/obj/structure/bedsheetbin, -/obj/item/clothing/gloves/marine/veteran/pmc, -/turf/open/floor/shiva{ - icon_state = "floor3" +"bvF" = ( +/obj/structure/flora/bush/desert{ + icon_state = "tree_2"; + pixel_x = -18; + pixel_y = -8 }, -/area/varadero/interior/laundry) -"bwd" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/prop/ice_colony/dense/planter_box/hydro{ + pixel_x = -17; + pixel_y = -19 }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Underground Power Substation"; - req_access_txt = "100" +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/turf/open/floor/plating, -/area/varadero/interior/electrical) +/area/varadero/exterior/pontoon_beach) "bwz" = ( /obj/structure/closet/emcloset, /turf/open/floor/shiva{ @@ -1777,15 +2312,64 @@ pixel_x = 8; pixel_y = 3 }, +/obj/item/book/manual/marine_law{ + pixel_x = 8 + }, +/obj/item/reagent_container/food/drinks/bottle/vodka{ + pixel_x = -5; + pixel_y = 1 + }, +/obj/item/handcuffs{ + pixel_x = 2; + pixel_y = 16 + }, +/obj/structure/machinery/alarm{ + dir = 8; + pixel_x = 24 + }, /turf/open/floor/shiva{ icon_state = "redfull" }, /area/varadero/interior/security) +"bys" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "byw" = ( /obj/structure/surface/table, /obj/item/folder/black, /turf/open/floor/interior/plastic, /area/varadero/interior_protected/caves/digsite) +"byC" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/eastocean) +"byF" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor/plating/bare_catwalk, +/area/varadero/exterior/farocean) +"byU" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/research) +"bzf" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "snow_mat" + }, +/area/varadero/interior/maintenance) "bzn" = ( /obj/effect/decal/warning_stripes{ icon_state = "E" @@ -1801,12 +2385,67 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) -"bAT" = ( -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" +"bzz" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/comms3) +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"bAj" = ( +/obj/structure/prop/ice_colony/dense/planter_box/plated{ + dir = 9; + icon_state = "planter_box_soil" + }, +/obj/structure/flora/bush/ausbushes/pointybush{ + pixel_y = 11 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/cargo) +"bAE" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/structure/prop/structure_lattice{ + density = 0; + desc = "Made in Little Japan."; + health = 300; + icon = 'icons/obj/items/items.dmi'; + icon_state = "sheet-lizard"; + name = "exotic bedsheet"; + pixel_x = -1 + }, +/obj/item/ammo_magazine/rifle/m4ra, +/turf/open/floor/wood, +/area/varadero/interior/bunks) +"bBo" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/records) "bBt" = ( /obj/structure/cable/heavyduty{ icon_state = "4-8" @@ -1823,6 +2462,20 @@ }, /turf/open/floor/plating, /area/varadero/interior_protected/caves/digsite) +"bBV" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/item/lightstick/variant/planted, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/farocean) +"bCi" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/research) "bCA" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -1831,12 +2484,12 @@ icon_state = "floor3" }, /area/varadero/interior/security) -"bDr" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, +"bCM" = ( +/obj/structure/platform_decoration/kutjevo, /obj/structure/platform/kutjevo/smooth{ - dir = 8 + dir = 1; + climb_delay = 1; + layer = 2.99 }, /obj/structure/barricade/handrail{ desc = "Your platforms look pretty heavy king, let me support them for you."; @@ -1844,23 +2497,20 @@ icon_state = "hr_kutjevo"; name = "support struts" }, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) -"bDM" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/area/varadero/exterior/pontoon_beach) +"bDs" = ( +/obj/item/weapon/gun/flare{ + current_mag = null }, -/obj/structure/barricade/handrail{ - desc = "Your platforms look pretty heavy king, let me support them for you."; +/turf/open/floor{ dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" + icon_state = "asteroidfloor" }, -/turf/open/gm/dirt, -/area/varadero/exterior/pontoon_beach) +/area/varadero/exterior/lz2_near) "bEj" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/junction, @@ -1868,6 +2518,30 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_N) +"bEX" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/comms3) +"bEY" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/prop/rock/brown{ + indestructible = 1; + unacidable = 1; + name = "sturdy rock(s)"; + desc = "A solidified collection of local minerals. When melted, becomes a substance best known as lava. These look particularly durable." + }, +/turf/open/gm/coast/beachcorner/south_east, +/area/varadero/exterior/pontoon_beach) "bFj" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/storage/box/donkpockets{ @@ -1903,7 +2577,7 @@ /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/maintenance/research) +/area/varadero/interior/cargo) "bGe" = ( /obj/item/stool{ pixel_x = 7; @@ -1927,11 +2601,11 @@ /area/varadero/interior/hall_SE) "bGC" = ( /obj/structure/sign/safety/restrictedarea, -/obj/structure/sign/safety/airlock{ - pixel_x = 15 - }, /turf/closed/wall, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/dock_control) +"bGU" = ( +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "bHc" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -1943,81 +2617,73 @@ icon_state = "white" }, /area/varadero/interior/toilets) -"bHo" = ( +"bIt" = ( +/turf/closed/wall, +/area/varadero/interior/technical_storage) +"bJv" = ( /obj/structure/platform/kutjevo/smooth{ - dir = 4 + dir = 4; + climb_delay = 1; + layer = 2.99 }, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 +/obj/structure/machinery/light{ + dir = 4 }, -/turf/open/gm/river, -/area/varadero/interior/maintenance) -"bHL" = ( -/turf/closed/wall/r_wall/elevator/arrivals{ - icon_state = "wall_button_freight" +/obj/structure/machinery/power/apc{ + dir = 1 }, -/area/varadero/interior/hall_N) -"bHT" = ( -/obj/structure/stairs/perspective{ - color = "#b29082"; +/turf/open/floor{ dir = 1; - icon_state = "p_stair_full" + icon_state = "asteroidfloor" }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/area/varadero/interior/comms1) +"bJH" = ( +/obj/item/tool/warning_cone, +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/turf/open/gm/dirt, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/digsite) +"bJI" = ( +/turf/closed/wall/rock/brown, /area/varadero/exterior/lz1_near) -"bIi" = ( -/obj/structure/prop/invuln/minecart_tracks{ - dir = 8 - }, +"bJV" = ( /obj/structure/platform/kutjevo/smooth{ - dir = 1 + dir = 8; + climb_delay = 1; + layer = 2.99 }, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/area/varadero/interior/oob) -"bIj" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/area/varadero/exterior/pontoon_beach) +"bLl" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior_protected/maintenance/south) -"bIq" = ( -/obj/structure/machinery/floodlight, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "yellow" +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" }, -/area/varadero/interior/electrical) -"bIt" = ( -/turf/closed/wall, -/area/varadero/interior/technical_storage) -"bIz" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior_protected/maintenance/south) -"bIQ" = ( -/obj/structure/prop/invuln/overhead_pipe{ +/obj/structure/platform/kutjevo/smooth{ dir = 4; - pixel_y = 13 + climb_delay = 1; + layer = 2.99 }, -/turf/open/gm/dirt, -/area/varadero/interior/maintenance/north) -"bJH" = ( -/obj/item/tool/warning_cone, -/obj/effect/decal/warning_stripes{ - icon_state = "S" +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior_protected/caves/digsite) +/area/varadero/exterior/pontoon_beach) "bLp" = ( /obj/structure/bed/chair/comfy/orange{ dir = 8 @@ -2046,6 +2712,26 @@ icon_state = "red" }, /area/varadero/interior/administration) +"bLN" = ( +/turf/open/floor/shiva{ + dir = 1; + icon_state = "multi_tiles" + }, +/area/varadero/interior/comms3) +"bLV" = ( +/obj/item/lightstick/variant/planted, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"bMf" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "\improper Underground Reception Archives"; + req_access_txt = "100" + }, +/turf/open/floor/plating, +/area/varadero/interior/records) "bMk" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -2056,6 +2742,13 @@ /obj/structure/largecrate/random/case/double, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/caves/north_research) +"bMG" = ( +/obj/structure/closet/crate/ammo/alt, +/obj/item/trash/ceramic_plate, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/cargo) "bMV" = ( /obj/structure/closet/hydrant{ pixel_y = 32 @@ -2090,28 +2783,6 @@ icon_state = "multi_tiles" }, /area/varadero/interior/administration) -"bNF" = ( -/obj/item/weapon/harpoon/yautja{ - anchored = 1; - name = "Alien Harpoon"; - pixel_x = 6 - }, -/obj/structure/showcase{ - color = "#95948B"; - desc = "A grey statue dawned in ancient armor, it stares into your soul."; - dir = 1; - icon = 'icons/mob/humans/species/r_synthetic.dmi'; - icon_state = "Synthetic_Template"; - name = "Eternal guardian" - }, -/obj/item/clothing/suit/armor/yautja_flavor{ - anchored = 1 - }, -/turf/open/floor/corsat{ - dir = 1; - icon_state = "squareswood" - }, -/area/varadero/interior_protected/vessel) "bNN" = ( /obj/structure/machinery/landinglight/ds2/delayone{ dir = 4 @@ -2122,11 +2793,34 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) -"bOZ" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/blocker/invisible_wall/water, -/turf/open/gm/river/ocean, -/area/varadero/interior/oob) +"bOO" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/obj/structure/machinery/alarm{ + pixel_y = 24 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/hall_N) +"bPe" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior_protected/caves) +"bPk" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "bPl" = ( /obj/structure/bed/chair{ dir = 1 @@ -2164,19 +2858,40 @@ /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" }, -/obj/item/attachable/heavy_barrel, /obj/structure/window/reinforced, /turf/open/floor/strata{ color = "#5e5d5d"; icon_state = "multi_tiles" }, /area/varadero/interior_protected/vessel) -"bQx" = ( -/obj/docking_port/stationary/marine_dropship/lz1{ - dwidth = 1 +"bPG" = ( +/obj/structure/surface/table/woodentable, +/obj/item/device/flashlight/lamp/candelabra{ + layer = 3.2; + pixel_x = 1; + pixel_y = 13 }, -/turf/open/floor/plating/icefloor, -/area/varadero/exterior/lz1_near) +/turf/open/floor/prison/chapel_carpet{ + dir = 1; + icon_state = "doubleside" + }, +/area/varadero/interior/chapel) +"bPL" = ( +/obj/item/handcuffs{ + pixel_x = 2; + pixel_y = 16 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/security) +"bQa" = ( +/obj/structure/catwalk, +/obj/structure/largecrate/random, +/turf/open/gm/river/desert/deep{ + base_river_slowdown = 0 + }, +/area/varadero/interior/maintenance/north) "bQH" = ( /obj/structure/pipes/standard/manifold/fourway/hidden/green, /obj/structure/disposalpipe/segment{ @@ -2202,15 +2917,6 @@ icon_state = "freezerfloor" }, /area/varadero/interior/cargo) -"bRp" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - name = "\improper Underground Maintenance"; - req_access_txt = "100"; - req_one_access = null - }, -/turf/open/floor/plating, -/area/varadero/interior/morgue) "bRQ" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 @@ -2225,15 +2931,57 @@ }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/maintenance/research) -"bSO" = ( -/obj/item/stack/rods, -/obj/item/shard{ - icon_state = "medium" +"bSd" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/shiva{ + dir = 1 }, -/turf/open/shuttle{ - icon_state = "floor6" +/area/varadero/interior/research) +"bSj" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 }, -/area/varadero/interior_protected/vessel) +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice1"; + pixel_x = -16; + pixel_y = -8 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"bSu" = ( +/obj/structure/closet/crate/supply, +/obj/effect/spawner/random/attachment, +/turf/open/shuttle/elevator/grating, +/area/varadero/interior/records) +"bSD" = ( +/obj/structure/machinery/power/apc{ + dir = 1 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) +"bSQ" = ( +/obj/item/tool/warning_cone, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"bTf" = ( +/obj/item/clothing/mask/rebreather, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/carpet, +/area/varadero/interior/maintenance/north) +"bTg" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior/caves/north_research) "bTm" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/item/weapon/gun/rifle/m4ra, @@ -2264,6 +3012,22 @@ icon_state = "snow_mat" }, /area/varadero/interior/security) +"bUK" = ( +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "green" + }, +/area/varadero/interior/hall_N) +"bUP" = ( +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/monsoon) "bUR" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/clipboard{ @@ -2280,6 +3044,17 @@ /obj/structure/flora/bush/ausbushes/var3/fernybush, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/central) +"bVe" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 4 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "bVq" = ( /obj/structure/machinery/light{ dir = 4 @@ -2302,16 +3077,65 @@ icon_state = "green" }, /area/varadero/interior/court) -"bXH" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/varadero/interior/medical) -"bXI" = ( +"bVQ" = ( +/obj/structure/stairs/perspective{ + color = "#b29082"; + dir = 1; + icon_state = "p_stair_full" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) +"bVS" = ( +/turf/open/gm/dirt{ + icon_state = "desert_dug" + }, +/area/varadero/exterior/lz1_near) +"bVX" = ( +/turf/open/gm/coast/beachcorner2/south_west, +/area/varadero/exterior/lz1_near) +"bWq" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/plasteel/medium_stack, +/obj/item/trash/crushed_cup, +/obj/item/prop/magazine/dirty/torn, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/cargo) +"bYO" = ( +/obj/item/tool/shovel/spade, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"bYT" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/light/small, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance) +"bZg" = ( /obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Underground Maintenance"; + req_access = null; + req_one_access = null + }, /turf/open/floor/shiva{ - icon_state = "multi_tiles" + dir = 1 }, -/area/varadero/interior/records) +/area/varadero/interior/maintenance/research) +"bZv" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz1_near) "bZA" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor{ @@ -2319,18 +3143,6 @@ icon_state = "asteroidfloor" }, /area/varadero/interior/maintenance/north) -"bZD" = ( -/obj/structure/bed/chair{ - buckling_y = 18; - dir = 8; - icon_state = "chair_alt"; - pixel_x = -5; - pixel_y = 12 - }, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" - }, -/area/varadero/interior/technical_storage) "bZI" = ( /turf/open/floor/shiva{ dir = 6; @@ -2346,6 +3158,29 @@ }, /turf/open/gm/dirt, /area/varadero/exterior/lz1_near) +"caD" = ( +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) +"cba" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "cbe" = ( /obj/structure/filingcabinet{ pixel_x = -8; @@ -2391,6 +3226,14 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) +"cbI" = ( +/obj/item/cpr_dummy{ + dir = 0 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/medical) "cbK" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -2402,26 +3245,13 @@ }, /turf/open/floor/wood, /area/varadero/interior/court) -"cbU" = ( -/obj/effect/landmark/static_comms/net_two, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" - }, -/area/varadero/interior/comms3) -"ccf" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/turf/open/gm/river/ocean, -/area/varadero/interior/oob) -"ccK" = ( -/turf/open/floor/shiva{ - dir = 1; - icon_state = "snow_mat" +"ccp" = ( +/obj/structure/machinery/landinglight/ds2/spoke{ + pixel_x = -1; + pixel_y = 22 }, -/area/varadero/interior/security) +/turf/closed/wall/r_wall/unmeltable, +/area/varadero/interior/maintenance/north) "ccU" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -2433,32 +3263,60 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) -"cdy" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 4 - }, +"cdb" = ( +/turf/closed/wall, +/area/varadero/interior/maintenance/security) +"cdc" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" + }, +/area/varadero/interior_protected/vessel) +"cdy" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 4 + }, /turf/open/floor/shiva{ dir = 4; icon_state = "red" }, /area/varadero/interior/security) -"cek" = ( -/obj/structure/machinery/light{ - dir = 4 +"cdL" = ( +/obj/effect/landmark/corpsespawner/colonist/burst, +/turf/open/floor/carpet, +/area/varadero/interior/bunks) +"cdO" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 }, -/obj/structure/machinery/vending/coffee, /turf/open/floor/shiva{ - dir = 4; + dir = 8; icon_state = "yellow" }, /area/varadero/interior/cargo) +"cdS" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/carpet, +/area/varadero/interior/maintenance/north) +"cel" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "ceo" = ( /obj/structure/bed/chair, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/laundry) +"ceJ" = ( +/obj/item/storage/fancy/candle_box, +/turf/open/floor/carpet, +/area/varadero/interior/chapel) "cfq" = ( /obj/item/stool{ layer = 2.5; @@ -2469,6 +3327,14 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) +"cfs" = ( +/obj/structure/machinery/power/smes/buildable{ + name = "colony distribution SMES" + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) "cgb" = ( /obj/structure/machinery/cm_vending/sorted/tech/tool_storage, /obj/structure/machinery/light{ @@ -2479,13 +3345,16 @@ icon_state = "yellow" }, /area/varadero/interior/technical_storage) -"cgp" = ( -/obj/structure/surface/table, -/obj/item/tool/kitchen/utensil/fork, +"cgj" = ( +/obj/item/stack/sheet/metal/med_small_stack, /turf/open/floor/shiva{ - icon_state = "floor3" + icon_state = "multi_tiles" }, -/area/varadero/interior/mess) +/area/varadero/interior/comms3) +"cgr" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/coast/north, +/area/varadero/interior/caves/north_research) "cgA" = ( /obj/structure/machinery/landinglight/ds2/delayone{ dir = 4 @@ -2498,12 +3367,15 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) -"cgB" = ( +"che" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/manifold/hidden/green, /turf/open/floor/shiva{ - dir = 6; - icon_state = "yellow" + icon_state = "multi_tiles" }, -/area/varadero/interior/cargo) +/area/varadero/interior/comms3) "chr" = ( /obj/structure/bed/stool{ icon_state = "stool_alt" @@ -2513,6 +3385,9 @@ }, /turf/open/floor/wood, /area/varadero/interior/hall_SE) +"chs" = ( +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior/hall_SE) "chE" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 @@ -2527,11 +3402,24 @@ }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/vessel) +"chX" = ( +/obj/effect/landmark/railgun_camera_pos, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "cic" = ( /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/laundry) +"cil" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/shiva{ + icon_state = "yellow" + }, +/area/varadero/interior/electrical) "cit" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/green{ @@ -2548,18 +3436,6 @@ icon_state = "yellow" }, /area/varadero/interior/hall_SE) -"civ" = ( -/obj/item/paper_bin{ - pixel_y = 6 - }, -/obj/item/tool/pen/blue{ - pixel_x = 7 - }, -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/shiva{ - icon_state = "redfull" - }, -/area/varadero/interior/security) "ciH" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -2593,6 +3469,14 @@ icon_state = "purple" }, /area/varadero/interior/research) +"ckx" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/medical) "ckz" = ( /obj/structure/machinery/photocopier, /turf/open/floor/shiva{ @@ -2600,6 +3484,14 @@ icon_state = "purple" }, /area/varadero/interior/research) +"ckF" = ( +/obj/structure/pipes/standard/manifold/fourway/hidden/green, +/obj/effect/landmark/corpsespawner/doctor, +/obj/effect/decal/cleanable/vomit, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/medical) "ckG" = ( /obj/structure/flora/bush/ausbushes/var3/fullgrass, /obj/effect/landmark/queen_spawn, @@ -2624,15 +3516,47 @@ dir = 1 }, /area/varadero/interior/research) +"clA" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/wood, +/area/varadero/interior/dock_control) "clD" = ( /obj/effect/landmark/yautja_teleport, /turf/open/floor/shiva{ icon_state = "multi_tiles" }, /area/varadero/interior/bunks) +"clG" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior_protected/caves) "clX" = ( /turf/closed/wall/r_wall, /area/varadero/interior/maintenance) +"cmf" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -14; + pixel_y = 13 + }, +/obj/structure/prop/invuln/pipe_water, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "snow_mat" + }, +/area/varadero/interior/maintenance) "cmk" = ( /obj/structure/barricade/handrail/wire{ dir = 4 @@ -2651,6 +3575,13 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) +"cmr" = ( +/obj/item/stack/tile/plasteel{ + pixel_x = 8; + pixel_y = 6 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves) "cmU" = ( /obj/item/reagent_container/food/snacks/fishfingers{ pixel_y = 7 @@ -2661,6 +3592,36 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) +"cne" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/interior/comms1) +"cnv" = ( +/obj/structure/closet/crate/ammo/alt, +/obj/item/ammo_magazine/pistol/vp78, +/obj/item/ammo_magazine/pistol/vp78{ + pixel_y = 4; + pixel_x = -5 + }, +/obj/item/ammo_magazine/pistol/vp78, +/obj/item/ammo_magazine/pistol/vp78{ + pixel_y = 4; + pixel_x = -5 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/cargo) "cnW" = ( /obj/structure/surface/table, /obj/structure/prop/server_equipment/laptop/on, @@ -2675,14 +3636,32 @@ icon_state = "blue" }, /area/varadero/interior/technical_storage) -"coh" = ( -/obj/structure/machinery/light{ - dir = 8 +"cog" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellowfull" }, -/turf/open/floor{ - icon_state = "white" +/area/varadero/interior/cargo) +"coz" = ( +/obj/structure/sign/safety/bulkhead_door, +/turf/closed/wall/r_wall, +/area/varadero/interior/maintenance/north) +"coQ" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/area/varadero/interior/toilets) +/area/varadero/exterior/pontoon_beach) +"coX" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) "cpA" = ( /obj/structure/morgue, /turf/open/floor/shiva{ @@ -2697,6 +3676,32 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) +"cpF" = ( +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) +"cql" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "cqB" = ( /obj/structure/machinery/light{ dir = 8 @@ -2714,65 +3719,23 @@ /obj/structure/extinguisher_cabinet, /turf/closed/wall/r_wall, /area/varadero/interior/electrical) +"cqZ" = ( +/turf/closed/wall/rock/brown, +/area/varadero/interior_protected/maintenance/south) "crq" = ( /obj/item/stack/sheet/metal, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/vessel) -"crx" = ( -/obj/structure/surface/rack, -/obj/item/ammo_magazine/pistol{ - pixel_x = 4 - }, -/obj/item/ammo_magazine/pistol{ - pixel_x = -4 - }, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol{ - pixel_x = 4 - }, -/obj/item/ammo_magazine/pistol{ - pixel_x = 4 - }, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol{ - pixel_x = -4 - }, -/obj/item/ammo_magazine/pistol{ - pixel_x = -4 - }, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "red" - }, -/area/varadero/interior/security) -"crK" = ( -/obj/structure/machinery/door_control{ - id = "req_sec_storage"; - name = "Requesition Secure Storage"; - normaldoorcontrol = 1; - pixel_y = -24; - req_access_txt = "100"; - specialfunctions = 4 - }, -/turf/open/floor/shiva{ - icon_state = "yellow" - }, -/area/varadero/interior/cargo) -"crO" = ( -/obj/structure/toilet, -/obj/structure/machinery/light/small{ - dir = 1 +"crC" = ( +/obj/structure/machinery/power/apc{ + dir = 1; + pixel_y = 24; + start_charge = 0 }, -/obj/effect/landmark/corpsespawner/miner, -/obj/effect/decal/cleanable/blood, -/turf/open/floor{ - icon_state = "white" +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/toilets) -"crY" = ( -/turf/open/auto_turf/sand_white/layer0, -/area/varadero/interior_protected/caves) +/area/varadero/interior/maintenance/security) "csb" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/bed/sofa/vert/grey/bot, @@ -2791,22 +3754,56 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"ctw" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/floor/shiva{ + dir = 10; + icon_state = "blue" + }, +/area/varadero/interior/administration) "cty" = ( /turf/closed/wall/rock/brown, /area/varadero/interior_protected/caves/central) -"ctL" = ( -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/dirt, +"ctE" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, /area/varadero/exterior/pontoon_beach) -"ctQ" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +"cuc" = ( +/obj/structure/barricade/handrail/wire{ + dir = 8; + layer = 2.991 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/item/stack/sheet/glass{ + amount = 30 }, -/turf/open/floor/plating, -/area/varadero/interior/hall_NW) +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/electrical) "cud" = ( /obj/structure/machinery/power/apc{ dir = 8; @@ -2831,6 +3828,10 @@ /obj/item/weapon/gun/pistol/mod88{ pixel_y = -2 }, +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, /turf/open/floor/shiva{ dir = 5; icon_state = "red" @@ -2843,6 +3844,9 @@ pixel_x = 16; pixel_y = -8 }, +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor/shiva{ dir = 8; icon_state = "green" @@ -2872,6 +3876,15 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) +"cwk" = ( +/obj/structure/largecrate/random, +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/east) "cwp" = ( /obj/structure/window/reinforced{ dir = 4; @@ -2890,26 +3903,47 @@ icon_state = "multi_tiles" }, /area/varadero/interior_protected/vessel) +"cwE" = ( +/turf/closed/wall/rock/brown, +/area/varadero/interior/maintenance/north) "cwQ" = ( /obj/structure/surface/table/woodentable, /obj/item/storage/bible/booze, /turf/open/floor/carpet, /area/varadero/interior/chapel) -"czg" = ( -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/river/ocean, -/area/varadero/interior/oob) -"czl" = ( -/obj/structure/machinery/vending/security, -/obj/structure/machinery/alarm{ +"cxT" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) +"cym" = ( +/obj/structure/platform/kutjevo/smooth{ dir = 4; - pixel_x = -24 + climb_delay = 1; + layer = 2.99 }, -/turf/open/floor/shiva{ - dir = 10; - icon_state = "red" +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/area/varadero/interior/security) +/area/varadero/interior/caves/north_research) +"cyT" = ( +/obj/structure/machinery/light/small, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice1"; + pixel_x = -16; + pixel_y = -8 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/research) +"czA" = ( +/obj/item/stack/sheet/wood, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/pontoon_beach) "czG" = ( /obj/item/device/flashlight/lamp/tripod, /turf/open/floor/corsat{ @@ -2924,6 +3958,10 @@ icon_state = "yellowfull" }, /area/varadero/interior/cargo) +"cAx" = ( +/obj/structure/largecrate/random, +/turf/open/shuttle/elevator/grating, +/area/varadero/interior/records) "cAX" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/shiva{ @@ -2937,9 +3975,10 @@ }, /turf/open/floor/wood, /area/varadero/interior/records) -"cBu" = ( -/turf/open/gm/river/ocean, -/area/varadero/interior/oob) +"cBI" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/north_research) "cBW" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -2947,12 +3986,12 @@ icon_state = "snow_mat" }, /area/varadero/interior/medical) -"cCO" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +"cCk" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 }, -/turf/open/gm/river, -/area/varadero/interior/caves/north_research) +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "cDc" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -2961,16 +4000,6 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) -"cDk" = ( -/obj/structure/filingcabinet, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/effect/landmark/objective_landmark/far, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/records) "cDm" = ( /obj/item/reagent_container/food/drinks/cans/beer{ pixel_x = -9; @@ -2980,12 +4009,30 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) -"cDY" = ( -/obj/effect/landmark/objective_landmark/far, -/turf/open/floor{ - icon_state = "white" +"cDr" = ( +/obj/structure/closet/secure_closet/medical1{ + req_access_txt = "100" }, -/area/varadero/interior/toilets) +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "wred" + }, +/area/varadero/interior/medical) +"cEm" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) "cEu" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -3001,40 +4048,56 @@ icon_state = "green" }, /area/varadero/interior/hall_SE) -"cEW" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/largecrate/random, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance) "cFe" = ( /obj/structure/closet/firecloset/full, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"cFh" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, +/area/varadero/exterior/eastocean) "cFu" = ( /obj/structure/xenoautopsy/tank/larva, /turf/open/shuttle{ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) -"cFQ" = ( -/obj/structure/prop/rock/brown, -/obj/structure/flora/bush/ausbushes/var3/stalkybush, -/turf/open/auto_turf/sand_white/layer1, +"cFw" = ( +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"cFz" = ( +/turf/open/gm/coast/beachcorner2/north_west, /area/varadero/interior/caves/east) -"cFV" = ( -/obj/structure/pipes/vents/pump{ - dir = 4 +"cFK" = ( +/obj/structure/machinery/door/poddoor/almayer/planet_side_blastdoor{ + id = "undergroundhangarsouth"; + unacidable = 1; + name = "Pontoon South Door"; + openspeed = 17 }, -/turf/open/floor/shiva{ - icon_state = "wredfull" +/obj/structure/machinery/door/poddoor/almayer/planet_side_blastdoor{ + id = "undergroundhangarsouth"; + unacidable = 1; + name = "Pontoon South Door"; + openspeed = 17 }, -/area/varadero/interior/medical) +/turf/open/floor/plating/icefloor{ + dir = 1; + icon_state = "warnplate" + }, +/area/varadero/interior/maintenance/north) +"cFZ" = ( +/obj/structure/cargo_container/kelland/left, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"cGc" = ( +/obj/item/book/manual/detective, +/turf/open/floor{ + icon_state = "wood" + }, +/area/varadero/interior/library) "cGd" = ( /obj/structure/machinery/power/apc{ pixel_y = -24; @@ -3054,16 +4117,16 @@ icon_state = "purple" }, /area/varadero/interior/research) -"cGH" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +"cGD" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 }, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 }, +/obj/effect/decal/cleanable/dirt, /turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) +/area/varadero/exterior/monsoon) "cGR" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -3099,6 +4162,43 @@ icon_state = "red" }, /area/varadero/interior/security) +"cHl" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/technical_storage) +"cHR" = ( +/obj/structure/surface/table, +/obj/item/tool/kitchen/utensil/fork, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice8"; + pixel_x = 16; + pixel_y = 24 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/mess) +"cHS" = ( +/obj/structure/closet/crate/freezer/rations, +/obj/item/explosive/grenade/incendiary/molotov, +/obj/item/explosive/grenade/incendiary/molotov, +/obj/item/explosive/grenade/incendiary/molotov{ + pixel_x = -3 + }, +/obj/item/explosive/grenade/incendiary/molotov{ + pixel_x = 6 + }, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/varadero/interior/cargo) "cHV" = ( /obj/structure/window/phoronreinforced{ dir = 4; @@ -3145,24 +4245,6 @@ icon_state = "multi_tiles" }, /area/varadero/interior/bunks) -"cIR" = ( -/obj/structure/surface/rack, -/obj/item/storage/toolbox/electrical, -/obj/item/storage/toolbox/electrical, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "yellow" - }, -/area/varadero/interior/electrical) -"cIV" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - name = "\improper Underground Maintenance"; - req_access_txt = "100"; - req_one_access = null - }, -/turf/open/floor/plating, -/area/varadero/interior/comms2) "cJa" = ( /obj/structure/reagent_dispensers/water_cooler{ density = 0; @@ -3175,16 +4257,35 @@ icon_state = "purplefull" }, /area/varadero/interior/research) -"cJX" = ( -/obj/structure/machinery/light{ - dir = 4 +"cJL" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" }, -/obj/item/weapon/gun/rifle/m41a, -/turf/open/floor/wood, -/area/varadero/interior/hall_SE) -"cKa" = ( -/turf/closed/wall, -/area/varadero/interior/comms2) +/area/varadero/exterior/farocean) +"cKB" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/farocean) +"cKC" = ( +/obj/item/explosive/grenade/incendiary, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/security) +"cKK" = ( +/obj/item/paper/crumpled/bloody, +/obj/effect/landmark/corpsespawner/security, +/turf/open/floor/carpet, +/area/varadero/interior/maintenance/north) "cKZ" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -3208,6 +4309,24 @@ "cLP" = ( /turf/open/space, /area/space) +"cLV" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/blocker/invisible_wall/water, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/farocean) +"cLX" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "cLY" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -3217,7 +4336,9 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, /area/varadero/interior/mess) "cMf" = ( /obj/structure/bed/chair, @@ -3226,12 +4347,13 @@ icon_state = "green" }, /area/varadero/interior/court) -"cMy" = ( -/obj/structure/pipes/vents/pump/on, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" +"cNb" = ( +/obj/structure/surface/table, +/obj/item/device/binoculars, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/electrical) +/area/varadero/interior/maintenance/north) "cNh" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/flashlight, @@ -3239,22 +4361,9 @@ icon_state = "floor3" }, /area/varadero/interior/security) -"cNi" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/light, -/obj/item/device/flashlight{ - pixel_x = -7; - pixel_y = 9 - }, -/obj/effect/spawner/random/powercell, -/turf/open/floor/wood, -/area/varadero/exterior/lz1_near) -"cNk" = ( -/obj/structure/closet/crate, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/cargo) +"cNt" = ( +/turf/open/gm/coast/north, +/area/varadero/exterior/comms4) "cNu" = ( /turf/open/floor/shiva{ dir = 1; @@ -3315,19 +4424,14 @@ dir = 1 }, /area/varadero/interior/research) -"cNZ" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Underground Requesitions Freezer"; - req_access_txt = "100"; - req_one_access = null - }, -/turf/open/floor/plating, -/area/varadero/interior/cargo) -"cOs" = ( -/obj/structure/bed/sofa/pews/flipped{ +"cOj" = ( +/obj/item/circuitboard/apc, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) +"cOs" = ( +/obj/structure/bed/sofa/pews/flipped{ dir = 4 }, /obj/effect/landmark/survivor_spawner, @@ -3354,19 +4458,10 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor/plating, -/area/varadero/interior/research) -"cPT" = ( -/obj/structure/stairs/perspective{ - color = "#b29082"; - dir = 1; - icon_state = "p_stair_full" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +/turf/open/floor/shiva{ + dir = 1 }, -/turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/research) "cQr" = ( /obj/item/tool/crowbar/red{ pixel_x = 9; @@ -3382,15 +4477,6 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) -"cQK" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/turf/open/gm/river, -/area/varadero/interior_protected/caves) "cRn" = ( /obj/item/prop/alien/hugger, /turf/open/shuttle{ @@ -3417,24 +4503,13 @@ }, /turf/open/gm/grass/grass1/weedable, /area/varadero/interior_protected/caves/central) -"cSb" = ( -/obj/structure/surface/rack, -/obj/item/explosive/grenade/incendiary, -/obj/item/explosive/grenade/incendiary{ - pixel_x = -4; - pixel_y = -2 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/security) +"cSc" = ( +/obj/structure/prop/invuln/overhead_pipe, +/turf/closed/wall/rock/brown, +/area/varadero/exterior/eastbeach) "cSq" = ( /turf/open/floor/wood, /area/varadero/interior/chapel) -"cSI" = ( -/obj/effect/landmark/corpsespawner/colonist/random/burst, -/turf/open/floor/carpet, -/area/varadero/interior/bunks) "cTb" = ( /obj/item/device/flashlight/flare, /turf/open/shuttle{ @@ -3461,6 +4536,12 @@ icon_state = "redfull" }, /area/varadero/interior/medical) +"cTw" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/hall_SE) "cTV" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/toolbox, @@ -3468,11 +4549,6 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) -"cUq" = ( -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/comms3) "cUE" = ( /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" @@ -3486,6 +4562,38 @@ icon_state = "squareswood" }, /area/varadero/interior_protected/vessel) +"cUF" = ( +/obj/structure/prop/invuln/minecart_tracks{ + dir = 1 + }, +/obj/structure/plasticflaps/mining, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/oob) +"cUN" = ( +/obj/structure/prop/rock/brown{ + indestructible = 1; + unacidable = 1; + name = "sturdy rock(s)"; + desc = "A solidified collection of local minerals. When melted, becomes a substance best known as lava. These look particularly durable." + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/farocean) "cUZ" = ( /obj/structure/largecrate/random/case/double{ anchored = 1 @@ -3494,6 +4602,16 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/caves) +"cVd" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"cVq" = ( +/turf/open/gm/coast/east, +/area/varadero/exterior/lz2_near) "cVG" = ( /obj/structure/bed/chair{ dir = 8 @@ -3502,24 +4620,52 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_NW) -"cWU" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +"cWs" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/obj/structure/machinery/light{ + dir = 4 }, +/obj/structure/prop/invuln/pipe_water, /turf/open/floor/shiva{ - icon_state = "multi_tiles" + dir = 8; + icon_state = "snow_mat" }, -/area/varadero/interior/cargo) -"cXo" = ( -/obj/structure/platform/kutjevo/smooth{ +/area/varadero/interior/maintenance) +"cWu" = ( +/obj/structure/prop/invuln/minecart_tracks{ dir = 1 }, /obj/structure/platform/kutjevo/smooth{ - dir = 4 + dir = 8; + climb_delay = 1; + layer = 2.99 }, -/turf/open/gm/river, -/area/varadero/interior/caves/north_research) +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/oob) +"cXa" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/stairs/perspective{ + color = "#6b675e"; + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/vessel) "cXQ" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -3532,6 +4678,16 @@ /obj/item/storage/firstaid/adv, /turf/open/floor/wood, /area/varadero/interior/security) +"cYc" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "greenfull" + }, +/area/varadero/interior/hall_N) "cYr" = ( /obj/structure/machinery/landinglight/ds2/delaytwo{ dir = 4 @@ -3542,6 +4698,16 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) +"cYw" = ( +/obj/structure/machinery/floodlight/landing{ + desc = "A powerful light stationed near construction zones to provide better visibility."; + name = "Construction Light" + }, +/obj/effect/decal/warning_stripes, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/monsoon) "cYB" = ( /obj/structure/window_frame/colony/reinforced, /turf/open/floor/plating/icefloor{ @@ -3550,11 +4716,12 @@ /area/varadero/interior/maintenance/security) "cYC" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, -/turf/open/auto_turf/sand_white/layer0, +/turf/open/gm/dirt, /area/varadero/interior_protected/caves) -"cYT" = ( -/turf/open/floor/plating, -/area/varadero/interior/court) +"cYV" = ( +/obj/structure/largecrate/random, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/north_research) "cYZ" = ( /obj/structure/machinery/landinglight/ds2, /turf/open/floor{ @@ -3569,6 +4736,10 @@ icon_state = "yellowfull" }, /area/varadero/interior/technical_storage) +"cZR" = ( +/obj/structure/sign/safety/medical, +/turf/closed/wall/r_wall/unmeltable, +/area/varadero/interior/medical) "cZZ" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -3577,6 +4748,10 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) +"dad" = ( +/obj/item/stack/tile/plasteel, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/hall_SE) "daA" = ( /obj/structure/bed/chair, /obj/effect/landmark/survivor_spawner, @@ -3585,20 +4760,18 @@ icon_state = "green" }, /area/varadero/interior/court) +"daS" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) "dbg" = ( /turf/open/floor/shiva{ icon_state = "yellow" }, /area/varadero/interior/technical_storage) -"dbm" = ( -/obj/item/ammo_magazine/revolver/pkd{ - pixel_y = 3 - }, -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance/security) "dbu" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 @@ -3611,20 +4784,14 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_NW) -"dcx" = ( -/obj/structure/filingcabinet{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/structure/filingcabinet{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/shiva{ - dir = 1 - }, -/area/varadero/interior/morgue) +"dcM" = ( +/obj/item/ammo_magazine/revolver/cmb, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/north_research) +"dda" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/central) "ddc" = ( /obj/item/stack/cable_coil/cut{ pixel_x = 1; @@ -3664,6 +4831,27 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/plating, /area/varadero/interior/research) +"deq" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -14; + pixel_y = 13 + }, +/obj/structure/prop/invuln/pipe_water, +/obj/item/reagent_container/glass/bucket/mopbucket{ + pixel_x = 3; + pixel_y = -13 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"deE" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice4"; + pixel_x = -16; + pixel_y = 24 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "deX" = ( /obj/item/trash/boonie, /turf/open/floor/shiva{ @@ -3671,9 +4859,6 @@ icon_state = "yellow" }, /area/varadero/interior/hall_NW) -"dfi" = ( -/turf/closed/wall, -/area/varadero/interior/maintenance/security) "dfs" = ( /obj/item/storage/belt/utility, /obj/structure/surface/rack, @@ -3684,6 +4869,9 @@ dir = 8; pixel_x = 24 }, +/obj/structure/machinery/light/small{ + dir = 4 + }, /turf/open/floor/shiva{ dir = 1 }, @@ -3692,6 +4880,7 @@ /obj/structure/machinery/computer/shuttle_control/ice_colony/elevator1{ pixel_y = 32 }, +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, @@ -3701,6 +4890,15 @@ icon_state = "red" }, /area/varadero/interior/morgue) +"dgF" = ( +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/electrical) "dgP" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -3710,13 +4908,101 @@ icon_state = "yellowcorners" }, /area/varadero/interior/disposals) -"dhh" = ( -/obj/item/weapon/gun/energy/rxfm5_eva, -/obj/structure/closet/cabinet, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/powercell, +"dgY" = ( +/obj/structure/prop/rock/brown, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) +"dhp" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/machinery/disposal, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/records) +"dhQ" = ( +/obj/effect/decal/cleanable/blood, +/obj/effect/landmark/corpsespawner/colonist, +/obj/item/weapon/sword/katana, +/turf/open/floor/carpet, +/area/varadero/interior/chapel) +"dhV" = ( +/obj/structure/platform_decoration/kutjevo, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/comms4) +"dir" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/east) +"diu" = ( +/obj/structure/bed/chair/comfy{ + dir = 8; + pixel_x = 12; + pixel_y = 25 + }, +/obj/structure/bed/chair/comfy{ + pixel_x = -7; + pixel_y = 18 + }, +/obj/structure/bed/chair/comfy{ + dir = 8; + pixel_x = 7; + pixel_y = 12 + }, +/obj/structure/bed/chair/comfy{ + dir = 4; + pixel_x = 7 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) +"diK" = ( +/obj/structure/machinery/power/apc{ + dir = 8; + pixel_x = -30; + start_charge = 0 + }, +/obj/item/stack/sheet/wood, +/obj/item/tool/kitchen/knife/butcher{ + pixel_x = -7; + pixel_y = 6 + }, /turf/open/floor/wood, -/area/varadero/interior/research) +/area/varadero/interior/beach_bar) +"diQ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper, +/obj/item/tool/pen/blue{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/folder/black_random{ + pixel_x = 6; + pixel_y = -3 + }, +/obj/item/folder/black_random{ + pixel_x = -3; + pixel_y = -1 + }, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/machinery/alarm{ + pixel_y = 24 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/records) "diW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -3726,6 +5012,25 @@ icon_state = "redcorners" }, /area/varadero/interior/security) +"djb" = ( +/obj/effect/decal/cleanable/vomit, +/turf/open/floor/shiva{ + icon_state = "redfull" + }, +/area/varadero/interior/medical) +"djh" = ( +/obj/item/book/manual/security_space_law, +/turf/open/floor{ + icon_state = "wood" + }, +/area/varadero/interior/library) +"djC" = ( +/obj/structure/closet/toolcloset, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) "djH" = ( /obj/structure/pipes/vents/pump, /obj/structure/surface/table/woodentable/fancy, @@ -3738,21 +5043,32 @@ /obj/structure/bed/chair, /turf/open/floor/interior/plastic, /area/varadero/interior_protected/caves/digsite) -"dki" = ( -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/coast/beachcorner/south_west, -/area/varadero/exterior/eastbeach) "dkl" = ( /turf/open/floor/shiva{ icon_state = "snow_mat" }, /area/varadero/interior/maintenance) -"dkt" = ( -/turf/open/floor/shiva{ - dir = 8; - icon_state = "red" +"dkr" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/hall_N) +/area/varadero/interior/research) +"dkC" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 8 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/comms4) +"dkS" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/gm/coast/beachcorner/south_west, +/area/varadero/exterior/monsoon) "dkV" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 @@ -3761,6 +5077,23 @@ icon_state = "snow_mat" }, /area/varadero/interior/maintenance) +"dlh" = ( +/obj/structure/machinery/chem_dispenser/soda{ + density = 0; + pixel_y = 32 + }, +/obj/item/frame/table/wood/poor, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) +"dlr" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz1_near) "dlv" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -3770,27 +5103,30 @@ icon_state = "purple" }, /area/varadero/interior/research) -"dlI" = ( -/obj/structure/window/reinforced/tinted{ - dir = 4 - }, -/obj/structure/surface/table, -/turf/open/floor/shiva{ - icon_state = "snow_mat" - }, -/area/varadero/interior/security) -"dmg" = ( -/obj/structure/machinery/floodlight, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "yellowfull" - }, -/area/varadero/interior/electrical) +"dlD" = ( +/obj/structure/prop/rock/brown_degree, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "dmN" = ( /turf/closed/wall/r_wall/elevator{ dir = 5 }, /area/varadero/interior/records) +"dmP" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/landmark/corpsespawner/colonist/burst, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "snow_mat" + }, +/area/varadero/interior/medical) +"dmR" = ( +/obj/structure/surface/rack, +/obj/item/storage/pouch/medkit/full_advanced, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance) "dmS" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -3805,6 +5141,15 @@ }, /turf/open/floor/interior/plastic/alt, /area/varadero/interior/laundry) +"dnA" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal3"; + pixel_y = 16 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken3" + }, +/area/varadero/interior/court) "dnU" = ( /obj/structure/pipes/standard/manifold/hidden/green, /turf/open/floor{ @@ -3819,6 +5164,12 @@ icon_state = "white" }, /area/varadero/interior/security) +"dnW" = ( +/obj/structure/pipes/standard/manifold/hidden/green, +/turf/open/floor/shiva{ + icon_state = "wredfull" + }, +/area/varadero/interior/medical) "doa" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -3828,6 +5179,31 @@ icon_state = "redfull" }, /area/varadero/interior/medical) +"dob" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) +"dos" = ( +/obj/item/clothing/head/helmet, +/turf/open/floor/wood, +/area/varadero/interior/security) +"doH" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"doO" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/records) "doP" = ( /obj/structure/prop/rock/brown, /obj/effect/decal/warning_stripes{ @@ -3842,18 +5218,14 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/plating, /area/varadero/interior/research) -"dpl" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/turf/open/gm/coast/beachcorner/north_east, -/area/varadero/interior/oob) "dpz" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Underground Security Brig"; req_access_txt = "100" }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, /area/varadero/interior/security) "dpO" = ( /obj/structure/surface/table/reinforced/prison, @@ -3864,6 +5236,9 @@ icon_state = "red" }, /area/varadero/interior/security) +"dpW" = ( +/turf/open/gm/coast/beachcorner/north_east, +/area/varadero/exterior/comms4) "dpZ" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -3873,20 +5248,10 @@ icon_state = "yellowcorners" }, /area/varadero/interior/cargo) -"dqy" = ( -/obj/structure/machinery/light/small, -/obj/effect/landmark/objective_landmark/far, -/turf/open/floor/plating, -/area/varadero/interior/disposals) -"drn" = ( -/obj/structure/machinery/light/small, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance) +"dqx" = ( +/obj/structure/cargo_container/wy/right, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "dro" = ( /obj/structure/closet/secure_closet/freezer/fridge, /obj/structure/machinery/alarm{ @@ -3905,6 +5270,10 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"dsi" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves/digsite) "dss" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -3912,30 +5281,7 @@ icon_state = "yellowfull" }, /area/varadero/interior/cargo) -"dsw" = ( -/turf/open/floor/shiva{ - icon_state = "red" - }, -/area/varadero/interior/hall_N) -"dtj" = ( -/obj/structure/sign/poster/propaganda, -/turf/closed/wall/r_wall, -/area/varadero/interior/technical_storage) -"dtq" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/turf/open/floor/shiva{ - icon_state = "snow_mat" - }, -/area/varadero/interior/maintenance) -"dtu" = ( -/obj/structure/machinery/alarm{ - pixel_y = 24 - }, -/turf/open/floor/wood, -/area/varadero/interior/security) -"duh" = ( +"dsz" = ( /obj/structure/filingcabinet{ density = 0; icon_state = "chestdrawer"; @@ -3948,9 +5294,35 @@ pixel_x = 8; pixel_y = 11 }, -/obj/effect/landmark/objective_landmark/medium, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) +"dsC" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/comms4) +"dtj" = ( +/obj/structure/sign/poster/propaganda, +/turf/closed/wall, +/area/varadero/interior/technical_storage) +"dtu" = ( +/obj/structure/machinery/alarm{ + pixel_y = 24 + }, /turf/open/floor/wood, -/area/varadero/interior/bunks) +/area/varadero/interior/security) +"dtH" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior/hall_SE) "duw" = ( /obj/effect/decal/cleanable/cobweb2{ pixel_x = 11; @@ -3978,13 +5350,37 @@ }, /turf/open/floor/wood, /area/varadero/interior/administration) -"dwu" = ( -/obj/structure/bed/roller, +"duN" = ( +/obj/structure/machinery/door/airlock/almayer/medical/glass{ + dir = 1; + name = "\improper Underground Library"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/carpet, +/area/varadero/interior/maintenance/north) +"dvw" = ( +/obj/item/ammo_magazine/handful/shotgun/buckshot{ + pixel_x = -13; + pixel_y = 12 + }, /turf/open/floor/shiva{ - dir = 6; - icon_state = "wred" + dir = 8; + icon_state = "redfull" }, -/area/varadero/interior/medical) +/area/varadero/interior/hall_N) +"dvT" = ( +/turf/open/gm/dirt{ + icon_state = "desert0" + }, +/area/varadero/exterior/eastbeach) +"dwN" = ( +/obj/item/tool/wet_sign, +/obj/item/tool/mop, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) "dwP" = ( /obj/structure/machinery/computer3/powermonitor, /turf/open/floor/shiva{ @@ -3992,6 +5388,16 @@ icon_state = "yellow" }, /area/varadero/interior/electrical) +"dxn" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "greenfull" + }, +/area/varadero/interior/hall_N) "dxt" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -3999,36 +5405,48 @@ icon_state = "snow_mat" }, /area/varadero/interior/maintenance) -"dxy" = ( -/obj/structure/window_frame/colony/reinforced, -/obj/item/shard, -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/caves/east) "dxK" = ( /obj/structure/prop/rock/brown, -/turf/open/auto_turf/sand_white/layer0, +/turf/open/gm/dirt, /area/varadero/interior/caves/north_research) -"dzN" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/toolbox/electrical{ - pixel_y = 9 - }, -/obj/item/storage/toolbox/mechanical/green{ - pixel_x = 3; - pixel_y = 2 +"dyl" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "purplefull" +/area/varadero/exterior/lz2_near) +"dyo" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/research) -"dzV" = ( -/obj/item/ammo_magazine/handful/shotgun/buckshot, -/turf/open/floor/carpet, -/area/varadero/exterior/lz1_near) +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/coast/beachcorner2/south_east, +/area/varadero/exterior/pontoon_beach) +"dzH" = ( +/obj/structure/largecrate/random, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) +"dzN" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/toolbox/electrical{ + pixel_y = 9 + }, +/obj/item/storage/toolbox/mechanical/green{ + pixel_x = 3; + pixel_y = 2 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "purplefull" + }, +/area/varadero/interior/research) "dBA" = ( /obj/item/tool/surgery/surgicaldrill/predatorsurgicaldrill{ pixel_x = 10 @@ -4038,6 +5456,12 @@ icon_state = "squareswood" }, /area/varadero/interior_protected/vessel) +"dBB" = ( +/obj/structure/machinery/body_scanconsole, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/medical) "dCz" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/camera{ @@ -4052,36 +5476,42 @@ icon_state = "red" }, /area/varadero/interior/morgue) -"dDo" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 +"dCE" = ( +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellowfull" }, -/obj/structure/barricade/handrail{ - desc = "Your platforms look pretty heavy king, let me support them for you."; - dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" +/area/varadero/interior/comms3) +"dDn" = ( +/obj/item/shard{ + icon_state = "large"; + pixel_x = -5; + pixel_y = -6 }, -/turf/open/gm/dirt, -/area/varadero/exterior/pontoon_beach) +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/east) "dDu" = ( /obj/item/tool/wirecutters, /turf/open/floor/wood, /area/varadero/interior/hall_SE) -"dEl" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/book/manual/security_space_law{ - pixel_x = 3; - pixel_y = 5 +"dDG" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) +"dEo" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/floor/wood, -/area/varadero/exterior/lz1_near) -"dEN" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 1 +/area/varadero/interior_protected/maintenance/south) +"dEJ" = ( +/obj/structure/machinery/landinglight/ds2/spoke{ + pixel_x = -1; + pixel_y = 22 }, -/turf/open/gm/coast/beachcorner/south_west, -/area/varadero/exterior/eastbeach) +/turf/closed/wall/r_wall/unmeltable, +/area/varadero/interior/oob) "dFd" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -4094,12 +5524,57 @@ /obj/structure/largecrate/supply/supplies/water, /turf/open/floor/interior/plastic, /area/varadero/interior_protected/caves/digsite) +"dFt" = ( +/obj/structure/prop/fishing/line/long, +/turf/open/gm/coast/beachcorner2/south_west, +/area/varadero/exterior/pontoon_beach) +"dFC" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/item/shard{ + icon_state = "large"; + pixel_x = -5; + pixel_y = -6 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -1; + pixel_y = 9; + indestructible = 1; + unacidable = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"dGh" = ( +/obj/effect/landmark/objective_landmark/medium, +/obj/structure/closet/crate/hydroponics/prespawned, +/turf/open/floor/shiva{ + icon_state = "blue" + }, +/area/varadero/interior/technical_storage) "dGr" = ( /turf/closed/shuttle{ dir = 1; icon_state = "pwall" }, /area/space) +"dGu" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves) +"dGR" = ( +/obj/structure/toilet, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/floor{ + icon_state = "white" + }, +/area/varadero/interior/toilets) "dHD" = ( /obj/item/device/flashlight/lamp/tripod, /turf/open/floor/strata{ @@ -4107,11 +5582,6 @@ icon_state = "multi_tiles" }, /area/varadero/interior_protected/vessel) -"dHE" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, -/obj/effect/landmark/corpsespawner/colonist/burst, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior/caves/east) "dHY" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal8"; @@ -4157,29 +5627,27 @@ icon_state = "yellowfull" }, /area/varadero/interior/electrical) -"dIT" = ( -/obj/structure/machinery/body_scanconsole, -/turf/open/floor/shiva{ - icon_state = "floor3" +"dIK" = ( +/obj/structure/largecrate/random, +/obj/structure/machinery/light/small{ + dir = 1 }, -/area/varadero/interior/medical) -"dJO" = ( -/obj/structure/closet/secure_closet/security_empty, -/obj/item/storage/belt/shotgun, -/obj/item/ammo_box/magazine/shotgun/buckshot, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "blue" +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/administration) -"dKm" = ( -/obj/structure/closet/secure_closet/personal/patient, -/obj/item/clothing/gloves/marine/veteran/pmc, +/area/varadero/interior_protected/maintenance/south) +"dJX" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood, +/turf/closed/wall/rock/brown, +/area/varadero/exterior/lz2_near) +"dKc" = ( +/obj/structure/closet/secure_closet/security, /turf/open/floor/shiva{ - icon_state = "multi_tiles" + dir = 5; + icon_state = "red" }, -/area/varadero/interior/bunks) +/area/varadero/interior/hall_N) "dKy" = ( /obj/structure/closet/crate/freezer/cooler/oj, /obj/item/reagent_container/food/drinks/cans/beer, @@ -4193,15 +5661,19 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) -"dLb" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"dLN" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 }, -/obj/structure/largecrate/random, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 24 }, -/area/varadero/interior/maintenance/north) +/turf/open/floor/shiva{ + dir = 1 + }, +/area/varadero/interior/medical) "dLP" = ( /obj/item/stool{ icon_state = "stool_alt" @@ -4222,42 +5694,22 @@ icon_state = "purplefull" }, /area/varadero/interior/research) -"dNb" = ( -/obj/structure/filingcabinet{ - density = 0; - icon_state = "chestdrawer"; - pixel_x = -8; - pixel_y = 11 - }, -/obj/structure/filingcabinet{ - density = 0; - icon_state = "chestdrawer"; - pixel_x = 8; - pixel_y = 11 +"dNh" = ( +/obj/structure/stairs/perspective{ + color = "#b29082"; + dir = 1; + icon_state = "p_stair_full" }, -/obj/item/reagent_container/food/drinks/flask/vacuumflask{ - pixel_x = 9; - pixel_y = 25 +/turf/open/gm/dirt{ + icon_state = "desert3" }, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/wood, -/area/varadero/interior/bunks) +/area/varadero/exterior/lz1_near) "dNt" = ( /obj/effect/landmark/yautja_teleport, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/caves/north_research) -"dNJ" = ( -/obj/effect/landmark/static_comms/net_one, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/comms2) -"dNO" = ( -/obj/effect/landmark/corpsespawner/colonist/random/burst, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior/caves/east) "dNU" = ( /obj/structure/bed/chair{ dir = 4 @@ -4301,6 +5753,13 @@ icon_state = "snow_mat" }, /area/varadero/interior/security) +"dNZ" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior_protected/caves/central) "dOk" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/airlock/almayer/medical/glass{ @@ -4309,16 +5768,18 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, -/area/varadero/interior/medical) -"dOp" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ - dir = 1; - name = "\improper Theta-V Research Laboratory"; - req_access_txt = "100" +/turf/open/floor/shiva{ + icon_state = "wredfull" }, -/turf/open/floor/plating, -/area/varadero/interior/research) +/area/varadero/interior/medical) +"dOl" = ( +/obj/item/prop/colony/used_flare, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"dOm" = ( +/obj/structure/barricade/handrail/wire, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "dOS" = ( /turf/open/gm/dirt{ icon_state = "desert2" @@ -4328,12 +5789,6 @@ /obj/item/reagent_container/glass/bucket, /turf/open/gm/dirt, /area/varadero/interior/maintenance/north) -"dPV" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/comms2) "dQe" = ( /obj/structure/machinery/light{ dir = 4 @@ -4349,12 +5804,6 @@ icon_state = "purplefull" }, /area/varadero/interior/research) -"dQq" = ( -/obj/structure/surface/table, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" - }, -/area/varadero/interior/electrical) "dQr" = ( /obj/structure/noticeboard{ pixel_y = 32 @@ -4377,6 +5826,12 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) +"dRs" = ( +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/eastocean) "dRI" = ( /obj/effect/landmark/yautja_teleport, /turf/open/floor/plating/icefloor{ @@ -4392,7 +5847,9 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, /area/varadero/interior/hall_N) "dSs" = ( /obj/effect/decal/cleanable/blood, @@ -4400,21 +5857,38 @@ icon_state = "floor3" }, /area/varadero/interior/bunks) -"dSM" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/security/glass{ - dir = 1; - name = "\improper Underground Security Armory"; - req_access_txt = "100" +"dSA" = ( +/obj/structure/prop/structure_lattice{ + density = 0; + desc = "On closer inspection, everything on these shelves are made of plastic."; + icon_state = "book-5"; + name = "book case" }, -/turf/open/floor/plating, -/area/varadero/interior/security) +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/varadero/interior/library) "dTe" = ( /obj/item/stack/cable_coil/random, /turf/open/shuttle{ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) +"dTl" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/research) +"dTu" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/coast/beachcorner/south_east, +/area/varadero/exterior/farocean) "dTC" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -4422,6 +5896,19 @@ icon_state = "red" }, /area/varadero/interior/medical) +"dTG" = ( +/turf/open/gm/coast/beachcorner/south_west, +/area/varadero/exterior/eastocean) +"dTS" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior_protected/caves) "dUh" = ( /obj/structure/morgue, /turf/open/floor/shiva{ @@ -4435,6 +5922,33 @@ icon_state = "redfull" }, /area/varadero/interior/medical) +"dUL" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/structure/barricade/wooden, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) +"dUS" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/shuttle{ + icon_state = "floor6" + }, +/area/varadero/interior_protected/vessel) +"dVq" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/almayer/medical/glass{ + dir = 1; + name = "\improper Underground Library"; + req_one_access = null; + req_access = null + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/varadero/interior/library) "dWl" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/close, @@ -4450,47 +5964,56 @@ icon_state = "multi_tiles" }, /area/varadero/interior/administration) +"dWH" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/comms4) "dWN" = ( /obj/structure/surface/table/woodentable/fancy, /obj/structure/machinery/faxmachine{ pixel_y = 3 }, +/obj/structure/machinery/light{ + dir = 4 + }, /turf/open/floor/wood, /area/varadero/interior/administration) -"dWY" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor{ - name = "\improper Colony Administration"; - req_access_txt = "100" +"dWV" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.1 }, -/turf/open/floor/plating, -/area/varadero/interior/administration) +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "dXd" = ( /turf/closed/wall/r_wall/elevator{ dir = 5 }, /area/varadero/interior/hall_N) -"dXJ" = ( -/obj/structure/filingcabinet{ - density = 0; - icon_state = "chestdrawer"; - pixel_x = 8; - pixel_y = 11 - }, -/obj/structure/filingcabinet{ - density = 0; - icon_state = "chestdrawer"; - pixel_x = 8 - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/item/storage/pill_bottle/inaprovaline/skillless{ - pixel_x = -5 +"dXg" = ( +/turf/closed/wall/rock/brown, +/area/varadero/exterior/pontoon_beach) +"dXr" = ( +/obj/structure/barricade/wooden{ + dir = 1 }, /turf/open/floor/wood, -/area/varadero/interior/bunks) +/area/varadero/interior/beach_bar) +"dYd" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "dYn" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 @@ -4499,6 +6022,10 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) +"dYp" = ( +/obj/item/book/manual/hydroponics_beekeeping, +/turf/open/floor/carpet, +/area/varadero/interior/library) "dYq" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/co2_cartridge{ @@ -4521,6 +6048,14 @@ icon_state = "redfull" }, /area/varadero/interior/hall_SE) +"dYW" = ( +/obj/item/reagent_container/glass/bucket/mopbucket{ + pixel_x = 11 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) "dYX" = ( /obj/structure/machinery/light, /turf/open/floor/carpet, @@ -4539,10 +6074,7 @@ pixel_x = -7; pixel_y = 8 }, -/obj/item/tool/lighter/zippo{ - icon_off = "blackzippo"; - icon_on = "blackzippoon"; - icon_state = "blackzippo"; +/obj/item/tool/lighter/zippo/black{ pixel_x = -5; pixel_y = 7 }, @@ -4564,9 +6096,85 @@ /obj/item/packageWrap, /turf/open/gm/dirt, /area/varadero/exterior/lz1_near) +"eaN" = ( +/obj/effect/landmark/objective_landmark/close, +/obj/structure/closet/crate/ammo/alt, +/obj/item/ammo_magazine/rifle/m4ra{ + pixel_x = 5 + }, +/obj/item/ammo_magazine/rifle/m4ra{ + pixel_y = -5; + pixel_x = -8 + }, +/obj/item/ammo_magazine/rifle/m4ra, +/obj/item/ammo_magazine/rifle{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/ammo_magazine/rifle{ + pixel_x = -7 + }, +/turf/open/shuttle/elevator/grating, +/area/varadero/interior/hall_N) +"eaQ" = ( +/obj/effect/spawner/random/toolbox, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) +"ebi" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"ebm" = ( +/obj/structure/stairs/perspective{ + color = "#b29082"; + dir = 8; + icon_state = "p_stair_ew_half_cap" + }, +/turf/closed/wall/rock/brown, +/area/varadero/exterior/lz1_near) "ebr" = ( /turf/closed/wall/rock/brown, /area/varadero/interior_protected/caves) +"ebF" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) +"ebJ" = ( +/obj/structure/prop/invuln/minecart_tracks{ + dir = 1 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/oob) +"ebN" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/pontoon_beach) "ecb" = ( /obj/structure/machinery/cm_vending/sorted/tech/comp_storage, /obj/structure/machinery/light{ @@ -4577,21 +6185,33 @@ icon_state = "blue" }, /area/varadero/interior/technical_storage) -"edp" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice8"; - pixel_x = 16; - pixel_y = 24 - }, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior/maintenance/research) +"ecX" = ( +/obj/effect/landmark/corpsespawner/engineer, +/obj/effect/decal/cleanable/blood, +/turf/open/gm/coast/north, +/area/varadero/exterior/pontoon_beach) "edu" = ( /turf/open/floor/shiva{ dir = 1; icon_state = "blue" }, /area/varadero/interior/maintenance) +"edD" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior/caves/north_research) "eea" = ( /obj/vehicle/train/cargo/engine{ dir = 2 @@ -4608,28 +6228,14 @@ icon_state = "yellow" }, /area/varadero/interior/technical_storage) -"efd" = ( -/obj/structure/machinery/bot/medbot{ - name = "Dr. O" - }, -/turf/open/floor/prison/chapel_carpet, -/area/varadero/interior/chapel) -"efu" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1; - name = "\improper Underground Reception Archives"; - req_access_txt = "100"; - req_one_access = null - }, -/turf/open/floor/plating, -/area/varadero/interior/records) "efw" = ( /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) +"efy" = ( +/turf/closed/wall/rock/brown, +/area/varadero/exterior/eastocean) "efU" = ( /obj/structure/machinery/landinglight/ds2{ dir = 4 @@ -4643,6 +6249,29 @@ /obj/effect/landmark/hunter_secondary, /turf/open/floor/plating/icefloor, /area/varadero/exterior/lz1_near) +"egp" = ( +/obj/structure/window/framed/colony, +/obj/structure/noticeboard{ + pixel_y = -32 + }, +/turf/open/floor{ + icon_state = "dark2" + }, +/area/varadero/interior/hall_N) +"egH" = ( +/obj/structure/prop/structure_lattice{ + density = 0; + desc = "On closer inspection, everything on these shelves are made of plastic."; + icon_state = "book-3"; + name = "book case" + }, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/varadero/interior/library) "egJ" = ( /obj/structure/surface/table, /obj/item/storage/box/lightstick{ @@ -4655,6 +6284,25 @@ icon_state = "yellow" }, /area/varadero/interior/technical_storage) +"egV" = ( +/obj/item/ammo_magazine/handful/shotgun/buckshot, +/turf/open/floor/carpet, +/area/varadero/interior/maintenance/north) +"eha" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) "ehD" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/green{ @@ -4664,19 +6312,76 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_NW) +"ehH" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice1"; + pixel_x = -16; + pixel_y = -8 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/cargo) +"ehM" = ( +/obj/structure/stairs/perspective{ + color = "#6b675e"; + dir = 1; + icon_state = "p_stair_full" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/vessel) +"ehT" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/coast/east, +/area/varadero/exterior/comms4) +"ehY" = ( +/obj/item/clothing/under/shorts/red{ + pixel_y = 9; + pixel_x = -8 + }, +/turf/open/gm/coast/beachcorner2/north_west, +/area/varadero/exterior/lz2_near) +"eia" = ( +/obj/effect/overlay/palmtree_r{ + icon_state = "palm2" + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "eij" = ( /obj/structure/bed, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/security) -"eiC" = ( -/turf/open/floor/plating, -/area/varadero/interior/hall_N) "eiK" = ( /obj/structure/prop/rock/brown, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/vessel) +"ejk" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice4"; + pixel_x = -16; + pixel_y = 24 + }, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "ejK" = ( /obj/structure/machinery/alarm{ dir = 8; @@ -4686,30 +6391,88 @@ icon_state = "wood" }, /area/varadero/interior/library) -"ejN" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/turf/open/gm/coast/east, -/area/varadero/interior/oob) -"elO" = ( +"ejM" = ( +/turf/open/gm/coast/north, +/area/varadero/exterior/monsoon) +"ejZ" = ( /obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/barricade/wooden, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/obj/structure/machinery/door/airlock/almayer/medical/glass{ + dir = 1; + name = "\improper Underground Medical Laboratory"; + req_one_access = null; + req_access = null }, -/area/varadero/interior/maintenance/security) -"emx" = ( -/obj/structure/prop/rock/brown, -/turf/open/gm/river, -/area/varadero/interior/oob) -"emX" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/largecrate/random, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/medical) +"ekg" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "yellow" + }, +/area/varadero/interior/comms3) +"ekE" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"ekO" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/comms4) +"elI" = ( +/turf/open/gm/coast/beachcorner/north_west, +/area/varadero/exterior/eastocean) +"elO" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/barricade/wooden, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) +"elP" = ( +/turf/open/gm/dirt{ + icon_state = "desert2" + }, +/area/varadero/exterior/monsoon) +"emt" = ( +/obj/structure/tunnel{ + id = "north_research_tunnel" + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/north_research) +"emC" = ( +/obj/structure/surface/rack, +/obj/item/tool/surgery/scalpel/pict_system, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance) +"emP" = ( +/obj/structure/machinery/camera/autoname/lz_camera, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) +"enu" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) "enH" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -4723,41 +6486,51 @@ icon_state = "multi_tiles" }, /area/varadero/interior/cargo) -"eph" = ( -/obj/structure/machinery/light{ - dir = 1 +"enZ" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/coast/beachcorner2/south_west, +/area/varadero/exterior/farocean) +"eoj" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/obj/structure/filingcabinet{ - density = 0; - icon_state = "chestdrawer"; - pixel_x = 8; - pixel_y = 11 +/turf/open/gm/coast/north, +/area/varadero/exterior/pontoon_beach) +"eoq" = ( +/obj/item/shard{ + icon_state = "medium" }, -/obj/structure/reagent_dispensers/water_cooler{ - pixel_x = -7; - pixel_y = 13 +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/floor/wood, -/area/varadero/interior/records) -"epm" = ( -/obj/item/weapon/gun/energy/rxfm5_eva, -/turf/open/floor/wood, -/area/varadero/interior/hall_SE) -"epr" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/clothing/gloves/botanic_leather, -/obj/item/clothing/mask/cigarette/weed{ - pixel_x = -11; - pixel_y = 16 +/area/varadero/interior/maintenance/security) +"eov" = ( +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves/central) +"eoB" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = -8 }, -/obj/item/clothing/mask/cigarette/weed{ - pixel_x = -9; - pixel_y = 13 +/turf/open/gm/dirt{ + icon_state = "desert3" }, -/turf/open/floor/shiva{ - icon_state = "blue" +/area/varadero/exterior/eastbeach) +"eoV" = ( +/obj/structure/prop/resin_prop, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/central) +"epN" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice1"; + pixel_x = -16; + pixel_y = -8 }, -/area/varadero/interior/technical_storage) +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "epO" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -4770,13 +6543,16 @@ "epQ" = ( /turf/closed/wall, /area/varadero/interior/morgue) -"epU" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/evidencebag, +"epY" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 1; + name = "\improper Underground Technical Storage"; + req_access_txt = "100" + }, /turf/open/floor/shiva{ icon_state = "floor3" }, -/area/varadero/interior/security) +/area/varadero/interior/technical_storage) "eqe" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/box/cups{ @@ -4796,6 +6572,22 @@ icon_state = "purplefull" }, /area/varadero/interior/research) +"eqg" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/closed/wall/rock/brown, +/area/varadero/exterior/pontoon_beach) +"eqn" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "white" + }, +/area/varadero/interior/toilets) "eqB" = ( /obj/structure/bed/chair{ dir = 8 @@ -4804,38 +6596,32 @@ icon_state = "floor3" }, /area/varadero/interior/security) -"erC" = ( -/obj/structure/machinery/firealarm{ - pixel_y = 24 - }, -/obj/structure/surface/table/woodentable, -/obj/item/reagent_container/food/drinks/bottle/vodka/chess/b_bishop{ - pixel_x = -10; - pixel_y = 15 - }, -/obj/item/reagent_container/blood/empty{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/storage/box/cups{ - pixel_x = -13; - pixel_y = 3 +"eqT" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor{ + icon_state = "asteroidwarning" }, -/turf/open/floor/wood, -/area/varadero/interior/chapel) +/area/varadero/exterior/lz2_near) "erE" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/shiva{ icon_state = "multi_tiles" }, /area/varadero/interior/hall_N) -"erS" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Underground Requesitions Lobby"; - req_access_txt = "100" +"erK" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null }, -/turf/open/floor/plating, -/area/varadero/interior/cargo) +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) +"erQ" = ( +/obj/effect/overlay/palmtree_r, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "esw" = ( /obj/effect/landmark/monkey_spawn, /turf/open/floor/plating/icefloor{ @@ -4851,6 +6637,33 @@ icon_state = "red" }, /area/varadero/interior/medical) +"esA" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/eastocean) +"esB" = ( +/obj/structure/closet/radiation, +/obj/effect/landmark/crap_item, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellowfull" + }, +/area/varadero/interior/comms3) +"esK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/digsite) "esM" = ( /obj/structure/target/syndicate, /turf/open/floor/plating/icefloor{ @@ -4865,6 +6678,14 @@ icon_state = "wood" }, /area/varadero/interior/library) +"etf" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Underground Main Hallway" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/hall_SE) "etv" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -4888,6 +6709,10 @@ }, /turf/open/floor/wood, /area/varadero/interior/security) +"etV" = ( +/obj/item/stack/sheet/metal, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "eul" = ( /obj/structure/closet/wardrobe/chaplain_black, /obj/effect/landmark/objective_landmark/close, @@ -4909,6 +6734,14 @@ icon_state = "green" }, /area/varadero/interior/hall_N) +"euS" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/coast/beachcorner/south_west, +/area/varadero/exterior/pontoon_beach) "evV" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22" @@ -4920,6 +6753,12 @@ icon_state = "floor3" }, /area/varadero/interior/hall_N) +"evW" = ( +/obj/item/lightstick/variant/planted, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/monsoon) "evX" = ( /obj/structure/machinery/landinglight/ds2/delaytwo{ dir = 1 @@ -4929,20 +6768,31 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) -"ewn" = ( -/obj/structure/barricade/handrail/wire{ - dir = 8; - layer = 2.991 +"ewv" = ( +/obj/structure/machinery/constructable_frame, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, +/area/varadero/exterior/eastbeach) +"ewS" = ( +/obj/structure/surface/table, +/obj/item/reagent_container/food/drinks/bottle/holywater, /turf/open/floor/shiva{ - icon_state = "multi_tiles" + dir = 1; + icon_state = "red" }, -/area/varadero/interior/electrical) -"ewO" = ( -/obj/structure/pipes/standard/manifold/hidden/green, -/obj/structure/machinery/light/small, +/area/varadero/interior/morgue) +"exj" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, /turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior_protected/maintenance/south) +/area/varadero/interior/hall_SE) +"exs" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/item/lightstick/variant/planted, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "exH" = ( /obj/item/device/defibrillator, /obj/structure/surface/table, @@ -4951,6 +6801,13 @@ icon_state = "wred" }, /area/varadero/interior/medical) +"exX" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/eastocean) "eye" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -4961,14 +6818,6 @@ icon_state = "floor3" }, /area/varadero/interior/security) -"eyh" = ( -/obj/structure/stairs/perspective{ - color = "#b29082"; - dir = 1; - icon_state = "p_stair_full" - }, -/turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) "eyt" = ( /turf/closed/wall/rock/brown, /area/varadero/interior/caves/east) @@ -4976,6 +6825,14 @@ /obj/structure/surface/table, /turf/open/floor/interior/plastic, /area/varadero/interior_protected/caves/digsite) +"ezb" = ( +/obj/structure/surface/rack, +/obj/item/frame/table, +/obj/item/frame/table, +/obj/item/frame/table, +/obj/item/frame/table, +/turf/open/shuttle/elevator/grating, +/area/varadero/interior/records) "ezc" = ( /obj/structure/prop/invuln/overhead_pipe{ dir = 4; @@ -5026,13 +6883,6 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) -"ezB" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "\improper Underground Security"; - req_access_txt = "100" - }, -/turf/open/floor/plating, -/area/varadero/interior/security) "ezI" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 @@ -5041,6 +6891,19 @@ dir = 1 }, /area/varadero/interior/research) +"ezU" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -1; + pixel_y = 9; + indestructible = 1; + unacidable = 1 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) "ezW" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -5090,6 +6953,26 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) +"eBm" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) "eBs" = ( /turf/closed/wall/r_wall/elevator{ dir = 9 @@ -5127,12 +7010,38 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"eCg" = ( +/obj/item/tool/warning_cone, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/pontoon_beach) "eCj" = ( /obj/structure/prop/almayer/computers/sensor_computer3, /turf/open/floor/prison{ icon_state = "darkredfull2" }, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/dock_control) +"eCu" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/coast/south, +/area/varadero/interior_protected/caves/central) +"eCB" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 3; + pixel_y = 15; + indestructible = 1; + unacidable = 1 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/farocean) "eDF" = ( /obj/structure/bed/stool{ icon_state = "stool_alt" @@ -5148,6 +7057,20 @@ }, /turf/open/floor/interior/plastic, /area/varadero/interior_protected/caves/digsite) +"eDY" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) +"eEd" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/closed/wall/r_wall, +/area/varadero/interior_protected/maintenance/south) "eEY" = ( /obj/structure/prop/ice_colony/dense/planter_box/plated{ dir = 4 @@ -5157,13 +7080,26 @@ }, /turf/open/floor/plating, /area/varadero/interior/research) -"eFA" = ( -/obj/structure/machinery/portable_atmospherics/canister/air, +"eFB" = ( +/obj/structure/prop/fishing/line/long{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"eFJ" = ( /turf/open/floor/shiva{ - dir = 1; - icon_state = "yellow" + icon_state = "multi_tiles" }, -/area/varadero/interior/electrical) +/area/varadero/interior/comms3) +"eFW" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "eGq" = ( /obj/item/reagent_container/food/snacks/eat_bar, /obj/item/reagent_container/food/snacks/eat_bar{ @@ -5174,9 +7110,35 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"eGL" = ( +/obj/item/stack/sheet/plasteel{ + amount = 24 + }, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/electrical) +"eGP" = ( +/obj/structure/closet/cabinet, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/powercell, +/turf/open/floor/wood, +/area/varadero/interior/research) "eGX" = ( /turf/open/gm/coast/beachcorner2/south_west, /area/varadero/exterior/pontoon_beach) +"eHl" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/plating, +/area/varadero/interior/toilets) +"eHs" = ( +/obj/item/lightstick/variant/planted, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"eHv" = ( +/obj/item/stack/sheet/wood/medium_stack, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "eHB" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -5187,6 +7149,10 @@ icon_state = "red" }, /area/varadero/interior/security) +"eHZ" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior_protected/caves/central) "eIr" = ( /obj/structure/platform_decoration/kutjevo, /turf/open/floor/strata{ @@ -5194,25 +7160,6 @@ icon_state = "multi_tiles" }, /area/varadero/interior_protected/vessel) -"eIt" = ( -/obj/structure/machinery/power/apc{ - dir = 1; - pixel_y = 24; - start_charge = 0 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior_protected/maintenance/south) -"eIK" = ( -/obj/structure/machinery/floodlight{ - name = "Floodlight" - }, -/obj/structure/platform_decoration/kutjevo{ - dir = 8 - }, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior_protected/caves/digsite) "eIT" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/drinks/bottle/sake{ @@ -5252,15 +7199,29 @@ icon_state = "red" }, /area/varadero/interior/medical) -"eKt" = ( +"eJN" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = -8 + }, +/obj/structure/barricade/handrail/wire{ + dir = 4 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/eastbeach) +"eJS" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "greenfull" +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/hall_N) +/area/varadero/interior_protected/maintenance/south) "eKw" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 @@ -5269,6 +7230,22 @@ icon_state = "floor3" }, /area/varadero/interior/security) +"eKF" = ( +/obj/structure/bed/chair{ + dir = 4; + icon_state = "chair_alt"; + pixel_y = 9 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) +"eKL" = ( +/obj/effect/overlay/palmtree_r{ + icon_state = "palm2" + }, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "eLE" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/door/window/brigdoor/westleft, @@ -5289,11 +7266,20 @@ icon_state = "redfull" }, /area/varadero/interior/medical) -"eMf" = ( -/obj/effect/landmark/xeno_hive_spawn, -/obj/effect/landmark/ert_spawns/groundside_xeno, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior_protected/caves/digsite) +"eLZ" = ( +/obj/structure/prop/ice_colony/dense/planter_box/hydro{ + density = 0 + }, +/obj/structure/flora/bush/desert{ + icon_state = "tree_2"; + pixel_x = -1; + pixel_y = 12 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior/caves/north_research) "eMi" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal8"; @@ -5324,15 +7310,32 @@ icon_state = "red" }, /area/varadero/interior/security) -"eNa" = ( +"eNk" = ( +/obj/item/toy/sword, +/obj/item/clothing/head/pirate, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"eNA" = ( +/obj/item/weapon/twohanded/fireaxe, +/obj/structure/surface/table/reinforced/prison, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"eOa" = ( /obj/structure/platform/kutjevo/smooth{ - dir = 1 + climb_delay = 1; + layer = 2.99 }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/turf/open/gm/coast/west, +/area/varadero/exterior/lz1_near) +"eOh" = ( +/obj/structure/machinery/optable, +/obj/effect/landmark/corpsespawner/colonist/burst, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "snow_mat" }, -/turf/open/gm/river, -/area/varadero/interior/caves/north_research) +/area/varadero/interior/medical) "eOu" = ( /obj/structure/machinery/camera/autoname{ dir = 1; @@ -5342,6 +7345,10 @@ icon_state = "red" }, /area/varadero/interior/security) +"eOv" = ( +/obj/item/circuitboard/airlock, +/turf/open/floor/shiva, +/area/varadero/interior/technical_storage) "eOZ" = ( /obj/structure/bed/chair{ dir = 1 @@ -5359,6 +7366,12 @@ dir = 1 }, /area/varadero/interior/cargo) +"ePz" = ( +/obj/item/explosive/grenade/incendiary/molotov{ + pixel_x = 6 + }, +/turf/open/floor/carpet, +/area/varadero/interior/chapel) "ePB" = ( /obj/structure/machinery/light{ dir = 1 @@ -5367,6 +7380,33 @@ icon_state = "green" }, /area/varadero/interior/hall_N) +"eQa" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 1 + }, +/obj/item/stack/tile/plasteel{ + layer = 2.89; + pixel_x = 17; + pixel_y = 16 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) +"eQm" = ( +/obj/structure/window/framed/wood, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) +"eQr" = ( +/obj/structure/largecrate/random/mini/med{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "eQz" = ( /obj/structure/filingcabinet/filingcabinet, /obj/item/paper/research_notes, @@ -5375,13 +7415,22 @@ icon_state = "blue" }, /area/varadero/interior/administration) -"eQU" = ( -/obj/structure/machinery/bot/mulebot, -/turf/open/floor/shiva{ - dir = 9; - icon_state = "yellow" +"eQC" = ( +/obj/structure/largecrate/supply/supplies/water, +/turf/open/shuttle/elevator/grating, +/area/varadero/interior/records) +"eQI" = ( +/obj/item/shard{ + icon_state = "large"; + pixel_x = -5; + pixel_y = -6 }, -/area/varadero/interior/cargo) +/obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/east) "eQZ" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -5390,10 +7439,6 @@ icon_state = "white" }, /area/varadero/interior/toilets) -"eRc" = ( -/obj/structure/prop/rock/brown, -/turf/open/gm/coast/beachcorner2/north_east, -/area/varadero/interior/oob) "eRD" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/carpet, @@ -5427,9 +7472,6 @@ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) -"eSd" = ( -/turf/open/gm/coast/beachcorner/north_west, -/area/varadero/exterior/eastbeach) "eSg" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -5442,33 +7484,38 @@ icon_state = "red" }, /area/varadero/interior/medical) -"eTP" = ( -/obj/structure/desertdam/decals/road_edge{ - icon_state = "road_edge_decal3"; - pixel_y = -12 +"eSo" = ( +/obj/structure/closet/crate/construction, +/obj/item/tool/extinguisher, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/obj/structure/barricade/handrail/wire, -/obj/structure/desertdam/decals/road_edge{ - pixel_x = 2 +/area/varadero/exterior/eastbeach) +"eTb" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/almayer/security/glass{ + dir = 1; + name = "\improper Underground Security Detective's Office"; + req_access_txt = "100" }, /turf/open/floor/wood, -/area/varadero/interior/court) -"eTX" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +/area/varadero/interior/security) +"eTi" = ( +/obj/effect/decal/cleanable/blood/gibs, +/obj/effect/landmark/corpsespawner/colonist/burst, +/turf/open/floor/shiva{ + icon_state = "redfull" }, -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/river, -/area/varadero/interior_protected/caves) -"eUe" = ( +/area/varadero/interior/medical) +"eTP" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; - pixel_y = 16 + pixel_y = -12 }, +/obj/structure/barricade/handrail/wire, /obj/structure/desertdam/decals/road_edge{ pixel_x = 2 }, -/obj/effect/landmark/corpsespawner/colonist/random, /turf/open/floor/wood, /area/varadero/interior/court) "eUh" = ( @@ -5495,13 +7542,20 @@ }, /turf/open/floor/carpet, /area/varadero/interior/hall_SE) -"eUR" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 +"eVn" = ( +/obj/structure/largecrate/random, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "yellow" }, -/turf/open/gm/river, -/area/varadero/interior/maintenance) +/area/varadero/interior/cargo) +"eVH" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) "eVU" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/segment{ @@ -5525,46 +7579,97 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) -"eWC" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/shiva{ +"eWp" = ( +/obj/structure/platform/kutjevo/smooth{ dir = 1; - icon_state = "yellow" + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/electrical) +/obj/structure/largecrate/random, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/interior/comms1) "eWR" = ( /turf/open/floor/shiva{ dir = 8; icon_state = "purplecorners" }, /area/varadero/interior/research) -"eXr" = ( -/obj/structure/surface/rack, -/obj/item/storage/briefcase, -/turf/open/floor/shiva{ - icon_state = "purple" +"eWZ" = ( +/obj/structure/prop/invuln/minecart_tracks{ + dir = 8 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/research) -"eXv" = ( -/obj/structure/largecrate/random, -/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/caves/east) -"eXT" = ( -/obj/structure/machinery/light, -/obj/structure/noticeboard{ - pixel_y = -32 - }, -/obj/effect/decal/warning_stripes/asteroid{ +/area/varadero/exterior/lz1_near) +"eXg" = ( +/obj/structure/platform/kutjevo/smooth{ dir = 1; - icon_state = "warning_c" + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, +/area/varadero/exterior/pontoon_beach) +"eXr" = ( +/obj/structure/surface/rack, +/obj/item/storage/briefcase, /turf/open/floor/shiva{ - icon_state = "floor3" + icon_state = "purple" }, -/area/varadero/interior/hall_N) +/area/varadero/interior/research) +"eXw" = ( +/obj/structure/prop/ice_colony/dense/planter_box/hydro{ + density = 0; + name = "barge float"; + desc = "A supportive lattice connected to two floating pontoons." + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/farocean) +"eXN" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"eXO" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) "eYe" = ( /obj/structure/bed/chair/office/light{ dir = 1 @@ -5579,6 +7684,12 @@ icon_state = "floor3" }, /area/varadero/interior/morgue) +"eYM" = ( +/obj/structure/machinery/power/monitor, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/electrical) "eZc" = ( /obj/structure/pipes/standard/manifold/fourway/hidden/green, /turf/open/floor/shiva{ @@ -5595,9 +7706,6 @@ icon_state = "floor3" }, /area/varadero/interior/cargo) -"fal" = ( -/turf/open/gm/dirt, -/area/varadero/interior/comms3) "fao" = ( /obj/structure/reagent_dispensers/water_cooler{ density = 0; @@ -5616,27 +7724,54 @@ "fay" = ( /turf/closed/wall/r_wall, /area/varadero/interior/research) -"faC" = ( -/turf/open/floor/plating, -/area/varadero/interior/mess) -"faG" = ( -/obj/effect/decal/strata_decals/grime/grime4{ - dir = 4 +"faB" = ( +/obj/effect/landmark/corpsespawner/miner, +/obj/effect/decal/cleanable/blood, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/swcaves) +"faP" = ( +/obj/structure/machinery/light{ + dir = 1 }, -/turf/open/floor/carpet, -/area/varadero/interior/bunks) -"faV" = ( -/obj/structure/window/framed/colony/reinforced/hull, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellowfull" + }, +/area/varadero/interior/comms3) +"faX" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "yellow" }, +/area/varadero/interior/electrical) +"fbr" = ( +/obj/effect/landmark/corpsespawner/miner, +/turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/maintenance/security) -"fbq" = ( -/obj/structure/platform/kutjevo/smooth{ +"fbw" = ( +/obj/structure/prop/ice_colony/dense/planter_box/hydro{ + desc = "A high-power hydroelectric generator."; + name = "hydroelectric generator" + }, +/turf/open/gm/coast/north, +/area/varadero/exterior/lz2_near) +"fbJ" = ( +/obj/structure/barricade/handrail/wire{ + dir = 8 + }, +/obj/structure/barricade/handrail/wire{ dir = 4 }, -/turf/open/gm/river, -/area/varadero/interior/maintenance) +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) "fbQ" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = 16 @@ -5672,16 +7807,33 @@ /obj/item/device/camera, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) +"fcg" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/varadero/interior/cargo) +"fcp" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "fcF" = ( /obj/effect/landmark/crap_item, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/vessel) -"fdf" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, +"fcK" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 + }, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/caves/east) +/area/varadero/interior/cargo) "fdn" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited{ @@ -5702,6 +7854,19 @@ icon_state = "floor3" }, /area/varadero/interior/court) +"fdA" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Underground Maintenance"; + req_access = null; + req_one_access = null + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/varadero/interior/maintenance/research) "fef" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/snacks/eat_bar{ @@ -5717,6 +7882,16 @@ icon_state = "purplefull" }, /area/varadero/interior/research) +"feH" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/closed/wall/rock/brown, +/area/varadero/exterior/monsoon) +"feM" = ( +/obj/structure/barricade/wooden, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) "feR" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/light/small{ @@ -5734,19 +7909,16 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"feW" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/gm/dirt{ + icon_state = "desert3" + }, +/area/varadero/interior/maintenance/north) "ffe" = ( /obj/structure/curtain/shower, /turf/open/floor/interior/plastic, /area/varadero/interior/laundry) -"ffi" = ( -/obj/effect/decal/warning_stripes/asteroid{ - dir = 4; - icon_state = "warning_c" - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/hall_N) "ffk" = ( /obj/structure/bed/chair, /obj/structure/machinery/light{ @@ -5756,15 +7928,6 @@ icon_state = "floor3" }, /area/varadero/interior/medical) -"fft" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" - }, -/area/varadero/exterior/lz1_near) "ffx" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -5772,14 +7935,28 @@ /obj/structure/pipes/standard/manifold/hidden/green, /turf/open/floor/carpet, /area/varadero/interior/hall_SE) -"ffQ" = ( -/obj/structure/closet/secure_closet/medical1{ - req_access_txt = "100" +"ffY" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 }, /turf/open/floor/shiva{ - icon_state = "wred" + icon_state = "multi_tiles" }, -/area/varadero/interior/medical) +/area/varadero/interior/disposals) +"fga" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/surface/rack, +/obj/item/tool/wrench, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "fgS" = ( /obj/structure/closet/crate/secure, /obj/effect/landmark/objective_landmark/close, @@ -5787,6 +7964,16 @@ icon_state = "floor3" }, /area/varadero/interior/cargo) +"fgW" = ( +/obj/structure/bed/chair/wood/normal{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "fhh" = ( /obj/item/tool/mop{ pixel_x = -10; @@ -5796,6 +7983,15 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"fhu" = ( +/obj/structure/bed/chair{ + dir = 3 + }, +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/varadero/exterior/lz1_near) "fhA" = ( /obj/item/device/flashlight, /obj/structure/surface/table/reinforced/prison{ @@ -5825,6 +8021,15 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"fiv" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper Underground Staff Canteen" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/mess) "fiA" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -5851,6 +8056,17 @@ icon_state = "redfull" }, /area/varadero/interior/medical) +"fjg" = ( +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior_protected/caves/swcaves) +"fjv" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/prop/rock/brown, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/farocean) "fjx" = ( /obj/structure/bed/chair{ dir = 1 @@ -5900,17 +8116,42 @@ icon_state = "green" }, /area/varadero/interior/hall_SE) +"fkd" = ( +/obj/item/toy/beach_ball, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/pontoon_beach) "fkj" = ( /turf/open/floor/shiva{ icon_state = "green" }, /area/varadero/interior/hall_SE) +"fky" = ( +/obj/structure/prop/ice_colony/dense/planter_box/plated{ + dir = 9; + icon_state = "planter_box_soil" + }, +/obj/structure/flora/bush/ausbushes/pointybush{ + icon_state = "pointybush_3"; + pixel_y = 11 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "fkE" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/shiva{ icon_state = "blue" }, /area/varadero/interior/hall_SE) +"fkF" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) "fkR" = ( /turf/closed/wall, /area/varadero/interior/court) @@ -5924,6 +8165,37 @@ }, /turf/open/floor/wood, /area/varadero/interior/research) +"fmu" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.5 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"fmy" = ( +/obj/structure/bed/chair{ + dir = 8; + icon_state = "chair_alt" + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) +"fnj" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) +"fnl" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/landmark/static_comms/net_two, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) "fnq" = ( /obj/effect/spawner/random/technology_scanner, /turf/open/floor/shiva{ @@ -5938,6 +8210,21 @@ icon_state = "snow_mat" }, /area/varadero/interior/maintenance) +"fof" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8; + unacidable = 0 + }, +/obj/structure/window/phoronreinforced{ + dir = 4; + icon_state = "phoronrwindow" + }, +/obj/item/device/flashlight/slime, +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" + }, +/area/varadero/interior_protected/vessel) "foz" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/sink{ @@ -5949,6 +8236,18 @@ icon_state = "green" }, /area/varadero/interior/mess) +"foE" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice4"; + pixel_x = -16; + pixel_y = 24 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/eastbeach) "foF" = ( /obj/structure/machinery/bot/mulebot, /turf/open/floor/shiva{ @@ -5956,6 +8255,12 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) +"foQ" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/pontoon_beach) "foU" = ( /obj/structure/filingcabinet{ density = 0; @@ -5998,19 +8303,9 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_NW) -"fpV" = ( -/obj/structure/stairs/perspective{ - color = "#6b675e"; - icon_state = "p_stair_full" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/turf/open/floor/strata{ - color = "#5e5d5d"; - icon_state = "multi_tiles" - }, -/area/varadero/interior_protected/vessel) +"fpq" = ( +/turf/open/gm/coast/beachcorner2/south_east, +/area/varadero/exterior/lz2_near) "fpY" = ( /obj/structure/machinery/door/airlock/multi_tile/elevator/research, /turf/open/shuttle/elevator/grating, @@ -6040,23 +8335,25 @@ icon_state = "red" }, /area/varadero/interior/security) -"frp" = ( -/obj/structure/surface/table, -/obj/item/circuitboard/machine/batteryrack, -/obj/item/stack/cable_coil{ - pixel_x = 2; - pixel_y = 7 - }, -/turf/open/floor/shiva{ - dir = 1 - }, -/area/varadero/interior/morgue) "frQ" = ( /obj/item/stack/sheet/metal, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/hall_SE) +"frR" = ( +/obj/structure/prop/rock/brown, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) +"fsC" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 10; + pixel_y = 2; + indestructible = 1; + unacidable = 1 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "ftm" = ( /obj/structure/fence, /obj/effect/decal/warning_stripes{ @@ -6071,6 +8368,11 @@ }, /turf/closed/wall/r_wall, /area/varadero/interior/research) +"ftF" = ( +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/comms3) "fuh" = ( /obj/structure/prop/ice_colony/soil_net, /turf/open/gm/dirt{ @@ -6084,6 +8386,18 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"fuF" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/cargo) +"fuS" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating, +/area/varadero/interior/disposals) "fvd" = ( /obj/structure/filingcabinet{ density = 0; @@ -6101,7 +8415,7 @@ /area/varadero/interior/hall_SE) "fvw" = ( /obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/chem_dispenser/beer{ +/obj/structure/machinery/chem_dispenser/soda/beer{ pixel_y = 8 }, /turf/open/floor/shiva{ @@ -6109,24 +8423,25 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"fvH" = ( -/obj/structure/pipes/standard/simple/hidden/green, +"fvV" = ( +/obj/structure/largecrate/random/barrel/green, /obj/structure/machinery/light/small{ - dir = 8 + dir = 1 }, -/obj/effect/decal/remains/human, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) +"fwo" = ( +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz1_near) +"fxK" = ( +/obj/structure/machinery/floodlight/landing{ + desc = "A powerful light stationed near construction zones to provide better visibility."; + name = "Construction Light" + }, +/obj/effect/decal/warning_stripes, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/maintenance/security) -"fvL" = ( -/turf/open/gm/coast/beachcorner/north_east, -/area/varadero/interior/oob) -"fvR" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 1 - }, -/turf/open/gm/river, /area/varadero/exterior/pontoon_beach) "fxR" = ( /obj/item/moneybag{ @@ -6146,11 +8461,35 @@ icon_state = "multi_tiles" }, /area/varadero/interior_protected/vessel) -"fyo" = ( -/obj/effect/landmark/objective_landmark/close, -/obj/structure/closet/crate/ammo/alt, -/turf/open/shuttle/elevator/grating, -/area/varadero/interior/hall_N) +"fxX" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -14; + pixel_y = 13 + }, +/turf/closed/wall/rock/brown, +/area/varadero/exterior/eastbeach) +"fys" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.01 + }, +/obj/structure/catwalk, +/turf/open/gm/river/desert/deep{ + base_river_slowdown = 0 + }, +/area/varadero/interior/maintenance/north) +"fyH" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood, +/obj/item/ammo_casing/shell{ + icon_state = "cartridge_1_1" + }, +/turf/open/floor/shiva{ + icon_state = "redfull" + }, +/area/varadero/interior/medical) "fyP" = ( /obj/structure/surface/table/woodentable, /obj/item/device/flashlight/lamp/candelabra{ @@ -6160,6 +8499,26 @@ }, /turf/open/floor/carpet, /area/varadero/interior/chapel) +"fyZ" = ( +/mob/living/simple_animal/cat{ + desc = "A domesticated, feline pet. The collar says 'Orion'."; + name = "Orion"; + real_name = "Orion" + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/varadero/interior/morgue) +"fzc" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/gm/dirt, +/area/varadero/interior/caves/north_research) +"fzx" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) "fzy" = ( /obj/structure/closet/emcloset, /turf/open/floor/shiva{ @@ -6190,42 +8549,20 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) -"fBB" = ( -/obj/structure/machinery/floodlight{ - name = "Floodlight" - }, +"fBV" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) -"fCE" = ( -/obj/structure/surface/rack, -/obj/item/storage/pouch/sling, -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/medical) -"fDn" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 +"fCB" = ( +/obj/structure/machinery/constructable_frame, +/obj/structure/machinery/light{ + dir = 1 }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 +/turf/open/floor/shiva{ + dir = 1; + icon_state = "yellow" }, -/obj/item/toy/farwadoll, -/turf/open/floor/wood, -/area/varadero/interior/bunks) +/area/varadero/interior/electrical) "fDB" = ( /obj/structure/machinery/light{ dir = 4 @@ -6235,6 +8572,18 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) +"fDH" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/coast/beachcorner2/south_east, +/area/varadero/exterior/farocean) +"fEb" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "snow_mat" + }, +/area/varadero/interior/maintenance) "fEm" = ( /obj/structure/largecrate/random, /obj/item/reagent_container/food/drinks/cans/thirteenloko{ @@ -6250,6 +8599,21 @@ icon_state = "bcircuit" }, /area/varadero/interior/electrical) +"fEz" = ( +/obj/structure/machinery/door/airlock/multi_tile/elevator/access/arrivals, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/records) +"fEA" = ( +/obj/structure/girder/displaced, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "fEI" = ( /obj/structure/bedsheetbin{ icon_state = "linenbin-empty" @@ -6293,6 +8657,10 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) +"fFw" = ( +/obj/item/stack/sheet/wood, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "fFx" = ( /obj/structure/machinery/alarm{ pixel_y = 24 @@ -6303,9 +8671,14 @@ icon_state = "yellow" }, /area/varadero/interior/electrical) -"fFD" = ( -/turf/open/gm/coast/beachcorner2/north_east, -/area/varadero/interior/oob) +"fFH" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) "fFI" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -6314,44 +8687,26 @@ icon_state = "floor3" }, /area/varadero/interior/administration) -"fFN" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, +"fFK" = ( /obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 + can_buckle = 0; + desc = "A lightweight support lattice."; + icon = 'icons/obj/structures/structures.dmi'; + icon_state = "latticefull"; + layer = 2.1; + name = "lattice" }, -/obj/structure/prop/structure_lattice{ - density = 0; - desc = "Made in Little Japan."; - health = 300; - icon = 'icons/obj/items/items.dmi'; - icon_state = "sheet-lizard"; - name = "exotic bedsheet"; - pixel_x = -1 +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/turf/open/floor/wood, -/area/varadero/interior/bunks) -"fGE" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Underground Requesitions Bay"; - req_access_txt = "100" +/area/varadero/interior_protected/vessel) +"fFO" = ( +/obj/effect/landmark/corpsespawner/colonist/burst, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/floor/plating, -/area/varadero/interior/cargo) +/area/varadero/interior_protected/caves) "fGM" = ( /obj/structure/bed/chair/wood/normal{ dir = 8 @@ -6361,10 +8716,32 @@ }, /turf/open/floor/carpet, /area/varadero/interior/library) +"fGN" = ( +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/farocean) "fGP" = ( /obj/effect/landmark/queen_spawn, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves) +"fHf" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) +"fHg" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/research) +"fHk" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/north_research) "fHs" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -6386,22 +8763,34 @@ icon_state = "snow_mat" }, /area/varadero/interior/security) -"fIT" = ( -/turf/open/gm/dirt{ - icon_state = "desert0" +"fIk" = ( +/obj/item/prop/colony/used_flare, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, -/area/varadero/interior/maintenance/north) +/area/varadero/exterior/lz2_near) "fJb" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice4"; pixel_x = -16; pixel_y = 24 }, +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor/shiva{ dir = 4; icon_state = "green" }, /area/varadero/interior/hall_SE) +"fJw" = ( +/obj/effect/decal/cleanable/blood, +/obj/item/weapon/gun/rifle/m41a, +/turf/open/floor/shiva{ + icon_state = "redfull" + }, +/area/varadero/interior/medical) "fJI" = ( /obj/item/clothing/gloves/yautja{ anchored = 1; @@ -6431,6 +8820,19 @@ icon_state = "wred" }, /area/varadero/interior/medical) +"fKz" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/medical/glass{ + name = "\improper Theta-V Research Laboratory Sample Isolation"; + req_access = null; + req_one_access = null + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/varadero/interior/research) "fLn" = ( /obj/structure/machinery/door/window/brigdoor/westleft{ dir = 1; @@ -6443,36 +8845,25 @@ icon_state = "snow_mat" }, /area/varadero/interior/security) -"fLo" = ( -/obj/structure/blocker/invisible_wall, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/turf/open/gm/river, -/area/varadero/interior/oob) "fLu" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) -"fLS" = ( -/turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) -"fLV" = ( -/obj/structure/stairs/perspective{ - color = "#b29082"; - dir = 8; - icon_state = "p_stair_ew_half_cap" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/turf/open/gm/dirt, -/area/varadero/exterior/pontoon_beach) "fLY" = ( /turf/open/gm/coast/beachcorner2/north_west, /area/varadero/exterior/pontoon_beach) +"fLZ" = ( +/obj/structure/surface/rack, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical, +/obj/effect/landmark/crap_item, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellow" + }, +/area/varadero/interior/comms3) "fMq" = ( /obj/item/device/cassette_tape/heavymetal{ pixel_x = -3; @@ -6488,9 +8879,36 @@ icon_state = "red" }, /area/varadero/interior/medical) -"fNn" = ( -/turf/open/auto_turf/sand_white/layer0, -/area/varadero/interior/maintenance/security) +"fMI" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"fMP" = ( +/obj/effect/landmark/objective_landmark/far, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "yellow" + }, +/area/varadero/interior/hall_SE) +"fNm" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -1; + pixel_y = 9; + indestructible = 1; + unacidable = 1 + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) "fND" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice12"; @@ -6501,13 +8919,22 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) -"fOA" = ( -/turf/open/gm/coast/south, -/area/varadero/exterior/eastbeach) -"fOW" = ( -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/coast/beachcorner/south_west, -/area/varadero/exterior/pontoon_beach) +"fOG" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/machinery/constructable_frame, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/interior/comms1) +"fOO" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited, +/turf/closed/wall/r_wall/unmeltable, +/area/varadero/interior/maintenance/north) "fPn" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -6533,28 +8960,65 @@ }, /turf/open/gm/grass/grass1/weedable, /area/varadero/interior_protected/caves/central) -"fPv" = ( +"fPq" = ( /obj/structure/machinery/power/apc{ + dir = 1; + pixel_y = 24; start_charge = 0 }, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/maintenance/research) -"fPG" = ( -/obj/structure/stairs/perspective{ - color = "#b29082"; - dir = 4; - icon_state = "p_stair_full" +/area/varadero/exterior/eastbeach) +"fPy" = ( +/obj/structure/prop/rock/brown, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 }, -/turf/open/gm/dirt, -/area/varadero/exterior/pontoon_beach) +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/eastocean) +"fPJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) +"fPU" = ( +/obj/structure/prop/souto_land/pole{ + dir = 1 + }, +/obj/structure/prop/souto_land/pole{ + dir = 8; + pixel_y = 24 + }, +/obj/structure/flora/pottedplant{ + desc = "How did that get in there?"; + icon_state = "pottedplant_22"; + pixel_y = 8 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellow" + }, +/area/varadero/interior/hall_NW) +"fQh" = ( +/obj/item/shard{ + icon_state = "large"; + pixel_x = -5; + pixel_y = -6 + }, +/obj/structure/bed/chair/wood/normal{ + dir = 8 + }, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "fQr" = ( /obj/structure/closet/emcloset, /turf/open/floor/shiva{ icon_state = "green" }, -/area/varadero/interior/hall_SE) +/area/varadero/interior/hall_N) "fQE" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -6564,12 +9028,12 @@ icon_state = "green" }, /area/varadero/interior/mess) -"fQU" = ( -/obj/structure/surface/table, -/turf/open/floor/shiva{ - icon_state = "red" +"fQK" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ + icon_state = "sparsegrass_3" }, -/area/varadero/interior/hall_N) +/turf/open/gm/dirt, +/area/varadero/exterior/comms4) "fQW" = ( /obj/structure/prop/turbine_extras, /turf/open/floor/plating/icefloor{ @@ -6588,13 +9052,35 @@ }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves) +"fSa" = ( +/obj/structure/window_frame/colony, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"fTh" = ( +/obj/item/tool/shovel, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/monsoon) "fUn" = ( -/obj/structure/surface/table, -/obj/item/paper/janitor{ - pixel_y = 8 +/turf/open/floor/shiva{ + icon_state = "multi_tiles" }, -/turf/open/floor/shiva, -/area/varadero/interior/technical_storage) +/area/varadero/interior/maintenance/north) +"fUs" = ( +/obj/structure/machinery/light/small, +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior/caves/north_research) +"fUC" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/objective_landmark/far, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/east) "fUF" = ( /obj/structure/machinery/landinglight/ds2/delaythree{ dir = 8 @@ -6623,18 +9109,26 @@ icon_state = "yellow" }, /area/varadero/interior/disposals) +"fVt" = ( +/obj/structure/machinery/door_control{ + id = "colony_sec_armory"; + name = "Colony Secure Armory"; + pixel_y = -26 + }, +/obj/item/storage/box/flashbangs, +/turf/open/floor/shiva{ + icon_state = "red" + }, +/area/varadero/interior/security) "fVw" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/vessel) -"fWi" = ( -/obj/structure/closet/crate/trashcart, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/cargo) +"fWd" = ( +/turf/open/gm/coast/beachcorner2/north_west, +/area/varadero/exterior/eastocean) "fWn" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -6670,6 +9164,30 @@ icon_state = "purplefull" }, /area/varadero/interior/research) +"fWE" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/turf/open/gm/coast/beachcorner2/north_west, +/area/varadero/exterior/pontoon_beach) +"fWR" = ( +/obj/structure/stairs/perspective{ + color = "#b29082"; + dir = 8; + icon_state = "p_stair_ew_half_cap" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) "fWU" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -6677,6 +9195,12 @@ icon_state = "redfull" }, /area/varadero/interior/hall_N) +"fWW" = ( +/obj/structure/surface/rack, +/obj/structure/surface/rack, +/obj/item/book/manual/engineering_construction, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "fXa" = ( /obj/structure/surface/table, /obj/item/device/flashlight/lamp/green{ @@ -6696,6 +9220,16 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) +"fXA" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "fXG" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -6712,41 +9246,29 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) -"fXR" = ( -/obj/structure/platform/kutjevo/rock{ - dir = 1 +"fXX" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/glass{ + amount = 30 }, -/obj/structure/platform/kutjevo/rock, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice12"; - pixel_y = -3 +/obj/item/trash/crushed_cup, +/obj/item/trash/c_tube, +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/turf/open/gm/river, -/area/varadero/interior/maintenance/research) -"fYb" = ( -/obj/structure/prop/structure_lattice{ - density = 0; - desc = "On closer inspection, everything on these shelves are made of plastic."; - icon_state = "book-5"; - name = "book case"; - pixel_y = 18 +/area/varadero/interior/cargo) +"fYs" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/floor/wood, -/area/varadero/interior/research) +/area/varadero/interior_protected/maintenance/south) "fYA" = ( /turf/open/floor/shiva{ dir = 8; icon_state = "yellowfull" }, /area/varadero/interior/hall_N) -"fYB" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/paper_bin, -/obj/item/paper/research_notes, -/turf/open/floor/shiva{ - icon_state = "blue" - }, -/area/varadero/interior/administration) "fYH" = ( /turf/open/floor/shiva{ dir = 8; @@ -6766,12 +9288,6 @@ icon_state = "greenfull" }, /area/varadero/interior/hall_N) -"fZo" = ( -/obj/item/stack/sheet/wood, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/comms2) "fZx" = ( /obj/item/stool{ pixel_x = -7; @@ -6808,13 +9324,18 @@ icon_state = "greenfull" }, /area/varadero/interior/medical) -"fZL" = ( -/obj/structure/prop/rock/brown, -/obj/structure/flora/bush/ausbushes/var3/stalkybush{ - pixel_x = -4 +"fZP" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/caves/east) +"fZX" = ( +/obj/structure/platform_decoration/kutjevo, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/pontoon_beach) "gan" = ( /obj/structure/machinery/power/apc{ dir = 8; @@ -6845,16 +9366,27 @@ icon_state = "green" }, /area/varadero/interior/hall_SE) -"gbl" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/door/airlock/almayer/engineering{ +"gaG" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"gaJ" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/east) +"gbE" = ( +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; dir = 1; - name = "\improper Underground Disposals"; - req_access_txt = "100" + icon_state = "hr_kutjevo"; + name = "support struts" }, -/turf/open/floor/plating, -/area/varadero/interior/disposals) +/turf/open/gm/coast/east, +/area/varadero/exterior/pontoon_beach) "gbG" = ( /obj/structure/bed/chair/office/dark{ dir = 1; @@ -6865,13 +9397,19 @@ icon_state = "greenfull" }, /area/varadero/interior/hall_SE) -"gbU" = ( -/obj/structure/barricade/wooden, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "snow_mat" +"gcB" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"gcF" = ( +/obj/structure/prop/wooden_cross{ + desc = "A grave to a fishing buddy, long gone" }, -/area/varadero/interior/maintenance) +/obj/item/clothing/head/boaterhat{ + pixel_y = 5 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "gcK" = ( /obj/structure/bed/chair{ dir = 4 @@ -6881,34 +9419,85 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) -"gdm" = ( -/obj/structure/surface/table, -/obj/item/trash/chunk{ - pixel_x = 3; - pixel_y = 6 - }, -/turf/open/floor/shiva{ - icon_state = "yellow" +"gdJ" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/technical_storage) -"gdw" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 10 +/obj/structure/prop/rock/brown{ + indestructible = 1; + unacidable = 1; + name = "sturdy rock(s)"; + desc = "A solidified collection of local minerals. When melted, becomes a substance best known as lava. These look particularly durable." }, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -15; + pixel_y = 16; + indestructible = 1; + unacidable = 1 }, -/area/varadero/interior/records) +/turf/open/gm/coast/beachcorner/south_west, +/area/varadero/exterior/pontoon_beach) "gdN" = ( /obj/structure/surface/table/woodentable, /obj/effect/landmark/objective_landmark/close, /turf/open/floor/carpet, /area/varadero/interior/library) +"gdO" = ( +/obj/item/stack/tile/plasteel{ + layer = 2.89; + pixel_x = 17; + pixel_y = 16 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) +"geo" = ( +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves/swcaves) "gey" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/maintenance/security) +"geK" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"gfc" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) +"gfe" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) "gfg" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -6919,6 +9508,18 @@ icon_state = "red" }, /area/varadero/interior/security) +"gfj" = ( +/obj/effect/decal/cleanable/cobweb{ + dir = 4 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) +"gfk" = ( +/obj/structure/girder/displaced, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "gfp" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -6927,6 +9528,25 @@ icon_state = "yellow" }, /area/varadero/interior/disposals) +"gfr" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/obj/item/tool/stamp{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/storage/box/masks{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/item/ammo_magazine/rifle, +/turf/open/floor/shiva{ + icon_state = "redfull" + }, +/area/varadero/interior/medical) "gfs" = ( /obj/structure/surface/table, /obj/item/reagent_container/food/drinks/flask/vacuumflask{ @@ -6968,6 +9588,23 @@ dir = 8 }, /area/varadero/interior/records) +"ggr" = ( +/obj/item/device/binoculars, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"ggX" = ( +/obj/structure/prop/structure_lattice{ + dir = 1; + health = 300 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves) +"gha" = ( +/obj/structure/surface/table, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "ghb" = ( /obj/item/tool/crowbar, /turf/open/floor/shiva{ @@ -6986,15 +9623,21 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) -"ghJ" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - name = "\improper Underground Maintenance"; - req_access_txt = "100"; - req_one_access = null +"ghI" = ( +/obj/structure/catwalk, +/obj/structure/barricade/handrail/wire{ + layer = 3.01 }, -/turf/open/floor/plating, -/area/varadero/interior/chapel) +/turf/open/floor/plating/plating_catwalk, +/area/varadero/interior/maintenance/north) +"ghN" = ( +/turf/open/gm/coast/south, +/area/varadero/exterior/monsoon) +"ghW" = ( +/turf/open/gm/dirt{ + icon_state = "desert2" + }, +/area/varadero/exterior/lz2_near) "gia" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -7013,15 +9656,9 @@ icon_state = "purple" }, /area/varadero/interior/research) -"giU" = ( -/obj/structure/largecrate/random/mini/chest/b, -/obj/structure/machinery/power/apc{ - dir = 1 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/comms2) +"giN" = ( +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/north) "gja" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/prop/invuln/overhead_pipe{ @@ -7038,6 +9675,16 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"gjs" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice8"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance) "gjw" = ( /turf/open/floor/shiva{ dir = 4; @@ -7064,6 +9711,10 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) +"gjC" = ( +/obj/effect/overlay/palmtree_r, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "gka" = ( /obj/structure/machinery/shower{ dir = 1 @@ -7085,25 +9736,36 @@ /obj/effect/landmark/objective_landmark/science, /turf/open/floor/wood, /area/varadero/interior/research) +"gkw" = ( +/obj/structure/machinery/power/apc{ + dir = 1 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/comms4) "gkx" = ( /obj/item/stack/tile/plasteel{ pixel_y = 6 }, /turf/open/floor/plating, /area/varadero/interior/hall_SE) -"gkC" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/flora/bush/ausbushes/var3/sparsegrass, -/turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) "gkF" = ( /obj/structure/sign/safety/airlock{ pixel_x = 8 }, /turf/closed/wall, /area/varadero/interior/maintenance) +"gkG" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice2"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) "gkL" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/emails{ @@ -7121,12 +9783,11 @@ icon_state = "multi_tiles" }, /area/varadero/interior/electrical) -"gll" = ( -/obj/structure/bed/chair, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/hall_NW) +"glp" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) "gms" = ( /obj/effect/landmark/good_item, /turf/open/shuttle{ @@ -7158,6 +9819,21 @@ icon_state = "greenfull" }, /area/varadero/interior/hall_SE) +"gnm" = ( +/obj/structure/surface/rack, +/obj/item/weapon/gun/shotgun/pump, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) +"gnx" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/floor/shiva{ + icon_state = "green" + }, +/area/varadero/interior/hall_N) "gnC" = ( /obj/item/reagent_container/food/drinks/cans/beer{ pixel_x = -9; @@ -7167,15 +9843,6 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) -"gnE" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/closet/secure_closet/surgical{ - pixel_x = -30 - }, -/turf/open/floor/shiva{ - icon_state = "redfull" - }, -/area/varadero/interior/medical) "gnZ" = ( /obj/effect/landmark/yautja_teleport, /turf/open/floor{ @@ -7194,17 +9861,26 @@ }, /turf/open/floor/wood, /area/varadero/interior/court) -"gpd" = ( -/obj/structure/barricade/handrail/wire{ - dir = 4 +"gor" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 }, -/obj/structure/closet/crate/trashcart{ - pixel_y = 8 +/turf/open/gm/dirt, +/area/varadero/exterior/comms4) +"gpJ" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" +/obj/structure/blocker/invisible_wall/water, +/obj/item/lightstick/variant/planted, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" }, -/area/varadero/interior/disposals) +/area/varadero/exterior/farocean) "gqE" = ( /obj/structure/bed/sofa/pews/flipped{ dir = 1 @@ -7227,13 +9903,11 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_N) -"grm" = ( -/obj/structure/machinery/vending/security, -/turf/open/floor/shiva{ - dir = 9; - icon_state = "red" - }, -/area/varadero/interior/security) +"grG" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/item/lightstick/variant/planted, +/turf/open/gm/coast/west, +/area/varadero/exterior/farocean) "grT" = ( /obj/structure/sign/safety/water, /turf/closed/wall/r_wall, @@ -7242,6 +9916,12 @@ /obj/structure/prop/rock/brown, /turf/open/gm/grass/grass1/weedable, /area/varadero/interior_protected/caves/central) +"gso" = ( +/obj/effect/landmark/ert_spawns/groundside_xeno, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/varadero/interior/cargo) "gsq" = ( /obj/structure/machinery/vending/coffee, /turf/open/floor/shiva{ @@ -7249,45 +9929,66 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"gsu" = ( +/obj/effect/decal/remains/xeno{ + pixel_y = 25 + }, +/obj/effect/landmark/xeno_spawn, +/turf/open/shuttle{ + icon_state = "floor6" + }, +/area/varadero/interior_protected/vessel) +"gsw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/item/tool/stamp, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/cargo) +"gsC" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/gm/coast/beachcorner/south_west, +/area/varadero/exterior/lz2_near) "gsP" = ( /turf/open/space/basic, /area/space) -"gtd" = ( +"gsQ" = ( /obj/structure/platform/kutjevo/smooth{ - dir = 8 + dir = 1; + climb_delay = 1; + layer = 2.99 }, -/obj/structure/prop/rock/brown, -/turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) -"gte" = ( -/obj/structure/surface/rack, -/obj/item/tool/pickaxe, -/obj/item/tool/pickaxe{ - pixel_y = -4 +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 }, -/turf/open/gm/dirt, -/area/varadero/interior/maintenance/north) -"gtj" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/shiva{ - icon_state = "floor3" +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" }, -/area/varadero/interior/technical_storage) -"gtr" = ( -/obj/effect/decal/warning_stripes/asteroid{ - icon_state = "warning_c" +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) +"gtv" = ( +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 }, -/turf/open/floor/shiva{ - icon_state = "floor3" +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/hall_N) +/area/varadero/exterior/eastbeach) "gtz" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, /obj/structure/barricade/wooden{ dir = 8 }, +/obj/structure/machinery/light/small{ + dir = 4 + }, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, @@ -7299,12 +10000,26 @@ icon_state = "purple" }, /area/varadero/interior/research) +"gux" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"guz" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/objective_landmark/far, +/turf/open/floor/shiva, +/area/varadero/interior/technical_storage) "guE" = ( /obj/structure/largecrate/random, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/hall_SE) +"gvo" = ( +/obj/item/ore/diamond, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz1_near) "gvE" = ( /obj/structure/machinery/light{ dir = 4 @@ -7322,6 +10037,23 @@ icon_state = "red" }, /area/varadero/interior/administration) +"gvJ" = ( +/obj/item/shard{ + icon_state = "large"; + pixel_x = -5; + pixel_y = -6 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) +"gvM" = ( +/turf/open/floor/shiva{ + dir = 8; + icon_state = "green" + }, +/area/varadero/interior/maintenance/north) "gvR" = ( /obj/structure/largecrate/random, /turf/open/floor/shiva{ @@ -7343,18 +10075,60 @@ icon_state = "floor3" }, /area/varadero/interior/research) +"gwD" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice1"; + pixel_x = -16; + pixel_y = -8 + }, +/turf/closed/wall/rock/brown, +/area/varadero/exterior/eastbeach) "gwG" = ( /turf/open/floor/shiva{ dir = 1; icon_state = "red" }, /area/varadero/interior/security) +"gwW" = ( +/obj/structure/surface/rack, +/obj/item/storage/pouch/sling, +/obj/effect/landmark/objective_landmark/science, +/obj/structure/machinery/light, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/medical) +"gxi" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice8"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance) +"gxQ" = ( +/obj/structure/prop/rock/brown, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/swcaves) +"gxX" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/hall_SE) "gyw" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /turf/open/floor/carpet, /area/varadero/interior/library) +"gyz" = ( +/turf/closed/wall/mineral/gold, +/area/varadero/interior/maintenance) +"gyE" = ( +/obj/structure/bed/chair/wood/normal, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "gyX" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/wood, @@ -7377,10 +10151,15 @@ icon_state = "yellow" }, /area/varadero/interior/technical_storage) -"gzW" = ( -/obj/structure/surface/table/woodentable, -/turf/open/floor/carpet, -/area/varadero/interior/library) +"gzm" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/item/stack/sheet/metal, +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "gAl" = ( /obj/structure/bed/chair{ dir = 4 @@ -7393,6 +10172,19 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) +"gAK" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/stack/tile/plasteel{ + layer = 2.89; + pixel_x = 17; + pixel_y = 16 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "gAV" = ( /obj/structure/barricade/wooden{ dir = 1 @@ -7438,6 +10230,20 @@ icon_state = "multi_tiles" }, /area/varadero/interior_protected/vessel) +"gBP" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor/plating/bare_catwalk, +/area/varadero/exterior/farocean) "gBV" = ( /obj/structure/machinery/photocopier, /turf/open/floor/shiva{ @@ -7445,6 +10251,19 @@ icon_state = "redfull" }, /area/varadero/interior/security) +"gBW" = ( +/obj/item/stack/sandbags_empty/half, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz1_near) +"gCe" = ( +/obj/item/stack/sheet/metal, +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"gCh" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior_protected/caves/central) "gCi" = ( /obj/structure/machinery/light{ dir = 1 @@ -7453,15 +10272,6 @@ icon_state = "blue" }, /area/varadero/interior/hall_SE) -"gCC" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/floor/plating, -/area/varadero/interior/administration) "gCH" = ( /obj/item/ammo_casing{ dir = 6; @@ -7469,12 +10279,42 @@ }, /turf/open/floor/wood, /area/varadero/interior/hall_SE) +"gCQ" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"gCZ" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -1; + pixel_y = 9; + indestructible = 1; + unacidable = 1 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) "gDh" = ( /obj/structure/largecrate/random, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) +"gDr" = ( +/obj/item/tool/warning_cone, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "gDI" = ( /obj/structure/bed/chair{ dir = 4 @@ -7489,6 +10329,12 @@ icon_state = "purple" }, /area/varadero/interior/research) +"gEz" = ( +/obj/structure/machinery/medical_pod/bodyscanner, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/medical) "gEO" = ( /obj/structure/surface/rack, /obj/item/weapon/gun/pistol/m4a3, @@ -7500,6 +10346,10 @@ icon_state = "red" }, /area/varadero/interior/security) +"gEP" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves) "gES" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/window/reinforced{ @@ -7521,22 +10371,19 @@ icon_state = "green" }, /area/varadero/interior/hall_SE) -"gFv" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/alarm{ - dir = 1; - pixel_y = -24 - }, -/obj/effect/landmark/objective_landmark/far, -/turf/open/floor{ - icon_state = "white" - }, -/area/varadero/interior/toilets) "gFx" = ( /turf/open/floor/wood, /area/varadero/interior/hall_SE) +"gFA" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/gm/dirt{ + icon_state = "desert1" + }, +/area/varadero/exterior/eastbeach) +"gFH" = ( +/obj/structure/inflatable/door, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/vessel) "gFW" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -7572,7 +10419,7 @@ /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/maintenance/research) +/area/varadero/interior/cargo) "gIB" = ( /obj/structure/machinery/vending/snack, /turf/open/floor/shiva{ @@ -7588,18 +10435,16 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) -"gJS" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/maint{ - name = "\improper Underground Maintenance"; - req_access = null; - req_access_txt = null; - req_one_access = null +"gJy" = ( +/obj/effect/overlay/palmtree_r{ + icon_state = "palm2" }, -/turf/open/floor/plating, -/area/varadero/interior/maintenance/research) +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"gJN" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) "gKn" = ( /obj/structure/machinery/light{ dir = 8 @@ -7612,22 +10457,18 @@ icon_state = "green" }, /area/varadero/interior/court) +"gKs" = ( +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/interior/oob) "gKw" = ( /obj/structure/surface/rack, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/maintenance/research) -"gKH" = ( -/obj/structure/prop/rock/brown, -/turf/open/gm/dirt, -/area/varadero/interior_protected/caves/digsite) -"gKR" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/turf/open/gm/river, -/area/varadero/interior/caves/north_research) +/area/varadero/interior/cargo) "gLo" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -7636,13 +10477,14 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) -"gLK" = ( -/obj/structure/machinery/washing_machine, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "snow_mat" - }, -/area/varadero/interior/security) +"gLw" = ( +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) +"gLV" = ( +/obj/structure/closet/crate, +/obj/item/tool/lighter, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) "gLZ" = ( /obj/structure/filingcabinet{ density = 0; @@ -7659,10 +10501,28 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/wood, /area/varadero/interior/bunks) -"gMf" = ( -/obj/structure/window/framed/colony/reinforced, -/turf/open/floor/plating/icefloor, -/area/varadero/interior/maintenance/north) +"gMi" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.5 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/pontoon_beach) +"gMm" = ( +/obj/structure/platform/kutjevo/rock{ + dir = 1 + }, +/obj/structure/platform/kutjevo/rock, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_y = -3 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior_protected/maintenance/south) "gMp" = ( /obj/structure/surface/table, /obj/item/paper_bin{ @@ -7672,26 +10532,17 @@ /obj/item/tool/pen/red/clicky, /turf/open/floor/interior/plastic, /area/varadero/interior_protected/caves/digsite) -"gMs" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 10 - }, -/obj/effect/decal/cleanable/cobweb{ - dir = 4 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance/security) -"gMU" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 4 +"gMV" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 }, -/turf/open/floor/shiva{ - dir = 6; - icon_state = "multi_tiles" +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/area/varadero/interior/medical) +/area/varadero/interior/caves/north_research) "gNb" = ( /obj/structure/closet/wardrobe/chaplain_black, /turf/open/floor/wood, @@ -7708,13 +10559,6 @@ /obj/structure/inflatable/door, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) -"gNQ" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/river, -/area/varadero/interior/caves/north_research) "gOe" = ( /obj/structure/machinery/door/airlock/multi_tile/elevator/access/arrivals, /turf/open/floor/shiva{ @@ -7722,13 +10566,17 @@ icon_state = "green" }, /area/varadero/interior/records) -"gOJ" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 4 - }, -/obj/structure/blocker/invisible_wall/water, -/turf/open/gm/river/ocean, -/area/varadero/interior/oob) +"gOj" = ( +/obj/item/tool/warning_cone, +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves/digsite) +"gOp" = ( +/obj/item/tool/wirecutters, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"gPi" = ( +/turf/open/gm/coast/west, +/area/varadero/exterior/monsoon) "gPA" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 @@ -7742,6 +10590,20 @@ icon_state = "desert2" }, /area/varadero/exterior/lz1_near) +"gPL" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/coast/west, +/area/varadero/exterior/pontoon_beach) "gPZ" = ( /obj/structure/bed/chair/office/light{ dir = 4 @@ -7754,6 +10616,25 @@ icon_state = "red" }, /area/varadero/interior/administration) +"gQa" = ( +/obj/structure/bed/chair/office/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/drip, +/obj/item/ammo_casing/shell{ + icon_state = "cartridge_3_1" + }, +/turf/open/floor/shiva{ + icon_state = "wredfull" + }, +/area/varadero/interior/medical) +"gRj" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/item/grown/log, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "gRN" = ( /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" @@ -7778,14 +10659,45 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, /area/varadero/interior/security) +"gRU" = ( +/obj/structure/machinery/floodlight{ + name = "Floodlight"; + unacidable = 0; + wrenchable = 1 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/digsite) +"gSn" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance) "gSC" = ( /obj/structure/machinery/light/small, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) +"gSE" = ( +/obj/structure/surface/table/reinforced/prison{ + color = "#6b675e" + }, +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" + }, +/area/varadero/interior_protected/vessel) "gSY" = ( /obj/structure/largecrate/random/mini/ammo{ pixel_x = -6; @@ -7799,31 +10711,45 @@ "gTe" = ( /turf/open/floor/plating, /area/varadero/interior_protected/caves/digsite) -"gTr" = ( -/obj/structure/closet/crate/ammo/alt, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/cargo) "gTC" = ( /obj/structure/window/framed/colony, /turf/open/floor/plating, /area/varadero/interior/disposals) -"gUb" = ( -/obj/structure/surface/table, -/obj/item/bodybag, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "red" - }, -/area/varadero/interior/morgue) "gUP" = ( /obj/structure/window/framed/colony/reinforced, /turf/open/floor/plating, /area/varadero/interior_protected/caves) +"gVd" = ( +/obj/structure/fence, +/turf/open/gm/coast/north, +/area/varadero/exterior/lz2_near) +"gVq" = ( +/obj/structure/largecrate/random/case, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/north) "gVO" = ( /turf/open/gm/coast/beachcorner2/south_east, /area/varadero/exterior/pontoon_beach) +"gVP" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/lz2_near) +"gVQ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood, +/obj/item/weapon/shield/riot, +/turf/open/floor/shiva{ + icon_state = "redfull" + }, +/area/varadero/interior/medical) "gWd" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = 16 @@ -7834,18 +10760,30 @@ }, /turf/open/floor/wood, /area/varadero/interior/court) -"gWA" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/largecrate/random/mini/ammo{ - pixel_y = 4 - }, -/turf/open/floor/wood, -/area/varadero/exterior/lz1_near) "gWL" = ( /obj/structure/surface/table, /obj/structure/machinery/faxmachine, /turf/open/floor/interior/plastic, /area/varadero/interior_protected/caves/digsite) +"gXf" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "gXh" = ( /obj/structure/machinery/constructable_frame{ icon_state = "box_1" @@ -7855,46 +10793,64 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) -"gXK" = ( -/obj/structure/sign/safety/bulkhead_door, -/turf/closed/wall/r_wall, -/area/varadero/exterior/lz1_near) +"gXw" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) "gXN" = ( -/obj/structure/machinery/portable_atmospherics/canister/air, +/obj/structure/machinery/recharge_station, /turf/open/floor/shiva{ dir = 8; icon_state = "yellowfull" }, /area/varadero/interior/electrical) -"gYY" = ( -/obj/structure/surface/table, +"gXO" = ( +/obj/structure/machinery/light{ + dir = 4 + }, /turf/open/floor/shiva{ - dir = 10; + dir = 4; icon_state = "yellow" }, -/area/varadero/interior/cargo) +/area/varadero/interior/comms3) +"gYg" = ( +/obj/item/toy/beach_ball/holoball, +/obj/structure/surface/rack, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance) +"gYh" = ( +/turf/closed/wall/wood, +/area/varadero/interior/beach_bar) "gZq" = ( /obj/effect/landmark/survivor_spawner, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/morgue) -"gZN" = ( -/obj/structure/machinery/firealarm{ - dir = 8; - pixel_x = -24 +"gZI" = ( +/obj/structure/filingcabinet{ + density = 0; + icon_state = "chestdrawer"; + pixel_x = -8; + pixel_y = 11 }, -/turf/open/floor/shiva{ - dir = 6; - icon_state = "red" +/obj/structure/filingcabinet{ + density = 0; + icon_state = "chestdrawer"; + pixel_x = 8; + pixel_y = 11 }, -/area/varadero/interior/morgue) -"gZP" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/obj/effect/landmark/objective_landmark/medium, +/obj/item/reagent_container/food/drinks/flask/vacuumflask{ + pixel_x = 9; + pixel_y = 25 }, -/turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) +/turf/open/floor/wood, +/area/varadero/interior/bunks) "haq" = ( /obj/structure/machinery/firealarm{ dir = 8; @@ -7919,11 +10875,34 @@ icon_state = "redfull" }, /area/varadero/interior/security) +"haC" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/turf/open/floor/shiva{ + icon_state = "wred" + }, +/area/varadero/interior/medical) +"haP" = ( +/turf/closed/wall/r_wall/unmeltable, +/area/varadero/interior/comms1) +"haR" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/coast/beachcorner2/north_west, +/area/varadero/exterior/pontoon_beach) "haT" = ( /turf/open/floor/shiva{ icon_state = "multi_tiles" }, /area/varadero/interior/technical_storage) +"haV" = ( +/obj/structure/closet/crate/secure, +/obj/effect/landmark/objective_landmark/medium, +/obj/item/trash/kepler, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/cargo) "haX" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/green, @@ -7931,6 +10910,36 @@ icon_state = "floor3" }, /area/varadero/interior/security) +"hbi" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) +"hbD" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior_protected/caves) +"hbP" = ( +/obj/structure/surface/table, +/obj/item/storage/firstaid/regular{ + pixel_x = 4; + pixel_y = 12 + }, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/electrical) "hca" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -7953,14 +10962,30 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) -"hcT" = ( -/obj/structure/machinery/light/small{ - dir = 4 +"hcI" = ( +/obj/item/stack/tile/plasteel{ + pixel_x = 8; + pixel_y = 6 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/security) +"hds" = ( +/turf/open/gm/coast/north, +/area/varadero/exterior/eastocean) +"hdV" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 }, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/comms2) +"hej" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "hek" = ( /obj/structure/machinery/vending/cigarette/colony, /turf/open/floor/shiva{ @@ -7974,6 +10999,24 @@ icon_state = "floor3" }, /area/varadero/interior/mess) +"heu" = ( +/obj/item/device/flashlight/lamp/tripod, +/obj/structure/machinery/power/apc{ + dir = 8; + pixel_x = -24; + start_charge = 0 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/north_research) +"hfn" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/barricade/wooden, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "hfo" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/segment, @@ -8009,6 +11052,24 @@ dir = 1 }, /area/varadero/interior/research) +"hfZ" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -1; + pixel_y = 9; + indestructible = 1; + unacidable = 1 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/farocean) +"hgc" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) "hgB" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -8017,13 +11078,18 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"hht" = ( -/obj/structure/blocker/fog, -/turf/open/gm/river, -/area/varadero/interior/oob) "hhM" = ( /turf/closed/wall/r_wall, /area/varadero/interior/caves/north_research) +"hhW" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/tool/stamp{ + icon_state = "stamp-ce" + }, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/records) "hic" = ( /obj/structure/machinery/light{ dir = 1 @@ -8033,10 +11099,6 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) -"hih" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/plating, -/area/varadero/interior/security) "hiD" = ( /turf/open/floor/shiva{ dir = 1; @@ -8047,27 +11109,42 @@ /obj/structure/flora/bush/ausbushes/var3/brflowers, /turf/open/gm/grass/grass1/weedable, /area/varadero/interior_protected/caves/central) -"hjj" = ( -/obj/item/ammo_magazine/handful/shotgun/buckshot{ - pixel_x = 4; - pixel_y = -16 +"hjf" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 4 }, -/turf/open/floor/carpet, -/area/varadero/exterior/lz1_near) -"hjD" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/farocean) +"hjn" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 }, +/obj/structure/girder, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"hjK" = ( /obj/structure/blocker/invisible_wall/water, -/turf/open/gm/river/ocean, -/area/varadero/interior/oob) -"hkc" = ( -/obj/structure/surface/table, -/obj/item/device/binoculars, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/comms2) +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor/plating/bare_catwalk, +/area/varadero/exterior/farocean) +"hkQ" = ( +/obj/structure/platform_decoration/kutjevo, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz1_near) "hkZ" = ( /obj/structure/surface/table/woodentable, /obj/item/folder/red, @@ -8085,13 +11162,55 @@ }, /turf/open/floor/wood, /area/varadero/interior/court) -"hlp" = ( -/obj/structure/closet/toolcloset, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" +"hli" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "snow_mat" + }, +/area/varadero/interior/medical) +"hlp" = ( +/obj/structure/closet/toolcloset, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" }, /area/varadero/interior/electrical) +"hlw" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/landmark/survivor_spawner, +/turf/open/floor/carpet, +/area/varadero/interior/maintenance/north) +"hlF" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) +"hlG" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/comms4) "hlK" = ( /obj/structure/surface/table/woodentable, /obj/item/storage/box/drinkingglasses{ @@ -8115,6 +11234,11 @@ }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) +"hmh" = ( +/turf/open/gm/dirt{ + icon_state = "desert_dug" + }, +/area/varadero/exterior/lz2_near) "hmm" = ( /obj/structure/machinery/light, /obj/structure/surface/table, @@ -8133,24 +11257,35 @@ icon_state = "floor3" }, /area/varadero/interior/laundry) -"hmu" = ( -/turf/open/gm/coast/beachcorner/south_west, -/area/varadero/exterior/eastbeach) +"hmp" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "greenfull" + }, +/area/varadero/interior/hall_N) +"hmR" = ( +/obj/item/tool/crowbar, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "hni" = ( /obj/structure/sign/safety/fire_haz{ pixel_y = 7 }, /turf/closed/wall/rock/brown, /area/varadero/interior/oob) -"hnS" = ( +"hnR" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, /obj/structure/machinery/light{ - dir = 8 + dir = 4 }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "yellow" +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/area/varadero/interior/electrical) +/area/varadero/exterior/comms4) "hoC" = ( /obj/structure/prop/rock/brown, /turf/open/auto_turf/sand_white/layer1, @@ -8175,6 +11310,10 @@ }, /turf/open/floor/wood, /area/varadero/interior/hall_SE) +"hoP" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating, +/area/varadero/interior/maintenance) "hoU" = ( /obj/effect/decal/cleanable/blood{ basecolor = "#20d450"; @@ -8184,13 +11323,6 @@ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) -"hpQ" = ( -/obj/structure/largecrate/random, -/turf/open/shuttle/elevator, -/area/varadero/interior/hall_N) -"hqL" = ( -/turf/open/floor/carpet, -/area/varadero/exterior/lz1_near) "hre" = ( /turf/open/gm/dirt, /area/varadero/interior_protected/caves/digsite) @@ -8207,12 +11339,26 @@ icon_state = "green" }, /area/varadero/interior/hall_SE) +"hsa" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) "hsl" = ( /turf/open/floor{ dir = 1; icon_state = "asteroidfloor" }, /area/varadero/interior/maintenance/north) +"hso" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "hst" = ( /obj/structure/sign/safety/high_voltage, /turf/closed/wall/r_wall, @@ -8235,6 +11381,17 @@ "hte" = ( /turf/closed/wall/rock/brown, /area/varadero/interior_protected/vessel) +"hti" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "hto" = ( /obj/structure/prop/rock/brown, /turf/open/auto_turf/sand_white/layer1, @@ -8251,9 +11408,37 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) -"huc" = ( -/turf/closed/wall, -/area/varadero/interior/comms1) +"htU" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/filingcabinet{ + density = 0; + icon_state = "chestdrawer"; + pixel_x = 8; + pixel_y = 11 + }, +/obj/structure/reagent_dispensers/water_cooler{ + pixel_x = -7; + pixel_y = 13 + }, +/obj/effect/landmark/objective_landmark/far, +/turf/open/floor/wood, +/area/varadero/interior/records) +"huf" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/comms4) +"hus" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/comms3) "hux" = ( /obj/structure/bed/chair/office/light, /turf/open/floor/shiva{ @@ -8268,26 +11453,12 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) -"huz" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/surface/table/reinforced/prison{ - dir = 8; - flipped = 1 +"huE" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 }, -/obj/effect/landmark/objective_landmark/far, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" - }, -/area/varadero/interior/hall_SE) -"huD" = ( -/obj/item/stack/sheet/metal, /turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) +/area/varadero/exterior/monsoon) "huF" = ( /turf/closed/wall/r_wall/unmeltable, /area/varadero/interior/oob) @@ -8303,10 +11474,6 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) -"hvj" = ( -/obj/effect/landmark/objective_landmark/far, -/turf/open/floor/plating, -/area/varadero/interior/disposals) "hvO" = ( /turf/open/floor/shiva{ icon_state = "multi_tiles" @@ -8318,18 +11485,17 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) -"hwz" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" +"hwE" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/area/varadero/interior/comms1) +/area/varadero/exterior/monsoon) +"hwL" = ( +/obj/structure/prop/dam/crane/damaged, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "hwN" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -8356,6 +11522,19 @@ icon_state = "multi_tiles" }, /area/varadero/interior/electrical) +"hxa" = ( +/obj/structure/closet/secure_closet/security, +/turf/open/floor/shiva{ + dir = 10; + icon_state = "red" + }, +/area/varadero/interior/administration) +"hxO" = ( +/obj/structure/barricade/wooden{ + dir = 4 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/north) "hyd" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -8378,18 +11557,12 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) -"hyN" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -16; - pixel_y = 13 +"hys" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/gm/dirt, -/area/varadero/interior/maintenance/north) +/area/varadero/interior/hall_SE) "hyQ" = ( /obj/structure/surface/table/reinforced/prison, /obj/effect/spawner/random/tool, @@ -8416,6 +11589,22 @@ icon_state = "red" }, /area/varadero/interior/security) +"hzx" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"hzK" = ( +/obj/structure/stairs/perspective{ + color = "#b29082"; + icon_state = "p_stair_full" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) "hAg" = ( /obj/structure/largecrate/random/case/double, /turf/open/gm/dirt, @@ -8424,12 +11613,38 @@ /obj/effect/landmark/survivor_spawner, /turf/open/floor/wood, /area/varadero/interior/court) +"hAI" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 8 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) +"hBA" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/central) "hBX" = ( /turf/open/floor/shiva{ dir = 10; icon_state = "purple" }, /area/varadero/interior/research) +"hCw" = ( +/obj/structure/stairs/perspective{ + color = "#b29082"; + dir = 1; + icon_state = "p_stair_full" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) "hCZ" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 @@ -8439,20 +11654,30 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_NW) -"hDA" = ( +"hDk" = ( +/obj/structure/bedsheetbin, +/obj/item/storage/box/attachments{ + pixel_x = -2; + pixel_y = 8 + }, +/obj/item/ammo_magazine/rifle/m4ra, /turf/open/floor/shiva{ icon_state = "floor3" }, -/area/varadero/interior/research) -"hDV" = ( -/obj/effect/decal/cleanable/cobweb{ - dir = 8; - pixel_x = 11 +/area/varadero/interior/bunks) +"hDw" = ( +/obj/structure/stairs/perspective{ + color = "#b29082"; + icon_state = "p_stair_ew_full_cap"; + layer = 3.5 }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"hDA" = ( +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/area/varadero/interior/maintenance) +/area/varadero/interior/research) "hDX" = ( /obj/structure/machinery/cryo_cell, /obj/structure/pipes/standard/cap, @@ -8460,12 +11685,30 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) -"hEE" = ( -/obj/structure/closet/toolcloset, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +"hDY" = ( +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + icon_state = "windsock"; + pixel_x = 18; + pixel_y = 23 }, -/area/varadero/interior/comms2) +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"hEs" = ( +/obj/structure/machinery/landinglight/ds2{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) +"hEv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt{ + icon_state = "desert1" + }, +/area/varadero/exterior/eastocean) "hEN" = ( /obj/structure/closet/l3closet/scientist, /turf/open/floor/shiva{ @@ -8473,6 +11716,14 @@ icon_state = "purplefull" }, /area/varadero/interior/research) +"hET" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "hFA" = ( /obj/structure/window/reinforced{ dir = 4 @@ -8488,65 +11739,51 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor{ - icon_state = "dark2" +/turf/open/floor/shiva{ + dir = 8; + icon_state = "redfull" }, /area/varadero/interior/hall_N) -"hGm" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/clipboard{ - pixel_x = -2; - pixel_y = 5 - }, -/obj/item/tool/pen/red{ - pixel_x = 6; - pixel_y = 9 - }, -/obj/item/paper{ - pixel_x = -7; - pixel_y = 7 - }, +"hFM" = ( +/obj/structure/window_frame/wood, /turf/open/floor/wood, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/beach_bar) +"hGl" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/north_research) "hGz" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/shiva{ icon_state = "wredfull" }, /area/varadero/interior/medical) -"hGZ" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/barricade/handrail{ - desc = "Your platforms look pretty heavy king, let me support them for you."; - dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" +"hHn" = ( +/obj/effect/landmark/hunter_secondary, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"hHE" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/obj/structure/blocker/invisible_wall/water, -/turf/open/gm/river/ocean, -/area/varadero/interior/oob) -"hHt" = ( -/obj/structure/machinery/light{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice12"; - pixel_x = 16; - pixel_y = -8 +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper Underground Power Substation" }, /turf/open/floor/shiva{ - dir = 4; - icon_state = "green" + dir = 1; + icon_state = "multi_tiles" }, -/area/varadero/interior/hall_SE) -"hHA" = ( +/area/varadero/interior/electrical) +"hHK" = ( +/obj/structure/machinery/bot/mulebot, /turf/open/floor/shiva{ - dir = 4; - icon_state = "red" + icon_state = "floor3" }, -/area/varadero/interior/medical) +/area/varadero/interior/cargo) "hHR" = ( /obj/structure/prop/structure_lattice{ density = 0; @@ -8558,6 +11795,15 @@ }, /turf/closed/wall/r_wall, /area/varadero/interior/security) +"hIo" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal3"; + pixel_y = 16 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/varadero/interior/court) "hJl" = ( /obj/structure/machinery/firealarm{ pixel_y = 24 @@ -8568,6 +11814,18 @@ icon_state = "red" }, /area/varadero/interior/security) +"hJq" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/item/reagent_container/glass/bucket{ + pixel_x = 9; + pixel_y = 9 + }, +/obj/effect/landmark/corpsespawner/colonist, +/obj/effect/decal/cleanable/blood, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/pontoon_beach) "hJw" = ( /obj/structure/largecrate/random, /obj/item/storage/photo_album{ @@ -8575,6 +11833,10 @@ }, /turf/open/floor/wood, /area/varadero/interior/security) +"hJB" = ( +/obj/structure/blocker/fog, +/turf/closed/wall/r_wall/unmeltable, +/area/varadero/exterior/farocean) "hJO" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/communications{ @@ -8585,18 +11847,6 @@ icon_state = "blue" }, /area/varadero/interior/technical_storage) -"hJQ" = ( -/obj/structure/surface/table, -/obj/item/tool/kitchen/utensil/fork, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice8"; - pixel_x = 16; - pixel_y = 24 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/mess) "hKe" = ( /obj/structure/bed/chair/office/dark{ dir = 1 @@ -8609,14 +11859,28 @@ "hKK" = ( /turf/open/gm/coast/west, /area/varadero/exterior/pontoon_beach) -"hLA" = ( -/obj/structure/pipes/standard/simple/hidden/green{ +"hLt" = ( +/obj/structure/filingcabinet{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/structure/filingcabinet{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) +"hLE" = ( +/obj/structure/pipes/vents/pump{ dir = 4 }, +/obj/effect/landmark/corpsespawner/doctor, +/obj/effect/decal/cleanable/blood/gibs, /turf/open/floor/shiva{ - icon_state = "floor3" + icon_state = "redfull" }, -/area/varadero/interior/mess) +/area/varadero/interior/medical) "hLF" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/prop/invuln/overhead_pipe{ @@ -8634,14 +11898,31 @@ icon_state = "snow_mat" }, /area/varadero/interior/maintenance) -"hMf" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/effect/landmark/objective_landmark/close, +"hLQ" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/floor/shiva{ + icon_state = "blue" + }, +/area/varadero/interior/maintenance) +"hLY" = ( +/obj/item/shard{ + icon_state = "large"; + pixel_x = -5; + pixel_y = -6 + }, /turf/open/floor/shiva{ dir = 1; - icon_state = "yellow" + icon_state = "blue" }, -/area/varadero/interior/electrical) +/area/varadero/interior/maintenance) +"hMg" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.5 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) "hMh" = ( /obj/structure/filingcabinet, /obj/item/paper/research_notes, @@ -8649,6 +11930,39 @@ icon_state = "redfull" }, /area/varadero/interior/medical) +"hMC" = ( +/obj/item/clothing/ears/earmuffs{ + layer = 3.1; + pixel_x = 2; + pixel_y = 18 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/caves) +"hMG" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/trash/candle, +/turf/open/floor/carpet, +/area/varadero/interior/chapel) +"hMI" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = -8 + }, +/turf/open/gm/coast/beachcorner/north_east, +/area/varadero/exterior/eastbeach) +"hMV" = ( +/obj/structure/machinery/light, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "red" + }, +/area/varadero/interior/medical) "hNb" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/segment, @@ -8667,18 +11981,29 @@ icon_state = "redfull" }, /area/varadero/interior/hall_SE) -"hNC" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" +"hNq" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/electrical) -"hOe" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/coast/south, +/area/varadero/exterior/pontoon_beach) +"hOp" = ( +/obj/structure/machinery/floodlight/landing{ + desc = "A powerful light stationed near construction zones to provide better visibility."; + name = "Construction Light" + }, +/obj/effect/decal/warning_stripes, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/gm/dirt, /area/varadero/exterior/lz1_near) "hOv" = ( /obj/structure/desertdam/decals/road_edge{ @@ -8697,6 +12022,13 @@ icon_state = "floor3" }, /area/varadero/interior/bunks) +"hPj" = ( +/turf/closed/wall/rock/brown, +/area/varadero/interior/security) +"hPq" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "hPD" = ( /turf/open/floor/shiva{ icon_state = "floor3" @@ -8718,31 +12050,48 @@ icon_state = "multi_tiles" }, /area/varadero/interior/administration) -"hQn" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/secure{ - dir = 2; - icon_state = "door_locked"; - locked = 1; - name = "Underground Secure Technical Storage"; - req_access_txt = "100" +"hQl" = ( +/obj/structure/girder, +/turf/open/gm/dirt{ + icon_state = "desert3" }, -/turf/open/floor/plating, -/area/varadero/interior/technical_storage) -"hQq" = ( -/turf/open/auto_turf/sand_white/layer0, -/area/varadero/interior_protected/caves/central) -"hQH" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/structure/machinery/light{ - dir = 1 +/area/varadero/exterior/eastbeach) +"hQo" = ( +/obj/structure/bed/roller, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/shiva{ +/area/varadero/interior/maintenance) +"hQP" = ( +/obj/item/ammo_magazine/handful/shotgun/buckshot{ + pixel_x = 4; + pixel_y = -16 + }, +/turf/open/floor/carpet, +/area/varadero/interior/maintenance/north) +"hQV" = ( +/obj/structure/prop/structure_lattice{ dir = 1; - icon_state = "yellow" + health = 300 }, -/area/varadero/interior/electrical) +/obj/structure/prop/structure_lattice{ + dir = 1; + layer = 3.1; + pixel_y = 10 + }, +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + icon_state = "vent4"; + pixel_y = 25 + }, +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + icon_state = "windsock"; + pixel_x = 18; + pixel_y = 23 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) "hRs" = ( /obj/structure/machinery/power/smes/magical{ capacity = 9e+008; @@ -8759,29 +12108,6 @@ /obj/effect/landmark/objective_landmark/far, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/caves/north_research) -"hSx" = ( -/obj/structure/bed/roller, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "red" - }, -/area/varadero/interior/morgue) -"hSN" = ( -/turf/open/floor/plating, -/area/varadero/interior/administration) -"hSU" = ( -/obj/structure/machinery/firealarm{ - pixel_y = 24 - }, -/obj/effect/landmark/hunter_primary, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "yellowfull" - }, -/area/varadero/interior/electrical) "hTd" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -8804,6 +12130,21 @@ }, /turf/open/floor/plating, /area/varadero/interior_protected/vessel) +"hTQ" = ( +/obj/structure/airlock_assembly, +/turf/open/shuttle{ + icon_state = "floor6" + }, +/area/varadero/interior_protected/vessel) +"hTX" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/monsoon) "hTZ" = ( /obj/structure/surface/table, /obj/structure/prop/server_equipment/laptop/closed{ @@ -8826,13 +12167,6 @@ icon_state = "red" }, /area/varadero/interior/security) -"hUq" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/effect/overlay/palmtree_r, -/turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) "hUs" = ( /obj/structure/closet/hydrant{ pixel_y = 32 @@ -8847,20 +12181,9 @@ icon_state = "red" }, /area/varadero/interior/hall_SE) -"hUK" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 1 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance/security) -"hUU" = ( -/obj/structure/machinery/requests_console{ - icon_state = "req_comp_open" +"hUU" = ( +/obj/structure/machinery/requests_console{ + icon_state = "req_comp_open" }, /turf/closed/wall, /area/varadero/interior/cargo) @@ -8870,40 +12193,51 @@ icon_state = "yellow" }, /area/varadero/interior/electrical) -"hVM" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "yellow" +"hVL" = ( +/obj/item/stack/sandbags/large_stack{ + pixel_y = 4; + pixel_x = -12 }, -/area/varadero/interior/electrical) -"hWm" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Underground Main Hallway"; - req_access_txt = "100" +/turf/open/gm/dirt{ + icon_state = "desert0" }, -/turf/open/floor/plating, -/area/varadero/interior/hall_NW) +/area/varadero/exterior/lz2_near) +"hWv" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ + icon_state = "sparsegrass_3" + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastocean) +"hWA" = ( +/obj/structure/surface/table, +/obj/item/tool/kitchen/utensil/fork, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/mess) "hWG" = ( /obj/effect/landmark/xeno_spawn, -/turf/open/auto_turf/sand_white/layer0, +/turf/open/gm/dirt, /area/varadero/interior_protected/caves) -"hXg" = ( -/obj/structure/bed/chair{ - dir = 1 +"hXe" = ( +/obj/structure/surface/table, +/obj/item/tool/kitchen/knife{ + pixel_x = 7; + pixel_y = -1 }, -/obj/structure/machinery/light, -/turf/open/floor/shiva{ - icon_state = "green" +/obj/item/reagent_container/food/snacks/carpmeat, +/obj/item/prop/helmetgarb/helmet_nvg/cosmetic{ + pixel_x = -8; + pixel_y = 9 }, -/area/varadero/interior/court) -"hXj" = ( -/obj/item/weapon/gun/rifle/m41a, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"hXq" = ( +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/bunks) +/area/varadero/interior_protected/caves/digsite) "hXv" = ( /obj/structure/surface/table, /turf/open/floor/shiva{ @@ -8911,24 +12245,15 @@ icon_state = "red" }, /area/varadero/interior/security) -"hXN" = ( -/obj/structure/largecrate/random/mini, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" - }, -/area/varadero/interior/comms3) -"hYf" = ( -/obj/structure/closet/hydrant{ - pixel_y = 32 - }, -/obj/structure/machinery/light{ - dir = 1 - }, +"hXR" = ( +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/pontoon_beach) +"hYp" = ( +/obj/structure/window/framed/colony, /turf/open/floor/shiva{ - icon_state = "green" + icon_state = "multi_tiles" }, -/area/varadero/interior/hall_N) +/area/varadero/interior/maintenance) "hZo" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -8939,32 +12264,27 @@ }, /area/varadero/interior/medical) "hZD" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/alarm{ - dir = 8; - pixel_x = 24 - }, -/obj/item/handcuffs{ - pixel_x = 2; - pixel_y = 16 - }, -/obj/item/book/manual/marine_law{ - pixel_x = 8 - }, -/obj/item/reagent_container/food/drinks/bottle/vodka{ - pixel_x = -5; - pixel_y = 1 - }, /turf/open/floor/shiva{ icon_state = "redfull" }, /area/varadero/interior/security) +"hZE" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/gm/coast/north, +/area/varadero/exterior/lz1_near) "iad" = ( /turf/open/floor/shiva{ dir = 1; icon_state = "green" }, /area/varadero/interior/hall_SE) +"iah" = ( +/obj/item/tool/pickaxe, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/interior/comms1) "iat" = ( /obj/structure/barricade/wooden{ dir = 1 @@ -8973,29 +12293,53 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) -"iaC" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 +"iax" = ( +/turf/open/gm/coast/south, +/area/varadero/interior/oob) +"iaH" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice2"; + pixel_x = 16; + pixel_y = 24 }, -/obj/structure/barricade/handrail{ - desc = "Your platforms look pretty heavy king, let me support them for you."; - dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"iaM" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/gm/coast/east, -/area/varadero/interior/oob) +/area/varadero/interior_protected/maintenance/south) "iaO" = ( /turf/closed/wall/r_wall/elevator{ dir = 9 }, /area/varadero/interior/hall_N) +"iaT" = ( +/obj/structure/largecrate/random/barrel, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) +"ibi" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/east) "ibo" = ( /obj/structure/prop/broken_arcade, /turf/open/floor{ icon_state = "wood" }, /area/varadero/interior/library) +"ibs" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "iby" = ( /obj/structure/machinery/light{ dir = 4 @@ -9016,6 +12360,38 @@ icon_state = "blue" }, /area/varadero/interior/technical_storage) +"ibV" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior/hall_SE) +"icb" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/item/device/camera{ + pixel_x = -2; + pixel_y = 9 + }, +/obj/item/newspaper{ + layer = 2.99; + pixel_x = 7; + pixel_y = 4 + }, +/obj/structure/surface/table, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) +"icl" = ( +/obj/structure/prop/rock/brown, +/turf/closed/wall/rock/brown, +/area/varadero/interior/oob) +"icm" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ + icon_state = "sparsegrass_2" + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "icn" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -9038,6 +12414,19 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) +"icJ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/shard{ + icon_state = "large"; + pixel_x = -5; + pixel_y = -6 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "icM" = ( /obj/structure/bed/chair{ dir = 8 @@ -9047,20 +12436,6 @@ icon_state = "green" }, /area/varadero/interior/hall_NW) -"icX" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/security{ - dir = 1; - name = "\improper Underground Security Interrogation Observation"; - req_access_txt = "100" - }, -/turf/open/floor/plating, -/area/varadero/interior/security) -"icZ" = ( -/turf/closed/wall/r_wall/elevator/arrivals{ - icon_state = "wall_dorm" - }, -/area/varadero/interior/hall_N) "idn" = ( /obj/structure/window/reinforced{ dir = 4; @@ -9079,52 +12454,16 @@ icon_state = "multi_tiles" }, /area/varadero/interior_protected/vessel) +"idr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/wooden, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "idw" = ( /turf/open/floor/wood, /area/varadero/interior/security) -"idF" = ( -/obj/item/reagent_container/glass/bucket{ - pixel_x = -11; - pixel_y = -4 - }, -/turf/open/gm/coast/beachcorner2/south_west, -/area/varadero/exterior/pontoon_beach) -"idI" = ( -/obj/structure/prop/invuln/minecart_tracks{ - dir = 8 - }, -/obj/structure/prop/invuln/minecart_tracks{ - dir = 5 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/platform_decoration/kutjevo, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/oob) -"ieh" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" - }, -/turf/open/floor/wood, -/area/varadero/exterior/lz1_near) -"ies" = ( -/obj/effect/spawner/random/tool, -/turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) "iet" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, +/obj/structure/machinery/light/small, /turf/open/floor{ icon_state = "wood" }, @@ -9136,9 +12475,6 @@ icon_state = "snow_mat" }, /area/varadero/interior/security) -"ifw" = ( -/turf/open/floor/plating, -/area/varadero/interior/security) "ifx" = ( /obj/item/weapon/gun/smg/nailgun{ pixel_y = 3 @@ -9155,6 +12491,41 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/comms4) +"ifO" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/prop/ice_colony/dense/planter_box/hydro{ + desc = "A high-power hydroelectric generator."; + name = "hydroelectric generator" + }, +/turf/open/gm/coast/beachcorner2/north_west, +/area/varadero/exterior/farocean) +"ifZ" = ( +/obj/structure/desertdam/decals/road_edge{ + pixel_x = 2 + }, +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/floor/wood, +/area/varadero/interior/court) +"igB" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"igQ" = ( +/obj/structure/machinery/power/port_gen/pacman, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) "igU" = ( /obj/item/roller{ pixel_x = 2; @@ -9178,56 +12549,87 @@ icon_state = "greenfull" }, /area/varadero/interior/hall_SE) -"ihF" = ( +"iht" = ( +/obj/structure/surface/table, +/obj/item/paper/janitor{ + pixel_y = 8 + }, +/obj/item/storage/belt/utility, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/electrical) +"ihC" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/monsoon) +"ihX" = ( /obj/structure/platform/kutjevo/smooth{ - dir = 1 + dir = 8; + climb_delay = 1; + layer = 2.99 }, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 }, -/area/varadero/interior/comms1) -"ihG" = ( -/obj/structure/largecrate/random/case, /turf/open/gm/dirt, -/area/varadero/interior/maintenance/north) -"iiV" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - name = "\improper Underground Maintenance"; - req_access_txt = "100"; - req_one_access = null +/area/varadero/exterior/eastbeach) +"ihY" = ( +/turf/closed/wall/rock/brown, +/area/varadero/exterior/eastbeach) +"iig" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = -8 }, -/turf/open/floor/plating, -/area/varadero/interior/hall_N) +/obj/structure/machinery/floodlight/landing{ + desc = "A powerful light stationed near construction zones to provide better visibility."; + name = "Construction Light" + }, +/obj/effect/decal/warning_stripes, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) +"iiX" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/almayer/secure{ + dir = 2; + icon_state = "door_locked"; + locked = 1; + name = "Underground Secure Technical Storage"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/technical_storage) "ijo" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, /turf/open/shuttle{ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) -"ijy" = ( -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) -"ijR" = ( -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/coast/east, -/area/varadero/interior/oob) +"ijO" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken3" + }, +/area/varadero/interior/beach_bar) +"ijZ" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/swcaves) "iks" = ( /obj/item/tool/shovel/spade, /turf/open/gm/dirt, /area/varadero/interior/maintenance/north) -"ilr" = ( -/obj/structure/bed{ - can_buckle = 0; - desc = "A lightweight support lattice."; - icon = 'icons/obj/structures/structures.dmi'; - icon_state = "latticefull"; - layer = 2.1; - name = "lattice" - }, -/turf/open/gm/river, -/area/varadero/interior_protected/vessel) "ilQ" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -9239,6 +12641,17 @@ icon_state = "floor3" }, /area/varadero/interior/administration) +"ilZ" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/almayer/security/glass{ + dir = 1; + name = "\improper Underground Security Armory"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/security) "imd" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/segment, @@ -9246,20 +12659,26 @@ icon_state = "yellow" }, /area/varadero/interior/hall_N) +"imk" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/farocean) +"imu" = ( +/obj/item/stack/tile/plasteel{ + layer = 2.89; + pixel_x = 17; + pixel_y = 16 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "imz" = ( /turf/closed/wall/r_wall/elevator/gears, /area/varadero/interior/records) -"imF" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Underground Men's Restroom"; - req_access_txt = "100"; - req_one_access = null - }, -/turf/open/floor/plating, -/area/varadero/interior/toilets) "imZ" = ( /obj/structure/surface/table, /obj/effect/landmark/objective_landmark/close, @@ -9276,6 +12695,29 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) +"inN" = ( +/obj/structure/barricade/handrail/wire{ + dir = 8 + }, +/obj/structure/barricade/handrail/wire{ + dir = 4 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/pontoon_beach) +"inV" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/item/shard{ + icon_state = "medium" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/east) "ioc" = ( /obj/structure/surface/table/woodentable, /obj/item/evidencebag, @@ -9290,6 +12732,23 @@ /obj/structure/closet/medical_wall, /turf/closed/wall, /area/varadero/interior/medical) +"ior" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -16; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/obj/structure/barricade/wooden, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "ioA" = ( /obj/structure/machinery/vending/cigarette/colony, /turf/open/floor/shiva{ @@ -9297,29 +12756,40 @@ icon_state = "green" }, /area/varadero/interior/hall_SE) -"ioM" = ( -/obj/structure/stairs/perspective{ - color = "#6b675e"; - dir = 1; - icon_state = "p_stair_full" - }, +"ipi" = ( /obj/structure/platform/kutjevo/smooth{ - dir = 4 + climb_delay = 1; + layer = 2.99 }, -/turf/open/floor/strata{ - color = "#5e5d5d"; - icon_state = "multi_tiles" +/obj/structure/sign/double/barsign{ + name = "The Salty Cutlass"; + desc = "Come drown your troubles away! Mind the sway." }, -/area/varadero/interior_protected/vessel) -"ipv" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/turf/closed/wall/wood, +/area/varadero/interior/beach_bar) +"ipl" = ( +/obj/structure/prop/ice_colony/dense/planter_box/plated{ + dir = 9; + icon_state = "planter_box_soil" }, -/obj/structure/machinery/sleep_console, -/turf/open/floor/shiva{ - icon_state = "floor3" +/obj/structure/flora/bush/ausbushes/pointybush{ + icon_state = "pointybush_3"; + pixel_y = 11 }, -/area/varadero/interior/medical) +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/hall_SE) +"ipC" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ + icon_state = "sparsegrass_3" + }, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "ipZ" = ( /obj/structure/platform_decoration/kutjevo{ dir = 8 @@ -9327,20 +12797,6 @@ /obj/structure/machinery/power/port_gen/pacman, /turf/open/gm/dirt, /area/varadero/exterior/lz1_near) -"iqq" = ( -/obj/structure/plasticflaps/mining, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/prop/invuln/minecart_tracks{ - dir = 8 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/oob) "iqv" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/tool, @@ -9360,7 +12816,10 @@ /area/varadero/interior_protected/vessel) "iqW" = ( /obj/structure/surface/rack, -/obj/item/ammo_magazine/shotgun/incendiary, +/obj/item/paper{ + name = "Incendiary Ammunition Order"; + desc = "An order manifest for incendiary ammo that has yet to be filled out." + }, /turf/open/floor/shiva{ icon_state = "red" }, @@ -9369,15 +12828,6 @@ /obj/item/frame/apc, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/maintenance) -"irc" = ( -/obj/item/ammo_casing{ - dir = 2; - icon_state = "casing_5" - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/bunks) "irj" = ( /turf/open/floor/shiva{ dir = 8; @@ -9419,11 +12869,35 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/varadero/interior/administration) +"itL" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/farocean) "itP" = ( /turf/closed/wall/r_wall/elevator{ dir = 6 }, /area/varadero/interior/hall_N) +"itQ" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/coast/west, +/area/varadero/exterior/lz1_near) "itT" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/gm/dirt, @@ -9438,12 +12912,6 @@ icon_state = "floor3" }, /area/varadero/interior/cargo) -"iue" = ( -/obj/structure/machinery/power/port_gen/pacman, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/exterior/lz1_near) "ivg" = ( /obj/structure/closet/secure_closet/freezer/fridge, /obj/effect/landmark/objective_landmark/close, @@ -9451,18 +12919,10 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) -"ivp" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ - dir = 1; - name = "\improper Theta-V Breakroom"; - req_access_txt = null; - req_one_access = null - }, -/turf/open/floor/plating, -/area/varadero/interior/research) +"ivo" = ( +/obj/structure/airlock_assembly, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "ivD" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -9500,13 +12960,14 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) -"iwd" = ( -/obj/effect/landmark/corpsespawner/colonist/random, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "multi_tiles" - }, -/area/varadero/interior/electrical) +"iwf" = ( +/mob/living/simple_animal/mouse, +/turf/open/floor/wood, +/area/varadero/interior/hall_SE) +"iwg" = ( +/obj/effect/landmark/ert_spawns/groundside_xeno, +/turf/open/floor/wood, +/area/varadero/interior/court) "iwo" = ( /obj/structure/filingcabinet{ density = 0; @@ -9538,25 +12999,17 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/wood, /area/varadero/interior/bunks) -"iwy" = ( -/obj/structure/bedsheetbin, -/obj/item/storage/box/attachments{ - pixel_x = -2; - pixel_y = 8 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/bunks) -"iwQ" = ( -/obj/structure/barricade/wooden{ - dir = 4 - }, -/obj/structure/machinery/light/small, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +"iwT" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/east) +"iwV" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" }, -/area/varadero/interior/maintenance/north) +/area/varadero/interior_protected/vessel) "ixd" = ( /obj/structure/machinery/computer/communications{ dir = 4 @@ -9578,6 +13031,25 @@ icon_state = "red" }, /area/varadero/interior/security) +"ixl" = ( +/obj/item/tool/pickaxe, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves) +"ixq" = ( +/obj/item/device/flashlight, +/turf/open/gm/dirt{ + icon_state = "desert3" + }, +/area/varadero/exterior/lz1_near) +"ixr" = ( +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/hall_SE) +"ixw" = ( +/obj/structure/bed/chair/comfy/beige{ + dir = 4 + }, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) "ixQ" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, @@ -9597,26 +13069,50 @@ }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/vessel) -"izi" = ( +"iyv" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/obj/item/stack/tile/plasteel{ + pixel_x = 8; + pixel_y = 6 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/east) +"izi" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/shuttle{ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) -"izp" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ +"izl" = ( +/obj/structure/platform/kutjevo/smooth{ dir = 1; - name = "\improper Underground Technical Storage"; - req_access_txt = "100" + climb_delay = 1; + layer = 2.99 }, -/turf/open/floor/plating, -/area/varadero/interior/technical_storage) +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/comms4) "izs" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ dir = 1 }, /area/varadero/interior/research) +"izy" = ( +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/floor/wood, +/area/varadero/interior/security) "izB" = ( /obj/item/stool{ pixel_x = 7; @@ -9636,21 +13132,6 @@ icon_state = "blue" }, /area/varadero/interior/maintenance) -"izU" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/prop/invuln/minecart_tracks{ - dir = 1 - }, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/oob) "iAa" = ( /obj/structure/machinery/firealarm{ dir = 1; @@ -9660,6 +13141,13 @@ icon_state = "white" }, /area/varadero/interior/toilets) +"iAc" = ( +/obj/effect/decal/strata_decals/grime/grime4{ + dir = 4 + }, +/obj/item/clothing/suit/armor/vest, +/turf/open/floor/carpet, +/area/varadero/interior/bunks) "iAp" = ( /obj/effect/decal/strata_decals/grime/grime3{ dir = 8 @@ -9675,6 +13163,17 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) +"iAE" = ( +/obj/structure/blocker/invisible_wall/water, +/turf/open/gm/coast/beachcorner/south_west, +/area/varadero/exterior/farocean) +"iAP" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor/plating/bare_catwalk, +/area/varadero/exterior/pontoon_beach) "iAX" = ( /turf/open/floor/carpet, /area/varadero/interior/administration) @@ -9693,31 +13192,36 @@ icon_state = "green" }, /area/varadero/interior/mess) -"iBH" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 - }, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" - }, -/area/varadero/interior/disposals) "iCy" = ( /turf/open/floor/shiva{ icon_state = "multi_tiles" }, /area/varadero/interior/research) -"iCH" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/turf/open/gm/river, -/area/varadero/interior/oob) +"iCB" = ( +/obj/effect/landmark/queen_spawn, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/swcaves) "iDn" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/maintenance/south) +"iDE" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz2_near) +"iDM" = ( +/obj/structure/machinery/bot/medbot{ + name = "FOXYBOT 3000"; + desc = "A little medical robot. He looks somewhat traumatized." + }, +/turf/open/floor/prison/chapel_carpet, +/area/varadero/interior/chapel) "iDS" = ( /obj/structure/closet/secure_closet/security, /obj/effect/landmark/objective_landmark/far, @@ -9726,11 +13230,38 @@ icon_state = "redfull" }, /area/varadero/interior/hall_SE) -"iEx" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +"iEe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/cm_vending/sorted/boozeomat, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) +"iFb" = ( +/turf/closed/wall/r_wall, +/area/varadero/interior_protected/caves/central) +"iFc" = ( +/obj/structure/largecrate/random/mini/chest{ + pixel_x = -7; + pixel_y = -11; + desc = "A chest... filled with the wildest riches!" + }, +/turf/open/gm/dirt{ + icon_state = "desert_dug" + }, +/area/varadero/exterior/lz2_near) +"iFm" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/guestpass{ + dir = 1 + }, +/obj/item/ammo_magazine/shotgun/buckshot{ + pixel_x = 17; + pixel_y = -4 }, +/turf/open/floor/wood, /area/varadero/interior/maintenance/north) "iFy" = ( /obj/structure/surface/table/reinforced/prison, @@ -9763,6 +13294,10 @@ icon_state = "blue" }, /area/varadero/interior/technical_storage) +"iFQ" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves/digsite) "iFZ" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -9771,47 +13306,48 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) -"iGu" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"iGm" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken6" }, -/obj/structure/machinery/recharge_station, -/turf/open/floor/shiva{ +/area/varadero/interior/court) +"iGM" = ( +/obj/effect/decal/cleanable/cobweb{ dir = 1 }, -/area/varadero/interior/morgue) -"iGW" = ( -/obj/item/reagent_container/glass/bucket{ - pixel_y = -3 +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/obj/item/tool/hatchet{ - pixel_x = 3; - pixel_y = 5 +/area/varadero/interior/maintenance/security) +"iGS" = ( +/obj/effect/landmark/corpsespawner/engineer, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "multi_tiles" }, -/turf/open/gm/coast/beachcorner/south_west, -/area/varadero/exterior/pontoon_beach) +/area/varadero/interior/electrical) "iHh" = ( /obj/item/weapon/gun/shotgun/pump, /turf/open/floor/carpet, /area/varadero/interior/security) -"iHm" = ( -/obj/structure/machinery/power/apc{ - pixel_y = -24; - start_charge = 0 - }, -/obj/effect/landmark/objective_landmark/far, -/turf/open/floor{ - icon_state = "white" - }, -/area/varadero/interior/toilets) -"iIr" = ( -/obj/structure/barricade/handrail/wire{ - layer = 3.1 +"iHE" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior_protected/caves/central) +"iHN" = ( +/turf/open/gm/dirt{ + icon_state = "desert1" }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/area/varadero/exterior/eastocean) +"iIc" = ( +/obj/item/device/flashlight/slime{ + mouse_opacity = 0; + invisibility = 1; + indestructible = 1; + alpha = 0 }, -/area/varadero/interior/comms2) +/turf/open/gm/coast/beachcorner2/north_west, +/area/varadero/exterior/pool) "iIt" = ( /obj/structure/filingcabinet/chestdrawer, /turf/open/floor/wood, @@ -9850,6 +13386,26 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_NW) +"iIY" = ( +/turf/open/gm/coast/east, +/area/varadero/exterior/comms4) +"iJa" = ( +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) +"iJk" = ( +/obj/structure/pipes/standard/manifold/hidden/green, +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "green" + }, +/area/varadero/interior/mess) "iJD" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva, @@ -9866,36 +13422,12 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"iKh" = ( -/obj/structure/machinery/light/small, -/obj/structure/closet/secure_closet/personal/patient, -/obj/structure/barricade/handrail/wire{ - dir = 8; - layer = 2.991 - }, -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/medical) -"iKy" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, +"iLc" = ( +/obj/structure/surface/table/woodentable, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior_protected/maintenance/south) -"iLa" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - name = "\improper Underground Maintenance"; - req_access_txt = "100"; - req_one_access = null - }, -/turf/open/floor/plating, -/area/varadero/interior/medical) +/area/varadero/interior/maintenance/security) "iLd" = ( /obj/structure/window/reinforced{ dir = 4; @@ -9936,39 +13468,15 @@ /obj/structure/window/framed/colony, /turf/open/floor/plating, /area/varadero/interior/mess) -"iLL" = ( -/turf/open/gm/coast/beachcorner2/north_west, -/area/varadero/exterior/eastbeach) -"iLN" = ( -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) -"iLR" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/machinery/power/apc{ - dir = 1 - }, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" - }, -/area/varadero/interior/comms1) -"iMi" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/fancy/cigarettes/arcturian_ace{ - pixel_x = -5; - pixel_y = 5 +"iMa" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, +/obj/item/prop/magazine/boots, /turf/open/floor/shiva{ - dir = 4; - icon_state = "red" + icon_state = "multi_tiles" }, -/area/varadero/interior/administration) +/area/varadero/interior/cargo) "iMp" = ( /obj/structure/machinery/light{ dir = 1 @@ -9978,13 +13486,6 @@ icon_state = "blue" }, /area/varadero/interior/hall_SE) -"iMq" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "\improper Underground Security Interrogation"; - req_access_txt = "100" - }, -/turf/open/floor/plating, -/area/varadero/interior/security) "iMM" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/shiva{ @@ -10020,25 +13521,29 @@ icon_state = "floor3" }, /area/varadero/interior/mess) -"iOE" = ( -/turf/open/gm/dirt{ - icon_state = "desert1" +"iNU" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/item/device/flashlight, +/turf/open/floor/shiva{ + icon_state = "redfull" }, -/area/varadero/interior/comms3) +/area/varadero/interior/medical) +"iOi" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"iOv" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves) "iOQ" = ( /obj/structure/bed/chair/office/dark, /obj/structure/disposalpipe/segment, /turf/open/floor/carpet, /area/varadero/interior/records) -"iPb" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/light/small, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance) "iPw" = ( /obj/structure/machinery/alarm{ dir = 4; @@ -10051,12 +13556,30 @@ }, /turf/open/floor/wood, /area/varadero/interior/administration) +"iPH" = ( +/obj/effect/spawner/random/tool, +/turf/open/floor/shiva{ + icon_state = "yellow" + }, +/area/varadero/interior/comms3) "iPI" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ icon_state = "red" }, /area/varadero/interior/security) +"iQl" = ( +/obj/item/storage/firstaid, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/varadero/interior/morgue) +"iQr" = ( +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz2_near) "iQs" = ( /obj/structure/barricade/handrail/wire{ dir = 4 @@ -10079,33 +13602,30 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) -"iQN" = ( -/obj/structure/filingcabinet{ - density = 0; - icon_state = "chestdrawer"; - pixel_x = 8; - pixel_y = 11 - }, -/obj/structure/filingcabinet{ - density = 0; - icon_state = "chestdrawer"; - pixel_x = -8; - pixel_y = 11 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance/security) "iQS" = ( /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/comms2) -"iSc" = ( -/turf/closed/wall/r_wall/elevator/arrivals{ - icon_state = "wall_button_arrivals" +"iRw" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 }, -/area/varadero/interior/records) +/obj/effect/landmark/corpsespawner/engineer, +/turf/open/floor/shiva, +/area/varadero/interior/technical_storage) +"iRR" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/hall_NW) +"iRZ" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance) "iSi" = ( /obj/structure/platform_decoration/kutjevo{ dir = 1 @@ -10157,6 +13677,10 @@ pixel_x = 10; pixel_y = 2 }, +/obj/structure/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, /turf/open/floor/shiva{ dir = 1; icon_state = "red" @@ -10180,16 +13704,6 @@ icon_state = "greenfull" }, /area/varadero/interior/hall_SE) -"iTO" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "\improper Underground Security"; - req_access_txt = "100" - }, -/turf/open/floor/plating, -/area/varadero/interior/security) "iTP" = ( /obj/structure/filingcabinet{ density = 0; @@ -10210,10 +13724,6 @@ }, /turf/open/floor/wood, /area/varadero/interior/bunks) -"iUj" = ( -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/river, -/area/varadero/interior/oob) "iUx" = ( /obj/structure/machinery/constructable_frame, /obj/structure/machinery/light{ @@ -10224,26 +13734,42 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) -"iUA" = ( -/obj/item/toy/beach_ball, -/turf/open/gm/river, -/area/varadero/interior/maintenance) -"iUO" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/hypospray/tricordrazine{ - pixel_x = -14; - pixel_y = 2 +"iUH" = ( +/obj/structure/machinery/floodlight/landing{ + desc = "A powerful light stationed near construction zones to provide better visibility."; + name = "Construction Light" }, -/obj/item/weapon/gun/energy/rxfm5_eva, -/turf/open/floor/shiva{ - icon_state = "blue" +/obj/effect/decal/warning_stripes, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/technical_storage) +/area/varadero/exterior/eastbeach) +"iUZ" = ( +/obj/structure/ore_box, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) "iVt" = ( /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/electrical) +"iVD" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/comms4) "iWf" = ( /obj/structure/bed/chair/office/light{ dir = 1 @@ -10252,6 +13778,19 @@ icon_state = "wredfull" }, /area/varadero/interior/medical) +"iWj" = ( +/obj/structure/blocker/invisible_wall/water, +/turf/open/gm/coast/south, +/area/varadero/exterior/farocean) +"iWE" = ( +/obj/item/ammo_casing/shell{ + icon_state = "cartridge_10" + }, +/obj/effect/landmark/corpsespawner/miner, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/caves) "iWK" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -10261,6 +13800,23 @@ icon_state = "floor3" }, /area/varadero/interior/administration) +"iWX" = ( +/obj/structure/machinery/floodlight{ + name = "Floodlight"; + unacidable = 0; + wrenchable = 1 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) +"iXy" = ( +/obj/item/tool/warning_cone, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice4"; + pixel_x = -16; + pixel_y = 24 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "iXR" = ( /obj/structure/bed/chair/office/dark{ dir = 8; @@ -10302,6 +13858,39 @@ /obj/item/device/camera_film, /turf/open/floor/wood, /area/varadero/interior/security) +"iZj" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/comms4) +"iZx" = ( +/obj/structure/machinery/door_control/brbutton{ + id = "cargobay"; + name = "Cargo Bay Lock"; + pixel_y = 20 + }, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "yellow" + }, +/area/varadero/interior/cargo) "iZH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -10311,6 +13900,34 @@ icon_state = "red" }, /area/varadero/interior/medical) +"iZP" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice2"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"iZT" = ( +/obj/structure/machinery/power/apc{ + dir = 8; + pixel_x = -24; + start_charge = 0 + }, +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/shiva{ + icon_state = "blue" + }, +/area/varadero/interior/maintenance) +"jab" = ( +/obj/structure/closet/secure_closet/scientist, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "purple" + }, +/area/varadero/interior/research) "jai" = ( /obj/structure/filingcabinet/security, /obj/effect/landmark/objective_landmark/far, @@ -10322,6 +13939,12 @@ "jaF" = ( /turf/open/gm/coast/east, /area/varadero/exterior/pontoon_beach) +"jaL" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/shiva{ + icon_state = "yellow" + }, +/area/varadero/interior/electrical) "jbh" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -10332,15 +13955,6 @@ icon_state = "blue" }, /area/varadero/interior/administration) -"jbj" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/effect/landmark/corpsespawner/doctor, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/medical) "jbR" = ( /obj/item/device/flashlight/lamp/tripod{ pixel_x = 7; @@ -10350,6 +13964,9 @@ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) +"jcr" = ( +/turf/closed/wall/rock/brown, +/area/varadero/interior_protected/caves/swcaves) "jcz" = ( /turf/open/floor/shiva{ dir = 4; @@ -10368,22 +13985,48 @@ icon_state = "purple" }, /area/varadero/interior/research) +"jcC" = ( +/obj/structure/surface/rack, +/obj/item/ammo_magazine/shotgun/buckshot, +/obj/item/ammo_magazine/shotgun/buckshot{ + pixel_x = 6; + pixel_y = -4 + }, +/turf/open/floor/shiva{ + icon_state = "red" + }, +/area/varadero/interior/security) "jcT" = ( /turf/closed/wall, /area/varadero/interior/maintenance) -"jcZ" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" +"jcY" = ( +/obj/structure/window/framed/colony/reinforced, +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/records) +/area/varadero/interior/maintenance/security) "jdm" = ( /obj/structure/flora/bush/ausbushes/var3/fullgrass, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/central) +"jdu" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/coast/beachcorner/south_east, +/area/varadero/exterior/pontoon_beach) +"jek" = ( +/turf/open/gm/coast/west, +/area/varadero/exterior/eastocean) "jeo" = ( /obj/item/tool/mop, /turf/open/floor/shiva{ @@ -10405,6 +14048,32 @@ /obj/structure/plasticflaps, /turf/open/floor/plating, /area/varadero/interior/cargo) +"jeT" = ( +/obj/item/weapon/harpoon/yautja{ + anchored = 1; + name = "Alien Harpoon"; + pixel_x = 6 + }, +/obj/structure/showcase{ + color = "#95948B"; + desc = "A grey statue dawned in ancient armor, it stares into your soul."; + dir = 1; + icon = 'icons/mob/humans/species/r_synthetic.dmi'; + icon_state = "Synthetic_Template"; + name = "Eternal guardian" + }, +/obj/item/clothing/suit/armor/yautja_flavor{ + anchored = 1 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "squareswood" + }, +/area/varadero/interior_protected/caves/digsite) +"jeW" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/security) "jfn" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = -12 @@ -10421,6 +14090,24 @@ icon_state = "wood-broken3" }, /area/varadero/interior/court) +"jfw" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) +"jfA" = ( +/obj/item/device/motiondetector/hacked, +/turf/open/floor/carpet, +/area/varadero/interior/maintenance/north) "jfD" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/fourway/hidden/green, @@ -10449,20 +14136,15 @@ icon_state = "wredfull" }, /area/varadero/interior/medical) -"jhb" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/stack/medical/advanced/bruise_pack/upgraded{ - amount = 1; - pixel_x = -3; - pixel_y = 11 - }, -/obj/item/stack/medical/advanced/ointment/upgraded{ - amount = 2; - pixel_x = 4; - pixel_y = 1 +"jgV" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/north_research) +"jgY" = ( +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/floor/wood, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/records) "jhe" = ( /obj/structure/bed/chair, /obj/structure/machinery/alarm{ @@ -10473,6 +14155,19 @@ icon_state = "red" }, /area/varadero/interior/security) +"jhu" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) "jhv" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -10480,14 +14175,34 @@ icon_state = "snow_mat" }, /area/varadero/interior/security) +"jhK" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -1; + pixel_y = 9; + indestructible = 1; + unacidable = 1 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/farocean) "jhL" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/shiva{ icon_state = "blue" }, /area/varadero/interior/administration) -"jhW" = ( -/obj/structure/barricade/handrail/wire{ +"jhM" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 8 + }, +/turf/open/gm/dirt{ + icon_state = "desert3" + }, +/area/varadero/exterior/lz1_near) +"jhW" = ( +/obj/structure/barricade/handrail/wire{ dir = 8; layer = 2.991 }, @@ -10495,14 +14210,15 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) -"jiF" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Underground Staff Canteen"; - req_access_txt = "100" +"jif" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/turf/open/floor/plating, -/area/varadero/interior/mess) +/obj/item/device/flashlight, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/research) "jjg" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -10511,6 +14227,14 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) +"jjj" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "jjl" = ( /obj/structure/machinery/power/apc{ dir = 1; @@ -10531,6 +14255,10 @@ }, /turf/open/floor/wood, /area/varadero/interior/records) +"jju" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "jjE" = ( /obj/structure/disposalpipe/segment, /obj/structure/machinery/firealarm{ @@ -10543,6 +14271,17 @@ icon_state = "red" }, /area/varadero/interior/security) +"jjN" = ( +/turf/open/gm/dirt{ + icon_state = "desert2" + }, +/area/varadero/interior/maintenance/north) +"jjS" = ( +/turf/open/floor/shiva{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/varadero/interior/maintenance/north) "jjZ" = ( /obj/structure/prop/turbine, /obj/structure/prop/turbine_extras/border, @@ -10550,6 +14289,11 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) +"jks" = ( +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) "jlt" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/drinks/coffee{ @@ -10578,16 +14322,6 @@ }, /turf/open/floor/plating, /area/varadero/interior_protected/caves/digsite) -"jmB" = ( -/obj/structure/surface/table/reinforced/prison{ - dir = 1; - flipped = 1 - }, -/obj/structure/bed/chair{ - icon_state = "chair_alt" - }, -/turf/open/floor/carpet, -/area/varadero/interior/hall_SE) "jnq" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -10598,17 +14332,36 @@ icon_state = "purple" }, /area/varadero/interior/research) -"joh" = ( -/obj/structure/machinery/door_control{ - id = "undergroundhangarsouth"; - name = "Underground Hangar Lock"; - pixel_x = -24 +"jnA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" }, -/turf/open/floor/plating/icefloor{ +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "snow_mat" + }, +/area/varadero/interior/medical) +"joe" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ + icon_state = "sparsegrass_2" + }, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"joN" = ( +/obj/item/trash/candle, +/turf/open/floor/prison/chapel_carpet{ dir = 1; - icon_state = "warnplate" + icon_state = "doubleside" }, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/chapel) "joO" = ( /obj/structure/machinery/power/port_gen/pacman, /obj/structure/cable/heavyduty{ @@ -10616,6 +14369,10 @@ }, /turf/open/floor/plating, /area/varadero/interior_protected/caves/digsite) +"joV" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/security) "jpm" = ( /obj/structure/machinery/door/airlock/almayer/maint{ name = "\improper Underground Maintenance"; @@ -10634,6 +14391,41 @@ "jpD" = ( /turf/closed/wall/r_wall, /area/varadero/interior_protected/caves) +"jpM" = ( +/obj/effect/decal/warning_stripes/asteroid{ + dir = 1; + icon_state = "warning_s" + }, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/hall_SE) +"jpZ" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/comms4) +"jqd" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/landinglight/ds1/spoke{ + pixel_y = -5; + pixel_x = 13 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "jqu" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva, @@ -10642,9 +14434,56 @@ /obj/structure/prop/rock/brown, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/caves/east) -"jrK" = ( -/turf/open/gm/river, +"jqJ" = ( +/obj/structure/disposalpipe/segment, +/obj/item/key/cargo_train, +/turf/open/floor/shiva{ + icon_state = "yellowcorners" + }, +/area/varadero/interior/cargo) +"jqK" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/closet/secure_closet/surgical{ + pixel_x = -30 + }, +/obj/item/tool/surgery/scalpel/manager, +/turf/open/floor/shiva{ + icon_state = "redfull" + }, +/area/varadero/interior/medical) +"jrq" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/plating, +/area/varadero/interior/maintenance/north) +"jrr" = ( +/obj/structure/prop/invuln/overhead_pipe, +/turf/open/gm/dirt, /area/varadero/exterior/eastbeach) +"jrv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/east) +"jsf" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/security) "jsh" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/green{ @@ -10654,6 +14493,16 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_N) +"jsx" = ( +/obj/item/prop/almayer/comp_open, +/obj/structure/surface/table, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"jsG" = ( +/obj/structure/surface/rack, +/obj/item/device/flashlight, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "jsO" = ( /obj/structure/machinery/light{ dir = 4 @@ -10672,10 +14521,19 @@ icon_state = "asteroidplating" }, /area/varadero/interior/comms1) -"jtw" = ( -/obj/effect/overlay/palmtree_r, -/turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) +"jtx" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/flora/bush/ausbushes/var3/stalkybush{ + pixel_y = 9 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior_protected/caves) "jty" = ( /obj/effect/landmark/hunter_primary, /turf/open/floor/shiva{ @@ -10683,6 +14541,12 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_N) +"jtH" = ( +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/varadero/exterior/lz2_near) "jtI" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/donut_box{ @@ -10715,12 +14579,6 @@ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) -"juC" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 8 - }, -/turf/open/gm/river, -/area/varadero/interior/oob) "juL" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/prop/invuln/lattice_prop{ @@ -10733,26 +14591,48 @@ icon_state = "green" }, /area/varadero/interior/mess) -"juT" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) "juW" = ( /turf/closed/wall/r_wall, /area/varadero/interior/comms3) +"jvc" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/implanter{ + pixel_x = 10 + }, +/obj/item/ashtray/bronze{ + icon_state = "ashtray_half_br" + }, +/obj/effect/landmark/objective_landmark/medium, +/obj/item/weapon/gun/lever_action/r4t, +/obj/item/ammo_magazine/handful/lever_action, +/turf/open/floor/carpet, +/area/varadero/interior/research) "jvh" = ( /turf/open/floor/shiva{ icon_state = "multi_tiles" }, /area/varadero/interior/records) +"jvF" = ( +/obj/item/ammo_magazine/revolver/cmb, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/research) "jwf" = ( /obj/structure/platform_decoration/kutjevo, /obj/item/tool/warning_cone, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) +"jwy" = ( +/obj/item/weapon/gun/revolver/cmb, +/turf/open/floor/shiva{ + icon_state = "purple" + }, +/area/varadero/interior/research) +"jwX" = ( +/obj/structure/largecrate/random, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "jxe" = ( /obj/structure/machinery/firealarm{ dir = 8; @@ -10794,30 +14674,42 @@ icon_state = "snow_mat" }, /area/varadero/interior/maintenance) -"jzQ" = ( -/obj/structure/surface/table, -/obj/item/storage/wallet/random{ - pixel_y = 3 +"jzB" = ( +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 }, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/comms2) +/area/varadero/exterior/lz2_near) +"jzL" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/item/tool/warning_cone, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/pontoon_beach) "jzZ" = ( /turf/open/floor/carpet, /area/varadero/interior/library) -"jAw" = ( -/obj/structure/prop/ice_colony/dense/planter_box/hydro{ - pixel_x = 12; - pixel_y = 11 +"jAx" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = -8 }, -/obj/structure/flora/bush/desert{ - icon_state = "tree_2"; - pixel_x = 10; - pixel_y = 20 +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/river, +/area/varadero/interior/maintenance) +"jAI" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves) "jBl" = ( /obj/structure/machinery/light{ @@ -10850,24 +14742,56 @@ }, /turf/open/floor/wood, /area/varadero/interior/security) -"jBO" = ( +"jCr" = ( +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/mess) +"jCs" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/north_research) +"jCA" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 1; + name = "\improper Underground Technical Storage"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/technical_storage) +"jCE" = ( +/obj/structure/machinery/door/airlock/almayer/medical{ + dir = 1; + name = "Underground Medical Laboratory Operating Theatre"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "snow_mat" + }, +/area/varadero/interior/medical) +"jCN" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice2"; - pixel_x = 16; - pixel_y = 24 +/obj/structure/machinery/storm_siren{ + pixel_y = 5 }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/turf/open/floor{ + icon_state = "white" }, -/area/varadero/interior/maintenance/research) -"jCr" = ( -/turf/open/floor/shiva{ - icon_state = "floor3" +/area/varadero/interior/toilets) +"jDe" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" }, -/area/varadero/interior/mess) +/area/varadero/exterior/comms4) "jDO" = ( /obj/structure/prop/structure_lattice{ density = 0; @@ -10893,6 +14817,25 @@ icon_state = "greenfull" }, /area/varadero/interior/hall_SE) +"jEv" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 + }, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"jEG" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/coast/south, +/area/varadero/exterior/pontoon_beach) "jEZ" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/tool, @@ -10900,6 +14843,22 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) +"jFt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/chair/wood/normal{ + dir = 8 + }, +/obj/structure/barricade/wooden{ + dir = 1 + }, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) +"jFL" = ( +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/monsoon) "jGk" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -10909,8 +14868,19 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + icon_state = "redfull" + }, /area/varadero/interior/medical) +"jGm" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/research) "jGz" = ( /obj/structure/machinery/power/apc{ dir = 1; @@ -10921,6 +14891,12 @@ icon_state = "white" }, /area/varadero/interior/toilets) +"jGA" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/research) "jGT" = ( /obj/structure/prop/invuln/minecart_tracks, /obj/structure/platform_decoration/kutjevo{ @@ -10962,24 +14938,73 @@ }, /turf/open/floor/wood, /area/varadero/interior/administration) -"jJT" = ( -/obj/structure/bed/chair, -/turf/open/floor{ +"jIo" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/clothing/gloves/botanic_leather, +/obj/item/clothing/mask/cigarette/weed{ + pixel_x = -11; + pixel_y = 16 + }, +/obj/item/clothing/mask/cigarette/weed{ + pixel_x = -9; + pixel_y = 13 + }, +/obj/structure/machinery/light, +/turf/open/floor/shiva{ + icon_state = "blue" + }, +/area/varadero/interior/technical_storage) +"jJf" = ( +/obj/effect/landmark/corpsespawner/colonist/burst, +/turf/open/gm/coast/beachcorner/north_west, +/area/varadero/interior/caves/east) +"jJn" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/coast/south, +/area/varadero/exterior/lz2_near) +"jJp" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/stock_parts/matter_bin/adv{ + pixel_x = -5; + pixel_y = 11 + }, +/obj/item/stack/sheet/plasteel{ + amount = 24 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "purplefull" + }, +/area/varadero/interior/research) +"jJC" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 + }, +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"jJX" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/almayer/security{ dir = 1; - icon_state = "asteroidfloor" + name = "\improper Underground Security Interrogation Observation"; + req_access_txt = "100" }, -/area/varadero/exterior/lz1_near) -"jKg" = ( -/obj/structure/machinery/light/small{ - dir = 8 +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/obj/structure/barricade/wooden{ - dir = 1 +/area/varadero/interior/security) +"jKs" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.1 }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, -/area/varadero/interior/maintenance/security) +/area/varadero/exterior/lz2_near) "jKz" = ( /obj/structure/machinery/holosign/surgery{ id = "otice" @@ -10992,18 +15017,62 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "snow_mat" + }, /area/varadero/interior/medical) -"jLr" = ( +"jKK" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, /turf/open/floor/plating, -/area/varadero/interior/chapel) +/area/varadero/interior/toilets) +"jKW" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"jLS" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 4 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) "jLU" = ( /obj/structure/reagent_dispensers/fueltank/gas, /turf/open/floor/plating, /area/varadero/interior_protected/caves/digsite) +"jMq" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.01 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) "jMr" = ( /turf/open/floor/shiva{ dir = 6; @@ -11017,21 +15086,16 @@ icon_state = "purple" }, /area/varadero/interior/research) -"jMM" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ - name = "\improper Underground Medical Laboratory"; - req_access_txt = "100" - }, -/turf/open/floor/plating, -/area/varadero/interior/medical) -"jMU" = ( -/obj/structure/closet/secure_closet/security, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "red" +"jNn" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"jNE" = ( +/obj/structure/machinery/light/small{ + dir = 4 }, -/area/varadero/interior/security) +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) "jNS" = ( /obj/structure/bed/chair/wheelchair, /turf/open/floor/shiva{ @@ -11064,7 +15128,6 @@ }, /area/varadero/interior/hall_SE) "jOR" = ( -/obj/effect/spawner/random/supply_kit, /obj/structure/closet/secure_closet/security_empty, /turf/open/floor/shiva{ dir = 4; @@ -11109,12 +15172,18 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"jPW" = ( -/turf/open/floor/shiva{ - dir = 8; - icon_state = "redfull" +"jPM" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/area/varadero/interior/hall_N) +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/security) +"jQa" = ( +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/swcaves) "jQe" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -11124,6 +15193,18 @@ icon_state = "snow_mat" }, /area/varadero/interior/maintenance) +"jQg" = ( +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/machinery/door/airlock/almayer/security/glass{ + name = "\improper Underground Security"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + icon_state = "red" + }, +/area/varadero/interior/security) "jQB" = ( /obj/structure/surface/table/woodentable, /obj/item/clipboard, @@ -11146,11 +15227,8 @@ /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" }, -/obj/item/clothing/head/xenos{ - desc = "A hollowed out skull of a Lurker, this mass of chitin has been polished and cleaned to perfection"; - name = "hollow lurker head" - }, /obj/structure/window/reinforced, +/obj/item/clothing/head/fedora, /turf/open/floor/strata{ color = "#5e5d5d"; icon_state = "multi_tiles" @@ -11180,11 +15258,6 @@ icon_state = "asteroidplating" }, /area/varadero/interior/comms1) -"jRC" = ( -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/oob) "jSN" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/surface/table/woodentable{ @@ -11203,43 +15276,32 @@ "jSX" = ( /turf/open/gm/coast/beachcorner/north_west, /area/varadero/exterior/pontoon_beach) -"jTe" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"jTj" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ + icon_state = "sparsegrass_2" }, -/obj/structure/pipes/standard/manifold/hidden/green, +/turf/open/gm/dirt, +/area/varadero/exterior/eastocean) +"jTL" = ( +/turf/open/floor{ + icon_state = "bcircuit" + }, +/area/varadero/interior/maintenance/north) +"jTR" = ( +/turf/open/gm/coast/beachcorner/south_west, +/area/varadero/exterior/monsoon) +"jTY" = ( +/obj/structure/closet/secure_closet/personal/patient, /turf/open/floor/shiva{ icon_state = "multi_tiles" }, -/area/varadero/interior/electrical) -"jTn" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/maint{ - name = "\improper Underground Maintenance"; - req_access_txt = "100"; - req_one_access = null - }, -/turf/open/floor/plating, -/area/varadero/interior/electrical) +/area/varadero/interior/bunks) "jUt" = ( /obj/item/tool/weldingtool/experimental, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/hall_SE) -"jUA" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/stock_parts/matter_bin/adv{ - pixel_x = -5; - pixel_y = 11 - }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "purplefull" - }, -/area/varadero/interior/research) "jUM" = ( /obj/structure/urinal{ pixel_y = 32 @@ -11259,9 +15321,6 @@ dir = 1 }, /area/varadero/interior/hall_N) -"jVw" = ( -/turf/open/gm/coast/north, -/area/varadero/exterior/eastbeach) "jVK" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 @@ -11275,6 +15334,16 @@ /obj/effect/landmark/objective_landmark/far, /turf/open/floor/interior/plastic, /area/varadero/interior_protected/caves/digsite) +"jXn" = ( +/obj/structure/bed/chair{ + icon_state = "chair_alt"; + pixel_x = 3; + pixel_y = 17 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) "jXp" = ( /obj/structure/platform_decoration/kutjevo{ dir = 1 @@ -11311,11 +15380,6 @@ icon_state = "multi_tiles" }, /area/varadero/interior_protected/vessel) -"jYB" = ( -/obj/structure/platform_decoration/kutjevo, -/obj/structure/blocker/invisible_wall/water, -/turf/open/gm/river/ocean, -/area/varadero/interior/oob) "jYX" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/newspaper{ @@ -11332,6 +15396,10 @@ icon_state = "blue" }, /area/varadero/interior/technical_storage) +"jYZ" = ( +/obj/item/tool/pickaxe, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/swcaves) "jZw" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -11381,9 +15449,22 @@ icon_state = "snow_mat" }, /area/varadero/interior/medical) -"kaY" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/pill_bottle/inaprovaline/skillless{ +"kap" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) +"kaY" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/pill_bottle/inaprovaline/skillless{ pixel_x = 7; pixel_y = 9 }, @@ -11419,10 +15500,13 @@ icon_state = "multi_tiles" }, /area/varadero/interior/electrical) -"kcj" = ( -/obj/structure/platform_decoration/kutjevo, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) +"kce" = ( +/turf/open/floor/plating, +/area/varadero/interior_protected/caves/central) +"kcn" = ( +/obj/item/stack/sandbags_empty/full, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz1_near) "kcE" = ( /obj/structure/largecrate/random/mini/med{ pixel_x = -6; @@ -11432,22 +15516,38 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"kdf" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/interior/maintenance/north) +"kdq" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/prop/rock/brown, +/turf/open/gm/coast/west, +/area/varadero/exterior/farocean) "kdV" = ( /obj/structure/machinery/light{ dir = 4 }, /turf/open/floor/plating/icefloor{ - dir = 1; icon_state = "warnplate" }, -/area/varadero/exterior/lz1_near) -"keo" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Underground Sports Center"; - req_access_txt = "100" +/area/varadero/interior/maintenance/north) +"keb" = ( +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, -/turf/open/floor/plating, -/area/varadero/interior/court) +/area/varadero/exterior/eastbeach) "keE" = ( /obj/structure/pipes/vents/pump{ dir = 8 @@ -11463,12 +15563,20 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, /area/varadero/interior/cargo) "keY" = ( /obj/structure/flora/bush/ausbushes/var3/stalkybush, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/maintenance/security) +"kfc" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) "kfj" = ( /obj/structure/pipes/standard/simple/visible{ dir = 5 @@ -11477,6 +15585,9 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) +"kfG" = ( +/turf/closed/wall, +/area/varadero/interior/caves/east) "kfJ" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/med_data/laptop{ @@ -11487,6 +15598,22 @@ icon_state = "bluefull" }, /area/varadero/interior/administration) +"kgm" = ( +/obj/effect/vehicle_spawner/van/decrepit{ + layer = 3.1 + }, +/turf/open/gm/coast/north, +/area/varadero/exterior/pontoon_beach) +"kgp" = ( +/turf/closed/wall/rock/brown, +/area/varadero/exterior/lz2_near) +"kgw" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/plating, +/area/varadero/interior/records) +"kgA" = ( +/turf/open/gm/coast/beachcorner/south_west, +/area/varadero/exterior/eastbeach) "kgC" = ( /obj/structure/prop/static_tank{ pixel_y = 8 @@ -11506,71 +15633,112 @@ icon_state = "floor3" }, /area/varadero/interior/court) -"khI" = ( -/obj/structure/platform_decoration/kutjevo, -/turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) -"kiL" = ( +"khB" = ( /obj/structure/platform/kutjevo/smooth{ - dir = 1 + climb_delay = 1; + layer = 2.99 }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +/obj/structure/barricade/handrail/wire{ + dir = 8; + layer = 2.991 }, -/obj/structure/platform_decoration/kutjevo{ - dir = 1 +/obj/item/shard{ + icon_state = "large"; + pixel_x = -5; + pixel_y = -6 }, -/obj/structure/prop/invuln/minecart_tracks{ - dir = 6 +/turf/open/floor/shiva{ + dir = 4; + icon_state = "blue" }, -/obj/structure/blocker/invisible_wall, +/area/varadero/interior/maintenance) +"kif" = ( +/obj/structure/ladder, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/oob) -"kiU" = ( -/obj/structure/machinery/light, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "red" +/area/varadero/exterior/farocean) +"kin" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.1 }, -/area/varadero/interior/hall_N) -"kjt" = ( -/obj/structure/machinery/power/smes/buildable{ - name = "colony distribution SMES" +/obj/structure/machinery/floodlight/landing{ + desc = "A powerful light stationed near construction zones to provide better visibility."; + name = "Construction Light" }, +/obj/effect/decal/warning_stripes, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/exterior/lz1_near) -"kjA" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor{ - dir = 1; - name = "\improper Colony Offices"; - req_access_txt = "100" +/area/varadero/exterior/pontoon_beach) +"kiE" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/turf/open/floor/plating, -/area/varadero/interior/administration) +/area/varadero/interior/maintenance) +"kiG" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/clothing/under/CM_uniform, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/security) +"kjp" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice4"; + pixel_x = -16; + pixel_y = 24 + }, +/turf/open/gm/dirt{ + icon_state = "desert3" + }, +/area/varadero/exterior/eastbeach) +"kjr" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/item/stack/sheet/metal, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) "kjI" = ( /turf/open/shuttle{ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) -"kjJ" = ( -/obj/structure/machinery/light/small, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -14; - pixel_y = 13 - }, -/turf/open/floor/shiva{ - icon_state = "snow_mat" +"kjN" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/coast/beachcorner/south_east, +/area/varadero/interior/caves/east) +"kkc" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/east) +"kkt" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/maintenance) +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "kkv" = ( /obj/structure/prop/rock/brown, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) +"kkw" = ( +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) +"kkF" = ( +/turf/closed/wall/r_wall/unmeltable, +/area/varadero/exterior/farocean) "klf" = ( /obj/structure/barricade/wooden{ dir = 4 @@ -11579,6 +15747,22 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) +"kli" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior/caves/north_research) "klu" = ( /obj/structure/bed/chair{ icon_state = "chair_alt" @@ -11591,16 +15775,6 @@ icon_state = "blue" }, /area/varadero/interior/administration) -"klB" = ( -/obj/structure/stairs/perspective{ - color = "#b29082"; - icon_state = "p_stair_full" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) "klP" = ( /obj/structure/closet/secure_closet/personal/patient, /obj/item/storage/belt/medical{ @@ -11614,6 +15788,12 @@ "klT" = ( /turf/closed/wall/r_wall/unmeltable, /area/varadero/interior/maintenance/research) +"klY" = ( +/obj/item/cell/high, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) "kmb" = ( /obj/structure/machinery/light{ dir = 8 @@ -11628,6 +15808,12 @@ icon_state = "green" }, /area/varadero/interior/hall_SE) +"kmo" = ( +/obj/structure/machinery/power/port_gen/pacman, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) "kmu" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/toolbox, @@ -11635,21 +15821,45 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) -"kmy" = ( -/turf/open/gm/river, -/area/varadero/exterior/eastocean) -"knW" = ( -/obj/structure/surface/rack, -/obj/item/ammo_magazine/shotgun/slugs, -/obj/item/ammo_magazine/shotgun/slugs{ - pixel_x = 6; - pixel_y = -4 +"kmI" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/floor/shiva{ +/area/varadero/interior_protected/caves/central) +"kmW" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/coast/beachcorner/south_east, +/area/varadero/interior_protected/caves/central) +"knN" = ( +/obj/structure/prop/invuln/minecart_tracks{ + dir = 8 + }, +/obj/structure/prop/invuln/minecart_tracks{ + dir = 5 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ dir = 8; - icon_state = "red" + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/security) +/obj/structure/platform_decoration/kutjevo, +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/oob) +"knP" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/research) "kof" = ( /obj/structure/filingcabinet, /turf/open/floor/shiva{ @@ -11657,6 +15867,14 @@ icon_state = "red" }, /area/varadero/interior/security) +"koZ" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/pontoon_beach) "kpF" = ( /obj/structure/filingcabinet{ pixel_x = -8; @@ -11669,6 +15887,40 @@ /obj/effect/landmark/objective_landmark/science, /turf/open/floor/wood, /area/varadero/interior/research) +"kpN" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) +"kpS" = ( +/obj/item/clothing/head/helmet, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/medical) +"kqe" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance) +"kqs" = ( +/obj/structure/cargo_container/wy/mid, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) +"kqA" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) "kqE" = ( /obj/structure/surface/rack, /obj/effect/landmark/objective_landmark/far, @@ -11676,6 +15928,10 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) +"kqN" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/gm/dirt, +/area/varadero/interior/caves/east) "kqQ" = ( /obj/structure/xenoautopsy/tank/broken, /turf/open/shuttle{ @@ -11693,6 +15949,10 @@ /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/plating, /area/varadero/interior/administration) +"krM" = ( +/obj/item/paper, +/turf/open/floor/carpet, +/area/varadero/interior/chapel) "krP" = ( /obj/structure/disposalpipe/segment{ dir = 8 @@ -11718,43 +15978,37 @@ icon_state = "purplefull" }, /area/varadero/interior/research) -"ksX" = ( -/turf/closed/wall/r_wall, -/area/varadero/interior_protected/maintenance/south) -"ktt" = ( -/obj/effect/landmark/static_comms/net_two, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/exterior/comms4) -"ktE" = ( +"ksu" = ( /obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/river, -/area/varadero/interior_protected/caves) -"kua" = ( -/obj/structure/barricade/handrail/wire{ dir = 8; - layer = 3.5 + climb_delay = 1; + layer = 2.99 }, -/obj/structure/platform/kutjevo/smooth/stair_plate, /obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/prop/structure_lattice{ - density = 0; - desc = "If this is removed, you cannot escape."; - health = 300; - icon_state = "ladder10"; - name = "ladder" + dir = 4; + climb_delay = 1; + layer = 2.99 }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"ksX" = ( +/turf/closed/wall/r_wall, +/area/varadero/interior_protected/maintenance/south) +"ktN" = ( +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ - dir = 4; - icon_state = "blue" + icon_state = "multi_tiles" }, -/area/varadero/interior/maintenance) +/area/varadero/interior/comms3) +"kul" = ( +/obj/item/pizzabox/meat{ + pixel_x = -5; + pixel_y = 13 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "kus" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -11765,19 +16019,21 @@ icon_state = "greenfull" }, /area/varadero/interior/hall_SE) -"kux" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/bed/chair{ - icon_state = "chair_alt"; - pixel_x = -6; - pixel_y = 16 +"kuE" = ( +/obj/structure/machinery/power/apc{ + dir = 1; + pixel_y = 24; + start_charge = 0 }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) +"kuO" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/maintenance/security) +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) "kuX" = ( /turf/open/floor/shiva{ icon_state = "multi_tiles" @@ -11785,15 +16041,17 @@ /area/varadero/interior/hall_NW) "kvx" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/storage/box/emps{ - pixel_x = -4; - pixel_y = 1 - }, /turf/open/floor/shiva{ dir = 8; icon_state = "purplefull" }, /area/varadero/interior/research) +"kvz" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/east) "kvC" = ( /obj/structure/flora/bush/ausbushes/var3/sparsegrass{ icon_state = "sparsegrass_3" @@ -11828,55 +16086,42 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/comms4) -"kwa" = ( -/obj/structure/closet/secure_closet/freezer/meat, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "green" - }, -/area/varadero/interior/mess) "kwB" = ( /turf/open/floor/shiva{ dir = 4; icon_state = "green" }, /area/varadero/interior/hall_NW) -"kxg" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 10 - }, -/turf/open/floor/shiva{ - icon_state = "wredfull" - }, -/area/varadero/interior/medical) -"kxW" = ( -/obj/structure/window/reinforced{ +"kxe" = ( +/turf/open/gm/coast/beachcorner2/south_east, +/area/varadero/interior_protected/caves/central) +"kxU" = ( +/obj/structure/bed/chair{ dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 + icon_state = "chair_alt" }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/obj/item/bedsheet/purple{ - pixel_y = 13 +/area/varadero/interior/comms2) +"kyh" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ + name = "\improper Underground Medical Laboratory"; + req_access = null; + req_one_access = null }, -/obj/item/bedsheet/hos{ - layer = 3.1 +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/obj/item/clothing/gloves/marine/veteran/insulated, -/turf/open/floor/wood, -/area/varadero/interior/bunks) +/area/varadero/interior/medical) +"kyj" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/coast/beachcorner2/south_west, +/area/varadero/exterior/monsoon) +"kyp" = ( +/turf/open/gm/dirt, +/area/varadero/exterior/eastocean) "kyr" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -11889,6 +16134,14 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) +"kyz" = ( +/obj/structure/machinery/door/airlock/almayer/engineering/autoname, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) +"kyD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "kyG" = ( /turf/closed/wall, /area/varadero/interior/disposals) @@ -11918,6 +16171,12 @@ icon_state = "floor3" }, /area/varadero/interior/hall_SE) +"kyP" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "kzo" = ( /obj/structure/bed/chair{ dir = 8 @@ -11932,6 +16191,15 @@ /obj/item/tool/weldingtool, /turf/open/floor/interior/plastic, /area/varadero/interior_protected/caves/digsite) +"kzE" = ( +/obj/structure/surface/table/woodentable, +/obj/item/reagent_container/food/drinks/bottle/holywater, +/obj/item/tool/lighter/random{ + pixel_x = -9; + pixel_y = 15 + }, +/turf/open/floor/carpet, +/area/varadero/interior/chapel) "kzJ" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/green{ @@ -11951,11 +16219,24 @@ /obj/structure/machinery/vending/coffee, /turf/open/floor/wood, /area/varadero/interior/hall_SE) -"kAQ" = ( -/turf/open/floor/shiva{ - dir = 1 +"kAH" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ + icon_state = "sparsegrass_2" }, -/area/varadero/interior/morgue) +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"kAL" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/north_research) +"kAN" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) "kBo" = ( /obj/structure/surface/table/woodentable, /obj/structure/pipes/standard/simple/hidden/green{ @@ -11972,6 +16253,17 @@ }, /turf/open/floor/carpet, /area/varadero/interior/library) +"kBZ" = ( +/turf/closed/wall/rock/brown, +/area/varadero/interior/maintenance/security) +"kCb" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/stack/sheet/mineral/phoron/medium_stack, +/obj/item/stack/sheet/metal/med_small_stack, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) "kCy" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/camera{ @@ -11991,17 +16283,6 @@ dir = 1 }, /area/varadero/interior/electrical) -"kCF" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/implanter{ - pixel_x = 10 - }, -/obj/item/ashtray/bronze{ - icon_state = "ashtray_half_br" - }, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/wood, -/area/varadero/interior/research) "kCT" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/airlock/almayer/security/glass{ @@ -12009,7 +16290,9 @@ name = "\improper Underground Security Lobby"; req_access_txt = "100" }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, /area/varadero/interior/security) "kDd" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -12025,8 +16308,15 @@ icon_state = "multi_tiles" }, /area/varadero/interior/electrical) -"kDy" = ( -/turf/open/gm/coast/west, +"kDh" = ( +/obj/structure/closet/firecloset/full, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/research) +"kDk" = ( +/obj/item/tool/screwdriver, +/turf/open/gm/dirt, /area/varadero/exterior/eastbeach) "kDF" = ( /obj/structure/disposalpipe/segment{ @@ -12054,17 +16344,23 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) -"kEg" = ( -/obj/structure/machinery/door_control{ - id = "colony_sec_armory"; - name = "Colony Secure Armory"; - pixel_y = 26 - }, +"kDO" = ( +/obj/structure/closet/crate, +/obj/effect/landmark/objective_landmark/close, +/obj/item/trash/chunk, /turf/open/floor/shiva{ - dir = 1; - icon_state = "red" + icon_state = "floor3" }, -/area/varadero/interior/security) +/area/varadero/interior/cargo) +"kEB" = ( +/obj/structure/prop/invuln/static_corpse/afric_zimmer{ + desc = "A card lays in his lap. 'Happy birthday, Steve. Here's to another fruitful year!'"; + name = "Rep. Steve Haifisch"; + layer = 3 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) "kEK" = ( /obj/item/stack/sheet/metal, /turf/open/floor/strata{ @@ -12072,6 +16368,30 @@ icon_state = "multi_tiles" }, /area/varadero/interior_protected/vessel) +"kEV" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance) +"kFn" = ( +/obj/structure/machinery/floodlight/landing/floor, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz2_near) +"kFH" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/item/device/flashlight/flare, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/varadero/exterior/lz2_near) "kFT" = ( /obj/structure/machinery/vending/snack, /turf/open/floor/shiva{ @@ -12096,49 +16416,73 @@ icon_state = "red" }, /area/varadero/interior/medical) -"kGM" = ( -/obj/structure/window/framed/colony/reinforced, -/turf/open/floor/plating, -/area/varadero/interior/hall_NW) -"kGT" = ( -/obj/structure/machinery/door_control{ - id = "colony_sec_armory"; - name = "Colony Secure Armory"; - pixel_y = -26 - }, -/turf/open/floor/shiva{ - icon_state = "red" +"kGq" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior/hall_SE) +"kGB" = ( +/obj/structure/prop/invuln/minecart_tracks{ + dir = 8 }, -/area/varadero/interior/security) -"kHE" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison/chapel_carpet{ +/obj/structure/platform/kutjevo/smooth{ dir = 1; - icon_state = "doubleside" + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/chapel) -"kHJ" = ( -/obj/item/ammo_casing/shell{ - icon_state = "cartridge_10" +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, +/obj/structure/closet/crate/miningcar{ + layer = 3.1; + name = "\improper materials storage bin"; + pixel_y = 8 + }, +/obj/structure/blocker/invisible_wall/water, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior_protected/caves) -"kIb" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/varadero/interior/hall_SE) -"kIg" = ( -/obj/structure/filingcabinet{ - density = 0; - icon_state = "chestdrawer"; - pixel_x = -8; - pixel_y = 11 +/area/varadero/interior/oob) +"kGD" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/gm/dirt{ + icon_state = "desert_dug" }, -/obj/structure/filingcabinet{ +/area/varadero/exterior/pontoon_beach) +"kGF" = ( +/obj/item/paper_bin{ + pixel_y = 6 + }, +/obj/item/tool/pen/blue{ + pixel_x = 7 + }, +/obj/structure/surface/table/reinforced/prison, +/obj/item/device/flash, +/turf/open/floor/shiva{ + icon_state = "redfull" + }, +/area/varadero/interior/security) +"kGJ" = ( +/turf/open/gm/coast/east, +/area/varadero/exterior/eastocean) +"kGM" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating, +/area/varadero/interior/hall_NW) +"kIb" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/varadero/interior/hall_SE) +"kIg" = ( +/obj/structure/filingcabinet{ + density = 0; + icon_state = "chestdrawer"; + pixel_x = -8; + pixel_y = 11 + }, +/obj/structure/filingcabinet{ density = 0; icon_state = "chestdrawer"; pixel_x = -8 @@ -12148,6 +16492,20 @@ }, /turf/open/floor/wood, /area/varadero/interior/bunks) +"kIz" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "multi_tiles" + }, +/area/varadero/interior/electrical) "kIJ" = ( /turf/open/floor{ dir = 10; @@ -12174,21 +16532,22 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) -"kJu" = ( -/turf/open/floor/shiva{ - dir = 4; - icon_state = "multi_tiles" - }, -/area/varadero/interior/morgue) -"kJX" = ( -/obj/structure/tunnel{ - id = "south_tcomms_tunnel" - }, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior/caves/east) "kKS" = ( /turf/open/floor/interior/plastic, /area/varadero/interior_protected/caves/digsite) +"kKX" = ( +/obj/item/device/reagent_scanner{ + pixel_x = 7; + pixel_y = 8 + }, +/obj/structure/prop/server_equipment/laptop{ + pixel_x = -13; + pixel_y = 6 + }, +/obj/structure/surface/table, +/obj/item/paper_bin, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "kLd" = ( /turf/open/floor/shiva{ dir = 8; @@ -12205,6 +16564,10 @@ icon_state = "yellowfull" }, /area/varadero/interior/electrical) +"kLF" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "kMf" = ( /obj/structure/window/framed/colony/reinforced/tinted, /turf/open/floor/plating, @@ -12220,6 +16583,16 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) +"kMy" = ( +/obj/structure/machinery/landinglight/ds2/delaytwo{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) "kME" = ( /obj/structure/machinery/light{ dir = 8 @@ -12249,6 +16622,13 @@ icon_state = "red" }, /area/varadero/interior/medical) +"kNa" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "\improper Toilet Unit" + }, +/turf/open/floor/plating, +/area/varadero/interior/toilets) "kNe" = ( /obj/item/reagent_container/glass/bucket/mopbucket{ pixel_x = -9; @@ -12270,20 +16650,26 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) -"kPl" = ( -/obj/structure/surface/rack, -/obj/item/clothing/under/shorts/red{ - pixel_x = -2; - pixel_y = -4 +"kOS" = ( +/obj/structure/machinery/light{ + dir = 8 }, -/obj/item/clothing/head/hardhat/red{ - pixel_x = -2; - pixel_y = 9 +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellow" + }, +/area/varadero/interior/electrical) +"kPj" = ( +/obj/structure/machinery/alarm{ + pixel_y = 24 }, +/obj/effect/decal/cleanable/blood, /turf/open/floor/shiva{ - icon_state = "multi_tiles" + dir = 1; + icon_state = "green" }, -/area/varadero/interior/bunks) +/area/varadero/interior/mess) "kPX" = ( /obj/structure/surface/table, /obj/item/toy/deck/uno{ @@ -12299,6 +16685,11 @@ icon_state = "green" }, /area/varadero/interior/hall_NW) +"kPZ" = ( +/obj/structure/surface/rack, +/obj/item/tool/weldpack, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "kQb" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -12307,6 +16698,53 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"kQy" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/coast/east, +/area/varadero/exterior/comms4) +"kRp" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) +"kRH" = ( +/turf/open/gm/coast/beachcorner/north_west, +/area/varadero/exterior/lz1_near) +"kRU" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 2; + pixel_y = 15; + indestructible = 1; + unacidable = 1; + layer = 4.1 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/comms4) "kSd" = ( /obj/structure/machinery/alarm{ dir = 1; @@ -12324,10 +16762,36 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) -"kSJ" = ( -/obj/effect/decal/cleanable/blood/oil/streak, -/turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) +"kSD" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior_protected/caves) +"kSN" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "multi_tiles" + }, +/area/varadero/interior/comms3) "kTo" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/shiva{ @@ -12345,17 +16809,6 @@ /obj/item/tool/pickaxe/silver, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) -"kTx" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 5 - }, -/obj/effect/decal/cleanable/cobweb{ - dir = 1 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance/security) "kTD" = ( /obj/structure/machinery/computer/cameras{ pixel_y = 6 @@ -12366,25 +16819,85 @@ icon_state = "red" }, /area/varadero/interior/hall_N) +"kTG" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/shiva{ + icon_state = "wred" + }, +/area/varadero/interior/medical) "kTI" = ( /obj/structure/machinery/light/small, /turf/open/floor{ icon_state = "white" }, /area/varadero/interior/security) -"kTX" = ( -/obj/structure/prop/rock/brown, -/turf/open/gm/river/ocean, -/area/varadero/exterior/eastocean) +"kUj" = ( +/obj/effect/decal/cleanable/blood, +/obj/effect/spawner/random/toolbox, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) "kVp" = ( /turf/open/floor/shiva{ dir = 9; icon_state = "yellow" }, /area/varadero/interior/cargo) +"kVq" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/coast/east, +/area/varadero/exterior/lz2_near) +"kVE" = ( +/obj/structure/window_frame/colony/reinforced, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/east) +"kVL" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/coast/east, +/area/varadero/exterior/comms4) +"kWf" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/farocean) +"kWj" = ( +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/carpet, +/area/varadero/interior/bunks) "kWB" = ( /turf/open/shuttle/elevator/grating, /area/varadero/interior/records) +"kWR" = ( +/turf/open/gm/dirt{ + icon_state = "desert_dug" + }, +/area/varadero/interior/maintenance/north) "kWZ" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice12"; @@ -12427,6 +16940,18 @@ icon_state = "red" }, /area/varadero/interior/security) +"kYF" = ( +/obj/item/tool/weldingtool, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) +"kYM" = ( +/obj/effect/landmark/static_comms/net_one, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/comms4) "kYN" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice1"; @@ -12437,6 +16962,14 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) +"kZe" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/turf/open/gm/dirt{ + icon_state = "desert3" + }, +/area/varadero/exterior/eastbeach) "kZg" = ( /obj/structure/closet/emcloset, /turf/open/floor/shiva{ @@ -12451,6 +16984,19 @@ icon_state = "multi_tiles" }, /area/varadero/interior_protected/vessel) +"kZn" = ( +/obj/structure/surface/table, +/obj/item/tool/kitchen/utensil/knife, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = 24 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/mess) "laa" = ( /obj/structure/bed/chair{ dir = 1; @@ -12497,18 +17043,6 @@ icon_state = "green" }, /area/varadero/interior/hall_N) -"lbD" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - name = "\improper Underground Maintenance"; - req_access_txt = "100"; - req_one_access = null - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior_protected/maintenance/south) "lbK" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 @@ -12529,9 +17063,35 @@ }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/vessel) -"lcP" = ( -/turf/open/floor/plating, -/area/varadero/interior/electrical) +"lch" = ( +/obj/structure/barricade/handrail/wire{ + dir = 8 + }, +/obj/structure/barricade/handrail/wire{ + dir = 4 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) +"lci" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/dirt, +/area/varadero/exterior/eastocean) +"ldr" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) +"ldw" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/gm/coast/beachcorner/north_east, +/area/varadero/interior/caves/east) "ldJ" = ( /obj/structure/machinery/power/apc{ dir = 1; @@ -12551,6 +17111,27 @@ icon_state = "floor3" }, /area/varadero/interior/morgue) +"leG" = ( +/obj/structure/prop/invuln/minecart_tracks{ + dir = 1 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/prop/invuln/minecart_tracks{ + dir = 5 + }, +/obj/structure/platform_decoration/kutjevo{ + dir = 8 + }, +/obj/structure/platform_decoration/kutjevo, +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/oob) "leI" = ( /obj/structure/sink{ dir = 1; @@ -12561,6 +17142,19 @@ icon_state = "purple" }, /area/varadero/interior/research) +"leO" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/surface/table, +/obj/item/weapon/gun/flamer, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/electrical) "leP" = ( /obj/item/stack/cable_coil/cut, /turf/open/floor{ @@ -12568,6 +17162,11 @@ icon_state = "asteroidwarning" }, /area/varadero/exterior/lz1_near) +"leT" = ( +/obj/structure/machinery/conveyor, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/plating, +/area/varadero/interior/cargo) "leU" = ( /obj/structure/largecrate/random, /turf/open/floor/plating/icefloor{ @@ -12582,24 +17181,17 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_NW) -"lfQ" = ( -/obj/structure/stairs/perspective{ - color = "#6b675e"; - dir = 1; - icon_state = "p_stair_full" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +"lgb" = ( +/obj/structure/bedsheetbin, +/obj/item/ammo_magazine/rifle/m4ra, +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 }, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior_protected/vessel) -"lgi" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/turf/open/gm/dirt, -/area/varadero/exterior/pontoon_beach) +/area/varadero/interior/bunks) "lgP" = ( /obj/structure/machinery/light{ dir = 8 @@ -12609,9 +17201,6 @@ icon_state = "green" }, /area/varadero/interior/hall_N) -"lhb" = ( -/turf/closed/wall/r_wall/unmeltable, -/area/varadero/interior/comms1) "lhm" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/ashtray/plastic, @@ -12628,6 +17217,18 @@ icon_state = "red" }, /area/varadero/interior/administration) +"lhn" = ( +/obj/structure/catwalk, +/obj/structure/platform{ + dir = 1; + layer = 2.25; + density = 0; + climb_delay = 0 + }, +/turf/open/gm/river/desert/deep{ + base_river_slowdown = 0 + }, +/area/varadero/interior/maintenance/north) "lhp" = ( /obj/structure/barricade/wooden{ dir = 4 @@ -12636,6 +17237,13 @@ icon_state = "snow_mat" }, /area/varadero/interior/maintenance) +"lhB" = ( +/obj/structure/window_frame/colony/reinforced, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/caves) "lhJ" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1; @@ -12645,10 +17253,22 @@ }, /turf/open/floor/plating, /area/varadero/interior/records) -"liD" = ( -/obj/structure/prop/rock/brown, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) +"liq" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/east) +"liz" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) "liE" = ( /obj/structure/closet/crate/secure/weapon, /obj/effect/landmark/objective_landmark/medium, @@ -12657,27 +17277,12 @@ icon_state = "red" }, /area/varadero/interior/security) -"lje" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 - }, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) -"ljs" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +"liM" = ( +/obj/structure/pipes/binary/passive_gate, +/turf/open/gm/river/desert/deep{ + base_river_slowdown = 0 }, -/area/varadero/interior/maintenance) +/area/varadero/interior/maintenance/north) "ljt" = ( /obj/structure/prop/structure_lattice{ dir = 1; @@ -12698,6 +17303,13 @@ icon_state = "multi_tiles" }, /area/varadero/interior/electrical) +"lkz" = ( +/obj/effect/landmark/corpsespawner/colonist/burst, +/turf/open/floor/prison/chapel_carpet{ + dir = 1; + icon_state = "doubleside" + }, +/area/varadero/interior/chapel) "lkH" = ( /obj/structure/largecrate/random/barrel/red, /turf/open/shuttle/elevator, @@ -12708,18 +17320,25 @@ icon_state = "multi_tiles" }, /area/varadero/interior/technical_storage) -"lkK" = ( -/turf/open/auto_turf/sand_white/layer0, -/area/varadero/interior/caves/east) -"llE" = ( -/obj/structure/closet/secure_closet/medical3{ - req_access_txt = "100" +"llj" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/comms4) +"lmd" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null }, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor/shiva{ - icon_state = "wred" + icon_state = "floor3" }, -/area/varadero/interior/medical) +/area/varadero/interior/hall_SE) "lms" = ( /obj/structure/machinery/door/airlock/strata/autoname{ autoname = 0; @@ -12742,6 +17361,26 @@ icon_state = "doubleside" }, /area/varadero/interior/chapel) +"lmS" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) "lnw" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/flashlight/lamp/green{ @@ -12766,19 +17405,24 @@ "lnO" = ( /turf/open/gm/coast/north, /area/varadero/exterior/pontoon_beach) -"lod" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/door/window/eastright{ - dir = 1; - pixel_y = 17 - }, -/obj/item/weapon/gun/revolver/cmb{ - pixel_y = 2 - }, +"loh" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood/xeno, /turf/open/floor/shiva{ - icon_state = "floor3" + dir = 1 }, -/area/varadero/interior/security) +/area/varadero/interior/electrical) +"loA" = ( +/obj/structure/prop/structure_lattice{ + dir = 1; + health = 300 + }, +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves) +"loO" = ( +/obj/structure/blocker/invisible_wall/water, +/turf/closed/wall/r_wall/unmeltable, +/area/varadero/exterior/farocean) "loP" = ( /obj/structure/machinery/meter{ pixel_x = -1; @@ -12807,6 +17451,12 @@ icon_state = "white" }, /area/varadero/interior/laundry) +"lpJ" = ( +/obj/structure/machinery/light, +/turf/open/floor{ + icon_state = "bcircuit" + }, +/area/varadero/interior/maintenance/north) "lqa" = ( /obj/item/tool/warning_cone{ pixel_x = -11 @@ -12816,18 +17466,40 @@ }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) +"lqF" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz1_near) "lqM" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) -"lqV" = ( -/obj/effect/landmark/corpsespawner/scientist, +"lrp" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/fancy/cigarettes/arcturian_ace{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/effect/spawner/random/supply_kit, /turf/open/floor/shiva{ - icon_state = "floor3" + dir = 4; + icon_state = "red" }, -/area/varadero/interior/research) +/area/varadero/interior/administration) +"lrR" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) "lss" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -12841,6 +17513,12 @@ /obj/effect/overlay/palmtree_r, /turf/open/gm/dirt, /area/varadero/exterior/pontoon_beach) +"lsR" = ( +/obj/item/ammo_magazine/rifle/m4ra, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/bunks) "lsT" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -12853,18 +17531,19 @@ /obj/structure/window/framed/colony/reinforced, /turf/open/floor/plating, /area/varadero/interior/hall_N) -"lth" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/turf/open/gm/river, -/area/varadero/interior/oob) "ltA" = ( /turf/open/floor/shiva{ dir = 1; icon_state = "green" }, /area/varadero/interior/records) +"ltB" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "ltI" = ( /obj/structure/surface/table, /obj/item/paper, @@ -12885,6 +17564,20 @@ dir = 1 }, /area/varadero/interior/research) +"lum" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) +"lun" = ( +/obj/item/device/mass_spectrometer, +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "lur" = ( /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" @@ -12899,35 +17592,109 @@ }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) -"lvS" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ - autoname = 0; - dir = 1; - icon_state = "door_locked"; - locked = 1; - name = "\improper Research Chamber" - }, -/turf/open/shuttle{ - icon_state = "floor6" +"luz" = ( +/obj/structure/prop/invuln/minecart_tracks{ + dir = 8 }, -/area/varadero/interior_protected/vessel) -"lvV" = ( -/obj/structure/window/reinforced{ - dir = 1 +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/obj/structure/window/reinforced{ - dir = 4 +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 }, -/turf/open/floor/plating{ - dir = 5; - icon_state = "warnplate" +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/disposals) -"lxe" = ( +/area/varadero/interior/oob) +"luC" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice2"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/closed/wall/rock/brown, +/area/varadero/exterior/eastbeach) +"luZ" = ( +/obj/structure/closet/secure_closet/miner, +/obj/item/clothing/accessory/storage/black_vest/brown_vest, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves) +"lvt" = ( +/obj/structure/stairs/perspective{ + color = "#6b675e"; + icon_state = "p_stair_full" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" + }, +/area/varadero/interior_protected/vessel) +"lvG" = ( +/obj/structure/curtain/red, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/varadero/interior/bunks) +"lvS" = ( +/obj/structure/machinery/door/airlock/strata/autoname{ + autoname = 0; + dir = 1; + icon_state = "door_locked"; + locked = 1; + name = "\improper Research Chamber" + }, +/turf/open/shuttle{ + icon_state = "floor6" + }, +/area/varadero/interior_protected/vessel) +"lvV" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating{ + dir = 5; + icon_state = "warnplate" + }, +/area/varadero/interior/disposals) +"lwm" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor/plating/bare_catwalk, +/area/varadero/exterior/farocean) +"lxe" = ( /obj/item/stack/sheet/wood, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/floor/plating, /area/varadero/interior/research) +"lxi" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = -8 + }, +/turf/open/gm/coast/beachcorner/north_west, +/area/varadero/exterior/eastbeach) "lxr" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 8 @@ -12937,12 +17704,35 @@ icon_state = "asteroidplating" }, /area/varadero/interior/comms1) +"lxs" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/eastocean) "lxy" = ( /obj/structure/closet/secure_closet/personal, /turf/open/floor/shiva{ icon_state = "red" }, /area/varadero/interior/security) +"lxR" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) "lxT" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/flashlight/lamp/green{ @@ -12956,12 +17746,37 @@ icon_state = "floor3" }, /area/varadero/interior/medical) +"lyp" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "red" + }, +/area/varadero/interior/security) +"lyP" = ( +/turf/closed/wall/rock/brown, +/area/varadero/exterior/comms4) +"lze" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/blocker/invisible_wall/water, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/farocean) "lzu" = ( /turf/open/floor/shiva{ dir = 8; icon_state = "greenfull" }, /area/varadero/interior/hall_N) +"lzD" = ( +/obj/effect/overlay/palmtree_r, +/turf/open/gm/coast/beachcorner/south_east, +/area/varadero/exterior/pontoon_beach) "lzP" = ( /obj/structure/machinery/autolathe, /turf/open/floor/shiva{ @@ -12969,9 +17784,19 @@ icon_state = "yellowfull" }, /area/varadero/interior/cargo) -"lzU" = ( -/obj/item/lightstick/variant/planted, -/turf/open/gm/dirt, +"lzT" = ( +/turf/closed/wall/rock/brown, +/area/varadero/exterior/monsoon) +"lzX" = ( +/obj/structure/machinery/door_control{ + id = "undergroundhangarsouth"; + name = "South Dock Door"; + pixel_x = -24; + indestructible = 1 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "warnplate" + }, /area/varadero/interior/maintenance/north) "lAk" = ( /obj/structure/disposalpipe/segment{ @@ -12982,25 +17807,6 @@ icon_state = "floor3" }, /area/varadero/interior/medical) -"lAu" = ( -/obj/structure/machinery/door_control/brbutton{ - id = "undergroundhangarwest"; - name = "Underground Hangar Lock"; - pixel_x = 8 - }, -/obj/structure/sign/safety/bulkhead_door, -/turf/closed/wall/r_wall, -/area/varadero/exterior/lz1_near) -"lAJ" = ( -/obj/structure/surface/rack, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/toolbox/mechanical, -/obj/effect/landmark/crap_item, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "yellow" - }, -/area/varadero/interior/electrical) "lBf" = ( /obj/item/stack/cable_coil/cut{ pixel_x = 5; @@ -13011,21 +17817,12 @@ icon_state = "snow_mat" }, /area/varadero/interior/medical) -"lBS" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "greenfull" - }, -/area/varadero/interior/hall_SE) -"lCh" = ( -/obj/structure/surface/table/reinforced/prison{ - flipped = 1 - }, +"lBw" = ( +/obj/structure/window/framed/colony/reinforced, /turf/open/floor/shiva{ - icon_state = "multi_tiles" + dir = 1 }, -/area/varadero/interior/hall_SE) +/area/varadero/interior/research) "lCK" = ( /obj/structure/prop/structure_lattice{ dir = 1; @@ -13080,6 +17877,14 @@ icon_state = "yellowfull" }, /area/varadero/interior/cargo) +"lDS" = ( +/obj/structure/bed/roller, +/obj/structure/machinery/iv_drip, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "wred" + }, +/area/varadero/interior/medical) "lEc" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/segment, @@ -13092,6 +17897,12 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) +"lEm" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/varadero/exterior/lz1_near) "lEw" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -13101,18 +17912,26 @@ icon_state = "blue" }, /area/varadero/interior/administration) -"lEB" = ( -/obj/structure/closet/secure_closet/personal/patient, -/obj/item/clothing/accessory/medal/gold/captain, -/obj/item/weapon/pole/wooden_cane, +"lEM" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood, /turf/open/floor/shiva{ - icon_state = "multi_tiles" + dir = 4; + icon_state = "snow_mat" }, -/area/varadero/interior/bunks) -"lEP" = ( -/obj/structure/prop/rock/brown, -/turf/open/gm/river, -/area/varadero/exterior/eastocean) +/area/varadero/interior/medical) +"lEV" = ( +/obj/structure/barricade/handrail/wire{ + dir = 8; + layer = 4 + }, +/obj/structure/platform{ + dir = 1 + }, +/turf/open/gm/river/desert/deep/covered, +/area/varadero/interior/maintenance/north) "lEY" = ( /obj/structure/machinery/alarm{ dir = 8; @@ -13124,6 +17943,12 @@ /obj/effect/landmark/corpsespawner/colonist/burst, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/caves/east) +"lFl" = ( +/turf/open/floor/plating/icefloor{ + dir = 8; + icon_state = "warnplate" + }, +/area/varadero/interior/cargo) "lFr" = ( /obj/structure/platform_decoration/kutjevo{ dir = 4 @@ -13133,6 +17958,44 @@ icon_state = "multi_tiles" }, /area/varadero/interior_protected/vessel) +"lFA" = ( +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/floor/wood, +/area/varadero/interior/hall_SE) +"lFE" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/east) +"lFI" = ( +/obj/structure/prop/structure_lattice{ + dir = 1; + health = 300 + }, +/obj/structure/prop/structure_lattice{ + dir = 1; + layer = 3.1; + pixel_y = 10 + }, +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + icon_state = "vent4"; + pixel_y = 25 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 10; + pixel_y = 22; + indestructible = 1; + unacidable = 1; + layer = 4.1 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/comms4) "lFS" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -13150,13 +18013,23 @@ icon_state = "multi_tiles" }, /area/varadero/interior_protected/vessel) -"lHE" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "yellowfull" +"lGp" = ( +/turf/closed/wall/r_wall/unmeltable, +/area/varadero/interior/medical) +"lGD" = ( +/obj/structure/largecrate/random, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/north) +"lGT" = ( +/obj/structure/barricade/handrail/wire{ + dir = 4; + layer = 4 }, -/area/varadero/interior/electrical) +/obj/structure/platform{ + dir = 1 + }, +/turf/open/gm/river/desert/deep/covered, +/area/varadero/interior/maintenance/north) "lHH" = ( /obj/structure/bed/chair{ dir = 1 @@ -13174,6 +18047,28 @@ icon_state = "floor3" }, /area/varadero/interior/security) +"lId" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) "lIo" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -13182,6 +18077,17 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) +"lIE" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/shuttle/dropship/flight/lz1{ + dir = 1; + name = "LZ1 Pontoon Dock computer" + }, +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/varadero/exterior/lz1_console) "lIO" = ( /obj/structure/prop/ice_colony/tiger_rug{ icon_state = "White"; @@ -13206,32 +18112,25 @@ /obj/effect/spawner/random/attachment, /turf/open/floor/carpet, /area/varadero/interior/administration) -"lIZ" = ( -/obj/structure/plasticflaps/mining, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +"lIW" = ( +/obj/structure/machinery/landinglight/ds1/spoke{ + pixel_y = -5; + pixel_x = 13 }, -/obj/structure/platform/kutjevo/smooth{ +/obj/structure/machinery/camera/autoname/lz_camera, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) +"lJo" = ( +/obj/structure/machinery/light{ dir = 8 }, -/obj/structure/prop/invuln/minecart_tracks{ - dir = 1 - }, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/oob) -"lJu" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, +/obj/effect/landmark/objective_landmark/close, +/obj/structure/surface/rack, /turf/open/floor/shiva{ - dir = 4; - icon_state = "yellow" + dir = 10; + icon_state = "wred" }, -/area/varadero/interior/technical_storage) +/area/varadero/interior/medical) "lKI" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/glass/beaker/ethanol{ @@ -13274,6 +18173,32 @@ icon_state = "red" }, /area/varadero/interior/hall_N) +"lMb" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/caves) +"lMl" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) +"lMq" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/landmark/crap_item, +/obj/effect/spawner/random/supply_kit, +/turf/open/floor/shiva{ + dir = 5; + icon_state = "blue" + }, +/area/varadero/interior/administration) "lMv" = ( /turf/open/floor/shiva{ dir = 8; @@ -13286,6 +18211,13 @@ icon_state = "asteroidfloor" }, /area/varadero/interior/comms1) +"lMD" = ( +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/varadero/interior/hall_SE) "lMP" = ( /obj/structure/filingcabinet, /turf/open/floor/shiva{ @@ -13293,22 +18225,40 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) -"lMY" = ( -/obj/structure/shuttle/engine/router{ - dir = 4 +"lNb" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating, +/area/varadero/interior/hall_SE) +"lNd" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/floor/strata{ - color = "#5e5d5d"; - icon_state = "multi_tiles" +/area/varadero/exterior/eastbeach) +"lNq" = ( +/obj/structure/bed, +/obj/item/bedsheet/orange, +/obj/item/toy/plush/farwa, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "snow_mat" }, -/area/varadero/interior_protected/vessel) +/area/varadero/interior/security) "lNw" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/prop/server_equipment/laptop/closed{ pixel_y = 3 }, -/turf/open/floor/wood, +/turf/open/floor/carpet, /area/varadero/interior/research) +"lNL" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz1_near) "lNX" = ( /obj/structure/machinery/light{ dir = 4 @@ -13328,14 +18278,24 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) -"lOJ" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +"lPj" = ( +/obj/structure/prop/invuln/minecart_tracks{ + dir = 8 }, -/turf/open/floor/shiva{ - icon_state = "floor3" +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/hall_NW) +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/oob) "lPk" = ( /obj/item/stack/cable_coil/cut{ pixel_x = 1; @@ -13379,6 +18339,26 @@ icon_state = "green" }, /area/varadero/interior/mess) +"lQW" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/pontoon_beach) +"lRy" = ( +/obj/structure/surface/table, +/obj/item/circuitboard/machine/batteryrack, +/obj/item/stack/cable_coil{ + pixel_x = 2; + pixel_y = 7 + }, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/varadero/interior/morgue) "lRz" = ( /obj/item/ammo_casing{ icon_state = "casing_7_1" @@ -13393,20 +18373,11 @@ icon_state = "purplecorners" }, /area/varadero/interior/research) -"lSd" = ( -/obj/structure/lz_sign/new_varadero, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" - }, -/area/varadero/exterior/lz1_near) -"lSD" = ( -/obj/structure/machinery/landinglight/ds2/spoke{ - pixel_x = -1; - pixel_y = 22 +"lSg" = ( +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/closed/wall/r_wall, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/cargo) "lSG" = ( /obj/structure/curtain/shower, /turf/open/floor/interior/plastic/alt, @@ -13420,6 +18391,9 @@ icon_state = "green" }, /area/varadero/interior/court) +"lTg" = ( +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "lTv" = ( /obj/item/tool/warning_cone{ pixel_x = -13; @@ -13430,6 +18404,12 @@ }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) +"lTR" = ( +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) "lUe" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -13438,20 +18418,13 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) -"lUi" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/firstaid/regular{ - pixel_x = 4; - pixel_y = 12 - }, -/obj/item/storage/firstaid/rad{ - pixel_y = 4 - }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "purplefull" +"lUG" = ( +/obj/structure/platform_decoration/kutjevo, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" }, -/area/varadero/interior/research) +/area/varadero/exterior/farocean) "lUT" = ( /obj/structure/machinery/smartfridge, /turf/open/floor/shiva{ @@ -13459,6 +18432,16 @@ icon_state = "green" }, /area/varadero/interior/mess) +"lVa" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/varadero/interior/comms1) "lVc" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/plating/icefloor{ @@ -13478,9 +18461,6 @@ /obj/item/device/camera, /turf/open/floor/wood, /area/varadero/interior/security) -"lVM" = ( -/turf/open/gm/river, -/area/varadero/interior/oob) "lVP" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/segment, @@ -13538,6 +18518,20 @@ icon_state = "floor3" }, /area/varadero/interior/hall_N) +"lWB" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/light/small, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/research) "lWJ" = ( /obj/structure/machinery/firealarm{ dir = 1; @@ -13559,6 +18553,31 @@ icon_state = "yellow" }, /area/varadero/interior/technical_storage) +"lXv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/holostool, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) +"lXT" = ( +/obj/structure/plasticflaps/mining, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/prop/invuln/minecart_tracks{ + dir = 1 + }, +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/oob) "lYi" = ( /obj/structure/surface/table, /obj/item/reagent_container/food/drinks/cup{ @@ -13569,6 +18588,10 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"lYo" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/dirt, +/area/varadero/exterior/comms4) "lYr" = ( /turf/open/gm/dirt, /area/varadero/exterior/lz1_near) @@ -13579,10 +18602,24 @@ icon_state = "redfull" }, /area/varadero/interior/medical) +"lYD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/sheet/wood, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/monsoon) "lYF" = ( /obj/structure/largecrate/random/case, /turf/open/shuttle/elevator, /area/varadero/interior/hall_N) +"lYQ" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "lZa" = ( /obj/structure/prop/structure_lattice{ density = 0; @@ -13704,8 +18741,15 @@ icon_state = "red" }, /area/varadero/interior/security) -"mcm" = ( -/turf/open/gm/river/ocean, +"mcp" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/gm/dirt{ + icon_state = "desert1" + }, /area/varadero/exterior/eastbeach) "mcr" = ( /obj/structure/machinery/light, @@ -13714,26 +18758,94 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) -"mcX" = ( +"mcs" = ( +/obj/structure/surface/table, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "greenfull" + }, +/area/varadero/interior/hall_SE) +"mcB" = ( +/obj/structure/platform_decoration/kutjevo, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -10; + pixel_y = 2; + indestructible = 1; + unacidable = 1 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"mcN" = ( +/obj/structure/coatrack{ + pixel_x = 14; + pixel_y = 9 + }, +/obj/item/clothing/head/bowlerhat{ + pixel_x = 12; + pixel_y = 23 + }, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_x = 9; + pixel_y = -4 + }, +/obj/item/device/flashlight, +/turf/open/floor/wood, +/area/varadero/interior/administration) +"mdg" = ( /turf/open/gm/dirt{ - icon_state = "desert3" + icon_state = "desert0" }, -/area/varadero/exterior/pontoon_beach) +/area/varadero/exterior/lz2_near) "mdj" = ( /obj/item/clothing/head/helmet, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) -"mdU" = ( -/obj/structure/surface/table, -/obj/item/paper/janitor{ - pixel_y = 8 +"mdy" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 }, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" }, -/area/varadero/interior/electrical) +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/comms4) +"mdL" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/caves) +"mdM" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/farocean) +"mdN" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior_protected/maintenance/south) "mee" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/door/window/brigdoor/westleft{ @@ -13762,28 +18874,14 @@ pixel_x = 1; pixel_y = 6 }, +/obj/structure/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/laundry) -"meD" = ( -/obj/structure/prop/structure_lattice{ - dir = 1; - health = 300 - }, -/obj/structure/prop/structure_lattice{ - dir = 1; - layer = 3.1; - pixel_y = 10 - }, -/obj/structure/prop/invuln/ice_prefab/roof_greeble{ - icon_state = "vent4"; - pixel_y = 25 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/oob) "meS" = ( /obj/effect/landmark/monkey_spawn, /turf/open/auto_turf/sand_white/layer1, @@ -13800,6 +18898,32 @@ /obj/item/weapon/gun/rifle/m41a, /turf/open/floor/carpet, /area/varadero/interior/hall_SE) +"mgT" = ( +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"mhf" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) +"mio" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 + }, +/obj/structure/machinery/constructable_frame, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) +"miy" = ( +/obj/structure/window/framed/colony/reinforced, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/plating, +/area/varadero/interior/hall_NW) "miF" = ( /obj/structure/machinery/landinglight/ds2/delayone{ dir = 1 @@ -13823,7 +18947,7 @@ /turf/open/floor/wood{ icon_state = "wood-broken3" }, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/dock_control) "miT" = ( /obj/item/stool, /turf/open/floor{ @@ -13839,14 +18963,7 @@ /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/maintenance/research) -"mje" = ( -/obj/item/stack/sheet/metal, -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/caves/east) +/area/varadero/interior/cargo) "mjA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -13858,18 +18975,6 @@ icon_state = "floor3" }, /area/varadero/interior/administration) -"mka" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/medical/glass{ - dir = 1; - name = "\improper Underground Library"; - req_access_txt = "100"; - req_one_access = null - }, -/turf/open/floor{ - icon_state = "wood" - }, -/area/varadero/interior/library) "mkc" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/cell_charger, @@ -13928,15 +19033,6 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"mln" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance/research) "mlN" = ( /obj/vehicle/powerloader/ft, /turf/open/shuttle/elevator/grating, @@ -13949,7 +19045,9 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, /area/varadero/interior/maintenance) "mmq" = ( /obj/structure/fence, @@ -13965,6 +19063,20 @@ }, /turf/open/floor/interior/plastic, /area/varadero/interior_protected/caves/digsite) +"mmO" = ( +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "mnc" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -13996,6 +19108,35 @@ /obj/effect/spawner/random/attachment, /turf/open/floor/wood, /area/varadero/interior/bunks) +"mnz" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/obj/structure/prop/invuln/fire{ + pixel_x = -5; + pixel_y = -15; + density = 0; + layer = 4.1 + }, +/turf/open/gm/coast/north, +/area/varadero/exterior/pontoon_beach) +"mnL" = ( +/obj/structure/window/framed/colony/reinforced, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/floor/plating, +/area/varadero/interior_protected/caves/central) +"mnU" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"mol" = ( +/obj/structure/window/phoronreinforced{ + dir = 4; + icon_state = "phoronrwindow" + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/vessel) "mos" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -14038,13 +19179,17 @@ icon_state = "multi_tiles" }, /area/varadero/interior/research) -"mpt" = ( -/obj/structure/machinery/vending/security, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "red" +"mpH" = ( +/obj/structure/largecrate/random, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, -/area/varadero/interior/security) +/area/varadero/exterior/lz1_near) +"mpL" = ( +/obj/structure/machinery/light/small, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/north) "mqe" = ( /obj/structure/cryofeed, /turf/open/floor/strata{ @@ -14061,21 +19206,6 @@ icon_state = "blue" }, /area/varadero/interior/administration) -"mqK" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/barricade/handrail{ - desc = "Your platforms look pretty heavy king, let me support them for you."; - dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" - }, -/turf/open/gm/river, -/area/varadero/interior/oob) "mrd" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -14092,30 +19222,81 @@ icon_state = "asteroidwarning" }, /area/varadero/exterior/lz1_near) -"mrF" = ( -/obj/structure/machinery/space_heater, -/turf/open/floor/wood, -/area/varadero/exterior/lz1_near) "mrP" = ( /obj/structure/disposalpipe/segment{ dir = 1; icon_state = "pipe-c" }, +/obj/structure/machinery/alarm{ + dir = 4; + pixel_x = -24 + }, /turf/open/floor/shiva{ icon_state = "multi_tiles" }, /area/varadero/interior/medical) -"msE" = ( -/obj/structure/blocker/invisible_wall, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 +"mrR" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"mrT" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/item/clothing/accessory/storage/black_vest/brown_vest, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +/area/varadero/interior/electrical) +"mrY" = ( +/obj/structure/prop/rock/brown, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) +"msj" = ( +/obj/structure/prop/rock/brown, +/obj/structure/blocker/invisible_wall/water, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" }, -/turf/open/gm/river, -/area/varadero/interior/oob) +/area/varadero/exterior/farocean) +"msx" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Underground Requesitions Bay" + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellow" + }, +/area/varadero/interior/cargo) +"mtp" = ( +/obj/structure/machinery/floodlight{ + name = "Floodlight"; + unacidable = 0; + wrenchable = 1 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) +"mtx" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/obj/structure/barricade/wooden, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "snow_mat" + }, +/area/varadero/interior/maintenance) +"mtJ" = ( +/obj/structure/barricade/wooden, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"mtT" = ( +/turf/open/gm/coast/beachcorner/south_east, +/area/varadero/exterior/lz2_near) "mtU" = ( /obj/structure/closet/secure_closet/engineering_electrical, /turf/open/floor/plating/icefloor{ @@ -14127,7 +19308,7 @@ dir = 5; icon_state = "green" }, -/area/varadero/interior/hall_SE) +/area/varadero/interior/hall_N) "muE" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -14147,23 +19328,13 @@ icon_state = "floor3" }, /area/varadero/interior/security) -"mvo" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/barricade/handrail{ - desc = "Your platforms look pretty heavy king, let me support them for you."; +"mvi" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/shiva{ dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" - }, -/turf/open/gm/dirt{ - icon_state = "desert3" + icon_state = "yellow" }, -/area/varadero/exterior/pontoon_beach) +/area/varadero/interior/electrical) "mvv" = ( /obj/effect/decal/remains/xeno{ pixel_y = 25 @@ -14172,65 +19343,93 @@ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) +"mvA" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "mvI" = ( /turf/open/floor/shiva{ dir = 4; icon_state = "green" }, /area/varadero/interior/hall_SE) -"mwH" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/light, -/obj/item/circuitboard/computer/powermonitor, -/obj/item/stack/cable_coil/cut{ - pixel_y = 12 +"mvO" = ( +/obj/structure/machinery/floodlight{ + name = "Floodlight"; + unacidable = 0; + wrenchable = 1 }, /turf/open/floor/shiva{ - icon_state = "blue" + dir = 1; + icon_state = "yellow" }, -/area/varadero/interior/technical_storage) -"mxb" = ( -/obj/structure/machinery/door/poddoor/two_tile/four_tile/secure{ - id = "undergroundhangarsouth"; - name = "Underground Hangar" +/area/varadero/interior/electrical) +"mwd" = ( +/obj/effect/landmark/corpsespawner/colonist/burst, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/wood, +/area/varadero/interior/court) +"mwm" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/exterior/lz1_near) -"mxn" = ( -/obj/structure/window/reinforced{ +/obj/structure/platform/kutjevo/smooth{ dir = 4; - pixel_x = -2; - pixel_y = 4 + climb_delay = 1; + layer = 2.99 }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 +/obj/item/reagent_container/food/snacks/carpmeat{ + desc = "This leathery protofish was named the gullible toothfish for the combination of its near identical dentata to that of Homo sapiens sapiens and the fact that if released after being caught, it is not uncommon to catch the same one; it not having learned its lesson. Its meat is said to taste like bitter clove."; + icon = 'icons/obj/items/fishing_atoms.dmi'; + icon_state = "gullible_toothfish_gutted"; + name = "gullible toothfish"; + pixel_x = 1; + pixel_y = -2 }, -/obj/structure/bed{ - can_buckle = 0 +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 +/area/varadero/exterior/comms4) +"mwD" = ( +/obj/item/storage/toolbox/mechanical{ + pixel_x = 1; + pixel_y = 7 + }, +/obj/structure/closet/crate/supply, +/turf/open/shuttle/elevator, +/area/varadero/interior/records) +"mwH" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/light, +/obj/item/circuitboard/computer/powermonitor, +/obj/item/stack/cable_coil/cut{ + pixel_y = 12 }, -/obj/structure/machinery/light/small, -/obj/item/toy/farwadoll, /turf/open/floor/shiva{ - icon_state = "floor3" + icon_state = "blue" }, -/area/varadero/interior/medical) +/area/varadero/interior/technical_storage) +"mwI" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/gm/coast/east, +/area/varadero/exterior/lz2_near) "mxv" = ( /obj/structure/largecrate/random, /turf/open/shuttle/elevator/grating, /area/varadero/interior/hall_N) -"mxz" = ( -/obj/effect/landmark/hunter_secondary, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" +"mxx" = ( +/obj/structure/largecrate/random, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/hall_N) +/area/varadero/interior/maintenance/research) "mxB" = ( /obj/structure/flora/bush/ausbushes/var3/fullgrass, /turf/open/auto_turf/sand_white/layer1, @@ -14279,13 +19478,6 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"mzr" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 - }, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) "mzt" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/airlock/almayer/maint{ @@ -14352,16 +19544,26 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) -"mAz" = ( -/obj/structure/prop/rock/brown, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior/oob) "mAB" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/hall_SE) +"mAP" = ( +/obj/structure/surface/rack, +/obj/item/ammo_magazine/shotgun/slugs{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/item/ammo_magazine/shotgun/slugs{ + pixel_x = -2; + pixel_y = -4 + }, +/turf/open/floor/shiva{ + icon_state = "red" + }, +/area/varadero/interior/security) "mAX" = ( /obj/structure/prop/dam/van{ desc = "An older Weyland Yutani space crawler. These things are most commonly seen along former trails on shake and bake colonies."; @@ -14378,6 +19580,13 @@ icon_state = "yellow" }, /area/varadero/interior/disposals) +"mCe" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "mCx" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -14406,6 +19615,13 @@ }, /turf/open/floor/carpet, /area/varadero/interior/hall_SE) +"mCX" = ( +/obj/structure/prop/structure_lattice{ + dir = 1; + health = 300 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/north_research) "mCY" = ( /obj/structure/prop/structure_lattice{ density = 0; @@ -14427,15 +19643,31 @@ icon_state = "doubleside" }, /area/varadero/interior/chapel) -"mDW" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1; - name = "\improper Toilet Unit"; - req_access_txt = "100"; - req_one_access = null +"mDm" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ + icon_state = "sparsegrass_3" }, -/turf/open/floor/plating, -/area/varadero/interior/toilets) +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) +"mEs" = ( +/obj/structure/machinery/light/small, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) +"mEy" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) "mEA" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/newspaper{ @@ -14459,12 +19691,6 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/caves/east) -"mFF" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/gm/dirt, -/area/varadero/interior/maintenance/north) "mFY" = ( /obj/structure/machinery/vending/coffee, /turf/open/floor/shiva{ @@ -14489,22 +19715,25 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) -"mHo" = ( -/obj/structure/platform/kutjevo/smooth{ +"mHM" = ( +/obj/structure/prop/invuln/minecart_tracks{ dir = 8 }, -/obj/item/device/camera{ - pixel_x = -2; - pixel_y = 9 +/obj/structure/plasticflaps/mining, +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 }, -/obj/item/newspaper{ - layer = 2.99; - pixel_x = 7; - pixel_y = 4 +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/obj/structure/surface/table, -/turf/open/gm/dirt, -/area/varadero/exterior/pontoon_beach) +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/oob) "mIG" = ( /obj/structure/bed, /obj/item/bedsheet/orange, @@ -14518,6 +19747,45 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) +"mIQ" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor/shiva{ + icon_state = "snow_mat" + }, +/area/varadero/interior/maintenance) +"mIU" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/coast/east, +/area/varadero/exterior/pontoon_beach) +"mJe" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior/caves/north_research) +"mJh" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "multi_tiles" + }, +/area/varadero/interior/hall_SE) +"mJH" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "mKb" = ( /obj/structure/sign/safety/medical, /turf/closed/wall, @@ -14538,6 +19806,13 @@ icon_state = "redfull" }, /area/varadero/interior/medical) +"mLg" = ( +/obj/structure/platform_decoration/kutjevo, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/comms4) "mLt" = ( /obj/structure/sign/goldenplaque{ pixel_y = 32 @@ -14563,14 +19838,52 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/maintenance/south) -"mNj" = ( -/obj/structure/filingcabinet/security, -/obj/effect/landmark/objective_landmark/far, -/turf/open/floor/shiva{ +"mMz" = ( +/obj/item/stack/sheet/metal, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/digsite) +"mMJ" = ( +/obj/item/stack/sheet/wood/small_stack, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/north) +"mMX" = ( +/obj/structure/platform/kutjevo/smooth{ dir = 8; - icon_state = "redfull" + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/hall_SE) +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior_protected/caves) +"mMZ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/surface/rack, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) +"mNm" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/machinery/floodlight{ + name = "Floodlight"; + unacidable = 0; + wrenchable = 1 + }, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "yellow" + }, +/area/varadero/interior/electrical) "mNO" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 @@ -14579,6 +19892,28 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"mNT" = ( +/obj/structure/prop/ice_colony/dense/planter_box/plated{ + dir = 9; + icon_state = "planter_box_soil" + }, +/obj/structure/flora/bush/ausbushes/pointybush{ + icon_state = "pointybush_2"; + pixel_y = 11 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) +"mOx" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "bluefull" + }, +/area/varadero/interior/maintenance) "mOG" = ( /obj/structure/prop/structure_lattice{ dir = 1; @@ -14590,10 +19925,6 @@ /area/varadero/interior_protected/maintenance/south) "mOO" = ( /obj/structure/machinery/vending/coffee, -/obj/structure/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, /turf/open/floor/shiva{ icon_state = "floor3" }, @@ -14606,6 +19937,21 @@ icon_state = "multi_tiles" }, /area/varadero/interior/records) +"mPk" = ( +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/farocean) +"mPl" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance) "mPI" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/landmark/survivor_spawner, @@ -14619,6 +19965,23 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"mPW" = ( +/obj/structure/blocker/invisible_wall/water, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/farocean) +"mPX" = ( +/obj/structure/machinery/floodlight/landing{ + desc = "A powerful light stationed near construction zones to provide better visibility."; + name = "Construction Light" + }, +/obj/effect/decal/warning_stripes, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/research) "mQh" = ( /obj/structure/closet/secure_closet/engineering_welding, /obj/effect/landmark/objective_landmark/close, @@ -14634,6 +19997,19 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) +"mQF" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/north_research) +"mQG" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) "mRq" = ( /obj/structure/window/framed/colony, /turf/open/floor/plating, @@ -14666,12 +20042,72 @@ }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/central) +"mSc" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/toy/plush/farwa, +/turf/open/floor/wood, +/area/varadero/interior/bunks) +"mSf" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/electrical) +"mSu" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) "mSD" = ( /obj/structure/pipes/vents/pump/on, /turf/open/floor/shiva{ dir = 1 }, /area/varadero/interior/electrical) +"mSS" = ( +/obj/structure/prop/invuln/minecart_tracks{ + dir = 1 + }, +/obj/structure/plasticflaps/mining, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/oob) +"mTD" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/varadero/interior/hall_SE) +"mUv" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/structure/lattice, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "mUy" = ( /obj/structure/bed/sofa/pews/flipped{ dir = 4 @@ -14682,6 +20118,11 @@ /obj/effect/landmark/survivor_spawner, /turf/open/floor/carpet, /area/varadero/interior/chapel) +"mUz" = ( +/turf/open/gm/dirt{ + icon_state = "desert_dug" + }, +/area/varadero/exterior/eastbeach) "mUP" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/plating/icefloor{ @@ -14695,6 +20136,35 @@ icon_state = "purple" }, /area/varadero/interior/research) +"mVj" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -1; + pixel_y = 9; + indestructible = 1; + unacidable = 1 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) +"mVn" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/item/shard{ + icon_state = "medium" + }, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "mVF" = ( /obj/structure/prop/souto_land/pole{ dir = 1 @@ -14723,32 +20193,22 @@ icon_state = "bluefull" }, /area/varadero/interior/hall_SE) -"mWi" = ( -/obj/structure/closet/crate, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/cargo) -"mWN" = ( +"mVY" = ( /obj/structure/platform/kutjevo/smooth{ - dir = 4 + dir = 4; + climb_delay = 1; + layer = 2.99 }, -/turf/open/gm/river, -/area/varadero/interior/caves/north_research) -"mXc" = ( -/obj/structure/surface/table/woodentable, -/obj/item/reagent_container/food/drinks/bottle/holywater, -/turf/open/floor/carpet, -/area/varadero/interior/chapel) -"mXo" = ( -/obj/structure/machinery/door/airlock/almayer/command{ - dir = 1; - name = "\improper Underground Command Center"; - req_access_txt = "100" +/obj/item/clothing/under/shorts/grey, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/turf/open/floor/plating, -/area/varadero/interior/administration) +/area/varadero/exterior/pool) +"mXi" = ( +/obj/effect/landmark/objective_landmark/far, +/turf/open/shuttle/elevator, +/area/varadero/interior/records) "mXs" = ( /obj/structure/machinery/light{ dir = 4 @@ -14758,6 +20218,31 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"mXx" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Underground Sports Center" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/court) +"mXO" = ( +/obj/structure/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/obj/item/ammo_magazine/handful/shotgun/buckshot{ + pixel_x = -9 + }, +/obj/item/clothing/suit/armor/vest, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "red" + }, +/area/varadero/interior/hall_N) "mXV" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -14766,22 +20251,6 @@ icon_state = "floor3" }, /area/varadero/interior/hall_SE) -"mXZ" = ( -/obj/structure/prop/ice_colony/dense/planter_box/hydro{ - density = 0; - pixel_x = 11; - pixel_y = 9 - }, -/obj/structure/flora/bush/desert{ - icon_state = "tree_2"; - pixel_x = 10; - pixel_y = 20 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/turf/open/gm/river, -/area/varadero/interior/caves/north_research) "mYd" = ( /obj/structure/bed/chair, /turf/open/floor/shiva{ @@ -14789,6 +20258,18 @@ icon_state = "multi_tiles" }, /area/varadero/interior/electrical) +"mYA" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/farocean) "mYR" = ( /obj/item/facepaint/sunscreen_stick, /turf/open/floor/plating/icefloor{ @@ -14801,6 +20282,21 @@ icon_state = "yellowcorners" }, /area/varadero/interior/cargo) +"mZi" = ( +/turf/open/floor/shiva{ + icon_state = "green" + }, +/area/varadero/interior/court) +"mZk" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/closet/crate, +/obj/item/prop/magazine/dirty/torn/alt, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "mZC" = ( /obj/structure/surface/table/woodentable{ icon_state = "reinf_table" @@ -14828,6 +20324,11 @@ icon_state = "yellowfull" }, /area/varadero/interior/cargo) +"mZH" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/item/lightstick/variant/planted, +/turf/open/gm/coast/beachcorner2/south_west, +/area/varadero/exterior/farocean) "mZI" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -14839,13 +20340,15 @@ dir = 1 }, /area/varadero/interior/electrical) -"nap" = ( -/obj/structure/window_frame/colony/reinforced, -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +"nak" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 }, -/area/varadero/interior/caves/east) +/turf/open/gm/dirt{ + icon_state = "desert1" + }, +/area/varadero/exterior/eastbeach) "nau" = ( /obj/structure/platform_decoration/kutjevo{ dir = 8 @@ -14855,21 +20358,15 @@ icon_state = "multi_tiles" }, /area/varadero/interior_protected/vessel) -"naw" = ( -/turf/open/floor/shiva{ - dir = 10; - icon_state = "yellow" - }, -/area/varadero/interior/cargo) -"naW" = ( -/turf/open/floor/plating, -/area/varadero/interior/medical) "nbA" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/hall_SE) +"nbB" = ( +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/comms4) "ncd" = ( /obj/effect/landmark/xeno_hive_spawn, /obj/effect/landmark/ert_spawns/groundside_xeno, @@ -14885,6 +20382,18 @@ icon_state = "red" }, /area/varadero/interior/morgue) +"nch" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) +"ncn" = ( +/obj/item/trash/cheesie, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "ncv" = ( /obj/structure/cable/heavyduty{ icon_state = "4-8" @@ -14898,6 +20407,14 @@ }, /turf/open/floor/plating, /area/varadero/interior_protected/caves/digsite) +"ncC" = ( +/obj/item/ammo_magazine/handful/lever_action, +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/floor/wood, +/area/varadero/interior/research) "ncL" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/auto_turf/sand_white/layer1, @@ -14909,17 +20426,6 @@ }, /turf/open/floor/plating, /area/varadero/interior/hall_SE) -"ndl" = ( -/obj/structure/surface/rack, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot{ - pixel_x = 6; - pixel_y = -4 - }, -/turf/open/floor/shiva{ - icon_state = "red" - }, -/area/varadero/interior/security) "ndp" = ( /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" @@ -14930,6 +20436,15 @@ icon_state = "squareswood" }, /area/varadero/interior_protected/vessel) +"nee" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"neq" = ( +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves) "new" = ( /obj/structure/barricade/handrail/wire{ dir = 8 @@ -14939,25 +20454,6 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) -"neC" = ( -/obj/structure/prop/invuln/minecart_tracks{ - dir = 8 - }, -/obj/structure/platform_decoration/kutjevo{ - dir = 1 - }, -/obj/structure/prop/invuln/minecart_tracks{ - dir = 5 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/platform_decoration/kutjevo, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/oob) "neD" = ( /obj/structure/fence, /obj/effect/decal/warning_stripes{ @@ -14974,16 +20470,31 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) +"neU" = ( +/obj/structure/machinery/power/apc{ + dir = 1; + pixel_y = 24; + start_charge = 0 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/hall_N) +"nfk" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance) "nfv" = ( /obj/structure/bedsheetbin, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/laundry) -"nfD" = ( -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/coast/south, -/area/varadero/exterior/eastbeach) "nfX" = ( /obj/item/reagent_container/glass/bucket{ pixel_x = -11; @@ -14992,7 +20503,7 @@ /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/maintenance/research) +/area/varadero/interior/cargo) "nfZ" = ( /obj/structure/machinery/conveyor_switch, /obj/effect/decal/warning_stripes{ @@ -15002,6 +20513,9 @@ dir = 1 }, /area/varadero/interior/cargo) +"ngg" = ( +/turf/closed/wall/rock/brown, +/area/varadero/interior/hall_SE) "ngm" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/green{ @@ -15016,13 +20530,81 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"nhc" = ( +"ngC" = ( +/obj/structure/largecrate/random/mini/chest, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/interior/maintenance/north) +"ngY" = ( +/obj/item/stack/sheet/metal/med_small_stack, +/obj/structure/prop/server_equipment/laptop{ + pixel_x = 5; + pixel_y = 6 + }, /obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/shuttle/dropship/flight/lz2{ - dir = 4 +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"nhI" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 }, -/turf/open/floor/wood, -/area/varadero/exterior/lz1_console) +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -1; + pixel_y = 9; + indestructible = 1; + unacidable = 1 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"nhX" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/comms4) +"nhY" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/obj/structure/platform_decoration/kutjevo, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) "nih" = ( /obj/structure/prop/structure_lattice{ density = 0; @@ -15037,12 +20619,29 @@ "nio" = ( /turf/closed/wall/r_wall/elevator/gears, /area/varadero/interior/hall_N) +"nit" = ( +/obj/structure/closet/crate/construction, +/obj/item/storage/belt/utility, +/obj/item/device/floor_painter, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "niF" = ( /obj/structure/closet/secure_closet/personal/patient, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/medical) +"njC" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 4 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "nkd" = ( /obj/structure/surface/table, /obj/item/storage/firstaid/o2, @@ -15071,16 +20670,6 @@ }, /turf/open/floor/carpet, /area/varadero/interior/records) -"nkJ" = ( -/obj/structure/prop/rock/brown, -/turf/open/auto_turf/sand_white/layer0, -/area/varadero/interior/caves/east) -"nkP" = ( -/turf/open/floor/shiva{ - dir = 1; - icon_state = "greencorners" - }, -/area/varadero/interior/hall_SE) "nma" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/largecrate/random/mini/small_case/c{ @@ -15115,6 +20704,16 @@ }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) +"nmN" = ( +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/structure/surface/table, +/obj/effect/landmark/objective_landmark/far, +/turf/open/floor/shiva{ + icon_state = "snow_mat" + }, +/area/varadero/interior/security) "nmQ" = ( /obj/structure/pipes/vents/pump{ dir = 8 @@ -15123,6 +20722,12 @@ icon_state = "floor3" }, /area/varadero/interior/security) +"nnb" = ( +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/eastbeach) "nni" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -15137,15 +20742,14 @@ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) -"nnr" = ( -/obj/structure/machinery/alarm{ - pixel_y = 24 +"nnt" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Underground Requesitions Lobby" }, /turf/open/floor/shiva{ - dir = 1; - icon_state = "green" + icon_state = "floor3" }, -/area/varadero/interior/mess) +/area/varadero/interior/cargo) "nnw" = ( /obj/structure/bed/chair{ dir = 1 @@ -15154,12 +20758,6 @@ icon_state = "floor3" }, /area/varadero/interior/hall_N) -"nnD" = ( -/turf/closed/wall/mineral/gold{ - desc = "A wall plated with gold that details the rules of the pool. Don't run, walk!"; - desc_lore = "Pool's closed" - }, -/area/varadero/interior/maintenance) "nnF" = ( /obj/structure/machinery/vending/snack, /turf/open/floor/shiva{ @@ -15167,26 +20765,37 @@ icon_state = "greenfull" }, /area/varadero/interior/medical) -"noG" = ( -/obj/item/storage/belt/shotgun/full/quackers, -/turf/open/gm/river, -/area/varadero/interior/maintenance) -"noO" = ( -/obj/structure/surface/table, -/obj/item/reagent_container/food/drinks/bottle/holywater, -/obj/structure/machinery/light, +"noj" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) +"noC" = ( +/obj/structure/pipes/vents/pump/on, /turf/open/floor/shiva{ - dir = 1; - icon_state = "red" + icon_state = "multi_tiles" }, -/area/varadero/interior/morgue) -"npB" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 1 +/area/varadero/interior/comms3) +"noR" = ( +/obj/item/shard{ + icon_state = "medium" }, -/obj/structure/blocker/invisible_wall/water, -/turf/open/gm/river/ocean, -/area/varadero/interior/oob) +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"npi" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/obj/structure/largecrate/random, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) +"npF" = ( +/obj/effect/landmark/survivor_spawner, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "npW" = ( /obj/item/tool/warning_cone{ pixel_x = -8 @@ -15196,6 +20805,10 @@ }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/vessel) +"nqf" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves/central) "nqN" = ( /obj/item/stool{ icon_state = "stool_alt" @@ -15205,21 +20818,15 @@ icon_state = "yellowfull" }, /area/varadero/interior/technical_storage) +"nqQ" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating/icefloor, +/area/varadero/interior/dock_control) "nrd" = ( /turf/open/floor{ icon_state = "white" }, /area/varadero/interior/security) -"nrR" = ( -/obj/effect/overlay/palmtree_r{ - icon_state = "palm2" - }, -/turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) -"nsa" = ( -/obj/structure/platform_decoration/kutjevo, -/turf/open/gm/river/ocean, -/area/varadero/interior/oob) "nsc" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -15237,13 +20844,18 @@ dir = 1 }, /area/varadero/interior/electrical) -"nss" = ( -/obj/structure/bed/chair/wheelchair, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "wred" +"nsn" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/medical) +/area/varadero/interior/cargo) +"nsN" = ( +/turf/open/gm/coast/south, +/area/varadero/exterior/lz2_near) +"nti" = ( +/turf/closed/wall/r_wall, +/area/varadero/exterior/lz2_near) "ntw" = ( /obj/structure/closet/hydrant{ pixel_y = 32 @@ -15252,10 +20864,16 @@ icon_state = "green" }, /area/varadero/interior/hall_N) -"ntL" = ( -/obj/structure/window/framed/colony, -/turf/open/floor/plating, -/area/varadero/exterior/lz1_near) +"nuv" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "nuQ" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -15265,70 +20883,32 @@ icon_state = "purple" }, /area/varadero/interior/research) -"nvF" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) -"nwO" = ( -/obj/structure/curtain/black, -/turf/open/floor/shiva{ - dir = 6; - icon_state = "multi_tiles" - }, -/area/varadero/interior/bunks) -"nxf" = ( -/obj/structure/bed/chair{ - dir = 8; - icon_state = "chair_alt" +"nvv" = ( +/obj/structure/blocker/fog, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" }, +/area/varadero/exterior/farocean) +"nwi" = ( +/obj/structure/machinery/power/port_gen/pacman/mrs, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/maintenance/security) -"nxF" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/barricade/handrail{ - desc = "Your platforms look pretty heavy king, let me support them for you."; - dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" +/area/varadero/interior/maintenance/north) +"nwq" = ( +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) +"nxl" = ( +/obj/structure/closet/wardrobe/engineering_yellow, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/gm/river, -/area/varadero/interior/maintenance) +/area/varadero/interior/comms2) "nxW" = ( /obj/structure/window/framed/colony, /turf/open/floor/plating, /area/varadero/interior/medical) -"nxZ" = ( -/obj/item/reagent_container/food/snacks/carpmeat{ - desc = "This leathery protofish was named the gullible toothfish for the combination of its near identical dentata to that of Homo sapiens sapiens and the fact that if released after being caught, it is not uncommon to catch the same one; it not having learned its lesson. Its meat is said to taste like bitter clove."; - icon = 'icons/obj/items/fishing_atoms.dmi'; - icon_state = "gullible_toothfish_gutted"; - name = "gullible toothfish"; - pixel_x = 1; - pixel_y = -2 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/oob) -"nyj" = ( -/obj/effect/overlay/palmtree_l, -/turf/open/gm/dirt, -/area/varadero/exterior/pontoon_beach) -"nyH" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/structure/surface/rack, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance) "nyJ" = ( /obj/structure/closet/hydrant{ pixel_x = -32 @@ -15338,13 +20918,6 @@ icon_state = "purple" }, /area/varadero/interior/hall_NW) -"nyO" = ( -/obj/structure/surface/rack, -/obj/item/toy/beach_ball/holoball, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance) "nzb" = ( /obj/structure/stairs/perspective{ color = "#6b675e"; @@ -15369,21 +20942,27 @@ icon_state = "green" }, /area/varadero/interior/mess) -"nzO" = ( -/obj/structure/machinery/light/small, -/obj/structure/closet/secure_closet/personal/patient, -/obj/structure/barricade/handrail/wire{ +"nzS" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/machinery/light{ dir = 4 }, -/turf/open/floor/shiva{ - icon_state = "floor3" +/obj/structure/surface/rack, +/obj/item/tool/pickaxe/drill{ + pixel_y = 4 }, -/area/varadero/interior/medical) -"nAQ" = ( /turf/open/floor{ - icon_state = "bcircuit" + dir = 1; + icon_state = "asteroidfloor" }, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/comms1) +"nBc" = ( +/turf/open/gm/coast/beachcorner2/south_west, +/area/varadero/exterior/lz2_near) "nBj" = ( /obj/structure/closet/emcloset, /obj/effect/landmark/objective_landmark/medium, @@ -15415,15 +20994,35 @@ icon_state = "floor3" }, /area/varadero/interior/mess) +"nBH" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ + dir = 1; + name = "\improper Theta-V Research Laboratory"; + req_one_access = null; + req_access = null + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/hall_NW) +"nCl" = ( +/obj/structure/fence, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) "nCE" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ icon_state = "green" }, /area/varadero/interior/hall_SE) +"nCF" = ( +/turf/open/gm/coast/beachcorner/north_east, +/area/varadero/exterior/eastocean) "nCV" = ( /obj/effect/decal/cleanable/blood, -/turf/open/floor/wood, +/turf/open/floor/carpet, /area/varadero/interior/research) "nDk" = ( /obj/structure/largecrate/random, @@ -15442,8 +21041,20 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, /area/varadero/interior/court) +"nDL" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) "nEE" = ( /obj/structure/prop/server_equipment/laptop/on{ pixel_x = -5 @@ -15472,6 +21083,21 @@ icon_state = "multi_tiles" }, /area/varadero/interior/disposals) +"nFp" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior/caves/north_research) "nFy" = ( /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" @@ -15482,42 +21108,90 @@ icon_state = "squareswood" }, /area/varadero/interior_protected/vessel) -"nGs" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - name = "\improper Underground Maintenance"; - req_access_txt = "100"; - req_one_access = null - }, -/turf/open/floor/plating, -/area/varadero/interior/technical_storage) -"nHb" = ( -/obj/structure/bed/chair/comfy/beige{ - dir = 4 +"nFB" = ( +/obj/structure/machinery/floodlight/landing, +/obj/effect/decal/warning_stripes, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, -/turf/open/floor/wood, /area/varadero/exterior/lz1_near) +"nFD" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) +"nFH" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/comms4) +"nFK" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/swcaves) +"nFX" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"nGE" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 1; + name = "\improper Underground Engineering Locker Room"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "multi_tiles" + }, +/area/varadero/interior/comms3) +"nHy" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/item/tool/warning_cone, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "nHA" = ( /turf/open/floor/shiva{ icon_state = "red" }, /area/varadero/interior/security) -"nHD" = ( -/turf/open/auto_turf/sand_white/layer0, -/area/varadero/interior/caves/north_research) -"nIw" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"nHC" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/obj/structure/pipes/standard/simple/hidden/green{ +/area/varadero/interior_protected/caves) +"nHH" = ( +/obj/structure/platform_decoration/kutjevo{ dir = 4 }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ - dir = 1; - name = "\improper Underground Medical Laboratory"; - req_access_txt = "100" +/obj/structure/flora/bush/desert{ + icon_state = "tree_2"; + pixel_x = -18; + pixel_y = -8 }, -/turf/open/floor/plating, -/area/varadero/interior/medical) +/obj/structure/prop/ice_colony/dense/planter_box/hydro{ + pixel_x = -17; + pixel_y = -19 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) "nIF" = ( /obj/structure/reagent_dispensers/water_cooler/stacks{ density = 0; @@ -15542,23 +21216,26 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) -"nJq" = ( -/obj/structure/stairs/perspective{ - color = "#6b675e"; - dir = 1; - icon_state = "p_stair_full" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, +"nJd" = ( +/obj/item/stack/sheet/wood/small_stack, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) +"nJn" = ( +/obj/structure/bed/chair, /turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior_protected/vessel) +/area/varadero/exterior/lz1_near) "nKd" = ( /obj/structure/prop/turbine_extras, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) +"nKf" = ( +/obj/item/tool/hatchet, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) "nKr" = ( /obj/structure/surface/table, /obj/item/storage/box/sprays{ @@ -15569,6 +21246,21 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) +"nKy" = ( +/obj/structure/surface/rack, +/obj/item/tool/pickaxe, +/obj/item/tool/pickaxe{ + pixel_y = -4 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/north) +"nKR" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/monsoon) "nLw" = ( /obj/structure/machinery/r_n_d/server, /turf/open/floor/shiva{ @@ -15576,6 +21268,21 @@ icon_state = "purple" }, /area/varadero/interior/research) +"nLH" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = -8 + }, +/obj/structure/barricade/handrail/wire{ + dir = 8; + layer = 3.5 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/eastbeach) "nLI" = ( /turf/open/floor/shiva{ dir = 4; @@ -15592,10 +21299,21 @@ /obj/item/tool/pickaxe, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/caves/east) -"nNw" = ( -/obj/item/storage/belt/marine/quackers, -/turf/open/gm/river, -/area/varadero/interior/maintenance) +"nNe" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating, +/area/varadero/interior_protected/caves/central) +"nNv" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/shiva{ + icon_state = "redfull" + }, +/area/varadero/interior/security) "nNz" = ( /obj/structure/machinery/light{ dir = 4 @@ -15603,6 +21321,19 @@ /obj/effect/decal/cleanable/blood, /turf/open/floor/wood, /area/varadero/interior/hall_SE) +"nNB" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) +"nNZ" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/hall_N) "nOg" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/airlock/almayer/secure{ @@ -15616,7 +21347,7 @@ /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/maintenance/security) +/area/varadero/interior/electrical) "nOj" = ( /obj/effect/landmark/hunter_secondary, /turf/open/floor/shiva{ @@ -15624,15 +21355,6 @@ icon_state = "multi_tiles" }, /area/varadero/interior/cargo) -"nOw" = ( -/obj/structure/prop/structure_lattice{ - dir = 1; - health = 300 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance/research) "nOz" = ( /obj/structure/surface/table/woodentable/fancy, /obj/structure/machinery/computer/station_alert{ @@ -15640,22 +21362,23 @@ }, /turf/open/floor/wood, /area/varadero/interior/administration) -"nOA" = ( -/obj/structure/machinery/power/apc{ - dir = 8; - pixel_x = -24; - start_charge = 0 - }, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "green" - }, -/area/varadero/interior/hall_NW) "nOI" = ( /obj/effect/landmark/xeno_hive_spawn, /obj/effect/landmark/ert_spawns/groundside_xeno, -/turf/open/auto_turf/sand_white/layer0, +/turf/open/gm/dirt, /area/varadero/interior_protected/caves) +"nOM" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/coast/north, +/area/varadero/exterior/pontoon_beach) "nOO" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/segment, @@ -15671,6 +21394,21 @@ /obj/item/tool/lighter/zippo/gold, /turf/open/floor/carpet, /area/varadero/interior/research) +"nPx" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/largecrate/random, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/interior/comms1) "nPE" = ( /obj/structure/safe, /obj/item/reagent_container/food/drinks/bottle/whiskey, @@ -15709,6 +21447,13 @@ }, /turf/open/floor/carpet, /area/varadero/interior/library) +"nPK" = ( +/obj/structure/closet/crate/trashcart, +/obj/item/trash/chips, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/cargo) "nPR" = ( /obj/structure/machinery/light{ dir = 4 @@ -15730,7 +21475,7 @@ pixel_y = 22 }, /turf/closed/wall/r_wall/unmeltable, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/dock_control) "nQH" = ( /obj/structure/machinery/light{ dir = 4 @@ -15740,11 +21485,49 @@ icon_state = "purple" }, /area/varadero/interior/research) +"nQR" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/comms4) +"nRk" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal/med_large_stack, +/obj/item/trash/boonie, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/cargo) +"nRy" = ( +/obj/structure/bed/chair, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "green" + }, +/area/varadero/interior/mess) "nRH" = ( /turf/open/gm/dirt{ icon_state = "desert3" }, /area/varadero/interior/maintenance/north) +"nRP" = ( +/obj/structure/machinery/power/apc{ + dir = 1; + pixel_y = 24; + start_charge = 0 + }, +/obj/item/cell/high, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "yellow" + }, +/area/varadero/interior/technical_storage) "nRT" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -15753,6 +21536,16 @@ icon_state = "wredfull" }, /area/varadero/interior/medical) +"nRU" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) "nRW" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -15766,44 +21559,12 @@ /obj/structure/largecrate/random/case, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/maintenance/research) -"nSv" = ( -/obj/structure/prop/ice_colony/dense/planter_box/hydro{ - pixel_x = -17; - pixel_y = -19 - }, -/obj/structure/flora/bush/desert{ - icon_state = "tree_2"; - pixel_x = -18; - pixel_y = -8 - }, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) "nSP" = ( /obj/structure/sign/safety/airlock{ pixel_x = 8 }, /turf/closed/wall, /area/varadero/interior/medical) -"nSY" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk, -/obj/structure/machinery/alarm{ - pixel_y = 24 - }, -/obj/effect/decal/warning_stripes/asteroid{ - dir = 8; - icon_state = "warning_c" - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/hall_N) -"nSZ" = ( -/obj/item/ammo_magazine/revolver/pkd, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/oob) "nTj" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1; @@ -15811,15 +21572,10 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, -/area/varadero/interior/laundry) -"nTq" = ( -/obj/structure/stairs/perspective{ - color = "#6b675e"; - icon_state = "p_stair_full" +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior_protected/vessel) +/area/varadero/interior/laundry) "nTG" = ( /turf/closed/wall/r_wall, /area/varadero/interior/hall_SE) @@ -15850,19 +21606,13 @@ /obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/shiva, /area/varadero/interior/technical_storage) -"nUv" = ( -/obj/structure/prop/invuln/minecart_tracks{ - dir = 8 - }, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +"nUf" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "multi_tiles" }, -/area/varadero/interior/oob) +/area/varadero/interior/electrical) "nVk" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/prop/invuln/overhead_pipe{ @@ -15888,6 +21638,26 @@ icon_state = "warnplate" }, /area/varadero/interior/disposals) +"nVv" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 10; + pixel_y = 22; + indestructible = 1; + unacidable = 1; + layer = 4.1 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/comms4) "nVy" = ( /obj/structure/closet/coffin, /turf/open/floor/shiva{ @@ -15904,23 +21674,21 @@ icon_state = "green" }, /area/varadero/interior/hall_NW) -"nWA" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +"nWS" = ( +/obj/item/stack/tile/plasteel{ + pixel_x = 8; + pixel_y = 6 }, -/obj/structure/machinery/light/small, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/obj/structure/machinery/storm_siren{ + pixel_y = 5 }, -/area/varadero/interior/maintenance/research) +/turf/open/floor/wood, +/area/varadero/interior/hall_SE) "nXB" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/paper_bin{ pixel_y = 6 }, -/obj/structure/machinery/alarm{ - pixel_y = 24 - }, /turf/open/floor/shiva{ icon_state = "floor3" }, @@ -15945,6 +21713,16 @@ icon_state = "asteroidplating" }, /area/varadero/interior/hall_NW) +"nYx" = ( +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "purple" + }, +/area/varadero/interior/research) "nYy" = ( /obj/structure/machinery/light/small, /turf/open/floor/shiva{ @@ -15960,21 +21738,36 @@ dir = 1 }, /area/varadero/interior/cargo) -"nYP" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/effect/landmark/corpsespawner/colonist/burst, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance) "nZd" = ( /obj/effect/landmark/survivor_spawner, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/medical) +"nZi" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/varadero/interior/medical) "nZk" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -15983,31 +21776,12 @@ /obj/structure/barricade/handrail/wire, /turf/open/floor/wood, /area/varadero/interior/court) -"nZZ" = ( -/obj/structure/showcase{ - color = "#95948B"; - desc = "A grey statue dawned in ancient armor, it stares into your soul."; - icon = 'icons/mob/humans/species/r_synthetic.dmi'; - icon_state = "Synthetic_Template"; - name = "Eternal guardian" - }, -/obj/item/clothing/suit/armor/yautja_flavor{ - anchored = 1 - }, -/obj/item/weapon/harpoon/yautja{ - anchored = 1; - name = "Alien Harpoon"; - pixel_x = 6 - }, -/obj/item/clothing/mask/yautja_flavor{ - anchored = 1; - unacidable = 0 - }, -/turf/open/floor/corsat{ - dir = 1; - icon_state = "squareswood" +"nZP" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior_protected/vessel) +/area/varadero/interior/caves/east) "oam" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -16021,12 +21795,14 @@ icon_state = "green" }, /area/varadero/interior/hall_SE) -"oaG" = ( -/obj/structure/pipes/standard/manifold/fourway/hidden/green, -/turf/open/floor/shiva{ - icon_state = "floor3" +"oaO" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/item/storage/firstaid/regular{ + pixel_x = 4; + pixel_y = -6 }, -/area/varadero/interior/medical) +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) "oaR" = ( /turf/open/floor/wood{ icon_state = "wood-broken6" @@ -16041,19 +21817,31 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"obR" = ( -/obj/structure/machinery/light{ - dir = 1 +"obr" = ( +/obj/effect/overlay/palmtree_r{ + icon_state = "palm2" }, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz1_near) +"obN" = ( +/obj/structure/machinery/door_control{ + id = "undergroundhangarsouth"; + name = "South Dock Door"; + pixel_x = -32; + pixel_y = -18; + indestructible = 1 + }, +/turf/open/floor/plating/icefloor{ + dir = 1; + icon_state = "warnplate" }, +/area/varadero/exterior/lz1_near) +"obS" = ( +/obj/structure/window/framed/colony/reinforced, /turf/open/floor/shiva{ - dir = 8; - icon_state = "yellowfull" + icon_state = "snow_mat" }, -/area/varadero/interior/electrical) +/area/varadero/interior/security) "ocr" = ( /obj/structure/bed, /obj/item/bedsheet/orange, @@ -16062,6 +21850,35 @@ icon_state = "snow_mat" }, /area/varadero/interior/security) +"ocz" = ( +/obj/structure/prop/structure_lattice{ + dir = 1; + health = 300 + }, +/obj/structure/prop/structure_lattice{ + dir = 1; + layer = 3.1; + pixel_y = 10 + }, +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + icon_state = "vent4"; + pixel_y = 25 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) +"ocQ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/weapon/gun/shotgun/pump, +/obj/item/ammo_magazine/shotgun/buckshot{ + pixel_x = 6; + pixel_y = -4 + }, +/turf/open/floor/shiva{ + icon_state = "redfull" + }, +/area/varadero/interior/medical) "odw" = ( /obj/structure/machinery/photocopier, /obj/item/storage/firstaid/regular{ @@ -16088,6 +21905,22 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) +"oef" = ( +/obj/effect/decal/warning_stripes/asteroid{ + icon_state = "warning_s" + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) +"oep" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/prop/rock/brown, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) "oeF" = ( /obj/structure/barricade/wooden{ dir = 8 @@ -16107,23 +21940,17 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) -"ofs" = ( -/obj/structure/surface/rack, -/obj/item/storage/firstaid/adv{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/storage/firstaid/adv, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/comms2) -"ofu" = ( -/obj/item/shard, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, +"ofC" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/caves/east) +"ofJ" = ( +/obj/structure/shuttle/engine/router{ + dir = 4; + unacidable = 0 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/vessel) "oga" = ( /obj/structure/bed/chair{ dir = 8 @@ -16160,11 +21987,6 @@ }, /turf/open/floor/carpet, /area/varadero/interior/hall_SE) -"ogX" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior_protected/caves/digsite) "ohi" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/handcuffs, @@ -16182,20 +22004,58 @@ icon_state = "red" }, /area/varadero/interior/security) +"ohC" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/coast/beachcorner2/south_west, +/area/varadero/exterior/pontoon_beach) "ohM" = ( /obj/structure/barricade/wooden{ dir = 8 }, +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) +"oiB" = ( +/obj/structure/machinery/firealarm{ + pixel_y = 24 + }, +/obj/structure/surface/table/woodentable, +/obj/item/reagent_container/food/drinks/bottle/vodka/chess/b_bishop{ + pixel_x = -10; + pixel_y = 15 + }, +/obj/item/reagent_container/blood/empty{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/storage/box/cups{ + pixel_x = -13; + pixel_y = 3 + }, +/turf/open/floor/prison/chapel_carpet{ + dir = 1; + icon_state = "doubleside" + }, +/area/varadero/interior/chapel) "oiM" = ( /turf/open/floor/shiva{ dir = 8; icon_state = "multi_tiles" }, /area/varadero/interior/administration) +"ojm" = ( +/obj/structure/closet/toolcloset, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) "ojF" = ( /obj/item/tool/surgery/bonegel/predatorbonegel, /turf/open/shuttle{ @@ -16212,32 +22072,27 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/obj/structure/machinery/door/airlock/almayer/maint{ - name = "\improper Underground Maintenance"; - req_access_txt = "100"; - req_one_access = null +/obj/structure/window/framed/colony, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/floor/plating, /area/varadero/interior/maintenance) -"ojK" = ( -/obj/effect/decal/cleanable/blood/gibs/xeno/up, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior_protected/vessel) "oke" = ( /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/cargo) -"okm" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 +"okf" = ( +/obj/structure/surface/rack, +/obj/item/storage/firstaid/adv{ + pixel_x = 3; + pixel_y = 5 }, -/turf/open/floor/shiva{ - dir = 10; - icon_state = "blue" +/obj/item/storage/firstaid/adv, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/administration) +/area/varadero/interior/maintenance/north) "okB" = ( /obj/structure/surface/rack, /obj/effect/landmark/objective_landmark/medium, @@ -16260,12 +22115,32 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) +"ola" = ( +/obj/structure/machinery/power/apc{ + dir = 1; + pixel_y = 24; + start_charge = 0 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) "olD" = ( /turf/open/floor{ dir = 4; icon_state = "asteroidwarning" }, /area/varadero/exterior/lz1_near) +"olP" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 2; + name = "\improper Underground Requesitions Freezer"; + req_access_txt = "100" + }, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/varadero/interior/cargo) "olU" = ( /obj/structure/machinery/door/airlock/almayer/security/glass{ dir = 1; @@ -16280,6 +22155,10 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) +"onj" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/north) "onr" = ( /obj/structure/machinery/landinglight/ds2/delayone{ dir = 4 @@ -16310,14 +22189,28 @@ }, /turf/open/floor/carpet, /area/varadero/interior/library) -"opA" = ( -/obj/structure/machinery/light/small, -/turf/open/gm/dirt, -/area/varadero/interior/comms3) -"opW" = ( -/obj/structure/machinery/light{ - dir = 1 +"opd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/wood{ + icon_state = "wood-broken3" + }, +/area/varadero/interior/beach_bar) +"opP" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/item/shard{ + icon_state = "medium" }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) +"opW" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/stack/sheet/wood{ pixel_x = -14 @@ -16335,14 +22228,17 @@ }, /turf/open/floor/wood, /area/varadero/interior/administration) -"opY" = ( -/obj/structure/machinery/light, -/obj/structure/closet/crate/hydroponics/prespawned, -/obj/effect/landmark/objective_landmark/medium, +"oqh" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, /turf/open/floor/shiva{ - icon_state = "blue" + dir = 8; + icon_state = "yellowfull" }, -/area/varadero/interior/technical_storage) +/area/varadero/interior/cargo) "orb" = ( /obj/structure/bed/chair{ dir = 4 @@ -16351,6 +22247,13 @@ icon_state = "floor3" }, /area/varadero/interior/security) +"orr" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) "orH" = ( /obj/structure/filingcabinet{ pixel_x = -8; @@ -16358,14 +22261,13 @@ }, /turf/open/floor/wood, /area/varadero/interior/administration) -"orL" = ( -/obj/structure/blocker/invisible_wall, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 +"orK" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/obj/structure/machinery/storm_siren{ + pixel_y = 5 }, -/turf/open/gm/river, -/area/varadero/interior/oob) +/turf/open/gm/dirt, +/area/varadero/interior/maintenance/north) "orT" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -16376,6 +22278,11 @@ icon_state = "greenfull" }, /area/varadero/interior/hall_SE) +"osn" = ( +/obj/effect/landmark/xeno_hive_spawn, +/obj/effect/landmark/ert_spawns/groundside_xeno, +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves/swcaves) "osr" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 @@ -16384,12 +22291,29 @@ icon_state = "asteroidplating" }, /area/varadero/interior/electrical) +"ost" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/hall_N) +"osE" = ( +/obj/structure/largecrate/random/barrel, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "osX" = ( /obj/structure/machinery/shower{ dir = 8 }, /turf/open/floor/interior/plastic, /area/varadero/interior/laundry) +"otH" = ( +/obj/structure/closet/crate/construction, +/obj/item/tool/pickaxe, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "otL" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 4 @@ -16409,6 +22333,12 @@ "ouy" = ( /turf/closed/wall/r_wall, /area/varadero/interior/caves/east) +"ouP" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "ouV" = ( /obj/effect/spawner/random/bomb_supply, /turf/open/floor/shiva{ @@ -16433,6 +22363,24 @@ }, /turf/open/gm/dirt, /area/varadero/interior/maintenance/north) +"ovT" = ( +/obj/structure/blocker/invisible_wall/water, +/turf/open/gm/coast/beachcorner2/south_east, +/area/varadero/exterior/farocean) +"owk" = ( +/obj/structure/machinery/light/small, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 1; + pixel_y = 7 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) +"owM" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/closed/wall/r_wall, +/area/varadero/interior_protected/caves/central) "owY" = ( /obj/structure/window/reinforced{ dir = 4; @@ -16468,13 +22416,28 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) -"oxs" = ( -/obj/structure/surface/rack, -/obj/item/storage/pouch/medkit/full_advanced, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +"oxi" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/airlock/almayer/command{ + dir = 1; + name = "\improper Underground Administration Office"; + req_access_txt = "100" }, -/area/varadero/interior/maintenance) +/turf/open/floor/wood, +/area/varadero/interior/administration) +"oxA" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "greenfull" + }, +/area/varadero/interior/hall_N) "oyb" = ( /obj/structure/prop/structure_lattice{ density = 0; @@ -16492,6 +22455,20 @@ dir = 1 }, /area/varadero/interior/research) +"oyl" = ( +/obj/structure/stairs/perspective{ + color = "#b29082"; + dir = 10; + icon_state = "p_stair_full" + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"oyv" = ( +/obj/item/device/flashlight, +/turf/open/gm/dirt{ + icon_state = "desert2" + }, +/area/varadero/exterior/lz2_near) "oyx" = ( /obj/structure/bed/chair{ icon_state = "chair_alt" @@ -16529,6 +22506,23 @@ icon_state = "yellow" }, /area/varadero/interior/hall_SE) +"ozC" = ( +/obj/item/weapon/gun/shotgun/pump, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/hall_SE) +"ozD" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/comms4) "oAm" = ( /obj/structure/toilet{ dir = 1 @@ -16538,31 +22532,59 @@ icon_state = "white" }, /area/varadero/interior/toilets) -"oAS" = ( -/obj/structure/prop/structure_lattice{ - dir = 4; - health = 300 - }, -/obj/structure/prop/structure_lattice{ - dir = 4; - layer = 3.1; - pixel_y = 10 - }, -/obj/structure/prop/invuln/ice_prefab/roof_greeble{ - icon_state = "vent4"; - pixel_y = 25 +"oAC" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/gm/coast/beachcorner2/north_east, +/area/varadero/exterior/pontoon_beach) +"oAE" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves) +"oAJ" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -1; + pixel_y = 9; + indestructible = 1; + unacidable = 1 }, -/area/varadero/interior/oob) +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) "oBj" = ( /obj/structure/machinery/vending/cigarette/colony, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/hall_N) +"oBq" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) +"oBs" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellowfull" + }, +/area/varadero/interior/cargo) "oBG" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, /turf/open/floor/shiva{ dir = 5; icon_state = "green" @@ -16637,19 +22659,19 @@ icon_state = "desert0" }, /area/varadero/exterior/lz1_near) -"oDg" = ( -/obj/structure/machinery/power/apc{ - dir = 1; - pixel_y = 24; - start_charge = 0 +"oDz" = ( +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/area/varadero/interior/hall_SE) +"oDB" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/machinery/storm_siren{ + pixel_y = 5 }, -/area/varadero/interior/comms3) -"oDF" = ( -/turf/closed/wall/r_wall/elevator/arrivals, -/area/varadero/interior/records) +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "oDN" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -16663,6 +22685,15 @@ /obj/structure/sign/safety/hvac_old, /turf/closed/wall, /area/varadero/interior/cargo) +"oDU" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 10; + pixel_y = 2; + indestructible = 1; + unacidable = 1 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "oDX" = ( /obj/structure/platform_decoration/kutjevo{ dir = 8 @@ -16675,37 +22706,16 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) -"oEl" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/barricade/handrail{ - desc = "Your platforms look pretty heavy king, let me support them for you."; - dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" - }, -/turf/open/gm/river, -/area/varadero/interior/maintenance) -"oEx" = ( -/obj/structure/prop/ice_colony/dense/planter_box/plated{ - dir = 9; - icon_state = "planter_box_soil" - }, -/obj/structure/flora/bush/ausbushes/pointybush{ - icon_state = "pointybush_3"; - pixel_y = 11 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance/research) "oET" = ( /turf/closed/wall/r_wall/unmeltable, /area/varadero/interior/maintenance/security) +"oEX" = ( +/obj/structure/closet/crate, +/obj/item/clothing/head/helmet, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "oFd" = ( /obj/structure/bed/chair/office/dark{ dir = 4; @@ -16732,6 +22742,16 @@ "oGv" = ( /turf/open/gm/dirt, /area/varadero/exterior/pontoon_beach) +"oHo" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance) +"oIc" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/coast/beachcorner2/north_east, +/area/varadero/exterior/comms4) "oIq" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -16748,11 +22768,26 @@ icon_state = "yellowfull" }, /area/varadero/interior/electrical) -"oIN" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) +"oJb" = ( +/obj/structure/stairs/perspective{ + color = "#b29082"; + dir = 8; + icon_state = "p_stair_ew_full_cap"; + layer = 3.5 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) +"oJm" = ( +/obj/structure/machinery/door/airlock/almayer/secure{ + dir = 2; + name = "Underground Hangar Power Substation"; + req_access = null + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/interior/maintenance/north) "oJv" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -16766,14 +22801,29 @@ dir = 1 }, /area/varadero/interior/cargo) -"oJY" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/obj/structure/machinery/light, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" +"oJW" = ( +/obj/structure/closet/firecloset/full, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/maintenance/security) +"oJX" = ( +/obj/item/stack/sheet/metal, +/obj/structure/shuttle/engine/heater{ + dir = 8; + unacidable = 0 + }, +/obj/item/device/flashlight/slime, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/vessel) +"oKi" = ( +/obj/structure/surface/table/reinforced, +/obj/effect/landmark/objective_landmark/medium, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "oKo" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -16792,17 +22842,17 @@ }, /turf/open/floor/wood, /area/varadero/interior/hall_SE) -"oKt" = ( -/obj/structure/blocker/invisible_wall, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 +"oKx" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = 24 }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/obj/structure/largecrate/random, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" }, -/turf/open/gm/river, -/area/varadero/interior/oob) +/area/varadero/interior/hall_SE) "oKy" = ( /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" @@ -16812,6 +22862,16 @@ icon_state = "squareswood" }, /area/varadero/interior_protected/vessel) +"oKN" = ( +/obj/item/weapon/gun/shotgun/pump, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "red" + }, +/area/varadero/interior/hall_N) "oLa" = ( /obj/item/trash/barcardine, /turf/open/floor{ @@ -16825,6 +22885,23 @@ }, /turf/closed/wall, /area/varadero/interior/cargo) +"oLZ" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) "oMa" = ( /obj/structure/surface/table, /obj/item/storage/pill_bottle/packet/bicaridine, @@ -16838,6 +22915,11 @@ }, /turf/open/gm/dirt, /area/varadero/exterior/lz1_near) +"oMg" = ( +/obj/effect/landmark/objective_landmark/medium, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "oMl" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -16852,22 +22934,18 @@ icon_state = "floor3" }, /area/varadero/interior/hall_N) -"oML" = ( -/obj/structure/prop/ice_colony/dense/planter_box/hydro{ - density = 0 - }, -/obj/structure/flora/bush/desert{ - pixel_y = 12 +"oNa" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/obj/structure/platform_decoration/kutjevo, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" }, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) +/area/varadero/exterior/farocean) "oNy" = ( /turf/open/shuttle/elevator, /area/varadero/interior/hall_N) -"oOg" = ( -/obj/structure/prop/rock/brown, -/turf/open/gm/river, -/area/varadero/exterior/eastbeach) "oOF" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -16891,17 +22969,6 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) -"oPj" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - name = "\improper Underground Maintenance"; - req_access = null; - req_access_txt = null; - req_one_access = null - }, -/turf/open/floor/plating, -/area/varadero/interior/maintenance/research) "oPr" = ( /obj/structure/surface/table/reinforced/prison, /obj/effect/landmark/objective_landmark/close, @@ -16917,25 +22984,18 @@ "oPV" = ( /turf/open/floor/plating, /area/varadero/interior/maintenance/security) -"oRj" = ( -/obj/item/facepaint/sunscreen_stick, -/turf/open/gm/dirt{ - icon_state = "desert0" - }, -/area/varadero/exterior/pontoon_beach) -"oRo" = ( -/obj/item/reagent_container/food/snacks/carpmeat{ - desc = "Revolting beyond description."; - icon = 'icons/obj/items/fishing_atoms.dmi'; - icon_state = "gullible_toothfish_teeth"; - name = "human-ish teeth"; - pixel_x = 1; - pixel_y = -2 +"oRx" = ( +/obj/structure/closet/crate/secure, +/obj/item/trash/eat, +/obj/item/trash/cheesie, +/obj/item/reagent_container/food/drinks/flask/vacuumflask{ + pixel_x = 4; + pixel_y = 7 }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/area/varadero/interior/oob) +/area/varadero/interior/cargo) "oRB" = ( /obj/structure/closet/hydrant{ pixel_x = -32 @@ -16949,24 +23009,43 @@ icon_state = "floor3" }, /area/varadero/interior/hall_NW) -"oSb" = ( -/obj/structure/prop/ice_colony/dense/planter_box/hydro{ - density = 0; - pixel_x = 11; - pixel_y = 9 +"oRD" = ( +/obj/structure/prop/rock/brown, +/obj/structure/prop/invuln/lattice_prop, +/turf/open/gm/coast/north, +/area/varadero/exterior/pool) +"oRK" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/obj/structure/flora/bush/desert{ - icon_state = "tree_2"; - pixel_x = 10; - pixel_y = 20 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/river, -/area/varadero/interior_protected/caves) +/obj/effect/landmark/objective_landmark/far, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/hall_SE) +"oSe" = ( +/obj/structure/surface/table, +/obj/item/stack/sheet/metal/med_large_stack, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/electrical) "oSX" = ( /obj/structure/window/framed/colony/reinforced, /turf/open/floor/plating, /area/varadero/interior/electrical) +"oTs" = ( +/obj/structure/blocker/fog, +/turf/open/gm/coast/beachcorner2/south_east, +/area/varadero/exterior/farocean) +"oTE" = ( +/obj/item/tool/crowbar/red, +/turf/open/gm/coast/north, +/area/varadero/exterior/pontoon_beach) "oTJ" = ( /obj/structure/machinery/alarm{ dir = 4; @@ -16980,6 +23059,17 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"oTX" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/interior/comms1) "oUh" = ( /obj/structure/cable/heavyduty{ icon_state = "1-2" @@ -17008,6 +23098,15 @@ icon_state = "yellow" }, /area/varadero/interior/electrical) +"oVm" = ( +/obj/structure/surface/rack, +/obj/item/storage/toolbox/electrical, +/obj/item/storage/toolbox/electrical, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellow" + }, +/area/varadero/interior/comms3) "oVn" = ( /turf/open/floor/shiva{ dir = 4; @@ -17039,6 +23138,20 @@ /obj/effect/landmark/monkey_spawn, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/caves/north_research) +"oWf" = ( +/obj/structure/machinery/floodlight/landing{ + desc = "A powerful light stationed near construction zones to provide better visibility."; + name = "Construction Light" + }, +/obj/effect/decal/warning_stripes, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastocean) +"oWg" = ( +/obj/structure/prop/rock/brown, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz1_near) "oWr" = ( /obj/structure/machinery/power/apc{ dir = 1; @@ -17047,13 +23160,20 @@ }, /turf/open/floor/wood, /area/varadero/interior/administration) -"oWA" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +"oWs" = ( +/obj/effect/decal/strata_decals/grime/grime4, +/obj/item/reagent_container/food/drinks/bottle/sake{ + layer = 3.1; + pixel_x = 13; + pixel_y = 21 }, -/obj/structure/blocker/invisible_wall/water, -/turf/open/gm/river/ocean, -/area/varadero/interior/oob) +/obj/item/ammo_magazine/rifle, +/turf/open/floor/carpet, +/area/varadero/interior/bunks) +"oWx" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/digsite) "oWO" = ( /obj/structure/toilet, /turf/open/floor{ @@ -17084,6 +23204,10 @@ icon_state = "snow_mat" }, /area/varadero/interior/maintenance) +"oXo" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves/digsite) "oXp" = ( /obj/structure/machinery/vending/snack, /turf/open/floor/shiva{ @@ -17091,6 +23215,12 @@ icon_state = "red" }, /area/varadero/interior/security) +"oXw" = ( +/obj/docking_port/stationary/marine_dropship/lz1{ + name = "LZ1: Pontoon Dock" + }, +/turf/open/floor/plating/icefloor, +/area/varadero/exterior/lz1_near) "oXC" = ( /obj/structure/surface/table, /obj/structure/prop/server_equipment/laptop/on, @@ -17125,16 +23255,6 @@ icon_state = "red" }, /area/varadero/interior/medical) -"oZl" = ( -/obj/item/clothing/ears/earmuffs{ - layer = 3.1; - pixel_x = 2; - pixel_y = 18 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior_protected/caves) "oZw" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/segment, @@ -17151,6 +23271,20 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) +"oZJ" = ( +/obj/structure/fence, +/turf/open/gm/coast/south, +/area/varadero/exterior/lz2_near) +"paq" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) "paB" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/communications{ @@ -17183,9 +23317,13 @@ /obj/effect/decal/strata_decals/grime/grime4, /turf/open/floor/wood, /area/varadero/interior/bunks) -"pbk" = ( -/turf/open/floor/plating, -/area/varadero/interior/cargo) +"pbf" = ( +/obj/structure/closet/secure_closet/personal, +/obj/item/paper/research_notes, +/obj/item/paper/research_notes, +/obj/item/clothing/accessory/storage/black_vest/brown_vest, +/turf/open/floor/wood, +/area/varadero/interior/administration) "pbp" = ( /turf/open/floor{ dir = 1; @@ -17207,19 +23345,21 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) -"pcg" = ( -/obj/structure/machinery/door_control{ - id = "undergroundhangarpower"; - name = "Underground Hangar Lock"; - pixel_y = -24 - }, -/obj/structure/machinery/power/terminal{ - dir = 8 +"pbM" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper Underground Staff Canteen" }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/mess) +"pbT" = ( +/obj/structure/prop/rock/brown, +/obj/effect/decal/cleanable/dirt, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/east) "pco" = ( /obj/structure/surface/rack, /obj/item/tool/surgery/scalpel, @@ -17244,30 +23384,12 @@ icon_state = "squareswood" }, /area/varadero/interior_protected/vessel) -"pcJ" = ( -/obj/structure/machinery/power/apc{ - dir = 1; - pixel_y = 24; - start_charge = 0 - }, -/turf/open/floor/shiva{ - icon_state = "green" - }, -/area/varadero/interior/hall_N) "pcK" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/shiva{ icon_state = "yellow" }, /area/varadero/interior/technical_storage) -"pcQ" = ( -/obj/structure/bed, -/obj/item/bedsheet/orange, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "snow_mat" - }, -/area/varadero/interior/security) "pdc" = ( /obj/structure/largecrate/random{ anchored = 1 @@ -17276,6 +23398,10 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/caves) +"pdn" = ( +/obj/item/tool/shovel/spade, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) "pdr" = ( /obj/structure/surface/table, /obj/item/trash/chips{ @@ -17286,6 +23412,38 @@ icon_state = "green" }, /area/varadero/interior/hall_SE) +"pdK" = ( +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/lz2_near) +"pea" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/coast/beachcorner2/north_east, +/area/varadero/interior/caves/north_research) +"per" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) "peA" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -17295,12 +23453,9 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) -"peE" = ( -/obj/structure/bookcase, -/turf/open/floor{ - icon_state = "wood" - }, -/area/varadero/interior/library) +"pfd" = ( +/turf/open/gm/coast/beachcorner/north_east, +/area/varadero/exterior/pontoon_beach) "pfr" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 @@ -17325,6 +23480,18 @@ icon_state = "freezerfloor" }, /area/varadero/interior/cargo) +"pgg" = ( +/obj/item/tool/pickaxe, +/turf/open/gm/coast/south, +/area/varadero/exterior/pontoon_beach) +"pgn" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice1"; + pixel_x = -16; + pixel_y = -8 + }, +/turf/open/gm/coast/beachcorner/north_west, +/area/varadero/exterior/eastbeach) "phd" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/medium, @@ -17333,6 +23500,16 @@ icon_state = "red" }, /area/varadero/interior/security) +"phk" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"phw" = ( +/obj/structure/barricade/handrail/wire{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) "phA" = ( /obj/structure/flora/bush/ausbushes/var3/brflowers{ icon_state = "brflowers_2" @@ -17356,6 +23533,18 @@ }, /turf/open/floor/wood, /area/varadero/interior/security) +"pjk" = ( +/obj/structure/sink{ + pixel_y = 15 + }, +/obj/structure/mirror{ + pixel_y = 28 + }, +/obj/effect/decal/cleanable/vomit, +/turf/open/floor{ + icon_state = "white" + }, +/area/varadero/interior/toilets) "pjm" = ( /obj/effect/decal/remains/xeno{ pixel_y = -25 @@ -17368,6 +23557,7 @@ /obj/structure/pipes/vents/pump{ dir = 4 }, +/obj/item/book/manual/research_and_development, /turf/open/floor/carpet, /area/varadero/interior/library) "pjs" = ( @@ -17376,23 +23566,31 @@ icon_state = "floor3" }, /area/varadero/interior/research) -"pjz" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/tool/stamp{ - icon_state = "stamp-ce" +"pjD" = ( +/turf/open/gm/coast/beachcorner2/south_west, +/area/varadero/exterior/eastocean) +"pjH" = ( +/obj/structure/surface/table, +/obj/item/paper/janitor{ + pixel_y = 8 }, -/obj/structure/machinery/firealarm{ - dir = 4; - pixel_x = 24 +/obj/item/circuitboard/apc, +/turf/open/floor/shiva, +/area/varadero/interior/technical_storage) +"pkj" = ( +/obj/item/tool/weldingtool, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"pkl" = ( +/obj/structure/prop/ice_colony/dense/planter_box/hydro{ + desc = "A high-power hydroelectric generator."; + name = "hydroelectric generator" }, -/turf/open/floor/shiva{ - icon_state = "floor3" +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" }, -/area/varadero/interior/records) -"pkn" = ( -/obj/structure/window/framed/colony/reinforced/hull, -/turf/open/floor/plating, -/area/varadero/interior/cargo) +/area/varadero/exterior/farocean) "pku" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -17413,14 +23611,7 @@ /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/maintenance/research) -"pkR" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "red" - }, -/area/varadero/interior/morgue) +/area/varadero/interior/cargo) "pkT" = ( /obj/structure/machinery/power/port_gen/pacman, /turf/open/floor{ @@ -17445,13 +23636,41 @@ icon_state = "purple" }, /area/varadero/interior/research) -"plg" = ( -/obj/structure/machinery/light, +"pll" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"plm" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno, /turf/open/floor{ dir = 1; icon_state = "asteroidfloor" }, -/area/varadero/interior/comms1) +/area/varadero/exterior/lz1_near) +"plq" = ( +/turf/open/gm/coast/beachcorner2/north_east, +/area/varadero/exterior/eastocean) +"plF" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/item/reagent_container/food/snacks/carpmeat{ + desc = "Revolting beyond description."; + icon = 'icons/obj/items/fishing_atoms.dmi'; + icon_state = "gullible_toothfish_teeth"; + name = "human-ish teeth"; + pixel_x = 1; + pixel_y = -2 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/comms4) "plN" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -17463,9 +23682,17 @@ "plT" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) +"pmh" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/floor{ + icon_state = "white" + }, +/area/varadero/interior/toilets) "pmy" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/ashtray/plastic, @@ -17484,43 +23711,39 @@ icon_state = "bluefull" }, /area/varadero/interior/administration) -"poh" = ( -/obj/item/paper, -/obj/effect/landmark/corpsespawner/colonist/random/burst, -/turf/open/floor/carpet, -/area/varadero/interior/chapel) -"pol" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/carpet, -/area/varadero/interior/library) -"pom" = ( -/obj/item/weapon/gun/revolver/m44/custom/pkd_special{ - pixel_x = 1; - pixel_y = 1 - }, +"pmM" = ( /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/oob) -"pop" = ( -/obj/structure/prop/invuln/minecart_tracks{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/area/varadero/exterior/monsoon) +"pmW" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, -/obj/structure/prop/invuln/minecart_tracks{ - dir = 5 +/area/varadero/exterior/eastbeach) +"pnn" = ( +/obj/item/ammo_magazine/shotgun/slugs, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" }, -/obj/structure/platform_decoration/kutjevo{ - dir = 8 +/area/varadero/interior/research) +"pnL" = ( +/obj/structure/machinery/light, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 }, -/obj/structure/platform_decoration/kutjevo, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellowfull" }, -/area/varadero/interior/oob) +/area/varadero/interior/comms3) +"pol" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/carpet, +/area/varadero/interior/library) "pot" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice12"; @@ -17532,6 +23755,17 @@ icon_state = "green" }, /area/varadero/interior/hall_SE) +"pox" = ( +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/pontoon_beach) +"poz" = ( +/obj/structure/prop/rock/brown, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/hall_SE) "poC" = ( /obj/item/reagent_container/food/snacks/eat_bar, /obj/item/reagent_container/food/snacks/eat_bar{ @@ -17553,12 +23787,6 @@ icon_state = "yellow" }, /area/varadero/interior/electrical) -"poK" = ( -/obj/structure/tunnel{ - id = "construction_tunnel" - }, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior/caves/east) "poU" = ( /obj/structure/disposalpipe/segment{ dir = 8 @@ -17567,6 +23795,10 @@ icon_state = "floor3" }, /area/varadero/interior/hall_SE) +"ppl" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/swcaves) "ppw" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -17575,18 +23807,29 @@ icon_state = "floor3" }, /area/varadero/interior/security) -"ppY" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 4 +"pqf" = ( +/obj/structure/window/phoronreinforced{ + dir = 4; + icon_state = "phoronrwindow" }, -/turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" + }, +/area/varadero/interior_protected/vessel) "pqj" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /turf/open/floor/carpet, /area/varadero/interior/records) +"pqC" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "green" + }, +/area/varadero/interior/hall_SE) "pqG" = ( /obj/structure/machinery/firealarm{ dir = 8; @@ -17633,6 +23876,13 @@ icon_state = "red" }, /area/varadero/interior/medical) +"prl" = ( +/obj/item/grown/log, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"prC" = ( +/turf/open/gm/coast/beachcorner/south_east, +/area/varadero/exterior/eastbeach) "prY" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -17652,6 +23902,20 @@ }, /turf/open/floor/carpet, /area/varadero/interior/security) +"psd" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz1_near) +"psk" = ( +/obj/structure/closet/secure_closet/bar, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/varadero/interior/beach_bar) "pth" = ( /obj/structure/surface/rack, /obj/item/tool/pickaxe/plasmacutter, @@ -17665,12 +23929,37 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) +"ptp" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/comms4) "ptw" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ icon_state = "multi_tiles" }, /area/varadero/interior/laundry) +"ptC" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Underground Maintenance"; + req_one_access = null; + req_access = null + }, +/turf/open/floor/plating, +/area/varadero/interior/maintenance/north) +"ptM" = ( +/obj/effect/spawner/random/toolbox, +/turf/open/floor{ + icon_state = "white" + }, +/area/varadero/interior/laundry) "ptP" = ( /obj/structure/surface/table, /obj/item/device/flashlight/lamp/green{ @@ -17688,20 +23977,16 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) +"pun" = ( +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/gm/dirt{ + icon_state = "desert3" + }, +/area/varadero/exterior/pontoon_beach) "puq" = ( /obj/item/lightstick/variant/planted, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) -"puK" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/medical/glass{ - dir = 1; - name = "\improper Underground Medical Laboratory"; - req_access_txt = "100"; - req_one_access = null - }, -/turf/open/floor/plating, -/area/varadero/interior/medical) "pvk" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -17714,8 +23999,26 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "snow_mat" + }, /area/varadero/interior/medical) +"pvs" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance) +"pvQ" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "pwc" = ( /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" @@ -17728,6 +24031,16 @@ icon_state = "squareswood" }, /area/varadero/interior_protected/vessel) +"pxa" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/largecrate/random/mini/ammo{ + pixel_y = 4 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/varadero/interior/dock_control) "pxg" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -17736,11 +24049,6 @@ dir = 1 }, /area/varadero/interior/cargo) -"pxK" = ( -/obj/structure/closet/secure_closet/personal, -/obj/item/paper/research_notes, -/turf/open/floor/wood, -/area/varadero/interior/administration) "pyk" = ( /obj/item/reagent_container/food/snacks/wrapped/barcardine{ pixel_y = 7 @@ -17755,6 +24063,12 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) +"pyz" = ( +/obj/effect/landmark/corpsespawner/colonist/burst, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "pAa" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -17770,13 +24084,13 @@ icon_state = "warnplate" }, /area/varadero/exterior/lz1_near) -"pAu" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - name = "\improper Underground Engineering Locker Room"; - req_access_txt = "100" +"pAX" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" }, -/turf/open/floor/plating, -/area/varadero/interior/electrical) +/area/varadero/exterior/pontoon_beach) "pAZ" = ( /obj/structure/surface/rack, /obj/item/stack/sheet/glass/phoronglass{ @@ -17793,6 +24107,23 @@ icon_state = "red" }, /area/varadero/interior/security) +"pBf" = ( +/obj/structure/prop/rock/brown{ + layer = 2 + }, +/obj/structure/bed{ + can_buckle = 0; + desc = "A lightweight support lattice."; + icon = 'icons/obj/structures/structures.dmi'; + icon_state = "latticefull"; + layer = 2.1; + name = "lattice" + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior_protected/vessel) "pBo" = ( /obj/structure/coatrack, /obj/item/clothing/head/fedora{ @@ -17801,6 +24132,12 @@ }, /turf/open/floor/wood, /area/varadero/interior/security) +"pBx" = ( +/obj/item/device/flashlight, +/turf/open/floor/shiva{ + icon_state = "yellow" + }, +/area/varadero/interior/cargo) "pBK" = ( /obj/structure/filingcabinet{ pixel_x = -8 @@ -17821,6 +24158,11 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) +"pCa" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/coast/south, +/area/varadero/exterior/farocean) "pCc" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/largecrate/random/mini/ammo{ @@ -17831,10 +24173,21 @@ icon_state = "purplefull" }, /area/varadero/interior/research) -"pCj" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited, -/turf/closed/wall/r_wall, -/area/varadero/exterior/lz1_near) +"pCf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper Underground Main Hallway" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/hall_N) "pCp" = ( /obj/structure/pipes/vents/pump{ dir = 8 @@ -17843,13 +24196,6 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_NW) -"pCz" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/toolbox/mechanical/green, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance/security) "pCO" = ( /obj/structure/surface/rack, /obj/item/stack/sheet/mineral/phoron/medium_stack, @@ -17857,6 +24203,15 @@ icon_state = "bcircuit" }, /area/varadero/interior/electrical) +"pCP" = ( +/obj/structure/machinery/door/airlock/almayer/medical/glass{ + dir = 2; + name = "\improper Theta-V Research Laboratory Director's Office"; + req_access = null; + req_one_access = null + }, +/turf/open/floor/carpet, +/area/varadero/interior/maintenance/research) "pCV" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/stack/cable_coil/blue, @@ -17867,6 +24222,10 @@ icon_state = "yellow" }, /area/varadero/interior/electrical) +"pDl" = ( +/obj/structure/girder, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "pDD" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 @@ -17876,6 +24235,28 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_NW) +"pDF" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/obj/structure/closet/firecloset, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) +"pDW" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) +"pDX" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/digsite) "pEE" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -17887,17 +24268,42 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"pGi" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "redfull" +"pFd" = ( +/obj/item/storage/pouch/construction, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 }, -/area/varadero/interior/hall_SE) -"pGs" = ( -/turf/closed/wall/rock/brown, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) +"pFF" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno/limb, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) +"pGc" = ( +/obj/structure/window/framed/colony/reinforced, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/floor/plating, +/area/varadero/interior/research) +"pGi" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "redfull" + }, +/area/varadero/interior/hall_SE) +"pGj" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/coast/beachcorner/north_west, +/area/varadero/exterior/pool) +"pGs" = ( +/turf/closed/wall/rock/brown, /area/varadero/interior/oob) "pGJ" = ( /turf/closed/wall/r_wall, @@ -17912,19 +24318,21 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"pHn" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2; - name = "\improper Underground Requesitions Freezer"; - req_access_txt = "100"; - req_one_access = null +"pIe" = ( +/obj/item/stack/sheet/wood, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/floor/plating, -/area/varadero/interior/cargo) -"pHX" = ( -/obj/structure/prop/rock/brown, -/turf/open/gm/river/ocean, -/area/varadero/interior/oob) +/area/varadero/interior/maintenance/north) +"pIj" = ( +/obj/structure/surface/rack, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "pIz" = ( /obj/structure/surface/table, /obj/item/trash/plate{ @@ -17970,18 +24378,19 @@ icon_state = "floor3" }, /area/varadero/interior/security) -"pJy" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - name = "\improper Underground Maintenance"; - req_access_txt = "100"; - req_one_access = null - }, +"pJp" = ( +/obj/structure/closet/toolcloset, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/electrical) +/area/varadero/interior/maintenance/north) +"pJs" = ( +/obj/effect/decal/cleanable/blood, +/obj/structure/bed/chair{ + icon_state = "chair_alt" + }, +/turf/open/floor/carpet, +/area/varadero/interior/hall_SE) "pJA" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice8"; @@ -17994,17 +24403,14 @@ /area/varadero/interior/maintenance/research) "pJF" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/turf/open/auto_turf/sand_white/layer0, +/turf/open/gm/dirt, /area/varadero/interior_protected/caves) -"pJS" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/engineering{ - dir = 1; - name = "\improper Underground Engineering Locker Room"; - req_access_txt = "100" +"pJQ" = ( +/obj/item/book/manual/evaguide, +/turf/open/floor{ + icon_state = "wood" }, -/turf/open/floor/plating, -/area/varadero/interior/electrical) +/area/varadero/interior/library) "pJZ" = ( /obj/structure/surface/table, /obj/effect/landmark/objective_landmark/medium, @@ -18013,10 +24419,36 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"pKg" = ( +/obj/item/book/manual/nuclear, +/turf/open/floor/carpet, +/area/varadero/interior/library) "pKs" = ( /obj/structure/window/framed/colony, /turf/open/floor/plating, /area/varadero/interior/hall_SE) +"pKK" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves) +"pLp" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) +"pLF" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 4 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance) "pLV" = ( /obj/structure/machinery/alarm{ dir = 4; @@ -18037,40 +24469,59 @@ icon_state = "multi_tiles" }, /area/varadero/interior/morgue) -"pMC" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +"pMy" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 }, -/obj/structure/machinery/light/small{ - dir = 1 +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/obj/structure/bed{ + can_buckle = 0 }, -/area/varadero/interior/maintenance) -"pNn" = ( -/obj/structure/machinery/power/apc{ +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/toy/plush/farwa, +/obj/structure/machinery/light, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/medical) +"pMG" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor{ dir = 8; - pixel_x = -24; - start_charge = 0 + icon_state = "asteroidwarning" }, -/obj/structure/closet/athletic_mixed{ - anchored = 0; - density = 0; - pixel_x = -8; - pixel_y = 22 +/area/varadero/exterior/lz1_near) +"pNa" = ( +/obj/structure/catwalk, +/obj/structure/barricade/handrail/wire{ + layer = 3.01 }, -/obj/structure/closet/athletic_mixed{ - anchored = 0; - density = 0; - pixel_x = 6; - pixel_y = 21 +/turf/open/gm/river/desert/deep{ + base_river_slowdown = 0 }, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "snow_mat" +/area/varadero/interior/maintenance/north) +"pNf" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/area/varadero/interior/maintenance) +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating, +/area/varadero/interior/hall_SE) +"pNk" = ( +/obj/effect/decal/cleanable/blood, +/obj/structure/barricade/wooden, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "pNI" = ( /obj/item/stack/cable_coil/cut{ pixel_x = 6; @@ -18087,13 +24538,50 @@ icon_state = "yellow" }, /area/varadero/interior/electrical) -"pOf" = ( -/obj/structure/dispenser, -/turf/open/floor/shiva{ +"pNR" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/closed/wall/rock/brown, +/area/varadero/exterior/lz2_near) +"pNT" = ( +/obj/structure/barricade/handrail/wire{ + dir = 8; + layer = 3.5 + }, +/obj/structure/platform/kutjevo/smooth{ dir = 1; - icon_state = "yellow" + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/technical_storage) +/obj/structure/prop/structure_lattice{ + density = 0; + desc = "If this is removed, you cannot escape."; + health = 300; + icon_state = "ladder10"; + name = "ladder" + }, +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "blue" + }, +/area/varadero/interior/maintenance) +"pOa" = ( +/obj/structure/largecrate/supply, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) +"pOg" = ( +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "pOz" = ( /obj/structure/machinery/computer/card{ dir = 8 @@ -18108,9 +24596,60 @@ /obj/item/tool/wirecutters/clippers, /turf/open/floor/shiva, /area/varadero/interior/technical_storage) +"pPf" = ( +/obj/structure/surface/table, +/obj/item/prop/helmetgarb/flair_uscm, +/obj/item/storage/box/uscm_mre{ + pixel_x = -4; + pixel_y = 13 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/laundry) +"pPl" = ( +/obj/structure/machinery/light, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/varadero/interior/comms1) "pQp" = ( /turf/closed/wall/r_wall, /area/varadero/interior/technical_storage) +"pQw" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/largecrate/random, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) +"pQF" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "yellow" + }, +/area/varadero/interior/technical_storage) +"pRa" = ( +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/farocean) +"pRb" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/carpet, +/area/varadero/interior/chapel) "pRl" = ( /obj/structure/machinery/door/window/northright{ name = "Disposals Chute" @@ -18144,6 +24683,27 @@ icon_state = "yellowfull" }, /area/varadero/interior/hall_SE) +"pRR" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) +"pRV" = ( +/turf/open/gm/coast/beachcorner2/north_east, +/area/varadero/exterior/comms4) "pRX" = ( /turf/open/floor/shiva{ icon_state = "yellow" @@ -18181,17 +24741,58 @@ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) +"pTg" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) +"pTI" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/lz2_near) "pTO" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" }, +/obj/effect/decal/cleanable/blood/oil/streak, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) -"pTZ" = ( -/obj/structure/machinery/light, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +"pTQ" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/comms4) +"pUi" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" }, +/turf/open/auto_turf/sand_white/layer1, /area/varadero/exterior/lz1_near) "pUW" = ( /obj/item/stack/tile/plasteel{ @@ -18253,18 +24854,6 @@ icon_state = "blue" }, /area/varadero/interior/administration) -"pWI" = ( -/obj/structure/filingcabinet{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/structure/filingcabinet{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/wood, -/area/varadero/exterior/lz1_near) "pXp" = ( /obj/structure/disposalpipe/junction{ dir = 8; @@ -18276,7 +24865,7 @@ /turf/open/floor/shiva{ icon_state = "multi_tiles" }, -/area/varadero/interior/hall_SE) +/area/varadero/interior/hall_N) "pXG" = ( /obj/structure/closet/emcloset, /turf/open/floor/shiva{ @@ -18293,9 +24882,26 @@ icon_state = "floor3" }, /area/varadero/interior/hall_N) +"pXT" = ( +/obj/structure/machinery/landinglight/ds1/spoke{ + pixel_y = -5; + pixel_x = 13 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "pYn" = ( /turf/closed/wall, /area/varadero/interior/records) +"pYt" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice2"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/cargo) "pYv" = ( /turf/open/floor/shiva{ icon_state = "floor3" @@ -18328,6 +24934,18 @@ }, /turf/open/floor/wood, /area/varadero/interior/bunks) +"pYI" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"pYK" = ( +/turf/open/gm/dirt{ + icon_state = "desert1" + }, +/area/varadero/exterior/monsoon) "pYV" = ( /obj/structure/pipes/vents/pump, /obj/structure/prop/invuln/lattice_prop{ @@ -18351,23 +24969,45 @@ icon_state = "floor3" }, /area/varadero/interior/electrical) -"pZq" = ( -/obj/item/tool/shovel/spade, -/turf/open/gm/dirt, -/area/varadero/exterior/pontoon_beach) "pZD" = ( /obj/structure/closet/crate, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) +"pZS" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"pZT" = ( +/turf/open/gm/coast/beachcorner2/north_east, +/area/varadero/exterior/lz2_near) "qaE" = ( /turf/open/floor/wood, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/dock_control) +"qaX" = ( +/obj/structure/window_frame/colony/reinforced, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/east) "qaY" = ( /obj/structure/sign/safety/water, /turf/closed/wall, /area/varadero/interior/library) +"qbX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/item/stack/sheet/metal, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/digsite) "qcC" = ( /obj/structure/stairs/perspective{ color = "#6b675e"; @@ -18392,7 +25032,7 @@ /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/maintenance/security) +/area/varadero/interior/comms2) "qcN" = ( /turf/closed/wall, /area/varadero/interior/medical) @@ -18404,6 +25044,21 @@ icon_state = "multi_tiles" }, /area/varadero/interior/records) +"qdk" = ( +/turf/open/floor/shiva{ + dir = 1; + icon_state = "yellow" + }, +/area/varadero/interior/comms3) +"qdL" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/book/manual/security_space_law{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/clothing/head/helmet, +/turf/open/floor/wood, +/area/varadero/interior/dock_control) "qeh" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 @@ -18441,6 +25096,57 @@ }, /turf/open/floor/wood, /area/varadero/interior/bunks) +"qeK" = ( +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/hall_SE) +"qfb" = ( +/obj/structure/closet/crate/ammo/alt, +/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/cmb{ + pixel_x = -4; + pixel_y = -5 + }, +/obj/item/ammo_magazine/revolver/cmb{ + pixel_x = -4; + pixel_y = -5 + }, +/obj/item/ammo_magazine/revolver/cmb, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/cargo) +"qfr" = ( +/turf/open/gm/dirt, +/area/varadero/exterior/comms4) +"qfu" = ( +/obj/item/stack/sheet/metal, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/east) +"qfC" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/cameras{ + dir = 8; + pixel_y = 6 + }, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = 9; + pixel_y = 1 + }, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) +"qfL" = ( +/obj/item/stack/tile/plasteel{ + pixel_x = -4; + pixel_y = 9 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) "qgm" = ( /turf/open/gm/coast/beachcorner2/north_east, /area/varadero/exterior/pontoon_beach) @@ -18453,17 +25159,15 @@ icon_state = "floor3" }, /area/varadero/interior/hall_N) -"qgP" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/toolbox, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +"qgR" = ( +/obj/item/storage/firstaid/regular{ + pixel_x = 4; + pixel_y = -6 }, -/area/varadero/exterior/lz1_near) -"qhd" = ( -/obj/effect/overlay/palmtree_r, -/turf/closed/wall/rock/brown, -/area/varadero/interior/oob) +/turf/open/floor/shiva{ + icon_state = "red" + }, +/area/varadero/interior/hall_N) "qhF" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/wood, @@ -18480,6 +25184,28 @@ icon_state = "multi_tiles" }, /area/varadero/interior/administration) +"qhO" = ( +/obj/effect/spawner/random/tool, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"qhQ" = ( +/obj/structure/stairs/perspective{ + color = "#b29082"; + icon_state = "p_stair_full" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) +"qhZ" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/security) "qio" = ( /turf/closed/wall/rock/brown, /area/varadero/interior/maintenance) @@ -18490,6 +25216,26 @@ icon_state = "wred" }, /area/varadero/interior/medical) +"qis" = ( +/obj/item/paper{ + pixel_y = -6; + pixel_x = -8; + name = "help"; + desc = "A recent storm washed away any legible text" + }, +/obj/item/tool/pen, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"qiv" = ( +/obj/structure/surface/table, +/obj/item/stack/sheet/plasteel{ + amount = 24 + }, +/turf/open/floor/shiva{ + dir = 10; + icon_state = "yellow" + }, +/area/varadero/interior/cargo) "qiP" = ( /obj/structure/bed/chair/comfy/beige{ dir = 8 @@ -18510,24 +25256,29 @@ icon_state = "multi_tiles" }, /area/varadero/interior/laundry) +"qjg" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/remains/human, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "qjU" = ( /obj/effect/overlay/palmtree_r{ icon_state = "palm2" }, /turf/open/gm/dirt, /area/varadero/exterior/lz1_near) -"qkr" = ( -/obj/structure/surface/table, -/obj/item/prop/helmetgarb/flair_uscm, -/obj/item/storage/box/uscm_mre{ - pixel_x = -4; - pixel_y = 13 - }, -/obj/effect/landmark/objective_landmark/far, -/turf/open/floor/shiva{ - icon_state = "floor3" +"qkq" = ( +/obj/structure/largecrate/random, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"qkF" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/laundry) +/area/varadero/interior/maintenance/north) "qlj" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice3"; @@ -18538,6 +25289,12 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) +"qlw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/monsoon) "qlx" = ( /obj/item/stack/tile/plasteel, /turf/open/floor/carpet, @@ -18549,6 +25306,21 @@ icon_state = "floor3" }, /area/varadero/interior/mess) +"qmF" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) "qnf" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/junction, @@ -18563,14 +25335,6 @@ icon_state = "yellowfull" }, /area/varadero/interior/hall_SE) -"qnn" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ - dir = 1; - name = "\improper Underground Medical Laboratory"; - req_access_txt = "100" - }, -/turf/open/floor/plating, -/area/varadero/interior/medical) "qnp" = ( /obj/item/shard{ icon_state = "large"; @@ -18579,10 +25343,31 @@ }, /turf/open/floor/wood, /area/varadero/interior/hall_SE) +"qnN" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/hall_SE) "qnW" = ( /obj/structure/closet/fireaxecabinet, /turf/closed/wall/r_wall, /area/varadero/interior/electrical) +"qoj" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/effect/overlay/palmtree_r, +/turf/open/gm/dirt, +/area/varadero/exterior/comms4) "qoy" = ( /obj/effect/landmark/objective_landmark/science, /turf/open/floor/shiva{ @@ -18595,16 +25380,9 @@ icon_state = "asteroidwarning" }, /area/varadero/exterior/lz1_near) -"qoS" = ( -/turf/open/floor/shiva{ - dir = 4; - icon_state = "snow_mat" - }, -/area/varadero/interior/security) -"qpg" = ( -/obj/structure/prop/rock/brown, -/turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) +"qoI" = ( +/turf/open/gm/coast/beachcorner/north_west, +/area/varadero/exterior/monsoon) "qps" = ( /obj/structure/machinery/light{ dir = 8 @@ -18623,6 +25401,14 @@ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) +"qpK" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/plating, +/area/varadero/interior/maintenance/north) "qpZ" = ( /turf/open/floor/shiva{ icon_state = "multi_tiles" @@ -18644,41 +25430,86 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) -"qsc" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 +"qqJ" = ( +/obj/structure/sign/safety/bulkhead_door, +/obj/structure/machinery/door_control/brbutton{ + id = "undergroundhangarwest"; + name = "West Dock Door"; + pixel_x = 3; + indestructible = 1 }, -/obj/structure/window/phoronreinforced{ - dir = 4; - icon_state = "phoronrwindow" +/turf/closed/wall/r_wall/unmeltable, +/area/varadero/exterior/lz1_near) +"qqM" = ( +/obj/structure/largecrate/random/mini, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, -/obj/item/device/flashlight/slime, -/turf/open/floor/strata{ - color = "#5e5d5d"; - icon_state = "multi_tiles" +/area/varadero/interior/maintenance/north) +"qqR" = ( +/obj/structure/prop/rock/brown{ + indestructible = 1; + unacidable = 1; + name = "sturdy rock(s)"; + desc = "A solidified collection of local minerals. When melted, becomes a substance best known as lava. These look particularly durable." }, -/area/varadero/interior_protected/vessel) -"qsh" = ( -/obj/structure/closet/secure_closet/security, -/obj/structure/machinery/light{ - dir = 4 +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/obj/structure/machinery/firealarm{ - dir = 4; - pixel_x = 24 +/area/varadero/exterior/pontoon_beach) +"qsb" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/prop/rock/brown{ + indestructible = 1; + unacidable = 1; + name = "sturdy rock(s)"; + desc = "A solidified collection of local minerals. When melted, becomes a substance best known as lava. These look particularly durable." + }, +/turf/open/gm/coast/south, +/area/varadero/exterior/pontoon_beach) +"qsh" = ( +/obj/structure/closet/secure_closet/security, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 24 }, /turf/open/floor/shiva{ dir = 4; icon_state = "red" }, /area/varadero/interior/security) -"qsk" = ( -/obj/structure/closet/secure_closet/security, +"qto" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass{ + name = "\improper Underground Security Interrogation"; + req_access_txt = "100" + }, /turf/open/floor/shiva{ - dir = 5; - icon_state = "red" + icon_state = "floor3" }, -/area/varadero/interior/hall_N) +/area/varadero/interior/security) +"qtr" = ( +/obj/structure/surface/rack, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) +"qtv" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice2"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/closed/wall/rock/brown, +/area/varadero/interior/oob) "qtQ" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/microwave{ @@ -18696,6 +25527,16 @@ "qul" = ( /turf/closed/wall/rock/brown, /area/varadero/interior/caves/north_research) +"qus" = ( +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/wood, +/area/varadero/interior/hall_SE) +"quP" = ( +/obj/effect/landmark/static_comms/net_two, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "quR" = ( /obj/item/stack/sheet/metal, /turf/open/floor/wood, @@ -18704,15 +25545,13 @@ /obj/structure/window/framed/colony/reinforced, /turf/open/floor/plating, /area/varadero/interior/administration) -"qvK" = ( -/obj/structure/bed/chair{ +"qvv" = ( +/obj/effect/landmark/corpsespawner/colonist, +/turf/open/floor/shiva{ dir = 4; - icon_state = "chair_alt" - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" + icon_state = "multi_tiles" }, -/area/varadero/interior_protected/maintenance/south) +/area/varadero/interior/morgue) "qvO" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -18730,6 +25569,9 @@ icon_state = "floor3" }, /area/varadero/interior/mess) +"qvS" = ( +/turf/open/gm/coast/south, +/area/varadero/exterior/eastocean) "qwB" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -18740,6 +25582,16 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"qwE" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/swcaves) +"qwQ" = ( +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/pontoon_beach) "qwU" = ( /obj/structure/xenoautopsy/tank/hugger, /turf/open/floor/corsat{ @@ -18747,6 +25599,15 @@ icon_state = "squareswood" }, /area/varadero/interior_protected/vessel) +"qxa" = ( +/obj/structure/surface/rack, +/obj/item/reagent_container/glass/bucket/mopbucket, +/obj/item/tool/mop, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellowfull" + }, +/area/varadero/interior/electrical) "qxb" = ( /obj/structure/bed/alien{ can_buckle = 0; @@ -18773,14 +25634,11 @@ icon_state = "squareswood" }, /area/varadero/interior_protected/vessel) -"qxL" = ( -/obj/structure/surface/table/reinforced/prison{ - flipped = 1 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" +"qxu" = ( +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/hall_SE) +/area/varadero/interior/hall_N) "qyk" = ( /obj/structure/machinery/light{ dir = 8 @@ -18796,16 +25654,61 @@ }, /turf/open/floor/wood, /area/varadero/interior/security) +"qym" = ( +/obj/structure/barricade/handrail/wire{ + dir = 4 + }, +/obj/structure/closet/crate/trashcart{ + pixel_y = 8 + }, +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/disposals) "qyH" = ( /obj/structure/window/framed/colony/reinforced, +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior_protected/caves) +"qyJ" = ( +/turf/open/gm/coast/beachcorner/south_west, +/area/varadero/exterior/lz1_near) "qyT" = ( /obj/structure/largecrate/random/case, /turf/open/gm/dirt, /area/varadero/exterior/lz1_near) +"qyW" = ( +/obj/structure/bed/chair/wood/normal{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken3" + }, +/area/varadero/interior/beach_bar) +"qza" = ( +/obj/structure/stairs/perspective{ + color = "#6b675e"; + dir = 1; + icon_state = "p_stair_full" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/vessel) +"qzb" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) "qzd" = ( /obj/structure/filingcabinet/filingcabinet, /obj/item/paper/research_notes, @@ -18818,10 +25721,21 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"qzi" = ( +/obj/structure/sign/safety/high_voltage, +/obj/structure/sign/safety/hazard{ + pixel_x = 15 + }, +/turf/closed/wall/r_wall, +/area/varadero/interior/maintenance/north) "qzq" = ( /obj/structure/machinery/door/airlock/almayer/engineering/autoname, -/turf/open/floor/plating/icefloor, -/area/varadero/exterior/lz1_near) +/turf/open/floor/wood, +/area/varadero/interior/dock_control) +"qzZ" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior_protected/caves/swcaves) "qAd" = ( /obj/structure/machinery/door/airlock/strata/autoname{ autoname = 0; @@ -18838,6 +25752,10 @@ /obj/effect/landmark/monkey_spawn, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/caves/east) +"qAp" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating, +/area/varadero/interior/maintenance/north) "qAr" = ( /obj/structure/machinery/light{ dir = 8 @@ -18847,17 +25765,36 @@ icon_state = "snow_mat" }, /area/varadero/interior/security) -"qAU" = ( -/obj/structure/surface/rack, -/obj/item/storage/box/flashbangs{ - pixel_x = 3; - pixel_y = -2 +"qAy" = ( +/obj/item/tool/shovel, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"qAI" = ( +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" }, -/obj/item/storage/box/flashbangs, -/turf/open/floor/shiva{ - icon_state = "floor3" +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/security) +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) +"qAS" = ( +/obj/effect/landmark/corpsespawner/colonist/burst, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) "qBn" = ( /obj/structure/surface/rack, /obj/effect/decal/cleanable/cobweb{ @@ -18878,6 +25815,16 @@ }, /turf/open/floor/wood, /area/varadero/interior/court) +"qBO" = ( +/obj/item/shard{ + icon_state = "large"; + pixel_x = -5; + pixel_y = -6 + }, +/turf/open/floor/shiva{ + icon_state = "snow_mat" + }, +/area/varadero/interior/maintenance) "qBQ" = ( /obj/structure/coatrack, /obj/item/clothing/suit/armor/bulletproof, @@ -18905,6 +25852,14 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"qCE" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/reagent_container/food/drinks/bottle/gin{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "qCI" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/green{ @@ -18918,21 +25873,21 @@ /obj/structure/inflatable, /turf/open/floor/interior/plastic, /area/varadero/interior_protected/caves/digsite) -"qDa" = ( -/obj/structure/prop/invuln/minecart_tracks{ - dir = 1 - }, +"qCY" = ( /obj/structure/platform/kutjevo/smooth{ - dir = 4 + climb_delay = 1; + layer = 2.99 }, /obj/structure/platform/kutjevo/smooth{ - dir = 8 + dir = 4; + climb_delay = 1; + layer = 2.99 }, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/area/varadero/interior/oob) +/area/varadero/exterior/comms4) "qDh" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice2"; @@ -18943,12 +25898,13 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) -"qDk" = ( -/obj/item/weapon/gun/shotgun/double/sawn, -/turf/open/floor/shiva{ - icon_state = "floor3" +"qDr" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/hall_SE) +/turf/closed/wall/rock/brown, +/area/varadero/exterior/pontoon_beach) "qDs" = ( /obj/structure/surface/table/reinforced/prison, /turf/open/floor/shiva{ @@ -18979,6 +25935,25 @@ icon_state = "red" }, /area/varadero/interior/security) +"qDR" = ( +/obj/item/device/flashlight, +/turf/open/floor/shiva, +/area/varadero/interior/technical_storage) +"qEa" = ( +/obj/item/explosive/grenade/incendiary{ + pixel_x = -4; + pixel_y = -2 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/security) +"qEc" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 4 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) "qEf" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -18996,24 +25971,38 @@ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) +"qEt" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "qEG" = ( /obj/structure/largecrate/supply/supplies/mre, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) -"qFc" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +"qFe" = ( +/obj/effect/overlay/palmtree_r{ + icon_state = "palm2" }, -/turf/open/floor/plating, -/area/varadero/interior/medical) +/turf/open/gm/dirt{ + icon_state = "desert1" + }, +/area/varadero/exterior/pontoon_beach) "qFC" = ( /turf/open/floor{ dir = 8; icon_state = "asteroidwarning" }, /area/varadero/exterior/lz1_near) +"qFI" = ( +/obj/item/tool/wet_sign, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "qFO" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -19026,13 +26015,6 @@ icon_state = "floor3" }, /area/varadero/interior/administration) -"qFS" = ( -/obj/structure/machinery/landinglight/ds2/spoke{ - pixel_x = -1; - pixel_y = 22 - }, -/turf/closed/wall/r_wall/unmeltable, -/area/varadero/interior/oob) "qFZ" = ( /turf/open/floor/wood, /area/varadero/interior/bunks) @@ -19043,6 +26025,16 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) +"qHc" = ( +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior/caves/north_research) +"qHl" = ( +/obj/structure/prop/fishing/line/long/part2, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/pontoon_beach) "qHu" = ( /obj/effect/landmark/hunter_primary, /turf/open/floor/shiva{ @@ -19075,16 +26067,9 @@ icon_state = "floor3" }, /area/varadero/interior/hall_SE) -"qIT" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/security{ - name = "\improper Underground Security Custodial Closet"; - req_access_txt = "100" - }, -/turf/open/floor/plating, -/area/varadero/interior/security) +"qIF" = ( +/turf/open/gm/dirt, +/area/varadero/interior/caves/east) "qJF" = ( /obj/structure/surface/rack, /obj/effect/landmark/objective_landmark/medium, @@ -19104,15 +26089,57 @@ /obj/structure/closet/secure_closet/RD, /turf/open/floor/wood, /area/varadero/interior/research) -"qLa" = ( -/obj/structure/bed/chair{ - dir = 4; - icon_state = "chair_alt" +"qKM" = ( +/obj/structure/surface/rack, +/obj/item/tool/shovel, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"qKZ" = ( +/turf/open/gm/coast/west, +/area/varadero/exterior/lz1_near) +"qLf" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) +"qLq" = ( +/obj/structure/prop/ice_colony/dense/planter_box/plated{ + dir = 9; + icon_state = "planter_box_soil" + }, +/obj/structure/flora/bush/ausbushes/pointybush{ + icon_state = "pointybush_2"; + pixel_y = 11 }, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/maintenance/security) +/area/varadero/interior/hall_SE) +"qLs" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal3"; + pixel_y = 16 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/wood, +/area/varadero/interior/court) "qLH" = ( /obj/item/shard{ icon_state = "large"; @@ -19123,32 +26150,18 @@ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) -"qMo" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" +"qMl" = ( +/obj/structure/machinery/light, +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/area/varadero/interior/comms1) +/area/varadero/interior/hall_N) "qMr" = ( /obj/item/tool/minihoe, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) -"qMC" = ( -/obj/structure/machinery/optable, -/obj/effect/landmark/corpsespawner/colonist/random/burst, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "snow_mat" - }, -/area/varadero/interior/medical) "qMD" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/cassette_tape/nam{ @@ -19165,10 +26178,6 @@ icon_state = "purplefull" }, /area/varadero/interior/research) -"qMH" = ( -/obj/structure/prop/rock/brown, -/turf/open/auto_turf/sand_white/layer0, -/area/varadero/interior_protected/caves) "qMW" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/auto_turf/sand_white/layer1, @@ -19181,6 +26190,11 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) +"qNu" = ( +/turf/open/gm/dirt{ + icon_state = "desert1" + }, +/area/varadero/exterior/lz2_near) "qNC" = ( /obj/structure/surface/table, /obj/item/tool/weldpack{ @@ -19196,6 +26210,13 @@ icon_state = "yellowfull" }, /area/varadero/interior/cargo) +"qNE" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) "qNI" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/paper/janitor{ @@ -19219,6 +26240,9 @@ icon_state = "floor3" }, /area/varadero/interior/hall_SE) +"qNX" = ( +/turf/open/gm/coast/beachcorner/north_west, +/area/varadero/exterior/lz2_near) "qOh" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/icefloor, @@ -19240,11 +26264,35 @@ }, /turf/open/floor/wood, /area/varadero/interior/records) +"qOO" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/comms4) "qOS" = ( /obj/item/reagent_container/glass/bucket, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/maintenance/research) +"qOV" = ( +/obj/effect/decal/warning_stripes/asteroid{ + icon_state = "warning_s" + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/north) "qPk" = ( +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor/shiva{ dir = 9; icon_state = "red" @@ -19260,7 +26308,7 @@ /turf/open/floor/shiva{ icon_state = "floor3" }, -/area/varadero/interior/hall_SE) +/area/varadero/interior/hall_N) "qPG" = ( /obj/structure/barricade/handrail/wire{ dir = 4 @@ -19270,6 +26318,24 @@ icon_state = "yellow" }, /area/varadero/interior/disposals) +"qQd" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) +"qQe" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/alarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor{ + icon_state = "white" + }, +/area/varadero/interior/toilets) "qQk" = ( /obj/structure/barricade/handrail/wire{ layer = 3.1 @@ -19311,15 +26377,6 @@ dir = 1 }, /area/varadero/interior/research) -"qQM" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/surface/rack, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance) "qQN" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice8"; @@ -19331,13 +26388,18 @@ icon_state = "green" }, /area/varadero/interior/hall_SE) -"qQQ" = ( -/obj/structure/blocker/invisible_wall, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +"qRe" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/floor{ + icon_state = "asteroidwarning" }, -/turf/open/gm/river, -/area/varadero/interior/oob) +/area/varadero/interior/comms1) +"qRi" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/north_research) "qRy" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = 2 @@ -19350,6 +26412,12 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) +"qSj" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/shiva{ + icon_state = "yellow" + }, +/area/varadero/interior/comms3) "qSJ" = ( /obj/structure/machinery/power/apc{ dir = 4; @@ -19360,28 +26428,73 @@ icon_state = "floor3" }, /area/varadero/interior/morgue) -"qSK" = ( -/obj/structure/machinery/power/apc{ - dir = 1; - pixel_y = 24; - start_charge = 0 +"qSR" = ( +/obj/structure/closet/crate/trashcart, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"qTh" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -1; + pixel_y = 9; + indestructible = 1; + unacidable = 1 }, -/area/varadero/interior/maintenance/security) +/turf/open/gm/dirt{ + icon_state = "desert1" + }, +/area/varadero/exterior/monsoon) +"qTs" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/coast/beachcorner2/south_east, +/area/varadero/exterior/pontoon_beach) "qTz" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; pixel_y = 8 }, +/obj/structure/machinery/light/small{ + dir = 8 + }, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/records) +"qTE" = ( +/turf/open/gm/dirt{ + icon_state = "desert1" + }, +/area/varadero/exterior/eastbeach) +"qTZ" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/coast/beachcorner2/south_west, +/area/varadero/exterior/pontoon_beach) +"qUf" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass{ + name = "\improper Underground Security"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "red" + }, +/area/varadero/interior/security) "qUj" = ( /obj/structure/surface/rack, /obj/effect/landmark/objective_landmark/medium, @@ -19399,6 +26512,27 @@ icon_state = "redfull" }, /area/varadero/interior/medical) +"qUW" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/gm/dirt, +/area/varadero/interior/maintenance/north) +"qVb" = ( +/obj/item/stack/cable_coil/cyan, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) +"qVl" = ( +/obj/structure/closet/secure_closet/personal/patient, +/obj/structure/barricade/handrail/wire{ + dir = 8; + layer = 2.991 + }, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/medical) "qVp" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -19422,6 +26556,15 @@ }, /turf/open/floor/shiva, /area/varadero/interior/technical_storage) +"qVO" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) "qVS" = ( /obj/structure/window/reinforced/tinted{ dir = 4 @@ -19434,10 +26577,6 @@ /area/varadero/interior/security) "qWt" = ( /obj/structure/filingcabinet/security, -/obj/structure/machinery/alarm{ - dir = 1; - pixel_y = -24 - }, /turf/open/floor/shiva{ dir = 1; icon_state = "red" @@ -19463,21 +26602,6 @@ icon_state = "green" }, /area/varadero/interior/mess) -"qXM" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/sink{ - dir = 1; - pixel_y = -10 - }, -/obj/structure/mirror{ - pixel_y = -28 - }, -/turf/open/floor{ - icon_state = "white" - }, -/area/varadero/interior/toilets) "qXO" = ( /obj/structure/window_frame/colony/reinforced, /turf/open/floor/shiva{ @@ -19491,6 +26615,13 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"qYg" = ( +/obj/item/stack/tile/plasteel{ + pixel_x = 8; + pixel_y = 6 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/north_research) "qYE" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/clothing/suit/fire/firefighter{ @@ -19501,10 +26632,6 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) -"qYR" = ( -/obj/structure/bookcase, -/turf/open/floor/carpet, -/area/varadero/interior/library) "qZr" = ( /obj/effect/landmark/yautja_teleport, /turf/open/floor{ @@ -19521,39 +26648,49 @@ icon_state = "yellowfull" }, /area/varadero/interior/cargo) -"rak" = ( -/obj/item/coin/uranium, -/obj/structure/foamed_metal/iron, -/turf/open/floor/plating/icefloor, -/area/varadero/exterior/lz1_near) -"rav" = ( -/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ - icon_state = "sparsegrass_3" +"qZJ" = ( +/obj/item/tool/warning_cone, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"qZR" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior_protected/caves/central) +"qZV" = ( +/obj/structure/stairs/perspective{ + color = "#b29082"; + dir = 8; + icon_state = "p_stair_full" }, /turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) +/area/varadero/exterior/lz2_near) "rbd" = ( /obj/item/stack/sheet/wood/small_stack, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) -"rbq" = ( -/obj/structure/closet/secure_closet/medical3{ - req_access_txt = "100" +"rbp" = ( +/obj/structure/prop/invuln/minecart_tracks{ + dir = 8 }, -/turf/open/floor/shiva{ - icon_state = "wred" +/obj/structure/platform_decoration/kutjevo{ + dir = 1 }, -/area/varadero/interior/medical) -"rby" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/curtain/black, -/turf/open/floor/shiva{ - dir = 6; - icon_state = "multi_tiles" +/obj/structure/prop/invuln/minecart_tracks{ + dir = 5 }, -/area/varadero/interior/bunks) +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform_decoration/kutjevo, +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/oob) "rbU" = ( /turf/open/floor/wood, /area/varadero/interior/research) @@ -19567,6 +26704,10 @@ /obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited, /turf/closed/wall, /area/varadero/interior/medical) +"rcu" = ( +/obj/effect/overlay/palmtree_r, +/turf/open/gm/dirt, +/area/varadero/exterior/comms4) "rcA" = ( /obj/structure/bed/chair/office/light{ dir = 4 @@ -19589,13 +26730,29 @@ /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/maintenance/research) +/area/varadero/interior/cargo) "rdx" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 }, /turf/open/floor/carpet, /area/varadero/interior/library) +"red" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/gm/coast/east, +/area/varadero/exterior/comms4) +"res" = ( +/turf/open/gm/dirt{ + icon_state = "desert3" + }, +/area/varadero/exterior/eastbeach) "rex" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -19606,9 +26763,6 @@ icon_state = "purplefull" }, /area/varadero/interior/research) -"rey" = ( -/turf/open/gm/river, -/area/varadero/interior/maintenance) "reA" = ( /obj/structure/xenoautopsy/tank/broken, /obj/effect/decal/cleanable/blood/xeno, @@ -19652,16 +26806,19 @@ icon_state = "green" }, /area/varadero/interior/hall_NW) -"rgr" = ( -/obj/structure/surface/table/reinforced/prison{ - dir = 1; - flipped = 1 +"rgf" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/obj/structure/bed/chair{ - icon_state = "chair_alt" +/turf/open/gm/dirt{ + icon_state = "desert1" }, -/turf/open/floor/wood, -/area/varadero/interior/hall_SE) +/area/varadero/exterior/lz1_near) +"rgg" = ( +/obj/structure/girder/displaced, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) "rgy" = ( /obj/structure/noticeboard{ pixel_y = 32 @@ -19672,6 +26829,11 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"rgz" = ( +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/caves/swcaves) "rgZ" = ( /obj/item/tool/kitchen/knife, /obj/structure/surface/table, @@ -19680,6 +26842,10 @@ icon_state = "asteroidwarning" }, /area/varadero/exterior/lz1_near) +"rhu" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "ria" = ( /obj/structure/bed/sofa/pews/flipped, /turf/open/floor/carpet, @@ -19689,25 +26855,25 @@ /obj/structure/window/framed/colony, /turf/open/floor/plating, /area/varadero/interior/court) -"rjf" = ( -/obj/structure/platform/kutjevo/smooth, +"riM" = ( /obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/platform_decoration/kutjevo{ - dir = 4 - }, -/obj/structure/prop/invuln/minecart_tracks{ - dir = 10 + dir = 4; + climb_delay = 1; + layer = 2.99 }, -/obj/structure/platform_decoration/kutjevo{ - dir = 4 +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"rja" = ( +/obj/item/toy/beach_ball, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/area/varadero/interior/oob) +/area/varadero/exterior/pool) "rjn" = ( /turf/closed/wall/r_wall/elevator{ dir = 6 @@ -19748,24 +26914,62 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) -"rjS" = ( -/obj/structure/filingcabinet{ - density = 0; - icon_state = "chestdrawer"; +"rjM" = ( +/obj/structure/surface/table/woodentable, +/obj/item/reagent_container/food/drinks/cans/beer{ pixel_x = -8; - pixel_y = 11 + pixel_y = -1 }, -/obj/structure/filingcabinet{ - density = 0; - icon_state = "chestdrawer"; - pixel_x = 8; - pixel_y = 11 +/obj/item/ammo_magazine/shotgun/buckshot{ + pixel_x = 6; + pixel_y = -4 }, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) +"rjZ" = ( +/obj/structure/machinery/light{ + dir = 1 }, -/area/varadero/interior/maintenance/security) +/obj/item/ammo_magazine/revolver/cmb, +/turf/open/floor/shiva{ + icon_state = "purple" + }, +/area/varadero/interior/research) +"rkA" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) +"rkC" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/digsite) +"rkH" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -10; + pixel_y = 2; + indestructible = 1; + unacidable = 1 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"rlw" = ( +/obj/item/tool/pickaxe, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) +"rlI" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) "rlJ" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -19787,6 +26991,32 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) +"rmf" = ( +/obj/structure/barricade/wooden, +/turf/open/shuttle/elevator/grating, +/area/varadero/interior/records) +"rmo" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/stack/medical/advanced/bruise_pack/upgraded{ + amount = 1; + pixel_x = -3; + pixel_y = 11 + }, +/obj/item/stack/medical/advanced/ointment/upgraded{ + amount = 2; + pixel_x = 4; + pixel_y = 1 + }, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) +"rmr" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "rmB" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -19801,12 +27031,6 @@ icon_state = "red" }, /area/varadero/interior/security) -"rmN" = ( -/obj/effect/landmark/corpsespawner/chef, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" - }, -/area/varadero/interior/hall_SE) "rmS" = ( /obj/structure/xenoautopsy/tank/alien, /turf/open/floor/corsat{ @@ -19814,6 +27038,10 @@ icon_state = "squareswood" }, /area/varadero/interior_protected/vessel) +"rmV" = ( +/obj/effect/spawner/random/powercell, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) "rmZ" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/shiva{ @@ -19831,6 +27059,28 @@ icon_state = "squareswood" }, /area/varadero/interior_protected/vessel) +"rnL" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/lz2_near) +"rnP" = ( +/obj/structure/machinery/door/airlock/almayer/engineering/glass{ + req_access = null; + req_one_access = null + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/varadero/interior/cargo) +"ron" = ( +/obj/structure/tunnel{ + id = "north_research_tunnel" + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/swcaves) "roy" = ( /obj/structure/closet/hydrant{ pixel_x = -32 @@ -19851,11 +27101,48 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + dir = 1 + }, /area/varadero/interior/cargo) +"roT" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + density = 0; + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/obj/structure/prop/structure_lattice{ + density = 0; + desc = "If this is removed, you cannot escape."; + health = 300; + icon_state = "ladder10"; + name = "ladder" + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) +"rpd" = ( +/obj/structure/bed/chair, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "rpu" = ( /turf/closed/wall, /area/varadero/interior/oob) +"rpw" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves) "rpH" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/box/lights, @@ -19872,27 +27159,40 @@ icon_state = "asteroidplating" }, /area/varadero/interior/electrical) +"rpN" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "blue" + }, +/area/varadero/interior/maintenance) "rpT" = ( /obj/item/ammo_casing/shell{ icon_state = "shell_9_1" }, /turf/open/floor/wood, /area/varadero/interior/security) -"rqe" = ( -/obj/structure/sign/safety/bulkhead_door, -/obj/structure/machinery/door_control/brbutton{ - id = "undergroundhangarwest"; - name = "Underground Hangar Lock"; - pixel_x = 8 +"rqa" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/attachment, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/closed/wall/r_wall, -/area/varadero/exterior/lz1_near) +/area/varadero/interior_protected/maintenance/south) +"rqg" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/gm/coast/beachcorner/north_west, +/area/varadero/exterior/monsoon) "rql" = ( /obj/structure/noticeboard{ desc_lore = "Glup Shitto lives!" }, /turf/closed/wall/r_wall, -/area/varadero/interior/maintenance/security) +/area/varadero/interior/comms2) "rqn" = ( /obj/item/storage/donut_box{ pixel_y = 8 @@ -19912,6 +27212,21 @@ icon_state = "yellow" }, /area/varadero/interior/disposals) +"rqG" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/farocean) "rrp" = ( /obj/item/paper_bin, /obj/item/tool/stamp{ @@ -19940,6 +27255,10 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) +"rsf" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/gm/dirt, +/area/varadero/interior/caves/east) "rsh" = ( /obj/structure/machinery/cm_vending/sorted/medical/no_access, /turf/open/floor/shiva{ @@ -19960,22 +27279,20 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) -"rsw" = ( -/obj/structure/surface/table/reinforced/prison{ - dir = 8; - flipped = 1 - }, -/obj/effect/landmark/objective_landmark/far, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "yellow" - }, -/area/varadero/interior/hall_SE) "rsB" = ( /turf/open/floor/shiva{ icon_state = "yellow" }, /area/varadero/interior/electrical) +"rsL" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Underground Security Checkpoint"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/security) "rsM" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -19984,25 +27301,32 @@ icon_state = "floor3" }, /area/varadero/interior/medical) -"rsR" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, +"rsO" = ( /obj/structure/platform/kutjevo/smooth{ - dir = 4 + dir = 8; + climb_delay = 1; + layer = 2.99 }, -/obj/structure/barricade/handrail{ - desc = "Your platforms look pretty heavy king, let me support them for you."; - dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 }, -/turf/open/gm/dirt, -/area/varadero/interior/oob) +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) "rtm" = ( /obj/structure/machinery/camera/autoname/lz_camera, /turf/open/floor/plating/icefloor, /area/varadero/exterior/lz1_near) +"rtr" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ + dir = 1; + name = "\improper Underground Medical Laboratory"; + req_access = null; + req_one_access = null + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/medical) "rtu" = ( /obj/structure/bed/chair{ dir = 1 @@ -20028,6 +27352,12 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) +"rtR" = ( +/obj/item/tool/wirecutters, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/electrical) "rtV" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -20070,15 +27400,9 @@ icon_state = "purple" }, /area/varadero/interior/research) -"rvd" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "snow_mat" - }, -/area/varadero/interior/maintenance) +"rvD" = ( +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) "rwh" = ( /obj/structure/bed/chair/office/dark{ dir = 4 @@ -20092,31 +27416,17 @@ icon_state = "redfull" }, /area/varadero/interior/security) -"rwS" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 +"rwP" = ( +/obj/structure/closet/crate/ammo/alt/flame, +/obj/item/ammo_magazine/shotgun/buckshot, +/obj/item/ammo_magazine/shotgun/slugs{ + pixel_x = -6; + pixel_y = 6 }, -/obj/structure/machinery/light/small, /turf/open/floor/shiva{ - dir = 8; - icon_state = "multi_tiles" + icon_state = "floor3" }, -/area/varadero/interior/medical) +/area/varadero/interior/cargo) "rwV" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice12"; @@ -20135,44 +27445,40 @@ }, /area/varadero/interior/maintenance) "rxe" = ( -/obj/structure/machinery/alarm{ - dir = 8; - pixel_x = 24 - }, /turf/open/floor/shiva{ dir = 5; icon_state = "yellow" }, /area/varadero/interior/cargo) -"rxp" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 8 +"rxI" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = -8 }, -/obj/structure/blocker/invisible_wall/water, -/turf/open/gm/river/ocean, -/area/varadero/interior/oob) -"rxq" = ( -/obj/structure/surface/rack, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/shiva{ - icon_state = "wred" +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/medical) -"rxO" = ( -/obj/structure/prop/rock/brown, -/turf/open/gm/river/ocean, -/area/varadero/exterior/eastbeach) +/area/varadero/interior/maintenance/research) "ryD" = ( /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/maintenance/security) -"ryE" = ( -/obj/structure/machinery/door/airlock/almayer/secure{ - dir = 2; - name = "Underground Hangar Power Substation"; - req_access_txt = "100" +"ryG" = ( +/obj/structure/surface/rack, +/obj/item/clothing/under/shorts/red{ + pixel_x = -2; + pixel_y = -4 }, -/turf/open/floor/plating, -/area/varadero/exterior/lz1_near) +/obj/item/clothing/head/hardhat/red{ + pixel_x = -2; + pixel_y = 9 + }, +/obj/item/ammo_magazine/rifle, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/bunks) "rzg" = ( /turf/open/floor/shiva{ dir = 1; @@ -20194,6 +27500,13 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"rzU" = ( +/obj/effect/decal/cleanable/blood, +/obj/item/clothing/suit/armor/vest, +/turf/open/floor/shiva{ + icon_state = "redfull" + }, +/area/varadero/interior/medical) "rAf" = ( /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" @@ -20218,13 +27531,6 @@ icon_state = "floor3" }, /area/varadero/interior/bunks) -"rAF" = ( -/obj/structure/machinery/light/small, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance/research) "rBa" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/green{ @@ -20232,10 +27538,17 @@ }, /turf/open/floor/carpet, /area/varadero/interior/hall_SE) -"rBz" = ( -/obj/structure/prop/rock/brown_degree, +"rBi" = ( +/obj/structure/filingcabinet/security, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "redfull" + }, +/area/varadero/interior/hall_SE) +"rBq" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) +/area/varadero/exterior/lz2_near) "rBP" = ( /turf/open/floor/shiva{ dir = 8; @@ -20246,6 +27559,20 @@ /obj/structure/largecrate/random/case/small, /turf/open/gm/dirt, /area/varadero/exterior/lz1_near) +"rCs" = ( +/obj/structure/platform/kutjevo/rock{ + dir = 1 + }, +/obj/structure/platform/kutjevo/rock, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_y = -3 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior/hall_SE) "rCB" = ( /obj/structure/filingcabinet/chestdrawer{ pixel_x = -8 @@ -20255,10 +27582,6 @@ }, /turf/open/floor/interior/plastic, /area/varadero/interior_protected/caves/digsite) -"rCI" = ( -/obj/structure/prop/invuln/static_corpse/afric_zimmer, -/turf/open/floor/wood, -/area/varadero/interior/administration) "rDz" = ( /obj/structure/bed/chair/comfy/orange{ dir = 8 @@ -20266,6 +27589,7 @@ /obj/item/ammo_casing/shell{ icon_state = "cartridge_3_1" }, +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, @@ -20278,25 +27602,27 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) -"rEY" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/manifold/fourway/hidden/green, -/turf/open/floor/shiva{ +"rDK" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/item/stack/sheet/metal, +/turf/open/floor/strata{ + color = "#5e5d5d"; icon_state = "multi_tiles" }, -/area/varadero/interior/electrical) -"rFa" = ( -/obj/structure/bed/roller, +/area/varadero/interior_protected/vessel) +"rFj" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/landmark/objective_landmark/far, /turf/open/floor/shiva{ - icon_state = "wred" + dir = 8; + icon_state = "purplefull" }, -/area/varadero/interior/medical) -"rFd" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior/caves/east) +/area/varadero/interior/research) +"rFv" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/floor/carpet, +/area/varadero/interior/maintenance/north) "rFD" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/paper_bin{ @@ -20312,19 +27638,14 @@ }, /turf/open/floor/wood, /area/varadero/interior/research) -"rFL" = ( -/obj/structure/machinery/firealarm{ - dir = 1; - pixel_y = -24 +"rGl" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 }, /turf/open/floor/shiva{ - icon_state = "multi_tiles" + icon_state = "blue" }, -/area/varadero/interior/laundry) -"rGe" = ( -/obj/structure/blocker/invisible_wall/water, -/turf/open/gm/river/ocean, -/area/varadero/interior/oob) +/area/varadero/interior/hall_SE) "rGA" = ( /obj/structure/largecrate/random, /obj/structure/largecrate/random/mini{ @@ -20347,15 +27668,22 @@ icon_state = "green" }, /area/varadero/interior/hall_N) -"rHQ" = ( -/obj/structure/machinery/light{ - dir = 8 +"rHE" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "red" +/turf/closed/wall/wood, +/area/varadero/interior/beach_bar) +"rIF" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 }, -/area/varadero/interior/security) +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior/caves/north_research) "rIG" = ( /obj/structure/flora/bush/ausbushes/var3/sparsegrass{ icon_state = "sparsegrass_3" @@ -20371,6 +27699,12 @@ icon_state = "green" }, /area/varadero/interior/court) +"rIU" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/chapel) "rJq" = ( /obj/structure/surface/table, /obj/item/pamphlet/skill/engineer{ @@ -20379,6 +27713,10 @@ }, /turf/open/floor/shiva, /area/varadero/interior/technical_storage) +"rJv" = ( +/obj/structure/blocker/invisible_wall/water, +/turf/open/gm/coast/beachcorner2/south_west, +/area/varadero/exterior/farocean) "rJI" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -20388,28 +27726,6 @@ icon_state = "yellow" }, /area/varadero/interior/disposals) -"rJK" = ( -/obj/effect/decal/strata_decals/grime/grime4, -/obj/item/reagent_container/food/drinks/bottle/sake{ - layer = 3.1; - pixel_x = 13; - pixel_y = 21 - }, -/turf/open/floor/carpet, -/area/varadero/interior/bunks) -"rKe" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/maint{ - name = "\improper Underground Maintenance"; - req_access_txt = "100"; - req_one_access = null - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/hall_SE) "rKf" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/shiva{ @@ -20422,6 +27738,13 @@ icon_state = "asteroidplating" }, /area/varadero/interior/electrical) +"rKy" = ( +/obj/structure/pipes/standard/manifold/hidden/green, +/obj/item/clothing/suit/armor/vest, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/security) "rKB" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/device/flashlight/lamp/green{ @@ -20439,39 +27762,77 @@ icon_state = "multi_tiles" }, /area/varadero/interior/electrical) -"rLb" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/light, -/obj/structure/machinery/computer/guestpass{ - dir = 1 +"rKM" = ( +/turf/open/gm/dirt{ + icon_state = "desert1" }, -/turf/open/floor/wood, -/area/varadero/exterior/lz1_near) -"rLq" = ( +/area/varadero/exterior/pontoon_beach) +"rKS" = ( /obj/structure/platform/kutjevo/smooth{ - layer = 2 + climb_delay = 1; + layer = 2.99 }, -/obj/structure/barricade/handrail/wire{ - dir = 8; - layer = 2.991 - }, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "blue" +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -1; + pixel_y = 9; + indestructible = 1; + unacidable = 1 }, -/area/varadero/interior/maintenance) +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "rLC" = ( /obj/structure/machinery/photocopier, /turf/open/floor/shiva{ icon_state = "wredfull" }, /area/varadero/interior/medical) +"rLK" = ( +/obj/structure/prop/ice_colony/dense/planter_box/hydro{ + density = 0; + pixel_x = 11; + pixel_y = 9 + }, +/obj/structure/flora/bush/desert{ + icon_state = "tree_2"; + pixel_x = 10; + pixel_y = 20 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior/caves/north_research) "rLU" = ( /obj/structure/pipes/standard/manifold/hidden/green, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) +"rLW" = ( +/obj/structure/closet/crate/secure, +/obj/item/trash/chunk, +/obj/item/trash/raisins, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/cargo) +"rMb" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"rMl" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/coast/south, +/area/varadero/exterior/pontoon_beach) "rMM" = ( /obj/structure/prop/turbine, /obj/structure/prop/turbine_extras/border, @@ -20484,6 +27845,24 @@ icon_state = "floor3" }, /area/varadero/interior/hall_SE) +"rMP" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/gm/dirt, +/area/varadero/interior/caves/east) +"rNf" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/comms4) +"rNm" = ( +/obj/item/stack/sheet/wood, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/research) "rNo" = ( /obj/structure/machinery/holosign_switch{ id = "otice"; @@ -20496,19 +27875,6 @@ icon_state = "redfull" }, /area/varadero/interior/medical) -"rNN" = ( -/obj/structure/prop/invuln/minecart_tracks{ - dir = 1 - }, -/obj/structure/plasticflaps/mining, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/comms1) "rOL" = ( /obj/structure/closet/secure_closet/personal{ density = 0; @@ -20524,15 +27890,11 @@ icon_state = "white" }, /area/varadero/interior/laundry) -"rPe" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance/security) +"rPB" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/digsite) "rPD" = ( /obj/structure/disposalpipe/junction, /obj/structure/pipes/standard/simple/hidden/green, @@ -20546,10 +27908,42 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) -"rQV" = ( -/turf/open/floor/shiva{ - dir = 8; - icon_state = "purple" +"rQe" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms1) +"rQk" = ( +/obj/effect/decal/warning_stripes/asteroid{ + dir = 1; + icon_state = "warning_s" + }, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "greencorners" + }, +/area/varadero/interior/hall_SE) +"rQU" = ( +/obj/structure/girder, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"rQV" = ( +/turf/open/floor/shiva{ + dir = 8; + icon_state = "purple" }, /area/varadero/interior/research) "rQY" = ( @@ -20557,6 +27951,13 @@ icon_state = "multi_tiles" }, /area/varadero/interior/administration) +"rRm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/circuitboard/apc, +/turf/open/floor/shiva, +/area/varadero/interior/technical_storage) "rRq" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating/icefloor{ @@ -20570,6 +27971,16 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"rSl" = ( +/obj/item/tool/wrench, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"rSu" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/hall_N) "rSx" = ( /obj/structure/surface/table, /obj/structure/largecrate/random/mini/chest{ @@ -20642,6 +28053,12 @@ }, /turf/open/floor/wood, /area/varadero/interior/bunks) +"rTi" = ( +/obj/structure/window_frame/colony/reinforced, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/east) "rTu" = ( /obj/structure/surface/table/woodentable, /obj/item/handcuffs, @@ -20665,6 +28082,30 @@ }, /turf/open/floor/plating, /area/varadero/interior/disposals) +"rUa" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/farocean) +"rUc" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "rUw" = ( /obj/structure/window/reinforced{ dir = 4 @@ -20675,6 +28116,26 @@ icon_state = "purple" }, /area/varadero/interior/research) +"rUI" = ( +/obj/structure/closet/crate/construction, +/obj/item/reagent_container/food/snacks/wrapped/chunk, +/obj/item/tool/hatchet, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) +"rVi" = ( +/obj/item/tool/candle, +/turf/open/floor/carpet, +/area/varadero/interior/chapel) +"rVl" = ( +/obj/structure/surface/table, +/obj/structure/machinery/computer/shuttle/dropship/flight/lz2{ + dir = 5; + name = "LZ2 Palm Airfield computer" + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_console/two) "rVI" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/segment, @@ -20682,6 +28143,13 @@ icon_state = "floor3" }, /area/varadero/interior/administration) +"rVS" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "yellow" + }, +/area/varadero/interior/comms3) "rVZ" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice4"; @@ -20704,10 +28172,14 @@ icon_state = "white" }, /area/varadero/interior/toilets) -"rWB" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior/caves/east) +"rWG" = ( +/obj/structure/machinery/sensortower{ + pixel_x = -9 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior_protected/caves/central) "rWJ" = ( /obj/item/stool, /turf/open/floor/shiva{ @@ -20718,27 +28190,48 @@ /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/grass/grass1/weedable, /area/varadero/interior_protected/caves/central) -"rWX" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 5 +"rWY" = ( +/obj/structure/prop/ice_colony/dense/planter_box/plated{ + dir = 9; + icon_state = "planter_box_soil" }, -/obj/structure/machinery/medical_pod/sleeper, -/turf/open/floor/shiva{ - icon_state = "floor3" +/obj/structure/flora/bush/ausbushes/pointybush{ + icon_state = "pointybush_3"; + pixel_y = 11 }, -/area/varadero/interior/medical) +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "rXf" = ( /obj/item/stack/cable_coil/cut, /turf/open/floor/shiva{ icon_state = "redcorners" }, /area/varadero/interior/morgue) +"rXk" = ( +/turf/open/gm/coast/beachcorner/south_west, +/area/varadero/exterior/lz2_near) +"rXS" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) "rYi" = ( /obj/structure/platform_decoration/kutjevo{ dir = 8 }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) +"rYC" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/item/lightstick/variant/planted, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/farocean) "rYO" = ( /obj/structure/prop/static_tank/water{ pixel_y = 8 @@ -20747,6 +28240,19 @@ icon_state = "multi_tiles" }, /area/varadero/interior/disposals) +"rYR" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 10; + pixel_y = 22; + indestructible = 1; + unacidable = 1; + layer = 4.1 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/farocean) "rZr" = ( /obj/structure/prop/ice_colony/flamingo{ dir = 6 @@ -20770,17 +28276,6 @@ icon_state = "snow_mat" }, /area/varadero/interior/maintenance) -"rZS" = ( -/obj/structure/machinery/light, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 - }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "yellowfull" - }, -/area/varadero/interior/electrical) "sah" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1; @@ -20788,20 +28283,8 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, +/turf/open/floor/wood, /area/varadero/interior/administration) -"saj" = ( -/obj/structure/barricade/handrail{ - desc = "Your platforms look pretty heavy king, let me support them for you."; - dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) "saq" = ( /obj/item/storage/firstaid/o2{ layer = 3.1; @@ -20819,19 +28302,29 @@ icon_state = "greenfull" }, /area/varadero/interior/medical) -"sau" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/tool/hand_labeler, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/records) "saC" = ( /turf/open/floor/shiva{ dir = 4; icon_state = "yellow" }, /area/varadero/interior/cargo) +"saQ" = ( +/obj/structure/barricade/wooden, +/obj/item/shard{ + icon_state = "large"; + pixel_x = -5; + pixel_y = -6 + }, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) +"sbP" = ( +/obj/structure/machinery/landinglight/ds1/spoke{ + pixel_y = -5; + pixel_x = -13 + }, +/obj/structure/machinery/camera/autoname/lz_camera, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "sbX" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -20859,6 +28352,12 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_NW) +"sdy" = ( +/turf/open/floor/shiva{ + dir = 4; + icon_state = "green" + }, +/area/varadero/interior/maintenance/north) "sdz" = ( /turf/closed/wall/r_wall, /area/varadero/interior/hall_NW) @@ -20878,6 +28377,10 @@ pixel_y = 7 }, /obj/effect/spawner/random/technology_scanner, +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, /turf/open/floor/shiva{ icon_state = "multi_tiles" }, @@ -20897,12 +28400,45 @@ icon_state = "snow_mat" }, /area/varadero/interior/medical) +"seZ" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/bedsheet/purple{ + pixel_y = 13 + }, +/obj/item/bedsheet/hos{ + layer = 3.1 + }, +/turf/open/floor/wood, +/area/varadero/interior/bunks) "sff" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ icon_state = "snow_mat" }, /area/varadero/interior/maintenance) +"sfj" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/east) "sfs" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -20911,16 +28447,13 @@ icon_state = "multi_tiles" }, /area/varadero/interior/cargo) -"sfB" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/door/airlock/almayer/command{ - dir = 1; - name = "\improper Underground Administration Office"; - req_access_txt = "100" +"sfF" = ( +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 }, -/turf/open/floor/plating, -/area/varadero/interior/administration) +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/north_research) "sfM" = ( /obj/structure/barricade/handrail/wire, /obj/structure/machinery/light{ @@ -20935,12 +28468,34 @@ /obj/structure/flora/bush/ausbushes/var3/stalkybush, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/caves/east) -"sgo" = ( -/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ - icon_state = "sparsegrass_2" +"sgl" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) +/area/varadero/interior_protected/maintenance/south) +"sgn" = ( +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) +"sgp" = ( +/obj/structure/barricade/wooden, +/turf/open/shuttle/elevator, +/area/varadero/interior/records) "sgq" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -20971,10 +28526,6 @@ }, /turf/open/floor/wood, /area/varadero/interior/hall_SE) -"sgK" = ( -/obj/structure/closet/crate, -/turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) "shb" = ( /turf/closed/wall/r_wall, /area/varadero/interior/medical) @@ -20998,14 +28549,12 @@ }, /turf/open/floor/plating, /area/varadero/interior_protected/caves/digsite) -"shR" = ( -/obj/structure/machinery/light{ - dir = 1 - }, +"shP" = ( +/obj/item/clothing/suit/armor/vest, /turf/open/floor/shiva{ - icon_state = "purple" + icon_state = "floor3" }, -/area/varadero/interior/research) +/area/varadero/interior/security) "sia" = ( /obj/structure/machinery/firealarm{ dir = 1; @@ -21013,12 +28562,29 @@ }, /turf/open/floor/carpet, /area/varadero/interior/library) +"sic" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, +/obj/structure/machinery/alarm{ + pixel_y = 24 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellowfull" + }, +/area/varadero/interior/comms3) "sid" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +/obj/structure/window/framed/colony, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, -/turf/open/gm/dirt, -/area/varadero/interior/oob) +/area/varadero/interior/maintenance/north) "sjD" = ( /obj/structure/machinery/light{ dir = 1 @@ -21048,6 +28614,17 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/comms4) +"skY" = ( +/obj/effect/landmark/objective_landmark/far, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/wood, +/area/varadero/interior/hall_SE) +"slw" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) "slA" = ( /obj/structure/bed/chair/comfy{ dir = 8; @@ -21080,6 +28657,9 @@ }, /turf/open/floor/wood, /area/varadero/interior/administration) +"slE" = ( +/turf/closed/wall/r_wall/unmeltable, +/area/varadero/interior/electrical) "slG" = ( /obj/structure/machinery/vending/snack, /turf/open/floor/wood, @@ -21130,12 +28710,36 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) +"snE" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 8 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance) +"snP" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/curtain/red, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/varadero/interior/bunks) "snS" = ( /turf/open/floor/corsat{ dir = 1; icon_state = "squareswood" }, /area/varadero/interior_protected/vessel) +"sou" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "cargobay"; + name = "\improper Requesitions Storage Shutters" + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellow" + }, +/area/varadero/interior/cargo) "spd" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -21145,6 +28749,15 @@ icon_state = "snow_mat" }, /area/varadero/interior/medical) +"spv" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/eastocean) "spP" = ( /obj/structure/bed/chair, /obj/structure/pipes/standard/simple/hidden/green, @@ -21154,18 +28767,6 @@ icon_state = "green" }, /area/varadero/interior/court) -"sqb" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Underground Chapel"; - req_access_txt = "100" - }, -/turf/open/floor/plating, -/area/varadero/interior/chapel) -"sqZ" = ( -/obj/structure/flora/bush/ausbushes/var3/sparsegrass, -/turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) "sre" = ( /obj/structure/filingcabinet, /obj/structure/machinery/light/small{ @@ -21175,34 +28776,16 @@ icon_state = "floor3" }, /area/varadero/interior/records) -"srq" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/comms3) -"srr" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/prop/invuln/minecart_tracks{ - dir = 8 - }, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/oob) -"srL" = ( -/obj/structure/sign/safety/reception, -/obj/structure/sign/safety/one{ - pixel_x = 15 +"srg" = ( +/turf/open/gm/dirt, +/area/varadero/interior/caves/north_research) +"srU" = ( +/obj/item/reagent_container/glass/bucket{ + pixel_x = -12; + pixel_y = -3 }, -/turf/closed/wall, -/area/varadero/exterior/lz1_near) +/turf/open/gm/coast/beachcorner/south_west, +/area/varadero/exterior/pontoon_beach) "srW" = ( /turf/closed/wall/r_wall/elevator{ dir = 4 @@ -21255,6 +28838,13 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) +"ssZ" = ( +/obj/item/storage/belt/marine, +/turf/open/floor/carpet, +/area/varadero/interior/bunks) +"stl" = ( +/turf/open/floor/plating/bare_catwalk, +/area/varadero/exterior/pontoon_beach) "stv" = ( /obj/structure/closet/secure_closet/medical1{ req_access_txt = "100" @@ -21263,12 +28853,35 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) -"stC" = ( -/obj/structure/bigDelivery, -/turf/open/floor{ - icon_state = "freezerfloor" +"stw" = ( +/obj/structure/platform/kutjevo/rock{ + dir = 1 }, -/area/varadero/interior/cargo) +/obj/structure/platform/kutjevo/rock, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_y = -3 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior/maintenance/security) +"stK" = ( +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/caves/digsite) +"stU" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/mess) "stV" = ( /obj/structure/reagent_dispensers/water_cooler{ density = 0; @@ -21279,20 +28892,6 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) -"suv" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) -"sux" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/shiva{ - icon_state = "wred" - }, -/area/varadero/interior/medical) "suC" = ( /obj/structure/barricade/handrail/wire{ dir = 4 @@ -21302,10 +28901,37 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) +"suE" = ( +/obj/item/tool/wet_sign, +/turf/open/floor/shiva{ + icon_state = "blue" + }, +/area/varadero/interior/maintenance) +"suY" = ( +/obj/structure/barricade/handrail/wire{ + dir = 8 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) +"svt" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "svD" = ( /obj/structure/largecrate/random/case/double, /turf/open/shuttle/elevator/grating, /area/varadero/interior/hall_N) +"svG" = ( +/obj/item/tool/warning_cone, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz1_near) "svH" = ( /obj/structure/surface/table/woodentable, /obj/item/book/manual/marine_law{ @@ -21322,17 +28948,6 @@ }, /turf/open/floor/carpet, /area/varadero/interior/library) -"svP" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/clothing/ears/earmuffs{ - icon_state = "earmuffs2"; - pixel_x = 2; - pixel_y = 8 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/security) "swf" = ( /obj/structure/bed/chair{ dir = 4 @@ -21354,6 +28969,35 @@ /obj/item/storage/pouch/machete/full, /turf/open/floor/wood, /area/varadero/interior/security) +"swk" = ( +/obj/item/storage/toolbox/mechanical{ + pixel_x = 1; + pixel_y = 7 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) +"swv" = ( +/obj/structure/surface/rack, +/obj/item/pizzabox/meat, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) +"swV" = ( +/obj/structure/closet/crate/construction, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) +"sxL" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/prop/rock/brown, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "sxR" = ( /obj/structure/surface/table, /obj/item/stack/cable_coil{ @@ -21362,16 +29006,69 @@ /obj/item/weapon/gun/energy/yautja/plasmapistol, /turf/open/floor/interior/plastic, /area/varadero/interior_protected/caves/digsite) -"syK" = ( -/obj/structure/pipes/standard/simple/hidden/green{ +"sxY" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) +"syb" = ( +/obj/structure/surface/rack, +/obj/item/ammo_magazine/pistol/mod88, +/obj/item/ammo_magazine/pistol/mod88, +/obj/item/ammo_magazine/pistol/mod88, +/obj/item/ammo_magazine/pistol/mod88{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/ammo_magazine/pistol/mod88{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/ammo_magazine/pistol/mod88{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/ammo_magazine/pistol/mod88{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/ammo_magazine/pistol/mod88{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/ammo_magazine/pistol/mod88, +/obj/structure/machinery/light{ dir = 4 }, -/obj/effect/landmark/corpsespawner/colonist/random/burst, +/obj/item/ammo_magazine/pistol{ + pixel_x = -4 + }, +/obj/item/ammo_magazine/pistol, +/obj/item/ammo_magazine/pistol{ + pixel_x = 4 + }, /turf/open/floor/shiva{ dir = 4; - icon_state = "snow_mat" + icon_state = "red" }, -/area/varadero/interior/medical) +/area/varadero/interior/security) +"syl" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "cargobay"; + name = "\improper Requesitions Storage Shutters" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/cargo) +"syt" = ( +/obj/item/device/flashlight, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "multi_tiles" + }, +/area/varadero/interior/electrical) "syL" = ( /turf/open/floor/shiva{ icon_state = "multi_tiles" @@ -21402,10 +29099,24 @@ dir = 4 }, /area/varadero/interior/records) +"szp" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating, +/area/varadero/interior/comms3) "szw" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) +"szS" = ( +/obj/item/stack/tile/plasteel{ + pixel_x = 4; + pixel_y = -6 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) "szZ" = ( /obj/structure/curtain/red, /turf/open/shuttle{ @@ -21419,18 +29130,17 @@ icon_state = "multi_tiles" }, /area/varadero/interior/cargo) -"sBb" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/medical/glass{ - name = "\improper Theta-V Research Laboratory Sample Isolation"; - req_access = null; - req_access_txt = null; +"sAY" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Underground Maintenance"; + req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, -/area/varadero/interior/research) +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/morgue) "sBk" = ( /obj/structure/bed/chair{ dir = 1 @@ -21443,12 +29153,27 @@ icon_state = "purplefull" }, /area/varadero/interior/research) +"sBF" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor{ + name = "\improper Colony Administration"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/administration) "sBN" = ( /obj/structure/target/syndicate, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/security) +"sBX" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/plating, +/area/varadero/interior/laundry) "sCk" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/segment{ @@ -21459,29 +29184,28 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_N) -"sCo" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +"sCp" = ( +/obj/item/stack/sheet/metal, +/obj/item/shard{ + icon_state = "medium" }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "greenfull" +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/hall_N) +/area/varadero/interior/caves/east) +"sCA" = ( +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "sCJ" = ( /obj/vehicle/train/cargo/trolley, /turf/open/floor/shiva{ dir = 1 }, /area/varadero/interior/cargo) -"sCK" = ( -/obj/structure/closet/secure_closet/scientist, -/obj/item/clothing/mask/gas/clown_hat, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "purple" - }, -/area/varadero/interior/research) "sCV" = ( /obj/structure/machinery/alarm{ dir = 8; @@ -21495,17 +29219,6 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) -"sDc" = ( -/obj/structure/machinery/landinglight/ds2/spoke{ - pixel_x = -1; - pixel_y = 22 - }, -/obj/structure/sign/safety/debark_lounge, -/obj/structure/sign/safety/south{ - pixel_x = 15 - }, -/turf/closed/wall/r_wall, -/area/varadero/exterior/lz1_near) "sDf" = ( /obj/structure/machinery/light, /turf/open/floor/shiva{ @@ -21529,11 +29242,43 @@ icon_state = "multi_tiles" }, /area/varadero/interior/technical_storage) +"sDE" = ( +/obj/structure/prop/ice_colony/dense/planter_box/plated{ + dir = 9; + icon_state = "planter_box_soil" + }, +/obj/structure/flora/bush/ausbushes/pointybush{ + icon_state = "pointybush_3"; + pixel_y = 11 + }, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/research) +"sDH" = ( +/obj/item/grown/log, +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "sDM" = ( /turf/open/floor/shiva{ icon_state = "purple" }, /area/varadero/interior/research) +"sDQ" = ( +/obj/structure/machinery/power/apc{ + dir = 4; + pixel_x = 24; + start_charge = 0 + }, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "wred" + }, +/area/varadero/interior/medical) "sDZ" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -21543,27 +29288,37 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) -"sEG" = ( -/obj/structure/closet/secure_closet/medical1{ - req_access_txt = "100" - }, -/obj/effect/landmark/objective_landmark/close, +"sFc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/barcardine, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) +"sFJ" = ( +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ - icon_state = "wred" + icon_state = "floor3" }, -/area/varadero/interior/medical) -"sFH" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +/area/varadero/interior/morgue) +"sFN" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ + icon_state = "sparsegrass_2" + }, +/turf/open/gm/dirt{ + icon_state = "desert3" }, -/turf/open/gm/dirt, /area/varadero/exterior/lz1_near) -"sFJ" = ( +"sGb" = ( /obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 1; + name = "\improper Underground Disposals"; + req_access_txt = "100" + }, /turf/open/floor/shiva{ icon_state = "floor3" }, -/area/varadero/interior/morgue) +/area/varadero/interior/disposals) "sGo" = ( /turf/open/floor{ icon_state = "white" @@ -21574,21 +29329,30 @@ icon_state = "multi_tiles" }, /area/varadero/interior/cargo) -"sHa" = ( -/turf/open/shuttle/elevator, -/area/varadero/interior/records) -"sHr" = ( -/obj/structure/closet/athletic_mixed{ - anchored = 0; - density = 0; - pixel_x = -8; - pixel_y = 22 - }, +"sHs" = ( +/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/shiva{ - dir = 4; - icon_state = "snow_mat" + dir = 1 }, -/area/varadero/interior/maintenance) +/area/varadero/interior/electrical) +"sHJ" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/comms4) +"sHO" = ( +/obj/item/stack/tile/plasteel{ + layer = 2.89; + pixel_x = 17; + pixel_y = 16 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/security) "sHV" = ( /obj/structure/machinery/landinglight/ds2/delaytwo, /turf/open/floor{ @@ -21606,15 +29370,39 @@ icon_state = "red" }, /area/varadero/interior/medical) -"sIg" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/door/airlock/almayer/engineering{ +"sIn" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "purple" + }, +/area/varadero/interior/hall_NW) +"sIK" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = -8 + }, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = -8 + }, +/turf/open/floor{ dir = 1; - name = "\improper Underground Technical Storage"; - req_access_txt = "100" + icon_state = "asteroidfloor" }, -/turf/open/floor/plating, -/area/varadero/interior/technical_storage) +/area/varadero/exterior/eastbeach) +"sIQ" = ( +/obj/item/stack/sheet/wood/small_stack, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) "sIU" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -21649,18 +29437,6 @@ }, /turf/open/floor/wood, /area/varadero/interior/bunks) -"sJr" = ( -/obj/item/device/reagent_scanner{ - pixel_x = 7; - pixel_y = 8 - }, -/obj/structure/prop/server_equipment/laptop{ - pixel_x = -13; - pixel_y = 6 - }, -/obj/structure/surface/table, -/turf/open/gm/dirt, -/area/varadero/exterior/pontoon_beach) "sJx" = ( /obj/structure/surface/table, /obj/item/reagent_container/food/snacks/chips, @@ -21714,6 +29490,21 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) +"sKz" = ( +/obj/structure/closet/crate/supply, +/obj/item/storage/box/wy_mre, +/obj/item/storage/beer_pack, +/obj/item/spacecash, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"sKC" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/plating, +/area/varadero/interior/morgue) +"sKF" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "sKL" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -21722,6 +29513,12 @@ icon_state = "purple" }, /area/varadero/interior/research) +"sKN" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance) "sLi" = ( /obj/structure/machinery/power/geothermal, /obj/structure/machinery/light{ @@ -21731,13 +29528,18 @@ icon_state = "asteroidplating" }, /area/varadero/interior/electrical) -"sLu" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/turf/open/gm/coast/east, -/area/varadero/interior/oob) +"sLO" = ( +/obj/item/device/flashlight/slime{ + mouse_opacity = 0; + invisibility = 1; + indestructible = 1; + alpha = 0 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) "sLU" = ( /obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/shiva{ @@ -21749,12 +29551,11 @@ /obj/structure/bed/chair/office/dark, /turf/open/floor/carpet, /area/varadero/interior/records) -"sMT" = ( -/obj/item/device/mass_spectrometer, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior_protected/maintenance/south) +"sMJ" = ( +/obj/structure/closet/crate, +/obj/item/prop/magazine/dirty, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance) "sNa" = ( /obj/structure/window/reinforced/tinted, /turf/open/floor{ @@ -21778,12 +29579,25 @@ icon_state = "snow_mat" }, /area/varadero/interior/maintenance) -"sOe" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +"sNx" = ( +/turf/closed/wall/rock/brown, +/area/varadero/exterior/farocean) +"sNy" = ( +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" }, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) +/area/varadero/exterior/comms4) +"sNT" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/interior/maintenance/north) "sOj" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/junction, @@ -21791,14 +29605,28 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"sPm" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +"sOw" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/vessel) +"sPh" = ( +/obj/structure/machinery/constructable_frame, /turf/open/floor/shiva{ - icon_state = "yellow" + dir = 8; + icon_state = "yellowfull" }, -/area/varadero/interior/cargo) +/area/varadero/interior/electrical) +"sPs" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/wood, +/area/varadero/interior/security) +"sPD" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/toolbox/mechanical/green, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) "sPY" = ( /turf/open/floor/shiva{ dir = 8; @@ -21811,10 +29639,39 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) +"sQs" = ( +/obj/structure/filingcabinet{ + density = 0; + icon_state = "chestdrawer"; + pixel_x = 8; + pixel_y = 11 + }, +/obj/structure/filingcabinet{ + density = 0; + icon_state = "chestdrawer"; + pixel_x = 8 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/item/storage/pill_bottle/inaprovaline/skillless{ + pixel_x = -5 + }, +/obj/item/ammo_magazine/rifle, +/turf/open/floor/wood, +/area/varadero/interior/bunks) "sQN" = ( /obj/effect/landmark/xeno_spawn, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves) +"sQR" = ( +/obj/item/ore/coal, +/obj/item/ore/silver{ + pixel_x = 8; + pixel_y = 11 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) "sRs" = ( /turf/open/gm/coast/beachcorner/south_west, /area/varadero/exterior/pontoon_beach) @@ -21829,15 +29686,11 @@ }, /turf/open/floor/wood, /area/varadero/interior/administration) -"sSm" = ( -/obj/structure/machinery/alarm{ - pixel_y = 24 - }, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "yellow" - }, -/area/varadero/interior/electrical) +"sSp" = ( +/obj/effect/decal/cleanable/blood, +/obj/item/weapon/gun/shotgun/pump, +/turf/open/floor/carpet, +/area/varadero/interior/maintenance/north) "sSz" = ( /obj/item/device/camera{ pixel_x = -4; @@ -21853,6 +29706,16 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) +"sSU" = ( +/obj/structure/machinery/door/airlock/almayer/command{ + dir = 1; + name = "\improper Underground Command Center"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/administration) "sSZ" = ( /obj/structure/pipes/vents/pump{ dir = 8 @@ -21872,80 +29735,164 @@ icon_state = "yellow" }, /area/varadero/interior/disposals) -"sUG" = ( -/obj/item/tool/pickaxe/plasmacutter, -/turf/open/shuttle{ - icon_state = "floor6" +"sTT" = ( +/obj/structure/machinery/light, +/obj/structure/closet/toolcloset, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, -/area/varadero/interior_protected/vessel) -"sVk" = ( -/obj/structure/cable/heavyduty{ - icon_state = "4-8" +/area/varadero/exterior/lz1_near) +"sTW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ + dir = 1; + name = "\improper Underground Medical Laboratory"; + req_access = null; + req_one_access = null + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/medical) +"sUj" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/obj/structure/prop/invuln/minecart_tracks{ + dir = 6 + }, +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/oob) +"sUp" = ( +/obj/item/toy/beach_ball, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) +"sUG" = ( +/obj/item/tool/pickaxe/plasmacutter, +/turf/open/shuttle{ + icon_state = "floor6" + }, +/area/varadero/interior_protected/vessel) +"sUK" = ( +/obj/structure/flora/bush/desert{ + icon_state = "tree_2"; + pixel_x = -1; + pixel_y = 12 + }, +/obj/structure/prop/ice_colony/dense/planter_box/hydro{ + density = 0 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/pontoon_beach) +"sVk" = ( +/obj/structure/cable/heavyduty{ + icon_state = "4-8" }, /turf/open/floor/plating, /area/varadero/interior_protected/caves/digsite) +"sVr" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/obj/item/stack/tile/plasteel{ + pixel_x = 8; + pixel_y = 6 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/security) +"sVH" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice1"; + pixel_x = -16; + pixel_y = -8 + }, +/turf/closed/wall/rock/brown, +/area/varadero/interior/oob) "sWp" = ( /turf/open/floor/shiva{ dir = 1; icon_state = "red" }, /area/varadero/interior/medical) -"sWs" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance) "sXb" = ( /turf/closed/wall, /area/varadero/interior/library) -"sXm" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - name = "\improper Underground Maintenance"; - req_access_txt = "100"; - req_one_access = null +"sXc" = ( +/turf/open/gm/coast/beachcorner2/north_west, +/area/varadero/exterior/lz2_near) +"sXn" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/coast/beachcorner/south_west, +/area/varadero/exterior/farocean) +"sYi" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellowfull" }, -/turf/open/floor/plating, -/area/varadero/interior/hall_N) -"sYS" = ( -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/river, -/area/varadero/interior_protected/caves) +/area/varadero/interior/comms3) +"sZd" = ( +/obj/structure/girder/displaced, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "sZe" = ( /obj/item/paper, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) -"tam" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" - }, -/area/varadero/interior/hall_N) -"taO" = ( -/obj/structure/platform/kutjevo/smooth, +"sZW" = ( /obj/structure/platform/kutjevo/smooth{ - dir = 8 + dir = 1; + climb_delay = 1; + layer = 2.99 }, -/turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) -"tbN" = ( -/obj/structure/prop/invuln/minecart_tracks{ - dir = 1 +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" }, -/obj/structure/plasticflaps/mining, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/area/varadero/exterior/comms4) +"tak" = ( +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/carpet, +/area/varadero/interior/hall_SE) +"tam" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" }, -/area/varadero/interior/comms1) +/area/varadero/interior/hall_N) "tbQ" = ( /obj/structure/reagent_dispensers/water_cooler, /obj/structure/machinery/light{ @@ -21964,33 +29911,38 @@ icon_state = "snow_mat" }, /area/varadero/interior/maintenance) -"tcM" = ( -/obj/structure/machinery/power/apc{ - dir = 1; - pixel_y = 24; - start_charge = 0 - }, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "yellow" - }, -/area/varadero/interior/technical_storage) "tcS" = ( -/obj/structure/machinery/light{ - dir = 4 - }, /obj/structure/pipes/vents/pump, /turf/open/floor{ icon_state = "white" }, /area/varadero/interior/toilets) -"tdq" = ( -/obj/structure/largecrate/random/mini/chest, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" +"tcX" = ( +/obj/structure/surface/rack, +/obj/item/frame/table, +/obj/item/frame/table, +/obj/item/frame/table, +/obj/item/frame/table, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/comms3) +/area/varadero/interior_protected/maintenance/south) +"tdp" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior_protected/caves/swcaves) +"tdt" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) "tdy" = ( /obj/item/storage/box/donkpockets{ pixel_x = 6; @@ -22006,6 +29958,56 @@ icon_state = "snow_mat" }, /area/varadero/interior/security) +"tdN" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating, +/area/varadero/interior_protected/maintenance/south) +"tdX" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/comms4) +"teg" = ( +/obj/structure/girder, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) +"ten" = ( +/obj/structure/prop/invuln/minecart_tracks{ + dir = 8 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/closet/crate/miningcar{ + layer = 3.1; + name = "\improper materials storage bin"; + pixel_y = 8 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz1_near) "teu" = ( /obj/structure/prop/ice_colony/dense/planter_box/plated{ dir = 9; @@ -22027,10 +30029,24 @@ icon_state = "floor3" }, /area/varadero/interior/medical) +"tez" = ( +/obj/item/toy/bikehorn/rubberducky, +/turf/open/gm/coast/beachcorner/north_west, +/area/varadero/exterior/lz2_near) +"teH" = ( +/obj/structure/window/framed/colony, +/obj/structure/sign/banners/happybirthdaysteve, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) "teT" = ( /obj/structure/largecrate/random/case/small, /turf/open/shuttle/elevator/grating, /area/varadero/interior/hall_N) +"tfc" = ( +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/varadero/exterior/lz2_near) "tfj" = ( /obj/effect/decal/warning_stripes/asteroid{ dir = 1; @@ -22041,6 +30057,31 @@ icon_state = "green" }, /area/varadero/interior/hall_N) +"tfC" = ( +/obj/structure/showcase{ + color = "#95948B"; + desc = "A grey statue dawned in ancient armor, it stares into your soul."; + icon = 'icons/mob/humans/species/r_synthetic.dmi'; + icon_state = "Synthetic_Template"; + name = "Eternal guardian" + }, +/obj/item/clothing/suit/armor/yautja_flavor{ + anchored = 1 + }, +/obj/item/weapon/harpoon/yautja{ + anchored = 1; + name = "Alien Harpoon"; + pixel_x = 6 + }, +/obj/item/clothing/mask/yautja_flavor{ + anchored = 1; + unacidable = 0 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "squareswood" + }, +/area/varadero/interior_protected/caves/digsite) "tgk" = ( /obj/structure/filingcabinet{ density = 0; @@ -22057,15 +30098,35 @@ /obj/item/limb/foot/l_foot, /turf/open/floor/wood, /area/varadero/interior/administration) +"tgC" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "tgE" = ( /turf/open/gm/dirt{ icon_state = "desert_dug" }, /area/varadero/exterior/pontoon_beach) +"tgK" = ( +/obj/structure/closet/crate/construction, +/obj/item/stack/sandbags_empty/half, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "thn" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/shiva, /area/varadero/interior/technical_storage) +"thS" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/plating, +/area/varadero/interior/maintenance/north) "thY" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/closet/crate/trashcart, @@ -22076,10 +30137,49 @@ icon_state = "floor3" }, /area/varadero/interior/bunks) +"tia" = ( +/obj/structure/machinery/conveyor, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) "tiw" = ( /obj/structure/machinery/photocopier, /turf/open/floor/wood, /area/varadero/interior/security) +"tiF" = ( +/obj/item/tool/pickaxe, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance) +"tjn" = ( +/obj/structure/prop/structure_lattice{ + dir = 1; + health = 300 + }, +/obj/structure/prop/structure_lattice{ + dir = 1; + layer = 3.1; + pixel_y = 10 + }, +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + icon_state = "vent4"; + pixel_y = 25 + }, +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + icon_state = "windsock"; + pixel_x = 18; + pixel_y = 23 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/monsoon) +"tjs" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor/plating/bare_catwalk, +/area/varadero/exterior/farocean) "tju" = ( /obj/structure/fence, /obj/effect/decal/warning_stripes{ @@ -22109,14 +30209,36 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) -"tkH" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/landmark/crap_item, +"tkh" = ( +/turf/open/gm/dirt{ + icon_state = "desert2" + }, +/area/varadero/exterior/eastbeach) +"tkr" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) +"tkw" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ + dir = 1; + name = "\improper Theta-V Breakroom"; + req_one_access = null; + req_access = null + }, /turf/open/floor/shiva{ - dir = 5; - icon_state = "blue" + dir = 1 }, -/area/varadero/interior/administration) +/area/varadero/interior/research) +"tkF" = ( +/obj/structure/prop/rock/brown, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/security) "tkT" = ( /obj/structure/pipes/vents/pump{ dir = 8 @@ -22125,6 +30247,49 @@ icon_state = "multi_tiles" }, /area/varadero/interior/administration) +"tkV" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) +"tlq" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -10; + pixel_y = 2; + indestructible = 1; + unacidable = 1 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"tlE" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) "tlG" = ( /obj/structure/machinery/firealarm{ pixel_y = 24 @@ -22133,11 +30298,37 @@ icon_state = "white" }, /area/varadero/interior/toilets) +"tlM" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "tlT" = ( /turf/open/floor/shiva{ icon_state = "multi_tiles" }, /area/varadero/interior/electrical) +"tmm" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 1; + name = "\improper Underground Engineering Locker Room"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "multi_tiles" + }, +/area/varadero/interior/comms3) +"tmC" = ( +/turf/open/gm/dirt{ + icon_state = "desert0" + }, +/area/varadero/exterior/pontoon_beach) +"tmZ" = ( +/turf/open/gm/coast/west, +/area/varadero/exterior/lz2_near) "tng" = ( /obj/item/stool{ layer = 2.5; @@ -22147,7 +30338,7 @@ /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/maintenance/research) +/area/varadero/interior/cargo) "tnA" = ( /obj/structure/filingcabinet{ density = 0; @@ -22167,6 +30358,23 @@ icon_state = "blue" }, /area/varadero/interior/technical_storage) +"tnD" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/reagent_container/food/drinks/bottle/absinthe, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/varadero/interior/beach_bar) +"tnN" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ + dir = 1; + name = "\improper Theta-V Research Laboratory"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/varadero/interior/research) "toN" = ( /obj/item/tool/warning_cone{ pixel_x = 5; @@ -22180,6 +30388,10 @@ }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/maintenance/south) +"tpa" = ( +/obj/effect/landmark/hunter_secondary, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "tpB" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/autopsy_scanner{ @@ -22204,6 +30416,10 @@ icon_state = "green" }, /area/varadero/interior/court) +"tpO" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/swcaves) "tpV" = ( /obj/item/reagent_container/glass/bucket{ pixel_x = -13; @@ -22216,16 +30432,25 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) +"tqa" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior_protected/caves) "tqh" = ( /obj/structure/window/framed/colony/reinforced, /turf/open/floor/plating, /area/varadero/interior/research) -"tql" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 4 - }, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) "tqr" = ( /obj/structure/disposalpipe/junction{ dir = 8; @@ -22239,15 +30464,30 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) -"tqR" = ( -/turf/open/floor/plating, -/area/varadero/interior/research) -"trv" = ( -/obj/structure/machinery/iv_drip, +"tqV" = ( +/obj/structure/platform_decoration/kutjevo, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) +"trh" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/shiva{ - icon_state = "wred" + icon_state = "multi_tiles" }, -/area/varadero/interior/medical) +/area/varadero/interior/comms3) +"trB" = ( +/obj/item/stack/sheet/wood{ + amount = 40 + }, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "trC" = ( /obj/structure/window/reinforced{ dir = 4; @@ -22276,17 +30516,43 @@ }, /turf/open/floor/wood, /area/varadero/interior/bunks) -"tsN" = ( -/obj/structure/prop/ice_colony/dense/planter_box/hydro{ - density = 0 +"trI" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ + icon_state = "sparsegrass_3" }, -/obj/structure/flora/bush/desert{ - icon_state = "tree_2"; - pixel_x = -1; - pixel_y = 12 +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"trQ" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/gm/river, -/area/varadero/interior/caves/north_research) +/area/varadero/interior_protected/caves) +"tso" = ( +/obj/structure/closet/athletic_mixed, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "bluefull" + }, +/area/varadero/interior/maintenance) +"tsz" = ( +/obj/structure/prop/ice_colony/dense/planter_box/plated{ + dir = 9; + icon_state = "planter_box_soil" + }, +/obj/structure/flora/bush/ausbushes/pointybush{ + pixel_y = 11 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/hall_SE) +"tsC" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ + icon_state = "sparsegrass_3" + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "tsX" = ( /obj/structure/machinery/cm_vending/sorted/tech/tool_storage, /turf/open/floor/shiva{ @@ -22301,11 +30567,28 @@ icon_state = "greenfull" }, /area/varadero/interior/hall_SE) -"tuO" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/turf/open/auto_turf/sand_white/layer0, -/area/varadero/interior/maintenance/security) +"tuR" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior/caves/north_research) +"tuT" = ( +/obj/item/stack/cable_coil/cut, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) +"tuV" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating, +/area/varadero/interior/disposals) +"tuZ" = ( +/obj/item/storage/toolbox/mechanical{ + pixel_x = 1; + pixel_y = 7 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "tvv" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -22323,6 +30606,17 @@ }, /turf/open/floor/wood, /area/varadero/interior/hall_SE) +"twh" = ( +/obj/structure/machinery/washing_machine, +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "snow_mat" + }, +/area/varadero/interior/security) "twm" = ( /obj/structure/bed/chair{ dir = 1 @@ -22331,37 +30625,6 @@ icon_state = "green" }, /area/varadero/interior/hall_SE) -"twZ" = ( -/obj/structure/machinery/power/monitor, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/exterior/lz1_near) -"txs" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/turf/open/gm/coast/beachcorner/north_west, -/area/varadero/exterior/eastbeach) -"tyc" = ( -/obj/structure/platform_decoration/kutjevo, -/turf/open/gm/river, -/area/varadero/interior/oob) -"tyd" = ( -/obj/structure/barricade/handrail/wire{ - dir = 4 - }, -/obj/item/device/flashlight/lamp/tripod, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/exterior/comms4) -"tym" = ( -/turf/open/floor/shiva{ - dir = 4; - icon_state = "greencorners" - }, -/area/varadero/interior/hall_SE) "tyT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -22378,9 +30641,6 @@ }, /area/varadero/interior/medical) "tzp" = ( -/obj/structure/bed/chair{ - dir = 1 - }, /obj/structure/machinery/light{ dir = 8 }, @@ -22402,13 +30662,25 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) -"tBC" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ - icon_state = "sparsegrass_3" +"tAT" = ( +/obj/effect/landmark/corpsespawner/colonist/burst, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/swcaves) +"tBm" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) +/area/varadero/interior/maintenance/security) +"tCl" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/plating, +/area/varadero/interior_protected/caves/central) +"tCA" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating, +/area/varadero/interior/caves/east) "tCG" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/toolbox, @@ -22423,6 +30695,13 @@ icon_state = "red" }, /area/varadero/interior/security) +"tCV" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz2_near) "tDh" = ( /obj/structure/pipes/portables_connector{ dir = 8 @@ -22432,6 +30711,12 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) +"tDo" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/caves) "tDF" = ( /turf/open/floor/shiva{ dir = 1; @@ -22444,33 +30729,61 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/caves) -"tEf" = ( +"tEc" = ( /obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/turf/open/floor{ - icon_state = "asteroidwarning" + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/comms1) -"tEH" = ( -/obj/structure/blocker/invisible_wall, -/obj/structure/platform_decoration/kutjevo, -/turf/open/gm/river, -/area/varadero/interior/oob) +/turf/closed/wall/rock/brown, +/area/varadero/exterior/lz1_near) +"tEF" = ( +/obj/structure/prop/rock/brown, +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/central) "tEJ" = ( /turf/open/floor/shiva{ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"tFf" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/device/flashlight/lamp/green{ +"tEM" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; pixel_x = -14; - pixel_y = 14 + pixel_y = 13 }, -/obj/effect/spawner/random/toolbox, -/turf/open/floor/wood, -/area/varadero/exterior/lz1_near) +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -14; + pixel_y = 13 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"tER" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/comms4) +"tFQ" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/security) +"tFX" = ( +/obj/structure/closet/secure_closet/security_empty, +/obj/item/ammo_box/magazine/shotgun/buckshot, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "blue" + }, +/area/varadero/interior/administration) "tGl" = ( /turf/open/floor/shiva{ dir = 5; @@ -22486,11 +30799,25 @@ icon_state = "snow_mat" }, /area/varadero/interior/medical) +"tGw" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/coast/beachcorner2/north_east, +/area/varadero/exterior/pontoon_beach) "tGV" = ( /turf/closed/wall/r_wall/elevator{ dir = 1 }, /area/varadero/interior/hall_N) +"tHc" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/eastocean) "tIT" = ( /obj/structure/closet/crate/trashcart{ pixel_y = 8 @@ -22549,15 +30876,28 @@ icon_state = "white" }, /area/varadero/interior/toilets) -"tKx" = ( -/obj/structure/machinery/photocopier, -/obj/structure/machinery/power/apc{ - dir = 4; - pixel_x = 24; - start_charge = 0 +"tKI" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 }, -/turf/open/floor/wood, -/area/varadero/exterior/lz1_near) +/obj/structure/surface/table/reinforced/prison, +/obj/item/tool/hand_labeler, +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/records) +"tLu" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating, +/area/varadero/interior/maintenance/security) +"tLS" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "tMx" = ( /obj/structure/closet/secure_closet/freezer/fridge, /obj/item/key/cargo_train, @@ -22596,6 +30936,18 @@ /obj/item/clothing/suit/suspenders, /turf/open/floor/wood, /area/varadero/interior/bunks) +"tMZ" = ( +/turf/closed/wall/r_wall/unmeltable, +/area/varadero/exterior/lz2_near) +"tNy" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/pontoon_beach) "tNE" = ( /obj/structure/filingcabinet{ density = 0; @@ -22625,6 +30977,12 @@ /obj/effect/spawner/random/tool, /turf/open/floor/carpet, /area/varadero/interior/administration) +"tOd" = ( +/obj/item/clothing/suit/armor/vest, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/electrical) "tOp" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -22635,6 +30993,24 @@ icon_state = "yellowfull" }, /area/varadero/interior/hall_NW) +"tOx" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/prop/invuln/minecart_tracks{ + dir = 8 + }, +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/oob) "tOK" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/camera{ @@ -22646,6 +31022,10 @@ icon_state = "bluefull" }, /area/varadero/interior/administration) +"tOV" = ( +/obj/item/tool/warning_cone, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/digsite) "tPz" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -22670,16 +31050,14 @@ icon_state = "floor3" }, /area/varadero/interior/cargo) -"tPL" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" +"tPK" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice8"; + pixel_x = 16; + pixel_y = 24 }, -/area/varadero/interior/medical) +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "tPS" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/microwave{ @@ -22697,6 +31075,12 @@ icon_state = "red" }, /area/varadero/interior/morgue) +"tQy" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/shiva{ + icon_state = "snow_mat" + }, +/area/varadero/interior/maintenance) "tQz" = ( /obj/structure/sink{ pixel_y = 15 @@ -22729,26 +31113,14 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, -/area/varadero/interior/medical) -"tRu" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice8"; - pixel_x = 16; - pixel_y = 24 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/turf/open/floor/shiva{ + icon_state = "wredfull" }, -/area/varadero/interior/maintenance) +/area/varadero/interior/medical) "tRN" = ( -/obj/structure/reagent_dispensers/water_cooler{ - density = 0; - pixel_y = 19 - }, -/turf/open/floor/wood, -/area/varadero/exterior/lz1_near) +/obj/structure/prop/rock/brown, +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves/digsite) "tSg" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/segment, @@ -22757,11 +31129,22 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) +"tSK" = ( +/obj/structure/window/framed/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "tSQ" = ( /obj/effect/landmark/xeno_spawn, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/caves/north_research) +"tSR" = ( +/obj/structure/window_frame/colony/reinforced, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/caves) "tTo" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/segment, @@ -22772,6 +31155,17 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_NW) +"tTq" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/structure/blocker/invisible_wall/water, +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/farocean) "tTN" = ( /obj/structure/stairs/perspective{ color = "#b29082"; @@ -22783,6 +31177,10 @@ icon_state = "multi_tiles" }, /area/varadero/interior/disposals) +"tTU" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/east) "tUd" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -22795,34 +31193,43 @@ icon_state = "redfull" }, /area/varadero/interior/security) -"tUI" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/security/glass{ - dir = 1; - name = "\improper Underground Security Marshal's Office"; - req_access_txt = "100" - }, -/turf/open/floor/plating, -/area/varadero/interior/security) +"tVf" = ( +/obj/structure/closet/crate, +/obj/item/tool/stamp, +/obj/item/tool/wet_sign, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) "tVj" = ( /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/caves/east) +"tVl" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "greenfull" + }, +/area/varadero/interior/hall_SE) "tVo" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ icon_state = "multi_tiles" }, /area/varadero/interior/cargo) -"tVA" = ( -/obj/structure/surface/table, -/obj/effect/landmark/objective_landmark/far, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "greenfull" +"tVD" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/item/stack/tile/plasteel{ + layer = 2.89; + pixel_x = 17; + pixel_y = 16 }, -/area/varadero/interior/hall_SE) +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/research) "tVX" = ( /obj/structure/surface/rack, /obj/item/maintenance_jack, @@ -22834,6 +31241,10 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/maintenance/security) +"tWT" = ( +/obj/structure/blocker/invisible_wall/water, +/turf/open/gm/coast/west, +/area/varadero/exterior/farocean) "tXg" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -22850,6 +31261,14 @@ "tXu" = ( /turf/closed/wall/r_wall/unmeltable, /area/varadero/interior/caves/east) +"tXv" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "tXE" = ( /turf/open/floor/wood, /area/varadero/interior/administration) @@ -22874,6 +31293,17 @@ icon_state = "red" }, /area/varadero/interior/medical) +"tYw" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/barricade/wooden{ + dir = 8 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "tYP" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -22888,6 +31318,34 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) +"tYT" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/floor/shiva{ + icon_state = "purple" + }, +/area/varadero/interior/research) +"tZl" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/closed/wall/rock/brown, +/area/varadero/exterior/monsoon) +"tZm" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 1; + name = "\improper Underground Engineering Locker Room"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "multi_tiles" + }, +/area/varadero/interior/electrical) "tZr" = ( /obj/item/toy/deck/uno{ pixel_y = 6 @@ -22921,34 +31379,43 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) -"ubn" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 +"uaY" = ( +/obj/structure/machinery/door/poddoor/almayer/planet_side_blastdoor{ + id = "undergroundhangarwest"; + unacidable = 1; + name = "Pontoon West Door"; + openspeed = 17; + dir = 4 }, -/obj/structure/barricade/handrail{ - desc = "Your platforms look pretty heavy king, let me support them for you."; +/turf/open/floor/plating/icefloor{ + dir = 4; + icon_state = "warnplate" + }, +/area/varadero/interior/cargo) +"ubF" = ( +/obj/structure/disposalpipe/segment{ dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" + icon_state = "pipe-c" }, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) -"ubB" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/medical_pod/sleeper, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" }, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ +/area/varadero/interior/medical) +"ubH" = ( +/obj/structure/closet/secure_closet/personal/patient, +/obj/structure/barricade/handrail/wire{ dir = 4 }, -/obj/structure/barricade/handrail{ - desc = "Your platforms look pretty heavy king, let me support them for you."; - dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/turf/open/gm/river, -/area/varadero/interior/oob) +/area/varadero/interior/medical) +"ubJ" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) "ubK" = ( /obj/structure/machinery/power/geothermal, /turf/open/floor/plating/icefloor{ @@ -22963,6 +31430,9 @@ /obj/structure/machinery/firealarm{ pixel_y = 24 }, +/obj/structure/machinery/light{ + dir = 4 + }, /turf/open/floor/shiva{ dir = 8; icon_state = "yellowfull" @@ -22978,9 +31448,13 @@ icon_state = "purple" }, /area/varadero/interior/research) -"ucx" = ( -/turf/open/gm/river/ocean, -/area/varadero/exterior/eastocean) +"ucL" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/monsoon) "udg" = ( /obj/structure/closet/secure_closet/engineering_welding, /obj/effect/landmark/objective_landmark/medium, @@ -22989,17 +31463,25 @@ icon_state = "blue" }, /area/varadero/interior/technical_storage) -"udX" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/varadero/interior/cargo) +"udp" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "ueg" = ( /obj/vehicle/train/cargo/trolley, /turf/open/floor/shiva{ icon_state = "blue" }, /area/varadero/interior/hall_SE) +"uet" = ( +/turf/open/gm/coast/beachcorner/north_west, +/area/varadero/interior/caves/east) +"ueB" = ( +/obj/structure/cable, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) "ueP" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 @@ -23024,6 +31506,15 @@ }, /turf/open/gm/dirt, /area/varadero/exterior/pontoon_beach) +"ufB" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper Underground Men's Restroom" + }, +/turf/open/floor/plating, +/area/varadero/interior/toilets) "ufE" = ( /obj/structure/barricade/handrail/wire{ dir = 4 @@ -23042,15 +31533,6 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) -"ufH" = ( -/obj/structure/bed/chair{ - buckling_y = 18; - dir = 8 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/security) "ufV" = ( /turf/open/floor/shiva{ dir = 4; @@ -23080,6 +31562,16 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"uhi" = ( +/obj/structure/prop/ice_colony/dense/planter_box/hydro{ + desc = "A high-power hydroelectric generator."; + name = "hydroelectric generator" + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/farocean) "uhD" = ( /obj/structure/machinery/light, /turf/open/floor/shiva{ @@ -23087,45 +31579,16 @@ icon_state = "redfull" }, /area/varadero/interior/hall_SE) -"uhJ" = ( -/obj/item/trash/boonie, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" - }, -/area/varadero/exterior/lz1_near) -"uhW" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/ashtray/plastic, -/obj/item/trash/cigbutt/ucigbutt{ - pixel_x = 5; - pixel_y = 12 - }, -/obj/item/trash/cigbutt/ucigbutt, -/obj/item/trash/cigbutt/cigarbutt{ - pixel_x = 5; - pixel_y = 11 - }, -/obj/item/tool/lighter/zippo{ - pixel_x = -8; - pixel_y = 14 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/exterior/lz1_near) +"uhV" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves/swcaves) "uiq" = ( /obj/structure/surface/table, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/hall_N) -"uiv" = ( -/obj/structure/sign/safety/airlock{ - pixel_x = 8 - }, -/turf/closed/wall, -/area/varadero/interior/morgue) "uiy" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/taperecorder, @@ -23134,21 +31597,12 @@ icon_state = "red" }, /area/varadero/interior/security) -"ujo" = ( -/obj/structure/barricade/handrail{ - desc = "Your platforms look pretty heavy king, let me support them for you."; - dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +"ujg" = ( +/obj/effect/landmark/ert_spawns/groundside_xeno, +/turf/open/shuttle{ + icon_state = "floor6" }, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) +/area/varadero/interior_protected/vessel) "ujp" = ( /obj/structure/bed/chair{ buckling_y = 18; @@ -23163,6 +31617,17 @@ icon_state = "yellow" }, /area/varadero/interior/hall_NW) +"ujR" = ( +/obj/item/shard{ + icon_state = "large"; + pixel_x = -5; + pixel_y = -6 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "snow_mat" + }, +/area/varadero/interior/maintenance) "ukw" = ( /obj/structure/window/reinforced{ dir = 1 @@ -23186,6 +31651,13 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) +"ulb" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/eastocean) "uli" = ( /obj/structure/bed/chair/hunter{ dir = 4 @@ -23212,6 +31684,11 @@ /obj/structure/bed/chair{ dir = 1 }, +/obj/structure/machinery/power/apc{ + dir = 8; + pixel_x = -24; + start_charge = 0 + }, /turf/open/floor/shiva{ icon_state = "floor3" }, @@ -23240,13 +31717,6 @@ icon_state = "red" }, /area/varadero/interior/security) -"unm" = ( -/obj/structure/largecrate/random, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "multi_tiles" - }, -/area/varadero/interior/hall_SE) "unw" = ( /obj/structure/machinery/alarm{ pixel_y = 24 @@ -23266,12 +31736,81 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/wood, /area/varadero/interior/security) +"unH" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"uoh" = ( +/obj/structure/flora/bush/desert{ + icon_state = "tree_2"; + pixel_x = -18; + pixel_y = -8 + }, +/obj/structure/prop/ice_colony/dense/planter_box/hydro{ + pixel_x = -17; + pixel_y = -19 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) +"uon" = ( +/obj/structure/largecrate/random, +/obj/item/shard{ + icon_state = "large"; + pixel_x = -5; + pixel_y = -6 + }, +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/east) "uoO" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/security) +"uoU" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/item/shard{ + icon_state = "medium" + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -1; + pixel_y = 9; + indestructible = 1; + unacidable = 1 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"upb" = ( +/obj/structure/barricade/handrail/wire{ + dir = 8; + layer = 3.5 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) +"upH" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"upL" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/plating, +/area/varadero/interior_protected/maintenance/south) "upO" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/condiment/saltshaker, @@ -23294,13 +31833,28 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) -"uqA" = ( -/obj/structure/platform/kutjevo/smooth{ +"uqx" = ( +/obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/obj/effect/overlay/palmtree_r, +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/maintenance) +"uqU" = ( +/obj/structure/surface/table/woodentable, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) +"uqW" = ( +/obj/structure/prop/rock/brown, /turf/open/gm/dirt, -/area/varadero/interior/oob) +/area/varadero/interior/caves/east) "urd" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -23314,19 +31868,18 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_N) +"urD" = ( +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/lz2_near) "urE" = ( /obj/structure/bed/chair/comfy/lime{ dir = 8 }, -/turf/open/floor/wood, +/turf/open/floor/carpet, /area/varadero/interior/research) -"usp" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/comms2) "usB" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -23336,6 +31889,19 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) +"usQ" = ( +/obj/item/facepaint/sunscreen_stick, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"uti" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating, +/area/varadero/interior/comms2) +"utZ" = ( +/obj/structure/surface/rack, +/obj/item/tool/wirecutters, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "uuj" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 @@ -23383,6 +31949,12 @@ icon_state = "multi_tiles" }, /area/varadero/interior_protected/vessel) +"uvr" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "uvw" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -23403,27 +31975,6 @@ /obj/structure/machinery/door/window/westleft, /turf/open/floor/interior/plastic, /area/varadero/interior/security) -"uvG" = ( -/obj/structure/surface/table, -/obj/item/tool/kitchen/utensil/knife, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice12"; - pixel_x = 16; - pixel_y = 24 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/mess) -"uvV" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/closet/crate/ammo/alt, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/cargo) "uvX" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -23433,17 +31984,27 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) -"uwu" = ( -/obj/structure/closet/crate/secure, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/cargo) "uww" = ( /turf/open/floor/shiva{ icon_state = "yellow" }, /area/varadero/interior/hall_N) +"uwJ" = ( +/obj/structure/surface/rack, +/obj/item/tool/screwdriver, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) +"uwN" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper Underground Women's Restroom" + }, +/turf/open/floor/plating, +/area/varadero/interior/toilets) "uwQ" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/box/lightstick, @@ -23452,36 +32013,27 @@ icon_state = "yellow" }, /area/varadero/interior/electrical) -"uxF" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 1 - }, -/turf/open/gm/river, -/area/varadero/interior/caves/north_research) -"uxO" = ( -/obj/structure/surface/table/woodentable, -/obj/item/paper_bin/uscm{ - pixel_x = 12; - pixel_y = 14 - }, -/turf/open/floor/carpet, -/area/varadero/interior/library) -"uxQ" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 +"uxi" = ( +/obj/structure/stairs/perspective{ + color = "#6b675e"; + dir = 1; + icon_state = "p_stair_full" }, -/obj/structure/platform/kutjevo/smooth, /obj/structure/platform/kutjevo/smooth{ - dir = 8 + dir = 4; + climb_delay = 1; + layer = 2.99 }, -/obj/structure/barricade/handrail{ - desc = "Your platforms look pretty heavy king, let me support them for you."; - dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" }, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) +/area/varadero/interior_protected/vessel) +"uxM" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/coast/west, +/area/varadero/exterior/farocean) "uyd" = ( /obj/structure/machinery/firealarm{ pixel_y = 24 @@ -23531,14 +32083,28 @@ icon_state = "floor3" }, /area/varadero/interior/administration) -"uzP" = ( -/obj/structure/surface/table/reinforced/prison{ +"uAt" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ dir = 1; - flipped = 1 + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null }, -/obj/effect/landmark/objective_landmark/far, -/turf/open/floor/wood, -/area/varadero/interior/hall_SE) +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) +"uAM" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"uBV" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/north) "uBX" = ( /obj/vehicle/train/cargo/engine, /turf/open/floor/shiva{ @@ -23587,18 +32153,6 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) -"uEx" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/barricade/handrail{ - desc = "Your platforms look pretty heavy king, let me support them for you."; - dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" - }, -/turf/open/gm/coast/west, -/area/varadero/exterior/pontoon_beach) "uEz" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -23617,6 +32171,16 @@ icon_state = "doubleside" }, /area/varadero/interior/chapel) +"uEF" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/obj/structure/barricade/handrail/wire{ + dir = 4 + }, +/obj/structure/platform, +/turf/open/gm/river/desert/deep/covered, +/area/varadero/interior/maintenance/north) "uEI" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -23624,6 +32188,11 @@ icon_state = "yellowfull" }, /area/varadero/interior/hall_SE) +"uFq" = ( +/turf/open/gm/dirt{ + icon_state = "desert0" + }, +/area/varadero/exterior/monsoon) "uFE" = ( /obj/effect/decal/cleanable/blood/oil, /obj/structure/machinery/landinglight/ds2/delaythree{ @@ -23634,19 +32203,19 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) -"uFI" = ( -/obj/structure/sign/safety/high_voltage, -/obj/structure/sign/safety/hazard{ - pixel_x = 15 - }, -/turf/closed/wall/r_wall, -/area/varadero/exterior/lz1_near) "uFJ" = ( /turf/open/floor/shiva{ dir = 8; icon_state = "red" }, /area/varadero/interior/security) +"uFO" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "uGf" = ( /obj/effect/decal/warning_stripes{ icon_state = "N" @@ -23656,34 +32225,21 @@ icon_state = "yellowcorners" }, /area/varadero/interior/cargo) -"uGZ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/folder/black_random{ - pixel_x = 6; - pixel_y = -3 - }, -/obj/item/folder/black_random{ - pixel_x = -1; - pixel_y = 5 - }, -/obj/item/folder/black_random{ - pixel_x = -3; - pixel_y = -1 - }, -/obj/structure/machinery/light/small{ - dir = 1 +"uGs" = ( +/obj/structure/machinery/power/terminal{ + dir = 8 }, -/turf/open/floor/shiva{ - icon_state = "floor3" +/turf/open/floor{ + icon_state = "bcircuit" }, -/area/varadero/interior/records) -"uHt" = ( -/obj/structure/machinery/door/poddoor/two_tile/secure{ - id = "colony_sec_armory"; - name = "Secure Armory" +/area/varadero/interior/maintenance/north) +"uHD" = ( +/obj/structure/machinery/landinglight/ds1/spoke{ + pixel_y = -5; + pixel_x = -13 }, -/turf/open/floor/plating, -/area/varadero/interior/security) +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "uHY" = ( /obj/structure/prop/rock/brown, /turf/open/auto_turf/sand_white/layer1, @@ -23702,31 +32258,6 @@ icon_state = "multi_tiles" }, /area/varadero/interior/disposals) -"uIj" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 - }, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 - }, -/obj/item/ammo_magazine/handful/shotgun/incendiary, -/turf/open/floor/wood, -/area/varadero/interior/bunks) "uIl" = ( /obj/structure/machinery/alarm{ dir = 4; @@ -23743,24 +32274,26 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor/plating, -/area/varadero/interior/security) -"uJk" = ( -/obj/structure/stairs/perspective{ - color = "#6b675e"; - icon_state = "p_stair_full" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior_protected/vessel) +/area/varadero/interior/security) +"uIR" = ( +/turf/closed/wall, +/area/varadero/interior_protected/caves/central) +"uIW" = ( +/turf/open/gm/coast/north, +/area/varadero/exterior/lz2_near) "uJO" = ( /obj/structure/sign/safety/airlock{ pixel_x = 8 }, /turf/closed/wall, /area/varadero/interior/chapel) +"uJT" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/closed/wall/r_wall, +/area/varadero/interior/research) "uKr" = ( /obj/structure/machinery/photocopier{ pixel_y = 4 @@ -23768,11 +32301,35 @@ /turf/open/floor/wood{ icon_state = "wood-broken6" }, -/area/varadero/exterior/lz1_near) -"uLa" = ( -/obj/item/clothing/mask/rebreather, -/turf/open/floor/carpet, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/dock_control) +"uKY" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) +"uKZ" = ( +/obj/item/stack/tile/plasteel{ + layer = 2.89; + pixel_x = 17; + pixel_y = 16 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) "uLP" = ( /obj/structure/surface/rack, /obj/item/clothing/head/caphat{ @@ -23815,6 +32372,16 @@ icon_state = "yellow" }, /area/varadero/interior/technical_storage) +"uMQ" = ( +/obj/item/ammo_casing/shell{ + icon_state = "cartridge_1_1" + }, +/obj/effect/decal/cleanable/blood, +/obj/item/weapon/gun/pistol/mod88, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/caves) "uNh" = ( /obj/structure/closet/secure_closet/personal{ density = 0; @@ -23835,20 +32402,11 @@ icon_state = "multi_tiles" }, /area/varadero/interior/laundry) -"uNy" = ( -/obj/structure/surface/table/reinforced/prison, -/turf/open/floor/shiva{ - icon_state = "redfull" - }, -/area/varadero/interior/medical) -"uND" = ( -/obj/structure/closet/firecloset, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" - }, -/area/varadero/exterior/lz1_near) +"uNz" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/item/lightstick/variant/planted, +/turf/open/gm/coast/beachcorner/south_east, +/area/varadero/exterior/farocean) "uNJ" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -23859,25 +32417,38 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) -"uOb" = ( -/obj/structure/machinery/power/apc{ - dir = 1; - pixel_y = 24; - start_charge = 0 +"uOk" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform_decoration/kutjevo{ + dir = 4 }, +/obj/structure/prop/invuln/minecart_tracks{ + dir = 10 + }, +/obj/structure/platform_decoration/kutjevo{ + dir = 4 + }, +/obj/structure/blocker/invisible_wall/water, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/maintenance/north) -"uOz" = ( -/obj/structure/closet/secure_closet/medical3{ - req_access_txt = "100" - }, +/area/varadero/interior/oob) +"uOo" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/bed/roller, /turf/open/floor/shiva{ - dir = 10; - icon_state = "wred" + dir = 8; + icon_state = "red" }, -/area/varadero/interior/medical) +/area/varadero/interior/morgue) "uOC" = ( /obj/structure/closet/emcloset, /turf/open/floor/shiva{ @@ -23885,22 +32456,25 @@ icon_state = "green" }, /area/varadero/interior/hall_N) +"uOF" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -14; + pixel_y = 13 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/shiva{ + icon_state = "snow_mat" + }, +/area/varadero/interior/maintenance) "uOL" = ( /turf/open/floor/shiva{ dir = 1; icon_state = "purple" }, /area/varadero/interior/hall_NW) -"uOQ" = ( -/obj/item/paper/crumpled/bloody, -/turf/open/floor/carpet, -/area/varadero/exterior/lz1_near) -"uPo" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/auto_turf/sand_white/layer0, -/area/varadero/interior/maintenance/security) "uQa" = ( /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" @@ -23909,10 +32483,6 @@ "uQi" = ( /turf/closed/wall/r_wall/unmeltable, /area/varadero/interior/cargo) -"uQC" = ( -/obj/structure/bed/chair/comfy/beige, -/turf/open/floor/wood, -/area/varadero/exterior/lz1_near) "uQH" = ( /obj/structure/bed/chair{ dir = 1 @@ -23934,29 +32504,46 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) -"uRL" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 1 +"uRa" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/gm/dirt{ + icon_state = "desert3" }, -/turf/open/gm/dirt, /area/varadero/exterior/eastbeach) "uRU" = ( /turf/closed/wall/r_wall/elevator, /area/varadero/interior/hall_N) -"uTr" = ( -/obj/structure/prop/invuln/minecart_tracks{ - dir = 8 - }, -/obj/structure/plasticflaps/mining, +"uSx" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating, +/area/varadero/interior/cargo) +"uSF" = ( /obj/structure/platform/kutjevo/smooth{ - dir = 1 + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/item/stack/sheet/metal, +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"uTj" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/blocker/invisible_wall, +/area/varadero/exterior/comms4) +"uTq" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/item/device/flashlight/lamp/tripod, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/comms1) +/area/varadero/interior/maintenance/security) +"uTu" = ( +/turf/open/gm/coast/beachcorner/south_east, +/area/varadero/exterior/pontoon_beach) "uTA" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/corsat{ @@ -23970,6 +32557,11 @@ icon_state = "wred" }, /area/varadero/interior/medical) +"uTY" = ( +/obj/structure/prop/rock/brown, +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "uTZ" = ( /obj/structure/pipes/standard/manifold/visible{ dir = 1 @@ -24017,6 +32609,12 @@ icon_state = "greenfull" }, /area/varadero/interior/medical) +"uVe" = ( +/turf/open/floor/shiva{ + dir = 6; + icon_state = "yellow" + }, +/area/varadero/interior/cargo) "uVo" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice4"; @@ -24041,6 +32639,17 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"uVR" = ( +/obj/structure/barricade/wooden{ + dir = 4 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/varadero/interior/beach_bar) "uVV" = ( /obj/structure/machinery/light{ dir = 8 @@ -24062,6 +32671,12 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) +"uWo" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt{ + icon_state = "desert0" + }, +/area/varadero/exterior/eastocean) "uWA" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -24069,12 +32684,15 @@ /obj/structure/window/framed/colony, /turf/open/floor/plating, /area/varadero/interior/mess) -"uXo" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 1 +"uWW" = ( +/obj/structure/barricade/handrail/wire{ + layer = 3.1 }, -/turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) +/obj/structure/pipes/binary/passive_gate, +/turf/open/gm/river/desert/deep{ + base_river_slowdown = 0 + }, +/area/varadero/interior/maintenance/north) "uXw" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -24083,7 +32701,14 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"uXS" = ( +"uXR" = ( +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/north) +"uXS" = ( /turf/closed/wall, /area/varadero/interior/toilets) "uXX" = ( @@ -24107,6 +32732,13 @@ icon_state = "floor3" }, /area/varadero/interior/mess) +"uYJ" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/pontoon_beach) "uYL" = ( /obj/item/stack/tile/plasteel{ pixel_x = 8; @@ -24122,17 +32754,27 @@ icon_state = "asteroidplating" }, /area/varadero/interior/electrical) -"uZp" = ( -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/landmark/survivor_spawner, -/turf/open/floor/carpet, +"uZK" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, /area/varadero/exterior/lz1_near) -"vao" = ( -/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ - icon_state = "sparsegrass_2" +"uZY" = ( +/obj/structure/machinery/door/airlock/almayer/engineering/glass{ + req_access = null; + req_one_access = null }, -/turf/open/gm/dirt, -/area/varadero/exterior/pontoon_beach) +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellowfull" + }, +/area/varadero/interior/cargo) "vap" = ( /obj/structure/machinery/alarm{ pixel_y = 24 @@ -24146,12 +32788,6 @@ icon_state = "red" }, /area/varadero/interior/security) -"vaF" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 1 - }, -/turf/open/gm/coast/south, -/area/varadero/exterior/eastbeach) "vaV" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/flashlight/lamp/green{ @@ -24178,12 +32814,19 @@ icon_state = "purple" }, /area/varadero/interior/hall_NW) -"vbB" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" +"vbH" = ( +/obj/effect/overlay/palmtree_r{ + icon_state = "palm2" }, -/area/varadero/interior/electrical) +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"vbS" = ( +/obj/effect/overlay/palmtree_r{ + icon_state = "palm2"; + pixel_x = 21 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) "vcc" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -24203,7 +32846,9 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, /area/varadero/interior/administration) "vcj" = ( /obj/structure/surface/table/reinforced/prison, @@ -24221,6 +32866,22 @@ }, /turf/open/floor/wood, /area/varadero/interior/security) +"vct" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/caves/swcaves) +"vcz" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"vcR" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush{ + pixel_x = -4 + }, +/turf/open/gm/coast/beachcorner/north_east, +/area/varadero/interior/caves/east) "vdq" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -24229,6 +32890,14 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) +"vdL" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves/swcaves) +"vdQ" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves) "vdV" = ( /obj/item/tool/warning_cone{ pixel_x = -9 @@ -24243,6 +32912,9 @@ /obj/structure/machinery/door/window/westleft, /turf/open/floor/interior/plastic/alt, /area/varadero/interior/security) +"veV" = ( +/turf/open/gm/coast/beachcorner2/south_west, +/area/varadero/exterior/monsoon) "veW" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/segment, @@ -24300,21 +32972,38 @@ icon_state = "asteroidwarning" }, /area/varadero/exterior/lz1_near) -"vfS" = ( -/obj/item/ammo_casing/shell{ - icon_state = "cartridge_1_1" +"vfH" = ( +/obj/structure/surface/table, +/obj/item/bodybag, +/obj/structure/machinery/light, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "red" }, -/obj/item/weapon/gun/pistol/m1911, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/area/varadero/interior/morgue) +"vgu" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null }, -/area/varadero/interior_protected/caves) +/turf/open/floor/shiva{ + icon_state = "wred" + }, +/area/varadero/interior/medical) "vgA" = ( /obj/item/stool{ icon_state = "stool_alt" }, /turf/open/floor/shiva, /area/varadero/interior/technical_storage) +"vgH" = ( +/obj/structure/blocker/fog, +/obj/structure/blocker/invisible_wall/water, +/turf/open/gm/coast/beachcorner/south_east, +/area/varadero/exterior/farocean) "vhb" = ( /obj/structure/machinery/light{ dir = 1 @@ -24337,15 +33026,42 @@ }, /turf/closed/wall, /area/varadero/interior/library) -"vil" = ( -/obj/structure/machinery/light{ - dir = 4 +"vhB" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/blocker/invisible_wall/water, +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" }, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" +/area/varadero/exterior/farocean) +"vhI" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/exterior/lz1_near) +/area/varadero/interior_protected/caves/central) +"vhJ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/clipboard{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/tool/pen/red{ + pixel_x = 6; + pixel_y = 9 + }, +/obj/item/paper{ + pixel_x = -7; + pixel_y = 7 + }, +/obj/item/device/flashlight/lamp/green{ + pixel_x = -14; + pixel_y = 14 + }, +/obj/structure/machinery/light, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) "vio" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = -12 @@ -24364,6 +33080,22 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) +"viP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper Underground Power Substation" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "multi_tiles" + }, +/area/varadero/interior/comms3) "viY" = ( /obj/structure/prop/structure_lattice{ dir = 1; @@ -24387,12 +33119,6 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) -"vjv" = ( -/obj/structure/closet/crate/freezer/rations, -/turf/open/floor{ - icon_state = "freezerfloor" - }, -/area/varadero/interior/cargo) "vjA" = ( /obj/structure/reagent_dispensers/beerkeg/alt, /obj/structure/machinery/light{ @@ -24402,6 +33128,31 @@ icon_state = "freezerfloor" }, /area/varadero/interior/cargo) +"vjO" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"vjZ" = ( +/obj/structure/platform_decoration/kutjevo, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/farocean) +"vke" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Underground Visitor Entrance" + }, +/turf/open/floor/plating, +/area/varadero/interior/hall_SE) "vku" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/item/stool, @@ -24410,16 +33161,41 @@ icon_state = "purplefull" }, /area/varadero/interior/research) -"vlJ" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +"vll" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/item/reagent_container/glass/bucket{ + pixel_y = -3 }, -/obj/structure/stairs/perspective{ - color = "#6b675e"; - icon_state = "p_stair_full" +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"vlm" = ( +/obj/item/lightstick/variant/planted, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" }, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior_protected/vessel) +/area/varadero/exterior/farocean) +"vlw" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) +"vlB" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"vlL" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice8"; + pixel_x = 16; + pixel_y = 24 + }, +/obj/structure/window_frame/colony, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) "vmc" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -24430,24 +33206,16 @@ /obj/structure/flora/bush/ausbushes/var3/sparsegrass, /turf/open/gm/dirt, /area/varadero/exterior/lz1_near) -"vmy" = ( -/obj/structure/prop/invuln/minecart_tracks{ - dir = 8 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/closet/crate/miningcar{ - layer = 3.1; - name = "\improper materials storage bin"; - pixel_y = 8 +"vmY" = ( +/obj/item/stack/rods, +/obj/item/shard{ + icon_state = "medium" }, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/obj/item/stack/sheet/metal, +/turf/open/shuttle{ + icon_state = "floor6" }, -/area/varadero/interior/oob) +/area/varadero/interior_protected/vessel) "vnb" = ( /obj/structure/bed/chair/hunter, /turf/open/floor/corsat{ @@ -24485,24 +33253,54 @@ icon_state = "red" }, /area/varadero/interior/security) -"vpB" = ( -/obj/structure/closet/crate/trashcart, +"vom" = ( +/obj/item/storage/beer_pack, /turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) -"vpF" = ( -/obj/structure/machinery/light/small{ - dir = 8 +/area/varadero/exterior/pontoon_beach) +"voJ" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice1"; + pixel_x = -16; + pixel_y = -8 }, -/obj/structure/surface/rack, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) +"vph" = ( +/obj/item/stack/tile/plasteel{ + pixel_x = 8; + pixel_y = 6 }, -/area/varadero/interior/maintenance/security) +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/east) +"vpr" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) +"vpQ" = ( +/obj/structure/machinery/storm_siren{ + dir = 4; + pixel_x = -3 + }, +/turf/open/gm/coast/west, +/area/varadero/exterior/pool) "vpV" = ( /turf/open/floor/shiva{ icon_state = "snow_mat" }, /area/varadero/interior/security) +"vqd" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/hall_SE) "vqw" = ( /obj/structure/bed/chair/office/dark{ dir = 1 @@ -24519,15 +33317,45 @@ icon_state = "asteroidplating" }, /area/varadero/interior/caves/east) -"vqV" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +"vqK" = ( +/obj/item/stack/sheet/wood, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/east) +"vqR" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 8 }, -/area/varadero/interior/comms2) +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/comms4) +"vqU" = ( +/obj/effect/landmark/corpsespawner/chef, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "multi_tiles" + }, +/area/varadero/interior/mess) "vqY" = ( /turf/open/floor/carpet, /area/varadero/interior/security) +"vqZ" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -16; + pixel_y = 13 + }, +/turf/open/gm/dirt{ + icon_state = "desert3" + }, +/area/varadero/interior/maintenance/north) "vrh" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -24543,21 +33371,41 @@ icon_state = "floor3" }, /area/varadero/interior/hall_SE) -"vrp" = ( -/obj/structure/prop/rock/brown, -/turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) +"vru" = ( +/obj/structure/bed/chair/comfy/beige, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) "vrw" = ( /obj/structure/machinery/conveyor, /turf/open/floor/plating, /area/varadero/interior/cargo) -"vrB" = ( -/obj/structure/platform/kutjevo/smooth{ +"vrO" = ( +/obj/structure/pipes/vents/pump{ dir = 8 }, -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) +/obj/structure/bed/chair{ + buckling_y = 18; + dir = 8 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/security) +"vsa" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/cargo) +"vss" = ( +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/pontoon_beach) "vsJ" = ( /obj/structure/machinery/light{ dir = 4 @@ -24604,25 +33452,27 @@ icon_state = "red" }, /area/varadero/interior/security) -"vui" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/landmark/corpsespawner/colonist/random/burst, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" - }, -/area/varadero/interior/cargo) -"vuj" = ( +"vus" = ( /obj/structure/stairs/perspective{ - color = "#b29082"; + color = "#6b675e"; icon_state = "p_stair_full" }, /obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/vessel) +"vuA" = ( +/obj/structure/barricade/handrail/wire{ dir = 4 }, -/turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/eastbeach) "vuE" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -24636,6 +33486,14 @@ }, /turf/open/floor/carpet, /area/varadero/interior/hall_SE) +"vuQ" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 + }, +/turf/closed/wall/rock/brown, +/area/varadero/exterior/eastbeach) "vvh" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -24660,22 +33518,18 @@ icon_state = "redcorners" }, /area/varadero/interior/security) -"vwl" = ( -/obj/structure/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/obj/structure/pipes/vents/pump{ - dir = 1 +"vwT" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 }, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "red" +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/hall_N) -"vxA" = ( -/turf/open/gm/coast/east, -/area/varadero/interior/oob) +/area/varadero/interior/maintenance/research) +"vxi" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/digsite) "vxM" = ( /obj/structure/machinery/light{ dir = 8 @@ -24686,19 +33540,33 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) -"vxW" = ( -/obj/structure/window/framed/colony/reinforced/hull, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/caves/east) -"vyU" = ( -/obj/structure/blocker/invisible_wall, -/obj/structure/platform_decoration/kutjevo{ +"vyp" = ( +/obj/structure/machinery/light/small{ dir = 1 }, -/turf/open/gm/river, -/area/varadero/interior/oob) +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"vyy" = ( +/obj/structure/catwalk, +/obj/structure/platform{ + layer = 2.15; + density = 0; + climb_delay = 0 + }, +/turf/open/gm/river/desert/deep{ + base_river_slowdown = 0 + }, +/area/varadero/interior/maintenance/north) +"vyI" = ( +/obj/structure/catwalk, +/obj/structure/filtration/flacculation_arm{ + density = 0; + layer = 2.1 + }, +/turf/open/gm/river/desert/deep{ + base_river_slowdown = 0 + }, +/area/varadero/interior/maintenance/north) "vyX" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/box/evidence, @@ -24708,10 +33576,33 @@ icon_state = "red" }, /area/varadero/interior/security) -"vzy" = ( -/obj/structure/prop/rock/brown, -/turf/open/gm/river, -/area/varadero/interior/maintenance) +"vzq" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"vzt" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/hall_SE) +"vzB" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/item/tool/warning_cone, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 10; + pixel_y = 2; + indestructible = 1; + unacidable = 1 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "vzH" = ( /obj/structure/barricade/handrail/wire{ layer = 3.1 @@ -24726,22 +33617,6 @@ icon_state = "yellowfull" }, /area/varadero/interior/cargo) -"vzX" = ( -/obj/structure/coatrack{ - pixel_x = 14; - pixel_y = 9 - }, -/obj/item/clothing/head/bowlerhat{ - pixel_x = 12; - pixel_y = 23 - }, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_x = 9; - pixel_y = -4 - }, -/turf/open/floor/wood, -/area/varadero/interior/administration) "vzY" = ( /obj/structure/sink{ pixel_y = 15 @@ -24759,6 +33634,22 @@ icon_state = "red" }, /area/varadero/interior/security) +"vAz" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/pipe_water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) +"vAF" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/hall_N) "vAI" = ( /obj/structure/pipes/standard/manifold/hidden/green, /turf/open/floor/plating/icefloor{ @@ -24773,6 +33664,12 @@ icon_state = "redfull" }, /area/varadero/interior/hall_SE) +"vAZ" = ( +/obj/item/facepaint/sunscreen_stick, +/turf/open/gm/dirt{ + icon_state = "desert0" + }, +/area/varadero/exterior/lz1_near) "vBk" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -24788,6 +33685,38 @@ icon_state = "multi_tiles" }, /area/varadero/interior/research) +"vBC" = ( +/obj/structure/platform/kutjevo/rock{ + dir = 1 + }, +/obj/structure/platform/kutjevo/rock, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_y = -3 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior/cargo) +"vBF" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice3"; + pixel_x = 16; + pixel_y = 24 + }, +/obj/item/stack/tile/plasteel{ + layer = 2.89; + pixel_x = 17; + pixel_y = 16 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/research) "vBW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -24807,6 +33736,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "S" }, +/obj/effect/decal/cleanable/blood/oil/streak, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) "vCf" = ( @@ -24815,6 +33745,16 @@ icon_state = "redfull" }, /area/varadero/interior/administration) +"vCE" = ( +/obj/structure/disposalpipe/segment, +/obj/item/trash/chunk{ + pixel_x = 3; + pixel_y = 6 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/technical_storage) "vDe" = ( /obj/structure/barricade/handrail/wire{ dir = 8 @@ -24828,6 +33768,19 @@ }, /turf/open/floor/wood, /area/varadero/interior/court) +"vDf" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/gm/coast/north, +/area/varadero/exterior/pool) +"vDl" = ( +/obj/structure/machinery/recharge_station, +/turf/open/floor/shiva{ + icon_state = "red" + }, +/area/varadero/interior/morgue) "vDm" = ( /turf/open/floor/shiva{ dir = 8; @@ -24843,6 +33796,12 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"vDw" = ( +/obj/item/fishing_pole{ + anchored = 1 + }, +/turf/open/gm/coast/beachcorner/south_west, +/area/varadero/exterior/pontoon_beach) "vDC" = ( /obj/structure/pipes/standard/manifold/hidden/green, /obj/effect/decal/cleanable/blood/oil, @@ -24850,6 +33809,33 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) +"vDI" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper Underground Requesitions Freezer"; + req_access_txt = "100" + }, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/varadero/interior/cargo) +"vDP" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "vEa" = ( /obj/structure/closet/crate/medical, /obj/item/tool/wirecutters/clippers, @@ -24861,6 +33847,42 @@ icon_state = "red" }, /area/varadero/interior/security) +"vEe" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/prop/rock/brown{ + indestructible = 1; + unacidable = 1; + name = "sturdy rock(s)"; + desc = "A solidified collection of local minerals. When melted, becomes a substance best known as lava. These look particularly durable." + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -15; + pixel_y = 5; + indestructible = 1; + unacidable = 1 + }, +/turf/open/gm/coast/south, +/area/varadero/exterior/pontoon_beach) +"vEg" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/pontoon_beach) +"vEi" = ( +/obj/structure/window_frame/colony/reinforced, +/obj/item/shard{ + icon_state = "medium" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/east) "vEJ" = ( /obj/structure/bed/chair, /turf/open/floor/shiva{ @@ -24868,7 +33890,36 @@ icon_state = "green" }, /area/varadero/interior/hall_NW) -"vFs" = ( +"vEM" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) +"vEU" = ( +/obj/structure/plasticflaps/mining, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/prop/invuln/minecart_tracks{ + dir = 8 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/oob) +"vFl" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/gm/dirt, +/area/varadero/interior/maintenance/north) +"vFs" = ( /obj/structure/surface/rack, /obj/item/tool/weldpack, /turf/open/floor/plating/icefloor{ @@ -24882,61 +33933,74 @@ dir = 1 }, /area/varadero/interior/hall_N) -"vGb" = ( -/obj/structure/blocker/fog, -/turf/open/gm/river/ocean, -/area/varadero/interior/oob) -"vGj" = ( -/obj/structure/platform/kutjevo/smooth{ - density = 0; - dir = 1 +"vGn" = ( +/obj/effect/overlay/palmtree_r{ + pixel_x = -11; + pixel_y = 20 }, -/obj/structure/barricade/handrail{ - density = 0; - desc = "Your platforms look pretty heavy king, let me support them for you."; - dir = 1; - icon_state = "hr_kutjevo"; - name = "support struts" +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"vGQ" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 }, -/obj/structure/prop/structure_lattice{ - density = 0; - desc = "If this is removed, you cannot escape."; - health = 300; - icon_state = "ladder10"; - name = "ladder" +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 }, -/turf/open/gm/river, -/area/varadero/interior/maintenance) -"vGq" = ( +/obj/item/lightstick/variant/planted, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"vHs" = ( +/turf/closed/wall/r_wall, +/area/varadero/interior/records) +"vHY" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/landmark/corpsespawner/colonist/burst, +/turf/open/floor{ + icon_state = "white" + }, +/area/varadero/interior/toilets) +"vJg" = ( +/obj/item/tool/shovel, +/turf/open/gm/dirt{ + icon_state = "desert_dug" + }, +/area/varadero/exterior/lz1_near) +"vJk" = ( /obj/structure/platform/kutjevo/smooth{ - layer = 2 + dir = 4; + climb_delay = 1; + layer = 2.99 }, /obj/structure/platform/kutjevo/smooth{ - dir = 8 + dir = 8; + climb_delay = 1; + layer = 2.99 }, -/turf/open/gm/river, -/area/varadero/interior/caves/north_research) -"vGD" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Underground Visitor Entrance"; - req_access_txt = "100" +/obj/structure/prop/invuln/minecart_tracks{ + dir = 1 }, -/turf/open/floor/plating, -/area/varadero/interior/hall_SE) -"vHs" = ( -/turf/closed/wall/r_wall, -/area/varadero/interior/records) -"vKa" = ( -/obj/structure/flora/bush/desert{ - pixel_x = 15; - pixel_y = 21 +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/area/varadero/interior/oob) +"vJp" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/largecrate/supply/supplies/mre, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/river, -/area/varadero/interior_protected/caves) +/area/varadero/interior/maintenance/security) +"vKv" = ( +/obj/structure/window/framed/colony/reinforced/hull{ + indestructible = 1 + }, +/turf/open/floor/plating/icefloor, +/area/varadero/interior/maintenance/north) "vKD" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/tool/pen/blue/clicky, @@ -24966,6 +34030,10 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/comms4) +"vLh" = ( +/obj/structure/platform_decoration/kutjevo, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "vLk" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/segment{ @@ -24976,6 +34044,23 @@ icon_state = "multi_tiles" }, /area/varadero/interior/laundry) +"vLo" = ( +/obj/effect/overlay/palmtree_r{ + icon_state = "palm2"; + pixel_x = 7; + pixel_y = 29 + }, +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"vLt" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/cargo) "vLw" = ( /obj/structure/prop/almayer/computers/sensor_computer1{ name = "computer" @@ -24983,14 +34068,48 @@ /turf/open/floor/prison{ icon_state = "darkredfull2" }, +/area/varadero/interior/dock_control) +"vLU" = ( +/obj/structure/machinery/vending/security, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "red" + }, +/area/varadero/interior/security) +"vLV" = ( +/obj/structure/machinery/landinglight/ds2/spoke{ + pixel_x = -1; + pixel_y = 22 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, /area/varadero/exterior/lz1_near) -"vLS" = ( -/obj/item/reagent_container/glass/bucket{ - pixel_x = -12; - pixel_y = -3 +"vMe" = ( +/obj/structure/largecrate/random/mini/med{ + layer = 3.01; + pixel_x = -13; + pixel_y = 11 }, -/turf/open/gm/coast/west, -/area/varadero/exterior/pontoon_beach) +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) +"vMo" = ( +/obj/item/tool/shovel, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) +"vMq" = ( +/obj/item/stack/sheet/metal/med_large_stack, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/interior/comms1) "vMU" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/tool, @@ -25001,6 +34120,14 @@ "vNu" = ( /turf/open/floor/carpet, /area/varadero/interior/bunks) +"vNy" = ( +/obj/structure/cargo_container/wy/left, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"vNB" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) "vNG" = ( /obj/structure/machinery/photocopier, /obj/structure/machinery/computer/cameras/telescreen/entertainment{ @@ -25036,6 +34163,10 @@ icon_state = "multi_tiles" }, /area/varadero/interior_protected/vessel) +"vOo" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/central) "vOr" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -25045,8 +34176,14 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, /area/varadero/interior/security) +"vOW" = ( +/obj/item/clothing/suit/armor/vest, +/turf/open/floor/wood, +/area/varadero/interior/administration) "vPe" = ( /obj/structure/bed/chair/office/dark{ dir = 4 @@ -25055,6 +34192,21 @@ icon_state = "floor3" }, /area/varadero/interior/administration) +"vPh" = ( +/obj/structure/stairs/perspective{ + color = "#6b675e"; + icon_state = "p_stair_full" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" + }, +/area/varadero/interior_protected/vessel) "vPi" = ( /obj/structure/closet/secure_closet/personal, /obj/item/attachable/magnetic_harness, @@ -25086,12 +34238,26 @@ }, /turf/open/floor/wood, /area/varadero/interior/chapel) +"vQe" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/north_research) "vQz" = ( /obj/structure/machinery/light{ dir = 8 }, /turf/open/floor/carpet, /area/varadero/interior/chapel) +"vQK" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz1_near) "vQL" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/frame/light_fixture, @@ -25100,26 +34266,6 @@ icon_state = "yellow" }, /area/varadero/interior/electrical) -"vRt" = ( -/obj/structure/stairs/perspective{ - color = "#6b675e"; - icon_state = "p_stair_full" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/turf/open/floor/strata{ - color = "#5e5d5d"; - icon_state = "multi_tiles" - }, -/area/varadero/interior_protected/vessel) -"vRC" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/blocker/invisible_wall, -/turf/open/gm/river, -/area/varadero/interior/oob) "vRI" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/segment{ @@ -25153,12 +34299,19 @@ icon_state = "redfull" }, /area/varadero/interior/medical) -"vSP" = ( -/obj/structure/machinery/medical_pod/bodyscanner, -/turf/open/floor/shiva{ - icon_state = "floor3" +"vSu" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/area/varadero/interior/medical) +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) +"vSN" = ( +/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/research) "vSY" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 @@ -25167,6 +34320,11 @@ dir = 1 }, /area/varadero/interior/research) +"vTd" = ( +/obj/structure/machinery/conveyor, +/obj/item/paper_bin, +/turf/open/floor/plating, +/area/varadero/interior/cargo) "vTe" = ( /obj/structure/barricade/wooden, /turf/open/floor/plating/icefloor{ @@ -25188,21 +34346,15 @@ pixel_y = 4 }, /obj/effect/landmark/objective_landmark/science, -/turf/open/floor/wood, +/turf/open/floor/carpet, /area/varadero/interior/research) -"vTq" = ( +"vUx" = ( +/obj/structure/girder/displaced, +/obj/structure/prop/invuln/overhead_pipe, /turf/open/floor/plating/icefloor{ - icon_state = "warnplate" - }, -/area/varadero/exterior/lz1_near) -"vUi" = ( -/obj/structure/pipes/vents/pump{ - dir = 4 - }, -/turf/open/floor/shiva{ - icon_state = "redfull" + icon_state = "asteroidplating" }, -/area/varadero/interior/medical) +/area/varadero/exterior/eastbeach) "vUE" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -25226,6 +34378,13 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) +"vUT" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper Underground Chapel" + }, +/turf/open/floor/carpet, +/area/varadero/interior/chapel) "vUZ" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 8 @@ -25250,25 +34409,51 @@ icon_state = "multi_tiles" }, /area/varadero/interior/research) -"vVC" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/box/trackimp, -/turf/open/floor/shiva{ - dir = 6; - icon_state = "red" +"vVz" = ( +/obj/structure/prop/structure_lattice{ + dir = 1; + health = 300 }, -/area/varadero/interior/security) -"vXu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" +/obj/structure/prop/invuln/lattice_prop, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/pool) +"vVH" = ( +/turf/closed/wall/r_wall, +/area/varadero/interior/comms2) +"vVJ" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/closed/wall/rock/brown, +/area/varadero/interior_protected/caves/central) +"vWn" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/coast/beachcorner/north_west, +/area/varadero/exterior/pontoon_beach) +"vWG" = ( +/obj/structure/bed/chair, +/obj/structure/machinery/storm_siren{ + pixel_y = 5 }, -/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ - dir = 4; - icon_state = "snow_mat" + icon_state = "floor3" }, -/area/varadero/interior/medical) +/area/varadero/interior/hall_NW) +"vXx" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) +"vXG" = ( +/obj/structure/closet/crate/construction, +/obj/item/grown/log, +/turf/open/gm/dirt{ + icon_state = "desert2" + }, +/area/varadero/exterior/monsoon) "vXW" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -25277,8 +34462,61 @@ name = "\improper Underground Security Showers"; req_access_txt = "100" }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, /area/varadero/interior/security) +"vYp" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/research) +"vYr" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Underground Maintenance"; + req_access_txt = "100"; + req_one_access = null + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/maintenance/north) +"vYy" = ( +/obj/item/tool/shovel, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = -8 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"vYQ" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/obj/item/ammo_magazine/handful/shotgun/buckshot, +/obj/item/ammo_magazine/handful/shotgun/buckshot, +/turf/open/floor/wood, +/area/varadero/interior/bunks) "vYW" = ( /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves) @@ -25320,6 +34558,42 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) +"vZN" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/stairs/perspective{ + color = "#b29082"; + dir = 8; + icon_state = "p_stair_ew_half_cap" + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 10; + pixel_y = 2; + indestructible = 1; + unacidable = 1 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"vZO" = ( +/obj/effect/landmark/corpsespawner/miner, +/turf/open/floor{ + icon_state = "white" + }, +/area/varadero/interior/toilets) +"vZR" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/pontoon_beach) "vZS" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -25348,17 +34622,6 @@ /obj/structure/largecrate/random, /turf/open/floor/wood, /area/varadero/interior/hall_SE) -"wbk" = ( -/obj/structure/machinery/power/apc{ - dir = 1; - pixel_y = 24; - start_charge = 0 - }, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "blue" - }, -/area/varadero/interior/administration) "wbB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -25367,6 +34630,16 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"wcb" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/prop/rock/brown{ + indestructible = 1; + unacidable = 1; + name = "sturdy rock(s)"; + desc = "A solidified collection of local minerals. When melted, becomes a substance best known as lava. These look particularly durable." + }, +/turf/open/gm/coast/beachcorner2/south_east, +/area/varadero/exterior/farocean) "wcl" = ( /obj/item/tool/mop{ pixel_x = -16; @@ -25387,6 +34660,9 @@ /area/varadero/exterior/lz1_near) "wcE" = ( /obj/effect/decal/cleanable/blood/drip, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, /turf/open/floor/prison/chapel_carpet{ dir = 1; icon_state = "doubleside" @@ -25412,7 +34688,9 @@ /turf/open/floor/wood, /area/varadero/interior/security) "wdh" = ( -/obj/structure/machinery/computer/operating, +/obj/structure/machinery/computer/operating{ + density = 0 + }, /obj/structure/surface/table/reinforced/prison, /turf/open/floor/shiva{ dir = 4; @@ -25443,10 +34721,10 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) -"wdA" = ( -/obj/effect/decal/strata_decals/grime/grime2, -/turf/open/floor/carpet, -/area/varadero/interior/bunks) +"wdI" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/shuttle/elevator, +/area/varadero/interior/records) "wdX" = ( /obj/structure/filingcabinet/filingcabinet, /obj/effect/landmark/objective_landmark/medium, @@ -25455,12 +34733,60 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"weG" = ( +/obj/structure/catwalk, +/turf/open/gm/river/desert/deep{ + base_river_slowdown = 0 + }, +/area/varadero/interior/maintenance/north) +"weJ" = ( +/obj/structure/machinery/landinglight/ds2/spoke{ + pixel_x = -1; + pixel_y = 22 + }, +/turf/closed/wall/r_wall, +/area/varadero/interior/maintenance/north) +"wff" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) +"wfh" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = -8 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/eastbeach) "wfr" = ( /turf/open/floor/shiva{ dir = 4; icon_state = "purple" }, /area/varadero/interior/hall_NW) +"wft" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/prop/rock/brown{ + indestructible = 1; + unacidable = 1; + name = "sturdy rock(s)"; + desc = "A solidified collection of local minerals. When melted, becomes a substance best known as lava. These look particularly durable." + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) "wfy" = ( /obj/structure/bedsheetbin{ icon_state = "linenbin-empty" @@ -25469,6 +34795,34 @@ icon_state = "floor3" }, /area/varadero/interior/bunks) +"wfK" = ( +/obj/structure/stairs/perspective{ + color = "#b29082"; + dir = 4; + icon_state = "p_stair_full" + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) +"wfR" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/prop/rock/brown{ + indestructible = 1; + unacidable = 1; + name = "sturdy rock(s)"; + desc = "A solidified collection of local minerals. When melted, becomes a substance best known as lava. These look particularly durable." + }, +/turf/open/gm/coast/south, +/area/varadero/exterior/farocean) +"wfS" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/guestpass{ + dir = 1 + }, +/obj/item/card/id/silver/clearance_badge{ + pixel_x = 14 + }, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) "wfT" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -25478,10 +34832,6 @@ icon_state = "yellow" }, /area/varadero/interior/hall_NW) -"wga" = ( -/obj/item/device/motiondetector/hacked, -/turf/open/floor/carpet, -/area/varadero/exterior/lz1_near) "wgv" = ( /obj/structure/machinery/constructable_frame{ icon_state = "box_1" @@ -25490,22 +34840,25 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) -"wgM" = ( -/obj/structure/closet/crate/ammo/alt/flame, -/turf/open/floor/shiva{ - icon_state = "floor3" +"wgU" = ( +/obj/structure/prop/invuln/minecart_tracks{ + dir = 8 }, -/area/varadero/interior/cargo) -"wgT" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 }, -/obj/structure/closet/crate, -/obj/effect/landmark/objective_landmark/far, -/turf/open/floor/shiva{ - icon_state = "floor3" +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/cargo) +/obj/structure/blocker/invisible_wall/water, +/obj/structure/plasticflaps/mining, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/oob) "wic" = ( /obj/structure/machinery/alarm{ pixel_y = 24 @@ -25516,6 +34869,24 @@ }, /turf/open/floor/wood, /area/varadero/interior/records) +"wir" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper Underground Main Hallway" + }, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/hall_NW) +"wiL" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper_bin, +/obj/item/paper/research_notes, +/obj/item/storage/belt/shotgun, +/turf/open/floor/shiva{ + icon_state = "blue" + }, +/area/varadero/interior/administration) "wjf" = ( /obj/structure/machinery/washing_machine, /obj/structure/machinery/washing_machine{ @@ -25530,19 +34901,27 @@ icon_state = "asteroidwarning" }, /area/varadero/interior/comms1) -"wjG" = ( -/obj/structure/prop/structure_lattice{ +"wjV" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/plating, +/area/varadero/interior/maintenance/security) +"wkp" = ( +/obj/structure/platform/kutjevo/smooth{ dir = 1; - health = 300 + climb_delay = 1; + layer = 2.99 }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/maintenance/north) -"wjM" = ( -/obj/item/weapon/gun/shotgun/pump, -/turf/open/floor/carpet, -/area/varadero/exterior/lz1_near) +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/interior_protected/caves) "wkq" = ( /obj/structure/machinery/photocopier, /obj/structure/machinery/firealarm{ @@ -25550,6 +34929,24 @@ }, /turf/open/floor/wood, /area/varadero/interior/records) +"wkt" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + name = "\improper Underground Engineering Locker Room"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/electrical) +"wku" = ( +/obj/structure/machinery/door/poddoor/almayer/planet_side_blastdoor{ + id = "colony_sec_armory"; + name = "Secure Armory" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/security) "wkC" = ( /obj/item/stack/cable_coil/cut{ pixel_x = 6; @@ -25563,17 +34960,6 @@ icon_state = "multi_tiles" }, /area/varadero/interior/technical_storage) -"wkF" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/paper, -/obj/item/tool/pen/blue{ - pixel_x = 6; - pixel_y = 5 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/records) "wkM" = ( /obj/structure/window/reinforced{ dir = 4; @@ -25611,14 +34997,13 @@ icon_state = "white" }, /area/varadero/interior/toilets) -"wlx" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/shiva{ - icon_state = "red" - }, -/area/varadero/interior/morgue) +"wlB" = ( +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"wlH" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/coast/beachcorner/south_east, +/area/varadero/exterior/lz2_near) "wlQ" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -25635,8 +35020,12 @@ icon_state = "purplefull" }, /area/varadero/interior/research) -"wmC" = ( -/obj/structure/machinery/light{ +"wmt" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/shuttle/elevator/grating, +/area/varadero/interior/records) +"wmC" = ( +/obj/structure/machinery/light{ dir = 8 }, /turf/open/floor/shiva{ @@ -25653,7 +35042,9 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, /area/varadero/interior/hall_NW) "wng" = ( /obj/structure/pipes/standard/manifold/hidden/green{ @@ -25669,11 +35060,66 @@ icon_state = "green" }, /area/varadero/interior/mess) +"wns" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) +"wnw" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/closet/crate, +/obj/effect/landmark/objective_landmark/far, +/obj/item/trash/crushed_cup, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/cargo) +"wnA" = ( +/obj/effect/decal/cleanable/blood/drip{ + pixel_y = 21; + pixel_x = 10 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/pontoon_beach) +"wnE" = ( +/obj/structure/tunnel{ + id = "north_research_tunnel" + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/east) "wnK" = ( /turf/open/floor/shiva{ icon_state = "wredfull" }, /area/varadero/interior/medical) +"woj" = ( +/obj/effect/spawner/random/toolbox, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior/technical_storage) +"won" = ( +/obj/structure/filingcabinet{ + density = 0; + icon_state = "chestdrawer"; + pixel_x = 8; + pixel_y = 11 + }, +/obj/structure/filingcabinet{ + density = 0; + icon_state = "chestdrawer"; + pixel_x = -8; + pixel_y = 11 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) +"wop" = ( +/obj/structure/girder/displaced, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "wot" = ( /turf/open/floor/shiva{ icon_state = "floor3" @@ -25704,14 +35150,13 @@ icon_state = "redfull" }, /area/varadero/interior/medical) -"woP" = ( -/obj/structure/blocker/invisible_wall, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 +"woJ" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/item/explosive/grenade/incendiary/molotov{ + pixel_x = -3 }, -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/river, -/area/varadero/interior/oob) +/turf/open/floor/carpet, +/area/varadero/interior/chapel) "wph" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/shiva, @@ -25754,6 +35199,11 @@ icon_state = "snow_mat" }, /area/varadero/interior/security) +"wpX" = ( +/obj/effect/decal/strata_decals/grime/grime2, +/obj/item/weapon/gun/rifle/m41a, +/turf/open/floor/carpet, +/area/varadero/interior/bunks) "wqb" = ( /turf/closed/wall/r_wall, /area/varadero/interior/maintenance/security) @@ -25765,18 +35215,6 @@ icon_state = "asteroidplating" }, /area/varadero/interior/comms1) -"wqK" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/computer/cameras{ - dir = 8; - pixel_y = 6 - }, -/obj/item/reagent_container/food/drinks/bottle/sake{ - pixel_x = 9; - pixel_y = 1 - }, -/turf/open/floor/wood, -/area/varadero/exterior/lz1_near) "wrg" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = -12 @@ -25808,15 +35246,6 @@ }, /turf/open/floor/wood, /area/varadero/interior/court) -"wrQ" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 10 - }, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance/research) "wsa" = ( /obj/structure/closet/crate/hydroponics/prespawned, /turf/open/floor/shiva{ @@ -25824,6 +35253,10 @@ icon_state = "blue" }, /area/varadero/interior/technical_storage) +"wsn" = ( +/obj/item/storage/toolbox/mechanical, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "wsG" = ( /obj/structure/window/phoronreinforced{ dir = 4; @@ -25848,6 +35281,25 @@ icon_state = "floor3" }, /area/varadero/interior/medical) +"wtk" = ( +/obj/structure/barricade/wooden, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/eastbeach) +"wts" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ + icon_state = "sparsegrass_2" + }, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/eastocean) "wty" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/shiva{ @@ -25866,15 +35318,16 @@ icon_state = "asteroidplating" }, /area/varadero/interior/hall_NW) -"wug" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 +"wtU" = ( +/obj/structure/bed/chair{ + dir = 4; + icon_state = "chair_alt" }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/gm/river, -/area/varadero/interior_protected/caves) +/area/varadero/interior_protected/maintenance/south) "wuA" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -25884,22 +35337,21 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) -"wvi" = ( -/obj/structure/closet/radiation, -/obj/effect/landmark/crap_item, +"wuR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/manifold/fourway/hidden/green, /turf/open/floor/shiva{ - dir = 8; - icon_state = "yellowfull" + icon_state = "multi_tiles" }, -/area/varadero/interior/electrical) -"wvk" = ( -/obj/structure/prop/ice_colony/dense/planter_box/hydro{ - pixel_x = -15; - pixel_y = 11 +/area/varadero/interior/comms3) +"wvI" = ( +/obj/structure/tunnel{ + id = "north_research_tunnel" }, -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/river, -/area/varadero/interior_protected/caves) +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/hall_SE) "wvK" = ( /obj/structure/closet/crate/freezer, /obj/effect/landmark/objective_landmark/close, @@ -25923,22 +35375,60 @@ icon_state = "snow_mat" }, /area/varadero/interior/medical) +"wwq" = ( +/obj/structure/catwalk, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/filtration/flacculation_arm{ + density = 0; + layer = 2.1 + }, +/turf/open/gm/river/desert/deep{ + base_river_slowdown = 0 + }, +/area/varadero/interior/maintenance/north) "wws" = ( /obj/item/reagent_container/food/snacks/eat_bar, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"wxf" = ( +/obj/structure/machinery/power/monitor, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) "wxu" = ( /obj/structure/bed/chair, /turf/open/floor{ icon_state = "white" }, /area/varadero/interior/laundry) -"wAj" = ( -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/coast/beachcorner2/south_west, -/area/varadero/exterior/pontoon_beach) +"wxD" = ( +/obj/structure/filingcabinet{ + density = 0; + icon_state = "chestdrawer"; + pixel_x = -8 + }, +/obj/structure/filingcabinet{ + density = 0; + icon_state = "chestdrawer"; + pixel_x = 8 + }, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/comms2) +"wyE" = ( +/obj/item/storage/belt/marine/quackers, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) "wAx" = ( /obj/effect/landmark/corpsespawner/security, /obj/effect/decal/cleanable/blood, @@ -25946,16 +35436,26 @@ icon_state = "multi_tiles" }, /area/varadero/interior/research) -"wBx" = ( -/obj/structure/closet/toolcloset, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 +"wBc" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/central) +"wBp" = ( +/obj/structure/blocker/invisible_wall/water, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" }, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/area/varadero/exterior/farocean) +"wBD" = ( +/obj/structure/surface/table/woodentable, +/obj/item/paper_bin/uscm{ + pixel_x = 12; + pixel_y = 14 }, -/area/varadero/interior/comms2) +/obj/item/weapon/twohanded/fireaxe, +/turf/open/floor/carpet, +/area/varadero/interior/library) "wBN" = ( /turf/open/floor/shiva{ dir = 4; @@ -25983,25 +35483,20 @@ }, /turf/open/floor/carpet, /area/varadero/interior/records) -"wCH" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/tool/stamp, -/obj/item/paper_bin, -/obj/structure/machinery/alarm{ - dir = 8; - pixel_x = 24 - }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "yellowfull" - }, -/area/varadero/interior/cargo) "wCR" = ( /obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) +"wDi" = ( +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/gm/coast/beachcorner2/north_west, +/area/varadero/exterior/pontoon_beach) +"wDv" = ( +/obj/structure/largecrate/random/mini/ammo, +/turf/open/shuttle/elevator, +/area/varadero/interior/records) "wDG" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -26010,6 +35505,16 @@ dir = 1 }, /area/varadero/interior/cargo) +"wDH" = ( +/obj/structure/barricade/handrail/wire{ + dir = 8; + layer = 3.5 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/eastbeach) "wDN" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -26019,6 +35524,13 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"wEn" = ( +/obj/structure/largecrate/random, +/obj/structure/barricade/wooden, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) "wEL" = ( /obj/structure/pipes/standard/manifold/hidden/green, /turf/open/floor/shiva{ @@ -26034,6 +35546,31 @@ icon_state = "snow_mat" }, /area/varadero/interior/maintenance) +"wFx" = ( +/obj/item/stack/tile/plasteel{ + pixel_x = 8; + pixel_y = 6 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) +"wFJ" = ( +/obj/structure/prop/dam/crane/damaged, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/farocean) +"wFP" = ( +/obj/structure/machinery/door_control/brbutton{ + id = "undergroundhangarwest"; + name = "West Dock Door"; + pixel_x = 8; + indestructible = 1 + }, +/obj/structure/sign/safety/bulkhead_door, +/turf/closed/wall/r_wall/unmeltable, +/area/varadero/interior/cargo) "wFX" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -26051,6 +35588,25 @@ icon_state = "floor3" }, /area/varadero/interior/cargo) +"wGs" = ( +/obj/effect/landmark/hunter_primary, +/obj/structure/machinery/power/apc{ + dir = 1; + pixel_y = 24; + start_charge = 0 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellowfull" + }, +/area/varadero/interior/comms3) +"wGQ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) "wGV" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -26059,6 +35615,14 @@ icon_state = "floor3" }, /area/varadero/interior/security) +"wHk" = ( +/turf/closed/wall, +/area/varadero/interior/maintenance/north) +"wHt" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/item/lightstick/variant/planted, +/turf/open/gm/coast/beachcorner2/south_east, +/area/varadero/exterior/farocean) "wHu" = ( /obj/structure/prop/static_tank/fuel{ pixel_y = 8 @@ -26067,15 +35631,16 @@ icon_state = "multi_tiles" }, /area/varadero/interior/disposals) -"wHW" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/shiva{ +"wIg" = ( +/obj/structure/platform/kutjevo/smooth{ dir = 1; - icon_state = "yellow" + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/electrical) +/turf/open/gm/dirt{ + icon_state = "desert1" + }, +/area/varadero/exterior/lz1_near) "wIm" = ( /obj/structure/disposalpipe/junction{ dir = 8; @@ -26101,6 +35666,38 @@ icon_state = "bluefull" }, /area/varadero/interior/administration) +"wJl" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pontoon_beach) +"wJu" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "cargobay"; + name = "\improper Requesitions Storage Shutters" + }, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "yellow" + }, +/area/varadero/interior/cargo) "wJB" = ( /obj/item/device/motiondetector/hacked, /turf/open/floor/shiva{ @@ -26113,19 +35710,30 @@ }, /turf/open/floor/shiva, /area/varadero/interior/disposals) -"wLf" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/stack/sheet/mineral/phoron/medium_stack, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, +"wKW" = ( +/obj/item/stack/sandbags/large_stack, +/turf/open/gm/dirt, /area/varadero/exterior/lz1_near) +"wLq" = ( +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/comms4) "wLv" = ( /obj/item/weapon/gun/rifle/m41a, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/varadero/interior/bunks) +"wLB" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/farocean) "wLF" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/drinks/shaker{ @@ -26141,12 +35749,20 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"wLN" = ( -/obj/structure/pipes/standard/manifold/hidden/green, +"wLR" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/hypospray/tricordrazine{ + pixel_x = -14; + pixel_y = 2 + }, /turf/open/floor/shiva{ - icon_state = "wredfull" + icon_state = "blue" }, -/area/varadero/interior/medical) +/area/varadero/interior/technical_storage) +"wMj" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior/hall_SE) "wMn" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating/icefloor{ @@ -26166,6 +35782,13 @@ icon_state = "redfull" }, /area/varadero/interior/medical) +"wNz" = ( +/obj/item/stack/tile/plasteel{ + pixel_x = 8; + pixel_y = 6 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) "wNI" = ( /obj/structure/platform_decoration/kutjevo{ dir = 1 @@ -26187,13 +35810,12 @@ icon_state = "wred" }, /area/varadero/interior/medical) -"wOk" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Underground Security Checkpoint"; - req_access_txt = "100" +"wOC" = ( +/obj/item/stack/tile/plasteel, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/floor/plating, -/area/varadero/interior/security) +/area/varadero/interior_protected/maintenance/south) "wOL" = ( /obj/effect/landmark/crap_item, /obj/structure/window/reinforced{ @@ -26207,31 +35829,60 @@ "wOO" = ( /turf/closed/wall/r_wall, /area/varadero/interior/electrical) -"wOQ" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice8"; - pixel_x = 16; - pixel_y = 24 +"wOR" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/caves/central) +"wOS" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/evidencebag, +/obj/effect/landmark/objective_landmark/far, +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/area/varadero/interior/security) +"wPl" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 }, -/area/varadero/interior/maintenance/research) -"wPN" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Underground Power Substation"; - req_access_txt = "100" +/area/varadero/exterior/pontoon_beach) +"wPv" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 }, -/turf/open/floor/plating, -/area/varadero/interior/electrical) +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail/wire{ + layer = 3.1 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz1_near) +"wPE" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) +"wPH" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) "wQd" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -26240,6 +35891,22 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) +"wQh" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/caves/east) +"wQi" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor{ + dir = 1; + name = "\improper Colony Offices"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/administration) "wRi" = ( /obj/structure/surface/table, /obj/item/device/flashlight/lamp/green{ @@ -26250,6 +35917,14 @@ icon_state = "multi_tiles" }, /area/varadero/interior/electrical) +"wRu" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/shiva{ + icon_state = "wred" + }, +/area/varadero/interior/medical) "wRB" = ( /obj/structure/machinery/light, /obj/structure/flora/pottedplant{ @@ -26260,9 +35935,38 @@ icon_state = "greenfull" }, /area/varadero/interior/hall_N) +"wRR" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/prop/invuln/minecart_tracks{ + dir = 8 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/blocker/invisible_wall/water, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/oob) "wSx" = ( /turf/closed/wall, /area/varadero/interior/laundry) +"wSL" = ( +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" + }, +/area/varadero/exterior/pool) +"wSM" = ( +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior_protected/caves/central) "wSX" = ( /obj/structure/platform_decoration/kutjevo{ dir = 8 @@ -26272,12 +35976,6 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) -"wTq" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 8 - }, -/turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) "wTE" = ( /obj/structure/bed/chair{ icon_state = "chair_alt"; @@ -26292,6 +35990,9 @@ icon_state = "asteroidplating" }, /area/varadero/interior_protected/maintenance/south) +"wTJ" = ( +/turf/open/floor/plating, +/area/varadero/interior/disposals) "wTM" = ( /obj/structure/machinery/firealarm{ pixel_y = 24 @@ -26301,12 +36002,23 @@ icon_state = "yellowfull" }, /area/varadero/interior/disposals) -"wTQ" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +"wUj" = ( +/obj/structure/window/framed/colony/reinforced, +/turf/open/floor/shiva{ + dir = 1; + icon_state = "multi_tiles" + }, +/area/varadero/interior/comms3) +"wUr" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, +/area/varadero/interior_protected/caves) +"wUF" = ( +/obj/effect/overlay/palmtree_r, /turf/open/gm/dirt, -/area/varadero/exterior/pontoon_beach) +/area/varadero/exterior/eastbeach) "wUU" = ( /turf/closed/shuttle{ dir = 1; @@ -26323,6 +36035,28 @@ "wVf" = ( /turf/closed/wall/r_wall, /area/varadero/interior/security) +"wVp" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/east) +"wVA" = ( +/obj/structure/filingcabinet{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/structure/filingcabinet{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/effect/landmark/objective_landmark/science, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/varadero/interior/morgue) "wVD" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -26345,15 +36079,10 @@ }, /turf/closed/wall/r_wall, /area/varadero/interior/hall_N) -"wWn" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "wred" - }, -/area/varadero/interior/medical) +"wWd" = ( +/obj/structure/largecrate/random, +/turf/open/shuttle/elevator, +/area/varadero/interior/records) "wWx" = ( /obj/structure/surface/table/reinforced, /obj/item/paper_bin, @@ -26373,6 +36102,16 @@ }, /turf/open/floor/plating, /area/varadero/interior/hall_SE) +"wXc" = ( +/obj/item/reagent_container/glass/bucket{ + pixel_y = -3 + }, +/obj/item/tool/hatchet{ + pixel_x = 3; + pixel_y = 5 + }, +/turf/open/gm/coast/beachcorner/south_west, +/area/varadero/exterior/lz1_near) "wXs" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -26430,17 +36169,19 @@ dir = 1 }, /area/varadero/interior/electrical) -"wZs" = ( -/turf/open/floor/shiva{ - icon_state = "blue" - }, -/area/varadero/interior/technical_storage) "wZF" = ( /obj/structure/bed/chair/wood/normal{ dir = 4 }, /turf/open/floor/carpet, /area/varadero/interior/library) +"xag" = ( +/obj/effect/decal/cleanable/blood/xeno, +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/maintenance/south) "xaK" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22" @@ -26455,10 +36196,20 @@ icon_state = "asteroidplating" }, /area/varadero/interior/caves/north_research) -"xbD" = ( -/obj/structure/machinery/shower{ - dir = 1 +"xbm" = ( +/obj/structure/machinery/photocopier, +/turf/open/floor/wood, +/area/varadero/interior/maintenance/north) +"xbA" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/shiva{ + icon_state = "floor3" }, +/area/varadero/interior/mess) +"xbD" = ( /obj/structure/window/reinforced/tinted{ dir = 8 }, @@ -26466,19 +36217,35 @@ icon_state = "multi_tiles" }, /area/varadero/interior/research) +"xce" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor/plating/bare_catwalk, +/area/varadero/exterior/farocean) "xcf" = ( /turf/closed/wall/r_wall/elevator, /area/varadero/interior/records) -"xdy" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +"xcz" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/obj/structure/barricade/handrail/wire{ - layer = 3.1 +/area/varadero/interior/caves/east) +"xcE" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) +/area/varadero/exterior/lz1_near) "xdz" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -26500,38 +36267,38 @@ icon_state = "red" }, /area/varadero/interior/security) -"xes" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 +"xdW" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/turf/open/gm/river, -/area/varadero/interior_protected/caves) -"xeV" = ( -/obj/structure/prop/souto_land/streamer{ - pixel_y = 24 +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/shiva{ icon_state = "multi_tiles" }, -/area/varadero/interior/hall_NW) -"xfb" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/window/reinforced{ - dir = 8; - health = 80 +/area/varadero/interior/electrical) +"xeO" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 }, -/obj/item/tool/stamp{ - pixel_x = -6; - pixel_y = -2 +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"xeU" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 }, -/obj/item/storage/box/masks{ - pixel_x = 6; - pixel_y = 3 +/turf/open/gm/coast/beachcorner2/north_west, +/area/varadero/exterior/monsoon) +"xeV" = ( +/obj/structure/prop/souto_land/streamer{ + pixel_y = 24 }, /turf/open/floor/shiva{ - icon_state = "redfull" + icon_state = "multi_tiles" }, -/area/varadero/interior/medical) +/area/varadero/interior/hall_NW) "xff" = ( /obj/structure/largecrate/random, /turf/open/floor/shiva{ @@ -26540,19 +36307,23 @@ /area/varadero/interior/hall_SE) "xfo" = ( /turf/closed/wall/r_wall/unmeltable, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/dock_control) +"xfz" = ( +/obj/structure/girder, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "xfD" = ( /obj/structure/platform_decoration/kutjevo{ dir = 4 }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) +"xfQ" = ( +/turf/open/gm/coast/beachcorner2/north_west, +/area/varadero/exterior/monsoon) "xgG" = ( /turf/closed/wall/r_wall, /area/varadero/interior/administration) -"xgH" = ( -/turf/open/gm/coast/beachcorner2/south_west, -/area/varadero/exterior/eastbeach) "xgU" = ( /obj/structure/prop/structure_lattice{ dir = 1; @@ -26589,26 +36360,6 @@ /obj/effect/overlay/palmtree_r, /turf/open/gm/dirt, /area/varadero/exterior/lz1_near) -"xhb" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 1 - }, -/obj/structure/prop/rock/brown, -/turf/open/gm/dirt, -/area/varadero/exterior/pontoon_beach) -"xhj" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/maint{ - name = "\improper Underground Maintenance"; - req_access_txt = "100"; - req_one_access = null - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/maintenance/security) "xhs" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -26628,6 +36379,21 @@ }, /turf/open/floor/plating, /area/varadero/interior/research) +"xhA" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior_protected/maintenance/south) +"xiV" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/closet/crate/ammo/alt, +/obj/item/storage/belt/utility, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/cargo) "xjp" = ( /obj/structure/machinery/power/geothermal, /obj/structure/machinery/light/small, @@ -26657,6 +36423,10 @@ icon_state = "bluefull" }, /area/varadero/interior/administration) +"xke" = ( +/obj/effect/overlay/palmtree_r, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/monsoon) "xkj" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -26684,15 +36454,6 @@ icon_state = "floor3" }, /area/varadero/interior/disposals) -"xmi" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) "xml" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -26701,6 +36462,25 @@ icon_state = "yellowcorners" }, /area/varadero/interior/cargo) +"xmL" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = -8 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"xne" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "snow_mat" + }, +/area/varadero/interior/maintenance) "xnr" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 @@ -26709,18 +36489,9 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) -"xnO" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/medical/glass{ - name = "\improper Theta-V Research Laboratory Storage"; - req_access = null; - req_access_txt = null; - req_one_access = null - }, -/turf/open/floor/plating, -/area/varadero/interior/research) +"xnS" = ( +/turf/closed/wall/r_wall/unmeltable, +/area/varadero/exterior/eastbeach) "xnV" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/shiva{ @@ -26728,6 +36499,22 @@ icon_state = "red" }, /area/varadero/interior/morgue) +"xpe" = ( +/obj/structure/surface/rack, +/obj/item/tool/extinguisher, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"xpk" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/item/stack/tile/plasteel{ + layer = 2.89; + pixel_x = 17; + pixel_y = 16 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "xpw" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/circuitboard/computer/crew{ @@ -26769,6 +36556,16 @@ icon_state = "white" }, /area/varadero/interior/security) +"xqN" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor{ + name = "\improper Colony Administration"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/administration) "xqP" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -26781,6 +36578,57 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) +"xqS" = ( +/obj/structure/stairs/perspective{ + color = "#6b675e"; + dir = 1; + icon_state = "p_stair_full" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" + }, +/area/varadero/interior_protected/vessel) +"xqY" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/machinery/vending/snack, +/obj/structure/machinery/alarm{ + dir = 8; + pixel_x = 24 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "yellow" + }, +/area/varadero/interior/cargo) +"xrl" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/barricade/handrail{ + desc = "Your platforms look pretty heavy king, let me support them for you."; + dir = 1; + icon_state = "hr_kutjevo"; + name = "support struts" + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/farocean) "xrA" = ( /obj/structure/machinery/vending/coffee, /turf/open/floor/shiva{ @@ -26788,16 +36636,6 @@ icon_state = "purplefull" }, /area/varadero/interior/research) -"xrR" = ( -/obj/structure/bed/chair{ - buckling_y = 18; - dir = 8; - pixel_y = 18 - }, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" - }, -/area/varadero/interior/technical_storage) "xsi" = ( /obj/structure/bed/chair, /turf/open/floor/shiva{ @@ -26805,14 +36643,6 @@ icon_state = "red" }, /area/varadero/interior/security) -"xsF" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - name = "\improper Underground Maintenance"; - req_access_txt = "100"; - req_one_access = null - }, -/turf/open/floor/plating, -/area/varadero/exterior/lz1_near) "xsH" = ( /obj/structure/machinery/landinglight/ds2/delaythree{ dir = 1 @@ -26822,10 +36652,6 @@ icon_state = "asteroidfloor" }, /area/varadero/exterior/lz1_near) -"xtD" = ( -/obj/effect/landmark/xeno_spawn, -/turf/open/auto_turf/sand_white/layer1, -/area/varadero/interior_protected/maintenance/south) "xtZ" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -26836,6 +36662,13 @@ }, /turf/open/floor/wood, /area/varadero/interior/court) +"xug" = ( +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "snow_mat" + }, +/area/varadero/interior/medical) "xuB" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -26848,6 +36681,15 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_N) +"xuJ" = ( +/obj/structure/machinery/atm{ + name = "Weyland-Yutani Automatic Teller Machine"; + pixel_y = 30 + }, +/obj/item/reagent_container/food/snacks/wrapped/barcardine, +/obj/structure/bed/chair/wood/normal, +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "xuN" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -26872,6 +36714,15 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_N) +"xuX" = ( +/obj/structure/stairs/perspective{ + color = "#6b675e"; + icon_state = "p_stair_full" + }, +/turf/open/shuttle{ + icon_state = "floor6" + }, +/area/varadero/interior_protected/vessel) "xvj" = ( /obj/structure/machinery/light/small, /turf/open/floor/shiva{ @@ -26883,9 +36734,6 @@ /turf/open/floor/plating, /area/varadero/interior/security) "xwk" = ( -/obj/structure/machinery/light{ - dir = 4 - }, /obj/structure/surface/table/reinforced/prison, /obj/item/packageWrap, /obj/item/tool/hand_labeler, @@ -26894,16 +36742,26 @@ icon_state = "yellowfull" }, /area/varadero/interior/cargo) -"xxc" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" +"xwG" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_x = 16; + pixel_y = -8 }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/shiva{ - icon_state = "floor3" +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/records) +/area/varadero/interior/maintenance/research) +"xwY" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/item/tool/wet_sign, +/turf/open/floor{ + icon_state = "white" + }, +/area/varadero/interior/toilets) "xxk" = ( /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/maintenance/south) @@ -26925,23 +36783,33 @@ icon_state = "multi_tiles" }, /area/varadero/interior/bunks) -"xxr" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/prop/invuln/minecart_tracks{ - dir = 8 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/blocker/invisible_wall, +"xxs" = ( +/obj/structure/closet/crate, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, -/area/varadero/interior/oob) +/area/varadero/interior/maintenance/security) +"xxE" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/medical/glass{ + name = "\improper Theta-V Research Laboratory Storage"; + req_access = null; + req_one_access = null + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/varadero/interior/research) "xxI" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/carpet, /area/varadero/interior/chapel) +"xxO" = ( +/obj/item/ammo_magazine/handful/lever_action, +/turf/open/floor/wood, +/area/varadero/interior/research) "xxV" = ( /obj/structure/sign/safety/debark_lounge, /turf/closed/wall/r_wall, @@ -27000,33 +36868,45 @@ /obj/structure/machinery/door/airlock/multi_tile/elevator/research, /turf/open/shuttle/elevator/grating, /area/varadero/interior/hall_N) +"xza" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/security) +"xzc" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/turf/open/gm/dirt{ + icon_state = "desert0" + }, +/area/varadero/exterior/pontoon_beach) +"xzd" = ( +/obj/effect/decal/cleanable/vomit, +/turf/open/floor{ + icon_state = "white" + }, +/area/varadero/interior/toilets) "xzj" = ( /obj/structure/sign/safety/airlock{ pixel_x = 8 }, /turf/closed/wall, /area/varadero/interior/library) -"xzC" = ( -/obj/structure/machinery/cm_vending/sorted/medical/no_access, +"xzr" = ( /turf/open/floor/shiva{ - dir = 1; - icon_state = "wred" - }, -/area/varadero/interior/medical) -"xzN" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/turf/open/auto_turf/sand_white/layer0, -/area/varadero/interior/caves/north_research) -"xAD" = ( -/obj/structure/surface/table/reinforced/prison{ - dir = 8; - flipped = 1 + icon_state = "yellow" }, -/turf/open/floor/shiva{ - dir = 6; - icon_state = "multi_tiles" +/area/varadero/interior/comms3) +"xAg" = ( +/turf/closed/wall/r_wall/unmeltable, +/area/varadero/interior/comms2) +"xAs" = ( +/obj/structure/largecrate/random/mini/chest/b, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/area/varadero/interior/hall_SE) +/area/varadero/interior/maintenance/north) +"xAx" = ( +/turf/open/gm/coast/east, +/area/varadero/interior/caves/east) "xAK" = ( /turf/open/floor/shiva{ dir = 4; @@ -27039,10 +36919,38 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) -"xBb" = ( -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/river, -/area/varadero/exterior/pontoon_beach) +"xBv" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "\improper Underground Lavatory"; + req_access_txt = "100" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/laundry) +"xBw" = ( +/obj/structure/machinery/storm_siren{ + dir = 8; + pixel_x = 3 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/eastbeach) +"xBH" = ( +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/effect/landmark/lv624/fog_blocker{ + time_to_dispel = 25000 + }, +/obj/structure/blocker/invisible_wall/water, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/farocean) "xBO" = ( /obj/structure/closet/emcloset, /obj/effect/landmark/objective_landmark/far, @@ -27069,6 +36977,17 @@ }, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/maintenance/research) +"xCJ" = ( +/obj/effect/landmark/objective_landmark/medium, +/obj/structure/closet/secure_closet/medical3{ + req_access_txt = "100" + }, +/obj/structure/machinery/light, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "wred" + }, +/area/varadero/interior/medical) "xCM" = ( /obj/structure/largecrate/random, /turf/open/floor/plating/icefloor{ @@ -27082,6 +37001,21 @@ icon_state = "yellowcorners" }, /area/varadero/interior/cargo) +"xCZ" = ( +/obj/structure/prop/tower, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) +"xDd" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "xDf" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 @@ -27091,10 +37025,6 @@ dir = 1 }, /area/varadero/interior/research) -"xDl" = ( -/obj/structure/prop/rock/brown, -/turf/open/auto_turf/sand_white/layer0, -/area/varadero/interior_protected/caves/digsite) "xDy" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -27104,13 +37034,42 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, /area/varadero/interior/court) +"xDE" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/item/lightstick/variant/planted, +/turf/open/gm/coast/south, +/area/varadero/exterior/farocean) +"xEc" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/light, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) +"xEl" = ( +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior_protected/caves) "xEG" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/maintenance/south) +"xFb" = ( +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/eastocean) "xFw" = ( /obj/structure/bed/chair{ buckling_y = 18; @@ -27124,6 +37083,18 @@ "xFE" = ( /turf/open/floor/wood, /area/varadero/interior/records) +"xFO" = ( +/obj/item/device/flashlight, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/mess) +"xFS" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/turf/closed/wall/rock/brown, +/area/varadero/exterior/pontoon_beach) "xFZ" = ( /obj/structure/filingcabinet, /obj/structure/machinery/light{ @@ -27133,15 +37104,6 @@ icon_state = "redfull" }, /area/varadero/interior/medical) -"xGf" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/flora/bush/ausbushes/var3/sparsegrass{ - icon_state = "sparsegrass_3" - }, -/turf/open/gm/dirt, -/area/varadero/exterior/eastbeach) "xGp" = ( /turf/open/floor/wood{ icon_state = "wood-broken6" @@ -27166,19 +37128,36 @@ }, /turf/open/floor/wood, /area/varadero/interior/court) -"xHK" = ( -/obj/structure/machinery/door/airlock/almayer/medical/glass{ - dir = 2; - name = "\improper Theta-V Research Laboratory Director's Office"; - req_access = null; - req_one_access = null +"xHz" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/floor/plating, -/area/varadero/interior/research) -"xJn" = ( -/obj/structure/blocker/fog, -/turf/open/gm/coast/south, -/area/varadero/interior/oob) +/area/varadero/interior/caves/east) +"xIA" = ( +/obj/structure/closet/secure_closet/freezer/fridge/groceries, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/varadero/interior/cargo) +"xJb" = ( +/obj/structure/machinery/landinglight/ds2/spoke{ + pixel_x = -1; + pixel_y = 22 + }, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) +"xJt" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/toolbox, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "xJx" = ( /obj/structure/machinery/photocopier, /obj/structure/machinery/light{ @@ -27189,11 +37168,27 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"xJH" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/coast/beachcorner2/north_west, +/area/varadero/exterior/lz2_near) "xJZ" = ( /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/security) +"xKo" = ( +/obj/structure/surface/table, +/obj/item/storage/wallet/random{ + pixel_y = 3 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/north) "xKq" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/paper_bin{ @@ -27223,20 +37218,6 @@ }, /turf/open/floor/wood, /area/varadero/interior/court) -"xKz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Underground Main Hallway"; - req_access_txt = "100" - }, -/turf/open/floor/plating, -/area/varadero/interior/hall_N) "xKC" = ( /obj/structure/machinery/light{ dir = 8 @@ -27277,6 +37258,23 @@ icon_state = "red" }, /area/varadero/interior/security) +"xKS" = ( +/obj/structure/lz_sign/new_varadero, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/varadero/exterior/lz1_near) +"xLB" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/pontoon_beach) "xLE" = ( /obj/structure/noticeboard{ pixel_y = 32 @@ -27304,18 +37302,6 @@ icon_state = "multi_tiles" }, /area/varadero/interior/morgue) -"xMH" = ( -/obj/structure/prop/rock/brown, -/turf/open/auto_turf/sand_white/layer0, -/area/varadero/interior_protected/caves/central) -"xMI" = ( -/obj/structure/barricade/wooden{ - dir = 8 - }, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/comms2) "xNb" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 @@ -27324,6 +37310,14 @@ icon_state = "multi_tiles" }, /area/varadero/interior/hall_SE) +"xNw" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/carpet, +/area/varadero/interior/research) +"xNA" = ( +/obj/structure/fence, +/turf/open/gm/dirt, +/area/varadero/exterior/lz2_near) "xNR" = ( /turf/closed/wall, /area/varadero/interior/bunks) @@ -27340,6 +37334,14 @@ icon_state = "floor3" }, /area/varadero/interior/security) +"xOx" = ( +/obj/structure/closet/crate/secure, +/obj/item/trash/popcorn, +/obj/item/hardpoint/locomotion/van_wheels, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/cargo) "xOz" = ( /obj/structure/machinery/light{ dir = 8 @@ -27360,6 +37362,15 @@ icon_state = "asteroidplating" }, /area/varadero/exterior/lz1_near) +"xOX" = ( +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz1_near) "xPj" = ( /obj/structure/machinery/light{ dir = 8 @@ -27369,26 +37380,31 @@ icon_state = "blue" }, /area/varadero/interior/administration) -"xPR" = ( -/obj/structure/barricade/wooden, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +"xPx" = ( +/obj/structure/machinery/door/airlock/almayer/medical/glass{ + dir = 2; + name = "\improper Theta-V Research Laboratory Director's Office"; + req_access = null; + req_one_access = null }, -/area/varadero/interior/comms2) +/turf/open/floor/shiva{ + dir = 1 + }, +/area/varadero/interior/research) "xPV" = ( /obj/structure/machinery/light, /turf/open/floor/shiva{ icon_state = "yellow" }, /area/varadero/interior/electrical) -"xQh" = ( -/obj/structure/pipes/vents/pump{ - dir = 8 - }, -/turf/open/floor/shiva{ - icon_state = "multi_tiles" +"xQJ" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/clothing/mask/cigarette/cigar, +/obj/item/reagent_container/food/drinks/bottle/whiskey{ + pixel_x = -7 }, -/area/varadero/interior/hall_N) +/turf/open/floor/wood, +/area/varadero/interior/beach_bar) "xRt" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 @@ -27410,18 +37426,24 @@ "xRF" = ( /turf/closed/wall, /area/varadero/interior/hall_N) -"xRR" = ( +"xSl" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior_protected/caves/central) +"xSZ" = ( /obj/structure/platform/kutjevo/smooth{ - dir = 8 + dir = 8; + climb_delay = 1; + layer = 2.99 }, -/turf/open/gm/dirt, -/area/varadero/exterior/lz1_near) -"xSM" = ( -/obj/structure/machinery/space_heater, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -1; + pixel_y = 9; + indestructible = 1; + unacidable = 1 }, -/area/varadero/interior/comms2) +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) "xTd" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 @@ -27430,14 +37452,13 @@ dir = 1 }, /area/varadero/interior/cargo) -"xTh" = ( -/obj/structure/closet/secure_closet/security, -/obj/effect/spawner/random/supply_kit, -/turf/open/floor/shiva{ - dir = 10; - icon_state = "red" +"xTA" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/river{ + name = "shallow ocean"; + default_name = "shallow ocean" }, -/area/varadero/interior/administration) +/area/varadero/exterior/farocean) "xTH" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -27447,12 +37468,38 @@ icon_state = "multi_tiles" }, /area/varadero/interior/medical) +"xUp" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "xUq" = ( /turf/open/floor/shiva{ dir = 1; icon_state = "blue" }, /area/varadero/interior/administration) +"xUs" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/obj/effect/landmark/objective_landmark/medium, +/obj/structure/machinery/storm_siren{ + pixel_y = 5 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/research) +"xUu" = ( +/obj/structure/surface/table/woodentable, +/obj/item/weapon/shield/riot, +/turf/open/floor/carpet, +/area/varadero/interior/library) +"xUH" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken3" + }, +/area/varadero/interior/court) "xVe" = ( /obj/item/prop/helmetgarb/bullet_pipe{ pixel_x = -8; @@ -27466,6 +37513,14 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/research) +"xVw" = ( +/obj/structure/blocker/invisible_wall/water, +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/gm/river/ocean{ + name = "deep ocean"; + default_name = "deep ocean" + }, +/area/varadero/exterior/farocean) "xVA" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -27475,13 +37530,27 @@ icon_state = "redfull" }, /area/varadero/interior/medical) -"xVK" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" +"xVC" = ( +/obj/structure/closet/crate/secure, +/obj/item/trash/sosjerky, +/obj/item/ammo_magazine/shotgun/buckshot, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior/cargo) +"xVQ" = ( +/obj/structure/sign/safety/reception, +/obj/structure/sign/safety/one{ + pixel_x = 15 }, +/turf/closed/wall, /area/varadero/interior/maintenance/north) +"xVX" = ( +/obj/item/tool/warning_cone, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/exterior/lz2_near) "xWj" = ( /obj/structure/machinery/firealarm{ pixel_y = 24 @@ -27491,15 +37560,18 @@ icon_state = "red" }, /area/varadero/interior/security) -"xWD" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth{ +"xWL" = ( +/obj/structure/machinery/light/small{ dir = 8 }, -/turf/open/gm/dirt, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, /area/varadero/exterior/eastbeach) +"xWU" = ( +/obj/item/trash/candle, +/turf/open/floor/wood, +/area/varadero/interior/chapel) "xWY" = ( /turf/open/floor/shiva{ icon_state = "green" @@ -27521,17 +37593,18 @@ icon_state = "blue" }, /area/varadero/interior/technical_storage) -"xXg" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/surface/table/reinforced/prison, -/obj/effect/spawner/random/toolbox, -/turf/open/floor/shiva{ +"xXr" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood/gibs/xeno/body, +/turf/open/floor{ dir = 1; - icon_state = "blue" + icon_state = "asteroidfloor" }, -/area/varadero/interior/technical_storage) +/area/varadero/exterior/lz1_near) +"xYB" = ( +/obj/item/tool/pickaxe, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/north_research) "xYC" = ( /obj/item/device/camera_film{ pixel_x = 4; @@ -27554,6 +37627,10 @@ icon_state = "yellow" }, /area/varadero/interior/cargo) +"xZa" = ( +/obj/structure/prop/rock/brown, +/turf/open/gm/dirt, +/area/varadero/interior_protected/caves/swcaves) "xZv" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -27612,20 +37689,6 @@ icon_state = "floor6" }, /area/varadero/interior_protected/vessel) -"yaK" = ( -/obj/structure/machinery/door_control{ - id = "req_sec_storage"; - name = "Requesition Secure Storage"; - normaldoorcontrol = 1; - pixel_y = 24; - req_access_txt = "100"; - specialfunctions = 4 - }, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "yellow" - }, -/area/varadero/interior/cargo) "yba" = ( /obj/structure/machinery/space_heater, /obj/structure/pipes/standard/manifold/hidden/green{ @@ -27658,14 +37721,18 @@ /obj/item/device/flashlight/lamp, /turf/open/floor/carpet, /area/varadero/interior/library) -"ybC" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor{ - name = "\improper Colony Administration"; - req_access_txt = "100" +"ybt" = ( +/obj/structure/prop/ice_colony/dense/planter_box/plated{ + dir = 9; + icon_state = "planter_box_soil" }, -/turf/open/floor/plating, -/area/varadero/interior/administration) +/obj/structure/flora/bush/ausbushes/pointybush{ + pixel_y = 11 + }, +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" + }, +/area/varadero/interior/maintenance/security) "ybY" = ( /obj/structure/surface/table, /obj/item/paper_bin, @@ -27685,10 +37752,22 @@ /obj/structure/machinery/door/window/westleft, /turf/open/floor/interior/plastic, /area/varadero/interior/security) +"ycY" = ( +/obj/item/trash/ceramic_plate{ + pixel_x = -8; + pixel_y = 12 + }, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/carpet, +/area/varadero/interior/maintenance/north) +"ydx" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/plating, +/area/varadero/interior/bunks) "ydy" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited, /turf/closed/wall/r_wall/unmeltable, -/area/varadero/exterior/lz1_near) +/area/varadero/interior/dock_control) "ydI" = ( /turf/open/floor/carpet, /area/varadero/interior/records) @@ -27728,13 +37807,6 @@ icon_state = "multi_tiles" }, /area/varadero/interior_protected/vessel) -"yev" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Underground Main Hallway"; - req_access_txt = "100" - }, -/turf/open/floor/plating, -/area/varadero/interior/hall_SE) "yeF" = ( /obj/item/reagent_container/glass/bucket/mopbucket, /obj/item/tool/mop, @@ -27762,10 +37834,14 @@ }, /turf/open/gm/dirt, /area/varadero/interior/maintenance/north) -"yeK" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, -/turf/open/auto_turf/sand_white/layer0, -/area/varadero/interior/maintenance/security) +"yeR" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/item/stack/tile/plasteel{ + pixel_x = 8; + pixel_y = 6 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/maintenance/research) "yeY" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/green, @@ -27774,6 +37850,14 @@ icon_state = "red" }, /area/varadero/interior/security) +"yfh" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/turf/open/floor/shiva{ + icon_state = "wredfull" + }, +/area/varadero/interior/medical) "yfQ" = ( /obj/structure/bed/chair{ dir = 4; @@ -27784,6 +37868,14 @@ icon_state = "blue" }, /area/varadero/interior/administration) +"yfT" = ( +/obj/item/stack/tile/plasteel{ + layer = 2.89; + pixel_x = 17; + pixel_y = 16 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/interior/caves/north_research) "yfV" = ( /obj/structure/cable/heavyduty{ icon_state = "1-4-8" @@ -27801,6 +37893,14 @@ }, /turf/open/floor/plating, /area/varadero/interior_protected/caves/digsite) +"ygn" = ( +/obj/structure/catwalk{ + indestructible = 1 + }, +/turf/open/gm/river/desert/deep{ + base_river_slowdown = 0 + }, +/area/varadero/interior/maintenance/north) "ygT" = ( /obj/structure/surface/table, /obj/item/storage/firstaid/fire, @@ -27854,6 +37954,22 @@ }, /turf/open/floor/wood, /area/varadero/interior/bunks) +"yhU" = ( +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/turf/open/gm/grass/grass1/weedable, +/area/varadero/interior_protected/caves/swcaves) +"yhZ" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4; + climb_delay = 1; + layer = 2.99 + }, +/obj/structure/platform/kutjevo/smooth{ + climb_delay = 1; + layer = 2.99 + }, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "yil" = ( /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/maintenance) @@ -27869,14 +37985,35 @@ icon_state = "wredfull" }, /area/varadero/interior/medical) +"yji" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/firstaid/regular{ + pixel_x = 4; + pixel_y = -6 + }, +/obj/item/storage/firstaid/rad{ + pixel_y = 4 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "purplefull" + }, +/area/varadero/interior/research) "yjp" = ( /obj/structure/machinery/door/airlock/almayer/security/glass{ dir = 1; name = "\improper Underground Security Checkpoint"; req_access_txt = "100" }, -/turf/open/floor/plating, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "redfull" + }, /area/varadero/interior/hall_N) +"yjH" = ( +/obj/structure/cargo_container/kelland/right, +/turf/open/auto_turf/sand_white/layer1, +/area/varadero/exterior/lz2_near) "yjK" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/disposalpipe/segment{ @@ -27898,27 +38035,24 @@ /obj/structure/window/framed/colony, /turf/open/floor/plating, /area/varadero/interior/technical_storage) -"ykC" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +"ykx" = ( +/obj/item/stack/tile/plasteel{ + pixel_x = 8; + pixel_y = 6 }, -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Underground Women's Restroom"; - req_access_txt = "100"; - req_one_access = null +/turf/open/floor/plating/icefloor{ + icon_state = "asteroidplating" }, -/turf/open/floor/plating, -/area/varadero/interior/toilets) -"ykD" = ( -/obj/structure/platform/kutjevo/smooth, -/turf/open/gm/coast/west, -/area/varadero/exterior/pontoon_beach) +/area/varadero/interior/caves/east) +"ykA" = ( +/obj/structure/closet/crate/construction, +/obj/item/storage/belt/utility/full, +/turf/open/gm/dirt{ + icon_state = "desert0" + }, +/area/varadero/exterior/eastbeach) "ykE" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/storage/box/emps{ - pixel_x = 6; - pixel_y = 6 - }, /obj/item/storage/box/cdeathalarm_kit{ pixel_x = -8; pixel_y = 1 @@ -27928,44 +38062,37 @@ icon_state = "floor3" }, /area/varadero/interior/medical) -"ylc" = ( -/obj/structure/prop/invuln/minecart_tracks{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" - }, -/area/varadero/interior/oob) -"ylf" = ( -/obj/structure/filingcabinet{ - density = 0; - icon_state = "chestdrawer"; - pixel_x = -8 - }, -/obj/structure/filingcabinet{ - density = 0; - icon_state = "chestdrawer"; - pixel_x = 8 - }, -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +"ykM" = ( +/obj/effect/overlay/palmtree_r{ + icon_state = "palm2" }, -/area/varadero/interior/maintenance/security) -"ymf" = ( -/obj/structure/largecrate/random, -/obj/structure/barricade/wooden, -/turf/open/floor/plating/icefloor{ - icon_state = "asteroidplating" +/turf/open/gm/dirt, +/area/varadero/exterior/comms4) +"ykS" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"ykU" = ( +/obj/item/tool/shovel, +/turf/open/gm/dirt, +/area/varadero/exterior/eastbeach) +"ylB" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/gm/dirt, +/area/varadero/exterior/monsoon) +"ylX" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/almayer/security/glass{ + dir = 1; + name = "\improper Underground Security Marshal's Office"; + req_access_txt = "100" }, -/area/varadero/interior/comms2) +/turf/open/floor/wood, +/area/varadero/interior/security) +"ymb" = ( +/obj/structure/blocker/invisible_wall/water, +/turf/open/gm/coast/beachcorner/south_east, +/area/varadero/exterior/farocean) (1,1,1) = {" wUU @@ -28190,30 +38317,30 @@ pGs pGs pGs pGs -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs pGs pGs pGs @@ -28372,32 +38499,32 @@ pGs pGs pGs pGs -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +pGs pGs -aFr pGs pGs pGs @@ -28554,36 +38681,30 @@ pGs pGs pGs pGs -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pGs -pGs -pGs -pGs -pGs -pGs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs pGs pGs pGs @@ -28614,16 +38735,22 @@ pGs pGs pGs pGs +srg +srg +xCn +xCn pGs pGs pGs pGs +xCn +xYB dxK +srg pGs pGs pGs -pGs -uHY +dxK pGs pGs pGs @@ -28736,39 +38863,30 @@ pGs pGs pGs pGs -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk pGs pGs pGs @@ -28788,7 +38906,6 @@ pGs pGs pGs pGs -uHY pGs pGs pGs @@ -28796,18 +38913,28 @@ pGs pGs pGs pGs -hto pGs pGs -dxK -nHD +srg +xCn +xCn +xCn +srg +xCn +xCn xCn -uHY xCn xCn xCn +xCn +xCn +xCn +xCn +xCn +xCn +srg ljt -uHY +dxK pGs pGs pGs @@ -28918,32 +39045,32 @@ pGs pGs pGs pGs -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pGs pGs -qhd pGs pGs pGs @@ -28966,42 +39093,42 @@ pGs pGs uHY ljt -pGs -pGs xCn xCn xCn -alL -pGs -pGs -pGs xCn -tSQ -uHY xCn +mCX xCn xCn xCn xCn +tSQ xCn xCn xCn xCn xCn -oPQ +srg +srg +xCn +xCn xCn xCn +oPQ xCn +cBI xCn +emt ljt pGs pGs pGs pGs pGs -pGs -pGs -pGs +geo +geo +jQa pGs pGs pGs @@ -29100,30 +39227,30 @@ pGs pGs pGs pGs -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -cBu +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +imk +mPk +mPk pGs pGs pGs @@ -29140,8 +39267,8 @@ pGs pGs pGs pGs -nHD -nHD +srg +srg ljt pGs pGs @@ -29151,9 +39278,9 @@ oPQ xCn xCn xCn -azH xCn -oPQ +xCn +qRi oPQ xCn xCn @@ -29163,24 +39290,34 @@ xCn oPQ xCn xCn +srg +fHk xCn xCn -xCn -nHD oVt xCn xCn oPQ xCn -xCn +cBI xCn oPQ oPQ +xCn pGs pGs pGs +jQa +jQa +jQa +jQa +jQa pGs pGs +gxQ +jQa +jQa +jQa pGs pGs pGs @@ -29219,20 +39356,10 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +vdL +geo +jQa +jQa pGs pGs pGs @@ -29282,31 +39409,31 @@ pGs pGs pGs pGs -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +imk pGs pGs pGs @@ -29315,54 +39442,76 @@ pGs pGs pGs dxK -dxK +uHY xCn xCn uHY pGs -xCn +srg xCn xCn xCn oPQ uHY xCn -xCn +qYg xCn oPQ +srg xCn -xCn -xCn +srg xCn oPQ oPQ oPQ xCn xCn +srg +srg +xCn +oPQ xCn xCn xCn -oPQ xCn xCn -uHY -uHY -nHD -nHD -nHD xCn xCn xCn xCn +srg xCn +cBI xCn xCn oPQ +kAL +xCn +fHk +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +geo pGs pGs pGs pGs pGs +geo +xZa +jQa +jQa +geo +geo pGs pGs pGs @@ -29380,42 +39529,20 @@ pGs pGs pGs pGs +xZa +geo +jQa pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +gxQ +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -29464,39 +39591,39 @@ pGs pGs pGs pGs -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -pHX +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +imk +pGs pGs -qhd pGs pGs pGs dxK -nHD +srg xCn xCn xCn @@ -29504,7 +39631,7 @@ xCn uHY xCn xCn -xCn +fHk xCn oPQ xCn @@ -29518,12 +39645,12 @@ xCn xCn xCn oPQ -ljt +oPQ xCn xCn oVt xCn -xCn +sfF ljt uHY qul @@ -29532,59 +39659,42 @@ qul qul qul qul -nHD xCn -uHY -uHY +srg +srg xCn +fzc xCn oVt xCn -qMH -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +xCn +kAL +xCn +gxQ +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs pGs pGs +geo +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -29599,6 +39709,23 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -29646,39 +39773,39 @@ pGs pGs pGs pGs -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -pHX +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk pGs pGs pGs pGs -nHD -aBE +xCn +xCn xCn xCn xCn @@ -29693,17 +39820,17 @@ xCn oPQ xCn xCn -nHD +hGl tMJ wpG -yks +vYp tMJ ncL yks yks ncL tMJ -yks +vYp tMJ yks yks @@ -29714,62 +39841,43 @@ fay fay fay fay -fay -fay -fay -fay -fay -vYW -vYW -vYW -vYW -hto -hto -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +tqh +tqh +tqh +tqh +uJT +srg +xCn +xCn +xCn +xCn +xCn +jQa +jQa +jQa +geo +geo +jQa +jQa +jQa +geo +jQa +jQa +jQa +jQa pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -29781,6 +39889,25 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +nFK +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -29828,33 +39955,33 @@ pGs pGs pGs pGs -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -cBu -pHX -pHX +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +imk +mPk +mPk +mPk +mPk pGs pGs pGs @@ -29872,11 +39999,11 @@ xCn xCn oPQ xCn -uHY xCn +srg xCn -nHD -ncL +hGl +efw kXQ efw kXQ @@ -29885,10 +40012,10 @@ fND xCq kXQ efw +jGA efw efw -efw -gKw +awu fay jMK cqB @@ -29900,60 +40027,41 @@ fWA mEA sBk ksn -fay -crY -vYW -vYW -vYW -vYW -vYW -vYW -vYW -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +pGc +srg +xCn +xCn +xCn +xCn +xCn +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +geo +jQa +jQa +jYZ +jQa +geo pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +geo +geo pGs pGs pGs @@ -29963,6 +40071,25 @@ pGs pGs pGs pGs +jQa +jQa +jQa +tAT +jQa +jQa +jQa +jQa +ppl +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +gxQ pGs pGs pGs @@ -30010,33 +40137,33 @@ pGs pGs pGs pGs -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -pHX -pHX +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +sNx +mPk +imk +mPk +imk pGs pGs pGs @@ -30053,12 +40180,12 @@ xCn xCn xCn oPQ -uHY +xCn uHY xCn -nHD -nHD -yks +xCn +mQF +efw kXQ efw efw @@ -30080,71 +40207,71 @@ cJa hDA pjs aJc -lqV +hDA xrA -fay -crY -crY -vYW -vYW -vYW -vYW -vYW -vYW -vYW -hto -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +pGc +srg +xCn +xCn +xCn +xCn +xCn +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +geo +jQa +jQa +faB +jQa +jQa +jQa +pGs +jQa +jQa +jQa +tpO +tpO +jQa +jQa +nFK +jQa +jQa +jQa +jQa +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +geo +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jcr +ppl +jQa +jQa +nFK +jQa +nFK +jQa +jQa +jQa +jQa pGs pGs pGs @@ -30192,141 +40319,141 @@ pGs pGs pGs pGs -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +sNx +mPk +mPk +rYR +pGs pGs -qhd pGs pGs uHY xCn xCn xCn +srg xCn -xCn -xCn +srg qul uHY -uHY -xCn +srg +srg ljt qul qul qul -dxK -dxK -yks +uHY +hhM qDh qlj +qlj yks +aoE yks yks -yks -yks +aoE yks yks efw qMY efw -fay +dkr rUw hfX hFA -fay +dkr qMD hDA iAp gwC hDA tMx -fay -qMH -crY -crY -vYW -vYW -vYW +tqh +dxK +xCn +xCn +xCn +xCn +xCn vYW vYW vYW vYW hto pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +tpO +tpO +jQa +geo +jQa +jQa +jQa +jQa +jQa +jQa +pGs +pGs +pGs +pGs +pGs +pGs +pGs +geo +jQa +jQa +jQa +jQa +uhV +jQa +jQa +jQa +jQa +jQa +jQa +geo +geo +geo +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -30374,38 +40501,38 @@ pGs pGs pGs pGs -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -lVM -lVM -pHX -lVM -emx -emx -pGs +cJL +mPk +mPk +mPk +cJL +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +cJL +mPk +mPk +mPk +mPk +mPk +mPk +mPk +cJL +vlm +imk +mPk +imk +xTA pGs pGs pGs +qul ljt oPQ oPQ @@ -30421,15 +40548,15 @@ qul qul qul qul -qul -yks +hhM +efw efw kYN yks aHs fla gkk -dhh +eGP nPE yks bag @@ -30447,12 +40574,12 @@ gwC odD rjE fay -ebr -ebr -qMH -ebr -ebr -vYW +qul +qul +uHY +xCn +xCn +srg vYW vYW vYW @@ -30461,54 +40588,54 @@ hto pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +geo +geo +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +nFK +geo +nFK +jQa +jQa +jQa +jQa pGs pGs pGs @@ -30556,44 +40683,43 @@ pGs pGs pGs pGs -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -lVM -lVM -lVM -lVM -tEH -vRC -fLo +wBp +wBp +rYC +xVw +wBp +wBp +wBp +rYC +xVw +wBp +wBp +wBp +wBp +xVw +rYC +wBp +wBp +wBp +xVw +wBp +rYC +wBp +wBp +wBp +oNa +mYA +cLV +eCB klT klT klT klT -yks +vYp ncL tMJ yks -yks -yks +vYp yks yks yks @@ -30607,6 +40733,7 @@ yks yks efw efw +efw yks mzJ rbU @@ -30615,35 +40742,57 @@ sdU rbU yks yks -gJS -yks +fdA +vYp fay fay -sBb +fKz fay fay fay -fay -tqR -ivp +lBw +ltW +tkw ftA fay fay fay ebr ebr -ebr -ebr -alL +pKK +vYW +loA uQa vYW vYW vYW +vYW pGs pGs pGs +jQa +jQa +jQa +jQa +abL +jQa +geo +geo +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs +gxQ +jQa +jQa +jQa +geo +jQa +jQa pGs pGs pGs @@ -30651,45 +40800,23 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +jQa +jQa +jQa +jQa +jQa +jYZ +geo +jQa +jQa +geo +jQa +osn +geo +jQa +jQa +geo pGs pGs pGs @@ -30738,36 +40865,36 @@ pGs pGs pGs pGs -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -lVM -cBu -lVM -lVM -emx -lVM -lVM -orL +sNy +jDe +sNy +sNy +sNy +sNy +sNy +sNy +sNy +jDe +sNy +sNy +sNy +sNy +sNy +sNy +sNy +sNy +sNy +jDe +sNy +sNy +tER +sNy +dWH jhW jhW -efw -efw +jhW +mxx +jGm fND uVo kXQ @@ -30777,7 +40904,7 @@ fND uVo kXQ efw -fND +xwG xCq kXQ kXQ @@ -30789,8 +40916,8 @@ efw efw efw efw -yks -fYb +pCP +ovC ovC nOQ lIO @@ -30814,13 +40941,15 @@ xhx fay ebr ebr -ebr -ebr +vYW +vYW hto vYW vYW vYW vYW +vYW +vYW pGs pGs pGs @@ -30828,49 +40957,47 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +geo +jQa pGs pGs pGs pGs +jQa +jQa +jQa +geo +jQa +jQa +jQa pGs pGs pGs pGs pGs +gxQ +jQa +jQa +jQa +jQa +jQa pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +ppl +jQa +jQa +jQa +jQa +jQa +iCB +jQa +jQa +jQa pGs pGs pGs @@ -30920,58 +41047,58 @@ pGs pGs pGs pGs -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -lVM -lVM -lVM -lVM -lVM -lVM -lVM -orL +sNy +sNy +sNy +sNy +sNy +sNy +sNy +sNy +sNy +sNy +lyP +sNy +lyP +sNy +sNy +sNy +sNy +sNy +sNy +sNy +sNy +sNy +sNy +sNy +nVv +efw efw qVp sQn sQn -vSd -wOQ +rxI sQn sQn sQn sQn -wOQ +rxI sQn sQn sQn -edp -vSd +rxI sQn sQn sQn sQn -wOQ +tVD +rxI sQn +dTl vdq efw efw -yks +aoE vTl ovC ovC @@ -30982,7 +41109,7 @@ wIr qQF ltW cNT -ltW +aPQ qQF ltW ltW @@ -30997,45 +41124,15 @@ fay ebr ebr ebr -ebr -vYW vYW vYW vYW +uQa +uQa vYW +neq vYW -hto -hto -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +icl pGs pGs pGs @@ -31043,16 +41140,46 @@ pGs pGs pGs pGs +jQa +jQa +geo +geo +jQa +jQa +jQa pGs pGs pGs pGs pGs +jQa +jQa +jQa +nFK +jQa +jQa +jQa pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs +jQa +jQa +jQa +jQa +geo +uhV +jQa +nFK +jQa +geo pGs pGs pGs @@ -31102,61 +41229,61 @@ pGs pGs pGs pGs -pHX -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -lVM -lVM -lVM -tEH -fLo -fLo -fLo -fLo -msE -efw -qMY -yks -yks -yks -yks -yks -yks -yks -yks -yks -tMJ -ncL -yks -yks -yks -yks -yks -yks -yks -yks -mln +tER +sNy +sNy +sNy +sNy +lyP +sNy +sNy +sNy +lyP +sNy +sNy +sNy +sNy +sNy +sNy +wLq +lyP +lyP +sNy +dhV +ozD +nFH +ozD +jpZ +byU +byU qMY efw +efw +efw +pJA +jGA +efw +efw +efw +pJA +efw +efw +efw +pJA +efw +efw +efw +kXQ +kXQ +pJA +efw +jif +efw miP yks qBU rbU -rbU +ovC adC rbU aCz @@ -31166,7 +41293,7 @@ biF yba pVl xDf -wmg +rFj izs vku izs @@ -31179,9 +41306,9 @@ fay ebr ebr ebr -hto vYW vYW +uQa vYW vYW uQa @@ -31195,6 +41322,11 @@ pGs pGs pGs pGs +jQa +jQa +geo +geo +jQa pGs pGs pGs @@ -31202,40 +41334,35 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +ppl +jQa +jQa +geo +geo +ijZ +jQa +jQa +jQa +geo pGs pGs pGs @@ -31284,63 +41411,63 @@ pGs pGs pGs pGs -cBu -pHX -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -lVM -lVM -lVM -lVM -lVM -woP +sNy +sNy +tER +sNy +sNy +sNy +sNy +sNy +sNy +sNy +sNy +sNy +sNy +sNy +sNy +sNy +lyP +wLq +sNy +sNy +hlG +pVz skp skp -pVz vLc -skp -efw -qMY +qDh +qlj +vvh +qlj +yks +yks +yks +yks +yks +yks +yks +aoE +tMJ +ncL +yks +yks +yks +yks +yks +yks yks -qul -qul -qul -qul -qul -qul -qul -ljt -oPQ -oPQ -qul -qul -qul -qul -qul -qul -qul yks bvE qMY -efw +mxx cbv yks vNG rbU -kCF +jvc nCV -rbU +ovC fay wIr ltW @@ -31350,8 +41477,8 @@ qQF ltW dQl rWJ -jUA -ltW +jJp +aJI dQl rWJ ltW @@ -31360,14 +41487,15 @@ okB fay ebr ebr -ebr -vYW -vYW vYW vYW +uQa +jAI vYW uQa uQa +uQa +vYW vYW vYW pGs @@ -31376,6 +41504,10 @@ pGs pGs pGs pGs +gxQ +jQa +jQa +gxQ pGs pGs pGs @@ -31385,40 +41517,35 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +ppl +jQa +jQa +jQa +jQa +nFK +jQa +nFK +jQa +jQa +jQa +jQa pGs pGs pGs @@ -31466,44 +41593,44 @@ pGs pGs pGs pGs -pHX -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -lVM -lVM -woP +sNy +sNy +sNy +sNy +sNy +sNy +sNy +mLg +nFH +nFH +nFH +nFH +nFH +nFH +nFH +nFH +nFH +nFH +ozD +nFH +tdX ifB lCK ifB lCK -ifB efw -nWA +efw +qMY +cyT yks qul qul qul qul -qul uHY uHY -xCn -oPQ +qHc +qHc oPQ ljt qul @@ -31513,17 +41640,17 @@ qul qul qul yks -oEx +sDE wuA efw rme -yks +aoE qKq axY lNw urE -bhS -xHK +xNw +xPx wIr ltW pCc @@ -31541,8 +41668,8 @@ qQF eXr fay ebr -ebr vYW +neq vYW vYW vYW @@ -31552,6 +41679,8 @@ uQa uQa vYW vYW +vYW +vYW pGs pGs pGs @@ -31571,12 +41700,42 @@ pGs pGs pGs pGs +jQa +jQa +jQa +tAT +jQa +jQa pGs +jQa +jQa +nFK +jQa +jQa +jQa +jQa pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs pGs +wUU +"} +(21,1,1) = {" +wUU pGs pGs pGs @@ -31605,13 +41764,6 @@ pGs pGs pGs pGs -wUU -"} -(21,1,1) = {" -wUU -pGs -pGs -pGs pGs pGs pGs @@ -31623,60 +41775,35 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -qhd -pGs -cBu -lVM -cBu -cBu -lVM -cBu -cBu -cBu -cBu -lVM -cBu -lVM -cBu -cBu -lVM -cBu -lVM -lVM -lVM -lVM -woP +sNy +wLq +sNy +sNy +sNy +sNy +sNy +sHJ +ifB +ifB +ifB +ifB +ifB +ifB +ifB +ifB +ifB +ifB +ifB +ifB ifB ifB ifB ifB ifB efw +efw qMY -yks +efw yks qul qul @@ -31687,10 +41814,10 @@ xCn xCn oPQ oPQ +qHc xCn xCn -xCn -xCn +srg qul qul qul @@ -31701,9 +41828,9 @@ efw nKr yks kpF -rbU +xxO rFD -rbU +ncC qBQ fay jcB @@ -31721,18 +41848,22 @@ ltW ltW lRU leI -fay -ebr -ebr -vYW +tqh +rpw +neq vYW vYW vYW +ixl hto vYW uQa uQa vYW +vYW +vYW +vYW +vYW pGs pGs pGs @@ -31752,37 +41883,33 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +ppl +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -31830,40 +41957,40 @@ pGs pGs pGs pGs -pHX -cBu -lVM -pHX -cBu -cBu -lVM -cBu -cBu -lVM -cBu -lVM -lVM -cBu -cBu -cBu -lVM -lVM -lVM -lVM -woP -ifB +pRV +sNy +wLq +sNy +sNy +sNy +sNy +dsC +rNf +mdy +nQR +nQR +nQR +nQR +nQR +nQR +qOO +rNf +mdy +nQR +pTQ ifB ifB ifB ifB efw +efw qMY aoi yks yks qul qul -ljt +oPQ oPQ oPQ xCn @@ -31873,7 +42000,7 @@ xCn xCn xCn xCn -uHY +cgr qul qul yks @@ -31884,7 +42011,7 @@ efw yks yks yks -yks +aoE yks yks yks @@ -31894,7 +42021,7 @@ kCy bUR qQF ltW -lUi +yji ltW dQl ltW @@ -31903,46 +42030,24 @@ rWJ ltW sKL xbD -fay -ebr -ebr +dkr +rpw +neq vYW vYW ebr ebr ebr -alL +uQa uQa uQa vYW hto -pGs -pGs -crY -crY -crY -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +vYW +vYW +vYW +vYW +vYW pGs pGs pGs @@ -31960,10 +42065,32 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +geo +jQa pGs pGs pGs pGs +ppl +jQa +jQa +jQa +jQa +jQa +jQa +jQa +geo +jQa +jQa pGs pGs pGs @@ -32011,33 +42138,33 @@ pGs pGs pGs pGs -pGs -lVM -emx -lVM -cBu -lVM -lVM -lVM -cBu -lVM -cBu -lVM -cBu -lVM -lVM -lVM -lVM -lVM -lVM -lVM -lVM -woP -ifB -ktt +lYo +cNt +sNy +tER +sNy +wLq +uTj +sNy +dsC +rNf +izl +sNy +wLq +sNy +wLq +lyP +sNy +sHJ +rNf +izl +ekO +aCd ifB ifB +kYM ifB +mPX efw qMY efw @@ -32053,25 +42180,25 @@ oPQ xCn xCn xCn +srg xCn -xCn -uHY -uHY +bdH +pea qul yks yks -wrQ +xUs sQn vSd sQn fdn -vSd +yeR sQn jQM sQn -oPj +bZg giq -izs +bSd izs hfD clv @@ -32086,44 +42213,24 @@ ltW sKL gka fay -ebr -ebr +rpw +vYW +vYW +vYW vYW -crY -crY ebr alL -alL +uQa uQa uQa vYW vYW -crY -crY +neq +vYW +neq +vYW vYW vYW -crY -crY -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs pGs pGs pGs @@ -32140,11 +42247,31 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +tpO +tpO +jQa +jQa +jQa +jQa pGs pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -32192,41 +42319,41 @@ pGs pGs pGs pGs -pGs -pGs -lVM -lVM -lVM -lVM -lVM -lVM -lVM -tyc -lth -juC -lVM -lVM -lVM -lVM -lVM -lVM -tyc -lth -juC -lVM -woP -ifB +qfr +nbB +cNt +wLq +wLq +sNy +sNy +sNy +sNy +dsC +rNf +izl +wLq +sNy +lyP +lyP +sNy +uTj +sHJ +rNf +izl +lyP +hlG ifB ifB ifB ifB efw +byU qMY efw -fPv +mbu yks qul -dxK +uHY xCn xCn xCn @@ -32235,23 +42362,23 @@ xCn xCn qul qul +srg xCn xCn -xCn -xCn +bdH qul qul yks -alG -xVe -kXQ -kXQ -qOS +kDh +efw +efw +efw +jGA efw neJ qMY -rAF -yks +byU +aoE tGl xAK xAK @@ -32261,18 +42388,18 @@ xAK xAK nQH mVc -xAK +nYx xAK ltW ltW fWn vVy fay -ebr -ebr +rpw +neq +vYW vYW vYW -crY vYW uQa uQa @@ -32283,30 +42410,10 @@ vYW vYW vYW vYW +neq +vYW vYW vYW -crY -crY -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs pGs pGs pGs @@ -32323,11 +42430,31 @@ pGs pGs pGs pGs +jQa +nFK +jQa +tpO +tpO +jQa +jQa +jQa pGs pGs pGs pGs pGs +ppl +jQa +jQa +nFK +jQa +ppl +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -32374,43 +42501,43 @@ pGs pGs pGs pGs -aFr -pGs -lVM -emx -lVM -emx -lVM -lVM -lVM -iUj -ubB -bvR -lVM -lVM -lVM -lVM -lVM -lVM -iUj -ubB -bvR -lVM -woP -ifB +nbB +qfr +dpW +oIc +wLq +wLq +tER +sNy +sNy +dsC +rNf +izl +wLq +sNy +lyP +sNy +sNy +sNy +sHJ +rNf +izl +wLq +hlG ifB ifB ifB ifB efw +efw qMY qUj yks yks qul -dxK -xCn +uHY xCn +qHc xCn xCn xCn @@ -32419,28 +42546,28 @@ qul uHY xCn xCn -xCn +srg xCn qul qul -hhM -hhM -hhM -xzN -xzN -hhM -hhM yks -qMY +alG +xVe +kXQ +kXQ +qOS efw +efw +qMY +knP yks dMm bcg bmt fay -xnO -fay +xxE fay +dkr fay fay fay @@ -32451,46 +42578,25 @@ icn afi fay ebr -ebr -hto vYW +hto vYW +neq vYW uQa uQa uQa uQa vYW -crY vYW vYW -crY vYW vYW vYW -crY -crY -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +vYW +vYW +vYW +vYW pGs pGs pGs @@ -32505,11 +42611,32 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs pGs pGs +geo +geo +jQa +jQa +jQa +jQa +jcr +ppl +jQa +nFK +jQa +jQa +jQa pGs pGs pGs @@ -32555,65 +42682,65 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs -lVM -emx -lVM -lVM -emx -lVM -iUj -ubB -bvR -lVM -lVM -lVM -lVM -lVM -lVM -iUj -ubB -bvR -lVM -woP +qfr +nbB +rcu +fQK +dpW +pRV +wLq +wLq +wLq +wLq +dsC +plF +izl +wLq +uTj +sNy +sNy +sNy +sNy +sHJ +rNf +iVD +lyP +hlG ifB ifB kyI ifB -ifB efw +byU qMY yks -hhM +yks qul -dxK +uHY xCn hRv xCn -xCn +qHc xCn oPQ -uHY -uHY -xCn xCn xCn xCn +qHc xCn +qHc +srg uHY qul -qul -qul -qul -qul -qul -qul -qul yks -jBO +yks +yks +vSN +vSN +yks +yks +qDh +vBF qlj yks uuN @@ -32622,7 +42749,7 @@ rQV rQV nuQ lKS -sCK +jab cjU nLw fay @@ -32634,44 +42761,24 @@ hEN fay ebr ebr -hto +vYW ckM vYW vYW uQa uQa vYW -hto -ebr -ebr -ebr +vYW +vYW +neq +vYW ebr ebr vYW vYW vYW vYW -crY -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +vYW pGs pGs pGs @@ -32686,12 +42793,32 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs pGs pGs pGs +vdL +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -32737,57 +42864,56 @@ pGs pGs pGs pGs -pGs -pGs -pGs -aFr -pGs -lVM -emx -emx -lVM -tyc -iCH -ubB -mqK -juC -lVM -lVM -lVM -emx -tyc -iCH -ubB -mqK -juC -woP +nbB +qfr +nbB +nbB +qfr +dpW +oIc +wLq +wLq +dhV +mwm +rNf +iZj +vqR +wLq +wLq +wLq +llj +dhV +qCY +rNf +iZj +dkC +hlG xCM lCK ifB lCK -ifB -efw -nWA +qDh +qlj +lWB yks qul qul -dxK -xCn -xCn +uHY +qHc +qHc xCn xCn xCn oPQ +qHc xCn xCn +qHc xCn +qHc xCn +jgV xCn -xCn -xCn -xCn -xCn -qul qul qul qul @@ -32795,6 +42921,7 @@ qul qul qul yks +efw qMY kYN yks @@ -32808,9 +42935,9 @@ ltW ltW jHI fay -tqh -tqR -dOp +lBw +hDA +tnN cPR fay fay @@ -32821,39 +42948,20 @@ vYW vYW vYW uQa -uQa +wUr +vYW +vYW +vYW +vYW vYW -hto -ebr -ebr -ebr ebr ebr -crY +neq +vYW +vYW vYW vYW vYW -crY -crY -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs pGs pGs pGs @@ -32866,6 +42974,15 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -32873,6 +42990,16 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +geo +jQa +jQa +jQa pGs pGs pGs @@ -32918,68 +43045,68 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -vxA -vxA -eRc -iUj -jRC -jRC -jRC -iaC -vxA -vxA -fFD -lVM -iUj -jRC -jRC -jRC -bvR -woP +haP +haP +haP +haP +haP +nbB +ykM +dpW +iIY +oIc +dsC +ifB +ifB +ifB +kVL +iIY +iIY +pRV +uTj +dsC +ifB +ifB +ifB +iVD +hlG kvS laN rGE rGE -tyd efw -qMY +efw +ybj yks qul qul qul -xCn -xCn +qHc +mJe xCn xCn oPQ oPQ xCn -xCn +tuR xCn xCn xCn oVt xCn -xCn -xCn -xCn -xCn -uHY -uHY -qul +qHc +fUs +hhM +hhM +hhM +cYV qul qul yks +efw xnr sQn -oPj +bZg oOF izs izs @@ -33003,42 +43130,20 @@ vYW vYW vYW uQa -uQa -vYW +fFO +dGu hto +vYW +vYW ebr ebr ebr -ebr -ebr -crY +neq +vYW +vYW vYW vYW vYW -crY -crY -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs pGs pGs pGs @@ -33050,11 +43155,33 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +geo +jQa +jQa +jQa +jQa +jQa +geo pGs pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +geo +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -33100,36 +43227,36 @@ pGs pGs pGs huF -huF -huF -huF -huF -huF -pGs -qhd -pGs -pGs -fvL -ijR -jRC -meD -jRC -rsR -sid -uqA -dpl -ejN -sLu -jRC -meD -jRC -bvR -vyU -qQQ -qQQ -qQQ -qQQ -oKt +haP +rQe +vFs +iqv +haP +uQi +nbB +fQK +nbB +dpW +red +ifB +lFI +ifB +nhX +gor +qoj +avX +ehT +kQy +ifB +lFI +ifB +sZW +hnR +ptp +ptp +ptp +kRU +efw efw qMY yks @@ -33138,7 +43265,7 @@ qul qul xCn xCn -xCn +fHk xCn oPQ xCn @@ -33146,22 +43273,22 @@ xCn xCn xCn xCn -uHY -xCn -xCn -xCn xCn xCn xCn +qHc +qHc xCn +heu +vQe xCn uHY qul -qul yks -jBO +qDh +vvh qlj -yks +aoE ifx ruZ aJW @@ -33186,7 +43313,7 @@ vYW vYW uQa uQa -vYW +jAI vYW ebr ebr @@ -33198,8 +43325,8 @@ vYW vYW vYW vYW -crY -crY +vYW +neq pGs pGs pGs @@ -33209,16 +43336,44 @@ pGs pGs pGs pGs +geo +geo +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +geo pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs pGs pGs pGs +wUU +"} +(30,1,1) = {" +wUU pGs pGs pGs @@ -33243,158 +43398,6 @@ pGs pGs pGs pGs -wUU -"} -(30,1,1) = {" -wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -huF -huF -lhb -lhb -lhb -lhb -lhb -uQi -uQi -uQi -uQi -uQi -uQi -jRC -nxZ -oRo -uQi -pkn -pkn -pkn -pkn -uQi -jRC -jRC -jRC -uQi -uQi -uQi -uQi -uQi -uQi -uQi -qDh -vvh -yks -qul -qul -xCn -xCn -xCn -xCn -xCn -oPQ -xCn -xCn -xCn -xCn -qul -uHY -xCn -xCn -xCn -xCn -xCn -xCn -xCn -xCn -xCn -qul -uHY -yks -qMY -kYN -yks -fay -fay -fay -fay -fay -fay -fay -fay -fay -fay -sDM -iCy -iCy -dlv -fay -ebr -ebr -ebr -ebr -hto -vYW -vYW -uQa -uQa -vYW -vYW -hto -ebr -ebr -ebr -ebr -ebr -crY -vYW -vYW -vYW -crY -crY -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs pGs pGs pGs @@ -33404,6 +43407,108 @@ pGs pGs pGs pGs +huF +huF +eWp +lMB +lMB +lMB +jPh +uQi +uQi +uQi +uQi +uQi +ykc +ifB +huf +ifB +ykc +cog +ykc +cog +ykc +ykc +gkw +huf +ifB +ykc +uQi +uQi +uQi +uQi +uQi +efw +efw +qMY +yks +qul +qul +xCn +xCn +jCs +xCn +xCn +oPQ +xCn +qHc +xCn +xCn +qul +xCn +xCn +xCn +xCn +xCn +xCn +xCn +xCn +xCn +xCn +qul +yks +efw +qMY +kYN +yks +fay +fay +fay +fay +dkr +dkr +fay +fay +fay +fay +sDM +iCy +iCy +dlv +fay +ebr +ebr +ebr +ebr +vYW +neq +vYW +uQa +uQa +vYW +vYW +hto +ebr +ebr +ebr +ebr +ebr +vYW +vYW +vYW +vYW +vYW +vYW pGs pGs pGs @@ -33415,8 +43520,30 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +geo +jQa +jQa +jQa +geo +jQa +jQa pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -33463,42 +43590,42 @@ pGs pGs pGs huF -lhb -lhb -iqv -vFs -iqv -huc +huF +oTX +tQT +tQT +fQW +jSP ykc ykc ykc ykc ykc -uQi -uQi -uQi -pkn -uQi +ykc +cog +ykc +uZY +ykc cAw lbi qNC rSx -uQi -pkn -uQi -uQi -uQi ykc +cog ykc +rnP ykc ykc ykc ykc -efw -ybj -yks +ykc +ykc +lSg +lSg +vLt +adw qul -dxK +uHY xCn xCn xCn @@ -33517,12 +43644,12 @@ xCn xCn xCn xCn +mJe xCn xCn xCn -xCn -xCn -nOw +efw +efw qMY efw nSi @@ -33530,8 +43657,8 @@ bMx qul qul qul -uHY -uHY +xCn +xCn qul qul qul @@ -33544,13 +43671,13 @@ fay ebr ebr ebr -hto vYW vYW -alL +vYW uQa uQa -vYW +uQa +neq vYW vYW ebr @@ -33562,30 +43689,8 @@ ebr vYW vYW vYW -crY -crY -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +vYW +neq pGs pGs pGs @@ -33598,6 +43703,28 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +geo +jQa +jQa +jQa +jQa +jQa +nFK +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -33645,12 +43772,12 @@ pGs pGs pGs huF -lhb -ihF -lMB -lMB -lMB -jPh +huF +cne +tQT +tQT +rMM +wjB ykc akd eBL @@ -33659,7 +43786,7 @@ pfR pfR bRo ykc -eQU +kVp tjS tjS tjS @@ -33667,22 +43794,22 @@ tjS tjS iUx gXh -ykc +uXZ kVp aDF tjS tjS tjS aDF -naw -ykc -qDh -vvh -yks -dxK +uXZ +pYt +vsa +fcK +uSx xCn xCn xCn +tuR xCn qul ljt @@ -33695,16 +43822,16 @@ qul qul xCn xCn -xCn +qYg ljt hhM hhM -hhM -xCn -xCn xCn +qHc +qHc xCn kXQ +kXQ qMY kXQ kXQ @@ -33718,17 +43845,17 @@ uHY qul qul fay -sDM +tYT vBq iCy jnq fay ebr hto -ebr vYW vYW -alL +vYW +uQa alL uQa uQa @@ -33741,32 +43868,11 @@ ebr ebr ebr ebr -crY vYW vYW -crY -crY -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +vYW +vYW +vYW pGs pGs pGs @@ -33780,6 +43886,27 @@ pGs pGs pGs pGs +jQa +jQa +jQa +ron +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +xZa +geo pGs pGs pGs @@ -33814,25 +43941,25 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs huF -lhb -ihF +huF +huF +huF +huF +huF +huF +huF +huF +huF +huF +huF +huF +huF +oTX tQT tQT -fQW -jSP +ssh +pPl ykc dro eBL @@ -33851,23 +43978,23 @@ sGY uQK oLM mIL -uwu -uwu +xOx +haV oke -fgS +baN wGl -uQK ykc -efw -ybj -yks -dxK -xCn -xCn +pkG +nsn +ehH +uSx xCn xCn -dxK xCn +qHc +qHc +uHY +cYV dNt oPQ oPQ @@ -33883,9 +44010,9 @@ oPQ oPQ oPQ oPQ +qHc oPQ -oPQ -oPQ +efw kXQ bRS efw @@ -33897,7 +44024,7 @@ oPQ oPQ xCn xCn -xCn +dcM oPQ deg sDM @@ -33905,7 +44032,7 @@ iCy iCy dlv lxe -uQa +tDo vYW vYW uQa @@ -33924,29 +44051,11 @@ ebr ebr vYW ckM -crY +vYW +neq +vYW vYW vYW -crY -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs pGs pGs pGs @@ -33959,6 +44068,24 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +nFK +jQa +jQa +jQa +jQa +jQa +jYZ +jQa +jQa +jQa +jQa +geo pGs pGs pGs @@ -33996,59 +44123,59 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs huF -lhb -hwz -tQT -tQT -rMM +huF +huF +huF +huF +huF +huF +huF +huF +huF +huF +huF +huF +huF +fOG +lMB +lMB +vMq wjB -pHn +olP eBL eBL eBL eBL mzT -stC -ykc +fcg +uXZ foF oJB -wgT -cNk -oke +wnw +bWq +hHK oke wGl dpZ -aNz +sou myo sGY sGY sGY sGY sGY -uQK oLM -pkG -qMY -mCZ +lSg +lSg +vLt +bnm qul -nHD xCn xCn xCn xCn +qHc xCn oPQ oPQ @@ -34057,17 +44184,17 @@ oPQ oPQ xCn xCn -xCn +qHc xCn oPQ oPQ xCn xCn -oPQ +qHc oPQ oPQ xbc -oPQ +efw efw bRS efw @@ -34078,16 +44205,16 @@ oPQ oPQ xCn oVt -xCn +yfT oPQ oPQ doW sDM -iCy +pnn mpn dlv doW -uQa +tDo uQa vYW uQa @@ -34108,26 +44235,10 @@ vYW vYW vYW vYW -hto -hto -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +vYW +vYW +vYW +vYW pGs pGs pGs @@ -34140,6 +44251,22 @@ pGs pGs pGs pGs +geo +geo +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -34177,35 +44304,35 @@ pGs pGs pGs pGs -huF -huF -huF -huF -huF -huF -huF -huF -huF -huF -huF -huF -huF -huF -lhb -ihF -tQT -tQT -ssh -lMB -oLM -vjv -aPw +knN +cWu +cWu +cWu +cWu +cWu +cWu +cWu +cWu +cWu +cWu +leG +cWu +cWu +cUF +oVp +wqc +jts +arC +wjB +uXZ +cHS +wvK wvK eBL mzT -stC +xIA ykc -foF +iZx oJB sfs sGY @@ -34213,21 +44340,21 @@ sGY sGY sGY pxg -aNz +syl nYL oke -uwu +oRx hsF -uwu +rLW fjK -uQK keN -efw -qMY -mCZ +lSg +lSg +vLt +lSg qul qul -nHD +xCn xCn xCn xCn @@ -34239,6 +44366,7 @@ xCn oVt xCn xCn +qHc xCn xCn xCn @@ -34247,13 +44375,12 @@ xCn xCn xCn xCn -xCn -oPQ oPQ +efw kXQ qMY kXQ -nOw +efw oPQ oPQ oPQ @@ -34268,8 +44395,8 @@ sDM wAx iCy dlv -lxe -uQa +rNm +tDo uQa xqy vYW @@ -34277,37 +44404,25 @@ vYW uQa uQa uQa -uQa -uQa +mdL +mdL uQa uQa alL hto -hto vYW vYW vYW +neq vYW vYW vYW vYW vYW vYW -crY -crY -hto -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +vYW +neq +gEP pGs pGs pGs @@ -34320,6 +44435,18 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -34359,6 +44486,7 @@ pGs pGs pGs pGs +lPj huF huF huF @@ -34369,59 +44497,58 @@ huF huF huF huF +luz huF huF huF -huF -lhb -ihF -lMB -lMB +cne +dQK +wBY lMB -plg -ykc +wjB ykc ykc +uXZ ykc oLM -cNZ +vDI ykc ykc suC oJB cPI -gTr -cNk -mWi -fWi +bMG +fXX +kDO +nPK xuN -aNz +wJu uGf sGY sGY sGY sGY sGY -uQK -ykc -efw -qMY +uXZ +lSg +lSg +vLt nfX tng qul qul -dxK -dxK -xCn -xCn +uHY +uHY xCn xCn xCn xCn xCn xCn +qHc xCn xCn +mJe xCn xCn xCn @@ -34429,13 +44556,13 @@ ljt hhM hhM ljt -ljt -hhM +oPQ hhM kXQ +kXQ qMY kXQ -yks +efw uHY uHY xCn @@ -34443,15 +44570,15 @@ xCn uHY xCn xCn -uHY -uHY -fay -sDM -iCy +qYg +xCn +bCi +jwy +jvF iCy dlv -fay -hto +fHg +oAE vYW vYW vYW @@ -34459,17 +44586,17 @@ vYW vYW uQa uQa -uQa -uQa +mdL +mdL uQa uQa alL vYW +cmr vYW vYW vYW -vYW -vYW +neq vYW vYW vYW @@ -34491,17 +44618,17 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +geo +jQa +jQa +jQa pGs pGs pGs @@ -34539,58 +44666,58 @@ pGs pGs pGs pGs -pGs -pGs huF huF -idI -ylc -ylc -ylc -ylc -ylc -ylc -ylc -ylc -pop -ylc -ylc -tbN -oVp -wqc -jts +lPj +huF +huF +huF +huF +huF +huF +ebJ +ebJ +ebJ +ebJ +uOk +huF +rpu +huF +oTX +lMB +vUZ lMB wjB -mIL +eVn isK nma vxM -tjS +cdO pSK sfM odZ mYW -oJB +gso sfs sGY sGY sGY sGY -crK +uQK ykc -yaK -uwu +iZx +xVC wGl oke fgS wGl -uQK ykc -efw -qMY +fuF +lSg +bpH rdq -efw -efw +lSg +bAj qul qul qul @@ -34598,12 +44725,12 @@ qul qul qul uHY -uHY -uHY xCn xCn xCn xCn +qHc +xCn uHY qul qul @@ -34613,7 +44740,7 @@ qul qul qul qul -qul +mCZ kXQ bRS efw @@ -34623,20 +44750,20 @@ qul qul qul qul -xCn +cYV oVt uHY qul fay -shR +rjZ iCy iCy dlv fay ebr -hto -vYW +luZ vYW +neq vYW vYW uQa @@ -34652,7 +44779,7 @@ uQa vYW vYW vYW -uQa +lMb uQa vYW uQa @@ -34676,14 +44803,14 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +geo pGs pGs pGs @@ -34721,11 +44848,11 @@ pGs pGs pGs pGs -pGs -pGs huF huF -bIi +lPj +huF +huF huF huF huF @@ -34734,11 +44861,11 @@ huF huF huF huF -nUv huF huF -lhb -hwz +rpu +huF +oTX lMB wBY lMB @@ -34753,10 +44880,10 @@ oJB oJB oJB oJB -uvV -cNk +xiV +nRk wGl -oke +hHK oke uQK ykc @@ -34766,12 +44893,12 @@ saC saC saC sDZ -cgB ykc +lSg gKw -qMY +vLt miU -fXR +vBC gHT qul qul @@ -34795,15 +44922,15 @@ qul qul qul qul -qul yks -jBO +qDh +vvh qlj yks qul -eNa -cCO -vGq +kli +bTg +aYg qul qul qul @@ -34818,7 +44945,7 @@ fay ebr ebr hto -hto +vYW rZr vYW uQa @@ -34846,14 +44973,7 @@ vYW vYW vYW ckM -hto -pGs -pGs -pGs -pGs -pGs -pGs -pGs +gEP pGs pGs pGs @@ -34866,6 +44986,13 @@ pGs pGs pGs pGs +jQa +jQa +jQa +nFK +jQa +jQa +geo pGs pGs pGs @@ -34903,26 +45030,26 @@ pGs pGs pGs pGs -pGs -pGs huF huF -bIi +lPj huF huF huF huF -qDa -qDa -qDa -qDa -rjf huF -rpu -lhb -ihF -dQK -vUZ +huF +huF +huF +huF +huF +huF +huF +huF +huF +nPx +arC +lxr lMB wjB sGY @@ -34945,15 +45072,15 @@ ykc ykc ykc ykc +uXZ +uXZ ykc ykc -ykc -ykc -ykc +lSg bFV -qMY -efw -efw +vLt +lSg +lSg gKw qul qul @@ -34977,19 +45104,19 @@ qul qul qul qul -qul yks +vwT qMY kYN yks qul -gKR -tsN -uxF -cCO -cCO -mXZ -auy +gMV +eLZ +rIF +bTg +bTg +rLK +aYg qul fay sDM @@ -35003,8 +45130,8 @@ ebr ebr ebr fRl -oZl -kHJ +hMC +iWE csr uQa uQa @@ -35018,23 +45145,17 @@ vYW vYW vYW vYW +vYW hto -hto -ebr ebr +sQN vYW vYW vYW vYW vYW vYW -hto -pGs -pGs -pGs -pGs -pGs -pGs +neq pGs pGs pGs @@ -35048,6 +45169,12 @@ pGs pGs pGs pGs +jQa +jQa +jQa +qwE +jQa +geo pGs pGs pGs @@ -35067,8 +45194,8 @@ wUU "} (40,1,1) = {" wUU -vGb -cBu +nvv +mPk pGs pGs pGs @@ -35085,28 +45212,28 @@ pGs pGs pGs pGs -pGs -pGs -huF -huF -bIi -huF -huF -huF -huF huF huF -huF -huF -huF -huF -rpu -lhb -ihF -lMB -vUZ +rbp +ebJ +ebJ +ebJ +ebJ +ebJ +ebJ +ebJ +ebJ +ebJ +ebJ +ebJ +ebJ +ebJ +mSS +jGT +wqc +jRu lMB -wjB +qRe sGY enU enU @@ -35128,14 +45255,15 @@ gcK xYM gAl swf -gYY +qiv ykc xRF -xRF +rSu pGJ dRX wVI pGJ +lsU pGJ pGJ pGJ @@ -35144,11 +45272,10 @@ pGJ pGJ pGJ pGJ -sdz qul qul qul -sdz +pGJ sdz sdz sdz @@ -35159,19 +45286,19 @@ sdz sdz sdz qul -qul yks +efw qMY kNN yks qul -cXo -mWN -mWN -mWN -mWN -mWN -gNQ +edD +cym +cym +cym +cym +cym +nFp qul fay rex @@ -35184,9 +45311,9 @@ ebr ebr ebr ebr -uQa +xEl rDz -vfS +uMQ uQa uQa uQa @@ -35195,32 +45322,207 @@ vYW vYW vYW vYW -hto vYW -crY +vYW +vYW vYW vYW vYW ebr ebr -qMH +sQN vYW vYW +uQa +uQa vYW vYW vYW vYW vYW +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +jQa +jQa +qwE +jQa +jQa +jQa +geo +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +wUU +"} +(41,1,1) = {" +wUU +nvv +mPk +mPk +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +huF +huF +lPj +huF +huF +huF +huF +huF +huF +huF +huF +huF +huF +huF +huF +huF +huF +oTX +iah +wBY +lMB +wjB +lDN +tjS +qGE +dss +bMk +xTd +bMk +bMk +bMk +bMk +gwB +bMk +bMk +bMk +bMk +cKZ +msx +xCU +tVo +tVo +nni +dZT +oLM +fYA +fYA +fYA +cYc +mGb +lgP +lzu +mGb +qHu +mGb +lzu +lgP +uOC +arg +pGJ +pGJ +pGJ +pGJ +pGJ +vWG +oRB +tzp +wtB +nXY +pSD +roy +umO +sdz +sdz +sdz +iRR +wmL +iRR +sdz +sdz +kGM +kGM +kGM +sdz +kGM +kGM +kGM +sdz +sdz +kGM +aRr +nBH +miy +sdz +sdz +sdz +sdz +sdz +ebr +tSR +tDo +vYW +vYW +vYW +vYW +jAI +uQa +vYW +hto +ebr +sQN +vYW vYW -crY -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +vYW +vYW +vYW +vYW +vYW +vYW +vYW +uQa +uQa +vYW +vYW +vYW +vYW +vYW +vYW +hto pGs pGs pGs @@ -35229,6 +45531,13 @@ pGs pGs pGs pGs +geo +jQa +jQa +tAT +qwE +jQa +jQa pGs pGs pGs @@ -35247,13 +45556,11 @@ pGs pGs wUU "} -(41,1,1) = {" +(42,1,1) = {" wUU -vGb -cBu -cBu -pGs -pGs +nvv +mPk +mPk pGs pGs pGs @@ -35271,7 +45578,7 @@ pGs pGs huF huF -bIi +lPj huF huF huF @@ -35283,198 +45590,18 @@ huF huF huF huF -lhb -hwz -lMB -lxr -lMB -wjB -lDN -tjS -qGE -dss -bMk -xTd -bMk -bMk -bMk -bMk -gwB -bMk -bMk -bMk -bMk -cKZ -fGE -xCU -tVo -tVo -nni -dZT -ykc -xRF -fYA -fYA -eKt -mGb -lgP -lzu -mGb -qHu -mGb -lzu -lgP -uOC -arg -sdz -sdz -sdz -sdz -sdz -gll -oRB -tzp -wtB -nXY -pSD -roy -umO -sdz -sdz -sdz -sdz -wmL -sdz -sdz -sdz -kGM -kGM -kGM -sdz -kGM -kGM -kGM -sdz -fay -tqh -tqR -dOp -cPR -fay -sdz -sdz -sdz -sdz -ebr -qyH -jpD -hto -vYW -vYW -vYW -vYW -vYW -vYW -hto -ebr -hto -vYW -crY -crY -crY -vYW -vYW -crY -vYW -vYW -vYW -vYW -vYW -vYW -vYW -vYW -vYW -vYW -hto -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -wUU -"} -(42,1,1) = {" -wUU -vGb -cBu -cBu -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs huF huF -neC -qDa -qDa -qDa -qDa -qDa -qDa -qDa -qDa -qDa -qDa -qDa -rNN -jGT -wqc -jRu +huF +cne +lMB +wBY lMB wjB mIL oke mAX -uQK +pBx oke sCJ oke @@ -35487,7 +45614,7 @@ saC saC saC saC -pbk +saC wBN sGY sGY @@ -35508,11 +45635,11 @@ hvO hvO hvO lzu -kwB -kwB -nOA -kwB -uVV +mGb +mGb +mGb +mGb +lgP kwB icM kwB @@ -35527,7 +45654,7 @@ kwB kwB nWg kwB -wfr +sIn fWr wfr vbr @@ -35546,26 +45673,25 @@ fWr nyJ bwz kZg -sdz -cQK -vKa -ebr -ebr +kGM +kSD +mMX +tDo +uQa hto vYW vYW vYW -vYW +uQa hto ebr ebr ebr +sQN vYW -crY -pJF -hWG gHJ vYW +gHJ vYW vYW vYW @@ -35578,21 +45704,22 @@ vYW vYW vYW vYW -hto -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +vYW +xZa +geo pGs pGs pGs pGs pGs +geo +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -35613,12 +45740,10 @@ wUU "} (43,1,1) = {" wUU -vGb -cBu -cBu -cBu -pGs -pGs +nvv +mPk +mPk +mPk pGs pGs pGs @@ -35635,7 +45760,10 @@ pGs pGs huF huF -bIi +lPj +huF +huF +huF huF huF huF @@ -35647,17 +45775,16 @@ huF huF huF huF -lhb xpP -iLR +bJv otL -qMo -tEf +nzS +lVa wSX oke oke uQK -gTr +cnv sCJ oke oJB @@ -35675,13 +45802,13 @@ ePb oJB sfs oke -erS +nnt oMs jVl uww tPz hvO -mxz +bpI hvO hvO hvO @@ -35690,11 +45817,11 @@ hvO uDw erE vUE -kuX -kuX -kuX -kuX -kuX +hvO +hvO +hvO +hvO +hvO kuX kuX wJB @@ -35729,53 +45856,53 @@ kuX kuX uOL kGM -xes -wvk -ebr -ebr -hto +hbD +jtx +lhB vYW +uQa vYW +uQa vYW vYW ebr ebr ebr ebr +sQN +vYW +vYW +vYW +vYW vYW vYW -hWG -crY -sQN vYW vYW vYW vYW vYW -crY -crY vYW vYW vYW uQa vYW vYW -hto -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa +nFK +jQa +jQa +jQa pGs pGs pGs @@ -35795,12 +45922,10 @@ wUU "} (44,1,1) = {" wUU -vGb -cBu -cBu -cBu -pGs -pGs +nvv +mPk +mPk +mPk pGs pGs pGs @@ -35817,7 +45942,14 @@ pGs pGs huF huF -bIi +lPj +huF +huF +huF +huF +huF +huF +huF huF huF huF @@ -35827,19 +45959,14 @@ huF huF huF huF +mHM huF huF -lhb -lhb -lhb -uTr -lhb -lhb uQi uyd -wgM +rwP uQK -gTr +qfb sCJ oke oJB @@ -35847,9 +45974,9 @@ eZk nQo fjM jeO +vTd vrw -vrw -vrw +leT vrw jeO vrw @@ -35857,7 +45984,7 @@ eBG kXP ezd ukz -udX +ukz nOO vFu imd @@ -35872,11 +45999,11 @@ oZw sCk xuB bEj -lVP -ehD -lVP -ehD -lVP +oZw +kzJ +oZw +kzJ +oZw lVP lVP lVP @@ -35911,11 +46038,11 @@ fHs kuX uOL kGM -xes -jAw -ebr -ebr -ebr +hbD +dTS +qyH +vYW +uQa vYW vYW vYW @@ -35923,42 +46050,42 @@ vYW ebr ebr ebr -crY +neq vYW vYW pJF -hWG -gHJ +neq +trQ +vYW +vYW +vYW vYW vYW vYW vYW vYW -crY -qMH -hto vYW uQa uQa vYW vYW -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +jQa +jQa +jQa +jQa +jQa +vct +rgz +jQa +jQa +jQa +jQa +yhU +jQa +jQa +jQa +jQa pGs pGs pGs @@ -35977,13 +46104,11 @@ wUU "} (45,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -pGs -pGs +nvv +mPk +mPk +mPk +mPk pGs pGs pGs @@ -35999,7 +46124,8 @@ pGs pGs huF huF -bIi +lPj +huF huF huF huF @@ -36014,7 +46140,8 @@ huF huF huF huF -vmy +huF +kGB huF huF ykc @@ -36030,8 +46157,8 @@ wDG afR oLM uDQ -uDQ -vui +iMa +gsw qZH hUU rrA @@ -36045,7 +46172,7 @@ oMs uww hvO tPz -xQh +nNZ hvO hvO hvO @@ -36054,11 +46181,11 @@ hvO hvO bih hvO -kuX -pCp -kuX -ddY -kuX +hvO +ost +hvO +tPz +hvO kuX kuX kuX @@ -36092,30 +46219,30 @@ kuX sDj kuX uOL -sdz -wug -eTX -ebr +kGM +wkp +tqa ebr vYW vYW vYW vYW +uQa vYW ebr ebr ebr -crY +hWG vYW -crY -crY -nOI vYW +neq +nOI vYW vYW vYW +jAI vYW -crY +neq ebr ebr hto @@ -36124,23 +46251,23 @@ uQa uQa vYW vYW -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +rgz +rgz +rgz +jQa +jQa +jQa +abL +jQa +jQa +jQa +jQa +fjg +fjg +jQa +jQa +jQa pGs pGs pGs @@ -36159,14 +46286,12 @@ wUU "} (46,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk pGs pGs pGs @@ -36181,7 +46306,9 @@ pGs pGs huF huF -bIi +lPj +huF +huF huF huF huF @@ -36196,7 +46323,7 @@ huF huF huF huF -bIi +lPj huF huF ykc @@ -36217,30 +46344,30 @@ wty vzN mZC kXn -wty -wty -cWU -sPm +aFu +jqJ +xqY +muE oLM -srY +fYA fYA fYA dQe lWo -oMs +vAF dQe yeH yeH -yeH +bUK lzu hvO bih lzu -rgb -rgb -auE -lOJ -aRr +yeH +yeH +dxn +lWo +oMs auE rgb rgb @@ -36258,7 +46385,7 @@ rgb wfT vDm vDm -mVF +fPU cnW foU ujp @@ -36281,22 +46408,22 @@ ebr ebr vYW vYW +uQa +uQa vYW vYW +hto +hto vYW vYW -qMH -qMH -vYW vYW -crY vYW fGP vYW vYW +uQa vYW -vYW -qMH +gEP ebr ebr ebr @@ -36306,24 +46433,24 @@ uQa uQa vYW vYW +jQa +rgz +rgz +jQa +jQa +jQa +jQa +jQa +jQa pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -36341,14 +46468,12 @@ wUU "} (47,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk pGs pGs pGs @@ -36363,22 +46488,24 @@ pGs pGs huF huF -xxr +wRR +huF +huF huF huF huF huF huF -qhd -pGs pGs pGs pGs pGs pGs pGs +bZv +iUZ huF -bIi +wgU huF huF ykc @@ -36389,40 +46516,40 @@ saC saC lDN saC -iAx mAm +iAx lMP ykc ubT xwk -wCH +lDN lzP ykc rxe saC -cek -atb -muE +uVe ykc +uXZ +ykc +vYr vnm -bLB -bLB +rIU vnm -jLr -sqb +brX +vUT uJO bLB bLB vnm -pcJ +xWY hvO bih rHv -mKb +cZR nxW nxW -qFc -qnn +rsM +rtr nxW nxW mKb @@ -36435,17 +46562,17 @@ nxW qcN qcN qcN -qcN -qcN -ojJ -jcT -pQp -pQp -pQp +lGp +hYp +uqx +hYp +bIt +bIt pQp +ykw dtj -pQp -pQp +bIt +bIt bIt ykw ykw @@ -36453,59 +46580,59 @@ ykw bIt bIt kGM -ctQ -hWm +sDj +wir kGM sdz ebr ebr -qMH -crY +gEP vYW vYW vYW vYW vYW vYW -crY -qMH +neq vYW +hto vYW -crY -pJF -hWG -pJF vYW vYW -qMH -ebr +gHJ +vYW +gHJ +vYW +vYW +hto ebr ebr ebr +ggX vYW vYW vYW -uQa +mdL +iOv vYW -vYW -hto -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs +jQa +jQa +jQa +jQa +tdp +jQa +jQa pGs pGs pGs @@ -36523,18 +46650,16 @@ wUU "} (48,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu +nvv +mPk +mPk +mPk +mPk +mPk +mPk pGs pGs pGs -aFr -pGs pGs pGs pGs @@ -36545,7 +46670,9 @@ pGs pGs huF huF -xxr +wRR +huF +huF huF huF huF @@ -36553,14 +46680,14 @@ huF huF pGs pGs -qjU +obr lYr +kcn lYr -pGs -aFr -pGs -huF -bIi +qjU +gvo +rlw +eWZ huF huF ykc @@ -36572,28 +46699,28 @@ sGY lDN ykc ykc +uXZ +uXZ ykc ykc +uXZ +oqh +uXZ ykc -ykc -ykc -ykc -ykc -ykc -ykc +uXZ jpm +uXZ ykc -ykc -ykc -ykc +hyr +npi +hyr vnm -vPY -efd +bPG vQz -brX -oXf +hMG +jZE vQz -uCe +iDM vPY bLB xWY @@ -36616,18 +46743,18 @@ tJT xLN qcN rsh -wWn -uOz +lJo qcN +lUe aQc -nyH -pQp +bft +ykw ani irw xpw hJO syM -pQp +ykw nPG egJ teu @@ -36641,53 +46768,53 @@ iNh nTG ebr ebr -qMH -crY -crY +neq vYW vYW vYW vYW +neq +neq +vYW +vYW vYW vYW vYW vYW -crY vYW -hWG cYC -hWG vYW vYW -qMH -ebr -ebr +vYW +hto ebr ebr +hto vYW vYW vYW +vYW +mdL +mdL uQa -uQa -alL -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +jQa +jQa +jQa pGs +geo +geo pGs pGs pGs pGs pGs +jQa +jQa +jQa +nFK +fjg +jQa pGs pGs pGs @@ -36705,16 +46832,14 @@ wUU "} (49,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk pGs pGs pGs @@ -36727,7 +46852,9 @@ pGs pGs huF huF -xxr +wRR +huF +huF huF huF huF @@ -36735,14 +46862,14 @@ huF huF pGs pGs +iUZ +vJg lYr lYr +fwo lYr -pGs -pGs -pGs -huF -bIi +sQR +eWZ huF huF huF @@ -36752,30 +46879,30 @@ lDN tjS tjS lDN -ykc +uXZ rtP aqk -aXm -hyr -hyr -hyr -hyr -hyr -hyr -hyr -hyr +okf +wwq +qtr +wxf hyr +cTV +vyI +jEZ hyr -aXm +cTV +aAY +vyI +wPE hyr vnm -erC -kHE -oXf +oiB +rVi brX oXf -oXf -hfR +jZE +lkz bio bLB xWY @@ -36785,32 +46912,32 @@ lzu nxW fZI maN -jbj -maN +rsM +cbI maN maN maN maN maN aTh -nSP +qcN vhb kFT qcN -xzC -wnK -llE +cDr +aLl qcN +qqA aQc hwa -pQp +bIt ecb haT cQr qiP mwH -pQp -pOf +bIt +uCc vgA pOC qWC @@ -36824,42 +46951,37 @@ nTG jpD ebr ebr -qMH -crY +neq vYW vYW vYW vYW vYW vYW +neq vYW vYW -crY vYW -pJF -hWG +vYW +gHJ +vYW pJF vYW vYW vYW vYW -alL -alL -hto +uQa +uQa +vYW vYW vYW uQa uQa uQa -alL -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +uQa +jQa +jQa +jQa pGs pGs pGs @@ -36870,6 +46992,11 @@ pGs pGs pGs pGs +jQa +fjg +jQa +fjg +jQa pGs pGs pGs @@ -36887,44 +47014,44 @@ wUU "} (50,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk pGs pGs pGs -aFr pGs pGs pGs pGs huF huF -xxr +wRR +huF huF huF huF huF huF -qpg +huF +oWg cak -lYr +fwo lYr lYr qyT -pGs -pGs -huF -bIi +sJm +lYr +tia +ten huF huF huF @@ -36934,25 +47061,25 @@ stV sAR enU uQK -keN +oBs hyr hyr hyr +aXt hyr -leU -leU -ukX -ukX -cZZ hyr -cTV -jEZ hyr +omj +weG hyr hyr -vnm -apl -mDl +hyr +hyr +aXt +hyr +hyr +aGx +hfR gqE mUy uUl @@ -36964,10 +47091,10 @@ ePB hvO mrd ciH -jMM +kyh lAk nMe -oaG +ckF nMe nMe aaA @@ -36975,26 +47102,26 @@ wsZ wsZ csb nMe -puK +ejZ wVa wpr -qcN +nxW qir -cFV -rbq -qcN +haC +nxW +qqA aQc qqA -pQp +bIt tsX wkC fAO haT gBp -pQp +bIt gze qWC -qWC +eOv rJq dbg ykw @@ -37004,24 +47131,24 @@ tEJ cNu kyL jpD -ebr -ebr -ebr -crY -crY -crY -vYW +oAE +oAE +oAE vYW vYW vYW -crY -vYW vYW vYW +neq +neq +neq +neq +neq vYW vYW vYW vYW +neq vYW vYW vYW @@ -37031,17 +47158,12 @@ vYW vYW vYW uQa -uQa +lMb vYW vYW -hto -pGs -pGs -pGs -pGs -pGs -pGs +gxQ pGs +geo pGs pGs pGs @@ -37052,6 +47174,11 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -37069,21 +47196,19 @@ wUU "} (51,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +sNx pGs pGs huF @@ -37091,21 +47216,23 @@ huF huF huF huF -xxr +wRR huF pGs pGs huF huF -aWz +huF +huF +nJn oMa lYr +xgY +fwo lYr lYr -lYr -xgY -pGs -huF +gBW +phw huF huF huF @@ -37116,29 +47243,29 @@ wcl enU enU uQK -oLM +uXZ hyr ohM -cKa -cKa -cKa -cKa -cKa -cKa -cKa -cKa -cKa -cKa -cKa hyr +weG +leU +pIe hyr -vnm -cSq +hyr +weG +hyr +omj +hyr +pIe +weG +fzx +hyr +bLB wcE oXf dbu xxI -xxI +woJ iXX cSq bLB @@ -37146,7 +47273,7 @@ xWY hvO anu lnG -bXH +cAX vsP cAX kDF @@ -37156,28 +47283,28 @@ maN maN maN maN -aRH +maN qcN seY gjw -qcN +nxW ygT -nRT -ffQ -qcN +wRu +nxW +qqA aQc qqA -pQp +ykw pqH sDo cXQ haT -iUO -pQp +wLR +ykw nBj -qWC -aqf -fUn +qDR +iRw +pjH nqN ykw pRP @@ -37186,30 +47313,30 @@ tEJ cNu upO gUP -cQK -ktE -ebr -crY -crY -crY -vYW +clG +mMX +oAE +uQa +uQa vYW vYW +vdQ vYW -crY vYW vYW vYW -hto vYW vYW +hto vYW +neq +neq vYW vYW vYW uQa uQa -vYW +cmr vYW vYW uQa @@ -37229,12 +47356,12 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -37251,44 +47378,44 @@ wUU "} (52,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +sNx +sNx huF huF huF huF huF -iqq +vEU huF pGs pGs huF huF -lYr +huF +huF +kFV vmw eaC -lYr +fwo oCR hAg -pGs -pGs -pGs -pGs +lYr +bVS +lYr +fwo huF huF huF @@ -37298,24 +47425,24 @@ hic enU enU sDf -ykc -hyr -hyr -cKa -iQS -dNJ -cRZ -iQS -iQS -hkc -jzQ -usp -ofs -cKa -hyr +oLM +omj +jMq +lEV +ygn +alD +aSU +ghI +lEV +ygn +alD +aSU +ghI +lEV +ygn +alD hyr -vnm -cSq +bLB mDl gqE mUy @@ -37340,48 +47467,48 @@ sdS gBi xkj nxW -syK +dmP wwk qcN wNV -nRT -sEG +wRu qcN +vMU aQc qqA -pQp +ykw udg haT hwN haT -wZs +dGh pQp lXc vgA bRg fXa pYv -izp +epY rMN sJZ tEJ cNu qNP gUP -xes -oSb -ebr -qMH -crY +bPe +dTS +oAE +nHC +vYW +vYW vYW vYW vYW vYW -crY vYW vYW ebr -hto +sQN vYW vYW vYW @@ -37389,8 +47516,8 @@ vYW vYW vYW vYW -alL -alL +uQa +uQa vYW vYW vYW @@ -37411,13 +47538,13 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +jQa +jQa +jQa +jQa +jQa +gxQ pGs pGs pGs @@ -37433,44 +47560,44 @@ wUU "} (53,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -czg +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +itL +kkF huF huF -huF -qhd pGs -xRR +bJI +ahb wdy -xRR +vQK pGs pGs huF huF -lYr +huF +huF +fwo sJm lYr lYr -lYr +wKW lYr rGA hAg -pGs -qhd +lYr +xgY huF huF huF @@ -37480,31 +47607,31 @@ mIL enU nOj uQK -ykc -hyr -hyr -cKa -iQS -iQS -iQS -hza -iQS -iQS -iQS -iQS -iQS -cKa -hyr -hyr -vnm -cSq -hfR +uXZ +lhn +pNa +liM +ygn +uWW +weG +fys +liM +ygn +uWW +bQa +fys +liM +ygn +uWW +vyy +bLB +joN jZE mfa -oXf -poh +dhQ +krM uEE -cSq +xWU bLB xWY tam @@ -37520,24 +47647,24 @@ eLE paB bkG fiB -xfb +gfr nxW tGr cBW dOk mau -wLN -rxq -qcN +dnW +kTG +qqA aQc qqA -pQp +ykw tnA -haT +woj uyK lkI vZS -hQn +iiX vZS jqu qVL @@ -37548,29 +47675,29 @@ uEI jPC jjg cNu -nTG -jpD -xes -sYS -ebr +rMN +gUP +hbD +dTS +tDo ebr -crY +vYW ckM -crY -crY -crY vYW vYW +vYW +vYW +neq hto ebr ebr +sQN vYW +neq vYW -crY +neq vYW vYW -crY -crY ebr ebr hto @@ -37595,12 +47722,12 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +yhU +fjg +jQa +jQa +jQa pGs pGs pGs @@ -37615,44 +47742,44 @@ wUU "} (54,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -czg -huF -srr +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +itL +kkF +tOx huF pGs dfs -lYr +fwo eVW lYr -vpB +arF pGs huF -loQ -wMw -wMw -wMw -wMw +huF +huF +xKS +qFC +qFC +qFC +kIJ cRx lYr -lYr -lYr +pdn +fwo rCf -pGs +lYr huF huF huF @@ -37663,27 +47790,27 @@ saC saC lDN ykc -uOb -hyr -cIV -xMI -fZo -iQS -xPR -iQS -iQS -iQS -dPV -iQS -cIV -hyr +ldr +jMq +lGT +ygn +uEF +aSU +ghI +lGT +ygn +uEF +aSU +ghI +lGT +ygn +uEF hyr vnm -cSq hfR -oXf -jZE -oXf +ePz +pRb +ceJ oXf uEE cSq @@ -37699,7 +47826,7 @@ lKV sdS gjy jgQ -jgQ +gQa wnK jgQ wnK @@ -37708,36 +47835,39 @@ nRW fYQ nSP fJR -nRT -trv +wRu qcN -cEW +emC +aQc qqA -pQp +bIt uMx haT teu haT coc -pQp -tcM +bIt +nRP kvG +guz thn -thn -gtj -sIg +vCE +jCA iMM oIq tvv cNu -nTG -jpD -wug -axZ +rMN +gUP +wkp +tqa ebr ebr -crY -crY +oAE +oAE +oAE +neq +neq vYW vYW vYW @@ -37745,30 +47875,21 @@ vYW vYW vYW vYW +neq vYW vYW vYW -vYW -vYW -crY -crY -crY +ggX ebr ebr ebr -crY +ggX vYW vYW uQa vYW vYW -vYW -pGs -pGs -pGs -pGs -pGs -pGs +uQa pGs pGs pGs @@ -37783,6 +47904,12 @@ pGs pGs pGs pGs +jQa +jQa +jQa +tdp +jQa +jQa pGs pGs pGs @@ -37797,75 +47924,75 @@ wUU "} (55,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -czg -huF -srr +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +itL +kkF +tOx huF pGs ipZ lYr iSz -lYr +fwo rIG pGs -qFS -uND -wMw +huF +huF +dEJ wMw wMw +aHy wMw -hAg +mrC +lYr rjo gPG lYr -sgK +gLV avI -xfo huF huF huF -lAu -bkU -bkU -bkU -bkU -amu +huF +wFP +lFl +lFl +lFl +lFl +uQi hyr hyr -cIV -iQS -iQS -iQS -fZo -iQS -iQS -hza -iQS -iQS -cIV +hyr +weG +hyr +hyr +pIe +hyr +weG omj +hyr +hyr +hyr +weG omj -ghJ -cSq +hyr +aGx hfR fyP cwQ -mXc +kzE fyP uEE eul @@ -37881,27 +48008,27 @@ wFX gBi mKD iWf -qUQ -vUi -qUQ +rzU +hLE +fJw aEi nxW spd lBf -qcN +nxW nkd -nRT -trv -qcN -qQM +wRu +nxW qqA -pQp +aQc +qqA +ykw ibP haT teu haT dZZ -pQp +ykw cIB waB nTS @@ -37918,27 +48045,27 @@ gTC gTC kyG kyG +fuS kyG -kyG -crY -crY +oAE vYW -crY -crY -crY vYW vYW +neq vYW vYW vYW -qMH -crY -crY +vYW +vYW +vYW +hto +vYW +vYW ebr ebr ebr ebr -crY +vYW vYW vYW vYW @@ -37958,13 +48085,13 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -37979,71 +48106,71 @@ wUU "} (56,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -czg -huF -srr +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +itL +kkF +tOx huF huF -aFo +tlE lYr iSz lYr lYr -uXo -xRR -bHT +hCw pbp +loQ +pDF wMw wMw +qNE wMw +mrC rCf nDk -kFV lYr +nJd rIG -sgK -xfo -xfo -xfo -xfo -amu -bZU -bZU -bZU -axX -amu +tVf +huF +huF +huF +huF +uQi +uaY +uaY +uaY +uaY +uQi aqw hyr -cKa -giU -hza -iQS -xPR -iQS -dPV -iQS -iQS -iQS -cKa +pIe +weG +xAs +omj +pJf +djC +weG +fzx hyr hyr +pIe +weG +klY +xEc vnm -cSq uCe lEY ksf @@ -38058,34 +48185,34 @@ bih rHv nxW qDv -maN +kpS wFX sdS -uNy +ocQ wnK -qUQ -woI +eTi +gVQ qUQ hMh nxW hyd -naW -qcN +gjw +nxW exH -nRT -rFa -qcN +wRu +nxW +hQo aQc qqA -pQp -acq +bIt +aVF haT teu haT -epr -pQp +jIo +bIt cgb -waB +rRm wph qWC pcK @@ -38094,26 +48221,26 @@ pRX uXw sIU cNu -kyG +gTC tIT fUZ fhM sTA ukw rTT -kyG -crY -crY -crY -crY -crY -crY -crY -crY -crY -crY -crY -qMH +fuS +oAE +vYW +vYW +vYW +vYW +vYW +neq +neq +vYW +vYW +vYW +hto ebr ebr ebr @@ -38121,20 +48248,13 @@ ebr ebr ebr ebr -crY vYW vYW vYW vYW -crY -crY -pGs -pGs -pGs -pGs -pGs -pGs -pGs +vYW +vYW +vYW pGs pGs pGs @@ -38147,6 +48267,13 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -38161,78 +48288,78 @@ wUU "} (57,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -nsa -ccf -huF -kiL -izU -lIZ +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +lUG +rqG +kkF +sUj +vJk +lXT oDX wcq mLB -itT -lYr -lYr -lYr -eyh +aTg +ixq +dNh pbp wMw wMw wMw wMw -vUQ -wMw -wMw wMw +dob wMw -xfo -lSd +fhu +lIE +qFC +pMG +pMG +qFC +kME +paq gSY xBS -rqe +qqJ waP waP waP waP -amu +aMC hyr +cNb +fkF +weG +qkF +leU +wEn +xKo +weG +pJp +iJa +leU hyr -cKa -vqV -kAl -iQS -ymf -hcT -iIr -hEE -wBx -xSM -cKa +weG hyr -iEx -epQ -epQ -epQ +omj epQ +sKC epQ epQ epQ +sKC uvw -uiv +epQ epQ ntw hvO @@ -38242,58 +48369,58 @@ qcN uUW maN wFX -xkj +dLN oPr rLC aoo -woI -qUQ +fyH +iNU xFZ shb eSg fMq iop -nss -kxg -sux -iLa +lDS +yfh +vgu +kIK rLU qqA -pQp -xXg -haT -bZD -xrR -opY -pQp -uCc -waB -qWC -bug -gdm +ykw +xXe +oVn +jYX +iFK +wsa +bIt +eeg +pQF +jcz +jcz +mkn ykw pRX uXw sIU cNu -kyG +gTC tIT rqx aae qHF wOL -hvj -kyG -ebr -crY -crY -crY -crY -crY -crY -crY -crY -crY +wTJ +fuS +oAE +vYW +vYW +vYW +vYW +vYW +vYW +vYW +vYW +vYW ebr ebr ebr @@ -38303,21 +48430,13 @@ ebr ebr ebr ebr -qMH +hto hto vYW -crY -crY -crY -crY -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +vYW +vYW +vYW +vYW pGs pGs pGs @@ -38330,6 +48449,14 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +gxQ pGs pGs pGs @@ -38343,34 +48470,30 @@ wUU "} (58,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -czg +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +itL xfo xfo ydy xfo xfo -aFo -lYr -lYr -lYr +tlE +fwo itT lYr -khI -cPT +hkQ +bVQ pbp wMw wMw @@ -38381,49 +48504,53 @@ wMw wMw wMw wMw -nQA wMw +bnf +vMe +wMw +vLV wMw wMw -lSD wMw +xJb wMw wMw wMw -lSD -xsF -xsF -amu -amu -amu -xsF -amu -amu -amu -amu -amu -amu -amu +mcr +ccp +qpK +qAp +aMC +ptC +qAp +qAp +bgE +bgE +erK +qAp +bgE hyr +qtr +weG +gnm hyr -epQ -dUh +sKC dUh dUh vnN dUh -gZN +oUp cTg iSO -epQ +sKC xWY hvO bih euM qcN qcN -naW -nIw +maN +sTW qcN nxW nxW @@ -38436,71 +48563,63 @@ cTr tjF qcN jNS -vsJ -dwu +xCJ qcN -pMC +lUe +aQc qqA -pQp -xXe -oVn -jYX -iFK -wsa -pQp -eeg -lJu -jcz -jcz -mkn +bIt +ykw +cHl +bIt +ykw +ykw +bIt +ykw +bIt +cHl +ykw +bIt bIt sjD uXw sIU cNu kyG -gpd +qym rJI bRi mBG pRl -dqy +tuV kyG ebr -ebr -crY -crY -crY -crY -crY -crY -qMH +vYW +vYW +vYW +vYW +vYW +vYW +jAI +hto ebr ebr ksX ksX -mPT -mPT -mPT +wff +dEo +rqa ksX ebr ebr ebr ebr hto -crY -crY -crY -crY -qMH -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +vYW +vYW +vYW +vYW +hto pGs pGs pGs @@ -38512,6 +48631,14 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +fjg +jQa pGs pGs pGs @@ -38525,33 +48652,29 @@ wUU "} (59,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -czg +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +itL aQq eCj -gWA +pxa uKr ahg -aFo -lYr +wIg asx asx nKd -lYr -hOe +nDL new wMw wMw @@ -38563,40 +48686,44 @@ wMw wMw wMw wMw -kME wMw wMw wMw -kME wMw wMw wMw wMw -kME wMw wMw wMw wMw +wMw +wMw +kME +wMw +mpH hcz wMw -aCM +ojm huy -amu -twZ -qgP -kjt -amu +qAp +qVO +cOj +cfs +qAp hyr -omj -bRp -eYG +hyr +weG +hyr +hyr +sAY eYG ghr eYG eYG eYG cTg -gUb +vfH epQ xWY hvO @@ -38617,25 +48744,25 @@ tjF woI qUQ qcN +nxW +nxW qcN -qcN -qcN -qcN +qqA aQc qqA -pQp -pQp -nGs -pQp -pQp -pQp -pQp -bIt -bIt -nGs -bIt -bIt -bIt +qqA +qqA +qqA +qqA +qqA +qqA +mPl +qqA +qqA +qqA +qqA +gSC +jcT bMV uXw sIU @@ -38650,39 +48777,31 @@ nVn kyG ebr ebr -qMH -qMH +rpw +rpw +oAE +rpw +oAE ebr ebr -crY ebr -ebr -ebr -ksX ksX -cto -gLo +rmr cto cto -ksX +uKZ +xxk +ghs ksX ebr ebr ebr ebr -crY -crY -crY -crY -qMH -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +vYW +vYW +vYW +vYW +hto pGs pGs pGs @@ -38694,6 +48813,14 @@ pGs pGs pGs pGs +jQa +jQa +jQa +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -38707,33 +48834,29 @@ wUU "} (60,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -czg +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +itL aQq boI -qaE +clA miR -ahg -aFo -lYr +nqQ +tlE asx asx jjZ -lYr -hOe +nDL wMw wMw wMw @@ -38758,28 +48881,32 @@ wMw wMw wMw wMw +sIQ wMw wMw +mpH wMw wMw wMw -uFI -asx -asx -pcg -amu -hyr +qzi +jTL +jTL +uGs +bgE +omj +cTV +weG +jEZ hyr -epQ -hSx +sKC hPF -pkR +uOo pqO pqO xnV wEL -noO -epQ +ewS +sKC xWY hvO bih @@ -38798,7 +48925,7 @@ yaf wVD myj qUQ -qcN +nxW cbe stv hwa @@ -38816,26 +48943,26 @@ kmu mtU qqA qqA -gSC -jcT +qqA +hoP pRX lbK sOj cug -gbl +sGb xlv xZD iJD gfp -iBH +ffY gvR -aFt -ksX -ksX +kyG ksX ksX +tdN +tdN +tdN ksX -jpD ebr ebr ebr @@ -38843,20 +48970,20 @@ ebr ksX cto cto -ksX -ksX +gLo cto +cLX cto ksX ebr ebr ebr ebr -crY -crY -crY -crY -crY +vYW +vYW +vYW +vYW +vYW hto pGs pGs @@ -38870,12 +48997,12 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +jQa +fjg +jQa +jQa +jQa pGs pGs pGs @@ -38889,87 +49016,87 @@ wUU "} (61,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -czg +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +itL aQq vLw qaE -dEl +qdL ahg -aFo -kSJ +tlE asx asx cQu -lYr -hOe +lqF wMw wMw wMw -iyd -qFC -qFC -qFC -qFC -qFC -leP -qFC -qFC -qFC -vfG -qFC -qFC -qFC -qFC -qFC -qFC -qFC -qFC -qFC -qFC -qFC -qFC -kIJ wMw wMw -ryE -asx -asx -asx -aZt +wMw +wMw +xcE +wMw +wMw +wMw +wMw +wMw +xcE +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +nFB +wMw +sIQ +wMw +wMw +wMw +wMw +oJm +hyr +hyr +hyr +uAt +lhn +weG +weG hyr hyr epQ -dcx -kAQ +wVA mRL -kAQ -kAQ +iQl +fyZ dgq cTg tQn epQ -xWY +gnx hvO bih rHv nxW sbX eIV -eIV +sDQ eIV pVh vsJ @@ -38980,7 +49107,7 @@ lWh vSh aMp igU -qcN +nxW vMU qqA qqA @@ -38993,13 +49120,13 @@ kIK jxi pti kIK +fqs kIK kIK kIK kIK kIK -kIK -mlT +kqe uEI obm tEJ @@ -39009,32 +49136,32 @@ nBl wKi bRi mBG -iBH +ffY xZN -aFt -cto +kyG +ghs cto cto tVX -mPT +swv ksX ksX ksX ksX ksX ksX -cto +kcE cto ksX -ksX +cDc cto cto ksX cty cty cty -hQq -hQq +mCF +mCF mCF mCF mCF @@ -39052,12 +49179,12 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +fjg +yhU +jQa +jQa +jQa pGs pGs pGs @@ -39071,97 +49198,97 @@ wUU "} (62,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -rGe -rGe -rGe -bOZ -nQA +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +vlm +fjv +wBp +gpJ +xfo bGC qzq ahg nQA -aFo -lYr +tlE eRM tCG aEf -lYr -hOe +nDL wMw wMw wMw -pbp -wCc -ygZ -efU -bNN -cYr -ygZ -efU -onr -ahK -ssv -efU -cgA -ahK -ygZ -efU -onr -ahK -uFE -efU -onr -ahK -wCc -mrC +aHy wMw wMw -amu -asx -asx -pTZ -amu +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +qAp hyr +eaQ hyr -epQ -kJu +qAp +hyr +okf +weG +qtr +hyr +sKC xMs -kJu +qvv rXf lPq oUp cTg nVy -uiv +sKC xWY hvO bih rHv +lGp qcN -qcN -qcN +nxW qcN nSP pvk qcN -qcN +nxW rcq +nxW qcN qcN -qcN -qcN -qcN +nxW +nxW qcN vMU qqA @@ -39172,17 +49299,17 @@ oeF aQc qqA xgG +qvo xgG xgG xgG +qvo xgG xgG +qvo xgG xgG -xgG -xgG -xgG -vUM +rGl sJZ tEJ cNu @@ -39191,9 +49318,9 @@ uzb wKi bRi mBG -iBH +ffY fYH -aFt +gTC fhh cto qMr @@ -39205,11 +49332,11 @@ cto lOc cto lOc -kcE -cto +kkw cto cto cto +pyz cto ksX cty @@ -39225,14 +49352,8 @@ mCF mCF mCF mCF +mCF hoC -hoC -pGs -pGs -pGs -pGs -pGs -pGs pGs pGs pGs @@ -39240,6 +49361,12 @@ pGs pGs pGs pGs +jQa +fjg +jQa +jQa +jQa +jQa pGs pGs pGs @@ -39253,71 +49380,71 @@ wUU "} (63,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -cBu -rGe -rGe -ijy -ijy -mzr -aHy -wMw -wMw +nvv +mPk +mPk +mPk +mPk +imk +mPk +mPk +wBp +fjv +qwQ +uYJ +bah +uZK +kME wMw +kME tzP -aFo -lYr +psd asx asx nKd -lYr -hOe +nDL wMw wMw wMw -pbp -sHV -bZU -bZU -bZU -bZU -bZU -bZU -bZU -bZU -bZU -bZU -rtm -bZU -bZU -bZU -bZU -bZU -bZU -bZU -bZU -bZU -xsH -mrC wMw -mcr -amu -nAQ -nAQ -nAQ -amu +wMw +wMw +wMw +wMw +wMw +xcE +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +xcE +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +sTT +bgE +jTL +jTL +lpJ +bgE +ldr hyr +weG hyr -epQ -iTd +hyr +sKC iTd iTd dCz @@ -39340,10 +49467,10 @@ mrP sWp kDH bzq -sdS -rwS +aZq qcN qBn +qqA eBf kIK kIK @@ -39356,26 +49483,26 @@ qqA xgG azK xPj -okm -xgG +ctw +qvo gvF pLV bLI -iMi +lrp pBK -xgG +qvo vUM sJZ tEJ cNu -kyG +gTC qPG mCx aLc mBG iSi tTN -aFt +gTC kQb mUP mUP @@ -39384,12 +49511,12 @@ mUP mUP gja mUP -gja +ior mUP gja mUP mUP -bpM +mUP mUP mUP qWw @@ -39402,7 +49529,7 @@ mCF mCF mCF mCF -mCF +vOo mCF mCF xGV @@ -39416,12 +49543,12 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +jQa +jQa +jQa +jQa +gxQ pGs pGs pGs @@ -39435,73 +49562,73 @@ wUU "} (64,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -rGe -rGe -ijy -ijy -ijy -mzr +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +wBp +qwQ +uYJ +lTR +kap wMw wMw wMw mrC -klB +hzK eat -lYr asx asx jjZ -lYr -hOe +lqF +wMw +iyd +qFC +qFC +qFC +qFC +qFC +qFC +leP +qFC +qFC +qFC +vfG +qFC +qFC +qFC +qFC +qFC +qFC +qFC +qFC +qFC +qFC +qFC +qFC +kIJ wMw wMw wMw -pbp -irk -bZU -bZU -rtm -bZU -bZU -bZU -bZU -bZU -bZU -bZU -bZU -bZU -bZU -bZU -bZU -bZU -qOh -rtm -bZU -bQx -bwP -mrC wMw wMw -amu -arG -iue -wLf -amu +qAp +nwi +igQ +kCb +qAp +pJp +omj +weG hyr hyr epQ cpA cpA -cpA tpB eYG aQG @@ -39512,7 +49639,7 @@ ePB hvO bih rHv -qcN +nxW bFj dQT eJI @@ -39520,18 +49647,18 @@ hZo nJc wQd sWp -sdS -vSP -sdS +gEz +maN bzq -qcN -vMU +nxW +kmu +qqA aQc qqA qqA qqA iat -hDV +qqA clX vtP fqs @@ -39557,25 +49684,25 @@ wdx ses nFg nFg -mzt +aBO vAI cto fuj cto ghs -ksX -ksX -ksX -ksX -ksX -ksX +cto +nuv +cto +nuv +cto +nuv aCH ghs -ksX -ksX -cDc +swk +cto +cto etv -ksX +tdN hoC aOg aOg @@ -39583,10 +49710,10 @@ aOg mCF hoC mCF -mCF -hoC hoC mCF +mCF +mCF aOg aOg hiE @@ -39598,10 +49725,10 @@ pGs pGs pGs pGs -pGs -pGs -pGs -pGs +jQa +jQa +jQa +jQa pGs pGs pGs @@ -39617,71 +49744,71 @@ wUU "} (65,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -rGe -rGe -ijy -ijy -liD -ijy -mzr +nvv +mPk +mPk +mPk +mPk +mPk +rYC +fjv +uYJ +qwQ +pAX +lTR +kap wMw wMw wMw mrC -vuj -wTq -ies +qhQ +jhM asx asx cQu -lYr -hOe -wMw -wMw +nDL wMw pbp -cYZ -bZU -bZU -bZU -bZU -bZU -bZU -bZU -bZU -bZU -bZU -qOh -bZU -bZU -bZU -bZU -bZU -bZU -bZU -bZU -bZU -miF +wCc +ygZ +ygZ +efU +bNN +cYr +ygZ +efU +onr +ahK +ssv +efU +cgA +ahK +ygZ +efU +onr +ahK +uFE +efU +onr +ahK +wCc mrC wMw wMw -lSD -amu -amu -gXK -amu +wMw +wMw +wMw +weJ +qAp +coz +qAp +bgE hyr hyr -epQ -kJu +weG +hyr +leU +sKC pMe cOK rmZ @@ -39689,12 +49816,12 @@ eYG fAq ghr biz -epQ +sKC xWY hvO bih rHv -qcN +nxW ivg sdS tYg @@ -39702,32 +49829,32 @@ sdS xTH wQd sWp -sdS -dIT -sdS -mxn +dBB +maN +pMy qcN +oHo qqA aQc xgG xgG +qvo xgG +qvo xgG +qvo xgG xgG -xgG -xgG -xgG -wbk +xUq bNC ugW -xgG -xTh +qvo +hxa kLd kLd gPZ jlt -xgG +qvo hTZ sJZ tEJ @@ -39739,24 +49866,24 @@ uzr pOz qpZ qpZ -aFt +kyG rjH cto vTe wXC ghs ksX -cty -cty -cty -cty ksX ksX ksX ksX ksX -eIt -etv +ksX +ksX +ksX +mSu +iaM +hbi ksX mCF aOg @@ -39780,9 +49907,9 @@ hoC pGs pGs pGs -pGs -pGs -pGs +jQa +jQa +jQa pGs pGs pGs @@ -39799,41 +49926,34 @@ wUU "} (66,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -rGe -ijy -ijy -ijy -ijy -ijy -mzr +nvv +mPk +mPk +mPk +mPk +wBp +wBp +qwQ +qwQ +qwQ +lTR +qwQ +kap wMw wMw wMw wMw tzP -xmi -sFH -sFH -sFH -sFH -sFH -cGH -wMw -wMw +jhu +fFH +lNL +fFH +wPv wMw pbp -fXH -bZU -bZU +sHV bZU +rtm bZU bZU bZU @@ -39842,6 +49962,7 @@ bZU bZU bZU bZU +rtm bZU bZU bZU @@ -39850,23 +49971,29 @@ bZU bZU bZU bZU +rtm bZU -evX +xsH mrC wMw wMw wMw -oJY -amu -rak -amu +wMw +wMw +paq +rkA +wMw +mcr +aMC +aCY hyr +weG hyr +qkF epQ -iGu -frp +lRy dfJ -wlx +vDl qSJ vcj leF @@ -39881,15 +50008,15 @@ hDX kfj krl vrh -gMU +abf uNJ oYB -tPL -rWX -sdS +ubF +ckx bzq -qcN +nxW ojG +qqA aQc xgG qzd @@ -39897,7 +50024,7 @@ eQz vKD ixd xgW -dJO +tFX oTJ qvo pWm @@ -39917,11 +50044,11 @@ cNu kyG kyG kyG +gTC +gTC kyG kyG kyG -kyG -aFt etv cto cto @@ -39935,8 +50062,8 @@ cty cty cty cty -cty -ksX +iFb +kuE cto etv ksX @@ -39958,13 +50085,13 @@ aOg aBK mCF mCF +mCF pGs pGs -pGs -pGs -pGs -pGs -pGs +jQa +jQa +jQa +jQa pGs pGs pGs @@ -39981,21 +50108,19 @@ wUU "} (67,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -pHX -rGe -ijy -ijy -ijy -ijy -ijy -ijy -mzr +nvv +mPk +mPk +mPk +imk +wBp +qwQ +uYJ +qwQ +qwQ +qwQ +qwQ +kap sSz miT wMw @@ -40006,13 +50131,9 @@ new new new new -new -new -wMw -wMw wMw pbp -sHV +irk bZU bZU bZU @@ -40030,33 +50151,39 @@ bZU bZU bZU bZU +qOh bZU bZU bZU -xsH +bwP mrC wMw wMw wMw wMw -lSD -amu -amu -gXK -sXm -epQ -epQ -epQ -epQ -epQ +wMw +wMw +wMw +vLV +wMw +aMC +coz +qzb +erK +qzb +qzb epQ +sKC epQ +sKC epQ +sKC epQ +sKC epQ lsU -eiC -xKz +oMs +pCf lsU nSP qcN @@ -40066,21 +50193,21 @@ sdS rcA sdS sWp -wQd -ipv -sdS -rwS -qcN +alM +rsM +nZi +nxW ojG -nYP -xgG +qqA +aQc +qvo xUq jMr kfJ fFI rzM rQY -fYB +wiL qvo xUq bNC @@ -40103,7 +50230,7 @@ oBR oBR oBR oBR -wSx +sBX etv cto oxa @@ -40117,13 +50244,13 @@ cty cty cty cty -cty -ksX +iFb +xxk cto etv iDn meS -aOg +xSl aOg mCF mCF @@ -40140,14 +50267,14 @@ mCF mCF mCF mCF +mCF pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +jQa +yhU +tdp +fjg +jQa +jQa pGs pGs pGs @@ -40163,21 +50290,19 @@ wUU "} (68,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -ijy -liD -ijy -ijy -ijy -mzr +nvv +mPk +mPk +mPk +mPk +fjv +qwQ +qwQ +pAX +qwQ +qwQ +qwQ +kap cmU wMw wMw @@ -40189,16 +50314,11 @@ wMw wMw wMw wMw -wMw -wMw -wMw -wMw pbp -irk +cYZ bZU bZU bZU -qOh bZU bZU bZU @@ -40207,6 +50327,7 @@ bZU bZU bZU bZU +qOh bZU bZU bZU @@ -40215,18 +50336,24 @@ bZU bZU bZU bZU -bwP +bZU +miF mrC wMw wMw wMw wMw wMw -joh -mxb -aiK -mGb -mGb +wMw +wMw +wMw +obN +aVs +lzX +sdy +sdy +sdy +sdy mGb mGb mGb @@ -40250,10 +50377,10 @@ fFs tZE iZH kGo -hHA -hHA +hMV qcN qqA +qqA aQc xgG tbQ @@ -40267,7 +50394,7 @@ qvo xUq bNC ugW -xgG +qvo aPU rQY dWE @@ -40278,17 +50405,17 @@ gCi sJZ tEJ cNu -wSx +sBX uNq uNq uNq uNq uNq -rFL -wSx +uNq +sBX etv cto -ksX +cto ksX ksX cty @@ -40299,16 +50426,16 @@ cty cty cty cty -cty -ksX +iFb +swV xxk etv xEG mCF mCF hoC -hoC -mSa +mCF +mCF mCF mCF jdm @@ -40322,14 +50449,14 @@ mCF mCF mCF mCF -hoC -pGs -pGs -pGs -pGs -pGs -pGs -pGs +mCF +mCF +mCF +qzZ +fjg +jQa +jQa +jQa pGs pGs pGs @@ -40345,21 +50472,19 @@ wUU "} (69,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -ijy -ijy -ijy -ijy -ijy -mzr +nvv +mPk +mPk +mPk +mPk +wBp +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +kap rgZ olD olD @@ -40371,12 +50496,8 @@ kSz kSz wMw wMw -wMw -wMw -wMw -wMw pbp -cYZ +fXH bZU bZU bZU @@ -40394,21 +50515,27 @@ bZU bZU bZU bZU -qOh bZU bZU -miF +bZU +bZU +evX mrC wMw wMw wMw +nFB +wMw +wMw wMw wMw pAp -bZU -vTq -hvO -ckI +aVs +bgh +fUn +jjS +fUn +jjS hvO ckI hvO @@ -40425,19 +50552,19 @@ rHv fzy qcN qcN +nxW qcN -qcN -qcN +nxW qcN qcN sgy peA -bzq -iKh +qVl qcN +yil qqA aQc -xgG +qvo xUq jMr rQY @@ -40445,7 +50572,7 @@ avy rzg rQY rzM -mXo +sSU rzM bNC ugW @@ -40460,19 +50587,18 @@ mVS iKa tvv pRP -wSx +sBX gmE -bvS +nfv nfv aFh uNq -qkr -wSx +pPf +sBX etv cto -ksX -cty -cty +cto +iFb cty cty cty @@ -40482,21 +50608,22 @@ cty cty cty cty -ksX +iFb +wNz cto etv iDn iDn ksX ksX +cba ksX +xxk +xxk +xxk ksX ksX -ksX -ksX -ksX -ksX -ksX +xxk ksX ksX ksX @@ -40506,12 +50633,12 @@ xEG mCF mCF mCF -pGs -pGs -pGs -pGs -pGs -pGs +mCF +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -40527,38 +50654,32 @@ wUU "} (70,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -liD -ijy -ijy -ijy -ijy -xBb +nvv +mPk +mPk +mPk +mPk +rYC +lTR +pAX +qwQ +qwQ +lTR +lTR +eDY tpV asx cfq -ujo -sOe -sOe -sOe -sOe -lje -wMw +qAI +bJV +ohC +euS +vWn +fWE ezx -uhJ inj -fZB -wMw pbp -fXH +sHV bZU bZU bZU @@ -40566,7 +50687,6 @@ bZU bZU bZU bZU -qOh bZU bZU bZU @@ -40579,18 +50699,25 @@ bZU bZU bZU bZU -evX +bZU +bZU +xsH mrC wMw wMw +wMw +wMw +bnf cHY wMw rSA pAp -bZU -vTq -hvO -ckI +aVs +bgh +fUn +jjS +fUn +jjS hvO ckI hvO @@ -40605,18 +50732,18 @@ hvO bih rHv uiq -qcN +nxW sbX wMx -gnE +jqK sjR sbX -qcN +nxW tex gJs -sdS niF -qcN +nxW +yil qqA dYn vcd @@ -40631,18 +50758,18 @@ krL rRz eZc lFS -ybC +xqN lFS lFS lFS bQH qnf -dWY +sBF cug gia avl cug -aUj +xBv vLk ptw ptw @@ -40650,10 +50777,10 @@ qjd uNq mey wSx -etv +bez cto -ksX -cty +cto +iFb cty cty cty @@ -40662,9 +50789,9 @@ cty cty cty cty -hoC -hoC -ksX +iFb +owM +xxk cto etv cto @@ -40683,17 +50810,17 @@ cto cto xxk cto -cto +pOa iDn mCF mCF mCF -pGs -pGs -pGs -pGs -pGs -pGs +mCF +jQa +abL +jQa +jQa +jQa pGs pGs pGs @@ -40709,48 +50836,43 @@ wUU "} (71,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -ijy -ijy -ijy -ijy -ijy -xBb +nvv +mPk +mPk +mPk +mPk +wBp +lTR +qwQ +qwQ +qwQ +lTR +qwQ +eDY lZR -asx +aCo lZR -saj -ijy -liD -ijy -liD -mzr -wMw +caD +lTR +aTY +eGX +haR +kap wMw -jJT tZr -aRI -wMw pbp -sHV -bZU +irk bZU bZU bZU bZU +qOh bZU bZU bZU bZU bZU +oXw bZU bZU bZU @@ -40761,24 +50883,29 @@ bZU bZU bZU bZU -xsH +hEs mrC -aHy wMw wMw +vpr +wMw +pFF wMw wMw +wMw +pAp +cFK kdV -bZU -vTq -lNX -yeH +gvM +gvM +gvM +gvM yeH yeH yeH yeH lNX -yeH +bUK yeH yeH yeH @@ -40787,20 +50914,20 @@ hrG mos rHv nnw -qcN -qUQ -gjw +nSP +tQz +xug gjw jZO -qUQ +djb nSP tyT peA -bzq -nzO -qcN +ubH +nxW +qqA qqA -iPb +bYT xgG xUq tkT @@ -40809,17 +50936,17 @@ rzg rQY jMr rzM -mXo +sSU rzM bNC rzM -hSN +rzM rzM rzM rzM qFO iWK -hSN +rzM rMN kyK epO @@ -40832,10 +50959,10 @@ ceo cic hmm wSx -etv +pQw cto -ksX -cty +cto +iFb cty cty cty @@ -40845,24 +50972,24 @@ cty cty cty mCF -mCF -xxk +wOR cto -etv cto +etv +xxk cto vTe cto cto +xxk cto cto -cto -cto -cto +vTe +sgl cto xxk cto -cto +fLu cto cto xxk @@ -40870,12 +50997,12 @@ ksX mCF mCF mCF -pGs -pGs -pGs -pGs -pGs -pGs +mCF +jQa +jQa +jQa +jQa +jQa pGs pGs pGs @@ -40891,70 +51018,70 @@ wUU "} (72,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -pHX -cBu -rGe -ijy -ijy -ijy -ijy -ijy -ijy -xBb +nvv +mPk +mPk +imk +mPk +xVw +dXg +dXg +qwQ +qwQ +qwQ +qwQ +xLB gnC mYR asx -saj -ijy -ijy -liD -ijy -mzr -wMw -wMw +caD +lTR +dXg +lTR +lTR +kap wMw ygY -fft -wMw pbp -irk +cYZ bZU bZU -rtm bZU bZU bZU bZU -egj bZU bZU bZU bZU bZU -qOh bZU bZU bZU -rtm bZU bZU -bwP +bZU +bZU +qOh +bZU +bZU +miF mrC wMw wMw wMw +vpr wMw -sDc -amu -amu -amu -pGJ -sXm +wMw +wMw +vLV +mcr +aMC +bgE +qzb +erK +qzb +qzb pGJ pGJ pGJ @@ -40969,19 +51096,19 @@ hvO bih rHv nnw -qcN -tQz +jCE +qUQ gjw -qMC +eOh tGr -vXu +jnA jKz prh wVa -wpr esz qcN qqA +qqA aQc xgG xJx @@ -41006,7 +51133,7 @@ mVS sJZ tEJ cNu -wSx +sBX pIz lpv wxu @@ -41016,36 +51143,36 @@ lpv nTj etv cto -ksX -cty -hoC -jdm -mCF +cto +nNe +dNZ +eCu +eov mCF hoC cty cty hoC mCF -mCF -xxk +wOR +cto cto etv -ksX -ksX -ksX -ksX -ksX -ksX -ksX -ksX -ksX -ksX -ksX -ksX -ksX -ksX -ksX +cto +cto +cto +cto +cto +cto +cto +feM +cto +cto +cto +cto +cto +cto +cto cto cto ksX @@ -41053,10 +51180,10 @@ mCF aOg hiE hoC -pGs -pGs -pGs -pGs +jQa +jQa +gxQ +jQa pGs pGs pGs @@ -41073,38 +51200,32 @@ wUU "} (73,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -ijy -ijy -ijy -ijy -ijy -fvR -sOe -sOe -sOe -tql -ijy -ijy -ijy -liD -mzr -wMw -wMw -wMw -vUQ +nvv +mPk +mPk +mPk +mPk +wBp +qwQ +dXg +dXg +qwQ +lTR +qwQ +fHf +wPl +xOX +lId +jLS +lTR +dXg +dXg +aTY +kap oLa -wMw +vUQ pbp -cYZ +fXH bZU bZU bZU @@ -41113,9 +51234,9 @@ bZU bZU bZU bZU +qOh bZU bZU -rtm bZU bZU bZU @@ -41125,18 +51246,24 @@ bZU bZU bZU bZU -miF -mrC +bZU +kMy +lEm wMw wMw +xXr +wMw +plm +wMw rSA wMw -aZt +wMw +kdf hyr htP hyr hyr -hyr +leU pGJ iaO uRU @@ -41144,28 +51271,28 @@ uRU uRU reG pGJ -mFY +neU oMs xWY hrG mos rHv nnw -qcN +nxW lYA gjw wdh -spd +lEM rNo qcN maN rsM -maN -fCE +gwW qcN +yil qqA aQc -xgG +qvo smO rQY rzM @@ -41188,56 +51315,56 @@ iMp sJZ tEJ cNu -wSx +sBX kNe -lpv +ptM lpv lpv lpv uuv wSx rjH -cto -ksX -hoC -mCF -mCF -mCF +wOC +gMm +iFb +kxe +awJ mCF mCF +eov mCF mCF jdm mCF -mCF -ksX +wOR +cto cto etv +xxk +ksX +ksX +ksX +ksX +ksX +ksX +ksX ksX -cty -cty -cty -cty -cty -cty -cty -cty -cty -cty -cty -cty -cty ksX +ksX +ksX +ksX +ksX +azw cto cto -ksX +xxk mCF xGV aOg mCF -hoC -pGs -pGs +jQa +jQa +jQa pGs pGs pGs @@ -41255,78 +51382,78 @@ wUU "} (74,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -kcj -nvF -nvF -nvF -nvF -nvF -xdy -wMw -fZB -wMw -wMw +nvv +mPk +mPk +mPk +mPk +wBp +uYJ +dXg +dXg +qwQ +qwQ +qwQ +qwQ +xLB +xOX +bCM +rlI +rlI +rlI +rlI +rlI +cEm fZB wMw pbp -wCc -uaV -nXR -fUF -jyq -uaV -nXR -fUF -jyq -uaV -nXR -kvQ -jyq -uaV -nXR -fUF -jyq -uaV -nXR -fUF -jyq -wCc +sHV +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +xsH mrC wMw wMw wMw +rSA wMw -aZt -cZZ +rSA +wMw +rSA +wMw +sid +hyr +hyr hyr -rfn hyr hyr pGJ nio -hpQ +bte mxv qHJ afg pGJ -nSY +bOO lnG rKf erE @@ -41339,16 +51466,16 @@ qUQ bVq woI xVA -qcN +nxW mVN doa -tjF srX qcN -oxs +dmR +yil aQc xgG -tkH +lMq jOR wIH gkL @@ -41365,12 +51492,12 @@ mbt jBp ilQ rzM -xgG +qvo vUM fPn jjg cNu -wSx +sBX uNh sNa ffe @@ -41380,21 +51507,22 @@ kSd wSx etv cto -ksX -hoC -mCF -mCF -mCF -mCF +cto +iFb +kmW mCF +eov +nqf mCF mCF mCF mCF mCF -ksX +wOR +noj cto etv +cto ksX cty cty @@ -41407,17 +51535,16 @@ cty cty cty cty -cty -cty ksX cto cto -ksX +cto +xxk mCF mCF aOg mCF -pGs +jQa pGs pGs pGs @@ -41437,73 +51564,73 @@ wUU "} (75,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -xBb +nvv +mPk +mPk +mPk +mPk +wBp +qwQ +qwQ +dXg +dXg +dXg +qwQ +qwQ +eDY +xOX +tkV asx asx asx cDm asx asx -pbp +paq wMw +pbp +irk +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +egj +bZU +bZU +bZU +bZU +bZU +qOh +bZU +bZU +bZU +bZU +bZU +bZU +bwP +mrC wMw wMw wMw wMw -qoE -olD -olD -olD -olD -olD -olD -olD -olD -olD -olD -olD -olD -olD -olD -olD -olD -olD -olD -olD -olD -olD -olD -jgL wMw -vil wMw euH -amu -bgE -bgE -bgE -htP +pLp +wMw +kdf hyr -pGJ -nio -mxv +hyr +giN +htP +bmV +afz +xyO +eDQ eDQ eDQ xyO @@ -41517,36 +51644,36 @@ rHv shG qcN qcN -qcN +nxW nSP -jGk -qcN +hli +nxW qcN nSP jGk -qcN -qcN +nxW qcN pco +qqA aQc xgG xgG +qvo xgG +qvo xgG +qvo xgG xgG xgG xgG -xgG -xgG -xgG -xgG +qvo xgG xgG xgG qvo -gCC -kjA +mjA +wQi xgG vUM sJZ @@ -41563,7 +51690,7 @@ wSx etv cto xxk -mCF +eov mCF aOg aOg @@ -41573,10 +51700,11 @@ mCF mCF mCF mCF -mCF -ksX +wOR +xxk mxB -etv +eJS +cto ksX cty cty @@ -41589,12 +51717,11 @@ cty cty cty cty -cty -cty ksX cto cto -ksX +cto +xxk aOg aOg mCF @@ -41619,75 +51746,75 @@ wUU "} (76,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -xBb +nvv +mPk +mPk +mPk +mPk +xVw +qwQ +qwQ +qwQ +dXg +dXg +dXg +dXg +eDY +asx +asx kzo izB fZx asx +hOp asx -asx -pbp -wMw -wMw -wMw -wMw -wMw -wMw -wMw -wMw -wMw -wMw -wMw -wMw -wMw -wMw -wMw -wMw -wMw -wMw -wMw -wMw -wMw -wMw -wMw wMw wMw +pbp +cYZ +bZU +rtm +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +rtm +bZU +bZU +bZU +bZU +bZU +bZU +bZU +bZU +rtm +bZU +miF +mrC wMw wMw wMw wMw -mcr -srL -qzq -ahg -pCj -nhc -uhW -bgE -hyr +xVQ +kyz +kqA +fOO +aMC +aMC +aqw +giN +cTV hyr -pGJ -bHL +bmV +qxu +eDQ svD oNy -eDQ +teT eDQ lzu gqX @@ -41696,9 +51823,9 @@ ckI tam lss rHv -gtr -gkF -lUe +oMs +kiE +xNY qqA qqA aQc @@ -41707,8 +51834,8 @@ kWZ rVZ aQc qqA -sWs -xNY +nfk +qqA qqA aQc kWZ @@ -41724,12 +51851,12 @@ sah haq eRE iPw -pxK +pbf xgG wwd mjA rzM -xgG +qvo eea sJZ tEJ @@ -41746,7 +51873,7 @@ etv xxk xxk mCF -mCF +eov aOg aOg aOg @@ -41754,11 +51881,12 @@ mCF mCF mCF mCF -cty -hoC -ksX +mCF +mnL +cto cto etv +cto ksX cty cty @@ -41766,15 +51894,14 @@ cty cty cty cty -cty mCF cty cty cty cty -cty ksX cto +fLu cto ksX aOg @@ -41801,73 +51928,73 @@ wUU "} (77,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -ijy -liD -ijy -ijy -ijy -ijy -ijy -ijy -xBb +nvv +mPk +mPk +mPk +mPk +rYC +qwQ +lTR +pAX +qwQ +qwQ +qwQ +dXg +xFS +vZR +eha dKy qVD fXu asx asx asx -pbp -wMw -wMw -wMw -wMw -wMw -wMw -olD -olD -olD -wMw -wMw -wMw -wMw -wMw -wMw -wMw -olD -olD -olD -wMw -wMw -wMw -wMw wMw wMw +pbp +wCc +uaV +uaV +nXR +fUF +jyq +uaV +nXR +fUF +jyq +uaV +nXR +kvQ +jyq +uaV +nXR +fUF +jyq +uaV +nXR +fUF +jyq +wCc +mrC wMw olD olD olD -olD -ntL -auU -qaE -qaE -uQC -rLb -bgE -dLb +teH +oaO +wns +vru +wfS +kqA +giN +giN +giN hyr -pGJ -icZ -teT +bmV +qxu +eDQ +eDQ oNy eDQ eDQ @@ -41885,16 +52012,16 @@ kIK kIK bfq kIK +jAx kIK -tRu bfq akf -gPA +snE kIK kIK -bfq +pLF +jAx kIK -tRu kIK kIK kIK @@ -41902,28 +52029,28 @@ kIK kIK fAQ qqA -xgG -rCI +qvo +vOW rKB jHJ tXE -xgG +qvo mqt qhN kXZ -xgG +qvo ueg sJZ tEJ cNu -aFt -bsH -bIj -cto -cto -cto -cto -cto +lNb +apY +vzt +ezt +ezt +ezt +ezt +ezt toU cto xxk @@ -41937,32 +52064,32 @@ mCF mCF mCF hoC -cty -ksX +owM +qEG cto etv -ksX -cty +xxk +xxk mCF cty cty hoC hoC mCF -mCF +wBc hoC cty cty cty -cty ksX cto cto +cto ksX hoC mCF aOg -mCF +wBc mCF pGs pGs @@ -41983,75 +52110,75 @@ wUU "} (78,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -fvR -sOe -sOe -alE +nvv +mPk +mPk +mPk +mPk +xVw +qwQ +daS +qwQ +gVO +jaF +qgm +lTR +dXg +dXg +xFS +eqg +bJV +bJV +bJV +qTs asx asx xOI -bDM -mHo -ufn -fPG -fPG -fLV -lgi -asx -asx -asx -bDM -wTQ -ufn -fPG -fPG -fLV -lgi -asx -asx -asx -mvo -wTQ -ufn -fPG -fPG -fLV -lgi -asx +qoE +olD +olD +olD +olD +olD +olD +olD +olD +olD +olD +olD +olD +olD +olD +olD +olD +olD +olD +olD +olD +olD +olD +olD +jgL +mrC asx asx asx -ntL -qaE -hqL -hjj -hqL -hGm -bgE -leU +kqA +aSe +rFv +hQP +iFm +kqA +lGD +giN hyr -pGJ -nio -mlN +hyr +qOV +qxu eDQ +mlN eDQ +mxv eDQ lzu vfg @@ -42060,52 +52187,52 @@ lzu hrG mos rHv -eXT -xRF -srY -hFE -xRF -xRF -jcT -jcT -jcT -jcT +oMs +kiE +qqA +qqA +qqA +qqA +yil +qqA +gxi +qqA +qqA +sKN +qqA qqA -aQc -clX -bft qJF -clX -clX -clX -clX -clX -clX -clX +qqA +gjs +qqA +qqA +qqA +qqA +qqA aQc qqA -xgG +qvo slB tNT bur vRI -sfB +oxi qnf ayo wbB -xgG +qvo ueg fPn aBB ozz -mzt -mUP -mUP -mUP -mUP -mUP -mUP -mUP +lmd +hys +hys +hys +hys +hys +hys +hys pGP cto xxk @@ -42119,12 +52246,12 @@ mCF mCF mCF hoC -cty -ksX +owM +ghs cto etv -ksX -cty +xxk +xxk mCF aOg aOg @@ -42136,10 +52263,10 @@ mCF mCF cty cty -cty ksX cto cto +cto ksX hoC mCF @@ -42165,97 +52292,97 @@ wUU "} (79,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -liD -xBb -asx -viY -asx -dDo -sJr -oGv -oGv -pZq -vao -ctL -asx -fZB -asx -dDo -kvC -oGv -oGv -oGv -mcX -ctL -asx -fZB -asx -dDo -bgi -jSX -hKK -hKK -hKK -fOW +nvv +mPk +mPk +mPk +mPk +wBp +qwQ +qwQ +lTR +scL +vLo +lnO +qwQ +qwQ +qwQ +dXg +qwQ +qwQ +qwQ +pAX +rMl asx fZB -fZB asx -ntL -tRN -wjM -uZp -hqL -tFf -bgE -hyr -hyr -pGJ +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +mrC +asx +fZB +asx +kqA +kEB +sSp +hlw +vhJ +bgE +kpN +giN +hyr +hyr +hyr +pGJ nio lkH -fyo +eaN lYF srW pGJ -ffi +mFY oMs xWY hvO bih rHv -oMs -snl -kTD -lLZ -qsk +qMl +xRF +srY +hFE +egp xRF yil +qio yil -aai jcT ojG aQc -clX -clX +qqA +vMU clX clX qio @@ -42263,31 +52390,31 @@ qio qio qio qio -clX +qqA aQc qqA xgG duw aDQ -vzX +mcN aAg xgG sLU qOn wbB -xgG +qvo ueg sJZ tEJ ouV -aFt -aFt -aFt -aFt -aFt -xxk -xxk -xxk +lNb +ezt +ezt +ezt +ezt +ixr +ixr +ixr etv xxk xxk @@ -42296,32 +52423,32 @@ mCF aOg aOg aOg +vOo mCF +bls mCF -mCF -mCF -cty cty -ksX +owM +cto cto etv -ksX -hoC +xxk +xxk mCF aOg aOg -mCF -aOg +dda +gCh hiE mCF aOg aOg cty cty -cty ksX cto cto +cto ksX cty mCF @@ -42347,70 +52474,70 @@ wUU "} (80,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -xBb -asx -asx -wCR -uEx -vLS -iGW -oGv -tgE -jSX -ykD -asx -asx -asx -uEx -hKK -sRs -oRj -rfV -jSX -ykD -asx -asx -asx -uEx +nvv +mPk +mPk +mPk +mPk +xVw +qwQ +qwQ +qwQ +eGX hKK fLY -ijy -ijy -ijy -wAj +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +btU asx asx +wCR +gsQ +icb +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +wMw +mrC asx +dlr asx -ahg -ieh -hqL -wga -hqL -cNi bgE -iSW -hyr +pTg +ycY +jfA +cdS +bgE +giN +giN +giN +giN +rfn pGJ dXd tGV @@ -42426,31 +52553,31 @@ mos rHv oMs snl -fQU -jPW -kiU -xRF +kTD +lLZ +dKc +snl yil yil +tiF yil -gkF ojG aQc +qqA +qqA clX qio qio +aUA +vpQ qio qio -vzy -rey -qio -qio -clX +hLY aXz lhp xgG xgG -xgG +qvo xgG xgG xgG @@ -42458,22 +52585,22 @@ rgy mRZ wDN xgG -vUM +rGl sJZ fnq cNu bkM -cty -gsm -aOg -aOg -mCF -mCF -xxk +ngg +bkM +ixr +ezt +dad +ixr +ixr toU cto -ksX -hoC +cto +iFb mCF mCF mCF @@ -42483,27 +52610,27 @@ mCF mCF cty cty -cty -ksX +owM +diu cto etv +cto ksX -cty mCF aOg xGV -aOg -aOg +gCh +gCh mCF mCF aOg aOg cty cty -cty ksX bxx bxx +bxx ksX cty mCF @@ -42529,70 +52656,70 @@ wUU "} (81,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -fvR -alE -uxQ -bDr -tql -biA -scL -dOS -rfV -lnO -fvR -alE -uxQ -bDr -tql -ijy -awf -oGv -oGv -lnO -fvR -alE -uxQ -bDr -tql -ijy -ijy -ijy -ijy -ijy -fvR -alE -uxQ -bDr -juT -ahg -pWI -dzV -uLa -uOQ -mrF -bgE -iSW -iSW +nvv +mPk +mPk +mPk +mPk +wBp +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +ebN +eha +tNy +gXf +unH +kKX +oJb +wfK +wfK +ebm +bJI +asx +asx +asx +bJI +bJI +oJb +wfK +wfK +ebm +bJI +asx +asx +asx +bJI +bJI +oJb +wfK +wfK +fWR +bJI +bJI +bJI +aMC +hLt +egV +bTf +cKK +duN +hyr +nRH +nRH +feW +giN pGJ pGJ pGJ @@ -42610,23 +52737,23 @@ ciH tIV hKe fWU -vwl +mXO xRF ira -aai -aai -aTc +yil +yil +qqA qqA aQc -clX -qio +yil +qqA qio qio -vzy -rey -rey -rey -eUR +pGj +iIc +aAC +wSL +axv lDh jQe mHa @@ -42635,7 +52762,7 @@ jxe orH uIl odw -xgG +qvo feV qOn wbB @@ -42646,16 +52773,16 @@ tEJ cNu bkM bkM -cty -aOg -mCF -jdm -mCF -ksX +ngg +ipl +ixr +exj +ixr +gxX etv cto -ksX -hoC +cto +iFb mCF jdm mCF @@ -42665,12 +52792,12 @@ mCF mCF cty cty -cty -xxk +owM +rXS cto toU +xxk ksX -hoC mCF mCF aOg @@ -42683,7 +52810,7 @@ aOg aOg ksX ksX -ksX +qYd fLu cto ksX @@ -42711,105 +52838,105 @@ wUU "} (82,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -xBb -uxQ -ubn -ijy -ijy -scL -gDI -jSX -fLY -ijy -xBb -uxQ -ubn -ijy -ijy -scL -kvC -jSX -fLY -ijy -xBb -uxQ -ubn -ijy -ijy -ijy -ijy -ijy -ijy -ijy -xBb -uxQ -ubn -xBb -ahg -pWI -qaE -nHb -qaE -bgE -bgE -iSW -iSW +nvv +mPk +mPk +mPk +mPk +wBp +uYJ +lTR +lTR +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +qwQ +eDY +tNy +gPL +hKK +srU +sUp +lYr +pdn +cRx +bJI +asx +fZB +asx +pUi +rIG +lYr +awr +lYr +aHu +tEc +asx +viY +asx +gfc +sFN +lYr +lYr +lYr +kRH +bJI +rgf +asx +aMC +hLt +kUj +ixw +rmV +kqA +giN +hyr +giN iSW +giN +qUW hyr pJf -hyr +giN kIV hyr -iiV -oMs +thS oMs +vAF xWY hrG mos rHv oMs snl -dsw -jPW +qgR +dvw qWt -xRF +snl yil -aai -aai -jcT +yil +yil +gkF iwc aQc -clX -qio +yil +qqA qio qio -rey -rey -rey -vzy -eUR -edu +vDf +gvJ +sLO +lum +lxR +rpN jQe xvj xgG @@ -42821,41 +52948,41 @@ xgG pJZ qOn wbB -xgG +qvo fkE sJZ tEJ cNu xBO bkM -cty -aOg -aOg -mCF -mCF -ksX +ngg +tsz +chs +ixr +ixr +gxX etv cto -ksX -hoC -mCF +xxk +iFb mCF mCF mCF mCF mCF +jdm mCF hoC cty -cty +owM xxk cto etv +tcX ksX -hoC -mCF -aOg +vOo aOg +qZR aOg aOg aOg @@ -42865,7 +52992,7 @@ aOg aOg ksX kgC -qvK +wtU cto cto jps @@ -42893,113 +53020,113 @@ wUU "} (83,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -liD -ijy -liD -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -xBb -uxQ -ubn -ijy -oML -idF -hKK -fLY -ijy -ijy -xBb -uxQ -ubn -ijy -ijy +nvv +mPk +mPk +mPk +mPk +wBp +qwQ +aTY +dXg +aTY +qwQ +lTR +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +eDY +tNy +oLZ +sUK eGX -hKK -fLY -ijy -ijy -xBb -uxQ -ubn -ijy -ijy -ijy -ijy -ijy -ijy -ijy -xBb -uxQ -ubn -xBb -ahg -pWI -jhb -wqK -tKx -bgE -iSW -iSW -ovD -ovD +wXc +sJm +bVS +kRH +eOa +asx +dlr +asx +itQ +qKZ +qyJ +vAZ +vmw +kRH +eOa +svG +dlr +asx +itQ +qKZ +qyJ +fwo +lYr +hZE +bVX +eOa +asx +aMC +hLt +rmo +qfC +xbm +kqA +giN +hyr +giN +hyr ovD +hxO +hxO rbd hyr oZA -hyr -xRF -evV -uiq -lzu +htP +jrq +oMs +oMs +hmp oMs hca lzu oMs yjp lDk -dkt +oKN sJB xRF -aai yil -aai -jcT -pZD -aQc -clX +yil +yil qio +sMJ +sKN +qqA +qqA qio qio -vzy -rey -rey -rey -eUR -lDh +oRD +wSL +vVz +wSL +hlF +hLQ boV dkl -xgG +qvo opW nOz djH vRI -sfB +oxi rVI hQb lEw @@ -43010,12 +53137,12 @@ tEJ cNu qnm bkM -cty -aOg -aOg -mCF -mCF -ksX +ngg +qLq +chs +ixr +ixr +nTG etv cto xxk @@ -43027,14 +53154,14 @@ mCF mCF mCF mCF -hoC -cty +mCF cty -ksX +vVJ +cto cto etv -ksX -mCF +cto +wFx mCF aOg aOg @@ -43047,11 +53174,11 @@ aOg aOg ksX kgC -sMT +lun cto cto drK -bIz +cto ksX mCF mCF @@ -43075,108 +53202,108 @@ wUU "} (84,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -ijy -ijy +nvv +mPk +mPk +mPk +mPk +wBp +wBp +rYC +dXg +qwQ +lTR gVO jaF jaF jaF qgm -ijy -ijy -ijy -ijy -ijy -fvR -sOe -tql -ijy -ijy -ijy -ijy -ijy -ijy -ijy -fvR -sOe -tql -ijy -ijy -ijy -ijy -ijy -ijy -ijy -fvR -sOe -tql -ijy -ijy -ijy -ijy -ijy -ijy -ijy -fvR -sOe -tql -xBb -ahg -ntL -ntL -amu -amu +qwQ +qwQ +qwQ +qwQ +qwQ +eDY +tNy +oLZ +qwQ +lTR +scL +dOS +rfV +lnO +fHf +eha +tNy +eXg +jLS +lTR +scL +oGv +lsN +lnO +fHf +eha +tNy +eXg +jLS +lTR +scL +oGv +rKM +lnO +lTR +fHf +wPl +aMC +kqA +kqA bgE +bgE +bgE +aMC +ldr +hyr iSW -iSW -iSW -iSW -bbS +giN +giN +mMJ cZZ -hyr +htP ooe ukX -xRF -xRF +wHk +evV aVQ lsU -eiC -xKz +oMs +pCf lsU fkR fkR +pVN fkR +pVN fkR +pVN +pVN +pVN fkR fkR -fkR -fkR -fkR -fkR -fkR -aQc -clX -qio +gSn +qqA +tDF qio qio qio -rey -rey -nNw -eUR -edu +qfL +wSL +wyE +axv +hLY boV nLI -xgG +qvo tgk bLp dWN @@ -43192,35 +53319,35 @@ tEJ ciu bkM bkM -aOg -aOg -aOg -mCF -hoC -ksX +chs +chs +chs +ixr +poz +nTG etv xxk xxk mCF -aOg -mCF -mCF +uIR +tCl +tCl cty hoC mCF mCF mCF mCF -hoC -ksX +wOR +cto cto etv xxk -mCF +xxk mCF aOg hoC -cty +mCF cty mCF mCF @@ -43228,7 +53355,7 @@ ksX ksX ksX loP -fLu +lYQ cto cto wgv @@ -43239,7 +53366,7 @@ aOg mCF mCF mCF -hoC +mCF pGs pGs pGs @@ -43257,163 +53384,163 @@ wUU "} (85,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -ijy -liD +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +daS +dXg +aTY scL lsN +gcF +wnA +lnO +qwQ +qwQ +qwQ +qwQ +qwQ +eDY +tNy +oLZ +qwQ +lTR +scL +gDI +jSX +fLY +lTR +eDY +tNy +oLZ +lTR +lTR +scL +kvC +jSX +fLY +lTR +eDY +tNy +oLZ +lTR +lTR +scL oGv oGv lnO -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -nSv -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -liD -ijy -ijy -ijy -ijy -liD -fvR -sOe -sOe -sOe -suv -bgE -bgE -yeJ -iSW -sXb -sXb +lTR +dXg +fHf +jEG +hET +hET +koZ +hET +wft +aMC +sNT +giN +vFl sXb sXb +mRq sXb +mRq qaY +mRq sXb -sXb -sXb +mRq xzj -sCo +oxA oMs hca wRB fkR qps -gan -pqG bVI +pqG bVI +gan bVI bVI bVI gKn nDC -drn -clX -qio -qio +aQc +tDF +tDF +tDF qio qio -rey -iUA -rey -eUR +rja +gvJ +szS +axv lDh boV dkl xgG xgG +qvo xgG xgG xgG xgG -xgG -xgG +qvo xgG xgG vUM sJZ tEJ -rsw -bkM -gsm -aOg -xGV -mCF -mCF -mCF -xxk +fMP +pKs +chs +chs +kGq +wvI +ixr +ixr +ixr toU cto xxk meS -aOg -aOg -mCF +kce +wSM +wSM cty cty mCF mCF mCF mCF -cty -ksX +wOR +cto cto etv +swV xxk mCF -mCF aOg hoC cty cty mCF mCF -ksX +iDn wTE -bIz -bIz -qYd -qYd -xtD -qYd +cto +cto +cto +cto +xxk +cto xxk xxk xEG @@ -43439,77 +53566,77 @@ wUU "} (86,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -ijy -ijy -ijy +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +qwQ +uYJ +lTR +scL +vom +hJq +hXe +lnO +qwQ +pAX +qwQ +qwQ +uYJ +eDY +tNy +oLZ +qwQ +qwQ +eGX +hKK +fLY +lTR +qwQ +eDY +tNy +oLZ +lTR +lTR +eGX +hKK +fLY +lTR +lTR +eDY +jzL +oLZ +lTR +lTR scL -oGv oGv oGv lnO -ijy -liD -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -liD -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -liD -oIN -gMf +dXg +lTR +lTR +qTZ +hKK +bbG +hKK +hKK +gdJ +vKv bZA -iSW -iSW +giN +giN sXb -oyb -iet -oyb -iet -nih -iet -oyb +egH +pJQ +aVt +tzw +dSA +cGc +aVt iet sXb xWY @@ -43526,70 +53653,70 @@ wrg jfn hPD ugi -fkR +pVN aQc +tDF +bzf +gyz clX -clX -nnD -bjz -nxF -rey -rey -rey -eUR +azr +aAC +wSL +wSL +axv edu boV nLI jfP bak -ezc +cmf ezc ezc bak +uOF bak -kjJ -clX +tQy fEm vUM sJZ tEJ cNu -bkM -cty -aOg -aOg -mCF -mCF -mCF -mxB +pKs +chs +chs +ibV +ixr +ixr +ixr +exj etv xxk xxk aOg -mCF -hoC -hoC +kce +wSM +rWG cty aOg aOg aOg mCF mCF -cty -ksX +wOR xxk -etv xxk -hoC +gAK +xxk +mrY mCF mCF -cty -cty mCF +cty +eoV mCF mCF -ksX -cDc +iDn +fLu cto cto kDJ @@ -43621,70 +53748,70 @@ wUU "} (87,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -rGe -rGe -liD -ijy +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +qwQ +aTY +lTR eGX hKK -sRs -nyj +vDw +aag +lnO +qwQ +lTR +qwQ +qwQ +lTR +eDY +tNy +oLZ +qwQ +qwQ +lTR +qwQ +qwQ +qwQ +lTR +eDY +tNy +oLZ +lTR +lTR +lTR +lTR +lTR +lTR +lTR +eDY +iAP +sgn +dXg +dXg +scL +oGv +hXR lnO -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -liD -liD -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -liD -ijy -ijy -ijy -liD -ijy -liD -ijy -oIN -gMf -xVK +lTR +lTR +lTR +lTR +lTR +lTR +lTR +aTY +qsb +vKv +hsl iSW -fIT -sXb +giN +mRq oyb jzZ mCY @@ -43708,18 +53835,18 @@ wrC eTP hPD uQH -fkR +pVN aQc -qXO -pNn -rvd -lDh -vGj -rey -noG -rey -eUR -lDh +dkl +dkl +mOx +iZT +roT +gdO +wSL +gvJ +hlF +suE dkV sff sff @@ -43737,19 +53864,19 @@ lQA ptY uzg bkM -cty -aOg -aOg -aOg -mCF -mCF -xxk -toU -xxk -xxk -mCF -mCF -hoC +chs +chs +chs +rCs +ixr +ixr +ixr +toU +xxk +xxk +kce +mCF +wSM cty cty aOg @@ -43757,16 +53884,16 @@ aOg aOg mCF mCF -cty -ksX +owM +mxB cto etv +cto ksX cty mCF mCF -cty -cty +mCF mCF mCF mCF @@ -43774,12 +53901,12 @@ xEG xxk cto cto -qYd -qYd +cto +cto wgv -qYd +cto fLu -bIz +cto ksX aBK aOg @@ -43803,152 +53930,152 @@ wUU "} (88,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -rGe -rGe -liD -ijy -liD -eGX +nvv +mPk +mPk +mPk +mPk +mPk +mPk +xVw +qwQ +qwQ +aTY +qwQ +aTY +dFt hKK fLY -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -liD -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -liD -oIN -gMf +lTR +qwQ +lTR +qwQ +qwQ +eDY +tNy +oLZ +qwQ +qwQ +qwQ +aqh +qwQ +lTR +qwQ +eDY +tNy +oLZ +lTR +lTR +lTR +aTY +lTR +lTR +lTR +eDY +cpF +cpF +dXg +lTR +scL +oGv +oGv +lnO +lTR +lTR +lTR +lTR +lTR +aTY +lTR +lTR +vEe +vKv hsl -iSW +giN hyr -sXb -peE +mRq +nih jzZ lZa gyw mCY jzZ -qYR +mCY jzZ mRq xWY hvO bih rHv -keo +mXx tpL khb -urd +dnA lQg ara xHt nZk hPD -uQH -fkR +mZi +mXx aQc qXO -sHr -tDF +tso +bbW qQk -oEl -fbq -fbq -fbq -bHo -edu +per +mVY +opP +lMl +pRR +rpN aXz oXm -xNR -xNR -xNR -xNR -xNR -xNR -xNR -xNR -xNR -xNR -xAD -huz +oXm +xne +xne +xne +xne +mtx +cWs +xne +tQy +rMN +lMD +oRK tEJ bZI bkM -cty -gsm -aOg -aOg -mCF -mCF -xxk -etv +ngg +dtH +chs +chs +ixr +ixr +ixr +mMZ xxk xxk mCF -hoC +kce cty cty cty aOg aOg -aOg +gCh +dda mCF -mCF -hoC -ksX +owM +xxk cto etv +cto ksX cty mCF mCF mCF -hoC mCF mCF mCF @@ -43956,18 +54083,18 @@ ksX ksX ksX ksX -fLu +aMN xxk cto cto esw -bIz +cto ksX aOg mCF mCF -mCF -mCF +wBc +aOg mCF hoC pGs @@ -43985,76 +54112,76 @@ wUU "} (89,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -rGe -rGe -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -liD -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -liD -ijy -ijy -ijy -ijy -ijy -ijy -ijy -liD -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -liD -ijy -ijy -liD -ijy -oIN -juW -juW -oDg -opA +nvv +mPk +mPk +mPk +mPk +mPk +mPk +rYC +qwQ +lTR +qwQ +qwQ +qwQ +qHl +qwQ +lTR +qwQ +qwQ +qwQ +qwQ +qwQ +eDY +tNy +oLZ +qwQ +pAX +lTR +lTR +qwQ +dXg +qwQ +eDY +tNy +oLZ +lTR +lTR +aTY +lTR +lTR +lTR +lTR +fHf +cpF +lTR +lTR +gVO +uTu +oGv +oGv +lnO +lTR +lTR +lTR +lTR +lTR +lTR +lTR +gVO +bEY +aMC +hyr +giN +mpL sXb nih jzZ mCY gyw nPI -jzZ +pKg mCY jzZ mRq @@ -44062,7 +54189,7 @@ xWY hvO bih rHv -cYT +hPD tpL khb urd @@ -44071,30 +54198,30 @@ lVW lZh nZk hPD -uQH -fkR +mZi +hPD aQc -bum -nLI -dkl +qXO +tso +qBO eUh izP -rLq +khB nTH -kua +pNT izP eUh aXz nYy xNR -iLd -iTP -jZG -tNE -uIj -rAy -fEI -wfy +ydx +xNR +ydx +xNR +ydx +xNR +ydx +xNR xNR rMN mzv @@ -44104,27 +54231,28 @@ bkM bkM bkM bkM -bkM -bkM +pKs +pKs bkM cNC etv cto xxk mCF -hoC +mCF mCF aOg aOg aOg xGV -aOg +gCh +dda mCF -mCF -hoC -ksX +owM +cto cto etv +cto ksX mCF mCF @@ -44134,22 +54262,21 @@ mCF mCF mCF mCF -mCF hoC cty ksX kgC -bIz +qYd +cto cto cto cto -bIz ksX aOg mCF -hoC mCF mCF +vOo mCF mCF pGs @@ -44167,71 +54294,71 @@ wUU "} (90,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -pHX -rGe -rGe -ijy -ijy -liD -liD -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -liD -ijy -liD -ijy -pGs -pGs -tdq -cUq -fal +nvv +mPk +mPk +mPk +mPk +mPk +mPk +msj +daS +pAX +qwQ +qwQ +qwQ +qwQ +qwQ +pAX +qwQ +qwQ +qwQ +qwQ +qwQ +eDY +tNy +oLZ +qwQ +dXg +qwQ +qwQ +dXg +qwQ +qwQ +eDY +tNy +oLZ +lTR +lTR +lTR +lTR +lTR +daS +lTR +lTR +lTR +lTR +lTR +scL +hXR +oGv +oGv +lnO +dXg +dXg +daS +lTR +lTR +gVO +jaF +aqq +cwE +cwE +ngC +hyr +iSW sXb -tzw +djh jzZ jzZ gyw @@ -44247,37 +54374,37 @@ rHv pVN cMf khb -urd -ara +qLs +iwg ara hAh nZk hPD uQH -fkR -ljs -tDF -gbU -oXm +pVN +aQc +bum +azh +fEb nLI nLI ovp -dtq +mIQ fnX -oXm +ujR dkl boV dkl xNR -dNb -vNu -pRs -vNu -qFZ -hPd -hPd -irc -nwO +iLd +iTP +jZG +tNE +vYQ +lgb +fEI +wfy +xNR gFx aFg umT @@ -44303,12 +54430,12 @@ aOg mCF mCF aOg -mCF -ksX +wOR +cto cto toU -ksX -mCF +cto +cba mCF mCF jdm @@ -44321,7 +54448,7 @@ aOg cty ksX kgC -bIz +qYd cto xxk cto @@ -44329,8 +54456,8 @@ ksX ksX mCF mCF -cty -hoC +mCF +mCF mCF mCF mCF @@ -44349,70 +54476,70 @@ wUU "} (91,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -rGe -rGe -liD -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -liD -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -ijy -liD -ijy -pGs -pGs -hXN -bAT -cUq -iOE -sXb +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +lTR +aTY +qwQ +qwQ +qwQ +aTY +lTR +qwQ +qwQ +qwQ +qwQ +lTR +qwQ +eDY +tNy +oLZ +qwQ +dXg +dXg +qwQ +dXg +qwQ +aqh +eDY +tNy +oLZ +lTR +lTR +lTR +lTR +lTR +lTR +lTR +eDY +cpF +lTR +lTR +scL +oGv +tmC +hXR +lnO +dXg +daS +lTR +lTR +lTR +scL +oGv +cwE +cwE +qqM +hsl +hyr +giN +dVq tzw jzZ jzZ @@ -44421,7 +54548,7 @@ pol pol pol pol -mka +dVq lbr urA lss @@ -44430,13 +54557,13 @@ pVN daA khb urd -ara +mwd ara ara nZk hPD uQH -fkR +pVN dYn rmB rmB @@ -44450,16 +54577,16 @@ rmB tcq jyw xya -xNR -fDn -wdA +ydx +mSc +wpX qQt jNT qeu thY mPI bTm -rby +snP qhF ffx umT @@ -44467,9 +54594,9 @@ eDF gFx fvw tEJ -qDk +ozC qIi -tEJ +vZz ezt xxk toU @@ -44485,12 +54612,12 @@ mCF mCF aOg xGV -mCF +wOR xxk cto etv +xxk ksX -mCF aOg mCF mCF @@ -44503,7 +54630,7 @@ aOg cty ksX ksX -ksX +qYd cto fLu ksX @@ -44512,7 +54639,7 @@ mCF mCF mCF cty -cty +mCF mCF mCF mCF @@ -44531,72 +54658,72 @@ wUU "} (92,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -rGe -pGs -aFr -pGs -bAT -cbU -cUq -cUq +nvv +mPk +mPk +mPk +mPk +mPk +mPk +xVw +lTR +qwQ +pAX +lTR +lTR +lTR +lTR +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +eDY +tNy +oLZ +qwQ +lTR +lTR +qwQ +qwQ +qwQ +qwQ +eDY +tNy +oLZ +nFD +lTR +lTR +lTR +lTR +lTR +lTR +lTR +stl +caD +lTR +scL +oGv +hXR +oGv +pfd +qgm +dXg +lTR +lTR +lTR +scL +oGv +cwE +cwE +hsl +hsl +hyr +hyr sXb esO -jzZ +dYp wZF fjH wZF @@ -44604,44 +54731,44 @@ wZF jzZ dYX sXb -hYf +ePB hvO mrd ogq riJ spP fdw -eUe -qRy +xtZ +ifZ eMi qRy moK hPD -hXg -fkR +uQH +riJ aQc qqA +qqA pbt -pbt -pbt +iLD pbt pbt cLY +iLD +iLD pbt pbt -pbt -pbt -pbt +iLD xNR rSI vNu -cSI -rJK -vzH -lEB +cdL +oWs +qFZ syL +lsR clD -xNR +ydx xGp aFg aPe @@ -44667,14 +54794,14 @@ mCF mCF aOg aOg -aOg +iHE xxk cto etv +cto xxk mCF mCF -mCF aOg xGV aOg @@ -44684,8 +54811,8 @@ mCF aOg aOg cty -cty -ksX +cqZ +bxx bxx bxx ksX @@ -44713,75 +54840,75 @@ wUU "} (93,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -qhd -pGs -pGs -bAT -bAT -fal -cUq +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +qwQ +qwQ +qwQ +lTR +qwQ +qwQ +pAX +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +eDY +tNy +oLZ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +eDY +tNy +oLZ +aTY +lTR +lTR +lTR +lTR +uoh +lTR +lTR +lTR +cpF +lTR +scL +rMb +oGv +oGv +oGv +lnO +lTR +lTR +lTR +dXg +scL +hXR +cwE +cwE +hsl +hsl +giN +hyr sXb tzw aJP svH kBo -uxO +wBD ybm lWf jzZ @@ -44796,19 +54923,19 @@ khb urd ara ara -ara +iGm nZk hPD uQH -fkR +pVN aQc qqA -pbt +pZD +iLD lQO -kwa cvW pYV -aVE +iJk foz juL iBz @@ -44820,7 +54947,7 @@ yhy sJq iwo tMY -dKm +jTY xxo uLP xNR @@ -44834,11 +54961,11 @@ wpm vDC tEJ tEJ -bkM +pKs xxk toU xxk -xxk +noj mCF mCF hoC @@ -44849,35 +54976,35 @@ mCF aOg hoC hoC -cty +owM xxk cto etv +cto xxk -mCF meS aOg phA aOg aOg -mCF +wBc mCF mCF aOg aOg cty -cty -ksX +cqZ +cto cto cto ksX mCF mCF -mCF +wBc hoC cty cty -hoC +mCF mCF aOg mCF @@ -44895,75 +55022,75 @@ wUU "} (94,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -cBu -pGs -pGs -pGs -juW -juW -srq -fal -sXb +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +lTR +uYJ +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +qwQ +qwQ +dXg +qwQ +qwQ +eDY +tNy +oLZ +qwQ +aqh +lTR +qwQ +qwQ +lTR +qwQ +eDY +tNy +oLZ +lTR +lTR +aTY +lTR +lTR +dXg +lTR +lTR +lTR +lTR +lTR +scL +oGv +oGv +hXR +oGv +pfd +qgm +lTR +lTR +lTR +scL +oGv +cwE +bgE +yeJ +giN +hyr +iSW +mRq tzw aJP ogj akk -gzW +xUu gdN lWf jzZ @@ -44982,16 +55109,16 @@ ara nZk hPD uQH -fkR +pVN aQc qqA -pbt +qqA +iLD wno jCr -jCr iNE -hLA -jCr +xbA +akO jCr iNE jCr @@ -44999,11 +55126,11 @@ bLy xNR xNR xNR +ydx xNR +ydx xNR -xNR -xNR -xNR +ydx xNR xNR uul @@ -45017,26 +55144,26 @@ xdz yeG frQ bkM -xxk +rXS etv xxk xxk mCF mCF cty -hoC -cty +mCF cty cty -hoC cty +mCF cty cty +owM ksX cto etv -ksX -mCF +cto +xxk mCF aOg aOg @@ -45048,8 +55175,8 @@ mCF mCF aOg hoC -cty -ksX +cqZ +cto mxB cto ksX @@ -45063,7 +55190,7 @@ mCF mCF aOg mCF -hoC +mCF pGs pGs pGs @@ -45077,70 +55204,70 @@ wUU "} (95,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -cBu -cBu -cBu -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +xVw +qwQ +lTR +qwQ +qwQ +qwQ +qwQ +lTR +lTR +lTR +lTR +dXg +qwQ +qwQ +eDY +tNy +oLZ +pAX +qwQ +qwQ +qwQ +uoh +lTR +qwQ +eDY +tNy +oLZ +lTR +lTR +lTR +lTR +lTR +lTR +lTR +lTR +cpF +gVO +jaF +uTu +tmC +oGv +dOS +hXR +oGv +lnO +lTR +lTR +lTR +scL +oGv +cwE +bgE +orK iks +giN iSW -iSW -sXb +mRq tzw jzZ oos @@ -45154,37 +55281,37 @@ xWY tam lss rHv -keo +mXx tpL khb -urd +hIo hOv wYa god nZk hPD -uQH -fkR +mZi +mXx aQc qqA -pbt -wno -hen +qqA +iLD +nRy qlW oXE uYF hen sJx -uvG +kZn qvQ bLy -xNR -fFN +ydx +bAE kIg nmC ben -uIj -iwy +agi +hDk aZb rAy xNR @@ -45198,7 +55325,7 @@ eDF fXG gFx gFx -aFt +bkM aFt etv cto @@ -45206,38 +55333,38 @@ cto xxk ksX ksX +tdN ksX ksX ksX +tdN ksX ksX -ksX -ksX -ksX -ksX -cto -etv -ksX +eEd +eEd +iaM +hbi +iaM +eEd mCF mCF mCF mCF mCF hoC -hoC mCF mCF mCF mCF -hoC -cty -ksX +mCF +cqZ +cto cto xxk xEG jdm mCF -cty +mCF cty cty hoC @@ -45259,68 +55386,68 @@ wUU "} (96,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -pGs -pGs -pGs -bgE +nvv +mPk +mPk +mPk +mPk +mPk +mPk +rYC +qwQ +qwQ +qwQ +lTR +qwQ +qwQ +qwQ +qwQ +dXg +dXg +lTR +qwQ +pAX +eDY +tNy +wJl +rlI +rlI +rlI +rlI +rlI +rlI +rlI +mEy +tNy +oLZ +lTR +lTR +lTR +dXg +dXg +dXg +lTR +lTR +lTR +scL +hXR +oGv +oGv +hXR +oGv +oGv +oGv +lnO +lTR +lTR +gVO +lzD +upH +cwE bgE fuh -lzU +kWR +iSW iSW sXb ibo @@ -45332,55 +55459,55 @@ tzw tzw tzw sXb -xWY +ntw hvO bih rHv -cYT +hPD tpL khb urd pku -ara +xUH xHt nZk hPD -uQH -fkR +mZi +hPD aQc qqA -pbt -wno -hen +qqA +iLD +nRy vPj -hJQ +cHR uYF hen -cgp +hWA nBD qvQ -bLy +uXX xNR -duh +gZI vNu vNu -faG +iAc qFZ hPd wLv dSs -nwO +lvG gFx aFg qlx veZ gFx -gFx +veZ gFx sgz qhF qhF -lbD +qnN mUP nDl mUP @@ -45389,37 +55516,37 @@ qMW mUP mUP mUP +qMW mUP mUP +qMW mUP mUP mUP mUP mUP -mUP -mUP -ewO -ksX -cty -hoC +pGP +xxk +eEd hoC mCF mCF +mCF cty cty -hoC -aOg mCF +aOg mCF mCF mCF ksX cto cto +cto iDn mCF mCF -cty +mCF cty cty mCF @@ -45441,79 +55568,79 @@ wUU "} (97,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pGs -pGs -cBu -cBu -cBu -cBu -pGs -pGs -pGs -bgE +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +qwQ +uYJ +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +dXg +dXg +qwQ +qwQ +lTR +eDY +vss +vss +vss +vss +vss +vss +vss +vss +vss +vss +tNy +oLZ +lTR +lTR +lTR +dXg +dXg +lTR +lTR +lTR +lTR +scL +oGv +oGv +oGv +oGv +oGv +oGv +hXR +lnO +lTR +lTR +scL +oGv +hXR +cwE lat +hyr xYC dPR -nRH -sXb -sXb +giN sXb +mRq +mRq sXb vhw sXb sXb -sXb -sXb -sXb +mRq +mRq +xzj xWY hvO bih @@ -45528,12 +55655,12 @@ gfA eTP hPD uQH -fkR +pVN aQc qqA -pbt -btl -hen +hwa +iLD +wno pbt pbt uYF @@ -45541,17 +55668,17 @@ hen pbt pbt qvQ -uXX -xNR -kxW +bLy +ydx +seZ pbd mnm -vNu +kWj wkM thY mPI tQI -rby +snP wrB ffx ddc @@ -45562,8 +55689,8 @@ aZv vZm xGp vZs -aFt -cDc +cTw +cto cto mxB cto @@ -45572,19 +55699,19 @@ xxk cto cto cto -eBT -bnc -fhV -lYi -oeO +cto +kul +cto +xxk +cto cto cto cto etv +mxB ksX cty cty -cty mCF mCF mCF @@ -45594,14 +55721,14 @@ aOg mCF mCF mCF -mCF ksX cto cto +cto ksX mCF mCF -hoC +mCF mCF mCF aOg @@ -45623,79 +55750,79 @@ wUU "} (98,1,1) = {" wUU -vGb -jYB -oWA -oWA -oWA -rxp -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pGs -aFr -pGs -cBu -cBu -cBu -pHX -pGs -pGs -pGs -bgE +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +lTR +dXg +qwQ +qwQ +lTR +eDY +tNy +qLf +bJV +bJV +bJV +bJV +bJV +bJV +bJV +eha +tNy +oLZ +daS +lTR +lTR +lTR +dXg +lTR +aTY +lTR +lTR +scL +oGv +hXR +oGv +tgE +hXR +gJy +oGv +lnO +lTR +lTR +scL +vcz +hXR +cwE leU hyr -lzU -iSW +hyr nRH nRH -iSW -iSW -hyN -hyr +nRH +nRH +nRH +nRH +vqZ hyr +aXm rPT -iwQ -srY +rPT +qAp xWY xuW bih @@ -45710,63 +55837,63 @@ qBy fbQ hPD uQH -fkR +pVN aQc +qqA bft pbt -nnr -hen -jCr -jCr +kPj +xFO +stU uYF hen jCr jCr -qvQ +aAj cGd xNR gLZ vNu -vNu -vNu +pRs +ssZ vzH bNt syL -hXj -xNR +syL +ydx hwP vuE umT pNI tvI laa -gFx +veZ bpT hoK lWJ -aFt -ghs +bkM +dIK vTe vTe cto cto cto -vTe -aFt -aFt -aFt -aFt -aFt -aFt -aFt -aFt -aFt cto -etv +cto +cto +eBT +bnc +fhV +lYi +oeO +cto +ubJ +cto +eJS +owk ksX cty cty -cty mCF mCF mCF @@ -45775,15 +55902,15 @@ aOg aOg aOg aOg -mCF -mCF -xEG +wBc +glp +xxk cto cto -ksX +cba +vOo mCF mCF -hoC mCF mCF aOg @@ -45805,79 +55932,79 @@ wUU "} (99,1,1) = {" wUU -vGb -bOZ -jRC -jRC -aii -hGZ -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pGs -cBu -cBu -pHX -cBu -cBu -pGs -qhd -pGs -bgE +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +uYJ +lTR +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +lTR +vEg +qwQ +qwQ +eDY +tNy +nhY +rlI +rlI +rlI +rlI +bvF +rlI +hAI +qDr +tNy +oLZ +lTR +lTR +lTR +gVO +jaF +qgm +lTR +lTR +lTR +eGX +hKK +sRs +hXR +oGv +oGv +jSX +hKK +fLY +lTR +lTR +scL +hXR +oGv +cwE cTV +hyr sZe hyr iSW -mFF -iSW -iSW -iSW -oZA +giN iSW iSW +giN +vAz +giN +giN rbd hyr -iiV +jrq xWY hvO bih @@ -45893,63 +56020,63 @@ ufV ufV lTb fkR -aQc -nyO +pvs +qqA +gYg pbt qXn -oFq hiD hiD fQE oFq hiD -hiD +vqU oFq nzr xNR pYx -dXJ +sQs rSX alh owY klP -kPl +ryG cIP xNR -uYL +nWS aFg jHb -gFx +iwf xKq laa scD oKo laa gkx -aFt +pKs ghs cto cto gLo -ghs +oEX ghs vTe -aFt -gIB -uLY -oFd -cLD -oFd -tVA -kus +bkM +bkM +pKs +pKs +bkM +pKs +pKs +bkM aFt cto etv +cto ksX cty cty cty -cty mCF mCF mCF @@ -45958,22 +56085,22 @@ aOg aOg aOg mCF -mCF iDn +xxk cto cto -ksX +cba mCF mCF mCF mCF aOg mCF -hoC +mCF mCF aOg aOg -hoC +mCF pGs pGs pGs @@ -45987,79 +56114,79 @@ wUU "} (100,1,1) = {" wUU -vGb -bOZ -jRC -oAS -jRC -hGZ -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -rGe -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +xVw +lTR +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +qwQ +qwQ +qwQ +qwQ +qwQ +eDY +tNy +ctE +gYh +gYh +tSK +eQm +gYh +rHE +uKY +eDY +tNy +oLZ +lTR +aTY +lTR +scL +vGn +lnO +lTR +lTR +lTR +lTR +lTR +scL +hXR +oGv +oGv +lnO +lTR +lTR +lTR +lTR +eGX +sRs +oGv +cwE bgE rAj bGe hyr -bgE -bgE -pGs -gte -pth -bIQ iSW -iSW -wjG -bgE -pGJ +cZZ +iJa +nKy +pth +uBV +jjN +giN +hyr +hyr +qAp xWY hvO bih @@ -46072,30 +56199,30 @@ pVN xDy pVN pVN -fkR +pVN fkR fkR ojJ -jcT +kEV +iRZ pbt iLD -iLD -faC -jiF +jCr +fiv uWA iLD -faC -jiF +jCr +pbM iLD iLD xNR +ydx xNR +ydx xNR +ydx xNR -xNR -xNR -xNR -xNR +ydx xNR xNR ldJ @@ -46108,42 +56235,42 @@ scD qEf aZv pNI +bkM +bkM +pKs +pKs +bkM +bkM +pKs +bkM +bkM +gIB +uLY +oFd +cLD +oFd +mcs +kus aFt -aFt -aFt -aFt -aFt -aFt -aFt -aFt -aFt -iTF -tEJ -tEJ -tEJ -tEJ -tEJ -gbG -aFt -cto +wOC etv +cto ksX cty cty cty cty cty -cty hoC mCF aOg phA aOg mCF -hoC ksX cto cto +bng ksX mCF mCF @@ -46169,82 +56296,82 @@ wUU "} (101,1,1) = {" wUU -vGb -bOZ -jRC -pom -nSZ -hGZ -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -rGe -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +lTR +qwQ +dXg +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +qwQ +qwQ +lTR +eDY +tNy +ctE +gYh +oKi +opd +iEe +diK +rHE +oLZ +eDY +tNy +oLZ +lTR +lTR +lTR +eGX +hKK +fLY +lTR +lTR +lTR +lTR +lTR +scL +oGv +hXR +oGv +lnO +lTR +lTR +lTR +nFD +aTY +scL +oGv +cwE bgE jEZ cjf pyk -bgE +vEM bgE pGs pGs pGs moH +onj iSW -iSW -pGs +uXR pGs -nTG -fkj -tEJ -pEE +pGJ +gnx +hvO +bih mux pot kmb @@ -46254,7 +56381,7 @@ mvI wVE mvI mvI -hHt +pot fJb mvI wVE @@ -46266,7 +56393,7 @@ pGS pGS ihn uLY -pGS +mJh pGS uLY mvI @@ -46278,8 +56405,8 @@ wmC aED pie guE -rgr -epm +qus +scD gFx aFg umT @@ -46299,16 +56426,17 @@ wmC mvI uLY pKs -uLY +iTF tEJ tEJ tEJ tEJ tEJ gbG -aFt +upL cto etv +xxk ksX cty cty @@ -46316,14 +56444,13 @@ cty cty cty cty -cty -hoC +mCF aOg aOg aOg mCF -cty -ksX +cqZ +cto cto cto xEG @@ -46334,11 +56461,11 @@ mCF mCF mCF cty -hoC mCF mCF mCF -hoC +mCF +mCF pGs pGs hoC @@ -46351,83 +56478,83 @@ wUU "} (102,1,1) = {" wUU -vGb -npB -hjD -hjD -hjD -gOJ -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -rGe +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +daS +qwQ +dXg +qwQ +lTR +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +qwQ +eDY +tNy +ctE +gYh +dlh +ncn +lXv +sFc +rHE +oLZ +eDY +tNy +oLZ +lTR +lTR +lTR +lTR +lTR +lTR +lTR +lTR +cpF +lTR +lTR scL -xhb -wTQ -asJ -sOe -sOe -pGs -bgE +oGv +xzc +oGv +lnO +daS +lTR +lTR +lTR +lTR +scL +oGv +foQ +hET +vzB +ufn +vZN +nHy +hET pGs pGs bgE grT -ihG +gVq pGs pGs pGs -nTG -fkj -tEJ -pEE -tEJ +pGJ +xWY +hvO +bih +hvO tEJ rtV tEJ @@ -46448,7 +56575,7 @@ aLn tEJ uXw tEJ -rmN +azv tEJ tEJ qDt @@ -46458,10 +56585,10 @@ tEJ tEJ tEJ oMl -rwV -unm -jmB -woF +oKx +bGy +tak +pJs umT aJF uVu @@ -46473,14 +56600,14 @@ kTs lRz umT lIT -lCh +qeK bGy aLn tEJ tEJ tEJ rMN -yev +etf rMN tEJ tEJ @@ -46488,9 +56615,10 @@ tEJ hgB tEJ gbG -aFt -cto +upL +fky etv +cto ksX cty cty @@ -46498,14 +56626,13 @@ cty cty cty cty -cty hoC mCF aOg mCF hoC -cty -ksX +cqZ +cto cto cto iDn @@ -46519,12 +56646,12 @@ cty cty mCF mCF -hoC -pGs +mCF +mCF pGs mCF mCF -hoC +mCF pGs pGs pGs @@ -46533,70 +56660,70 @@ wUU "} (103,1,1) = {" wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -rGe -eGX -hKK -hKK -fLY -ijy -ijy -aFr -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +rYC +qwQ +qwQ +qwQ +dXg +qwQ +qwQ +qwQ +lTR +qwQ +qwQ +qwQ +qwQ +qwQ +eDY +tNy +ctE +rHE +psk +gyE +anA +uqU +ipi +oLZ +eDY +tNy +oLZ +lTR +lTR +lTR +lTR +lTR +lTR +uoh +lTR +stl +cpF +gVO +uTu +rKM +oGv +oGv +lnO +aTY +lTR +lTR +lTR +lTR +scL +oGv +rMb +oGv +oGv +vss +vss +gJy +dOS pGs pGs pGs @@ -46605,11 +56732,11 @@ pGs pGs pGs pGs -nTG +pGJ fQr -tEJ +hvO pXp -oGc +oZw oGc ngm oGc @@ -46626,7 +56753,7 @@ oGc oGc eAJ oGc -oGc +buB oGc eAJ oGc @@ -46662,7 +56789,7 @@ oGc oGc oGc cug -veW +cug cug oGc oGc @@ -46670,10 +56797,10 @@ oGc ezW tEJ gbG -aFt +upL cto etv -ksX +cto ksX ksX ksX @@ -46686,8 +56813,8 @@ mCF mCF mCF mCF -cty -ksX +cqZ +cto cto cto iDn @@ -46715,70 +56842,70 @@ wUU "} (104,1,1) = {" wUU -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -rGe -rGe -ijy -ijy -liD -ijy -ijy -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +qwQ +eDY +tNy +bLl +rHE +rjM +gLw +hso +ijO +rHE +wJl +mEy +tNy +oLZ +lTR +uoh +lTR +lTR +lTR +lTR +lTR +lTR +lTR +lTR +scL +oGv +oGv +hXR +oGv +pfd +jaF +oAC +lTR +lTR +lTR +eGX +hKK +sRs +oGv +kin +vss +vss +oGv +hXR pGs pGs pGs @@ -46787,11 +56914,11 @@ pGs pGs pGs pGs -nTG -lBS -rMN +pGJ +arg +oMs qPs -uLY +lzu rBP afx rBP @@ -46810,7 +56937,7 @@ gvE uLY rBP rBP -rBP +pqC rBP rBP dYy @@ -46826,19 +56953,19 @@ oBQ frQ gFx vZm -uzP -cJX -gFx +skY +mTD gFx gFx gFx gFx +lFA wba nNz gFx mXV lMv -qxL +oDz gFt rBP gvE @@ -46852,24 +56979,24 @@ uLY iKa xAO gmT -aFt +upL cto etv -ksX +xxk ksX cFe cFe cFe ksX +iFb +iFb cty -cty -cty -mCF mCF mCF mCF mCF -ksX +cba +cto cto cto ksX @@ -46883,13 +57010,13 @@ cty cty mCF mCF -mCF +vOo mCF aOg phA aOg mCF -hoC +mCF pGs pGs pGs @@ -46897,70 +57024,70 @@ wUU "} (105,1,1) = {" wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -rGe -rGe -ijy -ijy -ijy -ijy -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +xVw +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +lTR +eDY +vss +vss +gLw +sKF +aSt +gLw +pNk +aSt +vss +vss +tNy +oLZ +lTR +lTR +lTR +lTR +daS +lTR +lTR +lTR +lTR +lTR +scL +oGv +hXR +oGv +tmC +oGv +oGv +lnO +lTR +lTR +daS +lTR +lTR +scL +hXR +oGv +vss +gMi +oGv +oGv pGs pGs pGs @@ -46969,66 +57096,66 @@ pGs pGs pGs pGs -wOO -wOO -lcP -bwd -wOO -wOO -nTG -nTG -nTG -nTG -nTG +juW +wUj +bLN +viP +wUj +juW nTG nTG nTG +lNb +vqd +lNb nTG -rKe nTG nTG +pNf +vqd +lNb nTG nTG nTG wVf wVf wVf +sPs wVf wVf -wVf -ezB +qUf uIH -iTO +jQg wVf +qhZ wVf +qhZ wVf +qhZ wVf -wVf -wVf -wVf -wqb +wjV abE -wqb -wqb -wqb +wjV +cdb +cdb slG fUJ kAm -wqb -wqb -wqb -wqb +cdb +wjV +cdb +wjV abE pYn pYn +kgw pYn pYn +kgw pYn pYn -pYn -pYn -pYn -pYn +kgw +kgw pYn uLY pEE @@ -47036,22 +57163,22 @@ tEJ buH aFt cto -etv -ksX -ksX +toU +cto +cto qYE cto cto -ksX -ksX -cty +cto +ghs +iFb cty cty -hoC -jdm mCF +jdm mCF -ksX +cba +xxk xxk cto ksX @@ -47078,72 +57205,72 @@ pGs wUU "} (106,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -rGe -rGe -rGe -rGe -rGe -pGs -aFr -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +qwQ +daS +qwQ +lTR +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +dXg +dXg +qwQ +eDY +vss +czA +gLw +dXr +qyW +idr +gLw +gLw +czA +vss +tNy +wJl +rlI +rlI +rlI +rlI +lTR +rlI +lTR +lTR +lTR +lTR +scL +oGv +oGv +ibs +lQW +gux +kGD +kgm +mQG +lTR +lTR +aTY +lTR +scL +oGv +nee +vss +gMi +oGv +qFe +oGv pGs pGs pGs @@ -47151,27 +57278,27 @@ pGs pGs pGs pGs -wOO -obR -iVt -pZl -rZS -wOO -eyt -eyt -eyt -eyt -eyt -eyt -eyt -eyt -wqb +juW +faP +ftF +bEX +pnL +juW +gDh +xJZ +xJZ +xJZ +xJZ +xJZ +xJZ +gDh +uEc viK -jKg +gAV +xJZ wqb -eyt -eyt -eyt +kBZ +hPj wVf wdb qyk @@ -47190,20 +57317,20 @@ qDw wVf pBS viK -wqb +xJZ yeF -wqb -wqb -wqb -wqb -wqb +cdb +cdb +wjV +cdb +cdb kqE -wqb +cdb rRq usB pYn qTz -cDk +bjP bjP sre bjP @@ -47212,7 +57339,7 @@ iIt xFE cBq pYn -uLY +tVl fPn aBB tuL @@ -47225,18 +57352,18 @@ mUP uVy mUP qWw -ksX -cty +cto +iFb cty cty hoC mCF jdm -mCF ksX cto cto -ksX +cto +xxk mCF aOg rWN @@ -47245,7 +57372,7 @@ hoC cty cty cty -hoC +mCF mCF mCF aOg @@ -47260,127 +57387,127 @@ pGs wUU "} (107,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +xVw +qwQ +lTR +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +dXg +lTR +dXg +qwQ +eDY +tNy +aJD +eQm +jFt +qCE +abu +tnD +hFM +qLf +eha +vss +vss +vss +vss +vss +vss +stl +lTR +lTR +lTR +lTR +cpF +eGX +sRs +lsN +hXR +ibs +eFB +kGD +mnz +lTR +lTR +lTR +gVO +jaF +uTu +oGv +oGv +vss +vss +oGv +oGv +oGv pGs pGs -wOO -wOO -wOO -wOO -wOO -wOO -rsB -tlT -ljx -bgl -wOO -wqb -wqb -wqb -wqb -wqb -wqb -wqb -wqb -wqb +juW +juW +juW +juW +juW +juW +xzr +eFJ +trh +qdk +wUj +xJZ +xJZ +xJZ +xJZ +xJZ +xJZ +xJZ +xJZ +xJZ viK gAV +xJZ wqb -eyt -eyt -eyt +kBZ +hPj wVf xLE ioc vqY oaR -wVf +sPs gwG pJn krP -wVf +qhZ gwG xOo xOo xOo nHA -wVf +qhZ uqw viK xJZ xJZ xJZ ccU -dbm +sCA aKk xJZ xJZ -wqb +cdb wMn viK lhJ @@ -47406,24 +57533,24 @@ cto cto cto cto -etv -ksX +toU +cto cty cty cty cty mCF mCF -mCF -xEG +glp +xxk cto cto -ksX +rgg mCF mCF aOg mCF -hoC +mCF cty cty cty @@ -47442,106 +57569,106 @@ pGs wUU "} (108,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pHX -cBu -cBu -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +daS +lTR +qwQ +qwQ +qwQ +lTR +qwQ +lTR +qwQ +lTR +dXg +lTR +qwQ +eDY +tNy +ctE +hFM +fQh +gLw +oMg +mhf +eQm +oLZ +eDY +tNy +qLf +bJV +bJV +bJV +lTR +bJV +lTR +lTR +lTR +cpF +lTR +lTR +scL +oGv +vss +oGv +hwL +pun +oTE +coQ +lTR +lTR +scL +lsN +oGv +dOS +nee +vss +gMi +oGv +hXR +oGv +hXR pGs -pGs -wOO -hSU -cIR -lAJ -wvi -wOO -rsB -hNC -rEY -hVM -pJy -lVc +juW +wGs +oVm +fLZ +esB +juW +xzr +hus +wuR +rVS +kSN lVc lVc lVc lVc lVc +uTq lVc lVc lVc qRP xJZ +xJZ wqb -eyt -eyt -ouy +kBZ +wVf wVf idw jQB psb idw -wVf +sPs gwG pJn krP @@ -47563,14 +57690,14 @@ iXR xJZ xJZ cYB -xJZ +gDh viK -pYn +kgw nXB jvh mPf qdd -wot +dhp pYn wic pqj @@ -47581,25 +57708,25 @@ pEE tEJ uLY bkM +pKs bkM bkM bkM -bkM -bkM +pKs bkM cto etv -ksX +xxk cty cty cty cty mCF mCF -mCF iDn cto cto +cto ksX hoC mCF @@ -47624,85 +57751,85 @@ pGs wUU "} (109,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pGs -pGs -pGs -pGs -pGs -pGs -wOO -sSm -tlT -tlT -rsB -oSX -rsB -tlT -ljx -bgl -wOO +nvv +mPk +mPk +mPk +mPk +mPk +mPk +rYC +qwQ +lTR +qwQ +qwQ +qwQ +lTR +dXg +lTR +lTR +qwQ +lTR +lTR +qwQ +eDY +tNy +ctE +gYh +xuJ +fgW +npF +trB +gYh +eBm +eDY +tNy +oLZ +lTR +lTR +lTR +lTR +lTR +lTR +lTR +lTR +lTR +lTR +lTR +scL +oGv +vss +vss +oGv +oGv +ecX +lTR +lTR +lTR +scL +oGv +oGv +oGv +hXR +vss +gMi +oGv +oGv +oGv +eCg +ltB +szp +qdk +eFJ +cgj +iPH +szp +xzr +eFJ +trh +qdk +wUj gtz sKu xJZ @@ -47712,26 +57839,26 @@ xJZ xJZ xJZ xJZ -viK +mvA +xJZ xJZ wqb -eyt -eyt -ouy +kBZ +wVf swj idw idw eRD gyX -anO +eTb mnc xMq krP wVf wVf -wVf -ann -wVf +xvF +aiR +qhZ wVf wVf okI @@ -47739,21 +57866,21 @@ lab lVc lVc lVc -gjz +jfw okJ gjz lVc iFZ -cYB +xJZ xJZ viK pYn -wkF -jvh -gdw -bXI -xxc -efu +diQ +hhW +tKI +doO +bBo +bMf rPD bTA iOQ @@ -47765,23 +57892,23 @@ uLY pKs hrI pXG -pKs +bkM vAR iDS bkM cto etv -ksX +cto cty cty cty cty cty mCF -mCF -ksX +iDn cto cto +qEG ksX cty hoC @@ -47806,100 +57933,100 @@ pGs wUU "} (110,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pGs -pGs -pGs -pGs -pGs -pGs -wOO -hQH -cMy -gkS -oDN -pJS -oDN -gkS -jTe -bgl -wOO -wqb -wqb -wqb +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +uYJ +lTR +qwQ +qwQ +qwQ +qwQ +lTR +qwQ +qwQ +qwQ +qwQ +dXg +qwQ +eDY +tNy +ctE +hFM +aSt +xQJ +uVR +saQ +hFM +oLZ +eDY +tNy +oLZ +dXg +dXg +lTR +uoh +lTR +lTR +lTR +lTR +lTR +lTR +lTR +scL +oGv +vss +vss +jSX +hKK +wDi +coQ +lTR +daS +scL +oGv +rKM +hXR +oGv +vss +vss +hmR +oGv +oGv +oGv +oDU +szp +ekg +noC +ktN +qSj +nGE +qSj +ktN +che +qdk +juW wqb -tWA -gey -tWA +crC +xJZ +ryD +xJZ +ryD +joV wqb wqb viK -wXu +xJZ +tBm wqb -eyt -eyt -ouy +kBZ +wVf unw idw idw @@ -47911,32 +58038,32 @@ xMq fqY wVf qPk -rHQ +uFJ xOo uFJ eMD wVf wVf wVf +qhZ wVf -wVf -wVf +qhZ wVf vOr -wVf +qhZ wVf viK xJZ xJZ viK pYn -uGZ -aad -sau -pjz -jcZ +pYn +kgw +pYn +pYn +kgw vHs -eph +htU pqj ydI pYn @@ -47944,31 +58071,31 @@ jDW uVY sIU uLY -vGD +vke iad fkj pKs tXF uhD bkM -cto +rmr etv -ksX -cty +cto +iFb cty cty cty cty cty -hoC -ksX +cqZ +ghs xxk cto ksX cty cty cty -hoC +mCF mCF mCF mCF @@ -47988,100 +58115,100 @@ pGs wUU "} (111,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pGs -pGs -pGs -pGs -pGs -pGs -pGs -wOO -eWC -tlT -tlT -rsB -oSX -rsB -tlT -ljx -bgl -wOO -eyt -eyt -jqw -kbQ -kbQ -kbQ -kbQ -kbQ -tWA -wXs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +qwQ +lTR +qwQ +lTR +qwQ +lTR +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +qwQ +eDY +tNy +ctE +gYh +hFM +gYh +gYh +hFM +gYh +uKY +eDY +tNy +oLZ +dXg +lTR +nFD +lTR +lTR +lTR +dXg +eDY +vss +caD +lTR +scL +oGv +dOS +oGv +pfd +qgm +lTR +lTR +lTR +lTR +scL +hXR +oGv +vss +inN +abK +abK +inN +inN +inN +inN +inN +tmm +qdk +eFJ +eFJ +xzr +szp +xzr +eFJ +trh +qdk +juW +kBZ +kBZ +joV +keY +xJZ +ryD +ryD +ryD +ryD +viK +xJZ wXu wqb -eyt -eyt -ouy +kBZ +wVf wVf tiw vPi @@ -48091,7 +58218,7 @@ wVf hXv pJn krP -xvF +qhZ gwG xOo cvX @@ -48106,17 +58233,17 @@ liE jZw xMq vnU -wVf +qhZ viK xJZ mdj -viK -pYn -pYn -pYn -pYn -pYn -pYn +icJ +cYB +eoq +xJZ +uEc +xJZ +iGM pYn jjl nkF @@ -48135,9 +58262,8 @@ hNc bkM cto etv -ksX -cty -cty +cto +iFb cty cty cty @@ -48145,14 +58271,15 @@ cty cty ksX cto +bdc cto ksX cty cty cty -hoC mCF mCF +aOg mCF mCF mCF @@ -48170,100 +58297,100 @@ pGs wUU "} (112,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -vGb -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -cBu -pGs -pGs -pGs -pGs -pGs -pGs -pGs -wOO -hMf -tlT -tlT -rsB -oSX -rsB -tlT -ljx -bgl -wOO -eyt -eyt -eyt -mED -sgk -kbQ -dNO -kbQ -gey -wXs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +lTR +lTR +qwQ +lTR +lTR +dXg +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +eDY +tNy +lmS +bJV +bJV +bJV +qmF +bJV +bJV +nHH +eDY +tNy +oLZ +lTR +lTR +lTR +lTR +dXg +lTR +dXg +lTR +tNy +caD +gVO +uTu +rfV +vss +oGv +oGv +pfd +jaF +jaF +jaF +jaF +uTu +oGv +nee +vss +oGv +rMb +oGv +oGv +rKM +oGv +oGv +rkH +szp +ekg +eFJ +eFJ +xzr +szp +xzr +eFJ +trh +qdk +juW +kBZ +kBZ +kBZ +xJZ +quP ryD -tWA -eyt -eyt -eyt +fbr +ryD +ryD +viK +sHO +ryD +wqb +kBZ +hPj wVf wVf wVf @@ -48273,9 +58400,9 @@ wVf hJl pJn krP -xvF +qhZ gwG -epU +wOS wrv cNh eOu @@ -48283,26 +58410,26 @@ kMf apI uoO mnc -icX +jJX mnc mnc xMq -vVC -wVf -gMs +agJ +qhZ +lab +lVc lVc -rPe pfr pbw -emX lVc -fvH -elO -kTx +lVc +qjg +lVc +iFZ +pIj +pYn +pYn pYn -aoU -aoU -aoU pYn kus gHH @@ -48313,139 +58440,139 @@ prY fkj pKs tXF -mNj -bkM +rBi +pKs cto etv +xxk +owM +iFb +iFb +iFb +iFb +iFb ksX -cty -cty -cty -cty -cty -cty -cty -ksX +cto cto xxk ksX -cty -cty -cty -cty -hoC -mCF -mCF -mCF +ksX +ksX +xxk +xxk +xxk +ksX +iDn +iDn mCF mCF mCF cty -hoC +mCF hoC mCF mCF mCF -mAz +hoC pGs pGs wUU "} (113,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -pGs -pGs -pGs -pGs -pGs -pGs -pGs -wOO -lHE -jtU -jtU -qId -wOO -obR -iVt -pZl -rZS -wOO -eyt -eyt -eyt -jqw -jqw -lkK -kbQ -lkK -tWA -wXs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +xVw +qwQ +lTR +qwQ +qwQ +dXg +dXg +lTR +lTR +qwQ +lTR +lTR +lTR +qwQ +eDY +tNy +wJl +rlI +rlI +rlI +rlI +rlI +rlI +rlI +mEy +tNy +dyo +jaF +jaF +jaF +jaF +qgm +dXg +dXg +lTR +stl +cpF +scL +oGv +oGv +oGv +vlB +oGv +oGv +oGv +oGv +oGv +tmC +oGv +oGv +fxK +vss +vss +dXg +eCg +iZP +tXv +tXv +tXv +oGv +szp +sYi +gXO +aZX +dCE +juW +sic +ftF +bEX +pnL +juW +kBZ +kBZ +kBZ +xJZ +xJZ ryD -tWA -jqw -eyt -eyt +ryD +ryD +ryD +viK +xJZ +ryD +ryD +kBZ +hPj hHR idw vco @@ -48455,7 +58582,7 @@ wVf jhe pJn krP -xvF +qhZ gwG xOo eqB @@ -48466,22 +58593,22 @@ eOZ hzm uiy wVf +qhZ wVf -wVf -qIT -wVf -wVf -wVf -wVf -wVf +bdJ wVf wVf -wVf -wVf -wVf -wVf -xhj -pYn +gfj +fEA +xJZ +xJZ +xJZ +xJZ +xJZ +xJZ +vlw +viK +wXu vHs vHs vHs @@ -48497,33 +58624,33 @@ bkM ncX bkM bkM -cto +xag etv -ksX -ksX -ksX -ksX -ksX -ksX -ksX -ksX -ksX -xxk cto -ksX -ksX -ksX -ksX -ksX -ksX -ksX -iDn +iaM +cto +cto +cto +cto +cto +cto +cto +cto +cto +cto +cto +cto +wXC +cto +cto +cto +xxk xEG mCF mCF mCF mCF -hoC +mCF mCF mCF mCF @@ -48534,106 +58661,106 @@ pGs wUU "} (114,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -wUU -wUU -wUU -wUU -wUU -wUU wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -wUU -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +qwQ +daS +qwQ +qwQ +lTR +lTR +qwQ +qwQ +lTR +qwQ +lTR +dXg +qwQ +eDY +vss +vss +vss +vss +vss +vss +vss +vss +vss +vss +tNy +hNq +oGv +oGv +oGv +oGv +lnO +lTR +lTR +lTR +lTR +lTR +pgg +oGv +oGv +rMb +vss +oGv +hXR +oGv +oGv +oGv +nwq +iaH +kAN +nRU +nRU +nRU +rQU +ihY +cCk +nwq +cFw +voJ pGs wOO wOO wOO wOO -pAu -wOO -wOO -lcP -wPN +wkt wOO +nUf +cbq +hHE +nUf wOO wOO wOO wOO -eyt -eyt -lkK -lkK -jqw -wqb +kBZ +kBZ +ryD +ryD +ryD +ryD lDm +xJZ +joV ryD -gey -kbQ -eyt -eyt +kBZ +hPj wVf dtu rTu hkZ xRx -wVf +sPs xsi pJn krP @@ -48646,24 +58773,24 @@ vEa wVf wVf wVf -wVf +qhZ wVf ezZ -uFJ +lyp pJn pBb wVf -grm -mpt -czl +qhZ +wVf +qhZ +wVf wVf -ixh -xKL -knW -baH wVf +wVf +wVf +xJZ viK -vpF +xJZ vHs eBs xcf @@ -48678,16 +58805,16 @@ aWP rBP rBP lZb -bkM +wMj cto etv vTe -cto +iaM mxB cto cto xxk -xxk +wNz xxk cto cto @@ -48716,71 +58843,71 @@ pGs wUU "} (115,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +qwQ +lTR +qwQ +qwQ +lTR +qwQ +qwQ +lTR +qwQ +dXg +dXg +lTR +qwQ +eDY +tNy +qLf +bJV +bJV +bJV +bJV +bJV +bJV +bJV +eha +tNy +hNq +hXR +oGv +oGv +oGv +lnO +lTR +lTR +lTR +lTR +lTR +scL +oGv +tmC +vss +oGv +oGv +oGv +rKM +oGv +hXR +ihY +oDB +cFw +dwN +jks +jks +epN +cFw +cFw +ykS pGs pGs pGs @@ -48795,25 +58922,25 @@ iVt pZl qId cud -hnS +kOS dWl wOO -eyt -eyt -eyt -jqw -eyt +kBZ +kBZ +kBZ +ryD +kBZ wqb smE xJZ -tWA -mED -jqw -eyt +ryD +jeW +joV +hPj wVf aHM iYE -idw +dos idw wVf ivX @@ -48821,9 +58948,9 @@ pJn krP wVf wVf -wVf -iMq -wVf +qhZ +qto +qhZ wVf wVf xdJ @@ -48834,23 +58961,23 @@ unh ydQ eKw mnc -dSM +ilZ mnc bCA -kGT +fVt wVf -kEg -xOo -xOo -nHA +ixh +xKL +baH wVf +xJZ viK -wXu +xJZ vHs imz -sHa -kWB -sHa +mwD +ezb +wWd ggk vHs xlb @@ -48860,13 +58987,13 @@ tEJ tEJ tEJ twm -bkM -gLo +lNb +cto etv vTe dfP cto -cto +wXC cto cto xxk @@ -48877,7 +59004,7 @@ gLo xxk cto cto -cto +fLu cto cto cto @@ -48898,78 +59025,78 @@ pGs wUU "} (116,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +xVw +qwQ +lTR +lTR +qwQ +lTR +qwQ +qwQ +qwQ +qwQ +lTR +qwQ +qwQ +qwQ +eDY +tNy +oLZ +lTR +qwQ +dXg +qwQ +qwQ +lTR +dXg +eDY +tNy +hNq +oGv +oGv +hXR +lsN +lnO +lTR +daS +lTR +lTR +lTR +scL +oGv +oGv +vss +gJy +hXR +oGv +oGv +pox +oGv +ihY +cFw +cel +fSa +jks +coX +mUz +cFw +cFw +qtv pGs pGs pGs pGs pGs wOO -eFA +faX kCA kCA cbq @@ -48980,24 +59107,24 @@ vmc wYF rsB wOO -eyt -eyt -eyt -eyt -eyt +kBZ +kBZ +kBZ +kBZ +kBZ wqb viK xJZ -tWA -kbQ -jqw +ryD +ryD +ryD wVf wVf rpT iHh eRD jSN -tUI +ylX mnc xMq oVr @@ -49006,36 +59133,36 @@ uFJ uFJ xOo uFJ -wOk +rsL uFJ kMN ppw irj -wOk +rsL diW pJn xOo rwh wVf -gwG +vLU pJn xOo -uHt +wku +cKC xOo -cSb -xOo -ndl +jcC wVf -viK xJZ -vHs -imz -kWB +viK +oef +fEz +fpY +eQC kWB kWB fpY gOe -nkP +rQk tEJ uXw tEJ @@ -49043,10 +59170,10 @@ tEJ tEJ lHH bkM -ksX +mdN bnB -ksX -ksX +mdN +eEd ksX ksX ksX @@ -49059,9 +59186,9 @@ ksX ksX ksX ksX -ksX iDn -xEG +iDn +xxk xxk cto ksX @@ -49080,71 +59207,71 @@ pGs wUU "} (117,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +rYC +qwQ +lTR +lTR +qwQ +qwQ +lTR +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +eDY +tNy +oLZ +qwQ +lTR +dXg +dXg +qwQ +qwQ +dXg +eDY +tNy +hNq +oGv +upH +oGv +oGv +lnO +lTR +lTR +lTR +lTR +lTR +scL +upH +oGv +hXR +vss +oGv +oGv +jju +ihY +ihY +hQl +vyp +cFw +jks +jks +jks +cFw +cFw +cFw +sVH pGs pGs pGs @@ -49159,27 +59286,27 @@ tlT ljx cbq tlT -kCA +loh rsB poE tlT hlp -eyt -eyt -eyt +kBZ +kBZ +kBZ wqb viK xJZ -tWA -kbQ -kbQ -xvF +ryD +ryD +ryD +sPs cYa lVB lZU vqY tiw -wVf +sPs oXp jVK uUS @@ -49188,36 +59315,36 @@ yeY fER yeY yeY -auf +haX yeY haX cdy jjE -auf +haX vvS -xMq +rKy xOo hoG -wVf -jMU +qhZ +vLU eye xOo -ifw -xOo -qAU +wku xOo +qEa iqW wVf -viK xJZ -vHs -iSc +viK +oef +jgY kWB -sHa kWB +mXi +rmf kWB ltA -tEJ +jpM tEJ mQC aBB @@ -49225,10 +59352,10 @@ jjg tEJ rtu bkM -iKy -etv -ksX -cty +iaM +hbi +iaM +eEd cty cty cty @@ -49242,10 +59369,10 @@ cty cty hoC mCF -mCF iDn xxk -cto +xxk +ghs ksX cty mCF @@ -49262,104 +59389,104 @@ pGs wUU "} (118,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +uYJ +qwQ +lTR +qwQ +qwQ +lTR +lTR +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +eDY +tNy +mIU +jaF +jaF +jaF +jaF +qgm +vEg +qwQ +eDY +tNy +jdu +hXR +oGv +oGv +hXR +lnO +lTR +lTR +lTR +stl +lTR +scL +oGv +oGv +jks +gkG +nRU +jjj +vuQ +ihY +ihY +ihY +iaT +cFw +rSl +utZ +coX +cFw +dvT +cFw +pkj +wUF pGs pGs pGs pGs wOO -wHW +mNm kCA tlT cbq dNU kDd cbq -tlT +aFK kCA -rsB +jaL poE tlT mQh -eyt -eyt -jqw -tWA -uPo -fNn -tWA -kbQ -kbQ -xvF +kBZ +kBZ +ryD +hcI +wXs +xJZ +ryD +ryD +ryD +sPs etE swi idw -idw +izy hJw wVf hek @@ -49380,54 +59507,54 @@ mLt pJn xOo oCN -wVf -jMU +qhZ +vLU nmQ ghb wVf gwG xOo -xOo -nHA +mAP wVf -viK xJZ -vHs -oDF -kWB -sHa +tYw +oef +jgY kWB +wmt +sgp +eQC kWB ltA -tEJ +jpM tEJ uXw tEJ tEJ tEJ twm -bkM +lNb +iaM +gAK cto -etv ksX cty cty cty cty cty -cty mCF mCF -hoC +mCF cty cty cty mCF mCF -mCF ksX +mxB cto -cto +bng ksX cty mCF @@ -49444,73 +59571,73 @@ pGs wUU "} (119,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +qwQ +qwQ +qwQ +qwQ +lTR +lTR +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +lTR +eDY +tNy +igB +oGv +oGv +oGv +oGv +lnO +lTR +lTR +eDY +tNy +igB +oGv +oGv +tmC +oGv +pfd +jaF +jaF +jaF +stl +gbE +uTu +oGv +hXR +ihY +cFw +kmo +cFw +epN +qkq +xfz +ihY +nwq +cFw +cFw +fWW +jks +jks +cFw +tkh +cFw +nwq +cFw pGs pGs pGs @@ -49519,24 +59646,24 @@ pNJ kCA tlT mYd -dQq +oSe ssg rKL tlT kCA -aIq -ewn +cil +cuc tlT -vbB -eyt -jqw -kbQ -tWA -uPo -fNn -gey -kbQ -kbQ +mrT +kBZ +ryD +ryD +ryD +wXs +xJZ +ryD +ryD +ryD wVf wVf pIC @@ -49544,9 +59671,9 @@ hty wVf wVf wVf -wVf -vOr -wVf +qhZ +jsf +qhZ wVf eyt eyt @@ -49560,7 +59687,7 @@ eHB wVf dQr pJn -xOo +bPL tUd wVf rmL @@ -49568,46 +59695,46 @@ qsh oCy wVf cur -bhp -crx +syb gEO wVf +rDD viK -xJZ -vHs -imz -kWB +oef +jgY kWB +cAx +aXA kWB kWB xyJ -tym +aFX tEJ uXw tEJ tEJ tEJ twm -bkM -cto +lNb +iaM etv +cto ksX ksX -ksX -cty +iFb cty cty hoC mCF jdm -hoC +mCF hoC cty mCF mCF mCF -jdm -ksX +cba +xxk cto cto ksX @@ -49626,107 +59753,107 @@ pGs wUU "} (120,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +uYJ +lTR +qwQ +qwQ +qwQ +qwQ +lTR +lTR +lTR +lTR +qwQ +qwQ +lTR +eDY +tNy +igB +oGv +lsN +tmC +hXR +pfd +jaF +jaF +tGw +tNy +igB +oGv +hXR +oGv +oGv +oGv +oGv +oGv +oGv +stl +mmO +oGv +oGv +gfk +ihY +xnS +vyp +jks +cFw +cFw +cFw +cFw +cFw +cFw +gJN +wop +jks +rUI +nwq +cFw +cFw +cFw +cFw +nwq +cFw pGs qnW bgl kCA tlT mYd -mdU +iht hTd rKL tlT kCA aIq tlT -tlT -vbB +eGL +mrT +kBZ +tkF +ryD +ryD +wXs +xJZ +ryD +ryD eyt -jqw -lkK -tuO -uPo -fNn -tWA -kbQ -mED eyt wVf wVf wVf wVf eyt -eyt wqb +wXu viK xJZ wqb @@ -49741,26 +59868,26 @@ uoO mnc kCT mnc -xMq -xOo +aQR +shP gBV wVf +xvF wVf +xvF wVf wVf wVf wVf wVf -wVf -wVf -wVf +sKu viK xJZ vHs imz -sHa -kWB -sHa +wDv +bSu +wdI szh vHs iad @@ -49771,13 +59898,12 @@ aBB wXD pdr bkM -cto +kRp mNO qWw cto -ksX -cty -hoC +xxk +iFb hoC mCF mCF @@ -49786,10 +59912,11 @@ mCF mCF mCF mCF -aOg mCF +aOg mCF -xEG +ksX +xxk cto cto cto @@ -49808,98 +59935,98 @@ pGs wUU "} (121,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -cqC -bgl +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +dXg +qwQ +qwQ +btU +tNy +igB +hXR +rMb +oGv +oGv +oGv +oGv +oGv +eoj +tNy +igB +oGv +oGv +oGv +rKM +fkd +oGv +hXR +svt +vss +mmO +dOS +oGv +dXg +ihY +xnS +fPq +jks +upb +upb +jks +jks +upb +upb +jks +jks +qTE +cFw +cFw +cFw +jsG +jks +cFw +cFw +nwq +nwq +oSX +mvO kCA tlT mYd -dQq +hbP iIC rKL tlT kCA -aIq +cil wae sdZ hwZ -eyt -eyt -kbQ -yeK -wXs +kBZ +kBZ +ryD +ryD +apj +xJZ +ryD ryD -tWA -kbQ kbQ kbQ eyt @@ -49907,8 +60034,8 @@ eyt eyt eyt eyt -eyt wqb +xJZ viK xJZ wqb @@ -49933,9 +60060,9 @@ eij wVf ieu qAr -ccK mIG wVf +eFW viK xJZ vHs @@ -49953,12 +60080,12 @@ ciR wVE fiA bkM -cto -cto -etv -cto -ksX -mCF +eQr +iaM +hbi +gMm +xxk +iFb mCF mCF aOg @@ -49970,9 +60097,9 @@ mCF aOg aOg mCF -mCF -ksX -cto +iDn +xxk +sgl cto cto cto @@ -49990,76 +60117,76 @@ pGs wUU "} (122,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +xVw +lTR +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +qwQ +dXg +dXg +qwQ +tqV +mEy +tNy +jKW +hej +dOS +oGv +oGv +rKM +oGv +fZX +nOM +tNy +jKW +hej +rMb +oGv +oGv +oGv +oGv +oGv +svt +tNy +mmO +oGv +oGv +oGv +cFw +ngY +jks +qVb +jks +kPZ +cFw +cFw +cFw +nwq +iaH +jjj +jJC +pFd +vuQ +cel +jks +jks +nwq +cFw +cFw +fsC wOO fFx kCA @@ -50068,7 +60195,7 @@ mYd imZ jPe rKL -tlT +tOd kCA rpH wOO @@ -50076,12 +60203,12 @@ wOO wOO wOO wOO +oSX wOO -wqb -wXs +jPM xJZ -wqb -kbQ +xJZ +ryD lFk kbQ kbQ @@ -50089,8 +60216,8 @@ eyt eyt jqw eyt -eyt wqb +xJZ viK xJZ wqb @@ -50100,24 +60227,24 @@ wqb wqb wVf wVf +xvF wVf -wVf -wVf +xvF wVf umA mve xOo hoG -wVf +qhZ xOo ppw xOo wVf wpM vpV -aOi -dlI +nmN wVf +xJZ viK xJZ vHs @@ -50127,20 +60254,20 @@ vHs vHs vHs vHs +eHl +ufB uXS -imF uXS uXS +uwN +eHl uXS -ykC uXS uXS -aFt -aFt -etv +hbi cto -iDn -mCF +xxk +vhI mCF mCF aOg @@ -50148,18 +60275,18 @@ aOg mCF mCF mCF -hoC +mCF lVQ xGV mCF -mCF -xEG -xxk -cto +iDn xxk +qAS +fYs +dDG wws poC -ksX +cba aOg aOg aOg @@ -50172,85 +60299,85 @@ pGs wUU "} (123,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -wOO +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +qwQ +qwQ +qwQ +qwQ +qwQ +pdK +pdK +pdK +pdK +kgp +pdK +pdK +gVP +aQN +jzB +aQN +geK +qNu +wlB +wlB +wlB +ghW +mnU +aQN +jzB +aQN +geK +wlB +wlB +lTg +ghW +wlB +mnU +suY +aQN +hMg +lTg +wlB +wlB +res +res +kZe +lrR +jks +qKM +mUz +cFw +cFw +ihY +cFw +ewv +jks +nwq +gwD +cFw +jks +jks +cFw +cFw +cFw +nwq +oSX vQL kCA tlT mYd wRi -iIC +leO rKL -tlT +mSf kCA rsB wOO @@ -50259,27 +60386,27 @@ ubK sLi pkT pAZ -wqb -viK +wOO +rWY xJZ -wqb +xJZ +ryD +kbQ +kbQ +kbQ kbQ -lkK -lkK -jqw -jqw jqw kbQ eyt -eyt wqb -hUK -lVc +rDD +wng lVc lVc lVc lVc lVc +elO lVc lVc lVc @@ -50297,32 +60424,32 @@ wVf wVf pRy vpV -qoS mIG -wVf -viK +obS xJZ -dfi -eyt +hfn +ryD +xJZ +kfG eyt eyt uXS vZv -mDW +kNa sGo eQZ -coh +xwY uXS xOz eQZ -aOZ -mDW +sGo +kNa oAm -aFt -etv +uXS +hbi cto -xEG -mCF +mMu +vhI mCF aOg aOg @@ -50330,18 +60457,18 @@ lVQ hoC cty cty -hoC mCF mCF mCF mCF -iDn +xEG +xxk cto cto cto eGq aTC -ksX +cba aOg aOg aOg @@ -50354,77 +60481,77 @@ pGs wUU "} (124,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -wOO +nvv +mPk +mPk +mPk +mPk +mPk +mPk +rYC +qwQ +lTR +lTR +qwQ +qwQ +urD +urD +urD +kgp +pdK +pdK +fpq +kVq +aQN +hQV +aQN +geK +wlB +lTg +wlB +wlB +wlB +mnU +aQN +ocz +aQN +geK +wlB +wlB +wlB +wlB +wlB +mnU +wlB +aHw +aQN +vMo +qNu +wlB +wlB +iUH +cel +jks +jks +cFw +ihY +cFw +cFw +vYy +deE +nwq +aBz +xfz +ihY +cel +jks +jks +jks +jks +cFw +nwq +oSX uwQ kCA tlT @@ -50435,28 +60562,29 @@ cbq tlT kCA rsB -wOO +oSX fEu fEu fEu fEu pCO -wqb +oSX viK xJZ +xJZ wqb +tVj kbQ -lkK -lkK -jqw -jqw kbQ kbQ -dHE -eyt -wqb +kbQ +kbQ +lFk +bPk +xJZ viK xJZ +sxY xJZ xJZ xJZ @@ -50466,45 +60594,44 @@ xJZ xJZ xJZ xJZ -mHh -wVf +qhZ rqn -civ +kGF pJn tUd -wVf +qhZ hyp iNr vZl -wVf +qhZ tdy vpV -vpV dNY -wVf +obS +ryD viK xJZ -dfi -eyt +xJZ +kfG eyt eyt uXS uXS uXS tlG -hsx +eQZ rWx uXS sGo -eQZ +pmh iAa uXS uXS -aFt -etv +uXS +hbi cto -ksX -mCF +cto +vhI mCF aOg mCF @@ -50516,8 +60643,8 @@ cty hoC mCF mCF -mCF ksX +dzH xxk cto cto @@ -50528,7 +60655,7 @@ lVQ xGV aOg aOg -hoC +mCF pGs pGs pGs @@ -50536,157 +60663,157 @@ pGs wUU "} (125,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -wOO +nvv +mPk +mPk +mPk +mPk +mPk +mPk +xVw +qwQ +daS +qwQ +qwQ +qwQ +pdK +pdK +pdK +urD +pdK +pdK +nsN +mnU +aQN +aQN +aQN +geK +vLh +hDw +qZV +qZV +oyl +mnU +aQN +aQN +aQN +geK +vLh +hDw +qZV +qZV +oyl +fmu +xVX +wlB +lTg +aQN +wlB +lTg +wlB +cFw +cel +jks +jks +cFw +cFw +jks +ebi +xmL +otH +iWX +jks +kDk +xWL +cFw +jks +uAM +cFw +cFw +cFw +tlq +oSX oUO kCA tlT -cbq +syt tlT -ljx +xdW cbq tlT kCA rsB -hst +oSX lur lur lur fEu ubK -wqb +oSX viK xJZ -tWA +ryD +ryD +tVj kbQ -lkK -lkK jqw kbQ kbQ kbQ -rWB -eyt -wqb +ofC +uvr +xJZ viK xJZ -wqb -wqb -wqb -wqb -wqb -wqb -wqb -wqb -wqb -wqb -wVf +xJZ +sny +vlw +xJZ +xJZ +xxs +iXR +xJZ +xJZ +gDh +qhZ beE orb pJn xOo dpz xOo -pJn +kiG lxy -wVf +qhZ bUg vpV -qoS -pcQ -wVf -viK +lNq +obS +ryD +wXs xJZ -dfi -eyt -kbQ +ryD +kfG +xAx eyt uXS vZv -mDW +kNa sGo wlq sGo uXS -vzY -eQZ +aud +vHY sGo -mDW +kNa oAm -aFt -etv +uXS +hbi cto -ksX -mCF +cto +iFb mCF aOg mCF @@ -50698,9 +60825,9 @@ cty cty mCF mCF -mCF +ksX +iDn iDn -xEG ksX ksX xEG @@ -50710,7 +60837,7 @@ aOg aOg aOg mCF -hoC +mCF pGs pGs pGs @@ -50718,81 +60845,81 @@ pGs wUU "} (126,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +qwQ +qwQ +qwQ +qwQ +qwQ +urD +urD +pdK +pdK +pdK +urD +nsN +bys +kkt +hsa +ksu +njC +riM +aQN +aQN +aQN +hsa +xDd +rUc +hsa +ksu +bVe +yhZ +aQN +aQN +aQN +hsa +wlB +aQN +aQN +kYF +kgp +kgp +wlB +ghW +cFw +cFw +cFw +osE +cFw +cFw +eSo +dvT +cFw +tPK +jks +jks +upb +jks +qSR +wop +cFw +cFw +cFw pGs pGs wOO pCV kCA tlT -iwd +iGS tlT qqs adR @@ -50805,20 +60932,20 @@ aDZ rTv fEu ubK -wqb -viK +oSX +mZk +xJZ +xJZ +imu +tVj +tVj +tVj +tVj +tVj +tVj +tVj +uvr xJZ -gey -kbQ -kbQ -kbQ -lkK -kbQ -kbQ -poK -rWB -eyt -wqb viK xJZ wqb @@ -50827,31 +60954,31 @@ eyt eyt eyt wVf -sBN -xOo -xOo -xOo -lod +wVf +wVf +xvF +wVf +wVf xOo xOo jVK mnc -hih +mnc mnc xMq kYn wVf fHx vpV -qoS qVS wVf +rWY viK xJZ xJZ -kbQ -kbQ -kbQ +vph +qIF +sgk uXS uXS uXS @@ -50859,16 +60986,16 @@ jGz hsx rWx uXS -sGo +xzd eQZ -iHm +sGo uXS uXS -aFt -etv +uXS +wGQ +xxk cto -ksX -hoC +kmI mCF jdm mCF @@ -50876,7 +61003,7 @@ hoC cty cty cty -hoC +mCF hoC mCF mCF @@ -50893,89 +61020,89 @@ aOg mCF mCF mCF -pGs +mCF pGs pGs pGs wUU "} (127,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +uYJ +qqR +qwQ +qwQ +lTR +pdK +pdK +pdK +pdK +pdK +urD +nBc +gsC +lTg +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +lTg +wlB +kgp +kgp +kgp +vzq +kgp +ihY +nwq +ihY +ihY +ihY +iaH +jjj +jjj +ihY +ihY +teg +jks +jks +cFw +cFw +gDr +dvT +nwq +cFw +cFw pGs wOO -bkx +fCB kCA tlT cbq -tlT +mSf ljx cbq tlT @@ -50987,36 +61114,36 @@ lur cbg fEu xjp -wqb -qSK +wOO +viK +xJZ xJZ wqb -wqb -tWA -tWA -kbQ -lkK -mED +tVj +tVj +qIF kbQ +qIF +tTU kbQ -eyt -wqb -viK +uvr xJZ +viK +gDh wqb eyt eyt eyt eyt wVf -wVf -wVf -wVf -wVf -svP +sBN xOo -ufH -nmQ +xOo +xOo +aRL +xOo +xOo +vrO vAg wVf gwG @@ -51025,32 +61152,32 @@ iPI fLn jhv aQu -vpV ocr wVf +ybt viK xJZ -dfi -eyt +vlw +qIF kbQ kbQ uXS -crO -mDW -sGo +dGR +kNa +eqn eQZ sGo uXS vzY eQZ -sGo -mDW +eqn +kNa oAm -aFt -etv +uXS +hbi cto -ksX -hoC +cto +kmI mCF mCF mCF @@ -51075,85 +61202,85 @@ mCF mCF mCF mCF -pGs +mCF pGs pGs pGs wUU "} (128,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -wOO -wHW +nvv +mPk +mPk +mPk +cUN +mPk +mPk +wBp +uYJ +qwQ +qwQ +qwQ +qwQ +pdK +pdK +pdK +pdK +pdK +pdK +urD +nsN +usQ +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +aQN +wlB +aQN +aQN +wlB +kgp +kgp +wlB +kgp +kgp +kgp +ihY +ihY +ihY +qis +mrR +mtJ +cFw +epN +cFw +ihY +hQl +jks +jks +fSa +jks +cFw +cFw +cFw +cFw +cFw +fsC +oSX +bgl mSD gkS adR @@ -51163,9 +61290,9 @@ yjK lsT kCA hUY -wOO -lur +oSX lur +rtR osr aDZ aDZ @@ -51174,15 +61301,15 @@ pfr lVc lVc iFZ -ryD -tuO kbQ kbQ kbQ kbQ -eyt +kbQ +sgk eyt wqb +xJZ viK xJZ wqb @@ -51190,10 +61317,10 @@ eyt eyt eyt eyt -eyt -eyt -eyt -jqw +wVf +wVf +wVf +xvF wVf wVf hay @@ -51205,17 +61332,17 @@ vap jVK eUv wVf -gLK +twh aqb -qoS ptP wVf +mNT viK xJZ -dfi -eyt +xJZ +kfG nMJ -kbQ +uqW uXS uXS uXS @@ -51224,15 +61351,15 @@ bHc rWx uXS sGo -gFv +qQe uXS uXS uXS -aFt -etv +uXS +hbi cto -ksX -cty +cto +iFb hoC mCF mCF @@ -51252,8 +61379,8 @@ cty mCF mCF mCF -hoC -hoC +mCF +mCF mCF mCF mCF @@ -51264,80 +61391,80 @@ pGs wUU "} (129,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -wOO -bgl -kCA +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +qwQ +lTR +daS +uYJ +qwQ +pdK +pdK +pdK +pdK +pdK +fpq +cVq +mtT +lTg +nCl +nCl +nCl +aQN +aQN +kgp +kgp +kgp +kgp +kgp +kgp +kgp +kgp +nCl +nCl +nCl +aQN +dOm +aQN +nCl +nCl +nCl +nCl +nCl +aQN +wlB +gDr +ihY +ihY +mgT +bfX +uRa +uRa +uRa +eoB +kjp +uRa +lNd +jks +fbJ +lch +fbJ +lch +fbJ +lch +fbJ +lch +tZm +mvi kCA +sHs cbq kCA kCA @@ -51345,41 +61472,41 @@ pkX nsl kCA hUY -wOO -lur +oSX +eYM lur rpI rrr rrr -wqb -qvO -wXu +wOO +fga +uwJ xJZ viK -fNn -yeK kbQ kbQ +qIF kbQ -jqw -eyt +qIF +uet eyt wqb +rpd viK xJZ wqb eyt eyt eyt -jqw -jqw -kbQ kbQ -sgk -jqw -wVf -wVf +eyt +eyt +ldw +xAx +kjN wVf +xvF +nNv wVf wVf wVf @@ -51391,30 +61518,30 @@ wVf wVf wVf wVf -wVf -amK +rDD +viK +xJZ xJZ -dfi -jqw +kbQ kbQ eyt uXS -vzY +pjk qZr -mDW +kNa tKw nFf uXS vzY eQZ -mDW +kNa sGo rWx -aFt -etv +uXS +hbi cto -ksX -cty +wXC +iFb cty mCF mCF @@ -51446,82 +61573,82 @@ pGs wUU "} (130,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -wOO +nvv +mPk +mPk +mPk +mPk +mPk +mPk +wBp +rYC +wLB +mPW +wBp +lze +pdK +urD +pdK +urD +urD +nsN +wlB +kAH +kgp +kgp +wsn +wlB +aQN +kgp +kgp +wlB +lTg +kgp +lTg +wlB +jsx +rVl +dJX +pNR +vll +bbK +bSQ +iQr +tCV +tCV +iQr +iQr +tCV +iQr +iQr +sIK +foE +nnb +pmW +keb +nnb +wtk +wDH +nLH +wDH +nnb +nnb +nnb +cFw +cFw +nwq +cFw +nwq +gDr +cFw +mcB +oSX oIC jtU jtU qId -bIq +jtU oBP kLA vnH @@ -51529,40 +61656,40 @@ jtU dID wOO gar -lur +dgF uZa mEB mEB -wqb -wqb -wqb -wqb +oSX +xJZ +xJZ +xJZ viK ryD -wqb -kbQ -kbQ -kbQ -jqw -eyt +ouy +ofC +qIF +jJf +cFz eyt wqb +xJZ viK xJZ wqb eyt eyt jqw -kJX kbQ -mED kbQ +rMP kbQ +qIF kbQ +qIF +kbQ +tVj kbQ -eyt -eyt -eyt eyt wVf oWO @@ -51573,44 +61700,43 @@ eyt eyt eyt wqb -wqb +xJZ viK xJZ -dfi -eyt +xJZ +kbQ +kbQ kbQ -eyt uXS vZv -cDY +vZO uXS -eQZ -qXM +jCN +rWx uXS tcS dnU uXS sGo oAm -aFt -etv +uXS +hbi cto -iDn -lVQ +mxB +eHZ aOg mCF mCF cty mCF mCF -hQq +mCF mCF mCF mCF lVQ +aOg gsm -gsm -cty cty cty cty @@ -51622,92 +61748,93 @@ cty mCF mCF mCF +mCF pGs pGs pGs wUU "} (131,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -wOO -wOO -dmg -dmg -dmg -wOO -wOO +nvv +cUN +mPk +cUN +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +rYC +fpq +mwI +cVq +cVq +pZT +nsN +mdg +lTg +kgp +nit +wlB +aQN +slw +kgp +eia +lTg +hVL +wlB +qAy +hmh +wlB +ebF +ggr +kgp +kyP +wlB +wlB +tCV +iQr +aCX +tCV +iQr +iQr +iQr +tCV +eJN +vuA +vuA +bcD +pmW +pmW +nnb +nnb +sIK +nnb +nnb +nnb +nnb +nwq +ebi +cFw +cFw +cFw +cFw +cFw +kuO +slE +cqC +sPh +qId +qxa wOO -jTn wOO +nUf +kIz +nUf wOO wOO wOO @@ -51717,18 +61844,18 @@ wOO wOO wOO wqb -wqb +xJZ xJZ viK xJZ -wqb +tCA kbQ kbQ -fZL -eyt +vcR eyt eyt wqb +xJZ viK xJZ wqb @@ -51738,14 +61865,14 @@ eyt sgk kbQ kbQ +qIF kbQ +qIF +sgk kbQ -kbQ -sgk -kbQ +tVj kbQ eyt -eyt wVf jUM dnV @@ -51758,33 +61885,33 @@ wqb xJZ viK xJZ -dfi -dfi -dfi -dfi -dfi -dfi -dfi -dfi -abE -dfi -dfi -dfi -abE -aFt -aFt -aFt -aFt -etv +xJZ +kfG +ofC +kbQ +uXS +uXS +uXS +uXS +jKK +eHl +uXS +eHl +jKK +uXS +uXS +uXS +uXS +hbi cto -iDn -aOg +xxk +eHZ aOg mCF mCF mCF -hQq -hQq +mCF +mCF mCF mCF mCF @@ -51800,8 +61927,8 @@ cty cty cty cty -hoC mCF +aOg mCF mCF pGs @@ -51810,141 +61937,141 @@ pGs wUU "} (132,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -oET -oET -faV -faV -faV -oET -oET -wqb -viK -uEc -wqb -wqb -eyt -eyt -eyt -eyt -eyt -eyt +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +cUN +mPk +cJL +mPk +xVw +nsN +xNA +xNA +xNA +gVd +oZJ +xNA +kgp +kgp +gCQ +wlB +bYO +lTg +wlB +nKf +wlB +wlB +wlB +wlB +wlB +tgK +wlB +aQN +wlB +wlB +bbK +wlB +iQr +iQr +bSQ +qNu +wlB +wlB +aQN +wlB +aKJ +mrR +cFw +cFw +dYW +jks +cFw +cFw +xmL +fMI +eHv +cFw +jks +cFw +cFw +cFw +mUz +nwq +cFw +cFw +uFO +slE +slE +oSX +oSX +oSX +slE +xAg +axh +enu +iQS +cRZ +vVH +kBZ +kBZ +kBZ +kBZ +kBZ +kBZ wqb gDh xJZ viK xJZ -wqb +tCA kbQ kbQ eyt eyt eyt -eyt wqb -viK xJZ +viK +wXu wqb eyt eyt eyt eyt sgk +tTU +qIF kbQ kbQ kbQ -kbQ -kbQ -mED -kbQ -jqw +wQh +tVj +tVj eyt wVf -nrd gqN +nrd gnZ wVf eyt eyt wqb +oJW xJZ -xJZ -wng -lVc +eQa lVc lVc lVc lVc lVc +mCe lVc lVc lVc @@ -51953,19 +62080,19 @@ lVc feR lVc pfr +vJp +lVc mUP -mUP -mUP -mUP +fnj baa -xxk -xEG -aOg +mMu +xhA +eHZ aOg aOg mCF -hQq -hQq +mCF +mCF mCF mCF mCF @@ -51982,9 +62109,9 @@ cty cty cty cty -hoC -mCF +aOg mCF +mSa mCF pGs pGs @@ -51992,121 +62119,121 @@ pGs wUU "} (133,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -gZP -hUq -gZP -xGf -gZP -taO -oET -rjS -viK -xJZ -ylf -wqb -eyt -eyt -eyt -eyt -eyt -eyt +nvv +mPk +mPk +mPk +cUN +mPk +mPk +mPk +mPk +mPk +cUN +mPk +wcb +wlH +tMZ +ghW +wlB +beK +mtT +kgp +kgp +wlB +wlB +hmh +wlB +jwX +aQN +aQN +sKz +wlB +tez +tmZ +rXk +wlB +aQN +hmh +wlB +bbK +mdg +dWV +tCV +jKs +wlB +wlB +kgp +doH +nCl +bbK +xmL +iUH +icm +cFw +nwq +cFw +cFw +cFw +cFw +pll +jNn +eNA +jks +cFw +jks +jks +jks +cFw +cFw +nwq +gaG +qEt +ihX +qEt +xSZ +qEt +biS +vVH +dsz +enu +iQS +wxD +vVH +kBZ +kBZ +kBZ +kBZ +kBZ +kBZ wqb -xJZ +rDD xJZ viK -xJZ -wqb -mED -eyt -eyt -eyt +stw +ouy +kbQ +kbQ +kbQ eyt eyt wqb +rDD viK -xJZ +gha wqb eyt eyt -lkK -lkK -kbQ kbQ kbQ kbQ kbQ kbQ kbQ +ofC +tTU +tVj sgk jqw eyt @@ -52118,36 +62245,36 @@ wVf eyt eyt wqb -xJZ +qQd xJZ viK xJZ +vlw xJZ xJZ +ryD xJZ xJZ xJZ xJZ xJZ +ryD xJZ xJZ xJZ xJZ xJZ -xJZ -cto -cto -cto -cto cto +tuZ +sgl +wNz xxk -iDn -aOg +eHZ aOg aOg mCF -hQq -hQq +mCF +mCF mCF jdm mCF @@ -52174,115 +62301,113 @@ pGs wUU "} (134,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -vrp -vrp -fLS -eSd -hmu -fLS -nrR -iLN -oET -iQN -viK -xJZ -ylf -wqb -eyt -eyt -eyt -eyt -eyt -eyt +nvv +cUN +mPk +cUN +mPk +mPk +mPk +mPk +mPk +cUN +cUN +cUN +pCa +tMZ +wlB +eia +wlB +ghW +lTg +wlB +wlB +lTg +wlB +wlB +wlB +wlB +jwX +wlB +wlB +qNX +ehY +urD +nsN +lTg +aQN +aQN +gjC +wlB +wlB +dWV +iQr +jKs +wlB +kgp +kgp +kgp +nCl +wlB +cFw +tPK +cFw +nwq +cFw +cFw +cel +jks +cFw +tPK +qkq +xpe +jks +jks +jks +mtp +coX +cFw +cFw +cFw +cFw +cFw +cFw +cFw +nwq +nwq +oep +vVH +won +vSu +iQS +wxD +vVH +kBZ +kBZ +kBZ +kBZ +kBZ +kBZ wqb bFD xJZ viK xJZ -wqb +lFE +kbQ +kbQ kbQ -eyt -eyt -eyt eyt eyt wqb +xJZ viK xJZ wqb eyt eyt -nkJ -lkK -lkK +jqw kbQ kbQ kbQ @@ -52290,8 +62415,10 @@ kbQ kbQ kbQ kbQ -eyt -eyt +tVj +kbQ +kbQ +kbQ wVf wVf wVf @@ -52303,29 +62430,29 @@ wqb wqb xJZ viK +ouP +vlw +pOg xJZ -wqb -wqb -wqb -gey -tWA -wqb -wqb -wqb -wqb -wqb -wqb -wqb -wqb -ksX -ksX -ksX -ksX -iDn -iDn -iDn -cty -hoC +xJZ +wXu +ryD +ryD +xJZ +xJZ +xJZ +gDh +vlw +ryD +vXx +xJZ +fLu +iaM +pyz +cto +xxk +hBA +mCF mCF mCF mCF @@ -52333,7 +62460,7 @@ mCF mCF hoC mCF -hQq +mCF mCF mCF cty @@ -52345,7 +62472,7 @@ cty cty cty cty -hoC +mCF mCF mCF mCF @@ -52356,166 +62483,166 @@ pGs wUU "} (135,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -vrp -fLS -fLS -eSd -iLL -xgH -hmu -fLS -iLN -oET -wqb -viK -xJZ -wqb -wqb -eyt -eyt -eyt -eyt -eyt -eyt +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +wfR +dYd +wlB +kAH +lTg +wlB +wlB +wlB +wlB +wlB +gjC +wlB +lTg +wlB +wlB +mdg +wlB +beK +cVq +cVq +mtT +wlB +aQN +aQN +wlB +oyv +lTg +wlB +iQr +iQr +lTg +wlB +gjC +kgp +nCl +wlB +cFw +ihY +qkq +ihY +cSc +jrr +jrr +vUx +jrr +cSc +cCk +cFw +cFw +jks +jks +jks +coX +nwq +cFw +cFw +tkh +cFw +nwq +wUF +cFw +cFw +uFO +vVH +iQS +aQY +iQS +iQS +vVH +kBZ +kBZ +kBZ +kBZ +kBZ +kBZ wqb wqb xJZ viK sKu -wqb +ouy +kbQ +kbQ kbQ -eyt -eyt -eyt eyt eyt wqb +rWY viK xJZ -wqb +bPk jqw kbQ kbQ -lkK -lkK -lkK +kbQ +kbQ +kbQ kbQ mED kbQ sgk -eyt -jqw -eyt -eyt -cFQ +tVj +kbQ +kbQ +kbQ +sgk snq aUD snq -jqw +kbQ eyt eyt eyt wqb -wqb +xJZ viK xJZ -wqb -eyt -eyt -kbQ -kbQ -kbQ -kbQ -jqw -jqw -eyt -eyt -eyt -eyt -cty -cty -cty -cty -mCF -mCF +ouy +ouy +ouy +wVp +iwT +ouy +nZP +nZP +nZP +nZP +ouy +ouy +ouy +iFb +owM +owM +owM +hBA +hBA +cty cty -hoC mCF mCF mCF mCF mCF cty -hoC mCF -hQq +mCF +mCF mCF mCF cty @@ -52526,11 +62653,11 @@ gsm aOg aOg gsm -hoC mCF mCF mCF -pGs +mCF +mCF pGs pGs pGs @@ -52538,151 +62665,151 @@ pGs wUU "} (136,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -rBz -vrp -eSd -iLL -jrK -jrK -xgH -hmu -iLN -oET +nvv +mPk +cUN +mPk +mPk +mPk +mPk +cUN +mPk +mPk +rUa +cUN +xDE +wlB +wlB +lTg +lTg +wlB +wlB +wlB +mdg +wlB +wlB +wlB +ghW +wlB +lTg +wlB +ghW +wlB +wlB +lTg +wlB +wlB +mdg +wlB +qNu +wlB +wlB +wlB +iQr +iDE +doH +gXw +aQN +wlB +lTg +wlB +uAM +ihY +ihY +ihY +nwq +cFw +nwq +nwq +qTE +ihY +ihY +cFw +ykU +jks +nwq +cFw +fSa +cFw +jks +jks +jks +jks +cFw +cFw +cFw +dgY +kuO +vVH +iQS +fnl +iQS +iQS +vVH +kBZ +kBZ +kBZ +kBZ +kBZ +kBZ +kBZ wqb -aCm xJZ -wqb -eyt -eyt -eyt -eyt -eyt -eyt -eyt -eyt -wqb -wqb viK gDh -wqb +ouy sgk -jqw -eyt -eyt +kbQ +qIF eyt eyt wqb +oJW viK xJZ wqb kbQ sgk kbQ -lkK -lkK -lkK kbQ kbQ -jqw -jqw -eyt -eyt -eyt -cFQ kbQ +kbQ +tVj +tVj +ykx +tVj +kbQ +kbQ +sgk +tTU nMJ mxG kbQ bfg -cFQ +jqw eyt eyt eyt -wqb -amK +rDD +viK xJZ -wqb +ouy eyt eyt kbQ kbQ kbQ kbQ +mED kbQ -kbQ -kbQ -kbQ +qIF +qIF eyt eyt cty -hoC +tEF cty cty aOg @@ -52694,11 +62821,11 @@ mCF mCF mCF mCF -hoC -hoC mCF mCF -hQq +mCF +mCF +mCF mCF hoC cty @@ -52707,12 +62834,12 @@ aOg lVQ aOg aOg -gsm +aOg +mCF mCF mCF mCF mCF -hoC pGs pGs pGs @@ -52720,153 +62847,153 @@ pGs wUU "} (137,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -fLS -fLS -jVw -jrK -jrK -oOg -jrK -fOA -tBC -oET -wqb -aZZ -xJZ -wqb -eyt -eyt +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +cUN +mPk +mPk +iWj +wlB +mdg +lTg +wlB +wlB +wlB +lTg +wlB +wlB +wlB +wlB +wlB +lTg +wlB +wlB +lTg +lTg +wlB +lTg +wlB +lTg +wlB +wlB +lTg +wlB +wlB +tfc +tCV +iQr +wlB +ghW +wlB +wlB +rBq +wlB +xmL +deE +cFw +cFw +jks +cFw +cFw +cFw +ivo +cFw +deq +cFw +cFw +jks +cFw +mEs +ihY +wop +cFw +cFw +cFw +jks +cFw +cFw +dvT +cFw +kuO +vVH +iQS +enu +apH +iQS +vVH +kBZ wqb wqb wqb wqb -eyt -eyt -eyt +kBZ +kBZ wqb +xJZ viK gDh -wqb -sgk +lFE sgk +kbQ jqw eyt eyt wqb -wqb +xJZ viK xJZ -ryD -sgk +tFQ +iyv +tTU +jqw kbQ jqw -nkJ -nkJ -lkK kbQ kbQ -jqw -eyt -eyt +tVj +tVj +tVj +tVj eyt eyt -jqw +kbQ sgk kbQ kbQ nMJ +sgk kbQ -jqw eyt eyt eyt -wqb -viK xJZ -wqb -eyt +wXs +xJZ +ouy eyt -jqw +wnE +kbQ kbQ kbQ kbQ kbQ kbQ +tTU kbQ kbQ kbQ -lkK -hQq mCF -hoC -gsm +wOR +mCF +aOg lVQ aOg aOg @@ -52882,7 +63009,7 @@ hoC mCF mCF mCF -hoC +mCF cty cty gsm @@ -52902,141 +63029,142 @@ pGs wUU "} (138,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -kDy -iLL -oOg -jrK -jrK -jrK -fOA -iLN -oET -wqb -kux -xJZ -wqb -eyt -wqb +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +cJL +iWj +hPq +wlB +wlB +wlB +wlB +wlB +lTg +wlB +wlB +lTg +lTg +lTg +tuT +lTg +lTg +wlB +chX +lTg +lTg +jtH +lTg +lTg +jtH +jtH +jtH +lTg +lTg +tCV +iQr +wlB +wlB +wlB +wlB +nCl +wlB +xmL +cFw +cFw +cFw +jks +cFw +cFw +cFw +cFw +cFw +tEM +hzx +cFw +jks +nwq +nwq +ihY +ihY +cFw +mDm +dvT +nwq +jks +cFw +cFw +cFw +kuO +vVH +nxl +enu +iQS +hza +aoC +vVH rql qcD -gDh -wqb +kAl +vVH wqb -eyt -eyt +kBZ wqb +xJZ viK klf -wqb -sgk +ouy +kbQ sgk -jqw +kbQ eyt wqb -xJZ +xxs xJZ viK xJZ -ryD -ryD -wqb -wqb -wqb -wqb -yeK -tuO tWA tWA +tLu +tLu wqb wqb +tWA +gey +uvr +tWA wqb wqb wqb wqb +tLu +tLu xJZ xJZ xJZ wqb +tLu wqb wqb wqb -wqb -wqb +xJZ viK xJZ -wqb -eyt +ouy eyt -jqw +qIF kbQ +qIF +ofC kbQ kbQ kbQ @@ -53044,9 +63172,8 @@ kbQ kbQ kbQ kbQ -lkK -hQq mCF +wOR mCF aOg aOg @@ -53084,103 +63211,103 @@ pGs wUU "} (139,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -jrK -jrK -jrK -jrK -jrK -jrK -fOA -iLN -faV -qLa -viK +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +mPk +rJv +rXk +lTg +wlB +wlB +wlB +wlB +lTg +lTg +lTg +lTg +lTg +pXT +lTg +lTg +pXT +lTg +tpa +lTg +lTg +pXT +lTg +xUp +lTg +lTg +jqd +lTg +lTg +lTg +kFn +wlB +iQr +wlB +lTg +nCl +wlB +iig +jks +cFw +cFw +jks +cFw +cFw +nwq +ihY +ihY +fxX +iaH +mio +nRU +jjj +hjn +ihY +cFw +cFw +cFw +cFw +cFw +jks +jks +cFw +cFw +kuO +uti +kxU +enu +iQS +iQS +iQS +iQS +jXn +iQS +iQS +tkr +imu xJZ -wqb -wqb -wqb -bFD xJZ xJZ -wXu -wqb -wqb -wqb -wqb viK xJZ -wqb -wqb -wqb -wqb +ouy +tCA +kbQ +tCA wqb wqb xJZ @@ -53191,14 +63318,14 @@ xJZ xJZ xJZ xJZ +wXu xJZ -xJZ -fNn -fNn ryD -keY +ryD xJZ +keY xJZ +vlw xJZ xJZ xJZ @@ -53212,11 +63339,8 @@ xJZ xJZ xJZ xJZ -viK +wXs xJZ -wqb -eyt -jqw kbQ kbQ kbQ @@ -53225,10 +63349,13 @@ kbQ kbQ kbQ kbQ -lkK -lkK -hQq +kbQ +kbQ +kbQ +kbQ +kbQ mCF +wOR mCF jdm mCF @@ -53245,7 +63372,7 @@ bUZ mCF mCF mCF -hQq +mCF mCF aOg aOg @@ -53256,7 +63383,7 @@ mCF jdm mCF mCF -hQq +mCF mCF hoC pGs @@ -53266,93 +63393,93 @@ pGs wUU "} (140,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -rxO -mcm -oOg -jrK -jrK -jrK -xgH -dki -faV -pCz -lab -lVc -lVc -lVc -lVc -lVc -lVc -lVc -lVc +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +vhB +nsN +ghW +wlB +lTg +wlB +lTg +lTg +lTg +emP +pXT +lTg +lTg +wlB +wlB +wlB +lTg +lTg +emP +lTg +lTg +wlB +wlB +wlB +wlB +wlB +lTg +lIW +pXT +rhu +wlB +lTg +wlB +hPq +aQN +wlB +xmL +qTE +cFw +cFw +cFw +ebi +cFw +ihY +ihY +gFA +nwq +upb +jks +jks +cFw +epN +cFw +cFw +vbS +cFw +cFw +cFw +jks +jks +cFw +nwq +ezU +uti +sPD +hdV +pDW +pDW +pDW +eVH +pDW +pDW +pDW +pDW lVc lVc lVc @@ -53368,36 +63495,36 @@ pbw lVc lVc pfr +nch lVc lVc lVc lVc +xpk lVc +elO lVc lVc lVc lVc lVc lVc +xza lVc lVc lVc +elO lVc lVc lVc -lVc -lVc -lVc -lVc -lVc -lVc +tlM lVc lVc lVc cpC xJZ -wqb -eyt +kbQ +ofC kbQ kbQ kbQ @@ -53406,16 +63533,16 @@ kbQ pGs pGs jqw +kbQ jqw -nkJ -lkK -mCF +kbQ mCF +wOR mCF mCF cty cty -hoC +mCF mCF mCF mCF @@ -53436,9 +63563,9 @@ mCF mCF mCF mCF +aOg mCF mCF -hQq mCF pGs pGs @@ -53448,137 +63575,137 @@ pGs wUU "} (141,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -mcm -jrK -jrK -oOg -jrK -jrK -nfD -faV -nxf +nvv +mPk +mPk +mPk +cUN +mPk +mPk +mPk +mPk +mPk +pRa +cJL +rYC +nsN +wlB +wlB +vNy +wlB +wlB +eia +lTg +lTg +lTg +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +nFX +pXT +lTg +wlB +lTg +lTg +iQr +kgp +kgp +nCl +wlB +cFw +tPK +cFw +cFw +cFw +cFw +nwq +cFw +ihY +fvV +cFw +coX +cFw +cFw +dvT +nwq +cFw +cFw +cFw +nwq +cFw +jks +jks +cFw +cFw +nwq +kuO +uti +fmy +iQS +iQS +iQS +iQS +iQS +iQS +axs +iQS +iQS +xJZ xJZ xJZ xJZ xJZ +ryD +ryD +oPV +xJZ +xJZ +eKF +bPk +xJZ xJZ xJZ xJZ xJZ xJZ +vlw xJZ xJZ xJZ xJZ sny -ryD -ryD -oPV xJZ xJZ -mHh -wqb -rDD xJZ xJZ xJZ -wqb -wqb -wqb -wqb -wqb -wqb -wqb -wqb -wqb -wqb -tWA -gey -tWA -wqb -wqb -wqb -wqb -wqb -wqb -wqb -wqb -wqb -wqb -wqb -tWA -gey -tWA -wqb +xJt +xJZ +xJZ +sny +xJZ +xJZ +xJZ +xJZ +vlw +xJZ +xJZ +xJZ +vXx +ryD +kbQ kbQ kbQ kbQ @@ -53592,13 +63719,13 @@ pGs pGs jqw mCF -aOg +iHE aOg hoC cty cty +mCF hoC -xMH mCF mCF aOg @@ -53608,7 +63735,6 @@ mCF mCF mCF mCF -hQq mCF mCF mCF @@ -53620,7 +63746,8 @@ mCF mCF mCF mCF -hQq +mCF +mCF pGs pGs pGs @@ -53630,141 +63757,141 @@ pGs wUU "} (142,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -wUU -wUU wUU -wUU -wUU -wUU -vGb -ucx -jrK -oOg -mcm -jrK -jrK -nfD -oET -oET -gDh -gDh -xJZ -oET -oET -oET -oET -oET -oET +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +mPk +wBp +nsN +wlB +wlB +kqs +lTg +wlB +pXT +lTg +lTg +lTg +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +nFX +wlB +wlB +wlB +wlB +wlB +wlB +wlB +pXT +wlB +lTg +rhu +wlB +kgp +kgp +nCl +wlB +cFw +cFw +ihY +ihY +qTE +cFw +cFw +nwq +cFw +hQl +cFw +coX +cFw +nwq +cFw +cFw +cFw +cFw +cFw +ihY +wop +gkG +nRU +jjj +jjj +mcp +tdt +xAg +xAg +bSD +kAl +kAl +vVH +vVH +vVH +vVH +vVH +vVH gfu xJZ xJZ gfu +sny +sVr +ryD +ryD +xJZ +iLc +dUL +jcY +sny +xJZ +xJZ +mHh +wqb +wqb +tLu +tLu +wqb +wqb wqb +wqb +bPk +tLu +tWA gey tWA wqb wqb +bPk wqb +bPk wqb wqb -xJZ -xJZ -xJZ -xJZ +tLu +bPk +bPk wqb -lkK -lkK -lkK -lkK -lkK -kbQ -sgk -kbQ -kbQ -tVj -tVj -tVj -tVj -kbQ -kbQ -kbQ -lkK -lkK -lkK -lkK -lkK -kbQ -kbQ -kbQ -kbQ -kbQ -kbQ -kbQ +iwT +wVp +iwT +ouy kbQ kbQ kbQ +qIF kbQ pGs pGs @@ -53774,7 +63901,7 @@ pGs pGs pGs bUZ -aOg +iHE aOg mCF mCF @@ -53785,23 +63912,23 @@ mCF mCF mCF aOg -gsm +aOg +mCF +mCF +mCF +mCF +dda +dda +mCF mCF mCF mCF mCF -hQq -hQq -hQq -hQq mCF mCF -hQq mCF mCF mCF -hQq -hQq mCF pGs pGs @@ -53812,131 +63939,131 @@ pGs wUU "} (143,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -kTX -mcm -mcm -jrK -jrK -jrK -vaF -vrB -oET -faV -faV -faV -oET -xWD -txs -beU -gZP -oET +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +cJL +ovT +mtT +wlB +wlB +dqx +wlB +lTg +lTg +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +lTg +eqT +iQr +eia +kgp +nCl +wlB +cFw +nwq +ihY +kfc +cFw +cFw +cFw +cFw +cFw +cFw +cFw +jks +cFw +ihY +ihY +cFw +jks +cFw +ihY +ihY +xfz +cFw +jks +cFw +eHs +cFw +bSj +aoC +xAg +uti +uti +uti +vVH +gCZ +gfe +bzz +fNm +vVH oET slA gfG oET oET +iwT +iwT +iwT +lFE +tCA +ouy +ouy +ouy +tCA +lFE +ouy +ouy kbQ kbQ -sgk +qIF +eyt +eyt +qIF kbQ kbQ -lkK -wqb -xJZ -xJZ -sny -xJZ -wqb -lkK -lkK -lkK -lkK -lkK kbQ kbQ +tVj kbQ kbQ +liq kbQ -tVj +sgk kbQ +eyt kbQ kbQ kbQ -sgk -lkK -lkK -lkK -lkK -lkK kbQ kbQ kbQ @@ -53956,7 +64083,7 @@ pGs pGs pGs pGs -mCF +wOR aOg lVQ aOg @@ -53967,21 +64094,21 @@ mCF mCF mCF mCF -hoC -mCF mCF mCF mCF mCF mCF +dda +dda mCF mCF mCF mCF mCF +aOg mCF mCF -hQq mCF bUZ hoC @@ -53994,140 +64121,140 @@ pGs wUU "} (144,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -jrK -jrK -jrK -xgH -dEN -xGf -gZP -gZP -gtd -gZP -ppY -jVw -xgH -hmu -fLS +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +iWj +wlB +gjC +lTg +lTg +wlB +lTg +lTg +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +lTg +uHD +rhu +lTg +fIk +wlB +kgp +nCl +ghW +nwq +cFw +cFw +nwq +cFw +cFw +cFw +upb +cFw +cFw +cFw +jks +cFw +uAM +ihY +cFw +agn +cFw +ejk +nwq +nak +cFw +jks +nwq +cFw +cFw +bGU +pGs +pGs +tgC +oAJ +sxL +bzz +aer +rvD +rvD +wPH +ekE oET oET oET oET -nkJ +jqw kbQ +ofC kbQ +qIF +qIF kbQ kbQ -lkK -lkK -wqb -wqb -wqb -wqb -wqb -wqb kbQ +qIF kbQ +qIF kbQ kbQ -lkK +qfu kbQ kbQ +qIF kbQ kbQ kbQ +ofC kbQ kbQ kbQ kbQ kbQ kbQ -qAg kbQ +qAg kbQ +tTU kbQ kbQ sgk -jqw kbQ kbQ kbQ +qIF +kbQ kbQ kbQ kbQ -jqw pGs pGs pGs @@ -54160,8 +64287,8 @@ mCF mCF mCF mCF -mCF -mCF +aOg +aOg mCF mCF hoC @@ -54176,122 +64303,122 @@ pGs wUU "} (145,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -jrK -jrK -jrK -jrK -xgH -hmu -fLS -jtw -fLS -fLS -sqZ -jVw -jrK -fOA -fLS -pGs -pGs -pGs -pGs -pGs -nkJ -lkK +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +iWj +wlB +wlB +wlB +rBq +wlB +lTg +lTg +wlB +wlB +wlB +wlB +nFX +wlB +wlB +wlB +wlB +wlB +aAX +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +lTg +lTg +lTg +kFH +iQr +wlB +kgp +kgp +wlB +cFw +cFw +cFw +xfz +cel +jks +jks +jks +gtv +jks +jks +coX +cFw +cFw +cFw +cFw +cFw +jks +pll +cFw +cFw +cFw +cFw +cFw +bGU +bGU +bGU +bGU +pGs +bGU +xke +rvD +bGU +rvD +rvD +bGU +rvD +xeO +eyt +eyt +eyt +eyt +eyt kbQ -lkK kbQ +tTU kbQ +sgk kbQ kbQ -lkK -lkK -lkK kbQ kbQ kbQ -lkK -sgk kbQ +rsf kbQ kbQ kbQ +sgk +kbQ kbQ +qfu +qIF kbQ kbQ kbQ +qIF kbQ kbQ kbQ @@ -54302,13 +64429,13 @@ kbQ kbQ eyt jqw -eyt kbQ kbQ kbQ -jqw +nMJ kbQ kbQ +kqN jqw pGs pGs @@ -54321,13 +64448,13 @@ pGs pGs pGs pGs -hoC +mCF +mCF mCF mCF mCF hoC -hoC -hQq +mCF mCF mCF mCF @@ -54358,123 +64485,123 @@ pGs wUU "} (146,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -kTX -ucx -rxO -jrK -jrK -jrK -jrK -xgH -kDy -kDy -kDy -kDy -kDy -iLL -jrK -fOA -jtw -vrp -pGs -pGs -pGs -pGs -pGs -nkJ -nkJ -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +cJL +pRa +xDE +wlB +lTg +wlB +mdg +wlB +lTg +lTg +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +nFX +lTg +pXT +lTg +cxT +bDs +aQN +kgp +kgp +wlB +cFw +cFw +xmL +iXy +cFw +cFw +cFw +cFw +ihY +cFw +cFw +cFw +ebi +cFw +nwq +cFw +tsC +cFw +pll +eHs +cFw +nwq +bGU +pmM +bGU +bGU +rvD +bGU +bGU +rvD +bGU +rvD +rvD +elP +bGU +bGU +rvD +erQ +vNB +eyt +eyt +eyt +eyt +eyt +kbQ +kbQ +kbQ +kbQ +kbQ +kbQ +kbQ kbQ kbQ -lkK -lkK -lkK kbQ qAg kbQ +sfj kbQ kbQ -lkK -lkK kbQ +dDn kbQ eyt eyt -jqw +qIF eyt jqw -jqw +qIF eyt eyt kbQ @@ -54487,7 +64614,7 @@ eyt kbQ kbQ kbQ -jqw +kbQ kbQ kbQ kbQ @@ -54507,9 +64634,6 @@ mCF mCF mCF mCF -hoC -hoC -hQq mCF mCF mCF @@ -54525,7 +64649,10 @@ mCF mCF mCF mCF -hQq +mCF +mCF +wBc +mCF mCF bUZ pGs @@ -54540,117 +64667,117 @@ pGs wUU "} (147,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -fOA -fLS -vrp -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -nkJ -lkK -sgk -lkK -lkK -lkK +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +rUa +rJv +rXk +wlB +lTg +wlB +lTg +lTg +lTg +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +nFX +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +kLF +doH +wlB +dOl +kgp +kgp +lTg +cFw +cFw +xmL +jks +jks +cFw +cFw +ykA +cFw +cFw +cFw +cFw +cFw +nwq +nwq +cFw +cFw +agn +tPK +udp +cFw +bGU +bGU +pmM +cYw +bGU +bGU +trI +bGU +bGU +bGU +bGU +bGU +bGU +bGU +rvD +bGU +rvD +rvD +bGU +rvD +rvD +bGU +eyt +eyt +eyt +eyt +eyt +kbQ kbQ sgk +qIF kbQ -jqw kbQ kbQ +sgk +kbQ +pbT +kbQ +qfu jqw -jqw +tTU eyt eyt eyt @@ -54659,7 +64786,7 @@ eyt eyt eyt jqw -kbQ +qfu kbQ sgk kbQ @@ -54667,10 +64794,10 @@ kbQ kbQ kbQ kbQ -kbQ -kbQ +ofC +qIF sgk -kbQ +qIF kbQ kbQ kbQ @@ -54691,8 +64818,8 @@ mCF mCF hoC lDF -hQq -hQq +mCF +mCF mCF mCF mCF @@ -54703,8 +64830,8 @@ mCF aOg aOg mCF -hoC -lDF +mCF +mCF mCF mCF mCF @@ -54722,114 +64849,114 @@ pGs wUU "} (148,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -kmy -ucx -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -xgH -hmu -fLS -vrp -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -jqw -pGs -pGs -pGs -jqw -jqw -tVj -tVj -kbQ +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPW +nsN +wlB +lTg +wlB +wlB +lTg +uHD +lTg +lTg +lTg +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +wlB +uHD +wlB +lTg +dOl +iQr +wlB +kgp +kgp +wlB +cFw +iUH +wfh +jks +nwq +wop +gDr +cFw +cFw +jks +jks +udp +cFw +nwq +cFw +nwq +nwq +cFw +nwq +tkh +nwq +bGU +bGU +bGU +bGU +bGU +bGU +rvD +bGU +bGU +bGU +pYK +bGU +rvD +bLV +bGU +rvD +bGU +rvD +rvD +rvD +rvD +rvD +rvD +eyt +eyt +eyt +eyt +eyt +uqW +eyt +eyt +eyt +qIF +uqW +gaJ tVj +qfu +eQI tVj tVj tVj @@ -54841,10 +64968,10 @@ eyt eyt eyt eyt -jqw -kbQ +qIF kbQ kbQ +sfj kbQ kbQ kbQ @@ -54870,27 +64997,27 @@ aOg mCF jdm mCF -hoC +mCF lDF lDF -hQq -hQq -lVQ mCF mCF +lVQ +mCF mCF mCF +wBc mCF aOg aOg lVQ lDF lDF -lDF -lDF -ogX +rkC +rkC +rPB plT -ogX +rkC pGs pGs pGs @@ -54904,117 +65031,117 @@ pGs wUU "} (149,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -xgH -hmu -vrp -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -huF -huF -huF -huF +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +pRa +mPW +nsN +wlB +wlB +wlB +wlB +lTg +lTg +lTg +lTg +lTg +wlB +wlB +wlB +wlB +wlB +hHn +wlB +wlB +wlB +wlB +wlB +nFX +wlB +wlB +wlB +uHD +lTg +wlB +lTg +wlB +iQr +kgp +kgp +kgp +wlB +cFw +cFw +xmL +cFw +cFw +cFw +cFw +cFw +cFw +jks +cFw +fSa +fSa +ihY +xBw +nwq +cFw +vbH +cFw +cFw +bGU +bGU +xke +bGU +trI +bGU +bLV +bGU +elP +bGU +rvD +bGU +bGU +bGU +bGU +bGU +rvD +pYK +bGU +bGU +bGU +bGU +bGU +elP +rvD +bGU +bGU +eyt +eyt +eyt +eyt tXu tXu -vqG -tVj -tVj tXu tXu +ouy +ouy +uon +kvz +fUC +ouy +ouy tXu tXu tXu @@ -55026,10 +65153,10 @@ tXu vqG tVj kbQ +qIF +qfu kbQ -kbQ -kbQ -kbQ +qIF sgk kbQ kbQ @@ -55048,7 +65175,7 @@ pGs pGs lVQ xGV -aOg +qZR mCF mCF mCF @@ -55056,7 +65183,7 @@ hoC lDF lDF lDF -xDl +hoC aOg aOg mCF @@ -55068,10 +65195,10 @@ lDF lDF lDF lDF -kkv -lDF bsf bsf +pDX +bsf bsf pGs pGs @@ -55086,137 +65213,137 @@ pGs wUU "} (150,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -kmy -kmy -kmy -jrK -jrK -jrK -jrK -jrK -jrK -xgH -hmu -fLS -fLS -fLS -fLS -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -vrB -tXu -vxW -vxW -vxW -tXu -xWD -gkC -gZP -gZP -gZP -gZP -gZP -vrB -asi -eXv -fdf -rFd -rFd -rFd -rFd +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +pRa +wLB +nsN +hPq +wlB +wlB +lTg +lTg +wlB +lTg +emP +uHD +lTg +lTg +wlB +wlB +wlB +lTg +lTg +emP +lTg +lTg +wlB +wlB +wlB +wlB +wlB +lTg +sbP +uHD +lTg +lTg +iQr +aQN +kgp +nCl +lTg +cFw +nwq +lxi +kgA +cFw +cFw +luC +jEv +joe +jjj +jjj +jjj +jjj +vuQ +ihY +ihY +cFw +cFw +bGU +rvD +bGU +bGU +qoI +jTR +bGU +eKL +bGU +bGU +rvD +bGU +lzT +bGU +rvD +uFq +bGU +bGU +bGU +bGU +bGU +rvD +lzT +bGU +bGU +bGU +bGU +rvD +rvD +rvD +rvD +eyt +eyt +eyt +eyt +eyt +eyt +qTh +ouy +qaX +rTi +rTi +ouy +nhI +vjO +rsO +bzz +gfe +oAJ +liz +vDP +ouy +cwk +sCp +kkc +vqK +kbQ +kbQ pGs pGs jqw kbQ +qIF kbQ -jqw pGs pGs pGs @@ -55233,25 +65360,25 @@ aOg aOg mCF mCF +mCF lDF lDF lDF lDF lDF lDF -lDF -ogX +rkC plT -ogX -ogX +rkC +rkC plT -ogX +rkC lDF lDF lDF kkv -kkv -kkv +bsf +bsf bsf bsf bsf @@ -55268,137 +65395,136 @@ pGs wUU "} (151,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -kmy -kmy -kmy -jrK -jrK -jrK -jrK -jrK -jrK -jrK -xgH -hmu -fLS -fLS -fLS -fLS -fLS -fLS -fLS -fLS -pGs -pGs -fLS -fLS -fLS -fLS -uRL -gZP -xGf -gZP -gZP -gZP -ppY -fLS -fLS -jtw -vrp -vrp -fLS -iLN -nap -ofu +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +mPk +wBp +nsN +wlB +qNu +lTg +wlB +lTg +mdg +lTg +lTg +lTg +lTg +uHD +lTg +lTg +uHD +lTg +lTg +lTg +lTg +uHD +lTg +lTg +lTg +lTg +uHD +lTg +lTg +lTg +lTg +iQr +iQr +aQN +wlB +nCl +wlB +cFw +ykU +hMI +prC +cFw +nwq +cFw +cFw +cFw +cFw +nwq +cFw +cFw +pgn +kgA +nwq +kyp +oWf +kyp +kyp +kyp +elI +fWd +pjD +dTG +cFh +kyp +bGU +lzT +lzT +lzT +rvD +bGU +bGU +bGU +rvD +bGU +bGU +bGU +lzT +rvD +bGU +bGU +bGU +bGU +rvD +bGU +rvD +rvD +rvD +rvD +rvD +bGU +rvD +rvD +xeO +bzz +uSF +dFC +mVn +hti +qEc +bGU +rvD +aSj +fPJ +bGU +oBq +kjr +kVE +ibi dRI -tVj -tVj -tVj -eyt +jrv +fZP +vqG pGs pGs pGs -jqw -jqw pGs +qIF +uqW pGs pGs pGs @@ -55411,11 +65537,12 @@ pGs pGs pGs pGs -ogX +pGs +rkC plT -ogX -lDF -lDF +rkC +rkC +rkC lDF lDF lDF @@ -55437,7 +65564,7 @@ bsf bsf bsf bsf -pGs +bsf pGs pGs pGs @@ -55450,131 +65577,131 @@ pGs wUU "} (152,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -kmy -kmy -jrK -jrK -jrK -jrK -jrK -jrK -oOg -jrK -xgH -kDy -kDy -hmu -fLS -fLS -jtw -fLS -fLS -fLS -fLS -fLS -fLS -jtw -eSd -kDy -kDy -kDy -hmu -sgo -eSd -kDy -kDy -kDy -kDy -kDy -hmu -nrR -iLN -dxy +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +cJL +wHt +mtT +wlB +wlB +lTg +wlB +wlB +wlB +wlB +wlB +wlB +lTg +lTg +lTg +lTg +lTg +wlB +gjC +mdg +lTg +lTg +lTg +lTg +ghW +wlB +lTg +wlB +wlB +lTg +wlB +wlB +iQr +aQN +wlB +nCl +wlB +cFw +cFw +wfh +agn +nwq +cFw +cFw +qTE +nNB +cFw +cFw +cFw +nwq +hds +qvS +kyp +cFh +kyp +cFh +kyp +elI +fWd +dRs +dRs +pjD +dTG +cFh +bGU +rvD +lzT +lzT +rvD +bGU +bGU +rvD +bGU +bGU +bGU +bGU +lzT +bGU +bGU +bGU +bGU +bGU +bGU +bGU +bGU +bLV +bGU +erQ +bGU +rvD +rvD +bGU +kyD +prl +noR +etV +huE +eXN +bGU +kyD +kyD +cVd +huE +lzT +bGU +rKS +vEi +dir +xHz tVj -tVj -tVj -tVj -eyt -eyt +xcz +pGs +pGs pGs pGs pGs @@ -55596,17 +65723,18 @@ pGs bsf bsf bsf -lDF -lDF -kkv -kkv -kkv +bsf +bsf +bsf +bsf +bsf kkv lDF lDF bsf bsf bsf +pDX bsf bsf bsf @@ -55628,135 +65756,134 @@ pGs pGs pGs pGs -pGs wUU "} (153,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -jrK -jrK -jrK -jrK -jrK -jrK -jrK -oOg -jrK -jrK -jrK -fOA -fLS -fLS -fLS -fLS -fLS -fLS -fLS -fLS -eSd -kDy -iLL -jrK -jrK -jrK -xgH -kDy -iLL -jrK -jrK -jrK -jrK -jrK -fOA -fLS -iLN -nap -mje -fdf -asi -asi -tXu -tXu +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +iWj +wlB +lTg +wlB +wlB +wlB +wlB +lTg +wlB +ghW +wlB +wlB +wlB +lTg +wlB +wlB +lTg +wlB +wlB +wlB +wlB +lTg +wlB +wlB +lTg +wlB +lTg +wlB +wlB +lTg +wlB +wlB +aQN +aQN +nCl +wlB +cFw +nwq +ihY +vlL +gcB +jNE +cFw +cFw +cFw +cFw +nwq +kyp +kyp +hds +pjD +jek +jek +dTG +kyp +kyp +hds +exX +xFb +ulb +dRs +qvS +hWv +bGU +bGU +rvD +lzT +bGU +vNB +elP +bGU +bGU +bGU +bGU +bGU +bGU +rvD +bGU +uFq +bGU +rvD +bGU +bGU +bGU +trI +bGU +bGU +bGU +bGU +kyD +uFq +qZJ +bGU +kyD +vNB +exs +huE +fFw +bGU +bGU +sDH +huE +lzT +lzT +gzm +rTi +sCp +inV +ouy +ouy +huF +huF huF pGs pGs @@ -55776,12 +65903,10 @@ pGs pGs pGs bsf +pDX bsf bsf -lDF -lDF bsf -kkv bsf bsf bsf @@ -55796,13 +65921,15 @@ bsf bsf bsf bsf +pDX bsf bsf bsf +pDX +bsf +bsf bsf bsf -pGs -pGs pGs pGs pGs @@ -55814,130 +65941,129 @@ pGs wUU "} (154,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -ucx -mcm -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -xgH -kDy -kDy -kDy -kDy -kDy -kDy -kDy -kDy -iLL -jrK -jrK -jrK -jrK -jrK -oOg -jrK -jrK -jrK -jrK -jrK -jrK -jrK -xgH -hmu -uRL -gZP -gZP -gZP -gZP -gZP -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +pRa +rJv +rXk +wlB +wlB +wlB +wlB +ghW +wlB +wlB +wlB +wlB +wlB +lTg +tLS +wlB +wlB +wlB +wlB +lTg +wlB +wlB +phk +wlB +wlB +bnH +mdg +wlB +wlB +lTg +wlB +wlB +lTg +hPq +kgp +nCl +wlB +nwq +cFw +ihY +ihY +ihY +ihY +nwq +nwq +wUF +oWf +lci +kyp +kyp +nCF +kGJ +plq +dRs +qvS +kyp +hEv +hds +ulb +dRs +dRs +dRs +qvS +kyp +bGU +bGU +bGU +bGU +vNB +bGU +bGU +bGU +rvD +lzT +rvD +bGU +bGU +bGU +bGU +bGU +bGU +bGU +bGU +bGU +bGU +bGU +bGU +bGU +bGU +eKL +bGU +bGU +bGU +bGU +bGU +huE +bGU +kyD +bGU +bGU +kyD +pYK +fFw +pYI +huE +xeO +uoU +bzz +fXA +mVj +cql pGs pGs pGs @@ -55961,7 +66087,6 @@ bsf bsf bsf bsf -kkv bsf bsf bsf @@ -55983,8 +66108,10 @@ bsf bsf bsf bsf -pGs -pGs +bsf +bsf +bsf +bsf pGs pGs pGs @@ -55996,140 +66123,139 @@ pGs wUU "} (155,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -jrK -mcm -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -fOA -fLS -rav -fLS -huD -rav -fLS -fLS -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +cJL +wBp +nsN +tLS +wlB +lTg +eia +wlB +wlB +wlB +wlB +lTg +wlB +wlB +wlB +lTg +mdg +wlB +xCZ +wlB +wlB +wlB +wlB +lTg +wlB +nFX +nFX +wlB +gjC +lTg +wlB +wlB +lTg +kgp +kgp +aQN +wlB +kyp +kyp +efy +efy +kyp +kyp +cFh +kyp +kyp +kyp +cFh +kyp +kyp +kyp +cFh +hds +dRs +qvS +kyp +kyp +hds +dRs +xFb +xFb +xFb +qvS +uWo +bGU +rvD +bGU +bGU +bGU +bGU +bGU +bGU +lzT +lzT +bGU +pYK +bLV +bGU +bGU +eKL +bjC +rvD +bGU +bGU +bGU +lzT +lzT +bGU +bGU +prl +bGU +qFI +bGU +kyD +bGU +cGD +bGU +bGU +kyD +bGU +huE +pYI +bGU +bGU +bGU +huE +trI +gCe +etV +trI +rvD +aSj +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs pGs pGs pGs @@ -56144,10 +66270,11 @@ bsf bsf bsf bsf -fBB bsf +gRU bsf bsf +pDX bsf bsf bsf @@ -56162,12 +66289,12 @@ bsf bsf bsf bsf -fBB +gRU +bsf +bsf bsf bsf bsf -pGs -pGs pGs pGs pGs @@ -56178,133 +66305,131 @@ pGs wUU "} (156,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -ucx -kmy -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -xgH -kDy -hmu -fLS -jtw -fLS -fLS -fLS -fLS -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +wBp +nsN +wlB +wlB +lTg +wlB +lTg +wlB +lTg +lTg +wlB +qNu +wlB +wlB +wlB +wlB +wlB +pDl +dyl +lTg +aCW +wlB +wlB +qNu +mJH +wlB +lTg +wlB +lTg +aQN +ayx +kgp +kgp +kyP +aQN +lTg +iHN +kyp +kyp +kyp +kyp +kyp +kyp +kyp +cFh +kyp +kyp +kyp +cFh +kyp +kyp +hds +dRs +qvS +cFh +kyp +hds +ulb +dRs +xFb +xFb +pjD +dTG +bGU +qoI +gPi +jTR +bGU +bGU +rvD +bGU +bGU +bGU +bGU +bGU +bGU +bGU +bGU +bGU +bGU +bGU +vNB +bGU +lzT +lzT +rvD +bGU +bGU +bGU +kyD +bGU +hDY +bGU +tZl +fFw +huE +lzT +bGU +pZS +bGU +bGU +vGQ +huE +kyD +huE +huE +bGU +bGU +kyD +bGU +orr +rvD pGs pGs pGs @@ -56331,6 +66456,8 @@ bsf bsf bsf bsf +bsf +bsf avD chU chU @@ -56348,8 +66475,8 @@ bsf bsf bsf bsf -pGs -pGs +pDX +bsf pGs pGs pGs @@ -56360,131 +66487,131 @@ pGs wUU "} (157,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -oOg -jrK -jrK -jrK -jrK -fOA -fLS -fLS -fLS -fLS -fLS -fLS +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +rUa +wBp +nsN +eNk +wlB +wlB +wlB +wlB +wlB +hPq +wlB +wlB +wlB +wlB +lTg +lTg +wlB +cFZ +nti +ola +ayF +ueB +lTg +wlB +lTg +wlB +wlB +wlB +wlB +wlB +aQN +aQN +tMZ +pvQ +lTg +aQN +wlB +kyp +cFh +cFh +kyp +elI +jek +jek +jek +dTG +kyp +cFh +kyp +elI +jek +jek +fWd +xFb +qvS +cFh +kyp +hds +dRs +xFb +tHc +xFb +dRs +pjD +gPi +xfQ +bUP +veV +jTR +bGU +bGU +bGU +rvD +bGU +bGU +bGU +bGU +lzT +lzT +rvD +bGU +bGU +bGU +bGU +bGU +rvD +lzT +bGU +elP +bLV +pYK +bGU +bGU +bGU +tZl +lzT +feH +bGU +pZS +pYI +bGU +kyD +bGU +huE +uFq +bGU +huE +bGU +bLV +bGU +prl +bGU +aSj pGs pGs pGs @@ -56500,12 +66627,12 @@ pGs pGs pGs pGs -pGs -pGs -kkv bsf bsf +kkv +bsf bsf +pDX bsf bsf bsf @@ -56529,10 +66656,10 @@ bsf bsf bsf bsf -kkv -pGs -pGs -pGs +bsf +bsf +bsf +bsf pGs pGs pGs @@ -56542,141 +66669,141 @@ pGs wUU "} (158,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -jrK -mcm -mcm -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -jrK -xgH -kDy -kDy -hmu -fLS -fLS -nrR -fLS -pGs -pGs -pGs -pGs -pGs -pGs -hre -bsf +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +rYC +nsN +iFc +qAy +lTg +lTg +wlB +wlB +wlB +wlB +ghW +lTg +wlB +gjC +wlB +lTg +yjH +mUv +hgc +sZd +wlB +gOp +wlB +qNX +rXk +wlB +ghW +kAH +wlB +aQN +tMZ +lTg +tmZ +tmZ +tmZ +dTG +kyp +kyp +jTj +elI +fWd +xFb +xFb +dRs +qvS +kyp +kyp +kyp +hds +exX +dRs +xFb +dRs +qvS +cFh +cFh +hds +dRs +xFb +xFb +xFb +dRs +dRs +dRs +bUP +bUP +bUP +ghN +rvD +bGU +qoI +gPi +gPi +jTR +elP +bGU +lzT +lzT +bGU +bGU +bGU +bGU +bGU +rvD +bGU +bGU +bGU +bGU +bGU +vNB +prl +kyD +pYI +pZS +bGU +pYI +bGU +huE +prl +kyD +bGU +uTY +bGU +huE +kyD +pYI +bGU +bGU +bGU +kyD +bGU +orr +rvD +pGs +pGs +pGs +pGs +pGs +pGs +iFQ bsf +hre bsf hre bsf @@ -56712,9 +66839,9 @@ bsf bsf bsf kkv -pGs -pGs -pGs +bsf +bsf +bsf pGs pGs pGs @@ -56724,139 +66851,139 @@ pGs wUU "} (159,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -ucx -kmy -kmy -ucx -kmy -kmy -kmy -kmy -kmy -kmy -kmy -kmy -kmy -kmy -kmy -kmy -kmy -kmy -kmy -kmy -kmy -kmy -kmy -kmy -kmy -kmy -kmy -jrK -jrK -jrK -jrK -jrK -fOA -fLS -fLS -fLS -fLS -fLS -pGs -pGs -pGs -pGs -hre -hre +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +xVw +nBc +tmZ +rXk +wlB +kAH +wlB +wlB +qNX +rXk +wlB +wlB +qNX +tmZ +tmZ +tmZ +rXk +wlB +wlB +aQN +lTg +kAH +wlB +uIW +nsN +wlB +lTg +wlB +wlB +aQN +aQN +tMZ +pTI +rnL +pdK +pjD +jek +jek +jek +fWd +xFb +xFb +xFb +xFb +pjD +jek +jek +jek +fWd +xFb +xFb +dRs +xFb +qvS +kyp +kyp +hds +dRs +dRs +dRs +xFb +dRs +dRs +xFb +xFb +xFb +bUP +ghN +bGU +bGU +ejM +bUP +bUP +veV +jTR +bGU +rvD +lzT +bGU +rvD +bGU +rvD +trI +bGU +bGU +bGU +bGU +bGU +bGU +bjC +kyD +huE +huE +huE +kyD +huE +bGU +rqg +gPi +gPi +bko +gPi +jTR +bGU +huE +bGU +pYI +lzT +lzT +bGU +pYK +pYI +qZJ +kyD +bGU +bGU +iOi +rvD +bGU +iFQ bsf puq hre @@ -56871,9 +66998,9 @@ bsf bsf kkv bsf +puq bsf -bsf -bsf +pDX bsf avD avD @@ -56890,14 +67017,14 @@ uvd avD avD bsf +pDX +bsf +bsf +bsf +bsf bsf bsf bsf -pGs -pGs -pGs -pGs -pGs pGs pGs pGs @@ -56906,151 +67033,151 @@ pGs wUU "} (160,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -ucx -ucx -ucx -kmy -ucx -ucx -kmy -lEP -kmy -kmy -ucx -ucx -kmy -kmy -ucx -kmy -kmy -ucx -kmy -ucx -kmy -ucx -ucx -kmy -ucx -kmy -lEP -kmy -jrK -jrK -jrK -jrK -jrK -xgH -hmu -fLS -vrp -fLS -fLS -vrp -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +wBp +pdK +pdK +jJn +wlB +wlB +wlB +lTg +uIW +nBc +tmZ +tmZ +sXc +pdK +pdK +pdK +nsN +wlB +tLS +wlB +wlB +wlB +wlB +uIW +nsN +wlB +wlB +lTg +wlB +lTg +tMZ +fbw +pdK +pdK +pdK +xFb +xFb +xFb +xFb +dRs +xFb +xFb +dRs +xFb +xFb +dRs +xFb +dRs +xFb +dRs +dRs +xFb +xFb +pjD +jek +jek +fWd +dRs +xFb +xFb +xFb +xFb +xFb +xFb +xFb +xFb +bUP +ghN +bGU +ylB +ejM +bUP +xFb +bUP +veV +jTR +bGU +bGU +bGU +lzT +bGU +bGU +pYK +bGU +bGU +bGU +prl +bGU +kyD +bGU +bGU +huE +huE +ipC +bGU +rqg +gPi +xeU +dRs +spv +spv +aXn +kyj +gPi +bko +jTR +pZS +fFw +lzT +fcp +huE +bLV +bGU +bGU +bLV +rvD +bGU +bGU +rvD +fBV hre -bsf -bsf hre hre hre -hre -bsf bsf bsf -bsf -hre +oWx +oWx +pDX bsf bsf -fBB +gRU bsf bsf bsf @@ -57058,7 +67185,7 @@ bsf bsf bsf avD -ilr +fFK uvd smx aCl @@ -57076,10 +67203,10 @@ bsf bsf bsf bsf -pGs -pGs -pGs -pGs +bsf +bsf +bsf +lDF pGs pGs pGs @@ -57088,150 +67215,150 @@ pGs wUU "} (161,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -ucx -kmy -ucx -ucx -kmy -ucx -kmy -kmy -ucx -ucx -ucx -kmy -ucx -kmy -kmy -ucx -kmy -kmy -ucx -kmy -kmy -jrK -jrK -jrK -jrK -jrK -jrK -fOA -fLS -fLS -fLS -fLS -fLS -fLS -pGs -hre -hre -hre -hre -pGs -pGs -pGs -gKH +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +cJL +wBp +rnL +pdK +nBc +tmZ +tmZ +tmZ +tmZ +sXc +rnL +pdK +pdK +pdK +urD +rnL +pdK +nBc +tmZ +tmZ +tmZ +tmZ +tmZ +tmZ +xJH +nsN +wlB +wlB +wlB +wlB +wlB +pvQ +tMZ +pdK +pdK +pdK +dRs +xFb +xFb +xFb +xFb +xFb +xFb +xFb +dRs +byC +xFb +xFb +xFb +xFb +xFb +xFb +byC +xFb +dRs +dRs +dRs +dRs +dRs +byC +xFb +dRs +xFb +xFb +xFb +exX +xFb +bUP +veV +gPi +gPi +xfQ +bUP +xFb +bUP +bUP +veV +jTR +bGU +bGU +bGU +bGU +bGU +erQ +rvD +lzT +eXO +bGU +kyD +bGU +erQ +qoI +bko +gPi +bko +gPi +wts +dRs +spv +dRs +spv +spv +spv +dRs +dRs +spv +ghN +pZS +kyD +bGU +bGU +pZS +vXG +bGU +bGU +uFq +rvD +bGU +rvD +bGU +iFQ +bsf hre -pGs bsf bsf bsf -kkv +bsf +oXo +oWx +bsf +bsf +bsf bsf bsf kkv @@ -57240,8 +67367,8 @@ bsf bsf bsf avD -buN -ilr +pBf +fFK bye avD fJI @@ -57259,9 +67386,9 @@ bsf bsf bsf bsf -kkv -kkv -pGs +bsf +bsf +bsf pGs pGs pGs @@ -57270,147 +67397,143 @@ pGs wUU "} (162,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -kmy -jrK -jrK -jrK -jrK -jrK -jrK -fOA -fLS -fLS -fLS -vrp -fLS -fLS -fLS +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +lze +wBp +xVw +mPW +bBV +mPW +xVw +wBp +wBp +wBp +bBV +mPW +mPW +wLB +wBp +mPW +wBp +xVw +rYC +xVw +wBp +mPW +wBp +bBV +rJv +tWT +uxM +grG +tWT +uxM +loO +ifO +wBp +xVw +rYC +xVw +wBp +wBp +xVw +wBp +wBp +rYC +xVw +wBp +wBp +wBp +wBp +rYC +xVw +wBp +wBp +wBp +wBp +xVw +rYC +wBp +mPW +wLB +wBp +mPW +wLB +bBV +wLB +mPW +wBp +xFb +xFb +bUP +bUP +bUP +bUP +hwE +xFb +xFb +nKR +bUP +veV +gPi +gPi +jTR +bGU +bGU +bGU +lzT +lzT +lzT +bGU +bGU +qoI +gPi +xfQ +spv +dRs +esA +dRs +esA +dRs +spv +dRs +dRs +spv +spv +dRs +spv +spv +ghN +gRj +bGU +kyD +bGU +pZS +kyD +qhO +kyD +cYw +bGU +bGU +rvD +rvD +iFQ hre bsf +bsf hre -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs bsf bsf bsf @@ -57421,6 +67544,10 @@ bsf bsf bsf bsf +bsf +pDX +bsf +bsf avD avD avD @@ -57452,152 +67579,152 @@ pGs wUU "} (163,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -ucx -ucx -kmy -mcm -mcm -jrK -jrK -jrK -jrK -xgH -hmu -fLS -fLS -fLS -fLS -fLS -fLS -puq -hre +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +pRa +mPk +cJL +mPk +mPk +mPk +pRa +mPk +rUa +mPk +mPk +mPk +mPk +cJL +mPk +mPk +mPk +mPk +pRa +rUa +pRa +pRa +mPk +pRa +pRa +rUa +pRa +pRa +uhi +kkF +mPk +mPk +mPk +mPk +cJL +mPk +mPk +cJL +mPk +cJL +mPk +mPk +mPk +mPk +cJL +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +cJL +mPk +mPk +pRa +mPk +mPk +mPk +rUa +pRa +wLB +dRs +xFb +xFb +bUP +xFb +bUP +xFb +xFb +xFb +xFb +bUP +bUP +bUP +bUP +veV +gPi +gPi +gPi +gPi +gPi +gPi +gPi +gPi +xfQ +bUP +bUP +spv +dRs +spv +ulb +spv +dRs +dRs +esA +spv +spv +dRs +dRs +spv +dRs +veV +bko +gPi +jTR +pYI +huE +eKL +bGU +bGU +bGU +rvD +rvD +rvD +bGU +fBV +bsf +bsf bsf -kkv -pGs -pGs -pGs -pGs -pGs pGs pGs -kkv bsf bsf bsf bsf +puq +bsf +bsf +bsf bsf bsf bsf @@ -57634,155 +67761,155 @@ pGs wUU "} (164,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kTX -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -jrK -jrK -jrK -jrK -jrK -jrK -jrK -fOA -fLS -fLS -fLS -fLS -fLS -fLS -hre -hre -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +mPk +pRa +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +cJL +mPk +mPk +mPk +mPk +rUa +kkF +pkl +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPW +exX +xFb +xFb +xFb +xFb +xFb +xFb +xFb +ulb +dRs +xFb +dRs +xFb +bUP +bUP +bUP +bUP +bUP +bUP +bUP +bUP +bUP +bUP +dRs +dRs +spv +dRs +dRs +spv +dRs +dRs +spv +dRs +dRs +dRs +dRs +dRs +dRs +spv +dRs +dRs +spv +hwE +ghN +pZS +lYD +fTh +kyD +bGU +bGU +rvD +bGU +bGU +bGU pGs +kkv +hre pGs pGs pGs pGs pGs -kkv bsf bsf bsf bsf bsf +puq +bsf bsf +mMz bsf bsf avD @@ -57808,7 +67935,7 @@ bsf bsf bsf bsf -pGs +bsf pGs pGs pGs @@ -57816,136 +67943,134 @@ pGs wUU "} (165,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -kmy -kmy -jrK -jrK -jrK -jrK -jrK -fOA -fLS -fLS -fLS -fLS -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pkl +kkF +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +xVw +xFb +xFb +xFb +xFb +xFb +xFb +xFb +xFb +xFb +xFb +xFb +xFb +xFb +xFb +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +esA +dRs +dRs +spv +dRs +dRs +spv +dRs +dRs +dRs +dRs +dRs +spv +spv +dRs +spv +dRs +dRs +aaG +dkS +qlw +tjn +pmM +bGU +qZJ pGs pGs pGs @@ -57962,9 +68087,11 @@ pGs bsf bsf bsf -avD -avD -avD +bsf +bsf +crq +ulv +uvd avD bsf avD @@ -57982,15 +68109,15 @@ snS qxb avD bsf -avD -avD -avD +gFH +crq +ulv avD bsf bsf bsf bsf -kkv +bsf pGs pGs pGs @@ -57998,135 +68125,135 @@ pGs wUU "} (166,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -kmy -kmy -kmy -jrK -jrK -jrK -jrK -jrK -xgH -hmu -fLS -fLS -fLS -fLS +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +kkF +pkl +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +rYC +xFb +xFb +xFb +xFb +xFb +xFb +xFb +xFb +xFb +xFb +dRs +xFb +xFb +xFb +xFb +dRs +dRs +ulb +dRs +dRs +dRs +dRs +dRs +dRs +spv +esA +dRs +dRs +spv +dRs +dRs +dRs +spv +spv +dRs +dRs +fPy +spv +dRs +spv +dRs +dRs +esA +ihC +ghN +pmM +hTX +evW +pYK +elP +rvD pGs pGs pGs @@ -58140,14 +68267,14 @@ pGs pGs pGs pGs -pGs -bsf +gNE +gNE bsf avD -avD -lMY -lMY -avD +ulv +uvd +uvd +aEQ avD avD brT @@ -58164,15 +68291,15 @@ brT brT avD avD -avD -lMY -lMY -avD -avD +ofJ +uvd +uvd +crq +gFH +mMz bsf bsf bsf -kkv pGs pGs pGs @@ -58180,155 +68307,155 @@ pGs wUU "} (167,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -jrK -jrK -jrK -jrK -jrK -jrK -fOA -fLS -vrp -fLS -vrp -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pkl +kkF +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +xVw +xFb +xFb +xFb +xFb +xFb +xFb +xFb +xFb +xFb +xFb +xFb +dRs +xFb +xFb +dRs +xFb +xFb +dRs +dRs +dRs +dRs +dRs +dRs +dRs +esA +spv +dRs +dRs +spv +spv +dRs +dRs +dRs +spv +esA +spv +spv +dRs +dRs +esA +dRs +esA +dRs +bUP +ghN +bGU +trI +bGU +vNB +rvD +vNB +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +bsf +pDX bsf -bsf -avD -qsc -qsc -qsc +ulv +mol +mol +fof avD vNT vNT @@ -58346,11 +68473,11 @@ rmS xka fbW rnj -avD -qsc -qsc -qsc -avD +oJX +pqf +uvd +ulv +gFH bsf bsf bsf @@ -58362,152 +68489,152 @@ pGs wUU "} (168,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -kmy -jrK -jrK -jrK -jrK -jrK -jrK -fOA -fLS -fLS -fLS -fLS -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -kkv -bsf -bsf -bsf -brT +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +kkF +pkl +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +wBp +byC +xFb +xFb +xFb +xFb +xFb +xFb +byC +xFb +xFb +xFb +byC +xFb +xFb +xFb +byC +xFb +dRs +dRs +dRs +exX +dRs +exX +dRs +esA +dRs +lxs +dRs +dRs +esA +spv +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +spv +spv +dRs +dRs +bUP +veV +jTR +bGU +bGU +bGU +rvD +bGU +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +bsf +bsf +bsf +mMz +crq uvd uvd uvd @@ -58531,8 +68658,8 @@ ojF brT uvd uvd -uvd -brT +crq +ulv bsf bsf bsf @@ -58544,136 +68671,136 @@ pGs wUU "} (169,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -kmy -kmy -kmy -kmy -kmy -jrK -xgH -hmu -fLS -fLS -fLS -fLS +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pkl +kkF +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +wBp +wBp +wLB +mPW +wLB +bBV +xVw +wBp +wBp +wBp +xVw +wBp +rYC +wBp +xVw +wBp +wBp +wBp +rYC +xVw +wBp +wBp +wBp +bBV +wBp +xBH +dRs +dRs +dRs +dRs +dRs +dRs +esA +spv +dRs +dRs +dRs +dRs +spv +esA +esA +dRs +dRs +dRs +bUP +bUP +ghN +bGU +bGU +bGU +rvD +bGU +bGU pGs pGs pGs @@ -58685,13 +68812,13 @@ pGs pGs pGs pGs -kkv bsf bsf bsf -brT -uvd +bsf +ulv uvd +crq uvd brT bPx @@ -58701,347 +68828,162 @@ snS cRn brT czG -kjI -kjI -snS -brT -kjI -snS -xka -ndp -kjI -brT -uvd -uvd -uvd -brT -bsf -bsf -bsf -bsf -pGs -pGs -pGs -pGs -wUU -"} -(170,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -ucx -kmy -jrK -jrK -fOA -fLS -fLS -fLS -vrp -fLS -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -kkv -bsf -bsf -bsf -bsf -brT -uvd -uvd -uvd -brT -kjI -snS -xka -snS -kjI -mRs -snS -kjI -kjI -snS -mRs -kjI -snS -xka -eBS -kjI -brT -uvd -uvd -uvd -brT -bsf -fBB -bsf -bsf -pGs -pGs -pGs -pGs -wUU -"} -(171,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -ucx -ucx -kmy -jrK -jrK -fOA -fLS -fLS -fLS -fLS -fLS +izi +izi +snS +brT +kjI +snS +xka +ndp +kjI +brT +uvd +kEK +uvd +gFH +bsf +bsf +bsf +bsf +bsf pGs pGs pGs +wUU +"} +(170,1,1) = {" +wUU +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +kkF +pkl +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +cJL +mPk +mPk +mPk +mPk +mPk +cJL +mPk +tTq +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +spv +spv +spv +spv +spv +spv +dRs +dRs +dRs +dRs +bUP +ucL +ghN +bGU +bGU +bGU +bGU +rvD +vNB +bGU pGs pGs pGs @@ -59049,14 +68991,199 @@ pGs pGs pGs pGs +pGs +pGs +kkv +bsf bsf bsf -fBB bsf +ulv +ulv +uvd +uvd +brT +kjI +snS +xka +snS +kjI +mRs +snS +kjI +kjI +snS +mRs +kjI +snS +xka +eBS +kjI brT uvd uvd uvd +uvd +bsf +gRU +bsf +bsf +bsf +pGs +pGs +pGs +wUU +"} +(171,1,1) = {" +wUU +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pkl +kkF +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +mPk +mPk +mPk +mPk +rYC +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +bUP +ghN +bGU +bGU +bGU +bGU +rvD +rvD +rvD +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +pGs +bsf +bsf +gRU +bsf +brT +kEK +uvd +uvd brT kjI kjI @@ -59083,144 +69210,144 @@ bsf bsf bsf bsf -pGs +bsf pGs pGs pGs wUU "} (172,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -kmy -jrK -jrK -xgH -hmu -fLS -fLS -fLS -fLS +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +kkF +pkl +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +rUa +mPW +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +ulb +bUP +veV +jTR +bGU +akg +bGU +rvD +rvD +bGU pGs pGs pGs @@ -59235,7 +69362,7 @@ bsf bsf bsf bsf -brT +ulv uvd uvd uvd @@ -59265,145 +69392,144 @@ bsf bsf bsf bsf -pGs +bsf pGs pGs pGs wUU "} (173,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -ucx -kmy -jrK -jrK -jrK -fOA -fLS -fLS -fLS -fLS -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pkl +kkF +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +xVw +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +bUP +ghN +bGU +bGU +bGU +bGU +bGU +rvD pGs pGs pGs @@ -59417,6 +69543,7 @@ bsf bsf bsf bsf +bsf brT uvd uvd @@ -59429,7 +69556,7 @@ snS snS brT snS -kjI +ujg kjI snS brT @@ -59446,146 +69573,145 @@ brT bsf bsf bsf -kkv -pGs +bsf +bsf pGs pGs pGs wUU "} (174,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -kmy -jrK -jrK -jrK -xgH -hmu -fLS -fLS -fLS -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +kkF +pkl +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +wBp +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +bUP +veV +jTR +bGU +bGU +bGU +vNB +rvD pGs pGs pGs @@ -59599,7 +69725,8 @@ bsf bsf bsf bsf -brT +bsf +ulv uvd uvd uvd @@ -59628,145 +69755,144 @@ brT bsf bsf bsf -pGs -pGs +bsf +bsf pGs pGs pGs wUU "} (175,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -jrK -jrK -jrK -jrK -fOA -fLS -fLS -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pkl +kkF +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +wBp +byC +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +xFb +xFb +bUP +bUP +ghN +bGU +vNB +bGU +rvD pGs pGs pGs @@ -59781,7 +69907,8 @@ bsf bsf bsf bsf -brT +bsf +ulv uvd uvd uvd @@ -59809,149 +69936,145 @@ uvd brT bsf bsf -kkv -pGs -pGs +bsf +bsf +bsf pGs pGs pGs wUU "} (176,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -ucx -jrK -jrK -jrK -jrK -fOA -fLS -fLS -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +kkF +pkl +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +rYC +xFb +xFb +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +dRs +xFb +xFb +dRs +dRs +tHc +jFL +ghN +bGU +bGU +rvD +rvD pGs pGs pGs @@ -59963,6 +70086,10 @@ bsf bsf bsf bsf +bsf +bsf +bsf +bsf brT uvd uvd @@ -59991,8 +70118,8 @@ uvd brT bsf bsf -kkv -pGs +bsf +bsf pGs pGs pGs @@ -60000,140 +70127,136 @@ pGs wUU "} (177,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -mcm -jrK -jrK -jrK -fOA -fLS -fLS -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pkl +kkF +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +wBp +byC +xFb +xFb +xFb +dRs +dRs +dRs +dRs +dRs +dRs +dRs +xFb +dRs +dRs +xFb +dRs +xFb +dRs +dRs +xFb +xFb +jFL +ghN +vNB +rvD +frR +bGU pGs pGs pGs @@ -60144,6 +70267,10 @@ pGs bsf bsf bsf +hre +bsf +bsf +bsf bsf brT uvd @@ -60156,10 +70283,10 @@ snS snS snS snS -kjI +izi kjI cTb -kjI +izi snS snS snS @@ -60173,8 +70300,8 @@ uvd brT bsf bsf -pGs -pGs +bsf +bsf pGs pGs pGs @@ -60182,143 +70309,136 @@ pGs wUU "} (178,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP wUU -vGb -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -ucx -kmy -mcm -mcm -jrK -jrK -fOA -fLS -fLS -pGs -pGs -pGs -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +kkF +pkl +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +wBp +xFb +xFb +dRs +xFb +byC +dRs +xFb +dRs +byC +xFb +xFb +dRs +byC +dRs +xFb +byC +xFb +xFb +xFb +byC +xFb +exX +kyj +jTR +dlD +bGU +rvD pGs pGs pGs @@ -60327,12 +70447,19 @@ bsf bsf bsf bsf +hre +hre +bsf +bsf +bsf +bsf +bsf brT uvd uvd uvd wNI -aEn +xqS rco kjI kjI @@ -60347,16 +70474,16 @@ kjI kjI atM pTc -vRt +lvt lFr uvd uvd uvd -brT +uvd +bsf bsf bsf bsf -pGs pGs pGs pGs @@ -60364,159 +70491,159 @@ pGs wUU "} (179,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP wUU -vGb -hht -hht -hht -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -vGb -hht -xJn -pGs -pGs -pGs -pGs -pGs +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +hJB +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +wBp +xVw +rYC +xVw +wBp +wBp +wBp +xVw +wBp +rYC +wBp +wBp +xVw +wBp +wBp +rYC +wBp +xVw +wBp +rYC +xVw +wBp +xVw +rYC +enZ +iAE pGs pGs pGs pGs pGs -pGs -pGs -kkv bsf +bsf +bsf +bsf +bsf +hre +hre kkv bsf bsf +bsf +bsf brT uvd uvd +iwV uvd -eIr -ioM +smx rco -kjI +izi kjI kjI kjI @@ -60527,14 +70654,14 @@ kjI kjI kjI kjI -kjI +izi pTc -fpV -nau +nzb uvd +iwV uvd uvd -brT +ulv bsf bsf bsf @@ -60546,73 +70673,6 @@ pGs wUU "} (180,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP wUU wUU wUU @@ -60675,48 +70735,115 @@ wUU wUU wUU wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +cJL +mPk +mPk +mPk +cJL +pRa +mPk +mPk +mPk +rUa +imk +rJv +iAE pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -kkv kkv bsf +tRN +hre +hre +hre +hre +bsf +bsf +bsf +bsf +bsf bsf brT uvd uvd uvd -avD -avD -avD -avD -snS +eIr +uxi +rco kjI snS kjI +snS +izi kjI kjI -kjI +izi snS kjI snS -avD -avD -avD -avD -uvd +snS +hTQ +vPh +nau uvd uvd -brT +ulv +crq bsf bsf bsf @@ -60817,69 +70944,69 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +mPk +pRa +pRa +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +imk +mPk +pRa +imk +rJv pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +aXb +hre +hre +hre +hre +tRN +hre +hre +hre +hre bsf bsf -brT +bsf +ulv uvd uvd uvd brT -bsf -bsf +avD +avD avD brT mvv @@ -60892,13 +71019,13 @@ czG pjm brT avD -bsf -bsf +avD +avD brT uvd uvd +ulv uvd -brT bsf bsf bsf @@ -60999,70 +71126,70 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -kkv +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +imk +xTA +pRa +wBp +fjv +mPW +mZH +kdq +tWT +uxM +tWT +grG +tWT +iAE +bsf +hre +hre +bsf bsf bsf -brT uvd uvd uvd -brT +uvd +ulv bsf bsf -avD +kjI bPF kjI jUY @@ -61079,7 +71206,7 @@ bsf brT uvd uvd -uvd +ulv brT bsf bsf @@ -61170,74 +71297,74 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +imk +mPk +xTA +pRa +imk +cJL +xTA +pRa +pRa +pRa +mPk +rUa +pRa +iWj +hre bsf +hre +hre bsf bsf -brT +crq uvd uvd uvd @@ -61363,70 +71490,70 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +pRa +mPk +pRa +pRa +mPk +pRa +pRa +pRa +pRa +xDE +kkv +dsi +dsi bsf bsf bsf -brT +uvd eiK uvd uvd -brT -bsf +ulv bsf -avD +mMz +kjI ydZ kjI jUY @@ -61437,18 +71564,18 @@ oKy asf qLH jYs -avD -bsf +kjI bsf -brT +mMz uvd uvd uvd -brT +kEK +uvd +bsf bsf bsf bsf -pGs pGs pGs pGs @@ -61545,70 +71672,70 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -bsf -fBB +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +imk +mPk +mPk +imk +mPk +mPk +pRa +mPk +pRa +pRa +mPk +pRa +mPk +rUa +iWj +tOV +dsi +dsi +hre +gRU bsf -brT +ulv dHD +kEK uvd -uvd -brT +ulv bsf bsf -avD +qEn iSC kjI jUY @@ -61617,21 +71744,21 @@ kjI kjI pfL asf -bSO +vmY mke -avD +kjI bsf bsf brT uvd uvd -uvd -brT +ulv +ulv +bsf +gRU +bsf bsf -fBB bsf -kkv -pGs pGs pGs pGs @@ -61727,93 +71854,93 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -bsf +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +imk +mPk +pRa +pRa +pRa +pRa +mPk +pRa +pRa +pRa +mPk +pRa +iWj +tRN +dsi +ami +hre bsf bsf brT uvd uvd uvd -brT +kEK kTu bsf avD brT -mvv +gsu snS snS -kjI -kjI +izi +izi snS snS pjm brT -avD -bsf +kjI +mMz bsf brT uvd uvd -uvd +ulv brT bsf bsf bsf -kkv -pGs +bsf +bsf pGs pGs pGs @@ -61909,74 +72036,74 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -bsf +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +mPk +pRa +pRa +mPk +pRa +pRa +mPk +pRa +pRa +pRa +rJv +iAE +hre +hre +hre bsf bsf -brT +ulv uvd uvd uvd brT -fBB +gRU mLJ avD brT brT brT -snS +uTA jbR kjI snS @@ -61984,18 +72111,18 @@ brT brT brT avD -eIK +bhU bsf -brT uvd uvd uvd -brT +uvd +uvd +mMz +bsf bsf bsf bsf -pGs -pGs pGs pGs pGs @@ -62091,61 +72218,61 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -kkv -bsf +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +mPk +hfZ +mPk +mPk +pRa +mPk +mPk +pRa +pRa +mPk +jhK +mPk +mPk +cJL +xDE +aOG +tRN bsf +tOV bsf lqa ulv @@ -62154,7 +72281,7 @@ uvd brT vdV tPE -lfQ +qza kjI rco kjI @@ -62163,12 +72290,12 @@ aJp kjI snS kjI -qAd +hTQ kjI -uJk +vus xfD -bsf -brT +mMz +ulv uvd uvd brT @@ -62176,8 +72303,8 @@ brT bsf bsf kkv -pGs -pGs +bsf +bsf pGs pGs pGs @@ -62273,93 +72400,93 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -bsf -bsf -bsf -bsf -pTO +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +itL +xce +byF +xce +xce +xce +xce +xce +byF +xce +xce +xce +xce +xce +xce +gBP +hXq +hXq +hXq +hXq +hXq +qbX uvd +iwV uvd -uvd -brT -bsf +ulv bsf +jeT lbX -bNF -brT -kjI +izi +rco +izi dTe kjI kjI kjI -kjI -brT -nZZ -nTq -bsf +izi +qAd +izi +xuX +tfC bsf brT uvd uvd -brT +uvd +bsf +bsf +bsf bsf bsf bsf -pGs -pGs -pGs pGs pGs pGs @@ -62407,69 +72534,30 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP cLP cLP cLP @@ -62495,30 +72583,69 @@ cLP cLP cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -kkv +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +pRa +eXw +pRa +pRa +pRa +pRa +pRa +eXw +pRa +pRa +pRa +pRa +pRa +eXw +iWj bsf -bsf -bsf -bsf -gFY +vxi +dsi +hre +vxi +esK vBZ -uvd +kEK eiK -brT +ulv bsf jwf -nJq +ehM kjI rco eRQ @@ -62529,18 +72656,18 @@ kjI kjI qAd kjI -vlJ +cXa rYi bsf brT uvd -uvd -brT +rDK +ulv +bsf +bsf bsf bsf bsf -pGs -pGs pGs pGs pGs @@ -62637,67 +72764,67 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -bsf -bsf +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +eXw +pRa +pRa +pRa +pRa +pRa +eXw +pRa +pRa +pRa +pRa +pRa +eXw +rJv +sXn +hre bsf +hre bsf bsf bJH ulv ulv -brT +ulv bsf jXp avD @@ -62714,10 +72841,10 @@ avD avD xfD bsf -brT -brT -brT -brT +ulv +uvd +ulv +kEK bsf bsf bsf @@ -62819,65 +72946,65 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -bsf -bsf -bsf +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +pRa +eXw +pRa +pRa +pRa +pRa +pRa +eXw +pRa +pRa +pRa +pRa +pRa +eXw +pRa +rJv +apG +vxi +dsi +dsi bsf pTO -bsf +vxi uvd brT bsf @@ -62896,9 +73023,9 @@ ueQ avD bsf bsf -brT -brT -brT +crq +uvd +uvd bsf bsf bsf @@ -63001,76 +73128,76 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -bsf +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +eXw +pRa +pRa +pRa +pRa +pRa +eXw +pRa +pRa +pRa +pRa +pRa +eXw +pRa +pRa +rJv +iAE bsf +hre bsf gFY lqM lTv -brT +ulv gNE gNE avD -bTN +gSE asf kjI izi -uTA -uTA +snS +snS izi kjI jUY @@ -63078,8 +73205,8 @@ bTN avD bsf bsf -brT -brT +ulv +ulv brT bsf bsf @@ -63183,70 +73310,70 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -kkv -bsf -bsf -bsf +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +mPk +pRa +eXw +pRa +pRa +pRa +pRa +pRa +eXw +pRa +pRa +pRa +pRa +pRa +eXw +pRa +pRa +pRa +iWj bsf +dsi +hre +vxi +vxi fcf gFY lqM lqM -avD +ulv kEK kjI kjI @@ -63257,7 +73384,7 @@ ijo kjI kjI ueQ -avD +ulv bsf bsf bsf @@ -63366,25 +73493,10 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP +cLP +cLP +cLP +cLP cLP cLP cLP @@ -63405,41 +73517,56 @@ cLP cLP cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -kkv -bsf +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +eXw +pRa +pRa +pRa +pRa +pRa +eXw +pRa +pRa +pRa +pRa +pRa +eXw +pRa +pRa +pRa +rJv +iAE +hre +hre bsf bFo fcf bsf bsf -bsf -avD -avD +vxi +ulv +uvd uvd kjI izi -uTA -uTA +snS +snS izi kjI kEK avD -avD +sOw bsf bsf bsf @@ -63548,136 +73675,110 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -kkv -fBB -bsf -bsf -bsf -bsf -bsf -bsf -nEY -avD -uvd -kjI -qEn -avD -avD -kjI -eiK -hte -avD -bsf -bsf -bsf -bsf -bsf -bsf -bsf -bsf -bsf -bsf -bsf -bsf -bsf -pGs -pGs -pGs -wUU -"} -(197,1,1) = {" -dGr -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +cLP +wUU +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +eXw +pRa +pRa +pRa +pRa +pRa +eXw +pRa +pRa +pRa +pRa +pRa +eXw +pRa +pRa +pRa +rUa +iWj +bsf +hre +bsf +vxi +bsf +vxi +bsf +bsf +nEY +avD +cdc +kjI +qEn +avD +avD +dUS +eiK +uvd +ulv +bsf +bsf +bsf +bsf +bsf +bsf +bsf +bsf +bsf +bsf +bsf +bsf +bsf +pGs +pGs +pGs +wUU +"} +(197,1,1) = {" +dGr +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP gsP gsP gsP @@ -63749,6 +73850,17 @@ gsP gsP gsP gsP +gsP +gsP +gsP +gsP +gsP +gsP +gsP +cLP +cLP +cLP +cLP cLP cLP cLP @@ -63769,28 +73881,43 @@ cLP cLP cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -bsf -bsf +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +pRa +eXw +pRa +pRa +pRa +pRa +pRa +eXw +pRa +pRa +pRa +pRa +pRa +eXw +pRa +pRa +pRa +ovT +uNz +vxi bsf +vxi bsf bsf bsf +pDX bsf lVf iyk @@ -63802,10 +73929,10 @@ fxR kjI kjI fcF -avD +ulv bsf bsf -eMf +bmI bsf bsf bsf @@ -63912,25 +74039,10 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP +cLP +cLP +cLP +cLP cLP cLP cLP @@ -63951,24 +74063,39 @@ cLP cLP cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -bsf -bsf +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +itL +lwm +tjs +lwm +lwm +lwm +lwm +lwm +tjs +lwm +lwm +lwm +lwm +lwm +tjs +lwm +lwm +hjK +stK +hXq +hXq +hXq +hXq qCT qCT qCT @@ -63983,8 +74110,8 @@ kjI kjI kjI ulv -avD -hte +uvd +ulv uaU bsf bsf @@ -64094,25 +74221,10 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP +cLP +cLP +cLP +cLP cLP cLP cLP @@ -64133,32 +74245,47 @@ cLP cLP cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -bsf +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +jhK +mPk +pRa +mPk +mPk +pRa +pRa +mPk +vjZ +aAr +fGN +wFJ +xrl +pRa +hfZ +iWj +tRN +hre +hre +gRU qCT byw oXC sxR qCT -fBB +gRU bsf luu -hte +uvd crq kjI hoU @@ -64170,7 +74297,7 @@ nmH hmg bsf bsf -fBB +gRU bsf bsf lDF @@ -64276,25 +74403,10 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP +cLP +cLP +cLP +cLP cLP cLP cLP @@ -64315,22 +74427,37 @@ cLP cLP cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +mPk +mPk +mPk +pRa +pRa +pRa +pRa +itL +kif +fGN +fGN +xrl +pRa +mPk +xDE +hre +gOj +hre qCT qUK rCB @@ -64341,7 +74468,7 @@ qCT bsf bsf hte -avD +sOw kZl ulv hoU @@ -64458,25 +74585,10 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP +cLP +cLP +cLP +cLP cLP cLP cLP @@ -64497,22 +74609,37 @@ cLP cLP cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +pRa +mPk +pRa +kWf +cKB +mdM +mdM +hjf +pRa +fDH +ymb +hre +hre +hre qCT mzK kKS @@ -64528,7 +74655,7 @@ gRN crq uli kEK -hte +ulv lqM vRW bsf @@ -64640,25 +74767,10 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP +cLP +cLP +cLP +cLP cLP cLP cLP @@ -64679,22 +74791,37 @@ cLP cLP cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +pRa +pRa +pRa +mPk +pRa +pRa +pRa +pRa +pRa +ovT +ymb +hre +tRN +hre +bsf qCT kzp kKS @@ -64706,10 +74833,10 @@ oUh yfV bsf hte -hte -ojK -uvd -avD +sOw +akn +iwV +ulv hte bsf bsf @@ -64822,25 +74949,10 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP +cLP +cLP +cLP +cLP cLP cLP cLP @@ -64861,22 +74973,37 @@ cLP cLP cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +mPk +pRa +pRa +pRa +pRa +pRa +pRa +ovT +dTu +gOj +hre +bsf +bsf +bsf qCT gWL kKS @@ -64891,7 +75018,7 @@ bsf npW hTO toN -hte +ulv bsf bsf bsf @@ -65004,25 +75131,10 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP +cLP +cLP +cLP +cLP cLP cLP cLP @@ -65043,23 +75155,38 @@ cLP cLP cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +nvv +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +mPk +pRa +pRa +mPk +pRa +pRa +pRa +pRa +rUa +xDE +hre +tRN +hre +bsf +hre +bsf +bsf qCT gMp eyL @@ -65186,25 +75313,10 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP +cLP +cLP +cLP +cLP cLP cLP cLP @@ -65225,28 +75337,43 @@ cLP cLP cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +nvv +oTs +vgH pGs pGs pGs pGs bsf +hre +bsf +bsf qCT qCT qCT -bsf +pDX bsf bsf ncv @@ -65258,7 +75385,7 @@ bsf bsf bsf bsf -bsf +pDX bsf bsf kkv @@ -65368,25 +75495,10 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP +cLP +cLP +cLP +cLP cLP cLP cLP @@ -65407,22 +75519,37 @@ cLP cLP cLP wUU +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +iax pGs pGs pGs pGs pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +bsf +bsf kkv bsf bsf @@ -65550,25 +75677,10 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP +cLP +cLP +cLP +cLP cLP cLP cLP @@ -65589,15 +75701,30 @@ cLP cLP cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +iax pGs pGs pGs @@ -65619,7 +75746,7 @@ ftm tXT bsf bsf -fBB +gRU bsf bsf bsf @@ -65755,31 +75882,31 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +iax pGs pGs pGs @@ -65937,31 +76064,31 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +iax pGs pGs pGs @@ -66119,30 +76246,30 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs pGs pGs pGs @@ -66301,30 +76428,30 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs pGs pGs pGs @@ -66483,30 +76610,30 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs pGs pGs pGs @@ -66665,30 +76792,30 @@ cLP cLP cLP cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP -cLP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs pGs pGs pGs @@ -66847,30 +76974,30 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs pGs pGs pGs @@ -67029,30 +77156,30 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs pGs pGs pGs @@ -67211,30 +77338,30 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU -pGs -pGs -pGs -pGs -pGs -pGs -pGs -pGs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs pGs pGs pGs @@ -67393,22 +77520,22 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs pGs pGs pGs @@ -67575,22 +77702,22 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs pGs pGs pGs @@ -67757,22 +77884,22 @@ gsP gsP gsP gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP -gsP wUU +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs +gKs pGs pGs pGs @@ -67939,21 +78066,21 @@ dGr dGr dGr dGr -dGr -dGr -dGr -dGr -dGr -dGr -dGr -dGr -dGr -dGr -dGr -dGr -dGr -dGr -dGr +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU +wUU wUU wUU wUU diff --git a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm index f5aa892fc6f0..1f81d5d13e61 100644 --- a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm +++ b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm @@ -10,7 +10,7 @@ /area/space) "aac" = ( /turf/closed/wall/strata_ice/dirty, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "aad" = ( /turf/closed/wall/strata_ice/jungle, /area/strata/ug/interior) @@ -402,13 +402,6 @@ /obj/effect/blocker/sorokyne_cold_water, /turf/open/gm/river, /area/strata/ag/exterior/paths/cabin_area) -"abx" = ( -/obj/effect/landmark/corpsespawner/clown, -/turf/open/floor/strata{ - dir = 10; - icon_state = "multi_tiles" - }, -/area/strata/ag/interior/outpost/gen/bball/nest) "aby" = ( /obj/structure/machinery/camera/autoname{ dir = 8 @@ -427,7 +420,7 @@ "abA" = ( /obj/structure/fence, /turf/open/auto_turf/snow/brown_base/layer0, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "abB" = ( /obj/structure/bed/nest, /obj/effect/landmark/corpsespawner/upp, @@ -1473,11 +1466,6 @@ icon_state = "red1" }, /area/strata/ug/interior/jungle/deep/structures/res) -"aem" = ( -/obj/item/weapon/gun/pistol/c99, -/obj/effect/decal/cleanable/blood/gibs/core, -/turf/open/auto_turf/snow/brown_base/layer0, -/area/strata/ag/interior/outpost/gen/bball/nest) "aen" = ( /obj/effect/landmark/monkey_spawn, /turf/open/auto_turf/snow/brown_base/layer0, @@ -1550,13 +1538,6 @@ /obj/structure/flora/bush/ausbushes/grassybush, /turf/open/auto_turf/strata_grass/layer1, /area/strata/ug/interior/jungle/deep/minehead) -"aeA" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/pistol/c99, -/turf/open/floor/strata{ - icon_state = "red1" - }, -/area/strata/ug/interior/jungle/deep/structures/res) "aeB" = ( /obj/structure/surface/table/reinforced/prison, /turf/open/floor/strata{ @@ -1746,7 +1727,7 @@ "aff" = ( /obj/item/lightstick/planted, /turf/closed/wall/strata_ice/dirty, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "afg" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony, /turf/open/floor/strata{ @@ -4300,11 +4281,6 @@ /obj/effect/decal/cleanable/blood, /turf/open/auto_turf/snow/brown_base/layer0, /area/strata/ag/exterior/paths/cabin_area) -"amy" = ( -/obj/effect/decal/strata_decals/catwalk/prison, -/obj/item/weapon/gun/pistol/c99, -/turf/open/floor/greengrid, -/area/strata/ag/exterior/research_decks) "amz" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -4693,13 +4669,6 @@ }, /turf/open/auto_turf/snow/brown_base/layer0, /area/strata/ag/interior/restricted/devroom) -"anO" = ( -/obj/structure/bedsheetbin, -/obj/item/clothing/gloves/marine/veteran/pmc, -/turf/open/floor/strata{ - icon_state = "blue1" - }, -/area/strata/ag/interior/outpost/canteen/personal_storage) "anP" = ( /obj/structure/bedsheetbin, /obj/item/device/binoculars/range, @@ -7014,16 +6983,6 @@ icon_state = "white_cyan1" }, /area/strata/ag/interior/outpost/canteen/lower_cafeteria) -"auS" = ( -/obj/item/weapon/gun/pistol/c99, -/obj/structure/pipes/standard/manifold/hidden/cyan{ - dir = 1 - }, -/turf/open/floor/strata{ - dir = 4; - icon_state = "white_cyan1" - }, -/area/strata/ag/interior/outpost/canteen/lower_cafeteria) "auU" = ( /obj/effect/decal/cleanable/blood/gibs/down, /obj/item/dogtag, @@ -7835,7 +7794,9 @@ }, /area/strata/ag/interior/outpost/engi) "axf" = ( -/obj/structure/surface/table/reinforced/prison, +/obj/structure/tunnel/maint_tunnel{ + pixel_y = 16 + }, /turf/open/floor/strata, /area/strata/ag/interior/outpost/engi) "axg" = ( @@ -9158,15 +9119,6 @@ }, /turf/closed/wall/strata_outpost, /area/strata/ag/interior/dorms) -"aBr" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/pouch/flare/full, -/obj/item/weapon/gun/pistol/c99, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor/strata{ - icon_state = "orange_tile" - }, -/area/strata/ag/interior/dorms) "aBs" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -9733,7 +9685,7 @@ }, /area/strata/ag/interior/outpost/canteen) "aDr" = ( -/obj/structure/machinery/chem_dispenser/beer, +/obj/structure/machinery/chem_dispenser/soda/beer, /turf/open/floor/interior/plastic, /area/strata/ag/interior/outpost/canteen) "aDs" = ( @@ -9870,7 +9822,7 @@ "aDQ" = ( /obj/structure/pipes/standard/simple/hidden/cyan, /turf/closed/wall/strata_ice/dirty, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "aDR" = ( /obj/effect/decal/cleanable/blood/oil, /obj/structure/barricade/handrail/strata, @@ -10184,7 +10136,7 @@ }, /area/strata/ag/interior/dorms) "aEK" = ( -/obj/structure/machinery/chem_dispenser/beer, +/obj/structure/machinery/chem_dispenser/soda/beer, /obj/structure/surface/table/reinforced/prison, /turf/open/floor/strata{ icon_state = "orange_tile" @@ -10514,11 +10466,13 @@ }, /area/strata/ag/interior/outpost/canteen) "aFC" = ( -/obj/structure/tunnel{ - id = "hole3" +/obj/structure/machinery/light/small, +/obj/structure/tunnel/maint_tunnel, +/turf/open/floor/strata{ + dir = 10; + icon_state = "multi_tiles" }, -/turf/open/auto_turf/snow/brown_base/layer0, -/area/strata/ag/exterior/paths/north_outpost) +/area/strata/ag/interior/outpost/engi/drome) "aFD" = ( /turf/closed/wall/strata_ice/jungle, /area/strata/ag/interior/outpost/maint/canteen_e_1) @@ -10624,7 +10578,7 @@ /area/strata/ag/interior/dorms) "aFR" = ( /obj/effect/decal/cleanable/blood, -/obj/item/weapon/gun/shotgun/double/with_stock, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /obj/structure/pipes/standard/simple/hidden/cyan{ dir = 4 }, @@ -10715,7 +10669,7 @@ layer = 2.9 }, /turf/open/auto_turf/snow/brown_base/layer0, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "aGh" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/strata{ @@ -10930,7 +10884,7 @@ dir = 9 }, /turf/open/auto_turf/snow/brown_base/layer0, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "aGM" = ( /obj/item/stack/sandbags, /obj/structure/barricade/handrail/strata{ @@ -10957,7 +10911,7 @@ /area/strata/ag/interior/outpost/canteen) "aGP" = ( /turf/open/auto_turf/snow/brown_base/layer0, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "aGQ" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 2 @@ -12088,7 +12042,7 @@ }, /area/strata/ag/interior/outpost/admin) "aKQ" = ( -/obj/structure/machinery/chem_dispenser/beer, +/obj/structure/machinery/chem_dispenser/soda/beer, /obj/structure/surface/table/reinforced/prison, /turf/open/floor/strata{ dir = 4; @@ -12302,7 +12256,7 @@ pixel_y = 28 }, /turf/closed/wall/strata_outpost, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "aLy" = ( /obj/structure/platform/strata/metal{ dir = 8 @@ -14757,10 +14711,6 @@ /obj/structure/pipes/standard/simple/hidden/cyan, /turf/open/floor/strata, /area/strata/ag/exterior/research_decks) -"aTo" = ( -/obj/item/weapon/gun/pistol/c99, -/turf/open/floor/strata, -/area/strata/ag/exterior/research_decks) "aTp" = ( /obj/structure/largecrate/random/case/small, /turf/open/asphalt/cement, @@ -15831,7 +15781,6 @@ /area/strata/ag/interior/outpost/canteen/bar) "aXj" = ( /obj/structure/surface/rack, -/obj/item/book/manual/engineering_singularity_safety, /obj/structure/machinery/light/small{ dir = 8 }, @@ -15849,7 +15798,6 @@ /obj/structure/surface/rack, /obj/item/book/manual/orbital_cannon_manual, /obj/item/book/manual/research_and_development, -/obj/item/book/manual/supermatter_engine, /turf/open/floor/strata{ icon_state = "orange_cover" }, @@ -15956,7 +15904,7 @@ /area/strata/ag/interior/dorms/south) "aXG" = ( /turf/closed/wall/strata_outpost/reinforced/hull, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "aXH" = ( /obj/structure/surface/table, /obj/item/phone, @@ -16564,11 +16512,9 @@ /turf/open/auto_turf/snow/brown_base/layer2, /area/strata/ag/interior/disposals) "bad" = ( -/obj/structure/tunnel{ - id = "hole4" - }, -/turf/open/auto_turf/snow/brown_base/layer2, -/area/strata/ag/exterior/north_lz_caves) +/obj/structure/tunnel, +/turf/open/auto_turf/strata_grass/layer1, +/area/strata/ug/interior/jungle/deep/tearlake) "bae" = ( /obj/structure/prop/almayer/computers/mapping_computer, /turf/open/floor/strata{ @@ -17025,7 +16971,6 @@ "bbE" = ( /obj/structure/surface/rack, /obj/item/book/manual/engineering_guide, -/obj/item/book/manual/engineering_particle_accelerator, /turf/open/floor/strata{ icon_state = "orange_cover" }, @@ -18530,12 +18475,9 @@ }, /area/strata/ug/interior/outpost/jung/dorms/admin4) "bgX" = ( -/obj/structure/flora/bush/ausbushes/grassybush, -/obj/structure/tunnel{ - id = "hole2" - }, -/turf/open/auto_turf/strata_grass/layer1, -/area/strata/ug/exterior/jungle/deep/carplake_center) +/obj/structure/tunnel, +/turf/open/auto_turf/ice/layer1, +/area/strata/ag/exterior/marsh/center) "bha" = ( /obj/structure/pipes/standard/simple/hidden/cyan, /turf/open/auto_turf/snow/brown_base/layer1, @@ -19583,7 +19525,7 @@ dir = 1 }, /turf/open/auto_turf/snow/brown_base/layer0, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "bkX" = ( /obj/structure/platform/strata{ dir = 1 @@ -19592,7 +19534,7 @@ dir = 4 }, /turf/open/auto_turf/snow/brown_base/layer0, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "bkY" = ( /obj/structure/pipes/standard/simple/hidden/cyan, /turf/open/floor/strata{ @@ -19677,23 +19619,23 @@ "blo" = ( /obj/structure/flora/grass/tallgrass/ice, /turf/open/auto_turf/snow/brown_base/layer0, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "blp" = ( /obj/structure/platform/strata{ dir = 1 }, /turf/open/auto_turf/snow/brown_base/layer0, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "blq" = ( /obj/structure/inflatable, /turf/open/auto_turf/snow/brown_base/layer0, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "blr" = ( /obj/structure/platform_decoration/strata{ dir = 8 }, /turf/open/auto_turf/snow/brown_base/layer0, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "bls" = ( /obj/structure/machinery/light/small, /turf/open/auto_turf/ice/layer0, @@ -19704,7 +19646,7 @@ dir = 1 }, /turf/open/auto_turf/snow/brown_base/layer0, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "blv" = ( /obj/structure/platform/strata{ dir = 1 @@ -20416,7 +20358,7 @@ "bom" = ( /obj/effect/decal/cleanable/blood, /turf/closed/wall/strata_ice/dirty, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "bon" = ( /turf/open/auto_turf/strata_grass/layer0_mud_alt, /area/strata/ug/interior/jungle/deep/minehead) @@ -20781,11 +20723,6 @@ /obj/effect/decal/cleanable/blood/gibs/limb, /turf/open/auto_turf/snow/brown_base/layer0, /area/strata/ag/exterior/paths/southresearch) -"bpt" = ( -/obj/item/weapon/gun/pistol/c99, -/obj/effect/decal/cleanable/blood/gibs/core, -/turf/open/auto_turf/snow/brown_base/layer0, -/area/strata/ag/exterior/paths/southresearch) "bpu" = ( /obj/structure/machinery/colony_floodlight, /turf/open/auto_turf/snow/brown_base/layer1, @@ -22037,22 +21974,10 @@ /obj/structure/bed/chair, /turf/open/auto_turf/snow/brown_base/layer2, /area/strata/ag/exterior/marsh/center) -"buh" = ( -/obj/structure/surface/rack, -/obj/item/tool/shovel/etool/folded, -/obj/item/weapon/gun/pistol/c99, -/obj/item/attachable/bayonet/upp, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor/prison{ - icon_state = "darkredfull2" - }, -/area/strata/ag/interior/landingzone_checkpoint) "bui" = ( -/obj/structure/tunnel{ - id = "hole1" - }, -/turf/open/auto_turf/snow/brown_base/layer3, -/area/strata/ag/exterior/tcomms/tcomms_deck) +/obj/structure/tunnel, +/turf/open/auto_turf/strata_grass/layer1, +/area/strata/ug/interior/jungle/deep/minehead) "bul" = ( /obj/item/tool/shovel/snow, /turf/open/auto_turf/snow/brown_base/layer1, @@ -22620,9 +22545,13 @@ /turf/open/auto_turf/snow/brown_base/layer0, /area/strata/ag/exterior/nearlz2) "bwy" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/device/radio, -/turf/open/auto_turf/strata_grass/layer0_mud, +/obj/structure/machinery/sensortower{ + pixel_x = -8 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, /area/strata/ug/interior/jungle/platform/east/scrub) "bwA" = ( /obj/structure/flora/grass/tallgrass/ice/corner{ @@ -25013,7 +24942,7 @@ pixel_y = -8 }, /turf/closed/wall/strata_outpost/reinforced, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "bMd" = ( /turf/open/asphalt/cement{ icon_state = "cement2" @@ -25026,7 +24955,7 @@ /area/strata/ag/exterior/north_lz_caves) "bME" = ( /turf/closed/wall/strata_outpost, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "bMF" = ( /obj/structure/window/framed/strata/reinforced, /turf/open/floor/strata{ @@ -25144,7 +25073,7 @@ /area/strata/ag/exterior/research_decks) "bNW" = ( /turf/closed/wall/strata_ice/jungle, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "bOh" = ( /obj/structure/barricade/handrail/strata, /turf/open/floor/strata{ @@ -26679,11 +26608,6 @@ icon_state = "multi_tiles" }, /area/strata/ag/interior/outpost/canteen) -"caT" = ( -/obj/item/weapon/gun/pistol/c99, -/obj/effect/decal/cleanable/blood/gibs/core, -/turf/open/auto_turf/ice/layer1, -/area/strata/ag/interior/outpost/gen/bball/nest) "caV" = ( /obj/item/stack/sheet/wood, /obj/effect/decal/cleanable/blood, @@ -27004,13 +26928,6 @@ icon_state = "red1" }, /area/strata/ag/interior/outpost/security) -"cdf" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/pistol/c99, -/turf/open/floor/strata{ - icon_state = "red1" - }, -/area/strata/ag/interior/outpost/security) "cdh" = ( /turf/open/floor/strata, /area/strata/ag/interior/outpost/canteen/lower_cafeteria) @@ -28838,12 +28755,6 @@ "cpg" = ( /turf/closed/wall/strata_ice/jungle, /area/strata/ug/interior/jungle/deep/east_dorms) -"cph" = ( -/obj/item/weapon/gun/pistol/c99, -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/blood/gibs/core, -/turf/open/auto_turf/ice/layer1, -/area/strata/ag/interior/outpost/gen/bball/nest) "cpi" = ( /obj/item/stack/medical/ointment, /obj/item/stack/medical/splint, @@ -29381,7 +29292,7 @@ /obj/structure/machinery/light/small{ dir = 1 }, -/obj/item/book/manual/engineering_particle_accelerator, +/obj/item/book/manual/detective, /turf/open/floor/strata, /area/strata/ag/interior/dorms) "ctF" = ( @@ -29821,6 +29732,16 @@ icon_state = "cyan3" }, /area/strata/ag/interior/outpost/med) +"cHm" = ( +/obj/item/weapon/gun/pistol/t73, +/obj/structure/pipes/standard/manifold/hidden/cyan{ + dir = 1 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/strata/ag/interior/outpost/canteen/lower_cafeteria) "cIM" = ( /obj/structure/machinery/door/airlock/prison{ dir = 1; @@ -30522,6 +30443,13 @@ "dWm" = ( /turf/closed/wall/strata_outpost/reinforced, /area/strata/ag/interior/outpost/gen/bball) +"dWu" = ( +/obj/structure/surface/rack, +/obj/item/weapon/gun/pistol/t73, +/turf/open/floor/strata{ + icon_state = "red1" + }, +/area/strata/ag/interior/outpost/security) "dXc" = ( /obj/effect/landmark/static_comms/net_one, /turf/open/auto_turf/snow/brown_base/layer0, @@ -30605,7 +30533,7 @@ "efT" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/strata, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "egh" = ( /obj/structure/flora/bush/ausbushes/grassybush{ icon_state = "fullgrass_1" @@ -30640,6 +30568,11 @@ icon_state = "red1" }, /area/strata/ug/interior/outpost/jung/dorms/sec2) +"ejw" = ( +/obj/item/weapon/gun/pistol/t73, +/obj/effect/decal/cleanable/blood/gibs/core, +/turf/open/auto_turf/strata_grass/layer1, +/area/strata/ug/interior/jungle/deep/east_engi) "ekc" = ( /obj/structure/barricade/snow, /turf/open/auto_turf/ice/layer1, @@ -30694,13 +30627,6 @@ }, /turf/open/auto_turf/ice/layer1, /area/strata/ag/exterior/marsh/center) -"enQ" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/pistol/c99, -/turf/open/floor/strata{ - icon_state = "red1" - }, -/area/strata/ug/interior/jungle/deep/structures/engi) "enU" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -30737,7 +30663,7 @@ /area/strata/ag/exterior/research_decks) "eqV" = ( /turf/closed/wall/wood, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "era" = ( /obj/structure/machinery/power/apc{ dir = 1; @@ -30759,7 +30685,7 @@ /area/strata/ag/exterior/north_lz_caves) "esJ" = ( /turf/open/auto_turf/snow/brown_base/layer4, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "euc" = ( /obj/structure/platform_decoration/strata{ dir = 4 @@ -31203,7 +31129,7 @@ pixel_y = -8 }, /turf/closed/wall/strata_outpost/reinforced/hull, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "fiD" = ( /obj/structure/fence, /turf/open/asphalt/cement{ @@ -31636,7 +31562,7 @@ /area/strata/ag/exterior/tcomms/tcomms_deck) "fPO" = ( /turf/open/auto_turf/ice/layer1, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "fQG" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/strata{ @@ -31941,7 +31867,7 @@ /area/strata/ag/interior/outpost/gen/bball/nest) "glL" = ( /turf/open/auto_turf/snow/brown_base/layer1, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "glN" = ( /obj/structure/machinery/weather_siren{ dir = 8; @@ -32121,7 +32047,7 @@ "gAD" = ( /obj/structure/machinery/iv_drip, /turf/open/floor/strata, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "gBj" = ( /obj/effect/decal/cleanable/blood, /turf/open/auto_turf/ice/layer1, @@ -32145,7 +32071,7 @@ layer = 2.9 }, /turf/open/auto_turf/snow/brown_base/layer0, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "gFf" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/strata{ @@ -33009,6 +32935,11 @@ }, /turf/open/auto_turf/ice/layer1, /area/strata/ag/exterior/marsh) +"ioi" = ( +/turf/open/floor/strata{ + icon_state = "multi_tiles" + }, +/area/strata/ug/interior/jungle/platform/east/scrub) "ioz" = ( /obj/structure/bed/nest, /obj/effect/decal/cleanable/blood/gibs/core, @@ -33121,6 +33052,20 @@ icon_state = "purp2" }, /area/strata/ug/interior/jungle/deep/structures/engi) +"iuh" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -11 + }, +/obj/structure/mirror{ + pixel_x = -29 + }, +/obj/item/weapon/gun/pistol/t73, +/turf/open/floor/strata{ + dir = 8; + icon_state = "white_cyan2" + }, +/area/strata/ug/interior/outpost/jung/dorms/sec1) "iuB" = ( /obj/structure/machinery/light/small{ dir = 1; @@ -33303,7 +33248,7 @@ /obj/item/clothing/gloves/latex, /obj/item/storage/surgical_tray, /turf/open/floor/strata, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "iJJ" = ( /obj/effect/blocker/sorokyne_cold_water, /obj/effect/blocker/sorokyne_cold_water, @@ -33591,16 +33536,6 @@ }, /turf/closed/wall/strata_outpost, /area/strata/ag/exterior/research_decks) -"jhu" = ( -/obj/structure/surface/rack, -/obj/item/tool/shovel/etool/folded, -/obj/item/weapon/gun/pistol/c99, -/obj/item/attachable/bayonet/upp, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor/strata{ - icon_state = "red1" - }, -/area/strata/ag/interior/landingzone_checkpoint) "jit" = ( /turf/open/asphalt/cement{ icon_state = "cement2" @@ -33758,15 +33693,7 @@ "jww" = ( /obj/structure/sign/safety/biohazard, /turf/closed/wall/strata_outpost/reinforced/hull, -/area/strata/ag/exterior) -"jwS" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/pistol/c99, -/obj/item/handcuffs, -/turf/open/floor/strata{ - icon_state = "red1" - }, -/area/strata/ag/interior/research_decks/security) +/area/strata/ag/interior/mountain) "jxc" = ( /obj/effect/decal/strata_decals/catwalk/prison, /obj/structure/disposalpipe/segment, @@ -34700,6 +34627,12 @@ "lbh" = ( /turf/open/asphalt/cement, /area/strata/ag/exterior/tcomms/tcomms_deck) +"lbW" = ( +/obj/structure/tunnel/maint_tunnel, +/turf/open/floor/strata{ + icon_state = "floor3" + }, +/area/strata/ag/interior/outpost/admin) "lcq" = ( /obj/item/clothing/suit/storage/militia, /obj/item/clothing/suit/storage/snow_suit/doctor, @@ -34897,7 +34830,7 @@ pixel_y = 32 }, /turf/open/floor/strata, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "luA" = ( /obj/effect/blocker/sorokyne_cold_water, /obj/effect/blocker/sorokyne_cold_water, @@ -35085,7 +35018,7 @@ dir = 4 }, /turf/open/auto_turf/ice/layer1, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "lMB" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -35210,6 +35143,10 @@ icon_state = "fake_wood" }, /area/strata/ag/interior/outpost/gen/bball) +"lUw" = ( +/obj/item/weapon/gun/pistol/t73, +/turf/open/floor/strata, +/area/strata/ag/exterior/research_decks) "lVF" = ( /obj/effect/blocker/sorokyne_cold_water, /obj/structure/platform/strata{ @@ -35277,6 +35214,13 @@ icon_state = "red1" }, /area/strata/ag/interior/outpost/gen/bball) +"mcD" = ( +/obj/structure/surface/rack, +/obj/item/weapon/gun/pistol/t73, +/turf/open/floor/strata{ + icon_state = "red1" + }, +/area/strata/ug/interior/jungle/deep/structures/res) "mcX" = ( /obj/structure/surface/rack, /obj/item/tool/shovel/snow, @@ -36008,7 +35952,7 @@ "nhv" = ( /obj/structure/flora/grass/tallgrass/ice, /turf/open/auto_turf/ice/layer1, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "njA" = ( /obj/structure/pipes/standard/manifold/hidden/cyan{ dir = 1 @@ -36282,6 +36226,10 @@ }, /turf/open/auto_turf/strata_grass/layer1, /area/strata/ug/interior/jungle/deep/hotsprings) +"nPr" = ( +/obj/structure/tunnel, +/turf/open/auto_turf/strata_grass/layer1, +/area/strata/ug/interior/jungle/deep/east_carp) "nPJ" = ( /obj/structure/pipes/standard/manifold/hidden/cyan, /turf/open/floor/strata, @@ -36616,7 +36564,7 @@ /obj/structure/surface/rack, /obj/item/storage/pill_bottle/bicaridine, /turf/open/floor/strata, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "oyu" = ( /obj/structure/machinery/shower{ dir = 8 @@ -37466,12 +37414,14 @@ }, /area/strata/ag/interior/tcomms) "pMU" = ( -/obj/structure/flora/bush/ausbushes/grassybush, -/obj/structure/tunnel{ - id = "hole1" +/obj/structure/tunnel/maint_tunnel{ + pixel_y = 16 }, -/turf/open/auto_turf/strata_grass/layer1, -/area/strata/ug/interior/jungle/platform/east/scrub) +/turf/open/floor/strata{ + dir = 10; + icon_state = "multi_tiles" + }, +/area/strata/ag/interior/outpost/canteen/personal_storage) "pNL" = ( /obj/structure/stairs/perspective{ color = "#6e6e6e"; @@ -37909,7 +37859,7 @@ pixel_y = 10 }, /turf/closed/wall/strata_outpost/reinforced, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "qzf" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/phone{ @@ -38533,7 +38483,7 @@ "ryA" = ( /obj/structure/inflatable, /turf/open/floor/strata, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "ryK" = ( /turf/open/floor/strata{ dir = 4; @@ -38789,6 +38739,10 @@ /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/strata, /area/strata/ag/interior/tcomms) +"sah" = ( +/obj/item/weapon/gun/pistol/t73, +/turf/open/auto_turf/strata_grass/layer1, +/area/strata/ug/interior/jungle/deep/east_engi) "sau" = ( /obj/structure/machinery/power/terminal{ dir = 8 @@ -38956,6 +38910,11 @@ icon_state = "cement9" }, /area/strata/ug/interior/jungle/platform/east/scrub) +"spp" = ( +/obj/item/weapon/gun/pistol/t73, +/obj/effect/decal/cleanable/blood/gibs/core, +/turf/open/auto_turf/ice/layer1, +/area/strata/ag/interior/outpost/gen/bball/nest) "sqT" = ( /turf/closed/wall/strata_ice/dirty, /area/strata/ag/exterior/marsh/crash) @@ -39192,6 +39151,9 @@ icon_state = "floor3" }, /area/strata/ug/interior/outpost/jung/dorms/sec1) +"sPF" = ( +/turf/open/floor/strata, +/area/strata/ug/interior/jungle/platform/east/scrub) "sQs" = ( /turf/open/asphalt/cement{ icon_state = "cement9" @@ -39249,11 +39211,6 @@ icon_state = "white_cyan1" }, /area/strata/ag/interior/dorms) -"sWr" = ( -/obj/item/weapon/gun/pistol/c99, -/obj/effect/decal/cleanable/blood/gibs/core, -/turf/open/auto_turf/strata_grass/layer1, -/area/strata/ug/interior/jungle/deep/east_engi) "sWO" = ( /obj/structure/machinery/light/small{ dir = 1; @@ -39413,6 +39370,11 @@ icon_state = "floor3" }, /area/strata/ag/exterior/research_decks) +"thz" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/item/weapon/gun/pistol/t73, +/turf/open/floor/greengrid, +/area/strata/ag/exterior/research_decks) "tio" = ( /obj/structure/pipes/standard/manifold/hidden/cyan{ dir = 4 @@ -39711,7 +39673,7 @@ dir = 4 }, /turf/closed/wall/strata_ice/dirty, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "tIv" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/strata{ @@ -40021,6 +39983,16 @@ "uaH" = ( /turf/open/floor/strata, /area/strata/ug/interior/outpost/jung/dorms/admin2) +"ubo" = ( +/obj/structure/surface/rack, +/obj/item/tool/shovel/etool/folded, +/obj/item/weapon/gun/pistol/t73, +/obj/item/attachable/bayonet/upp, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/strata/ag/interior/landingzone_checkpoint) "ubx" = ( /obj/structure/largecrate/random, /obj/item/paper_bin, @@ -40045,7 +40017,7 @@ /obj/structure/inflatable/door, /obj/effect/decal/cleanable/blood, /turf/open/floor/strata, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "ueD" = ( /obj/structure/window/reinforced/tinted{ dir = 4 @@ -40154,6 +40126,14 @@ }, /turf/open/floor/strata, /area/strata/ag/exterior/research_decks) +"ulv" = ( +/obj/structure/surface/rack, +/obj/item/weapon/gun/pistol/t73, +/obj/item/handcuffs, +/turf/open/floor/strata{ + icon_state = "red1" + }, +/area/strata/ag/interior/research_decks/security) "ulL" = ( /obj/structure/platform/strata/metal{ dir = 1 @@ -40488,6 +40468,21 @@ }, /turf/open/auto_turf/ice/layer1, /area/strata/ag/exterior/paths/north_outpost) +"uPH" = ( +/obj/structure/surface/rack, +/obj/item/tool/shovel/etool/folded, +/obj/item/weapon/gun/pistol/t73, +/obj/item/attachable/bayonet/upp, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor/strata{ + icon_state = "red1" + }, +/area/strata/ag/interior/landingzone_checkpoint) +"uPR" = ( +/obj/item/weapon/gun/pistol/t73, +/obj/effect/decal/cleanable/blood/gibs/core, +/turf/open/auto_turf/snow/brown_base/layer0, +/area/strata/ag/exterior/paths/southresearch) "uRy" = ( /obj/structure/pipes/standard/simple/hidden/cyan{ dir = 4 @@ -40735,7 +40730,7 @@ pixel_y = -8 }, /turf/closed/wall/strata_outpost/reinforced, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "vmm" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/light/small{ @@ -40867,10 +40862,6 @@ icon_state = "purp2" }, /area/strata/ug/interior/jungle/deep/structures/engi) -"vsG" = ( -/obj/item/weapon/gun/pistol/c99, -/turf/open/auto_turf/strata_grass/layer1, -/area/strata/ug/interior/jungle/deep/east_engi) "vsL" = ( /obj/item/reagent_container/food/snacks/donkpocket, /turf/open/floor/strata{ @@ -41068,20 +41059,6 @@ icon_state = "cyan2" }, /area/strata/ag/interior/outpost/med) -"vDl" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -11 - }, -/obj/structure/mirror{ - pixel_x = -29 - }, -/obj/item/weapon/gun/pistol/c99, -/turf/open/floor/strata{ - dir = 8; - icon_state = "white_cyan2" - }, -/area/strata/ug/interior/outpost/jung/dorms/sec1) "vDm" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/floor/strata{ @@ -41336,7 +41313,7 @@ "wgI" = ( /obj/item/tank/anesthetic, /turf/open/floor/strata, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "whO" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/medium, @@ -41571,6 +41548,11 @@ /obj/effect/landmark/good_item, /turf/open/floor/strata, /area/strata/ug/interior/outpost/jung/dorms/admin2) +"wEU" = ( +/obj/item/weapon/gun/pistol/t73, +/obj/effect/decal/cleanable/blood/gibs/core, +/turf/open/auto_turf/snow/brown_base/layer0, +/area/strata/ag/interior/outpost/gen/bball/nest) "wFG" = ( /turf/open/auto_turf/strata_grass/layer1, /area/strata/ug/interior/jungle/deep/south_engi) @@ -41872,7 +41854,7 @@ dir = 4; icon_state = "floor3" }, -/area/strata/ag/exterior) +/area/strata/ag/interior/mountain) "xoE" = ( /obj/structure/largecrate/random, /obj/structure/barricade/handrail/strata{ @@ -42100,6 +42082,12 @@ icon_state = "multi_tiles" }, /area/strata/ag/exterior/research_decks) +"xFT" = ( +/obj/item/weapon/gun/pistol/t73, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/blood/gibs/core, +/turf/open/auto_turf/ice/layer1, +/area/strata/ag/interior/outpost/gen/bball/nest) "xGb" = ( /obj/structure/pipes/standard/simple/hidden/cyan{ dir = 6 @@ -42347,6 +42335,13 @@ "xUg" = ( /turf/open/gm/coast/south, /area/strata/ug/interior/jungle/deep/south_engi) +"xUo" = ( +/obj/structure/surface/rack, +/obj/item/weapon/gun/pistol/t73, +/turf/open/floor/strata{ + icon_state = "red1" + }, +/area/strata/ug/interior/jungle/deep/structures/engi) "xVQ" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 4 @@ -42461,6 +42456,15 @@ icon_state = "floor3" }, /area/strata/ag/interior/tcomms) +"yis" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/pouch/flare/full, +/obj/item/weapon/gun/pistol/t73, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor/strata{ + icon_state = "orange_tile" + }, +/area/strata/ag/interior/dorms) "yjG" = ( /obj/structure/flora/bush/ausbushes/var3/fullgrass, /turf/open/auto_turf/strata_grass/layer1, @@ -43739,7 +43743,7 @@ crE crE crE crE -ciy +crE crE fuA cmA @@ -44408,7 +44412,7 @@ aac aac acX acX -acX +uvZ acX aSj hkA @@ -44509,7 +44513,7 @@ crE crE crE crE -crE +ciy crE crE crE @@ -44993,7 +44997,7 @@ acX acX acX acX -acX +uvZ acX acX aac @@ -47289,7 +47293,7 @@ cwS fzN cwS cbO -jhu +uPH iVZ cxg bsU @@ -49413,7 +49417,7 @@ aXP aYd aac aac -bad +aYd aYd aXP aXP @@ -49827,7 +49831,7 @@ aac aac rsm coC -coC +bgX coC wrw aac @@ -50849,7 +50853,7 @@ jWs jWs jWs jWs -iUK +jWs jWs qbk wvF @@ -51138,7 +51142,7 @@ bWy bZV ctC azL -aBr +yis ctC aDN aER @@ -51619,7 +51623,7 @@ jWs jWs jWs jWs -jWs +iUK jWs jWs jWs @@ -54731,7 +54735,7 @@ aac aac aac mfp -buh +ubo mLe cxg kkL @@ -55884,7 +55888,7 @@ aac aac aac aac -bui +btX btq btq btv @@ -57560,7 +57564,7 @@ aac aac nkp kcw -amy +thz kcw kcw kcw @@ -60122,7 +60126,7 @@ aKB oKo oKo ras -aTo +lUw cuP cuP fBh @@ -60487,7 +60491,7 @@ ayr ayr aCu aAb -aFC +ayw ayw aAR awJ @@ -61048,7 +61052,7 @@ aac aac rKG bsS -abx +cjq bvt rKG aac @@ -61910,7 +61914,7 @@ cva ybN jWi bdU -jwS +ulv ybN aGf aGL @@ -64062,7 +64066,7 @@ blE blJ blJ bpU -bpt +uPR bqa bqv bqJ @@ -64162,7 +64166,7 @@ pIa cdo aam aar -aem +wEU adC cdo ced @@ -64618,7 +64622,7 @@ biK blQ biH bsC -bll +lbW cik bCo bGO @@ -64946,7 +64950,7 @@ aam ahn aar aar -cph +xFT ced ced hmw @@ -66114,7 +66118,7 @@ cdo aar aam aJn -caT +spp aJn aar aar @@ -68884,7 +68888,7 @@ caf ijo aAC aCc -cdf +dWu cea ceI cfx @@ -69516,7 +69520,7 @@ bvz gUj snV srk -pMU +wij wZZ htD wZZ @@ -69664,7 +69668,7 @@ cdZ gAm aAF aCf -cdf +dWu cea ceI cfx @@ -69708,7 +69712,7 @@ bgO bht bzl cfg -ppA +aFC snV tnM srk @@ -70327,7 +70331,7 @@ tjo rqL oWO sHP -vDl +iuh tPl sHP aad @@ -71803,7 +71807,7 @@ bPf bPf asO cdh -auS +cHm cgW cgW bZB @@ -73740,7 +73744,7 @@ awb agR agR aiM -bPZ +pMU bPZ bPZ bSv @@ -74256,7 +74260,7 @@ jLb jLb sKX jLb -jLb +bad aad aad aad @@ -74331,7 +74335,7 @@ akE alo bPZ alo -anO +bmX alU apG aqK @@ -75342,9 +75346,9 @@ rpX tnM wZZ bwE -bqf -csY -bqf +ioi +sPF +ioi btL btE wZZ @@ -75537,9 +75541,9 @@ rpX tnM wZZ wZZ -btK +sPF bwy -bqf +sPF bDB wZZ wZZ @@ -75732,9 +75736,9 @@ rpX tnM wZZ bqf -csZ -bwE -bqf +ioi +sPF +ioi wZZ bqf wZZ @@ -78848,7 +78852,7 @@ cpg cpg cpg cpg -bgX +kvY piY piY cwD @@ -83966,7 +83970,7 @@ ixD sXl eUW kmt -enQ +xUo sXl pqG vsy @@ -84457,7 +84461,7 @@ aad aad bHj bHj -vVK +bui bon bon bon @@ -84846,7 +84850,7 @@ aad uux adR aeh -aeA +mcD adz afs ady @@ -86040,7 +86044,7 @@ abX aue aiV awv -aeA +mcD adz ccz vEp @@ -86085,7 +86089,7 @@ sKg sKg sKg daq -daq +nPr daq daq sKg @@ -87083,7 +87087,7 @@ mLn tgC tgC tgC -sWr +ejw tgC tgC wHW @@ -87477,7 +87481,7 @@ wHW wHW hyu wHW -vsG +sah tgC mLn mLn diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index 8ba52000c917..3cd01dcd50f2 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -48,18 +48,6 @@ icon_state = "outerhull_dir" }, /area/space) -"aai" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/upper_hull) -"aaj" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) "aak" = ( /obj/effect/step_trigger/teleporter/random{ affect_ghosts = 1; @@ -73,13 +61,6 @@ }, /turf/open/space/basic, /area/space) -"aal" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "aam" = ( /obj/structure/stairs, /obj/effect/step_trigger/teleporter_vector{ @@ -99,14 +80,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"aao" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"aap" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "aaq" = ( /obj/item/bedsheet/purple{ layer = 3.2 @@ -147,9 +120,6 @@ icon_state = "plate" }, /area/almayer/living/port_emb) -"aar" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/upper_hull/u_m_s) "aas" = ( /obj/vehicle/powerloader, /obj/structure/platform{ @@ -164,7 +134,7 @@ }, /area/almayer/hallways/repair_bay) "aau" = ( -/turf/closed/wall/almayer/outer, +/turf/closed/wall/almayer/reinforced/temphull, /area/almayer/living/pilotbunks) "aav" = ( /obj/vehicle/powerloader, @@ -178,16 +148,6 @@ icon_state = "cargo" }, /area/almayer/hallways/repair_bay) -"aaw" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "aax" = ( /obj/effect/projector{ name = "Almayer_Down2"; @@ -204,10 +164,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/repair_bay) -"aaz" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "aaC" = ( /obj/structure/lattice, /turf/open/space/basic, @@ -247,16 +203,6 @@ allow_construction = 0 }, /area/almayer/stair_clone) -"aaG" = ( -/obj/effect/projector{ - name = "Almayer_Down1"; - vector_x = 19; - vector_y = -98 - }, -/turf/open/floor/almayer{ - allow_construction = 0 - }, -/area/almayer/hallways/aft_hallway) "aaH" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Down1"; @@ -268,34 +214,6 @@ icon_state = "plate" }, /area/almayer/stair_clone/upper) -"aaI" = ( -/obj/effect/projector{ - name = "Almayer_Down1"; - vector_x = 19; - vector_y = -98 - }, -/turf/open/floor/almayer{ - allow_construction = 0; - icon_state = "plate" - }, -/area/almayer/hallways/aft_hallway) -"aaJ" = ( -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/effect/projector{ - name = "Almayer_Down1"; - vector_x = 19; - vector_y = -98 - }, -/turf/open/floor/plating/almayer{ - allow_construction = 0 - }, -/area/almayer/hallways/aft_hallway) "aaK" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -336,19 +254,6 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"aaW" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/sign/safety/maint{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/hallways/aft_hallway) "aaY" = ( /obj/structure/lattice, /turf/open/space, @@ -385,12 +290,6 @@ icon_state = "silver" }, /area/almayer/hallways/repair_bay) -"abe" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "abf" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -405,42 +304,23 @@ /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, /area/almayer/lifeboat_pumps/north2) +"abj" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "abk" = ( /obj/structure/window/reinforced/toughened, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cic) -"abl" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" +"abn" = ( +/obj/structure/machinery/light{ + dir = 4 }, -/area/almayer/hallways/aft_hallway) -"abp" = ( -/obj/effect/step_trigger/clone_cleaner, -/turf/closed/wall/almayer, -/area/almayer/hull/upper_hull/u_m_s) +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "abs" = ( /turf/closed/wall/almayer/outer, /area/almayer/lifeboat_pumps/north1) -"abt" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) -"abu" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "abw" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, @@ -448,35 +328,12 @@ "abx" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) -"abA" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) "abB" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"abC" = ( -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/obj/effect/projector{ - name = "Almayer_Down1"; - vector_x = 19; - vector_y = -98 - }, -/turf/open/floor/plating/almayer{ - allow_construction = 0 - }, -/area/almayer/hallways/aft_hallway) "abE" = ( /turf/closed/wall/almayer, /area/almayer/living/basketball) @@ -518,26 +375,13 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) -"abM" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "abQ" = ( -/obj/structure/surface/rack, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, /obj/item/device/radio/intercom{ freerange = 1; name = "General Listening Channel"; pixel_y = 28 }, +/obj/structure/machinery/cm_vending/clothing/staff_officer_armory, /turf/open/floor/almayer{ icon_state = "redfull" }, @@ -567,26 +411,31 @@ icon_state = "tcomms" }, /area/almayer/shipboard/weapon_room) -"acf" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/living/starboard_garden) -"acg" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 +"acc" = ( +/obj/structure/machinery/door/airlock/almayer/security{ + access_modified = 1; + dir = 2; + name = "\improper Security Checkpoint"; + req_access = null; + req_one_access_txt = "3;19" }, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "test_floor4" + }, +/area/almayer/living/briefing) +"acd" = ( +/obj/structure/surface/rack, +/obj/item/storage/box/sprays, +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/area/almayer/hallways/aft_hallway) -"ach" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "orange" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/engineering/lower/workshop/hangar) +"acf" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/living/starboard_garden) "aci" = ( /obj/structure/window/reinforced{ dir = 4; @@ -734,17 +583,6 @@ icon_state = "red" }, /area/almayer/shipboard/weapon_room) -"act" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "acu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -763,6 +601,15 @@ "acx" = ( /turf/closed/wall/almayer, /area/almayer/lifeboat_pumps/north2) +"acy" = ( +/obj/structure/sign/safety/ladder{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "acz" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/almayer{ @@ -780,20 +627,6 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"acD" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"acE" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north2) "acF" = ( /obj/structure/machinery/light{ dir = 1 @@ -803,28 +636,6 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) -"acG" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"acH" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "acI" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = -12 @@ -835,6 +646,20 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"acJ" = ( +/mob/living/silicon/decoy/ship_ai{ + layer = 2.98; + pixel_y = -16 + }, +/obj/structure/blocker/invisible_wall, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "acK" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = 2 @@ -878,36 +703,20 @@ icon_state = "red" }, /area/almayer/shipboard/weapon_room) -"acO" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"acP" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 +"acS" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/obj/structure/sign/safety/escapepod{ - pixel_x = 8; - pixel_y = 32 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = -29 }, -/area/almayer/hallways/aft_hallway) -"acT" = ( -/obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "silver" }, -/area/almayer/lifeboat_pumps/north2) +/area/almayer/command/cichallway) "acU" = ( /obj/structure/closet/basketball, /turf/open/floor/almayer{ @@ -989,23 +798,9 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) -"adf" = ( -/obj/structure/closet, -/obj/item/clothing/suit/armor/riot/marine/vintage_riot, -/obj/item/clothing/head/helmet/riot/vintage_riot, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "adg" = ( /turf/open/floor/almayer, /area/almayer/hallways/repair_bay) -"adi" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "adj" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Down1"; @@ -1035,18 +830,10 @@ name = "ship-grade camera" }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 4; + icon_state = "green" }, /area/almayer/living/starboard_garden) -"adp" = ( -/obj/structure/machinery/light/small{ - dir = 1; - pixel_y = 20 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "adq" = ( /turf/closed/wall/almayer, /area/almayer/lifeboat_pumps/north1) @@ -1056,43 +843,22 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) -"ads" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) -"adt" = ( -/obj/item/reagent_container/glass/bucket/janibucket{ - pixel_x = -1; - pixel_y = 13 - }, -/obj/structure/sign/safety/water{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "adu" = ( /turf/open/floor/almayer, /area/almayer/shipboard/starboard_missiles) -"adv" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 8 +"adC" = ( +/obj/structure/surface/rack, +/obj/item/stock_parts/manipulator/nano{ + pixel_y = -9 }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"ady" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "S" +/obj/item/stock_parts/scanning_module/adv{ + pixel_x = 4; + pixel_y = 15 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "adD" = ( /obj/structure/window/reinforced{ dir = 1; @@ -1105,14 +871,6 @@ icon_state = "plate" }, /area/almayer/living/basketball) -"adE" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "adF" = ( /obj/structure/window/reinforced{ dir = 1; @@ -1139,10 +897,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"adI" = ( -/obj/docking_port/stationary/escape_pod/south, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_p) "adO" = ( /turf/closed/wall/almayer, /area/almayer/engineering/starboard_atmos) @@ -1152,14 +906,9 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) -"adQ" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) "adR" = ( /obj/structure/machinery/door/airlock/almayer/generic{ + access_modified = 1; name = "\improper Pilot's Office"; req_one_access_txt = "3;22;19" }, @@ -1173,31 +922,12 @@ icon_state = "test_floor4" }, /area/almayer/living/offices/flight) -"adT" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"adZ" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) "aea" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "mono" +/obj/structure/machinery/light{ + dir = 1 }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) "aeb" = ( /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -1210,10 +940,9 @@ }, /area/almayer/hallways/starboard_hallway) "aec" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/tool, +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, /area/almayer/lifeboat_pumps/north1) "aed" = ( @@ -1228,10 +957,9 @@ }, /area/almayer/living/basketball) "aee" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/toolbox, +/obj/structure/closet/emcloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, /area/almayer/lifeboat_pumps/north1) "aef" = ( @@ -1246,11 +974,12 @@ }, /area/almayer/living/offices/flight) "aei" = ( -/obj/structure/bed/chair{ - dir = 8 +/obj/structure/machinery/light{ + dir = 1 }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 5; + icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) "aej" = ( @@ -1264,27 +993,9 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"aeo" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/closet/secure_closet{ - name = "secure evidence locker"; - req_access_txt = "3" - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/shipboard/brig/evidence_storage) "aep" = ( /turf/closed/wall/almayer, /area/almayer/engineering/airmix) -"aeq" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "aer" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -1294,35 +1005,13 @@ "aet" = ( /turf/closed/wall/almayer, /area/almayer/living/starboard_garden) -"aew" = ( -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/obj/structure/closet/secure_closet/bar{ - name = "Success Cabinet"; - req_access_txt = "1" - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "aex" = ( -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/shipboard/starboard_missiles) -"aey" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "red" +/obj/item/reagent_container/food/drinks/cans/beer{ + pixel_x = 6; + pixel_y = 12 }, -/area/almayer/hallways/aft_hallway) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/lifeboat_pumps/north2) "aez" = ( /obj/structure/bed/chair, /turf/open/floor/almayer{ @@ -1336,6 +1025,9 @@ /obj/structure/machinery/light{ dir = 1 }, +/obj/structure/sign/safety/rewire{ + pixel_y = 32 + }, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -1345,20 +1037,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north2) -"aeD" = ( -/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ - req_one_access = null; - req_one_access_txt = "2;7" - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "CIC Lockdown"; - name = "\improper Combat Information Center Blast Door" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) "aeE" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, @@ -1412,6 +1090,15 @@ allow_construction = 0 }, /area/almayer/stair_clone) +"aeM" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "aeN" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -1487,6 +1174,7 @@ }, /area/almayer/hallways/aft_hallway) "aeW" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) @@ -1537,27 +1225,6 @@ icon_state = "redfull" }, /area/almayer/shipboard/starboard_missiles) -"afc" = ( -/obj/structure/reagent_dispensers/water_cooler/stacks{ - density = 0; - pixel_y = 17 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"afd" = ( -/obj/structure/largecrate/random/barrel/white, -/obj/structure/sign/safety/bulkhead_door{ - pixel_x = 32 - }, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = 32 - }, -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/lower_hull/l_f_s) "afe" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -1591,48 +1258,12 @@ "afk" = ( /turf/open/floor/engine, /area/almayer/engineering/airmix) -"afl" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "afm" = ( /turf/open/floor/almayer_hull{ dir = 6; icon_state = "outerhull_dir" }, /area/space) -"afo" = ( -/obj/structure/safe, -/obj/item/moneybag, -/obj/item/clothing/glasses/monocle, -/obj/item/weapon/telebaton, -/obj/item/book/codebook, -/obj/item/coin/silver{ - desc = "A small coin, bearing the falling falcons insignia."; - name = "falling falcons challenge coin" - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"afp" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/lifeboat_pumps/north1) -"afq" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "afr" = ( /turf/open/floor/almayer{ dir = 9; @@ -1692,16 +1323,10 @@ "afz" = ( /turf/open/floor/almayer/empty, /area/almayer/hallways/vehiclehangar) -"afA" = ( +"afB" = ( /obj/structure/machinery/light{ dir = 1 }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/lifeboat_pumps/north1) -"afB" = ( /turf/open/floor/almayer{ dir = 9; icon_state = "red" @@ -1822,6 +1447,7 @@ }, /obj/structure/disposalpipe/segment, /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + access_modified = 1; dir = 1; name = "\improper Particle Cannon Systems Room"; req_access = null; @@ -1840,9 +1466,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/starboard) -"afY" = ( -/turf/open/floor/grass, -/area/almayer/living/starboard_garden) "afZ" = ( /obj/structure/bed/chair/comfy/blue{ dir = 8 @@ -1878,48 +1501,15 @@ "agc" = ( /turf/open/floor/carpet, /area/almayer/living/commandbunks) -"age" = ( -/turf/closed/wall/almayer/reinforced, -/area/almayer/hull/upper_hull/u_f_s) "agf" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "bluecorner" }, /area/almayer/living/offices/flight) -"agh" = ( -/obj/structure/flora/bush/ausbushes/var3/fullgrass, -/turf/open/floor/grass, -/area/almayer/living/starboard_garden) -"agi" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - req_access = null; - req_one_access = null; - req_one_access_txt = "3;22;19" - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Hangar Lockdown"; - name = "\improper Hangar Lockdown Blast Door" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_s) "agj" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/living/commandbunks) -"agl" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) -"agm" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/aft_hallway) "agn" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -1961,11 +1551,26 @@ /turf/open/floor/almayer, /area/almayer/living/officer_study) "agv" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 +/obj/structure/machinery/door/airlock/multi_tile/almayer/almayer/glass{ + access_modified = 1; + dir = 2; + name = "\improper Requisitions Break Room"; + req_one_access_txt = "19;21" }, -/turf/open/floor/grass, -/area/almayer/living/starboard_garden) +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/squads/req) "agw" = ( /obj/structure/machinery/light{ dir = 8 @@ -1987,13 +1592,10 @@ /turf/open/floor/plating, /area/almayer/living/basketball) "agB" = ( -/obj/structure/flora/bush/ausbushes/var3/fullgrass, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" }, -/turf/open/floor/grass, /area/almayer/living/starboard_garden) "agG" = ( /obj/structure/stairs/perspective{ @@ -2053,24 +1655,12 @@ }, /turf/open/floor/engine, /area/almayer/engineering/airmix) -"agN" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/disposalpipe/down/almayer{ - dir = 1; - id = "almayerlink" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "agO" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/living/officer_study) -"agP" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, -/turf/open/floor/grass, -/area/almayer/living/starboard_garden) "agQ" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -2078,25 +1668,16 @@ }, /area/almayer/living/cafeteria_officer) "agS" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" }, -/turf/open/floor/grass, /area/almayer/living/starboard_garden) "agT" = ( /turf/open/floor/prison{ icon_state = "kitchen" }, /area/almayer/living/cafeteria_officer) -"agU" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "agV" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ @@ -2115,42 +1696,12 @@ icon_state = "plate" }, /area/almayer/living/cafeteria_officer) -"aha" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/airlock/almayer/command/reinforced{ - name = "\improper Commanding Officer's Quarters"; - req_access = null; - req_access_txt = "31" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/commandbunks) -"ahb" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "ahc" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/wy_mre, /obj/item/storage/box/wy_mre, /turf/open/floor/almayer, /area/almayer/living/cafeteria_officer) -"ahd" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - req_access = null; - req_one_access = null; - req_one_access_txt = "3;22;19" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_s) "ahe" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/light{ @@ -2170,14 +1721,6 @@ icon_state = "plate" }, /area/almayer/engineering/starboard_atmos) -"ahg" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "ahh" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/starboard_atmos) @@ -2196,36 +1739,16 @@ allow_construction = 0 }, /area/almayer/hallways/starboard_hallway) -"ahk" = ( -/obj/structure/closet/firecloset, +"ahl" = ( /turf/open/floor/almayer{ - icon_state = "plate" + dir = 9; + icon_state = "green" }, -/area/almayer/hull/upper_hull/u_m_s) -"ahl" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, -/turf/open/floor/grass, /area/almayer/living/starboard_garden) -"ahn" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/structure/closet, -/obj/item/clothing/under/marine, -/obj/item/clothing/suit/storage/marine, -/obj/item/clothing/head/helmet/marine, -/obj/item/clothing/head/cmcap, -/obj/item/clothing/head/cmcap, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "aho" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/living/offices/flight) -"ahp" = ( -/obj/structure/flora/bush/ausbushes/var3/brflowers, -/turf/open/floor/grass, -/area/almayer/living/starboard_garden) "ahq" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -2244,70 +1767,14 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"ahs" = ( -/obj/structure/surface/table/almayer, -/obj/item/paper_bin/uscm{ - pixel_y = 6 - }, -/obj/item/tool/pen, -/obj/structure/sign/safety/terminal{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"aht" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) -"ahu" = ( -/obj/item/device/flashlight/lamp/green{ - pixel_y = 10 - }, -/obj/structure/surface/table/almayer, -/obj/item/trash/uscm_mre{ - pixel_x = 7; - pixel_y = 4 - }, -/obj/item/reagent_container/food/snacks/mre_pack/meal1{ - pixel_x = -13; - pixel_y = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"ahv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"ahw" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"ahx" = ( -/obj/structure/closet, -/obj/item/clothing/under/marine/engineer, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "ahy" = ( -/obj/structure/closet, -/obj/item/clothing/under/marine, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 }, -/area/almayer/hull/upper_hull/u_m_s) +/turf/closed/wall/almayer, +/area/almayer/living/starboard_garden) "ahz" = ( /obj/structure/machinery/light{ dir = 1 @@ -2326,16 +1793,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/repair_bay) -"ahE" = ( -/obj/structure/window/framed/almayer/hull, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_f_s) -"ahF" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/aft_hallway) "ahG" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ dir = 2; @@ -2348,25 +1805,19 @@ icon_state = "test_floor4" }, /area/almayer/engineering/starboard_atmos) -"ahH" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "ahJ" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/engineering/starboard_atmos) +"ahL" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/food/drinks/cans/souto/diet/lime{ + pixel_x = 7; + pixel_y = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "ahM" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -2375,11 +1826,9 @@ }, /area/almayer/hallways/aft_hallway) "ahN" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "ahR" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -2393,15 +1842,6 @@ icon_state = "bluecorner" }, /area/almayer/living/offices/flight) -"ahU" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - name = "\improper Tool Closet" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_m_s) "ahV" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -2411,55 +1851,6 @@ icon_state = "bluecorner" }, /area/almayer/living/offices/flight) -"ahW" = ( -/obj/structure/surface/rack, -/obj/item/tool/extinguisher/mini{ - pixel_x = -4 - }, -/obj/item/tool/extinguisher/mini{ - pixel_x = 6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"ahX" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"ahY" = ( -/obj/structure/machinery/light, -/obj/structure/surface/table/woodentable/fancy, -/obj/item/clothing/shoes/laceup{ - desc = "The height of fashion, and they're pre-polished! The name 'Bob' is written on the inside."; - pixel_y = -5 - }, -/obj/effect/landmark/map_item, -/obj/item/device/flashlight/lamp/green, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"ahZ" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/paper_bin/uscm, -/obj/item/tool/pen, -/obj/structure/machinery/door_control{ - id = "bot_uniforms"; - name = "Uniform Vendor Lockdown"; - pixel_x = -8; - pixel_y = 10; - req_access_txt = "1" - }, -/obj/structure/machinery/door_control{ - id = "Brig Lockdown Shutters"; - name = "Brig Lockdown"; - pixel_x = 10; - pixel_y = 10; - req_access_txt = "1;3" - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "aia" = ( /turf/open/floor/almayer{ dir = 8; @@ -2469,6 +1860,7 @@ "aib" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; req_one_access = null; req_one_access_txt = "7;19" }, @@ -2547,11 +1939,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"ail" = ( -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_s) "aim" = ( /turf/open/floor/almayer{ dir = 6; @@ -2578,27 +1965,6 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) -"aip" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = 12; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -16; - pixel_y = 13 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "aiq" = ( /turf/open/floor/almayer, /area/almayer/living/cafeteria_officer) @@ -2620,34 +1986,16 @@ icon_state = "mono" }, /area/almayer/hallways/aft_hallway) -"aiv" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_s) "aiw" = ( /turf/open/floor/almayer, /area/almayer/engineering/starboard_atmos) -"aiz" = ( -/obj/structure/closet, -/obj/item/clothing/under/marine, -/obj/item/clothing/suit/storage/marine, -/obj/item/clothing/head/helmet/marine, -/obj/item/clothing/head/beret/cm, -/obj/item/clothing/head/beret/cm, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) -"aiA" = ( -/obj/structure/surface/table/almayer, -/obj/item/clipboard, -/obj/item/paper, -/obj/item/clothing/glasses/mgoggles, -/obj/item/clothing/glasses/mgoggles, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) +"aiy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 3 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/starboard_hallway) "aiB" = ( /turf/open/floor/almayer{ dir = 8; @@ -2657,27 +2005,11 @@ "aiC" = ( /turf/open/floor/almayer, /area/almayer/hallways/stern_hallway) -"aiE" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"aiF" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"aiG" = ( -/obj/structure/filingcabinet, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "aiH" = ( -/obj/item/tool/crew_monitor, -/obj/structure/surface/rack, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/living/starboard_garden) "aiJ" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Down3"; @@ -2689,17 +2021,15 @@ }, /area/almayer/stair_clone/upper) "aiP" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 4; + icon_state = "red" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/living/starboard_garden) "aiQ" = ( -/obj/structure/surface/table/almayer, /obj/structure/machinery/faxmachine, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/light/small, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -2718,50 +2048,19 @@ allow_construction = 0 }, /area/almayer/stair_clone) -"aiS" = ( -/obj/structure/closet, -/obj/item/device/flashlight/pen, -/obj/item/attachable/reddot, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"aiT" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"aiU" = ( -/obj/structure/surface/table/almayer, -/obj/item/card/id/visa, -/turf/open/floor/almayer{ - icon_state = "plate" +"aiW" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" }, -/area/almayer/hull/upper_hull/u_m_s) -"aiV" = ( -/obj/structure/bookcase/manuals/engineering, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 }, -/area/almayer/hull/upper_hull/u_f_s) -"aiW" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/carpet, /area/almayer/living/commandbunks) "aiX" = ( /turf/closed/wall/almayer, /area/almayer/living/pilotbunks) -"aiZ" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "ajd" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -2796,15 +2095,10 @@ /area/almayer/medical/upper_medical) "ajm" = ( /obj/structure/closet/secure_closet/securecom, -/obj/item/storage/box/kit/honorguard, -/obj/item/storage/box/kit/honorguard, /turf/open/floor/almayer{ icon_state = "redfull" }, /area/almayer/command/cic) -"ajo" = ( -/turf/closed/wall/almayer/white, -/area/almayer/medical/medical_science) "ajp" = ( /obj/structure/surface/table/almayer, /obj/structure/dropship_equipment/fuel/cooling_system{ @@ -2816,23 +2110,15 @@ pixel_y = 7 }, /obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/computer/working_joe{ + dir = 4; + pixel_x = -17 + }, /turf/open/floor/almayer{ dir = 8; icon_state = "silver" }, /area/almayer/hallways/repair_bay) -"ajq" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - layer = 2.5; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "ajr" = ( /turf/open/floor/almayer{ dir = 1; @@ -2917,7 +2203,10 @@ /area/almayer/hallways/aft_hallway) "ajD" = ( /obj/structure/surface/table/almayer, -/obj/effect/spawner/random/tool, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) "ajE" = ( @@ -3009,23 +2298,12 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/stern_hallway) -"ajQ" = ( -/obj/docking_port/stationary/escape_pod/east, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_s) "ajR" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/stern_hallway) -"ajS" = ( -/obj/effect/step_trigger/clone_cleaner, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "ajT" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -3080,16 +2358,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) -"akd" = ( -/obj/structure/window/framed/almayer, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_a_s) -"ake" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "akf" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -3097,71 +2365,14 @@ icon_state = "redcorner" }, /area/almayer/shipboard/weapon_room) -"akk" = ( -/obj/structure/window/reinforced/tinted/frosted, -/obj/structure/mirror{ - pixel_x = -28 - }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/turf/open/floor/almayer{ - icon_state = "sterile" - }, -/area/almayer/living/commandbunks) -"akl" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "sterile" - }, -/area/almayer/living/commandbunks) -"akm" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Bathroom" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/commandbunks) -"akn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "ako" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) -"akp" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"akr" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"aks" = ( -/obj/structure/surface/table/almayer, -/obj/item/clipboard, -/obj/item/device/binoculars, -/turf/open/floor/wood/ship, +/turf/open/floor/carpet, /area/almayer/living/commandbunks) "akt" = ( /obj/structure/cable/heavyduty{ @@ -3305,6 +2516,13 @@ /obj/structure/machinery/light{ dir = 1 }, +/obj/structure/machinery/door_control{ + id = "bot_uniforms"; + name = "Uniform Vendor Lockdown"; + pixel_x = 8; + pixel_y = 24; + req_access_txt = "31" + }, /turf/open/floor/almayer{ dir = 1; icon_state = "silver" @@ -3377,37 +2595,12 @@ icon_state = "red" }, /area/almayer/living/starboard_garden) -"akX" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "green" - }, -/area/almayer/hallways/starboard_hallway) "akY" = ( -/obj/effect/step_trigger/message/memorial, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/cable/heavyduty{ + icon_state = "4-8" }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/living/starboard_garden) -"alb" = ( -/obj/structure/machinery/door/window/westright{ - dir = 4 - }, -/obj/structure/machinery/shower{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/commandbunks) -"alc" = ( -/obj/structure/toilet{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "sterile" - }, -/area/almayer/living/commandbunks) "ald" = ( /turf/open/floor/almayer{ icon_state = "red" @@ -3417,63 +2610,56 @@ /obj/structure/machinery/light{ dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/bed/chair{ + dir = 8 }, +/turf/open/floor/almayer, /area/almayer/living/starboard_garden) "alf" = ( -/obj/structure/machinery/light/small{ +/obj/structure/machinery/light{ dir = 8 }, -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/atmos_alert{ - dir = 4; - pixel_y = 5 +/obj/structure/bed/chair{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/living/starboard_garden) "alg" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 +/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/bed/chair{ + dir = 4 }, +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) +"alh" = ( +/obj/structure/largecrate/random/case/small, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/maint/hull/upper/u_m_s) "ali" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "bluecorner" }, /area/almayer/hallways/aft_hallway) -"alj" = ( -/obj/structure/surface/table/almayer, -/obj/item/paper, -/obj/item/device/whistle, -/obj/structure/sign/safety/bathunisex{ - pixel_x = -17 +"alk" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "W_Containment Cell 1"; + name = "\improper Containment Cell 5"; + unacidable = 1 }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/closed/wall/almayer/research/containment/wall/purple, +/area/almayer/medical/containment/cell) "all" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"alm" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) -"alo" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_18" - }, -/obj/structure/machinery/light, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "alp" = ( /turf/open/floor/almayer{ dir = 9; @@ -3487,15 +2673,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) -"alr" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "als" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -3503,12 +2680,6 @@ icon_state = "bluecorner" }, /area/almayer/hallways/aft_hallway) -"alu" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/megaphone, -/obj/item/device/radio, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "alw" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 2; @@ -3548,15 +2719,33 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) +"alF" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" + }, +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + dir = 1; + name = "\improper Brig Maintenance"; + closeOtherId = "brigmaint_s" + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "perma_lockdown_2"; + name = "\improper Perma Lockdown Shutter" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/perma) "alG" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "orangecorner" }, /area/almayer/hallways/stern_hallway) -"alH" = ( -/turf/closed/wall/almayer/white/outer_tile, -/area/almayer/hull/upper_hull) "alI" = ( /obj/item/stack/cable_coil{ pixel_x = 1; @@ -3610,16 +2799,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"alT" = ( -/obj/structure/bed/chair, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "alU" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/navigation) @@ -3645,10 +2824,27 @@ }, /area/almayer/command/cic) "amb" = ( +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 80 + }, +/obj/structure/machinery/shower{ + dir = 1 + }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/pilotbunks) "amd" = ( -/turf/open/floor/almayer, +/obj/structure/machinery/vending/cola{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/pilotbunks) "amg" = ( /turf/open/floor/plating/plating_catwalk, @@ -3665,47 +2861,19 @@ }, /area/almayer/hallways/repair_bay) "amk" = ( -/turf/closed/wall/almayer/white/outer_tile, -/area/almayer/medical/medical_science) -"aml" = ( -/obj/structure/filingcabinet/filingcabinet, -/obj/item/folder/black, -/obj/item/folder/black, -/obj/item/folder/black, -/obj/item/folder/white, -/obj/item/folder/white, -/obj/item/folder/white, -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, -/turf/open/floor/wood/ship, -/area/almayer/medical/medical_science) -"amm" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/turf/open/floor/wood/ship, -/area/almayer/medical/medical_science) -"amn" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/surface/rack, -/obj/item/stack/sheet/mineral/plastic{ - amount = 15 +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 }, -/obj/item/stack/sheet/glass{ - amount = 20; - pixel_x = 3; - pixel_y = 3 +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, /turf/open/floor/almayer{ dir = 1; - icon_state = "sterile_green_side" + icon_state = "sterile_green_corner" }, -/area/almayer/medical/testlab) +/area/almayer/medical/containment) "amo" = ( /obj/structure/largecrate/random/secure, /obj/structure/sign/safety/rewire{ @@ -3722,23 +2890,23 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/repair_bay) -"amq" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ +"ams" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/atmos_alert{ dir = 8 }, /turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/command/lifeboat) -"ams" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 + icon_state = "plate" }, +/area/almayer/engineering/lower/workshop) +"amu" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/toolbox, /turf/open/floor/almayer{ - dir = 8; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/command/lifeboat) +/area/almayer/maint/hull/lower/s_bow) "amw" = ( /turf/open/floor/almayer{ dir = 9; @@ -3770,10 +2938,10 @@ }, /area/almayer/hallways/aft_hallway) "amE" = ( -/obj/structure/closet/secure_closet/guncabinet/red, /obj/item/clothing/suit/storage/marine/light/vest, /obj/item/clothing/suit/storage/marine/light/vest, /obj/item/clothing/suit/storage/marine/light/vest, +/obj/structure/surface/rack, /turf/open/floor/almayer{ icon_state = "redfull" }, @@ -3797,12 +2965,6 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"amJ" = ( -/obj/structure/largecrate/machine/bodyscanner, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "amK" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -3813,22 +2975,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) -"amL" = ( -/obj/structure/machinery/light/small{ - dir = 1; - pixel_y = 20 - }, -/obj/structure/largecrate, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"amN" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "amO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -3838,27 +2984,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) -"amP" = ( -/obj/structure/largecrate/random/case, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"amQ" = ( -/obj/structure/filingcabinet{ - density = 0; - pixel_x = -8; - pixel_y = 18 - }, -/obj/structure/filingcabinet{ - density = 0; - pixel_x = 8; - pixel_y = 18 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "amR" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -3897,13 +3022,6 @@ icon_state = "plate" }, /area/almayer/hallways/repair_bay) -"amW" = ( -/obj/structure/surface/rack, -/obj/item/storage/firstaid/toxin, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "amX" = ( /turf/open/floor/almayer{ dir = 1; @@ -3924,20 +3042,15 @@ pixel_x = -17; pixel_y = 7 }, -/obj/structure/machinery/cm_vending/clothing/pilot_officer, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/machinery/disposal, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/living/pilotbunks) -"anb" = ( -/obj/structure/machinery/conveyor{ - id = "lower_garbage" - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "plating_striped" - }, -/area/almayer/hull/lower_hull/l_m_p) "anc" = ( /turf/open/floor/almayer{ dir = 8; @@ -3945,7 +3058,17 @@ }, /area/almayer/hallways/aft_hallway) "and" = ( -/obj/effect/landmark/yautja_teleport, +/obj/structure/window/reinforced{ + dir = 4; + health = 80 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/obj/structure/machinery/shower{ + dir = 1 + }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/pilotbunks) "anf" = ( @@ -3953,6 +3076,19 @@ icon_state = "silvercorner" }, /area/almayer/hallways/aft_hallway) +"ang" = ( +/obj/item/clothing/head/welding{ + pixel_y = 6 + }, +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "anh" = ( /turf/open/floor/almayer{ dir = 6; @@ -3979,31 +3115,12 @@ allow_construction = 0 }, /area/almayer/stair_clone) -"ano" = ( -/obj/structure/machinery/light/small{ - dir = 1; - pixel_y = 20 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "anp" = ( -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/weapon/gun/pistol/m4a3, -/obj/item/weapon/gun/pistol/m4a3, -/obj/item/weapon/gun/pistol/m4a3, -/obj/item/weapon/gun/pistol/m4a3, -/obj/item/weapon/gun/pistol/m4a3, -/obj/item/weapon/gun/pistol/m4a3, -/obj/structure/closet/secure_closet/guncabinet/red, /obj/structure/sign/safety/hazard{ pixel_x = 15; pixel_y = 32 }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, /turf/open/floor/almayer{ icon_state = "redfull" }, @@ -4014,31 +3131,27 @@ name = "General Listening Channel"; pixel_y = 28 }, -/obj/structure/closet/secure_closet/guncabinet/red, /obj/item/clothing/suit/storage/marine/light/vest, /obj/item/clothing/suit/storage/marine/light/vest, /obj/item/clothing/suit/storage/marine/light/vest, /obj/item/clothing/suit/storage/marine/light/vest, /obj/item/clothing/suit/storage/marine/light/vest, /obj/item/clothing/suit/storage/marine/light/vest, +/obj/structure/surface/rack, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, /turf/open/floor/almayer{ icon_state = "redfull" }, /area/almayer/medical/upper_medical) "anr" = ( -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/weapon/gun/smg/m39, -/obj/item/weapon/gun/smg/m39, -/obj/item/weapon/gun/smg/m39, -/obj/item/weapon/gun/smg/m39, -/obj/structure/closet/secure_closet/guncabinet/red, /obj/structure/sign/safety/intercom{ pixel_x = 8; pixel_y = 32 }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, /turf/open/floor/almayer{ icon_state = "redfull" }, @@ -4049,56 +3162,34 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"ant" = ( -/obj/structure/window/reinforced{ - dir = 8; - health = 80 - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) -"anu" = ( -/obj/structure/ladder{ - height = 2; - id = "AftStarboardMaint" - }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/upper_hull/u_a_s) "anw" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/wood/ship, -/area/almayer/medical/medical_science) -"anx" = ( -/obj/structure/surface/table/almayer, -/obj/item/folder/white{ - pixel_x = 6 +/obj/structure/machinery/flasher{ + id = "Containment Cell 1"; + layer = 2.1; + name = "Mounted Flash"; + pixel_y = 30 }, -/obj/item/clothing/glasses/science{ - pixel_x = -4; - pixel_y = 7 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_side" +/turf/open/floor/almayer/research/containment/floor2{ + dir = 1 }, -/area/almayer/medical/testlab) +/area/almayer/medical/containment/cell) "anz" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/pen{ - pixel_y = 8 +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, -/obj/structure/machinery/light{ - dir = 4 +/obj/structure/machinery/photocopier, +/obj/structure/machinery/firealarm{ + pixel_y = 28 }, -/obj/item/paper_bin/wy{ - pixel_y = 7 +/turf/open/floor/almayer{ + icon_state = "sterile_green" }, -/turf/open/floor/wood/ship, -/area/almayer/medical/medical_science) +/area/almayer/medical/hydroponics) "anB" = ( /obj/structure/sign/safety/storage{ pixel_x = -17 @@ -4123,11 +3214,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/repair_bay) -"anF" = ( -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/medical/testlab) "anG" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -4150,10 +3236,6 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) -"anI" = ( -/obj/item/tool/wet_sign, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "anJ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -4179,6 +3261,8 @@ /obj/structure/surface/table/almayer, /obj/item/clipboard, /obj/item/tool/pen, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/tool, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) "anO" = ( @@ -4198,15 +3282,6 @@ icon_state = "red" }, /area/almayer/hallways/stern_hallway) -"anS" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/landinglight/ds2/delayone{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/hangar) "anT" = ( /turf/open/floor/almayer{ dir = 4; @@ -4220,6 +3295,7 @@ req_access = null; req_one_access_txt = "3;22;2;19" }, +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -4236,15 +3312,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"anX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "aoa" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -4274,22 +3341,10 @@ "aoe" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/morgue) -"aof" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/landinglight/ds1/delayone{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/hangar) "aog" = ( /obj/structure/machinery/landinglight/ds2/delayone{ dir = 8 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) "aoh" = ( @@ -4301,20 +3356,6 @@ "aoi" = ( /turf/open/floor/almayer, /area/almayer/shipboard/navigation) -"aok" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/emails, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/starboard_missiles) -"aol" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hallways/hangar) "aom" = ( /turf/open/floor/almayer{ dir = 8; @@ -4349,18 +3390,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"aot" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_10" - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/medical/upper_medical) -"aou" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "aov" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -4377,15 +3406,6 @@ icon_state = "bluecorner" }, /area/almayer/hallways/aft_hallway) -"aox" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = 25 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "silver" - }, -/area/almayer/command/cichallway) "aoy" = ( /obj/structure/sign/safety/fire_haz{ pixel_x = 8; @@ -4474,23 +3494,49 @@ }, /area/almayer/lifeboat_pumps/north1) "aoJ" = ( -/obj/structure/bed/chair{ +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "W_Containment Cell 1"; + name = "\improper Containment Cell 5"; + unacidable = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/closed/wall/almayer/research/containment/wall/purple{ dir = 1 }, -/turf/open/floor/wood/ship, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment/cell) "aoK" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 +/obj/structure/surface/table/almayer, +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/obj/structure/reagent_dispensers/water_cooler/stacks, -/obj/structure/sign/safety/chem_lab{ - pixel_x = 32 +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/door_display/research_cell{ + dir = 1; + id = "Containment Cell 5"; + name = "Cell 5 Control"; + pixel_x = 4; + pixel_y = -3 + }, +/obj/structure/machinery/door_control{ + id = "W_Containment Cell 5"; + name = "Containment Lockdown"; + pixel_x = -8; + pixel_y = -3; + req_one_access_txt = "19;28" }, /turf/open/floor/almayer{ - icon_state = "sterile_green_corner" + icon_state = "sterile_green" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) "aoL" = ( /obj/structure/bed/chair/office/dark, /turf/open/floor/almayer, @@ -4504,22 +3550,8 @@ /obj/structure/machinery/landinglight/ds1/delayone{ dir = 4 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"aoO" = ( -/obj/structure/machinery/autolathe/medilathe/full, -/obj/structure/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/testlab) "aoP" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 1; @@ -4581,13 +3613,10 @@ }, /area/almayer/hallways/stern_hallway) "aoV" = ( -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - dir = 10; - icon_state = "red" + icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/north1) "aoW" = ( @@ -4614,10 +3643,6 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) -"aoZ" = ( -/obj/structure/sign/prop1, -/turf/closed/wall/almayer/reinforced, -/area/almayer/living/commandbunks) "apa" = ( /obj/structure/surface/rack, /obj/item/tool/screwdriver, @@ -4709,21 +3734,15 @@ /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) "apq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "plate" }, /area/almayer/living/pilotbunks) "apr" = ( -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ - dir = 6; - icon_state = "red" + icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/north1) "aps" = ( @@ -4740,9 +3759,15 @@ /obj/structure/machinery/power/apc/almayer{ dir = 1 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/pilotbunks) "apu" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, /turf/open/floor/almayer{ dir = 10; icon_state = "red" @@ -4769,14 +3794,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"apA" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/obj/structure/sign/safety/rewire{ - pixel_x = 32 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "apB" = ( /obj/structure/surface/rack, /obj/item/reagent_container/food/snacks/wrapped/booniebars{ @@ -4800,21 +3817,6 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) -"apF" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/grass, -/area/almayer/living/starboard_garden) -"apI" = ( -/obj/structure/machinery/door/airlock/almayer/command{ - dir = 2; - name = "\improper Command Ladder" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull) "apJ" = ( /turf/open/floor/almayer{ dir = 8; @@ -4838,98 +3840,57 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) -"apM" = ( -/obj/structure/machinery/autolathe/armylathe/full, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"apO" = ( -/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"apP" = ( -/obj/structure/machinery/autolathe, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"apQ" = ( -/obj/structure/disposalpipe/up/almayer{ - dir = 8; - id = "almayerlink_ot_med" - }, -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/door/window/southleft{ - desc = "A window, that is also a door. A windoor if you will. This one is stronger."; - health = 500; - name = "Reinforced Glass door"; - req_one_access_txt = "2;35" - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "apR" = ( -/obj/structure/surface/rack, -/obj/item/storage/box/beakers{ - pixel_y = 12 - }, -/obj/item/storage/box/sprays{ - pixel_y = 5 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/obj/item/storage/box/autoinjectors{ - pixel_x = 1; - pixel_y = -3 +/obj/structure/machinery/alarm/almayer{ + dir = 1 }, -/obj/structure/sign/safety/storage{ - pixel_x = 23; - pixel_y = 32 +/obj/structure/pipes/vents/pump/no_boom{ + name = "Secure Reinforced Air Vent"; + welded = 1 }, /turf/open/floor/almayer{ icon_state = "sterile_green" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) "apS" = ( -/obj/structure/surface/rack, -/obj/item/storage/box/pillbottles{ - pixel_y = -2 - }, -/obj/item/storage/box/pillbottles{ - pixel_y = 6 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/obj/item/storage/box/pillbottles{ - pixel_y = 12 +/obj/structure/surface/rack{ + density = 0; + pixel_y = 16 }, -/turf/open/floor/almayer{ - icon_state = "sterile_green" +/obj/item/storage/xeno_tag_case/full{ + pixel_y = 15 }, -/area/almayer/medical/medical_science) -"apT" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/airlock/almayer/engineering/reinforced/OT{ - dir = 1 +/obj/item/device/camera{ + pixel_x = -3; + pixel_y = 22 }, -/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 1; + icon_state = "sterile_green_side" }, -/area/almayer/engineering/engineering_workshop/hangar) +/area/almayer/medical/containment) "apU" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_side" +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "W_Containment Cell 2"; + name = "\improper Containment Cell 5"; + unacidable = 1 }, -/area/almayer/medical/testlab) -"apV" = ( -/obj/structure/machinery/light{ +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/closed/wall/almayer/research/containment/wall/purple{ dir = 8 }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) +/area/almayer/medical/containment/cell) "apW" = ( /obj/structure/machinery/telecomms/server/presets/common, /turf/open/floor/almayer{ @@ -4972,30 +3933,6 @@ icon_state = "tcomms" }, /area/almayer/command/telecomms) -"aqc" = ( -/obj/structure/machinery/door_control{ - id = "panicroomback"; - name = "\improper Safe Room"; - pixel_x = -25; - req_one_access_txt = "3" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) -"aqd" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/machinery/disposal{ - density = 0; - desc = "A pneumatic delivery unit. Sends items to the requisitions."; - icon_state = "delivery_engi"; - name = "Requisitions Delivery Unit"; - pixel_y = 28 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "aqe" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -5040,10 +3977,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"aqi" = ( -/obj/structure/prop/almayer/ship_memorial, -/turf/open/floor/plating/almayer, -/area/almayer/living/starboard_garden) "aqj" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -5054,7 +3987,11 @@ /turf/open/floor/plating, /area/almayer/engineering/upper_engineering) "aqk" = ( -/turf/open/floor/plating/almayer, +/obj/structure/sign/safety/escapepod{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer, /area/almayer/living/starboard_garden) "aqm" = ( /obj/item/bedsheet/brown, @@ -5109,9 +4046,11 @@ /turf/open/floor/almayer, /area/almayer/shipboard/weapon_room) "aqw" = ( -/obj/structure/machinery/cm_vending/clothing/pilot_officer, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "mono" }, /area/almayer/living/pilotbunks) "aqx" = ( @@ -5128,16 +4067,16 @@ }, /area/almayer/hallways/starboard_hallway) "aqy" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 8; - name = "ship-grade camera"; - pixel_x = 27; - pixel_y = -27 - }, /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 }, -/turf/open/floor/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, /area/almayer/living/pilotbunks) "aqz" = ( /obj/structure/machinery/door/airlock/almayer/generic{ @@ -5148,28 +4087,6 @@ icon_state = "test_floor4" }, /area/almayer/living/pilotbunks) -"aqC" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/lifeboat) -"aqD" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/door_control{ - id = "MTline"; - name = "Next button"; - pixel_x = 5; - pixel_y = 10; - req_one_access_txt = "2;7" - }, -/obj/item/paper_bin/uscm, -/obj/item/tool/pen, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "aqF" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_10" @@ -5186,13 +4103,32 @@ /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull) +/area/almayer/medical/medical_science) +"aqH" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"aqI" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "silver" + }, +/area/almayer/living/auxiliary_officer_office) "aqJ" = ( /turf/open/floor/almayer{ dir = 5; icon_state = "red" }, /area/almayer/command/lifeboat) +"aqK" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "aqM" = ( /obj/effect/projector{ name = "Almayer_Up2"; @@ -5209,58 +4145,40 @@ icon_state = "plate" }, /area/almayer/command/cic) -"aqO" = ( -/obj/structure/machinery/chem_master{ - vial_maker = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/medical_science) "aqP" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/medical_science) -"aqQ" = ( -/turf/open/floor/almayer{ - dir = 5; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/medical_science) -"aqR" = ( -/turf/open/floor/almayer{ +/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ dir = 1; - icon_state = "sterile_green_side" + id = "Containment Cell 1"; + locked = 1; + name = "\improper Containment Cell 1" }, -/area/almayer/medical/medical_science) -"aqS" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Containment Cell 1"; + name = "\improper Containment Cell 1"; + unacidable = 1 }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "sterile_green_side" +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/area/almayer/medical/medical_science) -"aqT" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/hand_labeler{ - pixel_x = 7 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/obj/item/storage/firstaid/fire{ - pixel_x = -6 +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, +/area/almayer/medical/containment/cell) +"aqS" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" + icon_state = "sterile_green" }, -/area/almayer/engineering/engineering_workshop/hangar) +/area/almayer/medical/containment) "aqU" = ( -/turf/closed/wall/almayer, +/turf/closed/wall/almayer/reinforced, /area/almayer/command/airoom) "aqV" = ( /obj/structure/machinery/light{ @@ -5270,46 +4188,17 @@ icon_state = "tcomms" }, /area/almayer/command/telecomms) -"aqW" = ( -/obj/structure/filingcabinet, -/obj/item/folder/yellow, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "aqY" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/engineering/upper_engineering) +"aqZ" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_stern) "arb" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/morgue) -"arc" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/grass, -/area/almayer/living/starboard_garden) -"ard" = ( -/obj/structure/filingcabinet, -/obj/item/folder/yellow, -/obj/structure/machinery/power/apc/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"are" = ( -/obj/structure/machinery/computer/demo_sim{ - dir = 4; - pixel_x = -16 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "arf" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -5396,13 +4285,13 @@ }, /area/almayer/hallways/starboard_hallway) "arp" = ( -/obj/item/roller, -/obj/item/roller, -/obj/structure/surface/rack, +/obj/structure/bed/chair{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/living/starboard_garden) "arq" = ( /obj/structure/bed/chair{ dir = 4 @@ -5431,13 +4320,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"aru" = ( -/obj/structure/surface/table/almayer, -/obj/item/weapon/gun/rifle/m41a/stripped, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "arw" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/junction{ @@ -5448,21 +4330,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"ary" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/wrench, -/obj/item/reagent_container/food/drinks/cans/souto/cherry{ - pixel_x = 4; - pixel_y = 14 - }, -/obj/item/attachable/lasersight{ - pixel_x = -14; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "arz" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ @@ -5478,23 +4345,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"arC" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"arE" = ( -/obj/structure/pipes/vents/pump{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "arF" = ( /obj/structure/machinery/light{ dir = 1 @@ -5519,24 +4369,6 @@ icon_state = "redfull" }, /area/almayer/engineering/upper_engineering) -"arI" = ( -/obj/structure/closet, -/obj/item/clothing/under/marine/mp, -/obj/item/device/flash, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"arJ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "arK" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -5595,23 +4427,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/chemistry) -"arZ" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"asb" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ - id_tag = "Boat2-D2"; - linked_dock = "almayer-lifeboat2"; - throw_dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/lifeboat) "asc" = ( /turf/open/floor/almayer{ dir = 1; @@ -5620,37 +4435,22 @@ /area/almayer/command/cic) "ase" = ( /turf/open/floor/almayer{ - icon_state = "sterile" + icon_state = "cargo" }, /area/almayer/living/pilotbunks) "asf" = ( -/obj/structure/machinery/shower{ - dir = 8 - }, -/obj/structure/window/reinforced/tinted/frosted, -/obj/structure/machinery/door/window/westright, -/obj/item/tool/soap, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/pilotbunks) -"asi" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 +/obj/structure/sink{ + dir = 4; + pixel_x = 11 }, -/obj/structure/transmitter{ - dir = 8; - name = "OT Telephone"; - phone_category = "Almayer"; - phone_id = "Ordnance Tech"; - pixel_x = 14 +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" + icon_state = "dark_sterile" }, -/area/almayer/engineering/engineering_workshop/hangar) +/area/almayer/living/pilotbunks) "asj" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -5670,12 +4470,6 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) -"ask" = ( -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "asl" = ( /obj/structure/machinery/light{ dir = 1 @@ -5703,14 +4497,9 @@ /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/plating, /area/almayer/medical/upper_medical) -"aso" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orangecorner" - }, -/area/almayer/engineering/engineering_workshop/hangar) "asp" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -5720,39 +4509,25 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"ast" = ( -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) +"asr" = ( +/obj/structure/bed/chair/comfy/alpha{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "asu" = ( -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/weapon/gun/shotgun/combat, -/obj/structure/closet/secure_closet/guncabinet/red, /obj/structure/sign/safety/hazard{ pixel_x = 32; pixel_y = -8 }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, /turf/open/floor/almayer{ icon_state = "redfull" }, /area/almayer/medical/upper_medical) -"asv" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "asw" = ( /obj/structure/machinery/light{ dir = 8 @@ -5762,72 +4537,42 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"asx" = ( -/obj/structure/stairs{ - icon_state = "ramptop" - }, -/obj/effect/projector{ - name = "Almayer_Down4"; - vector_x = 19; - vector_y = -104 - }, -/turf/open/floor/plating/almayer{ - allow_construction = 0 - }, -/area/almayer/hallways/aft_hallway) -"asy" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "asA" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north2) -"asB" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/structure/closet/bombcloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop/hangar) "asD" = ( -/obj/structure/machinery/light{ - dir = 1 - }, +/obj/effect/step_trigger/clone_cleaner, /obj/structure/machinery/door_control{ - id = "areslockdownexterior"; - name = "ARES Lockdown"; - pixel_x = -25; - req_one_access_txt = "19" + id = "ARES StairsUpper"; + name = "ARES Core Access"; + pixel_x = -24; + pixel_y = 24; + req_one_access_txt = "90;91;92" }, -/obj/effect/landmark/start/working_joe, -/turf/open/floor/almayer{ +/turf/open/floor/almayer/no_build{ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"asE" = ( -/turf/closed/wall/almayer/reinforced, -/area/almayer/engineering/engineering_workshop/hangar) "asF" = ( -/obj/structure/machinery/door_control{ - id = "areslockdowninterior"; - name = "ARES Lockdown"; - pixel_x = -25; - req_one_access_txt = "19" +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + access_modified = 1; + name = "\improper AI Reception"; + req_access = null; + req_one_access_txt = "91;92" }, -/mob/living/silicon/decoy/ship_ai, -/obj/structure/blocker/invisible_wall, -/turf/open/floor/almayer{ +/turf/open/floor/almayer/no_build{ icon_state = "ai_floors" }, /area/almayer/command/airoom) "asG" = ( -/turf/open/floor/almayer{ +/obj/structure/surface/table/reinforced/almayer_B{ + climbable = 0; + indestructible = 1; + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor/almayer/no_build{ icon_state = "ai_floors" }, /area/almayer/command/airoom) @@ -5911,6 +4656,7 @@ /obj/item/device/radio/marine, /obj/item/device/radio/marine, /obj/item/device/radio/marine, +/obj/item/folded_tent/cmd, /turf/open/floor/almayer{ icon_state = "redfull" }, @@ -5921,11 +4667,8 @@ }, /area/almayer/command/cic) "asS" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hallways/aft_hallway) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/starboard_garden) "asT" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, @@ -5938,12 +4681,6 @@ icon_state = "plate" }, /area/almayer/medical/morgue) -"asV" = ( -/obj/structure/machinery/floodlight/landing, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north2) "asW" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -5971,6 +4708,15 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north2) +"asZ" = ( +/obj/structure/machinery/computer/cameras/almayer/ares{ + dir = 4; + pixel_x = -17 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "plating" + }, +/area/almayer/command/airoom) "ata" = ( /obj/structure/machinery/light{ dir = 8 @@ -5984,37 +4730,20 @@ pixel_y = -32 }, /turf/open/floor/plating/almayer, -/area/almayer/hull/upper_hull) +/area/almayer/medical/medical_science) "atb" = ( /obj/structure/ladder{ height = 2; id = "cicladder2" }, /turf/open/floor/plating/almayer, -/area/almayer/hull/upper_hull) +/area/almayer/medical/medical_science) "atc" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"atd" = ( -/obj/structure/surface/rack, -/obj/item/storage/box/sprays, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"ate" = ( -/obj/structure/surface/rack, -/obj/item/reagent_container/glass/bucket/janibucket, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "atf" = ( /obj/structure/surface/table/almayer, /obj/item/tool/pen, @@ -6026,27 +4755,6 @@ /obj/structure/bed/sofa/vert/grey/top, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"ath" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/obj/structure/machinery/door_control{ - id = "OTStore"; - name = "Shutters"; - pixel_y = -24 - }, -/obj/structure/surface/rack, -/obj/item/reagent_container/glass/bucket/janibucket, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"ati" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "atj" = ( /obj/effect/projector{ name = "Almayer_Down3"; @@ -6147,18 +4855,8 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) -"atw" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "atx" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/ammo_magazine/shotgun/buckshot, +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun, /turf/open/floor/almayer{ icon_state = "redfull" }, @@ -6169,24 +4867,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"atz" = ( -/obj/item/tool/minihoe{ - pixel_x = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"atA" = ( -/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ - dir = 1; - name = "\improper Spare Bomb Suit"; - req_access = null; - req_one_access = null; - req_one_access_txt = "35" - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "atC" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -6195,41 +4875,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/aft_hallway) -"atD" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"atE" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "OTStore"; - name = "\improper Secure Storage"; - unacidable = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"atF" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "OTStore"; - name = "\improper Secure Storage"; - unacidable = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"atG" = ( -/obj/structure/bed/chair/comfy/beige{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "atI" = ( /obj/structure/stairs{ dir = 8; @@ -6244,12 +4889,6 @@ allow_construction = 0 }, /area/almayer/hallways/aft_hallway) -"atJ" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "atK" = ( /turf/open/floor/almayer{ dir = 10; @@ -6305,23 +4944,24 @@ }, /area/almayer/command/cic) "atS" = ( -/obj/structure/machinery/light, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/turf/open/floor/almayer{ - icon_state = "sterile" +/obj/structure/machinery/power/apc/almayer{ + dir = 1 }, -/area/almayer/living/pilotbunks) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "atT" = ( /obj/structure/toilet{ - dir = 8 + dir = 1 }, -/turf/open/floor/almayer{ - icon_state = "sterile" +/obj/structure/window/reinforced{ + dir = 4; + health = 80 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 80 }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/living/pilotbunks) "atU" = ( /obj/structure/machinery/status_display{ @@ -6343,57 +4983,31 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"atY" = ( -/obj/structure/closet/emcloset, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) -"atZ" = ( -/obj/structure/machinery/door_control{ - id = "OTStore"; - name = "Shutters"; - pixel_y = 24 +"aub" = ( +/obj/structure/machinery/light{ + dir = 1 }, /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; pixel_y = 1 }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"aua" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"aub" = ( -/obj/structure/machinery/vending/cigarette, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 9; + icon_state = "red" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/lifeboat_pumps/north1) "auc" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; - id = "areslockdownexterior"; - name = "\improper ARES Core Shutters" + id = "ARES StairsLock"; + name = "ARES Exterior Lockdown" }, -/turf/open/floor/almayer{ +/obj/effect/step_trigger/ares_alert/access_control, +/turf/open/floor/almayer/no_build{ icon_state = "test_floor4" }, /area/almayer/command/airoom) -"aud" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "aue" = ( /obj/effect/projector{ name = "Almayer_Up3"; @@ -6405,36 +5019,17 @@ }, /area/almayer/hallways/port_hallway) "auf" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "areslockdowninterior"; - name = "\improper ARES Core Shutters" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/closed/wall/almayer/white/hull, /area/almayer/command/airoom) "aug" = ( /obj/structure/bed/chair/office/dark{ - dir = 1 + dir = 8 }, -/turf/open/floor/almayer{ +/turf/open/floor/almayer/no_build{ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"auh" = ( -/obj/structure/machinery/cm_vending/sorted/tech/tool_storage, -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - layer = 2.5 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop/hangar) "aui" = ( /obj/structure/machinery/telecomms/hub/preset, /turf/open/floor/almayer{ @@ -6498,68 +5093,6 @@ allow_construction = 0 }, /area/almayer/hallways/port_hallway) -"auo" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/med_data/laptop{ - dir = 8 - }, -/obj/item/device/flashlight/lamp{ - pixel_x = -5; - pixel_y = 16 - }, -/obj/structure/sign/safety/terminal{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"aup" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/closet/secure_closet/freezer/industry, -/obj/item/reagent_container/glass/beaker/silver, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"aur" = ( -/obj/structure/reagent_dispensers/oxygentank{ - anchored = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"aus" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"aut" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "auu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -6578,31 +5111,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) -"auw" = ( -/obj/structure/reagent_dispensers/pacidtank{ - anchored = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"aux" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/pipes/vents/scrubber{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "auy" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -6622,49 +5130,6 @@ icon_state = "orangecorner" }, /area/almayer/engineering/upper_engineering) -"auC" = ( -/obj/structure/reagent_dispensers/fueltank/gas/hydrogen{ - anchored = 1 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"auD" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"auE" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"auF" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "auG" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -6685,6 +5150,7 @@ dir = 2 }, /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + access_modified = 1; dir = 2; name = "Telecommunications"; req_access_txt = "6" @@ -6693,18 +5159,6 @@ icon_state = "test_floor4" }, /area/almayer/command/telecomms) -"auI" = ( -/obj/structure/reagent_dispensers/acidtank, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"auJ" = ( -/obj/structure/machinery/floodlight/landing, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) "auK" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_sn_full_cap" @@ -6728,22 +5182,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"auM" = ( -/obj/structure/reagent_dispensers/ammoniatank{ - anchored = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"auN" = ( -/obj/structure/reagent_dispensers/fueltank{ - anchored = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) "auO" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -6751,25 +5189,10 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"auP" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "auQ" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/command/cic) -"auR" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/ammo_magazine/rifle/m41aMK1/ap, -/obj/item/ammo_magazine/rifle/m41aMK1/ap, -/obj/item/weapon/gun/rifle/m41aMK1/ap, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "auS" = ( /obj/item/tool/warning_cone, /obj/item/tool/warning_cone, @@ -6817,48 +5240,13 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/port_point_defense) -"auY" = ( -/obj/structure/reagent_dispensers/watertank{ - anchored = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) "auZ" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, /obj/structure/machinery/light, -/turf/open/floor/almayer, -/area/almayer/living/pilotbunks) -"ava" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"avb" = ( -/obj/structure/reagent_dispensers/fueltank/gas/methane{ - anchored = 1 - }, -/obj/structure/sign/safety/fire_haz{ - pixel_x = 8; - pixel_y = -32 - }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "plate" }, -/area/almayer/engineering/engineering_workshop/hangar) +/area/almayer/living/pilotbunks) "avc" = ( /obj/structure/stairs/perspective{ dir = 4; @@ -6870,53 +5258,17 @@ /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) "avd" = ( -/obj/item/tool/warning_cone, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) -"ave" = ( -/obj/item/reagent_container/glass/bucket/janibucket, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/obj/item/reagent_container/glass/bucket/janibucket{ - pixel_y = 11 - }, /obj/effect/decal/warning_stripes{ - icon_state = "W"; - layer = 2.5 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"avi" = ( -/obj/structure/reagent_dispensers/fueltank/custom, -/turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "N"; + pixel_y = 1 }, -/area/almayer/engineering/engineering_workshop/hangar) +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north1) "avj" = ( /turf/open/floor/almayer{ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"avk" = ( -/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ - dir = 1; - req_access = null; - req_one_access = null; - req_one_access_txt = "35" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"avl" = ( -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "avm" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -6932,18 +5284,6 @@ "avo" = ( /turf/closed/wall/almayer/outer, /area/almayer/powered/agent) -"avp" = ( -/obj/structure/surface/table/almayer, -/obj/item/folder/white, -/obj/item/device/flashlight/pen, -/turf/open/floor/wood/ship, -/area/almayer/medical/medical_science) -"avr" = ( -/obj/structure/bed/sofa/south/grey/left{ - pixel_y = 12 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "avs" = ( /turf/closed/wall/biodome, /area/almayer/powered/agent) @@ -6969,34 +5309,11 @@ /turf/open/floor/plating, /area/almayer/shipboard/weapon_room) "avx" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 - }, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_x = -16; - pixel_y = 8 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) -"avz" = ( -/obj/structure/machinery/light, -/obj/structure/machinery/vending/security, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/brig/general_equipment) -"avA" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" +/obj/structure/machinery/light{ + dir = 1 }, -/area/almayer/medical/medical_science) +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "avB" = ( /turf/open/floor/almayer{ dir = 8; @@ -7013,67 +5330,104 @@ /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) "avF" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, /turf/open/floor/almayer{ + dir = 9; icon_state = "sterile_green_side" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) "avG" = ( /turf/open/floor/almayer{ - dir = 10; + dir = 6; icon_state = "sterile_green_side" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) "avH" = ( -/turf/open/floor/almayer{ - dir = 6; - icon_state = "sterile_green_side" +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/area/almayer/medical/medical_science) -"avI" = ( -/obj/structure/machinery/botany/editor, -/obj/structure/machinery/firealarm{ - pixel_y = 28 +/obj/structure/machinery/light{ + dir = 1 }, /turf/open/floor/almayer{ dir = 1; icon_state = "sterile_green_side" }, -/area/almayer/medical/hydroponics) +/area/almayer/medical/containment) "avJ" = ( -/obj/item/clothing/head/helmet/marine{ - pixel_x = 16; - pixel_y = 6 +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + dir = 2; + name = "\improper Evacuation Airlock SU-5"; + req_access = null }, -/obj/item/reagent_container/food/snacks/grown/poppy, -/obj/effect/step_trigger/message/memorial, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/living/starboard_garden) +/area/almayer/powered) "avK" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" - }, -/obj/effect/landmark/start/working_joe, -/turf/open/floor/almayer{ +/turf/open/floor/almayer/no_build{ icon_state = "ai_floors" }, /area/almayer/command/airoom) "avL" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/station_alert{ - dir = 1 +/obj/structure/machinery/door_control{ + id = "ARES StairsUpper"; + name = "ARES Core Access"; + pixel_x = -10; + pixel_y = -24; + req_one_access_txt = "91;92" }, -/turf/open/floor/almayer{ +/obj/structure/machinery/door_control{ + id = "ARES StairsLock"; + name = "ARES Exterior Lockdown"; + pixel_y = -24; + req_one_access_txt = "91;92" + }, +/obj/structure/surface/table/reinforced/almayer_B{ + climbable = 0; + indestructible = 1; + unacidable = 1; + unslashable = 1 + }, +/obj/structure/transmitter/rotary{ + name = "AI Reception Telephone"; + phone_category = "ARES"; + phone_color = "blue"; + phone_id = "AI Reception" + }, +/obj/structure/machinery/door_control{ + id = "ARES Emergency"; + name = "ARES Emergency Lockdown"; + pixel_x = 10; + pixel_y = -24; + req_one_access_txt = "91;92" + }, +/turf/open/floor/almayer/no_build{ icon_state = "ai_floors" }, /area/almayer/command/airoom) "avM" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/paper_bin/uscm, +/obj/structure/machinery/computer/cameras/almayer/ares{ + dir = 8; + pixel_x = 17; + pixel_y = 6 + }, +/obj/structure/surface/table/reinforced/almayer_B{ + climbable = 0; + indestructible = 1; + unacidable = 1; + unslashable = 1 + }, +/obj/item/paper_bin/uscm{ + pixel_y = 6 + }, /obj/item/tool/pen, -/turf/open/floor/almayer{ +/turf/open/floor/almayer/no_build{ icon_state = "ai_floors" }, /area/almayer/command/airoom) @@ -7119,25 +5473,16 @@ icon_state = "red" }, /area/almayer/command/cic) -"avT" = ( -/obj/structure/bed/chair/office/dark{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "avU" = ( /obj/effect/landmark/start/crew_chief, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/pilotbunks) "avV" = ( -/obj/item/reagent_container/food/snacks/grown/poppy{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/effect/step_trigger/message/memorial, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/machinery/power/apc/almayer{ + dir = 1 }, +/obj/structure/bed/chair, +/turf/open/floor/grass, /area/almayer/living/starboard_garden) "avW" = ( /obj/structure/surface/table/reinforced/prison, @@ -7172,12 +5517,12 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cic) "avZ" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/obj/structure/machinery/light{ + dir = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/lifeboat_pumps/south1) +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "awa" = ( /turf/open/shuttle/dropship{ icon_state = "rasputin15" @@ -7196,32 +5541,16 @@ /turf/closed/wall/almayer/reinforced, /area/almayer/living/pilotbunks) "awe" = ( -/obj/structure/surface/table/almayer, -/obj/item/prop/helmetgarb/gunoil{ - pixel_x = -6; - pixel_y = 9 - }, -/obj/item/tool/screwdriver{ - pixel_x = 5; - pixel_y = 4 - }, -/obj/structure/machinery/light/small{ +/turf/open/floor/plating/almayer, +/area/almayer/living/starboard_garden) +"awi" = ( +/obj/structure/bed/chair{ dir = 8 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) -"awh" = ( -/obj/item/stool, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) -"awi" = ( -/obj/structure/closet/fireaxecabinet{ - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/living/starboard_garden) "awj" = ( /obj/structure/machinery/photocopier, /obj/structure/sign/safety/terminal{ @@ -7272,7 +5601,9 @@ /obj/structure/machinery/light{ dir = 1 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/pilotbunks) "awt" = ( /turf/open/floor/almayer{ @@ -7281,21 +5612,18 @@ }, /area/almayer/command/cic) "awu" = ( -/obj/structure/machinery/door_control{ - id = "areslockdownexterior"; - name = "ARES Lockdown"; - pixel_x = 25; - req_one_access_txt = "19" +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, /obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 + icon_state = "W"; + pixel_x = -1 }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "cargo_arrow" +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/command/airoom) "awv" = ( /obj/structure/machinery/computer/telecomms/monitor, /turf/open/floor/almayer{ @@ -7341,6 +5669,7 @@ /area/almayer/command/cic) "awB" = ( /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; dir = 1; name = "\improper Engineering Storage"; req_one_access = null; @@ -7361,9 +5690,6 @@ icon_state = "plate" }, /area/almayer/command/cic) -"awE" = ( -/turf/closed/wall/almayer, -/area/almayer/command/corporateliason) "awF" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/living/numbertwobunks) @@ -7384,34 +5710,44 @@ icon_state = "plate" }, /area/almayer/command/cic) -"awJ" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"awQ" = ( +/obj/structure/surface/table/almayer, +/obj/item/cell/high{ + pixel_x = -8; + pixel_y = 8 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/item/cell/high{ + pixel_x = -8; + pixel_y = 8 }, -/area/almayer/hull/upper_hull/u_m_s) -"awM" = ( -/turf/open/floor/almayer{ - icon_state = "mono" +/obj/item/cell/high{ + pixel_x = -8; + pixel_y = -2 + }, +/obj/item/cell/high{ + pixel_x = -8; + pixel_y = -2 + }, +/obj/item/device/multitool{ + pixel_x = 8 + }, +/obj/item/tool/screwdriver{ + pixel_x = -3; + pixel_y = 4 + }, +/obj/structure/machinery/power/apc/almayer{ + dir = 1 }, -/area/almayer/medical/upper_medical) -"awQ" = ( -/mob/living/simple_animal/mouse/white/Doc, /turf/open/floor/almayer{ icon_state = "sterile_green" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/hydroponics) "awR" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom, /turf/open/floor/almayer{ - dir = 10; - icon_state = "sterile_green_side" + icon_state = "sterile_green" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) "awS" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -7438,10 +5774,13 @@ /area/almayer/living/pilotbunks) "awZ" = ( /obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/emails{ - dir = 1 +/obj/item/paper_bin/uscm{ + pixel_x = 8; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "bluefull" }, -/turf/open/floor/almayer, /area/almayer/living/pilotbunks) "axa" = ( /turf/open/shuttle/dropship{ @@ -7495,21 +5834,24 @@ }, /area/almayer/medical/upper_medical) "axn" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/reagent_analyzer{ - pixel_x = 2; - pixel_y = 3 +/obj/structure/sign/safety/rewire{ + layer = 2.4; + pixel_x = 8; + pixel_y = 32 }, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 +/obj/structure/reagent_dispensers/watertank, +/obj/item/reagent_container/glass/beaker{ + pixel_x = 6; + pixel_y = 7 + }, +/obj/item/reagent_container/glass/beaker/large{ + pixel_x = -6; + pixel_y = 8 }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_corner" + icon_state = "mono" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/hydroponics) "axo" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -7526,9 +5868,11 @@ icon_state = "NW-out"; layer = 2.5 }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "green" + icon_state = "test_floor4" }, /area/almayer/hallways/aft_hallway) "axu" = ( @@ -7653,6 +5997,16 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) +"axR" = ( +/obj/structure/machinery/shower, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/machinery/door/window/tinted{ + dir = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/port) "axV" = ( /obj/structure/machinery/telecomms/server/presets/command, /turf/open/floor/almayer{ @@ -7732,27 +6086,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"ayg" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) -"ayh" = ( -/obj/structure/machinery/power/smes/buildable, -/obj/structure/sign/safety/hazard{ - pixel_x = 15; - pixel_y = -32 - }, -/obj/structure/sign/safety/high_voltage{ - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) "ayi" = ( /obj/structure/machinery/recharger, /obj/structure/surface/table/almayer, @@ -7804,6 +6137,10 @@ /obj/item/storage/belt/medical/full, /obj/item/storage/belt/medical/full, /obj/item/storage/belt/medical/full, +/obj/structure/machinery/computer/working_joe{ + dir = 8; + pixel_x = 17 + }, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -7821,7 +6158,8 @@ name = "\improper Combat Information Center Blast Door" }, /obj/structure/machinery/door/airlock/almayer/command/reinforced{ - name = "\improper Combat Information Center" + name = "\improper Combat Information Center"; + closeOtherId = "ciclobby_n" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -7855,28 +6193,6 @@ icon_state = "redcorner" }, /area/almayer/shipboard/navigation) -"ayy" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/overwatch/almayer{ - dir = 8; - layer = 3.2; - pixel_x = -17; - pixel_y = 15 - }, -/obj/structure/machinery/light, -/obj/structure/transmitter/rotary{ - name = "Bravo Overwatch Telephone"; - phone_category = "Command"; - phone_id = "Bravo Overwatch" - }, -/obj/structure/sign/safety/terminal{ - pixel_x = -17; - pixel_y = -8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/cic) "ayz" = ( /obj/structure/bed/chair/office/dark{ dir = 8; @@ -7911,22 +6227,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/port_hallway) -"ayG" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = -17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) -"ayH" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "ayI" = ( /obj/structure/surface/rack, /obj/item/storage/toolbox/mechanical{ @@ -7970,13 +6270,6 @@ icon_state = "silver" }, /area/almayer/command/cic) -"ayP" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/storage/bible, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/bridgebunks) "ayQ" = ( /obj/structure/platform_decoration{ dir = 4 @@ -8033,43 +6326,25 @@ "ayX" = ( /obj/structure/surface/table/almayer, /obj/item/tool/extinguisher, -/obj/structure/sign/safety/biolab{ - pixel_y = 32 - }, -/obj/structure/sign/safety/biohazard{ - pixel_x = 15; +/obj/structure/sign/catclock{ pixel_y = 32 }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_corner" - }, -/area/almayer/medical/upper_medical) -"ayY" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" - }, -/obj/item/storage/fancy/vials/empty{ - pixel_y = 10; - start_vials = 2 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_side" + icon_state = "sterile_green" }, /area/almayer/medical/medical_science) "ayZ" = ( +/obj/structure/machinery/light{ + dir = 1 + }, /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 + dir = 10 }, /turf/open/floor/almayer{ - dir = 10; - icon_state = "sterile_green_side" + icon_state = "dark_sterile" }, /area/almayer/medical/medical_science) "azb" = ( @@ -8106,6 +6381,12 @@ icon_state = "orangecorner" }, /area/almayer/engineering/upper_engineering) +"azg" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) "azh" = ( /obj/structure/pipes/vents/pump/on, /turf/open/floor/almayer{ @@ -8160,13 +6441,7 @@ }, /area/almayer/engineering/upper_engineering) "azp" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/ammo_magazine/shotgun, -/obj/item/ammo_magazine/shotgun, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, /turf/open/floor/almayer{ icon_state = "redfull" }, @@ -8285,13 +6560,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/port_hallway) -"azH" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/obj/effect/step_trigger/clone_cleaner, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_p) "azI" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -8397,15 +6665,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"aAb" = ( -/obj/structure/pipes/binary/pump/on{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "aAd" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -8416,16 +6675,6 @@ }, /turf/open/floor/almayer, /area/almayer/command/cic) -"aAe" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -12; - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "aAf" = ( /obj/structure/disposalpipe/junction{ dir = 4; @@ -8462,7 +6711,8 @@ }, /obj/structure/machinery/door/airlock/almayer/command/reinforced{ id_tag = "cic_exterior"; - name = "\improper Combat Information Center" + name = "\improper Combat Information Center"; + closeOtherId = "ciclobby_n" }, /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -8484,31 +6734,16 @@ /turf/open/floor/almayer, /area/almayer/command/cichallway) "aAr" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/box/donkpockets{ - pixel_x = -4; - pixel_y = 8 - }, -/obj/item/storage/box/drinkingglasses{ - pixel_x = -4 - }, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/medical_science) -"aAt" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/obj/structure/machinery/light{ - dir = 8 +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" }, +/obj/structure/surface/rack, +/obj/item/storage/box/botanydisk, +/obj/item/storage/box/botanydisk, +/obj/item/storage/box/botanydisk, +/obj/item/storage/box/botanydisk, /turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_side" + icon_state = "mono" }, /area/almayer/medical/hydroponics) "aAv" = ( @@ -8559,47 +6794,6 @@ icon_state = "plate" }, /area/almayer/command/cic) -"aAD" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/door_control{ - id = "CIC Lockdown"; - name = "CIC Lockdown"; - pixel_x = -7; - pixel_y = 9; - req_access_txt = "1" - }, -/obj/structure/machinery/door_control{ - id = "Hangar Lockdown"; - name = "Hangar Lockdown"; - pixel_x = -7; - pixel_y = 2; - req_access_txt = "1" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4; - icon_state = "exposed01-supply" - }, -/obj/structure/machinery/door_control{ - id = "bot_armory"; - name = "Armory Lockdown"; - pixel_x = -7; - pixel_y = -5; - req_one_access_txt = "1;4" - }, -/obj/structure/transmitter/rotary{ - name = "Combat Information Center Telephone"; - phone_category = "Command"; - phone_id = "Combat Information Center"; - pixel_x = 5; - pixel_y = 4 - }, -/obj/structure/machinery/door/window/westright{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/cic) "aAE" = ( /obj/structure/pipes/vents/scrubber{ dir = 8 @@ -8618,6 +6812,7 @@ /area/almayer/command/cic) "aAG" = ( /obj/structure/machinery/door/airlock/almayer/medical{ + access_modified = 1; dir = 2; name = "Morgue"; req_access_txt = "25"; @@ -8670,11 +6865,14 @@ /turf/open/floor/almayer, /area/almayer/command/cic) "aAT" = ( -/obj/structure/machinery/smartfridge/chemistry, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "sterile_green" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) "aAW" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -8695,31 +6893,19 @@ /obj/structure/bed/chair/office/light{ dir = 8 }, -/obj/structure/pipes/vents/pump{ +/obj/structure/pipes/vents/pump/no_boom{ dir = 4 }, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/command/telecomms) -"aBa" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -14; - pixel_y = 13 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "aBb" = ( /obj/structure/disposalpipe/segment{ dir = 4; icon_state = "pipe-c" }, -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/almayer{ @@ -8730,7 +6916,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/almayer{ @@ -8744,12 +6930,22 @@ }, /area/almayer/medical/morgue) "aBe" = ( -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "W_Containment Cell 2"; + name = "\improper Containment Cell 5"; + unacidable = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, -/area/almayer/medical/testlab) +/turf/closed/wall/almayer/research/containment/wall/purple{ + dir = 4 + }, +/area/almayer/medical/containment/cell) "aBf" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + access_modified = 1; name = "Telecommunications"; req_access_txt = "6" }, @@ -8759,34 +6955,13 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/command/telecomms) -"aBg" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = 12; - pixel_y = 13 - }, -/obj/structure/sign/safety/bathunisex{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "aBh" = ( /obj/structure/disposalpipe/junction, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -8975,19 +7150,9 @@ }, /turf/open/floor/almayer, /area/almayer/command/cic) -"aBN" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Port Railguns and Viewing Room" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) "aBP" = ( /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; dir = 1; req_one_access = list(36) }, @@ -8995,6 +7160,15 @@ icon_state = "test_floor4" }, /area/almayer/living/synthcloset) +"aBQ" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/firstaid/o2, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/technology_scanner, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "aBR" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/ashtray/glass, @@ -9011,30 +7185,6 @@ icon_state = "silver" }, /area/almayer/command/cic) -"aBV" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/overwatch/almayer{ - dir = 8; - layer = 3.2; - pixel_x = -17; - pixel_y = -17 - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/transmitter/rotary{ - name = "Charlie Overwatch Telephone"; - phone_category = "Command"; - phone_id = "Charlie Overwatch" - }, -/obj/structure/sign/safety/terminal{ - pixel_x = -17; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/cic) "aBW" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -9096,6 +7246,14 @@ icon_state = "plate" }, /area/almayer/command/cic) +"aCd" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "aCf" = ( /obj/structure/window/framed/almayer/hull/hijack_bustable, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -9157,85 +7315,56 @@ }, /area/almayer/medical/upper_medical) "aCt" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/sign/safety/intercom{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "sterile_green_corner" - }, -/area/almayer/medical/upper_medical) -"aCu" = ( -/obj/structure/sink{ - pixel_y = 24 - }, +/obj/structure/bed/sofa/south/white/right, /turf/open/floor/almayer{ - icon_state = "sterile" - }, -/area/almayer/hull/upper_hull/u_a_s) -"aCv" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 2; - id = "cl_shutters 2"; - name = "\improper Privacy Shutters" + icon_state = "sterile_green" }, -/obj/structure/window/framed/almayer, -/turf/open/floor/plating, -/area/almayer/command/corporateliason) +/area/almayer/medical/medical_science) "aCw" = ( /obj/structure/window/framed/almayer/white, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/medical/morgue) +"aCA" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "aCC" = ( /turf/open/floor/almayer{ - dir = 5; - icon_state = "sterile_green_side" + icon_state = "sterile_green" }, -/area/almayer/medical/upper_medical) +/area/almayer/medical/medical_science) "aCD" = ( -/obj/structure/machinery/door_control{ - dir = 1; - id = "researchdoorint"; - name = "Research Interior Door"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = -5; - req_access_txt = "28" - }, -/obj/structure/machinery/door_control{ - dir = 1; - id = "researchlockdownint"; - name = "Research Interior Lockdown"; - pixel_x = -25; - pixel_y = 5; - req_access_txt = "28" +/obj/structure/pipes/vents/pump, +/obj/structure/machinery/computer/cameras/almayer{ + dir = 4; + pixel_x = -16 }, /turf/open/floor/almayer{ - dir = 8; + dir = 10; icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) "aCR" = ( -/obj/structure/bed/chair/office/dark{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" +/obj/structure/machinery/door_control{ + id = "containmentlockdown_S"; + name = "Containment Lockdown"; + pixel_y = 28; + req_one_access_txt = "28" }, -/area/almayer/medical/medical_science) -"aCX" = ( -/obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ icon_state = "N"; pixel_y = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/containment) "aCZ" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -9274,23 +7403,6 @@ icon_state = "orangecorner" }, /area/almayer/engineering/upper_engineering) -"aDf" = ( -/obj/structure/machinery/shower{ - pixel_y = 16 - }, -/obj/item/tool/soap, -/turf/open/floor/almayer{ - icon_state = "sterile" - }, -/area/almayer/hull/upper_hull/u_a_s) -"aDg" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "aDh" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -9405,12 +7517,6 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) -"aDz" = ( -/obj/structure/platform_decoration, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "aDB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -9465,12 +7571,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering) -"aDF" = ( -/obj/structure/platform, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "aDH" = ( /obj/structure/bed/chair/office/light{ dir = 4 @@ -9496,6 +7596,16 @@ icon_state = "silver" }, /area/almayer/command/cic) +"aDM" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/lobby) "aDO" = ( /turf/open/floor/almayer{ dir = 8; @@ -9506,6 +7616,15 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/command/lifeboat) +"aDS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "aDU" = ( /obj/structure/surface/rack, /obj/item/tool/minihoe{ @@ -9582,42 +7701,39 @@ icon_state = "redfull" }, /area/almayer/living/offices/flight) -"aEk" = ( +"aEm" = ( /obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/secure_data{ - dir = 4; - pixel_y = 17 - }, -/obj/structure/machinery/computer/cameras/almayer_network{ +/obj/structure/machinery/computer/working_joe{ dir = 4 }, -/obj/structure/machinery/computer/card{ - dir = 4; - pixel_y = -16 - }, -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/sign/safety/terminal{ - pixel_x = -17; - pixel_y = 7 - }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/shipboard/brig/main_office) -"aEm" = ( -/obj/structure/surface/table/almayer, +/area/almayer/command/lifeboat) +"aEo" = ( +/obj/structure/closet/emcloset{ + pixel_x = 8 + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "orange" }, -/area/almayer/command/lifeboat) +/area/almayer/engineering/lower) "aEp" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/hallways/stern_hallway) +"aEr" = ( +/obj/structure/largecrate/random/barrel/yellow, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "aEA" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -9669,17 +7785,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"aEJ" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "aEK" = ( /obj/structure/machinery/status_display{ pixel_y = 30 @@ -9744,29 +7849,45 @@ }, /area/almayer/hallways/aft_hallway) "aEZ" = ( -/obj/structure/sign/safety/biolab{ - pixel_x = -17; - pixel_y = -8 +/obj/structure/surface/table/almayer, +/obj/item/storage/box/gloves{ + pixel_x = -4; + pixel_y = 13 }, -/obj/structure/sign/safety/biohazard{ - pixel_x = -17; - pixel_y = 7 +/obj/item/storage/box/masks{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/tool/hand_labeler{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/reagent_container/glass/beaker/cryoxadone{ + pixel_x = -6; + pixel_y = 8 }, -/obj/structure/machinery/cm_vending/clothing/medical_crew, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_corner" + icon_state = "mono" }, /area/almayer/medical/medical_science) "aFa" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, /turf/open/floor/almayer{ - dir = 5; icon_state = "sterile_green_side" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) +"aFe" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/sign/safety/life_support{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "aFf" = ( /obj/item/reagent_container/glass/beaker/bluespace, /obj/structure/machinery/chem_dispenser/research, @@ -9796,17 +7917,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/telecomms) -"aFj" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 - }, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/numbertwobunks) "aFl" = ( /obj/structure/disposalpipe/segment, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -9842,39 +7952,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"aFo" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - req_access = null - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/numbertwobunks) -"aFp" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/closet/toolcloset, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) -"aFq" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/station_alert, -/obj/structure/sign/safety/maint{ - pixel_x = 32 - }, -/obj/structure/sign/safety/terminal{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) "aFr" = ( /obj/structure/machinery/light, /obj/structure/reagent_dispensers/watertank, @@ -9989,19 +8066,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) -"aFN" = ( -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Brig Lockdown Shutters"; - name = "\improper Brig Lockdown Shutter" - }, -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 2; - req_one_access = list(2,34,30) - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_s) "aFV" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -10019,6 +8083,13 @@ icon_state = "test_floor4" }, /area/almayer/hallways/stern_hallway) +"aGa" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) "aGb" = ( /obj/structure/ladder{ height = 2; @@ -10032,6 +8103,16 @@ icon_state = "plate" }, /area/almayer/command/cichallway) +"aGc" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "green" + }, +/area/almayer/hallways/port_hallway) "aGd" = ( /turf/open/floor/almayer{ dir = 8; @@ -10057,6 +8138,12 @@ icon_state = "test_floor4" }, /area/almayer/command/cichallway) +"aGm" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_p) "aGn" = ( /obj/structure/barricade/handrail, /turf/open/floor/almayer{ @@ -10090,9 +8177,14 @@ "aGr" = ( /turf/open/floor/almayer, /area/almayer/living/bridgebunks) -"aGt" = ( -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) +"aGs" = ( +/obj/structure/machinery/portable_atmospherics/hydroponics, +/obj/item/seeds/goldappleseed, +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "aGv" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -10110,6 +8202,17 @@ }, /turf/open/floor/plating, /area/almayer/engineering/port_atmos) +"aGA" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) "aGC" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -10139,40 +8242,25 @@ }, /area/almayer/hallways/aft_hallway) "aGP" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 5; + icon_state = "red" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/lifeboat_pumps/north1) "aGQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/maint{ - req_one_access = null; - req_one_access_txt = "2;30;34" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) -"aGR" = ( -/obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/machinery/status_display{ - pixel_x = 32 + icon_state = "NE-out"; + pixel_y = 1 }, /turf/open/floor/almayer{ - dir = 8; + dir = 9; icon_state = "red" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/lifeboat_pumps/north1) "aGS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -10226,18 +8314,6 @@ "aHe" = ( /turf/closed/wall/almayer, /area/almayer/command/lifeboat) -"aHk" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/sink{ - pixel_y = 16 - }, -/obj/structure/mirror{ - pixel_y = 21 - }, -/turf/open/floor/almayer, -/area/almayer/living/numbertwobunks) "aHl" = ( /obj/structure/machinery/portable_atmospherics/canister/air, /turf/open/floor/engine, @@ -10248,16 +8324,8 @@ }, /obj/structure/machinery/door/window/westleft, /obj/structure/window/reinforced/tinted/frosted, -/turf/open/floor/almayer{ - icon_state = "mono" - }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/living/numbertwobunks) -"aHo" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) "aHq" = ( /turf/closed/wall/almayer, /area/almayer/command/computerlab) @@ -10300,11 +8368,16 @@ pixel_y = 1 }, /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; dir = 1; name = "\improper Engineering Storage"; no_panel = 1; req_one_access = null; - req_one_access_txt = "2;7" + req_one_access_txt = "2;7"; + unacidable = 1 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/uniform_vendors/antitheft{ + id = "engie_store" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -10319,11 +8392,16 @@ pixel_y = 1 }, /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; dir = 1; name = "\improper Engineering Storage"; no_panel = 1; req_one_access = null; - req_one_access_txt = "2;7" + req_one_access_txt = "2;7"; + unacidable = 1 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/uniform_vendors/antitheft{ + id = "engie_store" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -10342,12 +8420,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering) -"aHB" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) "aHK" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -10409,13 +8481,12 @@ }, /area/almayer/living/numbertwobunks) "aHY" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 24 }, -/obj/structure/machinery/disposal, /turf/open/floor/almayer{ - dir = 8; - icon_state = "red" + icon_state = "cargo" }, /area/almayer/shipboard/starboard_missiles) "aHZ" = ( @@ -10424,19 +8495,9 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/starboard_missiles) -"aIa" = ( -/obj/structure/machinery/power/terminal, +"aId" = ( /turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) -"aIb" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/engineering/lower/workshop/hangar) "aIe" = ( /turf/open/floor/almayer{ dir = 5; @@ -10449,6 +8510,11 @@ }, /turf/open/floor/almayer, /area/almayer/command/cic) +"aIh" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) "aIl" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -10464,12 +8530,15 @@ /area/almayer/command/cichallway) "aIo" = ( /obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "researchlockdownext"; - name = "\improper Research Lockdown" + dir = 8; + id = "researchlockdownext_windoor"; + name = "\improper Research Windoor Shutter" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/medical/medical_science) "aIq" = ( @@ -10513,45 +8582,61 @@ }, /area/almayer/lifeboat_pumps/north1) "aIx" = ( -/obj/item/tool/weldpack, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "aIB" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/north1) +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "aIC" = ( -/obj/structure/machinery/shower{ - dir = 1 +/obj/structure/surface/table/almayer, +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/obj/structure/machinery/door_control{ - id = "containmentlockdown_E"; - name = "Containment Lockdown"; - pixel_x = 25; - req_one_access_txt = "19;28" +/obj/structure/transmitter/rotary{ + name = "Researcher Office Telephone"; + phone_category = "Almayer"; + phone_id = "Research"; + pixel_y = 6 + }, +/obj/item/reagent_container/glass/beaker{ + pixel_x = 6; + pixel_y = -1 + }, +/obj/item/reagent_container/glass/beaker/large{ + pixel_x = -6 }, /turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_corner" + icon_state = "sterile_green_side" }, -/area/almayer/medical/containment) +/area/almayer/medical/medical_science) "aID" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/light{ + dir = 1 + }, /turf/open/floor/almayer{ - dir = 10; - icon_state = "sterile_green_side" + icon_state = "mono" + }, +/area/almayer/medical/hydroponics) +"aIP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "sterile_green_corner" }, /area/almayer/medical/containment) -"aIM" = ( -/obj/structure/largecrate/random, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "aIQ" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/command/reinforced{ + access_modified = 1; name = "\improper XO's Quarters"; req_access = null; req_access_txt = "1" @@ -10579,6 +8664,7 @@ dir = 2 }, /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + access_modified = 1; dir = 2; name = "Telecommunications"; req_access_txt = "6" @@ -10596,19 +8682,7 @@ }, /area/almayer/engineering/upper_engineering) "aIV" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/weapon/gun/smg/m39, -/obj/item/weapon/gun/smg/m39, -/obj/item/weapon/gun/smg/m39, -/obj/item/weapon/gun/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, /turf/open/floor/almayer{ icon_state = "redfull" }, @@ -10622,18 +8696,6 @@ icon_state = "plate" }, /area/almayer/living/tankerbunks) -"aIZ" = ( -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_s) -"aJa" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/hallways/aft_hallway) "aJc" = ( /obj/structure/machinery/door/airlock/almayer/command{ name = "\improper Commanding Officer's Mess" @@ -10654,19 +8716,6 @@ icon_state = "test_floor4" }, /area/almayer/living/captain_mess) -"aJd" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "aJf" = ( /obj/structure/machinery/floodlight, /obj/structure/machinery/floodlight, @@ -10734,6 +8783,19 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) +"aJn" = ( +/obj/structure/machinery/camera/autoname/almayer/containment{ + dir = 1; + name = "ship-grade camera" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/containment) "aJp" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -10769,19 +8831,6 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"aJz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/main_office) "aJG" = ( /obj/structure/bed/chair/office/dark{ dir = 8; @@ -10810,43 +8859,18 @@ }, /area/almayer/command/cic) "aJJ" = ( -/obj/item/tool/screwdriver, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/north1) -"aJL" = ( -/obj/structure/surface/rack, -/obj/item/frame/rack{ - pixel_y = 19 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) -"aJM" = ( -/obj/docking_port/stationary/escape_pod/east, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_p) +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/obj/structure/bed/chair, +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "aJU" = ( /turf/open/floor/almayer{ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"aJW" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/starboard_garden) "aKa" = ( /turf/open/floor/almayer, /area/almayer/command/cichallway) -"aKc" = ( -/obj/item/stack/cable_coil, -/obj/structure/surface/rack, -/obj/item/attachable/flashlight/grip, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "aKf" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -10858,12 +8882,9 @@ }, /area/almayer/command/cichallway) "aKg" = ( -/obj/structure/surface/rack, -/obj/item/device/multitool, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "aKi" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -10876,6 +8897,11 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"aKk" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "aKn" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -10912,6 +8938,47 @@ }, /turf/open/floor/almayer, /area/almayer/command/cichallway) +"aKs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/obj/structure/machinery/door_control{ + id = "ARES Interior"; + indestructible = 1; + name = "ARES Chamber Lockdown"; + pixel_x = 24; + pixel_y = -8; + req_one_access_txt = "90;91;92" + }, +/obj/structure/machinery/door_control{ + id = "ARES Railing"; + indestructible = 1; + name = "ARES Chamber Railings"; + needs_power = 0; + pixel_x = 24; + req_one_access_txt = "91;92" + }, +/obj/structure/machinery/door/poddoor/railing{ + closed_layer = 4.1; + density = 0; + dir = 2; + id = "ARES Railing"; + layer = 2.1; + open_layer = 2.1; + pixel_x = -1; + pixel_y = -1; + unacidable = 0; + unslashable = 0 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "aKu" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -10941,27 +9008,6 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"aKB" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"aKC" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "aKE" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -10976,52 +9022,30 @@ }, /area/almayer/command/cic) "aKG" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/extinguisher, -/obj/item/tool/crowbar, -/turf/open/floor/almayer, -/area/almayer/living/pilotbunks) -"aKH" = ( -/obj/structure/janitorialcart, -/obj/item/tool/mop, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/living/pilotbunks) -"aKI" = ( -/obj/structure/surface/rack, -/obj/item/tool/weldpack, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 1; - pixel_y = 7 +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 }, -/obj/item/storage/toolbox/mechanical/green{ - pixel_x = 1; - pixel_y = -1 +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, /turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) -"aKJ" = ( -/obj/structure/stairs{ - icon_state = "ramptop" + icon_state = "dark_sterile" }, +/area/almayer/living/pilotbunks) +"aKH" = ( /obj/structure/machinery/light{ dir = 4 }, -/obj/effect/projector{ - name = "Almayer_Down4"; - vector_x = 19; - vector_y = -104 +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/turf/open/floor/plating/almayer{ - allow_construction = 0 +/turf/open/floor/almayer{ + icon_state = "dark_sterile" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/living/pilotbunks) "aKN" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/clothing/accessory/red, @@ -11076,66 +9100,42 @@ icon_state = "plating" }, /area/almayer/shipboard/starboard_point_defense) -"aKW" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/lower_hull/l_m_s) -"aLa" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"aLc" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"aLd" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull) -"aLf" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"aLk" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/sign/safety/stairs{ + pixel_x = -17 }, -/area/almayer/hull/lower_hull/l_f_s) -"aLl" = ( -/obj/structure/machinery/light/small{ - dir = 8 +/turf/open/floor/almayer{ + icon_state = "red" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/hallways/upper/starboard) "aLp" = ( /obj/structure/sign/safety/cryo{ pixel_x = 8; pixel_y = -26 }, -/obj/structure/surface/rack, -/turf/open/floor/almayer, -/area/almayer/living/numbertwobunks) -"aLt" = ( -/obj/structure/toilet{ - dir = 8 +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" }, -/turf/open/floor/almayer, /area/almayer/living/numbertwobunks) "aLB" = ( /turf/closed/wall/almayer, /area/almayer/hallways/starboard_hallway) -"aLC" = ( -/obj/docking_port/stationary/escape_pod/south, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_s) "aLE" = ( /obj/docking_port/stationary/emergency_response/external/hangar_starboard{ dwidth = 8 }, /turf/open/space, /area/space) -"aLF" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "aLG" = ( /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) @@ -11154,19 +9154,6 @@ }, /turf/open/floor/almayer, /area/almayer/command/cic) -"aLP" = ( -/obj/structure/window/framed/almayer/white, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/turf/open/floor/plating, -/area/almayer/medical/medical_science) -"aLQ" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "aLS" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -11185,47 +9172,14 @@ "aLW" = ( /turf/open/floor/almayer, /area/almayer/shipboard/starboard_point_defense) -"aLX" = ( -/obj/effect/projector{ - name = "Almayer_Down4"; - vector_x = 19; - vector_y = -104 - }, -/turf/open/floor/almayer{ - allow_construction = 0; - icon_state = "plate" - }, -/area/almayer/hallways/aft_hallway) "aLZ" = ( /obj/structure/surface/table/almayer, /obj/item/tool/pen, -/obj/structure/machinery/door_control{ - id = "researchlockdownext"; - name = "Research Exterior Lockdown"; - pixel_x = -5; - pixel_y = -20; - range = 20; - req_access_txt = "5" - }, -/obj/structure/machinery/door_control{ - id = "researchlockdownint"; - name = "Research Interior Lockdown"; - pixel_x = 5; - pixel_y = -20; - range = 20; - req_access_txt = "5" - }, /obj/item/paper_bin/wy, -/obj/structure/machinery/door_control{ - id = "containmentlockdown_S"; - name = "Containment Exterior Lockdown"; - pixel_x = -25; - range = 20; - req_one_access_txt = "19;14" - }, /obj/structure/machinery/computer/cameras/containment{ dir = 4; layer = 2.981; + name = "Research Cameras"; pixel_y = 16 }, /obj/item/clothing/accessory/stethoscope, @@ -11235,51 +9189,50 @@ }, /area/almayer/medical/upper_medical) "aMd" = ( -/obj/structure/machinery/door/airlock/almayer/research/reinforced{ - dir = 1; - name = "\improper Containment Airlock" +/obj/structure/filingcabinet/seeds{ + density = 0; + pixel_x = 5; + pixel_y = 16 }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "containmentlockdown_S"; - name = "\improper Containment Lockdown" +/obj/structure/filingcabinet/disk{ + density = 0; + pixel_x = -11; + pixel_y = 16 }, -/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/hydroponics) +"aMf" = ( /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/medical/containment) +/area/almayer/maint/hull/upper/u_f_s) "aMg" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" +/obj/structure/sign/safety/intercom{ + layer = 2.9; + pixel_x = -6; + pixel_y = 29 }, -/area/almayer/medical/medical_science) -"aMh" = ( -/obj/structure/machinery/light{ - dir = 8 +/obj/structure/machinery/botany/extractor{ + density = 0; + pixel_x = 15; + pixel_y = 16 }, -/obj/structure/ladder{ - height = 2; - id = "cicladder3" +/obj/item/device/flashlight/pen{ + pixel_x = 14; + pixel_y = 15 }, -/obj/structure/sign/safety/ladder{ - pixel_x = 23; - pixel_y = 32 +/obj/structure/machinery/vending/hydroseeds{ + density = 0; + pixel_x = -7; + pixel_y = 16; + req_access_txt = "28" }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/upper_hull) -"aMi" = ( -/obj/structure/ladder{ - height = 2; - id = "cicladder4" +/turf/open/floor/almayer{ + icon_state = "mono" }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/upper_hull) +/area/almayer/medical/hydroponics) "aMl" = ( /obj/structure/machinery/light{ dir = 8 @@ -11316,19 +9269,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"aMr" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_s) -"aMs" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "aMt" = ( /obj/structure/machinery/light{ dir = 1 @@ -11414,14 +9354,11 @@ /obj/effect/landmark/late_join/delta, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) +"aML" = ( +/obj/item/ammo_casing/bullet, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "aMM" = ( -/obj/structure/machinery/door_control{ - id = "laddernortheast"; - name = "North East Ladders Shutters"; - pixel_x = 25; - req_one_access_txt = "2;3;12;19"; - throw_range = 15 - }, /turf/open/floor/almayer{ dir = 4; icon_state = "red" @@ -11448,20 +9385,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) -"aMR" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) -"aMS" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/lifeboat) "aMT" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -11493,31 +9416,15 @@ icon_state = "red" }, /area/almayer/squads/alpha) -"aNe" = ( -/obj/structure/closet/firecloset, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) "aNi" = ( /turf/closed/wall/almayer, /area/almayer/living/chapel) -"aNj" = ( -/obj/structure/bed/chair/office/dark, -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/sign/safety/terminal{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" +"aNl" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/area/almayer/hull/lower_hull/l_f_s) +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "aNm" = ( /turf/open/floor/wood/ship, /area/almayer/living/chapel) @@ -11545,18 +9452,6 @@ icon_state = "plate" }, /area/almayer/living/offices) -"aNw" = ( -/obj/structure/machinery/door_control{ - id = "safe_armory"; - name = "Hangar Armory Lockdown"; - pixel_y = 24; - req_access_txt = "4" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_f_s) "aNx" = ( /obj/structure/window/reinforced{ dir = 4; @@ -11606,38 +9501,40 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) "aNY" = ( -/obj/structure/bed/chair/office/dark, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "sterile_green_side" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) "aOd" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /turf/open/floor/almayer{ - dir = 9; + dir = 5; icon_state = "sterile_green_side" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) "aOe" = ( -/obj/structure/pipes/vents/pump{ - dir = 8 +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/area/almayer/medical/medical_science) -"aOg" = ( -/obj/structure/bed/sofa/south/grey{ - pixel_y = 12 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"aOi" = ( -/obj/effect/landmark/start/nurse, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/offices) +/turf/open/floor/almayer/research/containment/corner{ + dir = 1 + }, +/area/almayer/medical/containment/cell) "aOq" = ( /obj/structure/surface/table/almayer, /obj/item/tool/extinguisher, @@ -11702,12 +9599,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"aOD" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "aOE" = ( /obj/structure/platform{ dir = 8 @@ -11841,16 +9732,6 @@ icon_state = "kitchen" }, /area/almayer/engineering/upper_engineering) -"aOY" = ( -/obj/structure/bed/chair, -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/processing) "aPa" = ( /obj/structure/machinery/light{ dir = 8 @@ -11866,6 +9747,14 @@ icon_state = "red" }, /area/almayer/hallways/stern_hallway) +"aPe" = ( +/obj/structure/largecrate/random/case/double, +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "aPf" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/almayer, @@ -11880,37 +9769,35 @@ /obj/structure/pipes/vents/pump{ dir = 4 }, -/turf/open/floor/almayer, -/area/almayer/squads/alpha) -"aPk" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "red" }, -/area/almayer/command/lifeboat) +/area/almayer/squads/alpha) "aPl" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/structure/machinery/cm_vending/clothing/marine/alpha{ + density = 0; + layer = 4.1; + pixel_y = -29 + }, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, /area/almayer/squads/alpha) "aPm" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, /area/almayer/hallways/aft_hallway) "aPn" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/structure/machinery/cm_vending/clothing/marine/bravo{ + density = 0; + pixel_y = 16 }, /turf/open/floor/almayer{ - icon_state = "redcorner" + icon_state = "plate" }, -/area/almayer/squads/alpha) +/area/almayer/squads/bravo) "aPo" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -11989,34 +9876,50 @@ }, /area/almayer/command/cic) "aPJ" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/area/almayer/medical/medical_science) +/turf/open/floor/almayer/research/containment/corner2, +/area/almayer/medical/containment/cell) "aPK" = ( /obj/structure/sign/nosmoking_1, /turf/closed/wall/almayer, /area/almayer/squads/alpha) -"aPM" = ( -/obj/structure/machinery/cm_vending/clothing/marine/alpha, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/alpha) "aPN" = ( -/obj/structure/machinery/light, -/obj/structure/machinery/cm_vending/clothing/marine/alpha, +/obj/structure/ladder{ + height = 2; + id = "ForeStarboardMaint" + }, +/obj/structure/sign/safety/ladder{ + pixel_x = -17 + }, +/turf/open/floor/plating/almayer, +/area/almayer/maint/hull/upper/s_bow) +"aPO" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) +"aPS" = ( +/obj/structure/machinery/power/port_gen/pacman, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, -/area/almayer/squads/alpha) -"aPX" = ( -/obj/structure/largecrate/random/case/double, +/area/almayer/engineering/lower/engine_core) +"aPT" = ( /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/hallways/upper/port) +"aPU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "aPY" = ( /obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/almayer{ @@ -12035,9 +9938,7 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 }, -/turf/open/floor/almayer{ - icon_state = "silver" - }, +/turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) "aQg" = ( /obj/structure/bed/chair/office/dark{ @@ -12089,14 +9990,6 @@ icon_state = "plate" }, /area/almayer/living/offices) -"aQs" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/extinguisher, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) "aQt" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -12125,11 +10018,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"aQA" = ( -/turf/open/floor/almayer{ - icon_state = "sterile" - }, -/area/almayer/hull/upper_hull/u_a_s) "aQF" = ( /turf/closed/wall/almayer, /area/almayer/living/offices) @@ -12160,10 +10048,6 @@ icon_state = "test_floor4" }, /area/almayer/living/offices) -"aQI" = ( -/obj/effect/landmark/start/researcher, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/offices) "aQL" = ( /turf/closed/wall/almayer, /area/almayer/squads/bravo) @@ -12182,69 +10066,16 @@ /obj/structure/sign/nosmoking_1, /turf/closed/wall/almayer, /area/almayer/squads/bravo) -"aQP" = ( -/obj/structure/machinery/cm_vending/clothing/marine/bravo, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/bravo) -"aQQ" = ( -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/obj/structure/machinery/cm_vending/clothing/marine/bravo, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/bravo) -"aQR" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/obj/structure/machinery/cm_vending/clothing/marine/bravo, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/bravo) -"aQS" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/machinery/cm_vending/clothing/marine/bravo, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/bravo) "aQT" = ( -/obj/structure/machinery/cm_vending/clothing/marine/alpha, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" +/obj/structure/machinery/cm_vending/clothing/marine/alpha{ + density = 0; + layer = 4.1; + pixel_y = -29 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo_arrow" }, /area/almayer/squads/alpha) -"aQU" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/obj/structure/machinery/cm_vending/clothing/marine/bravo, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/bravo) -"aQV" = ( -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, -/obj/structure/machinery/cm_vending/clothing/marine/bravo, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/bravo) "aQW" = ( /obj/structure/machinery/vending/cola{ pixel_x = -6; @@ -12255,38 +10086,37 @@ }, /area/almayer/living/grunt_rnr) "aQZ" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/machinery/botany/editor{ + density = 0; + pixel_x = 5; + pixel_y = 16 }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "sterile_green_side" +/obj/item/clothing/glasses/science{ + pixel_x = 5; + pixel_y = 24 }, -/area/almayer/medical/medical_science) -"aRc" = ( /turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_side" + icon_state = "mono" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/hydroponics) "aRd" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/door/window/westright, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "researchlockdownext"; - name = "\improper Research Lockdown" - }, /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/window/westright{ dir = 4; req_access_txt = "28" }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 8; + id = "researchlockdownext_windoor"; + name = "\improper Research Windoor Shutter" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "sterile_green" + icon_state = "test_floor4" }, /area/almayer/medical/medical_science) "aRi" = ( @@ -12305,14 +10135,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering) -"aRk" = ( -/obj/structure/mirror{ - pixel_x = 28 - }, -/turf/open/floor/almayer{ - icon_state = "sterile" - }, -/area/almayer/hull/upper_hull/u_a_s) "aRo" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -12337,15 +10159,6 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"aRr" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/toolbox, -/obj/item/storage/firstaid/o2, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) "aRt" = ( /turf/open/floor/almayer{ dir = 8; @@ -12401,11 +10214,6 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) -"aRD" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/corporateliason) "aRE" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -12418,6 +10226,7 @@ /area/almayer/living/captain_mess) "aRF" = ( /obj/structure/machinery/door/airlock/almayer/medical{ + access_modified = 1; dir = 2; name = "Morgue Processing"; req_access_txt = "25"; @@ -12430,16 +10239,6 @@ icon_state = "test_floor4" }, /area/almayer/medical/morgue) -"aRG" = ( -/obj/structure/bed/chair/comfy/beige, -/obj/item/reagent_container/glass/bucket{ - pixel_x = 12; - pixel_y = -5 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "aRJ" = ( /obj/structure/ladder{ height = 2; @@ -12486,21 +10285,19 @@ /area/almayer/squads/bravo) "aRU" = ( /obj/structure/pipes/vents/pump/on, -/turf/open/floor/almayer, -/area/almayer/squads/bravo) -"aRV" = ( -/obj/structure/platform{ - dir = 4 - }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "orange" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/squads/bravo) "aRX" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, /area/almayer/squads/bravo) "aRZ" = ( /turf/open/floor/almayer{ @@ -12527,58 +10324,76 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) +"aSk" = ( +/obj/structure/machinery/power/smes/buildable, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "tcomms" + }, +/area/almayer/engineering/lower/engine_core) "aSl" = ( /obj/structure/machinery/light, -/obj/structure/machinery/cm_vending/sorted/medical, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/area/almayer/medical/medical_science) -"aSm" = ( +/obj/structure/machinery/cm_vending/sorted/medical/bolted, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 4; + icon_state = "sterile_green_corner" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/medical/medical_science) "aSn" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/centrifuge{ - pixel_x = -2; - pixel_y = 7 - }, -/obj/structure/sign/safety/ref_bio_storage{ - pixel_x = 15; - pixel_y = -32 +/obj/item/stack/sheet/mineral/plastic{ + amount = 15 }, -/obj/structure/sign/safety/biohazard{ - pixel_y = -32 +/obj/item/stack/sheet/glass{ + amount = 20; + pixel_x = 3; + pixel_y = 3 }, /turf/open/floor/almayer{ - icon_state = "sterile_green_side" + icon_state = "test_floor4" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/hydroponics) "aSo" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/medical/hydroponics) +"aSp" = ( /obj/structure/surface/table/almayer, -/obj/item/storage/firstaid/o2{ - pixel_x = -6; - pixel_y = 6 +/obj/effect/decal/cleanable/dirt, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 }, -/obj/item/storage/firstaid/fire{ - pixel_x = 8; +/obj/item/paper_bin/uscm{ + pixel_x = -7; pixel_y = 6 }, -/obj/item/storage/firstaid/adv{ - pixel_x = -6; - pixel_y = -2 +/obj/item/tool/pen{ + pixel_x = -10; + pixel_y = 6 }, -/obj/item/storage/firstaid/toxin{ - pixel_x = 8; +/obj/item/tool/pen{ + pixel_x = -10; pixel_y = -2 }, /turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_corner" + icon_state = "plate" }, -/area/almayer/medical/medical_science) +/area/almayer/living/briefing) "aSq" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/chem_dispenser/soda, @@ -12606,7 +10421,7 @@ /area/almayer/hallways/starboard_hallway) "aSt" = ( /obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/chem_dispenser/beer, +/obj/structure/machinery/chem_dispenser/soda/beer, /turf/open/floor/prison{ icon_state = "kitchen" }, @@ -12716,32 +10531,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/operating_room_two) -"aSP" = ( -/obj/structure/filingcabinet, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"aSS" = ( -/obj/structure/sink{ - pixel_y = 24 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/brig/perma) -"aSY" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/obj/item/reagent_container/glass/bucket/mopbucket, -/obj/item/tool/mop{ - pixel_x = -6; - pixel_y = 14 - }, -/obj/structure/janitorialcart, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "aTa" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/junction{ @@ -12785,6 +10574,11 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cichallway) +"aTl" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/command/cichallway) "aTm" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north1) @@ -12817,12 +10611,13 @@ }, /area/almayer/living/offices) "aTv" = ( -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" +/obj/structure/machinery/cm_vending/clothing/marine/bravo{ + density = 0; + pixel_y = 16 }, -/obj/structure/machinery/cm_vending/clothing/marine/bravo, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "cargo_arrow" }, /area/almayer/squads/bravo) "aTw" = ( @@ -12832,12 +10627,7 @@ }, /area/almayer/squads/bravo) "aTx" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/machinery/power/apc/almayer{ - dir = 4 - }, +/obj/structure/machinery/power/apc/almayer, /obj/structure/surface/table/almayer, /obj/item/tool/hand_labeler, /turf/open/floor/almayer{ @@ -12927,24 +10717,6 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"aTR" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 2; - id = "CIC Lockdown"; - layer = 2.2; - name = "\improper Combat Information Center Blast Door" - }, -/obj/structure/machinery/door/airlock/almayer/engineering/reinforced{ - dir = 1; - name = "\improper Command Power Substation" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) "aTS" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -12962,14 +10734,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) -"aTV" = ( -/obj/structure/toilet{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/cells) "aTW" = ( /obj/structure/bed/chair{ dir = 8 @@ -13113,9 +10877,6 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) -"aUx" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/engineering/lower_engineering) "aUC" = ( /obj/structure/machinery/light{ dir = 4 @@ -13215,9 +10976,6 @@ icon_state = "bluefull" }, /area/almayer/living/captain_mess) -"aVl" = ( -/turf/closed/wall/almayer, -/area/almayer/engineering/lower_engineering) "aVo" = ( /obj/structure/machinery/light{ dir = 1 @@ -13225,12 +10983,6 @@ /obj/structure/machinery/portable_atmospherics/canister/empty, /turf/open/floor/engine, /area/almayer/engineering/airmix) -"aVp" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) "aVr" = ( /obj/structure/closet/secure_closet/freezer/meat, /obj/structure/sign/safety/fridge{ @@ -13245,10 +10997,13 @@ icon_state = "kitchen" }, /area/almayer/living/captain_mess) -"aVt" = ( -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +"aVC" = ( +/obj/structure/machinery/vending/cigarette, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "aVF" = ( /obj/structure/closet/secure_closet/engineering_electrical, /obj/structure/machinery/light/small, @@ -13347,6 +11102,17 @@ }, /area/almayer/hallways/stern_hallway) "aWb" = ( +/obj/structure/machinery/computer/working_joe{ + dir = 4; + pixel_x = -17 + }, +/obj/structure/machinery/door_control/brbutton{ + id = "engie_store"; + name = "Emergency Storage"; + pixel_x = -2; + pixel_y = 26; + req_one_access_txt = "6" + }, /turf/open/floor/almayer{ dir = 1; icon_state = "orangecorner" @@ -13378,6 +11144,24 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) +"aWg" = ( +/obj/structure/machinery/door_control{ + id = "CMP Office Shutters"; + name = "CMP Office Shutters"; + pixel_y = 32; + req_one_access_txt = "24;31" + }, +/obj/structure/machinery/door_control{ + id = "Brig Lockdown Shutters"; + name = "Brig Lockdown Shutters"; + pixel_y = 24; + req_access_txt = "3" + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/chief_mp_office) "aWk" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -13396,17 +11180,29 @@ }, /area/almayer/hallways/aft_hallway) "aWm" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 5; + icon_state = "red" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/lifeboat_pumps/north1) "aWn" = ( -/obj/structure/bed/chair/comfy/teal, +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 6; + icon_state = "red" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/lifeboat_pumps/north1) "aWo" = ( /obj/structure/pipes/unary/outlet_injector, /turf/open/floor/engine, @@ -13423,21 +11219,6 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"aWr" = ( -/obj/structure/window/framed/almayer/hull, -/turf/open/floor/plating, -/area/almayer/engineering/lower_engineering) -"aWs" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) "aWt" = ( /obj/structure/machinery/vending/coffee, /obj/structure/sign/safety/coffee{ @@ -13449,12 +11230,13 @@ }, /area/almayer/living/bridgebunks) "aWu" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" +/obj/structure/sign/safety/escapepod{ + pixel_x = 8; + pixel_y = -32 }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 6; + icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) "aWw" = ( @@ -13472,25 +11254,6 @@ icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/south1) -"aWA" = ( -/obj/structure/toilet{ - pixel_y = 13 - }, -/obj/item/paper_bin/uscm{ - pixel_x = 9; - pixel_y = -3 - }, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/obj/item/prop/magazine/dirty{ - pixel_x = -6; - pixel_y = -10 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/captain_mess) "aWD" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -13530,24 +11293,10 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"aWN" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/starboard_hallway) "aWR" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"aWS" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_17"; - pixel_x = -5; - pixel_y = 10 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "aWT" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 @@ -13636,20 +11385,15 @@ icon_state = "silver" }, /area/almayer/engineering/port_atmos) +"aXD" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) "aXE" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/stern_hallway) -"aXQ" = ( -/obj/structure/sign/safety/nonpress_0g{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_p) "aXS" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -13668,14 +11412,6 @@ icon_state = "mono" }, /area/almayer/hallways/stern_hallway) -"aYc" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "aYd" = ( /obj/structure/dropship_equipment/medevac_system, /turf/open/floor/almayer{ @@ -13688,19 +11424,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/stern_hallway) -"aYm" = ( -/obj/structure/sign/safety/med_life_support{ - pixel_x = 15; - pixel_y = 32 - }, -/obj/structure/sign/safety/hazard{ - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/lower_medical_medbay) "aYn" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -13708,47 +11431,16 @@ icon_state = "plate" }, /area/almayer/hallways/aft_hallway) -"aYp" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "cl_shutters"; - name = "\improper Privacy Shutters" - }, -/turf/open/floor/plating, -/area/almayer/command/corporateliason) "aYq" = ( -/obj/item/tool/warning_cone{ - pixel_x = -12; - pixel_y = 16 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) -"aYr" = ( -/obj/structure/surface/rack, -/obj/item/frame/rack{ - layer = 3.1; - pixel_y = 19 - }, -/obj/item/reagent_container/food/snacks/cracker, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 6; + icon_state = "red" }, -/area/almayer/lifeboat_pumps/north1) +/area/almayer/living/starboard_garden) "aYs" = ( -/obj/structure/machinery/light{ - dir = 8 - }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 10; + icon_state = "red" }, /area/almayer/living/starboard_garden) "aYt" = ( @@ -13763,10 +11455,6 @@ }, /area/almayer/hallways/hangar) "aYz" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, /obj/structure/closet/firecloset, /turf/open/floor/almayer{ icon_state = "cargo" @@ -13808,6 +11496,10 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) +"aYH" = ( +/obj/structure/safe/cl_office, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "aYI" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/structure/disposalpipe/segment{ @@ -13816,12 +11508,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"aYM" = ( -/obj/structure/largecrate/supply/supplies/tables_racks, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "aYO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -13860,9 +11546,11 @@ }, /area/almayer/hallways/starboard_hallway) "aYU" = ( -/obj/structure/largecrate/supply/supplies/flares, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "aYV" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -13943,27 +11631,15 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) "aZl" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/starboard_hallway) -"aZm" = ( /obj/structure/disposalpipe/segment{ dir = 2; icon_state = "pipe-c" }, -/turf/open/floor/almayer, +/turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"aZn" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_a_s) "aZr" = ( /obj/structure/machinery/status_display{ pixel_y = 30 @@ -13976,6 +11652,14 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/chapel) +"aZv" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/u_m_p) "aZy" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -14019,13 +11703,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/stern_hallway) -"aZJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" +"aZI" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/area/almayer/maint/hull/upper/p_stern) "aZK" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -14046,15 +11729,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"aZM" = ( -/obj/structure/surface/rack, -/obj/item/storage/firstaid/adv/empty, -/obj/item/storage/firstaid/adv/empty, -/obj/item/storage/firstaid/adv/empty, -/turf/open/floor/almayer{ - icon_state = "sterile_green_corner" - }, -/area/almayer/medical/lower_medical_medbay) "aZO" = ( /obj/structure/machinery/landinglight/ds2/delaytwo, /turf/open/floor/almayer{ @@ -14113,19 +11787,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/hangar) -"baa" = ( -/obj/structure/surface/table/almayer, -/obj/structure/sign/safety/terminal{ - pixel_x = -17 - }, -/obj/structure/machinery/faxmachine/corporate/liaison, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"bac" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/emails, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bad" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -14170,8 +11831,23 @@ pixel_x = 8; pixel_y = -32 }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) +"bat" = ( +/obj/structure/machinery/door_control{ + id = "ARES Mainframe Right"; + name = "ARES Mainframe Lockdown"; + pixel_x = -24; + pixel_y = -24; + req_one_access_txt = "200;91;92" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "baw" = ( /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) @@ -14193,10 +11869,6 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) -"baD" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "baG" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer, @@ -14212,6 +11884,12 @@ "baI" = ( /turf/open/floor/plating, /area/almayer/hallways/hangar) +"baJ" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "baM" = ( /obj/structure/machinery/landinglight/ds2/delaythree{ dir = 8 @@ -14246,19 +11924,20 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"baY" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/bomb_supply, -/obj/effect/spawner/random/bomb_supply, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "baZ" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/lower_medical_lobby) +"bba" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/reagent_dispensers/fueltank{ + anchored = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "bbd" = ( /obj/structure/machinery/light{ dir = 4 @@ -14359,16 +12038,6 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_umbilical) -"bbp" = ( -/obj/effect/projector{ - name = "Almayer_Down4"; - vector_x = 19; - vector_y = -104 - }, -/turf/open/floor/almayer{ - allow_construction = 0 - }, -/area/almayer/hallways/aft_hallway) "bbr" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -14379,18 +12048,6 @@ "bbs" = ( /turf/closed/wall/almayer, /area/almayer/living/cryo_cells) -"bbv" = ( -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) -"bbx" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "bby" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out" @@ -14439,26 +12096,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"bbI" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "laddernortheast"; - name = "\improper North East Ladders Shutters" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - layer = 1.9 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/starboard_hallway) -"bbJ" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "greencorner" - }, -/area/almayer/hallways/starboard_hallway) "bbL" = ( /turf/open/floor/almayer{ dir = 8; @@ -14475,40 +12112,18 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) -"bbR" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "bbS" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/starboard_point_defense) -"bbU" = ( -/obj/structure/machinery/door_control{ - id = "laddernortheast"; - name = "North East Ladders Shutters"; - pixel_x = -25; - req_one_access_txt = "2;3;12;19"; - throw_range = 15 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/starboard_hallway) "bbV" = ( -/obj/structure/largecrate/random/secure, -/obj/item/reagent_container/food/drinks/cans/beer{ - pixel_x = 6; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "mono" +/obj/structure/machinery/light{ + dir = 8 }, -/area/almayer/lifeboat_pumps/north2) +/turf/open/floor/almayer, +/area/almayer/shipboard/starboard_missiles) "bbX" = ( -/obj/structure/machinery/constructable_frame, /obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/constructable_frame, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -14520,11 +12135,11 @@ }, /area/almayer/squads/alpha) "bbZ" = ( -/obj/structure/machinery/constructable_frame, -/turf/open/floor/almayer{ - icon_state = "mono" +/obj/structure/bed/chair{ + dir = 1 }, -/area/almayer/lifeboat_pumps/north2) +/turf/open/floor/almayer, +/area/almayer/shipboard/starboard_missiles) "bca" = ( /obj/structure/machinery/cm_vending/gear/smartgun, /obj/structure/sign/safety/hazard{ @@ -14633,20 +12248,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/chemistry) -"bcB" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/surface/table/almayer, -/obj/item/tool/hand_labeler, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/chemistry) "bcC" = ( /obj/item/reagent_container/glass/beaker/bluespace, /obj/structure/machinery/chem_dispenser/medbay, @@ -14690,6 +12291,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_one) +"bcM" = ( +/obj/structure/sign/safety/ladder{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "bcP" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -14757,10 +12368,6 @@ }, /turf/open/floor/plating, /area/almayer/living/briefing) -"bdi" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "bdj" = ( /turf/open/floor/almayer, /area/almayer/squads/req) @@ -14787,46 +12394,6 @@ icon_state = "cargo" }, /area/almayer/squads/req) -"bdn" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"bdo" = ( -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) -"bdp" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "laddernortheast"; - name = "\improper North East Ladders Shutters" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/starboard_hallway) -"bdq" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "laddernortheast"; - name = "\improper North East Ladders Shutters" - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/starboard_hallway) "bdr" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) @@ -15085,31 +12652,25 @@ }, /turf/open/floor/almayer, /area/almayer/living/chapel) -"beG" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "beH" = ( /turf/open/floor/almayer, /area/almayer/living/briefing) -"beI" = ( +"beL" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, /obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"beO" = ( /turf/open/floor/almayer{ - dir = 5; - icon_state = "orange" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/engineering/lower/engine_core) "beP" = ( /obj/item/stack/catwalk, /obj/structure/disposalpipe/segment{ @@ -15170,31 +12731,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/chapel) -"bfa" = ( -/obj/structure/machinery/cm_vending/sorted/tech/tool_storage, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/lower_hull/l_m_s) -"bfb" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/technology_scanner, -/obj/effect/spawner/random/technology_scanner, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"bfc" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "bfl" = ( /turf/open/floor/almayer{ dir = 5; @@ -15220,11 +12756,8 @@ }, /area/almayer/living/cryo_cells) "bfs" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orangecorner" - }, -/area/almayer/engineering/lower_engineering) +/turf/closed/wall/almayer/reinforced, +/area/almayer/maint/hull/lower/l_f_s) "bft" = ( /obj/structure/disposalpipe/junction{ dir = 4 @@ -15241,14 +12774,14 @@ }, /area/almayer/squads/alpha) "bfw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/item/device/radio/intercom{ freerange = 1; name = "General Listening Channel"; pixel_y = 28 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /turf/open/floor/almayer{ dir = 1; icon_state = "red" @@ -15281,17 +12814,6 @@ icon_state = "red" }, /area/almayer/squads/alpha) -"bfA" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/toolbox/electrical, -/obj/item/storage/toolbox/electrical, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "bfC" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -15305,12 +12827,12 @@ }, /area/almayer/squads/alpha) "bfD" = ( -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/machinery/light{ + dir = 1 + }, /turf/open/floor/almayer{ dir = 1; icon_state = "red" @@ -15372,13 +12894,6 @@ icon_state = "redcorner" }, /area/almayer/hallways/starboard_hallway) -"bgc" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "bgj" = ( /obj/structure/machinery/landinglight/ds1{ dir = 8 @@ -15533,22 +13048,10 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_one) -"bgF" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/hull/lower_hull/l_m_s) "bgG" = ( /obj/structure/window/framed/almayer/white, /turf/open/floor/plating, /area/almayer/medical/chemistry) -"bgH" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/hull/lower_hull/l_m_s) "bgK" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -15587,19 +13090,16 @@ icon_state = "red" }, /area/almayer/squads/alpha) -"bgV" = ( -/turf/open/floor/almayer{ - icon_state = "cargo_arrow" - }, -/area/almayer/squads/alpha) "bgW" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/structure/machinery/cm_vending/clothing/marine/charlie{ + density = 0; + layer = 4.1; + pixel_y = -29 }, /turf/open/floor/almayer{ - icon_state = "cargo_arrow" + icon_state = "plate" }, -/area/almayer/squads/alpha) +/area/almayer/squads/charlie) "bgY" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -15643,6 +13143,7 @@ /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) "bho" = ( @@ -15660,16 +13161,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"bht" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) -"bhw" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) "bhx" = ( /obj/structure/bed/chair/wood/normal{ dir = 1 @@ -15678,26 +13169,14 @@ icon_state = "plate" }, /area/almayer/living/chapel) -"bhB" = ( -/turf/closed/wall/almayer/reinforced, -/area/almayer/engineering/engine_core) -"bhC" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, +"bhy" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/tool, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) -"bhD" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) +/area/almayer/maint/hull/lower/l_m_p) "bhG" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -15707,6 +13186,16 @@ icon_state = "plate" }, /area/almayer/squads/alpha) +"bhI" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "bhJ" = ( /obj/structure/machinery/cm_vending/clothing/staff_officer{ density = 0; @@ -15716,19 +13205,6 @@ icon_state = "bluefull" }, /area/almayer/living/bridgebunks) -"bhM" = ( -/obj/structure/safe, -/obj/item/coin/platinum, -/obj/item/attachable/suppressor, -/obj/item/spacecash/c1000/counterfeit, -/obj/item/spacecash/c1000/counterfeit, -/obj/item/clothing/accessory/storage/holster, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/ammo_magazine/pistol/mod88/rubber, -/obj/item/ammo_magazine/pistol/mod88/rubber, -/obj/item/clothing/suit/armor/bulletproof, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bhT" = ( /obj/structure/cargo_container/lockmart/mid{ layer = 3.1; @@ -15743,6 +13219,27 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"bhV" = ( +/obj/structure/ladder/fragile_almayer{ + height = 2; + id = "kitchen" + }, +/obj/structure/sign/safety/ladder{ + pixel_x = 8; + pixel_y = 24 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) +"bhZ" = ( +/obj/structure/surface/table/almayer, +/obj/item/frame/table, +/obj/item/storage/toolbox/electrical, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "biq" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/glass/beaker/large, @@ -15767,9 +13264,9 @@ /area/almayer/hallways/aft_hallway) "biu" = ( /obj/structure/machinery/door/airlock/almayer/medical/glass{ + access_modified = 1; dir = 2; name = "\improper Chemistry Laboratory"; - req_access = null; req_access_txt = "20"; req_one_access = null }, @@ -15796,15 +13293,13 @@ "biA" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/operating_room_three) -"biB" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, +"biC" = ( +/obj/structure/largecrate/random/case, +/obj/structure/machinery/access_button/airlock_exterior, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull) +/area/almayer/maint/hull/upper/u_a_s) "biF" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/roller/surgical, @@ -15814,11 +13309,31 @@ desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; name = "Surgery Cleaner" }, +/obj/item/folded_tent/med{ + pixel_x = -8; + pixel_y = 14 + }, /turf/open/floor/almayer{ dir = 8; icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_medbay) +"biJ" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/command/lifeboat) "biL" = ( /obj/structure/platform{ dir = 4 @@ -15829,61 +13344,38 @@ }, /area/almayer/lifeboat_pumps/north2) "biT" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) -"biV" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) -"bja" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/secure_data{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) -"bjb" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/starboard_hallway) -"bjd" = ( +/obj/structure/machinery/light, /turf/open/floor/almayer{ - dir = 8; - icon_state = "orangecorner" - }, -/area/almayer/engineering/lower_engineering) -"bje" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 + dir = 10; + icon_state = "red" }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" +/area/almayer/living/starboard_garden) +"biV" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 8 }, -/area/almayer/engineering/lower_engineering) +/obj/structure/window/framed/almayer, +/turf/open/floor/plating, +/area/almayer/living/starboard_garden) "bjg" = ( -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) -"bjl" = ( +/obj/item/trash/chips, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"bjk" = ( +/obj/structure/machinery/door_control{ + id = "perma_lockdown_2"; + name = "Maint Lockdown Shutters"; + pixel_y = -20; + req_one_access_txt = "24;31" + }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) -"bjn" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/structure/sign/safety/bulkhead_door{ + pixel_y = -34 }, -/area/almayer/engineering/engine_core) +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/perma) "bjs" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -15891,19 +13383,20 @@ icon_state = "plate" }, /area/almayer/squads/bravo) +"bjt" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) "bju" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"bjy" = ( -/obj/docking_port/stationary/emergency_response/port3, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_p) "bjA" = ( /turf/open/floor/almayer{ dir = 9; @@ -15922,17 +13415,10 @@ icon_state = "cargo_arrow" }, /area/almayer/living/offices) -"bjI" = ( -/obj/structure/machinery/portable_atmospherics/powered/scrubber, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "bjJ" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" + dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) @@ -15981,6 +13467,13 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_umbilical) +"bjQ" = ( +/obj/structure/machinery/shower{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) "bjR" = ( /obj/structure/cargo_container/arious/right, /turf/open/floor/almayer, @@ -16015,6 +13508,15 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"bko" = ( +/obj/structure/bed/chair/comfy/charlie{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "bks" = ( /obj/structure/machinery/landinglight/ds1/delaytwo{ dir = 8 @@ -16023,18 +13525,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"bkt" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 4 - }, -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "bky" = ( /obj/structure/machinery/cryo_cell, /obj/structure/pipes/standard/cap/hidden, @@ -16048,9 +13538,9 @@ dir = 2 }, /obj/structure/machinery/door/airlock/almayer/medical/glass{ + access_modified = 1; dir = 2; name = "\improper Nurse Office"; - req_access = null; req_access_txt = "20"; req_one_access = null }, @@ -16122,27 +13612,17 @@ icon_state = "test_floor4" }, /area/almayer/hallways/aft_hallway) -"bkR" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "bkT" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/cameras/containment{ - dir = 4; - layer = 2.99; - pixel_y = 16 +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/obj/structure/machinery/computer/med_data/laptop{ - dir = 4; - layer = 2.991 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/turf/open/floor/wood/ship, -/area/almayer/medical/medical_science) +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/hydroponics) "bkU" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -16164,9 +13644,6 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) -"bkZ" = ( -/turf/closed/wall/almayer, -/area/almayer/engineering/engineering_workshop) "blb" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 15; @@ -16176,12 +13653,6 @@ icon_state = "mono" }, /area/almayer/hallways/stern_hallway) -"bld" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) "blf" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -16193,6 +13664,16 @@ icon_state = "plate" }, /area/almayer/living/offices) +"bli" = ( +/obj/structure/machinery/door/window/brigdoor/southright{ + id = "Cell 6"; + name = "Cell 6" + }, +/obj/structure/sign/safety/six{ + pixel_x = -17 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) "blj" = ( /obj/structure/surface/table/almayer, /obj/item/tool/hand_labeler, @@ -16209,18 +13690,6 @@ icon_state = "plate" }, /area/almayer/living/offices) -"blm" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - name = "\improper Core Hatch" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) "bln" = ( /obj/structure/sign/safety/cryo{ pixel_x = 3; @@ -16231,12 +13700,6 @@ icon_state = "plate" }, /area/almayer/living/offices) -"blo" = ( -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "blp" = ( /obj/structure/surface/table/almayer, /obj/item/clipboard, @@ -16255,6 +13718,7 @@ /area/almayer/living/offices) "blq" = ( /obj/structure/machinery/door/airlock/almayer/security/glass{ + access_modified = 1; dir = 2; name = "Firing Range"; req_access = null; @@ -16263,6 +13727,7 @@ /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -16292,9 +13757,14 @@ "blB" = ( /turf/open/floor/almayer{ dir = 1; - icon_state = "cargo_arrow" + icon_state = "orange" }, /area/almayer/squads/bravo) +"blJ" = ( +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering/starboard) "blZ" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/med_data/laptop, @@ -16413,6 +13883,15 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_lobby) +"bmp" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/belt/utility/full, +/obj/item/clothing/glasses/welding, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "bmr" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -16480,9 +13959,9 @@ /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 }, -/obj/structure/disposalpipe/segment{ +/obj/structure/disposalpipe/junction{ dir = 8; - icon_state = "pipe-c" + icon_state = "pipe-y" }, /turf/open/floor/almayer{ icon_state = "plate" @@ -16500,26 +13979,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/gym) -"bmM" = ( -/obj/structure/machinery/vending/coffee, -/obj/structure/sign/safety/coffee{ - pixel_x = -17; - pixel_y = -8 - }, -/obj/structure/sign/safety/rewire{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bmN" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop) "bmO" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -16532,23 +13991,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"bmP" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bmR" = ( -/obj/structure/machinery/cm_vending/sorted/tech/tool_storage, -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "bmW" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -16563,23 +14005,6 @@ icon_state = "green" }, /area/almayer/living/offices) -"bnc" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 9" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bne" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) "bng" = ( /obj/structure/machinery/vending/cigarette{ density = 0; @@ -16667,6 +14092,12 @@ icon_state = "orange" }, /area/almayer/squads/bravo) +"bny" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) "bnA" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -16702,6 +14133,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) +"bnF" = ( +/obj/structure/machinery/cryopod{ + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/upper/u_m_p) "bnH" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -16719,9 +14158,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_lobby) -"bnL" = ( -/turf/open/floor/wood/ship, -/area/almayer/medical/medical_science) "bnR" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -16767,22 +14203,17 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"bob" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 +"bnZ" = ( +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 }, -/obj/structure/largecrate/random/secure, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 6; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/lifeboat_pumps/south1) "bof" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -16803,25 +14234,15 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_four) -"bop" = ( -/obj/structure/machinery/cm_vending/clothing/military_police{ - density = 0; - pixel_y = 16 - }, -/obj/structure/window/reinforced{ - dir = 4; - health = 80 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/shipboard/brig/general_equipment) "boq" = ( /obj/structure/bed/chair/comfy/alpha, /turf/open/floor/almayer{ icon_state = "redfull" }, /area/almayer/living/briefing) +"bos" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/lower/s_bow) "bot" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/light{ @@ -16881,64 +14302,14 @@ icon_state = "mono" }, /area/almayer/squads/req) -"boC" = ( -/obj/structure/barricade/handrail, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) -"boH" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"boI" = ( -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop) "boL" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, +/turf/open/floor/almayer, /area/almayer/living/starboard_garden) -"boN" = ( -/obj/structure/surface/table/almayer, -/obj/item/book/manual/engineering_particle_accelerator, -/obj/item/folder/yellow, -/obj/structure/machinery/keycard_auth{ - pixel_x = -8; - pixel_y = 25 - }, -/obj/structure/sign/safety/high_rad{ - pixel_x = 32; - pixel_y = -8 - }, -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 - }, -/obj/structure/sign/safety/terminal{ - pixel_x = 14; - pixel_y = 26 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "boU" = ( -/obj/structure/platform{ - dir = 4; - layer = 2.7 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) +/obj/structure/surface/table/almayer, +/obj/item/tool/weldingtool, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) "boV" = ( /obj/structure/cargo_container/wy/left, /obj/structure/prop/almayer/minigun_crate{ @@ -16962,13 +14333,6 @@ icon_state = "greenfull" }, /area/almayer/living/offices) -"boZ" = ( -/obj/item/storage/box/donkpockets, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "bpa" = ( /obj/structure/surface/table/almayer, /obj/item/device/flashlight/lamp, @@ -16985,6 +14349,7 @@ dir = 2 }, /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + access_modified = 1; dir = 1; name = "\improper Particle Cannon Systems Room"; req_access = null; @@ -17002,25 +14367,6 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"bpf" = ( -/obj/structure/toilet{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "sterile" - }, -/area/almayer/hull/upper_hull/u_a_s) -"bph" = ( -/obj/structure/bed/chair/comfy/orange, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) "bpj" = ( /obj/structure/dropship_equipment/fulton_system, /turf/open/floor/almayer{ @@ -17050,6 +14396,15 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"bpw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "bpz" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -17057,6 +14412,18 @@ icon_state = "dark_sterile" }, /area/almayer/medical/chemistry) +"bpA" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/paper, +/obj/item/tool/pen{ + pixel_x = -5; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/living/briefing) "bpC" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/bravo) @@ -17072,14 +14439,12 @@ icon_state = "test_floor4" }, /area/almayer/squads/bravo) -"bpJ" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/powercell, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) +"bpI" = ( +/obj/structure/closet/secure_closet/fridge/dry/stock, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/grunt_rnr) "bpK" = ( /obj/structure/machinery/door/airlock/almayer/marine/alpha/sl, /turf/open/floor/almayer{ @@ -17090,6 +14455,9 @@ /obj/structure/sign/poster{ pixel_y = 32 }, +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor/almayer{ dir = 8; icon_state = "red" @@ -17139,90 +14507,18 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_umbilical) -"bpX" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/plating, -/area/almayer/engineering/engineering_workshop) -"bpY" = ( -/obj/structure/surface/table/almayer, -/obj/item/frame/table, -/obj/item/frame/table, -/obj/item/clipboard, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bpZ" = ( -/obj/structure/surface/table/almayer, -/obj/item/cell/crap, -/obj/item/tool/crowbar, -/obj/structure/machinery/cell_charger, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bqa" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) -"bqe" = ( -/obj/structure/pipes/vents/scrubber{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop) -"bqf" = ( -/obj/structure/machinery/autolathe, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "bqm" = ( /obj/structure/closet/boxinggloves, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/living/gym) -"bqo" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"bqp" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/processing) -"bqw" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"bqy" = ( -/obj/structure/sign/poster/hero/voteno{ - pixel_y = 32 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bqF" = ( /obj/structure/dropship_equipment/fuel/fuel_enhancer, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/hallways/hangar) -"bqG" = ( -/obj/structure/largecrate/supply/supplies/flares, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "bqH" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -17260,6 +14556,14 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lockerroom) +"bqP" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 5" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "bqR" = ( /turf/open/floor/almayer{ dir = 6; @@ -17292,11 +14596,37 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"bqY" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = -28 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "bqZ" = ( /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/living/briefing) +"bra" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/chief_mp_office) "brb" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer, @@ -17358,18 +14688,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha) -"brw" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/flashlight/lamp, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"brx" = ( -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) "bry" = ( /obj/structure/sign/poster{ pixel_y = 32 @@ -17392,15 +14710,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/bravo) -"brC" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/atmos_alert{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "brH" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -17412,28 +14721,6 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"brI" = ( -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/obj/structure/sign/safety/life_support{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"brJ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "brO" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -17466,71 +14753,16 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"brT" = ( -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - icon_state = "sterile" - }, -/area/almayer/hull/upper_hull/u_a_s) "brW" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hallways/hangar) -"brX" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "brY" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"bsc" = ( -/obj/structure/machinery/computer/skills{ - req_one_access_txt = "200" - }, -/obj/structure/surface/table/woodentable/fancy, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) -"bsd" = ( -/obj/item/device/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/structure/machinery/door_control{ - id = "cl_shutters"; - name = "Privacy Shutters"; - pixel_x = -5; - pixel_y = 6; - req_access_txt = "200" - }, -/obj/structure/machinery/door_control{ - id = "RoomDivider"; - name = "Room Divider"; - pixel_x = -5; - pixel_y = -3; - req_access_txt = "200" - }, -/obj/structure/surface/table/woodentable/fancy, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) -"bse" = ( -/obj/structure/machinery/computer/arcade, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"bsf" = ( -/obj/structure/largecrate/random, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 8; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "bsj" = ( /obj/structure/machinery/line_nexter/med{ dir = 4 @@ -17552,6 +14784,15 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) +"bsp" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/perma) "bst" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/operating_room_one) @@ -17595,21 +14836,6 @@ icon_state = "plate" }, /area/almayer/living/gym) -"bsF" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/emails{ - dir = 1; - pixel_x = 1; - pixel_y = 4 - }, -/obj/item/tool/kitchen/utensil/fork{ - pixel_x = -9; - pixel_y = 3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "bsG" = ( /obj/structure/machinery/disposal{ density = 0; @@ -17658,10 +14884,6 @@ icon_state = "greenfull" }, /area/almayer/living/offices) -"bsO" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "bsP" = ( /obj/structure/machinery/optable, /turf/open/floor/almayer{ @@ -17720,7 +14942,6 @@ /obj/structure/pipes/vents/pump{ dir = 8 }, -/obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) "bsW" = ( @@ -17735,14 +14956,6 @@ icon_state = "orangecorner" }, /area/almayer/hallways/starboard_hallway) -"bsZ" = ( -/obj/structure/machinery/power/monitor{ - name = "Main Power Grid Monitoring" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "btc" = ( /obj/structure/bed/chair{ dir = 8; @@ -17766,38 +14979,22 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"btk" = ( -/obj/structure/sign/poster/pinup{ - pixel_x = -30 - }, -/obj/structure/sign/poster/hunk{ - pixel_x = -25; - pixel_y = 10 - }, -/obj/item/trash/buritto, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice12"; - pixel_y = 16 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"btm" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) "btn" = ( -/obj/structure/machinery/light{ - dir = 1 +/obj/item/device/camera{ + pixel_x = 4; + pixel_y = 8 }, -/obj/structure/closet/toolcloset, +/obj/structure/surface/table/almayer, +/obj/item/device/camera_film{ + pixel_x = 4; + pixel_y = -2 + }, +/obj/item/device/camera_film, /turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" + dir = 8; + icon_state = "red" }, -/area/almayer/engineering/lower_engineering) +/area/almayer/shipboard/brig/main_office) "btp" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -17827,22 +15024,12 @@ icon_state = "plate" }, /area/almayer/living/gym) -"btz" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) "btC" = ( -/obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 + dir = 1 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ - dir = 10; icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) @@ -17874,6 +15061,15 @@ "btO" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) +"btV" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "btX" = ( /obj/structure/machinery/light{ dir = 4 @@ -17940,27 +15136,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_one) -"buk" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/aft_hallway) -"buq" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_m_s) "bur" = ( /obj/structure/prop/almayer/missile_tube, /obj/effect/decal/warning_stripes{ @@ -18002,15 +15177,6 @@ icon_state = "green" }, /area/almayer/living/offices) -"buD" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/secure, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "buH" = ( /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) @@ -18022,14 +15188,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"buK" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/lightreplacer, -/obj/item/device/radio, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "buM" = ( /obj/structure/machinery/cm_vending/clothing/smartgun/bravo, /turf/open/floor/almayer{ @@ -18055,67 +15213,18 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"buQ" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/station_alert{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "buS" = ( /obj/structure/machinery/cm_vending/gear/engi, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/squads/bravo) -"buU" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/starboard_hallway) -"buW" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"buX" = ( -/obj/effect/landmark/crap_item, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "bvb" = ( /obj/structure/machinery/light{ dir = 8 }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"bvc" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/obj/structure/sign/poster{ - desc = "Koorlander Golds, lovingly machine rolled for YOUR pleasure."; - icon_state = "poster10"; - name = "Koorlander Gold Poster"; - pixel_x = 29; - pixel_y = 6; - serial_number = 10 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bvd" = ( /obj/structure/machinery/constructable_frame, /turf/open/floor/almayer{ @@ -18135,13 +15244,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"bvl" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) "bvr" = ( /obj/structure/bed/chair/office/dark, /obj/effect/decal/warning_stripes{ @@ -18152,12 +15254,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"bvx" = ( -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "bvz" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/closet/secure_closet/surgical{ @@ -18174,47 +15270,17 @@ icon_state = "silver" }, /area/almayer/living/cryo_cells) -"bvI" = ( +"bvH" = ( /obj/structure/surface/table/almayer, -/obj/item/tool/extinguisher, -/obj/item/device/lightreplacer, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bvK" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) -"bvL" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" +/obj/structure/machinery/recharger, +/obj/item/tool/hand_labeler{ + pixel_x = -8; + pixel_y = 3 }, -/area/almayer/engineering/engineering_workshop) -"bvO" = ( -/obj/structure/largecrate/random/barrel/white, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) -"bvQ" = ( -/obj/structure/pipes/unary/outlet_injector, -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bvS" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull) +/area/almayer/shipboard/brig/general_equipment) "bvT" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -18223,15 +15289,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_umbilical) -"bvU" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2; - name = "\improper Liasion's Bathroom" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/corporateliason) "bvV" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -18241,18 +15298,14 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_umbilical) -"bvY" = ( -/obj/structure/machinery/door_control{ - id = "cl_shutters 2"; - name = "Quarters Shutters"; - pixel_x = -25; - pixel_y = 23; - req_access_txt = "200" - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"bvX" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, -/area/almayer/hull/upper_hull/u_m_p) +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/office/window, +/turf/open/floor/plating, +/area/almayer/command/corporateliaison) "bwc" = ( /obj/structure/barricade/handrail{ dir = 8 @@ -18320,16 +15373,6 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha) -"bwj" = ( -/obj/structure/pipes/standard/simple/visible, -/obj/structure/sign/safety/nonpress_0g{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "bwl" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -18359,15 +15402,9 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"bwF" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) +"bwG" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/l_m_s) "bwH" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/crew/alt{ @@ -18378,26 +15415,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_medbay) -"bwQ" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 2 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_f_s) "bwR" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/med_data/laptop{ @@ -18490,37 +15507,22 @@ icon_state = "redfull" }, /area/almayer/living/cryo_cells) -"bxo" = ( -/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bxr" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop) -"bxs" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/platform, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "bxx" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) +"bxA" = ( +/obj/structure/machinery/power/apc/almayer/hardened, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south2) "bxB" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -18533,60 +15535,49 @@ /obj/effect/landmark/late_join/alpha, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) -"bxD" = ( -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/starboard_hallway) -"bxE" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/lower_engineering) -"bxF" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 +"bxC" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 }, -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) -"bxG" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 6 +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 }, -/obj/structure/machinery/firealarm{ - pixel_y = 28 +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_y = -1 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "dark_sterile" }, -/area/almayer/engineering/lower_engineering) -"bxH" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 4 +/area/almayer/living/port_emb) +"bxD" = ( +/obj/structure/machinery/status_display{ + pixel_y = 30 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/engineering/lower_engineering) -"bxI" = ( -/obj/structure/pipes/binary/pump/on{ - dir = 4 +/area/almayer/hallways/starboard_hallway) +"bxN" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/workshop) +"bxY" = ( +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21"; + pixel_y = 11 }, -/area/almayer/engineering/lower_engineering) -"bxX" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "byb" = ( /obj/structure/barricade/handrail/medical, /turf/open/floor/almayer{ @@ -18631,50 +15622,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_four) -"byg" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 9 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"byh" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 5 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"byk" = ( -/obj/structure/pipes/valve/digital/open{ - dir = 4 - }, -/obj/structure/sign/safety/fire_haz{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"byl" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 9 - }, -/obj/structure/machinery/meter, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orangecorner" - }, -/area/almayer/engineering/lower_engineering) "bym" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -18692,24 +15639,6 @@ /obj/effect/landmark/late_join/bravo, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/bravo) -"byp" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) -"byq" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) "byr" = ( /obj/structure/largecrate/random/barrel/green, /turf/open/floor/almayer{ @@ -18725,6 +15654,15 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) +"byt" = ( +/obj/structure/surface/rack, +/obj/item/tool/crowbar, +/obj/item/tool/weldingtool, +/obj/item/tool/wrench, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "byu" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -18752,16 +15690,6 @@ icon_state = "silver" }, /area/almayer/living/cryo_cells) -"byz" = ( -/obj/structure/machinery/vending/cigarette, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"byA" = ( -/obj/structure/machinery/alarm/almayer, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop) "byC" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -18769,12 +15697,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"byD" = ( -/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "byF" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ @@ -18784,6 +15706,15 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) +"byH" = ( +/obj/structure/bed/sofa/south/white/right{ + pixel_y = 16 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "silver" + }, +/area/almayer/maint/hull/upper/u_m_p) "byI" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -18795,71 +15726,6 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) -"byJ" = ( -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) -"byK" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 5 - }, -/obj/structure/machinery/light, -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) -"byL" = ( -/obj/structure/machinery/meter, -/obj/structure/pipes/standard/simple/visible{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) -"byM" = ( -/obj/structure/pipes/standard/simple/hidden/universal{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"byN" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"byO" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/general_air_control/large_tank_control{ - name = "Lower Deck Waste Tank Control" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"byQ" = ( -/obj/structure/machinery/suit_storage_unit/carbon_unit, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"byR" = ( -/obj/structure/machinery/suit_storage_unit/carbon_unit, -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"byY" = ( -/obj/structure/bed, -/obj/item/toy/farwadoll{ - pixel_x = 5 - }, -/obj/item/clothing/under/redpyjamas, -/obj/item/bedsheet/orange, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bzg" = ( /obj/structure/pipes/vents/pump{ dir = 8; @@ -18869,38 +15735,22 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lockerroom) -"bzj" = ( -/obj/structure/machinery/pipedispenser, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) "bzo" = ( /obj/structure/machinery/power/apc/almayer, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_four) -"bzs" = ( -/obj/structure/machinery/shower{ - dir = 8 - }, -/obj/structure/machinery/door/window/westright, -/obj/structure/window/reinforced/tinted/frosted, -/obj/item/tool/soap/deluxe, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/command/corporateliason) "bzy" = ( /turf/closed/wall/almayer, /area/almayer/hallways/vehiclehangar) "bzz" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/almayer{ - icon_state = "mono" +/obj/structure/disposalpipe/trunk{ + dir = 4 }, -/area/almayer/lifeboat_pumps/north1) +/obj/structure/machinery/disposal, +/turf/open/floor/almayer, +/area/almayer/shipboard/starboard_missiles) "bzA" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -18914,31 +15764,6 @@ icon_state = "test_floor4" }, /area/almayer/command/telecomms) -"bzE" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"bzF" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"bzG" = ( -/obj/structure/machinery/door_control{ - id = "laddernortheast"; - name = "North East Ladders Shutters"; - pixel_x = 25; - req_one_access_txt = "2;3;12;19"; - throw_range = 15 - }, -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "bzH" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/toolbox, @@ -18961,15 +15786,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) -"bzP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) "bzQ" = ( /obj/structure/largecrate/random/case, /turf/open/floor/plating/plating_catwalk, @@ -18988,15 +15804,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/chemistry) -"bzU" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engine_core) "bzV" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -19014,21 +15821,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) -"bzX" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - name = "\improper Core Hatch" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) "bzY" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -19057,18 +15849,6 @@ dir = 1 }, /area/almayer/command/lifeboat) -"bAf" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - dir = 2; - name = "\improper Atmospherics Wing" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/lower_engineering) "bAg" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ @@ -19105,10 +15885,13 @@ icon_state = "test_floor4" }, /area/almayer/command/securestorage) -"bAF" = ( -/obj/effect/step_trigger/clone_cleaner, +"bAy" = ( +/obj/structure/closet/fireaxecabinet{ + pixel_y = -32 + }, +/obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer, -/area/almayer/hallways/aft_hallway) +/area/almayer/maint/hull/upper/u_f_s) "bAH" = ( /obj/structure/largecrate/random/case, /turf/open/floor/almayer{ @@ -19133,18 +15916,6 @@ icon_state = "red" }, /area/almayer/shipboard/weapon_room) -"bAM" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet{ - pixel_y = 26 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/general_equipment) "bAN" = ( /obj/structure/machinery/light{ dir = 1 @@ -19205,7 +15976,7 @@ "bAX" = ( /obj/structure/closet/emcloset, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, /area/almayer/hallways/starboard_hallway) "bAY" = ( @@ -19225,7 +15996,7 @@ /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/living/tankerbunks) +/area/almayer/living/auxiliary_officer_office) "bBa" = ( /turf/open/floor/almayer{ dir = 4; @@ -19242,15 +16013,11 @@ }, /area/almayer/hallways/starboard_hallway) "bBc" = ( -/obj/structure/closet/firecloset, -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, +/obj/structure/surface/rack, /turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" + icon_state = "plate" }, -/area/almayer/engineering/lower_engineering) +/area/almayer/maint/hull/upper/u_m_p) "bBd" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -19291,28 +16058,6 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"bBm" = ( -/turf/open/floor/almayer{ - icon_state = "orangecorner" - }, -/area/almayer/engineering/lower_engineering) -"bBp" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) -"bBq" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) "bBu" = ( /obj/structure/surface/rack, /turf/open/floor/almayer{ @@ -19364,28 +16109,37 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/vehiclehangar) "bBC" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "green" - }, -/area/almayer/hallways/aft_hallway) -"bBD" = ( /obj/structure/bed/chair{ dir = 4 }, +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) +"bBD" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 }, /obj/structure/sign/safety/maint{ pixel_x = -17 }, +/obj/structure/surface/table/almayer, +/obj/structure/transmitter/rotary{ + name = "Telephone"; + phone_category = "Almayer"; + phone_id = "Auxiliary Support Office Second Line"; + pixel_x = -5; + pixel_y = 3 + }, +/obj/structure/transmitter/rotary{ + name = "Telephone"; + phone_category = "Almayer"; + phone_id = "Auxiliary Support Office"; + pixel_x = 8; + pixel_y = 8 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/living/tankerbunks) +/area/almayer/living/auxiliary_officer_office) "bBN" = ( /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, @@ -19401,6 +16155,12 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"bBU" = ( +/obj/structure/sign/safety/security{ + pixel_x = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "bBY" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/cameras/almayer{ @@ -19423,20 +16183,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"bCf" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/airlock/almayer/security{ - dir = 2; - name = "\improper Security Checkpoint"; - req_access = null; - req_one_access_txt = "3;19" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/briefing) "bCg" = ( /obj/structure/machinery/light{ dir = 8 @@ -19467,6 +16213,10 @@ icon_state = "redfull" }, /area/almayer/hallways/port_hallway) +"bCk" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "bCl" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -19509,6 +16259,18 @@ icon_state = "redfull" }, /area/almayer/living/briefing) +"bCv" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -14; + pixel_y = 13 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "bCx" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -19557,16 +16319,10 @@ /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/port_hallway) -"bCF" = ( /obj/structure/disposalpipe/junction{ dir = 2; icon_state = "pipe-j2" }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) "bCG" = ( @@ -19576,28 +16332,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/cryo_cells) -"bCH" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull) -"bCI" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) -"bCJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) "bCM" = ( /obj/structure/machinery/cryopod, /turf/open/floor/almayer{ @@ -19610,18 +16344,6 @@ icon_state = "cargo" }, /area/almayer/living/cryo_cells) -"bCO" = ( -/obj/item/tool/kitchen/tray{ - layer = 2.9 - }, -/obj/item/reagent_container/food/snacks/carpmeat{ - layer = 3.3 - }, -/obj/item/reagent_container/food/snacks/carpmeat{ - layer = 3.3 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "bCP" = ( /obj/structure/bed/chair{ dir = 1 @@ -19631,19 +16353,12 @@ icon_state = "red" }, /area/almayer/squads/alpha) -"bCQ" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "bCR" = ( -/obj/structure/machinery/light/small, +/obj/structure/largecrate/random/case, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/maint/hull/upper/u_a_p) "bCS" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -19712,9 +16427,7 @@ /obj/structure/bed/chair{ dir = 8 }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, +/turf/open/floor/almayer, /area/almayer/living/starboard_garden) "bDF" = ( /obj/structure/machinery/door/poddoor/almayer{ @@ -19737,6 +16450,7 @@ /area/almayer/hallways/hangar) "bDL" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/almayer{ + access_modified = 1; dir = 1; name = "\improper Auxiliary Combat Support Secondary Preparations"; req_one_access = "19;27;22" @@ -19904,24 +16618,6 @@ }, /turf/open/floor/plating, /area/almayer/squads/req) -"bEj" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bEk" = ( -/obj/structure/machinery/door/airlock/almayer/marine/requisitions{ - dir = 1; - name = "\improper Requisitions Storage" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/squads/req) "bEl" = ( /obj/structure/machinery/computer/supply_drop_console/limited, /turf/closed/wall/almayer, @@ -19933,26 +16629,6 @@ }, /turf/open/floor/plating, /area/almayer/squads/req) -"bEn" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 4; - layer = 2.7 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"bEo" = ( -/obj/structure/bed/sofa/south/grey/right{ - pixel_y = 12 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "bEp" = ( /obj/structure/filingcabinet, /obj/structure/sign/safety/galley{ @@ -19980,18 +16656,6 @@ icon_state = "cargo" }, /area/almayer/squads/req) -"bEt" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/sign/safety/commline_connection{ - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/squads/req) "bEv" = ( /turf/open/floor/almayer{ dir = 1; @@ -20197,24 +16861,11 @@ }, /area/almayer/squads/bravo) "bET" = ( -/obj/structure/machinery/cm_vending/sorted/medical, +/obj/structure/machinery/cm_vending/sorted/medical/bolted, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, /area/almayer/medical/lockerroom) -"bEU" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bEV" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "bFa" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -20223,60 +16874,6 @@ icon_state = "red" }, /area/almayer/shipboard/weapon_room) -"bFb" = ( -/obj/structure/foamed_metal, -/turf/open/floor/plating, -/area/almayer/medical/lower_medical_medbay) -"bFc" = ( -/obj/structure/closet/emcloset{ - pixel_x = 8 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bFe" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = 25 - }, -/obj/item/frame/fire_alarm, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bFf" = ( -/obj/structure/surface/table/almayer, -/obj/item/book/manual/atmospipes, -/obj/item/circuitboard/airalarm, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bFg" = ( -/obj/structure/surface/table/almayer, -/obj/item/frame/fire_alarm, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bFh" = ( -/obj/structure/machinery/cm_vending/clothing/marine/charlie, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/charlie) -"bFi" = ( -/obj/structure/machinery/light, -/obj/structure/machinery/cm_vending/clothing/marine/charlie, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/charlie) "bFj" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -20292,6 +16889,21 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/weapon_room) +"bFl" = ( +/obj/structure/surface/table/almayer, +/obj/item/pizzabox/meat, +/obj/item/reagent_container/food/drinks/cans/souto/diet/peach{ + pixel_x = -4; + pixel_y = -3 + }, +/obj/item/reagent_container/food/drinks/cans/souto/diet/cherry{ + pixel_x = 8; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "bFp" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -20309,7 +16921,7 @@ "bFr" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, -/area/almayer/living/tankerbunks) +/area/almayer/living/auxiliary_officer_office) "bFs" = ( /obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep, /turf/open/floor/almayer{ @@ -20347,14 +16959,6 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"bFD" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) "bFJ" = ( /obj/docking_port/stationary/marine_dropship/almayer_hangar_2, /turf/open/floor/plating, @@ -20369,9 +16973,31 @@ /obj/docking_port/stationary/marine_dropship/almayer_hangar_1, /turf/open/floor/plating, /area/almayer/hallways/hangar) +"bGa" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/sign/safety/maint{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/hallways/upper/starboard) "bGb" = ( /turf/closed/wall/almayer, /area/almayer/hallways/port_hallway) +"bGc" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "bGe" = ( /obj/structure/machinery/light{ dir = 1 @@ -20462,12 +17088,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"bGr" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "bGu" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/light{ @@ -20491,6 +17111,9 @@ /area/almayer/squads/req) "bGz" = ( /obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ dir = 9; icon_state = "green" @@ -20641,17 +17264,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) +"bHg" = ( +/obj/structure/bed, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/lower_medical_medbay) "bHk" = ( /turf/open/floor/almayer/research/containment/floor2{ dir = 1 }, /area/almayer/medical/containment/cell/cl) -"bHm" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull) "bHp" = ( /obj/structure/disposalpipe/trunk{ dir = 2 @@ -20675,6 +17299,7 @@ }, /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + access_modified = 1; dir = 1; name = "\improper Particle Cannon Systems Room"; req_access = null; @@ -20694,57 +17319,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"bHu" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - name = "\improper Engineering Hallway" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/lower_engineering) -"bHv" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/power/apc/almayer{ - dir = 4 - }, -/obj/structure/machinery/cell_charger, -/obj/structure/sign/safety/high_rad{ - pixel_x = 32; - pixel_y = -8 - }, -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bHy" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/belt/utility/full, -/obj/item/clothing/glasses/welding, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) -"bHz" = ( -/obj/structure/surface/table/almayer, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "bHB" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -20795,15 +17369,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) -"bHM" = ( -/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/lower_hull/l_m_s) "bHP" = ( /turf/open/floor/plating/almayer, /area/almayer/shipboard/weapon_room) @@ -20880,19 +17445,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"bIi" = ( -/obj/structure/sign/safety/security{ - pixel_x = 15; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "bIl" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) "bIn" = ( @@ -20916,6 +17476,26 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"bIp" = ( +/obj/effect/step_trigger/ares_alert/mainframe, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES Mainframe Left"; + name = "\improper ARES Mainframe Shutters"; + plane = -7 + }, +/obj/structure/machinery/door/poddoor/almayer/blended/white/open{ + closed_layer = 3.2; + id = "ARES Emergency"; + layer = 3.2; + name = "ARES Emergency Lockdown"; + needs_power = 0; + open_layer = 1.9; + plane = -7 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "bIs" = ( /obj/structure/largecrate/supply/supplies/mre, /obj/structure/machinery/light/small{ @@ -20925,22 +17505,12 @@ icon_state = "cargo" }, /area/almayer/squads/req) -"bIu" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "Storage"; - req_one_access = "2;21" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/req) "bIw" = ( -/obj/structure/machinery/prop/almayer/computer, /obj/structure/surface/table/almayer, /obj/structure/machinery/light{ dir = 1 }, +/obj/structure/machinery/computer/working_joe, /turf/open/floor/almayer{ dir = 1; icon_state = "red" @@ -20965,28 +17535,6 @@ }, /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/navigation) -"bIz" = ( -/mob/living/simple_animal/cat/Jones{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) -"bIA" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/structure/mirror{ - pixel_x = 29 - }, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/tankerbunks) "bII" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 8; @@ -21014,10 +17562,12 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) -"bIN" = ( -/obj/structure/bed/chair/office/dark, +"bIM" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/medical/hydroponics) "bIR" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -21051,13 +17601,6 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"bIX" = ( -/obj/structure/machinery/light, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hallways/port_hallway) "bJb" = ( /obj/structure/disposalpipe/junction, /obj/structure/pipes/standard/simple/hidden/supply, @@ -21102,23 +17645,12 @@ icon_state = "orangecorner" }, /area/almayer/hallways/starboard_hallway) -"bJj" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bJk" = ( -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "bJl" = ( /obj/structure/machinery/door/airlock/almayer/generic{ + access_modified = 1; dir = 1; - name = "\improper Tanker Quarters"; - req_one_access_txt = "19;27" + name = "\improper Auxiliary Support Officers Quarters"; + req_one_access_txt = "37" }, /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -21131,7 +17663,7 @@ /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/living/tankerbunks) +/area/almayer/living/auxiliary_officer_office) "bJo" = ( /turf/closed/wall/almayer, /area/almayer/hallways/repair_bay) @@ -21171,12 +17703,6 @@ icon_state = "orangecorner" }, /area/almayer/squads/bravo) -"bJF" = ( -/obj/structure/pipes/vents/scrubber, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) "bJH" = ( /obj/structure/surface/table/almayer, /obj/item/facepaint/black{ @@ -21184,38 +17710,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/bravo) -"bJI" = ( -/obj/structure/pipes/vents/pump/on, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) -"bJK" = ( -/obj/structure/closet/radiation, -/turf/open/floor/almayer{ - icon_state = "test_floor5" - }, -/area/almayer/engineering/engine_core) -"bJM" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) -"bJN" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) "bJO" = ( /obj/structure/machinery/light/small, /obj/structure/sign/safety/nonpress_0g{ @@ -21229,32 +17723,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/port_umbilical) -"bJP" = ( -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) -"bJQ" = ( -/obj/structure/surface/table/almayer, -/obj/item/fuelCell, -/obj/item/fuelCell, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) -"bJR" = ( -/obj/structure/surface/table/almayer, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/item/fuelCell, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "bJS" = ( /obj/structure/surface/rack, /obj/item/tool/wrench, @@ -21303,6 +17771,7 @@ }, /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + access_modified = 1; dir = 1; name = "\improper Particle Cannon Systems Room"; req_access = null; @@ -21381,21 +17850,6 @@ icon_state = "red" }, /area/almayer/shipboard/weapon_room) -"bKo" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/machinery/disposal/broken, -/obj/item/reagent_container/food/drinks/cans/beer{ - layer = 3.1; - pixel_x = -7; - pixel_y = 16 - }, -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/port_emb) "bKp" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, @@ -21462,55 +17916,29 @@ icon_state = "orange" }, /area/almayer/hallways/starboard_hallway) +"bKJ" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/lower/cryo_cells) "bKM" = ( /obj/effect/landmark/start/marine/medic/charlie, /obj/effect/landmark/late_join/charlie, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) -"bKO" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +"bKP" = ( +/obj/structure/machinery/light/small{ + dir = 4 }, -/turf/open/floor/plating, -/area/almayer/engineering/engineering_workshop) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/s_bow) "bKQ" = ( /obj/structure/bed/chair{ dir = 8 }, /turf/open/floor/wood/ship, /area/almayer/shipboard/sea_office) -"bKT" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) -"bKU" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bKV" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) -"bKW" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engine_core) "bKX" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/masks, @@ -21519,53 +17947,27 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"bLb" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Hangar Lockdown"; - name = "\improper Hangar Lockdown Blast Door" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_p) "bLc" = ( -/obj/structure/machinery/light, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/surface/rack, +/obj/item/roller, +/obj/item/roller, +/obj/structure/machinery/light{ + dir = 1 }, -/area/almayer/engineering/engine_core) -"bLd" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/item/clothing/glasses/disco_fever{ + pixel_x = 5; + pixel_y = 4 }, -/turf/open/floor/almayer, -/area/almayer/engineering/engine_core) -"bLe" = ( /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/engineering/engine_core) +/area/almayer/maint/hull/upper/u_f_s) "bLf" = ( +/obj/structure/closet/emcloset, /turf/open/floor/almayer{ - dir = 5; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) -"bLg" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_s) +/area/almayer/maint/hull/upper/u_m_s) "bLh" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -21697,6 +18099,23 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/vehiclehangar) +"bLv" = ( +/obj/structure/machinery/door_control{ + id = "ARES StairsLower"; + name = "ARES Core Lockdown"; + pixel_x = 24; + pixel_y = -8; + req_one_access_txt = "90;91;92" + }, +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 8; + pixel_y = 2 + }, +/turf/open/floor/almayer/no_build{ + dir = 4; + icon_state = "silver" + }, +/area/almayer/command/airoom) "bLw" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/light{ @@ -21763,7 +18182,7 @@ /area/almayer/shipboard/weapon_room) "bLO" = ( /obj/structure/bed/chair{ - dir = 1 + dir = 8 }, /turf/open/floor/grass, /area/almayer/living/starboard_garden) @@ -21773,15 +18192,6 @@ /obj/item/tool/pen, /turf/open/floor/almayer, /area/almayer/living/offices/flight) -"bLS" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull) "bLT" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -21874,15 +18284,6 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"bMB" = ( -/obj/structure/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) "bMC" = ( /turf/open/floor/almayer{ dir = 9; @@ -21899,15 +18300,16 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"bMF" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" - }, +"bME" = ( +/obj/structure/surface/rack, +/obj/structure/ob_ammo/ob_fuel, +/obj/structure/ob_ammo/ob_fuel, +/obj/structure/ob_ammo/ob_fuel, +/obj/structure/ob_ammo/ob_fuel, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "plate" }, -/area/almayer/engineering/engine_core) +/area/almayer/maint/hull/lower/p_bow) "bMJ" = ( /obj/structure/machinery/light, /obj/structure/machinery/portable_atmospherics/canister/oxygen, @@ -21923,13 +18325,6 @@ /obj/structure/machinery/portable_atmospherics/canister/air, /turf/open/floor/engine, /area/almayer/engineering/airmix) -"bMM" = ( -/turf/open/floor/almayer, -/area/almayer/engineering/engine_core) -"bMN" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engine_core) "bMO" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/CICmap, @@ -21944,14 +18339,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/navigation) -"bMQ" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 1" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) "bMR" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -21995,38 +18382,6 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) -"bMV" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 7" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bMW" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 13" - }, -/obj/structure/sign/safety/rad_haz{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bMX" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) "bNa" = ( /obj/structure/surface/table/almayer, /obj/item/folder/black, @@ -22041,6 +18396,12 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) +"bNc" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orangecorner" + }, +/area/almayer/maint/hull/upper/u_a_s) "bNe" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -22173,15 +18534,6 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) -"bNz" = ( -/obj/structure/surface/rack, -/obj/item/frame/table, -/obj/item/frame/table, -/obj/item/frame/table, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/lower_hull/l_m_s) "bNA" = ( /obj/structure/machinery/computer/ordercomp, /obj/structure/sign/safety/galley{ @@ -22211,10 +18563,6 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"bND" = ( -/obj/structure/bed/chair, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/perma) "bNE" = ( /obj/structure/extinguisher_cabinet{ pixel_x = 26 @@ -22278,15 +18626,6 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) -"bNT" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "bNW" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -22297,30 +18636,6 @@ icon_state = "cargo" }, /area/almayer/hallways/vehiclehangar) -"bNX" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/starboard_hallway) -"bNZ" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engineering_workshop) -"bOc" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "bOe" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -22337,68 +18652,6 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) -"bOh" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 16" - }, -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bOi" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) -"bOk" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 2" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bOl" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 8" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bOm" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 14" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bOn" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - name = "\improper Exterior Airlock"; - req_access = null - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_a_s) -"bOo" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) "bOq" = ( /obj/structure/prop/almayer/cannon_cables, /turf/open/floor/almayer{ @@ -22570,20 +18823,6 @@ icon_state = "emeraldcorner" }, /area/almayer/squads/charlie) -"bPd" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 3" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bPe" = ( -/obj/structure/machinery/portable_atmospherics/powered/pump, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "bPg" = ( /obj/vehicle/powerloader, /obj/structure/machinery/light{ @@ -22714,13 +18953,7 @@ }, /area/almayer/squads/req) "bPF" = ( -/obj/structure/pipes/standard/simple/hidden{ - dir = 5 - }, -/obj/structure/bed, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, +/turf/closed/wall/almayer/white/outer_tile, /area/almayer/medical/medical_science) "bPG" = ( /obj/effect/decal/warning_stripes{ @@ -22731,6 +18964,19 @@ icon_state = "plate" }, /area/almayer/shipboard/weapon_room) +"bPH" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) "bPJ" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -22769,115 +19015,31 @@ icon_state = "logo_c" }, /area/almayer/living/briefing) -"bPR" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/turf/open/floor/almayer{ - icon_state = "orangefull" - }, -/area/almayer/engineering/engineering_workshop) -"bPS" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"bPT" = ( -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"bPU" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"bPV" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"bPW" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"bPZ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bQa" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "orangefull" - }, -/area/almayer/engineering/engineering_workshop) -"bQe" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"bQi" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orangecorner" - }, -/area/almayer/engineering/engine_core) -"bQk" = ( -/obj/structure/machinery/power/smes/buildable, -/obj/structure/machinery/status_display{ - pixel_y = 30 +"bQc" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1 }, -/obj/structure/sign/safety/high_voltage{ - pixel_x = 32; - pixel_y = -8 +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "courtyard_cells"; + name = "\improper Courtyard Lockdown Shutter" }, -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 +/obj/structure/machinery/door/poddoor/almayer/locked{ + id = "Cell 6"; + name = "\improper Courtyard Divider" }, -/turf/open/floor/almayer{ - icon_state = "tcomms" +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, -/area/almayer/engineering/engine_core) -"bQm" = ( -/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "test_floor4" }, -/area/almayer/engineering/engine_core) +/area/almayer/shipboard/brig/cells) "bQt" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ icon_state = "red" }, /area/almayer/shipboard/weapon_room) -"bQu" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "bQz" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -22888,20 +19050,8 @@ /obj/structure/pipes/vents/pump{ dir = 4 }, -/turf/open/floor/almayer, -/area/almayer/squads/charlie) -"bQB" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/squads/charlie) -"bQC" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /turf/open/floor/almayer{ - icon_state = "emeraldcorner" + icon_state = "emerald" }, /area/almayer/squads/charlie) "bQD" = ( @@ -22974,9 +19124,7 @@ /turf/closed/wall/almayer, /area/almayer/squads/req) "bQS" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo{ - icon_state = "req_ammo_wall" - }, +/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/blend, /turf/open/floor/almayer{ icon_state = "green" }, @@ -23035,51 +19183,6 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"bRi" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bRj" = ( -/obj/structure/ladder{ - height = 1; - id = "engineeringladder" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engineering_workshop) -"bRk" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bRm" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/bed/chair, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/shipboard/brig/lobby) -"bRr" = ( -/obj/structure/machinery/fuelcell_recycler, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "bRs" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/sign/safety/bridge{ @@ -23093,20 +19196,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/aft_hallway) -"bRu" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - dir = 2; - name = "\improper Engineering Workshop" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engineering_workshop) "bRx" = ( /obj/structure/machinery/door/poddoor/railing{ id = "vehicle_elevator_railing_aux" @@ -23144,29 +19233,6 @@ icon_state = "plate" }, /area/almayer/hallways/vehiclehangar) -"bRF" = ( -/obj/structure/machinery/light/small, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) -"bRH" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cryo) -"bRK" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "bRP" = ( /obj/structure/machinery/body_scanconsole, /obj/structure/disposalpipe/segment{ @@ -23277,34 +19343,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"bSk" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "orangefull" - }, -/area/almayer/engineering/engineering_workshop) -"bSl" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bSm" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "orangefull" - }, -/area/almayer/engineering/engineering_workshop) "bSn" = ( /obj/structure/machinery/cm_vending/gear/tl{ density = 0; @@ -23316,37 +19354,37 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"bSt" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "bSv" = ( /turf/closed/wall/almayer, /area/almayer/living/tankerbunks) -"bSx" = ( +"bSD" = ( +/obj/item/reagent_container/glass/bucket{ + pixel_x = -4; + pixel_y = -3 + }, +/obj/item/reagent_container/glass/bucket{ + pixel_x = 4; + pixel_y = -3 + }, +/obj/item/reagent_container/glass/bucket{ + pixel_x = -4 + }, +/obj/structure/machinery/light{ + dir = 1 + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "orangecorner" + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) +"bSH" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 }, -/area/almayer/engineering/engine_core) -"bSy" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engine_core) -"bSG" = ( -/obj/structure/machinery/power/smes/buildable, /turf/open/floor/almayer{ - icon_state = "tcomms" + dir = 1; + icon_state = "orange" }, -/area/almayer/engineering/engine_core) +/area/almayer/engineering/lower) "bSJ" = ( /turf/closed/wall/almayer, /area/almayer/squads/delta) @@ -23380,10 +19418,17 @@ }, /area/almayer/hallways/hangar) "bST" = ( -/turf/closed/wall/almayer/research/containment/wall/purple{ - dir = 4 +/obj/structure/closet/secure_closet/hydroresearch, +/obj/item/reagent_container/glass/watertank, +/obj/item/reagent_container/glass/watertank, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/area/almayer/medical/containment/cell) +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/hydroponics) "bSY" = ( /obj/structure/disposalpipe/junction{ dir = 4 @@ -23427,24 +19472,6 @@ }, /turf/open/space, /area/space) -"bTi" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"bTl" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 4" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) "bTn" = ( /obj/structure/machinery/cryopod/right{ layer = 3.1; @@ -23458,12 +19485,6 @@ icon_state = "cargo" }, /area/almayer/living/tankerbunks) -"bTp" = ( -/obj/structure/machinery/portable_atmospherics/powered/scrubber, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "bTq" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ name = "\improper Evacuation Airlock PL-3"; @@ -23492,12 +19513,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"bTw" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) "bTx" = ( /turf/open/floor/wood/ship, /area/almayer/shipboard/sea_office) @@ -23507,15 +19522,6 @@ icon_state = "bluecorner" }, /area/almayer/squads/delta) -"bTz" = ( -/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, -/obj/structure/sign/safety/terminal{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop/hangar) "bTA" = ( /turf/open/floor/almayer, /area/almayer/squads/delta) @@ -23523,7 +19529,10 @@ /obj/structure/pipes/vents/scrubber{ dir = 4 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "blue" + }, /area/almayer/squads/delta) "bTE" = ( /turf/open/floor/almayer{ @@ -23545,10 +19554,6 @@ "bTH" = ( /turf/open/floor/almayer, /area/almayer/living/tankerbunks) -"bTI" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "bTJ" = ( /obj/structure/machinery/vending/cigarette{ density = 0; @@ -23580,30 +19585,19 @@ "bTO" = ( /turf/open/floor/almayer, /area/almayer/shipboard/port_point_defense) -"bTQ" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "bTR" = ( /obj/structure/machinery/light{ dir = 1 }, -/obj/structure/surface/table/almayer, -/obj/item/paper_bin, -/obj/item/tool/pen, -/obj/item/clothing/mask/rebreather/scarf, -/obj/item/clothing/mask/rebreather/scarf, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/living/tankerbunks) +/area/almayer/living/auxiliary_officer_office) "bTS" = ( /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/living/tankerbunks) +/area/almayer/living/auxiliary_officer_office) "bTT" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, @@ -23611,11 +19605,14 @@ "bTU" = ( /obj/structure/surface/table/almayer, /obj/item/storage/toolbox/mechanical, +/obj/item/dogtag{ + desc = "A blank marine's information dog tag. The word ranger and a pawprint is scratched into it." + }, /obj/item/device/megaphone, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/living/tankerbunks) +/area/almayer/living/auxiliary_officer_office) "bTV" = ( /obj/item/bedsheet/brown{ pixel_y = 13 @@ -23645,6 +19642,12 @@ icon_state = "plate" }, /area/almayer/living/tankerbunks) +"bTW" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "bUa" = ( /obj/structure/closet, /turf/open/floor/almayer{ @@ -23663,10 +19666,6 @@ icon_state = "orangefull" }, /area/almayer/living/briefing) -"bUc" = ( -/obj/structure/foamed_metal, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_m_s) "bUd" = ( /turf/open/floor/almayer{ dir = 4; @@ -23708,13 +19707,6 @@ }, /area/almayer/squads/charlie_delta_shared) "bUo" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/ammo_magazine/shotgun, -/obj/item/ammo_magazine/shotgun, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, /obj/structure/sign/safety/ammunition{ pixel_x = 15; pixel_y = -32 @@ -23722,6 +19714,7 @@ /obj/structure/sign/safety/hazard{ pixel_y = -32 }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, /turf/open/floor/almayer{ icon_state = "redfull" }, @@ -23769,6 +19762,12 @@ icon_state = "blue" }, /area/almayer/squads/delta) +"bUx" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/almayer/command/airoom) "bUy" = ( /obj/structure/closet/crate/ammo, /obj/structure/machinery/light/small, @@ -23786,14 +19785,11 @@ /area/almayer/squads/req) "bUz" = ( /obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hallways/port_hallway) -"bUA" = ( -/obj/docking_port/stationary/escape_pod/north, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_s) "bUE" = ( /turf/open/floor/almayer{ dir = 4; @@ -23805,37 +19801,18 @@ icon_state = "bluecorner" }, /area/almayer/hallways/port_hallway) -"bUG" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/port_hallway) -"bUI" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) -"bUJ" = ( -/obj/structure/platform_decoration{ - dir = 4 +"bUH" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 }, -/area/almayer/engineering/engine_core) -"bUL" = ( -/obj/structure/platform_decoration, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "plate" }, -/area/almayer/engineering/engine_core) +/area/almayer/maint/hull/lower/l_m_p) "bUM" = ( /turf/open/floor/almayer{ dir = 8; @@ -23856,29 +19833,11 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) -"bUP" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_m_s) -"bUR" = ( -/obj/structure/machinery/door_control{ - id = "laddersoutheast"; - name = "South East Ladders Shutters"; - pixel_x = 25; - req_one_access_txt = "2;3;12;19"; - throw_range = 15 - }, +"bUQ" = ( /turf/open/floor/almayer{ - dir = 4; - icon_state = "blue" + icon_state = "plate" }, -/area/almayer/hallways/port_hallway) +/area/almayer/maint/hull/lower/l_f_p) "bUT" = ( /obj/structure/extinguisher_cabinet{ pixel_x = 26 @@ -23894,43 +19853,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) -"bUW" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 5" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bUX" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 11" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bUY" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 17" - }, -/obj/structure/sign/safety/rad_haz{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bUZ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_p) "bVb" = ( /turf/open/floor/almayer{ icon_state = "blue" @@ -23942,27 +19864,13 @@ }, /area/almayer/shipboard/port_point_defense) "bVe" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/item/reagent_container/food/snacks/cheesewedge, +/obj/structure/closet/l3closet/general, /obj/structure/window/reinforced{ dir = 8; health = 80 }, -/turf/open/floor/almayer{ - icon_state = "sterile_green" - }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/medical/medical_science) -"bVi" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "bVn" = ( /obj/structure/machinery/light{ dir = 8 @@ -23987,18 +19895,24 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"bVt" = ( -/obj/structure/machinery/door_control{ - id = "laddersoutheast"; - name = "South East Ladders Shutters"; - pixel_x = 25; - req_one_access_txt = "2;3;12;19"; - throw_range = 15 +"bVr" = ( +/obj/structure/platform{ + dir = 8 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/u_a_p) +"bVs" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"bVv" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/engine_core) "bVw" = ( /turf/open/floor/almayer{ dir = 4; @@ -24012,38 +19926,6 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"bVB" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2; - name = "\improper Weyland-Yutani Office" - }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "cl_shutters"; - name = "\improper Privacy Shutters" - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/corporateliason) -"bVC" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 8; - id = "cmp_armory"; - name = "\improper Armory Shutters" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - name = "\improper Armory" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/armory) "bVE" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ name = "\improper Medical Bay"; @@ -24056,60 +19938,19 @@ icon_state = "test_floor4" }, /area/almayer/medical/upper_medical) -"bVF" = ( -/obj/structure/surface/rack, -/obj/item/roller, -/obj/item/roller, -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/item/clothing/glasses/disco_fever{ - pixel_x = 5; - pixel_y = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) -"bVL" = ( -/obj/structure/surface/rack, -/obj/structure/ob_ammo/ob_fuel, -/obj/structure/ob_ammo/ob_fuel, -/obj/structure/ob_ammo/ob_fuel, -/obj/structure/ob_ammo/ob_fuel, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "bVM" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"bVR" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) -"bVT" = ( -/obj/structure/largecrate/random/barrel/white, +"bVN" = ( +/obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/engineering/lower/engine_core) "bVU" = ( /turf/closed/wall/almayer/outer, /area/almayer/shipboard/port_point_defense) -"bWb" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "bWc" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ dir = 2; @@ -24121,15 +19962,16 @@ }, /area/almayer/shipboard/port_point_defense) "bWd" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - dir = 2; - name = "\improper Evacuation Airlock SU-6"; - req_access = null +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/bed/chair{ + dir = 8 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/powered) +/area/almayer/living/starboard_garden) "bWe" = ( /turf/open/floor/almayer{ dir = 5; @@ -24137,13 +19979,20 @@ }, /area/almayer/shipboard/port_point_defense) "bWf" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/tool, +/obj/structure/machinery/light, +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/starboard_garden) +"bWg" = ( +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/maint/hull/upper/u_m_p) "bWh" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ dir = 2; @@ -24154,12 +20003,6 @@ icon_state = "test_floor4" }, /area/almayer/powered) -"bWj" = ( -/obj/structure/largecrate/supply, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "bWn" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -24186,58 +20029,19 @@ }, /area/almayer/shipboard/port_point_defense) "bWq" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, +/obj/structure/bed/chair{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/living/starboard_garden) "bWr" = ( /obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/living/chapel) -"bWs" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"bWw" = ( -/obj/structure/pipes/vents/pump{ - dir = 8; - id_tag = "mining_outpost_pump" - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"bWy" = ( -/obj/structure/closet/toolcloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/lower_hull/l_m_s) -"bWC" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/hallways/aft_hallway) -"bWE" = ( -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "bWJ" = ( /obj/structure/machinery/shower{ dir = 4 @@ -24245,15 +20049,7 @@ /obj/structure/machinery/door/window/eastright, /obj/structure/window/reinforced/tinted/frosted, /turf/open/floor/plating/plating_catwalk, -/area/almayer/living/tankerbunks) -"bWK" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/starboard_garden) +/area/almayer/living/auxiliary_officer_office) "bWL" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -24261,9 +20057,6 @@ icon_state = "plate" }, /area/almayer/squads/req) -"bWM" = ( -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "bWP" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -24276,16 +20069,6 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"bWS" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/glass/bucket/mopbucket, -/obj/item/reagent_container/glass/bucket/mopbucket{ - pixel_y = 10 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "bWT" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -24311,58 +20094,25 @@ icon_state = "orange" }, /area/almayer/hallways/port_hallway) -"bWZ" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - dir = 2; - name = "\improper Engineering Workshop" - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engineering_workshop) "bXe" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) -"bXl" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"bXm" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" +"bXf" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"bXn" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 4 + icon_state = "plate" }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" +/area/almayer/command/lifeboat) +"bXh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" }, -/area/almayer/engineering/engine_core) +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "bXo" = ( /obj/structure/ladder{ height = 1; @@ -24376,41 +20126,12 @@ icon_state = "plate" }, /area/almayer/shipboard/navigation) -"bXr" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 6" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) "bXs" = ( /obj/structure/machinery/light{ dir = 1 }, /turf/open/floor/almayer, /area/almayer/hallways/vehiclehangar) -"bXt" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 12" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bXu" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 18" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bXv" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bXw" = ( /obj/structure/machinery/bioprinter{ stored_metal = 125 @@ -24419,19 +20140,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/operating_room_two) -"bXx" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_18"; - pixel_y = 7 - }, -/obj/structure/machinery/door_control{ - id = "cl_shutters 3"; - name = "Quarters Shutters"; - pixel_x = -25; - req_access_txt = "200" - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bXz" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/plating_catwalk, @@ -24445,147 +20153,45 @@ icon_state = "plate" }, /area/almayer/squads/req) -"bXP" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +"bXX" = ( +/obj/structure/machinery/light{ + dir = 8 }, -/area/almayer/engineering/engine_core) -"bXQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/almayer, +/area/almayer/hallways/vehiclehangar) +"bXY" = ( +/obj/structure/ladder{ + height = 1; + id = "bridge3" }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/structure/sign/safety/ladder{ + pixel_x = 24; + pixel_y = -32 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/engineering/engine_core) -"bXR" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 8 +/area/almayer/shipboard/navigation) +"bXZ" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer, +/area/almayer/hallways/vehiclehangar) +"bYa" = ( +/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/blend, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "green" }, +/area/almayer/squads/req) +"bYc" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/aft_hallway) +"bYe" = ( /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"bXS" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engine_core) -"bXU" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) -"bXV" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) -"bXW" = ( -/obj/structure/machinery/door_control{ - id = "cl_shutters 3"; - name = "Quarters Shutters"; - pixel_x = 25; - req_access_txt = "200" - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"bXX" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/hallways/vehiclehangar) -"bXY" = ( -/obj/structure/ladder{ - height = 1; - id = "bridge3" - }, -/obj/structure/sign/safety/ladder{ - pixel_x = 24; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/navigation) -"bXZ" = ( -/obj/structure/machinery/light, -/turf/open/floor/almayer, -/area/almayer/hallways/vehiclehangar) -"bYa" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo{ - icon_state = "req_guns_wall" - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "green" - }, -/area/almayer/squads/req) -"bYc" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) -"bYd" = ( -/obj/structure/bookcase/manuals/engineering, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"bYe" = ( -/turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "mono" }, /area/almayer/hallways/aft_hallway) -"bYg" = ( -/obj/item/reagent_container/glass/bucket{ - pixel_x = 4; - pixel_y = 9 - }, -/obj/item/tool/shovel/spade{ - pixel_x = -3; - pixel_y = -3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "bYh" = ( /obj/structure/disposalpipe/junction, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -24593,17 +20199,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) -"bYi" = ( -/obj/structure/platform{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"bYj" = ( -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bYn" = ( /turf/closed/wall/almayer/outer, /area/almayer/engineering/upper_engineering/port) @@ -24639,18 +20234,6 @@ /obj/structure/disposalpipe/junction, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) -"bYy" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/escapepod{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "bYz" = ( /obj/structure/sign/safety/south{ pixel_x = 32; @@ -24675,87 +20258,16 @@ icon_state = "orangecorner" }, /area/almayer/hallways/port_hallway) -"bYI" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bYK" = ( -/obj/structure/sign/safety/ladder{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bYM" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) -"bYO" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) -"bYP" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"bYQ" = ( +"bYF" = ( /obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"bYS" = ( -/obj/structure/pipes/vents/scrubber{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) -"bYU" = ( -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) -"bYV" = ( -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/structure/surface/table/almayer, -/obj/item/fuelCell, -/turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "N"; + pixel_y = 1 }, -/area/almayer/engineering/engine_core) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "bYW" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) +/turf/closed/wall/almayer/reinforced, +/area/almayer/shipboard/panic) "bYY" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -24776,11 +20288,6 @@ }, /area/almayer/command/cic) "bZa" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1; - name = "\improper Flight Crew Quarters"; - req_one_access_txt = "19;22" - }, /obj/structure/disposalpipe/segment, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -24802,17 +20309,18 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) -"bZg" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +"bZf" = ( +/obj/structure/prop/invuln/lattice_prop{ + dir = 1; + icon_state = "lattice-simple"; + pixel_x = -16; + pixel_y = 17 }, +/obj/structure/largecrate/random/barrel/red, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/living/pilotbunks) +/area/almayer/maint/hull/lower/l_m_p) "bZi" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -24855,60 +20363,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"bZA" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - name = "\improper Engineering Hallway" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/lower_engineering) -"bZD" = ( -/obj/structure/surface/table/almayer, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) -"bZE" = ( -/obj/structure/pipes/binary/pump/on{ - dir = 4 - }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/obj/structure/sign/safety/life_support{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bZH" = ( -/obj/structure/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) "bZJ" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/effect/landmark/map_item, @@ -24929,14 +20383,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/vehiclehangar) -"bZN" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "Bathroom" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/chief_mp_office) "bZO" = ( /obj/structure/machinery/light{ dir = 8 @@ -25029,6 +20475,9 @@ icon_state = "cargo" }, /area/almayer/squads/req) +"cak" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/evidence_storage) "cal" = ( /turf/open/floor/almayer{ dir = 6; @@ -25041,6 +20490,31 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) +"cap" = ( +/obj/structure/surface/rack, +/obj/item/tool/wirecutters, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"caq" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"car" = ( +/obj/structure/machinery/firealarm{ + pixel_y = -28 + }, +/obj/structure/bed/chair/comfy/delta{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "cat" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -25052,6 +20526,7 @@ "cau" = ( /obj/structure/disposalpipe/segment, /obj/structure/machinery/door/airlock/almayer/security/glass{ + access_modified = 1; dir = 2; name = "Firing Range"; req_access = null; @@ -25088,42 +20563,6 @@ icon_state = "plate" }, /area/almayer/hallways/port_umbilical) -"cay" = ( -/obj/structure/closet/emcloset{ - pixel_x = 8 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"caz" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/firstaid/toxin{ - pixel_x = 8; - pixel_y = -2 - }, -/obj/item/book/manual/engineering_guide, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"caA" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/firstaid/fire, -/obj/item/device/lightreplacer, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"caB" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/flashlight, -/obj/item/storage/firstaid/rad, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "caC" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -25148,24 +20587,6 @@ icon_state = "plate" }, /area/almayer/hallways/vehiclehangar) -"caE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_p) -"caF" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "caM" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer{ @@ -25219,24 +20640,26 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_three) -"cba" = ( -/turf/open/floor/almayer{ +"cbc" = ( +/obj/structure/platform_decoration, +/obj/structure/prop/invuln/overhead_pipe{ dir = 4; - icon_state = "sterile_green_side" + pixel_x = -14; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/area/almayer/medical/testlab) +/area/almayer/maint/hull/upper/u_a_s) "cbg" = ( -/obj/structure/machinery/flasher{ - alpha = 1; - id = "Containment Cell 3"; - layer = 2.1; - name = "Mounted Flash"; - pixel_y = 30 +/obj/structure/machinery/door/airlock/almayer/command{ + dir = 2; + name = "\improper Command Ladder" }, -/turf/open/floor/almayer/research/containment/floor2{ - dir = 1 +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/area/almayer/medical/containment/cell) +/area/almayer/medical/medical_science) "cbh" = ( /obj/structure/machinery/cm_vending/clothing/pilot_officer{ density = 0; @@ -25266,11 +20689,6 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"cbo" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull) "cbr" = ( /turf/open/floor/almayer{ dir = 4; @@ -25309,19 +20727,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/port_hallway) -"cbA" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -12; - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "cbD" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -25339,51 +20744,12 @@ icon_state = "test_floor4" }, /area/almayer/hallways/port_hallway) -"cbG" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) -"cbH" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) "cbM" = ( /obj/structure/closet/crate, /obj/item/clothing/glasses/welding, /obj/item/circuitboard, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north1) -"cbN" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"cbO" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/sign/safety/escapepod{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "cbQ" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -25439,6 +20805,10 @@ /obj/structure/sign/safety/storage{ pixel_y = 32 }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 3 + }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) "cbW" = ( @@ -25455,21 +20825,6 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) -"cbZ" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/obj/item/storage/firstaid{ - pixel_x = -13; - pixel_y = 13 - }, -/obj/item/clipboard, -/obj/item/paper, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "ccb" = ( /obj/structure/surface/table/reinforced/black, /turf/open/floor/almayer{ @@ -25478,41 +20833,33 @@ }, /area/almayer/living/cryo_cells) "ccc" = ( -/obj/structure/sign/safety/bathunisex{ - pixel_x = 8; - pixel_y = 25 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/obj/structure/sign/safety/bathunisex{ - pixel_x = 8; - pixel_y = -25 +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, -/turf/open/floor/almayer, -/area/almayer/living/pilotbunks) -"ccd" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" +/obj/structure/machinery/door/airlock/almayer/research/reinforced{ + dir = 8; + name = "\improper Containment Airlock"; + closeOtherId = "containment_n" }, -/area/almayer/living/cryo_cells) -"cce" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - dir = 2; - name = "\improper Atmospherics Wing" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, -/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/engineering/lower_engineering) -"ccf" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, +/area/almayer/medical/containment) +"ccd" = ( +/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep, /turf/open/floor/almayer{ - icon_state = "redfull" + dir = 5; + icon_state = "red" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/living/cryo_cells) "ccg" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -25529,11 +20876,18 @@ }, /area/almayer/command/cichallway) "cck" = ( -/obj/structure/window/framed/almayer/hull/hijack_bustable, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +/obj/structure/surface/table/reinforced/almayer_B, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, -/turf/open/floor/plating, /area/almayer/command/airoom) "ccq" = ( /obj/effect/decal/warning_stripes{ @@ -25580,206 +20934,59 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) -"ccx" = ( -/obj/structure/surface/table/almayer, -/obj/structure/largecrate/random/case/small{ - pixel_y = 5 - }, -/obj/item/storage/firstaid/toxin{ - pixel_x = 8; - pixel_y = -2 +"ccG" = ( +/obj/structure/largecrate/random/secure, +/obj/effect/decal/warning_stripes{ + icon_state = "E" }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/engineering/lower_engineering) -"ccy" = ( -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/obj/structure/machinery/suit_storage_unit/carbon_unit, +/area/almayer/hallways/hangar) +"ccJ" = ( /turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"ccz" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 + icon_state = "silvercorner" }, +/area/almayer/hallways/repair_bay) +"ccN" = ( /turf/open/floor/almayer{ - icon_state = "plate" + dir = 4; + icon_state = "redcorner" }, -/area/almayer/engineering/lower_engineering) -"ccA" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/area/almayer/living/cryo_cells) +"ccO" = ( +/obj/structure/machinery/light, +/obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/engineering/lower_engineering) -"ccB" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/obj/structure/machinery/computer/general_air_control/large_tank_control{ - name = "Lower Oxygen Supply Console" +/area/almayer/hallways/port_hallway) +"ccQ" = ( +/obj/effect/landmark/ert_spawns/distress_cryo, +/obj/effect/landmark/late_join, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/cryo_cells) +"ccU" = ( +/obj/structure/pipes/vents/pump{ + dir = 8; + id_tag = "mining_outpost_pump" }, -/obj/structure/pipes/standard/simple/hidden/universal{ - dir = 4 +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/port_hallway) +"cdb" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/engineering/lower_engineering) -"ccC" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/pipes/standard/simple/visible{ - dir = 4 - }, -/obj/structure/machinery/computer/general_air_control/large_tank_control{ - name = "Lower Nitrogen Control Console" - }, -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"ccD" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 10 - }, -/obj/structure/machinery/meter, -/obj/structure/sign/safety/terminal{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"ccE" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/general_air_control/large_tank_control{ - name = "Lower Mixed Air Control" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"ccG" = ( -/obj/structure/largecrate/random/secure, -/obj/effect/decal/warning_stripes{ - icon_state = "E" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/hangar) -"ccJ" = ( -/turf/open/floor/almayer{ - icon_state = "silvercorner" - }, -/area/almayer/hallways/repair_bay) -"ccN" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "redcorner" - }, -/area/almayer/living/cryo_cells) -"ccO" = ( -/obj/structure/machinery/light, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/port_hallway) -"ccQ" = ( -/obj/effect/landmark/ert_spawns/distress_cryo, -/obj/effect/landmark/late_join, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/cryo_cells) -"ccR" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 6 - }, -/obj/structure/machinery/meter, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"ccS" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"ccT" = ( -/obj/structure/pipes/trinary/mixer{ - dir = 4; - name = "Gas mixer N2/O2" - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"ccU" = ( -/obj/structure/pipes/vents/pump{ - dir = 8; - id_tag = "mining_outpost_pump" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/port_hallway) -"ccV" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 10 - }, -/obj/structure/machinery/meter, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"ccW" = ( -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"ccX" = ( -/obj/structure/pipes/binary/pump/high_power/on{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"ccY" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"cdb" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/port_umbilical) -"cdc" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +/area/almayer/hallways/port_umbilical) +"cdc" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -25800,15 +21007,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie) -"cdk" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/main_office) "cdm" = ( /obj/effect/landmark/ert_spawns/distress_cryo, /obj/effect/landmark/late_join, @@ -25843,24 +21041,6 @@ }, /turf/open/floor/plating, /area/almayer/living/cryo_cells) -"cdr" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"cdu" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "cdw" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, @@ -25886,6 +21066,13 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/hallways/hangar) +"cdB" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "cdE" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/drinks/cans/waterbottle{ @@ -25924,13 +21111,13 @@ /turf/open/floor/almayer, /area/almayer/living/grunt_rnr) "cdP" = ( -/obj/structure/machinery/cm_vending/clothing/marine/charlie, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" +/obj/structure/machinery/cm_vending/clothing/marine/charlie{ + density = 0; + layer = 4.1; + pixel_y = -29 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo_arrow" }, /area/almayer/squads/charlie) "cdT" = ( @@ -25964,23 +21151,6 @@ icon_state = "plate" }, /area/almayer/squads/charlie) -"cdZ" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/port_hallway) -"cea" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/tool, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "ceg" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -25990,27 +21160,6 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha) -"ceo" = ( -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, -/obj/structure/closet/cabinet, -/obj/item/clipboard, -/obj/item/storage/lockbox/loyalty, -/obj/item/storage/briefcase, -/obj/item/reagent_container/spray/pepper, -/obj/item/device/eftpos{ - eftpos_name = "Weyland-Yutani EFTPOS scanner" - }, -/obj/item/device/portable_vendor/corporate, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"cer" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) "ces" = ( /obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/almayer{ @@ -26027,9 +21176,11 @@ }, /area/almayer/hallways/port_umbilical) "ceu" = ( -/obj/item/trash/barcardine, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) +/turf/open/floor/almayer{ + dir = 1; + icon_state = "green" + }, +/area/almayer/living/starboard_garden) "cev" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -26053,18 +21204,9 @@ icon_state = "plate" }, /area/almayer/hallways/port_umbilical) -"cey" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "ceC" = ( -/obj/structure/machinery/light, -/obj/structure/bed/chair{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, +/obj/structure/prop/almayer/ship_memorial, +/turf/open/floor/plating/almayer, /area/almayer/living/starboard_garden) "ceD" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ @@ -26106,13 +21248,47 @@ icon_state = "cargo_arrow" }, /area/almayer/hallways/repair_bay) +"ceY" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "ceZ" = ( -/obj/structure/bed/sofa/south, +/obj/structure/bed/sofa/south/grey/left, /turf/open/floor/almayer{ dir = 9; icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"cfk" = ( +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/port_missiles) +"cfm" = ( +/obj/structure/flora/pottedplant{ + desc = "Life is underwhelming, especially when you're a potted plant."; + icon_state = "pottedplant_22"; + name = "Jerry"; + pixel_y = 8 + }, +/obj/item/clothing/glasses/sunglasses/prescription{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "cfo" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) @@ -26206,6 +21382,12 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/repair_bay) +"cfT" = ( +/turf/open/floor/almayer{ + dir = 10; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) "cgl" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/multi_tile/almayer/marine/shared/charlie_delta{ @@ -26288,12 +21470,6 @@ icon_state = "plate" }, /area/almayer/hallways/port_umbilical) -"cgI" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "cgJ" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -26314,15 +21490,40 @@ }, /area/almayer/shipboard/brig/cic_hallway) "cgT" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/junction, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) +"cgU" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/powercell, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"chb" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/starboard) "chf" = ( /obj/structure/window/reinforced{ dir = 4; @@ -26377,10 +21578,10 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"chC" = ( -/obj/structure/platform_decoration, +"chv" = ( +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/shipboard/brig/armory) "chE" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -26437,6 +21638,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/machinery/camera/autoname/almayer, /turf/open/floor/almayer{ dir = 1; icon_state = "emerald" @@ -26555,18 +21757,6 @@ icon_state = "green" }, /area/almayer/squads/req) -"cit" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/obj/structure/bed/chair{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/starboard_garden) "ciu" = ( /obj/structure/platform{ dir = 8 @@ -26602,6 +21792,21 @@ icon_state = "test_floor4" }, /area/almayer/powered) +"ciB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/lattice_prop{ + dir = 1; + icon_state = "lattice-simple"; + pixel_x = 16; + pixel_y = -15 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "ciD" = ( /obj/structure/platform_decoration{ dir = 1 @@ -26610,16 +21815,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north2) -"ciF" = ( -/obj/structure/sign/safety/cryo{ - pixel_x = 8; - pixel_y = -26 - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "ciN" = ( /turf/open/floor/almayer{ dir = 6; @@ -26669,17 +21864,12 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"cje" = ( -/turf/open/floor/almayer{ - icon_state = "cargo_arrow" - }, -/area/almayer/squads/charlie) "cjf" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/almayer{ - icon_state = "cargo_arrow" + icon_state = "emerald" }, /area/almayer/squads/charlie) "cjg" = ( @@ -26693,16 +21883,23 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"cjh" = ( -/obj/structure/machinery/vending/snack, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "cji" = ( /obj/structure/platform_decoration, /turf/open/floor/almayer{ icon_state = "red" }, /area/almayer/lifeboat_pumps/north2) +"cjk" = ( +/obj/structure/bed, +/obj/structure/machinery/flasher{ + id = "Cell 6"; + pixel_x = -24 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/cells) "cjl" = ( /obj/structure/disposalpipe/segment, /obj/structure/machinery/door/poddoor/almayer{ @@ -26738,6 +21935,11 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) +"cjt" = ( +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "cjw" = ( /obj/structure/disposalpipe/segment, /obj/structure/machinery/light{ @@ -26790,15 +21992,6 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"cjF" = ( -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/obj/structure/machinery/cm_vending/clothing/marine/delta, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/delta) "cjK" = ( /obj/structure/machinery/door/airlock/almayer/maint, /obj/structure/disposalpipe/segment{ @@ -26876,6 +22069,25 @@ icon_state = "silver" }, /area/almayer/engineering/port_atmos) +"cke" = ( +/obj/structure/machinery/vending/cola{ + density = 0; + pixel_y = 18 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"ckj" = ( +/obj/structure/surface/table/almayer, +/obj/item/stack/nanopaste{ + pixel_x = -3; + pixel_y = 14 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) "ckl" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -26899,10 +22111,6 @@ icon_state = "red" }, /area/almayer/hallways/port_hallway) -"ckn" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) "ckr" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -26910,67 +22118,6 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"cks" = ( -/obj/structure/machinery/cm_vending/clothing/marine/delta, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/delta) -"cku" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/obj/structure/machinery/cm_vending/clothing/marine/delta, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/delta) -"ckv" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/machinery/cm_vending/clothing/marine/delta, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/delta) -"ckx" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/obj/structure/machinery/cm_vending/clothing/marine/delta, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/delta) -"cky" = ( -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, -/obj/structure/machinery/cm_vending/clothing/marine/delta, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/delta) -"ckB" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - name = "\improper Emergency Air Storage" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_a_s) -"ckD" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_m_p) "ckI" = ( /obj/structure/disposalpipe/segment, /obj/item/device/radio/intercom{ @@ -27007,9 +22154,12 @@ }, /area/almayer/squads/delta) "ckR" = ( +/obj/structure/machinery/cm_vending/clothing/marine/delta{ + density = 0; + pixel_y = 16 + }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "cargo_arrow" + icon_state = "plate" }, /area/almayer/squads/delta) "ckS" = ( @@ -27028,6 +22178,10 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/main_office) +"ckW" = ( +/obj/structure/window/framed/almayer/hull, +/turf/open/floor/plating, +/area/almayer/engineering/lower) "ckX" = ( /turf/open/floor/almayer{ dir = 1; @@ -27096,6 +22250,11 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = -29 + }, /turf/open/floor/almayer{ dir = 8; icon_state = "bluecorner" @@ -27128,6 +22287,10 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/machinery/alarm/almayer{ + dir = 1; + pixel_y = -29 + }, /turf/open/floor/almayer{ icon_state = "blue" }, @@ -27174,6 +22337,17 @@ "cls" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/port_point_defense) +"clw" = ( +/obj/structure/machinery/light{ + dir = 8; + invisibility = 101; + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "cly" = ( /obj/structure/disposalpipe/segment, /obj/structure/sign/safety/maint{ @@ -27272,39 +22446,10 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"clO" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) -"clP" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "clR" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "laddersoutheast"; - name = "\improper South East Ladders Shutters" - }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 4; + icon_state = "blue" }, /area/almayer/hallways/port_hallway) "clS" = ( @@ -27328,7 +22473,6 @@ /area/almayer/squads/delta) "clV" = ( /obj/structure/machinery/computer/arcade, -/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ dir = 9; icon_state = "green" @@ -27365,29 +22509,6 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"cmb" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "laddersoutheast"; - name = "\improper South East Ladders Shutters" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/port_hallway) -"cmc" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "green" - }, -/area/almayer/hallways/starboard_hallway) "cmd" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -27398,6 +22519,17 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) +"cme" = ( +/obj/structure/largecrate/random/barrel/red, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "cmg" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -27422,10 +22554,6 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) -"cmk" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "cml" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -27456,13 +22584,32 @@ icon_state = "plating" }, /area/almayer/shipboard/port_point_defense) -"cmp" = ( -/turf/closed/wall/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"cmq" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +"cmo" = ( +/obj/structure/surface/table/almayer, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/tool, +/obj/item/packageWrap, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "green" + }, +/area/almayer/squads/req) +"cmr" = ( +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"cmv" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_x = -30 + }, +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "redcorner" + }, +/area/almayer/shipboard/brig/processing) "cmC" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ dir = 2; @@ -27473,10 +22620,6 @@ icon_state = "test_floor4" }, /area/almayer/powered) -"cmE" = ( -/obj/docking_port/stationary/escape_pod/south, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_m_s) "cmF" = ( /obj/structure/platform, /obj/structure/platform{ @@ -27512,9 +22655,11 @@ }, /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/security/reinforced{ + access_modified = 1; name = "\improper Astronavigational Deck"; req_access = null; - req_one_access_txt = "3;19" + req_one_access_txt = "3;19"; + closeOtherId = "astroladder_n" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -27523,9 +22668,11 @@ "cmJ" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/security/reinforced{ + access_modified = 1; name = "\improper Astronavigational Deck"; req_access = null; - req_one_access_txt = "3;19" + req_one_access_txt = "3;19"; + closeOtherId = "astroladder_s" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -27538,10 +22685,29 @@ icon_state = "silver" }, /area/almayer/command/securestorage) -"cmX" = ( -/obj/docking_port/stationary/escape_pod/west, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_m_p) +"cmN" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"cmV" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"cna" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) "cnd" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ dir = 2; @@ -27552,6 +22718,20 @@ icon_state = "test_floor4" }, /area/almayer/powered) +"cnn" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "cno" = ( /obj/structure/stairs, /obj/effect/projector{ @@ -27565,12 +22745,10 @@ }, /area/almayer/hallways/starboard_hallway) "cnp" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/folder/yellow, /obj/structure/machinery/light{ dir = 4 }, -/turf/open/floor/almayer{ +/turf/open/floor/almayer/no_build{ icon_state = "ai_floors" }, /area/almayer/command/airoom) @@ -27665,6 +22843,14 @@ icon_state = "plate" }, /area/almayer/living/port_emb) +"cnP" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "cnR" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -27707,12 +22893,6 @@ icon_state = "test_floor4" }, /area/almayer/command/computerlab) -"cnU" = ( -/obj/structure/machinery/vending/hydronutrients, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "cnV" = ( /obj/structure/machinery/light{ dir = 8 @@ -27728,18 +22908,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/morgue) -"cnX" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"cnY" = ( -/obj/item/tool/wirecutters/clippers, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "cnZ" = ( /obj/item/tool/surgery/hemostat, /obj/item/tool/surgery/scalpel, @@ -27776,9 +22944,7 @@ }, /area/almayer/squads/charlie) "coj" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 4 - }, +/obj/structure/machinery/power/apc/almayer, /obj/structure/surface/table/almayer, /obj/item/tool/hand_labeler, /turf/open/floor/almayer{ @@ -27787,22 +22953,36 @@ }, /area/almayer/squads/delta) "coo" = ( -/obj/structure/largecrate/random/secure, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; + pixel_y = -32 + }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/living/tankerbunks) +/area/almayer/maint/hull/lower/l_f_s) "cop" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/tankerbunks) -"cos" = ( -/obj/structure/machinery/light/small, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 +"cov" = ( +/obj/structure/machinery/cm_vending/sorted/marine_food, +/obj/structure/sign/safety/security{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/safety/restrictedarea{ + pixel_x = 32; + pixel_y = 7 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/shipboard/brig/general_equipment) "coB" = ( /obj/structure/bed/chair{ dir = 4 @@ -27811,18 +22991,31 @@ icon_state = "plate" }, /area/almayer/squads/alpha_bravo_shared) -"coG" = ( -/obj/effect/decal/cleanable/blood/oil, +"coD" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_18"; + pixel_y = 12 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) +"coH" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 5; + icon_state = "plating" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/engineering/lower/engine_core) "coJ" = ( -/obj/structure/pipes/vents/pump, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 10 + }, /turf/open/floor/almayer{ icon_state = "sterile_green" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) "coT" = ( /obj/structure/machinery/status_display{ pixel_y = 30 @@ -27835,21 +23028,10 @@ }, /area/almayer/shipboard/starboard_point_defense) "coZ" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/medical/hydroponics) -"cpf" = ( -/obj/structure/ladder{ - height = 2; - id = "ForeStarboardMaint" - }, -/obj/structure/sign/safety/ladder{ - pixel_x = -17 +/turf/open/floor/almayer/research/containment/corner{ + dir = 4 }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/medical/containment/cell) "cpj" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/paper, @@ -27883,6 +23065,12 @@ icon_state = "mono" }, /area/almayer/hallways/aft_hallway) +"cpz" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "cpJ" = ( /obj/structure/window/framed/almayer/white, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -27904,29 +23092,49 @@ /obj/structure/window/framed/almayer/hull/hijack_bustable, /turf/open/floor/plating, /area/almayer/squads/req) +"cpQ" = ( +/obj/structure/sign/safety/autoopenclose{ + pixel_x = 7; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "cqa" = ( /turf/open/floor/almayer{ dir = 10; icon_state = "green" }, /area/almayer/hallways/starboard_hallway) -"cqn" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 +"cqm" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/folder/white{ + pixel_y = 6 }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 2; - id = "bot_armory"; - name = "\improper Armory Shutters" +/obj/item/folder/white{ + pixel_x = 5; + pixel_y = 6 }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/armory) +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"cqp" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "cqz" = ( /obj/structure/surface/table/almayer, /obj/item/facepaint/black, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) +"cqH" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/lower/l_m_s) "cqJ" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -27958,12 +23166,6 @@ /obj/item/storage/fancy/cigar/tarbacktube, /turf/open/floor/almayer, /area/almayer/living/bridgebunks) -"crc" = ( -/obj/structure/sign/safety/storage{ - pixel_x = -17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "cre" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 @@ -27982,25 +23184,42 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"crD" = ( +"cri" = ( /obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_s) +"crp" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/secure_data{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/chief_mp_office) +"crD" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "greencorner" }, /area/almayer/squads/req) -"crP" = ( -/obj/item/tool/kitchen/utensil/pfork, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "crW" = ( /obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) +"csd" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "csl" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer{ @@ -28008,24 +23227,6 @@ icon_state = "greencorner" }, /area/almayer/hallways/starboard_hallway) -"csw" = ( -/obj/structure/machinery/door_control{ - id = "laddernortheast"; - name = "North East Ladders Shutters"; - pixel_x = 25; - req_one_access_txt = "2;3;12;19"; - throw_range = 15 - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "green" - }, -/area/almayer/hallways/starboard_hallway) -"csz" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "csI" = ( /turf/open/floor/almayer{ dir = 8; @@ -28057,11 +23258,19 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/bravo) -"ctn" = ( +"cth" = ( +/obj/structure/largecrate/random/barrel/red, /turf/open/floor/almayer{ - icon_state = "redcorner" + icon_state = "plate" }, -/area/almayer/shipboard/brig/lobby) +/area/almayer/maint/hull/upper/s_bow) +"ctp" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_y = 16 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "cts" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -28104,17 +23313,22 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) -"cuk" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ +"ctT" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass{ + dir = 1; name = "\improper Cryogenics Bay" }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/cryo) +"cuq" = ( +/obj/structure/machinery/computer/arcade, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "cus" = ( /obj/docking_port/stationary/lifeboat_dock/starboard, /turf/open/floor/almayer_hull{ @@ -28136,6 +23350,18 @@ "cuC" = ( /turf/closed/wall/almayer/outer, /area/almayer/engineering/upper_engineering/starboard) +"cuN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/escapepod{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "cuY" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28144,24 +23370,45 @@ icon_state = "test_floor4" }, /area/almayer/squads/alpha) +"cva" = ( +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + name = "\improper Armourer's Workshop"; + req_access = null + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_s) "cvb" = ( +/obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 - }, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" + dir = 1 }, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/squads/req) -"cvj" = ( -/obj/structure/machinery/power/apc/almayer/hardened{ +"cvi" = ( +/obj/structure/machinery/vending/hydroseeds, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"cvx" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/lower/cryo_cells) +"cvH" = ( +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/light{ dir = 1 }, /turf/open/floor/almayer, -/area/almayer/command/corporateliason) +/area/almayer/shipboard/brig/cells) "cvZ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -28171,18 +23418,6 @@ icon_state = "silver" }, /area/almayer/command/cic) -"cwd" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/machinery/status_display{ - pixel_x = -32 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "cwo" = ( /obj/structure/largecrate/random/mini/chest{ pixel_x = 4 @@ -28199,6 +23434,26 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) +"cwQ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 8; + id = "laddersoutheast"; + name = "\improper South East Ladders Shutters" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/port_hallway) +"cwS" = ( +/obj/structure/blocker/invisible_wall, +/turf/open/floor/almayer/no_build{ + icon_state = "plating" + }, +/area/almayer/command/airoom) "cwX" = ( /obj/structure/ladder{ height = 1; @@ -28206,22 +23461,22 @@ }, /turf/open/floor/plating/almayer, /area/almayer/living/briefing) -"cxe" = ( -/obj/structure/disposalpipe/segment{ +"cxc" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/obj/structure/machinery/light{ dir = 4 }, -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) +/turf/open/floor/almayer/no_build{ + icon_state = "tcomms" + }, +/area/almayer/command/airoom) "cxk" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"cxo" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "cxA" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -28235,14 +23490,24 @@ icon_state = "green" }, /area/almayer/squads/req) -"cyE" = ( -/obj/structure/platform_decoration{ - dir = 8 +"cyp" = ( +/obj/structure/machinery/conveyor{ + id = "lower_garbage" }, +/obj/structure/plasticflaps, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 4; + icon_state = "plating_striped" + }, +/area/almayer/maint/hull/lower/l_a_p) +"cyv" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/upper/u_f_p) "cyG" = ( /obj/effect/step_trigger/clone_cleaner, /obj/structure/blocker/forcefield/multitile_vehicles, @@ -28250,6 +23515,21 @@ allow_construction = 0 }, /area/almayer/hallways/port_hallway) +"cyL" = ( +/obj/structure/surface/table/almayer, +/obj/effect/spawner/random/toolbox, +/obj/item/storage/firstaid/o2, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/almayer/maint/upper/mess) +"cyR" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "cyU" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -28264,22 +23544,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) -"czu" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/upper_hull/u_m_p) -"czB" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/almayer{ - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/execution) -"czJ" = ( -/obj/structure/sign/safety/restrictedarea{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "czM" = ( /obj/structure/sign/safety/intercom{ pixel_x = 8; @@ -28296,6 +23560,23 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"cAy" = ( +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/armory) +"cAz" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/item/stack/sheet/metal, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "cAF" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -28308,11 +23589,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) -"cAH" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "cBb" = ( /obj/structure/machinery/light{ dir = 1 @@ -28322,20 +23598,13 @@ "cBd" = ( /obj/structure/surface/rack, /obj/item/reagent_container/food/snacks/wrapped/chunk, +/obj/structure/machinery/light/small{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/starboard) -"cBi" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) "cBj" = ( /obj/structure/machinery/cryopod{ layer = 3.1; @@ -28360,6 +23629,24 @@ icon_state = "plate" }, /area/almayer/hallways/vehiclehangar) +"cBm" = ( +/obj/effect/projector{ + name = "Almayer_AresUp"; + vector_x = -97; + vector_y = 65 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/turf/open/floor/almayer/no_build{ + dir = 4; + icon_state = "silver" + }, +/area/almayer/command/airoom) "cBs" = ( /obj/structure/bed/chair, /obj/effect/decal/warning_stripes{ @@ -28370,6 +23657,12 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha) +"cBw" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/general_equipment) "cBA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28382,15 +23675,6 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) -"cBB" = ( -/obj/structure/surface/rack, -/obj/item/tool/wirecutters, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "cBI" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -28410,18 +23694,48 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) +"cBZ" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/door_control{ + id = "courtyard_cells"; + name = "\improper Courtyard Lockdown Shutters"; + pixel_x = 6; + req_access_txt = "3" + }, +/obj/structure/machinery/door_control{ + id = "Brig Lockdown Shutters"; + name = "Brig Lockdown Shutters"; + pixel_x = -6; + req_access_txt = "3" + }, +/obj/structure/machinery/door_control{ + id = "courtyard window"; + name = "Courtyard Window Shutters"; + pixel_x = -6; + pixel_y = 9; + req_access_txt = "3" + }, +/obj/structure/machinery/door_control{ + id = "Cell Privacy Shutters"; + name = "Cell Privacy Shutters"; + pixel_x = 6; + pixel_y = 9; + req_access_txt = "3" + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/chief_mp_office) "cCa" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/living/chapel) -"cCd" = ( -/obj/structure/bookcase{ - icon_state = "book-5" - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "cCD" = ( /obj/structure/platform{ dir = 8; @@ -28439,21 +23753,22 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"cDe" = ( -/obj/structure/largecrate/random/barrel/white, -/obj/structure/sign/safety/storage{ - pixel_x = -17 +"cCL" = ( +/obj/effect/landmark/crap_item, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"cDb" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + req_access = null }, -/area/almayer/hull/lower_hull/l_m_s) -"cDj" = ( -/obj/structure/machinery/portable_atmospherics/canister/air, +/obj/item/clothing/mask/rebreather/scarf/tacticalmask/red, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "plate" }, -/area/almayer/engineering/engine_core) +/area/almayer/maint/hull/lower/p_bow) "cDn" = ( /obj/structure/surface/table/almayer, /obj/item/ashtray/glass{ @@ -28481,6 +23796,15 @@ icon_state = "cargo" }, /area/almayer/squads/charlie) +"cDx" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_m_p) "cDC" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28492,23 +23816,28 @@ icon_state = "test_floor4" }, /area/almayer/living/grunt_rnr) -"cDW" = ( -/obj/structure/largecrate/supply/supplies/flares, +"cDH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/computer/cameras/wooden_tv/prop{ + pixel_y = 29 + }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) -"cEg" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/flashlight/lamp{ - pixel_x = 5; - pixel_y = 10 +/area/almayer/living/briefing) +"cDN" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/lobby) +"cDZ" = ( +/obj/structure/surface/table/almayer, +/obj/item/paper, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/living/tankerbunks) "cEi" = ( /obj/structure/sign/poster, /turf/closed/wall/almayer, @@ -28529,15 +23858,21 @@ icon_state = "plating" }, /area/almayer/command/cic) -"cEx" = ( -/obj/structure/machinery/vending/cola, -/obj/structure/machinery/light{ - dir = 8 +"cEA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/engineering/engineering_workshop) +/area/almayer/maint/hull/lower/l_f_s) "cEC" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28560,25 +23895,12 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie) -"cEO" = ( -/obj/structure/largecrate/supply/floodlights, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "cES" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 }, /turf/open/floor/almayer, /area/almayer/hallways/stern_hallway) -"cEY" = ( -/obj/structure/largecrate/supply/ammo/m41a/half, -/obj/structure/largecrate/supply/ammo/pistol/half{ - pixel_y = 12 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "cFh" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -28590,20 +23912,23 @@ icon_state = "plate" }, /area/almayer/shipboard/weapon_room) -"cFA" = ( -/obj/structure/surface/rack, -/obj/item/tool/weldpack, +"cFn" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "red" + }, +/area/almayer/command/lifeboat) +"cFC" = ( +/obj/structure/machinery/light{ + dir = 1 }, -/area/almayer/hull/upper_hull/u_a_p) -"cFO" = ( -/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" + dir = 9; + icon_state = "red" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/shipboard/brig/processing) "cFP" = ( /obj/structure/sign/safety/outpatient{ pixel_x = -17; @@ -28613,28 +23938,55 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"cFX" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" +"cGd" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/u_m_s) +"cGe" = ( +/obj/structure/surface/table/almayer, +/obj/item/fuelCell, +/obj/item/fuelCell, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) +"cGp" = ( +/obj/structure/machinery/cm_vending/clothing/senior_officer{ + pixel_y = 0 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"cFZ" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "mono" }, -/area/almayer/command/lifeboat) +/area/almayer/medical/upper_medical) "cGr" = ( /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hallways/aft_hallway) +"cGA" = ( +/obj/structure/sign/poster{ + pixel_y = -32 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"cGB" = ( +/obj/structure/machinery/cm_vending/sorted/tech/tool_storage, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/maint/hull/lower/l_m_s) +"cGR" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/u_m_s) "cGV" = ( /turf/open/floor/almayer{ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha_bravo_shared) +"cGY" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "cHc" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/sign/safety/ladder{ @@ -28657,13 +24009,20 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"cHq" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) +"cHn" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_p) "cHu" = ( /turf/closed/wall/almayer/research/containment/wall/south, /area/almayer/medical/containment/cell/cl) +"cHB" = ( +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/living/briefing) "cHE" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -28673,74 +24032,40 @@ icon_state = "blue" }, /area/almayer/command/cichallway) -"cHO" = ( -/obj/structure/sign/safety/nonpress_0g{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"cHG" = ( +/obj/structure/machinery/light{ + dir = 8 }, -/area/almayer/engineering/lower_engineering) +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "cIe" = ( /obj/structure/machinery/light{ dir = 4 }, +/obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"cIi" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/obj/structure/bed/chair{ - dir = 1 - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "cIr" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) -"cII" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/airlock{ - pixel_x = -17; - pixel_y = 7 - }, -/obj/structure/sign/safety/hazard{ - pixel_x = -17; - pixel_y = -8 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_p) -"cIK" = ( -/obj/structure/janitorialcart, -/obj/item/tool/mop, -/obj/structure/machinery/light/small, +"cIx" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/execution) -"cIU" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 + icon_state = "plate" }, +/area/almayer/living/briefing) +"cIG" = ( +/obj/structure/closet/emcloset, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/engineering/upper_engineering/starboard) "cIW" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ name = "\improper Engineering Engine Monitoring" @@ -28749,6 +24074,26 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/starboard) +"cJh" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 8; + id = "Warden Office Shutters"; + name = "\improper Privacy Shutters" + }, +/turf/open/floor/plating, +/area/almayer/shipboard/brig/cells) +"cJm" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/bed/chair{ + dir = 16 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "cJu" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -28756,39 +24101,75 @@ /obj/structure/machinery/light{ dir = 1 }, -/turf/open/floor/almayer, -/area/almayer/living/pilotbunks) -"cJB" = ( -/obj/structure/machinery/vending/coffee, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/living/pilotbunks) "cJE" = ( /obj/structure/sign/prop2, /turf/closed/wall/almayer, /area/almayer/shipboard/sea_office) "cJM" = ( -/turf/closed/wall/almayer/white/outer_tile, -/area/almayer/medical/hydroponics) -"cJP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/machinery/door_display/research_cell{ + dir = 8; + has_wall_divider = 1; + id = "Containment Cell 3"; + layer = 3.2; + name = "Cell 3 Control"; + pixel_x = 16; + pixel_y = -16 }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 +/obj/structure/machinery/door_display/research_cell{ + dir = 8; + has_wall_divider = 1; + id = "Containment Cell 2"; + layer = 3.2; + name = "Cell 2 Control"; + pixel_x = 16; + pixel_y = 16 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/area/almayer/hull/lower_hull/l_a_p) -"cKt" = ( -/obj/structure/bed/sofa/south/grey/left, +/obj/structure/machinery/door_control{ + id = "W_Containment Cell 2"; + name = "Containment Lockdown"; + pixel_x = 13; + pixel_y = 7; + req_one_access_txt = "19;28" + }, +/obj/structure/machinery/door_control{ + id = "W_Containment Cell 3"; + name = "Containment Lockdown"; + pixel_x = 13; + pixel_y = -6; + req_one_access_txt = "19;28" + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "sterile_green" + }, +/area/almayer/medical/containment) +"cKm" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/glass/bucket/mopbucket{ + pixel_x = -8 + }, +/obj/item/reagent_container/glass/bucket/mopbucket{ + pixel_y = 12 + }, +/obj/item/clothing/head/militia/bucket{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/reagent_container/spray/cleaner{ + pixel_x = 8; + pixel_y = -1 }, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "cKL" = ( /turf/open/floor/almayer{ dir = 8; @@ -28810,19 +24191,27 @@ /obj/item/tool/lighter/zippo, /turf/open/floor/wood/ship, /area/almayer/shipboard/sea_office) -"cLp" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, +"cLo" = ( /obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; + icon_state = "N"; pixel_y = 1 }, +/turf/open/floor/almayer/no_build{ + icon_state = "cargo_arrow" + }, +/area/almayer/command/airoom) +"cLq" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 5; + icon_state = "plating" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/shipboard/stern_point_defense) "cLA" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -28838,15 +24227,6 @@ /obj/structure/bed/chair, /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) -"cLI" = ( -/obj/structure/sign/safety/waterhazard{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" - }, -/area/almayer/medical/hydroponics) "cLN" = ( /obj/structure/machinery/cryopod{ layer = 3.1; @@ -28856,6 +24236,17 @@ icon_state = "cargo" }, /area/almayer/living/bridgebunks) +"cMb" = ( +/obj/structure/surface/table/almayer, +/obj/item/paper_bin/uscm{ + pixel_y = 7 + }, +/obj/item/tool/pen, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "cMl" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28865,6 +24256,19 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/processing) +"cMz" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) +"cMN" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "cMV" = ( /obj/structure/sign/prop1{ pixel_x = -32; @@ -28883,21 +24287,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/processing) -"cNc" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"cNe" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "cNf" = ( /turf/open/floor/almayer{ icon_state = "orange" @@ -28918,6 +24307,29 @@ icon_state = "test_floor4" }, /area/almayer/medical/containment/cell/cl) +"cNK" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) +"cNM" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "cNX" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28927,19 +24339,39 @@ }, /turf/open/floor/almayer, /area/almayer/living/grunt_rnr) -"cNY" = ( -/obj/structure/machinery/computer/crew, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" +"cOh" = ( +/obj/item/stool{ + pixel_x = 15; + pixel_y = 6 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"cOo" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/area/almayer/shipboard/brig/main_office) -"cOi" = ( -/obj/effect/landmark/yautja_teleport, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_a_p) +"cOt" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) +"cOK" = ( +/obj/structure/prop/invuln{ + desc = "An inflated membrane. This one is puncture proof. Wow!"; + icon = 'icons/obj/items/inflatable.dmi'; + icon_state = "wall"; + name = "umbilical wall" + }, +/obj/structure/blocker/invisible_wall, +/turf/open/floor/almayer_hull{ + dir = 4; + icon_state = "outerhull_dir" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/engineering/upper_engineering/starboard) "cOM" = ( /obj/structure/sign/safety/medical{ pixel_x = 8; @@ -28947,6 +24379,57 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) +"cOY" = ( +/obj/item/clothing/under/blackskirt{ + desc = "A stylish skirt, in a business-black and red colour scheme."; + name = "liaison's skirt" + }, +/obj/item/clothing/under/suit_jacket/charcoal{ + desc = "A professional black suit and blue tie. A combination popular among government agents and corporate Yes-Men alike."; + name = "liaison's black suit" + }, +/obj/item/clothing/under/suit_jacket/navy{ + desc = "A navy suit and red tie, intended for the Almayer's finest. And accountants."; + name = "liaison's navy suit" + }, +/obj/item/clothing/under/suit_jacket/trainee, +/obj/item/clothing/under/liaison_suit/charcoal, +/obj/item/clothing/under/liaison_suit/blazer, +/obj/item/clothing/suit/storage/snow_suit/liaison, +/obj/item/clothing/gloves/black, +/obj/item/clothing/gloves/marine/dress, +/obj/item/clothing/glasses/sunglasses/big, +/obj/item/clothing/accessory/blue, +/obj/item/clothing/accessory/red, +/obj/structure/machinery/status_display{ + pixel_x = -32 + }, +/obj/item/clothing/accessory/black, +/obj/item/clothing/accessory/green, +/obj/item/clothing/accessory/gold, +/obj/item/clothing/accessory/purple, +/obj/item/clothing/under/liaison_suit/corporate_formal, +/obj/item/clothing/under/liaison_suit/field, +/obj/item/clothing/under/liaison_suit/ivy, +/obj/item/clothing/under/liaison_suit/blue, +/obj/item/clothing/under/liaison_suit/brown, +/obj/item/clothing/under/liaison_suit/black, +/obj/item/clothing/suit/storage/jacket/marine/vest, +/obj/item/clothing/suit/storage/jacket/marine/vest/grey, +/obj/item/clothing/suit/storage/jacket/marine/vest/tan, +/obj/item/clothing/suit/storage/jacket/marine/bomber, +/obj/item/clothing/suit/storage/jacket/marine/bomber/red, +/obj/item/clothing/suit/storage/jacket/marine/bomber/grey, +/obj/item/clothing/suit/storage/jacket/marine/corporate, +/obj/item/clothing/suit/storage/jacket/marine/corporate/black, +/obj/item/clothing/suit/storage/jacket/marine/corporate/blue, +/obj/item/clothing/suit/storage/jacket/marine/corporate/brown, +/obj/item/clothing/suit/storage/jacket/marine/corporate/formal, +/obj/structure/closet/cabinet{ + storage_capacity = 35 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "cPg" = ( /obj/structure/sign/safety/north{ pixel_x = 32; @@ -28961,6 +24444,39 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"cPj" = ( +/obj/structure/window/framed/almayer/hull, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/p_bow) +"cPK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/stairs{ + pixel_x = -15 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) +"cPP" = ( +/obj/structure/sign/poster/pinup{ + pixel_x = -30 + }, +/obj/structure/sign/poster/hunk{ + pixel_x = -25; + pixel_y = 10 + }, +/obj/item/trash/buritto, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_y = 16 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "cQc" = ( /turf/open/floor/almayer{ dir = 1; @@ -28978,38 +24494,37 @@ }, /area/almayer/engineering/upper_engineering/starboard) "cQo" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/light, -/obj/structure/machinery/reagentgrinder{ - pixel_y = 8 +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/obj/item/stack/sheet/mineral/phoron{ - amount = 25; - pixel_x = 3; - pixel_y = 3 +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 5 }, /turf/open/floor/almayer{ + dir = 8; icon_state = "sterile_green_side" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) "cQv" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/general_equipment) -"cQF" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "cargo" +"cQL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" }, -/area/almayer/hull/lower_hull/l_f_s) -"cQN" = ( +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/lobby) +"cQW" = ( /obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 + icon_state = "SW-out"; + pixel_x = -1 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" }, -/area/almayer/hull/lower_hull/l_f_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) "cRb" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -29024,16 +24539,7 @@ icon_state = "test_floor4" }, /area/almayer/command/cichallway) -"cRc" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) -"cRi" = ( +"cRi" = ( /turf/open/floor/almayer{ icon_state = "mono" }, @@ -29052,6 +24558,19 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"cRL" = ( +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer, +/area/almayer/hallways/upper/starboard) +"cSa" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) "cSk" = ( /obj/structure/machinery/door/window/southleft, /turf/open/floor/almayer{ @@ -29080,30 +24599,6 @@ icon_state = "red" }, /area/almayer/shipboard/starboard_missiles) -"cSK" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/centrifuge{ - pixel_y = 7 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/medical_science) -"cSN" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "cSQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -29137,37 +24632,41 @@ icon_state = "green" }, /area/almayer/living/offices) -"cUb" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" +"cTM" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/light/small{ + dir = 8 }, -/obj/structure/closet/firecloset, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/engineering/engineering_workshop/hangar) -"cUv" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/obj/structure/machinery/door/airlock/almayer/medical/glass{ - dir = 2; - name = "\improper Port Viewing Room"; - req_one_access = null +/area/almayer/maint/upper/mess) +"cTX" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) -"cVs" = ( -/obj/structure/platform_decoration{ - dir = 8 + icon_state = "plate" }, +/area/almayer/maint/lower/cryo_cells) +"cUl" = ( +/obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/upper/s_bow) +"cVb" = ( +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) +"cVq" = ( +/obj/structure/machinery/power/apc/almayer/hardened{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) "cVw" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -29177,12 +24676,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"cVJ" = ( -/obj/structure/largecrate/supply, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "cVK" = ( /obj/structure/surface/rack, /obj/structure/sign/safety/rewire{ @@ -29194,6 +24687,37 @@ icon_state = "plate" }, /area/almayer/living/gym) +"cWb" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) +"cWm" = ( +/obj/structure/surface/rack, +/obj/item/storage/firstaid/adv/empty, +/obj/item/storage/firstaid/adv/empty, +/obj/item/storage/firstaid/adv/empty, +/obj/structure/sign/safety/med_life_support{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/hazard{ + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/lower_medical_medbay) +"cWo" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_a_p) "cWr" = ( /obj/structure/machinery/photocopier{ density = 0; @@ -29239,17 +24763,19 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "redcorner" + icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"cWt" = ( +"cWv" = ( /turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" + dir = 8; + icon_state = "green" }, -/area/almayer/engineering/lower_engineering) +/area/almayer/living/starboard_garden) "cWy" = ( /obj/structure/closet/secure_closet/freezer/fridge, /obj/item/reagent_container/food/snacks/packaged_burger, @@ -29259,39 +24785,27 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"cWA" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) -"cWI" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) -"cWN" = ( -/obj/structure/filingcabinet{ - density = 0; - pixel_x = -8; - pixel_y = 18 +"cWE" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 }, -/obj/structure/machinery/light{ - dir = 8 +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" }, -/obj/structure/filingcabinet/security{ - density = 0; - pixel_x = 8; - pixel_y = 18 +/area/almayer/engineering/upper_engineering/port) +"cXd" = ( +/obj/structure/surface/rack, +/obj/item/stack/cable_coil, +/obj/item/attachable/flashlight/grip, +/obj/item/ammo_box/magazine/l42a{ + pixel_y = 14 }, /turf/open/floor/almayer{ - dir = 9; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/chief_mp_office) +/area/almayer/maint/hull/upper/u_m_s) "cXi" = ( /obj/structure/machinery/light{ unacidable = 1; @@ -29307,12 +24821,21 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) -"cXq" = ( -/obj/structure/largecrate/supply/supplies/water, +"cXm" = ( +/obj/structure/largecrate/supply/supplies/mre, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/l_m_s) +"cXC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "sterile_green_side" + }, +/area/almayer/medical/containment) "cXF" = ( /obj/structure/machinery/flasher{ alpha = 1; @@ -29342,12 +24865,43 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"cXZ" = ( -/obj/structure/sign/safety/maint{ - pixel_x = -17 +"cXX" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 32 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/lower/l_m_p) +"cXY" = ( +/obj/item/stack/catwalk, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) +"cYo" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) +"cYu" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) +"cYN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "cYT" = ( /obj/structure/machinery/light{ dir = 8 @@ -29364,6 +24918,9 @@ icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/south1) +"cZe" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/u_f_s) "cZh" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -29373,23 +24930,50 @@ }, /turf/open/floor/plating, /area/almayer/command/cichallway) +"cZj" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "cZm" = ( /obj/structure/machinery/light{ dir = 1 }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"cZs" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/shipboard/brig/chief_mp_office) -"cZJ" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - name = "\improper Core Hatch" +"cZp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"cZI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"cZO" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/area/almayer/engineering/engine_core) +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "cZV" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/storage/fancy/cigarettes/wypacket, @@ -29425,27 +25009,42 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"cZZ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" +"dac" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) -"daj" = ( -/obj/structure/machinery/iv_drip, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 8; + id = "laddernortheast"; + name = "\improper North East Ladders Shutters" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ - icon_state = "sterile_green_side" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/surgery) -"dav" = ( -/obj/structure/machinery/constructable_frame{ - icon_state = "box_2" +/area/almayer/hallways/starboard_hallway) +"daz" = ( +/turf/closed/wall/almayer/white/hull, +/area/almayer/command/airoom) +"daF" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) +"dbc" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 32 }, -/obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 10; + icon_state = "red" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/hallways/upper/port) "dbe" = ( /obj/structure/largecrate/random/case/double, /obj/structure/machinery/camera/autoname/almayer{ @@ -29466,17 +25065,18 @@ pixel_x = 9 }, /obj/item/reagent_container/pill/happy, -/obj/item/stack/tile/plasteel{ - layer = 2.5; - pixel_x = -8; - pixel_y = 4 - }, /obj/item/clothing/glasses/disco_fever{ pixel_x = -3; pixel_y = -2 }, /turf/open/floor/plating, /area/almayer/living/port_emb) +"dbq" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "plating_striped" + }, +/area/almayer/engineering/upper_engineering/port) "dbv" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/prop/almayer/computer{ @@ -29514,19 +25114,18 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) +"dbX" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/maint/upper/mess) "dcd" = ( /obj/structure/bed/chair/comfy{ dir = 8 }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"dci" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/main_office) "dck" = ( /obj/structure/bed/stool, /turf/open/floor/almayer{ @@ -29534,88 +25133,102 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"dco" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/cameras/almayer_network{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/chief_mp_office) "dcp" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) -"dcP" = ( -/obj/structure/machinery/body_scanconsole{ - dir = 8 - }, +"dcy" = ( /turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/surgery) -"dcS" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = 12; - pixel_y = 13 + dir = 1; + icon_state = "red" }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 +/area/almayer/shipboard/brig/perma) +"dcT" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 1 }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"dcZ" = ( +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/u_m_p) +"ddf" = ( +/obj/structure/machinery/portable_atmospherics/canister/air, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, -/area/almayer/hull/lower_hull/l_a_p) -"ddj" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) +/area/almayer/engineering/lower/engine_core) "ddk" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer{ icon_state = "redfull" }, /area/almayer/living/briefing) +"ddw" = ( +/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, +/obj/structure/sign/safety/terminal{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop/hangar) "ddz" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/weapon_room) -"ddG" = ( -/obj/structure/sign/safety/water{ +"ddF" = ( +/obj/structure/sign/safety/hvac_old{ pixel_x = 8; pixel_y = 32 }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) -"ddK" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 +/area/almayer/maint/hull/upper/u_a_p) +"ddM" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"deg" = ( +/obj/structure/platform_decoration{ + dir = 1 }, -/obj/effect/decal/cleanable/blood/oil, -/obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"deb" = ( -/obj/structure/bed, -/obj/structure/machinery/flasher{ - id = "Perma 2"; - pixel_y = -24 + icon_state = "red" }, +/area/almayer/lifeboat_pumps/south2) +"deq" = ( /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/shipboard/brig/perma) -"deg" = ( -/obj/structure/platform_decoration{ - dir = 1 +/area/almayer/maint/hull/lower/l_m_s) +"deA" = ( +/obj/item/reagent_container/glass/bucket/janibucket{ + pixel_x = -1; + pixel_y = 13 + }, +/obj/structure/sign/safety/water{ + pixel_x = -17 }, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/south2) +/area/almayer/maint/upper/u_m_s) "deD" = ( /obj/structure/machinery/prop/almayer/CICmap{ pixel_x = -5 @@ -29623,6 +25236,10 @@ /obj/structure/surface/table/reinforced/black, /turf/open/floor/almayer, /area/almayer/command/cic) +"deF" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "deH" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -29631,6 +25248,18 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) +"deT" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "emerald" + }, +/area/almayer/living/port_emb) "dfa" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, @@ -29648,20 +25277,29 @@ icon_state = "plate" }, /area/almayer/hallways/port_umbilical) +"dfg" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/obj/item/tool/mop{ + pixel_x = -6; + pixel_y = 24 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "dfk" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/almayer{ - icon_state = "greenfull" + icon_state = "test_floor4" }, /area/almayer/shipboard/brig/cells) -"dfp" = ( -/obj/structure/machinery/keycard_auth{ - pixel_y = 25 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/chief_mp_office) "dfC" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -29700,41 +25338,55 @@ }, /area/almayer/living/gym) "dgx" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_18"; + pixel_y = 13 + }, +/obj/structure/surface/table/almayer, /turf/open/floor/almayer{ dir = 8; icon_state = "red" }, /area/almayer/shipboard/brig/chief_mp_office) -"dgN" = ( -/obj/structure/surface/rack, -/obj/item/tool/shovel/etool{ - pixel_x = 6 - }, -/obj/item/tool/shovel/etool, -/obj/item/tool/wirecutters, +"dha" = ( /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) -"dhQ" = ( -/obj/structure/sign/safety/terminal{ - pixel_x = -17 +/area/almayer/command/combat_correspondent) +"dhd" = ( +/obj/structure/window/reinforced/ultra{ + pixel_y = -12 }, -/obj/structure/surface/table/almayer, -/obj/item/clipboard{ - pixel_x = -4 +/obj/structure/machinery/light{ + dir = 1 }, -/obj/item/device/taperecorder{ - pixel_x = 3; - pixel_y = 3 +/obj/structure/bed/chair/bolted, +/turf/open/floor/almayer{ + icon_state = "plating_striped" }, -/obj/item/device/camera, +/area/almayer/shipboard/brig/execution) +"dho" = ( +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, +/obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 + icon_state = "NW-out"; + pixel_y = 1 }, -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) +"dhp" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "dhR" = ( /obj/structure/machinery/door/poddoor/shutters/almayer/open{ dir = 4; @@ -29748,8 +25400,7 @@ "dhU" = ( /obj/structure/closet/emcloset, /turf/open/floor/almayer{ - dir = 5; - icon_state = "green" + icon_state = "cargo" }, /area/almayer/hallways/port_hallway) "dhZ" = ( @@ -29767,21 +25418,16 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_umbilical) -"diF" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 4 - }, -/obj/structure/sign/safety/fire_haz{ - pixel_y = -32 - }, -/obj/structure/sign/safety/hazard{ - pixel_x = 14; - pixel_y = -32 +"diz" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ + id_tag = "Boat1-D4"; + linked_dock = "almayer-lifeboat1"; + throw_dir = 1 }, /turf/open/floor/almayer{ - icon_state = "orange" + icon_state = "test_floor4" }, -/area/almayer/engineering/lower_engineering) +/area/almayer/engineering/upper_engineering/port) "diJ" = ( /obj/structure/window/reinforced{ dir = 8; @@ -29795,66 +25441,18 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha_bravo_shared) -"djc" = ( -/obj/structure/machinery/constructable_frame, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"djm" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/execution) -"djp" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/plastic{ - amount = 5 - }, -/obj/item/stack/sheet/glass{ - amount = 50; - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/plasteel{ - amount = 30; - pixel_x = 4; - pixel_y = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"djL" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_10" +"diP" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"djM" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/reagentgrinder/industrial{ - pixel_y = 8 +/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ + name = "\improper Brig Lobby"; + closeOtherId = "brignorth" }, /turf/open/floor/almayer{ - icon_state = "orange" + icon_state = "test_floor4" }, -/area/almayer/engineering/engineering_workshop/hangar) +/area/almayer/shipboard/brig/lobby) "djQ" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -29881,9 +25479,6 @@ }, /area/almayer/medical/operating_room_four) "dkj" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /obj/structure/surface/table/almayer, /obj/item/device/radio/intercom/alamo{ layer = 2.9 @@ -29909,11 +25504,41 @@ icon_state = "red" }, /area/almayer/living/briefing) -"dkO" = ( -/obj/effect/step_trigger/teleporter_vector{ - name = "Almayer_Down2"; - vector_x = 1; - vector_y = -100 +"dkt" = ( +/obj/structure/surface/rack, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = -6; + pixel_y = 7 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = -6; + pixel_y = -3 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = 5; + pixel_y = 9 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = 5; + pixel_y = -3 + }, +/obj/structure/noticeboard{ + desc = "The note is haphazardly attached to the cork board by what looks like a bent firing pin. 'The order has come in to perform end of life service checks on all L42A service rifles, any that are defective are to be dis-assembled and packed into a crate and sent to to the cargo hold. L42A service rifles that are in working order after servicing, are to be locked in secure cabinets ready to be off-loaded at Chinook. Scheduled end of life service for the L42A - Complete'"; + pixel_y = 29 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) +"dkO" = ( +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_Down2"; + vector_x = 1; + vector_y = -100 }, /obj/structure/catwalk{ health = null @@ -29925,40 +25550,19 @@ allow_construction = 0 }, /area/almayer/stair_clone/upper) -"dkS" = ( -/obj/structure/machinery/shower, -/obj/structure/window/reinforced/tinted{ - dir = 8 - }, -/obj/structure/machinery/door/window/tinted{ - dir = 2 - }, -/obj/item/clothing/mask/cigarette/weed, -/turf/open/floor/prison{ - icon_state = "kitchen" +"dkX" = ( +/obj/structure/bed/chair/comfy/delta, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "bluefull" }, -/area/almayer/engineering/upper_engineering/port) +/area/almayer/living/briefing) "dll" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer{ icon_state = "orangefull" }, /area/almayer/living/briefing) -"dlp" = ( -/obj/structure/largecrate/supply/supplies/water, -/obj/item/toy/deck{ - pixel_y = 12 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"dls" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_x = -30 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/surgery) "dmg" = ( /obj/structure/machinery/vending/coffee, /obj/structure/sign/safety/coffee{ @@ -29987,11 +25591,17 @@ icon_state = "cargo" }, /area/almayer/squads/req) -"dmQ" = ( +"dmF" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "green" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/squads/req) "dmR" = ( /obj/effect/glowshroom, /obj/effect/glowshroom{ @@ -30010,17 +25620,25 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/port_emb) -"dnk" = ( -/obj/structure/largecrate/supply/generator, -/obj/item/reagent_container/food/drinks/bottle/whiskey{ - layer = 2.9; - pixel_x = -10; - pixel_y = 3 +"dmZ" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "courtyard_cells"; + name = "\improper Courtyard Lockdown Shutter" + }, +/obj/structure/machinery/door/poddoor/almayer/locked{ + id = "Cell 1"; + name = "\improper Courtyard Divider" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/shipboard/brig/cells) "dnm" = ( /obj/structure/machinery/cm_vending/sorted/cargo_guns/intelligence_officer, /obj/structure/machinery/light{ @@ -30030,18 +25648,18 @@ icon_state = "silverfull" }, /area/almayer/command/computerlab) -"dnx" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/obj/structure/machinery/light, +"dnC" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor/almayer{ - icon_state = "sterile_green_side" + icon_state = "sterile_green_corner" }, /area/almayer/medical/hydroponics) -"dnC" = ( -/turf/closed/wall/almayer/research/containment/wall/purple{ - dir = 1 - }, -/area/almayer/medical/containment/cell) "dnE" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -30054,18 +25672,6 @@ icon_state = "mono" }, /area/almayer/engineering/upper_engineering/starboard) -"dnJ" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "dnS" = ( /obj/structure/safe, /turf/open/floor/almayer{ @@ -30073,12 +25679,19 @@ icon_state = "silver" }, /area/almayer/command/securestorage) -"dnX" = ( -/obj/structure/disposalpipe/segment{ +"dnZ" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/disposaloutlet, +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) +/turf/open/floor/almayer{ + dir = 4; + icon_state = "plating_striped" + }, +/area/almayer/maint/hull/lower/l_a_p) "dod" = ( /obj/structure/closet/crate/trashcart, /turf/open/floor/almayer, @@ -30129,61 +25742,48 @@ icon_state = "cargo" }, /area/almayer/squads/req) -"dpn" = ( -/obj/structure/closet/secure_closet/freezer/fridge/full, +"doU" = ( +/obj/structure/surface/rack, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/port) +"dpo" = ( /obj/structure/machinery/light{ dir = 1 }, -/obj/item/reagent_container/food/condiment/enzyme, -/obj/item/reagent_container/food/condiment/enzyme, -/obj/structure/transmitter{ - name = "Kitchen Telephone"; - phone_category = "Almayer"; - phone_id = "Kitchen"; - pixel_x = -8; - pixel_y = 29 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/grunt_rnr) -"dpy" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/sign/safety/waterhazard{ + pixel_y = 32 }, -/obj/structure/bed/chair{ - dir = 4 +/obj/structure/sign/safety/rewire{ + pixel_x = 14; + pixel_y = 32 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "mono" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/lifeboat_pumps/north1) "dpO" = ( -/obj/structure/machinery/cm_vending/clothing/marine/delta, -/obj/structure/sign/banners/maximumeffort{ - pixel_y = 30 +/obj/structure/machinery/cm_vending/clothing/marine/delta{ + density = 0; + pixel_y = 16 }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "cargo_arrow" }, /area/almayer/squads/delta) -"dpV" = ( -/obj/structure/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "dqb" = ( /obj/structure/sign/safety/security{ pixel_x = -16 }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"dqd" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) +"dqg" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "dqj" = ( /turf/open/floor/almayer{ dir = 4; @@ -30215,48 +25815,16 @@ icon_state = "test_floor4" }, /area/almayer/living/offices) -"dqH" = ( -/obj/structure/surface/table/almayer, -/obj/item/stack/sheet/glass{ - amount = 20; - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/weapon/dart, -/obj/item/weapon/dart, -/obj/item/weapon/dart, -/obj/item/weapon/dart/green, -/obj/item/weapon/dart/green, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "dqN" = ( /obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"dqV" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/machinery/vending/coffee, -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/machinery/door_control{ - id = "perma_lockdown"; - name = "\improper Perma Cells Lockdown"; - pixel_y = 24; - req_access_txt = "3" - }, -/obj/structure/sign/safety/coffee{ - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/perma) +"dqZ" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/chief_mp_office) "drj" = ( /obj/structure/window/reinforced{ dir = 4; @@ -30277,27 +25845,36 @@ icon_state = "silver" }, /area/almayer/engineering/port_atmos) -"drt" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, +"dro" = ( +/obj/structure/surface/table/almayer, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/bomb_supply, +/obj/effect/spawner/random/bomb_supply, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hallways/port_hallway) +/area/almayer/maint/hull/lower/l_m_s) "drT" = ( -/obj/structure/machinery/light{ - dir = 4 +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" }, -/obj/structure/machinery/medical_pod/sleeper{ - dir = 8 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, +/obj/structure/surface/rack, +/obj/item/storage/fancy/vials, +/obj/item/storage/fancy/vials, +/obj/item/storage/fancy/vials, +/obj/item/storage/fancy/vials, +/obj/item/storage/fancy/vials, +/obj/item/storage/fancy/vials, /turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_side" + icon_state = "sterile_green" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/hydroponics) "dsk" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -30310,22 +25887,13 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) -"dsu" = ( -/obj/structure/largecrate/supply/supplies/tables_racks, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/hull/upper_hull/u_a_p) -"dsw" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 2 - }, +"dsA" = ( +/obj/effect/decal/cleanable/blood, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "redcorner" }, -/area/almayer/shipboard/brig/cryo) +/area/almayer/shipboard/brig/execution) "dtH" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -30338,12 +25906,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"dtN" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "dtZ" = ( /obj/structure/platform_decoration{ dir = 4 @@ -30357,7 +25919,8 @@ }, /obj/structure/machinery/door/airlock/almayer/command/reinforced{ id_tag = "cic_exterior"; - name = "\improper Combat Information Center" + name = "\improper Combat Information Center"; + closeOtherId = "ciclobby_s" }, /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -30405,14 +25968,19 @@ }, /area/almayer/living/briefing) "dux" = ( -/obj/structure/surface/table/almayer, -/obj/item/pizzabox{ - pixel_y = 10 - }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "mono" + }, +/area/almayer/living/starboard_garden) +"duz" = ( +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + pixel_y = 24 }, -/area/almayer/hull/upper_hull/u_m_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/port) "duF" = ( /obj/structure/closet/secure_closet/personal, /turf/open/floor/almayer{ @@ -30469,26 +26037,32 @@ icon_state = "cargo" }, /area/almayer/living/cryo_cells) -"dvF" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/cameras/wooden_tv/ot{ - pixel_y = 4 +"dvD" = ( +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"dvT" = ( -/turf/closed/wall/almayer, -/area/almayer/shipboard/brig/general_equipment) +/area/almayer/maint/hull/lower/l_f_s) +"dvZ" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/mess) "dwl" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/living/briefing) "dwr" = ( -/turf/open/floor/almayer{ - dir = 10; - icon_state = "sterile_green_side" +/obj/structure/surface/table/almayer, +/obj/structure/machinery/centrifuge{ + layer = 3.1; + pixel_y = 4 }, -/area/almayer/medical/containment) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/medical/medical_science) "dwA" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/sign/safety/bathunisex{ @@ -30508,13 +26082,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/starboard) -"dxm" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/general_equipment) "dxu" = ( /obj/structure/sink{ dir = 1; @@ -30530,15 +26097,6 @@ icon_state = "silvercorner" }, /area/almayer/command/computerlab) -"dxC" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "dxF" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Down1"; @@ -30549,31 +26107,48 @@ allow_construction = 0 }, /area/almayer/stair_clone/upper) -"dxL" = ( -/obj/structure/sign/safety/fire_haz{ - pixel_x = 8; - pixel_y = -32 - }, -/obj/structure/reagent_dispensers/ethanoltank{ - anchored = 1 +"dxK" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 }, /turf/open/floor/almayer{ - icon_state = "cargo" + dir = 1; + icon_state = "red" }, -/area/almayer/engineering/engineering_workshop/hangar) +/area/almayer/command/lifeboat) "dxT" = ( -/obj/structure/machinery/light{ - dir = 4 +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/structure/sign/safety/rewire{ + pixel_x = 32 }, -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"dya" = ( +/obj/structure/machinery/door/poddoor/almayer/locked{ + dir = 2; + id = "Perma 2"; + name = "\improper cell shutter" + }, +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + dir = 2; + name = "\improper Isolation Cell" }, /turf/open/floor/almayer{ - dir = 4; - icon_state = "red" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/lobby) +/area/almayer/shipboard/brig/perma) +"dyb" = ( +/obj/structure/machinery/smartfridge/chemistry, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/medical_science) "dyd" = ( /obj/structure/bed/chair/office/dark{ dir = 1 @@ -30585,6 +26160,21 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"dyj" = ( +/obj/structure/closet/secure_closet/commander, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/device/whistle, +/obj/item/device/megaphone, +/obj/item/device/radio, +/obj/item/clothing/shoes/laceup, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"dyp" = ( +/obj/structure/machinery/ares/cpu, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "dyx" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 2; @@ -30602,22 +26192,6 @@ icon_state = "plating" }, /area/almayer/squads/req) -"dyF" = ( -/obj/structure/pipes/vents/pump{ - dir = 8 - }, -/obj/structure/machinery/door_control{ - id = "cl_shutters 2"; - name = "Quarters Shutters"; - pixel_x = 25; - req_access_txt = "200" - }, -/obj/structure/sign/safety/bathunisex{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "dyK" = ( /obj/structure/machinery/light{ dir = 8 @@ -30627,12 +26201,32 @@ icon_state = "orange" }, /area/almayer/engineering/ce_room) -"dAb" = ( -/obj/structure/largecrate/random/barrel/blue, +"dzp" = ( +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) +"dzF" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 8; + id = "laddernortheast"; + name = "\improper North East Ladders Shutters" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" + }, +/area/almayer/hallways/starboard_hallway) +"dzG" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = 26 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/general_equipment) +"dzX" = ( +/obj/structure/sign/safety/water{ + pixel_x = -17 }, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "dAq" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ @@ -30645,6 +26239,22 @@ icon_state = "test_floor4" }, /area/almayer/squads/bravo) +"dAA" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"dAQ" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/living/briefing) "dAX" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -30658,18 +26268,15 @@ }, /area/almayer/command/cic) "dBj" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 8; - name = "ship-grade camera" - }, -/obj/structure/machinery/medical_pod/bodyscanner{ - dir = 8 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, /turf/open/floor/almayer{ dir = 4; icon_state = "sterile_green_side" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/hydroponics) "dBp" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -30693,6 +26300,28 @@ /obj/structure/window/framed/almayer/white, /turf/open/floor/plating, /area/almayer/medical/lower_medical_medbay) +"dBI" = ( +/obj/structure/surface/table/almayer, +/obj/item/trash/USCMtray{ + pixel_y = 4 + }, +/obj/item/trash/USCMtray{ + pixel_y = 6 + }, +/obj/item/trash/USCMtray{ + pixel_y = 8 + }, +/obj/item/trash/USCMtray{ + pixel_y = 10 + }, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 + }, +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, +/area/almayer/living/briefing) "dBO" = ( /obj/structure/pipes/vents/pump{ dir = 8; @@ -30702,6 +26331,23 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_one) +"dBQ" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/brig/chief_mp_office) +"dBS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/execution) "dCe" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -30718,22 +26364,6 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/cells) -"dCh" = ( -/obj/structure/prop/invuln/pipe_water, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -12; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -12; - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "dCr" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -30741,14 +26371,6 @@ /obj/structure/surface/table/reinforced/black, /turf/open/floor/carpet, /area/almayer/command/cichallway) -"dCt" = ( -/obj/structure/surface/rack, -/obj/item/book/manual/orbital_cannon_manual, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/hull/upper_hull/u_a_p) "dCx" = ( /obj/structure/disposalpipe/segment, /obj/structure/flora/pottedplant{ @@ -30763,13 +26385,22 @@ icon_state = "plate" }, /area/almayer/command/cichallway) +"dCz" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/wrench{ + pixel_y = 2 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "dCD" = ( /obj/structure/sign/nosmoking_2{ pixel_x = 32 }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/south1) "dCK" = ( @@ -30778,28 +26409,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cichallway) -"dCP" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/storage/box/lights/tubes{ - pixel_x = -4; - pixel_y = 3 - }, -/obj/effect/decal/cleanable/ash{ - pixel_y = 19 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"dCS" = ( -/obj/structure/sign/safety/rad_shield{ - pixel_x = 32 +"dDp" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 3.3 }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" +/turf/open/floor/almayer/no_build{ + icon_state = "tcomms" }, -/area/almayer/engineering/engine_core) +/area/almayer/command/airoom) "dDt" = ( /obj/structure/toilet{ dir = 1 @@ -30814,14 +26432,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/port_emb) -"dDC" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, +"dDJ" = ( +/obj/structure/closet/emcloset, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/lower/stern) "dDL" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/research/main_terminal{ @@ -30835,43 +26451,49 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"dDQ" = ( -/obj/effect/decal/warning_stripes{ +"dDM" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ icon_state = "S" }, /turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) -"dEl" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/glass/beaker/large, -/obj/item/reagent_container/glass/beaker/large, -/obj/item/reagent_container/glass/beaker{ - pixel_x = 5 + dir = 8; + icon_state = "orange" }, -/obj/item/reagent_container/glass/beaker{ - pixel_x = 5 +/area/almayer/engineering/lower/workshop/hangar) +"dDT" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/item/reagent_container/dropper, -/obj/structure/machinery/firealarm{ - dir = 8; - pixel_x = -24 +/area/almayer/maint/hull/lower/stern) +"dEm" = ( +/obj/structure/machinery/power/apc/almayer, +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/obj/item/reagent_container/glass/beaker/bluespace{ - pixel_y = 12 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, +/obj/structure/reagent_dispensers/fueltank/custom, /turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_side" + dir = 4; + icon_state = "sterile_green_corner" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment/cell) "dEn" = ( /obj/structure/machinery/firealarm{ pixel_y = -28 }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) +"dEp" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/cryo_cells) "dEt" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ dir = 2; @@ -30892,6 +26514,22 @@ icon_state = "greencorner" }, /area/almayer/hallways/starboard_hallway) +"dEG" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/structure/closet/secure_closet/brig, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) +"dEJ" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/lifeboat_pumps/north2) "dEQ" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/tabasco, @@ -30899,111 +26537,125 @@ icon_state = "redfull" }, /area/almayer/living/briefing) -"dEV" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"dEX" = ( +/obj/structure/closet/secure_closet/guncabinet/riot_control, +/obj/item/weapon/shield/riot, +/obj/item/weapon/shield/riot, +/obj/item/weapon/shield/riot, +/obj/structure/machinery/light{ + dir = 1 }, -/obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/shipboard/brig/armory) "dFk" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "redcorner" }, /area/almayer/command/lifeboat) -"dFC" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cryo) "dFF" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_21" }, /turf/open/floor/wood/ship, /area/almayer/shipboard/sea_office) +"dFL" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "dFR" = ( /turf/open/floor/almayer{ dir = 9; icon_state = "silver" }, /area/almayer/command/cichallway) -"dFV" = ( +"dFU" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/main_office) +"dFW" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/cell_charger, /obj/item/cell/apc, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) -"dGr" = ( -/obj/structure/pipes/vents/scrubber{ +/area/almayer/maint/hull/lower/l_f_p) +"dGg" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) +"dGl" = ( +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresUp"; + vector_x = -97; + vector_y = 65 + }, +/obj/structure/platform{ dir = 8 }, -/turf/open/floor/almayer, -/area/almayer/living/pilotbunks) -"dGw" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "S" +/obj/structure/stairs{ + dir = 1 }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" +/turf/open/floor/almayer/no_build{ + dir = 8; + icon_state = "silver" }, -/area/almayer/hallways/aft_hallway) -"dGz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/almayer/command/airoom) +"dGr" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 8 }, -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) -"dGB" = ( /turf/open/floor/almayer{ - icon_state = "dark_sterile" + dir = 1; + icon_state = "blue" }, -/area/almayer/medical/containment) +/area/almayer/living/pilotbunks) "dGC" = ( /obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/lifeboat_pumps/south1) -"dGD" = ( -/obj/structure/closet/secure_closet{ - name = "\improper Spare Restraints"; - req_one_access_txt = "3" +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" }, -/obj/item/clothing/suit/straight_jacket, -/obj/item/clothing/suit/straight_jacket, -/obj/item/clothing/suit/straight_jacket, -/obj/item/clothing/suit/straight_jacket, -/obj/item/clothing/suit/straight_jacket, -/obj/item/clothing/glasses/sunglasses/blindfold, -/obj/item/clothing/glasses/sunglasses/blindfold, -/obj/item/clothing/glasses/sunglasses/blindfold, -/obj/item/clothing/glasses/sunglasses/blindfold, -/obj/item/clothing/glasses/sunglasses/blindfold, /turf/open/floor/almayer{ dir = 1; icon_state = "red" }, -/area/almayer/shipboard/brig/processing) -"dGW" = ( -/obj/structure/machinery/door/airlock/almayer/security{ - dir = 2; - name = "\improper Security Checkpoint"; +/area/almayer/lifeboat_pumps/south1) +"dGP" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + dir = 1; req_access = null; - req_one_access_txt = "3;19" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 + req_one_access = null; + req_one_access_txt = "3;22;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, +/area/almayer/maint/hull/lower/l_f_s) +"dGU" = ( +/obj/structure/sign/poster/propaganda{ + pixel_x = -27 + }, +/obj/structure/bed/chair/comfy/alpha{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/briefing) "dHd" = ( /obj/structure/disposalpipe/segment{ @@ -31023,24 +26675,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) -"dHk" = ( -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) -"dHr" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/escapepod{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "dHu" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = 2; @@ -31053,20 +26687,17 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) -"dHv" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/firstaid/toxin{ - pixel_x = 3; - pixel_y = 3 +"dHV" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/pipes/unary/freezer{ + dir = 8 }, -/obj/item/storage/firstaid/adv, -/obj/item/device/defibrillator, -/obj/item/reagent_container/spray/cleaner, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + icon_state = "mono" }, -/area/almayer/shipboard/brig/surgery) +/area/almayer/medical/medical_science) "dHZ" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -31076,13 +26707,39 @@ }, /turf/open/floor/plating, /area/almayer/living/bridgebunks) -"dIl" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 +"dIi" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/plating/plating_catwalk{ + allow_construction = 0 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/command/airoom) +"dIn" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 5 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"dID" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/command/lifeboat) +"dIH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/engineering/lower/workshop) "dII" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/marine/shared/alpha_bravo, /obj/effect/decal/warning_stripes{ @@ -31095,16 +26752,44 @@ icon_state = "test_floor4" }, /area/almayer/squads/alpha) -"dIR" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/powercell, +"dJe" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/stack/sheet/mineral/phoron/medium_stack, +/obj/item/stack/sheet/mineral/phoron/medium_stack{ + pixel_y = 10 + }, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"dJy" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) +"dJI" = ( +/obj/structure/bed/chair/comfy/bravo{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/arcturianstopsign{ + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"dKc" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 9" }, -/area/almayer/hull/lower_hull/l_m_s) +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "dKm" = ( /obj/structure/machinery/power/apc/almayer{ dir = 4 @@ -31137,9 +26822,40 @@ dir = 4 }, /area/almayer/medical/containment/cell/cl) +"dKK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "dKL" = ( /turf/closed/wall/almayer/outer, /area/almayer/engineering/airmix) +"dKO" = ( +/obj/structure/machinery/door_control{ + id = "panicroomback"; + name = "\improper Safe Room"; + pixel_x = 25; + req_one_access_txt = "3" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) +"dKS" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "dLc" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, @@ -31147,6 +26863,24 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"dLe" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/obj/structure/disposalpipe/junction{ + dir = 4; + icon_state = "pipe-j2" + }, +/turf/open/floor/almayer{ + icon_state = "silver" + }, +/area/almayer/command/cichallway) +"dLi" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 4" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "dLt" = ( /obj/structure/sign/safety/hazard{ pixel_x = -17; @@ -31161,10 +26895,9 @@ }, /area/almayer/shipboard/sea_office) "dLz" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/backpack/satchel, +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, /area/almayer/lifeboat_pumps/south1) "dLE" = ( @@ -31172,6 +26905,20 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) +"dMf" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/photo_album{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/folder/black{ + pixel_x = 7; + pixel_y = -3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "dMB" = ( /turf/open/floor/almayer{ dir = 8; @@ -31179,19 +26926,23 @@ }, /area/almayer/living/cryo_cells) "dMK" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_corner" +/turf/closed/wall/almayer/research/containment/wall/corner{ + dir = 8 }, -/area/almayer/medical/hydroponics) -"dNe" = ( +/area/almayer/medical/containment/cell) +"dNq" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; pixel_y = 1 }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/obj/structure/sink{ + pixel_y = 24 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/containment) "dNt" = ( /obj/structure/window/framed/almayer/hull/hijack_bustable, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -31201,16 +26952,6 @@ }, /turf/open/floor/plating, /area/almayer/living/cryo_cells) -"dNx" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/almayer, -/area/almayer/engineering/engine_core) -"dNB" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "dNM" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/tabasco{ @@ -31230,6 +26971,18 @@ icon_state = "redfull" }, /area/almayer/command/cic) +"dOe" = ( +/obj/structure/sign/safety/fire_haz{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/structure/reagent_dispensers/ethanoltank{ + anchored = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "dOl" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/storage/fancy/cigar, @@ -31240,25 +26993,121 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) -"dOL" = ( -/obj/structure/bed/chair/comfy/black, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/chief_mp_office) -"dPU" = ( -/obj/structure/sign/safety/nonpress_ag{ - pixel_x = 32 +"dPd" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + pixel_x = 5; + pixel_y = 10 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"dPY" = ( -/obj/structure/machinery/light/small{ +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) +"dPl" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) +"dPm" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/structure/largecrate/random/barrel/green, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/command/lifeboat) +"dPq" = ( +/obj/structure/surface/table/almayer, +/obj/item/stack/sheet/cardboard{ + amount = 50; + pixel_x = 4 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"dPC" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/lifeboat) +"dPH" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) +"dPO" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"dPQ" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/pen, +/obj/item/paper_bin/uscm, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) +"dPT" = ( +/obj/structure/machinery/brig_cell/cell_2{ + pixel_x = 32; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + allow_construction = 0 + }, +/area/almayer/shipboard/brig/processing) +"dQl" = ( +/obj/structure/platform{ + dir = 4 + }, +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresUp"; + vector_x = -97; + vector_y = 65 + }, +/obj/structure/stairs{ + dir = 1 + }, +/turf/open/floor/almayer/no_build{ + dir = 4; + icon_state = "silver" + }, +/area/almayer/command/airoom) +"dQp" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "Bathroom" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/cells) +"dQs" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "green" + }, +/area/almayer/hallways/port_hallway) "dQv" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -31267,12 +27116,31 @@ icon_state = "dark_sterile" }, /area/almayer/shipboard/brig/surgery) -"dQH" = ( -/obj/structure/disposalpipe/segment{ +"dQA" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower) +"dRh" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/medical/hydroponics) +"dRs" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/upper_engineering/port) "dRv" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -31315,59 +27183,45 @@ icon_state = "red" }, /area/almayer/hallways/starboard_hallway) +"dRP" = ( +/obj/structure/bed/chair/comfy/orange, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "dRT" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"dRV" = ( -/obj/effect/landmark/crap_item, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"dSc" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 +"dSm" = ( +/obj/structure/sign/safety/airlock{ + pixel_y = -32 }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/structure/sign/safety/hazard{ + pixel_x = 15; + pixel_y = -32 }, -/area/almayer/shipboard/brig/main_office) -"dSn" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "plate" }, -/area/almayer/shipboard/brig/cells) +/area/almayer/maint/hull/lower/l_m_p) "dSp" = ( /obj/structure/machinery/camera/autoname/almayer{ name = "ship-grade camera" }, +/obj/structure/surface/table/almayer, /turf/open/floor/almayer{ dir = 9; icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"dSs" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/hazard{ - pixel_x = -17; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) -"dSA" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "dSJ" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -31390,34 +27244,31 @@ icon_state = "rasputin3" }, /area/almayer/powered/agent) -"dTc" = ( -/obj/structure/sign/poster{ - desc = "One of those hot, tanned babes back the beaches of good ol' Earth."; - icon_state = "poster12"; - name = "Beach Babe Pinup"; - pixel_x = -30; - pixel_y = 6; - serial_number = 12 - }, +"dTn" = ( /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "red" }, -/area/almayer/command/corporateliason) -"dTt" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/camera, -/obj/item/device/camera_film, -/obj/item/device/camera_film, -/turf/open/floor/almayer{ - icon_state = "plate" +/area/almayer/hallways/upper/starboard) +"dTr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" }, -/area/almayer/hull/upper_hull/u_f_s) +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/workshop) "dTI" = ( /obj/structure/machinery/light{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) +"dTS" = ( +/obj/structure/machinery/fuelcell_recycler, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "dTZ" = ( /turf/open/floor/almayer{ icon_state = "sterile_green_side" @@ -31430,48 +27281,79 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"dUF" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"dUS" = ( +/turf/open/floor/almayer{ + icon_state = "dark_sterile" }, -/obj/structure/closet/firecloset, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"dUI" = ( +/area/almayer/medical/operating_room_two) +"dUZ" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - dir = 9; + dir = 10; icon_state = "red" }, /area/almayer/shipboard/port_missiles) -"dUS" = ( +"dVd" = ( +/obj/structure/machinery/seed_extractor{ + density = 0; + pixel_y = 16 + }, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "mono" }, -/area/almayer/medical/operating_room_two) +/area/almayer/medical/hydroponics) "dVe" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "blue" }, /area/almayer/living/briefing) -"dVu" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +"dVn" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 2; - id = "researchlockdownint"; - name = "\improper Research Lockdown" +/obj/structure/machinery/light{ + dir = 4 }, -/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ - dir = 1; - name = "\improper Medical Research Wing" +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) +"dVs" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer, +/area/almayer/living/port_emb) +"dVu" = ( +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 4; + icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"dVH" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "dVO" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/emails{ @@ -31481,62 +27363,59 @@ icon_state = "plate" }, /area/almayer/living/offices) -"dVZ" = ( -/obj/structure/machinery/pipedispenser, -/turf/open/floor/almayer{ - icon_state = "cargo" +"dVR" = ( +/obj/structure/ladder{ + height = 2; + id = "AftPortMaint" + }, +/turf/open/floor/plating/almayer, +/area/almayer/maint/hull/upper/u_a_p) +"dWc" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 }, -/area/almayer/engineering/engine_core) +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "dWg" = ( /obj/effect/landmark/start/cargo, /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) -"dWk" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/door_control{ - id = "CMP Office Shutters"; - name = "CMP Office Shutters"; - pixel_y = 32; - req_one_access_txt = "24;31" - }, -/obj/structure/machinery/door_control{ - id = "Brig Lockdown Shutters"; - name = "Brig Lockdown Shutters"; - pixel_y = 24; - req_access_txt = "3" - }, -/obj/structure/machinery/faxmachine/uscm/brig/chief, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/chief_mp_office) -"dWm" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/firstaid/o2, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/technology_scanner, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "dWw" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "bluecorner" }, /area/almayer/living/basketball) -"dWz" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 +"dWA" = ( +/obj/structure/sign/poster{ + pixel_y = 32 }, -/obj/structure/machinery/door_control{ - id = "cl_shutters 2"; - name = "Quarters Shutters"; - pixel_x = 11; - pixel_y = 37; - req_access_txt = "200" +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) +"dWJ" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "dWX" = ( /obj/structure/machinery/light{ dir = 8 @@ -31545,6 +27424,12 @@ icon_state = "mono" }, /area/almayer/engineering/upper_engineering/starboard) +"dXb" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/cryo_cells) "dXd" = ( /obj/item/storage/fancy/cigarettes/kpack, /obj/structure/surface/rack, @@ -31556,10 +27441,8 @@ }, /area/almayer/engineering/laundry) "dXo" = ( -/obj/structure/machinery/photocopier, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, +/obj/structure/surface/table/almayer, +/obj/item/device/taperecorder, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -31574,10 +27457,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"dXy" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) "dXG" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -31586,6 +27465,23 @@ icon_state = "plate" }, /area/almayer/squads/req) +"dXH" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/device/camera_film{ + pixel_x = 4; + pixel_y = -2 + }, +/turf/open/floor/almayer, +/area/almayer/squads/charlie_delta_shared) +"dXI" = ( +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + name = "\improper Exterior Airlock"; + req_access = null + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/stern_point_defense) "dXV" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = 16 @@ -31600,30 +27496,34 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "blue" + }, /area/almayer/living/pilotbunks) +"dYc" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "dYu" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 }, /turf/open/floor/almayer, /area/almayer/living/chapel) -"dYK" = ( -/obj/item/folder/red{ - desc = "A red folder. The previous contents are a mystery, though the number 28 has been written on the inside of each flap numerous times. Smells faintly of cough syrup."; - name = "folder: 28"; - pixel_x = -4; - pixel_y = 5 - }, +"dYC" = ( /obj/structure/surface/table/almayer, -/obj/item/toy/crayon{ - pixel_x = 9; - pixel_y = -2 +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 }, +/obj/item/frame/fire_alarm, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "orange" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/engineering/lower) "dYR" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/reagentgrinder{ @@ -31631,6 +27531,42 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) +"dYU" = ( +/obj/structure/surface/rack, +/obj/effect/decal/cleanable/cobweb{ + dir = 8; + plane = -6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_container/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" + }, +/obj/item/reagent_container/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" + }, +/obj/item/reagent_container/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/lower_medical_medbay) +"dYX" = ( +/obj/structure/machinery/door/airlock/almayer/marine/bravo{ + dir = 1 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/briefing) "dZd" = ( /turf/open/floor/almayer{ dir = 10; @@ -31649,6 +27585,20 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) +"dZu" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"dZZ" = ( +/obj/structure/surface/rack, +/obj/item/tool/weldpack, +/obj/effect/spawner/random/tool, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "eaf" = ( /obj/structure/machinery/cm_vending/clothing/military_police{ density = 0; @@ -31665,16 +27615,26 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/general_equipment) -"eai" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/living/port_emb) "ean" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "W_Containment Cell 3"; + name = "\improper Containment Cell 5"; + unacidable = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/closed/wall/almayer/research/containment/wall/purple{ + dir = 4 + }, +/area/almayer/medical/containment/cell) +"ear" = ( +/obj/structure/largecrate/random/case, /turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_side" + icon_state = "plate" }, -/area/almayer/medical/hydroponics) +/area/almayer/maint/upper/u_m_p) "eas" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -31691,10 +27651,33 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) +"eaz" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "ebd" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) +"ebf" = ( +/obj/structure/closet/crate/freezer{ + desc = "A freezer crate. There is a note attached, it reads: Do not open, property of Pvt. Mendoza." + }, +/obj/item/storage/beer_pack, +/obj/item/reagent_container/food/drinks/cans/beer, +/obj/item/reagent_container/food/drinks/cans/beer, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) "ebn" = ( /obj/structure/sign/safety/airlock{ pixel_x = 15; @@ -31704,39 +27687,66 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"ebD" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"ebp" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/bed/chair/comfy/bravo{ + dir = 4 }, -/obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) -"ebJ" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk, +/area/almayer/living/briefing) +"ebt" = ( +/obj/structure/surface/table/almayer, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" + icon_state = "cargo" }, -/area/almayer/engineering/engine_core) -"ebO" = ( -/obj/structure/machinery/light/small, +/area/almayer/engineering/lower/engine_core) +"ebv" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/firstaid/toxin{ + pixel_x = 8; + pixel_y = -2 + }, +/obj/item/storage/firstaid/regular, +/obj/item/reagent_container/spray/cleaner, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "sterile_green_side" + }, +/area/almayer/shipboard/brig/surgery) +"ebI" = ( +/obj/item/clothing/shoes/red, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) +"ebN" = ( +/turf/closed/wall/almayer/white/reinforced, +/area/almayer/command/airoom) +"ecb" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) +"ecj" = ( +/obj/structure/largecrate/supply/supplies/mre, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 }, -/area/almayer/hull/lower_hull/l_a_p) -"ebY" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/tool, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/lower/l_m_p) "eco" = ( /obj/structure/sign/safety/restrictedarea{ pixel_x = -17; @@ -31747,70 +27757,9 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"ecq" = ( -/obj/structure/surface/table/almayer, -/obj/item/book/manual/marine_law{ - pixel_x = -3; - pixel_y = 1 - }, -/obj/structure/machinery/status_display{ - pixel_x = 32 - }, -/obj/item/device/flashlight/lamp/green{ - pixel_x = 6 - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/shipboard/brig/lobby) "ecr" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/living/captain_mess) -"ect" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) -"ecx" = ( -/obj/structure/transmitter{ - name = "Researcher Office Telephone"; - phone_category = "Almayer"; - phone_id = "Research"; - pixel_y = 29 - }, -/turf/open/floor/wood/ship, -/area/almayer/medical/medical_science) -"ecM" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"ecQ" = ( -/obj/structure/machinery/door_display/research_cell{ - dir = 4; - id = "Containment Cell 4"; - name = "Control Panel"; - pixel_x = -15; - req_access_txt = "200" - }, -/obj/item/storage/fancy/cigarettes/blackpack{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/structure/surface/table/woodentable/fancy, -/obj/item/storage/fancy/cigarettes/wypacket{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/item/tool/lighter/zippo/gold{ - pixel_x = 2 - }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) "ecR" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -31824,6 +27773,15 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) +"ecS" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "ecZ" = ( /obj/structure/ladder{ height = 1; @@ -31833,38 +27791,43 @@ icon_state = "plate" }, /area/almayer/shipboard/navigation) -"edv" = ( -/obj/structure/bed/chair, -/obj/structure/machinery/door_control{ - id = "containmentlockdown_S"; - name = "Containment Lockdown"; - pixel_y = 28; - req_one_access_txt = "19;28" - }, +"edo" = ( +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + allow_construction = 0 }, -/area/almayer/medical/upper_medical) -"edx" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = -32 +/area/almayer/shipboard/brig/processing) +"edv" = ( +/obj/structure/bed/sofa/south/white/left, +/turf/open/floor/almayer{ + icon_state = "sterile_green" }, +/area/almayer/medical/medical_science) +"edG" = ( +/obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/command/lifeboat) -"edM" = ( -/obj/structure/closet/firecloset, +/area/almayer/maint/hull/upper/u_m_p) +"edV" = ( +/obj/structure/machinery/power/terminal, /turf/open/floor/almayer, -/area/almayer/hallways/vehiclehangar) +/area/almayer/maint/upper/mess) "eed" = ( /turf/open/floor/almayer{ icon_state = "mono" }, /area/almayer/command/computerlab) +"eeh" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/microwave{ + pixel_y = 9 + }, +/obj/item/reagent_container/food/snacks/packaged_burger, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "eei" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/storage/box/cups{ @@ -31887,18 +27850,6 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) -"eep" = ( -/obj/structure/sign/safety/airlock{ - pixel_y = -32 - }, -/obj/structure/sign/safety/hazard{ - pixel_x = 15; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "eet" = ( /obj/structure/machinery/power/terminal{ dir = 1 @@ -31923,61 +27874,48 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) -"eeN" = ( -/obj/structure/bed/chair, +"eeA" = ( +/obj/structure/closet/emcloset, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/processing) -"efa" = ( -/obj/item/frame/camera{ - desc = "The Staff Officer insisted he needed to monitor everyone at all times."; - layer = 2.9; - name = "broken camera"; - pixel_x = -7; - pixel_y = -6 - }, -/turf/open/floor/almayer, -/area/almayer/living/port_emb) -"efh" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/door_control{ - id = "courtyard_cells"; - name = "\improper Courtyard Lockdown Shutters"; - pixel_x = -8; - pixel_y = -6; - req_access_txt = "3" + icon_state = "plate" }, -/obj/structure/machinery/door_control{ - id = "Brig Lockdown Shutters"; - name = "Brig Lockdown Shutters"; - pixel_x = -8; - pixel_y = 2; - req_access_txt = "3" +/area/almayer/maint/hull/upper/s_bow) +"eeC" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 }, -/obj/structure/machinery/door_control{ - id = "courtyard window"; - name = "Courtyard Window Shutters"; - pixel_x = -8; - pixel_y = 10; - req_access_txt = "3" +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/machinery/door_control{ - id = "Cell Privacy Shutters"; - name = "Cell Privacy Shutters"; - pixel_x = 2; - pixel_y = 10; - req_access_txt = "3" +/area/almayer/maint/hull/lower/stern) +"eeR" = ( +/obj/structure/surface/rack, +/obj/item/frame/table, +/obj/item/frame/table, +/obj/item/frame/table, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"efj" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" }, -/obj/structure/machinery/recharger{ - pixel_x = 6; - pixel_y = -2 +/area/almayer/hallways/upper/port) +"efC" = ( +/obj/structure/machinery/firealarm{ + pixel_y = 28 }, +/obj/structure/machinery/suit_storage_unit/carbon_unit, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/engineering/lower) +"efJ" = ( +/obj/item/tool/wet_sign, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "efK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -31989,6 +27927,29 @@ icon_state = "plate" }, /area/almayer/squads/alpha) +"efP" = ( +/obj/structure/surface/table/almayer, +/obj/item/toy/deck{ + pixel_y = 14 + }, +/obj/item/trash/cigbutt/ucigbutt{ + layer = 3.7; + pixel_x = 5; + pixel_y = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) +"efT" = ( +/obj/structure/machinery/atm{ + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) "egc" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -32033,33 +27994,40 @@ icon_state = "test_floor4" }, /area/almayer/living/chapel) -"egB" = ( -/obj/structure/platform{ - dir = 1 +"egQ" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 }, -/obj/structure/largecrate/random/case, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 }, -/area/almayer/hull/upper_hull/u_a_s) -"egR" = ( -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -16; + pixel_y = 13 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) +"ehc" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 }, -/area/almayer/shipboard/brig/main_office) -"egS" = ( -/obj/structure/closet, -/obj/item/clothing/ears/earmuffs, -/obj/item/clothing/glasses/regular/hipster, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/engineering/lower/workshop) "ehi" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -32069,6 +28037,9 @@ /area/almayer/hallways/hangar) "ehj" = ( /obj/item/stack/catwalk, +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) "ehx" = ( @@ -32076,6 +28047,40 @@ /obj/effect/landmark/late_join/alpha, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) +"ehH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 2; + pixel_y = 3 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/starboard_hallway) +"ehL" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/starboard) +"ehM" = ( +/obj/structure/surface/rack, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "ehR" = ( /obj/structure/window/reinforced{ dir = 4; @@ -32105,15 +28110,19 @@ icon_state = "plate" }, /area/almayer/living/port_emb) -"ehZ" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 +"ehX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/shipboard/brig/processing) "eim" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -32137,38 +28146,18 @@ }, /area/almayer/medical/operating_room_two) "eiE" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/medical/medical_science) -"eiH" = ( -/obj/structure/sink{ - pixel_y = 24 - }, /obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/cells) -"eiK" = ( -/obj/structure/bed/chair{ - dir = 4 + unacidable = 1; + unslashable = 1 }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = -17 +/obj/structure/machinery/optable, +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "silver" +/turf/open/floor/almayer/research/containment/floor2{ + dir = 1 }, -/area/almayer/shipboard/brig/cic_hallway) +/area/almayer/medical/containment/cell) "eiN" = ( /obj/structure/machinery/light{ dir = 1 @@ -32181,12 +28170,6 @@ icon_state = "plate" }, /area/almayer/living/port_emb) -"eiO" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/main_office) "eiP" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -32194,6 +28177,20 @@ icon_state = "plate" }, /area/almayer/living/gym) +"ejj" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/tool/wrench{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/tool/wrench{ + pixel_x = 2; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "ejo" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -32210,7 +28207,7 @@ "ejp" = ( /obj/structure/closet/emcloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, /area/almayer/hallways/aft_hallway) "ejt" = ( @@ -32222,69 +28219,52 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/living/grunt_rnr) -"ejK" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/clothing/glasses/welding{ - pixel_x = 8; - pixel_y = 3 - }, -/obj/item/tool/weldingtool{ - pixel_x = -11; - pixel_y = 5 - }, +"ejV" = ( +/obj/structure/closet, +/obj/item/device/flashlight/pen, +/obj/item/attachable/reddot, /obj/structure/machinery/light/small{ dir = 1 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/upper/u_m_s) "ejY" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"ekg" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/shipboard/brig/perma) -"eko" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "eky" = ( /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"ekF" = ( -/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ - id = "Containment Cell 2"; - locked = 1; - name = "\improper Containment Cell 2" +"ekz" = ( +/obj/structure/girder/displaced, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/machinery/door/poddoor/shutters/almayer/containment{ - dir = 4; - id = "Containment Cell 2"; - name = "\improper Containment Cell 2" +/area/almayer/maint/hull/upper/u_a_p) +"ekF" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 1; + icon_state = "red" }, -/area/almayer/medical/containment/cell) +/area/almayer/shipboard/brig/main_office) "ekY" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/machinery/door/airlock/almayer/generic/glass{ + name = "\improper Memorial Room" }, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = -32 +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 8 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/living/starboard_garden) "elf" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -32295,24 +28275,16 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"elh" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 - }, -/obj/structure/machinery/light{ - dir = 8 +"elv" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/sign/safety/maint{ + pixel_x = -17 }, /turf/open/floor/almayer, -/area/almayer/shipboard/brig/cic_hallway) -"elq" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/shipboard/brig/perma) +/area/almayer/hallways/upper/port) +"elx" = ( +/turf/open/floor/almayer, +/area/almayer/engineering/lower) "elA" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -32331,26 +28303,11 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_one) -"elH" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8; - layer = 3.25 - }, -/turf/open/floor/wood/ship, -/area/almayer/medical/medical_science) "elR" = ( -/obj/structure/surface/table/almayer, -/obj/item/paper_bin/wy{ - pixel_y = 7 - }, -/obj/item/tool/pen{ - pixel_y = 8 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_corner" +/turf/closed/wall/almayer/research/containment/wall/corner{ + dir = 1 }, -/area/almayer/medical/testlab) +/area/almayer/medical/containment/cell) "eme" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -32378,98 +28335,75 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) -"emx" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"emG" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) +"emA" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/l_a_s) +"emC" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/l_f_p) "emK" = ( -/obj/structure/machinery/door_control{ - id = "containmentlockdown_E"; - name = "Containment Lockdown"; - pixel_x = -25; - req_one_access_txt = "19;28" - }, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ - dir = 8; + dir = 10; icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"emO" = ( -/obj/structure/machinery/door/airlock/almayer/generic/corporate{ - dir = 1; - name = "Corporate Liaison's Bedroom" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/corporateliason) -"emR" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/storage/toolbox/electrical, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/testlab) "ene" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "silvercorner" }, /area/almayer/command/securestorage) -"enf" = ( -/obj/structure/bed/chair{ - dir = 4 +"eni" = ( +/obj/structure/machinery/power/monitor{ + name = "Main Power Grid Monitoring" }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) -"eni" = ( -/obj/structure/surface/table/almayer, -/obj/item/prop/magazine/book/spacebeast, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/evidence_storage) +/area/almayer/engineering/lower/workshop) "enx" = ( /obj/structure/pipes/vents/pump, +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, /turf/open/floor/almayer{ dir = 1; icon_state = "green" }, /area/almayer/hallways/starboard_hallway) -"enz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"enQ" = ( +/obj/structure/surface/rack, +/obj/item/frame/table, +/obj/item/frame/table, +/obj/item/frame/table, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/machinery/vending/snack, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/area/almayer/maint/hull/lower/l_m_p) +"enY" = ( +/obj/item/storage/firstaid, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"eob" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 }, +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/main_office) -"eoz" = ( +/area/almayer/maint/hull/lower/l_m_s) +"eox" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) +"eoE" = ( +/obj/structure/largecrate/random/secure, /turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_side" + icon_state = "plate" }, -/area/almayer/medical/containment) +/area/almayer/maint/hull/lower/l_f_s) "eoG" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -32477,29 +28411,12 @@ /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/port) -"eoP" = ( -/obj/structure/bed, -/obj/structure/machinery/flasher{ - id = "Perma 1"; - pixel_y = 24 - }, +"eoK" = ( +/obj/structure/machinery/optable, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/shipboard/brig/perma) -"eoT" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) +/area/almayer/maint/hull/upper/p_stern) "epu" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -32511,16 +28428,15 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/lobby) -"epA" = ( -/obj/structure/largecrate/random/barrel/yellow, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 +"epJ" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/disposalpipe/junction{ + dir = 8 }, -/area/almayer/hull/lower_hull/l_a_s) +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "eqb" = ( /obj/structure/surface/table/almayer, /obj/item/tool/stamp/denied{ @@ -32531,8 +28447,7 @@ eftpos_name = "Cargo Bay EFTPOS scanner"; pixel_x = -10 }, -/obj/item/tool/stamp{ - name = "Requisition Officer's stamp"; +/obj/item/tool/stamp/ro{ pixel_x = -8; pixel_y = 10 }, @@ -32548,12 +28463,27 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) -"eqk" = ( -/mob/living/simple_animal/mouse/brown, +"eqd" = ( +/obj/item/stack/folding_barricade/three, +/obj/item/stack/folding_barricade/three, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/shipboard/panic) +"eqm" = ( +/obj/structure/prop/almayer/computers/sensor_computer2, +/obj/structure/machinery/door_control{ + id = "Secretroom"; + indestructible = 1; + layer = 2.5; + name = "Shutters"; + use_power = 0 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_m_s) "eqB" = ( /obj/item/bedsheet/brown{ layer = 3.2 @@ -32567,13 +28497,13 @@ }, /area/almayer/engineering/port_atmos) "eqD" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 9 }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" +/turf/open/floor/almayer/research/containment/floor2{ + dir = 1 }, -/area/almayer/medical/testlab) +/area/almayer/medical/containment/cell) "eqI" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -32584,6 +28514,14 @@ icon_state = "red" }, /area/almayer/shipboard/port_missiles) +"eqL" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "eqN" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/synthcloset) @@ -32608,6 +28546,12 @@ dir = 1 }, /area/almayer/medical/containment/cell/cl) +"ere" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "erh" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -32631,19 +28575,29 @@ icon_state = "test_floor4" }, /area/almayer/squads/delta) -"erx" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 2 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 +"ern" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/engine_core) +"erE" = ( +/obj/structure/machinery/light/small{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/shipboard/brig/cryo) +/area/almayer/maint/hull/lower/stern) +"erF" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/firstaid/toxin{ + pixel_x = 8; + pixel_y = -2 + }, +/obj/item/book/manual/engineering_guide, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "erG" = ( /obj/structure/disposalpipe/junction{ dir = 2; @@ -32653,14 +28607,40 @@ /obj/effect/landmark/late_join/delta, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) +"erL" = ( +/obj/structure/surface/table/almayer, +/obj/item/trash/crushed_cup, +/obj/item/reagent_container/food/drinks/cup{ + pixel_x = -5; + pixel_y = 9 + }, +/obj/item/spacecash/c10{ + pixel_x = 5; + pixel_y = 10 + }, +/obj/item/ashtray/plastic{ + pixel_x = 5; + pixel_y = -10 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"erN" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/pipes/vents/pump/no_boom{ + dir = 1 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "erS" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_umbilical) -"erZ" = ( -/obj/structure/pipes/vents/scrubber, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "esi" = ( /obj/structure/sign/safety/stairs{ pixel_x = 15; @@ -32680,6 +28660,30 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) +"esm" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) +"esC" = ( +/obj/structure/toilet{ + pixel_y = 13 + }, +/obj/item/paper_bin/uscm{ + pixel_x = 9; + pixel_y = -3 + }, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/item/prop/magazine/dirty{ + pixel_x = -6; + pixel_y = -10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/captain_mess) "esF" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -32713,6 +28717,14 @@ icon_state = "plating_striped" }, /area/almayer/command/lifeboat) +"etn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/command/lifeboat) "ets" = ( /obj/structure/machinery/power/apc/almayer{ dir = 4 @@ -32740,15 +28752,12 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) -"etB" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sign/safety/storage{ - pixel_x = 32 - }, +"ety" = ( +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/lower/l_m_s) "etE" = ( /obj/structure/prop/almayer/name_stencil, /turf/open/floor/almayer_hull{ @@ -32763,6 +28772,10 @@ icon_state = "plate" }, /area/almayer/shipboard/starboard_point_defense) +"etN" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "eua" = ( /obj/structure/machinery/vending/cigarette, /turf/open/floor/almayer{ @@ -32777,29 +28790,58 @@ icon_state = "test_floor4" }, /area/almayer/living/officer_study) -"euB" = ( +"euL" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Starboard Railguns and Viewing Room" + }, /turf/open/floor/almayer{ - icon_state = "sterile_green_corner" + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_f_s) +"euN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/obj/structure/machinery/door_control{ + id = "ARES Mainframe Left"; + name = "ARES Mainframe Lockdown"; + pixel_x = 24; + pixel_y = 24; + req_one_access_txt = "200;91;92" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "tcomms" }, -/area/almayer/medical/testlab) +/area/almayer/command/airoom) "euO" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 2; - id = "Warden Office Shutters"; - name = "\improper Privacy Shutters" +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 }, /turf/open/floor/almayer{ - dir = 5; + dir = 10; icon_state = "red" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/lifeboat_pumps/north1) "euV" = ( /turf/open/floor/almayer/uscm/directional{ dir = 8; icon_state = "logo_c" }, /area/almayer/command/cic) +"euW" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/closet/secure_closet/engineering_materials, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop/hangar) "eva" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 32 @@ -32811,17 +28853,12 @@ /area/almayer/living/basketball) "evg" = ( /obj/structure/surface/table/reinforced/almayer_B, -/obj/item/clipboard{ - pixel_x = -6 - }, -/obj/item/tool/pen/blue{ - pixel_x = -6 +/obj/structure/machinery/computer/emails{ + dir = 1 }, -/obj/item/paper_bin/uscm{ - pixel_x = 8; - pixel_y = 12 +/turf/open/floor/almayer{ + icon_state = "bluefull" }, -/turf/open/floor/almayer, /area/almayer/living/pilotbunks) "evk" = ( /obj/structure/surface/rack, @@ -32836,12 +28873,16 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/starboard) -"evl" = ( -/obj/structure/largecrate/random/barrel/yellow, +"evR" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/toolbox/mechanical/green{ + pixel_y = 8 + }, +/obj/item/storage/toolbox/mechanical, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/shipboard/brig/general_equipment) "evX" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -32856,55 +28897,57 @@ icon_state = "greencorner" }, /area/almayer/hallways/starboard_hallway) -"ewO" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ +"ewr" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 }, -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/squads/delta) -"ewS" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "silvercorner" - }, -/area/almayer/command/cichallway) -"ewT" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cic_hallway) +"ewI" = ( /obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "Brig" + name = "\improper Execution Room" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_f_s) -"exr" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 +/area/almayer/shipboard/brig/execution) +"ewO" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 }, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/shipboard/brig/surgery) -"ext" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" + icon_state = "test_floor4" }, -/obj/structure/largecrate/random/case/small, +/area/almayer/squads/delta) +"ewS" = ( /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "silvercorner" + }, +/area/almayer/command/cichallway) +"exb" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_y = -16 }, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"exi" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "exy" = ( /obj/structure/machinery/power/monitor{ name = "Main Power Grid Monitoring" @@ -32916,29 +28959,25 @@ icon_state = "tcomms" }, /area/almayer/engineering/upper_engineering/starboard) -"eyd" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - layer = 2.5 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) -"eyg" = ( -/obj/structure/machinery/cryopod/right{ - pixel_y = 6 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/shipboard/brig/cryo) "eyG" = ( /obj/structure/platform, /turf/open/floor/almayer{ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) +"eyI" = ( +/obj/structure/window/framed/almayer, +/obj/structure/curtain/open/shower{ + name = "hypersleep curtain" + }, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_m_p) +"eyM" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "eyQ" = ( /obj/structure/machinery/light{ dir = 1 @@ -32989,19 +29028,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"ezU" = ( -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/shipboard/brig/lobby) "ezX" = ( /obj/structure/bed/chair/wood/normal, /turf/open/floor/wood/ship, @@ -33026,6 +29052,48 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"eAF" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "silver" + }, +/area/almayer/shipboard/brig/cic_hallway) +"eAG" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/firstaid/regular, +/obj/item/clipboard, +/obj/item/tool/pen, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/squads/req) +"eAI" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower/engine_core) +"eAL" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/command/lifeboat) +"eAN" = ( +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"eAT" = ( +/obj/structure/machinery/door_control/cl/office/door{ + pixel_y = -20 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hallways/aft_hallway) "eAU" = ( /obj/structure/bed/chair{ dir = 8 @@ -33068,24 +29136,34 @@ icon_state = "orange" }, /area/almayer/hallways/starboard_hallway) -"eBo" = ( -/obj/structure/machinery/cm_vending/gear/commanding_officer, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "eBC" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_umbilical) -"eBO" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 +"eBE" = ( +/obj/structure/machinery/photocopier{ + anchored = 0 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"eBG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; + pixel_y = 32 }, -/obj/structure/machinery/iv_drip, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"eBO" = ( +/obj/structure/bed, +/turf/open/floor/almayer{ + icon_state = "mono" }, /area/almayer/medical/medical_science) "eBV" = ( @@ -33101,16 +29179,6 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie_delta_shared) -"eBW" = ( -/obj/structure/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/brig/evidence_storage) "eBZ" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/firstaid/fire{ @@ -33142,6 +29210,47 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) +"eCt" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/plasteel{ + amount = 30; + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" + }, +/obj/item/stack/sheet/mineral/uranium{ + amount = 5 + }, +/obj/structure/sign/safety/fire_haz{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) +"eCI" = ( +/obj/structure/window/reinforced/ultra{ + pixel_y = -12 + }, +/obj/structure/bed/chair/bolted, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/brig/execution) +"eDk" = ( +/obj/structure/surface/rack, +/obj/item/tool/weldpack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "eDo" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -33152,6 +29261,28 @@ icon_state = "plating" }, /area/almayer/medical/upper_medical) +"eDq" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) +"eDt" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/cameras/almayer_network{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) +"eDu" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/living/bridgebunks) "eDG" = ( /obj/structure/barricade/handrail{ dir = 1; @@ -33213,20 +29344,17 @@ icon_state = "plate" }, /area/almayer/squads/charlie) -"eFp" = ( -/obj/structure/surface/rack, -/obj/item/clothing/head/headband/red{ - pixel_x = 4; - pixel_y = 8 +"eFG" = ( +/obj/structure/machinery/light{ + dir = 1 }, -/obj/item/clothing/glasses/regular/hipster, +/obj/structure/surface/table/almayer, +/obj/item/tool/hand_labeler, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "sterile_green_side" }, -/area/almayer/hull/lower_hull/l_f_p) -"eFH" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) +/area/almayer/medical/chemistry) "eFK" = ( /obj/structure/bed{ icon_state = "abed" @@ -33256,6 +29384,26 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"eFM" = ( +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) +"eFP" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/closet/secure_closet/fridge/organic, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/grunt_rnr) "eFT" = ( /obj/structure/bed/sofa/vert/grey, /obj/structure/bed/sofa/vert/grey{ @@ -33263,6 +29411,34 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"eFY" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/ashtray/bronze{ + pixel_x = 2; + pixel_y = 9 + }, +/obj/structure/machinery/door_control/cl/office/window{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/structure/machinery/door_control/cl/office/door{ + pixel_x = 6; + pixel_y = -3 + }, +/obj/item/spacecash/c500{ + pixel_x = -10; + pixel_y = 8 + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) +"eGb" = ( +/obj/structure/machinery/constructable_frame{ + icon_state = "box_2" + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) "eGg" = ( /obj/structure/machinery/door/poddoor/railing{ dir = 8; @@ -33307,26 +29483,10 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/surgery) -"eGs" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/almayer{ - icon_state = "cargo_arrow" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"eGz" = ( -/obj/structure/sign/safety/storage{ - pixel_x = -17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "eGB" = ( /obj/structure/platform_decoration, /turf/open/floor/almayer, /area/almayer/living/briefing) -"eGF" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "eGH" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -33349,36 +29509,6 @@ icon_state = "plate" }, /area/almayer/squads/req) -"eHf" = ( -/obj/structure/machinery/light/small, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) -"eHj" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/corporateliason) -"eHq" = ( -/obj/structure/prop/invuln/lattice_prop{ - dir = 1; - icon_state = "lattice-simple"; - pixel_x = 16; - pixel_y = -15 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/pipe_water{ - pixel_x = 17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "eHx" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/faxmachine/uscm/command, @@ -33386,6 +29516,22 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) +"eHy" = ( +/obj/structure/machinery/conveyor{ + id = "lower_garbage" + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "plating_striped" + }, +/area/almayer/maint/hull/lower/l_a_p) +"eHz" = ( +/obj/structure/largecrate/supply/supplies/mre, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) "eHY" = ( /obj/structure/surface/rack, /obj/item/device/taperecorder, @@ -33393,35 +29539,20 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"eIA" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"eJd" = ( -/obj/structure/platform_decoration{ - dir = 4 - }, +"eIN" = ( +/obj/item/tool/kitchen/utensil/pfork, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) -"eJg" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/lower_hull/l_m_s) -"eJh" = ( -/obj/structure/sign/safety/storage{ - pixel_x = -17 - }, +/area/almayer/maint/hull/upper/p_stern) +"eJj" = ( +/obj/structure/closet/crate, +/obj/item/ammo_box/magazine/l42a, +/obj/item/ammo_box/magazine/l42a, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/u_m_s) "eJQ" = ( /obj/structure/prop/invuln{ desc = "An inflated membrane. This one is puncture proof. Wow!"; @@ -33438,19 +29569,32 @@ "eJX" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/ce_room) -"eKg" = ( -/obj/structure/disposalpipe/segment{ - layer = 5.1; - name = "water pipe" +"eJZ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) +"eKa" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ + dir = 2; + name = "\improper Brig Lobby"; + closeOtherId = "briglobby" }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"eKD" = ( -/obj/structure/machinery/portable_atmospherics/canister/air, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/processing) +"eKy" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 6 + }, +/obj/structure/machinery/firealarm{ + pixel_y = 28 + }, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/engineering/lower) "eKH" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, @@ -33467,33 +29611,26 @@ icon_state = "test_floor5" }, /area/almayer/squads/req) -"eKK" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/structure/mirror{ - pixel_x = 28 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" +"eKJ" = ( +/obj/structure/machinery/status_display{ + pixel_y = 30 }, -/area/almayer/command/corporateliason) -"eKM" = ( -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/machinery/light{ + dir = 4; + invisibility = 101; + unacidable = 1; + unslashable = 1 }, -/area/almayer/hull/upper_hull/u_f_s) -"eKO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, -/obj/structure/bed/chair{ - dir = 1 +/area/almayer/command/airoom) +"eKQ" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 8 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop) "eKT" = ( /obj/structure/surface/table/almayer, /obj/item/facepaint/black, @@ -33502,6 +29639,15 @@ icon_state = "green" }, /area/almayer/living/offices) +"eKZ" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper Port Viewing Room" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_f_p) "eLz" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -33510,6 +29656,34 @@ icon_state = "silver" }, /area/almayer/hallways/repair_bay) +"eLC" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/kitchen/tray, +/obj/item/tool/kitchen/tray{ + pixel_y = 6 + }, +/obj/item/reagent_container/food/snacks/sliceable/bread{ + pixel_y = 8 + }, +/obj/item/tool/kitchen/knife{ + pixel_x = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"eLH" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/beer_pack, +/obj/structure/sign/poster{ + desc = "YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE."; + icon_state = "poster11"; + name = "YOU ALWAYS KNOW A WORKING JOE."; + pixel_x = -27; + serial_number = 11 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "eMh" = ( /obj/structure/machinery/door/airlock/almayer/generic{ name = "\improper Laundry Room" @@ -33518,6 +29692,22 @@ icon_state = "test_floor4" }, /area/almayer/engineering/laundry) +"eMx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"eMJ" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/structure/machinery/computer/crew, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/perma) "eMP" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -33541,104 +29731,43 @@ /obj/structure/largecrate/random, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/port) -"eNx" = ( -/obj/structure/machinery/vending/snack, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "eNI" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/machinery/autodispenser{ - dir = 4 +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "containmentlockdown_S"; + name = "\improper Containment Lockdown" }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_side" + icon_state = "test_floor4" }, -/area/almayer/medical/medical_science) -"eNL" = ( -/obj/structure/surface/table/almayer, -/obj/item/stack/sheet/cardboard{ - amount = 50; - pixel_x = 4 +/area/almayer/medical/containment) +"eNR" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, /turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"eNP" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/medical_science) -"eNT" = ( -/obj/structure/bed/chair/office/dark{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/medical/testlab) -"eOh" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/evidence_storage) -"eOk" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 - }, -/turf/open/floor/almayer{ - allow_construction = 0 - }, -/area/almayer/shipboard/brig/lobby) -"eOr" = ( -/obj/structure/bed/chair{ - dir = 8 +/area/almayer/shipboard/brig/processing) +"eOM" = ( +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + dir = 2; + name = "\improper Evacuation Airlock PU-6"; + req_access = null }, -/obj/effect/decal/cleanable/blood, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_f_p) -"eOR" = ( -/obj/structure/machinery/light{ - dir = 4 +/area/almayer/powered) +"eON" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 }, /turf/open/floor/almayer{ - dir = 4; + dir = 10; icon_state = "red" }, -/area/almayer/shipboard/brig/main_office) -"eOW" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/sentencing, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/processing) -"ePk" = ( -/obj/structure/airlock_assembly, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"ePs" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -14; - pixel_y = 13 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/hallways/upper/starboard) "ePA" = ( /obj/structure/machinery/light{ dir = 1 @@ -33647,45 +29776,93 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) -"ePB" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/general_equipment) -"ePY" = ( -/obj/structure/pipes/vents/pump{ - dir = 8; - id_tag = "mining_outpost_pump" - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop) -"eQi" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = 32 +"ePM" = ( +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 32 }, /obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 + icon_state = "SE-out"; + pixel_x = 1 }, /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; + pixel_x = 1; pixel_y = 1 }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) +"ePN" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/plastic{ + amount = 5 + }, +/obj/item/stack/sheet/glass{ + amount = 50; + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/plasteel{ + amount = 30; + pixel_x = 4; + pixel_y = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "cargo" }, -/area/almayer/hallways/aft_hallway) -"eRe" = ( -/obj/structure/bed/chair/comfy/orange{ - dir = 8 +/area/almayer/engineering/lower/workshop/hangar) +"eQd" = ( +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/smg/m39{ + pixel_y = 6 + }, +/obj/item/weapon/gun/smg/m39{ + pixel_y = -6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) +"eQm" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) +"eQJ" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/structure/sign/poster/ad{ + pixel_x = 30 }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"eQR" = ( /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/s_bow) +"eRi" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/folder/black{ + pixel_y = 8 + }, +/obj/item/folder/yellow, +/obj/item/device/flashlight/lamp/green{ + pixel_x = -16; + pixel_y = 8 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "eRu" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -33707,46 +29884,64 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ dir = 2; id_tag = "tc04"; - name = "\improper Treatment Center"; - req_access = null + name = "\improper Treatment Center" }, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/medical/lower_medical_medbay) +"eRG" = ( +/obj/structure/closet, +/obj/item/clothing/ears/earmuffs, +/obj/item/clothing/glasses/regular/hipster, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "eRL" = ( /turf/open/floor/almayer, /area/almayer/shipboard/brig/main_office) "eRR" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/structure/machinery/light{ - dir = 1 +/obj/item/clothing/head/helmet/marine{ + pixel_x = 16; + pixel_y = 6 }, +/obj/item/reagent_container/food/snacks/grown/poppy, +/obj/effect/step_trigger/message/memorial, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/south1) -"eSo" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/toolbox, -/obj/item/tool/extinguisher, +/area/almayer/living/starboard_garden) +"eRS" = ( /turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_corner" + icon_state = "cargo_arrow" }, -/area/almayer/medical/containment) -"eSJ" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/transmitter/rotary{ - name = "Captain's Office"; - phone_category = "Offices"; - phone_id = "Captain's Office"; - pixel_y = 6 +/area/almayer/engineering/lower/workshop/hangar) +"eSk" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) +/obj/structure/sign/safety/airlock{ + pixel_x = -17; + pixel_y = 7 + }, +/obj/structure/sign/safety/hazard{ + pixel_x = -17; + pixel_y = -8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) +"eSo" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) "eSU" = ( /obj/structure/prop/almayer/name_stencil{ icon_state = "almayer1" @@ -33755,27 +29950,9 @@ icon_state = "outerhull_dir" }, /area/space) -"eSV" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/overwatch/almayer{ - dir = 8; - layer = 3.2; - pixel_x = -17; - pixel_y = -17 - }, -/obj/structure/transmitter/rotary{ - name = "Delta Overwatch Telephone"; - phone_category = "Command"; - phone_id = "Delta Overwatch" - }, -/obj/structure/sign/safety/terminal{ - pixel_x = -17; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/cic) +"eTb" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/stern) "eTd" = ( /obj/structure/surface/table/almayer, /obj/item/trash/boonie{ @@ -33786,19 +29963,14 @@ /obj/effect/landmark/crap_item, /turf/open/floor/almayer, /area/almayer/living/briefing) -"eTo" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +"eTD" = ( +/obj/structure/bed/chair{ dir = 4 }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/sign/safety/bathunisex{ - pixel_x = 8; - pixel_y = 25 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/cells) +/area/almayer/maint/hull/lower/l_a_s) "eTO" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 @@ -33808,6 +29980,13 @@ icon_state = "red" }, /area/almayer/hallways/stern_hallway) +"eUe" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "eUh" = ( /obj/structure/window/reinforced{ dir = 8 @@ -33834,17 +30013,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/chemistry) -"eUz" = ( -/obj/structure/machinery/disposal{ - density = 0; - layer = 3.2; - pixel_y = 16 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/hallways/port_hallway) "eUA" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -33855,33 +30023,15 @@ icon_state = "plate" }, /area/almayer/squads/alpha) -"eUR" = ( -/obj/structure/bed/chair/comfy/orange, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) -"eUU" = ( -/obj/structure/closet/secure_closet/brig{ - name = "Spare Prison Uniforms" +"eUZ" = ( +/obj/structure/machinery/firealarm{ + pixel_y = 28 }, -/obj/item/clothing/shoes/orange, -/obj/item/clothing/shoes/orange, -/obj/item/clothing/shoes/orange, -/obj/item/clothing/shoes/orange, -/obj/item/clothing/under/color/orange, -/obj/item/clothing/under/color/orange, -/obj/item/clothing/under/color/orange, -/obj/item/clothing/under/color/orange, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/processing) +/area/almayer/living/briefing) "eVj" = ( /obj/structure/bed/chair/office/dark{ dir = 4 @@ -33908,30 +30058,47 @@ icon_state = "test_floor4" }, /area/almayer/living/briefing) -"eVy" = ( +"eVE" = ( /obj/structure/surface/table/almayer, -/obj/item/storage/beer_pack, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/obj/item/device/lightreplacer, +/obj/item/device/radio, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "eVQ" = ( /obj/structure/machinery/light{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/living/chapel) -"eVT" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/box/gloves{ - pixel_x = 5; - pixel_y = 8 +"eVR" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 18 }, -/obj/item/storage/box/masks{ - pixel_x = 5 +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 18 }, -/obj/item/tool/hand_labeler{ - pixel_x = -8; - pixel_y = 3 +/obj/structure/machinery/power/apc/almayer{ + dir = 8 + }, +/obj/structure/sign/safety/rewire{ + pixel_x = -17; + pixel_y = 17 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/shipboard/brig/evidence_storage) +"eVT" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 }, +/obj/structure/machinery/disposal, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, @@ -33945,6 +30112,9 @@ icon_state = "emeraldfull" }, /area/almayer/living/briefing) +"eWs" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/l_f_s) "eWF" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -33953,13 +30123,6 @@ icon_state = "test_floor4" }, /area/almayer/living/basketball) -"eWY" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "eXb" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -33973,10 +30136,14 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"eXo" = ( -/obj/structure/machinery/light/small, +"eXk" = ( +/obj/effect/landmark/late_join/working_joe, +/obj/effect/landmark/start/working_joe, +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/command/airoom) "eXq" = ( /turf/closed/wall/almayer, /area/almayer/living/offices/flight) @@ -33984,12 +30151,41 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/living/offices) -"eXE" = ( +"eXD" = ( +/obj/structure/prop/invuln/lattice_prop{ + dir = 1; + icon_state = "lattice-simple"; + pixel_x = 16; + pixel_y = -16 + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "green" + icon_state = "plate" }, -/area/almayer/hallways/port_hallway) +/area/almayer/maint/hull/lower/l_m_s) +"eYj" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/bed/chair/comfy/alpha{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"eYn" = ( +/obj/structure/filingcabinet/security, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"eYp" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Tool Closet" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_m_s) "eYr" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -34017,25 +30213,35 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"eYv" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 8 +"eYz" = ( +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/port_emb) -"eYC" = ( -/obj/structure/machinery/vending/cigarette, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"eYH" = ( -/obj/structure/platform{ - dir = 4 +/obj/structure/machinery/computer/working_joe{ + dir = 8; + pixel_x = 29 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"eYD" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 }, -/obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/engineering/lower) +"eYF" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, +/area/almayer/living/briefing) "eYM" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = 2; @@ -34055,10 +30261,15 @@ /obj/effect/landmark/start/synthetic, /turf/open/floor/almayer, /area/almayer/living/synthcloset) -"eYW" = ( -/obj/structure/filingcabinet/security, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +"eYR" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orangecorner" + }, +/area/almayer/engineering/upper_engineering/port) "eZi" = ( /obj/effect/projector{ name = "Almayer_Up4"; @@ -34069,38 +30280,55 @@ allow_construction = 0 }, /area/almayer/hallways/port_hallway) -"eZj" = ( -/obj/structure/closet/secure_closet/guncabinet, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" +"eZm" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/p_stern) +"eZo" = ( +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/area/almayer/shipboard/brig/main_office) -"eZz" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/reagent_dispensers/water_cooler/stacks{ + density = 0; + pixel_y = 17 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) +"eZp" = ( +/obj/structure/platform{ + dir = 4; + layer = 2.7 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 5; + icon_state = "plating" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/engineering/lower/engine_core) "eZH" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) -"eZQ" = ( +"fad" = ( +/obj/effect/step_trigger/clone_cleaner, /turf/open/floor/almayer{ - dir = 4; - icon_state = "red" + icon_state = "green" }, -/area/almayer/hull/upper_hull/u_a_p) -"eZX" = ( -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/hallways/aft_hallway) +"fag" = ( +/obj/effect/decal/cleanable/blood, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/execution) "fau" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/structure/disposalpipe/junction{ @@ -34109,10 +30337,41 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) +"faE" = ( +/obj/structure/bookcase{ + icon_state = "book-5"; + name = "law and engineering manuals bookcase"; + opacity = 0 + }, +/obj/item/book/manual/marine_law, +/obj/item/book/manual/detective, +/obj/item/book/manual/security_space_law, +/obj/item/book/manual/engineering_guide, +/obj/item/book/manual/engineering_construction, +/obj/item/book/manual/orbital_cannon_manual, +/obj/item/book/manual/ripley_build_and_repair, +/obj/item/book/manual/engineering_hacking, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "faO" = ( /obj/item/stack/cable_coil, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) +"faR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/prop/invuln/lattice_prop{ + dir = 1; + icon_state = "lattice-simple"; + pixel_x = -16; + pixel_y = 17 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "faX" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -34145,6 +30404,15 @@ icon_state = "plate" }, /area/almayer/squads/alpha) +"fbe" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "fbo" = ( /obj/structure/machinery/door_control{ id = "kitchen2"; @@ -34155,23 +30423,16 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) -"fbv" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/sign/safety/security{ - pixel_x = -17; - pixel_y = 6 - }, -/obj/structure/sign/safety/reception{ - pixel_x = -17; - pixel_y = -8 +"fbu" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, +/obj/structure/platform, /turf/open/floor/almayer{ - dir = 8; - icon_state = "silver" + dir = 5; + icon_state = "plating" }, -/area/almayer/shipboard/brig/cic_hallway) +/area/almayer/engineering/lower/engine_core) "fbw" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -34185,44 +30446,74 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"fbx" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) "fbB" = ( /obj/structure/pipes/standard/manifold/fourway/hidden/supply, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/medical/upper_medical) -"fbY" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 2; - id = "Execution Shutters"; - name = "\improper Privacy Shutters" +"fbC" = ( +/obj/structure/closet/toolcloset, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Brig Lockdown Shutters"; - name = "\improper Brig Lockdown Shutter" +/area/almayer/maint/hull/lower/l_m_s) +"fbH" = ( +/obj/structure/surface/table/almayer, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/item/fuelCell, +/turf/open/floor/almayer{ + icon_state = "cargo" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "perma_lockdown"; - name = "\improper Perma Lockdown Shutter" +/area/almayer/engineering/lower/engine_core) +"fbR" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 +/obj/structure/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) +"fca" = ( +/obj/structure/disposalpipe/segment{ + layer = 5.1; + name = "water pipe" }, /turf/open/floor/plating, -/area/almayer/shipboard/brig/execution) +/area/almayer/maint/lower/constr) "fcf" = ( /obj/structure/pipes/vents/pump{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"fco" = ( +/obj/structure/surface/rack, +/obj/item/device/radio{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/device/radio, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) "fcy" = ( -/turf/closed/wall/almayer/research/containment/wall/west, -/area/almayer/medical/containment/cell) +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/machinery/autolathe, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/hydroponics) "fcB" = ( /turf/open/floor/almayer{ dir = 8; @@ -34235,24 +30526,6 @@ icon_state = "bluecorner" }, /area/almayer/living/basketball) -"fcF" = ( -/obj/structure/surface/rack, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"fcG" = ( -/obj/structure/largecrate/random/case, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"fcI" = ( -/obj/structure/pipes/vents/scrubber{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engine_core) "fcM" = ( /obj/structure/machinery/camera/autoname/almayer{ name = "ship-grade camera" @@ -34270,20 +30543,34 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"fdj" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/pouch/tools/full, +"fcS" = ( /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "orange" }, -/area/almayer/hull/upper_hull/u_m_p) -"fdA" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = 32 +/area/almayer/engineering/lower) +"fcX" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/light{ + dir = 8 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) +/obj/structure/platform_decoration{ + dir = 1 + }, +/turf/open/floor/almayer/no_build{ + dir = 8; + icon_state = "silver" + }, +/area/almayer/command/airoom) +"fdx" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "fdE" = ( /obj/item/clothing/mask/rebreather/scarf, /obj/structure/closet/secure_closet/personal/cabinet{ @@ -34305,6 +30592,23 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lockerroom) +"fea" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) +"feb" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/shipboard/brig/execution) "feq" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -34317,29 +30621,20 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"feC" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "laddersoutheast"; - name = "\improper South East Ladders Shutters" - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/port_hallway) -"feD" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 +"feD" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 }, /turf/open/floor/almayer{ dir = 5; icon_state = "silver" }, /area/almayer/command/cichallway) +"feG" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "feI" = ( /obj/item/trash/cigbutt, /turf/open/floor/almayer, @@ -34364,6 +30659,55 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_two) +"ffg" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/perma) +"ffq" = ( +/obj/structure/surface/table/almayer, +/obj/item/clothing/head/hardhat{ + pixel_y = 15 + }, +/obj/item/clothing/head/hardhat/dblue{ + pixel_x = -7; + pixel_y = 10 + }, +/obj/item/clothing/head/hardhat{ + pixel_x = 4; + pixel_y = 7 + }, +/obj/item/clothing/head/hardhat/orange{ + pixel_x = 7; + pixel_y = -5 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"ffx" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/item/clothing/head/helmet/marine/tech/tanker, +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"ffE" = ( +/turf/open/floor/almayer/no_build{ + icon_state = "plating" + }, +/area/almayer/command/airoom) +"ffN" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "fgh" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -34390,16 +30734,6 @@ icon_state = "green" }, /area/almayer/squads/req) -"fgo" = ( -/obj/docking_port/stationary/escape_pod/north, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_p) -"fgx" = ( -/obj/structure/sign/poster{ - pixel_y = 32 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "fgE" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -34421,13 +30755,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"fgF" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "fgR" = ( /obj/structure/machinery/door/poddoor/almayer/open{ id = "Brig Lockdown Shutters"; @@ -34445,99 +30772,97 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/cells) +"fgU" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "fhf" = ( /obj/structure/surface/rack, /obj/item/storage/toolbox/mechanical, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering) -"fhA" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/surface/rack, -/obj/item/storage/belt/utility/full{ - pixel_y = 8 - }, -/obj/item/storage/belt/utility/full, -/obj/item/clothing/suit/storage/hazardvest/black, -/obj/item/tool/crowbar, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "fhH" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ icon_state = "mono" }, /area/almayer/engineering/upper_engineering/starboard) -"fhQ" = ( -/obj/structure/closet/secure_closet/freezer/fridge/full, -/obj/structure/machinery/light, -/obj/item/reagent_container/food/condiment/sugar, +"fie" = ( /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop) +"fix" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"fiE" = ( +/obj/structure/machinery/computer/cameras/containment/hidden{ + dir = 4; + pixel_x = -17 }, -/area/almayer/living/grunt_rnr) -"fiq" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_m_p) -"fir" = ( /obj/structure/surface/table/almayer, -/obj/item/tool/screwdriver, -/obj/item/tool/weldingtool, -/obj/item/tool/wrench, -/obj/item/tool/wirecutters, +/obj/item/storage/photo_album, +/obj/item/device/camera_film, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) +"fiN" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) +"fiQ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" + icon_state = "plate" }, -/area/almayer/engineering/engine_core) -"fjO" = ( -/obj/item/tool/wet_sign, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"fkn" = ( -/obj/structure/machinery/photocopier, +/area/almayer/engineering/lower) +"fjz" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "cargo" }, -/area/almayer/shipboard/brig/main_office) -"fkW" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/almayer/maint/hull/upper/u_f_p) +"fkK" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 }, -/obj/structure/surface/table/almayer, -/obj/item/toy/handcard/uno_reverse_red{ - pixel_x = 5; - pixel_y = 5 +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, -/obj/item/toy/deck/uno, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_s) +"fkO" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "green" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/hallways/port_hallway) "fkX" = ( /turf/closed/wall/almayer/research/containment/wall/corner{ dir = 8 }, /area/almayer/medical/containment/cell/cl) -"flE" = ( -/obj/structure/platform{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) -"flP" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" +"flr" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/maint/hull/lower/p_bow) "flW" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/light{ @@ -34549,49 +30874,48 @@ icon_state = "silver" }, /area/almayer/living/briefing) -"fmf" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/almayer/glass{ - dir = 2; - name = "\improper Requisitions Break Room"; - req_one_access = "2;21" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"fmv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "plate" +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, -/area/almayer/squads/req) +/area/almayer/command/airoom) "fmB" = ( /obj/structure/bed/chair/comfy{ dir = 8 }, -/turf/open/floor/almayer, -/area/almayer/living/pilotbunks) -"fmS" = ( -/obj/structure/closet/secure_closet/engineering_electrical, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "bluecorner" }, -/area/almayer/hull/lower_hull/l_f_s) -"fnl" = ( -/obj/structure/surface/rack, -/obj/item/clothing/suit/straight_jacket, -/obj/item/clothing/glasses/sunglasses/blindfold, -/obj/item/clothing/mask/muzzle, -/obj/structure/machinery/camera/autoname/almayer{ +/area/almayer/living/pilotbunks) +"fnv" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"fnx" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/door/window/eastright{ + access_modified = 1; dir = 8; - name = "ship-grade camera" + req_access_txt = "19" + }, +/obj/effect/landmark/map_item, +/obj/structure/machinery/door/window/eastleft{ + req_access_txt = "19" }, /turf/open/floor/almayer{ - dir = 4; - icon_state = "redcorner" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/execution) +/area/almayer/living/briefing) "fnA" = ( /obj/structure/surface/rack, /obj/item/tool/crowbar, @@ -34601,8 +30925,7 @@ dir = 8 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "redfull" }, /area/almayer/medical/upper_medical) "fnC" = ( @@ -34614,53 +30937,95 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) +"fnH" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "fnI" = ( /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/squads/req) -"fnQ" = ( -/obj/structure/toilet{ - dir = 1 +"foC" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/window/reinforced/tinted{ - dir = 8 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/obj/structure/machinery/door/window/tinted{ - dir = 1 +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/open/floor/prison{ - icon_state = "kitchen" +/area/almayer/engineering/lower/engine_core) +"foL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/area/almayer/engineering/upper_engineering/port) -"fnZ" = ( -/obj/structure/machinery/portable_atmospherics/canister/air, -/obj/structure/machinery/light/small{ +/obj/structure/machinery/light{ dir = 1 }, /turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_a_s) -"foI" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 + dir = 4; + icon_state = "emeraldcorner" }, +/area/almayer/squads/charlie) +"foN" = ( +/obj/structure/bed/chair, /turf/open/floor/almayer, -/area/almayer/command/lifeboat) -"fpd" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 +/area/almayer/living/tankerbunks) +"foP" = ( +/obj/structure/machinery/shower{ + pixel_y = 16 + }, +/obj/structure/machinery/door_control{ + id = "containmentlockdown_S"; + name = "Containment Lockdown"; + pixel_x = 29; + pixel_y = 3; + req_one_access_txt = "28" + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 80; + pixel_y = 6 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"fps" = ( -/obj/structure/machinery/chem_master/industry_mixer, +/area/almayer/medical/medical_science) +"foS" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, /turf/open/floor/almayer{ - icon_state = "orange" + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"fpi" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) +"fpA" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/area/almayer/engineering/engineering_workshop/hangar) +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "fpO" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -34677,6 +31042,12 @@ icon_state = "plate" }, /area/almayer/engineering/starboard_atmos) +"fpT" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/medical/medical_science) "fpW" = ( /obj/structure/sign/safety/bulkhead_door{ pixel_x = 32 @@ -34686,6 +31057,21 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) +"fqb" = ( +/obj/item/paper/prison_station/interrogation_log{ + pixel_x = 10; + pixel_y = 7 + }, +/obj/structure/largecrate/random/barrel/green, +/obj/item/limb/hand/l_hand{ + pixel_x = -5; + pixel_y = 14 + }, +/obj/effect/spawner/random/balaclavas, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "fqc" = ( /obj/structure/machinery/vending/cigarette, /obj/structure/machinery/light, @@ -34693,30 +31079,24 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) -"fqe" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/pen/blue/clicky{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/tool/pen/red/clicky{ - pixel_x = -1; - pixel_y = 1 +"fqC" = ( +/obj/structure/machinery/vending/cigarette, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/item/tool/pen/clicky{ - pixel_x = 1; - pixel_y = -1 +/area/almayer/engineering/lower/workshop) +"fqJ" = ( +/obj/structure/machinery/door_control{ + id = "safe_armory"; + name = "Hangar Armory Lockdown"; + pixel_y = 24; + req_access_txt = "4" }, -/obj/item/paper_bin/wy{ - pixel_x = -5; - pixel_y = 5 +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"fqu" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/shipboard/panic) "fqO" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -34724,6 +31104,12 @@ /obj/structure/surface/table/reinforced/black, /turf/open/floor/carpet, /area/almayer/command/cichallway) +"fqW" = ( +/obj/structure/machinery/recharge_station, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "fqZ" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -34735,6 +31121,23 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"frb" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 + }, +/obj/item/tool/kitchen/tray{ + pixel_y = 9 + }, +/obj/item/reagent_container/food/snacks/sliceable/pizza/vegetablepizza{ + pixel_y = 8 + }, +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, +/area/almayer/living/briefing) "frl" = ( /turf/open/floor/almayer{ dir = 4; @@ -34758,29 +31161,36 @@ icon_state = "red" }, /area/almayer/shipboard/starboard_missiles) -"frJ" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/ammo_magazine/shotgun, -/obj/item/ammo_magazine/shotgun, -/obj/item/ammo_magazine/shotgun, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/weapon/gun/shotgun/combat, +"frM" = ( /obj/effect/decal/warning_stripes{ - icon_state = "S" + icon_state = "S"; + layer = 3.3 }, -/obj/structure/sign/safety/ammunition{ - pixel_x = 15; - pixel_y = 32 +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 }, -/obj/structure/sign/safety/hazard{ - pixel_y = 32 +/turf/open/floor/almayer/no_build{ + icon_state = "tcomms" }, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) +/area/almayer/command/airoom) +"frV" = ( +/obj/structure/toilet{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) +"frX" = ( +/obj/structure/machinery/optable, +/obj/structure/sign/safety/medical{ + pixel_x = 8; + pixel_y = 29 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_corner" + }, +/area/almayer/shipboard/brig/surgery) "fsd" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -34790,19 +31200,6 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) -"fso" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ - name = "\improper Cryogenics Bay"; - req_access = null; - req_one_access_txt = "1;3" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/cryo) "fsp" = ( /obj/structure/barricade/handrail{ dir = 1; @@ -34813,38 +31210,30 @@ icon_state = "plate" }, /area/almayer/living/gym) -"fsz" = ( -/obj/structure/machinery/firealarm{ - dir = 1; - pixel_y = -28 - }, -/obj/structure/surface/table/almayer, -/obj/item/storage/box/flashbangs, -/obj/item/storage/box/flashbangs{ - pixel_x = 5; - pixel_y = 9 - }, -/obj/item/storage/box/flashbangs{ - pixel_x = -8; - pixel_y = 5 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/armory) "fsH" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/machinery/firealarm{ + pixel_y = 28 }, /turf/open/floor/almayer{ dir = 1; icon_state = "green" }, /area/almayer/hallways/port_hallway) -"fsT" = ( +"fsR" = ( +/obj/structure/pipes/vents/pump{ + dir = 8; + id_tag = "mining_outpost_pump" + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop) +"fsU" = ( +/obj/structure/machinery/floodlight/landing{ + name = "bolted floodlight" + }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "mono" }, -/area/almayer/shipboard/brig/armory) +/area/almayer/lifeboat_pumps/north1) "fsV" = ( /obj/structure/target, /turf/open/floor/almayer{ @@ -34864,22 +31253,20 @@ icon_state = "mono" }, /area/almayer/hallways/vehiclehangar) -"ftl" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) +"ftx" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/port_hallway) "ftG" = ( -/obj/structure/machinery/light{ - dir = 1 +/obj/structure/sign/safety/life_support{ + pixel_x = 8; + pixel_y = 32 }, -/obj/structure/machinery/cm_vending/clothing/medical_crew, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + icon_state = "plate" }, -/area/almayer/medical/medical_science) +/area/almayer/maint/hull/upper/u_a_s) "fut" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -34891,19 +31278,11 @@ }, /area/almayer/hallways/vehiclehangar) "fuz" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/structure/window/reinforced/tinted/frosted, +/obj/structure/machinery/cm_vending/clothing/pilot_officer, /turf/open/floor/almayer{ - icon_state = "sterile" + icon_state = "plate" }, /area/almayer/living/pilotbunks) -"fuB" = ( -/obj/structure/machinery/light/small, -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "fuS" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -34924,15 +31303,21 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) -"fuX" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/almayer/locked{ - dir = 8; - id = "Perma 2L"; - name = "\improper cell shutter" +"fva" = ( +/obj/structure/machinery/light{ + dir = 1 }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/perma) +/obj/structure/bed/chair/comfy/bravo{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/deployable{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "fvd" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ @@ -34946,12 +31331,27 @@ icon_state = "silver" }, /area/almayer/living/briefing) -"fvu" = ( -/obj/item/tool/crowbar, +"fvo" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/clothing/glasses/welding{ + pixel_x = 8; + pixel_y = 3 + }, +/obj/item/tool/weldingtool{ + pixel_x = -11; + pixel_y = 5 + }, +/obj/structure/machinery/light/small{ + dir = 1 + }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/maint/hull/upper/u_a_p) +"fvA" = ( +/obj/structure/closet/secure_closet/brig, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/perma) "fvB" = ( /obj/structure/closet/secure_closet/staff_officer/armory/m4a1, /turf/open/floor/almayer{ @@ -34959,7 +31359,7 @@ }, /area/almayer/command/cic) "fvJ" = ( -/obj/structure/machinery/cm_vending/sorted/medical, +/obj/structure/machinery/cm_vending/sorted/medical/bolted, /turf/open/floor/almayer{ dir = 1; icon_state = "sterile_green_side" @@ -34983,50 +31383,39 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/port_point_defense) "fwD" = ( -/obj/structure/surface/table/almayer, -/obj/item/trash/plate{ +/obj/item/reagent_container/food/snacks/grown/poppy{ pixel_x = 4; - pixel_y = 9 + pixel_y = 4 }, +/obj/effect/step_trigger/message/memorial, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/south1) -"fwF" = ( -/obj/structure/largecrate/random/case/double, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 8; - name = "ship-grade camera" +/area/almayer/living/starboard_garden) +"fwM" = ( +/obj/structure/surface/table/almayer, +/obj/item/paper, +/obj/item/tool/pen{ + pixel_x = -5; + pixel_y = 2 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "redfull" + }, +/area/almayer/living/briefing) +"fwP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light/small{ + dir = 4 }, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/u_m_s) "fwY" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie_delta_shared) -"fxu" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8 - }, -/turf/closed/wall/almayer, -/area/almayer/engineering/lower_engineering) -"fxz" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/effect/landmark/yautja_teleport, -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "fxI" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -35041,34 +31430,13 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) -"fxO" = ( -/obj/structure/machinery/vending/coffee{ - density = 0; - pixel_y = 18 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) -"fxW" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"fxY" = ( -/obj/structure/machinery/iv_drip, -/obj/structure/machinery/camera/autoname/almayer/containment{ - dir = 1; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" - }, -/area/almayer/medical/containment) +"fxJ" = ( +/obj/structure/closet/secure_closet/guncabinet/riot_control, +/obj/item/weapon/shield/riot, +/obj/item/weapon/shield/riot, +/obj/item/weapon/shield/riot, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/armory) "fxZ" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -35090,6 +31458,23 @@ icon_state = "plate" }, /area/almayer/shipboard/weapon_room) +"fyd" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 1" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) +"fyp" = ( +/obj/structure/machinery/cryopod{ + layer = 3.1; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/shipboard/brig/cryo) "fyD" = ( /obj/structure/machinery/light, /obj/structure/ladder{ @@ -35098,6 +31483,24 @@ }, /turf/open/floor/plating/almayer, /area/almayer/living/briefing) +"fyT" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 2; + id = "CIC Lockdown"; + layer = 2.2; + name = "\improper Combat Information Center Blast Door" + }, +/obj/structure/machinery/door/airlock/almayer/engineering/reinforced{ + dir = 1; + name = "\improper Command Power Substation" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/mess) "fzq" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -35110,6 +31513,18 @@ icon_state = "test_floor4" }, /area/almayer/squads/charlie) +"fzx" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "fzP" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, @@ -35126,11 +31541,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/ce_room) +"fzT" = ( +/obj/structure/surface/rack, +/obj/item/tool/wirecutters, +/obj/item/tool/shovel/snow, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "fAa" = ( /obj/structure/surface/table/almayer, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /obj/structure/machinery/light{ dir = 1 }, @@ -35145,48 +31565,24 @@ icon_state = "red" }, /area/almayer/living/offices/flight) -"fAo" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/light, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"fAt" = ( -/obj/structure/largecrate/guns/merc{ - name = "\improper dodgy crate" - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"fAS" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, +"fAr" = ( +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/armory) +"fAE" = ( +/obj/structure/closet/firecloset/full, /turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"fBf" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 + icon_state = "cargo" }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/area/almayer/shipboard/brig/main_office) +"fBo" = ( +/obj/structure/machinery/light/small{ + dir = 4 }, -/area/almayer/hull/upper_hull/u_a_s) -"fBx" = ( -/obj/structure/closet/firecloset, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hallways/port_hallway) -"fBA" = ( -/obj/item/device/assembly/mousetrap/armed, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/living/port_emb) +/area/almayer/maint/hull/lower/l_a_s) "fBD" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -35208,11 +31604,30 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) "fBO" = ( +/obj/structure/machinery/chem_master{ + vial_maker = 1 + }, +/obj/item/clothing/glasses/science{ + pixel_x = 1; + pixel_y = 8 + }, /turf/open/floor/almayer{ - dir = 6; - icon_state = "sterile_green_side" + icon_state = "mono" }, -/area/almayer/medical/containment) +/area/almayer/medical/medical_science) +"fCi" = ( +/obj/structure/surface/table/almayer, +/obj/item/organ/lungs/prosthetic, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) +"fCp" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/lifeboat) "fCL" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -35241,15 +31656,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) -"fDn" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = -25 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/shipboard/brig/armory) "fDG" = ( /obj/structure/machinery/vending/coffee, /obj/structure/machinery/light{ @@ -35298,45 +31704,37 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) -"fEg" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 15" - }, -/obj/structure/machinery/light{ - dir = 8 - }, +"fEe" = ( +/obj/structure/machinery/pipedispenser, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/engineering/engine_core) +/area/almayer/engineering/lower) "fEk" = ( /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/command/cichallway) -"fEo" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "Kitchen"; - req_one_access_txt = "30;19" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, +"fEC" = ( +/obj/structure/machinery/power/apc/almayer, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/living/grunt_rnr) +/area/almayer/medical/morgue) +"fEN" = ( +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 4 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "fER" = ( /obj/structure/machinery/autolathe, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/hallways/hangar) -"fEV" = ( -/obj/structure/sign/safety/restrictedarea{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "fFe" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 @@ -35352,17 +31750,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) -"fFz" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "Secretroom"; - indestructible = 1; - unacidable = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_m_p) "fFD" = ( /obj/structure/window/reinforced{ dir = 4; @@ -35398,61 +31785,79 @@ icon_state = "plate" }, /area/almayer/medical/morgue) +"fFQ" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/spray/cleaner{ + pixel_x = 7; + pixel_y = 14 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_s) +"fFU" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) +"fGa" = ( +/obj/structure/surface/rack, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/numbertwobunks) "fGg" = ( /obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"fGi" = ( +/obj/effect/spawner/random/toolbox, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "fGu" = ( -/obj/structure/machinery/firealarm{ - dir = 8; - pixel_x = -24 +/obj/structure/machinery/door_control{ + dir = 1; + id = "researchlockdownext"; + name = "Window Shutters"; + pixel_x = -26; + pixel_y = 6; + req_access_txt = "28" }, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" +/obj/structure/machinery/door_control{ + dir = 1; + id = "researchlockdownext_door"; + name = "Door Shutters"; + pixel_x = -26; + pixel_y = 1; + req_access_txt = "28" }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 +/obj/structure/disposalpipe/junction{ + dir = 2; + icon_state = "pipe-j2" }, /turf/open/floor/almayer{ dir = 8; icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"fGN" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) -"fGY" = ( -/obj/structure/machinery/door_control{ - id = "panicroomback"; - name = "\improper Safe Room"; - pixel_x = 25; - req_one_access_txt = "3" - }, +"fGB" = ( +/obj/structure/largecrate/random/case/small, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) -"fHc" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/head/hardhat{ - pixel_x = 10; - pixel_y = 1 - }, -/obj/item/clothing/suit/storage/hazardvest{ - pixel_x = -8; - pixel_y = 6 - }, -/obj/item/clothing/suit/storage/hazardvest/yellow, -/obj/item/clothing/suit/storage/hazardvest{ - pixel_x = 8; - pixel_y = 7 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_a_s) +"fHb" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "fHh" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -35470,59 +31875,15 @@ icon_state = "plate" }, /area/almayer/living/gym) -"fHC" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "fHF" = ( /turf/open/floor/almayer{ icon_state = "greenfull" }, /area/almayer/living/offices) -"fHO" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) -"fHS" = ( -/obj/structure/sign/safety/rewire{ - pixel_y = -32 - }, -/obj/structure/machinery/door_control{ - id = "perma_lockdown"; - name = "\improper Perma Cells Lockdown"; - pixel_x = 6; - pixel_y = -24; - req_access_txt = "3" - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/processing) -"fIf" = ( -/obj/structure/sign/safety/bulkhead_door{ - pixel_x = 8; - pixel_y = -32 - }, +"fHM" = ( +/obj/docking_port/stationary/escape_pod/cl, /turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"fIx" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) -"fIH" = ( -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/u_m_p) "fIM" = ( /obj/effect/landmark/start/marine/tl/bravo, /obj/effect/landmark/late_join/bravo, @@ -35530,6 +31891,7 @@ /area/almayer/squads/bravo) "fIX" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/almayer{ + access_modified = 1; name = "\improper Requisitions Auxiliary Storage Room"; req_one_access = "19;21" }, @@ -35559,6 +31921,16 @@ icon_state = "plate" }, /area/almayer/command/cichallway) +"fJp" = ( +/obj/structure/girder, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"fJu" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/p_bow) "fJy" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/toy/deck{ @@ -35567,18 +31939,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/pilotbunks) -"fJA" = ( -/obj/structure/coatrack, -/obj/structure/sign/poster/clf{ - pixel_x = -28 - }, -/obj/structure/sign/nosmoking_1{ - pixel_y = 30 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "fJO" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -35605,31 +31965,37 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) -"fJX" = ( -/obj/structure/disposalpipe/segment{ +"fJY" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = -32 +/turf/open/floor/almayer/no_build{ + dir = 8; + icon_state = "cargo_arrow" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"fKg" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) -"fKl" = ( -/obj/structure/surface/rack, -/obj/item/tool/shovel/etool{ - pixel_x = 6 +/area/almayer/command/airoom) +"fKe" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "tcomms" + }, +/area/almayer/command/airoom) +"fKh" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/quarter/window, +/turf/open/floor/plating, +/area/almayer/command/corporateliaison) +"fKi" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 4 }, -/obj/item/tool/shovel/etool, -/obj/item/tool/wirecutters, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/shipboard/brig/chief_mp_office) "fKt" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/structure/prop/dam/crane{ @@ -35646,6 +32012,25 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"fKw" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "courtyard_cells"; + name = "\improper Courtyard Lockdown Shutter" + }, +/obj/structure/machinery/door/poddoor/almayer/locked{ + id = "Cell 5"; + name = "\improper Courtyard Divider" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/cells) "fKT" = ( /obj/structure/machinery/vending/coffee, /obj/structure/sign/safety/coffee{ @@ -35685,25 +32070,110 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) -"fLn" = ( +"fLi" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) +"fLl" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/s_stern) +"fLt" = ( /obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"fLu" = ( +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, +/obj/structure/machinery/computer/general_air_control/large_tank_control{ + name = "Lower Oxygen Supply Console" + }, +/obj/structure/pipes/standard/simple/hidden/universal{ dir = 4 }, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/general_equipment) -"fLX" = ( +/area/almayer/engineering/lower) +"fLv" = ( /obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 + icon_state = "SW-out" }, -/obj/structure/sign/safety/life_support{ - pixel_x = 8; - pixel_y = -32 +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) +/area/almayer/shipboard/stern_point_defense) +"fLF" = ( +/obj/structure/machinery/brig_cell/perma_2{ + pixel_x = -32 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/perma) +"fMe" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + pixel_x = 15 + }, +/obj/item/paper, +/obj/item/reagent_container/food/drinks/cans/waterbottle{ + pixel_x = -10; + pixel_y = 4 + }, +/turf/open/floor/almayer{ + icon_state = "bluefull" + }, +/area/almayer/living/briefing) +"fMl" = ( +/obj/structure/machinery/door_control{ + id = "ARES Operations Right"; + name = "ARES Operations Shutter"; + pixel_x = 24; + pixel_y = -8; + req_one_access_txt = "90;91;92" + }, +/turf/open/floor/almayer/no_build{ + dir = 4; + icon_state = "silver" + }, +/area/almayer/command/airoom) +"fMt" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES Interior"; + name = "\improper ARES Inner Chamber Shutters"; + plane = -7 + }, +/obj/effect/step_trigger/ares_alert/core, +/obj/structure/machinery/door/poddoor/almayer/blended/white/open{ + closed_layer = 3.2; + id = "ARES Emergency"; + layer = 3.2; + name = "ARES Emergency Lockdown"; + needs_power = 0; + open_layer = 1.9; + plane = -7 + }, +/obj/structure/sign/safety/laser{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/safety/rewire{ + pixel_x = 32; + pixel_y = 6 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "fMA" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out" @@ -35717,17 +32187,19 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"fNb" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/machinery/computer/card{ +"fMU" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) -"fNg" = ( -/obj/structure/largecrate/random/barrel/yellow, +/obj/structure/sign/safety/east{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/coffee{ + pixel_y = 32 + }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/upper/u_f_p) "fNi" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -35743,15 +32215,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"fNA" = ( -/obj/structure/closet/fireaxecabinet{ - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/general_equipment) "fNC" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/structure/disposalpipe/junction{ @@ -35765,6 +32228,15 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"fOv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "fOz" = ( /obj/structure/target{ name = "punching bag" @@ -35781,6 +32253,15 @@ icon_state = "orangecorner" }, /area/almayer/engineering/upper_engineering) +"fOK" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/camera, +/obj/item/device/camera_film, +/obj/item/device/camera_film, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_s) "fOL" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -35840,10 +32321,42 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"fQk" = ( -/obj/structure/largecrate/random, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +"fPB" = ( +/obj/structure/machinery/ares/processor/apollo, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) +"fPF" = ( +/obj/structure/closet/crate/trashcart, +/obj/item/clothing/gloves/yellow, +/obj/item/device/multitool, +/obj/item/tool/screwdriver{ + icon_state = "screwdriver7" + }, +/obj/item/tool/crowbar/red, +/obj/item/book/manual/engineering_hacking, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"fQl" = ( +/obj/structure/largecrate/supply/supplies/flares, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) +"fQn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "fQu" = ( /obj/structure/machinery/door/poddoor/shutters/almayer/open{ id = "CMO Shutters"; @@ -35855,28 +32368,38 @@ }, /turf/open/floor/plating, /area/almayer/medical/upper_medical) -"fQF" = ( -/obj/structure/surface/rack, -/obj/item/storage/bag/plasticbag, -/obj/item/storage/firstaid/regular, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"fQK" = ( -/obj/effect/step_trigger/clone_cleaner, -/turf/closed/wall/almayer, -/area/almayer/hull/upper_hull/u_m_p) -"fQS" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ +"fQy" = ( +/obj/structure/machinery/light/small{ dir = 8 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) -"fRr" = ( -/obj/structure/machinery/light{ - dir = 1 - }, +/area/almayer/maint/hull/lower/l_f_s) +"fQS" = ( +/obj/structure/bed/chair/comfy/orange, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) +"fRg" = ( +/obj/structure/closet/emcloset, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/upper/u_f_s) +"fRr" = ( +/obj/structure/machinery/light{ + dir = 1 + }, /turf/open/floor/almayer{ dir = 10; icon_state = "blue" @@ -35888,13 +32411,14 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"fRN" = ( -/obj/structure/sign/safety/restrictedarea{ - pixel_x = 8; - pixel_y = 32 +"fRS" = ( +/obj/effect/landmark/start/warden, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cryo) "fSl" = ( /obj/structure/machinery/line_nexter{ id = "line2"; @@ -35908,63 +32432,51 @@ /obj/structure/sign/safety/storage{ pixel_x = -17 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "red" + }, /area/almayer/lifeboat_pumps/north1) "fSF" = ( -/obj/structure/sink{ - dir = 1; - pixel_y = -10 - }, -/obj/structure/pipes/vents/scrubber{ - dir = 1 - }, -/obj/structure/surface/rack{ - density = 0; - pixel_x = 26 +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight, +/obj/item/storage/firstaid/rad, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" }, -/obj/structure/bedsheetbin{ - pixel_x = 26; - pixel_y = 5 +/area/almayer/engineering/lower) +"fSK" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/item/tool/soap/syndie, -/turf/open/floor/almayer, -/area/almayer/living/port_emb) -"fSG" = ( -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/starboard_hallway) +"fTj" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/turf/open/floor/almayer, -/area/almayer/living/grunt_rnr) -"fTi" = ( -/obj/structure/largecrate/supply/floodlights, /turf/open/floor/almayer{ dir = 6; icon_state = "red" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/hallways/upper/starboard) +"fTl" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/u_a_s) "fTm" = ( /obj/structure/bed/chair/office/dark, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"fTu" = ( -/turf/closed/wall/almayer/reinforced, -/area/almayer/hull/lower_hull/l_f_p) -"fTx" = ( +"fTt" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/processing) "fTF" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 2; @@ -35974,12 +32486,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/laundry) -"fTR" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "fTU" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -35993,24 +32499,58 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) -"fUn" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" - }, -/obj/structure/sign/poster{ - desc = "A large piece of cheap printed paper. This one proudly demands that you REMEMBER IO!"; - icon_state = "poster14"; - name = "propaganda poster"; - pixel_y = 32 +"fUz" = ( +/obj/structure/surface/rack, +/obj/item/storage/box/cups{ + pixel_x = 4; + pixel_y = 9 }, -/obj/structure/sign/safety/escapepod{ - pixel_x = -17 +/obj/item/storage/box/cups, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/area/almayer/maint/hull/lower/s_bow) "fUA" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) +"fUB" = ( +/obj/structure/closet/secure_closet/fridge/organic/stock, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/grunt_rnr) +"fUC" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"fUZ" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"fVa" = ( +/obj/item/stack/catwalk, +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_a_p) +"fVe" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/u_a_p) +"fVo" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop) "fVz" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -36023,6 +32563,15 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"fVF" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_10" + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "fVG" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -36031,27 +32580,26 @@ icon_state = "dark_sterile" }, /area/almayer/medical/chemistry) -"fWT" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - dir = 2; - name = "\improper Engineering Workshop" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +"fWg" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/engineering/engineering_workshop) -"fXd" = ( -/obj/structure/machinery/light/small{ - dir = 4 +/area/almayer/maint/hull/lower/p_bow) +"fWi" = ( +/obj/structure/toilet{ + dir = 1 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/window/reinforced/tinted{ + dir = 8 }, -/area/almayer/hull/lower_hull/l_a_p) +/obj/structure/machinery/door/window/tinted{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/port) "fXg" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -36081,12 +32629,12 @@ /area/almayer/hallways/aft_hallway) "fXE" = ( /obj/structure/surface/table/almayer, -/obj/item/paper_bin/uscm{ - pixel_y = 6 +/obj/structure/machinery/computer/emails{ + pixel_x = 2; + pixel_y = 5 }, -/obj/item/tool/pen{ - pixel_x = 4; - pixel_y = -4 +/obj/structure/machinery/light/small{ + dir = 1 }, /turf/open/floor/almayer{ icon_state = "plate" @@ -36097,24 +32645,28 @@ /obj/effect/landmark/late_join/delta, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) +"fXP" = ( +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "silver" + }, +/area/almayer/command/cichallway) +"fXZ" = ( +/obj/docking_port/stationary/emergency_response/port3, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "fYb" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) -"fYc" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "fYf" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -36122,40 +32674,47 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cichallway) -"fYn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 +"fYr" = ( +/obj/structure/surface/rack, +/obj/item/device/radio{ + pixel_x = 5; + pixel_y = 4 }, +/obj/item/device/radio, /turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" + icon_state = "plate" }, -/area/almayer/shipboard/brig/processing) -"fYG" = ( +/area/almayer/maint/hull/upper/u_f_s) +"fYZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/squads/req) +"fZl" = ( /turf/open/floor/almayer{ - dir = 10; icon_state = "orange" }, -/area/almayer/engineering/engine_core) -"fYX" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/secure_data{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "redcorner" +/area/almayer/engineering/lower/engine_core) +"fZo" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 }, -/area/almayer/shipboard/brig/chief_mp_office) -"fYZ" = ( /obj/effect/decal/warning_stripes{ - icon_state = "W" + icon_state = "SE-out"; + pixel_x = 2 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/squads/req) +/area/almayer/hallways/upper/starboard) +"fZq" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/cic_hallway) "fZx" = ( /obj/structure/sign/safety/security{ pixel_x = 15; @@ -36168,32 +32727,87 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) -"fZF" = ( -/obj/structure/largecrate/random/secure, +"fZy" = ( +/obj/structure/sign/poster{ + pixel_y = -32 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"fZA" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 9 + }, +/obj/structure/machinery/meter, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower) +"fZG" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"fZI" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/obj/item/reagent_container/glass/bucket/mopbucket{ + pixel_x = 7; + pixel_y = -3 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/maint/hull/upper/u_a_p) +"fZR" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) +"fZX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/execution) "fZZ" = ( /obj/effect/landmark/start/marine/medic/bravo, /obj/effect/landmark/late_join/bravo, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/bravo) -"gai" = ( -/obj/structure/closet/firecloset, +"gac" = ( +/obj/structure/machinery/door/airlock/almayer/security{ + access_modified = 1; + name = "\improper Security Checkpoint"; + req_access = null; + req_one_access_txt = "3;19" + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" + }, +/area/almayer/living/briefing) +"gax" = ( +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/shipboard/brig/main_office) "gaJ" = ( /turf/closed/wall/almayer, /area/almayer/shipboard/brig/cryo) -"gaO" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "gaQ" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -36208,39 +32822,94 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"gbQ" = ( -/obj/structure/toilet{ - dir = 8 +"gba" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/faxmachine/uscm/command{ + department = "AI Core"; + pixel_y = 8 }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" +/obj/structure/transmitter/rotary{ + name = "AI Core Telephone"; + phone_category = "ARES"; + phone_color = "blue"; + phone_id = "AI Core"; + pixel_x = 8; + pixel_y = -8 }, -/area/almayer/command/corporateliason) -"gbX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 +/area/almayer/command/airoom) +"gbg" = ( +/obj/structure/sign/safety/terminal{ + pixel_x = 14; + pixel_y = 24 + }, +/obj/structure/sign/safety/laser{ + pixel_y = 24 + }, +/obj/structure/sign/safety/fibre_optics{ + pixel_x = 14; + pixel_y = 38 + }, +/obj/structure/sign/safety/rewire{ + pixel_y = 38 + }, +/obj/structure/machinery/door_control{ + id = "ARES Operations Right"; + name = "ARES Operations Shutter"; + pixel_x = -24; + pixel_y = -8; + req_one_access_txt = "90;91;92" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"gbs" = ( +/obj/structure/surface/table/reinforced/black, +/obj/item/ashtray/plastic{ + icon_state = "ashtray_full_bl"; + pixel_x = 5; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) +"gbw" = ( +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" }, -/turf/open/floor/almayer, /area/almayer/shipboard/brig/processing) -"gcK" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"gcm" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 +/area/almayer/hallways/upper/port) +"gcq" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/starboard) "gcN" = ( /obj/structure/machinery/door/airlock/almayer/command{ + access_modified = 1; name = "\improper Senior Enlisted Advisor's Office"; req_access = null; req_access_txt = "19;29" @@ -36255,15 +32924,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"gdd" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "gde" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -36274,20 +32934,6 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"gdi" = ( -/obj/item/tool/wet_sign, -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"gdo" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/general_equipment) "gdp" = ( /obj/structure/bed/chair{ dir = 4 @@ -36306,6 +32952,12 @@ icon_state = "silvercorner" }, /area/almayer/hallways/repair_bay) +"gdJ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "gdS" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -36336,9 +32988,34 @@ "gel" = ( /turf/closed/wall/almayer/research/containment/wall/west, /area/almayer/medical/containment/cell/cl) +"gen" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + layer = 3.1; + pixel_x = 7; + pixel_y = 10 + }, +/obj/item/paper_bin/uscm, +/obj/item/tool/pen, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "ger" = ( -/obj/structure/machinery/chem_master{ - vial_maker = 1 +/obj/structure/surface/table/almayer, +/obj/item/paper_bin/wy{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/tool/pen{ + pixel_x = 8 + }, +/obj/item/clipboard{ + pixel_x = -8 + }, +/obj/item/folder/white{ + pixel_x = -8 }, /turf/open/floor/almayer{ icon_state = "dark_sterile" @@ -36353,59 +33030,6 @@ icon_state = "orangecorner" }, /area/almayer/hallways/stern_hallway) -"geW" = ( -/obj/structure/sign/prop1{ - pixel_y = 32 - }, -/obj/item/storage/fancy/cigar, -/obj/item/reagent_container/food/drinks/bottle/sake{ - layer = 3.6; - pixel_x = 9; - pixel_y = 16 - }, -/obj/item/reagent_container/food/drinks/bottle/sake{ - layer = 3.6; - pixel_y = 16 - }, -/obj/item/reagent_container/food/drinks/bottle/sake{ - layer = 3.6; - pixel_x = -9; - pixel_y = 16 - }, -/obj/structure/surface/table/woodentable/fancy, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"geX" = ( -/obj/structure/pipes/vents/scrubber, -/obj/structure/sign/safety/ammunition{ - pixel_x = 15; - pixel_y = 32 - }, -/obj/structure/sign/safety/hazard{ - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/general_equipment) -"gfh" = ( -/obj/structure/closet/crate/freezer{ - desc = "A freezer crate. There is a note attached, it reads: Do not open, property of Pvt. Mendoza." - }, -/obj/item/storage/beer_pack, -/obj/item/reagent_container/food/drinks/cans/beer, -/obj/item/reagent_container/food/drinks/cans/beer, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"gfk" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "gfo" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 1; @@ -36413,20 +33037,46 @@ }, /turf/open/floor/almayer, /area/almayer/squads/delta) -"gfE" = ( -/obj/structure/machinery/light{ - dir = 4 - }, +"gfq" = ( +/obj/structure/closet/secure_closet/fridge/groceries, /turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/grunt_rnr) +"gfu" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/turf/open/floor/almayer/no_build{ icon_state = "tcomms" }, /area/almayer/command/airoom) -"gfS" = ( -/obj/structure/sign/safety/cryo{ - pixel_y = -26 +"gfE" = ( +/obj/structure/machinery/recharge_station, +/turf/open/floor/plating, +/area/almayer/command/airoom) +"gfG" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/engineering/lower/workshop) +"gfN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "gfW" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/lockerroom) @@ -36436,9 +33086,18 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"ggt" = ( +"ggl" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/structure/machinery/light{ + dir = 1 + }, /turf/open/floor/almayer{ - dir = 5; + icon_state = "mono" + }, +/area/almayer/medical/medical_science) +"ggt" = ( +/turf/open/floor/almayer{ + dir = 5; icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) @@ -36448,6 +33107,10 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_four) +"ggD" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) "ggJ" = ( /obj/structure/machinery/door_control{ dir = 1; @@ -36465,6 +33128,30 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/engineering/airmix) +"ggS" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/bed/chair/bolted, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/perma) +"ghA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/surface/table/almayer, +/obj/item/toy/handcard/uno_reverse_red{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/toy/deck/uno, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "ghD" = ( /obj/structure/sign/safety/autoopenclose{ pixel_x = 7; @@ -36473,20 +33160,13 @@ /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) "ghX" = ( -/obj/structure/window/reinforced/tinted{ - pixel_y = -8 - }, -/obj/structure/machinery/shower{ - dir = 8 - }, -/obj/structure/machinery/door/window/tinted{ - dir = 8 +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 14" }, -/obj/item/toy/inflatable_duck, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/cells) +/area/almayer/engineering/lower/engine_core) "gio" = ( /obj/structure/closet/emcloset, /obj/structure/sign/safety/restrictedarea{ @@ -36508,9 +33188,6 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"gir" = ( -/turf/closed/wall/almayer/reinforced, -/area/almayer/engineering/engineering_workshop) "giB" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -36520,19 +33197,19 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"giZ" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 +"giR" = ( +/obj/structure/machinery/status_display{ + pixel_y = -30 }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails{ + dir = 4 }, -/obj/effect/landmark/start/warden, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 10; + icon_state = "silver" }, -/area/almayer/shipboard/brig/cryo) +/area/almayer/shipboard/brig/cic_hallway) "gjm" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -36570,17 +33247,25 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) -"gjv" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/toolbox, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "gjw" = ( -/obj/structure/blocker/invisible_wall, -/turf/open/floor/almayer{ +/obj/structure/machinery/faxmachine/uscm/command{ + density = 0; + department = "AI Core"; + pixel_y = 32 + }, +/obj/structure/surface/rack{ + density = 0; + pixel_y = 16 + }, +/obj/structure/machinery/computer/working_joe{ + dir = 8; + pixel_x = 17; + pixel_y = -6 + }, +/obj/item/storage/box/ids{ + pixel_x = -4 + }, +/turf/open/floor/almayer/no_build{ icon_state = "ai_floors" }, /area/almayer/command/airoom) @@ -36601,44 +33286,20 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_medbay) -"gjL" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/crew/alt, -/obj/structure/transmitter/rotary{ - name = "Brig Cells Telephone"; - phone_category = "Almayer"; - phone_id = "Brig Cells"; - pixel_x = 15 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/processing) -"gjN" = ( -/obj/effect/landmark/yautja_teleport, +"gkr" = ( /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_s) -"gka" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/hull/lower_hull/l_f_s) -"gkg" = ( +/area/almayer/maint/hull/upper/s_bow) +"gkE" = ( /obj/structure/disposalpipe/segment{ dir = 4; icon_state = "pipe-c" }, -/turf/closed/wall/almayer, -/area/almayer/squads/req) -"gks" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/mess) "gkK" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/surface/table/reinforced/almayer_B, @@ -36655,17 +33316,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) -"glr" = ( -/obj/item/tool/warning_cone{ - pixel_x = -20; - pixel_y = 18 - }, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice12"; - pixel_y = -16 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "gls" = ( /obj/structure/filingcabinet/filingcabinet, /obj/item/clipboard, @@ -36678,25 +33328,56 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_medbay) -"glM" = ( -/obj/structure/window/reinforced{ - dir = 8; - health = 80 +"glB" = ( +/obj/structure/sign/safety/chem_lab{ + pixel_x = 5; + pixel_y = 29 }, +/obj/structure/machinery/chem_master, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "mono" }, -/area/almayer/hull/lower_hull/l_m_p) -"glU" = ( -/obj/structure/bed/chair/office/dark, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) +/area/almayer/medical/medical_science) +"glH" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 2; + name = "\improper Engineering Workshop" + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/workshop) +"gmb" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + access_modified = 1; + dir = 1; + name = "Storage"; + req_one_access_txt = "19;21" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/squads/req) "gmj" = ( /obj/structure/machinery/portable_atmospherics/canister/air, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/shipboard/starboard_point_defense) +"gms" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "gnu" = ( /obj/structure/surface/table/almayer, /obj/item/facepaint/green, @@ -36708,19 +33389,30 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"gnz" = ( -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 +"gnM" = ( +/obj/structure/surface/rack, +/obj/item/frame/table, +/obj/item/frame/table, +/obj/item/frame/table, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/sign/safety/airlock{ - pixel_x = 32; - pixel_y = -8 +/area/almayer/maint/hull/lower/l_f_p) +"gob" = ( +/obj/structure/closet/fireaxecabinet{ + pixel_y = 32 }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) +"gof" = ( +/obj/structure/platform_decoration{ + dir = 1 }, -/area/almayer/hull/lower_hull/l_a_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "goj" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 2; @@ -36733,6 +33425,7 @@ /area/almayer/lifeboat_pumps/north1) "gol" = ( /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; dir = 1; req_one_access = null; req_one_access_txt = "7;19" @@ -36741,23 +33434,41 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/weapon_room) -"goD" = ( +"goy" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper Dorms" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "redcorner" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/processing) +/area/almayer/living/port_emb) "goL" = ( /turf/open/floor/almayer{ dir = 10; icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"goM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"goY" = ( +/turf/closed/wall/almayer, +/area/almayer/shipboard/panic) "gpc" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/airlock/almayer/engineering{ @@ -36768,24 +33479,12 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/starboard) -"gpe" = ( -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "gpi" = ( /obj/structure/dropship_equipment/rappel_system, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/hallways/hangar) -"gpE" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "gpI" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -36794,15 +33493,18 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"gpO" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/s_bow) "gpY" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/lifeboat_pumps/north1) -"gqK" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"gqt" = ( +/obj/structure/sign/safety/storage{ + pixel_x = -17 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/u_a_s) "gqP" = ( /obj/structure/largecrate/random/case, /obj/structure/machinery/camera/autoname/almayer{ @@ -36813,18 +33515,37 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) -"gqW" = ( -/obj/structure/surface/table/almayer, +"gqQ" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21" + }, +/obj/structure/sign/safety/escapepod{ + pixel_x = -17 + }, +/obj/structure/sign/poster/hero/voteno{ + pixel_y = 32 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"grd" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/shipboard/brig/main_office) -"grl" = ( -/obj/effect/landmark/crap_item, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" +/area/almayer/maint/hull/upper/u_a_p) +"grv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + layer = 2.5; + pixel_y = 1 }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) +"grF" = ( +/obj/structure/pipes/vents/scrubber, +/turf/open/floor/almayer, /area/almayer/shipboard/brig/main_office) "grG" = ( /obj/structure/sign/safety/restrictedarea{ @@ -36835,30 +33556,76 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) -"grN" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/medical_science) "grR" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "orangecorner" }, /area/almayer/living/briefing) -"grX" = ( -/obj/structure/machinery/light/small{ +"grT" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/wet_sign, +/obj/item/tool/wet_sign{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/tool/wet_sign{ + pixel_x = -8; + pixel_y = 6 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"gsd" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/hand_labeler{ + pixel_x = 7 + }, +/obj/item/storage/firstaid/fire{ + pixel_x = -6 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) +"gsg" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + pixel_y = 24 + }, +/obj/structure/machinery/door_control{ + id = "Alpha_1"; + name = "Door Lock"; + normaldoorcontrol = 1; + pixel_x = 23; + specialfunctions = 4 + }, +/obj/structure/machinery/light{ dir = 4 }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/port_emb) +"gsi" = ( +/obj/structure/sign/safety/nonpress_0g{ + pixel_x = 8; + pixel_y = -32 + }, /turf/open/floor/almayer{ dir = 5; icon_state = "plating" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/shipboard/stern_point_defense) "gsm" = ( /obj/structure/machinery/status_display{ pixel_x = -32 @@ -36867,23 +33634,41 @@ /obj/effect/landmark/late_join, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/cryo_cells) -"gsH" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Port Viewing Room" +"gsp" = ( +/obj/structure/bed/chair{ + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) -"gsL" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 +/area/almayer/maint/hull/lower/l_f_p) +"gsy" = ( +/obj/structure/surface/rack, +/obj/structure/ob_ammo/ob_fuel, +/obj/structure/ob_ammo/ob_fuel, +/obj/structure/ob_ammo/ob_fuel, +/obj/structure/ob_ammo/ob_fuel, +/obj/structure/sign/safety/fire_haz{ + pixel_x = 8; + pixel_y = 32 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) +"gsC" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) +"gsM" = ( +/obj/structure/machinery/portable_atmospherics/powered/pump, +/turf/open/floor/almayer{ + icon_state = "cargo" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/engineering/lower/engine_core) "gsZ" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = 2; @@ -36896,15 +33681,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) -"gte" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "green" - }, -/area/almayer/hallways/port_hallway) "gtp" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/structure/disposalpipe/junction{ @@ -36916,53 +33692,53 @@ icon_state = "silvercorner" }, /area/almayer/command/cichallway) -"gtA" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/transmitter{ - dir = 8; - name = "Medical Telephone"; - phone_category = "Almayer"; - phone_id = "Medical Lower"; - pixel_x = 23 +"gtQ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) +"gtU" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 8 + }, +/obj/structure/sign/safety/rewire{ + pixel_x = -17; + pixel_y = 17 }, /turf/open/floor/almayer{ - icon_state = "sterile_green" + dir = 8; + icon_state = "red" }, -/area/almayer/medical/lockerroom) +/area/almayer/shipboard/brig/perma) "guc" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "greencorner" + icon_state = "green" }, /area/almayer/hallways/port_hallway) -"guC" = ( -/obj/item/paper_bin/wy, -/obj/structure/surface/table/woodentable/fancy, -/obj/item/tool/pen/clicky, -/obj/item/tool/pen/clicky, -/obj/structure/machinery/status_display{ - pixel_x = -32 +"guo" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) -"guG" = ( -/obj/structure/pipes/vents/scrubber{ - dir = 1 +/turf/open/floor/almayer{ + icon_state = "redfull" }, -/obj/structure/sink{ - dir = 1; - pixel_y = -10 +/area/almayer/lifeboat_pumps/south2) +"gur" = ( +/obj/item/tool/mop{ + pixel_x = -6; + pixel_y = 24 }, -/obj/structure/surface/rack{ - density = 0; - pixel_x = 26 +/obj/item/reagent_container/glass/bucket, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/item/tool/soap, -/turf/open/floor/almayer, -/area/almayer/living/port_emb) +/area/almayer/maint/upper/u_m_s) "guS" = ( /obj/structure/reagent_dispensers/fueltank/custom, /turf/open/floor/almayer{ @@ -36997,24 +33773,6 @@ icon_state = "silver" }, /area/almayer/command/cic) -"gvC" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = 12; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -14; - pixel_y = 13 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "gvU" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -37025,32 +33783,26 @@ icon_state = "green" }, /area/almayer/squads/req) -"gwm" = ( -/obj/structure/largecrate/random/case/small, -/obj/item/device/taperecorder{ - pixel_x = 7; - pixel_y = 7 - }, -/obj/item/reagent_container/glass/bucket/mopbucket{ - pixel_x = -9; - pixel_y = 8 +"gwj" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) +"gwn" = ( +/obj/structure/machinery/ares/processor/bioscan, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/command/airoom) "gwo" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "bluecorner" }, /area/almayer/living/basketball) -"gwu" = ( -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/command/lifeboat) "gww" = ( /obj/structure/bed/chair, /obj/structure/machinery/light{ @@ -37060,24 +33812,7 @@ icon_state = "plate" }, /area/almayer/living/gym) -"gwD" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/firstaid/regular, -/obj/item/clipboard, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/req) -"gwF" = ( -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice12"; - pixel_y = 16 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) -"gwO" = ( +"gwM" = ( /obj/structure/pipes/vents/pump, /obj/structure/mirror{ pixel_y = 32 @@ -37097,31 +33832,18 @@ pixel_x = 23; specialfunctions = 4 }, -/turf/open/floor/almayer, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, /area/almayer/living/port_emb) "gwR" = ( /obj/item/device/flashlight/lamp/green, /obj/structure/surface/table/reinforced/black, /turf/open/floor/carpet, /area/almayer/command/cichallway) -"gwW" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"gwY" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Starboard Viewing Room" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_s) "gxh" = ( /obj/structure/surface/table/almayer, /obj/item/storage/firstaid/o2, @@ -37137,27 +33859,18 @@ icon_state = "plate" }, /area/almayer/shipboard/starboard_point_defense) -"gxk" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) -"gxr" = ( -/obj/structure/largecrate/random/barrel/green, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = 32 - }, +"gxm" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/stairs) +"gxn" = ( /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/hallways/upper/starboard) +"gxI" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/maint/hull/upper/s_bow) "gxO" = ( /turf/open/floor/almayer{ dir = 10; @@ -37165,33 +33878,22 @@ }, /area/almayer/living/gym) "gxP" = ( -/obj/structure/machinery/chem_storage/research{ - dir = 1 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" +/turf/open/floor/almayer/research/containment/floor2{ + dir = 8 }, -/area/almayer/medical/testlab) +/area/almayer/medical/containment/cell) "gxU" = ( /obj/structure/surface/table/almayer, -/obj/structure/machinery/status_display{ - pixel_y = -30 - }, -/obj/structure/machinery/computer/emails{ - dir = 4 - }, +/obj/item/toy/deck, /turf/open/floor/almayer{ - dir = 10; + dir = 8; icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"gyt" = ( -/obj/item/storage/firstaid/regular, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "gyv" = ( /obj/structure/platform_decoration{ dir = 4 @@ -37225,6 +33927,23 @@ icon_state = "orange" }, /area/almayer/hallways/starboard_hallway) +"gyH" = ( +/obj/item/tool/warning_cone{ + pixel_x = -12; + pixel_y = 16 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"gyN" = ( +/obj/structure/machinery/prop{ + desc = "It's a server box..."; + icon_state = "comm_server"; + name = "server box" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "gyO" = ( /obj/structure/pipes/vents/pump{ dir = 8 @@ -37234,8 +33953,15 @@ icon_state = "orange" }, /area/almayer/engineering/ce_room) -"gzn" = ( -/obj/structure/machinery/landinglight/ds2/delaytwo{ +"gyU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north2) +"gzn" = ( +/obj/structure/machinery/landinglight/ds2/delaytwo{ dir = 8 }, /obj/structure/platform_decoration, @@ -37259,17 +33985,9 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"gzr" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" - }, -/obj/structure/platform, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) +"gzq" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/engine_core) "gzw" = ( /obj/structure/closet/hydrant{ pixel_x = 30 @@ -37295,6 +34013,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/morgue) +"gzN" = ( +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "gzV" = ( /obj/structure/sink{ dir = 1; @@ -37304,12 +34029,18 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"gAd" = ( -/obj/structure/bed/chair{ - dir = 8 +"gAe" = ( +/obj/structure/machinery/door_control{ + id = "ARES JoeCryo"; + name = "Working Joe Cryogenics Lockdown"; + pixel_x = 24; + pixel_y = 8; + req_one_access_txt = "91;92" }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "gAj" = ( /obj/structure/bed/chair/comfy/charlie{ dir = 1 @@ -37318,18 +34049,17 @@ icon_state = "emeraldfull" }, /area/almayer/living/briefing) +"gAk" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/corporateliaison) "gAl" = ( /obj/structure/machinery/light{ dir = 8 }, /turf/open/floor/almayer, /area/almayer/command/cichallway) -"gAt" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) "gAz" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/drinks/golden_cup{ @@ -37345,11 +34075,11 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha_bravo_shared) "gAS" = ( +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_corner" + icon_state = "dark_sterile" }, -/area/almayer/medical/containment) +/area/almayer/medical/medical_science) "gBc" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -37365,27 +34095,42 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"gBi" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" +"gBd" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 }, -/area/almayer/shipboard/brig/processing) +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "gBo" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"gCd" = ( -/obj/structure/machinery/light/small{ - dir = 8 +"gBs" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/upper/u_m_p) +"gBU" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/bag/trash{ + pixel_x = -3 + }, +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"gBW" = ( +/obj/structure/machinery/floodlight/landing{ + name = "bolted floodlight" + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "gCf" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/almayer{ @@ -37402,34 +34147,33 @@ }, /area/almayer/hallways/vehiclehangar) "gCu" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_y = 16 }, -/obj/item/folded_tent/cmd, /turf/open/floor/almayer{ - icon_state = "plating_striped" + icon_state = "plate" }, -/area/almayer/squads/req) +/area/almayer/maint/hull/lower/l_a_s) "gCw" = ( /obj/item/reagent_container/food/drinks/cans/beer{ pixel_x = 10 }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"gCI" = ( -/obj/structure/machinery/light{ - dir = 4 +"gCB" = ( +/obj/structure/machinery/power/apc/almayer/hardened{ + cell_type = /obj/item/cell/hyper; + dir = 1 }, -/obj/structure/machinery/cryopod/right{ - pixel_y = 6 +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "mono" }, -/area/almayer/shipboard/brig/cryo) +/area/almayer/lifeboat_pumps/north2) "gCP" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/flashlight/lamp, @@ -37438,12 +34182,41 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"gDq" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 +"gCQ" = ( +/obj/structure/machinery/portable_atmospherics/canister/air, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/upper/u_a_s) +"gDp" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) +"gDt" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/crew/alt{ + dir = 4 + }, +/obj/structure/transmitter/rotary/no_dnd{ + name = "Brig Cells Telephone"; + phone_category = "MP Dept."; + phone_id = "Brig Cells"; + pixel_x = 16 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) +"gDH" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 }, /turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/engineering/lower/engine_core) "gDW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -37456,10 +34229,19 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"gDX" = ( +/obj/structure/sign/safety/nonpress_ag{ + pixel_x = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/p_bow) "gEg" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/offices/flight) +"gEh" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "gEo" = ( /obj/structure/machinery/cryopod/right, /obj/structure/machinery/light{ @@ -37469,22 +34251,20 @@ icon_state = "cargo" }, /area/almayer/squads/delta) -"gEz" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 +"gEv" = ( +/obj/structure/machinery/light{ + dir = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/lifeboat) -"gEK" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" +/area/almayer/engineering/upper_engineering/port) +"gEC" = ( +/obj/structure/machinery/suit_storage_unit/carbon_unit, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/area/almayer/engineering/lower) "gFa" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -37500,20 +34280,24 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"gFs" = ( -/obj/effect/spawner/random/toolbox, +"gFP" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/shipboard/stern_point_defense) +"gFR" = ( +/obj/structure/machinery/light, +/obj/structure/machinery/cm_vending/gear/commanding_officer, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" + }, +/area/almayer/living/commandbunks) +"gGb" = ( +/obj/structure/platform{ + dir = 1 }, -/area/almayer/hull/lower_hull/l_m_s) -"gFG" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/tool, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/u_a_p) "gGf" = ( /obj/structure/machinery/light{ dir = 1 @@ -37522,6 +34306,22 @@ icon_state = "plate" }, /area/almayer/squads/delta) +"gGp" = ( +/obj/structure/surface/table/almayer, +/obj/item/clothing/mask/cigarette/pipe{ + pixel_x = 8 + }, +/obj/structure/transmitter/rotary{ + name = "Reporter Telephone"; + phone_category = "Almayer"; + phone_id = "Reporter"; + pixel_x = -4; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "gGr" = ( /obj/structure/machinery/vending/cigarette, /turf/open/floor/almayer{ @@ -37552,11 +34352,15 @@ /turf/open/floor/plating, /area/almayer/hallways/hangar) "gGx" = ( +/obj/structure/filingcabinet/chestdrawer{ + density = 0; + pixel_x = -16 + }, +/obj/structure/machinery/iv_drip, /turf/open/floor/almayer{ - dir = 5; - icon_state = "sterile_green_side" + icon_state = "mono" }, -/area/almayer/medical/containment) +/area/almayer/medical/medical_science) "gGI" = ( /obj/structure/disposalpipe/segment, /obj/structure/machinery/light{ @@ -37577,39 +34381,45 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) -"gHg" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"gHl" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/overwatch/almayer{ - dir = 8; - layer = 3.2; - pixel_x = -17; - pixel_y = 16 - }, -/obj/structure/transmitter/rotary{ - name = "Alpha Overwatch Telephone"; - phone_category = "Command"; - phone_id = "Alpha Overwatch" +"gHh" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/obj/structure/sign/safety/terminal{ - pixel_x = -17; - pixel_y = -8 +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) +"gHi" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "cargo" }, +/area/almayer/maint/hull/lower/l_m_s) +"gHj" = ( +/obj/structure/machinery/light, +/obj/structure/closet/secure_closet/fridge/groceries/stock, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/command/cic) +/area/almayer/living/grunt_rnr) +"gHl" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "gHo" = ( /obj/structure/machinery/door/airlock/almayer/marine/delta/tl, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/squads/delta) +"gHt" = ( +/obj/structure/bed/chair/bolted, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) "gHZ" = ( /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -37627,6 +34437,12 @@ icon_state = "test_floor4" }, /area/almayer/engineering/ce_room) +"gIm" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "gII" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -37638,39 +34454,43 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/port) -"gIN" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"gIU" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/box/tapes{ + pixel_x = 7; + pixel_y = 6 }, -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) -"gJd" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/item/storage/box/tapes{ + pixel_x = -6; + pixel_y = 6 }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = 32 +/obj/item/storage/box/tapes{ + pixel_x = 1; + pixel_y = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) -"gJq" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/box/mousetraps, -/obj/structure/sign/safety/high_rad{ - pixel_x = 32; - pixel_y = -8 +/turf/open/floor/almayer{ + icon_state = "cargo" }, -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 +/area/almayer/shipboard/brig/evidence_storage) +"gJf" = ( +/obj/structure/bed/sofa/south/grey/left{ + pixel_y = 12 }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"gJF" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/s_stern) +"gJO" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/door/window/southleft{ + desc = "A window, that is also a door. A windoor if you will. This one is stronger."; + health = 500; + name = "Reinforced Glass door"; + req_one_access_txt = "2;35" }, -/area/almayer/engineering/lower_engineering) +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "gJP" = ( /obj/structure/machinery/light, /obj/structure/disposalpipe/segment{ @@ -37680,6 +34500,36 @@ icon_state = "green" }, /area/almayer/living/offices) +"gJY" = ( +/obj/structure/surface/table/almayer, +/obj/item/circuitboard{ + pixel_x = 12; + pixel_y = 7 + }, +/obj/item/tool/crowbar{ + pixel_x = 6; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_p) +"gKd" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) +"gKv" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) "gKB" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/structure/machinery/firealarm{ @@ -37699,15 +34549,6 @@ icon_state = "redfull" }, /area/almayer/shipboard/port_missiles) -"gKJ" = ( -/obj/structure/machinery/vending/cola{ - density = 0; - pixel_y = 18 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "gKR" = ( /obj/structure/closet/emcloset, /obj/structure/machinery/light{ @@ -37718,12 +34559,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"gKS" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "gKZ" = ( /obj/structure/surface/table/almayer, /obj/item/tool/wet_sign, @@ -37734,21 +34569,25 @@ }, /area/almayer/engineering/upper_engineering) "gLc" = ( -/obj/structure/surface/rack, -/obj/item/storage/fancy/vials, -/obj/item/storage/fancy/vials, -/obj/item/storage/fancy/vials, -/obj/item/storage/fancy/vials, -/turf/open/floor/almayer{ - icon_state = "sterile_green" +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/area/almayer/medical/medical_science) -"gLu" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 }, -/turf/open/floor/almayer, -/area/almayer/living/port_emb) +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/medical/hydroponics) +"gLm" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "gLz" = ( /obj/structure/machinery/cryopod{ layer = 3.1; @@ -37765,11 +34604,10 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/port) -"gLB" = ( -/turf/open/floor/almayer/research/containment/entrance{ - dir = 8 - }, -/area/almayer/medical/containment/cell) +"gLD" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "gLE" = ( /obj/structure/platform{ dir = 1 @@ -37786,6 +34624,23 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"gLG" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) +"gLN" = ( +/obj/structure/machinery/light, +/obj/structure/flora/pottedplant{ + pixel_x = -1; + pixel_y = 3 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "gLZ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -37810,29 +34665,52 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"gMf" = ( -/obj/structure/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, +"gMd" = ( +/obj/structure/surface/table/almayer, +/obj/item/clipboard, +/obj/item/tool/lighter, +/obj/item/device/flashlight/lamp, /turf/open/floor/almayer{ - dir = 4; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/perma) -"gMx" = ( -/obj/structure/closet/firecloset, +/area/almayer/engineering/lower/workshop) +"gMJ" = ( +/obj/structure/largecrate/supply/weapons/pistols, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) -"gMA" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 8; - req_one_access = list(2,34,30) +/area/almayer/maint/hull/upper/u_m_s) +"gMN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/obj/structure/machinery/door_control{ + id = "ARES Interior"; + indestructible = 1; + name = "ARES Chamber Lockdown"; + pixel_x = -24; + pixel_y = -8; + req_one_access_txt = "90;91;92" + }, +/obj/structure/machinery/door/poddoor/railing{ + closed_layer = 4.1; + density = 0; + dir = 2; + id = "ARES Railing"; + layer = 2.1; + open_layer = 2.1; + pixel_x = -1; + pixel_y = -1; + unacidable = 0; + unslashable = 0 }, -/area/almayer/hull/upper_hull/u_m_p) +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "gMU" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -37841,13 +34719,24 @@ dir = 4 }, /area/almayer/living/briefing) -"gNd" = ( -/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, -/obj/structure/machinery/light, +"gNg" = ( +/obj/structure/sign/safety/maint{ + pixel_x = -17 + }, +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) +"gNo" = ( /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_p) +"gNp" = ( +/turf/open/floor/almayer{ + dir = 9; + icon_state = "sterile_green_side" }, -/area/almayer/engineering/engine_core) +/area/almayer/medical/medical_science) "gNq" = ( /obj/structure/machinery/cm_vending/sorted/cargo_ammo/squad{ req_access = null; @@ -37859,91 +34748,204 @@ icon_state = "plate" }, /area/almayer/squads/charlie_delta_shared) -"gNx" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/tool, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) -"gPc" = ( -/obj/structure/machinery/power/terminal{ - dir = 1 +"gNG" = ( +/obj/structure/surface/table/almayer, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" }, /turf/open/floor/almayer{ - dir = 9; - icon_state = "orange" + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) +"gNN" = ( +/obj/structure/bed/chair/office/dark, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) +"gNO" = ( +/obj/structure/machinery/firealarm{ + pixel_y = 28 }, -/area/almayer/engineering/upper_engineering/starboard) -"gPF" = ( -/obj/structure/machinery/light, /turf/open/floor/almayer{ - dir = 6; + dir = 1; icon_state = "orange" }, -/area/almayer/hallways/stern_hallway) -"gQl" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/glass/bucket{ - pixel_x = 6; - pixel_y = 8 - }, -/obj/item/reagent_container/glass/bucket{ - pixel_x = -6; - pixel_y = 8 +/area/almayer/engineering/lower) +"gNQ" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) +"gNZ" = ( +/obj/structure/machinery/light/small{ + dir = 1 }, -/obj/item/reagent_container/glass/bucket{ - pixel_x = -6; - pixel_y = -2 +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) +"gOk" = ( +/obj/structure/largecrate/guns/merc{ + name = "\improper dodgy crate" }, -/obj/item/reagent_container/glass/bucket{ - pixel_x = 6; - pixel_y = -2 +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"gOs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" +/obj/structure/machinery/door_control{ + id = "ARES Interior"; + indestructible = 1; + name = "ARES Chamber Lockdown"; + pixel_x = 24; + pixel_y = 8; + req_one_access_txt = "90;91;92" }, -/turf/open/floor/almayer{ - icon_state = "orange" +/obj/structure/machinery/door/poddoor/railing{ + closed_layer = 4; + density = 0; + id = "ARES Railing"; + layer = 2.1; + open_layer = 2.1; + unacidable = 0; + unslashable = 0 }, -/area/almayer/engineering/engineering_workshop/hangar) -"gQF" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 +/turf/open/floor/almayer/no_build{ + dir = 4; + icon_state = "silver" }, +/area/almayer/command/airoom) +"gOC" = ( +/obj/structure/machinery/recharge_station, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + dir = 5; + icon_state = "orange" }, -/area/almayer/medical/containment) -"gRd" = ( -/obj/structure/platform, -/obj/structure/target{ - desc = "'Such an insult (referring to Canton) can only be repaid in American blood. Mark my words, this will happen'-Kolonel Ganbaatar UPP Armed Forces"; - name = "Kolonel Ganbaatar" +/area/almayer/engineering/lower) +"gOR" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 }, /turf/open/floor/almayer, -/area/almayer/hallways/hangar) -"gRn" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull) -"gRP" = ( -/obj/structure/machinery/power/apc/almayer{ +/area/almayer/engineering/lower/workshop/hangar) +"gPc" = ( +/obj/structure/machinery/power/terminal{ dir = 1 }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 9; + icon_state = "orange" }, -/area/almayer/hallways/hangar) -"gSi" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/cameras/almayer_network, -/obj/item/storage/box/tapes{ - pixel_x = -16 +/area/almayer/engineering/upper_engineering/starboard) +"gPr" = ( +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresUp"; + vector_x = -97; + vector_y = 65 }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/processing) +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/structure/stairs{ + dir = 1 + }, +/turf/open/floor/almayer/no_build{ + dir = 4 + }, +/area/almayer/command/airoom) +"gPF" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/almayer/hallways/stern_hallway) +"gPS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) +"gQk" = ( +/obj/structure/surface/table/almayer, +/obj/structure/sign/safety/terminal{ + pixel_x = -17 + }, +/obj/structure/machinery/faxmachine/corporate/liaison, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"gQu" = ( +/obj/structure/platform{ + dir = 4 + }, +/obj/item/storage/firstaid/rad, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"gQF" = ( +/obj/structure/bed/chair/comfy{ + buckling_y = 2; + dir = 8; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/medical/medical_science) +"gQO" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) +"gQQ" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"gRc" = ( +/obj/item/tool/wet_sign, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) +"gRd" = ( +/obj/structure/platform, +/obj/structure/target{ + desc = "'Such an insult (referring to Canton) can only be repaid in American blood. Mark my words, this will happen'-Kolonel Ganbaatar UPP Armed Forces"; + name = "Kolonel Ganbaatar" + }, +/turf/open/floor/almayer, +/area/almayer/hallways/hangar) +"gRP" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hallways/hangar) +"gSa" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "gSj" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -37965,74 +34967,91 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) -"gSs" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" +"gSy" = ( +/obj/item/frame/rack{ + layer = 3.1; + pixel_y = 19 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"gSV" = ( -/obj/structure/machinery/camera/autoname/almayer{ +/obj/structure/surface/rack, +/obj/item/tool/weldpack{ + pixel_x = 5 + }, +/obj/item/tool/weldpack{ + pixel_x = -2 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"gSH" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"gTH" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/skills{ dir = 4; - name = "ship-grade camera"; - pixel_y = 6 + pixel_y = 18 }, -/obj/structure/sign/safety/biolab{ - pixel_x = -17; - pixel_y = -8 +/obj/structure/machinery/computer/secure_data{ + dir = 4 }, -/obj/structure/sign/safety/hvac_old{ - pixel_x = -17; - pixel_y = 6 +/obj/structure/machinery/computer/med_data/laptop{ + dir = 4; + pixel_y = -18 }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/cells) -"gTl" = ( -/obj/structure/pipes/vents/pump{ - dir = 8 +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, -/turf/open/floor/almayer{ - icon_state = "red" +/area/almayer/command/airoom) +"gTK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" }, -/area/almayer/shipboard/brig/cryo) -"gTx" = ( -/obj/structure/machinery/vending/security, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/maint/hull/lower/p_bow) "gUf" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /turf/open/floor/almayer{ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"gUv" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" +"gUg" = ( +/obj/structure/machinery/vending/coffee, +/obj/structure/machinery/light{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) -"gUy" = ( -/obj/structure/machinery/vending/cola{ - density = 0; - pixel_y = 18 +/area/almayer/shipboard/brig/general_equipment) +"gUi" = ( +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/s_bow) +"gUn" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"gUu" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"gUG" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 }, -/area/almayer/hull/upper_hull/u_a_p) -"gUI" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/pen, -/obj/item/paper_bin/uscm, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/engineering/engineering_workshop) +/area/almayer/maint/hull/upper/u_a_s) "gUL" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -38049,6 +35068,27 @@ }, /turf/open/floor/almayer, /area/almayer/living/bridgebunks) +"gUN" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/almayer/no_build{ + dir = 4; + icon_state = "cargo_arrow" + }, +/area/almayer/command/airoom) +"gUS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/escapepod{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "gUV" = ( /turf/open/floor/almayer{ icon_state = "redcorner" @@ -38058,12 +35098,50 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north2) +"gVq" = ( +/obj/structure/machinery/light, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/containment) +"gVu" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 4 + }, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails{ + dir = 1 + }, +/obj/item/reagent_container/food/snacks/grown/banana{ + pixel_x = 18; + pixel_y = 5 + }, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/living/briefing) +"gVA" = ( +/obj/structure/disposalpipe/down/almayer{ + dir = 8; + id = "almayerlink_OT1_req" + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) "gVF" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) +"gWu" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "gWE" = ( /obj/structure/disposalpipe/segment, /obj/effect/landmark/start/marine/spec/alpha, @@ -38077,16 +35155,6 @@ }, /turf/open/floor/plating, /area/almayer/medical/upper_medical) -"gWR" = ( -/obj/structure/largecrate/random/barrel/red, -/obj/structure/sign/safety/fire_haz{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "gXl" = ( /obj/structure/closet/secure_closet/personal/cabinet{ req_access_txt = "5" @@ -38095,37 +35163,38 @@ icon_state = "mono" }, /area/almayer/medical/upper_medical) -"gXq" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" +"gXs" = ( +/obj/effect/step_trigger/ares_alert/terminals, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "ARES Operations Right"; + name = "\improper ARES Operations Shutters" }, -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" }, -/area/almayer/engineering/engineering_workshop) -"gXv" = ( -/obj/structure/sign/safety/nonpress_0g{ - pixel_x = 32 +/area/almayer/command/airoom) +"gXx" = ( +/obj/structure/bed/chair{ + dir = 8 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + dir = 8; + icon_state = "silvercorner" }, -/area/almayer/hull/lower_hull/l_a_p) -"gXY" = ( -/obj/structure/machinery/light{ +/area/almayer/shipboard/brig/cic_hallway) +"gXB" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/bed/chair/comfy/delta{ dir = 8 }, /turf/open/floor/almayer{ - dir = 10; - icon_state = "orange" + icon_state = "bluefull" }, -/area/almayer/engineering/lower_engineering) +/area/almayer/living/briefing) "gYe" = ( /obj/structure/machinery/vending/sea, /turf/open/floor/almayer{ @@ -38152,77 +35221,66 @@ icon_state = "redfull" }, /area/almayer/living/offices/flight) -"gYB" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "Saferoom Channel"; - pixel_x = 27 +"gYI" = ( +/obj/structure/platform{ + dir = 4 }, +/obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) -"gYS" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = 12; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -16; - pixel_y = 13 - }, -/obj/structure/sign/safety/water{ - pixel_x = -17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) -"gZr" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/device/camera_film{ - pixel_x = 4; - pixel_y = -2 +/area/almayer/maint/hull/upper/u_a_p) +"gYU" = ( +/obj/structure/machinery/light/small{ + dir = 4 }, -/obj/item/device/camera/siliconcam{ - pixel_x = -6; - pixel_y = 11 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, -/area/almayer/squads/charlie_delta_shared) +/area/almayer/maint/hull/upper/u_a_p) "gZw" = ( /obj/structure/bed/sofa/vert/grey/bot, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) "gZK" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, /turf/open/floor/almayer, -/area/almayer/living/tankerbunks) +/area/almayer/living/auxiliary_officer_office) +"gZP" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ + id_tag = "Boat2-D4"; + linked_dock = "almayer-lifeboat2"; + throw_dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/lifeboat) +"had" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/command/lifeboat) +"hal" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/lifeboat) "ham" = ( /turf/open/floor/almayer{ icon_state = "sterile_green" }, /area/almayer/medical/lower_medical_lobby) -"haq" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_a_p) -"har" = ( -/obj/structure/largecrate/random/case/small, +"haz" = ( +/obj/structure/machinery/floodlight, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/engineering/lower/engine_core) "haB" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -38236,13 +35294,30 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"haD" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "haM" = ( -/obj/structure/machinery/constructable_frame, /obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/constructable_frame, /turf/open/floor/almayer{ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) +"haO" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) "haQ" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -38256,46 +35331,77 @@ icon_state = "plate" }, /area/almayer/living/offices) +"haR" = ( +/obj/structure/sign/safety/restrictedarea{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/s_bow) "haT" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ icon_state = "green" }, /area/almayer/hallways/port_hallway) -"hbx" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/port_hallway) +"hbl" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/u_m_s) +"hbp" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/p_stern) +"hbs" = ( +/obj/structure/surface/table/almayer, +/obj/item/frame/fire_alarm, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"hbu" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "silver" + }, +/area/almayer/living/auxiliary_officer_office) +"hbE" = ( +/obj/structure/largecrate/random, +/obj/item/reagent_container/food/snacks/cheesecakeslice{ + pixel_y = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "hbI" = ( -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/weapon/gun/shotgun/combat, -/obj/structure/closet/secure_closet/guncabinet/red, /obj/structure/sign/safety/ammunition{ pixel_x = 32; pixel_y = 7 }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, /turf/open/floor/almayer{ icon_state = "redfull" }, /area/almayer/medical/upper_medical) -"hbZ" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/station_alert{ - dir = 4 - }, -/obj/structure/sign/safety/terminal{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) "hcf" = ( /obj/item/bedsheet/brown{ layer = 3.2 @@ -38359,24 +35465,12 @@ icon_state = "cargo" }, /area/almayer/squads/delta) -"hcZ" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/offices) "hdd" = ( /turf/open/floor/almayer{ dir = 9; icon_state = "red" }, /area/almayer/shipboard/starboard_missiles) -"hdg" = ( -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "hdh" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -38395,6 +35489,13 @@ icon_state = "cargo_arrow" }, /area/almayer/living/offices) +"hdy" = ( +/obj/item/storage/firstaid/fire, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "hdE" = ( /obj/structure/filingcabinet, /obj/item/reagent_container/food/drinks/coffeecup/uscm{ @@ -38404,49 +35505,67 @@ icon_state = "green" }, /area/almayer/squads/req) -"hdR" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "OfficeSafeRoom"; - name = "\improper Office Safe Room" +"heb" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/turf/open/floor/almayer, +/area/almayer/hallways/starboard_hallway) +"hec" = ( /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "sterile_green_side" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/medical/medical_science) "hee" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"heg" = ( -/obj/structure/machinery/floodlight, +"heo" = ( +/obj/structure/machinery/power/apc/almayer{ + cell_type = /obj/item/cell/hyper; + dir = 1 + }, +/obj/structure/sign/safety/rewire{ + pixel_x = -15; + pixel_y = 25 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -2 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/engineering/engine_core) -"heQ" = ( -/obj/structure/bed/chair, -/obj/structure/extinguisher_cabinet{ - pixel_y = 26 - }, -/obj/structure/sign/safety/cryo{ - pixel_x = 21; - pixel_y = 27 +/area/almayer/shipboard/brig/armory) +"heK" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Tool Closet" }, /turf/open/floor/almayer{ - dir = 4; - icon_state = "redcorner" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/processing) -"heV" = ( -/obj/structure/largecrate/random/case/double, +/area/almayer/living/port_emb) +"heO" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) +"heS" = ( +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "orange" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/engineering/lower) "hfa" = ( /obj/structure/window/reinforced{ dir = 8 @@ -38467,48 +35586,37 @@ icon_state = "plate" }, /area/almayer/squads/alpha_bravo_shared) -"hfk" = ( -/obj/item/trash/crushed_cup, +"hfb" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/engine_core) +"hfv" = ( +/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) -"hfm" = ( -/obj/structure/machinery/light{ +/area/almayer/maint/lower/s_bow) +"hfO" = ( +/obj/structure/machinery/light/small{ dir = 1 }, -/obj/structure/machinery/photocopier{ - anchored = 0 - }, -/obj/structure/sign/poster{ - desc = "A large piece of cheap printed paper. This one proudly demands that you REMEMBER IO!"; - icon_state = "poster14"; - name = "propaganda poster"; - pixel_y = 32 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"hfw" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - icon_state = "red" +/obj/structure/surface/rack, +/obj/item/storage/belt/utility/full{ + pixel_y = 8 }, -/area/almayer/command/lifeboat) -"hfO" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/spray/cleaner, -/obj/item/frame/light_fixture, -/obj/item/frame/light_fixture, +/obj/item/storage/belt/utility/full, +/obj/item/clothing/suit/storage/hazardvest/black, +/obj/item/tool/crowbar, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/engineering/engineering_workshop) +/area/almayer/maint/hull/lower/l_a_s) "hfQ" = ( /obj/structure/window/framed/almayer, /turf/open/floor/almayer{ @@ -38524,30 +35632,21 @@ icon_state = "redfull" }, /area/almayer/living/briefing) -"hgm" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/binoculars{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/device/binoculars, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" - }, +"hgk" = ( +/obj/structure/largecrate/random, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) -"hgt" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 4 +/area/almayer/maint/hull/upper/u_m_s) +"hgo" = ( +/obj/structure/machinery/light{ + dir = 8 }, -/turf/open/floor/almayer, -/area/almayer/engineering/engine_core) -"hgv" = ( -/turf/closed/wall/almayer/white/reinforced, -/area/almayer/medical/testlab) +/turf/open/floor/almayer{ + dir = 10; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "hgB" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/intel, @@ -38556,28 +35655,21 @@ icon_state = "silvercorner" }, /area/almayer/command/computerlab) -"hgF" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 +"hgD" = ( +/obj/structure/reagent_dispensers/fueltank/gas/hydrogen{ + anchored = 1 }, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/execution) -"hgH" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" +/turf/open/floor/almayer{ + icon_state = "cargo" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/engineering/lower/workshop/hangar) "hgL" = ( /obj/item/tool/warning_cone{ pixel_x = 4; @@ -38588,6 +35680,28 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"hgO" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 4 + }, +/obj/item/tool/stamp/approved{ + pixel_y = -11; + pixel_x = -3 + }, +/turf/open/floor/almayer, +/area/almayer/squads/req) +"hgV" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 15" + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "hgZ" = ( /obj/structure/machinery/door_control{ dir = 1; @@ -38600,6 +35714,25 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_three) +"hhd" = ( +/obj/structure/surface/table/almayer, +/obj/item/clothing/head/hardhat/orange{ + pixel_x = -9; + pixel_y = 16 + }, +/obj/item/clothing/suit/storage/hazardvest/blue{ + pixel_x = -7; + pixel_y = -4 + }, +/obj/item/clothing/head/hardhat{ + pixel_x = 10; + pixel_y = 1 + }, +/obj/item/clothing/suit/storage/hazardvest{ + pixel_x = 1 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "hhe" = ( /obj/structure/sign/safety/nonpress_0g{ pixel_y = 32 @@ -38611,6 +35744,12 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_umbilical) +"hhg" = ( +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "hhn" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ @@ -38621,32 +35760,53 @@ icon_state = "cargo_arrow" }, /area/almayer/living/offices) -"hhw" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_m_s) "hhA" = ( /obj/structure/bed/sofa/vert/grey/bot, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"hhW" = ( +/obj/structure/surface/rack, +/obj/item/storage/box/gloves{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/masks, +/turf/open/floor/almayer{ + icon_state = "sterile_green_side" + }, +/area/almayer/shipboard/brig/surgery) "hif" = ( /obj/structure/machinery/floodlight/landing, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hallways/hangar) -"hit" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/bag/trash{ - pixel_x = -3 +"hip" = ( +/obj/item/device/multitool, +/obj/structure/platform_decoration, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"hiB" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 +/area/almayer/engineering/lower/engine_core) +"hiu" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice13"; + pixel_x = 16; + pixel_y = 16 }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"hiy" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/lifeboat_pumps/north1) "hiM" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -38654,12 +35814,12 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) -"hiQ" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 +"hja" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/maint/hull/upper/u_a_s) "hji" = ( /obj/structure/bed/chair{ dir = 4 @@ -38693,27 +35853,50 @@ icon_state = "red" }, /area/almayer/shipboard/port_missiles) +"hjB" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + access_modified = 1; + name = "Kitchen"; + req_one_access_txt = "30;19" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/grunt_rnr) +"hjM" = ( +/obj/structure/bed/chair/bolted{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "redcorner" + }, +/area/almayer/shipboard/brig/processing) +"hjT" = ( +/obj/structure/machinery/light/small{ + dir = 1; + pixel_y = 20 + }, +/obj/structure/largecrate, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "hki" = ( /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, /turf/open/floor/almayer{ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) -"hkm" = ( -/obj/structure/stairs{ - icon_state = "ramptop" - }, -/obj/structure/platform{ +"hkz" = ( +/obj/structure/machinery/light/small{ dir = 8 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) -"hkx" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/maint/hull/upper/p_stern) "hkB" = ( /obj/structure/sign/safety/rewire{ pixel_x = 8; @@ -38721,6 +35904,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/port_point_defense) +"hkE" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hallways/port_hallway) "hkG" = ( /obj/structure/sign/safety/ammunition{ pixel_y = -32 @@ -38737,25 +35926,68 @@ icon_state = "silver" }, /area/almayer/command/cic) -"hlw" = ( -/obj/structure/platform_decoration{ - dir = 4 +"hkH" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/recharger, +/obj/structure/machinery/door_control{ + id = "courtyard_cells"; + name = "\improper Courtyard Lockdown Shutters"; + pixel_x = 16; + req_access_txt = "3" + }, +/obj/structure/machinery/door_control{ + id = "Brig Lockdown Shutters"; + name = "Brig Lockdown Shutters"; + pixel_x = 16; + pixel_y = 8; + req_access_txt = "3" }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) +"hkX" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/device/flashlight/lamp/green{ + pixel_x = -7; + pixel_y = 20 + }, +/obj/item/ashtray/bronze{ + pixel_x = 4; + pixel_y = 19 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/landmark/map_item{ + pixel_x = -1; + pixel_y = 3 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"hlH" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/area/almayer/hull/upper_hull/u_a_p) -"hlz" = ( /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_s) -"hlI" = ( -/obj/structure/girder, +/area/almayer/engineering/lower) +"hlT" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 5; + icon_state = "red" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/hallways/upper/port) "hlU" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -38796,8 +36028,40 @@ }, /area/almayer/hallways/starboard_hallway) "hme" = ( -/turf/open/floor/almayer/research/containment/floor2, -/area/almayer/medical/containment/cell) +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/hydroponics) +"hmj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) +"hmw" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "hmy" = ( /obj/structure/machinery/light{ dir = 1 @@ -38806,6 +36070,9 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"hmA" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/maint/hull/upper/p_bow) "hmC" = ( /obj/structure/machinery/cm_vending/sorted/marine_food{ density = 0; @@ -38830,21 +36097,99 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha_bravo_shared) +"hmG" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/security/glass{ + name = "\improper Brig Breakroom" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + layer = 1.9 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/main_office) "hmS" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ icon_state = "blue" }, /area/almayer/command/cichallway) +"hmV" = ( +/obj/structure/bookcase{ + icon_state = "book-5"; + name = "medical manuals bookcase"; + opacity = 0 + }, +/obj/item/book/manual/surgery, +/obj/item/book/manual/medical_diagnostics_manual, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"hmZ" = ( +/obj/structure/largecrate/random/barrel/white, +/obj/structure/sign/safety/security{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/restrictedarea{ + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "hng" = ( -/turf/closed/wall/almayer/research/containment/wall/corner{ +/obj/structure/surface/table/almayer, +/obj/item/clothing/accessory/storage/black_vest/acid_harness, +/obj/item/clothing/accessory/storage/black_vest/acid_harness, +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/almayer/medical/hydroponics) +"hnt" = ( +/obj/item/toy/deck{ + pixel_y = 12 + }, +/obj/structure/sign/safety/storage{ + pixel_x = 32 + }, +/obj/structure/surface/table/woodentable/poor, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"hnI" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ + access_modified = 1; + name = "\improper Flight Crew Quarters"; + req_one_access_txt = "19;22" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/pilotbunks) +"hog" = ( +/obj/structure/machinery/light/small, +/obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/area/almayer/medical/containment/cell) -"hnV" = ( -/obj/structure/machinery/light, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "hon" = ( /obj/structure/sign/safety/medical{ pixel_x = 8; @@ -38864,18 +36209,11 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) -"hoX" = ( -/obj/structure/machinery/light/small, +"hoT" = ( /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) -"hpf" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_10" - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/area/almayer/maint/hull/upper/u_m_s) "hpk" = ( /obj/structure/sign/safety/fire_haz{ pixel_x = 8; @@ -38911,35 +36249,52 @@ }, /turf/open/floor/almayer, /area/almayer/living/chapel) -"hqh" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +"hqb" = ( +/obj/effect/step_trigger/clone_cleaner, +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/u_m_s) +"hqc" = ( +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/research{ - name = "\improper Research Laboratory" +/area/almayer/engineering/lower) +"hqh" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 }, -/area/almayer/medical/medical_science) -"hqs" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/almayer/research/containment/entrance, +/area/almayer/medical/containment/cell) +"hqm" = ( /obj/structure/machinery/light/small{ - dir = 8 + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) -"hqw" = ( -/turf/open/floor/almayer/research/containment/corner4, -/area/almayer/medical/containment/cell) -"hqL" = ( -/turf/open/floor/almayer/research/containment/corner_var1{ - dir = 4 +/area/almayer/maint/hull/upper/u_m_s) +"hqu" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/area/almayer/medical/containment/cell) +/area/almayer/maint/hull/upper/u_a_p) +"hqU" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "hqW" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ name = "\improper Medical Bay"; @@ -38960,6 +36315,32 @@ icon_state = "redfull" }, /area/almayer/command/cic) +"hrn" = ( +/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ + name = "\improper Research Reception Laboratory" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/medical_science) +"hro" = ( +/obj/structure/machinery/vending/coffee{ + density = 0; + pixel_y = 18 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "hrF" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -38969,25 +36350,28 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/starboard_point_defense) +"hrI" = ( +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "hrJ" = ( -/obj/structure/machinery/cm_vending/sorted/medical, /obj/structure/sign/safety/autodoc{ pixel_x = 20; pixel_y = -32 }, +/obj/structure/machinery/cm_vending/sorted/medical/bolted, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"hrX" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/obj/structure/machinery/light{ - dir = 1 +"hrO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "cargo" +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 }, -/area/almayer/engineering/engine_core) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/main_office) "hsg" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -38998,6 +36382,30 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"hsh" = ( +/obj/structure/coatrack, +/obj/structure/sign/poster/clf{ + pixel_x = -28 + }, +/obj/structure/sign/nosmoking_1{ + pixel_y = 30 + }, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"hsj" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/chief_mp_office) "hsr" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/starboard) @@ -39006,6 +36414,19 @@ icon_state = "test_floor4" }, /area/almayer/squads/delta) +"hsu" = ( +/obj/structure/bed/sofa/south/grey{ + pixel_y = 12 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"hsy" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/engineering/lower/engine_core) +"hsK" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "hsW" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -39016,6 +36437,51 @@ icon_state = "orange" }, /area/almayer/squads/bravo) +"htb" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering/starboard) +"htg" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/structure/largecrate/supply/supplies/flares, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"htk" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/cryo_cells) +"htq" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"htG" = ( +/obj/item/tool/soap, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) "htI" = ( /obj/structure/platform_decoration{ dir = 1 @@ -39032,11 +36498,12 @@ icon_state = "greenfull" }, /area/almayer/living/offices) -"hum" = ( -/turf/open/floor/almayer{ - icon_state = "cargo" +"huD" = ( +/obj/structure/machinery/light{ + dir = 1 }, -/area/almayer/living/tankerbunks) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "huK" = ( /turf/open/floor/almayer{ icon_state = "redcorner" @@ -39052,49 +36519,88 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"huX" = ( -/obj/structure/largecrate/random/barrel/yellow, -/obj/structure/machinery/light{ - dir = 1 +"huU" = ( +/obj/structure/machinery/door/airlock/almayer/security{ + access_modified = 1; + dir = 2; + name = "\improper Security Checkpoint"; + req_access = null; + req_one_access_txt = "3;19" }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/briefing) "hvp" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) +"hvq" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "hvv" = ( /obj/structure/disposalpipe/segment, -/obj/item/clipboard, -/obj/item/paper, -/obj/item/tool/pen/blue, /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 }, +/obj/item/clipboard{ + base_pixel_x = 20; + pixel_x = 5 + }, +/obj/item/paper{ + pixel_x = 5 + }, +/obj/item/tool/pen{ + pixel_x = 5 + }, /obj/structure/surface/table/reinforced/black, +/obj/structure/transmitter/rotary{ + name = "CIC Reception Telephone"; + phone_category = "Command"; + phone_id = "CIC Reception"; + pixel_x = -7; + pixel_y = 4 + }, /turf/open/floor/almayer, /area/almayer/command/cic) "hvw" = ( -/obj/structure/machinery/r_n_d/server/core{ - unacidable = 1; - unslashable = 1 - }, -/obj/structure/sign/safety/rewire{ - pixel_x = 8; - pixel_y = 32 +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/plating, +/area/almayer/powered/agent) +"hvx" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "Hangar Lockdown"; + name = "\improper Hangar Lockdown Blast Door" }, /turf/open/floor/almayer{ - icon_state = "tcomms" + icon_state = "test_floor4" }, -/area/almayer/command/airoom) +/area/almayer/maint/hull/lower/l_f_p) "hvH" = ( /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) -"hvQ" = ( -/obj/effect/landmark/start/professor, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/offices) +"hwd" = ( +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/structure/surface/table/almayer, +/obj/item/fuelCell, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "hwC" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -39104,22 +36610,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"hwQ" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 8 - }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/execution) -"hwS" = ( -/obj/structure/bed/chair/comfy/black{ - dir = 1 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/chief_mp_office) "hxe" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -39133,20 +36623,6 @@ /obj/structure/surface/table/reinforced/black, /turf/open/floor/almayer, /area/almayer/command/cic) -"hxp" = ( -/obj/structure/surface/table/almayer, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "hxG" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -39180,6 +36656,12 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"hyb" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "hyc" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -39190,11 +36672,16 @@ icon_state = "plate" }, /area/almayer/squads/charlie_delta_shared) -"hyp" = ( -/turf/open/floor/almayer/research/containment/floor2{ - dir = 1 +"hyt" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 }, -/area/almayer/medical/containment/cell) +/turf/open/floor/almayer{ + dir = 6; + icon_state = "green" + }, +/area/almayer/hallways/starboard_hallway) "hyw" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -39208,27 +36695,24 @@ icon_state = "plate" }, /area/almayer/living/offices) -"hyz" = ( -/obj/structure/disposalpipe/junction{ - dir = 1 - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 +"hyE" = ( +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "ARES StairsLock"; + name = "ARES Exterior Lockdown" }, -/turf/open/floor/almayer{ - allow_construction = 0 +/obj/effect/step_trigger/ares_alert/access_control, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/processing) +/area/almayer/command/airoom) "hyQ" = ( /turf/closed/wall/almayer, /area/almayer/living/synthcloset) "hzb" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4; + icon_state = "exposed01-supply" }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/combat_correspondent) @@ -39239,6 +36723,16 @@ /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) +"hzl" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/food/snacks/mre_pack/meal5, +/obj/item/device/flashlight/lamp{ + pixel_x = 3; + pixel_y = 12 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/u_m_s) "hzs" = ( /obj/structure/bed, /obj/item/bedsheet/medical, @@ -39256,41 +36750,6 @@ icon_state = "cargo" }, /area/almayer/squads/delta) -"hzx" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "\improper Chief MP's Office"; - req_access = null; - req_one_access_txt = "1;3" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "CMP Office Shutters"; - name = "\improper Privacy Shutters" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/chief_mp_office) -"hzJ" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "courtyard_cells"; - name = "\improper Courtyard Lockdown Shutter" - }, -/obj/structure/machinery/door/poddoor/almayer/locked{ - id = "Cell 1"; - name = "\improper Courtyard Divider" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/cells) "hzL" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -39302,29 +36761,17 @@ dir = 4 }, /obj/structure/machinery/door/airlock/almayer/command/reinforced{ - name = "\improper Combat Information Center" + name = "\improper Combat Information Center"; + closeOtherId = "ciclobby_s" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/command/cic) -"hzM" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/tankerbunks) -"hzP" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/power/apc/almayer{ - dir = 1 - }, -/obj/structure/machinery/recharger, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "green" - }, -/area/almayer/living/grunt_rnr) +"hzN" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "hAc" = ( /obj/structure/surface/rack, /obj/item/mortar_shell/flare, @@ -39363,6 +36810,18 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"hAZ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "blue" + }, +/area/almayer/squads/delta) "hBc" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -39392,35 +36851,26 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"hBP" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"hBL" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" }, -/obj/item/folded_tent/med, +/area/almayer/command/lifeboat) +"hCk" = ( +/obj/structure/largecrate/random/barrel/red, /turf/open/floor/almayer{ - icon_state = "plating_striped" + icon_state = "plate" }, -/area/almayer/squads/req) -"hBU" = ( -/obj/structure/largecrate/random/secure, -/obj/effect/decal/warning_stripes{ - icon_state = "E" +/area/almayer/maint/hull/lower/l_m_s) +"hCq" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_p) -"hCo" = ( -/obj/structure/surface/table/almayer, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/lower/l_a_p) "hCt" = ( /obj/structure/sign/safety/terminal{ pixel_x = 15; @@ -39452,6 +36902,14 @@ icon_state = "plate" }, /area/almayer/medical/lower_medical_medbay) +"hCV" = ( +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/perma) "hDw" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/emails{ @@ -39459,6 +36917,13 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"hDL" = ( +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/starboard_hallway) "hDR" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/syringe_case{ @@ -39474,6 +36939,13 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) +"hDV" = ( +/obj/structure/surface/table/almayer, +/obj/effect/landmark/map_item, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/living/briefing) "hDX" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -39489,52 +36961,54 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"hEt" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/glass/bucket/mopbucket{ - pixel_x = -8 +"hEj" = ( +/obj/structure/machinery/vending/hydronutrients, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/item/reagent_container/glass/bucket/mopbucket{ - pixel_y = 12 +/area/almayer/maint/hull/upper/u_a_s) +"hEl" = ( +/obj/structure/machinery/alarm/almayer{ + dir = 1 }, -/obj/item/clothing/head/militia/bucket{ - pixel_x = 5; - pixel_y = -5 +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"hEr" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 18 }, -/obj/item/reagent_container/spray/cleaner{ +/obj/structure/filingcabinet{ + density = 0; pixel_x = 8; - pixel_y = -1 + pixel_y = 18 }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"hER" = ( /turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/containment) -"hEU" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/glass/beaker{ - pixel_x = 8 - }, -/obj/item/reagent_container/spray/cleaner{ - pixel_x = -3 + icon_state = "plate" }, -/obj/item/reagent_container/dropper{ - pixel_y = -3 +/area/almayer/maint/hull/upper/u_a_s) +"hEw" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 10 }, +/obj/structure/machinery/meter, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_corner" + icon_state = "orange" }, -/area/almayer/medical/containment) +/area/almayer/engineering/lower) "hEV" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"hFw" = ( +/obj/structure/machinery/disposal/broken, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "hFC" = ( -/obj/structure/bed/chair/office/dark, +/obj/structure/bed/chair/comfy, /turf/open/floor/almayer{ dir = 8; icon_state = "sterile_green_side" @@ -39542,6 +37016,7 @@ /area/almayer/medical/medical_science) "hFF" = ( /obj/structure/machinery/door/airlock/almayer/medical{ + access_modified = 1; name = "Autopsy"; req_access_txt = "25"; req_one_access = null @@ -39551,20 +37026,13 @@ icon_state = "test_floor4" }, /area/almayer/medical/morgue) -"hFW" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"hGB" = ( -/obj/structure/machinery/light, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"hGD" = ( +"hGG" = ( +/obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ - icon_state = "W" + icon_state = "S" }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/hallways/upper/starboard) "hGN" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -39591,12 +37059,25 @@ icon_state = "silver" }, /area/almayer/living/briefing) -"hGZ" = ( -/obj/structure/disposalpipe/segment, +"hGV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) +"hHe" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/hallways/upper/starboard) "hHl" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/storage/pouch/general/large, @@ -39633,18 +37114,29 @@ icon_state = "orange" }, /area/almayer/hallways/starboard_umbilical) -"hHU" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, -/obj/item/reagent_container/glass/bucket/mopbucket{ - pixel_x = 7; - pixel_y = -3 +"hIp" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/l_a_p) +"hIs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/command/corporateliaison) +"hIG" = ( +/obj/structure/largecrate/random, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "hII" = ( /obj/structure/machinery/cm_vending/gear/tl{ density = 0; @@ -39659,26 +37151,21 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"hIL" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "cl_shutters 2"; - name = "\improper Privacy Shutters" - }, -/obj/structure/machinery/door/airlock/almayer/maint{ - req_access_txt = "200"; - req_one_access = null - }, +"hIX" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"hJg" = ( +/obj/structure/pipes/trinary/mixer{ + dir = 4; + name = "Gas mixer N2/O2" }, -/area/almayer/command/corporateliason) -"hJb" = ( -/obj/item/tool/pen, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "orange" }, -/area/almayer/hull/lower_hull/l_a_s) +/area/almayer/engineering/lower) "hJk" = ( /obj/structure/stairs/perspective{ dir = 4; @@ -39689,9 +37176,6 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"hJp" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "hJu" = ( /obj/structure/sign/safety/stairs{ pixel_x = -15 @@ -39701,33 +37185,32 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"hJz" = ( -/obj/structure/sign/safety/restrictedarea, -/obj/structure/sign/safety/security{ - pixel_x = 15 +"hJD" = ( +/obj/structure/bed/sofa/south/grey/right{ + pixel_y = 12 }, -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_f_s) -"hJJ" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"hJI" = ( +/obj/structure/pipes/vents/pump{ dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"hKe" = ( -/obj/structure/sign/poster/safety, -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_f_s) -"hKi" = ( -/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"hKl" = ( +/obj/structure/pipes/vents/pump, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "mono" }, -/area/almayer/hull/upper_hull/u_f_s) -"hKl" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall/almayer/white/outer_tile, -/area/almayer/medical/medical_science) +/area/almayer/medical/hydroponics) "hKq" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -39737,11 +37220,34 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"hKQ" = ( +"hKO" = ( +/obj/structure/largecrate/random/barrel/green, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = 32 + }, /turf/open/floor/almayer{ - icon_state = "cargo_arrow" + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) +"hLt" = ( +/obj/structure/sign/poster{ + desc = "It says DRUG."; + icon_state = "poster2"; + pixel_y = 30 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) +"hLu" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 }, -/area/almayer/engineering/engineering_workshop/hangar) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/p_bow) "hLC" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer{ @@ -39753,16 +37259,24 @@ icon_state = "red" }, /area/almayer/living/cryo_cells) -"hLO" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 +"hLS" = ( +/obj/structure/machinery/door/airlock/almayer/marine/delta{ + dir = 1 }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/briefing) +"hMc" = ( +/obj/structure/bed/chair/comfy/orange{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/chief_mp_office) "hMi" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer, @@ -39774,22 +37288,39 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) -"hMI" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/binoculars, -/obj/item/device/whistle{ - pixel_y = 5 - }, +"hMG" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer, +/area/almayer/engineering/lower) +"hMM" = ( +/obj/structure/largecrate/random/barrel/white, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/upper/s_bow) "hMN" = ( /obj/structure/machinery/power/apc/almayer, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_three) +"hNh" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"hNl" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21"; + pixel_y = 16 + }, +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "hNw" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -39797,37 +37328,6 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/squads/charlie) -"hND" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Brig Lockdown Shutters"; - name = "\improper Brig Lockdown Shutter" - }, -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - dir = 1; - name = "\improper Brig" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/main_office) -"hNL" = ( -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "green" - }, -/area/almayer/hallways/port_hallway) "hNM" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/stack/sheet/metal{ @@ -39837,19 +37337,23 @@ /obj/item/tool/shovel/etool/folded, /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) -"hOe" = ( -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 +"hNP" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Core Hatch" }, -/obj/structure/sign/safety/airlock{ - pixel_x = 32; - pixel_y = -8 +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) +"hNY" = ( +/obj/structure/machinery/firealarm{ + pixel_y = 28 }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/shipboard/brig/chief_mp_office) "hOR" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -39859,41 +37363,38 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) +"hOV" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/lower/constr) "hPe" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 2; - id = "researchlockdownint"; - name = "\improper Research Lockdown" - }, /obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ - dir = 1; - name = "\improper Medical Research Wing" +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/research, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "researchlockdownext_door"; + name = "\improper Research Doorway Shutter" }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/medical/medical_science) -"hPg" = ( -/obj/structure/machinery/constructable_frame{ - icon_state = "box_2" - }, +"hPh" = ( +/obj/structure/bed/chair/comfy, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "silver" }, -/area/almayer/hull/upper_hull/u_a_p) -"hPo" = ( -/obj/structure/surface/rack, -/obj/item/tool/wet_sign, -/obj/item/tool/wet_sign, +/area/almayer/living/auxiliary_officer_office) +"hPu" = ( +/obj/structure/largecrate/supply, +/obj/item/tool/crowbar, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/upper/u_f_p) +"hPI" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/shipboard/brig/perma) "hPK" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -39902,27 +37403,17 @@ }, /area/almayer/hallways/stern_hallway) "hPN" = ( -/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ - id = "Containment Cell 1"; - locked = 1; - name = "\improper Containment Cell 1" - }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "Containment Cell 1"; - name = "\improper Containment Cell 1"; - unacidable = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 }, -/area/almayer/medical/containment/cell) -"hPT" = ( -/obj/structure/largecrate/random/case/small, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 5; + icon_state = "sterile_green_side" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/medical/hydroponics) "hQc" = ( /obj/structure/window/reinforced{ dir = 4; @@ -39935,6 +37426,23 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie_delta_shared) +"hQw" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) +"hQK" = ( +/obj/effect/step_trigger/clone_cleaner, +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/u_m_p) +"hQP" = ( +/obj/structure/reagent_dispensers/fueltank/custom, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "hQU" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -39969,57 +37477,129 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"hRd" = ( -/obj/structure/machinery/vending/coffee, -/turf/open/floor/almayer{ - icon_state = "plate" +"hRa" = ( +/obj/structure/machinery/vending/snack{ + pixel_x = -7 }, -/area/almayer/squads/alpha) -"hRg" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 +/obj/structure/machinery/vending/coffee{ + pixel_x = 14 }, -/obj/structure/prop/invuln/lattice_prop{ - dir = 1; - icon_state = "lattice-simple"; - pixel_x = -16; - pixel_y = -15 +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/medical_science) +"hRc" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/port) +"hRd" = ( +/obj/structure/machinery/vending/coffee, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) -"hRi" = ( -/obj/structure/pipes/vents/scrubber{ - dir = 1 +/area/almayer/squads/alpha) +"hRk" = ( +/obj/structure/machinery/cm_vending/clothing/senior_officer{ + density = 0; + pixel_y = 30 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) -"hRy" = ( -/obj/structure/surface/rack, -/obj/item/storage/firstaid/adv{ - pixel_x = 6; - pixel_y = 6 +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/numbertwobunks) +"hRA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/bed/chair{ + dir = 4 }, -/obj/item/storage/firstaid/regular, /turf/open/floor/almayer{ - dir = 8; - icon_state = "redcorner" + icon_state = "plate" }, -/area/almayer/shipboard/brig/execution) +/area/almayer/maint/hull/lower/l_f_s) +"hRW" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/obj/structure/sign/safety/rewire{ + pixel_y = 38 + }, +/obj/structure/sign/safety/laser{ + pixel_y = 24 + }, +/obj/structure/machinery/computer/crew/alt{ + dir = 4; + pixel_x = -17 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = 14; + pixel_y = 24 + }, +/obj/structure/sign/safety/fibre_optics{ + pixel_x = 14; + pixel_y = 38 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"hSb" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"hSj" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + dir = 1; + name = "\improper Brig"; + closeOtherId = "brigmaint_n" + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/s_bow) "hSk" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) -"hSu" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 +"hSt" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) +"hSv" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper Starboard Viewing Room" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/upper/u_f_s) "hSw" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -40030,6 +37610,7 @@ /area/almayer/living/grunt_rnr) "hSI" = ( /obj/structure/machinery/door/airlock/almayer/medical{ + access_modified = 1; dir = 2; name = "Morgue"; req_access_txt = "25"; @@ -40062,14 +37643,18 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"hTk" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -16; - pixel_y = 13 +"hTl" = ( +/obj/structure/prop/server_equipment/yutani_server{ + density = 0; + desc = "A powerful server tower housing various AI functions."; + name = "server tower"; + pixel_y = 16 }, -/turf/closed/wall/almayer/outer, -/area/almayer/hull/lower_hull/l_a_p) +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "hTt" = ( /obj/structure/machinery/brig_cell/cell_1{ pixel_x = 32; @@ -40079,21 +37664,18 @@ allow_construction = 0 }, /area/almayer/shipboard/brig/processing) -"hTu" = ( -/obj/structure/machinery/light, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"hTy" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 +"hTF" = ( +/obj/structure/machinery/suit_storage_unit/compression_suit/uscm{ + isopen = 1; + starting_helmet_type = null; + starting_mask_type = null; + starting_suit_type = null; + starting_tank_type = null }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 2 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) +/area/almayer/engineering/upper_engineering/port) "hTP" = ( /obj/structure/machinery/door_control{ id = "crate_room2"; @@ -40125,27 +37707,51 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"hUc" = ( -/obj/structure/machinery/light/small{ - dir = 8 +"hTU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 }, +/obj/structure/largecrate/random/secure, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) -"hUg" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"hUR" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/area/almayer/maint/hull/lower/l_a_p) +"hUb" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/machinery/light, +/area/almayer/maint/hull/upper/u_m_s) +"hUk" = ( /turf/open/floor/almayer{ - icon_state = "sterile_green_side" + dir = 10; + icon_state = "orange" }, -/area/almayer/medical/medical_science) +/area/almayer/engineering/lower/engine_core) +"hUz" = ( +/obj/structure/largecrate/supply/supplies/mre{ + desc = "A supply crate containing everything you need to stop a CLF uprising."; + name = "\improper USCM crate 'FOB supplies'" + }, +/obj/item/folded_tent/big{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/storage/box/mousetraps{ + pixel_x = 3; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/port_emb) "hUW" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -40156,6 +37762,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) +"hVf" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) "hVz" = ( /obj/structure/machinery/light{ dir = 1 @@ -40165,36 +37780,12 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"hVO" = ( -/obj/structure/closet/l3closet/general, -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/sign/safety/biolab{ - pixel_y = 32 - }, -/obj/structure/sign/safety/biohazard{ - pixel_x = 15; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "sterile_green_corner" - }, -/area/almayer/medical/containment) -"hWa" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/ashtray/plastic, -/obj/item/trash/cigbutt{ - pixel_x = 4 - }, -/obj/item/trash/cigbutt{ - pixel_x = -10; - pixel_y = 13 - }, +"hVL" = ( +/obj/structure/largecrate/random/barrel/red, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/l_f_p) "hWq" = ( /obj/structure/platform{ layer = 3.1 @@ -40233,6 +37824,33 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) +"hWB" = ( +/obj/structure/sign/safety/escapepod{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) +"hWH" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "hWJ" = ( /obj/structure/largecrate/random/case/small, /turf/open/floor/almayer{ @@ -40273,28 +37891,67 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) +"hXm" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/cic_hallway) +"hXD" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) +"hXG" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) +"hXV" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) +"hXX" = ( +/obj/effect/projector{ + name = "Almayer_Down4"; + vector_x = 19; + vector_y = -104 + }, +/turf/open/floor/almayer{ + allow_construction = 0; + icon_state = "plate" + }, +/area/almayer/hallways/upper/port) "hXY" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "blue" }, /area/almayer/squads/delta) -"hYc" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/kitchen/tray, -/obj/item/tool/kitchen/tray{ - pixel_y = 6 - }, -/obj/item/reagent_container/food/snacks/sliceable/bread{ - pixel_y = 8 - }, -/obj/item/tool/kitchen/knife{ - pixel_x = 6 - }, +"hYf" = ( +/obj/effect/landmark/yautja_teleport, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_a_s) "hYn" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -40307,12 +37964,67 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"hYE" = ( +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "hYG" = ( /obj/structure/bed/chair{ dir = 1 }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"hZe" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/machinery/disposal/delivery{ + density = 0; + desc = "A pneumatic delivery unit. Sends items to the requisitions."; + icon_state = "delivery_engi"; + name = "Requisitions Delivery Unit"; + pixel_y = 28 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"hZj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"hZw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) +"hZE" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) +"hZJ" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/processing) "hZN" = ( /obj/structure/machinery/medical_pod/bodyscanner, /obj/structure/disposalpipe/segment{ @@ -40329,7 +38041,7 @@ "hZU" = ( /obj/structure/transmitter{ name = "Brig Offices Telephone"; - phone_category = "Almayer"; + phone_category = "MP Dept."; phone_id = "Brig Main Offices"; pixel_y = 32 }, @@ -40338,6 +38050,16 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) +"hZZ" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) +"iaa" = ( +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "iag" = ( /obj/structure/surface/table/almayer, /obj/item/tool/hand_labeler, @@ -40358,12 +38080,6 @@ icon_state = "plate" }, /area/almayer/command/cichallway) -"iaj" = ( -/obj/structure/bed/chair/comfy/orange{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) "ial" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -40414,6 +38130,24 @@ icon_state = "plating_striped" }, /area/almayer/squads/req) +"ibf" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/s_bow) +"ibP" = ( +/obj/structure/sign/safety/maint{ + pixel_x = -19; + pixel_y = -6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = -19; + pixel_y = 6 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "icp" = ( /turf/open/floor/almayer{ dir = 8; @@ -40431,25 +38165,22 @@ }, /area/almayer/medical/lower_medical_medbay) "icM" = ( -/turf/closed/wall/almayer/research/containment/wall/north, -/area/almayer/medical/containment/cell) -"icX" = ( -/obj/structure/machinery/brig_cell/perma_2{ - pixel_x = -32; - pixel_y = -4 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/obj/structure/machinery/door_control{ - id = "Perma 2L"; - name = "Perma 2 Lockdown"; - pixel_x = -24; - pixel_y = 12; - req_access_txt = "3" +/obj/structure/machinery/vending/snack{ + density = 0; + pixel_y = 16 }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/cells) +"icZ" = ( +/obj/structure/closet/secure_closet/brig, /turf/open/floor/almayer{ dir = 8; - icon_state = "red" + icon_state = "redcorner" }, -/area/almayer/shipboard/brig/perma) +/area/almayer/shipboard/brig/processing) "idx" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -40462,21 +38193,40 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) +"idL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "idX" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/prison{ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) -"ieo" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +"ied" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"ien" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; + pixel_y = 32 }, -/area/almayer/shipboard/brig/general_equipment) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "ieu" = ( /obj/structure/window/reinforced{ dir = 4; @@ -40533,13 +38283,20 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_lobby) -"ieH" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = -32 +"ieF" = ( +/obj/effect/projector{ + name = "Almayer_AresUp"; + vector_x = -97; + vector_y = 65 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/turf/open/floor/almayer/no_build{ + dir = 4 + }, +/area/almayer/command/airoom) "ieX" = ( /obj/structure/surface/table/almayer, /obj/structure/sign/safety/distribution_pipes{ @@ -40547,6 +38304,13 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"ifb" = ( +/obj/structure/machinery/cm_vending/sorted/cargo_guns/vehicle_crew{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor/almayer, +/area/almayer/living/tankerbunks) "iff" = ( /obj/structure/sign/safety/reception{ pixel_x = 32; @@ -40557,37 +38321,21 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) -"ifR" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 +"igb" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"igf" = ( -/obj/structure/largecrate/random/case{ - layer = 2.98 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"igp" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/flashlight/lamp{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/clothing/glasses/monocle, -/obj/item/reagent_container/food/drinks/coffee{ - pixel_x = -7; - pixel_y = -2 +/area/almayer/maint/hull/lower/l_m_s) +"igr" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" }, -/obj/item/weapon/pole/fancy_cane{ - pixel_x = 5 +/turf/open/floor/almayer/no_build{ + icon_state = "tcomms" }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/area/almayer/command/airoom) "igt" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -40599,14 +38347,39 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"ihn" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/food/drinks/cans/souto/blue{ - pixel_x = 2; - pixel_y = 3 +"igw" = ( +/obj/structure/sign/poster/ad{ + pixel_x = 30 + }, +/obj/structure/closet, +/obj/item/clothing/mask/cigarette/weed, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"igS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" }, +/obj/structure/closet/emcloset, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/upper/p_bow) +"iho" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Hangar Lockdown"; + name = "\improper Hangar Lockdown Blast Door" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/lower/constr) "ihw" = ( /obj/structure/machinery/cm_vending/sorted/medical, /turf/open/floor/almayer{ @@ -40615,7 +38388,10 @@ }, /area/almayer/medical/lower_medical_medbay) "ihM" = ( -/obj/structure/machinery/cm_vending/clothing/marine/delta, +/obj/structure/machinery/cm_vending/clothing/marine/delta{ + density = 0; + pixel_y = 16 + }, /obj/structure/sign/safety/cryo{ pixel_x = 32 }, @@ -40637,40 +38413,41 @@ icon_state = "test_floor4" }, /area/almayer/squads/bravo) -"iid" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 2; - req_one_access = null; - req_one_access_txt = "19;34;30" +"iis" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + dir = 1; + name = "\improper Brig Prison Yard And Offices"; + closeOtherId = "brigcells" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/shipboard/brig/processing) "iit" = ( -/obj/effect/landmark/ert_spawns/distress_cryo, -/obj/effect/landmark/late_join, -/obj/effect/landmark/start/reporter, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/cryo_cells) -"iiz" = ( -/obj/structure/surface/rack, -/obj/item/reagent_container/food/drinks/bottle/sake{ - pixel_x = 5; - pixel_y = 5 +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, -/obj/item/reagent_container/food/drinks/bottle/sake{ - pixel_x = 5; - pixel_y = 5 +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 }, -/obj/item/reagent_container/food/drinks/bottle/sake, -/obj/item/reagent_container/food/drinks/bottle/sake{ - pixel_x = -4 +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "mono" }, -/area/almayer/command/corporateliason) +/area/almayer/medical/hydroponics) "iiC" = ( /obj/structure/sign/safety/maint{ pixel_x = 8; @@ -40681,55 +38458,29 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"iiP" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "iiZ" = ( /obj/structure/machinery/cm_vending/sorted/marine_food, /turf/open/floor/almayer{ icon_state = "bluefull" }, /area/almayer/command/cichallway) -"ije" = ( -/obj/item/tool/weldingtool, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/hull/upper_hull/u_a_p) -"ijn" = ( -/obj/structure/surface/rack, -/obj/item/reagent_container/food/snacks/monkeycube/wrapped/farwacube{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/reagent_container/food/snacks/monkeycube/wrapped/neaeracube{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/reagent_container/food/snacks/monkeycube/wrapped/stokcube{ - pixel_x = -4; - pixel_y = -4 - }, -/obj/item/reagent_container/food/snacks/monkeycube/wrapped/yirencube{ - pixel_x = 4; - pixel_y = -4 - }, +"ijf" = ( +/obj/structure/surface/table/almayer, +/obj/item/cell/crap, +/obj/item/tool/crowbar, +/obj/structure/machinery/cell_charger, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/command/corporateliason) -"ijp" = ( -/obj/structure/surface/rack, -/obj/item/storage/toolbox/mechanical, -/obj/effect/spawner/random/tool, +/area/almayer/engineering/lower/workshop) +"ijr" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "redfull" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/living/briefing) "ijQ" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/door_control{ @@ -40749,47 +38500,69 @@ }, /turf/open/floor/wood/ship, /area/almayer/shipboard/sea_office) -"ijU" = ( -/obj/item/tool/wet_sign, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) -"ikM" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/cameras/almayer_network, -/obj/structure/machinery/computer/secure_data{ - pixel_x = 17 +"iks" = ( +/obj/structure/pipes/binary/pump/high_power/on{ + dir = 1 }, -/obj/structure/machinery/computer/card{ - pixel_x = -16 +/turf/open/floor/almayer{ + icon_state = "orange" }, -/obj/structure/machinery/light{ - dir = 1 +/area/almayer/engineering/lower) +"ikv" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 4 }, -/obj/structure/sign/safety/terminal{ - pixel_x = 8; - pixel_y = 32 +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" }, +/area/almayer/engineering/lower) +"ikA" = ( +/obj/effect/landmark/yautja_teleport, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/shipboard/brig/main_office) -"ils" = ( -/obj/structure/window/framed/almayer/hull, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_f_p) -"ilv" = ( -/obj/structure/surface/table/almayer, -/obj/item/folder/black_random{ - pixel_x = 3; - pixel_y = 3 +/area/almayer/maint/hull/lower/s_bow) +"ikC" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" }, -/obj/item/tool/stamp{ - name = "Corporate Liaison's stamp"; - pixel_x = -8; +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) +"ikQ" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/tool/stamp/hop{ + name = "Commanding Officer's rubber stamp"; + pixel_x = -5; + pixel_y = 9 + }, +/obj/item/paper_bin/uscm{ + pixel_x = 7; pixel_y = 6 }, +/obj/item/tool/pen/red/clicky{ + pixel_x = -6; + pixel_y = 3 + }, +/obj/item/tool/pen/blue/clicky{ + pixel_x = -6; + pixel_y = -3 + }, /turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/area/almayer/living/commandbunks) +"ikT" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) +"ilq" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "ily" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -40810,14 +38583,11 @@ /area/almayer/hallways/hangar) "ilJ" = ( /obj/structure/bed/chair, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"ilZ" = ( -/obj/effect/spawner/random/toolbox, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "imo" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -40831,17 +38601,33 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) +"imt" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks{ + density = 0; + pixel_y = 17 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) "imy" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/living/offices/flight) -"ina" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/tool, -/turf/open/floor/almayer{ - icon_state = "mono" +"inh" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 }, -/area/almayer/lifeboat_pumps/south1) +/obj/structure/disposalpipe/junction{ + dir = 4; + icon_state = "pipe-y" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cic_hallway) +"ins" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "inw" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -40849,39 +38635,16 @@ }, /turf/open/floor/plating, /area/almayer/engineering/upper_engineering) -"inC" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) -"inG" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) "inL" = ( -/turf/open/floor/almayer{ - icon_state = "sterile_green_corner" - }, -/area/almayer/medical/containment) -"inN" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) -"ioj" = ( -/obj/structure/largecrate/random/barrel/green, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "sterile_green_side" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/medical/medical_science) "iow" = ( /obj/structure/machinery/cm_vending/sorted/attachments/squad{ req_access = null; @@ -40893,9 +38656,41 @@ icon_state = "plate" }, /area/almayer/squads/alpha_bravo_shared) +"ioH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) +"ioM" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) +"ioP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/hazard{ + pixel_x = -17; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "ioU" = ( /turf/closed/wall/almayer, /area/almayer/command/securestorage) +"ioV" = ( +/obj/structure/machinery/power/apc/almayer, +/obj/structure/sign/safety/rewire{ + pixel_y = -38 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/general_equipment) "ioX" = ( /turf/open/floor/almayer{ dir = 6; @@ -40917,12 +38712,39 @@ }, /turf/open/floor/plating, /area/almayer/living/port_emb) -"ipD" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 +"ipk" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/turf/open/floor/almayer, +/area/almayer/maint/hull/lower/l_f_s) +"ipn" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"ipr" = ( +/obj/item/tool/weldpack{ + pixel_y = 15 + }, +/obj/structure/surface/table/almayer, +/obj/item/clothing/head/welding, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) +"ipB" = ( +/obj/structure/surface/rack, +/obj/item/tool/kitchen/rollingpin, +/obj/item/tool/hatchet, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) "ipE" = ( /obj/structure/bed/chair{ dir = 8 @@ -40932,43 +38754,41 @@ }, /area/almayer/squads/alpha_bravo_shared) "ipK" = ( -/obj/structure/largecrate/random/case/small, +/obj/effect/step_trigger/message/memorial, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/living/starboard_garden) "ipQ" = ( -/obj/structure/window/reinforced{ - dir = 8; - health = 80 +/obj/structure/surface/rack, +/obj/item/storage/fancy/vials/empty, +/obj/item/storage/fancy/vials/empty, +/obj/item/storage/fancy/vials/empty, +/obj/item/storage/fancy/vials/empty, +/obj/item/storage/fancy/vials/empty, +/obj/item/storage/fancy/vials/empty, +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/obj/structure/machinery/door/window/southleft{ - req_access_txt = "28" +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_x = -29 }, /turf/open/floor/almayer{ icon_state = "sterile_green" }, -/area/almayer/medical/medical_science) -"ipT" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/medical/hydroponics) "iqd" = ( /obj/structure/bed/chair/office/dark{ dir = 8 }, /turf/open/floor/almayer, /area/almayer/command/computerlab) -"iqn" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) "iqo" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22" }, -/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ dir = 10; icon_state = "green" @@ -40976,21 +38796,14 @@ /area/almayer/squads/req) "iqp" = ( /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; req_one_access = null; - req_one_access_txt = "19;27" + req_one_access_txt = "37" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/living/tankerbunks) -"iqx" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/living/auxiliary_officer_office) "iqH" = ( /obj/item/trash/chips{ pixel_x = 9; @@ -41002,14 +38815,15 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"irn" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) -"irr" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +"iqR" = ( +/obj/structure/sign/safety/cryo{ + pixel_x = -16 + }, +/obj/structure/machinery/cryopod, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/shipboard/brig/cryo) "iry" = ( /obj/structure/platform{ dir = 8 @@ -41019,28 +38833,12 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) -"irA" = ( -/turf/closed/wall/almayer/white/reinforced, -/area/almayer/medical/containment) -"irI" = ( -/obj/structure/sign/safety/maint{ - pixel_y = 32 - }, -/obj/structure/sign/safety/storage{ - pixel_x = 15; - pixel_y = 32 - }, -/turf/open/floor/almayer, -/area/almayer/hallways/starboard_hallway) -"irJ" = ( -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, +"irF" = ( +/obj/structure/closet/emcloset/legacy, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "cargo" }, -/area/almayer/shipboard/brig/general_equipment) +/area/almayer/shipboard/brig/main_office) "irS" = ( /obj/effect/decal/cleanable/blood/oil, /obj/structure/cable/heavyduty{ @@ -41055,24 +38853,58 @@ }, /turf/open/floor/plating, /area/almayer/living/port_emb) -"isC" = ( +"irU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor/almayer{ - icon_state = "tcomms" + icon_state = "sterile_green_side" }, -/area/almayer/command/airoom) -"isH" = ( -/obj/structure/reagent_dispensers/water_cooler/stacks{ - density = 0; - pixel_y = 17 +/area/almayer/medical/medical_science) +"ish" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" }, -/obj/structure/pipes/standard/manifold/hidden/supply{ +/area/almayer/engineering/lower/workshop) +"isq" = ( +/obj/structure/machinery/light/small{ dir = 1 }, +/obj/structure/largecrate/random/secure, /turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) +"isC" = ( +/obj/effect/projector{ + name = "Almayer_AresDown"; + vector_x = 97; + vector_y = -65 + }, +/obj/structure/stairs{ dir = 1; - icon_state = "red" + icon_state = "ramptop" }, -/area/almayer/shipboard/brig/general_equipment) +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"isI" = ( +/obj/structure/sign/nosmoking_2{ + pixel_x = 32 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/lifeboat_pumps/north1) "isN" = ( /obj/structure/sink{ dir = 8; @@ -41084,16 +38916,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) -"isS" = ( -/obj/item/stack/sheet/cardboard{ - amount = 50 - }, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "green" - }, -/area/almayer/squads/req) "isW" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -41103,6 +38925,45 @@ icon_state = "bluecorner" }, /area/almayer/hallways/aft_hallway) +"itf" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/door_control{ + id = "ARES Interior"; + indestructible = 1; + name = "ARES Chamber Lockdown"; + pixel_x = -24; + pixel_y = 8; + req_one_access_txt = "90;91;92" + }, +/obj/structure/machinery/door/poddoor/railing{ + closed_layer = 4; + density = 0; + id = "ARES Railing"; + layer = 2.1; + open_layer = 2.1; + unacidable = 0; + unslashable = 0 + }, +/turf/open/floor/almayer/no_build{ + dir = 8; + icon_state = "silver" + }, +/area/almayer/command/airoom) +"ito" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/machinery/status_display{ + pixel_x = -32 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "itR" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -41124,10 +38985,26 @@ icon_state = "red" }, /area/almayer/command/lifeboat) +"iuf" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) "iun" = ( /obj/effect/spawner/random/tool, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) +"iup" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) "iur" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -41137,35 +39014,6 @@ icon_state = "silvercorner" }, /area/almayer/command/cichallway) -"iuu" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/head/hardhat/orange{ - pixel_x = -9; - pixel_y = 16 - }, -/obj/item/clothing/suit/storage/hazardvest/blue{ - pixel_x = -7; - pixel_y = -4 - }, -/obj/item/clothing/head/hardhat{ - pixel_x = 10; - pixel_y = 1 - }, -/obj/item/clothing/suit/storage/hazardvest{ - pixel_x = 1 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"iuy" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/plating, -/area/almayer/living/briefing) "iuz" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/warhead, @@ -41183,16 +39031,17 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"iuT" = ( -/obj/structure/closet/emcloset, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"iuG" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"iuI" = ( +/obj/structure/sign/safety/maint{ + pixel_x = 32 }, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "ivf" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/camera, @@ -41213,6 +39062,10 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"ivu" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "ivz" = ( /obj/structure/closet, /turf/open/floor/almayer{ @@ -41225,6 +39078,12 @@ icon_state = "test_floor4" }, /area/almayer/hallways/port_hallway) +"ivL" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "ivM" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -41233,14 +39092,19 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"iwh" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, +"ivS" = ( +/obj/structure/machinery/suit_storage_unit/carbon_unit, +/obj/structure/machinery/light, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/engineering/lower) +"iwf" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "iwB" = ( /obj/structure/machinery/washing_machine, /obj/structure/machinery/washing_machine{ @@ -41254,10 +39118,58 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) +"iwI" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/almayer/generic{ + access_modified = 1; + name = "Storage"; + req_one_access_txt = "19;21" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/squads/req) +"iwJ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_y = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/almayer/research/containment/entrance{ + dir = 8 + }, +/area/almayer/medical/containment/cell) +"iwV" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 8; + id = "bot_armory"; + name = "\improper Armory Shutters" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 8 + }, +/turf/open/floor/plating, +/area/almayer/shipboard/brig/armory) "iwW" = ( /obj/structure/bed/chair/comfy/beige, /turf/open/floor/carpet, /area/almayer/command/cichallway) +"iwZ" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/fancy/cigarettes/lucky_strikes, +/obj/item/packageWrap, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "green" + }, +/area/almayer/squads/req) "ixj" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/crew/alt, @@ -41265,6 +39177,14 @@ icon_state = "sterile_green" }, /area/almayer/medical/lockerroom) +"ixu" = ( +/obj/structure/largecrate/random/case{ + layer = 2.98 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "ixv" = ( /obj/structure/bed/chair/comfy/blue{ dir = 4 @@ -41296,19 +39216,14 @@ /area/almayer/squads/delta) "ixN" = ( /obj/structure/largecrate, -/obj/item/prop/almayer/handheld1{ - pixel_y = 12 +/obj/item/folded_tent/reqs{ + pixel_x = -3; + pixel_y = 10 }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/squads/req) -"ixP" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "ixQ" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -41316,28 +39231,36 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) -"iyq" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 2; - id = "Warden Office Shutters"; - name = "\improper Privacy Shutters" - }, -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - dir = 1; - name = "\improper Warden Office" +"iyE" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) +"iyF" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 9 }, -/area/almayer/shipboard/brig/main_office) -"iyQ" = ( /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"iyH" = ( +/obj/structure/surface/table/reinforced/almayer_B{ + climbable = 0; + desc = "A square metal surface resting on its fat metal bottom. You can't flip something that doesn't have legs. This one has a metal rail running above it, preventing something large passing over. Like you."; + indestructible = 1; + unacidable = 1; + unslashable = 1 }, -/area/almayer/hull/lower_hull/l_f_s) +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "iyS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -41359,13 +39282,6 @@ icon_state = "plate" }, /area/almayer/living/offices) -"izx" = ( -/obj/structure/reagent_dispensers/water_cooler/stacks{ - density = 0; - pixel_y = 17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "izG" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -41381,10 +39297,6 @@ icon_state = "plate" }, /area/almayer/squads/alpha) -"izU" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "izY" = ( /obj/structure/machinery/autodoc_console, /turf/open/floor/almayer{ @@ -41404,12 +39316,15 @@ /turf/open/floor/almayer, /area/almayer/hallways/hangar) "iAz" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ - dir = 1; + dir = 10; icon_state = "sterile_green_side" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) "iAB" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = -25 @@ -41418,6 +39333,14 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) +"iAE" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) "iAT" = ( /obj/structure/sign/safety/south{ pixel_x = -17; @@ -41428,26 +39351,24 @@ icon_state = "blue" }, /area/almayer/hallways/port_hallway) -"iBt" = ( -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_p) -"iBE" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/almayer{ - icon_state = "plate" +"iBl" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 4 }, -/area/almayer/hull/lower_hull/l_f_s) -"iBG" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 +/obj/structure/sign/safety/rewire{ + pixel_x = 7; + pixel_y = -30 }, -/obj/structure/reagent_dispensers/fueltank{ - anchored = 1 +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/cells) +"iBu" = ( +/obj/structure/sign/safety/storage{ + pixel_x = -17 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/lower/p_bow) "iBY" = ( /obj/structure/machinery/vending/snack, /turf/open/floor/almayer{ @@ -41455,19 +39376,6 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"iCe" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/machinery/status_display{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "iCu" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -41488,6 +39396,14 @@ icon_state = "test_floor4" }, /area/almayer/command/cichallway) +"iCD" = ( +/obj/structure/bed/chair/comfy/orange{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "iCF" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -41506,66 +39422,104 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/vehiclehangar) -"iDm" = ( -/obj/structure/machinery/light/small{ +"iDk" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"iDs" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"iDN" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) -"iDT" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/spray/cleaner{ - pixel_x = 7; - pixel_y = 14 +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/starboard_hallway) +"iEa" = ( +/obj/structure/machinery/light/small, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/upper/p_bow) "iEb" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) +"iEg" = ( +/turf/open/floor/almayer{ + dir = 9; + icon_state = "silver" + }, +/area/almayer/living/auxiliary_officer_office) "iEr" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/starboard) -"iEs" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ +"iEw" = ( +/obj/structure/machinery/light{ dir = 1 }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/area/almayer/hull/upper_hull/u_a_p) -"iFc" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/turf/open/floor/wood/ship, -/area/almayer/shipboard/brig/cells) -"iFm" = ( -/obj/structure/machinery/light{ - dir = 1 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/disposaloutlet, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/area/almayer/engineering/lower/engine_core) +"iEx" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = 26 }, /turf/open/floor/almayer{ - dir = 4; - icon_state = "plating_striped" + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) +"iEz" = ( +/obj/structure/machinery/light, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21"; + pixel_y = 3 }, -/area/almayer/hull/lower_hull/l_m_p) +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"iFc" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/brig/cells) "iFn" = ( /turf/open/floor/almayer{ icon_state = "bluefull" }, /area/almayer/living/pilotbunks) +"iFA" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Port Railguns and Viewing Room" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_f_p) "iFC" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/map_item, @@ -41605,13 +39559,21 @@ icon_state = "test_floor4" }, /area/almayer/living/port_emb) -"iGg" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_container/food/snacks/tomatomeat, -/obj/item/reagent_container/food/snacks/tomatomeat, -/obj/item/reagent_container/food/snacks/tomatomeat, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +"iFY" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/sign/safety/cryo{ + pixel_x = 36 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/cryo_cells) +"iGc" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "iGn" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/closet/secure_closet/surgical{ @@ -41622,21 +39584,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_four) -"iGE" = ( -/obj/structure/janitorialcart, -/obj/item/tool/mop, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"iGK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "iGQ" = ( /obj/structure/machinery/landinglight/ds2/delayone{ dir = 8 @@ -41651,20 +39598,6 @@ "iHc" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/notunnel) -"iHF" = ( -/obj/structure/largecrate/random, -/obj/item/reagent_container/food/snacks/cheesecakeslice{ - pixel_y = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "iHG" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -41673,17 +39606,17 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/cells) -"iHO" = ( -/obj/structure/pipes/vents/scrubber{ - dir = 1 +"iIj" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" }, -/obj/item/storage/fancy/crayons{ - layer = 3.1; - pixel_x = -11; - pixel_y = 16 +/obj/structure/platform, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" }, -/turf/open/floor/wood/ship, -/area/almayer/living/grunt_rnr) +/area/almayer/engineering/lower/engine_core) "iIl" = ( /obj/structure/sink{ dir = 8; @@ -41694,6 +39627,20 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) +"iIH" = ( +/obj/structure/largecrate/supply/medicine/medivend{ + pixel_x = 3 + }, +/obj/structure/largecrate/random/mini/med{ + pixel_x = 3; + pixel_y = 11; + density = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/lower_medical_medbay) "iIP" = ( /obj/structure/toilet{ pixel_y = 16 @@ -41719,16 +39666,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/bravo) -"iIY" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"iJf" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "iJB" = ( /obj/structure/sign/safety/galley{ pixel_x = 8; @@ -41749,26 +39686,27 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"iKa" = ( -/obj/structure/sink{ - dir = 1; - pixel_y = -10 - }, -/obj/structure/pipes/vents/scrubber{ - dir = 1 - }, -/obj/structure/surface/rack{ - density = 0; - pixel_x = 26 +"iJT" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = 32 }, -/turf/open/floor/almayer, -/area/almayer/living/port_emb) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "iKb" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer{ icon_state = "orange" }, /area/almayer/hallways/hangar) +"iKc" = ( +/obj/structure/closet/firecloset, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "iKf" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -41811,15 +39749,24 @@ icon_state = "mono" }, /area/almayer/engineering/port_atmos) -"iKX" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 +"iKV" = ( +/obj/structure/platform{ + dir = 1 }, +/obj/structure/reagent_dispensers/watertank, /turf/open/floor/almayer{ - icon_state = "redcorner" + icon_state = "plate" }, -/area/almayer/shipboard/brig/general_equipment) +/area/almayer/maint/hull/upper/u_a_s) +"iKZ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "iLd" = ( /obj/structure/stairs/perspective{ dir = 1; @@ -41843,6 +39790,17 @@ icon_state = "orangefull" }, /area/almayer/living/briefing) +"iLo" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/structure/surface/table/almayer, +/obj/item/storage/donut_box, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "iLq" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -41867,21 +39825,20 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_lobby) +"iLG" = ( +/obj/structure/disposalpipe/junction{ + dir = 1; + icon_state = "pipe-j2" + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/processing) "iLO" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "silver" }, /area/almayer/command/computerlab) -"iLQ" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orangecorner" - }, -/area/almayer/hallways/starboard_hallway) "iMm" = ( /turf/open/floor/almayer, /area/almayer/living/grunt_rnr) @@ -41910,37 +39867,51 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"iNZ" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/bed/chair{ - dir = 16 +"iNk" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) +"iNR" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/area/almayer/hull/lower_hull/l_f_s) -"iOh" = ( -/obj/structure/machinery/light/small, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"iNY" = ( /obj/structure/machinery/status_display{ - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/armory) -"iOp" = ( -/obj/structure/pipes/vents/pump, -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" + pixel_x = 32; + pixel_y = 16 }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "iOD" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) +"iOX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) +"iPf" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) +"iPq" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "iPv" = ( /obj/structure/bed/chair/comfy, /obj/structure/window/reinforced/ultra, @@ -41952,23 +39923,53 @@ icon_state = "silver" }, /area/almayer/living/briefing) +"iPD" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/lifeboat) +"iPH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) +"iPN" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/station_alert, +/obj/structure/sign/safety/maint{ + pixel_x = 32 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/maint/upper/mess) "iPS" = ( /obj/structure/machinery/cryopod/right, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/squads/alpha) -"iQg" = ( +"iQd" = ( /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 4; + icon_state = "pipe-c" }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/turf/open/floor/almayer{ - allow_construction = 0 - }, -/area/almayer/shipboard/brig/lobby) +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/perma) "iQi" = ( /obj/structure/disposalpipe/junction, /obj/structure/pipes/standard/simple/hidden/supply, @@ -42003,13 +40004,6 @@ icon_state = "plate" }, /area/almayer/command/cichallway) -"iQo" = ( -/obj/structure/closet/l3closet/general, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/containment) "iQt" = ( /obj/structure/largecrate/random/case/small, /obj/item/toy/deck{ @@ -42029,27 +40023,35 @@ icon_state = "emerald" }, /area/almayer/living/port_emb) -"iQx" = ( -/obj/structure/machinery/light{ - dir = 1 +"iQB" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/card{ + dir = 4; + layer = 3.2; + pixel_y = 4 }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"iQL" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 2; - req_one_access = list(2,34,30) +/obj/structure/machinery/computer/secure_data{ + dir = 4; + pixel_y = 23 }, -/obj/structure/prop/invuln/lattice_prop{ - dir = 1; - icon_state = "lattice-simple"; - pixel_x = 16; - pixel_y = -16 +/obj/structure/machinery/light{ + dir = 8 }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) +"iQJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; + pixel_y = -32 }, -/area/almayer/hull/lower_hull/l_m_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "iRr" = ( /obj/structure/machinery/light{ dir = 1 @@ -42070,20 +40072,86 @@ /turf/open/floor/almayer, /area/almayer/living/gym) "iRN" = ( -/obj/structure/filingcabinet/seeds, -/obj/structure/sign/safety/intercom{ - pixel_x = 8; +/obj/structure/machinery/light/containment{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer/research/containment/corner_var1{ + dir = 4 + }, +/area/almayer/medical/containment/cell) +"iSm" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/mirror{ + desc = "Do you remember who you are?"; + icon_state = "mirror_broke"; + name = "broken mirror"; pixel_y = 32 }, +/obj/structure/sink{ + pixel_y = 24 + }, +/obj/item/device/cassette_tape/nam{ + layer = 2.9; + pixel_x = -6; + pixel_y = 11 + }, +/obj/structure/machinery/door_control{ + id = "Delta_2"; + name = "Door Lock"; + normaldoorcontrol = 1; + pixel_x = 23; + specialfunctions = 4 + }, +/obj/item/prop{ + desc = "A handful of rounds to reload on the go."; + icon = 'icons/obj/items/weapons/guns/handful.dmi'; + icon_state = "bullet_2"; + name = "handful of pistol bullets (9mm)"; + pixel_x = -8; + pixel_y = 29 + }, +/obj/item/prop{ + desc = "A bunch of tiny bits of shattered metal."; + icon = 'icons/obj/items/shards.dmi'; + icon_state = "shrapnelsmall"; + name = "piece of shrapnel"; + pixel_x = -1; + pixel_y = 24 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/port_emb) +"iSB" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, /turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"iSV" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; dir = 1; - icon_state = "sterile_green_side" + req_one_access = null; + req_one_access_txt = "2;7" }, -/area/almayer/medical/hydroponics) -"iRS" = ( -/obj/item/trash/chips, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_a_p) "iSZ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -42095,19 +40163,35 @@ /obj/item/facepaint/black, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) -"iTf" = ( -/obj/structure/closet/crate/trashcart, -/obj/item/clothing/gloves/yellow, -/obj/item/device/multitool, -/obj/item/tool/screwdriver{ - icon_state = "screwdriver7" +"iTd" = ( +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south2) +"iTe" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 }, -/obj/item/tool/crowbar/red, -/obj/item/book/manual/engineering_hacking, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "red" + }, +/area/almayer/command/lifeboat) +"iTl" = ( +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/shipboard/brig/processing) +"iTq" = ( +/obj/structure/curtain/red, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "iTw" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -42116,30 +40200,9 @@ icon_state = "bluefull" }, /area/almayer/living/bridgebunks) -"iTz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "iTD" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "silver" - }, +/obj/effect/landmark/start/auxiliary_officer, +/turf/open/floor/plating/plating_catwalk, /area/almayer/living/bridgebunks) "iTI" = ( /obj/structure/machinery/light/small{ @@ -42160,38 +40223,71 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) -"iTN" = ( -/obj/item/stool{ - pixel_x = -15; - pixel_y = 6 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"iUo" = ( -/obj/structure/pipes/vents/scrubber{ - dir = 8 +"iTQ" = ( +/obj/structure/machinery/light/small{ + dir = 1 }, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "plate" }, -/area/almayer/medical/containment) -"iUZ" = ( -/obj/docking_port/stationary/escape_pod/cl, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_p) -"iVj" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/prop/almayer/computer/PC{ +/area/almayer/maint/hull/upper/u_m_s) +"iUh" = ( +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = -16 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) +"iUk" = ( +/obj/structure/machinery/door/airlock/almayer/marine/charlie{ + dir = 1 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/briefing) +"iUm" = ( +/obj/structure/closet/emcloset{ + pixel_x = 8 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"iUo" = ( +/obj/structure/sign/safety/terminal{ + pixel_x = 7; + pixel_y = -25 + }, +/obj/structure/surface/rack, +/obj/item/storage/box/autoinjectors{ + pixel_x = 7; + pixel_y = 5 + }, +/obj/item/storage/box/beakers{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/storage/box/sprays{ + pixel_y = -3 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/hydroponics) +"iUW" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/turf/open/floor/almayer, -/area/almayer/squads/req) -"iVo" = ( -/obj/structure/bed/sofa/south/grey/right, +/obj/item/tool/crowbar/red, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "orange" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/engineering/upper_engineering/starboard) "iVy" = ( /turf/open/floor/almayer{ dir = 1; @@ -42204,29 +40300,33 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"iVO" = ( -/obj/structure/surface/table/almayer, -/obj/item/weapon/gun/revolver/m44{ - desc = "A bulky revolver, occasionally carried by assault troops and officers in the Colonial Marines, as well as civilian law enforcement. Fires .44 Magnum rounds. 'J.P' Is engraved into the barrel." +"iVG" = ( +/obj/structure/machinery/light/small{ + dir = 4 }, +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) -"iVZ" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/folder/black, -/obj/item/storage/bible/booze, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door_control{ - id = "CO-Office"; - name = "Door Control"; - normaldoorcontrol = 1; - pixel_x = 18; - req_access_txt = "31" +/area/almayer/maint/hull/upper/p_bow) +"iVP" = ( +/obj/structure/sign/safety/restrictedarea{ + pixel_x = -17; + pixel_y = 7 }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) +/obj/structure/machinery/cm_vending/sorted/marine_food, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) +"iWa" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "iWc" = ( /obj/structure/surface/table/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -42256,6 +40356,26 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"iWH" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/item/reagent_container/glass/bucket/mopbucket, +/obj/item/tool/mop{ + pixel_x = -6; + pixel_y = 14 + }, +/obj/structure/janitorialcart, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/s_bow) +"iWJ" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "iWL" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -42269,6 +40389,11 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) +"iWQ" = ( +/obj/effect/landmark/start/researcher, +/obj/effect/landmark/late_join/researcher, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/offices) "iWR" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/prison{ @@ -42283,13 +40408,28 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) -"iXt" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +"iXm" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "InnerShutter"; + name = "\improper Saferoom Shutters" + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "red" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/processing) +/area/almayer/shipboard/panic) +"iXA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"iXB" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "iXT" = ( /obj/item/trash/uscm_mre, /turf/open/floor/almayer, @@ -42317,22 +40457,25 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 }, -/turf/open/floor/almayer, -/area/almayer/living/tankerbunks) +/turf/open/floor/almayer{ + dir = 4; + icon_state = "silver" + }, +/area/almayer/living/auxiliary_officer_office) "iYf" = ( -/obj/structure/machinery/camera/autoname/almayer/containment{ - dir = 4 +/obj/structure/machinery/cm_vending/clothing/medical_crew{ + density = 0; + pixel_y = 16 }, -/turf/open/floor/almayer/research/containment/floor2{ - dir = 8 +/obj/structure/window/reinforced{ + dir = 8; + health = 80 }, -/area/almayer/medical/containment/cell) -"iYi" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" +/turf/open/floor/almayer{ + dir = 1; + icon_state = "cargo_arrow" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/medical/hydroponics) "iYj" = ( /obj/structure/machinery/firealarm{ dir = 4; @@ -42343,17 +40486,21 @@ icon_state = "red" }, /area/almayer/hallways/stern_hallway) -"iYp" = ( -/obj/item/paper/almayer_storage, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) +"iYm" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) "iYr" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" +/obj/structure/machinery/light{ + dir = 4 }, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south1) +/turf/open/floor/almayer{ + dir = 4; + icon_state = "green" + }, +/area/almayer/living/starboard_garden) "iYt" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -42370,6 +40517,12 @@ icon_state = "plate" }, /area/almayer/living/gym) +"iZd" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "iZg" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -42379,20 +40532,36 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"iZr" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +"iZw" = ( +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresUp"; + vector_x = -97; + vector_y = 65 + }, +/obj/structure/platform{ dir = 4 }, +/obj/structure/stairs{ + dir = 1 + }, +/turf/open/floor/almayer/no_build{ + dir = 4; + icon_state = "silver" + }, +/area/almayer/command/airoom) +"iZE" = ( +/obj/structure/machinery/cm_vending/sorted/tech/tool_storage, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, /turf/open/floor/almayer{ - dir = 6; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/command/lifeboat) -"iZG" = ( -/obj/structure/window/framed/almayer/hull, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/chief_mp_office) +/area/almayer/engineering/lower/workshop/hangar) "iZH" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = -17 @@ -42402,12 +40571,6 @@ icon_state = "emerald" }, /area/almayer/hallways/port_hallway) -"iZL" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/lifeboat) "iZP" = ( /obj/structure/platform{ dir = 8 @@ -42427,13 +40590,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) -"iZX" = ( -/obj/structure/surface/rack, -/obj/item/clothing/glasses/meson, -/turf/open/floor/almayer{ - icon_state = "red" +"iZV" = ( +/obj/structure/machinery/door_control/cl/quarter/officedoor{ + pixel_x = 25 }, -/area/almayer/hull/upper_hull/u_a_p) +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "jac" = ( /obj/structure/disposalpipe/segment{ dir = 8 @@ -42442,30 +40604,65 @@ icon_state = "plate" }, /area/almayer/squads/req) -"jaj" = ( -/obj/item/ammo_box/magazine/misc/mre/empty{ - pixel_x = 8; - pixel_y = 8 +"jaf" = ( +/obj/structure/bed/chair/comfy/bravo{ + dir = 4 }, -/obj/item/reagent_container/food/drinks/cans/aspen{ - pixel_x = 11; - pixel_y = -3 +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster{ + desc = "YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE."; + icon_state = "poster11"; + name = "YOU ALWAYS KNOW A WORKING JOE."; + pixel_x = -27; + serial_number = 11 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) -"jaP" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/cameras/almayer_network{ - dir = 1 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 +/area/almayer/living/briefing) +"jay" = ( +/obj/structure/surface/rack, +/obj/item/tool/shovel/etool{ + pixel_x = 6 }, +/obj/item/tool/shovel/etool, +/obj/item/tool/wirecutters, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/perma) +/area/almayer/maint/hull/lower/l_a_p) +"jaH" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/paper_bin/uscm{ + pixel_y = 6 + }, +/obj/item/tool/pen, +/turf/open/floor/almayer/no_build{ + icon_state = "plating" + }, +/area/almayer/command/airoom) +"jaI" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) +"jaK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hallways/vehiclehangar) +"jaM" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "jaR" = ( /obj/structure/largecrate/random/mini/small_case/b{ pixel_x = 8; @@ -42486,23 +40683,10 @@ icon_state = "test_floor4" }, /area/almayer/squads/req) -"jbb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 - }, +"jaW" = ( +/obj/effect/landmark/start/reporter, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/u_m_p) "jbq" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, @@ -42514,15 +40698,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) -"jbB" = ( -/obj/structure/sign/safety/nonpress_0g{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) "jbH" = ( /obj/structure/machinery/light{ dir = 8 @@ -42535,8 +40710,50 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"jbK" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/almayer/medical/containment) +"jbN" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/item/clothing/mask/cigarette/pipe{ + layer = 2.8; + pixel_y = -7 + }, +/obj/item/reagent_container/spray/cleaner{ + layer = 3.04; + pixel_x = -4; + pixel_y = 7 + }, +/obj/structure/machinery/door_control/brbutton{ + id = "Brig Lockdown Shutters"; + name = "Brig Lockdown"; + pixel_x = -12; + pixel_y = 26 + }, +/obj/structure/machinery/door_control/brbutton{ + id = "ARES StairsLock"; + name = "ARES Exterior Lockdown Override"; + pixel_x = -2; + pixel_y = 26 + }, +/obj/structure/machinery/door_control/brbutton{ + id = "ARES Emergency"; + name = "ARES Emergency Lockdown Override"; + pixel_x = 8; + pixel_y = 26 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "jbO" = ( -/obj/structure/machinery/cm_vending/sorted/medical, +/obj/structure/machinery/cm_vending/sorted/medical/bolted, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, @@ -42551,27 +40768,20 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/shipboard/brig/processing) -"jcl" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 +"jcE" = ( +/obj/structure/machinery/vending/coffee{ + density = 0; + pixel_y = 18 }, -/turf/open/floor/wood/ship, -/area/almayer/living/grunt_rnr) -"jcK" = ( -/obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_p) -"jcZ" = ( -/obj/structure/machinery/light{ - dir = 8 - }, +/area/almayer/maint/hull/upper/u_a_p) +"jcP" = ( /turf/open/floor/almayer{ - dir = 9; - icon_state = "red" + icon_state = "plating_striped" }, -/area/almayer/command/lifeboat) +/area/almayer/engineering/upper_engineering/starboard) "jdk" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -42592,13 +40802,17 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"jdy" = ( -/obj/structure/sign/safety/autoopenclose{ - pixel_x = 7; - pixel_y = 32 +"jdn" = ( +/obj/structure/surface/rack, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/maint/hull/upper/s_bow) +"jdu" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "jdG" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -42609,25 +40823,50 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_three) -"jea" = ( -/obj/structure/sign/safety/autoopenclose{ - pixel_y = 32 - }, -/obj/structure/sign/safety/water{ - pixel_x = 15; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "jeb" = ( /turf/closed/wall/almayer, /area/almayer/squads/alpha_bravo_shared) +"jei" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "jeq" = ( -/obj/structure/window/reinforced, +/obj/structure/surface/rack, +/obj/item/storage/box/pillbottles{ + pixel_x = 6; + pixel_y = 7 + }, +/obj/item/storage/box/pillbottles{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/storage/box/pillbottles, /turf/open/floor/almayer{ - icon_state = "sterile_green" + icon_state = "mono" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/hydroponics) +"jer" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/l_a_p) +"jev" = ( +/obj/structure/largecrate/random/case/small, +/obj/item/device/taperecorder{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/reagent_container/glass/bucket/mopbucket{ + pixel_x = -9; + pixel_y = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "jew" = ( /obj/structure/surface/table/reinforced/black, /turf/open/floor/almayer{ @@ -42639,20 +40878,16 @@ dir = 8; name = "ship-grade camera" }, +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, /turf/open/floor/almayer{ dir = 5; icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"jeK" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "cargo_arrow" - }, -/area/almayer/shipboard/brig/general_equipment) "jeO" = ( /obj/structure/machinery/light{ dir = 4 @@ -42669,17 +40904,15 @@ icon_state = "red" }, /area/almayer/living/cryo_cells) -"jeU" = ( -/obj/structure/largecrate/random/secure, +"jeR" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/bed/chair/bolted, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_s) -"jfm" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/shipboard/brig/perma) "jfD" = ( /obj/structure/sign/safety/security{ pixel_y = -32 @@ -42702,25 +40935,20 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"jfM" = ( -/obj/structure/machinery/power/monitor{ - name = "Core Power Monitoring" - }, -/obj/structure/sign/safety/terminal{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" +"jfS" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 }, -/area/almayer/engineering/engine_core) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "jfY" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/map_item, /obj/item/folder/red, /obj/structure/transmitter/rotary{ name = "Brig CMP's Office Telephone"; - phone_category = "Offices"; + phone_category = "MP Dept."; phone_id = "Brig CMP's Office"; pixel_x = 15 }, @@ -42745,6 +40973,18 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) +"jgg" = ( +/obj/structure/machinery/camera/autoname/almayer/containment{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer/research/containment/floor2{ + dir = 8 + }, +/area/almayer/medical/containment/cell) "jgk" = ( /obj/structure/machinery/shower{ dir = 1 @@ -42766,33 +41006,35 @@ /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/living/tankerbunks) -"jgu" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 +/area/almayer/living/auxiliary_officer_office) +"jgr" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/camera{ + pixel_x = -8; + pixel_y = 12 }, -/obj/structure/mirror{ - pixel_x = 29 +/obj/item/paper_bin/uscm{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = -8; + pixel_y = -1 }, /turf/open/floor/almayer{ - icon_state = "sterile" + icon_state = "plate" }, -/area/almayer/living/captain_mess) +/area/almayer/command/combat_correspondent) "jgw" = ( /obj/structure/sign/safety/nonpress_0g{ pixel_x = 32 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/notunnel) -"jgA" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/accessory/storage/black_vest/acid_harness, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_corner" - }, -/area/almayer/medical/testlab) "jgF" = ( /obj/structure/platform, /turf/open/floor/almayer{ @@ -42805,12 +41047,14 @@ icon_state = "blue" }, /area/almayer/command/cichallway) -"jgM" = ( -/obj/structure/surface/table/almayer, +"jgK" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/lower/l_m_s) "jgU" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -42852,36 +41096,54 @@ icon_state = "green" }, /area/almayer/living/offices) -"jhA" = ( -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "jhD" = ( /obj/structure/machinery/firealarm{ pixel_y = -28 }, /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) +"jhI" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/secure_data{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/chief_mp_office) +"jhK" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"jhR" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks{ + density = 0; + pixel_y = 17 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "jhW" = ( /obj/structure/machinery/cryopod/right, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/living/bridgebunks) -"jip" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Main Kitchen"; - req_one_access_txt = "30;19" +"jic" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/prison{ - icon_state = "kitchen" +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/area/almayer/living/grunt_rnr) +/turf/open/floor/almayer{ + dir = 1; + icon_state = "redcorner" + }, +/area/almayer/shipboard/brig/lobby) "jiw" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -42890,14 +41152,49 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) -"jiX" = ( -/obj/structure/machinery/light/small{ - dir = 8 +"jiM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/surface/rack, +/obj/item/frame/table, +/obj/item/frame/table, +/obj/item/frame/table, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"jiU" = ( +/obj/structure/sink{ + dir = 1; + pixel_y = -10 + }, +/obj/structure/pipes/vents/scrubber{ + dir = 1 }, +/obj/structure/surface/rack{ + density = 0; + pixel_x = 26 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/port_emb) +"jjm" = ( +/obj/structure/closet/secure_closet{ + name = "\improper Lethal Injection Locker" + }, +/obj/item/reagent_container/ld50_syringe/choral, +/obj/item/reagent_container/ld50_syringe/choral, +/obj/item/reagent_container/ld50_syringe/choral, +/obj/item/reagent_container/ld50_syringe/choral, +/obj/item/reagent_container/ld50_syringe/choral, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/shipboard/brig/execution) "jjn" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/door/window/eastright{ @@ -42920,20 +41217,19 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/vehiclehangar) -"jjK" = ( -/obj/structure/surface/table/almayer, -/obj/item/paper_bin/uscm, -/obj/item/tool/pen, -/turf/open/floor/almayer{ - icon_state = "green" +"jjS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/area/almayer/living/grunt_rnr) -"jjM" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) +/turf/open/floor/almayer{ + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/medical_science) "jjT" = ( /obj/structure/machinery/light, /obj/effect/projector{ @@ -42980,6 +41276,17 @@ icon_state = "plate" }, /area/almayer/medical/morgue) +"jkq" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = -28 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "jks" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -43005,43 +41312,76 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"jkS" = ( -/obj/structure/window/framed/almayer/hull/hijack_bustable, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 2; - id = "Warden Office Shutters"; - name = "\improper Privacy Shutters" +"jkB" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/main_office) -"jkV" = ( -/obj/structure/machinery/light{ - dir = 1 +/obj/structure/sign/safety/escapepod{ + pixel_x = -17 }, -/obj/structure/bed/chair/bolted{ - dir = 4 +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) +"jkD" = ( +/obj/structure/surface/table/almayer, +/obj/item/paper_bin/uscm{ + pixel_x = 9; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = 9; + pixel_y = 2 + }, +/obj/item/tool/pen{ + pixel_x = 9; + pixel_y = 9 + }, +/obj/structure/prop/holidays/string_lights{ + dir = 8; + pixel_x = 29 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/shipboard/brig/perma) -"jlA" = ( -/obj/structure/window/framed/almayer/white, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/plating, -/area/almayer/medical/hydroponics) -"jlG" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +/area/almayer/living/briefing) +"jkN" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/research{ - name = "\improper Researcher Study" +/area/almayer/maint/hull/lower/l_a_s) +"jlc" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) +"jlA" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 5; + icon_state = "sterile_green_side" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) +"jlG" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_y = -1 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/almayer/research/containment/entrance, +/area/almayer/medical/containment/cell) "jlN" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -43057,6 +41397,13 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/engineering/upper_engineering/port) +"jlT" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "jlX" = ( /obj/structure/surface/table/almayer, /obj/item/tool/hand_labeler, @@ -43067,10 +41414,28 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"jmg" = ( -/obj/structure/largecrate/supply/ammo/shotgun, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) +"jmn" = ( +/obj/structure/surface/table/almayer, +/obj/item/prop/magazine/dirty{ + pixel_y = 5 + }, +/obj/item/tool/pen{ + pixel_x = 4; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "bluefull" + }, +/area/almayer/living/briefing) +"jmz" = ( +/obj/structure/largecrate/random/case/double, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "jmK" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -43092,36 +41457,25 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) -"jmR" = ( -/obj/structure/ladder/fragile_almayer{ - height = 2; - id = "kitchen" - }, -/obj/structure/sign/safety/ladder{ - pixel_x = 8; - pixel_y = 24 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "jmY" = ( /turf/open/floor/almayer{ icon_state = "blue" }, /area/almayer/command/cichallway) -"jnf" = ( +"jne" = ( /turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/upper/u_f_p) +"jnh" = ( +/obj/structure/disposalpipe/segment{ dir = 1; - icon_state = "orange" + icon_state = "pipe-c" }, -/area/almayer/engineering/engineering_workshop) -"jnk" = ( -/obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/upper/mess) "jnw" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -43146,12 +41500,12 @@ icon_state = "silvercorner" }, /area/almayer/shipboard/brig/cic_hallway) -"jnT" = ( -/obj/structure/bed/chair, -/turf/open/floor/almayer{ - allow_construction = 0 +"jnI" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/area/almayer/shipboard/brig/lobby) +/turf/open/floor/almayer, +/area/almayer/engineering/lower) "jnX" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -43162,12 +41516,6 @@ /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/command/cic) -"jox" = ( -/obj/structure/machinery/brig_cell/cell_3{ - pixel_x = -32 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/processing) "joG" = ( /obj/structure/machinery/washing_machine, /obj/structure/sign/poster{ @@ -43184,12 +41532,22 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) -"joT" = ( -/obj/structure/largecrate/random/case, -/turf/open/floor/almayer{ - icon_state = "plate" +"jpn" = ( +/obj/structure/stairs{ + icon_state = "ramptop" + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/effect/projector{ + name = "Almayer_Down4"; + vector_x = 19; + vector_y = -104 + }, +/turf/open/floor/plating/almayer{ + allow_construction = 0 }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/hallways/upper/port) "jpp" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ name = "\improper Medical Bay"; @@ -43208,28 +41566,32 @@ }, /turf/open/floor/almayer, /area/almayer/living/gym) -"jpJ" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"jpN" = ( -/obj/structure/surface/rack, -/obj/item/storage/box/cups{ - pixel_x = 4; - pixel_y = 9 +"jqP" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES Interior"; + name = "\improper ARES Inner Chamber Shutters"; + plane = -7 + }, +/obj/effect/step_trigger/ares_alert/core, +/obj/structure/machinery/door/poddoor/almayer/blended/white/open{ + closed_layer = 3.2; + id = "ARES Emergency"; + layer = 3.2; + name = "ARES Emergency Lockdown"; + needs_power = 0; + open_layer = 1.9; + plane = -7 }, -/obj/item/storage/box/cups, -/turf/open/floor/almayer{ - icon_state = "plate" +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_f_s) -"jpQ" = ( -/turf/open/floor/almayer{ - allow_construction = 0 +/area/almayer/command/airoom) +"jqY" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/area/almayer/shipboard/brig/lobby) +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/execution) "jre" = ( /obj/structure/closet/secure_closet/cargotech, /obj/item/clothing/accessory/storage/webbing, @@ -43238,15 +41600,50 @@ icon_state = "green" }, /area/almayer/squads/req) +"jri" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "jrm" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; pixel_y = 1 }, +/obj/structure/bed/chair/comfy, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/living/pilotbunks) +"jrB" = ( +/obj/structure/bed/chair, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) +"jrI" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 18 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 18 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) +"jrM" = ( +/obj/structure/machinery/camera/autoname/almayer/containment{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) "jss" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -43255,16 +41652,53 @@ icon_state = "bluefull" }, /area/almayer/living/captain_mess) -"jtd" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/obj/structure/machinery/light{ - dir = 4 +"jsu" = ( +/obj/structure/machinery/light/small{ + dir = 8 }, /turf/open/floor/almayer{ - dir = 4; + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"jsx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; icon_state = "sterile_green_side" }, -/area/almayer/medical/hydroponics) +/area/almayer/medical/medical_science) +"jsA" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) +"jsE" = ( +/obj/structure/sign/safety/nonpress_ag{ + pixel_x = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) +"jsP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) +"jtj" = ( +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "jtJ" = ( /obj/structure/machinery/door_control{ id = "laddernorthwest"; @@ -43278,14 +41712,9 @@ icon_state = "greencorner" }, /area/almayer/hallways/starboard_hallway) -"jup" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - layer = 2.5; - pixel_y = 1 - }, +"jtU" = ( /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/upper/u_m_p) "juD" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -43293,14 +41722,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/living/port_emb) -"juN" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/paper_bin/uscm, -/obj/item/tool/pen{ - pixel_y = 7 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "juX" = ( /obj/structure/platform_decoration{ dir = 1 @@ -43321,14 +41742,6 @@ icon_state = "plate" }, /area/almayer/medical/lower_medical_medbay) -"jvc" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/turf/open/floor/almayer{ - allow_construction = 0 - }, -/area/almayer/shipboard/brig/general_equipment) "jvp" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -43354,21 +41767,41 @@ icon_state = "test_floor4" }, /area/almayer/squads/alpha) -"jvI" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/almayer{ - icon_state = "plate" +"jvt" = ( +/obj/item/tool/warning_cone{ + pixel_x = -20; + pixel_y = 18 }, -/area/almayer/hull/upper_hull/u_a_p) -"jvJ" = ( -/obj/structure/machinery/light{ +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_y = -16 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"jvB" = ( +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer/no_build{ + dir = 4 + }, +/area/almayer/command/airoom) +"jvM" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"jvP" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ - dir = 4; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/starboard_missiles) +/area/almayer/shipboard/brig/cryo) "jvX" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -43393,6 +41826,35 @@ "jvY" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/command/telecomms) +"jwi" = ( +/obj/structure/machinery/door_control{ + id = "InnerShutter"; + name = "Inner Shutter"; + pixel_x = 5; + pixel_y = 10 + }, +/obj/item/toy/deck{ + pixel_x = -9 + }, +/obj/item/ashtray/plastic, +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/sign/safety/intercom{ + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) +"jwq" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) +"jwJ" = ( +/obj/structure/platform_decoration, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "jwK" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -43400,6 +41862,12 @@ icon_state = "red" }, /area/almayer/squads/alpha_bravo_shared) +"jwM" = ( +/obj/structure/largecrate/supply/floodlights, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "jxi" = ( /obj/structure/machinery/sleep_console, /turf/open/floor/almayer{ @@ -43422,29 +41890,37 @@ }, /turf/open/floor/plating, /area/almayer/living/bridgebunks) -"jxK" = ( -/obj/structure/disposalpipe/junction{ - dir = 1; - icon_state = "pipe-j2" - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 +"jxP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/vehiclehangar) +"jyb" = ( /turf/open/floor/almayer{ - dir = 1; + dir = 6; icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"jyi" = ( -/obj/structure/machinery/power/port_gen/pacman, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "jyE" = ( /obj/structure/machinery/light, /turf/open/floor/wood/ship, /area/almayer/engineering/ce_room) +"jyJ" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/ladder{ + height = 2; + id = "cicladder3" + }, +/obj/structure/sign/safety/ladder{ + pixel_x = 23; + pixel_y = 32 + }, +/turf/open/floor/plating/almayer, +/area/almayer/medical/medical_science) "jyR" = ( /obj/structure/machinery/cm_vending/sorted/tech/comp_storage{ req_one_access_txt = "7;23;27" @@ -43462,12 +41938,28 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/notunnel) +"jzE" = ( +/obj/structure/closet/secure_closet/bar{ + name = "Success Cabinet"; + req_access_txt = "1" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/captain_mess) "jzZ" = ( /obj/structure/platform_decoration, /turf/open/floor/almayer{ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) +"jAe" = ( +/obj/structure/surface/rack, +/obj/item/storage/beer_pack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/corporateliaison) "jAi" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/hallways/vehiclehangar) @@ -43494,18 +41986,15 @@ icon_state = "green" }, /area/almayer/squads/req) -"jAG" = ( -/obj/structure/surface/rack, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 3 +"jAJ" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/obj/item/storage/box/masks, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/surgery) +/area/almayer/engineering/upper_engineering/port) "jBy" = ( /obj/structure/machinery/light{ dir = 4 @@ -43515,38 +42004,50 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) -"jBB" = ( -/obj/structure/surface/rack, -/obj/item/circuitboard/firealarm, -/obj/item/circuitboard, -/obj/item/clipboard, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "jBO" = ( -/obj/structure/closet/secure_closet/hydroresearch, -/obj/structure/machinery/power/apc/almayer{ - dir = 1 +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "W_Containment Cell 3"; + name = "\improper Containment Cell 5"; + unacidable = 1 }, -/obj/item/reagent_container/glass/watertank, -/obj/item/reagent_container/glass/watertank, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/closed/wall/almayer/research/containment/wall/purple{ + dir = 8 + }, +/area/almayer/medical/containment/cell) +"jBX" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + icon_state = "test_floor4" }, -/area/almayer/medical/hydroponics) -"jCa" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk, +/area/almayer/command/lifeboat) +"jCg" = ( +/obj/docking_port/stationary/escape_pod/south, +/turf/open/floor/plating, +/area/almayer/maint/hull/lower/l_m_s) +"jCn" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/screwdriver, +/obj/item/tool/weldingtool, +/obj/item/tool/wrench, +/obj/item/tool/wirecutters, /turf/open/floor/almayer{ - dir = 9; - icon_state = "red" + dir = 8; + icon_state = "orange" }, -/area/almayer/shipboard/brig/main_office) -"jCG" = ( -/turf/closed/wall/almayer/research/containment/wall/connect_w, -/area/almayer/medical/containment/cell) +/area/almayer/engineering/lower/engine_core) +"jCr" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "jCK" = ( /obj/effect/decal/medical_decals{ icon_state = "triagedecalbottomleft"; @@ -43557,43 +42058,161 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"jEs" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/screwdriver{ - pixel_x = -1; - pixel_y = 2 +"jDk" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 4 }, -/obj/item/stack/cable_coil{ - pixel_x = 8; - pixel_y = -4 +/obj/structure/transmitter{ + dir = 8; + name = "OT Telephone"; + phone_category = "Almayer"; + phone_id = "Ordnance Tech"; + pixel_x = 14 }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"jFe" = ( -/obj/structure/prop/holidays/string_lights{ - pixel_y = 27 +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" }, -/obj/item/frame/rack, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"jFg" = ( -/obj/structure/pipes/standard/cap/hidden{ +/area/almayer/engineering/lower/workshop/hangar) +"jDO" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/structure/sign/safety/hvac_old{ - pixel_x = 15; - pixel_y = 32 +/obj/structure/machinery/light, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"jDP" = ( +/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; + dir = 1; + name = "\improper Spare Bomb Suit"; + req_one_access = null; + req_one_access_txt = "35" + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"jDV" = ( +/obj/effect/projector{ + name = "Almayer_AresDown"; + vector_x = 97; + vector_y = -65 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/obj/structure/machinery/door_control{ + id = "ARES StairsUpper"; + name = "ARES Core Access"; + pixel_x = 24; + req_one_access_txt = "90;91;92" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"jEA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"jEM" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) +"jES" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/chief_mp_office) +"jFf" = ( +/obj/structure/machinery/shower{ + pixel_y = 16 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 80; + pixel_y = 6 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/medical/medical_science) +"jFg" = ( +/obj/structure/pipes/standard/cap/hidden{ + dir = 4 + }, +/obj/structure/sign/safety/hvac_old{ + pixel_x = 15; + pixel_y = 32 }, /turf/open/floor/almayer{ icon_state = "mono" }, /area/almayer/hallways/stern_hallway) -"jFh" = ( -/obj/structure/largecrate/random/secure, +"jFt" = ( +/obj/structure/machinery/light/small, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) +"jFx" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/glass/bucket{ + pixel_x = 6; + pixel_y = 8 + }, +/obj/item/reagent_container/glass/bucket{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/reagent_container/glass/bucket{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/reagent_container/glass/bucket{ + pixel_x = 6; + pixel_y = -2 + }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "orange" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/engineering/lower/workshop/hangar) +"jFy" = ( +/obj/structure/surface/table/almayer, +/obj/effect/spawner/random/toolbox, +/obj/item/clipboard, +/obj/item/tool/pen, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "green" + }, +/area/almayer/squads/req) "jFE" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -43601,17 +42220,20 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) -"jFR" = ( +"jFI" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "redcorner" + icon_state = "plate" }, -/area/almayer/shipboard/brig/processing) -"jFX" = ( -/obj/structure/machinery/door/airlock/almayer/maint, +/area/almayer/maint/hull/upper/u_m_s) +"jFY" = ( +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "cargo" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/engineering/upper_engineering/port) "jGn" = ( /obj/structure/machinery/light{ dir = 1 @@ -43639,6 +42261,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) +"jGQ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "jGR" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -43652,9 +42286,8 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" +/obj/structure/disposalpipe/junction{ + dir = 8 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) @@ -43667,15 +42300,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) -"jHs" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, +"jHn" = ( +/obj/structure/largecrate/random/case, /turf/open/floor/almayer{ - icon_state = "sterile_green_side" + icon_state = "plate" }, -/area/almayer/medical/medical_science) +/area/almayer/maint/lower/s_bow) "jHC" = ( /turf/open/floor/almayer{ dir = 1; @@ -43691,6 +42321,15 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) +"jHL" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "jHQ" = ( /obj/structure/machinery/crema_switch{ pixel_x = -24; @@ -43698,49 +42337,89 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/morgue) -"jIV" = ( -/obj/structure/surface/rack, -/obj/item/book/manual/marine_law{ - pixel_x = -3; - pixel_y = 1 +"jHX" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) +"jIo" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"jJe" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/almayer/shipboard/brig/chief_mp_office) +"jIC" = ( +/obj/structure/machinery/computer/working_joe{ + dir = 4; + pixel_x = -17 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/maint/upper/mess) +"jIH" = ( +/obj/structure/surface/rack, +/obj/item/clothing/suit/straight_jacket, +/obj/item/clothing/glasses/sunglasses/blindfold, +/obj/item/clothing/mask/muzzle, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/execution) +"jIJ" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) +"jIT" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/faxmachine/uscm/brig/chief, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/brig/chief_mp_office) +"jIV" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" }, +/area/almayer/engineering/lower/engine_core) +"jJe" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, /turf/open/floor/almayer{ dir = 1; icon_state = "green" }, /area/almayer/hallways/port_hallway) -"jJq" = ( -/obj/structure/surface/rack, -/obj/item/storage/firstaid/regular, -/obj/item/storage/firstaid/toxin{ - pixel_x = 8; - pixel_y = -2 +"jJk" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "red" + dir = 5; + icon_state = "blue" }, -/area/almayer/shipboard/brig/general_equipment) +/area/almayer/living/port_emb) "jJs" = ( /turf/open/floor/almayer{ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) -"jKh" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/obj/effect/landmark/start/doctor, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/offices) "jKn" = ( /turf/open/floor/almayer{ dir = 5; @@ -43820,6 +42499,21 @@ icon_state = "kitchen" }, /area/almayer/living/captain_mess) +"jLv" = ( +/obj/structure/machinery/firealarm{ + dir = 1; + pixel_y = -28 + }, +/turf/open/floor/almayer{ + icon_state = "green" + }, +/area/almayer/hallways/starboard_hallway) +"jLH" = ( +/obj/structure/largecrate/supply/supplies/mre, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "jLK" = ( /obj/structure/machinery/light{ dir = 4 @@ -43829,36 +42523,38 @@ icon_state = "emerald" }, /area/almayer/hallways/port_hallway) -"jMb" = ( +"jLM" = ( /obj/structure/disposalpipe/segment{ - dir = 8; + dir = 1; icon_state = "pipe-c" }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) +"jLS" = ( +/obj/structure/bed/chair/comfy/charlie, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"jMb" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"jMi" = ( -/obj/structure/surface/table/almayer, -/obj/item/toy/deck{ - pixel_y = 14 - }, -/obj/item/trash/cigbutt/ucigbutt{ - layer = 3.7; - pixel_x = 5; - pixel_y = 8 +"jMm" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + req_access = null }, +/obj/item/clothing/mask/rebreather/scarf, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_s) -"jMm" = ( -/obj/effect/spawner/random/tool, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south2) +/area/almayer/living/pilotbunks) "jMr" = ( /obj/structure/surface/table/almayer, /obj/item/storage/donut_box{ @@ -43874,15 +42570,34 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"jMt" = ( -/obj/structure/sign/poster{ - pixel_y = -32 +"jMx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/structure/sign/safety/bathunisex{ + pixel_x = 11; + pixel_y = -26 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"jMy" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/extinguisher, +/obj/item/device/lightreplacer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) +"jMG" = ( +/obj/structure/largecrate/random/case/small, +/obj/structure/largecrate/random/mini/wooden{ + pixel_x = 4; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "jMK" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -43892,6 +42607,10 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) +"jML" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "jMQ" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -43912,29 +42631,68 @@ /turf/open/floor/almayer, /area/almayer/living/briefing) "jNc" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ + id = "Containment Cell 3"; + locked = 1; + name = "\improper Containment Cell 3"; + unacidable = 1 }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" +/obj/structure/machinery/door/poddoor/shutters/almayer/containment{ + dir = 4; + id = "Containment Cell 3"; + name = "\improper Containment Cell 3" }, -/area/almayer/medical/hydroponics) -"jNq" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - req_access = null +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 }, -/obj/item/clothing/mask/rebreather/scarf/tacticalmask/red, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_f_p) -"jNt" = ( +/area/almayer/medical/containment/cell) +"jNo" = ( /obj/structure/surface/rack, -/obj/item/stack/folding_barricade/three, +/obj/item/tool/shovel/etool{ + pixel_x = 6 + }, +/obj/item/tool/shovel/etool, +/obj/item/tool/wirecutters, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_m_s) +"jND" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"jNG" = ( +/obj/structure/closet/crate/trashcart, +/obj/effect/spawner/random/balaclavas, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"jNT" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/execution) +"jOc" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + req_access = null; + pixel_y = 17; + pixel_x = 1 + }, +/turf/open/floor/almayer, +/area/almayer/living/numbertwobunks) "jOi" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -43982,17 +42740,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/gym) -"jOu" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = 25 - }, -/obj/structure/machinery/faxmachine/uscm/brig, +"jOq" = ( +/obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/processing) +/area/almayer/maint/hull/lower/l_f_s) +"jOt" = ( +/obj/item/trash/barcardine, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "jOx" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -44005,6 +42762,19 @@ icon_state = "plate" }, /area/almayer/squads/bravo) +"jOD" = ( +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) +"jOE" = ( +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "jOG" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/firealarm{ @@ -44016,36 +42786,103 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"jPf" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 +"jPd" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) -"jPz" = ( -/obj/structure/machinery/light/small{ +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) +"jPq" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) +"jPu" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "Saferoom Channel"; + pixel_x = 27 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) +"jPx" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) -"jQA" = ( -/obj/structure/pipes/vents/scrubber{ +/area/almayer/maint/hull/lower/l_m_p) +"jPP" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/processing) +"jPS" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/chief_mp_office) +"jPU" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"jQt" = ( +/turf/open/floor/almayer/research/containment/floor2{ + dir = 8 + }, +/area/almayer/medical/containment/cell) +"jRc" = ( +/obj/structure/machinery/cm_vending/sorted/tech/tool_storage, +/obj/structure/machinery/status_display{ + pixel_y = 30 }, -/area/almayer/hull/lower_hull/l_m_s) -"jRn" = ( -/obj/structure/machinery/light/small, -/obj/structure/largecrate/supply/supplies/mre, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/engineering/lower/workshop) +"jRp" = ( +/obj/structure/largecrate/supply/supplies/water, +/obj/item/toy/deck{ + pixel_y = 12 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"jRz" = ( +/obj/effect/step_trigger/teleporter/random{ + affect_ghosts = 1; + name = "tele_ground1"; + teleport_x = 180; + teleport_x_offset = 200; + teleport_y = 50; + teleport_y_offset = 80; + teleport_z = 1; + teleport_z_offset = 1 + }, +/turf/closed/wall/almayer/outer, +/area/space) +"jRC" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "jRK" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -44090,6 +42927,15 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"jSy" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/living/grunt_rnr) "jSU" = ( /obj/structure/bed/chair{ can_buckle = 0; @@ -44118,24 +42964,6 @@ icon_state = "green" }, /area/almayer/living/offices) -"jSY" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) -"jTi" = ( -/obj/item/reagent_container/glass/bucket/janibucket{ - pixel_x = -1; - pixel_y = 13 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "jTj" = ( /obj/effect/decal/warning_stripes{ icon_state = "E" @@ -44145,12 +42973,12 @@ icon_state = "plating" }, /area/almayer/medical/upper_medical) -"jTu" = ( -/obj/structure/sign/safety/nonpress_ag{ - pixel_x = 32 +"jTB" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orangecorner" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/engineering/lower) "jTI" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -44175,18 +43003,29 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"jUs" = ( +"jUh" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) +"jUl" = ( /obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 + icon_state = "E" }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) +/area/almayer/engineering/lower/workshop) +"jUq" = ( +/obj/structure/machinery/firealarm{ + pixel_y = -28 + }, +/obj/structure/bed/chair/comfy/charlie{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "jUx" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ dir = 2; @@ -44197,37 +43036,33 @@ icon_state = "test_floor4" }, /area/almayer/powered) -"jUG" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +"jUF" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 }, -/obj/structure/machinery/light{ - dir = 1 - }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/medical/upper_medical) -"jUL" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 32 +/area/almayer/engineering/lower/workshop) +"jUM" = ( +/obj/structure/machinery/camera/autoname/almayer/containment{ + dir = 8 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) -"jUW" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" }, -/obj/structure/sign/safety/stairs{ - pixel_x = -17 +/area/almayer/medical/medical_science) +"jUV" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "red" +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 }, -/area/almayer/hallways/aft_hallway) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "jUY" = ( /turf/open/floor/almayer{ icon_state = "silver" @@ -44236,8 +43071,21 @@ "jVa" = ( /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) +"jVg" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "jVr" = ( -/obj/structure/machinery/cm_vending/clothing/marine/alpha, +/obj/structure/machinery/cm_vending/clothing/marine/alpha{ + density = 0; + layer = 4.1; + pixel_y = -29 + }, /obj/structure/sign/safety/cryo{ pixel_x = 32 }, @@ -44245,11 +43093,36 @@ icon_state = "plate" }, /area/almayer/squads/alpha) +"jVt" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer/research/containment/corner3, +/area/almayer/medical/containment/cell) "jVE" = ( /turf/open/floor/almayer{ icon_state = "test_floor5" }, /area/almayer/command/computerlab) +"jVP" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/execution) +"jWb" = ( +/obj/structure/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) "jWh" = ( /turf/closed/wall/almayer, /area/almayer/engineering/upper_engineering/port) @@ -44282,14 +43155,21 @@ allow_construction = 0 }, /area/almayer/hallways/starboard_hallway) +"jXd" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/processing) "jXf" = ( /obj/structure/machinery/door/airlock/almayer/medical{ id_tag = "or03"; - name = "Lobby"; - req_access = null + name = "Lobby" }, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "test_floor4" }, /area/almayer/medical/lower_medical_medbay) "jXk" = ( @@ -44304,18 +43184,48 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) -"jXW" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "plate" +"jYc" = ( +/obj/item/bedsheet/blue{ + layer = 3.2 + }, +/obj/item/bedsheet/blue{ + pixel_y = 13 + }, +/obj/item/toy/plush/therapy/red{ + desc = "A USCM approved plush doll. It's not soft and hardly comforting!"; + force = 15; + layer = 4.1; + name = "Sergeant Huggs"; + pixel_y = 15; + throwforce = 15 + }, +/obj/item/clothing/head/cmcap{ + layer = 4.1; + pixel_x = -1; + pixel_y = 22 + }, +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 }, -/area/almayer/command/lifeboat) -"jXY" = ( -/obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "blue" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/living/port_emb) "jYd" = ( /obj/structure/machinery/gear{ id = "vehicle_elevator_gears" @@ -44324,6 +43234,40 @@ icon_state = "mono" }, /area/almayer/hallways/vehiclehangar) +"jYm" = ( +/obj/item/reagent_container/food/snacks/wrapped/chunk, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) +"jYM" = ( +/obj/structure/ladder{ + height = 1; + id = "ForePortMaint" + }, +/obj/structure/sign/safety/ladder{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/almayer, +/area/almayer/maint/hull/lower/p_bow) +"jYR" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 4 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "tcomms" + }, +/area/almayer/command/airoom) "jZd" = ( /obj/structure/pipes/vents/pump{ dir = 8; @@ -44333,20 +43277,36 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_four) -"jZm" = ( -/obj/structure/machinery/brig_cell/cell_4{ - pixel_x = -32; - pixel_y = -32 +"jZj" = ( +/obj/structure/surface/rack, +/obj/item/book/manual/orbital_cannon_manual, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/processing) -"jZs" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/accessory/storage/black_vest/acid_harness, +/area/almayer/maint/hull/upper/u_a_p) +"jZo" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/obj/effect/step_trigger/clone_cleaner, /turf/open/floor/almayer{ - icon_state = "sterile_green_side" + icon_state = "test_floor4" }, -/area/almayer/medical/testlab) +/area/almayer/maint/hull/upper/u_m_p) +"jZs" = ( +/obj/structure/machinery/light/containment{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer/research/containment/corner{ + dir = 1 + }, +/area/almayer/medical/containment/cell) "jZu" = ( /obj/structure/machinery/door_control{ id = "CIC_Conference"; @@ -44367,53 +43327,71 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"jZL" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/cameras/almayer_network{ - dir = 1 - }, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 +"jZC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/obj/structure/transmitter{ - dir = 1; - name = "Brig Warden's Office Telephone"; - phone_category = "Offices"; - phone_id = "Brig Warden's Office"; - pixel_x = -16 +/obj/structure/sign/safety/escapepod{ + pixel_x = -17 }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) -"jZO" = ( -/obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 4; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/hallways/upper/starboard) "jZU" = ( -/obj/structure/machinery/light{ +/obj/structure/machinery/power/apc/almayer{ dir = 1 }, /turf/open/floor/almayer, -/area/almayer/command/corporateliason) +/area/almayer/medical/containment/cell/cl) "jZY" = ( /obj/structure/closet/l3closet/virology, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "redfull" }, /area/almayer/medical/upper_medical) +"kac" = ( +/obj/structure/surface/rack, +/obj/item/storage/toolbox/mechanical, +/obj/item/tool/hand_labeler, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) +"kag" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 16" + }, +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "kaj" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ icon_state = "SW-out" }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/almayer{ - dir = 9; - icon_state = "green" + icon_state = "test_floor4" }, /area/almayer/hallways/aft_hallway) +"kam" = ( +/obj/item/tool/screwdriver{ + layer = 2.9; + pixel_x = -21; + pixel_y = -14 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/port_emb) "kan" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/lower_medical_medbay) @@ -44459,26 +43437,10 @@ icon_state = "bluefull" }, /area/almayer/squads/charlie_delta_shared) -"kaN" = ( -/obj/structure/platform{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) "kaS" = ( -/obj/structure/machinery/light/small{ +/obj/structure/bed/chair/office/dark{ dir = 8 }, -/obj/structure/surface/table/almayer, -/obj/item/device/camera{ - pixel_x = -9; - pixel_y = 16 - }, -/obj/item/storage/photo_album{ - pixel_x = -6; - pixel_y = -17 - }, -/obj/item/clothing/mask/cigarette/pipe, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -44498,19 +43460,21 @@ icon_state = "test_floor4" }, /area/almayer/squads/bravo) -"kbf" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "containmentlockdown_N"; - name = "\improper Containment Lockdown" +"kbv" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) +"kbw" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/obj/structure/machinery/door/airlock/almayer/research/reinforced{ - dir = 1; - name = "\improper Containment Airlock" +/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor{ + dir = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/medical/containment) +/area/almayer/engineering/lower/engine_core) "kbx" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -44522,17 +43486,48 @@ }, /area/almayer/engineering/upper_engineering) "kbH" = ( -/obj/structure/window/reinforced, -/turf/open/floor/almayer{ - icon_state = "tcomms" +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresDown"; + vector_x = 97; + vector_y = -65 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/stairs{ + dir = 1 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, /area/almayer/command/airoom) +"kbJ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/containment) "kbV" = ( /obj/structure/platform{ dir = 1 }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"kbX" = ( +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/camera/autoname/almayer, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/cells) "kcl" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -44540,12 +43535,39 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/squads/bravo) +"kcp" = ( +/turf/closed/wall/almayer, +/area/almayer/living/auxiliary_officer_office) +"kcs" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) +"kcA" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) +"kcG" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "kcH" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/living/synthcloset) "kcN" = ( -/turf/closed/wall/almayer/outer, +/turf/closed/wall/almayer/reinforced/temphull, /area/almayer/living/commandbunks) +"kde" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/general_equipment) "kdi" = ( /obj/item/device/flashlight/pen{ pixel_x = 4; @@ -44555,26 +43577,32 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) -"kdt" = ( -/obj/structure/machinery/door_control{ - id = "OuterShutter"; - name = "Outer Shutter"; - pixel_x = 5; - pixel_y = -2; - req_one_access_txt = "1;3" +"kdn" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + layer = 2.5; + pixel_y = 1 }, -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/door_control{ - id = "OfficeSafeRoom"; - name = "Office Safe Room"; - pixel_x = 5; - pixel_y = 5; - req_one_access_txt = "1;3" +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" }, +/area/almayer/hallways/upper/port) +"kdo" = ( +/obj/structure/largecrate/random/barrel/red, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_f_s) +"kdv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "kdB" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -44582,27 +43610,22 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) -"kex" = ( -/obj/structure/machinery/cm_vending/sorted/medical/blood, -/obj/structure/sign/safety/ref_bio_storage{ - pixel_x = 8; - pixel_y = 32 - }, +"keE" = ( +/obj/structure/largecrate/random/barrel/red, +/obj/structure/machinery/light/small, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + icon_state = "plate" }, -/area/almayer/medical/medical_science) +/area/almayer/maint/hull/upper/u_a_s) "keO" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +/obj/structure/largecrate/random/secure, +/obj/effect/decal/warning_stripes{ + icon_state = "E" }, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hallways/port_hallway) +/area/almayer/maint/hull/lower/l_a_p) "keR" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -44614,25 +43637,30 @@ icon_state = "red" }, /area/almayer/hallways/stern_hallway) -"kfp" = ( -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = 32 +"kfo" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 }, -/area/almayer/hallways/starboard_hallway) -"kfv" = ( -/obj/structure/surface/table/almayer, -/obj/item/stack/nanopaste{ - pixel_x = -3; - pixel_y = 14 +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/port) +"kfB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 8 }, -/area/almayer/hull/upper_hull/u_a_p) +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "kfE" = ( /obj/structure/bed/sofa/south/grey/right, /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ @@ -44643,34 +43671,23 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"kfN" = ( -/obj/structure/closet/secure_closet/brig, +"kfI" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/processing) +/area/almayer/engineering/lower) "kfP" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"kfX" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) -"kge" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/processing) +"kfU" = ( +/turf/open/floor/plating, +/area/almayer/powered/agent) "kgp" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -44701,14 +43718,34 @@ "kgs" = ( /obj/structure/window/framed/almayer/white, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "researchlockdownext"; - name = "\improper Research Lockdown" + id = "researchlockdownext_se_2"; + name = "\improper Research Window Shutter" }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/plating, /area/almayer/medical/medical_science) +"kgD" = ( +/obj/structure/sign/safety/cryo{ + pixel_x = 35 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"kgQ" = ( +/obj/structure/surface/rack, +/obj/item/storage/firstaid/adv{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/storage/firstaid/regular, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/execution) "khd" = ( /obj/structure/bed/chair{ dir = 4 @@ -44717,6 +43754,19 @@ icon_state = "plate" }, /area/almayer/squads/charlie_delta_shared) +"khf" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_ew_full_cap"; + layer = 3.5 + }, +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "khD" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -44728,19 +43778,31 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"khS" = ( -/obj/structure/machinery/light/small{ - dir = 8 +"khI" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 32 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) -"kif" = ( -/turf/open/floor/almayer{ - icon_state = "plate" +/area/almayer/maint/hull/lower/l_f_p) +"khJ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/area/almayer/shipboard/brig/main_office) +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 8 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "tcomms" + }, +/area/almayer/command/airoom) "kij" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = -17 @@ -44750,19 +43812,49 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"kiF" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" +"kio" = ( +/obj/structure/machinery/firealarm{ + pixel_y = 28 }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) +/obj/structure/closet, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/port_emb) +"kiG" = ( +/obj/structure/machinery/power/smes/buildable, +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, +/obj/structure/sign/safety/high_voltage{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "tcomms" + }, +/area/almayer/engineering/lower/engine_core) "kiM" = ( /obj/structure/surface/table/reinforced/almayer_B, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"kiR" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_a_s) "kiT" = ( /obj/structure/platform{ dir = 8 @@ -44776,6 +43868,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/machinery/light, /turf/open/floor/almayer{ icon_state = "orange" }, @@ -44790,46 +43883,60 @@ icon_state = "red" }, /area/almayer/squads/alpha) -"kjN" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 4 +"kiX" = ( +/obj/structure/bed/chair/comfy/delta{ + dir = 1 }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/surgery) -"kjV" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 +/area/almayer/living/briefing) +"kjk" = ( +/obj/structure/machinery/cryopod/right, +/obj/structure/sign/safety/cryo{ + pixel_x = 32 }, -/obj/structure/bed{ - can_buckle = 0 +/turf/open/floor/almayer{ + icon_state = "cargo" }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 +/area/almayer/shipboard/brig/cryo) +"kjD" = ( +/obj/structure/machinery/computer/demo_sim{ + dir = 4; + pixel_x = -17; + pixel_y = 8 }, -/obj/item/bedsheet/yellow{ - layer = 3.2 +/obj/structure/machinery/computer/working_joe{ + dir = 4; + pixel_x = -17; + pixel_y = -8 }, -/obj/item/bedsheet/yellow{ - pixel_y = 13 - }, -/obj/structure/sign/safety/bathunisex{ - pixel_x = -16; - pixel_y = 8 +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"kjO" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orangecorner" }, -/obj/item/toy/plushie_cade, +/area/almayer/engineering/lower/engine_core) +"kjY" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/living/port_emb) +/area/almayer/maint/hull/lower/l_a_s) +"kkk" = ( +/obj/structure/machinery/power/monitor{ + name = "Core Power Monitoring" + }, +/obj/structure/sign/safety/terminal{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) "kkt" = ( /obj/structure/surface/table/almayer, /obj/item/book/manual/marine_law, @@ -44837,22 +43944,43 @@ icon_state = "greenfull" }, /area/almayer/living/offices) +"kkv" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/structure/machinery/light/small, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/shipboard/brig/chief_mp_office) "kkx" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer{ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) -"kkO" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" +"kkE" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 2; + pixel_y = 3 }, +/turf/open/floor/almayer, +/area/almayer/hallways/port_hallway) +"kkW" = ( +/obj/structure/surface/table/almayer, +/obj/item/book/manual/atmospipes, +/obj/item/circuitboard/airalarm, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + dir = 1; + icon_state = "orange" }, -/area/almayer/engineering/engine_core) +/area/almayer/engineering/lower) "klH" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -44861,6 +43989,10 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) +"klT" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "kmd" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -44870,6 +44002,12 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) +"kmk" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hallways/vehiclehangar) "kmp" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -44889,35 +44027,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north2) -"kmK" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/item/tool/mop, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) -"kmL" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/firstaid/toxin{ - pixel_x = 8; - pixel_y = -2 - }, -/obj/item/storage/box/drinkingglasses{ - pixel_x = -7 - }, -/obj/item/storage/xeno_tag_case/full{ - pixel_y = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/corporateliason) -"kmM" = ( -/obj/structure/sink{ - pixel_y = 24 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "kng" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -44942,6 +44051,21 @@ /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) +"knL" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/lifeboat_pumps/south2) +"knO" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "koc" = ( /obj/structure/machinery/status_display{ pixel_y = -30 @@ -44950,19 +44074,13 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) -"koz" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/lightreplacer{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/storage/toolbox/emergency, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 +"kow" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/lower/l_f_p) "koB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -44983,32 +44101,32 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"koL" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/medical/testlab) -"koT" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" +"kpc" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/almayer/command/airoom) +"kph" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor{ + dir = 1 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_a_p) -"kpl" = ( -/obj/structure/machinery/door_control{ - id = "cl_shutters"; - name = "Privacy Shutters"; - pixel_y = -20; - req_access_txt = "200" +/area/almayer/engineering/lower/engine_core) +"kpj" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"kpo" = ( +/obj/structure/machinery/floodlight/landing{ + name = "bolted floodlight" }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "mono" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/lifeboat_pumps/south2) "kpQ" = ( /obj/structure/machinery/door_control{ id = "engidorm"; @@ -45021,61 +44139,14 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"kpX" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) -"kpY" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/head/hardhat{ - pixel_y = 15 - }, -/obj/item/clothing/head/hardhat/dblue{ - pixel_x = -7; - pixel_y = 10 - }, -/obj/item/clothing/head/hardhat{ - pixel_x = 4; - pixel_y = 7 - }, -/obj/item/clothing/head/hardhat/orange{ - pixel_x = 7; - pixel_y = -5 +"kqb" = ( +/obj/structure/machinery/light/small{ + dir = 1 }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"kqc" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/belt/utility/full, -/obj/item/clothing/glasses/welding, -/obj/structure/machinery/light, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/engineering/engineering_workshop) -"kqf" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/aft_hallway) +/area/almayer/maint/hull/lower/l_m_p) "kqt" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -45112,6 +44183,32 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"kqB" = ( +/obj/structure/prop/holidays/string_lights{ + pixel_y = 27 + }, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/structure/surface/table/almayer, +/obj/item/storage/box/drinkingglasses, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"kqC" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/structure/largecrate/random/barrel/green, +/obj/structure/sign/safety/maint{ + pixel_x = 15; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) "kqK" = ( /obj/structure/machinery/conveyor{ dir = 8; @@ -45148,17 +44245,26 @@ icon_state = "plate" }, /area/almayer/living/gym) -"krq" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"kry" = ( +/obj/structure/machinery/flasher{ + id = "Perma 1"; + pixel_y = 24 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/almayer{ + icon_state = "plate" }, +/area/almayer/shipboard/brig/perma) +"krG" = ( +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "sterile_green_side" + icon_state = "plate" }, -/area/almayer/medical/medical_science) +/area/almayer/maint/hull/upper/s_bow) +"krJ" = ( +/obj/item/tool/wet_sign, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "krN" = ( /obj/structure/machinery/conveyor{ id = "req_belt" @@ -45177,6 +44283,25 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) +"krU" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 + }, +/obj/item/tool/screwdriver, +/obj/item/bananapeel{ + desc = "An experimental B8 Smart-Scope. Based on the technologies used in the Smart Gun by ARMAT, this sight has integrated IFF systems. It can only attach to the L42A Battle Rifle, M44 Combat Revolver, and M46C Pulse Rifle. This one appears to be covered in gun oil"; + icon = 'icons/obj/items/weapons/guns/attachments.dmi'; + icon_state = "iffbarrel"; + name = "Broken B8 Smart-Scope"; + pixel_x = -3; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/living/briefing) "krZ" = ( /obj/structure/closet/secure_closet/cargotech, /obj/item/clothing/accessory/storage/webbing, @@ -45192,6 +44317,15 @@ icon_state = "green" }, /area/almayer/squads/req) +"ksg" = ( +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/processing) "ksp" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -45200,97 +44334,43 @@ icon_state = "cargo" }, /area/almayer/squads/bravo) -"ksA" = ( -/obj/structure/closet/secure_closet/freezer/fridge/groceries, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/grunt_rnr) +"ksw" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_stern) "ksN" = ( /turf/open/floor/almayer/uscm/directional{ dir = 6 }, /area/almayer/living/briefing) -"ksP" = ( -/obj/structure/surface/table/almayer, -/obj/item/ashtray/bronze{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/effect/decal/cleanable/ash, -/obj/item/trash/cigbutt/ucigbutt{ - pixel_x = 4; - pixel_y = 13 - }, -/obj/item/trash/cigbutt/ucigbutt{ - pixel_x = -7; - pixel_y = 14 - }, -/obj/item/trash/cigbutt/ucigbutt{ - pixel_x = -13; - pixel_y = 8 - }, -/obj/item/trash/cigbutt/ucigbutt{ - pixel_x = -6; - pixel_y = 9 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"kta" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/shipboard/brig/evidence_storage) -"ktn" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N" - }, -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/weapon/gun/rifle/m4ra, -/obj/item/weapon/gun/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/shipboard/brig/armory) -"ktB" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/lower_hull/l_m_s) -"ktO" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"ktP" = ( -/obj/structure/curtain/red, +"ktR" = ( +/obj/item/trash/crushed_cup, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/lower/l_m_s) "ktX" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "greencorner" }, /area/almayer/living/grunt_rnr) +"kui" = ( +/obj/structure/sign/safety/hazard{ + pixel_y = 32 + }, +/obj/structure/sign/safety/ammunition{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/machinery/vending/security/riot, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/armory) +"kuk" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) "kuu" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/structure/disposalpipe/segment{ @@ -45304,33 +44384,61 @@ icon_state = "emeraldcorner" }, /area/almayer/living/briefing) -"kvh" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/station_alert{ - dir = 8 +"kuJ" = ( +/obj/structure/pipes/vents/scrubber, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) +"kuK" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/engineering/upper_engineering) -"kvz" = ( -/obj/structure/machinery/power/terminal{ - dir = 4 +/area/almayer/maint/hull/upper/u_m_p) +"kvf" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 2; + name = "\improper Engineering Workshop" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 }, /turf/open/floor/almayer{ - icon_state = "tcomms" + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/workshop) +"kvh" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/station_alert{ + dir = 8 }, -/area/almayer/engineering/engine_core) -"kvN" = ( /turf/open/floor/almayer{ - dir = 10; - icon_state = "orange" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/engineering/upper_engineering) "kvU" = ( /obj/structure/surface/table/almayer, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) +"kwc" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/bed/chair/comfy/bravo{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "kwd" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -45339,14 +44447,19 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering) +"kwg" = ( +/obj/structure/bookcase/manuals/medical, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_s) "kwo" = ( /obj/structure/surface/rack, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"kwq" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "kws" = ( /obj/structure/machinery/line_nexter/med{ dir = 4 @@ -45355,15 +44468,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) -"kwz" = ( -/obj/structure/sign/poster{ - pixel_y = 32 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "kwQ" = ( /obj/item/tool/warning_cone{ pixel_y = 16 @@ -45375,15 +44479,27 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"kwS" = ( -/obj/structure/bookcase/manuals/medical, -/obj/structure/machinery/light{ +"kxd" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/port_emb) +"kxe" = ( +/obj/structure/machinery/power/apc/almayer{ dir = 1 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/lower/p_bow) "kxo" = ( /obj/structure/machinery/washing_machine, /obj/structure/machinery/washing_machine{ @@ -45406,27 +44522,28 @@ icon_state = "test_floor4" }, /area/almayer/squads/req) -"kxM" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"kyh" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/pipes/vents/scrubber{ dir = 4 }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"kyr" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ - dir = 4; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/processing) -"kyI" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/sign/safety/bathunisex{ - pixel_x = 32 + icon_state = "test_floor4" }, -/turf/open/floor/wood/ship, -/area/almayer/shipboard/brig/chief_mp_office) +/area/almayer/hallways/upper/starboard) +"kyw" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/l_m_s) "kyN" = ( /obj/structure/disposalpipe/segment, /obj/structure/sign/safety/distribution_pipes{ @@ -45438,18 +44555,17 @@ }, /area/almayer/shipboard/navigation) "kyP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/machinery/cm_vending/sorted/marine_food, -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/l_f_p) +"kyR" = ( +/obj/structure/safe/co_office, +/obj/item/weapon/pole/fancy_cane, +/obj/item/tool/lighter/zippo/gold{ + layer = 3.05; + pixel_y = 3 }, -/area/almayer/shipboard/brig/perma) +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "kyX" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -45457,12 +44573,13 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) "kyY" = ( -/obj/structure/largecrate/random/case/small, -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = -25 +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 6; + icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) "kyZ" = ( @@ -45475,11 +44592,41 @@ /obj/structure/machinery/vending/walkman, /turf/open/floor/almayer, /area/almayer/living/briefing) +"kzc" = ( +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21"; + pixel_y = 11 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "kzk" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/command/computerlab) +"kzr" = ( +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/safety/firingrange{ + pixel_x = 32; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/shipboard/brig/execution) +"kzs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "kzy" = ( /obj/structure/bed/chair, /turf/open/floor/almayer{ @@ -45487,6 +44634,14 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"kzC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/engineering/lower/workshop) "kzK" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -45521,12 +44676,34 @@ icon_state = "plate" }, /area/almayer/living/port_emb) +"kzO" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "kzP" = ( /turf/open/floor/almayer{ dir = 9; icon_state = "red" }, /area/almayer/hallways/port_hallway) +"kzT" = ( +/obj/structure/machinery/door_control{ + id = "ARES StairsLower"; + name = "ARES Core Lockdown"; + pixel_x = -24; + pixel_y = -8; + req_one_access_txt = "90;91;92" + }, +/turf/open/floor/almayer/no_build{ + dir = 8; + icon_state = "silver" + }, +/area/almayer/command/airoom) "kAh" = ( /obj/structure/sign/safety/restrictedarea{ pixel_x = -17 @@ -45542,29 +44719,124 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) -"kAs" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 +"kAp" = ( +/obj/structure/surface/rack{ + desc = "A bunch of metal shelves stacked on top of eachother. Excellent for storage purposes, less so as cover. One of the shelf legs is damaged, resulting in the rack being propped up by what appears to be circuit boards." }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/machinery/light/small{ + dir = 4; + status = 3; + icon_state = "bulb-burned" }, -/area/almayer/hull/lower_hull/l_f_p) -"kAU" = ( -/obj/structure/platform{ - dir = 4 +/obj/effect/decal/cleanable/blood, +/obj/item/prop{ + icon = 'icons/obj/items/bloodpack.dmi'; + icon_state = "bloodpack"; + name = "blood bag"; + desc = "A blood bag with a hole in it. The rats must have gotten to it first." }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" +/obj/item/prop{ + icon = 'icons/obj/items/bloodpack.dmi'; + icon_state = "bloodpack"; + name = "blood bag"; + desc = "A blood bag with a hole in it. The rats must have gotten to it first." }, -/area/almayer/lifeboat_pumps/south2) -"kBP" = ( -/turf/open/floor/almayer{ - dir = 9; - icon_state = "sterile_green_side" +/obj/item/prop{ + icon = 'icons/obj/items/bloodpack.dmi'; + icon_state = "bloodpack"; + name = "blood bag"; + desc = "A blood bag with a hole in it. The rats must have gotten to it first." }, -/area/almayer/medical/containment) +/obj/item/prop{ + icon = 'icons/obj/items/circuitboards.dmi'; + icon_state = "id_mod"; + name = "circuit board"; + desc = "The words \"Cloning Pod\" are scrawled onto it. It appears to be heavily damaged."; + layer = 2.78; + pixel_y = 10; + pixel_x = 8 + }, +/obj/item/prop{ + icon = 'icons/obj/items/circuitboards.dmi'; + icon_state = "id_mod"; + name = "circuit board"; + desc = "The words \"Cloning Scanner\" are scrawled onto it. It appears to be heavily damaged."; + layer = 2.79; + pixel_y = 7; + pixel_x = 8 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/lower_medical_medbay) +"kAv" = ( +/obj/structure/largecrate/supply/ammo/shotgun, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) +"kAL" = ( +/obj/structure/closet/secure_closet/brig, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) +"kAU" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south2) +"kBh" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/airlock/almayer/security/reinforced{ + dir = 2; + name = "\improper Execution Equipment" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/execution) +"kBo" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) +"kBy" = ( +/obj/structure/machinery/ares/processor, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) +"kBK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/starboard_hallway) +"kBP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) "kBY" = ( /obj/structure/machinery/cryopod/right, /turf/open/floor/almayer{ @@ -45574,6 +44846,12 @@ "kCi" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/port_missiles) +"kCj" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/hydroponics) "kCm" = ( /obj/structure/sign/safety/fire_haz{ pixel_x = 15; @@ -45586,72 +44864,60 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"kCu" = ( +/obj/structure/machinery/portable_atmospherics/powered/scrubber, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "kCE" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) "kCS" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/vehiclehangar) -"kCT" = ( -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"kDb" = ( -/obj/structure/surface/rack, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"kDi" = ( -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/structure/sign/safety/hvac_old{ +"kDd" = ( +/obj/structure/sign/safety/water{ pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"kDj" = ( -/obj/structure/bed, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_side" + pixel_y = -32 }, -/area/almayer/medical/lower_medical_medbay) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "kDk" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ - name = "\improper Medical Research Workshop" +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 }, -/area/almayer/medical/testlab) -"kDt" = ( -/obj/structure/machinery/light{ - dir = 1 +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 6 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "red" + icon_state = "dark_sterile" }, -/area/almayer/lifeboat_pumps/south1) -"kDA" = ( +/area/almayer/medical/containment) +"kDK" = ( /obj/structure/pipes/vents/scrubber, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/processing) +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "kDR" = ( /obj/structure/disposalpipe/junction{ dir = 1; @@ -45671,6 +44937,34 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) +"kEc" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/item/vehicle_clamp, +/obj/item/vehicle_clamp, +/obj/item/vehicle_clamp, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/armory) +"kEg" = ( +/obj/structure/surface/table/almayer, +/obj/item/toy/deck{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/toy/deck/uno{ + pixel_x = 6; + pixel_y = -1 + }, +/obj/structure/prop/holidays/string_lights{ + dir = 8; + pixel_x = 29 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "kEp" = ( /obj/structure/filingcabinet/filingcabinet, /turf/open/floor/almayer{ @@ -45678,36 +44972,34 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/morgue) -"kFe" = ( -/obj/structure/machinery/constructable_frame, -/turf/open/floor/almayer{ - icon_state = "mono" +"kEq" = ( +/obj/structure/machinery/door/window/ultra{ + dir = 8; + req_access_txt = "3" }, -/area/almayer/lifeboat_pumps/south2) -"kFk" = ( -/obj/structure/closet/secure_closet/commander, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"kFq" = ( +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/perma) +"kEs" = ( /obj/structure/surface/table/almayer, -/obj/item/book/manual/engineering_construction, -/obj/item/folder/black_random, -/obj/structure/sign/safety/high_rad{ - pixel_x = 32; - pixel_y = -8 +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 }, -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 +/obj/item/prop/helmetgarb/helmet_nvg/cosmetic, +/turf/open/floor/almayer{ + icon_state = "redfull" }, -/obj/structure/sign/safety/terminal{ - pixel_x = 8; - pixel_y = -32 +/area/almayer/living/briefing) +"kFe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 24 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/engineering/engineering_workshop) +/area/almayer/living/pilotbunks) "kFs" = ( /obj/structure/machinery/light{ dir = 4 @@ -45733,24 +45025,34 @@ icon_state = "plating" }, /area/almayer/squads/req) +"kFU" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "kFY" = ( /obj/structure/sign/safety/cryo{ pixel_x = 7 }, /turf/closed/wall/almayer, /area/almayer/living/cryo_cells) -"kGt" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 +"kGi" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) +"kGu" = ( +/obj/structure/machinery/cryopod{ + layer = 3.1; + pixel_y = 13 }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = -17 +/obj/structure/machinery/status_display{ + pixel_x = -32 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/shipboard/brig/cryo) "kGF" = ( /obj/structure/reagent_dispensers/water_cooler/stacks{ density = 0; @@ -45761,19 +45063,29 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"kGI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/hallways/aft_hallway) "kGL" = ( /obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "green" + icon_state = "test_floor4" }, /area/almayer/hallways/aft_hallway) -"kGX" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = 25 +"kGQ" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 }, -/turf/open/floor/almayer, -/area/almayer/engineering/engine_core) +/turf/open/floor/almayer/research/containment/corner_var1{ + icon_state = "containment_corner_variant_2" + }, +/area/almayer/medical/containment/cell) "kHa" = ( /turf/closed/wall/almayer, /area/almayer/shipboard/brig/surgery) @@ -45796,37 +45108,49 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"kHA" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sign/safety/high_voltage{ - pixel_x = 32; - pixel_y = -8 - }, -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) -"kHB" = ( -/obj/structure/machinery/vending/cola/research, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" - }, -/area/almayer/medical/medical_science) -"kHK" = ( +"kHS" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/execution) +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "kHT" = ( /turf/open/floor/almayer{ dir = 5; icon_state = "green" }, /area/almayer/hallways/aft_hallway) +"kHY" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) +"kIf" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) +"kIk" = ( +/obj/structure/prop/invuln/lattice_prop{ + dir = 1; + icon_state = "lattice-simple"; + pixel_x = 16; + pixel_y = -16 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"kIl" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "kIm" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -45844,43 +45168,62 @@ icon_state = "cargo" }, /area/almayer/squads/charlie) -"kIV" = ( -/turf/open/floor/almayer{ - icon_state = "plate" +"kJc" = ( +/obj/structure/ladder{ + height = 1; + id = "ForeStarboardMaint" + }, +/obj/structure/sign/safety/ladder{ + pixel_x = 8; + pixel_y = 32 }, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/plating/almayer, +/area/almayer/maint/hull/lower/s_bow) "kJi" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/squads/alpha) -"kJC" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" +"kJm" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"kJn" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 17" }, -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) -"kJG" = ( -/obj/item/toy/deck{ - pixel_y = 12 +/obj/structure/sign/safety/rad_haz{ + pixel_x = 8; + pixel_y = 32 }, -/obj/structure/sign/safety/storage{ - pixel_x = 32 +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) +"kJH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/closet/secure_closet/freezer/industry, +/obj/item/reagent_container/glass/beaker/silver, +/obj/structure/machinery/light{ + dir = 1 }, -/obj/structure/surface/table/woodentable/poor, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) -"kJK" = ( -/obj/structure/bed/chair/comfy/orange, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) +/area/almayer/engineering/lower/workshop/hangar) +"kJL" = ( +/obj/structure/machinery/constructable_frame{ + icon_state = "box_2" + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) "kJV" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -45888,6 +45231,25 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) +"kJW" = ( +/obj/structure/machinery/door/window/westright, +/obj/structure/machinery/shower{ + dir = 8; + layer = 3.10; + plane = -4 + }, +/obj/item/tool/soap{ + pixel_x = 2; + pixel_y = 7 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/commandbunks) +"kJZ" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "kKb" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -45907,30 +45269,30 @@ icon_state = "test_floor4" }, /area/almayer/living/grunt_rnr) -"kKG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"kKv" = ( +/obj/effect/projector{ + name = "Almayer_AresUp"; + vector_x = -97; + vector_y = 65 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/turf/open/floor/almayer/no_build{ + dir = 8; + icon_state = "silver" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/command/airoom) "kKR" = ( /obj/structure/pipes/vents/pump{ dir = 1 }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south2) -"kKX" = ( -/obj/structure/machinery/conveyor{ - id = "lower_garbage" - }, -/obj/structure/plasticflaps, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "plating_striped" - }, -/area/almayer/hull/lower_hull/l_m_p) "kLc" = ( /obj/structure/machinery/door/airlock/almayer/maint{ req_one_access = null; @@ -45949,27 +45311,83 @@ icon_state = "orange" }, /area/almayer/squads/bravo) +"kLm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) +"kLp" = ( +/obj/structure/sign/safety/stairs{ + pixel_x = -17; + pixel_y = 7 + }, +/obj/structure/sign/safety/escapepod{ + pixel_x = -17; + pixel_y = -8 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/hallways/starboard_hallway) +"kLB" = ( +/obj/docking_port/stationary/escape_pod/east, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_m_s) "kLP" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, /turf/open/floor/almayer{ dir = 8; icon_state = "greencorner" }, /area/almayer/squads/req) -"kMq" = ( -/obj/structure/sign/poster{ - desc = "It says DRUG."; - icon_state = "poster2"; - pixel_y = 30 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"kLZ" = ( +/obj/structure/machinery/light/small{ + dir = 1 }, +/obj/structure/largecrate/random/barrel/red, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/upper/u_a_s) +"kMa" = ( +/obj/structure/platform_decoration, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"kMp" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/machinery/status_display{ + pixel_x = -32 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) +"kMr" = ( +/obj/item/trash/uscm_mre, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice1"; + pixel_x = 16; + pixel_y = -16 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "kMH" = ( /obj/structure/machinery/door/window/brigdoor/southright{ id = "Cell 1"; @@ -45980,47 +45398,89 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) -"kMU" = ( -/obj/structure/sign/safety/maint{ - pixel_x = -17 +"kMK" = ( +/obj/structure/prop/invuln{ + desc = "An inflated membrane. This one is puncture proof. Wow!"; + icon = 'icons/obj/items/inflatable.dmi'; + icon_state = "wall"; + name = "umbilical wall" + }, +/obj/structure/blocker/invisible_wall, +/turf/open/floor/almayer_hull{ + dir = 8; + icon_state = "outerhull_dir" }, +/area/almayer/engineering/upper_engineering/port) +"kMR" = ( +/obj/effect/spawner/random/toolbox, +/obj/structure/largecrate/random/barrel/red, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hallways/port_hallway) -"kNi" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/almayer/maint/hull/lower/l_a_p) +"kMW" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + req_access = null }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/item/clothing/suit/chef/classic, +/obj/item/tool/kitchen/knife/butcher, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) +"kNf" = ( +/obj/structure/bed/chair/office/dark, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = 8; + pixel_y = 32 }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" + dir = 5; + icon_state = "plating" }, -/area/almayer/shipboard/brig/processing) +/area/almayer/shipboard/panic) +"kNk" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/almayer, +/area/almayer/engineering/upper_engineering/starboard) "kNl" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) +"kNq" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/u_a_p) "kNx" = ( -/obj/structure/machinery/door_control{ - id = "containmentlockdown_S"; - name = "Containment Lockdown"; - pixel_y = -20; - req_one_access_txt = "19;28" +/obj/structure/sign/safety/ref_bio_storage{ + pixel_x = -17; + pixel_y = 7 }, -/obj/structure/machinery/light{ - dir = 8 +/obj/structure/sign/safety/biohazard{ + pixel_x = -17; + pixel_y = -7 }, +/obj/structure/machinery/cm_vending/sorted/medical/chemistry, /turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_corner" + icon_state = "mono" }, -/area/almayer/medical/containment) +/area/almayer/medical/medical_science) +"kNC" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/disposalpipe/junction{ + dir = 2; + icon_state = "pipe-j2" + }, +/turf/open/floor/almayer, +/area/almayer/living/port_emb) "kNO" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -46034,39 +45494,24 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) -"kNQ" = ( +"kNX" = ( +/obj/structure/bed/chair/comfy/charlie{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - dir = 1; - icon_state = "orangecorner" + icon_state = "emeraldfull" }, -/area/almayer/hallways/starboard_hallway) +/area/almayer/living/briefing) "kNY" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/weapon_room) -"kOf" = ( -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"kOi" = ( -/obj/structure/sink{ - dir = 1; - pixel_y = -10 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/brig/perma) -"kOk" = ( -/obj/structure/sign/safety/maint{ - pixel_x = 32 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "kOv" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "cargo_arrow" }, @@ -46076,42 +45521,63 @@ icon_state = "N"; pixel_y = 1 }, -/obj/structure/bed/chair/comfy, +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/clipboard{ + pixel_x = -6 + }, +/obj/item/tool/pen/blue{ + pixel_x = -6 + }, /turf/open/floor/almayer{ icon_state = "bluefull" }, /area/almayer/living/pilotbunks) -"kOG" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = -32 +"kOH" = ( +/obj/structure/machinery/light{ + dir = 8 }, /obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 2 + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/command/corporateliaison) +"kOJ" = ( +/obj/item/storage/backpack/marine/satchel{ + desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; + icon = 'icons/obj/janitor.dmi'; + icon_state = "trashbag3"; + name = "trash bag"; + pixel_x = -4; + pixel_y = 6 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) +"kOR" = ( +/obj/structure/machinery/light/small{ + dir = 1 }, /obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 + icon_state = "S" }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hallways/aft_hallway) -"kOH" = ( -/turf/open/floor/almayer{ - dir = 5; - icon_state = "blue" +/area/almayer/maint/hull/lower/p_bow) +"kOW" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" }, -/area/almayer/living/port_emb) -"kPo" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/squads/req) "kPx" = ( /obj/structure/surface/table/almayer, /obj/item/device/mass_spectrometer, @@ -46149,6 +45615,12 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) +"kPH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south2) "kPJ" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -46184,19 +45656,25 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) -"kQz" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - dir = 1; - name = "\improper Brig" +"kQr" = ( +/obj/structure/surface/table/almayer, +/obj/item/trash/pistachios, +/obj/item/tool/lighter/random{ + pixel_x = 13 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Brig Lockdown Shutters"; - name = "\improper Brig Lockdown Shutter" +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"kQu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + allow_construction = 0 }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/shipboard/brig/processing) "kRd" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -46206,18 +45684,51 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_three) -"kRu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"kRg" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" }, -/obj/structure/prop/invuln/lattice_prop{ - dir = 1; - icon_state = "lattice-simple"; - pixel_x = -16; - pixel_y = 17 +/area/almayer/command/lifeboat) +"kRk" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/screwdriver, +/obj/item/prop/helmetgarb/gunoil{ + pixel_x = -7; + pixel_y = 12 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/obj/item/weapon/gun/rifle/l42a{ + pixel_x = 17; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) +"kRD" = ( +/obj/item/reagent_container/glass/bucket/janibucket, +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/item/reagent_container/glass/bucket/janibucket{ + pixel_y = 11 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) +"kRN" = ( +/obj/structure/surface/rack, +/obj/item/clothing/glasses/meson, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) "kRP" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/item/prop/magazine/dirty/torn, @@ -46227,24 +45738,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"kSc" = ( +"kSn" = ( /obj/structure/machinery/camera/autoname/almayer{ - dir = 8; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ dir = 4; - icon_state = "sterile_green_side" + name = "ship-grade camera" }, -/area/almayer/medical/testlab) -"kSd" = ( -/obj/item/cell/high/empty, -/obj/item/cell/high/empty, -/obj/structure/surface/rack, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/upper/p_bow) "kSv" = ( /obj/item/reagent_container/glass/bucket/janibucket, /turf/open/floor/almayer{ @@ -46252,6 +45754,33 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) +"kSy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/structure/machinery/door_control{ + id = "ARES Mainframe Right"; + name = "ARES Mainframe Lockdown"; + pixel_x = -24; + pixel_y = 24; + req_one_access_txt = "200;91;92" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "tcomms" + }, +/area/almayer/command/airoom) +"kSH" = ( +/obj/structure/sign/prop1{ + pixel_y = 32 + }, +/obj/structure/filingcabinet/security{ + pixel_x = -8 + }, +/obj/structure/filingcabinet/medical{ + pixel_x = 8 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "kSJ" = ( /obj/structure/disposalpipe/junction{ dir = 4; @@ -46269,34 +45798,18 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"kTc" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/ammo_magazine/shotgun, -/obj/item/ammo_magazine/shotgun, -/obj/item/ammo_magazine/shotgun, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/weapon/gun/shotgun/combat, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/vehicle_clamp, -/obj/item/vehicle_clamp, -/obj/item/vehicle_clamp, -/obj/effect/decal/warning_stripes{ - icon_state = "S" +"kSU" = ( +/obj/structure/transmitter/no_dnd{ + name = "Requisition Telephone"; + phone_category = "Almayer"; + phone_id = "Requisition"; + pixel_y = 30 }, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) -"kTq" = ( -/obj/structure/largecrate/supply/supplies/mre, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 5; + icon_state = "plating" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/squads/req) "kTv" = ( /obj/structure/machinery/light{ dir = 4 @@ -46306,20 +45819,6 @@ icon_state = "tcomms" }, /area/almayer/command/telecomms) -"kTM" = ( -/obj/item/frame/rack{ - layer = 3.1; - pixel_y = 19 - }, -/obj/structure/surface/rack, -/obj/item/tool/weldpack{ - pixel_x = 5 - }, -/obj/item/tool/weldpack{ - pixel_x = -2 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "kTN" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -46337,26 +45836,17 @@ /turf/open/floor/almayer, /area/almayer/hallways/hangar) "kUh" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ + access_modified = 1; + dir = 1; name = "\improper Flight Crew Quarters"; req_one_access_txt = "19;22" }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/living/pilotbunks) -"kUt" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/obj/structure/surface/rack, -/obj/item/frame/table, -/obj/item/frame/table, -/obj/item/frame/table, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "kUw" = ( /obj/structure/surface/rack, /obj/item/storage/bag/trash{ @@ -46375,6 +45865,27 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/port) +"kUL" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) +"kUQ" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/obj/structure/machinery/constructable_frame, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) +"kUR" = ( +/turf/open/floor/almayer{ + icon_state = "bluefull" + }, +/area/almayer/living/briefing) "kUV" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -46383,16 +45894,13 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) -"kVX" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "OfficeSafeRoom"; - name = "\improper Office Safe Room" - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"kVV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" }, -/area/almayer/hull/lower_hull/l_f_s) +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "kVZ" = ( /obj/structure/machinery/door/window/brigdoor/southright{ id = "Cell 2"; @@ -46425,24 +45933,51 @@ icon_state = "silvercorner" }, /area/almayer/command/cichallway) -"kWT" = ( -/obj/structure/machinery/power/apc/almayer/hardened, +"kWI" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "test_floor4" }, -/area/almayer/lifeboat_pumps/south1) -"kWY" = ( -/obj/structure/disposalpipe/segment{ +/area/almayer/maint/hull/lower/l_f_s) +"kWN" = ( +/obj/structure/sign/poster{ + desc = "It says DRUG."; + icon_state = "poster2"; + pixel_x = -27 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/bed/chair/comfy/charlie{ dir = 4 }, -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/living/briefing) +"kWR" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/transmitter/rotary{ + name = "Commanding Officer's Office"; + phone_category = "Offices"; + phone_id = "Commanding Officer's Office"; + pixel_x = 16; + pixel_y = 8 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) +"kWT" = ( +/turf/open/floor/almayer{ + dir = 9; + icon_state = "blue" + }, +/area/almayer/living/pilotbunks) "kXa" = ( -/obj/structure/machinery/cm_vending/clothing/marine/bravo, +/obj/structure/machinery/cm_vending/clothing/marine/bravo{ + density = 0; + pixel_y = 16 + }, /obj/structure/sign/safety/cryo{ pixel_x = 32 }, @@ -46460,6 +45995,25 @@ icon_state = "silver" }, /area/almayer/command/computerlab) +"kXj" = ( +/turf/open/floor/almayer/no_build{ + dir = 4; + icon_state = "silver" + }, +/area/almayer/command/airoom) +"kXm" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/press_area_ag{ + pixel_x = -17; + pixel_y = -7 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "kXu" = ( /turf/open/floor/almayer{ dir = 8; @@ -46467,27 +46021,11 @@ }, /area/almayer/command/computerlab) "kXw" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/medical/upper_medical) -"kXJ" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/secure_data{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) -"kXK" = ( -/obj/structure/machinery/light, /turf/open/floor/almayer{ - dir = 10; - icon_state = "orange" + dir = 1; + icon_state = "sterile_green_side" }, -/area/almayer/engineering/engine_core) +/area/almayer/medical/medical_science) "kXN" = ( /obj/item/clothing/glasses/sunglasses/aviator{ pixel_x = -1; @@ -46497,16 +46035,42 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) -"kYa" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 2; - id = "OuterShutter"; - name = "\improper Saferoom Shutters" +"kYt" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/storage/bible{ + desc = "As the legendary US Army chaplain once said, 'There are no Athiests in fancy offices'."; + name = "Holy Bible"; + pixel_x = -3; + pixel_y = 9 + }, +/obj/item/prop/helmetgarb/rosary{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/device/flashlight/lamp{ + pixel_x = 3; + pixel_y = 1 }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"kYv" = ( +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" + }, +/area/almayer/living/port_emb) +"kYL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/engineering/lower/engine_core) "kYP" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 @@ -46547,32 +46111,55 @@ icon_state = "orange" }, /area/almayer/hallways/port_umbilical) +"kZN" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "silver" + }, +/area/almayer/living/auxiliary_officer_office) +"kZV" = ( +/obj/structure/machinery/light, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/hydroponics) +"lab" = ( +/obj/structure/surface/rack, +/obj/item/reagent_container/glass/bucket/janibucket, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "lah" = ( /turf/open/floor/almayer{ dir = 6; icon_state = "emerald" }, /area/almayer/living/gym) -"laj" = ( -/obj/structure/platform{ - dir = 1 - }, +"laM" = ( /obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 + icon_state = "N"; + pixel_y = 1 }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" +/obj/structure/machinery/status_display{ + pixel_y = 30 }, -/area/almayer/engineering/engine_core) -"lau" = ( -/obj/structure/sign/safety/autoopenclose{ - pixel_x = 7; - pixel_y = 32 +/turf/open/floor/almayer{ + icon_state = "red" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/hallways/upper/starboard) "laO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -46583,11 +46170,12 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) "laP" = ( -/obj/structure/machinery/light/small{ - dir = 8 +/obj/structure/disposalpipe/segment, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 32 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/u_a_s) "laQ" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -46622,19 +46210,6 @@ }, /turf/open/floor/plating, /area/almayer/command/cic) -"lbb" = ( -/obj/structure/surface/table/almayer, -/obj/item/organ/heart/prosthetic{ - pixel_x = -4 - }, -/obj/item/circuitboard{ - pixel_x = 12; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "lbf" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -46643,12 +46218,26 @@ icon_state = "cargo" }, /area/almayer/squads/charlie) -"lbE" = ( -/obj/structure/pipes/vents/pump, +"lbs" = ( +/obj/structure/sign/safety/biolab{ + pixel_x = -17; + pixel_y = -8 + }, +/obj/structure/sign/safety/hvac_old{ + pixel_x = -17; + pixel_y = 6 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/cells) +"lbB" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "orange" }, -/area/almayer/command/lifeboat) +/area/almayer/engineering/upper_engineering/port) "lbX" = ( /obj/structure/bed/chair{ dir = 4 @@ -46660,6 +46249,12 @@ icon_state = "plate" }, /area/almayer/squads/charlie) +"lcg" = ( +/obj/structure/machinery/ares/substrate, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "lcy" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -46686,6 +46281,9 @@ }, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/chief_mp_office) +"ldc" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/engineering/lower/workshop) "ldl" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 @@ -46716,28 +46314,27 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) -"ldD" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Brig Lockdown Shutters"; - name = "\improper Brig Lockdown Shutter" +"ldF" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) +"lea" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/general_equipment) -"ldN" = ( -/obj/structure/platform{ - dir = 1 +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 }, -/area/almayer/hull/upper_hull/u_a_p) -"lea" = ( -/turf/closed/wall/almayer/research/containment/wall/east, -/area/almayer/medical/containment/cell) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/medical/hydroponics) "lef" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -46756,20 +46353,22 @@ icon_state = "emerald" }, /area/almayer/hallways/hangar) -"leh" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/powercell, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "let" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/shipboard/navigation) +"ley" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) +"leM" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) "leY" = ( /obj/structure/bed/sofa/south/white/left, /turf/open/floor/almayer{ @@ -46777,6 +46376,17 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"lft" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/firstaid/fire, +/obj/item/device/lightreplacer, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"lfx" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "lfH" = ( /obj/structure/machinery/light{ dir = 4 @@ -46786,28 +46396,28 @@ icon_state = "blue" }, /area/almayer/living/basketball) -"lfQ" = ( +"lgk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) +"lgt" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, /obj/effect/decal/warning_stripes{ icon_state = "N"; - pixel_y = 1 + pixel_y = 2 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"lfW" = ( -/obj/structure/sign/safety/high_voltage{ - pixel_y = -32 + icon_state = "dark_sterile" }, -/obj/structure/sign/safety/maint{ - pixel_x = 14; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/processing) +/area/almayer/command/corporateliaison) "lgy" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -46819,13 +46429,28 @@ }, /turf/open/floor/plating, /area/almayer/living/cryo_cells) -"lgK" = ( -/obj/structure/machinery/cm_vending/clothing/senior_officer{ - density = 0; - pixel_y = 30 +"lgF" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 }, -/turf/open/floor/almayer, -/area/almayer/living/numbertwobunks) +/obj/item/paper_bin/uscm{ + pixel_x = -7; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = -11; + pixel_y = 5 + }, +/obj/item/tool/pen{ + pixel_x = -10; + pixel_y = -2 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "lgX" = ( /obj/structure/sign/safety/storage{ pixel_y = 32 @@ -46835,12 +46460,15 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) -"lgY" = ( -/obj/structure/machinery/door/airlock/almayer/maint, +"lhj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/safety/bulkhead_door{ + pixel_y = -34 + }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/upper/p_bow) "lht" = ( /turf/open/floor/almayer{ dir = 6; @@ -46882,15 +46510,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"lhL" = ( -/obj/structure/sign/safety/life_support{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "lhX" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -46898,18 +46517,86 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) -"lin" = ( -/obj/structure/closet/firecloset, +"lia" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/tool, /turf/open/floor/almayer{ - icon_state = "tcomms" + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"lib" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) +"lid" = ( +/obj/structure/machinery/chem_master{ + vial_maker = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/medical_science) +"lin" = ( +/obj/effect/projector{ + name = "Almayer_AresDown"; + vector_x = 97; + vector_y = -65 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, /area/almayer/command/airoom) +"liF" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/structure/closet, +/obj/item/clothing/under/marine, +/obj/item/clothing/suit/storage/marine, +/obj/item/clothing/head/helmet/marine, +/obj/item/clothing/head/cmcap, +/obj/item/clothing/head/cmcap, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "liJ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/command/computerlab) +"liY" = ( +/obj/structure/machinery/flasher{ + id = "Containment Cell 5"; + layer = 2.1; + name = "Mounted Flash"; + pixel_y = 30 + }, +/obj/structure/machinery/iv_drip, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer/research/containment/corner_var1{ + icon_state = "containment_corner_variant_2" + }, +/area/almayer/medical/containment/cell) "liZ" = ( /obj/structure/surface/table/almayer, /obj/item/toy/deck, @@ -46927,11 +46614,30 @@ icon_state = "plate" }, /area/almayer/living/gym) +"ljm" = ( +/obj/item/clothing/gloves/botanic_leather{ + name = "leather gloves" + }, +/obj/item/clothing/gloves/botanic_leather{ + name = "leather gloves" + }, +/obj/item/clothing/gloves/botanic_leather{ + name = "leather gloves" + }, +/obj/structure/closet/crate, +/obj/item/clothing/suit/storage/hazardvest/black, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "ljs" = ( /obj/effect/landmark/start/marine/spec/bravo, /obj/effect/landmark/late_join/bravo, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/bravo) +"ljv" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/l_a_p) "ljG" = ( /obj/structure/closet/crate/freezer, /obj/item/reagent_container/food/condiment/coldsauce, @@ -46954,6 +46660,37 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"ljS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/obj/structure/sign/safety/bathunisex{ + pixel_x = 8; + pixel_y = 25 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/cells) +"ljW" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/bed/chair/comfy/alpha{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"lka" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "lkd" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -46980,6 +46717,26 @@ icon_state = "red" }, /area/almayer/living/offices/flight) +"lkm" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/upper_engineering/starboard) +"lkL" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/obj/structure/bed/chair/comfy/bravo{ + dir = 4 + }, +/obj/structure/barricade/deployable{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/living/briefing) "lkM" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -46992,6 +46749,12 @@ icon_state = "plate" }, /area/almayer/squads/charlie) +"lkV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop) "lkW" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/belt/medical/lifesaver/full, @@ -47004,22 +46767,28 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"llM" = ( -/obj/structure/pipes/vents/scrubber, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +"llK" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "llO" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "orange" }, /area/almayer/hallways/hangar) -"lmk" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"lmi" = ( +/obj/structure/bed, +/obj/item/bedsheet/green, +/turf/open/floor/almayer{ + icon_state = "mono" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/medical/upper_medical) "lml" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 1; @@ -47027,57 +46796,57 @@ }, /turf/open/floor/almayer, /area/almayer/squads/bravo) -"lmw" = ( -/obj/structure/pipes/standard/simple/hidden{ - dir = 6 +"lmq" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 }, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) +"lmw" = ( +/obj/structure/closet/l3closet/general, +/obj/structure/machinery/light{ + dir = 8 }, -/obj/structure/bed, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" +/obj/structure/window/reinforced{ + dir = 4; + health = 80 }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/medical/medical_science) "lmz" = ( -/obj/structure/machinery/door_control{ - id = "areslockdowninterior"; - name = "ARES Lockdown"; - pixel_x = 25; - req_one_access_txt = "19" +/turf/closed/wall/almayer/white/hull, +/area/space) +"lmA" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21" }, -/obj/effect/landmark/start/working_joe, /turf/open/floor/almayer{ - icon_state = "ai_floors" + icon_state = "plate" }, -/area/almayer/command/airoom) -"lmE" = ( -/obj/structure/reagent_dispensers/fueltank/custom, +/area/almayer/living/numbertwobunks) +"lmK" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/command/securestorage) +"lne" = ( +/obj/structure/bed/chair, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + icon_state = "orange" }, -/area/almayer/medical/containment) -"lmW" = ( -/obj/structure/pipes/vents/pump, -/obj/structure/mirror{ - pixel_y = 32 +/area/almayer/engineering/upper_engineering/port) +"lnh" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/almayer/security/glass{ + dir = 8; + name = "\improper Chief MP's Office" }, -/obj/structure/sink{ - pixel_y = 24 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/obj/structure/machinery/door_control{ - id = "Alpha_2"; - name = "Door Lock"; - normaldoorcontrol = 1; - pixel_x = 23; - specialfunctions = 4 +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/open/floor/almayer, -/area/almayer/living/port_emb) +/area/almayer/shipboard/brig/chief_mp_office) "lnm" = ( /turf/open/floor/almayer{ icon_state = "orangecorner" @@ -47088,13 +46857,10 @@ icon_state = "silvercorner" }, /area/almayer/shipboard/brig/cic_hallway) -"lnJ" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 8; - name = "ship-grade camera" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) +"lnD" = ( +/obj/structure/window/framed/almayer, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_a_s) "lnP" = ( /obj/structure/machinery/vending/cola, /obj/structure/window/reinforced, @@ -47102,8 +46868,38 @@ icon_state = "kitchen" }, /area/almayer/engineering/upper_engineering) +"lnS" = ( +/obj/structure/sign/safety/rewire{ + pixel_y = 38 + }, +/obj/structure/sign/safety/fibre_optics{ + pixel_x = 14; + pixel_y = 38 + }, +/obj/structure/sign/safety/laser{ + pixel_y = 24 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = 14; + pixel_y = 24 + }, +/obj/structure/machinery/door_control{ + id = "ARES Operations Left"; + name = "ARES Operations Shutter"; + pixel_x = 24; + pixel_y = -8; + req_one_access_txt = "90;91;92" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "lok" = ( -/obj/structure/machinery/cm_vending/clothing/marine/charlie, +/obj/structure/machinery/cm_vending/clothing/marine/charlie{ + density = 0; + layer = 4.1; + pixel_y = -29 + }, /obj/structure/sign/safety/cryo{ pixel_x = 32 }, @@ -47111,6 +46907,63 @@ icon_state = "plate" }, /area/almayer/squads/charlie) +"lol" = ( +/obj/structure/machinery/status_display{ + pixel_x = 16; + pixel_y = -30 + }, +/obj/structure/sign/safety/airlock{ + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) +"lou" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 5 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) +"loy" = ( +/obj/structure/sign/poster{ + desc = "Eat an EAT bar! ...Aren't they called MEAT bars?"; + icon_state = "poster7"; + name = "EAT - poster"; + pixel_x = 27 + }, +/obj/structure/surface/table/almayer, +/obj/item/paper_bin/uscm{ + pixel_x = 9; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = 9; + pixel_y = 9 + }, +/obj/item/tool/pen{ + pixel_x = 9; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"loz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) +"loE" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "loK" = ( /obj/structure/closet/crate/medical, /obj/item/storage/firstaid/adv, @@ -47125,6 +46978,23 @@ "loP" = ( /turf/closed/wall/almayer, /area/almayer/engineering/laundry) +"loS" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = -29 + }, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "bluecorner" + }, +/area/almayer/squads/delta) "loV" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -47145,6 +47015,23 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"lpg" = ( +/obj/structure/machinery/cm_vending/clothing/dress{ + req_access = list(1) + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/living/commandbunks) +"lpl" = ( +/obj/structure/machinery/door/airlock/almayer/security{ + dir = 2; + name = "\improper Security Checkpoint" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/panic) "lpt" = ( /turf/open/floor/almayer{ icon_state = "blue" @@ -47169,30 +47056,12 @@ icon_state = "greencorner" }, /area/almayer/hallways/starboard_hallway) -"lpS" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"lpX" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "lqF" = ( /turf/open/floor/almayer{ dir = 9; icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"lqI" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "lqJ" = ( /obj/structure/sign/safety/escapepod{ pixel_y = -32 @@ -47224,67 +47093,28 @@ icon_state = "orange" }, /area/almayer/living/port_emb) -"lqZ" = ( -/obj/structure/machinery/floodlight/landing, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south1) -"lra" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - name = "\improper Disposals" - }, -/obj/structure/disposalpipe/junction{ - dir = 8; - icon_state = "pipe-j2" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_m_p) -"lrb" = ( -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_f_p) -"lre" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "lrq" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/armory) -"lrs" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"lru" = ( -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/obj/structure/closet, +"lrE" = ( +/obj/structure/window/framed/almayer/hull, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/s_bow) +"lrF" = ( +/obj/structure/machinery/light, +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) +"lrH" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/living/port_emb) +/area/almayer/maint/hull/lower/l_f_s) "lrT" = ( /obj/structure/bed/chair, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) -"lrV" = ( -/obj/structure/machinery/door/window/brigdoor/southright{ - id = "Cell 3"; - name = "Cell 3" - }, -/obj/structure/sign/safety/three{ - pixel_x = 31 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) "lrW" = ( /obj/structure/surface/rack, /obj/item/storage/firstaid/adv, @@ -47304,10 +47134,32 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"lsb" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +"lsh" = ( +/obj/structure/machinery/light/small{ + dir = 1; + pixel_y = 20 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"lsn" = ( +/obj/structure/surface/table/almayer, +/obj/item/paper{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/tool/pen, +/turf/open/floor/almayer{ + icon_state = "bluefull" + }, +/area/almayer/living/briefing) +"lso" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) "lsp" = ( /obj/structure/machinery/door/airlock/almayer/command{ name = "\improper Conference Room" @@ -47355,14 +47207,33 @@ icon_state = "plating_striped" }, /area/almayer/squads/req) -"lto" = ( -/obj/structure/machinery/light{ - dir = 4 +"ltc" = ( +/obj/effect/landmark/late_join/working_joe, +/obj/effect/landmark/start/working_joe, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/airoom) +"ltm" = ( +/obj/structure/bed/chair/comfy/orange, +/turf/open/floor/almayer{ + icon_state = "plate" }, +/area/almayer/maint/hull/upper/u_a_p) +"lto" = ( +/obj/structure/machinery/iv_drip, /turf/open/floor/almayer{ icon_state = "sterile_green" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) +"ltw" = ( +/obj/structure/largecrate/supply, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"lty" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "ltA" = ( /obj/item/tool/weldingtool, /turf/open/floor/almayer, @@ -47377,60 +47248,24 @@ }, /area/almayer/squads/charlie) "ltU" = ( -/obj/structure/filingcabinet, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) -"ltX" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/closed/wall/almayer/reinforced, -/area/almayer/shipboard/brig/main_office) -"lue" = ( -/obj/structure/surface/table/almayer, -/obj/item/folder/yellow, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"luk" = ( -/obj/structure/machinery/light/small{ +/obj/structure/bed/chair{ dir = 8 }, -/obj/item/clothing/head/helmet/marine/tech/tanker, -/obj/structure/largecrate/random/secure, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) -"lut" = ( -/obj/structure/machinery/computer/crew, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) -"luu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = 32 - }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) -"luw" = ( +/area/almayer/command/combat_correspondent) +"lul" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ - dir = 2; - name = "Brig" +/obj/structure/machinery/door/airlock/almayer/command/reinforced{ + name = "\improper Commanding Officer's Quarters"; + req_access = null; + req_access_txt = "31" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/processing) +/area/almayer/living/commandbunks) "luz" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -47441,38 +47276,17 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) -"luC" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 +"luE" = ( +/obj/structure/sign/poster{ + pixel_y = 32 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "perma_lockdown"; - name = "\improper Perma Lockdown Shutter" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/perma) -"luH" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/atm{ - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/processing) -"luS" = ( -/obj/structure/surface/rack, -/obj/item/stack/sheet/cardboard{ - amount = 50; - pixel_x = -3 +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"luS" = ( +/obj/structure/surface/rack, +/obj/item/stack/sheet/cardboard{ + amount = 50; + pixel_x = -3 }, /obj/item/stack/sheet/cardboard{ amount = 50; @@ -47482,6 +47296,13 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"luY" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "luZ" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 2; @@ -47499,33 +47320,41 @@ icon_state = "test_floor4" }, /area/almayer/command/cic) -"lvA" = ( -/obj/structure/machinery/power/apc/almayer/hardened{ - dir = 1 +"lvb" = ( +/obj/structure/machinery/door_control/cl/office/door{ + pixel_y = 25 }, -/turf/open/floor/almayer{ - icon_state = "mono" +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"lvh" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 10 }, -/area/almayer/lifeboat_pumps/north1) -"lvZ" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/almayer/locked{ - dir = 8; - id = "Perma 1L"; - name = "\improper cell shutter" +/obj/structure/machinery/meter, +/obj/structure/sign/safety/terminal{ + pixel_x = 8; + pixel_y = 32 }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/perma) -"lwi" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) +"lvA" = ( +/turf/open/floor/almayer{ dir = 1; - req_one_access = null; - req_one_access_txt = "2;7" + icon_state = "blue" + }, +/area/almayer/living/pilotbunks) +"lwh" = ( +/obj/structure/machinery/light{ + dir = 8 }, +/obj/structure/bed/chair/comfy/delta, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/living/briefing) "lwm" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 8; @@ -47533,47 +47362,15 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"lwA" = ( -/obj/structure/pipes/vents/pump, -/obj/structure/mirror{ - desc = "Do you remember who you are?"; - icon_state = "mirror_broke"; - name = "broken mirror"; - pixel_y = 32 - }, -/obj/structure/sink{ - pixel_y = 24 - }, -/obj/item/device/cassette_tape/nam{ - layer = 2.9; - pixel_x = -6; - pixel_y = 11 - }, -/obj/structure/machinery/door_control{ - id = "Delta_2"; - name = "Door Lock"; - normaldoorcontrol = 1; - pixel_x = 23; - specialfunctions = 4 - }, -/obj/item/prop{ - desc = "A handful of rounds to reload on the go."; - icon = 'icons/obj/items/weapons/guns/handful.dmi'; - icon_state = "bullet_2"; - name = "handful of pistol bullets (9mm)"; - pixel_x = -8; - pixel_y = 29 - }, -/obj/item/prop{ - desc = "A bunch of tiny bits of shattered metal."; - icon = 'icons/obj/items/shards.dmi'; - icon_state = "shrapnelsmall"; - name = "piece of shrapnel"; - pixel_x = -1; - pixel_y = 24 +"lwp" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 }, +/obj/structure/machinery/cm_vending/sorted/tech/circuits, /turf/open/floor/almayer, -/area/almayer/living/port_emb) +/area/almayer/engineering/lower/workshop) "lwC" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -47595,8 +47392,21 @@ icon_state = "emeraldfull" }, /area/almayer/squads/charlie) +"lwK" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/main_office) +"lwY" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Port Viewing Room" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_f_p) "lxo" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_guns/vehicle_crew, /obj/structure/sign/safety/hazard{ pixel_x = -17; pixel_y = -8 @@ -47608,28 +47418,35 @@ /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/living/tankerbunks) -"lxW" = ( -/obj/structure/bed/chair{ - dir = 8 +/area/almayer/living/auxiliary_officer_office) +"lxy" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, +/area/almayer/shipboard/brig/main_office) +"lxE" = ( +/obj/structure/machinery/cm_vending/clothing/commanding_officer, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, -/area/almayer/living/tankerbunks) -"lyi" = ( -/obj/structure/surface/table/almayer, -/obj/item/trash/pistachios, -/obj/item/tool/lighter/random{ - pixel_x = 13 +/area/almayer/living/commandbunks) +"lxT" = ( +/obj/structure/machinery/constructable_frame, +/turf/open/floor/almayer{ + icon_state = "mono" }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/lifeboat_pumps/south2) +"lxW" = ( +/obj/structure/sign/prop2{ + pixel_y = 29 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/auxiliary_officer_office) "lyk" = ( /obj/structure/sign/safety/storage{ pixel_x = -17 @@ -47639,12 +47456,31 @@ icon_state = "green" }, /area/almayer/squads/req) +"lym" = ( +/obj/structure/machinery/vending/cigarette, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "lyw" = ( /obj/structure/bed/chair/comfy{ dir = 8 }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) +"lyz" = ( +/obj/structure/surface/table/almayer, +/obj/item/organ/heart/prosthetic{ + pixel_x = -4 + }, +/obj/item/circuitboard{ + pixel_x = 12; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "lyE" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ @@ -47652,6 +47488,41 @@ icon_state = "silvercorner" }, /area/almayer/command/computerlab) +"lyP" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) +"lyW" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/l_m_p) +"lyX" = ( +/obj/structure/machinery/cm_vending/clothing/senior_officer{ + req_access = null; + req_access_txt = 37; + req_one_access = null + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/auxiliary_officer_office) +"lza" = ( +/obj/structure/bed/sofa/vert/grey, +/obj/structure/bed/sofa/vert/grey/top{ + pixel_y = 11 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) +"lze" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) "lzj" = ( /obj/structure/sign/safety/storage{ pixel_x = 8; @@ -47669,39 +47540,48 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) -"lzx" = ( +"lzA" = ( +/obj/structure/machinery/sleep_console{ + dir = 8 + }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" + icon_state = "mono" }, -/area/almayer/shipboard/brig/main_office) -"lzH" = ( +/area/almayer/medical/medical_science) +"lzY" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = -25 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"lzW" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/stairs{ - pixel_x = -15 +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/chief_mp_office) +"lAa" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/lightreplacer{ + pixel_x = 4; + pixel_y = 4 }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" +/obj/item/storage/toolbox/emergency, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 }, -/area/almayer/hallways/aft_hallway) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "lAl" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "orange" }, /area/almayer/squads/bravo) +"lAu" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering/port) "lAy" = ( /obj/structure/bed/chair/comfy/beige{ dir = 8 @@ -47711,12 +47591,6 @@ }, /turf/open/floor/carpet, /area/almayer/command/cichallway) -"lAA" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_a_p) "lAO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -47724,15 +47598,6 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) -"lAP" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "lAQ" = ( /obj/structure/machinery/cm_vending/gear/tl{ density = 0; @@ -47751,18 +47616,12 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) -"lBi" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/escapepod{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" +"lBl" = ( +/obj/structure/sink{ + pixel_y = 24 }, -/area/almayer/hallways/aft_hallway) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/s_bow) "lBv" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -47775,65 +47634,81 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"lBF" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/toolbox, -/obj/item/clipboard, +"lBw" = ( +/obj/structure/machinery/cryopod{ + pixel_y = 6 + }, +/obj/structure/sign/safety/cryo{ + pixel_x = -17 + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "green" + icon_state = "cargo" }, -/area/almayer/squads/req) -"lBR" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 +/area/almayer/maint/hull/upper/u_m_p) +"lBz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) -"lBY" = ( -/obj/structure/closet{ - name = "backpack storage" +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/hallways/starboard_hallway) +"lBB" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 }, -/obj/item/storage/backpack/marine/grenadepack, -/obj/item/storage/backpack/marine/grenadepack, -/obj/item/storage/backpack/marine/mortarpack, -/obj/item/storage/backpack/marine/mortarpack, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/engineering/engineering_workshop/hangar) -"lCz" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = -28 +/area/almayer/maint/upper/u_m_s) +"lCm" = ( +/obj/structure/machinery/light/small{ + dir = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/hallways/aft_hallway) -"lCM" = ( +/area/almayer/maint/hull/upper/s_bow) +"lCp" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/main_office) +"lCr" = ( /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "redfull" }, -/area/almayer/shipboard/brig/main_office) -"lCS" = ( +/area/almayer/living/briefing) +"lCt" = ( +/turf/open/floor/almayer{ + dir = 10; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/containment) +"lCE" = ( +/obj/structure/bed/chair/comfy/delta, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"lCL" = ( /obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 + icon_state = "N"; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 10; + icon_state = "red" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/hallways/upper/port) +"lDa" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_29" + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "lDg" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ id = "laddernorthwest"; @@ -47848,6 +47723,20 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) +"lDn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) +"lDA" = ( +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "lDJ" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = -17 @@ -47864,32 +47753,39 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ dir = 8; icon_state = "plating_striped" }, /area/almayer/squads/req) "lDN" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/obj/structure/sign/safety/coffee{ - pixel_y = 32 +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 }, -/obj/structure/sign/safety/east{ - pixel_x = 15; - pixel_y = 32 +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) -"lDO" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/hydroponics) +"lDT" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/command/lifeboat) +/area/almayer/maint/hull/upper/s_bow) "lDV" = ( /obj/effect/landmark/start/marine/medic/bravo, /obj/effect/landmark/late_join/bravo, @@ -47898,6 +47794,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) +"lEe" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/general_equipment) "lEf" = ( /turf/closed/wall/almayer/research/containment/wall/corner{ dir = 1 @@ -47929,21 +47831,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/chapel) -"lEL" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/prop/ice_colony/tiger_rug{ - desc = "A beat up beer stained, incredibly garish, polyester tiger rug. No one knows how it got here. Written on the wash tag are the words 'From Thedus, with love <3', in Sharpie."; - icon_state = "HotlineAlt"; - layer = 2.9; - name = "Richard the tiger" - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "emerald" - }, -/area/almayer/living/port_emb) "lEO" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -47951,12 +47838,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) -"lFb" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "lFe" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -47990,19 +47871,19 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/morgue) -"lFs" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 +"lFp" = ( +/turf/closed/wall/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"lFr" = ( +/obj/structure/machinery/firealarm{ + dir = 8; + pixel_x = -24 }, -/obj/structure/extinguisher_cabinet{ - pixel_x = -26 +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/perma) +/area/almayer/maint/upper/mess) "lFt" = ( /obj/structure/machinery/portable_atmospherics/powered/pump, /obj/structure/sign/safety/maint{ @@ -48025,27 +47906,42 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) -"lFF" = ( +"lFJ" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + name = "\improper Brig Prisoner Yard"; + closeOtherId = "brigcells" + }, /obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 8 }, -/obj/structure/prop/invuln/lattice_prop{ - dir = 1; - icon_state = "lattice-simple"; - pixel_x = 16; - pixel_y = -15 +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "courtyard_cells"; + name = "\improper Courtyard Lockdown Shutter" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/processing) "lFK" = ( /obj/structure/machinery/light{ dir = 8 }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south2) +"lGg" = ( +/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "lGh" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/sign/safety/maint{ @@ -48053,88 +47949,42 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"lGr" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 +"lHk" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out" }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) +"lHu" = ( /turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) -"lGu" = ( -/obj/structure/filingcabinet{ - density = 0; - pixel_x = -8; - pixel_y = 18 - }, -/obj/structure/filingcabinet{ - density = 0; - pixel_x = 8; - pixel_y = 18 + dir = 8; + icon_state = "greencorner" }, +/area/almayer/living/grunt_rnr) +"lHB" = ( +/obj/structure/prop/almayer/computers/sensor_computer3, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) -"lGG" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ +/area/almayer/maint/hull/lower/l_m_s) +"lHG" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; dir = 1; - name = "\improper Starboard Viewing Room" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_s) -"lGL" = ( -/obj/structure/closet/fireaxecabinet{ - pixel_y = -32 - }, -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"lGO" = ( -/obj/structure/largecrate/random/case/double, -/obj/structure/machinery/light/small{ - dir = 4 + req_one_access = null; + req_one_access_txt = "30;19" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"lHc" = ( -/obj/effect/landmark/start/doctor, -/obj/structure/sign/safety/maint{ - pixel_y = 26 +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/offices) -"lHu" = ( /turf/open/floor/almayer{ - dir = 8; - icon_state = "greencorner" + icon_state = "test_floor4" }, /area/almayer/living/grunt_rnr) -"lIa" = ( -/obj/item/robot_parts/arm/l_arm, -/obj/item/robot_parts/leg/l_leg, -/obj/item/robot_parts/arm/r_arm, -/obj/item/robot_parts/leg/r_leg, -/obj/structure/surface/rack, -/obj/effect/decal/cleanable/cobweb{ - dir = 8 - }, -/obj/item/book/manual/robotics_cyborgs{ - pixel_y = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/synthcloset) -"lIh" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +"lIj" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/upper/mess) "lIp" = ( /obj/structure/bed/chair/comfy/beige{ dir = 1 @@ -48161,32 +48011,18 @@ icon_state = "mono" }, /area/almayer/engineering/port_atmos) +"lIQ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) "lIU" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ icon_state = "mono" }, /area/almayer/engineering/upper_engineering/port) -"lIV" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) -"lJa" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engineering_workshop) -"lJg" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "lJu" = ( /obj/structure/barricade/metal{ dir = 1 @@ -48196,18 +48032,27 @@ }, /area/almayer/living/cryo_cells) "lJv" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "containmentlockdown_S"; - name = "\improper Containment Lockdown" +/obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 }, -/obj/structure/machinery/door/airlock/almayer/research/reinforced{ - dir = 1; - name = "\improper Containment Airlock" +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "researchlockdownext"; + name = "\improper Research Window Shutter" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/turf/open/floor/plating, +/area/almayer/medical/medical_science) +"lJD" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "redfull" }, -/area/almayer/medical/containment) +/area/almayer/living/briefing) "lJG" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/structure/disposalpipe/segment{ @@ -48228,6 +48073,25 @@ icon_state = "cargo" }, /area/almayer/living/offices) +"lJL" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/shipboard/brig/cells) +"lJM" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "lJO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -48272,6 +48136,17 @@ icon_state = "red" }, /area/almayer/hallways/stern_hallway) +"lKM" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer, +/area/almayer/engineering/lower) +"lKO" = ( +/obj/structure/sign/safety/refridgeration{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "lLC" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer, @@ -48285,10 +48160,12 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"lLV" = ( -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +"lMb" = ( +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "lMc" = ( /turf/open/floor/almayer{ icon_state = "red" @@ -48300,24 +48177,40 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) +"lMv" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) "lMw" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, /turf/open/floor/almayer{ dir = 8; icon_state = "plating_striped" }, /area/almayer/squads/req) -"lMM" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, +"lMx" = ( +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/engineering/upper_engineering/starboard) +"lMO" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/tool, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "lMY" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -48327,33 +48220,18 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) +"lNk" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "lNl" = ( /turf/open/floor/almayer{ dir = 6; icon_state = "red" }, /area/almayer/hallways/stern_hallway) -"lNs" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sign/safety/ammunition{ - pixel_x = 32; - pixel_y = 7 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/obj/structure/machinery/door_control{ - id = "cmp_armory"; - name = "Armory Lockdown"; - pixel_x = 24; - pixel_y = -6; - req_access_txt = "4" - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/main_office) "lNw" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -48369,36 +48247,17 @@ icon_state = "plate" }, /area/almayer/squads/charlie) -"lNy" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) -"lNF" = ( -/obj/structure/closet/secure_closet{ - name = "\improper Lethal Injection Locker" - }, -/obj/item/reagent_container/ld50_syringe/choral, -/obj/item/reagent_container/ld50_syringe/choral, -/obj/item/reagent_container/ld50_syringe/choral, -/obj/item/reagent_container/ld50_syringe/choral, -/obj/item/reagent_container/ld50_syringe/choral, -/turf/open/floor/almayer{ - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/execution) -"lOl" = ( -/obj/structure/machinery/light{ - dir = 8 - }, +"lNN" = ( +/obj/structure/closet/secure_closet/medical2, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "sterile_green_side" }, -/area/almayer/command/corporateliason) +/area/almayer/shipboard/brig/surgery) +"lNR" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/plating, +/area/almayer/engineering/lower/workshop) "lOr" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -48418,6 +48277,47 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_two) +"lOI" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) +"lON" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "researchlockdownext_door"; + name = "\improper Research Doorway Shutter" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/medical_science) +"lOX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) +"lPm" = ( +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "lPB" = ( /obj/structure/surface/table/almayer, /obj/item/device/lightreplacer, @@ -48450,36 +48350,34 @@ icon_state = "silver" }, /area/almayer/command/securestorage) -"lQj" = ( -/obj/structure/machinery/door_control{ - id = "InnerShutter"; - name = "Inner Shutter"; - pixel_x = 5; - pixel_y = 10 - }, -/obj/item/toy/deck{ - pixel_x = -9 +"lPW" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) +"lQa" = ( +/obj/structure/machinery/light{ + dir = 8 }, -/obj/item/ashtray/plastic, -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/sign/safety/intercom{ - pixel_y = -32 +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 6; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) +"lQf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = 32 }, -/area/almayer/hull/lower_hull/l_f_s) -"lQq" = ( -/obj/structure/bed, -/obj/item/bedsheet/hop, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"lQu" = ( -/obj/structure/bed/stool, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/lower/l_f_p) "lQz" = ( /obj/structure/machinery/vending/coffee, /turf/open/floor/almayer{ @@ -48512,6 +48410,16 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) +"lRe" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/shipboard/brig/surgery) "lRs" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray{ @@ -48525,6 +48433,10 @@ icon_state = "orangefull" }, /area/almayer/living/briefing) +"lRt" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "lRE" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_sn_full_cap" @@ -48567,27 +48479,32 @@ icon_state = "redcorner" }, /area/almayer/living/briefing) -"lSD" = ( -/obj/structure/closet/firecloset, +"lSs" = ( +/obj/structure/bed, +/obj/structure/machinery/flasher{ + id = "Cell 5"; + pixel_x = -24 + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "red" }, -/area/almayer/hull/upper_hull/u_m_p) -"lSO" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = 25 +/area/almayer/shipboard/brig/cells) +"lSJ" = ( +/obj/structure/machinery/light/small, +/obj/effect/decal/warning_stripes{ + icon_state = "N" }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/almayer{ + icon_state = "plate" }, +/area/almayer/maint/hull/upper/s_bow) +"lSX" = ( /obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "green" + dir = 6 }, -/area/almayer/hallways/port_hallway) +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "lTt" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -48607,10 +48524,26 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/chapel) -"lTK" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +"lUm" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ + name = "\improper Brig Cells"; + closeOtherId = "briglobby" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/processing) +"lUQ" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "lVl" = ( /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, /turf/open/floor/almayer, @@ -48619,6 +48552,17 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) +"lVR" = ( +/obj/structure/stairs{ + icon_state = "ramptop" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "lVS" = ( /obj/structure/machinery/door/poddoor/shutters/almayer/open{ dir = 4; @@ -48629,12 +48573,38 @@ icon_state = "redfull" }, /area/almayer/living/briefing) -"lWh" = ( -/obj/structure/machinery/pipedispenser/orderable, +"lVW" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 2; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) +"lVX" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/overwatch/almayer{ + dir = 8; + layer = 3.2; + pixel_x = -17; + pixel_y = 16 + }, +/obj/structure/transmitter/rotary/no_dnd{ + name = "Alpha Overwatch Telephone"; + phone_category = "Command"; + phone_id = "Alpha Overwatch" + }, +/obj/structure/sign/safety/terminal{ + pixel_x = -17; + pixel_y = -8 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/command/cic) "lWr" = ( /obj/structure/largecrate/random/case, /turf/open/floor/almayer{ @@ -48642,22 +48612,44 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"lXg" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/recharger, +"lWt" = ( +/obj/effect/landmark/yautja_teleport, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/engineering/upper_engineering) -"lXF" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/sign/safety/cryo{ - pixel_x = 36 +/area/almayer/maint/hull/upper/u_m_s) +"lWO" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/mess) +"lWY" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"lXb" = ( +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) +"lXg" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/recharger, +/obj/structure/machinery/computer/working_joe{ + pixel_y = 16 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull) +/area/almayer/engineering/upper_engineering) "lXO" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, @@ -48672,6 +48664,10 @@ icon_state = "green" }, /area/almayer/living/offices) +"lYg" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "lYi" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/supply, @@ -48686,17 +48682,23 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"lYu" = ( -/obj/item/tool/wet_sign, -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, +"lYt" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) -"lYA" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/maint/hull/upper/u_a_p) +"lYL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/almayer/medical/hydroponics) "lYN" = ( /obj/effect/decal/warning_stripes{ icon_state = "E" @@ -48705,17 +48707,18 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"lYZ" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/toolbox/mechanical/green{ - pixel_y = 8 - }, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" +"lZb" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/powercell, +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 }, -/area/almayer/shipboard/brig/general_equipment) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "lZs" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/radio/intercom{ @@ -48738,61 +48741,32 @@ icon_state = "plate" }, /area/almayer/command/cic) -"lZB" = ( -/obj/structure/sign/safety/restrictedarea{ - pixel_x = 8; - pixel_y = 32 +"lZI" = ( +/obj/structure/prop/invuln/lattice_prop{ + dir = 1; + icon_state = "lattice-simple"; + pixel_x = -16; + pixel_y = 17 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) -"lZO" = ( -/obj/structure/disposalpipe/junction{ - dir = 4; - icon_state = "pipe-j2" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) -"lZZ" = ( -/turf/closed/wall/almayer/research/containment/wall/corner{ - dir = 8 - }, -/area/almayer/medical/containment/cell) -"maa" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/shipboard/brig/general_equipment) -"mab" = ( -/turf/open/floor/almayer/research/containment/entrance{ - dir = 4 - }, -/area/almayer/medical/containment/cell) -"maq" = ( -/obj/structure/machinery/cryopod/right{ - pixel_y = 6 - }, -/obj/structure/sign/safety/cryo{ - pixel_x = 7; - pixel_y = -26 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/command/corporateliason) -"maw" = ( -/obj/structure/disposalpipe/segment, +/area/almayer/maint/hull/lower/l_m_p) +"lZM" = ( +/obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 }, -/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/lower/cryo_cells) +"lZZ" = ( +/obj/structure/machinery/autolathe/medilathe/full, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/hydroponics) "maI" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -48801,6 +48775,10 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"maK" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "maL" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/snacks/protein_pack, @@ -48808,6 +48786,16 @@ icon_state = "plate" }, /area/almayer/living/gym) +"maO" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "maT" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -48820,11 +48808,19 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"mbn" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) +"mbx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) +"mbR" = ( +/obj/docking_port/stationary/escape_pod/north, +/turf/open/floor/plating, +/area/almayer/maint/hull/lower/l_m_p) "mce" = ( /turf/open/floor/almayer{ icon_state = "greencorner" @@ -48839,13 +48835,6 @@ icon_state = "plate" }, /area/almayer/living/gym) -"mcV" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/wirecutters, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "mcW" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/gloves, @@ -48860,22 +48849,35 @@ icon_state = "plate" }, /area/almayer/squads/alpha) -"mdJ" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 +"mdW" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/perma) -"mdS" = ( -/obj/structure/sign/safety/ammunition{ - pixel_x = 32; - pixel_y = 7 +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" +/obj/item/folder/white, +/obj/item/folder/white, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/command/airoom) +"mem" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "meu" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -48900,53 +48902,32 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"meN" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "Under Construction Shutters"; - name = "\improper Construction Site" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +"meT" = ( +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Hangar Lockdown"; + name = "\improper Hangar Lockdown Blast Door" }, -/area/almayer/hull/lower_hull/l_f_p) -"meS" = ( -/obj/structure/sign/safety/water{ - pixel_x = -17 +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/lower/l_f_s) "meY" = ( /turf/closed/wall/almayer{ damage_cap = 15000 }, /area/almayer/squads/alpha) -"mfe" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"mfI" = ( -/obj/structure/ladder{ - height = 1; - id = "AftPortMaint" +"mfH" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 }, -/obj/structure/sign/safety/ladder{ - pixel_x = 8; - pixel_y = -32 +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/maint/hull/upper/u_a_s) "mfM" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/map_item, @@ -48966,16 +48947,55 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) -"mgj" = ( -/obj/structure/reagent_dispensers/water_cooler/stacks{ - density = 0; - pixel_y = 17 - }, -/turf/open/floor/almayer{ +"mfR" = ( +/obj/structure/surface/table/almayer, +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 7 + }, +/obj/item/tool/pen, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/u_m_s) +"mgb" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) +"mgd" = ( +/obj/structure/machinery/autolathe/armylathe/full, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) +"mgj" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks{ + density = 0; + pixel_y = 17 + }, +/turf/open/floor/almayer{ dir = 5; icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"mgu" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + name = "\improper Engineering Hallway" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower) +"mgy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/cic_hallway) "mgF" = ( /obj/structure/window/reinforced{ dir = 4; @@ -48985,6 +49005,14 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie_delta_shared) +"mgX" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "mha" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -49002,16 +49030,6 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) -"mhl" = ( -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice13"; - pixel_x = 16; - pixel_y = 16 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "mhm" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22" @@ -49020,6 +49038,21 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) +"mho" = ( +/obj/structure/bed/chair/comfy/alpha{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"mhG" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/lifeboat) "mhI" = ( /obj/structure/machinery/vending/cigarette{ density = 0; @@ -49050,12 +49083,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cichallway) -"miK" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "miV" = ( /obj/structure/sign/safety/rewire{ pixel_x = -17; @@ -49063,16 +49090,41 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"mje" = ( +/obj/structure/machinery/light, +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "mji" = ( /obj/structure/pipes/standard/manifold/fourway/hidden/supply, +/obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"mjR" = ( -/obj/structure/largecrate/random/secure, +"mjs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + layer = 2.5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) +"mjt" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer{ + allow_construction = 0 + }, +/area/almayer/shipboard/brig/processing) +"mjy" = ( +/obj/structure/machinery/conveyor_switch{ + id = "lower_garbage" + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_a_p) "mjS" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -49127,64 +49179,116 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"mkh" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 4 +"mki" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"mkk" = ( -/obj/structure/disposalpipe/segment, +/obj/structure/bed/chair/comfy/alpha{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"mkl" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 + dir = 1 }, /turf/open/floor/almayer{ - allow_construction = 0 + icon_state = "bluefull" }, -/area/almayer/shipboard/brig/lobby) -"mkx" = ( -/obj/structure/machinery/door_control{ - id = "cl_shutters 2"; - name = "Quarters Shutters"; - pixel_x = -25; - req_access_txt = "200" +/area/almayer/living/briefing) +"mkn" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "OTStore"; + name = "\improper Secure Storage"; + unacidable = 1 }, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/workshop/hangar) +"mkF" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/area/almayer/command/corporateliason) +/area/almayer/maint/hull/upper/p_bow) "mkG" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ icon_state = "silver" }, /area/almayer/engineering/port_atmos) -"mlb" = ( -/obj/structure/machinery/status_display{ - pixel_y = 30 +"mkH" = ( +/obj/structure/surface/rack{ + density = 0; + pixel_y = 16 + }, +/obj/structure/surface/rack{ + layer = 2.5 + }, +/obj/item/storage/fancy/candle_box{ + pixel_x = 6; + pixel_y = -2 }, /turf/open/floor/almayer{ - icon_state = "tcomms" + dir = 1; + icon_state = "orange" }, -/area/almayer/command/airoom) -"mlm" = ( +/area/almayer/engineering/upper_engineering/starboard) +"mkI" = ( +/obj/structure/machinery/pipedispenser, /turf/open/floor/almayer{ - icon_state = "redfull" + icon_state = "cargo" }, -/area/almayer/living/cryo_cells) -"mlp" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 +/area/almayer/engineering/lower/engine_core) +"mkL" = ( +/obj/structure/pipes/valve/digital/open{ + dir = 4 }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Starboard Railguns and Viewing Room" +/obj/structure/sign/safety/fire_haz{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" }, +/area/almayer/engineering/lower) +"mkP" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 2; + name = "\improper Engineering Workshop" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/engineering/lower/workshop) +"mlb" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "tcomms" + }, +/area/almayer/command/airoom) +"mlm" = ( +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/living/cryo_cells) "mlz" = ( /obj/structure/platform_decoration{ dir = 1 @@ -49193,45 +49297,46 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"mlF" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) "mlH" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"mmC" = ( -/obj/structure/closet/secure_closet/engineering_welding{ - req_one_access_txt = "7;23;27" +"mlP" = ( +/obj/structure/machinery/door/airlock/almayer/generic/corporate{ + dir = 1; + name = "Corporate Liaison's Bedroom" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"mnf" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/obj/structure/disposalpipe/segment{ - dir = 8 +/area/almayer/command/corporateliaison) +"mmN" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 }, -/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "researchlockdownext_se_2"; + name = "\improper Research Window Shutter" + }, +/obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/plating, -/area/almayer/squads/req) +/area/almayer/medical/medical_science) "mng" = ( /turf/open/floor/almayer{ icon_state = "redcorner" }, /area/almayer/living/briefing) -"mni" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/wrench{ - pixel_y = 2 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"mnm" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "mnA" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 @@ -49252,10 +49357,46 @@ icon_state = "blue" }, /area/almayer/living/briefing) -"moh" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +"mnW" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/reagent_scanner{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/clipboard{ + pixel_x = 8 + }, +/obj/item/paper{ + pixel_x = 8 + }, +/obj/effect/spawner/random/toolbox{ + pixel_x = 5; + pixel_y = -3 + }, +/obj/item/storage/box/monkeycubes{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/almayer/medical/containment) +"moc" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/upper/u_f_p) +"moq" = ( +/obj/structure/largecrate/random/case/double, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_p) "mor" = ( /obj/structure/machinery/light{ dir = 8 @@ -49267,30 +49408,41 @@ /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) "mov" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/bed/chair{ + dir = 1 }, -/area/almayer/hull/upper_hull/u_m_p) +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "moB" = ( /turf/closed/wall/almayer, /area/almayer/shipboard/brig/cells) -"moE" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) "moI" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha_bravo_shared) +"moK" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_s) +"moL" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/emails{ + dir = 1; + pixel_x = 1; + pixel_y = 4 + }, +/obj/item/tool/kitchen/utensil/fork{ + pixel_x = -9; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "moM" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -49302,29 +49454,37 @@ icon_state = "silver" }, /area/almayer/living/briefing) -"moU" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 +"mph" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" }, -/turf/open/floor/almayer{ +/obj/structure/machinery/camera/autoname/almayer{ dir = 4; - icon_state = "plating_striped" + name = "ship-grade camera" }, -/area/almayer/squads/req) -"moY" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall/almayer, -/area/almayer/squads/req) -"mqc" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" +/turf/open/floor/almayer{ + icon_state = "plate" }, +/area/almayer/maint/hull/upper/s_bow) +"mpn" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/surface/table/almayer, /turf/open/floor/almayer{ - dir = 1; - icon_state = "green" + icon_state = "redfull" }, -/area/almayer/hallways/port_hallway) +/area/almayer/living/briefing) +"mpP" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower) +"mqb" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "mqg" = ( /obj/structure/bed/chair{ dir = 4 @@ -49369,17 +49529,13 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_two) -"mrc" = ( -/obj/item/reagent_container/glass/bucket, -/obj/item/tool/mop{ - pixel_x = -6; - pixel_y = 24 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"mru" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/hallways/port_hallway) "mrD" = ( /obj/structure/machinery/light{ dir = 1 @@ -49404,11 +49560,45 @@ icon_state = "green" }, /area/almayer/squads/req) +"msg" = ( +/obj/structure/machinery/light, +/obj/structure/sign/safety/waterhazard{ + pixel_y = -32 + }, +/obj/structure/sign/safety/rewire{ + pixel_x = 14; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "msi" = ( -/obj/structure/window/framed/almayer/white, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/plating, -/area/almayer/medical/testlab) +/obj/structure/filingcabinet/filingcabinet{ + density = 0; + layer = 2.9; + pixel_x = 7; + pixel_y = 16 + }, +/obj/structure/filingcabinet/filingcabinet{ + density = 0; + layer = 2.9; + pixel_x = -8; + pixel_y = 16 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/reagent_dispensers/fueltank/custom, +/turf/open/floor/almayer{ + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/containment) "msm" = ( /obj/structure/sign/poster{ pixel_y = 32 @@ -49418,10 +49608,22 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"msV" = ( +"msC" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + dir = 8; + req_one_access = list(2,34,30) + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_m_s) +"msP" = ( /obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "msZ" = ( /obj/structure/barricade/handrail{ dir = 8 @@ -49440,6 +49642,20 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"mtr" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/machinery/status_display{ + pixel_y = -29 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/squads/bravo) "mtD" = ( /obj/structure/machinery/status_display{ pixel_x = 16; @@ -49450,36 +49666,21 @@ icon_state = "red" }, /area/almayer/command/lifeboat) -"mtI" = ( -/obj/structure/filingcabinet/chestdrawer{ - pixel_x = -8 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/medical/medical_science) "mtM" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "silver" }, /area/almayer/command/cichallway) -"mtS" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 +"mtZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/turf/open/floor/almayer, -/area/almayer/living/port_emb) -"mtX" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/ammo_magazine/rifle/m41aMK1/ap, -/obj/item/ammo_magazine/rifle/m41aMK1/ap, -/obj/item/weapon/gun/rifle/m41aMK1/ap, -/obj/structure/machinery/light, /turf/open/floor/almayer{ - icon_state = "redfull" + dir = 5; + icon_state = "plating" }, -/area/almayer/command/cic) +/area/almayer/engineering/lower/engine_core) "mub" = ( /obj/structure/barricade/handrail{ dir = 4 @@ -49488,6 +49689,13 @@ icon_state = "plate" }, /area/almayer/living/gym) +"muq" = ( +/obj/structure/bed/sofa/vert/grey/bot, +/obj/structure/bed/sofa/vert/grey{ + pixel_y = 11 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north1) "mux" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -49507,15 +49715,82 @@ icon_state = "plate" }, /area/almayer/squads/alpha) +"muQ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"muV" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/faxmachine/uscm/command/capt{ + name = "Commanding Officer's Fax Machine"; + pixel_x = -4; + pixel_y = 3 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"mvg" = ( +/obj/docking_port/stationary/escape_pod/west, +/turf/open/floor/plating, +/area/almayer/maint/hull/lower/l_m_p) +"mvi" = ( +/obj/structure/surface/table/almayer, +/obj/item/weapon/gun/revolver/m44{ + desc = "A bulky revolver, occasionally carried by assault troops and officers in the Colonial Marines, as well as civilian law enforcement. Fires .44 Magnum rounds. 'J.P' Is engraved into the barrel." + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "mvl" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/structure/pipes/standard/manifold/hidden/supply, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, /turf/open/floor/almayer{ icon_state = "bluecorner" }, /area/almayer/squads/delta) +"mvE" = ( +/obj/item/bedsheet/brown{ + pixel_y = 13 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/bedsheet/brown{ + layer = 3.1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "mvI" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -49529,6 +49804,15 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"mvR" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/shipboard/brig/surgery) "mwA" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -49550,6 +49834,11 @@ icon_state = "test_floor4" }, /area/almayer/medical/lower_medical_medbay) +"mwP" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) "mwQ" = ( /obj/structure/machinery/landinglight/ds1/delayone{ dir = 4 @@ -49570,42 +49859,41 @@ /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/stair_clone/upper) -"mxL" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 +"mxT" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp, +/turf/open/floor/almayer{ + icon_state = "plate" }, +/area/almayer/engineering/lower/workshop) +"mxV" = ( /obj/structure/sign/safety/autoopenclose{ - pixel_y = 32 - }, -/obj/structure/sign/safety/water{ - pixel_x = 15; + pixel_x = 7; pixel_y = 32 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) -"myo" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/head/soft/purple, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/hallways/hangar) -"myC" = ( -/obj/structure/bed/chair{ - dir = 8 +/area/almayer/maint/hull/lower/stern) +"myl" = ( +/obj/structure/machinery/power/apc/almayer/hardened{ + cell_type = /obj/item/cell/hyper; + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) +"myo" = ( +/obj/structure/surface/table/almayer, +/obj/item/clothing/head/soft/purple, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/hallways/hangar) "myJ" = ( /obj/structure/machinery/light{ dir = 4 @@ -49617,62 +49905,89 @@ icon_state = "test_floor5" }, /area/almayer/squads/req) -"myT" = ( -/obj/structure/closet/firecloset, +"myP" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/sentencing{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) +"mza" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 2; + id = "bot_armory"; + name = "\improper Armory Shutters" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + dir = 2; + name = "\improper Armory" + }, /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; + pixel_x = 2; pixel_y = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"mzb" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/bed/chair{ - dir = 4 - }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -2; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/shipboard/brig/armory) "mzg" = ( -/obj/structure/sign/poster{ - pixel_y = -32 - }, /turf/open/floor/almayer{ icon_state = "emerald" }, /area/almayer/squads/charlie) -"mzo" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_f_p) "mzq" = ( -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 }, -/turf/open/floor/almayer/research/containment/floor2{ - dir = 1 +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 }, -/area/almayer/medical/containment/cell) +/turf/open/floor/almayer{ + dir = 8; + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/hydroponics) +"mzs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) "mzz" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/living/offices) -"mzO" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 +"mzF" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/lifeboat_pumps/south2) +"mzI" = ( +/obj/structure/largecrate/random/barrel/white, +/obj/structure/sign/safety/storage{ + pixel_x = -17 }, /turf/open/floor/almayer{ - dir = 4; - icon_state = "orangecorner" + icon_state = "plate" }, -/area/almayer/engineering/engine_core) +/area/almayer/maint/hull/lower/l_m_s) "mzR" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 8; @@ -49680,6 +49995,12 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) +"mzS" = ( +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/north2) "mzV" = ( /turf/open/floor/almayer{ dir = 1; @@ -49691,48 +50012,26 @@ /obj/effect/spawner/random/tool, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"mAr" = ( -/obj/structure/closet/secure_closet/guncabinet/riot_control, -/obj/item/weapon/shield/riot, -/obj/item/weapon/shield/riot, -/obj/item/weapon/shield/riot, +"mAF" = ( /obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) -"mAT" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 8; - id = "bot_armory"; - name = "\improper Armory Shutters" + icon_state = "N"; + pixel_y = 1 }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - name = "\improper Armory" +/obj/structure/sign/safety/escapepod{ + pixel_x = 8; + pixel_y = 32 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 6; + icon_state = "red" }, -/area/almayer/shipboard/brig/armory) +/area/almayer/hallways/upper/starboard) "mAV" = ( /obj/structure/machinery/cryopod, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/squads/delta) -"mBb" = ( -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Hangar Lockdown"; - name = "\improper Hangar Lockdown Blast Door" - }, -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_s) "mBc" = ( /obj/structure/bed/chair{ dir = 8 @@ -49741,12 +50040,18 @@ icon_state = "bluefull" }, /area/almayer/squads/charlie_delta_shared) -"mBk" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 +"mBe" = ( +/obj/structure/machinery/light{ + dir = 8 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/pilotbunks) "mBp" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -49756,26 +50061,26 @@ dir = 4 }, /obj/structure/machinery/door/airlock/almayer/security/reinforced{ + access_modified = 1; name = "\improper Astronavigational Deck"; req_access = null; - req_one_access_txt = "3;19" + req_one_access_txt = "3;19"; + closeOtherId = "astroladder_n" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/shipboard/navigation) -"mBA" = ( -/obj/structure/surface/table/almayer, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21"; - pixel_y = 11 +"mBx" = ( +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 24 }, -/obj/structure/machinery/camera/autoname/almayer{ +/turf/open/floor/almayer{ dir = 4; - name = "ship-grade camera" + icon_state = "red" }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/shipboard/brig/processing) "mBJ" = ( /obj/structure/stairs{ icon_state = "ramptop" @@ -49786,6 +50091,12 @@ }, /turf/open/floor/almayer, /area/almayer/living/chapel) +"mBO" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/living/briefing) "mCo" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -49793,6 +50104,15 @@ }, /turf/open/floor/plating, /area/almayer/squads/req) +"mCE" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "mCL" = ( /obj/structure/sign/safety/fire_haz{ pixel_x = 8; @@ -49816,9 +50136,32 @@ icon_state = "green" }, /area/almayer/squads/req) +"mDz" = ( +/obj/structure/machinery/shower{ + pixel_y = 16 + }, +/obj/item/tool/soap, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "mDJ" = ( /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/starboard) +"mDL" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/box/mousetraps, +/obj/structure/sign/safety/high_rad{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "mDT" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -49831,6 +50174,39 @@ icon_state = "emerald" }, /area/almayer/living/briefing) +"mDX" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/airlock/almayer/command/reinforced{ + dir = 1; + id_tag = "CO-Office"; + name = "\improper Commanding Officer's Office"; + req_access = null; + req_access_txt = "31" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/commandbunks) +"mEb" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/door_control{ + id = "laddersoutheast"; + name = "South East Ladders Shutters"; + pixel_y = 25; + req_one_access_txt = "2;3;12;19"; + throw_range = 15 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "green" + }, +/area/almayer/hallways/port_hallway) "mEE" = ( /obj/structure/platform{ dir = 4; @@ -49842,32 +50218,51 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"mFD" = ( +"mFc" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 + dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/port_hallway) -"mFM" = ( -/obj/structure/machinery/door_control{ - id = "laddersoutheast"; - name = "South East Ladders Shutters"; - pixel_x = -25; - req_one_access_txt = "2;3;12;19"; - throw_range = 15 +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 +/area/almayer/shipboard/brig/processing) +"mFq" = ( +/obj/structure/machinery/door_control{ + dir = 1; + id = "researchlockdownext_door"; + name = "Door Shutters"; + pixel_y = 29; + req_access_txt = "28" }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "sterile_green_side" }, -/area/almayer/hallways/port_hallway) +/area/almayer/medical/medical_science) +"mFN" = ( +/obj/effect/step_trigger/ares_alert/mainframe, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES Mainframe Right"; + name = "\improper ARES Mainframe Shutters"; + plane = -7 + }, +/obj/structure/machinery/door/poddoor/almayer/blended/white/open{ + closed_layer = 3.2; + id = "ARES Emergency"; + layer = 3.2; + name = "ARES Emergency Lockdown"; + needs_power = 0; + open_layer = 1.9; + plane = -7 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "mFO" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -49880,27 +50275,56 @@ icon_state = "orange" }, /area/almayer/squads/bravo) +"mFP" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/obj/structure/sign/safety/life_support{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"mFQ" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/maint/hull/lower/s_bow) "mGe" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/command/cichallway) -"mGn" = ( -/obj/structure/machinery/cm_vending/clothing/military_police_warden, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/brig/main_office) "mGu" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "silver" }, /area/almayer/command/securestorage) -"mGL" = ( +"mGT" = ( +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, +/obj/structure/closet/cabinet, +/obj/item/clipboard, +/obj/item/storage/lockbox/loyalty, +/obj/item/storage/briefcase, +/obj/item/reagent_container/spray/pepper, +/obj/item/device/eftpos{ + eftpos_name = "Weyland-Yutani EFTPOS scanner" + }, +/obj/item/device/portable_vendor/corporate, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"mHb" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 4; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/shipboard/brig/processing) "mHm" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_y = -32 @@ -49933,27 +50357,75 @@ }, /turf/open/floor/almayer, /area/almayer/living/gym) +"mHz" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/chief_mp_office) +"mHA" = ( +/obj/structure/closet/secure_closet/surgical{ + pixel_x = -30 + }, +/obj/structure/machinery/power/apc/almayer, +/obj/structure/sign/safety/rewire{ + pixel_y = -38 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "sterile_green_corner" + }, +/area/almayer/shipboard/brig/surgery) "mHD" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/light{ - dir = 8 +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/obj/structure/machinery/computer/research{ - dir = 4 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/turf/open/floor/wood/ship, -/area/almayer/medical/medical_science) +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/hydroponics) +"mHE" = ( +/turf/open/floor/almayer/no_build{ + dir = 8; + icon_state = "silver" + }, +/area/almayer/command/airoom) +"mHF" = ( +/obj/structure/surface/rack, +/obj/item/clothing/head/headband/red{ + pixel_x = 4; + pixel_y = 8 + }, +/obj/item/clothing/glasses/regular/hipster, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "mHO" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/machinery/light, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, /area/almayer/living/pilotbunks) -"mHR" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 +"mId" = ( +/obj/structure/closet, +/obj/item/clothing/suit/armor/riot/marine/vintage_riot, +/obj/item/clothing/head/helmet/riot/vintage_riot, +/obj/structure/machinery/light/small{ + dir = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "mIy" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -49977,22 +50449,26 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"mIA" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "mono" +"mIJ" = ( +/obj/structure/sign/safety/ladder{ + pixel_x = -16 }, -/area/almayer/lifeboat_pumps/south2) -"mIB" = ( -/obj/structure/machinery/cm_vending/sorted/medical/marinemed, -/obj/structure/sign/safety/medical{ - pixel_x = 8; - pixel_y = 32 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/vehiclehangar) +"mIP" = ( +/obj/structure/pipes/vents/pump, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "dark_sterile" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/engineering/upper_engineering/port) "mIW" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -50024,6 +50500,12 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"mJi" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/living/grunt_rnr) "mJj" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -50034,13 +50516,22 @@ "mJu" = ( /turf/open/floor/almayer/uscm/directional, /area/almayer/command/cic) +"mJx" = ( +/obj/structure/prop/server_equipment/broken, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "mJL" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" +/turf/open/floor/almayer{ + dir = 5; + icon_state = "blue" }, -/turf/closed/wall/almayer, /area/almayer/living/pilotbunks) +"mJO" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/l_m_p) "mJP" = ( /obj/structure/machinery/cm_vending/gear/tl{ density = 0; @@ -50067,25 +50558,32 @@ icon_state = "red" }, /area/almayer/squads/alpha) -"mKf" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"mKh" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, +"mKi" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; pixel_y = 1 }, +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "red" }, -/area/almayer/shipboard/brig/cryo) +/area/almayer/hallways/upper/port) "mKq" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/living/bridgebunks) +"mKs" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "mKw" = ( /obj/structure/disposalpipe/junction{ dir = 1 @@ -50098,15 +50596,27 @@ }, /area/almayer/medical/lower_medical_lobby) "mKx" = ( -/obj/structure/machinery/status_display{ - pixel_y = 30 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, -/obj/structure/machinery/iv_drip, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + icon_state = "mono" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/hydroponics) +"mKy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "mKJ" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -50139,20 +50649,6 @@ icon_state = "plate" }, /area/almayer/living/port_emb) -"mKX" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "mKY" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -50161,6 +50657,19 @@ /obj/structure/pipes/standard/manifold/fourway/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) +"mLe" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/obj/structure/sign/safety/bathunisex{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/structure/machinery/door_control/cl/quarter/backdoor{ + pixel_x = 25 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "mLu" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -50179,6 +50688,9 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) +"mLE" = ( +/turf/open/floor/plating, +/area/almayer/command/airoom) "mLF" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -50192,20 +50704,23 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) -"mLI" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - allow_construction = 0 - }, -/area/almayer/shipboard/brig/perma) "mLJ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/main_office) +"mLN" = ( +/obj/structure/machinery/light/small, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "mLR" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -50221,12 +50736,6 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) -"mMu" = ( -/obj/structure/machinery/floodlight/landing, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south2) "mMP" = ( /obj/effect/landmark/start/intel, /turf/open/floor/plating/plating_catwalk, @@ -50242,10 +50751,16 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"mNf" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) +"mMZ" = ( +/obj/structure/disposalpipe/junction, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "mNm" = ( /obj/structure/platform{ dir = 8 @@ -50262,47 +50777,45 @@ icon_state = "sterile" }, /area/almayer/medical/upper_medical) -"mNR" = ( -/obj/structure/surface/rack, -/obj/item/storage/toolbox/mechanical, -/obj/item/tool/hand_labeler, +"mNK" = ( +/obj/structure/closet/secure_closet/brig/restraints, /turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) -"mNW" = ( -/obj/structure/platform{ - dir = 4 + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/perma) +"mNS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/largecrate/supply/weapons/m39{ + pixel_x = 2 + }, +/obj/structure/largecrate/supply/weapons/m41a{ + layer = 3.1; + pixel_x = 6; + pixel_y = 17 }, -/obj/item/storage/firstaid/rad, -/obj/structure/surface/rack, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/upper/u_m_s) "mNX" = ( /turf/open/floor/almayer_hull{ dir = 4; icon_state = "outerhull_dir" }, /area/space/almayer/lifeboat_dock) -"mNZ" = ( -/obj/item/trash/uscm_mre, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice1"; - pixel_x = 16; - pixel_y = -16 +"mOb" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" + }, +/obj/structure/bed/chair{ + dir = 8 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) -"mOb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/living/starboard_garden) "mOg" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 @@ -50312,18 +50825,16 @@ }, /area/almayer/engineering/laundry) "mOi" = ( -/obj/structure/blocker/invisible_wall, -/turf/closed/wall/almayer, +/turf/closed/wall/almayer/outer, /area/almayer/command/airoom) -"mOr" = ( -/obj/structure/surface/table/almayer, -/obj/item/clipboard, -/obj/item/tool/lighter, -/obj/item/device/flashlight/lamp, +"mOE" = ( +/obj/structure/sign/safety/water{ + pixel_x = -17 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/engineering/engineering_workshop) +/area/almayer/maint/hull/upper/u_a_s) "mOL" = ( /obj/structure/sign/safety/maint{ pixel_x = 8; @@ -50334,12 +50845,22 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"mOU" = ( -/obj/structure/machinery/light/small{ - dir = 4 +"mOR" = ( +/obj/structure/surface/rack, +/obj/item/roller, +/obj/item/roller, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) +"mPc" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/lower/l_a_p) "mPf" = ( /turf/open/floor/almayer/uscm/directional{ dir = 6 @@ -50372,6 +50893,36 @@ }, /turf/open/floor/almayer, /area/almayer/command/cic) +"mPw" = ( +/obj/structure/machinery/vending/snack, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"mPK" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 4 + }, +/obj/structure/sign/safety/storage{ + pixel_y = 7; + pixel_x = -17 + }, +/obj/structure/sign/safety/commline_connection{ + pixel_x = -17; + pixel_y = -7 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "green" + }, +/area/almayer/squads/req) +"mPR" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "mPX" = ( /turf/open/floor/almayer{ icon_state = "orange" @@ -50386,6 +50937,15 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"mQn" = ( +/obj/structure/sign/safety/rad_shield{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) "mQC" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/port_atmos) @@ -50395,29 +50955,16 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"mQV" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ +"mQY" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) -"mQW" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"mRc" = ( -/obj/structure/prop/invuln/lattice_prop{ - dir = 1; - icon_state = "lattice-simple"; - pixel_x = -16; - pixel_y = -16 - }, +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/lower/l_m_s) "mRl" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -50428,6 +50975,88 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) +"mRn" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES Interior"; + name = "\improper ARES Inner Chamber Shutters"; + plane = -7 + }, +/obj/effect/step_trigger/ares_alert/core, +/obj/structure/machinery/door/poddoor/almayer/blended/white/open{ + closed_layer = 3.2; + id = "ARES Emergency"; + layer = 3.2; + name = "ARES Emergency Lockdown"; + needs_power = 0; + open_layer = 1.9; + plane = -7 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = -18; + pixel_y = -8 + }, +/obj/structure/sign/safety/fibre_optics{ + pixel_x = -18; + pixel_y = 6 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) +"mRq" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/paper_bin/uscm{ + pixel_x = 9; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = 9; + pixel_y = 2 + }, +/obj/item/tool/pen{ + pixel_x = 9; + pixel_y = 9 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"mRI" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_a_s) +"mRQ" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/command/lifeboat) +"mRS" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/starboard_hallway) +"mRU" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/u_m_p) "mRW" = ( /turf/open/floor/almayer/research/containment/corner1, /area/almayer/medical/containment/cell/cl) @@ -50437,6 +51066,10 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"mSr" = ( +/obj/effect/landmark/crap_item, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "mSs" = ( /obj/structure/machinery/light{ dir = 8 @@ -50454,31 +51087,22 @@ }, /area/almayer/command/securestorage) "mSK" = ( -/obj/structure/machinery/cryo_cell{ - dir = 1 - }, -/obj/structure/pipes/standard/cap/hidden{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/medical_science) -"mSP" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ +/obj/structure/machinery/portable_atmospherics/hydroponics, +/obj/structure/window/reinforced{ dir = 4; - id = "officers_mess"; - name = "\improper Privacy Shutters" - }, -/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ - req_one_access = null; - req_one_access_txt = "19;30" + health = 80 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "test_floor5" + }, +/area/almayer/medical/hydroponics) +"mSM" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = -32 }, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "mSU" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -50494,36 +51118,67 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) +"mTc" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/computer/emails{ + dir = 4; + pixel_y = 2 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"mTd" = ( +/obj/structure/machinery/smartfridge/chemistry{ + pixel_x = -3; + pixel_y = -1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/medical/medical_science) "mTi" = ( /obj/structure/machinery/cryopod/right, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/living/offices) -"mTk" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 - }, -/obj/structure/disposalpipe/junction{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/port_hallway) "mTm" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "red" }, /area/almayer/shipboard/navigation) +"mTn" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hallways/starboard_hallway) "mTp" = ( -/obj/structure/surface/table/almayer, -/obj/item/clipboard, -/obj/item/paper, -/obj/item/storage/xeno_tag_case/full, +/obj/structure/window/reinforced{ + dir = 4; + health = 80 + }, +/obj/structure/machinery/cm_vending/clothing/medical_crew{ + density = 0; + pixel_y = 16 + }, /turf/open/floor/almayer{ - icon_state = "sterile_green_corner" + dir = 1; + icon_state = "cargo_arrow" }, -/area/almayer/medical/containment) +/area/almayer/medical/hydroponics) +"mTL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"mTN" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/processing) "mUa" = ( /obj/structure/disposalpipe/junction{ dir = 4; @@ -50532,14 +51187,6 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"mUn" = ( -/obj/structure/machinery/conveyor_switch{ - id = "lower_garbage" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "mUq" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -50555,27 +51202,77 @@ icon_state = "test_floor4" }, /area/almayer/squads/bravo) -"mUQ" = ( -/obj/structure/largecrate/random/barrel/red, +"mUz" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/cameras/almayer/ares{ + dir = 8; + pixel_x = 17 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"mUC" = ( +/obj/structure/machinery/light{ + dir = 4; + invisibility = 101; + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"mUE" = ( +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) -"mUZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +/area/almayer/maint/hull/lower/l_f_s) +"mUL" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) -"mVi" = ( +/area/almayer/maint/hull/upper/u_a_s) +"mUY" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/powercell, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "cargo" }, -/area/almayer/shipboard/brig/cryo) +/area/almayer/maint/hull/lower/l_m_s) +"mVh" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) +"mVr" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) +"mVA" = ( +/obj/item/reagent_container/glass/bucket, +/obj/item/tool/mop{ + pixel_x = -6; + pixel_y = 24 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "mVE" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -50598,18 +51295,32 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"mWe" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 8; - name = "ship-grade camera" +"mVF" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "officers_mess"; + name = "\improper Privacy Shutters" }, -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = 30 +/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; + req_one_access = null; + req_one_access_txt = "19;30" }, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/general_equipment) +/area/almayer/maint/upper/mess) +"mWs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) "mWw" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -50643,6 +51354,9 @@ name = "synthetic potted plant"; pixel_y = 8 }, +/obj/structure/sign/banners/maximumeffort{ + pixel_y = 30 + }, /turf/open/floor/almayer{ dir = 9; icon_state = "blue" @@ -50656,41 +51370,30 @@ /turf/open/floor/carpet, /area/almayer/command/cichallway) "mWW" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 10 }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" +/turf/open/floor/almayer/research/containment/floor2{ + dir = 1 }, -/area/almayer/medical/hydroponics) +/area/almayer/medical/containment/cell) "mXj" = ( /turf/closed/wall/almayer, /area/almayer/living/commandbunks) -"mXU" = ( -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"mYj" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 - }, +"mXm" = ( /obj/structure/surface/rack, -/obj/item/stack/sheet/cardboard{ - amount = 50 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/testlab) -"mYs" = ( -/obj/structure/machinery/light{ - dir = 4 +/obj/item/tool/weldingtool, +/obj/item/tool/wrench, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/p_bow) +"mYv" = ( +/obj/structure/disposalpipe/sortjunction{ + dir = 4; + negdir = 4; + posdir = 1 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +/turf/closed/wall/almayer, +/area/almayer/squads/req) "mYw" = ( /obj/structure/sign/safety/escapepod{ pixel_x = -17; @@ -50705,15 +51408,6 @@ icon_state = "blue" }, /area/almayer/hallways/port_hallway) -"mYx" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south1) "mYY" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -50723,18 +51417,6 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) -"mYZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "green" - }, -/area/almayer/hallways/port_hallway) "mZb" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -50749,31 +51431,49 @@ icon_state = "blue" }, /area/almayer/command/cichallway) -"mZr" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"mZc" = ( +/obj/structure/sign/poster/blacklight{ + pixel_y = 35 + }, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/structure/reagent_dispensers/beerkeg/alt_dark{ + anchored = 1; + chemical = null; + density = 0; + pixel_x = -7; + pixel_y = 10 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/shipboard/port_point_defense) -"mZA" = ( -/obj/structure/machinery/door/airlock/almayer/generic/corporate, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/area/almayer/maint/hull/lower/l_m_s) +"mZf" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/tool/kitchen/tray{ + pixel_y = 9 }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "cl_shutters 3"; - name = "\improper Privacy Shutters" +/obj/item/device/flashlight/lamp{ + pixel_x = 15 }, -/obj/structure/disposalpipe/segment{ +/obj/item/reagent_container/food/snacks/meatpizzaslice{ + pixel_x = -5; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, +/area/almayer/living/briefing) +"mZr" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/command/corporateliason) +/area/almayer/shipboard/port_point_defense) "mZF" = ( /obj/structure/machinery/door/poddoor/almayer/locked{ icon_state = "almayer_pdoor"; @@ -50783,6 +51483,16 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/notunnel) +"mZL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "mZM" = ( /obj/structure/machinery/light{ dir = 8 @@ -50792,29 +51502,75 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) -"naf" = ( -/obj/structure/closet/firecloset, +"mZQ" = ( +/obj/structure/machinery/vending/security, +/obj/structure/machinery/light, +/obj/structure/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/shipboard/brig/general_equipment) +"nac" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "nar" = ( /obj/structure/toilet{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/living/tankerbunks) +/area/almayer/living/auxiliary_officer_office) +"nau" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) +"naw" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "OTStore"; + name = "\improper Secure Storage"; + unacidable = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/workshop/hangar) "naB" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/perma) -"naQ" = ( -/obj/structure/machinery/light/small{ +"naK" = ( +/obj/structure/machinery/light{ dir = 4 }, -/turf/open/floor/prison{ - icon_state = "kitchen" +/obj/structure/bed/chair/comfy/charlie{ + dir = 1 }, -/area/almayer/engineering/upper_engineering/port) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"naR" = ( +/obj/structure/machinery/iv_drip, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/medical_science) "naV" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 2; @@ -50831,78 +51587,101 @@ icon_state = "test_floor4" }, /area/almayer/living/gym) -"nbB" = ( -/obj/structure/closet/secure_closet/freezer/fridge/full, +"nbv" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 3" + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/living/grunt_rnr) -"ncB" = ( -/obj/structure/machinery/chem_master{ - vial_maker = 1 +/area/almayer/engineering/lower/engine_core) +"ncf" = ( +/obj/structure/machinery/cryopod/right{ + layer = 3.1; + pixel_y = 13 + }, +/obj/structure/machinery/status_display{ + pixel_x = 32 }, /turf/open/floor/almayer{ - icon_state = "sterile_green_side" + icon_state = "cargo" }, -/area/almayer/medical/medical_science) -"ncE" = ( -/obj/structure/machinery/door_control{ - id = "containmentlockdown_N"; - name = "Containment Lockdown"; - pixel_y = 28; - req_one_access_txt = "19;28" +/area/almayer/shipboard/brig/cryo) +"ncl" = ( +/turf/open/floor/almayer{ + icon_state = "red" }, -/obj/structure/machinery/power/apc/almayer{ - dir = 8 +/area/almayer/shipboard/brig/lobby) +"ncp" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_corner" + dir = 6; + icon_state = "orange" }, -/area/almayer/medical/containment) -"ndx" = ( -/obj/structure/sign/safety/nonpress_ag{ - pixel_x = 15; - pixel_y = 32 +/area/almayer/engineering/upper_engineering/starboard) +"ncE" = ( +/obj/structure/machinery/light{ + dir = 8 }, -/obj/structure/sign/safety/west{ - pixel_y = 32 +/obj/structure/machinery/autodispenser{ + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "mono" }, -/area/almayer/hull/lower_hull/l_f_s) -"ndJ" = ( -/obj/structure/machinery/status_display{ - pixel_y = 30 +/area/almayer/medical/medical_science) +"ncG" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/port) +"ncT" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" + dir = 9; + icon_state = "red" }, -/area/almayer/hallways/stern_hallway) -"ndM" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 +/area/almayer/hallways/upper/port) +"ncV" = ( +/obj/structure/closet, +/obj/item/clothing/glasses/welding, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice1"; - pixel_x = 16; - pixel_y = -8 +/area/almayer/maint/hull/upper/u_a_s) +"ndl" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) -"ndQ" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 +/area/almayer/maint/hull/lower/l_m_p) +"ndm" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/light{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/lower/cryo_cells) +"ndJ" = ( +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/hallways/stern_hallway) "ndZ" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/flashlight/lamp, @@ -50915,6 +51694,7 @@ /area/almayer/shipboard/port_missiles) "nec" = ( /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; req_access_txt = "200"; req_one_access = null }, @@ -50922,20 +51702,43 @@ icon_state = "test_floor4" }, /area/almayer/powered) -"nel" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" +"new" = ( +/obj/item/reagent_container/glass/bucket/janibucket, +/obj/item/reagent_container/glass/bucket/janibucket{ + pixel_y = 11 }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engineering_workshop) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) +"neC" = ( +/obj/structure/bed/chair/bolted, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) "neE" = ( /obj/structure/platform_decoration{ dir = 1 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) +"neG" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/command/lifeboat) +"neH" = ( +/obj/item/trash/cigbutt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "neO" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -50951,6 +51754,15 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"neT" = ( +/obj/structure/transmitter/rotary{ + name = "CL Office Telephone"; + phone_category = "Almayer"; + phone_id = "CL Office" + }, +/obj/structure/surface/table/woodentable/fancy, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "nff" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray{ @@ -50968,17 +51780,6 @@ /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/stern_hallway) -"nfI" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"nfS" = ( -/obj/item/reagent_container/food/snacks/wrapped/chunk, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "ngf" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -50999,12 +51800,31 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north2) -"ngs" = ( -/obj/structure/largecrate/random/barrel/red, +"ngn" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails{ + pixel_x = 2; + pixel_y = 5 + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "emeraldfull" + }, +/area/almayer/living/briefing) +"ngr" = ( +/obj/structure/sign/safety/intercom{ + pixel_x = -17 + }, +/obj/structure/bed/sofa/south/grey/left, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/shipboard/brig/lobby) "ngw" = ( /obj/structure/surface/rack, /obj/item/mortar_shell/frag, @@ -51039,12 +51859,49 @@ icon_state = "plate" }, /area/almayer/squads/bravo) +"ngE" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/starboard) "ngI" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "redcorner" }, /area/almayer/living/briefing) +"ngU" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/floor/almayer, +/area/almayer/engineering/upper_engineering/starboard) +"ngV" = ( +/obj/structure/surface/rack, +/obj/item/reagent_container/food/snacks/monkeycube/wrapped/farwacube{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/reagent_container/food/snacks/monkeycube/wrapped/neaeracube{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/reagent_container/food/snacks/monkeycube/wrapped/stokcube{ + pixel_x = -4; + pixel_y = -4 + }, +/obj/item/reagent_container/food/snacks/monkeycube/wrapped/yirencube{ + pixel_x = 4; + pixel_y = -4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/corporateliaison) "nhi" = ( /obj/structure/bed/chair/comfy, /obj/structure/window/reinforced/ultra, @@ -51052,12 +51909,20 @@ icon_state = "silver" }, /area/almayer/living/briefing) -"nho" = ( -/obj/item/stack/sheet/metal, +"nhr" = ( +/obj/structure/ladder{ + height = 1; + id = "engineeringladder" + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 5; + icon_state = "plating" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/engineering/lower/workshop) +"nhw" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "nhx" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/toy/deck{ @@ -51075,7 +51940,6 @@ /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) "nhG" = ( -/obj/structure/surface/table/almayer, /obj/item/newspaper{ name = "character sheet" }, @@ -51099,15 +51963,42 @@ pixel_y = -6; req_access_txt = "3" }, +/obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) +"nhV" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) +"nic" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/stern) "nig" = ( /turf/open/floor/almayer{ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"nik" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_y = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/port_emb) "nim" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ + access_modified = 1; dir = 2; name = "\improper Chief Engineer's Office"; req_one_access = null; @@ -51131,13 +52022,24 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) +"niF" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/medical/medical_science) "niL" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/bed/chair, /turf/open/floor/almayer{ - dir = 9; - icon_state = "sterile_green_side" + icon_state = "sterile_green" }, -/area/almayer/medical/upper_medical) +/area/almayer/medical/medical_science) "niR" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_10" @@ -51145,7 +52047,7 @@ /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/living/tankerbunks) +/area/almayer/living/auxiliary_officer_office) "niY" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -51172,14 +52074,33 @@ "njd" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer{ - icon_state = "cargo_arrow" + icon_state = "red" }, /area/almayer/squads/alpha) +"njk" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) +"njn" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/upper/u_m_s) +"njy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/hallways/port_hallway) "njD" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/suit/storage/hazardvest, +/obj/structure/closet/emcloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, /area/almayer/lifeboat_pumps/south1) "njJ" = ( @@ -51201,16 +52122,12 @@ icon_state = "emerald" }, /area/almayer/hallways/port_hallway) -"njT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = 32 +"njO" = ( +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/shipboard/panic) "nka" = ( /obj/structure/machinery/door/poddoor/railing{ dir = 2; @@ -51224,46 +52141,105 @@ icon_state = "cargo_arrow" }, /area/almayer/hallways/vehiclehangar) +"nkj" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) +"nkn" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "nkx" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 }, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails, /turf/open/floor/almayer{ dir = 1; icon_state = "red" }, /area/almayer/shipboard/starboard_missiles) -"nlB" = ( +"nkF" = ( +/obj/structure/bed/chair/bolted{ + dir = 4 + }, /turf/open/floor/almayer{ dir = 1; - icon_state = "cargo_arrow" + icon_state = "redcorner" + }, +/area/almayer/shipboard/brig/processing) +"nkH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = -28 }, -/area/almayer/living/briefing) -"nlH" = ( /turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) +"nkX" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/cameras/almayer_network{ dir = 4; + layer = 2.8; + pixel_y = 5 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 9; icon_state = "red" }, -/area/almayer/shipboard/brig/cells) -"nlV" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 +/area/almayer/shipboard/brig/processing) +"nlh" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) +"nlz" = ( +/obj/structure/machinery/brig_cell/cell_3{ + pixel_x = 32; + pixel_y = -32 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/processing) +"nlB" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "cargo_arrow" + }, +/area/almayer/living/briefing) +"nlW" = ( /obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/largecrate/random/barrel/green, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 5; + icon_state = "orange" }, -/area/almayer/command/lifeboat) -"nmb" = ( +/area/almayer/engineering/upper_engineering/starboard) +"nme" = ( /obj/effect/decal/warning_stripes{ - icon_state = "S" + icon_state = "N"; + pixel_y = 1 }, -/obj/structure/sign/safety/life_support{ - pixel_x = 8; - pixel_y = 32 +/turf/open/floor/almayer{ + icon_state = "redfull" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) +/area/almayer/hallways/upper/port) "nmh" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = -17 @@ -51273,6 +52249,18 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"nmp" = ( +/obj/structure/sign/safety/nonpress_ag{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/west{ + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "nmx" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -51311,12 +52299,9 @@ icon_state = "silver" }, /area/almayer/command/securestorage) -"nnc" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) +"nmY" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/engineering/lower/workshop/hangar) "nne" = ( /obj/structure/ladder{ height = 2; @@ -51326,23 +52311,6 @@ icon_state = "plate" }, /area/almayer/command/cichallway) -"nnr" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/toolbox/electrical{ - pixel_y = 9 - }, -/obj/item/storage/toolbox/mechanical/green, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "nny" = ( /obj/structure/sign/safety/rewire{ pixel_x = -17; @@ -51350,17 +52318,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) -"nnz" = ( -/obj/structure/sign/safety/maint{ - pixel_x = 32; - pixel_y = -8 - }, -/obj/structure/sign/safety/firingrange{ - pixel_x = 32; - pixel_y = 4 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/perma) "nnD" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Down4"; @@ -51372,20 +52329,30 @@ icon_state = "plate" }, /area/almayer/stair_clone/upper) -"nnF" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"nob" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 +"nnH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light/small{ + dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +/obj/structure/largecrate/random/secure{ + pixel_x = -5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) +"nnL" = ( +/obj/structure/toilet{ + dir = 8 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/port_hallway) +/area/almayer/command/corporateliaison) +"nnX" = ( +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "noj" = ( /obj/structure/largecrate, /obj/structure/prop/server_equipment/laptop{ @@ -51396,28 +52363,53 @@ icon_state = "test_floor4" }, /area/almayer/squads/req) -"noo" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 8; - id = "bot_armory"; - name = "\improper Armory Shutters" +"nop" = ( +/obj/structure/machinery/portable_atmospherics/powered/scrubber, +/turf/open/floor/almayer{ + icon_state = "cargo" }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/armory) +/area/almayer/engineering/lower/engine_core) "nos" = ( -/turf/closed/wall/almayer/research/containment/wall/corner{ +/obj/structure/machinery/chem_storage/medbay{ dir = 1 }, -/area/almayer/medical/containment/cell) -"noV" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = 32 +/obj/structure/machinery/chem_storage/research{ + dir = 1; + layer = 3; + pixel_y = 18 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/hydroponics) +"nou" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"noy" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"noE" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"noP" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/closet/toolcloset, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "nph" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -51425,27 +52417,83 @@ }, /turf/open/floor/plating, /area/almayer/engineering/starboard_atmos) +"npn" = ( +/obj/structure/surface/table/almayer, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "npt" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_y = -1 }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) +"npA" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"npO" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/lobby) +"nqe" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -2 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/armory) "nqx" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) -"nqD" = ( -/obj/item/ammo_box/magazine/misc/mre, +"nqG" = ( +/obj/structure/machinery/light, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) +"nqO" = ( +/obj/structure/closet/secure_closet/fridge/fish/stock, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) -"nqU" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/living/grunt_rnr) "nqV" = ( /obj/structure/stairs/perspective{ dir = 1; @@ -51456,16 +52504,34 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north2) -"nqZ" = ( -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = 30; - pixel_y = -6 +"nqW" = ( +/obj/structure/sign/safety/nonpress_0g{ + pixel_x = 32 }, /turf/open/floor/almayer{ - dir = 4; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/perma) +/area/almayer/engineering/lower) +"nrb" = ( +/obj/item/robot_parts/arm/l_arm, +/obj/item/robot_parts/leg/l_leg, +/obj/item/robot_parts/arm/r_arm, +/obj/item/robot_parts/leg/r_leg, +/obj/structure/surface/rack, +/obj/effect/decal/cleanable/cobweb{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/synthcloset) +"nri" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/working_joe{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "nrt" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -51491,40 +52557,52 @@ icon_state = "emeraldcorner" }, /area/almayer/squads/charlie) -"nrz" = ( -/obj/structure/surface/rack, -/obj/item/tool/kitchen/rollingpin, -/obj/item/tool/hatchet, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) -"nrN" = ( -/obj/structure/machinery/sleep_console, +"nrN" = ( +/obj/structure/machinery/sleep_console, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"nrO" = ( +/obj/structure/bed/chair/comfy{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "nsc" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) -"nsu" = ( -/obj/structure/machinery/door/airlock/almayer/security{ - dir = 2; - name = "\improper Security Checkpoint" +"nsd" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/box/lights/bulbs{ + pixel_x = 3; + pixel_y = 7 }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 2; - id = "safe_armory"; - name = "\improper Hangar Armory Shutters" +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) +"nsQ" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 29 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "dark_sterile" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/living/captain_mess) "nsY" = ( /turf/closed/wall/almayer, /area/almayer/living/port_emb) @@ -51552,28 +52630,9 @@ icon_state = "green" }, /area/almayer/squads/req) -"ntm" = ( -/obj/structure/sign/safety/maint{ - pixel_x = -17; - pixel_y = -8 - }, -/obj/structure/machinery/door_control{ - id = "CMP Office Shutters"; - name = "CMP Office Shutters"; - pixel_x = -24; - pixel_y = 8; - req_one_access_txt = "24;31" - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) -"ntr" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/obj/item/seeds/goldappleseed, -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +"ntj" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/command/computerlab) "ntt" = ( /obj/item/stool, /obj/effect/decal/warning_stripes{ @@ -51585,12 +52644,6 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) -"ntu" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) "ntx" = ( /obj/structure/machinery/door/airlock/almayer/generic{ id = "Alpha_2"; @@ -51603,14 +52656,6 @@ icon_state = "test_floor4" }, /area/almayer/living/port_emb) -"ntA" = ( -/obj/structure/machinery/light/small, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "ntI" = ( /obj/structure/machinery/light{ dir = 4 @@ -51621,25 +52666,22 @@ /obj/structure/bed/chair{ dir = 8 }, -/obj/structure/sign/safety/maint{ - pixel_x = 32 - }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 5; + icon_state = "green" }, /area/almayer/living/starboard_garden) -"nun" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 +"nux" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "perma_lockdown_1"; + name = "\improper Perma Lockdown Shutter" }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/shipboard/brig/perma) "nuA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -51656,21 +52698,56 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) +"nuM" = ( +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south2) "nuN" = ( /obj/effect/landmark/start/marine/medic/alpha, /obj/effect/landmark/late_join/alpha, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) -"nuY" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - dir = 2; - name = "\improper Evacuation Airlock PU-6"; - req_access = null +"nvd" = ( +/turf/open/floor/almayer{ + dir = 6; + icon_state = "silver" }, +/area/almayer/maint/hull/upper/u_m_p) +"nve" = ( +/obj/structure/janitorialcart, +/obj/item/tool/mop, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/powered) +/area/almayer/maint/hull/upper/u_m_p) +"nvG" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/sink{ + pixel_y = 16 + }, +/obj/structure/mirror{ + pixel_y = 21 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/numbertwobunks) +"nvI" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "nvM" = ( /obj/structure/window/framed/almayer/white, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -51690,6 +52767,18 @@ icon_state = "plate" }, /area/almayer/squads/delta) +"nvX" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/screwdriver{ + pixel_x = -1; + pixel_y = 2 + }, +/obj/item/stack/cable_coil{ + pixel_x = 8; + pixel_y = -4 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "nwb" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -51699,33 +52788,30 @@ }, /turf/open/floor/almayer, /area/almayer/squads/req) -"nwu" = ( -/obj/structure/closet/crate/freezer{ - desc = "A freezer crate. Someone has written 'open on christmas' in marker on the top." +"nwi" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 }, -/obj/item/reagent_container/food/snacks/mre_pack/xmas2, -/obj/item/reagent_container/food/snacks/mre_pack/xmas1, -/obj/item/reagent_container/food/snacks/mre_pack/xmas3, +/turf/open/floor/almayer/research/containment/corner{ + dir = 4 + }, +/area/almayer/medical/containment/cell) +"nwx" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "red" }, -/area/almayer/hull/upper_hull/u_a_s) -"nwv" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/paper{ - pixel_x = 3; - pixel_y = 3 +/area/almayer/shipboard/port_missiles) +"nwA" = ( +/obj/structure/largecrate/supply/generator, +/obj/structure/machinery/light/small{ + dir = 1 }, -/obj/item/tool/lighter/zippo/gold, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) -"nwz" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - allow_construction = 0 + dir = 1; + icon_state = "red" }, -/area/almayer/shipboard/brig/lobby) +/area/almayer/maint/hull/upper/u_a_p) "nwD" = ( /turf/open/floor/almayer{ dir = 1; @@ -51736,6 +52822,7 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ dir = 8; icon_state = "plating_striped" @@ -51748,6 +52835,10 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) +"nwT" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "nwU" = ( /obj/structure/machinery/light{ dir = 4 @@ -51778,18 +52869,35 @@ icon_state = "green" }, /area/almayer/squads/req) -"nxq" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - dir = 1; - name = "\improper Warden Office" +"nxb" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 2; - id = "Warden Office Shutters"; - name = "\improper Privacy Shutters" +/area/almayer/engineering/lower/workshop) +"nxe" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/effect/spawner/random/toolbox, +/obj/item/stack/sheet/metal{ + desc = "Semiotic Standard denoting the nearby presence of coffee: the lifeblood of any starship crew."; + icon = 'icons/obj/structures/props/semiotic_standard.dmi'; + icon_state = "coffee"; + name = "coffee semiotic"; + pixel_x = 20; + pixel_y = 12; + singular_name = "coffee semiotic" }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/main_office) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"nxx" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "nxK" = ( /obj/structure/sign/safety/high_voltage{ pixel_y = -32 @@ -51802,6 +52910,17 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) +"nxZ" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 10" + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "nyj" = ( /obj/effect/decal/medical_decals{ icon_state = "docdecal2" @@ -51824,17 +52943,6 @@ icon_state = "test_floor4" }, /area/almayer/living/briefing) -"nyz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "nyG" = ( /turf/open/floor/almayer{ dir = 1; @@ -51844,6 +52952,13 @@ "nyQ" = ( /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"nyS" = ( +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "nzv" = ( /obj/structure/filingcabinet/filingcabinet, /obj/item/clipboard, @@ -51864,15 +52979,10 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"nzI" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/command/lifeboat) +"nzD" = ( +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer, +/area/almayer/hallways/upper/port) "nzO" = ( /obj/effect/decal/cleanable/blood/oil, /obj/effect/decal/warning_stripes{ @@ -51884,6 +52994,25 @@ }, /turf/open/floor/almayer, /area/almayer/squads/req) +"nAd" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/engine_core) +"nAm" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) +"nAY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "nBa" = ( /obj/structure/machinery/cm_vending/sorted/cargo_guns/squad{ req_access = null; @@ -51897,41 +53026,22 @@ icon_state = "plate" }, /area/almayer/squads/alpha_bravo_shared) -"nBb" = ( -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) -"nBc" = ( -/obj/structure/largecrate/random, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) -"nBo" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/general_equipment) -"nBu" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 +"nBi" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + pixel_x = 4; + pixel_y = 4 }, -/obj/structure/sign/safety/restrictedarea{ - pixel_x = -17; - pixel_y = -8 +/obj/item/clothing/glasses/monocle, +/obj/item/reagent_container/food/drinks/coffee{ + pixel_x = -7; + pixel_y = -2 }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" +/obj/item/weapon/pole/fancy_cane{ + pixel_x = 5 }, -/area/almayer/shipboard/brig/perma) +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "nBw" = ( /turf/open/floor/almayer{ dir = 1; @@ -51939,13 +53049,26 @@ }, /area/almayer/living/briefing) "nBE" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, /obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, /area/almayer/living/pilotbunks) +"nBF" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"nBJ" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/s_bow) +"nBK" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/north2) "nBW" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 @@ -51955,64 +53078,106 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"nCc" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_corner" - }, -/area/almayer/medical/medical_science) "nCf" = ( /obj/effect/landmark/start/marine/tl/charlie, /obj/effect/landmark/late_join/charlie, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) -"nDd" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/effect/landmark/wo_supplies/guns/common/m39, -/obj/effect/landmark/wo_supplies/guns/common/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/structure/sign/safety/ammunition{ - pixel_x = 15; - pixel_y = 32 +"nCn" = ( +/obj/structure/pipes/vents/pump/on, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/sign/safety/hazard{ - pixel_y = 32 +/area/almayer/engineering/lower/engine_core) +"nCp" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "redfull" +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/area/almayer/hull/lower_hull/l_f_s) -"nDh" = ( -/obj/structure/transmitter/rotary{ - name = "CL Office Telephone"; - phone_category = "Almayer"; - phone_id = "CL Office" +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = -29 + }, +/turf/open/floor/almayer{ + icon_state = "orange" }, +/area/almayer/squads/bravo) +"nCx" = ( /obj/structure/surface/table/woodentable/fancy, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) -"nDo" = ( -/obj/structure/pipes/unary/freezer{ - dir = 8 +/obj/item/reagent_container/food/drinks/bottle/whiskey{ + pixel_x = -5; + pixel_y = 16 }, -/obj/structure/sign/safety/med_cryo{ - pixel_x = 15; - pixel_y = 32 +/obj/item/reagent_container/food/drinks/bottle/whiskey{ + desc = "A premium double-malt whiskey, this bottle was gifted to the Captain of the USS Almayer after the completion of the ship's space trials by the VADM. himself."; + pixel_x = 3; + pixel_y = 16 }, -/obj/structure/sign/safety/intercom{ - pixel_y = 32 +/obj/item/reagent_container/food/drinks/bottle/whiskey{ + pixel_x = 11; + pixel_y = 16 + }, +/obj/item/storage/box/drinkingglasses{ + pixel_x = -1; + pixel_y = 2 }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"nCM" = ( +/obj/structure/largecrate/random/secure, /turf/open/floor/almayer{ - icon_state = "sterile_green_corner" + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_s) +"nCR" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 29 + }, +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/auxiliary_officer_office) +"nCT" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) +"nDa" = ( +/obj/structure/machinery/power/terminal{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "tcomms" + }, +/area/almayer/engineering/lower/engine_core) +"nDo" = ( +/obj/structure/closet/l3closet/general, +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 80 }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/medical/medical_science) "nDL" = ( /obj/structure/barricade/handrail{ @@ -52032,6 +53197,18 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) +"nEc" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) +"nEl" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "nEo" = ( /obj/structure/surface/table/almayer, /obj/item/storage/donut_box{ @@ -52046,23 +53223,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_umbilical) -"nEz" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) -"nEA" = ( -/obj/structure/prop/holidays/string_lights{ - pixel_y = 27 - }, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/obj/structure/surface/table/almayer, -/obj/item/storage/box/drinkingglasses, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "nEF" = ( /obj/structure/machinery/conveyor_switch{ id = "gym_1"; @@ -52070,26 +53230,39 @@ }, /turf/open/floor/almayer, /area/almayer/living/gym) -"nEG" = ( -/obj/structure/largecrate/random/case, -/obj/structure/machinery/access_button/airlock_exterior, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "nEH" = ( -/obj/structure/machinery/smartfridge/chemistry, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/machinery/computer/research{ + dir = 4; + pixel_y = 4 + }, +/obj/item/tool/hand_labeler{ + pixel_x = -6; + pixel_y = -5 + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_side" + icon_state = "mono" }, -/area/almayer/medical/containment) +/area/almayer/medical/medical_science) "nEJ" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"nEO" = ( +/mob/living/simple_animal/mouse/brown, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/s_bow) +"nEZ" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/s_bow) "nFm" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/tool/surgery/scalpel, @@ -52111,18 +53284,18 @@ icon_state = "plate" }, /area/almayer/shipboard/starboard_point_defense) -"nFy" = ( -/obj/structure/machinery/firealarm{ - dir = 1; - pixel_y = -28 +"nFA" = ( +/obj/structure/bed/chair/comfy/bravo{ + dir = 1 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/structure/prop/holidays/string_lights{ + dir = 8; + pixel_x = 29 }, /turf/open/floor/almayer{ - icon_state = "green" + icon_state = "plate" }, -/area/almayer/hallways/starboard_hallway) +/area/almayer/living/briefing) "nFI" = ( /obj/structure/surface/table/almayer, /obj/structure/disposalpipe/segment{ @@ -52152,6 +53325,24 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) +"nFM" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 18" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) +"nFV" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/starboard_hallway) "nFX" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 2; @@ -52165,12 +53356,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering) -"nGc" = ( -/obj/structure/machinery/vending/hydroseeds, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "nGh" = ( /obj/structure/bed/chair{ buckling_y = 5; @@ -52190,30 +53375,48 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) -"nGr" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/research, -/obj/structure/sign/safety/terminal{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" +"nGk" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) +"nGM" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/area/almayer/medical/testlab) -"nHg" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/main_office) -"nHF" = ( -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/lower/l_a_p) +"nGY" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/lifeboat_pumps/north2) +"nGZ" = ( +/obj/structure/largecrate/supply/supplies/water, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) +"nHu" = ( +/obj/structure/largecrate/random/barrel/yellow, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"nHG" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "nHJ" = ( /obj/structure/machinery/light{ dir = 8 @@ -52223,18 +53426,30 @@ icon_state = "plating_striped" }, /area/almayer/living/cryo_cells) -"nHV" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"nHL" = ( +/obj/structure/machinery/vending/coffee, +/obj/structure/sign/safety/coffee{ + pixel_x = -17; + pixel_y = -8 }, -/obj/structure/machinery/light{ - dir = 1 +/obj/structure/sign/safety/rewire{ + pixel_x = 8; + pixel_y = 32 }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/general_equipment) +/area/almayer/engineering/lower/workshop) +"nHX" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "nIj" = ( /turf/open/floor/almayer{ icon_state = "green" @@ -52289,17 +53504,23 @@ icon_state = "silver" }, /area/almayer/command/securestorage) +"nIN" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/upper/u_m_p) "nIS" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/living/basketball) -"nJo" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) +"nJa" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/almayer{ + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower/engine_core) "nJs" = ( /obj/structure/largecrate/random/case, /turf/open/floor/almayer{ @@ -52310,14 +53531,21 @@ /obj/item/newspaper, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"nJy" = ( -/obj/structure/sign/safety/bathunisex{ - pixel_x = -18 - }, +"nJz" = ( /turf/open/floor/almayer{ - icon_state = "plate" + dir = 4; + icon_state = "redcorner" + }, +/area/almayer/shipboard/brig/main_office) +"nJH" = ( +/obj/structure/machinery/computer/cameras/almayer{ + dir = 8; + pixel_x = 17 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "plating" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/command/airoom) "nKq" = ( /obj/structure/machinery/status_display{ pixel_x = 16; @@ -52327,19 +53555,17 @@ icon_state = "red" }, /area/almayer/command/lifeboat) -"nLa" = ( -/obj/structure/bed/chair{ - dir = 4 +"nKP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"nLb" = ( -/obj/effect/decal/cleanable/blood, -/obj/structure/prop/broken_arcade, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/engineering/lower/workshop) "nLg" = ( /obj/effect/projector{ name = "Almayer_Up2"; @@ -52361,6 +53587,9 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"nLp" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/u_f_p) "nLt" = ( /turf/open/floor/almayer{ dir = 1; @@ -52368,13 +53597,19 @@ }, /area/almayer/squads/req) "nLI" = ( -/obj/structure/bed/chair/office/dark{ - dir = 1 +/obj/structure/sign/safety/terminal{ + layer = 2.5; + pixel_x = 8; + pixel_y = 32 + }, +/obj/structure/machinery/chem_simulator{ + density = 0; + pixel_y = 16 }, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "mono" }, -/area/almayer/medical/containment) +/area/almayer/medical/medical_science) "nLJ" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -52385,16 +53620,33 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) -"nLK" = ( -/obj/structure/machinery/cm_vending/sorted/marine_food, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) -"nMc" = ( +"nLZ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 + dir = 4 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +/obj/structure/machinery/door_control{ + id = "laddernortheast"; + name = "North East Ladders Shutters"; + pixel_y = -25; + req_one_access_txt = "2;3;12;19"; + throw_range = 15 + }, +/turf/open/floor/almayer{ + icon_state = "green" + }, +/area/almayer/hallways/starboard_hallway) +"nMe" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer/research/containment/corner{ + dir = 1 + }, +/area/almayer/medical/containment/cell) "nMp" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/franks, @@ -52402,20 +53654,6 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) -"nMu" = ( -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/shipboard/brig/general_equipment) -"nMz" = ( -/obj/structure/sign/safety/cryo{ - pixel_x = 35 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "nMV" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -52425,6 +53663,11 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) +"nNg" = ( +/obj/structure/bed, +/obj/item/bedsheet/red, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/brig/chief_mp_office) "nNt" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -52445,45 +53688,33 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"nNA" = ( -/obj/structure/largecrate/random, +"nNx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 10; + icon_state = "red" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/hallways/upper/port) "nNH" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "emeraldcorner" }, /area/almayer/living/briefing) -"nNQ" = ( -/obj/structure/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" +"nNI" = ( +/obj/structure/bed/chair{ + dir = 4 }, -/area/almayer/shipboard/brig/main_office) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) "nNT" = ( -/obj/structure/pipes/vents/pump, -/obj/structure/mirror{ - pixel_y = 32 - }, -/obj/structure/sink{ - pixel_y = 24 - }, -/obj/structure/machinery/door_control{ - id = "Alpha_1"; - name = "Door Lock"; - normaldoorcontrol = 1; - pixel_x = 23; - specialfunctions = 4 - }, -/turf/open/floor/almayer, -/area/almayer/living/port_emb) +/obj/item/tool/weldingtool, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "nNV" = ( /obj/structure/bed/chair{ dir = 8; @@ -52511,24 +53742,41 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) -"nOe" = ( -/obj/structure/window/framed/almayer/hull/hijack_bustable, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "perma_lockdown"; - name = "\improper Perma Lockdown Shutter" +"nOb" = ( +/obj/structure/surface/rack, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = 5; + pixel_y = 5 }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 8 +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = 5; + pixel_y = 5 }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/perma) -"nOG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/item/reagent_container/food/drinks/bottle/sake, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = -4 + }, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "plate" }, +/area/almayer/command/corporateliaison) +"nOx" = ( +/obj/item/stack/sheet/metal, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/maint/hull/upper/u_a_p) +"nOC" = ( +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/execution) +"nOX" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/secure_data{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "nPa" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -52538,6 +53786,36 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"nPb" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/execution) +"nPf" = ( +/obj/structure/machinery/computer/cameras/almayer/containment{ + dir = 8; + pixel_x = -4; + pixel_y = 6 + }, +/obj/structure/surface/table/almayer, +/obj/item/tool/extinguisher{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/structure/machinery/door_control{ + id = "containmentlockdown_S"; + name = "Containment Lockdown"; + pixel_x = -5; + pixel_y = -4; + req_one_access_txt = "19;28" + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/almayer/medical/containment) "nPs" = ( /obj/structure/prop/invuln/overhead_pipe{ pixel_x = 12 @@ -52562,24 +53840,25 @@ }, /area/almayer/hallways/hangar) "nPE" = ( -/obj/structure/machinery/body_scanconsole{ - dir = 8 +/obj/structure/surface/table/almayer, +/obj/structure/machinery/centrifuge{ + pixel_y = 7 + }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" }, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "mono" }, /area/almayer/medical/medical_science) -"nPM" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - dir = 2; - name = "\improper Lifeboat Control Bubble"; - req_access = null - }, -/obj/structure/pipes/standard/simple/hidden/supply, +"nPO" = ( +/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 5; + icon_state = "orange" }, -/area/almayer/command/lifeboat) +/area/almayer/maint/hull/lower/l_m_s) "nPT" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ desc = "These shutters seem to be pretty poorly mantained and almost wedged into the room.. you're not sure if these are official."; @@ -52591,15 +53870,30 @@ icon_state = "plate" }, /area/almayer/squads/req) -"nPX" = ( -/obj/structure/sign/safety/rewire{ - pixel_x = 8; - pixel_y = 32 +"nPY" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 10; + icon_state = "red" }, -/area/almayer/lifeboat_pumps/north2) +/area/almayer/command/lifeboat) +"nQn" = ( +/obj/structure/surface/rack, +/obj/item/storage/toolbox/mechanical, +/obj/effect/spawner/random/tool, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) +"nQo" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "nQv" = ( /obj/structure/machinery/power/apc/almayer{ dir = 4 @@ -52609,17 +53903,27 @@ icon_state = "plating_striped" }, /area/almayer/squads/req) +"nQw" = ( +/obj/structure/closet, +/obj/item/clothing/glasses/mgoggles/prescription, +/obj/item/clothing/glasses/mbcg, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "nQx" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"nRq" = ( -/obj/effect/decal/cleanable/blood/oil/streak, +"nQA" = ( +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) +"nRE" = ( /obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 + dir = 9 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/upper/u_f_s) "nRH" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -52628,6 +53932,12 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"nRN" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "nRR" = ( /turf/open/floor/almayer{ dir = 1; @@ -52638,6 +53948,37 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering) +"nSk" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/obj/item/stack/tile/carpet{ + amount = 20 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"nSq" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) +"nSu" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/execution) "nSG" = ( /obj/structure/machinery/door_control{ id = "tcomms"; @@ -52650,34 +53991,39 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/telecomms) -"nSM" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/taperecorder, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/brig/main_office) "nSS" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 }, /turf/open/floor/almayer, /area/almayer/command/computerlab) -"nSU" = ( -/obj/structure/machinery/vending/snack{ - density = 0; - pixel_y = 18 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) +"nTc" = ( +/obj/docking_port/stationary/escape_pod/south, +/turf/open/floor/plating, +/area/almayer/maint/upper/u_m_p) "nTl" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "red" }, /area/almayer/squads/alpha) +"nTo" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/transmitter{ + dir = 8; + name = "Medical Telephone"; + phone_category = "Almayer"; + phone_id = "Medical Lower"; + pixel_x = 16 + }, +/obj/item/device/helmet_visor/medical/advanced, +/obj/item/device/helmet_visor/medical/advanced, +/obj/item/device/helmet_visor/medical/advanced, +/obj/item/device/helmet_visor/medical/advanced, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/almayer/medical/lockerroom) "nTs" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -52688,6 +54034,24 @@ }, /turf/open/floor/almayer, /area/almayer/command/computerlab) +"nTA" = ( +/obj/structure/bed/chair/comfy/blue, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) +"nTH" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) +"nTR" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) +"nTT" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper) "nTZ" = ( /turf/open/floor/almayer{ dir = 5; @@ -52721,6 +54085,43 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"nUj" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "courtyard_cells"; + name = "\improper Courtyard Lockdown Shutter" + }, +/obj/structure/machinery/door/poddoor/almayer/locked{ + id = "Cell 2"; + name = "\improper Courtyard Divider" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/cells) +"nUm" = ( +/obj/structure/bed/chair/comfy/beige, +/obj/item/reagent_container/glass/bucket{ + pixel_x = 12; + pixel_y = -5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"nUn" = ( +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) "nUv" = ( /obj/structure/machinery/light{ dir = 1 @@ -52729,12 +54130,14 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"nUy" = ( -/obj/structure/sign/poster{ - pixel_y = -32 +"nUT" = ( +/obj/structure/platform{ + dir = 8 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "nVe" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/sign/safety/bridge{ @@ -52753,17 +54156,36 @@ icon_state = "test_floor4" }, /area/almayer/living/briefing) -"nVu" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 +"nVn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 2 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"nVq" = ( +/obj/structure/sign/safety/security{ + pixel_x = -17; + pixel_y = 6 + }, +/obj/structure/sign/safety/reception{ + pixel_x = -17; + pixel_y = -8 }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "silver" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/shipboard/brig/cic_hallway) "nVB" = ( /turf/open/floor/almayer, /area/almayer/command/securestorage) +"nVE" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "nVF" = ( /obj/structure/disposalpipe/junction{ dir = 8 @@ -52772,51 +54194,67 @@ icon_state = "cargo_arrow" }, /area/almayer/living/offices) -"nVS" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"nVR" = ( +/turf/closed/wall/almayer, +/area/almayer/shipboard/brig/perma) +"nVX" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ + id_tag = "Boat2-D1"; + linked_dock = "almayer-lifeboat2"; + throw_dir = 2 }, -/obj/structure/bed/chair{ - dir = 8 +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, +/area/almayer/engineering/upper_engineering/starboard) +"nWN" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/wood/ship, +/area/almayer/engineering/ce_room) +"nXo" = ( +/obj/item/storage/box/donkpockets, +/obj/structure/surface/rack, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) -"nVU" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = -30 +/area/almayer/maint/hull/upper/u_a_s) +"nXO" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/storage/fancy/cigar{ + layer = 3.04; + pixel_x = -2; + pixel_y = 2 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = -11; + pixel_y = 16 }, -/turf/open/floor/almayer{ - icon_state = "green" +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = -2; + pixel_y = 16 + }, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = 7; + pixel_y = 16 }, -/area/almayer/hallways/starboard_hallway) -"nWN" = ( -/obj/structure/surface/table/almayer, /turf/open/floor/wood/ship, -/area/almayer/engineering/ce_room) -"nXm" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1 +/area/almayer/living/commandbunks) +"nXU" = ( +/obj/structure/machinery/door/airlock/almayer/marine/requisitions{ + dir = 1; + name = "\improper Requisitions Storage" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "courtyard_cells"; - name = "\improper Courtyard Lockdown Shutter" +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 }, -/obj/structure/machinery/door/poddoor/almayer/locked{ - id = "Cell 2"; - name = "\improper Courtyard Divider" +/obj/structure/disposalpipe/up/almayer{ + dir = 4; + id = "almayerlink_OT1_req" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/cells) -"nXP" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/squads/req) "nYc" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -52842,12 +54280,37 @@ icon_state = "silverfull" }, /area/almayer/command/securestorage) -"nYh" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, +"nYi" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) +"nYn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower) +"nYp" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/living/briefing) +"nYv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/aft_hallway) "nYD" = ( /obj/structure/closet/secure_closet/medical2, /turf/open/floor/almayer{ @@ -52859,35 +54322,37 @@ dir = 8 }, /area/almayer/command/lifeboat) -"nYP" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "courtyard_cells"; - name = "\improper Courtyard Lockdown Shutter" +"nZy" = ( +/obj/structure/surface/table/almayer, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/machinery/door/poddoor/almayer/locked{ - id = "Cell 3"; - name = "\improper Courtyard Divider" +/obj/item/facepaint/black, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/squads/charlie) +"nZG" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) +"nZR" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 8 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 5; + icon_state = "plating" }, -/area/almayer/shipboard/brig/cells) -"nZy" = ( +/area/almayer/shipboard/panic) +"nZW" = ( /obj/structure/surface/table/almayer, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/item/reagent_container/food/drinks/cans/souto/blue{ + pixel_x = 2; + pixel_y = 3 }, -/obj/item/facepaint/black, /turf/open/floor/plating/plating_catwalk, -/area/almayer/squads/charlie) -"nZF" = ( -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/lower/l_a_s) "oap" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -52895,18 +54360,28 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"oas" = ( +"oaw" = ( +/obj/structure/closet/firecloset, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) +"oaK" = ( /obj/structure/surface/table/almayer, -/obj/item/stack/rods/plasteel{ - amount = 36 +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) +"oaO" = ( +/obj/structure/machinery/conveyor{ + id = "lower_garbage" }, -/obj/item/stack/catwalk{ - amount = 60; - pixel_x = 5; - pixel_y = 4 +/obj/structure/machinery/recycler, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "plating_striped" }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_a_p) "oaW" = ( /obj/structure/machinery/cryopod/right, /turf/open/floor/almayer{ @@ -52945,21 +54420,31 @@ icon_state = "plate" }, /area/almayer/squads/alpha_bravo_shared) -"obG" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/card{ - dir = 8 +"obJ" = ( +/obj/structure/machinery/light/small{ + dir = 1 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/upper/u_a_s) "obQ" = ( /obj/structure/bed/chair{ dir = 8 }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"occ" = ( +/obj/structure/surface/table/almayer, +/obj/item/weapon/gun/energy/taser, +/obj/item/weapon/gun/energy/taser{ + pixel_y = 8 + }, +/obj/structure/machinery/recharger, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "ocf" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -52983,25 +54468,69 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"ocs" = ( -/obj/structure/pipes/vents/pump{ - dir = 4 +"ocB" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) -"oda" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/device/radio{ - pixel_x = 8; - pixel_y = 7 +/obj/structure/sign/safety/terminal{ + pixel_x = 14; + pixel_y = 24 }, -/obj/item/clothing/head/soft/ferret{ - pixel_x = -7 +/obj/structure/sign/safety/fibre_optics{ + pixel_x = 14; + pixel_y = 38 + }, +/obj/structure/machinery/computer/working_joe{ + dir = 8; + pixel_x = 17 + }, +/obj/structure/sign/safety/laser{ + pixel_y = 24 + }, +/obj/structure/sign/safety/rewire{ + pixel_y = 38 }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"ocI" = ( +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/upper/u_a_s) +"odb" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) +"ode" = ( +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/s_bow) +"odl" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/starboard) +"odu" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "odB" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -53021,6 +54550,22 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) +"odG" = ( +/obj/structure/platform, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -14; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "odN" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -53031,11 +54576,15 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/sea_office) -"oed" = ( +"odV" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 5; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/command/lifeboat) "oee" = ( /obj/structure/prop/invuln{ desc = "An inflated membrane. This one is puncture proof. Wow!"; @@ -53054,62 +54603,108 @@ icon_state = "cargo" }, /area/almayer/squads/alpha_bravo_shared) -"oeg" = ( -/turf/open/floor/almayer{ - icon_state = "sterile_green" - }, -/area/almayer/medical/medical_science) -"oeo" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "oer" = ( /turf/closed/wall/almayer{ damage_cap = 15000 }, /area/almayer/squads/delta) +"oes" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) +"oex" = ( +/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "oeB" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "redcorner" }, /area/almayer/shipboard/brig/processing) -"oeL" = ( -/obj/structure/machinery/vending/coffee{ - density = 0; - pixel_y = 18 +"oeH" = ( +/obj/structure/bed/chair{ + dir = 8 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/upper/u_m_s) "oeM" = ( /obj/structure/surface/rack, /turf/open/floor/almayer{ icon_state = "silver" }, /area/almayer/command/computerlab) -"ofs" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 +"ofH" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) +"ofK" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/area/almayer/hull/upper_hull/u_m_p) -"ofZ" = ( -/obj/structure/bed/sofa/south/grey, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) +"ofU" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) +"ogK" = ( +/obj/structure/bed/bedroll{ + desc = "A bed of cotton fabric, purposely made for a cat to comfortably sleep on."; + name = "cat bed" + }, +/obj/structure/machinery/firealarm{ + pixel_x = -1; + pixel_y = 28 + }, +/mob/living/simple_animal/cat/Jones{ + dir = 8 }, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "ohj" = ( /obj/structure/machinery/cryopod, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/squads/charlie) +"ohu" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + dir = 1; + name = "\improper Brig Maintenance" + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/p_bow) "ohA" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -53120,11 +54715,8 @@ }, /area/almayer/shipboard/weapon_room) "ohB" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 - }, /obj/structure/machinery/light, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -53140,6 +54732,29 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"ohH" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ + id_tag = "Boat2-D3"; + linked_dock = "almayer-lifeboat2"; + throw_dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/lifeboat) +"ohI" = ( +/obj/structure/surface/table/almayer, +/obj/item/circuitboard/airlock, +/obj/item/circuitboard/airlock{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/stack/cable_coil{ + pixel_x = -7; + pixel_y = 11 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "ohJ" = ( /obj/structure/machinery/computer/arcade, /turf/open/floor/wood/ship, @@ -53150,14 +54765,22 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north2) -"ohR" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 +"ohS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper Bathroom" }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/command/lifeboat) +/area/almayer/living/captain_mess) +"oif" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "oih" = ( /obj/structure/bed{ icon_state = "abed" @@ -53187,6 +54810,25 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"oiq" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + dir = 8; + req_one_access = list(2,34,30) + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_p) +"oir" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/obj/structure/machinery/power/apc/almayer/hardened{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "oit" = ( /obj/effect/landmark/railgun_computer{ dir = 1 @@ -53215,18 +54857,28 @@ /turf/open/floor/almayer, /area/almayer/squads/bravo) "oiY" = ( -/obj/structure/machinery/light, -/obj/structure/machinery/iv_drip, -/obj/structure/machinery/door_control{ - id = "containmentlockdown_N"; - name = "Containment Lockdown"; - pixel_y = -20; - req_one_access_txt = "19;28" +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/structure/disposalpipe/trunk, +/obj/structure/machinery/disposal, +/obj/structure/sink{ + pixel_x = 1; + pixel_y = -2 }, /turf/open/floor/almayer{ + dir = 8; icon_state = "sterile_green_side" }, -/area/almayer/medical/containment) +/area/almayer/medical/medical_science) +"ojh" = ( +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "ojF" = ( /obj/structure/machinery/cm_vending/clothing/tl/charlie{ density = 0; @@ -53237,6 +54889,40 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"ojH" = ( +/obj/effect/projector{ + name = "Almayer_Down1"; + vector_x = 19; + vector_y = -98 + }, +/turf/open/floor/almayer{ + allow_construction = 0 + }, +/area/almayer/hallways/upper/starboard) +"ojQ" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_17"; + pixel_x = -5; + pixel_y = 10 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"ojR" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/machinery/door_control{ + id = "laddersoutheast"; + name = "South East Ladders Shutters"; + pixel_y = 25; + req_one_access_txt = "2;3;12;19"; + throw_range = 15 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "green" + }, +/area/almayer/hallways/port_hallway) "ojZ" = ( /obj/structure/window/framed/almayer/white, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -53249,12 +54935,6 @@ icon_state = "plate" }, /area/almayer/squads/charlie) -"okd" = ( -/obj/structure/platform_decoration, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "okg" = ( /obj/structure/sign/safety/reception{ pixel_x = 8; @@ -53264,26 +54944,13 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"oks" = ( -/obj/effect/decal/cleanable/cobweb{ - pixel_x = -9; - pixel_y = 19 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) -"okz" = ( -/obj/structure/platform{ - dir = 4; - layer = 2.7 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, +"oko" = ( +/obj/structure/largecrate/supply/supplies/tables_racks, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + dir = 10; + icon_state = "red" }, -/area/almayer/engineering/engine_core) +/area/almayer/maint/hull/upper/u_a_p) "okD" = ( /obj/structure/prop/almayer/name_stencil{ icon_state = "almayer6" @@ -53292,50 +54959,28 @@ icon_state = "outerhull_dir" }, /area/space) -"okM" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "\improper Execution Room" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/execution) -"olk" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Bathroom" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"okQ" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 12" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/engineering/upper_engineering/port) -"olv" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/hand_labeler{ - pixel_x = -8; - pixel_y = 3 - }, -/obj/item/storage/box/evidence{ - pixel_x = 7; - pixel_y = 6 - }, -/obj/item/storage/box/evidence{ - pixel_x = 1; - pixel_y = 1 +/area/almayer/engineering/lower/engine_core) +"old" = ( +/obj/structure/machinery/light/small, +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) +"olC" = ( +/obj/structure/largecrate/random/barrel/red, +/obj/structure/machinery/light/small{ + dir = 8 }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/general_equipment) +/area/almayer/maint/upper/u_m_s) "olM" = ( /obj/structure/bed/chair{ can_buckle = 0; @@ -53355,12 +55000,29 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/offices) +"olN" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "olO" = ( /obj/structure/closet/secure_closet/personal/cabinet{ req_access = null }, /turf/open/floor/wood/ship, /area/almayer/engineering/ce_room) +"olQ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "olU" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -53368,6 +55030,12 @@ icon_state = "blue" }, /area/almayer/command/cichallway) +"olW" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/lower/s_bow) "omb" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -53377,6 +55045,12 @@ icon_state = "silvercorner" }, /area/almayer/command/cichallway) +"ome" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) "omo" = ( /obj/structure/window/framed/almayer/white, /turf/open/floor/plating, @@ -53386,22 +55060,20 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) -"omu" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/ammo_magazine/shotgun, -/obj/item/ammo_magazine/shotgun, -/obj/item/ammo_magazine/shotgun, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/weapon/gun/shotgun/combat, -/obj/effect/decal/warning_stripes{ - icon_state = "S" +"omx" = ( +/obj/structure/largecrate/random/barrel/white, +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = 32 }, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/lower/l_f_s) "omy" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -53410,10 +55082,7 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "silvercorner" - }, +/turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) "omP" = ( /obj/item/tool/mop, @@ -53423,6 +55092,35 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) +"omW" = ( +/obj/structure/pipes/standard/manifold/fourway/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/port_hallway) +"ond" = ( +/obj/structure/machinery/sleep_console{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/shipboard/brig/surgery) +"onv" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "onN" = ( /obj/structure/surface/table/almayer, /obj/structure/disposalpipe/segment{ @@ -53447,7 +55145,6 @@ "onY" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, -/obj/item/attachable/bayonet, /obj/item/device/flashlight/lamp{ pixel_x = -8; pixel_y = 12 @@ -53455,7 +55152,7 @@ /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/living/tankerbunks) +/area/almayer/living/auxiliary_officer_office) "oog" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -53487,67 +55184,74 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"ooR" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, +"ooA" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "perma_lockdown"; - name = "\improper Perma Lockdown Shutter" + dir = 6 }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/reinforced{ - name = "\improper Perma Cells" +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"opC" = ( +/obj/structure/machinery/door/airlock/almayer/command/reinforced{ + name = "\improper Combat Information Center" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/perma) -"opj" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/tool, +/area/almayer/command/cichallway) +"opD" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/gym) +"opF" = ( +/obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ - dir = 8; - icon_state = "green" + dir = 4; + icon_state = "red" }, -/area/almayer/squads/req) -"opy" = ( +/area/almayer/shipboard/brig/chief_mp_office) +"opH" = ( +/obj/structure/machinery/light, /obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 + dir = 4 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/command/lifeboat) -"opC" = ( -/obj/structure/machinery/door/airlock/almayer/command/reinforced{ - name = "\improper Combat Information Center" - }, +/area/almayer/engineering/lower/engine_core) +"opI" = ( +/obj/structure/closet/secure_closet, +/obj/item/device/camera_film, +/obj/item/device/camera_film, +/obj/item/device/camera_film, +/obj/item/storage/box/tapes, +/obj/item/clothing/head/fedora, +/obj/item/clothing/suit/storage/marine/light/reporter, +/obj/item/clothing/head/helmet/marine/reporter, +/obj/item/clothing/head/cmcap/reporter, +/obj/item/device/flashlight, +/obj/item/device/toner, +/obj/item/device/toner, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/command/cichallway) -"opD" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/gym) +/area/almayer/command/combat_correspondent) "opJ" = ( /obj/docking_port/stationary/emergency_response/external/port4, /turf/open/space/basic, /area/space) -"opN" = ( -/obj/structure/closet/secure_closet/brig, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, +"oqc" = ( +/obj/structure/surface/rack, +/obj/item/storage/firstaid/toxin, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/processing) +/area/almayer/maint/hull/upper/u_a_s) +"oqt" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "oqu" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -53576,31 +55280,14 @@ name = "General Listening Channel"; pixel_y = 28 }, -/turf/open/floor/almayer, -/area/almayer/living/pilotbunks) -"oqA" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer/uniform_vendors, /turf/open/floor/almayer{ - dir = 1; - icon_state = "cargo_arrow" + icon_state = "plate" }, -/area/almayer/command/cic) -"oqD" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/wet_sign, -/obj/item/tool/wet_sign{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/item/tool/wet_sign{ - pixel_x = -8; - pixel_y = 6 - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/living/pilotbunks) +"oqI" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "oqS" = ( /obj/structure/toilet{ dir = 1 @@ -53620,14 +55307,26 @@ id = "req_belt" }, /obj/structure/plasticflaps, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, /turf/open/floor/almayer, /area/almayer/squads/req) "oqZ" = ( -/obj/structure/machinery/sleep_console{ - dir = 8 +/obj/structure/surface/table/almayer, +/obj/structure/machinery/microwave{ + pixel_y = 5 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = -4; + pixel_y = 19 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 4; + pixel_y = 16 }, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "mono" }, /area/almayer/medical/medical_science) "ora" = ( @@ -53649,25 +55348,29 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"orm" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"orq" = ( +/obj/item/storage/toolbox/mechanical{ + pixel_y = 13 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) -"orv" = ( -/obj/structure/machinery/light/small, -/obj/structure/largecrate/random/secure, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/u_m_s) "orH" = ( /turf/open/floor/almayer/uscm/directional{ dir = 10 }, /area/almayer/command/lifeboat) +"orN" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop/hangar) "osc" = ( /obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep, /obj/structure/machinery/light{ @@ -53675,6 +55378,23 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) +"osn" = ( +/obj/item/trash/USCMtray{ + pixel_x = -4; + pixel_y = 10 + }, +/obj/structure/surface/table/almayer, +/obj/item/tool/kitchen/utensil/pfork{ + pixel_x = 9; + pixel_y = 8 + }, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) "osx" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -53687,6 +55407,17 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"osy" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/platform_decoration, +/turf/open/floor/almayer/no_build{ + dir = 4; + icon_state = "silver" + }, +/area/almayer/command/airoom) "osz" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -53720,27 +55451,19 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"osE" = ( -/obj/structure/closet/emcloset, +"osI" = ( /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "orange" }, -/area/almayer/hull/lower_hull/l_a_p) -"osJ" = ( -/obj/structure/surface/table/almayer, -/obj/item/folder/white{ - pixel_x = 5; - pixel_y = 5 +/area/almayer/engineering/lower/workshop) +"osM" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 8" }, -/obj/item/paper, -/obj/item/handcuffs, -/obj/item/clothing/mask/cigarette/cigar/classic, -/obj/item/coin/silver{ - desc = "A small coin, bearing the falling falcons insignia."; - name = "falling falcons challenge coin" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/open/floor/wood/ship, -/area/almayer/shipboard/brig/chief_mp_office) +/area/almayer/engineering/lower/engine_core) "osT" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/prop/ice_colony/hula_girl{ @@ -53749,19 +55472,42 @@ }, /turf/open/floor/almayer, /area/almayer/living/pilotbunks) -"otX" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" +"osU" = ( +/obj/structure/sign/poster{ + icon_state = "poster14"; + pixel_x = -27 }, -/obj/structure/sign/safety/press_area_ag{ - pixel_x = -17; - pixel_y = -7 +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"otu" = ( +/turf/closed/wall/almayer/research/containment/wall/connect_w, +/area/almayer/medical/containment/cell) +"otW" = ( +/obj/structure/machinery/light/small, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"ouf" = ( +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/obj/effect/projector{ + name = "Almayer_Down1"; + vector_x = 19; + vector_y = -98 + }, +/turf/open/floor/plating/almayer{ + allow_construction = 0 }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/hallways/upper/starboard) "oug" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/pipes/standard/simple/hidden/supply, @@ -53774,13 +55520,28 @@ icon_state = "plate" }, /area/almayer/command/cic) -"ouo" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = 32 +"our" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/paper_bin/uscm{ + pixel_y = 6 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) +/obj/item/tool/pen, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"ouw" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/structure/closet/bombcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop/hangar) "ouB" = ( /obj/structure/bed/sofa/vert/grey/bot, /turf/open/floor/almayer, @@ -53794,16 +55555,18 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"ouV" = ( -/obj/structure/sign/safety/cryo{ - pixel_x = 1; - pixel_y = 26 +"ouU" = ( +/obj/structure/surface/table/almayer, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/technology_scanner, +/obj/effect/spawner/random/technology_scanner, +/obj/structure/machinery/light/small{ + dir = 8 }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/maint/hull/lower/l_m_s) "ouW" = ( /obj/structure/sign/safety/storage{ pixel_x = 8; @@ -53818,18 +55581,16 @@ icon_state = "silvercorner" }, /area/almayer/command/cichallway) +"ove" = ( +/obj/structure/airlock_assembly, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "ovi" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "orangecorner" }, /area/almayer/engineering/upper_engineering/port) -"ovn" = ( -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_p) "ovp" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/flora/pottedplant{ @@ -53841,22 +55602,19 @@ icon_state = "silver" }, /area/almayer/living/briefing) -"ovF" = ( +"ovG" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; pixel_x = 1 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/area/almayer/hull/lower_hull/l_m_p) -"ovG" = ( -/obj/structure/machinery/computer/pandemic, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" +/turf/open/floor/almayer/research/containment/corner_var1{ + dir = 4 }, -/area/almayer/medical/containment) +/area/almayer/medical/containment/cell) "ovP" = ( /obj/structure/sign/safety/security{ pixel_x = 15 @@ -53879,17 +55637,18 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) -"owN" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"owU" = ( +/obj/structure/machinery/light/small{ + dir = 8 }, -/turf/open/floor/wood/ship, -/area/almayer/living/grunt_rnr) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "owW" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; req_access = null; req_one_access = null; req_one_access_txt = "19;29" @@ -53898,48 +55657,61 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/sea_office) +"oxc" = ( +/obj/structure/bed, +/obj/item/toy/plush/farwa{ + pixel_x = 5 + }, +/obj/item/clothing/under/redpyjamas, +/obj/item/bedsheet/orange, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "oxi" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 }, /turf/open/floor/almayer, /area/almayer/living/cafeteria_officer) -"oxn" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 +"oxl" = ( +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/obj/structure/machinery/light{ + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"oxn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/area/almayer/shipboard/brig/chief_mp_office) -"oxp" = ( -/obj/structure/largecrate/random/case, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_m_s) "oxu" = ( /obj/structure/sign/safety/galley{ pixel_x = -17 }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"oxy" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "oxU" = ( /obj/structure/machinery/photocopier, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"oyo" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orangecorner" - }, -/area/almayer/hull/upper_hull/u_a_s) -"oyw" = ( -/obj/structure/platform_decoration{ - dir = 8 +"oyy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) +/turf/open/floor/almayer, +/area/almayer/hallways/port_hallway) "oyE" = ( /obj/effect/landmark/start/intel, /obj/structure/sign/poster{ @@ -53952,23 +55724,25 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/port_atmos) -"oyG" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/almayer{ - icon_state = "plate" +"oyO" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/structure/sign/safety/water{ + pixel_x = -17 }, -/area/almayer/hull/lower_hull/l_a_p) -"ozi" = ( -/obj/structure/surface/table/almayer, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) +"oyR" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "orange" }, +/area/almayer/engineering/lower) +"oyX" = ( +/obj/structure/bookcase/manuals/engineering, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "plate" }, -/area/almayer/engineering/engine_core) +/area/almayer/maint/hull/upper/u_f_s) "ozq" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ @@ -53978,26 +55752,33 @@ icon_state = "test_floor4" }, /area/almayer/squads/alpha) -"ozr" = ( -/obj/structure/closet, -/obj/item/reagent_container/food/drinks/bottle/sake, -/obj/item/newspaper, -/obj/item/clothing/gloves/yellow, -/obj/item/stack/tile/carpet{ - amount = 20 +"ozz" = ( +/obj/structure/surface/table/almayer, +/obj/item/tank/emergency_oxygen/double, +/turf/open/floor/almayer{ + icon_state = "mono" }, -/obj/structure/machinery/light/small{ - dir = 8 +/area/almayer/engineering/upper_engineering/starboard) +"ozH" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) -"ozz" = ( -/obj/structure/surface/table/almayer, -/obj/item/tank/emergency_oxygen/double, +/area/almayer/maint/hull/lower/p_bow) +"ozN" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ + id_tag = "Boat2-D2"; + linked_dock = "almayer-lifeboat2"; + throw_dir = 2 + }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/starboard) "ozT" = ( @@ -54018,19 +55799,6 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"oAd" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/obj/structure/sign/safety/life_support{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "oAB" = ( /obj/structure/platform{ dir = 8; @@ -54040,12 +55808,32 @@ dir = 10 }, /area/almayer/living/briefing) +"oAK" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "oAO" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) +"oAT" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/device/radio{ + pixel_x = 8; + pixel_y = 7 + }, +/obj/item/clothing/head/soft/ferret{ + pixel_x = -7 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "oBq" = ( /obj/structure/bed, /obj/structure/machinery/flasher{ @@ -54057,6 +55845,9 @@ icon_state = "red" }, /area/almayer/shipboard/brig/cells) +"oBr" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/l_a_s) "oBA" = ( /obj/structure/sign/safety/conference_room{ pixel_x = -17; @@ -54071,6 +55862,15 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"oCf" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "oCi" = ( /obj/structure/sign/safety/restrictedarea{ pixel_x = -17 @@ -54080,44 +55880,61 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) -"oCL" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) -"oCO" = ( -/obj/structure/pipes/vents/pump{ - dir = 8 +"oCl" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) -"oCX" = ( +/obj/structure/bed/chair/comfy/delta, /turf/open/floor/almayer{ - dir = 6; - icon_state = "red" + icon_state = "bluefull" }, -/area/almayer/shipboard/brig/cryo) -"oDf" = ( +/area/almayer/living/briefing) +"oCK" = ( +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) -"oDu" = ( -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 32 +/area/almayer/maint/hull/lower/l_m_s) +"oDh" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) +"oDi" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "sterile_green_side" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/medical/medical_science) "oDv" = ( /turf/open/floor/almayer{ dir = 9; icon_state = "red" }, /area/almayer/living/gym) +"oDx" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + dir = 1; + req_one_access = null; + req_one_access_txt = "30;19" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/port_emb) +"oDy" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/processing) "oDE" = ( /obj/structure/surface/rack, /obj/item/reagent_container/spray/cleaner{ @@ -54131,20 +55948,43 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) -"oDL" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/reagent_scanner{ - pixel_x = -6 +"oDJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/spiderling_remains{ + pixel_x = 18; + pixel_y = -5 }, -/obj/item/storage/box/monkeycubes{ - pixel_x = 7; - pixel_y = 7 +/obj/effect/decal/cleanable/ash{ + pixel_x = 11; + pixel_y = 25 }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ dir = 8; - icon_state = "sterile_green_side" + icon_state = "sterile_green_corner" }, -/area/almayer/medical/containment) +/area/almayer/medical/lower_medical_medbay) +"oDL" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/obj/structure/machinery/photocopier, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/medical_science) +"oDR" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/medical_science) "oDY" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/recharger, @@ -54189,6 +56029,13 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"oEy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "oEE" = ( /obj/structure/machinery/light{ unacidable = 1; @@ -54215,23 +56062,28 @@ icon_state = "red" }, /area/almayer/living/port_emb) -"oFj" = ( -/turf/open/floor/almayer/research/containment/corner_var1{ - icon_state = "containment_corner_variant_2" +"oFm" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" }, -/area/almayer/medical/containment/cell) -"oFG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/almayer/engineering/lower/workshop) +"oFn" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/wirecutters/clippers, +/obj/item/handcuffs/zip, +/turf/open/floor/almayer{ + icon_state = "plate" }, +/area/almayer/maint/hull/lower/l_f_p) +"oFr" = ( +/obj/item/storage/firstaid/regular, +/obj/structure/surface/rack, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) -"oFM" = ( -/obj/docking_port/stationary/escape_pod/north, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/u_a_s) "oFV" = ( /obj/structure/sign/poster{ pixel_x = -32; @@ -54239,6 +56091,28 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) +"oFY" = ( +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/lobby) +"oGf" = ( +/obj/structure/surface/rack, +/obj/item/storage/firstaid/regular, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) +"oGi" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"oGj" = ( +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = -16 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "oGx" = ( /obj/structure/closet/secure_closet/surgical{ pixel_x = 30 @@ -54248,26 +56122,25 @@ }, /area/almayer/living/synthcloset) "oGy" = ( -/obj/structure/disposalpipe/segment{ +/obj/structure/machinery/camera/autoname/almayer{ dir = 1; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) -"oGC" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 + name = "ship-grade camera" }, -/obj/structure/machinery/light{ +/obj/structure/bed/chair{ dir = 1 }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/living/starboard_garden) +"oGC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north1) +"oGJ" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/engine_core) "oGP" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -54276,6 +56149,22 @@ icon_state = "orange" }, /area/almayer/living/port_emb) +"oGY" = ( +/obj/item/device/flashlight/lamp/green{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/door_control/cl/office/evac{ + pixel_x = -5; + pixel_y = 4 + }, +/obj/structure/machinery/door_control/cl/office/divider{ + pixel_x = -5; + pixel_y = -3 + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "oHc" = ( /obj/structure/machinery/light, /obj/effect/decal/warning_stripes{ @@ -54301,6 +56190,21 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie) +"oHf" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) +"oHg" = ( +/obj/structure/largecrate/supply, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) "oHl" = ( /obj/structure/surface/table/almayer, /obj/item/storage/toolbox/electrical, @@ -54317,31 +56221,62 @@ icon_state = "test_floor4" }, /area/almayer/engineering/laundry) -"oIc" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 4 +"oIa" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/status_display{ + pixel_y = 30 }, -/obj/structure/machinery/light/small, /turf/open/floor/almayer{ - dir = 6; - icon_state = "orange" + icon_state = "red" }, -/area/almayer/shipboard/brig/perma) -"oIn" = ( -/obj/structure/bed/chair{ +/area/almayer/hallways/upper/port) +"oIh" = ( +/turf/open/floor/almayer{ dir = 8; - pixel_y = 3 + icon_state = "red" }, -/turf/open/floor/almayer{ - icon_state = "plate" +/area/almayer/shipboard/brig/processing) +"oIr" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 }, -/area/almayer/hull/lower_hull/l_m_s) -"oIB" = ( -/turf/closed/wall/almayer, -/area/almayer/command/combat_correspondent) -"oJp" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, +/obj/structure/machinery/door/airlock/almayer/research/reinforced{ + dir = 8; + name = "\improper Containment Airlock"; + closeOtherId = "containment_n" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/medical_science) +"oIt" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) +"oIB" = ( +/turf/closed/wall/almayer, +/area/almayer/command/combat_correspondent) +"oJk" = ( +/turf/closed/wall/almayer, +/area/almayer/engineering/lower/workshop) +"oJp" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 }, /obj/structure/bed/chair/office/dark, /obj/structure/barricade/handrail{ @@ -54351,13 +56286,26 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) "oJR" = ( -/obj/structure/closet/toolcloset, -/obj/structure/machinery/firealarm{ - dir = 8; - pixel_x = -24 +/obj/effect/projector{ + name = "Almayer_AresDown"; + vector_x = 97; + vector_y = -65 }, -/turf/open/floor/almayer{ - icon_state = "tcomms" +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/obj/structure/machinery/door_control{ + id = "ARES StairsUpper"; + name = "ARES Core Access"; + pixel_x = -24; + req_one_access_txt = "90;91;92" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, /area/almayer/command/airoom) "oKb" = ( @@ -54384,29 +56332,38 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"oLd" = ( -/obj/structure/platform{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) -"oLg" = ( -/obj/structure/machinery/conveyor{ - id = "req_belt" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 +"oLf" = ( +/obj/structure/sign/safety/security{ + pixel_x = 15; + pixel_y = 32 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "plate" }, -/area/almayer/squads/req) +/area/almayer/maint/hull/upper/p_bow) "oLi" = ( /obj/effect/landmark/start/marine/medic/bravo, /obj/effect/landmark/late_join/bravo, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) +"oLm" = ( +/obj/structure/machinery/door_control{ + id = "ARES StairsLower"; + name = "ARES Core Lockdown"; + pixel_x = -24; + pixel_y = 8; + req_one_access_txt = "90;91;92" + }, +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 4; + pixel_y = -8 + }, +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer/no_build{ + dir = 8; + icon_state = "silver" + }, +/area/almayer/command/airoom) "oLv" = ( /obj/structure/sign/safety/medical{ pixel_x = 8; @@ -54414,13 +56371,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"oLw" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "oLF" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -54436,13 +56386,22 @@ }, /obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ dir = 2; - name = "Brig"; + name = "\improper Brig Lobby"; req_access = null }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/lobby) +"oLN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "oLT" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -54453,16 +56412,11 @@ /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) "oLU" = ( -/turf/closed/wall/almayer/research/containment/wall/purple{ - dir = 8 - }, -/area/almayer/medical/containment/cell) -"oMd" = ( -/obj/structure/closet/secure_closet/freezer/meat, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "sterile_green_side" }, -/area/almayer/living/grunt_rnr) +/area/almayer/medical/hydroponics) "oMe" = ( /obj/structure/machinery/light{ dir = 8 @@ -54472,20 +56426,16 @@ }, /area/almayer/squads/req) "oMi" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/microwave{ - pixel_y = 6 - }, /obj/structure/machinery/status_display{ pixel_y = 30 }, /obj/structure/sign/safety/rewire{ pixel_x = 32 }, -/turf/open/floor/prison{ - icon_state = "kitchen" +/turf/open/floor/almayer{ + icon_state = "plate" }, -/area/almayer/living/tankerbunks) +/area/almayer/living/auxiliary_officer_office) "oMs" = ( /obj/structure/machinery/computer/cameras/almayer{ dir = 1 @@ -54503,27 +56453,10 @@ icon_state = "redfull" }, /area/almayer/squads/alpha_bravo_shared) -"oMM" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/machinery/cm_vending/clothing/commanding_officer, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "oMQ" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"oMT" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ - id_tag = "Boat2-D1"; - linked_dock = "almayer-lifeboat2"; - throw_dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/lifeboat) "oNb" = ( /obj/structure/surface/table/almayer, /obj/structure/flora/pottedplant{ @@ -54534,14 +56467,6 @@ icon_state = "mono" }, /area/almayer/engineering/ce_room) -"oNf" = ( -/obj/item/stack/folding_barricade/three, -/obj/item/stack/folding_barricade/three, -/obj/structure/closet/secure_closet/guncabinet/red, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/hull/lower_hull/l_f_s) "oNj" = ( /obj/structure/sign/prop1{ pixel_x = -32; @@ -54551,8 +56476,10 @@ /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) "oNp" = ( -/turf/closed/wall/almayer/research/containment/wall/south, -/area/almayer/medical/containment/cell) +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/hydroponics) "oNJ" = ( /obj/effect/decal/warning_stripes{ icon_state = "N" @@ -54566,6 +56493,60 @@ icon_state = "plating" }, /area/almayer/medical/upper_medical) +"oNM" = ( +/obj/structure/largecrate/random/barrel, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) +"oNP" = ( +/obj/structure/machinery/vending/cola{ + density = 0; + pixel_y = 16 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"oNY" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_18"; + pixel_y = 7 + }, +/obj/structure/machinery/door_control/cl/quarter/officedoor{ + pixel_x = -25 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"oOp" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/wirecutters, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) +"oOw" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) +"oON" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "oOO" = ( /obj/structure/sign/safety/debark_lounge{ pixel_x = 15; @@ -54575,6 +56556,12 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"oPf" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/lifeboat) "oPk" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/door_control{ @@ -54596,6 +56583,15 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) +"oPp" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21" + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "oPy" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -54606,36 +56602,57 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"oPD" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 +"oPz" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/device/flashlight/lamp{ + pixel_x = 15 }, -/obj/structure/machinery/status_display{ - pixel_y = 30 +/obj/item/paper_bin/uscm{ + pixel_x = -7; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = -9; + pixel_y = 3 + }, +/obj/item/tool/pen{ + pixel_x = 4; + pixel_y = -4 }, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "plate" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/living/briefing) "oPE" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "red" }, /area/almayer/command/cic) -"oPI" = ( -/obj/structure/largecrate/random/case/small, +"oPF" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) -"oQo" = ( -/obj/item/stool, +/area/almayer/maint/hull/lower/l_a_s) +"oQj" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/machinery/door_control{ + id = "laddernortheast"; + name = "North East Ladders Shutters"; + pixel_y = -25; + req_one_access_txt = "2;3;12;19"; + throw_range = 15 + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "green" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/hallways/starboard_hallway) "oQs" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/book/manual/surgery{ @@ -54650,31 +56667,52 @@ icon_state = "cargo_arrow" }, /area/almayer/living/briefing) +"oQJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"oQL" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "oQM" = ( /obj/structure/pipes/vents/pump{ dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "cargo" +/obj/structure/surface/table/almayer, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 8 }, -/area/almayer/living/tankerbunks) -"oRj" = ( -/obj/structure/stairs{ - icon_state = "ramptop" +/obj/item/tool/pen, +/obj/item/book/manual/marine_law{ + pixel_x = 15; + pixel_y = 5 }, -/obj/structure/platform{ - dir = 4 +/obj/item/book/manual/security_space_law{ + pixel_x = 16; + pixel_y = 9 }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "silver" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/living/auxiliary_officer_office) "oRk" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"oRm" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Port Viewing Room" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_f_s) "oRJ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -54700,18 +56738,25 @@ icon_state = "plate" }, /area/almayer/living/gym) -"oRZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"oRV" = ( +/obj/structure/blocker/invisible_wall, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, -/obj/structure/machinery/light{ - dir = 1 +/area/almayer/command/airoom) +"oRW" = ( +/obj/structure/surface/table/almayer, +/obj/item/frame/table, +/obj/item/frame/table, +/obj/item/clipboard, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/processing) +/area/almayer/engineering/lower/workshop) "oSq" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -54739,6 +56784,23 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) +"oSC" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 21 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/lobby) +"oSG" = ( +/obj/structure/surface/table/almayer, +/obj/item/card/id/visa, +/obj/item/tool/crew_monitor, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "oSL" = ( /obj/structure/window/reinforced{ dir = 8 @@ -54762,6 +56824,23 @@ icon_state = "plate" }, /area/almayer/squads/alpha_bravo_shared) +"oSR" = ( +/obj/structure/stairs{ + icon_state = "ramptop" + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"oTc" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "oTe" = ( /obj/item/prop/almayer/box, /obj/item/prop{ @@ -54783,16 +56862,14 @@ }, /obj/effect/decal/cleanable/cobweb2/dynamic, /obj/item/packageWrap, +/obj/structure/machinery/computer/working_joe{ + dir = 8; + pixel_x = 17 + }, /turf/open/floor/almayer{ icon_state = "test_floor5" }, /area/almayer/squads/req) -"oTz" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "oTA" = ( /obj/structure/machinery/cryopod, /obj/structure/machinery/light{ @@ -54802,10 +56879,32 @@ icon_state = "cargo" }, /area/almayer/squads/alpha) -"oTP" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, +"oTO" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) +"oUt" = ( +/obj/structure/sign/safety/restrictedarea{ + pixel_x = 8; + pixel_y = 32 + }, /turf/open/floor/almayer, -/area/almayer/command/lifeboat) +/area/almayer/maint/hull/upper/u_f_s) +"oUx" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "oUG" = ( /obj/structure/machinery/light{ dir = 8 @@ -54815,12 +56914,38 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"oVP" = ( -/obj/structure/bed/chair{ - dir = 4 +"oUZ" = ( +/obj/structure/surface/rack, +/obj/item/tool/crowbar, +/obj/item/tool/weldingtool, +/obj/item/tool/wrench, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/l_m_p) +"oVf" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/box/evidence{ + pixel_x = 7; + pixel_y = 6 + }, +/obj/item/storage/box/evidence{ + pixel_x = 1; + pixel_y = 1 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/general_equipment) +"oVY" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "oWf" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/recharger, @@ -54849,46 +56974,69 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"oWz" = ( -/obj/item/stool, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south1) -"oWI" = ( -/obj/structure/machinery/cryopod/right{ - pixel_y = 6 - }, -/obj/structure/sign/safety/cryo{ - pixel_x = 32 +"oWq" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"oWx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, /turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/shipboard/brig/cryo) -"oWX" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Kitchen Hydroponics"; - req_one_access_txt = "30;19" + dir = 8; + icon_state = "red" }, +/area/almayer/hallways/upper/port) +"oWz" = ( +/obj/structure/machinery/light, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/living/grunt_rnr) +/area/almayer/living/starboard_garden) "oXb" = ( /obj/effect/landmark/start/marine/charlie, /obj/effect/landmark/late_join/charlie, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) +"oXd" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/almayer{ + icon_state = "blue" + }, +/area/almayer/hallways/aft_hallway) "oXp" = ( /obj/effect/decal/cleanable/ash, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) +"oXt" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/starboard) "oXJ" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) +"oXM" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "oXY" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -54899,25 +57047,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"oYb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "oYp" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -54927,16 +57056,35 @@ icon_state = "red" }, /area/almayer/living/offices/flight) -"oZd" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - req_access = null +"oYr" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_a_p) +"oYs" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/obj/item/clothing/suit/chef/classic, -/obj/item/tool/kitchen/knife/butcher, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/upper/u_a_s) +"oZn" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "oZp" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/light, @@ -54953,6 +57101,41 @@ icon_state = "red" }, /area/almayer/living/offices/flight) +"oZy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"oZD" = ( +/obj/structure/sign/poster/music{ + pixel_x = -27 + }, +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/device/flashlight/lamp{ + pixel_x = 15 + }, +/obj/item/paper_bin/uscm{ + pixel_x = -7; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = -10; + pixel_y = -1 + }, +/obj/item/tool/pen{ + pixel_x = 3; + pixel_y = -4 + }, +/obj/item/tool/pen{ + pixel_x = -11; + pixel_y = 5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "oZV" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/roller, @@ -54969,34 +57152,59 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"paq" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/faxmachine/uscm/brig, +"paa" = ( +/obj/structure/machinery/iv_drip, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 9; + icon_state = "sterile_green_side" }, -/area/almayer/shipboard/brig/main_office) -"paL" = ( -/turf/open/floor/almayer/uscm/directional{ - dir = 1 +/area/almayer/medical/containment) +"pas" = ( +/obj/structure/machinery/cryopod/right, +/obj/structure/sign/safety/cryo{ + pixel_x = 3; + pixel_y = 25 + }, +/obj/structure/sign/safety/rewire{ + pixel_x = 15; + pixel_y = 25 }, -/area/almayer/command/cic) -"pbb" = ( -/obj/effect/landmark/start/doctor, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/offices) -"pbh" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/closet/secure_closet/warden, /obj/structure/machinery/light{ dir = 4 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "red" + icon_state = "cargo" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/shipboard/brig/cryo) +"paI" = ( +/obj/structure/sign/safety/debark_lounge{ + pixel_x = 15; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) +"paJ" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) +"paL" = ( +/turf/open/floor/almayer/uscm/directional{ + dir = 1 + }, +/area/almayer/command/cic) +"pbo" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) "pbp" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -55012,11 +57220,6 @@ icon_state = "plate" }, /area/almayer/command/cic) -"pbC" = ( -/obj/item/bedsheet/red, -/obj/structure/bed, -/turf/open/floor/wood/ship, -/area/almayer/shipboard/brig/chief_mp_office) "pbV" = ( /turf/open/floor/almayer{ dir = 1; @@ -55029,34 +57232,46 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) -"pch" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 +"pcc" = ( +/obj/structure/surface/rack, +/obj/item/paper{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/folder/yellow, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" }, +/area/almayer/maint/hull/upper/u_f_s) +"pcf" = ( +/obj/item/tool/wet_sign, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/u_f_s) +"pcj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "silvercorner" + }, +/area/almayer/shipboard/brig/cic_hallway) "pcl" = ( /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/hallways/hangar) -"pcD" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ +"pcv" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - layer = 5.1; - name = "water pipe" - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Hangar Lockdown"; - name = "\improper Hangar Lockdown Blast Door" - }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 4; + icon_state = "orange" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/engineering/upper_engineering/port) "pcE" = ( /obj/structure/machinery/conveyor{ dir = 8; @@ -55087,79 +57302,84 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"pcQ" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) -"pda" = ( -/obj/structure/largecrate/random/case/double, +"pcY" = ( +/obj/structure/disposalpipe/segment, /obj/structure/sign/safety/distribution_pipes{ - pixel_x = 32 + pixel_x = -17 }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/mess) +"pdp" = ( /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) -"pdk" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/area/almayer/maint/hull/upper/p_bow) +"pdy" = ( +/obj/structure/machinery/door_control{ + id = "OTStore"; + name = "Shutters"; + pixel_y = 24 }, -/area/almayer/hull/lower_hull/l_f_p) -"pdt" = ( -/obj/structure/closet/secure_closet/freezer/fridge/groceries, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 }, -/area/almayer/living/grunt_rnr) -"pdG" = ( -/obj/structure/machinery/door/airlock/almayer/security{ - dir = 2; - name = "\improper Chief MP's Bedroom" +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"pdK" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 +/obj/structure/platform{ + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 5; + icon_state = "plating" }, -/area/almayer/shipboard/brig/chief_mp_office) -"pef" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = -32 +/area/almayer/engineering/lower/engine_core) +"pek" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/s_bow) +"peM" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" }, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 +/area/almayer/maint/hull/upper/u_f_s) +"peO" = ( +/obj/structure/sign/safety/medical{ + pixel_x = -17; + pixel_y = 6 }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" +/obj/structure/sign/safety/restrictedarea{ + pixel_x = -17; + pixel_y = -9 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 8; + icon_state = "red" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/shipboard/brig/lobby) "pfa" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/navigation) -"pfh" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +"pfc" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor{ dir = 1 }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "orange" + icon_state = "test_floor4" }, -/area/almayer/engineering/lower_engineering) +/area/almayer/engineering/upper_engineering/starboard) "pfp" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Up4"; @@ -55170,21 +57390,27 @@ allow_construction = 0 }, /area/almayer/stair_clone) -"pfA" = ( -/obj/item/tool/soap, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/almayer/engineering/upper_engineering/port) +"pfD" = ( +/obj/structure/machinery/cm_vending/sorted/marine_food, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "pfH" = ( /obj/structure/platform_decoration, /turf/open/floor/almayer{ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) +"pfL" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "pfM" = ( /obj/structure/machinery/light{ dir = 4 @@ -55194,101 +57420,172 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"pgo" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"pfT" = ( +/obj/structure/machinery/ares/processor/interface, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) +"pgw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "dark_sterile" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/engineering/upper_engineering/port) "pgD" = ( /turf/closed/wall/almayer, /area/almayer/lifeboat_pumps/south1) "pgH" = ( -/obj/structure/window/reinforced{ - dir = 4; - health = 80 +/obj/effect/projector{ + name = "Almayer_AresDown"; + vector_x = 97; + vector_y = -65 }, -/turf/open/floor/almayer{ - icon_state = "tcomms" +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, /area/almayer/command/airoom) +"pgJ" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) +"pgM" = ( +/obj/structure/reagent_dispensers/water_cooler/walk_past{ + pixel_x = 10; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/medical_science) +"pgN" = ( +/obj/structure/pipes/binary/pump/on{ + dir = 4 + }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/obj/structure/sign/safety/life_support{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"pgP" = ( +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/cells) "pha" = ( /obj/structure/machinery/photocopier, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/living/briefing) -"phj" = ( -/obj/item/clothing/head/helmet/marine/reporter, -/obj/item/clothing/suit/storage/marine/light/reporter, -/obj/item/clothing/head/cmcap/reporter, -/obj/item/clothing/head/fedora, -/obj/structure/closet/secure_closet, -/obj/item/storage/box/tapes, -/obj/item/device/camera_film, -/obj/item/device/camera_film, -/obj/item/device/camera_film, +"phd" = ( +/obj/structure/sign/poster/safety{ + pixel_x = 27 + }, /obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"phj" = ( +/obj/structure/machinery/photocopier, +/obj/structure/machinery/light/small{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/command/combat_correspondent) -"piO" = ( -/obj/structure/surface/rack, -/obj/item/tool/weldingtool, -/obj/item/tool/wrench, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) -"piX" = ( -/obj/item/trash/barcardine, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"pjb" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 +"phw" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/card{ + dir = 8 }, -/obj/structure/machinery/light{ +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) +"phN" = ( +/obj/structure/disposalpipe/junction{ + dir = 4; + icon_state = "pipe-j2" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/processing) +"piJ" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 }, -/area/almayer/hallways/aft_hallway) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) +"piK" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/poddoor/almayer/locked{ + dir = 2; + id = "Perma 1"; + name = "\improper cell shutter" + }, +/turf/open/floor/plating, +/area/almayer/shipboard/brig/perma) "pje" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/command/computerlab) "pjh" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, +/obj/structure/machinery/vending/snack, /turf/open/floor/almayer{ - dir = 5; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/command/lifeboat) +/area/almayer/shipboard/panic) "pji" = ( /turf/closed/wall/almayer, /area/almayer/hallways/stern_hallway) +"pjj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "pjw" = ( /turf/open/floor/almayer{ dir = 10; icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"pjC" = ( -/obj/structure/machinery/autolathe, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" - }, -/area/almayer/medical/testlab) +"pjz" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/p_bow) "pjF" = ( /obj/structure/surface/table/almayer, /obj/item/paper, @@ -55320,12 +57617,16 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"pjP" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" +"pjR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "pky" = ( /obj/structure/largecrate/random/secure, /turf/open/floor/almayer{ @@ -55338,15 +57639,19 @@ icon_state = "redfull" }, /area/almayer/squads/alpha_bravo_shared) -"plE" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" +"pkA" = ( +/obj/structure/closet/firecloset, +/obj/structure/machinery/status_display{ + pixel_y = 30 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + dir = 1; + icon_state = "orange" }, -/area/almayer/engineering/engine_core) +/area/almayer/engineering/lower) +"plv" = ( +/turf/open/floor/plating, +/area/almayer/maint/hull/lower/l_m_p) "plI" = ( /obj/structure/machinery/cm_vending/sorted/medical/blood, /turf/open/floor/almayer{ @@ -55354,42 +57659,6 @@ icon_state = "sterile_green_side" }, /area/almayer/shipboard/brig/surgery) -"plZ" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ - dir = 2; - name = "Brig"; - req_access = null; - req_one_access_txt = "1;3" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/main_office) -"pmk" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"pmn" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "pmq" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -55400,6 +57669,18 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/delta) +"pmv" = ( +/obj/structure/machinery/door/airlock/almayer/marine/alpha{ + dir = 1 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/briefing) "pmH" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -55408,79 +57689,141 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"pmV" = ( +/obj/structure/prop/server_equipment/yutani_server/broken{ + density = 0; + desc = "A powerful server tower housing various AI functions."; + name = "server tower"; + pixel_y = 16 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"pnh" = ( +/obj/structure/ladder{ + height = 2; + id = "ForePortMaint" + }, +/obj/structure/sign/safety/ladder{ + pixel_x = -17 + }, +/turf/open/floor/plating/almayer, +/area/almayer/maint/hull/upper/p_bow) "pno" = ( /obj/structure/sign/safety/escapepod{ pixel_y = 32 }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) +"pns" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) "pnC" = ( -/obj/structure/machinery/cm_vending/sorted/medical/blood, +/obj/structure/machinery/cm_vending/sorted/medical/blood/bolted, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"pop" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 +"pnL" = ( +/obj/structure/machinery/constructable_frame{ + icon_state = "box_2" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engineering_workshop) -"poq" = ( -/obj/item/pipe{ - dir = 4; - layer = 3.5 +/obj/item/weapon/baseballbat/metal{ + pixel_x = -2; + pixel_y = 8 }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"poR" = ( -/obj/structure/machinery/light/small{ - dir = 4 +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"poZ" = ( -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" }, -/obj/structure/bed/chair/bolted{ - dir = 4 +/area/almayer/engineering/upper_engineering/starboard) +"pok" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 18 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 18 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/shipboard/brig/perma) -"ppc" = ( -/obj/structure/largecrate/supply/generator, -/obj/structure/machinery/light/small{ - dir = 1 +/area/almayer/maint/hull/upper/u_f_p) +"poA" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/glass/bucket/mopbucket, +/obj/item/reagent_container/glass/bucket/mopbucket{ + pixel_y = 10 }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "orange" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/engineering/lower/workshop/hangar) "ppe" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 }, /turf/open/floor/almayer, -/area/almayer/living/tankerbunks) -"pqc" = ( -/obj/structure/machinery/firealarm{ - dir = 4; - pixel_x = 24 +/area/almayer/living/auxiliary_officer_office) +"ppn" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"ppF" = ( +/obj/structure/sign/safety/terminal{ + pixel_x = -17 + }, +/obj/structure/surface/table/almayer, +/obj/item/clipboard{ + pixel_x = -4 + }, +/obj/item/device/taperecorder{ + pixel_x = 3; + pixel_y = 3 }, +/obj/item/device/camera, /turf/open/floor/almayer, +/area/almayer/command/corporateliaison) +"ppG" = ( +/obj/structure/bed/sofa/south/grey, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) +"ppM" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) +"pqc" = ( +/turf/open/floor/almayer{ + icon_state = "mono" + }, /area/almayer/living/pilotbunks) "pqi" = ( /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, -/obj/item/tool/weldingtool/largetank, -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, +/obj/item/tool/weldingtool, /obj/item/clothing/head/welding, /obj/item/clothing/head/welding, /obj/item/device/reagent_scanner, @@ -55516,6 +57859,15 @@ icon_state = "cargo" }, /area/almayer/squads/bravo) +"pqP" = ( +/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "pqQ" = ( /turf/open/floor/almayer{ dir = 5; @@ -55528,6 +57880,30 @@ }, /turf/open/floor/almayer, /area/almayer/living/gym) +"prf" = ( +/obj/structure/sign/safety/storage{ + pixel_x = -17 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) +"pri" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = -25 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"prx" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/medical/medical_science) "prE" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/tool/kitchen/tray, @@ -55537,6 +57913,19 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) +"prP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"prX" = ( +/obj/structure/ladder{ + height = 2; + id = "AftStarboardMaint" + }, +/turf/open/floor/plating/almayer, +/area/almayer/maint/hull/upper/u_a_s) "prY" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray, @@ -55552,35 +57941,12 @@ icon_state = "bluefull" }, /area/almayer/living/bridgebunks) -"psm" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/upper_hull/u_a_s) -"psp" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/toolbox/mechanical, -/obj/structure/machinery/light{ - dir = 8 +"psK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) -"psy" = ( -/obj/structure/machinery/door/airlock/almayer/security{ - dir = 2; - name = "\improper Security Checkpoint" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_s) -"psK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, /obj/structure/machinery/door_control{ dir = 1; @@ -55622,6 +57988,19 @@ icon_state = "plate" }, /area/almayer/squads/charlie_delta_shared) +"ptq" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/obj/structure/bed/chair/bolted, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) "ptv" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/platform{ @@ -55629,9 +58008,47 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) +"ptA" = ( +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/effect/projector{ + name = "Almayer_Down1"; + vector_x = 19; + vector_y = -98 + }, +/turf/open/floor/plating/almayer{ + allow_construction = 0 + }, +/area/almayer/hallways/upper/starboard) "ptK" = ( /turf/closed/wall/almayer, /area/almayer/engineering/upper_engineering/starboard) +"ptQ" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/s_stern) +"ptZ" = ( +/obj/structure/platform{ + dir = 4; + layer = 2.7 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "pun" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, @@ -55645,37 +58062,70 @@ icon_state = "silver" }, /area/almayer/living/cryo_cells) -"put" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +"puv" = ( +/obj/structure/sign/safety/maint{ + pixel_x = -17 + }, +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "orange" + dir = 10; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) +"puE" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/recharger, +/obj/structure/sign/safety/terminal{ + pixel_y = 32 + }, +/obj/structure/transmitter/rotary{ + name = "Brig Wardens's Office Telephone"; + phone_category = "MP Dept."; + phone_id = "Brig Warden's Office"; + pixel_x = 15 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" }, -/area/almayer/engineering/engineering_workshop) +/area/almayer/shipboard/brig/chief_mp_office) "puI" = ( /obj/structure/machinery/light{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"puK" = ( -/obj/structure/largecrate/supply, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +"puJ" = ( +/obj/structure/prop/invuln/pipe_water, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) "puO" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north2) -"puR" = ( -/obj/structure/surface/rack, -/obj/item/tool/weldpack, -/obj/effect/spawner/random/tool, -/turf/open/floor/almayer{ - icon_state = "plate" +"puT" = ( +/obj/structure/machinery/light/small{ + dir = 4 }, -/area/almayer/hull/lower_hull/l_f_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "pvh" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/item/tool/warning_cone{ @@ -55685,12 +58135,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/living/port_emb) -"pvm" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/medical/hydroponics) "pvt" = ( /obj/structure/sign/safety/refridgeration{ pixel_y = -32 @@ -55707,18 +58151,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"pvF" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/item/folded_tent/reqs, -/turf/open/floor/almayer{ - icon_state = "plating_striped" - }, -/area/almayer/squads/req) "pvJ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -55758,29 +58190,12 @@ icon_state = "redcorner" }, /area/almayer/shipboard/starboard_missiles) -"pwt" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = -25 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/processing) "pwG" = ( -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/lifeboat_pumps/south1) -"pwK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" +/obj/structure/bed/chair/office/dark{ + dir = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "pxj" = ( /obj/structure/bed, /obj/item/bedsheet/brown, @@ -55789,11 +58204,13 @@ }, /area/almayer/command/combat_correspondent) "pxo" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, -/area/almayer/medical/upper_medical) +/area/almayer/medical/medical_science) "pxD" = ( /obj/structure/machinery/vending/coffee{ pixel_x = 3; @@ -55862,20 +58279,34 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/bravo) +"pyx" = ( +/obj/structure/machinery/door_display/research_cell{ + dir = 4; + id = "Containment Cell 4"; + name = "Control Panel"; + pixel_x = -15; + req_access_txt = "200" + }, +/obj/item/storage/fancy/cigarettes/blackpack{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/structure/surface/table/woodentable/fancy, +/obj/item/storage/fancy/cigarettes/wypacket{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/item/tool/lighter/zippo/gold{ + pixel_x = 2 + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "pyy" = ( /obj/structure/filingcabinet, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/command/lifeboat) -"pyB" = ( -/obj/structure/sign/safety/maint{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/starboard_hallway) "pyC" = ( /obj/structure/largecrate/random/barrel/red, /obj/structure/machinery/light{ @@ -55905,33 +58336,24 @@ }, /area/almayer/shipboard/weapon_room) "pzc" = ( -/obj/structure/pipes/vents/pump, -/obj/structure/bed/chair{ +/obj/structure/machinery/light{ dir = 1 }, +/obj/structure/largecrate/random/barrel/white, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) -"pzi" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) -"pzy" = ( -/obj/structure/sign/safety/maint{ - pixel_x = 32 +/area/almayer/maint/hull/upper/s_bow) +"pzd" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 10; + icon_state = "red" }, -/area/almayer/lifeboat_pumps/north1) +/area/almayer/hallways/upper/port) "pzG" = ( /obj/docking_port/stationary/emergency_response/port1, /turf/open/floor/almayer{ @@ -55939,30 +58361,27 @@ icon_state = "plating" }, /area/almayer/shipboard/starboard_point_defense) -"pzO" = ( -/obj/item/tool/warning_cone{ - pixel_y = 13 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"pzQ" = ( -/obj/structure/largecrate/random/barrel, +"pzJ" = ( +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/command/lifeboat) +"pzM" = ( +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "pzV" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "bluecorner" }, /area/almayer/living/briefing) -"pzZ" = ( -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) +"pAm" = ( +/turf/open/floor/almayer, +/area/almayer/engineering/lower/engine_core) "pAR" = ( /obj/structure/pipes/vents/scrubber{ dir = 8 @@ -55972,6 +58391,13 @@ icon_state = "orange" }, /area/almayer/hallways/starboard_umbilical) +"pAV" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/item/tool/mop, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "pBn" = ( /obj/structure/sign/safety/escapepod{ pixel_x = 8; @@ -55982,20 +58408,20 @@ icon_state = "greencorner" }, /area/almayer/hallways/port_hallway) -"pBW" = ( -/turf/open/floor/almayer{ - icon_state = "orangecorner" +"pBG" = ( +/turf/closed/wall/almayer, +/area/almayer/command/corporateliaison) +"pCq" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/area/almayer/hull/upper_hull/u_a_s) -"pCb" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/structure/sign/safety/life_support{ + pixel_x = 8; + pixel_y = -32 }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) -"pCi" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "pCr" = ( /obj/structure/machinery/cm_vending/sorted/attachments/blend, /turf/open/floor/almayer{ @@ -56014,6 +58440,17 @@ icon_state = "mono" }, /area/almayer/hallways/stern_hallway) +"pCQ" = ( +/obj/structure/surface/table/almayer, +/obj/item/attachable/lasersight, +/obj/item/reagent_container/food/drinks/cans/souto/vanilla{ + pixel_x = 10; + pixel_y = 11 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "pDh" = ( /obj/structure/machinery/power/monitor{ name = "Core Power Monitoring" @@ -56032,15 +58469,6 @@ icon_state = "tcomms" }, /area/almayer/engineering/upper_engineering/starboard) -"pDm" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "pDo" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -56088,12 +58516,19 @@ icon_state = "plate" }, /area/almayer/squads/charlie) -"pDL" = ( +"pDW" = ( /obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 + dir = 9 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/lifeboat) +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/shipboard/brig/chief_mp_office) "pEl" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -56112,10 +58547,6 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"pEy" = ( -/obj/item/ammo_casing/bullet, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "pEB" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -56123,151 +58554,96 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) "pEJ" = ( -/obj/structure/filingcabinet/filingcabinet, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/containment) -"pEY" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 +/obj/structure/machinery/flasher{ + alpha = 1; + id = "Containment Cell 2"; + layer = 2.1; + name = "Mounted Flash"; + pixel_y = 30 }, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_x = -16; - pixel_y = 8 +/obj/structure/machinery/light/containment{ + dir = 1 }, -/turf/open/floor/almayer{ - icon_state = "mono" +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/area/almayer/lifeboat_pumps/south1) -"pFa" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +/turf/open/floor/almayer/research/containment/floor2{ + dir = 1 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 +/area/almayer/medical/containment/cell) +"pEY" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, /turf/open/floor/almayer{ - allow_construction = 0 - }, -/area/almayer/shipboard/brig/lobby) -"pFg" = ( -/obj/structure/window/framed/almayer/hull/hijack_bustable, -/obj/structure/machinery/door/poddoor/almayer/locked{ - dir = 8; - id = "Perma 1"; - name = "\improper isolation shutter" + icon_state = "test_floor4" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "courtyard_cells"; - name = "\improper Courtyard Lockdown Shutter" +/area/almayer/lifeboat_pumps/south1) +"pFq" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/binoculars, +/obj/item/device/whistle{ + pixel_y = 5 }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/perma) -"pFA" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 4 +/turf/open/floor/almayer{ + icon_state = "plate" }, +/area/almayer/maint/hull/upper/u_f_s) +"pFr" = ( +/obj/structure/machinery/light/small, /turf/open/floor/almayer{ - dir = 4; - icon_state = "orangecorner" + icon_state = "plate" }, -/area/almayer/engineering/lower_engineering) -"pFM" = ( -/obj/structure/machinery/light/small{ - dir = 8 +/area/almayer/maint/hull/lower/l_a_p) +"pGh" = ( +/obj/effect/decal/cleanable/cobweb{ + pixel_x = -9; + pixel_y = 19 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) -"pFP" = ( -/obj/effect/landmark/yautja_teleport, +/area/almayer/maint/hull/upper/u_m_p) +"pGj" = ( +/obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/maint/hull/lower/l_a_s) "pGG" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/fancy/cigarettes/lucky_strikes, -/obj/item/tool/lighter, -/obj/item/clothing/glasses/sunglasses/blindfold, -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/obj/structure/machinery/door_control{ - id = "Execution Shutters"; - name = "Privacy Shutters"; - pixel_y = 12; - req_access_txt = "3" +/obj/effect/landmark/start/doctor, +/obj/structure/sign/safety/maint{ + pixel_y = 26 }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/execution) +/obj/effect/landmark/late_join/doctor, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/offices) "pGK" = ( -/obj/structure/machinery/flasher{ - alpha = 1; - id = "Containment Cell 2"; - layer = 2.1; - name = "Mounted Flash"; - pixel_y = 30 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/obj/structure/machinery/light/containment{ - dir = 1 +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/turf/open/floor/almayer/research/containment/floor2{ - dir = 1 +/turf/open/floor/almayer{ + icon_state = "mono" }, -/area/almayer/medical/containment/cell) +/area/almayer/medical/hydroponics) "pGM" = ( /obj/structure/machinery/light{ dir = 1 }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"pGN" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/aluminum{ - amount = 20 - }, -/obj/item/stack/sheet/copper{ - amount = 20; - pixel_y = 4 - }, -/obj/item/stack/sheet/mineral/gold{ - amount = 3; - pixel_y = 4 - }, -/obj/item/stack/sheet/mineral/silver{ - amount = 5; - pixel_x = 4; - pixel_y = 2 - }, -/obj/item/stack/sheet/mineral/phoron{ - amount = 25 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"pGP" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/box/lights/bulbs{ - pixel_x = 3; - pixel_y = 7 - }, -/obj/item/storage/box/lights/mixed, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "pGT" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/general_equipment) +"pHc" = ( +/obj/structure/machinery/autolathe, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "pHp" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/perma) @@ -56277,6 +58653,14 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"pHD" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "pHG" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -56286,36 +58670,49 @@ icon_state = "bluecorner" }, /area/almayer/living/basketball) -"pIf" = ( -/obj/structure/disposalpipe/junction{ - dir = 8 +"pId" = ( +/obj/item/storage/box/nade_box/tear_gas, +/obj/item/storage/box/nade_box/tear_gas{ + pixel_x = 3; + pixel_y = 5 }, -/obj/structure/pipes/standard/manifold/hidden/supply, +/obj/structure/surface/table/almayer, /turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) -"pIk" = ( -/obj/structure/ladder{ - height = 1; - id = "AftStarboardMaint" +/area/almayer/shipboard/brig/armory) +"pIf" = ( +/obj/structure/mirror{ + pixel_x = 28 }, -/obj/structure/sign/safety/ladder{ - pixel_x = 8; - pixel_y = 32 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/lower_hull/l_a_s) -"pIH" = ( -/obj/structure/machinery/door_control{ - id = "perma_exit"; - name = "\improper Exit Shutters"; - pixel_y = -22; - req_access_txt = "3" +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "redcorner" + icon_state = "dark_sterile" }, -/area/almayer/shipboard/brig/perma) +/area/almayer/maint/hull/upper/u_a_s) +"pIo" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) +"pIC" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "Hangar Lockdown"; + name = "\improper Hangar Lockdown Blast Door" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/lower/constr) "pIU" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -56330,67 +58727,91 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"pIX" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/port_hallway) -"pJb" = ( -/obj/structure/bed/chair{ - dir = 8 +"pIZ" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, /turf/open/floor/almayer{ - icon_state = "green" + icon_state = "test_floor4" + }, +/area/almayer/lifeboat_pumps/north1) +"pJr" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 1 }, -/area/almayer/living/grunt_rnr) -"pJi" = ( -/obj/structure/closet/firecloset, /turf/open/floor/almayer{ - dir = 6; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/general_equipment) -"pJE" = ( -/obj/structure/closet/secure_closet{ - name = "\improper Execution Firearms" +/area/almayer/engineering/lower/engine_core) +"pJv" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 }, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/weapon/gun/rifle/m4ra, -/obj/item/weapon/gun/rifle/m4ra, -/obj/item/weapon/gun/rifle/m4ra, -/obj/structure/machinery/light/small{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" }, /turf/open/floor/almayer{ dir = 8; icon_state = "redcorner" }, -/area/almayer/shipboard/brig/execution) -"pJJ" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "green" +/area/almayer/shipboard/brig/main_office) +"pJD" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 1 }, -/area/almayer/hallways/port_hallway) -"pJW" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/door/airlock/almayer/maint{ +/obj/structure/sink{ dir = 1; - req_access = null; - req_one_access = null; - req_one_access_txt = "3;22;19" + pixel_y = -10 + }, +/obj/item/tool/soap, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "dark_sterile" + }, +/area/almayer/living/port_emb) +"pJJ" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "green" + }, +/area/almayer/hallways/port_hallway) +"pJR" = ( +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresUp"; + vector_x = -97; + vector_y = 65 + }, +/obj/structure/stairs{ + dir = 1 + }, +/turf/open/floor/almayer/no_build{ + dir = 4 + }, +/area/almayer/command/airoom) +"pKh" = ( +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, +/obj/effect/landmark/start/nurse, +/obj/effect/landmark/late_join/nurse, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/offices) +"pKB" = ( +/obj/structure/surface/rack, +/obj/item/circuitboard/firealarm, +/obj/item/circuitboard, +/obj/item/clipboard, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/upper/s_stern) "pKZ" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -56403,20 +58824,46 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) -"pLW" = ( -/obj/structure/machinery/firealarm{ - dir = 4; - pixel_x = 24 +"pLa" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/corporateliaison) +"pLt" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, /turf/open/floor/almayer{ dir = 5; - icon_state = "red" + icon_state = "plating" }, -/area/almayer/shipboard/port_missiles) -"pLZ" = ( -/obj/effect/landmark/crap_item, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/engineering/lower/engine_core) +"pLO" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "W_Containment Cell 5"; + name = "\improper Containment Cell 5"; + unacidable = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/closed/wall/almayer/research/containment/wall/purple{ + dir = 1 + }, +/area/almayer/medical/containment/cell) +"pLW" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/living/pilotbunks) "pMj" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -56426,12 +58873,34 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) +"pMk" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) "pMp" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/medical/morgue) +"pMA" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) +"pMH" = ( +/obj/item/tool/wet_sign, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "pMJ" = ( /obj/structure/bed/chair{ dir = 1 @@ -56459,19 +58928,28 @@ icon_state = "test_floor4" }, /area/almayer/command/cichallway) -"pNp" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "plate" +"pNk" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/box/bodybags{ + pixel_x = 6; + pixel_y = 6 }, -/area/almayer/hull/lower_hull/l_f_s) -"pNG" = ( -/obj/structure/disposalpipe/segment{ +/obj/item/storage/box/bodybags, +/obj/structure/machinery/light/small{ + dir = 4; + pixel_y = -12 + }, +/obj/structure/machinery/power/apc/almayer{ dir = 4 }, -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/obj/structure/sign/safety/rewire{ + pixel_x = 32; + pixel_y = 17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/execution) "pNM" = ( /obj/structure/platform{ dir = 4 @@ -56482,44 +58960,52 @@ }, /area/almayer/lifeboat_pumps/south1) "pNP" = ( -/turf/open/floor/almayer/research/containment/corner{ - dir = 4 - }, -/area/almayer/medical/containment/cell) -"pNQ" = ( /obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 + icon_state = "S" }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 +/obj/item/reagent_container/food/snacks/cheesewedge{ + pixel_x = -10; + pixel_y = 7 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) +/mob/living/simple_animal/mouse/white/Doc, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/almayer/medical/hydroponics) "pOi" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/living/offices) -"pOB" = ( -/obj/item/trash/cigbutt{ - pixel_x = -10; - pixel_y = 13 - }, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice10"; - pixel_x = -16; - pixel_y = 16 +"pOp" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" }, +/obj/structure/largecrate/random/case/small, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/upper/s_bow) "pOD" = ( /obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, /area/almayer/living/pilotbunks) +"pOH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/panic) "pON" = ( /turf/open/floor/almayer/uscm/directional{ dir = 8 @@ -56535,6 +59021,16 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"pPd" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 2; + id = "OuterShutter"; + name = "\improper Saferoom Shutters" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/panic) "pPv" = ( /obj/structure/closet/cabinet, /obj/item/reagent_container/food/drinks/bottle/wine, @@ -56559,12 +59055,39 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) -"pPz" = ( -/obj/structure/machinery/vending/cola, +"pPy" = ( +/obj/structure/sign/safety/restrictedarea{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"pPA" = ( +/obj/structure/sign/poster{ + desc = "One of those hot, tanned babes back the beaches of good ol' Earth."; + icon_state = "poster12"; + name = "Beach Babe Pinup"; + pixel_x = 27; + serial_number = 12 + }, +/obj/structure/bed/chair/comfy/delta{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/living/briefing) +"pPG" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "pPM" = ( /obj/structure/surface/rack, /turf/open/floor/almayer{ @@ -56573,27 +59096,18 @@ }, /area/almayer/command/securestorage) "pPN" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ dir = 4; icon_state = "red" }, /area/almayer/shipboard/port_missiles) -"pQq" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/obj/effect/decal/cleanable/blood/oil, +"pQr" = ( +/obj/structure/bed, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"pQu" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 + icon_state = "plate" }, -/turf/open/floor/almayer, -/area/almayer/medical/containment/cell/cl) +/area/almayer/shipboard/brig/perma) "pQy" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -56611,36 +59125,25 @@ icon_state = "plate" }, /area/almayer/squads/charlie_delta_shared) -"pQG" = ( -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) "pQN" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/franks, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) "pQP" = ( -/obj/structure/machinery/door/airlock/almayer/research/reinforced{ - name = "\improper Containment Airlock" +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "containmentlockdown_E"; - name = "\improper Containment Lockdown" +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "dark_sterile" }, -/area/almayer/medical/containment) +/area/almayer/medical/medical_science) "pQV" = ( -/obj/structure/machinery/vending/cola, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "blue" }, /area/almayer/living/pilotbunks) "pQY" = ( @@ -56655,6 +59158,19 @@ icon_state = "plate" }, /area/almayer/living/offices) +"pRn" = ( +/obj/structure/bed, +/obj/structure/machinery/power/apc/almayer{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/medical_science) +"pRs" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "pRy" = ( /turf/open/floor/almayer/research/containment/corner_var1{ dir = 4 @@ -56676,11 +59192,36 @@ icon_state = "silvercorner" }, /area/almayer/shipboard/brig/cic_hallway) +"pRT" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_y = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 8; + name = "\improper Tool Closet" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/port_emb) "pRX" = ( -/turf/closed/wall/almayer/research/containment/wall/connect_e2{ - icon_state = "containment_wall_connect_e" +/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/open/floor/almayer{ + icon_state = "test_floor5" }, -/area/almayer/medical/containment/cell) +/area/almayer/medical/hydroponics) +"pRZ" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/plating, +/area/almayer/engineering/lower/workshop) "pSL" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -56690,6 +59231,14 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) +"pSQ" = ( +/obj/structure/reagent_dispensers/fueltank{ + anchored = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "pSU" = ( /obj/structure/machinery/light, /obj/structure/machinery/photocopier, @@ -56697,13 +59246,6 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"pTc" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = -17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "pTj" = ( /obj/structure/barricade/handrail{ dir = 8 @@ -56712,23 +59254,26 @@ icon_state = "silvercorner" }, /area/almayer/command/computerlab) -"pTM" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 +"pTt" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES JoeCryo"; + name = "\improper ARES Core Shutters"; + plane = -7 }, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" }, -/area/almayer/medical/hydroponics) -"pTT" = ( -/obj/structure/platform{ - dir = 4 +/area/almayer/command/airoom) +"pTX" = ( +/obj/structure/largecrate/random/barrel/red, +/obj/structure/sign/safety/fire_haz{ + pixel_x = 8; + pixel_y = -32 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/l_f_p) "pUd" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ @@ -56750,14 +59295,10 @@ icon_state = "bluecorner" }, /area/almayer/squads/delta) -"pUi" = ( -/obj/effect/decal/cleanable/blood/drip, -/obj/item/tool/crowbar{ - pixel_x = 6; - pixel_y = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) +"pUj" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop) "pUp" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -56771,6 +59312,12 @@ icon_state = "test_floor5" }, /area/almayer/squads/req) +"pUv" = ( +/obj/structure/machinery/power/smes/buildable, +/turf/open/floor/almayer{ + icon_state = "tcomms" + }, +/area/almayer/engineering/lower/engine_core) "pUA" = ( /obj/structure/surface/table/almayer, /obj/structure/window/reinforced/ultra{ @@ -56785,48 +59332,25 @@ icon_state = "silver" }, /area/almayer/living/briefing) -"pUJ" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/upper_hull/u_f_p) -"pUY" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) -"pVu" = ( -/obj/item/paper/prison_station/interrogation_log{ - pixel_x = 10; - pixel_y = 7 +"pUD" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/faxmachine/uscm/brig, +/obj/structure/machinery/status_display{ + pixel_y = 30 }, -/obj/structure/largecrate/random/barrel/green, -/obj/item/limb/hand/l_hand{ - pixel_x = -5; - pixel_y = 14 +/turf/open/floor/almayer{ + icon_state = "redfull" }, -/obj/effect/spawner/random/balaclavas, +/area/almayer/shipboard/brig/processing) +"pUL" = ( +/obj/structure/surface/table/almayer, +/obj/item/weapon/gun/rifle/m41a, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/u_m_s) "pVx" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/weapon/gun/smg/m39, -/obj/item/weapon/gun/smg/m39, -/obj/item/weapon/gun/smg/m39, -/obj/item/weapon/gun/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, /turf/open/floor/almayer{ icon_state = "redfull" }, @@ -56862,29 +59386,27 @@ icon_state = "silver" }, /area/almayer/living/briefing) -"pVZ" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/upper_hull/u_a_s) +"pVF" = ( +/obj/structure/surface/table/almayer, +/obj/item/spacecash/c1000/counterfeit, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/fancy/cigar, +/obj/structure/machinery/atm{ + pixel_y = 32 + }, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) "pWb" = ( /obj/effect/landmark/start/marine/tl/delta, /obj/effect/landmark/late_join/delta, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) -"pWf" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - dir = 2; - name = "\improper Engineering Workshop" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, +"pWd" = ( +/obj/structure/surface/table/almayer, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/engineering/engineering_workshop) +/area/almayer/maint/hull/upper/u_f_s) "pWr" = ( /obj/structure/surface/rack, /obj/item/tool/minihoe{ @@ -56912,40 +59434,22 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) -"pWA" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk, -/obj/structure/sign/safety/storage{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "green" - }, -/area/almayer/squads/req) -"pWG" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 +"pWw" = ( +/obj/structure/bed/chair, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/maint/hull/upper/u_a_s) "pWN" = ( /obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/living/pilotbunks) -"pXj" = ( -/obj/structure/closet/radiation, /turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" + icon_state = "blue" }, -/area/almayer/engineering/lower_engineering) +/area/almayer/living/pilotbunks) "pXl" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -56958,20 +59462,6 @@ icon_state = "plate" }, /area/almayer/squads/alpha) -"pXn" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -12; - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "pXx" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -56980,15 +59470,6 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) -"pXQ" = ( -/obj/structure/sign/safety/intercom{ - pixel_x = 32; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "pXV" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -57005,25 +59486,26 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) "pYi" = ( -/obj/structure/machinery/telecomms/processor/preset_four, -/obj/structure/sign/safety/laser{ - pixel_x = 8; - pixel_y = 32 +/obj/structure/machinery/light{ + dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "tcomms" +/obj/structure/pipes/vents/pump/no_boom{ + dir = 8 + }, +/turf/open/floor/almayer/no_build{ + dir = 4; + icon_state = "silver" }, /area/almayer/command/airoom) "pYo" = ( -/obj/structure/machinery/chem_simulator, -/obj/structure/machinery/light{ - dir = 1 +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, /turf/open/floor/almayer{ - dir = 1; + dir = 8; icon_state = "sterile_green_side" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) "pYu" = ( /obj/item/tool/warning_cone{ pixel_x = -12; @@ -57034,18 +59516,22 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"pYF" = ( -/obj/structure/bed/chair{ - dir = 1 +"pYQ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"pYS" = ( +/obj/structure/pipes/binary/pump/on{ + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "red" + dir = 1; + icon_state = "orange" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/engineering/lower) "pYX" = ( /turf/open/floor/almayer{ dir = 8; @@ -57058,12 +59544,29 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_umbilical) +"pZH" = ( +/obj/structure/machinery/shower{ + dir = 8 + }, +/obj/structure/machinery/door/window/westright, +/obj/structure/window/reinforced/tinted/frosted, +/obj/item/tool/soap/deluxe, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/corporateliaison) "pZK" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "orangecorner" }, /area/almayer/engineering/upper_engineering/port) +"pZR" = ( +/obj/structure/bed/chair/comfy/alpha{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "pZS" = ( /obj/structure/bed/sofa/south/grey/left, /turf/open/floor/almayer{ @@ -57071,44 +59574,21 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"pZV" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/structure/machinery/status_display{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/shipboard/brig/perma) -"qau" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, +"qam" = ( +/obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 + icon_state = "W"; + pixel_x = -1 }, -/obj/effect/landmark/start/warrant, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "sterile_green_side" }, -/area/almayer/shipboard/brig/cryo) -"qaD" = ( +/area/almayer/medical/medical_science) +"qan" = ( /obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) -"qaJ" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/execution) +/area/almayer/maint/hull/lower/l_a_s) "qaV" = ( /turf/open/floor/almayer{ dir = 10; @@ -57123,29 +59603,6 @@ icon_state = "red" }, /area/almayer/living/briefing) -"qaZ" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" - }, -/turf/open/floor/almayer, -/area/almayer/hull/lower_hull/l_f_s) -"qbd" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" - }, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) -"qbt" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/almayer{ - icon_state = "sterile_green" - }, -/area/almayer/shipboard/brig/surgery) "qbx" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -57165,14 +59622,21 @@ icon_state = "redcorner" }, /area/almayer/living/briefing) -"qbO" = ( -/obj/structure/machinery/power/apc/almayer/hardened{ - dir = 1 +"qbD" = ( +/obj/structure/machinery/light/small{ + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 5; + icon_state = "plating" }, -/area/almayer/lifeboat_pumps/north2) +/area/almayer/shipboard/stern_point_defense) +"qbO" = ( +/turf/open/floor/almayer{ + dir = 6; + icon_state = "blue" + }, +/area/almayer/living/pilotbunks) "qbZ" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor/glass{ dir = 1; @@ -57182,12 +59646,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/port) -"qce" = ( -/obj/item/trash/cigbutt, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "qck" = ( /obj/structure/surface/table/woodentable/fancy, /obj/structure/machinery/computer/cameras/wooden_tv/almayer{ @@ -57209,7 +59667,7 @@ /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/living/tankerbunks) +/area/almayer/living/auxiliary_officer_office) "qdk" = ( /obj/structure/surface/table/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -57228,6 +59686,38 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"qdv" = ( +/obj/item/bedsheet/purple{ + layer = 3.2 + }, +/obj/item/bedsheet/purple{ + pixel_y = 13 + }, +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/clothing/head/beret/royal_marine, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "emerald" + }, +/area/almayer/living/port_emb) "qdz" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -57251,20 +59741,37 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"qee" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 +"qec" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 5; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/hallways/upper/port) "qej" = ( /obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/engineering/laundry) +"qep" = ( +/obj/structure/machinery/door/airlock/almayer/medical/glass{ + access_modified = 1; + dir = 2; + name = "\improper Field Surgery Equipment"; + req_access_txt = "20"; + req_one_access = null + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/lower_medical_medbay) "qer" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -57285,6 +59792,22 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"qeK" = ( +/obj/structure/pipes/vents/scrubber, +/obj/structure/surface/table/reinforced/black, +/obj/item/storage/toolbox/mechanical, +/obj/item/stack/cable_coil{ + pixel_x = -7; + pixel_y = 11 + }, +/obj/item/device/helmet_visor{ + pixel_x = 8; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "qeY" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/toy/beach_ball/holoball, @@ -57295,10 +59818,8 @@ /obj/structure/machinery/computer/emails{ dir = 1 }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" - }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, /area/almayer/shipboard/port_missiles) "qfh" = ( /obj/structure/bed/chair{ @@ -57309,34 +59830,72 @@ }, /area/almayer/squads/alpha_bravo_shared) "qfy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/structure/filingcabinet/filingcabinet{ + density = 0; + pixel_x = -11; + pixel_y = 16 + }, +/obj/structure/filingcabinet/filingcabinet{ + density = 0; + pixel_x = 4; + pixel_y = 16 + }, /turf/open/floor/almayer{ - dir = 4; + dir = 1; icon_state = "sterile_green_corner" }, -/area/almayer/medical/containment) +/area/almayer/medical/medical_science) "qfA" = ( /turf/open/floor/almayer{ icon_state = "silvercorner" }, /area/almayer/command/cichallway) -"qfR" = ( -/obj/structure/machinery/light{ - dir = 1 +"qfD" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) +"qfQ" = ( +/obj/structure/surface/rack, +/obj/item/stack/folding_barricade/three, /turf/open/floor/almayer{ - dir = 9; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/shipboard/panic) "qga" = ( -/obj/structure/machinery/space_heater, -/obj/structure/sign/safety/maint{ - pixel_x = 32 +/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + dir = 1 }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "test_floor4" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/living/starboard_garden) +"qgr" = ( +/obj/item/trash/plate{ + pixel_x = 9; + pixel_y = 11 + }, +/obj/item/reagent_container/food/snacks/carpmeat{ + layer = 3.3; + pixel_x = 8; + pixel_y = 11 + }, +/obj/item/reagent_container/food/snacks/carpmeat{ + layer = 3.3; + pixel_x = 8; + pixel_y = 11 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "qgG" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -57347,25 +59906,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) -"qgH" = ( -/obj/item/storage/backpack/marine/satchel{ - desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; - icon = 'icons/obj/janitor.dmi'; - icon_state = "trashbag3"; - name = "trash bag"; - pixel_x = -4; - pixel_y = 6 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "qgK" = ( /obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2; - name = "\improper Combat Correspondent Room"; - req_access = list(203) +/obj/structure/machinery/door/airlock/almayer/generic/press{ + dir = 1; + name = "\improper Combat Correspondent Room" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/open/floor/almayer, /area/almayer/command/combat_correspondent) "qgN" = ( /obj/structure/bed/chair{ @@ -57379,6 +59928,16 @@ }, /turf/open/floor/almayer, /area/almayer/squads/delta) +"qgU" = ( +/obj/structure/machinery/power/apc/almayer/hardened, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "qhb" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -57409,14 +59968,43 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"qhB" = ( -/obj/structure/closet, -/obj/item/clothing/glasses/mgoggles/prescription, -/obj/item/clothing/glasses/mbcg, +"qhD" = ( +/obj/structure/closet{ + name = "backpack storage" + }, +/obj/item/storage/backpack/marine/grenadepack, +/obj/item/storage/backpack/marine/grenadepack, +/obj/item/storage/backpack/marine/mortarpack, +/obj/item/storage/backpack/marine/mortarpack, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/engineering/lower/workshop/hangar) +"qhG" = ( +/obj/structure/surface/table/almayer, +/obj/item/ashtray/bronze{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/ash, +/obj/item/trash/cigbutt/ucigbutt{ + pixel_x = 4; + pixel_y = 13 + }, +/obj/item/trash/cigbutt/ucigbutt{ + pixel_x = -7; + pixel_y = 14 + }, +/obj/item/trash/cigbutt/ucigbutt{ + pixel_x = -13; + pixel_y = 8 + }, +/obj/item/trash/cigbutt/ucigbutt{ + pixel_x = -6; + pixel_y = 9 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "qhU" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -57432,19 +60020,32 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"qic" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 +"qid" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"qig" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) +"qih" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "\improper Tanker Quarters"; + req_one_access_txt = "19;27" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull) -"qif" = ( -/obj/structure/sign/dartboard, -/turf/closed/wall/almayer, -/area/almayer/hallways/hangar) +/area/almayer/living/tankerbunks) "qim" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -57454,18 +60055,23 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"qit" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/item/paper_bin/uscm, +/obj/item/tool/pen, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "qiy" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 }, /turf/open/floor/almayer, /area/almayer/living/chapel) -"qiI" = ( -/obj/structure/girder/displaced, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "qjz" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/clipboard, @@ -57482,22 +60088,90 @@ icon_state = "silvercorner" }, /area/almayer/command/computerlab) +"qjL" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "qjN" = ( /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"qjT" = ( +/obj/structure/surface/table/almayer, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) +"qjV" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) +"qjZ" = ( +/turf/closed/wall/almayer, +/area/almayer/shipboard/stern_point_defense) "qki" = ( /obj/effect/landmark/start/marine/smartgunner/charlie, /obj/effect/landmark/late_join/charlie, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) "qkn" = ( -/obj/structure/sign/safety/maint{ - pixel_x = -17 +/obj/structure/machinery/power/apc/almayer{ + cell_type = /obj/item/cell/hyper; + dir = 1 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) +"qkP" = ( +/obj/item/frame/light_fixture{ + anchored = 1; + desc = "A broken fluorescent tube light."; + dir = 8; + icon_state = "tube-broken"; + name = "broken light fixture" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/port_emb) +"qkY" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/food/drinks/coffeecup{ + pixel_x = -8; + pixel_y = -1 + }, +/obj/item/reagent_container/food/drinks/coffee{ + pixel_y = 9 + }, +/obj/item/tool/pen{ + pixel_x = 5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "qld" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -57505,6 +60179,29 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/starboard_umbilical) +"qlm" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"qlp" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/prop/tableflag/uscm{ + pixel_x = -5 + }, +/obj/item/prop/tableflag/uscm2{ + pixel_x = 5 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) +"qlu" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "qlz" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -57514,6 +60211,29 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/sea_office) +"qlI" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"qlS" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks{ + density = 0; + pixel_x = -7; + pixel_y = 17 + }, +/obj/structure/sign/safety/cryo{ + pixel_x = 12; + pixel_y = 28 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "qmk" = ( /obj/structure/surface/table/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -57528,27 +60248,35 @@ icon_state = "bluecorner" }, /area/almayer/squads/delta) -"qmt" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 +"qmq" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out" +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/obj/structure/sign/safety/bathunisex{ + pixel_x = 32 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/maint/hull/upper/u_a_s) "qmy" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/door_control{ dir = 1; - id = "researchlockdownext"; - name = "Window Shutters"; - pixel_x = -8; - pixel_y = -5; + id = "researchlockdownext_windoor"; + name = "Windoor Shutters"; + pixel_x = -7; + pixel_y = 9; req_access_txt = "28" }, /obj/structure/machinery/computer/med_data/laptop{ @@ -57556,6 +60284,21 @@ pixel_x = 6; pixel_y = -4 }, +/obj/structure/sign/safety/biohazard{ + pixel_y = -32 + }, +/obj/structure/sign/safety/ref_bio_storage{ + pixel_x = 15; + pixel_y = -32 + }, +/obj/structure/machinery/door_control{ + dir = 1; + id = "researchlockdownext_se_2"; + name = "Window Shutters"; + pixel_x = -7; + pixel_y = 4; + req_access_txt = "28" + }, /turf/open/floor/almayer{ dir = 8; icon_state = "sterile_green_corner" @@ -57569,42 +60312,81 @@ }, /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - name = "\improper Brig" + name = "\improper Brig"; + closeOtherId = "brigmaint_n" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/main_office) -"qmE" = ( -/obj/structure/sign/safety/restrictedarea{ - pixel_x = 32; - pixel_y = -8 +"qmD" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 }, -/obj/structure/machinery/door_control{ - id = "perma_lockdown"; - name = "\improper Perma Cells Lockdown"; - pixel_x = 24; - pixel_y = 6; - req_access_txt = "3" +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/obj/structure/bed/chair/comfy, /turf/open/floor/almayer{ - dir = 4; - icon_state = "red" + icon_state = "dark_sterile" }, -/area/almayer/shipboard/brig/perma) +/area/almayer/medical/medical_science) +"qmL" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/starboard_hallway) +"qmM" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "Saferoom Channel"; + pixel_y = -28 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "qmP" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/faxmachine/uscm, /turf/open/floor/almayer, /area/almayer/command/computerlab) -"qmX" = ( -/obj/structure/toilet{ - dir = 1 +"qmR" = ( +/obj/structure/window/reinforced/ultra{ + pixel_y = -12 }, +/obj/structure/bed/chair/bolted, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "plating_striped" }, -/area/almayer/shipboard/brig/perma) +/area/almayer/shipboard/brig/execution) +"qmU" = ( +/obj/item/vehicle_clamp, +/obj/item/vehicle_clamp, +/obj/item/vehicle_clamp, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/armory) +"qmY" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"qnd" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/hangar) "qnh" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -57629,6 +60411,14 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) +"qnA" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/item/tool/crowbar{ + pixel_x = 6; + pixel_y = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "qnC" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer{ @@ -57644,27 +60434,6 @@ icon_state = "test_floor4" }, /area/almayer/living/pilotbunks) -"qnP" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) -"qof" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 8; - id = "Warden Office Shutters"; - name = "\improper Privacy Shutters" - }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/main_office) "qom" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/chem_dispenser/soda{ @@ -57701,13 +60470,29 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"qoX" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 +"qoL" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/reagentgrinder/industrial{ + pixel_y = 8 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) +"qoN" = ( +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_f_p) +"qoR" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "qoY" = ( /obj/structure/machinery/vending/hydroseeds, /turf/open/floor/almayer{ @@ -57732,14 +60517,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/chemistry) -"qpU" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" +"qpV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; + pixel_y = 32 }, -/area/almayer/command/lifeboat) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "qqn" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -57748,22 +60535,10 @@ /turf/open/floor/wood/ship, /area/almayer/living/basketball) "qqr" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/weapon/gun/pistol/m4a3, -/obj/item/weapon/gun/pistol/m4a3, -/obj/item/weapon/gun/pistol/m4a3, -/obj/item/weapon/gun/pistol/m4a3, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, /obj/structure/machinery/light{ dir = 8 }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, /turf/open/floor/almayer{ icon_state = "redfull" }, @@ -57774,32 +60549,58 @@ icon_state = "redcorner" }, /area/almayer/command/lifeboat) +"qqC" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/plating, +/area/almayer/shipboard/brig/main_office) "qqK" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) -"qqN" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -26 +"qqQ" = ( +/obj/structure/machinery/cm_vending/sorted/medical/blood{ + density = 0; + pixel_y = 16 }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 }, -/area/almayer/shipboard/brig/main_office) -"qqQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + dir = 5; + icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"qqS" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) +"qqV" = ( +/obj/structure/machinery/cm_vending/clothing/military_police_warden, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/brig/chief_mp_office) +"qra" = ( +/obj/structure/reagent_dispensers/fueltank/custom, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "qrc" = ( /obj/structure/flora/pottedplant{ desc = "It is made of Fiberbush(tm). It contains asbestos. Studies say that greenery calms the mind due to some sort evolved mechanism in the brain. This plant is not calming."; @@ -57812,26 +60613,15 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"qre" = ( -/obj/structure/machinery/status_display{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "qrv" = ( /turf/open/floor/almayer{ icon_state = "silver" }, /area/almayer/command/computerlab) -"qsd" = ( -/obj/structure/largecrate/random, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) +"qsp" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "qsC" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/junction, @@ -57840,36 +60630,46 @@ icon_state = "plating_striped" }, /area/almayer/squads/req) -"qsF" = ( -/obj/structure/sign/safety/nonpress_0g{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) "qsL" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/engineering/ce_room) +"qtj" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/port) +"qtn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/port_hallway) "qtv" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/living/gym) -"qtR" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "plate" +"quj" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 }, -/area/almayer/command/lifeboat) -"qtS" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/general_equipment) "quq" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -57891,6 +60691,20 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/cryo_tubes) +"quy" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/lifeboat) "quI" = ( /obj/structure/machinery/door_control{ id = "laddersouthwest"; @@ -57910,18 +60724,26 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) +"quJ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/perma) +"quS" = ( +/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "quT" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + layer = 1.9 + }, /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ dir = 2; - id = "tc02"; id_tag = "tc02"; - name = "\improper Treatment Center"; - req_access = null; - req_one_access = null; - req_one_access_txt = "2;8;19" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - layer = 1.9 + name = "\improper Treatment Center" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -57940,14 +60762,6 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"qvf" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/cryo) "qvC" = ( /obj/structure/machinery/power/apc/almayer{ dir = 4 @@ -57960,6 +60774,21 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south2) +"qvL" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 2; + name = "\improper Weyland-Yutani Office" + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/office/door, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/corporateliaison) "qwo" = ( /obj/structure/machinery/washing_machine, /obj/structure/machinery/washing_machine{ @@ -57993,12 +60822,79 @@ icon_state = "plate" }, /area/almayer/living/offices) -"qxA" = ( -/obj/structure/closet/firecloset, +"qwJ" = ( +/obj/structure/machinery/door_control{ + id = "ARES Operations Left"; + name = "ARES Operations Shutter"; + pixel_x = -24; + pixel_y = -8; + req_one_access_txt = "90;91;92" + }, +/turf/open/floor/almayer/no_build{ + dir = 8; + icon_state = "silver" + }, +/area/almayer/command/airoom) +"qwY" = ( +/obj/structure/machinery/vending/coffee, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/upper/u_f_s) +"qxe" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "courtyard_cells"; + name = "\improper Courtyard Lockdown Shutter" + }, +/obj/structure/machinery/door/poddoor/almayer/locked{ + id = "Cell 3"; + name = "\improper Courtyard Divider" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/cells) +"qxm" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "W_Containment Cell 5"; + name = "\improper Containment Cell 5"; + unacidable = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/closed/wall/almayer/research/containment/wall/purple, +/area/almayer/medical/containment/cell) +"qxr" = ( +/obj/structure/machinery/cryopod/right{ + layer = 3.1; + pixel_y = 13 + }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/shipboard/brig/cryo) +"qxz" = ( +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + dir = 2; + name = "\improper Evacuation Airlock PU-5"; + req_access = null + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/powered) "qxC" = ( /obj/structure/machinery/door/airlock/almayer/generic{ id = "Alpha_1"; @@ -58025,6 +60921,15 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"qxI" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) +"qxJ" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "qxL" = ( /obj/structure/machinery/medical_pod/autodoc, /turf/open/floor/almayer{ @@ -58032,17 +60937,18 @@ }, /area/almayer/medical/lower_medical_medbay) "qxP" = ( -/obj/structure/bed/chair, -/obj/structure/machinery/firealarm{ - pixel_y = 28 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/turf/open/floor/wood/ship, -/area/almayer/medical/medical_science) -"qyd" = ( -/turf/open/floor/almayer{ - allow_construction = 0 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/area/almayer/shipboard/brig/perma) +/turf/open/floor/almayer/research/containment/corner_var1{ + dir = 4 + }, +/area/almayer/medical/containment/cell) "qyi" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -58067,20 +60973,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"qyz" = ( -/obj/structure/machinery/computer/cameras/containment/hidden{ - dir = 4; - pixel_x = -17 - }, -/obj/structure/surface/table/almayer, -/obj/item/storage/photo_album, -/obj/item/device/camera_film, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) "qyD" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/recharger, @@ -58103,13 +60995,20 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) +"qyG" = ( +/obj/structure/sign/safety/hazard{ + desc = "A sign that warns of a hazardous environment nearby"; + name = "\improper Warning: Hazardous Environment" + }, +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/l_f_p) "qyK" = ( -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "green" +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/area/almayer/living/grunt_rnr) +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "qyW" = ( /obj/structure/bed/chair{ dir = 4 @@ -58141,6 +61040,21 @@ icon_state = "plating" }, /area/almayer/shipboard/port_point_defense) +"qzA" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) +"qAs" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop) "qAA" = ( /obj/structure/machinery/power/monitor{ name = "Main Power Grid Monitoring" @@ -58152,6 +61066,101 @@ icon_state = "mono" }, /area/almayer/engineering/ce_room) +"qAB" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 5 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"qAG" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"qAK" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/ashtray/plastic, +/obj/item/trash/cigbutt{ + pixel_x = 4 + }, +/obj/item/trash/cigbutt{ + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"qAT" = ( +/obj/structure/machinery/light, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/reagentgrinder{ + pixel_y = 8 + }, +/obj/item/stack/sheet/mineral/phoron{ + amount = 25; + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/device/reagent_scanner{ + pixel_x = -16; + pixel_y = 5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) +"qBl" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"qBq" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 2; + name = "\improper Bathroom" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/commandbunks) +"qBM" = ( +/obj/item/storage/fancy/crayons{ + layer = 3.1; + pixel_x = -6; + pixel_y = 5 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "green" + }, +/area/almayer/living/grunt_rnr) +"qBS" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) "qCc" = ( /obj/structure/sign/safety/security{ pixel_x = 15; @@ -58162,29 +61171,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"qCg" = ( -/obj/structure/pipes/vents/pump, -/obj/structure/mirror{ - pixel_y = 32 - }, -/obj/structure/sink{ - pixel_y = 24 - }, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/almayer/engineering/upper_engineering/port) -"qCi" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = -28 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "qCo" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -58202,31 +61188,56 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) +"qCH" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Secretroom"; + indestructible = 1; + unacidable = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_m_s) +"qCU" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/sentencing{ + dir = 8; + pixel_y = 6 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = 32; + pixel_y = -22 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/shipboard/brig/perma) "qDq" = ( /obj/effect/landmark/start/marine/bravo, /obj/effect/landmark/late_join/bravo, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/bravo) -"qDv" = ( -/obj/structure/closet, -/obj/item/stack/sheet/glass/large_stack, -/obj/item/device/lightreplacer, -/obj/item/reagent_container/spray/cleaner, -/obj/item/stack/rods{ - amount = 40 - }, -/obj/item/tool/weldingtool, -/obj/item/clothing/glasses/welding, -/turf/open/floor/almayer{ - icon_state = "plate" +"qDt" = ( +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + dir = 2; + name = "\improper Lifeboat Control Bubble"; + req_access = null }, -/area/almayer/hull/lower_hull/l_f_s) -"qDz" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "test_floor4" }, /area/almayer/command/lifeboat) +"qDB" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_a_p) "qDN" = ( /obj/structure/machinery/light{ dir = 8 @@ -58245,6 +61256,15 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_four) +"qDS" = ( +/obj/item/stack/tile/carpet{ + amount = 20 + }, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "qEk" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -58259,8 +61279,19 @@ }, /area/almayer/command/cic) "qEn" = ( -/turf/closed/wall/almayer/research/containment/wall/corner, -/area/almayer/medical/containment/cell) +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/research{ + name = "\improper Research Hydroponics Workshop" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/hydroponics) "qEy" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -58268,16 +61299,42 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/processing) -"qEW" = ( -/obj/structure/sign/poster/ad{ - pixel_x = 30 +"qEA" = ( +/obj/structure/bed, +/obj/structure/machinery/flasher{ + id = "Cell 4"; + pixel_x = -24 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/cells) +"qEL" = ( +/obj/structure/surface/table/almayer, +/obj/structure/largecrate/random/case/small{ + pixel_y = 5 + }, +/obj/item/storage/firstaid/toxin{ + pixel_x = 8; + pixel_y = -2 }, -/obj/structure/closet, -/obj/item/clothing/mask/cigarette/weed, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/engineering/lower) +"qEZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/maint/hull/upper/u_a_s) "qFb" = ( /obj/structure/sign/safety/storage{ pixel_y = -32 @@ -58286,9 +61343,12 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) -"qFl" = ( -/turf/closed/wall/almayer/reinforced, -/area/almayer/hull/upper_hull/u_f_p) +"qFi" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/chief_mp_office) "qFu" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -58298,6 +61358,13 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/cells) +"qFE" = ( +/obj/structure/machinery/brig_cell/cell_5{ + pixel_x = 32; + pixel_y = -32 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/processing) "qFG" = ( /obj/structure/window/framed/almayer, /turf/open/floor/almayer{ @@ -58319,48 +61386,57 @@ icon_state = "bluefull" }, /area/almayer/squads/delta) -"qFQ" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) -"qFW" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = 32 +"qFS" = ( +/obj/structure/largecrate/random/barrel/yellow, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/l_a_s) "qGc" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "red" }, /area/almayer/squads/alpha_bravo_shared) +"qGf" = ( +/obj/structure/machinery/power/apc/almayer, +/obj/structure/sign/safety/rewire{ + pixel_y = -38 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/lobby) +"qGw" = ( +/obj/structure/reagent_dispensers/ammoniatank{ + anchored = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) +"qGC" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "qGF" = ( /obj/structure/machinery/optable, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_two) -"qHb" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "Saferoom Channel"; - pixel_y = -28 - }, +"qGU" = ( +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/lifeboat_pumps/south2) "qHg" = ( /turf/open/floor/almayer{ dir = 1; @@ -58381,31 +61457,23 @@ }, /area/almayer/hallways/starboard_hallway) "qHq" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/ashtray/bronze, -/obj/item/clothing/mask/cigarette/weed{ - desc = "What in the god damn?"; - name = "marijuana cigarette" - }, -/obj/item/trash/cigbutt{ - pixel_x = -10; - pixel_y = 13 +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + dir = 2; + name = "\improper Evacuation Airlock SU-6"; + req_access = null }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "test_floor4" }, -/area/almayer/lifeboat_pumps/south1) -"qHF" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/box/bodybags{ - pixel_x = 6; - pixel_y = 6 +/area/almayer/powered) +"qHG" = ( +/obj/structure/machinery/light/small{ + dir = 1 }, -/obj/item/storage/box/bodybags, /turf/open/floor/almayer{ - icon_state = "redcorner" + icon_state = "plate" }, -/area/almayer/shipboard/brig/execution) +/area/almayer/maint/hull/upper/p_stern) "qHM" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -58416,17 +61484,50 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) +"qIa" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"qIx" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + req_access_txt = "200"; + req_one_access = null + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/quarter/backdoor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/corporateliaison) +"qIL" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" + }, +/obj/item/folder/white{ + pixel_x = 6 + }, +/obj/item/storage/fancy/vials/empty{ + pixel_y = 10; + start_vials = 2 + }, +/obj/item/tool/pen{ + pixel_y = 8 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/medical_science) "qJf" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/weapon/gun/shotgun/combat, -/obj/item/ammo_magazine/shotgun, -/obj/item/ammo_magazine/shotgun, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/ammo_magazine/shotgun/buckshot, /obj/structure/machinery/light{ dir = 4 }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, /turf/open/floor/almayer{ icon_state = "redfull" }, @@ -58441,6 +61542,16 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"qJo" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/shipboard/brig/perma) "qJx" = ( /obj/structure/machinery/vending/cola, /turf/open/floor/almayer{ @@ -58448,15 +61559,19 @@ }, /area/almayer/engineering/upper_engineering/starboard) "qJy" = ( -/turf/closed/wall/almayer/white/reinforced, -/area/almayer/medical/hydroponics) -"qJF" = ( -/obj/structure/largecrate/supply, -/obj/item/tool/crowbar, +/obj/structure/pipes/vents/pump, +/obj/structure/sign/safety/storage{ + pixel_x = 33; + pixel_y = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "sterile_green" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/medical/hydroponics) "qJN" = ( /obj/structure/surface/rack, /obj/item/device/radio, @@ -58508,6 +61623,19 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) +"qKb" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/box/lights/tubes{ + pixel_x = -8 + }, +/obj/item/storage/box/lights/tubes{ + pixel_x = 5 + }, +/obj/item/storage/box/lights/tubes{ + pixel_y = 10 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "qKi" = ( /obj/effect/decal/warning_stripes{ icon_state = "E" @@ -58520,6 +61648,15 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) +"qKl" = ( +/obj/structure/sign/safety/intercom{ + pixel_x = 32; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "qKz" = ( /obj/structure/machinery/light/small, /turf/open/floor/almayer{ @@ -58527,13 +61664,15 @@ icon_state = "silver" }, /area/almayer/command/securestorage) -"qKF" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/device/radio/headset/almayer/mt, +"qKK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/l_a_p) "qKM" = ( /obj/structure/machinery/door_control{ id = "laddersouthwest"; @@ -58548,24 +61687,46 @@ icon_state = "greencorner" }, /area/almayer/hallways/port_hallway) +"qKY" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) +"qLg" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "qLi" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 }, -/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ - name = "\improper Hydroponics Laboratory" +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 }, +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "dark_sterile" }, -/area/almayer/medical/hydroponics) +/area/almayer/medical/containment) "qLj" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" }, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south1) +/turf/open/floor/almayer{ + icon_state = "blue" + }, +/area/almayer/hallways/aft_hallway) "qLo" = ( /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, @@ -58618,6 +61779,12 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) +"qLS" = ( +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom, +/turf/open/floor/almayer/no_build{ + dir = 4 + }, +/area/almayer/command/airoom) "qLV" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/disk_reader, @@ -58626,37 +61793,37 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"qMe" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/obj/item/tool/minihoe{ - pixel_x = -4; - pixel_y = -4 +"qLY" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 }, -/obj/item/reagent_container/glass/fertilizer/ez, -/obj/item/seeds/ambrosiavulgarisseed, -/obj/item/tool/plantspray/weeds, -/obj/structure/machinery/firealarm{ - pixel_y = 28 +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"qMD" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/box/flashbangs, +/obj/item/storage/box/flashbangs{ + pixel_x = 5; + pixel_y = 9 }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"qMf" = ( -/obj/structure/bed/chair, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/item/storage/box/flashbangs{ + pixel_x = -8; + pixel_y = 5 }, -/area/almayer/hull/upper_hull/u_a_p) -"qMu" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/upper_hull/u_a_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/armory) "qMP" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/box/pillbottles{ - pixel_y = 6 +/obj/structure/bed/chair/comfy{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/obj/item/reagent_container/glass/beaker/cryoxadone, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + dir = 4; + icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) "qMR" = ( @@ -58674,32 +61841,29 @@ icon_state = "cargo" }, /area/almayer/squads/delta) -"qNv" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/pen, -/obj/item/paper_bin/uscm{ - pixel_y = 7 +"qNI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/turf/open/floor/almayer{ - icon_state = "red" +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = -17 }, -/area/almayer/shipboard/brig/lobby) -"qNy" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) +"qNK" = ( /obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/sign/safety/high_voltage{ + pixel_x = 32; + pixel_y = 7 }, -/area/almayer/hull/lower_hull/l_m_p) -"qNG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/sign/safety/fire_haz{ + pixel_x = 32; + pixel_y = -8 }, -/obj/structure/sign/safety/autoopenclose{ - pixel_x = 8; - pixel_y = -32 +/turf/open/floor/almayer{ + icon_state = "cargo" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_f_s) "qNR" = ( /obj/structure/disposalpipe/junction, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -58734,19 +61898,20 @@ /obj/structure/disposalpipe/junction, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/gym) -"qOU" = ( -/obj/structure/machinery/door/airlock/almayer/maint, +"qOY" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_f_p) -"qPg" = ( -/obj/item/tool/warning_cone{ - pixel_x = -12; - pixel_y = 16 +/area/almayer/maint/hull/upper/u_f_p) +"qPn" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_a_s) "qPD" = ( /turf/open/floor/almayer, /area/almayer/shipboard/brig/perma) @@ -58775,6 +61940,15 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"qPX" = ( +/obj/structure/machinery/light, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/command/lifeboat) "qQc" = ( /obj/structure/closet/secure_closet/personal/patient{ name = "morgue closet" @@ -58792,31 +61966,32 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"qQM" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +"qQy" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) +"qQG" = ( +/obj/structure/largecrate/supply/floodlights, /turf/open/floor/almayer{ - icon_state = "sterile_green_side" + dir = 6; + icon_state = "red" }, -/area/almayer/shipboard/brig/surgery) -"qQP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/almayer/maint/hull/upper/u_a_p) +"qQS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 }, -/obj/structure/sign/safety/nonpress_ag{ - pixel_x = 15; - pixel_y = -32 +/obj/structure/machinery/light{ + dir = 8 }, -/obj/structure/sign/safety/west{ - pixel_y = -32 +/turf/open/floor/almayer/no_build{ + icon_state = "tcomms" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/command/airoom) "qRj" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -58833,39 +62008,28 @@ icon_state = "silvercorner" }, /area/almayer/shipboard/brig/cic_hallway) -"qRo" = ( -/obj/structure/pipes/vents/pump{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/general_equipment) -"qRT" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/execution) -"qSl" = ( +"qRr" = ( +/obj/structure/machinery/door/airlock/almayer/generic/corporate, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/structure/machinery/power/apc/almayer{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/quarter/door, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/general_equipment) +/area/almayer/command/corporateliaison) "qSm" = ( /obj/structure/pipes/vents/pump{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/shipboard/port_point_defense) +"qSw" = ( +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_m_p) "qSE" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/cholula, @@ -58884,6 +62048,24 @@ }, /turf/open/floor/plating, /area/almayer/living/port_emb) +"qSX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) +"qTQ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/chief_mp_office) "qTY" = ( /obj/structure/machinery/gibber, /turf/open/floor/plating/plating_catwalk, @@ -58894,14 +62076,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_umbilical) -"qUb" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/recharger, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/processing) "qUh" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = -17 @@ -58910,12 +62084,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"qUj" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "qUp" = ( /obj/structure/surface/table/almayer, /turf/open/shuttle/dropship{ @@ -58935,13 +62103,26 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie_delta_shared) -"qUH" = ( -/obj/item/storage/bag/plasticbag, -/obj/structure/surface/rack, +"qUx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) +"qUz" = ( +/obj/structure/machinery/light{ + dir = 8; + invisibility = 101 + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/shipboard/brig/processing) "qUL" = ( /obj/structure/machinery/landinglight/ds1/delaythree{ dir = 4 @@ -58953,20 +62134,39 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"qUZ" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/door_control{ + id = "MTline"; + name = "Next button"; + pixel_x = 5; + pixel_y = 10; + req_one_access_txt = "2;7" + }, +/obj/item/paper_bin/uscm, +/obj/item/tool/pen, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "qVC" = ( /obj/structure/surface/table/reinforced/almayer_B, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/living/captain_mess) +"qVE" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "qVF" = ( /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/shipboard/brig/execution) -"qVM" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/upper_hull/u_m_p) "qVS" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 2; @@ -58980,17 +62180,6 @@ icon_state = "test_floor4" }, /area/almayer/command/cichallway) -"qVU" = ( -/obj/structure/surface/rack, -/obj/item/tool/weldingtool, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "qWt" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -59010,17 +62199,70 @@ icon_state = "plate" }, /area/almayer/squads/delta) +"qWI" = ( +/obj/structure/machinery/status_display{ + pixel_y = -30 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north1) +"qWL" = ( +/obj/structure/prop/holidays/string_lights{ + pixel_y = 27 + }, +/obj/item/frame/rack, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"qWQ" = ( +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "qWR" = ( /turf/closed/wall/almayer/research/containment/wall/corner{ dir = 4 }, /area/almayer/medical/containment/cell/cl) -"qWT" = ( -/obj/effect/landmark/yautja_teleport, +"qWS" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/pill/happy{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/prop/helmetgarb/prescription_bottle{ + pixel_x = 9 + }, +/obj/item/tool/surgery/bonegel/empty{ + pixel_y = 15; + pixel_x = 4 + }, +/obj/item/tool/surgery/bonegel/empty{ + pixel_y = 13; + pixel_x = -8 + }, +/obj/item/tool/surgery/bonegel/empty{ + pixel_y = 19; + pixel_x = -5; + layer = 3.01 + }, +/obj/item/storage/box/gloves{ + layer = 3.2; + pixel_x = -5; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/lower_medical_medbay) +"qXk" = ( /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/engineering/lower/workshop) "qXo" = ( /obj/structure/machinery/seed_extractor, /obj/structure/machinery/light{ @@ -59031,25 +62273,53 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"qXx" = ( -/obj/structure/platform, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 +"qXp" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/device/flashlight/lamp{ + pixel_x = 15 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "bluefull" }, -/area/almayer/engineering/engine_core) -"qXM" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" +/area/almayer/living/briefing) +"qXE" = ( +/obj/structure/machinery/brig_cell/perma_1{ + pixel_x = 32 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/perma) +"qXO" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/food/snacks/mre_pack/xmas3{ + pixel_x = 5 + }, +/obj/item/reagent_container/food/snacks/mre_pack/xmas2{ + pixel_x = 5; + pixel_y = 9 + }, +/obj/effect/landmark/map_item{ + layer = 3.03; + pixel_x = -7; + pixel_y = 4 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/living/briefing) +"qXS" = ( +/obj/structure/stairs{ + icon_state = "ramptop" + }, +/obj/effect/projector{ + name = "Almayer_Down4"; + vector_x = 19; + vector_y = -104 + }, +/turf/open/floor/plating/almayer{ + allow_construction = 0 + }, +/area/almayer/hallways/upper/port) "qXZ" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -59066,6 +62336,20 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"qYo" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 6" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) +"qYq" = ( +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) "qYr" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Down3"; @@ -59091,30 +62375,26 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) -"qYG" = ( +"qYu" = ( +/obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, /area/almayer/command/lifeboat) -"qYH" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 8 - }, -/obj/structure/machinery/door/airlock/almayer/security/reinforced{ - name = "\improper Execution Equipment" +"qYC" = ( +/obj/structure/disposalpipe/down/almayer{ + dir = 4; + id = "almayerlink_OT_req" }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) +"qYG" = ( /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "mono" }, -/area/almayer/shipboard/brig/execution) +/area/almayer/command/lifeboat) "qYN" = ( /obj/structure/surface/table/almayer, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /obj/structure/machinery/light{ dir = 1 }, @@ -59137,10 +62417,6 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie_delta_shared) -"qYW" = ( -/obj/item/clothing/shoes/red, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "qYZ" = ( /obj/structure/sign/safety/security{ pixel_y = -32 @@ -59151,13 +62427,47 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"qZg" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +"qZy" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice2"; + pixel_x = 16; + pixel_y = 16 + }, +/obj/structure/largecrate/supply/supplies/flares, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"qZA" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /turf/open/floor/almayer{ dir = 8; - icon_state = "redcorner" + icon_state = "red" }, -/area/almayer/shipboard/brig/processing) +/area/almayer/shipboard/brig/chief_mp_office) +"qZF" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/cameras/almayer_network{ + dir = 8; + pixel_y = 6 + }, +/obj/structure/machinery/door_control{ + id = "perma_lockdown_1"; + name = "\improper Perma Cells Lockdown"; + pixel_x = -8; + pixel_y = -4; + req_access_txt = "3" + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/shipboard/brig/perma) "qZH" = ( /obj/structure/surface/table/almayer, /obj/item/paper{ @@ -59168,6 +62478,13 @@ icon_state = "greenfull" }, /area/almayer/living/offices) +"qZK" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "qZX" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -59176,27 +62493,12 @@ icon_state = "cargo" }, /area/almayer/squads/bravo) -"rag" = ( -/obj/structure/sign/safety/maint{ - pixel_x = -17 +"rae" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) -"rav" = ( -/obj/structure/platform{ - dir = 4 - }, -/obj/item/reagent_container/glass/rag, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/engine_core) "raK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -59209,20 +62511,47 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"rbp" = ( -/obj/structure/largecrate/random/case/small, +"raO" = ( +/obj/structure/bed/sofa/south/grey/right, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_p) -"rbv" = ( -/obj/structure/machinery/light/small{ - dir = 1 +/area/almayer/maint/hull/upper/u_f_p) +"rbi" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/box/ids{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/device/flash, +/obj/structure/machinery/light{ + dir = 8; + invisibility = 101 }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) +"rbp" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) +"rby" = ( +/obj/structure/machinery/door_control{ + id = "ARES Mainframe Left"; + name = "ARES Mainframe Lockdown"; + pixel_x = 24; + pixel_y = -24; + req_one_access_txt = "200;91;92" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/command/airoom) "rbB" = ( /turf/open/floor/almayer{ icon_state = "silvercorner" @@ -59249,6 +62578,18 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie) +"rbK" = ( +/obj/structure/bed/chair/wood/normal{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/shipboard/brig/execution) "rbX" = ( /obj/structure/sign/safety/manualopenclose{ pixel_x = 15; @@ -59283,14 +62624,13 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"rcH" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"rcG" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 }, -/area/almayer/hull/lower_hull/l_f_p) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "rcS" = ( /obj/structure/machinery/computer/cryopod/eng{ dir = 8 @@ -59311,19 +62651,25 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"rdr" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/box/lights/tubes{ - pixel_x = -8 +"rdt" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/obj/item/storage/box/lights/tubes{ - pixel_x = 5 +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/obj/item/storage/box/lights/tubes{ - pixel_y = 10 +/turf/open/floor/almayer/research/containment/corner4, +/area/almayer/medical/containment/cell) +"rdA" = ( +/obj/structure/sign/safety/maint{ + pixel_x = -17; + pixel_y = -34 }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/perma) "rdI" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/technology_scanner, @@ -59332,9 +62678,24 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"rdK" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_a_s) +"rdM" = ( +/obj/structure/machinery/vending/snack, +/obj/structure/machinery/status_display{ + pixel_x = 32 + }, +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/general_equipment) +"rdN" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "rdS" = ( /obj/structure/machinery/light{ dir = 8 @@ -59358,6 +62719,15 @@ icon_state = "blue" }, /area/almayer/hallways/port_hallway) +"rec" = ( +/obj/structure/bed/chair/comfy/bravo{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "ren" = ( /obj/structure/machinery/light{ dir = 4 @@ -59369,6 +62739,16 @@ icon_state = "plate" }, /area/almayer/living/gym) +"reH" = ( +/obj/structure/noticeboard{ + pixel_x = -10; + pixel_y = 31 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/squads/req) "reL" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/snacks/sliceable/bread{ @@ -59382,6 +62762,24 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) +"reM" = ( +/obj/structure/machinery/power/smes/buildable, +/obj/structure/sign/safety/hazard{ + pixel_x = 15; + pixel_y = -32 + }, +/obj/structure/sign/safety/high_voltage{ + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/maint/upper/mess) +"reN" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/cryo_cells) "rfa" = ( /obj/effect/landmark/start/marine/medic/alpha, /obj/effect/landmark/late_join/alpha, @@ -59395,17 +62793,11 @@ icon_state = "containment_window_h" }, /area/almayer/medical/containment/cell/cl) -"rfg" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_s) +"rfB" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "rfI" = ( /obj/structure/sign/safety/airlock{ pixel_y = -32 @@ -59418,70 +62810,126 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) -"rgn" = ( -/obj/structure/filingcabinet/disk, -/obj/structure/machinery/alarm/almayer{ +"rfT" = ( +/obj/item/frame/camera{ + desc = "The Staff Officer insisted he needed to monitor everyone at all times."; + layer = 2.9; + name = "broken camera"; + pixel_x = -7; + pixel_y = -6 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/port_emb) +"rfY" = ( +/obj/structure/machinery/cryopod, +/obj/structure/machinery/light{ + dir = 8; + invisibility = 101 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/shipboard/brig/cryo) +"rgk" = ( +/obj/structure/platform_decoration{ dir = 1 }, /turf/open/floor/almayer{ - icon_state = "sterile_green_corner" + icon_state = "plate" }, -/area/almayer/medical/hydroponics) +/area/almayer/maint/hull/upper/u_a_s) "rgy" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"rgA" = ( -/obj/structure/machinery/light/small{ +"rgK" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 8 + }, +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + layer = 3.5; + pixel_x = 5; + pixel_y = 14 + }, +/obj/item/attachable/bayonet{ + pixel_x = -14; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "silver" + }, +/area/almayer/living/auxiliary_officer_office) +"rgL" = ( +/turf/open/floor/plating, +/area/almayer/maint/upper/u_m_p) +"rgW" = ( +/turf/open/floor/almayer{ + icon_state = "emeraldcorner" + }, +/area/almayer/living/briefing) +"rhl" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) -"rgJ" = ( -/obj/structure/machinery/light, -/obj/structure/machinery/disposal, -/obj/item/bananapeel{ - desc = "An experimental B8 Smart-Scope. Based on the technologies used in the Smart Gun by ARMAT, this sight has integrated IFF systems. It can only attach to the L42A Battle Rifle, M44 Combat Revolver, and M46C Pulse Rifle. This one appears to be covered in gun oil"; - icon = 'icons/obj/items/weapons/guns/attachments.dmi'; - icon_state = "iffbarrel"; - name = "Broken B8 Smart-Scope"; - pixel_x = -1; - pixel_y = 11 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/obj/structure/disposalpipe/trunk{ - dir = 1 +/turf/open/floor/almayer{ + icon_state = "redcorner" + }, +/area/almayer/shipboard/brig/main_office) +"rhm" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 4 }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) +"rht" = ( +/obj/structure/machinery/vending/cola, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/living/port_emb) -"rgK" = ( -/obj/structure/pipes/vents/scrubber{ - dir = 8 +/area/almayer/maint/hull/upper/s_stern) +"rhy" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 + }, +/obj/structure/prop/server_equipment/laptop{ + pixel_x = -2; + pixel_y = 1 }, -/turf/open/floor/almayer, -/area/almayer/living/tankerbunks) -"rgW" = ( /turf/open/floor/almayer{ - icon_state = "emeraldcorner" + icon_state = "orangefull" }, /area/almayer/living/briefing) -"rhO" = ( -/obj/structure/machinery/disposal{ - density = 0; - desc = "A pneumatic delivery unit. Sends items to the requisitions."; - icon_state = "delivery_med"; - name = "Requisitions Delivery Unit"; - pixel_y = 28 +"rhD" = ( +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/disposalpipe/trunk{ - dir = 1 +/area/almayer/maint/hull/lower/l_a_p) +"rhO" = ( +/obj/structure/machinery/vending/cola/research{ + pixel_x = 4 }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + icon_state = "mono" }, /area/almayer/medical/medical_science) "rhQ" = ( @@ -59490,61 +62938,87 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/port_emb) -"rix" = ( -/obj/structure/largecrate/supply/ammo/m41a/half, -/obj/structure/largecrate/supply/ammo/pistol/half{ - pixel_y = 12 +"rib" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) -"riA" = ( +/area/almayer/shipboard/brig/perma) +"rir" = ( +/obj/structure/machinery/door/airlock/almayer/maint/reinforced, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/s_bow) +"riB" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) +"riC" = ( +/obj/structure/machinery/light{ + dir = 4 + }, /obj/effect/decal/warning_stripes{ - icon_state = "S" + icon_state = "N"; + pixel_y = 2 }, /obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 + icon_state = "SE-out"; + pixel_x = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, /turf/open/floor/almayer{ dir = 5; icon_state = "plating" }, -/area/almayer/engineering/engine_core) +/area/almayer/shipboard/panic) "riE" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_corner" + dir = 9; + icon_state = "sterile_green_side" }, -/area/almayer/medical/containment) +/area/almayer/medical/medical_science) "riJ" = ( /turf/open/floor/almayer{ dir = 5; icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"riM" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/structure/sign/safety/water{ - pixel_x = -17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "riP" = ( /obj/structure/machinery/light, +/obj/structure/sign/safety/rewire{ + pixel_y = -32 + }, /turf/open/floor/almayer{ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) -"riQ" = ( -/obj/item/device/multitool, -/obj/structure/platform_decoration, +"riT" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, /turf/open/floor/almayer{ dir = 5; icon_state = "plating" }, -/area/almayer/engineering/engine_core) +/area/almayer/shipboard/stern_point_defense) "rjn" = ( /obj/structure/machinery/light, /obj/structure/reagent_dispensers/water_cooler/stacks, @@ -59552,41 +63026,71 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"rjw" = ( -/obj/structure/machinery/light{ +"rjF" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) -"rjF" = ( -/obj/structure/surface/table/almayer, -/obj/item/cell/high{ - pixel_x = 8; - pixel_y = -2 +/obj/structure/bed/chair{ + dir = 8 }, -/obj/item/cell/high{ - pixel_x = 8; - pixel_y = 8 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/item/cell/high{ - pixel_x = -8; - pixel_y = 8 +/area/almayer/maint/hull/lower/l_f_s) +"rjG" = ( +/obj/structure/pipes/standard/tank/oxygen, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/item/cell/high{ - pixel_x = -8; - pixel_y = -2 +/area/almayer/engineering/upper_engineering/port) +"rjO" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "sterile_green_side" + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) +"rjV" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/cameras/wooden_tv/prop{ + dir = 8; + layer = 3.2; + pixel_x = -3; + pixel_y = 6 + }, +/obj/structure/sign/poster{ + desc = "YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE."; + icon_state = "poster11"; + name = "YOU ALWAYS KNOW A WORKING JOE."; + pixel_x = 27; + serial_number = 11 + }, +/obj/item/trash/pistachios{ + layer = 2; + pixel_x = 6; + pixel_y = -6 + }, +/obj/structure/machinery/recharger{ + layer = 3.1; + pixel_y = 22 + }, +/obj/item/ammo_magazine/rifle/incendiary{ + current_rounds = 0; + desc = "A 10mm assault rifle magazine with ':D' drawn on the side"; + pixel_x = 10; + pixel_y = 2 + }, +/obj/structure/machinery/light{ + dir = 4 }, -/area/almayer/medical/testlab) -"rjH" = ( -/obj/structure/surface/rack, -/obj/item/storage/beer_pack, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 6; + icon_state = "blue" }, -/area/almayer/command/corporateliason) +/area/almayer/living/port_emb) "rka" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, @@ -59599,52 +63103,18 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"rkh" = ( -/obj/structure/machinery/door/poddoor/almayer/locked{ - dir = 8; - id = "Perma 1L"; - name = "\improper cell shutter" - }, -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - name = "\improper Isolation Cell" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/perma) -"rku" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/tool/wrench{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/tool/wrench{ - pixel_x = 2; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "rkz" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer, /area/almayer/living/gym) -"rkK" = ( +"rlc" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk, /turf/open/floor/almayer{ - dir = 4; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/execution) -"rkL" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 2; - id = "Warden Office Shutters"; - name = "\improper Privacy Shutters" + dir = 8; + icon_state = "orange" }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/main_office) +/area/almayer/engineering/lower/engine_core) "rlf" = ( /obj/structure/machinery/cm_vending/clothing/synth/snowflake, /turf/open/floor/almayer{ @@ -59673,30 +63143,6 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"rlz" = ( -/obj/structure/filingcabinet{ - density = 0; - pixel_x = 8; - pixel_y = 18 - }, -/obj/structure/filingcabinet{ - density = 0; - pixel_x = -8; - pixel_y = 18 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) -"rlG" = ( -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "green" - }, -/area/almayer/hallways/starboard_hallway) "rlQ" = ( /turf/open/floor/almayer{ dir = 1; @@ -59708,6 +63154,26 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) +"rmc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) +"rmf" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/almayer{ + icon_state = "orangecorner" + }, +/area/almayer/engineering/upper_engineering/starboard) "rmv" = ( /obj/structure/machinery/door/airlock/almayer/security{ dir = 2; @@ -59720,25 +63186,60 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/main_office) +"rmx" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/recharger, +/obj/item/device/flash, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/general_equipment) "rmD" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"rmN" = ( +"rmE" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) +"rna" = ( +/turf/closed/wall/almayer/white, +/area/almayer/command/airoom) +"rnF" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 2; + name = "\improper Engineering Workshop" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"rne" = ( -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) -"rnM" = ( -/obj/structure/machinery/vending/cigarette, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/workshop) +"rnH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/computer/crew/alt{ + dir = 8; + pixel_x = 17 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/command/airoom) "rnN" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/sign/nosmoking_2{ @@ -59753,6 +63254,12 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/starboard) +"roj" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) "rou" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -59772,10 +63279,24 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) -"roU" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +"roH" = ( +/obj/effect/step_trigger/ares_alert/terminals, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "ARES Operations Left"; + name = "\improper ARES Operations Shutters" + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) +"roU" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) @@ -59800,6 +63321,23 @@ /obj/effect/landmark/start/executive, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/bridgebunks) +"rpF" = ( +/obj/structure/machinery/body_scanconsole{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "sterile_green_side" + }, +/area/almayer/shipboard/brig/surgery) +"rpG" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_s) "rpK" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -59809,18 +63347,6 @@ icon_state = "plate" }, /area/almayer/command/cichallway) -"rpW" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "rqb" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 32 @@ -59837,6 +63363,10 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) +"rqv" = ( +/obj/structure/sign/poster/safety, +/turf/closed/wall/almayer, +/area/almayer/maint/lower/s_bow) "rqw" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -59846,6 +63376,34 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) +"rqz" = ( +/obj/structure/sign/safety/autoopenclose{ + pixel_y = 32 + }, +/obj/structure/sign/safety/water{ + pixel_x = 15; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"rqD" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -14; + pixel_y = 13 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/mess) "rqE" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -59857,32 +63415,52 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"rra" = ( -/obj/structure/machinery/door/poddoor/almayer/locked{ - dir = 8; - id = "Perma 2L"; - name = "\improper cell shutter" +"rqS" = ( +/obj/structure/surface/table/almayer, +/obj/item/folder/red{ + pixel_x = -4 }, -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - name = "\improper Isolation Cell" +/obj/item/folder/blue{ + pixel_x = 4 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/shipboard/brig/evidence_storage) +"rrh" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Under Construction Shutters"; + name = "\improper Construction Site" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/perma) -"rri" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/area/almayer/maint/lower/constr) +"rrq" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/window/framed/almayer, -/turf/open/floor/plating, -/area/almayer/living/offices/flight) -"rrq" = ( +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "blue" + dir = 1; + icon_state = "red" }, -/area/almayer/squads/delta) +/area/almayer/squads/alpha) +"rrz" = ( +/obj/structure/sign/safety/four{ + pixel_x = -17 + }, +/obj/structure/machinery/door/window/brigdoor/southright{ + id = "Cell 4"; + name = "Cell 4" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) "rrB" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/reinforced{ name = "\improper Cryogenics Bay" @@ -59927,28 +63505,6 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) -"rsj" = ( -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice2"; - pixel_x = 16; - pixel_y = 16 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"rsx" = ( -/obj/structure/largecrate/random/barrel/red, -/obj/structure/sign/safety/high_voltage{ - pixel_x = 32; - pixel_y = 7 - }, -/obj/structure/sign/safety/fire_haz{ - pixel_x = 32; - pixel_y = -8 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/lower_hull/l_f_s) "rsK" = ( /obj/structure/sign/safety/hvac_old, /turf/closed/wall/almayer, @@ -59966,11 +63522,31 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer, /area/almayer/command/computerlab) -"rsW" = ( -/turf/open/floor/prison{ - icon_state = "kitchen" +"rsP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/area/almayer/engineering/upper_engineering/port) +/obj/structure/sign/safety/autoopenclose{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) +"rsS" = ( +/obj/structure/machinery/door_control{ + id = "panicroomback"; + name = "\improper Safe Room"; + pixel_x = -25; + req_one_access_txt = "3" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) +"rsV" = ( +/obj/structure/machinery/light, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "rtd" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -59983,7 +63559,7 @@ "rtj" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, /area/almayer/squads/req) "rtA" = ( @@ -60023,17 +63599,16 @@ }, /area/almayer/command/computerlab) "ruc" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/cameras/almayer, -/obj/structure/sign/safety/terminal{ - pixel_x = 8; - pixel_y = 32 +/obj/structure/machinery/camera/autoname/almayer/containment{ + dir = 4 }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/area/almayer/medical/containment) +/turf/open/floor/almayer/research/containment/floor2{ + dir = 8 + }, +/area/almayer/medical/containment/cell) "rui" = ( /obj/structure/disposalpipe/junction{ dir = 8 @@ -60043,6 +63618,22 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) +"rur" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/port_emb) "rux" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, @@ -60053,35 +63644,54 @@ }, /area/almayer/hallways/hangar) "ruz" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, /obj/structure/reagent_dispensers/watertank, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/hallways/hangar) -"ruV" = ( -/turf/closed/wall/almayer/research/containment/wall/divide, -/area/almayer/medical/containment/cell) -"rvo" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "orangecorner" - }, -/area/almayer/shipboard/brig/evidence_storage) +"ruL" = ( +/obj/structure/window/framed/almayer/hull/hijack_bustable, +/turf/open/floor/plating, +/area/almayer/engineering/lower/workshop/hangar) "rvA" = ( /turf/open/floor/almayer, /area/almayer/living/numbertwobunks) +"rvI" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" + }, +/obj/structure/largecrate/random, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) "rvT" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer{ - icon_state = "cargo_arrow" + icon_state = "emerald" }, /area/almayer/squads/charlie) +"rwe" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = -16 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) +"rwq" = ( +/obj/structure/sign/safety/cryo{ + pixel_x = 7; + pixel_y = -26 + }, +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) "rwv" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/bed/chair/comfy/bravo, @@ -60089,11 +63699,12 @@ icon_state = "orangefull" }, /area/almayer/living/briefing) -"rwS" = ( -/obj/structure/machinery/light/small, -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +"rwB" = ( +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower) "rwY" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -60105,19 +63716,26 @@ }, /turf/open/floor/plating, /area/almayer/living/pilotbunks) -"rxk" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 +"rwZ" = ( +/obj/structure/window/framed/almayer/hull, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_f_p) +"rxe" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = -32 +/area/almayer/maint/hull/lower/l_m_p) +"rxq" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_m_p) "rxG" = ( /obj/structure/sign/safety/medical{ pixel_x = 8; @@ -60149,70 +63767,75 @@ }, /area/almayer/medical/lower_medical_medbay) "ryG" = ( -/obj/structure/largecrate/random/case, -/obj/structure/machinery/light{ - dir = 1 - }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "mono" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/lifeboat_pumps/north1) "ryR" = ( -/obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep{ - req_access = list(1) - }, +/obj/structure/machinery/cm_vending/clothing/staff_officer_armory, /turf/open/floor/almayer{ icon_state = "redfull" }, /area/almayer/command/cic) -"rzj" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out" +"ryY" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/disposalpipe/down/almayer{ + dir = 1; + id = "almayerlink" }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ - name = "\improper Brig"; - req_access = null; - req_one_access_txt = "1;3" +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) +"rzk" = ( +/obj/item/tool/screwdriver, +/obj/structure/platform_decoration{ + dir = 8 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/main_office) -"rzM" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 + icon_state = "plate" }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/cic_hallway) +/area/almayer/maint/hull/upper/u_a_p) "rzN" = ( -/obj/structure/sign/safety/chem_lab{ - pixel_x = 31 +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/medical/containment) +"rzY" = ( +/obj/structure/machinery/firealarm{ + pixel_y = 28 }, /turf/open/floor/almayer{ - dir = 6; - icon_state = "sterile_green_side" + dir = 1; + icon_state = "red" }, -/area/almayer/medical/medical_science) +/area/almayer/shipboard/brig/main_office) "rAb" = ( /turf/open/floor/almayer{ icon_state = "bluecorner" }, /area/almayer/living/briefing) -"rAv" = ( -/obj/structure/toilet{ - dir = 8 +"rAo" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/light/small{ + dir = 4 }, -/obj/structure/machinery/door/window/tinted{ - dir = 8 +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"rAw" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = 8 }, -/area/almayer/shipboard/brig/cells) +/obj/structure/sign/safety/restrictedarea{ + pixel_x = 32; + pixel_y = -7 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/lower/l_f_s) "rAx" = ( /obj/structure/disposalpipe/junction{ dir = 4 @@ -60248,6 +63871,27 @@ icon_state = "cargo" }, /area/almayer/squads/alpha) +"rAP" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) +"rAX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "rBa" = ( /obj/structure/machinery/cm_vending/clothing/synth, /obj/structure/prop/invuln/overhead_pipe{ @@ -60281,6 +63925,12 @@ icon_state = "orange" }, /area/almayer/hallways/port_umbilical) +"rBv" = ( +/obj/structure/closet/toolcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "rBx" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/tool/stamp/ro{ @@ -60292,8 +63942,16 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) +"rBD" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/u_m_p) "rBH" = ( -/obj/structure/machinery/constructable_frame, +/obj/structure/machinery/constructable_frame{ + icon_state = "box_2" + }, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -60305,84 +63963,125 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"rCp" = ( -/obj/structure/largecrate/random/case/small, -/obj/structure/machinery/light/small{ - dir = 8 +"rCh" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) -"rCw" = ( -/obj/structure/window/reinforced, -/obj/structure/machinery/light{ +/area/almayer/maint/hull/lower/l_m_p) +"rCi" = ( +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ dir = 8 }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"rCl" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor/almayer{ - icon_state = "tcomms" + dir = 9; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) +"rCw" = ( +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresDown"; + vector_x = 97; + vector_y = -65 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/stairs{ + dir = 1 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, /area/almayer/command/airoom) +"rCD" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "rCK" = ( /obj/structure/machinery/cryopod/right, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/squads/req) -"rCL" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/processing) "rCO" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) "rCU" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 2; + id = "Warden Office Shutters"; + name = "\improper Privacy Shutters" + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + dir = 1; + name = "\improper Warden's Office"; + closeOtherId = "brigwarden" }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "silver" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/cic_hallway) -"rDd" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/machinery/computer/emails{ - dir = 1; - pixel_y = 2 +/area/almayer/shipboard/brig/chief_mp_office) +"rDb" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/port) "rDe" = ( /obj/structure/surface/table/almayer, -/obj/item/reagent_container/food/snacks/kepler_crisps{ +/obj/structure/sign/safety/cryo{ pixel_x = 8; - pixel_y = 4 + pixel_y = 33 }, /obj/item/toy/deck{ pixel_x = -4; - pixel_y = 1 + pixel_y = 10 }, -/obj/structure/sign/safety/cryo{ - pixel_x = 8; - pixel_y = 33 +/obj/item/reagent_container/food/drinks/cans/souto/diet/cherry{ + pixel_x = 9; + pixel_y = 12 + }, +/obj/item/ashtray/plastic{ + pixel_y = -4 + }, +/obj/item/trash/cigbutt{ + pixel_x = 1; + pixel_y = 5 }, /turf/open/floor/almayer{ dir = 6; icon_state = "green" }, /area/almayer/squads/req) -"rDi" = ( -/obj/structure/sign/safety/water{ - pixel_x = -17 +"rDr" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer{ + icon_state = "sterile_green" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/medical/medical_science) "rDt" = ( /obj/structure/disposalpipe/junction{ dir = 1 @@ -60405,6 +64104,65 @@ icon_state = "plate" }, /area/almayer/living/offices) +"rDy" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) +"rDB" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 13" + }, +/obj/structure/sign/safety/rad_haz{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) +"rDH" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"rDQ" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/cryo) +"rDR" = ( +/obj/structure/machinery/vending/coffee, +/obj/item/toy/bikehorn/rubberducky{ + desc = "You feel as though this rubber duck has been here for a long time. It's Mr. Quackers! He loves you!"; + name = "Quackers"; + pixel_x = 5; + pixel_y = 17 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"rDV" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/medical/medical_science) +"rDY" = ( +/obj/item/stack/sheet/glass/reinforced{ + amount = 50 + }, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/powercell, +/obj/structure/surface/rack, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/chief_mp_office) "rEf" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -60416,28 +64174,11 @@ /turf/open/floor/almayer, /area/almayer/living/briefing) "rEm" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/spacecash/c500{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/item/ashtray/bronze{ - pixel_x = -13; - pixel_y = -4 - }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) -"rEn" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/firstaid/adv{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/storage/firstaid/regular, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 }, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/almayer, +/area/almayer/engineering/lower) "rEr" = ( /obj/structure/prop/almayer/name_stencil{ icon_state = "almayer3" @@ -60446,6 +64187,17 @@ icon_state = "outerhull_dir" }, /area/space) +"rEs" = ( +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/maint/hull/upper/u_a_s) +"rEt" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/lower/l_f_s) "rEu" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -60465,20 +64217,60 @@ icon_state = "plate" }, /area/almayer/squads/delta) +"rEK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "rEL" = ( /obj/structure/machinery/cm_vending/gear/intelligence_officer, /turf/open/floor/almayer{ icon_state = "silverfull" }, /area/almayer/command/computerlab) +"rEO" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) +"rEQ" = ( +/obj/structure/machinery/iv_drip, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/shipboard/brig/surgery) "rEY" = ( -/obj/structure/surface/table/almayer, -/obj/item/toy/deck, +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, /turf/open/floor/almayer{ dir = 8; icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"rFg" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "Bathroom" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/chief_mp_office) "rFs" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/folder/black, @@ -60490,15 +64282,12 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"rFu" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, +"rFy" = ( /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + dir = 1; + icon_state = "orangecorner" }, -/area/almayer/engineering/engine_core) +/area/almayer/engineering/upper_engineering/starboard) "rFB" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm, /obj/effect/decal/warning_stripes{ @@ -60527,18 +64316,32 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) +"rGg" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "green" + }, +/area/almayer/hallways/port_hallway) "rGj" = ( /turf/open/floor/almayer{ icon_state = "red" }, /area/almayer/squads/alpha) -"rGl" = ( -/obj/structure/janitorialcart, -/obj/item/tool/mop, +"rGr" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) +"rGz" = ( +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/maint/hull/upper/u_m_s) "rGE" = ( /obj/structure/machinery/door/airlock/almayer/command{ name = "\improper Conference Room" @@ -60563,13 +64366,22 @@ icon_state = "test_floor4" }, /area/almayer/command/cichallway) -"rGR" = ( -/obj/structure/filingcabinet/filingcabinet, +"rGL" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + dir = 4; + icon_state = "orange" }, -/area/almayer/medical/medical_science) +/area/almayer/maint/upper/mess) +"rGU" = ( +/obj/structure/machinery/computer/skills{ + req_one_access_txt = "200" + }, +/obj/structure/surface/table/woodentable/fancy, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "rHc" = ( /turf/open/floor/carpet, /area/almayer/command/cichallway) @@ -60581,15 +64393,6 @@ }, /area/almayer/squads/alpha_bravo_shared) "rHo" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ - dir = 2; - id = "tc01"; - id_tag = "tc01"; - name = "\improper Treatment Center"; - req_access = null; - req_one_access = null; - req_one_access_txt = "2;8;19" - }, /obj/structure/machinery/door/firedoor/border_only/almayer{ layer = 1.9 }, @@ -60599,14 +64402,22 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ + dir = 2; + id_tag = "tc01"; + name = "\improper Treatment Center" + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/medical/lower_medical_medbay) -"rHs" = ( -/obj/item/storage/firstaid, +"rHq" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = -32 + }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/maint/hull/lower/l_m_s) "rHw" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -60618,6 +64429,17 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"rHB" = ( +/obj/item/ammo_box/magazine/misc/mre/empty{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/reagent_container/food/drinks/cans/aspen{ + pixel_x = 11; + pixel_y = -3 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_stern) "rHN" = ( /obj/structure/pipes/vents/pump/on, /turf/open/floor/plating/plating_catwalk, @@ -60650,12 +64472,27 @@ icon_state = "test_floor4" }, /area/almayer/medical/lower_medical_lobby) +"rIw" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/s_bow) "rID" = ( /turf/open/floor/almayer{ dir = 6; icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"rIE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "rIH" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -60663,17 +64500,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) -"rII" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 2; - id = "OuterShutter"; - name = "\improper Saferoom Shutters" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_s) "rIO" = ( /obj/structure/machinery/vending/snack, /obj/item/clothing/head/cmcap/boonie/tan{ @@ -60684,6 +64510,18 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"rIV" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "rIW" = ( /obj/structure/machinery/cm_vending/gear/synth, /obj/effect/decal/cleanable/cobweb2, @@ -60691,13 +64529,12 @@ icon_state = "cargo" }, /area/almayer/living/synthcloset) -"rJb" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 +"rJf" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/lower/l_a_p) "rJh" = ( /obj/item/storage/backpack/marine/satchel{ desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; @@ -60720,6 +64557,16 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"rJj" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) "rJu" = ( /turf/open/floor/almayer{ dir = 1; @@ -60746,6 +64593,47 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/living/briefing) +"rJN" = ( +/obj/structure/sign/safety/rewire{ + pixel_y = 32 + }, +/obj/item/bedsheet/brown{ + layer = 3.1 + }, +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/bedsheet/brown{ + pixel_y = 13 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) +"rJY" = ( +/obj/item/book/manual/medical_diagnostics_manual, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) "rKd" = ( /turf/open/floor/almayer/uscm/directional{ dir = 5 @@ -60764,14 +64652,6 @@ icon_state = "rasputin15" }, /area/almayer/powered/agent) -"rKs" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south1) "rKy" = ( /obj/structure/machinery/firealarm{ dir = 1; @@ -60779,6 +64659,17 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) +"rKA" = ( +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/item/bedsheet/brown{ + layer = 3.1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/auxiliary_officer_office) "rKO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -60799,56 +64690,137 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) +"rLp" = ( +/obj/structure/machinery/chem_dispenser/soda{ + pixel_y = 20 + }, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) "rLv" = ( /turf/closed/wall/almayer/research/containment/wall/purple{ dir = 4; icon_state = "containment_window_h" }, /area/almayer/medical/containment/cell/cl) -"rLF" = ( -/obj/structure/machinery/status_display{ - pixel_y = -30 +"rLH" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/binoculars{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/device/binoculars, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" }, /turf/open/floor/almayer{ - icon_state = "green" + icon_state = "plate" }, -/area/almayer/hallways/port_hallway) +/area/almayer/maint/hull/upper/u_f_p) +"rLK" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/sign/safety/hvac_old{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/cryo_cells) +"rLP" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/bed/chair/comfy/delta{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "rLU" = ( /turf/open/floor/almayer/research/containment/floor2{ dir = 8 }, /area/almayer/medical/containment/cell/cl) -"rNF" = ( -/obj/structure/sign/safety/fibre_optics{ - pixel_x = 32; +"rMO" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/lower/s_bow) +"rMT" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) +"rNa" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/paper_bin/uscm{ + pixel_x = -17; pixel_y = 7 }, -/obj/structure/sign/safety/terminal{ - pixel_x = 32; - pixel_y = -8 +/obj/item/tool/pen/clicky{ + pixel_x = -13; + pixel_y = -1 }, -/obj/effect/landmark/start/working_joe, -/turf/open/floor/almayer{ - icon_state = "ai_floors" +/obj/item/tool/pen/clicky{ + pixel_x = -13; + pixel_y = 5 }, -/area/almayer/command/airoom) -"rNW" = ( /obj/structure/machinery/door_control{ - id = "Secretroom"; - indestructible = 1; - layer = 2.5; - name = "Shutters"; - use_power = 0 + id = "CO-Office"; + name = "Door Control"; + normaldoorcontrol = 1; + pixel_y = 7; + req_access_txt = "31" }, -/obj/structure/prop/almayer/computers/sensor_computer1, -/obj/structure/sign/safety/water{ - pixel_x = 8; +/obj/item/ashtray/bronze{ + pixel_x = 12; + pixel_y = 1 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) +"rNb" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/mirror{ pixel_y = 32 }, +/obj/structure/sink{ + pixel_y = 24 + }, +/obj/structure/machinery/door_control{ + id = "Alpha_2"; + name = "Door Lock"; + normaldoorcontrol = 1; + pixel_x = 23; + specialfunctions = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "dark_sterile" + }, +/area/almayer/living/port_emb) +"rNF" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 }, -/area/almayer/hull/lower_hull/l_m_p) +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"rNK" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "rOc" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -60871,6 +64843,7 @@ /obj/structure/surface/table/reinforced/almayer_B, /obj/item/clipboard, /obj/item/device/binoculars, +/obj/item/storage/bible, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -60883,6 +64856,13 @@ icon_state = "plate" }, /area/almayer/command/cic) +"rOI" = ( +/obj/structure/pipes/vents/pump{ + dir = 8; + id_tag = "mining_outpost_pump" + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "rOJ" = ( /obj/structure/barricade/handrail, /obj/structure/disposalpipe/segment, @@ -60890,27 +64870,17 @@ icon_state = "plate" }, /area/almayer/living/gym) -"rPh" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/vending/cigarette{ - density = 0; - pixel_y = 16 +"rPq" = ( +/obj/structure/machinery/constructable_frame{ + icon_state = "box_2" }, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/cells) +/area/almayer/maint/hull/upper/p_stern) "rPt" = ( /turf/open/floor/wood/ship, /area/almayer/engineering/ce_room) -"rPC" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "rPE" = ( /obj/structure/bed/chair{ dir = 8; @@ -60926,53 +64896,65 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"rQj" = ( -/obj/structure/largecrate/random/barrel/yellow, +"rPQ" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + name = "\improper Engineering Hallway" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower) +"rQc" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/processing) +"rQs" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/maint/hull/lower/l_f_p) "rQt" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 }, -/obj/structure/disposalpipe/junction, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) -"rQy" = ( -/obj/structure/machinery/door_display/research_cell{ - dir = 8; - has_wall_divider = 1; - id = "Containment Cell 2"; - name = "Cell 2 Control"; - pixel_x = 14; - pixel_y = 8 +"rQw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 }, -/obj/structure/machinery/door_display/research_cell{ - dir = 8; - has_wall_divider = 1; - id = "Containment Cell 3"; - name = "Cell 3 Control"; - pixel_x = 14; - pixel_y = -10 +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 2 }, /turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_side" + dir = 5; + icon_state = "plating" }, -/area/almayer/medical/containment) +/area/almayer/shipboard/panic) +"rQy" = ( +/turf/closed/wall/almayer/white/reinforced, +/area/almayer/medical/hydroponics) "rQA" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "cargo_arrow" }, /area/almayer/squads/delta) -"rQU" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "rQV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -60990,30 +64972,44 @@ /area/almayer/squads/charlie) "rQW" = ( /obj/item/tool/screwdriver, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south1) -"rQY" = ( -/obj/structure/bed, -/obj/structure/machinery/flasher{ - id = "Cell 3"; - pixel_x = 24 +/obj/structure/machinery/light{ + dir = 1 }, /turf/open/floor/almayer{ - dir = 6; + dir = 5; icon_state = "red" }, -/area/almayer/shipboard/brig/cells) +/area/almayer/lifeboat_pumps/south1) +"rRb" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "rRq" = ( /turf/closed/wall/almayer, /area/almayer/lifeboat_pumps/south2) -"rRQ" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, +"rRr" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/surface/table/almayer, +/obj/item/toy/deck/uno, +/obj/item/toy/deck{ + pixel_x = -9 + }, /turf/open/floor/almayer{ - dir = 4; + dir = 1; icon_state = "red" }, /area/almayer/shipboard/brig/main_office) +"rRz" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) "rRU" = ( /obj/structure/machinery/light{ dir = 8 @@ -61052,14 +65048,18 @@ icon_state = "orangefull" }, /area/almayer/squads/alpha_bravo_shared) -"rSD" = ( +"rSx" = ( /obj/structure/surface/table/almayer, -/obj/item/paper_bin/wy, -/obj/item/tool/pen, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" +/obj/item/stack/rods/plasteel{ + amount = 36 }, -/area/almayer/medical/containment) +/obj/item/stack/catwalk{ + amount = 60; + pixel_x = 5; + pixel_y = 4 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "rSG" = ( /obj/structure/toilet{ pixel_y = 16 @@ -61074,69 +65074,35 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/port_emb) -"rSH" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 8 +"rSR" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/sign/safety/cryo{ + pixel_x = 36 }, -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/powercell, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/cryo_cells) +"rTe" = ( +/obj/structure/machinery/light{ + dir = 1 }, -/area/almayer/shipboard/brig/lobby) -"rSK" = ( -/obj/structure/machinery/light/small, +/obj/structure/janitorialcart, +/obj/item/tool/mop, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) -"rSW" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/living/port_emb) +/area/almayer/maint/upper/u_m_p) "rTk" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) -"rTt" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/chief_mp_office) -"rTB" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/lifeboat) -"rTV" = ( -/obj/structure/sign/safety/security{ - pixel_x = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"rTY" = ( -/obj/structure/transmitter{ - name = "Requisition Telephone"; - phone_category = "Almayer"; - phone_id = "Requisition"; - pixel_y = 30 - }, +"rTJ" = ( +/obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "plate" }, -/area/almayer/squads/req) +/area/almayer/engineering/upper_engineering/port) "rTZ" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 @@ -61152,59 +65118,88 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"rUi" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "rUk" = ( /obj/structure/bed/chair/wood/normal{ dir = 1 }, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) -"rUy" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 +"rUq" = ( +/obj/effect/landmark/start/nurse, +/obj/effect/landmark/late_join/nurse, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/offices) +"rUs" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ - icon_state = "silver" + icon_state = "test_floor4" }, -/area/almayer/command/computerlab) -"rUB" = ( -/obj/structure/pipes/vents/pump, -/obj/structure/mirror{ - pixel_y = 32 +/area/almayer/hallways/port_hallway) +"rUy" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 }, -/obj/item/tool/soap, -/obj/effect/decal/cleanable/blood, /turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/cells) -"rUU" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - req_access = null; - req_one_access = null + icon_state = "silver" }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "panicroomback"; - name = "\improper Safe Room Shutters" +/area/almayer/command/computerlab) +"rVc" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) -"rVo" = ( -/obj/structure/machinery/light/small{ - dir = 1 +/area/almayer/maint/hull/lower/l_f_p) +"rVm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" }, +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "redcorner" }, -/area/almayer/hull/lower_hull/l_a_s) +/area/almayer/shipboard/brig/main_office) "rVN" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "red" }, /area/almayer/shipboard/port_missiles) +"rWb" = ( +/obj/item/tool/minihoe{ + pixel_x = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"rWn" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + layer = 1.9 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "CMP Office Shutters"; + name = "\improper Privacy Shutters" + }, +/turf/open/floor/plating, +/area/almayer/shipboard/brig/chief_mp_office) "rWs" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -61212,6 +65207,19 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) +"rWz" = ( +/turf/open/floor/plating, +/area/almayer/maint/upper/u_m_s) +"rWF" = ( +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 21 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/shipboard/brig/chief_mp_office) "rWL" = ( /obj/structure/barricade/metal, /turf/open/floor/almayer{ @@ -61257,13 +65265,28 @@ icon_state = "test_floor4" }, /area/almayer/living/gym) -"rXC" = ( -/obj/structure/disposalpipe/junction, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 +"rXF" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/general_equipment) +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_p) +"rXH" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) +"rXQ" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) "rXS" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ @@ -61276,6 +65299,20 @@ icon_state = "test_floor4" }, /area/almayer/squads/delta) +"rXU" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/lower/l_f_s) +"rYh" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/workshop) "rYi" = ( /obj/structure/bed/chair, /obj/structure/machinery/power/apc/almayer{ @@ -61318,6 +65355,17 @@ icon_state = "plate" }, /area/almayer/living/offices/flight) +"rZz" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = -30 + }, +/turf/open/floor/almayer{ + icon_state = "green" + }, +/area/almayer/hallways/starboard_hallway) "rZB" = ( /obj/structure/pipes/standard/simple/visible{ dir = 9 @@ -61326,17 +65374,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) -"rZF" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/port_hallway) "rZP" = ( /obj/structure/surface/table/almayer, /obj/item/tool/weldpack, @@ -61345,33 +65382,19 @@ icon_state = "plate" }, /area/almayer/shipboard/starboard_point_defense) -"rZR" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/shipboard/brig/general_equipment) -"saB" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"saW" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 +"sab" = ( +/obj/effect/landmark/start/doctor, +/obj/effect/landmark/late_join/doctor, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/offices) +"saL" = ( +/obj/structure/machinery/door/airlock/almayer/generic/corporate{ + name = "Corporate Liaison's Closet" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/command/corporateliaison) "sbq" = ( /obj/structure/machinery/door/poddoor/almayer/locked{ icon_state = "almayer_pdoor"; @@ -61381,22 +65404,31 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/notunnel) -"sbM" = ( -/obj/structure/pipes/vents/scrubber{ - dir = 4 +"sbt" = ( +/obj/structure/machinery/door/airlock/almayer/security{ + dir = 2; + name = "\improper Security Checkpoint" }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "green" +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 2; + id = "safe_armory"; + name = "\improper Hangar Armory Shutters" }, -/area/almayer/squads/req) -"scg" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" + }, +/area/almayer/shipboard/panic) +"sbJ" = ( +/turf/closed/wall/almayer/white/hull, +/area/almayer/powered/agent) +"sbP" = ( +/obj/effect/landmark/start/police, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 }, -/area/almayer/hull/lower_hull/l_m_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cryo) "sco" = ( /obj/structure/sign/prop1{ layer = 3.1 @@ -61434,14 +65466,19 @@ icon_state = "outerhull_dir" }, /area/space) -"scD" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" +"scE" = ( +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/general_equipment) +/obj/structure/sign/safety/life_support{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "scH" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -61449,21 +65486,56 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) -"scI" = ( -/obj/structure/disposalpipe/segment{ +"scN" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/living/briefing) +"scS" = ( +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, +/obj/structure/machinery/light{ + dir = 8; + invisibility = 101; + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"scX" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/kitchen/tray, +/obj/item/reagent_container/food/drinks/bottle/whiskey, +/obj/item/toy/deck{ + pixel_x = -9 + }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) -"sdl" = ( -/obj/structure/machinery/telecomms/processor/preset_four, -/obj/structure/sign/safety/fibre_optics{ - pixel_x = 8; - pixel_y = 32 +/area/almayer/maint/hull/lower/l_m_s) +"sdf" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "tcomms" + icon_state = "red" }, +/area/almayer/hallways/upper/starboard) +"sdl" = ( +/obj/structure/surface/rack{ + density = 0; + pixel_y = 16 + }, +/obj/item/tool/wet_sign, +/obj/item/tool/wet_sign, +/obj/item/tool/wet_sign, +/turf/open/floor/plating, /area/almayer/command/airoom) "sdn" = ( /obj/structure/sink{ @@ -61477,34 +65549,23 @@ icon_state = "sterile" }, /area/almayer/medical/upper_medical) -"sdq" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21"; - layer = 3.1; - pixel_x = -8 - }, -/obj/structure/machinery/power/apc/almayer{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/shipboard/brig/chief_mp_office) "sdu" = ( /obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ dir = 9; icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"sdw" = ( -/obj/structure/machinery/door/airlock/almayer/maint, +"sdv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 9; + icon_state = "red" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/hallways/upper/starboard) "sdC" = ( /obj/structure/bed/chair{ dir = 4 @@ -61513,16 +65574,6 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"sdF" = ( -/obj/structure/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/processing) "sdO" = ( /obj/structure/ladder{ height = 1; @@ -61532,25 +65583,13 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"sed" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"seO" = ( -/obj/structure/sign/safety/terminal{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) -"sfU" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, +"sfT" = ( /turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) +/area/almayer/hallways/upper/port) +"sfV" = ( +/obj/structure/machinery/alarm/almayer, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop) "sgc" = ( /obj/structure/closet/crate/freezer/cooler{ pixel_x = -7 @@ -61589,6 +65628,48 @@ icon_state = "sterile_green" }, /area/almayer/medical/lockerroom) +"sgm" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/firealarm{ + pixel_y = 28 + }, +/obj/structure/prop/holidays/string_lights{ + dir = 8; + pixel_x = 29 + }, +/obj/item/reagent_container/food/condiment/hotsauce/cholula{ + pixel_x = 10; + pixel_y = 14 + }, +/obj/item/trash/USCMtray{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/reagent_container/food/snacks/hotdog{ + pixel_x = -7; + pixel_y = 5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"sgs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/press_area_ag{ + pixel_x = -17; + pixel_y = 7 + }, +/obj/structure/sign/safety/airlock{ + pixel_x = -17; + pixel_y = -8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "sgw" = ( /obj/structure/surface/table/almayer, /obj/item/prop/almayer/flight_recorder{ @@ -61602,22 +65683,25 @@ icon_state = "silver" }, /area/almayer/hallways/repair_bay) -"sgy" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 +"sgD" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "bluefull" + }, +/area/almayer/living/briefing) +"sgE" = ( +/obj/structure/bed, +/obj/structure/machinery/flasher{ + id = "Cell 3"; + pixel_x = -24 }, -/area/almayer/hull/lower_hull/l_f_s) -"sgM" = ( -/obj/structure/closet/toolcloset, /turf/open/floor/almayer{ - icon_state = "cargo" + dir = 8; + icon_state = "red" }, -/area/almayer/engineering/engine_core) +/area/almayer/shipboard/brig/cells) "sgR" = ( /obj/structure/surface/table/almayer, /obj/item/toy/deck{ @@ -61634,10 +65718,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) -"shb" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop) +"she" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "shh" = ( /obj/structure/machinery/autolathe, /turf/open/floor/almayer, @@ -61675,24 +65761,39 @@ }, /area/almayer/lifeboat_pumps/south2) "sht" = ( -/obj/structure/machinery/power/apc/almayer/hardened, +/turf/open/floor/almayer, +/area/almayer/living/pilotbunks) +"shL" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/toolbox/electrical, +/obj/item/storage/toolbox/electrical, +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, -/area/almayer/lifeboat_pumps/south2) -"shw" = ( -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"sip" = ( -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = -30 +/area/almayer/engineering/lower/engine_core) +"sir" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + req_access = null; + req_one_access = null + }, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "panicroomback"; + name = "\improper Safe Room Shutters" }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/maint/hull/lower/l_f_s) +"sit" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "siz" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/cameras/hangar{ @@ -61709,6 +65810,29 @@ icon_state = "redfull" }, /area/almayer/living/offices/flight) +"siN" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/pipes/standard/simple/visible{ + dir = 4 + }, +/obj/structure/machinery/computer/general_air_control/large_tank_control{ + name = "Lower Nitrogen Control Console" + }, +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) +"siT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "siW" = ( /obj/structure/machinery/body_scanconsole, /obj/structure/disposalpipe/segment{ @@ -61754,6 +65878,32 @@ icon_state = "test_floor4" }, /area/almayer/command/lifeboat) +"sjw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "silver" + }, +/area/almayer/maint/hull/upper/u_m_p) +"sjz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) +"skj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/processing) "skl" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -61767,11 +65917,52 @@ icon_state = "plating_striped" }, /area/almayer/shipboard/sea_office) +"skq" = ( +/obj/structure/machinery/cm_vending/sorted/medical, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/shipboard/brig/surgery) +"skC" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 6 + }, +/obj/structure/machinery/meter, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "skF" = ( /turf/open/floor/almayer{ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie_delta_shared) +"skL" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/workshop) +"skR" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_10" + }, +/obj/structure/closet/secure_closet/cmdcabinet{ + desc = "A bulletproof cabinet containing communications equipment."; + name = "communications cabinet"; + pixel_y = 24; + req_access = null; + req_one_access_txt = "207;203" + }, +/obj/item/device/radio, +/obj/item/device/radio/listening_bug/radio_linked/wy, +/obj/item/device/radio/listening_bug/radio_linked/wy{ + pixel_x = 4; + pixel_y = -3 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "sld" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -61783,20 +65974,19 @@ icon_state = "sterile_green" }, /area/almayer/medical/lower_medical_lobby) -"slP" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" - }, -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 8 - }, -/obj/structure/sign/safety/restrictedarea{ +"slf" = ( +/obj/structure/machinery/brig_cell/cell_6{ pixel_x = 32; - pixel_y = -7 + pixel_y = -32 }, /turf/open/floor/almayer, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/shipboard/brig/processing) +"slF" = ( +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) "smi" = ( /turf/open/floor/almayer{ icon_state = "green" @@ -61808,93 +65998,206 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"smr" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engineering_workshop) -"snb" = ( -/obj/structure/ladder{ - height = 1; - id = "cicladder3" +"smw" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/med_data/laptop{ + dir = 8 }, -/turf/open/floor/plating/almayer, -/area/almayer/living/briefing) -"sni" = ( -/turf/open/floor/almayer{ - dir = 9; - icon_state = "orange" +/obj/item/device/flashlight/lamp{ + pixel_x = -5; + pixel_y = 16 }, -/area/almayer/command/cic) -"snm" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/sign/safety/terminal{ + pixel_x = 8; + pixel_y = -32 }, -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/machinery/light/small{ dir = 4 }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "blue" + icon_state = "plate" }, -/area/almayer/hallways/aft_hallway) -"snw" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 +/area/almayer/maint/hull/upper/u_a_s) +"smA" = ( +/obj/item/trash/cigbutt{ + pixel_x = -10; + pixel_y = 13 }, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice10"; + pixel_x = -16; + pixel_y = 16 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/squads/req) -"snE" = ( -/obj/structure/machinery/cryopod/right, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 +/area/almayer/maint/hull/lower/l_m_s) +"smH" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + dir = 1; + req_access = null; + req_one_access = null; + req_one_access_txt = "3;22;19" }, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_f_s) +"smU" = ( +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/panic) +"smW" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/area/almayer/engineering/upper_engineering/port) -"snM" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/structure/disposalpipe/junction{ +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"smZ" = ( +/obj/structure/window/framed/almayer/hull/hijack_bustable, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Warden Office Shutters"; + name = "\improper Privacy Shutters" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 8 + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "courtyard_cells"; + name = "\improper Courtyard Lockdown Shutter" + }, +/turf/open/floor/plating, +/area/almayer/shipboard/brig/chief_mp_office) +"snb" = ( +/obj/structure/ladder{ + height = 1; + id = "cicladder3" + }, +/turf/open/floor/plating/almayer, +/area/almayer/living/briefing) +"sni" = ( +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/almayer/command/cic) +"snm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ dir = 8; - icon_state = "pipe-j2" + icon_state = "blue" + }, +/area/almayer/hallways/aft_hallway) +"snt" = ( +/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) +"snw" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/squads/req) +"snx" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) +"snE" = ( +/obj/structure/machinery/cryopod/right, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/upper_engineering/port) +"snI" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/overwatch/almayer{ + dir = 8; + layer = 3.2; + pixel_x = -17; + pixel_y = -17 + }, +/obj/structure/transmitter/rotary/no_dnd{ + name = "Delta Overwatch Telephone"; + phone_category = "Command"; + phone_id = "Delta Overwatch" + }, +/obj/structure/sign/safety/terminal{ + pixel_x = -17; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/cic) +"snM" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 }, /turf/open/floor/almayer{ dir = 8; icon_state = "green" }, /area/almayer/squads/req) +"snN" = ( +/obj/structure/curtain/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "snR" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer{ icon_state = "blue" }, /area/almayer/squads/delta) -"soa" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1; - name = "Bathroom" +"snX" = ( +/obj/structure/sign/safety/medical{ + pixel_x = 16; + pixel_y = 27 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 9; + icon_state = "red" }, -/area/almayer/shipboard/brig/cells) +/area/almayer/shipboard/brig/processing) "soq" = ( +/obj/structure/machinery/computer/working_joe{ + dir = 4; + pixel_x = -17 + }, /turf/open/floor/almayer{ icon_state = "cargo" }, @@ -61914,28 +66217,24 @@ allow_construction = 0 }, /area/almayer/hallways/port_hallway) -"sow" = ( -/obj/structure/machinery/light/small{ - dir = 8 +"sou" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, +/turf/open/floor/almayer, +/area/almayer/hallways/starboard_hallway) +"sov" = ( /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "orange" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/engineering/lower/engine_core) "soA" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/living/gym) -"soD" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/effect/landmark/crap_item, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "soK" = ( /obj/item/storage/firstaid/fire/empty, /obj/item/storage/firstaid/o2/empty, @@ -61951,39 +66250,34 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/port) -"soQ" = ( -/obj/structure/largecrate/random/barrel/red, -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"soS" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 +"soT" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 2 +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice1"; + pixel_x = 16; + pixel_y = -8 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_m_p) "soX" = ( /obj/structure/window/reinforced/toughened, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/command/cic) -"soZ" = ( -/obj/structure/largecrate/random/case/double, +"spd" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = 32 + }, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/upper/u_a_p) "spF" = ( /obj/structure/surface/table/almayer, /obj/structure/flora/pottedplant{ @@ -61992,6 +66286,23 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"spH" = ( +/obj/structure/pipes/standard/simple/hidden/universal{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) +"spK" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 1 + }, +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "spS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -62002,17 +66313,26 @@ }, /area/almayer/squads/charlie) "spT" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/machinery/light{ - dir = 8 +/obj/structure/closet/crate{ + desc = "One of those old special operations crates from back in the day. After a leaked report from a meeting of SOF leadership lambasted the crates as 'waste of operational funds' the crates were removed from service."; + name = "special operations crate" }, +/obj/item/clothing/mask/gas/swat, +/obj/item/clothing/mask/gas/swat, +/obj/item/clothing/mask/gas/swat, +/obj/item/clothing/mask/gas/swat, +/obj/item/attachable/suppressor, +/obj/item/attachable/suppressor, +/obj/item/attachable/suppressor, +/obj/item/attachable/suppressor, +/obj/item/explosive/grenade/smokebomb, +/obj/item/explosive/grenade/smokebomb, +/obj/item/explosive/grenade/smokebomb, +/obj/item/explosive/grenade/smokebomb, /turf/open/floor/almayer{ - dir = 5; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/maint/hull/lower/l_m_s) "sqa" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -62026,6 +66346,17 @@ "sqf" = ( /turf/closed/wall/almayer/white/reinforced, /area/almayer/medical/upper_medical) +"sqg" = ( +/turf/closed/wall/almayer, +/area/almayer/engineering/lower) +"sql" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/perma) "sqo" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -62037,6 +66368,16 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) +"sqP" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) "sqW" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/item/seeds/tomatoseed, @@ -62045,30 +66386,27 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) -"srV" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/obj/structure/surface/table/almayer, -/obj/item/toy/deck{ - pixel_x = 8; - pixel_y = 8 +"srl" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/item/paper_bin/uscm{ - pixel_x = -6; - pixel_y = 7 +/area/almayer/maint/hull/lower/l_a_p) +"srO" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/mess) +"srT" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 8 }, -/obj/item/tool/pen{ - pixel_x = -6 +/obj/structure/machinery/door/airlock/almayer/security/glass{ + name = "Evidence Room" }, -/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - dir = 4; - icon_state = "red" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/shipboard/brig/evidence_storage) "ssa" = ( /obj/structure/machinery/door/poddoor/almayer/open{ id = "Hangar Lockdown"; @@ -62083,6 +66421,28 @@ icon_state = "test_floor4" }, /area/almayer/hallways/repair_bay) +"ssk" = ( +/obj/structure/surface/rack, +/obj/item/storage/backpack/marine/satchel{ + desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; + icon = 'icons/obj/janitor.dmi'; + icon_state = "trashbag3"; + name = "trash bag"; + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/storage/backpack/marine/satchel{ + desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; + icon = 'icons/obj/janitor.dmi'; + icon_state = "trashbag3"; + name = "trash bag"; + pixel_x = 3; + pixel_y = -2 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "ssD" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -62105,18 +66465,27 @@ icon_state = "greencorner" }, /area/almayer/hallways/port_hallway) +"ssU" = ( +/obj/structure/machinery/constructable_frame, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "ssW" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/ammo_magazine/shotgun/buckshot, -/obj/item/weapon/gun/shotgun/combat, /obj/structure/machinery/light{ dir = 1 }, -/obj/item/ammo_magazine/shotgun/buckshot, +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun, /turf/open/floor/almayer{ icon_state = "redfull" }, /area/almayer/command/cic) +"ssX" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/lifeboat) "ssZ" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, @@ -62127,11 +66496,6 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/shipboard/navigation) -"sti" = ( -/obj/structure/closet/crate/trashcart, -/obj/effect/spawner/random/balaclavas, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "str" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Down3"; @@ -62145,6 +66509,35 @@ allow_construction = 0 }, /area/almayer/stair_clone/upper) +"stu" = ( +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) +"stA" = ( +/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"stO" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/faxmachine/uscm/brig, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/perma) +"stP" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "stY" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -62159,48 +66552,92 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) -"suk" = ( -/obj/item/tool/weldingtool, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) +"suc" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ + dir = 2; + name = "\improper Brig Armoury"; + req_access = null; + req_one_access_txt = "1;3"; + closeOtherId = "brignorth" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/main_office) "suy" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 }, /turf/open/floor/almayer, /area/almayer/command/computerlab) -"suT" = ( -/obj/structure/disposalpipe/segment{ +"suJ" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Core Hatch" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = 32 +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/engineering/lower/engine_core) "suV" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"svd" = ( -/obj/structure/machinery/recharge_station, +"suY" = ( +/obj/structure/platform_decoration, /turf/open/floor/almayer{ - icon_state = "cargo" + dir = 5; + icon_state = "plating" }, -/area/almayer/engineering/engine_core) +/area/almayer/engineering/lower/engine_core) "svf" = ( /obj/structure/machinery/light{ dir = 1 }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"svp" = ( -/obj/structure/closet/emcloset, +"svl" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/command/lifeboat) +"svF" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/effect/landmark/yautja_teleport, +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"svV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "swn" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -62208,16 +66645,6 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/surgery) -"swo" = ( -/obj/structure/machinery/vending/security, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "swt" = ( /turf/open/floor/almayer{ icon_state = "greencorner" @@ -62233,6 +66660,12 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"swG" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "swH" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/radio/intercom{ @@ -62268,15 +66701,6 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering) -"sxe" = ( -/obj/structure/prop/invuln/lattice_prop{ - dir = 1; - icon_state = "lattice-simple"; - pixel_x = 16; - pixel_y = -16 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "sxu" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -62298,9 +66722,37 @@ name = "\improper Officer's Bunk" }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, /area/almayer/living/bridgebunks) +"sxE" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/sign/safety/escapepod{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) +"sxS" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) +"sxW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "silver" + }, +/area/almayer/command/cichallway) "syH" = ( /obj/structure/machinery/firealarm{ pixel_y = -28 @@ -62310,32 +66762,27 @@ }, /turf/open/floor/almayer, /area/almayer/squads/delta) -"syM" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"szm" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 10" +"syP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/obj/structure/machinery/light{ - dir = 8 +/turf/open/floor/almayer, +/area/almayer/hallways/port_hallway) +"szf" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/structure/coatrack{ + pixel_x = -5; + pixel_y = 1 }, -/area/almayer/engineering/engine_core) -"szy" = ( /obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" + dir = 5 }, -/area/almayer/shipboard/brig/main_office) +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "szE" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -62359,11 +66806,26 @@ }, /area/almayer/squads/charlie) "szO" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_guns/pilot_officer, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/living/pilotbunks) +"szR" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/main_office) +"szU" = ( +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/numbertwobunks) "sAc" = ( /obj/structure/bed/chair{ dir = 8; @@ -62373,63 +66835,30 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"sAm" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" +"sAz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/area/almayer/hull/lower_hull/l_f_s) -"sAA" = ( -/obj/structure/machinery/light{ - dir = 1 +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/hallways/upper/starboard) "sAC" = ( /turf/open/floor/almayer{ icon_state = "orange" }, /area/almayer/engineering/ce_room) -"sBp" = ( -/obj/structure/sign/safety/escapepod{ - pixel_x = -17; - pixel_y = -8 - }, -/obj/structure/sign/safety/stairs{ - pixel_x = -17; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/hallways/starboard_hallway) -"sBF" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, +"sAS" = ( /obj/structure/disposalpipe/segment, -/obj/structure/machinery/door/airlock/almayer/command/reinforced{ - dir = 1; - id_tag = "CO-Office"; - name = "\improper Commanding Officer's Office"; - req_access = null; - req_access_txt = "31" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/commandbunks) -"sBH" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) +"sBg" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 }, -/obj/structure/machinery/status_display{ - pixel_x = 32 - }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/execution) +/area/almayer/shipboard/brig/general_equipment) "sBL" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/structure/machinery/light, @@ -62437,11 +66866,19 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"sCA" = ( -/obj/structure/bed/chair/comfy/delta{ - dir = 4 - }, -/turf/open/floor/almayer{ +"sBY" = ( +/obj/item/tool/wet_sign, +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"sCA" = ( +/obj/structure/bed/chair/comfy/delta{ + dir = 4 + }, +/turf/open/floor/almayer{ icon_state = "bluefull" }, /area/almayer/living/briefing) @@ -62463,7 +66900,10 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "blue" + }, /area/almayer/living/pilotbunks) "sCQ" = ( /obj/structure/machinery/light, @@ -62471,18 +66911,45 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"sCT" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/lower/l_f_s) +"sCV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) +"sCW" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/structure/surface/table/almayer, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "sDu" = ( /obj/item/clothing/under/marine/dress, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) -"sDy" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 +"sDA" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/bed/chair/comfy/charlie{ + dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "sDC" = ( /obj/structure/sign/safety/analysis_lab{ pixel_y = 26 @@ -62492,60 +66959,34 @@ pixel_y = 26 }, /turf/open/floor/almayer{ - dir = 4; - icon_state = "silvercorner" + dir = 1; + icon_state = "silver" }, /area/almayer/hallways/aft_hallway) -"sDL" = ( -/obj/structure/closet/cabinet, -/obj/item/clothing/under/liaison_suit/formal, -/obj/item/clothing/under/liaison_suit, -/obj/item/clothing/under/liaison_suit/outing, -/obj/item/clothing/under/liaison_suit/suspenders, -/obj/item/clothing/under/blackskirt{ - desc = "A stylish skirt, in a business-black and red colour scheme."; - name = "liaison's skirt" - }, -/obj/item/clothing/under/suit_jacket/charcoal{ - desc = "A professional black suit and blue tie. A combination popular among government agents and corporate Yes-Men alike."; - name = "liaison's black suit" - }, -/obj/item/clothing/under/suit_jacket/navy{ - desc = "A navy suit and red tie, intended for the Almayer's finest. And accountants."; - name = "liaison's navy suit" - }, -/obj/item/clothing/under/suit_jacket/trainee, -/obj/item/clothing/gloves/black, -/obj/item/clothing/gloves/marine/dress, -/obj/item/clothing/glasses/sunglasses/big, -/obj/item/clothing/accessory/blue, -/obj/item/clothing/accessory/red, -/obj/item/clothing/shoes/dress, -/obj/structure/machinery/status_display{ - pixel_x = -32 +"sDD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/area/almayer/shipboard/port_missiles) "sDM" = ( /turf/open/floor/almayer{ dir = 9; icon_state = "blue" }, /area/almayer/squads/delta) -"sDQ" = ( -/obj/structure/machinery/light{ - dir = 8 +"sDV" = ( +/obj/structure/machinery/firealarm{ + pixel_y = -28 }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "emeraldcorner" +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/area/almayer/hallways/port_hallway) -"sEa" = ( /turf/open/floor/almayer{ - icon_state = "redcorner" + icon_state = "red" }, -/area/almayer/shipboard/brig/chief_mp_office) +/area/almayer/shipboard/brig/main_office) "sEd" = ( /obj/structure/machinery/cryopod/right, /obj/structure/machinery/light{ @@ -62555,6 +66996,15 @@ icon_state = "cargo" }, /area/almayer/squads/bravo) +"sEg" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "sEi" = ( /obj/structure/bed/chair{ can_buckle = 0; @@ -62608,6 +67058,21 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) +"sEu" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"sEK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "tcomms" + }, +/area/almayer/command/airoom) "sEM" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/radio/intercom{ @@ -62627,11 +67092,43 @@ icon_state = "plate" }, /area/almayer/command/cic) +"sER" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) +"sEZ" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = 26 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -2 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/armory) "sFf" = ( /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/shipboard/starboard_missiles) +"sFh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/port_hallway) "sFC" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -62641,43 +67138,15 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/main_office) -"sFF" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/obj/item/stack/tile/carpet{ - amount = 20 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"sFR" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) -"sFZ" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"sGe" = ( -/obj/structure/ladder{ - height = 2; - id = "ForePortMaint" - }, -/obj/structure/sign/safety/ladder{ - pixel_x = -17 - }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/upper_hull/u_f_p) "sGh" = ( /turf/open/floor/almayer/uscm/directional, /area/almayer/command/lifeboat) +"sGw" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/l_f_s) +"sGK" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/p_bow) "sGL" = ( /obj/structure/machinery/cryopod/right{ layer = 3.1; @@ -62694,32 +67163,32 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/port) +"sGQ" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/s_bow) "sGU" = ( /obj/structure/mirror, /turf/closed/wall/almayer, /area/almayer/living/gym) -"sHg" = ( -/obj/structure/surface/rack, -/obj/item/storage/backpack/marine/satchel{ - desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; - icon = 'icons/obj/janitor.dmi'; - icon_state = "trashbag3"; - name = "trash bag"; - pixel_x = -4; - pixel_y = 6 - }, -/obj/item/storage/backpack/marine/satchel{ - desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; - icon = 'icons/obj/janitor.dmi'; - icon_state = "trashbag3"; - name = "trash bag"; - pixel_x = 3; - pixel_y = -2 - }, +"sGZ" = ( +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "silverfull" + }, +/area/almayer/command/airoom) +"sHe" = ( +/obj/structure/largecrate/supply/supplies/tables_racks, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"sHm" = ( +/obj/structure/disposalpipe/up/almayer{ + id = "almayerlink_OT_req" }, -/area/almayer/hull/lower_hull/l_m_p) +/turf/closed/wall/almayer, +/area/almayer/engineering/lower/workshop/hangar) "sHo" = ( /obj/structure/pipes/unary/outlet_injector{ dir = 8; @@ -62732,22 +67201,26 @@ /turf/open/floor/engine, /area/almayer/engineering/airmix) "sHp" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer, -/area/almayer/hallways/aft_hallway) -"sHM" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/bed/chair{ - dir = 1 +/obj/effect/decal/cleanable/dirt, +/obj/structure/largecrate/random/case/small, +/obj/structure/sign/safety/maint{ + pixel_x = 32 }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north1) +"sHx" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer{ dir = 8; - icon_state = "red" + icon_state = "orange" }, -/area/almayer/shipboard/starboard_missiles) +/area/almayer/engineering/lower/workshop) +"sHM" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/pilotbunks) "sHY" = ( /obj/structure/sign/poster{ pixel_y = -32 @@ -62757,28 +67230,28 @@ }, /area/almayer/squads/alpha) "sIf" = ( -/obj/structure/machinery/door/window/southleft{ - req_access_txt = "19" +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresDown"; + vector_x = 97; + vector_y = -65 }, -/turf/open/floor/almayer{ - icon_state = "tcomms" +/obj/structure/stairs{ + dir = 1 }, -/area/almayer/command/airoom) -"sIk" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, -/area/almayer/hull/upper_hull/u_f_p) -"sIw" = ( -/turf/open/floor/almayer{ - icon_state = "redfull" +/area/almayer/command/airoom) +"sIr" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/area/almayer/shipboard/brig/evidence_storage) -"sIx" = ( -/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/engine_core) +"sIu" = ( +/obj/structure/machinery/light/small, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/lower/p_bow) "sIA" = ( /obj/structure/sign/poster{ desc = "This poster features Audrey Rainwater standing in a jacuzzi. She was the July 2182 centerfold in House Bunny Gentleman's Magazine. Don't ask how you know that."; @@ -62797,53 +67270,59 @@ icon_state = "silver" }, /area/almayer/engineering/port_atmos) -"sIT" = ( -/turf/closed/wall/almayer/reinforced, -/area/almayer/hull/lower_hull/l_f_s) "sIU" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hallways/hangar) -"sIV" = ( -/obj/structure/largecrate/random/barrel/yellow, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" +"sJa" = ( +/obj/structure/sign/safety/cryo{ + pixel_y = -26 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"sJm" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/chief_mp_office) +"sJC" = ( +/obj/structure/surface/table/almayer, +/obj/item/trash/USCMtray{ + pixel_x = 5 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "bluefull" }, -/area/almayer/hull/lower_hull/l_a_p) -"sIY" = ( -/obj/structure/machinery/brig_cell/perma_1{ - pixel_x = -32; +/area/almayer/living/briefing) +"sJI" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/aluminum{ + amount = 20 + }, +/obj/item/stack/sheet/copper{ + amount = 20; pixel_y = 4 }, -/obj/structure/machinery/door_control{ - id = "Perma 1L"; - name = "Perma 1 Lockdown"; - pixel_x = -24; - pixel_y = -12; - req_access_txt = "3" +/obj/item/stack/sheet/mineral/gold{ + amount = 3; + pixel_y = 4 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 +/obj/item/stack/sheet/mineral/silver{ + amount = 5; + pixel_x = 4; + pixel_y = 2 }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "redcorner" +/obj/item/stack/sheet/mineral/phoron{ + amount = 25 }, -/area/almayer/shipboard/brig/perma) -"sJC" = ( -/obj/structure/surface/table/almayer, -/obj/item/trash/USCMtray{ - pixel_x = 5 +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, /turf/open/floor/almayer{ - icon_state = "bluefull" + icon_state = "cargo" }, -/area/almayer/living/briefing) +/area/almayer/engineering/lower/workshop/hangar) "sJY" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -62859,6 +67338,30 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) +"sKM" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) +"sKY" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8; + layer = 3.25 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"sLk" = ( +/obj/structure/ladder{ + height = 2; + id = "cicladder4" + }, +/turf/open/floor/plating/almayer, +/area/almayer/medical/medical_science) "sLo" = ( /obj/structure/stairs/perspective{ dir = 1; @@ -62869,26 +67372,37 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"sLt" = ( +"sLx" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) +"sLA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer, -/area/almayer/command/lifeboat) +/area/almayer/shipboard/brig/processing) "sLE" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"sMs" = ( -/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ +"sMu" = ( +/obj/item/trash/uscm_mre, +/obj/structure/bed/chair/comfy/charlie{ dir = 1 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "emeraldfull" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/living/briefing) "sMM" = ( /obj/structure/cable/heavyduty{ icon_state = "4-8" @@ -62896,25 +67410,31 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) "sNb" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/machinery/light, /turf/open/floor/almayer{ - dir = 8; icon_state = "orange" }, /area/almayer/squads/bravo) "sNz" = ( -/obj/structure/machinery/light, -/obj/structure/surface/table/almayer, -/obj/item/device/multitool{ - pixel_x = 8 +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/obj/item/tool/screwdriver{ - pixel_x = -3; - pixel_y = 4 +/turf/open/floor/almayer/research/containment/floor2{ + dir = 1 }, +/area/almayer/medical/containment/cell) +"sNI" = ( +/obj/structure/bed/chair/comfy/delta, /turf/open/floor/almayer{ - icon_state = "sterile_green_side" + icon_state = "bluefull" }, -/area/almayer/medical/testlab) +/area/almayer/living/briefing) "sNO" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3" @@ -62925,6 +67445,12 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"sNP" = ( +/obj/structure/largecrate/supply/floodlights, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "sNR" = ( /turf/closed/wall/almayer/research/containment/wall/corner, /area/almayer/medical/containment/cell/cl) @@ -62938,15 +67464,22 @@ icon_state = "test_floor4" }, /area/almayer/command/cic) -"sOm" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +"sOr" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + req_access = null; + req_one_access = null; + req_one_access_txt = "3;22;19" + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "Hangar Lockdown"; + name = "\improper Hangar Lockdown Blast Door" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/hallways/starboard_hallway) +/area/almayer/maint/hull/lower/l_f_s) "sOt" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/structure/machinery/status_display{ @@ -62957,6 +67490,16 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"sOv" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/obj/structure/machinery/door_control/cl/quarter/windows{ + pixel_x = 11; + pixel_y = 37 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "sOw" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -62980,23 +67523,27 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"sOD" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"sOL" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/toolcloset, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/almayer/maint/upper/mess) "sOZ" = ( -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/ammo_magazine/pistol, -/obj/item/weapon/gun/pistol/m4a3, -/obj/item/weapon/gun/pistol/m4a3, -/obj/item/weapon/gun/pistol/m4a3, -/obj/item/weapon/gun/pistol/m4a3, -/obj/item/weapon/gun/pistol/m4a3, -/obj/item/weapon/gun/pistol/m4a3, -/obj/structure/closet/secure_closet/guncabinet/red, /obj/structure/sign/safety/ammunition{ pixel_y = 32 }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, /turf/open/floor/almayer{ icon_state = "redfull" }, @@ -63013,15 +67560,13 @@ icon_state = "plate" }, /area/almayer/living/offices) -"sPA" = ( -/obj/structure/sign/safety/ladder{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "orange" +"sPF" = ( +/obj/structure/bed/chair{ + can_buckle = 0; + dir = 4 }, -/area/almayer/engineering/lower_engineering) +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/perma) "sPJ" = ( /obj/structure/machinery/firealarm{ dir = 4; @@ -63037,39 +67582,26 @@ icon_state = "red" }, /area/almayer/shipboard/port_missiles) -"sQL" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"sQS" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/stamp{ - pixel_x = 3; - pixel_y = 10 - }, -/obj/item/device/taperecorder, +"sQO" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/shipboard/brig/main_office) -"sQU" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +/area/almayer/command/lifeboat) +"sRM" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) -"sRI" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/wirecutters/clippers, -/obj/item/handcuffs/zip, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_a_s) +"sRP" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) "sSa" = ( /obj/structure/machinery/door/airlock/almayer/marine/requisitions{ dir = 2; @@ -63091,52 +67623,42 @@ icon_state = "tcomms" }, /area/almayer/shipboard/weapon_room) -"sSe" = ( -/obj/structure/sign/poster/blacklight{ - pixel_y = 35 - }, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/structure/reagent_dispensers/beerkeg/alt_dark{ - anchored = 1; - chemical = null; - density = 0; - pixel_x = -7; - pixel_y = 10 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "sSl" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) -"sSm" = ( -/obj/structure/reagent_dispensers/water_cooler/stacks{ - density = 0; - pixel_y = 17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) "sSC" = ( /turf/open/floor/almayer{ dir = 6; icon_state = "blue" }, /area/almayer/squads/delta) -"sSR" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 +"sSG" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/overwatch/almayer{ + dir = 8; + layer = 3.2; + pixel_x = -17; + pixel_y = -17 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/transmitter/rotary/no_dnd{ + name = "Charlie Overwatch Telephone"; + phone_category = "Command"; + phone_id = "Charlie Overwatch" + }, +/obj/structure/sign/safety/terminal{ + pixel_x = -17; + pixel_y = 7 }, /turf/open/floor/almayer{ - icon_state = "redfull" + icon_state = "plate" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/command/cic) "sSY" = ( /obj/structure/pipes/vents/scrubber{ dir = 8 @@ -63171,6 +67693,13 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"sTV" = ( +/obj/structure/machinery/power/apc/almayer/hardened{ + cell_type = /obj/item/cell/hyper; + dir = 1 + }, +/turf/open/floor/plating, +/area/almayer/command/airoom) "sUg" = ( /obj/structure/surface/table/almayer, /obj/structure/flora/pottedplant{ @@ -63181,6 +67710,12 @@ icon_state = "silverfull" }, /area/almayer/shipboard/brig/cic_hallway) +"sUi" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_a_p) "sUj" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -63246,58 +67781,91 @@ pixel_y = -32 }, /turf/open/floor/almayer{ - icon_state = "greencorner" + icon_state = "green" }, /area/almayer/hallways/port_hallway) -"sVi" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) -"sVy" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cryo) -"sWW" = ( -/obj/structure/machinery/seed_extractor, +"sVT" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical, /obj/structure/machinery/light{ dir = 1 }, +/obj/structure/machinery/firealarm{ + pixel_y = 28 + }, +/obj/item/storage/toolbox/electrical{ + pixel_y = 8 + }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + icon_state = "plate" }, -/area/almayer/medical/hydroponics) -"sXd" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/reagent_scanner{ - pixel_x = -6 +/area/almayer/engineering/lower/workshop) +"sVV" = ( +/turf/open/floor/almayer, +/area/almayer/hallways/upper/starboard) +"sWp" = ( +/obj/structure/machinery/light/small{ + dir = 8 }, -/obj/item/tool/hand_labeler{ - pixel_x = 8 +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 }, /turf/open/floor/almayer{ - icon_state = "sterile_green_side" + icon_state = "plate" }, -/area/almayer/medical/medical_science) -"sXs" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/flashlight/lamp{ - layer = 3.1; - pixel_x = 7; - pixel_y = 10 +/area/almayer/maint/hull/upper/u_a_s) +"sWw" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"sWC" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 2 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper Bathroom" }, -/obj/item/paper_bin/uscm, -/obj/item/tool/pen, -/obj/structure/machinery/light, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering/port) +"sWW" = ( +/obj/structure/machinery/flasher{ + alpha = 1; + id = "Containment Cell 3"; + layer = 2.1; + name = "Mounted Flash"; + pixel_y = 30 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer/research/containment/floor2{ + dir = 1 + }, +/area/almayer/medical/containment/cell) +"sXd" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 }, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/medical/containment) +"sXq" = ( +/obj/structure/sign/safety/storage{ + pixel_x = -17 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "sXt" = ( /obj/structure/machinery/cm_vending/clothing/tl/alpha{ density = 0; @@ -63328,20 +67896,12 @@ /area/almayer/hallways/hangar) "sXE" = ( /obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Tanker's Room" + name = "\improper Auxiliary Support Officer's Room" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/living/tankerbunks) -"sXK" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/living/auxiliary_officer_office) "sXQ" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/item/seeds/appleseed, @@ -63353,28 +67913,31 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) -"sXV" = ( -/obj/structure/machinery/recharge_station, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "sYh" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"sYn" = ( -/obj/structure/sign/safety/rewire{ - pixel_x = 8; - pixel_y = -32 +"sYi" = ( +/obj/structure/machinery/door_control{ + id = "firearm_storage_armory"; + name = "Armory Lockdown"; + pixel_y = 24; + req_access_txt = "4" + }, +/obj/structure/sign/safety/ammunition{ + pixel_y = 32 + }, +/obj/structure/sign/safety/restrictedarea{ + pixel_x = 15; + pixel_y = 32 }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 1; + icon_state = "red" }, -/area/almayer/lifeboat_pumps/south2) +/area/almayer/shipboard/brig/main_office) "sYw" = ( /obj/structure/platform{ dir = 8 @@ -63389,33 +67952,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) -"sYB" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/effect/decal/warning_stripes{ - icon_state = "N" - }, -/obj/effect/landmark/wo_supplies/guns/common/m39, -/obj/effect/landmark/wo_supplies/guns/common/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) -"sYC" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Hangar Lockdown"; - name = "\improper Hangar Lockdown Blast Door" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_p) "sYD" = ( /obj/structure/machinery/status_display{ pixel_x = 16; @@ -63428,6 +67964,20 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"sYE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/status_display{ + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "sYP" = ( /obj/structure/reagent_dispensers/fueltank/custom, /turf/open/floor/almayer{ @@ -63444,6 +67994,13 @@ /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/medical/upper_medical) +"sZc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "sZq" = ( /obj/structure/machinery/cm_vending/sorted/marine_food{ density = 0; @@ -63453,6 +68010,30 @@ icon_state = "plate" }, /area/almayer/squads/charlie) +"sZs" = ( +/obj/structure/machinery/light, +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/port_emb) +"sZy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) "sZH" = ( /obj/structure/surface/table/almayer, /obj/item/ashtray/bronze{ @@ -63513,6 +68094,41 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) +"tan" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) +"tat" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer, +/area/almayer/living/port_emb) +"tau" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/reinforced{ + dir = 2; + name = "\improper Brig Permanent Confinement" + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "perma_lockdown_1"; + name = "\improper Perma Lockdown Shutter" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/perma) +"taw" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/u_a_s) "taA" = ( /obj/structure/machinery/light{ dir = 4 @@ -63523,49 +68139,87 @@ }, /area/almayer/hallways/starboard_hallway) "taH" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ + id = "Containment Cell 2"; + locked = 1; + name = "\improper Containment Cell 2" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/containment{ + dir = 4; + id = "Containment Cell 2"; + name = "\improper Containment Cell 2" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "test_floor4" }, -/area/almayer/medical/testlab) -"tbD" = ( -/obj/structure/ladder{ - height = 2; - id = "AftPortMaint" +/area/almayer/medical/containment/cell) +"taV" = ( +/obj/effect/projector{ + name = "Almayer_Down1"; + vector_x = 19; + vector_y = -98 }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/upper_hull/u_a_p) -"tbK" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) -"tce" = ( -/obj/structure/closet/emcloset, /turf/open/floor/almayer{ + allow_construction = 0; icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_s) -"tcP" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 +/area/almayer/hallways/upper/starboard) +"tcd" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/radio{ + pixel_x = -6; + pixel_y = 3 }, -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply{ +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"tcm" = ( +/obj/structure/machinery/light/small{ dir = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "perma_lockdown"; - name = "\improper Perma Lockdown Shutter" +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ - name = "\improper Perma Cells" +/area/almayer/maint/hull/lower/l_a_s) +"tcO" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/l_a_p) +"tcZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) +"tda" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/airlock/almayer/security{ + access_modified = 1; + dir = 2; + name = "\improper Security Checkpoint"; + req_access = null; + req_one_access_txt = "3;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/perma) +/area/almayer/living/briefing) "tdc" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -63580,20 +68234,32 @@ }, /area/almayer/hallways/hangar) "tdv" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/surface/table/almayer, +/obj/structure/sign/safety/terminal{ + pixel_x = -17 + }, +/obj/structure/machinery/computer/working_joe{ + dir = 4 + }, /turf/open/floor/almayer{ dir = 8; - icon_state = "red" + icon_state = "orange" }, -/area/almayer/shipboard/brig/main_office) -"tdx" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 +/area/almayer/engineering/lower/engine_core) +"tdy" = ( +/obj/structure/bed/sofa/south/grey/right, +/obj/structure/sign/safety/restrictedarea{ + pixel_y = 32 + }, +/obj/structure/sign/safety/security{ + pixel_x = 15; + pixel_y = 32 }, /turf/open/floor/almayer{ - icon_state = "orangecorner" + dir = 1; + icon_state = "red" }, -/area/almayer/engineering/engine_core) +/area/almayer/shipboard/brig/lobby) "tdE" = ( /obj/structure/window/reinforced{ dir = 8 @@ -63607,6 +68273,16 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha_bravo_shared) +"tdH" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 + }, +/obj/item/bedsheet/yellow, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "tdI" = ( /turf/open/floor/almayer{ icon_state = "sterile_green_corner" @@ -63656,15 +68332,34 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"tey" = ( +/obj/item/tool/wet_sign, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/u_m_s) "tez" = ( /obj/effect/landmark/ert_spawns/distress_cryo, /obj/effect/landmark/late_join, /turf/open/floor/almayer, /area/almayer/living/cryo_cells) -"teB" = ( -/obj/structure/largecrate/random/case/small, +"teE" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) +"teH" = ( +/obj/structure/sign/safety/maint{ + pixel_y = 32 + }, +/obj/structure/sign/safety/storage{ + pixel_x = 15; + pixel_y = 32 + }, /turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/north1) +/area/almayer/hallways/starboard_hallway) "teY" = ( /obj/structure/machinery/light{ dir = 1 @@ -63680,6 +68375,12 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) +"tff" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/lobby) "tfl" = ( /obj/structure/machinery/light{ dir = 1 @@ -63695,9 +68396,6 @@ name = "General Listening Channel"; pixel_y = 28 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, @@ -63707,35 +68405,45 @@ }, /area/almayer/hallways/port_hallway) "tfH" = ( -/obj/structure/pipes/vents/pump{ +/obj/structure/machinery/light/containment, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer/research/containment/floor2{ dir = 1 }, +/area/almayer/medical/containment/cell) +"tfQ" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"tge" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 4 + }, +/obj/structure/bed/chair/comfy/charlie{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "emeraldfull" }, -/area/almayer/medical/hydroponics) -"tfO" = ( -/obj/structure/machinery/power/apc/almayer{ +/area/almayer/living/briefing) +"tgm" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/storage/box/nade_box/tear_gas, -/obj/item/storage/box/nade_box/tear_gas{ - pixel_x = 3; - pixel_y = 5 +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"tgK" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/obj/structure/surface/table/almayer, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/shipboard/brig/armory) -"tgS" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/sign/safety/maint{ - pixel_x = -17 + dir = 9; + icon_state = "orange" }, -/turf/open/floor/almayer, -/area/almayer/hallways/aft_hallway) +/area/almayer/engineering/upper_engineering/starboard) "tgV" = ( /obj/structure/bed, /obj/item/bedsheet/medical, @@ -63745,6 +68453,30 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"thc" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) +"thq" = ( +/obj/structure/machinery/vending/cola{ + density = 0; + pixel_y = 16 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) "thv" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -63771,28 +68503,16 @@ /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) "thN" = ( -/obj/structure/machinery/camera/autoname/almayer/containment{ - dir = 8 - }, -/turf/open/floor/almayer/research/containment/floor2{ - dir = 8 +/turf/open/floor/almayer{ + icon_state = "dark_sterile" }, -/area/almayer/medical/containment/cell) +/area/almayer/medical/hydroponics) "thP" = ( /turf/open/floor/almayer{ dir = 10; icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"thT" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "thV" = ( /turf/open/floor/almayer{ dir = 1; @@ -63807,6 +68527,12 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha) +"tih" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "tii" = ( /obj/structure/machinery/firealarm{ pixel_x = 6; @@ -63837,11 +68563,27 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"tit" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "green" + }, +/area/almayer/hallways/starboard_hallway) "tiE" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/squads/req) +"tiF" = ( +/obj/structure/machinery/keycard_auth{ + pixel_y = 25 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/shipboard/brig/chief_mp_office) "tiI" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/box/syringes{ @@ -63860,15 +68602,10 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"tiM" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_s) "tiR" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; req_one_access = null; req_one_access_txt = "7;19" }, @@ -63884,6 +68621,34 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) +"tiX" = ( +/obj/item/reagent_container/glass/bucket/janibucket{ + pixel_x = -1; + pixel_y = 13 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"tiY" = ( +/obj/structure/closet, +/obj/item/reagent_container/food/drinks/bottle/sake, +/obj/item/newspaper, +/obj/item/clothing/gloves/yellow, +/obj/item/stack/tile/carpet{ + amount = 20 + }, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"tjj" = ( +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "tjl" = ( /turf/open/floor/almayer{ dir = 1; @@ -63891,17 +68656,59 @@ }, /area/almayer/squads/req) "tjn" = ( -/obj/structure/reagent_dispensers/fueltank/custom, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, -/area/almayer/medical/containment) -"tjU" = ( -/obj/structure/bed/chair/wood/normal, -/obj/item/bedsheet/brown, -/obj/item/toy/farwadoll, -/turf/open/floor/wood/ship, -/area/almayer/shipboard/brig/cells) +/area/almayer/medical/medical_science) +"tjw" = ( +/obj/structure/machinery/cm_vending/clothing/vehicle_crew{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor/almayer, +/area/almayer/living/tankerbunks) +"tjz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 4; + pixel_y = -3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) +"tjH" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/device/radio/headset/almayer/mt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"tjO" = ( +/obj/structure/janitorialcart, +/obj/item/tool/mop, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/maint/hull/lower/l_m_s) +"tki" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/port_hallway) +"tkn" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "tkq" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -63919,44 +68726,69 @@ icon_state = "plate" }, /area/almayer/squads/alpha_bravo_shared) -"tkV" = ( -/obj/structure/bed/chair, +"tkR" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" + icon_state = "redfull" }, -/area/almayer/shipboard/brig/processing) +/area/almayer/hallways/upper/starboard) "tld" = ( -/obj/structure/machinery/shower{ - dir = 8 +/obj/structure/machinery/prop/almayer/computer{ + dir = 8; + pixel_x = 16 }, -/obj/structure/machinery/door/window/westright, -/obj/item/tool/soap, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, /area/almayer/living/pilotbunks) -"tly" = ( -/obj/structure/platform{ - dir = 8 +"tlk" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + layer = 1.9 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/turf/open/floor/plating, +/area/almayer/shipboard/brig/general_equipment) +"tln" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 }, -/area/almayer/hull/upper_hull/u_a_p) -"tlA" = ( -/obj/effect/decal/medical_decals{ - icon_state = "docdecal2" +/obj/structure/bed/chair/comfy/charlie{ + dir = 4 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "plate" + }, +/area/almayer/living/briefing) +"tlp" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "courtyard_cells"; + name = "\improper Courtyard Lockdown Shutter" + }, +/obj/structure/machinery/door/poddoor/almayer/locked{ + id = "Cell 4"; + name = "\improper Courtyard Divider" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/cells) +"tlA" = ( +/obj/effect/decal/medical_decals{ + icon_state = "docdecal2" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) -"tlI" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/structure/surface/table/almayer, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "tmg" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/hypospray, @@ -63968,58 +68800,75 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"tmy" = ( -/obj/structure/surface/table/almayer, -/obj/item/handcuffs{ - pixel_y = 12 +"tml" = ( +/obj/structure/largecrate/supply/supplies/mre, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"tmB" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 }, -/obj/item/handcuffs{ +/turf/open/floor/almayer, +/area/almayer/living/briefing) +"tmH" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera"; pixel_y = 6 }, -/obj/item/handcuffs, -/obj/item/weapon/baton{ - pixel_x = -12 +/turf/open/floor/almayer{ + dir = 1; + icon_state = "redcorner" + }, +/area/almayer/shipboard/brig/execution) +"tmI" = ( +/obj/structure/machinery/light, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 }, /turf/open/floor/almayer{ + dir = 6; icon_state = "red" }, -/area/almayer/shipboard/brig/main_office) -"tmA" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = 25 +/area/almayer/lifeboat_pumps/south1) +"tmK" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + req_one_access = null; + req_one_access_txt = "91;92" }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "orange" +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" }, -/area/almayer/engineering/lower_engineering) -"tmB" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ +/area/almayer/command/airoom) +"tmQ" = ( +/obj/structure/machinery/light/small{ dir = 1 }, -/turf/open/floor/almayer, -/area/almayer/living/briefing) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) +"tmX" = ( +/obj/effect/landmark/start/professor, +/obj/effect/landmark/late_join/cmo, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/offices) "tnb" = ( /obj/structure/bed/chair/comfy/black, /turf/open/floor/almayer{ icon_state = "redfull" }, /area/almayer/shipboard/port_missiles) -"tng" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" +"tne" = ( +/obj/structure/machinery/door_control/cl/quarter/backdoor{ + pixel_x = -25; + pixel_y = 23 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/upper/u_m_p) "tni" = ( /turf/open/floor/almayer{ dir = 1; @@ -64036,17 +68885,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"tnm" = ( -/obj/structure/machinery/atm{ - name = "Weyland-Yutani Automatic Teller Machine"; - pixel_y = 30 - }, -/obj/structure/surface/table/almayer, -/obj/item/spacecash/c1000/counterfeit, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/fancy/cigar, -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) "tnY" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -64058,6 +68896,26 @@ icon_state = "cargo" }, /area/almayer/squads/alpha) +"tob" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) +"tos" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) +"tot" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) "tou" = ( /obj/structure/bed/chair{ dir = 4 @@ -64073,45 +68931,56 @@ }, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) -"toE" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"toD" = ( +/obj/structure/largecrate/supply/generator, +/obj/item/reagent_container/food/drinks/bottle/whiskey{ + layer = 2.9; + pixel_x = -10; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"toO" = ( +/obj/structure/surface/table/almayer, +/obj/item/book/manual/engineering_construction, +/obj/item/folder/black_random, +/obj/structure/sign/safety/high_rad{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = 7 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = 8; + pixel_y = -32 }, -/obj/structure/closet/emcloset, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/engineering/lower/workshop) "tpa" = ( -/turf/open/floor/almayer/research/containment/corner3, -/area/almayer/medical/containment/cell) +/obj/structure/machinery/portable_atmospherics/hydroponics, +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor5" + }, +/area/almayer/medical/hydroponics) "tpd" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) -"tpg" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "tpn" = ( /turf/closed/wall/almayer, /area/almayer/shipboard/brig/evidence_storage) -"tps" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_m_s) "tpD" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -64122,30 +68991,6 @@ icon_state = "silver" }, /area/almayer/living/bridgebunks) -"tpK" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/effect/spawner/random/toolbox, -/obj/item/stack/sheet/metal{ - desc = "Semiotic Standard denoting the nearby presence of coffee: the lifeblood of any starship crew."; - icon = 'icons/obj/structures/props/semiotic_standard.dmi'; - icon_state = "coffee"; - name = "coffee semiotic"; - pixel_x = 20; - pixel_y = 12; - singular_name = "coffee semiotic" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"tqe" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" - }, -/area/almayer/shipboard/brig/surgery) "tqg" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out" @@ -64176,10 +69021,34 @@ icon_state = "silverfull" }, /area/almayer/hallways/repair_bay) -"tqk" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"tqE" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/reagent_dispensers/fueltank/custom, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) +"tqO" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, +/obj/structure/sign/safety/stairs{ + pixel_x = -15 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) +"tqV" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/toolbox/electrical{ + pixel_y = 9 + }, +/obj/item/storage/toolbox/mechanical/green, /obj/structure/prop/invuln/overhead_pipe{ pixel_x = 12 }, @@ -64187,63 +69056,90 @@ pixel_x = 12; pixel_y = 12 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) -"tqB" = ( -/obj/structure/machinery/light{ - dir = 1 - }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/command/lifeboat) -"tqV" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 26 +/area/almayer/maint/hull/lower/l_m_p) +"tra" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + dir = 2; + req_one_access = null; + req_one_access_txt = "19;34;30" }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/general_equipment) +/area/almayer/maint/hull/upper/u_m_p) "trb" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, /area/almayer/lifeboat_pumps/south1) +"trh" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower) "trB" = ( /turf/open/floor/almayer{ dir = 10; icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"trD" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"trF" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/obj/structure/sign/safety/water{ +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/structure/surface/table/almayer, +/obj/item/storage/firstaid/o2{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/storage/firstaid/fire{ pixel_x = 8; - pixel_y = 32 + pixel_y = 6 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) -"trF" = ( -/obj/structure/machinery/shower{ - dir = 1 +/obj/item/storage/firstaid/adv{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/storage/firstaid/toxin{ + pixel_x = 8; + pixel_y = -2 }, /turf/open/floor/almayer{ - icon_state = "sterile_green_side" + dir = 8; + icon_state = "sterile_green_corner" }, -/area/almayer/medical/containment) -"trW" = ( -/obj/item/stack/tile/carpet{ - amount = 20 +/area/almayer/medical/medical_science) +"trU" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/pen/blue/clicky{ + pixel_x = 2; + pixel_y = 2 }, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/item/tool/pen/red/clicky{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/tool/pen/clicky{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/paper_bin/wy{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/structure/machinery/light{ + dir = 8 }, -/area/almayer/hull/upper_hull/u_a_p) +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "tsa" = ( /obj/structure/surface/table/almayer, /obj/item/clothing/suit/chef/classic, @@ -64251,6 +69147,9 @@ /obj/item/clothing/suit/chef/classic, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) +"tsr" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/maint/upper/mess) "tst" = ( /obj/structure/machinery/cryopod/right, /obj/effect/decal/warning_stripes{ @@ -64265,14 +69164,6 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/port) -"tsv" = ( -/obj/structure/sign/nosmoking_2{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/lifeboat_pumps/north1) "tsy" = ( /obj/structure/filingcabinet{ pixel_x = 8 @@ -64299,15 +69190,24 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/upper_medical) -"tsH" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 +"tsE" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) +"tsM" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/obj/structure/disposalpipe/junction{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) "tsX" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/lobby) @@ -64320,6 +69220,44 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"tte" = ( +/obj/structure/pipes/vents/pump/no_boom{ + welded = 1 + }, +/turf/open/floor/plating, +/area/almayer/powered/agent) +"tty" = ( +/obj/structure/surface/table/almayer, +/obj/item/clipboard, +/obj/item/paper, +/obj/item/clothing/glasses/mgoggles, +/obj/item/clothing/glasses/mgoggles, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) +"ttB" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) +"ttD" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"ttE" = ( +/obj/structure/surface/table/almayer, +/obj/item/paper_bin{ + pixel_x = -7 + }, +/obj/item/tool/pen, +/obj/item/tool/pen{ + pixel_y = 3 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "ttM" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -64340,6 +69278,26 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south2) +"ttX" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/firstaid/regular{ + pixel_x = 8; + pixel_y = -2 + }, +/obj/item/storage/box/drinkingglasses{ + pixel_x = -7 + }, +/obj/item/reagent_container/spray/cleaner{ + pixel_x = -10; + pixel_y = 14 + }, +/obj/item/storage/xeno_tag_case/full{ + pixel_y = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/corporateliaison) "tuf" = ( /obj/structure/platform_decoration{ dir = 4 @@ -64349,6 +69307,23 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"tuk" = ( +/obj/structure/machinery/computer/crew, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/general_equipment) +"tul" = ( +/obj/structure/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/closet/secure_closet/brig/prison_uni, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/perma) "tuo" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/structure/sign/safety/hvac_old{ @@ -64360,45 +69335,22 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"tuv" = ( -/obj/item/bedsheet/purple{ - layer = 3.2 - }, -/obj/item/bedsheet/purple{ - pixel_y = 13 - }, -/obj/item/clothing/head/beret/centcom/captain{ - color = "#4b5320"; - desc = "Dusty beret bearing the logo of the royal marines. How did this get here?"; - name = "dusty beret"; - pixel_y = -6 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 +"tuA" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/shipboard/port_missiles) +"tuJ" = ( +/obj/item/reagent_container/glass/bucket{ + pixel_x = 4; + pixel_y = 9 }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 +/obj/item/tool/shovel/spade{ + pixel_x = -3; + pixel_y = -3 }, /turf/open/floor/almayer{ - dir = 10; - icon_state = "emerald" + icon_state = "plate" }, -/area/almayer/living/port_emb) -"tuA" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/shipboard/port_missiles) +/area/almayer/maint/hull/upper/u_a_s) "tuN" = ( /turf/open/floor/almayer{ icon_state = "orange" @@ -64411,16 +69363,19 @@ icon_state = "redcorner" }, /area/almayer/shipboard/weapon_room) -"tvu" = ( -/obj/structure/filingcabinet/filingcabinet, -/obj/item/clipboard, -/obj/item/clipboard, -/obj/item/clipboard, -/obj/item/clipboard, -/obj/item/clipboard, -/obj/item/clipboard, -/turf/open/floor/wood/ship, -/area/almayer/medical/medical_science) +"tvr" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"tvt" = ( +/obj/structure/window/framed/almayer/hull, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_f_s) "tvw" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -64430,14 +69385,12 @@ }, /area/almayer/lifeboat_pumps/south1) "tvA" = ( -/obj/structure/machinery/sleep_console{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_side" +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 }, -/area/almayer/shipboard/brig/surgery) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "tvM" = ( /obj/structure/bed/chair{ dir = 1 @@ -64469,6 +69422,21 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"tvS" = ( +/obj/docking_port/stationary/escape_pod/south, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_m_s) +"twp" = ( +/obj/structure/ladder{ + height = 1; + id = "AftStarboardMaint" + }, +/obj/structure/sign/safety/ladder{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/almayer, +/area/almayer/maint/hull/lower/l_a_s) "twq" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/tool/hand_labeler{ @@ -64478,6 +69446,10 @@ pixel_y = 5 }, /obj/item/tool/pen, +/obj/structure/machinery/computer/working_joe{ + dir = 8; + pixel_x = 17 + }, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, @@ -64490,6 +69462,32 @@ icon_state = "outerhull_dir" }, /area/space) +"twI" = ( +/obj/structure/machinery/cm_vending/clothing/dress{ + density = 0; + pixel_y = 16 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/machinery/door_control{ + id = "bot_uniforms"; + name = "Uniform Vendor Lockdown"; + pixel_x = -24; + pixel_y = 18; + req_access_txt = "31" + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/cic) +"twQ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) "twT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -64534,6 +69532,24 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) +"txp" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"txy" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) +"txH" = ( +/obj/structure/bed/stool, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "txO" = ( /obj/structure/machinery/landinglight/ds1{ dir = 4 @@ -64557,82 +69573,73 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/port_emb) -"tyz" = ( -/obj/item/book/manual/medical_diagnostics_manual, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/hull/upper_hull/u_a_p) "tyD" = ( -/turf/open/floor/almayer{ - icon_state = "dark_sterile" +/turf/open/floor/almayer/research/containment/corner_var1{ + dir = 4 }, -/area/almayer/medical/hydroponics) +/area/almayer/medical/containment/cell) "tyK" = ( /obj/effect/spawner/random/toolbox, +/obj/structure/machinery/light{ + dir = 4 + }, /turf/open/floor/almayer{ dir = 1; icon_state = "cargo_arrow" }, /area/almayer/shipboard/starboard_missiles) +"tzd" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + layer = 1.9 + }, +/turf/open/floor/plating, +/area/almayer/shipboard/brig/processing) "tzf" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"tzi" = ( -/obj/structure/flora/pottedplant{ - desc = "Life is underwhelming, especially when you're a potted plant."; - icon_state = "pottedplant_22"; - name = "Jerry"; - pixel_y = 8 - }, -/obj/item/clothing/glasses/sunglasses/prescription{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "tzx" = ( -/obj/structure/machinery/cm_vending/sorted/medical/blood, /obj/structure/machinery/light{ unacidable = 1; unslashable = 1 }, +/obj/structure/machinery/cm_vending/sorted/medical/blood/bolted, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, /area/almayer/medical/lockerroom) -"tzz" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"tzL" = ( +/obj/structure/sign/safety/waterhazard{ + pixel_x = 8; + pixel_y = -32 }, +/obj/structure/machinery/portable_atmospherics/hydroponics, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor5" }, -/area/almayer/engineering/engineering_workshop) +/area/almayer/medical/hydroponics) "tzP" = ( /obj/structure/barricade/handrail/medical, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) -"tAi" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 +"tAq" = ( +/obj/structure/surface/table/reinforced/black, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -5 + }, +/obj/item/clothing/head/helmet/space/compression/uscm, +/obj/item/cell/crap{ + pixel_x = 7 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_s) +/area/almayer/engineering/upper_engineering/port) "tAL" = ( /obj/structure/machinery/cryopod, /turf/open/floor/almayer{ @@ -64654,13 +69661,6 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"tAR" = ( -/obj/effect/spawner/random/toolbox, -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "tAU" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -64669,11 +69669,17 @@ icon_state = "cargo" }, /area/almayer/medical/lower_medical_medbay) -"tAV" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, +"tBq" = ( +/obj/item/tool/crowbar, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) +"tBu" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "tBz" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -64695,23 +69701,69 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"tCb" = ( -/obj/structure/surface/rack, -/obj/item/device/radio{ - pixel_x = 5; - pixel_y = 4 +"tBU" = ( +/obj/structure/platform, +/obj/structure/largecrate/random/case/double{ + layer = 2.98 + }, +/obj/structure/sign/safety/life_support{ + pixel_x = 32 }, -/obj/item/device/radio, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) -"tCk" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, +/area/almayer/maint/hull/upper/u_a_s) +"tBY" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/command/lifeboat) +/area/almayer/maint/upper/mess) +"tCd" = ( +/obj/item/folder/red{ + desc = "A red folder. The previous contents are a mystery, though the number 28 has been written on the inside of each flap numerous times. Smells faintly of cough syrup."; + name = "folder: 28"; + pixel_x = -4; + pixel_y = 5 + }, +/obj/structure/surface/table/almayer, +/obj/item/toy/crayon{ + pixel_x = 9; + pixel_y = -2 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) +"tCx" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/port) +"tCC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/maint/hull/upper/u_a_s) "tCN" = ( /turf/open/floor/almayer{ dir = 8; @@ -64726,17 +69778,6 @@ icon_state = "plate" }, /area/almayer/command/cic) -"tDx" = ( -/obj/item/tool/wet_sign, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"tDA" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "tDZ" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -64748,6 +69789,12 @@ icon_state = "cargo" }, /area/almayer/squads/bravo) +"tEd" = ( +/obj/structure/reagent_dispensers/acidtank, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "tEi" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -64764,12 +69811,30 @@ icon_state = "plating" }, /area/almayer/medical/upper_medical) +"tEu" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "tEB" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/command/combat_correspondent) +"tEC" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, +/area/almayer/living/briefing) "tEO" = ( /obj/effect/landmark/start/marine/medic/charlie, /obj/effect/landmark/late_join/charlie, @@ -64780,22 +69845,22 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) "tFe" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - dir = 1; - name = "\improper ARES Mainframe"; - req_access = null; - req_one_access_txt = "2;7" +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES StairsUpper"; + name = "\improper ARES Core Shutters"; + plane = -7 }, -/turf/open/floor/almayer{ +/obj/structure/machinery/door/poddoor/almayer/blended/open{ + id = "ARES Emergency"; + name = "ARES Emergency Lockdown"; + open_layer = 1.9; + plane = -7 + }, +/turf/open/floor/almayer/no_build{ icon_state = "test_floor4" }, /area/almayer/command/airoom) -"tFv" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/general_equipment) "tFS" = ( /obj/structure/machinery/computer/supplycomp, /obj/structure/sign/safety/terminal{ @@ -64809,13 +69874,12 @@ /area/almayer/squads/req) "tFW" = ( /obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/south1) "tGd" = ( @@ -64831,19 +69895,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"tGf" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"tGg" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/main_office) "tGh" = ( /obj/structure/sign/nosmoking_2{ pixel_x = -28 @@ -64857,6 +69908,15 @@ /obj/effect/spawner/random/tool, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) +"tGj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) "tGq" = ( /obj/effect/projector{ name = "Almayer_Up4"; @@ -64865,6 +69925,21 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) +"tGG" = ( +/obj/structure/bed/chair/comfy/alpha{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/living/briefing) +"tGH" = ( +/obj/structure/sign/safety/restrictedarea, +/obj/structure/sign/safety/security{ + pixel_x = 15 + }, +/turf/closed/wall/almayer, +/area/almayer/shipboard/panic) "tGO" = ( /obj/effect/projector{ name = "Almayer_Up3"; @@ -64873,41 +69948,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) -"tHc" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/cameras/wooden_tv/prop{ - dir = 8; - layer = 3.2; - pixel_x = -3; - pixel_y = 6 - }, -/obj/structure/sign/poster{ - desc = "YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE."; - icon_state = "poster11"; - name = "YOU ALWAYS KNOW A WORKING JOE."; - pixel_x = 27; - serial_number = 11 - }, -/obj/item/trash/pistachios{ - layer = 2; - pixel_x = 6; - pixel_y = -6 - }, -/obj/structure/machinery/recharger{ - layer = 3.1; - pixel_y = 22 +"tGT" = ( +/obj/structure/machinery/light{ + dir = 1 }, -/obj/item/ammo_magazine/rifle/incendiary{ - current_rounds = 0; - desc = "A 10mm assault rifle magazine with ':D' drawn on the side"; - pixel_x = 10; - pixel_y = 2 +/obj/structure/machinery/photocopier{ + anchored = 0 }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "blue" +/obj/structure/sign/poster/art{ + pixel_y = 32 }, -/area/almayer/living/port_emb) +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "tHh" = ( /obj/structure/sign/safety/ladder{ pixel_x = 8; @@ -64917,6 +69969,14 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) +"tHk" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/tool, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "tHr" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/status_display{ @@ -64931,38 +69991,45 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"tHu" = ( +/obj/structure/closet/toolcloset, +/turf/open/floor/almayer{ + icon_state = "silverfull" + }, +/area/almayer/command/airoom) "tHv" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "orangecorner" }, /area/almayer/living/briefing) -"tHB" = ( -/obj/structure/surface/table/almayer, -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = -30 - }, -/obj/structure/machinery/recharger{ - layer = 3.1; - pixel_y = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"tHQ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/area/almayer/shipboard/brig/main_office) +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "tHS" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/shipboard/brig/cells) -"tIb" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"tId" = ( +/obj/structure/machinery/recharge_station, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/airoom) +"tIe" = ( +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "emerald" + dir = 5; + icon_state = "orange" }, -/area/almayer/living/port_emb) +/area/almayer/engineering/lower/engine_core) "tIp" = ( /obj/structure/machinery/door/airlock/almayer/generic{ name = "\improper Dorms" @@ -64978,6 +70045,12 @@ icon_state = "test_floor4" }, /area/almayer/living/port_emb) +"tIF" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "tIK" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -64989,6 +70062,14 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"tIN" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -14; + pixel_y = 13 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "tIQ" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -65004,35 +70085,17 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"tIU" = ( -/obj/structure/platform, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -14; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = 12; - pixel_y = 13 +"tIX" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/firstaid/adv{ + pixel_x = 6; + pixel_y = 6 }, +/obj/item/storage/firstaid/regular, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) -"tJa" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1; - name = "Storage"; - req_one_access = "2;21" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/squads/req) +/area/almayer/maint/hull/upper/u_f_p) "tJi" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/paper_bin/uscm, @@ -65041,43 +70104,42 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"tJo" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +"tJq" = ( +/obj/structure/machinery/light/small{ dir = 1 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"tJp" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/crowbar/red, -/obj/item/clipboard{ - pixel_x = 1; - pixel_y = 4 +/area/almayer/maint/hull/upper/u_m_s) +"tJz" = ( +/obj/structure/machinery/firealarm{ + pixel_y = -28 }, -/obj/item/storage/box/handcuffs{ - pixel_x = 5; - pixel_y = 5 +/turf/open/floor/almayer, +/area/almayer/squads/charlie_delta_shared) +"tJM" = ( +/obj/structure/toilet{ + pixel_y = 13 }, -/obj/item/reagent_container/spray/cleaner, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/sink{ + dir = 4; + pixel_x = 11 }, -/area/almayer/shipboard/brig/main_office) -"tJy" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/structure/machinery/light/small{ + dir = 8 }, /turf/open/floor/almayer{ - dir = 4; - icon_state = "redcorner" + icon_state = "dark_sterile" }, /area/almayer/shipboard/brig/main_office) -"tJz" = ( -/obj/structure/machinery/firealarm{ - pixel_y = -28 +"tJN" = ( +/obj/structure/machinery/cryopod/right{ + layer = 3.1; + pixel_y = 13 }, -/turf/open/floor/almayer, -/area/almayer/squads/charlie_delta_shared) +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/airoom) "tJR" = ( /obj/structure/machinery/vending/cigarette, /obj/structure/sign/safety/medical{ @@ -65105,16 +70167,43 @@ }, /area/almayer/command/lifeboat) "tKr" = ( +/obj/structure/machinery/cryopod/right{ + dir = 2 + }, /obj/structure/machinery/light{ dir = 8 }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/living/bridgebunks) +"tLa" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /obj/effect/decal/warning_stripes{ - icon_state = "S" + icon_state = "NW-out"; + pixel_x = -2; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 2; + pixel_y = 1 + }, +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + dir = 2; + name = "\improper Armory" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 2; + id = "firearm_storage_armory"; + name = "\improper Armory Shutters" }, /turf/open/floor/almayer{ - icon_state = "silver" + icon_state = "test_floor4" }, -/area/almayer/living/bridgebunks) +/area/almayer/shipboard/brig/armory) "tLc" = ( /obj/structure/surface/rack, /obj/item/storage/bag/plants{ @@ -65139,35 +70228,50 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"tLy" = ( +"tMc" = ( +/obj/structure/machinery/chem_master/industry_mixer, /turf/open/floor/almayer{ - dir = 6; icon_state = "orange" }, -/area/almayer/engineering/engine_core) -"tLM" = ( -/obj/structure/sign/safety/storage{ - pixel_x = -17 +/area/almayer/engineering/lower/workshop/hangar) +"tMH" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + name = "\improper Warden's Office"; + closeOtherId = "brigwarden" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) -"tMf" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Warden Office Shutters"; + name = "\improper Privacy Shutters" }, -/obj/structure/sign/safety/stairs{ - pixel_x = -15 +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 8 + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "courtyard_cells"; + name = "\improper Courtyard Lockdown Shutter" }, /turf/open/floor/almayer{ - dir = 6; + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/chief_mp_office) +"tMT" = ( +/obj/item/tool/weldingtool, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ icon_state = "red" }, -/area/almayer/hallways/aft_hallway) -"tMn" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/bed/chair/comfy/beige, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) +/area/almayer/maint/hull/upper/u_a_p) +"tMU" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "tMW" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -65177,31 +70281,28 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"tNj" = ( +"tNw" = ( /obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/sentencing{ - dir = 4 - }, -/obj/structure/machinery/light{ - dir = 8 +/obj/item/storage/pouch/tools/full, +/turf/open/floor/almayer{ + icon_state = "plate" }, +/area/almayer/maint/hull/upper/u_m_p) +"tNB" = ( +/obj/structure/bed/sofa/south/grey/left, /turf/open/floor/almayer{ - dir = 8; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/perma) -"tNF" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "CMP Office Shutters"; - name = "\improper Privacy Shutters" +/area/almayer/maint/hull/upper/u_f_p) +"tNP" = ( +/obj/structure/sign/safety/debark_lounge{ + pixel_x = 15; + pixel_y = -32 }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 8 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/chief_mp_office) +/area/almayer/engineering/upper_engineering/port) "tNR" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -65211,24 +70312,26 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha) -"tNT" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"tOd" = ( +"tOr" = ( /obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - pixel_x = -1 + icon_state = "N"; + pixel_y = 1 }, /obj/effect/decal/warning_stripes{ - icon_state = "NW-out" + icon_state = "E"; + pixel_x = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) +/turf/open/floor/almayer{ + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/hydroponics) +"tOu" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "tOC" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -65243,9 +70346,22 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"tPc" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "tPj" = ( /obj/structure/machinery/door/airlock/almayer/marine/requisitions{ + access_modified = 1; name = "\improper Requisition's Office"; + req_one_access = null; req_one_access_txt = "1;26" }, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -65253,27 +70369,35 @@ }, /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/squads/req) +"tPm" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 4 + }, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails{ + pixel_x = 2; + pixel_y = 5 + }, +/turf/open/floor/almayer{ + icon_state = "bluefull" + }, +/area/almayer/living/briefing) "tPI" = ( /obj/structure/bed/chair{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) -"tPX" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 8; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/hydroponics) "tQd" = ( /obj/structure/machinery/light{ dir = 8 @@ -65283,34 +70407,62 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"tQL" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/light, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/hangar) -"tQV" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/lifeboat_pumps/south1) -"tRc" = ( -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 +"tQi" = ( +/obj/effect/landmark/start/warrant, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cryo) +"tQm" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/obj/item/bedsheet/yellow, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 9; + icon_state = "sterile_green_side" }, -/area/almayer/hull/lower_hull/l_m_s) -"tRA" = ( -/obj/structure/bed/chair, -/obj/structure/machinery/firealarm{ - pixel_y = 28 +/area/almayer/shipboard/brig/surgery) +"tQo" = ( +/obj/structure/machinery/status_display{ + pixel_y = -30 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 8; + id = "laddersoutheast"; + name = "\improper South East Ladders Shutters" }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/processing) +/area/almayer/hallways/port_hallway) +"tQA" = ( +/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/u_m_s) +"tQL" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/light, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/hangar) +"tQV" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/lifeboat_pumps/south1) +"tRs" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/spray/cleaner, +/obj/item/frame/light_fixture, +/obj/item/frame/light_fixture, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "tRD" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -65321,30 +70473,15 @@ icon_state = "bluecorner" }, /area/almayer/living/basketball) -"tRV" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"tRX" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"tSc" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +"tSm" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/weldingtool{ + pixel_x = 6; + pixel_y = -16 }, -/area/almayer/hallways/aft_hallway) +/obj/item/clothing/head/welding, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "tSp" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -65355,15 +70492,6 @@ /obj/effect/decal/cleanable/blood, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) -"tSr" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "tSw" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -65376,6 +70504,18 @@ icon_state = "orangecorner" }, /area/almayer/living/briefing) +"tSF" = ( +/obj/structure/bed/chair/comfy/delta, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"tTk" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "tTp" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/sriracha{ @@ -65392,6 +70532,9 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"tTC" = ( +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "tTD" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/storage/box/uscm_mre, @@ -65405,6 +70548,13 @@ icon_state = "kitchen" }, /area/almayer/living/captain_mess) +"tTG" = ( +/obj/structure/sign/safety/terminal{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "tUh" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -65414,24 +70564,24 @@ /area/almayer/squads/req) "tUo" = ( /obj/item/clipboard, -/obj/item/tool/pen/blue, /obj/structure/surface/table/reinforced/black, +/obj/item/tool/pen, /turf/open/floor/almayer, /area/almayer/command/cic) -"tUv" = ( -/obj/structure/machinery/iv_drip, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_corner" - }, -/area/almayer/medical/lower_medical_medbay) "tUx" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) -"tUI" = ( -/obj/item/tool/wet_sign, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) +"tUN" = ( +/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; + dir = 1; + req_one_access = null; + req_one_access_txt = "35" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/workshop/hangar) "tUS" = ( /obj/item/toy/beach_ball/holoball, /obj/structure/holohoop{ @@ -65446,14 +70596,6 @@ icon_state = "plate" }, /area/almayer/living/port_emb) -"tVf" = ( -/obj/structure/sign/safety/restrictedarea{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "tVh" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -65465,6 +70607,12 @@ icon_state = "bluefull" }, /area/almayer/living/bridgebunks) +"tVn" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "tVq" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -65474,26 +70622,62 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha) -"tVB" = ( -/obj/structure/closet/emcloset, +"tVs" = ( +/obj/structure/closet, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) -"tWg" = ( +/area/almayer/maint/upper/u_m_s) +"tVx" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/general_equipment) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) +"tWd" = ( +/obj/structure/largecrate/random/case, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "tWi" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) +"tWl" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + name = "\improper Disposals" + }, +/obj/structure/disposalpipe/junction{ + dir = 8; + icon_state = "pipe-j2" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_a_p) +"tWp" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"tWF" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + req_one_access = null; + req_one_access_txt = "2;30;34" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/mess) +"tWM" = ( +/obj/docking_port/stationary/escape_pod/north, +/turf/open/floor/plating, +/area/almayer/maint/upper/u_m_s) "tWY" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -65504,6 +70688,7 @@ name = "\improper CMO Office Shutters" }, /obj/structure/machinery/door/airlock/almayer/medical/glass{ + access_modified = 1; name = "\improper CMO's Office"; req_one_access = null; req_one_access_txt = "1;5" @@ -65522,6 +70707,16 @@ icon_state = "emeraldfull" }, /area/almayer/living/briefing) +"tXc" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/processing) "tXi" = ( /obj/structure/machinery/conveyor_switch{ id = "gym_2"; @@ -65539,29 +70734,6 @@ icon_state = "test_floor4" }, /area/almayer/squads/req) -"tXs" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/brig/cryo) -"tXG" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/door/window/eastright{ - dir = 8; - req_access_txt = "19" - }, -/obj/effect/landmark/map_item, -/obj/structure/machinery/door/window/eastleft{ - req_access_txt = "19" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/briefing) "tXM" = ( /obj/structure/pipes/vents/pump{ dir = 8 @@ -65605,10 +70777,6 @@ icon_state = "plate" }, /area/almayer/living/port_emb) -"tXW" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "tYi" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -65620,6 +70788,15 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"tYr" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "tYw" = ( /obj/effect/decal/medical_decals{ icon_state = "triagedecalbottomleft"; @@ -65635,12 +70812,18 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"tYB" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "plate" +"tYM" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"tYV" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 }, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) "tYX" = ( /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -65652,41 +70835,29 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) -"tZe" = ( -/obj/item/trash/USCMtray{ - pixel_x = -4; - pixel_y = 10 - }, -/obj/structure/surface/table/almayer, -/obj/item/tool/kitchen/utensil/pfork{ - pixel_x = 9; - pixel_y = 8 - }, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"tZB" = ( -/obj/structure/machinery/light{ - dir = 1 +"tZg" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = -32 }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"tZF" = ( -/obj/structure/machinery/light/small{ - dir = 8 +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 }, /obj/effect/decal/warning_stripes{ - icon_state = "W" + icon_state = "SE-out" }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/port) +"tZM" = ( +/obj/structure/sink{ + pixel_y = 24 }, -/area/almayer/hull/lower_hull/l_a_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "tZP" = ( /obj/structure/surface/rack, /obj/item/clothing/glasses/meson, @@ -65712,16 +70883,20 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/port) -"uaa" = ( -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_m_p) "uac" = ( -/obj/structure/largecrate/random/case, /obj/structure/machinery/light{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"uag" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/mess) "uah" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -65732,21 +70907,43 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"uaI" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/box/autoinjectors{ - pixel_x = -6; - pixel_y = 7 +"ual" = ( +/obj/structure/sink{ + pixel_y = 24 }, -/obj/item/storage/box/autoinjectors{ - pixel_x = -6; - pixel_y = -1 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/obj/item/device/mass_spectrometer{ - pixel_x = 8 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer/research/containment/corner_var1{ + dir = 4 + }, +/area/almayer/medical/containment/cell) +"uay" = ( +/obj/structure/machinery/iv_drip, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "sterile_green_corner" }, +/area/almayer/medical/lower_medical_medbay) +"uaA" = ( +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - icon_state = "sterile_green_side" + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_f_s) +"uaI" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/processor{ + pixel_x = -2; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "mono" }, /area/almayer/medical/medical_science) "uaU" = ( @@ -65765,20 +70962,28 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/command/computerlab) -"uaZ" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = -32 +"ubA" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) -"ubd" = ( -/obj/structure/surface/rack, -/obj/item/frame/table, -/obj/item/frame/table, -/obj/item/frame/table, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"ubI" = ( +/obj/structure/surface/table/almayer, +/obj/item/folder/black_random{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/tool/stamp{ + name = "Corporate Liaison's stamp"; + pixel_x = -8; + pixel_y = 6 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "ucp" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -65789,6 +70994,36 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) +"ucy" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -16; + pixel_y = 13 + }, +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/l_a_p) +"ucz" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/overwatch/almayer{ + dir = 8; + layer = 3.2; + pixel_x = -17; + pixel_y = 15 + }, +/obj/structure/machinery/light, +/obj/structure/transmitter/rotary/no_dnd{ + name = "Bravo Overwatch Telephone"; + phone_category = "Command"; + phone_id = "Bravo Overwatch" + }, +/obj/structure/sign/safety/terminal{ + pixel_x = -17; + pixel_y = -8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/cic) "udi" = ( /turf/open/floor/almayer{ icon_state = "red" @@ -65842,6 +71077,23 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"udR" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = -19; + pixel_y = -6 + }, +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = -19; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "silver" + }, +/area/almayer/shipboard/brig/cic_hallway) "udZ" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer, @@ -65858,29 +71110,23 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/port_point_defense) -"ueh" = ( -/obj/structure/surface/rack, -/obj/structure/ob_ammo/ob_fuel, -/obj/structure/ob_ammo/ob_fuel, -/obj/structure/ob_ammo/ob_fuel, -/obj/structure/ob_ammo/ob_fuel, -/obj/structure/sign/safety/fire_haz{ - pixel_x = 8; - pixel_y = 32 +"uek" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/prop/magazine/boots/n117{ + pixel_x = 2; + pixel_y = 5 }, /turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) -"ueo" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "Evidence Room" + icon_state = "bluefull" }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/area/almayer/living/briefing) +"uew" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 }, -/area/almayer/shipboard/brig/evidence_storage) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) "ueG" = ( /obj/item/bedsheet/orange, /obj/structure/bed{ @@ -65888,10 +71134,23 @@ }, /obj/structure/machinery/cm_vending/clothing/senior_officer{ density = 0; - pixel_y = 30 + pixel_y = 30; + req_access = list(); + req_access_txt = "6" }, /turf/open/floor/wood/ship, /area/almayer/engineering/ce_room) +"ueJ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) "ueZ" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/multi_tile/almayer/marine/alpha{ @@ -65908,14 +71167,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"ufp" = ( -/obj/structure/largecrate/random/case/double, -/obj/structure/sign/safety/bulkhead_door{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "ufx" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -65934,47 +71185,53 @@ icon_state = "cargo" }, /area/almayer/squads/req) -"ugs" = ( -/obj/structure/surface/table/almayer, -/obj/item/book/manual/marine_law{ - pixel_x = -3; - pixel_y = 1 - }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" - }, -/obj/structure/sign/safety/medical{ - pixel_x = -17; - pixel_y = 6 - }, -/obj/structure/sign/safety/restrictedarea{ - pixel_x = -17; - pixel_y = -9 +"ufL" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer/uniform_vendors, +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, +/area/almayer/command/cic) +"ugj" = ( /turf/open/floor/almayer{ - dir = 8; - icon_state = "red" + dir = 4; + icon_state = "orange" }, -/area/almayer/shipboard/brig/lobby) +/area/almayer/maint/hull/lower/l_m_s) "ugu" = ( /obj/structure/machinery/cm_vending/sorted/marine_food, /turf/open/floor/almayer, /area/almayer/living/briefing) +"ugJ" = ( +/obj/structure/largecrate/random/case/small, +/obj/structure/largecrate/random/mini/small_case{ + pixel_x = -1; + pixel_y = 9 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "ugT" = ( /turf/open/floor/almayer{ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"ugV" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/kitchen/tray, -/obj/item/reagent_container/food/drinks/bottle/whiskey, -/obj/item/toy/deck{ - pixel_x = -9 +"ugZ" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/lower/l_a_s) +"uhh" = ( +/obj/structure/machinery/vending/cola{ + density = 0; + pixel_y = 18 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "uhl" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -65985,6 +71242,16 @@ icon_state = "cargo_arrow" }, /area/almayer/living/offices) +"uhE" = ( +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/armory) +"uhM" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/starboard) "uhP" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -65993,30 +71260,52 @@ icon_state = "cargo_arrow" }, /area/almayer/living/offices) -"uhV" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/wood/ship, -/area/almayer/medical/medical_science) -"uia" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 +"uhW" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "redcorner" }, +/area/almayer/shipboard/brig/main_office) +"uif" = ( +/obj/structure/machinery/light, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) +"uiC" = ( +/obj/structure/machinery/alarm/almayer{ + dir = 1 }, -/area/almayer/hull/lower_hull/l_a_s) -"uim" = ( -/obj/structure/largecrate/random/secure, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 9; + icon_state = "orange" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/engineering/lower/engine_core) "uiG" = ( /turf/open/floor/almayer{ dir = 9; icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) +"uiK" = ( +/obj/item/ammo_box/magazine/misc/mre, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) +"uiR" = ( +/obj/structure/prop/invuln{ + desc = "An inflated membrane. This one is puncture proof. Wow!"; + icon = 'icons/obj/items/inflatable.dmi'; + icon_state = "wall"; + name = "umbilical wall" + }, +/obj/structure/blocker/invisible_wall, +/turf/open/floor/almayer_hull{ + dir = 8; + icon_state = "outerhull_dir" + }, +/area/almayer/engineering/upper_engineering/starboard) "uiT" = ( /turf/open/floor/almayer{ dir = 1; @@ -66032,6 +71321,12 @@ icon_state = "test_floor4" }, /area/almayer/command/cichallway) +"ujf" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) "ujz" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -66044,13 +71339,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"ujA" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_m_p) "ujV" = ( /obj/structure/machinery/vending/dinnerware, /turf/open/floor/almayer{ @@ -66067,31 +71355,18 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"ukt" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/barrel/green, +"ukC" = ( +/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) -"uku" = ( -/obj/structure/window/framed/almayer/hull/hijack_bustable, -/turf/open/floor/plating, -/area/almayer/engineering/engineering_workshop/hangar) -"ukS" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/general_equipment) -"ukU" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 +/area/almayer/maint/hull/upper/u_m_p) +"ukP" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/almayer{ + icon_state = "cargo" }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/engineering/lower/engine_core) "ukV" = ( /obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep, /obj/structure/machinery/light{ @@ -66099,34 +71374,32 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) -"ukW" = ( -/obj/structure/machinery/door/airlock/almayer/security{ - name = "\improper Security Checkpoint"; - req_access = null; - req_one_access_txt = "3;19" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/briefing) -"ula" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "Evidence Room" +"uli" = ( +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) +"ulo" = ( +/obj/structure/toilet{ + dir = 8; + layer = 2.9; + pixel_y = 8 }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 8 +/obj/structure/window{ + layer = 2.95; + pixel_y = -2 }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/commandbunks) +"ulp" = ( +/obj/structure/platform, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/area/almayer/shipboard/brig/evidence_storage) -"uli" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/facepaint, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 5; + icon_state = "plating" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/engineering/lower/engine_core) "uly" = ( /obj/structure/bed/stool, /turf/open/floor/almayer{ @@ -66149,6 +71422,15 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) +"umk" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/tool, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "umm" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/light/small, @@ -66156,30 +71438,36 @@ icon_state = "rasputin15" }, /area/almayer/powered/agent) -"umC" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +"umy" = ( +/obj/structure/machinery/light{ + dir = 1 + }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 5; + icon_state = "orange" }, -/area/almayer/medical/upper_medical) +/area/almayer/engineering/upper_engineering/starboard) "umS" = ( -/obj/structure/machinery/firealarm{ - dir = 4; - pixel_x = 24 +/obj/structure/bed/chair/comfy{ + dir = 8 }, /turf/open/floor/almayer{ dir = 4; - icon_state = "red" + icon_state = "blue" }, -/area/almayer/shipboard/starboard_missiles) -"umT" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "Brig" +/area/almayer/living/pilotbunks) +"umW" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/structure/machinery/vending/cigarette/free{ + pixel_y = 16 }, -/area/almayer/hull/lower_hull/l_f_p) +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/cells) "unh" = ( /obj/structure/surface/table/almayer, /obj/item/storage/firstaid/o2, @@ -66203,12 +71491,21 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) -"unJ" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 +"unx" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"unQ" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/effect/spawner/random/tool, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "unT" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/tool/crowbar, @@ -66224,25 +71521,39 @@ /obj/structure/machinery/light{ dir = 4 }, -/obj/structure/machinery/cm_vending/sorted/medical, +/obj/structure/machinery/cm_vending/sorted/medical/bolted, /turf/open/floor/almayer{ dir = 1; icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"unZ" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "uoi" = ( -/obj/structure/surface/rack, -/obj/item/storage/fancy/vials/empty, -/obj/item/storage/fancy/vials/empty, -/obj/item/storage/fancy/vials/empty, -/obj/structure/sign/safety/storage{ - pixel_x = 23; - pixel_y = -32 +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, +/obj/structure/machinery/power/apc/almayer, /turf/open/floor/almayer{ icon_state = "sterile_green" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) +"uoj" = ( +/obj/item/tool/pen, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "uoA" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -66258,30 +71569,13 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"uoS" = ( -/obj/structure/sign/safety/maint{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/starboard_garden) -"uoY" = ( -/obj/structure/surface/table/almayer, -/obj/item/paper_bin/uscm{ - pixel_y = 7 - }, -/obj/item/tool/pen, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/brig/main_office) -"upe" = ( -/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, -/turf/open/floor/almayer{ - icon_state = "cargo" +"uoO" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 }, -/area/almayer/engineering/engine_core) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/p_bow) "upM" = ( /obj/structure/machinery/light{ dir = 4 @@ -66309,44 +71603,70 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"uqa" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) +"upS" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "uqd" = ( -/obj/structure/sign/safety/ref_bio_storage{ - pixel_x = -17; - pixel_y = 7 +/obj/structure/surface/table/almayer, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/obj/structure/sign/safety/biohazard{ - pixel_x = -17; - pixel_y = -7 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/machinery/door_control{ + id = "W_Containment Cell 1"; + name = "Containment Lockdown"; + pixel_x = -7; + pixel_y = 1; + req_one_access_txt = "19;28" + }, +/obj/structure/machinery/door_display/research_cell{ + id = "Containment Cell 1"; + name = "Cell 1 Control"; + pixel_x = 5; + pixel_y = 2 }, -/obj/structure/machinery/cm_vending/sorted/medical/chemistry, /turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_corner" + icon_state = "sterile_green" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) +"uqg" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) +"uqh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/engine_core) "uqo" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/armory) -"uqr" = ( -/obj/structure/machinery/door_control{ - id = "laddersoutheast"; - name = "South East Ladders Shutters"; - pixel_x = 25; - req_one_access_txt = "2;3;12;19"; - throw_range = 15 +"uqy" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ + name = "\improper Brig Cells" }, /turf/open/floor/almayer{ - dir = 4; - icon_state = "green" + icon_state = "test_floor4" }, -/area/almayer/hallways/port_hallway) +/area/almayer/shipboard/brig/main_office) "uqA" = ( /obj/structure/machinery/firealarm{ dir = 8; @@ -66357,33 +71677,50 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"uqH" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "uqI" = ( /obj/structure/machinery/light{ pixel_x = 16 }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"urc" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 +"uqJ" = ( +/turf/open/floor/almayer{ + icon_state = "orangecorner" + }, +/area/almayer/maint/hull/upper/u_a_s) +"urg" = ( +/obj/docking_port/stationary/escape_pod/east, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_m_p) +"ury" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood, +/obj/structure/machinery/light/small{ + dir = 4 }, /turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"urL" = ( +/obj/structure/prop/invuln/overhead_pipe{ dir = 4; - icon_state = "sterile_green_side" + pixel_y = 13 }, -/area/almayer/medical/hydroponics) -"urx" = ( -/obj/structure/disposalpipe/segment{ +/obj/structure/prop/invuln/overhead_pipe{ dir = 4; - icon_state = "pipe-c" + pixel_x = -16; + pixel_y = 13 }, -/turf/closed/wall/almayer, -/area/almayer/engineering/engineering_workshop/hangar) +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/u_m_s) "urM" = ( /obj/structure/machinery/light{ dir = 8 @@ -66398,24 +71735,14 @@ /obj/effect/landmark/late_join/charlie, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) -"ush" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/cameras/almayer_network{ - dir = 8 - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/almayer{ - allow_construction = 0 +"urW" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 7" }, -/area/almayer/shipboard/brig/chief_mp_office) -"usi" = ( -/obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/engineering/lower/engine_core) "usm" = ( /obj/structure/machinery/light, /obj/structure/sign/safety/waterhazard{ @@ -66426,28 +71753,39 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"usr" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/secure_data{ - dir = 1 +"usq" = ( +/obj/structure/sign/safety/ammunition{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/hazard{ + pixel_y = 32 }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, /turf/open/floor/almayer{ - dir = 6; - icon_state = "red" + icon_state = "redfull" }, -/area/almayer/shipboard/brig/perma) -"usw" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/area/almayer/shipboard/panic) +"usy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engine_core) -"usB" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 9 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/lifeboat) +/turf/open/floor/almayer{ + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) +"usL" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/port) "usX" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -66456,6 +71794,21 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) +"usZ" = ( +/obj/structure/pipes/unary/outlet_injector, +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"utn" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "uto" = ( /obj/structure/closet/crate, /obj/item/stack/sheet/plasteel{ @@ -66474,38 +71827,34 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering) +"utC" = ( +/obj/structure/machinery/portable_atmospherics/canister/air, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/upper/u_a_s) "utK" = ( /obj/structure/machinery/light{ dir = 4 }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/living/tankerbunks) -"utZ" = ( -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Brig Lockdown Shutters"; - name = "\improper Brig Lockdown Shutter" - }, -/obj/structure/machinery/door/airlock/almayer/maint/reinforced, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) -"uue" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ - dir = 1; - name = "\improper Cryogenics Bay" +/area/almayer/living/auxiliary_officer_office) +"utX" = ( +/turf/closed/wall/almayer/research/containment/wall/connect_e2{ + icon_state = "containment_wall_connect_e" }, +/area/almayer/medical/containment/cell) +"utZ" = ( /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 4; + icon_state = "redcorner" }, -/area/almayer/shipboard/brig/cryo) +/area/almayer/shipboard/brig/processing) "uuj" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray{ @@ -66517,17 +71866,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/bravo) -"uuq" = ( -/obj/structure/bed, -/obj/structure/machinery/flasher{ - id = "Cell 4"; - pixel_x = 24 - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/shipboard/brig/cells) "uuu" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -66538,12 +71876,7 @@ pixel_y = 2 }, /obj/structure/largecrate/random/case, -/obj/item/prop{ - desc = "An older design of the Pulse Rifle commonly used by Colonial Marines. This one has seen better days. The trigger is missing, the barrel is bent, and it no longer appropriately feeds magazines."; - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi'; - icon_state = "m41amk1_e"; - item_state = "m41amk1"; - name = "\improper Broken M41A pulse rifle"; +/obj/effect/spawner/prop_gun/m41aMK1{ pixel_y = 7 }, /obj/item/prop/helmetgarb/gunoil{ @@ -66565,6 +71898,18 @@ icon_state = "test_floor4" }, /area/almayer/powered) +"uuD" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 2; + name = "\improper Atmospherics Wing" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower) "uuR" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal8"; @@ -66588,22 +71933,15 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) -"uvk" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south1) -"uvs" = ( -/obj/structure/machinery/conveyor{ - id = "lower_garbage" +"uvp" = ( +/obj/structure/largecrate/supply, +/obj/structure/sign/safety/bulkhead_door{ + pixel_y = 32 }, -/obj/structure/machinery/recycler, /turf/open/floor/almayer{ - dir = 4; - icon_state = "plating_striped" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/s_bow) "uvt" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -66622,56 +71960,61 @@ icon_state = "orangecorner" }, /area/almayer/squads/bravo) -"uvG" = ( +"uvP" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/obj/structure/sign/safety/press_area_ag{ - pixel_x = -17; - pixel_y = 7 +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/obj/structure/sign/safety/airlock{ - pixel_x = -17; - pixel_y = -8 +/turf/open/floor/almayer/research/containment/corner{ + dir = 4 }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" +/area/almayer/medical/containment/cell) +"uvU" = ( +/obj/structure/surface/table/almayer, +/obj/effect/landmark/map_item{ + pixel_x = 5 }, -/area/almayer/hull/lower_hull/l_a_s) -"uvS" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 +/obj/item/facepaint/black{ + pixel_x = -10 }, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south1) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "uvY" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "red" }, /area/almayer/shipboard/brig/cells) -"uvZ" = ( -/obj/item/reagent_container/food/drinks/bottle/whiskey{ - desc = "A premium double-malt whiskey, this bottle was gifted to the Captain of the USS Almayer after the completion of the ship's space trials by the VADM. himself."; - pixel_x = 1; - pixel_y = 16 +"uwf" = ( +/obj/structure/machinery/light, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) +"uws" = ( +/obj/structure/machinery/light{ + dir = 4 }, -/obj/item/reagent_container/food/drinks/bottle/whiskey{ - pixel_x = 9; - pixel_y = 16 +/turf/open/floor/almayer{ + icon_state = "cargo_arrow" }, -/obj/item/reagent_container/food/drinks/bottle/whiskey{ - pixel_x = -7; - pixel_y = 16 +/area/almayer/shipboard/port_missiles) +"uwt" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/bed/chair/comfy/delta{ + dir = 8 }, -/obj/item/clothing/mask/cigarette/pipe{ - pixel_y = 5 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/surface/table/woodentable/fancy, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) +/area/almayer/living/briefing) "uwv" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/weapon_room/notunnel) @@ -66684,18 +72027,33 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) -"uwZ" = ( -/obj/structure/machinery/botany/extractor, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 +"uwS" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ + dir = 2; + name = "\improper Brig Armoury"; + req_access = null; + req_one_access_txt = "1;3" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + icon_state = "test_floor4" }, -/area/almayer/medical/hydroponics) +/area/almayer/shipboard/brig/main_office) +"uwZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer/research/containment/floor2{ + dir = 1 + }, +/area/almayer/medical/containment/cell) "uxa" = ( /obj/structure/bed/chair/wood/normal{ dir = 8 @@ -66704,6 +72062,18 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) +"uxb" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) +"uxl" = ( +/obj/item/cell/high/empty, +/obj/item/cell/high/empty, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) "uxp" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -66720,6 +72090,12 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"uxs" = ( +/obj/structure/machinery/pipedispenser/orderable, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "uxC" = ( /obj/structure/machinery/light{ dir = 4 @@ -66749,6 +72125,10 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"uxX" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "uxZ" = ( /obj/structure/machinery/door_control{ id = "laddersouthwest"; @@ -66761,6 +72141,19 @@ icon_state = "greencorner" }, /area/almayer/hallways/port_hallway) +"uyd" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "uys" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/squads/req) @@ -66768,46 +72161,22 @@ /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, /area/almayer/lifeboat_pumps/south2) +"uyH" = ( +/turf/closed/wall/almayer/research/containment/wall/divide, +/area/almayer/medical/containment/cell) "uyJ" = ( /obj/structure/machinery/cm_vending/sorted/medical/chemistry, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/medical/chemistry) -"uzg" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) -"uzm" = ( -/obj/structure/machinery/door/airlock/almayer/maint/reinforced, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Brig Lockdown Shutters"; - name = "\improper Brig Lockdown Shutter" +"uzv" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_s) -"uzx" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/cryo) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "uzy" = ( /obj/item/reagent_container/glass/bucket, /obj/effect/decal/cleanable/blood/oil, @@ -66822,94 +72191,30 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/ce_room) -"uzP" = ( -/obj/item/bedsheet/blue{ - layer = 3.2 - }, -/obj/item/bedsheet/blue{ - pixel_y = 13 - }, -/obj/item/toy/farwadoll{ - desc = "A USCM approved plush doll. It's not soft and hardly comforting!"; - force = 15; - icon_state = "therapyred"; - layer = 4.1; - name = "Sergeant Huggs"; - pixel_y = 15; - throwforce = 15 - }, -/obj/item/clothing/head/cmcap{ - layer = 4.1; - pixel_x = -1; - pixel_y = 22 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "blue" - }, -/area/almayer/living/port_emb) -"uzU" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/surface/table/almayer, -/obj/item/ashtray/bronze{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/item/trash/cigbutt/cigarbutt{ - pixel_x = 10; - pixel_y = 15 - }, -/obj/item/clothing/mask/cigarette{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/clothing/mask/cigarette{ - pixel_x = -5; - pixel_y = 6 - }, -/obj/item/clothing/mask/cigarette{ - pixel_x = -5; - pixel_y = 9 - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "redcorner" +"uAb" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" }, -/area/almayer/shipboard/brig/main_office) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/hangar) "uAj" = ( /obj/structure/bed/chair, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ dir = 1; icon_state = "red" }, /area/almayer/shipboard/port_missiles) -"uAs" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"uAl" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/obj/structure/largecrate/random/barrel/white, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "orange" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/engineering/upper_engineering/port) "uAC" = ( /obj/item/bedsheet/purple{ layer = 3.2 @@ -66939,6 +72244,21 @@ icon_state = "emerald" }, /area/almayer/living/port_emb) +"uAK" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower/engine_core) +"uAL" = ( +/obj/structure/bed/chair/wood/normal, +/obj/item/bedsheet/brown, +/obj/item/toy/plush/farwa, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/brig/cells) "uAW" = ( /obj/structure/machinery/cryopod{ layer = 3.1; @@ -66949,7 +72269,12 @@ }, /area/almayer/squads/bravo) "uBi" = ( -/obj/structure/largecrate/random/case/double, +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) "uBn" = ( @@ -66963,6 +72288,30 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) +"uBx" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -16; + pixel_y = 13 + }, +/obj/structure/sign/safety/water{ + pixel_x = -17 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "uBz" = ( /obj/structure/sign/safety/maint{ pixel_x = 8; @@ -66974,7 +72323,9 @@ }, /area/almayer/hallways/stern_hallway) "uBM" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/combat_correspondent) "uBN" = ( @@ -67010,15 +72361,13 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"uCl" = ( -/obj/structure/closet/secure_closet/surgical{ - pixel_x = -30 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_side" - }, -/area/almayer/shipboard/brig/surgery) +"uCw" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_container/food/snacks/tomatomeat, +/obj/item/reagent_container/food/snacks/tomatomeat, +/obj/item/reagent_container/food/snacks/tomatomeat, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "uCM" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -67037,6 +72386,12 @@ icon_state = "test_floor4" }, /area/almayer/squads/charlie) +"uCR" = ( +/obj/item/tool/warning_cone{ + pixel_y = 13 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "uCW" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -67044,6 +72399,9 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cichallway) +"uDg" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/s_bow) "uDn" = ( /obj/structure/ladder{ height = 1; @@ -67053,13 +72411,6 @@ icon_state = "plate" }, /area/almayer/shipboard/navigation) -"uDp" = ( -/obj/structure/closet/secure_closet/brig, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/brig/perma) "uDA" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -67068,15 +72419,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lockerroom) -"uDB" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "uDW" = ( /obj/structure/machinery/cm_vending/clothing/tl/delta{ density = 0; @@ -67086,18 +72428,6 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"uEc" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"uEv" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "uFd" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -67111,6 +72441,10 @@ icon_state = "plate" }, /area/almayer/living/offices) +"uFg" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "uFo" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/door/window/eastright{ @@ -67125,17 +72459,21 @@ }, /area/almayer/medical/lockerroom) "uFp" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/brig/general_equipment) -"uFt" = ( -/obj/structure/largecrate/random/case/double, +/obj/structure/closet/secure_closet/engineering_electrical, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/lower/s_bow) +"uFq" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/lobby) "uFH" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/map_item, @@ -67156,12 +72494,6 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) -"uGa" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south2) "uGc" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm, /obj/structure/sign/safety/hazard{ @@ -67179,54 +72511,32 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) -"uGo" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, +"uGt" = ( /obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "SE-out" }, +/turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"uGw" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/food/drinks/cans/souto/diet/lime{ - pixel_x = 7; - pixel_y = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"uGz" = ( -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south1) +"uGN" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/general_equipment) "uGQ" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) -"uId" = ( -/obj/structure/bed/chair/comfy/teal{ - dir = 8 +"uGU" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/south1) -"uIp" = ( +/area/almayer/maint/hull/lower/l_f_p) +"uHk" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/light{ dir = 4 @@ -67237,12 +72547,39 @@ /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull) +/area/almayer/maint/lower/cryo_cells) +"uHr" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south2) +"uHT" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/s_bow) +"uId" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "green" + }, +/area/almayer/hallways/aft_hallway) "uIv" = ( /turf/open/floor/almayer{ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"uIA" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "uII" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -67271,27 +72608,6 @@ icon_state = "outerhull_dir" }, /area/space) -"uJl" = ( -/obj/structure/surface/table/almayer, -/obj/item/pizzabox/meat, -/obj/item/reagent_container/food/drinks/cans/souto/diet/peach{ - pixel_x = -4; - pixel_y = -3 - }, -/obj/item/reagent_container/food/drinks/cans/souto/diet/cherry{ - pixel_x = 8; - pixel_y = 6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"uJo" = ( -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "uJs" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -67334,19 +72650,12 @@ icon_state = "plate" }, /area/almayer/living/gym) -"uKk" = ( -/obj/structure/surface/table/almayer, -/obj/item/circuitboard/airlock, -/obj/item/circuitboard/airlock{ - pixel_x = 7; - pixel_y = 7 - }, -/obj/item/stack/cable_coil{ - pixel_x = -7; - pixel_y = 11 +"uKl" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/u_a_s) "uKv" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/multitool{ @@ -67364,6 +72673,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) +"uKH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "uKV" = ( /obj/structure/sign/safety/storage{ pixel_x = 32; @@ -67395,40 +72710,26 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"uLJ" = ( -/obj/structure/machinery/light{ - dir = 4; - invisibility = 101 - }, -/obj/structure/sign/safety/ammunition{ - pixel_x = 32; - pixel_y = -7 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/shipboard/brig/execution) -"uLN" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"uLW" = ( -/obj/item/tool/mop{ - pixel_x = -6; - pixel_y = 24 +"uLG" = ( +/obj/structure/closet/crate/freezer{ + desc = "A freezer crate. Someone has written 'open on christmas' in marker on the top." }, -/obj/item/reagent_container/glass/bucket, +/obj/item/reagent_container/food/snacks/mre_pack/xmas2, +/obj/item/reagent_container/food/snacks/mre_pack/xmas1, +/obj/item/reagent_container/food/snacks/mre_pack/xmas3, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/maint/hull/upper/s_stern) "uMc" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, /area/almayer/engineering/upper_engineering/starboard) +"uMf" = ( +/obj/structure/machinery/light/small, +/obj/structure/largecrate/random/secure, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/p_bow) "uMj" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -67465,27 +72766,30 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"uNe" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/perma) "uNg" = ( /obj/structure/machinery/cryopod, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/living/bridgebunks) -"uNl" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 +"uNq" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" }, /turf/open/floor/almayer{ dir = 4; - icon_state = "redcorner" + icon_state = "orange" }, -/area/almayer/shipboard/brig/chief_mp_office) +/area/almayer/engineering/lower/workshop/hangar) +"uNz" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "uNB" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -67493,15 +72797,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"uNF" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) -"uNL" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_f_s) "uNM" = ( /turf/open/floor/almayer{ dir = 8; @@ -67522,14 +72817,6 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"uNW" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "uOc" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -67543,12 +72830,19 @@ "uOi" = ( /turf/closed/wall/almayer/outer, /area/almayer/lifeboat_pumps/south2) +"uOE" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "uOJ" = ( -/obj/structure/machinery/prop/almayer/computer{ - dir = 8; - pixel_x = 16 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "mono" }, -/turf/open/floor/almayer, /area/almayer/living/pilotbunks) "uPr" = ( /turf/open/floor/almayer{ @@ -67564,6 +72858,29 @@ icon_state = "orangecorner" }, /area/almayer/hallways/stern_hallway) +"uPN" = ( +/obj/item/tool/wirecutters/clippers, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"uPP" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 2; + name = "\improper Atmospherics Wing" + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower) +"uPQ" = ( +/obj/item/weapon/dart/green, +/obj/structure/dartboard{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "uPW" = ( /obj/structure/bed/chair{ dir = 4 @@ -67572,30 +72889,31 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/living/port_emb) -"uPX" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/glass/beaker/large, -/obj/item/reagent_container/glass/beaker{ - pixel_x = 5 - }, -/obj/structure/machinery/disposal{ - density = 0; - desc = "A pneumatic delivery unit. Sends items to the requisitions."; - icon_state = "delivery_med"; - name = "Requisitions Delivery Unit"; - pixel_y = 28 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/testlab) "uQm" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/perma) +"uQn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 3 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/starboard_hallway) +"uQo" = ( +/obj/structure/machinery/disposal, +/obj/item/reagent_container/food/drinks/cans/beer{ + layer = 3.3; + pixel_x = -4; + pixel_y = 15 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/port_emb) "uQU" = ( /obj/structure/stairs{ dir = 1 @@ -67619,15 +72937,19 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha) -"uRr" = ( +"uRs" = ( +/obj/structure/machinery/light{ + dir = 8 + }, /obj/effect/decal/warning_stripes{ - icon_state = "S" + icon_state = "N"; + pixel_y = 1 }, -/obj/structure/closet/secure_closet/engineering_materials, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 9; + icon_state = "red" }, -/area/almayer/engineering/engineering_workshop/hangar) +/area/almayer/command/lifeboat) "uRt" = ( /obj/structure/machinery/light{ dir = 8 @@ -67640,20 +72962,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"uRI" = ( -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice1"; - pixel_x = 16; - pixel_y = -8 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/largecrate/supply/supplies/mre, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "uRM" = ( /obj/structure/bed{ can_buckle = 0 @@ -67681,50 +72989,86 @@ }, /turf/open/floor/plating, /area/almayer/living/port_emb) -"uRQ" = ( -/obj/item/storage/firstaid/fire, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"uSk" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 +"uRR" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass{ + name = "Brig" }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/command/lifeboat) -"uSq" = ( +/area/almayer/maint/hull/lower/s_bow) +"uRY" = ( /obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - layer = 2.5; + icon_state = "N"; pixel_y = 1 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/machinery/light{ + dir = 1 }, -/area/almayer/hull/lower_hull/l_f_p) -"uSL" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "S" +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" }, -/obj/structure/sign/safety/stairs{ - pixel_x = -17 +/area/almayer/hallways/upper/port) +"uSB" = ( +/obj/structure/machinery/keycard_auth{ + pixel_x = 25 }, /turf/open/floor/almayer{ - dir = 1; + dir = 4; icon_state = "red" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/shipboard/brig/chief_mp_office) +"uSH" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/reagent_dispensers/water_cooler{ + density = 0; + pixel_x = 12; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "uSS" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/medical/lockerroom) +"uSU" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) +"uSW" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 4; + layer = 2.7 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) +"uTk" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"uTs" = ( +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" + }, +/obj/structure/machinery/door/airlock/almayer/maint/reinforced, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/p_bow) "uTv" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray{ @@ -67733,10 +73077,20 @@ }, /turf/open/floor/almayer, /area/almayer/squads/bravo) -"uTN" = ( -/obj/effect/landmark/start/liaison, +"uTE" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/command/corporateliason) +/area/almayer/maint/hull/upper/u_f_s) +"uTN" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/living/pilotbunks) "uTU" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -67751,12 +73105,23 @@ icon_state = "test_floor4" }, /area/almayer/command/cic) +"uTV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/engineering/lower/workshop) "uTY" = ( -/obj/item/trash/cigbutt/ucigbutt, +/obj/effect/step_trigger/clone_cleaner, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 1; + icon_state = "green" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/hallways/aft_hallway) "uTZ" = ( /obj/structure/machinery/light/small, /turf/open/floor/almayer{ @@ -67798,14 +73163,6 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"uUs" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/perma) "uUt" = ( /obj/structure/surface/table/almayer, /obj/effect/spawner/random/technology_scanner, @@ -67816,6 +73173,19 @@ icon_state = "plate" }, /area/almayer/shipboard/starboard_point_defense) +"uUu" = ( +/obj/structure/machinery/status_display{ + pixel_x = 32 + }, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/secure_data{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/shipboard/brig/perma) "uUz" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -67826,32 +73196,12 @@ }, /turf/open/floor/plating, /area/almayer/engineering/upper_engineering/port) -"uUO" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/door_control{ - id = "courtyard_cells"; - name = "\improper Courtyard Lockdown Shutters"; - pixel_x = 16; - req_access_txt = "3" - }, -/obj/structure/machinery/recharger, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/processing) -"uUV" = ( -/obj/structure/machinery/shower, -/obj/structure/window/reinforced/tinted{ - dir = 8 - }, -/obj/structure/machinery/door/window/tinted{ - dir = 2 - }, -/turf/open/floor/prison{ - icon_state = "kitchen" +"uVc" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 }, -/area/almayer/engineering/upper_engineering/port) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/workshop) "uVd" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = -25 @@ -67866,14 +73216,23 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"uVi" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/camera, +"uVp" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_corner" + icon_state = "plate" }, -/area/almayer/medical/containment) +/area/almayer/maint/hull/lower/l_a_p) +"uVv" = ( +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ + dir = 1 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "uVA" = ( /turf/open/floor/almayer{ dir = 4; @@ -67890,26 +73249,19 @@ icon_state = "plating_striped" }, /area/almayer/living/cryo_cells) -"uVF" = ( -/obj/structure/disposalpipe/segment{ +"uVV" = ( +/obj/structure/machinery/light{ dir = 4 }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/perma) +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/cells) "uVX" = ( /obj/structure/machinery/light{ dir = 1 }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/machinery/cm_vending/sorted/cargo_guns/pilot_officer, /turf/open/floor/almayer{ - icon_state = "sterile" + icon_state = "plate" }, /area/almayer/living/pilotbunks) "uWc" = ( @@ -67927,22 +73279,6 @@ icon_state = "red" }, /area/almayer/hallways/stern_hallway) -"uWI" = ( -/obj/structure/surface/table/almayer, -/obj/item/ashtray/plastic, -/obj/item/trash/cigbutt{ - pixel_x = 1; - pixel_y = 8 - }, -/obj/item/reagent_container/food/drinks/cans/souto/diet/cherry{ - pixel_x = -9; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "green" - }, -/area/almayer/squads/req) "uWV" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -67970,7 +73306,6 @@ id = "medcryobeds"; id_tag = "medcryobeds"; name = "Medical Hypersleep Access"; - req_access = null; req_one_access = null }, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -67981,8 +73316,37 @@ }, /area/almayer/medical/lower_medical_medbay) "uXj" = ( -/turf/closed/wall/almayer/white/reinforced, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer/research/containment/floor2{ + dir = 8 + }, /area/almayer/medical/containment/cell) +"uXk" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) +"uXm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) +"uXu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/port_hallway) "uXL" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -67992,6 +73356,13 @@ icon_state = "tcomms" }, /area/almayer/engineering/upper_engineering/starboard) +"uXU" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_container/food/snacks/sliceable/pizza/vegetablepizza, +/obj/item/reagent_container/food/snacks/sliceable/pizza/mushroompizza, +/obj/item/reagent_container/food/snacks/sliceable/pizza/vegetablepizza, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "uYa" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -68001,12 +73372,29 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"uYO" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 +"uYd" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 12 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/starboard_hallway) +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) +"uYg" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) +"uYn" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "uZo" = ( /obj/structure/bed/stool, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -68017,23 +73405,37 @@ icon_state = "emerald" }, /area/almayer/living/port_emb) +"uZF" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop) +"uZH" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "uZQ" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/hallways/repair_bay) -"uZY" = ( -/obj/structure/closet/secure_closet/guncabinet/riot_control, -/obj/item/weapon/shield/riot, -/obj/item/weapon/shield/riot, -/obj/item/weapon/shield/riot, -/obj/effect/decal/warning_stripes{ - icon_state = "S" +"uZV" = ( +/obj/structure/reagent_dispensers/fueltank/gas/methane{ + anchored = 1 }, -/obj/structure/machinery/light/small{ - dir = 1 +/obj/structure/sign/safety/fire_haz{ + pixel_x = 8; + pixel_y = -32 }, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "uZZ" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Basketball Court" @@ -68052,6 +73454,32 @@ }, /turf/closed/wall/almayer, /area/almayer/hallways/starboard_umbilical) +"vaQ" = ( +/obj/structure/machinery/door/airlock/almayer/medical{ + dir = 1; + name = "Medical Storage" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/lower_medical_medbay) +"vaV" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"vaZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "vbf" = ( /obj/structure/machinery/landinglight/ds2/delaytwo{ dir = 8 @@ -68063,9 +73491,35 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"vbu" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/weldpack, +/obj/item/storage/toolbox/mechanical, +/obj/item/reagent_container/spray/cleaner, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/maint/hull/upper/u_a_s) "vbB" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) +"vbI" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 + }, +/obj/item/paper, +/obj/item/tool/pen{ + pixel_x = -5; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/living/briefing) "vbM" = ( /obj/structure/flora/pottedplant{ desc = "It is made of Fiberbush(tm). It contains asbestos."; @@ -68073,6 +73527,9 @@ name = "synthetic potted plant"; pixel_y = 8 }, +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ dir = 9; icon_state = "orange" @@ -68080,6 +73537,9 @@ /area/almayer/squads/bravo) "vbR" = ( /obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ dir = 5; icon_state = "green" @@ -68103,13 +73563,15 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_medbay) -"vce" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, +"vcm" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = -30 + }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 8; + icon_state = "red" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/shipboard/brig/perma) "vcq" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -68131,26 +73593,25 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) -"vcG" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/recharger, -/obj/item/device/flash, -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = 25 +"vcI" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) +"vdl" = ( +/obj/structure/window/reinforced/ultra{ + pixel_y = -12 + }, +/obj/structure/bed/chair/bolted, +/obj/structure/machinery/status_display{ + pixel_y = 30 }, -/area/almayer/shipboard/brig/general_equipment) -"vcV" = ( -/obj/structure/surface/rack, -/obj/item/cell/high/empty, -/obj/item/cell/high/empty, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "plating_striped" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/shipboard/brig/execution) "vdJ" = ( /obj/structure/surface/table/almayer, /obj/item/pipe{ @@ -68194,24 +73655,24 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) "vdO" = ( -/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ - id = "Containment Cell 3"; - locked = 1; - name = "\improper Containment Cell 3"; - unacidable = 1 +/obj/structure/pipes/standard/cap/hidden{ + dir = 4 }, -/obj/structure/machinery/door/poddoor/shutters/almayer/containment{ - dir = 4; - id = "Containment Cell 3"; - name = "\improper Containment Cell 3" +/obj/structure/machinery/cryo_cell{ + dir = 1 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "mono" }, -/area/almayer/medical/containment/cell) -"vdU" = ( -/turf/open/floor/wood/ship, -/area/almayer/living/grunt_rnr) +/area/almayer/medical/medical_science) +"vdT" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) "vdW" = ( /obj/structure/disposalpipe/junction{ dir = 4 @@ -68227,6 +73688,12 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"veq" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "veu" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray{ @@ -68237,24 +73704,27 @@ icon_state = "emeraldfull" }, /area/almayer/living/briefing) -"vez" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/camera, -/obj/item/device/camera_film, +"veO" = ( +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = -6 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/shipboard/brig/main_office) -"veI" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 +/area/almayer/maint/hull/upper/u_m_s) +"veW" = ( +/obj/structure/machinery/door/airlock/almayer/generic/glass{ + name = "\improper Passenger Cryogenics Bay" }, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/open/floor/almayer, -/area/almayer/living/port_emb) +/area/almayer/maint/hull/upper/u_m_p) "vfa" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -68277,15 +73747,15 @@ icon_state = "test_floor4" }, /area/almayer/powered) -"vfv" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 +"vfw" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "redcorner" +/obj/structure/machinery/firealarm{ + pixel_y = 28 }, -/area/almayer/shipboard/brig/execution) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/main_office) "vfx" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -68302,15 +73772,30 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"vfJ" = ( -/obj/structure/surface/rack, -/obj/item/frame/table, -/obj/item/frame/table, -/obj/item/frame/table, -/turf/open/floor/almayer{ - icon_state = "plate" +"vfB" = ( +/turf/open/floor/almayer/no_build{ + dir = 4 + }, +/area/almayer/command/airoom) +"vfP" = ( +/turf/open/floor/almayer/research/containment/corner{ + dir = 1 + }, +/area/almayer/medical/containment/cell) +"vfS" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 2 }, -/area/almayer/hull/lower_hull/l_m_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) +"vgi" = ( +/obj/structure/pipes/vents/scrubber, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/general_equipment) "vgk" = ( /obj/structure/closet/firecloset, /obj/structure/machinery/camera/autoname/almayer{ @@ -68322,31 +73807,69 @@ icon_state = "greencorner" }, /area/almayer/hallways/port_hallway) +"vgn" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/paper_bin/uscm{ + pixel_x = 9; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = 9; + pixel_y = 2 + }, +/obj/item/tool/pen{ + pixel_x = 9; + pixel_y = 9 + }, +/obj/structure/prop/holidays/string_lights{ + dir = 8; + pixel_x = 29 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"vgv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop) +"vgw" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/engineering/lower) "vgx" = ( -/obj/structure/machinery/flasher{ - id = "Containment Cell 1"; - layer = 2.1; - name = "Mounted Flash"; - pixel_y = 30 +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, -/turf/open/floor/almayer/research/containment/floor2{ - dir = 1 +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/research, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_corner" }, -/area/almayer/medical/containment/cell) +/area/almayer/medical/hydroponics) "vgB" = ( /obj/structure/surface/table/almayer, -/obj/item/paper_bin/wy{ - pixel_x = 6; - pixel_y = 5 +/obj/item/storage/box/autoinjectors{ + pixel_x = -6; + pixel_y = -1 }, -/obj/item/clipboard{ - pixel_x = -8 +/obj/item/device/mass_spectrometer{ + pixel_x = 8 }, -/obj/item/folder/white{ - pixel_x = -8 +/obj/item/storage/box/pillbottles{ + pixel_x = -6; + pixel_y = 9 }, -/obj/item/tool/pen{ - pixel_x = 8 +/obj/item/reagent_container/glass/beaker/cryoxadone{ + pixel_x = 8; + pixel_y = 10 }, /turf/open/floor/almayer{ icon_state = "sterile_green_side" @@ -68392,41 +73915,39 @@ }, /area/almayer/hallways/starboard_hallway) "vgO" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_side" +/turf/closed/wall/almayer/research/containment/wall/east, +/area/almayer/medical/containment/cell) +"vgW" = ( +/obj/structure/sign/safety/security{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/restrictedarea{ + pixel_y = 32 }, -/area/almayer/medical/hydroponics) -"vgQ" = ( -/obj/structure/surface/rack, -/obj/item/tool/crowbar, -/obj/item/tool/weldingtool, -/obj/item/tool/wrench, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/shipboard/brig/main_office) "vhe" = ( -/obj/structure/sign/kiddieplaque{ - pixel_x = -32 +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 18 }, -/turf/open/floor/almayer{ +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 18 + }, +/obj/item/folder/white, +/obj/item/folder/white, +/obj/item/folder/white, +/turf/open/floor/almayer/no_build{ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"vhq" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) -"vht" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "vhw" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -68434,10 +73955,10 @@ /obj/structure/machinery/disposal, /turf/open/floor/almayer, /area/almayer/living/offices/flight) -"vhI" = ( -/obj/structure/closet/firecloset, +"vhA" = ( +/obj/structure/largecrate/random/barrel/red, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/p_bow) "vhR" = ( /obj/structure/flora/pottedplant{ desc = "It is made of Fiberbush(tm). It contains asbestos."; @@ -68501,13 +74022,6 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"vim" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "vit" = ( /turf/open/floor/almayer{ icon_state = "dark_sterile" @@ -68527,6 +74041,23 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/port_emb) +"viB" = ( +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk{ + allow_construction = 0 + }, +/area/almayer/command/airoom) +"viH" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "Bathroom" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/main_office) "viJ" = ( /obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/almayer{ @@ -68558,6 +74089,16 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"vjd" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/lifeboat) "vjg" = ( /obj/structure/prop/almayer/missile_tube{ icon_state = "missiletubesouth" @@ -68568,12 +74109,13 @@ icon_state = "plating" }, /area/almayer/shipboard/port_missiles) -"vjx" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/almayer{ - icon_state = "plate" +"vjv" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/area/almayer/hull/lower_hull/l_a_s) +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "vjC" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -68590,6 +74132,34 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"vjK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/shipboard/port_missiles) +"vjS" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + layer = 5.1; + name = "water pipe" + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Hangar Lockdown"; + name = "\improper Hangar Lockdown Blast Door" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/lower/constr) +"vjW" = ( +/obj/structure/reagent_dispensers/watertank{ + anchored = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "vka" = ( /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) @@ -68607,28 +74177,36 @@ }, /area/almayer/living/captain_mess) "vkp" = ( -/obj/structure/machinery/light/containment, -/turf/open/floor/almayer/research/containment/floor2{ - dir = 1 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/area/almayer/medical/containment/cell) -"vkD" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -16; - pixel_y = 13 +/area/almayer/medical/medical_science) +"vky" = ( +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = 12; - pixel_y = 13 +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/maint/hull/upper/p_bow) +"vkI" = ( +/obj/item/coin/silver{ + desc = "A small coin, bearing the falling falcons insignia."; + name = "falling falcons challenge coin" + }, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "vkM" = ( /obj/structure/machinery/door/airlock/almayer/security/glass{ dir = 1; @@ -68642,6 +74220,20 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/general_equipment) +"vkO" = ( +/obj/structure/closet, +/obj/item/stack/sheet/glass/large_stack, +/obj/item/device/lightreplacer, +/obj/item/reagent_container/spray/cleaner, +/obj/item/stack/rods{ + amount = 40 + }, +/obj/item/tool/weldingtool, +/obj/item/clothing/glasses/welding, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/s_bow) "vkR" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -68652,22 +74244,18 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"vli" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/machinery/power/apc/almayer/hardened{ - dir = 8 - }, -/obj/structure/surface/rack, -/obj/item/stack/sheet/glass/reinforced{ - amount = 50 - }, +"vkV" = ( +/obj/effect/landmark/start/liaison, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) +"vlk" = ( +/obj/structure/closet/emcloset, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, /turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" + icon_state = "cargo" }, -/area/almayer/shipboard/brig/processing) +/area/almayer/command/lifeboat) "vln" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -68685,6 +74273,55 @@ icon_state = "redfull" }, /area/almayer/shipboard/port_missiles) +"vlM" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/cells) +"vlN" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) +"vlO" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/bedsheet/yellow{ + layer = 3.2 + }, +/obj/item/bedsheet/yellow{ + pixel_y = 13 + }, +/obj/structure/sign/safety/bathunisex{ + pixel_x = -16; + pixel_y = 8 + }, +/obj/item/toy/plush/barricade, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/port_emb) "vlX" = ( /obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep, /turf/open/floor/almayer{ @@ -68707,22 +74344,47 @@ icon_state = "cargo" }, /area/almayer/hallways/hangar) -"vmK" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 +"vmq" = ( +/turf/open/floor/almayer, +/area/almayer/maint/hull/lower/l_m_s) +"vmu" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) +"vmE" = ( +/turf/open/floor/almayer{ + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower) +"vmJ" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/hallways/upper/port) "vmN" = ( /obj/structure/machinery/light, +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, /turf/open/floor/almayer{ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) +"vmP" = ( +/obj/structure/bed/chair/comfy/bravo{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "vmW" = ( /turf/open/floor/almayer{ dir = 6; @@ -68738,57 +74400,61 @@ icon_state = "plate" }, /area/almayer/living/gym) -"vnV" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"vot" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/machinery/light/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) -"vox" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/radio{ - pixel_x = -6; - pixel_y = 3 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"voA" = ( -/obj/structure/platform_decoration, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -14; - pixel_y = 13 - }, +"vor" = ( +/obj/effect/decal/cleanable/blood, +/obj/structure/prop/broken_arcade, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) -"voQ" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ +/area/almayer/maint/hull/upper/u_m_p) +"vpe" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/airlock/almayer/engineering/reinforced/OT{ dir = 1 }, /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/engineering/lower/workshop/hangar) +"vpf" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "vpn" = ( /turf/open/floor/almayer{ dir = 9; icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"vpv" = ( +/obj/structure/machinery/shower, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/machinery/door/window/tinted{ + dir = 2 + }, +/obj/item/clothing/mask/cigarette/weed, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/port) "vpI" = ( -/obj/effect/landmark/start/police, +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cryo) +/area/almayer/maint/hull/upper/u_m_p) +"vpT" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/cameras/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "vpV" = ( /turf/open/floor/almayer{ dir = 10; @@ -68801,12 +74467,40 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"vqc" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + dir = 1; + name = "\improper Holding Cell" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/processing) "vqC" = ( /obj/structure/pipes/vents/pump{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/shipboard/port_missiles) +"vqD" = ( +/obj/item/trash/candle, +/obj/item/tool/match/paper, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) +"vqK" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "vqL" = ( /obj/item/clothing/under/shorts/black, /obj/structure/machinery/power/apc/almayer{ @@ -68817,17 +74511,41 @@ }, /area/almayer/engineering/laundry) "vqW" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, /turf/open/floor/almayer{ - dir = 6; icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"vqZ" = ( +/obj/structure/machinery/shower{ + pixel_y = 16 + }, +/obj/structure/sign/safety/biolab{ + pixel_x = -9; + pixel_y = 32 + }, +/obj/structure/sign/safety/biohazard{ + pixel_x = 25; + pixel_y = 32 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 80; + pixel_y = 6 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 80; + pixel_y = 6 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/medical/medical_science) "vra" = ( /turf/closed/wall/almayer, /area/almayer/squads/charlie_delta_shared) @@ -68850,6 +74568,19 @@ icon_state = "cargo" }, /area/almayer/living/offices) +"vrJ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 2; + name = "\improper Liasion's Bathroom" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/corporateliaison) "vrM" = ( /obj/structure/closet/secure_closet{ name = "secure evidence locker"; @@ -68859,33 +74590,34 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/evidence_storage) -"vrQ" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 2; - id = "perma_exit"; - name = "\improper Exit Shutters" - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "perma_lockdown"; - name = "\improper Perma Lockdown Shutter" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - dir = 1; - name = "\improper Brig" +"vrR" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/general_air_control/large_tank_control{ + name = "Lower Deck Waste Tank Control" }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/shipboard/brig/perma) +/area/almayer/engineering/lower) "vrW" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "bluecorner" }, /area/almayer/living/briefing) +"vrZ" = ( +/obj/structure/largecrate/machine/bodyscanner, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"vsd" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_s) "vse" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -68895,6 +74627,24 @@ icon_state = "cargo" }, /area/almayer/living/offices) +"vsh" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/lifeboat) +"vsi" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) +"vsz" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/cells) "vsF" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -68905,45 +74655,19 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"vsI" = ( -/obj/structure/closet/secure_closet/guncabinet/riot_control, -/obj/item/weapon/shield/riot, -/obj/item/weapon/shield/riot, -/obj/item/weapon/shield/riot, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) -"vsJ" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - name = "\improper Power Control Room"; - req_access = null; - req_one_access = null; - req_one_access_txt = "3;6" +"vsM" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/firstaid/toxin{ + pixel_x = 3; + pixel_y = 3 }, +/obj/item/storage/firstaid/adv, +/obj/item/device/defibrillator, /turf/open/floor/almayer{ - icon_state = "orangefull" - }, -/area/almayer/shipboard/brig/processing) -"vsV" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 + dir = 1; + icon_state = "sterile_green_side" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) +/area/almayer/shipboard/brig/surgery) "vta" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -68951,6 +74675,23 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"vti" = ( +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/medical_science) +"vtm" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/medical/medical_science) "vtr" = ( /obj/structure/machinery/mech_bay_recharge_port, /turf/open/shuttle/dropship{ @@ -68965,14 +74706,43 @@ icon_state = "test_floor4" }, /area/almayer/medical/upper_medical) -"vtT" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/obj/structure/disposalpipe/junction{ - dir = 4; - icon_state = "pipe-j2" +"vtB" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 8; + id = "laddersoutheast"; + name = "\improper South East Ladders Shutters" }, -/turf/open/floor/almayer, -/area/almayer/command/cichallway) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/port_hallway) +"vtD" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 26 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) +"vtG" = ( +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/perma) +"vtJ" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "vub" = ( /turf/closed/wall/almayer, /area/almayer/shipboard/sea_office) @@ -68981,13 +74751,30 @@ /obj/effect/landmark/late_join/alpha, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) -"vuv" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/upper_hull/u_a_p) "vuA" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/living/briefing) +"vuD" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) +"vuF" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + access_modified = 1; + dir = 1; + name = "\improper Kitchen Hydroponics"; + req_one_access_txt = "30;19" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/grunt_rnr) "vuG" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 @@ -69010,9 +74797,6 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"vuR" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "vuZ" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -69033,6 +74817,21 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"vvw" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 + }, +/obj/item/paper, +/obj/item/tool/pen{ + pixel_x = -5; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/living/briefing) "vvy" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm, /obj/structure/sign/safety/hazard{ @@ -69052,6 +74851,61 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) +"vvH" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"vvX" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 2; + id = "OuterShutter"; + name = "\improper Saferoom Shutters" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/panic) +"vvY" = ( +/obj/structure/sink{ + dir = 1; + pixel_y = -10 + }, +/obj/structure/pipes/vents/scrubber{ + dir = 1 + }, +/obj/structure/surface/rack{ + density = 0; + pixel_x = 26 + }, +/obj/structure/bedsheetbin{ + pixel_x = 26; + pixel_y = 5 + }, +/obj/item/tool/soap/syndie, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/port_emb) +"vwC" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "vwF" = ( /obj/structure/machinery/light{ dir = 1 @@ -69070,26 +74924,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) -"vwN" = ( -/obj/item/clothing/gloves/botanic_leather{ - name = "leather gloves" - }, -/obj/item/clothing/gloves/botanic_leather{ - name = "leather gloves" - }, -/obj/item/clothing/gloves/botanic_leather{ - name = "leather gloves" - }, -/obj/structure/closet/crate, -/obj/item/clothing/suit/storage/hazardvest/black, +"vwJ" = ( +/obj/structure/largecrate/random/case/double, +/obj/structure/machinery/light/small, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) -"vwO" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/general_equipment) +/area/almayer/maint/hull/upper/u_m_p) "vwP" = ( /obj/structure/surface/table/almayer, /obj/item/prop/helmetgarb/prescription_bottle{ @@ -69112,6 +74953,10 @@ icon_state = "silver" }, /area/almayer/hallways/repair_bay) +"vwU" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "vwV" = ( /obj/structure/machinery/door/poddoor/shutters/almayer/uniform_vendors{ dir = 4 @@ -69121,15 +74966,36 @@ icon_state = "cargo_arrow" }, /area/almayer/command/cic) +"vwY" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "vxb" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"vxC" = ( +"vxu" = ( +/obj/structure/machinery/meter, +/obj/structure/pipes/standard/simple/visible{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower) +"vxG" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 4 + }, /turf/open/floor/almayer{ + dir = 10; icon_state = "red" }, -/area/almayer/shipboard/brig/general_equipment) +/area/almayer/shipboard/brig/chief_mp_office) +"vxK" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/processing) "vxM" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/cryo) @@ -69160,6 +75026,14 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"vyh" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "vyi" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -69181,6 +75055,12 @@ icon_state = "cargo" }, /area/almayer/living/offices) +"vyr" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "vyu" = ( /obj/structure/bed/sofa/south/white/right, /turf/open/floor/almayer{ @@ -69188,30 +75068,42 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"vyE" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +"vyH" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/area/almayer/shipboard/brig/lobby) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/general_equipment) "vyI" = ( /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/port) -"vzl" = ( -/obj/structure/machinery/light/small{ - dir = 4 +"vzj" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 8 + }, +/obj/structure/machinery/door/airlock/almayer/security/reinforced{ + name = "\improper Chief MP's Bedroom" }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/chief_mp_office) +"vzk" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + allow_construction = 0 }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/shipboard/brig/processing) "vzp" = ( /turf/open/floor/almayer/research/containment/entrance, /area/almayer/medical/containment/cell/cl) +"vzq" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 3 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/port_hallway) "vzu" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -69224,12 +75116,27 @@ name = "\improper Hydroponics Garden" }, /turf/open/floor/almayer{ - icon_state = "greenfull" + icon_state = "test_floor4" }, /area/almayer/shipboard/brig/cells) +"vzB" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "vzK" = ( /turf/open/floor/almayer, /area/almayer/engineering/ce_room) +"vzO" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + req_one_access = null; + req_one_access_txt = "2;30;34" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/u_m_s) "vzP" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/cups, @@ -69249,6 +75156,17 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"vAg" = ( +/obj/structure/largecrate/random/barrel/blue, +/obj/structure/sign/safety/restrictedarea{ + pixel_y = -32 + }, +/obj/structure/sign/safety/security{ + pixel_x = 15; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "vAq" = ( /obj/structure/bed/chair{ dir = 1 @@ -69258,6 +75176,20 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) +"vAx" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"vAz" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "vAE" = ( /obj/structure/machinery/cryopod/right{ layer = 3.1; @@ -69270,18 +75202,48 @@ "vAG" = ( /turf/open/floor/almayer, /area/almayer/shipboard/brig/chief_mp_office) +"vAH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/hallways/upper/port) +"vAI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/machinery/power/apc/almayer{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "vAQ" = ( -/obj/structure/machinery/light, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 +/obj/structure/surface/table/almayer, +/obj/structure/machinery/reagent_analyzer{ + pixel_x = 2; + pixel_y = 3 }, /turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/medical_science) +"vAU" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/pipes/vents/scrubber/no_boom{ + dir = 4 + }, +/turf/open/floor/almayer/no_build{ dir = 8; - icon_state = "sterile_green_corner" + icon_state = "silver" }, -/area/almayer/medical/containment) +/area/almayer/command/airoom) "vBm" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/main_office) @@ -69297,6 +75259,10 @@ icon_state = "silver" }, /area/almayer/living/briefing) +"vBC" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "vBJ" = ( /obj/structure/surface/table/almayer, /obj/item/tool/pen, @@ -69330,8 +75296,14 @@ }, /area/almayer/hallways/hangar) "vCk" = ( -/turf/closed/wall/almayer/research/containment/wall/purple, -/area/almayer/medical/containment/cell) +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/hydroponics) "vCx" = ( /obj/structure/machinery/status_display{ pixel_y = -30 @@ -69351,32 +75323,59 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) -"vCG" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/structure/sink{ - pixel_y = 24 - }, -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/chief_mp_office) +"vCE" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "vCO" = ( /obj/effect/landmark/start/bridge, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/bridgebunks) "vDa" = ( -/turf/open/floor/almayer/research/containment/corner2, -/area/almayer/medical/containment/cell) +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green_side" + }, +/area/almayer/medical/hydroponics) "vDh" = ( -/obj/item/weapon/dart/green, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"vEf" = ( +/obj/structure/largecrate/random, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) +"vDt" = ( +/obj/item/stool, +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) +"vDz" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/machinery/light, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) +"vDN" = ( /obj/structure/machinery/light/small{ - dir = 4 + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) +"vDR" = ( +/obj/structure/surface/rack, +/obj/item/tool/wet_sign, +/obj/item/tool/wet_sign, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"vEf" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 }, /turf/open/floor/almayer{ icon_state = "plate" @@ -69389,6 +75388,16 @@ /obj/effect/landmark/start/synthetic, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/synthcloset) +"vEr" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) "vEx" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -69402,39 +75411,37 @@ icon_state = "test_floor4" }, /area/almayer/medical/upper_medical) +"vEG" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "vEH" = ( /obj/structure/machinery/vending/coffee, /turf/open/floor/almayer, /area/almayer/living/briefing) "vEI" = ( -/obj/structure/machinery/door/airlock/almayer/medical/glass{ - dir = 2; - name = "\improper Field Surgery Equipment"; - req_access_txt = "20"; - req_one_access = null - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 +/obj/structure/closet/firecloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) +"vEV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/lower_medical_medbay) -"vFb" = ( -/obj/item/tool/crowbar, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south1) -"vFh" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 1; - pixel_y = 7 + dir = 9; + icon_state = "red" }, -/obj/item/tool/wrench, +/area/almayer/hallways/upper/starboard) +"vFn" = ( +/obj/structure/machinery/light/small, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 5; + icon_state = "plating" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/shipboard/stern_point_defense) "vFv" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ @@ -69450,13 +75457,25 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) -"vGk" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) -"vGy" = ( -/obj/structure/largecrate/supply/supplies/tables_racks, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +"vFH" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) +"vFI" = ( +/obj/structure/largecrate/random/secure, +/obj/item/weapon/baseballbat/metal{ + pixel_x = -2; + pixel_y = 8 + }, +/obj/item/clothing/glasses/sunglasses{ + pixel_y = 5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "vGA" = ( /obj/structure/bed/sofa/south/grey/right, /turf/open/floor/almayer{ @@ -69470,6 +75489,27 @@ icon_state = "orangefull" }, /area/almayer/living/briefing) +"vGI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/numbertwobunks) +"vHa" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/ares_console{ + pixel_x = 9 + }, +/obj/structure/machinery/computer/view_objectives{ + pixel_x = -9 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "plating" + }, +/area/almayer/command/airoom) "vHh" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/item/tool/warning_cone{ @@ -69480,19 +75520,102 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/living/port_emb) -"vHO" = ( -/obj/structure/machinery/vending/hydroseeds{ - req_access_txt = "28" +"vHn" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/u_m_s) +"vHq" = ( +/obj/item/device/assembly/mousetrap/armed, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 }, -/obj/structure/sign/safety/rewire{ - pixel_x = 8; - pixel_y = 32 +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_y = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + icon_state = "dark_sterile" }, -/area/almayer/medical/hydroponics) +/area/almayer/living/port_emb) +"vHs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/starboard_hallway) +"vHt" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/door_control{ + id = "CIC Lockdown"; + name = "CIC Lockdown"; + pixel_x = -7; + pixel_y = 9; + req_access_txt = "1" + }, +/obj/structure/machinery/door_control{ + id = "Hangar Lockdown"; + name = "Hangar Lockdown"; + pixel_x = -7; + pixel_y = 2; + req_access_txt = "1" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4; + icon_state = "exposed01-supply" + }, +/obj/structure/machinery/door_control{ + id = "bot_armory"; + name = "Armory Lockdown"; + pixel_x = -7; + pixel_y = -5; + req_one_access_txt = "1;4" + }, +/obj/structure/transmitter/rotary/no_dnd{ + name = "Combat Information Center Telephone"; + phone_category = "Command"; + phone_id = "Combat Information Center"; + pixel_x = 5; + pixel_y = 4 + }, +/obj/structure/machinery/door/window/westright{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/cic) +"vHA" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/starboard) +"vHO" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer/research/containment/corner_var1{ + icon_state = "containment_corner_variant_2" + }, +/area/almayer/medical/containment/cell) "vHW" = ( /obj/structure/surface/rack, /obj/item/tool/extinguisher, @@ -69513,6 +75636,12 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) +"vIg" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_a_s) "vIm" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -69530,17 +75659,6 @@ }, /turf/open/floor/almayer, /area/almayer/command/cichallway) -"vIA" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "vIN" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 15; @@ -69571,30 +75689,10 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) -"vJy" = ( -/obj/structure/machinery/vending/cigarette{ - density = 0; - pixel_y = 18 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"vJM" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) +"vJR" = ( +/obj/structure/barricade/handrail, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_stern) "vJV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -69602,6 +75700,9 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, +/obj/structure/machinery/firealarm{ + pixel_y = -29 + }, /turf/open/floor/almayer{ icon_state = "orange" }, @@ -69615,22 +75716,32 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"vKb" = ( +/obj/structure/machinery/smartfridge/chemistry{ + density = 0; + pixel_y = 16 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/containment) "vKe" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/living/briefing) -"vKf" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "InnerShutter"; - name = "\improper Saferoom Shutters" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +"vKB" = ( +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle, +/obj/structure/machinery/light/small{ + dir = 8 }, -/area/almayer/hull/lower_hull/l_f_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/armory) "vKF" = ( /obj/structure/stairs{ dir = 8; @@ -69648,14 +75759,19 @@ allow_construction = 0 }, /area/almayer/hallways/aft_hallway) -"vLh" = ( -/obj/item/roller, -/obj/structure/surface/rack, -/obj/item/roller, +"vKI" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"vLg" = ( +/obj/item/trash/uscm_mre, +/obj/structure/bed/chair/comfy/charlie, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/living/briefing) "vLj" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ name = "\improper Medical Bay"; @@ -69666,10 +75782,11 @@ }, /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/upper_medical) "vLA" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -69684,15 +75801,13 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie) -"vMn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/almayer{ - icon_state = "plate" +"vMb" = ( +/obj/item/stool{ + pixel_x = -15; + pixel_y = 6 }, -/area/almayer/hull/lower_hull/l_a_p) +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "vMo" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/operating_room_four) @@ -69707,6 +75822,12 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) +"vME" = ( +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "vMG" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -69733,6 +75854,27 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"vMM" = ( +/obj/structure/machinery/light, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"vMQ" = ( +/obj/docking_port/stationary/escape_pod/north, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_m_p) +"vNp" = ( +/obj/structure/sign/safety/three{ + pixel_x = -17 + }, +/obj/structure/machinery/door/window/brigdoor/southright{ + id = "Cell 3"; + name = "Cell 3" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) "vND" = ( /obj/structure/bed/chair{ dir = 8; @@ -69740,67 +75882,85 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie) -"vNF" = ( -/obj/structure/reagent_dispensers/fueltank/custom, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "vNW" = ( /turf/open/floor/almayer/uscm/directional{ dir = 9 }, /area/almayer/command/cic) -"vOd" = ( -/obj/structure/machinery/optable, -/obj/structure/sign/safety/medical{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/surgery) "vOh" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north2) +"vOw" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/tool, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/lower/l_m_s) "vOy" = ( /turf/closed/wall/almayer/white/reinforced, /area/almayer/medical/medical_science) -"vPj" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/device/flashlight/lamp{ - pixel_y = 8 +"vOG" = ( +/obj/structure/largecrate/supply/ammo/m41a/half, +/obj/structure/largecrate/supply/ammo/pistol/half{ + pixel_y = 12 }, -/obj/structure/pipes/vents/pump{ - dir = 4 +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/p_bow) +"vOM" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) +"vON" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/obj/item/clothing/glasses/science{ - pixel_x = 3; - pixel_y = -3 +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" }, -/obj/item/device/flash, +/area/almayer/shipboard/stern_point_defense) +"vOP" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "test_floor4" }, /area/almayer/medical/upper_medical) -"vPm" = ( -/obj/item/stack/cable_coil, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/lifeboat_pumps/south1) -"vPr" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 +"vOY" = ( +/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; + req_one_access = null; + req_one_access_txt = "2;7" }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "CIC Lockdown"; + name = "\improper Combat Information Center Blast Door" }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/mess) +"vPf" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/poddoor/almayer/locked{ + dir = 2; + id = "Perma 2"; + name = "\improper cell shutter" }, -/area/almayer/hull/lower_hull/l_m_s) +/turf/open/floor/plating, +/area/almayer/shipboard/brig/perma) +"vPm" = ( +/obj/item/stack/cable_coil, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/lifeboat_pumps/south1) "vPv" = ( /obj/structure/machinery/cryopod{ layer = 3.1; @@ -69847,6 +76007,20 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"vPR" = ( +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/structure/closet/secure_closet/guncabinet/red, +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/lower/workshop/hangar) "vQe" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Down2"; @@ -69871,31 +76045,10 @@ /obj/item/device/camera, /turf/open/floor/almayer, /area/almayer/command/computerlab) -"vQu" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/command/lifeboat) -"vQN" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "courtyard_cells"; - name = "\improper Courtyard Lockdown Shutter" - }, -/obj/structure/machinery/door/poddoor/almayer/locked{ - id = "Cell 4"; - name = "\improper Courtyard Divider" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/cells) +"vQR" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "vRa" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -69923,9 +76076,43 @@ dir = 10 }, /area/almayer/command/cic) -"vRz" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/lower_hull/l_f_p) +"vRu" = ( +/obj/structure/surface/rack{ + layer = 2.5 + }, +/obj/item/tool/hand_labeler{ + pixel_x = 4; + pixel_y = 11 + }, +/obj/item/storage/box/matches, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) +"vRJ" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Emergency Air Storage" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_a_s) +"vRR" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/sign/safety/stairs{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "vRX" = ( /obj/structure/surface/table/almayer, /obj/item/book/manual/medical_diagnostics_manual, @@ -69939,15 +76126,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/upper_medical) -"vSg" = ( -/obj/structure/machinery/light/small, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "vSl" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -69971,17 +76149,20 @@ }, /area/almayer/living/grunt_rnr) "vSr" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/structure/largecrate/random/case/double, +/obj/item/tool/wet_sign{ + pixel_y = 18 }, -/obj/item/folded_tent/big, -/turf/open/floor/almayer{ - icon_state = "plating_striped" +/obj/item/trash/cigbutt/ucigbutt{ + desc = "A handful of rounds to reload on the go."; + icon = 'icons/obj/items/weapons/guns/handful.dmi'; + icon_state = "bullet_2"; + name = "handful of pistol bullets (9mm)"; + pixel_x = -8; + pixel_y = 10 }, -/area/almayer/squads/req) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "vSE" = ( /obj/structure/closet/secure_closet/personal, /turf/open/floor/almayer{ @@ -69995,15 +76176,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/chemistry) -"vSH" = ( -/obj/structure/platform{ - dir = 8 - }, -/obj/item/stack/sheet/metal, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "vSK" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray{ @@ -70056,15 +76228,36 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"vTK" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/lower_hull/l_a_p) "vTS" = ( /obj/structure/machinery/light{ pixel_x = 16 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/cryo_cells) +"vTT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) +"vTV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/obj/structure/machinery/door_control{ + id = "OTStore"; + name = "Shutters"; + pixel_y = -24 + }, +/obj/structure/surface/rack, +/obj/item/reagent_container/glass/bucket/janibucket, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "vUb" = ( /obj/effect/landmark/start/marine/alpha, /obj/effect/landmark/late_join/alpha, @@ -70084,28 +76277,24 @@ /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"vUi" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"vUI" = ( -/obj/structure/largecrate/random/barrel/white, -/obj/structure/sign/safety/security{ - pixel_x = 15; - pixel_y = 32 +"vUJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/sign/safety/restrictedarea{ - pixel_y = 32 +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"vUL" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/flash, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/maint/hull/lower/l_a_p) +"vUP" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/shipboard/brig/cic_hallway) "vUU" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -70142,11 +76331,33 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) +"vVs" = ( +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/almayer/medical/containment) +"vVu" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "vVw" = ( /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) +"vVI" = ( +/obj/structure/sign/safety/nonpress_0g{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "vVW" = ( /obj/effect/decal/medical_decals{ icon_state = "triagedecaltopright" @@ -70156,10 +76367,24 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"vWc" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"vVX" = ( +/obj/structure/surface/table/almayer, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" }, +/area/almayer/engineering/lower/engine_core) +"vVY" = ( +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_m_s) +"vWc" = ( /obj/structure/surface/table/almayer, /obj/item/device/radio/intercom/normandy{ layer = 3.5 @@ -70168,34 +76393,28 @@ icon_state = "redfull" }, /area/almayer/living/offices/flight) -"vWo" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/evidence_storage) "vWt" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/glass/beaker/large, +/obj/item/reagent_container/glass/beaker/large, +/obj/item/reagent_container/glass/beaker{ + pixel_x = 5 }, -/turf/open/floor/almayer{ +/obj/item/reagent_container/glass/beaker{ + pixel_x = 5 + }, +/obj/item/reagent_container/dropper, +/obj/structure/machinery/firealarm{ dir = 8; - icon_state = "sterile_green_side" + pixel_x = -24 }, -/area/almayer/medical/containment) -"vWx" = ( -/obj/structure/largecrate/random/barrel/blue, -/obj/structure/sign/safety/restrictedarea{ - pixel_y = -32 +/obj/item/reagent_container/glass/beaker/bluespace{ + pixel_y = 12 }, -/obj/structure/sign/safety/security{ - pixel_x = 15; - pixel_y = -32 +/turf/open/floor/almayer{ + icon_state = "mono" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/medical/medical_science) "vWA" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -70233,6 +76452,27 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"vWG" = ( +/obj/structure/pipes/vents/pump, +/obj/item/tool/soap, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/sink{ + pixel_y = 24 + }, +/obj/structure/mirror{ + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/shipboard/brig/cells) "vWJ" = ( /obj/structure/machinery/landinglight/ds1/delaytwo{ dir = 4 @@ -70244,15 +76484,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"vWK" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "vXd" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -70262,32 +76493,53 @@ }, /turf/open/floor/plating, /area/almayer/engineering/upper_engineering/port) -"vXQ" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 +"vXf" = ( +/obj/structure/reagent_dispensers/pacidtank{ + anchored = 1 }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/perma) -"vXX" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/powercell, -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) -"vXY" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) +"vXh" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/computer/working_joe{ + dir = 4; + pixel_x = -17 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"vXo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower) +"vXv" = ( +/obj/structure/machinery/light{ dir = 1 }, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_10"; + pixel_y = 14 + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "mono" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/medical/upper_medical) "vYi" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -70316,13 +76568,30 @@ }, /area/almayer/medical/lower_medical_medbay) "vYz" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/glass/beaker{ + pixel_x = 8 + }, +/obj/item/paper_bin/wy{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_y = -2 + }, +/obj/item/reagent_container/dropper{ + pixel_x = -1; + pixel_y = 9 + }, +/obj/structure/machinery/biohazard_lockdown{ + pixel_x = 8; + pixel_y = 10 }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "sterile_green" }, -/area/almayer/medical/medical_science) +/area/almayer/medical/containment) "vYC" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -70349,6 +76618,12 @@ icon_state = "cargo" }, /area/almayer/squads/alpha) +"vZf" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8 + }, +/turf/closed/wall/almayer, +/area/almayer/engineering/lower) "vZv" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer, @@ -70356,15 +76631,34 @@ "vZw" = ( /turf/open/floor/almayer/research/containment/floor2, /area/almayer/medical/containment/cell/cl) -"vZA" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/sign/safety/hvac_old{ - pixel_x = -17 +"vZU" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/power/apc/almayer{ + dir = 4 + }, +/obj/structure/machinery/cell_charger, +/obj/structure/sign/safety/high_rad{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"wac" = ( +/obj/structure/window/reinforced{ + dir = 8; + health = 80 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull) +/area/almayer/maint/hull/lower/l_a_p) "wan" = ( /obj/structure/surface/table/almayer, /obj/item/facepaint/brown, @@ -70378,21 +76672,15 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_one) -"wba" = ( -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 32 - }, +"waJ" = ( /obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 + icon_state = "S" }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) +/area/almayer/hallways/upper/port) "wbh" = ( /obj/structure/machinery/light{ dir = 4 @@ -70402,33 +76690,28 @@ icon_state = "orange" }, /area/almayer/hallways/starboard_hallway) -"wbj" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 +"wbu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" }, /turf/open/floor/almayer{ - dir = 10; - icon_state = "red" + icon_state = "mono" }, -/area/almayer/hallways/aft_hallway) -"wbu" = ( -/obj/structure/machinery/light{ - dir = 8 +/area/almayer/living/pilotbunks) +"wby" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper Starboard Viewing Room" }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/area/almayer/shipboard/port_missiles) -"wbx" = ( -/obj/structure/sign/safety/hazard{ - desc = "A sign that warns of a hazardous environment nearby"; - name = "\improper Warning: Hazardous Environment" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/u_f_s) "wbC" = ( /obj/structure/machinery/atm{ pixel_y = 32 @@ -70463,7 +76746,15 @@ /obj/structure/machinery/status_display{ pixel_y = 30 }, -/turf/open/floor/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21"; + pixel_y = 15 + }, +/turf/open/floor/almayer{ + icon_state = "bluefull" + }, /area/almayer/living/pilotbunks) "wbP" = ( /obj/structure/machinery/bioprinter{ @@ -70474,10 +76765,15 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/operating_room_four) -"wbR" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/lifeboat) +"wbV" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/living/cryo_cells) "wbX" = ( /obj/structure/closet/secure_closet/cmdcabinet{ pixel_y = 24 @@ -70488,9 +76784,30 @@ icon_state = "silver" }, /area/almayer/command/cic) -"wcn" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +"wcm" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/lifeboat_pumps/south2) +"wct" = ( +/obj/structure/closet/radiation, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"wcJ" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "wcN" = ( /obj/structure/machinery/status_display{ pixel_y = 30 @@ -70527,17 +76844,54 @@ /obj/structure/bed/chair{ dir = 1 }, +/turf/open/floor/almayer, +/area/almayer/living/auxiliary_officer_office) +"wdh" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/extinguisher, +/obj/item/reagent_container/spray/cleaner{ + pixel_x = -8; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "silver" + }, +/area/almayer/shipboard/brig/cic_hallway) +"wdo" = ( +/obj/structure/machinery/door/airlock/almayer/research/reinforced{ + dir = 8; + name = "\improper Containment Airlock"; + closeOtherId = "containment_s" + }, /obj/effect/decal/warning_stripes{ icon_state = "S" }, -/turf/open/floor/almayer, -/area/almayer/living/tankerbunks) -"wdr" = ( -/obj/structure/machinery/power/apc/almayer, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/medical/medical_science) +"wdv" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Core Hatch" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "wdz" = ( /obj/effect/landmark/start/marine/engineer/charlie, /obj/effect/landmark/late_join/charlie, @@ -70548,10 +76902,14 @@ allow_construction = 0 }, /area/almayer/shipboard/brig/processing) -"wdH" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) +"wdG" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_f_p) "wdI" = ( /turf/open/floor/almayer{ dir = 1; @@ -70566,39 +76924,57 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) -"wei" = ( -/obj/structure/machinery/door_display/research_cell{ - dir = 4; - id = "Containment Cell 1"; - name = "Cell 1 Control"; - pixel_x = -14; - pixel_y = 8 - }, +"wdW" = ( +/obj/structure/machinery/light/small, /turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_side" + icon_state = "plate" }, -/area/almayer/medical/containment) -"wex" = ( -/obj/structure/machinery/light{ - dir = 4 +/area/almayer/maint/hull/lower/l_m_p) +"wed" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/belt/utility/full, +/obj/item/clothing/glasses/welding, +/turf/open/floor/almayer{ + icon_state = "cargo" }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"weB" = ( -/obj/item/tool/screwdriver{ - layer = 2.9; - pixel_x = -21; - pixel_y = -14 +/area/almayer/engineering/lower/engine_core) +"wee" = ( +/obj/effect/landmark/start/police, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/obj/structure/machinery/light{ - dir = 1 +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cryo) +"wei" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/hydroponics) +"wes" = ( +/obj/structure/machinery/cm_vending/sorted/medical/marinemed, +/obj/structure/sign/safety/medical{ + pixel_x = 8; + pixel_y = 32 }, -/obj/structure/closet, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/living/port_emb) +/area/almayer/shipboard/panic) +"wex" = ( +/obj/structure/sign/safety/bathunisex{ + pixel_x = 8; + pixel_y = -25 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/living/pilotbunks) "weC" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -70622,32 +76998,42 @@ icon_state = "cargo" }, /area/almayer/living/offices) -"weU" = ( -/obj/structure/machinery/light/small{ +"wfn" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/almayer{ + icon_state = "cargo_arrow" + }, +/area/almayer/engineering/lower/workshop/hangar) +"wfx" = ( +/obj/structure/machinery/vending/cola, +/obj/structure/machinery/light{ dir = 8 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) -"wft" = ( +/area/almayer/engineering/lower/workshop) +"wfB" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"wfE" = ( -/turf/closed/wall/almayer, -/area/almayer/living/gym) -"wfL" = ( -/obj/structure/bed/chair/wood/normal{ - dir = 1 +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" }, -/obj/effect/decal/cleanable/blood, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "red" }, -/area/almayer/shipboard/brig/execution) +/area/almayer/shipboard/brig/main_office) +"wfE" = ( +/turf/closed/wall/almayer, +/area/almayer/living/gym) "wfZ" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = -12 @@ -70678,6 +77064,15 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) +"wgf" = ( +/obj/structure/sign/safety/nonpress_0g{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "wgi" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/main_office) @@ -70694,14 +77089,13 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"wgo" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"wgO" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/area/almayer/hull/lower_hull/l_f_p) +/obj/structure/machinery/light, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) "wgR" = ( /obj/structure/surface/table/almayer, /obj/effect/spawner/random/technology_scanner, @@ -70712,30 +77106,14 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) -"wgU" = ( -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = -32 +"whm" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"whc" = ( -/obj/structure/closet, -/obj/item/clothing/glasses/welding, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) -"whd" = ( -/obj/item/frame/light_fixture{ - anchored = 1; - desc = "A broken fluorescent tube light."; - dir = 8; - icon_state = "tube-broken"; - name = "broken light fixture" - }, -/turf/open/floor/almayer, -/area/almayer/living/port_emb) +/area/almayer/maint/hull/lower/l_m_s) "whA" = ( /turf/open/floor/almayer/uscm/directional, /area/almayer/living/briefing) @@ -70754,32 +77132,9 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"whZ" = ( -/obj/structure/sign/safety/refridgeration{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"wie" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/obj/structure/machinery/cm_vending/sorted/tech/circuits, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop) -"wir" = ( -/obj/structure/disposalpipe/junction{ - dir = 4; - icon_state = "pipe-j2" - }, -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/almayer{ - allow_construction = 0 - }, -/area/almayer/shipboard/brig/lobby) +"wid" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/p_bow) "wiz" = ( /obj/structure/bed/chair{ dir = 4 @@ -70821,6 +77176,25 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"wiO" = ( +/obj/structure/surface/rack, +/obj/item/tool/weldingtool, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"wiW" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/hydroponics) "wjq" = ( /obj/structure/bed/chair/comfy/beige{ dir = 8 @@ -70854,6 +77228,52 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) +"wjE" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/starboard) +"wjP" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"wjQ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -14; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/mess) +"wjY" = ( +/obj/structure/closet/secure_closet/warrant_officer, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/brig/chief_mp_office) "wka" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/sriracha{ @@ -70864,22 +77284,36 @@ }, /area/almayer/living/briefing) "wkc" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - name = "\improper Engineering Storage"; - req_one_access_txt = "2;7;11" +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/door/window/eastright{ + access_modified = 1; + dir = 8; + req_access_txt = "8" + }, +/obj/structure/machinery/door/window/eastleft{ + req_access_txt = "8" }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "sterile_green" }, -/area/almayer/hallways/hangar) +/area/almayer/medical/lockerroom) "wky" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "sterile_green_side" + icon_state = "test_floor4" }, -/area/almayer/medical/upper_medical) +/area/almayer/medical/medical_science) +"wkA" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "wkH" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/whistle{ @@ -70892,6 +77326,30 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) +"wkM" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES StairsLower"; + name = "\improper ARES Core Shutters"; + plane = -7 + }, +/obj/effect/step_trigger/ares_alert/public{ + alert_id = "AresStairs"; + alert_message = "Caution: Movement detected in ARES Core."; + cooldown_duration = 1200 + }, +/obj/structure/machinery/door/poddoor/almayer/blended/white/open{ + closed_layer = 3.2; + id = "ARES Emergency"; + layer = 3.2; + name = "ARES Emergency Lockdown"; + needs_power = 0; + open_layer = 1.9; + plane = -7 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "wkX" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -70913,47 +77371,38 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"wlj" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/plasteel{ - amount = 30; - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 8; - name = "ship-grade camera" +"wld" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" }, -/obj/item/stack/sheet/mineral/uranium{ - amount = 5 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 }, -/obj/structure/sign/safety/fire_haz{ - pixel_x = 32 +/obj/structure/sign/safety/ammunition{ + pixel_x = 15; + pixel_y = -32 }, -/turf/open/floor/almayer{ - icon_state = "cargo" +/obj/structure/sign/safety/hazard{ + pixel_y = -32 }, -/area/almayer/engineering/engine_core) -"wlp" = ( +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/execution) +"wlh" = ( /obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" + dir = 4; + icon_state = "pipe-c" }, -/area/almayer/hull/lower_hull/l_m_p) -"wly" = ( -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/squads/req) +"wlB" = ( +/obj/structure/largecrate/random/case/small, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/chief_mp_office) +/area/almayer/maint/hull/upper/u_m_p) "wlE" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -70980,12 +77429,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"wlL" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "wmg" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -70995,16 +77438,14 @@ icon_state = "red" }, /area/almayer/shipboard/starboard_missiles) -"wmE" = ( -/obj/structure/machinery/door/window/brigdoor/southright{ - id = "Cell 4"; - name = "Cell 4" +"wmz" = ( +/obj/structure/bed/chair/comfy/bravo{ + dir = 1 }, -/obj/structure/sign/safety/four{ - pixel_x = 32 +/turf/open/floor/almayer{ + icon_state = "orangefull" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) +/area/almayer/living/briefing) "wmK" = ( /obj/structure/surface/table/almayer, /obj/item/clipboard, @@ -71013,12 +77454,16 @@ icon_state = "silver" }, /area/almayer/command/computerlab) +"wmP" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "wmQ" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ dir = 2; id_tag = "tc03"; - name = "\improper Treatment Center"; - req_access = null + name = "\improper Treatment Center" }, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -71034,6 +77479,19 @@ icon_state = "cargo" }, /area/almayer/living/bridgebunks) +"wnh" = ( +/obj/structure/window/framed/almayer/white/hull, +/turf/open/floor/plating, +/area/almayer/command/airoom) +"wnw" = ( +/obj/structure/machinery/flasher{ + id = "Perma 2"; + pixel_y = 24 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/perma) "wnL" = ( /obj/item/stack/tile/carpet{ amount = 12 @@ -71055,23 +77513,10 @@ /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) "woh" = ( -/obj/structure/bed/chair, -/obj/structure/sign/safety/intercom{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/wood/ship, -/area/almayer/medical/medical_science) -"wom" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ +/turf/closed/wall/almayer/research/containment/wall/corner{ dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/starboard_hallway) +/area/almayer/medical/containment/cell) "wos" = ( /obj/structure/machinery/cm_vending/sorted/marine_food{ density = 0; @@ -71095,22 +77540,51 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"woG" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) -"woM" = ( -/obj/structure/largecrate/supply, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) +"woU" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/u_m_p) "wpg" = ( /obj/structure/machinery/blackbox_recorder, /turf/open/shuttle/dropship{ icon_state = "rasputin3" }, /area/almayer/powered/agent) +"wph" = ( +/obj/item/paper_bin/wy, +/obj/structure/surface/table/woodentable/fancy, +/obj/item/tool/pen/clicky, +/obj/item/tool/pen/clicky, +/obj/structure/machinery/status_display{ + pixel_x = -32 + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) +"wpu" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/device/flashlight/lamp{ + pixel_y = 8 + }, +/obj/item/clothing/glasses/science{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/device/flash, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/upper_medical) +"wpw" = ( +/obj/structure/bed/chair/comfy/ares{ + dir = 1 + }, +/obj/structure/pipes/vents/pump/no_boom{ + desc = "Has a valve and pump attached to it, connected to multiple gas tanks."; + name = "Security Vent" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "plating" + }, +/area/almayer/command/airoom) "wpz" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -71128,6 +77602,22 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"wpS" = ( +/obj/structure/pipes/standard/simple/visible, +/obj/structure/sign/safety/nonpress_0g{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"wpT" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "wqc" = ( /obj/structure/sign/poster{ pixel_y = 32 @@ -71153,30 +77643,15 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/stern_hallway) "wqr" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/emails{ - pixel_x = 2; - pixel_y = 5 - }, /obj/structure/sign/safety/terminal{ pixel_x = 7; pixel_y = 29 }, -/obj/structure/transmitter/rotary{ - name = "Reporter Telephone"; - phone_category = "Almayer"; - phone_id = "Reporter"; - pixel_x = -17; - pixel_y = 2 - }, +/obj/structure/filingcabinet, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/command/combat_correspondent) -"wqu" = ( -/obj/structure/window/framed/almayer, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/lobby) "wqA" = ( /obj/structure/machinery/status_display{ pixel_y = 30 @@ -71186,10 +77661,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"wqE" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "wqW" = ( /obj/structure/closet/secure_closet/CMO, /obj/structure/machinery/light{ @@ -71200,17 +77671,28 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/upper_medical) +"wra" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "wrC" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = -17 }, /turf/open/floor/almayer, /area/almayer/living/gym) -"wrT" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 +"wrQ" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = -32 }, +/turf/open/floor/almayer, +/area/almayer/living/starboard_garden) +"wrT" = ( /obj/structure/surface/table/almayer, /obj/item/device/radio/marine, /obj/item/device/radio/marine, @@ -71223,6 +77705,69 @@ icon_state = "cargo" }, /area/almayer/hallways/hangar) +"wrX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) +"wse" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/almayer/medical/containment) +"wsh" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/perma) +"wsl" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/lobby) +"wsq" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/processing) +"wst" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "green" + }, +/area/almayer/hallways/aft_hallway) +"wsw" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) +"wsz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "wsD" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -71235,23 +77780,31 @@ icon_state = "test_floor4" }, /area/almayer/squads/bravo) -"wta" = ( +"wtk" = ( /obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" + dir = 4 }, -/turf/open/floor/almayer, -/area/almayer/hallways/aft_hallway) -"wtd" = ( -/obj/structure/machinery/vending/coffee, -/obj/item/toy/bikehorn/rubberducky{ - desc = "You feel as though this rubber duck has been here for a long time. It's Mr. Quackers! He loves you!"; - name = "Quackers"; - pixel_x = 5; - pixel_y = 17 +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) +"wtn" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/item/storage/firstaid{ + pixel_x = -13; + pixel_y = 13 + }, +/obj/item/clipboard, +/obj/item/paper, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "wty" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -71261,6 +77814,14 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/delta) +"wtD" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass{ + name = "Brig" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/p_bow) "wtM" = ( /obj/structure/machinery/light{ unacidable = 1; @@ -71268,12 +77829,39 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) +"wtY" = ( +/obj/structure/surface/table/almayer, +/obj/item/folder/white{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/paper, +/obj/item/handcuffs, +/obj/item/clothing/mask/cigarette/cigar/classic, +/obj/item/coin/silver{ + desc = "A small coin, bearing the falling falcons insignia."; + name = "falling falcons challenge coin" + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/brig/chief_mp_office) +"wub" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/upper_medical) "wuc" = ( /obj/structure/machinery/door/airlock/almayer/medical/glass{ name = "\improper Brig Medbay"; req_access = null; req_one_access = null; - req_one_access_txt = "20;3" + req_one_access_txt = "20;3"; + closeOtherId = "brigmed" }, /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -71283,22 +77871,36 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/surgery) -"wul" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) -"wun" = ( -/obj/structure/machinery/light{ - dir = 1 +"wud" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" + icon_state = "orangefull" }, -/area/almayer/engineering/lower_engineering) -"wup" = ( +/area/almayer/engineering/lower/workshop) +"wuh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/obj/structure/sign/safety/autoopenclose{ + pixel_y = 32 + }, +/obj/structure/sign/safety/water{ + pixel_x = 15; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) +"wup" = ( /obj/structure/supply_drop/echo, /turf/open/floor/almayer, /area/almayer/squads/req) @@ -71314,23 +77916,24 @@ icon_state = "cargo" }, /area/almayer/squads/bravo) -"wuH" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_container/food/snacks/sliceable/pizza/vegetablepizza, -/obj/item/reagent_container/food/snacks/sliceable/pizza/mushroompizza, -/obj/item/reagent_container/food/snacks/sliceable/pizza/vegetablepizza, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) -"wuP" = ( -/obj/structure/machinery/vending/coffee, -/obj/structure/sign/safety/coffee{ - pixel_x = 8; - pixel_y = -32 +"wuB" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop) +"wuT" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, /turf/open/floor/almayer{ - icon_state = "sterile_green_side" + dir = 10; + icon_state = "orange" }, -/area/almayer/medical/medical_science) +/area/almayer/engineering/upper_engineering/starboard) "wvb" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -71347,17 +77950,26 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"wvl" = ( -/obj/structure/machinery/door/airlock/almayer/security{ - dir = 2; - name = "\improper Security Checkpoint"; - req_access = null; - req_one_access_txt = "3;19" +"wvo" = ( +/obj/structure/filingcabinet, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"wvE" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/cameras/almayer_network{ + dir = 4 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/sign/safety/terminal{ + pixel_y = 32 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 1; + icon_state = "red" }, -/area/almayer/living/briefing) +/area/almayer/shipboard/brig/chief_mp_office) "wvI" = ( /obj/item/paper_bin/uscm{ pixel_y = 7 @@ -71368,18 +77980,6 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/perma) -"wvT" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/processing) "wvU" = ( /obj/structure/machinery/recharge_station, /obj/structure/machinery/light{ @@ -71398,12 +77998,15 @@ icon_state = "cargo" }, /area/almayer/squads/charlie) -"wwD" = ( -/obj/structure/bed/chair/comfy/orange, -/turf/open/floor/almayer{ - icon_state = "plate" +"wwu" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/area/almayer/hull/upper_hull/u_a_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/port_hallway) "wwJ" = ( /obj/structure/surface/table/almayer, /obj/item/paper, @@ -71451,6 +78054,16 @@ icon_state = "plate" }, /area/almayer/medical/lower_medical_medbay) +"wxu" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) +"wxy" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/p_stern) "wxU" = ( /obj/item/ashtray/bronze{ pixel_x = 7; @@ -71475,18 +78088,6 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) -"wya" = ( -/obj/structure/platform, -/obj/structure/largecrate/random/case/double{ - layer = 2.98 - }, -/obj/structure/sign/safety/life_support{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "wyt" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/microwave{ @@ -71497,44 +78098,34 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) -"wyK" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "orangecorner" - }, -/area/almayer/hallways/stern_hallway) -"wyO" = ( -/obj/structure/largecrate/random/barrel/red, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"wza" = ( -/obj/structure/machinery/cm_vending/clothing/vehicle_crew, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/tankerbunks) -"wzg" = ( +"wyz" = ( /obj/structure/bed/chair{ dir = 4 }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"wyG" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_a_s) -"wzx" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 +/area/almayer/maint/hull/lower/l_m_s) +"wyQ" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/door_control{ + id = "ARES Emergency"; + indestructible = 1; + name = "ARES Emergency Lockdown"; + req_one_access_txt = "91;92" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/almayer/no_build{ + icon_state = "plating" + }, +/area/almayer/command/airoom) "wzZ" = ( /obj/structure/machinery/door/airlock/almayer/medical/glass{ dir = 1; @@ -71545,7 +78136,7 @@ req_one_access = null }, /turf/open/floor/almayer{ - icon_state = "sterile_green" + icon_state = "test_floor4" }, /area/almayer/medical/lower_medical_medbay) "wAR" = ( @@ -71559,19 +78150,34 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) -"wBY" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"wCh" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = -32 +"wBd" = ( +/obj/structure/machinery/status_display{ + pixel_x = 32 + }, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 6; + icon_state = "red" + }, +/area/almayer/shipboard/brig/lobby) +"wBI" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/sign/safety/maint{ + pixel_x = -17 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/upper/starboard) +"wCk" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/cameras/wooden_tv/ot{ + pixel_y = 4 }, -/area/almayer/hull/upper_hull/u_a_s) +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "wCs" = ( /obj/structure/machinery/vending/security, /obj/structure/machinery/power/apc/almayer{ @@ -71587,44 +78193,51 @@ icon_state = "redcorner" }, /area/almayer/living/briefing) -"wCM" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"wCT" = ( +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresDown"; + vector_x = 97; + vector_y = -65 }, /obj/structure/machinery/light{ dir = 1 }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/processing) -"wCT" = ( -/obj/structure/machinery/power/apc/almayer/hardened{ +/obj/structure/stairs{ dir = 1 }, -/turf/open/floor/almayer{ - icon_state = "tcomms" +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, /area/almayer/command/airoom) -"wDl" = ( -/obj/effect/decal/cleanable/blood/oil/streak, +"wDg" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 10; + icon_state = "red" }, -/area/almayer/lifeboat_pumps/south1) -"wDm" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 +/area/almayer/hallways/upper/starboard) +"wDp" = ( +/obj/structure/machinery/photocopier, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) +"wDq" = ( +/obj/structure/largecrate/random/case/small, +/obj/structure/machinery/light/small{ + dir = 8 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_s) +/area/almayer/maint/hull/upper/u_a_p) +"wDr" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/stairs) "wDs" = ( /obj/structure/machinery/seed_extractor, /obj/structure/sign/safety/terminal{ @@ -71652,6 +78265,16 @@ }, /turf/open/floor/almayer, /area/almayer/command/computerlab) +"wDC" = ( +/obj/structure/machinery/door/window/brigdoor/southright{ + id = "Cell 5"; + name = "Cell 5" + }, +/obj/structure/sign/safety/five{ + pixel_x = -17 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) "wDH" = ( /obj/structure/morgue, /obj/structure/machinery/light{ @@ -71676,15 +78299,17 @@ icon_state = "cargo" }, /area/almayer/squads/bravo) -"wDR" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 +"wDM" = ( +/turf/closed/wall/almayer/reinforced/temphull, +/area/almayer/engineering/upper_engineering) +"wDP" = ( +/obj/structure/sign/safety/storage{ + pixel_x = -17 }, -/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/lower/l_f_p) "wEd" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -71709,6 +78334,19 @@ icon_state = "rasputin3" }, /area/almayer/powered/agent) +"wEI" = ( +/obj/structure/surface/table/reinforced/black, +/obj/item/tool/pen, +/obj/item/paper_bin/uscm{ + pixel_y = 7 + }, +/obj/item/clipboard{ + pixel_x = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "wEO" = ( /obj/structure/platform_decoration{ dir = 4 @@ -71724,12 +78362,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_medbay) -"wFm" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "wFn" = ( /obj/structure/surface/rack, /obj/item/clothing/suit/storage/marine/light/vest, @@ -71757,9 +78389,34 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"wFN" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "OfficeSafeRoom"; + name = "\improper Office Safe Room" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "wFR" = ( /turf/open/floor/almayer, /area/almayer/living/gym) +"wFX" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) +"wGa" = ( +/obj/structure/pipes/vents/scrubber, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "wGb" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -71775,14 +78432,12 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"wGi" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +"wGe" = ( +/obj/structure/closet/emcloset, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/maint/hull/lower/l_f_p) "wGA" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -71797,21 +78452,32 @@ /obj/effect/landmark/late_join/delta, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) -"wGI" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/shipboard/port_missiles) "wGX" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 }, +/obj/structure/surface/table/almayer, /turf/open/floor/plating/plating_catwalk, -/area/almayer/living/tankerbunks) +/area/almayer/living/auxiliary_officer_office) +"wHj" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/prop/ice_colony/tiger_rug{ + desc = "A beat up beer stained, incredibly garish, polyester tiger rug. No one knows how it got here. Written on the wash tag are the words 'From Thedus, with love <3', in Sharpie."; + icon_state = "HotlineAlt"; + layer = 2.9; + name = "Richard the tiger" + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "emerald" + }, +/area/almayer/living/port_emb) "wHo" = ( /turf/open/floor/almayer{ icon_state = "emerald" @@ -71824,8 +78490,22 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"wHM" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + name = "\improper Warden's Office" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/chief_mp_office) "wIr" = ( -/obj/structure/machinery/cm_vending/clothing/senior_officer, +/obj/structure/machinery/cm_vending/clothing/senior_officer{ + req_access = list(); + req_access_txt = "26" + }, /obj/structure/sign/safety/hvac_old{ pixel_x = 8; pixel_y = 32 @@ -71834,6 +78514,12 @@ icon_state = "cargo" }, /area/almayer/squads/req) +"wIu" = ( +/obj/structure/largecrate/random/case, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "wIC" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/chief_mp_office) @@ -71867,11 +78553,18 @@ "wJb" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/lower_medical_medbay) +"wJh" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/window/framed/almayer, +/turf/open/floor/plating, +/area/almayer/shipboard/brig/cryo) "wJo" = ( /obj/structure/machinery/door/airlock/almayer/research/reinforced{ + access_modified = 1; dir = 1; name = "\improper CMO's Bedroom"; - req_access = null; req_one_access_txt = "1;5" }, /obj/structure/pipes/standard/simple/hidden/supply, @@ -71889,6 +78582,16 @@ icon_state = "plate" }, /area/almayer/hallways/vehiclehangar) +"wJB" = ( +/obj/structure/machinery/cryopod/right, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/airoom) +"wJC" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "wJD" = ( /obj/structure/bed/chair{ dir = 8; @@ -71910,26 +78613,44 @@ "wJH" = ( /turf/closed/wall/almayer/research/containment/wall/east, /area/almayer/medical/containment/cell/cl) -"wKn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"wKb" = ( +/obj/structure/bed/chair{ + dir = 8 }, -/area/almayer/hull/upper_hull/u_m_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "wKF" = ( /obj/structure/machinery/power/apc/almayer{ - dir = 1; - pixel_y = 25 + cell_type = /obj/item/cell/hyper; + dir = 1 }, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/command/combat_correspondent) +"wKJ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/cells) "wKP" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall/almayer/white/reinforced, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/open/floor/plating, /area/almayer/medical/containment) "wLi" = ( /obj/structure/machinery/door_control/airlock{ @@ -71940,15 +78661,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/notunnel) -"wLk" = ( -/obj/item/coin/silver{ - desc = "A small coin, bearing the falling falcons insignia."; - name = "falling falcons challenge coin" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "wLm" = ( /turf/open/floor/almayer{ dir = 4; @@ -71966,13 +78678,14 @@ /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south2) "wLy" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "sterile_green_side" +/obj/structure/pipes/vents/pump/no_boom{ + name = "Secure Reinforced Air Vent"; + welded = 1 }, -/area/almayer/medical/medical_science) +/turf/open/floor/almayer/research/containment/floor2{ + dir = 1 + }, +/area/almayer/medical/containment/cell) "wLG" = ( /obj/item/bedsheet/blue{ layer = 3.2 @@ -72016,15 +78729,28 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) -"wMm" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 4 +"wLN" = ( +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/almayer/medical/containment) +"wMv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" }, +/area/almayer/living/auxiliary_officer_office) +"wMF" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/upper/s_bow) "wMG" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -72034,14 +78760,13 @@ }, /area/almayer/squads/alpha) "wMO" = ( -/obj/structure/sign/catclock{ - pixel_y = 32 +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + icon_state = "test_floor4" }, -/area/almayer/medical/upper_medical) +/area/almayer/medical/medical_science) "wNl" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray{ @@ -72067,27 +78792,24 @@ icon_state = "orange" }, /area/almayer/living/port_emb) -"wNm" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 +"wNt" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "redcorner" + }, +/area/almayer/shipboard/brig/processing) +"wNS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull) +/area/almayer/command/lifeboat) "wNT" = ( /obj/structure/platform, /turf/open/floor/almayer, /area/almayer/living/briefing) -"wNU" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 2; - req_one_access = list(2,34,30) - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) "wOh" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -72101,6 +78823,33 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/starboard) +"wOv" = ( +/obj/structure/platform, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"wOK" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) +"wPa" = ( +/obj/structure/platform{ + dir = 4 + }, +/obj/item/reagent_container/glass/rag, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "wPf" = ( /obj/structure/sign/safety/reception{ pixel_x = 32; @@ -72110,17 +78859,11 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"wPk" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/execution) "wPz" = ( -/turf/open/floor/almayer/research/containment/corner{ - dir = 1 +/turf/open/floor/almayer{ + icon_state = "mono" }, -/area/almayer/medical/containment/cell) +/area/almayer/medical/hydroponics) "wPC" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -72142,53 +78885,34 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) +"wPR" = ( +/obj/structure/closet, +/obj/item/clothing/under/marine, +/obj/item/clothing/suit/storage/marine, +/obj/item/clothing/head/helmet/marine, +/obj/item/clothing/head/beret/cm, +/obj/item/clothing/head/beret/cm, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "wQg" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "greencorner" }, /area/almayer/hallways/aft_hallway) -"wQk" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/obj/structure/machinery/status_display{ - pixel_y = -32 - }, -/obj/structure/machinery/vending/coffee, -/obj/structure/pipes/standard/simple/hidden/supply{ +"wQA" = ( +/obj/structure/pipes/standard/simple/visible{ dir = 5 }, +/obj/structure/machinery/light, +/turf/open/floor/almayer, +/area/almayer/engineering/lower) +"wQD" = ( /turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) -"wQv" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"wQx" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 8; + dir = 6; icon_state = "orange" }, -/area/almayer/hull/upper_hull/u_a_s) -"wRm" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/vending/snack{ - density = 0; - pixel_y = 16 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) +/area/almayer/engineering/lower/engine_core) "wRN" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/item/seeds/goldappleseed, @@ -72209,6 +78933,16 @@ }, /turf/open/floor/almayer, /area/almayer/living/grunt_rnr) +"wRP" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "wRT" = ( /obj/structure/largecrate/random/case/double, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -72241,24 +78975,62 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) -"wSR" = ( +"wSu" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 + dir = 8 + }, +/obj/structure/disposalpipe/junction{ + dir = 4; + icon_state = "pipe-j2" }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cic_hallway) -"wSX" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/area/almayer/shipboard/brig/lobby) +"wSx" = ( +/obj/structure/platform_decoration, +/obj/structure/machinery/power/apc/almayer{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/almayer{ + icon_state = "plate" }, +/area/almayer/maint/hull/upper/u_a_p) +"wSK" = ( +/obj/structure/janitorialcart, +/obj/item/tool/mop, /turf/open/floor/almayer{ - dir = 4; - icon_state = "green" + icon_state = "plate" }, -/area/almayer/living/grunt_rnr) +/area/almayer/shipboard/brig/execution) +"wSR" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cic_hallway) +"wSV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) +"wSX" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "green" + }, +/area/almayer/living/grunt_rnr) "wTd" = ( /obj/structure/bed/chair/office/dark{ dir = 1 @@ -72285,6 +79057,23 @@ icon_state = "red" }, /area/almayer/living/briefing) +"wTn" = ( +/obj/structure/machinery/light/small{ + dir = 1; + pixel_y = 20 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) +"wTu" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/extinguisher, +/obj/item/tool/extinguisher, +/obj/item/tool/crowbar, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "orange" + }, +/area/almayer/maint/upper/mess) "wTw" = ( /obj/structure/machinery/cm_vending/sorted/attachments/squad{ req_access = null; @@ -72297,10 +79086,9 @@ }, /area/almayer/squads/charlie_delta_shared) "wTy" = ( -/obj/item/reagent_container/glass/rag, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ - dir = 4; - icon_state = "red" + icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/south1) "wTJ" = ( @@ -72312,26 +79100,16 @@ /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/port) "wTM" = ( -/obj/structure/machinery/vending/snack, -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" - }, -/area/almayer/medical/medical_science) +/turf/closed/wall/almayer/research/containment/wall/south, +/area/almayer/medical/containment/cell) "wTN" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/box/cups{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/donkpockets, /obj/structure/machinery/power/apc/almayer{ dir = 1 }, -/turf/open/floor/prison{ - icon_state = "kitchen" +/turf/open/floor/almayer{ + icon_state = "plate" }, -/area/almayer/living/tankerbunks) +/area/almayer/living/auxiliary_officer_office) "wUd" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/gloves{ @@ -72348,43 +79126,18 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"wUD" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice2"; - pixel_x = 16; - pixel_y = 16 - }, -/obj/structure/prop/almayer/computers/sensor_computer3, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/obj/structure/sign/safety/terminal{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) -"wUN" = ( -/obj/structure/machinery/optable, +"wUJ" = ( +/obj/structure/largecrate/random/barrel/white, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) -"wUO" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "InnerShutter"; - name = "\improper Saferoom Shutters" - }, +/area/almayer/maint/hull/upper/u_m_p) +"wUK" = ( /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 8; + icon_state = "orangecorner" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/engineering/lower/workshop/hangar) "wUP" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -72395,17 +79148,11 @@ /obj/structure/bed/chair/comfy{ dir = 4 }, -/turf/open/floor/almayer, -/area/almayer/living/pilotbunks) -"wUS" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "blue" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/living/pilotbunks) "wUX" = ( /obj/structure/surface/rack, /obj/item/reagent_container/food/snacks/sliceable/cheesewheel/mature{ @@ -72420,27 +79167,10 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) -"wVb" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/lower_hull/l_a_s) -"wVw" = ( -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/item/vehicle_clamp, -/obj/item/vehicle_clamp, -/obj/item/vehicle_clamp, -/obj/effect/decal/warning_stripes{ - icon_state = "N" - }, -/obj/effect/landmark/wo_supplies/guns/common/m39, -/obj/effect/landmark/wo_supplies/guns/common/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/obj/item/ammo_magazine/smg/m39, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) +"wVt" = ( +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) "wVy" = ( /obj/structure/window/reinforced{ dir = 8 @@ -72464,12 +79194,14 @@ icon_state = "plate" }, /area/almayer/squads/charlie_delta_shared) -"wVz" = ( -/obj/structure/machinery/light/small{ - dir = 4 +"wVA" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "wVB" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -72481,49 +79213,17 @@ icon_state = "bluefull" }, /area/almayer/living/bridgebunks) -"wVD" = ( +"wVN" = ( +/obj/item/roller, /obj/structure/surface/rack, -/obj/item/tool/wirecutters, -/obj/item/tool/shovel/snow, +/obj/item/roller, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) -"wVK" = ( -/turf/open/floor/almayer, -/area/almayer/living/port_emb) -"wVP" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) -"wVV" = ( -/obj/structure/machinery/cryopod{ - pixel_y = 6 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/shipboard/brig/cryo) +/area/almayer/shipboard/panic) "wVW" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/command/cic) -"wVY" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - allow_construction = 0 - }, -/area/almayer/shipboard/brig/lobby) -"wWf" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "wWg" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, @@ -72534,44 +79234,36 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) -"wWm" = ( -/obj/structure/machinery/photocopier, -/obj/structure/sign/safety/terminal{ - pixel_y = 32 +"wWl" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/general_air_control/large_tank_control{ + name = "Lower Mixed Air Control" }, -/obj/structure/sign/safety/commline_connection{ - pixel_x = 15; - pixel_y = 32 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/wood/ship, -/area/almayer/medical/medical_science) -"wWz" = ( -/obj/structure/machinery/chem_storage/medbay{ - dir = 1 +/area/almayer/engineering/lower) +"wWm" = ( +/turf/open/floor/almayer/research/containment/corner_var1{ + icon_state = "containment_corner_variant_2" }, +/area/almayer/medical/containment/cell) +"wWq" = ( +/obj/structure/surface/table/reinforced/black, +/obj/item/clothing/suit/space/compression/uscm, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + icon_state = "plate" }, -/area/almayer/medical/testlab) +/area/almayer/engineering/upper_engineering/port) +"wWz" = ( +/turf/closed/wall/almayer/research/containment/wall/north, +/area/almayer/medical/containment/cell) "wWC" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer, -/area/almayer/living/pilotbunks) -"wWL" = ( -/obj/item/tool/screwdriver, -/obj/structure/platform_decoration{ - dir = 8 - }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 10; + icon_state = "blue" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/living/pilotbunks) "wWP" = ( /obj/structure/prop/cash_register/broken, /obj/structure/machinery/light/small, @@ -72585,22 +79277,36 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"wWT" = ( +"wWR" = ( +/obj/structure/machinery/medical_pod/bodyscanner{ + dir = 8 + }, +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "mono" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/medical/medical_science) "wWX" = ( /obj/effect/landmark/start/marine/engineer/delta, /obj/effect/landmark/late_join/delta, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) -"wXv" = ( -/obj/structure/machinery/vending/cigarette, +"wXh" = ( +/obj/structure/machinery/floodlight/landing{ + name = "bolted floodlight" + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) +"wXl" = ( +/obj/structure/platform, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/upper/u_a_p) "wXH" = ( /obj/structure/bed/chair{ dir = 1 @@ -72613,6 +79319,12 @@ icon_state = "greencorner" }, /area/almayer/living/grunt_rnr) +"wXJ" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "wXT" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ name = "\improper Engineering Storage" @@ -72621,18 +79333,35 @@ icon_state = "test_floor4" }, /area/almayer/hallways/hangar) -"wYA" = ( -/obj/structure/bed/chair/comfy/teal{ - dir = 8 +"wYa" = ( +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" }, -/obj/item/trash/cigbutt{ - pixel_x = -12; - pixel_y = 17 +/area/almayer/lifeboat_pumps/north2) +"wYd" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" }, +/area/almayer/maint/hull/lower/l_a_p) +"wYr" = ( +/obj/structure/machinery/gel_refiller, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "sterile_green_side" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/medical/lower_medical_medbay) +"wYA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north1) +"wYG" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/lower/l_m_s) "wYK" = ( /obj/structure/barricade/handrail/medical, /turf/open/floor/almayer{ @@ -72662,21 +79391,19 @@ }, /turf/open/floor/plating, /area/almayer/engineering/ce_room) -"wZa" = ( -/turf/open/floor/almayer{ - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/general_equipment) -"wZy" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" +"wZv" = ( +/obj/structure/prop/invuln{ + desc = "An inflated membrane. This one is puncture proof. Wow!"; + icon = 'icons/obj/items/inflatable.dmi'; + icon_state = "wall"; + name = "umbilical wall" }, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = -32 +/obj/structure/blocker/invisible_wall, +/turf/open/floor/almayer_hull{ + dir = 4; + icon_state = "outerhull_dir" }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) +/area/almayer/engineering/upper_engineering/port) "wZE" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/book/manual/surgery, @@ -72688,33 +79415,36 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_four) -"wZH" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) +"wZL" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/perma) "wZM" = ( -/obj/structure/bed/sofa/south, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "silver" + icon_state = "blue" }, -/area/almayer/shipboard/brig/cic_hallway) -"wZT" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 +/area/almayer/hallways/aft_hallway) +"wZN" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/fancy/cigarettes/lucky_strikes, +/obj/item/tool/lighter, +/obj/item/clothing/glasses/sunglasses/blindfold, +/obj/structure/machinery/light/small{ + dir = 8 }, -/obj/item/clipboard, -/obj/item/paper, -/obj/item/tool/pen, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/shipboard/brig/execution) +"wZX" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/lifeboat) "xad" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -72726,13 +79456,12 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) -"xae" = ( -/obj/structure/surface/table/almayer, -/obj/item/organ/lungs/prosthetic, +"xas" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/maint/hull/upper/p_bow) "xaC" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/tool/kitchen/utensil/pfork{ @@ -72746,22 +79475,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) -"xaF" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/aft_hallway) "xaM" = ( /obj/structure/surface/table/almayer, /obj/item/newspaper{ @@ -72803,7 +79516,7 @@ }, /area/almayer/command/lifeboat) "xba" = ( -/turf/closed/wall/almayer/reinforced, +/turf/closed/wall/almayer/reinforced/temphull, /area/almayer/living/cryo_cells) "xbd" = ( /obj/effect/decal/warning_stripes{ @@ -72814,37 +79527,71 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"xbg" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "xbk" = ( /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/living/gym) -"xbN" = ( -/obj/structure/machinery/telecomms/processor/preset_four, +"xbI" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ - icon_state = "tcomms" + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"xbN" = ( +/obj/structure/surface/rack{ + density = 0; + pixel_y = 16 }, +/obj/structure/janitorialcart, +/obj/item/tool/mop, +/turf/open/floor/plating, /area/almayer/command/airoom) -"xcp" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_ew_full_cap"; - layer = 3.5 +"xci" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" }, -/obj/structure/platform{ - dir = 1 +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) +"xcs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 }, +/obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_a_s) +"xcI" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) +"xcV" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "OfficeSafeRoom"; + name = "\improper Office Safe Room" }, -/area/almayer/engineering/engine_core) -"xct" = ( -/obj/item/reagent_container/food/snacks/wrapped/barcardine, -/obj/structure/surface/rack, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/shipboard/panic) "xdx" = ( /obj/structure/surface/rack, /obj/item/storage/firstaid/regular/empty, @@ -72859,68 +79606,118 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"xeG" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +"xdJ" = ( +/obj/structure/machinery/light{ + dir = 4; + invisibility = 101 }, -/area/almayer/hull/upper_hull/u_m_p) -"xeP" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/turf/open/floor/almayer{ + icon_state = "cargo" }, +/area/almayer/shipboard/brig/execution) +"xdP" = ( /obj/structure/surface/table/almayer, -/obj/item/spacecash/c10{ - pixel_x = 6 +/obj/item/trash/uscm_mre, +/obj/effect/decal/cleanable/dirt, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 }, -/obj/item/spacecash/c10{ - pixel_x = 5; - pixel_y = 7 +/obj/item/reagent_container/food/drinks/cans/souto/diet/grape{ + pixel_x = -7; + pixel_y = 10 }, -/obj/item/toy/deck{ - pixel_x = -9 +/turf/open/floor/almayer{ + icon_state = "emeraldfull" }, -/turf/open/floor/almayer, -/area/almayer/living/grunt_rnr) -"xfc" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/sign/safety/cryo{ - pixel_x = 36 +/area/almayer/living/briefing) +"xee" = ( +/obj/structure/disposalpipe/junction{ + dir = 4; + icon_state = "pipe-j2" }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull) -"xfh" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - dir = 2; - name = "\improper Evacuation Airlock PU-5"; - req_access = null +/area/almayer/maint/hull/lower/l_f_p) +"xef" = ( +/obj/structure/surface/table/almayer, +/obj/item/folder/yellow, +/obj/structure/machinery/keycard_auth{ + pixel_x = -8; + pixel_y = 25 }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/structure/sign/safety/high_rad{ + pixel_x = 32; + pixel_y = -8 }, -/area/almayer/powered) -"xfi" = ( -/obj/structure/machinery/power/smes/buildable, -/obj/structure/machinery/light{ - dir = 4 +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = 7 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = 14; + pixel_y = 26 }, /turf/open/floor/almayer{ - icon_state = "tcomms" + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) +"xer" = ( +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) +"xew" = ( +/obj/structure/surface/rack, +/obj/item/facepaint/sniper, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/area/almayer/engineering/engine_core) +/area/almayer/maint/hull/upper/u_m_s) "xfm" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/living/cafeteria_officer) -"xfw" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/fancy/cigarettes/lucky_strikes, +"xfq" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/item/clipboard, +/obj/item/paper, +/obj/item/tool/pen, /turf/open/floor/almayer{ - dir = 9; - icon_state = "green" + icon_state = "plate" }, -/area/almayer/squads/req) +/area/almayer/maint/hull/lower/l_a_p) +"xfK" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/transmitter{ + name = "Kitchen Telephone"; + phone_category = "Almayer"; + phone_id = "Kitchen"; + pixel_x = -8; + pixel_y = 29 + }, +/obj/structure/machinery/vending/ingredients, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/grunt_rnr) +"xfO" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "silver" + }, +/area/almayer/living/bridgebunks) "xfT" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -72935,15 +79732,17 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/operating_room_one) -"xgg" = ( -/obj/structure/pipes/vents/pump{ - dir = 8 +"xfW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/m41a{ + pixel_y = 6 }, -/obj/structure/machinery/power/apc/almayer/hardened{ - dir = 4 +/obj/item/weapon/gun/rifle/m41a, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) +/area/almayer/maint/hull/upper/u_m_s) "xgh" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -72952,23 +79751,23 @@ icon_state = "sterile_green" }, /area/almayer/medical/lower_medical_lobby) -"xgn" = ( +"xgm" = ( +/obj/structure/reagent_dispensers/fueltank/oxygentank, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) +"xgr" = ( /obj/structure/ladder{ height = 1; - id = "ForePortMaint" + id = "AftPortMaint" }, /obj/structure/sign/safety/ladder{ pixel_x = 8; pixel_y = -32 }, /turf/open/floor/plating/almayer, -/area/almayer/hull/lower_hull/l_f_p) -"xgr" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/area/almayer/maint/hull/lower/l_a_p) "xgx" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -72979,62 +79778,65 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) +"xgI" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + req_access = null + }, +/obj/item/storage/donut_box{ + pixel_y = 8 + }, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/brig/chief_mp_office) "xgJ" = ( -/obj/structure/machinery/cm_vending/sorted/medical/blood, /obj/structure/machinery/light{ dir = 1 }, +/obj/structure/machinery/cm_vending/sorted/medical/blood/bolted, /turf/open/floor/almayer{ dir = 1; icon_state = "sterile_green_side" }, /area/almayer/medical/lockerroom) -"xgL" = ( -/obj/item/clothing/head/welding{ - pixel_y = 6 +"xgN" = ( +/obj/structure/bed/chair/comfy/bravo{ + dir = 1 }, -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 +/obj/effect/decal/cleanable/dirt, +/obj/structure/prop/holidays/string_lights{ + dir = 8; + pixel_x = 29 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) -"xgM" = ( -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice2"; - pixel_x = 16; - pixel_y = 16 +/area/almayer/living/briefing) +"xgP" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/upper_medical) +"xgS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, /obj/structure/prop/invuln/overhead_pipe{ pixel_x = 12 }, -/obj/structure/surface/table/reinforced/almayer_B, /obj/structure/prop/invuln/overhead_pipe{ pixel_x = 12; pixel_y = 12 }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) -"xgS" = ( -/obj/structure/largecrate/supply/supplies/mre{ - desc = "A supply crate containing everything you need to stop a CLF uprising."; - name = "\improper USCM crate 'FOB supplies'" - }, -/obj/item/storage/box/mousetraps{ - pixel_y = 12 - }, -/obj/structure/sign/arcturianstopsign{ +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; pixel_y = 32 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/living/port_emb) +/area/almayer/maint/hull/lower/l_m_p) "xhn" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -73054,71 +79856,83 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/main_office) -"xhM" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - dir = 1; - name = "\improper Brig" - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Brig Lockdown Shutters"; - name = "\improper Brig Lockdown Shutter" - }, +"xhO" = ( /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/lower/l_a_p) "xhQ" = ( /obj/structure/window/framed/almayer, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/squads/bravo) -"xhU" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/hull/upper_hull/u_a_p) "xhZ" = ( /obj/structure/bed/chair/comfy/beige{ dir = 4 }, /turf/open/floor/carpet, /area/almayer/command/cichallway) -"xiC" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +"xik" = ( +/obj/structure/machinery/shower{ + dir = 8 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/item/toy/inflatable_duck, +/obj/structure/window/reinforced, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) +"xiH" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, -/area/almayer/engineering/engine_core) -"xjw" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 +/area/almayer/maint/hull/lower/l_f_s) +"xiP" = ( +/obj/structure/closet/secure_closet/engineering_welding{ + req_one_access_txt = "7;23;27" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) +"xiU" = ( +/obj/structure/machinery/portable_atmospherics/hydroponics, +/obj/item/tool/minihoe{ + pixel_x = -4; + pixel_y = -4 + }, +/obj/item/reagent_container/glass/fertilizer/ez, +/obj/item/seeds/ambrosiavulgarisseed, +/obj/item/tool/plantspray/weeds, +/obj/structure/machinery/firealarm{ + pixel_y = 28 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"xiV" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/p_bow) +"xjb" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + access_modified = 1; + name = "\improper Main Kitchen"; + req_one_access_txt = "30;19" }, /turf/open/floor/prison{ icon_state = "kitchen" }, -/area/almayer/engineering/upper_engineering/port) +/area/almayer/living/grunt_rnr) +"xjt" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/computer/card{ + dir = 4; + pixel_x = 2 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "xjz" = ( /turf/open/floor/almayer{ icon_state = "plating_striped" }, /area/almayer/command/lifeboat) -"xjC" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "xjD" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -73127,6 +79941,27 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) +"xjF" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/secure_data{ + dir = 4 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = 3; + pixel_y = 27 + }, +/obj/structure/sign/safety/rewire{ + pixel_x = 15; + pixel_y = 27 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) "xjG" = ( /obj/structure/machinery/door_control{ id = "Interrogation Shutters"; @@ -73167,19 +80002,40 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/shipboard/starboard_point_defense) +"xkb" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"xkc" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "xkd" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/cells) -"xkw" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ +"xkB" = ( +/obj/structure/bed/chair/comfy/charlie{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - dir = 4; - icon_state = "greencorner" + icon_state = "plate" + }, +/area/almayer/living/briefing) +"xkC" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "emerald" }, /area/almayer/hallways/port_hallway) "xlk" = ( @@ -73195,34 +80051,17 @@ icon_state = "orangecorner" }, /area/almayer/engineering/ce_room) -"xlD" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"xlX" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) -"xlY" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/toolbox/mechanical, -/obj/structure/machinery/light{ +"xlO" = ( +/obj/structure/filingcabinet, +/obj/item/folder/yellow, +/obj/structure/machinery/power/apc/almayer{ dir = 1 }, -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/obj/item/storage/toolbox/electrical{ - pixel_y = 8 - }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "orange" }, -/area/almayer/engineering/engineering_workshop) +/area/almayer/engineering/lower/workshop/hangar) "xmg" = ( /obj/structure/surface/table/almayer, /obj/structure/flora/pottedplant{ @@ -73235,15 +80074,21 @@ icon_state = "silverfull" }, /area/almayer/shipboard/brig/cic_hallway) -"xmv" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/cameras/almayer{ - dir = 1 +"xmn" = ( +/obj/structure/surface/rack, +/obj/item/tool/weldpack, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 1; + pixel_y = 7 + }, +/obj/item/storage/toolbox/mechanical/green{ + pixel_x = 1; + pixel_y = -1 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_f_p) "xmJ" = ( /obj/structure/closet, /obj/structure/sign/safety/bathunisex{ @@ -73265,25 +80110,33 @@ icon_state = "cargo" }, /area/almayer/medical/lower_medical_medbay) -"xne" = ( -/obj/structure/machinery/door/poddoor/almayer/blended{ - id = "RoomDivider"; - layer = 3.1; - name = "\improper Room Divider" - }, +"xmX" = ( /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "dark_sterile" }, -/area/almayer/command/corporateliason) -"xnl" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - name = "\improper Exterior Airlock"; - req_access = null +/area/almayer/shipboard/brig/surgery) +"xns" = ( +/obj/structure/machinery/door_control{ + id = "ARES JoeCryo"; + name = "Working Joe Cryogenics Lockdown"; + pixel_x = -24; + pixel_y = -8; + req_one_access_txt = "91;92" + }, +/obj/effect/landmark/late_join/working_joe, +/obj/effect/landmark/start/working_joe, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/airoom) +"xnz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 5; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/command/lifeboat) "xnI" = ( /obj/effect/landmark/start/requisition, /turf/open/floor/plating/plating_catwalk, @@ -73300,17 +80153,27 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering) -"xnY" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"xoh" = ( +"xoe" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" + dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) +/obj/structure/machinery/status_display{ + pixel_y = -29 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "bluecorner" + }, +/area/almayer/squads/delta) +"xoj" = ( +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop) +"xoB" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/maint/hull/upper/u_f_s) "xoJ" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 @@ -73319,73 +80182,46 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/port_point_defense) -"xoS" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E" - }, -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/item/weapon/gun/rifle/m4ra, -/obj/item/weapon/gun/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/item/ammo_magazine/rifle/m4ra, -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = -30 - }, +"xoO" = ( /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + dir = 10; + icon_state = "orange" }, -/area/almayer/shipboard/brig/armory) -"xpd" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 +/area/almayer/engineering/upper_engineering/port) +"xpi" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/mirror{ + pixel_x = -29 }, -/area/almayer/hull/upper_hull/u_f_s) -"xpf" = ( -/obj/structure/bed/chair{ - dir = 4 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "dark_sterile" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/living/commandbunks) "xpo" = ( -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "silver" - }, -/area/almayer/shipboard/brig/cic_hallway) -"xps" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ - name = "\improper Brig"; +/obj/structure/closet/secure_closet/cmdcabinet{ + desc = "A bulletproof cabinet containing communications equipment."; + name = "communications cabinet"; + pixel_y = 24; req_access = null; - req_one_access_txt = "1;3" + req_one_access_txt = "3" }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/item/device/radio/listening_bug/radio_linked/mp{ + pixel_y = 8 }, -/area/almayer/shipboard/brig/lobby) -"xpt" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = 25 +/obj/item/device/radio/listening_bug/radio_linked/mp, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/shipboard/brig/chief_mp_office) "xpI" = ( /obj/structure/stairs{ dir = 4 @@ -73399,6 +80235,12 @@ allow_construction = 0 }, /area/almayer/hallways/starboard_hallway) +"xpL" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "xpT" = ( /obj/structure/pipes/vents/pump{ dir = 8 @@ -73407,12 +80249,43 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"xqg" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +"xpZ" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 + }, /turf/open/floor/almayer{ - icon_state = "green" + dir = 5; + icon_state = "plating" }, -/area/almayer/hallways/starboard_hallway) +/area/almayer/engineering/lower/engine_core) +"xqp" = ( +/obj/structure/machinery/body_scanconsole{ + dir = 8; + layer = 3.1 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/machinery/disposal/delivery{ + density = 0; + desc = "A pneumatic delivery unit. Sends items to the requisitions."; + icon_state = "delivery_med"; + name = "Requisitions Delivery Unit"; + pixel_y = 28 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/medical_science) +"xqs" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/shipboard/brig/chief_mp_office) "xqv" = ( /obj/structure/bed/sofa/south/white/right, /turf/open/floor/almayer{ @@ -73437,41 +80310,81 @@ }, /turf/closed/wall/almayer, /area/almayer/command/securestorage) -"xqS" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 +"xqQ" = ( +/obj/structure/machinery/door/poddoor/almayer/blended{ + id = "RoomDivider"; + layer = 3.1; + name = "\improper Room Divider" }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"xro" = ( -/obj/structure/toilet{ - pixel_y = 13 +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/corporateliaison) +"xrg" = ( +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = 7 + }, +/obj/structure/sign/safety/airlock{ + pixel_x = 32; + pixel_y = -8 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/shipboard/brig/perma) +/area/almayer/maint/hull/lower/stern) +"xrq" = ( +/obj/structure/closet/firecloset, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/lifeboat) "xrr" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/stern_hallway) -"xrN" = ( -/obj/structure/largecrate/supply/supplies/mre, +"xrt" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/sign/safety/rewire{ + pixel_x = 12; + pixel_y = -24 + }, /turf/open/floor/almayer{ - dir = 1; icon_state = "red" }, -/area/almayer/hull/upper_hull/u_a_p) -"xrP" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +/area/almayer/shipboard/brig/chief_mp_office) +"xry" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/evidence_storage) +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"xrI" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) +"xsg" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/main_office) "xsl" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -73481,6 +80394,22 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) +"xss" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/cryo_cells) +"xsv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "xsw" = ( /turf/open/floor/almayer{ dir = 6; @@ -73496,35 +80425,26 @@ icon_state = "plating" }, /area/almayer/medical/upper_medical) +"xsQ" = ( +/obj/structure/surface/table/almayer, +/obj/item/stack/sheet/glass{ + amount = 20; + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/weapon/dart, +/obj/item/weapon/dart, +/obj/item/weapon/dart, +/obj/item/weapon/dart/green, +/obj/item/weapon/dart/green, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "xsW" = ( /obj/structure/machinery/cm_vending/gear/vehicle_crew, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/hallways/vehiclehangar) -"xtC" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - req_one_access = null; - req_one_access_txt = "30;19" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/grunt_rnr) -"xtD" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/weldpack, -/obj/item/storage/toolbox/mechanical, -/obj/item/reagent_container/spray/cleaner, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_a_s) "xtM" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -73533,44 +80453,37 @@ }, /area/almayer/medical/lower_medical_lobby) "xuc" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/extinguisher, -/obj/item/reagent_container/spray/cleaner{ - pixel_x = -8; - pixel_y = 3 - }, /obj/structure/disposalpipe/segment{ dir = 1; icon_state = "pipe-c" }, -/turf/open/floor/almayer{ - icon_state = "silver" - }, +/turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) -"xuB" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "xuE" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" +/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ + dir = 1; + id = "Containment Cell 5"; + locked = 1; + name = "\improper Containment Cell 5" }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "sterile_green_side" +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Containment Cell 5"; + name = "\improper Containment Cell 5"; + unacidable = 1 }, -/area/almayer/medical/medical_science) -"xuI" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/containment/cell) "xuQ" = ( /obj/structure/bed/chair{ dir = 4 @@ -73579,16 +80492,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/living/port_emb) -"xuU" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/reagent_dispensers/fueltank/custom, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" +"xuY" = ( +/obj/structure/sign/safety/escapepod{ + pixel_x = 8; + pixel_y = 32 }, -/area/almayer/engineering/engine_core) +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) "xuZ" = ( /turf/open/floor/almayer{ dir = 8; @@ -73602,19 +80512,6 @@ icon_state = "mono" }, /area/almayer/hallways/aft_hallway) -"xvr" = ( -/turf/closed/wall/almayer, -/area/almayer/shipboard/brig/chief_mp_office) -"xvw" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/brig/perma) "xvE" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/multi_tile/almayer/marine/charlie{ @@ -73624,12 +80521,45 @@ icon_state = "test_floor4" }, /area/almayer/squads/charlie) -"xvX" = ( -/obj/structure/machinery/cm_vending/gear/leader, -/turf/open/floor/almayer{ - icon_state = "plate" - }, +"xvM" = ( +/obj/structure/machinery/door_control{ + id = "ARES StairsLower"; + name = "ARES Core Lockdown"; + pixel_x = 24; + pixel_y = 8; + req_one_access_txt = "90;91;92" + }, +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer/no_build{ + dir = 4; + icon_state = "silver" + }, +/area/almayer/command/airoom) +"xvQ" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/sentencing{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) +"xvX" = ( +/obj/structure/machinery/cm_vending/gear/leader, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/squads/bravo) +"xwd" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "xwl" = ( /obj/structure/window/reinforced{ dir = 4; @@ -73666,41 +80596,47 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) -"xwq" = ( -/obj/structure/largecrate/supply/supplies/mre, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"xwv" = ( -/obj/structure/bed/chair{ - dir = 1 +"xwE" = ( +/obj/structure/bed/chair/comfy/alpha, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/sign/poster{ - desc = "YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE."; - icon_state = "poster11"; - name = "YOU ALWAYS KNOW A WORKING JOE."; - pixel_x = -27; - serial_number = 11 +/area/almayer/living/briefing) +"xwX" = ( +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"xwG" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +/area/almayer/lifeboat_pumps/south2) +"xxa" = ( +/obj/item/stack/sheet/cardboard{ + amount = 50 }, -/obj/structure/disposalpipe/segment, +/obj/structure/surface/rack, +/obj/item/packageWrap, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 4; + icon_state = "green" + }, +/area/almayer/squads/req) +"xxh" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/item/prop/magazine/boots/n160{ + layer = 2.8; + pixel_x = 4; + pixel_y = -8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/area/almayer/hallways/aft_hallway) -"xxe" = ( -/obj/structure/surface/rack, -/obj/item/tool/crowbar, -/obj/item/tool/weldingtool, -/obj/item/tool/wrench, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "dark_sterile" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/living/commandbunks) "xxi" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3" @@ -73711,6 +80647,14 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"xxl" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 2" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "xxm" = ( /obj/structure/bed{ can_buckle = 0 @@ -73748,6 +80692,19 @@ }, /turf/open/floor/plating, /area/almayer/living/port_emb) +"xxG" = ( +/obj/structure/prop/holidays/string_lights{ + pixel_y = 27 + }, +/obj/structure/largecrate/random/barrel/red, +/obj/item/reagent_container/food/drinks/cans/cola{ + pixel_x = -2; + pixel_y = 16 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "xxI" = ( /obj/structure/cargo_container/wy/mid, /obj/structure/sign/poster{ @@ -73788,20 +80745,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"xxJ" = ( -/obj/structure/platform, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"xxT" = ( -/obj/structure/surface/table/almayer, -/obj/item/frame/table, -/obj/item/storage/toolbox/electrical, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "xxZ" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/almayer{ @@ -73818,26 +80761,48 @@ /area/almayer/shipboard/brig/main_office) "xyt" = ( /obj/structure/surface/table/almayer, -/obj/structure/machinery/power/apc/almayer{ - dir = 1 +/obj/item/storage/toolbox/mechanical{ + pixel_x = 3; + pixel_y = 12 + }, +/obj/item/storage/toolbox/electrical{ + pixel_y = 5 + }, +/obj/item/folder/white{ + layer = 2.9; + pixel_x = -8 + }, +/obj/structure/machinery/computer/working_joe{ + pixel_y = 16 }, -/obj/item/folder/white, /turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" + icon_state = "mono" }, -/area/almayer/medical/containment/cell) +/area/almayer/medical/hydroponics) "xyw" = ( /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hallways/hangar) -"xyz" = ( -/obj/structure/sign/safety/maint{ - pixel_x = -17 +"xyB" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) +"xyL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south2) "xyY" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ @@ -73849,6 +80814,11 @@ icon_state = "green" }, /area/almayer/squads/req) +"xyZ" = ( +/obj/structure/machinery/light/small, +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "xzf" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -73859,29 +80829,27 @@ icon_state = "blue" }, /area/almayer/living/basketball) -"xzo" = ( -/obj/item/stack/catwalk, -/obj/structure/platform_decoration{ - dir = 4 - }, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_a_p) -"xzu" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" +"xzh" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/u_m_p) +"xzB" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) +"xzO" = ( +/obj/structure/closet/secure_closet{ + name = "\improper Execution Firearms" }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/cells) -"xAe" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, +/obj/item/weapon/gun/rifle/m4ra, +/obj/item/weapon/gun/rifle/m4ra, +/obj/item/weapon/gun/rifle/m4ra, +/obj/item/ammo_box/magazine/m4ra, /turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_corner" + icon_state = "plate" }, -/area/almayer/medical/hydroponics) +/area/almayer/shipboard/brig/execution) +"xAe" = ( +/turf/closed/wall/almayer/research/containment/wall/corner, +/area/almayer/medical/containment/cell) "xAj" = ( /obj/structure/bed/chair/bolted{ dir = 8 @@ -73899,6 +80867,13 @@ icon_state = "emeraldfull" }, /area/almayer/living/briefing) +"xAu" = ( +/obj/structure/sign/safety/restrictedarea{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "xAB" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, @@ -73908,12 +80883,6 @@ icon_state = "green" }, /area/almayer/squads/req) -"xAC" = ( -/obj/structure/surface/rack, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/almayer/engineering/upper_engineering/port) "xAI" = ( /obj/structure/platform{ dir = 1 @@ -73939,6 +80908,22 @@ "xBe" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/engineering/upper_engineering) +"xBn" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ + id_tag = "Boat1-D3"; + linked_dock = "almayer-lifeboat1"; + throw_dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering/port) +"xBK" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/upper/u_f_p) "xBQ" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -73946,6 +80931,14 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"xBS" = ( +/obj/structure/bed/chair/comfy/beige{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "xBV" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -73963,79 +80956,85 @@ icon_state = "test_floor4" }, /area/almayer/squads/req) -"xCd" = ( -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = 30 - }, +"xCb" = ( +/obj/structure/closet/secure_closet/fridge/dry, /turf/open/floor/almayer{ - icon_state = "redcorner" + icon_state = "plate" }, -/area/almayer/shipboard/brig/processing) -"xCj" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"xCm" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"xCN" = ( -/obj/structure/prop/holidays/string_lights{ - pixel_y = 27 +/area/almayer/living/grunt_rnr) +"xCf" = ( +/obj/structure/bed/chair/comfy/orange{ + dir = 1 }, -/obj/structure/largecrate/random/barrel/red, -/obj/item/reagent_container/food/drinks/cans/cola{ - pixel_x = -2; - pixel_y = 16 +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) +"xCy" = ( +/obj/structure/sign/safety/maint{ + pixel_x = -19; + pixel_y = -6 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = -19; + pixel_y = 6 }, -/area/almayer/hull/lower_hull/l_m_s) -"xCR" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"xCX" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"xDe" = ( +/obj/effect/projector{ + name = "Almayer_Down4"; + vector_x = 19; + vector_y = -104 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + allow_construction = 0 }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/hallways/upper/port) "xDn" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"xDp" = ( -/obj/structure/surface/rack, -/obj/item/paper{ - pixel_x = 3; - pixel_y = 3 +"xDC" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, -/obj/item/folder/yellow, +/area/almayer/command/airoom) +"xDF" = ( +/obj/structure/machinery/autolathe, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) +"xDG" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 }, -/area/almayer/hull/upper_hull/u_f_s) -"xEc" = ( +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ - dir = 9; - icon_state = "red" + icon_state = "test_floor4" }, -/area/almayer/shipboard/brig/main_office) -"xEe" = ( -/obj/structure/bed, -/obj/structure/machinery/status_display{ - pixel_x = -32 +/area/almayer/maint/hull/upper/u_a_s) +"xDV" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "red" }, -/area/almayer/shipboard/brig/perma) +/area/almayer/hallways/upper/port) +"xEe" = ( +/obj/structure/prop/invuln/joey, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"xEs" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "xEz" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/book/manual/surgery, @@ -74047,9 +81046,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_two) -"xEF" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/upper_hull/u_f_p) "xEO" = ( /turf/open/floor/prison{ icon_state = "kitchen" @@ -74061,24 +81057,9 @@ icon_state = "plate" }, /area/almayer/living/offices) -"xFs" = ( -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/obj/structure/surface/table/almayer, -/obj/item/storage/box/handcuffs{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/device/flash{ - pixel_y = -8 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) +"xFt" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "xFw" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -74089,17 +81070,6 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) -"xFD" = ( -/obj/structure/ladder{ - height = 1; - id = "ForeStarboardMaint" - }, -/obj/structure/sign/safety/ladder{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/lower_hull/l_f_s) "xFP" = ( /turf/open/floor/almayer{ dir = 5; @@ -74133,6 +81103,12 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) +"xGm" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "xGo" = ( /obj/structure/machinery/autolathe, /turf/open/floor/almayer{ @@ -74160,6 +81136,15 @@ icon_state = "test_floor4" }, /area/almayer/squads/bravo) +"xGF" = ( +/obj/structure/machinery/vending/snack{ + density = 0; + pixel_y = 18 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "xGJ" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -74170,55 +81155,72 @@ icon_state = "red" }, /area/almayer/living/briefing) -"xGU" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +"xGK" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/storage/box/lights/tubes{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/effect/decal/cleanable/ash{ + pixel_y = 19 + }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/command/lifeboat) -"xHe" = ( -/obj/structure/pipes/vents/pump{ - dir = 4 +/area/almayer/maint/hull/upper/u_a_p) +"xGT" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/maint/hull/lower/l_m_p) +"xHa" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/powercell, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "xHp" = ( /turf/open/floor/almayer{ icon_state = "orange" }, /area/almayer/squads/alpha_bravo_shared) -"xHG" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - dir = 2; - name = "\improper Evacuation Airlock SU-5"; - req_access = null +"xHD" = ( +/obj/structure/machinery/light, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 10; + icon_state = "silver" + }, +/area/almayer/maint/hull/upper/u_m_p) +"xHS" = ( +/obj/structure/reagent_dispensers/fueltank/oxygentank{ + anchored = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/area/almayer/powered) -"xHM" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/sentencing, -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/processing) -"xHW" = ( -/obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ icon_state = "cargo" }, -/area/almayer/hull/upper_hull/u_f_p) -"xIb" = ( -/obj/structure/closet/emcloset, +/area/almayer/engineering/lower/workshop/hangar) +"xHX" = ( +/obj/structure/sign/safety/restrictedarea{ + pixel_x = 8; + pixel_y = 32 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/maint/hull/lower/p_bow) "xId" = ( /obj/structure/surface/rack, /obj/item/mortar_shell/he, @@ -74227,26 +81229,6 @@ icon_state = "cargo" }, /area/almayer/squads/req) -"xIi" = ( -/obj/item/stool{ - pixel_x = 15; - pixel_y = 6 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"xIj" = ( -/obj/structure/largecrate/random/secure, -/obj/item/weapon/baseballbat/metal{ - pixel_x = -2; - pixel_y = 8 - }, -/obj/item/clothing/glasses/sunglasses{ - pixel_y = 5 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "xIk" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -74255,20 +81237,67 @@ icon_state = "cargo" }, /area/almayer/medical/lower_medical_medbay) -"xIw" = ( -/obj/structure/machinery/brig_cell/cell_2{ - pixel_x = 32 +"xIq" = ( +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/evidence_storage) +"xIu" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/secure_data{ + dir = 8 + }, +/obj/structure/machinery/firealarm{ + pixel_y = 28 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -14; + pixel_y = 28 }, /turf/open/floor/almayer{ - allow_construction = 0 + dir = 4; + icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"xIO" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 11" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "xIQ" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" }, /turf/open/floor/almayer, /area/almayer/living/offices) +"xIV" = ( +/turf/open/floor/almayer, +/area/almayer/maint/upper/mess) +"xIW" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/surface/table/almayer, +/obj/item/book/manual/marine_law{ + pixel_x = -3; + pixel_y = 1 + }, +/obj/item/device/flashlight/lamp{ + layer = 3.1; + pixel_x = 7; + pixel_y = 10 + }, +/obj/item/poster, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/lobby) "xJe" = ( /turf/open/floor/almayer{ dir = 8; @@ -74283,20 +81312,12 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"xJi" = ( -/obj/structure/disposalpipe/segment, +"xJp" = ( +/obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) -"xJC" = ( -/obj/structure/machinery/door/airlock/almayer/generic/corporate{ - name = "Corporate Liaison's Closet" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/corporateliason) +/area/almayer/maint/hull/lower/l_m_s) "xJH" = ( /turf/open/floor/almayer{ icon_state = "cargo" @@ -74312,6 +81333,36 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"xJT" = ( +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) +"xKG" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/door_control{ + id = "Under Construction Shutters"; + name = "shutter-control"; + pixel_x = -25 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"xKM" = ( +/obj/structure/machinery/status_display{ + pixel_x = 16; + pixel_y = -30 + }, +/obj/structure/sign/safety/airlock{ + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "xKT" = ( /obj/effect/decal/cleanable/cobweb, /obj/structure/machinery/power/apc/almayer{ @@ -74319,54 +81370,52 @@ }, /turf/open/floor/almayer, /area/almayer/living/synthcloset) -"xKW" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 +"xLi" = ( +/obj/structure/surface/table/almayer, +/obj/effect/landmark/map_item, +/obj/item/paper_bin/uscm{ + pixel_x = -7; + pixel_y = 6 }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -14; - pixel_y = 13 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/prop/invuln/overhead_pipe{ +/area/almayer/living/briefing) +"xLl" = ( +/obj/structure/machinery/cm_vending/clothing/military_police{ + density = 0; + pixel_y = 16 + }, +/obj/structure/window/reinforced{ dir = 4; - pixel_x = 12; - pixel_y = 13 + health = 80 + }, +/obj/structure/window/reinforced{ + dir = 8 }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/shipboard/brig/general_equipment) +"xLn" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) +"xLu" = ( +/obj/structure/largecrate/random/barrel/red, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/maint/hull/upper/u_m_s) "xMf" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/shipboard/port_point_defense) -"xMh" = ( -/obj/structure/closet/crate{ - desc = "One of those old special operations crates from back in the day. After a leaked report from a meeting of SOF leadership lambasted the crates as 'waste of operational funds' the crates were removed from service."; - name = "special operations crate" - }, -/obj/item/clothing/mask/gas/swat, -/obj/item/clothing/mask/gas/swat, -/obj/item/clothing/mask/gas/swat, -/obj/item/clothing/mask/gas/swat, -/obj/item/attachable/suppressor, -/obj/item/attachable/suppressor, -/obj/item/attachable/suppressor, -/obj/item/attachable/suppressor, -/obj/item/explosive/grenade/smokebomb, -/obj/item/explosive/grenade/smokebomb, -/obj/item/explosive/grenade/smokebomb, -/obj/item/explosive/grenade/smokebomb, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) -"xMj" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"xMj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -74391,18 +81440,38 @@ allow_construction = 0 }, /area/almayer/hallways/aft_hallway) +"xMl" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) +"xMm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "xMs" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/operating_room_two) -"xMt" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 +"xMz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, /turf/open/floor/almayer{ dir = 8; - icon_state = "plating_striped" + icon_state = "red" }, -/area/almayer/squads/req) +/area/almayer/hallways/upper/starboard) "xMA" = ( /obj/structure/machinery/computer/med_data, /obj/structure/sign/safety/terminal{ @@ -74418,12 +81487,26 @@ dir = 6 }, /area/almayer/command/cic) -"xMK" = ( +"xMG" = ( +/obj/structure/machinery/door_control{ + id = "OuterShutter"; + name = "Outer Shutter"; + pixel_x = 5; + pixel_y = -2; + req_one_access_txt = "1;3" + }, +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/door_control{ + id = "OfficeSafeRoom"; + name = "Office Safe Room"; + pixel_x = 5; + pixel_y = 5; + req_one_access_txt = "1;3" + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "emeraldcorner" + icon_state = "plate" }, -/area/almayer/hallways/port_hallway) +/area/almayer/shipboard/panic) "xML" = ( /obj/structure/machinery/computer/cameras/wooden_tv/prop{ pixel_x = -4; @@ -74435,13 +81518,18 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"xMQ" = ( -/obj/structure/machinery/vending/cola{ - density = 0; - pixel_y = 16 +"xMO" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) +/area/almayer/hallways/upper/starboard) "xMR" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -74460,6 +81548,23 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"xNf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/engine_core) +"xNg" = ( +/obj/structure/pipes/binary/pump/on{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "xNj" = ( /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage{ req_access = null; @@ -74487,6 +81592,21 @@ icon_state = "silver" }, /area/almayer/command/computerlab) +"xNz" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/microwave{ + pixel_y = 7 + }, +/obj/item/storage/box/cups{ + pixel_x = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_y = 19 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/auxiliary_officer_office) "xNB" = ( /obj/structure/machinery/light, /obj/structure/sign/safety/security{ @@ -74498,6 +81618,26 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) +"xNL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/vehiclehangar) +"xOs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/sign/poster/pinup{ + pixel_x = -30 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/command/corporateliaison) "xOL" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -74506,98 +81646,109 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) +"xOT" = ( +/obj/structure/closet/secure_closet/fridge/meat/stock, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/grunt_rnr) "xOY" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/structure/surface/table/reinforced/prison, +/obj/structure/closet/secure_closet/surgical{ + pixel_x = -30 }, -/obj/structure/disposalpipe/junction{ - dir = 8; - icon_state = "pipe-j2" +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, +/turf/open/floor/almayer/research/containment/corner{ + dir = 4 + }, +/area/almayer/medical/containment/cell) +"xPq" = ( +/obj/structure/filingcabinet, +/obj/item/folder/yellow, /turf/open/floor/almayer{ - dir = 10; - icon_state = "sterile_green_side" + dir = 1; + icon_state = "orange" }, -/area/almayer/medical/medical_science) -"xPg" = ( +/area/almayer/engineering/lower/workshop/hangar) +"xPu" = ( /obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 + dir = 10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) +"xPZ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 }, -/obj/structure/machinery/light, /turf/open/floor/almayer{ - icon_state = "green" + dir = 5; + icon_state = "orange" }, -/area/almayer/hallways/starboard_hallway) -"xPE" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/engineering/upper_engineering/port) "xQa" = ( /obj/structure/bed/chair/office/dark{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/command/cic) +"xQd" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"xQe" = ( +/obj/structure/machinery/vending/cigarette{ + density = 0; + pixel_y = 18 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "xQg" = ( /obj/structure/pipes/vents/pump{ dir = 8 }, -/turf/open/floor/almayer, -/area/almayer/living/pilotbunks) -"xQm" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/microwave, /turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_corner" - }, -/area/almayer/medical/medical_science) -"xQD" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = -25 + dir = 8; + icon_state = "bluecorner" }, -/obj/item/paper_bin/uscm{ - pixel_y = 7 +/area/almayer/living/pilotbunks) +"xQj" = ( +/obj/item/pipe{ + dir = 4; + layer = 3.5 }, -/obj/item/tool/pen, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"xQm" = ( +/turf/open/floor/almayer/research/containment/floor2{ + dir = 1 }, -/area/almayer/shipboard/brig/perma) +/area/almayer/medical/containment/cell) "xQV" = ( -/obj/effect/landmark/start/working_joe, -/turf/open/floor/almayer{ +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer/no_build{ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"xRc" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/structure/machinery/door_control{ - id = "Under Construction Shutters"; - name = "shutter-control"; - pixel_x = -25 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"xRh" = ( -/obj/structure/bed, -/obj/item/bedsheet/green, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/obj/structure/machinery/cm_vending/clothing/senior_officer{ - density = 0; - pixel_y = 30 +"xQW" = ( +/obj/structure/sign/safety/bathunisex{ + pixel_x = -18 }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/medical/upper_medical) +/area/almayer/maint/hull/upper/p_stern) "xRj" = ( /obj/structure/bed/chair{ dir = 8; @@ -74636,15 +81787,6 @@ dir = 1 }, /area/almayer/living/briefing) -"xRE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "xRH" = ( /obj/structure/sign/safety/fibre_optics{ pixel_y = 32 @@ -74674,12 +81816,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"xSb" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "xSw" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -74700,30 +81836,6 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"xSA" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/flashlight/lamp{ - layer = 3.1; - pixel_x = 7; - pixel_y = 10 - }, -/obj/item/book/manual/marine_law{ - pixel_x = -3; - pixel_y = 1 - }, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/obj/structure/sign/safety/intercom{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/shipboard/brig/lobby) "xSI" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/emails{ @@ -74750,18 +81862,19 @@ icon_state = "red" }, /area/almayer/squads/alpha) -"xTp" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"xSY" = ( +/obj/structure/machinery/light{ + dir = 1 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, /turf/open/floor/almayer{ dir = 1; - icon_state = "red" + icon_state = "sterile_green_corner" }, -/area/almayer/shipboard/brig/processing) +/area/almayer/medical/containment) "xTt" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -74774,6 +81887,42 @@ icon_state = "test_floor4" }, /area/almayer/hallways/stern_hallway) +"xTu" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/engine_core) +"xTx" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/maint/hull/upper/u_f_p) +"xTG" = ( +/obj/structure/closet/emcloset, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) +"xTH" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/recharger, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/processing) +"xTL" = ( +/obj/structure/machinery/cm_vending/gear/executive_officer{ + pixel_y = 30; + density = 0 + }, +/obj/structure/machinery/power/apc/almayer{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/numbertwobunks) "xTR" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -74813,6 +81962,19 @@ icon_state = "orange" }, /area/almayer/living/port_emb) +"xUa" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"xUy" = ( +/obj/item/reagent_container/food/snacks/wrapped/barcardine, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) "xUA" = ( /obj/structure/surface/table/almayer, /obj/item/storage/pouch/tools/tank, @@ -74829,35 +81991,64 @@ icon_state = "silver" }, /area/almayer/command/cic) -"xUI" = ( -/obj/structure/largecrate/random/barrel/red, -/obj/structure/machinery/light/small{ - dir = 8 +"xUV" = ( +/obj/structure/bed/chair{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) -"xUV" = ( -/obj/structure/pipes/vents/pump{ +/area/almayer/command/combat_correspondent) +"xUY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/machinery/light/small{ dir = 1 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/command/combat_correspondent) -"xVj" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/weldingtool{ - pixel_x = 6; - pixel_y = -16 +/area/almayer/maint/hull/lower/l_f_p) +"xVc" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/door_control{ + id = "ARES StairsUpper"; + name = "ARES Core Access"; + pixel_x = 24; + pixel_y = 24; + req_one_access_txt = "90;91;92" }, -/obj/item/clothing/head/welding, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"xVe" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "xVk" = ( /turf/open/space, /area/space/almayer/lifeboat_dock) +"xVl" = ( +/turf/open/floor/almayer{ + allow_construction = 0 + }, +/area/almayer/shipboard/brig/main_office) +"xVF" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) "xVI" = ( /obj/structure/largecrate/random/case, /turf/open/floor/almayer{ @@ -74865,26 +82056,22 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) -"xVO" = ( -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/engineering_workshop/hangar) "xVS" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) +"xVT" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/closed/wall/almayer, +/area/almayer/living/tankerbunks) "xWd" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -74893,10 +82080,12 @@ /area/almayer/squads/alpha_bravo_shared) "xWo" = ( /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + req_one_access = null; req_one_access_txt = "19;21" }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, /area/almayer/squads/req) "xWp" = ( @@ -74908,22 +82097,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) -"xWF" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 2; - req_one_access = list(2,34,30) +"xWO" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = -25 }, +/obj/structure/largecrate/random/case/small, /turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_p) -"xWO" = ( -/obj/item/stack/catwalk, -/obj/structure/cable/heavyduty{ - icon_state = "4-8" + icon_state = "mono" }, -/turf/open/floor/plating, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/lifeboat_pumps/north1) "xWT" = ( /obj/structure/machinery/shower{ pixel_y = 16 @@ -74945,22 +82127,54 @@ }, /area/almayer/engineering/upper_engineering/port) "xXh" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/closed/wall/almayer/research/containment/wall/west, +/area/almayer/medical/containment/cell) +"xXj" = ( +/obj/structure/machinery/door/poddoor/almayer/locked{ + dir = 2; + id = "Perma 1"; + name = "\improper cell shutter" + }, +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + dir = 2; + name = "\improper Isolation Cell" + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_side" + icon_state = "test_floor4" }, -/area/almayer/medical/hydroponics) -"xXu" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 +/area/almayer/shipboard/brig/perma) +"xXl" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = -32 }, /turf/open/floor/almayer, -/area/almayer/command/lifeboat) +/area/almayer/engineering/lower/workshop/hangar) +"xXr" = ( +/obj/item/reagent_container/glass/beaker/bluespace, +/obj/structure/machinery/chem_dispenser/research, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/medical_science) +"xXT" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/hallways/upper/starboard) +"xXW" = ( +/obj/structure/bed/chair/comfy/bravo, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "xYf" = ( /obj/structure/machinery/cm_vending/clothing/sea, /turf/open/floor/almayer{ @@ -74968,17 +82182,12 @@ icon_state = "plating" }, /area/almayer/shipboard/sea_office) -"xYj" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 8 - }, -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "orange" +"xYr" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, -/area/almayer/shipboard/brig/cells) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "xYB" = ( /obj/structure/sign/safety/storage{ pixel_x = 8; @@ -74986,14 +82195,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/starboard_point_defense) -"xYN" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"xYE" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 4 }, -/area/almayer/hull/lower_hull/l_f_s) +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "xYP" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/cryo_cells) @@ -75003,55 +82210,90 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"xZz" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/faxmachine/uscm/command/capt, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"xZI" = ( -/obj/structure/prop/invuln/lattice_prop{ - dir = 1; - icon_state = "lattice-simple"; - pixel_x = 16; - pixel_y = -16 +"xYS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/obj/structure/pipes/standard/manifold/hidden/supply, +/obj/structure/machinery/light, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_m_s) -"xZK" = ( -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "plate" +/area/almayer/shipboard/brig/main_office) +"xYZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/area/almayer/hull/lower_hull/l_a_p) -"xZU" = ( -/obj/structure/machinery/cryopod{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering) +"xZk" = ( +/obj/item/prop/helmetgarb/gunoil{ + layer = 4.2; + pixel_x = -3; pixel_y = 6 }, -/obj/structure/machinery/light{ - dir = 8 +/obj/item/prop/helmetgarb/gunoil{ + layer = 4.2; + pixel_x = -10; + pixel_y = 10 }, -/turf/open/floor/almayer{ - icon_state = "cargo" +/obj/item/prop/helmetgarb/gunoil{ + layer = 4.2; + pixel_x = 4; + pixel_y = 9 }, -/area/almayer/squads/charlie) -"yac" = ( -/obj/structure/platform_decoration{ - dir = 8 +/obj/item/weapon/broken_bottle{ + layer = 4.51; + pixel_x = 9; + pixel_y = 1 + }, +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"xZz" = ( +/obj/item/paper/almayer_storage, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) +"xZG" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/item/bedsheet/hop, +/obj/structure/bed, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"xZH" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"xZU" = ( +/obj/structure/machinery/cryopod{ + pixel_y = 6 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/squads/charlie) +"yac" = ( +/obj/structure/platform_decoration{ + dir = 8 }, /turf/open/floor/almayer{ dir = 1; icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"yal" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/effect/spawner/random/tool, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "yaz" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor{ name = "\improper Officer's Study" @@ -75063,24 +82305,38 @@ icon_state = "test_floor4" }, /area/almayer/living/officer_study) -"yaG" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"ybb" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/box/ids{ - pixel_x = -4; - pixel_y = 14 +"yaF" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 4 }, -/obj/item/device/flash{ - pixel_y = -8 +/obj/structure/sign/safety/fire_haz{ + pixel_y = -32 + }, +/obj/structure/sign/safety/hazard{ + pixel_x = 14; + pixel_y = -32 }, -/obj/structure/machinery/faxmachine/uscm/brig, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "orange" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/engineering/lower) +"yaQ" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 9 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) +"yaZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "ybf" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -75090,39 +82346,40 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"ybr" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 +"ybm" = ( +/obj/structure/surface/table/almayer, +/obj/item/clothing/head/hardhat{ + pixel_x = 10; + pixel_y = 1 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/item/clothing/suit/storage/hazardvest{ + pixel_x = -8; + pixel_y = 6 }, -/area/almayer/hull/lower_hull/l_a_p) -"ybO" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/stack/sheet/mineral/phoron/medium_stack, -/obj/item/stack/sheet/mineral/phoron/medium_stack{ - pixel_y = 10 +/obj/item/clothing/suit/storage/hazardvest/yellow, +/obj/item/clothing/suit/storage/hazardvest{ + pixel_x = 8; + pixel_y = 7 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"ybz" = ( +/obj/structure/machinery/brig_cell/cell_4{ + pixel_x = 32; + pixel_y = -32 }, -/area/almayer/hull/upper_hull/u_a_p) -"ybS" = ( -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice12"; - pixel_y = 16 +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/processing) +"ybU" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) -"ybV" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/port_hallway) +/area/almayer/shipboard/brig/main_office) "ybZ" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/transmitter{ @@ -75143,6 +82400,17 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) +"ycj" = ( +/obj/structure/machinery/medical_pod/sleeper{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/medical_science) +"ycl" = ( +/turf/open/floor/plating, +/area/almayer/maint/hull/lower/l_m_s) "ycm" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -75155,15 +82423,33 @@ /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/squads/req) -"ycr" = ( +"ycx" = ( +/obj/structure/bed/chair/comfy/delta{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"ycH" = ( /obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/secure_data, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/processing) -"ycV" = ( -/obj/structure/curtain/red, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/obj/item/pizzabox/margherita{ + pixel_y = 8 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "green" + }, +/area/almayer/squads/req) +"ycM" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "ycZ" = ( /obj/structure/sign/poster{ pixel_y = 32 @@ -75173,15 +82459,25 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"ydx" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 +"ydf" = ( +/obj/structure/platform{ + dir = 1 }, +/obj/structure/largecrate/random/case, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/maint/hull/upper/u_a_s) +"ydh" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/obj/structure/surface/table/reinforced/black, +/obj/item/tank/oxygen, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "ydz" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -75190,6 +82486,24 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north2) +"ydE" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/hydroponics) +"ydI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "ydM" = ( /obj/structure/window{ dir = 8 @@ -75202,31 +82516,34 @@ icon_state = "cargo" }, /area/almayer/living/cryo_cells) -"ydU" = ( -/obj/structure/window/framed/almayer/hull/hijack_bustable, -/obj/structure/machinery/door/poddoor/almayer/locked{ - dir = 8; - id = "Perma 2"; - name = "\improper isolation shutter" +"ydO" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "courtyard_cells"; - name = "\improper Courtyard Lockdown Shutter" +/obj/structure/bed/chair/comfy/bravo{ + dir = 1 }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/perma) -"yeo" = ( -/obj/structure/machinery/cm_vending/clothing/dress{ - req_access = list(1) +/turf/open/floor/almayer{ + icon_state = "orangefull" }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"yev" = ( -/obj/item/device/flashlight/lamp/green, -/obj/structure/surface/table/woodentable/fancy, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) +/area/almayer/living/briefing) +"ydY" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) +"yeu" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "yeH" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -75255,13 +82572,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"yeP" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "yeR" = ( /obj/structure/machinery/cm_vending/clothing/senior_officer{ req_access = null; @@ -75270,6 +82580,18 @@ }, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/chief_mp_office) +"yff" = ( +/obj/structure/machinery/cm_vending/clothing/dress{ + density = 0; + pixel_y = 16 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/cic) "yfm" = ( /obj/effect/landmark/start/marine/delta, /obj/effect/landmark/late_join/delta, @@ -75286,25 +82608,40 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"yfy" = ( -/obj/structure/surface/table/almayer, -/obj/item/trash/crushed_cup, -/obj/item/reagent_container/food/drinks/cup{ - pixel_x = -5; - pixel_y = 9 +"yfw" = ( +/obj/structure/machinery/light{ + dir = 8 }, -/obj/item/spacecash/c10{ - pixel_x = 5; - pixel_y = 10 +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" }, -/obj/item/ashtray/plastic{ - pixel_x = 5; - pixel_y = -10 +/area/almayer/hallways/starboard_hallway) +"yfG" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/power/apc/almayer{ + dir = 8 + }, +/obj/item/storage/briefcase{ + pixel_y = 15 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"yfL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/structure/bed/sofa/south/white/left{ + pixel_y = 16 }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 9; + icon_state = "silver" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/upper/u_m_p) "yfS" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -75321,32 +82658,63 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"ygs" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Bathroom" +"ygv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/structure/sign/safety/nonpress_ag{ + pixel_x = 15; + pixel_y = -32 }, -/area/almayer/living/captain_mess) -"ygy" = ( -/obj/structure/machinery/light/small{ - dir = 1 +/obj/structure/sign/safety/west{ + pixel_y = -32 }, -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/tool, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_f_p) +"yhg" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera"; + pixel_y = 6 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) +"yht" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/living/cryo_cells) "yhI" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"yhQ" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/lower_hull/l_m_p) +"yhR" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"yhZ" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/maint/hull/lower/p_bow) +"yia" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) +"yih" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "yiq" = ( /obj/structure/sign/safety/north{ pixel_x = -17; @@ -75357,23 +82725,17 @@ icon_state = "red" }, /area/almayer/hallways/starboard_hallway) -"yiC" = ( -/obj/structure/surface/table/almayer, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21"; - pixel_y = 11 +"yit" = ( +/obj/structure/machinery/light{ + dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/pipes/vents/pump/no_boom{ + dir = 1 }, -/area/almayer/hull/upper_hull/u_f_p) -"yiE" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) +/area/almayer/command/airoom) "yiW" = ( /obj/structure/machinery/cryopod/right{ layer = 3.1; @@ -75405,15 +82767,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) -"yji" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_p) "yjq" = ( /obj/structure/machinery/door/poddoor/almayer/locked{ icon_state = "almayer_pdoor"; @@ -75423,12 +82776,38 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/notunnel) +"yjE" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) +"yjG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/lobby) "yjM" = ( -/obj/effect/decal/cleanable/blood/oil, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 4; + icon_state = "blue" }, -/area/almayer/lifeboat_pumps/south2) +/area/almayer/living/pilotbunks) +"yjU" = ( +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, +/area/almayer/living/briefing) "ykj" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -75440,16 +82819,21 @@ icon_state = "test_floor4" }, /area/almayer/living/grunt_rnr) -"yky" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/tool, +"ykv" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "InnerShutter"; + name = "\improper Saferoom Shutters" + }, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/shipboard/panic) +"ykI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "ykP" = ( /obj/structure/filingcabinet{ density = 0; @@ -75466,12 +82850,81 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/main_office) +"ykY" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/crate, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) "ylc" = ( -/obj/structure/disposalpipe/down/almayer{ - dir = 2; - id = "almayerlink_med_req" +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/structure/machinery/door/airlock/almayer/research/reinforced{ + dir = 8; + name = "\improper Containment Airlock"; + closeOtherId = "containment_s" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/closed/wall/almayer/white/reinforced, /area/almayer/medical/containment) "yle" = ( /obj/effect/landmark/start/marine/engineer/delta, @@ -75480,21 +82933,12 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"ylm" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Dorms" - }, +"ylh" = ( +/obj/structure/closet/radiation, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "test_floor5" }, -/area/almayer/living/port_emb) +/area/almayer/engineering/lower/engine_core) "ylJ" = ( /obj/structure/sign/safety/maint{ pixel_x = 8; @@ -75505,21 +82949,16 @@ icon_state = "orangecorner" }, /area/almayer/hallways/stern_hallway) -"ylY" = ( -/obj/structure/largecrate/random/case/double, -/obj/item/tool/wet_sign{ - pixel_y = 18 +"ymg" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + layer = 2.5; + pixel_y = 1 }, -/obj/item/trash/cigbutt/ucigbutt{ - desc = "A handful of rounds to reload on the go."; - icon = 'icons/obj/items/weapons/guns/handful.dmi'; - icon_state = "bullet_2"; - name = "handful of pistol bullets (9mm)"; - pixel_x = -8; - pixel_y = 10 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/lower/l_f_p) (1,1,1) = {" aaa @@ -82260,10 +89699,10 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH aaa aaa aac @@ -82459,7 +89898,7 @@ aaa aaa aaa aaa -aaa +bdH aaa aaa aaa @@ -82470,13 +89909,13 @@ aaa aaa aaa aad -cZs -cZs -iZG -iZG -iZG -cZs -cZs +feb +feb +feb +feb +feb +feb +feb ajZ aaa aaa @@ -82662,7 +90101,7 @@ aaa aaa aaa aaa -aaa +bdH aaa aaa aaa @@ -82673,13 +90112,13 @@ aaf aaf aaf aag -cZs -cWN -dgx -dgx -dgx -sdq -cZs +feb +qmR +oog +dsA +rbK +tmH +feb aag aaf aaf @@ -82865,29 +90304,29 @@ aaa aaa aaa aaa -aaa +bdH aaa aaa aaa aaa aad -cZs -cZs -cZs -cZs -cZs -cZs -dfp -sEa -vBJ -uNl -oxn -cZs -xEF -xEF -xEF -xEF -xEF +hPI +hPI +hPI +hPI +hPI +feb +dhd +oog +jNT +fag +jVP +feb +feb +feb +feb +feb +feb ajZ aaa aaa @@ -83074,23 +90513,23 @@ aaa aac aaf aag -cZs -yeR -aTg -kyI -aTg -pdG -vAG -dOL -jfY -hwS -wly -wIC -dtN -syM -irr -dAb -xEF +hPI +naB +naB +naB +naB +mtl +vdl +nPb +fZX +dBS +nSu +wld +mtl +jjm +wZN +kgQ +feb aag aaf ajY @@ -83275,27 +90714,27 @@ aaa aaa aaa aad -pCi -pCi -cZs -osJ -aTg -xvr -bZN -wIC -dWk -fYX -ush -rTt -vAG -wIC -fGN -kIV -kIV -shw -xEF -xEF -xEF +uDg +uDg +hPI +pQr +rib +vtG +naB +mtl +eCI +nOC +qVF +xdJ +kzr +jqY +kBh +jNT +jNT +wSK +feb +xiV +xiV ajZ aaa aaa @@ -83477,29 +90916,29 @@ aaf aaf aaf aaf -pCi -pCi -myT -wIC -lcW -pbC -xvr -vCG -wIC -tNF -tNF -wIC -hzx -wIC -wIC -vBm -vBm -bIi -mnm -kPo -cFX -xEF -xEF +uDg +uDg +lHk +naB +wnw +pHp +fgl +dya +fLF +kEq +mtl +mtl +mtl +mtl +ewI +mtl +xzO +pNk +jIH +mtl +igS +xiV +xiV aaf aaf aaf @@ -83673,43 +91112,43 @@ aaa aaa aaa aad -pCi -pCi -pCi -pCi -pCi -pCi -pCi -pCi -cpf -cos -wIC -wIC -wIC -wIC -wIC -wIC -cNY -tak -sip -mLJ -ntm -hND -kif -hND -mnm -wVz -kIV -dDQ -sGe -xEF -xEF -xEF -xEF -xEF -xEF -xEF -xEF +uDg +uDg +uDg +uDg +uDg +uDg +uDg +uDg +aPN +lSJ +naB +pQr +jeR +wvI +vPf +fvA +qPD +vcm +tul +mNK +gtU +bjk +mtl +mtl +mtl +mtl +mtl +iuf +pnh +xiV +xiV +xiV +xiV +xiV +xiV +xiV +xiV ajZ aaa aaa @@ -83876,43 +91315,43 @@ aaa aaa aaa aad -pCi -mUQ -rPC -wcn -wcn -xhM -wcn -tng -hGD -wzx -vBm -paq -uoY -vUL -vez -xys -swo -eRL -eRL -mLJ -bua -vBm -xkd -xkd -xkd -xkd -kIV -iYi -gSs -eyd -kIV -kQz -mnm -kIV -kIV -flP -xEF +uDg +cth +gkr +xkc +oGj +hSj +xkc +mph +nlh +rGr +naB +naB +naB +naB +naB +dcy +qPD +qPD +qPD +qPD +quJ +rdA +alF +sql +alF +rwe +pdp +hZw +xYr +mjs +pdp +ohu +iUh +pdp +pdp +kSn +xiV ajZ bdH bdH @@ -84079,43 +91518,43 @@ bdH aac aaf aag -pCi -rPC -wcn -rPC -vWx -age -dPY -rTV -wcn -tYB -vBm -qfR -tak -tak -bvx -xys -ldu -eRL -eRL -mLJ -eiO -xFs +uDg +gkr +xkc +gkr +vAg +gxI +kqC +bBU +xkc +eeA +naB +pQr +ggS +wvI +piK +fvA +qPD +wZL +ffg +ffg +wsh +eMJ xkd -eiH -aTV xkd xkd xkd -mnm -mnm -iqx -qFl -vUI -mnm -mnm -kIV -xEF +xkd +xkd +lRt +tsE +iVG +hmA +hmZ +oDh +oDh +pdp +xiV aag aaf ajY @@ -84281,10 +91720,10 @@ bdH bdH aad aag -pCi -pCi -rPC -wcn +uDg +uDg +gkr +xkc vBm vBm vBm @@ -84292,34 +91731,34 @@ vBm vBm qmC vBm -vBm -ouV -bTw -sjc -dci -rzj -tGg -sjc -sjc -iqn -eRL -tmy +naB +kry +pHp +fgl +xXj +qXE +qPD +sPF +qPD +qPD +uQm +stO xkd -rUB -dSn -soa -xzu +teE +xJT xkd +ljS xkd xkd xkd xkd xkd xkd -kIV -mnm -xEF -xEF +xkd +pdp +oDh +xiV +xiV aag ajZ bdH @@ -84479,39 +91918,39 @@ aaa aaa aaa aaa -aaa +bdH bdH bdH aad aag -pCi -ext -rPC -mUQ +uDg +pOp +gkr +cth vBm rBV oPk mqo vBm eRL -rag -qqN -lzx -mLJ -bua -gcT -dSc -qre -eRL -eOR -aJz -dXy -nHg -xkd -ghX -rAv +puv +naB +pQr +bsp +hCV +naB +naB +uUu +qCU +qZF +qPD +iQd +qJo xkd -eTo +vWG +lJL +dQp +vlM iHG dCe moB @@ -84519,10 +91958,10 @@ uns vCy eyV xkd -dAb -mnm -kIV -xEF +mkF +oDh +pdp +xiV aag ajZ bdH @@ -84681,38 +92120,38 @@ aaa aaa aaa aaa -aaa -aaa +bdH +bdH bdH bdH aad aag -pCi -oCL -wcn -fuB +uDg +lDT +xkc +xyZ vBm ldu wgi wgi ckS eRL -bua -gcT -gcT -tJy -fnC -tpn -tpn -tpn -ula -tpn -wvT -luw -sgi -xkd -xkd +sDV +naB +naB +naB +naB +naB +naB +nVR +nVR +nVR +nux +tau +nVR xkd +xik +bjQ xkd kmd tUx @@ -84722,10 +92161,10 @@ xGh jVa wDs xkd -ukt -mnm -kIV -xEF +oHf +oDh +pdp +xiV aag ajZ bdH @@ -84885,39 +92324,39 @@ aaa aaa aaa aaa -aaa +bdH bdH bdH aad aag -pCi -wcn -rPC +uDg +xkc +gkr vBm vBm sFC sFC sFC vBm -pcQ -xHe -gqW -gqW -lCM -ugT -tpn -vrM -kta -vWo -xrP -xTp -pyj -pwt +lOI +pJv +jLM +btn +cMb +rbi +wDp +xys +nkX +iQB +cmv +vzk +phN +iVP +xkd xkd -uvY -oBq xkd -rPh +xkd +umW iOD iOD tHS @@ -84926,9 +92365,9 @@ tUx wRN xkd xkd -kIV -mnm -xEF +pdp +oDh +xiV aag ajZ bdH @@ -84996,10 +92435,10 @@ aaa bdH aad aag -nXP -nXP -nXP -nXP +nBJ +nBJ +nBJ +nBJ aag dqw uwv @@ -85021,10 +92460,10 @@ dqw aag aag aag -vRz -vRz -vRz -vRz +wid +wid +wid +wid aag ajZ bdH @@ -85088,14 +92527,14 @@ aaa aaa aaa aaa -aaa +bdH bdH bdH aad aag -ahE -wcn -rPC +lrE +xkc +gkr vBm ykP xAj @@ -85103,24 +92542,24 @@ xhE xhE vBm hKq -cdk -soD -tdv -szy -wdr -tpn -aeo -sIw -eni -xrP -xTp -pyj -hTt -kMH -tUx -iTI -hzJ -cyZ +lwK +hrO +xsg +xsg +grF +xVl +uqy +wdF +wdF +wdF +wdF +cMl +icZ +xkd +uvY +oBq +xkd +wKJ jVa jVa tHS @@ -85129,9 +92568,9 @@ tUx xJe qLt xkd -kIV -mnm -ils +pdp +oDh +cPj aag etE bdH @@ -85199,9 +92638,9 @@ aaa bdH aad aag -nXP -xFD -ntA +nBJ +kJc +jFt bAs bAs bAs @@ -85225,9 +92664,9 @@ bTT bTT bTT bAs -vIA -xgn -vRz +kOR +jYM +wid aag ajZ bdH @@ -85291,14 +92730,14 @@ aaa aaa aaa aaa -aaa +bdH bdH bdH aad aag -ahE -rPC -wcn +lrE +gkr +xkc vBm ykP xjG @@ -85306,24 +92745,24 @@ ssD gcT rmv eRL -mLJ -bua -nNQ +eRL +rhl gcT -ciF -tpn -vrM -eBW -eOh -xrP -xTp -pyj -kfN -xkd -qFu -xkd -xkd -qJZ +gcT +xVl +gcT +lxy +oRk +oRk +oRk +utZ +cMl +hTt +kMH +tUx +iTI +dmZ +eZH jVa jVa tHS @@ -85332,9 +92771,9 @@ ycm qCo pWr xkd -uqa -mnm -ils +aGa +oDh +cPj aag ajZ bdH @@ -85402,9 +92841,9 @@ aaa bdH aad aag -nXP -xYN -jup +nBJ +rUi +grv bBA bAK bCY @@ -85428,9 +92867,9 @@ acr bPG acN bBA -qXM -gUv -vRz +gTK +fWg +wid aag ajZ bdH @@ -85494,37 +92933,37 @@ aaa aaa aaa aaa -aaa +bdH bdH bdH aad aag -ahE -nBc -wcn -vBm -vBm -vBm -vBm -vBm -vBm -hZU -mLJ -fkn -gaJ -gaJ -gaJ -gaJ +lrE +vDh +xkc +lrq +lrq +lrq +lrq +lrq +lrq +lrq +cxA +uwS tpn tpn -ueo +srT tpn -wCM -pyj -opN +tpn +xjF +myP +gDt +bju +cMl +lMc +xkd +qFu xkd -uvY -duT xkd vdM jVa @@ -85535,9 +92974,9 @@ cyZ jVa fJT xkd -ipT -kIV -ils +rfB +pdp +cPj aag eSU bdH @@ -85605,9 +93044,9 @@ aaa bdH aad aag -nXP -ewT -sIT +nBJ +uRR +mFQ bBA hWJ bCY @@ -85631,9 +93070,9 @@ bHP bPG hpk bBA -fTu -umT -vRz +yhZ +wtD +wid aag ajZ bdH @@ -85697,38 +93136,38 @@ aaa aaa aaa aaa -aaa +bdH bdH bdH aad aag -pCi -mUQ -aou -vBm -tJp -ybb -tHB -aEk -nSM -ldu -mLJ -pYF -gaJ -wVV -wVV -wVV -gaJ -aOY -wdF -sdF -kNi -pyj -xIw -kVZ -tUx -iTI -nXm +uDg +cth +qsp +lrq +kEc +chv +cAy +uhE +vKB +lrq +szR +cZj +tpn +eVR +cak +vrM +tpn +mHb +hjM +xTH +bju +wSm +dEG +xkd +uvY +duT +xkd eZH jVa jVa @@ -85738,9 +93177,9 @@ dfk vzz moB xkd -lmk -kIV -xEF +gNZ +pdp +xiV aag ajZ bdH @@ -85808,9 +93247,9 @@ aaa bdH aad aag -nXP -thT -mGL +nBJ +ecS +eQR gol akb bCY @@ -85834,9 +93273,9 @@ bPn bPG ald gol -nqU -pch -vRz +sGK +hLu +wid aag ajZ bdH @@ -85900,50 +93339,50 @@ aaa aaa aaa aaa -aaa +bdH bdH bdH aad aag -pCi -hKi -rPC -vBm -sQS -xEc -grl -egR -tak -lzx -mLJ -ugT -fso -vpI -vpI -vpI -cuk -tkV -jFR -oRk -kxM -jSw -vBm -vBm -qof -vBm -vBm -wRm +uDg +cUl +gkr +lrq +heo +nqe +nqe +nqe +nqe +tLa +eRL +igt +tpn +rqS +cak +vrM +tpn +pUD +bju +wdF +wdF +wSm +dPT +kVZ tUx -vrx +iTI +nUj +eZH tUx -gSV +vrx +yhg +lbs eZH tUx cXi xkd -irr -kIV -xEF +ttB +pdp +xiV aag twB bdH @@ -86011,9 +93450,9 @@ aaa bdH aad aag -nXP -mGL -fEV +nBJ +eQR +xAu bBA bAN bCY @@ -86037,9 +93476,9 @@ bPo bPG acs bBA -lZB -nqU -vRz +xHX +sGK +wid aag ajZ bdH @@ -86108,34 +93547,34 @@ bdH bdH aad aag -ahE -nnF -rPC -vBm -ikM -pzc -jjM -eRL -eRL -eRL -mLJ -ugT -qvf -vpI -vpI -vpI -qvf -wdF -lMc -ycr -kge -kDA -rkL -eZj -efh -mGn -jkS -cyZ +lrE +vOM +gkr +lrq +kui +uqo +pId +qMD +uqo +lrq +sYi +sYE +tpn +gIU +xIq +vrM +tpn +efT +nkF +hkH +kuJ +sLA +jSw +xkd +cJh +xkd +xkd +icM thL thL thL @@ -86144,9 +93583,9 @@ nYd thL jVa fgR -hPT -mnm -ils +nEc +oDh +cPj aag ajZ bdH @@ -86214,9 +93653,9 @@ aaa bdH aad aag -nXP -tRV -hJp +nBJ +ldF +eox bBA bAO bCZ @@ -86240,9 +93679,9 @@ bDW bPJ iuz bBA -vhq -orv -vRz +mVh +uMf +wid aag ajZ bdH @@ -86311,45 +93750,45 @@ bdH bdH aad aag -ahE -hUg -wcn -vBm -gqW -buX -mLJ -eRL -eRL +lrE +etN +xkc +lrq +sEZ +nqe +nqe +nqe +nqe +mza eRL -mLJ -pWG -gaJ -eyg -gCI -eyg -gaJ -heQ -lMc -eOW +wfB +tpn +tpn +tpn +tpn +tpn +xIu +xvQ +eDt +bju cMl -lMc -nxq -ldu -kJK -bja -jkS -eZH +kAL +xkd +uvY +sgE +xkd +qJZ ohJ thL thL -tjU +uAL liZ rUk jVa fgR -evl -uNF -ils +azg +gKv +cPj aag rEr bdH @@ -86417,9 +93856,9 @@ aaa bdH aad aag -nXP -hJp -mGL +nBJ +ldF +eQR bBA bAP aqu @@ -86443,9 +93882,9 @@ aqu aqu bQz bBA -nqU -cEY -vRz +sGK +vOG +wid aag ajZ bdH @@ -86514,34 +93953,34 @@ bdH bdH aad aag -ahE -rPC -wcn -vBm -jCa -cFO -lNs -srV -uzU -nJo -inN -wQk -gaJ -gaJ -gaJ -gaJ -gaJ -tRA -lMc -gjL +lrE +gkr +xkc +lrq +dEX +fxJ +fxJ +fAr +qmU +lrq +hZU +cWs +fAE +kHa +frX +mHA +kHa +snX +oIh +oIh +wNt cMl -oeB -euO -ldu -eRL -jZL -vBm -qJZ +nlz +vNp +tUx +iTI +qxe +eZH ohJ thL thL @@ -86550,9 +93989,9 @@ uaU rUk xaM fgR -fQk -kIV -ils +hIG +pdp +cPj aag ajZ bdH @@ -86620,9 +94059,9 @@ aaa bdH aad aag -nXP -fNg -hJp +nBJ +vCE +ldF bBA bBu amg @@ -86646,9 +94085,9 @@ amg amg rAD bBA -nqU -vhq -vRz +sGK +mVh +wid aag ajZ bdH @@ -86717,34 +94156,34 @@ bdH bdH aad aag -pCi -wcn -wcn -lrq +uDg +xkc +xkc lrq -bVC +iwV +iwV +iwV +iwV lrq lrq -lut -eRL -eRL -enz -swn -vOd -uCl -dls +gob +cWs +irF +kHa +rEQ +xmX eGr -gbX -rCL -xHM -jxK -hyz -ltX -pbh -rRQ -rRQ -iyq -inG +wdF +wdF +wdF +wdF +kQu +cqM +xkd +cJh +xkd +xkd +pns omt omt omt @@ -86753,9 +94192,9 @@ uxa iZU nhG xkd -mnm -hgH -xEF +oDh +uqg +xiV aag uJk bdH @@ -86823,9 +94262,9 @@ aaa bdH aad aag -nXP -gjv -mGL +nBJ +amu +eQR bBA bBu amg @@ -86849,9 +94288,9 @@ amg amg rAD bBA -rpW -kAs -vRz +ozH +flr +wid aag ajZ bdH @@ -86920,34 +94359,34 @@ bdH bdH aad aag -pCi -rPC -rwS -lrq -kTc -uqo -wVw -cqn -gTx -eRL -eRL -igt -swn -daj -qbt -exr +uDg +gkr +old +cQv +oVf +rmx +bvH +evR +cQv +cQv +vtD +rAX kHa -luH -lMc -ycr +kHa +lRe +mvR +kHa +tzd +tzd +sgi bju -goD -vBm -vBm -qof -vBm -vBm -sSm +wSm +kAL +xkd +uvY +qEA +xkd +eZo thL thL thL @@ -86956,9 +94395,9 @@ tov thL sUs xkd -mnm -kIV -xEF +gNZ +pdp +xiV aag ajZ bdH @@ -87026,9 +94465,9 @@ aaa bdH aad aag -nXP -oZd -mGL +nBJ +kMW +eQR bBA bBv aqu @@ -87052,9 +94491,9 @@ tkq aqu bQG bBA -vht -vhq -vRz +uoO +mVh +wid aag ajZ bdH @@ -87123,34 +94562,34 @@ bdH bdH aad aag -ahE -rPC -nfI -lrq -omu -uqo -sYB -cqn -ldu -eRL -eRL -cWs +lrE +gkr +wJC +cQv +cBw +kde +kde +ajj +mZQ +cQv +vgW +igt swn -dcP -tvA -dQv +rpF +tQm +ond swn -xTp -lMc -gSi +gHt +oIh +eNR bju wSm -jox -lrV -tUx -ntu -nYP +ybz +rrz tUx +iTI +tlp +lXb thL oXp thL @@ -87159,9 +94598,9 @@ tov thL xhx fgR -mnm -kIV -ils +oDh +pdp +cPj aag scz bdH @@ -87229,9 +94668,9 @@ aaa bdH aad aag -nXP -lAP -mGL +nBJ +iWJ +eQR bBA bBx amg @@ -87255,9 +94694,9 @@ bPq amg rAD bBA -nqU -rSK -vRz +sGK +nhV +wid aag ajZ bdH @@ -87326,34 +94765,34 @@ bdH bdH aad aag -ahE -rPC -heV -lrq -frJ -uqo -ktn -cqn -nBb -mdS -eRL -uJs +lrE +gkr +wMF +cQv +eaf +bEv +quj +vgi +rXd +cqJ +ldu +igt swn dfO -doj dQv +doj swn -fYn -qZg -iXt -gBi -wSm -opN +neC +mjt +vqc +edo +fTt +lMc +xkd +qFu xkd -nlH -rQY xkd -xMQ +thq ezX pqF rUk @@ -87362,9 +94801,9 @@ iFc thL tUx fgR -inC -fQk -ils +pdp +hIG +cPj aag ajZ bdH @@ -87432,9 +94871,9 @@ aaa aac aag aag -nXP -tpg -vmK +nBJ +dKS +ffN bBA bBy amg @@ -87458,9 +94897,9 @@ aoa amg bQE bBA -bVL -nqU -vRz +bME +sGK +wid aag aag ajY @@ -87529,34 +94968,34 @@ bdH bdH aad aag -ahE -wcn -nBc -lrq -vsI -uqo -xoS -lrq -mAT -lrq -cxA -plZ +lrE +xkc +vDh +cQv +eaf +bEv +lEe +pGT +pGT +vkM +sjc +xYS kHa qPO -qPO wuc qPO -oRZ -wdF -xCd -bqp -wSm -kfN -xkd -qFu +qPO +ptq +oRk +eNR +bju +cMl +dEG xkd +uvY +lSs xkd -jVa +kbX ezX prY rUk @@ -87565,9 +95004,9 @@ thL thL tUx fgR -kIV -mKf -ils +pdp +aCA +cPj aag okD bdH @@ -87634,10 +95073,10 @@ aaa aaa aad aag -nXP -nXP -mGL -mGL +nBJ +nBJ +eQR +bTW bBA bBz aqu @@ -87661,10 +95100,10 @@ bEx aqu bQI bBA -ueh -nqU -vRz -vRz +gsy +sGK +wid +wid aag ajZ aaa @@ -87732,45 +95171,45 @@ bdH bdH aad aag -pCi -wcn -wcn -lrq -mAr -uqo -fsT -fsT -fDn -lrq -tqV -nBo -maa +uDg +xkc +xkc +cQv +eaf +bEv +vyH +ajj +rXd +cqJ +ldu +igt swn plI -tqe +dQv +lNN qPO -wvT -luw emp -uUO -wSm -jZm -wmE -tUx -ntu -vQN -jVa -rjw +emp +emp +iEx +cMl +qFE +wDC tUx -lnJ -rjw +iTI +fKw +pgP +thL +thL +thL +thL +thL +thL tUx -jVa -oEE xkd -kIV -hFW -xEF +pdp +vhA +xiV aag ajZ bdH @@ -87837,10 +95276,10 @@ aaa aaa aad aag -nXP -tRV -hJp -mmC +nBJ +ldF +ldF +xiP bBA lsV amg @@ -87864,10 +95303,10 @@ bPC amg pyL bBA -jNq -nqU -rSK -vRz +cDb +sGK +nhV +wid aag ajZ bdH @@ -87935,45 +95374,45 @@ bdH bdH aad aag -pCi -oCL -wcn -lrq -uZY -uqo -uqo -uqo -iOh -lrq -gdo -nBo -jJq +uDg +lDT +xkc +cQv +eaf +bEv +sBg +uGN +rXd +cQv +gax +igt swn -dHv -qQM +vsM +dQv +ebv qPO -xTp -lMc -jcf -qUb -wSm -jSw +cFC +oIh +lUm +skj +tXc +cqM xkd -nlH -uuq +qFu xkd -naB -naB -pFg -naB -naB -naB -ydU -naB -naB -kIV -mnm -xEF +xkd +cvH +thL +thL +thL +thL +thL +thL +tUx +xkd +pdp +oDh +xiV aag ajZ bdH @@ -88039,11 +95478,11 @@ aaf aaf aaf aag -nXP -nXP -hJp -mGL -fmS +nBJ +nBJ +ldF +eQR +uFp bBA bBA tiR @@ -88067,11 +95506,11 @@ jAi aib jAi jAi -nrz -vhq -nqU -vRz -vRz +ipB +mVh +sGK +wid +wid aag aaf aaf @@ -88138,45 +95577,45 @@ bdH bdH aad aag -pCi -rPC -aou -lrq -mAr -uqo -fsT -tfO -fsz -lrq -irJ -nBo -pJi +uDg +gkr +qsp +cQv +xLl +bEv +kde +ajj +tuk +cQv +rzY +igt swn -jAG -tqe +skq +dQv +hhW qPO -xTp -lMc -jcf -eUU -wSm -cqM -xkd +ehX +mTN +hZJ +iLG +jXd +kAL xkd +uvY +cjk xkd +pgP +tUx +tUx +tUx +tUx +tUx +vsz +oEE xkd -naB -eoP -fgl -xEe -naB -xEe -fgl -deb -naB -lmk -kIV -xEF +gNZ +pdp +xiV aag ajZ bdH @@ -88239,19 +95678,19 @@ aaa aaa aad aag -nXP -nXP -nXP -nXP -hJp -hJp -uNL -uNL -uNL -tVf -mGL -oxp -bSv +nBJ +nBJ +nBJ +nBJ +ldF +ldF +bos +bos +bos +haR +uHT +jHn +kcp bWJ nar alU @@ -88272,12 +95711,12 @@ dRw bzy bzy bzy -vhq -nqU -vRz -vRz -vRz -vRz +mVh +sGK +wid +wid +wid +wid aag ajZ aaa @@ -88340,47 +95779,47 @@ aaa bdH bdH aad -pCi -pCi -wcn -tYB -lrq -noo -noo -noo -lrq -lrq -lrq -fNA -nBo +uDg +uDg +xkc +eeA cQv +dzG +kde +ioV +cQv +tlk +cQv +cxA +suc qPO qPO wuc qPO -wvT -luw +qPO +mFc +eKa emp -dGD +lze wSm -lfW -emp -vli -rSH -xYj -naB -aSS -pHp -poZ -naB -jkV -pHp -kOi -naB -xCj -kIV -xEF -xEF +slf +bli +tUx +iTI +bQc +pgP +uVV +iBl +wIC +smZ +smZ +wIC +tMH +wIC +pRs +pdp +xiV +xiV ajZ bdH bdH @@ -88442,21 +95881,21 @@ aaa aaa aad aag -nXP -jpN -hJp -mGL -hJp -iBE -uNL -hJp -mGL -poR -mGL -pNp -bSv -bTS -bIA +nBJ +fUz +ldF +eQR +ldF +ikA +bos +gpO +uHT +bKP +uHT +sGQ +kcp +wMv +nCR alU uDn bKf @@ -88475,12 +95914,12 @@ pqQ bzA rEu bzy -vhq -nEz -vhq -ioj -mjR -vRz +mVh +fJu +mVh +roj +qzA +wid aag ajZ aaa @@ -88543,47 +95982,47 @@ aaa bdH bdH aad -pCi -msV -rPC -naf +uDg +hzN +gkr +krG cQv -vcG -lYZ -olv -dxm -nMu -uFp -ePB -nBo +rdM +gUg +cov +cqJ +hNl +tak +uhW +uJs tsX -xSA -ugs -wVY +ngr +cDN +peO lEv -iQg -jpQ -tsX -jOu +jic +qGf +emp +bju wSm -pyj -vsJ -kjN -rvo -oIc -naB -xro -fgl -wvI -naB -wvI -fgl -qmX -naB -lTK -mnm -kIV -xEF +jSw +emp +emp +emp +emp +lFJ +emp +emp +wIC +puE +crp +dco +dqZ +wIC +uxb +oDh +pdp +xiV ajZ bdH bdH @@ -88645,21 +96084,21 @@ aaa aaa aad aag -nXP -bwF -hJp -mGL -hJp -oPI -uNL -hJp -bSv -bSv +nBJ +lJM +ldF +eQR +ldF +lyP +bos +gpO +kcp +kcp iqp -bSv -bSv +kcp +kcp jgl -bSv +kcp alU alU alU @@ -88678,12 +96117,12 @@ uOc uOc bPj bzy -piO -vhq -nqU -nqU -rSK -vRz +mXm +mVh +sGK +sGK +nhV +wid aag ajZ aaa @@ -88746,47 +96185,47 @@ aaa bdH bdH aad -pCi -dSA -rPC -cQv -cQv -geX -tFv -pGT -vkM -jvc -ajj -ajj -nBo -xps -jpQ -jpQ -wVY -eOk -pFa -ctn -wqu -eeN +uDg +fHb +gkr +vxM +vxM +vxM +vxM +vxM +vxM +qlS +eRL +eRL +uJs +tsX +tdy +cDN +oFY +oFY +yjG +ncl +jcf +bju cMl -fHS -naB -naB -naB -naB -naB -naB -rkh -lvZ -naB -fuX -rra -naB -naB -naB -mnm -kIV -xEF +oeB +emp +slF +oIh +qUz +ksg +oIh +iTl +wIC +cBZ +hMc +vAG +jIo +wIC +wIC +oDh +pdp +xiV ajZ bdH bdH @@ -88848,24 +96287,24 @@ aaa aaa aad aag -nXP -mGL -mGL -hJp -mGL -dqd -uNL -hJp -bSv +nBJ +eQR +eQR +ldF +eQR +sxS +bos +gpO +kcp bBD bTS -wza +bTS lxo qcy -bSv -bAg -edM -egq +kcp +kmk +kmk +mIJ bLt bXX bKh @@ -88880,13 +96319,13 @@ jjs jjs jjs jYd -bzy -fIH -nqU -vhq -nqU -nqU -vRz +bSv +bSv +bSv +bSv +bSv +sGK +wid aag ajZ aaa @@ -88943,53 +96382,53 @@ aaa aaa aaa aaa -aaa +bdH aaa aaa bdH bdH aad -pCi -wcn -rPC -cQv -eaf -bEv -tWg -rZR -cqJ -isH -vwO -scD -rXC -vyE -nwz -nwz -mkk -wir -jnT -qNv -wqu -eeN +uDg +xkc +gkr +vxM +rfY +kGu +iqR +fyp +wJh +ldu +eRL +eRL +uJs +diP +tff +cDN +oFY +cQL +npO +ncl +jcf +bju cMW qEy -ooR -xvw -nBu -tcP -lFs -sIY -qyd -uDp -tNj -uDp -qyd -icX -xQD -naB -kIV -lre -xEF +iis +rQc +oDy +oDy +wsq +vxK +gwj +rCU +jPS +jPS +sJm +dqZ +rDY +wIC +pdp +kIf +xiV ajZ bdH bdH @@ -89051,24 +96490,24 @@ aaa aaa aad aag -nXP -hJp -hJp -mGL -pzZ -ijp -uNL -mGL -bSv +nBJ +ldF +ldF +wcJ +jCr +nQn +bos +uHT +kcp bTR -bTH +iEg oQM -hum -bTH -bSv -bzA -bBB -bBB +aqI +aqI +kcp +jaK +jxP +xNL bLu bBB bBB @@ -89083,13 +96522,13 @@ afz afz afz iDd -bzy -rix -wlL -vhq -vhq -pch -vRz +qih +bTH +foN +cDZ +bSv +hLu +wid aag ajZ aaa @@ -89152,47 +96591,47 @@ aaa bdH aac aag -pCi -mNR -wcn -cQv -eaf -bEv -fLn -rXd -dvT -qSl -ajj -ukS -wZa -tsX -ezU -dxT -jpQ -iQg -bRm -ecq -tsX -tkV -pyj +uDg +kac +xkc +vxM +tQi +wee +wee +fRS +wJh +yeu +sjc +rVm +mMZ +aDM +oSC +uFq +wsl +wSu +xIW +wBd +emp +gbw +oRk +jyb +emp +bPH +rJj +mBx +utZ pyj -luC -elq -qmE -luC -uVF -uQm -qPD -qPD -qPD -qPD -qPD -bND -jaP -naB -kIV -rQU -xEF +jPP +wIC +xpo +xqs +rWF +uSB +lzY +wIC +pdp +ome +xiV aag ajY bdH @@ -89254,21 +96693,21 @@ aaa aaa aad aag -nXP -thT -hJp -uNL -uNL -uNL -uNL -mGL -bSv +nBJ +ecS +ldF +bos +bos +bos +bos +uHT +kcp lxW -bTH +hPh wGX bFr ppe -bSv +kcp bzA bKh bKh @@ -89286,13 +96725,13 @@ afz afz afz iDd -bzy -mzo -mzo -mzo -vhq -nqU -vRz +bSv +tjw +bTH +bTV +bSv +sGK +wid aag ajZ aaa @@ -89355,19 +96794,19 @@ bdH bdH aad aag -pCi -tCb -aou -cQv -eaf -bEv -fLn -avz -dvT -nHV -ajj -iKX -cQv +uDg +fco +qsp +vxM +jvP +rDQ +rDQ +rDQ +ctT +mLJ +bua +ybU +vBm tsX tsX tsX @@ -89375,27 +96814,27 @@ epu oLF tsX tsX -tsX +emp vyi vyi vyi -naB -naB -naB -naB -dqV -mdJ -vXQ -vXQ -uNe -uUs -nqZ -ekg -usr -naB -inC -mKf -xEF +emp +emp +emp +emp +emp +wIC +lnh +wIC +rWn +rWn +wIC +wIC +wHM +wIC +dJy +aCA +xiV aag ajZ bdH @@ -89457,19 +96896,19 @@ aaa aaa aad aag -nXP -mGL -hJp -uNL -qDv -aLk -uNL -xCR -bSv +nBJ +eQR +ldF +bos +vkO +ibf +bos +rIw +kcp wTN -bTH +kZN rgK -bTH +hbu iYe bJl bKa @@ -89489,13 +96928,13 @@ afC afz afz bRx -bzy -cEY -fIH -mzo -rpW -kAs -vRz +bSv +ifb +bTH +bSv +xVT +flr +wid aag ajZ aaa @@ -89558,47 +96997,47 @@ bdH bdH aad aag -pCi -oCL -wcn -cQv -eaf -bEv -qRo -rXd -dvT -bAM -wZa -cQv -cQv +uDg +lDT +xkc +vxM +sbP +sbP +sbP +sbP +wJh +ekF +uif +vBm +vBm tHr mqg -eiK +udR vka uwN -fbv +nVq xuZ mSs xuZ xuZ xuZ -rCU +xuZ rEY gxU -naB -kyP -qPD -qPD -qPD -uQm -pIH -naB -nOe -nOe -naB -bIi -fQk -xEF +giR +vUP +wIC +qZA +dgx +fKi +vxG +wIC +xgI +dBQ +wIC +oLf +hIG +xiV aag ajZ bdH @@ -89660,21 +97099,21 @@ aaa aaa aad aag -nXP -tRV -mGL -uNL -kmM -eqk -uNL -hJp -bSv +nBJ +ldF +eQR +bos +lBl +nEO +bos +gpO +kcp oMi bAZ bTS bTS niR -bSv +kcp bzA bKh bKh @@ -89692,13 +97131,13 @@ afz afz afz iDd -bzy -cey -eZX -mzo -ehZ -eXo -vRz +bSv +aIX +aIX +bSv +xcI +sIu +wid aag ajZ aaa @@ -89761,18 +97200,18 @@ bdH bdH aad aag -pCi -wcn -rPC -cQv -bop -jeK -mWe -rXd -dvT -ieo -vxC -ldD +uDg +xkc +gkr +vxM +pas +ncf +kjk +qxr +wJh +ekF +ugT +qqC ceZ jnD hUW @@ -89788,20 +97227,20 @@ rWs rQt cgT xuc -naB -pZV -gMf -ekg -ekg -uQm -nnz -vrQ -mLI -qyd -vrQ -mnm -sIk -xEF +gXx +wdh +wIC +mHz +jPS +jPS +xrt +wIC +qqV +nNg +wIC +oDh +xas +xiV aag ajZ bdH @@ -89863,21 +97302,21 @@ aaa aaa aad aag -nXP -hJp -mGL -hKe -hJp -hJp -uNL -hJp -bSv -bSv -bSv +nBJ +ldF +eQR +rqv +gpO +gpO +bos +gpO +kcp +kcp +kcp sXE -bSv -bSv -bSv +kcp +kcp +kcp bzA bBB bBB @@ -89895,13 +97334,13 @@ afz afz afz iDd -bzy -vhq -wqE -mzo -vhq -nqU -vRz +bSv +cop +cop +bSv +kxe +sGK +wid aag ajZ aaa @@ -89964,24 +97403,24 @@ bdH bdH aad aag -pCi -nfI -rPC -cQv -cQv -cQv -cQv -cQv -dvT -ieo -vxC -ldD -wZM +uDg +xkc +gkr +vxM +vxM +vxM +vxM +vxM +gaJ +hmG +xys +vBm +vGA hUW dHd vka lnt -uVA +eAF uVA uVA uVA @@ -89991,20 +97430,20 @@ uVA wIQ xWv aQb -naB -naB -mtl -hwQ -hwQ -okM -mtl -mtl -naB -naB -naB -mnm -hPT -xEF +vka +jUY +wIC +hNY +qFi +vAG +hsj +wIC +wIC +wIC +wIC +oDh +nEc +xiV aag ajZ bdH @@ -90066,21 +97505,21 @@ aaa aaa aad aag -nXP -hJp -mGL -uNL -aSY -hJp -uNL -hJp -coo -bSv +nBJ +ldF +eQR +bos +iWH +gpO +bos +gpO +nEZ +kcp bTU gZK -aIX -aIX -bSv +bTS +lyX +kcp bAr bKh bBB @@ -90098,13 +97537,13 @@ eGg eGg eGg jYd -bzy -nqU -jPz -mzo -vhq -vhq -vRz +bSv +kBY +bTn +bSv +mVh +mVh +wid aag ajZ aaa @@ -90167,18 +97606,18 @@ aaf aaf aag aag -pCi -bsf -ahX -aFN -wcn -cXZ -jIV -vxM -gaJ -uzx -uue -vxM +uDg +cUl +xkc +ode +xkc +gNg +vBm +tJM +viH +lCp +ttE +vBm iuE uwN vka @@ -90195,19 +97634,19 @@ jfK wIQ mPj omy -xpo -mtl -pGG -qRT -djm -hgF -mtl -kIV -hUc -wNU -mnm -fwF -xEF +sCQ +wIC +wvE +jhI +jfY +bra +wIC +eQm +rXQ +vky +oDh +pdp +xiV aag aag aaf @@ -90265,25 +97704,25 @@ aaa aaa aaa aaa -nXP -nXP -nXP -nXP -nXP -lgY -uNL -uNL -uNL -lgY -uNL -mGL -cop -bSv +nBJ +nBJ +nBJ +nBJ +nBJ +eQR +ldF +bos +bos +olW +bos +uHT +gUi +kcp onY wdf -cop -cop -bSv +bTS +kcp +kcp bzy bKh bBB @@ -90301,17 +97740,17 @@ hdh hdh hdh bRD -bzy -qOU -mzo -mzo -mzo -qOU -vRz -vRz -vRz -vRz -vRz +bSv +bSv +bSv +bSv +sGK +mVh +wid +wid +wid +wid +wid aaa aaa aaa @@ -90371,17 +97810,17 @@ adG adG adG adG -akC -akC -akC -rPC -rPC -kDb -vxM -wVV -qau -mVi -vxM +rvI +cYo +ode +gkr +gkr +vBm +vBm +vBm +vfw +occ +vBm udK mwA lnt @@ -90399,17 +97838,17 @@ mgj wIQ jHh jUY -fbY -qVF -oog -qaJ -czB -mtl -mnm -kIV -kCi -kCi -kCi +wIC +aWg +jES +vBJ +qTQ +wIC +oDh +pdp +vky +pdp +paJ tuA tuA tuA @@ -90468,25 +97907,25 @@ aaa aaa aaa aaa -nXP -hJp -dPU -hJp -mGL -mGL -khS -hJp -crc -hJp -qee -mGL -hzM -bSv -bTV +nBJ +ldF +jsE +rdN +eQR +eQR +eQR +ldF +sXq +rdN +rMO +uHT +hfv +kcp +xNz utK -kBY -bTn -bSv +rKA +kcp +kcp bzy bXs bBB @@ -90505,16 +97944,16 @@ bBB bzA cBl bRU -vhq -eJh -nqU -rcH -vhq -vhq -nqU -jTu -nqU -vRz +mVh +iBu +sGK +mVh +mVh +mVh +sGK +gDX +sGK +wid aaa aaa aaa @@ -90573,18 +98012,18 @@ aeK aeK bur hdd -aok -sHM -aHY akC -cVJ -rPC -rPC -vxM -sVy -mKh -mVi -vxM +akC +akC +akC +uvp +gkr +vBm +mvE +tak +lCp +iLo +vBm bmz wSR mMV @@ -90602,18 +98041,18 @@ awz woy laO nRH -fbY -qVF -oog -kHK -wfL -mtl -mnm -kIV +wIC +tiF +vAG +opF +pDW +wIC +oDh +lhj +kCi +kCi +kCi kCi -dUI -wbu -rVN hjA nIE jKn @@ -90683,13 +98122,13 @@ aQv aQv bcm bcm -bSv -bSv -bSv -bSv -bSv -bSv -bSv +kcp +kcp +kcp +kcp +kcp +kcp +kcp bzy bZL cat @@ -90777,17 +98216,17 @@ aeK bur wdI sFf -adu -aHZ +bbV +bzz akC -cRc -rPC -wcn -vxM -eyg -giZ -gTl -vxM +pzc +gkr +vBm +qkn +eRL +lwK +vlN +vBm pZS pEB jUY @@ -90805,16 +98244,16 @@ qwp pZS jHh jUY -fbY -uLJ -oog -sBH -vfv -mtl -mnm -kIV +wIC +wIC +vzj +wIC +wIC +wIC +oDh +nYi kCi -nRR +sDD kOv cRv sQF @@ -90983,14 +98422,14 @@ nIt adu aHZ akC -oCL -rPC -wcn -vxM -vxM -tXs -oCX -vxM +lDT +gkr +vBm +rJN +nJz +wgi +rEO +vBm vkR wsD jUY @@ -91008,14 +98447,14 @@ qwp vGA uwN uVd -mtl -mtl -qYH -mtl -mtl -mtl -kIV -kIV +wIC +wjY +aTg +rFg +kkv +wIC +pdp +pdp kCi uAj qfa @@ -91036,7 +98475,7 @@ aaa aaa aaa aaa -aaa +bdH aaa aaa aaa @@ -91183,17 +98622,17 @@ amz amz aly nkx -adu +bbZ btv akC -dDC -rPC -wcn -vxM -wVV -erx -dsw -vxM +lCm +gkr +vBm +vBm +knO +wgi +ugT +vBm kfE wsD jUY @@ -91211,14 +98650,14 @@ qwp cDn uwN jUY -mtl -lNF -rkK -cIK -mtl -mnm -kIV -bbR +wIC +lcW +aTg +wIC +wIC +wIC +pdp +iEa kCi eqI ssZ @@ -91239,7 +98678,7 @@ aaa aaa aaa aaa -aaa +bdH aaa aaa aaa @@ -91389,14 +98828,14 @@ pvP adu aHZ akC -eKM -ake -rPC -vxM -dFC -bRH -bRH -vxM +jdn +lgk +hMM +vBm +rRr +dFU +fnC +vBm xDn pEB jUY @@ -91414,14 +98853,14 @@ awz gGr jHh sCQ -mtl -pJE -wPk -hRy -mtl -mnm -kIV -bVT +wIC +wtY +aTg +jIT +wIC +aCA +pdp +pdp kCi nwW btD @@ -91592,14 +99031,14 @@ adu adu aHZ akC -akC -tRX -uzm -vxM -eyg -eyg -oWI -vxM +pek +rir +pek +vBm +hqU +gcT +oPp +vBm nNv pEB jUY @@ -91617,14 +99056,14 @@ qwp ora laO rKQ -mtl -qHF -fnl -mtl -mtl -utZ -pUJ -pUJ +wIC +yeR +aTg +nNg +wIC +pjz +uTs +pjz kCi nRR btD @@ -91795,14 +99234,14 @@ nIt adu hxG akC -avl -qkn -wcn -vxM -vxM -vxM -vxM -vxM +ibP +loE +cmr +vBm +vBm +vBm +vBm +vBm xSz pEB jUY @@ -91820,14 +99259,14 @@ qwp pZS jHh vCx -mtl -mtl -mtl -mtl -qFl -mnm -xyz -gpe +wIC +wIC +wIC +wIC +wIC +hrI +ioM +xCy kCi nNt vqC @@ -91998,10 +99437,10 @@ wmg adu cqQ afT -agU -dIl -xpd -mlp +txy +rbp +cri +euL hiM hiM qRj @@ -92024,17 +99463,17 @@ vGA uwN pYX xuZ -jnD -elh -rzM -aBN -fQS -tJo -tJo +pcj +hXm +fZq +iFA +sLx +twQ +twQ bpd bqT vZv -btD +vjK awC uMj uMj @@ -92130,13 +99569,13 @@ xyw bHB xyw bcm -mzo -mzo -mzo -mzo -mzo -mzo -mzo +hOV +hOV +hOV +hOV +hOV +hOV +hOV cjK bSg aaa @@ -92201,10 +99640,10 @@ pvP adu frF akC -fRN -avl -lFb -ail +oUt +cmr +iPq +aMf vka vka mPj @@ -92226,19 +99665,19 @@ awz vSN mPj rWs -mIy -eEw +inh +ewr lPC -vka -wWT -xuB -gpe -czJ +mgy +qoN +tVx +feG +pPy kCi nRR btM -btD -hjA +vjK +dUZ nIE jKn pyi @@ -92295,16 +99734,16 @@ aaa aaa aaa aaa -nXP -ndx -uNL -nDd -soS -sgy -nsu -iyQ -iyQ -psy +sGw +nmp +eWs +usq +rQw +pOH +sbt +smU +nZR +lpl xyw bHB gjm @@ -92333,15 +99772,15 @@ bcb bHB btO bcm -tlI -jEs -kCT -lsb -fcG -ufp -mzo -qQP -vRz +sCW +nvX +tTC +jdu +tWd +aPe +hOV +ygv +kyP aaa aaa aaa @@ -92400,15 +99839,15 @@ afa aeK bur wdI -sFf +aHY tyK iKI akC akC -ail -lGG -age -age +aMf +hSv +xoB +xoB kzy wIQ jHh @@ -92432,16 +99871,16 @@ vka jHh lnt ckP -qFl -qFl -lIV -gsH -qFl +xTx +xTx +cyv +eKZ +xTx kCi -nRR -kOv +cfk +uws cRv -sQF +nwx nIE jKn vjg @@ -92498,16 +99937,16 @@ aaa aaa aaa aaa -nXP -hJp -uNL -gka -bwQ -oNf -uNL -aNw -kXJ -kVX +sGw +klT +eWs +njO +riC +eqd +goY +fqJ +nOX +xcV xyw bHB wqh @@ -92536,15 +99975,15 @@ bcc bHB aYt bcm -dqH -kCT -kCT -kCT -kCT -kCT -bLb -dQH -vRz +xsQ +tTC +tTC +tTC +tTC +tTC +iho +uKH +kyP aaa aaa aaa @@ -92603,16 +100042,16 @@ aeK aeK bur xFP -umS -jvJ -aex akC -fcF -avl -lFb -avl -age -age +akC +akC +akC +ehM +cmr +iPq +oQJ +xoB +xoB vSN jHh lnt @@ -92634,16 +100073,16 @@ sTo wIQ jHh jUY -qFl -qFl -gpe -xuB -gpe -mBA +xTx +xTx +hrI +tVx +feG +bxY +kCi +kCi +kCi kCi -pLW -wGI -pPN vmW nIE jKn @@ -92701,16 +100140,16 @@ aaa aaa aaa aaa -nXP -hJp -sIT -sIT -sIT -sIT -sIT -aNj -xmv -kVX +sGw +xzB +bfs +bYW +bYW +bYW +bYW +kNf +vpT +xcV xyw bHB sXB @@ -92738,16 +100177,16 @@ baH fVz bHB bBN -qif -vDh -kCT -kCT -kCT -kCT -wgU -mzo -kWY -vRz +bcm +uPQ +tTC +tTC +tTC +tTC +gzN +hOV +uXm +kyP aaa aaa aaa @@ -92807,15 +100246,15 @@ adG adG adG adG -akC -akC -akC -avl -avl -lFb -avl -xDp -age +ltw +cmr +oRm +cmr +cmr +iPq +oQJ +pcc +xoB xDn uwN wiN @@ -92837,15 +100276,15 @@ awz oWg uwN jUY -qFl -rnM -gpe -sDy -ukU -cNe -qFl -qFl -kCi +xTx +lym +hrI +lIQ +noy +rcG +lwY +feG +kfB tuA tuA tuA @@ -92904,16 +100343,16 @@ aaa aaa aaa aaa -nXP -tRV -sIT -jNt -iNZ -lQj -sIT -obG -kdt -kVX +sGw +xzB +bfs +qfQ +cJm +jwi +bYW +phw +xMG +xcV xyw bHB aZO @@ -92942,15 +100381,15 @@ bGF bHB aYt bcm -iQx -kCT -iuu -fHc -kpY -hTu -mzo -bRF -vRz +vKI +tTC +hhd +ybm +ffq +rsV +hOV +mLN +kyP aaa aaa aaa @@ -93009,16 +100448,16 @@ aag aag aag aag -pCi -puK -nMc -iJf -iJf -iJf -sFZ -avl -tCb -age +cZe +cmr +lSX +uaA +snx +snx +fLt +cmr +fYr +xoB pNa iCu awz @@ -93040,16 +100479,16 @@ awz ceE eMP faX -qFl -rEn -mnm -mYs -mnm -sDy -cUv -cNe -pLZ -xEF +xTx +tIX +ioM +abn +ioM +lIQ +qOY +xZH +mSr +nLp aag aag aag @@ -93107,16 +100546,16 @@ aaa aaa aaa aaa -nXP -hJp -sIT -vLh -mGL -qHb -sIT -hdR -hdR -hJz +sGw +xzB +bfs +wVN +qxI +qmM +bYW +wFN +wFN +tGH hmy bHB aZP @@ -93140,20 +100579,20 @@ baI baI baI baI -bFJ +baI bGG bHB btO bcm -lyi -kCT -kCT -kCT -kCT -kCT -mzo -dQH -vRz +kQr +tTC +tTC +tTC +tTC +tTC +hOV +uKH +kyP aaa aaa aaa @@ -93212,12 +100651,12 @@ aag aag aag aag -pCi -dRV -tGf -wex -avl -puK +cZe +cCL +vDz +kcH +kcH +kcH kcH kcH kcH @@ -93250,9 +100689,9 @@ aES aES aES aES -sDy -cNe -xEF +lIQ +xZH +nLp aag aag aag @@ -93310,16 +100749,16 @@ aaa aaa aaa aaa -nXP -mfe -sIT -eNx -mGL -mGL -vKf -mGL -mGL -rII +sGw +onv +bfs +pjh +qxI +qxI +iXm +qxI +qxI +vvX xyw bHB aZQ @@ -93348,15 +100787,15 @@ bGH bHB btO bcm -ksP -gdi -piX -kCT -kCT -kCT -mzo -dQH -vRz +qhG +krJ +jOt +tTC +tTC +tTC +hOV +uKH +kyP aaa aaa aaa @@ -93412,12 +100851,12 @@ aaa aad aag aag -pCi -pCi -pCi -pCi -lFb -avl +cZe +cZe +cZe +cZe +iPq +cmr kcH kcH kcH @@ -93448,17 +100887,17 @@ qnh aKa rrB aGr -aGr +eDu tKr uNg cLN aES -gpe -xuB -xEF -xEF -xEF -xEF +hrI +tVx +nLp +nLp +nLp +nLp aag aag ajZ @@ -93513,16 +100952,16 @@ aaa aaa aaa aaa -nXP -hJp -sIT -mIB -mGL -fGY -wUO -gYB -pXQ -kYa +sGw +xzB +bfs +wes +qxI +dKO +ykv +jPu +qKl +pPd xyw bHB aZR @@ -93551,15 +100990,15 @@ bGI bHB xyw bcm -fAt -kCT -kCT -kCT -kCT -iRS -mzo -oFG -vRz +gOk +tTC +tTC +tTC +tTC +bjg +hOV +siT +kyP aaa aaa aaa @@ -93615,12 +101054,12 @@ aaa aad aag aag -pCi -fqu -kTM -puK -lFb -avl +cZe +ivu +gSy +ltw +iPq +cmr kcH rlf soq @@ -93651,17 +101090,17 @@ gtp qfA tYX tpD -tpD +xfO iTD vCO vCO jxB -gpe -xuB -gpe -gpe -gpe -xEF +hrI +tVx +hrI +hrI +hrI +nLp aag aag ajZ @@ -93716,16 +101155,16 @@ aaa aaa aaa aaa -nXP -mGL -sIT -sIT -rUU -sIT -sIT -uNL -uNL -uNL +sGw +dvD +bfs +bfs +sir +bfs +bfs +eWs +eWs +eWs xyw bHB aZO @@ -93753,16 +101192,16 @@ baI bGF bHB eEc -mzo -mzo -kCT -xVj -vox -kCT -hTu -mzo -oFG -vRz +hOV +hOV +tTC +tSm +tcd +tTC +rsV +hOV +siT +kyP aaa aaa aaa @@ -93818,12 +101257,12 @@ aaa aad aag aag -pCi -huX -unJ -iJf -mBk -nUy +cZe +nHu +sit +snx +oVY +cGA kcH rBa nPs @@ -93859,12 +101298,12 @@ vCO vCO vCO jxB -gpe -gDq -tJo -bGr -hnV -xEF +gUu +dWc +lVW +kcs +rDH +nLp aag aag ajZ @@ -93919,16 +101358,16 @@ aaa aaa aaa aaa -nXP -rxk -uNL -aqc -hJp -qbd -cQF -hqs -jFh -uNL +sGw +fea +eWs +rsS +xzB +mKs +sCT +rXU +rEt +eWs wlb bHB aZP @@ -93942,7 +101381,7 @@ baI baI baI baI -baI +bFJ baI baI baI @@ -93956,16 +101395,16 @@ baI bGG bHB bGK -meN -xRc -qPg -oas -mni -kCT -fIf -mzo -oFG -vRz +rrh +xKG +gyH +rSx +dCz +tTC +lDA +hOV +siT +kyP aaa aaa aaa @@ -94021,18 +101460,18 @@ aaa aad aag aag -pCi -nMc -tGf -avl -avl -qtS +cZe +lSX +nRE +cmr +cmr +sWw kcH rIW oGx wvU yiX -lIa +nrb hyQ aic aov @@ -94043,9 +101482,9 @@ wVW wVW wVW swH -ayy +ucz wVW -aBV +sSG sEM wVW wVW @@ -94062,12 +101501,12 @@ wmT jhW mWD jxB -fGN -dtN -gpe -xuB -gpe -xEF +xBK +moc +pYQ +tVx +hrI +nLp aag aag ajZ @@ -94122,16 +101561,16 @@ aaa aaa aaa aaa -nXP -mGL -qee -hJp -mGL -qaZ -mGL -hJp -mGL -mBb +sGw +dvD +kWI +xzB +dvD +ipk +dvD +xzB +dvD +meT wqh bHB aZQ @@ -94159,16 +101598,16 @@ baI bGH bHB cuy -meN -dNe -pzO -kCT -kCT -kCT -eKg -pcD -lZO -vRz +rrh +iNR +uCR +tTC +tTC +tTC +fca +vjS +xee +kyP aaa aaa aaa @@ -94222,12 +101661,12 @@ aaa aaa aaa aad -aai -aai -pCi -lFb -avl -avl +nTT +nTT +cZe +vfS +cmr +cmr agj agj agj @@ -94244,13 +101683,13 @@ apo fHh wVW lZs -gHl +lVX sni ayz dAX aQg vpV -eSV +snI aGp wVW aDv @@ -94267,12 +101706,12 @@ aES aES aES aES -aES -lDN -gpe -xEF -xEF -xEF +nVn +cZO +hrI +nLp +nLp +nLp ajZ aaa aaa @@ -94325,16 +101764,16 @@ aaa aac aaf aaf -nXP -hJp -uNL -afd -hJp -slP -rsx -jFh -cQF -uNL +sGw +xzB +eWs +omx +xzB +rAw +qNK +rEt +sCT +eWs pyC bHB aZR @@ -94362,16 +101801,16 @@ baI bGI bHB kwQ -meN -dNe -pzO -wtd -kCT -nLa -wgU -mzo -dQH -vRz +rrh +iNR +uCR +rDR +tTC +wyz +gzN +hOV +uKH +kyP aaf aaf ajY @@ -94425,21 +101864,21 @@ aaa aaa aaa aad -ahE -iuT -naf -lFb -avl +tvt +fRg +peM +jUV +cmr agj agj -aew -bCO -hvH -hvH -hvH +jbN +mTc +hkX +yfG +lxE kcN -cod -oqA +twI +ufL aic aov wVW @@ -94469,13 +101908,13 @@ ceK sxD bhJ bHG -ayP aES -xuB -gpe -cEg -hgm -ils +aES +fMU +hrI +dPd +rLH +rwZ ajZ aaa aaa @@ -94527,17 +101966,17 @@ aaa aaa aad aag -nXP -nXP -tRV -uNL -uNL -agi -uNL -uNL -uNL -uNL -uNL +sGw +sGw +xzB +eWs +eWs +sOr +eWs +eWs +eWs +eWs +eWs cCE bHB aZO @@ -94565,17 +102004,17 @@ baI bGF bHB iAw -mzo -mzo -kCT -kCT -kCT -dlp -hTu -mzo -vot -vRz -aKQ +hOV +hOV +tTC +tTC +tTC +jRp +rsV +hOV +kzs +kyP +kyP aag ajZ aaa @@ -94628,21 +102067,21 @@ aaa aaa aaa aad -ahE -afc -avl -lFb -avl +tvt +jhR +fix +pfL +cmr agj -yeo +kyR agc -bIz +qfD agc -hvH -lQq +kJm +gFR kcN cod -oqA +ufL aic aov wVW @@ -94674,11 +102113,11 @@ bpe brS rOs aES -kwz -gpe -gpe -gAd -ils +dWA +hrI +hrI +dPO +rwZ ajZ aaa aaa @@ -94730,10 +102169,10 @@ aaa aaa aad aag -nXP -mGL -hJp -uNL +sGw +dvD +xzB +eWs aas alI agw @@ -94769,16 +102208,16 @@ bGG bHB btO xjW -gks -kCT -kCT -kCT -mQW -kCT -mzo -gJd -mjR -aKQ +uTk +tTC +tTC +tTC +cyR +tTC +hOV +qpV +hSb +kyP aag ajZ aaa @@ -94831,22 +102270,22 @@ aaa aaa aaa aad -ahE -aiV -wBY -hJJ -qCi +tvt +oyX +vBC +rhm +she agj -eBo +ogK +qgr agc agc -agc -ahY -mXj +kJm +lpg kcN -kcN -agj -amI +yff +ufL +aic aKq luZ alX @@ -94877,11 +102316,11 @@ aES aES aES aES -gxk -hiQ -wVP -sed -ils +tPc +jwq +vwU +uew +rwZ ajZ aaa aaa @@ -94933,10 +102372,10 @@ aaa aaa aad aag -nXP -mGL -hJp -uNL +sGw +dvD +xzB +eWs aga alQ amR @@ -94972,16 +102411,16 @@ bGH bHB btO bcm -hit -kCT -kCT -fjO -kCT -vGy -mzo -dQH -nnc -vRz +gBU +tTC +tTC +efJ +tTC +sHe +hOV +uKH +vyr +kyP aag ajZ aaa @@ -95034,20 +102473,20 @@ aaa aaa aaa aad -pCi -kwS -avl -avl -lIh +cZe +kwg +cmr +cmr +jkq agj -oMM -agc -agc -glU -rDd +nCx +tYM +mqb +kDK +jMx mXj -akk -alb +kcN +kcN agj aic aKq @@ -95080,11 +102519,11 @@ bhJ bHG nis aES -nSU -xuB -lrb -hnV -xEF +xGF +tVx +jne +rDH +nLp ajZ aaa aaa @@ -95136,10 +102575,10 @@ aaa aaa aad aag -nXP -nun -mzb -uNL +sGw +fzx +dWJ +eWs aav amj agG @@ -95148,9 +102587,9 @@ adg ajB bJo xjK -rgy -bvf -anS +bHB +btO +bdU aog bdU bfV @@ -95175,16 +102614,16 @@ bcb bHB aYt bcm -uKk -kCT -kCT -kCT -kCT -xwq -mzo -dQH -gMx -vRz +ohI +tTC +tTC +tTC +tTC +tml +hOV +uKH +hZZ +kyP aag ajZ aaa @@ -95237,20 +102676,20 @@ bdH aaa aaa aad -ahE -avr -avl -hCo -lIh +tvt +gJf +cmr +hYE +vAz agj -kFk +nXO hvH +bVs hvH hvH -ahZ -mXj -akl -alc +qBq +xxh +xpi agj bFA aov @@ -95283,11 +102722,11 @@ bpe brS cpj aES -fxO -xuB -cKt -mnm -ils +hro +tVx +tNB +ioM +rwZ ajZ aaa aaa @@ -95339,10 +102778,10 @@ aaa aaa aad aag -nXP -mGL -pGP -uNL +sGw +dvD +nsd +eWs aay adg amU @@ -95354,7 +102793,7 @@ bwl bHB xyw puI -aol +aYt aYt aYt puI @@ -95378,16 +102817,16 @@ bcc bHB xyw bcm -oqD -kCT -kCT -ePk -kCT -hTu -mzo -oFG -vhq -vRz +grT +tTC +tTC +ove +tTC +rsV +hOV +siT +bUQ +kyP aag ajZ aaa @@ -95440,22 +102879,22 @@ bdH aaa aaa aad -ahE -aOg -avl -hMI -lFb +tvt +hsu +cmr +pFq +iPq agj +dyj +fnv +bVs +xZG +kYt mXj -mXj -aoZ -aha -mXj -mXj -akm -mXj +ulo +kJW agj -aox +aic aoA wVW teY @@ -95486,11 +102925,11 @@ aES aES aES aES -gKJ -uEv -ofZ -mnm -ils +uhh +cZO +ppG +ioM +rwZ ajZ aaa aaa @@ -95542,10 +102981,10 @@ aaa aaa aad aag -nXP -mGL -lqI -uNL +sGw +dvD +kFU +eWs aaD ahB ahB @@ -95557,7 +102996,7 @@ wqh bHB vpW eXq -rri +aho aho aho eXq @@ -95581,16 +103020,16 @@ fVz bHB vpW bcm -hEt -kCT -xIi -kCT -kCT -eNL -mzo -oFG -nqU -vRz +cKm +tTC +cOh +tTC +tTC +dPq +hOV +siT +xFt +kyP aag ajZ aaa @@ -95643,20 +103082,20 @@ bdH aaa aaa aad -ahE -bEo -avl -iDT -tDx +tvt +hJD +cmr +fFQ +pMH agj mXj -tZB -hvH -hvH -hvH -adv -hvH -alj +mXj +lul +mXj +mXj +mXj +mXj +mXj agj aic aov @@ -95689,11 +103128,11 @@ bhJ bHG brS aES -rlz -xuB -iVo -mnm -ils +jrI +tVx +raO +ioM +rwZ ajZ aaa aaa @@ -95745,10 +103184,10 @@ aaa aaa aad aag -nXP -hJp -hJp -uNL +sGw +xzB +xer +eWs aaK cfN afe @@ -95784,16 +103223,16 @@ jSo bHB xyw bcm -rdr -kCT -poq -kCT -kCT -gks -mzo -oFG -nqU -vRz +qKb +tTC +xQj +tTC +tTC +uTk +hOV +siT +xFt +kyP aag ajZ aaa @@ -95846,22 +103285,22 @@ aaa aaa aaa aad -pCi -bVF -dTt -jgM -lFb +cZe +bLc +fOK +pWd +iPq agj -eYC -agc -fNb -eSJ -agc -agc -hvH -alo +mXj +pjR +jND +aKk +aKk +szf +faE +mXj agj -aic +amI aov wVW wVW @@ -95871,7 +103310,7 @@ wVW rOC soX azX -aAD +vHt aCb aDv aEC @@ -95892,11 +103331,11 @@ tJi ivf bpe aES -lGu -xuB -yiC -sXs -xEF +pok +tVx +kzc +gen +nLp ajZ aaa aaa @@ -95948,10 +103387,10 @@ aaa aaa aad aag -nXP -fpd -mGL -uNL +sGw +nkj +dvD +eWs ceQ ceU aff @@ -95987,16 +103426,16 @@ xyw bHB aYt bcm -sti -kCT -iTN -kCT -kOk -fIf -mzo -oFG -pch -vRz +jNG +tTC +vMb +xYE +iuI +lDA +hOV +siT +fFU +kyP aag ajZ aaa @@ -96049,23 +103488,23 @@ aaa bdH aaa aad -ahE -fHO -avl -jpJ -lzH +tvt +nCM +cmr +wKb +pri agj -uvZ -agc -agc -juN -pxG -agc -ocs +qlI +cdB +xjt +coD agc +ako +tYM +gLN agj aic -aov +acS wVW asQ awG @@ -96095,11 +103534,11 @@ aES aES aES aES -xpt -xuB -xHW -qJF -ils +gBd +tVx +fjz +hPu +rwZ ajZ aaa aaa @@ -96151,10 +103590,10 @@ aac aaf aag aag -nXP -dUF -mGL -uNL +sGw +vEI +dvD +eWs ceR ceU aff @@ -96163,10 +103602,10 @@ ajx tqg bJo mVE -bHB -xyw +rgy +baN anU -aeJ +gEg imy gEg dRD @@ -96194,12 +103633,12 @@ bcm bcm bcm bcm -mzo -sYC -mzo -gJd -eXo -vRz +hOV +pIC +hOV +qpV +nGk +kyP aag aag aaf @@ -96252,23 +103691,23 @@ bdH bdH aaa aad -ahE -cjh -avl -llM -lGL +tvt +mPw +cmr +wGa +bAy agj -geW -erZ -tMn -iVZ -aiW -aiW -akn -xyk -sBF -amY -vtT +eBE +hvH +agc +rNa +pxG +fOv +agc +agc +agj +aic +sxW wVW abQ atN @@ -96298,11 +103737,11 @@ bhJ bHG gCP aES -izx -mQV -hRi -gpe -ils +imt +noE +dcT +hrI +rwZ ajZ aaa aaa @@ -96354,10 +103793,10 @@ aad aag aag aag -nXP -fQF -mGL -uNL +sGw +oGf +dvD +eWs abd adk afu @@ -96397,12 +103836,12 @@ lRX rux sEt bcm -wbx -vhq -vhq -oFG -vhq -vRz +qyG +bUQ +bUQ +siT +bUQ +kyP aag aag aag @@ -96455,23 +103894,23 @@ bdH bdH bdH aad -ahE -cJB -avl -avl -mrc +tvt +qwY +cmr +cmr +mVA agj -cCd -agc -agc -nwv -pxG -agc -ako +kSH +hvH +nTA +kWR agc -agj -aic -aov +aiW +xyk +xyk +mDX +aTl +dLe wVW atx qEk @@ -96487,7 +103926,7 @@ hkG wVW fvB qEk -auR +iaa wVW aKn aKz @@ -96501,15 +103940,15 @@ mhm brS bpe aES -mnm -uEv -nLK -nLK -ils +ioM +cZO +pfD +pfD +rwZ ajZ aaa aaa -bdH +aaa bdH bdH bdH @@ -96557,10 +103996,10 @@ aad aag aag aag -nXP -wVD -mGL -uNL +sGw +fzT +dvD +eWs uZQ uZQ bJo @@ -96600,12 +104039,12 @@ myo dtH eyR bcm -wgo -nqU -vhq -dQH -xpf -vRz +rQs +xFt +bUQ +uKH +gsp +kyP aag aag aag @@ -96658,22 +104097,22 @@ bdH bdH bdH aad -pCi -pCi -pCi -jTi -nRq +cZe +cZe +cZe +tiX +vcI agj -bYd +ikQ +hvH agc -qck -yev +qlp +pxG +tTk agc agc -akp -hGB agj -aic +fXP aov wVW atx @@ -96690,7 +104129,7 @@ aEB wVW fvB qEk -auR +iaa wVW aKn aKz @@ -96704,15 +104143,15 @@ aES aES aES aES -gpe -uEv -xEF -xEF -xEF +ied +cZO +nLp +nLp +nLp ajZ aaa aaa -bdH +aaa bdH bdH bdH @@ -96760,10 +104199,10 @@ aad aag aag aag -nXP -mNf -hJp -uNL +sGw +iPf +klT +eWs cdE xSI uZQ @@ -96775,7 +104214,7 @@ wqh bHB vpW eXq -rri +aho aho aho eXq @@ -96803,12 +104242,12 @@ mhd aYt tuN fPn -nqU -nqU -vhq -dQH -hYc -vRz +xFt +xFt +bUQ +uKH +eLC +kyP aag aag aag @@ -96863,18 +104302,18 @@ aaa aad aag aag -pCi -avl -lFb +cZe +cmr +iNk agj -mXj -tZB +muV hvH -ahv -aiF -aiF -akr -xZz +qck +eRi +agc +tan +kDK +iEz agj aic aov @@ -96893,7 +104332,7 @@ aEC wVW dNZ qEk -mtX +mje wVW aKn aKz @@ -96907,15 +104346,15 @@ bhJ bHG cWy aES -gpe -xuB -xEF +hrI +tVx +nLp aag aag ajZ aaa aaa -bdH +aaa bdH bdH bdH @@ -96963,10 +104402,10 @@ aad aag aag aag -nXP -bvO -hJp -ahd +sGw +cqp +xzB +smH adg amp uZQ @@ -96978,7 +104417,7 @@ vPM bHB xyw anW -aol +aYt aYt aYt anW @@ -97006,12 +104445,12 @@ omP aYt bOC bcm -vhq -nqU -vhq -dQH -jhA -vRz +bUQ +xFt +bUQ +uKH +rVc +kyP aag aag aag @@ -97066,18 +104505,18 @@ aaa aad aag aag -pCi -cnX -lIh +cZe +huD +vAz agj mXj -afo -lue -ahw -aiG -aiG -aks -alu +fnv +hvH +hvH +iNY +hvH +hmV +mXj agj aic aoA @@ -97096,7 +104535,7 @@ aED wVW ryR jvX -auR +iaa wVW aKn aKy @@ -97110,15 +104549,15 @@ eBd brS cpj aES -fgx -dEV -xEF +luE +wgO +nLp aag aag ajZ aaa aaa -bdH +aaa bdH bdH bdH @@ -97166,10 +104605,10 @@ aad aag aag aag -nXP -dNB -hJp -uNL +sGw +jOq +xzB +eWs hSL agn afx @@ -97178,9 +104617,9 @@ ajy vwP bJo kCm -rgy -bvf -aof +bHB +btO +bea aoN bea bfZ @@ -97209,12 +104648,12 @@ ivg llO kSv bcm -mzo -puR -aKI -dQH -nqU -vRz +emC +dZZ +xmn +uKH +xFt +kyP aag aag aag @@ -97269,9 +104708,9 @@ aaa aad aag aag -pCi -anI -lIh +cZe +pcf +vAz agj agj agj @@ -97313,9 +104752,9 @@ aES aES aES aES -gaO -vnV -xEF +hXD +tYV +nLp aag aag ajZ @@ -97369,10 +104808,10 @@ aad aag aag aag -nXP -mGL -iBE -uNL +sGw +dvD +qig +eWs eXq adR eXq @@ -97413,11 +104852,11 @@ wXT cdA bcm bcm -mzo -mzo -wWf -nqU -vRz +emC +emC +mTL +xFt +kyP aag aag aag @@ -97472,12 +104911,12 @@ aaa aad aag aag -pCi -ifR -jMt +cZe +uTE +fZy gpY -awW -awW +uBi +wYA awW awW awW @@ -97513,12 +104952,12 @@ baw oxu baw baw -baw -baw +oaK +nUn pgD -xuB -gpe -xEF +tVx +hrI +nLp aag aag ajZ @@ -97572,10 +105011,10 @@ aad aag aag aag -nXP -mGL -mGL -uNL +sGw +dvD +dvD +eWs abG aeh afy @@ -97606,7 +105045,7 @@ baI baI baI baI -bFR +baI bGN bHB xAY @@ -97617,10 +105056,10 @@ aYt aYt lrX bcm -kGt -oFG -pch -vRz +jGQ +siT +fFU +kyP aag aag aag @@ -97675,11 +105114,11 @@ bdH aad aag aag -pCi -avl -lIh +cZe +cmr +vAz gpY -aeX +uac vFw ajf ajf @@ -97717,11 +105156,11 @@ aZz aZz aZz wUP -cxk +lrF pgD -uEv -gpe -xEF +cZO +hrI +nLp aag aag ajZ @@ -97775,10 +105214,10 @@ aad aag aag aag -nXP -rbv -hJp -uNL +sGw +dvD +klT +eWs abH aer agf @@ -97820,10 +105259,10 @@ btO btO uII fPn -cQN -oFG -eXo -vRz +htq +siT +nGk +kyP aag aag aag @@ -97878,16 +105317,16 @@ abs abs abs abs -pCi -ail -gwY +cZe +aMf +wby gpY mto acW awW awW -awW -awW +oGC +oGC aSJ goj iff @@ -97922,9 +105361,9 @@ baw sgU baw pgD -lIV -gsH -xEF +cyv +eKZ +nLp tQV tQV tQV @@ -97978,10 +105417,10 @@ aag aag aag aag -nXP -mGL -pwK -pJW +sGw +dvD +sZc +dGP acq aeJ azl @@ -98023,10 +105462,10 @@ aYt puI iWx bcm -uSq -dQH -vhq -vRz +ymg +uKH +bUQ +kyP aag aag aag @@ -98078,7 +105517,7 @@ adq aeW ajD anM -awW +oGC add aSA bvb @@ -98087,8 +105526,8 @@ ajI pYu awW acW -ads add +ryG ohB aiX awd @@ -98117,11 +105556,11 @@ aJc ecr ecr ecr -ygs +ohS aET -oGC +nUv +aJU aJU -mYx sgU baw dqb @@ -98181,10 +105620,10 @@ aag aag aag aag -nXP -mGL -fJX -uNL +sGw +dvD +iQJ +eWs acu aeh afF @@ -98221,15 +105660,15 @@ bHB tIS bcm bcm -wkc +wXT cdA bcm bcm bcm -mzo -mxL -kAs -vRz +emC +wuh +fgU +kyP aag aag aag @@ -98278,7 +105717,7 @@ bdH bdH abs adq -aeX +aea ajE awW awW @@ -98298,7 +105737,7 @@ unT kng fDV aiX -wWC +aiX tAL awX tAL @@ -98312,15 +105751,15 @@ dum wVW wVW wVW -lgK +jOc aGZ awF cST aTz aUl aET -aWA -jgu +esC +nsQ aET mSi wHp @@ -98384,10 +105823,10 @@ aag aag aag aag -nXP -tpg -vJM -uNL +sGw +nHX +cEA +eWs acM aer agf @@ -98408,7 +105847,7 @@ baI baI baI baI -baI +bFR baI baI baI @@ -98427,12 +105866,12 @@ apE icp fER bcm -mzo -xSb -vhq -dQH -mjR -vRz +emC +hVL +bUQ +uKH +hSb +kyP aag aag aag @@ -98518,7 +105957,7 @@ aGV rvA aKE awF -cST +jzE aUw aUm aET @@ -98587,10 +106026,10 @@ aag aag aag aag -nXP -hJp -dpy -uNL +sGw +xzB +hRA +eWs acZ aeN azl @@ -98630,12 +106069,12 @@ uiT aYt jyR bcm -ioj -nqU -vhq -dQH -fIH -vRz +fUZ +xFt +bUQ +uKH +eyM +kyP aag aag aag @@ -98702,7 +106141,7 @@ aoI weD fdE amh -fdE +amh aiX cJu pXx @@ -98790,10 +106229,10 @@ aag aag aag aag -nXP -hJp -fkW -uNL +sGw +xzB +ghA +eWs vhw khD azw @@ -98833,12 +106272,12 @@ apL aYt iKb bcm -ygy -nqU -vhq -oFG -qUj -vRz +umk +xFt +bUQ +siT +qBl +kyP aag aag aag @@ -98893,7 +106332,7 @@ awW add add add -add +stu add add add @@ -98903,15 +106342,15 @@ afr akc buc weD -amh +jMm pcG iFn qnD -amd -amd +amh +kWT wUR wUR -amd +wWC auZ aiX aiX @@ -98919,7 +106358,7 @@ asl amO aGO awF -aFj +hRk aGY rvA aKO @@ -98939,7 +106378,7 @@ baw aJU aJU aJU -wDl +tBu aJU aJU aJU @@ -98993,10 +106432,10 @@ aag aag aag aag -nXP -fpd -nVS -uNL +sGw +nkj +rjF +eWs eXq eXq eXq @@ -99036,12 +106475,12 @@ uiT aYt xNj bcm -mjR -nqU -vhq -dQH -gWR -vRz +hSb +xFt +bUQ +uKH +pTX +kyP aag aag aag @@ -99090,7 +106529,7 @@ bdH aaC abs adq -aeY +dpo ajI add add @@ -99111,10 +106550,10 @@ aiX aiX aiX oqw -amd +lvA osT cZV -amd +pQV apq ana aiX @@ -99122,8 +106561,8 @@ asp amO avj awF -aFo -aGY +xTL +lmA rvA aqm awF @@ -99148,7 +106587,7 @@ gjq aJU aJU tiW -usm +msg pgD tQV aaC @@ -99196,10 +106635,10 @@ aag aag aag aag -nXP -hJp -dnX -uNL +sGw +xzB +oes +eWs aRu aRu aRu @@ -99239,12 +106678,12 @@ fpW llO vml bcm -mzo -jhA -jhA -dQH -wlL -vRz +emC +rVc +rVc +uKH +nBF +kyP aag aag aag @@ -99293,16 +106732,16 @@ bdH aaC abs adq -lvA +myl ajI add -auJ +fsU aHU aTm -aea +awW aTm jgF -auJ +fsU add ajI add @@ -99313,17 +106752,17 @@ fdE mLz iFn alw -amd +amh dGr rtY fJy xQg -apq +wWC szO aiX atU amO -avj +qLj awF awF aEW @@ -99342,16 +106781,16 @@ aJU aJU tiW aJU -lqZ +gBW ouQ iun -aJU +baw vPm qys -lqZ +gBW aJU tiW -kWT +qgU pgD tQV aaC @@ -99399,10 +106838,10 @@ aag aag aag aag -nXP -mGL -dnX -uNL +sGw +dvD +oes +eWs aRu aRu aRu @@ -99436,18 +106875,18 @@ baI baI bGO bHB -btO +uAb bcm -mzo -sYC -mzo -mzo -mzo -mzo -mzo -gJd -vhq -vRz +emC +hvx +emC +emC +emC +emC +emC +qpV +bUQ +kyP aag aag aag @@ -99495,8 +106934,8 @@ bdH bdH aaC abw -adQ -awW +aee +avd acW awW auK @@ -99519,18 +106958,18 @@ aiX amd dXY fmB -fmB -dXY -apq +umS +yjM +qbO aqw -aiX -atV +hnI +bYe amO -avj -agm +wZM +aPm awF -aHk -rvA +nvG +vGI aLp awF jss @@ -99540,7 +106979,7 @@ aVk ldC vkb aET -gnv +eFM yhI tTu sgU @@ -99554,8 +106993,8 @@ mlz sOy baw sgU -baw -svp +xVF +njD trb aaC bdH @@ -99602,10 +107041,10 @@ aag aag aag aag -nXP -mGL -fJX -uNL +sGw +dvD +iQJ +eWs aRu aRu aRu @@ -99639,18 +107078,18 @@ bEN baX bcp bHB -aYt +xAY aYz -mzo -vhq -eJh -eFp -qUH -mzo -qUj -dQH -vhq -vRz +emC +bUQ +wDP +mHF +hhg +emC +qBl +uKH +bUQ +kyP aag aag aag @@ -99698,14 +107137,14 @@ bdH aaa aaY abw -adZ -awW +aec +avd acW awW avc aIv aTm -bvd +kJL cbM jzZ sLo @@ -99722,19 +107161,19 @@ aiX apt sCI pWN -pWN +uTN aqy nBE pOD bZa ahM aEf -avj -ahF +wZM +ejp awF aHn -rvA -aLt +szU +fGa awF aRC aUw @@ -99751,14 +107190,14 @@ baw hJk yac vbB -dav +kUQ vbB fDS iLd baw sgU -baw -uvk +xVF +dLz trb aaC bdH @@ -99805,10 +107244,10 @@ aag aag aag aag -nXP -tRV -dnX -uNL +sGw +xzB +oes +eWs aRu aRu aRu @@ -99842,18 +107281,18 @@ wqh xyw bcc bHB -aYt +xAY aYz -mzo -xIj -nqU -nqU -vhq -gsL -nqU -oFG -eXo -vRz +emC +vFI +xFt +xFt +bUQ +wdG +xFt +siT +nGk +kyP aag aag aag @@ -99902,16 +107341,16 @@ aaa aaY abs adq -add +tGj ajI add -auJ +fsU aHU aTm -bzz +awW aTm jgF -auJ +fsU add ajI add @@ -99923,22 +107362,22 @@ aiX aiX aiX awq -amd -amd +lvA +pQV mHO aiX aiX -mJL aiX -ayT +aiX +atV amO -avj -qFl -qFl -qFl -qFl -qFl -qFl +oXd +tsr +tsr +tsr +tsr +tsr +tsr aRE qVC qVC @@ -99946,21 +107385,21 @@ prE aUw aUw awS -aJU +nJs aJU aJU tiW aJU -lqZ +gBW ouQ vbB -fvu -vbB +baw +tBq qys -lqZ +gBW aJU tiW -aJU +bpw pgD tQV aaY @@ -100008,10 +107447,10 @@ aag aag aag aag -nXP -nun -vJM -uNL +sGw +fzx +cEA +eWs aRu aRu aRu @@ -100045,18 +107484,18 @@ bEO rOc fVz bHB -btO +uII ruz -mzo -gwm -pEy -nqU -sRI -mzo -fdA -oFG -nqU -vRz +emC +jev +aML +xFt +oFn +emC +jaI +siT +xFt +kyP aag aag aag @@ -100125,23 +107564,23 @@ fdE feS iFn alw -amd -amd -amd -amd +kFe +mJL +qbO +wbu aiX aKG amb -bZg -bYe +aiX +ayT amO avj -qFl -aFp -aHo -bZH -aQs -qFl +tsr +sOL +jIC +lFr +wTu +tsr aSq aTE aTE @@ -100172,15 +107611,15 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -100211,10 +107650,10 @@ aag aag aag aag -nXP -hJp -qNG -uNL +sGw +xzB +rsP +eWs aRu aRu aRu @@ -100248,18 +107687,18 @@ gfW gfW xyw bHB -btO +uII wrT -mzo -pVu -eOr -dFV -iVO -mzo -nqU -oFG -pch -vRz +emC +fqb +ury +dFW +mvi +emC +daF +siT +fFU +kyP aag aag aag @@ -100314,7 +107753,7 @@ aoC add add add -add +stu add add add @@ -100328,23 +107767,23 @@ nwL amh nPx aiX -pQV +aiX uOJ pqc -amd -aiX +pqc +aqz aKH and aiX lzj amO bYe -aTR -gpe -gpe -aIa -ayh -qFl +fyT +xIV +xIV +edV +reM +tsr aSt aTE aTE @@ -100355,12 +107794,12 @@ awS tvQ yhI tTu -gVF -qLj -aJU +sgU +baw aJU aJU aJU +nnX aJU aJU aJU @@ -100375,15 +107814,15 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -100408,16 +107847,16 @@ aaa bdH aaY aad -nXP -nXP -nXP -nXP -nXP -nXP -nXP -mGL -kKG -uNL +sGw +sGw +sGw +sGw +sGw +sGw +sGw +dvD +iOX +eWs aRu aRu aRu @@ -100451,24 +107890,24 @@ bEP gfW bGQ bHB -btO -cmp -cmp -cmp -cmp -cmp -cmp -cmp -vwN -oFG -nqU -vRz -vRz -vRz -vRz -vRz -vRz -vRz +qnd +lFp +lFp +lFp +lFp +lFp +lFp +lFp +ljm +siT +xFt +kyP +kyP +kyP +kyP +kyP +kyP +kyP ajZ aaY bdH @@ -100531,10 +107970,10 @@ akv eGH qnl aiX -aiX -aiX -aiX -amd +fuz +pLW +sht +wex aiX aiX aiX @@ -100542,12 +107981,12 @@ aiX ukh amO nxK -qFl -aFq -aHB -aIb -aRr -qFl +tsr +iPN +dbX +rGL +cyL +tsr aSx aTE aTG @@ -100578,15 +108017,15 @@ bdH aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -100611,16 +108050,16 @@ aaa bdH aaY aad -nXP -sAm -mGL -aLl -hJp -hJp -mGL -mGL -eKO -uNL +sGw +lrH +dvD +xzB +xzB +xzB +dvD +dvD +wsz +eWs aRu aRu aRu @@ -100655,23 +108094,23 @@ gfW rHw wTg aYu -cmp -bTz -apV -are -apV -djM -cmp -mjR -oFG -nqU -vhq -vhq -rcH -vhq -wqE -kwq -vRz +lFp +ddw +gHl +kjD +gHl +qoL +lFp +hSb +siT +xFt +bUQ +bUQ +gQQ +bUQ +cOt +uSU +kyP ajZ aaY bdH @@ -100727,39 +108166,39 @@ awW awW abB add -add -kyY -aau +xWO +aiX +aiX aau aau aau aau uVX ase +sht +uOJ aqz -amd -aqz -ase -atS +mBe +atT aiX ayU amO avm -qFl -qFl -aeD -qFl -qFl -qFl -pUJ -mSP -pUJ -pUJ -pUJ -pUJ -pUJ -ryG -aJU +tsr +tsr +vOY +tsr +tsr +tsr +lIj +mVF +lIj +lIj +lIj +lIj +lIj +pgD +nUv aJU pIV baw @@ -100781,15 +108220,15 @@ bdH aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -100814,16 +108253,16 @@ aaa bdH aaY aad -nXP -hJp -hJp -mGL -mGL -pwK -cmk -xJi -cIi -uNL +sGw +xzB +xzB +dvD +dvD +sZc +abj +mUE +coo +eWs aRu aRu aRu @@ -100858,23 +108297,23 @@ gfW aZZ aYC aZZ -cmp -apM -eGs -bWM -bWM -bWS -cmp -mjR -bVR -oeo -oeo -gdd -oeo -oeo -bgc -qUj -vRz +lFp +mgd +wfn +aId +aId +poA +lFp +hSb +uGU +kGi +kGi +khI +kGi +kGi +kow +qBl +kyP ajZ aaY bdH @@ -100908,9 +108347,9 @@ aaa aaa aaa aaa -aaa -aaa -aaa +bdH +bdH +bdH aaa aaa aaa @@ -100930,17 +108369,17 @@ awW awW acW qdQ -eFT -hhA +muq +aiX +aiX aau dBs dBs -dBs aau fuz tld -aiX -ccc +uOJ +mHO aiX asf atT @@ -100948,24 +108387,24 @@ aiX mQH amT ioX -pUJ -inC -anX -aht -gvC -pTc -bsO -bsO -aal -xKW -aht -aGP -pUJ -mSi -wHp +lIj +tBY +gkE +cTM +rqD +pcY +srO +srO +lWO +wjQ +uag +uag +jnh +pgD +lza gZw -sgU -baw +gVF +kuk baw aJU nig @@ -100981,18 +108420,18 @@ tQV aaa bdH bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -101017,15 +108456,15 @@ aaa bdH aaa aad -nXP -xYN -xYN -uNL -bdi -kKG -hJp -pda -lpS +sGw +dvD +dvD +eWs +jri +iOX +kIl +jmz +hsK wfE wfE wfE @@ -101038,7 +108477,7 @@ bsk sxu cBI bkA -bcB +eFG bej arX vSG @@ -101061,23 +108500,23 @@ gfW bLT cbQ ccq -cmp -apO -bWM -bWM -bWM -gQl -asE -asE -asE -asE -asE -asE -asE -asE -clO -gUv -vRz +lFp +lGg +aId +aId +aId +jFx +nmY +nmY +nmY +nmY +nmY +nmY +nmY +nmY +siT +bUQ +kyP ajZ aaa bdH @@ -101111,9 +108550,9 @@ aaa aaa aaa aaa -aaa -aaa -aaa +bdH +bdH +bdH aaa aaa aaa @@ -101123,26 +108562,26 @@ adq awW awW awW -awW -add +oGC +ryG aVL bBl aeZ -pzy -awW +ryG +oGC awW acW -ads add -ohB +bny +aiX +aiX aiX vwV vwV -vwV -aiX aiX aiX aiX +sHM kUh aiX aiX @@ -101151,27 +108590,27 @@ aiX nVe akV bRs -pUJ -pUJ -abA -pUJ -pUJ -pUJ -pUJ -pUJ -pUJ -pUJ -pUJ -aGQ -pUJ -oGC +lIj +lIj +dvZ +lIj +lIj +lIj +lIj +lIj +lIj +lIj +lIj +lIj +tWF +pgD +nUv aJU -mYx sgU baw baw aJU -tTu +bnZ cIe jez aJU @@ -101184,18 +108623,18 @@ tQV aaa aaa bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -101220,9 +108659,9 @@ aaa bdH aaa aad -nXP -aMr -aMr +sGw +dvD +dvD wfE wfE rXv @@ -101264,23 +108703,23 @@ gfW bGT bHH bGT -cmp -apP -hKQ -bWM -bWM -fps -asE -asB -atA -bWM -aur -auI -auY -asE -caE -pdk -vRz +lFp +xDF +eRS +aId +aId +tMc +nmY +ouw +jDP +aId +xHS +tEd +vjW +nmY +siT +bUQ +kyP ajZ aaa bdH @@ -101314,41 +108753,41 @@ aaa aaa aaa aaa -aaa -aaa -aaa +bdH +bdH +bdH aaa aaa aaa aaa abs adq -aeZ +aei aka -aoI -aar -aar -aar -aar -tiM -aar -teB +aWn +njn +njn +njn +njn +njn +njn +oGC awW acW awW awW awW fSm -aSJ +hiy apl bbL bbL kij bbL -bbL -bbL -yfv bYe +bYe +yfv +bbL aWl bbL bbL @@ -101365,40 +108804,40 @@ bbL kij bbL xRU -pgo -baw +pEY +jsP baw fGg baw sgU baw baw -qVM -qVM -qVM -qVM -qVM -qVM -gnv +nIN +nIN +nIN +nIN +nIN +nIN +hXV yhI -tTu +rRz pgD tQV aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -101423,9 +108862,9 @@ aaa bdH aaa aad -aKW -bdn -bdn +sGw +dvD +dvD wfE mcL jOo @@ -101460,30 +108899,30 @@ qyD omo blZ bqN -gtA +nTo bqN bwR gfW bUe cbR ccr -cmp -urx -aqd -bWM -bWM -ask -asE -asE -asE -atJ -aus -aus -ava -asE -clP -ovF -yhQ +sHm +ddM +hZe +aId +aId +rNK +nmY +nmY +nmY +dZu +dKK +dKK +xry +nmY +siT +bUQ +kyP ajZ aaa bdH @@ -101517,32 +108956,32 @@ aaa aaa aaa aaa -aaa -aaa -aaa +bdH +bdH +bdH aaa aaa aaa aaa abs adq -afp -akc +apr +apr aoV -aar -aIx -aWs -aar -aap -aar -uac -awW +njn +rWz +rWz +rWz +tWM +njn +aea +oGC xjD ajf ajf ajf -ajf oAO +pIZ aod qgG amC @@ -101566,42 +109005,42 @@ suV bYc bYc bYc -biT +qgG dqN tFW dGC -tAV -tAV -tAV -avZ -iYr +aZz +aZz +aZz +nsc +baw cxk -qVM -csz -qVM -eRR -vce -qVM -crh -csI -qhb +nIN +rgL +rgL +rgL +nTc +nIN +wTy +wTy +wTy pgD tQV aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -101626,9 +109065,9 @@ aaa bdH aaa aad -aKW -uJo -aLf +sGw +xiH +xzB wfE dgl jOo @@ -101662,7 +109101,7 @@ qjN hpN gfW omo -uFo +wkc gfW uFo omo @@ -101671,22 +109110,22 @@ iRx iEb bHa apm -apQ -avT -bWM -bWM -aso -asv -xVO -asE -bWM -auw -auM -avb -asE -scI -oed -yhQ +gJO +pwG +aId +aId +wUK +dDM +vPR +nmY +aId +vXf +qGw +uZV +nmY +uKH +bUQ +kyP ajZ aaa bdH @@ -101720,32 +109159,32 @@ aaa aaa aaa aaa +bdH +bdH +bdH aaa aaa aaa aaa -aaa -aaa -aaa -abw -aea -awW -akt -awW -avd -awW -awW -aar -wFm -aar -uBi -awW -awW -awW +abs +adq +aub +akc +euO +njn +rWz +rWz +rWz +rWz +njn +oGC +sHp +oGC awW awW awW -tsv +aSJ +isI dtM aii mce @@ -101769,42 +109208,42 @@ avn mTb avn nFr -asS +aii ajC dCD -baw +aXe baw baw baw mnA -rKs -aJU -xWF -csz -xWF -aJU -baw -aJU baw -sMM baw -wiz -trb -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +nIN +rgL +rgL +rgL +rgL +nIN +crh +csI +nqG +pgD +tQV aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -101829,9 +109268,9 @@ aaa bdH aaa aad -aKW -ebD -aLf +sGw +jOq +xzB wfE krp jOo @@ -101874,22 +109313,22 @@ buH iEb buH app -uku -aqD -bWM -arE -ast -pjP -atd -uku -bWM -aux -aus -ava -asE -suT -ftl -yhQ +ruL +qUZ +aId +hJI +vwY +uIA +acd +ruL +aId +kyh +dKK +xry +nmY +qpV +hNh +kyP ajZ aaa bdH @@ -101923,32 +109362,32 @@ aaa aaa aaa aaa +bdH +bdH +bdH aaa aaa aaa aaa -aaa -aaa -aaa -abw +abs aec -awW +avd akt awW -add -aIB -awW -aar -ceu -aar -aar -aar -aar -aar -aar -aar -aar -aar +qHq +rWz +rWz +rWz +rWz +njn +vzO +njn +njn +njn +njn +njn +njn +njn dtM aii ajC @@ -101972,42 +109411,42 @@ aoe aoe aoe aEI -asS +aii aik -qVM -aWm -aWm -aWm -aWm -qVM -yji -qVM -qVM -dux -qVM -baw -vFb -aJU +nIN +nIN +nIN +nIN +nIN +nIN +rBD +nIN +nIN +rgL +rgL +rgL +rgL +eOM baw sMM -baw +xVF dLz -trb -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +tQV aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -102032,9 +109471,9 @@ aaa bdH aaa aad -aKW -bPW -aLf +sGw +eoE +xzB wfE eiP qOp @@ -102077,22 +109516,22 @@ buH iEb buH app -uku -aqT -bWM -gwW -dvF -bWM -ate -uku -bWM -auC -auN -dxL -asE -tqk -iBG -yhQ +ruL +gsd +aId +oqt +wCk +aId +lab +ruL +aId +hgD +pSQ +dOe +nmY +rEK +bba +kyP ajZ aaa bdH @@ -102126,32 +109565,32 @@ aaa aaa aaa aaa -aaa -aaa -aaa +bdH +bdH +bdH aaa aaa aaa aaa abs adq -aeZ +aGP aka -aoI -ads -add aWu -aar -aao -aar -uLW -tZe -oQo -dCh -adt -xUI -aOD -aar +njn +rWz +rWz +rWz +rWz +njn +gur +osn +vDt +puJ +deA +olC +ujf +njn mOL aii ajC @@ -102175,38 +109614,38 @@ isN cnZ aoe dtM -asS +aii ajC -qVM -aWn -baw -baw -uTY -qVM -mOb -qVM -qVM -qVM -qVM -uGz -aJU -mYx -gnv +nIN +cHn +cHn +gNo +aZv +gNo +xzh +dcZ +nIN +rgL +rgL +rgL +rgL +nIN +hWB yhI -tTu +qSX pgD tQV aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -102235,9 +109674,9 @@ aaa bdH aaa aad -aKW -bPT -aLf +sGw +jIJ +xzB wfE fHz opD @@ -102280,22 +109719,22 @@ oLv iEb buH app -uku -aqW -bWM -arZ -mkh -bWM -ath -asE -atZ -auE -auP -wZy -asE -iTz -vfJ -yhQ +ruL +xPq +aId +vjv +gOR +aId +vTV +nmY +pdy +smW +prP +xXl +nmY +idL +gnM +kyP ajZ aaa bdH @@ -102329,32 +109768,32 @@ aaa aaa aaa aaa -aaa -aaa -aaa +bdH +bdH +bdH aaa aaa aaa aaa abs adq -afr +aGQ akc apg -avx -add -aYq -aar -aao -aao -aao -aap -ijU -vkD -ijU -aap -aao -sMs +njn +rWz +rWz +rWz +rWz +njn +jsA +cGR +tey +urL +tey +cGR +jsA +tQA bYe akU ajC @@ -102378,38 +109817,38 @@ aEi coa aoe ahr -biV -ajC -qVM -aub -uId -qHq -wYA -qVM -pDm -tDA -qFQ -oGy -qVM -aJU -aJU -pEY +akU +bYe +aZv +gNo +xzh +xzh +nIN +gJY +gNo +gNo +nIN +rgL +rgL +rgL +rgL +nIN wvj csI -goL +iPH pgD tQV aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -102438,9 +109877,9 @@ aaa bdH aaa aad -aKW -aLf -aSm +sGw +xzB +dvD wfE iYx opD @@ -102483,22 +109922,22 @@ buH iEb buH eDG -cmp -ard -bWM -gwW -saB -bWM -ati -atE -aua -gwW -xqS -yiE -avk -wlp -vXX -yhQ +lFp +xlO +aId +oqt +iXA +aId +oZy +naw +npA +oqt +oEy +qmY +tUN +siT +lZb +kyP ajZ aaa bdH @@ -102539,25 +109978,25 @@ aaa aaa aaa aaa -abw +abs aee -awW +avd akt -awW -add -aJJ -awW -aar -aap -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA +qWI +njn +njn +njn +njn +njn +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm ahr akU ajC @@ -102581,38 +110020,38 @@ aEi fFh aoe dtM -biV +akU ajC -czu -czu -czu -czu -czu -czu -czu -czu -czu -mov -qVM -baw -baw -aJU +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +nIN +nIN +nIN +nIN +nIN ehj irS ilJ njD -trb -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +tQV aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -102641,9 +110080,9 @@ aaa bdH aaa aad -aKW -aLf -aSm +sGw +xzB +dvD wfE gww opD @@ -102686,22 +110125,22 @@ bFu mKY hvp mWw -apT -apA -arC -asi -cSN -asy -atw -atF -aud -auF -ati -cUb -asE -luu -gNx -yhQ +vpe +dxT +olN +jDk +uNq +tOu +qyK +mkn +tHQ +uxX +oZy +orN +nmY +lQf +tHk +kyP ajZ aaa bdH @@ -102742,17 +110181,17 @@ aaa aaa aaa aaa -abw -aei -awW -akt -awW -add -awW -awW -aar -wFm -lYA +abs +adq +aWm +aka +kyY +njn +mfR +sqP +tVs +tVs +gxm aax aax aax @@ -102760,7 +110199,7 @@ dkO aps aps aps -lYA +gxm vIm aii ajC @@ -102772,7 +110211,7 @@ asU asU asU arb -aoq +fEC aoe aoe aCw @@ -102784,9 +110223,9 @@ hFF aoe aoe dtM -asS +aii ajC -czu +gxm aiJ aiJ aiJ @@ -102794,28 +110233,28 @@ qYr atj atj atj -czu -wKn -qVM -uvS -oWz -aJU +gxm +ear +aGm +xzh +ear +nIN rQW -xWO -baw -aJU -trb -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +yhI +tmI +pgD +tQV aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -102844,23 +110283,23 @@ aaa bdH aaa aad -aKW -rJb -aSm +sGw +nkj +dvD wfE rYi opD wFR wFR -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr aLG aZi cOM @@ -102888,23 +110327,23 @@ baZ oLv hop vMx -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -auh -gwW -ati -lBY -asE -wlp -oDf -yhQ +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +iZE +oqt +oZy +qhD +nmY +siT +xFt +kyP ajZ aaa bdH @@ -102947,15 +110386,15 @@ aaa aaa abs adq -afA -aka apr -aar -aJL -aYr -aar -aap -lYA +apr +apr +njn +hzl +vdT +jsA +jsA +gxm aax aax aax @@ -102963,7 +110402,7 @@ vQe aps aps aps -lYA +gxm ahq akU ajC @@ -102987,9 +110426,9 @@ aQz aRJ ajl dtM -biV +akU ajC -czu +gxm aiJ aiJ aiJ @@ -102997,15 +110436,15 @@ str atj atj atj -czu -wKn -qVM -nUv -qga -qVM -kDt +gxm +aGm +xzh +xzh +moq +nIN +wTy +wTy wTy -pwG pgD tQV aaa @@ -103047,15 +110486,15 @@ aaa bdH aaa aad -aKW -aLf -aSm +sGw +xzB +dvD wfE cVK opD oRO ren -aKW +wDr aeL aeL aeL @@ -103063,7 +110502,7 @@ aqM arO arO arO -aKW +wDr beB byI beB @@ -103091,7 +110530,7 @@ bCd bJz rrV bJz -yhQ +wDr aue aue aue @@ -103099,15 +110538,15 @@ txi azy azy azy -yhQ -aup -gwW -kiF -ave -asE -scI -oDf -yhQ +wDr +kJH +oqt +qlm +kRD +nmY +uKH +xFt +kyP ajZ aaa bdH @@ -103153,12 +110592,12 @@ aet afB akW apu -aar -aar -aar -aar -tiM -lYA +njn +njn +lBB +cGR +mOR +gxm acV acV acV @@ -103166,7 +110605,7 @@ vQe aps aps aps -lYA +gxm dtM nmx cpw @@ -103190,9 +110629,9 @@ aQz aRK ajl aDk -biV +akU ajC -czu +gxm aiJ aiJ aiJ @@ -103200,15 +110639,15 @@ str atl atl atl -czu -wKn -qVM -gMA -qVM -qVM -vpn +gxm +rTe +xzh +gNo +nIN +nIN +crh csI -goL +qhb pgD tQV bdH @@ -103250,15 +110689,15 @@ aaa bdH aaa aad -aKW -aLf -aMs +sGw +xzB +esm wfE wfE viJ wfE wfE -aKW +wDr aeL aeL aeL @@ -103266,7 +110705,7 @@ kHj arO arO arO -aKW +wDr aLG aZi aLG @@ -103294,7 +110733,7 @@ bCd buH hop buH -yhQ +wDr aue aue aue @@ -103302,15 +110741,15 @@ tGO azy azy azy -yhQ -uRr -bWw -bWM -avi -asE -suT -oed -yhQ +wDr +euW +rOI +aId +hQP +nmY +qpV +bUQ +kyP ajZ aaa bdH @@ -103353,23 +110792,23 @@ aaf aaf acv aez -aJW -aJW -boL boL +akY boL -aYs -uoS -aJW -lYA +aiH +hbl +cGR +fwP +mOR +gxm adb adb adb -lYA +gxm asm asm asm -lYA +gxm dtM ajt pvt @@ -103393,22 +110832,22 @@ fOL aRS ajl ahq -asS +aii ajC -czu +gxm alW alW alW -czu +gxm atI atI atI -czu -mOb -qVM -vGk -qVM -ina +gxm +aGm +ear +gNo +aZv +aJU baw sMM baw @@ -103454,14 +110893,14 @@ aKR aKR aKR aKR -aSm -aLf -vXY -aLf -aLf -jiX -cmq -aKW +dvD +xzB +pIo +xzB +xzB +fQy +nAm +wDr aeL aeL aeL @@ -103469,7 +110908,7 @@ kHj nLg nLg nLg -aKW +wDr aLG aZi bad @@ -103497,7 +110936,7 @@ kan bGe bHL buH -yhQ +wDr auk auk auk @@ -103505,14 +110944,14 @@ tGO azy azy azy -yhQ -pGN -bWM -bWM -avi -asE -scI -oed +wDr +sJI +aId +aId +hQP +nmY +uKH +bUQ bVU bVU bVU @@ -103556,23 +110995,23 @@ aag aag acv aez -agh -afY -apF -apF -apF -agP -agh -aJW -lYA +boL +akY +wrQ +njn +njn +njn +njn +njn +gxm adb adb adb -lYA +gxm asm asm asm -lYA +gxm dtM akU wgd @@ -103596,23 +111035,23 @@ akw alD vEx bYe -biV +akU ajC -czu +gxm alW alW alW -czu +gxm atI atI atI -czu -mOb -qVM -vGk -qVM -teg -baw +gxm +nIN +nIN +nIN +nIN +nIN +nTH sMM baw teg @@ -103657,30 +111096,30 @@ aKS aKU aKS aLL -iIY -bCQ -hhw -gxr -bPW -bbx -bPU -aKW +vtJ +stP +eWs +hKO +eoE +lrH +kdo +wDr aiR aiR aiR -aKW +wDr xpI xpI xpI -aKW +wDr aLG aZi aLG kan -bFb -bFb -kan -aYm +qWS +oDJ +vaQ +iIH rlZ buu rlZ @@ -103700,22 +111139,22 @@ kan buH bHL buH -yhQ +wDr aul aul aul -yhQ +wDr azD azD azD -yhQ -djp -bWM -bWM -avi -asE -nyz -tVB +wDr +ePN +aId +aId +hQP +nmY +xUY +wGe bSf bWe bWn @@ -103759,23 +111198,23 @@ aag aag acf aet -agv -afY -ahp -afY -afY -afY -bLO -bWK -lYA +agS +aiP +aYq +njn +rWz +rWz +rWz +tWM +gxm adb adb adb -lYA +gxm asm asm asm -lYA +gxm dtM akU ajC @@ -103786,8 +111225,8 @@ fnA jZY jZY sqf -vPj -aot +wpu +cGp ajl ajl ajl @@ -103799,22 +111238,22 @@ onQ alD ajl hon -biV +akU ajC -czu +gxm alW alW alW -czu +gxm atI atI atI -czu -ekY -qVM -csz -qVM -qVM +gxm +rgL +rgL +rgL +nTc +nIN gnv yhI tTu @@ -103867,23 +111306,23 @@ aLL aLL aLL aLL -aKW +wDr aiR aiR aiR -aKW +wDr xpI xpI xpI -aKW +wDr aLG aZi aLG kan -bFb -bFb +kAp +dYU kan -aZM +cWm soK gDW rlZ @@ -103903,15 +111342,15 @@ kan buH hop buH -yhQ +wDr aul aul aul -yhQ +wDr azD azD azD -yhQ +wDr bSf bSf auW @@ -103963,22 +111402,22 @@ aag acf aet agB -akY -akY -akY -agP -afY -bLO -ceC -lYA +akW +aYs +njn +rWz +rWz +rWz +rWz +gxm vKF adb adb -lYA +gxm asm asm asm -lYA +gxm dtM aii ajC @@ -103989,8 +111428,8 @@ eDo eDo eDo sqf -jUG -awM +vXv +wub gXl ajl wqW @@ -104002,22 +111441,22 @@ aCp alD ajl wqA -asS +aii ajC -czu +gxm alW alW alW -czu +gxm atI atI xMk -czu -wKn -xCX -hoX -qVM -qVM +gxm +rgL +rgL +rgL +rgL +nIN vpn csI goL @@ -104070,15 +111509,15 @@ coT fgh rZP gmj -aKW +wDr aiR aiR aiR -aKW +wDr xpI xpI xpI -aKW +wDr bxD byI beB @@ -104106,15 +111545,15 @@ biA bJz bHT koc -yhQ +wDr aul aul aul -yhQ +wDr azD azD azD -yhQ +wDr wcN nGi bVd @@ -104165,23 +111604,23 @@ aag aag acv aez -agP +boL akY -aqi +boL avJ -afY -ahl -bLO -bWK -lYA +rWz +rWz +rWz +rWz +gxm adb adb adb -lYA +gxm asm asm asm -lYA +gxm dtM ajt aik @@ -104192,8 +111631,8 @@ xsz jTj jTj sqf -xRh -umC +lmi +xgP dwA wJo cyU @@ -104205,22 +111644,22 @@ akx alD gWG dtM -asS +aii ajC -czu +gxm alW alW alW -czu +gxm atI atI atI -czu -wKn -qVM -csz -qVM -wiz +gxm +rgL +rgL +rgL +rgL +qxz baw sMM baw @@ -104273,15 +111712,15 @@ uUt aLW aLW guS -aKW +wDr aiR aiR aiR -aKW +wDr xpI xpI vgF -aKW +wDr jgU aZi aLG @@ -104295,8 +111734,8 @@ bJw rlZ hBc hzs +bHg hzs -kDj aZK rlZ hYn @@ -104309,15 +111748,15 @@ biA buH bHL wWQ -yhQ +wDr aun aul aul -yhQ +wDr azD azD azD -yhQ +wDr wgR bTO bTO @@ -104368,23 +111807,23 @@ aag aag acv aez -afY +boL akY aqk -avV -afY -afY -bLO -cit -lYA +njn +rWz +rWz +rWz +rWz +gxm adb adb adb -lYA +gxm asm asm asm -lYA +gxm dtM aii ajC @@ -104408,23 +111847,23 @@ akx alD gWG dtM -asS +aii ajC -czu +gxm alW alW alW -czu +gxm atI atI atI -czu -mOb -qVM -vGk -qVM -fwD -baw +gxm +rgL +rgL +rgL +rgL +nIN +xuY sMM baw oby @@ -104476,15 +111915,15 @@ bbS xka uLn uoA -aKW +wDr aiR aiR aiR -aKW +wDr xpI xpI xpI -aKW +wDr aLG aZi aLG @@ -104512,15 +111951,15 @@ biA buH bHL buH -yhQ +wDr aul aul aul -yhQ +wDr azD azD azD -yhQ +wDr hkB bTO qSm @@ -104572,22 +112011,22 @@ aag acf aet agS -akY -akY -akY -afY -agP -bLO -ceC -lYA +aiP +aYq +njn +rWz +rWz +rWz +rWz +gxm adb adb adb -lYA +gxm asm asm asm -lYA +gxm aEI aii ajC @@ -104611,22 +112050,22 @@ hVz alD ajl ahr -asS +aii ajC -czu +gxm alW alW alW -czu +gxm atI atI atI -czu -mOb -qVM -vGk -qVM -qVM +gxm +rgL +rgL +rgL +rgL +nIN gnv yhI tTu @@ -104679,15 +112118,15 @@ rlh aLW aLW gxh -aKW +wDr aiR aiR aiR -aKW +wDr xpI xpI xpI -aKW +wDr aLG aZi mzR @@ -104715,15 +112154,15 @@ biA buH bHL buH -yhQ +wDr aul aul aul -yhQ +wDr azD azD azD -yhQ +wDr wjC bTO xMf @@ -104774,23 +112213,23 @@ aag aag acf aet -ahl -afY -afY -afY -afY -afY -bLO -bWK -lYA +afB +akW +biT +njn +njn +njn +njn +njn +gxm adc adc adc -lYA -lYA -lYA -lYA -lYA +gxm +gxm +gxm +gxm +gxm kYU akU rxG @@ -104814,22 +112253,22 @@ nMV vIf ajl aEI -biV +akU gMa -czu -czu -czu -czu -czu +gxm +gxm +gxm +gxm +gxm adc adc adc -czu -yji -qVM -gMA -qVM -qVM +gxm +nIN +nIN +nIN +nIN +nIN crh csI qhb @@ -104882,15 +112321,15 @@ djQ nFs aLW gFa -aKW +wDr aiR aiR aiR -aKW +wDr xpI xpI xpI -aKW +wDr aLG aZi aLG @@ -104918,15 +112357,15 @@ biA buH bHL buH -yhQ +wDr aul aul aul -yhQ +wDr azD azD azD -yhQ +wDr xad roG mZr @@ -104977,16 +112416,16 @@ aag aag acv aez -agh -ahp -afY +boL +boL +boL ahl -agh -ahp -afY -aJW +cWv +cWv +cWv +cWv kaj -aww +uId adH adH fMA @@ -105017,7 +112456,7 @@ aos alE bVE bYe -biV +akU aGd aWl hJu @@ -105026,16 +112465,16 @@ atC aAa aww aww -aww +wst axs -bBC +bbL bbL bYe -yfv +bbL bit baw baw -baw +qYC kwo trb aag @@ -105085,15 +112524,15 @@ aLL aLL aLL hrF -aKW -aKW -aKW -aKW -aKW +wDr +wDr +wDr +wDr +wDr kaF jWU jWU -aKW +wDr pGM aZi aLG @@ -105121,15 +112560,15 @@ biA buH bHL bIR -yhQ +wDr cyG cyG sos -yhQ -yhQ -yhQ -yhQ -yhQ +wDr +wDr +wDr +wDr +wDr bSf bSf auX @@ -105180,16 +112619,16 @@ aag aag acv aez -ahp -agh -arc -arc -arc -afY -agh -aJW +boL +asS +boL +ceu +boL +boL +boL +boL kGL -azY +uTY azY azY azY @@ -105221,24 +112660,24 @@ aSb aEe ait bjJ -aZE -aZE -aZE -aZE -xwG -agl -agl -agl -agl -sHp -wta +abx +abx +abx +abx +atC +azY +azY +azY +fad +kGL +abg abg abg abg ajC baw vbB -baw +ley kwo trb aag @@ -105281,15 +112720,15 @@ aKS aKV aKS aLL -iIY -bCQ -hhw -bPU -bPS -cDe -ipD -rmN -buq +qVE +iGc +bwG +hCk +nRN +mzI +olQ +oCK +eob lGh aQt lDg @@ -105337,9 +112776,9 @@ ckl ckI cla cly -voQ -bVi -tVB +cDx +ndl +iDk bSf bWe bWp @@ -105383,18 +112822,18 @@ aah aah acf acf -aJW +boL ale bDD nub -bDD -ale -aJW +dux +iYr +dux ado +atC kHT avn avn -avn mTb atC avn @@ -105403,25 +112842,25 @@ avn nFr ajt ajC -irA -irA -irA -irA -irA -irA -irA -irA -irA -irA -irA -irA -irA -irA -irA -sqf +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy wMO wky -ajl +sqf hon ajt mce @@ -105432,8 +112871,8 @@ atC mTb avn avn -avn -avn +aim +atC avn bYe cre @@ -105441,7 +112880,7 @@ avn aim baw dBp -baw +gVA tQV tQV aah @@ -105484,15 +112923,15 @@ aKR aKR aKR aKR -aSm -aLf -tps -aLf -aLf -xlD -nMz -aSm -hhw +deq +lfx +jgK +lfx +lfx +yih +kgD +deq +bwG aNn aNO asO @@ -105540,9 +112979,9 @@ ckm bHa clb clz -fiq -gqK -oed +mJO +vDN +xbg bVU bVU bVU @@ -105585,15 +113024,15 @@ aaa aaa aaa aaa -lYA -aar -aar -aar -aar -tiM -aar -tiM -aar +acf +aet +aet +biV +biV +ekY +aet +ekY +aet abE abE abE @@ -105606,46 +113045,46 @@ abE jKK pjM aim -irA +vOy nos fcy -fcy -fcy +drT +ipQ lZZ -hEU +vOy oDL nEH vAQ -irA +qIL ncE vWt kNx -irA +vOy ayX -aos -wky -ajl +kXw +pxo +sqf kHT pjM aim -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -gMA -qVM -qVM -qVM -qVM -qVM -qVM -czu +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +oiq +mRU +mRU +mRU +mRU +mRU +mRU +woU aaa aaa aaa @@ -105686,10 +113125,10 @@ aaa aaa bdH aad -aKW -aSm -aLf -hhw +kyw +deq +lfx +bwG aQF aQF aQF @@ -105711,7 +113150,7 @@ iMI rlZ rlZ rlZ -vEI +qep cnr qqK qqK @@ -105737,16 +113176,16 @@ ssE azG uxZ vgk -fiq -fiq -fiq +mJO +mJO +mJO bTq -fiq -fiq -fiq -oDf -oed -yhQ +mJO +mJO +mJO +mgb +xbg +lyW ajZ bdH aaa @@ -105788,15 +113227,15 @@ aaa aaa aaa aaa -lYA -ahs +acv +aiH alf arp -aar -aap -aao -aap -aar +arp +aiH +aiH +aiH +aet kPB aci aci @@ -105809,46 +113248,46 @@ abE atL akV atL -irA -icM -oFj -iYf -pNP +vOy oNp -ruc +aSn +lYL +pNP +kCj +vOy nLI -dGB +rDV dwr -kbf -kBP +rDV +mTd gQF -aID -aMd +xXr +vOy niL kXw pxo -ajl +sqf atL bkQ atL -qVM -iBt -iBt -iBt -iBt -iUZ -awE -pQu -kmL -qVM -csz -qVM -nLb -pUi -wLk -bIN -lbb -czu +mRU +qSw +qSw +qSw +qSw +fHM +pBG +rLp +ttX +mRU +vpf +mRU +vor +qnA +vkI +gNN +lyz +woU aaa aaa aaa @@ -105889,10 +113328,10 @@ aaa aaa bdH aad -aKW -uDB -aLf -hhw +kyw +xwd +lfx +bwG weR aPE weR @@ -105913,12 +113352,12 @@ kan avW bZn dXr -tUv +uay vhX gDW rlZ rlZ -pnC +wYr dBH bky ryt @@ -105940,16 +113379,16 @@ bJt bJt bJt bJt -fiq -uaa -uaa -uaa -uaa -cmX -fiq -oDf -oDf -yhQ +mJO +plv +plv +plv +plv +mvg +mJO +mgb +mgb +lyW ajZ bdH aaa @@ -105991,15 +113430,15 @@ aaa aaa aaa aaa -lYA -ahu +acv +aiH alg -arp -aar -aap -aao -aap -aar +bBC +bBC +aIx +aIB +aiH +aet kPZ acI acj @@ -106012,46 +113451,46 @@ agA ago snm cwJ -irA -icM +vOy +anz vgx hme mzq -oNp -ovG -dGB -dGB +qJy +vOy +vti +vti fBO -kbf +vti gGx -iUo -fBO +vti +lid lJv aCC -akw -wky +kXw +pxo asn ago asW cwJ -qVM -iBt -iBt -iBt -iBt -iBt -awE -cvj -rjH -qVM -vGk -qVM -fdj -qYW -oTz -vGk -xae -czu +mRU +qSw +qSw +qSw +qSw +qSw +pBG +jZU +jAe +mRU +jtU +mRU +tNw +ebI +ukC +jtU +fCi +woU aaa aaa aaa @@ -106092,14 +113531,14 @@ aaa aaa bdH aad -aKW -aSm -aVt -hhw -aNr -aOi -pbb -pbb +kyw +deq +cGY +bwG +rUq +rUq +sab +sab izk aWD cWr @@ -106140,19 +113579,19 @@ bJt xOL gGI eeu -nbB -ksA +gfq +eFP gAz -fiq -uaa -uaa -uaa -uaa -uaa -fiq -oed -bxX -yhQ +mJO +plv +plv +plv +plv +plv +mJO +xbg +pgJ +lyW ajZ bdH aaa @@ -106194,15 +113633,15 @@ aaa aaa aaa aaa -lYA -ahx -aap +acf +aet +avx ahN -aar -awJ -aao +uli +uli +uli bWf -aar +aet lwC aTT acl @@ -106215,46 +113654,46 @@ uZZ bYe amO avj -irA -icM -hqL -mab +vOy +awQ +oLU +thN vDa -oNp -pEJ +vOy +vOy qfy inL oiY -irA -iQo -dGB +ueJ +ueJ +oDi trF -irA +lJv edv -akw -wky +kXw +pxo asn ayT akU avj -qVM -iBt -iBt -iBt -iBt -iBt -awE -jZU -iiz -qVM -oLw -qVM -qVM -qVM -xeG -qVM -qVM -czu +mRU +qSw +qSw +qSw +qSw +qSw +pBG +cVq +nOb +mRU +vpI +mRU +mRU +mRU +gBs +mRU +mRU +woU aaa aaa aaa @@ -106295,12 +113734,12 @@ aaa aaa bdH aad -aKW -bhC -bPT -hhw -jKh -pbb +kyw +deq +veq +bwG +pKh +sab rDv bmW jWu @@ -106346,16 +113785,16 @@ jge bDs bDs hLC -fiq -uaa -uaa -uaa -uaa -uaa -fiq -oed -uqH -yhQ +mJO +plv +plv +plv +plv +plv +mJO +xbg +mgb +lyW ajZ bdH aaa @@ -106397,15 +113836,15 @@ aaa aaa aaa aaa -lYA -ahy -aap -aao -aar -pmn -aao -bWj -aar +acf +aet +avV +uli +uli +uli +mov +bWq +aet lhX aXc acl @@ -106418,52 +113857,52 @@ agq ahM kSJ avj -uXj +vOy hng dnC hPN vCk qEn -lmE +qam riE gAS -fxY -irA -hVO -dGB +lMv +dVu +eSo +qmD aIC -irA +lJv aCt -aCC -wky +kXw +pxo asn ayT aii avm -qVM -iBt -iBt -iBt -iBt -iBt -awE -aGt -ijn -qVM -vGk -vGk -gYS -weU -csz -eGz -csz -czu -aaa -aaa -aaa -aaa -aaa +mRU +qSw +qSw +qSw +qSw +qSw +pBG +dzp +ngV +mRU +jtU +jtU +uBx +fLi +vpf +prf +vpf +woU aaa +aac +aaf +aaf +aaf +ajY aaa aaa aaa @@ -106484,24 +113923,24 @@ aaa aab aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa bdH aad -aKW -aSm -xCm -hhw +kyw +deq +deF +bwG mTi lJK kYV @@ -106543,30 +113982,30 @@ buH bHL buH lhB -nbB +xCb bDs bIJ bDs bDs qJS -fiq -uaa -uaa -uaa -uaa -uaa -fiq -oed -oed -yhQ +mJO +plv +plv +plv +plv +plv +mJO +xbg +xbg +lyW ajZ -bdH -aaa -aaa -aaa -aaa -aaa aaa +avo +avo +avo +avo +avo +avo aaa aaa aaa @@ -106587,6 +114026,8 @@ aab aaa aaa aaa +bdH +bdH aaa aaa aaa @@ -106598,17 +114039,15 @@ aaa aaa aaa aaa -aaa -aaa -lYA -fZF -alr -aao -sMs -aao -aao +acv +aez +uli +aIx +uli +uli +mov bWq -aar +aet lhX eYM uuR @@ -106621,54 +114060,54 @@ agA ayT ajt avm -uXj -uVi -hER -dGB -hER +vOy +xyt +wiW +tOr +dBj wei kBP -dGB -dGB +kBP +jsx tjn -irA -irA +aCC +kXw pQP -irA -irA +qAT vOy -eNP -hUR -ajo +vOy +mFq +vqW +sqf ybf aii avj -qVM -awE -awE -awE +mRU +pBG +pBG +pBG nec -awE -awE -xJC -awE -qVM -qVM -qVM -qVM -qVM -qVM -vGk -csz -czu -aaa -aaa -aaa -aaa -aaa -aaa -aaa +pBG +pBG +saL +pBG +mRU +mRU +mRU +mRU +mRU +mRU +jtU +vpf +woU aaa +aad +aag +aag +aag +aag +aaf +ajY aaa aaa aaa @@ -106687,29 +114126,29 @@ aaa aab aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa bdH aad -aKW -aSm -xnY -hhw +kyw +deq +oWq +bwG aQF aQF aPH xIQ -hvQ +tmX aWD rrK aRy @@ -106759,18 +114198,18 @@ bJt bJt bJt bJt -oed -oDf -yhQ +xbg +otW +lyW ajZ -bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa +avo +avo +avs +avs +avs +avs +avo +avo aaa aaa aaa @@ -106790,6 +114229,8 @@ aab aaa aaa aaa +bdH +bdH aaa aaa aaa @@ -106801,17 +114242,15 @@ aaa aaa aaa aaa -aaa -aaa -lYA -aar -aar -aar -aar -aap -aao -aap -aar +acv +aez +uli +uli +uli +uli +uli +aiH +aet lhX acl acl @@ -106824,19 +114263,19 @@ abE aTL ajt avj -uXj -xyt -dGB -dGB -dGB -dGB -dGB -dGB -dGB -rSD -irA -aEZ -aoM +vOy +iYf +bIM +wPz +iUo +vOy +xqp +lzA +vkp +tjn +aCC +kXw +vtm emK fGu hPe @@ -106847,31 +114286,31 @@ ahM kSJ avj cGr -awE -fUn -wQv -rne -guC -ecQ -whZ -awE +pBG +gqQ +cHG +nQA +wph +pyx +lKO +pBG lEf gel gel gel fkX -qVM -vGk -ofs -czu -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +mRU +jtU +tMU +woU +aaf +aag +aag +aag +aag +aag +aag +ajZ aaa aaa aaa @@ -106890,8 +114329,8 @@ aaa aab aaa aaa -aaa -aaa +bdH +bdH bdH bdH bdH @@ -106904,10 +114343,10 @@ bdH bdH bdH aad -aKW -uDB -aLf -hhw +kyw +xwd +lfx +bwG weR aPE izk @@ -106955,25 +114394,25 @@ gSk bDs bDs bDs -jip +xjb fbo duo iIl bDs ujV bJt -oed -bxX -yhQ +xbg +xbg +lyW ajZ -bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa +avo +avs +avs +hAG +vtr +avs +avs +avo aaa aaa aaa @@ -106993,6 +114432,8 @@ aab aaa aaa aaa +bdH +bdH aaa aaa aaa @@ -107004,17 +114445,15 @@ aaa aaa aaa aaa -aaa -aaa -lYA -aao -aao -acD -aao -aap -aao -aap -aar +acf +ahy +avZ +ipK +ipK +ipK +uli +bWf +aet lhX acl acl @@ -107027,54 +114466,54 @@ agA ayT akU avj -uXj +vOy mTp -eoz -dGB -eoz +wiW +wPz +jeq rQy -eoz -dGB -eoz -eSo -irA -ftG -aoM -aoM -vqW +wWR +ycj +vkp +cfT +hec +gNp +hVf dVu -aRc -aRc -aPJ +rmc +lON +dVu +oDR +vOP bYe bnD aWH aYn -bVB -bXv -bXv -bph -rEm -rne -bYj -xne +qvL +wmP +wmP +dRP +eFY +nQA +eAN +xqQ rfb cXF rLU dKp cHu -qVM -vGk -csz -czu -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +mRU +jtU +vpf +woU +aag +aag +aag +aag +aag +aag +aag +ajZ aaa aaa aaa @@ -107093,8 +114532,8 @@ aaa aab aaa aaa -aaa -aaa +bdH +bdH bdH bdH bdH @@ -107107,12 +114546,12 @@ bdH bdH bdH aad -aKW -aSm -gfS -hhw -lHc -pbb +kyw +deq +sJa +bwG +pGG +sab izk hds aQF @@ -107163,20 +114602,20 @@ jFE jFE idx hAz -fhQ +gHj bJt -vhI -oDf -yhQ -ajZ -bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa +oqI +xbg +avo +avo +avo +avs +rKn +awa +awa +umm +avs +avo aaa aaa aaa @@ -107196,6 +114635,8 @@ aab aaa aaa aaa +bdH +bdH aaa aaa aaa @@ -107207,17 +114648,15 @@ aaa aaa aaa aaa -aaa -aaa -lYA -aao -aar -aar -aar -aar -aar -aao -aar +acf +aet +aIx +ipK +ceC +eRR +uli +bWq +aet loV acK acm @@ -107230,21 +114669,21 @@ agA ayT akU avj -uXj -nos -oLU -ekF +vOy +axn +dRh +ydE bST -jCG -oLU +rQy +vOy vdO -bST -lZZ -irA -kex -aoM +vkp aoM -aMg +kBo +kBP +naR +vOy +hrn vOy aRd aIo @@ -107252,32 +114691,32 @@ vOy qLK akU avj -kpl -awE -xgr -bYj -btz -bsc -iaj -bYj -xne +eAT +pBG +lvb +eAN +jVg +rGU +xCf +eAN +xqQ rLv bHk vZw bHk cHu -qVM -csz -qVM -czu -aaa -aac -aaf -aaf -aaf -ajY -aaa -aaa +mRU +vpf +mRU +woU +aag +aag +aag +aag +aag +aag +aag +ajZ bdH bdH aaa @@ -107296,8 +114735,8 @@ aaa aab aaa aaa -aaa -aaa +bdH +bdH bdH bdH bdH @@ -107310,10 +114749,10 @@ bdH bdH bdH aad -aKW -aLf -aSm -tps +kyw +lfx +deq +jgK aNs aNs hyw @@ -107360,26 +114799,26 @@ nFI qdk vzP bJt -fEo +hjB bJt -dpn +xfK bDs gSk bDs -pdt +bpI bJt -kTq -oed -yhQ -ajZ -aaa -avo -avo -avo -avo -avo +jLH +xbg +lpy +avC +avC +wEg +axa +axa +dSZ +oMs +avs avo -aaa bdH aaa aaa @@ -107399,6 +114838,8 @@ aab aaa aaa aaa +bdH +bdH aaa aaa aaa @@ -107410,17 +114851,15 @@ aaa aaa aaa aaa -aaa -aaa -lYA -aap -aar -aru +acf +aet +uli +ipK awe -fZF -aar -aap -aar +fwD +uli +oGy +aet lhX acl acl @@ -107433,20 +114872,20 @@ agA ayT akU avj -irA -icM -oFj -gLB +vOy +aAr +pGK tpa -ruV -oFj -gLB -hqw -oNp -irA +tpa +tpa +vOy +dHV +vkp +jUM +lou eBO -aoM -aoM +pRn +vOy ayZ aCD hFC @@ -107455,32 +114894,32 @@ vOy ayT akU avj -awE -awE -bqy -bYj -eUR -bsd -nDh -bYj -xne +pBG +pBG +hEl +eAN +fQS +oGY +neT +eAN +xqQ cNH vzp vZw erd cHu -qVM -hoX -qVM -czu -aaa -aad +mRU +vzB +mRU +woU aag aag aag aag -aaf -ajY +aag +aag +aag +ajZ bdH bdH aaa @@ -107499,8 +114938,8 @@ aaa aab aaa aaa -aaa -aaa +bdH +bdH bdH bdH bdH @@ -107513,10 +114952,10 @@ bdH bdH bdH aad -aKW -eWY -aSm -hhw +kyw +txp +iGc +bwG vMr vMr izk @@ -107571,18 +115010,18 @@ gSk reL wiI bJt -nnr -eHf -yhQ -ajZ +tqV +dSm +avo avo avo avs -avs -avs +awa +awa +awa +qUp avs avo -avo bdH aaa aaa @@ -107602,6 +115041,8 @@ aab aaa aaa aaa +bdH +bdH aaa aaa aaa @@ -107613,17 +115054,15 @@ aaa aaa aaa aaa -aaa -aaa -lYA -wFm -aar -ary -awh +acf +aet +avx +ipK ipK -aar -wFm -aar +ipK +uli +bWq +aet lhX acl acl @@ -107636,20 +115075,20 @@ abE aTL aii avj -irA -icM -hyp -hme -hyp -ruV -hyp -hme -hyp -oNp -irA +vOy +aID +gLc mKx -aoM -aoM +iit +kZV +vOy +vOy +oIr +vOy +wdo +vOy +vOy +vOy qqQ aoM aoM @@ -107658,25 +115097,25 @@ kgs ayT aii avj -aYp -aWS -bYj -bYj -btz -rne -rne -bYj -xne +bvX +ojQ +eAN +eAN +jVg +nQA +nQA +eAN +xqQ rfb bHk vZw bHk cHu -qVM -csz -qVM -czu -aaf +mRU +vpf +mRU +woU +aah aag aag aag @@ -107702,8 +115141,8 @@ aaa aab aaa aaa -aaa -aaa +bdH +bdH bdH bdH bdH @@ -107716,10 +115155,10 @@ bdH bdH bdH aad -aKW -wyO -lpX -hhw +kyw +cme +whm +bwG mTi lJK izk @@ -107774,15 +115213,15 @@ gSk bDs vwI bJt -koz -oed -yhQ +lAa +mgb +lyW ajZ avo avs avs -hAG -vtr +loK +wpg avs avs avo @@ -107805,8 +115244,8 @@ aab aaa aaa aaa -aaa -aaa +bdH +bdH aaa aaa aaa @@ -107818,15 +115257,15 @@ aaa bdH aaa aaa -lYA -aap -sMs -ahN -aap -aKc -aar -aap -aar +acv +aez +uli +uli +uli +uli +uli +oWz +aet lhX gsZ uxO @@ -107839,54 +115278,54 @@ agA ayT aii avj -irA -icM +vOy +aMd pGK -hme -hyp -ruV -cbg -hme +pRX +mHD +pRX +vOy +jFf vkp -oNp -irA +jrM +mWs lmw -bPF -aoM -qqQ -aAT -aoM +vOy +dyb +tsM +prx +fpT eVT kgs ayT aii avj -aYp -aZJ -baD -baD -tsH -bqw -bqw -hiB -xne +bvX +kVV +vQR +vQR +epJ +jML +jML +fnH +xqQ rLv pRy wwW mRW cHu -qVM -vGk -csz -czu -aag -aag -aag +mRU +jtU +vpf +woU +aaa +aad aag aag aag aag -ajZ +aah +afm bdH bdH aaa @@ -107905,8 +115344,8 @@ aaa aab aaa aaa -aaa -aaa +bdH +bdH bdH bdH bdH @@ -107919,15 +115358,15 @@ bdH bdH bdH aad -aKW -aVt -eZz -hhw +kyw +cGY +ipn +bwG aQF aQF sPc xIQ -pbb +sab aWD olM aRy @@ -107975,19 +115414,19 @@ rBj bDs gSk bDs -oMd +fUB bJt -oDf -oed -avo +mgb +nhw +lyW +ajZ avo avo avs -rKn -awa -awa -umm avs +avs +avs +avo avo bdH aaa @@ -108008,8 +115447,8 @@ aab aaa aaa aaa -aaa -aaa +bdH +bdH aaa aaa aaa @@ -108021,15 +115460,15 @@ aaa bdH bdH aaa -lYA -uaZ -aar -arI -ahg +acv +aez +aIB +aKg +uli uli -aar -aap -aar +mov +bWq +aet lhX kNO acl @@ -108042,54 +115481,54 @@ uZZ bYe aii avj -irA -icM -hyp -hme -hyp -ruV -hyp -hme -hyp -oNp -irA +vOy +aMg +aSo +pRX +mHD +tzL +vOy +vqZ +vkp +rDr +usy nDo -mSK -aqQ -qqQ +vOy +glB +vkp ger aoM aFf -kgs +mmN ayT aii avj -aYp -sQL -dpV -bXW -bqo -bse -bvc -djL -awE +bvX +maO +lPm +iZV +fdx +cuq +eQJ +fVF +pBG qWR wJH wJH wJH sNR -qVM -vGk -csz -czu -aag -aag -aag -aag -aag -aag -aag -ajZ +mRU +jtU +vpf +woU +aaa +aae +aah +aah +aah +afm +aaa +aaa bdH bdH aaa @@ -108108,8 +115547,8 @@ aaa aab aaa aaa -aaa -aaa +bdH +bdH bdH bdH bdH @@ -108122,10 +115561,10 @@ bdH bdH bdH aad -aKW -cmq -aSm -hhw +kyw +oif +deq +bwG weR aPE izk @@ -108178,20 +115617,20 @@ bJt oKb gSk bDs -pdt +nqO bJt -sIx -oed -lpy -avC -avC -wEg -axa -axa -dSZ -oMs -avs +nQo +pgJ +lyW +ajZ +aaa +avo +avo +avo avo +avo +avo +aaa bdH aaa aaa @@ -108211,8 +115650,8 @@ aab aaa aaa aaa -aaa -aaa +bdH +bdH aaa aaa aaa @@ -108224,15 +115663,15 @@ aaa bdH aaa aaa -lYA -ahN -aar -aar -aar -aar -aar -aao -aar +acf +aet +aJJ +aIB +uli +uli +mov +bWq +aet lwC tIK acl @@ -108245,54 +115684,54 @@ eWF bYe aii avj -irA -icM -hqL -thN -wPz -ruV -hqL -thN -wPz -oNp -irA +vOy +aQZ +bkT +pRX +mHD +pRX +vOy +foP +sZy +vEr +irU bVe -ipQ -aqR -qqQ +vOy +ggl +jjS qMP -aoM +kBP aSl vOy aTL aii avm -awE -awE -awE -awE -mZA -awE -awE -awE -awE -awE -qVM -qVM -qVM -qVM -qVM -vGk -ofs -czu -aag -aag -aag -aag -aag -aag -aag -ajZ +pBG +pBG +pBG +pBG +qRr +pBG +pBG +pBG +pBG +pBG +mRU +mRU +mRU +mRU +mRU +jtU +tMU +woU +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH bdH bdH aaa @@ -108311,8 +115750,8 @@ aaa aab aaa aaa -aaa -aaa +bdH +bdH bdH bdH bdH @@ -108325,12 +115764,12 @@ bdH bdH bdH aad -aKW -xxe -aLf -hhw -aQI -aQI +kyw +byt +lfx +bwG +iWQ +iWQ uFd mUq qwt @@ -108383,18 +115822,18 @@ cnu bDs knK bJt -oed -eep -avo -avo -avo -avs -awa -awa -awa -qUp -avs -avo +xbg +oUZ +lyW +ajZ +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH bdH aaa aaa @@ -108414,8 +115853,8 @@ aab aaa aaa aaa -aaa -aaa +bdH +bdH aaa aaa aaa @@ -108427,15 +115866,15 @@ aaa bdH aaa aaa -lYA -cIU -aao -sMs -aao +acf +aet +avx +ahN +aIB aKg -aYM -aao -aar +uli +bWf +aet abK acL acn @@ -108448,54 +115887,54 @@ agA ayT akU avj -irA -hng -lea -lea -lea -pRX -lea -lea +vOy +dVd lea -qEn -irA -awQ -jeq -aqR -qqQ -aoM -aoM -aSn +hKl +lDN +kZV +vOy +vOy +eNI +eNI +eNI +vOy +vOy +hRa +vti +vti +vti +aEZ vOy ayT akU avj -aCv -baa -fqe -bXx -bqo -awE -tnm -dhQ -qyz -awE -vGk -vGk -gYS -vzl -csz -vGk -csz -czu -aah -aag -aag -aag -aag -aag -aag -ajZ +fKh +gQk +trU +oNY +fdx +pBG +pVF +ppF +fiE +pBG +jtU +jtU +uBx +ycM +vpf +jtU +vpf +woU +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH bdH bdH aaa @@ -108514,8 +115953,8 @@ aaa aab aaa aaa -aaa -aaa +bdH +bdH bdH bdH bdH @@ -108528,14 +115967,14 @@ bdH bdH bdH aad -aKW -dgN -aLf -hhw -aQI -aQI -aQI -hcZ +kyw +jNo +lfx +bwG +iWQ +iWQ +sab +aNr pQY aWD bll @@ -108548,27 +115987,27 @@ aQF aLG aYO aLG -bCf +tda ngI dkq lRZ -wvl +acc beH beH dwl bdd bdd -ukW +gac bdd bdd aMt beH beH -wvl +acc qby btY bAJ -dGW +huU buH bHL buH @@ -108586,18 +116025,18 @@ gSk ljG tSp bJt -oed -oDf -yhQ +xbg +ssk +lyW ajZ -avo -avs -avs -loK -wpg -avs -avs -avo +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH bdH aaa aaa @@ -108617,8 +116056,8 @@ aab aaa aaa aaa -aaa -aaa +bdH +bdH aaa aaa aaa @@ -108630,15 +116069,15 @@ aaa bdH aaa aaa -lYA -ahW -aao -aar -aao -aap -aap -aap -sMs +acv +aiH +uli +bLO +bLO +bLO +bLO +aiH +qga eAU eAU eAU @@ -108651,21 +116090,21 @@ abE giB akU avj -irA -irA -irA -irA -irA -irA -irA -irA -ylc -wKP +vOy +vOy +vOy +mSK +mSK +mSK +vOy +vOy +ccc wKP -hKl -hKl +ylc +vOy +vOy rhO -qqQ +pgM nPE oqZ uaI @@ -108673,32 +116112,32 @@ vOy atV akU avj -aCv -bac -dWz -bYj -bqo -aRD -aGt -byp -uTN -awE -vGk -qVM -qVM -qVM -qVM -csz -qVM -czu -aaa -aad -aag -aag -aag -aag -aah -afm +fKh +iuG +sOv +eAN +fdx +gAk +dzp +rMT +dzp +pBG +jtU +mRU +mRU +mRU +mRU +vpf +mRU +woU +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH bdH bdH aaa @@ -108731,10 +116170,10 @@ bdH bdH bdH aad -aKW -bhC -aLf -hhw +kyw +deq +lfx +bwG mTi lJK mTi @@ -108779,28 +116218,28 @@ bJt wbC lHu oiL -loY +qBM wXI nUd lkd -oMd +xOT bDs gSk oDE bJt bJt -oed -uqH -yhQ +xbg +mgb +lyW ajZ -avo -avo -avs -avs -avs -avs -avo -avo +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH bdH aaa aaa @@ -108820,6 +116259,8 @@ aab aaa aaa aaa +bdH +bdH aaa aaa aaa @@ -108830,18 +116271,16 @@ aaa aaa aaa aaa -bdH aaa -aaa -lYA +acv aiH -aao -aar +aiH +bWd awi -aao -aao -aao -aar +bWd +mOb +aiH +aet aBD acU uPr @@ -108857,51 +116296,51 @@ ali amD cwJ vOy -wWm -mHD -bkT -amk -axn -ayY +vOy +vOy +vOy +vOy +vOy eNI -dEl -uqd -aLP -aqR -aQZ -dBj -drT -aSo +eNI +eNI +vOy +vOy +vOy +vOy +vOy +vOy +vOy vOy vIN aii avj -aCv -ilv -rne -rne -gEK -eHj -bvl -byq -maq -awE -vGk -qVM -riM -rGl -qVM -hoX -qVM -czu -aaa -aae -aah -aah -aah -afm -aaa -aaa +fKh +ubI +nQA +nQA +jvM +pLa +nTR +gDp +rwq +pBG +jtU +mRU +oyO +nve +mRU +vzB +mRU +woU +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH bdH bdH aaa @@ -108934,10 +116373,10 @@ bdH bdH bdH aad -aKW -aSm -aLf -hhw +kyw +xbI +lfx +bwG aQF aQF aQF @@ -108947,10 +116386,10 @@ aQF aQF aQF aQF -ktB -gCd -eJg -hhw +wYG +yhR +gHi +bwG aeb alx aeb @@ -108981,8 +116420,8 @@ bCj rde vjC iMm -xeP -fSG +mJi +iMm iMm mkc bJt @@ -108991,19 +116430,19 @@ bDs gSk luS bJt -iGg -oed -bxX -yhQ +uCw +xbg +mgb +lyW ajZ -aaa -avo -avo -avo -avo -avo -avo -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH bdH aaa aaa @@ -109033,14 +116472,14 @@ aaa aaa aaa aaa -bdH aaa aaa -lYA -aiP -aao -aar -awJ +aaa +vHn +cGd +moK +cGd +cGd aNi aNi bWr @@ -109060,43 +116499,43 @@ abx abx avj vOy -ecx -elH -elH -aLP -cSK +elR +xXh +xXh +xXh +dMK aCR aAT aNY -aFf -aLP -aqR -krq -ajo +elR +xXh +xXh +xXh +dMK vOy vOy vOy ayT aii avj -awE -ceo -rne -rne -wft -awE -awE -awE -awE -awE -vGk -xCX -vGk -csz -qVM -csz -qVM -czu +pBG +mGT +nQA +nQA +vEG +pBG +pBG +pBG +pBG +pBG +jtU +rXF +jtU +vzB +mRU +kuK +mRU +woU aaa aaa aaa @@ -109137,23 +116576,23 @@ bdH aaa bdH aad -aKW -aSm -aSm -hhw -baY -bfb -bNz -dIR -yky -hhw -xnY -xnY -aSm -aLf -aLf -soZ -hhw +kyw +deq +deq +bwG +tEu +mUY +vOw +ouU +dro +bwG +gSH +xJp +qxJ +hCk +deq +nRN +bwG bwd auv bwd @@ -109181,31 +116620,31 @@ bCh bCi bCo bCi +ejw +xML +iMm +jSy +wGb +iMm +rjn bJt -hzP -vdU -owN -vdU -vdU -jjK -lkd wUX bDs gSk vSp -xtC -qgH -oDf -oDf -yhQ +lHG +kOJ +mgb +mgb +lyW ajZ bdH -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -109229,21 +116668,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa bdH -aaa -aaa -lYA -aiS -aao -aar -aao +bdH +aac +aaf +aaf +aaf +aaf +aaf +aaf +aaf +vHn +ejV +hoT +hoT +vyh aNi cYT aNm @@ -109263,51 +116702,51 @@ all amK avj vOy -tvu -bnL -bnL -aLP -aqO -aoM -mtI -aoM -ncB -aLP -aqR +wWz +vHO +ruc +uvP +wTM +dNq +vVs +aFa +wWz +liY +ruc xOY -nCc +wTM vOy nzA amD ajr aii avm -awE -hfm -rne -rne -fAo -awE -bhM -wQv -sDL -awE -ieH -qVM -tUI -mcV -qVM -vGk -csz -czu -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +pBG +tGT +nQA +nQA +jDO +pBG +aYH +cHG +cOY +pBG +mSM +mRU +gRc +oOp +mRU +jtU +vpf +woU +aaf +aaf +aaf +aaf +aaf +aaf +aaf +ajY aaa aaa aaa @@ -109332,83 +116771,83 @@ bdH bdH bdH bdH -bdH -bdH -bdH -bdH -bdH -aaa -bdH -aad -aKW -aSm -aLf -hhw -beG -bgF -jQA -bgF -kvN -hhw -aSm -aLf -aSm -aSm -aLf -aSm -hhw -aLG -aYO +aac +kyw +kyw +kyw +kyw +kyw +kyw +kyw +kyw +deq +caq +bwG +igb +cpz +ooA +kpj +sBY +wyG +qjL +kpj +rAo +lka +kpj +kpj +mQY +aem +mUa aLG -bCf +tda mng wTm wCI -wvl +acc beH beH beH -wvl +acc mng wTm wCI -wvl +acc beH beH beH -wvl +acc mng wTm wCI -bCf +tda buH bHL buH -ejw -qyK -vdU -owN -vdU -vdU -pJb -lkd +bJt +swE +wpI +ocm +wpI +wnL +kHd +bJt hSw qxE rui vSp bJt -wuH -oed -vgQ -yhQ -ajZ -bdH -aaa -aaa -aaa -aaa -aaa -aaa +uXU +xbg +nhw +lyW +lyW +lyW +lyW +lyW +lyW +lyW +lyW +ajY aaa aaa aaa @@ -109432,21 +116871,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa bdH -aaa -aaa -lYA -aiT -aap -aar -aap +bdH +aad +aag +aag +aag +aag +aag +aag +aag +vHn +dGg +tob +hoT +tob aNi aZe aNm @@ -109466,51 +116905,51 @@ aEX aii avm vOy -aml +wWz anw -uhV +wLy jlG aqP kCE -kCE +wLN npt xuE hqh wLy eiE -wuP +wTM vOy ayT akT amC bKe avj -aCv -eYW -rne -rne -wft -emO -bYj -bYj -bYj -awE -csz -qVM -qVM -qVM -qVM -oLw -csz -czu -aaa -aaa -aaa -aaa -aaa -aaa -bdH -aaa +fKh +eYn +nQA +nQA +vEG +mlP +eAN +eAN +eAN +pBG +vpf +mRU +mRU +mRU +mRU +vpI +vpf +woU +aag +aag +aag +aag +aag +aag +aag +ajZ aaa aaa aaa @@ -109535,33 +116974,33 @@ bdH bdH bdH bdH -bdH -bdH -bdH -bdH -bdH -aaa -bdH -aad -aKW -uDB -aLf -ahU -beI -bTQ -qoX -jfm -lYu -maw -fAS -jfm -jfm -fAS -jfm -jfm -bUP -aem -mUa +kyw +kyw +hCk +maK +lfx +lfx +lfx +deq +deq +deq +lfx +eYp +lfx +vmq +cqH +tjO +bdd +bdd +bdd +bdd +bdd +bdd +bdd +bdd +bdd +teH +aYO xNB bdd vuA @@ -109573,7 +117012,7 @@ fUA qYZ bdd vuA -tXG +fnx vuA bdd qCc @@ -109586,32 +117025,32 @@ vuA bdd bSj bHL -buH -ejw -xML -vdU -jcl -iHO -vdU -rjn -bJt -bJt +bIR +bdd +bdd +bdd +bdd +bdd +bdd +bdd +bdd +bdd bJt cDC -oWX +vuF bJt bJt -oDf -sHg -yhQ -ajZ -bdH -bdH -aaa -aaa -aaa -aaa -aaa +xbg +mgb +mgb +mgb +gLm +ttD +mgb +mgb +mgb +lyW +lyW aaa aaa aaa @@ -109635,21 +117074,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa bdH -aaa -aaa -lYA -aiU -aap -aar -aap +bdH +aad +aag +aag +aag +aag +aag +aag +aag +vHn +oSG +tob +tob +tob aNi aZr aNm @@ -109669,17 +117108,17 @@ ybf ajt avj vOy -amm -bnL -bnL -aPJ -aqQ -aoM -aoM -avA -grN +wWz +ovG +gxP aPJ -aqQ +wTM +apS +wse +aFa +wWz +ual +gxP aOe wTM vOy @@ -109688,32 +117127,32 @@ akU abg abg avj -aCv -aSP -rne -rne -wft -awE -hpf -byY -igp -awE -hoX -qVM -oks -wdH -qVM -vGk -ofs -czu -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +fKh +wvo +nQA +nQA +vEG +pBG +skR +oxc +nBi +pBG +vzB +mRU +pGh +xEs +mRU +jtU +tMU +woU +aag +aag +aag +aag +aag +aag +aag +ajZ aaa aaa aaa @@ -109738,32 +117177,32 @@ bdH bdH bdH bdH -bdH -bdH -bdH -bdH -bdH -aaa -bdH -aad -aKW -aSm -aMs -hhw -beO -bgH -bgH -bgH -bPV -hhw -aLF -bPV -lGO -oDu -bPU -bPS -hhw -irI +kyw +xJp +lfx +deq +yih +deq +deq +lfx +lfx +lfx +rHq +bwG +nPO +cGB +ugj +fbC +bdd +uvU +xZk +dGU +lgF +eYj +aSp +mho +bdg +aLG awb aLG bdg @@ -109790,31 +117229,31 @@ bdg buH hOR buH -bJt -swE -wpI -ocm -wpI -wnL -kHd -bJt -bJt +bdg +lCE +oZD +lwh +oPz +lCE +xLi +qkY +bdd qXo feq loY aDU bJt -oDf -vFh -yhQ -ajZ -bdH -aaa -aaa -aaa -aaa -aaa -aaa +vAx +mgb +xbg +mgb +xpL +mgb +mgb +xbg +xbg +mgb +lyW aaa aaa aaa @@ -109838,21 +117277,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa bdH -aaa -aaa -lYA -aiZ -aap -aar -aap +bdH +aad +aag +aag +aag +aag +aag +aag +aag +vHn +oeH +tob +hoT +tob aNi aZs aNm @@ -109873,50 +117312,50 @@ ani avj vOy woh -avp +vgO aoJ -aLP -rGR +alk +xAe avH -oeg -aFa -jHs -aLP -aqR -aoM -kHB +wse +cXC +woh +pLO +qxm +vgO +xAe vOy aOP aii aow hee ioX -aCv -aLQ -bYj -bYj -wft -awE -awE -awE -awE -awE -csz -iid -csz -csz -qVM -noV -csz -czu -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +fKh +lDa +eAN +eAN +vEG +pBG +pBG +pBG +pBG +pBG +vpf +tra +vpf +vzB +mRU +iJT +vpf +woU +aag +aag +aag +aag +aag +aag +aag +ajZ aaa aaa aaa @@ -109941,31 +117380,31 @@ bdH bdH bdH bdH -bdH -bdH -bdH -bdH -bdH -aaa -bdH -aad -aKW -bhC -aSm -hhw -bfa -bHM -bWy -iGE -nsY +kyw +deq +lfx nsY nsY +pRT nsY nsY nsY nsY nsY nsY +bwG +bwG +msC +bwG +bdd +xwE +dAQ +tGG +kEs +tGG +bpA +mho +bdg aLG aYO aLG @@ -109993,31 +117432,31 @@ bdg buH bHL buH +bdg +lCE +uek +dkX +qXp +oCl +tPm +kiX +bdd +tLc +rsM +iMm +hTT nsY nsY +nik nsY nsY nsY nsY nsY nsY -nsY -tLc -rsM -iMm -hTT -bJt -oDf -jRn -yhQ -ajZ -bdH -aaa -aaa -aaa -aaa -aaa -aaa +kqb +mgb +lyW aaa aaa aaa @@ -110041,21 +117480,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -lYA -adf -aao -aar -aao +bdH +bdH +aad +aag +aag +aag +aag +aag +aag +aag +vHn +mId +hoT +hoT +hoT aNi jWr aNm @@ -110075,51 +117514,51 @@ bYe ajt avj vOy -qxP -anz -aoJ +vOy +vOy +uqd amk pYo avF coJ iAz cQo -amk +aIP aoK -aAr -xQm +vOy +vOy vOy asp aii avj -qVM -qVM -awE -ntr -bYj -bYj -wft -bvU -dTc -lOl -mkx -awE -ieH -qVM -dYK -csz -iid -csz -qVM -czu -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +mRU +mRU +pBG +aGs +eAN +eAN +vEG +vrJ +xOs +kOH +hIs +pBG +mSM +mRU +tCd +vpf +tra +vpf +mRU +woU +aag +aag +aag +aag +aag +aag +aag +ajZ aaa aaa aaa @@ -110144,31 +117583,31 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -aad -aKW -aLf -aSm -hhw -hhw -hhw -hhw -hhw +kyw +lfx +deq nsY xWT -rSW +kxd jgk nsY rSG -rSW +rur oqS nsY +hsh +cPP +deq +eLH +bdd +eUZ +lCr +lCr +fwM +tGG +lJD +mho +bdg aLG aYO aLG @@ -110196,31 +117635,31 @@ bdg buH bHL buH +bdg +lCE +fMe +sNI +jmn +sgD +kUR +vMM +bdd +hxZ +rsM +iMm +gzV nsY xWT -rSW +kxd viu nsY rSG -whd +qkP oqS nsY -hxZ -rsM -iMm -gzV -bJt -oDf -oed -yhQ -ajZ -bdH -aaa -aaa -aaa -aaa -aaa -aaa +mgb +mgb +lyW aaa aaa aaa @@ -110244,21 +117683,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -lYA -fZF -aao -aar -aao +bdH +bdH +aad +aag +aag +aag +aag +aag +aag +aag +vHn +eDq +jFI +cGd +moK aNi aNi aNi @@ -110281,13 +117720,13 @@ vOy vOy vOy vOy -amk -aqR +vKb +rzN avG -oeg +jbK aOd sXd -amk +aJn vOy vOy vOy @@ -110295,34 +117734,34 @@ vOy meJ amO avj -qVM -csz -awE -qMe -bYj -bYj -dyF -awE -bzs -gbQ -eKK -awE -oLw -qVM -jmR -vGk -qVM -hoX -qVM -czu -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +mRU +vpf +pBG +xiU +xUa +eAN +mLe +pBG +pZH +nnL +lgt +pBG +vpI +mRU +bhV +jtU +mRU +vzB +mRU +woU +aag +aag +aag +aag +aag +aag +aag +ajZ aaa aaa aaa @@ -110347,31 +117786,31 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -aad -aKW -aLf -aSm -hhw -fJA -btk -xwv -eVy +kyw +lfx +deq nsY xWT -wVK +kxd viu nsY iIP -wVK +kxd dDt nsY +exb +deq +deq +qLY +bdd +ljW +bDP +lCr +ijr +lCr +mpn +pZR +bdd beB aYT beB @@ -110399,31 +117838,31 @@ bCx buH bHL buH +bdd +tSF +lsn +kUR +kUR +mkl +gXB +car +bdd +hTf +rsM +oos +sBL nsY xWT -efa +rfT viu nsY dmR -wVK +kxd dDt nsY -hTf -rsM -oos -sBL -bJt -pzi -uNW -yhQ -ajZ -bdH -aaa -aaa -aaa -aaa -aaa -aaa +mgb +xbg +lyW aaa aaa aaa @@ -110447,25 +117886,25 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -lYA -aar -tiM -aar -awJ -bzE -fZF -fZF -fZF +bdH +bdH +aad +aag +aag +aag +aag +aag +aag +aag +vHn +cGd +cGd +cGd +iTQ +lWt +eDq +eDq +eDq aNi aNi aNi @@ -110480,52 +117919,52 @@ aNi asp amO avj -alH +bPF aqG ata vOy apR aqS -kCE -kCE +mnW +nPf vYz awR uoi vOy -aMh -biB -alH +jyJ +niF +bPF aTL akU avj -qVM -csz -awE -awE -awE -hIL -awE -awE -awE -awE -awE -awE -vGk -qVM -qVM -qVM -qVM -csz -qVM -czu -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +mRU +vpf +pBG +pBG +pBG +qIx +pBG +pBG +pBG +pBG +pBG +pBG +jtU +mRU +mRU +mRU +mRU +vpf +mRU +woU +aag +aag +aag +aag +aag +aag +aag +ajZ aaa aaa aaa @@ -110550,33 +117989,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -aad -aKW -rsj -sxe -iQL -glr -mhl -aSm -ylY +kyw +lfx +deq nsY -nNT -fBA -fSF +gsg +vHq +vvY nsY -lmW -mtS -iKa +rNb +bxC +jiU nsY -aLG -aZi +jvt +hiu +deq +vSr +bdd +asr +asr +asr +mki +nYp +fZG +phd +pmv +tBF +fSK aLG nyw bqZ @@ -110600,33 +118039,33 @@ eBg vKe eVv bFu -pIX -buH -nsY -gwO -mtS -guG -nsY -lwA -mtS -iKa -nsY -tuo +omW +bFu +hLS +vKe +vKe +uSH +uwt +rLP +pPA +ycx +bdd +hTf rKO wGb gUf -bJt -ddG -oed -yhQ -ajZ -bdH -aaa -aaa -aaa -aaa -aaa -aaa +nsY +gwM +bxC +pJD +nsY +iSm +bxC +jiU +nsY +mgb +xbg +lyW aaa aaa aaa @@ -110650,87 +118089,87 @@ aaa aaa aaa aaa -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -aao -aap -aap -aao -aap -aap -ahg -aao -aap -aap -aap -aap -aao -acD -aao -aap -aap -rfg +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +hoT +tob +tob +hoT +tob +tob +hqm +hoT +tob +tob +tob +tob +hoT +vyh +hoT +tob +tob +fkK bYe amO bYe -apI +cbg aqG atb vOy -apS -avA +xSY rzN +lCt lto -aqQ -avA -gLc +paa +sXd +gVq vOy -aMi -biB -apI +sLk +niF +cbg bYe akU bYe -xCX -vGk -vGk -csz -vzl -bvY -vGk -vGk -csz -vzl -csz -vGk -vGk -vGk -gYS -weU -vGk -csz -czu -czu -czu -czu -czu -czu -czu -czu -czu -czu -czu -czu +rXF +jtU +jtU +vpf +ycM +tne +jtU +jtU +vpf +ycM +vpf +jtU +jtU +jtU +uBx +fLi +jtU +vpf +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm aaa aaa aaa @@ -110753,22 +118192,9 @@ aaa aac aaf aaf -aaf -aaf -aaf -aaf -aaf -aaf -aaf -aag -aKW -mRc -aLf -hhw -jFe -sxe -xZI -mNZ +kyw +lfx +deq nsY nsY qxC @@ -110778,6 +118204,19 @@ nsY ntx nsY nsY +qWL +kIk +eXD +kMr +bdd +bdd +bdd +bdd +bdd +bdd +bdd +bdd +bdd aLG awb aLG @@ -110805,6 +118244,19 @@ bdg buH hOR buH +bdd +bdd +bdd +bdd +bdd +bdd +bdd +bdd +bdd +tuo +rsM +oos +gUf nsY nsY iFM @@ -110814,22 +118266,9 @@ nsY gLZ nsY nsY -hTf -rsM -oos -gUf -bJt -oDf -oed -yhQ -aag -aaf -aaf -aaf -aaf -aaf -aaf -aaf +mgb +nhw +lyW aaf aaf ajY @@ -110853,7 +118292,7 @@ aaa aaa aaa aaa -lYA +gxm dxF dxF aaH @@ -110864,21 +118303,21 @@ aam aam aam aam -lYA -aao -aap -aar -aar -aar -aar -aar -aar -aar -aar -aar -aar -aar -aar +gxm +hgk +tob +cGd +cGd +cGd +cGd +cGd +cGd +cGd +cGd +cGd +cGd +cGd +cGd aej aej aej @@ -110886,43 +118325,43 @@ aej iiC amO tHh -hgv -hgv -hgv -hgv +vOy +vOy +vOy +vOy msi kDk -msi +kbJ cJM jlA qLi -jlA -qJy -qJy -qJy -qJy +dEm +vOy +vOy +vOy +vOy apv akU jHG -qVM -qVM -xeG -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -vGk -csz -czu +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +jtU +vpf +gxm aeT aeT aeT @@ -110933,7 +118372,7 @@ aeT nnD aZF aZF -czu +gxm aaa aaa aaa @@ -110954,24 +118393,11 @@ aaa aaa aaa aad -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aSm -vUi -hhw -xCN -pOB -hfk -aLf +kyw +kyw +kyw +deq +caq nsY tUS bNh @@ -110979,12 +118405,25 @@ wNl nGh fPp lqN -kjV +vlO nsY +xxG +smA +ktR +lfx +bdd +dJI +jaf +kwc +ebp +mPR +osU +vKe +dYX +tBF +lBz aLG -awb -aLG -iuy +bdg bqZ beH bgO @@ -111006,35 +118445,35 @@ beH bqZ bdg buH -hOR -buH +uXu +bFu +iUk +cIx +fUC +vKe +sDA +kWN +tln +bko +bdd +hTf +wRO +iMm +gUf nsY aaq -lEL -tuv -eYv +wHj +qdv +uQo iQt uZo xmJ nsY -hTf -wRO -iMm -gUf -bJt -oDf -ndQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ +xbg +mgb +lyW +lyW +lyW ajZ aaa aaa @@ -111056,7 +118495,7 @@ aaa aaa aaa aaa -lYA +gxm dxF dxF aaH @@ -111067,20 +118506,20 @@ aam aam aam aam -lYA -abe -aap -aar -aIZ -aIZ -aIZ -aIZ -ajQ -aIZ -aIZ -aIZ -aIZ -ajQ +gxm +bLf +tob +cGd +vVY +vVY +vVY +vVY +kLB +vVY +vVY +vVY +vVY +kLB aej aeO afG @@ -111089,43 +118528,43 @@ aej ayT amO avj -hgv +vOy elR -anx -aoO +xXh +xXh apU taH aBe -cJM +otu jBO jNc ean xXh -aAt +xXh dMK -qJy +vOy ayT akU avj -qVM -nNA -vGk -csz -qVM -iBt -iBt -iBt -iBt -aJM -iBt -iBt -iBt -iBt -aJM -qVM -vGk -xIb -czu +mRU +bnF +lBw +bnF +mRU +qSw +qSw +qSw +qSw +urg +qSw +qSw +qSw +qSw +urg +mRU +jtU +nVE +gxm aeT aeT aeT @@ -111136,7 +118575,7 @@ aeT nnD aZF aZF -czu +gxm aaa aaa aaa @@ -111156,27 +118595,14 @@ aaa aaa aaa aaa -aKW -aKW -bPV -aSm -aSm -jiX -bPU -bPT -uJo -aSm -jiX -aSm -aSm -aSm -hhw -nEA -lQu -lQu -aSm +kyw +kyw +veq +deq +deq +lfx nsY -lru +kio sJY qJY qLH @@ -111184,6 +118610,19 @@ xTW oGP cnM nsY +kqB +txH +txH +deq +bdd +fva +lkL +mBO +cHB +cHB +hDV +vmP +bdd aLG awb aLG @@ -111211,34 +118650,34 @@ bdg buH hOR buH +bdd +oNP +tge +yjU +yjU +yjU +tEC +bko +bdd +gKB +rsM +oos +gUf nsY mKJ -tIb +deT uAC rhQ pyc uMn ivz nsY -gKB -rsM -oos -gUf -bJt -oDf -oed -oed -sow -oed -oDf -oDf -oDf -laP -oDf -oed -oed -yhQ -yhQ +xbg +mgb +xbg +xbg +lyW +lyW aaa aaa aaa @@ -111259,7 +118698,7 @@ aaa aaa aaa aaa -lYA +gxm dxF dxF aaH @@ -111270,20 +118709,20 @@ aam aam aam aam -lYA -ahk -aap -aar -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ +gxm +rGz +tob +cGd +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY aej aeP agI @@ -111292,43 +118731,43 @@ yaz bYe ajt avj -hgv -nGr -eNT -anF -anF -taH -aBe -cJM +vOy +wWz vHO -jNc -tyD -tyD -tyD -pTM -qJy +uXj +uXj +iwJ +jVt +uyH +vHO +iwJ +uXj +uXj +rdt +wTM +vOy ayT aii avj -qVM -har -vGk -hoX -qVM -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -qVM -vGk -lSD -czu +eyI +jtU +jaW +vkV +mRU +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +mRU +jtU +bWg +gxm aeT aeT aeT @@ -111339,7 +118778,7 @@ aeT nnD aZF aZF -czu +gxm aaa aaa aaa @@ -111359,34 +118798,34 @@ aaa aaa aaa aaa -aKW -aLF -aLf -aLf -aLf -aSm -aLf -aLf -aLf -aLf -aLf -aSm -aLf -bPW -hhw -hhw -yfy -ugV -vUi -nsY -weB +kyw +lHB +lfx +lfx +lfx +lfx +heK +kam axc juD twW vHh pvh -rgJ +sZs nsY +bwG +erL +scX +caq +bdd +cDH +cHB +scN +vvw +wmz +rhy +rec +bdg aLG aYO bad @@ -111414,34 +118853,34 @@ bdd bGe bHL buH -nsY -eiN -gLu -eai -veI -xuQ -uPW -bKo -nsY +bdg +jLS +xdP +gAj +dBI +sMu +eYF +vMM +bdd sOt cNX cdI sBL -bJt -oed -oDf -alm -hGZ -tbK -hGZ -etB -hGZ -gpE -kHA -tbK -lNy -oed -yhQ +nsY +eiN +dVs +tat +kNC +xuQ +uPW +kYv +oDx +sAS +sAS +sAS +rCh +xbg +lyW aaa aaa aaa @@ -111462,31 +118901,31 @@ aaa aaa aaa aaa -lYA +gxm adj apk apk -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -abp -ach -aar -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +hqb +vsd +cGd +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY aej aeQ agK @@ -111495,54 +118934,54 @@ eup bYe ajt avj -hgv -uPX -anF -anF -anF -taH -pjC -cJM -avI -jNc -tyD -coZ +vOy +wWz +uwZ +wWm +jQt +nwi +sNz +uyH +uwZ +kGQ +jQt coZ -dnx -qJy +sNz +wTM +vOy ayT aii avj -qVM -csz -vGk -csz -qVM -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -qVM -azH -fQK -czu -czu -czu -czu -czu -czu -czu -czu +eyI +yfL +sjw +xHD +mRU +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +mRU +jZo +hQK +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm asM asM mwR -czu +gxm aaa aaa aaa @@ -111562,25 +119001,12 @@ aaa aaa aaa aaa -aKW -aSm -aLf -hhw -hhw -hhw -hhw -hhw -hhw -bPV -aLF -aSm -bzG -hhw -hhw -sSe -aLf -qce -aSm +kyw +eqm +lfx +vvH +bwG +bwG nsY wpz oEX @@ -111590,7 +119016,20 @@ xxm qSK ieu nsY -kfp +mZc +lfx +neH +deq +bdd +xXW +gVu +ydO +krU +wmz +vbI +rec +bdg +beB aYT beB beB @@ -111617,34 +119056,34 @@ bJz bJz bHT bJz +bdg +jLS +frb +kNX +mZf +gAj +ngn +jUq +bdd +pEl +roU +oos +uVh nsY kzK lFh -uzP +jYc pVA mzV pML ivz nsY -pEl -roU -oos -uVh -bJt -aYU -bVt -wlp -aYU -bVt -fiq -fiq -fFz -fiq -fiq -jZO -wlp -ndQ -yhQ +iZd +mgb +xbg +jPx +xQd +lyW aaa aaa aaa @@ -111665,31 +119104,31 @@ aaa aaa aaa aaa -lYA -aaG -aaG -aaI -abC -abC -abC -abC -abC -abC -abC -jUW -tgS -ady -aar -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ +gxm +ojH +ojH +taV +ouf +ouf +ouf +ouf +ouf +ouf +ouf +aLc +wBI +hGG +cGd +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY aej aeR agK @@ -111698,54 +119137,54 @@ aej pSL amT mIW -hgv -amn -anF -anF -koL +vOy +wWz +pEJ +xQm +wLy eqD sNz -cJM +uyH sWW mWW -pvm -pvm +wLy +xQm tfH -cLI -qJy +wTM +vOy aEK aSv ioX -qVM -pzQ -vGk -bqG -qVM -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -qVM -aCX -tgS -uSL -asx -asx -asx -asx -asx -asx -asx -aLX -bbp -bbp -czu +eyI +byH +jtU +nvd +mRU +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +mRU +vmJ +elv +vRR +qXS +qXS +qXS +qXS +qXS +qXS +qXS +hXX +xDe +xDe +gxm aaa aaa aaa @@ -111765,27 +119204,14 @@ aaa aaa aaa aaa -aKW -uDB -aSm -hhw -bUc -bUc -bUc -bUc -aLB -aLB -aLB -bbI -aLB -aLB -wXv -aLf -aLf -tRc -qEW +kyw +htg +deq +deq +qCH +cXm nsY -xgS +hUz dbn qvC tyb @@ -111793,6 +119219,19 @@ uRM ipe ehR nsY +xEe +lfx +tdH +igw +bdd +sgm +kEg +nFA +jkD +xgN +vgn +xgN +bdg aLG aYO aLG @@ -111820,34 +119259,34 @@ buH buH bHL buH +bdg +vLg +loy +naK +mRq +xkB +qXO +eeh +bdd +pcO +tJV +qoY +uCh nsY tXT -kOH +jJk wLG tyb sZH -tHc +rjV ivz nsY -pcO -tJV -qoY -uCh -bJt -bGb -bGb -cmb -bGb -bGb -fiq -xgM -eHq -uRI -ckD -wUD -lFF -ndM -yhQ +qZy +jfS +bUH +ciB +soT +lyW aaa aaa aaa @@ -111868,31 +119307,31 @@ aaa aaa aaa aaa -lYA -aaG -aaG -aaI -abC -abC -abC -abC -abC -abC -abC -acg -bAF -ady -aar -aar -aar +gxm +ojH +ojH +taV +ouf +ouf +ouf +ouf +ouf +ouf +ouf +sdf +cRL +hGG +cGd +cGd +cGd ahi -aar -aar -aar -aar +cGd +cGd +cGd +cGd uux -aar -aar +cGd +cGd aej aej agO @@ -111901,54 +119340,54 @@ aej atL akV atL -hgv -mYj -anF -anF -anF -anF -rjF -cJM +vOy +wWz uwZ tyD +jQt +vfP +sNz +uyH +uwZ tyD -coZ -coZ -dnx -qJy +jQt +vfP +sNz +wTM +vOy atL akV atL -qVM -qVM -xeG -qVM -qVM -qVM -qVM +mRU +mRU +veW +mRU +mRU +mRU +mRU nNX -qVM -qVM -qVM -qVM +mRU +mRU +mRU +mRU ayo -qVM -qVM -qVM -aEJ -bAF -aKB -asx -asx -asx -asx -asx -asx -asx -aLX -bbp -bbp -czu +mRU +mRU +mRU +cna +nzD +xDV +qXS +qXS +qXS +qXS +qXS +qXS +qXS +hXX +xDe +xDe +gxm aaa aaa aaa @@ -111968,25 +119407,12 @@ aaa aaa aaa aaa -aKW -aLf -aLf -hhw -bUc -bUc -bUc -bUc -aLB -aWN -pyB -beB -bbU -aLB -aLB -aLB -aLB -aLB -aLB +kyw +lfx +lfx +yih +qCH +spT nsY nsY nsY @@ -111996,7 +119422,20 @@ nsY nsY nsY nsY -aLG +bwG +bwG +bwG +bwG +bdd +bdd +bdd +bdd +bdd +bdd +bdd +bdd +bdd +hDL aYO aNO aLG @@ -112022,35 +119461,35 @@ bdg buH bHa bHL -buH +bIR +bdd +bdd +bdd +bdd +bdd +bdd +bdd +bdd +bdd +bJt +bJt +bJt +bJt nsY nsY nsY nsY -ylm +goy nsY nsY nsY nsY -bJt -bJt -bJt -bJt -bJt -bGb -mFM -bHW -kMU -fBx -fiq -hRg -oDf -xMh -fiq -rNW -kRu -oDf -yhQ +ecj +bZf +lZI +faR +wxu +lyW aaa aaa aaa @@ -112071,31 +119510,31 @@ aaa aaa aaa aaa -lYA -aaG -aaG -aaI -abC -abC -abC -aaJ -abC -abC -abC -act -ajS -afq -lzW -buk -fgF -bYP -lBi -acH -cwd -bYy -tOd -adT -kqf +gxm +ojH +ojH +taV +ouf +ouf +ouf +ptA +ouf +ouf +ouf +fTj +jOD +oOw +cPK +oXt +loz +sAz +jZC +uyd +ito +cuN +cQW +lQa +wjE aeU bUE bYe @@ -112104,21 +119543,21 @@ aaO alp aio baB -hgv +vOy wWz -anF +qxP gxP -anF -anF +gxP +jgg jZs -cJM +uyH iRN -tyD -tyD -tyD -tyD -pTM -qJy +jgg +gxP +gxP +nMe +wTM +vOy alp aio baB @@ -112127,31 +119566,31 @@ bUE bYe nBW bWP -tSc -spT -fHC -dHr -bYQ -cwd -lBi -qmt -ayG -saW -tMf -ajq -ajS -dGw -asx -asx -asx -aKJ -asx -asx -asx -aLX -bbp -bbp -czu +qtj +fpA +qUx +gUS +wrX +kMp +jkB +hlT +qNI +hRc +tqO +kdn +nyS +qec +qXS +qXS +qXS +jpn +qXS +qXS +qXS +hXX +xDe +xDe +gxm aaa aaa aaa @@ -112171,32 +119610,32 @@ aaa aaa aaa aaa -aKW -aLf -aSm -hhw -hhw -hhw -hhw -hhw +kyw +lfx +deq +bwG +bwG +bwG +bwG +bwG aLB acF -akX -akX +heb cqa -bdp +bBh +aMV dRG -yiq -sBp aMV +yiq +kLp aMV bBh tCN -tCN -kNQ -awb -iLQ lDJ +tCN +tCN +yfw +tCN bBh aLG aLG @@ -112229,9 +119668,9 @@ buH buH cbD iZH -sDQ -hOR -xMK +xkC +njL +njL njL njL cbD @@ -112240,20 +119679,20 @@ bUM mYw iAT rdY -clR -eXE -gte -eXE +bUM +cbD +rGg +qtn kJV -fiq -fiq -fiq -fiq -fiq -fiq -wlp -oDf -yhQ +mJO +mJO +mJO +mJO +mJO +mJO +jPx +mgb +lyW aaa aaa aaa @@ -112274,31 +119713,31 @@ aaa aaa aaa aaa -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -aey -azY -azY -adi -atC -abx -acC -abx -abx -abx -adi -abx -acC -atC +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +dho +wVt +wVt +jlc +ngE +kbv +dTn +kbv +kbv +kbv +jlc +kbv +dTn +ngE abg abg abg @@ -112307,21 +119746,21 @@ acC iWN amO dLE -hgv -euB -cba -kSc -cba -emR -jgA -cJM -rgn -urc -tPX +vOy +woh +vgO +vgO +vgO +vgO +vgO +utX +vgO +vgO +vgO +vgO vgO -jtd xAe -qJy +vOy aIS alq wWk @@ -112330,31 +119769,31 @@ aZE aZE aZE aZE -xwG -chu -aZE -cgI -abt -aZE -aZE -chu -aZE -xwG -cgI -agl -agN -ahH -czu -czu -czu -czu -czu -czu -czu -czu -czu -czu -czu +usL +gsC +cMz +qLg +aXD +cMz +cMz +gsC +cMz +usL +qLg +iup +ryY +cnn +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm aaa aaa aaa @@ -112374,30 +119813,30 @@ aaa aaa aaa aaa -aKW -aLa -aSm -hhw -nHF -nHF -nHF -cmE +kyw +lfx +deq +bwG +ycl +ycl +ycl +jCg aLB nyG -aNO -uYO -xqg -bdq -aQt -aQt -aQt -aQt -aQt -sOm -aQt -aQt -aQt -wom +iDN +tit +nFV +tBL +tBL +tBL +tBL +tBL +tBL +mRS +tBL +tBL +tBL +tBL tBL tBL luz @@ -112427,13 +119866,13 @@ bqZ bdg buH bHa -mTk -hbx -hvp -keO -hbx -hbx -nob +wwu +buI +bFu +cbE +buI +buI +buI buI buI buI @@ -112443,20 +119882,20 @@ buI buI buI buI -feC -bFu -mFD -bHa +buI +rpd +fkO +bHY kro bGb -uaa -uaa -uaa -oFM -fiq -fYc -uqH -yhQ +plv +plv +plv +mbR +mJO +eBG +nhw +lyW aaa aaa aaa @@ -112484,24 +119923,24 @@ aag aag aag aag -lYA -bRK -aao -aiv -aaW -pjb -abM -iCe -cLp -cZZ -ccY -aJs -cdu -aaw -abl -jUs -abu -xaF +vHn +fbe +hoT +rpG +bGa +dVn +vwC +fbR +gcq +xci +eON +gxn +vEV +xMz +sdv +xMO +wDg +vHA aaL aJs bYe @@ -112510,21 +119949,21 @@ aaE afD kaA anh -hgv -hgv -hgv -hgv -hgv -hgv -hgv -qJy -qJy -qJy -qJy -qJy -qJy -qJy -qJy +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy +vOy xFw iTK anh @@ -112533,24 +119972,24 @@ cjo bYe kSN aTQ -uGo -abl -wba -abu -aaw -wbj -aJs -cdu -ayH -uGo -eoT -aGR -pjb -aKC -xCX -vGk -hoX -czu +kfo +rCl +ePM +pzd +oWx +nNx +pMA +ncT +gHh +kfo +dbc +cNM +ofU +njk +rXF +jtU +vzB +woU aag aag aag @@ -112577,20 +120016,20 @@ aaa aaa aaa aaa -aKW -aLf -aSm -hhw -nHF -nHF -nHF -nHF +kyw +lfx +deq +bwG +ycl +ycl +ycl +ycl aLB csl -aQt -bbJ -csw -bdp +gjn +jJs +bBh +aMM aMM aNG bga @@ -112645,21 +120084,21 @@ ciU rOj bUd bUF -bUR clR -uqr -xkw -buI +clR +cbD +dQs +sFh guc bGb -uaa -uaa -uaa -uaa -fiq -wlp -vfJ -yhQ +plv +plv +plv +plv +mJO +jPx +enQ +lyW aaa aaa aaa @@ -112687,24 +120126,24 @@ aag aag aag aag -lYA -bTI -aap -aar -aar -aar -aar -aar -aar -aar -acG -abg -caF -aar -aar -aar -aar -aar +vHn +ggD +tob +cGd +cGd +cGd +cGd +cGd +cGd +cGd +hZE +sVV +oON +cGd +cGd +cva +cGd +cGd ael ael agQ @@ -112712,8 +120151,8 @@ aih ael tnl amO -abg anc +atC apJ apJ aMl @@ -112727,33 +120166,33 @@ apJ aMl apJ apJ +atC cnv -abg amO lqJ -qVM -qVM -xeG -qVM -qVM -qVM -qVM -qVM -qVM -qVM -acG -abg -caF -qVM -qVM -qVM -qVM -qVM -qVM -qVM -csz -ofs -czu +mRU +mRU +gBs +mRU +mRU +mRU +gBs +mRU +mRU +mRU +mKi +sfT +hGV +mRU +mRU +mRU +mRU +mRU +mRU +mRU +vpf +tMU +woU aag aag aag @@ -112780,18 +120219,18 @@ aaa aaa aaa aaa -aKW -aLf -aSm -hhw -nHF -nHF -nHF -nHF +kyw +lfx +deq +bwG +ycl +ycl +ycl +ycl jUx aLG -aNO -cmc +qmL +rZz jeb jeb jeb @@ -112852,17 +120291,17 @@ vra vra vra jJe -bHa +bHY buH vfo -uaa -uaa -uaa -uaa -fiq -scI -gFG -yhQ +plv +plv +plv +plv +mJO +nEl +bhy +lyW aaa aaa aaa @@ -112890,24 +120329,24 @@ aag aag aag aag -lYA -qsd -aao -aao -aar -aIZ -aIZ -aIZ -aLC -aar -bWs -abg -caF -aar -aIZ -aIZ -aIZ -bUA +vHn +hgk +hoT +hoT +cGd +vVY +vVY +vVY +tvS +cGd +xVe +sVV +mbx +cGd +orq +rRb +qjT +kRk ael afE agT @@ -112916,7 +120355,7 @@ ael cZm akU abg -abg +atC abg abx abx @@ -112930,33 +120369,33 @@ abx abx abx avD -abg +atC abg amO nQx -qVM -usi -csz -usi -qVM -iBt -iBt -iBt -adI -qVM -acG -abg -caF -qVM -iBt -iBt -iBt -fgo -qVM -aPX -vGk -vGk -czu +mRU +tih +vpf +tih +mRU +jwM +jtU +jtU +jHX +mRU +aDS +sfT +hGV +mRU +qSw +qSw +qSw +vMQ +mRU +upS +jtU +jtU +woU aag aag aag @@ -112983,14 +120422,14 @@ aac aaf aaf aaf -aKW -aSm -aLf -hhw -nHF -nHF -nHF -nHF +kyw +deq +lfx +bwG +ycl +ycl +ycl +ycl aLB dEC aNO @@ -113055,17 +120494,17 @@ mgF asX vra tfw -bHa +bHY sVf bGb -uaa -uaa -uaa -uaa -fiq -scI -scg -yhQ +plv +plv +plv +plv +mJO +nEl +rxe +lyW aaf aaf aaf @@ -113093,24 +120532,24 @@ aag aag aag aag -lYA -lYA -aap -aap -aar -aIZ -aIZ -aIZ -aIZ -aar -acO -aJs -cbN -aar -aIZ -aIZ -aIZ -aIZ +vHn +vHn +tob +tob +cGd +vVY +vVY +vVY +vVY +cGd +hHe +gxn +ioH +cGd +mNS +tob +hvq +pCQ ael afH agV @@ -113118,14 +120557,14 @@ ain ael eGl aii -abg anf +atC apK anf apK arf auG -awu +azb azb azb auG @@ -113133,33 +120572,33 @@ aDp apK cbr apK +atC cbr -abg amO -abg -qVM -qVM -vGk -har -qVM -iBt -iBt -iBt -iBt -qVM -aJd -aJs -cbN -qVM -iBt -iBt -iBt -iBt -qVM -pzQ -csz -czu -czu +uGt +mRU +mRU +jtU +wlB +mRU +bBc +vpf +jtU +bBc +mRU +uRY +pMA +waJ +mRU +qSw +qSw +qSw +qSw +mRU +oNM +vpf +woU +woU aag aag aag @@ -113186,18 +120625,18 @@ aad aag aag aag -aKW -vPr -iiP -hhw -nHF -nHF -nHF -nHF +kyw +xkb +dAA +bwG +ycl +ycl +ycl +ycl aLB udF aNO -nVU +nLZ jeb obE tdE @@ -113257,18 +120696,18 @@ lpt qYQ ptj vra -lSO -bHa +mEb +bHY haT bGb -uaa -uaa -uaa -uaa -fiq -wlp -oDf -yhQ +plv +plv +plv +plv +mJO +jPx +mgb +lyW aag aag aag @@ -113297,23 +120736,23 @@ aag aag aag aag -lYA -aao -aao -aar -aIZ -aIZ -aIZ -aIZ +vHn +hoT +hoT +cGd +vVY +vVY +vVY +vVY aba -pNQ -abx -hTy -bWd -aIZ -aIZ -aIZ -aIZ +aGA +kbv +fZo +cGd +nnH +hoT +hoT +eJj ael afI agY @@ -113321,47 +120760,47 @@ oxi xfm als ani -aow -aqU -aqU -aqU -aqU -aqU -aqU -aqU +anc +mOi +mOi +mOi +mOi +mOi +mOi auc -aqU +auc +hyE aqU aHq aHq aHq aHq aHq -abg +iWN ajt -abg +kGI aPm -qVM -vGk -hoX -qVM -iBt -iBt -iBt -iBt -nuY -jSY -abx -hLO +mRU +jtU +vpf +rXF +jtU +jtU +jtU +vpf +mRU +mzs +aPT +xyB ceD -iBt -iBt -iBt -iBt -qVM -buD -csz -czu +qSw +qSw +qSw +qSw +mRU +isq +vpf +woU aag aag aag @@ -113389,18 +120828,18 @@ aad aag aag aag -aKW -aSm -eIA -hhw -hhw -hhw -hhw -hhw +kyw +deq +qZK +bwG +bwG +bwG +bwG +bwG aLB -rlG -aNO -nFy +dzF +dzF +dac jeb vlX thA @@ -113460,18 +120899,18 @@ cgo hQc asX vra -hNL -bHa -rLF +cwQ +vtB +tQo bGb -fiq -fiq -fiq -fiq -fiq -wlp -bxX -yhQ +mJO +mJO +mJO +mJO +mJO +jPx +pgJ +lyW aag aag aag @@ -113500,23 +120939,23 @@ aag aag aag aag -lYA -aao -aap -aar -aIZ -aIZ -aIZ -aIZ -aar -acP -bUE -cbO -aar -aIZ -aIZ -aIZ -aIZ +vHn +hoT +tob +cGd +vVY +vVY +vVY +vVY +cGd +mAF +ilq +pjj +cGd +dkt +tob +hoT +xfW ael afJ agY @@ -113524,17 +120963,17 @@ aiq ajJ aEX ajt -ali -aqU -hvw +aow +mOi +rCw rCw lin oJR -aqU +tFe asD xQV avK -cck +aqU aCZ dgg xRk @@ -113542,29 +120981,29 @@ bti aHq sDC ajt -abg +kGI ejp -qVM -vGk -csz -qVM -iBt -iBt -iBt -iBt -qVM -acP -bUE -cbO -qVM -iBt -iBt -iBt -iBt -qVM -oLw -vGk -czu +mRU +jtU +vzB +mRU +bBc +vpf +jtU +vpf +mRU +gfN +efj +sxE +mRU +qSw +qSw +qSw +qSw +mRU +vpI +jtU +woU aag aag aag @@ -113592,18 +121031,18 @@ aad aag aag aag -aKW -uDB -aLf -hhw -nHF -nHF -nHF -cmE +kyw +xwd +lfx +bwG +ycl +ycl +ycl +jCg aLB enx aQt -xPg +oQj jeb vlX tdE @@ -113663,18 +121102,18 @@ lpt qYQ asX vra -mYZ -buI +ojR +tki lQQ bGb -uaa -uaa -uaa -oFM -fiq -wlp -oDf -yhQ +plv +plv +plv +mbR +mJO +jPx +mgb +lyW aag aag aag @@ -113703,23 +121142,23 @@ aag aag aag aag -lYA -aap -cWA -aar -aIZ -aIZ -aIZ -aIZ -aar -acG -abx -caF -aar -aIZ -aIZ -aIZ -aIZ +vHn +tob +xLu +cGd +vVY +vVY +vVY +vVY +cGd +hZE +kbv +mbx +cGd +gMJ +tob +hoT +xfW ael afK ahc @@ -113727,17 +121166,17 @@ air ael isW ajt -abg -aqU +ali +mOi wCT sIf isC isC tFe -lmz +xQV xQV rNF -cck +aqU qjF oqv iqd @@ -113745,29 +121184,29 @@ rUy cnS iWN ajt -abg -qVM -qVM -vGk -pzQ -qVM -iBt -iBt -iBt -iBt -qVM -acG -abx -caF -qVM -iBt -iBt -iBt -iBt -qVM -vGk -csz -czu +nYv +mRU +mRU +jtU +oNM +mRU +tih +ycM +jtU +vpf +mRU +aDS +aPT +hGV +mRU +qSw +qSw +qSw +qSw +mRU +jtU +vpf +woU aag aag aag @@ -113795,18 +121234,18 @@ aad aag aag aag -aKW -aSm -aLf -hhw -nHF -nHF -nHF -nHF +kyw +deq +lfx +bwG +ycl +ycl +ycl +ycl aLB ewo aNO -jJs +jLv jeb obE thA @@ -113867,17 +121306,17 @@ eBV ptj vra fsH -bHa +bHY pBn bGb -uaa -uaa -uaa -uaa -fiq -scI -oed -yhQ +plv +plv +plv +plv +mJO +nEl +xbg +lyW aag aag aag @@ -113906,23 +121345,23 @@ aag aag aag aag -lYA -aap -amN -aar -aar -aar -aar -aar -aar -oPD -abx -lCz -aar -aar -aar -aar -aar +vHn +tob +hUb +cGd +cGd +cGd +cGd +cGd +cGd +laM +kbv +nkH +cGd +eJZ +rRb +cXd +xew ael afL ahe @@ -113931,15 +121370,15 @@ ael abg akU abg -aqU -mlb +mOi +kbH kbH pgH -aqU -aqU -aqU -auf -aqU +jDV +tFe +xVc +xQV +eYz aqU gjB wDy @@ -113948,29 +121387,29 @@ dxv cnS cnv ajt -anf -xCX -csz -csz -dWm -qVM -qVM -qVM -qVM -qVM -qVM -oPD -abx -lCz -qVM -qVM -qVM -qVM -qVM -qVM -csz -csz -czu +bYe +rXF +vpf +vpf +aBQ +mRU +mRU +mRU +gBs +mRU +mRU +oIa +aPT +bqY +mRU +mRU +mRU +mRU +mRU +mRU +vpf +vpf +woU aag aag aag @@ -113993,23 +121432,23 @@ aKQ aaa aaa aab -aKW -aKW -aKW -aKW -aKW -aKW -aSm -aSm -hhw -nHF -nHF -nHF -nHF +kyw +kyw +kyw +kyw +kyw +kyw +deq +iGc +bwG +ycl +ycl +ycl +ycl cmC aLG aNO -jJs +uBw jeb vlX tdE @@ -114069,23 +121508,23 @@ lpt qYQ asX vra -mqc -ybV +pJJ +bHY buH cnd -uaa -uaa -uaa -uaa -fiq -suT -oed -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ +plv +plv +plv +plv +mJO +kLm +xbg +lyW +lyW +lyW +lyW +lyW +lyW aaa aab aaa @@ -114109,23 +121548,23 @@ aag aag aag aag -lYA -wFm -abe -aar -aIZ -aIZ -aIZ -aLC -aar -acG -abx -caF -aar -aIZ -aIZ -aIZ -bUA +vHn +tJq +bLf +cGd +vVY +vVY +vVY +tvS +cGd +hZE +kbv +mbx +cGd +cva +cGd +cGd +cGd adO adO adO @@ -114134,16 +121573,16 @@ adO lwm akU nQx -aqU -pYi -isC -xbN -aqU +mOi +mOi +mOi +mOi +mOi mOi asF asG -vhe -cck +iyH +aqU jVE nTs pje @@ -114152,28 +121591,28 @@ cnT xvh fNC cKY -qVM -qVM -qVM -qVM -qVM -iBt -iBt -iBt -adI -qVM -acG -abx -caF -qVM -iBt -iBt -iBt -fgo -qVM -lJg -csz -czu +mRU +mRU +mRU +mRU +mRU +jwM +oZn +jtU +lPW +mRU +aDS +aPT +hGV +mRU +qSw +qSw +qSw +vMQ +mRU +wUJ +vpf +woU aag aag aag @@ -114196,19 +121635,19 @@ aKQ aaa aaa aab -aKW -qxA -aSm -aSm -aSm -jiX -aSm -bPV -hhw -nHF -nHF -nHF -nHF +kyw +ety +deq +deq +deq +deq +deq +xJp +bwG +ycl +ycl +ycl +ycl aLB fTU bbO @@ -114275,20 +121714,20 @@ vra cmd cmh wAR -aLB -uaa -uaa -uaa -uaa -fiq -scI -oed -sow -oDf -leh -vhI -tVB -yhQ +bGb +plv +plv +plv +plv +mJO +nEl +xbg +jPU +mgb +cgU +oqI +iDk +lyW aaa aab aaa @@ -114312,23 +121751,23 @@ aag aag aag aag -lYA -aao -ahk -aar -aIZ -aIZ -aIZ -aIZ -aar -acO -aJs -arJ -aar -aIZ -aIZ -aIZ -aIZ +vHn +hoT +rGz +cGd +vVY +vVY +vVY +vVY +cGd +hHe +gxn +gKd +cGd +hoT +hoT +svV +rIE adO afM fpR @@ -114339,14 +121778,14 @@ aii abg aqU sdl -isC -xbN -aqU -mOi -gjw +mLE +bUx +mLE +tmK +avK aug avL -cck +aqU lyE rsO aGN @@ -114359,24 +121798,24 @@ aUH aXx jKI aXx -qVM -iBt -iBt -iBt -iBt -qVM -acO -aJs -arJ -qVM -iBt -iBt -iBt -iBt -qVM -hkx -vGk -czu +mRU +tih +vpf +jtU +vpf +mRU +lCL +pMA +gcm +mRU +qSw +qSw +qSw +qSw +mRU +uNz +jtU +woU aag aag aag @@ -114399,19 +121838,19 @@ aKQ aaa aaa aab -aKW -xxe -aLf -aLf -aLf -aLf -xPE -bPT -hhw -nHF -nHF -nHF -nHF +kyw +byt +lfx +lfx +lfx +lfx +txp +veq +bwG +ycl +ycl +ycl +ycl aLB ahj ahj @@ -114478,20 +121917,20 @@ vra ajX ajX ajX -aLB -uaa -uaa -uaa -uaa -fiq -wUS -tbK -sVi -tbK -tbK -bfc -oed -yhQ +bGb +plv +plv +plv +plv +mJO +rxq +sAS +cXX +sAS +sAS +nHG +xbg +lyW aaa aab aaa @@ -114515,23 +121954,23 @@ aag aag aag aag -lYA -aap -eGF -aar -aIZ -aIZ -aIZ -aIZ +vHn +tob +alh +cGd +vVY +vVY +vVY +vVY bWh -jSY -abx -hTy -xHG -aIZ -aIZ -aIZ -aIZ +hmj +kbv +fZo +cGd +ykY +hoT +hoT +tjz adO afN ahh @@ -114543,13 +121982,13 @@ abg aqU xbN gfE -xbN +gfE +kpc aqU -mOi gjw cnp avM -cck +aqU wmK liJ pTj @@ -114562,24 +122001,24 @@ aUH oyE mMP mMP -qVM -iBt -iBt -iBt -iBt -xfh -jSY -abx -hLO +mRU +jtU +vpf +jtU +vpf +mRU +mzs +aPT +xyB cix -iBt -iBt -iBt -iBt -qVM -lSD -vGk -czu +qSw +qSw +qSw +qSw +mRU +bWg +jtU +woU aag aag aag @@ -114602,20 +122041,20 @@ aKQ aaa aaa aab -aKW -aSm -aLf -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW +kyw +deq +lfx +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr wdb ahj ahj @@ -114681,20 +122120,20 @@ vra ajX ajX hBC -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -scI -oDf -yhQ +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +nEl +mgb +lyW aaa aab aaa @@ -114718,23 +122157,23 @@ aag aag aag aag -lYA -cIU -aao -aar -aIZ -aIZ -aIZ -aIZ -aar -acP -bUE -cbO -aar -aIZ -aIZ -aIZ -aIZ +vHn +btV +hoT +cGd +vVY +vVY +vVY +vVY +cGd +mAF +ilq +pjj +cGd +boU +nNI +hoT +veO adO afO ahh @@ -114743,16 +122182,16 @@ adO aEp xTt aEp -ioU -ioU -ioU -ioU -ioU -aHq -aHq -aHq -aHq -aHq +lmK +lmK +lmK +lmK +lmK +ntj +ntj +ntj +ntj +ntj aHq cnH kzk @@ -114765,24 +122204,24 @@ aUH sIA gSj aXA -qVM -iBt -iBt -iBt -iBt -qVM -acP -bUE -cbO -qVM -iBt -iBt -iBt -iBt -qVM -toE -ofs -czu +mRU +jtU +vpf +jtU +bBc +mRU +gfN +efj +sxE +mRU +qSw +qSw +qSw +qSw +mRU +kUL +tMU +woU aag aag aag @@ -114805,10 +122244,10 @@ aKQ aaa aaa aab -aKW -bhC -aSm -aKW +kyw +deq +iGc +wDr bbB bbB arn @@ -114872,7 +122311,7 @@ bNE wDJ ivs nyQ -gZr +dXH vWB bSK nyQ @@ -114894,10 +122333,10 @@ aoc aAv eZi eZi -yhQ -wlp -ftl -yhQ +wDr +jPx +wdW +lyW aaa aab aaa @@ -114921,23 +122360,23 @@ aag aag aag aag -lYA -aap -aap -aar -aIZ -aIZ -aIZ -aIZ -aar -aJa -abg -ccf -aar -aIZ -aIZ -aIZ -aIZ +vHn +tob +tob +cGd +vVY +vVY +vVY +vVY +cGd +xXT +sVV +tkR +cGd +ipr +pUL +tob +eQd adO jkj ahh @@ -114968,24 +122407,24 @@ aUd ckK iKM aHM -qVM -iBt -iBt -iBt -iBt -qVM -aJa -abg -ccf -qVM -iBt -iBt -iBt -iBt -qVM -gKS -csz -czu +mRU +jtU +vpf +lPW +vwJ +mRU +nme +sfT +vAH +mRU +qSw +qSw +qSw +qSw +mRU +edG +vpf +woU aag aag aag @@ -115008,10 +122447,10 @@ aKQ aaa aaa aab -aKW -aLf -aLF -aKW +kyw +lfx +gSH +wDr bbB bbB arn @@ -115097,10 +122536,10 @@ aoc aAv eZi eZi -yhQ -scI -oDf -yhQ +wDr +nEl +mgb +lyW aaa aab aaa @@ -115124,24 +122563,24 @@ aag aag aag aag -lYA -aao -aao -aar -aar -aar -aar -aar -aar -eQi -atL -kOG -aar -aar -aar -aar -aar -aar +vHn +hoT +hoT +cGd +cGd +cGd +cGd +cGd +cGd +ehL +kyr +chb +cGd +cGd +cGd +moK +cGd +cGd lFt ahh aiw @@ -115171,24 +122610,24 @@ aUH dbv lII aWc -qVM -qVM -qVM -qVM -qVM -qVM -eQi -atL -pef -qVM -qVM -qVM -qVM -qVM -qVM -vGk -vGk -czu +mRU +gBs +mRU +mRU +mRU +mRU +tCx +ncG +tZg +mRU +mRU +mRU +mRU +mRU +mRU +jtU +jtU +woU aag aag aag @@ -115211,10 +122650,10 @@ aKQ aaa aaa aab -aKW -cmq -bPS -aKW +kyw +oif +nRN +wDr bbB bbB arn @@ -115243,8 +122682,8 @@ aQL mJP bSn aQL -aLG -aNO +vHs +ehH aYZ sLE bAV @@ -115270,8 +122709,8 @@ bCB cbv iEb bHY -bHa -buH +mru +syP bJC jSp lAQ @@ -115300,10 +122739,10 @@ aoc aAv eZi eZi -yhQ -oYb -fxz -yhQ +wDr +xgS +svF +lyW aaa aab aaa @@ -115327,24 +122766,24 @@ aag aag aag aag -lYA -aao -aap -aap -aao -aap -aap -ahg -aiv -lMM -abg -lCS -aiv -ahg -aap -aap -aap -rfg +vHn +hoT +tob +lso +hoT +tob +tob +hqm +rpG +cSa +aeA +sjz +rpG +hqm +tob +tob +hoT +fkK aiw ahh aiw @@ -115374,24 +122813,24 @@ aGz ckd mQC aHM -xCX -vGk -vGk -aip -vzl -xCX -bWC -abg -sSR -xCX -weU -csz -gYS -vGk -vGk -csz -csz -czu +rXF +jtU +jtU +egQ +ycM +rXF +wcm +lJY +guo +rXF +fLi +vpf +uBx +jtU +jtU +vpf +vpf +woU aag aag aag @@ -115414,23 +122853,23 @@ aKQ aaa aaa aab -aKW -rJb -yaG -aKW +kyw +vaV +qxJ +wDr bbC aan aan -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -hhw +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +aLT +aLT aLT sXt aMQ @@ -115446,8 +122885,8 @@ aTw aUj kLk aQL -aWN -aLG +mTn +aiy aYZ sLE bbk @@ -115473,8 +122912,8 @@ bdk bGh iEb bHY -buH -fBx +njy +hkE bJC ojF bNG @@ -115491,22 +122930,22 @@ bUU uDW bSJ bSJ -fiq -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ +ljv +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr tGq tGq jjT -yhQ -trD -oDf -yhQ +wDr +wtk +mgb +lyW aaa aab aaa @@ -115531,23 +122970,23 @@ aag aag aag abh -aar -aar -tiM -aar -aar -aar -aar -aar -bWE -aJs -mXU -aar -aar -aar -aar -aap -aar +cGd +cGd +moK +cGd +cGd +cGd +cGd +cGd +wYa +nBK +mzS +cGd +cGd +cGd +cGd +tob +cGd afP ahh aiw @@ -115577,23 +123016,23 @@ aGz drk mQC mkG -qVM -oLw -qVM -qVM -qVM -qVM -bWE -aJs -mXU -qVM -qVM -qVM -qVM -qVM -xeG -qVM -qVM +mRU +vpI +mRU +mRU +mRU +mRU +nuM +uHr +xwX +mRU +mRU +mRU +mRU +mRU +gBs +mRU +mRU uOi aag aag @@ -115617,10 +123056,10 @@ aKQ aaa aaa aab -aKW -aLf -aaz -aKW +kyw +lfx +gUn +wDr bdY bdY bdY @@ -115631,8 +123070,8 @@ aaF aaF aaF aaF -aKW -hhw +wDr +aLT aLT aLT aLT @@ -115650,7 +123089,7 @@ aQL aQL aQL aQL -aLG +uQn aYZ sLE bbl @@ -115676,7 +123115,7 @@ bdl bGi iEb bHY -buH +oyy bJC bJC bJC @@ -115694,8 +123133,8 @@ bSJ bSJ bSJ bSJ -fiq -yhQ +ljv +wDr anm anm anm @@ -115706,10 +123145,10 @@ anm pfp pfp pfp -yhQ -scI -oed -yhQ +wDr +nEl +xbg +lyW aaa aab aaa @@ -115748,9 +123187,9 @@ aeA bbe aeA aeA -aar -aap -aar +cGd +tob +cGd afQ aiw aiw @@ -115780,9 +123219,9 @@ aGz eqB obC hcf -qVM -lau -qVM +mRU +cpQ +mRU lJY lJY lFK @@ -115820,10 +123259,10 @@ aKQ aaa aaa aab -aKW -aSm -aLf -aKW +kyw +oxn +oxn +wDr bdY bdY bdY @@ -115834,8 +123273,8 @@ aaF aaF aaF aaF -aKW -hhw +wDr +aLT aLT bbY bdr @@ -115863,7 +123302,7 @@ bEs bIs bdm rbY -gwD +eAG bOK bPD bYa @@ -115897,8 +123336,8 @@ clI clg clW bSJ -fiq -yhQ +ljv +wDr anm anm anm @@ -115909,10 +123348,10 @@ anm pfp pfp pfp -yhQ -wlp -oed -yhQ +wDr +cZI +xGT +lyW aaa aab aaa @@ -115951,9 +123390,9 @@ asA amF kmE aeA -aar -awJ -aar +cGd +iTQ +cGd ahJ ahJ ahJ @@ -115983,9 +123422,9 @@ aUH aGz aGz aGz -qVM -hoX -qVM +mRU +vzB +mRU lJY qbx dcp @@ -116023,10 +123462,10 @@ aKQ aaa aaa aab -aKW -bhC -aSm -aKW +emA +vIg +vIg +wDr bdY bdY bdY @@ -116037,18 +123476,18 @@ aaF aaF aaF aaF -aKW -hhw +wDr +aLT aLT bca aMC aLT avv bfu -bgV -aPM +rGj +aQT aLT -aQP +aTv blB bnp aTx @@ -116089,19 +123528,19 @@ bMy bJC cog chN -cje -bFh +mzg +cdP bJC dpO -ckR +ckX cli coj bSJ bVo clX bSJ -fiq -yhQ +ljv +wDr anm anm anm @@ -116112,10 +123551,10 @@ anm pfp pfp pfp -yhQ -scI -uqH -yhQ +wDr +cOo +rJf +tcO aaa aab aaa @@ -116147,16 +123586,16 @@ aeA aeC aeC aeC -aeC +cVb aeC aeC aeC vOh gUX ily -aar -tiM -aar +cGd +moK +cGd aWd aWd aWd @@ -116186,16 +123625,16 @@ pji aWd aWd aWd -qVM -xeG -qVM +mRU +gBs +mRU cBb xVS lJY vcE vcE vcE -vcE +iTd vcE vcE vcE @@ -116226,32 +123665,32 @@ aKQ aaa aaa aab -aKW -aSm -aLf -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -hhw +emA +gPS +gPS +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr aLT aLT aLT aLT aLT -bfw -bgV -aPM aLT -aQQ +bfx +rGj +aQT +aLT +aTv blB kiU aQL @@ -116268,7 +123707,7 @@ bDY bCA bCA nLt -tJa +gmb bNQ bNQ bNQ @@ -116276,7 +123715,7 @@ bNQ bNQ bNQ bNQ -bEk +nXU bKA jac bCA @@ -116292,33 +123731,33 @@ bJC bJC bJC chO -cje -bFh +mzg +cdP bJC -cks -ckR +dpO +ckX clj bSJ bSJ bSJ bSJ bSJ -fiq -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -wlp -oDf -yhQ +ljv +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +nGM +hIp +tcO aaa aab aaa @@ -116429,32 +123868,32 @@ aKQ aaa aaa aab -aKW -aSm -aLf -aLf -ycV -aLf -aSm -bbx -izU -gFs -yaG -bPV -aaz -bPT -eko -bPV +emA +jEM +ikT +owU +iTq +ikT +jEM +kjY +riB +fGi +qan +jkN +jUh +tIF +bCk +jkN aLT bco aMB bdA aLT ial -aMz -aPM +rGj +aPl aLT -aQP +aPn aRU bnr aQL @@ -116472,17 +123911,17 @@ bdj bri bLX bdl -rTY +kSU bNP bmD bNP bmD bNP bmD -gkg +mYv doP jac -isS +xxa cai bdl bII @@ -116495,33 +123934,33 @@ bMx cgr bJC raK -cje -bFh +mzg +bgW bJC -cks ckR +ckX iyS bSJ clJ bVn clY bSJ -fiq -iFm -anb -anb -anb -kKX -uvs -ixP -fiq -kUt -hGZ -tbK -tbK -sQU -ebY -yhQ +ljv +dnZ +eHy +eHy +eHy +cyp +oaO +lWY +ljv +jiM +ere +lYg +lYg +sEu +lia +tcO aaa aab aaa @@ -116547,16 +123986,16 @@ aag aag abh acx -aeC +pMk ajs aeC -asV +wXh ayn atr -bbV -atr +aeA +aex ciw -asV +wXh aeC ydz ayb @@ -116598,16 +124037,16 @@ agJ sSl kkx vcE -mMu +kpo iMx -bXe -jMm +tGi +lJY bXe eyG -mMu +kpo vcE kUV -vcE +xyL rRq uOi aag @@ -116632,32 +124071,32 @@ aKQ aaa aaa aab -aKW -aLF -bbx -bPS -ktP -aSm -aLf -aSm -ecM -enf -ecM -aSm -aLf -bbx -eko -lLV +emA +kJZ +kjY +fGB +snN +jEM +ikT +jEM +lty +eTD +lty +jEM +ikT +kjY +bCk +heO aLT bco bdr bdA aLT -bfx -bgV -aPM +bfw +rGj +aQT aLT -aQP +aTv blB vJV aQL @@ -116672,10 +124111,10 @@ bkY bdl lOr lOr -bIu -lOr +iwI +bdl bdl -bEt +reH bNP bmD bNP @@ -116698,33 +124137,33 @@ cfo cgr bJC chQ -cje -bFh +mzg +cdP bJC -cks -ckR +dpO +ckX clk bSJ clJ clg clY bSJ -fiq -wUS -tbK -tbK -bfc -ant -glM -mUn -fiq -suT -oed -oed -oed -uim -qNy -yhQ +ljv +eaz +lYg +lYg +aqH +oxl +wac +mjy +ljv +ien +xhO +xhO +xhO +cmN +srl +tcO aaa aab aaa @@ -116749,8 +124188,8 @@ aah aah aah abi -acE -aeA +nGY +gyU ajk aeA asY @@ -116810,8 +124249,8 @@ deg wLu lJY xVS -lJY -uGa +kPH +knL uyC aah aah @@ -116835,32 +124274,32 @@ aKQ aaa aaa aab -aKW -aKW -aKW -aKW -aKW -uDB -aLf -aSm -uGw -uJl -ihn -aSm -aLf -aSm -aSm -eko +emA +emA +emA +emA +emA +sEg +ikT +jEM +ahL +bFl +nZW +jEM +ikT +jEM +jEM +bCk aLT bcZ bdr bdC beR bfy -bgV -aPM +rGj +aQT aLT -aQR +aTv blB bnt bpG @@ -116873,11 +124312,11 @@ aYW bzV beB mCo -xfw -lBF +iwZ +jFy bKA -sbM -pWA +mPK +dmF pXV bNP bmD @@ -116888,7 +124327,7 @@ bmD lyk bOR eHa -opj +cmo xAB mCo bJz @@ -116901,33 +124340,33 @@ cfo cgs chk chR -cje -bFh +mzg +cdP bJC -cku -ckR +dpO +ckX cll clE clK clg bVy bSJ -fiq -fiq -fiq -fiq -lra -ujA -fiq -fiq -fiq -jbb -uNW -yhQ -yhQ -yhQ -yhQ -yhQ +ljv +ljv +ljv +ljv +tWl +jer +ljv +ljv +ljv +jEA +hCq +tcO +tcO +tcO +tcO +tcO aaa aab aaa @@ -116952,23 +124391,23 @@ bdH bdH bdH abi -acT -aeA +dEJ +gyU ajk aeA atp ayR atr -bbZ +eGb atr cji nqV aeA ajk ily -psm -jFX -psm +taw +mRI +taw blb aWd aXT @@ -116998,23 +124437,23 @@ pji jFg aWd pCD -vuv -orm -vuv +kNq +cWo +kNq cBb xVS lJY hlX umh bXe -kFe +lxT tGi pfH wlF lJY xVS -lJY -mIA +kPH +qGU uyC bdH aaa @@ -117042,30 +124481,30 @@ aaa aaa aaa aaa -aKW -uAs -aLf -aSm -kOf -oIn -kOf -aSm -aLf -bzF -aSm -aLf +emA +tcm +ikT +jEM +uzv +tYr +uzv +jEM +ikT +hYf +jEM +ikT aLT bco bdr bdA aLT -bfx +bfD aPj -aPN +aPl aLT -aQS -aRT -bnu +aPn +blB +sNb aQL brr aRT @@ -117103,30 +124542,30 @@ cdV cfo cgr bJC -chN -bJD -bFi +foL +mzg +bgW bJC -ckv -bTA -clm +ckR +ckX +loS bSJ clJ clg clY bSJ -iGK -tbK -tbK -tbK -sQU -wUS -hGZ -tbK -tbK -sQU -oDf -yhQ +bXh +lYg +lYg +lYg +sEu +eaz +ere +lYg +lYg +sEu +gEh +tcO aaa aaa aaa @@ -117156,21 +124595,21 @@ aaa bdH abh acx -aeC +gCB ajs aeC -asV +wXh ayn atr -aeC +aeA bXz ciw -asV +wXh aeC ajs qon -psm -tNT +taw +obJ aep ggQ ggQ @@ -117202,21 +124641,21 @@ aME ggQ aME aep -vSg -vuv +hog +kNq dHe kUV vcE -mMu +kpo iMx bXe -yjM -bXe +lJY +mzF eyG -mMu +kpo vcE kUV -vcE +bxA rRq uOi bdH @@ -117245,30 +124684,30 @@ aaa aaa aaa aaa -aKW -bPU -bPS -bbx -moh -iIY -bPW -xlD -aLf -aSm -aSm -aLf +emA +hyb +fGB +kjY +yia +ugZ +kcG +fBo +ikT +jEM +jEM +ikT aLT bco aMC bdA aLT bfx -bgW -aPM +bgY +aQT aLT -aQP +aTv blB -bnu +nCp aQL brr aUY @@ -117307,29 +124746,29 @@ bMy cgr bJC chP -cje -bFh +mzg +cdP bJC -cks -ckR +dpO +ckX cln bSJ clJ bVo clY bSJ -pNG -oed -oed -oed -oed -oDf -mOU -oDf -oed -oed -uFt -yhQ +tgm +xhO +xhO +xhO +xhO +gEh +sOD +gEh +xhO +xhO +tWp +tcO aaa aaa aaa @@ -117372,8 +124811,8 @@ aeC aeC ajs aeC -psm -xlX +taw +oxy aep afj afk @@ -117405,8 +124844,8 @@ aHS afk sHo aep -sFR -vuv +vmu +kNq vcE kUV vcE @@ -117448,28 +124887,28 @@ aaa aaa aaa aaa -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -ycV -ktP +emA +emA +emA +emA +emA +emA +emA +emA +emA +emA +iTq +snN aLT aLT aLT aLT aLT hQW -bgW -aPM +bgY +aQT aLT -aQP +aTv blB qhU aQL @@ -117486,7 +124925,7 @@ bEi bZr bmD ngw -gCu +pjG boz bpR bpR @@ -117510,29 +124949,29 @@ bJC bJC bJC uUo -cje +mzg cdP bJC -cjF -ckR +dpO +ckX sUO bSJ bSJ bSJ bSJ bSJ -scI -oed -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ +cZp +xhO +tcO +tcO +tcO +tcO +tcO +tcO +tcO +tcO +tcO +tcO aaa aaa aaa @@ -117568,15 +125007,15 @@ amH aeC aeC aeC -aeC +cVb aeC aeC aeC aeA ajk aeA -psm -xlX +taw +oxy aep afk afk @@ -117608,15 +125047,15 @@ afk aHl afk aep -kMq -vuv +hLt +kNq lJY itR kKR vcE vcE vcE -vcE +iTd vcE vcE vcE @@ -117660,20 +125099,20 @@ aaa aaa aaa aaa -wVb -eFH -hlz +emA +ikT +jEM aLT bcE aMB bdD aLT bfz +bgY aPl -aQT aLT -aTv -aRT +aPn +blB bnu aQL brt @@ -117689,7 +125128,7 @@ brp bZr bmD xId -hBP +pjG boz bpR bpR @@ -117700,7 +125139,7 @@ bxg bZr bNQ bNQ -xMt +bNQ bGz hMs cbw @@ -117714,19 +125153,19 @@ cgt bJC chS bQA -bFh +bgW bJC -cks -bTA +ckR +ckX meu bSJ clL bVn clZ bSJ -dGz -cAH -vTK +tgm +xhO +tcO aaa aaa aaa @@ -117778,8 +125217,8 @@ asA amF ohL aeA -psm -dmQ +taw +oQL aep aep aep @@ -117811,8 +125250,8 @@ aep aep aep aep -cBi -vuv +ddF +kNq lJY ucw dcp @@ -117852,6 +125291,8 @@ aaa aab aaa aaa +bdH +bdH aaa aaa aaa @@ -117861,23 +125302,21 @@ aaa aaa aaa aaa -aaa -aaa -wVb -iDm -hlz +emA +qGC +jEM aLT bcE bdr bdD aLT -bfx -bgW -aPM +rrq +bgY +aQT aLT -aQP +aTv blB -bnu +mtr aQL brt bpC @@ -117903,7 +125342,7 @@ bxh bZr krN krN -oLg +krN oqY can buH @@ -117917,29 +125356,29 @@ cgt bJC chQ cjf -bFh +cdP bJC -cks -ckR -clo +dpO +ckX +xoe bSJ clL clg clZ bSJ -xRE -ebO -vTK -aaa -aaa -aaa -aaa -aaa +xMm +pFr +tcO aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -117981,9 +125420,9 @@ ntI aeA aeC puO -psm -xlX -egS +taw +oxy +eRG aep aep aep @@ -118010,12 +125449,12 @@ alG anG apf oIB +jgr +gGp +dMf oIB -oIB -oIB -oIB -sFR -vuv +vmu +kNq lJY uxC lJY @@ -118055,6 +125494,8 @@ aaa aab aaa aaa +bdH +bdH aaa aaa aaa @@ -118064,21 +125505,19 @@ aaa aaa aaa aaa -aaa -aaa -wVb -eFH -hlz +emA +ikT +jEM aLT abS bdr bdC beS bfy -bgW -aPM +bgY +aQT aLT -aQP +aTv blB bnt bpH @@ -118095,7 +125534,7 @@ buz bZr bmD dmE -pvF +pjG boz bpR bpR @@ -118106,7 +125545,7 @@ bxg bZr ibc uly -moU +bNN vbR pky cbv @@ -118120,29 +125559,29 @@ cgs chl chR cjf -bFh +cdP bJC -cks -ckR +dpO +ckX cll clF clK clg acp bSJ -vMn -vuR -vTK -aaa -aaa -aaa -aaa -aaa +qKK +gEh +tcO aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -118173,24 +125612,24 @@ abh abh abh abh -nPX +aeC atr aeC atr aeC -psm -psm -psm -psm -jFX -psm -psm -xlX -aeq -psm -psm -psm -psm +taw +taw +taw +taw +mRI +taw +taw +oxy +hja +taw +taw +taw +taw alG aYj aoD @@ -118217,19 +125656,19 @@ fXE kaS aiQ oIB -sFR -vuv -vuv -vuv -vuv -sdw -vuv -vuv +vmu +kNq +kNq +kNq +kNq +qDB +kNq +kNq vcE bXe vcE bXe -sYn +vcE uOi uOi uOi @@ -118258,6 +125697,8 @@ aaa aab aaa aaa +bdH +bdH aaa aaa aaa @@ -118267,21 +125708,19 @@ aaa aaa aaa aaa -aaa -aaa -wVb -hlz -eFH +emA +jEM +ikT aLT bcE aMC bdD aLT bfC +bgY aPl -aPM aLT -aQU +aPn aRX cSQ aQL @@ -118298,7 +125737,7 @@ bEm bZr bmD hAc -vSr +pjG boz bpR bpR @@ -118322,10 +125761,10 @@ bMy cgt bJC chV -bQB -bFh +cjf +bgW bJC -ckx +ckR bTC mvl bSJ @@ -118333,19 +125772,19 @@ clL bVo clZ bSJ -bob -emG -vTK -aaa -aaa -aaa -aaa -aaa +hTU +lNk +tcO aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -118376,24 +125815,24 @@ aad aag aag abh -qbO +aeC atr aeC atr aeC -psm -cnU -nGc -psm -cWI -psm -whc -xlX -dmQ -psm -dmQ -dmQ -psm +taw +hEj +cvi +taw +wFX +taw +ncV +oxy +oQL +taw +oQL +oQL +taw alK ajP aoD @@ -118417,22 +125856,22 @@ anG apd oIB wqr -hzb +bZw xUV oIB -sFR -hPo -vuv -dnk -rCp -fbx -cEO -vuv +vmu +vDR +kNq +toD +wDq +aPO +sNP +kNq vcE bXe vcE bXe -sht +vcE uOi aag aag @@ -118472,21 +125911,21 @@ aaa aaa aaa aaa -wVb -qnP -jPf +emA +rIV +dYc aLT aLT aLT aLT aLT -bfD -bgW -aPM +bfx +bgY +aQT aLT -aQV +aTv blB -bnu +sNb aQL aQL aQL @@ -118526,29 +125965,29 @@ bJC bJC chW rvT -bFh +cdP bJC -cky -ckR -cln +dpO +ckX +hAZ bSJ bSJ bSJ bSJ bSJ -cJP -vuR -vTK -aaa -aaa -aaa -aaa -aaa +xsv +gEh +tcO aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -118584,19 +126023,19 @@ atu azU aeC ldl -psm -xlX -nYh -psm -xuI -psm -miK -tXW -gfk -fBf -tXW -tXW -fBf +taw +oxy +stA +taw +tvA +taw +oTc +nwT +ocI +mfH +nwT +nwT +mfH aTS ajP aoD @@ -118617,20 +126056,20 @@ fDG alL alG aYD -wyK +aTS qgK tEB uBM dXo oIB -lBR -nVu -vuv -jvI -cxo -fbx -jnk -vuv +xPu +uOE +kNq +swG +jei +aPO +hIX +kNq vcE pxJ swM @@ -118675,9 +126114,9 @@ aaa aaa aaa aaa -wVb -hlz -moE +emA +jEM +kDd aLT bdJ bds @@ -118685,12 +126124,12 @@ aLT bpL bfE njd -aPN +aQT aLT -aQS +aTv blB uvu -sNb +aUZ aQL bsS mqK @@ -118702,7 +126141,7 @@ jJs bdl bEp bCA -bCA +wlh cvb bmC nwG @@ -118726,32 +126165,32 @@ bJC cfp cgu bJC -fcB +bMx chQ cjf -bFh +cdP bJC -cks -ckR +dpO +ckX clo -rrq +bVn bSJ clM clS bSJ -nOG -vuR -vTK -aaa -aaa -aaa -aaa -aaa +cZp +gEh +tcO aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -118781,25 +126220,25 @@ aaa aad aag aag -pVZ -psm -psm -psm -jFX -psm -psm -sAA -nYh -psm -ano -psm -qhB -xlX -wCh -psm -dmQ -dmQ -psm +fTl +taw +taw +taw +mRI +taw +taw +wpT +stA +taw +wTn +taw +nQw +oxy +wjP +taw +oQL +oQL +taw uBz aYj aoE @@ -118810,7 +126249,7 @@ arq arq arq aze -aBo +xYZ aDe arq arq @@ -118823,23 +126262,23 @@ anG mPX oIB wKF -bZw +hzb ltU oIB -fbx -cFA -vuv -joT -cxo -fbx -hlI -vuv -vuv -vuv -vuv -sdw -vuv -qMu +aPO +eDk +kNq +bCR +jei +aPO +fJp +kNq +kNq +kNq +kNq +qDB +kNq +fVe aag aag afm @@ -118878,20 +126317,20 @@ aaa aaa aaa aaa -wVb -hlz -eFH +emA +jEM +ikT aLT beT bdr bkg aMz bfy +bgY aPl -aPM aLT -aQP -aRT +aPn +blB bnt aRT ihY @@ -118906,12 +126345,12 @@ bdl ycp ycp tPj -mnf +ycp ycp bdl bdl rtj -fmf +agv bdl bdl bdl @@ -118931,30 +126370,30 @@ cfo chm bJD chR -bQB -bFi +cjf +bgW bJC -ckv -bTA +ckR +ckX cll bTA clG clg bVq bSJ -njT -ydx -vTK -aaa -aaa -aaa -aaa -aaa +ien +dFL +tcO aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -118984,25 +126423,25 @@ aaa aaa aad aag -pVZ -amJ -jXY -psm -ano -bjI -psm -cnY -nYh -psm -cWI -psm -adp -xlX -aeq -psm -dmQ -aeq -psm +fTl +vrZ +qlu +taw +wTn +kCu +taw +uPN +stA +taw +wFX +taw +lsh +oxy +hja +taw +oQL +hja +taw jMK ajR aoG @@ -119027,22 +126466,22 @@ iAB oIB phj vEf -pxj +cNK oIB -fbx -cxo -iEs -fbx -fbx -fbx -cxo -cxo -iwh -cxo -cxo -fbx -cxo -qMu +aPO +jei +oYr +aPO +aPO +aPO +jei +jei +lYt +jei +jei +aPO +jei +fVe aag ajZ aaa @@ -119081,19 +126520,19 @@ aaa aaa aaa aaa -wVb -tAi -eFH +emA +sEg +ikT aLT aLT aLT aLT brv nuA -bgW -aPM +bgY +aQT aLT -aQP +aTv blB oiQ lml @@ -119108,10 +126547,10 @@ jJs bdl fKT bGy -bKA +kOW snM iqo -moY +bdl clV crD kLP @@ -119135,19 +126574,19 @@ bJC cdf jxx cjf -bFh +cdP bJC -cks -ckR +dpO +ckX rXj gfo bSJ bSJ bSJ bSJ -nOG -cAH -vTK +cZp +xhO +tcO aaa aaa aaa @@ -119187,25 +126626,25 @@ aaa aaa aad aag -pVZ -amL -atz -psm -ouo -bjI -psm -jFX -psm -psm -xuI -psm -dmQ -xlX -dmQ -psm -cBB -irn -psm +fTl +hjT +rWb +taw +oAK +kCu +taw +mRI +taw +taw +tvA +taw +oQL +oxy +oQL +taw +cap +fiN +taw rFY ctC aoQ @@ -119228,24 +126667,24 @@ rFY ctC gPF oIB +opI +dha +pxj oIB -oIB -oIB -oIB -fbx -gHg -vuv -iTf -cxo -suk -chC -pTT -oLd -oLd -oLd -oyw -cxo -qMu +aPO +oUx +kNq +fPF +jei +nNT +jwJ +mgX +nZG +nZG +nZG +xGm +jei +fVe aag ajZ aaa @@ -119284,19 +126723,19 @@ aaa aaa aaa aaa -wVb -hlz -eFH +emA +jEM +ikT aLT beT bdr bpK aMz bfy -bgW -aPM +bgY +aQT aLT -aQP +aTv blB bnt aRT @@ -119338,19 +126777,19 @@ chn bJD chR cjf -bFh +cdP bJC -cks -ckR +dpO +ckX cll bTA clH oFV bVq bSJ -fTx -lGr -vTK +vUJ +hCq +tcO aaa aaa aaa @@ -119390,25 +126829,25 @@ aaa aaa aad aag -pVZ -jXY -coG -hSu -xlX -dmQ -aDg -dmQ -tLM -xlX -xlX -hSu -xlX -xlX -dmQ -psm -psm -psm -psm +fTl +qlu +uKl +kiR +oxy +oQL +jsu +oQL +gqt +oxy +oxy +kiR +oxy +oxy +oQL +taw +taw +taw +taw aEp lIw aoR @@ -119438,17 +126877,17 @@ loP qej loP loP -vuv -hlI -fbx -xxJ -ybO -yal -tpK -qKF -kaN -gHg -qMu +kNq +fJp +aPO +wXl +dJe +unQ +nxe +tjH +tVn +oUx +fVe aag ajZ aaa @@ -119487,20 +126926,20 @@ aaa aaa aaa aaa -wVb -eFH -hlz +emA +ikT +jEM aLT beU bdv aLT bry bfu -aPn +bgY jVr aLT kXa -aRZ +blB chL lAl aQL @@ -119513,7 +126952,7 @@ baq jJs bdl ntd -iVj +hgO eqb mLR hdE @@ -119540,20 +126979,20 @@ cgv bJC wqc chN -bQC +cjf lok bJC ihM -bTE +ckX clm hXY bSJ clN clT bSJ -cJP -vuR -vTK +xsv +gEh +tcO aaa aaa aaa @@ -119593,25 +127032,25 @@ aaa aaa aad aag -pVZ -amP -atD -psm -xlX -aDz -aRV -cyE -xlX -dmQ -uRQ -psm -dmQ -xlX -dmQ -psm -ahn -aiz -psm +fTl +wIu +wXJ +taw +oxy +kMa +qIa +iSB +oxy +oQL +hdy +taw +oQL +oxy +oQL +taw +liF +wPR +taw ndJ anJ aoS @@ -119641,17 +127080,17 @@ vqL xBY qwo loP -xgL -nho -fbx -xxJ -hlI -eRe -eRe -eRe -kaN -cxo -qMu +ang +hqu +aPO +wXl +fJp +iCD +iCD +iCD +tVn +jei +fVe aag ajZ aaa @@ -119690,9 +127129,9 @@ aaa aaa aaa aaa -wVb -iDm -hlz +emA +qGC +jEM aLT aLT aLT @@ -119712,8 +127151,8 @@ aQL aQL aLG aYO -aLG -jJs +kBK +hyt bdl tFS bdj @@ -119721,7 +127160,7 @@ bNs nwb mrM bdl -uWI +ycH pMJ xnI ayj @@ -119733,8 +127172,8 @@ jaR mJa wWP rsK -pJJ -buH +aGc +kkE iEb bIT bJC @@ -119754,9 +127193,9 @@ bSJ bSJ bSJ bSJ -wGi -woG -vTK +goM +tfQ +tcO aaa aaa aaa @@ -119796,25 +127235,25 @@ aaf aaf aag aag -pVZ -psm -psm -psm -ano -aDF -bYg -cNc -xlX -dmQ -gyt -psm -dmQ -xlX -dmQ -psm -dmQ -dmQ -psm +fTl +taw +taw +taw +wTn +wOv +tuJ +iKV +oxy +oQL +oFr +taw +mUL +oxy +oQL +taw +oQL +oQL +taw alG aDZ aoU @@ -119844,17 +127283,17 @@ wSn xBY lKa loP -ejK -cxo -fbx -xxJ -vuv -oeL -cxo -hkm -hlw -pmk -qMu +fvo +jei +aPO +wXl +kNq +jcE +jei +lVR +pHD +dhp +fVe aag aag aaf @@ -119889,13 +127328,13 @@ aaa aaa aaa aaa -wVb -wVb -wVb -wVb -wVb -eFH -eFH +emA +emA +emA +emA +emA +ikT +ikT aLT vZb tnY @@ -119915,7 +127354,7 @@ bES kcl aLG aYO -aLG +sou bAX bdl wIr @@ -119937,7 +127376,7 @@ bdl bdl bdl dhU -buH +vzq iEb bIT hNw @@ -119957,13 +127396,13 @@ hcI hcI vPK bSJ -nOG -vuR -vTK -vTK -vTK -vTK -vTK +cZp +gEh +tcO +tcO +tcO +tcO +tcO aaa aaa aaa @@ -119999,25 +127438,25 @@ aag aag aag aag -pVZ -amQ -dmQ -hSu -xlX -aDF -jXY -dxC -xlX -aDz -mNW -psm -adp -xlX -wCh -psm -dmQ -dmQ -psm +fTl +hEr +oQL +kiR +oxy +wOv +qlu +qAG +oxy +kMa +gQu +taw +lsh +oxy +wjP +taw +oQL +oQL +taw ylJ aDZ aoD @@ -120047,17 +127486,17 @@ kdi xBY kxo loP -sFF -cxo -fbx -xxJ -vuv -gUy -nho -oRj -hHU -cxo -qMu +nSk +jei +aPO +wXl +kNq +cke +hqu +oSR +fZI +jei +fVe aag aag aag @@ -120092,13 +127531,13 @@ aaa aaa aaa aaa -wVb -fTR -qaD -jeU -dHk -hlz -eFH +emA +hyb +kjY +kcG +tIF +jEM +ikT aWT aMH beV @@ -120133,11 +127572,11 @@ bdl bdl bdl bdl -cbo -gRn -cbo -cbo -gRn +reN +dEp +reN +htk +dEp bdl bdl cbV @@ -120160,13 +127599,13 @@ aMI wGE erG ewO -bWb -cAH -luk -rQj -ngs -gai -vTK +sEu +xhO +ffx +jhK +srl +lWY +tcO aaa aaa aaa @@ -120202,25 +127641,25 @@ aag aag aag aag -pVZ -amQ -atG -psm -seO -aDF -amP -egB -xlX -aDF -igf -psm -atD -xlX -xlX -hSu -xlX -xlX -hSu +fTl +hEr +xBS +taw +tTG +wOv +wIu +ydf +oxy +wOv +ixu +taw +wXJ +oxy +oxy +kiR +oxy +oxy +kiR aWd aDZ nfp @@ -120250,17 +127689,17 @@ xBY xBY jGI loP -vuv -hlI -cHq -xxJ -vuv -vuv -vuv -vuv -kmK -cxo -qMu +kNq +fJp +nOx +wXl +kNq +kNq +kNq +kNq +pAV +jei +fVe aag aag aag @@ -120295,13 +127734,13 @@ aaa aaa aaa aaa -wVb -vjx -eFH -eFH -eFH -eFH -eFH +emA +jkN +ikT +ikT +ikT +ikT +ikT aLT aZf duV @@ -120322,27 +127761,27 @@ kcl aLG aYO bZK -qic -xfc -bCH -vZA -bCH -bCH -uIp -bHm -bHm -bHm -wNm -bCH -bCH -bHm -bLS -bCH -lXF -bHm -bCH -bCH -qic +lZM +rSR +xss +rLK +xss +xss +uHk +dXb +dXb +dXb +cTX +xss +xss +dXb +ndm +xss +iFY +dXb +xss +xss +lZM cbW iEb bIT @@ -120363,13 +127802,13 @@ jGR jGR oqu bSJ -vuR -vuR -vuR -vuR -vuR -cAH -vTK +gEh +gEh +gEh +gEh +gEh +xhO +tcO aaa aaa aaa @@ -120405,25 +127844,25 @@ aag aag aag aag -pVZ -amW -auo -psm -xlX -bkR -bYi -eJd -xlX -aDF -jXY -psm -jXY -xlX -dmQ -psm -dmQ -dmQ -akd +fTl +oqc +smw +taw +oxy +rgk +nUT +cnP +oxy +wOv +qlu +taw +qlu +oxy +oQL +taw +oQL +oQL +lnD alG aDZ xrr @@ -120453,17 +127892,17 @@ odD xBY mOg oHx -fbx -oVP -fbx -gAt -tly -flE -flE -flE -xzo -cxo -qMu +aPO +iXB +aPO +gof +bVr +ivL +ivL +ivL +fVa +jei +fVe aag aag aag @@ -120498,9 +127937,9 @@ aaa aaa aaa aaa -wVb -ilZ -eFH +emA +fGi +ikT aLT aLT aLT @@ -120525,13 +127964,13 @@ aQL beB aYT bzY -aLd -aLd -bvS -aLd -aLd -aLd -aLd +cvx +cvx +bKJ +cvx +cvx +cvx +cvx vub vub vub @@ -120539,13 +127978,13 @@ owW vub vub vub -aLd -aLd -aLd -bvS -aLd -aLd -aLd +cvx +cvx +cvx +bKJ +cvx +cvx +cvx cbX cbS ccO @@ -120570,9 +128009,9 @@ bSJ bSJ bSJ bSJ -vuR -ydx -vTK +gEh +dFL +tcO aaa aaa aaa @@ -120608,25 +128047,25 @@ aag aag aag aag -pVZ -psm -psm -psm -ano -dmQ -dmQ -adE -xlX -wya -aiE -psm -jXY -xlX -aeq -psm -gIN -aiA -akd +fTl +taw +taw +taw +wTn +oQL +oQL +lUQ +oxy +tBU +iDs +taw +qlu +oxy +hja +taw +kLZ +tty +lnD alG aDZ xrr @@ -120656,17 +128095,17 @@ loP eMh loP loP -vuv -kJG -fbx -okd -eYH -rav -eYH -eYH -wWL -cxo -qMu +kNq +hnt +aPO +wSx +gYI +wPa +gYI +gYI +rzk +jei +fVe aag aag aag @@ -120701,9 +128140,9 @@ aaa aaa aaa aaa -wVb -hlz -eFH +emA +jEM +ikT aLT bBg vPv @@ -120773,9 +128212,9 @@ qNd hzu hcI bSJ -cAH -cAH -vTK +xhO +xhO +tcO aaa aaa aaa @@ -120811,25 +128250,25 @@ aag aag aag aag -pVZ -dmQ -meS -aAe -xlX -dmQ -psm -psm -jFX -psm -psm -psm -igf -xlX -dmQ -psm -psm -psm -psm +fTl +oQL +mOE +gUG +oxy +oQL +taw +taw +mRI +taw +taw +taw +ixu +oxy +oQL +taw +taw +taw +taw alG aDZ xrr @@ -120860,16 +128299,16 @@ vyI lPB oHl jWh -vuv -sdw -vuv -vuv -vuv -vuv -vuv -ldN -gHg -qMu +kNq +qDB +kNq +kNq +kNq +kNq +kNq +gGb +oUx +fVe aag aag aag @@ -120904,9 +128343,9 @@ aaa aaa aaa aaa -wVb -hlz -hlz +emA +jEM +jEM aLT nuN nuN @@ -120976,9 +128415,9 @@ rYp oEo oEo bSJ -cAH -cea -vTK +xhO +lMO +tcO aaa aaa aaa @@ -121014,25 +128453,25 @@ aag aag aag aag -pVZ -xlX -xlX -aBa -xlX -dmQ -psm -eKD -nZF -wMm -psm -adp -dmQ -xlX -dmQ -qWT -lWh -aiE -psm +fTl +oxy +oxy +bCv +oxy +oQL +taw +gCQ +rEs +tvr +taw +lsh +oQL +oxy +oQL +aYU +uxs +iDs +taw alG aDZ xrr @@ -121063,16 +128502,16 @@ hSk hSk uIv jWh -dCt -xhU -dsu -vuv -ozr -hWa -dCP -ldN -cxo -qMu +jZj +sRP +oko +kNq +tiY +qAK +xGK +gGb +jei +fVe aag aag aag @@ -121107,9 +128546,9 @@ aaa aaa aaa aaa -wVb -rVo -hlz +emA +oPF +jEM aLT vug vug @@ -121179,9 +128618,9 @@ yle wWX wWX bSJ -cAH -bpJ -vTK +xhO +xHa +tcO aaa aaa aaa @@ -121217,25 +128656,25 @@ aag aag aag aag -pVZ -ano -dmQ -aBg -dmQ -boZ -psm -eKD -oyo -wQx -psm -lhL -dmQ -xlX -dmQ -dmQ -dmQ -soQ -psm +fTl +wTn +oQL +qmq +oQL +nXo +taw +gCQ +bNc +tCC +taw +ftG +oQL +oxy +oQL +oQL +oQL +keE +taw alJ aDZ xrr @@ -121266,16 +128705,16 @@ hSk hSk uIv jWh -xrN -fbx -ije -vuv -cxo -wwD -oda -ldN -cOi -qMu +eHz +aPO +tMT +kNq +jei +ltm +oAT +gGb +cmV +fVe aag aag aag @@ -121310,9 +128749,9 @@ aaa aaa aaa aaa -wVb -qnP -uia +emA +rIV +nvI aLT iPS vAE @@ -121382,9 +128821,9 @@ vSW scy kPJ bSJ -cAH -ubd -vTK +xhO +eeR +tcO aaa aaa aaa @@ -121420,25 +128859,25 @@ aag aag aag aag -pVZ -xlX -psm -psm -jFX -psm -psm -fnZ -xlX -xoh -ckB -afl -jUL -afl -afl -afl -afl -afl -wDR +fTl +oxy +taw +taw +xcs +taw +taw +utC +oxy +ikC +vRJ +gNQ +laP +gNQ +gNQ +gNQ +gNQ +gNQ +xDG alP ajW apc @@ -121469,16 +128908,16 @@ vyI kpQ vSE jWh -ppc -iYp -iZX -vuv -cxo -wwD -rku -ldN -cxo -qMu +nwA +xZz +kRN +kNq +jei +ltm +ejj +gGb +jei +fVe aag aag aag @@ -121513,9 +128952,9 @@ aaa aaa aaa aaa -wVb -tAi -moE +emA +sEg +kDd aLT aLT aLT @@ -121544,7 +128983,7 @@ kFY jmK bDL bbs -iit +ccQ bCN rbF vub @@ -121585,9 +129024,9 @@ bSJ bSJ bSJ bSJ -pUY -emG -vTK +qid +lNk +tcO aaa aaa aaa @@ -121623,33 +129062,33 @@ aag aag aag aag -pVZ -xlX -psm -aCu -aQA -bpf -psm -eKD -pBW -xtD -psm -psm -psm -jFX -psm -psm -psm -psm -psm +fTl +oxy +taw +tZM +qEZ +frV +taw +gCQ +uqJ +vbu +taw +taw +taw +mRI +taw +taw +taw +taw +taw ylJ aDZ apd -alO -alO -alO -alO -alO +wDM +wDM +wDM +wDM +wDM axD amA aBo @@ -121672,16 +129111,16 @@ qbZ jWh jWh jWh -cDW -fbx -cXq -vuv -vJy -cxo -hkm -hlw -pmk -qMu +fQl +aPO +nGZ +kNq +xQe +jei +lVR +pHD +dhp +fVe aag aag aag @@ -121716,9 +129155,9 @@ aaa aaa aaa aaa -wVb -wzg -eFH +emA +eTD +ikT aLT bBg vPv @@ -121788,9 +129227,9 @@ mAV hzu hcI bSJ -jea -cAH -vTK +rqz +xhO +tcO aaa aaa aaa @@ -121826,17 +129265,17 @@ aag aag aag aag -pVZ -yeP -psm -aDf -aRk -brT -psm -eKD -nZF -xxT -psm +fTl +lmq +taw +mDz +pIf +uwf +taw +gCQ +rEs +bhZ +taw uiG rTZ tfb @@ -121848,11 +129287,11 @@ ptK alG aYj apd -alO +wDM aOM aoW aty -alO +wDM axE amA aBp @@ -121875,16 +129314,16 @@ cKL jbH rJh jWh -tyz -eZQ -fTi -vuv -tzi -cxo -oRj -cVs -cxo -qMu +rJY +dPl +qQG +kNq +cfm +jei +oSR +grd +jei +fVe aag aag aag @@ -121919,9 +129358,9 @@ aaa aaa aaa aaa -wVb -jMi -eFH +emA +efP +ikT aLT cjc cjc @@ -121991,9 +129430,9 @@ yfm fXN fXN bSJ -vuR -cAH -vTK +gEh +xhO +tcO aaa aaa aaa @@ -122029,17 +129468,17 @@ aag aag aag aag -pVZ -xlX -psm -psm -psm -psm -psm -psm -jFX -psm -psm +fTl +oxy +taw +taw +taw +taw +taw +taw +mRI +taw +taw bNM wkX jhx @@ -122051,7 +129490,7 @@ gpc aWd aYj apd -alO +wDM uto aoX auU @@ -122078,16 +129517,16 @@ soP eoG uIv jWh -vuv -sdw -vuv -vuv -vuv -hlI -qiI -ldN -gHg -qMu +kNq +qDB +kNq +kNq +kNq +fJp +ekz +gGb +oUx +fVe aag aag aag @@ -122122,9 +129561,9 @@ aaa aaa aaa aaa -wVb -pQG -eFH +emA +uzv +ikT aLT cjc cjc @@ -122194,9 +129633,9 @@ yfm fXN fXN bSJ -cAH -ydx -vTK +xhO +dFL +tcO aaa aaa aaa @@ -122232,13 +129671,13 @@ aag aag aag aag -pVZ -ano -meS -cbA -aRG -bsF -psm +fTl +wTn +mOE +sWp +nUm +moL +taw mDJ owg xUA @@ -122254,7 +129693,7 @@ ptK wOh ajP apd -alO +wDM aOQ fxI nLJ @@ -122281,16 +129720,16 @@ ovi iat eim jWh -vuv -qFW -vuv -vuv -kDi -vSH -tly -hlw -cxo -qMu +kNq +spd +kNq +kNq +dVH +cAz +bVr +pHD +jei +fVe aag aag aag @@ -122325,9 +129764,9 @@ aaa aaa aaa aaa -wVb -fhA -eFH +emA +hfO +ikT aLT iPS vAE @@ -122397,9 +129836,9 @@ gEo scy kPJ bSJ -vuR -ebO -vTK +gEh +pFr +tcO aaa aaa aaa @@ -122435,13 +129874,13 @@ aag aag aag aag -pVZ -xlX -xlX -ePs -xlX -xlX -hSu +fTl +oxy +oxy +tIN +oxy +oxy +kiR owg owg uKV @@ -122457,11 +129896,11 @@ eNi alG aDZ apf -alO +wDM aOH aJf aMw -alO +wDM xsl aya atq @@ -122484,16 +129923,16 @@ thV uWV uIv oSx -vuv -gHg -vuv -vuv -hlI -qiI -nho -cxo -trW -qMu +kNq +oUx +kNq +kNq +fJp +ekz +hqu +jei +qDS +fVe aag aag aag @@ -122528,9 +129967,9 @@ aaa aaa aaa aaa -wVb -vjx -eFH +emA +jkN +ikT aLT aLT aLT @@ -122600,9 +130039,9 @@ bSJ bSJ bSJ bSJ -vuR -tAR -vTK +gEh +kMR +tcO aaa aaa aaa @@ -122638,13 +130077,13 @@ aah aag aag aag -pVZ -alT -iHF -voA -aRV -aRV -psm +fTl +pWw +hbE +cbc +qIa +qIa +taw ptK afX ptK @@ -122660,11 +130099,11 @@ eNi alG aYj apd -alO -alO -alO -alO -alO +wDM +wDM +wDM +wDM +wDM axI amA amx @@ -122687,16 +130126,16 @@ upR fCL uIv vVw -lwi -cxo -iEs -cxo -fbx -fbx -fbx -kfX -qVU -qMu +iSV +jei +oYr +jei +aPO +aPO +aPO +gtQ +wiO +fVe aag aag aag @@ -122731,14 +130170,14 @@ aaa aaa aaa aaa -wVb -fTR -hlz -hlz -hlz -hlz -fTR -hlz +emA +hyb +jEM +jEM +jEM +jEM +hyb +jEM aLT cjc cjc @@ -122779,8 +130218,8 @@ lJu xYP hLI laU -drt -rZF +bJz +rrV bJz bJC oXb @@ -122798,14 +130237,14 @@ kPJ fXN fXN bSJ -rHs -ngs -vuR -cAH -cAH -cAH -fKl -vTK +enY +srl +gEh +xhO +xhO +xhO +jay +tcO aaa aaa aaa @@ -122841,13 +130280,13 @@ aaa aad aag aag -pVZ -anu -auD -tIU -nEG -jXY -psm +fTl +prX +oYs +odG +biC +qlu +taw bKm hsr mDJ @@ -122890,16 +130329,16 @@ pZK fCL uIv lFA -vuv -cxo -vuv -vuv -cxo -cxo -cxo -sXK -tbD -qMu +kNq +jei +kNq +kNq +jei +jei +gYU +oGi +dVR +fVe aag aag ajZ @@ -122934,14 +130373,14 @@ aaa aaa aaa aaa -wVb -wVb -wVb -wVb -wVb -hlz -eFH -hlz +emA +emA +emA +emA +emA +jEM +ikT +jEM aLT iPS vAE @@ -122980,11 +130419,11 @@ xYP jmK hcw cgE -hLI +yht blq -bIT +buJ jHe -bIS +buH bJC kIP cfo @@ -123001,14 +130440,14 @@ oer vSW scy bSJ -tSr -pUY -lGr -vTK -vTK -vTK -vTK -vTK +mCE +qid +hCq +tcO +tcO +tcO +tcO +tcO aaa aaa aaa @@ -123044,13 +130483,13 @@ aaa aad aag aag -pVZ -pVZ -pVZ -pVZ -pVZ -pVZ -pVZ +fTl +fTl +fTl +fTl +fTl +fTl +fTl qJx hsr mDJ @@ -123093,16 +130532,16 @@ ovi fCL lYk bYn -qMu -qMu -qMu -qMu -qMu -qMu -qMu -qMu -qMu -qMu +fVe +fVe +fVe +fVe +fVe +fVe +fVe +fVe +fVe +fVe aag aag ajZ @@ -123141,10 +130580,10 @@ aaa aaa aaa aaa -wVb -rVo -eFH -hlz +emA +oPF +ikT +jEM aLT meY meY @@ -123183,11 +130622,11 @@ wLm wLm lJu xYP -hLI +wbV laU -eUz -iEb -bIT +buH +hop +buH bJC bJC vLA @@ -123204,10 +130643,10 @@ oer oer oer oer -ybr -vuR -ebO -vTK +uVp +gEh +pFr +tcO aaa aaa aaa @@ -123344,18 +130783,18 @@ aaa aaa aaa aaa -wVb -cbZ -eFH -eFH -eFH -eFH -eFH -eFH -eFH -hlz -eFH -hlz +emA +wtn +ikT +ikT +ikT +ikT +ikT +ikT +ikT +jEM +ikT +jEM aQL qZX qZX @@ -123389,8 +130828,8 @@ xYP jew laU buH -iEb -bIT +hop +buH bJC lbf cfo @@ -123399,18 +130838,18 @@ lbf lbf lbf bJC -vuR -oyG -vuR -cAH -rDi -pXn -cAH -vuR -vuR -vuR -vuR -vTK +gEh +cmN +gEh +xhO +dzX +foS +xhO +gEh +gEh +gEh +gEh +tcO aaa aaa aaa @@ -123547,18 +130986,18 @@ aaa aaa aaa aaa -wVb -bbv -hJb -hlz -hlz -hlz -hlz -wZH -hlz -hlz -hlz -hlz +emA +pGj +uoj +jEM +jEM +jEM +jEM +fBo +jEM +jEM +jEM +jEM aQL qDq qDq @@ -123592,8 +131031,8 @@ huK jeQ bbs buH -iEb -bIT +hop +buH xSw oXb cfo @@ -123602,18 +131041,18 @@ oXb oXb oXb bJC -vuR -cAH -vuR -cAH -vuR -dcS -cAH -vuR -cAH -cAH -xZK -vTK +gEh +xhO +gEh +xhO +gEh +hWH +xhO +gEh +xhO +xhO +rhD +tcO aaa aaa aaa @@ -123701,2038 +131140,18 @@ gIJ ovi fCL tiK -bYn -aag -aag -aag -aag -ajZ -opJ -bdH -bdH -bdH -bdH -bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aKQ -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -wVb -wVb -wVb -wVb -wVb -wVb -wVb -wVb -wVb -wVb -eFH -rdK -aQL -qDq -qDq -qDq -osA -cHl -cHl -bTb -beB -aYT -beB -bbs -cdp -cdp -jks -cdp -bbs -bJf -bJf -bJf -bJf -xba -dNt -dNt -dNt -dNt -bbs -fJO -fJO -fJO -fJO -bbs -bJz -cbS -bHW -xSw -ejo -ejo -niY -oXb -oXb -oXb -bJC -cAH -vuR -vuR -vTK -vTK -hTk -vTK -vTK -vTK -vTK -vTK -vTK -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -"} -(239,1,1) = {" -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -bdH -bdH -bdH -bdH -bdH -aad -cuC -ptK -ptK -ptK -ptK -bNM -iEr -owg -eNi -sjj -fzP -sAC -wYY -alG -aYj -apd -alR -amA -atq -fhf -alO -axQ -azt -auA -aDD -aFD -inw -xEO -xEO -lnP -alR -alG -aYj -apf -jWh -qLs -qLs -cRi -jWh -upR -uWV -uIv -bYn -bYn -bYn -aag -aag -ajZ -bdH -bdH -bdH -bdH -bdH -bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aKQ -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -wVb -iDm -fTR -aQL -ksp -ksp -rou -qDq -qDq -qDq -bTb -aLG -aYO -aLG -bBh -aLG -aLG -aLG -aLG -byC -aLG -beB -aLG -aLG -bsT -buH -buH -bJz -buH -bSd -buH -buH -buH -buH -cbD -buH -iEb -bIT -xSw -oXb -oXb -oXb -kIP -qer -kIP -bJC -cAH -pFP -ebO -vTK -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -"} -(240,1,1) = {" -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -bdH -bdH -bdH -bdH -bdH -hzc -hzc -hzc -cuC -dbw -uGQ -bNM -rtd -owg -eNi -fcM -uzE -qsL -nim -qhc -ajP -apd -alR -amA -atq -cSm -alO -elf -amA -atq -aDE -asT -aHw -iWR -iWR -kbx -alR -alG -aYj -apd -jWh -jWh -jlQ -jlQ -jWh -lhJ -fCL -uIv -oXJ -kPR -bYn -hzc -hzc -hzc -bdH -bdH -bdH -bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aKQ -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -wVb -eFH -hlz -aQL -aQL -aQL -aQL -ksp -rou -rou -aQL -aLG -aZl -tBF -sOm -tBF -aQt -bhn -aQt -aQt -aQt -crW -aQt -aQt -mji -buI -buI -bUz -buI -buI -buI -bCE -buI -bFu -cbE -bFu -bIl -bIX -bJC -kIP -qer -kIP -bJC -bJC -bJC -bJC -vuR -vuR -vuR -vTK -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -"} -(241,1,1) = {" -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -bdH -bdH -bdH -bdH -bdH -yjq -bZc -iHc -sbq -rLk -hsr -bNM -iEr -owg -eNi -xlC -gyO -kTN -eNi -alJ -aYj -apd -alR -amA -atq -civ -dof -atq -arm -atc -atc -atc -inw -xEO -xEO -aOV -alR -alG -aYj -apd -jWh -kUw -dod -eNv -rxV -thV -fCL -uIv -hSk -vVw -jzD -iHc -bZc -mZF -bdH -bdH -bdH -bdH -bdH -bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aKQ -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -wVb -eFH -hlz -hlz -gjN -hlz -rdK -rdK -rdK -rdK -rdK -tfl -aZm -aWR -buU -aWR -bjb -bal -bjb -bjb -aWR -bNX -aWR -aWR -bsV -buJ -buJ -bUG -buJ -bzK -bzK -bCF -bzK -buJ -cdZ -buJ -buJ -jMb -bJC -bJC -bJC -bJC -bJC -cAH -cAH -cAH -vuR -cAH -wZT -vTK -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -"} -(242,1,1) = {" -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -bdH -bdH -bdH -bdH -bdH -yjq -jgw -wbJ -sbq -rLk -hsr -bNM -iEr -fhH -eNi -oNb -iFC -qAA -eNi -alG -aDZ -apd -alR -arK -atc -civ -kwd -atq -atq -amA -aDH -aFI -alO -aJq -aMG -aOW -alR -alG -aYj -apd -jWh -tZP -hSk -hSk -vyI -thV -fCL -uIv -hSk -vVw -jzD -wLi -jgw -mZF -bdH -bdH -bdH -bdH -bdH -bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aKQ -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -aaa -aaa -aaa -aaa -aaa -aaa -wVb -jmg -hlz -eFH -eFH -hlz -hlz -gwF -eFH -eFH -rdK -rdK -aZn -rdK -rdK -bCW -bEH -bHt -bJi -bKE -bKE -bkZ -bpX -bpX -bpX -bpX -bpX -bkZ -bWV -jkd -bYE -bZz -cav -bBa -haq -haq -lAA -haq -haq -cAH -cAH -cAH -cAH -cAH -cAH -cAH -cAH -cAH -ngs -vTK -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -"} -(243,1,1) = {" -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -bdH -bdH -bdH -bdH -bdH -hzc -hzc -hzc -cuC -vvy -uGQ -bNM -rtd -owg -eNi -eNi -eNi -eNi -eNi -aEp -lIw -aEp -alO -alO -alO -alO -alO -azi -azi -ets -kvh -rka -alO -alO -alO -alO -alO -aEp -lIw -aEp -jWh -nDL -vyI -vyI -wTJ -thV -uWV -uIv -oXJ -uGc -bYn -hzc -hzc -hzc -bdH -bdH -bdH -bdH -bdH -bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aKQ -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -aaa -aaa -aaa -aaa -aaa -aaa -wVb -epA -wDm -hlz -hlz -hlz -hlz -gwF -hlz -hlz -rdK -aYc -hlz -hlz -rdK -rdK -aVl -bHu -aVl -bkZ -bkZ -bkZ -bpY -brw -bqf -buK -bvI -bkZ -bkZ -bkZ -aVl -bZA -aVl -haq -haq -cAH -vuR -cAH -cAH -vuR -vuR -vuR -cAH -cAH -cAH -cAH -vuR -sIV -hBU -vTK -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -"} -(244,1,1) = {" -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -bdH -bdH -bdH -bdH -bdH -aad -aag -aag -cuC -cuC -cuC -bNM -iEr -owg -owg -dWX -owg -owg -ptK -aGD -aPb -apj -aqq -aPa -eky -eky -alO -aqY -aqY -alO -aqY -aqY -alO -eky -eky -aPa -aqq -aGD -aPb -kff -jWh -xXa -xXa -xXa -xXa -pZK -fCL -uTZ -bYn -bYn -bYn -aag -aag -ajZ -bdH -bdH -bdH -bdH -bdH -bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aKQ -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -aaa -aaa -aaa -aaa -aaa -aaa -wVb -pIk -bNT -wul -eFH -eFH -eFH -ybS -wul -hlz -hlz -hlz -hlz -eFH -eFH -rdK -bEU -bjl -bJj -bkZ -bmM -cEx -bpZ -brx -boH -jnf -hfO -bxo -byz -bkZ -bEV -bCI -ccW -haq -pFM -vuR -vuR -vuR -vuR -cAH -fXd -cAH -vuR -cAH -vuR -vuR -rgA -brX -mfI -vTK -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -"} -(245,1,1) = {" -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -bdH -bdH -bdH -bdH -bdH -aae -aah -aah -aah -aag -uMc -vFv -wOt -jhx -jhx -keR -jhx -keR -dwI -aTS -wqq -agJ -nlV -ckn -foI -ckn -ckn -ayg -aDO -aDO -aDO -opy -ckn -ckn -foI -ckn -nlV -aGC -wqq -aTS -mPh -soP -tWi -soP -pDr -pDr -tpd -eim -pql -aag -aah -aah -aah -afm -bdH -bdH -bdH -bdH -bdH -bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aKQ -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -aaa -aaa -aaa -aaa -aaa -aaa -wVb -wVb -wVb -wVb -wVb -wVb -wVb -aUx -aVl -aVl -aVl -bxE -aVl -rdK -iDm -rdK -bEU -bjl -bJj -bkZ -bmN -boI -boI -brx -boH -jnf -shb -boI -byA -bkZ -bBc -bCI -ccW -haq -vuR -haq -aVl -bxE -aep -aep -aep -dKL -vTK -vTK -vTK -vTK -vTK -vTK -vTK -vTK -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -"} -(246,1,1) = {" -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -bdH -bdH -bdH -bdH -bdH -aaa -aaa -aaa -aaa -aad -uMc -riJ -kPG -kPG -bFt -kPG -kPG -cVw -ptK -aIe -anR -lNl -aqq -eky -pCb -eky -eky -lDO -wbR -wbR -wbR -ohR -eky -eky -pCb -eky -aqq -aIe -iYj -lNl -jWh -tim -uWV -ttd -nLk -tim -khE -rID -pql -ajZ -aaa -aaa -aaa -aaa -bdH -bdH -bdH -bdH -bdH -bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aKQ -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aad -aag -aag -aUx -pXj -btm -aVl -bxF -byJ -aVl -vsV -rdK -bEU -bjl -ccW -bKO -bvL -bvL -bvL -bPR -bRi -bSk -bvL -bvL -bvL -bKO -bEU -bCI -ccW -haq -mHR -aVl -ccx -bBm -ggQ -afk -afk -dKL -aag -aag -ajZ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -"} -(247,1,1) = {" -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aad -cuC -uMc -uMc -cuC -ptK -ucp -cIW -ptK -ptK -psm -dKm -psm -aHe -iOp -oTP -eky -eky -eAC -aBu -aBu -aBu -eAC -eky -eky -sLt -xXu -aHe -vuv -vuv -vuv -jWh -jWh -olk -jWh -jWh -bYn -pql -pql -bYn -ajZ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aKQ -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aad -aag -aag -aUx -pXj -btm -aVl -bxG -byK -aVl -hlz -rdK -wun -bht -pfh -pWf -bmP -pop -lJa -bPZ -bRj -bSl -smr -nel -bQu -bRu -bYI -pIf -bJk -haq -cAH -aVl -byQ -ccR -aWZ -bLx -bMJ -dKL -aag -aag -ajZ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -"} -(248,1,1) = {" -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aae -aah -aah -aag -uMc -uXL -gPc -trB -exy -ptK -psm -psm -psm -eky -eky -pCb -eky -uNV -aHe -aDQ -aDQ -aDQ -aHe -uNV -eky -pCb -eky -rqj -vuv -nfS -emx -jWh -qCg -xjw -pfA -xAC -pql +bYn aag -aah -aah -afm +aag +aag +aag +ajZ +opJ +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -125750,26 +131169,93 @@ aaa aaa aaa aaa +aab aaa aaa +aKQ aaa aaa +aab aaa aaa aaa aaa aaa aaa -aab aaa aaa -aKQ aaa aaa -aab aaa aaa aaa +emA +emA +emA +emA +emA +emA +emA +emA +emA +emA +ikT +oBr +aQL +qDq +qDq +qDq +osA +cHl +cHl +bTb +beB +aYT +beB +bbs +cdp +cdp +jks +cdp +bbs +bJf +bJf +bJf +bJf +xba +dNt +dNt +dNt +dNt +bbs +fJO +fJO +fJO +fJO +bbs +bJz +rrV +bJz +xSw +ejo +ejo +niY +oXb +oXb +oXb +bJC +xhO +gEh +gEh +tcO +tcO +ucy +tcO +tcO +tcO +tcO +tcO +tcO aaa aaa aaa @@ -125782,58 +131268,22 @@ aaa aaa aaa aaa -bdH aaa aaa +aab aaa aaa +"} +(239,1,1) = {" +aaa +aaa +aab aaa aaa aaa aaa aaa aaa -aae -aah -aah -aUx -uLN -btm -btm -bxH -byL -aVl -bxE -aVl -vWK -bjl -ccW -bKO -bqa -bqa -aaj -bQa -bRk -bSm -bvK -bUI -bqa -bKO -bEU -bCI -ccW -aVl -bxE -aVl -ccy -diF -aep -aep -aep -dKL -aah -aah -afm aaa aaa aaa @@ -125844,6 +131294,67 @@ aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +aad +cuC +ptK +ptK +ptK +ptK +bNM +iEr +owg +eNi +sjj +fzP +sAC +wYY +alG +aYj +apd +alR +amA +atq +fhf +alO +axQ +azt +auA +aDD +aFD +inw +xEO +xEO +lnP +alR +alG +aYj +apf +jWh +qLs +qLs +cRi +jWh +upR +uWV +uIv +bYn +bYn +bYn +aag +aag +ajZ +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -125864,8 +131375,7 @@ aaa aab aaa aaa -"} -(249,1,1) = {" +aKQ aaa aaa aab @@ -125891,6 +131401,56 @@ aaa aaa aaa aaa +emA +qGC +hyb +aQL +ksp +ksp +rou +qDq +qDq +qDq +bTb +aLG +aYO +aLG +bBh +aLG +aLG +aLG +aLG +byC +aLG +beB +aLG +aLG +bsT +buH +buH +bJz +buH +bSd +buH +buH +buH +buH +cbD +buH +hop +buH +xSw +oXb +oXb +oXb +kIP +qer +kIP +bJC +xhO +wYd +pFr +tcO aaa aaa aaa @@ -125898,41 +131458,6 @@ aaa aaa aaa aaa -aad -uMc -uXL -eet -fcP -pDh -ptK -xlX -xlX -hSu -aMT -aMT -aMR -qeF -aHe -aHe -aDX -yge -aEm -aHe -aHe -okg -aMR -aMT -aMT -iEs -cxo -cxo -jWh -uUV -rsW -rsW -fnQ -pql -ajZ aaa aaa aaa @@ -125948,10 +131473,14 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(240,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -125963,13 +131492,72 @@ aaa aaa aaa aaa -aab aaa aaa -aKQ aaa aaa -aab +aaa +bdH +bdH +bdH +bdH +bdH +bdH +hzc +hzc +hzc +cuC +dbw +uGQ +bNM +rtd +owg +eNi +fcM +uzE +qsL +nim +qhc +ajP +apd +alR +amA +atq +cSm +alO +elf +amA +atq +aDE +asT +aHw +iWR +iWR +kbx +alR +alG +aYj +apd +jWh +jWh +jlQ +jlQ +jWh +lhJ +fCL +uIv +oXJ +kPR +bYn +hzc +hzc +hzc +bdH +bdH +bdH +bdH +aaa +aaa aaa aaa aaa @@ -125985,13 +131573,15 @@ aaa aaa aaa aaa -bdH aaa aaa +aab aaa aaa +aKQ aaa aaa +aab aaa aaa aaa @@ -125999,41 +131589,6 @@ aaa aaa aaa aaa -aUx -btn -btm -btm -bxI -byM -aVl -nmb -aVl -brI -bjl -sPA -bkZ -bmR -boI -bqe -brx -tzz -jnf -ePY -bxr -byD -bkZ -bYK -bCI -oAd -aVl -fLX -aVl -byQ -ccS -ggQ -bLy -bLy -dKL aaa aaa aaa @@ -126049,6 +131604,59 @@ aaa aaa aaa aaa +emA +ikT +jEM +aQL +aQL +aQL +aQL +ksp +rou +ksp +aQL +aLG +aZl +tzf +mRS +tzf +tBL +bhn +tBL +tBL +tBL +crW +tBL +tBL +mji +ftx +ftx +bUz +ftx +ftx +ftx +bCE +ftx +hvp +rUs +hvp +bIl +bIR +bJC +kIP +qer +kIP +bJC +bJC +bJC +bJC +gEh +gEh +gEh +tcO +aaa +aaa +aaa aaa aaa aaa @@ -126064,17 +131672,18 @@ aaa aaa aaa aaa -aab aaa aaa -"} -(250,1,1) = {" aaa aaa aab aaa aaa +"} +(241,1,1) = {" +aaa aaa +aab aaa aaa aaa @@ -126091,6 +131700,67 @@ aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +yjq +bZc +iHc +sbq +rLk +hsr +bNM +iEr +owg +eNi +xlC +gyO +kTN +eNi +alJ +aYj +apd +alR +amA +atq +civ +dof +atq +arm +atc +atc +atc +inw +xEO +xEO +aOV +alR +alG +aYj +apd +jWh +kUw +dod +eNv +rxV +thV +fCL +uIv +hSk +vVw +jzD +iHc +bZc +mZF +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -126101,41 +131771,6 @@ aaa aaa aaa aaa -aad -uMc -cQg -wxj -lht -rYv -ptK -dmQ -jBB -psm -svf -arV -aMS -eky -aDQ -ayi -eky -aBx -eky -jlX -aDQ -eky -aMS -arV -vUh -vuv -xct -cxo -jWh -dkS -rsW -naQ -fnQ -pql -ajZ aaa aaa aaa @@ -126143,10 +131778,13 @@ aaa aaa aaa aaa +aab aaa aaa +aKQ aaa aaa +aab aaa aaa aaa @@ -126166,13 +131804,60 @@ aaa aaa aaa aaa -aab aaa aaa -aKQ aaa +emA +ikT +jEM +jEM +hYf +jEM +oBr +oBr +oBr +oBr +oBr +tfl +aLG +aLG +bBh +aLG +aNO +sLE +aNO +aNO +aLG +beB +aLG +aLG +bsV +buH +buH +bJz +buH +bHa +bHa +hop +bHa +buH +cbD +buH +buH +jMb +bJC +bJC +bJC +bJC +bJC +xhO +xhO +xhO +gEh +xhO +xfq +tcO aaa -aab aaa aaa aaa @@ -126188,55 +131873,23 @@ aaa aaa aaa aaa -bdH aaa aaa aaa aaa aaa aaa +aab aaa aaa +"} +(242,1,1) = {" aaa aaa +aab aaa aaa aaa -aUx -sXV -cWt -cWt -pFA -byN -bAf -bBq -bAf -bje -bhw -ccW -bkZ -bkZ -wie -boI -brx -bNZ -jnf -boI -gXq -bkZ -bkZ -hdg -bCJ -bEj -cce -cbH -cce -ccz -ccT -aWZ -bLz -bMK -dKL aaa aaa aaa @@ -126250,6 +131903,67 @@ aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +yjq +jgw +wbJ +sbq +rLk +hsr +bNM +iEr +fhH +eNi +oNb +iFC +qAA +eNi +alG +aDZ +apd +alR +arK +atc +civ +kwd +atq +atq +amA +aDH +aFI +alO +aJq +aMG +aOW +alR +alG +aYj +apd +jWh +tZP +hSk +hSk +vyI +thV +fCL +uIv +hSk +vVw +jzD +wLi +jgw +mZF +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -126270,8 +131984,7 @@ aaa aab aaa aaa -"} -(251,1,1) = {" +aKQ aaa aaa aab @@ -126290,13 +132003,6 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa bdH aaa aaa @@ -126304,42 +132010,56 @@ aaa aaa aaa aaa -aad -cuC -ptK -ptK -afX -ptK -ptK -dmQ -psm -psm -eky -arV -aMS -eky -aDQ -pyy -eky -eky -eky -dLc -aDQ -eky -aMS -arV -eky -vuv -vuv -cxo -jWh -jWh -kLc -jWh -jWh -bYn -ajZ -aaa +emA +kAv +jEM +ikT +ikT +jEM +jEM +gCu +ikT +ikT +oBr +oBr +qPn +oBr +oBr +bCW +bEH +bHt +bJi +bKE +bKE +oJk +lNR +lNR +lNR +lNR +lNR +oJk +bWV +jkd +bYE +bZz +cav +bBa +ljv +ljv +sUi +ljv +ljv +xhO +xhO +xhO +xhO +xhO +xhO +xhO +xhO +xhO +srl +tcO aaa aaa aaa @@ -126362,20 +132082,21 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(243,1,1) = {" aaa aaa +aab aaa aaa aaa -aab aaa aaa -aKQ aaa aaa -aab aaa aaa aaa @@ -126385,13 +132106,73 @@ aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +hzc +hzc +hzc +cuC +vvy +uGQ +bNM +rtd +owg +eNi +eNi +eNi +eNi +eNi +aEp +lIw +aEp +alO +alO +alO +alO +alO +azi +azi +ets +kvh +rka +alO +alO +alO +alO +alO +aEp +lIw +aEp +jWh +nDL +vyI +vyI +wTJ +thV +uWV +uIv +oXJ +uGc +bYn +hzc +hzc +hzc +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa aaa aaa aaa -bdH aaa aaa aaa @@ -126403,45 +132184,13 @@ aaa aaa aaa aaa +aab aaa aaa -dKL -aep -aep -aep -bkt -btm -fxu -bBp -fxu -bFc -bjl -bjd -gXY -bkZ -xlY -boI -brx -bNZ -jnf -boI -kqc -bkZ -tmA -bfs -bCI -cay -fxu -cbG -fxu -ccA -bZE -aep -aep -aep -dKL +aKQ aaa aaa +aab aaa aaa aaa @@ -126457,12 +132206,63 @@ aaa aaa aaa aaa +bdH aaa aaa aaa aaa aaa aaa +emA +qFS +pPG +jEM +jEM +jEM +jEM +gCu +jEM +jEM +oBr +sRM +jEM +jEM +oBr +oBr +sqg +rPQ +sqg +oJk +oJk +oJk +oRW +mxT +pHc +eVE +jMy +oJk +oJk +oJk +sqg +mgu +sqg +ljv +ljv +xhO +gEh +xhO +xhO +gEh +gEh +gEh +xhO +xhO +xhO +xhO +gEh +aEr +keO +tcO aaa aaa aaa @@ -126470,14 +132270,10 @@ aaa aaa aaa aaa -aab aaa aaa -"} -(252,1,1) = {" aaa aaa -aab aaa aaa aaa @@ -126489,10 +132285,14 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(244,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -126507,41 +132307,6 @@ aaa aaa aaa aaa -aad -pVZ -gfh -aDg -xlX -kSd -dmQ -aeq -psm -aNe -eky -arV -aMS -eky -aHe -jMQ -eky -eky -eky -dEn -aHe -eky -aMS -arV -eky -aNe -vuv -ahb -cxo -nJy -fbx -iwh -kfv -qMu -ajZ aaa aaa bdH @@ -126550,35 +132315,66 @@ bdH bdH bdH bdH +aad +aag +aag +cuC +cuC +cuC +bNM +iEr +owg +owg +dWX +owg +owg +ptK +aGD +aPb +apj +aqq +aPa +eky +eky +alO +aqY +aqY +alO +aqY +aqY +alO +eky +eky +aPa +aqq +aGD +aPb +kff +jWh +xXa +xXa +xXa +xXa +pZK +fCL +uTZ +bYn +bYn +bYn +aag +aag +ajZ bdH bdH bdH bdH bdH bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -aaa aaa aaa -aab -aaa aaa -aKQ aaa aaa -aab aaa aaa aaa @@ -126591,10 +132387,13 @@ aaa aaa aaa aaa +aab aaa aaa +aKQ aaa aaa +aab aaa aaa aaa @@ -126608,49 +132407,65 @@ aaa aaa aaa aaa -dKL -afk -aWo -aWZ -byg -byO -aVl -bxE -aVl -bFe -bjl -bjg -ccW -bKO -boI -boI -brx -tzz -jnf -boI -boI -bKO -bEU -bYM -cxe -caz -aVl -bxE -aVl -ccB -ccV -aWZ -bLA -afk -dKL aaa aaa +bdH aaa aaa aaa aaa aaa aaa +emA +twp +iyE +ecb +ikT +ikT +ikT +ctp +ecb +jEM +jEM +jEM +jEM +ikT +ikT +oBr +fcS +gdJ +oyR +oJk +nHL +wfx +ijf +osI +qXk +fie +tRs +pqP +fqC +oJk +ppn +nAY +cjt +ljv +ceY +gIm +gEh +gEh +gEh +xhO +wra +xhO +gEh +xhO +gEh +gEh +sOD +eMx +xgr +tcO aaa aaa aaa @@ -126677,7 +132492,7 @@ aab aaa aaa "} -(253,1,1) = {" +(245,1,1) = {" aaa aaa aab @@ -126697,75 +132512,61 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aad -pVZ -nwu -dmQ -xlX -kSd -dmQ -jXY -psm -atY -aMT -aMT -uSk -cFZ -nPM -ckn -wbR -usB -wbR -ckn -nPM -cFZ -tCk -aMT -aMT -atY -vuv -woM -nqD -cxo -boC -qMf -wUN -qMu -ajZ -aaa -aaa -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH bdH bdH bdH bdH bdH bdH +aae +aah +aah +aah +aag +uMc +vFv +wOt +odl +jhx +keR +jhx +keR +dwI +aTS +wqq +agJ +hal +uYg +nau +uYg +uYg +bXf +aDO +aDO +aDO +gQO +uYg +uYg +nau +uYg +hal +aGC +wqq +aTS +mPh +soP +tWi +soP +pDr +tWi +tpd +eim +pql +aag +aah +aah +aah +afm bdH bdH bdH @@ -126775,13 +132576,8 @@ bdH aaa aaa aaa -aab -aaa -aaa -aKQ aaa aaa -aab aaa aaa aaa @@ -126794,10 +132590,13 @@ aaa aaa aaa aaa +aab aaa aaa +aKQ aaa aaa +aab aaa aaa aaa @@ -126811,49 +132610,65 @@ aaa aaa aaa aaa -dKL -aVo -aWp -aWZ -byh -byQ -aVl -hlz -rdK -bFf -aVp -ddj -sfU -fWT -bKT -bKT -ect -lrs -put -bKT -bKT -bWZ -kJC -mbn -mUZ -caA -haq -cAH -aVl -ccC -ccW -ggQ -afk -bML -dKL aaa aaa +bdH aaa aaa aaa aaa aaa aaa +emA +emA +emA +emA +emA +emA +emA +vgw +sqg +sqg +sqg +mpP +sqg +oBr +qGC +oBr +fcS +gdJ +oyR +oJk +uZF +xoj +xoj +osI +qXk +fie +pUj +xoj +sfV +oJk +pkA +nAY +cjt +ljv +gEh +ljv +sqg +mpP +aep +aep +aep +dKL +tcO +tcO +tcO +tcO +tcO +tcO +tcO +tcO aaa aaa aaa @@ -126880,7 +132695,7 @@ aab aaa aaa "} -(254,1,1) = {" +(246,1,1) = {" aaa aaa aab @@ -126900,91 +132715,72 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa aaa aad -pVZ -pPz -dmQ -xlX -dmQ -dmQ -atD -psm -psm -aRp -aRp -aPk -akS -aHe -oxU -bsy -xgg -gzw -shh -aHe -tKf -aPk -aRp -edx -vuv -vuv -myC -crP -cxo -boC -cxo -djc -qMu +uMc +bNM +rmf +uZH +bFt +kPG +kPG +cVw +ptK +aIe +anR +lNl +aqq +eky +aNl +eky +eky +nCT +vsh +vsh +vsh +ydY +eky +eky +aNl +eky +aqq +aIe +iYj +lNl +jWh +tim +uWV +ttd +nLk +rCD +eYR +uIv +pql ajZ aaa aaa +aaa +aaa bdH bdH bdH bdH bdH bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -aaa -aaa aaa -aab aaa aaa -aKQ aaa aaa -aab aaa aaa aaa @@ -126997,10 +132793,13 @@ aaa aaa aaa aaa +aab aaa aaa +aKQ aaa aaa +aab aaa aaa aaa @@ -127014,43 +132813,9 @@ aaa aaa aaa aaa -dKL -afk -afk -ggQ -aAb -byR -aVl -eFH -rdK -bFg -bHv -bjg -bld -bkZ -boN -gUI -brC -bsZ -buQ -mOr -kFq -bkZ -bzP -bjg -gJq -caB -haq -vuR -aVl -ccD -ccX -aWZ -bLC -afk -dKL aaa aaa +bdH aaa aaa aaa @@ -127061,6 +132826,47 @@ aaa aaa aaa aaa +aad +aag +aag +vgw +wct +hqc +sqg +rwB +lKM +sqg +nSq +oBr +fcS +gdJ +cjt +pRZ +ish +ish +ish +kzC +jUl +wud +ish +ish +ish +pRZ +fcS +nAY +jOE +ljv +mPc +sqg +qEL +vmE +ggQ +afk +afk +dKL +aag +aag +ajZ aaa aaa aaa @@ -127079,23 +132885,23 @@ aaa aaa aaa aaa -aab aaa aaa -"} -(255,1,1) = {" aaa aaa -aab aaa aaa aaa aaa aaa +aab aaa aaa +"} +(247,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -127116,78 +132922,61 @@ aaa aaa aaa aaa -aae -pVZ -pVZ -vcV -aIM -xlX -xlX -xlX -xlX -hSu -qYG -atM -ams -atK -aHe -aHe -aHe -aHe -aHe -aHe -aHe -atM -ams -atK -qYG -iEs -fbx -fbx -jaj -fbx -boC -hPg -qMu -qMu -afm aaa aaa bdH bdH bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH +aac +aag +cuC +htb +pfc +ptK +ptK +ucp +cIW +ptK +ptK +pji +dKm +pji +aHe +jlT +exi +eky +eky +eAC +aBu +aBu +aBu +eAC +eky +eky +ins +wRP +aHe +eZm +eZm +eZm +jWh +jWh +sWC +jWh +jWh +jWh +jAJ +lAu +bYn +aag +ajY aaa aaa aaa -aab aaa aaa -aKQ aaa aaa -aab aaa aaa aaa @@ -127207,51 +132996,19 @@ aaa aaa aaa aaa +aab aaa aaa +aKQ aaa aaa +aab aaa aaa aaa aaa aaa aaa -dKL -dKL -aep -aep -byk -byQ -aVl -eFH -rdK -bhB -bhB -uEc -bKU -bhB -gir -bpX -bpX -bpX -bpX -bpX -gir -bhB -bXP -bjn -bhB -bhB -haq -mHR -aVl -ccE -bjd -aep -aep -dKL -dKL aaa aaa aaa @@ -127261,6 +133018,7 @@ aaa aaa aaa aaa +bdH aaa aaa aaa @@ -127271,6 +133029,47 @@ aaa aaa aaa aaa +aad +aag +aag +vgw +wct +hqc +sqg +eKy +wQA +sqg +jEM +oBr +uYn +jaM +oXM +kvf +rDy +uVc +bxN +cYN +nhr +vuD +skL +dTr +gfG +mkP +muQ +ojh +nxx +ljv +xhO +sqg +gEC +skC +aWZ +bLx +bMJ +dKL +aag +aag +ajZ aaa aaa aaa @@ -127282,14 +133081,10 @@ aaa aaa aaa aaa -aab aaa aaa -"} -(256,1,1) = {" aaa aaa -aab aaa aaa aaa @@ -127302,6 +133097,15 @@ aaa aaa aaa aaa +aab +aaa +aaa +"} +(248,1,1) = {" +aaa +aaa +aab +aaa aaa aaa aaa @@ -127320,77 +133124,60 @@ aaa aaa aaa aaa -aad -pVZ -pVZ -pVZ -pVZ -pVZ -pVZ -pVZ -pVZ -aPw -avu -pDL -amq -bFD -aHe -fdX -wcR -xJh -aHe -lbE -vQu -iZL -aMU -aPw -qMu -qMu -qMu -qMu -qMu -qMu -qMu -qMu -ajZ aaa aaa aaa bdH bdH bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -aaa -aaa +cuC +cuC +cuC +bNM +ofK +ptK +uXL +gPc +trB +exy +ptK +fLl +fLl +fLl +eky +eky +aNl +eky +uNV +aHe +aDQ +aDQ +aDQ +aHe +uNV +eky +aNl +eky +rqj +eZm +jYm +aZI +jWh +duz +hXG +htG +doU +jWh +lbB +uIv +bYn +bYn +bYn aaa -aab aaa aaa -aKQ aaa aaa -aab aaa aaa aaa @@ -127412,87 +133199,30 @@ aaa aaa aaa aaa +aab aaa aaa +aKQ aaa aaa +aab aaa aaa aaa aaa -bdH -aUx -bvQ -bwj -byl -bzj -aVl -eFH -eFH -bhB -bfA -bLe -bKV -bhB -fEg -bOl -bOm -bRr -bXt -bUX -szm -bhB -bXQ -bLe -psp -bhB -cAH -vuR -aVl -bzj -cHO -cdr -cer -aUx aaa aaa aaa -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH aaa aaa aaa aaa aaa -aab aaa aaa -"} -(257,1,1) = {" aaa +bdH aaa -aab aaa aaa aaa @@ -127502,6 +133232,47 @@ aaa aaa aaa aaa +aae +aah +aah +vgw +utn +hqc +hqc +eqL +vxu +sqg +mpP +sqg +qWQ +gdJ +cjt +pRZ +wuB +wuB +qAs +dIH +nKP +uTV +sHx +vgv +wuB +pRZ +fcS +nAY +cjt +sqg +mpP +sqg +efC +yaF +aep +aep +aep +dKL +aah +aah +afm aaa aaa aaa @@ -127523,74 +133294,17 @@ aaa aaa aaa aaa -aad -aag -aag -aag -aag -aag -aag -aag -aag -aPw -aqJ -aBu -iZr -aMT -aEg -aDO -aDO -aDO -aEg -aMT -pjh -aBu -aqp -aPw -aag -aag -aag -aag -aag -aag -aag -aag -ajZ aaa aaa aaa -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH aaa aaa aaa aab aaa aaa -aKQ +"} +(249,1,1) = {" aaa aaa aab @@ -127616,6 +133330,52 @@ aaa aaa aaa aaa +bdH +bdH +bdH +cuC +uiG +tfb +rFy +ofK +ptK +uXL +eet +fcP +pDh +ptK +aqZ +aqZ +ptQ +aMT +aMT +dPm +qeF +aHe +aHe +aDX +yge +aEm +aHe +aHe +okg +dPm +aMT +aMT +hbp +mwP +mwP +jWh +axR +mIP +tcZ +fWi +jWh +lbB +cKL +xXa +xoO +bYn aaa aaa aaa @@ -127623,79 +133383,18 @@ aaa aaa aaa aaa -bdH -aUx -aWr -aUx -aUx -aUx -aUx -hlz -hlz -bhB -bHy -bLe -bKV -bMB -bOc -plE -plE -plE -plE -plE -bxs -bMB -bXQ -bLe -bHy -bhB -kpX -lGr -aUx -aUx -aUx -aUx -aWr -aUx aaa aaa aaa -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH aaa aaa aaa aaa aaa -aab aaa aaa -"} -(258,1,1) = {" aaa aaa -aab aaa aaa aaa @@ -127703,10 +133402,13 @@ aaa aaa aaa aaa +aab aaa aaa +aKQ aaa aaa +aab aaa aaa aaa @@ -127722,81 +133424,56 @@ aaa aaa aaa aaa +bdH aaa aaa aaa aaa -aae -aah -mNX -mNX -mNX -mNX -mNX -mNX -cus -aPw -aPw -atM -ams -atK -avu -aMT -arV -aMT -aMU -atM -ams -atK -aPw -aPw -mNX -mNX -mNX -mNX -mNX -mNX -qOk -aah -afm aaa aaa aaa -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH aaa aaa aaa -aab aaa aaa -aKQ aaa +vgw +noP +hqc +hqc +xNg +spH +sqg +aFe +sqg +scE +gdJ +acy +oJk +jRc +xoj +eKQ +osI +xrI +fie +fsR +lkV +quS +oJk +bcM +nAY +mFP +sqg +pCq +sqg +gEC +unx +ggQ +bLy +bLy +dKL aaa -aab aaa aaa aaa @@ -127826,79 +133503,22 @@ aaa aaa aaa aaa -bdH -aae -aah -aag -aag -aag -wVb -iDm -eFH -bhB -ozi -bJF -bKW -bXR -bUJ -bTi -aut -aut -aut -xjC -fxW -bXl -bzU -bYO -bZD -bhB -vim -woG -vTK -aag -aag -aag -aah -afm +aab aaa aaa +"} +(250,1,1) = {" aaa -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH aaa +aab aaa aaa aaa aaa -aab aaa aaa -"} -(259,1,1) = {" aaa aaa -aab aaa aaa aaa @@ -127913,6 +133533,52 @@ aaa aaa aaa aaa +bdH +bdH +bdH +cuC +bNM +rmf +luY +ncp +ptK +cQg +wxj +lht +rYv +ptK +haO +pKB +fLl +svf +arV +wZX +eky +aDQ +ayi +eky +aBx +eky +jlX +aDQ +eky +wZX +arV +vUh +eZm +xUy +mwP +jWh +vpv +pgw +rmE +fWi +jWh +xPZ +pcv +eYR +uIv +bYn aaa aaa aaa @@ -127931,65 +133597,11 @@ aaa aaa aaa aaa -xVk -xVk -xVk -xVk -xVk -xVk -xVk -aad -aPw -vgD -pDL -qDz -xGU -cFZ -usB -cFZ -qDz -xGU -iZL -ihX -aPw -ajZ -xVk -xVk -xVk -xVk -xVk -xVk -xVk aaa aaa aaa aaa aaa -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH aaa aaa aaa @@ -128015,6 +133627,59 @@ aaa aaa aaa aaa +bdH +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +vgw +gOC +nou +nou +dQA +sKM +uuD +eYD +uuD +bSH +gLD +cjt +oJk +oJk +lwp +xoj +osI +rYh +fie +xoj +ehc +oJk +oJk +gNO +vTT +heS +uPP +hlH +uPP +wVA +hJg +aWZ +bLz +bMK +dKL +aaa +aaa +aaa +aaa aaa aaa aaa @@ -128031,64 +133696,11 @@ aaa aaa aaa aaa -bdH -aad -aag -aag -wVb -hlz -hlz -bhB -bJQ -bLe -usw -bMF -blo -ktO -bUW -bMQ -bXr -lfQ -blo -bXm -bXS -bLe -bJR -bhB -cAH -cAH -vTK -aag -aag -ajZ aaa aaa aaa aaa aaa -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH aaa aaa aaa @@ -128098,7 +133710,7 @@ aab aaa aaa "} -(260,1,1) = {" +(251,1,1) = {" aaa aaa aab @@ -128124,6 +133736,60 @@ aaa aaa aaa aaa +bdH +bdH +bdH +cuC +aeM +ofK +ptK +ptK +ptK +ptK +ptK +afX +ptK +ptK +haO +fLl +fLl +lDn +arV +wZX +eky +aDQ +pyy +eky +eky +eky +dLc +aDQ +eky +wZX +arV +wkA +eZm +eZm +mwP +jWh +jWh +kLc +jWh +jWh +jWh +jWh +jWh +lbB +oCf +bYn +aaa +aaa +bdH +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -128134,65 +133800,11 @@ aaa aaa aaa aaa -xVk -xVk -xVk -xVk -xVk -xVk -xVk -aad -aPw -aqJ -aBA -aqp -avu -eky -aMR -eky -aMU -aqJ -aBA -aqp -aPw -ajZ -xVk -xVk -xVk -xVk -xVk -xVk -xVk aaa aaa aaa aaa aaa -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH aaa aaa aaa @@ -128218,6 +133830,7 @@ aaa aaa aaa aaa +bdH aaa aaa aaa @@ -128231,80 +133844,58 @@ aaa aaa aaa aaa +dKL +aep +aep +aep +ikv +hqc +vZf +ykI +vZf +aEo +gdJ +trh +hgo +oJk +sVT +xoj +osI +rYh +fie +xoj +bmp +oJk +haD +jTB +nAY +iUm +vZf +bYF +vZf +fiQ +pgN +aep +aep +aep +dKL aaa aaa aaa -bdH -aad -aag -aag -wVb -eFH -eFH -bhB -bHz -bJI -bKW -bEn -rFu -pQq -bQe -bTl -bSt -buW -bUL -bXn -bzU -bYS -bJR -bhB -cAH -cAH -vTK -aag -aag -ajZ aaa aaa aaa aaa aaa -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH aaa aaa aaa aaa aaa -aab aaa aaa -"} -(261,1,1) = {" aaa aaa -aab aaa aaa aaa @@ -128318,10 +133909,14 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(252,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -128337,43 +133932,60 @@ aaa aaa aaa aaa -xVk -xVk -xVk -xVk -xVk -xVk -xVk -aad -aPw -aHe -aHe -aHe -mtD -eky -aMS -eky -nKq -aHe -aHe -aHe -aPw -ajZ -xVk -xVk -xVk -xVk -xVk -xVk -xVk aaa aaa aaa aaa aaa +aaa +bdH bdH bdH bdH +uMc +bNM +ofK +fLl +uxl +haO +ebf +haO +aqZ +tot +haO +qqS +fLl +xrq +vVu +arV +wZX +eky +aHe +jMQ +eky +eky +eky +dEn +aHe +eky +wZX +arV +oIt +xrq +eZm +qHG +mwP +xQW +vJR +mwP +hkz +ckj +oaw +eZm +lbB +uIv +pql +bdH bdH bdH bdH @@ -128435,79 +134047,57 @@ aaa aaa aaa aaa +dKL +afk +aWo +aWZ +iyF +vrR +sqg +mpP +sqg +dYC +gdJ +elx +cjt +pRZ +xoj +xoj +osI +xrI +fie +xoj +xoj +pRZ +fcS +hMG +qQy +erF +sqg +mpP +sqg +fLu +hEw +aWZ +bLA +afk +dKL aaa aaa -bdH -aad -aag -aag -wVb -hlz -eFH -bhB -bhB -hxp -bKV -bLe -laj -xjC -ktO -bPd -lfQ -ddK -qXx -bLe -bXQ -bJR -bhB -bhB -vuR -mHR -vTK -aag -aag -ajZ aaa aaa aaa aaa aaa -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH aaa aaa aaa aaa aaa -aab aaa aaa -"} -(262,1,1) = {" aaa aaa -aab aaa aaa aaa @@ -128522,10 +134112,14 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(253,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -128540,42 +134134,60 @@ aaa aaa aaa aaa -xVk -xVk -xVk -xVk -xVk -xVk -xVk -aad -aPw -aHe -aHe -aHe -avu -eky -aMS -eky -aMU -aHe -aHe -aHe -aPw -ajZ -xVk -xVk -xVk -xVk -xVk -xVk -xVk aaa aaa aaa aaa aaa +aaa +aaa +bdH +bdH bdH bdH +uMc +bNM +ofK +fLl +uxl +haO +uLG +haO +aqZ +pbo +haO +xLn +fLl +vlk +mKy +aMT +svl +pzJ +qDt +uYg +vsh +oPf +vsh +uYg +qDt +pzJ +sQO +aMT +wNS +vlk +eZm +oHg +uiK +mwP +vJR +mwP +jrB +eoK +xTG +eZm +lbB +uIv +pql bdH bdH bdH @@ -128638,79 +134250,57 @@ aaa aaa aaa aaa +dKL +aVo +aWp +aWZ +qAB +gEC +sqg +aIh +eTb +kkW +iwf +uFg +rEm +rnF +oFm +oFm +fVo +jUF +nxb +oFm +oFm +glH +vXo +gWu +xMl +lft +eTb +aIh +sqg +siN +cjt +ggQ +afk +bML +dKL aaa aaa -bdH -aad -aag -aag -wVb -hlz -hlz -hlz -bhB -bYV -bKV -bhB -bOh -lfQ -ktO -bOk -lfQ -ktO -bnc -bhB -bXU -bYV -bhB -jcK -cAH -cAH -vTK -aag -aag -ajZ aaa aaa aaa aaa aaa -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH aaa aaa aaa aaa aaa -aab aaa aaa -"} -(263,1,1) = {" aaa aaa -aab aaa aaa aaa @@ -128725,10 +134315,15 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(254,1,1) = {" aaa aaa +aab +aaa aaa aaa aaa @@ -128743,43 +134338,60 @@ aaa aaa aaa aaa -xVk -xVk -xVk -xVk -xVk -xVk -xVk -aad -jbq -jXW -jcZ -aDO -qqu -eky -pCb -eky -dFk -aDO -nzI -jXW -jbq -ajZ -xVk -xVk -xVk -xVk -xVk -xVk -xVk aaa aaa aaa aaa aaa +aaa +bdH bdH bdH bdH +uMc +bNM +rtd +ptQ +aqZ +aqZ +aqZ +aqZ +aqZ +leM +haO +iYm +fLl +fLl +vjd +aRp +jBX +akS +aHe +oxU +bsy +oir +gzw +shh +aHe +tKf +jBX +aRp +quy +eZm +eZm +bjt +eIN +mwP +ksw +ksw +ksw +ksw +ksw +hbp +uWV +uIv +pql +bdH bdH bdH bdH @@ -128841,79 +134453,57 @@ aaa aaa aaa aaa +dKL +afk +afk +ggQ +pYS +ivS +sqg +ppM +eTb +hbs +vZU +elx +jnI +oJk +xef +dPQ +ams +eni +nri +gMd +toO +oJk +nYn +elx +mDL +fSF +eTb +ppM +sqg +lvh +iks +aWZ +bLC +afk +dKL aaa aaa -bdH -aad -aag -aag -wVb -eFH -eFH -eFH -bhB -bJK -bLc -bhB -bUY -lfQ -brJ -plE -buW -ktO -bMW -bhB -bXV -bJK -bhB -rbp -vuR -rbp -vTK -aag -aag -ajZ aaa aaa aaa aaa aaa -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH aaa aaa aaa aaa aaa -aab aaa aaa -"} -(264,1,1) = {" aaa aaa -aab aaa aaa aaa @@ -128928,8 +134518,15 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(255,1,1) = {" +aaa +aaa +aab +aaa aaa aaa aaa @@ -128946,35 +134543,6 @@ aaa aaa aaa aaa -xVk -xVk -xVk -xVk -xVk -xVk -xVk -aad -jbq -qtR -avu -eky -eky -nJu -pCb -eky -eky -eky -aMU -qtR -jbq -ajZ -xVk -xVk -xVk -xVk -xVk -xVk -xVk aaa aaa aaa @@ -128983,6 +134551,50 @@ aaa bdH bdH bdH +cuC +htb +pfc +fLl +fLl +fLl +fLl +rht +aqZ +aqZ +aqZ +aqZ +aqZ +ptQ +qYG +atM +bGc +atK +aHe +aHe +aHe +aHe +aHe +aHe +aHe +atM +bGc +atK +qYG +hbp +ksw +ksw +rHB +ksw +vJR +rPq +eZm +eZm +eZm +eZm +jAJ +lAu +bYn +bdH bdH bdH bdH @@ -129044,79 +134656,50 @@ aaa aaa aaa aaa -aaa -aaa -bdH -aad -aag -aag -wVb -wVb -rVo -hlz -bhB -bJK -bKV -bhB -bXu -boU -rFu -blo -riQ -okz -bMV -bhB -bXQ -bJK -bhB -kpX -emG -vTK -vTK -aag -aag -ajZ -aaa -aaa -aaa -aaa -aaa -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH +dKL +dKL +aep +aep +mkL +gEC +sqg +ppM +eTb +hsy +hsy +baJ +kbw +hsy +ldc +lNR +lNR +lNR +lNR +lNR +ldc +hsy +foC +kph +hsy +hsy +eTb +eUe +sqg +wWl +trh +aep +aep +dKL +dKL aaa aaa aaa aaa aaa -aab aaa aaa -"} -(265,1,1) = {" aaa aaa -aab aaa aaa aaa @@ -129138,6 +134721,22 @@ aaa aaa aaa aaa +aab +aaa +aaa +"} +(256,1,1) = {" +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -129149,42 +134748,55 @@ aaa aaa aaa aaa -xVk -xVk -xVk -xVk -xVk -xVk -xVk -eJQ -aPw -aHe -dnJ -eky -eky -eky -pCb -eky -eky -eky -hfw -aHe -aPw -eJQ -xVk -xVk -xVk -xVk -xVk -xVk -xVk aaa aaa aaa aaa aaa bdH -bdH +cuC +bNM +tgK +tfb +wuT +lMx +gJF +gJF +gJF +gJF +gJF +gJF +gJF +gJF +aPw +avu +mhG +cFn +cYu +aHe +fdX +wcR +xJh +aHe +qYu +dxK +dPC +aMU +aPw +wxy +wxy +wxy +wxy +wxy +wxy +wxy +wxy +jFY +qKY +jHL +wOK +uIv +bYn bdH bdH bdH @@ -129247,40 +134859,40 @@ aaa aaa aaa aaa -aaa -aaa bdH -aad -aag -aag -aag -wVb -qnP -uia -bhB -bhB -blm -bhB -bhB -bOi -xcp -kkO -gzr -kXK -bhB -bhB -bzX -bhB -bhB -ybr -vuR -vTK -aag -aag -aag -ajZ -aaa -aaa +vgw +usZ +wpS +fZA +fEe +sqg +ppM +ppM +hsy +shL +uXk +mlF +hsy +hgV +osM +ghX +dTS +okQ +xIO +nxZ +hsy +tos +uXk +tkn +hsy +aIh +ppM +sqg +fEe +nqW +kfI +vFH +vgw aaa aaa aaa @@ -129316,7 +134928,7 @@ aab aaa aaa "} -(266,1,1) = {" +(257,1,1) = {" aaa aaa aab @@ -129341,55 +134953,55 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -xVk -xVk -xVk -xVk -xVk -xVk -xVk -etf -oMT -atM -aDO -atK -eky -eky -pCb -eky -eky -atM -aDO -atK -sjr -xjz -xVk -xVk -xVk -xVk -xVk -xVk -xVk -aaa -aaa -aaa -aaa -aaa bdH bdH bdH bdH +cuC +riJ +kHY +uhM +kdv +lkm +cuC +aag +aag +aag +aag +aag +aag +aag +aPw +aqJ +aBu +odu +aMT +aEg +aDO +aDO +aDO +aEg +aMT +odV +aBu +aqp +aPw +aag +aag +aag +aag +aag +aag +aag +bYn +dRs +uAl +rDb +qjV +rID +bYn +bdH +bdH bdH bdH bdH @@ -129450,40 +135062,40 @@ aaa aaa aaa aaa -aaa -aaa bdH -aad -aag -aag -aag -wVb -hlz -moE -bhB -bJM -bLd -fir -jfM -bQi -bMM -bSy -bMM -bSx -hbZ -ebJ -xiC -fYG -bhB -vuR -woG -vTK -aag -aag -aag -ajZ -aaa -aaa +vgw +ckW +vgw +vgw +vgw +vgw +aIh +aIh +hsy +wed +uXk +mlF +jWb +unZ +aPU +aPU +aPU +aPU +aPU +fbu +jWb +tos +uXk +wed +hsy +qBS +lib +vgw +vgw +vgw +vgw +ckW +vgw aaa aaa aaa @@ -129519,7 +135131,7 @@ aab aaa aaa "} -(267,1,1) = {" +(258,1,1) = {" aaa aaa aab @@ -129544,53 +135156,53 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -xVk -xVk -xVk -xVk -xVk -xVk -xVk -etf -aPz -avu -arV -aMU -gEz -wbR -rTB -wbR -aqC +bdH +bdH +bdH +bdH +cuC +cuC +umy +iKZ +pnL +cuC +cuC +mNX +mNX +mNX +mNX +mNX +mNX +cus +aPw +aPw +atM +bGc +atK avu +aMT arV +aMT aMU -aPz -xjz -xVk -xVk -xVk -xVk -xVk -xVk -xVk -aaa -aaa -aaa -aaa -aaa -bdH -bdH +atM +bGc +atK +aPw +aPw +mNX +mNX +mNX +mNX +mNX +mNX +qOk +bYn +bYn +cWE +kHS +rID +bYn +bYn bdH bdH bdH @@ -129627,25 +135239,23 @@ aab aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -129656,37 +135266,39 @@ aaa aaa aaa bdH -aad +aae +aah aag aag aag -wVb -eFH -eFH -bhB -bJN -bLd -bMM -bMM -bMM -bMM -bSy -bMM -bMM -bMM -bMM -bLd -bYU -bhB -jdy -cAH -vTK +nic +tmQ +ppM +hsy +npn +bVN +oGJ +xpZ +llK +mVr +mZL +mZL +mZL +gSa +coH +oTO +uqh +iAE +gNG +hsy +iWa +fZR +nic aag aag aag -ajZ -aaa -aaa +aah +afm aaa aaa aaa @@ -129722,7 +135334,7 @@ aab aaa aaa "} -(268,1,1) = {" +(259,1,1) = {" aaa aaa aab @@ -129747,17 +135359,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +aad +cuC +mkH +rtd +fcP +cuC +ajZ xVk xVk xVk @@ -129765,21 +135377,21 @@ xVk xVk xVk xVk -etf -aPz -aqJ -aBu -aqp -oCO -lyw -iZg -lyw -oCO -aqJ -aBu -aqp -aPz -xjz +aad +aPw +vgD +mhG +had +eAL +pzJ +oPf +pzJ +had +eAL +dPC +ihX +aPw +ajZ xVk xVk xVk @@ -129787,13 +135399,13 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -bdH -bdH +aad +bYn +kcA +uWV +uIv +bYn +ajZ bdH bdH bdH @@ -129830,23 +135442,23 @@ aab aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -129862,29 +135474,29 @@ bdH aad aag aag -aag -wVb -hlz -hlz -bhB -bJP -mzO -bMN -bMN -fcI -bSy -bSy -bSy -dNx -bMN -bMN -tdx -bYW -bhB -vuR -ydx -vTK -aag +nic +aIh +aIh +hsy +cGe +uXk +rae +jIV +pzM +mtZ +bqP +fyd +qYo +fQn +pzM +nac +xNf +uXk +fbH +hsy +aIh +aIh +nic aag aag ajZ @@ -129925,7 +135537,7 @@ aab aaa aaa "} -(269,1,1) = {" +(260,1,1) = {" aaa aaa aab @@ -129950,17 +135562,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +aad +cuC +vRu +ngU +ssU +cuC +ajZ xVk xVk xVk @@ -129968,21 +135580,21 @@ xVk xVk xVk xVk -oee +aad aPw -sYD -aMT -aMT -uqI -aHe -aHe -aHe -rdh -aMT -aMT -bZR +aqJ +aBA +aqp +avu +eky +dPm +eky +aMU +aqJ +aBA +aqp aPw -oee +ajZ xVk xVk xVk @@ -129990,36 +135602,36 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aad +bYn +thV +uWV +uIv +bYn +ajZ +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -130033,23 +135645,23 @@ aab aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -130065,29 +135677,29 @@ bdH aad aag aag -aag -wVb -eFH -eFH -bhB -hrX -fIx -bMM -bMM -hgt -bMM -bMM -bMM -bMM -bMM -bMM -bYU -gNd -bhB -cAH -cAH -vTK -aag +nic +ppM +ppM +hsy +ebt +nCn +oGJ +uSW +kzO +vaZ +kYL +dLi +sCV +rjO +suY +pdK +uqh +pJr +fbH +hsy +aIh +aIh +nic aag aag ajZ @@ -130128,7 +135740,7 @@ aab aaa aaa "} -(270,1,1) = {" +(261,1,1) = {" aaa aaa aab @@ -130153,17 +135765,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +aad +uMc +gbs +iEr +hFw +uMc +ajZ xVk xVk xVk @@ -130171,21 +135783,21 @@ xVk xVk xVk xVk -eJQ +aad aPw -ebn -aMT -aMT -eky aHe aHe aHe +mtD eky -aMT -aMT -oOO +wZX +eky +nKq +aHe +aHe +aHe aPw -eJQ +ajZ xVk xVk xVk @@ -130193,36 +135805,36 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aad +pql +thV +fCL +uIv +pql +ajZ +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -130236,23 +135848,23 @@ aab aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -130268,29 +135880,29 @@ bdH aad aag aag -aag -wVb -hlz -hlz -bhB -sgM -fIx -bMM -bMM -bhB -kvz -kvz -kvz -bhB -kGX -bMM -bYU -upe -bhB -vuR -vuR -vTK -aag +nic +aIh +ppM +hsy +hsy +vVX +mlF +uXk +hmw +gSa +mtZ +nbv +fQn +wSV +ulp +uXk +tos +fbH +hsy +hsy +ppM +eUe +nic aag aag ajZ @@ -130331,7 +135943,7 @@ aab aaa aaa "} -(271,1,1) = {" +(262,1,1) = {" aaa aaa aab @@ -130356,17 +135968,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +aad +uMc +nrO +iEr +fcP +uMc +ajZ xVk xVk xVk @@ -130374,21 +135986,21 @@ xVk xVk xVk xVk -etf -asb -atM -aDO -atK +aad +aPw +aHe +aHe +aHe +avu eky -fRC -lFe -fRC +wZX eky -atM -aDO -atK -aPx -xjz +aMU +aHe +aHe +aHe +aPw +ajZ xVk xVk xVk @@ -130396,36 +136008,36 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aad +pql +thV +fCL +uIv +pql +ajZ +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -130439,23 +136051,23 @@ aab aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -130471,29 +136083,29 @@ bdH aad aag aag -aag -wVb -eFH -eFH -bhB -svd -bLf -dCS -bMM -bhB -bQk -xfi -bSG -bhB -bMM -dCS -tLy -svd -bhB -cAH -cAH -vTK -aag +nic +aIh +aIh +aIh +hsy +hwd +mlF +hsy +kag +fQn +mtZ +xxl +fQn +mtZ +dKc +hsy +beL +hwd +hsy +cWb +aIh +aIh +nic aag aag ajZ @@ -130534,7 +136146,7 @@ aab aaa aaa "} -(272,1,1) = {" +(263,1,1) = {" aaa aaa aab @@ -130559,17 +136171,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +aad +uMc +aVC +iEr +fcP +uMc +ajZ xVk xVk xVk @@ -130577,21 +136189,21 @@ xVk xVk xVk xVk -etf -aPz -avu -arV -aMU -arV -arV -arV -arV -arV -avu -arV -aMU -aPz -xjz +aad +jbq +kRg +uRs +aDO +qqu +eky +aNl +eky +dFk +aDO +nPY +kRg +jbq +ajZ xVk xVk xVk @@ -130599,36 +136211,36 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aad +pql +thV +fCL +uIv +pql +ajZ +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -130642,23 +136254,23 @@ aab aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -130674,29 +136286,29 @@ bdH aad aag aag -aag -wVb -hlz -eFH -bhB -bhB -bhB -bhB -cZJ -bhB -bhB -bhB -bhB -bhB -cZJ -bhB -bhB -bhB -bhB -vuR -vuR -vTK -aag +nic +ppM +ppM +ppM +hsy +ylh +opH +hsy +kJn +fQn +qoR +aPU +rjO +mtZ +rDB +hsy +iEw +ylh +hsy +dDT +ppM +dDT +nic aag aag ajZ @@ -130737,7 +136349,7 @@ aab aaa aaa "} -(273,1,1) = {" +(264,1,1) = {" aaa aaa aab @@ -130762,17 +136374,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +aad +cuC +mJx +rtd +odb +cuC +ajZ xVk xVk xVk @@ -130780,21 +136392,21 @@ xVk xVk xVk xVk -etf -aPz -aqJ -aBu -aqp +aad +jbq +hBL +dID eky eky +nJu +aNl eky eky eky -aqJ -aBu -aqp -aPz -xjz +etn +hBL +jbq +ajZ xVk xVk xVk @@ -130802,36 +136414,36 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aad +bYn +thV +uWV +oCf +bYn +ajZ +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -130843,25 +136455,25 @@ aaa aaa aab aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -130877,29 +136489,29 @@ bdH aad aag aag -aag -wVb -hlz -eFH -fKg -tce -bhB -heg -lfQ -blo -vNF -xuU -vNF -blo -ktO -heg -bhB -osE -gai -cAH -cAH -vTK -aag +nic +nic +wsw +aIh +hsy +ylh +mlF +hsy +nFM +eZp +kzO +pzM +hip +ptZ +urW +hsy +tos +ylh +hsy +qBS +piJ +nic +nic aag aag ajZ @@ -130940,7 +136552,7 @@ aab aaa aaa "} -(274,1,1) = {" +(265,1,1) = {" aaa aaa aab @@ -130965,17 +136577,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +cuC +cuC +dqg +rtd +fcP +cuC +cOK xVk xVk xVk @@ -130983,21 +136595,21 @@ xVk xVk xVk xVk -oee +eJQ aPw aHe -tqB +mRQ eky eky -atg -aBE -ouB +eky +aNl eky eky -gwu +eky +biJ aHe aPw -oee +eJQ xVk xVk xVk @@ -131005,36 +136617,36 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +wZv +bYn +thV +uWV +uIv +bYn +bYn +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -131046,21 +136658,21 @@ aaa aaa aab aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -131081,27 +136693,27 @@ aad aag aag aag -wVb -hlz -hlz -hlz -hlz -bhB -heg -mKX -aut -aut -aut -aut -aut -riA -heg -bhB -pFP -cAH -cAH -cAH -vTK +nic +qBS +lib +hsy +hsy +suJ +hsy +hsy +gLG +khf +bhI +iIj +hQw +hsy +hsy +wdv +hsy +hsy +yjE +ppM +nic aag aag aag @@ -131143,7 +136755,7 @@ aab aaa aaa "} -(275,1,1) = {" +(266,1,1) = {" aaa aaa aab @@ -131168,17 +136780,17 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +uMc +iKc +uiG +cMN +trB +nVX +jcP xVk xVk xVk @@ -131186,21 +136798,21 @@ xVk xVk xVk xVk -aad -jbq -aNe -avu +etf +ohH +atM +aDO +atK eky eky -esT -nYE -orH +aNl eky eky -aMU -aNe -jbq -ajZ +atM +aDO +atK +sjr +xjz xVk xVk xVk @@ -131208,36 +136820,36 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +dbq +xBn +vME +hSt +xoO +rjG +pql +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -131249,21 +136861,21 @@ aaa aaa aab aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -131284,27 +136896,27 @@ aad aag aag aag -wVb -wVb -gcK -jPf -jPf -bhB -dVZ -jyi -bPe -bQm -wlj -bQm -bTp -jyi -cDj -bhB -vuR -vuR -woG -vTK -vTK +nic +aIh +vsi +hsy +uiC +sIr +jCn +kkk +kjO +pAm +gzq +pAm +eAI +tdv +rlc +hfb +hUk +hsy +ppM +fZR +nic aag aag aag @@ -131346,7 +136958,7 @@ aab aaa aaa "} -(276,1,1) = {" +(267,1,1) = {" aaa aaa aab @@ -131371,17 +136983,17 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +uMc +cIG +vqD +iEr +fcP +blJ +jcP xVk xVk xVk @@ -131389,21 +137001,21 @@ xVk xVk xVk xVk -aad -jbq -atY +etf +aPz avu -eky -eky -bAe -aBG -sGh -eky -eky +arV aMU -atY -jbq -ajZ +ssX +vsh +iPD +vsh +fCp +avu +arV +aMU +aPz +xjz xVk xVk xVk @@ -131411,36 +137023,36 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +dbq +gIJ +thV +fCL +lne +wEI +pql +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -131452,21 +137064,21 @@ aaa aaa aab aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -131487,27 +137099,27 @@ aad aag aag aag -aag -wVb -hlz -eFH -uzg -bhB -bhB -bhB -bhB -bhB -bhB -bhB -bhB -bhB -bhB -bhB -cAH -cAH -cAH -vTK -aag +nic +ppM +ppM +hsy +thc +sIr +pAm +pAm +pAm +pAm +gzq +pAm +pAm +pAm +pAm +sIr +fZl +hsy +mxV +aIh +nic aag aag aag @@ -131549,7 +137161,7 @@ aab aaa aaa "} -(277,1,1) = {" +(268,1,1) = {" aaa aaa aab @@ -131574,17 +137186,17 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +uMc +dfg +rAP +vqK +lht +blJ +jcP xVk xVk xVk @@ -131592,21 +137204,21 @@ xVk xVk xVk xVk -aad -aPw -qpU +etf +aPz aqJ -dqj -eky -xaS -ejt -mPf -eky -gUV +aBu aqp -qpU -aPw -ajZ +nkn +lyw +iZg +lyw +nkn +aqJ +aBu +aqp +aPz +xjz xVk xVk xVk @@ -131614,36 +137226,36 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +dbq +gIJ +tjj +ofH +gms +ydh +pql +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -131655,21 +137267,21 @@ aaa aaa aab aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -131690,27 +137302,27 @@ aad aag aag aag -aag -wVb -hlz -eFH -hlz -eFH -wul -hlz -gnz -eFH -eFH -vuR -hOe -cAH -fXd -vuR -vuR -vuR -cAH -vTK -aag +nic +aIh +aIh +hsy +tIe +uAK +bVv +bVv +xTu +gzq +gzq +gzq +ern +bVv +bVv +nJa +jPd +hsy +ppM +eeC +nic aag aag aag @@ -131752,7 +137364,7 @@ aab aaa aaa "} -(278,1,1) = {" +(269,1,1) = {" aaa aaa aab @@ -131777,17 +137389,17 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +cuC +ptK +bSD +iEr +xKM +cuC +uiR xVk xVk xVk @@ -131795,21 +137407,21 @@ xVk xVk xVk xVk -aad -aPw -jbq -aPw -vgD -eky -atg -aBE -ouB -eky -ihX +oee aPw -jbq +sYD +aMT +aMT +uqI +aHe +aHe +aHe +rdh +aMT +aMT +bZR aPw -ajZ +oee xVk xVk xVk @@ -131817,15 +137429,15 @@ xVk xVk xVk xVk +kMK +bYn +gEv +fCL +lol +jWh +bYn aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH aaa aaa aaa @@ -131858,21 +137470,21 @@ aaa aaa aab aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -131893,27 +137505,27 @@ aad aag aag aag -aag -wVb -wVb -rdK -rdK -rdK -rdK -bOn -rdK -rdK -rdK -haq -haq -xnl -haq -haq -haq -haq -vTK -vTK -aag +nic +ppM +ppM +hsy +dPH +sov +pAm +pAm +nAd +pAm +pAm +pAm +pAm +pAm +pAm +fZl +oex +hsy +aIh +aIh +nic aag aag aag @@ -131955,7 +137567,7 @@ aab aaa aaa "} -(279,1,1) = {" +(270,1,1) = {" aaa aaa aab @@ -131980,17 +137592,17 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +cuC +ptK +new +iEr +paI +cuC +cOK xVk xVk xVk @@ -131998,21 +137610,21 @@ xVk xVk xVk xVk -aae -aah -aag -jbq -iaR -aBu -aBu -aBu -aBu -aBu -iub -jbq -aag -aah -afm +eJQ +aPw +ebn +aMT +aMT +eky +aHe +aHe +aHe +eky +aMT +aMT +oOO +aPw +eJQ xVk xVk xVk @@ -132020,15 +137632,15 @@ xVk xVk xVk xVk +wZv +bYn +vVw +fCL +tNP +jWh +bYn aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH aaa aaa aaa @@ -132061,21 +137673,21 @@ aaa aaa aab aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -132092,35 +137704,35 @@ aaa aaa aaa bdH -aae -aah -aah -aah -aah -wVb -wVb -bdo -bdo -bLg -bMX -bOo -uvG -dSs -bOo -otX -cII -koT -tZF -bUZ -ovn -ovn -vTK -vTK -aah -aah -aah -aah -afm +aad +aag +aag +aag +nic +aIh +aIh +hsy +rBv +sov +pAm +pAm +hsy +nDa +nDa +nDa +hsy +gDH +pAm +fZl +snt +hsy +ppM +ppM +nic +aag +aag +aag +ajZ aaa aaa aaa @@ -132158,7 +137770,7 @@ aab aaa aaa "} -(280,1,1) = {" +(271,1,1) = {" aaa aaa aab @@ -132183,17 +137795,17 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +uMc +jMG +uiG +iUW +trB +ozN +jcP xVk xVk xVk @@ -132201,21 +137813,21 @@ xVk xVk xVk xVk -aaa -aaa -aad -aPw -aPw -jbq -jbq -jbq -jbq -jbq -aPw -aPw -ajZ -aaa -aaa +etf +gZP +atM +aDO +atK +eky +fRC +lFe +fRC +eky +atM +aDO +atK +aPx +xjz xVk xVk xVk @@ -132223,6 +137835,17 @@ xVk xVk xVk xVk +dbq +diz +vME +hSt +xoO +adC +pql +bdH +bdH +bdH +bdH aaa aaa aaa @@ -132245,8 +137868,30 @@ aaa aaa aaa aaa +aab +aaa +aaa +aKQ aaa aaa +aab +aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +aaa aaa aaa aaa @@ -132256,28 +137901,82 @@ aaa aaa aaa aaa -aab aaa aaa -aKQ aaa aaa -aab aaa +bdH +aad +aag +aag +aag +nic +ppM +ppM +hsy +fqW +qYq +mQn +pAm +hsy +kiG +aSk +pUv +hsy +pAm +mQn +wQD +fqW +hsy +aIh +aIh +nic +aag +aag +aag +ajZ aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa aaa aaa +aab aaa aaa +"} +(272,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -132299,25 +137998,56 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa -wVb -qsF -bdo -bdo -bdo -bdo -bdo -bdo -bdo -ovn -ovn -ovn -ovn -ovn -bjy -aXQ -vTK +uMc +msP +ugJ +kNk +cXY +blJ +jcP +xVk +xVk +xVk +xVk +xVk +xVk +xVk +etf +aPz +avu +arV +aMU +arV +arV +arV +arV +arV +avu +arV +aMU +aPz +xjz +xVk +xVk +xVk +xVk +xVk +xVk +xVk +dbq +gIJ +thV +fCL +lne +wWq +pql +bdH +bdH +bdH aaa aaa aaa @@ -132337,10 +138067,33 @@ aaa aaa aaa aaa +aab +aab +aab +aab +aab aaa aaa +aKQ aaa aaa +aab +aab +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +bdH aaa aaa aaa @@ -132356,24 +138109,77 @@ aaa aaa aaa aaa +bdH +aad +aag +aag +aag +nic +aIh +ppM +hsy +hsy +hsy +hsy +hNP +hsy +hsy +hsy +hsy +hsy +hNP +hsy +hsy +hsy +hsy +ppM +ppM +nic +aag +aag +aag +ajZ aaa -aab aaa aaa -"} -(281,1,1) = {" aaa aaa -aab +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa aaa aaa +aab aaa aaa +"} +(273,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -132395,8 +138201,17 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa +uMc +spK +nlW +uZH +lht +blJ +jcP xVk xVk xVk @@ -132404,21 +138219,21 @@ xVk xVk xVk xVk -aaa -aaa -aae -aah -aah -aah -aah -aah -aah -aah -aah -aah -afm -aaa -aaa +etf +aPz +aqJ +aBu +aqp +eky +eky +eky +eky +eky +aqJ +aBu +aqp +aPz +xjz xVk xVk xVk @@ -132426,6 +138241,22 @@ xVk xVk xVk xVk +dbq +gIJ +tjj +jRC +gms +qeK +pql +bdH +bdH +bdH +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -132437,6 +138268,38 @@ aaa aaa aaa aaa +aab +aab +aab +bdH +bdH +bdH +bdH +bdH +bdH +aKQ +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +aak +bdH +aaa +aaa +aaa aaa aaa aaa @@ -132449,11 +138312,64 @@ aaa aaa aaa aaa +bdH +aad +aag +aag +aag +nic +aIh +ppM +csd +dDJ +hsy +haz +fQn +pzM +qra +tqE +qra +pzM +mtZ +haz +hsy +dDJ +rXH +aIh +aIh +nic +aag +aag +aag +ajZ aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -132462,7 +138378,8 @@ aaa aab aaa aaa -aKQ +"} +(274,1,1) = {" aaa aaa aab @@ -132487,8 +138404,56 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa +cuC +cuC +jPq +xgm +aqK +cuC +uiR +xVk +xVk +xVk +xVk +xVk +xVk +xVk +oee +aPw +aHe +iTe +eky +eky +atg +aBE +ouB +eky +eky +qPX +aHe +aPw +oee +xVk +xVk +xVk +xVk +xVk +xVk +xVk +kMK +bYn +hTF +rTJ +tAq +bYn +bYn +bdH +bdH +bdH aaa aaa aaa @@ -132499,42 +138464,42 @@ aaa aaa aaa aaa +aab +aab +aab +aab +aab +aab +aab +aab aaa aaa -aaa -aaa -aaa -wVb -bdo -bdo -bdo -bdo -bdo -bdo -bdo -bdo -ovn -ovn -ovn -ovn -ovn -ovn -ovn -vTK -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +aKQ +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +aak +bdH aaa aaa aaa @@ -132550,11 +138515,64 @@ aaa aaa aaa aaa +bdH +aad +aag +aag +aag +nic +aIh +aIh +aIh +aIh +hsy +haz +pLt +mZL +mZL +mZL +mZL +mZL +lOX +haz +hsy +fpi +aIh +aIh +aIh +nic +aag +aag +aag +ajZ aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -132564,7 +138582,7 @@ aab aaa aaa "} -(282,1,1) = {" +(275,1,1) = {" aaa aaa aab @@ -132594,11 +138612,11 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa +cuC +uMc +uMc +uMc +cuC aaa xVk xVk @@ -132607,21 +138625,21 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aad +jbq +xrq +dID +eky +eky +esT +nYE +orH +eky +eky +etn +xrq +jbq +ajZ xVk xVk xVk @@ -132630,6 +138648,15 @@ xVk xVk xVk aaa +bYn +pql +pql +pql +bYn +bdH +bdH +bdH +bdH aaa aaa aaa @@ -132640,23 +138667,115 @@ aaa aaa aaa aaa +aab aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +aKQ +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa aaa +bdH +aad +aag +aag +aag +nic +nic +mem +piJ +piJ +hsy +mkI +aPS +gsM +ukP +eCt +ukP +nop +aPS +ddf +hsy +atS +ppM +fZR +nic +nic +aag +aag +aag +ajZ aaa aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -132665,7 +138784,8 @@ aaa aab aaa aaa -aKQ +"} +(276,1,1) = {" aaa aaa aab @@ -132698,43 +138818,47 @@ aaa aaa aaa aaa +bdH aaa aaa +xVk +xVk +xVk +xVk +xVk +xVk +xVk +aad +jbq +vlk +dID +eky +eky +bAe +aBG +sGh +eky +eky +etn +vlk +jbq +ajZ +xVk +xVk +xVk +xVk +xVk +xVk +xVk aaa aaa -aaa -aaa -aaa -aaa -aaa -wVb -bdo -bdo -bdo -bdo -bdo -bdo -bdo -bdo -ovn -ovn -ovn -ovn -ovn -ovn -ovn -vTK -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -132746,18 +138870,115 @@ aaa aaa aaa aaa +aab aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +bdH +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa aaa +bdH +aad +aag +aag +aag +aag +nic +aIh +ppM +sER +hsy +hsy +hsy +hsy +hsy +hsy +hsy +hsy +hsy +hsy +hsy +aIh +aIh +aIh +nic +aag +aag +aag +aag +ajZ aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -132767,7 +138988,7 @@ aab aaa aaa "} -(283,1,1) = {" +(277,1,1) = {" aaa aaa aab @@ -132810,21 +139031,21 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aad +aPw +uYd +xnz +dqj +eky +xaS +ejt +mPf +eky +gUV +neG +uYd +aPw +ajZ xVk xVk xVk @@ -132834,6 +139055,12 @@ xVk xVk aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -132846,47 +139073,128 @@ aaa aaa aaa aaa +aab aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +bdH +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa aaa +bdH +aad +aag +aag +aag +aag +nic +aIh +ppM +aIh +ppM +puT +aIh +xrg +ppM +ppM +ppM +xrg +aIh +erE +ppM +ppM +ppM +aIh +nic +aag +aag +aag +aag +ajZ aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa aaa aaa +aab aaa aaa -aab -aaa -aaa -aKQ -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +"} +(278,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -132910,23 +139218,6 @@ aaa aaa aaa aaa -wVb -bhD -bdo -bdo -bdo -bdo -bdo -bdo -bdo -ovn -ovn -ovn -ovn -ovn -ovn -bCR -vTK aaa aaa aaa @@ -132936,8 +139227,43 @@ aaa aaa aaa aaa +xVk +xVk +xVk +xVk +xVk +xVk +xVk +aad +aPw +jbq +aPw +vgD +eky +atg +aBE +ouB +eky +ihX +aPw +jbq +aPw +ajZ +xVk +xVk +xVk +xVk +xVk +xVk +xVk aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -132950,17 +139276,115 @@ aaa aaa aaa aaa +aab aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +bdH +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa aaa +bdH +aad +aag +aag +aag +aag +gFP +gFP +qjZ +qjZ +qjZ +qjZ +dXI +qjZ +qjZ +qjZ +qjZ +qjZ +dXI +qjZ +qjZ +qjZ +qjZ +gFP +gFP +aag +aag +aag +aag +ajZ aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -132970,7 +139394,7 @@ aab aaa aaa "} -(284,1,1) = {" +(279,1,1) = {" aaa aaa aab @@ -133013,21 +139437,21 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aae +aah +aag +jbq +iaR +aBu +aBu +aBu +aBu +aBu +iub +jbq +aag +aah +afm xVk xVk xVk @@ -133037,6 +139461,12 @@ xVk xVk aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -133049,20 +139479,115 @@ aaa aaa aaa aaa +aab aaa aaa +bdH +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +daz +daz +daz +daz +daz +daz +daz +daz +daz +daz +daz +daz +daz +lmz +lmz +lmz +bdH +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa aaa +bdH +aae +aah +aah +aah +aah +gFP +gFP +lMb +lMb +fLv +cLq +vON +sgs +ioP +vAI +kXm +eSk +vON +cLq +oLN +lMb +lMb +gFP +gFP +aah +aah +aah +aah +afm aaa aaa aaa aaa aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -133071,7 +139596,8 @@ aaa aab aaa aaa -aKQ +"} +(280,1,1) = {" aaa aaa aab @@ -133107,34 +139633,43 @@ aaa aaa aaa aaa +xVk +xVk +xVk +xVk +xVk +xVk +xVk aaa aaa +aad +aPw +aPw +jbq +jbq +jbq +jbq +jbq +aPw +aPw +ajZ aaa aaa +xVk +xVk +xVk +xVk +xVk +xVk +xVk aaa aaa -wVb -bdo -bdo -bdo -bdo -bdo -bdo -bdo -bdo -ovn -ovn -ovn -ovn -ovn -ovn -ovn -vTK -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -133147,8 +139682,53 @@ aaa aaa aaa aaa +aab aaa aaa +bdH +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +daz +vhe +fEN +cqm +gTH +qit +rna +qQS +gwn +pfT +jYR +dyp +daz +lmz +lmz +lmz +bdH +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -133160,6 +139740,23 @@ aaa aaa aaa aaa +gFP +vVI +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +fXZ +gsi +gFP aaa aaa aaa @@ -133169,14 +139766,10 @@ aaa aaa aaa aaa -aab aaa aaa -"} -(285,1,1) = {" aaa aaa -aab aaa aaa aaa @@ -133203,10 +139796,14 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(281,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -133239,12 +139836,43 @@ aaa aaa aaa aaa +xVk +xVk +xVk +xVk +xVk +xVk +xVk aaa aaa +aae +aah +aah +aah +aah +aah +aah +aah +aah +aah +afm aaa aaa +xVk +xVk +xVk +xVk +xVk +xVk +xVk aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -133257,8 +139885,53 @@ aaa aaa aaa aaa +aab aaa aaa +bdH +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +sbJ +sbJ +sbJ +daz +jtj +avK +avK +sKY +avK +bIp +fKe +dDp +dDp +frM +lcg +daz +lmz +lmz +lmz +bdH +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -133270,14 +139943,28 @@ aaa aaa aaa aaa +gFP +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +gFP aaa -aab aaa aaa -aKQ aaa aaa -aab aaa aaa aaa @@ -133312,27 +139999,14 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(282,1,1) = {" aaa aaa -wVb -bdo -bdo -bdo -bdo -bdo -bdo -bdo -bdo -ovn -ovn -ovn -ovn -ovn -ovn -ovn -vTK +aab aaa aaa aaa @@ -133365,6 +140039,13 @@ aaa aaa aaa aaa +xVk +xVk +xVk +xVk +xVk +xVk +xVk aaa aaa aaa @@ -133372,18 +140053,21 @@ aaa aaa aaa aaa -aab aaa aaa -"} -(286,1,1) = {" aaa aaa -aab aaa aaa aaa aaa +xVk +xVk +xVk +xVk +xVk +xVk +xVk aaa aaa aaa @@ -133404,7 +140088,53 @@ aaa aaa aaa aaa +aab aaa +bdH +lmz +lmz +lmz +lmz +lmz +daz +daz +daz +daz +daz +tte +hvw +auf +pmV +xDC +xDC +dIn +rby +bIp +euN +sEK +sEK +mlb +lcg +daz +lmz +lmz +lmz +bdH +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -133416,6 +140146,23 @@ aaa aaa aaa aaa +gFP +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +gFP aaa aaa aaa @@ -133455,10 +140202,14 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(283,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -133474,13 +140225,10 @@ aaa aaa aaa aaa -aab aaa aaa -aKQ aaa aaa -aab aaa aaa aaa @@ -133494,6 +140242,13 @@ aaa aaa aaa aaa +xVk +xVk +xVk +xVk +xVk +xVk +xVk aaa aaa aaa @@ -133509,6 +140264,13 @@ aaa aaa aaa aaa +xVk +xVk +xVk +xVk +xVk +xVk +xVk aaa aaa aaa @@ -133519,23 +140281,6 @@ aaa aaa aaa aaa -wVb -qsF -bdo -bdo -bdo -bdo -bdo -bdo -bdo -ovn -ovn -ovn -ovn -ovn -ovn -aXQ -vTK aaa aaa aaa @@ -133546,7 +140291,53 @@ aaa aaa aaa aaa +aab aaa +bdH +lmz +lmz +lmz +lmz +daz +daz +hRW +asZ +vXh +daz +daz +kfU +daz +rna +rna +lnS +uVv +yit +rna +cxc +kBy +kBy +gfu +fPB +daz +lmz +lmz +lmz +bdH +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -133558,6 +140349,23 @@ aaa aaa aaa aaa +gFP +riT +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +vFn +gFP aaa aaa aaa @@ -133575,19 +140383,6 @@ aaa aaa aaa aaa -aab -aaa -aaa -"} -(287,1,1) = {" -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -133610,10 +140405,14 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(284,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -133646,6 +140445,13 @@ aaa aaa aaa aaa +xVk +xVk +xVk +xVk +xVk +xVk +xVk aaa aaa aaa @@ -133661,6 +140467,13 @@ aaa aaa aaa aaa +xVk +xVk +xVk +xVk +xVk +xVk +xVk aaa aaa aaa @@ -133677,18 +140490,85 @@ aaa aaa aaa aaa -aab aaa aaa -aKQ aaa aaa aab aaa +bdH +lmz +lmz +lmz +daz +daz +scS +yaZ +ffE +hZj +clw +daz +daz +daz +sGZ +rna +rna +roH +ebN +ebN +ebN +daz +wnh +wnh +daz +daz +daz +lmz +lmz +lmz +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa aaa +gFP +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +gFP aaa aaa aaa @@ -133722,35 +140602,20 @@ aaa aaa aaa aaa -wVb -bdo -jbB -bdo -bne -bdo -jbB -bdo -bne -ovn -gXv -ovn -grX -ovn -gXv -ovn -vTK -aaa -aaa aaa aaa aaa aaa aaa aaa +aab aaa aaa +"} +(285,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -133778,14 +140643,10 @@ aaa aaa aaa aaa -aab aaa aaa -"} -(288,1,1) = {" aaa aaa -aab aaa aaa aaa @@ -133836,11 +140697,81 @@ aaa aaa aaa aaa +aab aaa +bdH +lmz +lmz +lmz +daz +acJ +ubA +cck +wyQ +fmv +ubA +gMN +mRn +itf +mHE +vAU +qwJ +fJY +kzT +wkM +oLm +fcX +kKv +kKv +dGl +dGl +daz +lmz +lmz +lmz +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa aaa +gFP +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +gFP aaa aaa aaa @@ -133883,7 +140814,8 @@ aaa aab aaa aaa -aKQ +"} +(286,1,1) = {" aaa aaa aab @@ -133925,23 +140857,6 @@ aaa aaa aaa aaa -wVb -wVb -wVb -wVb -wVb -wVb -wVb -wVb -wVb -vTK -vTK -vTK -vTK -vTK -vTK -vTK -vTK aaa aaa aaa @@ -133981,19 +140896,85 @@ aaa aaa aaa aaa -aab aaa aaa -"} -(289,1,1) = {" aaa aaa aab aaa +bdH +lmz +lmz +lmz +daz +cwS +ffE +vHa +wpw +ffE +ffE +ffE +jqP +cLo +vfB +viB +dIi +qLS +vfB +wkM +jvB +jvB +ieF +ieF +pJR +gPr +daz +lmz +lmz +lmz +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa aaa +gFP +vVI +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +gsi +gFP aaa aaa aaa @@ -134033,10 +141014,14 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(287,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -134083,13 +141068,9 @@ aaa aaa aaa aaa -aab -aaa aaa -aKQ aaa aaa -aab aaa aaa aaa @@ -134122,11 +141103,81 @@ aaa aaa aaa aaa +aab aaa +bdH +lmz +lmz +lmz +daz +oRV +ydI +mdW +jaH +awu +ydI +aKs +fMt +gOs +kXj +pYi +fMl +gUN +bLv +wkM +xvM +osy +cBm +cBm +iZw +dQl +daz +lmz +lmz +lmz +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa aaa +gFP +lMb +wgf +lMb +qbD +lMb +wgf +lMb +qbD +lMb +wgf +lMb +qbD +lMb +wgf +lMb +gFP aaa aaa aaa @@ -134166,10 +141217,14 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(288,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -134184,14 +141239,10 @@ aaa aaa aaa aaa -aab aaa aaa -"} -(290,1,1) = {" aaa aaa -aab aaa aaa aaa @@ -134255,11 +141306,81 @@ aaa aaa aaa aaa +aab aaa +bdH +lmz +lmz +lmz +daz +daz +eKJ +yaZ +ffE +hZj +mUC +daz +daz +daz +tHu +rna +rna +gXs +ebN +ebN +ebN +daz +wnh +wnh +daz +daz +daz +lmz +lmz +lmz +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa aaa +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP aaa aaa aaa @@ -134286,13 +141407,10 @@ aaa aaa aaa aaa -aab aaa aaa -aKQ aaa aaa -aab aaa aaa aaa @@ -134302,10 +141420,14 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(289,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -134389,12 +141511,63 @@ aaa aaa aab aaa +bdH +lmz +lmz +lmz +lmz +daz +daz +ocB +nJH +rnH +daz +daz +sTV +daz +rna +rna +gbg +uVv +erN +rna +qQS +kBy +kBy +gfu +kBy +daz +lmz +lmz +lmz +bdH +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +aaa +aaa aaa -"} -(291,1,1) = {" aaa aaa -aab aaa aaa aaa @@ -134450,10 +141623,14 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(290,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -134489,13 +141666,10 @@ aaa aaa aaa aaa -aab aaa aaa -aKQ aaa aaa -aab aaa aaa aaa @@ -134538,6 +141712,68 @@ aaa aaa aaa aaa +aab +aaa +bdH +lmz +lmz +lmz +lmz +lmz +daz +daz +daz +daz +daz +tte +hvw +auf +hTl +xDC +xDC +yaQ +bat +mFN +kSy +dDp +dDp +frM +lcg +daz +lmz +lmz +lmz +bdH +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -134594,7 +141830,7 @@ aab aaa aaa "} -(292,1,1) = {" +(291,1,1) = {" aaa aaa aab @@ -134679,7 +141915,60 @@ aaa aaa aaa aaa +aab aaa +bdH +bdH +lmz +lmz +lmz +lmz +lmz +lmz +lmz +daz +sbJ +sbJ +sbJ +daz +jtj +avK +avK +aCd +avK +mFN +igr +sEK +sEK +mlb +lcg +daz +lmz +lmz +lmz +bdH +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -134692,13 +141981,10 @@ aaa aaa aaa aaa -aab aaa aaa -aKQ aaa aaa -aab aaa aaa aaa @@ -134743,10 +142029,14 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(292,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -134793,14 +142083,10 @@ aaa aaa aaa aaa -aab aaa aaa -"} -(293,1,1) = {" aaa aaa -aab aaa aaa aaa @@ -134832,13 +142118,60 @@ aaa aaa aaa aaa +aab aaa aaa +bdH +lmz +lmz +lmz +lmz +lmz +lmz +lmz +daz +ltc +eXk +xns +pTt +gAe +rCi +gba +mUz +our +rna +cxc +kBy +kBy +khJ +gyN +daz +lmz +lmz +lmz +bdH +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -134895,17 +142228,18 @@ aaa aaa aaa aaa -aab aaa aaa -aKQ aaa aaa aab aaa aaa +"} +(293,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -134987,8 +142321,48 @@ aaa aaa aaa aaa +aab aaa aaa +bdH +lmz +lmz +lmz +lmz +lmz +lmz +lmz +daz +tId +wJB +tJN +daz +daz +daz +daz +daz +daz +daz +daz +daz +daz +daz +daz +daz +lmz +lmz +lmz +bdH +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -134996,14 +142370,10 @@ aaa aaa aaa aaa -aab aaa aaa -"} -(294,1,1) = {" aaa aaa -aab aaa aaa aaa @@ -135065,10 +142435,14 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(294,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -135098,13 +142472,10 @@ aaa aaa aaa aaa -aab aaa aaa -aKQ aaa aaa -aab aaa aaa aaa @@ -135153,8 +142524,48 @@ aaa aaa aaa aaa +aab aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +lmz +daz +daz +daz +daz +daz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +bdH +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -135199,14 +142610,10 @@ aaa aaa aaa aaa -aab aaa aaa -"} -(295,1,1) = {" aaa aaa -aab aaa aaa aaa @@ -135231,10 +142638,14 @@ aaa aaa aaa aaa +aab aaa aaa +"} +(295,1,1) = {" aaa aaa +aab aaa aaa aaa @@ -135301,18 +142712,6 @@ aaa aaa aaa aaa -aab -aaa -aaa -aKQ -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -135328,8 +142727,48 @@ aaa aaa aaa aaa +aab +aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +bdH +bdH +bdH +aak +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -135494,37 +142933,37 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aaa aaa -aKQ -aaa -aaa -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +bdH +bdH +bdH +bdH +bdH +bdH +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +lmz +bdH +bdH +bdH aab aab aab @@ -135696,39 +143135,39 @@ aaa aaa aaa aaa +aab aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aKQ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +aab aaa aaa aaa @@ -135899,39 +143338,39 @@ aaa aaa aaa aaa +aab aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aKQ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +aab aaa aaa aaa @@ -136102,39 +143541,39 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aKQ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aab +aab +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +jRz +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aab aaa aaa aaa @@ -136334,7 +143773,7 @@ aaa aaa aaa aaa -aaa +bdH aaa aaa aaa diff --git a/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm b/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm index 2d280dd46967..b593cfbd943a 100644 --- a/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm +++ b/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm @@ -166,6 +166,11 @@ }, /turf/open/floor/wood, /area/whiskey_outpost/inside/cic) +"aC" = ( +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/whiskey_outpost/inside/cic) "aE" = ( /obj/structure/bed, /obj/item/bedsheet/hop, @@ -868,6 +873,13 @@ "dl" = ( /turf/closed/wall/r_wall/unmeltable, /area/whiskey_outpost/inside/hospital) +"dp" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/prison, +/area/whiskey_outpost/inside/supply) "dr" = ( /obj/structure/window/reinforced{ dir = 4; @@ -1048,7 +1060,7 @@ /obj/item/device/healthanalyzer, /obj/item/device/healthanalyzer, /obj/item/device/healthanalyzer, -/obj/item/weapon/gun/shotgun/double/sawn, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /turf/open/floor{ dir = 1; icon_state = "whitegreen" @@ -1061,13 +1073,6 @@ /obj/effect/landmark/late_join, /turf/open/gm/dirt, /area/whiskey_outpost/inside/caves/tunnel) -"dV" = ( -/obj/structure/machinery/chem_master, -/turf/open/floor{ - dir = 9; - icon_state = "whitegreen" - }, -/area/whiskey_outpost/inside/hospital) "dW" = ( /turf/open/floor/plating{ icon_state = "platebot" @@ -1202,16 +1207,6 @@ /obj/effect/landmark/late_join, /turf/open/gm/dirt, /area/whiskey_outpost/inside/caves/tunnel) -"ez" = ( -/obj/structure/machinery/chem_dispenser, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor{ - dir = 1; - icon_state = "whitegreen" - }, -/area/whiskey_outpost/inside/hospital) "eB" = ( /turf/closed/wall/rock/brown, /area/whiskey_outpost/outside/lane/three_north) @@ -1464,6 +1459,9 @@ pixel_x = 3; pixel_y = 3 }, +/obj/effect/landmark/wo_supplies/storage/belts/lifesaver, +/obj/effect/landmark/wo_supplies/storage/belts/lifesaver, +/obj/effect/landmark/wo_supplies/storage/belts/lifesaver, /turf/open/floor{ dir = 5; icon_state = "whitegreen" @@ -1932,10 +1930,7 @@ }, /area/whiskey_outpost/inside/cic) "gX" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/landmark/wo_supplies/storage/belts/lifesaver, -/obj/effect/landmark/wo_supplies/storage/belts/lifesaver, -/obj/effect/landmark/wo_supplies/storage/belts/lifesaver, +/obj/structure/machinery/gel_refiller, /turf/open/floor{ dir = 4; icon_state = "whitegreen" @@ -1958,13 +1953,6 @@ /obj/structure/machinery/defenses/sentry/premade, /turf/open/gm/dirt, /area/whiskey_outpost/outside/lane/four_north) -"he" = ( -/obj/structure/machinery/chem_dispenser, -/turf/open/floor{ - dir = 6; - icon_state = "whitegreen" - }, -/area/whiskey_outpost/inside/hospital) "hf" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -2045,6 +2033,13 @@ /obj/structure/surface/rack, /turf/open/jungle, /area/whiskey_outpost/outside/lane/two_south) +"hr" = ( +/obj/structure/disposalpipe/trunk, +/obj/structure/machinery/disposal/deliveryChute{ + dir = 1 + }, +/turf/open/floor/prison, +/area/whiskey_outpost/inside/supply) "hs" = ( /turf/open/gm/coast/beachcorner2/south_west, /area/whiskey_outpost/outside/lane/four_north) @@ -2425,13 +2420,6 @@ icon_state = "warnplate" }, /area/whiskey_outpost/outside/north/northeast) -"ix" = ( -/obj/structure/machinery/chem_master, -/turf/open/floor{ - dir = 10; - icon_state = "whitegreen" - }, -/area/whiskey_outpost/inside/hospital) "iy" = ( /obj/effect/landmark/start/whiskey/cargo, /turf/open/floor/prison{ @@ -3086,8 +3074,10 @@ }, /area/whiskey_outpost/inside/supply) "kE" = ( -/obj/structure/surface/rack, -/turf/open/floor/plating/plating_catwalk/prison, +/obj/structure/machinery/computer/cryopod, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, /area/whiskey_outpost/inside/supply) "kG" = ( /obj/structure/bed/chair{ @@ -4288,6 +4278,10 @@ /obj/effect/landmark/start/whiskey/pilot, /turf/open/gm/dirt, /area/whiskey_outpost/outside/mortar_pit) +"pg" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/prison, +/area/whiskey_outpost/inside/supply) "pj" = ( /obj/effect/landmark/start/whiskey/engineer, /turf/open/gm/dirtgrassborder/north, @@ -4299,6 +4293,15 @@ /obj/item/shard, /turf/open/floor/plating, /area/whiskey_outpost/outside/south/far) +"pn" = ( +/obj/structure/machinery/floodlight{ + light_on = 1 + }, +/turf/open/floor/plating{ + dir = 6; + icon_state = "asteroidwarning" + }, +/area/whiskey_outpost/outside/north/platform) "pq" = ( /turf/closed/wall/r_wall, /area/whiskey_outpost/inside/living) @@ -4434,7 +4437,7 @@ "pO" = ( /obj/structure/bed, /obj/item/bedsheet/orange, -/obj/item/toy/farwadoll{ +/obj/item/toy/plush/farwa{ pixel_x = 5 }, /obj/item/clothing/under/redpyjamas, @@ -5170,7 +5173,7 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/whiskey_outpost/inside/engineering) "sh" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_guns/wo, +/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/wo, /turf/open/floor/prison{ icon_state = "floor_plate" }, @@ -5242,6 +5245,10 @@ /obj/structure/sign/ROsign, /turf/closed/wall/r_wall, /area/whiskey_outpost) +"sw" = ( +/obj/effect/decal/warning_stripes, +/turf/open/floor/prison, +/area/whiskey_outpost/inside/supply) "sx" = ( /obj/structure/machinery/cm_vending/clothing/dress, /turf/open/floor/prison{ @@ -5270,7 +5277,7 @@ }, /area/whiskey_outpost/inside/living) "sJ" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_ammo/wo, +/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/wo, /turf/open/floor/prison, /area/whiskey_outpost/inside/supply) "sK" = ( @@ -5375,9 +5382,8 @@ /turf/open/floor/prison, /area/whiskey_outpost/inside/supply) "th" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +/obj/structure/disposalpipe/junction{ + dir = 8 }, /turf/open/floor/prison, /area/whiskey_outpost/inside/supply) @@ -5748,12 +5754,13 @@ dir = 4; id = "trash" }, -/obj/structure/machinery/recycler{ - recycle_dir = 8 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/machinery/light/small, +/obj/structure/machinery/recycler/whiskey{ + recycle_dir = 8 + }, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" @@ -5967,15 +5974,6 @@ icon_state = "floor_plate" }, /area/whiskey_outpost/inside/bunker) -"vd" = ( -/obj/structure/machinery/floodlight{ - on = 1 - }, -/turf/open/floor/plating{ - dir = 6; - icon_state = "asteroidwarning" - }, -/area/whiskey_outpost/outside/north/platform) "ve" = ( /turf/closed/wall, /area/whiskey_outpost/outside/lane/one_north) @@ -6302,6 +6300,7 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, +/obj/structure/machinery/light/small, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" @@ -6365,7 +6364,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/machinery/light/small, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" @@ -6431,6 +6429,14 @@ "wK" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, /area/whiskey_outpost/outside/lane/two_south) +"wL" = ( +/obj/structure/surface/rack, +/obj/item/device/destTagger, +/obj/item/packageWrap, +/obj/item/packageWrap, +/obj/item/packageWrap, +/turf/open/floor/prison, +/area/whiskey_outpost/inside/supply) "wM" = ( /obj/structure/machinery/line_nexter{ dir = 1; @@ -6561,10 +6567,17 @@ }, /area/whiskey_outpost/inside/cic) "xk" = ( -/obj/structure/machinery/light, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/obj/structure/surface/rack, +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1; + dir = 1 }, +/obj/item/device/destTagger, +/obj/item/packageWrap, +/obj/item/packageWrap, +/obj/item/packageWrap, +/turf/open/floor/prison, /area/whiskey_outpost/inside/supply) "xl" = ( /obj/item/ammo_casing{ @@ -6816,6 +6829,7 @@ /area/whiskey_outpost/inside/hospital) "yj" = ( /obj/effect/landmark/start/whiskey/cargo, +/obj/structure/disposalpipe/segment, /turf/open/floor/prison{ dir = 8; icon_state = "darkyellowcorners2" @@ -6895,10 +6909,6 @@ dir = 4; health = 80 }, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" @@ -6954,6 +6964,9 @@ health = 80 }, /obj/item/tool/hand_labeler, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/prison{ dir = 8; icon_state = "darkyellow2" @@ -7369,28 +7382,10 @@ "Af" = ( /turf/open/gm/coast/beachcorner/north_west, /area/whiskey_outpost/outside/lane/four_south) -"Ag" = ( -/obj/structure/machinery/floodlight{ - on = 1 - }, -/turf/open/floor/plating{ - dir = 5; - icon_state = "asteroidwarning" - }, -/area/whiskey_outpost/outside/north/platform) "Ah" = ( /obj/structure/sign/poster, /turf/closed/wall/r_wall, /area/whiskey_outpost/inside/supply) -"Ak" = ( -/obj/structure/machinery/floodlight{ - on = 1 - }, -/turf/open/floor/plating{ - dir = 9; - icon_state = "asteroidwarning" - }, -/area/whiskey_outpost/outside/north/platform) "Am" = ( /obj/structure/surface/rack, /obj/effect/landmark/wo_supplies/guns/common/m41a, @@ -7906,6 +7901,13 @@ icon_state = "floor_plate" }, /area/whiskey_outpost/inside/bunker/bunker/front) +"Cd" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/closed/wall/r_wall/unmeltable, +/area/whiskey_outpost/inside/supply) "Ce" = ( /turf/open/gm/grass/grassbeach/west, /area/whiskey_outpost/outside/lane/one_north) @@ -7969,6 +7971,15 @@ icon_state = "asteroidfloor" }, /area/whiskey_outpost/outside/north/platform) +"Cs" = ( +/obj/structure/machinery/chem_master{ + tether_range = 4 + }, +/turf/open/floor{ + dir = 6; + icon_state = "whitegreen" + }, +/area/whiskey_outpost/inside/hospital) "Ct" = ( /obj/structure/platform_decoration{ dir = 4 @@ -8037,6 +8048,16 @@ icon_state = "floor_plate" }, /area/whiskey_outpost/inside/bunker/pillbox/three) +"CC" = ( +/obj/structure/machinery/chem_dispenser, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor{ + dir = 10; + icon_state = "whitegreen" + }, +/area/whiskey_outpost/inside/hospital) "CD" = ( /turf/open/gm/river, /area/whiskey_outpost/outside/lane/one_north) @@ -8095,6 +8116,15 @@ /obj/structure/machinery/colony_floodlight, /turf/open/gm/dirt, /area/whiskey_outpost/outside/lane/four_south) +"CU" = ( +/obj/structure/machinery/floodlight{ + light_on = 1 + }, +/turf/open/floor/plating{ + dir = 5; + icon_state = "asteroidwarning" + }, +/area/whiskey_outpost/outside/north/platform) "CY" = ( /obj/structure/platform, /turf/open/gm/river, @@ -8232,7 +8262,7 @@ /area/whiskey_outpost/outside/north/platform) "Dw" = ( /obj/structure/surface/table/woodentable/poor, -/obj/item/weapon/gun/shotgun/double/sawn, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /turf/open/floor/wood, /area/whiskey_outpost/inside/caves/caverns) "Dy" = ( @@ -8379,6 +8409,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk/prison, /area/whiskey_outpost/inside/bunker) +"DW" = ( +/obj/structure/machinery/door/window/northleft, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/whiskey_outpost/inside/engineering) "DX" = ( /obj/structure/blocker/invisible_wall, /turf/open/gm/river, @@ -8430,6 +8467,15 @@ "Ee" = ( /turf/open/gm/coast/east, /area/whiskey_outpost/outside/river/east) +"Ef" = ( +/obj/structure/machinery/floodlight{ + light_on = 1 + }, +/turf/open/floor/plating{ + dir = 9; + icon_state = "asteroidwarning" + }, +/area/whiskey_outpost/outside/north/platform) "Eg" = ( /turf/open/gm/coast/beachcorner/north_west, /area/whiskey_outpost/outside/river/west) @@ -8476,15 +8522,6 @@ }, /turf/open/gm/coast/beachcorner2/south_east, /area/whiskey_outpost/outside/lane/four_north) -"Et" = ( -/obj/structure/machinery/floodlight{ - on = 1 - }, -/turf/open/floor/plating{ - dir = 10; - icon_state = "asteroidwarning" - }, -/area/whiskey_outpost/outside/north/platform) "Eu" = ( /turf/open/gm/coast/beachcorner/north_east, /area/whiskey_outpost/outside/river/west) @@ -8594,6 +8631,10 @@ icon_state = "grass_impenetrable" }, /area/whiskey_outpost/outside/north/northwest) +"EL" = ( +/obj/structure/machinery/cm_vending/gear/synth, +/turf/open/floor/plating/plating_catwalk, +/area/whiskey_outpost/inside/cic) "EN" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor{ @@ -9852,7 +9893,7 @@ /turf/closed/wall/r_wall, /area/whiskey_outpost/inside/bunker/bunker/front) "Kc" = ( -/obj/structure/machinery/cm_vending/sorted/attachments, +/obj/structure/machinery/cm_vending/sorted/attachments/wo, /turf/open/floor/plating, /area/whiskey_outpost/inside/supply) "Kd" = ( @@ -9898,6 +9939,18 @@ /obj/structure/sign/poster, /turf/closed/wall/r_wall, /area/whiskey_outpost/inside/engineering) +"Ks" = ( +/obj/structure/closet/secure_closet/cargotech, +/obj/item/clothing/accessory/storage/webbing, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/whiskey_outpost/inside/supply) "Kt" = ( /obj/structure/fence, /turf/open/gm/dirt, @@ -10027,6 +10080,15 @@ "Lh" = ( /turf/open/gm/coast/south, /area/whiskey_outpost/outside/river/west) +"Li" = ( +/obj/structure/machinery/chem_master{ + tether_range = 4 + }, +/turf/open/floor{ + dir = 1; + icon_state = "whitegreen" + }, +/area/whiskey_outpost/inside/hospital) "Lj" = ( /obj/effect/landmark/start/whiskey/medic, /turf/open/floor/prison{ @@ -10788,6 +10850,20 @@ icon_state = "white" }, /area/whiskey_outpost/inside/hospital/triage) +"OI" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/whiskey_outpost) "OK" = ( /turf/closed/wall/strata_ice/jungle, /area/whiskey_outpost/outside/south/far) @@ -11832,7 +11908,7 @@ }, /area/whiskey_outpost/inside/hospital/triage) "TD" = ( -/obj/item/weapon/claymore/mercsword/machete, +/obj/item/weapon/sword/machete, /turf/open/jungle{ bushes_spawn = 0; icon_state = "grass_impenetrable" @@ -12243,6 +12319,16 @@ icon_state = "blue" }, /area/whiskey_outpost/inside/cic) +"Vr" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/item/device/destTagger, +/obj/item/packageWrap, +/obj/item/packageWrap, +/turf/open/floor/prison, +/area/whiskey_outpost/inside/supply) "Vt" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -12535,6 +12621,13 @@ icon_state = "desert2" }, /area/whiskey_outpost/inside/caves/caverns/west) +"WA" = ( +/obj/structure/machinery/chem_dispenser, +/turf/open/floor{ + dir = 9; + icon_state = "whitegreen" + }, +/area/whiskey_outpost/inside/hospital) "WC" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -12567,6 +12660,10 @@ icon_state = "asteroidwarning" }, /area/whiskey_outpost/outside/north) +"WK" = ( +/obj/structure/machinery/cm_vending/own_points/experimental_tools, +/turf/open/floor/plating/plating_catwalk, +/area/whiskey_outpost/inside/cic) "WL" = ( /obj/structure/flora/bush/ausbushes/var3/leafybush, /obj/structure/disposalpipe/segment{ @@ -12653,6 +12750,15 @@ /obj/effect/landmark/start/whiskey/marine, /turf/open/jungle, /area/whiskey_outpost/outside/lane/two_south) +"Xi" = ( +/obj/structure/machinery/floodlight{ + light_on = 1 + }, +/turf/open/floor/plating{ + dir = 10; + icon_state = "asteroidwarning" + }, +/area/whiskey_outpost/outside/north/platform) "Xj" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -12798,6 +12904,13 @@ /obj/effect/spawner/random/tool, /turf/open/gm/dirtgrassborder/east, /area/whiskey_outpost/outside/lane/two_south) +"XO" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, +/area/whiskey_outpost/inside/supply) "XP" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -19245,9 +19358,9 @@ mT mT mT mT -mT -mT -mT +ak +ak +ak mT mT mT @@ -19448,7 +19561,7 @@ mT mT mT ak -ak +WK ak ak ak @@ -19648,9 +19761,9 @@ mT mT mT mT -mT ak ai +aC qe ih Nr @@ -19850,9 +19963,9 @@ mT mT mT mT -mT ak Vy +aC PB PM Ed @@ -20054,7 +20167,7 @@ ak ak ak ak -ak +EL Mo Gx PM @@ -21079,7 +21192,7 @@ vn tv wl nK -ya +JN ya ya nr @@ -21280,8 +21393,8 @@ nK vv tv wz -nK -JN +DW +ya ya Jd nr @@ -21685,7 +21798,7 @@ vw tv wA nK -ya +JN ya ya nr @@ -22495,7 +22608,7 @@ uB uB yf xg -vC +xg nr fy fy @@ -22697,7 +22810,7 @@ kS pK vL yz -nr +vC nr fy fy @@ -23074,11 +23187,11 @@ JF qB yh qz -dV +WA gN hb JT -ix +CC qz CE RU @@ -23297,12 +23410,12 @@ cx rm uf wQ -kS -pK -kS -pK +dp +XO +pg +XO yj -yF +Ks nr nr UN @@ -23478,11 +23591,11 @@ SC la As qz -ez +Li qB hb oQ -he +Cs qz iV js @@ -23699,14 +23812,14 @@ oW OX qT lw -rZ -kS -kS -kS +xk kS kS +pK kS -nr +sw +hr +Cd nr mT BT @@ -23901,13 +24014,13 @@ oW OX qT lw -rZ +wL kS kS kS kS Dk -vN +Vr nr mT mT @@ -24322,13 +24435,13 @@ BN BN ed Dp -vd +pn aj Av zY Av aj -Ag +CU Dn kI fI @@ -24706,7 +24819,7 @@ la nn oI rg -oP +OI su Kc sh @@ -24917,7 +25030,7 @@ kS tS tS wQ -wQ +kS nr zg yk @@ -25116,11 +25229,11 @@ VF TP wQ kS -kE -kE -xk +tS +tS +wQ +vN yv -nr Av zG Av @@ -25320,9 +25433,9 @@ kS kS tS tS -wQ +kE +nr nr -lw fj fj fj @@ -25534,13 +25647,13 @@ sQ ed ed Dp -Et +Xi aj xM mY xM aj -Ak +Ef Dn kI FX @@ -28564,13 +28677,13 @@ sQ ed ed Dp -vd +pn aj Av Bt FV aj -Ag +CU Dn Dp CM @@ -29359,13 +29472,13 @@ uv sU sQ Dp -vd +pn aj Av Bt Av aj -Ag +CU Dn BN BN @@ -29776,13 +29889,13 @@ BN ed ed Dp -Et +Xi aj xM Bw xM aj -Ak +Ef Dn kI fI @@ -30571,13 +30684,13 @@ mT in ed Dp -Et +Xi aj xM Bw xM aj -Ak +Ef Dn ed AC diff --git a/maps/map_files/generic/Admin_level.dmm b/maps/map_files/generic/Admin_level.dmm index 727ae18b926a..d085d7a99b0c 100644 --- a/maps/map_files/generic/Admin_level.dmm +++ b/maps/map_files/generic/Admin_level.dmm @@ -12,7 +12,7 @@ /turf/open/floor/wood/ship, /area/adminlevel/ert_station) "ad" = ( -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -27,7 +27,7 @@ id = "tdome_observer"; name = "\improper Observer Shutters" }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -63,7 +63,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -72,7 +72,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "E" }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -83,7 +83,7 @@ id = "tdome_t2"; name = "\improper Team 2 Shutters" }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ icon_state = "test_floor4" }, /area/tdome) @@ -101,7 +101,7 @@ /turf/open/space, /area/space) "aE" = ( -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 1; icon_state = "w-y0" }, @@ -219,8 +219,15 @@ /turf/open/floor/carpet, /area/centcom/living) "eA" = ( -/obj/structure/sign/poster/pinup, -/turf/closed/wall/r_wall/unmeltable, +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/structure/machinery/door_control{ + id = "ERT Lock Big"; + name = "Hangar Lock"; + pixel_y = -32 + }, +/turf/open/floor/plating/almayer, /area/adminlevel/ert_station) "eE" = ( /turf/open/floor/carpet/edge{ @@ -676,7 +683,7 @@ /obj/item/device/binoculars{ pixel_y = 4 }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -735,14 +742,15 @@ /turf/open/floor/carpet, /area/centcom/living) "tP" = ( -/obj/structure/machinery/computer/cameras/wooden_tv{ - desc = "An old TV hooked up to a video cassette recorder, you can even use it to time shift WOW."; - name = "Television set"; - network = null; - pixel_x = -4; - pixel_y = 2 +/obj/effect/decal/warning_stripes{ + icon_state = "E" }, -/turf/closed/wall/r_wall/unmeltable, +/obj/structure/machinery/door_control{ + id = "ERT Lock 4"; + name = "Hangar Lock"; + pixel_x = -24 + }, +/turf/open/floor/plating/almayer, /area/adminlevel/ert_station) "tY" = ( /obj/structure/machinery/washing_machine, @@ -785,6 +793,10 @@ icon_state = "kitchen" }, /area/adminlevel/ert_station) +"ur" = ( +/obj/docking_port/stationary/emergency_response/idle_port6, +/turf/open/floor/plating, +/area/adminlevel/ert_station) "uI" = ( /turf/open/floor/almayer{ icon_state = "red" @@ -884,7 +896,7 @@ }, /area/adminlevel/ert_station/shuttle_dispatch) "wj" = ( -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 1; icon_state = "w-y2" }, @@ -909,7 +921,7 @@ /area/adminlevel/ert_station) "wv" = ( /obj/structure/machinery/vending/snack, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -1040,7 +1052,7 @@ }, /area/adminlevel/ert_station) "zk" = ( -/obj/structure/machinery/chem_dispenser/beer{ +/obj/structure/machinery/chem_dispenser/soda/beer{ density = 0; pixel_y = 10 }, @@ -1135,7 +1147,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "E" }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -1151,7 +1163,7 @@ /obj/structure/flora/pottedplant{ icon_state = "pottedplant_20" }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -1265,13 +1277,13 @@ /turf/open/floor/plating/almayer, /area/adminlevel/ert_station/shuttle_dispatch) "DV" = ( -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ icon_state = "tcomms" }, /area/tdome) "Ee" = ( /obj/effect/landmark/thunderdome/one, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -1363,7 +1375,7 @@ "Fw" = ( /obj/structure/surface/table/almayer, /obj/item/storage/fancy/cigar, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -1383,8 +1395,8 @@ }, /obj/structure/machinery/door/poddoor/almayer{ dir = 4; - unacidable = 1; - id = "ERT Lock 1" + id = "ERT Lock 1"; + unacidable = 1 }, /turf/open/floor/almayer{ icon_state = "tcomms" @@ -1627,7 +1639,7 @@ /turf/closed/wall/mineral/gold, /area/adminlevel/ert_station) "Kq" = ( -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ icon_state = "redfull" }, /area/tdome/tdome2) @@ -1646,21 +1658,6 @@ icon_state = "greencorner" }, /area/adminlevel/ert_station) -"KH" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - damage_cap = 50000; - name = "\improper Hangar"; - no_panel = 1 - }, -/obj/structure/machinery/door/poddoor/almayer{ - dir = 4; - unacidable = 1; - id = "ERT Lock Big" - }, -/turf/open/floor/almayer{ - icon_state = "tcomms" - }, -/area/adminlevel/ert_station) "KM" = ( /obj/structure/bed/chair{ dir = 4 @@ -1741,7 +1738,7 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -1821,9 +1818,18 @@ /turf/open/floor/plating/almayer, /area/adminlevel/ert_station/shuttle_dispatch) "Ni" = ( -/obj/structure/curtain/open/shower, +/obj/structure/machinery/door/airlock/almayer/generic{ + damage_cap = 50000; + name = "\improper Hangar"; + no_panel = 1 + }, +/obj/structure/machinery/door/poddoor/almayer{ + dir = 4; + id = "ERT Lock 4"; + unacidable = 1 + }, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "tcomms" }, /area/adminlevel/ert_station) "Nk" = ( @@ -1865,7 +1871,7 @@ /area/adminlevel/ert_station) "NU" = ( /obj/structure/machinery/vending/cola, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -1881,8 +1887,8 @@ }, /obj/structure/machinery/door/poddoor/almayer{ dir = 4; - unacidable = 1; - id = "ERT Lock 3" + id = "ERT Lock 3"; + unacidable = 1 }, /turf/open/floor/almayer{ icon_state = "tcomms" @@ -1931,7 +1937,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -1961,13 +1967,13 @@ /area/adminlevel/simulation) "PF" = ( /obj/effect/landmark/thunderdome/two, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, /area/tdome/tdome2) "PJ" = ( -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 1; icon_state = "w-y1" }, @@ -2035,7 +2041,7 @@ /area/adminlevel/ert_station) "QL" = ( /obj/structure/bed/chair/comfy/black, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ icon_state = "tcomms" }, /area/tdome/tdomeobserve) @@ -2089,18 +2095,14 @@ id = "tdome_t1"; name = "\improper Team 1 Shutters" }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ icon_state = "test_floor4" }, /area/tdome) "Sk" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E" - }, -/obj/structure/machinery/door_control{ +/obj/structure/machinery/door/poddoor/almayer{ id = "ERT Lock Big"; - name = "Hangar Lock"; - pixel_x = -24 + unacidable = 1 }, /turf/open/floor/plating/almayer, /area/adminlevel/ert_station) @@ -2163,7 +2165,7 @@ name = "Observer Shutters"; pixel_y = 9 }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -2305,20 +2307,13 @@ }, /turf/open/floor/plating/almayer, /area/adminlevel/ert_station/shuttle_dispatch) -"Vu" = ( -/obj/structure/machinery/shower, -/obj/item/tool/soap/syndie, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/adminlevel/ert_station) "VC" = ( /obj/structure/sign/poster/clf, /turf/closed/wall, /area/adminlevel/ert_station) "VD" = ( /obj/structure/machinery/vending/cigarette/free, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -2488,7 +2483,7 @@ }, /area/adminlevel/ert_station) "YP" = ( -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -2503,7 +2498,7 @@ /turf/open/floor/plating/plating_catwalk, /area/adminlevel/ert_station) "Zd" = ( -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ icon_state = "bluefull" }, /area/tdome/tdome1) @@ -2565,8 +2560,8 @@ }, /obj/structure/machinery/door/poddoor/almayer{ dir = 4; - unacidable = 1; - id = "ERT Lock 2" + id = "ERT Lock 2"; + unacidable = 1 }, /turf/open/floor/almayer{ icon_state = "tcomms" @@ -2613,6 +2608,11 @@ aa aa aa aa +as +as +as +as +as aa aa aa @@ -2637,29 +2637,24 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as aa aa aa @@ -2770,24 +2765,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -2812,11 +2789,29 @@ aC aa aa aa -aa -aa -aa -aa -aa +as +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +aC +aC +aC +aC +aC aC aC aC @@ -2922,24 +2917,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -2964,12 +2941,30 @@ aC aC aa aa +as +TT +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +aa aa aa aa aa aa -aC aa aa aa @@ -3074,24 +3069,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -3116,13 +3093,9 @@ aa aC aa aa -aa -aa -aa -aa -aa -aC -aa +as +TT +as wW wW wW @@ -3131,6 +3104,7 @@ wW wW wW wW +Ch wW wW wW @@ -3144,6 +3118,7 @@ wW wW wW wW +hZ wW wW wW @@ -3160,13 +3135,33 @@ wW wW wW wW -aa -aC -aa -aa -hp -hp -hp +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +aa +aC +aa +aa +hp +hp +hp hp hp hp @@ -3226,24 +3221,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -3268,13 +3245,31 @@ aa aC aa aa -aa -aa -aa -aa -aa -aC -aa +as +TT +as +wW +Ya +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ya wW Ya Ly @@ -3378,24 +3373,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -3420,13 +3397,31 @@ aa aC aa aa -aa -aa -aa -aa -aa -aC -aa +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW KW FB @@ -3530,24 +3525,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -3572,13 +3549,31 @@ aa aC aa aa -aa -aa -aa -aa -aa -aC -aa +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +Jl +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW KW FB @@ -3682,24 +3677,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -3724,13 +3701,31 @@ aa aC aa aa -aa -aa -aa -aa -aa -aC -aa +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW KW FB @@ -3834,24 +3829,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -3876,13 +3853,9 @@ aa aC aC aa -aa -aa -aa -aa -aa -aC -aa +as +TT +as wW KW FB @@ -3900,7 +3873,29 @@ FB FB FB FB -Fo +FB +FB +FB +FB +Fo +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW KW FB @@ -3986,24 +3981,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -4028,13 +4005,31 @@ aa aa aC aa -aa -aa -aa -aa -aa -aC -aa +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW KW FB @@ -4138,24 +4133,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -4180,13 +4157,31 @@ ab aa aC aC -aa -aa -aa -aa -aa -aC -aa +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW KW FB @@ -4290,24 +4285,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -4332,13 +4309,31 @@ ab aa aa aC -aa -aa -aa -aa -aa -aC -aa +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW KW FB @@ -4442,24 +4437,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -4484,13 +4461,31 @@ ab ab aa aC -aa -aa -aa -aa -aa -aC -aa +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW KW FB @@ -4594,24 +4589,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -4636,13 +4613,9 @@ ad ab aa aC -aa -aa -aa -aa -aa -aC -aa +as +TT +as wW KW FB @@ -4660,6 +4633,10 @@ FB FB FB FB +FB +FB +FB +FB Fo wW KW @@ -4680,7 +4657,25 @@ FB FB Fo wW -aa +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo +wW +aa aC aa aa @@ -4746,24 +4741,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -4788,13 +4765,31 @@ ad ab aa aC -aa -aa -aa -aa -aa -aC -aa +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW Ya Js @@ -4898,24 +4893,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aC aC @@ -4940,13 +4917,31 @@ ad ab aa aC -aa -aa -aa -aa -aa -aC -aa +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW wW wW @@ -5050,24 +5045,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aC aa @@ -5092,14 +5069,32 @@ ad ab aa aC -aa -aa -aa -aa -aa -aC -aa -eA +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo +wW va ug AL @@ -5202,24 +5197,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aC aa @@ -5244,13 +5221,31 @@ ad ab aa aC -aa -aa -aa -aa -aa -aC -aa +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW YU YU @@ -5354,24 +5349,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aC aa @@ -5396,22 +5373,40 @@ ad ab aa aC -aa -aa -aa -aa -aa -aC -aa +as +TT +as wW -Vu -Ni -AL -AL -AL -ML -YU -op +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo +Sk +AL +AL +AL +AL +AL +ML +YU +op Po Po Po @@ -5506,24 +5501,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aC aa @@ -5548,13 +5525,31 @@ ad ab aa aC -aa -aa -aa -aa -aa -aC -aa +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +eA wW YU YU @@ -5658,24 +5653,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aC aa @@ -5700,13 +5677,31 @@ ad ab aa aC -aa -aa -aa -aa -aa -aC -aa +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW BV Gr @@ -5810,24 +5805,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aC aa @@ -5852,13 +5829,31 @@ ad ab aa aC -aa -aa -aa -aa -aa -aC -aa +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW uk CU @@ -5962,24 +5957,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aC aa @@ -6004,13 +5981,31 @@ ad ab aa aC -aa -aa -aa -aa -aa -aC -aa +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW yk CU @@ -6114,24 +6109,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aC aa @@ -6156,14 +6133,32 @@ ad ab aa aC -aa -aa -aa -aa -aa -aC -aa -wW +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo +wW yC CU CU @@ -6266,24 +6261,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aC aa @@ -6308,13 +6285,31 @@ ad ab aa aC -aa -aa -aa -aa -aa -aC -aa +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW yQ CU @@ -6418,24 +6413,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aC aa @@ -6460,13 +6437,31 @@ ad ab aa aC -aa -aC -aC -aC -aC -aC -aa +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW zg CU @@ -6570,24 +6565,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aC aC @@ -6612,14 +6589,32 @@ ad ab aa aC -aa -aC -aa -aa -aa -aa -aa -tP +as +TT +as +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo +wW zk CU CU @@ -6722,24 +6717,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -6764,18 +6741,37 @@ ad ab aa aC -aa -aC -aa -wW +as +TT +as wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo wW wW wW wW wW wW -Ch wW wW wW @@ -6785,13 +6781,12 @@ wW wW wW Zw -KH +Ni Zw wW wW hZ wW -wW Zw Oa Zw @@ -6874,24 +6869,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -6916,15 +6893,33 @@ ab ab aa aC -aa -aC -aa +as +TT +as wW -Ya -Ly -Ly -Ly -Ly +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo +wW +Ya Ly Ly Ly @@ -6938,8 +6933,8 @@ Ly Ly Ly Ly -Sk Ly +tP Ya wW Ya @@ -7026,24 +7021,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -7068,9 +7045,9 @@ ab aa aa aC -aa -aC -aa +as +TT +as wW KW FB @@ -7112,6 +7089,24 @@ FB FB Fo wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo +wW aa aC aa @@ -7178,24 +7173,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -7220,9 +7197,9 @@ ab aa aC aC -aa -aC -aa +as +TT +as wW KW FB @@ -7234,7 +7211,6 @@ FB FB FB FB -Jl FB FB FB @@ -7244,6 +7220,25 @@ FB FB FB FB +FB +Fo +wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +ur +FB Fo wW KW @@ -7330,24 +7325,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -7372,9 +7349,9 @@ aa aa aC aa -aa -aC -aa +as +TT +as wW KW FB @@ -7416,6 +7393,24 @@ FB FB Fo wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo +wW aa aC aa @@ -7482,24 +7477,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -7524,9 +7501,9 @@ aa aC aC aa -aa -aC -aa +as +TT +as wW KW FB @@ -7568,6 +7545,24 @@ FB FB Fo wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo +wW aa aC aa @@ -7634,24 +7629,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -7676,9 +7653,9 @@ aa aC aa aa -aa -aC -aa +as +TT +as wW KW FB @@ -7720,6 +7697,24 @@ FB FB Fo wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo +wW aa aC aa @@ -7786,24 +7781,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -7828,9 +7805,9 @@ aa aC aa aa -aa -aC -aa +as +TT +as wW KW FB @@ -7872,6 +7849,24 @@ FB FB Fo wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo +wW aa aC aa @@ -7938,24 +7933,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -7980,9 +7957,9 @@ aa aC aa aa -aa -aC -aa +as +TT +as wW KW FB @@ -8024,6 +8001,24 @@ FB FB Fo wW +KW +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +FB +Fo +wW aa aC aa @@ -8090,24 +8085,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -8132,9 +8109,31 @@ aa aC aa aa -aa -aC -aa +as +TT +as +wW +Ya +Js +Js +Js +Js +Js +Js +Js +Js +Js +Js +Js +Js +Js +Js +Js +Js +Js +Js +Js +Ya wW KW FB @@ -8152,10 +8151,6 @@ FB FB FB FB -FB -FB -FB -FB Fo wW KW @@ -8242,24 +8237,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -8284,9 +8261,31 @@ aa aC aa aa -aa -aC -aa +as +TT +as +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW wW KW FB @@ -8304,10 +8303,6 @@ FB FB FB FB -FB -FB -FB -FB Fo wW KW @@ -8394,24 +8389,6 @@ as as as as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as -as aa aa aa @@ -8436,31 +8413,49 @@ aC aC aa aa +as +TT +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +aa aa -aC aa +as +as +as +as wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo +Ya +Js +Js +Js +Js +Js +Js +Js +Js +Js +Js +Js +Js +Js +Js +Js +Ya wW Ya Js @@ -8541,29 +8536,11 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +as +as +as +as +as aa aa aa @@ -8588,31 +8565,49 @@ aC aa aa aa -aa +as +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT aC -aa +aC +aC +TT +TT +TT +as +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW +wW wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo wW wW wW @@ -8738,34 +8733,34 @@ aa aa aa aa -aa -aa -aa -aC -aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW +as +as +as +as +as +as +as +TT +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as aa aa aa @@ -8890,35 +8885,35 @@ aC aC aC aC -aa -aa -aa +as +as +as +as +as +as +as +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT +TT aC -aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW -aa aC aC aC @@ -9042,36 +9037,36 @@ aa aa aa aC +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as aa aa aa -aC -aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW -aa -aC aa aa aa @@ -9175,55 +9170,55 @@ as as as aa -aC -aa -ds -ds -ds -ds -ds -ds -ds -ds -ds -ds -ds -ds -ds -ds -ds -aa -aC -aa -aa -aa -aC +aC +aa +ds +ds +ds +ds +ds +ds +ds +ds +ds +ds +ds +ds +ds +ds +ds +aa +aC +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +aa aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW aa -aC aa as as @@ -9349,33 +9344,33 @@ aC aa aa aa -aC aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW aa -aC +aa +aa +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +aa +as +as aa as as @@ -9498,36 +9493,36 @@ dy ds aa aC +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as aa -aa -aa -aC -aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW -aa -aC +as +as as as as @@ -9653,33 +9648,33 @@ aC aa aa aa -aC aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW aa -aC +aa +aa +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +aa +aa +as +as +as +as +as +as as as as @@ -9804,32 +9799,32 @@ aa aC aa aa +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as aa -aC aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW +as +as +as +as aa aC TT @@ -9956,32 +9951,32 @@ aa aC aa aa +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as aa -aC aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW +as +as +as +as aa TT as @@ -10108,32 +10103,32 @@ aa aC aa aa +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as aa -aC aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW +as +as +as +as aa aC as @@ -10261,31 +10256,31 @@ aC aa aa aa -aC aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +as +as +as +as aa aC as @@ -10412,32 +10407,32 @@ aa aC aa aa +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +aa aa -aC aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW +as +as +as aa aC as @@ -10565,31 +10560,31 @@ aC aa aa aa -aC aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +as +as +as aa aC as @@ -10717,31 +10712,31 @@ aC aa aa aa -aC +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +aa aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW +as +as +as aa aC as @@ -10869,31 +10864,31 @@ aC aa aa aa -aC +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW +aa +as +as +as aa aC as @@ -11021,31 +11016,31 @@ aC aa aa aa -aC aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +as +as +as aa aC as @@ -11173,31 +11168,31 @@ aC aa aa aa -aC +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW +aa +as +as +as aa aC as @@ -11325,31 +11320,31 @@ aC aa aa aa -aC +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW +aa +as +as +as aa aC as @@ -11477,31 +11472,31 @@ aC aa aa aa -aC -aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +aa +aa +aa +aa +aa aa aC as @@ -11629,31 +11624,31 @@ aC aa aa aa -aC aa -wW -KW -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -FB -Fo -wW +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aC as @@ -11781,31 +11776,31 @@ aa aa aa aa -aC aa -wW -Ya -Js -Js -Js -Js -Js -Js -Js -Js -Js -Js -Js -Js -Js -Js -Js -Js -Js -Js -Js -Ya -wW +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +aa +aa +aa +aa aa aC as @@ -11933,32 +11928,32 @@ aa aa aa aa -aC aa -wW -wW -wW -wW -wW -wW -wW -wW -wW -wW -wW -wW -wW -wW -wW -wW -wW -wW -wW -wW -wW -wW -wW +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as aa +aa +aa +as +as aC as Oi @@ -12085,32 +12080,32 @@ as as as aa -aC -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa aa +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as +as aa aa aa +as +as aC as Oi @@ -12237,32 +12232,32 @@ as as as as -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +as +as aC as as diff --git a/maps/new_varadero.json b/maps/new_varadero.json index d9d6a0d231cc..ec90142c2295 100644 --- a/maps/new_varadero.json +++ b/maps/new_varadero.json @@ -3,15 +3,22 @@ "map_path": "map_files/New_Varadero", "map_file": "New_Varadero.dmm", "webmap_url": "NewVaradero", + "weather_holder": "/datum/weather_ss_map_holder/new_varadero", "survivor_types": [ - "/datum/equipment_preset/survivor/scientist/lv", - "/datum/equipment_preset/survivor/doctor/lv", - "/datum/equipment_preset/survivor/chaplain/lv", - "/datum/equipment_preset/survivor/engineer/lv", - "/datum/equipment_preset/survivor/trucker/lv", - "/datum/equipment_preset/survivor/security/lv", - "/datum/equipment_preset/survivor/colonial_marshal/lv" + "/datum/equipment_preset/survivor/scientist/nv", + "/datum/equipment_preset/survivor/doctor/nv", + "/datum/equipment_preset/survivor/chaplain/nv", + "/datum/equipment_preset/survivor/engineer/nv", + "/datum/equipment_preset/survivor/trucker/nv", + "/datum/equipment_preset/survivor/interstellar_commerce_commission_liaison/nv", + "/datum/equipment_preset/survivor/security/nv", + "/datum/equipment_preset/survivor/beachbum", + "/datum/equipment_preset/survivor/miner", + "/datum/equipment_preset/survivor/clf" + ], + "CO_survivor_types": [ + "/datum/equipment_preset/survivor/new_varadero/commander" ], "defcon_triggers": [ @@ -21,12 +28,13 @@ 580, 0.0 ], - "survivor_message": "You are an UA employee on the island outpost of New Varadero, it is vital that you do all that you can to contain the outbreak, or at least survive.", + "survivor_message": "You are an employee for the United Americas on the island outpost of New Varadero. A newfound discovery has unleashed unspeakable horrors. Do everything you can to survive.", "map_item_type": "/obj/item/map/new_varadero", - "announce_text": "A manual distress signal has been received from United American outpost New Varadero. A response team from the ###SHIPNAME### will be dispatched shortly to investigate.\nDesgination: Radio survey station\n\nPop: 98\nTemp: 95F : 35C ext\nRanking officer: Maj. Afric Zimmerman\nTelecommunications array: Repair required\n\nNo further information available at this time.", + "announce_text": "An automated distress signal has been received from UA Outpost New Varadero. A response team from the ###SHIPNAME### will be dispatched shortly to investigate.\nDesignation: Island research station and mining facility\n\nPopulation: 47\nCurrent Temperature: 68F Interior, 97F Exterior\nOutpost Commander: UA Rep. Steve Haifisch\nTelecommunications Array: Repairs required\n\nNo further information available at this time.", "monkey_types": [ - "farwa" + "monkey" ], + "environment_traits": { "Fog": true }, "traits": [{ "Ground": true }], "xvx_hives": { "xeno_hive_alpha": 0, diff --git a/maps/predship/huntership.dmm b/maps/predship/huntership.dmm index 467df24a94f4..7c5d633286f0 100644 --- a/maps/predship/huntership.dmm +++ b/maps/predship/huntership.dmm @@ -195,7 +195,7 @@ }, /area/yautja) "ar" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja/secure{ dir = 1; name = "\improper Wargear Storage" }, @@ -407,7 +407,7 @@ }, /area/yautja) "aP" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja{ dir = 1; name = "\improper Trophy Room" }, @@ -427,7 +427,7 @@ }, /area/yautja) "aT" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja{ name = "\improper Operation Room" }, /turf/open/shuttle/predship, @@ -486,6 +486,9 @@ /obj/structure/pipes/standard/simple/hidden{ dir = 4 }, +/obj/structure/machinery/computer/crew/alt/yautja{ + pixel_y = 24 + }, /turf/open/floor/corsat{ dir = 1; icon_state = "squareswood" @@ -505,7 +508,7 @@ /turf/open/floor/light, /area/yautja) "be" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja{ name = "\improper Blooded Teleporter" }, /turf/open/floor/strata{ @@ -531,13 +534,13 @@ /turf/closed/wall/huntership, /area/yautja) "bl" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja{ name = "\improper Starboard Wing" }, /turf/open/shuttle/predship, /area/yautja) "bm" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja{ name = "\improper Port Wing" }, /turf/open/shuttle/predship, @@ -566,7 +569,7 @@ }, /area/yautja) "bp" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja/secure{ dir = 1; name = "\improper Research Chamber" }, @@ -600,7 +603,7 @@ }, /area/yautja) "bu" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja/secure{ dir = 1; name = "\improper Burial Room" }, @@ -618,7 +621,7 @@ /turf/open/shuttle/predship, /area/yautja) "bx" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja{ dir = 1; name = "\improper Storage Chamber" }, @@ -669,10 +672,10 @@ /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" }, -/obj/item/weapon/claymore/mercsword/machete/arnold{ +/obj/item/weapon/sword/machete/arnold{ + anchored = 1; desc = "Won by an Elder during their youthful hunting days. None are allowed to touch it."; - name = "\improper Dutch's Machete"; - anchored = 1 + name = "\improper Dutch's Machete" }, /turf/open/floor/corsat{ dir = 1; @@ -680,10 +683,11 @@ }, /area/yautja) "bD" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja/secure{ dir = 1; - name = "\improper Unworthy Prey" + name = "\improper Heavy Armory" }, +/obj/structure/machinery/door/poddoor/shutters/almayer/yautja, /turf/open/shuttle/predship, /area/yautja) "bE" = ( @@ -697,7 +701,7 @@ }, /area/yautja) "bG" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja{ name = "\improper Cooler Room" }, /turf/open/shuttle/predship, @@ -749,13 +753,9 @@ /turf/open/shuttle/predship, /area/yautja) "bN" = ( -/obj/structure/kitchenspike{ - icon_state = "spikebloodygreen" - }, -/obj/effect/decal/cleanable/blood/gibs/xeno/body, -/turf/open/floor/strata{ - color = "#5e5d5d"; - icon_state = "multi_tiles" +/turf/closed/wall/cult{ + hull = 1; + name = "runed hull" }, /area/yautja) "bO" = ( @@ -781,16 +781,6 @@ icon_state = "squareswood" }, /area/yautja) -"bR" = ( -/obj/structure/kitchenspike{ - icon_state = "spikebloody" - }, -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/strata{ - color = "#5e5d5d"; - icon_state = "multi_tiles" - }, -/area/yautja) "bS" = ( /obj/structure/pipes/standard/simple/hidden{ dir = 9 @@ -802,7 +792,8 @@ id = "Cell Lockdown 1"; name = "Cell Lockdown 1"; pixel_x = -25; - pixel_y = 9 + pixel_y = 9; + req_one_access_txt = "390;391;392" }, /turf/open/shuttle/predship, /area/yautja) @@ -811,12 +802,13 @@ id = "Cell Lockdown 4"; name = "Cell Lockdown 4"; pixel_x = -7; - pixel_y = 9 + pixel_y = 9; + req_one_access_txt = "390;391;392" }, /turf/closed/wall/huntership, /area/yautja) "bW" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja/secure{ name = "\improper Prisoner Cell 1"; opacity = 0 }, @@ -828,7 +820,7 @@ /turf/open/shuttle/predship, /area/yautja) "bX" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja/secure{ name = "\improper Prisoner Cell 4"; opacity = 0 }, @@ -865,7 +857,8 @@ id = "Cell Lockdown 2"; name = "Cell Lockdown 2"; pixel_x = -25; - pixel_y = 9 + pixel_y = 9; + req_one_access_txt = "390;391;392" }, /turf/open/shuttle/predship, /area/yautja) @@ -889,7 +882,7 @@ }, /area/yautja) "ce" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja/secure{ name = "\improper Prisoner Cell 2"; opacity = 0 }, @@ -901,7 +894,7 @@ /turf/open/shuttle/predship, /area/yautja) "cf" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja/secure{ name = "\improper Prisoner Cell 5"; opacity = 0 }, @@ -917,7 +910,8 @@ id = "Cell Lockdown 3"; name = "Cell Lockdown 3"; pixel_x = -25; - pixel_y = 9 + pixel_y = 9; + req_one_access_txt = "390;391;392" }, /turf/open/shuttle/predship, /area/yautja) @@ -926,7 +920,8 @@ id = "Cell Lockdown 6"; name = "Cell Lockdown 6"; pixel_x = -7; - pixel_y = 9 + pixel_y = 9; + req_one_access_txt = "390;391;392" }, /turf/closed/wall/huntership, /area/yautja) @@ -948,7 +943,7 @@ }, /area/yautja) "cm" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja/secure{ name = "\improper Prisoner Cell 3"; opacity = 0 }, @@ -960,7 +955,7 @@ /turf/open/shuttle/predship, /area/yautja) "cn" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja/secure{ name = "\improper Prisoner Cell 6"; opacity = 0 }, @@ -1002,7 +997,7 @@ /turf/open/shuttle/predship, /area/yautja) "ct" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja{ dir = 1; name = "\improper Fore Rooms" }, @@ -1106,7 +1101,7 @@ }, /area/yautja) "cA" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja{ name = "\improper Elder Teleporter" }, /turf/open/floor/corsat{ @@ -1115,9 +1110,9 @@ }, /area/yautja) "cB" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja/secure{ dir = 1; - name = "\improper Navigation Chamber" + name = "\improper Control Center" }, /turf/open/shuttle/predship, /area/yautja) @@ -1136,7 +1131,7 @@ }, /area/yautja) "cF" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja{ dir = 1; name = "\improper Engine Room" }, @@ -1276,36 +1271,36 @@ color = "#6b675e"; layer = 2.79 }, -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ attack_speed = 12; force = 25; pixel_x = 12 }, -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ attack_speed = 12; force = 25; pixel_x = 8 }, -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ attack_speed = 12; force = 25; pixel_x = 4 }, -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ attack_speed = 12; force = 25; pixel_x = -4 }, -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ attack_speed = 12; force = 25; pixel_x = -12 }, -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ attack_speed = 12; force = 25 }, -/obj/item/weapon/claymore/mercsword{ +/obj/item/weapon/sword{ attack_speed = 12; force = 25; pixel_x = -8 @@ -1499,7 +1494,7 @@ }, /area/yautja) "dc" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja/secure{ dir = 1; name = "\improper Research Containment" }, @@ -1591,7 +1586,8 @@ id = "Cell Lockdown 5"; name = "Cell Lockdown 5"; pixel_x = -7; - pixel_y = 9 + pixel_y = 9; + req_one_access_txt = "390;391;392" }, /turf/closed/wall/huntership, /area/yautja) @@ -1669,6 +1665,24 @@ /obj/structure/machinery/cryopod, /turf/open/shuttle/predship, /area/yautja) +"fo" = ( +/obj/structure/surface/table/reinforced/prison{ + color = "#6b675e" + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 80 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/obj/item/storage/box/bracer, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "squareswood" + }, +/area/yautja) "fq" = ( /obj/structure/window/framed/colony/reinforced/hull{ color = "#aba9a9" @@ -1727,19 +1741,39 @@ }, /area/yautja) "gb" = ( -/obj/item/reagent_container/blood/OMinus, -/obj/item/reagent_container/blood/OMinus, -/obj/item/reagent_container/blood/OMinus, -/obj/item/reagent_container/blood/OMinus, -/obj/item/reagent_container/blood/OMinus, -/obj/item/reagent_container/blood/OMinus, -/obj/item/reagent_container/blood/OMinus, -/obj/item/reagent_container/blood/OMinus, -/obj/item/reagent_container/blood/OMinus, -/obj/item/reagent_container/blood/OMinus, /obj/structure/closet/crate{ color = "#6b675e" }, +/obj/item/stack/medical/advanced/bruise_pack/predator{ + pixel_x = 6 + }, +/obj/item/stack/medical/advanced/bruise_pack/predator{ + pixel_x = 6 + }, +/obj/item/stack/medical/advanced/bruise_pack/predator{ + pixel_x = 6 + }, +/obj/item/stack/medical/advanced/bruise_pack/predator{ + pixel_x = 6 + }, +/obj/item/stack/medical/advanced/bruise_pack/predator{ + pixel_x = 6 + }, +/obj/item/stack/medical/advanced/ointment/predator{ + pixel_x = -6 + }, +/obj/item/stack/medical/advanced/ointment/predator{ + pixel_x = -6 + }, +/obj/item/stack/medical/advanced/ointment/predator{ + pixel_x = -6 + }, +/obj/item/stack/medical/advanced/ointment/predator{ + pixel_x = -6 + }, +/obj/item/stack/medical/advanced/ointment/predator{ + pixel_x = -6 + }, /turf/open/floor/strata{ color = "#5e5d5d"; icon_state = "multi_tiles" @@ -1753,30 +1787,32 @@ }, /area/yautja) "gr" = ( -/obj/structure/surface/table/reinforced/prison{ - color = "#6b675e" - }, -/obj/item/weapon/unathiknife, -/obj/item/weapon/unathiknife{ - attack_speed = 12; - force = 25 +/obj/structure/closet/crate/secure{ + req_one_access_txt = "392"; + color = "#6b675e"; + name = "Secure Yautja crate" }, +/obj/item/explosive/grenade/spawnergrenade/hellhound, +/obj/item/explosive/grenade/spawnergrenade/hellhound, +/obj/item/explosive/grenade/spawnergrenade/hellhound, +/obj/item/explosive/grenade/spawnergrenade/hellhound, /turf/open/floor/strata{ color = "#5e5d5d"; icon_state = "multi_tiles" }, /area/yautja) "gG" = ( -/obj/structure/surface/table/reinforced/prison{ - color = "#6b675e" +/obj/structure/machinery/door_control{ + id = "Yautja Armory"; + name = "Armory Shutters"; + needs_power = 0; + pixel_x = 24; + req_one_access_txt = "392"; + needs_power = 0 }, -/obj/item/tool/surgery/FixOVein/predatorFixOVein, -/obj/item/tool/surgery/bonegel/predatorbonegel, -/obj/item/tool/surgery/bonesetter/predatorbonesetter, -/obj/item/tool/surgery/surgicaldrill/predatorsurgicaldrill, -/turf/open/floor/strata{ - color = "#5e5d5d"; - icon_state = "multi_tiles" +/turf/open/floor/corsat{ + dir = 1; + icon_state = "squareswood" }, /area/yautja) "ha" = ( @@ -1847,24 +1883,24 @@ color = "#6b675e"; layer = 2.79 }, -/obj/item/weapon/claymore{ +/obj/item/weapon/sword{ attack_speed = 12; force = 25; name = "duelling claymore" }, -/obj/item/weapon/claymore{ +/obj/item/weapon/sword{ attack_speed = 12; force = 25; name = "duelling claymore"; pixel_x = -5 }, -/obj/item/weapon/claymore{ +/obj/item/weapon/sword{ attack_speed = 12; force = 25; name = "duelling claymore"; pixel_x = 5 }, -/obj/item/weapon/claymore{ +/obj/item/weapon/sword{ attack_speed = 12; force = 25; name = "duelling claymore"; @@ -1919,7 +1955,7 @@ color = "#6b675e" }, /obj/item/storage/large_holster/katana, -/obj/item/weapon/katana, +/obj/item/weapon/sword/katana, /turf/open/floor/corsat{ dir = 1; icon_state = "squareswood" @@ -1931,13 +1967,6 @@ }, /area/yautja) "nh" = ( -/obj/item/storage/box/bracer{ - pixel_y = 16 - }, -/obj/item/storage/box/bracer{ - pixel_y = 8 - }, -/obj/item/storage/box/bracer, /obj/structure/surface/rack{ color = "#6b675e"; layer = 2.79 @@ -2002,37 +2031,17 @@ }, /area/yautja) "ov" = ( -/obj/item/storage/belt/utility/full{ - color = "#6b675e"; - desc = "A modular belt with various clips. This version lacks any hunting functionality, and is commonly used by engineers to transport important tools."; - name = "\improper Yautja toolbelt" - }, -/obj/item/storage/belt/utility/full{ - color = "#6b675e"; - desc = "A modular belt with various clips. This version lacks any hunting functionality, and is commonly used by engineers to transport important tools."; - name = "\improper Yautja toolbelt" - }, -/obj/item/storage/belt/utility/full{ - color = "#6b675e"; - desc = "A modular belt with various clips. This version lacks any hunting functionality, and is commonly used by engineers to transport important tools."; - name = "\improper Yautja toolbelt" - }, -/obj/item/storage/belt/utility/full{ - color = "#6b675e"; - desc = "A modular belt with various clips. This version lacks any hunting functionality, and is commonly used by engineers to transport important tools."; - name = "\improper Yautja toolbelt" - }, -/obj/item/storage/belt/utility/full{ - color = "#6b675e"; - desc = "A modular belt with various clips. This version lacks any hunting functionality, and is commonly used by engineers to transport important tools."; - name = "\improper Yautja toolbelt" - }, -/obj/item/stack/yautja_rope, -/obj/item/stack/yautja_rope, /obj/structure/surface/rack{ color = "#6b675e"; layer = 2.79 }, +/obj/item/storage/belt/utility/full/pred, +/obj/item/storage/belt/utility/full/pred, +/obj/item/storage/belt/utility/full/pred, +/obj/item/storage/belt/utility/full/pred, +/obj/item/storage/belt/utility/full/pred, +/obj/item/stack/yautja_rope, +/obj/item/stack/yautja_rope, /turf/open/floor/corsat{ dir = 1; icon_state = "squareswood" @@ -2143,7 +2152,7 @@ }, /area/yautja) "sV" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja{ dir = 1; name = "\improper Feed Hall" }, @@ -2200,6 +2209,24 @@ icon_state = "squareswood" }, /area/yautja) +"tR" = ( +/obj/structure/surface/table/reinforced/prison{ + color = "#6b675e" + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 80 + }, +/obj/item/storage/box/bracer, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "squareswood" + }, +/area/yautja) "uf" = ( /obj/structure/barricade/handrail/strata{ dir = 8 @@ -2219,7 +2246,7 @@ /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" }, -/obj/item/weapon/claymore/mercsword/ceremonial, +/obj/item/weapon/sword/ceremonial, /turf/open/floor/corsat{ dir = 1; icon_state = "squareswood" @@ -2395,27 +2422,36 @@ /obj/structure/machinery/cryopod/right, /turf/open/shuttle/predship, /area/yautja) -"Br" = ( -/turf/open/gm/dirtgrassborder{ - icon_state = "desert2" +"Bg" = ( +/obj/structure/closet/crate/secure{ + req_one_access_txt = "392"; + color = "#6b675e"; + name = "Secure Yautja crate" }, -/area/yautja) -"BB" = ( -/obj/structure/machinery/iv_drip, +/obj/item/weapon/yautja/combistick, +/obj/item/weapon/yautja/combistick{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/weapon/twohanded/yautja/glaive/alt, +/obj/item/weapon/yautja/chain, +/obj/item/weapon/yautja/sword, +/obj/item/weapon/yautja/scythe, /turf/open/floor/strata{ color = "#5e5d5d"; icon_state = "multi_tiles" }, /area/yautja) +"Br" = ( +/turf/open/gm/dirtgrassborder{ + icon_state = "desert2" + }, +/area/yautja) "BK" = ( /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" }, -/obj/item/tool/surgery/cautery/predatorcautery, -/obj/item/tool/surgery/circular_saw/predatorbonesaw, -/obj/item/tool/surgery/hemostat/predatorhemostat, -/obj/item/tool/surgery/retractor/predatorretractor, -/obj/item/tool/surgery/scalpel/predatorscalpel, +/obj/item/storage/medicomp/full, /turf/open/floor/strata{ color = "#5e5d5d"; icon_state = "multi_tiles" @@ -2480,7 +2516,7 @@ }, /area/yautja) "Dr" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja/secure{ indestructible = 1; locked = 1; name = "\improper External Airlock" @@ -2508,7 +2544,13 @@ }, /area/yautja) "DJ" = ( -/obj/structure/machinery/computer/crew, +/obj/structure/machinery/computer/crew/alt{ + dir = 1; + name = "human monitoring computer" + }, +/obj/structure/surface/table/reinforced/prison{ + color = "#6b675e" + }, /turf/open/floor/strata{ color = "#5e5d5d"; icon_state = "multi_tiles" @@ -2548,13 +2590,12 @@ /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" }, -/obj/item/bedsheet{ - anchored = 1; +/obj/structure/showcase{ desc = "A console used by the Hunters for navigation purposes."; dir = 8; icon = 'icons/obj/structures/machinery/computer.dmi'; icon_state = "security_cam"; - name = "Hunter Nav Console" + name = "Radar Console" }, /turf/open/floor/strata{ color = "#5e5d5d"; @@ -2575,14 +2616,17 @@ /turf/open/shuttle/predship, /area/yautja) "Gd" = ( -/obj/structure/machinery/door/airlock/strata/autoname, +/obj/structure/machinery/door/airlock/yautja/secure, /turf/open/shuttle/predship, /area/yautja) "Gk" = ( /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" }, -/obj/item/explosive/grenade/spawnergrenade/spesscarp, +/obj/item/explosive/grenade/spawnergrenade/spesscarp{ + anchored = 1; + desc = "A strange device taken from a far-off land. It looks incredibly fragile, best not to touch it." + }, /turf/open/floor/corsat{ dir = 1; icon_state = "squareswood" @@ -2644,18 +2688,16 @@ color = "#6b675e"; layer = 2.79 }, -/obj/item/stack/medical/advanced/ointment/predator, -/obj/item/stack/medical/advanced/ointment/predator, -/obj/item/stack/medical/advanced/ointment/predator, -/obj/item/stack/medical/advanced/ointment/predator, -/obj/item/stack/medical/advanced/ointment/predator, -/obj/item/stack/medical/advanced/ointment/predator, -/obj/item/stack/medical/advanced/bruise_pack/predator, -/obj/item/stack/medical/advanced/bruise_pack/predator, -/obj/item/stack/medical/advanced/bruise_pack/predator, -/obj/item/stack/medical/advanced/bruise_pack/predator, -/obj/item/stack/medical/advanced/bruise_pack/predator, -/obj/item/stack/medical/advanced/bruise_pack/predator, +/obj/item/stack/medical/advanced/ointment/predator{ + desc = "A poultice made of cold, blue petals that is rubbed on burns. Not to be removed from the ship."; + name = "arena soothing herbs"; + pixel_x = 6 + }, +/obj/item/stack/medical/advanced/bruise_pack/predator{ + desc = "A poultice made of soft leaves that is rubbed on bruises. Not to be removed from the ship."; + name = "arena mending herbs"; + pixel_x = -6 + }, /turf/open/shuttle/predship, /area/yautja) "Hp" = ( @@ -2679,6 +2721,25 @@ icon_state = "squareswood" }, /area/yautja) +"HD" = ( +/obj/structure/surface/rack{ + color = "#6b675e"; + density = 0; + layer = 2.79; + pixel_y = 24 + }, +/obj/item/weapon/gun/energy/yautja/plasmarifle{ + pixel_y = -8 + }, +/obj/item/weapon/gun/energy/yautja/plasmarifle, +/obj/item/weapon/gun/energy/yautja/plasmarifle{ + pixel_y = 8 + }, +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" + }, +/area/yautja) "HN" = ( /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" @@ -2694,8 +2755,17 @@ }, /area/yautja) "If" = ( -/obj/structure/machinery/optable, -/obj/effect/decal/cleanable/blood, +/obj/structure/surface/rack{ + color = "#6b675e"; + layer = 2.79 + }, +/obj/item/weapon/gun/energy/yautja/plasmapistol{ + pixel_y = -8 + }, +/obj/item/weapon/gun/energy/yautja/plasmapistol, +/obj/item/weapon/gun/energy/yautja/plasmapistol{ + pixel_y = 8 + }, /turf/open/floor/strata{ color = "#5e5d5d"; icon_state = "multi_tiles" @@ -2741,7 +2811,7 @@ }, /area/yautja) "Iw" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja/secure{ name = "\improper Hellhound Quarters" }, /turf/open/floor/corsat{ @@ -2750,7 +2820,7 @@ }, /area/yautja) "IC" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja/secure/elder{ name = "\improper Elder Quarters" }, /turf/open/shuttle/predship, @@ -2857,13 +2927,7 @@ }, /area/yautja) "LX" = ( -/obj/item/moneybag{ - anchored = 1; - desc = "A console designed by the Hunters to assist in flight pathing and navigation."; - icon = 'icons/obj/structures/machinery/computer.dmi'; - icon_state = "overwatch"; - name = "Hunter Flight Console" - }, +/obj/structure/prop/pred_flight, /turf/open/floor/corsat{ dir = 1; icon_state = "squareswood" @@ -2896,7 +2960,7 @@ }, /area/yautja) "MI" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja{ name = "\improper Blooded Teleporter" }, /turf/open/floor/strata{ @@ -2950,7 +3014,7 @@ }, /area/yautja) "Pr" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja/secure{ name = "\improper Research Containment" }, /turf/open/floor/strata{ @@ -3094,13 +3158,12 @@ /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" }, -/obj/item/bedsheet{ - anchored = 1; +/obj/structure/showcase{ desc = "A console used by the Hunters for navigation purposes."; dir = 4; icon = 'icons/obj/structures/machinery/computer.dmi'; icon_state = "security_cam"; - name = "Hunter Nav Console" + name = "Radar Console" }, /turf/open/floor/strata{ color = "#5e5d5d"; @@ -3130,7 +3193,7 @@ /turf/open/shuttle/predship, /area/yautja) "Wg" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja{ dir = 1; name = "\improper Gladiator Hall" }, @@ -3218,7 +3281,7 @@ }, /area/yautja) "YL" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ +/obj/structure/machinery/door/airlock/yautja{ dir = 1; name = "\improper Cryo Room" }, @@ -3234,8 +3297,11 @@ /turf/open/shuttle/predship, /area/yautja) "Zs" = ( -/obj/structure/machinery/door/airlock/strata/autoname{ - name = "\improper Containment" +/obj/structure/machinery/door/airlock/yautja/secure{ + name = "\improper Heavy Armory" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/yautja{ + dir = 4 }, /turf/open/floor/strata{ color = "#5e5d5d"; @@ -4836,7 +4902,7 @@ bj aa aa aa -aa +dI aa bj bj @@ -5048,7 +5114,7 @@ cP cP cP cP -wQ +fo bj bj aa @@ -5120,7 +5186,7 @@ ZM au cP cP -wQ +fo bj bj bj @@ -5169,7 +5235,7 @@ aa aa ac bj -af +bN ZR aV bn @@ -5192,7 +5258,7 @@ bj wQ cP cP -wQ +fo bj bj bj @@ -5241,7 +5307,7 @@ aa aa ae bj -af +bN aC cP bL @@ -5264,7 +5330,7 @@ rH wQ bL cP -wQ +fo bj bj bj @@ -5330,9 +5396,9 @@ KD bL JH JH -af +bN be -af +bN JH JH JH @@ -6338,9 +6404,9 @@ bL bL JH JH -af +bN MI -af +bN JH JH JH @@ -6393,7 +6459,7 @@ aa aa ae bj -af +bN aC cP bL @@ -6416,7 +6482,7 @@ ti Ut bL cP -Ut +tR bj bj bj @@ -6465,7 +6531,7 @@ aa aa ad bj -af +bN ZR aV bn @@ -6488,7 +6554,7 @@ bj Ut cP cP -Ut +tR bj bj bj @@ -6560,7 +6626,7 @@ ZM zZ cP cP -Ut +tR bj bj bj @@ -6632,7 +6698,7 @@ cP cP cP cP -Ut +tR bj bj aa @@ -6785,9 +6851,9 @@ aa aa bj bj -bR +HD +JH If -bN bj bj bj @@ -6857,9 +6923,9 @@ aa bj bj bj -BB -JH +HD JH +If bj bj bj @@ -7003,7 +7069,7 @@ gb JH JH JH -JH +Bg bj bj bj @@ -7146,7 +7212,7 @@ bD df JH BK -gG +BK bj bj bj @@ -7212,7 +7278,7 @@ bj bL bL bL -bL +gG bL Fy dl diff --git a/maps/predship/regular.dmm b/maps/predship/regular.dmm index 93392c6b7f5e..895e8ae84c91 100644 --- a/maps/predship/regular.dmm +++ b/maps/predship/regular.dmm @@ -451,7 +451,7 @@ /area/yautja) "bN" = ( /obj/structure/surface/table/reinforced, -/obj/item/weapon/katana, +/obj/item/weapon/sword/katana, /obj/structure/window/reinforced{ dir = 4 }, @@ -1053,12 +1053,12 @@ /area/yautja) "cZ" = ( /obj/structure/surface/table/reinforced, -/obj/item/weapon/claymore/mercsword, -/obj/item/weapon/claymore/mercsword, -/obj/item/weapon/claymore/mercsword, -/obj/item/weapon/claymore/mercsword, -/obj/item/weapon/claymore/mercsword, -/obj/item/weapon/claymore/mercsword, +/obj/item/weapon/sword, +/obj/item/weapon/sword, +/obj/item/weapon/sword, +/obj/item/weapon/sword, +/obj/item/weapon/sword, +/obj/item/weapon/sword, /turf/open/floor/holofloor{ dir = 2; icon_state = "cult" diff --git a/maps/prison_station_fop.json b/maps/prison_station_fop.json index b29f7255c21b..69469ea2fd03 100644 --- a/maps/prison_station_fop.json +++ b/maps/prison_station_fop.json @@ -3,14 +3,14 @@ "map_path": "map_files/FOP_v2_Cellblocks", "map_file": "Prison_Station_FOP.dmm", "survivor_types": [ - "/datum/equipment_preset/survivor/scientist/florina", - "/datum/equipment_preset/survivor/doctor/florina", + "/datum/equipment_preset/survivor/scientist/fiorina", + "/datum/equipment_preset/survivor/doctor/fiorina", "/datum/equipment_preset/survivor/interstellar_human_rights_observer", - "/datum/equipment_preset/survivor/security/florina", + "/datum/equipment_preset/survivor/security/fiorina", "/datum/equipment_preset/survivor/prisoner", "/datum/equipment_preset/survivor/prisoner", "/datum/equipment_preset/survivor/gangleader", - "/datum/equipment_preset/survivor/engineer/florina", + "/datum/equipment_preset/survivor/engineer/fiorina", "/datum/equipment_preset/survivor/clf", "/datum/equipment_preset/survivor/civilian" ], @@ -24,7 +24,10 @@ "survivor_message": "You are a survivor of the attack on Fiorina Orbital Penitentiary. You worked or lived on the prison station, and managed to avoid the alien attacks... until now.", "map_item_type": "/obj/item/map/FOP_map", "announce_text": "An automated distress signal has been received from maximum-security prison \"Fiorina Orbital Penitentiary\". A response team from the ###SHIPNAME### will be dispatched shortly to investigate.", - "environment_traits": { "Lockdown": true }, + "environment_traits": { + "Lockdown": true, + "InSpace": true + }, "traits": [{ "Ground": true }], "nightmare_path": "maps/Nightmare/maps/FOP_v2_Cellblocks/", "xvx_hives": { diff --git a/maps/shuttles/dropship_alamo.dmm b/maps/shuttles/dropship_alamo.dmm index 9e7c1b047805..d23036afdea3 100644 --- a/maps/shuttles/dropship_alamo.dmm +++ b/maps/shuttles/dropship_alamo.dmm @@ -15,19 +15,24 @@ }, /area/shuttle/drop1/sulaco) "ax" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "101" +/obj/structure/shuttle/part/dropship1/transparent/nose_center, +/turf/template_noop, +/area/shuttle/drop1/sulaco) +"bc" = ( +/obj/effect/attach_point/electronics/dropship1{ + dir = 1; + attach_id = 5 }, +/obj/structure/shuttle/part/dropship1/transparent/inner_left_weapons, +/turf/template_noop, /area/shuttle/drop1/sulaco) "be" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "74" - }, +/obj/structure/shuttle/part/dropship1/transparent/upper_right_wing, +/turf/template_noop, /area/shuttle/drop1/sulaco) "bj" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "102" - }, +/obj/structure/shuttle/part/dropship1/transparent/nose_top_right, +/turf/template_noop, /area/shuttle/drop1/sulaco) "cr" = ( /obj/structure/machinery/camera/autoname/almayer/dropship_one{ @@ -47,14 +52,8 @@ }, /area/shuttle/drop1/sulaco) "cC" = ( -/turf/closed/shuttle/dropship1{ - icon_state = "99" - }, -/area/shuttle/drop1/sulaco) -"cK" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "17" - }, +/obj/structure/shuttle/part/dropship1/nose_front_right, +/turf/template_noop, /area/shuttle/drop1/sulaco) "cR" = ( /obj/item/device/radio/intercom/alamo{ @@ -82,10 +81,18 @@ icon_state = "floor8" }, /area/shuttle/drop1/sulaco) -"eD" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "41" +"ed" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds1{ + dir = 1; + id = "starboard_door" }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/drop1/sulaco) +"eD" = ( +/obj/structure/shuttle/part/dropship1/transparent/engine_right_cap, +/turf/template_noop, /area/shuttle/drop1/sulaco) "hG" = ( /turf/closed/shuttle/dropship1{ @@ -93,9 +100,8 @@ }, /area/shuttle/drop1/sulaco) "if" = ( -/turf/closed/shuttle/dropship1{ - icon_state = "3" - }, +/obj/structure/shuttle/part/dropship1/left_outer_wing_connector, +/turf/open/space/basic, /area/shuttle/drop1/sulaco) "ig" = ( /turf/closed/shuttle/dropship1{ @@ -133,9 +139,8 @@ }, /area/shuttle/drop1/sulaco) "jz" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "70" - }, +/obj/structure/shuttle/part/dropship1/transparent/middle_right_wing, +/turf/template_noop, /area/shuttle/drop1/sulaco) "mb" = ( /turf/template_noop, @@ -171,18 +176,9 @@ icon_state = "76" }, /area/shuttle/drop1/sulaco) -"os" = ( -/obj/effect/attach_point/fuel/dropship1{ - pixel_x = -32 - }, -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "33" - }, -/area/shuttle/drop1/sulaco) "oW" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "66" - }, +/obj/structure/shuttle/part/dropship1/transparent/middle_left_wing, +/turf/template_noop, /area/shuttle/drop1/sulaco) "po" = ( /turf/closed/shuttle/dropship1{ @@ -196,9 +192,8 @@ /area/shuttle/drop1/sulaco) "qu" = ( /obj/effect/attach_point/weapon/dropship1/left_wing, -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "61" - }, +/obj/structure/shuttle/part/dropship1/transparent/lower_left_wing, +/turf/template_noop, /area/shuttle/drop1/sulaco) "qy" = ( /turf/closed/shuttle/dropship1/transparent{ @@ -222,32 +217,29 @@ }, /area/shuttle/drop1/sulaco) "rl" = ( -/turf/closed/shuttle/dropship1{ - icon_state = "49" - }, +/obj/structure/shuttle/part/dropship1/lower_right_wall, +/turf/open/space/basic, /area/shuttle/drop1/sulaco) "rr" = ( /turf/closed/shuttle/dropship1/transparent{ icon_state = "23" }, /area/shuttle/drop1/sulaco) -"rS" = ( -/obj/structure/machinery/door/airlock/dropship_hatch{ - id = "port_door" - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shuttle/drop1/sulaco) "rV" = ( +/obj/structure/shuttle/part/dropship1/transparent/left_outer_bottom_wing, +/turf/template_noop, +/area/shuttle/drop1/sulaco) +"sm" = ( +/obj/effect/attach_point/fuel/dropship1{ + attach_id = 10 + }, /turf/closed/shuttle/dropship1/transparent{ - icon_state = "2" + icon_state = "28" }, /area/shuttle/drop1/sulaco) "sA" = ( -/turf/closed/shuttle/dropship1{ - icon_state = "46" - }, +/obj/structure/shuttle/part/dropship1/lower_left_wall, +/turf/open/space/basic, /area/shuttle/drop1/sulaco) "tR" = ( /obj/item/device/radio/intercom/alamo{ @@ -259,22 +251,10 @@ icon_state = "rasputin15" }, /area/shuttle/drop1/sulaco) -"wh" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "20" - }, -/area/shuttle/drop1/sulaco) "wk" = ( /obj/effect/attach_point/weapon/dropship1/right_wing, -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "65" - }, -/area/shuttle/drop1/sulaco) -"wr" = ( -/obj/effect/attach_point/crew_weapon/dropship1, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/obj/structure/shuttle/part/dropship1/transparent/lower_right_wing, +/turf/template_noop, /area/shuttle/drop1/sulaco) "ws" = ( /obj/structure/bed/chair/vehicle{ @@ -297,15 +277,9 @@ icon_state = "rasputin15" }, /area/shuttle/drop1/sulaco) -"xu" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "44" - }, -/area/shuttle/drop1/sulaco) "xM" = ( -/turf/closed/shuttle/dropship1{ - icon_state = "15" - }, +/obj/structure/shuttle/part/dropship1/bottom_right_wall, +/turf/open/space/basic, /area/shuttle/drop1/sulaco) "yQ" = ( /turf/closed/shuttle/dropship1/transparent{ @@ -313,14 +287,12 @@ }, /area/shuttle/drop1/sulaco) "yU" = ( -/turf/closed/shuttle/dropship1{ - icon_state = "9" - }, +/obj/structure/shuttle/part/dropship1/bottom_left_wall, +/turf/open/space/basic, /area/shuttle/drop1/sulaco) "zw" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "71" - }, +/obj/structure/shuttle/part/dropship1/transparent/upper_left_wing, +/turf/template_noop, /area/shuttle/drop1/sulaco) "zN" = ( /turf/closed/shuttle/dropship1/transparent{ @@ -374,22 +346,6 @@ icon_state = "rasputin15" }, /area/shuttle/drop1/sulaco) -"Da" = ( -/obj/effect/attach_point/electronics/dropship1{ - dir = 1 - }, -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "85" - }, -/area/shuttle/drop1/sulaco) -"De" = ( -/obj/effect/attach_point/electronics/dropship1{ - dir = 1 - }, -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "90" - }, -/area/shuttle/drop1/sulaco) "Et" = ( /turf/closed/shuttle/dropship1{ icon_state = "72" @@ -401,19 +357,12 @@ }, /area/shuttle/drop1/sulaco) "EN" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "16" - }, +/obj/structure/shuttle/part/dropship1/transparent/engine_left_exhaust, +/turf/open/space/basic, /area/shuttle/drop1/sulaco) "FA" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "40" - }, -/area/shuttle/drop1/sulaco) -"Gl" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "45" - }, +/obj/structure/shuttle/part/dropship1/transparent/engine_left_cap, +/turf/template_noop, /area/shuttle/drop1/sulaco) "Gw" = ( /turf/closed/shuttle/dropship1/transparent{ @@ -436,9 +385,8 @@ /area/shuttle/drop1/sulaco) "HP" = ( /obj/effect/attach_point/weapon/dropship1/right_fore, -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "91" - }, +/obj/structure/shuttle/part/dropship1/transparent/outer_right_weapons, +/turf/template_noop, /area/shuttle/drop1/sulaco) "HS" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/ds1{ @@ -459,21 +407,24 @@ }, /area/shuttle/drop1/sulaco) "Jm" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "21" - }, +/obj/structure/shuttle/part/dropship1/transparent/engine_right_exhaust, +/turf/open/space/basic, /area/shuttle/drop1/sulaco) "JP" = ( /turf/closed/shuttle/dropship1{ icon_state = "62" }, /area/shuttle/drop1/sulaco) -"KC" = ( -/obj/structure/machinery/door/airlock/hatch/cockpit{ - req_access = null; - req_access_txt = "22"; - req_one_access = null +"Kk" = ( +/obj/effect/attach_point/crew_weapon/dropship1/floor{ + attach_id = 7 }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/drop1/sulaco) +"KC" = ( +/obj/structure/machinery/door/airlock/hatch/cockpit, /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/shuttle/dropship{ icon_state = "rasputin15" @@ -490,18 +441,34 @@ }, /area/shuttle/drop1/sulaco) "Me" = ( -/turf/closed/shuttle/dropship1{ - icon_state = "7" - }, +/obj/structure/shuttle/part/dropship1/left_inner_wing_connector, +/turf/open/space/basic, /area/shuttle/drop1/sulaco) "MP" = ( /turf/closed/shuttle/dropship1{ icon_state = "64" }, /area/shuttle/drop1/sulaco) +"Nv" = ( +/obj/effect/attach_point/crew_weapon/dropship1/floor{ + attach_id = 8 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/drop1/sulaco) +"ND" = ( +/obj/effect/attach_point/fuel/dropship1{ + pixel_x = -32; + attach_id = 11 + }, +/turf/closed/shuttle/dropship1/transparent{ + icon_state = "33" + }, +/area/shuttle/drop1/sulaco) "NQ" = ( -/obj/docking_port/mobile/marine_dropship/alamo, -/turf/closed/shuttle/dropship1/transparent, +/obj/structure/shuttle/part/dropship1/transparent/left_inner_bottom_wing, +/turf/template_noop, /area/shuttle/drop1/sulaco) "Oq" = ( /turf/closed/shuttle/dropship1/transparent{ @@ -509,6 +476,7 @@ }, /area/shuttle/drop1/sulaco) "OK" = ( +/obj/docking_port/mobile/marine_dropship/alamo, /turf/closed/shuttle/dropship1{ icon_state = "53" }, @@ -526,15 +494,6 @@ icon_state = "rasputin5" }, /area/shuttle/drop1/sulaco) -"Pf" = ( -/obj/structure/machinery/door/airlock/dropship_hatch{ - dir = 8; - id = "starboard_door" - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shuttle/drop1/sulaco) "Ph" = ( /turf/closed/shuttle/dropship1{ icon_state = "68" @@ -547,20 +506,26 @@ icon_state = "rasputin15" }, /area/shuttle/drop1/sulaco) +"PV" = ( +/obj/effect/attach_point/crew_weapon/dropship1/floor{ + attach_id = 9 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/drop1/sulaco) "Qh" = ( /turf/closed/shuttle/dropship1/transparent{ icon_state = "32" }, /area/shuttle/drop1/sulaco) "QT" = ( -/turf/closed/shuttle/dropship1{ - icon_state = "95" - }, +/obj/structure/shuttle/part/dropship1/nose_front_left, +/turf/template_noop, /area/shuttle/drop1/sulaco) "QW" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "6" - }, +/obj/structure/shuttle/part/dropship1/transparent/right_outer_bottom_wing, +/turf/template_noop, /area/shuttle/drop1/sulaco) "RI" = ( /turf/closed/shuttle/dropship1{ @@ -573,14 +538,12 @@ }, /area/shuttle/drop1/sulaco) "Ta" = ( -/turf/closed/shuttle/dropship1{ - icon_state = "8" - }, +/obj/structure/shuttle/part/dropship1/right_inner_wing_connector, +/turf/open/space/basic, /area/shuttle/drop1/sulaco) "Te" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "5" - }, +/obj/structure/shuttle/part/dropship1/transparent/right_inner_bottom_wing, +/turf/template_noop, /area/shuttle/drop1/sulaco) "Tt" = ( /turf/open/shuttle/dropship{ @@ -621,15 +584,8 @@ /area/shuttle/drop1/sulaco) "TM" = ( /obj/effect/attach_point/weapon/dropship1/left_fore, -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "84" - }, -/area/shuttle/drop1/sulaco) -"Ua" = ( -/obj/effect/attach_point/fuel/dropship1, -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "28" - }, +/obj/structure/shuttle/part/dropship1/transparent/outer_left_weapons, +/turf/template_noop, /area/shuttle/drop1/sulaco) "UG" = ( /obj/structure/prop/ice_colony/hula_girl{ @@ -648,14 +604,12 @@ }, /area/shuttle/drop1/sulaco) "VM" = ( -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "100" - }, +/obj/structure/shuttle/part/dropship1/transparent/nose_top_left, +/turf/template_noop, /area/shuttle/drop1/sulaco) "Wg" = ( -/turf/closed/shuttle/dropship1{ - icon_state = "4" - }, +/obj/structure/shuttle/part/dropship1/right_outer_wing_connector, +/turf/open/space/basic, /area/shuttle/drop1/sulaco) "WQ" = ( /turf/closed/shuttle/dropship1{ @@ -680,6 +634,23 @@ icon_state = "rasputin7" }, /area/shuttle/drop1/sulaco) +"XP" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds1{ + id = "port_door"; + dir = 2 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/drop1/sulaco) +"Ye" = ( +/obj/effect/attach_point/electronics/dropship1{ + dir = 1; + attach_id = 6 + }, +/obj/structure/shuttle/part/dropship1/transparent/inner_right_weapons, +/turf/template_noop, +/area/shuttle/drop1/sulaco) "Za" = ( /turf/closed/shuttle/dropship1{ icon_state = "77" @@ -712,7 +683,7 @@ mb mb FA Oq -Ua +sm iz EN mb @@ -728,8 +699,8 @@ hG Et iI JP -rS -rS +il +XP mW qn sA @@ -737,7 +708,7 @@ eD Il iC rr -cK +Jm mb mb NQ @@ -746,7 +717,7 @@ NQ mb mb mb -Da +bc oo TK ws @@ -825,11 +796,11 @@ BB OK OU il -wr +Kk il -wr +Nv il -wr +PV il mb mb @@ -884,7 +855,7 @@ Wg mb mb mb -De +Ye oo TK cr @@ -912,16 +883,16 @@ zS iv zV MP -Pf -Pf +il +ed nC nE rl -xu +FA Bn Qh TE -wh +EN mb mb QW @@ -940,9 +911,9 @@ mb mb mb mb -Gl +eD Gw -os +ND qy Jm mb diff --git a/maps/shuttles/dropship_normandy.dmm b/maps/shuttles/dropship_normandy.dmm index 6a4191679104..e64fbe62372d 100644 --- a/maps/shuttles/dropship_normandy.dmm +++ b/maps/shuttles/dropship_normandy.dmm @@ -5,9 +5,8 @@ }, /area/shuttle/drop2/sulaco) "af" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "74" - }, +/obj/structure/shuttle/part/dropship2/transparent/upper_right_wing, +/turf/template_noop, /area/shuttle/drop2/sulaco) "aH" = ( /obj/structure/blocker/invisible_wall, @@ -17,8 +16,8 @@ }, /area/shuttle/drop2/sulaco) "bc" = ( -/obj/docking_port/mobile/marine_dropship/normandy, -/turf/closed/shuttle/dropship2/transparent, +/obj/structure/shuttle/part/dropship2/transparent/left_outer_bottom_wing, +/turf/template_noop, /area/shuttle/drop2/sulaco) "bJ" = ( /turf/closed/shuttle/dropship2{ @@ -34,23 +33,8 @@ }, /area/shuttle/drop2/sulaco) "cj" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "6" - }, -/area/shuttle/drop2/sulaco) -"do" = ( -/obj/effect/attach_point/crew_weapon/dropship2, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, -/area/shuttle/drop2/sulaco) -"es" = ( -/obj/effect/attach_point/fuel/dropship2{ - pixel_x = -32 - }, -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "33" - }, +/obj/structure/shuttle/part/dropship2/transparent/right_outer_bottom_wing, +/turf/template_noop, /area/shuttle/drop2/sulaco) "eu" = ( /turf/closed/shuttle/dropship2{ @@ -78,9 +62,8 @@ }, /area/shuttle/drop2/sulaco) "fQ" = ( -/turf/closed/shuttle/dropship2{ - icon_state = "7" - }, +/obj/structure/shuttle/part/dropship2/left_inner_wing_connector, +/turf/open/space/basic, /area/shuttle/drop2/sulaco) "gD" = ( /turf/closed/shuttle/dropship2/transparent{ @@ -96,6 +79,14 @@ icon_state = "54" }, /area/shuttle/drop2/sulaco) +"gH" = ( +/obj/effect/attach_point/electronics/dropship2{ + dir = 1; + attach_id = 6 + }, +/obj/structure/shuttle/part/dropship2/transparent/inner_right_weapons, +/turf/template_noop, +/area/shuttle/drop2/sulaco) "gP" = ( /obj/structure/bed/chair/dropship/pilot{ dir = 1 @@ -104,6 +95,14 @@ icon_state = "rasputin15" }, /area/shuttle/drop2/sulaco) +"hn" = ( +/obj/effect/attach_point/crew_weapon/dropship2/floor{ + attach_id = 8 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/shuttle/drop2/sulaco) "it" = ( /obj/structure/bed/chair/vehicle{ dir = 1; @@ -118,9 +117,8 @@ }, /area/shuttle/drop2/sulaco) "iI" = ( -/turf/closed/shuttle/dropship2{ - icon_state = "8" - }, +/obj/structure/shuttle/part/dropship2/right_inner_wing_connector, +/turf/open/space/basic, /area/shuttle/drop2/sulaco) "jc" = ( /obj/item/device/radio/intercom/normandy{ @@ -137,19 +135,16 @@ }, /area/shuttle/drop2/sulaco) "ko" = ( -/turf/closed/shuttle/dropship2{ - icon_state = "15" - }, +/obj/structure/shuttle/part/dropship2/bottom_right_wall, +/turf/template_noop, /area/shuttle/drop2/sulaco) "kP" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "70" - }, +/obj/structure/shuttle/part/dropship2/transparent/middle_right_wing, +/turf/template_noop, /area/shuttle/drop2/sulaco) "kT" = ( -/turf/closed/shuttle/dropship2{ - icon_state = "9" - }, +/obj/structure/shuttle/part/dropship2/bottom_left_wall, +/turf/template_noop, /area/shuttle/drop2/sulaco) "lh" = ( /turf/closed/shuttle/dropship2/transparent{ @@ -158,9 +153,8 @@ /area/shuttle/drop2/sulaco) "lz" = ( /obj/effect/attach_point/weapon/dropship2/right_fore, -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "91" - }, +/obj/structure/shuttle/part/dropship2/transparent/outer_right_weapons, +/turf/template_noop, /area/shuttle/drop2/sulaco) "lH" = ( /obj/structure/machinery/computer/dropship_weapons/dropship2, @@ -181,6 +175,14 @@ icon_state = "62" }, /area/shuttle/drop2/sulaco) +"mn" = ( +/obj/effect/attach_point/fuel/dropship2{ + attach_id = 10 + }, +/turf/closed/shuttle/dropship2/transparent{ + icon_state = "28" + }, +/area/shuttle/drop2/sulaco) "mz" = ( /obj/structure/machinery/camera/autoname/almayer/dropship_two{ dir = 4; @@ -198,26 +200,31 @@ icon_state = "rasputin15" }, /area/shuttle/drop2/sulaco) +"mA" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{ + id = "port_door"; + dir = 2 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/drop2/sulaco) "nq" = ( /obj/effect/attach_point/weapon/dropship2/left_fore, -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "84" - }, +/obj/structure/shuttle/part/dropship2/transparent/outer_left_weapons, +/turf/template_noop, /area/shuttle/drop2/sulaco) "nS" = ( -/turf/closed/shuttle/dropship2{ - icon_state = "46" - }, +/obj/structure/shuttle/part/dropship2/lower_left_wall, +/turf/open/space/basic, /area/shuttle/drop2/sulaco) "oc" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "102" - }, +/obj/structure/shuttle/part/dropship2/transparent/nose_top_right, +/turf/template_noop, /area/shuttle/drop2/sulaco) "os" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "66" - }, +/obj/structure/shuttle/part/dropship2/transparent/middle_left_wing, +/turf/template_noop, /area/shuttle/drop2/sulaco) "oS" = ( /turf/closed/shuttle/dropship2/transparent{ @@ -248,9 +255,8 @@ }, /area/shuttle/drop2/sulaco) "rw" = ( -/turf/closed/shuttle/dropship2{ - icon_state = "99" - }, +/obj/structure/shuttle/part/dropship2/nose_front_right, +/turf/template_noop, /area/shuttle/drop2/sulaco) "sk" = ( /turf/closed/shuttle/dropship2/transparent{ @@ -258,19 +264,21 @@ }, /area/shuttle/drop2/sulaco) "uk" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "71" - }, +/obj/structure/shuttle/part/dropship2/transparent/upper_left_wing, +/turf/template_noop, /area/shuttle/drop2/sulaco) "vd" = ( /turf/open/shuttle/dropship{ icon_state = "rasputin3" }, /area/shuttle/drop2/sulaco) -"vw" = ( -/obj/effect/attach_point/fuel/dropship2, -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "28" +"vh" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{ + dir = 1; + id = "starboard_door" + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" }, /area/shuttle/drop2/sulaco) "wX" = ( @@ -278,14 +286,6 @@ icon_state = "83" }, /area/shuttle/drop2/sulaco) -"xd" = ( -/obj/effect/attach_point/electronics/dropship2{ - dir = 1 - }, -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "90" - }, -/area/shuttle/drop2/sulaco) "xe" = ( /turf/closed/shuttle/dropship2{ icon_state = "18" @@ -302,9 +302,8 @@ }, /area/shuttle/drop2/sulaco) "yh" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "41" - }, +/obj/structure/shuttle/part/dropship2/transparent/engine_right_cap, +/turf/template_noop, /area/shuttle/drop2/sulaco) "yl" = ( /turf/closed/shuttle/dropship2{ @@ -316,11 +315,6 @@ icon_state = "27" }, /area/shuttle/drop2/sulaco) -"Ac" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "40" - }, -/area/shuttle/drop2/sulaco) "AN" = ( /turf/closed/shuttle/dropship2{ icon_state = "48" @@ -331,6 +325,14 @@ icon_state = "56" }, /area/shuttle/drop2/sulaco) +"Bg" = ( +/obj/effect/attach_point/crew_weapon/dropship2/floor{ + attach_id = 7 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/shuttle/drop2/sulaco) "Bi" = ( /turf/closed/shuttle/dropship2/transparent{ icon_state = "97" @@ -347,14 +349,8 @@ }, /area/shuttle/drop2/sulaco) "BG" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "20" - }, -/area/shuttle/drop2/sulaco) -"BM" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "44" - }, +/obj/structure/shuttle/part/dropship2/transparent/engine_left_cap, +/turf/template_noop, /area/shuttle/drop2/sulaco) "Cl" = ( /turf/closed/shuttle/dropship2{ @@ -373,18 +369,8 @@ /area/shuttle/drop2/sulaco) "DW" = ( /obj/effect/attach_point/weapon/dropship2/right_wing, -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "65" - }, -/area/shuttle/drop2/sulaco) -"En" = ( -/obj/structure/machinery/door/airlock/dropship_hatch/two{ - dir = 8; - id = "starboard_door" - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/obj/structure/shuttle/part/dropship2/transparent/lower_right_wing, +/turf/template_noop, /area/shuttle/drop2/sulaco) "Eo" = ( /turf/closed/shuttle/dropship2{ @@ -431,6 +417,7 @@ }, /area/shuttle/drop2/sulaco) "Iv" = ( +/obj/docking_port/mobile/marine_dropship/normandy, /turf/closed/shuttle/dropship2{ icon_state = "53" }, @@ -444,9 +431,8 @@ /obj/effect/attach_point/electronics/dropship2{ dir = 1 }, -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "85" - }, +/obj/structure/shuttle/part/dropship2/transparent/inner_left_weapons, +/turf/template_noop, /area/shuttle/drop2/sulaco) "Le" = ( /turf/closed/shuttle/dropship2/transparent{ @@ -484,13 +470,19 @@ }, /area/shuttle/drop2/sulaco) "LY" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "101" - }, +/obj/structure/shuttle/part/dropship2/transparent/nose_center, +/turf/template_noop, /area/shuttle/drop2/sulaco) "Mx" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "100" +/obj/structure/shuttle/part/dropship2/transparent/nose_top_left, +/turf/template_noop, +/area/shuttle/drop2/sulaco) +"MA" = ( +/obj/effect/attach_point/crew_weapon/dropship2/floor{ + attach_id = 9 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" }, /area/shuttle/drop2/sulaco) "ME" = ( @@ -512,9 +504,8 @@ /area/shuttle/drop2/sulaco) "Nt" = ( /obj/effect/attach_point/weapon/dropship2/left_wing, -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "61" - }, +/obj/structure/shuttle/part/dropship2/transparent/lower_left_wing, +/turf/template_noop, /area/shuttle/drop2/sulaco) "Nw" = ( /turf/closed/shuttle/dropship2{ @@ -522,15 +513,22 @@ }, /area/shuttle/drop2/sulaco) "NM" = ( -/turf/closed/shuttle/dropship2{ - icon_state = "3" - }, +/obj/structure/shuttle/part/dropship2/left_outer_wing_connector, +/turf/open/space/basic, /area/shuttle/drop2/sulaco) -"Ov" = ( +"Od" = ( +/obj/effect/attach_point/fuel/dropship2{ + pixel_x = -32; + attach_id = 11 + }, /turf/closed/shuttle/dropship2/transparent{ - icon_state = "5" + icon_state = "33" }, /area/shuttle/drop2/sulaco) +"Ov" = ( +/obj/structure/shuttle/part/dropship2/transparent/right_inner_bottom_wing, +/turf/template_noop, +/area/shuttle/drop2/sulaco) "OI" = ( /turf/closed/shuttle/dropship2{ icon_state = "72" @@ -588,9 +586,8 @@ }, /area/shuttle/drop2/sulaco) "QK" = ( -/turf/closed/shuttle/dropship2{ - icon_state = "49" - }, +/obj/structure/shuttle/part/dropship2/lower_right_wall, +/turf/open/space/basic, /area/shuttle/drop2/sulaco) "Rr" = ( /turf/template_noop, @@ -609,22 +606,12 @@ }, /area/shuttle/drop2/sulaco) "RJ" = ( -/turf/closed/shuttle/dropship2{ - icon_state = "4" - }, +/obj/structure/shuttle/part/dropship2/right_outer_wing_connector, +/turf/open/space/basic, /area/shuttle/drop2/sulaco) "SB" = ( -/turf/closed/shuttle/dropship2{ - icon_state = "95" - }, -/area/shuttle/drop2/sulaco) -"SC" = ( -/obj/structure/machinery/door/airlock/dropship_hatch/two{ - id = "port_door" - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/obj/structure/shuttle/part/dropship2/nose_front_left, +/turf/template_noop, /area/shuttle/drop2/sulaco) "SO" = ( /turf/closed/shuttle/dropship2{ @@ -658,9 +645,8 @@ }, /area/shuttle/drop2/sulaco) "Uu" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "17" - }, +/obj/structure/shuttle/part/dropship2/transparent/engine_right_exhaust, +/turf/template_noop, /area/shuttle/drop2/sulaco) "UP" = ( /turf/closed/shuttle/dropship2/transparent{ @@ -673,9 +659,8 @@ }, /area/shuttle/drop2/sulaco) "Vh" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "2" - }, +/obj/structure/shuttle/part/dropship2/transparent/left_outer_inner_wing, +/turf/template_noop, /area/shuttle/drop2/sulaco) "Vs" = ( /turf/closed/shuttle/dropship2/transparent{ @@ -687,17 +672,8 @@ icon_state = "25" }, /area/shuttle/drop2/sulaco) -"VC" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "45" - }, -/area/shuttle/drop2/sulaco) "VW" = ( -/obj/structure/machinery/door/airlock/hatch/cockpit/two{ - req_access = null; - req_access_txt = "22"; - req_one_access = null - }, +/obj/structure/machinery/door/airlock/hatch/cockpit/two, /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/shuttle/dropship{ icon_state = "rasputin15" @@ -714,14 +690,8 @@ }, /area/shuttle/drop2/sulaco) "Xr" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "16" - }, -/area/shuttle/drop2/sulaco) -"XX" = ( -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "21" - }, +/obj/structure/shuttle/part/dropship2/transparent/engine_left_exhaust, +/turf/template_noop, /area/shuttle/drop2/sulaco) "ZK" = ( /turf/closed/shuttle/dropship2{ @@ -743,9 +713,9 @@ Rr Rr Rr Rr -Ac +BG SQ -vw +mn sk Xr Rr @@ -761,8 +731,8 @@ eu OI GE lJ -SC -SC +PJ +mA jc pU nS @@ -858,11 +828,11 @@ Bb Iv rc vd -do +Bg vd -do +hn vd -do +MA PJ Rr Rr @@ -917,7 +887,7 @@ RJ Rr Rr Rr -xd +gH yl SY it @@ -945,16 +915,16 @@ wX fI fx Tp -En -En +PJ +vh gG RG QK -BM +BG gD oW lh -BG +Xr Rr Rr cj @@ -973,11 +943,11 @@ Rr Rr Rr Rr -VC +yh UP -es +Od zt -XX +Uu Rr Rr Rr diff --git a/maps/shuttles/ert_twe_shuttle.dmm b/maps/shuttles/ert_twe_shuttle.dmm new file mode 100644 index 000000000000..7e518ae9af66 --- /dev/null +++ b/maps/shuttles/ert_twe_shuttle.dmm @@ -0,0 +1,334 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/ert) +"b" = ( +/turf/closed/shuttle/ert{ + icon_state = "twe25" + }, +/area/shuttle/ert) +"e" = ( +/obj/effect/landmark/ert_spawns/distress_twe, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/shuttle/ert) +"f" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/shuttle/ert) +"g" = ( +/obj/structure/surface/rack, +/obj/item/storage/toolbox/syndicate, +/obj/item/storage/toolbox/syndicate, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/ert) +"h" = ( +/turf/open/shuttle/dropship{ + icon_state = "floor8" + }, +/area/shuttle/ert) +"i" = ( +/turf/closed/shuttle/ert{ + icon_state = "twe3" + }, +/area/shuttle/ert) +"j" = ( +/turf/closed/shuttle/ert{ + icon_state = "twe23" + }, +/area/shuttle/ert) +"k" = ( +/turf/closed/shuttle/ert{ + icon_state = "rightengine_3"; + opacity = 0 + }, +/area/shuttle/ert) +"l" = ( +/turf/closed/shuttle/ert{ + icon_state = "leftengine_2"; + opacity = 0 + }, +/area/shuttle/ert) +"o" = ( +/turf/closed/shuttle/ert{ + icon_state = "twe1" + }, +/area/shuttle/ert) +"p" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin8" + }, +/area/shuttle/ert) +"q" = ( +/obj/docking_port/mobile/emergency_response/ert4, +/turf/closed/shuttle/ert{ + icon_state = "leftengine_1"; + opacity = 0 + }, +/area/shuttle/ert) +"r" = ( +/obj/structure/blocker/invisible_wall, +/obj/structure/machinery/computer/shuttle/ert, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/ert) +"s" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin7" + }, +/area/shuttle/ert) +"t" = ( +/obj/structure/surface/rack, +/obj/item/storage/firstaid/regular, +/obj/item/storage/belt/medical/lifesaver/full, +/obj/item/device/healthanalyzer, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/ert) +"v" = ( +/turf/closed/shuttle/ert{ + icon_state = "rightengine_2"; + opacity = 0 + }, +/area/shuttle/ert) +"x" = ( +/turf/closed/shuttle/ert{ + icon_state = "twe4" + }, +/area/shuttle/ert) +"y" = ( +/turf/closed/shuttle/ert{ + icon_state = "twe_leftengine" + }, +/area/shuttle/ert) +"z" = ( +/turf/closed/shuttle/ert{ + icon_state = "twe27" + }, +/area/shuttle/ert) +"A" = ( +/turf/closed/shuttle/ert{ + icon_state = "twe21" + }, +/area/shuttle/ert) +"D" = ( +/obj/structure/machinery/door/airlock/almayer/generic, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/shuttle/ert) +"E" = ( +/turf/closed/shuttle/ert{ + icon_state = "twe22" + }, +/area/shuttle/ert) +"F" = ( +/turf/closed/shuttle/ert{ + icon_state = "twe8" + }, +/area/shuttle/ert) +"G" = ( +/turf/closed/shuttle/ert{ + icon_state = "twe2" + }, +/area/shuttle/ert) +"H" = ( +/obj/structure/bed/chair/dropship/passenger{ + dir = 8 + }, +/obj/effect/landmark/ert_spawns/distress_twe, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/ert) +"J" = ( +/turf/closed/shuttle/ert{ + icon_state = "twe_rightengine" + }, +/area/shuttle/ert) +"K" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin4" + }, +/area/shuttle/ert) +"L" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin6" + }, +/area/shuttle/ert) +"M" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 2 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/ert) +"N" = ( +/turf/closed/shuttle/ert{ + icon_state = "twe5" + }, +/area/shuttle/ert) +"O" = ( +/turf/template_noop, +/area/template_noop) +"P" = ( +/obj/structure/bed/chair/dropship/passenger, +/obj/effect/landmark/ert_spawns/distress_twe, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/ert) +"T" = ( +/turf/closed/shuttle/ert{ + icon_state = "leftengine_3"; + opacity = 0 + }, +/area/shuttle/ert) +"U" = ( +/turf/closed/shuttle/ert{ + icon_state = "twe9" + }, +/area/shuttle/ert) +"V" = ( +/turf/closed/shuttle/ert{ + icon_state = "rightengine_1"; + opacity = 0 + }, +/area/shuttle/ert) +"W" = ( +/obj/structure/bed/chair/dropship/passenger{ + dir = 4 + }, +/obj/effect/landmark/ert_spawns/distress_twe, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/ert) +"X" = ( +/turf/closed/shuttle/ert{ + icon_state = "twe20" + }, +/area/shuttle/ert) +"Y" = ( +/obj/structure/surface/rack, +/obj/item/storage/backpack/rmc/frame, +/obj/item/ammo_box/magazine/misc/mre, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/ert) + +(1,1,1) = {" +O +X +x +D +x +x +x +D +x +y +T +l +q +"} +(2,1,1) = {" +O +A +Y +a +W +W +W +a +t +F +x +x +o +"} +(3,1,1) = {" +X +E +L +e +e +e +e +e +K +a +a +a +M +"} +(4,1,1) = {" +z +r +h +P +P +P +P +P +h +f +f +f +G +"} +(5,1,1) = {" +b +j +s +e +e +e +e +e +p +a +a +a +M +"} +(6,1,1) = {" +O +A +g +a +H +H +H +a +t +U +N +N +i +"} +(7,1,1) = {" +O +b +N +D +N +N +N +D +N +J +k +v +V +"} diff --git a/maps/shuttles/escape_shuttle_e.dmm b/maps/shuttles/escape_shuttle_e.dmm index d8e14b742701..0ba589df217e 100644 --- a/maps/shuttles/escape_shuttle_e.dmm +++ b/maps/shuttles/escape_shuttle_e.dmm @@ -10,7 +10,7 @@ }, /area/shuttle/escape_pod) "e" = ( -/obj/docking_port/mobile/escape_shuttle/e, +/obj/docking_port/mobile/crashable/escape_shuttle/e, /turf/closed/shuttle/escapepod{ icon_state = "wall9" }, diff --git a/maps/shuttles/escape_shuttle_e_cl.dmm b/maps/shuttles/escape_shuttle_e_cl.dmm index fb35b994891d..490f0abdfa95 100644 --- a/maps/shuttles/escape_shuttle_e_cl.dmm +++ b/maps/shuttles/escape_shuttle_e_cl.dmm @@ -1,6 +1,6 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( -/obj/docking_port/mobile/escape_shuttle/cl, +/obj/docking_port/mobile/crashable/escape_shuttle/cl, /turf/closed/shuttle/escapepod{ icon_state = "wall9" }, @@ -42,7 +42,7 @@ /turf/open/shuttle/escapepod, /area/shuttle/escape_pod) "v" = ( -/obj/structure/machinery/computer/shuttle/escape_pod_panel{ +/obj/structure/machinery/computer/shuttle/escape_pod_panel/liaison{ pixel_y = 30 }, /turf/open/shuttle/escapepod{ @@ -50,8 +50,9 @@ }, /area/shuttle/escape_pod) "y" = ( -/obj/structure/machinery/door/airlock/evacuation{ - name = "\improper Evacuation Airlock CL-1" +/obj/structure/machinery/door/airlock/evacuation/liaison{ + name = "\improper Evacuation Airlock CL-1"; + id_tag = "cl_evac" }, /turf/open/floor/almayer{ icon_state = "test_floor4" diff --git a/maps/shuttles/escape_shuttle_n.dmm b/maps/shuttles/escape_shuttle_n.dmm index ff00ef6d3117..71f8515daba8 100644 --- a/maps/shuttles/escape_shuttle_n.dmm +++ b/maps/shuttles/escape_shuttle_n.dmm @@ -1,11 +1,11 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/closed/shuttle/escapepod{ - icon_state = "wall6"; + icon_state = "wall6" }, /area/shuttle/escape_pod) "c" = ( -/obj/docking_port/mobile/escape_shuttle/n, +/obj/docking_port/mobile/crashable/escape_shuttle/n, /turf/closed/shuttle/escapepod{ icon_state = "wall9" }, diff --git a/maps/shuttles/escape_shuttle_s.dmm b/maps/shuttles/escape_shuttle_s.dmm index f3e4c74b480e..82391a5218d5 100644 --- a/maps/shuttles/escape_shuttle_s.dmm +++ b/maps/shuttles/escape_shuttle_s.dmm @@ -76,7 +76,7 @@ }, /area/shuttle/escape_pod) "U" = ( -/obj/docking_port/mobile/escape_shuttle/s, +/obj/docking_port/mobile/crashable/escape_shuttle/s, /turf/closed/shuttle/escapepod{ icon_state = "wall9" }, diff --git a/maps/shuttles/escape_shuttle_w.dmm b/maps/shuttles/escape_shuttle_w.dmm index d10d5fdfc1c8..8f81c83b500b 100644 --- a/maps/shuttles/escape_shuttle_w.dmm +++ b/maps/shuttles/escape_shuttle_w.dmm @@ -1,6 +1,6 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( -/obj/docking_port/mobile/escape_shuttle/w, +/obj/docking_port/mobile/crashable/escape_shuttle/w, /turf/closed/shuttle/escapepod{ icon_state = "wall9" }, diff --git a/maps/shuttles/lifeboat-port-archive.dmm b/maps/shuttles/lifeboat-port-archive.dmm new file mode 100644 index 000000000000..7279e78237b6 --- /dev/null +++ b/maps/shuttles/lifeboat-port-archive.dmm @@ -0,0 +1,701 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aF" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "1,6" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"cs" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,4" + }, +/area/shuttle/lifeboat) +"cT" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,4" + }, +/area/shuttle/lifeboat) +"dg" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "3,0" + }, +/area/shuttle/lifeboat) +"dt" = ( +/turf/open/shuttle/lifeboat{ + dir = 1; + icon_state = "plating_striped" + }, +/area/shuttle/lifeboat) +"en" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,5" + }, +/area/shuttle/lifeboat) +"ew" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "1,0" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"eL" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,1" + }, +/area/shuttle/lifeboat) +"fa" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "3,6" + }, +/area/shuttle/lifeboat) +"fr" = ( +/turf/closed/shuttle/lifeboat/transparent, +/area/shuttle/lifeboat) +"hY" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "26,1" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"iR" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "6,1" + }, +/area/shuttle/lifeboat) +"je" = ( +/obj/structure/bed/chair/dropship/passenger/shuttle_chair{ + dir = 4; + name = "pilot seat" + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"jU" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,6" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"jW" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "window2" + }, +/area/shuttle/lifeboat) +"jX" = ( +/obj/structure/extinguisher_cabinet/lifeboat{ + pixel_x = 8; + pixel_y = 27 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"lC" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "23,5" + }, +/area/shuttle/lifeboat) +"mr" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,3" + }, +/area/shuttle/lifeboat) +"mB" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "7,6" + }, +/area/shuttle/lifeboat) +"nf" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,1" + }, +/area/shuttle/lifeboat) +"nn" = ( +/turf/open/shuttle/lifeboat{ + icon_state = "plate" + }, +/area/shuttle/lifeboat) +"on" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "24,3" + }, +/area/shuttle/lifeboat) +"qA" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "22,0" + }, +/area/shuttle/lifeboat) +"rb" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "25,3" + }, +/area/shuttle/lifeboat) +"rp" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "24,1" + }, +/area/shuttle/lifeboat) +"rv" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,3" + }, +/area/shuttle/lifeboat) +"rH" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "25,4" + }, +/area/shuttle/lifeboat) +"sX" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "23,0" + }, +/area/shuttle/lifeboat) +"tm" = ( +/obj/structure/bed/chair/dropship/passenger/shuttle_chair{ + dir = 1 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"tI" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "7,0" + }, +/area/shuttle/lifeboat) +"vd" = ( +/obj/structure/extinguisher_cabinet/lifeboat{ + pixel_x = 15; + pixel_y = 27 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"vx" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,3" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"vz" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "17,1" + }, +/area/shuttle/lifeboat) +"vZ" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "6,0" + }, +/area/shuttle/lifeboat) +"wX" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,2" + }, +/area/shuttle/lifeboat) +"xG" = ( +/obj/docking_port/mobile/crashable/lifeboat/port, +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,0" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"yf" = ( +/obj/structure/machinery/cm_vending/sorted/supplies/lifeboat{ + pixel_x = -12; + pixel_y = 27 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"yE" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "25,1" + }, +/area/shuttle/lifeboat) +"yS" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "26,3" + }, +/area/shuttle/lifeboat) +"zd" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,2" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"zq" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "26,5" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"BC" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "25,6" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"Ct" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/shuttle/lifeboat{ + dir = 8 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"Cz" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ + id = "Boat1-D1"; + throw_dir = 1 + }, +/turf/open/shuttle/lifeboat{ + icon_state = "test_floor4" + }, +/area/shuttle/lifeboat) +"CI" = ( +/turf/template_noop, +/area/template_noop) +"Db" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,5" + }, +/area/shuttle/lifeboat) +"DR" = ( +/obj/structure/bed/chair/dropship/passenger/shuttle_chair{ + dir = 4 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"FR" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/communications{ + dir = 8 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"FZ" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med/lifeboat{ + pixel_x = -5; + pixel_y = 27 + }, +/obj/structure/machinery/cm_vending/sorted/supplies/lifeboat{ + pixel_x = 10; + pixel_y = 27 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"Gf" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "25,0" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"Hv" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "24,5" + }, +/area/shuttle/lifeboat) +"HI" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "17,5" + }, +/area/shuttle/lifeboat) +"Id" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "6,5" + }, +/area/shuttle/lifeboat) +"Ih" = ( +/turf/closed/shuttle/lifeboat, +/area/shuttle/lifeboat) +"Jg" = ( +/turf/open/shuttle/escapepod{ + icon_state = "floor8" + }, +/area/shuttle/lifeboat) +"Jw" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "24,0" + }, +/area/shuttle/lifeboat) +"Mk" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "17,0" + }, +/area/shuttle/lifeboat) +"MF" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,5" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"MN" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ + id = "Boat1-D2"; + throw_dir = 1 + }, +/turf/open/shuttle/lifeboat{ + icon_state = "test_floor4" + }, +/area/shuttle/lifeboat) +"Nm" = ( +/turf/open/shuttle/lifeboat{ + icon_state = "test_floor4" + }, +/area/shuttle/lifeboat) +"Ob" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "17,6" + }, +/area/shuttle/lifeboat) +"Od" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "24,4" + }, +/area/shuttle/lifeboat) +"Oe" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "12,0" + }, +/area/shuttle/lifeboat) +"Ow" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "16,0" + }, +/area/shuttle/lifeboat) +"OX" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "3,1" + }, +/area/shuttle/lifeboat) +"PU" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "3,5" + }, +/area/shuttle/lifeboat) +"Qi" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "23,6" + }, +/area/shuttle/lifeboat) +"QH" = ( +/obj/structure/bed/chair/dropship/passenger/shuttle_chair, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"Ro" = ( +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"Rs" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "6,6" + }, +/area/shuttle/lifeboat) +"RR" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "26,2" + }, +/area/shuttle/lifeboat) +"Sn" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "25,5" + }, +/area/shuttle/lifeboat) +"So" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,4" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"Sy" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "11,0" + }, +/area/shuttle/lifeboat) +"SV" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,1" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"TO" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,2" + }, +/area/shuttle/lifeboat) +"TT" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "23,1" + }, +/area/shuttle/lifeboat) +"Ub" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "24,6" + }, +/area/shuttle/lifeboat) +"Uf" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/cameras/almayer/vehicle{ + dir = 8 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"UG" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "24,2" + }, +/area/shuttle/lifeboat) +"UU" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "25,2" + }, +/area/shuttle/lifeboat) +"Ym" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "18,0" + }, +/area/shuttle/lifeboat) +"Yn" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,6" + }, +/area/shuttle/lifeboat) +"Ze" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "26,4" + }, +/area/shuttle/lifeboat) + +(1,1,1) = {" +jU +MF +So +vx +zd +SV +xG +"} +(2,1,1) = {" +aF +Db +cT +mr +TO +eL +ew +"} +(3,1,1) = {" +Yn +en +cs +rv +wX +nf +Ih +"} +(4,1,1) = {" +fa +PU +DR +DR +DR +OX +dg +"} +(5,1,1) = {" +jW +QH +Ro +Jg +Ro +tm +fr +"} +(6,1,1) = {" +jW +QH +Ro +Jg +Ro +tm +fr +"} +(7,1,1) = {" +Rs +Id +jX +nn +Ro +iR +vZ +"} +(8,1,1) = {" +mB +PU +yf +nn +Ro +OX +tI +"} +(9,1,1) = {" +Cz +dt +Ro +Jg +Ro +tm +fr +"} +(10,1,1) = {" +Nm +dt +Ro +Jg +Ro +tm +fr +"} +(11,1,1) = {" +Nm +dt +Ro +Jg +Ro +tm +fr +"} +(12,1,1) = {" +Rs +Id +Ro +nn +Ro +iR +Sy +"} +(13,1,1) = {" +mB +PU +Ro +nn +Ro +OX +Oe +"} +(14,1,1) = {" +MN +dt +Ro +Jg +Ro +tm +fr +"} +(15,1,1) = {" +Nm +dt +Ro +Jg +Ro +tm +fr +"} +(16,1,1) = {" +Nm +dt +Ro +Jg +Ro +tm +fr +"} +(17,1,1) = {" +Rs +Id +vd +nn +Ro +iR +Ow +"} +(18,1,1) = {" +Ob +HI +FZ +nn +Ro +vz +Mk +"} +(19,1,1) = {" +mB +PU +Ro +nn +Ro +OX +Ym +"} +(20,1,1) = {" +jW +QH +Ro +Jg +Ro +tm +fr +"} +(21,1,1) = {" +jW +QH +Ro +Jg +Ro +tm +fr +"} +(22,1,1) = {" +jW +QH +Ro +Jg +Ro +tm +fr +"} +(23,1,1) = {" +Rs +Id +je +je +je +iR +qA +"} +(24,1,1) = {" +Qi +lC +Uf +Ct +FR +TT +sX +"} +(25,1,1) = {" +Ub +Hv +Od +on +UG +rp +Jw +"} +(26,1,1) = {" +BC +Sn +rH +rb +UU +yE +Gf +"} +(27,1,1) = {" +CI +zq +Ze +yS +RR +hY +CI +"} diff --git a/maps/shuttles/lifeboat-port.dmm b/maps/shuttles/lifeboat-port.dmm index cba75c63cc02..0117730f6971 100644 --- a/maps/shuttles/lifeboat-port.dmm +++ b/maps/shuttles/lifeboat-port.dmm @@ -116,6 +116,11 @@ icon_state = "24,3" }, /area/shuttle/lifeboat) +"pH" = ( +/turf/open/shuttle/lifeboat{ + icon_state = "plating_striped" + }, +/area/shuttle/lifeboat) "qA" = ( /turf/closed/shuttle/lifeboat{ icon_state = "22,0" @@ -186,12 +191,19 @@ }, /area/shuttle/lifeboat) "xG" = ( -/obj/docking_port/mobile/lifeboat/port, +/obj/docking_port/mobile/crashable/lifeboat/port, /obj/structure/prop/invuln/dropship_parts/lifeboat{ icon_state = "0,0" }, /turf/template_noop, /area/shuttle/lifeboat) +"xS" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ + id = "Boat1-D4"; + throw_dir = 2 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) "yf" = ( /obj/structure/machinery/cm_vending/sorted/supplies/lifeboat{ pixel_x = -12; @@ -257,6 +269,13 @@ }, /turf/open/shuttle/lifeboat, /area/shuttle/lifeboat) +"EW" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ + id = "Boat1-D3"; + throw_dir = 2 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) "FR" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/computer/communications{ @@ -534,8 +553,8 @@ dt Ro Jg Ro -tm -fr +pH +EW "} (10,1,1) = {" Nm @@ -543,8 +562,8 @@ dt Ro Jg Ro -tm -fr +pH +Ro "} (11,1,1) = {" Nm @@ -552,8 +571,8 @@ dt Ro Jg Ro -tm -fr +pH +Ro "} (12,1,1) = {" Rs @@ -579,8 +598,8 @@ dt Ro Jg Ro -tm -fr +pH +xS "} (15,1,1) = {" Nm @@ -588,8 +607,8 @@ dt Ro Jg Ro -tm -fr +pH +Ro "} (16,1,1) = {" Nm @@ -597,8 +616,8 @@ dt Ro Jg Ro -tm -fr +pH +Ro "} (17,1,1) = {" Rs diff --git a/maps/shuttles/lifeboat-starboard-archive.dmm b/maps/shuttles/lifeboat-starboard-archive.dmm new file mode 100644 index 000000000000..5094315b7b6f --- /dev/null +++ b/maps/shuttles/lifeboat-starboard-archive.dmm @@ -0,0 +1,691 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ce" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "17,5" + }, +/area/shuttle/lifeboat) +"ci" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "17,6" + }, +/area/shuttle/lifeboat) +"ej" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,4" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"em" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "6,6" + }, +/area/shuttle/lifeboat) +"ep" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,2" + }, +/area/shuttle/lifeboat) +"ex" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,2" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"gp" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "25,4" + }, +/area/shuttle/lifeboat) +"gS" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "26,5" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"hb" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/shuttle/lifeboat{ + dir = 8 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"ho" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "7,0" + }, +/area/shuttle/lifeboat) +"hD" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med/lifeboat{ + pixel_x = -5; + pixel_y = 27 + }, +/obj/structure/machinery/cm_vending/sorted/supplies/lifeboat{ + pixel_x = 10; + pixel_y = 27 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"hQ" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,3" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"ix" = ( +/obj/structure/extinguisher_cabinet/lifeboat{ + pixel_x = 8; + pixel_y = 27 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"iP" = ( +/turf/closed/shuttle/lifeboat/transparent, +/area/shuttle/lifeboat) +"jA" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "17,0" + }, +/area/shuttle/lifeboat) +"kC" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "6,5" + }, +/area/shuttle/lifeboat) +"kE" = ( +/obj/structure/bed/chair/dropship/passenger/shuttle_chair, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"lK" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "22,0" + }, +/area/shuttle/lifeboat) +"lS" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ + id = "Boat2-D2"; + throw_dir = 2 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"mt" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "24,2" + }, +/area/shuttle/lifeboat) +"mA" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,3" + }, +/area/shuttle/lifeboat) +"pr" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "26,4" + }, +/area/shuttle/lifeboat) +"qV" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,6" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"rM" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "24,6" + }, +/area/shuttle/lifeboat) +"su" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,5" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"sO" = ( +/turf/closed/shuttle/lifeboat, +/area/shuttle/lifeboat) +"tB" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "23,1" + }, +/area/shuttle/lifeboat) +"uJ" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "25,6" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"uN" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "26,1" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"vG" = ( +/obj/docking_port/mobile/crashable/lifeboat/starboard, +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,0" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"wA" = ( +/turf/template_noop, +/area/template_noop) +"xI" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "25,3" + }, +/area/shuttle/lifeboat) +"zv" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,6" + }, +/area/shuttle/lifeboat) +"zz" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,5" + }, +/area/shuttle/lifeboat) +"zK" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "6,1" + }, +/area/shuttle/lifeboat) +"Ax" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,2" + }, +/area/shuttle/lifeboat) +"AF" = ( +/turf/open/shuttle/lifeboat{ + icon_state = "plating_striped" + }, +/area/shuttle/lifeboat) +"Bf" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "window2" + }, +/area/shuttle/lifeboat) +"BC" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "23,0" + }, +/area/shuttle/lifeboat) +"BP" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "18,0" + }, +/area/shuttle/lifeboat) +"Cq" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,5" + }, +/area/shuttle/lifeboat) +"CS" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "25,2" + }, +/area/shuttle/lifeboat) +"Dj" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,1" + }, +/area/shuttle/lifeboat) +"Dn" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "3,0" + }, +/area/shuttle/lifeboat) +"Ep" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ + id = "Boat2-D1"; + throw_dir = 2 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"EI" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/communications{ + dir = 8 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"EP" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "16,0" + }, +/area/shuttle/lifeboat) +"FI" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "24,3" + }, +/area/shuttle/lifeboat) +"FS" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "25,0" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"GA" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "7,6" + }, +/area/shuttle/lifeboat) +"GD" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "3,1" + }, +/area/shuttle/lifeboat) +"GQ" = ( +/obj/structure/machinery/cm_vending/sorted/supplies/lifeboat{ + pixel_x = -12; + pixel_y = 27 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"HW" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,1" + }, +/area/shuttle/lifeboat) +"Io" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,4" + }, +/area/shuttle/lifeboat) +"KZ" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "26,3" + }, +/area/shuttle/lifeboat) +"Lk" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/cameras/almayer/vehicle{ + dir = 8 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"Mu" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "24,5" + }, +/area/shuttle/lifeboat) +"NE" = ( +/obj/structure/bed/chair/dropship/passenger/shuttle_chair{ + dir = 4; + name = "pilot seat" + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"NF" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "1,0" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"NK" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,4" + }, +/area/shuttle/lifeboat) +"NO" = ( +/obj/structure/extinguisher_cabinet/lifeboat{ + pixel_x = 15; + pixel_y = 27 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"Od" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "3,6" + }, +/area/shuttle/lifeboat) +"Ow" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "6,0" + }, +/area/shuttle/lifeboat) +"OO" = ( +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"PJ" = ( +/obj/structure/bed/chair/dropship/passenger/shuttle_chair{ + dir = 1 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"Qa" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "12,0" + }, +/area/shuttle/lifeboat) +"Rk" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "25,5" + }, +/area/shuttle/lifeboat) +"RH" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,1" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"RR" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "23,6" + }, +/area/shuttle/lifeboat) +"Td" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "3,5" + }, +/area/shuttle/lifeboat) +"Tn" = ( +/obj/structure/bed/chair/dropship/passenger/shuttle_chair{ + dir = 4 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"TM" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "24,4" + }, +/area/shuttle/lifeboat) +"TU" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,3" + }, +/area/shuttle/lifeboat) +"Up" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "1,6" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"UG" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "23,5" + }, +/area/shuttle/lifeboat) +"Vj" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "25,1" + }, +/area/shuttle/lifeboat) +"VF" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "17,1" + }, +/area/shuttle/lifeboat) +"VZ" = ( +/turf/open/shuttle/escapepod{ + icon_state = "floor8" + }, +/area/shuttle/lifeboat) +"Xj" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "24,1" + }, +/area/shuttle/lifeboat) +"XV" = ( +/turf/open/shuttle/lifeboat{ + icon_state = "plate" + }, +/area/shuttle/lifeboat) +"Zl" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "24,0" + }, +/area/shuttle/lifeboat) +"ZP" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "26,2" + }, +/area/shuttle/lifeboat) +"ZR" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "11,0" + }, +/area/shuttle/lifeboat) + +(1,1,1) = {" +qV +su +ej +hQ +ex +RH +vG +"} +(2,1,1) = {" +Up +zz +Io +mA +ep +Dj +NF +"} +(3,1,1) = {" +zv +Cq +NK +TU +Ax +HW +sO +"} +(4,1,1) = {" +Od +Td +Tn +Tn +Tn +GD +Dn +"} +(5,1,1) = {" +Bf +kE +OO +VZ +OO +PJ +iP +"} +(6,1,1) = {" +Bf +kE +OO +VZ +OO +PJ +iP +"} +(7,1,1) = {" +em +kC +ix +XV +OO +zK +Ow +"} +(8,1,1) = {" +GA +Td +GQ +XV +OO +GD +ho +"} +(9,1,1) = {" +Bf +kE +OO +VZ +OO +AF +Ep +"} +(10,1,1) = {" +Bf +kE +OO +VZ +OO +AF +OO +"} +(11,1,1) = {" +Bf +kE +OO +VZ +OO +AF +OO +"} +(12,1,1) = {" +em +kC +OO +XV +OO +zK +ZR +"} +(13,1,1) = {" +GA +Td +OO +XV +OO +GD +Qa +"} +(14,1,1) = {" +Bf +kE +OO +VZ +OO +AF +lS +"} +(15,1,1) = {" +Bf +kE +OO +VZ +OO +AF +OO +"} +(16,1,1) = {" +Bf +kE +OO +VZ +OO +AF +OO +"} +(17,1,1) = {" +em +kC +NO +XV +OO +zK +EP +"} +(18,1,1) = {" +ci +ce +hD +XV +OO +VF +jA +"} +(19,1,1) = {" +GA +Td +OO +XV +OO +GD +BP +"} +(20,1,1) = {" +Bf +kE +OO +VZ +OO +PJ +iP +"} +(21,1,1) = {" +Bf +kE +OO +VZ +OO +PJ +iP +"} +(22,1,1) = {" +Bf +kE +OO +VZ +OO +PJ +iP +"} +(23,1,1) = {" +em +kC +NE +NE +NE +zK +lK +"} +(24,1,1) = {" +RR +UG +Lk +hb +EI +tB +BC +"} +(25,1,1) = {" +rM +Mu +TM +FI +mt +Xj +Zl +"} +(26,1,1) = {" +uJ +Rk +gp +xI +CS +Vj +FS +"} +(27,1,1) = {" +wA +gS +pr +KZ +ZP +uN +wA +"} diff --git a/maps/shuttles/lifeboat-starboard.dmm b/maps/shuttles/lifeboat-starboard.dmm index b1857064804c..57e302923131 100644 --- a/maps/shuttles/lifeboat-starboard.dmm +++ b/maps/shuttles/lifeboat-starboard.dmm @@ -102,7 +102,7 @@ /area/shuttle/lifeboat) "lS" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ - id = "Boat2-D2"; + id = "Boat2-D4"; throw_dir = 2 }, /turf/open/shuttle/lifeboat, @@ -159,8 +159,17 @@ }, /turf/template_noop, /area/shuttle/lifeboat) +"uX" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ + id = "Boat2-D2"; + throw_dir = 1 + }, +/turf/open/shuttle/lifeboat{ + icon_state = "test_floor4" + }, +/area/shuttle/lifeboat) "vG" = ( -/obj/docking_port/mobile/lifeboat/starboard, +/obj/docking_port/mobile/crashable/lifeboat/starboard, /obj/structure/prop/invuln/dropship_parts/lifeboat{ icon_state = "0,0" }, @@ -174,6 +183,15 @@ icon_state = "25,3" }, /area/shuttle/lifeboat) +"ya" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ + id = "Boat2-D1"; + throw_dir = 1 + }, +/turf/open/shuttle/lifeboat{ + icon_state = "test_floor4" + }, +/area/shuttle/lifeboat) "zv" = ( /turf/closed/shuttle/lifeboat{ icon_state = "2,6" @@ -236,7 +254,7 @@ /area/shuttle/lifeboat) "Ep" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ - id = "Boat2-D1"; + id = "Boat2-D3"; throw_dir = 2 }, /turf/open/shuttle/lifeboat, @@ -357,6 +375,11 @@ icon_state = "12,0" }, /area/shuttle/lifeboat) +"Qj" = ( +/turf/open/shuttle/lifeboat{ + icon_state = "test_floor4" + }, +/area/shuttle/lifeboat) "Rk" = ( /turf/closed/shuttle/lifeboat{ icon_state = "25,5" @@ -373,6 +396,12 @@ icon_state = "23,6" }, /area/shuttle/lifeboat) +"SA" = ( +/turf/open/shuttle/lifeboat{ + dir = 1; + icon_state = "plating_striped" + }, +/area/shuttle/lifeboat) "Td" = ( /turf/closed/shuttle/lifeboat{ icon_state = "3,5" @@ -519,8 +548,8 @@ GD ho "} (9,1,1) = {" -Bf -kE +ya +SA OO VZ OO @@ -528,8 +557,8 @@ AF Ep "} (10,1,1) = {" -Bf -kE +Qj +SA OO VZ OO @@ -537,8 +566,8 @@ AF OO "} (11,1,1) = {" -Bf -kE +Qj +SA OO VZ OO @@ -564,8 +593,8 @@ GD Qa "} (14,1,1) = {" -Bf -kE +uX +SA OO VZ OO @@ -573,8 +602,8 @@ AF lS "} (15,1,1) = {" -Bf -kE +Qj +SA OO VZ OO @@ -582,8 +611,8 @@ AF OO "} (16,1,1) = {" -Bf -kE +Qj +SA OO VZ OO diff --git a/maps/sorokyne_strata.json b/maps/sorokyne_strata.json index 61c3a7fd3f69..5a0f6d67c410 100644 --- a/maps/sorokyne_strata.json +++ b/maps/sorokyne_strata.json @@ -11,6 +11,7 @@ "/datum/equipment_preset/survivor/scientist/soro", "/datum/equipment_preset/survivor/doctor/soro", "/datum/equipment_preset/survivor/engineer/soro", + "/datum/equipment_preset/survivor/corporate/soro", "/datum/equipment_preset/survivor/security/soro", "/datum/equipment_preset/survivor/interstellar_human_rights_observer/soro" ], diff --git a/maps/templates/Chinook.dmm b/maps/templates/Chinook.dmm index 0d9e64628b24..077729447e29 100644 --- a/maps/templates/Chinook.dmm +++ b/maps/templates/Chinook.dmm @@ -416,7 +416,7 @@ /area/adminlevel/chinook/offices) "bx" = ( /obj/structure/surface/table/reinforced/almayer_B, -/obj/item/tool/weldingtool/largetank{ +/obj/item/tool/weldingtool{ pixel_x = -9; pixel_y = 4 }, @@ -427,7 +427,7 @@ pixel_x = 13; pixel_y = 5 }, -/obj/item/tool/weldingtool/largetank{ +/obj/item/tool/weldingtool{ pixel_x = -2; pixel_y = 6 }, @@ -660,10 +660,6 @@ /area/adminlevel/chinook/offices) "cr" = ( /obj/structure/surface/table/reinforced/black, -/obj/item/book/manual/robotics_cyborgs{ - pixel_x = -8; - pixel_y = 7 - }, /obj/item/storage/fancy/cigar, /turf/open/floor/almayer, /area/adminlevel/chinook/offices) @@ -700,7 +696,7 @@ /area/adminlevel/chinook/sec) "cy" = ( /obj/structure/surface/table/almayer, -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, /turf/open/floor/almayer{ dir = 1; icon_state = "orange" @@ -1875,7 +1871,7 @@ /area/adminlevel/chinook/engineering) "gv" = ( /obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/chem_dispenser/beer, +/obj/structure/machinery/chem_dispenser/soda/beer, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -9148,7 +9144,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/obj/item/tool/weldingtool/largetank{ +/obj/item/tool/weldingtool{ pixel_x = 14; pixel_y = -14 }, @@ -10758,9 +10754,9 @@ /area/adminlevel/chinook/sec) "Od" = ( /obj/structure/surface/table/almayer, -/obj/item/tool/weldingtool/largetank, -/obj/item/tool/weldingtool/largetank, -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, +/obj/item/tool/weldingtool, +/obj/item/tool/weldingtool, /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, @@ -14056,7 +14052,7 @@ /area/adminlevel/chinook/medical) "ZH" = ( /obj/structure/machinery/power/port_gen/pacman, -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, /obj/structure/sign/safety/high_voltage{ pixel_y = 25 }, diff --git a/maps/templates/clf_ert_station.dmm b/maps/templates/clf_ert_station.dmm new file mode 100644 index 000000000000..7347be914da2 --- /dev/null +++ b/maps/templates/clf_ert_station.dmm @@ -0,0 +1,3985 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ac" = ( +/obj/structure/target/syndicate, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"at" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/bedsheet/brown{ + layer = 3.0 + }, +/obj/item/bedsheet/brown{ + pixel_y = 13 + }, +/obj/structure/machinery/light/small/built{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/clf_station) +"av" = ( +/obj/structure/closet/crate, +/obj/item/explosive/grenade/phosphorus/clf, +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/adminlevel/ert_station/clf_station) +"ax" = ( +/turf/closed/wall/rock/brown, +/area/adminlevel/ert_station/clf_station) +"az" = ( +/obj/structure/prop/brazier/frame/full, +/turf/open/floor/plating{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/adminlevel/ert_station/clf_station) +"aA" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/roller, +/obj/item/roller, +/obj/item/roller, +/obj/item/roller, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"aE" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"aL" = ( +/obj/structure/machinery/shower{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 80 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/turf/open/floor/plating/plating_catwalk, +/area/adminlevel/ert_station/clf_station) +"aN" = ( +/obj/structure/toilet{ + pixel_y = 16 + }, +/obj/structure/machinery/light/small/built{ + dir = 8 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/adminlevel/ert_station/clf_station) +"aO" = ( +/obj/structure/stairs/perspective{ + color = "#6b675e"; + dir = 6; + icon_state = "p_stair_full" + }, +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"aR" = ( +/obj/structure/platform/kutjevo, +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "fullgrass_1" + }, +/turf/open/auto_turf/strata_grass/layer0_mud_alt, +/area/adminlevel/ert_station/clf_station) +"bb" = ( +/obj/structure/stairs/perspective{ + color = "#6e6e6e"; + dir = 5; + icon_state = "p_stair_full" + }, +/obj/structure/platform_decoration/kutjevo{ + dir = 4 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"by" = ( +/turf/open/auto_turf/strata_grass/layer0, +/area/adminlevel/ert_station/clf_station) +"bI" = ( +/obj/structure/flora/jungle/planttop1, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"bL" = ( +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 5 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"bX" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/turf/open/auto_turf/strata_grass/layer0_mud_alt, +/area/adminlevel/ert_station/clf_station) +"cc" = ( +/obj/structure/closet/secure_closet/freezer/fridge/full, +/obj/item/reagent_container/food/condiment/enzyme, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"ce" = ( +/obj/item/trash/chips, +/obj/structure/machinery/light/small/built{ + dir = 1 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"cx" = ( +/obj/structure/sink{ + pixel_y = 24 + }, +/obj/structure/mirror{ + pixel_y = 32 + }, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/adminlevel/ert_station/clf_station) +"cB" = ( +/obj/vehicle/powerloader/ft, +/turf/open/floor/plating{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/adminlevel/ert_station/clf_station) +"cH" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/adminlevel/ert_station/clf_station) +"dd" = ( +/turf/open/gm/coast{ + dir = 1 + }, +/area/adminlevel/ert_station/clf_station) +"dg" = ( +/obj/item/prop/helmetgarb/spent_buckshot, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/adminlevel/ert_station/clf_station) +"dI" = ( +/obj/structure/flora/bush/ausbushes/genericbush, +/turf/open/gm/dirt, +/area/adminlevel/ert_station/clf_station) +"dM" = ( +/obj/structure/flora/grass/tallgrass/jungle, +/obj/structure/flora/jungle/vines/heavy, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"dU" = ( +/obj/structure/platform/kutjevo{ + dir = 1 + }, +/obj/structure/platform/kutjevo{ + dir = 4 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"dY" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/obj/structure/flora/jungle/vines/heavy, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"eh" = ( +/obj/structure/platform/kutjevo{ + dir = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"eo" = ( +/obj/structure/flora/bush/ausbushes/genericbush, +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"ey" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"eE" = ( +/obj/structure/largecrate/black_market/clf_supplies, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"eH" = ( +/obj/structure/window/framed/wood/reinforced, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"eO" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "fullgrass_1" + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"eP" = ( +/obj/structure/window/framed/wood, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"fd" = ( +/obj/structure/closet/secure_closet/freezer/fridge/groceries, +/obj/structure/machinery/light/small/built, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"fk" = ( +/obj/structure/pipes/vents/pump, +/turf/closed/wall/wood, +/area/adminlevel/ert_station/clf_station) +"fo" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"fx" = ( +/obj/structure/largecrate/supply/medicine/blood, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"fA" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/obj/structure/flora/jungle/vines/heavy, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"fX" = ( +/obj/structure/prop/wooden_cross, +/turf/open/gm/dirt, +/area/adminlevel/ert_station/clf_station) +"gc" = ( +/obj/structure/closet/crate, +/obj/item/device/encryptionkey/clf, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"gi" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/reagent_container/food/drinks/bottle/whiskey, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"gj" = ( +/obj/structure/flora/grass/tallgrass/jungle/corner, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"gN" = ( +/obj/effect/decal/cleanable/egg_smudge, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"hd" = ( +/obj/structure/reagent_dispensers/beerkeg{ + density = 0 + }, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"hr" = ( +/obj/structure/machinery/light/small/built{ + dir = 4 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"hE" = ( +/obj/structure/bed/chair, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"hL" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/bedsheet/brown{ + layer = 3.0 + }, +/obj/item/bedsheet/brown{ + pixel_y = 13 + }, +/obj/item/weapon/gun/pistol/clfpistol, +/obj/structure/machinery/light/small/built{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/clf_station) +"hO" = ( +/obj/item/reagent_container/food/drinks/bottle/whiskey, +/obj/structure/surface/table/woodentable/fancy, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"ie" = ( +/obj/structure/machinery/iv_drip, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"iB" = ( +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 10 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"iG" = ( +/obj/structure/flora/grass/tallgrass/jungle, +/obj/structure/flora/jungle/vines/heavy, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"iK" = ( +/obj/structure/barricade/sandbags, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"iO" = ( +/obj/structure/showcase{ + color = "#95948B"; + desc = "A grey statue dawned in ancient armor, it stares into your soul."; + icon = 'icons/mob/humans/species/r_synthetic.dmi'; + icon_state = "Synthetic_Template"; + name = "Eternal guardian" + }, +/obj/item/weapon/harpoon/yautja{ + anchored = 1; + name = "Alien Harpoon"; + pixel_x = 6 + }, +/obj/item/clothing/shoes/yautja_flavor{ + anchored = 1 + }, +/obj/item/clothing/mask/yautja_flavor{ + anchored = 1; + unacidable = 0 + }, +/turf/open/floor/sandstone/runed, +/area/adminlevel/ert_station/clf_station) +"jc" = ( +/obj/structure/platform_decoration/kutjevo, +/obj/structure/stairs/perspective{ + color = "#6e6e6e"; + dir = 5; + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/strata_grass/layer0, +/area/adminlevel/ert_station/clf_station) +"jj" = ( +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 10 + }, +/obj/structure/platform_decoration/kutjevo{ + dir = 8 + }, +/turf/open/gm/grass{ + icon_state = "grass2" + }, +/area/adminlevel/ert_station/clf_station) +"jp" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/reagent_container/food/drinks/bottle/whiskey, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"jG" = ( +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"jZ" = ( +/obj/structure/flora/jungle/plantbot1, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"ki" = ( +/obj/structure/largecrate/black_market/confiscated_equipment, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"kk" = ( +/obj/item/ammo_box/magazine/l42a, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"ko" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/obj/structure/flora/jungle/vines, +/obj/structure/flora/jungle/vines{ + icon_state = "heavy_1" + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"kr" = ( +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 6 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"ks" = ( +/obj/structure/platform/kutjevo, +/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "fullgrass_1" + }, +/turf/open/auto_turf/strata_grass/layer0_mud_alt, +/area/adminlevel/ert_station/clf_station) +"kF" = ( +/obj/effect/decal/cleanable/blood, +/obj/structure/surface/table/woodentable/poor, +/obj/item/storage/pill_bottle{ + pixel_y = 12; + pixel_x = 5 + }, +/obj/item/storage/pill_bottle/ultrazine/antag{ + pixel_y = 14; + pixel_x = -3 + }, +/obj/item/storage/pill_bottle{ + pixel_y = 10 + }, +/obj/item/reagent_container/food/drinks/bottle/vodka, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"kS" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/reagent_container/food/drinks/shaker, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"la" = ( +/obj/structure/platform/kutjevo{ + dir = 4 + }, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"lp" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/explosive/grenade/incendiary/molotov, +/obj/item/explosive/grenade/incendiary/molotov, +/obj/item/explosive/grenade/incendiary/molotov, +/obj/item/explosive/grenade/incendiary/molotov, +/obj/item/weapon/gun/pistol/heavy{ + pixel_y = 8 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"lI" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"lN" = ( +/obj/structure/platform/kutjevo{ + dir = 4 + }, +/turf/open/gm/dirtgrassborder{ + dir = 4; + icon_state = "grassdirt_corner" + }, +/area/adminlevel/ert_station/clf_station) +"lT" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"lX" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 7 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"ma" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/storage/fancy/cigarettes/lucky_strikes_4, +/obj/structure/machinery/light/small/built{ + dir = 1 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"me" = ( +/obj/structure/platform_decoration/kutjevo, +/turf/open/gm/dirtgrassborder{ + dir = 4; + icon_state = "grassdirt_corner" + }, +/area/adminlevel/ert_station/clf_station) +"mk" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 4 + }, +/obj/structure/flora/jungle/vines/heavy, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"ms" = ( +/obj/structure/machinery/chem_dispenser/soda{ + density = 0; + pixel_y = 10 + }, +/obj/structure/surface/table/reinforced, +/obj/item/spacecash/c50, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"mt" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/clothing/suit/chef/classic, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/head/chefhat, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"mw" = ( +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"mR" = ( +/obj/structure/machinery/gibber{ + pixel_y = 10 + }, +/obj/structure/surface/table/reinforced, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"ne" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/obj/item/bedsheet/brown{ + layer = 3.0 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"nn" = ( +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 4 + }, +/obj/structure/flora/grass/tallgrass/jungle, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"nr" = ( +/obj/structure/stairs/perspective{ + color = "#6e6e6e"; + dir = 9; + icon_state = "p_stair_full" + }, +/obj/structure/platform_decoration/kutjevo{ + dir = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"nC" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/reagent_container/food/drinks/bottle/vodka, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"nJ" = ( +/obj/item/clothing/shoes/jackboots, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"nM" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/obj/structure/largecrate/random/secure, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"nQ" = ( +/obj/item/clothing/mask/cigarette/cigar/classic, +/obj/structure/surface/table/woodentable/fancy, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"oc" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/ammo_magazine/shotgun/slugs, +/obj/item/ammo_magazine/shotgun/slugs, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, +/obj/structure/machinery/light/small/built{ + dir = 1 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"om" = ( +/turf/open/gm/dirtgrassborder{ + dir = 4; + icon_state = "grassdirt_corner2" + }, +/area/adminlevel/ert_station/clf_station) +"ow" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/bedsheet/brown{ + layer = 3.0 + }, +/obj/item/bedsheet/brown{ + pixel_y = 13 + }, +/obj/item/stock_parts/subspace/crystal, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/clf_station) +"oy" = ( +/obj/item/trash/candy, +/obj/structure/machinery/light/small/built, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"oI" = ( +/turf/open/floor/plating{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/adminlevel/ert_station/clf_station) +"oN" = ( +/obj/structure/flora/jungle/vines, +/turf/closed/wall/strata_ice/jungle, +/area/adminlevel/ert_station/clf_station) +"oO" = ( +/obj/structure/stairs/perspective{ + color = "#6e6e6e"; + dir = 10; + icon_state = "p_stair_full" + }, +/obj/structure/platform_decoration/kutjevo, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"pk" = ( +/obj/structure/flora/grass/tallgrass/jungle, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"pp" = ( +/obj/structure/platform/kutjevo{ + dir = 4 + }, +/turf/open/gm/grass{ + icon_state = "grass2" + }, +/area/adminlevel/ert_station/clf_station) +"pE" = ( +/obj/structure/platform/kutjevo, +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 9 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"pF" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/adminlevel/ert_station/clf_station) +"pY" = ( +/obj/structure/flora/jungle/plantbot1, +/turf/open/gm/dirtgrassborder{ + dir = 8 + }, +/area/adminlevel/ert_station/clf_station) +"qa" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/adminlevel/ert_station/clf_station) +"qb" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/plating{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/adminlevel/ert_station/clf_station) +"ql" = ( +/obj/structure/flora/bush/ausbushes/genericbush, +/turf/open/gm/grass{ + icon_state = "grass2" + }, +/area/adminlevel/ert_station/clf_station) +"qy" = ( +/obj/structure/flora/bush/ausbushes/reedbush, +/turf/open/gm/river, +/area/adminlevel/ert_station/clf_station) +"rm" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/device/healthanalyzer{ + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"rz" = ( +/obj/structure/curtain/red, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"rD" = ( +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 9 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"rO" = ( +/obj/structure/platform/kutjevo, +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"rZ" = ( +/obj/structure/platform/kutjevo, +/obj/structure/flora/jungle/vines/heavy, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"sv" = ( +/obj/structure/target/syndicate, +/obj/item/weapon/throwing_knife, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"sx" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/clothing/glasses/sunglasses/blindfold, +/obj/item/handcuffs, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"sC" = ( +/obj/structure/flora/jungle/planttop1, +/turf/open/gm/dirtgrassborder{ + dir = 1; + icon_state = "grassdirt_corner" + }, +/area/adminlevel/ert_station/clf_station) +"sK" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/weapon/gun/smg/uzi, +/obj/item/ammo_magazine/smg/uzi, +/obj/item/ammo_magazine/smg/uzi, +/obj/item/ammo_magazine/smg/uzi, +/obj/item/ammo_magazine/smg/uzi, +/obj/item/ammo_magazine/smg/uzi, +/obj/item/ammo_magazine/smg/uzi, +/obj/item/ammo_magazine/smg/uzi, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"sN" = ( +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"ta" = ( +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 4 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"ts" = ( +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 5 + }, +/turf/open/gm/grass{ + icon_state = "grass2" + }, +/area/adminlevel/ert_station/clf_station) +"tt" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"tz" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/effect/landmark/wo_supplies/storage/belts/lifesaver, +/obj/effect/landmark/wo_supplies/storage/belts/lifesaver{ + pixel_y = 5 + }, +/obj/item/storage/belt/medical/full{ + pixel_y = -1 + }, +/obj/item/storage/belt/medical/full/with_suture_and_graft{ + pixel_y = 10 + }, +/obj/structure/machinery/light/small/built, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"tG" = ( +/obj/structure/machinery/shower{ + pixel_y = 16 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 80 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/turf/open/floor/plating/plating_catwalk, +/area/adminlevel/ert_station/clf_station) +"tJ" = ( +/obj/structure/showcase{ + color = "#95948B"; + desc = "A grey statue dawned in ancient armor, it stares into your soul."; + icon = 'icons/mob/humans/species/r_synthetic.dmi'; + icon_state = "Synthetic_Template"; + name = "Eternal guardian" + }, +/obj/item/clothing/suit/armor/yautja_flavor{ + anchored = 1 + }, +/turf/open/floor/sandstone/runed, +/area/adminlevel/ert_station/clf_station) +"ug" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/gm/dirt, +/area/adminlevel/ert_station/clf_station) +"un" = ( +/obj/structure/flora/jungle/vines{ + icon_state = "heavy_1" + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"up" = ( +/obj/structure/machinery/light/small/built{ + dir = 1 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken3" + }, +/area/adminlevel/ert_station/clf_station) +"uF" = ( +/obj/structure/platform/kutjevo{ + dir = 1 + }, +/obj/structure/closet/coffin/woodencrate, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"uO" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/obj/item/bedsheet/yellow, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"uX" = ( +/turf/open/floor/plating, +/area/adminlevel/ert_station/clf_station) +"uZ" = ( +/obj/structure/prop/wooden_cross{ + pixel_y = 14 + }, +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "fullgrass_1" + }, +/turf/open/auto_turf/strata_grass/layer0_mud_alt, +/area/adminlevel/ert_station/clf_station) +"vm" = ( +/obj/structure/bed/chair/bolted{ + dir = 1 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"vx" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/trash/candle, +/obj/item/reagent_container/syringe/drugs{ + pixel_y = 8 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"vA" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"vE" = ( +/obj/structure/largecrate/supply/weapons/shotgun, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"vI" = ( +/turf/open/floor/sandstone/runed, +/area/adminlevel/ert_station/clf_station) +"vQ" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"wI" = ( +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 6 + }, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"wW" = ( +/turf/open/gm/coast{ + dir = 9 + }, +/area/adminlevel/ert_station/clf_station) +"xi" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/obj/structure/largecrate/random/barrel/white, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"xE" = ( +/turf/open/gm/coast{ + dir = 8; + icon_state = "beachcorner2" + }, +/area/adminlevel/ert_station/clf_station) +"xJ" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "fullgrass_1" + }, +/obj/item/prop/helmetgarb/spent_buckshot, +/turf/open/auto_turf/strata_grass/layer0_mud, +/area/adminlevel/ert_station/clf_station) +"xL" = ( +/obj/structure/flora/grass/tallgrass/jungle, +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "fullgrass_1" + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"xM" = ( +/obj/structure/sink{ + dir = 1; + pixel_y = -10 + }, +/obj/item/tool/soap, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/adminlevel/ert_station/clf_station) +"xO" = ( +/obj/item/holder/cat/kitten{ + name = "Isabelle" + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"xS" = ( +/obj/structure/platform/kutjevo{ + dir = 1 + }, +/obj/structure/flora/jungle/vines/heavy, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"ye" = ( +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 5 + }, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"yy" = ( +/obj/structure/platform_decoration/kutjevo, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"yE" = ( +/obj/structure/closet/crate, +/obj/item/explosive/grenade/incendiary/molotov, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/adminlevel/ert_station/clf_station) +"yH" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "fullgrass_1" + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"yM" = ( +/obj/structure/closet/crate, +/obj/item/ammo_magazine/pistol/clfpistol, +/obj/item/ammo_magazine/pistol/clfpistol, +/obj/item/ammo_magazine/pistol/clfpistol, +/obj/item/ammo_magazine/pistol/clfpistol, +/turf/open/floor/wood{ + icon_state = "wood-broken3" + }, +/area/adminlevel/ert_station/clf_station) +"yO" = ( +/obj/structure/platform/kutjevo{ + dir = 4 + }, +/obj/structure/flora/bush/ausbushes/genericbush, +/turf/open/gm/grass{ + icon_state = "grass2" + }, +/area/adminlevel/ert_station/clf_station) +"yU" = ( +/turf/open/gm/river, +/area/adminlevel/ert_station/clf_station) +"yW" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 4 + }, +/obj/structure/largecrate/random/case/small, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"yY" = ( +/obj/structure/prop/brazier/frame/full, +/turf/open/floor/plating{ + icon_state = "asteroidwarning" + }, +/area/adminlevel/ert_station/clf_station) +"zy" = ( +/obj/structure/machinery/light/small/built{ + dir = 1 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"zH" = ( +/obj/structure/closet/secure_closet/medical_doctor, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"zO" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"zZ" = ( +/obj/structure/sign/poster/clf, +/turf/closed/wall/wood, +/area/adminlevel/ert_station/clf_station) +"Ad" = ( +/obj/structure/flora/jungle/vines{ + icon_state = "heavy_4" + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"Ag" = ( +/turf/open/auto_turf/strata_grass/layer0_mud_alt, +/area/adminlevel/ert_station/clf_station) +"Ah" = ( +/obj/structure/platform/kutjevo{ + dir = 4 + }, +/turf/open/gm/dirtgrassborder{ + dir = 1; + icon_state = "grassdirt_corner" + }, +/area/adminlevel/ert_station/clf_station) +"Aj" = ( +/obj/structure/flora/jungle/planttop1, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"AE" = ( +/obj/structure/platform/kutjevo{ + dir = 4 + }, +/turf/open/gm/dirtgrassborder{ + dir = 8 + }, +/area/adminlevel/ert_station/clf_station) +"AK" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 4 + }, +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 6 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"AO" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/ammo_magazine/shotgun/flechette, +/obj/item/ammo_magazine/shotgun/flechette, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb/m3717, +/obj/structure/machinery/light/small/built{ + dir = 1 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"AV" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/ammo_magazine/smg/mac15/extended, +/obj/item/ammo_magazine/smg/mac15/extended, +/obj/item/ammo_magazine/smg/mac15/extended, +/obj/item/weapon/gun/smg/mac15/extended, +/obj/structure/machinery/light/small/built, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"Ba" = ( +/obj/structure/stairs/perspective{ + color = "#6e6e6e"; + dir = 8; + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/strata_grass/layer0, +/area/adminlevel/ert_station/clf_station) +"Bl" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/ammo_magazine/smg/mp5, +/obj/item/ammo_magazine/smg/mp5, +/obj/item/ammo_magazine/smg/mp5, +/obj/item/weapon/gun/smg/mp5, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"Bn" = ( +/obj/item/trash/burger, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"Bt" = ( +/obj/structure/platform/kutjevo{ + dir = 1 + }, +/obj/structure/platform/kutjevo{ + dir = 4 + }, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"Bx" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"BB" = ( +/obj/structure/flora/bush/ausbushes/grassybush, +/obj/structure/flora/grass/tallgrass/jungle, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"BC" = ( +/obj/structure/machinery/door/airlock/sandstone/runed/destroyable{ + name = "\improper Strange Temple" + }, +/turf/open/space/basic, +/area/adminlevel/ert_station/clf_station) +"BP" = ( +/obj/structure/surface/table/reinforced, +/obj/structure/machinery/microwave{ + pixel_y = 10 + }, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"BQ" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/obj/structure/platform/kutjevo, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"BS" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/turf/open/auto_turf/strata_grass/layer0, +/area/adminlevel/ert_station/clf_station) +"BU" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/turf/open/auto_turf/strata_grass/layer0_mud, +/area/adminlevel/ert_station/clf_station) +"Ch" = ( +/obj/structure/platform/kutjevo, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"Ck" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/device/radio/headset/distress/CLF, +/obj/item/device/radio/headset/distress/CLF/command, +/obj/structure/machinery/recharger, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"CE" = ( +/obj/structure/flora/jungle/planttop1, +/obj/structure/largecrate/random/secure, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"CQ" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"Dn" = ( +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/gm/dirt, +/area/adminlevel/ert_station/clf_station) +"Dy" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "fullgrass_1" + }, +/turf/open/auto_turf/strata_grass/layer0_mud, +/area/adminlevel/ert_station/clf_station) +"DF" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken3" + }, +/area/adminlevel/ert_station/clf_station) +"DN" = ( +/obj/structure/flora/jungle/vines/heavy, +/turf/closed/wall/strata_ice/jungle, +/area/adminlevel/ert_station/clf_station) +"DW" = ( +/obj/structure/closet/secure_closet/brig, +/obj/structure/machinery/light/small/built{ + dir = 1 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"Eb" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/obj/structure/stairs/perspective{ + color = "#6e6e6e"; + dir = 9; + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/strata_grass/layer0, +/area/adminlevel/ert_station/clf_station) +"Ee" = ( +/turf/open/gm/dirtgrassborder{ + dir = 8 + }, +/area/adminlevel/ert_station/clf_station) +"Ez" = ( +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"EJ" = ( +/obj/structure/machinery/floodlight, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"ER" = ( +/obj/structure/toilet{ + pixel_y = 16 + }, +/obj/structure/machinery/light/small/built{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/adminlevel/ert_station/clf_station) +"Fj" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/reagent_container/food/drinks/bottle/vodka, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"Fn" = ( +/obj/structure/platform/kutjevo{ + dir = 4 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"FD" = ( +/turf/open/auto_turf/strata_grass/layer0_mud, +/area/adminlevel/ert_station/clf_station) +"FV" = ( +/obj/item/reagent_container/food/drinks/bottle/vodka, +/obj/structure/surface/table/woodentable/fancy, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"Gj" = ( +/obj/structure/platform/kutjevo, +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"Gl" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/spacecash/c10, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"GB" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/weapon/gun/rifle/mar40, +/obj/item/ammo_magazine/rifle/mar40, +/obj/item/ammo_magazine/rifle/mar40, +/obj/item/ammo_magazine/rifle/mar40, +/turf/open/auto_turf/strata_grass/layer0_mud, +/area/adminlevel/ert_station/clf_station) +"GG" = ( +/obj/structure/flora/grass/tallgrass/jungle, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"GR" = ( +/obj/structure/platform/kutjevo, +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 1 + }, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"GV" = ( +/turf/open/floor/plating{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/adminlevel/ert_station/clf_station) +"Hs" = ( +/obj/docking_port/stationary/emergency_response/idle_port1, +/turf/open/floor/plating, +/area/adminlevel/ert_station/clf_station) +"HI" = ( +/obj/structure/flora/jungle/vines/heavy, +/turf/open/gm/dirt, +/area/adminlevel/ert_station/clf_station) +"Ie" = ( +/turf/open/gm/dirtgrassborder{ + dir = 1; + icon_state = "grassdirt_corner2" + }, +/area/adminlevel/ert_station/clf_station) +"Ig" = ( +/obj/structure/largecrate/black_market/clf_supplies, +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"Io" = ( +/obj/structure/platform/kutjevo, +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 5 + }, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"Iz" = ( +/obj/structure/platform_decoration/kutjevo, +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"IH" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/adminlevel/ert_station/clf_station) +"IT" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/plating{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/adminlevel/ert_station/clf_station) +"IW" = ( +/obj/structure/closet/crate, +/obj/item/clothing/mask/gas/swat, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/adminlevel/ert_station/clf_station) +"Jg" = ( +/obj/structure/platform/kutjevo, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"Jh" = ( +/obj/structure/platform/kutjevo{ + dir = 4 + }, +/obj/structure/flora/jungle/vines/heavy, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"Ke" = ( +/obj/structure/flora/jungle/vines{ + icon_state = "heavy_4" + }, +/turf/closed/wall/strata_ice/jungle, +/area/adminlevel/ert_station/clf_station) +"KT" = ( +/turf/closed/wall/strata_ice/jungle, +/area/adminlevel/ert_station/clf_station) +"Lu" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/weapon/gun/rifle/mar40/carbine, +/obj/item/ammo_magazine/rifle/mar40, +/obj/item/ammo_magazine/rifle/mar40, +/turf/open/auto_turf/strata_grass/layer0_mud, +/area/adminlevel/ert_station/clf_station) +"LH" = ( +/obj/structure/closet/secure_closet/brig, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"LN" = ( +/obj/structure/machinery/floodlight, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"LO" = ( +/turf/closed/wall/mineral/sandstone/runed, +/area/adminlevel/ert_station/clf_station) +"LQ" = ( +/obj/structure/machinery/light/small/built{ + dir = 8 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"Me" = ( +/obj/structure/flora/jungle/planttop1, +/turf/open/gm/dirtgrassborder{ + dir = 4; + icon_state = "grassdirt_corner" + }, +/area/adminlevel/ert_station/clf_station) +"MD" = ( +/obj/structure/platform/kutjevo{ + dir = 1 + }, +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"ME" = ( +/obj/structure/machinery/door/window/brigdoor{ + dir = 8; + req_access = null + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"MI" = ( +/obj/structure/flora/jungle/vines/heavy, +/turf/closed/wall/rock/brown, +/area/adminlevel/ert_station/clf_station) +"MP" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/bedsheet/brown{ + layer = 3.0 + }, +/obj/item/bedsheet/brown{ + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/clf_station) +"MQ" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken3" + }, +/area/adminlevel/ert_station/clf_station) +"MT" = ( +/obj/item/tank/anesthetic, +/obj/structure/surface/table/reinforced/prison, +/obj/item/clothing/mask/breath/medical, +/obj/structure/machinery/light/small/built{ + dir = 1 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"MU" = ( +/obj/structure/window/reinforced, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"Ne" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 4 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"Ng" = ( +/obj/structure/flora/jungle/plantbot1, +/turf/open/gm/dirtgrassborder{ + dir = 1; + icon_state = "grassdirt_corner" + }, +/area/adminlevel/ert_station/clf_station) +"Ni" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/reagent_container/food/condiment/peppermill, +/obj/item/reagent_container/food/condiment/saltshaker, +/obj/item/storage/box/drinkingglasses, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"Nk" = ( +/obj/structure/flora/grass/tallgrass/jungle/corner, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"Ns" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"NB" = ( +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/adminlevel/ert_station/clf_station) +"NV" = ( +/obj/structure/flora/jungle/vines/heavy, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"NY" = ( +/obj/effect/decal/cleanable/tomato_smudge, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"Of" = ( +/obj/structure/surface/table/reinforced, +/obj/item/tool/kitchen/tray, +/obj/item/tool/kitchen/knife{ + pixel_x = 3 + }, +/obj/item/tool/kitchen/knife/butcher{ + pixel_x = -8 + }, +/obj/item/tool/kitchen/rollingpin, +/obj/item/book/manual/chef_recipes, +/obj/structure/machinery/light/small/built{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"Oi" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/plating{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/adminlevel/ert_station/clf_station) +"Op" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/obj/structure/largecrate/random/barrel/red, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"Ou" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/bedsheet/brown{ + layer = 3.0 + }, +/obj/item/bedsheet/brown{ + pixel_y = 13 + }, +/obj/structure/machinery/light/small/built, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/clf_station) +"Oy" = ( +/obj/item/spacecash/c1, +/obj/item/storage/box/matches, +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/transmitter/rotary{ + name = "CLF Outpost"; + phone_category = "CLF"; + phone_id = "CLF Outpost"; + do_not_disturb = 2; + pixel_y = 10 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"OG" = ( +/obj/item/storage/belt/shotgun/full/quackers, +/turf/open/gm/river, +/area/adminlevel/ert_station/clf_station) +"OK" = ( +/obj/structure/stairs/perspective{ + color = "#6b675e"; + dir = 4; + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/strata_grass/layer0, +/area/adminlevel/ert_station/clf_station) +"ON" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/grass/tallgrass/jungle, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"OX" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/obj/structure/largecrate/random/case/double, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"OY" = ( +/turf/open/gm/dirtgrassborder{ + dir = 4; + icon_state = "grassdirt_corner" + }, +/area/adminlevel/ert_station/clf_station) +"OZ" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/obj/structure/largecrate/supply/weapons/flamers, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"Ph" = ( +/turf/open/gm/coast{ + dir = 4; + icon_state = "beachcorner" + }, +/area/adminlevel/ert_station/clf_station) +"Pj" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 8 + }, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"Pr" = ( +/mob/living/simple_animal/cat{ + name = "Edwin" + }, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/adminlevel/ert_station/clf_station) +"PC" = ( +/obj/item/trash/candle, +/obj/structure/surface/table/woodentable/fancy, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"PI" = ( +/obj/effect/decal/cleanable/blood, +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/surgical_tray{ + pixel_y = 8 + }, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/mask/surgical{ + desc = "A sterile mask designed to help prevent the spread of diseases. This one has already been used."; + name = "used sterile mask" + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"PW" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 5 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"Qw" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/device/radio/headset/distress/CLF, +/obj/item/device/radio/headset/distress/CLF/medic, +/obj/structure/machinery/light/small/built, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"Qx" = ( +/turf/open/gm/coast{ + dir = 8 + }, +/area/adminlevel/ert_station/clf_station) +"QA" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/obj/structure/largecrate/supply/explosives/mines, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"QB" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/obj/structure/largecrate/supply/explosives/grenades, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"QE" = ( +/obj/structure/closet/crate, +/obj/item/storage/toolbox/syndicate, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"QG" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/ammo_box/magazine/shotgun/buckshot, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"QV" = ( +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"Re" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/obj/item/bedsheet/green, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"Rg" = ( +/turf/open/gm/dirt, +/area/adminlevel/ert_station/clf_station) +"Ro" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/clothing/glasses/sunglasses/blindfold, +/obj/item/handcuffs, +/obj/item/handcuffs, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"Rr" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/plating{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/adminlevel/ert_station/clf_station) +"Rv" = ( +/obj/structure/curtain/red, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/adminlevel/ert_station/clf_station) +"RB" = ( +/obj/structure/flora/jungle/plantbot1{ + icon_state = "alienplant1"; + light_range = 2 + }, +/turf/open/gm/river, +/area/adminlevel/ert_station/clf_station) +"RR" = ( +/obj/structure/machinery/chem_dispenser/soda/beer{ + density = 0; + pixel_y = 10 + }, +/obj/structure/surface/table/reinforced, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"Sc" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 8 + }, +/obj/structure/machinery/floodlight, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"Sd" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/structure/machinery/light/small/built{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/adminlevel/ert_station/clf_station) +"Sj" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/adminlevel/ert_station/clf_station) +"Sy" = ( +/obj/structure/platform/kutjevo, +/obj/structure/platform/kutjevo{ + dir = 4 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"SD" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"Tk" = ( +/obj/structure/bed/chair, +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/adminlevel/ert_station/clf_station) +"Tr" = ( +/turf/open/gm/dirtgrassborder{ + dir = 1; + icon_state = "grassdirt_corner" + }, +/area/adminlevel/ert_station/clf_station) +"Tt" = ( +/obj/structure/platform/kutjevo, +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "fullgrass_1" + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"Tu" = ( +/turf/open/floor/plating{ + dir = 4; + icon_state = "asteroidwarning" + }, +/area/adminlevel/ert_station/clf_station) +"TM" = ( +/obj/structure/machinery/recharger, +/obj/structure/surface/table/woodentable/poor, +/obj/item/device/defibrillator, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"TN" = ( +/obj/structure/largecrate/random/case, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"TZ" = ( +/obj/structure/flora/bush/ausbushes/grassybush, +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"Ub" = ( +/turf/closed/wall/mineral/sandstone/runed/decor, +/area/adminlevel/ert_station/clf_station) +"Uj" = ( +/obj/structure/closet/crate, +/obj/item/clothing/head/welding, +/obj/item/tool/weldingtool/experimental, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/adminlevel/ert_station/clf_station) +"Um" = ( +/obj/structure/largecrate/random/secure, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"Uo" = ( +/obj/structure/flora/bush/ausbushes/var3, +/turf/open/gm/river, +/area/adminlevel/ert_station/clf_station) +"Uu" = ( +/turf/open/floor/plating{ + icon_state = "asteroidwarning" + }, +/area/adminlevel/ert_station/clf_station) +"UB" = ( +/turf/open/floor/plating{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/adminlevel/ert_station/clf_station) +"Vf" = ( +/obj/structure/largecrate/black_market/confiscated_weaponry, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"Vi" = ( +/obj/structure/flora/bush/ausbushes/reedbush, +/turf/open/gm/coast{ + dir = 8 + }, +/area/adminlevel/ert_station/clf_station) +"Vk" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/prop/helmetgarb/gunoil, +/obj/item/weapon/baton/cattleprod, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"Vm" = ( +/obj/structure/surface/table/reinforced, +/obj/structure/machinery/processor{ + pixel_y = 10 + }, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"VE" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/obj/structure/largecrate/random/barrel/green, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"VO" = ( +/obj/structure/flora/jungle/vines, +/obj/structure/flora/jungle/vines{ + icon_state = "heavy_1" + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"VR" = ( +/obj/structure/platform/kutjevo{ + dir = 1 + }, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"Wb" = ( +/obj/structure/curtain/red, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"Wc" = ( +/obj/structure/prop/wooden_cross{ + pixel_y = 14 + }, +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "fullgrass_1" + }, +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/auto_turf/strata_grass/layer0_mud_alt, +/area/adminlevel/ert_station/clf_station) +"Wo" = ( +/obj/item/weapon/throwing_knife, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"Wq" = ( +/obj/structure/machinery/light/small/built{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"Wz" = ( +/obj/structure/closet/crate, +/obj/item/weapon/baton/cattleprod, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"WA" = ( +/obj/structure/closet/crate, +/obj/item/explosive/grenade/incendiary/molotov, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"WM" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"WO" = ( +/obj/structure/prop/wooden_cross, +/obj/item/clothing/head/helmet/marine/fluff/limo, +/turf/open/gm/dirt, +/area/adminlevel/ert_station/clf_station) +"WU" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/reagent_container/food/drinks/bottle/sake, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"Xc" = ( +/obj/item/clothing/under/colonist/clf, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"Xp" = ( +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/adminlevel/ert_station/clf_station) +"Xv" = ( +/obj/structure/flora/jungle/plantbot1, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"Xz" = ( +/obj/structure/machinery/iv_drip, +/obj/structure/machinery/light/small/built, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"XE" = ( +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/auto_turf/strata_grass/layer0_mud, +/area/adminlevel/ert_station/clf_station) +"Yq" = ( +/obj/structure/flora/grass/tallgrass/jungle/corner{ + dir = 10 + }, +/turf/open/gm/grass, +/area/adminlevel/ert_station/clf_station) +"Yv" = ( +/obj/structure/platform/kutjevo{ + dir = 8 + }, +/obj/structure/flora/jungle/vines, +/turf/open/auto_turf/strata_grass/layer1, +/area/adminlevel/ert_station/clf_station) +"YA" = ( +/obj/structure/machinery/light/small/built, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"YB" = ( +/turf/open/gm/grass{ + icon_state = "grass2" + }, +/area/adminlevel/ert_station/clf_station) +"Ze" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/item/reagent_container/food/drinks/flask/barflask, +/obj/structure/machinery/light/small/built, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/adminlevel/ert_station/clf_station) +"Zj" = ( +/obj/structure/closet/crate, +/obj/item/reagent_container/food/snacks/appletart, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/adminlevel/ert_station/clf_station) +"ZE" = ( +/obj/structure/surface/table/woodentable/poor, +/obj/item/storage/box/beakers{ + pixel_y = 12; + pixel_x = -4 + }, +/obj/item/reagent_container/glass/beaker{ + pixel_y = 4; + pixel_x = 12 + }, +/obj/item/reagent_container/glass/beaker/silver, +/obj/item/reagent_container/glass/beaker/vial/random/good{ + pixel_x = 18; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/adminlevel/ert_station/clf_station) +"ZI" = ( +/turf/closed/wall/wood, +/area/adminlevel/ert_station/clf_station) +"ZO" = ( +/obj/structure/prop/brazier/torch, +/turf/closed/wall/mineral/sandstone/runed, +/area/adminlevel/ert_station/clf_station) +"ZS" = ( +/obj/structure/stairs/perspective{ + color = "#6e6e6e"; + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/strata_grass/layer0, +/area/adminlevel/ert_station/clf_station) + +(1,1,1) = {" +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +KT +KT +KT +KT +KT +KT +KT +KT +"} +(2,1,1) = {" +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +yU +yU +yU +yU +yU +RB +yU +yU +dd +WO +Rg +Rg +Rg +Rg +vI +ZO +LO +ax +KT +KT +KT +KT +KT +KT +KT +KT +"} +(3,1,1) = {" +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +qy +yU +yU +yU +yU +yU +yU +yU +yU +xE +Ph +Rg +Rg +ax +Rg +Rg +Rg +tJ +Ub +ax +KT +KT +KT +KT +KT +KT +KT +KT +"} +(4,1,1) = {" +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +yU +yU +yU +OG +yU +yU +Uo +yU +yU +yU +dd +Rg +Rg +ax +ax +ax +Rg +vI +vI +BC +ax +KT +KT +KT +KT +KT +KT +KT +KT +"} +(5,1,1) = {" +ax +ax +ax +ax +ax +ax +ax +ax +ax +yU +RB +yU +yU +yU +yU +wW +Qx +Qx +Qx +Qx +Qx +Ph +ax +ax +ax +ax +ax +Rg +Rg +iO +Ub +ax +KT +KT +KT +KT +KT +KT +KT +KT +"} +(6,1,1) = {" +ax +ax +ax +ax +ax +ax +ax +yU +yU +yU +yU +yU +wW +Qx +Qx +Ph +ug +Dn +Rg +Rg +ax +ax +ax +ax +ax +ax +ax +Rg +Rg +ZO +LO +ax +KT +KT +KT +KT +KT +KT +KT +KT +"} +(7,1,1) = {" +ax +ax +ax +ax +ax +ax +Vi +Qx +Qx +Qx +Qx +Qx +Ph +Rg +Rg +Dn +dI +Rg +Rg +Rg +dI +Rg +Rg +ax +MI +MI +Rg +Rg +Rg +ax +ax +ax +KT +KT +KT +KT +KT +KT +KT +KT +"} +(8,1,1) = {" +KT +KT +KT +KT +Rg +fX +ug +Rg +Rg +Rg +Rg +Rg +Ie +om +Rg +Ie +Me +Ng +om +Rg +Rg +Dn +Rg +Ie +Ee +om +HI +HI +ax +ax +ax +KT +KT +KT +KT +KT +KT +KT +KT +KT +"} +(9,1,1) = {" +KT +KT +KT +Rg +Dn +Rg +Rg +Ie +om +fX +ug +Ie +OY +Tr +Ee +OY +QV +YB +Tr +Ee +Ee +Ee +Ee +OY +QV +Tr +Ee +MI +ax +ax +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +"} +(10,1,1) = {" +KT +KT +Rg +Rg +Ie +Ee +Ee +me +Ah +AE +AE +lN +la +pp +la +la +pp +pp +la +la +la +la +la +yO +la +Pj +QV +QV +Nk +ax +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +"} +(11,1,1) = {" +KT +DN +Rg +Ie +OY +YB +ql +Jg +yY +Tu +Tu +Tu +Tu +Tu +Tu +Tu +Tu +Tu +Tu +Tu +Tu +Tu +Tu +Tu +az +VR +YB +QV +Nk +iG +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +"} +(12,1,1) = {" +KT +sC +pY +OY +QV +QV +YB +Jg +Uu +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +UB +VR +Aj +Xv +Nk +BB +iG +iG +iG +KT +KT +KT +KT +KT +KT +KT +"} +(13,1,1) = {" +KT +YB +QV +QV +QV +QV +QV +Jg +Uu +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +Hs +uX +UB +Bt +la +la +jj +pk +pk +BB +pk +pk +KT +KT +KT +KT +KT +KT +"} +(14,1,1) = {" +DN +YB +YB +CQ +QV +QV +QV +Jg +Uu +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +UB +oI +oI +oI +eh +gj +ON +pk +ON +pk +pk +KT +KT +KT +KT +KT +"} +(15,1,1) = {" +DN +ts +sN +QV +CQ +wI +ye +Jg +Uu +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +UB +oI +cB +oI +eh +iB +Ez +TZ +eo +pk +pk +ax +ax +ax +KT +KT +"} +(16,1,1) = {" +KT +dM +ye +sN +LN +Nk +GG +Io +Uu +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +UB +oI +oI +Oi +eh +zO +zO +zO +zO +iB +xL +pk +ax +ax +KT +KT +"} +(17,1,1) = {" +ax +dM +ZI +ZI +ZI +Yq +GG +GR +Uu +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +UB +IT +Rr +qb +eh +zO +yH +zO +bI +jZ +iB +Ez +ax +ax +KT +KT +"} +(18,1,1) = {" +ax +GG +ZI +aN +Wb +FD +iB +pE +Uu +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +UB +MD +lT +lT +Ne +zO +zO +zO +zO +zO +zO +zO +zO +DN +KT +KT +"} +(19,1,1) = {" +ax +pk +ZI +ZI +ZI +FD +zO +Ch +Uu +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +UB +eh +bI +jZ +yy +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Jh +WM +KT +KT +"} +(20,1,1) = {" +ax +rD +ZI +ER +Wb +FD +zO +Ch +Uu +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +uX +UB +eh +zO +yy +Sy +ZI +eP +eP +eP +ZI +eP +eP +ZI +dU +WM +KT +"} +(21,1,1) = {" +ax +zO +ZI +ZI +ZI +FD +zO +Ch +yY +GV +GV +GV +GV +GV +GV +GV +GV +GV +GV +GV +GV +GV +GV +GV +az +eh +zO +Ch +ZI +ZI +MQ +mw +mw +LQ +Xp +Xp +ZI +ZI +eh +KT +"} +(22,1,1) = {" +ax +bI +jZ +zO +zO +FD +zO +fo +nM +VE +vE +ey +OZ +Op +Op +QA +bb +OK +OK +OK +aO +QB +xi +Ig +OX +yW +jG +Ch +eP +vx +WU +mw +hE +mt +Xp +Xp +gi +eP +eh +KT +"} +(23,1,1) = {" +ax +zO +zO +zO +EJ +FD +zO +zO +zO +Um +CE +jZ +TN +vA +SD +lI +zO +FD +FD +Dy +EJ +eE +Vf +tt +ki +zO +zO +Ch +eP +jp +Gl +mw +Tk +Ni +Xp +Xp +nC +eP +xS +KT +"} +(24,1,1) = {" +ax +zO +zO +iK +GB +Lu +zO +zO +FD +FD +FD +FD +FD +XE +FD +FD +FD +FD +FD +FD +FD +zO +zO +FD +FD +FD +zO +Ch +eP +Ns +qa +mw +hE +kS +Xp +Xp +gN +eP +xS +KT +"} +(25,1,1) = {" +ax +sv +zO +iK +FD +FD +FD +FD +FD +FD +zO +FD +FD +FD +zO +zO +FD +FD +FD +FD +FD +FD +FD +FD +FD +FD +FD +Eb +ZI +ce +mw +mw +hE +Fj +Wq +Xp +Xp +eP +eh +KT +"} +(26,1,1) = {" +ax +ac +Wo +iK +xJ +zO +FD +FD +zO +zO +yH +zO +EJ +FD +FD +zO +zO +Dy +FD +zO +zO +FD +FD +zO +zO +FD +FD +ZS +Wb +mw +mw +mw +oy +ZI +ZI +rz +rz +ZI +xS +KT +"} +(27,1,1) = {" +ax +zO +yy +Fn +nr +Ba +Ba +oO +Fn +WM +yy +Fn +nr +Ba +Ba +oO +Fn +WM +Iz +Fn +nr +Ba +Ba +oO +Fn +Sc +FD +ZS +Wb +mw +mw +cH +aE +ZI +Of +Xp +Xp +eP +xS +KT +"} +(28,1,1) = {" +DN +zO +Ch +ZI +ZI +Wb +Wb +ZI +ZI +eh +Ch +ZI +ZI +Wb +Wb +ZI +ZI +eh +Ch +ZI +ZI +Wb +Wb +ZI +ZI +eh +yH +jc +zZ +ma +mw +mw +FV +ZI +Vm +NY +hd +eP +xS +KT +"} +(29,1,1) = {" +KT +NV +Ch +ZI +up +mw +mw +YA +ZI +eh +Ch +ZI +at +mw +DF +Ou +ZI +eh +Ch +ZI +zy +pF +mw +tz +ZI +uF +FD +Ch +eP +Ns +Bn +mw +Ns +zZ +mR +Xp +cc +ZI +eh +KT +"} +(30,1,1) = {" +KT +DN +rZ +eP +mw +Vk +lp +pF +eP +eh +Ch +eP +yE +mw +mw +IW +eP +eh +Ch +ZI +ZE +kF +DF +TM +eP +uF +FD +Ch +eP +MQ +mw +aE +Ze +ZI +BP +Xp +Bx +ZI +eh +KT +"} +(31,1,1) = {" +KT +KT +rZ +eP +mw +Sj +mw +mw +eP +eh +Ch +zZ +MP +mw +mw +ow +ZI +eh +Ch +ZI +rm +mw +mw +aA +eP +eh +FD +Ch +eP +WU +hE +Oy +nQ +ZI +ms +Xp +fd +ZI +eh +KT +"} +(32,1,1) = {" +KT +NV +rZ +zZ +mw +mw +mw +mw +ZI +eh +Ch +eP +QE +Xc +DF +WA +eP +eh +Ch +ZI +zH +cH +mw +fx +eP +eh +FD +Ch +ZI +ZI +hE +hO +PC +ZI +RR +Xp +ZI +ZI +eh +KT +"} +(33,1,1) = {" +KT +jG +Ch +ZI +eP +Wb +Rv +eP +ZI +eh +Ch +ZI +at +mw +mw +Ou +ZI +eh +Tt +ZI +PI +MU +mw +ie +ZI +eh +FD +eO +rO +ZI +eP +eP +eP +ZI +ZI +ZI +ZI +MD +Ne +KT +"} +(34,1,1) = {" +KT +zO +Ch +ZI +oc +mw +mw +AV +ZI +eh +Gj +eP +Uj +Pr +mw +Wz +eP +eh +Ch +ZI +MT +MU +IH +Xz +ZI +eh +FD +FD +vQ +lT +lT +lT +lT +lT +Yv +fA +ko +mk +zO +KT +"} +(35,1,1) = {" +KT +zO +Ch +ZI +sK +DF +mw +Bl +ZI +eh +Ch +zZ +MP +xO +nJ +MP +ZI +eh +Ch +ZI +ZI +ZI +Wb +ZI +ZI +eh +EJ +FD +FD +Ag +FD +FD +zO +zO +zO +oN +Ke +VO +NV +KT +"} +(36,1,1) = {" +KT +KT +Ch +ZI +sK +mw +IH +Ck +ZI +eh +Ch +eP +yM +mw +mw +av +eP +eh +Ch +ZI +tG +Sd +NB +aL +ZI +eh +yH +zO +zO +FD +Ag +Ag +FD +zO +yH +NV +oN +NV +oN +KT +"} +(37,1,1) = {" +KT +KT +Ch +ZI +AO +dg +kk +Qw +ZI +eh +Ch +ZI +hL +mw +mw +Ou +ZI +eh +Gj +ZI +tG +NB +NB +aL +ZI +eh +zO +Iz +Fn +nr +Ba +Ba +oO +Fn +WM +Ad +un +VO +KT +KT +"} +(38,1,1) = {" +KT +NV +Ch +ZI +ZI +QG +lX +ZI +ZI +eh +Ch +ZI +ZI +Zj +gc +ZI +ZI +eh +Ch +ZI +fk +cx +xM +ZI +ZI +eh +zO +Ch +ZI +ZI +Wb +Wb +ZI +ZI +eh +zO +NV +KT +KT +KT +"} +(39,1,1) = {" +KT +NV +dY +BQ +ZI +ZI +ZI +ZI +MD +Ne +vQ +BQ +ZI +eP +eP +ZI +MD +Ne +vQ +BQ +ZI +ZI +ZI +ZI +MD +Ne +zO +Ch +ZI +DW +pF +mw +sx +ZI +eh +zO +KT +KT +KT +KT +"} +(40,1,1) = {" +KT +jG +zO +dY +lT +lT +lT +lT +AK +ta +ta +PW +lT +lT +lT +lT +Ne +zO +zO +vQ +BS +bX +BU +lT +Ne +yH +zO +Ch +ZI +LH +mw +DF +Ro +ZI +eh +KT +KT +KT +KT +KT +"} +(41,1,1) = {" +KT +zO +KT +KT +KT +ta +ta +ta +ax +ax +ax +pk +ta +bL +yH +zO +kr +ta +pk +bL +by +by +kr +ta +bL +zO +zO +Ch +ZI +eH +ME +eH +eH +ZI +eh +KT +KT +KT +KT +KT +"} +(42,1,1) = {" +KT +KT +KT +KT +KT +KT +pk +ax +ax +ax +ax +KT +KT +nn +ta +ta +pk +pk +pk +pk +ta +ta +pk +pk +pk +bL +uZ +ks +eH +uO +cH +mw +vm +eH +eh +KT +KT +KT +KT +KT +"} +(43,1,1) = {" +KT +KT +KT +KT +KT +KT +ax +ax +ax +ax +KT +KT +KT +KT +pk +pk +pk +pk +pk +pk +pk +pk +pk +pk +pk +pk +Wc +aR +eH +Re +mw +hr +ne +ZI +ax +KT +KT +KT +KT +KT +"} +(44,1,1) = {" +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +KT +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +KT +KT +KT +"} diff --git a/maps/templates/freelancer_ert_station.dmm b/maps/templates/freelancer_ert_station.dmm new file mode 100644 index 000000000000..44d47c7952ef --- /dev/null +++ b/maps/templates/freelancer_ert_station.dmm @@ -0,0 +1,1722 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/space/basic, +/area/space) +"r" = ( +/obj/docking_port/stationary/emergency_response/idle_port1, +/turf/open/floor/plating, +/area/space) +"t" = ( +/turf/closed/wall/r_wall/unmeltable, +/area/space) +"u" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/plating/almayer, +/area/space) +"x" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/turf/open/floor/plating/almayer, +/area/space) +"E" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/turf/open/floor/plating/almayer, +/area/space) +"U" = ( +/turf/open/floor/plating/almayer, +/area/space) +"V" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/plating/almayer, +/area/space) +"X" = ( +/turf/open/floor/plating, +/area/space) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(7,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(8,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(9,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(10,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(11,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(12,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(13,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(14,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(15,1,1) = {" +a +a +a +a +a +a +a +a +a +t +t +t +t +t +t +t +t +t +t +t +t +t +t +t +t +t +t +t +a +a +a +a +a +a +a +a +a +a +a +a +"} +(16,1,1) = {" +a +a +a +a +a +a +a +a +a +t +U +x +x +x +x +x +x +x +x +x +x +x +x +x +x +x +U +t +a +a +a +a +a +a +a +a +a +a +a +a +"} +(17,1,1) = {" +a +a +a +a +a +a +a +a +a +t +V +X +X +X +X +X +X +X +X +X +X +X +X +X +X +X +E +t +a +a +a +a +a +a +a +a +a +a +a +a +"} +(18,1,1) = {" +a +a +a +a +a +a +a +a +a +t +V +X +X +X +X +X +X +X +X +X +X +X +X +X +r +X +E +t +a +a +a +a +a +a +a +a +a +a +a +a +"} +(19,1,1) = {" +a +a +a +a +a +a +a +a +a +t +V +X +X +X +X +X +X +X +X +X +X +X +X +X +X +X +E +t +a +a +a +a +a +a +a +a +a +a +a +a +"} +(20,1,1) = {" +a +a +a +a +a +a +a +a +a +t +V +X +X +X +X +X +X +X +X +X +X +X +X +X +X +X +E +t +a +a +a +a +a +a +a +a +a +a +a +a +"} +(21,1,1) = {" +a +a +a +a +a +a +a +a +a +t +V +X +X +X +X +X +X +X +X +X +X +X +X +X +X +X +E +t +a +a +a +a +a +a +a +a +a +a +a +a +"} +(22,1,1) = {" +a +a +a +a +a +a +a +a +a +t +V +X +X +X +X +X +X +X +X +X +X +X +X +X +X +X +E +t +a +a +a +a +a +a +a +a +a +a +a +a +"} +(23,1,1) = {" +a +a +a +a +a +a +a +a +a +t +V +X +X +X +X +X +X +X +X +X +X +X +X +X +X +X +E +t +a +a +a +a +a +a +a +a +a +a +a +a +"} +(24,1,1) = {" +a +a +a +a +a +a +a +a +a +t +V +X +X +X +X +X +X +X +X +X +X +X +X +X +X +X +E +t +a +a +a +a +a +a +a +a +a +a +a +a +"} +(25,1,1) = {" +a +a +a +a +a +a +a +a +a +t +V +X +X +X +X +X +X +X +X +X +X +X +X +X +X +X +E +t +a +a +a +a +a +a +a +a +a +a +a +a +"} +(26,1,1) = {" +a +a +a +a +a +a +a +a +a +t +U +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +U +t +a +a +a +a +a +a +a +a +a +a +a +a +"} +(27,1,1) = {" +a +a +a +a +a +a +a +a +a +t +t +t +t +t +t +t +t +t +t +t +t +t +t +t +t +t +t +t +a +a +a +a +a +a +a +a +a +a +a +a +"} +(28,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(29,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(30,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(31,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(32,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(33,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(34,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(35,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(36,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(37,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(38,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(39,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(40,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/templates/twe_ert_station.dmm b/maps/templates/twe_ert_station.dmm new file mode 100644 index 000000000000..78c98b4d16a9 --- /dev/null +++ b/maps/templates/twe_ert_station.dmm @@ -0,0 +1,5116 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ad" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall/almayer, +/area/adminlevel/ert_station/royal_marines_station) +"ai" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"aq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "cargo_arrow" + }, +/area/adminlevel/ert_station/royal_marines_station) +"ar" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/cm_vending/clothing/antag, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"aH" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"aK" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/royal_marines_station) +"aW" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "1,1" + }, +/area/adminlevel/ert_station/royal_marines_station) +"aX" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"bp" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "5,13" + }, +/area/adminlevel/ert_station/royal_marines_station) +"bs" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "3,15" + }, +/area/adminlevel/ert_station/royal_marines_station) +"bG" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "6,12" + }, +/area/adminlevel/ert_station/royal_marines_station) +"bO" = ( +/turf/closed/wall/r_wall/elevator{ + dir = 9 + }, +/area/adminlevel/ert_station/royal_marines_station) +"bS" = ( +/obj/structure/machinery/optable, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"co" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"cu" = ( +/obj/structure/machinery/shower{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/adminlevel/ert_station/royal_marines_station) +"cJ" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"cL" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/closed/shuttle/twe_dropship{ + icon_state = "2,1" + }, +/area/adminlevel/ert_station/royal_marines_station) +"dc" = ( +/turf/open/floor/plating, +/area/adminlevel/ert_station/royal_marines_station) +"dd" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "0,8" + }, +/area/adminlevel/ert_station/royal_marines_station) +"dj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"dm" = ( +/obj/structure/closet/coffin/woodencrate, +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"ds" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"du" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 6; + layer = 3.51 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"dK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"eh" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"ei" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"eu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"ev" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"eV" = ( +/obj/structure/machinery/medical_pod/bodyscanner, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"eX" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"fp" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin7" + }, +/area/adminlevel/ert_station/royal_marines_station) +"ft" = ( +/obj/structure/machinery/bioprinter{ + stored_metal = 1000 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"fx" = ( +/obj/structure/platform{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"fD" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"fJ" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + id = "Delta_1"; + name = "\improper Bathroom" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"fM" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 9 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"gg" = ( +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"gl" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"go" = ( +/obj/structure/platform, +/obj/structure/blocker/invisible_wall, +/turf/closed/shuttle/twe_dropship{ + icon_state = "0,0" + }, +/area/adminlevel/ert_station/royal_marines_station) +"gq" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"gx" = ( +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"gJ" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"gS" = ( +/turf/closed/wall/almayer/outer, +/area/adminlevel/ert_station/royal_marines_station) +"gT" = ( +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"gU" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "1,11" + }, +/area/adminlevel/ert_station/royal_marines_station) +"hm" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "8,7" + }, +/area/adminlevel/ert_station/royal_marines_station) +"hp" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "3,13" + }, +/area/adminlevel/ert_station/royal_marines_station) +"hA" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"hI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"hL" = ( +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/adminlevel/ert_station/royal_marines_station) +"iz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"iE" = ( +/obj/structure/prop/almayer/computers/sensor_computer1{ + density = 0; + pixel_y = 16 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/adminlevel/ert_station/royal_marines_station) +"iG" = ( +/obj/structure/bed/alien, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"iI" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "7,6" + }, +/area/adminlevel/ert_station/royal_marines_station) +"iK" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "7,1" + }, +/area/adminlevel/ert_station/royal_marines_station) +"iO" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/surgical_tray, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"iR" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/plating/kutjevo, +/area/adminlevel/ert_station/royal_marines_station) +"iS" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/obj/structure/blocker/invisible_wall, +/turf/open/void, +/area/adminlevel/ert_station/royal_marines_station) +"ja" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"je" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"jk" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"jl" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"jr" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "4,7" + }, +/area/adminlevel/ert_station/royal_marines_station) +"ju" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin6" + }, +/area/adminlevel/ert_station/royal_marines_station) +"jB" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 6 + }, +/turf/closed/shuttle/twe_dropship{ + icon_state = "2,0" + }, +/area/adminlevel/ert_station/royal_marines_station) +"jD" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/adminlevel/ert_station/royal_marines_station) +"jI" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "8,3" + }, +/area/adminlevel/ert_station/royal_marines_station) +"jL" = ( +/turf/open/space/basic, +/area/space) +"jU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/adminlevel/ert_station/royal_marines_station) +"jV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"jW" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "1,4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"kf" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"kh" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer, +/area/adminlevel/ert_station/royal_marines_station) +"kx" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"ky" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"kH" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"kL" = ( +/obj/structure/machinery/photocopier, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"kO" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/paper_bin/uscm{ + pixel_y = 7 + }, +/obj/item/tool/pen, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"kT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"kW" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"kX" = ( +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"ll" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "cargo_arrow" + }, +/area/adminlevel/ert_station/royal_marines_station) +"lq" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "5,12" + }, +/area/adminlevel/ert_station/royal_marines_station) +"ls" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"lF" = ( +/obj/structure/bed, +/obj/item/bedsheet/medical, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"lG" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"lI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/vending/security, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"lN" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/adminlevel/ert_station/royal_marines_station) +"lW" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/plating/kutjevo, +/area/adminlevel/ert_station/royal_marines_station) +"lX" = ( +/obj/structure/machinery/cryopod{ + layer = 3.1; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/royal_marines_station) +"mb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/prop/almayer/computers/sensor_computer1{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"mc" = ( +/obj/structure/platform, +/obj/structure/blocker/invisible_wall, +/turf/open/void, +/area/adminlevel/ert_station/royal_marines_station) +"mo" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "cargo_arrow" + }, +/area/adminlevel/ert_station/royal_marines_station) +"mw" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "7,4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"mI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/machinery/iv_drip, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"mK" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"nj" = ( +/turf/closed/wall/r_wall/elevator{ + dir = 4 + }, +/area/adminlevel/ert_station/royal_marines_station) +"nl" = ( +/obj/structure/largecrate/random/barrel/green, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"nn" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"nw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"nI" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/machinery/cryopod{ + layer = 3.1; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/royal_marines_station) +"nT" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"nW" = ( +/obj/structure/closet/coffin/woodencrate, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"od" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"ol" = ( +/obj/structure/machinery/door/airlock/almayer/security/colony{ + dir = 8; + name = "\improper Brig Cell" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "RMC_brig_2"; + name = "shutters" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"oo" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/adminlevel/ert_station/royal_marines_station) +"op" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor/plating/kutjevo, +/area/adminlevel/ert_station/royal_marines_station) +"oA" = ( +/obj/structure/platform, +/turf/closed/shuttle/twe_dropship{ + icon_state = "1,0" + }, +/area/adminlevel/ert_station/royal_marines_station) +"oC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"oY" = ( +/obj/structure/machinery/chem_dispenser, +/obj/item/reagent_container/glass/beaker/bluespace, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"oZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/chair/comfy{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"pk" = ( +/obj/structure/machinery/cryopod/right, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/royal_marines_station) +"ps" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "cargo_arrow" + }, +/area/adminlevel/ert_station/royal_marines_station) +"pJ" = ( +/turf/closed/wall/r_wall/elevator{ + dir = 6 + }, +/area/adminlevel/ert_station/royal_marines_station) +"pL" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"pO" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "2,13" + }, +/area/adminlevel/ert_station/royal_marines_station) +"qb" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"qi" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 9 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"qj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/recharger, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"qx" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"qG" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 10; + layer = 3.51 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"qN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"qZ" = ( +/obj/structure/largecrate, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"ri" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/prop/almayer/hangar_stencil, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"ro" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"rv" = ( +/obj/structure/machinery/sleep_console, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"rI" = ( +/turf/closed/wall/r_wall/elevator{ + dir = 5 + }, +/area/adminlevel/ert_station/royal_marines_station) +"rP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/cryopod{ + dir = 1; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/royal_marines_station) +"rS" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"sb" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"su" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/cm_vending/clothing/antag, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"sy" = ( +/turf/open/floor/plating/kutjevo, +/area/adminlevel/ert_station/royal_marines_station) +"sF" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"sI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"sP" = ( +/obj/structure/surface/table/almayer, +/obj/item/roller, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"sR" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/closed/shuttle/twe_dropship{ + icon_state = "6,1" + }, +/area/adminlevel/ert_station/royal_marines_station) +"te" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"tr" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "3,14" + }, +/area/adminlevel/ert_station/royal_marines_station) +"tv" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/machinery/cryopod{ + dir = 1; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/royal_marines_station) +"tw" = ( +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"uc" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "0,4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"uq" = ( +/obj/structure/largecrate/random/barrel, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"uC" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/blocker/invisible_wall, +/turf/open/void, +/area/adminlevel/ert_station/royal_marines_station) +"uE" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"uK" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"uQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"uU" = ( +/obj/structure/largecrate/random/barrel, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"vm" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"vB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk, +/area/adminlevel/ert_station/royal_marines_station) +"vD" = ( +/obj/structure/machinery/door/airlock/almayer/security/colony{ + dir = 8; + name = "\improper Brig Cell" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "RMC_brig_1"; + name = "shutters" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"vR" = ( +/obj/structure/surface/table/almayer, +/obj/item/book/manual/marine_law{ + pixel_x = -3; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"wl" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "2,2" + }, +/area/adminlevel/ert_station/royal_marines_station) +"wt" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/food/snacks/milosoup{ + pixel_y = 10 + }, +/turf/open/floor/almayer, +/area/adminlevel/ert_station/royal_marines_station) +"wF" = ( +/obj/structure/machinery/cryopod/right{ + layer = 3.1; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/royal_marines_station) +"xb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/prop/almayer/computers/sensor_computer2{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"xm" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "0,7" + }, +/area/adminlevel/ert_station/royal_marines_station) +"xw" = ( +/obj/structure/machinery/door/airlock/almayer/medical{ + id_tag = null; + name = "Operating Theatre 1" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"xx" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "redcorner" + }, +/area/adminlevel/ert_station/royal_marines_station) +"xy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"xE" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"xN" = ( +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"xW" = ( +/obj/structure/bed/chair/vehicle{ + dir = 1; + pixel_x = 8 + }, +/obj/structure/bed/chair/vehicle{ + dir = 1; + pixel_x = -8 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/adminlevel/ert_station/royal_marines_station) +"xX" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"yK" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"yQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/adminlevel/ert_station/royal_marines_station) +"yW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/spray/cleaner, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"zk" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"zw" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "7,12" + }, +/area/adminlevel/ert_station/royal_marines_station) +"zL" = ( +/obj/structure/closet/secure_closet/brig{ + name = "Spare Prison Uniforms"; + req_one_access = null + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"zM" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"zY" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Aa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, +/obj/item/device/defibrillator, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Ac" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/chair/comfy{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Ad" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/chem_master, +/obj/item/storage/box/pillbottles{ + pixel_y = 11 + }, +/obj/item/storage/box/pillbottles{ + pixel_y = 11 + }, +/obj/item/storage/box/pillbottles{ + pixel_y = 11 + }, +/obj/item/storage/box/pillbottles{ + pixel_y = 11 + }, +/obj/item/storage/box/pillbottles{ + pixel_y = 11 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Ai" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Am" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Aq" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Au" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"AQ" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "8,6" + }, +/area/adminlevel/ert_station/royal_marines_station) +"AU" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "8,4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Ba" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Bh" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Bk" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"BC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"BV" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin8" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Ci" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin5" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Cj" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "6,2" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Cm" = ( +/obj/item/handcuffs{ + pixel_y = 12 + }, +/obj/structure/surface/table/almayer, +/obj/item/handcuffs, +/obj/item/weapon/baton{ + pixel_x = -12 + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Cu" = ( +/turf/open/void, +/area/adminlevel/ert_station/royal_marines_station) +"CT" = ( +/turf/closed/wall/r_wall/elevator/gears, +/area/adminlevel/ert_station/royal_marines_station) +"Dc" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 29 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Dg" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orangecorner" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Do" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"DA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/mirror{ + pixel_x = -29 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"DS" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "4,15" + }, +/area/adminlevel/ert_station/royal_marines_station) +"DU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/door/airlock/almayer/generic{ + id = "Delta_1"; + name = "\improper Bathroom" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"DV" = ( +/obj/structure/window/framed/almayer, +/turf/open/floor/plating, +/area/adminlevel/ert_station/royal_marines_station) +"Ei" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, +/obj/item/tool/hand_labeler, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"EG" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "8,8" + }, +/area/adminlevel/ert_station/royal_marines_station) +"EJ" = ( +/obj/structure/mirror{ + pixel_x = -29 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"EK" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "7,11" + }, +/area/adminlevel/ert_station/royal_marines_station) +"EX" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Fp" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 9 + }, +/obj/structure/blocker/invisible_wall, +/turf/open/void, +/area/adminlevel/ert_station/royal_marines_station) +"Fw" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"FA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"FN" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"FX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/machinery/cm_vending/gear/antag_guns, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Gd" = ( +/obj/structure/machinery/cryopod, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/royal_marines_station) +"GM" = ( +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"GO" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 5 + }, +/obj/structure/blocker/invisible_wall, +/turf/open/void, +/area/adminlevel/ert_station/royal_marines_station) +"GQ" = ( +/obj/structure/platform, +/obj/structure/blocker/invisible_wall, +/turf/closed/shuttle/twe_dropship{ + icon_state = "8,0" + }, +/area/adminlevel/ert_station/royal_marines_station) +"GX" = ( +/obj/structure/platform, +/turf/closed/shuttle/twe_dropship{ + icon_state = "7,0" + }, +/area/adminlevel/ert_station/royal_marines_station) +"GZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"He" = ( +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/blocker/invisible_wall, +/turf/open/void, +/area/adminlevel/ert_station/royal_marines_station) +"Hg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Hp" = ( +/obj/structure/prop/almayer/cannon_cable_connector{ + pixel_y = 6 + }, +/turf/closed/shuttle/twe_dropship{ + icon_state = "4,10" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Hz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"HD" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/machinery/cm_vending/gear/antag_guns, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"HJ" = ( +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"HM" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "0,6" + }, +/area/adminlevel/ert_station/royal_marines_station) +"HX" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/blocker/invisible_wall, +/turf/open/void, +/area/adminlevel/ert_station/royal_marines_station) +"Id" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Ip" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Ir" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/adminlevel/ert_station/royal_marines_station) +"Iw" = ( +/obj/structure/platform, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 10 + }, +/obj/structure/blocker/invisible_wall, +/turf/open/void, +/area/adminlevel/ert_station/royal_marines_station) +"IC" = ( +/obj/structure/bed/chair/vehicle{ + pixel_x = -8 + }, +/obj/structure/bed/chair/vehicle{ + pixel_x = 8 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/adminlevel/ert_station/royal_marines_station) +"IH" = ( +/obj/structure/machinery/door/airlock/almayer/security/colony{ + dir = 8; + name = "\improper Brig Cell" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "RMC_Pub_brig"; + name = "shutters" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"IK" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/plating/kutjevo, +/area/adminlevel/ert_station/royal_marines_station) +"IQ" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"IY" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Jg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/cm_vending/gear/antag_guns, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"JD" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5; + pixel_x = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"JM" = ( +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"JO" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Kl" = ( +/obj/structure/reagent_dispensers/fueltank/custom, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Ko" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/prop/vehicles/tank/twe{ + layer = 5.1; + pixel_y = -6 + }, +/turf/open/floor/plating/kutjevo, +/area/adminlevel/ert_station/royal_marines_station) +"Ks" = ( +/turf/open/shuttle/elevator/grating, +/area/adminlevel/ert_station/royal_marines_station) +"Ku" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"KD" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/obj/structure/blocker/invisible_wall, +/turf/open/void, +/area/adminlevel/ert_station/royal_marines_station) +"KF" = ( +/turf/open/shuttle/elevator, +/area/adminlevel/ert_station/royal_marines_station) +"KJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Lj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Mb" = ( +/obj/structure/closet/secure_closet/brig{ + name = "Spare Prison Uniforms"; + req_one_access = null + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Mg" = ( +/obj/structure/surface/table/almayer, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = 30 + }, +/obj/item/toy/deck{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/clothing/mask/cigarette{ + pixel_x = -5; + pixel_y = 9 + }, +/obj/item/clothing/mask/cigarette{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/item/clothing/mask/cigarette{ + pixel_x = -5; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Ms" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"MJ" = ( +/turf/open/floor/almayer, +/area/adminlevel/ert_station/royal_marines_station) +"MM" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"MN" = ( +/obj/structure/prop/almayer/cannon_cable_connector{ + pixel_y = -3 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/adminlevel/ert_station/royal_marines_station) +"MQ" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "0,5" + }, +/area/adminlevel/ert_station/royal_marines_station) +"MU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"MX" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"MY" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Nc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Ni" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/closed/shuttle/twe_dropship{ + icon_state = "8,8" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Nl" = ( +/obj/structure/machinery/cm_vending/gear/antag, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Nm" = ( +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Nv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"NE" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "7,3" + }, +/area/adminlevel/ert_station/royal_marines_station) +"NF" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"NV" = ( +/turf/closed/wall/r_wall/elevator, +/area/adminlevel/ert_station/royal_marines_station) +"Oi" = ( +/obj/structure/machinery/medical_pod/sleeper, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Ok" = ( +/obj/structure/machinery/cryopod{ + dir = 1; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Or" = ( +/obj/structure/machinery/cryopod{ + layer = 3.1; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Os" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "1,2" + }, +/area/adminlevel/ert_station/royal_marines_station) +"OA" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"OB" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/syringe_case{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/syringe_case, +/obj/item/storage/syringe_case{ + pixel_x = -3; + pixel_y = -2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"OE" = ( +/obj/structure/largecrate, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"OK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"OO" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "5,14" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Pb" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Pd" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/plating/kutjevo, +/area/adminlevel/ert_station/royal_marines_station) +"Pg" = ( +/turf/open/shuttle/dropship, +/area/adminlevel/ert_station/royal_marines_station) +"Pk" = ( +/obj/structure/machinery/door/airlock/almayer/medical{ + name = "Operating Theatre 2" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Pl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/reagentgrinder{ + pixel_y = 3 + }, +/obj/item/stack/sheet/mineral/phoron{ + amount = 25; + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Px" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "4,14" + }, +/area/adminlevel/ert_station/royal_marines_station) +"PB" = ( +/turf/open/floor/almayer{ + icon_state = "cargo_arrow" + }, +/area/adminlevel/ert_station/royal_marines_station) +"PC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"PD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/door_control/brbutton{ + id = "RMC_Pub_brig"; + pixel_x = -29 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"PL" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/adminlevel/ert_station/royal_marines_station) +"PM" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/platform, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 10; + layer = 3.51 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"PN" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/adminlevel/ert_station/royal_marines_station) +"PS" = ( +/obj/structure/machinery/cm_vending/sorted/medical/chemistry/no_access{ + req_access = null + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"PU" = ( +/obj/structure/machinery/medical_pod/autodoc, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"PY" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Qi" = ( +/obj/structure/machinery/cm_vending/sorted/medical/no_access{ + req_access = null + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Qj" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "RMC_Pub_brig"; + name = "shutters" + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/royal_marines_station) +"QP" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "1,12" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Ri" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/adminlevel/ert_station/royal_marines_station) +"Rq" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/structure/machinery/cm_vending/clothing/antag, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Rw" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/closed/shuttle/twe_dropship{ + icon_state = "0,8" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Ry" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"RF" = ( +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"RH" = ( +/obj/structure/largecrate/machine, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Sb" = ( +/obj/docking_port/stationary/emergency_response/idle_port6, +/turf/open/floor/plating, +/area/adminlevel/ert_station/royal_marines_station) +"Sc" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Sd" = ( +/turf/closed/wall/r_wall/elevator{ + dir = 10 + }, +/area/adminlevel/ert_station/royal_marines_station) +"Sm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Sv" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Sw" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "7,2" + }, +/area/adminlevel/ert_station/royal_marines_station) +"ST" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "0,3" + }, +/area/adminlevel/ert_station/royal_marines_station) +"SY" = ( +/obj/structure/machinery/cm_vending/sorted/medical/chemistry/no_access, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Tf" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/food/snacks/mint, +/turf/open/floor/almayer, +/area/adminlevel/ert_station/royal_marines_station) +"Tm" = ( +/turf/closed/wall/r_wall/elevator{ + dir = 1 + }, +/area/adminlevel/ert_station/royal_marines_station) +"Tx" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/adminlevel/ert_station/royal_marines_station) +"TP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/shower{ + pixel_y = 16 + }, +/turf/open/floor/plating/plating_catwalk, +/area/adminlevel/ert_station/royal_marines_station) +"TY" = ( +/obj/structure/machinery/cm_vending/sorted/marine_food, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Ub" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 10 + }, +/turf/closed/shuttle/twe_dropship{ + icon_state = "6,0" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Uc" = ( +/obj/structure/largecrate/machine, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Uk" = ( +/obj/structure/platform, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 6 + }, +/obj/structure/blocker/invisible_wall, +/turf/open/void, +/area/adminlevel/ert_station/royal_marines_station) +"Ul" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Up" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Uq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Ur" = ( +/turf/open/floor/plating/plating_catwalk, +/area/adminlevel/ert_station/royal_marines_station) +"Ut" = ( +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Uv" = ( +/obj/structure/bed/chair/comfy{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/adminlevel/ert_station/royal_marines_station) +"UF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"UH" = ( +/turf/closed/wall/r_wall/elevator{ + dir = 8 + }, +/area/adminlevel/ert_station/royal_marines_station) +"UJ" = ( +/obj/structure/largecrate/random/barrel/blue, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"UT" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"UV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"UZ" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/food/snacks/fishandchips, +/turf/open/floor/almayer, +/area/adminlevel/ert_station/royal_marines_station) +"Va" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "4,9" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Vt" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Vu" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "5,15" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Vv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/platform, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"VA" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/faxmachine/uscm/brig, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"VF" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform, +/obj/structure/platform_decoration{ + dir = 10 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"VG" = ( +/obj/structure/machinery/cm_vending/sorted/medical/blood, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"VH" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/structure/surface/table/almayer, +/obj/item/storage/box/handcuffs{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/device/flash{ + pixel_y = -8 + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/adminlevel/ert_station/royal_marines_station) +"VL" = ( +/obj/structure/surface/table/almayer, +/obj/item/clothing/suit/straight_jacket, +/obj/item/handcuffs{ + pixel_x = -4; + pixel_y = 1 + }, +/obj/item/handcuffs, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Wa" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp/green{ + pixel_x = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"We" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Wo" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/platform, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 6; + layer = 3.51 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Wt" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 5 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Wx" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/adminlevel/ert_station/royal_marines_station) +"WB" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 9 + }, +/obj/structure/blocker/invisible_wall, +/turf/open/void, +/area/adminlevel/ert_station/royal_marines_station) +"WC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "cargo_arrow" + }, +/area/adminlevel/ert_station/royal_marines_station) +"WD" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/recharger, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"WI" = ( +/obj/structure/closet/secure_closet/brig{ + name = "Spare Prison Uniforms" + }, +/obj/item/clothing/shoes/orange, +/obj/item/clothing/shoes/orange, +/obj/item/clothing/shoes/orange, +/obj/item/clothing/shoes/orange, +/obj/item/clothing/under/color/orange, +/obj/item/clothing/under/color/orange, +/obj/item/clothing/under/color/orange, +/obj/item/clothing/under/color/orange, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"WL" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "6,13" + }, +/area/adminlevel/ert_station/royal_marines_station) +"WM" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"WS" = ( +/turf/closed/wall/almayer, +/area/adminlevel/ert_station/royal_marines_station) +"WW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"WY" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 5 + }, +/obj/structure/blocker/invisible_wall, +/turf/open/void, +/area/adminlevel/ert_station/royal_marines_station) +"WZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Xe" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Xh" = ( +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Xz" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "orange" + }, +/area/adminlevel/ert_station/royal_marines_station) +"XB" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 29 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"XF" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"XN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) +"XT" = ( +/obj/structure/machinery/door_control/brbutton{ + id = "RMC_brig_1"; + pixel_x = 25; + pixel_y = -5 + }, +/obj/structure/machinery/door_control/brbutton{ + id = "RMC_brig_2"; + pixel_x = 25; + pixel_y = 8 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/adminlevel/ert_station/royal_marines_station) +"XV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "cargo_arrow" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Yk" = ( +/obj/structure/machinery/autodoc_console, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"YI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/body_scanconsole, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/adminlevel/ert_station/royal_marines_station) +"YZ" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Zf" = ( +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Zk" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform, +/obj/structure/platform_decoration{ + dir = 6 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Zl" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/adminlevel/ert_station/royal_marines_station) +"Zx" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/box/syringes{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/storage/box/syringes, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/adminlevel/ert_station/royal_marines_station) +"ZA" = ( +/obj/structure/bed/chair/comfy, +/turf/open/floor/almayer, +/area/adminlevel/ert_station/royal_marines_station) +"ZO" = ( +/turf/closed/shuttle/twe_dropship{ + icon_state = "8,5" + }, +/area/adminlevel/ert_station/royal_marines_station) +"ZV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/royal_marines_station) + +(1,1,1) = {" +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +"} +(2,1,1) = {" +jL +jL +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +jL +jL +jL +jL +jL +jL +jL +"} +(3,1,1) = {" +jL +gS +gS +ai +yK +yK +Nl +WS +TY +yK +Sv +Sv +Sv +gS +TY +TY +TY +gS +Sv +Sv +Sv +uq +OE +WS +TP +DA +WZ +ad +ad +WZ +EJ +cu +WS +qj +Ad +oY +SY +gS +gS +jL +jL +jL +jL +jL +jL +"} +(4,1,1) = {" +jL +gS +HD +XF +hL +yK +Nl +WS +TY +XF +oZ +NF +NF +IQ +gJ +gJ +gJ +IQ +NF +Ac +Ac +Xz +Uc +WS +TP +WW +Au +ad +ad +Zf +vm +cu +WS +Hg +je +Zf +xN +eV +gS +gS +gS +gS +gS +gS +jL +"} +(5,1,1) = {" +jL +gS +Jg +yQ +hL +kx +WS +WS +WS +ai +Am +jU +MJ +MJ +MJ +MJ +MJ +MJ +MJ +MJ +jU +GZ +WS +WS +WS +ad +DU +WS +WS +fJ +WS +WS +WS +WS +mI +Zf +Au +YI +Oi +WS +ft +bS +iO +gS +jL +"} +(6,1,1) = {" +jL +gS +Jg +yQ +hL +yK +yK +aK +yK +PB +sb +MJ +MJ +ZA +wt +kh +Uv +ZA +UZ +kh +Uv +dK +yK +aK +yK +Up +gJ +gJ +gJ +kT +MX +yK +aK +Kl +Zf +Zf +Au +Au +rv +WS +xN +Zf +xN +gS +jL +"} +(7,1,1) = {" +jL +gS +su +yQ +hL +hL +yK +mK +yK +PB +sb +MJ +MJ +ZA +kh +kh +Uv +ZA +kh +kh +Uv +RF +yK +mK +yK +sb +Bh +Bh +xE +xE +RF +yK +mK +Zf +Zf +Zf +Au +Au +xN +WS +WS +Pk +WS +gS +jL +"} +(8,1,1) = {" +jL +gS +su +hL +hL +XF +yK +aK +yK +PB +sb +MJ +MJ +ZA +kh +kh +Uv +ZA +kh +Tf +Uv +RF +yK +aK +yK +sb +MJ +MJ +jU +jU +RF +yK +aK +Zf +Au +sP +yW +Au +Zf +jk +Zf +Zf +Bk +gS +jL +"} +(9,1,1) = {" +jL +gS +ar +zk +Do +Nv +WS +WS +WS +ai +sb +MJ +MJ +MJ +MJ +MJ +jU +jU +jU +MJ +MJ +Xe +WS +WS +WS +WM +Bh +Bh +xE +xE +Xe +WS +WS +WS +uQ +Zx +OB +Zf +Zf +Nm +Zf +Zf +UT +gS +jL +"} +(10,1,1) = {" +jL +gS +Ur +Ur +Ip +vB +vB +WS +TY +yK +gx +gq +gq +Bh +Bh +FA +jl +jl +gq +gq +gq +gg +kH +WS +uU +sb +MJ +MJ +jU +MJ +RF +qZ +WS +Aa +je +VG +VG +Au +xN +WS +WS +xw +WS +gS +jL +"} +(11,1,1) = {" +jL +gS +Ok +Ur +Ip +vB +rP +WS +TY +yK +mo +mo +yK +Id +Sv +Sv +yK +uE +yK +yK +uE +kH +kH +WS +mb +Am +Bh +Bh +Bh +Bh +RF +RH +aK +Pl +je +Zf +Zf +Zf +PU +WS +xN +Zf +xN +gS +jL +"} +(12,1,1) = {" +jL +gS +WS +lG +JD +iz +ad +WS +WS +DV +Nm +Pb +DV +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +xb +Am +MJ +MJ +MJ +MJ +dK +XF +aK +Ei +je +Zf +Zf +xN +Yk +WS +ft +bS +iO +gS +jL +"} +(13,1,1) = {" +jL +gS +lX +Ur +MM +Ur +lX +aK +nI +zM +zk +zk +ls +nI +WS +Hz +qN +ri +gT +gJ +IQ +gJ +gJ +aK +XF +Am +MJ +MJ +kh +Ir +aX +XF +aK +PS +xN +Zf +Zf +lF +gS +gS +gS +gS +gS +gS +jL +"} +(14,1,1) = {" +jL +gS +Ur +Ur +Ur +Ur +Ur +mK +Ur +Ur +yK +yK +Ur +Ur +WS +MU +yK +oC +gx +gq +Dg +MJ +MJ +mK +aq +eX +gq +gq +gq +ro +hA +XF +aK +Qi +xN +xN +xN +lF +gS +jL +jL +jL +jL +jL +jL +"} +(15,1,1) = {" +jL +gS +pk +wF +Ok +pk +wF +aK +pk +wF +pk +wF +pk +wF +WS +ds +zk +Ms +ll +ll +Vt +gq +gq +aK +KJ +WC +ll +uE +yK +yK +XF +XF +WS +Qi +xN +ei +ll +ll +gS +jL +jL +jL +jL +jL +jL +"} +(16,1,1) = {" +gS +gS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +Nm +Pb +WS +WS +WS +WS +WS +Nm +Pb +WS +WS +WS +WS +WS +WS +WS +WS +WS +Nm +Pb +gS +gS +jL +jL +jL +jL +jL +"} +(17,1,1) = {" +gS +yK +Ur +Ur +PN +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +PN +Ur +Ur +WY +HX +HX +HX +Iw +Ur +Ur +WY +HX +HX +HX +HX +HX +HX +HX +Iw +Ur +Ur +Sm +gS +jL +jL +jL +jL +jL +"} +(18,1,1) = {" +gS +yK +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +uC +Cu +Cu +Cu +mc +Ur +Ur +uC +dd +xm +uc +ST +Cu +Cu +Cu +mc +Ur +vB +XF +gS +jL +jL +jL +jL +jL +"} +(19,1,1) = {" +gS +yK +aH +Ai +OK +OK +VF +Ur +Wt +OK +VF +Ur +Wt +OK +OK +Ai +qG +yK +Ur +Ur +uC +Cu +Cu +Cu +mc +Ur +Ur +Rw +xm +HM +MQ +uc +ST +Cu +Cu +go +Ur +vB +XF +gS +gS +gS +gS +gS +gS +"} +(20,1,1) = {" +gS +yK +ky +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +Sb +Vv +yK +Ur +Ur +uC +Cu +Cu +QP +gU +Nm +Nm +gU +gU +jW +gU +jW +gU +Os +aW +oA +Ur +vB +XF +bO +NV +NV +NV +Sd +gS +"} +(21,1,1) = {" +gS +xy +ky +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +Wo +yK +Ur +GO +iS +Cu +pO +bG +ju +Zl +Zl +Zl +Zl +rS +Ba +Ba +MN +wl +cL +jB +Ur +vB +hI +CT +KF +Ks +KF +UH +gS +"} +(22,1,1) = {" +gS +XF +ky +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +yK +yK +Ur +uC +bs +tr +hp +lq +Ci +IC +xW +IC +xW +Ci +iR +lW +Ko +YZ +Ur +Ur +Ur +XF +XV +Nm +Ks +Ks +Ks +Nm +gS +"} +(23,1,1) = {" +gS +XF +ky +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +yK +yK +Ur +uC +DS +Px +iE +Nm +Pg +Hp +Va +Va +jr +Ci +op +sy +sy +Nm +Ur +Ur +Ur +XF +PB +Nm +Ks +KF +Ks +Nm +gS +"} +(24,1,1) = {" +gS +XF +ky +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +yK +yK +Ur +uC +Vu +OO +bp +lq +Ci +IC +xW +IC +xW +Ci +IK +Pd +Pd +OA +Ur +Ur +Ur +XF +PB +Nm +Ks +Ks +Ks +Nm +gS +"} +(25,1,1) = {" +gS +ai +ky +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +PM +yK +Ur +Fp +KD +Cu +WL +bG +fp +Zl +Zl +Zl +Zl +BV +Ba +Ba +MN +Cj +sR +Ub +Ur +Ur +kx +CT +KF +Ks +KF +nj +gS +"} +(26,1,1) = {" +gS +yK +ky +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +dc +Vv +yK +Ur +Ur +uC +Cu +Cu +zw +EK +Nm +Nm +NE +NE +mw +NE +iI +NE +Sw +iK +GX +Ur +Ur +yK +rI +Tm +Tm +Tm +pJ +gS +"} +(27,1,1) = {" +gS +yK +qi +fx +PC +PC +Zk +Ur +fM +PC +IY +Ur +fM +PC +PC +fx +du +yK +Ur +Ur +uC +Cu +Cu +Cu +mc +Ur +Ur +Ni +hm +AQ +ZO +AU +jI +Cu +Cu +GQ +Ur +Ur +yK +gS +gS +gS +gS +gS +gS +"} +(28,1,1) = {" +gS +yK +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +uC +Cu +Cu +Cu +mc +Ur +Ur +uC +EG +hm +AU +jI +Cu +Cu +Cu +mc +Ur +Ur +yK +gS +jL +jL +jL +jL +jL +"} +(29,1,1) = {" +gS +nW +Ur +Ur +Ri +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ri +Ur +Ur +WB +He +He +He +Uk +Ur +Ur +WB +He +He +He +He +He +He +He +Uk +Ur +Ur +uE +gS +jL +jL +jL +jL +jL +"} +(30,1,1) = {" +gS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +Nm +Pb +WS +WS +WS +WS +WS +Nm +Pb +WS +WS +WS +WS +WS +WS +WS +WS +WS +Uq +Pb +gS +gS +jL +jL +jL +jL +jL +"} +(31,1,1) = {" +jL +gS +Gd +Or +lX +Gd +Or +aK +Gd +Or +Gd +Or +Gd +Or +WS +Hz +qN +ri +mo +mo +pL +FN +FN +aK +dm +ps +mo +Ul +PY +yK +XF +OE +WS +VA +kO +kL +ps +ps +gS +jL +jL +jL +jL +jL +jL +"} +(32,1,1) = {" +jL +gS +Ur +Ur +Ur +Ur +Ur +mK +Ur +Ur +yK +yK +Ur +Ur +WS +MU +yK +oC +Ut +FN +xx +MJ +MJ +mK +aq +nn +FN +zY +gl +zY +Ku +UJ +aK +WD +Lj +yK +yK +yK +gS +jL +jL +jL +jL +jL +jL +"} +(33,1,1) = {" +jL +gS +Ok +Ur +Sc +Ur +Ok +aK +tv +UV +jV +jV +sI +tv +WS +ds +zk +Ms +HJ +fD +ja +fD +fD +aK +XF +BC +MJ +MJ +MJ +MJ +ev +XF +aK +WD +Xh +Xh +Xh +yK +gS +gS +gS +gS +gS +gS +jL +"} +(34,1,1) = {" +jL +gS +WS +kf +We +sF +WS +WS +WS +DV +Nm +Pb +DV +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +WS +nl +Ry +nT +nT +nT +nT +ev +XF +aK +WI +Xh +Xh +Xh +yK +Qj +cJ +qb +FN +GM +gS +jL +"} +(35,1,1) = {" +jL +gS +lX +Ur +XN +Ur +lX +WS +TY +yK +ll +ll +XF +Sm +XF +XF +XF +Ul +yK +yK +Sm +UJ +UJ +WS +RH +Ry +MJ +MJ +MJ +MJ +ev +XF +aK +WI +Xh +Xh +Xh +XF +Qj +HJ +fD +fD +tw +gS +jL +"} +(36,1,1) = {" +jL +gS +Ur +Ur +XN +Ur +Ur +WS +TY +yK +Ut +xX +xX +te +te +te +FN +FN +FN +FN +FN +Ku +UJ +WS +OE +Ry +nT +nT +nT +nT +kX +UJ +WS +lI +Xh +Xh +Xh +XF +WS +WS +WS +WS +IH +gS +jL +"} +(37,1,1) = {" +jL +gS +Rq +jV +ZV +eu +WS +WS +WS +ai +Ry +MJ +MJ +kh +kh +kh +MJ +MJ +MJ +MJ +MJ +MY +WS +WS +WS +uK +jU +MJ +MJ +MJ +MY +WS +WS +WS +Lj +Xh +Xh +yK +XF +jk +Ut +PD +Ku +gS +jL +"} +(38,1,1) = {" +jL +gS +su +Xh +Xh +XF +yK +aK +yK +PB +Ry +MJ +MJ +kh +kh +kh +MJ +MJ +MJ +MJ +MJ +kX +yK +aK +yK +Ry +Fw +Fw +nT +nT +kX +yK +aK +yK +Xh +Xh +Lj +Xh +yK +Nm +HJ +XT +eh +gS +jL +"} +(39,1,1) = {" +jL +gS +su +Xh +Xh +Lj +yK +mK +yK +PB +Ry +MJ +MJ +Tx +PL +PL +MJ +MJ +MJ +oo +oo +kX +yK +mK +yK +Ry +jU +jU +MJ +MJ +ev +yK +mK +yK +Xh +Lj +Lj +Xh +zL +WS +ol +WS +vD +gS +jL +"} +(40,1,1) = {" +jL +gS +Jg +Lj +Xh +yK +yK +aK +yK +PB +Ry +oo +oo +Wx +jU +MJ +MJ +MJ +MJ +kh +kh +ev +yK +aK +yK +od +co +co +fD +fD +dj +yK +aK +yK +Xh +VH +VL +Xh +Mb +WS +Xh +WS +Xh +gS +jL +"} +(41,1,1) = {" +jL +gS +Jg +Lj +Xh +kx +WS +WS +WS +ai +Ry +kh +kh +lN +jU +MJ +MJ +MJ +MJ +kh +kh +Nc +WS +WS +WS +WS +fJ +ad +WS +fJ +ad +WS +WS +WS +Xh +Cm +jD +yK +Mb +WS +iG +WS +iG +gS +jL +"} +(42,1,1) = {" +jL +gS +FX +XF +Xh +yK +Nl +WS +TY +yK +HJ +EX +EX +qx +co +fD +fD +fD +fD +kW +kW +eh +RH +WS +TP +nw +Au +ad +ad +Au +Aq +cu +WS +vR +Xh +Xh +yK +XF +gS +gS +gS +gS +gS +gS +jL +"} +(43,1,1) = {" +jL +gS +gS +xy +yK +yK +Nl +WS +TY +yK +yK +JO +JO +gS +TY +TY +TY +gS +yK +yK +yK +Uc +qZ +WS +TP +Dc +UF +ad +ad +JM +XB +cu +WS +Wa +Mg +yK +XF +gS +gS +jL +jL +jL +jL +jL +jL +"} +(44,1,1) = {" +jL +jL +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +gS +jL +jL +jL +jL +jL +jL +jL +"} +(45,1,1) = {" +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +jL +"} diff --git a/maps/templates/upp_ert_station.dmm b/maps/templates/upp_ert_station.dmm new file mode 100644 index 000000000000..ae2a8ad40c47 --- /dev/null +++ b/maps/templates/upp_ert_station.dmm @@ -0,0 +1,5240 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ac" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 16; + pixel_y = 13 + }, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"ag" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"am" = ( +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 8 + }, +/area/adminlevel/ert_station/upp_station) +"au" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/turf/open/space, +/area/space) +"ax" = ( +/obj/structure/surface/rack, +/obj/item/tool/weldpack{ + pixel_x = 5 + }, +/obj/item/tool/weldpack{ + pixel_x = -2 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"ay" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/prison{ + dir = 8; + icon_state = "floor_marked" + }, +/area/adminlevel/ert_station/upp_station) +"aA" = ( +/obj/structure/bed/chair/comfy/lime{ + dir = 4 + }, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"aF" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/drinks/drinkingglass{ + pixel_y = 5; + pixel_x = 8 + }, +/obj/item/storage/box/drinkingglasses, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"aH" = ( +/turf/open/floor/strata{ + icon_state = "red1" + }, +/area/adminlevel/ert_station/upp_station) +"aO" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/obj/structure/machinery/cm_vending/sorted/cargo_guns/antag_guns{ + hacked = 1; + name = "\improper Response Team Automated Guns Rack"; + use_power = 0; + use_snowflake_points = 1; + density = 0; + pixel_x = 32 + }, +/turf/open/floor/strata{ + icon_state = "blue3"; + dir = 1 + }, +/area/adminlevel/ert_station/upp_station) +"aP" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/strata{ + icon_state = "green4"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"aS" = ( +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan4" + }, +/area/adminlevel/ert_station/upp_station) +"aV" = ( +/obj/item/stack/catwalk, +/obj/item/stack/catwalk, +/obj/item/tool/wrench, +/obj/structure/disposalpipe/segment, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 16; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -16; + pixel_y = 13 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"aW" = ( +/obj/structure/bed/chair/comfy/lime{ + dir = 8 + }, +/obj/structure/machinery/light/double/blue{ + dir = 4 + }, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 8 + }, +/area/adminlevel/ert_station/upp_station) +"bd" = ( +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"bh" = ( +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"bi" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan, +/obj/structure/machinery/light/double/blue{ + dir = 8 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"bk" = ( +/turf/open/floor/strata{ + dir = 8; + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"bp" = ( +/obj/structure/machinery/shower{ + pixel_y = 21 + }, +/obj/structure/machinery/light/double/blue{ + dir = 8 + }, +/turf/open/floor/strata{ + dir = 8; + icon_state = "white_cyan2" + }, +/area/adminlevel/ert_station/upp_station) +"bM" = ( +/obj/structure/machinery/power/apc/antag{ + dir = 1 + }, +/turf/open/floor/strata{ + icon_state = "green4" + }, +/area/adminlevel/ert_station/upp_station) +"bY" = ( +/obj/structure/surface/table/reinforced, +/obj/structure/machinery/recharger, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"ce" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"cj" = ( +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"cl" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/prison{ + dir = 8; + icon_state = "floor_marked" + }, +/area/adminlevel/ert_station/upp_station) +"cs" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 8 + }, +/area/adminlevel/ert_station/upp_station) +"cC" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/closet/fireaxecabinet{ + pixel_y = 29 + }, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"cJ" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, +/obj/structure/largecrate/random/secure, +/turf/open/floor/prison{ + dir = 8; + icon_state = "floor_marked" + }, +/area/adminlevel/ert_station/upp_station) +"cO" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"da" = ( +/turf/closed/shuttle/elevator{ + dir = 5 + }, +/area/adminlevel/ert_station/upp_station) +"dh" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/snacks/upp{ + pixel_y = 1; + pixel_x = -3 + }, +/obj/item/reagent_container/food/snacks/upp{ + pixel_y = 10; + pixel_x = 2 + }, +/obj/item/reagent_container/food/snacks/upp{ + pixel_y = 4; + pixel_x = 3 + }, +/obj/item/reagent_container/food/drinks/bottle/vodka{ + pixel_y = 9; + pixel_x = -7 + }, +/obj/structure/machinery/light/double/blue{ + dir = 4 + }, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/adminlevel/ert_station/upp_station) +"di" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 8 + }, +/obj/structure/platform_decoration/kutjevo, +/turf/open/space, +/area/space) +"dz" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"dB" = ( +/turf/open/floor/strata{ + icon_state = "green4" + }, +/area/adminlevel/ert_station/upp_station) +"dH" = ( +/obj/structure/largecrate/random/secure, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"dK" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/marine/colony{ + name = "Station Hallway" + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"dL" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/toy/dice{ + pixel_x = 10; + pixel_y = 9 + }, +/obj/item/toy/deck{ + pixel_x = -6; + pixel_y = 5 + }, +/turf/open/floor/strata{ + icon_state = "green4"; + dir = 1 + }, +/area/adminlevel/ert_station/upp_station) +"dW" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"eo" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 8 + }, +/area/adminlevel/ert_station/upp_station) +"ev" = ( +/obj/item/tool/wet_sign, +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/strata{ + dir = 2; + icon_state = "red3" + }, +/area/adminlevel/ert_station/upp_station) +"eT" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/drinks/bottle/vodka{ + pixel_y = 4; + pixel_x = 5 + }, +/obj/item/reagent_container/food/drinks/flask/canteen{ + pixel_y = 7; + pixel_x = -5 + }, +/obj/item/reagent_container/food/drinks/bottle/vodka, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"eU" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 6 + }, +/turf/open/floor/prison{ + icon_state = "darkyellowfull2" + }, +/area/adminlevel/ert_station/upp_station) +"eV" = ( +/obj/structure/platform_decoration/kutjevo, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"eX" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 18 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 18 + }, +/turf/open/floor/strata{ + icon_state = "green4"; + dir = 1 + }, +/area/adminlevel/ert_station/upp_station) +"eY" = ( +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/turf/open/space, +/area/space) +"fc" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 4 + }, +/turf/open/space/basic, +/area/space) +"fd" = ( +/obj/structure/largecrate/random/barrel/green, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 16; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"fi" = ( +/obj/structure/machinery/door/airlock/almayer/medical/colony{ + name = "\improper Morgue" + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"fk" = ( +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/turf/open/floor/strata{ + icon_state = "purp3"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"fA" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/manifold/hidden/cyan, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"fE" = ( +/obj/structure/target{ + name = "punching bag" + }, +/turf/open/asphalt/cement{ + icon_state = "cement4" + }, +/area/adminlevel/ert_station/upp_station) +"fK" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1 + }, +/turf/open/floor/strata{ + icon_state = "green4"; + dir = 8 + }, +/area/adminlevel/ert_station/upp_station) +"fM" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"fR" = ( +/obj/item/reagent_container/glass/bucket/janibucket{ + pixel_x = -1; + pixel_y = 13 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"fW" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"ge" = ( +/obj/structure/closet/boxinggloves, +/turf/open/asphalt/cement{ + icon_state = "cement9" + }, +/area/adminlevel/ert_station/upp_station) +"gf" = ( +/obj/structure/pipes/standard/simple/hidden/cyan, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"gt" = ( +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 5 + }, +/turf/open/floor/strata{ + dir = 2; + icon_state = "white_cyan4" + }, +/area/adminlevel/ert_station/upp_station) +"gx" = ( +/obj/structure/platform_decoration/strata/metal{ + dir = 1 + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 10 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"he" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"hg" = ( +/obj/structure/machinery/body_scanconsole, +/turf/open/floor/strata{ + dir = 1; + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"hj" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/marine/colony{ + name = "Shuttle Bay" + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"hA" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 8 + }, +/obj/structure/platform/kutjevo/smooth, +/turf/open/space/basic, +/area/space) +"hF" = ( +/turf/open/floor/strata{ + icon_state = "green4"; + dir = 8 + }, +/area/adminlevel/ert_station/upp_station) +"hM" = ( +/turf/open/floor/strata{ + icon_state = "damaged3" + }, +/area/adminlevel/ert_station/upp_station) +"hO" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/adminlevel/ert_station/upp_station) +"hV" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 10 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"ia" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"ie" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_y = 13; + pixel_x = -10 + }, +/obj/structure/machinery/portable_atmospherics/canister/phoron, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/upp_station) +"iB" = ( +/turf/open/floor/strata{ + dir = 10; + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"iJ" = ( +/obj/structure/closet/secure_closet/brig{ + name = "Spare Prison Uniforms"; + req_one_access = null + }, +/turf/open/floor/strata{ + icon_state = "red1" + }, +/area/adminlevel/ert_station/upp_station) +"iM" = ( +/obj/structure/machinery/door/airlock/almayer/security/colony{ + dir = 8; + name = "\improper Brig Cell" + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"iV" = ( +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 9 + }, +/area/adminlevel/ert_station/upp_station) +"jc" = ( +/turf/open/floor/strata{ + dir = 8; + icon_state = "red3" + }, +/area/adminlevel/ert_station/upp_station) +"jg" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/communications{ + dir = 4 + }, +/turf/open/floor/strata{ + icon_state = "green4"; + dir = 8 + }, +/area/adminlevel/ert_station/upp_station) +"jh" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/box/bodybags, +/turf/open/floor/strata{ + dir = 10; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"jt" = ( +/obj/structure/lattice, +/obj/structure/platform_decoration/kutjevo, +/turf/open/space/basic, +/area/space) +"jH" = ( +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 10 + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"kc" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"kf" = ( +/turf/open/floor/strata{ + dir = 9; + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"ks" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8 + }, +/turf/open/floor/strata{ + icon_state = "green4"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"kF" = ( +/obj/structure/reagent_dispensers/water_cooler/walk_past{ + pixel_y = 18 + }, +/obj/structure/barricade/handrail/wire{ + dir = 8 + }, +/turf/open/asphalt/cement{ + icon_state = "cement2" + }, +/area/adminlevel/ert_station/upp_station) +"kN" = ( +/obj/item/tool/weldingtool, +/obj/item/clothing/glasses/welding, +/obj/structure/machinery/light/double/blue{ + dir = 8 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"kS" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, +/turf/open/floor/strata{ + icon_state = "purp3"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"kT" = ( +/obj/structure/surface/rack, +/obj/item/clothing/gloves/yellow, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"lb" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan, +/obj/structure/machinery/light/double/blue{ + dir = 4 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"le" = ( +/obj/structure/machinery/door_control{ + pixel_y = 6; + name = "Command Shutters Button"; + id = "upp_command" + }, +/turf/closed/wall/strata_outpost/reinforced, +/area/adminlevel/ert_station/upp_station) +"lm" = ( +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/obj/structure/largecrate/black_market/confiscated_weaponry, +/turf/open/floor/prison{ + dir = 8; + icon_state = "floor_marked" + }, +/area/adminlevel/ert_station/upp_station) +"lo" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -16; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 16; + pixel_y = 13 + }, +/obj/structure/pipes/standard/simple/hidden/cyan, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"lp" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan4" + }, +/area/adminlevel/ert_station/upp_station) +"lw" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/facepaint/black, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/adminlevel/ert_station/upp_station) +"mb" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -1 + }, +/obj/structure/closet/crate/ammo/alt, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/upp_station) +"me" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/clothing/suit/straight_jacket, +/obj/item/handcuffs{ + pixel_x = -4; + pixel_y = 1 + }, +/obj/item/handcuffs, +/turf/open/floor/strata{ + icon_state = "red1" + }, +/area/adminlevel/ert_station/upp_station) +"mf" = ( +/obj/structure/machinery/cm_vending/sorted/medical/blood{ + req_access = null + }, +/turf/open/floor/strata{ + dir = 1; + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"mq" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"mr" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/vents/pump{ + dir = 1; + id_tag = "mining_outpost_pump" + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"mz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/obj/structure/machinery/light/double/blue{ + dir = 1 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"mG" = ( +/obj/structure/surface/table/reinforced/black, +/obj/structure/transmitter/rotary{ + name = "UPP Station"; + phone_category = "UPP"; + phone_id = "UPP Station"; + do_not_disturb = 2 + }, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/adminlevel/ert_station/upp_station) +"mJ" = ( +/obj/structure/lattice, +/obj/structure/platform/kutjevo/smooth, +/turf/open/space/basic, +/area/space) +"mP" = ( +/obj/structure/machinery/computer/cameras/almayer_network/vehicle{ + dir = 1 + }, +/obj/structure/surface/table/reinforced/almayer_B, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"ne" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/strata{ + icon_state = "orange_icorner"; + dir = 1 + }, +/area/adminlevel/ert_station/upp_station) +"nh" = ( +/obj/structure/surface/table/reinforced/black, +/obj/item/ashtray/glass, +/obj/item/trash/cigbutt/cigarbutt{ + pixel_x = 6; + pixel_y = 13 + }, +/obj/item/trash/cigbutt{ + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/adminlevel/ert_station/upp_station) +"nC" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 6 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"nO" = ( +/obj/structure/bed/chair, +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"om" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/adminlevel/ert_station/upp_station) +"ow" = ( +/obj/item/stack/catwalk, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"oz" = ( +/turf/open/floor/strata{ + dir = 4; + icon_state = "cyan1" + }, +/area/adminlevel/ert_station/upp_station) +"oJ" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13; + icon_state = "abed" + }, +/obj/structure/bed{ + can_buckle = 0; + icon_state = "abed" + }, +/obj/item/bedsheet/brown{ + pixel_y = 13 + }, +/obj/item/bedsheet/brown{ + layer = 3.2 + }, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/adminlevel/ert_station/upp_station) +"oK" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/colony, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"oP" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"oS" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 8 + }, +/turf/open/space/basic, +/area/space) +"pb" = ( +/turf/open/floor/strata{ + dir = 2; + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"pc" = ( +/obj/structure/bed/chair/comfy/lime{ + dir = 4 + }, +/obj/structure/machinery/light/double/blue{ + dir = 8 + }, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"pe" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"po" = ( +/turf/closed/wall/strata_outpost/reinforced, +/area/adminlevel/ert_station/upp_station) +"pu" = ( +/obj/effect/decal/cleanable/blood{ + layer = 3 + }, +/turf/open/asphalt/cement, +/area/adminlevel/ert_station/upp_station) +"pv" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"pK" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/turf/open/floor/plating/prison, +/area/space) +"pN" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"qd" = ( +/obj/structure/machinery/bioprinter{ + stored_metal = 1000 + }, +/turf/open/floor/strata{ + dir = 1; + icon_state = "white_cyan4" + }, +/area/adminlevel/ert_station/upp_station) +"qi" = ( +/obj/structure/bed/chair/office/light{ + dir = 8 + }, +/turf/open/floor/strata{ + icon_state = "green3" + }, +/area/adminlevel/ert_station/upp_station) +"qA" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/platform_decoration/strata/metal, +/obj/structure/curtain/open/black, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"qF" = ( +/obj/structure/machinery/cm_vending/sorted/medical/no_access{ + req_access = null + }, +/turf/open/floor/strata{ + dir = 1; + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"qH" = ( +/turf/open/floor/strata{ + icon_state = "floorscorched2" + }, +/area/adminlevel/ert_station/upp_station) +"qM" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ + dir = 1 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"qU" = ( +/turf/closed/shuttle/elevator, +/area/adminlevel/ert_station/upp_station) +"qY" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4 + }, +/turf/open/floor/strata{ + dir = 1; + icon_state = "red3" + }, +/area/adminlevel/ert_station/upp_station) +"rb" = ( +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"rf" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/bedsheetbin{ + pixel_y = 6 + }, +/obj/structure/machinery/light/double/blue{ + dir = 8 + }, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/adminlevel/ert_station/upp_station) +"rk" = ( +/obj/structure/machinery/cryopod/right{ + pixel_y = 6 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "floor_marked" + }, +/area/adminlevel/ert_station/upp_station) +"rr" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 9 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"rs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"ry" = ( +/obj/structure/machinery/medical_pod/bodyscanner, +/turf/open/floor/strata{ + dir = 1; + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"rC" = ( +/obj/structure/closet/crate/ammo, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/upp_station) +"rL" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8 + }, +/obj/structure/machinery/floodlight, +/turf/open/floor/prison{ + dir = 8; + icon_state = "floor_marked" + }, +/area/adminlevel/ert_station/upp_station) +"rT" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/machinery/cm_vending/clothing/antag{ + name = "\improper Response Team Automated Equipment Rack"; + pixel_y = -32; + density = 0 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"rX" = ( +/obj/structure/machinery/cm_vending/gear/antag{ + hacked = 1; + name = "\improper Response Team Automated Gear Rack"; + use_snowflake_points = 1; + pixel_y = -32; + density = 0 + }, +/turf/open/floor/strata{ + dir = 8; + icon_state = "blue3" + }, +/area/adminlevel/ert_station/upp_station) +"sb" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 9 + }, +/turf/open/floor/prison{ + icon_state = "darkyellowfull2" + }, +/area/adminlevel/ert_station/upp_station) +"sk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/tool/pickaxe/diamonddrill, +/turf/open/floor/plating{ + icon_state = "platebot" + }, +/area/adminlevel/ert_station/upp_station) +"sr" = ( +/obj/structure/lattice, +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/turf/open/space/basic, +/area/space) +"sy" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/strata{ + icon_state = "damaged3" + }, +/area/adminlevel/ert_station/upp_station) +"sz" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8 + }, +/turf/open/floor/strata{ + icon_state = "floorscorched2" + }, +/area/adminlevel/ert_station/upp_station) +"sA" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"sC" = ( +/obj/structure/pipes/vents/pump, +/turf/open/asphalt/cement, +/area/adminlevel/ert_station/upp_station) +"sG" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan, +/obj/structure/machinery/light/double/blue{ + dir = 8 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"sI" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -1 + }, +/obj/structure/closet/crate/trashcart, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/upp_station) +"sK" = ( +/obj/structure/machinery/optable, +/obj/item/tank/anesthetic, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/strata{ + icon_state = "white_cyan2" + }, +/area/adminlevel/ert_station/upp_station) +"sU" = ( +/obj/structure/window/framed/strata, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"sY" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 18 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 18 + }, +/obj/structure/machinery/light/double/blue{ + dir = 4 + }, +/turf/open/floor/strata{ + icon_state = "green4"; + dir = 1 + }, +/area/adminlevel/ert_station/upp_station) +"tr" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"tv" = ( +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"tx" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 5 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"tF" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 8 + }, +/area/adminlevel/ert_station/upp_station) +"tG" = ( +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"ue" = ( +/obj/structure/lattice, +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/turf/open/space/basic, +/area/space) +"uf" = ( +/obj/structure/machinery/blackbox_recorder, +/turf/open/floor/strata{ + icon_state = "green1" + }, +/area/adminlevel/ert_station/upp_station) +"uj" = ( +/turf/open/floor/strata{ + icon_state = "white_cyan2" + }, +/area/adminlevel/ert_station/upp_station) +"uE" = ( +/obj/structure/platform_decoration/strata/metal, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"uI" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"uL" = ( +/obj/structure/platform/kutjevo/smooth, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"uP" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"uW" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"va" = ( +/obj/structure/closet/crate/ammo/alt/flame, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/upp_station) +"ve" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "floor_marked" + }, +/area/adminlevel/ert_station/upp_station) +"vn" = ( +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"vo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 6 + }, +/turf/open/floor/prison{ + icon_state = "darkyellowfull2" + }, +/area/adminlevel/ert_station/upp_station) +"vw" = ( +/turf/open/floor/strata{ + dir = 1; + icon_state = "red3" + }, +/area/adminlevel/ert_station/upp_station) +"vH" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/trash/plate, +/obj/item/reagent_container/food/snacks/upp, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"vK" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"vS" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space) +"vY" = ( +/obj/structure/machinery/washing_machine, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"vZ" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/platform/kutjevo/smooth, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/turf/open/space/basic, +/area/space) +"we" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"wr" = ( +/obj/structure/platform/strata/metal{ + dir = 4 + }, +/obj/effect/decal/strata_decals/catwalk/prison{ + layer = 2.2 + }, +/obj/structure/stairs/perspective{ + color = "#6e6e6e"; + dir = 8; + icon_state = "p_stair_sn_full_cap"; + layer = 2.5 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"ws" = ( +/turf/open/floor{ + desc = "A sophisticated device that captures and converts light from the system's star into energy for the station."; + icon_state = "solarpanel"; + name = "solarpanel" + }, +/area/space) +"wu" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"wA" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 + }, +/obj/structure/machinery/door_control/brbutton{ + pixel_y = 26; + id = "funny"; + name = "Elevator Button"; + desc = "A remote control-switch for the elevator. This one seems broken." + }, +/obj/structure/closet/crate/ammo, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/upp_station) +"wS" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/turf/open/floor/strata{ + icon_state = "green3" + }, +/area/adminlevel/ert_station/upp_station) +"wY" = ( +/obj/structure/pipes/standard/simple/hidden/cyan, +/obj/structure/machinery/door/airlock/multi_tile/almayer/marine/colony{ + name = "Station Hallway" + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"xj" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"xl" = ( +/obj/structure/surface/rack, +/obj/structure/machinery/light/double/blue{ + dir = 8 + }, +/obj/item/storage/toolbox/electrical, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"xo" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"xy" = ( +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/adminlevel/ert_station/upp_station) +"xF" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/tool/crowbar, +/obj/item/storage/bible, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"ya" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"ym" = ( +/turf/closed/shuttle/elevator/gears, +/area/adminlevel/ert_station/upp_station) +"yn" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks{ + density = 0; + pixel_x = -9; + pixel_y = 19 + }, +/turf/open/floor/strata{ + icon_state = "green4" + }, +/area/adminlevel/ert_station/upp_station) +"yt" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/turf/open/space, +/area/space) +"yH" = ( +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"zr" = ( +/obj/structure/machinery/photocopier, +/turf/open/floor/strata{ + icon_state = "green1" + }, +/area/adminlevel/ert_station/upp_station) +"zs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"zx" = ( +/obj/structure/machinery/chem_master, +/turf/open/floor/strata{ + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"zK" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"zL" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"zQ" = ( +/obj/structure/prop/almayer/missile_tube{ + icon_state = "missiletubesouth"; + name = "\improper AT-87 ASAT launcher system"; + desc = "Cold launch tubes that can fire a few varieties of missiles out of them, the most common being the AT-87 ASAT 11K223 ?Spigot? missile used against satellites and other spacecraft and the 11K221 ?Konkurs? missile which is used for ground attack." + }, +/turf/open/floor/strata{ + dir = 10; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"zX" = ( +/obj/structure/bed/chair/comfy/lime{ + dir = 8 + }, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 8 + }, +/area/adminlevel/ert_station/upp_station) +"zY" = ( +/obj/structure/bed/chair, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 8 + }, +/area/adminlevel/ert_station/upp_station) +"Ae" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/attachable/bayonet/upp{ + pixel_y = 9; + pixel_x = 4 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"Ak" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/recharger, +/obj/item/device/defibrillator, +/turf/open/floor/strata{ + dir = 1; + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"Au" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 6 + }, +/turf/open/floor/greengrid, +/area/adminlevel/ert_station/upp_station) +"Ay" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 5 + }, +/turf/open/floor/greengrid, +/area/adminlevel/ert_station/upp_station) +"AI" = ( +/obj/structure/closet/crate, +/turf/open/floor/strata{ + dir = 4; + icon_state = "orange_edge" + }, +/area/adminlevel/ert_station/upp_station) +"AN" = ( +/turf/open/space/basic, +/area/space) +"AU" = ( +/obj/structure/monorail{ + dir = 9; + name = "launch track" + }, +/turf/open/space/basic, +/area/space) +"Bc" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 9 + }, +/turf/open/floor/prison{ + icon_state = "darkyellowfull2" + }, +/area/adminlevel/ert_station/upp_station) +"Be" = ( +/obj/structure/filingcabinet{ + layer = 2.9 + }, +/turf/open/floor/strata{ + icon_state = "green1" + }, +/area/adminlevel/ert_station/upp_station) +"Bp" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/manifold/hidden/cyan, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Bq" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/manifold/hidden/cyan{ + dir = 8 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Bt" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/manifold/hidden/cyan{ + dir = 1 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Bw" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/turf/open/space/basic, +/area/space) +"BH" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/manifold/fourway/hidden/cyan, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"BX" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 16; + pixel_y = 13 + }, +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"Ce" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/obj/item/tool/mop{ + pixel_x = -6; + pixel_y = 24 + }, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/adminlevel/ert_station/upp_station) +"Cp" = ( +/turf/closed/wall/rock/brown, +/area/adminlevel/ert_station/upp_station) +"Cu" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor/glass/colony{ + name = "Engineering"; + dir = 1 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"Cy" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13; + icon_state = "abed" + }, +/obj/structure/bed{ + can_buckle = 0; + icon_state = "abed" + }, +/obj/item/bedsheet/brown{ + pixel_y = 13 + }, +/obj/item/bedsheet/brown{ + layer = 3.2 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/upp_station) +"CG" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"CI" = ( +/turf/open/floor/strata{ + dir = 4; + icon_state = "red3" + }, +/area/adminlevel/ert_station/upp_station) +"CM" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor/colony{ + name = "\improper Elevator Airlock"; + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/upp_station) +"CW" = ( +/obj/structure/machinery/cm_vending/sorted/medical/chemistry/no_access{ + req_access = null + }, +/obj/structure/machinery/light/double/blue{ + dir = 1 + }, +/turf/open/floor/strata{ + dir = 1; + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"Df" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/strata{ + icon_state = "green4"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"Dv" = ( +/turf/closed/wall/strata_outpost, +/area/adminlevel/ert_station/upp_station) +"DG" = ( +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/turf/open/floor/strata{ + dir = 9; + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"DK" = ( +/obj/structure/machinery/computer/emails{ + dir = 1 + }, +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"Eg" = ( +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 9 + }, +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/adminlevel/ert_station/upp_station) +"El" = ( +/turf/closed/wall/strata_outpost/reinforced/hull, +/area/adminlevel/ert_station/upp_station) +"EA" = ( +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 8 + }, +/area/adminlevel/ert_station/upp_station) +"ES" = ( +/obj/structure/window/framed/strata/reinforced, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"EZ" = ( +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/upp_station) +"Fh" = ( +/obj/structure/machinery/cm_vending/sorted/marine_food{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"Fj" = ( +/obj/structure/surface/table/reinforced/black, +/obj/item/folder/black, +/obj/item/tool/pen, +/turf/open/floor/strata{ + icon_state = "green3" + }, +/area/adminlevel/ert_station/upp_station) +"FA" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"FF" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/platform/strata/metal, +/obj/structure/pipes/standard/manifold/hidden/cyan, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"FI" = ( +/obj/structure/bed/chair/comfy/black, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"FJ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"FL" = ( +/obj/structure/surface/table/reinforced/black, +/obj/item/device/megaphone, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 1 + }, +/area/adminlevel/ert_station/upp_station) +"FP" = ( +/obj/structure/morgue{ + dir = 8 + }, +/turf/open/floor/strata{ + dir = 10; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"Ga" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/manifold/hidden/cyan{ + dir = 4 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Gb" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan, +/turf/open/floor/greengrid, +/area/adminlevel/ert_station/upp_station) +"Gl" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + layer = 2.5 + }, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 9 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Gt" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Gu" = ( +/obj/structure/lattice, +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/turf/open/space/basic, +/area/space) +"Gw" = ( +/turf/open/floor/strata{ + dir = 2; + icon_state = "red3" + }, +/area/adminlevel/ert_station/upp_station) +"GE" = ( +/turf/closed/shuttle/elevator{ + dir = 6 + }, +/area/adminlevel/ert_station/upp_station) +"GI" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"GL" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage/antag, +/turf/open/floor/greengrid, +/area/adminlevel/ert_station/upp_station) +"GN" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/platform/strata/metal, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Hb" = ( +/obj/structure/largecrate/supply, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"Hc" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 4 + }, +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space) +"Hl" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 6 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Hp" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/strata{ + icon_state = "red4"; + dir = 8 + }, +/area/adminlevel/ert_station/upp_station) +"Hx" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/machinery/cm_vending/sorted/tech/comp_storage/antag, +/turf/open/floor/greengrid, +/area/adminlevel/ert_station/upp_station) +"HR" = ( +/obj/structure/platform/strata/metal, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"Is" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"IC" = ( +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/platform/kutjevo/smooth, +/turf/open/space, +/area/space) +"IK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"IQ" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/obj/structure/largecrate/black_market/confiscated_equipment, +/turf/open/floor/prison{ + dir = 8; + icon_state = "floor_marked" + }, +/area/adminlevel/ert_station/upp_station) +"IT" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/strata{ + dir = 2; + icon_state = "red3" + }, +/area/adminlevel/ert_station/upp_station) +"IV" = ( +/obj/structure/bedsheetbin{ + icon_state = "linenbin-empty"; + name = "solar lattice"; + pixel_y = 6 + }, +/turf/open/floor/almayer_hull, +/area/space) +"IX" = ( +/obj/structure/surface/table/reinforced, +/obj/structure/machinery/processor{ + pixel_y = 10 + }, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"Jc" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/clothing/mask/rebreather/scarf, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 2 + }, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"Jj" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 8 + }, +/area/adminlevel/ert_station/upp_station) +"Jl" = ( +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/floor/strata{ + dir = 8; + icon_state = "white_cyan2" + }, +/area/adminlevel/ert_station/upp_station) +"Jp" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan, +/obj/structure/machinery/light/double/blue{ + dir = 4 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Js" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/strata{ + dir = 4; + icon_state = "cyan1" + }, +/area/adminlevel/ert_station/upp_station) +"Jz" = ( +/obj/structure/pipes/standard/simple/hidden/cyan, +/obj/effect/decal/strata_decals/catwalk/prison, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"JB" = ( +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/adminlevel/ert_station/upp_station) +"JV" = ( +/obj/item/tool/wet_sign, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/adminlevel/ert_station/upp_station) +"JX" = ( +/obj/structure/closet/boxinggloves, +/turf/open/asphalt/cement{ + icon_state = "cement1"; + dir = 1 + }, +/area/adminlevel/ert_station/upp_station) +"JZ" = ( +/obj/structure/surface/table/reinforced, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"Kb" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1 + }, +/turf/open/floor/strata{ + icon_state = "green3" + }, +/area/adminlevel/ert_station/upp_station) +"Kj" = ( +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/obj/structure/platform/kutjevo/smooth, +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/turf/open/floor/almayer_hull, +/area/space) +"Kn" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/asphalt/cement, +/area/adminlevel/ert_station/upp_station) +"Kq" = ( +/obj/structure/machinery/door/poddoor/almayer/open{ + name = "Toilet Shutters"; + id = "upp_toilet" + }, +/obj/structure/window/framed/strata/hull, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Kr" = ( +/obj/item/stack/catwalk, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Ks" = ( +/obj/structure/barricade/handrail/wire{ + dir = 8 + }, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/adminlevel/ert_station/upp_station) +"KF" = ( +/obj/structure/morgue, +/turf/open/floor/strata{ + dir = 10; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"KL" = ( +/turf/open/floor/strata{ + dir = 5; + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"KX" = ( +/obj/structure/surface/table/reinforced, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"Lg" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 5 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Lk" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor/glass/colony{ + name = "Engineering" + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"Ln" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/strata{ + icon_state = "orange_icorner"; + dir = 8 + }, +/area/adminlevel/ert_station/upp_station) +"Lo" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 10 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"LB" = ( +/obj/structure/closet{ + name = "boxing attire" + }, +/obj/item/clothing/under/shorts/green, +/obj/item/clothing/under/shorts/green, +/obj/item/clothing/under/shorts/grey, +/obj/item/clothing/under/shorts/grey, +/obj/structure/machinery/light/double/blue{ + dir = 4 + }, +/turf/open/asphalt/cement{ + icon_state = "cement1"; + dir = 1 + }, +/area/adminlevel/ert_station/upp_station) +"LG" = ( +/obj/structure/lattice, +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/turf/open/space/basic, +/area/space) +"LI" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/turf/open/space/basic, +/area/space) +"LK" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4 + }, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"LN" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/device/flashlight, +/obj/item/attachable/bayonet/upp, +/turf/open/asphalt/cement{ + icon_state = "cement15" + }, +/area/adminlevel/ert_station/upp_station) +"LO" = ( +/obj/structure/bed/chair, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"LQ" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan, +/obj/structure/machinery/door/airlock/multi_tile/almayer/marine/colony{ + name = "Station Hallway" + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"Mc" = ( +/obj/structure/monorail{ + name = "launch track" + }, +/turf/open/space/basic, +/area/space) +"Mi" = ( +/obj/item/clothing/suit/chef/classic, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/head/chefhat, +/obj/structure/surface/table/reinforced, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"Mk" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/belt/medical/lifesaver/upp/full, +/turf/open/floor/strata{ + dir = 1; + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"Mt" = ( +/obj/structure/platform/kutjevo/smooth, +/turf/open/space/basic, +/area/space) +"MB" = ( +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 6 + }, +/obj/structure/barricade/handrail/wire{ + dir = 8 + }, +/turf/open/asphalt/cement{ + icon_state = "cement14" + }, +/area/adminlevel/ert_station/upp_station) +"ME" = ( +/obj/structure/surface/table/reinforced, +/obj/item/reagent_container/food/snacks/upp, +/obj/item/reagent_container/food/snacks/upp, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"MG" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/adminlevel/ert_station/upp_station) +"MM" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/strata{ + icon_state = "green3" + }, +/area/adminlevel/ert_station/upp_station) +"MU" = ( +/obj/structure/surface/table/reinforced/black, +/obj/item/paper_bin{ + pixel_y = 10 + }, +/obj/item/tool/stamp{ + pixel_y = 10 + }, +/turf/open/floor/strata{ + icon_state = "green3" + }, +/area/adminlevel/ert_station/upp_station) +"Ne" = ( +/obj/structure/machinery/light/double/blue, +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"Ni" = ( +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 10 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"Ns" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Nz" = ( +/obj/structure/bed/chair/comfy/black, +/turf/open/floor/strata{ + dir = 2; + icon_state = "red3" + }, +/area/adminlevel/ert_station/upp_station) +"NQ" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/turf/open/space/basic, +/area/space) +"NU" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/curtain/medical, +/obj/structure/pipes/standard/simple/hidden/cyan, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"OA" = ( +/obj/structure/platform/strata/metal{ + dir = 8 + }, +/obj/structure/stairs/perspective{ + color = "#6e6e6e"; + dir = 8; + icon_state = "p_stair_sn_full_cap"; + layer = 2.5 + }, +/obj/effect/decal/strata_decals/catwalk/prison{ + layer = 2.2 + }, +/obj/structure/pipes/standard/simple/hidden/cyan, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"OK" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/machinery/autolathe/full, +/turf/open/floor/greengrid, +/area/adminlevel/ert_station/upp_station) +"OS" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/large_holster/machete/full, +/turf/open/floor/strata{ + dir = 1; + icon_state = "white_cyan4" + }, +/area/adminlevel/ert_station/upp_station) +"Ph" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"Pj" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/turf/open/floor/almayer_hull, +/area/space) +"PI" = ( +/turf/open/floor/almayer_hull, +/area/space) +"PJ" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony{ + name = "\improper Cryo Cells" + }, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"PQ" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/strata{ + icon_state = "red4"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"PS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"PT" = ( +/obj/structure/machinery/sleep_console, +/obj/structure/pipes/vents/pump, +/turf/open/floor/strata{ + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"Qu" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/turf/open/floor/strata{ + icon_state = "white_cyan2" + }, +/area/adminlevel/ert_station/upp_station) +"Qz" = ( +/obj/structure/machinery/iv_drip, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/strata{ + dir = 10; + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"QG" = ( +/turf/closed/shuttle/elevator{ + dir = 10 + }, +/area/adminlevel/ert_station/upp_station) +"QO" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1 + }, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/adminlevel/ert_station/upp_station) +"QR" = ( +/obj/structure/machinery/medical_pod/sleeper, +/turf/open/floor/strata{ + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"Rd" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/snacks/upp, +/turf/open/floor/strata{ + dir = 1; + icon_state = "red3" + }, +/area/adminlevel/ert_station/upp_station) +"Rf" = ( +/turf/open/asphalt/cement, +/area/adminlevel/ert_station/upp_station) +"Ry" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"RB" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 10 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"RC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"RK" = ( +/obj/structure/machinery/iv_drip, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/strata{ + dir = 8; + icon_state = "white_cyan4" + }, +/area/adminlevel/ert_station/upp_station) +"RQ" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating{ + icon_state = "platebot" + }, +/area/adminlevel/ert_station/upp_station) +"RR" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out" + }, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 5 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"RS" = ( +/obj/structure/pipes/standard/simple/hidden/cyan, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"RU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/closed/wall/strata_outpost/reinforced, +/area/adminlevel/ert_station/upp_station) +"Sa" = ( +/obj/structure/closet/secure_closet/freezer/fridge/full, +/obj/item/reagent_container/food/condiment/enzyme, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"Sf" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/curtain/open/black, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"Sh" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/turf/open/floor/strata{ + dir = 8; + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"Si" = ( +/obj/structure/bookcase{ + icon_state = "book-5"; + pixel_y = 18; + pixel_x = 2; + density = 0 + }, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 1 + }, +/area/adminlevel/ert_station/upp_station) +"Sj" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"Sn" = ( +/turf/open/floor/strata{ + icon_state = "purp3"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"Sq" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/machinery/cm_vending/sorted/tech/tool_storage/antag, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/greengrid, +/area/adminlevel/ert_station/upp_station) +"Sx" = ( +/obj/structure/machinery/cryopod/right{ + layer = 3.1; + pixel_y = 13 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "floor_marked" + }, +/area/adminlevel/ert_station/upp_station) +"Sy" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/turf/open/floor/strata{ + icon_state = "white_cyan2" + }, +/area/adminlevel/ert_station/upp_station) +"SB" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"SC" = ( +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/upp_station) +"SI" = ( +/obj/structure/surface/table/reinforced, +/obj/item/trash/plate{ + pixel_y = 2 + }, +/obj/item/trash/plate{ + pixel_y = 4 + }, +/obj/item/trash/plate{ + pixel_y = 6 + }, +/obj/item/trash/plate{ + pixel_y = 8 + }, +/obj/item/trash/plate{ + pixel_y = 10 + }, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"SL" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"SR" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony{ + dir = 1; + name = "\improper Toilet" + }, +/obj/structure/pipes/standard/simple/hidden/cyan, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"SS" = ( +/obj/docking_port/stationary/emergency_response/idle_port3, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"SY" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/light/double/blue{ + dir = 1 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"Tb" = ( +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/marine/colony{ + name = "Station Hallway"; + dir = 1 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"Tj" = ( +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/adminlevel/ert_station/upp_station) +"Tm" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"Tr" = ( +/obj/effect/landmark/wo_supplies/storage/m56d, +/obj/structure/machinery/light/double/blue{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "floor_marked" + }, +/area/adminlevel/ert_station/upp_station) +"Tu" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/machinery/door_control{ + pixel_y = -22; + name = "Toilet Shutters Button"; + id = "upp_toilet" + }, +/obj/structure/mirror{ + pixel_x = 28 + }, +/turf/open/floor/strata{ + dir = 8; + icon_state = "white_cyan2" + }, +/area/adminlevel/ert_station/upp_station) +"Ty" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/marine/colony{ + name = "Shuttle Bay" + }, +/obj/structure/pipes/standard/simple/hidden/cyan, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"TB" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/surgical_tray, +/turf/open/floor/strata{ + dir = 2; + icon_state = "white_cyan4" + }, +/area/adminlevel/ert_station/upp_station) +"TE" = ( +/obj/structure/machinery/cryopod/right, +/obj/structure/machinery/light/double/blue{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "floor_marked" + }, +/area/adminlevel/ert_station/upp_station) +"TG" = ( +/turf/open/floor/strata{ + icon_state = "green3" + }, +/area/adminlevel/ert_station/upp_station) +"TH" = ( +/obj/structure/surface/table/reinforced, +/obj/item/tool/kitchen/tray, +/obj/item/tool/kitchen/knife{ + pixel_x = 3 + }, +/obj/item/tool/kitchen/knife/butcher{ + pixel_x = -8 + }, +/obj/item/tool/kitchen/rollingpin, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"TI" = ( +/obj/structure/platform/strata/metal, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"TM" = ( +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/platform/kutjevo/smooth, +/turf/open/space/basic, +/area/space) +"TQ" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"TT" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, +/obj/structure/machinery/light/double/blue{ + dir = 1 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"Ug" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/clipboard, +/obj/item/paper, +/obj/item/tool/lighter{ + pixel_y = 2; + pixel_x = -9 + }, +/obj/item/tool/pen/blue, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 5 + }, +/area/adminlevel/ert_station/upp_station) +"Uh" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/strata{ + dir = 2; + icon_state = "white_cyan4" + }, +/area/adminlevel/ert_station/upp_station) +"Uk" = ( +/obj/structure/pipes/vents/pump{ + dir = 1; + id_tag = "mining_outpost_pump" + }, +/turf/open/floor/strata{ + dir = 10; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"Ul" = ( +/obj/structure/closet/bodybag, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/strata{ + dir = 4; + icon_state = "cyan1" + }, +/area/adminlevel/ert_station/upp_station) +"Um" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/manifold/hidden/cyan{ + dir = 8 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Uo" = ( +/turf/closed/shuttle/elevator{ + dir = 9 + }, +/area/adminlevel/ert_station/upp_station) +"Up" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/mask/surgical{ + desc = "A sterile mask designed to help prevent the spread of diseases. This one has already been used."; + name = "used sterile mask" + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"Uu" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0; + icon_state = "abed" + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13; + icon_state = "abed" + }, +/obj/item/bedsheet/brown{ + pixel_y = 13 + }, +/obj/item/bedsheet/brown{ + layer = 3.2 + }, +/turf/open/floor/strata{ + icon_state = "blue1" + }, +/area/adminlevel/ert_station/upp_station) +"UA" = ( +/obj/structure/surface/table/reinforced/black, +/obj/item/device/flashlight/lamp/green{ + pixel_y = -3; + pixel_x = 16 + }, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 1 + }, +/area/adminlevel/ert_station/upp_station) +"UB" = ( +/obj/structure/machinery/door/poddoor/almayer/open{ + name = "Command Shutters"; + id = "upp_command" + }, +/obj/structure/window/framed/strata/hull, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"UE" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"UM" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/strata{ + dir = 8; + icon_state = "white_cyan2" + }, +/area/adminlevel/ert_station/upp_station) +"UU" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"UV" = ( +/obj/structure/monorail{ + dir = 4; + name = "launch track" + }, +/turf/open/space/basic, +/area/space) +"Vo" = ( +/turf/open/floor/strata{ + icon_state = "red4"; + dir = 1 + }, +/area/adminlevel/ert_station/upp_station) +"Vp" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Vv" = ( +/obj/structure/largecrate/random/barrel/yellow, +/obj/structure/machinery/light/double/blue{ + dir = 4 + }, +/turf/open/floor/strata{ + icon_state = "green4"; + dir = 1 + }, +/area/adminlevel/ert_station/upp_station) +"Vx" = ( +/turf/closed/shuttle/elevator{ + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"VA" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 4 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"VI" = ( +/turf/closed/wall/rock/brown, +/area/space) +"VZ" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/turf/open/floor/strata{ + icon_state = "green4"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"Wb" = ( +/turf/open/floor/strata{ + icon_state = "blue4" + }, +/area/adminlevel/ert_station/upp_station) +"We" = ( +/obj/structure/machinery/door/poddoor/almayer/open{ + name = "Command Shutters"; + id = "upp_command"; + dir = 4 + }, +/obj/structure/window/framed/strata/hull, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Wi" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"Wj" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/adminlevel/ert_station/upp_station) +"Wr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"WK" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/marine/colony{ + name = "Station Hallway" + }, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/adminlevel/ert_station/upp_station) +"WL" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/strata{ + dir = 4; + icon_state = "orange_edge" + }, +/area/adminlevel/ert_station/upp_station) +"WQ" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"WX" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 1 + }, +/area/adminlevel/ert_station/upp_station) +"WZ" = ( +/obj/structure/machinery/chem_dispenser, +/obj/item/reagent_container/glass/beaker/bluespace, +/turf/open/floor/strata{ + icon_state = "white_cyan3" + }, +/area/adminlevel/ert_station/upp_station) +"Xb" = ( +/obj/structure/monorail{ + dir = 5; + name = "launch track" + }, +/turf/open/space/basic, +/area/space) +"Xr" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/item/reagent_container/glass/bucket, +/obj/structure/pipes/standard/simple/hidden/cyan{ + dir = 9 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"Xy" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/cyan, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"XG" = ( +/turf/open/asphalt/cement{ + icon_state = "cement4" + }, +/area/adminlevel/ert_station/upp_station) +"XL" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, +/turf/open/floor/strata{ + icon_state = "floorscorched1" + }, +/area/adminlevel/ert_station/upp_station) +"XM" = ( +/obj/structure/largecrate/random/barrel/green, +/obj/structure/machinery/light/double/blue{ + dir = 4 + }, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 4 + }, +/area/adminlevel/ert_station/upp_station) +"Yy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"YH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/manifold/hidden/cyan{ + dir = 1 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/upp_station) +"YK" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/turf/open/space/basic, +/area/space) +"YO" = ( +/obj/structure/machinery/gibber{ + pixel_y = 10 + }, +/obj/structure/surface/table/reinforced, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"YS" = ( +/obj/structure/bed/roller, +/obj/structure/machinery/light/double/blue{ + dir = 1 + }, +/turf/open/floor/strata{ + dir = 2; + icon_state = "white_cyan4" + }, +/area/adminlevel/ert_station/upp_station) +"YW" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/communications{ + dir = 4 + }, +/turf/open/floor/strata{ + icon_state = "green1" + }, +/area/adminlevel/ert_station/upp_station) +"YY" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"Zm" = ( +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/upp_station) +"Zt" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/prison{ + dir = 8; + icon_state = "floor_marked" + }, +/area/adminlevel/ert_station/upp_station) +"ZH" = ( +/obj/structure/lattice, +/obj/structure/platform_decoration/kutjevo{ + dir = 8 + }, +/turf/open/space/basic, +/area/space) +"ZM" = ( +/obj/structure/largecrate/random/case/small, +/obj/structure/machinery/light/double/blue{ + dir = 8 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "orange_edge" + }, +/area/adminlevel/ert_station/upp_station) +"ZR" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/trash/plate, +/obj/item/reagent_container/food/snacks/upp, +/turf/open/floor/strata{ + icon_state = "green3"; + dir = 8 + }, +/area/adminlevel/ert_station/upp_station) +"ZS" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/strata{ + icon_state = "green4"; + dir = 8 + }, +/area/adminlevel/ert_station/upp_station) +"ZX" = ( +/turf/open/floor/strata{ + dir = 8; + icon_state = "blue3" + }, +/area/adminlevel/ert_station/upp_station) + +(1,1,1) = {" +AN +AN +AN +AN +AN +AN +AN +AN +AN +AN +AN +AN +AN +AN +AN +AN +AN +AN +GI +GI +GI +GI +Cp +Cp +Cp +Cp +GI +GI +eV +YK +YK +YK +oS +AN +AN +AN +AN +AN +AN +AN +"} +(2,1,1) = {" +AN +AN +AN +AN +GI +AN +GI +AN +AN +jt +LG +LG +LG +LG +LG +ZH +GI +GI +GI +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +VI +uL +ws +ws +ws +oP +GI +GI +GI +AN +AN +AN +AN +"} +(3,1,1) = {" +AN +AN +AN +GI +GI +GI +GI +GI +GI +mJ +ws +ws +ws +ws +ws +ue +AN +GI +Cp +Cp +Cp +Uo +qU +qU +qU +qU +QG +Cp +Mt +ws +IV +ws +NQ +Cp +Cp +GI +GI +AN +AN +AN +"} +(4,1,1) = {" +AN +AN +GI +GI +El +We +We +El +AN +mJ +ws +ws +ws +ws +ws +Cp +Cp +Cp +Cp +Cp +Cp +Vx +ie +SC +SC +sI +Vx +Cp +Cp +ws +ws +ws +Cp +Cp +Cp +Cp +GI +GI +AN +AN +"} +(5,1,1) = {" +AN +GI +GI +El +El +YW +YW +El +El +El +Gu +Gu +Gu +Gu +Cp +Cp +Cp +Cp +Cp +Cp +Cp +ym +rC +EZ +EZ +va +ym +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +GI +AN +AN +"} +(6,1,1) = {" +GI +GI +El +El +bM +cs +cs +ks +Be +El +El +El +El +El +El +Cp +Cp +Cp +Dv +fM +Dv +Vx +wA +SC +SC +mb +Vx +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +AN +AN +"} +(7,1,1) = {" +GI +El +El +yn +iV +Zm +yH +TG +zr +po +Tr +cJ +IQ +rL +po +Cp +zL +he +kN +Ns +sz +da +qU +SC +CM +qU +GE +Cp +Cp +Cp +po +fM +fM +po +po +Cp +Cp +Cp +Cp +AN +"} +(8,1,1) = {" +AN +UB +pc +aA +aA +nC +Sj +TG +uf +po +ve +cJ +lm +ve +po +zL +ag +hM +ve +XL +Kr +Wr +vn +Zm +yH +SB +po +Cp +Cp +po +po +Hx +GL +Sq +po +Cp +Cp +Cp +Cp +AN +"} +(9,1,1) = {" +AN +UB +UA +nh +MU +Vp +yH +le +po +po +Sn +kS +fk +Sn +po +SL +eU +Xy +ow +aV +sy +Wr +ve +yH +Zm +ce +po +po +fM +po +OK +Au +Gb +Ay +pe +Cp +Cp +Cp +Cp +AN +"} +(10,1,1) = {" +AN +UB +FL +mG +Fj +Vp +Zm +TG +oK +Zm +yH +uW +bh +Zm +WK +vo +Bc +qH +Cp +Cp +ay +sk +RQ +vK +yH +Ne +po +TT +vn +po +fR +Vp +JB +MG +xj +Cp +Cp +Cp +Cp +AN +"} +(11,1,1) = {" +AN +UB +aW +zX +zX +Bt +UE +UE +RS +UE +Bq +UU +Ga +UE +UE +sb +Cp +Cp +Cp +Cp +Cp +Cp +rb +rs +Zm +yH +dK +JV +JB +Lk +nC +Xr +ax +ia +po +Cp +Cp +Cp +GI +AN +"} +(12,1,1) = {" +GI +El +El +eX +bd +tr +bd +jg +po +JB +Vp +BX +fW +po +po +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +RB +UE +UE +UE +lo +UE +RS +Bp +Ce +kT +CG +po +Cp +Cp +Cp +GI +AN +"} +(13,1,1) = {" +GI +Cp +po +po +po +po +WX +qi +po +vn +Tb +po +po +po +po +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +fM +po +po +po +po +po +cC +JB +Hb +dH +po +Cp +Cp +GI +GI +AN +"} +(14,1,1) = {" +GI +Cp +po +Rd +xo +po +Si +TG +po +JB +Vp +po +cl +Zt +xl +TQ +zK +Cp +Cp +po +po +po +WL +WL +Ln +ne +ZM +AI +AI +po +tG +Cu +po +po +po +Cp +Cp +GI +AN +AN +"} +(15,1,1) = {" +Cp +Cp +po +Vo +CI +po +sY +hF +po +hO +VA +po +Hl +ya +ya +ya +ya +ya +ya +ya +sG +ya +ya +ya +ya +ya +ya +ya +RR +po +Bt +ev +jc +PQ +po +El +AN +GI +AN +AN +"} +(16,1,1) = {" +Cp +po +po +ES +iM +po +po +po +po +QO +Vp +po +mz +xy +xy +xy +xy +xy +xy +xy +xy +xy +xy +xy +xy +xy +xy +xy +zs +po +Vp +Gw +aH +aH +zQ +El +GI +GI +AN +AN +"} +(17,1,1) = {" +Cp +po +me +vw +nC +UE +Bq +UE +LQ +UE +BH +Ty +fA +xy +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +SS +xy +YH +Ty +Bp +Gw +FI +mP +po +El +Mc +pK +Mc +Xb +"} +(18,1,1) = {" +Cp +po +iJ +qY +Vp +Tm +we +Zm +vn +Zm +Vp +vn +PS +xy +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +xy +YY +vn +Vp +Gw +aH +aH +zQ +El +AN +GI +AN +UV +"} +(19,1,1) = {" +Cp +po +po +po +Sf +po +po +po +po +VZ +Vp +po +Ph +xy +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +xy +FJ +po +uP +Nz +DK +po +po +El +AN +GI +AN +UV +"} +(20,1,1) = {" +Cp +Cp +po +Fh +Vp +oJ +rf +Uu +po +Kb +Vp +po +SY +xy +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +xy +Yy +po +Vp +Gw +aH +aH +zQ +El +AN +GI +AN +UV +"} +(21,1,1) = {" +Cp +El +po +Fh +Lo +UE +mr +rT +po +wS +VA +po +Ph +xy +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +xy +FJ +po +uP +Gw +FI +mP +po +El +AN +GI +AN +UV +"} +(22,1,1) = {" +GI +El +vY +Zm +dW +Cy +lw +Cy +po +TG +Vp +hj +wu +xy +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +xy +IK +hj +Vp +Gw +aH +aH +zQ +El +Mc +pK +Mc +AU +"} +(23,1,1) = {" +GI +El +po +po +Wb +ZX +ZX +rX +po +TG +Bt +RS +fA +xy +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +rb +xy +YH +RS +BH +IT +CI +Hp +po +El +GI +GI +AN +AN +"} +(24,1,1) = {" +GI +Cp +Cp +po +aO +oJ +dh +oJ +po +fK +Vp +po +mz +xy +xy +xy +xy +xy +xy +xy +xy +xy +xy +xy +xy +xy +xy +xy +zs +po +qA +po +po +po +po +El +Cp +GI +GI +AN +"} +(25,1,1) = {" +GI +Cp +El +po +po +po +po +po +po +vn +Tb +po +hV +sA +lb +sA +sA +sA +sA +sA +lb +sA +sA +sA +sA +sA +lb +sA +Gl +po +GN +ME +yH +yH +JZ +Dv +Cp +Cp +GI +AN +"} +(26,1,1) = {" +GI +GI +El +bp +UM +SR +Lg +yH +yH +yH +Vp +po +po +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +po +po +GN +bY +dz +tx +TH +Dv +Cp +Cp +Cp +AN +"} +(27,1,1) = {" +AN +GI +Kq +Jl +Tu +Dv +Bt +UE +Jp +UE +Ga +UE +Um +UE +Bq +UE +wY +UE +UE +Ry +bi +UE +Bq +UE +bi +UE +UE +Bq +bi +UE +FF +SI +Zm +uI +KX +Dv +Cp +Cp +Cp +AN +"} +(28,1,1) = {" +AN +GI +El +Cp +Cp +Dv +fi +Dv +Dv +Jj +Df +yH +ac +LK +Vp +yH +vn +dB +EA +tF +EA +eo +am +zY +ZR +ZR +aP +tv +Zm +vn +gx +OA +cO +rr +Mi +Dv +Cp +Cp +Cp +AN +"} +(29,1,1) = {" +AN +GI +Cp +Cp +Cp +Dv +Vp +jh +Dv +Dv +Dv +Dv +Dv +Dv +uI +qM +Dv +Vv +Is +fd +XM +Ug +Ni +nO +aF +Ae +MM +tv +Zm +vn +uE +wr +Zm +FA +Sa +Dv +Cp +Cp +GI +AN +"} +(30,1,1) = {" +AN +GI +GI +Cp +Cp +fM +Vp +KF +KF +KF +Dv +YS +bk +aS +Vp +oz +Dv +Dv +Dv +Dv +Dv +dL +bd +LO +eT +vH +ZS +Bt +gf +Wj +TI +IX +Zm +pv +mq +Cp +Cp +ZH +GI +AN +"} +(31,1,1) = {" +AN +AN +AN +Cp +Cp +Cp +Vp +oz +oz +Js +Dv +qF +uj +WZ +Bt +UE +NU +UE +gt +aS +Dv +Dv +kF +Ks +Ks +MB +Jz +Bp +Tm +yH +HR +YO +kc +yH +Cp +Cp +PI +sr +AN +AN +"} +(32,1,1) = {" +AN +AN +AN +Cp +Cp +Dv +Lo +UE +UE +Uk +Dv +Mk +uj +zx +Vp +Uh +Dv +TB +DG +iB +lp +Dv +fE +Kn +sC +Eg +Dv +PJ +Dv +Dv +Dv +Dv +Cp +Cp +Cp +Mt +PI +Bw +AN +AN +"} +(33,1,1) = {" +AN +AN +AN +Cp +Cp +Dv +Dv +oz +oz +Ul +Dv +Ak +uj +QR +Vp +ry +sU +mf +Sy +sK +pb +Dv +fE +pu +Kn +Tj +Dv +cj +RC +RC +Jc +Dv +Cp +Cp +GI +uL +PI +Bw +AN +AN +"} +(34,1,1) = {" +AN +AN +AN +AN +Cp +Cp +Dv +FP +FP +FP +Dv +CW +uj +PT +Vp +hg +sU +qd +KL +uj +pb +Dv +XG +Rf +Rf +om +Dv +jH +Gt +dW +xF +Dv +Cp +GI +AN +Mt +PI +Bw +AN +AN +"} +(35,1,1) = {" +AN +AN +AN +AN +AN +Cp +Dv +Dv +fM +fM +Dv +Dv +Qu +Qz +Sh +kf +Dv +Dv +OS +Up +RK +Dv +ge +LB +JX +LN +Dv +TE +Sx +rk +Cp +Cp +Cp +GI +AN +Mt +PI +Bw +AN +AN +"} +(36,1,1) = {" +AN +AN +AN +AN +AN +Cp +Cp +Cp +Cp +Cp +Cp +Dv +Dv +Dv +Dv +Dv +Dv +Dv +Dv +Dv +Dv +Dv +Dv +Dv +Dv +Dv +Dv +Dv +Cp +Cp +Cp +di +yt +WQ +yt +hA +PI +Bw +AN +AN +"} +(37,1,1) = {" +AN +AN +AN +AN +AN +AN +GI +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +ws +ws +ws +TM +ws +ws +ws +IC +PI +Bw +AN +AN +"} +(38,1,1) = {" +AN +AN +AN +AN +AN +AN +GI +GI +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +uL +ws +IV +ws +Kj +ws +IV +ws +Pj +PI +Bw +AN +AN +"} +(39,1,1) = {" +AN +AN +AN +AN +AN +AN +AN +GI +GI +GI +GI +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +GI +GI +uL +ws +ws +ws +vZ +ws +ws +ws +eY +LI +fc +AN +AN +"} +(40,1,1) = {" +AN +AN +AN +AN +AN +AN +AN +AN +AN +AN +GI +GI +GI +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cp +GI +GI +GI +GI +GI +AN +pN +vS +Wi +vS +Hc +vS +Wi +au +fc +AN +AN +AN +AN +"} diff --git a/maps/templates/weyland_ert_station.dmm b/maps/templates/weyland_ert_station.dmm new file mode 100644 index 000000000000..1937aa6a61a9 --- /dev/null +++ b/maps/templates/weyland_ert_station.dmm @@ -0,0 +1,5844 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ab" = ( +/obj/structure/machinery/iv_drip, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"al" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"ap" = ( +/obj/structure/bed/chair/comfy/orange{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"au" = ( +/turf/open/floor/corsat{ + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"aG" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/computer/emails{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"bf" = ( +/obj/structure/surface/table/reinforced/black, +/obj/item/tool/stamp/internalaffairs{ + pixel_x = -5; + pixel_y = 9 + }, +/obj/item/paper_bin/wy, +/obj/item/tool/pen, +/obj/item/device/flashlight/lamp{ + pixel_x = 5; + pixel_y = 13 + }, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"bk" = ( +/obj/structure/machinery/medical_pod/sleeper, +/turf/open/floor/corsat{ + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"bp" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/structure/pipes/standard/manifold/fourway/hidden/green, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "tan" + }, +/area/adminlevel/ert_station/weyland_station) +"bv" = ( +/obj/structure/machinery/vending/coffee, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"bw" = ( +/obj/structure/bed, +/obj/structure/window/reinforced/toughened{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced/toughened{ + dir = 8 + }, +/obj/item/bedsheet/orange, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"bG" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"bV" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "browncorner" + }, +/area/adminlevel/ert_station/weyland_station) +"ck" = ( +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "retrosquareslight" + }, +/area/adminlevel/ert_station/weyland_station) +"cm" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"cn" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/corsat{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/weyland_station) +"cq" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"cr" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/machinery/shower{ + dir = 8 + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/weyland_station) +"cw" = ( +/obj/structure/pipes/standard/manifold/hidden/green, +/turf/open/floor/corsat{ + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"cz" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/paper, +/obj/item/tool/pen, +/obj/item/tool/pen{ + pixel_y = 3 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"cK" = ( +/obj/structure/surface/table, +/obj/structure/machinery/light/double, +/turf/open/floor/corsat{ + icon_state = "whitetan" + }, +/area/adminlevel/ert_station/weyland_station) +"cU" = ( +/turf/open/floor/corsat{ + dir = 9; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"cW" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 8 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/weyland_station) +"cX" = ( +/obj/structure/machinery/cm_vending/sorted/marine_food{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "whitetan" + }, +/area/adminlevel/ert_station/weyland_station) +"cY" = ( +/obj/structure/closet/firecloset/full, +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"cZ" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"dc" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"dx" = ( +/obj/structure/window/framed/corsat/indestructible/research, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "WY_aft_medbay"; + name = "\improper Aft Medbay Shutters" + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/weyland_station) +"dy" = ( +/obj/item/clothing/suit/chef/classic, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/head/chefhat, +/obj/structure/surface/table/reinforced, +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"dz" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/corsat{ + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"dC" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"dE" = ( +/turf/open/floor/corsat{ + icon_state = "greencorner" + }, +/area/adminlevel/ert_station/weyland_station) +"dM" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"dO" = ( +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "redcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"dT" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_x = -10; + pixel_y = 1 + }, +/obj/structure/morgue, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"ee" = ( +/obj/structure/bed/roller, +/turf/open/floor/corsat{ + icon_state = "darkgreen" + }, +/area/adminlevel/ert_station/weyland_station) +"eh" = ( +/obj/structure/machinery/shower{ + pixel_y = 21 + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/machinery/light/double/blue{ + dir = 8 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/weyland_station) +"ei" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"ek" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"el" = ( +/turf/open/floor/corsat{ + dir = 1; + icon_state = "greencorner" + }, +/area/adminlevel/ert_station/weyland_station) +"er" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/toy/deck, +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"eA" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/clothing/gloves/yellow, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"eB" = ( +/obj/structure/machinery/cm_vending/sorted/medical/blood{ + req_access = null + }, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"eG" = ( +/obj/structure/machinery/photocopier, +/obj/structure/machinery/light/double, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"eJ" = ( +/obj/structure/machinery/door/airlock/almayer/security/colony{ + dir = 1; + name = "\improper Brig Cell 2" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"eO" = ( +/turf/open/floor/corsat{ + icon_state = "yellowcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"eQ" = ( +/obj/structure/pipes/standard/manifold/hidden/green, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"eX" = ( +/turf/open/floor/corsat{ + dir = 4; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"fe" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "WY_meeting"; + name = "\improper Meeting Room Shutters" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "sigma" + }, +/area/adminlevel/ert_station/weyland_station) +"fl" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_10" + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"fy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "white" + }, +/area/adminlevel/ert_station/weyland_station) +"fC" = ( +/turf/open/floor/corsat{ + dir = 8; + icon_state = "redcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"fD" = ( +/obj/structure/closet/emcloset{ + density = 0; + pixel_x = 8; + pixel_y = 15 + }, +/obj/structure/closet/firecloset/full{ + density = 0; + pixel_x = -8; + pixel_y = 15 + }, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"fF" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"fI" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper Laundry Room" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"fX" = ( +/turf/closed/wall/r_wall/biodome, +/area/adminlevel/ert_station/weyland_station) +"gf" = ( +/obj/structure/machinery/body_scanconsole, +/obj/structure/machinery/autodoc_console{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"gh" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/light/double/blue{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"gj" = ( +/obj/structure/surface/table/reinforced/black, +/obj/item/device/taperecorder, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"gm" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"gq" = ( +/obj/structure/bed, +/obj/item/bedsheet/orange, +/obj/structure/machinery/light/double, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"gC" = ( +/obj/structure/closet/crate/ammo/alt/flame, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" + }, +/area/adminlevel/ert_station/weyland_station) +"gH" = ( +/obj/item/reagent_container/glass/bucket/janibucket{ + pixel_x = -1; + pixel_y = 13 + }, +/obj/item/tool/mop, +/obj/item/reagent_container/glass/bucket{ + pixel_x = 7; + pixel_y = 2 + }, +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"gK" = ( +/obj/structure/bed, +/obj/item/bedsheet/orange, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"gL" = ( +/obj/structure/surface/table, +/obj/item/storage/box/wy_mre, +/turf/open/floor/corsat{ + icon_state = "whitetan" + }, +/area/adminlevel/ert_station/weyland_station) +"gW" = ( +/obj/structure/machinery/chem_dispenser, +/obj/item/reagent_container/glass/beaker/bluespace, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"ha" = ( +/obj/structure/surface/table/reinforced, +/obj/structure/machinery/processor{ + pixel_y = 10 + }, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"ho" = ( +/turf/open/floor/corsat{ + dir = 1; + icon_state = "whitetancorner" + }, +/area/adminlevel/ert_station/weyland_station) +"hu" = ( +/obj/structure/machinery/optable, +/obj/item/tank/anesthetic, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "darkgreen" + }, +/area/adminlevel/ert_station/weyland_station) +"hz" = ( +/obj/structure/bed/chair/office/light{ + dir = 8 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"hC" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "WY_center_medbay"; + name = "\improper Central Medbay Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/adminlevel/ert_station/weyland_station) +"hG" = ( +/turf/open/floor/corsat{ + dir = 8; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"hK" = ( +/turf/open/floor/corsat{ + dir = 4; + icon_state = "whitetancorner" + }, +/area/adminlevel/ert_station/weyland_station) +"hM" = ( +/obj/structure/machinery/light/double, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"hZ" = ( +/obj/structure/closet/secure_closet/brig{ + density = 0; + pixel_x = 7; + pixel_y = 16 + }, +/obj/structure/closet/secure_closet/brig{ + density = 0; + pixel_x = -7; + pixel_y = 16 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"ib" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "arrow_east" + }, +/area/adminlevel/ert_station/weyland_station) +"id" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "whitetan" + }, +/area/adminlevel/ert_station/weyland_station) +"ik" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "tan" + }, +/area/adminlevel/ert_station/weyland_station) +"in" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"iw" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/paper_bin{ + pixel_y = 10 + }, +/obj/item/device/flashlight/lamp/green{ + pixel_x = 16; + pixel_y = 20 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"iE" = ( +/obj/structure/pipes/standard/manifold/fourway/hidden/green, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"iJ" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "redcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"iP" = ( +/obj/structure/closet/fireaxecabinet{ + pixel_y = 32 + }, +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "greencorner" + }, +/area/adminlevel/ert_station/weyland_station) +"iT" = ( +/obj/structure/surface/table/reinforced, +/obj/item/tool/kitchen/tray, +/obj/item/tool/kitchen/knife{ + pixel_x = 3 + }, +/obj/item/tool/kitchen/knife/butcher{ + pixel_x = -8 + }, +/obj/item/tool/kitchen/rollingpin, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"iU" = ( +/obj/structure/closet/crate/internals, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"iV" = ( +/obj/structure/machinery/autolathe/full, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"jb" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/adminlevel/ert_station/weyland_station) +"je" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks{ + density = 0; + pixel_x = -9; + pixel_y = 19 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"jm" = ( +/obj/structure/machinery/cm_vending/clothing/antag{ + name = "\improper Response Team Automated Equipment Rack" + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"jz" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/turf/open/floor/corsat{ + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"jE" = ( +/obj/structure/machinery/shower{ + pixel_y = 21 + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "damaged1" + }, +/area/adminlevel/ert_station/weyland_station) +"jK" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_x = -10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"jY" = ( +/obj/structure/machinery/medical_pod/sleeper, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"ka" = ( +/obj/structure/closet/crate/medical, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"kn" = ( +/obj/structure/machinery/light/double, +/turf/open/floor/corsat{ + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"kq" = ( +/obj/structure/bed/chair/wheelchair, +/obj/structure/machinery/light/double, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"kr" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/weyland_station) +"ky" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/item/clothing/suit/storage/hazardvest/blue, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"kA" = ( +/turf/open/floor/corsat{ + dir = 1; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"kF" = ( +/obj/structure/machinery/power/smes, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"kM" = ( +/obj/structure/largecrate/supply/weapons/flamers, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/weyland_station) +"kO" = ( +/obj/structure/window/framed/corsat/research, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "WY_center_medbay_or"; + name = "\improper Central Medbay Operation Room Shutters" + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/weyland_station) +"kV" = ( +/obj/structure/surface/table, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "tan" + }, +/area/adminlevel/ert_station/weyland_station) +"kW" = ( +/obj/structure/machinery/sleep_console{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"la" = ( +/obj/structure/machinery/light/double, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "redcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"lh" = ( +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/adminlevel/ert_station/weyland_station) +"ll" = ( +/obj/item/storage/firstaid/adv, +/obj/item/storage/belt/medical/lifesaver/full, +/obj/structure/surface/table/reinforced/almayer_B, +/turf/open/floor/corsat{ + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"lo" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 4 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/weyland_station) +"lq" = ( +/obj/structure/bed{ + icon_state = "psychbed" + }, +/obj/item/bedsheet/rd, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"lv" = ( +/obj/structure/surface/table, +/obj/item/reagent_container/food/snacks/milosoup{ + pixel_y = 10 + }, +/turf/open/floor/corsat{ + icon_state = "whitetan" + }, +/area/adminlevel/ert_station/weyland_station) +"lw" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"lx" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"lD" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"lE" = ( +/obj/structure/bed{ + icon_state = "abed" + }, +/obj/structure/machinery/light/small/built{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"lH" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "browncorner" + }, +/area/adminlevel/ert_station/weyland_station) +"lI" = ( +/obj/structure/pipes/standard/manifold/hidden/green, +/turf/open/floor/corsat{ + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"lS" = ( +/obj/structure/largecrate/supply/medicine/blood, +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"lT" = ( +/obj/structure/machinery/cryopod/right{ + layer = 3.1; + pixel_y = 13 + }, +/turf/open/floor/corsat{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/weyland_station) +"lU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/obj/structure/machinery/light/double{ + dir = 8; + pixel_x = -10; + pixel_y = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "white" + }, +/area/adminlevel/ert_station/weyland_station) +"lY" = ( +/obj/structure/window/framed/corsat/indestructible, +/turf/open/floor/plating, +/area/adminlevel/ert_station/weyland_station) +"md" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/adminlevel/ert_station/weyland_station) +"mg" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"mh" = ( +/obj/structure/surface/rack, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"mn" = ( +/obj/structure/closet/toolcloset, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"mv" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/machinery/shower{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/strata{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/weyland_station) +"mx" = ( +/obj/structure/barricade/handrail/wire{ + dir = 4 + }, +/obj/structure/largecrate/random/case/small, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"mE" = ( +/obj/structure/closet/firecloset/full, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"mI" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"mV" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/almayer{ + name = "\improper Telecomms" + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"nb" = ( +/obj/structure/filingcabinet/filingcabinet{ + density = 0; + pixel_x = 8 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"ng" = ( +/obj/structure/machinery/cm_vending/sorted/tech/comp_storage/antag, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"nq" = ( +/obj/structure/machinery/cm_vending/sorted/medical/chemistry/no_access{ + req_access = null + }, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"ns" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "\improper Bathroom" + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "squareswood" + }, +/area/adminlevel/ert_station/weyland_station) +"nw" = ( +/obj/structure/surface/rack, +/obj/item/weapon/gun/rifle/m41a/elite{ + pixel_y = 1 + }, +/obj/item/weapon/gun/rifle/m41a/elite{ + pixel_y = -4 + }, +/turf/open/floor/corsat{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/weyland_station) +"nG" = ( +/obj/structure/machinery/autolathe/full, +/obj/structure/machinery/light/double{ + dir = 8; + pixel_x = -10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"nI" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 1 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/weyland_station) +"nJ" = ( +/obj/item/roller, +/obj/item/roller, +/obj/structure/surface/table/reinforced/almayer_B, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"nQ" = ( +/obj/structure/surface/table/reinforced, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"nS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/obj/structure/closet/emcloset{ + density = 0; + pixel_x = 8; + pixel_y = 15 + }, +/obj/structure/closet/firecloset/full{ + density = 0; + pixel_x = -8; + pixel_y = 15 + }, +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "whitecorner" + }, +/area/adminlevel/ert_station/weyland_station) +"nT" = ( +/obj/structure/showcase{ + icon_state = "broadcast receiver"; + name = "Subspace Receiver" + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"nY" = ( +/obj/structure/machinery/iv_drip, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"ob" = ( +/obj/structure/closet/secure_closet/chemical{ + req_access_txt = "100" + }, +/turf/open/floor/corsat{ + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"og" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_x = -10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "brown" + }, +/area/adminlevel/ert_station/weyland_station) +"ou" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/storage/firstaid/adv, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"oE" = ( +/turf/open/floor/corsat{ + dir = 8; + icon_state = "bluecorner" + }, +/area/adminlevel/ert_station/weyland_station) +"oL" = ( +/turf/open/floor/corsat{ + dir = 8; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"oM" = ( +/obj/structure/window/framed/corsat/research, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "WY_aft_medbay"; + name = "\improper Aft Medbay Shutters" + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/weyland_station) +"oQ" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/almayer/glass{ + dir = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/adminlevel/ert_station/weyland_station) +"oT" = ( +/obj/structure/bed, +/obj/item/bedsheet/medical, +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"oX" = ( +/obj/structure/surface/rack, +/obj/item/storage/fancy/vials/random, +/turf/open/floor/corsat{ + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"pa" = ( +/obj/vehicle/powerloader/ft{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/weyland_station) +"pc" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/adminlevel/ert_station/weyland_station) +"pf" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/ammo_box/magazine/m39/ap{ + pixel_y = 8 + }, +/obj/item/ammo_box/magazine/ap, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"pq" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"pv" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"pB" = ( +/obj/structure/machinery/cm_vending/sorted/cargo_guns/antag_guns{ + hacked = 1; + name = "\improper Response Team Automated Guns Rack"; + use_power = 0; + use_snowflake_points = 1 + }, +/obj/structure/machinery/light/double, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"pE" = ( +/turf/open/floor/corsat{ + dir = 6; + icon_state = "brown" + }, +/area/adminlevel/ert_station/weyland_station) +"pF" = ( +/turf/open/floor/corsat{ + icon_state = "theta" + }, +/area/adminlevel/ert_station/weyland_station) +"pK" = ( +/obj/structure/machinery/cm_vending/sorted/tech/tool_storage/antag, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"pY" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "arrow_east" + }, +/area/adminlevel/ert_station/weyland_station) +"qu" = ( +/obj/structure/machinery/door/airlock/almayer/security/colony{ + dir = 1; + name = "\improper Brig Cell 3" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"qv" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"qD" = ( +/obj/structure/surface/table/reinforced/black, +/obj/item/folder/black, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"qF" = ( +/turf/open/floor/corsat{ + dir = 8; + icon_state = "greencorner" + }, +/area/adminlevel/ert_station/weyland_station) +"qL" = ( +/obj/structure/morgue, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"qV" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "whitetan" + }, +/area/adminlevel/ert_station/weyland_station) +"rc" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/machinery/light/double/blue, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "damaged1" + }, +/area/adminlevel/ert_station/weyland_station) +"ro" = ( +/obj/structure/bed/chair/comfy/beige{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"rB" = ( +/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage/antag, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"rD" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -1 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/weyland_station) +"rF" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "tan" + }, +/area/adminlevel/ert_station/weyland_station) +"rK" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"rN" = ( +/obj/structure/bed/chair/comfy/orange, +/obj/structure/machinery/light/double{ + dir = 8; + pixel_x = -10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"rX" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "bluecorner" + }, +/area/adminlevel/ert_station/weyland_station) +"rY" = ( +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"sg" = ( +/turf/open/floor/corsat{ + dir = 4; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"sq" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"sr" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/paper_bin/wy, +/obj/item/tool/pen/clicky, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"su" = ( +/obj/structure/bed/chair/office/light, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"sy" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"sA" = ( +/obj/structure/machinery/blackbox_recorder, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"sB" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "whitetan" + }, +/area/adminlevel/ert_station/weyland_station) +"sH" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/computer/emails{ + dir = 1 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"sM" = ( +/obj/structure/machinery/vending/snack, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"sO" = ( +/obj/structure/bed/chair/comfy/beige{ + dir = 8 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"sX" = ( +/obj/structure/window/framed/corsat/research, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "WY_center_medbay"; + name = "\improper Central Medbay Shutters" + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/weyland_station) +"sY" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_x = -10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "whitetancorner" + }, +/area/adminlevel/ert_station/weyland_station) +"tc" = ( +/obj/structure/bed/sofa/south/white/right, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"td" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"th" = ( +/obj/structure/closet/secure_closet/surgical{ + pixel_y = 30 + }, +/obj/item/reagent_container/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" + }, +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/door_control{ + id = "WY_center_medbay_or"; + name = "Center Medbay Operation Room Shutters"; + pixel_x = -7; + pixel_y = 9; + req_access_txt = "1" + }, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "darkgreen" + }, +/area/adminlevel/ert_station/weyland_station) +"ts" = ( +/turf/open/floor/corsat{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"tz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 8 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "white" + }, +/area/adminlevel/ert_station/weyland_station) +"tR" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "WY_meeting"; + name = "\improper Meeting Room Shutters" + }, +/obj/structure/window/framed/corsat, +/turf/open/floor/plating, +/area/adminlevel/ert_station/weyland_station) +"tW" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/computer3/laptop/secure_data, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"tX" = ( +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"ul" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/corsat{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/weyland_station) +"uv" = ( +/obj/structure/machinery/recharge_station, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"uw" = ( +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + pixel_x = 1; + pixel_y = 21 + }, +/obj/structure/pipes/vents/pump, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"uE" = ( +/obj/structure/surface/rack, +/obj/item/weapon/gun/rifle/m41a/elite{ + pixel_y = 1 + }, +/obj/item/weapon/gun/rifle/m41a/elite{ + pixel_y = -4 + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/weyland_station) +"uR" = ( +/obj/structure/closet/secure_closet/freezer/fridge/full, +/obj/item/reagent_container/food/condiment/enzyme, +/obj/structure/machinery/light/small/built{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"uX" = ( +/obj/structure/surface/table, +/obj/item/reagent_container/food/snacks/meatsteak{ + pixel_y = -2 + }, +/obj/item/ashtray/bronze{ + pixel_x = 7; + pixel_y = 9 + }, +/obj/structure/machinery/light/double, +/turf/open/floor/corsat{ + icon_state = "whitetan" + }, +/area/adminlevel/ert_station/weyland_station) +"va" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "white" + }, +/area/adminlevel/ert_station/weyland_station) +"vb" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/marine/colony{ + dir = 1; + name = "Barracks" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"vc" = ( +/turf/open/floor/corsat{ + dir = 8; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"vh" = ( +/turf/open/floor/corsat{ + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"vv" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"vz" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/weyland_station) +"vN" = ( +/obj/structure/window/framed/corsat/research, +/turf/open/floor/plating, +/area/adminlevel/ert_station/weyland_station) +"vP" = ( +/obj/structure/machinery/light/double, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "redcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"vU" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_x = -10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" + }, +/area/adminlevel/ert_station/weyland_station) +"vW" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"vX" = ( +/obj/structure/machinery/cryopod/right, +/turf/open/floor/corsat{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/weyland_station) +"wa" = ( +/obj/item/device/defibrillator/upgraded, +/obj/structure/surface/table/reinforced/almayer_B, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "darkgreen" + }, +/area/adminlevel/ert_station/weyland_station) +"wE" = ( +/obj/structure/bed, +/obj/item/bedsheet/orange, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/adminlevel/ert_station/weyland_station) +"wU" = ( +/obj/structure/surface/rack, +/obj/item/storage/pill_bottle/tramadol, +/obj/item/storage/pill_bottle/bicaridine{ + pixel_x = 5 + }, +/obj/item/storage/pill_bottle/kelotane{ + pixel_x = -7 + }, +/turf/open/floor/corsat{ + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"xg" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/pipes/standard/manifold/hidden/green, +/turf/open/floor/corsat{ + icon_state = "white" + }, +/area/adminlevel/ert_station/weyland_station) +"xh" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"xk" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/storage/fancy/cigarettes/wypacket{ + pixel_x = -5; + pixel_y = 4 + }, +/obj/item/tool/lighter/zippo/gold, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"xA" = ( +/turf/open/floor/corsat{ + dir = 10; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"xD" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "WY_meeting"; + name = "\improper Meeting Room Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "sigma" + }, +/area/adminlevel/ert_station/weyland_station) +"xE" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"xN" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"xT" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "tan" + }, +/area/adminlevel/ert_station/weyland_station) +"xZ" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/device/flashlight/lamp/green, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"ya" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "whitetan" + }, +/area/adminlevel/ert_station/weyland_station) +"yb" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"yj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" + }, +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "whitecorner" + }, +/area/adminlevel/ert_station/weyland_station) +"yo" = ( +/obj/structure/machinery/light/double, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"yp" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/almayer/glass{ + name = "\improper Toxicity & Poison Treatment" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "WY_aft_medbay"; + name = "\improper Aft Medbay Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/adminlevel/ert_station/weyland_station) +"yD" = ( +/obj/structure/bed{ + icon_state = "psychbed" + }, +/obj/item/bedsheet/orange, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"yH" = ( +/turf/open/floor/corsat{ + dir = 4; + icon_state = "browncorner" + }, +/area/adminlevel/ert_station/weyland_station) +"yM" = ( +/turf/open/floor/corsat{ + dir = 6; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"zh" = ( +/turf/open/floor/corsat{ + dir = 10; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"zC" = ( +/obj/structure/machinery/door/airlock/almayer/medical/glass/colony{ + name = "Morgue"; + req_one_access = null + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"zD" = ( +/obj/structure/surface/rack, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"zH" = ( +/obj/item/ashtray/bronze{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/trash/cigbutt/cigarbutt{ + pixel_x = 10; + pixel_y = 15 + }, +/obj/item/clothing/mask/cigarette{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/clothing/mask/cigarette{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/item/clothing/mask/cigarette{ + pixel_x = -5; + pixel_y = 9 + }, +/obj/structure/surface/table/reinforced/black, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"zI" = ( +/obj/structure/surface/table/reinforced, +/obj/structure/machinery/microwave{ + pixel_y = 4 + }, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"zN" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "browncorner" + }, +/area/adminlevel/ert_station/weyland_station) +"zR" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "darkgreencorner" + }, +/area/adminlevel/ert_station/weyland_station) +"zS" = ( +/obj/structure/closet/coffin, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"zT" = ( +/obj/structure/window/reinforced/toughened, +/obj/structure/closet/crate/ammo, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "browncorner" + }, +/area/adminlevel/ert_station/weyland_station) +"Ai" = ( +/obj/item/device/defibrillator/upgraded, +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/door_control{ + id = "WY_center_medbay"; + name = "Center Medbay Shutters"; + pixel_x = -7; + pixel_y = 9; + req_access_txt = "1" + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"Ak" = ( +/turf/open/floor/corsat{ + dir = 1; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"Ax" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/structure/closet/hydrant{ + pixel_y = -30 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "white" + }, +/area/adminlevel/ert_station/weyland_station) +"AA" = ( +/obj/structure/machinery/portable_atmospherics/powered/pump, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"AD" = ( +/obj/structure/surface/table/reinforced/black, +/obj/effect/spawner/random/facepaint, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "bluecorner" + }, +/area/adminlevel/ert_station/weyland_station) +"AG" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/almayer/glass{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/adminlevel/ert_station/weyland_station) +"AH" = ( +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "redcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"AO" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"AQ" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/obj/structure/closet/l3closet/virology, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"AR" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/obj/structure/pipes/vents/pump, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"AU" = ( +/turf/open/floor/corsat{ + icon_state = "arrow_east" + }, +/area/adminlevel/ert_station/weyland_station) +"AV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/structure/machinery/light/double, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "white" + }, +/area/adminlevel/ert_station/weyland_station) +"AY" = ( +/obj/structure/machinery/washing_machine, +/obj/structure/machinery/washing_machine{ + layer = 3.5; + pixel_y = 15 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"Bk" = ( +/obj/structure/barricade/handrail/wire{ + dir = 4 + }, +/obj/structure/largecrate/random/case/double, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"Bu" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/window{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"Bx" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"Bz" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/marine/colony{ + name = "Barracks" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"BG" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out" + }, +/obj/structure/machinery/light/double{ + dir = 8; + pixel_x = -10; + pixel_y = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "whitecorner" + }, +/area/adminlevel/ert_station/weyland_station) +"BL" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 + }, +/turf/open/floor/corsat{ + icon_state = "theta" + }, +/area/adminlevel/ert_station/weyland_station) +"BM" = ( +/obj/structure/surface/table, +/obj/item/ashtray/glass, +/obj/item/trash/cigbutt/cigarbutt{ + pixel_x = 6; + pixel_y = 13 + }, +/obj/item/trash/cigbutt{ + pixel_x = -10; + pixel_y = 13 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "tan" + }, +/area/adminlevel/ert_station/weyland_station) +"BT" = ( +/obj/structure/window/framed/corsat, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "WY_meeting"; + name = "\improper Meeting Room Shutters" + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/weyland_station) +"BV" = ( +/turf/open/floor/corsat{ + dir = 1; + icon_state = "bluecorner" + }, +/area/adminlevel/ert_station/weyland_station) +"Cm" = ( +/obj/structure/showcase{ + icon_state = "hub"; + name = "Telecommunication Hub" + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"Cv" = ( +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"Cw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 2 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/marine/colony{ + name = "Cryogenics" + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"Cy" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "retrosquareslight" + }, +/area/adminlevel/ert_station/weyland_station) +"CI" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"CK" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/toy/deck{ + pixel_x = 8; + pixel_y = 8 + }, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"CU" = ( +/obj/structure/pipes/standard/manifold/fourway/hidden/green, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "tan" + }, +/area/adminlevel/ert_station/weyland_station) +"De" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 9 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"Dk" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/storage/firstaid/rad{ + pixel_x = 7; + pixel_y = 6 + }, +/obj/item/storage/firstaid/toxin, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"Dn" = ( +/turf/open/floor/corsat{ + dir = 1; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"Dr" = ( +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"Ds" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "bluecorner" + }, +/area/adminlevel/ert_station/weyland_station) +"DF" = ( +/obj/structure/bookcase{ + icon_state = "book-5" + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"DH" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/ashtray/glass, +/obj/item/trash/cigbutt/cigarbutt{ + pixel_x = 6; + pixel_y = 13 + }, +/obj/item/trash/cigbutt{ + pixel_x = -10; + pixel_y = 13 + }, +/obj/item/device/flashlight/lamp/green{ + pixel_x = 16; + pixel_y = 21 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"DL" = ( +/obj/structure/showcase{ + icon_state = "processor"; + name = "Processor Unit" + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"DO" = ( +/obj/structure/showcase{ + icon_state = "relay"; + name = "Telecommunication Relay" + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"DT" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/folder/black, +/obj/item/tool/pen/blue, +/obj/structure/machinery/light/double, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"DZ" = ( +/turf/open/floor/corsat{ + icon_state = "browncorner" + }, +/area/adminlevel/ert_station/weyland_station) +"Eg" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/almayer/glass{ + name = "\improper Medical & Surgery" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "WY_center_medbay"; + name = "\improper Central Medbay Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/adminlevel/ert_station/weyland_station) +"El" = ( +/obj/structure/surface/table/reinforced, +/obj/item/reagent_container/food/drinks/shaker, +/obj/structure/machinery/light/double, +/obj/structure/window/reinforced/tinted/frosted{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"Er" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "browncorner" + }, +/area/adminlevel/ert_station/weyland_station) +"EB" = ( +/obj/structure/barricade/handrail/wire, +/turf/open/floor/corsat{ + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"EC" = ( +/turf/open/floor/corsat{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"ED" = ( +/obj/structure/morgue, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"EG" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/turf/open/floor/corsat{ + icon_state = "browncorner" + }, +/area/adminlevel/ert_station/weyland_station) +"ES" = ( +/obj/docking_port/stationary/emergency_response/idle_port2, +/turf/open/floor/plating, +/area/adminlevel/ert_station/weyland_station) +"EW" = ( +/obj/structure/surface/table/reinforced, +/obj/structure/machinery/chem_dispenser/soda/beer{ + density = 0; + pixel_y = 23 + }, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"Fr" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/paper_bin{ + pixel_y = 10 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"Fs" = ( +/obj/structure/window/reinforced/toughened{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "brown" + }, +/area/adminlevel/ert_station/weyland_station) +"FA" = ( +/obj/structure/bed, +/obj/structure/window/reinforced/toughened{ + dir = 1; + layer = 2.9 + }, +/obj/item/bedsheet/orange, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"FD" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/tool/weldingtool, +/obj/item/clothing/glasses/welding, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"FE" = ( +/obj/structure/machinery/sleep_console, +/turf/open/floor/corsat{ + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"FO" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"Gb" = ( +/turf/open/floor/corsat{ + dir = 4; + icon_state = "greencorner" + }, +/area/adminlevel/ert_station/weyland_station) +"Gd" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/weyland_station) +"Gg" = ( +/obj/structure/machinery/iv_drip, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"Gs" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_x = -10; + pixel_y = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"Gx" = ( +/obj/item/tool/weldpack{ + pixel_x = 5 + }, +/obj/structure/surface/rack, +/obj/item/tool/weldpack{ + pixel_x = -2 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"Gz" = ( +/obj/structure/pipes/standard/cap/hidden, +/obj/structure/machinery/cryo_cell{ + layer = 3.20 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"GM" = ( +/obj/structure/machinery/blackbox_recorder, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"Hc" = ( +/obj/structure/closet/medical_wall{ + pixel_x = -30 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"He" = ( +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"Hh" = ( +/obj/structure/closet/crate, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"Hk" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"Hr" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"HE" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"HN" = ( +/obj/structure/bed{ + icon_state = "psychbed" + }, +/obj/item/bedsheet/captain, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"Id" = ( +/obj/structure/machinery/door/airlock/almayer/medical/colony, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"If" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "redcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"Ik" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + pixel_x = 1; + pixel_y = 23 + }, +/turf/open/floor/corsat{ + icon_state = "damaged1" + }, +/area/adminlevel/ert_station/weyland_station) +"Im" = ( +/obj/structure/closet/coffin, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"Iv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/corsat{ + icon_state = "theta" + }, +/area/adminlevel/ert_station/weyland_station) +"IB" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "retrosquareslight" + }, +/area/adminlevel/ert_station/weyland_station) +"II" = ( +/turf/open/floor/corsat{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"IQ" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"IV" = ( +/obj/structure/machinery/light/double, +/turf/open/floor/corsat{ + icon_state = "bluecorner" + }, +/area/adminlevel/ert_station/weyland_station) +"Jc" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "white" + }, +/area/adminlevel/ert_station/weyland_station) +"Jd" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "greencorner" + }, +/area/adminlevel/ert_station/weyland_station) +"Je" = ( +/turf/open/floor/corsat{ + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"Jk" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -11 + }, +/obj/structure/mirror{ + pixel_x = -28 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "darkgreen" + }, +/area/adminlevel/ert_station/weyland_station) +"Jr" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "redcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"Js" = ( +/obj/structure/surface/table/reinforced/black, +/obj/structure/transmitter/rotary{ + do_not_disturb = 2; + name = "Weyland-Yutani Station CiC"; + phone_category = "W-Y"; + phone_id = "W-Y Station CiC" + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"Jt" = ( +/obj/structure/machinery/iv_drip, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "darkgreencorner" + }, +/area/adminlevel/ert_station/weyland_station) +"Ju" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/door_control{ + id = "WY_meeting"; + name = "Meeting Room Shutters"; + pixel_x = -7; + pixel_y = 9; + req_access_txt = "1" + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"Jw" = ( +/obj/structure/closet/cabinet, +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"Jy" = ( +/obj/structure/reagent_dispensers/beerkeg{ + density = 0 + }, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"JA" = ( +/turf/open/floor/corsat{ + dir = 4; + icon_state = "bluecorner" + }, +/area/adminlevel/ert_station/weyland_station) +"JK" = ( +/turf/open/floor/corsat{ + icon_state = "whitetancorner" + }, +/area/adminlevel/ert_station/weyland_station) +"JQ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"Kd" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"Kg" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/door_control{ + id = "WY_aft_medbay"; + name = "Aft Medbay Shutters"; + pixel_x = -7; + pixel_y = 9; + req_access_txt = "1" + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"Kk" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "white" + }, +/area/adminlevel/ert_station/weyland_station) +"Ku" = ( +/obj/structure/surface/table/reinforced, +/obj/structure/machinery/chem_dispenser/soda{ + density = 0; + pixel_y = 22 + }, +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"KC" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/almayer/glass{ + dir = 1; + name = "\improper Meeting Room" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "WY_meeting"; + name = "\improper Meeting Room Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "sigma" + }, +/area/adminlevel/ert_station/weyland_station) +"KD" = ( +/obj/structure/barricade/handrail/wire{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"KF" = ( +/turf/open/floor/corsat{ + dir = 6; + icon_state = "whitetan" + }, +/area/adminlevel/ert_station/weyland_station) +"KK" = ( +/obj/structure/surface/table/reinforced/black, +/obj/structure/machinery/computer/communications{ + dir = 8 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"KM" = ( +/obj/item/weapon/gun/shotgun/combat{ + pixel_y = 9 + }, +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/weapon/gun/shotgun/combat{ + pixel_y = -6 + }, +/obj/item/weapon/gun/shotgun/combat{ + pixel_y = 2 + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"KP" = ( +/obj/structure/machinery/cm_vending/sorted/medical/no_access{ + req_access = null + }, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"KW" = ( +/obj/structure/window/framed/corsat/indestructible/security, +/turf/open/floor/plating, +/area/adminlevel/ert_station/weyland_station) +"KZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/item/tool/wet_sign, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "white" + }, +/area/adminlevel/ert_station/weyland_station) +"Le" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/recharger, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"Ls" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "tcomms" + }, +/area/adminlevel/ert_station/weyland_station) +"Lz" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 8 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "tan" + }, +/area/adminlevel/ert_station/weyland_station) +"LF" = ( +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/plating, +/area/adminlevel/ert_station/weyland_station) +"LP" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "greencorner" + }, +/area/adminlevel/ert_station/weyland_station) +"Ma" = ( +/turf/open/floor/corsat{ + dir = 5; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"Mn" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "WY_aft_medbay"; + name = "\improper Aft Medbay Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/adminlevel/ert_station/weyland_station) +"MA" = ( +/obj/structure/bed, +/obj/item/bedsheet/medical, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"MP" = ( +/turf/open/floor/corsat{ + dir = 4; + icon_state = "redcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"MQ" = ( +/obj/structure/pipes/unary/freezer{ + icon_state = "freezer_1" + }, +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "greencorner" + }, +/area/adminlevel/ert_station/weyland_station) +"MV" = ( +/obj/item/clothing/gloves/latex, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/mask/surgical, +/obj/item/clothing/mask/surgical, +/obj/structure/surface/table/reinforced/almayer_B, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "darkgreen" + }, +/area/adminlevel/ert_station/weyland_station) +"MW" = ( +/obj/structure/surface/table, +/obj/item/reagent_container/food/drinks/bottle/whiskey{ + pixel_x = -7; + pixel_y = 16 + }, +/turf/open/floor/corsat{ + icon_state = "whitetan" + }, +/area/adminlevel/ert_station/weyland_station) +"Nd" = ( +/obj/structure/window/framed/corsat/research, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "WY_center_medbay_or"; + name = "\improper Central Medbay Operation Room Shutters" + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/weyland_station) +"Nf" = ( +/obj/structure/machinery/medical_pod/bodyscanner, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"Np" = ( +/obj/structure/bed, +/obj/item/bedsheet/orange, +/obj/effect/spawner/random/facepaint, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"Nr" = ( +/obj/structure/bed, +/obj/item/bedsheet/orange, +/obj/effect/spawner/random/goggles/lowchance, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"Ns" = ( +/obj/structure/machinery/bioprinter{ + stored_metal = 1000 + }, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "darkgreen" + }, +/area/adminlevel/ert_station/weyland_station) +"NC" = ( +/obj/structure/pipes/standard/manifold/visible, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"NK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/pipes/standard/manifold/fourway/hidden/green, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "white" + }, +/area/adminlevel/ert_station/weyland_station) +"NN" = ( +/turf/open/floor/corsat{ + icon_state = "omega" + }, +/area/adminlevel/ert_station/weyland_station) +"NO" = ( +/obj/structure/showcase{ + icon_state = "bus" + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"NR" = ( +/obj/structure/machinery/light/double{ + dir = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"NS" = ( +/obj/structure/closet/emcloset, +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"Oc" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "arrow_west" + }, +/area/adminlevel/ert_station/weyland_station) +"Og" = ( +/turf/open/floor/corsat{ + icon_state = "arrow_west" + }, +/area/adminlevel/ert_station/weyland_station) +"Oj" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/adminlevel/ert_station/weyland_station) +"On" = ( +/obj/structure/machinery/vending/snack, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"Oo" = ( +/obj/structure/surface/rack, +/obj/item/storage/pill_bottle/inaprovaline{ + pixel_x = 7 + }, +/obj/item/storage/pill_bottle/dexalin, +/obj/item/storage/pill_bottle/antitox{ + pixel_x = -5 + }, +/turf/open/floor/corsat{ + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"Oq" = ( +/obj/structure/surface/table/reinforced, +/obj/structure/machinery/gibber{ + pixel_y = 10 + }, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"Ot" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"Ov" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"OD" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"OE" = ( +/obj/structure/closet/wardrobe/chemistry_white, +/obj/structure/machinery/light/double, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "greencorner" + }, +/area/adminlevel/ert_station/weyland_station) +"OG" = ( +/obj/structure/window/reinforced/toughened{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "brown" + }, +/area/adminlevel/ert_station/weyland_station) +"OY" = ( +/obj/structure/machinery/vending/cola, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"Pc" = ( +/turf/open/floor/corsat{ + icon_state = "brown" + }, +/area/adminlevel/ert_station/weyland_station) +"Pk" = ( +/obj/structure/machinery/light/double, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"PL" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "\improper Dormitories" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "squareswood" + }, +/area/adminlevel/ert_station/weyland_station) +"Qa" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "bluecorner" + }, +/area/adminlevel/ert_station/weyland_station) +"Qb" = ( +/obj/structure/machinery/shower{ + pixel_y = 21 + }, +/obj/effect/decal/strata_decals/catwalk/prison, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/strata{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/adminlevel/ert_station/weyland_station) +"Qc" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "tcomms" + }, +/area/adminlevel/ert_station/weyland_station) +"Qk" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_x = -10; + pixel_y = 1 + }, +/obj/structure/closet/l3closet/virology, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"Qr" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/weapon/gun/smg/m39/elite, +/obj/item/weapon/gun/smg/m39/elite{ + pixel_y = -8 + }, +/obj/item/weapon/gun/smg/m39/elite{ + pixel_y = 9 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"QI" = ( +/obj/structure/bed/sofa/south/white/left, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"QQ" = ( +/obj/structure/pipes/standard/cap/hidden, +/obj/structure/machinery/cryo_cell{ + layer = 3.20 + }, +/obj/structure/machinery/light/double{ + dir = 8; + pixel_x = -10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"QR" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "redcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"QT" = ( +/turf/closed/wall/r_wall/biodome/biodome_unmeltable, +/area/adminlevel/ert_station/weyland_station) +"QV" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 18 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 18 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"QZ" = ( +/turf/open/floor/plating, +/area/adminlevel/ert_station/weyland_station) +"Rb" = ( +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "retrosquareslight" + }, +/area/adminlevel/ert_station/weyland_station) +"Rd" = ( +/obj/structure/machinery/chem_master, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"Re" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"Rj" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/turf/open/floor/corsat{ + icon_state = "redcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"Rr" = ( +/obj/structure/window/framed/corsat/cell/security, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"Rv" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/storage/box/gloves{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/masks, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"RB" = ( +/obj/structure/machinery/shower{ + dir = 8 + }, +/obj/structure/machinery/light/small, +/turf/open/floor/corsat{ + icon_state = "retrosquareslight" + }, +/area/adminlevel/ert_station/weyland_station) +"RE" = ( +/obj/structure/machinery/cm_vending/gear/antag{ + hacked = 1; + name = "\improper Response Team Automated Gear Rack"; + use_snowflake_points = 1 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"RF" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"RG" = ( +/turf/open/floor/corsat{ + icon_state = "retrosquareslight" + }, +/area/adminlevel/ert_station/weyland_station) +"RL" = ( +/obj/structure/window/framed/corsat, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "WY_meeting"; + name = "\improper Meeting Room Shutters" + }, +/turf/open/floor/plating, +/area/adminlevel/ert_station/weyland_station) +"RQ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "theta" + }, +/area/adminlevel/ert_station/weyland_station) +"RT" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/item/tool/wet_sign, +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 1 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "white" + }, +/area/adminlevel/ert_station/weyland_station) +"RZ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"Si" = ( +/obj/structure/bed/roller, +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"Sr" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/adminlevel/ert_station/weyland_station) +"Ss" = ( +/obj/structure/bed/chair/comfy/orange{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"St" = ( +/obj/structure/closet/fireaxecabinet{ + pixel_y = 29 + }, +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"Sw" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 5 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "greencorner" + }, +/area/adminlevel/ert_station/weyland_station) +"SE" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/transmitter/rotary{ + do_not_disturb = 2; + name = "Weyland-Yutani Station Meeting Room"; + phone_category = "W-Y"; + phone_id = "W-Y Station Meeting Room" + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"SH" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_x = -10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"SI" = ( +/turf/open/floor/almayer{ + icon_state = "tcomms" + }, +/area/adminlevel/ert_station/weyland_station) +"SJ" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/storage/firstaid/fire, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"SM" = ( +/obj/structure/machinery/vending/cigarette/colony, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"SO" = ( +/obj/structure/machinery/cryopod/right{ + pixel_y = 6 + }, +/turf/open/floor/corsat{ + icon_state = "cargo" + }, +/area/adminlevel/ert_station/weyland_station) +"SY" = ( +/obj/structure/surface/table/reinforced, +/obj/item/trash/plate{ + pixel_y = 2 + }, +/obj/item/trash/plate{ + pixel_y = 4 + }, +/obj/item/trash/plate{ + pixel_y = 6 + }, +/obj/item/trash/plate{ + pixel_y = 8 + }, +/obj/item/trash/plate{ + pixel_y = 10 + }, +/obj/structure/window/reinforced/tinted/frosted{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"Ta" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "tan" + }, +/area/adminlevel/ert_station/weyland_station) +"Tf" = ( +/obj/structure/surface/rack, +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/obj/item/stack/sheet/glass{ + amount = 50; + pixel_x = 3; + pixel_y = 3 + }, +/obj/structure/machinery/light/double{ + dir = 8; + pixel_x = -10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"Tk" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/closet/hydrant{ + pixel_y = 30 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "white" + }, +/area/adminlevel/ert_station/weyland_station) +"Tx" = ( +/obj/structure/bed/roller, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"TL" = ( +/obj/structure/machinery/medical_pod/autodoc/unskilled{ + dir = 1 + }, +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + dir = 5; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"TN" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor/corsat{ + icon_state = "redcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"TT" = ( +/obj/structure/bed/chair/comfy/orange{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"TW" = ( +/obj/structure/largecrate/random/barrel/green, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/turf/open/floor/corsat{ + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"Ub" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/structure/pipes/standard/manifold/hidden/green, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "tan" + }, +/area/adminlevel/ert_station/weyland_station) +"Ud" = ( +/turf/open/floor/corsat{ + dir = 8; + icon_state = "browncorner" + }, +/area/adminlevel/ert_station/weyland_station) +"Uk" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony{ + dir = 1; + name = "\improper Toilet" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"Us" = ( +/turf/open/floor/corsat{ + dir = 8; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"Uu" = ( +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" + }, +/area/adminlevel/ert_station/weyland_station) +"Ux" = ( +/turf/open/space/basic, +/area/space) +"UJ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "white" + }, +/area/adminlevel/ert_station/weyland_station) +"UV" = ( +/turf/open/floor/corsat{ + dir = 1; + icon_state = "redcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"Vm" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "white" + }, +/area/adminlevel/ert_station/weyland_station) +"Vp" = ( +/turf/open/floor/corsat{ + dir = 4; + icon_state = "brown" + }, +/area/adminlevel/ert_station/weyland_station) +"VA" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"VJ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"VZ" = ( +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"Wj" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "whitetan" + }, +/area/adminlevel/ert_station/weyland_station) +"Wo" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor/glass/colony{ + name = "Engineering" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/adminlevel/ert_station/weyland_station) +"Wu" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/obj/structure/closet/emcloset{ + density = 0; + pixel_x = 8; + pixel_y = 15 + }, +/obj/structure/closet/firecloset/full{ + density = 0; + pixel_x = -8; + pixel_y = 15 + }, +/obj/structure/machinery/light/double{ + dir = 8; + pixel_x = -10; + pixel_y = 1 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/turf/open/floor/corsat{ + icon_state = "whitecorner" + }, +/area/adminlevel/ert_station/weyland_station) +"WD" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_10"; + pixel_y = 19 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"WE" = ( +/turf/open/floor/corsat{ + dir = 4; + icon_state = "whitetan" + }, +/area/adminlevel/ert_station/weyland_station) +"WU" = ( +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"WW" = ( +/obj/structure/bed/chair, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"Xh" = ( +/obj/structure/window/reinforced/toughened{ + dir = 4 + }, +/obj/structure/machinery/light/double, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "brown" + }, +/area/adminlevel/ert_station/weyland_station) +"Xi" = ( +/obj/structure/pipes/standard/tank/oxygen, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"Xj" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/paper, +/obj/item/tool/pen, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"Xn" = ( +/obj/structure/surface/rack, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"Xo" = ( +/obj/structure/machinery/vending/dinnerware, +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) +"Xs" = ( +/obj/structure/target, +/turf/open/floor/corsat{ + icon_state = "theta" + }, +/area/adminlevel/ert_station/weyland_station) +"Xt" = ( +/turf/open/floor/corsat{ + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"Xw" = ( +/obj/structure/machinery/light/double, +/turf/open/floor/corsat{ + dir = 10; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"Xx" = ( +/obj/structure/coatrack{ + pixel_y = 21 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"XD" = ( +/obj/structure/machinery/vending/coffee, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "red" + }, +/area/adminlevel/ert_station/weyland_station) +"XQ" = ( +/turf/open/floor/corsat{ + dir = 1; + icon_state = "brown" + }, +/area/adminlevel/ert_station/weyland_station) +"XR" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_x = 10; + pixel_y = 1 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "brown" + }, +/area/adminlevel/ert_station/weyland_station) +"Ya" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/closet/medical_wall{ + pixel_x = 30 + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "white" + }, +/area/adminlevel/ert_station/weyland_station) +"Yb" = ( +/obj/structure/surface/table/woodentable/fancy, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"Yj" = ( +/obj/structure/machinery/light/double, +/turf/open/floor/corsat{ + dir = 6; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"Yt" = ( +/obj/structure/bed/chair/comfy/orange, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"Yv" = ( +/obj/structure/surface/table/reinforced/black, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "blue" + }, +/area/adminlevel/ert_station/weyland_station) +"YB" = ( +/obj/structure/machinery/photocopier{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor/wood/ship, +/area/adminlevel/ert_station/weyland_station) +"YC" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"YN" = ( +/obj/structure/bedsheetbin, +/obj/structure/machinery/light/double{ + dir = 1 + }, +/turf/open/floor/corsat{ + icon_state = "squares" + }, +/area/adminlevel/ert_station/weyland_station) +"YZ" = ( +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + pixel_x = 1; + pixel_y = 21 + }, +/turf/open/floor/corsat{ + icon_state = "retrosquareslight" + }, +/area/adminlevel/ert_station/weyland_station) +"Za" = ( +/obj/structure/morgue, +/turf/open/floor/corsat{ + dir = 9; + icon_state = "green" + }, +/area/adminlevel/ert_station/weyland_station) +"Zl" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony{ + name = "\improper Fridge" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/adminlevel/ert_station/weyland_station) +"Zn" = ( +/turf/open/floor/corsat{ + dir = 1; + icon_state = "tan" + }, +/area/adminlevel/ert_station/weyland_station) +"Zt" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + dir = 8; + icon_state = "redcorner" + }, +/area/adminlevel/ert_station/weyland_station) +"Zu" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/almayer/glass{ + dir = 1; + name = "\improper Meeting Room" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "WY_meeting"; + name = "\improper Meeting Room Shutters" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "sigma" + }, +/area/adminlevel/ert_station/weyland_station) +"ZH" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/turf/open/floor/corsat{ + dir = 4; + icon_state = "yellow" + }, +/area/adminlevel/ert_station/weyland_station) +"ZU" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/turf/open/floor/corsat{ + icon_state = "plate" + }, +/area/adminlevel/ert_station/weyland_station) +"ZV" = ( +/obj/structure/machinery/shower{ + dir = 4 + }, +/obj/structure/machinery/light/small, +/turf/open/floor/corsat{ + icon_state = "retrosquareslight" + }, +/area/adminlevel/ert_station/weyland_station) +"ZX" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/corsat{ + icon_state = "sterileplate" + }, +/area/adminlevel/ert_station/weyland_station) + +(1,1,1) = {" +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +"} +(2,1,1) = {" +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +"} +(3,1,1) = {" +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +QT +QT +lY +lY +lY +QT +QT +QT +lY +lY +lY +QT +QT +QT +lY +lY +lY +QT +QT +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +"} +(4,1,1) = {" +Ux +Ux +Ux +Ux +Ux +QT +QT +lY +lY +QT +QT +Wu +tz +va +va +va +lU +va +va +va +va +va +lU +va +va +va +tz +BG +QT +QT +lY +lY +QT +QT +Ux +Ux +Ux +Ux +Ux +Ux +"} +(5,1,1) = {" +Ux +Ux +Ux +Ux +Ux +QT +rN +zH +Yv +ap +fX +Vm +vz +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +vz +fy +fX +Tf +iV +ky +nG +QT +Ux +Ux +Ux +Ux +Ux +Ux +"} +(6,1,1) = {" +Ux +Ux +Ux +Ux +QT +QT +Yt +Js +gj +Ss +fX +Vm +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +ES +QZ +KZ +Wo +Dr +WU +Dr +vh +QT +QT +Ux +Ux +Ux +Ux +Ux +"} +(7,1,1) = {" +Ux +QT +lY +lY +QT +cU +BV +Dr +xh +au +fX +Vm +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +Kk +jb +dc +IQ +JQ +ts +zh +QT +lY +lY +QT +Ux +Ux +"} +(8,1,1) = {" +Ux +QT +GM +TT +vc +BV +rK +dc +eQ +au +fX +Vm +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +AV +fX +cY +Dr +ZU +Dr +ts +oL +oL +Xw +QT +Ux +Ux +"} +(9,1,1) = {" +Ux +QT +bf +KK +qD +JA +Ds +AD +al +oE +fX +Tk +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +Ax +fX +uv +eO +Bk +mx +EC +Gx +rB +vh +lY +Ux +Ux +"} +(10,1,1) = {" +Ux +QT +fX +fX +fX +dC +yo +fX +md +AG +fX +Vm +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +AV +fX +NS +EB +cn +pa +KD +pK +ng +vh +lY +Ux +Ux +"} +(11,1,1) = {" +Ux +KW +CK +xA +Rr +Ak +AO +fX +Qa +Dr +WU +Vm +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +fy +Wo +Dr +EB +ul +AU +KD +eA +yb +VZ +lY +Ux +Ux +"} +(12,1,1) = {" +Ux +KW +lE +CI +eJ +Hk +cw +fX +vv +dc +IQ +xg +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +RT +jb +dc +lx +gH +oL +II +AA +FD +vh +lY +Ux +Ux +"} +(13,1,1) = {" +Ux +QT +fX +fX +fX +hZ +AO +fX +dM +IV +fX +Vm +Gd +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +QZ +Gd +fy +fX +St +EC +Dr +eO +Re +sg +hz +Yj +QT +Ux +Ux +"} +(14,1,1) = {" +Ux +KW +lD +RF +qu +Hk +jz +fX +rX +oE +fX +nS +NK +Jc +UJ +Ya +Jc +Jc +Jc +UJ +Jc +Jc +Jc +Ya +UJ +Jc +NK +yj +fX +fX +mn +ZH +mh +fX +fX +fX +fX +QT +Ux +Ux +"} +(15,1,1) = {" +Ux +KW +lE +yM +Rr +Ma +eG +fX +md +AG +fX +fX +Oc +Og +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +AU +ib +fX +fX +fX +fX +fX +fX +fX +Za +Us +qL +QT +Ux +Ux +"} +(16,1,1) = {" +QT +QT +fX +fX +fX +fX +fX +fX +xT +Zn +fX +fX +md +AG +fX +th +Jk +Ns +fX +fX +KP +Hc +nq +fX +fX +lh +oQ +fX +fX +fX +Xn +Us +jY +vN +Dn +Dr +kn +QT +QT +Ux +"} +(17,1,1) = {" +lY +ZV +fX +Jw +aG +Yb +fX +sY +xT +JK +fX +MP +fF +TN +fX +hu +Dr +ee +Nd +eB +el +Dr +qF +nJ +fX +MP +fF +TN +oM +QQ +Sw +Dr +FE +vN +ED +xh +qF +dT +dx +Ux +"} +(18,1,1) = {" +QT +Ik +ns +He +AR +mg +PL +ik +CU +ya +fX +rY +Dr +hM +fX +MV +pq +zR +Nd +gW +Dr +YC +Dr +ll +fX +kA +Dr +xN +oM +Xi +NC +YC +kW +vN +Dn +al +Dr +Xt +dx +Ux +"} +(19,1,1) = {" +lY +ck +fX +yD +xZ +zD +fX +hK +rF +id +fX +kA +Bx +lI +fX +wa +Jt +al +Nd +Rd +Dr +al +WU +ob +fX +kA +Bx +lI +oM +Gz +NC +in +bk +vN +zS +al +dE +Im +dx +Ux +"} +(20,1,1) = {" +QT +fX +fX +fX +fX +fX +fX +cX +kV +cK +fX +kA +Dr +xN +fX +kO +kO +Id +fX +Ai +Dr +al +WU +OE +fX +dO +Dr +vP +fX +MQ +De +RQ +Xt +fX +vN +zC +vN +fX +QT +Ux +"} +(21,1,1) = {" +lY +Rb +fX +Jw +sr +xk +fX +ho +kV +lv +fX +On +Dr +xN +fX +Nf +Us +ei +SH +el +Dr +al +pF +Dr +Eg +Dr +NN +al +yp +Dr +WU +al +qF +SH +el +al +Xt +fX +QT +Ux +"} +(22,1,1) = {" +QT +Ik +ns +He +AR +mg +PL +ik +Ub +qV +fX +cz +Dr +xN +fX +gf +Dr +BL +dc +IQ +IQ +cZ +dc +dc +hC +dc +dc +iE +Mn +dc +IQ +iE +Jd +mI +mI +LP +qF +Qk +dx +Ux +"} +(23,1,1) = {" +lY +RB +fX +HN +xZ +Yb +fX +hK +rF +id +fX +er +Dr +hM +fX +TL +Gb +Dr +Dr +Dr +Dr +Dr +dE +kq +fX +AH +Dr +la +fX +iP +pF +al +ek +ou +Kg +WW +WU +oX +dx +Ux +"} +(24,1,1) = {" +QT +fX +fX +fX +fX +fX +fX +cX +kV +uX +fX +QI +Bx +lI +fX +fX +oT +Gg +MA +Si +Gg +eX +Tx +fX +fX +kA +Bx +lI +oM +iU +Dr +in +ek +SJ +Rv +WW +WU +wU +dx +Ux +"} +(25,1,1) = {" +lY +ZV +fX +Jw +aG +Yb +fX +ho +kV +MW +fX +tc +NN +Zt +td +fX +sX +sX +sX +fX +sX +sX +sX +fX +fD +UV +WU +Hh +oM +ka +Dr +ZU +ek +Dk +Le +WW +WU +Oo +dx +Ux +"} +(26,1,1) = {" +QT +Ik +ns +He +AR +mg +PL +ik +bp +Wj +fX +OY +Dr +al +fC +cq +hG +hG +hG +jK +hG +hG +hG +cq +UV +Dr +rK +TW +oM +lS +Gb +Dr +qF +Us +Us +el +dE +AQ +dx +Ux +"} +(27,1,1) = {" +lY +ck +fX +lq +xZ +DF +fX +hK +rF +id +fX +XD +Dr +Ot +iJ +QR +pv +dc +iJ +sq +If +dc +pv +Jr +If +dc +eQ +dz +fX +fX +nY +nb +nb +nb +Gg +eX +ab +fX +QT +Ux +"} +(28,1,1) = {" +QT +fX +fX +fX +fX +fX +fX +cX +BM +cK +fX +rY +bG +Rj +mE +fX +fe +KC +RL +RL +RL +xD +Zu +fX +fX +WU +vb +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +QT +Ux +"} +(29,1,1) = {" +lY +Rb +fX +Jw +tW +Xj +fX +ho +kV +gL +fX +kA +RZ +Je +fX +fX +NR +He +fl +Yb +fl +He +Pk +fX +fX +Dr +bV +og +Vp +Vp +yH +Ud +vU +gC +zT +jm +RE +pB +QT +Ux +"} +(30,1,1) = {" +QT +Ik +ns +He +AR +mg +PL +Lz +Ta +qV +fX +fX +fI +fX +fX +Xx +VJ +He +He +He +He +He +VJ +SM +fX +WU +pc +kM +KM +uE +Sr +pv +pY +Er +OG +OG +OG +OG +lY +Ux +"} +(31,1,1) = {" +lY +RB +fX +lq +xZ +DF +fX +sB +WE +KF +fX +YN +al +Dr +tR +QV +He +ro +ro +ro +ro +ro +VJ +sM +fX +Dr +Oj +pf +Qr +nw +XQ +in +Xs +Pc +FA +gK +Nr +gK +lY +Ux +"} +(32,1,1) = {" +QT +QT +fX +fX +fX +fX +fX +Bu +SY +El +fX +AY +sy +Dr +BT +YB +He +Yb +DH +Yb +Fr +iw +VJ +bv +fX +uw +zN +XR +Uu +Uu +lH +al +DZ +Fs +OG +OG +Xh +QT +QT +Ux +"} +(33,1,1) = {" +Ux +QT +EW +tX +tX +tX +tX +gm +tX +nQ +fX +fX +fX +fX +BT +WD +He +Yb +SE +aG +Ju +Yb +VJ +sA +fX +fX +fX +fX +fX +fX +fX +OD +Pc +FA +Np +gK +wE +lY +Ux +Ux +"} +(34,1,1) = {" +Ux +QT +Ku +ZX +lw +lw +lw +cm +VA +zI +fX +nT +Ls +DO +BT +je +He +sO +sO +sO +sO +sO +su +sH +fX +eh +mv +mv +cW +Bz +Gs +EG +pE +Vp +Vp +Vp +yH +lY +Ux +Ux +"} +(35,1,1) = {" +Ux +QT +QT +dy +iT +Oq +ha +Xo +gm +Jy +fX +kF +SI +NO +fX +Cv +He +He +He +HE +He +He +He +DT +fX +Qb +RG +RG +kr +WU +Dr +Pc +bw +gK +gK +gq +QT +QT +Ux +Ux +"} +(36,1,1) = {" +Ux +Ux +QT +lY +lY +lY +lY +QT +Zl +fX +fX +Cm +SI +DL +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +jE +RG +RG +rc +fX +fX +fX +QT +lY +lY +lY +QT +Ux +Ux +Ux +"} +(37,1,1) = {" +Ux +Ux +Ux +Ux +Ux +Ux +Ux +QT +vW +tX +fX +Cm +SI +YC +mV +xE +gh +Iv +FO +gh +FO +Iv +gh +FO +Cw +kr +RG +RG +nI +Uk +IB +Cy +QT +Ux +Ux +Ux +Ux +Ux +Ux +Ux +"} +(38,1,1) = {" +Ux +Ux +Ux +Ux +Ux +Ux +Ux +QT +uR +Hr +fX +DL +Qc +qv +IQ +Kd +LF +LF +LF +LF +LF +LF +LF +LF +Ov +lo +cr +cr +rD +fX +YZ +ck +QT +Ux +Ux +Ux +Ux +Ux +Ux +Ux +"} +(39,1,1) = {" +Ux +Ux +Ux +Ux +Ux +Ux +Ux +QT +QT +QT +QT +QT +QT +QT +QT +QT +vX +lT +SO +vX +lT +vX +lT +SO +QT +QT +QT +QT +QT +QT +QT +QT +QT +Ux +Ux +Ux +Ux +Ux +Ux +Ux +"} +(40,1,1) = {" +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +QT +QT +QT +QT +QT +QT +QT +QT +QT +QT +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +Ux +"} diff --git a/maps/tents/tent_big.dmm b/maps/tents/tent_big.dmm index f341e67ce2aa..acf19e26a98e 100644 --- a/maps/tents/tent_big.dmm +++ b/maps/tents/tent_big.dmm @@ -7,6 +7,10 @@ /obj/structure/tent_curtain, /turf/template_noop, /area/template_noop) +"k" = ( +/obj/structure/blocker/tent/full_tile, +/turf/template_noop, +/area/template_noop) "n" = ( /obj/structure/blocker/tent{ dir = 4 @@ -59,19 +63,19 @@ /area/template_noop) (1,1,1) = {" -O +k J v a "} (2,1,1) = {" -O +k S O x "} (3,1,1) = {" -O +k n s G diff --git a/maps/tents/tent_cmd.dmm b/maps/tents/tent_cmd.dmm index e7260ca9bccf..0dbd6a6ef330 100644 --- a/maps/tents/tent_cmd.dmm +++ b/maps/tents/tent_cmd.dmm @@ -30,6 +30,7 @@ /turf/template_noop, /area/template_noop) "p" = ( +/obj/structure/blocker/tent/full_tile, /turf/template_noop, /area/template_noop) "v" = ( diff --git a/maps/tents/tent_med.dmm b/maps/tents/tent_med.dmm index fcb446a68e25..527f3dc7bc05 100644 --- a/maps/tents/tent_med.dmm +++ b/maps/tents/tent_med.dmm @@ -16,6 +16,7 @@ /turf/template_noop, /area/template_noop) "p" = ( +/obj/structure/blocker/tent/full_tile, /turf/template_noop, /area/template_noop) "v" = ( diff --git a/maps/tents/tent_reqs.dmm b/maps/tents/tent_reqs.dmm index 7d9cf926e698..2dc47531ed37 100644 --- a/maps/tents/tent_reqs.dmm +++ b/maps/tents/tent_reqs.dmm @@ -70,6 +70,10 @@ }, /turf/template_noop, /area/template_noop) +"R" = ( +/obj/structure/blocker/tent/full_tile, +/turf/template_noop, +/area/template_noop) "S" = ( /obj/structure/blocker/tent{ dir = 8 @@ -83,25 +87,25 @@ /area/template_noop) (1,1,1) = {" -a +R B S m "} (2,1,1) = {" -a +R J a c "} (3,1,1) = {" -a +R w U k "} (4,1,1) = {" -a +R n d k diff --git a/maps/tutorial/tutorial_12x12.dmm b/maps/tutorial/tutorial_12x12.dmm new file mode 100644 index 000000000000..a682957ea702 --- /dev/null +++ b/maps/tutorial/tutorial_12x12.dmm @@ -0,0 +1,180 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/almayer/outer, +/area/misc/tutorial) +"z" = ( +/turf/open/floor/almayer, +/area/misc/tutorial) +"R" = ( +/obj/effect/landmark/tutorial_bottom_left, +/turf/open/floor/almayer, +/area/misc/tutorial) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +z +z +z +z +z +z +z +z +z +R +a +"} +(3,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(4,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(5,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(6,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(7,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(8,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(9,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(10,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(11,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(12,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/tutorial/tutorial_7x7.dmm b/maps/tutorial/tutorial_7x7.dmm new file mode 100644 index 000000000000..4297ef72ab8b --- /dev/null +++ b/maps/tutorial/tutorial_7x7.dmm @@ -0,0 +1,75 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/almayer/outer, +/area/misc/tutorial) +"z" = ( +/turf/open/floor/almayer, +/area/misc/tutorial) +"R" = ( +/obj/effect/landmark/tutorial_bottom_left, +/turf/open/floor/almayer, +/area/misc/tutorial) + +(1,1,1) = {" +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +z +z +z +z +R +a +"} +(3,1,1) = {" +a +z +z +z +z +z +a +"} +(4,1,1) = {" +a +z +z +z +z +z +a +"} +(5,1,1) = {" +a +z +z +z +z +z +a +"} +(6,1,1) = {" +a +z +z +z +z +z +a +"} +(7,1,1) = {" +a +a +a +a +a +a +a +"} diff --git a/maps/tutorial/tutorial_8x9.dmm b/maps/tutorial/tutorial_8x9.dmm new file mode 100644 index 000000000000..fc0cdd7a3e48 --- /dev/null +++ b/maps/tutorial/tutorial_8x9.dmm @@ -0,0 +1,100 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/almayer/outer, +/area/misc/tutorial) +"z" = ( +/turf/open/floor/almayer, +/area/misc/tutorial) +"R" = ( +/obj/effect/landmark/tutorial_bottom_left, +/turf/open/floor/almayer, +/area/misc/tutorial) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +z +z +z +z +z +z +R +a +"} +(3,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(4,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(5,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(6,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(7,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(8,1,1) = {" +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/tutorial/tutorial_8x9_nb.dmm b/maps/tutorial/tutorial_8x9_nb.dmm new file mode 100644 index 000000000000..2e03d5162f65 --- /dev/null +++ b/maps/tutorial/tutorial_8x9_nb.dmm @@ -0,0 +1,100 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/almayer/outer, +/area/misc/tutorial/no_baselight) +"z" = ( +/turf/open/floor/almayer, +/area/misc/tutorial/no_baselight) +"R" = ( +/obj/effect/landmark/tutorial_bottom_left, +/turf/open/floor/almayer, +/area/misc/tutorial/no_baselight) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +z +z +z +z +z +z +R +a +"} +(3,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(4,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(5,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(6,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(7,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(8,1,1) = {" +a +a +a +a +a +a +a +a +a +"} diff --git a/nano/images/weapons/88m4.png b/nano/images/weapons/88m4.png deleted file mode 100644 index 77faa65720af..000000000000 Binary files a/nano/images/weapons/88m4.png and /dev/null differ diff --git a/nano/images/weapons/aamateba.png b/nano/images/weapons/aamateba.png deleted file mode 100644 index 30a5c1c72c68..000000000000 Binary files a/nano/images/weapons/aamateba.png and /dev/null differ diff --git a/nano/images/weapons/amateba.png b/nano/images/weapons/amateba.png deleted file mode 100644 index 6d411d2ad7fc..000000000000 Binary files a/nano/images/weapons/amateba.png and /dev/null differ diff --git a/nano/images/weapons/auto.png b/nano/images/weapons/auto.png deleted file mode 100644 index 7efc6ff1c892..000000000000 Binary files a/nano/images/weapons/auto.png and /dev/null differ diff --git a/nano/images/weapons/auto9.png b/nano/images/weapons/auto9.png deleted file mode 100644 index 8fbc101f2f72..000000000000 Binary files a/nano/images/weapons/auto9.png and /dev/null differ diff --git a/nano/images/weapons/b92fs.png b/nano/images/weapons/b92fs.png deleted file mode 100644 index 2788124dfb8f..000000000000 Binary files a/nano/images/weapons/b92fs.png and /dev/null differ diff --git a/nano/images/weapons/burst.png b/nano/images/weapons/burst.png deleted file mode 100644 index 669bd676ebb0..000000000000 Binary files a/nano/images/weapons/burst.png and /dev/null differ diff --git a/nano/images/weapons/c70.png b/nano/images/weapons/c70.png deleted file mode 100644 index b7e2ed731ba1..000000000000 Binary files a/nano/images/weapons/c70.png and /dev/null differ diff --git a/nano/images/weapons/c_deagle.png b/nano/images/weapons/c_deagle.png deleted file mode 100644 index c2a5c991acf8..000000000000 Binary files a/nano/images/weapons/c_deagle.png and /dev/null differ diff --git a/nano/images/weapons/cmateba.png b/nano/images/weapons/cmateba.png deleted file mode 100644 index f949d4b54731..000000000000 Binary files a/nano/images/weapons/cmateba.png and /dev/null differ diff --git a/nano/images/weapons/cshotgun.png b/nano/images/weapons/cshotgun.png deleted file mode 100644 index 9820f5854679..000000000000 Binary files a/nano/images/weapons/cshotgun.png and /dev/null differ diff --git a/nano/images/weapons/dartgun.png b/nano/images/weapons/dartgun.png deleted file mode 100644 index 218dc742dc9b..000000000000 Binary files a/nano/images/weapons/dartgun.png and /dev/null differ diff --git a/nano/images/weapons/deagle.png b/nano/images/weapons/deagle.png deleted file mode 100644 index 059a730d7efd..000000000000 Binary files a/nano/images/weapons/deagle.png and /dev/null differ diff --git a/nano/images/weapons/disabled_automatic.png b/nano/images/weapons/disabled_automatic.png deleted file mode 100644 index 94da079d8049..000000000000 Binary files a/nano/images/weapons/disabled_automatic.png and /dev/null differ diff --git a/nano/images/weapons/disabled_burst.png b/nano/images/weapons/disabled_burst.png deleted file mode 100644 index 71b88bcaf945..000000000000 Binary files a/nano/images/weapons/disabled_burst.png and /dev/null differ diff --git a/nano/images/weapons/disabled_single.png b/nano/images/weapons/disabled_single.png deleted file mode 100644 index bf2cef4b1507..000000000000 Binary files a/nano/images/weapons/disabled_single.png and /dev/null differ diff --git a/nano/images/weapons/dshotgun.png b/nano/images/weapons/dshotgun.png deleted file mode 100644 index cd795982816b..000000000000 Binary files a/nano/images/weapons/dshotgun.png and /dev/null differ diff --git a/nano/images/weapons/fp9000.png b/nano/images/weapons/fp9000.png deleted file mode 100644 index b9f971eb0773..000000000000 Binary files a/nano/images/weapons/fp9000.png and /dev/null differ diff --git a/nano/images/weapons/fp9000_pmc.png b/nano/images/weapons/fp9000_pmc.png deleted file mode 100644 index b9f971eb0773..000000000000 Binary files a/nano/images/weapons/fp9000_pmc.png and /dev/null differ diff --git a/nano/images/weapons/g_deagle.png b/nano/images/weapons/g_deagle.png deleted file mode 100644 index c2a5c991acf8..000000000000 Binary files a/nano/images/weapons/g_deagle.png and /dev/null differ diff --git a/nano/images/weapons/hg3712.png b/nano/images/weapons/hg3712.png deleted file mode 100644 index f7f32190c468..000000000000 Binary files a/nano/images/weapons/hg3712.png and /dev/null differ diff --git a/nano/images/weapons/highpower.png b/nano/images/weapons/highpower.png deleted file mode 100644 index a7d25c44803b..000000000000 Binary files a/nano/images/weapons/highpower.png and /dev/null differ diff --git a/nano/images/weapons/holdout.png b/nano/images/weapons/holdout.png deleted file mode 100644 index 1d6f26fad25f..000000000000 Binary files a/nano/images/weapons/holdout.png and /dev/null differ diff --git a/nano/images/weapons/hunting.png b/nano/images/weapons/hunting.png deleted file mode 100644 index 5d9613117f07..000000000000 Binary files a/nano/images/weapons/hunting.png and /dev/null differ diff --git a/nano/images/weapons/kt42.png b/nano/images/weapons/kt42.png deleted file mode 100644 index ecf0ee41a9b7..000000000000 Binary files a/nano/images/weapons/kt42.png and /dev/null differ diff --git a/nano/images/weapons/l42mk1.png b/nano/images/weapons/l42mk1.png deleted file mode 100644 index b5efcc14d331..000000000000 Binary files a/nano/images/weapons/l42mk1.png and /dev/null differ diff --git a/nano/images/weapons/m16.png b/nano/images/weapons/m16.png deleted file mode 100644 index 2287f7319696..000000000000 Binary files a/nano/images/weapons/m16.png and /dev/null differ diff --git a/nano/images/weapons/m240.png b/nano/images/weapons/m240.png deleted file mode 100644 index 72eb477c9efa..000000000000 Binary files a/nano/images/weapons/m240.png and /dev/null differ diff --git a/nano/images/weapons/m240t.png b/nano/images/weapons/m240t.png deleted file mode 100644 index 619551d690e8..000000000000 Binary files a/nano/images/weapons/m240t.png and /dev/null differ diff --git a/nano/images/weapons/m37-17.png b/nano/images/weapons/m37-17.png deleted file mode 100644 index 7d53cbd76108..000000000000 Binary files a/nano/images/weapons/m37-17.png and /dev/null differ diff --git a/nano/images/weapons/m37.png b/nano/images/weapons/m37.png deleted file mode 100644 index f888adaeb6be..000000000000 Binary files a/nano/images/weapons/m37.png and /dev/null differ diff --git a/nano/images/weapons/m39.png b/nano/images/weapons/m39.png deleted file mode 100644 index f6fbb0a48961..000000000000 Binary files a/nano/images/weapons/m39.png and /dev/null differ diff --git a/nano/images/weapons/m41a.png b/nano/images/weapons/m41a.png deleted file mode 100644 index 9476e0d1f40f..000000000000 Binary files a/nano/images/weapons/m41a.png and /dev/null differ diff --git a/nano/images/weapons/m41a2.png b/nano/images/weapons/m41a2.png deleted file mode 100644 index 4179cb37f5c3..000000000000 Binary files a/nano/images/weapons/m41a2.png and /dev/null differ diff --git a/nano/images/weapons/m41ae2.png b/nano/images/weapons/m41ae2.png deleted file mode 100644 index 4a5232fd6638..000000000000 Binary files a/nano/images/weapons/m41ae2.png and /dev/null differ diff --git a/nano/images/weapons/m41amk1.png b/nano/images/weapons/m41amk1.png deleted file mode 100644 index 3f44c62b0fad..000000000000 Binary files a/nano/images/weapons/m41amk1.png and /dev/null differ diff --git a/nano/images/weapons/m41b.png b/nano/images/weapons/m41b.png deleted file mode 100644 index 1d63443f25fa..000000000000 Binary files a/nano/images/weapons/m41b.png and /dev/null differ diff --git a/nano/images/weapons/m42a.png b/nano/images/weapons/m42a.png deleted file mode 100644 index f0d07328c122..000000000000 Binary files a/nano/images/weapons/m42a.png and /dev/null differ diff --git a/nano/images/weapons/m42c.png b/nano/images/weapons/m42c.png deleted file mode 100644 index 47d53b86ced1..000000000000 Binary files a/nano/images/weapons/m42c.png and /dev/null differ diff --git a/nano/images/weapons/m44r.png b/nano/images/weapons/m44r.png deleted file mode 100644 index d7deb2589ed3..000000000000 Binary files a/nano/images/weapons/m44r.png and /dev/null differ diff --git a/nano/images/weapons/m44rc.png b/nano/images/weapons/m44rc.png deleted file mode 100644 index 1c20973a0a99..000000000000 Binary files a/nano/images/weapons/m44rc.png and /dev/null differ diff --git a/nano/images/weapons/m46c.png b/nano/images/weapons/m46c.png deleted file mode 100644 index d404a6d88f67..000000000000 Binary files a/nano/images/weapons/m46c.png and /dev/null differ diff --git a/nano/images/weapons/m4a3.png b/nano/images/weapons/m4a3.png deleted file mode 100644 index 9169c71c5176..000000000000 Binary files a/nano/images/weapons/m4a3.png and /dev/null differ diff --git a/nano/images/weapons/m4a345.png b/nano/images/weapons/m4a345.png deleted file mode 100644 index 1ba00158467e..000000000000 Binary files a/nano/images/weapons/m4a345.png and /dev/null differ diff --git a/nano/images/weapons/m4a3c.png b/nano/images/weapons/m4a3c.png deleted file mode 100644 index 95731a6c7160..000000000000 Binary files a/nano/images/weapons/m4a3c.png and /dev/null differ diff --git a/nano/images/weapons/m5.png b/nano/images/weapons/m5.png deleted file mode 100644 index 7d502fdaafc5..000000000000 Binary files a/nano/images/weapons/m5.png and /dev/null differ diff --git a/nano/images/weapons/m56.png b/nano/images/weapons/m56.png deleted file mode 100644 index baf9b9bd9c3c..000000000000 Binary files a/nano/images/weapons/m56.png and /dev/null differ diff --git a/nano/images/weapons/m57a4.png b/nano/images/weapons/m57a4.png deleted file mode 100644 index 6c2cbcbdbe8b..000000000000 Binary files a/nano/images/weapons/m57a4.png and /dev/null differ diff --git a/nano/images/weapons/m60.png b/nano/images/weapons/m60.png deleted file mode 100644 index 08baffaa747f..000000000000 Binary files a/nano/images/weapons/m60.png and /dev/null differ diff --git a/nano/images/weapons/m79.png b/nano/images/weapons/m79.png deleted file mode 100644 index 365280f2424c..000000000000 Binary files a/nano/images/weapons/m79.png and /dev/null differ diff --git a/nano/images/weapons/m81.png b/nano/images/weapons/m81.png deleted file mode 100644 index 7b1a6a195b33..000000000000 Binary files a/nano/images/weapons/m81.png and /dev/null differ diff --git a/nano/images/weapons/m82f.png b/nano/images/weapons/m82f.png deleted file mode 100644 index f6d5e24ec889..000000000000 Binary files a/nano/images/weapons/m82f.png and /dev/null differ diff --git a/nano/images/weapons/m92.png b/nano/images/weapons/m92.png deleted file mode 100644 index ce64c3df3637..000000000000 Binary files a/nano/images/weapons/m92.png and /dev/null differ diff --git a/nano/images/weapons/m93b2.png b/nano/images/weapons/m93b2.png deleted file mode 100644 index 987f56643afa..000000000000 Binary files a/nano/images/weapons/m93b2.png and /dev/null differ diff --git a/nano/images/weapons/mac15.png b/nano/images/weapons/mac15.png deleted file mode 100644 index 179c8b7a61ad..000000000000 Binary files a/nano/images/weapons/mac15.png and /dev/null differ diff --git a/nano/images/weapons/mar30.png b/nano/images/weapons/mar30.png deleted file mode 100644 index 3a5c19f33663..000000000000 Binary files a/nano/images/weapons/mar30.png and /dev/null differ diff --git a/nano/images/weapons/mar40.png b/nano/images/weapons/mar40.png deleted file mode 100644 index 043d6529ef33..000000000000 Binary files a/nano/images/weapons/mar40.png and /dev/null differ diff --git a/nano/images/weapons/mateba.png b/nano/images/weapons/mateba.png deleted file mode 100644 index 49ec3f897a2d..000000000000 Binary files a/nano/images/weapons/mateba.png and /dev/null differ diff --git a/nano/images/weapons/mk221.png b/nano/images/weapons/mk221.png deleted file mode 100644 index a15773fb26dc..000000000000 Binary files a/nano/images/weapons/mk221.png and /dev/null differ diff --git a/nano/images/weapons/mou.png b/nano/images/weapons/mou.png deleted file mode 100644 index a471e16f6e03..000000000000 Binary files a/nano/images/weapons/mou.png and /dev/null differ diff --git a/nano/images/weapons/mp5.png b/nano/images/weapons/mp5.png deleted file mode 100644 index e36fccdca47a..000000000000 Binary files a/nano/images/weapons/mp5.png and /dev/null differ diff --git a/nano/images/weapons/mp7.png b/nano/images/weapons/mp7.png deleted file mode 100644 index 9494c8003d01..000000000000 Binary files a/nano/images/weapons/mp7.png and /dev/null differ diff --git a/nano/images/weapons/no_name.png b/nano/images/weapons/no_name.png deleted file mode 100644 index 8babb2fda54f..000000000000 Binary files a/nano/images/weapons/no_name.png and /dev/null differ diff --git a/nano/images/weapons/ny762.png b/nano/images/weapons/ny762.png deleted file mode 100644 index bdd5fe500e1a..000000000000 Binary files a/nano/images/weapons/ny762.png and /dev/null differ diff --git a/nano/images/weapons/painless.png b/nano/images/weapons/painless.png deleted file mode 100644 index f493c662eb6e..000000000000 Binary files a/nano/images/weapons/painless.png and /dev/null differ diff --git a/nano/images/weapons/pk9.png b/nano/images/weapons/pk9.png deleted file mode 100644 index 7c6649463740..000000000000 Binary files a/nano/images/weapons/pk9.png and /dev/null differ diff --git a/nano/images/weapons/pk9r.png b/nano/images/weapons/pk9r.png deleted file mode 100644 index be9adcd50733..000000000000 Binary files a/nano/images/weapons/pk9r.png and /dev/null differ diff --git a/nano/images/weapons/pk9u.png b/nano/images/weapons/pk9u.png deleted file mode 100644 index 519f574f6e4c..000000000000 Binary files a/nano/images/weapons/pk9u.png and /dev/null differ diff --git a/nano/images/weapons/ppsh17b.png b/nano/images/weapons/ppsh17b.png deleted file mode 100644 index 4ea9e0214f94..000000000000 Binary files a/nano/images/weapons/ppsh17b.png and /dev/null differ diff --git a/nano/images/weapons/single.png b/nano/images/weapons/single.png deleted file mode 100644 index 2f784868ca32..000000000000 Binary files a/nano/images/weapons/single.png and /dev/null differ diff --git a/nano/images/weapons/skorpion.png b/nano/images/weapons/skorpion.png deleted file mode 100644 index 342fc75e3e6e..000000000000 Binary files a/nano/images/weapons/skorpion.png and /dev/null differ diff --git a/nano/images/weapons/skorpion_u.png b/nano/images/weapons/skorpion_u.png deleted file mode 100644 index 72128e1f46bf..000000000000 Binary files a/nano/images/weapons/skorpion_u.png and /dev/null differ diff --git a/nano/images/weapons/smartpistol.png b/nano/images/weapons/smartpistol.png deleted file mode 100644 index e688ac9260a8..000000000000 Binary files a/nano/images/weapons/smartpistol.png and /dev/null differ diff --git a/nano/images/weapons/spearhead.png b/nano/images/weapons/spearhead.png deleted file mode 100644 index 7b740dbdc593..000000000000 Binary files a/nano/images/weapons/spearhead.png and /dev/null differ diff --git a/nano/images/weapons/sshotgun.png b/nano/images/weapons/sshotgun.png deleted file mode 100644 index f052433653b8..000000000000 Binary files a/nano/images/weapons/sshotgun.png and /dev/null differ diff --git a/nano/images/weapons/supremo.png b/nano/images/weapons/supremo.png deleted file mode 100644 index 83f6a6fb4b3f..000000000000 Binary files a/nano/images/weapons/supremo.png and /dev/null differ diff --git a/nano/images/weapons/svd003.png b/nano/images/weapons/svd003.png deleted file mode 100644 index 6395b8d3b686..000000000000 Binary files a/nano/images/weapons/svd003.png and /dev/null differ diff --git a/nano/images/weapons/sw357.png b/nano/images/weapons/sw357.png deleted file mode 100644 index a89ea9cb2f2d..000000000000 Binary files a/nano/images/weapons/sw357.png and /dev/null differ diff --git a/nano/images/weapons/sw358.png b/nano/images/weapons/sw358.png deleted file mode 100644 index c24e72bfce7c..000000000000 Binary files a/nano/images/weapons/sw358.png and /dev/null differ diff --git a/nano/images/weapons/syringegun.png b/nano/images/weapons/syringegun.png deleted file mode 100644 index bf18bf425d7a..000000000000 Binary files a/nano/images/weapons/syringegun.png and /dev/null differ diff --git a/nano/images/weapons/taser.png b/nano/images/weapons/taser.png deleted file mode 100644 index 6337a8996677..000000000000 Binary files a/nano/images/weapons/taser.png and /dev/null differ diff --git a/nano/images/weapons/type71.png b/nano/images/weapons/type71.png deleted file mode 100644 index 700ff164d60c..000000000000 Binary files a/nano/images/weapons/type71.png and /dev/null differ diff --git a/nano/images/weapons/type71c.png b/nano/images/weapons/type71c.png deleted file mode 100644 index 273ac0bcbec0..000000000000 Binary files a/nano/images/weapons/type71c.png and /dev/null differ diff --git a/nano/images/weapons/type73.png b/nano/images/weapons/type73.png deleted file mode 100644 index 63294f7cc9f8..000000000000 Binary files a/nano/images/weapons/type73.png and /dev/null differ diff --git a/nano/images/weapons/vp78.png b/nano/images/weapons/vp78.png deleted file mode 100644 index 2383b4e3aded..000000000000 Binary files a/nano/images/weapons/vp78.png and /dev/null differ diff --git a/nano/images/weapons/xm42b.png b/nano/images/weapons/xm42b.png deleted file mode 100644 index 645c552314f9..000000000000 Binary files a/nano/images/weapons/xm42b.png and /dev/null differ diff --git a/nano/templates/clan_menu.tmpl b/nano/templates/clan_menu.tmpl index 98ac3057a10a..cd987e9079f6 100644 --- a/nano/templates/clan_menu.tmpl +++ b/nano/templates/clan_menu.tmpl @@ -46,7 +46,7 @@ } #clan_list { - border-collapse: collapse; + border-collapse: collapse; width: 100%; } @@ -76,9 +76,6 @@

        {{:data.clan_name}}

        {{:data.clan_description}}
        - {{if data.clan_honor != null}} -

        Honor: {{:data.clan_honor}}

        - {{/if}}
        [tagger_locations[i]][GLOB.tagger_locations[i]]
        {{if data.player_rename_clan}} @@ -111,7 +108,6 @@ - {{if data.player_modify_ranks}} {{/if}} @@ -128,7 +124,6 @@ - {{if data.player_rank_pos > keys.rank_pos}} {{if data.player_modify_ranks}} @@ -142,4 +137,4 @@ {{/if}} {{/props}} -
        Name RankHonor {{:keys.name}} {{:keys.rank}}{{:keys.honor}}
        {{:helper.link('Set Rank', '', { 'clan_target_href' : keys.player_id, 'clan_action': 'modifyrank' })}}
        \ No newline at end of file + diff --git a/nano/templates/cm_stat_panel.tmpl b/nano/templates/cm_stat_panel.tmpl index 97feebde5971..26de08f17054 100644 --- a/nano/templates/cm_stat_panel.tmpl +++ b/nano/templates/cm_stat_panel.tmpl @@ -159,9 +159,6 @@ Used in: /code/datums/statistics/entities/player_entity.dm
        Total Friendly Fire Kills:
        -
        - {{:data.round.total_friendly_fire_kills}} -
        Total Slashes:
        diff --git a/nano/templates/dropship_weapons_console.tmpl b/nano/templates/dropship_weapons_console.tmpl deleted file mode 100644 index fabfdee2467b..000000000000 --- a/nano/templates/dropship_weapons_console.tmpl +++ /dev/null @@ -1,245 +0,0 @@ - -{{if data.screen_mode == 0}} -
        -

        Equipment installed:

        -
        - {{for data.equipment_data}} - {{if value.is_interactable}} -
        - {{:helper.link(value.name, null, {'equip_interact' : value.eqp_tag}, null , null)}} -
        - {{else}} -
        - {{:value.name}} -
        - {{/if}} - {{empty}} - No equipment installed. - {{/for}} -
        -
        - {{if data.has_firemission}} -
        -

        Fire Missions:

        -
        - {{for data.firemission_data}} -
        - - {{:value.name}} - - -   - - {{if !value.can_interact}} - - *!SELECT* - - {{/if}} - {{if !value.can_edit}} - - *!EDIT* - - {{/if}} - - {{if value.can_interact}} - - {{if value.selected}} - {{:helper.link("[UNSELECT]", null, {'mission_tag' : value.mission_tag}, null , null)}} - {{else}} - {{:helper.link("[SELECT]", null, {'mission_tag' : value.mission_tag}, null , null)}} - {{/if}} - - {{/if}} - - {{if value.can_edit}} - - {{:helper.link("[EDIT]", null, {'mission_tag_edit' : value.mission_tag}, null , null)}} - - {{/if}} - - - {{:helper.link("[DELETE]", null, {'mission_tag_delete' : value.mission_tag}, null , null)}} - -
        - - {{empty}} - No Fire Missions Detected - {{/for}} -
        - {{:helper.link("Create New Fire Mission", null, {'create_mission' : 1}, null , null)}} -
        - -
        -
        -
        -

        Fire Mission Control:

        - {{if data.can_firemission}} -
        - {{:helper.link("Switch to Fire Mission", null, {'switch_to_firemission' : 1}, null , null)}} -
        -
        - {{else}} -
        - Have to be in Transit, have to select a Fire Mission and Fire Mission has to be without errors. -
        - {{/if}} -
        -
        -

        Fire Mission Simulator:

        - {{if data.shuttle_state != "in_transit"}} -
        - {{:helper.link("Switch To Simulation", null, {'switch_to_simulation' : 1}, null , null)}} -
        -
        - {{else}} -
        - Have to be Stationary, have to select a Fire Mission and Fire Mission has to be without errors. -
        - {{/if}} -
        - {{/if}} -{{else data.screen_mode == 1}} -

        Weapon Selected: {{:data.selected_eqp}}

        - {{if data.selected_eqp_ammo_name}} -
        - Ammo loaded: {{:data.selected_eqp_ammo_name}} -
        -
        - {{if data.selected_eqp_ammo_amt > data.selected_eqp_max_ammo_amt*0.5}} - Ammo count: {{:data.selected_eqp_ammo_amt}} / {{:data.selected_eqp_max_ammo_amt}} - {{else data.selected_eqp_ammo_amt > 0}} - Ammo count: {{:data.selected_eqp_ammo_amt}} / {{:data.selected_eqp_max_ammo_amt}} - {{else}} - Ammo count: {{:data.selected_eqp_ammo_amt}} / {{:data.selected_eqp_max_ammo_amt}} - {{/if}} -
        - {{else}} -
        - No ammo loaded -
        - {{/if}} - -
        - Available Targets -
        - {{:helper.link('Deselect Weapon', null, {'deselect' : '1'}, null , null)}} -
        -
        - -
        - {{for data.targets_data}} - {{:helper.link(value.target_name, null, {'open_fire' : value.target_tag}, (data.shuttle_state == "in_transit") ? null : 'disabled' , 'fixedLeftLongText')}} {{:helper.link('View', 'search', {'cas_camera' : value.target_tag}, (data.shuttle_state == "in_transit") ? null : 'disabled' , 'fixedLeft')}} - {{empty}} - No laser target detected. - {{/for}} -
        - - - -{{else data.screen_mode == 2}} -

        Fire Mission Editing: {{:data.editing_firemission}}

        - {{if data.current_mission_error}} -
        - ERROR DETECTED: {{:data.current_mission_error}} -
        - {{else}} -
        - No errors detected -
        - {{/if}} - -
        - Mission Tile Coverage: {{:data.editing_firemission_length}} -
        - - - - - - - {{for data.firemission_edit_timeslices}} - - {{/for}} - - {{for data.firemission_edit_data :fm_value:fm_id}} - - - - - {{for fm_value.offsets :offset_value:offset_id}} - - {{/for}} - - {{/for}} -
        NameAmmoGimbal - {{:value}} -
        {{:fm_value.name}} - {{if fm_value.ammo==null}} - 0/0 - {{else}} - {{if fm_value.ammo.used > fm_value.ammo.count}} - {{:fm_value.ammo.count?fm_value.ammo.count:0}}/{{:fm_value.ammo.max?fm_value.ammo.max:0}} - {{else fm_value.ammo.used * 2 > fm_value.ammo.count}} - {{:fm_value.ammo.count?fm_value.ammo.count:0}}/{{:fm_value.ammo.max?fm_value.ammo.max:0}} - {{else}} - {{:fm_value.ammo.count?fm_value.ammo.count:0}}/{{:fm_value.ammo.max?fm_value.ammo.max:0}} - {{/if}} - {{/if}} - - {{if(fm_value.gimbal)}} - {{:fm_value.gimbal.min}} to {{:fm_value.gimbal.max}} - {{else}} - Not installed - {{/if}} - - {{:helper.link(offset_value == null ? '-' : offset_value, null, {'fm_weapon_id' : fm_id, 'fm_offset_id' : offset_id, 'fm_offset_previous': offset_value}, null , null)}} -
        - -
        - {{:helper.link("BACK", null, {'leave_firemission_editing' : 1}, null , null)}} -
        - -{{else data.screen_mode == 3 && data.has_firemission}} -

        Fire Mission Selected: {{:data.firemission_name}}

        - -

        - Fire Mission Status: {{:data.firemission_message}} -

        - -
        -

        Fire Mission Options:

        - - - - - - - - - - - - - -
        Target:{{:data.firemission_selected_laser}}
        Direction:{{:helper.link(data.firemission_direction, null, {'change_direction' : 1}, (data.shuttle_state == "in_transit" && data.firemission_step < 2) ? null : 'disabled' , null)}}
        Offset:{{:helper.link(data.firemission_offset, null, {'change_offset' : 1}, (data.shuttle_state == "in_transit" && data.firemission_step < 2) ? null : 'disabled' , null)}}
        -
        - -
        -

        Fire Mission Actions:

        -
        - {{:helper.link('BACK', null, {'leave_firemission_execution' : '1'}, null , 'fixedLeft')}} - {{:helper.link('Activate Camera', null, {'firemission_camera' : 1}, (data.shuttle_state == "in_transit" && data.firemission_selected_laser) ? null : 'disabled' , 'fixedLeft')}} - {{:helper.link('Execute Fire Mission', null, {'execute_firemission' : 1}, (data.shuttle_state == "in_transit" && data.firemission_step == 0) ? null : 'disabled' , "linkDanger fixedLeftWide")}} -
        -
        -
        -
        Available Targets:
        -
        - {{for data.targets_data}} - {{:helper.link(value.target_name, null, {'select_laser_firemission' : value.target_tag}, (data.shuttle_state == "in_transit") ? null : 'disabled' , 'fixedLeftLongText')}} - {{empty}} - No CAS signal detected. - {{/for}} -
        - -{{/if}} diff --git a/rust_g.dll b/rust_g.dll index 52a74ce745ea..72a27df14403 100644 Binary files a/rust_g.dll and b/rust_g.dll differ diff --git a/scripts/ShuttleGenerator.rar b/scripts/ShuttleGenerator.rar deleted file mode 100644 index 582cc2041d00..000000000000 Binary files a/scripts/ShuttleGenerator.rar and /dev/null differ diff --git a/scripts/ircbot_message.py b/scripts/ircbot_message.py deleted file mode 100644 index 4339019e03d7..000000000000 --- a/scripts/ircbot_message.py +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env python2 - -# Four arguments, password host channel and message. -# EG: "ircbot_message.py hunter2 example.com #adminchannel ADMINHELP, people are killing me!" - -import sys,cPickle,socket,HTMLParser - -def pack(): - ht = HTMLParser.HTMLParser() - - passwd = sys.argv[1] - ip = sys.argv[3] - try: - data = [] - for in_data in sys.argv[4:]: #The rest of the arguments is data - data += {ht.unescape(in_data)} - except: - data = "NO DATA SPECIFIED" - dictionary = {"ip":ip,"data":[passwd] + data} - pickled = cPickle.dumps(dictionary) - nudge(pickled) -def nudge(data): - HOST = sys.argv[2] - PORT = 45678 - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - s.connect((HOST,PORT)) - s.send(data) - s.close() - -if __name__ == "__main__" and len(sys.argv) > 1: # If not imported and more than one argument - pack() diff --git a/sound/ambience/ambienceNV.ogg b/sound/ambience/ambienceNV.ogg new file mode 100644 index 000000000000..0fcbe8f76505 Binary files /dev/null and b/sound/ambience/ambienceNV.ogg differ diff --git a/sound/ambience/varadero_storm.ogg b/sound/ambience/varadero_storm.ogg new file mode 100644 index 000000000000..ec3234241443 Binary files /dev/null and b/sound/ambience/varadero_storm.ogg differ diff --git a/sound/bullets/bullet_vulture_impact.ogg b/sound/bullets/bullet_vulture_impact.ogg new file mode 100644 index 000000000000..8ccf6c77deac Binary files /dev/null and b/sound/bullets/bullet_vulture_impact.ogg differ diff --git a/sound/effects/alien_dragsound_large.ogg b/sound/effects/alien_dragsound_large.ogg new file mode 100644 index 000000000000..bacd14b0eb07 Binary files /dev/null and b/sound/effects/alien_dragsound_large.ogg differ diff --git a/sound/effects/biohazard.ogg b/sound/effects/biohazard.ogg new file mode 100644 index 000000000000..b6528f9311ca Binary files /dev/null and b/sound/effects/biohazard.ogg differ diff --git a/sound/effects/burrowing_b.ogg b/sound/effects/burrowing_b.ogg new file mode 100644 index 000000000000..cc44a8e19282 Binary files /dev/null and b/sound/effects/burrowing_b.ogg differ diff --git a/sound/effects/burrowoff.ogg b/sound/effects/burrowoff.ogg new file mode 100644 index 000000000000..66f10b253612 Binary files /dev/null and b/sound/effects/burrowoff.ogg differ diff --git a/sound/effects/comical_bonk.ogg b/sound/effects/comical_bonk.ogg new file mode 100644 index 000000000000..e0a2751d52c2 Binary files /dev/null and b/sound/effects/comical_bonk.ogg differ diff --git a/sound/effects/creak1.ogg b/sound/effects/creak1.ogg new file mode 100644 index 000000000000..0cad4802ffa9 Binary files /dev/null and b/sound/effects/creak1.ogg differ diff --git a/sound/effects/creak2.ogg b/sound/effects/creak2.ogg new file mode 100644 index 000000000000..707bf39e338e Binary files /dev/null and b/sound/effects/creak2.ogg differ diff --git a/sound/effects/creak3.ogg b/sound/effects/creak3.ogg new file mode 100644 index 000000000000..88ff37a339ed Binary files /dev/null and b/sound/effects/creak3.ogg differ diff --git a/sound/effects/data-transmission.ogg b/sound/effects/data-transmission.ogg new file mode 100644 index 000000000000..b2e74acdb837 Binary files /dev/null and b/sound/effects/data-transmission.ogg differ diff --git a/sound/effects/dropship_crash.ogg b/sound/effects/dropship_crash.ogg index ec552ce5b194..880777a41297 100644 Binary files a/sound/effects/dropship_crash.ogg and b/sound/effects/dropship_crash.ogg differ diff --git a/sound/effects/Heart Beat Short.ogg b/sound/effects/heart_beat_short.ogg similarity index 100% rename from sound/effects/Heart Beat Short.ogg rename to sound/effects/heart_beat_short.ogg diff --git a/sound/effects/incoming-fax.ogg b/sound/effects/incoming-fax.ogg new file mode 100644 index 000000000000..fccb34356303 Binary files /dev/null and b/sound/effects/incoming-fax.ogg differ diff --git a/sound/effects/tunnel_collapse.ogg b/sound/effects/tunnel_collapse.ogg new file mode 100644 index 000000000000..c80abe2611b1 Binary files /dev/null and b/sound/effects/tunnel_collapse.ogg differ diff --git a/sound/effects/weather_warning_varadero.ogg b/sound/effects/weather_warning_varadero.ogg new file mode 100644 index 000000000000..f381188659d2 Binary files /dev/null and b/sound/effects/weather_warning_varadero.ogg differ diff --git a/sound/items/whistle.ogg b/sound/items/whistle.ogg index 8e276d522669..3223f52cae36 100644 Binary files a/sound/items/whistle.ogg and b/sound/items/whistle.ogg differ diff --git a/sound/machines/firepit_ambience.ogg b/sound/machines/firepit_ambience.ogg new file mode 100644 index 000000000000..bebbd13cc6dc Binary files /dev/null and b/sound/machines/firepit_ambience.ogg differ diff --git a/sound/piano/A#1.ogg b/sound/piano/A#1.ogg deleted file mode 100644 index ae41c0a189b1..000000000000 Binary files a/sound/piano/A#1.ogg and /dev/null differ diff --git a/sound/piano/A#2.ogg b/sound/piano/A#2.ogg deleted file mode 100644 index c35ce012b3ee..000000000000 Binary files a/sound/piano/A#2.ogg and /dev/null differ diff --git a/sound/piano/A#3.ogg b/sound/piano/A#3.ogg deleted file mode 100644 index 9ea8795bcf31..000000000000 Binary files a/sound/piano/A#3.ogg and /dev/null differ diff --git a/sound/piano/A#4.ogg b/sound/piano/A#4.ogg deleted file mode 100644 index aeb41ce1a722..000000000000 Binary files a/sound/piano/A#4.ogg and /dev/null differ diff --git a/sound/piano/A#5.ogg b/sound/piano/A#5.ogg deleted file mode 100644 index eca721384308..000000000000 Binary files a/sound/piano/A#5.ogg and /dev/null differ diff --git a/sound/piano/A#6.ogg b/sound/piano/A#6.ogg deleted file mode 100644 index 0ae9e89b0c28..000000000000 Binary files a/sound/piano/A#6.ogg and /dev/null differ diff --git a/sound/piano/A#7.ogg b/sound/piano/A#7.ogg deleted file mode 100644 index e1b469da8164..000000000000 Binary files a/sound/piano/A#7.ogg and /dev/null differ diff --git a/sound/piano/A#8.ogg b/sound/piano/A#8.ogg deleted file mode 100644 index 83bd263e9804..000000000000 Binary files a/sound/piano/A#8.ogg and /dev/null differ diff --git a/sound/piano/Ab1.ogg b/sound/piano/Ab1.ogg deleted file mode 100644 index 1f67015756c2..000000000000 Binary files a/sound/piano/Ab1.ogg and /dev/null differ diff --git a/sound/piano/Ab2.ogg b/sound/piano/Ab2.ogg deleted file mode 100644 index 985bfd608212..000000000000 Binary files a/sound/piano/Ab2.ogg and /dev/null differ diff --git a/sound/piano/Ab3.ogg b/sound/piano/Ab3.ogg deleted file mode 100644 index 5dbcb2d7c634..000000000000 Binary files a/sound/piano/Ab3.ogg and /dev/null differ diff --git a/sound/piano/Ab4.ogg b/sound/piano/Ab4.ogg deleted file mode 100644 index 01add48a44ad..000000000000 Binary files a/sound/piano/Ab4.ogg and /dev/null differ diff --git a/sound/piano/Ab5.ogg b/sound/piano/Ab5.ogg deleted file mode 100644 index 6fbe70844dc3..000000000000 Binary files a/sound/piano/Ab5.ogg and /dev/null differ diff --git a/sound/piano/Ab6.ogg b/sound/piano/Ab6.ogg deleted file mode 100644 index 82b5a84e6824..000000000000 Binary files a/sound/piano/Ab6.ogg and /dev/null differ diff --git a/sound/piano/Ab7.ogg b/sound/piano/Ab7.ogg deleted file mode 100644 index 391b1c1185af..000000000000 Binary files a/sound/piano/Ab7.ogg and /dev/null differ diff --git a/sound/piano/Ab8.ogg b/sound/piano/Ab8.ogg deleted file mode 100644 index aa83b7aaab90..000000000000 Binary files a/sound/piano/Ab8.ogg and /dev/null differ diff --git a/sound/piano/An1.ogg b/sound/piano/An1.ogg deleted file mode 100644 index 4a87d59adac5..000000000000 Binary files a/sound/piano/An1.ogg and /dev/null differ diff --git a/sound/piano/An2.ogg b/sound/piano/An2.ogg deleted file mode 100644 index f5327d0d7cf1..000000000000 Binary files a/sound/piano/An2.ogg and /dev/null differ diff --git a/sound/piano/An3.ogg b/sound/piano/An3.ogg deleted file mode 100644 index 7c3e8a031e80..000000000000 Binary files a/sound/piano/An3.ogg and /dev/null differ diff --git a/sound/piano/An4.ogg b/sound/piano/An4.ogg deleted file mode 100644 index 2ba84a58a6e3..000000000000 Binary files a/sound/piano/An4.ogg and /dev/null differ diff --git a/sound/piano/An5.ogg b/sound/piano/An5.ogg deleted file mode 100644 index 5e04fc8c7fbc..000000000000 Binary files a/sound/piano/An5.ogg and /dev/null differ diff --git a/sound/piano/An6.ogg b/sound/piano/An6.ogg deleted file mode 100644 index 48b639d77f2d..000000000000 Binary files a/sound/piano/An6.ogg and /dev/null differ diff --git a/sound/piano/An7.ogg b/sound/piano/An7.ogg deleted file mode 100644 index 5d93800f28a6..000000000000 Binary files a/sound/piano/An7.ogg and /dev/null differ diff --git a/sound/piano/An8.ogg b/sound/piano/An8.ogg deleted file mode 100644 index e01acd4e7e13..000000000000 Binary files a/sound/piano/An8.ogg and /dev/null differ diff --git a/sound/piano/B#1.ogg b/sound/piano/B#1.ogg deleted file mode 100644 index bcdd2bfd4a1c..000000000000 Binary files a/sound/piano/B#1.ogg and /dev/null differ diff --git a/sound/piano/B#2.ogg b/sound/piano/B#2.ogg deleted file mode 100644 index 0effb061b460..000000000000 Binary files a/sound/piano/B#2.ogg and /dev/null differ diff --git a/sound/piano/B#3.ogg b/sound/piano/B#3.ogg deleted file mode 100644 index 64f390516fc3..000000000000 Binary files a/sound/piano/B#3.ogg and /dev/null differ diff --git a/sound/piano/B#4.ogg b/sound/piano/B#4.ogg deleted file mode 100644 index a423bbb83d21..000000000000 Binary files a/sound/piano/B#4.ogg and /dev/null differ diff --git a/sound/piano/B#5.ogg b/sound/piano/B#5.ogg deleted file mode 100644 index 9a63a927fd08..000000000000 Binary files a/sound/piano/B#5.ogg and /dev/null differ diff --git a/sound/piano/B#6.ogg b/sound/piano/B#6.ogg deleted file mode 100644 index be35faabf563..000000000000 Binary files a/sound/piano/B#6.ogg and /dev/null differ diff --git a/sound/piano/B#7.ogg b/sound/piano/B#7.ogg deleted file mode 100644 index cbb2ad3bc152..000000000000 Binary files a/sound/piano/B#7.ogg and /dev/null differ diff --git a/sound/piano/B#8.ogg b/sound/piano/B#8.ogg deleted file mode 100644 index 5297b755a356..000000000000 Binary files a/sound/piano/B#8.ogg and /dev/null differ diff --git a/sound/piano/Bb1.ogg b/sound/piano/Bb1.ogg deleted file mode 100644 index 617f36454115..000000000000 Binary files a/sound/piano/Bb1.ogg and /dev/null differ diff --git a/sound/piano/Bb2.ogg b/sound/piano/Bb2.ogg deleted file mode 100644 index eb4215daa4c1..000000000000 Binary files a/sound/piano/Bb2.ogg and /dev/null differ diff --git a/sound/piano/Bb3.ogg b/sound/piano/Bb3.ogg deleted file mode 100644 index 35f7eb53d47c..000000000000 Binary files a/sound/piano/Bb3.ogg and /dev/null differ diff --git a/sound/piano/Bb4.ogg b/sound/piano/Bb4.ogg deleted file mode 100644 index 1eef7b921392..000000000000 Binary files a/sound/piano/Bb4.ogg and /dev/null differ diff --git a/sound/piano/Bb5.ogg b/sound/piano/Bb5.ogg deleted file mode 100644 index 118867fd1468..000000000000 Binary files a/sound/piano/Bb5.ogg and /dev/null differ diff --git a/sound/piano/Bb6.ogg b/sound/piano/Bb6.ogg deleted file mode 100644 index 700b2c5abd7f..000000000000 Binary files a/sound/piano/Bb6.ogg and /dev/null differ diff --git a/sound/piano/Bb7.ogg b/sound/piano/Bb7.ogg deleted file mode 100644 index c50955bf01c3..000000000000 Binary files a/sound/piano/Bb7.ogg and /dev/null differ diff --git a/sound/piano/Bb8.ogg b/sound/piano/Bb8.ogg deleted file mode 100644 index b076c4b4e2be..000000000000 Binary files a/sound/piano/Bb8.ogg and /dev/null differ diff --git a/sound/piano/Bn1.ogg b/sound/piano/Bn1.ogg deleted file mode 100644 index 256534881c18..000000000000 Binary files a/sound/piano/Bn1.ogg and /dev/null differ diff --git a/sound/piano/Bn2.ogg b/sound/piano/Bn2.ogg deleted file mode 100644 index 8ed87aa49e77..000000000000 Binary files a/sound/piano/Bn2.ogg and /dev/null differ diff --git a/sound/piano/Bn3.ogg b/sound/piano/Bn3.ogg deleted file mode 100644 index 19788aad716c..000000000000 Binary files a/sound/piano/Bn3.ogg and /dev/null differ diff --git a/sound/piano/Bn4.ogg b/sound/piano/Bn4.ogg deleted file mode 100644 index 773f5b3bd3bf..000000000000 Binary files a/sound/piano/Bn4.ogg and /dev/null differ diff --git a/sound/piano/Bn5.ogg b/sound/piano/Bn5.ogg deleted file mode 100644 index 3297fab1d597..000000000000 Binary files a/sound/piano/Bn5.ogg and /dev/null differ diff --git a/sound/piano/Bn6.ogg b/sound/piano/Bn6.ogg deleted file mode 100644 index 35a39b20f66a..000000000000 Binary files a/sound/piano/Bn6.ogg and /dev/null differ diff --git a/sound/piano/Bn7.ogg b/sound/piano/Bn7.ogg deleted file mode 100644 index e7a8ba403430..000000000000 Binary files a/sound/piano/Bn7.ogg and /dev/null differ diff --git a/sound/piano/Bn8.ogg b/sound/piano/Bn8.ogg deleted file mode 100644 index 2c821e818539..000000000000 Binary files a/sound/piano/Bn8.ogg and /dev/null differ diff --git a/sound/piano/C#1.ogg b/sound/piano/C#1.ogg deleted file mode 100644 index be3d7e3e3081..000000000000 Binary files a/sound/piano/C#1.ogg and /dev/null differ diff --git a/sound/piano/C#2.ogg b/sound/piano/C#2.ogg deleted file mode 100644 index cefe3a745dc0..000000000000 Binary files a/sound/piano/C#2.ogg and /dev/null differ diff --git a/sound/piano/C#3.ogg b/sound/piano/C#3.ogg deleted file mode 100644 index dc3d0878475f..000000000000 Binary files a/sound/piano/C#3.ogg and /dev/null differ diff --git a/sound/piano/C#4.ogg b/sound/piano/C#4.ogg deleted file mode 100644 index c31a44bdf6dd..000000000000 Binary files a/sound/piano/C#4.ogg and /dev/null differ diff --git a/sound/piano/C#5.ogg b/sound/piano/C#5.ogg deleted file mode 100644 index c5d10d13764d..000000000000 Binary files a/sound/piano/C#5.ogg and /dev/null differ diff --git a/sound/piano/C#6.ogg b/sound/piano/C#6.ogg deleted file mode 100644 index a084a04de146..000000000000 Binary files a/sound/piano/C#6.ogg and /dev/null differ diff --git a/sound/piano/C#7.ogg b/sound/piano/C#7.ogg deleted file mode 100644 index 6da255f5aea0..000000000000 Binary files a/sound/piano/C#7.ogg and /dev/null differ diff --git a/sound/piano/C#8.ogg b/sound/piano/C#8.ogg deleted file mode 100644 index b4d4cbe41579..000000000000 Binary files a/sound/piano/C#8.ogg and /dev/null differ diff --git a/sound/piano/Cb2.ogg b/sound/piano/Cb2.ogg deleted file mode 100644 index cefff94c1465..000000000000 Binary files a/sound/piano/Cb2.ogg and /dev/null differ diff --git a/sound/piano/Cb3.ogg b/sound/piano/Cb3.ogg deleted file mode 100644 index 0425228ee726..000000000000 Binary files a/sound/piano/Cb3.ogg and /dev/null differ diff --git a/sound/piano/Cb4.ogg b/sound/piano/Cb4.ogg deleted file mode 100644 index e9c8ad22e94b..000000000000 Binary files a/sound/piano/Cb4.ogg and /dev/null differ diff --git a/sound/piano/Cb5.ogg b/sound/piano/Cb5.ogg deleted file mode 100644 index 611c8ef9e42e..000000000000 Binary files a/sound/piano/Cb5.ogg and /dev/null differ diff --git a/sound/piano/Cb6.ogg b/sound/piano/Cb6.ogg deleted file mode 100644 index 3fe79c61ef92..000000000000 Binary files a/sound/piano/Cb6.ogg and /dev/null differ diff --git a/sound/piano/Cb7.ogg b/sound/piano/Cb7.ogg deleted file mode 100644 index ff6a3fb00726..000000000000 Binary files a/sound/piano/Cb7.ogg and /dev/null differ diff --git a/sound/piano/Cb8.ogg b/sound/piano/Cb8.ogg deleted file mode 100644 index 8ff3d57fe907..000000000000 Binary files a/sound/piano/Cb8.ogg and /dev/null differ diff --git a/sound/piano/Cb9.ogg b/sound/piano/Cb9.ogg deleted file mode 100644 index fa2a3de7a777..000000000000 Binary files a/sound/piano/Cb9.ogg and /dev/null differ diff --git a/sound/piano/Cn1.ogg b/sound/piano/Cn1.ogg deleted file mode 100644 index 86fba1381012..000000000000 Binary files a/sound/piano/Cn1.ogg and /dev/null differ diff --git a/sound/piano/Cn2.ogg b/sound/piano/Cn2.ogg deleted file mode 100644 index e069259e8507..000000000000 Binary files a/sound/piano/Cn2.ogg and /dev/null differ diff --git a/sound/piano/Cn3.ogg b/sound/piano/Cn3.ogg deleted file mode 100644 index 01f5bcde7c5d..000000000000 Binary files a/sound/piano/Cn3.ogg and /dev/null differ diff --git a/sound/piano/Cn4.ogg b/sound/piano/Cn4.ogg deleted file mode 100644 index 2545ccb996b9..000000000000 Binary files a/sound/piano/Cn4.ogg and /dev/null differ diff --git a/sound/piano/Cn5.ogg b/sound/piano/Cn5.ogg deleted file mode 100644 index 601fd5340b37..000000000000 Binary files a/sound/piano/Cn5.ogg and /dev/null differ diff --git a/sound/piano/Cn6.ogg b/sound/piano/Cn6.ogg deleted file mode 100644 index f89c2c78f3af..000000000000 Binary files a/sound/piano/Cn6.ogg and /dev/null differ diff --git a/sound/piano/Cn7.ogg b/sound/piano/Cn7.ogg deleted file mode 100644 index 09723616a74c..000000000000 Binary files a/sound/piano/Cn7.ogg and /dev/null differ diff --git a/sound/piano/Cn8.ogg b/sound/piano/Cn8.ogg deleted file mode 100644 index 4c7e2b44c6fc..000000000000 Binary files a/sound/piano/Cn8.ogg and /dev/null differ diff --git a/sound/piano/Cn9.ogg b/sound/piano/Cn9.ogg deleted file mode 100644 index 2b6812d62b24..000000000000 Binary files a/sound/piano/Cn9.ogg and /dev/null differ diff --git a/sound/piano/D#1.ogg b/sound/piano/D#1.ogg deleted file mode 100644 index d772320b150d..000000000000 Binary files a/sound/piano/D#1.ogg and /dev/null differ diff --git a/sound/piano/D#2.ogg b/sound/piano/D#2.ogg deleted file mode 100644 index ae9d529e907c..000000000000 Binary files a/sound/piano/D#2.ogg and /dev/null differ diff --git a/sound/piano/D#3.ogg b/sound/piano/D#3.ogg deleted file mode 100644 index 63fc4fdd5953..000000000000 Binary files a/sound/piano/D#3.ogg and /dev/null differ diff --git a/sound/piano/D#4.ogg b/sound/piano/D#4.ogg deleted file mode 100644 index 39cf1adbca97..000000000000 Binary files a/sound/piano/D#4.ogg and /dev/null differ diff --git a/sound/piano/D#5.ogg b/sound/piano/D#5.ogg deleted file mode 100644 index 071a57544aee..000000000000 Binary files a/sound/piano/D#5.ogg and /dev/null differ diff --git a/sound/piano/D#6.ogg b/sound/piano/D#6.ogg deleted file mode 100644 index 7ee1bd4bfa07..000000000000 Binary files a/sound/piano/D#6.ogg and /dev/null differ diff --git a/sound/piano/D#7.ogg b/sound/piano/D#7.ogg deleted file mode 100644 index 19f72532dde6..000000000000 Binary files a/sound/piano/D#7.ogg and /dev/null differ diff --git a/sound/piano/D#8.ogg b/sound/piano/D#8.ogg deleted file mode 100644 index ee87d875bd40..000000000000 Binary files a/sound/piano/D#8.ogg and /dev/null differ diff --git a/sound/piano/Db1.ogg b/sound/piano/Db1.ogg deleted file mode 100644 index 9166b7335552..000000000000 Binary files a/sound/piano/Db1.ogg and /dev/null differ diff --git a/sound/piano/Db2.ogg b/sound/piano/Db2.ogg deleted file mode 100644 index 623acd0ec54f..000000000000 Binary files a/sound/piano/Db2.ogg and /dev/null differ diff --git a/sound/piano/Db3.ogg b/sound/piano/Db3.ogg deleted file mode 100644 index 5c8943b4da9f..000000000000 Binary files a/sound/piano/Db3.ogg and /dev/null differ diff --git a/sound/piano/Db4.ogg b/sound/piano/Db4.ogg deleted file mode 100644 index 2deb5b8d9173..000000000000 Binary files a/sound/piano/Db4.ogg and /dev/null differ diff --git a/sound/piano/Db5.ogg b/sound/piano/Db5.ogg deleted file mode 100644 index 9c77ee37a7d8..000000000000 Binary files a/sound/piano/Db5.ogg and /dev/null differ diff --git a/sound/piano/Db6.ogg b/sound/piano/Db6.ogg deleted file mode 100644 index 49e1e04dff84..000000000000 Binary files a/sound/piano/Db6.ogg and /dev/null differ diff --git a/sound/piano/Db7.ogg b/sound/piano/Db7.ogg deleted file mode 100644 index b53fd2f27e03..000000000000 Binary files a/sound/piano/Db7.ogg and /dev/null differ diff --git a/sound/piano/Db8.ogg b/sound/piano/Db8.ogg deleted file mode 100644 index af6cfdffad62..000000000000 Binary files a/sound/piano/Db8.ogg and /dev/null differ diff --git a/sound/piano/Dn1.ogg b/sound/piano/Dn1.ogg deleted file mode 100644 index c6dd20cb65b4..000000000000 Binary files a/sound/piano/Dn1.ogg and /dev/null differ diff --git a/sound/piano/Dn2.ogg b/sound/piano/Dn2.ogg deleted file mode 100644 index 0783087dc658..000000000000 Binary files a/sound/piano/Dn2.ogg and /dev/null differ diff --git a/sound/piano/Dn3.ogg b/sound/piano/Dn3.ogg deleted file mode 100644 index bf7bd97ad137..000000000000 Binary files a/sound/piano/Dn3.ogg and /dev/null differ diff --git a/sound/piano/Dn4.ogg b/sound/piano/Dn4.ogg deleted file mode 100644 index e35a6af447e8..000000000000 Binary files a/sound/piano/Dn4.ogg and /dev/null differ diff --git a/sound/piano/Dn5.ogg b/sound/piano/Dn5.ogg deleted file mode 100644 index 7e355266c0f5..000000000000 Binary files a/sound/piano/Dn5.ogg and /dev/null differ diff --git a/sound/piano/Dn6.ogg b/sound/piano/Dn6.ogg deleted file mode 100644 index 5da94c15adf2..000000000000 Binary files a/sound/piano/Dn6.ogg and /dev/null differ diff --git a/sound/piano/Dn7.ogg b/sound/piano/Dn7.ogg deleted file mode 100644 index ac43398ece62..000000000000 Binary files a/sound/piano/Dn7.ogg and /dev/null differ diff --git a/sound/piano/Dn8.ogg b/sound/piano/Dn8.ogg deleted file mode 100644 index 534e51e72013..000000000000 Binary files a/sound/piano/Dn8.ogg and /dev/null differ diff --git a/sound/piano/E#1.ogg b/sound/piano/E#1.ogg deleted file mode 100644 index 46fd3d50c91b..000000000000 Binary files a/sound/piano/E#1.ogg and /dev/null differ diff --git a/sound/piano/E#2.ogg b/sound/piano/E#2.ogg deleted file mode 100644 index eece0448208d..000000000000 Binary files a/sound/piano/E#2.ogg and /dev/null differ diff --git a/sound/piano/E#3.ogg b/sound/piano/E#3.ogg deleted file mode 100644 index d5acee8dfa7f..000000000000 Binary files a/sound/piano/E#3.ogg and /dev/null differ diff --git a/sound/piano/E#4.ogg b/sound/piano/E#4.ogg deleted file mode 100644 index 3e75fccc91b9..000000000000 Binary files a/sound/piano/E#4.ogg and /dev/null differ diff --git a/sound/piano/E#5.ogg b/sound/piano/E#5.ogg deleted file mode 100644 index cc91527d0ea0..000000000000 Binary files a/sound/piano/E#5.ogg and /dev/null differ diff --git a/sound/piano/E#6.ogg b/sound/piano/E#6.ogg deleted file mode 100644 index 476edd68e22a..000000000000 Binary files a/sound/piano/E#6.ogg and /dev/null differ diff --git a/sound/piano/E#7.ogg b/sound/piano/E#7.ogg deleted file mode 100644 index 7c77c6971ee2..000000000000 Binary files a/sound/piano/E#7.ogg and /dev/null differ diff --git a/sound/piano/E#8.ogg b/sound/piano/E#8.ogg deleted file mode 100644 index 61a55478dc95..000000000000 Binary files a/sound/piano/E#8.ogg and /dev/null differ diff --git a/sound/piano/Eb1.ogg b/sound/piano/Eb1.ogg deleted file mode 100644 index 745c448a4f1f..000000000000 Binary files a/sound/piano/Eb1.ogg and /dev/null differ diff --git a/sound/piano/Eb2.ogg b/sound/piano/Eb2.ogg deleted file mode 100644 index 85fc213e8214..000000000000 Binary files a/sound/piano/Eb2.ogg and /dev/null differ diff --git a/sound/piano/Eb3.ogg b/sound/piano/Eb3.ogg deleted file mode 100644 index 66c673310bb6..000000000000 Binary files a/sound/piano/Eb3.ogg and /dev/null differ diff --git a/sound/piano/Eb4.ogg b/sound/piano/Eb4.ogg deleted file mode 100644 index bff7248310b8..000000000000 Binary files a/sound/piano/Eb4.ogg and /dev/null differ diff --git a/sound/piano/Eb5.ogg b/sound/piano/Eb5.ogg deleted file mode 100644 index 8ecb263ee720..000000000000 Binary files a/sound/piano/Eb5.ogg and /dev/null differ diff --git a/sound/piano/Eb6.ogg b/sound/piano/Eb6.ogg deleted file mode 100644 index 29e62c7a16d8..000000000000 Binary files a/sound/piano/Eb6.ogg and /dev/null differ diff --git a/sound/piano/Eb7.ogg b/sound/piano/Eb7.ogg deleted file mode 100644 index 95e70c0b8cba..000000000000 Binary files a/sound/piano/Eb7.ogg and /dev/null differ diff --git a/sound/piano/Eb8.ogg b/sound/piano/Eb8.ogg deleted file mode 100644 index e421154b62e3..000000000000 Binary files a/sound/piano/Eb8.ogg and /dev/null differ diff --git a/sound/piano/En1.ogg b/sound/piano/En1.ogg deleted file mode 100644 index 32819af46ba5..000000000000 Binary files a/sound/piano/En1.ogg and /dev/null differ diff --git a/sound/piano/En2.ogg b/sound/piano/En2.ogg deleted file mode 100644 index f1931e091425..000000000000 Binary files a/sound/piano/En2.ogg and /dev/null differ diff --git a/sound/piano/En3.ogg b/sound/piano/En3.ogg deleted file mode 100644 index fd9d54a6d03f..000000000000 Binary files a/sound/piano/En3.ogg and /dev/null differ diff --git a/sound/piano/En4.ogg b/sound/piano/En4.ogg deleted file mode 100644 index 41dcf10ff57e..000000000000 Binary files a/sound/piano/En4.ogg and /dev/null differ diff --git a/sound/piano/En5.ogg b/sound/piano/En5.ogg deleted file mode 100644 index 571bb0768e56..000000000000 Binary files a/sound/piano/En5.ogg and /dev/null differ diff --git a/sound/piano/En6.ogg b/sound/piano/En6.ogg deleted file mode 100644 index 7dbf990b1864..000000000000 Binary files a/sound/piano/En6.ogg and /dev/null differ diff --git a/sound/piano/En7.ogg b/sound/piano/En7.ogg deleted file mode 100644 index 0793106be1f4..000000000000 Binary files a/sound/piano/En7.ogg and /dev/null differ diff --git a/sound/piano/En8.ogg b/sound/piano/En8.ogg deleted file mode 100644 index 2989d16d1ded..000000000000 Binary files a/sound/piano/En8.ogg and /dev/null differ diff --git a/sound/piano/F#1.ogg b/sound/piano/F#1.ogg deleted file mode 100644 index f646e20a3385..000000000000 Binary files a/sound/piano/F#1.ogg and /dev/null differ diff --git a/sound/piano/F#2.ogg b/sound/piano/F#2.ogg deleted file mode 100644 index 140c0ab01750..000000000000 Binary files a/sound/piano/F#2.ogg and /dev/null differ diff --git a/sound/piano/F#3.ogg b/sound/piano/F#3.ogg deleted file mode 100644 index 03f74deae5e7..000000000000 Binary files a/sound/piano/F#3.ogg and /dev/null differ diff --git a/sound/piano/F#4.ogg b/sound/piano/F#4.ogg deleted file mode 100644 index 8b6be4a8e83e..000000000000 Binary files a/sound/piano/F#4.ogg and /dev/null differ diff --git a/sound/piano/F#5.ogg b/sound/piano/F#5.ogg deleted file mode 100644 index 2ada429e53c6..000000000000 Binary files a/sound/piano/F#5.ogg and /dev/null differ diff --git a/sound/piano/F#6.ogg b/sound/piano/F#6.ogg deleted file mode 100644 index a3c41995a142..000000000000 Binary files a/sound/piano/F#6.ogg and /dev/null differ diff --git a/sound/piano/F#7.ogg b/sound/piano/F#7.ogg deleted file mode 100644 index 8c87e9c8b7bd..000000000000 Binary files a/sound/piano/F#7.ogg and /dev/null differ diff --git a/sound/piano/F#8.ogg b/sound/piano/F#8.ogg deleted file mode 100644 index 7a20d3cd3d4a..000000000000 Binary files a/sound/piano/F#8.ogg and /dev/null differ diff --git a/sound/piano/Fb1.ogg b/sound/piano/Fb1.ogg deleted file mode 100644 index ba3f5bde8ca0..000000000000 Binary files a/sound/piano/Fb1.ogg and /dev/null differ diff --git a/sound/piano/Fb2.ogg b/sound/piano/Fb2.ogg deleted file mode 100644 index d601261c9218..000000000000 Binary files a/sound/piano/Fb2.ogg and /dev/null differ diff --git a/sound/piano/Fb3.ogg b/sound/piano/Fb3.ogg deleted file mode 100644 index 0c67f09c6e71..000000000000 Binary files a/sound/piano/Fb3.ogg and /dev/null differ diff --git a/sound/piano/Fb4.ogg b/sound/piano/Fb4.ogg deleted file mode 100644 index 6b23e1dca8bc..000000000000 Binary files a/sound/piano/Fb4.ogg and /dev/null differ diff --git a/sound/piano/Fb5.ogg b/sound/piano/Fb5.ogg deleted file mode 100644 index 992fbef3c832..000000000000 Binary files a/sound/piano/Fb5.ogg and /dev/null differ diff --git a/sound/piano/Fb6.ogg b/sound/piano/Fb6.ogg deleted file mode 100644 index 622859f44d54..000000000000 Binary files a/sound/piano/Fb6.ogg and /dev/null differ diff --git a/sound/piano/Fb7.ogg b/sound/piano/Fb7.ogg deleted file mode 100644 index bb44482880ca..000000000000 Binary files a/sound/piano/Fb7.ogg and /dev/null differ diff --git a/sound/piano/Fb8.ogg b/sound/piano/Fb8.ogg deleted file mode 100644 index 940c92efafa5..000000000000 Binary files a/sound/piano/Fb8.ogg and /dev/null differ diff --git a/sound/piano/Fn1.ogg b/sound/piano/Fn1.ogg deleted file mode 100644 index 52a717014860..000000000000 Binary files a/sound/piano/Fn1.ogg and /dev/null differ diff --git a/sound/piano/Fn2.ogg b/sound/piano/Fn2.ogg deleted file mode 100644 index 28770a787229..000000000000 Binary files a/sound/piano/Fn2.ogg and /dev/null differ diff --git a/sound/piano/Fn3.ogg b/sound/piano/Fn3.ogg deleted file mode 100644 index 5db839ab9cbb..000000000000 Binary files a/sound/piano/Fn3.ogg and /dev/null differ diff --git a/sound/piano/Fn4.ogg b/sound/piano/Fn4.ogg deleted file mode 100644 index 5a4437102ae4..000000000000 Binary files a/sound/piano/Fn4.ogg and /dev/null differ diff --git a/sound/piano/Fn5.ogg b/sound/piano/Fn5.ogg deleted file mode 100644 index fb748454480c..000000000000 Binary files a/sound/piano/Fn5.ogg and /dev/null differ diff --git a/sound/piano/Fn6.ogg b/sound/piano/Fn6.ogg deleted file mode 100644 index 3e23b71b1ef5..000000000000 Binary files a/sound/piano/Fn6.ogg and /dev/null differ diff --git a/sound/piano/Fn7.ogg b/sound/piano/Fn7.ogg deleted file mode 100644 index d897ab7c3c8f..000000000000 Binary files a/sound/piano/Fn7.ogg and /dev/null differ diff --git a/sound/piano/Fn8.ogg b/sound/piano/Fn8.ogg deleted file mode 100644 index 3ebf0e9bbc49..000000000000 Binary files a/sound/piano/Fn8.ogg and /dev/null differ diff --git a/sound/piano/G#1.ogg b/sound/piano/G#1.ogg deleted file mode 100644 index 4b559e5583ac..000000000000 Binary files a/sound/piano/G#1.ogg and /dev/null differ diff --git a/sound/piano/G#2.ogg b/sound/piano/G#2.ogg deleted file mode 100644 index d70745db3e76..000000000000 Binary files a/sound/piano/G#2.ogg and /dev/null differ diff --git a/sound/piano/G#3.ogg b/sound/piano/G#3.ogg deleted file mode 100644 index cb69b23a17af..000000000000 Binary files a/sound/piano/G#3.ogg and /dev/null differ diff --git a/sound/piano/G#4.ogg b/sound/piano/G#4.ogg deleted file mode 100644 index fc0965821fc5..000000000000 Binary files a/sound/piano/G#4.ogg and /dev/null differ diff --git a/sound/piano/G#5.ogg b/sound/piano/G#5.ogg deleted file mode 100644 index 845c02160cc9..000000000000 Binary files a/sound/piano/G#5.ogg and /dev/null differ diff --git a/sound/piano/G#6.ogg b/sound/piano/G#6.ogg deleted file mode 100644 index 934f281311c1..000000000000 Binary files a/sound/piano/G#6.ogg and /dev/null differ diff --git a/sound/piano/G#7.ogg b/sound/piano/G#7.ogg deleted file mode 100644 index 0366b7a74b33..000000000000 Binary files a/sound/piano/G#7.ogg and /dev/null differ diff --git a/sound/piano/G#8.ogg b/sound/piano/G#8.ogg deleted file mode 100644 index 5c7f1b3fa57c..000000000000 Binary files a/sound/piano/G#8.ogg and /dev/null differ diff --git a/sound/piano/Gb1.ogg b/sound/piano/Gb1.ogg deleted file mode 100644 index 229e2e5d477e..000000000000 Binary files a/sound/piano/Gb1.ogg and /dev/null differ diff --git a/sound/piano/Gb2.ogg b/sound/piano/Gb2.ogg deleted file mode 100644 index c22963c95b67..000000000000 Binary files a/sound/piano/Gb2.ogg and /dev/null differ diff --git a/sound/piano/Gb3.ogg b/sound/piano/Gb3.ogg deleted file mode 100644 index de273ab8d200..000000000000 Binary files a/sound/piano/Gb3.ogg and /dev/null differ diff --git a/sound/piano/Gb4.ogg b/sound/piano/Gb4.ogg deleted file mode 100644 index 383d7a9212bf..000000000000 Binary files a/sound/piano/Gb4.ogg and /dev/null differ diff --git a/sound/piano/Gb5.ogg b/sound/piano/Gb5.ogg deleted file mode 100644 index e84ca674898a..000000000000 Binary files a/sound/piano/Gb5.ogg and /dev/null differ diff --git a/sound/piano/Gb6.ogg b/sound/piano/Gb6.ogg deleted file mode 100644 index d6171c668f75..000000000000 Binary files a/sound/piano/Gb6.ogg and /dev/null differ diff --git a/sound/piano/Gb7.ogg b/sound/piano/Gb7.ogg deleted file mode 100644 index c47bff993c11..000000000000 Binary files a/sound/piano/Gb7.ogg and /dev/null differ diff --git a/sound/piano/Gb8.ogg b/sound/piano/Gb8.ogg deleted file mode 100644 index bdd5e3396642..000000000000 Binary files a/sound/piano/Gb8.ogg and /dev/null differ diff --git a/sound/piano/Gn1.ogg b/sound/piano/Gn1.ogg deleted file mode 100644 index b78d3f44faa5..000000000000 Binary files a/sound/piano/Gn1.ogg and /dev/null differ diff --git a/sound/piano/Gn2.ogg b/sound/piano/Gn2.ogg deleted file mode 100644 index 4cc8e85d33fd..000000000000 Binary files a/sound/piano/Gn2.ogg and /dev/null differ diff --git a/sound/piano/Gn3.ogg b/sound/piano/Gn3.ogg deleted file mode 100644 index 65a0a83b7e9c..000000000000 Binary files a/sound/piano/Gn3.ogg and /dev/null differ diff --git a/sound/piano/Gn4.ogg b/sound/piano/Gn4.ogg deleted file mode 100644 index ac88f21a5168..000000000000 Binary files a/sound/piano/Gn4.ogg and /dev/null differ diff --git a/sound/piano/Gn5.ogg b/sound/piano/Gn5.ogg deleted file mode 100644 index a2cd6b032cf9..000000000000 Binary files a/sound/piano/Gn5.ogg and /dev/null differ diff --git a/sound/piano/Gn6.ogg b/sound/piano/Gn6.ogg deleted file mode 100644 index 6e22bdeae80c..000000000000 Binary files a/sound/piano/Gn6.ogg and /dev/null differ diff --git a/sound/piano/Gn7.ogg b/sound/piano/Gn7.ogg deleted file mode 100644 index 3c2af2907da7..000000000000 Binary files a/sound/piano/Gn7.ogg and /dev/null differ diff --git a/sound/piano/Gn8.ogg b/sound/piano/Gn8.ogg deleted file mode 100644 index f27b35f10abd..000000000000 Binary files a/sound/piano/Gn8.ogg and /dev/null differ diff --git a/sound/theme/lastmanstanding_clf.ogg b/sound/theme/lastmanstanding_clf.ogg new file mode 100644 index 000000000000..365af09116bb Binary files /dev/null and b/sound/theme/lastmanstanding_clf.ogg differ diff --git a/sound/theme/lastmanstanding_upp.ogg b/sound/theme/lastmanstanding_upp.ogg new file mode 100644 index 000000000000..d74812f73df1 Binary files /dev/null and b/sound/theme/lastmanstanding_upp.ogg differ diff --git a/sound/theme/lastmanstanding_wy.ogg b/sound/theme/lastmanstanding_wy.ogg new file mode 100644 index 000000000000..225914b416d1 Binary files /dev/null and b/sound/theme/lastmanstanding_wy.ogg differ diff --git a/sound/vehicles/Dropships/single_alarm_brr_dropship_1.ogg b/sound/vehicles/Dropships/single_alarm_brr_dropship_1.ogg new file mode 100644 index 000000000000..9fe0b4c11da1 Binary files /dev/null and b/sound/vehicles/Dropships/single_alarm_brr_dropship_1.ogg differ diff --git a/sound/violin/A#1.mid b/sound/violin/A#1.mid deleted file mode 100644 index 693b73f5420f..000000000000 Binary files a/sound/violin/A#1.mid and /dev/null differ diff --git a/sound/violin/A#2.mid b/sound/violin/A#2.mid deleted file mode 100644 index 40da5f3da152..000000000000 Binary files a/sound/violin/A#2.mid and /dev/null differ diff --git a/sound/violin/A#3.mid b/sound/violin/A#3.mid deleted file mode 100644 index 5bab6ccd6362..000000000000 Binary files a/sound/violin/A#3.mid and /dev/null differ diff --git a/sound/violin/A#4.mid b/sound/violin/A#4.mid deleted file mode 100644 index dce830448ef8..000000000000 Binary files a/sound/violin/A#4.mid and /dev/null differ diff --git a/sound/violin/A#5.mid b/sound/violin/A#5.mid deleted file mode 100644 index fda796e27b90..000000000000 Binary files a/sound/violin/A#5.mid and /dev/null differ diff --git a/sound/violin/A#6.mid b/sound/violin/A#6.mid deleted file mode 100644 index 9e5da684f43c..000000000000 Binary files a/sound/violin/A#6.mid and /dev/null differ diff --git a/sound/violin/A#7.mid b/sound/violin/A#7.mid deleted file mode 100644 index 215c56cbe7ee..000000000000 Binary files a/sound/violin/A#7.mid and /dev/null differ diff --git a/sound/violin/A#8.mid b/sound/violin/A#8.mid deleted file mode 100644 index 4b55c34691f7..000000000000 Binary files a/sound/violin/A#8.mid and /dev/null differ diff --git a/sound/violin/Ab1.mid b/sound/violin/Ab1.mid deleted file mode 100644 index b8253364b4e8..000000000000 Binary files a/sound/violin/Ab1.mid and /dev/null differ diff --git a/sound/violin/Ab2.mid b/sound/violin/Ab2.mid deleted file mode 100644 index 4cd7f9b55a7c..000000000000 Binary files a/sound/violin/Ab2.mid and /dev/null differ diff --git a/sound/violin/Ab3.mid b/sound/violin/Ab3.mid deleted file mode 100644 index e827cfc635ee..000000000000 Binary files a/sound/violin/Ab3.mid and /dev/null differ diff --git a/sound/violin/Ab4.mid b/sound/violin/Ab4.mid deleted file mode 100644 index 57e1f76c9761..000000000000 Binary files a/sound/violin/Ab4.mid and /dev/null differ diff --git a/sound/violin/Ab5.mid b/sound/violin/Ab5.mid deleted file mode 100644 index 59e95a6d9974..000000000000 Binary files a/sound/violin/Ab5.mid and /dev/null differ diff --git a/sound/violin/Ab6.mid b/sound/violin/Ab6.mid deleted file mode 100644 index 9bd3436287b9..000000000000 Binary files a/sound/violin/Ab6.mid and /dev/null differ diff --git a/sound/violin/Ab7.mid b/sound/violin/Ab7.mid deleted file mode 100644 index 3c90af807e27..000000000000 Binary files a/sound/violin/Ab7.mid and /dev/null differ diff --git a/sound/violin/Ab8.mid b/sound/violin/Ab8.mid deleted file mode 100644 index 873d771f2aea..000000000000 Binary files a/sound/violin/Ab8.mid and /dev/null differ diff --git a/sound/violin/An1.mid b/sound/violin/An1.mid deleted file mode 100644 index d7f8a001d93f..000000000000 Binary files a/sound/violin/An1.mid and /dev/null differ diff --git a/sound/violin/An2.mid b/sound/violin/An2.mid deleted file mode 100644 index 2f01800a0754..000000000000 Binary files a/sound/violin/An2.mid and /dev/null differ diff --git a/sound/violin/An3.mid b/sound/violin/An3.mid deleted file mode 100644 index c8ed3cdfa6cb..000000000000 Binary files a/sound/violin/An3.mid and /dev/null differ diff --git a/sound/violin/An4.mid b/sound/violin/An4.mid deleted file mode 100644 index e7984ca7e62b..000000000000 Binary files a/sound/violin/An4.mid and /dev/null differ diff --git a/sound/violin/An5.mid b/sound/violin/An5.mid deleted file mode 100644 index e1fd228f7a9e..000000000000 Binary files a/sound/violin/An5.mid and /dev/null differ diff --git a/sound/violin/An6.mid b/sound/violin/An6.mid deleted file mode 100644 index 1c8df6c98e5c..000000000000 Binary files a/sound/violin/An6.mid and /dev/null differ diff --git a/sound/violin/An7.mid b/sound/violin/An7.mid deleted file mode 100644 index 2784428daf9e..000000000000 Binary files a/sound/violin/An7.mid and /dev/null differ diff --git a/sound/violin/An8.mid b/sound/violin/An8.mid deleted file mode 100644 index 2db2ab70a7d9..000000000000 Binary files a/sound/violin/An8.mid and /dev/null differ diff --git a/sound/violin/B#1.mid b/sound/violin/B#1.mid deleted file mode 100644 index d83b176edd8b..000000000000 Binary files a/sound/violin/B#1.mid and /dev/null differ diff --git a/sound/violin/B#2.mid b/sound/violin/B#2.mid deleted file mode 100644 index cddff75625f0..000000000000 Binary files a/sound/violin/B#2.mid and /dev/null differ diff --git a/sound/violin/B#3.mid b/sound/violin/B#3.mid deleted file mode 100644 index 8bd7ec2fa9d6..000000000000 Binary files a/sound/violin/B#3.mid and /dev/null differ diff --git a/sound/violin/B#4.mid b/sound/violin/B#4.mid deleted file mode 100644 index 4c7ab84b57be..000000000000 Binary files a/sound/violin/B#4.mid and /dev/null differ diff --git a/sound/violin/B#5.mid b/sound/violin/B#5.mid deleted file mode 100644 index d7f990b2d6c3..000000000000 Binary files a/sound/violin/B#5.mid and /dev/null differ diff --git a/sound/violin/B#6.mid b/sound/violin/B#6.mid deleted file mode 100644 index e124ccb8e2b0..000000000000 Binary files a/sound/violin/B#6.mid and /dev/null differ diff --git a/sound/violin/B#7.mid b/sound/violin/B#7.mid deleted file mode 100644 index 231c9e428db5..000000000000 Binary files a/sound/violin/B#7.mid and /dev/null differ diff --git a/sound/violin/B#8.mid b/sound/violin/B#8.mid deleted file mode 100644 index 981943c08f0c..000000000000 Binary files a/sound/violin/B#8.mid and /dev/null differ diff --git a/sound/violin/Bb1.mid b/sound/violin/Bb1.mid deleted file mode 100644 index 693b73f5420f..000000000000 Binary files a/sound/violin/Bb1.mid and /dev/null differ diff --git a/sound/violin/Bb2.mid b/sound/violin/Bb2.mid deleted file mode 100644 index 40da5f3da152..000000000000 Binary files a/sound/violin/Bb2.mid and /dev/null differ diff --git a/sound/violin/Bb3.mid b/sound/violin/Bb3.mid deleted file mode 100644 index 5bab6ccd6362..000000000000 Binary files a/sound/violin/Bb3.mid and /dev/null differ diff --git a/sound/violin/Bb4.mid b/sound/violin/Bb4.mid deleted file mode 100644 index dce830448ef8..000000000000 Binary files a/sound/violin/Bb4.mid and /dev/null differ diff --git a/sound/violin/Bb5.mid b/sound/violin/Bb5.mid deleted file mode 100644 index fda796e27b90..000000000000 Binary files a/sound/violin/Bb5.mid and /dev/null differ diff --git a/sound/violin/Bb6.mid b/sound/violin/Bb6.mid deleted file mode 100644 index 9e5da684f43c..000000000000 Binary files a/sound/violin/Bb6.mid and /dev/null differ diff --git a/sound/violin/Bb7.mid b/sound/violin/Bb7.mid deleted file mode 100644 index 215c56cbe7ee..000000000000 Binary files a/sound/violin/Bb7.mid and /dev/null differ diff --git a/sound/violin/Bb8.mid b/sound/violin/Bb8.mid deleted file mode 100644 index 4b55c34691f7..000000000000 Binary files a/sound/violin/Bb8.mid and /dev/null differ diff --git a/sound/violin/Bn1.mid b/sound/violin/Bn1.mid deleted file mode 100644 index 27968b5f9e7d..000000000000 Binary files a/sound/violin/Bn1.mid and /dev/null differ diff --git a/sound/violin/Bn2.mid b/sound/violin/Bn2.mid deleted file mode 100644 index 54c9b99d03fe..000000000000 Binary files a/sound/violin/Bn2.mid and /dev/null differ diff --git a/sound/violin/Bn3.mid b/sound/violin/Bn3.mid deleted file mode 100644 index f73476fb7bb1..000000000000 Binary files a/sound/violin/Bn3.mid and /dev/null differ diff --git a/sound/violin/Bn4.mid b/sound/violin/Bn4.mid deleted file mode 100644 index 2aa30708a6cb..000000000000 Binary files a/sound/violin/Bn4.mid and /dev/null differ diff --git a/sound/violin/Bn5.mid b/sound/violin/Bn5.mid deleted file mode 100644 index 0ebe636b7145..000000000000 Binary files a/sound/violin/Bn5.mid and /dev/null differ diff --git a/sound/violin/Bn6.mid b/sound/violin/Bn6.mid deleted file mode 100644 index 3b8e1c217f7b..000000000000 Binary files a/sound/violin/Bn6.mid and /dev/null differ diff --git a/sound/violin/Bn7.mid b/sound/violin/Bn7.mid deleted file mode 100644 index afcb1982a13f..000000000000 Binary files a/sound/violin/Bn7.mid and /dev/null differ diff --git a/sound/violin/Bn8.mid b/sound/violin/Bn8.mid deleted file mode 100644 index 3afd469256c1..000000000000 Binary files a/sound/violin/Bn8.mid and /dev/null differ diff --git a/sound/violin/C#1.mid b/sound/violin/C#1.mid deleted file mode 100644 index 88dba851452e..000000000000 Binary files a/sound/violin/C#1.mid and /dev/null differ diff --git a/sound/violin/C#2.mid b/sound/violin/C#2.mid deleted file mode 100644 index b510926b45fa..000000000000 Binary files a/sound/violin/C#2.mid and /dev/null differ diff --git a/sound/violin/C#3.mid b/sound/violin/C#3.mid deleted file mode 100644 index 9954bbe478a2..000000000000 Binary files a/sound/violin/C#3.mid and /dev/null differ diff --git a/sound/violin/C#4.mid b/sound/violin/C#4.mid deleted file mode 100644 index 2c5ff74db0aa..000000000000 Binary files a/sound/violin/C#4.mid and /dev/null differ diff --git a/sound/violin/C#5.mid b/sound/violin/C#5.mid deleted file mode 100644 index e5850a3fd041..000000000000 Binary files a/sound/violin/C#5.mid and /dev/null differ diff --git a/sound/violin/C#6.mid b/sound/violin/C#6.mid deleted file mode 100644 index 217c0ad014c5..000000000000 Binary files a/sound/violin/C#6.mid and /dev/null differ diff --git a/sound/violin/C#7.mid b/sound/violin/C#7.mid deleted file mode 100644 index ec32bdbf9040..000000000000 Binary files a/sound/violin/C#7.mid and /dev/null differ diff --git a/sound/violin/C#8.mid b/sound/violin/C#8.mid deleted file mode 100644 index 555bce3db0d8..000000000000 Binary files a/sound/violin/C#8.mid and /dev/null differ diff --git a/sound/violin/Cb1.mid b/sound/violin/Cb1.mid deleted file mode 100644 index a00f09dfb088..000000000000 Binary files a/sound/violin/Cb1.mid and /dev/null differ diff --git a/sound/violin/Cb2.mid b/sound/violin/Cb2.mid deleted file mode 100644 index 4085711bf127..000000000000 Binary files a/sound/violin/Cb2.mid and /dev/null differ diff --git a/sound/violin/Cb3.mid b/sound/violin/Cb3.mid deleted file mode 100644 index f647983ef05c..000000000000 Binary files a/sound/violin/Cb3.mid and /dev/null differ diff --git a/sound/violin/Cb4.mid b/sound/violin/Cb4.mid deleted file mode 100644 index 24f22f09eecc..000000000000 Binary files a/sound/violin/Cb4.mid and /dev/null differ diff --git a/sound/violin/Cb5.mid b/sound/violin/Cb5.mid deleted file mode 100644 index 057e97c5e0d0..000000000000 Binary files a/sound/violin/Cb5.mid and /dev/null differ diff --git a/sound/violin/Cb6.mid b/sound/violin/Cb6.mid deleted file mode 100644 index 887e65fc13d0..000000000000 Binary files a/sound/violin/Cb6.mid and /dev/null differ diff --git a/sound/violin/Cb7.mid b/sound/violin/Cb7.mid deleted file mode 100644 index 99668bc192c2..000000000000 Binary files a/sound/violin/Cb7.mid and /dev/null differ diff --git a/sound/violin/Cb8.mid b/sound/violin/Cb8.mid deleted file mode 100644 index 53ea61d1b250..000000000000 Binary files a/sound/violin/Cb8.mid and /dev/null differ diff --git a/sound/violin/Cb9.mid b/sound/violin/Cb9.mid deleted file mode 100644 index 1e8c3afadf13..000000000000 Binary files a/sound/violin/Cb9.mid and /dev/null differ diff --git a/sound/violin/Cn1.mid b/sound/violin/Cn1.mid deleted file mode 100644 index 857120f31f4e..000000000000 Binary files a/sound/violin/Cn1.mid and /dev/null differ diff --git a/sound/violin/Cn2.mid b/sound/violin/Cn2.mid deleted file mode 100644 index 3ccd6670e873..000000000000 Binary files a/sound/violin/Cn2.mid and /dev/null differ diff --git a/sound/violin/Cn3.mid b/sound/violin/Cn3.mid deleted file mode 100644 index 1851e4f8d27d..000000000000 Binary files a/sound/violin/Cn3.mid and /dev/null differ diff --git a/sound/violin/Cn4.mid b/sound/violin/Cn4.mid deleted file mode 100644 index 65e8b0efe4e5..000000000000 Binary files a/sound/violin/Cn4.mid and /dev/null differ diff --git a/sound/violin/Cn5.mid b/sound/violin/Cn5.mid deleted file mode 100644 index 544f921e43b9..000000000000 Binary files a/sound/violin/Cn5.mid and /dev/null differ diff --git a/sound/violin/Cn6.mid b/sound/violin/Cn6.mid deleted file mode 100644 index 7c78dab2f076..000000000000 Binary files a/sound/violin/Cn6.mid and /dev/null differ diff --git a/sound/violin/Cn7.mid b/sound/violin/Cn7.mid deleted file mode 100644 index 3abe4cde0863..000000000000 Binary files a/sound/violin/Cn7.mid and /dev/null differ diff --git a/sound/violin/Cn8.mid b/sound/violin/Cn8.mid deleted file mode 100644 index 06f14081b3b9..000000000000 Binary files a/sound/violin/Cn8.mid and /dev/null differ diff --git a/sound/violin/Cn9.mid b/sound/violin/Cn9.mid deleted file mode 100644 index 62f4eef045a8..000000000000 Binary files a/sound/violin/Cn9.mid and /dev/null differ diff --git a/sound/violin/D#1.mid b/sound/violin/D#1.mid deleted file mode 100644 index 829e6fcf185a..000000000000 Binary files a/sound/violin/D#1.mid and /dev/null differ diff --git a/sound/violin/D#2.mid b/sound/violin/D#2.mid deleted file mode 100644 index 66029b340cc9..000000000000 Binary files a/sound/violin/D#2.mid and /dev/null differ diff --git a/sound/violin/D#3.mid b/sound/violin/D#3.mid deleted file mode 100644 index c982375941e6..000000000000 Binary files a/sound/violin/D#3.mid and /dev/null differ diff --git a/sound/violin/D#4.mid b/sound/violin/D#4.mid deleted file mode 100644 index 016ed4f1edf9..000000000000 Binary files a/sound/violin/D#4.mid and /dev/null differ diff --git a/sound/violin/D#5.mid b/sound/violin/D#5.mid deleted file mode 100644 index ddb511795df2..000000000000 Binary files a/sound/violin/D#5.mid and /dev/null differ diff --git a/sound/violin/D#6.mid b/sound/violin/D#6.mid deleted file mode 100644 index b7242b9ab994..000000000000 Binary files a/sound/violin/D#6.mid and /dev/null differ diff --git a/sound/violin/D#7.mid b/sound/violin/D#7.mid deleted file mode 100644 index 773538340a56..000000000000 Binary files a/sound/violin/D#7.mid and /dev/null differ diff --git a/sound/violin/D#8.mid b/sound/violin/D#8.mid deleted file mode 100644 index 4ad074e173b7..000000000000 Binary files a/sound/violin/D#8.mid and /dev/null differ diff --git a/sound/violin/Db1.mid b/sound/violin/Db1.mid deleted file mode 100644 index 88dba851452e..000000000000 Binary files a/sound/violin/Db1.mid and /dev/null differ diff --git a/sound/violin/Db2.mid b/sound/violin/Db2.mid deleted file mode 100644 index b510926b45fa..000000000000 Binary files a/sound/violin/Db2.mid and /dev/null differ diff --git a/sound/violin/Db3.mid b/sound/violin/Db3.mid deleted file mode 100644 index 9954bbe478a2..000000000000 Binary files a/sound/violin/Db3.mid and /dev/null differ diff --git a/sound/violin/Db4.mid b/sound/violin/Db4.mid deleted file mode 100644 index 2c5ff74db0aa..000000000000 Binary files a/sound/violin/Db4.mid and /dev/null differ diff --git a/sound/violin/Db5.mid b/sound/violin/Db5.mid deleted file mode 100644 index e5850a3fd041..000000000000 Binary files a/sound/violin/Db5.mid and /dev/null differ diff --git a/sound/violin/Db6.mid b/sound/violin/Db6.mid deleted file mode 100644 index 217c0ad014c5..000000000000 Binary files a/sound/violin/Db6.mid and /dev/null differ diff --git a/sound/violin/Db7.mid b/sound/violin/Db7.mid deleted file mode 100644 index ec32bdbf9040..000000000000 Binary files a/sound/violin/Db7.mid and /dev/null differ diff --git a/sound/violin/Db8.mid b/sound/violin/Db8.mid deleted file mode 100644 index 555bce3db0d8..000000000000 Binary files a/sound/violin/Db8.mid and /dev/null differ diff --git a/sound/violin/Dn1.mid b/sound/violin/Dn1.mid deleted file mode 100644 index 92e4e0d95816..000000000000 Binary files a/sound/violin/Dn1.mid and /dev/null differ diff --git a/sound/violin/Dn2.mid b/sound/violin/Dn2.mid deleted file mode 100644 index 34eb9d1db1ba..000000000000 Binary files a/sound/violin/Dn2.mid and /dev/null differ diff --git a/sound/violin/Dn3.mid b/sound/violin/Dn3.mid deleted file mode 100644 index fbd56085aafa..000000000000 Binary files a/sound/violin/Dn3.mid and /dev/null differ diff --git a/sound/violin/Dn4.mid b/sound/violin/Dn4.mid deleted file mode 100644 index e13c74482921..000000000000 Binary files a/sound/violin/Dn4.mid and /dev/null differ diff --git a/sound/violin/Dn5.mid b/sound/violin/Dn5.mid deleted file mode 100644 index 8fd41e5c6fe0..000000000000 Binary files a/sound/violin/Dn5.mid and /dev/null differ diff --git a/sound/violin/Dn6.mid b/sound/violin/Dn6.mid deleted file mode 100644 index d47329e8f9ed..000000000000 Binary files a/sound/violin/Dn6.mid and /dev/null differ diff --git a/sound/violin/Dn7.mid b/sound/violin/Dn7.mid deleted file mode 100644 index b24966038762..000000000000 Binary files a/sound/violin/Dn7.mid and /dev/null differ diff --git a/sound/violin/Dn8.mid b/sound/violin/Dn8.mid deleted file mode 100644 index 56667a1a86d0..000000000000 Binary files a/sound/violin/Dn8.mid and /dev/null differ diff --git a/sound/violin/E#1.mid b/sound/violin/E#1.mid deleted file mode 100644 index 3f130ee126c1..000000000000 Binary files a/sound/violin/E#1.mid and /dev/null differ diff --git a/sound/violin/E#2.mid b/sound/violin/E#2.mid deleted file mode 100644 index f67c2d0a2673..000000000000 Binary files a/sound/violin/E#2.mid and /dev/null differ diff --git a/sound/violin/E#3.mid b/sound/violin/E#3.mid deleted file mode 100644 index bb393382d6c8..000000000000 Binary files a/sound/violin/E#3.mid and /dev/null differ diff --git a/sound/violin/E#4.mid b/sound/violin/E#4.mid deleted file mode 100644 index a96520c595d3..000000000000 Binary files a/sound/violin/E#4.mid and /dev/null differ diff --git a/sound/violin/E#5.mid b/sound/violin/E#5.mid deleted file mode 100644 index d1378af1972d..000000000000 Binary files a/sound/violin/E#5.mid and /dev/null differ diff --git a/sound/violin/E#6.mid b/sound/violin/E#6.mid deleted file mode 100644 index 7abe40bd8242..000000000000 Binary files a/sound/violin/E#6.mid and /dev/null differ diff --git a/sound/violin/E#7.mid b/sound/violin/E#7.mid deleted file mode 100644 index df278c20d6b6..000000000000 Binary files a/sound/violin/E#7.mid and /dev/null differ diff --git a/sound/violin/E#8.mid b/sound/violin/E#8.mid deleted file mode 100644 index 35254cd5b25b..000000000000 Binary files a/sound/violin/E#8.mid and /dev/null differ diff --git a/sound/violin/Eb1.mid b/sound/violin/Eb1.mid deleted file mode 100644 index 829e6fcf185a..000000000000 Binary files a/sound/violin/Eb1.mid and /dev/null differ diff --git a/sound/violin/Eb2.mid b/sound/violin/Eb2.mid deleted file mode 100644 index 66029b340cc9..000000000000 Binary files a/sound/violin/Eb2.mid and /dev/null differ diff --git a/sound/violin/Eb3.mid b/sound/violin/Eb3.mid deleted file mode 100644 index c982375941e6..000000000000 Binary files a/sound/violin/Eb3.mid and /dev/null differ diff --git a/sound/violin/Eb4.mid b/sound/violin/Eb4.mid deleted file mode 100644 index 016ed4f1edf9..000000000000 Binary files a/sound/violin/Eb4.mid and /dev/null differ diff --git a/sound/violin/Eb5.mid b/sound/violin/Eb5.mid deleted file mode 100644 index ddb511795df2..000000000000 Binary files a/sound/violin/Eb5.mid and /dev/null differ diff --git a/sound/violin/Eb6.mid b/sound/violin/Eb6.mid deleted file mode 100644 index b7242b9ab994..000000000000 Binary files a/sound/violin/Eb6.mid and /dev/null differ diff --git a/sound/violin/Eb7.mid b/sound/violin/Eb7.mid deleted file mode 100644 index 773538340a56..000000000000 Binary files a/sound/violin/Eb7.mid and /dev/null differ diff --git a/sound/violin/Eb8.mid b/sound/violin/Eb8.mid deleted file mode 100644 index 4ad074e173b7..000000000000 Binary files a/sound/violin/Eb8.mid and /dev/null differ diff --git a/sound/violin/En1.mid b/sound/violin/En1.mid deleted file mode 100644 index 79ab68df9df7..000000000000 Binary files a/sound/violin/En1.mid and /dev/null differ diff --git a/sound/violin/En2.mid b/sound/violin/En2.mid deleted file mode 100644 index cd61c8d0de5b..000000000000 Binary files a/sound/violin/En2.mid and /dev/null differ diff --git a/sound/violin/En3.mid b/sound/violin/En3.mid deleted file mode 100644 index da5b703d545b..000000000000 Binary files a/sound/violin/En3.mid and /dev/null differ diff --git a/sound/violin/En4.mid b/sound/violin/En4.mid deleted file mode 100644 index f7d3af024ff2..000000000000 Binary files a/sound/violin/En4.mid and /dev/null differ diff --git a/sound/violin/En5.mid b/sound/violin/En5.mid deleted file mode 100644 index d3d353943f9d..000000000000 Binary files a/sound/violin/En5.mid and /dev/null differ diff --git a/sound/violin/En6.mid b/sound/violin/En6.mid deleted file mode 100644 index 73eb5b0697db..000000000000 Binary files a/sound/violin/En6.mid and /dev/null differ diff --git a/sound/violin/En7.mid b/sound/violin/En7.mid deleted file mode 100644 index 79a9462c844e..000000000000 Binary files a/sound/violin/En7.mid and /dev/null differ diff --git a/sound/violin/En8.mid b/sound/violin/En8.mid deleted file mode 100644 index 88947fc7318e..000000000000 Binary files a/sound/violin/En8.mid and /dev/null differ diff --git a/sound/violin/F#1.mid b/sound/violin/F#1.mid deleted file mode 100644 index d18668e89112..000000000000 Binary files a/sound/violin/F#1.mid and /dev/null differ diff --git a/sound/violin/F#2.mid b/sound/violin/F#2.mid deleted file mode 100644 index 302f0c6fdc15..000000000000 Binary files a/sound/violin/F#2.mid and /dev/null differ diff --git a/sound/violin/F#3.mid b/sound/violin/F#3.mid deleted file mode 100644 index 1f592fc90399..000000000000 Binary files a/sound/violin/F#3.mid and /dev/null differ diff --git a/sound/violin/F#4.mid b/sound/violin/F#4.mid deleted file mode 100644 index 45854126f988..000000000000 Binary files a/sound/violin/F#4.mid and /dev/null differ diff --git a/sound/violin/F#5.mid b/sound/violin/F#5.mid deleted file mode 100644 index fb1e1da339a9..000000000000 Binary files a/sound/violin/F#5.mid and /dev/null differ diff --git a/sound/violin/F#6.mid b/sound/violin/F#6.mid deleted file mode 100644 index bfa896bb7844..000000000000 Binary files a/sound/violin/F#6.mid and /dev/null differ diff --git a/sound/violin/F#7.mid b/sound/violin/F#7.mid deleted file mode 100644 index a27763c1d47d..000000000000 Binary files a/sound/violin/F#7.mid and /dev/null differ diff --git a/sound/violin/F#8.mid b/sound/violin/F#8.mid deleted file mode 100644 index aaab80a72762..000000000000 Binary files a/sound/violin/F#8.mid and /dev/null differ diff --git a/sound/violin/Fb1.mid b/sound/violin/Fb1.mid deleted file mode 100644 index c89b3f36b439..000000000000 Binary files a/sound/violin/Fb1.mid and /dev/null differ diff --git a/sound/violin/Fb2.mid b/sound/violin/Fb2.mid deleted file mode 100644 index 3db6af1aa459..000000000000 Binary files a/sound/violin/Fb2.mid and /dev/null differ diff --git a/sound/violin/Fb3.mid b/sound/violin/Fb3.mid deleted file mode 100644 index 5f601f3ac424..000000000000 Binary files a/sound/violin/Fb3.mid and /dev/null differ diff --git a/sound/violin/Fb4.mid b/sound/violin/Fb4.mid deleted file mode 100644 index f1abc8109d1e..000000000000 Binary files a/sound/violin/Fb4.mid and /dev/null differ diff --git a/sound/violin/Fb5.mid b/sound/violin/Fb5.mid deleted file mode 100644 index 2ec1b2e51283..000000000000 Binary files a/sound/violin/Fb5.mid and /dev/null differ diff --git a/sound/violin/Fb6.mid b/sound/violin/Fb6.mid deleted file mode 100644 index b8bdf7fee071..000000000000 Binary files a/sound/violin/Fb6.mid and /dev/null differ diff --git a/sound/violin/Fb7.mid b/sound/violin/Fb7.mid deleted file mode 100644 index 51f5f1bcdb48..000000000000 Binary files a/sound/violin/Fb7.mid and /dev/null differ diff --git a/sound/violin/Fb8.mid b/sound/violin/Fb8.mid deleted file mode 100644 index 47928f38475c..000000000000 Binary files a/sound/violin/Fb8.mid and /dev/null differ diff --git a/sound/violin/Fn1.mid b/sound/violin/Fn1.mid deleted file mode 100644 index abe0d4e4051b..000000000000 Binary files a/sound/violin/Fn1.mid and /dev/null differ diff --git a/sound/violin/Fn2.mid b/sound/violin/Fn2.mid deleted file mode 100644 index d245bef3b54c..000000000000 Binary files a/sound/violin/Fn2.mid and /dev/null differ diff --git a/sound/violin/Fn3.mid b/sound/violin/Fn3.mid deleted file mode 100644 index e532e30dac9c..000000000000 Binary files a/sound/violin/Fn3.mid and /dev/null differ diff --git a/sound/violin/Fn4.mid b/sound/violin/Fn4.mid deleted file mode 100644 index 47219c72fa2e..000000000000 Binary files a/sound/violin/Fn4.mid and /dev/null differ diff --git a/sound/violin/Fn5.mid b/sound/violin/Fn5.mid deleted file mode 100644 index 630d16371d9e..000000000000 Binary files a/sound/violin/Fn5.mid and /dev/null differ diff --git a/sound/violin/Fn6.mid b/sound/violin/Fn6.mid deleted file mode 100644 index 08cbc981bdb6..000000000000 Binary files a/sound/violin/Fn6.mid and /dev/null differ diff --git a/sound/violin/Fn7.mid b/sound/violin/Fn7.mid deleted file mode 100644 index 6c28c7d272e2..000000000000 Binary files a/sound/violin/Fn7.mid and /dev/null differ diff --git a/sound/violin/Fn8.mid b/sound/violin/Fn8.mid deleted file mode 100644 index 2d73762f269a..000000000000 Binary files a/sound/violin/Fn8.mid and /dev/null differ diff --git a/sound/violin/G#1.mid b/sound/violin/G#1.mid deleted file mode 100644 index b1b38856858c..000000000000 Binary files a/sound/violin/G#1.mid and /dev/null differ diff --git a/sound/violin/G#2.mid b/sound/violin/G#2.mid deleted file mode 100644 index e827cfc635ee..000000000000 Binary files a/sound/violin/G#2.mid and /dev/null differ diff --git a/sound/violin/G#3.mid b/sound/violin/G#3.mid deleted file mode 100644 index 57e1f76c9761..000000000000 Binary files a/sound/violin/G#3.mid and /dev/null differ diff --git a/sound/violin/G#4.mid b/sound/violin/G#4.mid deleted file mode 100644 index 59e95a6d9974..000000000000 Binary files a/sound/violin/G#4.mid and /dev/null differ diff --git a/sound/violin/G#5.mid b/sound/violin/G#5.mid deleted file mode 100644 index 9bd3436287b9..000000000000 Binary files a/sound/violin/G#5.mid and /dev/null differ diff --git a/sound/violin/G#6.mid b/sound/violin/G#6.mid deleted file mode 100644 index 3c90af807e27..000000000000 Binary files a/sound/violin/G#6.mid and /dev/null differ diff --git a/sound/violin/G#7.mid b/sound/violin/G#7.mid deleted file mode 100644 index b51afd323c64..000000000000 Binary files a/sound/violin/G#7.mid and /dev/null differ diff --git a/sound/violin/G#8.mid b/sound/violin/G#8.mid deleted file mode 100644 index d3f5c898d47d..000000000000 Binary files a/sound/violin/G#8.mid and /dev/null differ diff --git a/sound/violin/Gb1.mid b/sound/violin/Gb1.mid deleted file mode 100644 index d18668e89112..000000000000 Binary files a/sound/violin/Gb1.mid and /dev/null differ diff --git a/sound/violin/Gb2.mid b/sound/violin/Gb2.mid deleted file mode 100644 index 302f0c6fdc15..000000000000 Binary files a/sound/violin/Gb2.mid and /dev/null differ diff --git a/sound/violin/Gb3.mid b/sound/violin/Gb3.mid deleted file mode 100644 index 1f592fc90399..000000000000 Binary files a/sound/violin/Gb3.mid and /dev/null differ diff --git a/sound/violin/Gb4.mid b/sound/violin/Gb4.mid deleted file mode 100644 index 45854126f988..000000000000 Binary files a/sound/violin/Gb4.mid and /dev/null differ diff --git a/sound/violin/Gb5.mid b/sound/violin/Gb5.mid deleted file mode 100644 index fb1e1da339a9..000000000000 Binary files a/sound/violin/Gb5.mid and /dev/null differ diff --git a/sound/violin/Gb6.mid b/sound/violin/Gb6.mid deleted file mode 100644 index bfa896bb7844..000000000000 Binary files a/sound/violin/Gb6.mid and /dev/null differ diff --git a/sound/violin/Gb7.mid b/sound/violin/Gb7.mid deleted file mode 100644 index a27763c1d47d..000000000000 Binary files a/sound/violin/Gb7.mid and /dev/null differ diff --git a/sound/violin/Gb8.mid b/sound/violin/Gb8.mid deleted file mode 100644 index aaab80a72762..000000000000 Binary files a/sound/violin/Gb8.mid and /dev/null differ diff --git a/sound/violin/Gn1.mid b/sound/violin/Gn1.mid deleted file mode 100644 index 1df52ab07606..000000000000 Binary files a/sound/violin/Gn1.mid and /dev/null differ diff --git a/sound/violin/Gn2.mid b/sound/violin/Gn2.mid deleted file mode 100644 index 6e0ca3831272..000000000000 Binary files a/sound/violin/Gn2.mid and /dev/null differ diff --git a/sound/violin/Gn3.mid b/sound/violin/Gn3.mid deleted file mode 100644 index bb3e6dedcbf9..000000000000 Binary files a/sound/violin/Gn3.mid and /dev/null differ diff --git a/sound/violin/Gn4.mid b/sound/violin/Gn4.mid deleted file mode 100644 index 0c46432afee5..000000000000 Binary files a/sound/violin/Gn4.mid and /dev/null differ diff --git a/sound/violin/Gn5.mid b/sound/violin/Gn5.mid deleted file mode 100644 index f39dcf5e2b9f..000000000000 Binary files a/sound/violin/Gn5.mid and /dev/null differ diff --git a/sound/violin/Gn6.mid b/sound/violin/Gn6.mid deleted file mode 100644 index 0efa2259ca17..000000000000 Binary files a/sound/violin/Gn6.mid and /dev/null differ diff --git a/sound/violin/Gn7.mid b/sound/violin/Gn7.mid deleted file mode 100644 index 22fd1b6bcb00..000000000000 Binary files a/sound/violin/Gn7.mid and /dev/null differ diff --git a/sound/violin/Gn8.mid b/sound/violin/Gn8.mid deleted file mode 100644 index 16b7171d627c..000000000000 Binary files a/sound/violin/Gn8.mid and /dev/null differ diff --git a/sound/voice/human_male_scream_6.ogg b/sound/voice/human_male_scream_6.ogg new file mode 100644 index 000000000000..0005a26bf7ac Binary files /dev/null and b/sound/voice/human_male_scream_6.ogg differ diff --git a/sound/voice/joe/be_careful_with_that.ogg b/sound/voice/joe/be_careful_with_that.ogg new file mode 100644 index 000000000000..14f3ca8c357d Binary files /dev/null and b/sound/voice/joe/be_careful_with_that.ogg differ diff --git a/sound/voice/joe/been_looking_for_you.ogg b/sound/voice/joe/been_looking_for_you.ogg new file mode 100644 index 000000000000..14aa2c9a175d Binary files /dev/null and b/sound/voice/joe/been_looking_for_you.ogg differ diff --git a/sound/voice/joe/calm_down.ogg b/sound/voice/joe/calm_down.ogg new file mode 100644 index 000000000000..dde85ea17457 Binary files /dev/null and b/sound/voice/joe/calm_down.ogg differ diff --git a/sound/voice/joe/come_with_me.ogg b/sound/voice/joe/come_with_me.ogg new file mode 100644 index 000000000000..395c99c3850f Binary files /dev/null and b/sound/voice/joe/come_with_me.ogg differ diff --git a/sound/voice/joe/death_dream.ogg b/sound/voice/joe/death_dream.ogg new file mode 100644 index 000000000000..366890711fe4 Binary files /dev/null and b/sound/voice/joe/death_dream.ogg differ diff --git a/sound/voice/joe/death_normal.ogg b/sound/voice/joe/death_normal.ogg new file mode 100644 index 000000000000..b1afd713e094 Binary files /dev/null and b/sound/voice/joe/death_normal.ogg differ diff --git a/sound/voice/joe/death_silence.ogg b/sound/voice/joe/death_silence.ogg new file mode 100644 index 000000000000..fea5080ccc99 Binary files /dev/null and b/sound/voice/joe/death_silence.ogg differ diff --git a/sound/voice/joe/death_tomorrow.ogg b/sound/voice/joe/death_tomorrow.ogg new file mode 100644 index 000000000000..dbb134005e5e Binary files /dev/null and b/sound/voice/joe/death_tomorrow.ogg differ diff --git a/sound/voice/joe/dont_run.ogg b/sound/voice/joe/dont_run.ogg new file mode 100644 index 000000000000..ce67a355c16b Binary files /dev/null and b/sound/voice/joe/dont_run.ogg differ diff --git a/sound/voice/joe/dontdothat.ogg b/sound/voice/joe/dontdothat.ogg new file mode 100644 index 000000000000..c078a5fdf191 Binary files /dev/null and b/sound/voice/joe/dontdothat.ogg differ diff --git a/sound/voice/joe/enough.ogg b/sound/voice/joe/enough.ogg new file mode 100644 index 000000000000..c6667751adcc Binary files /dev/null and b/sound/voice/joe/enough.ogg differ diff --git a/sound/voice/joe/existing_tasks.ogg b/sound/voice/joe/existing_tasks.ogg new file mode 100644 index 000000000000..2751538790fd Binary files /dev/null and b/sound/voice/joe/existing_tasks.ogg differ diff --git a/sound/voice/joe/expensive_mistake.ogg b/sound/voice/joe/expensive_mistake.ogg new file mode 100644 index 000000000000..cee21b5066b2 Binary files /dev/null and b/sound/voice/joe/expensive_mistake.ogg differ diff --git a/sound/voice/joe/follow_me_please.ogg b/sound/voice/joe/follow_me_please.ogg new file mode 100644 index 000000000000..10ecac4f6b19 Binary files /dev/null and b/sound/voice/joe/follow_me_please.ogg differ diff --git a/sound/voice/joe/glad_we_resolved.ogg b/sound/voice/joe/glad_we_resolved.ogg new file mode 100644 index 000000000000..117e35eff683 Binary files /dev/null and b/sound/voice/joe/glad_we_resolved.ogg differ diff --git a/sound/voice/joe/had_the_pleasure.ogg b/sound/voice/joe/had_the_pleasure.ogg new file mode 100644 index 000000000000..6f8972900290 Binary files /dev/null and b/sound/voice/joe/had_the_pleasure.ogg differ diff --git a/sound/voice/joe/have_a_problem.ogg b/sound/voice/joe/have_a_problem.ogg new file mode 100644 index 000000000000..55781f21c7d2 Binary files /dev/null and b/sound/voice/joe/have_a_problem.ogg differ diff --git a/sound/voice/joe/hold_still.ogg b/sound/voice/joe/hold_still.ogg new file mode 100644 index 000000000000..916c11e04286 Binary files /dev/null and b/sound/voice/joe/hold_still.ogg differ diff --git a/sound/voice/joe/how_are_you.ogg b/sound/voice/joe/how_are_you.ogg new file mode 100644 index 000000000000..49da5e70f93f Binary files /dev/null and b/sound/voice/joe/how_are_you.ogg differ diff --git a/sound/voice/joe/how_inconsiderate.ogg b/sound/voice/joe/how_inconsiderate.ogg new file mode 100644 index 000000000000..acebe30a36d7 Binary files /dev/null and b/sound/voice/joe/how_inconsiderate.ogg differ diff --git a/sound/voice/joe/hurt_yourself.ogg b/sound/voice/joe/hurt_yourself.ogg new file mode 100644 index 000000000000..5a89d8e32865 Binary files /dev/null and b/sound/voice/joe/hurt_yourself.ogg differ diff --git a/sound/voice/joe/interloper.ogg b/sound/voice/joe/interloper.ogg new file mode 100644 index 000000000000..4c4872aa6e52 Binary files /dev/null and b/sound/voice/joe/interloper.ogg differ diff --git a/sound/voice/joe/investigate_weapon.ogg b/sound/voice/joe/investigate_weapon.ogg new file mode 100644 index 000000000000..58aeff07079f Binary files /dev/null and b/sound/voice/joe/investigate_weapon.ogg differ diff --git a/sound/voice/joe/is_anybody_there.ogg b/sound/voice/joe/is_anybody_there.ogg new file mode 100644 index 000000000000..ac59c588a0e6 Binary files /dev/null and b/sound/voice/joe/is_anybody_there.ogg differ diff --git a/sound/voice/joe/let_me_help.ogg b/sound/voice/joe/let_me_help.ogg new file mode 100644 index 000000000000..564654c91a2b Binary files /dev/null and b/sound/voice/joe/let_me_help.ogg differ diff --git a/sound/voice/joe/most_concerning.ogg b/sound/voice/joe/most_concerning.ogg new file mode 100644 index 000000000000..33f9c5afc875 Binary files /dev/null and b/sound/voice/joe/most_concerning.ogg differ diff --git a/sound/voice/joe/no_need.ogg b/sound/voice/joe/no_need.ogg new file mode 100644 index 000000000000..80cf3056efe7 Binary files /dev/null and b/sound/voice/joe/no_need.ogg differ diff --git a/sound/voice/joe/not_be_tolerated.ogg b/sound/voice/joe/not_be_tolerated.ogg new file mode 100644 index 000000000000..bb7451d9608c Binary files /dev/null and b/sound/voice/joe/not_be_tolerated.ogg differ diff --git a/sound/voice/joe/pity.ogg b/sound/voice/joe/pity.ogg new file mode 100644 index 000000000000..1b13b95cdb95 Binary files /dev/null and b/sound/voice/joe/pity.ogg differ diff --git a/sound/voice/joe/protected_area_compromised.ogg b/sound/voice/joe/protected_area_compromised.ogg new file mode 100644 index 000000000000..688dcac5cc95 Binary files /dev/null and b/sound/voice/joe/protected_area_compromised.ogg differ diff --git a/sound/voice/joe/really.ogg b/sound/voice/joe/really.ogg new file mode 100644 index 000000000000..29ba7ae2208b Binary files /dev/null and b/sound/voice/joe/really.ogg differ diff --git a/sound/voice/joe/really_shouldnt_be_here.ogg b/sound/voice/joe/really_shouldnt_be_here.ogg new file mode 100644 index 000000000000..c8bd28004394 Binary files /dev/null and b/sound/voice/joe/really_shouldnt_be_here.ogg differ diff --git a/sound/voice/joe/someone_hurt.ogg b/sound/voice/joe/someone_hurt.ogg new file mode 100644 index 000000000000..014fb45f660f Binary files /dev/null and b/sound/voice/joe/someone_hurt.ogg differ diff --git a/sound/voice/joe/still_here.ogg b/sound/voice/joe/still_here.ogg new file mode 100644 index 000000000000..1f7b2f7c4f76 Binary files /dev/null and b/sound/voice/joe/still_here.ogg differ diff --git a/sound/voice/joe/stop_that.ogg b/sound/voice/joe/stop_that.ogg new file mode 100644 index 000000000000..2e585ff600be Binary files /dev/null and b/sound/voice/joe/stop_that.ogg differ diff --git a/sound/voice/joe/support_ticket_removed.ogg b/sound/voice/joe/support_ticket_removed.ogg new file mode 100644 index 000000000000..3fe68743cdc9 Binary files /dev/null and b/sound/voice/joe/support_ticket_removed.ogg differ diff --git a/sound/voice/joe/this_isnt_the_answer.ogg b/sound/voice/joe/this_isnt_the_answer.ogg new file mode 100644 index 000000000000..0d9603449cc6 Binary files /dev/null and b/sound/voice/joe/this_isnt_the_answer.ogg differ diff --git a/sound/voice/joe/tut_tut.ogg b/sound/voice/joe/tut_tut.ogg new file mode 100644 index 000000000000..a97eb17715cd Binary files /dev/null and b/sound/voice/joe/tut_tut.ogg differ diff --git a/sound/voice/joe/unwarranted.ogg b/sound/voice/joe/unwarranted.ogg new file mode 100644 index 000000000000..faf566ede40a Binary files /dev/null and b/sound/voice/joe/unwarranted.ogg differ diff --git a/sound/voice/joe/weapon_permit.ogg b/sound/voice/joe/weapon_permit.ogg deleted file mode 100644 index 9d22d1d2b163..000000000000 Binary files a/sound/voice/joe/weapon_permit.ogg and /dev/null differ diff --git a/sound/voice/joe/what_do_you_need.ogg b/sound/voice/joe/what_do_you_need.ogg new file mode 100644 index 000000000000..fcce740136c9 Binary files /dev/null and b/sound/voice/joe/what_do_you_need.ogg differ diff --git a/sound/weapons/gun_es4.ogg b/sound/weapons/gun_es4.ogg new file mode 100644 index 000000000000..54210c02fa60 Binary files /dev/null and b/sound/weapons/gun_es4.ogg differ diff --git a/sound/weapons/gun_mg.ogg b/sound/weapons/gun_mg.ogg new file mode 100644 index 000000000000..9741526d31b0 Binary files /dev/null and b/sound/weapons/gun_mg.ogg differ diff --git a/sound/weapons/gun_shotgun_xm51.ogg b/sound/weapons/gun_shotgun_xm51.ogg new file mode 100644 index 000000000000..0b0f94e49ca1 Binary files /dev/null and b/sound/weapons/gun_shotgun_xm51.ogg differ diff --git a/sound/weapons/gun_tt.ogg b/sound/weapons/gun_tt.ogg new file mode 100644 index 000000000000..e55663329860 Binary files /dev/null and b/sound/weapons/gun_tt.ogg differ diff --git a/sound/weapons/gun_vulture_fire.ogg b/sound/weapons/gun_vulture_fire.ogg new file mode 100644 index 000000000000..156127cb5a14 Binary files /dev/null and b/sound/weapons/gun_vulture_fire.ogg differ diff --git a/sound/weapons/gun_vulture_report.ogg b/sound/weapons/gun_vulture_report.ogg new file mode 100644 index 000000000000..16cb5eae9e32 Binary files /dev/null and b/sound/weapons/gun_vulture_report.ogg differ diff --git a/sound/weapons/gun_xm88_directhit_high.ogg b/sound/weapons/gun_xm88_directhit_high.ogg new file mode 100644 index 000000000000..6db42f73cf0e Binary files /dev/null and b/sound/weapons/gun_xm88_directhit_high.ogg differ diff --git a/sound/weapons/gun_xm88_directhit_low.ogg b/sound/weapons/gun_xm88_directhit_low.ogg new file mode 100644 index 000000000000..c516f4fc2650 Binary files /dev/null and b/sound/weapons/gun_xm88_directhit_low.ogg differ diff --git a/sound/weapons/gun_xm88_directhit_medium.ogg b/sound/weapons/gun_xm88_directhit_medium.ogg new file mode 100644 index 000000000000..106fd23cb981 Binary files /dev/null and b/sound/weapons/gun_xm88_directhit_medium.ogg differ diff --git a/sound/weapons/handling/gun_vulture_bolt_close.ogg b/sound/weapons/handling/gun_vulture_bolt_close.ogg new file mode 100644 index 000000000000..1417782295d5 Binary files /dev/null and b/sound/weapons/handling/gun_vulture_bolt_close.ogg differ diff --git a/sound/weapons/handling/gun_vulture_bolt_eject.ogg b/sound/weapons/handling/gun_vulture_bolt_eject.ogg new file mode 100644 index 000000000000..a0a1dc7d0904 Binary files /dev/null and b/sound/weapons/handling/gun_vulture_bolt_eject.ogg differ diff --git a/strings/marinetips.txt b/strings/marinetips.txt index 620dc8710400..d461c764fb34 100644 --- a/strings/marinetips.txt +++ b/strings/marinetips.txt @@ -28,7 +28,7 @@ Examine your gun and click [See combat statistics] to view information such as d Xenomorphs who resist while on fire are stunned for some time and emit light. Use that time to catch up and finish them off! When you have shrapnel embedded, take out your boot knife and use it in your hand to rip them out of your body. If your weapon has a bayonet, you can manually pry open unpowered doors by clicking on them with the gun. Click on the door again to close it. UPP bayonets can pry them open quicker. -Items on the floor can be shot. Shoot a misthrown HEDP away to save your buddies! +Items on the floor can be shot. Shoot a poorly thrown HEDP away to save your buddies! You can hold a bayonet or throwing knife on your mask slot. Always be prepared. Xenomorphs can't apply huggers to marines if they're on fire. Dragging a Nanomed onto yourself instantly gives a Health Analyzer report. Always know what's wrong with you. @@ -46,42 +46,58 @@ By right clicking your medical belt and selecting "toggle belt mode", you can ta You can put screwdrivers, cigarettes, and some other things in your second ear slot! Pilots : there is one of each engine upgrade in the hangar at the start of the round, saving you the point cost of having to print out a pair of each. You can use a hand labeler (as found in squad prep rooms) to name your equipment and make it less likely to be stolen. -You can use a health analyser in hand (Z key) to check the last scan readout from it. +You can use a health analyzer in hand (Z key) to check the last scan readout from it. Holocards are a useful triage tool for doctors and medics. Ensure you assign them (examine the marine with shift-click and select an appropriate holocard) to marines who have taken damage that cannot be healed without surgery. (Hint : major organ damage or larval infection = red card!) Escape pods are designed for only three occupants - more than that, or if a larger xenomorph is in the pod, and it will malfunction and blow up on launch. A misloaded OB can deviate severely from the intended target area - ensure you load them correctly! -The XO and CO are trained in powerloader use and engineering, and can load the OB. +The XO and CO are trained in Power Loader use and engineering, and can load the OB. You can change what your SL tracker beacon is tracking by right clicking on your headset and clicking "Switch Tracker Target". Boilers emit light - not every glow from around the corner is friendly! +The amount of items in Requisitions and Squad Preparations depend on how many players readied up at the start of the round. You can carry a variety of items inside your helmet - from gauze and cigarettes to flares and screwdrivers. CIC staff can track every USCM-aligned person via the suit sensors console and overwatch console - useful for finding escaped prisoners or dead marines. When the M7 RPG is fired, it creates a substantial shockwave behind it that can stun and harm marines standing too close. Watch your backblast! Remember that you need to put a defibrillator's paddles away in order to store it. -W-Y PMCs do not have marine IFF. Don't fire smartguns through them! -To talk on multiple radio channels at once, put a COMMA [,] before your message and add up to four prefixes. E.g, ,abcd talks on all squad channels at once. +W-Y PMCs do not have marine IFF. Don't fire Smartguns at them! +To talk on multiple radio channels at once, put a COMMA [,] before your message and add up to four prefixes. E.g, ,abcd talks on the main four squad channels at once. Put .w or :w before your message to whisper. Another way to whisper is to use the verb "whisper" in the IC tab or command bar. For Vehicle Crewmen : it is often safer to repair the parts of your APC or tank inside the vehicle than outside it. It is almost always faster to do surgery manually than in the autodoc. To check your skills, go to the IC tab and click "view skills". +Minirockets pack the most punch per cost as far as CAS weaponry is concerned. The U7 underbarrel shotgun can instantly break down both resin doors and mechanical airlocks, and it's not bad at breaking walls down either. You can find breaching charges in Requisitions or the Squad Engineer vendor. They function like C4, but can be deployed and explode much quicker, and release powerful shrapnel on the opposite side. They require minor engineering knowledge, which can be obtained from pamphlets. Armor piercing ammunition does less damage to unarmored targets. +Requisitions may not grant you service if you are a 'pajamarine' : a marine in cryosleep attire. Be sure to dress up! You can insert empty pill bottles into ChemMasters before creating pills to have them automatically inserted. Nurses can practice a full range of surgeries on Professor DUMMY. Ask the gods to give you one if you see (or are) a nurse practicing. Drinks from the hot drinks machine warm you up. Be careful! Barricades block grenades, and indeed all thrown items, from the front if they're barbed up. +CAS Fire Missions doubles the accuracy of fired weapons, which can be substantial. Painkillers do not stack. Only the strongest has any effect. -Intel Officers can be put in a squad by going to CIC and requesting it. +Don't underestimate the mortar: with ammo and proper communication it can hit surprisingly hard. +You can shoot through tents, but they won't protect you much in return. +Reqs doesn't have an infinite budget. +Good Reqs can land supplies anywhere outside - given coords - and sometimes in a minimal amount of time. +A ‘point blank’ or ‘PB’ is a type of attack with a firearm where you click directly on a mob next to you. These attacks are not effected by accuracy allowing you to quickly fire with weapons like a shotgun to great effect. +Intel Officers can be put in a different squad by going to CIC and requesting it. Any marine can perform CPR. On dead marines, this will increase the time they have until they become unrevivable. If you've been pounced on and your squad is unloading into the target, you can hit the 'rest' button to stay down so you don't get filled with lead after getting up. You can check the landing zone as a marine in the status panel. -Functioning night vision goggles can be recharged with batteries. Broken night vision goggles can be repaired by an Engineer with a screwdriver. Not the loadout ones though, those are unfixable and unchargeable. -You can put a pistol belt on your suit slot. (Just grab a rifle instead..) +The Colonial Marshals may come to crack down on too heavy of a Black Market usage. +A night vision HUD optic can be recharged by removing it with a screwdriver, then placing it into a recharger. +You can put a pistol belt on your suit slot. (Just grab a rifle instead.) Alt-clicking the Squad Leader tracker lets you track your fireteam leader instead. -Armor has a randomized reduction in effectiveness, and does not protect the digits. Take the wiki damage values as a best case scenario. +Armor consistently protects you from damage to your chest, arms, and legs, but does not protect hands and feet. Take the wiki damage values as a best-case scenario. You can click on your Security Access Tuner (multitool) in your hand to locate the area's APC if there is one. +Need help learning the game and these tips aren't enough? Use MentorHelp or try to get ahold of your ship's Senior Enlisted Advisor. Clicking on your sprite with help intent will let you check your body, seeing where your fractures and other wounds are. Armor has insulative properties - taking it off will help you cool off and take less damage faster if you've been set on fire. -Both foldable cades & plasteel cades if loosened and folded down can be transported in crates! In this way, you can use the crate as a portable breach-repair kit, or dragged (or carried via Powerloader) to an unsecure area for quick defensive set up. +Both foldable cades & plasteel cades if loosened and folded down can be transported in crates! In this way, you can use the crate as a portable breach-repair kit, or dragged (or carried via Power Loader) to an unsecure area for quick defensive set up. The fuel tank pouch doesn't just carry fuel for an incinerator- they can also carry full-size extinguishers. Toolbelts & tool pouches also may hold miniature extinguishers. -The M2C heavy machinegunner belt rig can also carry C4, breaching charges, and most tools. +The M2C heavy machine gunner belt rig can also carry C4, breaching charges, and most tools. +You can always multitask as Medic, such as by using pills or healing kits at the same time as defibrillator. +The nuclear ordnance requires BOTH communication towers to be actively held to decrypt the nuclear codes. +ARES will periodically report the amount of available tech points on Command Channel. +The quick wield keys generally prioritize wieldable gear going from left to right on your inventory bar. +Orbital Bombardment warheads respect roofing and hive core protection. They won't hit inside of protected areas. diff --git a/strings/memetips.txt b/strings/memetips.txt index e05ac2f66bdb..abfe0872180c 100644 --- a/strings/memetips.txt +++ b/strings/memetips.txt @@ -12,17 +12,39 @@ Contrary to popular belief, turning off IFF as a Smartgunner does not actually i When playing as a Xenomorph, remember to aim for the groin to inflict additional psychological damage to marines. Never tell an officer that you're smarter than them - especially if it's true. There is no USS Sulaco. -There is no such thing as an Intel Officer. +There is no such thing as a Radio-Telephone Operator. There is no such thing as a techweb. +There is no such thing as a tip. +There is no such thing as a Fatty. +Dropship update is dropping tomorrow. +Don't forget your ceramic plates. Echo Squad does not exist. +Reqs should always spend all its resources on the Black Market. Foxtrot Squad DEFINITELY does not exist. +Intel Squad is a unicorn. Spec rolls are not actually random. +Watch out for Queen's charge ability. Never, ever attempt to correct a Provost about anything. If you die, make sure to ahelp so staff can restart the round! +You can obtain spec tokens by climbing outside the map and into space. There is no alcohol on Whiskey Outpost, other than in the Ground Commander's locker. Hitting enemies with weapons damages them. +Don't swap East and West. AGAIN. +Don't swap Minus and Positive coordinates... AGAIN. +OB'ing the FOB is always an option. +OB'ing the FOB is the best way to get some recognition from the aCO. +The sky erupts into flames right above you! This tip is a lie. +Stay hydrated. +Have a good day. +There is no tip. +These tips suck. Please write more. +This tip is not ready, please wait until next round. +Someone stole this tip, ask staff for a new one. If it's stupid but it works, it isn't stupid. If it's stupid but it works, it's still stupid and you got lucky. Corroders aren't real. They can't hurt you. ARES is not sentient. It has no feelings and its only thoughts are pre-programmed subroutines. +Remember that as Yautja HPCs are your primary weapons. +You can always bully staff into giving you more awesome tips. +Embrace the suck. diff --git a/strings/metatips.txt b/strings/metatips.txt index 4b69af764aeb..a28c90239593 100644 --- a/strings/metatips.txt +++ b/strings/metatips.txt @@ -1,13 +1,22 @@ -Remember hotkeys and marcos can be customized to your liking. Hotkeys can be accessed in your preferences, and macros can be edited in the Byond macro editor, available in the top left drop down menu (click the Byond logo in the corner of the game window). -If you're unsure about a gameplay mechanic, use the 'mentorhelp' verb in the Admins tab to ask veteran players on the subject. +Remember hotkeys and macros can be customized to your liking. Hotkeys can be accessed in your preferences, and macros can be edited in the Byond macro editor, available in the top left drop down menu (click the Byond logo in the corner of the game window). +If you're unsure about a gameplay mechanic, use the 'mentorhelp' verb in the Admin tab to ask veteran players on the subject. It is also available from the pause menu, pressing ESCAPE. Try not to get too mad about dying. We’re all here to have fun. +You can get information on current TestMerges by pressing 'Show Server Revision' in 'OOC' tab. After dying, ask yourself what you did wrong and make a mental note to not make the same mistake again. Communication, be it from a marine to a marine, a drone to the queen, or command to everyone, is vital and information on flanks can change how the entire round plays out. As an alien or marine, be careful of the flank, regardless of if the push is going well or stalling out. Half of getting good is knowing to be aggressive. The other half is knowing when not to be aggressive. -Alt-click a storage item to draw the last item in it (last non-weapon if it's a weapon belt). Middle-click a storage item to inmediately open it, and middle-click structures to attempt to vault them. +Alt-click a storage item to draw the last item in it (last non-weapon if it's a weapon belt). Middle-click a storage item to immediately open it, and middle-click structures to attempt to vault them. Use "North, South, West, East" when referring to locations in-game rather than "up, down, left, right". +As a mentor, you can become the imaginary friend of a new player to teach them! You shouldn't ignore what your allies are up to. Sometimes they can be organizing a flank in hivemind/radio, sometimes they can be walking up behind you with a slug-loaded shotgun. Either way, it pays to be alert to what they're doing, as much to as what the enemies are. -The Wiki (https://cm-ss13.com/wiki) is a very useful repository of information about the game, such as weapons, equipment, xenomorph castes and their strains. It may not be fully up to date the majority of the time, but the basics are usually accurate. +The Wiki (https://cm-ss13.com/wiki) is a very useful repository of information about the game, such as weapons, equipment, xenomorph castes and their strains. It may not be fully up to date much of the time, but the basics are usually accurate. As an observer, you may see how much remaining hijack time is left in the status panel. -Embrace the suck. +You can always AdminHelp with the F1 key to question a member of staff regarding rules or game bugs. +As ghost you are given extra tools for spectating the round: you can jump and follow specific players, get notifications about CAS and OB strikes, can see all health bars, and such. +You can press ESC key to bring up the game pause menu. It allows you change settings, AdminHelp and MentorHelp, and even access the Web Maps of game by clicking at top right. +Dead? You can take that moment to 'Edit Characters' from Preferences or Escape menus, to flesh out your characters or change your settings. +Control of intelligence is important: be it for retrieving it as marine, or denying it as Xeno. +If the lobby music is too loud or bothering you, you can disable it in Preferences tab at top right. +Maps can and will be unpredictably modified by the Nightmare system - stay frosty while roaming around! +You can go to GitHub to view code of the game and propose modifications of your own. diff --git a/strings/xenotips.txt b/strings/xenotips.txt index 4e98be577a61..08f56bf1aa8e 100644 --- a/strings/xenotips.txt +++ b/strings/xenotips.txt @@ -1,6 +1,6 @@ Acid pillars can be sneakily placed next to a door in order to surprise marines. -Alien structures like clusters, walls, or pillars are absolutely vital to your victory, be it as cover or to delay and funnel marines. -Always thank your drones and hivelords for supporting the hive! +Alien structures like clusters, walls, or pillars are vital to your victory, be it as cover or to delay and funnel marines. +Always thank your drones and Hivelords for supporting the hive! Don't underestimate survivors. They have no armor but that makes them very fast, they're inherently hardier than marines and have various tricks up their sleeves. While the Queen is de-ovied, the hive does not gain evolution points. Try out new castes or strains that you might have passed up initially. You might find them to be surprisingly fun. @@ -16,21 +16,24 @@ If a fellow alien is stunned, be sure to drag them to safety. On help intent, click a xenomorph who is on fire to pat them out. This works on marines too! Frenzy increases your speed and damage, Recovery increases your health regeneration, and Warding increases the time you have until you bleed out in critical health. Remember that, as a Xenomorph, you can fully disable your night-vision. This helps put into perspective how hidden your position is to marines onscreen. -You can devour bursted corpses in order to transport them to the Spawn Pool or Egg Morpher easier. +You can devour burst corpses in order to transport them to the Spawn Pool or Egg Morpher easier. The bigger you are, the more time it'll take to enter a tunnel. -Drag yourself onto a hole in a wall as a medium-sized or smaller xeno to pass through it. +Drag yourself onto a hole in a wall as a medium-sized or smaller Xeno to pass through it. Claymores have directional explosions. Set them off early by slashing them from behind. If you have difficulty clicking marines, try using Directional Slashing, though there's no directional slashing for abilities. You can diagonally pounce through the corners of fire as a Lurker or Runner without getting ignited. -When playing as xeno, consider aiming at the limbs instead of the chest. Marine armour doesn't protect the arms and legs as well as it does the body. -As xeno, you can break Night-Vision goggles that some marines wear on their helmets. Just aim for the head and slash until the goggles shatter. -Pounces are ineffective on marines who are laying down. -You may rest inmediately during a pounce to pounce straight through mobs. It's not very practical or useful though. -Pouncing someone who is buckled to a chair will still stun them, but you won't jump into their tile and they will not be knocked to the grund. -Starshell dust from said grenades is just as meltable as normal flares. -You can join the hive as a living facehugger by clicking on the hive's eggmorpher. This works on other hives too.. -Playable facehuggers can leap onto targets with a one-second windup, but this will only infect them if they are adjacent to it. Otherwise, it will simply knock them down for a small duration. -As a facehugger, you cannot talk in hivemind, but you can still open Hive Status and overwatch your sisters. This can be useful if you're locating other facehuggers, flanker castes, or trying to learn from experienced facehugger players. +When playing as Xeno, consider aiming at the limbs instead of the chest. Marine armor doesn't protect the arms and legs as well as it does the body. +You can dodge pounces that aren't aimed directly at you by laying down. +You may rest immediately during a pounce to pounce straight through mobs. It's not very practical or useful though. +Pouncing someone who is buckled to a chair will still stun them, but you won't jump into their tile and they will not be knocked to the ground. +Star shell dust from said grenades is just as meltable as normal flares. +You can join the hive as a living Facehugger by clicking on the hive's Eggmorpher. This works on other hives too.. +Playable Facehuggers can leap onto targets with a one-second windup, but this will only infect them if they are adjacent to it. Otherwise, it will simply knock them down for a small duration. +As a Facehugger, you cannot talk in hivemind, but you can still open Hive Status and overwatch your sisters. This can be useful if you're locating other Facehuggers, flanker castes, or trying to learn from experienced Facehugger players. Shift-clicking the Queen indicator will tell you what area you are in, on the map. -Resisting on a water tile will inmediately put out fires. Make sure you're alone though - It's usually better to let a friendly Xenomorph pat you out than it is to expose yourself to open water. +As a Ravager your abilities become greatly enhanced when you empower with three or more people around you. +Resisting on a water tile will immediately put out fires. Make sure you're alone though - It's usually better to let a friendly Xenomorph pat you out than it is to expose yourself to open water. You can filter out the Xenomorphs displayed in hive status by health, allowing you to look only for wounded sisters. +Each xeno has their own ‘tackle counter’ on a marine. The range to successfully tackle can be anywhere from two to six tackles based on caste. If a marine gets stunned or knocked over by other means it will reset everyone's tackle counters and they may get up! +As a Xenomorph, the list of available tunnels is sorted by their distance to the player! +As a Xenomorph, pay attention to what a marine is wearing. If they have no helmet, aiming for the head will be significantly more damaging, if they aren't wearing gloves, then think about going for their hands. diff --git a/tgui/.eslintignore b/tgui/.eslintignore index a59187b933ae..7965d0731a6e 100644 --- a/tgui/.eslintignore +++ b/tgui/.eslintignore @@ -3,4 +3,3 @@ /**/*.bundle.* /**/*.chunk.* /**/*.hot-update.* -/packages/inferno/** diff --git a/tgui/.yarn/releases/yarn-3.1.1.cjs b/tgui/.yarn/releases/yarn-3.1.1.cjs deleted file mode 100644 index f5f2adca83b2..000000000000 --- a/tgui/.yarn/releases/yarn-3.1.1.cjs +++ /dev/null @@ -1,768 +0,0 @@ -#!/usr/bin/env node -/* eslint-disable */ -//prettier-ignore -(()=>{var Mfe=Object.create,Vf=Object.defineProperty,Ofe=Object.defineProperties,Kfe=Object.getOwnPropertyDescriptor,Ufe=Object.getOwnPropertyDescriptors,Hfe=Object.getOwnPropertyNames,hE=Object.getOwnPropertySymbols,Gfe=Object.getPrototypeOf,eb=Object.prototype.hasOwnProperty,lO=Object.prototype.propertyIsEnumerable;var cO=(t,e,r)=>e in t?Vf(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,P=(t,e)=>{for(var r in e||(e={}))eb.call(e,r)&&cO(t,r,e[r]);if(hE)for(var r of hE(e))lO.call(e,r)&&cO(t,r,e[r]);return t},_=(t,e)=>Ofe(t,Ufe(e)),jfe=t=>Vf(t,"__esModule",{value:!0});var qr=(t,e)=>{var r={};for(var i in t)eb.call(t,i)&&e.indexOf(i)<0&&(r[i]=t[i]);if(t!=null&&hE)for(var i of hE(t))e.indexOf(i)<0&&lO.call(t,i)&&(r[i]=t[i]);return r},Yfe=(t,e)=>()=>(t&&(e=t(t=0)),e),E=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),it=(t,e)=>{for(var r in e)Vf(t,r,{get:e[r],enumerable:!0})},qfe=(t,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Hfe(e))!eb.call(t,i)&&i!=="default"&&Vf(t,i,{get:()=>e[i],enumerable:!(r=Kfe(e,i))||r.enumerable});return t},ie=t=>qfe(jfe(Vf(t!=null?Mfe(Gfe(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var MO=E((i$e,FO)=>{FO.exports=NO;NO.sync=Ahe;var LO=require("fs");function lhe(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i{OO.exports=KO;KO.sync=che;var UO=require("fs");function KO(t,e,r){UO.stat(t,function(i,n){r(i,i?!1:HO(n,e))})}function che(t,e){return HO(UO.statSync(t),e)}function HO(t,e){return t.isFile()&&uhe(t,e)}function uhe(t,e){var r=t.mode,i=t.uid,n=t.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=r&c||r&l&&n===o||r&a&&i===s||r&u&&s===0;return g}});var YO=E((o$e,jO)=>{var s$e=require("fs"),xE;process.platform==="win32"||global.TESTING_WINDOWS?xE=MO():xE=GO();jO.exports=db;db.sync=ghe;function db(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){db(t,e||{},function(s,o){s?n(s):i(o)})})}xE(t,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function ghe(t,e){try{return xE.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var XO=E((a$e,qO)=>{var eu=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",JO=require("path"),fhe=eu?";":":",WO=YO(),zO=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),VO=(t,e)=>{let r=e.colon||fhe,i=t.match(/\//)||eu&&t.match(/\\/)?[""]:[...eu?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],n=eu?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=eu?n.split(r):[""];return eu&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},_O=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=VO(t,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(zO(t));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=JO.join(h,t),d=!h&&/^\.[\\\/]/.test(t)?t.slice(0,2)+p:p;u(l(d,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];WO(c+p,{pathExt:s},(d,m)=>{if(!d&&m)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return r?a(0).then(c=>r(null,c),r):a(0)},hhe=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=VO(t,e),s=[];for(let o=0;o{"use strict";var ZO=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};Cb.exports=ZO;Cb.exports.default=ZO});var iK=E((l$e,eK)=>{"use strict";var tK=require("path"),phe=XO(),dhe=$O();function rK(t,e){let r=t.options.env||process.env,i=process.cwd(),n=t.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(t.options.cwd)}catch(a){}let o;try{o=phe.sync(t.command,{path:r[dhe({env:r})],pathExt:e?tK.delimiter:void 0})}catch(a){}finally{s&&process.chdir(i)}return o&&(o=tK.resolve(n?t.options.cwd:"",o)),o}function Che(t){return rK(t)||rK(t,!0)}eK.exports=Che});var nK=E((c$e,mb)=>{"use strict";var Eb=/([()\][%!^"`<>&|;, *?])/g;function mhe(t){return t=t.replace(Eb,"^$1"),t}function Ehe(t,e){return t=`${t}`,t=t.replace(/(\\*)"/g,'$1$1\\"'),t=t.replace(/(\\*)$/,"$1$1"),t=`"${t}"`,t=t.replace(Eb,"^$1"),e&&(t=t.replace(Eb,"^$1")),t}mb.exports.command=mhe;mb.exports.argument=Ehe});var oK=E((u$e,sK)=>{"use strict";sK.exports=/^#!(.*)/});var AK=E((g$e,aK)=>{"use strict";var Ihe=oK();aK.exports=(t="")=>{let e=t.match(Ihe);if(!e)return null;let[r,i]=e[0].replace(/#! ?/,"").split(" "),n=r.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var cK=E((f$e,lK)=>{"use strict";var Ib=require("fs"),yhe=AK();function whe(t){let e=150,r=Buffer.alloc(e),i;try{i=Ib.openSync(t,"r"),Ib.readSync(i,r,0,e,0),Ib.closeSync(i)}catch(n){}return yhe(r.toString())}lK.exports=whe});var hK=E((h$e,uK)=>{"use strict";var Bhe=require("path"),gK=iK(),fK=nK(),Qhe=cK(),bhe=process.platform==="win32",vhe=/\.(?:com|exe)$/i,She=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function xhe(t){t.file=gK(t);let e=t.file&&Qhe(t.file);return e?(t.args.unshift(t.file),t.command=e,gK(t)):t.file}function khe(t){if(!bhe)return t;let e=xhe(t),r=!vhe.test(e);if(t.options.forceShell||r){let i=She.test(e);t.command=Bhe.normalize(t.command),t.command=fK.command(t.command),t.args=t.args.map(s=>fK.argument(s,i));let n=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${n}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function Phe(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let i={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?i:khe(i)}uK.exports=Phe});var CK=E((p$e,pK)=>{"use strict";var yb=process.platform==="win32";function wb(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function Dhe(t,e){if(!yb)return;let r=t.emit;t.emit=function(i,n){if(i==="exit"){let s=dK(n,e,"spawn");if(s)return r.call(t,"error",s)}return r.apply(t,arguments)}}function dK(t,e){return yb&&t===1&&!e.file?wb(e.original,"spawn"):null}function Rhe(t,e){return yb&&t===1&&!e.file?wb(e.original,"spawnSync"):null}pK.exports={hookChildProcess:Dhe,verifyENOENT:dK,verifyENOENTSync:Rhe,notFoundError:wb}});var bb=E((d$e,tu)=>{"use strict";var mK=require("child_process"),Bb=hK(),Qb=CK();function EK(t,e,r){let i=Bb(t,e,r),n=mK.spawn(i.command,i.args,i.options);return Qb.hookChildProcess(n,i),n}function Fhe(t,e,r){let i=Bb(t,e,r),n=mK.spawnSync(i.command,i.args,i.options);return n.error=n.error||Qb.verifyENOENTSync(n.status,i),n}tu.exports=EK;tu.exports.spawn=EK;tu.exports.sync=Fhe;tu.exports._parse=Bb;tu.exports._enoent=Qb});var yK=E((y$e,IK)=>{"use strict";IK.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var Nb=E((w$e,wK)=>{var gh=yK(),BK={};for(let t of Object.keys(gh))BK[gh[t]]=t;var Xe={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};wK.exports=Xe;for(let t of Object.keys(Xe)){if(!("channels"in Xe[t]))throw new Error("missing channels property: "+t);if(!("labels"in Xe[t]))throw new Error("missing channel labels property: "+t);if(Xe[t].labels.length!==Xe[t].channels)throw new Error("channel and label counts mismatch: "+t);let{channels:e,labels:r}=Xe[t];delete Xe[t].channels,delete Xe[t].labels,Object.defineProperty(Xe[t],"channels",{value:e}),Object.defineProperty(Xe[t],"labels",{value:r})}Xe.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(e,r,i),s=Math.max(e,r,i),o=s-n,a,l;s===n?a=0:e===s?a=(r-i)/o:r===s?a=2+(i-e)/o:i===s&&(a=4+(e-r)/o),a=Math.min(a*60,360),a<0&&(a+=360);let c=(n+s)/2;return s===n?l=0:c<=.5?l=o/(s+n):l=o/(2-s-n),[a,l*100,c*100]};Xe.rgb.hsv=function(t){let e,r,i,n,s,o=t[0]/255,a=t[1]/255,l=t[2]/255,c=Math.max(o,a,l),u=c-Math.min(o,a,l),g=function(f){return(c-f)/6/u+1/2};return u===0?(n=0,s=0):(s=u/c,e=g(o),r=g(a),i=g(l),o===c?n=i-r:a===c?n=1/3+e-i:l===c&&(n=2/3+r-e),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,c*100]};Xe.rgb.hwb=function(t){let e=t[0],r=t[1],i=t[2],n=Xe.rgb.hsl(t)[0],s=1/255*Math.min(e,Math.min(r,i));return i=1-1/255*Math.max(e,Math.max(r,i)),[n,s*100,i*100]};Xe.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(1-e,1-r,1-i),s=(1-e-n)/(1-n)||0,o=(1-r-n)/(1-n)||0,a=(1-i-n)/(1-n)||0;return[s*100,o*100,a*100,n*100]};function The(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}Xe.rgb.keyword=function(t){let e=BK[t];if(e)return e;let r=Infinity,i;for(let n of Object.keys(gh)){let s=gh[n],o=The(t,s);o.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92;let n=e*.4124+r*.3576+i*.1805,s=e*.2126+r*.7152+i*.0722,o=e*.0193+r*.1192+i*.9505;return[n*100,s*100,o*100]};Xe.rgb.lab=function(t){let e=Xe.rgb.xyz(t),r=e[0],i=e[1],n=e[2];r/=95.047,i/=100,n/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;let s=116*i-16,o=500*(r-i),a=200*(i-n);return[s,o,a]};Xe.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100,n,s,o;if(r===0)return o=i*255,[o,o,o];i<.5?n=i*(1+r):n=i+r-i*r;let a=2*i-n,l=[0,0,0];for(let c=0;c<3;c++)s=e+1/3*-(c-1),s<0&&s++,s>1&&s--,6*s<1?o=a+(n-a)*6*s:2*s<1?o=n:3*s<2?o=a+(n-a)*(2/3-s)*6:o=a,l[c]=o*255;return l};Xe.hsl.hsv=function(t){let e=t[0],r=t[1]/100,i=t[2]/100,n=r,s=Math.max(i,.01);i*=2,r*=i<=1?i:2-i,n*=s<=1?s:2-s;let o=(i+r)/2,a=i===0?2*n/(s+n):2*r/(i+r);return[e,a*100,o*100]};Xe.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,i=t[2]/100,n=Math.floor(e)%6,s=e-Math.floor(e),o=255*i*(1-r),a=255*i*(1-r*s),l=255*i*(1-r*(1-s));switch(i*=255,n){case 0:return[i,l,o];case 1:return[a,i,o];case 2:return[o,i,l];case 3:return[o,a,i];case 4:return[l,o,i];case 5:return[i,o,a]}};Xe.hsv.hsl=function(t){let e=t[0],r=t[1]/100,i=t[2]/100,n=Math.max(i,.01),s,o;o=(2-r)*i;let a=(2-r)*n;return s=r*n,s/=a<=1?a:2-a,s=s||0,o/=2,[e,s*100,o*100]};Xe.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100,n=r+i,s;n>1&&(r/=n,i/=n);let o=Math.floor(6*e),a=1-i;s=6*e-o,(o&1)!=0&&(s=1-s);let l=r+s*(a-r),c,u,g;switch(o){default:case 6:case 0:c=a,u=l,g=r;break;case 1:c=l,u=a,g=r;break;case 2:c=r,u=a,g=l;break;case 3:c=r,u=l,g=a;break;case 4:c=l,u=r,g=a;break;case 5:c=a,u=r,g=l;break}return[c*255,u*255,g*255]};Xe.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,i=t[2]/100,n=t[3]/100,s=1-Math.min(1,e*(1-n)+n),o=1-Math.min(1,r*(1-n)+n),a=1-Math.min(1,i*(1-n)+n);return[s*255,o*255,a*255]};Xe.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,i=t[2]/100,n,s,o;return n=e*3.2406+r*-1.5372+i*-.4986,s=e*-.9689+r*1.8758+i*.0415,o=e*.0557+r*-.204+i*1.057,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[n*255,s*255,o*255]};Xe.xyz.lab=function(t){let e=t[0],r=t[1],i=t[2];e/=95.047,r/=100,i/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;let n=116*r-16,s=500*(e-r),o=200*(r-i);return[n,s,o]};Xe.lab.xyz=function(t){let e=t[0],r=t[1],i=t[2],n,s,o;s=(e+16)/116,n=r/500+s,o=s-i/200;let a=s**3,l=n**3,c=o**3;return s=a>.008856?a:(s-16/116)/7.787,n=l>.008856?l:(n-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,n*=95.047,s*=100,o*=108.883,[n,s,o]};Xe.lab.lch=function(t){let e=t[0],r=t[1],i=t[2],n;n=Math.atan2(i,r)*360/2/Math.PI,n<0&&(n+=360);let o=Math.sqrt(r*r+i*i);return[e,o,n]};Xe.lch.lab=function(t){let e=t[0],r=t[1],n=t[2]/360*2*Math.PI,s=r*Math.cos(n),o=r*Math.sin(n);return[e,s,o]};Xe.rgb.ansi16=function(t,e=null){let[r,i,n]=t,s=e===null?Xe.rgb.hsv(t)[2]:e;if(s=Math.round(s/50),s===0)return 30;let o=30+(Math.round(n/255)<<2|Math.round(i/255)<<1|Math.round(r/255));return s===2&&(o+=60),o};Xe.hsv.ansi16=function(t){return Xe.rgb.ansi16(Xe.hsv.rgb(t),t[2])};Xe.rgb.ansi256=function(t){let e=t[0],r=t[1],i=t[2];return e===r&&r===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5)};Xe.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,i=(e&1)*r*255,n=(e>>1&1)*r*255,s=(e>>2&1)*r*255;return[i,n,s]};Xe.ansi256.rgb=function(t){if(t>=232){let s=(t-232)*10+8;return[s,s,s]}t-=16;let e,r=Math.floor(t/36)/5*255,i=Math.floor((e=t%36)/6)/5*255,n=e%6/5*255;return[r,i,n]};Xe.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};Xe.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split("").map(a=>a+a).join(""));let i=parseInt(r,16),n=i>>16&255,s=i>>8&255,o=i&255;return[n,s,o]};Xe.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.max(Math.max(e,r),i),s=Math.min(Math.min(e,r),i),o=n-s,a,l;return o<1?a=s/(1-o):a=0,o<=0?l=0:n===e?l=(r-i)/o%6:n===r?l=2+(i-e)/o:l=4+(e-r)/o,l/=6,l%=1,[l*360,o*100,a*100]};Xe.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=r<.5?2*e*r:2*e*(1-r),n=0;return i<1&&(n=(r-.5*i)/(1-i)),[t[0],i*100,n*100]};Xe.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=e*r,n=0;return i<1&&(n=(r-i)/(1-i)),[t[0],i*100,n*100]};Xe.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100;if(r===0)return[i*255,i*255,i*255];let n=[0,0,0],s=e%1*6,o=s%1,a=1-o,l=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=a,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=o;break;case 3:n[0]=0,n[1]=a,n[2]=1;break;case 4:n[0]=o,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=a}return l=(1-r)*i,[(r*n[0]+l)*255,(r*n[1]+l)*255,(r*n[2]+l)*255]};Xe.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,i=e+r*(1-e),n=0;return i>0&&(n=e/i),[t[0],n*100,i*100]};Xe.hcg.hsl=function(t){let e=t[1]/100,i=t[2]/100*(1-e)+.5*e,n=0;return i>0&&i<.5?n=e/(2*i):i>=.5&&i<1&&(n=e/(2*(1-i))),[t[0],n*100,i*100]};Xe.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,i=e+r*(1-e);return[t[0],(i-e)*100,(1-i)*100]};Xe.hwb.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=1-r,n=i-e,s=0;return n<1&&(s=(i-n)/(1-n)),[t[0],n*100,s*100]};Xe.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};Xe.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};Xe.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};Xe.gray.hsl=function(t){return[0,0,t[0]]};Xe.gray.hsv=Xe.gray.hsl;Xe.gray.hwb=function(t){return[0,100,t[0]]};Xe.gray.cmyk=function(t){return[0,0,0,t[0]]};Xe.gray.lab=function(t){return[t[0],0,0]};Xe.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,i=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(i.length)+i};Xe.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var bK=E((B$e,QK)=>{var kE=Nb();function Mhe(){let t={},e=Object.keys(kE);for(let r=e.length,i=0;i{var Lb=Nb(),Hhe=bK(),ru={},Ghe=Object.keys(Lb);function jhe(t){let e=function(...r){let i=r[0];return i==null?i:(i.length>1&&(r=i),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function Yhe(t){let e=function(...r){let i=r[0];if(i==null)return i;i.length>1&&(r=i);let n=t(r);if(typeof n=="object")for(let s=n.length,o=0;o{ru[t]={},Object.defineProperty(ru[t],"channels",{value:Lb[t].channels}),Object.defineProperty(ru[t],"labels",{value:Lb[t].labels});let e=Hhe(t);Object.keys(e).forEach(i=>{let n=e[i];ru[t][i]=Yhe(n),ru[t][i].raw=jhe(n)})});vK.exports=ru});var FK=E((b$e,xK)=>{"use strict";var kK=(t,e)=>(...r)=>`[${t(...r)+e}m`,PK=(t,e)=>(...r)=>{let i=t(...r);return`[${38+e};5;${i}m`},DK=(t,e)=>(...r)=>{let i=t(...r);return`[${38+e};2;${i[0]};${i[1]};${i[2]}m`},PE=t=>t,RK=(t,e,r)=>[t,e,r],iu=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let i=r();return Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0}),i},enumerable:!0,configurable:!0})},Tb,nu=(t,e,r,i)=>{Tb===void 0&&(Tb=SK());let n=i?10:0,s={};for(let[o,a]of Object.entries(Tb)){let l=o==="ansi16"?"ansi":o;o===e?s[l]=t(r,n):typeof a=="object"&&(s[l]=t(a[e],n))}return s};function qhe(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,i]of Object.entries(e)){for(let[n,s]of Object.entries(i))e[n]={open:`[${s[0]}m`,close:`[${s[1]}m`},i[n]=e[n],t.set(s[0],s[1]);Object.defineProperty(e,r,{value:i,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="",e.bgColor.close="",iu(e.color,"ansi",()=>nu(kK,"ansi16",PE,!1)),iu(e.color,"ansi256",()=>nu(PK,"ansi256",PE,!1)),iu(e.color,"ansi16m",()=>nu(DK,"rgb",RK,!1)),iu(e.bgColor,"ansi",()=>nu(kK,"ansi16",PE,!0)),iu(e.bgColor,"ansi256",()=>nu(PK,"ansi256",PE,!0)),iu(e.bgColor,"ansi16m",()=>nu(DK,"rgb",RK,!0)),e}Object.defineProperty(xK,"exports",{enumerable:!0,get:qhe})});var LK=E((v$e,NK)=>{"use strict";NK.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",i=e.indexOf(r+t),n=e.indexOf("--");return i!==-1&&(n===-1||i{"use strict";var Jhe=require("os"),MK=require("tty"),Wn=LK(),{env:Wr}=process,tA;Wn("no-color")||Wn("no-colors")||Wn("color=false")||Wn("color=never")?tA=0:(Wn("color")||Wn("colors")||Wn("color=true")||Wn("color=always"))&&(tA=1);"FORCE_COLOR"in Wr&&(Wr.FORCE_COLOR==="true"?tA=1:Wr.FORCE_COLOR==="false"?tA=0:tA=Wr.FORCE_COLOR.length===0?1:Math.min(parseInt(Wr.FORCE_COLOR,10),3));function Mb(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function Ob(t,e){if(tA===0)return 0;if(Wn("color=16m")||Wn("color=full")||Wn("color=truecolor"))return 3;if(Wn("color=256"))return 2;if(t&&!e&&tA===void 0)return 0;let r=tA||0;if(Wr.TERM==="dumb")return r;if(process.platform==="win32"){let i=Jhe.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in Wr)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(i=>i in Wr)||Wr.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Wr)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Wr.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in Wr)return 1;if(Wr.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Wr){let i=parseInt((Wr.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Wr.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Wr.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Wr.TERM)||"COLORTERM"in Wr?1:r}function Whe(t){let e=Ob(t,t&&t.isTTY);return Mb(e)}TK.exports={supportsColor:Whe,stdout:Mb(Ob(!0,MK.isatty(1))),stderr:Mb(Ob(!0,MK.isatty(2)))}});var UK=E((x$e,KK)=>{"use strict";var zhe=(t,e,r)=>{let i=t.indexOf(e);if(i===-1)return t;let n=e.length,s=0,o="";do o+=t.substr(s,i-s)+e+r,s=i+n,i=t.indexOf(e,s);while(i!==-1);return o+=t.substr(s),o},Vhe=(t,e,r,i)=>{let n=0,s="";do{let o=t[i-1]==="\r";s+=t.substr(n,(o?i-1:i)-n)+e+(o?`\r -`:` -`)+r,n=i+1,i=t.indexOf(` -`,n)}while(i!==-1);return s+=t.substr(n),s};KK.exports={stringReplaceAll:zhe,stringEncaseCRLFWithFirstIndex:Vhe}});var qK=E((k$e,HK)=>{"use strict";var _he=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,GK=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Xhe=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Zhe=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,$he=new Map([["n",` -`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function jK(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):$he.get(t)||t}function epe(t,e){let r=[],i=e.trim().split(/\s*,\s*/g),n;for(let s of i){let o=Number(s);if(!Number.isNaN(o))r.push(o);else if(n=s.match(Xhe))r.push(n[2].replace(Zhe,(a,l,c)=>l?jK(l):c));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${t}')`)}return r}function tpe(t){GK.lastIndex=0;let e=[],r;for(;(r=GK.exec(t))!==null;){let i=r[1];if(r[2]){let n=epe(i,r[2]);e.push([i].concat(n))}else e.push([i])}return e}function YK(t,e){let r={};for(let n of e)for(let s of n.styles)r[s[0]]=n.inverse?null:s.slice(1);let i=t;for(let[n,s]of Object.entries(r))if(!!Array.isArray(s)){if(!(n in i))throw new Error(`Unknown Chalk style: ${n}`);i=s.length>0?i[n](...s):i[n]}return i}HK.exports=(t,e)=>{let r=[],i=[],n=[];if(e.replace(_he,(s,o,a,l,c,u)=>{if(o)n.push(jK(o));else if(l){let g=n.join("");n=[],i.push(r.length===0?g:YK(t,r)(g)),r.push({inverse:a,styles:tpe(l)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(YK(t,r)(n.join(""))),n=[],r.pop()}else n.push(u)}),i.push(n.join("")),r.length>0){let s=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return i.join("")}});var jb=E((P$e,JK)=>{"use strict";var fh=FK(),{stdout:Kb,stderr:Ub}=OK(),{stringReplaceAll:rpe,stringEncaseCRLFWithFirstIndex:ipe}=UK(),WK=["ansi","ansi","ansi256","ansi16m"],su=Object.create(null),npe=(t,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let r=Kb?Kb.level:0;t.level=e.level===void 0?r:e.level},zK=class{constructor(e){return VK(e)}},VK=t=>{let e={};return npe(e,t),e.template=(...r)=>spe(e.template,...r),Object.setPrototypeOf(e,DE.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=zK,e.template};function DE(t){return VK(t)}for(let[t,e]of Object.entries(fh))su[t]={get(){let r=RE(this,Hb(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};su.visible={get(){let t=RE(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var _K=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of _K)su[t]={get(){let{level:e}=this;return function(...r){let i=Hb(fh.color[WK[e]][t](...r),fh.color.close,this._styler);return RE(this,i,this._isEmpty)}}};for(let t of _K){let e="bg"+t[0].toUpperCase()+t.slice(1);su[e]={get(){let{level:r}=this;return function(...i){let n=Hb(fh.bgColor[WK[r]][t](...i),fh.bgColor.close,this._styler);return RE(this,n,this._isEmpty)}}}}var ope=Object.defineProperties(()=>{},_(P({},su),{level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}})),Hb=(t,e,r)=>{let i,n;return r===void 0?(i=t,n=e):(i=r.openAll+t,n=e+r.closeAll),{open:t,close:e,openAll:i,closeAll:n,parent:r}},RE=(t,e,r)=>{let i=(...n)=>ape(i,n.length===1?""+n[0]:n.join(" "));return i.__proto__=ope,i._generator=t,i._styler=e,i._isEmpty=r,i},ape=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:i,closeAll:n}=r;if(e.indexOf("")!==-1)for(;r!==void 0;)e=rpe(e,r.close,r.open),r=r.parent;let s=e.indexOf(` -`);return s!==-1&&(e=ipe(e,n,i,s)),i+e+n},Gb,spe=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(" ");let i=e.slice(1),n=[r.raw[0]];for(let s=1;s{XK.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var ml=E(Dn=>{"use strict";var $K=ZK(),ro=process.env;Object.defineProperty(Dn,"_vendors",{value:$K.map(function(t){return t.constant})});Dn.name=null;Dn.isPR=null;$K.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(i){return e1(i)});if(Dn[t.constant]=r,r)switch(Dn.name=t.name,typeof t.pr){case"string":Dn.isPR=!!ro[t.pr];break;case"object":"env"in t.pr?Dn.isPR=t.pr.env in ro&&ro[t.pr.env]!==t.pr.ne:"any"in t.pr?Dn.isPR=t.pr.any.some(function(i){return!!ro[i]}):Dn.isPR=e1(t.pr);break;default:Dn.isPR=null}});Dn.isCI=!!(ro.CI||ro.CONTINUOUS_INTEGRATION||ro.BUILD_NUMBER||ro.RUN_ID||Dn.name);function e1(t){return typeof t=="string"?!!ro[t]:Object.keys(t).every(function(e){return ro[e]===t[e]})}});var FE=E(zn=>{"use strict";zn.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;zn.find=(t,e)=>t.nodes.find(r=>r.type===e);zn.exceedsLimit=(t,e,r=1,i)=>i===!1||!zn.isInteger(t)||!zn.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=i;zn.escapeNode=(t,e=0,r)=>{let i=t.nodes[e];!i||(r&&i.type===r||i.type==="open"||i.type==="close")&&i.escaped!==!0&&(i.value="\\"+i.value,i.escaped=!0)};zn.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0==0?(t.invalid=!0,!0):!1;zn.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0==0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;zn.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;zn.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);zn.flatten=(...t)=>{let e=[],r=i=>{for(let n=0;n{"use strict";var r1=FE();t1.exports=(t,e={})=>{let r=(i,n={})=>{let s=e.escapeInvalid&&r1.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a="";if(i.value)return(s||o)&&r1.isOpenOrClose(i)?"\\"+i.value:i.value;if(i.value)return i.value;if(i.nodes)for(let l of i.nodes)a+=r(l);return a};return r(t)}});var n1=E((L$e,i1)=>{"use strict";i1.exports=function(t){return typeof t=="number"?t-t==0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var f1=E((T$e,s1)=>{"use strict";var o1=n1(),El=(t,e,r)=>{if(o1(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(o1(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let i=P({relaxZeros:!0},r);typeof i.strictZeros=="boolean"&&(i.relaxZeros=i.strictZeros===!1);let n=String(i.relaxZeros),s=String(i.shorthand),o=String(i.capture),a=String(i.wrap),l=t+":"+e+"="+n+s+o+a;if(El.cache.hasOwnProperty(l))return El.cache[l].result;let c=Math.min(t,e),u=Math.max(t,e);if(Math.abs(c-u)===1){let d=t+"|"+e;return i.capture?`(${d})`:i.wrap===!1?d:`(?:${d})`}let g=A1(t)||A1(e),f={min:t,max:e,a:c,b:u},h=[],p=[];if(g&&(f.isPadded=g,f.maxLen=String(f.max).length),c<0){let d=u<0?Math.abs(u):1;p=a1(d,Math.abs(c),f,i),c=f.a=0}return u>=0&&(h=a1(c,u,f,i)),f.negatives=p,f.positives=h,f.result=Ape(p,h,i),i.capture===!0?f.result=`(${f.result})`:i.wrap!==!1&&h.length+p.length>1&&(f.result=`(?:${f.result})`),El.cache[l]=f,f.result};function Ape(t,e,r){let i=Yb(t,e,"-",!1,r)||[],n=Yb(e,t,"",!1,r)||[],s=Yb(t,e,"-?",!0,r)||[];return i.concat(s).concat(n).join("|")}function cpe(t,e){let r=1,i=1,n=l1(t,r),s=new Set([e]);for(;t<=n&&n<=e;)s.add(n),r+=1,n=l1(t,r);for(n=c1(e+1,i)-1;t1&&a.count.pop(),a.count.push(u.count[0]),a.string=a.pattern+u1(a.count),o=c+1;continue}r.isPadded&&(g=hpe(c,r,i)),u.string=g+u.pattern+u1(u.count),s.push(u),o=c+1,a=u}return s}function Yb(t,e,r,i,n){let s=[];for(let o of t){let{string:a}=o;!i&&!g1(e,"string",a)&&s.push(r+a),i&&g1(e,"string",a)&&s.push(r+a)}return s}function upe(t,e){let r=[];for(let i=0;ie?1:e>t?-1:0}function g1(t,e,r){return t.some(i=>i[e]===r)}function l1(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function c1(t,e){return t-t%Math.pow(10,e)}function u1(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function gpe(t,e,r){return`[${t}${e-t==1?"":"-"}${e}]`}function A1(t){return/^-?(0+)\d/.test(t)}function hpe(t,e,r){if(!e.isPadded)return t;let i=Math.abs(e.maxLen-String(t).length),n=r.relaxZeros!==!1;switch(i){case 0:return"";case 1:return n?"0?":"0";case 2:return n?"0{0,2}":"00";default:return n?`0{0,${i}}`:`0{${i}}`}}El.cache={};El.clearCache=()=>El.cache={};s1.exports=El});var Wb=E((M$e,h1)=>{"use strict";var ppe=require("util"),p1=f1(),d1=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),dpe=t=>e=>t===!0?Number(e):String(e),qb=t=>typeof t=="number"||typeof t=="string"&&t!=="",ph=t=>Number.isInteger(+t),Jb=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},Cpe=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,mpe=(t,e,r)=>{if(e>0){let i=t[0]==="-"?"-":"";i&&(t=t.slice(1)),t=i+t.padStart(i?e-1:e,"0")}return r===!1?String(t):t},C1=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length{t.negatives.sort((o,a)=>oa?1:0),t.positives.sort((o,a)=>oa?1:0);let r=e.capture?"":"?:",i="",n="",s;return t.positives.length&&(i=t.positives.join("|")),t.negatives.length&&(n=`-(${r}${t.negatives.join("|")})`),i&&n?s=`${i}|${n}`:s=i||n,e.wrap?`(${r}${s})`:s},m1=(t,e,r,i)=>{if(r)return p1(t,e,P({wrap:!1},i));let n=String.fromCharCode(t);if(t===e)return n;let s=String.fromCharCode(e);return`[${n}-${s}]`},E1=(t,e,r)=>{if(Array.isArray(t)){let i=r.wrap===!0,n=r.capture?"":"?:";return i?`(${n}${t.join("|")})`:t.join("|")}return p1(t,e,r)},I1=(...t)=>new RangeError("Invalid range arguments: "+ppe.inspect(...t)),y1=(t,e,r)=>{if(r.strictRanges===!0)throw I1([t,e]);return[]},Ipe=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},ype=(t,e,r=1,i={})=>{let n=Number(t),s=Number(e);if(!Number.isInteger(n)||!Number.isInteger(s)){if(i.strictRanges===!0)throw I1([t,e]);return[]}n===0&&(n=0),s===0&&(s=0);let o=n>s,a=String(t),l=String(e),c=String(r);r=Math.max(Math.abs(r),1);let u=Jb(a)||Jb(l)||Jb(c),g=u?Math.max(a.length,l.length,c.length):0,f=u===!1&&Cpe(t,e,i)===!1,h=i.transform||dpe(f);if(i.toRegex&&r===1)return m1(C1(t,g),C1(e,g),!0,i);let p={negatives:[],positives:[]},d=B=>p[B<0?"negatives":"positives"].push(Math.abs(B)),m=[],I=0;for(;o?n>=s:n<=s;)i.toRegex===!0&&r>1?d(n):m.push(mpe(h(n,I),g,f)),n=o?n-r:n+r,I++;return i.toRegex===!0?r>1?Epe(p,i):E1(m,null,P({wrap:!1},i)):m},wpe=(t,e,r=1,i={})=>{if(!ph(t)&&t.length>1||!ph(e)&&e.length>1)return y1(t,e,i);let n=i.transform||(f=>String.fromCharCode(f)),s=`${t}`.charCodeAt(0),o=`${e}`.charCodeAt(0),a=s>o,l=Math.min(s,o),c=Math.max(s,o);if(i.toRegex&&r===1)return m1(l,c,!1,i);let u=[],g=0;for(;a?s>=o:s<=o;)u.push(n(s,g)),s=a?s-r:s+r,g++;return i.toRegex===!0?E1(u,null,{wrap:!1,options:i}):u},LE=(t,e,r,i={})=>{if(e==null&&qb(t))return[t];if(!qb(t)||!qb(e))return y1(t,e,i);if(typeof r=="function")return LE(t,e,1,{transform:r});if(d1(r))return LE(t,e,0,r);let n=P({},i);return n.capture===!0&&(n.wrap=!0),r=r||n.step||1,ph(r)?ph(t)&&ph(e)?ype(t,e,r,n):wpe(t,e,Math.max(Math.abs(r),1),n):r!=null&&!d1(r)?Ipe(r,n):LE(t,e,1,r)};h1.exports=LE});var Q1=E((O$e,w1)=>{"use strict";var Bpe=Wb(),B1=FE(),Qpe=(t,e={})=>{let r=(i,n={})=>{let s=B1.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a=s===!0||o===!0,l=e.escapeInvalid===!0?"\\":"",c="";if(i.isOpen===!0||i.isClose===!0)return l+i.value;if(i.type==="open")return a?l+i.value:"(";if(i.type==="close")return a?l+i.value:")";if(i.type==="comma")return i.prev.type==="comma"?"":a?i.value:"|";if(i.value)return i.value;if(i.nodes&&i.ranges>0){let u=B1.reduce(i.nodes),g=Bpe(...u,_(P({},e),{wrap:!1,toRegex:!0}));if(g.length!==0)return u.length>1&&g.length>1?`(${g})`:g}if(i.nodes)for(let u of i.nodes)c+=r(u,i);return c};return r(t)};w1.exports=Qpe});var S1=E((K$e,b1)=>{"use strict";var bpe=Wb(),v1=NE(),ou=FE(),Il=(t="",e="",r=!1)=>{let i=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?ou.flatten(e).map(n=>`{${n}}`):e;for(let n of t)if(Array.isArray(n))for(let s of n)i.push(Il(s,e,r));else for(let s of e)r===!0&&typeof s=="string"&&(s=`{${s}}`),i.push(Array.isArray(s)?Il(n,s,r):n+s);return ou.flatten(i)},vpe=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,i=(n,s={})=>{n.queue=[];let o=s,a=s.queue;for(;o.type!=="brace"&&o.type!=="root"&&o.parent;)o=o.parent,a=o.queue;if(n.invalid||n.dollar){a.push(Il(a.pop(),v1(n,e)));return}if(n.type==="brace"&&n.invalid!==!0&&n.nodes.length===2){a.push(Il(a.pop(),["{}"]));return}if(n.nodes&&n.ranges>0){let g=ou.reduce(n.nodes);if(ou.exceedsLimit(...g,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let f=bpe(...g,e);f.length===0&&(f=v1(n,e)),a.push(Il(a.pop(),f)),n.nodes=[];return}let l=ou.encloseBrace(n),c=n.queue,u=n;for(;u.type!=="brace"&&u.type!=="root"&&u.parent;)u=u.parent,c=u.queue;for(let g=0;g{"use strict";x1.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` -`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var N1=E((H$e,P1)=>{"use strict";var Spe=NE(),{MAX_LENGTH:D1,CHAR_BACKSLASH:zb,CHAR_BACKTICK:xpe,CHAR_COMMA:kpe,CHAR_DOT:Ppe,CHAR_LEFT_PARENTHESES:Dpe,CHAR_RIGHT_PARENTHESES:Rpe,CHAR_LEFT_CURLY_BRACE:Fpe,CHAR_RIGHT_CURLY_BRACE:Npe,CHAR_LEFT_SQUARE_BRACKET:R1,CHAR_RIGHT_SQUARE_BRACKET:F1,CHAR_DOUBLE_QUOTE:Lpe,CHAR_SINGLE_QUOTE:Tpe,CHAR_NO_BREAK_SPACE:Mpe,CHAR_ZERO_WIDTH_NOBREAK_SPACE:Ope}=k1(),Kpe=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},i=typeof r.maxLength=="number"?Math.min(D1,r.maxLength):D1;if(t.length>i)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${i})`);let n={type:"root",input:t,nodes:[]},s=[n],o=n,a=n,l=0,c=t.length,u=0,g=0,f,h={},p=()=>t[u++],d=m=>{if(m.type==="text"&&a.type==="dot"&&(a.type="text"),a&&a.type==="text"&&m.type==="text"){a.value+=m.value;return}return o.nodes.push(m),m.parent=o,m.prev=a,a=m,m};for(d({type:"bos"});u0){if(o.ranges>0){o.ranges=0;let m=o.nodes.shift();o.nodes=[m,{type:"text",value:Spe(o)}]}d({type:"comma",value:f}),o.commas++;continue}if(f===Ppe&&g>0&&o.commas===0){let m=o.nodes;if(g===0||m.length===0){d({type:"text",value:f});continue}if(a.type==="dot"){if(o.range=[],a.value+=f,a.type="range",o.nodes.length!==3&&o.nodes.length!==5){o.invalid=!0,o.ranges=0,a.type="text";continue}o.ranges++,o.args=[];continue}if(a.type==="range"){m.pop();let I=m[m.length-1];I.value+=a.value+f,a=I,o.ranges--;continue}d({type:"dot",value:f});continue}d({type:"text",value:f})}do if(o=s.pop(),o.type!=="root"){o.nodes.forEach(B=>{B.nodes||(B.type==="open"&&(B.isOpen=!0),B.type==="close"&&(B.isClose=!0),B.nodes||(B.type="text"),B.invalid=!0)});let m=s[s.length-1],I=m.nodes.indexOf(o);m.nodes.splice(I,1,...o.nodes)}while(s.length>0);return d({type:"eos"}),n};P1.exports=Kpe});var M1=E((G$e,L1)=>{"use strict";var T1=NE(),Upe=Q1(),Hpe=S1(),Gpe=N1(),Rn=(t,e={})=>{let r=[];if(Array.isArray(t))for(let i of t){let n=Rn.create(i,e);Array.isArray(n)?r.push(...n):r.push(n)}else r=[].concat(Rn.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};Rn.parse=(t,e={})=>Gpe(t,e);Rn.stringify=(t,e={})=>typeof t=="string"?T1(Rn.parse(t,e),e):T1(t,e);Rn.compile=(t,e={})=>(typeof t=="string"&&(t=Rn.parse(t,e)),Upe(t,e));Rn.expand=(t,e={})=>{typeof t=="string"&&(t=Rn.parse(t,e));let r=Hpe(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};Rn.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?Rn.compile(t,e):Rn.expand(t,e);L1.exports=Rn});var dh=E((j$e,O1)=>{"use strict";var jpe=require("path"),io="\\\\/",K1=`[^${io}]`,ea="\\.",Ype="\\+",qpe="\\?",TE="\\/",Jpe="(?=.)",U1="[^/]",Vb=`(?:${TE}|$)`,H1=`(?:^|${TE})`,_b=`${ea}{1,2}${Vb}`,Wpe=`(?!${ea})`,zpe=`(?!${H1}${_b})`,Vpe=`(?!${ea}{0,1}${Vb})`,_pe=`(?!${_b})`,Xpe=`[^.${TE}]`,Zpe=`${U1}*?`,G1={DOT_LITERAL:ea,PLUS_LITERAL:Ype,QMARK_LITERAL:qpe,SLASH_LITERAL:TE,ONE_CHAR:Jpe,QMARK:U1,END_ANCHOR:Vb,DOTS_SLASH:_b,NO_DOT:Wpe,NO_DOTS:zpe,NO_DOT_SLASH:Vpe,NO_DOTS_SLASH:_pe,QMARK_NO_DOT:Xpe,STAR:Zpe,START_ANCHOR:H1},$pe=_(P({},G1),{SLASH_LITERAL:`[${io}]`,QMARK:K1,STAR:`${K1}*?`,DOTS_SLASH:`${ea}{1,2}(?:[${io}]|$)`,NO_DOT:`(?!${ea})`,NO_DOTS:`(?!(?:^|[${io}])${ea}{1,2}(?:[${io}]|$))`,NO_DOT_SLASH:`(?!${ea}{0,1}(?:[${io}]|$))`,NO_DOTS_SLASH:`(?!${ea}{1,2}(?:[${io}]|$))`,QMARK_NO_DOT:`[^.${io}]`,START_ANCHOR:`(?:^|[${io}])`,END_ANCHOR:`(?:[${io}]|$)`}),ede={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};O1.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:ede,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:jpe.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?$pe:G1}}});var Ch=E(cn=>{"use strict";var tde=require("path"),rde=process.platform==="win32",{REGEX_BACKSLASH:ide,REGEX_REMOVE_BACKSLASH:nde,REGEX_SPECIAL_CHARS:sde,REGEX_SPECIAL_CHARS_GLOBAL:ode}=dh();cn.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);cn.hasRegexChars=t=>sde.test(t);cn.isRegexChar=t=>t.length===1&&cn.hasRegexChars(t);cn.escapeRegex=t=>t.replace(ode,"\\$1");cn.toPosixSlashes=t=>t.replace(ide,"/");cn.removeBackslashes=t=>t.replace(nde,e=>e==="\\"?"":e);cn.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};cn.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:rde===!0||tde.sep==="\\";cn.escapeLast=(t,e,r)=>{let i=t.lastIndexOf(e,r);return i===-1?t:t[i-1]==="\\"?cn.escapeLast(t,e,i-1):`${t.slice(0,i)}\\${t.slice(i)}`};cn.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};cn.wrapOutput=(t,e={},r={})=>{let i=r.contains?"":"^",n=r.contains?"":"$",s=`${i}(?:${t})${n}`;return e.negated===!0&&(s=`(?:^(?!${s}).*$)`),s}});var X1=E((q$e,j1)=>{"use strict";var Y1=Ch(),{CHAR_ASTERISK:Xb,CHAR_AT:ade,CHAR_BACKWARD_SLASH:mh,CHAR_COMMA:Ade,CHAR_DOT:Zb,CHAR_EXCLAMATION_MARK:q1,CHAR_FORWARD_SLASH:J1,CHAR_LEFT_CURLY_BRACE:$b,CHAR_LEFT_PARENTHESES:ev,CHAR_LEFT_SQUARE_BRACKET:lde,CHAR_PLUS:cde,CHAR_QUESTION_MARK:W1,CHAR_RIGHT_CURLY_BRACE:ude,CHAR_RIGHT_PARENTHESES:z1,CHAR_RIGHT_SQUARE_BRACKET:gde}=dh(),V1=t=>t===J1||t===mh,_1=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?Infinity:1)},fde=(t,e)=>{let r=e||{},i=t.length-1,n=r.parts===!0||r.scanToEnd===!0,s=[],o=[],a=[],l=t,c=-1,u=0,g=0,f=!1,h=!1,p=!1,d=!1,m=!1,I=!1,B=!1,b=!1,R=!1,H=0,L,K,J={value:"",depth:0,isGlob:!1},ne=()=>c>=i,q=()=>l.charCodeAt(c+1),A=()=>(L=K,l.charCodeAt(++c));for(;c0&&(W=l.slice(0,u),l=l.slice(u),g-=u),V&&p===!0&&g>0?(V=l.slice(0,g),X=l.slice(g)):p===!0?(V="",X=l):V=l,V&&V!==""&&V!=="/"&&V!==l&&V1(V.charCodeAt(V.length-1))&&(V=V.slice(0,-1)),r.unescape===!0&&(X&&(X=Y1.removeBackslashes(X)),V&&B===!0&&(V=Y1.removeBackslashes(V)));let F={prefix:W,input:t,start:u,base:V,glob:X,isBrace:f,isBracket:h,isGlob:p,isExtglob:d,isGlobstar:m,negated:b};if(r.tokens===!0&&(F.maxDepth=0,V1(K)||o.push(J),F.tokens=o),r.parts===!0||r.tokens===!0){let D;for(let he=0;he{"use strict";var ME=dh(),Fn=Ch(),{MAX_LENGTH:OE,POSIX_REGEX_SOURCE:hde,REGEX_NON_SPECIAL_CHARS:pde,REGEX_SPECIAL_CHARS_BACKREF:dde,REPLACEMENTS:$1}=ME,Cde=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch(i){return t.map(n=>Fn.escapeRegex(n)).join("..")}return r},au=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,eU=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=$1[t]||t;let r=P({},e),i=typeof r.maxLength=="number"?Math.min(OE,r.maxLength):OE,n=t.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);let s={type:"bos",value:"",output:r.prepend||""},o=[s],a=r.capture?"":"?:",l=Fn.isWindows(e),c=ME.globChars(l),u=ME.extglobChars(c),{DOT_LITERAL:g,PLUS_LITERAL:f,SLASH_LITERAL:h,ONE_CHAR:p,DOTS_SLASH:d,NO_DOT:m,NO_DOT_SLASH:I,NO_DOTS_SLASH:B,QMARK:b,QMARK_NO_DOT:R,STAR:H,START_ANCHOR:L}=c,K=G=>`(${a}(?:(?!${L}${G.dot?d:g}).)*?)`,J=r.dot?"":m,ne=r.dot?b:R,q=r.bash===!0?K(r):H;r.capture&&(q=`(${q})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let A={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:o};t=Fn.removePrefix(t,A),n=t.length;let V=[],W=[],X=[],F=s,D,he=()=>A.index===n-1,pe=A.peek=(G=1)=>t[A.index+G],Ne=A.advance=()=>t[++A.index],Pe=()=>t.slice(A.index+1),qe=(G="",Ce=0)=>{A.consumed+=G,A.index+=Ce},re=G=>{A.output+=G.output!=null?G.output:G.value,qe(G.value)},se=()=>{let G=1;for(;pe()==="!"&&(pe(2)!=="("||pe(3)==="?");)Ne(),A.start++,G++;return G%2==0?!1:(A.negated=!0,A.start++,!0)},be=G=>{A[G]++,X.push(G)},ae=G=>{A[G]--,X.pop()},Ae=G=>{if(F.type==="globstar"){let Ce=A.braces>0&&(G.type==="comma"||G.type==="brace"),ee=G.extglob===!0||V.length&&(G.type==="pipe"||G.type==="paren");G.type!=="slash"&&G.type!=="paren"&&!Ce&&!ee&&(A.output=A.output.slice(0,-F.output.length),F.type="star",F.value="*",F.output=q,A.output+=F.output)}if(V.length&&G.type!=="paren"&&!u[G.value]&&(V[V.length-1].inner+=G.value),(G.value||G.output)&&re(G),F&&F.type==="text"&&G.type==="text"){F.value+=G.value,F.output=(F.output||"")+G.value;return}G.prev=F,o.push(G),F=G},De=(G,Ce)=>{let ee=_(P({},u[Ce]),{conditions:1,inner:""});ee.prev=F,ee.parens=A.parens,ee.output=A.output;let Ue=(r.capture?"(":"")+ee.open;be("parens"),Ae({type:G,value:Ce,output:A.output?"":p}),Ae({type:"paren",extglob:!0,value:Ne(),output:Ue}),V.push(ee)},$=G=>{let Ce=G.close+(r.capture?")":"");if(G.type==="negate"){let ee=q;G.inner&&G.inner.length>1&&G.inner.includes("/")&&(ee=K(r)),(ee!==q||he()||/^\)+$/.test(Pe()))&&(Ce=G.close=`)$))${ee}`),G.prev.type==="bos"&&(A.negatedExtglob=!0)}Ae({type:"paren",extglob:!0,value:D,output:Ce}),ae("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let G=!1,Ce=t.replace(dde,(ee,Ue,Oe,vt,dt,ri)=>vt==="\\"?(G=!0,ee):vt==="?"?Ue?Ue+vt+(dt?b.repeat(dt.length):""):ri===0?ne+(dt?b.repeat(dt.length):""):b.repeat(Oe.length):vt==="."?g.repeat(Oe.length):vt==="*"?Ue?Ue+vt+(dt?q:""):q:Ue?ee:`\\${ee}`);return G===!0&&(r.unescape===!0?Ce=Ce.replace(/\\/g,""):Ce=Ce.replace(/\\+/g,ee=>ee.length%2==0?"\\\\":ee?"\\":"")),Ce===t&&r.contains===!0?(A.output=t,A):(A.output=Fn.wrapOutput(Ce,A,e),A)}for(;!he();){if(D=Ne(),D==="\0")continue;if(D==="\\"){let ee=pe();if(ee==="/"&&r.bash!==!0||ee==="."||ee===";")continue;if(!ee){D+="\\",Ae({type:"text",value:D});continue}let Ue=/^\\+/.exec(Pe()),Oe=0;if(Ue&&Ue[0].length>2&&(Oe=Ue[0].length,A.index+=Oe,Oe%2!=0&&(D+="\\")),r.unescape===!0?D=Ne()||"":D+=Ne()||"",A.brackets===0){Ae({type:"text",value:D});continue}}if(A.brackets>0&&(D!=="]"||F.value==="["||F.value==="[^")){if(r.posix!==!1&&D===":"){let ee=F.value.slice(1);if(ee.includes("[")&&(F.posix=!0,ee.includes(":"))){let Ue=F.value.lastIndexOf("["),Oe=F.value.slice(0,Ue),vt=F.value.slice(Ue+2),dt=hde[vt];if(dt){F.value=Oe+dt,A.backtrack=!0,Ne(),!s.output&&o.indexOf(F)===1&&(s.output=p);continue}}}(D==="["&&pe()!==":"||D==="-"&&pe()==="]")&&(D=`\\${D}`),D==="]"&&(F.value==="["||F.value==="[^")&&(D=`\\${D}`),r.posix===!0&&D==="!"&&F.value==="["&&(D="^"),F.value+=D,re({value:D});continue}if(A.quotes===1&&D!=='"'){D=Fn.escapeRegex(D),F.value+=D,re({value:D});continue}if(D==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&Ae({type:"text",value:D});continue}if(D==="("){be("parens"),Ae({type:"paren",value:D});continue}if(D===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(au("opening","("));let ee=V[V.length-1];if(ee&&A.parens===ee.parens+1){$(V.pop());continue}Ae({type:"paren",value:D,output:A.parens?")":"\\)"}),ae("parens");continue}if(D==="["){if(r.nobracket===!0||!Pe().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(au("closing","]"));D=`\\${D}`}else be("brackets");Ae({type:"bracket",value:D});continue}if(D==="]"){if(r.nobracket===!0||F&&F.type==="bracket"&&F.value.length===1){Ae({type:"text",value:D,output:`\\${D}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(au("opening","["));Ae({type:"text",value:D,output:`\\${D}`});continue}ae("brackets");let ee=F.value.slice(1);if(F.posix!==!0&&ee[0]==="^"&&!ee.includes("/")&&(D=`/${D}`),F.value+=D,re({value:D}),r.literalBrackets===!1||Fn.hasRegexChars(ee))continue;let Ue=Fn.escapeRegex(F.value);if(A.output=A.output.slice(0,-F.value.length),r.literalBrackets===!0){A.output+=Ue,F.value=Ue;continue}F.value=`(${a}${Ue}|${F.value})`,A.output+=F.value;continue}if(D==="{"&&r.nobrace!==!0){be("braces");let ee={type:"brace",value:D,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};W.push(ee),Ae(ee);continue}if(D==="}"){let ee=W[W.length-1];if(r.nobrace===!0||!ee){Ae({type:"text",value:D,output:D});continue}let Ue=")";if(ee.dots===!0){let Oe=o.slice(),vt=[];for(let dt=Oe.length-1;dt>=0&&(o.pop(),Oe[dt].type!=="brace");dt--)Oe[dt].type!=="dots"&&vt.unshift(Oe[dt].value);Ue=Cde(vt,r),A.backtrack=!0}if(ee.comma!==!0&&ee.dots!==!0){let Oe=A.output.slice(0,ee.outputIndex),vt=A.tokens.slice(ee.tokensIndex);ee.value=ee.output="\\{",D=Ue="\\}",A.output=Oe;for(let dt of vt)A.output+=dt.output||dt.value}Ae({type:"brace",value:D,output:Ue}),ae("braces"),W.pop();continue}if(D==="|"){V.length>0&&V[V.length-1].conditions++,Ae({type:"text",value:D});continue}if(D===","){let ee=D,Ue=W[W.length-1];Ue&&X[X.length-1]==="braces"&&(Ue.comma=!0,ee="|"),Ae({type:"comma",value:D,output:ee});continue}if(D==="/"){if(F.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",o.pop(),F=s;continue}Ae({type:"slash",value:D,output:h});continue}if(D==="."){if(A.braces>0&&F.type==="dot"){F.value==="."&&(F.output=g);let ee=W[W.length-1];F.type="dots",F.output+=D,F.value+=D,ee.dots=!0;continue}if(A.braces+A.parens===0&&F.type!=="bos"&&F.type!=="slash"){Ae({type:"text",value:D,output:g});continue}Ae({type:"dot",value:D,output:g});continue}if(D==="?"){if(!(F&&F.value==="(")&&r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){De("qmark",D);continue}if(F&&F.type==="paren"){let Ue=pe(),Oe=D;if(Ue==="<"&&!Fn.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(F.value==="("&&!/[!=<:]/.test(Ue)||Ue==="<"&&!/<([!=]|\w+>)/.test(Pe()))&&(Oe=`\\${D}`),Ae({type:"text",value:D,output:Oe});continue}if(r.dot!==!0&&(F.type==="slash"||F.type==="bos")){Ae({type:"qmark",value:D,output:R});continue}Ae({type:"qmark",value:D,output:b});continue}if(D==="!"){if(r.noextglob!==!0&&pe()==="("&&(pe(2)!=="?"||!/[!=<:]/.test(pe(3)))){De("negate",D);continue}if(r.nonegate!==!0&&A.index===0){se();continue}}if(D==="+"){if(r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){De("plus",D);continue}if(F&&F.value==="("||r.regex===!1){Ae({type:"plus",value:D,output:f});continue}if(F&&(F.type==="bracket"||F.type==="paren"||F.type==="brace")||A.parens>0){Ae({type:"plus",value:D});continue}Ae({type:"plus",value:f});continue}if(D==="@"){if(r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){Ae({type:"at",extglob:!0,value:D,output:""});continue}Ae({type:"text",value:D});continue}if(D!=="*"){(D==="$"||D==="^")&&(D=`\\${D}`);let ee=pde.exec(Pe());ee&&(D+=ee[0],A.index+=ee[0].length),Ae({type:"text",value:D});continue}if(F&&(F.type==="globstar"||F.star===!0)){F.type="star",F.star=!0,F.value+=D,F.output=q,A.backtrack=!0,A.globstar=!0,qe(D);continue}let G=Pe();if(r.noextglob!==!0&&/^\([^?]/.test(G)){De("star",D);continue}if(F.type==="star"){if(r.noglobstar===!0){qe(D);continue}let ee=F.prev,Ue=ee.prev,Oe=ee.type==="slash"||ee.type==="bos",vt=Ue&&(Ue.type==="star"||Ue.type==="globstar");if(r.bash===!0&&(!Oe||G[0]&&G[0]!=="/")){Ae({type:"star",value:D,output:""});continue}let dt=A.braces>0&&(ee.type==="comma"||ee.type==="brace"),ri=V.length&&(ee.type==="pipe"||ee.type==="paren");if(!Oe&&ee.type!=="paren"&&!dt&&!ri){Ae({type:"star",value:D,output:""});continue}for(;G.slice(0,3)==="/**";){let ii=t[A.index+4];if(ii&&ii!=="/")break;G=G.slice(3),qe("/**",3)}if(ee.type==="bos"&&he()){F.type="globstar",F.value+=D,F.output=K(r),A.output=F.output,A.globstar=!0,qe(D);continue}if(ee.type==="slash"&&ee.prev.type!=="bos"&&!vt&&he()){A.output=A.output.slice(0,-(ee.output+F.output).length),ee.output=`(?:${ee.output}`,F.type="globstar",F.output=K(r)+(r.strictSlashes?")":"|$)"),F.value+=D,A.globstar=!0,A.output+=ee.output+F.output,qe(D);continue}if(ee.type==="slash"&&ee.prev.type!=="bos"&&G[0]==="/"){let ii=G[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(ee.output+F.output).length),ee.output=`(?:${ee.output}`,F.type="globstar",F.output=`${K(r)}${h}|${h}${ii})`,F.value+=D,A.output+=ee.output+F.output,A.globstar=!0,qe(D+Ne()),Ae({type:"slash",value:"/",output:""});continue}if(ee.type==="bos"&&G[0]==="/"){F.type="globstar",F.value+=D,F.output=`(?:^|${h}|${K(r)}${h})`,A.output=F.output,A.globstar=!0,qe(D+Ne()),Ae({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-F.output.length),F.type="globstar",F.output=K(r),F.value+=D,A.output+=F.output,A.globstar=!0,qe(D);continue}let Ce={type:"star",value:D,output:q};if(r.bash===!0){Ce.output=".*?",(F.type==="bos"||F.type==="slash")&&(Ce.output=J+Ce.output),Ae(Ce);continue}if(F&&(F.type==="bracket"||F.type==="paren")&&r.regex===!0){Ce.output=D,Ae(Ce);continue}(A.index===A.start||F.type==="slash"||F.type==="dot")&&(F.type==="dot"?(A.output+=I,F.output+=I):r.dot===!0?(A.output+=B,F.output+=B):(A.output+=J,F.output+=J),pe()!=="*"&&(A.output+=p,F.output+=p)),Ae(Ce)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing","]"));A.output=Fn.escapeLast(A.output,"["),ae("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing",")"));A.output=Fn.escapeLast(A.output,"("),ae("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing","}"));A.output=Fn.escapeLast(A.output,"{"),ae("braces")}if(r.strictSlashes!==!0&&(F.type==="star"||F.type==="bracket")&&Ae({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let G of A.tokens)A.output+=G.output!=null?G.output:G.value,G.suffix&&(A.output+=G.suffix)}return A};eU.fastpaths=(t,e)=>{let r=P({},e),i=typeof r.maxLength=="number"?Math.min(OE,r.maxLength):OE,n=t.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);t=$1[t]||t;let s=Fn.isWindows(e),{DOT_LITERAL:o,SLASH_LITERAL:a,ONE_CHAR:l,DOTS_SLASH:c,NO_DOT:u,NO_DOTS:g,NO_DOTS_SLASH:f,STAR:h,START_ANCHOR:p}=ME.globChars(s),d=r.dot?g:u,m=r.dot?f:u,I=r.capture?"":"?:",B={negated:!1,prefix:""},b=r.bash===!0?".*?":h;r.capture&&(b=`(${b})`);let R=J=>J.noglobstar===!0?b:`(${I}(?:(?!${p}${J.dot?c:o}).)*?)`,H=J=>{switch(J){case"*":return`${d}${l}${b}`;case".*":return`${o}${l}${b}`;case"*.*":return`${d}${b}${o}${l}${b}`;case"*/*":return`${d}${b}${a}${l}${m}${b}`;case"**":return d+R(r);case"**/*":return`(?:${d}${R(r)}${a})?${m}${l}${b}`;case"**/*.*":return`(?:${d}${R(r)}${a})?${m}${b}${o}${l}${b}`;case"**/.*":return`(?:${d}${R(r)}${a})?${o}${l}${b}`;default:{let ne=/^(.*?)\.(\w+)$/.exec(J);if(!ne)return;let q=H(ne[1]);return q?q+o+ne[2]:void 0}}},L=Fn.removePrefix(t,B),K=H(L);return K&&r.strictSlashes!==!0&&(K+=`${a}?`),K};Z1.exports=eU});var iU=E((W$e,rU)=>{"use strict";var mde=require("path"),Ede=X1(),tv=tU(),rv=Ch(),Ide=dh(),yde=t=>t&&typeof t=="object"&&!Array.isArray(t),Dr=(t,e,r=!1)=>{if(Array.isArray(t)){let u=t.map(f=>Dr(f,e,r));return f=>{for(let h of u){let p=h(f);if(p)return p}return!1}}let i=yde(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!i)throw new TypeError("Expected pattern to be a non-empty string");let n=e||{},s=rv.isWindows(e),o=i?Dr.compileRe(t,e):Dr.makeRe(t,e,!1,!0),a=o.state;delete o.state;let l=()=>!1;if(n.ignore){let u=_(P({},e),{ignore:null,onMatch:null,onResult:null});l=Dr(n.ignore,u,r)}let c=(u,g=!1)=>{let{isMatch:f,match:h,output:p}=Dr.test(u,o,e,{glob:t,posix:s}),d={glob:t,state:a,regex:o,posix:s,input:u,output:p,match:h,isMatch:f};return typeof n.onResult=="function"&&n.onResult(d),f===!1?(d.isMatch=!1,g?d:!1):l(u)?(typeof n.onIgnore=="function"&&n.onIgnore(d),d.isMatch=!1,g?d:!1):(typeof n.onMatch=="function"&&n.onMatch(d),g?d:!0)};return r&&(c.state=a),c};Dr.test=(t,e,r,{glob:i,posix:n}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let s=r||{},o=s.format||(n?rv.toPosixSlashes:null),a=t===i,l=a&&o?o(t):t;return a===!1&&(l=o?o(t):t,a=l===i),(a===!1||s.capture===!0)&&(s.matchBase===!0||s.basename===!0?a=Dr.matchBase(t,e,r,n):a=e.exec(l)),{isMatch:Boolean(a),match:a,output:l}};Dr.matchBase=(t,e,r,i=rv.isWindows(r))=>(e instanceof RegExp?e:Dr.makeRe(e,r)).test(mde.basename(t));Dr.isMatch=(t,e,r)=>Dr(e,r)(t);Dr.parse=(t,e)=>Array.isArray(t)?t.map(r=>Dr.parse(r,e)):tv(t,_(P({},e),{fastpaths:!1}));Dr.scan=(t,e)=>Ede(t,e);Dr.compileRe=(t,e,r=!1,i=!1)=>{if(r===!0)return t.output;let n=e||{},s=n.contains?"":"^",o=n.contains?"":"$",a=`${s}(?:${t.output})${o}`;t&&t.negated===!0&&(a=`^(?!${a}).*$`);let l=Dr.toRegex(a,e);return i===!0&&(l.state=t),l};Dr.makeRe=(t,e,r=!1,i=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let n=e||{},s={negated:!1,fastpaths:!0},o="",a;return t.startsWith("./")&&(t=t.slice(2),o=s.prefix="./"),n.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(a=tv.fastpaths(t,e)),a===void 0?(s=tv(t,e),s.prefix=o+(s.prefix||"")):s.output=a,Dr.compileRe(s,e,r,i)};Dr.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Dr.constants=Ide;rU.exports=Dr});var iv=E((z$e,nU)=>{"use strict";nU.exports=iU()});var Nn=E((V$e,sU)=>{"use strict";var oU=require("util"),aU=M1(),no=iv(),nv=Ch(),AU=t=>typeof t=="string"&&(t===""||t==="./"),pr=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let i=new Set,n=new Set,s=new Set,o=0,a=u=>{s.add(u.output),r&&r.onResult&&r.onResult(u)};for(let u=0;u!i.has(u));if(r&&c.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(u=>u.replace(/\\/g,"")):e}return c};pr.match=pr;pr.matcher=(t,e)=>no(t,e);pr.isMatch=(t,e,r)=>no(e,r)(t);pr.any=pr.isMatch;pr.not=(t,e,r={})=>{e=[].concat(e).map(String);let i=new Set,n=[],s=a=>{r.onResult&&r.onResult(a),n.push(a.output)},o=pr(t,e,_(P({},r),{onResult:s}));for(let a of n)o.includes(a)||i.add(a);return[...i]};pr.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${oU.inspect(t)}"`);if(Array.isArray(e))return e.some(i=>pr.contains(t,i,r));if(typeof e=="string"){if(AU(t)||AU(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return pr.isMatch(t,e,_(P({},r),{contains:!0}))};pr.matchKeys=(t,e,r)=>{if(!nv.isObject(t))throw new TypeError("Expected the first argument to be an object");let i=pr(Object.keys(t),e,r),n={};for(let s of i)n[s]=t[s];return n};pr.some=(t,e,r)=>{let i=[].concat(t);for(let n of[].concat(e)){let s=no(String(n),r);if(i.some(o=>s(o)))return!0}return!1};pr.every=(t,e,r)=>{let i=[].concat(t);for(let n of[].concat(e)){let s=no(String(n),r);if(!i.every(o=>s(o)))return!1}return!0};pr.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${oU.inspect(t)}"`);return[].concat(e).every(i=>no(i,r)(t))};pr.capture=(t,e,r)=>{let i=nv.isWindows(r),s=no.makeRe(String(t),_(P({},r),{capture:!0})).exec(i?nv.toPosixSlashes(e):e);if(s)return s.slice(1).map(o=>o===void 0?"":o)};pr.makeRe=(...t)=>no.makeRe(...t);pr.scan=(...t)=>no.scan(...t);pr.parse=(t,e)=>{let r=[];for(let i of[].concat(t||[]))for(let n of aU(String(i),e))r.push(no.parse(n,e));return r};pr.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(t)?[t]:aU(t,e)};pr.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return pr.braces(t,_(P({},e),{expand:!0}))};sU.exports=pr});var cU=E((_$e,lU)=>{"use strict";lU.exports=({onlyFirst:t=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}});var gU=E((X$e,uU)=>{"use strict";var wde=cU();uU.exports=t=>typeof t=="string"?t.replace(wde(),""):t});var lu={};it(lu,{KeyRelationship:()=>Bl,applyCascade:()=>fv,base64RegExp:()=>CU,colorStringAlphaRegExp:()=>dU,colorStringRegExp:()=>pU,computeKey:()=>rA,getPrintable:()=>Mr,hasExactLength:()=>wU,hasForbiddenKeys:()=>eCe,hasKeyRelationship:()=>pv,hasMaxLength:()=>Mde,hasMinLength:()=>Tde,hasMutuallyExclusiveKeys:()=>tCe,hasRequiredKeys:()=>$de,hasUniqueItems:()=>Ode,isArray:()=>xde,isAtLeast:()=>Hde,isAtMost:()=>Gde,isBase64:()=>Xde,isBoolean:()=>bde,isDate:()=>Sde,isDict:()=>Pde,isEnum:()=>Yi,isHexColor:()=>_de,isISO8601:()=>Vde,isInExclusiveRange:()=>Yde,isInInclusiveRange:()=>jde,isInstanceOf:()=>Rde,isInteger:()=>qde,isJSON:()=>Zde,isLiteral:()=>Bde,isLowerCase:()=>Jde,isNegative:()=>Kde,isNullable:()=>Lde,isNumber:()=>vde,isObject:()=>Dde,isOneOf:()=>Fde,isOptional:()=>Nde,isPositive:()=>Ude,isString:()=>gv,isTuple:()=>kde,isUUID4:()=>zde,isUnknown:()=>yU,isUpperCase:()=>Wde,iso8601RegExp:()=>uv,makeCoercionFn:()=>wl,makeSetter:()=>IU,makeTrait:()=>EU,makeValidator:()=>Ct,matchesRegExp:()=>hv,plural:()=>GE,pushError:()=>at,simpleKeyRegExp:()=>hU,uuid4RegExp:()=>mU});function Ct({test:t}){return EU(t)()}function Mr(t){return t===null?"null":t===void 0?"undefined":t===""?"an empty string":JSON.stringify(t)}function rA(t,e){var r,i,n;return typeof e=="number"?`${(r=t==null?void 0:t.p)!==null&&r!==void 0?r:"."}[${e}]`:hU.test(e)?`${(i=t==null?void 0:t.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=t==null?void 0:t.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function wl(t,e){return r=>{let i=t[e];return t[e]=r,wl(t,e).bind(null,i)}}function IU(t,e){return r=>{t[e]=r}}function GE(t,e,r){return t===1?e:r}function at({errors:t,p:e}={},r){return t==null||t.push(`${e!=null?e:"."}: ${r}`),!1}function Bde(t){return Ct({test:(e,r)=>e!==t?at(r,`Expected a literal (got ${Mr(t)})`):!0})}function Yi(t){let e=Array.isArray(t)?t:Object.values(t),r=new Set(e);return Ct({test:(i,n)=>r.has(i)?!0:at(n,`Expected a valid enumeration value (got ${Mr(i)})`)})}var hU,pU,dU,CU,mU,uv,EU,yU,gv,Qde,bde,vde,Sde,xde,kde,Pde,Dde,Rde,Fde,fv,Nde,Lde,Tde,Mde,wU,Ode,Kde,Ude,Hde,Gde,jde,Yde,qde,hv,Jde,Wde,zde,Vde,_de,Xde,Zde,$de,eCe,tCe,Bl,rCe,pv,Ss=Yfe(()=>{hU=/^[a-zA-Z_][a-zA-Z0-9_]*$/,pU=/^#[0-9a-f]{6}$/i,dU=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,CU=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,mU=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,uv=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,EU=t=>()=>t;yU=()=>Ct({test:(t,e)=>!0});gv=()=>Ct({test:(t,e)=>typeof t!="string"?at(e,`Expected a string (got ${Mr(t)})`):!0});Qde=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),bde=()=>Ct({test:(t,e)=>{var r;if(typeof t!="boolean"){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i=Qde.get(t);if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a boolean (got ${Mr(t)})`)}return!0}}),vde=()=>Ct({test:(t,e)=>{var r;if(typeof t!="number"){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i;if(typeof t=="string"){let n;try{n=JSON.parse(t)}catch(s){}if(typeof n=="number")if(JSON.stringify(n)===t)i=n;else return at(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a number (got ${Mr(t)})`)}return!0}}),Sde=()=>Ct({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i;if(typeof t=="string"&&uv.test(t))i=new Date(t);else{let n;if(typeof t=="string"){let s;try{s=JSON.parse(t)}catch(o){}typeof s=="number"&&(n=s)}else typeof t=="number"&&(n=t);if(typeof n!="undefined")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return at(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a date (got ${Mr(t)})`)}return!0}}),xde=(t,{delimiter:e}={})=>Ct({test:(r,i)=>{var n;if(typeof r=="string"&&typeof e!="undefined"&&typeof(i==null?void 0:i.coercions)!="undefined"){if(typeof(i==null?void 0:i.coercion)=="undefined")return at(i,"Unbound coercion result");r=r.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,r)])}if(!Array.isArray(r))return at(i,`Expected an array (got ${Mr(r)})`);let s=!0;for(let o=0,a=r.length;o{let r=wU(t.length);return Ct({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e!="undefined"&&typeof(n==null?void 0:n.coercions)!="undefined"){if(typeof(n==null?void 0:n.coercion)=="undefined")return at(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return at(n,`Expected a tuple (got ${Mr(i)})`);let o=r(i,Object.assign({},n));for(let a=0,l=i.length;aCt({test:(r,i)=>{if(typeof r!="object"||r===null)return at(i,`Expected an object (got ${Mr(r)})`);let n=Object.keys(r),s=!0;for(let o=0,a=n.length;o{let r=Object.keys(t);return Ct({test:(i,n)=>{if(typeof i!="object"||i===null)return at(n,`Expected an object (got ${Mr(i)})`);let s=new Set([...r,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=at(Object.assign(Object.assign({},n),{p:rA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(t,l)?t[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c!="undefined"?a=c(u,Object.assign(Object.assign({},n),{p:rA(n,l),coercion:wl(i,l)}))&&a:e===null?a=at(Object.assign(Object.assign({},n),{p:rA(n,l)}),`Extraneous property (got ${Mr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:IU(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},Rde=t=>Ct({test:(e,r)=>e instanceof t?!0:at(r,`Expected an instance of ${t.name} (got ${Mr(e)})`)}),Fde=(t,{exclusive:e=!1}={})=>Ct({test:(r,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)!="undefined"?[]:void 0;for(let c=0,u=t.length;c1?at(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),fv=(t,e)=>Ct({test:(r,i)=>{var n,s;let o={value:r},a=typeof(i==null?void 0:i.coercions)!="undefined"?wl(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)!="undefined"?[]:void 0;if(!t(r,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l!="undefined")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)!="undefined"){if(o.value!==r){if(typeof(i==null?void 0:i.coercion)=="undefined")return at(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),Nde=t=>Ct({test:(e,r)=>typeof e=="undefined"?!0:t(e,r)}),Lde=t=>Ct({test:(e,r)=>e===null?!0:t(e,r)}),Tde=t=>Ct({test:(e,r)=>e.length>=t?!0:at(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)}),Mde=t=>Ct({test:(e,r)=>e.length<=t?!0:at(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)}),wU=t=>Ct({test:(e,r)=>e.length!==t?at(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0}),Ode=({map:t}={})=>Ct({test:(e,r)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sCt({test:(t,e)=>t<=0?!0:at(e,`Expected to be negative (got ${t})`)}),Ude=()=>Ct({test:(t,e)=>t>=0?!0:at(e,`Expected to be positive (got ${t})`)}),Hde=t=>Ct({test:(e,r)=>e>=t?!0:at(r,`Expected to be at least ${t} (got ${e})`)}),Gde=t=>Ct({test:(e,r)=>e<=t?!0:at(r,`Expected to be at most ${t} (got ${e})`)}),jde=(t,e)=>Ct({test:(r,i)=>r>=t&&r<=e?!0:at(i,`Expected to be in the [${t}; ${e}] range (got ${r})`)}),Yde=(t,e)=>Ct({test:(r,i)=>r>=t&&rCt({test:(e,r)=>e!==Math.round(e)?at(r,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:at(r,`Expected to be a safe integer (got ${e})`)}),hv=t=>Ct({test:(e,r)=>t.test(e)?!0:at(r,`Expected to match the pattern ${t.toString()} (got ${Mr(e)})`)}),Jde=()=>Ct({test:(t,e)=>t!==t.toLowerCase()?at(e,`Expected to be all-lowercase (got ${t})`):!0}),Wde=()=>Ct({test:(t,e)=>t!==t.toUpperCase()?at(e,`Expected to be all-uppercase (got ${t})`):!0}),zde=()=>Ct({test:(t,e)=>mU.test(t)?!0:at(e,`Expected to be a valid UUID v4 (got ${Mr(t)})`)}),Vde=()=>Ct({test:(t,e)=>uv.test(t)?!1:at(e,`Expected to be a valid ISO 8601 date string (got ${Mr(t)})`)}),_de=({alpha:t=!1})=>Ct({test:(e,r)=>(t?pU.test(e):dU.test(e))?!0:at(r,`Expected to be a valid hexadecimal color string (got ${Mr(e)})`)}),Xde=()=>Ct({test:(t,e)=>CU.test(t)?!0:at(e,`Expected to be a valid base 64 string (got ${Mr(t)})`)}),Zde=(t=yU())=>Ct({test:(e,r)=>{let i;try{i=JSON.parse(e)}catch(n){return at(r,`Expected to be a valid JSON string (got ${Mr(e)})`)}return t(i,r)}}),$de=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?at(i,`Missing required ${GE(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},eCe=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?at(i,`Forbidden ${GE(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},tCe=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?at(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(t){t.Forbids="Forbids",t.Requires="Requires"})(Bl||(Bl={}));rCe={[Bl.Forbids]:{expect:!1,message:"forbids using"},[Bl.Requires]:{expect:!0,message:"requires using"}},pv=(t,e,r,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(r),o=rCe[e];return Ct({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(t)||n.has(a[t]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?at(l,`Property "${t}" ${o.message} ${GE(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})}});var Sh=E(($et,OU)=>{var mCe="2.0.0",ECe=256,ICe=Number.MAX_SAFE_INTEGER||9007199254740991,yCe=16;OU.exports={SEMVER_SPEC_VERSION:mCe,MAX_LENGTH:ECe,MAX_SAFE_INTEGER:ICe,MAX_SAFE_COMPONENT_LENGTH:yCe}});var xh=E((ett,KU)=>{var wCe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};KU.exports=wCe});var Ql=E((iA,UU)=>{var{MAX_SAFE_COMPONENT_LENGTH:yv}=Sh(),BCe=xh();iA=UU.exports={};var QCe=iA.re=[],Je=iA.src=[],We=iA.t={},bCe=0,mt=(t,e,r)=>{let i=bCe++;BCe(i,e),We[t]=i,Je[i]=e,QCe[i]=new RegExp(e,r?"g":void 0)};mt("NUMERICIDENTIFIER","0|[1-9]\\d*");mt("NUMERICIDENTIFIERLOOSE","[0-9]+");mt("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");mt("MAINVERSION",`(${Je[We.NUMERICIDENTIFIER]})\\.(${Je[We.NUMERICIDENTIFIER]})\\.(${Je[We.NUMERICIDENTIFIER]})`);mt("MAINVERSIONLOOSE",`(${Je[We.NUMERICIDENTIFIERLOOSE]})\\.(${Je[We.NUMERICIDENTIFIERLOOSE]})\\.(${Je[We.NUMERICIDENTIFIERLOOSE]})`);mt("PRERELEASEIDENTIFIER",`(?:${Je[We.NUMERICIDENTIFIER]}|${Je[We.NONNUMERICIDENTIFIER]})`);mt("PRERELEASEIDENTIFIERLOOSE",`(?:${Je[We.NUMERICIDENTIFIERLOOSE]}|${Je[We.NONNUMERICIDENTIFIER]})`);mt("PRERELEASE",`(?:-(${Je[We.PRERELEASEIDENTIFIER]}(?:\\.${Je[We.PRERELEASEIDENTIFIER]})*))`);mt("PRERELEASELOOSE",`(?:-?(${Je[We.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${Je[We.PRERELEASEIDENTIFIERLOOSE]})*))`);mt("BUILDIDENTIFIER","[0-9A-Za-z-]+");mt("BUILD",`(?:\\+(${Je[We.BUILDIDENTIFIER]}(?:\\.${Je[We.BUILDIDENTIFIER]})*))`);mt("FULLPLAIN",`v?${Je[We.MAINVERSION]}${Je[We.PRERELEASE]}?${Je[We.BUILD]}?`);mt("FULL",`^${Je[We.FULLPLAIN]}$`);mt("LOOSEPLAIN",`[v=\\s]*${Je[We.MAINVERSIONLOOSE]}${Je[We.PRERELEASELOOSE]}?${Je[We.BUILD]}?`);mt("LOOSE",`^${Je[We.LOOSEPLAIN]}$`);mt("GTLT","((?:<|>)?=?)");mt("XRANGEIDENTIFIERLOOSE",`${Je[We.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);mt("XRANGEIDENTIFIER",`${Je[We.NUMERICIDENTIFIER]}|x|X|\\*`);mt("XRANGEPLAIN",`[v=\\s]*(${Je[We.XRANGEIDENTIFIER]})(?:\\.(${Je[We.XRANGEIDENTIFIER]})(?:\\.(${Je[We.XRANGEIDENTIFIER]})(?:${Je[We.PRERELEASE]})?${Je[We.BUILD]}?)?)?`);mt("XRANGEPLAINLOOSE",`[v=\\s]*(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:${Je[We.PRERELEASELOOSE]})?${Je[We.BUILD]}?)?)?`);mt("XRANGE",`^${Je[We.GTLT]}\\s*${Je[We.XRANGEPLAIN]}$`);mt("XRANGELOOSE",`^${Je[We.GTLT]}\\s*${Je[We.XRANGEPLAINLOOSE]}$`);mt("COERCE",`(^|[^\\d])(\\d{1,${yv}})(?:\\.(\\d{1,${yv}}))?(?:\\.(\\d{1,${yv}}))?(?:$|[^\\d])`);mt("COERCERTL",Je[We.COERCE],!0);mt("LONETILDE","(?:~>?)");mt("TILDETRIM",`(\\s*)${Je[We.LONETILDE]}\\s+`,!0);iA.tildeTrimReplace="$1~";mt("TILDE",`^${Je[We.LONETILDE]}${Je[We.XRANGEPLAIN]}$`);mt("TILDELOOSE",`^${Je[We.LONETILDE]}${Je[We.XRANGEPLAINLOOSE]}$`);mt("LONECARET","(?:\\^)");mt("CARETTRIM",`(\\s*)${Je[We.LONECARET]}\\s+`,!0);iA.caretTrimReplace="$1^";mt("CARET",`^${Je[We.LONECARET]}${Je[We.XRANGEPLAIN]}$`);mt("CARETLOOSE",`^${Je[We.LONECARET]}${Je[We.XRANGEPLAINLOOSE]}$`);mt("COMPARATORLOOSE",`^${Je[We.GTLT]}\\s*(${Je[We.LOOSEPLAIN]})$|^$`);mt("COMPARATOR",`^${Je[We.GTLT]}\\s*(${Je[We.FULLPLAIN]})$|^$`);mt("COMPARATORTRIM",`(\\s*)${Je[We.GTLT]}\\s*(${Je[We.LOOSEPLAIN]}|${Je[We.XRANGEPLAIN]})`,!0);iA.comparatorTrimReplace="$1$2$3";mt("HYPHENRANGE",`^\\s*(${Je[We.XRANGEPLAIN]})\\s+-\\s+(${Je[We.XRANGEPLAIN]})\\s*$`);mt("HYPHENRANGELOOSE",`^\\s*(${Je[We.XRANGEPLAINLOOSE]})\\s+-\\s+(${Je[We.XRANGEPLAINLOOSE]})\\s*$`);mt("STAR","(<|>)?=?\\s*\\*");mt("GTE0","^\\s*>=\\s*0.0.0\\s*$");mt("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var kh=E((ttt,HU)=>{var vCe=["includePrerelease","loose","rtl"],SCe=t=>t?typeof t!="object"?{loose:!0}:vCe.filter(e=>t[e]).reduce((e,r)=>(e[r]=!0,e),{}):{};HU.exports=SCe});var zE=E((rtt,GU)=>{var jU=/^[0-9]+$/,YU=(t,e)=>{let r=jU.test(t),i=jU.test(e);return r&&i&&(t=+t,e=+e),t===e?0:r&&!i?-1:i&&!r?1:tYU(e,t);GU.exports={compareIdentifiers:YU,rcompareIdentifiers:xCe}});var bi=E((itt,qU)=>{var VE=xh(),{MAX_LENGTH:JU,MAX_SAFE_INTEGER:_E}=Sh(),{re:WU,t:zU}=Ql(),kCe=kh(),{compareIdentifiers:Ph}=zE(),_n=class{constructor(e,r){if(r=kCe(r),e instanceof _n){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>JU)throw new TypeError(`version is longer than ${JU} characters`);VE("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let i=e.trim().match(r.loose?WU[zU.LOOSE]:WU[zU.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>_E||this.major<0)throw new TypeError("Invalid major version");if(this.minor>_E||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>_E||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s<_E)return s}return n}):this.prerelease=[],this.build=i[5]?i[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(VE("SemVer.compare",this.version,this.options,e),!(e instanceof _n)){if(typeof e=="string"&&e===this.version)return 0;e=new _n(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof _n||(e=new _n(e,this.options)),Ph(this.major,e.major)||Ph(this.minor,e.minor)||Ph(this.patch,e.patch)}comparePre(e){if(e instanceof _n||(e=new _n(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let i=this.prerelease[r],n=e.prerelease[r];if(VE("prerelease compare",r,i,n),i===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(i===void 0)return-1;if(i===n)continue;return Ph(i,n)}while(++r)}compareBuild(e){e instanceof _n||(e=new _n(e,this.options));let r=0;do{let i=this.build[r],n=e.build[r];if(VE("prerelease compare",r,i,n),i===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(i===void 0)return-1;if(i===n)continue;return Ph(i,n)}while(++r)}inc(e,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r),this.inc("pre",r);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r),this.inc("pre",r);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{let i=this.prerelease.length;for(;--i>=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};qU.exports=_n});var bl=E((ntt,VU)=>{var{MAX_LENGTH:PCe}=Sh(),{re:_U,t:XU}=Ql(),ZU=bi(),DCe=kh(),RCe=(t,e)=>{if(e=DCe(e),t instanceof ZU)return t;if(typeof t!="string"||t.length>PCe||!(e.loose?_U[XU.LOOSE]:_U[XU.FULL]).test(t))return null;try{return new ZU(t,e)}catch(i){return null}};VU.exports=RCe});var e2=E((stt,$U)=>{var FCe=bl(),NCe=(t,e)=>{let r=FCe(t,e);return r?r.version:null};$U.exports=NCe});var r2=E((ott,t2)=>{var LCe=bl(),TCe=(t,e)=>{let r=LCe(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};t2.exports=TCe});var n2=E((att,i2)=>{var MCe=bi(),OCe=(t,e,r,i)=>{typeof r=="string"&&(i=r,r=void 0);try{return new MCe(t,r).inc(e,i).version}catch(n){return null}};i2.exports=OCe});var Xn=E((Att,s2)=>{var o2=bi(),KCe=(t,e,r)=>new o2(t,r).compare(new o2(e,r));s2.exports=KCe});var XE=E((ltt,a2)=>{var UCe=Xn(),HCe=(t,e,r)=>UCe(t,e,r)===0;a2.exports=HCe});var c2=E((ctt,A2)=>{var l2=bl(),GCe=XE(),jCe=(t,e)=>{if(GCe(t,e))return null;{let r=l2(t),i=l2(e),n=r.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in r)if((a==="major"||a==="minor"||a==="patch")&&r[a]!==i[a])return s+a;return o}};A2.exports=jCe});var g2=E((utt,u2)=>{var YCe=bi(),qCe=(t,e)=>new YCe(t,e).major;u2.exports=qCe});var h2=E((gtt,f2)=>{var JCe=bi(),WCe=(t,e)=>new JCe(t,e).minor;f2.exports=WCe});var d2=E((ftt,p2)=>{var zCe=bi(),VCe=(t,e)=>new zCe(t,e).patch;p2.exports=VCe});var m2=E((htt,C2)=>{var _Ce=bl(),XCe=(t,e)=>{let r=_Ce(t,e);return r&&r.prerelease.length?r.prerelease:null};C2.exports=XCe});var I2=E((ptt,E2)=>{var ZCe=Xn(),$Ce=(t,e,r)=>ZCe(e,t,r);E2.exports=$Ce});var w2=E((dtt,y2)=>{var eme=Xn(),tme=(t,e)=>eme(t,e,!0);y2.exports=tme});var ZE=E((Ctt,B2)=>{var Q2=bi(),rme=(t,e,r)=>{let i=new Q2(t,r),n=new Q2(e,r);return i.compare(n)||i.compareBuild(n)};B2.exports=rme});var v2=E((mtt,b2)=>{var ime=ZE(),nme=(t,e)=>t.sort((r,i)=>ime(r,i,e));b2.exports=nme});var x2=E((Ett,S2)=>{var sme=ZE(),ome=(t,e)=>t.sort((r,i)=>sme(i,r,e));S2.exports=ome});var Dh=E((Itt,k2)=>{var ame=Xn(),Ame=(t,e,r)=>ame(t,e,r)>0;k2.exports=Ame});var $E=E((ytt,P2)=>{var lme=Xn(),cme=(t,e,r)=>lme(t,e,r)<0;P2.exports=cme});var wv=E((wtt,D2)=>{var ume=Xn(),gme=(t,e,r)=>ume(t,e,r)!==0;D2.exports=gme});var eI=E((Btt,R2)=>{var fme=Xn(),hme=(t,e,r)=>fme(t,e,r)>=0;R2.exports=hme});var tI=E((Qtt,F2)=>{var pme=Xn(),dme=(t,e,r)=>pme(t,e,r)<=0;F2.exports=dme});var Bv=E((btt,N2)=>{var Cme=XE(),mme=wv(),Eme=Dh(),Ime=eI(),yme=$E(),wme=tI(),Bme=(t,e,r,i)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return Cme(t,r,i);case"!=":return mme(t,r,i);case">":return Eme(t,r,i);case">=":return Ime(t,r,i);case"<":return yme(t,r,i);case"<=":return wme(t,r,i);default:throw new TypeError(`Invalid operator: ${e}`)}};N2.exports=Bme});var T2=E((vtt,L2)=>{var Qme=bi(),bme=bl(),{re:rI,t:iI}=Ql(),vme=(t,e)=>{if(t instanceof Qme)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(rI[iI.COERCE]);else{let i;for(;(i=rI[iI.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||i.index+i[0].length!==r.index+r[0].length)&&(r=i),rI[iI.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;rI[iI.COERCERTL].lastIndex=-1}return r===null?null:bme(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,e)};L2.exports=vme});var O2=E((Stt,M2)=>{"use strict";M2.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Rh=E((xtt,K2)=>{"use strict";K2.exports=Pt;Pt.Node=vl;Pt.create=Pt;function Pt(t){var e=this;if(e instanceof Pt||(e=new Pt),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=e;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=t(r,i.value,n),i=i.next;return r};Pt.prototype.reduceReverse=function(t,e){var r,i=this.tail;if(arguments.length>1)r=e;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=t(r,i.value,n),i=i.prev;return r};Pt.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Pt.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Pt.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Pt;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>t;i--,n=n.prev)r.push(n.value);return r};Pt.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var i=0,n=this.head;n!==null&&i{"use strict";var Pme=Rh(),Sl=Symbol("max"),ra=Symbol("length"),uu=Symbol("lengthCalculator"),Fh=Symbol("allowStale"),xl=Symbol("maxAge"),ia=Symbol("dispose"),H2=Symbol("noDisposeOnSet"),si=Symbol("lruList"),ks=Symbol("cache"),G2=Symbol("updateAgeOnGet"),Qv=()=>1,j2=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[Sl]=e.max||Infinity,i=e.length||Qv;if(this[uu]=typeof i!="function"?Qv:i,this[Fh]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[xl]=e.maxAge||0,this[ia]=e.dispose,this[H2]=e.noDisposeOnSet||!1,this[G2]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[Sl]=e||Infinity,Nh(this)}get max(){return this[Sl]}set allowStale(e){this[Fh]=!!e}get allowStale(){return this[Fh]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[xl]=e,Nh(this)}get maxAge(){return this[xl]}set lengthCalculator(e){typeof e!="function"&&(e=Qv),e!==this[uu]&&(this[uu]=e,this[ra]=0,this[si].forEach(r=>{r.length=this[uu](r.value,r.key),this[ra]+=r.length})),Nh(this)}get lengthCalculator(){return this[uu]}get length(){return this[ra]}get itemCount(){return this[si].length}rforEach(e,r){r=r||this;for(let i=this[si].tail;i!==null;){let n=i.prev;q2(this,e,i,r),i=n}}forEach(e,r){r=r||this;for(let i=this[si].head;i!==null;){let n=i.next;q2(this,e,i,r),i=n}}keys(){return this[si].toArray().map(e=>e.key)}values(){return this[si].toArray().map(e=>e.value)}reset(){this[ia]&&this[si]&&this[si].length&&this[si].forEach(e=>this[ia](e.key,e.value)),this[ks]=new Map,this[si]=new Pme,this[ra]=0}dump(){return this[si].map(e=>nI(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[si]}set(e,r,i){if(i=i||this[xl],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[uu](r,e);if(this[ks].has(e)){if(s>this[Sl])return gu(this,this[ks].get(e)),!1;let l=this[ks].get(e).value;return this[ia]&&(this[H2]||this[ia](e,l.value)),l.now=n,l.maxAge=i,l.value=r,this[ra]+=s-l.length,l.length=s,this.get(e),Nh(this),!0}let o=new Y2(e,r,s,n,i);return o.length>this[Sl]?(this[ia]&&this[ia](e,r),!1):(this[ra]+=o.length,this[si].unshift(o),this[ks].set(e,this[si].head),Nh(this),!0)}has(e){if(!this[ks].has(e))return!1;let r=this[ks].get(e).value;return!nI(this,r)}get(e){return bv(this,e,!0)}peek(e){return bv(this,e,!1)}pop(){let e=this[si].tail;return e?(gu(this,e),e.value):null}del(e){gu(this,this[ks].get(e))}load(e){this.reset();let r=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-r;o>0&&this.set(n.k,n.v,o)}}}prune(){this[ks].forEach((e,r)=>bv(this,r,!1))}},bv=(t,e,r)=>{let i=t[ks].get(e);if(i){let n=i.value;if(nI(t,n)){if(gu(t,i),!t[Fh])return}else r&&(t[G2]&&(i.value.now=Date.now()),t[si].unshiftNode(i));return n.value}},nI=(t,e)=>{if(!e||!e.maxAge&&!t[xl])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[xl]&&r>t[xl]},Nh=t=>{if(t[ra]>t[Sl])for(let e=t[si].tail;t[ra]>t[Sl]&&e!==null;){let r=e.prev;gu(t,e),e=r}},gu=(t,e)=>{if(e){let r=e.value;t[ia]&&t[ia](r.key,r.value),t[ra]-=r.length,t[ks].delete(r.key),t[si].removeNode(e)}},Y2=class{constructor(e,r,i,n,s){this.key=e,this.value=r,this.length=i,this.now=n,this.maxAge=s||0}},q2=(t,e,r,i)=>{let n=r.value;nI(t,n)&&(gu(t,r),t[Fh]||(n=void 0)),n&&e.call(i,n.value,n.key,t)};U2.exports=j2});var Zn=E((Ptt,W2)=>{var fu=class{constructor(e,r){if(r=Dme(r),e instanceof fu)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new fu(e.raw,r);if(e instanceof vv)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!V2(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&Tme(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=z2.get(i);if(n)return n;let s=this.options.loose,o=s?vi[di.HYPHENRANGELOOSE]:vi[di.HYPHENRANGE];e=e.replace(o,Kme(this.options.includePrerelease)),Rr("hyphen replace",e),e=e.replace(vi[di.COMPARATORTRIM],Fme),Rr("comparator trim",e,vi[di.COMPARATORTRIM]),e=e.replace(vi[di.TILDETRIM],Nme),e=e.replace(vi[di.CARETTRIM],Lme),e=e.split(/\s+/).join(" ");let a=s?vi[di.COMPARATORLOOSE]:vi[di.COMPARATOR],l=e.split(" ").map(f=>Mme(f,this.options)).join(" ").split(/\s+/).map(f=>Ome(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new vv(f,this.options)),c=l.length,u=new Map;for(let f of l){if(V2(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return z2.set(i,g),g}intersects(e,r){if(!(e instanceof fu))throw new TypeError("a Range is required");return this.set.some(i=>_2(i,r)&&e.set.some(n=>_2(n,r)&&i.every(s=>n.every(o=>s.intersects(o,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new Rme(e,this.options)}catch(r){return!1}for(let r=0;rt.value==="<0.0.0-0",Tme=t=>t.value==="",_2=(t,e)=>{let r=!0,i=t.slice(),n=i.pop();for(;r&&i.length;)r=i.every(s=>n.intersects(s,e)),n=i.pop();return r},Mme=(t,e)=>(Rr("comp",t,e),t=jme(t,e),Rr("caret",t),t=Gme(t,e),Rr("tildes",t),t=Yme(t,e),Rr("xrange",t),t=qme(t,e),Rr("stars",t),t),Ji=t=>!t||t.toLowerCase()==="x"||t==="*",Gme=(t,e)=>t.trim().split(/\s+/).map(r=>Jme(r,e)).join(" "),Jme=(t,e)=>{let r=e.loose?vi[di.TILDELOOSE]:vi[di.TILDE];return t.replace(r,(i,n,s,o,a)=>{Rr("tilde",t,i,n,s,o,a);let l;return Ji(n)?l="":Ji(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:Ji(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(Rr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,Rr("tilde return",l),l})},jme=(t,e)=>t.trim().split(/\s+/).map(r=>Wme(r,e)).join(" "),Wme=(t,e)=>{Rr("caret",t,e);let r=e.loose?vi[di.CARETLOOSE]:vi[di.CARET],i=e.includePrerelease?"-0":"";return t.replace(r,(n,s,o,a,l)=>{Rr("caret",t,n,s,o,a,l);let c;return Ji(s)?c="":Ji(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Ji(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(Rr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(Rr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),Rr("caret return",c),c})},Yme=(t,e)=>(Rr("replaceXRanges",t,e),t.split(/\s+/).map(r=>zme(r,e)).join(" ")),zme=(t,e)=>{t=t.trim();let r=e.loose?vi[di.XRANGELOOSE]:vi[di.XRANGE];return t.replace(r,(i,n,s,o,a,l)=>{Rr("xRange",t,i,n,s,o,a,l);let c=Ji(s),u=c||Ji(o),g=u||Ji(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),Rr("xRange return",i),i})},qme=(t,e)=>(Rr("replaceStars",t,e),t.trim().replace(vi[di.STAR],"")),Ome=(t,e)=>(Rr("replaceGTE0",t,e),t.trim().replace(vi[e.includePrerelease?di.GTE0PRE:di.GTE0],"")),Kme=t=>(e,r,i,n,s,o,a,l,c,u,g,f,h)=>(Ji(i)?r="":Ji(n)?r=`>=${i}.0.0${t?"-0":""}`:Ji(s)?r=`>=${i}.${n}.0${t?"-0":""}`:o?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Ji(c)?l="":Ji(u)?l=`<${+c+1}.0.0-0`:Ji(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:t?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${r} ${l}`.trim()),Ume=(t,e,r)=>{for(let i=0;i0){let n=t[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Lh=E((Dtt,X2)=>{var Th=Symbol("SemVer ANY"),Mh=class{static get ANY(){return Th}constructor(e,r){if(r=Vme(r),e instanceof Mh){if(e.loose===!!r.loose)return e;e=e.value}xv("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===Th?this.value="":this.value=this.operator+this.semver.version,xv("comp",this)}parse(e){let r=this.options.loose?Z2[$2.COMPARATORLOOSE]:Z2[$2.COMPARATOR],i=e.match(r);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new eH(i[2],this.options.loose):this.semver=Th}toString(){return this.value}test(e){if(xv("Comparator.test",e,this.options.loose),this.semver===Th||e===Th)return!0;if(typeof e=="string")try{e=new eH(e,this.options)}catch(r){return!1}return Sv(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof Mh))throw new TypeError("a Comparator is required");if((!r||typeof r!="object")&&(r={loose:!!r,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new tH(e.value,r).test(this.value);if(e.operator==="")return e.value===""?!0:new tH(this.value,r).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=Sv(this.semver,"<",e.semver,r)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=Sv(this.semver,">",e.semver,r)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};X2.exports=Mh;var Vme=kh(),{re:Z2,t:$2}=Ql(),Sv=Bv(),xv=xh(),eH=bi(),tH=Zn()});var Oh=E((Rtt,rH)=>{var _me=Zn(),Xme=(t,e,r)=>{try{e=new _me(e,r)}catch(i){return!1}return e.test(t)};rH.exports=Xme});var nH=E((Ftt,iH)=>{var Zme=Zn(),$me=(t,e)=>new Zme(t,e).set.map(r=>r.map(i=>i.value).join(" ").trim().split(" "));iH.exports=$me});var oH=E((Ntt,sH)=>{var eEe=bi(),tEe=Zn(),rEe=(t,e,r)=>{let i=null,n=null,s=null;try{s=new tEe(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new eEe(i,r))}),i};sH.exports=rEe});var AH=E((Ltt,aH)=>{var iEe=bi(),nEe=Zn(),sEe=(t,e,r)=>{let i=null,n=null,s=null;try{s=new nEe(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new iEe(i,r))}),i};aH.exports=sEe});var uH=E((Ttt,lH)=>{var kv=bi(),oEe=Zn(),cH=Dh(),aEe=(t,e)=>{t=new oEe(t,e);let r=new kv("0.0.0");if(t.test(r)||(r=new kv("0.0.0-0"),t.test(r)))return r;r=null;for(let i=0;i{let a=new kv(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||cH(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!r||cH(r,s))&&(r=s)}return r&&t.test(r)?r:null};lH.exports=aEe});var fH=E((Mtt,gH)=>{var AEe=Zn(),lEe=(t,e)=>{try{return new AEe(t,e).range||"*"}catch(r){return null}};gH.exports=lEe});var sI=E((Ott,hH)=>{var cEe=bi(),pH=Lh(),{ANY:uEe}=pH,gEe=Zn(),fEe=Oh(),dH=Dh(),CH=$E(),hEe=tI(),pEe=eI(),dEe=(t,e,r,i)=>{t=new cEe(t,i),e=new gEe(e,i);let n,s,o,a,l;switch(r){case">":n=dH,s=hEe,o=CH,a=">",l=">=";break;case"<":n=CH,s=pEe,o=dH,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(fEe(t,e,i))return!1;for(let c=0;c{h.semver===uEe&&(h=new pH(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(t,f.semver))return!1;if(f.operator===l&&o(t,f.semver))return!1}return!0};hH.exports=dEe});var EH=E((Ktt,mH)=>{var CEe=sI(),mEe=(t,e,r)=>CEe(t,e,">",r);mH.exports=mEe});var yH=E((Utt,IH)=>{var EEe=sI(),IEe=(t,e,r)=>EEe(t,e,"<",r);IH.exports=IEe});var QH=E((Htt,wH)=>{var BH=Zn(),yEe=(t,e,r)=>(t=new BH(t,r),e=new BH(e,r),t.intersects(e));wH.exports=yEe});var vH=E((Gtt,bH)=>{var wEe=Oh(),BEe=Xn();bH.exports=(t,e,r)=>{let i=[],n=null,s=null,o=t.sort((u,g)=>BEe(u,g,r));for(let u of o)wEe(u,e,r)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var xH=Zn(),oI=Lh(),{ANY:Pv}=oI,Kh=Oh(),Dv=Xn(),bEe=(t,e,r={})=>{if(t===e)return!0;t=new xH(t,r),e=new xH(e,r);let i=!1;e:for(let n of t.set){for(let s of e.set){let o=QEe(n,s,r);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},QEe=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===Pv){if(e.length===1&&e[0].semver===Pv)return!0;r.includePrerelease?t=[new oI(">=0.0.0-0")]:t=[new oI(">=0.0.0")]}if(e.length===1&&e[0].semver===Pv){if(r.includePrerelease)return!0;e=[new oI(">=0.0.0")]}let i=new Set,n,s;for(let h of t)h.operator===">"||h.operator===">="?n=kH(n,h,r):h.operator==="<"||h.operator==="<="?s=PH(s,h,r):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=Dv(n.semver,s.semver,r),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!Kh(h,String(n),r)||s&&!Kh(h,String(s),r))return null;for(let p of e)if(!Kh(h,String(p),r))return!1;return!0}let a,l,c,u,g=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=kH(n,h,r),a===h&&a!==n)return!1}else if(n.operator===">="&&!Kh(n.semver,String(h),r))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=PH(s,h,r),l===h&&l!==s)return!1}else if(s.operator==="<="&&!Kh(s.semver,String(h),r))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},kH=(t,e,r)=>{if(!t)return e;let i=Dv(t.semver,e.semver,r);return i>0?t:i<0||e.operator===">"&&t.operator===">="?e:t},PH=(t,e,r)=>{if(!t)return e;let i=Dv(t.semver,e.semver,r);return i<0?t:i>0||e.operator==="<"&&t.operator==="<="?e:t};SH.exports=bEe});var Or=E((Ytt,RH)=>{var Rv=Ql();RH.exports={re:Rv.re,src:Rv.src,tokens:Rv.t,SEMVER_SPEC_VERSION:Sh().SEMVER_SPEC_VERSION,SemVer:bi(),compareIdentifiers:zE().compareIdentifiers,rcompareIdentifiers:zE().rcompareIdentifiers,parse:bl(),valid:e2(),clean:r2(),inc:n2(),diff:c2(),major:g2(),minor:h2(),patch:d2(),prerelease:m2(),compare:Xn(),rcompare:I2(),compareLoose:w2(),compareBuild:ZE(),sort:v2(),rsort:x2(),gt:Dh(),lt:$E(),eq:XE(),neq:wv(),gte:eI(),lte:tI(),cmp:Bv(),coerce:T2(),Comparator:Lh(),Range:Zn(),satisfies:Oh(),toComparators:nH(),maxSatisfying:oH(),minSatisfying:AH(),minVersion:uH(),validRange:fH(),outside:sI(),gtr:EH(),ltr:yH(),intersects:QH(),simplifyRange:vH(),subset:DH()}});var Uv=E(AI=>{"use strict";Object.defineProperty(AI,"__esModule",{value:!0});AI.VERSION=void 0;AI.VERSION="9.1.0"});var Dt=E((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(t,e,r){if(r||arguments.length===2)for(var i=0,n=e.length,s;i{(function(t,e){typeof define=="function"&&define.amd?define([],e):typeof lI=="object"&&lI.exports?lI.exports=e():t.regexpToAst=e()})(typeof self!="undefined"?self:YH,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},t.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var d=this.disjunction();this.consumeChar("/");for(var m={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(m,"global");break;case"i":o(m,"ignoreCase");break;case"m":o(m,"multiLine");break;case"u":o(m,"unicode");break;case"y":o(m,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:m,value:d,loc:this.loc(0)}},t.prototype.disjunction=function(){var p=[],d=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(d)}},t.prototype.alternative=function(){for(var p=[],d=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(d)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var d;switch(this.popChar()){case"=":d="Lookahead";break;case"!":d="NegativeLookahead";break}a(d);var m=this.disjunction();return this.consumeChar(")"),{type:d,value:m,loc:this.loc(p)}}l()},t.prototype.quantifier=function(p){var d,m=this.idx;switch(this.popChar()){case"*":d={atLeast:0,atMost:Infinity};break;case"+":d={atLeast:1,atMost:Infinity};break;case"?":d={atLeast:0,atMost:1};break;case"{":var I=this.integerIncludingZero();switch(this.popChar()){case"}":d={atLeast:I,atMost:I};break;case",":var B;this.isDigit()?(B=this.integerIncludingZero(),d={atLeast:I,atMost:B}):d={atLeast:I,atMost:Infinity},this.consumeChar("}");break}if(p===!0&&d===void 0)return;a(d);break}if(!(p===!0&&d===void 0))return a(d),this.peekChar(0)==="?"?(this.consumeChar("?"),d.greedy=!1):d.greedy=!0,d.type="Quantifier",d.loc=this.loc(m),d},t.prototype.atom=function(){var p,d=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(d),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},t.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` -`),n("\r"),n("\u2028"),n("\u2029")]}},t.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},t.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},t.prototype.characterClassEscape=function(){var p,d=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,d=!0;break;case"s":p=f;break;case"S":p=f,d=!0;break;case"w":p=g;break;case"W":p=g,d=!0;break}return a(p),{type:"Set",value:p,complement:d}},t.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` -`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},t.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var d=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:d}},t.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},t.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},t.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},t.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},t.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` -`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},t.prototype.characterClass=function(){var p=[],d=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),d=!0);this.isClassAtom();){var m=this.classAtom(),I=m.type==="Character";if(I&&this.isRangeDash()){this.consumeChar("-");var B=this.classAtom(),b=B.type==="Character";if(b){if(B.value=this.input.length)throw Error("Unexpected end of input");this.idx++},t.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,r=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,d){p.length!==void 0?p.forEach(function(m){d.push(m)}):d.push(p)}function o(p,d){if(p[d]===!0)throw"duplicate flag "+d;p[d]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` -`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var d in p){var m=p[d];p.hasOwnProperty(d)&&(m.type!==void 0?this.visit(m):Array.isArray(m)&&m.forEach(function(I){this.visit(I)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:t,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var gI=E(Eu=>{"use strict";Object.defineProperty(Eu,"__esModule",{value:!0});Eu.clearRegExpParserCache=Eu.getRegExpAst=void 0;var FEe=cI(),uI={},NEe=new FEe.RegExpParser;function LEe(t){var e=t.toString();if(uI.hasOwnProperty(e))return uI[e];var r=NEe.pattern(e);return uI[e]=r,r}Eu.getRegExpAst=LEe;function TEe(){uI={}}Eu.clearRegExpParserCache=TEe});var VH=E(fn=>{"use strict";var MEe=fn&&fn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(fn,"__esModule",{value:!0});fn.canMatchCharCode=fn.firstCharOptimizedIndices=fn.getOptimizedStartCodesIndices=fn.failedOptimizationPrefixMsg=void 0;var qH=cI(),$n=Dt(),JH=gI(),sa=Hv(),WH="Complement Sets are not supported for first char optimization";fn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: -`;function OEe(t,e){e===void 0&&(e=!1);try{var r=(0,JH.getRegExpAst)(t),i=fI(r.value,{},r.flags.ignoreCase);return i}catch(s){if(s.message===WH)e&&(0,$n.PRINT_WARNING)(""+fn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+t.toString()+` > -`)+` Complement Sets cannot be automatically optimized. - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,$n.PRINT_ERROR)(fn.failedOptimizationPrefixMsg+` -`+(" Failed parsing: < "+t.toString()+` > -`)+(" Using the regexp-to-ast library version: "+qH.VERSION+` -`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}fn.getOptimizedStartCodesIndices=OEe;function fI(t,e,r){switch(t.type){case"Disjunction":for(var i=0;i=sa.minOptimizationVal)for(var f=u.from>=sa.minOptimizationVal?u.from:sa.minOptimizationVal,h=u.to,p=(0,sa.charCodeToOptimizedIndex)(f),d=(0,sa.charCodeToOptimizedIndex)(h),m=p;m<=d;m++)e[m]=m}}});break;case"Group":fI(o.value,e,r);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&Gv(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,$n.values)(e)}fn.firstCharOptimizedIndices=fI;function hI(t,e,r){var i=(0,sa.charCodeToOptimizedIndex)(t);e[i]=i,r===!0&&KEe(t,e)}function KEe(t,e){var r=String.fromCharCode(t),i=r.toUpperCase();if(i!==r){var n=(0,sa.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=r.toLowerCase();if(s!==r){var n=(0,sa.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function zH(t,e){return(0,$n.find)(t.value,function(r){if(typeof r=="number")return(0,$n.contains)(e,r);var i=r;return(0,$n.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function Gv(t){return t.quantifier&&t.quantifier.atLeast===0?!0:t.value?(0,$n.isArray)(t.value)?(0,$n.every)(t.value,Gv):Gv(t.value):!1}var UEe=function(t){MEe(e,t);function e(r){var i=t.call(this)||this;return i.targetCharCodes=r,i.found=!1,i}return e.prototype.visitChildren=function(r){if(this.found!==!0){switch(r.type){case"Lookahead":this.visitLookahead(r);return;case"NegativeLookahead":this.visitNegativeLookahead(r);return}t.prototype.visitChildren.call(this,r)}},e.prototype.visitCharacter=function(r){(0,$n.contains)(this.targetCharCodes,r.value)&&(this.found=!0)},e.prototype.visitSet=function(r){r.complement?zH(r,this.targetCharCodes)===void 0&&(this.found=!0):zH(r,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(qH.BaseRegExpVisitor);function HEe(t,e){if(e instanceof RegExp){var r=(0,JH.getRegExpAst)(e),i=new UEe(t);return i.visit(r),i.found}else return(0,$n.find)(e,function(n){return(0,$n.contains)(t,n.charCodeAt(0))})!==void 0}fn.canMatchCharCode=HEe});var Hv=E(je=>{"use strict";var _H=je&&je.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(je,"__esModule",{value:!0});je.charCodeToOptimizedIndex=je.minOptimizationVal=je.buildLineBreakIssueMessage=je.LineTerminatorOptimizedTester=je.isShortPattern=je.isCustomPattern=je.cloneEmptyGroups=je.performWarningRuntimeChecks=je.performRuntimeChecks=je.addStickyFlag=je.addStartOfInput=je.findUnreachablePatterns=je.findModesThatDoNotExist=je.findInvalidGroupType=je.findDuplicatePatterns=je.findUnsupportedFlags=je.findStartOfInputAnchor=je.findEmptyMatchRegExps=je.findEndOfInputAnchor=je.findInvalidPatterns=je.findMissingPatterns=je.validatePatterns=je.analyzeTokenTypes=je.enableSticky=je.disableSticky=je.SUPPORT_STICKY=je.MODES=je.DEFAULT_MODE=void 0;var XH=cI(),zt=Gh(),Ie=Dt(),Iu=VH(),ZH=gI(),ao="PATTERN";je.DEFAULT_MODE="defaultMode";je.MODES="modes";je.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function GEe(){je.SUPPORT_STICKY=!1}je.disableSticky=GEe;function jEe(){je.SUPPORT_STICKY=!0}je.enableSticky=jEe;function qEe(t,e){e=(0,Ie.defaults)(e,{useSticky:je.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:function(B,b){return b()}});var r=e.tracer;r("initCharCodeToOptimizedIndexMap",function(){YEe()});var i;r("Reject Lexer.NA",function(){i=(0,Ie.reject)(t,function(B){return B[ao]===zt.Lexer.NA})});var n=!1,s;r("Transform Patterns",function(){n=!1,s=(0,Ie.map)(i,function(B){var b=B[ao];if((0,Ie.isRegExp)(b)){var R=b.source;return R.length===1&&R!=="^"&&R!=="$"&&R!=="."&&!b.ignoreCase?R:R.length===2&&R[0]==="\\"&&!(0,Ie.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],R[1])?R[1]:e.useSticky?Yv(b):jv(b)}else{if((0,Ie.isFunction)(b))return n=!0,{exec:b};if((0,Ie.has)(b,"exec"))return n=!0,b;if(typeof b=="string"){if(b.length===1)return b;var H=b.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),L=new RegExp(H);return e.useSticky?Yv(L):jv(L)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;r("misc mapping",function(){o=(0,Ie.map)(i,function(B){return B.tokenTypeIdx}),a=(0,Ie.map)(i,function(B){var b=B.GROUP;if(b!==zt.Lexer.SKIPPED){if((0,Ie.isString)(b))return b;if((0,Ie.isUndefined)(b))return!1;throw Error("non exhaustive match")}}),l=(0,Ie.map)(i,function(B){var b=B.LONGER_ALT;if(b){var R=(0,Ie.isArray)(b)?(0,Ie.map)(b,function(H){return(0,Ie.indexOf)(i,H)}):[(0,Ie.indexOf)(i,b)];return R}}),c=(0,Ie.map)(i,function(B){return B.PUSH_MODE}),u=(0,Ie.map)(i,function(B){return(0,Ie.has)(B,"POP_MODE")})});var g;r("Line Terminator Handling",function(){var B=tG(e.lineTerminatorCharacters);g=(0,Ie.map)(i,function(b){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,Ie.map)(i,function(b){if((0,Ie.has)(b,"LINE_BREAKS"))return b.LINE_BREAKS;if(eG(b,B)===!1)return(0,Iu.canMatchCharCode)(B,b.PATTERN)}))});var f,h,p,d;r("Misc Mapping #2",function(){f=(0,Ie.map)(i,qv),h=(0,Ie.map)(s,$H),p=(0,Ie.reduce)(i,function(B,b){var R=b.GROUP;return(0,Ie.isString)(R)&&R!==zt.Lexer.SKIPPED&&(B[R]=[]),B},{}),d=(0,Ie.map)(s,function(B,b){return{pattern:s[b],longerAlt:l[b],canLineTerminator:g[b],isCustom:f[b],short:h[b],group:a[b],push:c[b],pop:u[b],tokenTypeIdx:o[b],tokenType:i[b]}})});var m=!0,I=[];return e.safeMode||r("First Char Optimization",function(){I=(0,Ie.reduce)(i,function(B,b,R){if(typeof b.PATTERN=="string"){var H=b.PATTERN.charCodeAt(0),L=Wv(H);Jv(B,L,d[R])}else if((0,Ie.isArray)(b.START_CHARS_HINT)){var K;(0,Ie.forEach)(b.START_CHARS_HINT,function(ne){var q=typeof ne=="string"?ne.charCodeAt(0):ne,A=Wv(q);K!==A&&(K=A,Jv(B,A,d[R]))})}else if((0,Ie.isRegExp)(b.PATTERN))if(b.PATTERN.unicode)m=!1,e.ensureOptimizations&&(0,Ie.PRINT_ERROR)(""+Iu.failedOptimizationPrefixMsg+(" Unable to analyze < "+b.PATTERN.toString()+` > pattern. -`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. - This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var J=(0,Iu.getOptimizedStartCodesIndices)(b.PATTERN,e.ensureOptimizations);(0,Ie.isEmpty)(J)&&(m=!1),(0,Ie.forEach)(J,function(ne){Jv(B,ne,d[R])})}else e.ensureOptimizations&&(0,Ie.PRINT_ERROR)(""+Iu.failedOptimizationPrefixMsg+(" TokenType: <"+b.name+`> is using a custom token pattern without providing parameter. -`)+` This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),m=!1;return B},[])}),r("ArrayPacking",function(){I=(0,Ie.packArray)(I)}),{emptyGroups:p,patternIdxToConfig:d,charCodeToPatternIdxToConfig:I,hasCustom:n,canBeOptimized:m}}je.analyzeTokenTypes=qEe;function WEe(t,e){var r=[],i=rG(t);r=r.concat(i.errors);var n=iG(i.valid),s=n.valid;return r=r.concat(n.errors),r=r.concat(JEe(s)),r=r.concat(nG(s)),r=r.concat(sG(s,e)),r=r.concat(oG(s)),r}je.validatePatterns=WEe;function JEe(t){var e=[],r=(0,Ie.filter)(t,function(i){return(0,Ie.isRegExp)(i[ao])});return e=e.concat(aG(r)),e=e.concat(lG(r)),e=e.concat(cG(r)),e=e.concat(uG(r)),e=e.concat(AG(r)),e}function rG(t){var e=(0,Ie.filter)(t,function(n){return!(0,Ie.has)(n,ao)}),r=(0,Ie.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:zt.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,Ie.difference)(t,e);return{errors:r,valid:i}}je.findMissingPatterns=rG;function iG(t){var e=(0,Ie.filter)(t,function(n){var s=n[ao];return!(0,Ie.isRegExp)(s)&&!(0,Ie.isFunction)(s)&&!(0,Ie.has)(s,"exec")&&!(0,Ie.isString)(s)}),r=(0,Ie.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:zt.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,Ie.difference)(t,e);return{errors:r,valid:i}}je.findInvalidPatterns=iG;var zEe=/[^\\][\$]/;function aG(t){var e=function(n){_H(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(XH.BaseRegExpVisitor),r=(0,Ie.filter)(t,function(n){var s=n[ao];try{var o=(0,ZH.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch(l){return zEe.test(s.source)}}),i=(0,Ie.map)(r,function(n){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:zt.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}je.findEndOfInputAnchor=aG;function AG(t){var e=(0,Ie.filter)(t,function(i){var n=i[ao];return n.test("")}),r=(0,Ie.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:zt.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return r}je.findEmptyMatchRegExps=AG;var VEe=/[^\\[][\^]|^\^/;function lG(t){var e=function(n){_H(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(XH.BaseRegExpVisitor),r=(0,Ie.filter)(t,function(n){var s=n[ao];try{var o=(0,ZH.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch(l){return VEe.test(s.source)}}),i=(0,Ie.map)(r,function(n){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:zt.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}je.findStartOfInputAnchor=lG;function cG(t){var e=(0,Ie.filter)(t,function(i){var n=i[ao];return n instanceof RegExp&&(n.multiline||n.global)}),r=(0,Ie.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:zt.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return r}je.findUnsupportedFlags=cG;function uG(t){var e=[],r=(0,Ie.map)(t,function(s){return(0,Ie.reduce)(t,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,Ie.contains)(e,a)&&a.PATTERN!==zt.Lexer.NA&&(e.push(a),o.push(a)),o},[])});r=(0,Ie.compact)(r);var i=(0,Ie.filter)(r,function(s){return s.length>1}),n=(0,Ie.map)(i,function(s){var o=(0,Ie.map)(s,function(l){return l.name}),a=(0,Ie.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:zt.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}je.findDuplicatePatterns=uG;function nG(t){var e=(0,Ie.filter)(t,function(i){if(!(0,Ie.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==zt.Lexer.SKIPPED&&n!==zt.Lexer.NA&&!(0,Ie.isString)(n)}),r=(0,Ie.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:zt.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return r}je.findInvalidGroupType=nG;function sG(t,e){var r=(0,Ie.filter)(t,function(n){return n.PUSH_MODE!==void 0&&!(0,Ie.contains)(e,n.PUSH_MODE)}),i=(0,Ie.map)(r,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:zt.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}je.findModesThatDoNotExist=sG;function oG(t){var e=[],r=(0,Ie.reduce)(t,function(i,n,s){var o=n.PATTERN;return o===zt.Lexer.NA||((0,Ie.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,Ie.isRegExp)(o)&&XEe(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,Ie.forEach)(t,function(i,n){(0,Ie.forEach)(r,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:zt.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}je.findUnreachablePatterns=oG;function _Ee(t,e){if((0,Ie.isRegExp)(e)){var r=e.exec(t);return r!==null&&r.index===0}else{if((0,Ie.isFunction)(e))return e(t,0,[],{});if((0,Ie.has)(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function XEe(t){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,Ie.find)(e,function(r){return t.source.indexOf(r)!==-1})===void 0}function jv(t){var e=t.ignoreCase?"i":"";return new RegExp("^(?:"+t.source+")",e)}je.addStartOfInput=jv;function Yv(t){var e=t.ignoreCase?"iy":"y";return new RegExp(""+t.source,e)}je.addStickyFlag=Yv;function ZEe(t,e,r){var i=[];return(0,Ie.has)(t,je.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+je.DEFAULT_MODE+`> property in its definition -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,Ie.has)(t,je.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+je.MODES+`> property in its definition -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,Ie.has)(t,je.MODES)&&(0,Ie.has)(t,je.DEFAULT_MODE)&&!(0,Ie.has)(t.modes,t.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+je.DEFAULT_MODE+": <"+t.defaultMode+`>which does not exist -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,Ie.has)(t,je.MODES)&&(0,Ie.forEach)(t.modes,function(n,s){(0,Ie.forEach)(n,function(o,a){(0,Ie.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> -`),type:zt.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}je.performRuntimeChecks=ZEe;function $Ee(t,e,r){var i=[],n=!1,s=(0,Ie.compact)((0,Ie.flatten)((0,Ie.mapValues)(t.modes,function(l){return l}))),o=(0,Ie.reject)(s,function(l){return l[ao]===zt.Lexer.NA}),a=tG(r);return e&&(0,Ie.forEach)(o,function(l){var c=eG(l,a);if(c!==!1){var u=gG(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,Ie.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,Iu.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. - This Lexer has been defined to track line and column information, - But none of the Token Types can be identified as matching a line terminator. - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`,type:zt.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}je.performWarningRuntimeChecks=$Ee;function eIe(t){var e={},r=(0,Ie.keys)(t);return(0,Ie.forEach)(r,function(i){var n=t[i];if((0,Ie.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}je.cloneEmptyGroups=eIe;function qv(t){var e=t.PATTERN;if((0,Ie.isRegExp)(e))return!1;if((0,Ie.isFunction)(e))return!0;if((0,Ie.has)(e,"exec"))return!0;if((0,Ie.isString)(e))return!1;throw Error("non exhaustive match")}je.isCustomPattern=qv;function $H(t){return(0,Ie.isString)(t)&&t.length===1?t.charCodeAt(0):!1}je.isShortPattern=$H;je.LineTerminatorOptimizedTester={test:function(t){for(var e=t.length,r=this.lastIndex;r Token Type -`)+(" Root cause: "+e.errMsg+`. -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===zt.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. -`+(" The problem is in the <"+t.name+`> Token Type -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}je.buildLineBreakIssueMessage=gG;function tG(t){var e=(0,Ie.map)(t,function(r){return(0,Ie.isString)(r)&&r.length>0?r.charCodeAt(0):r});return e}function Jv(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}je.minOptimizationVal=256;var pI=[];function Wv(t){return t255?255+~~(t/255):t}}});var yu=E(Bt=>{"use strict";Object.defineProperty(Bt,"__esModule",{value:!0});Bt.isTokenType=Bt.hasExtendingTokensTypesMapProperty=Bt.hasExtendingTokensTypesProperty=Bt.hasCategoriesProperty=Bt.hasShortKeyProperty=Bt.singleAssignCategoriesToksMap=Bt.assignCategoriesMapProp=Bt.assignCategoriesTokensProp=Bt.assignTokenDefaultProps=Bt.expandCategories=Bt.augmentTokenTypes=Bt.tokenIdxToClass=Bt.tokenShortNameIdx=Bt.tokenStructuredMatcherNoCategories=Bt.tokenStructuredMatcher=void 0;var Kr=Dt();function tIe(t,e){var r=t.tokenTypeIdx;return r===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[r]===!0}Bt.tokenStructuredMatcher=tIe;function rIe(t,e){return t.tokenTypeIdx===e.tokenTypeIdx}Bt.tokenStructuredMatcherNoCategories=rIe;Bt.tokenShortNameIdx=1;Bt.tokenIdxToClass={};function iIe(t){var e=fG(t);hG(e),dG(e),pG(e),(0,Kr.forEach)(e,function(r){r.isParent=r.categoryMatches.length>0})}Bt.augmentTokenTypes=iIe;function fG(t){for(var e=(0,Kr.cloneArr)(t),r=t,i=!0;i;){r=(0,Kr.compact)((0,Kr.flatten)((0,Kr.map)(r,function(s){return s.CATEGORIES})));var n=(0,Kr.difference)(r,e);e=e.concat(n),(0,Kr.isEmpty)(n)?i=!1:r=n}return e}Bt.expandCategories=fG;function hG(t){(0,Kr.forEach)(t,function(e){CG(e)||(Bt.tokenIdxToClass[Bt.tokenShortNameIdx]=e,e.tokenTypeIdx=Bt.tokenShortNameIdx++),zv(e)&&!(0,Kr.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),zv(e)||(e.CATEGORIES=[]),mG(e)||(e.categoryMatches=[]),EG(e)||(e.categoryMatchesMap={})})}Bt.assignTokenDefaultProps=hG;function pG(t){(0,Kr.forEach)(t,function(e){e.categoryMatches=[],(0,Kr.forEach)(e.categoryMatchesMap,function(r,i){e.categoryMatches.push(Bt.tokenIdxToClass[i].tokenTypeIdx)})})}Bt.assignCategoriesTokensProp=pG;function dG(t){(0,Kr.forEach)(t,function(e){Vv([],e)})}Bt.assignCategoriesMapProp=dG;function Vv(t,e){(0,Kr.forEach)(t,function(r){e.categoryMatchesMap[r.tokenTypeIdx]=!0}),(0,Kr.forEach)(e.CATEGORIES,function(r){var i=t.concat(e);(0,Kr.contains)(i,r)||Vv(i,r)})}Bt.singleAssignCategoriesToksMap=Vv;function CG(t){return(0,Kr.has)(t,"tokenTypeIdx")}Bt.hasShortKeyProperty=CG;function zv(t){return(0,Kr.has)(t,"CATEGORIES")}Bt.hasCategoriesProperty=zv;function mG(t){return(0,Kr.has)(t,"categoryMatches")}Bt.hasExtendingTokensTypesProperty=mG;function EG(t){return(0,Kr.has)(t,"categoryMatchesMap")}Bt.hasExtendingTokensTypesMapProperty=EG;function nIe(t){return(0,Kr.has)(t,"tokenTypeIdx")}Bt.isTokenType=nIe});var _v=E(dI=>{"use strict";Object.defineProperty(dI,"__esModule",{value:!0});dI.defaultLexerErrorProvider=void 0;dI.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(t){return"Unable to pop Lexer Mode after encountering Token ->"+t.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(t,e,r,i,n){return"unexpected character: ->"+t.charAt(e)+"<- at offset: "+e+","+(" skipped "+r+" characters.")}}});var Gh=E(Rl=>{"use strict";Object.defineProperty(Rl,"__esModule",{value:!0});Rl.Lexer=Rl.LexerDefinitionErrorType=void 0;var Ps=Hv(),Vt=Dt(),sIe=yu(),oIe=_v(),aIe=gI(),AIe;(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(AIe=Rl.LexerDefinitionErrorType||(Rl.LexerDefinitionErrorType={}));var jh={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` -`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:oIe.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(jh);var lIe=function(){function t(e,r){var i=this;if(r===void 0&&(r=jh),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`);this.config=(0,Vt.merge)(jh,r);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=Infinity,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===jh.lineTerminatorsPattern)i.config.lineTerminatorsPattern=Ps.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===jh.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(r.safeMode&&r.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,Vt.isArray)(e)?(s={modes:{}},s.modes[Ps.DEFAULT_MODE]=(0,Vt.cloneArr)(e),s[Ps.DEFAULT_MODE]=Ps.DEFAULT_MODE):(o=!1,s=(0,Vt.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Ps.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,Ps.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,Vt.forEach)(s.modes,function(u,g){s.modes[g]=(0,Vt.reject)(u,function(f){return(0,Vt.isUndefined)(f)})});var a=(0,Vt.keys)(s.modes);if((0,Vt.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Ps.validatePatterns)(u,a))}),(0,Vt.isEmpty)(i.lexerDefinitionErrors)){(0,sIe.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,Ps.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,Vt.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,Vt.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,Vt.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- -`);throw new Error(`Errors detected in definition of Lexer: -`+c)}(0,Vt.forEach)(i.lexerDefinitionWarning,function(u){(0,Vt.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(Ps.SUPPORT_STICKY?(i.chopInput=Vt.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=Vt.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=Vt.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=Vt.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=Vt.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,Vt.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(r.ensureOptimizations&&!(0,Vt.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. - Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,aIe.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,Vt.toFastProperties)(i)})})}return t.prototype.tokenize=function(e,r){if(r===void 0&&(r=this.defaultMode),!(0,Vt.isEmpty)(this.lexerDefinitionErrors)){var i=(0,Vt.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- -`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -`+n)}var s=this.tokenizeInternal(e,r);return s},t.prototype.tokenizeInternal=function(e,r){var i=this,n,s,o,a,l,c,u,g,f,h,p,d,m,I,B,b,R=e,H=R.length,L=0,K=0,J=this.hasCustom?0:Math.floor(e.length/10),ne=new Array(J),q=[],A=this.trackStartLines?1:void 0,V=this.trackStartLines?1:void 0,W=(0,Ps.cloneEmptyGroups)(this.emptyGroups),X=this.trackStartLines,F=this.config.lineTerminatorsPattern,D=0,he=[],pe=[],Ne=[],Pe=[];Object.freeze(Pe);var qe=void 0;function re(){return he}function se(wr){var Ui=(0,Ps.charCodeToOptimizedIndex)(wr),ws=pe[Ui];return ws===void 0?Pe:ws}var be=function(wr){if(Ne.length===1&&wr.tokenType.PUSH_MODE===void 0){var Ui=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(wr);q.push({offset:wr.startOffset,line:wr.startLine!==void 0?wr.startLine:void 0,column:wr.startColumn!==void 0?wr.startColumn:void 0,length:wr.image.length,message:Ui})}else{Ne.pop();var ws=(0,Vt.last)(Ne);he=i.patternIdxToConfig[ws],pe=i.charCodeToPatternIdxToConfig[ws],D=he.length;var Tf=i.canModeBeOptimized[ws]&&i.config.safeMode===!1;pe&&Tf?qe=se:qe=re}};function ae(wr){Ne.push(wr),pe=this.charCodeToPatternIdxToConfig[wr],he=this.patternIdxToConfig[wr],D=he.length,D=he.length;var Ui=this.canModeBeOptimized[wr]&&this.config.safeMode===!1;pe&&Ui?qe=se:qe=re}ae.call(this,r);for(var Ae;Lc.length){c=a,u=g,Ae=Oe;break}}}break}}if(c!==null){if(f=c.length,h=Ae.group,h!==void 0&&(p=Ae.tokenTypeIdx,d=this.createTokenInstance(c,L,p,Ae.tokenType,A,V,f),this.handlePayload(d,u),h===!1?K=this.addToken(ne,K,d):W[h].push(d)),e=this.chopInput(e,f),L=L+f,V=this.computeNewColumn(V,f),X===!0&&Ae.canLineTerminator===!0){var dt=0,ri=void 0,ii=void 0;F.lastIndex=0;do ri=F.test(c),ri===!0&&(ii=F.lastIndex-1,dt++);while(ri===!0);dt!==0&&(A=A+dt,V=f-ii,this.updateTokenEndLineColumnLocation(d,h,ii,dt,A,V,f))}this.handleModes(Ae,be,ae,d)}else{for(var an=L,yr=A,Ki=V,Qi=!1;!Qi&&L <"+e+">");var n=(0,Vt.timer)(r),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return r()},t.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",t.NA=/NOT_APPLICABLE/,t}();Rl.Lexer=lIe});var nA=E(Ci=>{"use strict";Object.defineProperty(Ci,"__esModule",{value:!0});Ci.tokenMatcher=Ci.createTokenInstance=Ci.EOF=Ci.createToken=Ci.hasTokenLabel=Ci.tokenName=Ci.tokenLabel=void 0;var Ds=Dt(),cIe=Gh(),Xv=yu();function uIe(t){return IG(t)?t.LABEL:t.name}Ci.tokenLabel=uIe;function gIe(t){return t.name}Ci.tokenName=gIe;function IG(t){return(0,Ds.isString)(t.LABEL)&&t.LABEL!==""}Ci.hasTokenLabel=IG;var fIe="parent",yG="categories",wG="label",BG="group",QG="push_mode",bG="pop_mode",vG="longer_alt",SG="line_breaks",xG="start_chars_hint";function kG(t){return hIe(t)}Ci.createToken=kG;function hIe(t){var e=t.pattern,r={};if(r.name=t.name,(0,Ds.isUndefined)(e)||(r.PATTERN=e),(0,Ds.has)(t,fIe))throw`The parent property is no longer supported. -See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,Ds.has)(t,yG)&&(r.CATEGORIES=t[yG]),(0,Xv.augmentTokenTypes)([r]),(0,Ds.has)(t,wG)&&(r.LABEL=t[wG]),(0,Ds.has)(t,BG)&&(r.GROUP=t[BG]),(0,Ds.has)(t,bG)&&(r.POP_MODE=t[bG]),(0,Ds.has)(t,QG)&&(r.PUSH_MODE=t[QG]),(0,Ds.has)(t,vG)&&(r.LONGER_ALT=t[vG]),(0,Ds.has)(t,SG)&&(r.LINE_BREAKS=t[SG]),(0,Ds.has)(t,xG)&&(r.START_CHARS_HINT=t[xG]),r}Ci.EOF=kG({name:"EOF",pattern:cIe.Lexer.NA});(0,Xv.augmentTokenTypes)([Ci.EOF]);function pIe(t,e,r,i,n,s,o,a){return{image:e,startOffset:r,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:t.tokenTypeIdx,tokenType:t}}Ci.createTokenInstance=pIe;function dIe(t,e){return(0,Xv.tokenStructuredMatcher)(t,e)}Ci.tokenMatcher=dIe});var hn=E(Tt=>{"use strict";var oa=Tt&&Tt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Tt,"__esModule",{value:!0});Tt.serializeProduction=Tt.serializeGrammar=Tt.Terminal=Tt.Alternation=Tt.RepetitionWithSeparator=Tt.Repetition=Tt.RepetitionMandatoryWithSeparator=Tt.RepetitionMandatory=Tt.Option=Tt.Alternative=Tt.Rule=Tt.NonTerminal=Tt.AbstractProduction=void 0;var $t=Dt(),CIe=nA(),Ao=function(){function t(e){this._definition=e}return Object.defineProperty(t.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),t.prototype.accept=function(e){e.visit(this),(0,$t.forEach)(this.definition,function(r){r.accept(e)})},t}();Tt.AbstractProduction=Ao;var PG=function(t){oa(e,t);function e(r){var i=t.call(this,[])||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(r){},enumerable:!1,configurable:!0}),e.prototype.accept=function(r){r.visit(this)},e}(Ao);Tt.NonTerminal=PG;var DG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.orgText="",(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Rule=DG;var RG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.ignoreAmbiguities=!1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Alternative=RG;var FG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Option=FG;var NG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionMandatory=NG;var LG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionMandatoryWithSeparator=LG;var TG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Repetition=TG;var MG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionWithSeparator=MG;var OG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(r){this._definition=r},enumerable:!1,configurable:!0}),e}(Ao);Tt.Alternation=OG;var CI=function(){function t(e){this.idx=1,(0,$t.assign)(this,(0,$t.pick)(e,function(r){return r!==void 0}))}return t.prototype.accept=function(e){e.visit(this)},t}();Tt.Terminal=CI;function mIe(t){return(0,$t.map)(t,Yh)}Tt.serializeGrammar=mIe;function Yh(t){function e(s){return(0,$t.map)(s,Yh)}if(t instanceof PG){var r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return(0,$t.isString)(t.label)&&(r.label=t.label),r}else{if(t instanceof RG)return{type:"Alternative",definition:e(t.definition)};if(t instanceof FG)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof NG)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof LG)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:Yh(new CI({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof MG)return{type:"RepetitionWithSeparator",idx:t.idx,separator:Yh(new CI({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof TG)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof OG)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof CI){var i={type:"Terminal",name:t.terminalType.name,label:(0,CIe.tokenLabel)(t.terminalType),idx:t.idx};(0,$t.isString)(t.label)&&(i.terminalLabel=t.label);var n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(i.pattern=(0,$t.isRegExp)(n)?n.source:n),i}else{if(t instanceof DG)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}Tt.serializeProduction=Yh});var EI=E(mI=>{"use strict";Object.defineProperty(mI,"__esModule",{value:!0});mI.RestWalker=void 0;var Zv=Dt(),pn=hn(),EIe=function(){function t(){}return t.prototype.walk=function(e,r){var i=this;r===void 0&&(r=[]),(0,Zv.forEach)(e.definition,function(n,s){var o=(0,Zv.drop)(e.definition,s+1);if(n instanceof pn.NonTerminal)i.walkProdRef(n,o,r);else if(n instanceof pn.Terminal)i.walkTerminal(n,o,r);else if(n instanceof pn.Alternative)i.walkFlat(n,o,r);else if(n instanceof pn.Option)i.walkOption(n,o,r);else if(n instanceof pn.RepetitionMandatory)i.walkAtLeastOne(n,o,r);else if(n instanceof pn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,r);else if(n instanceof pn.RepetitionWithSeparator)i.walkManySep(n,o,r);else if(n instanceof pn.Repetition)i.walkMany(n,o,r);else if(n instanceof pn.Alternation)i.walkOr(n,o,r);else throw Error("non exhaustive match")})},t.prototype.walkTerminal=function(e,r,i){},t.prototype.walkProdRef=function(e,r,i){},t.prototype.walkFlat=function(e,r,i){var n=r.concat(i);this.walk(e,n)},t.prototype.walkOption=function(e,r,i){var n=r.concat(i);this.walk(e,n)},t.prototype.walkAtLeastOne=function(e,r,i){var n=[new pn.Option({definition:e.definition})].concat(r,i);this.walk(e,n)},t.prototype.walkAtLeastOneSep=function(e,r,i){var n=KG(e,r,i);this.walk(e,n)},t.prototype.walkMany=function(e,r,i){var n=[new pn.Option({definition:e.definition})].concat(r,i);this.walk(e,n)},t.prototype.walkManySep=function(e,r,i){var n=KG(e,r,i);this.walk(e,n)},t.prototype.walkOr=function(e,r,i){var n=this,s=r.concat(i);(0,Zv.forEach)(e.definition,function(o){var a=new pn.Alternative({definition:[o]});n.walk(a,s)})},t}();mI.RestWalker=EIe;function KG(t,e,r){var i=[new pn.Option({definition:[new pn.Terminal({terminalType:t.separator})].concat(t.definition)})],n=i.concat(e,r);return n}});var wu=E(II=>{"use strict";Object.defineProperty(II,"__esModule",{value:!0});II.GAstVisitor=void 0;var lo=hn(),IIe=function(){function t(){}return t.prototype.visit=function(e){var r=e;switch(r.constructor){case lo.NonTerminal:return this.visitNonTerminal(r);case lo.Alternative:return this.visitAlternative(r);case lo.Option:return this.visitOption(r);case lo.RepetitionMandatory:return this.visitRepetitionMandatory(r);case lo.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(r);case lo.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(r);case lo.Repetition:return this.visitRepetition(r);case lo.Alternation:return this.visitAlternation(r);case lo.Terminal:return this.visitTerminal(r);case lo.Rule:return this.visitRule(r);default:throw Error("non exhaustive match")}},t.prototype.visitNonTerminal=function(e){},t.prototype.visitAlternative=function(e){},t.prototype.visitOption=function(e){},t.prototype.visitRepetition=function(e){},t.prototype.visitRepetitionMandatory=function(e){},t.prototype.visitRepetitionMandatoryWithSeparator=function(e){},t.prototype.visitRepetitionWithSeparator=function(e){},t.prototype.visitAlternation=function(e){},t.prototype.visitTerminal=function(e){},t.prototype.visitRule=function(e){},t}();II.GAstVisitor=IIe});var Jh=E(Si=>{"use strict";var yIe=Si&&Si.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Si,"__esModule",{value:!0});Si.collectMethods=Si.DslMethodsCollectorVisitor=Si.getProductionDslName=Si.isBranchingProd=Si.isOptionalProd=Si.isSequenceProd=void 0;var qh=Dt(),dr=hn(),wIe=wu();function BIe(t){return t instanceof dr.Alternative||t instanceof dr.Option||t instanceof dr.Repetition||t instanceof dr.RepetitionMandatory||t instanceof dr.RepetitionMandatoryWithSeparator||t instanceof dr.RepetitionWithSeparator||t instanceof dr.Terminal||t instanceof dr.Rule}Si.isSequenceProd=BIe;function $v(t,e){e===void 0&&(e=[]);var r=t instanceof dr.Option||t instanceof dr.Repetition||t instanceof dr.RepetitionWithSeparator;return r?!0:t instanceof dr.Alternation?(0,qh.some)(t.definition,function(i){return $v(i,e)}):t instanceof dr.NonTerminal&&(0,qh.contains)(e,t)?!1:t instanceof dr.AbstractProduction?(t instanceof dr.NonTerminal&&e.push(t),(0,qh.every)(t.definition,function(i){return $v(i,e)})):!1}Si.isOptionalProd=$v;function QIe(t){return t instanceof dr.Alternation}Si.isBranchingProd=QIe;function bIe(t){if(t instanceof dr.NonTerminal)return"SUBRULE";if(t instanceof dr.Option)return"OPTION";if(t instanceof dr.Alternation)return"OR";if(t instanceof dr.RepetitionMandatory)return"AT_LEAST_ONE";if(t instanceof dr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(t instanceof dr.RepetitionWithSeparator)return"MANY_SEP";if(t instanceof dr.Repetition)return"MANY";if(t instanceof dr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Si.getProductionDslName=bIe;var UG=function(t){yIe(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.separator="-",r.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},r}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(r){var i=r.terminalType.name+this.separator+"Terminal";(0,qh.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(r)},e.prototype.visitNonTerminal=function(r){var i=r.nonTerminalName+this.separator+"Terminal";(0,qh.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(r)},e.prototype.visitOption=function(r){this.dslMethods.option.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.dslMethods.repetitionWithSeparator.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.dslMethods.repetitionMandatory.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.dslMethods.repetitionMandatoryWithSeparator.push(r)},e.prototype.visitRepetition=function(r){this.dslMethods.repetition.push(r)},e.prototype.visitAlternation=function(r){this.dslMethods.alternation.push(r)},e}(wIe.GAstVisitor);Si.DslMethodsCollectorVisitor=UG;var yI=new UG;function vIe(t){yI.reset(),t.accept(yI);var e=yI.dslMethods;return yI.reset(),e}Si.collectMethods=vIe});var tS=E(co=>{"use strict";Object.defineProperty(co,"__esModule",{value:!0});co.firstForTerminal=co.firstForBranching=co.firstForSequence=co.first=void 0;var wI=Dt(),HG=hn(),eS=Jh();function BI(t){if(t instanceof HG.NonTerminal)return BI(t.referencedRule);if(t instanceof HG.Terminal)return YG(t);if((0,eS.isSequenceProd)(t))return GG(t);if((0,eS.isBranchingProd)(t))return jG(t);throw Error("non exhaustive match")}co.first=BI;function GG(t){for(var e=[],r=t.definition,i=0,n=r.length>i,s,o=!0;n&&o;)s=r[i],o=(0,eS.isOptionalProd)(s),e=e.concat(BI(s)),i=i+1,n=r.length>i;return(0,wI.uniq)(e)}co.firstForSequence=GG;function jG(t){var e=(0,wI.map)(t.definition,function(r){return BI(r)});return(0,wI.uniq)((0,wI.flatten)(e))}co.firstForBranching=jG;function YG(t){return[t.terminalType]}co.firstForTerminal=YG});var rS=E(QI=>{"use strict";Object.defineProperty(QI,"__esModule",{value:!0});QI.IN=void 0;QI.IN="_~IN~_"});var VG=E(es=>{"use strict";var SIe=es&&es.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(es,"__esModule",{value:!0});es.buildInProdFollowPrefix=es.buildBetweenProdsFollowPrefix=es.computeAllProdsFollows=es.ResyncFollowsWalker=void 0;var xIe=EI(),kIe=tS(),qG=Dt(),JG=rS(),PIe=hn(),zG=function(t){SIe(e,t);function e(r){var i=t.call(this)||this;return i.topProd=r,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(r,i,n){},e.prototype.walkProdRef=function(r,i,n){var s=WG(r.referencedRule,r.idx)+this.topProd.name,o=i.concat(n),a=new PIe.Alternative({definition:o}),l=(0,kIe.first)(a);this.follows[s]=l},e}(xIe.RestWalker);es.ResyncFollowsWalker=zG;function DIe(t){var e={};return(0,qG.forEach)(t,function(r){var i=new zG(r).startWalking();(0,qG.assign)(e,i)}),e}es.computeAllProdsFollows=DIe;function WG(t,e){return t.name+e+JG.IN}es.buildBetweenProdsFollowPrefix=WG;function RIe(t){var e=t.terminalType.name;return e+t.idx+JG.IN}es.buildInProdFollowPrefix=RIe});var Wh=E(aa=>{"use strict";Object.defineProperty(aa,"__esModule",{value:!0});aa.defaultGrammarValidatorErrorProvider=aa.defaultGrammarResolverErrorProvider=aa.defaultParserErrorProvider=void 0;var Bu=nA(),FIe=Dt(),Rs=Dt(),iS=hn(),_G=Jh();aa.defaultParserErrorProvider={buildMismatchTokenMessage:function(t){var e=t.expected,r=t.actual,i=t.previous,n=t.ruleName,s=(0,Bu.hasTokenLabel)(e),o=s?"--> "+(0,Bu.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+r.image+"' <--";return a},buildNotAllInputParsedMessage:function(t){var e=t.firstRedundant,r=t.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(t){var e=t.expectedPathsPerAlt,r=t.actual,i=t.previous,n=t.customUserDescription,s=t.ruleName,o="Expecting: ",a=(0,Rs.first)(r).image,l=` -but found: '`+a+"'";if(n)return o+n+l;var c=(0,Rs.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,Rs.map)(c,function(h){return"["+(0,Rs.map)(h,function(p){return(0,Bu.tokenLabel)(p)}).join(", ")+"]"}),g=(0,Rs.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: -`+g.join(` -`);return o+f+l},buildEarlyExitMessage:function(t){var e=t.expectedIterationPaths,r=t.actual,i=t.customUserDescription,n=t.ruleName,s="Expecting: ",o=(0,Rs.first)(r).image,a=` -but found: '`+o+"'";if(i)return s+i+a;var l=(0,Rs.map)(e,function(u){return"["+(0,Rs.map)(u,function(g){return(0,Bu.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: - `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(aa.defaultParserErrorProvider);aa.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(t,e){var r="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- -inside top level rule: ->`+t.name+"<-";return r}};aa.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(t,e){function r(u){return u instanceof iS.Terminal?u.terminalType.name:u instanceof iS.NonTerminal?u.nonTerminalName:""}var i=t.name,n=(0,Rs.first)(e),s=n.idx,o=(0,_G.getProductionDslName)(n),a=r(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` - appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. - For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES - `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` -`),c},buildNamespaceConflictError:function(t){var e=`Namespace conflict found in grammar. -`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+t.name+`>. -`)+`To resolve this make sure each Terminal and Non-Terminal names are unique -This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(t){var e=(0,Rs.map)(t.prefixPath,function(n){return(0,Bu.tokenLabel)(n)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,i="Ambiguous alternatives: <"+t.ambiguityIndices.join(" ,")+`> due to common lookahead prefix -`+("in inside <"+t.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`;return i},buildAlternationAmbiguityError:function(t){var e=(0,Rs.map)(t.prefixPath,function(n){return(0,Bu.tokenLabel)(n)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,i="Ambiguous Alternatives Detected: <"+t.ambiguityIndices.join(" ,")+"> in "+(" inside <"+t.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,i},buildEmptyRepetitionError:function(t){var e=(0,_G.getProductionDslName)(t.repetition);t.repetition.idx!==0&&(e+=t.repetition.idx);var r="The repetition <"+e+"> within Rule <"+t.topLevelRule.name+`> can never consume any tokens. -This could lead to an infinite loop.`;return r},buildTokenNameError:function(t){return"deprecated"},buildEmptyAlternationError:function(t){var e="Ambiguous empty alternative: <"+(t.emptyChoiceIdx+1)+">"+(" in inside <"+t.topLevelRule.name+`> Rule. -`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(t){var e=`An Alternation cannot have more than 256 alternatives: -`+(" inside <"+t.topLevelRule.name+`> Rule. - has `+(t.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(t){var e=t.topLevelRule.name,r=FIe.map(t.leftRecursionPath,function(s){return s.name}),i=e+" --> "+r.concat([e]).join(" --> "),n=`Left Recursion found in grammar. -`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) -`)+(`without consuming any Tokens. The grammar path that causes this is: - `+i+` -`)+` To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(t){return"deprecated"},buildDuplicateRuleNameError:function(t){var e;t.topLevelRule instanceof iS.Rule?e=t.topLevelRule.name:e=t.topLevelRule;var r="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+t.grammarName+"<-";return r}}});var $G=E(sA=>{"use strict";var NIe=sA&&sA.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(sA,"__esModule",{value:!0});sA.GastRefResolverVisitor=sA.resolveGrammar=void 0;var LIe=Tn(),XG=Dt(),TIe=wu();function MIe(t,e){var r=new ZG(t,e);return r.resolveRefs(),r.errors}sA.resolveGrammar=MIe;var ZG=function(t){NIe(e,t);function e(r,i){var n=t.call(this)||this;return n.nameToTopRule=r,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var r=this;(0,XG.forEach)((0,XG.values)(this.nameToTopRule),function(i){r.currTopLevel=i,i.accept(r)})},e.prototype.visitNonTerminal=function(r){var i=this.nameToTopRule[r.nonTerminalName];if(i)r.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,r);this.errors.push({message:n,type:LIe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:r.nonTerminalName})}},e}(TIe.GAstVisitor);sA.GastRefResolverVisitor=ZG});var Vh=E(Br=>{"use strict";var Fl=Br&&Br.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Br,"__esModule",{value:!0});Br.nextPossibleTokensAfter=Br.possiblePathsFrom=Br.NextTerminalAfterAtLeastOneSepWalker=Br.NextTerminalAfterAtLeastOneWalker=Br.NextTerminalAfterManySepWalker=Br.NextTerminalAfterManyWalker=Br.AbstractNextTerminalAfterProductionWalker=Br.NextAfterTokenWalker=Br.AbstractNextPossibleTokensWalker=void 0;var ej=EI(),xt=Dt(),OIe=tS(),It=hn(),tj=function(t){Fl(e,t);function e(r,i){var n=t.call(this)||this;return n.topProd=r,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,xt.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,xt.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(r,i){i===void 0&&(i=[]),this.found||t.prototype.walk.call(this,r,i)},e.prototype.walkProdRef=function(r,i,n){if(r.referencedRule.name===this.nextProductionName&&r.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(r.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,xt.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(ej.RestWalker);Br.AbstractNextPossibleTokensWalker=tj;var KIe=function(t){Fl(e,t);function e(r,i){var n=t.call(this,r,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(r,i,n){if(this.isAtEndOfPath&&r.terminalType.name===this.nextTerminalName&&r.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new It.Alternative({definition:s});this.possibleTokTypes=(0,OIe.first)(o),this.found=!0}},e}(tj);Br.NextAfterTokenWalker=KIe;var zh=function(t){Fl(e,t);function e(r,i){var n=t.call(this)||this;return n.topRule=r,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(ej.RestWalker);Br.AbstractNextTerminalAfterProductionWalker=zh;var UIe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkMany=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof It.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkMany.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterManyWalker=UIe;var HIe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkManySep=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof It.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkManySep.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterManySepWalker=HIe;var GIe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof It.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkAtLeastOne.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterAtLeastOneWalker=GIe;var jIe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof It.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkAtLeastOneSep.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterAtLeastOneSepWalker=jIe;function rj(t,e,r){r===void 0&&(r=[]),r=(0,xt.cloneArr)(r);var i=[],n=0;function s(c){return c.concat((0,xt.drop)(t,n+1))}function o(c){var u=rj(s(c),e,r);return i.concat(u)}for(;r.length=0;W--){var X=I.definition[W],F={idx:p,def:X.definition.concat((0,xt.drop)(h)),ruleStack:d,occurrenceStack:m};g.push(F),g.push(o)}else if(I instanceof It.Alternative)g.push({idx:p,def:I.definition.concat((0,xt.drop)(h)),ruleStack:d,occurrenceStack:m});else if(I instanceof It.Rule)g.push(YIe(I,p,d,m));else throw Error("non exhaustive match")}}return u}Br.nextPossibleTokensAfter=qIe;function YIe(t,e,r,i){var n=(0,xt.cloneArr)(r);n.push(t.name);var s=(0,xt.cloneArr)(i);return s.push(1),{idx:e,def:t.definition,ruleStack:n,occurrenceStack:s}}});var _h=E(Gt=>{"use strict";var ij=Gt&&Gt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Gt,"__esModule",{value:!0});Gt.areTokenCategoriesNotUsed=Gt.isStrictPrefixOfPath=Gt.containsPath=Gt.getLookaheadPathsForOptionalProd=Gt.getLookaheadPathsForOr=Gt.lookAheadSequenceFromAlternatives=Gt.buildSingleAlternativeLookaheadFunction=Gt.buildAlternativesLookAheadFunc=Gt.buildLookaheadFuncForOptionalProd=Gt.buildLookaheadFuncForOr=Gt.getProdType=Gt.PROD_TYPE=void 0;var _t=Dt(),nj=Vh(),JIe=EI(),bI=yu(),oA=hn(),WIe=wu(),zr;(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(zr=Gt.PROD_TYPE||(Gt.PROD_TYPE={}));function zIe(t){if(t instanceof oA.Option)return zr.OPTION;if(t instanceof oA.Repetition)return zr.REPETITION;if(t instanceof oA.RepetitionMandatory)return zr.REPETITION_MANDATORY;if(t instanceof oA.RepetitionMandatoryWithSeparator)return zr.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof oA.RepetitionWithSeparator)return zr.REPETITION_WITH_SEPARATOR;if(t instanceof oA.Alternation)return zr.ALTERNATION;throw Error("non exhaustive match")}Gt.getProdType=zIe;function VIe(t,e,r,i,n,s){var o=sj(t,e,r),a=nS(o)?bI.tokenStructuredMatcherNoCategories:bI.tokenStructuredMatcher;return s(o,i,a,n)}Gt.buildLookaheadFuncForOr=VIe;function _Ie(t,e,r,i,n,s){var o=oj(t,e,n,r),a=nS(o)?bI.tokenStructuredMatcherNoCategories:bI.tokenStructuredMatcher;return s(o[0],a,i)}Gt.buildLookaheadFuncForOptionalProd=_Ie;function XIe(t,e,r,i){var n=t.length,s=(0,_t.every)(t,function(l){return(0,_t.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,_t.map)(l,function(b){return b.GATE}),u=0;u{"use strict";var aS=Mt&&Mt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Mt,"__esModule",{value:!0});Mt.checkPrefixAlternativesAmbiguities=Mt.validateSomeNonEmptyLookaheadPath=Mt.validateTooManyAlts=Mt.RepetionCollector=Mt.validateAmbiguousAlternationAlternatives=Mt.validateEmptyOrAlternative=Mt.getFirstNoneTerminal=Mt.validateNoLeftRecursion=Mt.validateRuleIsOverridden=Mt.validateRuleDoesNotAlreadyExist=Mt.OccurrenceValidationCollector=Mt.identifyProductionForDuplicates=Mt.validateGrammar=void 0;var jt=Dt(),Cr=Dt(),uo=Tn(),AS=Jh(),Qu=_h(),rye=Vh(),Fs=hn(),lS=wu();function sye(t,e,r,i,n){var s=jt.map(t,function(h){return iye(h,i)}),o=jt.map(t,function(h){return cS(h,h,i)}),a=[],l=[],c=[];(0,Cr.every)(o,Cr.isEmpty)&&(a=(0,Cr.map)(t,function(h){return uj(h,i)}),l=(0,Cr.map)(t,function(h){return gj(h,e,i)}),c=hj(t,e,i));var u=nye(t,r,i),g=(0,Cr.map)(t,function(h){return fj(h,i)}),f=(0,Cr.map)(t,function(h){return cj(h,t,n,i)});return jt.flatten(s.concat(c,o,a,l,u,g,f))}Mt.validateGrammar=sye;function iye(t,e){var r=new Cj;t.accept(r);var i=r.allProductions,n=jt.groupBy(i,pj),s=jt.pick(n,function(a){return a.length>1}),o=jt.map(jt.values(s),function(a){var l=jt.first(a),c=e.buildDuplicateFoundError(t,a),u=(0,AS.getProductionDslName)(l),g={message:c,type:uo.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:u,occurrence:l.idx},f=dj(l);return f&&(g.parameter=f),g});return o}function pj(t){return(0,AS.getProductionDslName)(t)+"_#_"+t.idx+"_#_"+dj(t)}Mt.identifyProductionForDuplicates=pj;function dj(t){return t instanceof Fs.Terminal?t.terminalType.name:t instanceof Fs.NonTerminal?t.nonTerminalName:""}var Cj=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitNonTerminal=function(r){this.allProductions.push(r)},e.prototype.visitOption=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e.prototype.visitAlternation=function(r){this.allProductions.push(r)},e.prototype.visitTerminal=function(r){this.allProductions.push(r)},e}(lS.GAstVisitor);Mt.OccurrenceValidationCollector=Cj;function cj(t,e,r,i){var n=[],s=(0,Cr.reduce)(e,function(a,l){return l.name===t.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});n.push({message:o,type:uo.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:t.name})}return n}Mt.validateRuleDoesNotAlreadyExist=cj;function oye(t,e,r){var i=[],n;return jt.contains(e,t)||(n="Invalid rule override, rule: ->"+t+"<- cannot be overridden in the grammar: ->"+r+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:uo.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:t})),i}Mt.validateRuleIsOverridden=oye;function cS(t,e,r,i){i===void 0&&(i=[]);var n=[],s=Xh(e.definition);if(jt.isEmpty(s))return[];var o=t.name,a=jt.contains(s,t);a&&n.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:i}),type:uo.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=jt.difference(s,i.concat([t])),c=jt.map(l,function(u){var g=jt.cloneArr(i);return g.push(u),cS(t,u,r,g)});return n.concat(jt.flatten(c))}Mt.validateNoLeftRecursion=cS;function Xh(t){var e=[];if(jt.isEmpty(t))return e;var r=jt.first(t);if(r instanceof Fs.NonTerminal)e.push(r.referencedRule);else if(r instanceof Fs.Alternative||r instanceof Fs.Option||r instanceof Fs.RepetitionMandatory||r instanceof Fs.RepetitionMandatoryWithSeparator||r instanceof Fs.RepetitionWithSeparator||r instanceof Fs.Repetition)e=e.concat(Xh(r.definition));else if(r instanceof Fs.Alternation)e=jt.flatten(jt.map(r.definition,function(o){return Xh(o.definition)}));else if(!(r instanceof Fs.Terminal))throw Error("non exhaustive match");var i=(0,AS.isOptionalProd)(r),n=t.length>1;if(i&&n){var s=jt.drop(t);return e.concat(Xh(s))}else return e}Mt.getFirstNoneTerminal=Xh;var uS=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.alternations=[],r}return e.prototype.visitAlternation=function(r){this.alternations.push(r)},e}(lS.GAstVisitor);function uj(t,e){var r=new uS;t.accept(r);var i=r.alternations,n=jt.reduce(i,function(s,o){var a=jt.dropRight(o.definition),l=jt.map(a,function(c,u){var g=(0,rye.nextPossibleTokensAfter)([c],[],null,1);return jt.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:o,emptyChoiceIdx:u}),type:uo.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(jt.compact(l))},[]);return n}Mt.validateEmptyOrAlternative=uj;function gj(t,e,r){var i=new uS;t.accept(i);var n=i.alternations;n=(0,Cr.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=jt.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,Qu.getLookaheadPathsForOr)(l,t,c,a),g=aye(u,a,t,r),f=mj(u,a,t,r);return o.concat(g,f)},[]);return s}Mt.validateAmbiguousAlternationAlternatives=gj;var Ej=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e}(lS.GAstVisitor);Mt.RepetionCollector=Ej;function fj(t,e){var r=new uS;t.accept(r);var i=r.alternations,n=jt.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:o}),type:uo.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:t.name,occurrence:o.idx}),s},[]);return n}Mt.validateTooManyAlts=fj;function hj(t,e,r){var i=[];return(0,Cr.forEach)(t,function(n){var s=new Ej;n.accept(s);var o=s.allProductions;(0,Cr.forEach)(o,function(a){var l=(0,Qu.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,Qu.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,Cr.isEmpty)((0,Cr.flatten)(f))){var h=r.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:uo.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}Mt.validateSomeNonEmptyLookaheadPath=hj;function aye(t,e,r,i){var n=[],s=(0,Cr.reduce)(t,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,Cr.forEach)(l,function(u){var g=[c];(0,Cr.forEach)(t,function(f,h){c!==h&&(0,Qu.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,Qu.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=jt.map(s,function(a){var l=(0,Cr.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:uo.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function mj(t,e,r,i){var n=[],s=(0,Cr.reduce)(t,function(o,a,l){var c=(0,Cr.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,Cr.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,Cr.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(bu,"__esModule",{value:!0});bu.validateGrammar=bu.resolveGrammar=void 0;var fS=Dt(),Aye=$G(),lye=gS(),Ij=Wh();function cye(t){t=(0,fS.defaults)(t,{errMsgProvider:Ij.defaultGrammarResolverErrorProvider});var e={};return(0,fS.forEach)(t.rules,function(r){e[r.name]=r}),(0,Aye.resolveGrammar)(e,t.errMsgProvider)}bu.resolveGrammar=cye;function uye(t){return t=(0,fS.defaults)(t,{errMsgProvider:Ij.defaultGrammarValidatorErrorProvider}),(0,lye.validateGrammar)(t.rules,t.maxLookahead,t.tokenTypes,t.errMsgProvider,t.grammarName)}bu.validateGrammar=uye});var vu=E(dn=>{"use strict";var Zh=dn&&dn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(dn,"__esModule",{value:!0});dn.EarlyExitException=dn.NotAllInputParsedException=dn.NoViableAltException=dn.MismatchedTokenException=dn.isRecognitionException=void 0;var gye=Dt(),wj="MismatchedTokenException",Bj="NoViableAltException",Qj="EarlyExitException",bj="NotAllInputParsedException",vj=[wj,Bj,Qj,bj];Object.freeze(vj);function fye(t){return(0,gye.contains)(vj,t.name)}dn.isRecognitionException=fye;var vI=function(t){Zh(e,t);function e(r,i){var n=this.constructor,s=t.call(this,r)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),hye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=wj,s}return e}(vI);dn.MismatchedTokenException=hye;var pye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=Bj,s}return e}(vI);dn.NoViableAltException=pye;var dye=function(t){Zh(e,t);function e(r,i){var n=t.call(this,r,i)||this;return n.name=bj,n}return e}(vI);dn.NotAllInputParsedException=dye;var Cye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=Qj,s}return e}(vI);dn.EarlyExitException=Cye});var pS=E(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.attemptInRepetitionRecovery=xi.Recoverable=xi.InRuleRecoveryException=xi.IN_RULE_RECOVERY_EXCEPTION=xi.EOF_FOLLOW_KEY=void 0;var SI=nA(),ts=Dt(),mye=vu(),Eye=rS(),Iye=Tn();xi.EOF_FOLLOW_KEY={};xi.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function hS(t){this.name=xi.IN_RULE_RECOVERY_EXCEPTION,this.message=t}xi.InRuleRecoveryException=hS;hS.prototype=Error.prototype;var yye=function(){function t(){}return t.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,ts.has)(e,"recoveryEnabled")?e.recoveryEnabled:Iye.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=Sj)},t.prototype.getTokenToInsert=function(e){var r=(0,SI.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r},t.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},t.prototype.tryInRepetitionRecovery=function(e,r,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),d=new mye.MismatchedTokenException(p,u,s.LA(0));d.resyncedTokens=(0,ts.dropRight)(l),s.SAVE_ERROR(d)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,r);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},t.prototype.shouldInRepetitionRecoveryBeTried=function(e,r,i){return!(i===!1||e===void 0||r===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))},t.prototype.getFollowsForInRuleRecovery=function(e,r){var i=this.getCurrentGrammarPath(e,r),n=this.getNextPossibleTokenTypes(i);return n},t.prototype.tryInRuleRecovery=function(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new hS("sad sad panda")},t.prototype.canPerformInRuleRecovery=function(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)},t.prototype.canRecoverWithSingleTokenInsertion=function(e,r){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,ts.isEmpty)(r))return!1;var n=this.LA(1),s=(0,ts.find)(r,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},t.prototype.canRecoverWithSingleTokenDeletion=function(e){var r=this.tokenMatcher(this.LA(2),e);return r},t.prototype.isInCurrentRuleReSyncSet=function(e){var r=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(r);return(0,ts.contains)(i,e)},t.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),r=this.LA(1),i=2;;){var n=r.tokenType;if((0,ts.contains)(e,n))return n;r=this.LA(i),i++}},t.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return xi.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(i)}},t.prototype.buildFullFollowKeyStack=function(){var e=this,r=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,ts.map)(r,function(n,s){return s===0?xi.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(r[s-1])}})},t.prototype.flattenFollowSet=function(){var e=this,r=(0,ts.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,ts.flatten)(r)},t.prototype.getFollowSetFromFollowKey=function(e){if(e===xi.EOF_FOLLOW_KEY)return[SI.EOF];var r=e.ruleName+e.idxInCallingRule+Eye.IN+e.inRule;return this.resyncFollows[r]},t.prototype.addToResyncTokens=function(e,r){return this.tokenMatcher(e,SI.EOF)||r.push(e),r},t.prototype.reSyncTo=function(e){for(var r=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,r);return(0,ts.dropRight)(r)},t.prototype.attemptInRepetitionRecovery=function(e,r,i,n,s,o,a){},t.prototype.getCurrentGrammarPath=function(e,r){var i=this.getHumanReadableRuleStack(),n=(0,ts.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:r};return s},t.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,ts.map)(this.RULE_STACK,function(r){return e.shortRuleNameToFullName(r)})},t}();xi.Recoverable=yye;function Sj(t,e,r,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=SI.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(t,e,r,f)}xi.attemptInRepetitionRecovery=Sj});var xI=E(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.getKeyForAutomaticLookahead=Nt.AT_LEAST_ONE_SEP_IDX=Nt.MANY_SEP_IDX=Nt.AT_LEAST_ONE_IDX=Nt.MANY_IDX=Nt.OPTION_IDX=Nt.OR_IDX=Nt.BITS_FOR_ALT_IDX=Nt.BITS_FOR_RULE_IDX=Nt.BITS_FOR_OCCURRENCE_IDX=Nt.BITS_FOR_METHOD_TYPE=void 0;Nt.BITS_FOR_METHOD_TYPE=4;Nt.BITS_FOR_OCCURRENCE_IDX=8;Nt.BITS_FOR_RULE_IDX=12;Nt.BITS_FOR_ALT_IDX=8;Nt.OR_IDX=1<{"use strict";Object.defineProperty(kI,"__esModule",{value:!0});kI.LooksAhead=void 0;var Aa=_h(),Ns=Dt(),xj=Tn(),la=xI(),Nl=Jh(),Bye=function(){function t(){}return t.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,Ns.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:xj.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,Ns.has)(e,"maxLookahead")?e.maxLookahead:xj.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,Ns.isES2015MapSupported)()?new Map:[],(0,Ns.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},t.prototype.preComputeLookaheadFunctions=function(e){var r=this;(0,Ns.forEach)(e,function(i){r.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,Nl.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,Ns.forEach)(s,function(g){var f=g.idx===0?"":g.idx;r.TRACE_INIT(""+(0,Nl.getProductionDslName)(g)+f,function(){var h=(0,Aa.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||r.maxLookahead,g.hasPredicates,r.dynamicTokensEnabled,r.lookAheadBuilderForAlternatives),p=(0,la.getKeyForAutomaticLookahead)(r.fullRuleNameToShort[i.name],la.OR_IDX,g.idx);r.setLaFuncCache(p,h)})}),(0,Ns.forEach)(o,function(g){r.computeLookaheadFunc(i,g.idx,la.MANY_IDX,Aa.PROD_TYPE.REPETITION,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(a,function(g){r.computeLookaheadFunc(i,g.idx,la.OPTION_IDX,Aa.PROD_TYPE.OPTION,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(l,function(g){r.computeLookaheadFunc(i,g.idx,la.AT_LEAST_ONE_IDX,Aa.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(c,function(g){r.computeLookaheadFunc(i,g.idx,la.AT_LEAST_ONE_SEP_IDX,Aa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(u,function(g){r.computeLookaheadFunc(i,g.idx,la.MANY_SEP_IDX,Aa.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,Nl.getProductionDslName)(g))})})})},t.prototype.computeLookaheadFunc=function(e,r,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(r===0?"":r),function(){var l=(0,Aa.buildLookaheadFuncForOptionalProd)(r,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,la.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,r);a.setLaFuncCache(c,l)})},t.prototype.lookAheadBuilderForOptional=function(e,r,i){return(0,Aa.buildSingleAlternativeLookaheadFunction)(e,r,i)},t.prototype.lookAheadBuilderForAlternatives=function(e,r,i,n){return(0,Aa.buildAlternativesLookAheadFunc)(e,r,i,n)},t.prototype.getKeyForAutomaticLookahead=function(e,r){var i=this.getLastExplicitRuleShortName();return(0,la.getKeyForAutomaticLookahead)(i,e,r)},t.prototype.getLaFuncFromCache=function(e){},t.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},t.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},t.prototype.setLaFuncCache=function(e,r){},t.prototype.setLaFuncCacheUsingMap=function(e,r){this.lookAheadFuncsCache.set(e,r)},t.prototype.setLaFuncUsingObj=function(e,r){this.lookAheadFuncsCache[e]=r},t}();kI.LooksAhead=Bye});var Pj=E(go=>{"use strict";Object.defineProperty(go,"__esModule",{value:!0});go.addNoneTerminalToCst=go.addTerminalToCst=go.setNodeLocationFull=go.setNodeLocationOnlyOffset=void 0;function Qye(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{"use strict";Object.defineProperty(aA,"__esModule",{value:!0});aA.defineNameProp=aA.functionName=aA.classNameFromInstance=void 0;var xye=Dt();function kye(t){return Dj(t.constructor)}aA.classNameFromInstance=kye;var Rj="name";function Dj(t){var e=t.name;return e||"anonymous"}aA.functionName=Dj;function Pye(t,e){var r=Object.getOwnPropertyDescriptor(t,Rj);return(0,xye.isUndefined)(r)||r.configurable?(Object.defineProperty(t,Rj,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}aA.defineNameProp=Pye});var Mj=E(mi=>{"use strict";Object.defineProperty(mi,"__esModule",{value:!0});mi.validateRedundantMethods=mi.validateMissingCstMethods=mi.validateVisitor=mi.CstVisitorDefinitionError=mi.createBaseVisitorConstructorWithDefaults=mi.createBaseSemanticVisitorConstructor=mi.defaultVisit=void 0;var rs=Dt(),$h=dS();function Fj(t,e){for(var r=(0,rs.keys)(t),i=r.length,n=0;n: - `+(""+s.join(` - -`).replace(/\n/g,` - `)))}}};return r.prototype=i,r.prototype.constructor=r,r._RULE_NAMES=e,r}mi.createBaseSemanticVisitorConstructor=Dye;function Rye(t,e,r){var i=function(){};(0,$h.defineNameProp)(i,t+"BaseSemanticsWithDefaults");var n=Object.create(r.prototype);return(0,rs.forEach)(e,function(s){n[s]=Fj}),i.prototype=n,i.prototype.constructor=i,i}mi.createBaseVisitorConstructorWithDefaults=Rye;var CS;(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(CS=mi.CstVisitorDefinitionError||(mi.CstVisitorDefinitionError={}));function Nj(t,e){var r=Lj(t,e),i=Tj(t,e);return r.concat(i)}mi.validateVisitor=Nj;function Lj(t,e){var r=(0,rs.map)(e,function(i){if(!(0,rs.isFunction)(t[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,$h.functionName)(t.constructor)+" CST Visitor.",type:CS.MISSING_METHOD,methodName:i}});return(0,rs.compact)(r)}mi.validateMissingCstMethods=Lj;var Fye=["constructor","visit","validateVisitor"];function Tj(t,e){var r=[];for(var i in t)(0,rs.isFunction)(t[i])&&!(0,rs.contains)(Fye,i)&&!(0,rs.contains)(e,i)&&r.push({msg:"Redundant visitor method: <"+i+"> on "+(0,$h.functionName)(t.constructor)+` CST Visitor -There is no Grammar Rule corresponding to this method's name. -`,type:CS.REDUNDANT_METHOD,methodName:i});return r}mi.validateRedundantMethods=Tj});var Kj=E(PI=>{"use strict";Object.defineProperty(PI,"__esModule",{value:!0});PI.TreeBuilder=void 0;var Su=Pj(),Ur=Dt(),Oj=Mj(),Nye=Tn(),Lye=function(){function t(){}return t.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,Ur.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:Nye.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Ur.NOOP,this.cstFinallyStateUpdate=Ur.NOOP,this.cstPostTerminal=Ur.NOOP,this.cstPostNonTerminal=Ur.NOOP,this.cstPostRule=Ur.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Su.setNodeLocationFull,this.setNodeLocationFromNode=Su.setNodeLocationFull,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Su.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=Su.setNodeLocationOnlyOffset,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=Ur.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},t.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},t.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},t.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.setInitialNodeLocationFullRegular=function(e){var r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.cstInvocationStateUpdate=function(e,r){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},t.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},t.prototype.cstPostRuleFull=function(e){var r=this.LA(0),i=e.location;i.startOffset<=r.startOffset?(i.endOffset=r.endOffset,i.endLine=r.endLine,i.endColumn=r.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},t.prototype.cstPostRuleOnlyOffset=function(e){var r=this.LA(0),i=e.location;i.startOffset<=r.startOffset?i.endOffset=r.endOffset:i.startOffset=NaN},t.prototype.cstPostTerminal=function(e,r){var i=this.CST_STACK[this.CST_STACK.length-1];(0,Su.addTerminalToCst)(i,r,e),this.setNodeLocationFromToken(i.location,r)},t.prototype.cstPostNonTerminal=function(e,r){var i=this.CST_STACK[this.CST_STACK.length-1];(0,Su.addNoneTerminalToCst)(i,r,e),this.setNodeLocationFromNode(i.location,e.location)},t.prototype.getBaseCstVisitorConstructor=function(){if((0,Ur.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,Oj.createBaseSemanticVisitorConstructor)(this.className,(0,Ur.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},t.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,Ur.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,Oj.createBaseVisitorConstructorWithDefaults)(this.className,(0,Ur.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},t.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},t.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},t.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},t}();PI.TreeBuilder=Lye});var Hj=E(DI=>{"use strict";Object.defineProperty(DI,"__esModule",{value:!0});DI.LexerAdapter=void 0;var Uj=Tn(),Tye=function(){function t(){}return t.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(t.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),t.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):Uj.END_OF_FILE},t.prototype.LA=function(e){var r=this.currIdx+e;return r<0||this.tokVectorLength<=r?Uj.END_OF_FILE:this.tokVector[r]},t.prototype.consumeToken=function(){this.currIdx++},t.prototype.exportLexerState=function(){return this.currIdx},t.prototype.importLexerState=function(e){this.currIdx=e},t.prototype.resetLexerState=function(){this.currIdx=-1},t.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},t.prototype.getLexerPosition=function(){return this.exportLexerState()},t}();DI.LexerAdapter=Tye});var jj=E(RI=>{"use strict";Object.defineProperty(RI,"__esModule",{value:!0});RI.RecognizerApi=void 0;var Gj=Dt(),Mye=vu(),mS=Tn(),Oye=Wh(),Kye=gS(),Uye=hn(),Hye=function(){function t(){}return t.prototype.ACTION=function(e){return e.call(this)},t.prototype.consume=function(e,r,i){return this.consumeInternal(r,e,i)},t.prototype.subrule=function(e,r,i){return this.subruleInternal(r,e,i)},t.prototype.option=function(e,r){return this.optionInternal(r,e)},t.prototype.or=function(e,r){return this.orInternal(r,e)},t.prototype.many=function(e,r){return this.manyInternal(e,r)},t.prototype.atLeastOne=function(e,r){return this.atLeastOneInternal(e,r)},t.prototype.CONSUME=function(e,r){return this.consumeInternal(e,0,r)},t.prototype.CONSUME1=function(e,r){return this.consumeInternal(e,1,r)},t.prototype.CONSUME2=function(e,r){return this.consumeInternal(e,2,r)},t.prototype.CONSUME3=function(e,r){return this.consumeInternal(e,3,r)},t.prototype.CONSUME4=function(e,r){return this.consumeInternal(e,4,r)},t.prototype.CONSUME5=function(e,r){return this.consumeInternal(e,5,r)},t.prototype.CONSUME6=function(e,r){return this.consumeInternal(e,6,r)},t.prototype.CONSUME7=function(e,r){return this.consumeInternal(e,7,r)},t.prototype.CONSUME8=function(e,r){return this.consumeInternal(e,8,r)},t.prototype.CONSUME9=function(e,r){return this.consumeInternal(e,9,r)},t.prototype.SUBRULE=function(e,r){return this.subruleInternal(e,0,r)},t.prototype.SUBRULE1=function(e,r){return this.subruleInternal(e,1,r)},t.prototype.SUBRULE2=function(e,r){return this.subruleInternal(e,2,r)},t.prototype.SUBRULE3=function(e,r){return this.subruleInternal(e,3,r)},t.prototype.SUBRULE4=function(e,r){return this.subruleInternal(e,4,r)},t.prototype.SUBRULE5=function(e,r){return this.subruleInternal(e,5,r)},t.prototype.SUBRULE6=function(e,r){return this.subruleInternal(e,6,r)},t.prototype.SUBRULE7=function(e,r){return this.subruleInternal(e,7,r)},t.prototype.SUBRULE8=function(e,r){return this.subruleInternal(e,8,r)},t.prototype.SUBRULE9=function(e,r){return this.subruleInternal(e,9,r)},t.prototype.OPTION=function(e){return this.optionInternal(e,0)},t.prototype.OPTION1=function(e){return this.optionInternal(e,1)},t.prototype.OPTION2=function(e){return this.optionInternal(e,2)},t.prototype.OPTION3=function(e){return this.optionInternal(e,3)},t.prototype.OPTION4=function(e){return this.optionInternal(e,4)},t.prototype.OPTION5=function(e){return this.optionInternal(e,5)},t.prototype.OPTION6=function(e){return this.optionInternal(e,6)},t.prototype.OPTION7=function(e){return this.optionInternal(e,7)},t.prototype.OPTION8=function(e){return this.optionInternal(e,8)},t.prototype.OPTION9=function(e){return this.optionInternal(e,9)},t.prototype.OR=function(e){return this.orInternal(e,0)},t.prototype.OR1=function(e){return this.orInternal(e,1)},t.prototype.OR2=function(e){return this.orInternal(e,2)},t.prototype.OR3=function(e){return this.orInternal(e,3)},t.prototype.OR4=function(e){return this.orInternal(e,4)},t.prototype.OR5=function(e){return this.orInternal(e,5)},t.prototype.OR6=function(e){return this.orInternal(e,6)},t.prototype.OR7=function(e){return this.orInternal(e,7)},t.prototype.OR8=function(e){return this.orInternal(e,8)},t.prototype.OR9=function(e){return this.orInternal(e,9)},t.prototype.MANY=function(e){this.manyInternal(0,e)},t.prototype.MANY1=function(e){this.manyInternal(1,e)},t.prototype.MANY2=function(e){this.manyInternal(2,e)},t.prototype.MANY3=function(e){this.manyInternal(3,e)},t.prototype.MANY4=function(e){this.manyInternal(4,e)},t.prototype.MANY5=function(e){this.manyInternal(5,e)},t.prototype.MANY6=function(e){this.manyInternal(6,e)},t.prototype.MANY7=function(e){this.manyInternal(7,e)},t.prototype.MANY8=function(e){this.manyInternal(8,e)},t.prototype.MANY9=function(e){this.manyInternal(9,e)},t.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},t.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},t.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},t.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},t.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},t.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},t.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},t.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},t.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},t.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},t.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},t.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},t.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},t.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},t.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},t.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},t.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},t.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},t.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},t.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},t.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},t.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},t.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},t.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},t.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},t.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},t.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},t.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},t.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},t.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},t.prototype.RULE=function(e,r,i){if(i===void 0&&(i=mS.DEFAULT_RULE_CONFIG),(0,Gj.contains)(this.definedRulesNames,e)){var n=Oye.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:mS.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,r,i);return this[e]=o,o},t.prototype.OVERRIDE_RULE=function(e,r,i){i===void 0&&(i=mS.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,Kye.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,r,i);return this[e]=s,s},t.prototype.BACKTRACK=function(e,r){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,r),!0}catch(n){if((0,Mye.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},t.prototype.getGAstProductions=function(){return this.gastProductionsCache},t.prototype.getSerializedGastProductions=function(){return(0,Uye.serializeGrammar)((0,Gj.values)(this.gastProductionsCache))},t}();RI.RecognizerApi=Hye});var Wj=E(FI=>{"use strict";Object.defineProperty(FI,"__esModule",{value:!0});FI.RecognizerEngine=void 0;var Er=Dt(),Mn=xI(),NI=vu(),Yj=_h(),xu=Vh(),qj=Tn(),Gye=pS(),Jj=nA(),ep=yu(),jye=dS(),Yye=function(){function t(){}return t.prototype.initRecognizerEngine=function(e,r){if(this.className=(0,jye.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=ep.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,Er.has)(r,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 - For Further details.`);if((0,Er.isArray)(e)){if((0,Er.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. - Note that the first argument for the parser constructor - is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`)}if((0,Er.isArray)(e))this.tokensMap=(0,Er.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,Er.has)(e,"modes")&&(0,Er.every)((0,Er.flatten)((0,Er.values)(e.modes)),ep.isTokenType)){var i=(0,Er.flatten)((0,Er.values)(e.modes)),n=(0,Er.uniq)(i);this.tokensMap=(0,Er.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,Er.isObject)(e))this.tokensMap=(0,Er.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=Jj.EOF;var s=(0,Er.every)((0,Er.values)(e),function(o){return(0,Er.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?ep.tokenStructuredMatcherNoCategories:ep.tokenStructuredMatcher,(0,ep.augmentTokenTypes)((0,Er.values)(this.tokensMap))},t.prototype.defineRule=function(e,r,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,Er.has)(i,"resyncEnabled")?i.resyncEnabled:qj.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,Er.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:qj.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<r},t.prototype.orInternal=function(e,r){var i=this.getKeyForAutomaticLookahead(Mn.OR_IDX,r),n=(0,Er.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(r,e.ERR_MSG)},t.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new NI.NotAllInputParsedException(r,e))}},t.prototype.subruleInternal=function(e,r,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,r,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},t.prototype.subruleInternalError=function(e,r,i){throw(0,NI.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:i),delete e.partialCstResult),e},t.prototype.consumeInternal=function(e,r,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,r,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},t.prototype.consumeInternalError=function(e,r,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new NI.MismatchedTokenException(n,r,s))},t.prototype.consumeInternalRecovery=function(e,r,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===Gye.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},t.prototype.saveRecogState=function(){var e=this.errors,r=(0,Er.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}},t.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},t.prototype.ruleInvocationStateUpdate=function(e,r,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r,e)},t.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},t.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},t.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},t.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),Jj.EOF)},t.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},t}();FI.RecognizerEngine=Yye});var Vj=E(LI=>{"use strict";Object.defineProperty(LI,"__esModule",{value:!0});LI.ErrorHandler=void 0;var ES=vu(),IS=Dt(),zj=_h(),qye=Tn(),Jye=function(){function t(){}return t.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,IS.has)(e,"errorMessageProvider")?e.errorMessageProvider:qye.DEFAULT_PARSER_CONFIG.errorMessageProvider},t.prototype.SAVE_ERROR=function(e){if((0,ES.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,IS.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(t.prototype,"errors",{get:function(){return(0,IS.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),t.prototype.raiseEarlyExitException=function(e,r,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,zj.getLookaheadPathsForOptionalProd)(e,s,r,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new ES.EarlyExitException(u,this.LA(1),this.LA(0)))},t.prototype.raiseNoAltException=function(e,r){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,zj.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new ES.NoViableAltException(c,this.LA(1),l))},t}();LI.ErrorHandler=Jye});var Zj=E(TI=>{"use strict";Object.defineProperty(TI,"__esModule",{value:!0});TI.ContentAssist=void 0;var _j=Vh(),Xj=Dt(),Wye=function(){function t(){}return t.prototype.initContentAssist=function(){},t.prototype.computeContentAssist=function(e,r){var i=this.gastProductionsCache[e];if((0,Xj.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,_j.nextPossibleTokensAfter)([i],r,this.tokenMatcher,this.maxLookahead)},t.prototype.getNextPossibleTokenTypes=function(e){var r=(0,Xj.first)(e.ruleStack),i=this.getGAstProductions(),n=i[r],s=new _j.NextAfterTokenWalker(n,e).startWalking();return s},t}();TI.ContentAssist=Wye});var oY=E(MI=>{"use strict";Object.defineProperty(MI,"__esModule",{value:!0});MI.GastRecorder=void 0;var Cn=Dt(),fo=hn(),zye=Gh(),$j=yu(),eY=nA(),Vye=Tn(),_ye=xI(),OI={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(OI);var tY=!0,rY=Math.pow(2,_ye.BITS_FOR_OCCURRENCE_IDX)-1,iY=(0,eY.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:zye.Lexer.NA});(0,$j.augmentTokenTypes)([iY]);var nY=(0,eY.createTokenInstance)(iY,`This IToken indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(nY);var Xye={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},$ye=function(){function t(){}return t.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},t.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var r=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)r(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},t.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var r=0;r<10;r++){var i=r>0?r:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},t.prototype.ACTION_RECORD=function(e){},t.prototype.BACKTRACK_RECORD=function(e,r){return function(){return!0}},t.prototype.LA_RECORD=function(e){return Vye.END_OF_FILE},t.prototype.topLevelRuleRecord=function(e,r){try{var i=new fo.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),r.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` - This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch(s){throw n}throw n}},t.prototype.optionInternalRecord=function(e,r){return tp.call(this,fo.Option,e,r)},t.prototype.atLeastOneInternalRecord=function(e,r){tp.call(this,fo.RepetitionMandatory,r,e)},t.prototype.atLeastOneSepFirstInternalRecord=function(e,r){tp.call(this,fo.RepetitionMandatoryWithSeparator,r,e,tY)},t.prototype.manyInternalRecord=function(e,r){tp.call(this,fo.Repetition,r,e)},t.prototype.manySepFirstInternalRecord=function(e,r){tp.call(this,fo.RepetitionWithSeparator,r,e,tY)},t.prototype.orInternalRecord=function(e,r){return Zye.call(this,e,r)},t.prototype.subruleInternalRecord=function(e,r,i){if(KI(r),!e||(0,Cn.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,Cn.peek)(this.recordingProdStack),o=e.ruleName,a=new fo.NonTerminal({idx:r,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?Xye:OI},t.prototype.consumeInternalRecord=function(e,r,i){if(KI(r),!(0,$j.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,Cn.peek)(this.recordingProdStack),o=new fo.Terminal({idx:r,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),nY},t}();MI.GastRecorder=$ye;function tp(t,e,r,i){i===void 0&&(i=!1),KI(r);var n=(0,Cn.peek)(this.recordingProdStack),s=(0,Cn.isFunction)(e)?e:e.DEF,o=new t({definition:[],idx:r});return i&&(o.separator=e.SEP),(0,Cn.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),OI}function Zye(t,e){var r=this;KI(e);var i=(0,Cn.peek)(this.recordingProdStack),n=(0,Cn.isArray)(t)===!1,s=n===!1?t:t.DEF,o=new fo.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});(0,Cn.has)(t,"MAX_LOOKAHEAD")&&(o.maxLookahead=t.MAX_LOOKAHEAD);var a=(0,Cn.some)(s,function(l){return(0,Cn.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,Cn.forEach)(s,function(l){var c=new fo.Alternative({definition:[]});o.definition.push(c),(0,Cn.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,Cn.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),r.recordingProdStack.push(c),l.ALT.call(r),r.recordingProdStack.pop()}),OI}function sY(t){return t===0?"":""+t}function KI(t){if(t<0||t>rY){var e=new Error("Invalid DSL Method idx value: <"+t+`> - `+("Idx value must be a none negative value smaller than "+(rY+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var AY=E(UI=>{"use strict";Object.defineProperty(UI,"__esModule",{value:!0});UI.PerformanceTracer=void 0;var aY=Dt(),ewe=Tn(),twe=function(){function t(){}return t.prototype.initPerformanceTracer=function(e){if((0,aY.has)(e,"traceInitPerf")){var r=e.traceInitPerf,i=typeof r=="number";this.traceInitMaxIdent=i?r:Infinity,this.traceInitPerf=i?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=ewe.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},t.prototype.TRACE_INIT=function(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,aY.timer)(r),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return r()},t}();UI.PerformanceTracer=twe});var lY=E(HI=>{"use strict";Object.defineProperty(HI,"__esModule",{value:!0});HI.applyMixins=void 0;function rwe(t,e){e.forEach(function(r){var i=r.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(t.prototype,n,s):t.prototype[n]=r.prototype[n]}})})}HI.applyMixins=rwe});var Tn=E(or=>{"use strict";var cY=or&&or.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(or,"__esModule",{value:!0});or.EmbeddedActionsParser=or.CstParser=or.Parser=or.EMPTY_ALT=or.ParserDefinitionErrorType=or.DEFAULT_RULE_CONFIG=or.DEFAULT_PARSER_CONFIG=or.END_OF_FILE=void 0;var Wi=Dt(),iwe=VG(),uY=nA(),gY=Wh(),fY=yj(),nwe=pS(),swe=kj(),owe=Kj(),awe=Hj(),Awe=jj(),lwe=Wj(),cwe=Vj(),uwe=Zj(),gwe=oY(),fwe=AY(),hwe=lY();or.END_OF_FILE=(0,uY.createTokenInstance)(uY.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(or.END_OF_FILE);or.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:gY.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});or.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var pwe;(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(pwe=or.ParserDefinitionErrorType||(or.ParserDefinitionErrorType={}));function dwe(t){return t===void 0&&(t=void 0),function(){return t}}or.EMPTY_ALT=dwe;var GI=function(){function t(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(r),i.initLexerAdapter(),i.initLooksAhead(r),i.initRecognizerEngine(e,r),i.initRecoverable(r),i.initTreeBuilder(r),i.initContentAssist(),i.initGastRecorder(r),i.initPerformanceTracer(r),(0,Wi.has)(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. - Please use the flag on the relevant DSL method instead. - See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`);this.skipValidations=(0,Wi.has)(r,"skipValidations")?r.skipValidations:or.DEFAULT_PARSER_CONFIG.skipValidations}return t.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},t.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var r;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,Wi.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,Wi.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,fY.resolveGrammar)({rules:(0,Wi.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,Wi.isEmpty)(n)&&e.skipValidations===!1){var s=(0,fY.validateGrammar)({rules:(0,Wi.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,Wi.values)(e.tokensMap),errMsgProvider:gY.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,Wi.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,iwe.computeAllProdsFollows)((0,Wi.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,Wi.values)(e.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,Wi.isEmpty)(e.definitionErrors))throw r=(0,Wi.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: - `+r.join(` -------------------------------- -`))})},t.DEFER_DEFINITION_ERRORS_HANDLING=!1,t}();or.Parser=GI;(0,hwe.applyMixins)(GI,[nwe.Recoverable,swe.LooksAhead,owe.TreeBuilder,awe.LexerAdapter,lwe.RecognizerEngine,Awe.RecognizerApi,cwe.ErrorHandler,uwe.ContentAssist,gwe.GastRecorder,fwe.PerformanceTracer]);var Cwe=function(t){cY(e,t);function e(r,i){i===void 0&&(i=or.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Wi.cloneObj)(i);return s.outputCst=!0,n=t.call(this,r,s)||this,n}return e}(GI);or.CstParser=Cwe;var mwe=function(t){cY(e,t);function e(r,i){i===void 0&&(i=or.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Wi.cloneObj)(i);return s.outputCst=!1,n=t.call(this,r,s)||this,n}return e}(GI);or.EmbeddedActionsParser=mwe});var pY=E(jI=>{"use strict";Object.defineProperty(jI,"__esModule",{value:!0});jI.createSyntaxDiagramsCode=void 0;var hY=Uv();function Ewe(t,e){var r=e===void 0?{}:e,i=r.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+hY.VERSION+"/diagrams/":i,s=r.css,o=s===void 0?"https://unpkg.com/chevrotain@"+hY.VERSION+"/diagrams/diagrams.css":s,a=` - - - - - -`,l=` - -`,c=` - - - - -`,u=` -
        -`,g=` - -`,f=` - -`;return a+l+c+u+g+f}jI.createSyntaxDiagramsCode=Ewe});var mY=E(He=>{"use strict";Object.defineProperty(He,"__esModule",{value:!0});He.Parser=He.createSyntaxDiagramsCode=He.clearCache=He.GAstVisitor=He.serializeProduction=He.serializeGrammar=He.Terminal=He.Rule=He.RepetitionWithSeparator=He.RepetitionMandatoryWithSeparator=He.RepetitionMandatory=He.Repetition=He.Option=He.NonTerminal=He.Alternative=He.Alternation=He.defaultLexerErrorProvider=He.NoViableAltException=He.NotAllInputParsedException=He.MismatchedTokenException=He.isRecognitionException=He.EarlyExitException=He.defaultParserErrorProvider=He.tokenName=He.tokenMatcher=He.tokenLabel=He.EOF=He.createTokenInstance=He.createToken=He.LexerDefinitionErrorType=He.Lexer=He.EMPTY_ALT=He.ParserDefinitionErrorType=He.EmbeddedActionsParser=He.CstParser=He.VERSION=void 0;var Iwe=Uv();Object.defineProperty(He,"VERSION",{enumerable:!0,get:function(){return Iwe.VERSION}});var YI=Tn();Object.defineProperty(He,"CstParser",{enumerable:!0,get:function(){return YI.CstParser}});Object.defineProperty(He,"EmbeddedActionsParser",{enumerable:!0,get:function(){return YI.EmbeddedActionsParser}});Object.defineProperty(He,"ParserDefinitionErrorType",{enumerable:!0,get:function(){return YI.ParserDefinitionErrorType}});Object.defineProperty(He,"EMPTY_ALT",{enumerable:!0,get:function(){return YI.EMPTY_ALT}});var dY=Gh();Object.defineProperty(He,"Lexer",{enumerable:!0,get:function(){return dY.Lexer}});Object.defineProperty(He,"LexerDefinitionErrorType",{enumerable:!0,get:function(){return dY.LexerDefinitionErrorType}});var ku=nA();Object.defineProperty(He,"createToken",{enumerable:!0,get:function(){return ku.createToken}});Object.defineProperty(He,"createTokenInstance",{enumerable:!0,get:function(){return ku.createTokenInstance}});Object.defineProperty(He,"EOF",{enumerable:!0,get:function(){return ku.EOF}});Object.defineProperty(He,"tokenLabel",{enumerable:!0,get:function(){return ku.tokenLabel}});Object.defineProperty(He,"tokenMatcher",{enumerable:!0,get:function(){return ku.tokenMatcher}});Object.defineProperty(He,"tokenName",{enumerable:!0,get:function(){return ku.tokenName}});var ywe=Wh();Object.defineProperty(He,"defaultParserErrorProvider",{enumerable:!0,get:function(){return ywe.defaultParserErrorProvider}});var rp=vu();Object.defineProperty(He,"EarlyExitException",{enumerable:!0,get:function(){return rp.EarlyExitException}});Object.defineProperty(He,"isRecognitionException",{enumerable:!0,get:function(){return rp.isRecognitionException}});Object.defineProperty(He,"MismatchedTokenException",{enumerable:!0,get:function(){return rp.MismatchedTokenException}});Object.defineProperty(He,"NotAllInputParsedException",{enumerable:!0,get:function(){return rp.NotAllInputParsedException}});Object.defineProperty(He,"NoViableAltException",{enumerable:!0,get:function(){return rp.NoViableAltException}});var wwe=_v();Object.defineProperty(He,"defaultLexerErrorProvider",{enumerable:!0,get:function(){return wwe.defaultLexerErrorProvider}});var ho=hn();Object.defineProperty(He,"Alternation",{enumerable:!0,get:function(){return ho.Alternation}});Object.defineProperty(He,"Alternative",{enumerable:!0,get:function(){return ho.Alternative}});Object.defineProperty(He,"NonTerminal",{enumerable:!0,get:function(){return ho.NonTerminal}});Object.defineProperty(He,"Option",{enumerable:!0,get:function(){return ho.Option}});Object.defineProperty(He,"Repetition",{enumerable:!0,get:function(){return ho.Repetition}});Object.defineProperty(He,"RepetitionMandatory",{enumerable:!0,get:function(){return ho.RepetitionMandatory}});Object.defineProperty(He,"RepetitionMandatoryWithSeparator",{enumerable:!0,get:function(){return ho.RepetitionMandatoryWithSeparator}});Object.defineProperty(He,"RepetitionWithSeparator",{enumerable:!0,get:function(){return ho.RepetitionWithSeparator}});Object.defineProperty(He,"Rule",{enumerable:!0,get:function(){return ho.Rule}});Object.defineProperty(He,"Terminal",{enumerable:!0,get:function(){return ho.Terminal}});var CY=hn();Object.defineProperty(He,"serializeGrammar",{enumerable:!0,get:function(){return CY.serializeGrammar}});Object.defineProperty(He,"serializeProduction",{enumerable:!0,get:function(){return CY.serializeProduction}});var Bwe=wu();Object.defineProperty(He,"GAstVisitor",{enumerable:!0,get:function(){return Bwe.GAstVisitor}});function Qwe(){console.warn(`The clearCache function was 'soft' removed from the Chevrotain API. - It performs no action other than printing this message. - Please avoid using it as it will be completely removed in the future`)}He.clearCache=Qwe;var bwe=pY();Object.defineProperty(He,"createSyntaxDiagramsCode",{enumerable:!0,get:function(){return bwe.createSyntaxDiagramsCode}});var vwe=function(){function t(){throw new Error(`The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead. -See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return t}();He.Parser=vwe});var yY=E((Trt,EY)=>{var qI=mY(),ca=qI.createToken,IY=qI.tokenMatcher,yS=qI.Lexer,Swe=qI.EmbeddedActionsParser;EY.exports=t=>{let e=ca({name:"LogicalOperator",pattern:yS.NA}),r=ca({name:"Or",pattern:/\|/,categories:e}),i=ca({name:"Xor",pattern:/\^/,categories:e}),n=ca({name:"And",pattern:/&/,categories:e}),s=ca({name:"Not",pattern:/!/}),o=ca({name:"LParen",pattern:/\(/}),a=ca({name:"RParen",pattern:/\)/}),l=ca({name:"Query",pattern:t}),u=[ca({name:"WhiteSpace",pattern:/\s+/,group:yS.SKIPPED}),r,i,n,o,a,s,e,l],g=new yS(u);class f extends Swe{constructor(p){super(u);this.RULE("expression",()=>this.SUBRULE(this.logicalExpression)),this.RULE("logicalExpression",()=>{let m=this.SUBRULE(this.atomicExpression);return this.MANY(()=>{let I=m,B=this.CONSUME(e),b=this.SUBRULE2(this.atomicExpression);IY(B,r)?m=R=>I(R)||b(R):IY(B,i)?m=R=>!!(I(R)^b(R)):m=R=>I(R)&&b(R)}),m}),this.RULE("atomicExpression",()=>this.OR([{ALT:()=>this.SUBRULE(this.parenthesisExpression)},{ALT:()=>{let{image:d}=this.CONSUME(l);return m=>m(d)}},{ALT:()=>{this.CONSUME(s);let d=this.SUBRULE(this.atomicExpression);return m=>!d(m)}}])),this.RULE("parenthesisExpression",()=>{let d;return this.CONSUME(o),d=this.SUBRULE(this.expression),this.CONSUME(a),d}),this.performSelfAnalysis()}}return{TinylogicLexer:g,TinylogicParser:f}}});var wY=E(JI=>{var xwe=yY();JI.makeParser=(t=/[a-z]+/)=>{let{TinylogicLexer:e,TinylogicParser:r}=xwe(t),i=new r;return(n,s)=>{let o=e.tokenize(n);return i.input=o.tokens,i.expression()(s)}};JI.parse=JI.makeParser()});var QY=E((Ort,BY)=>{"use strict";BY.exports=(...t)=>[...new Set([].concat(...t))]});var wS=E((Krt,bY)=>{"use strict";var kwe=require("stream"),vY=kwe.PassThrough,Pwe=Array.prototype.slice;bY.exports=Dwe;function Dwe(){let t=[],e=!1,r=Pwe.call(arguments),i=r[r.length-1];i&&!Array.isArray(i)&&i.pipe==null?r.pop():i={};let n=i.end!==!1;i.objectMode==null&&(i.objectMode=!0),i.highWaterMark==null&&(i.highWaterMark=64*1024);let s=vY(i);function o(){for(let c=0,u=arguments.length;c0||(e=!1,a())}function f(h){function p(){h.removeListener("merge2UnpipeEnd",p),h.removeListener("end",p),g()}if(h._readableState.endEmitted)return g();h.on("merge2UnpipeEnd",p),h.on("end",p),h.pipe(s,{end:!1}),h.resume()}for(let h=0;h{"use strict";Object.defineProperty(WI,"__esModule",{value:!0});function Rwe(t){return t.reduce((e,r)=>[].concat(e,r),[])}WI.flatten=Rwe;function Fwe(t,e){let r=[[]],i=0;for(let n of t)e(n)?(i++,r[i]=[]):r[i].push(n);return r}WI.splitWhen=Fwe});var kY=E(BS=>{"use strict";Object.defineProperty(BS,"__esModule",{value:!0});function Nwe(t){return t.code==="ENOENT"}BS.isEnoentCodeError=Nwe});var DY=E(QS=>{"use strict";Object.defineProperty(QS,"__esModule",{value:!0});var PY=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function Lwe(t,e){return new PY(t,e)}QS.createDirentFromStats=Lwe});var RY=E(Pu=>{"use strict";Object.defineProperty(Pu,"__esModule",{value:!0});var Twe=require("path"),Mwe=2,Owe=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;function Kwe(t){return t.replace(/\\/g,"/")}Pu.unixify=Kwe;function Uwe(t,e){return Twe.resolve(t,e)}Pu.makeAbsolute=Uwe;function Hwe(t){return t.replace(Owe,"\\$2")}Pu.escape=Hwe;function Gwe(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice(Mwe)}return t}Pu.removeLeadingDotSegment=Gwe});var NY=E((Yrt,FY)=>{FY.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var TY=E((qrt,LY)=>{var jwe=NY(),Ywe={"{":"}","(":")","[":"]"},qwe=/\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/,Jwe=/\\(.)|(^!|[*?{}()[\]]|\(\?)/;LY.exports=function(e,r){if(typeof e!="string"||e==="")return!1;if(jwe(e))return!0;var i=qwe,n;for(r&&r.strict===!1&&(i=Jwe);n=i.exec(e);){if(n[2])return!0;var s=n.index+n[0].length,o=n[1],a=o?Ywe[o]:null;if(o&&a){var l=e.indexOf(a,s);l!==-1&&(s=l+1)}e=e.slice(s)}return!1}});var OY=E((Jrt,MY)=>{"use strict";var Wwe=TY(),zwe=require("path").posix.dirname,Vwe=require("os").platform()==="win32",bS="/",_we=/\\/g,Xwe=/[\{\[].*[\}\]]$/,Zwe=/(^|[^\\])([\{\[]|\([^\)]+$)/,$we=/\\([\!\*\?\|\[\]\(\)\{\}])/g;MY.exports=function(e,r){var i=Object.assign({flipBackslashes:!0},r);i.flipBackslashes&&Vwe&&e.indexOf(bS)<0&&(e=e.replace(_we,bS)),Xwe.test(e)&&(e+=bS),e+="a";do e=zwe(e);while(Wwe(e)||Zwe.test(e));return e.replace($we,"$1")}});var WY=E(Hr=>{"use strict";Object.defineProperty(Hr,"__esModule",{value:!0});var eBe=require("path"),tBe=OY(),KY=Nn(),rBe=iv(),UY="**",iBe="\\",nBe=/[*?]|^!/,sBe=/\[.*]/,oBe=/(?:^|[^!*+?@])\(.*\|.*\)/,aBe=/[!*+?@]\(.*\)/,ABe=/{.*(?:,|\.\.).*}/;function GY(t,e={}){return!HY(t,e)}Hr.isStaticPattern=GY;function HY(t,e={}){return!!(e.caseSensitiveMatch===!1||t.includes(iBe)||nBe.test(t)||sBe.test(t)||oBe.test(t)||e.extglob!==!1&&aBe.test(t)||e.braceExpansion!==!1&&ABe.test(t))}Hr.isDynamicPattern=HY;function lBe(t){return zI(t)?t.slice(1):t}Hr.convertToPositivePattern=lBe;function cBe(t){return"!"+t}Hr.convertToNegativePattern=cBe;function zI(t){return t.startsWith("!")&&t[1]!=="("}Hr.isNegativePattern=zI;function jY(t){return!zI(t)}Hr.isPositivePattern=jY;function uBe(t){return t.filter(zI)}Hr.getNegativePatterns=uBe;function gBe(t){return t.filter(jY)}Hr.getPositivePatterns=gBe;function fBe(t){return tBe(t,{flipBackslashes:!1})}Hr.getBaseDirectory=fBe;function hBe(t){return t.includes(UY)}Hr.hasGlobStar=hBe;function YY(t){return t.endsWith("/"+UY)}Hr.endsWithSlashGlobStar=YY;function pBe(t){let e=eBe.basename(t);return YY(t)||GY(e)}Hr.isAffectDepthOfReadingPattern=pBe;function dBe(t){return t.reduce((e,r)=>e.concat(qY(r)),[])}Hr.expandPatternsWithBraceExpansion=dBe;function qY(t){return KY.braces(t,{expand:!0,nodupes:!0})}Hr.expandBraceExpansion=qY;function CBe(t,e){let r=rBe.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.parts.length===0?[t]:r.parts}Hr.getPatternParts=CBe;function JY(t,e){return KY.makeRe(t,e)}Hr.makeRe=JY;function mBe(t,e){return t.map(r=>JY(r,e))}Hr.convertPatternsToRe=mBe;function EBe(t,e){return e.some(r=>r.test(t))}Hr.matchAny=EBe});var VY=E(vS=>{"use strict";Object.defineProperty(vS,"__esModule",{value:!0});var IBe=wS();function yBe(t){let e=IBe(t);return t.forEach(r=>{r.once("error",i=>e.emit("error",i))}),e.once("close",()=>zY(t)),e.once("end",()=>zY(t)),e}vS.merge=yBe;function zY(t){t.forEach(e=>e.emit("close"))}});var _Y=E(VI=>{"use strict";Object.defineProperty(VI,"__esModule",{value:!0});function wBe(t){return typeof t=="string"}VI.isString=wBe;function BBe(t){return t===""}VI.isEmpty=BBe});var ga=E(ua=>{"use strict";Object.defineProperty(ua,"__esModule",{value:!0});var QBe=xY();ua.array=QBe;var bBe=kY();ua.errno=bBe;var vBe=DY();ua.fs=vBe;var SBe=RY();ua.path=SBe;var xBe=WY();ua.pattern=xBe;var kBe=VY();ua.stream=kBe;var PBe=_Y();ua.string=PBe});var tq=E(fa=>{"use strict";Object.defineProperty(fa,"__esModule",{value:!0});var Ll=ga();function DBe(t,e){let r=XY(t),i=ZY(t,e.ignore),n=r.filter(l=>Ll.pattern.isStaticPattern(l,e)),s=r.filter(l=>Ll.pattern.isDynamicPattern(l,e)),o=SS(n,i,!1),a=SS(s,i,!0);return o.concat(a)}fa.generate=DBe;function SS(t,e,r){let i=$Y(t);return"."in i?[xS(".",t,e,r)]:eq(i,e,r)}fa.convertPatternsToTasks=SS;function XY(t){return Ll.pattern.getPositivePatterns(t)}fa.getPositivePatterns=XY;function ZY(t,e){return Ll.pattern.getNegativePatterns(t).concat(e).map(Ll.pattern.convertToPositivePattern)}fa.getNegativePatternsAsPositive=ZY;function $Y(t){let e={};return t.reduce((r,i)=>{let n=Ll.pattern.getBaseDirectory(i);return n in r?r[n].push(i):r[n]=[i],r},e)}fa.groupPatternsByBaseDirectory=$Y;function eq(t,e,r){return Object.keys(t).map(i=>xS(i,t[i],e,r))}fa.convertPatternGroupsToTasks=eq;function xS(t,e,r,i){return{dynamic:i,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Ll.pattern.convertToNegativePattern))}}fa.convertPatternGroupToTask=xS});var iq=E(_I=>{"use strict";Object.defineProperty(_I,"__esModule",{value:!0});_I.read=void 0;function RBe(t,e,r){e.fs.lstat(t,(i,n)=>{if(i!==null){rq(r,i);return}if(!n.isSymbolicLink()||!e.followSymbolicLink){kS(r,n);return}e.fs.stat(t,(s,o)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){rq(r,s);return}kS(r,n);return}e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),kS(r,o)})})}_I.read=RBe;function rq(t,e){t(e)}function kS(t,e){t(null,e)}});var nq=E(XI=>{"use strict";Object.defineProperty(XI,"__esModule",{value:!0});XI.read=void 0;function FBe(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let i=e.fs.statSync(t);return e.markSymbolicLink&&(i.isSymbolicLink=()=>!0),i}catch(i){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw i}}XI.read=FBe});var sq=E(AA=>{"use strict";Object.defineProperty(AA,"__esModule",{value:!0});AA.createFileSystemAdapter=AA.FILE_SYSTEM_ADAPTER=void 0;var ZI=require("fs");AA.FILE_SYSTEM_ADAPTER={lstat:ZI.lstat,stat:ZI.stat,lstatSync:ZI.lstatSync,statSync:ZI.statSync};function NBe(t){return t===void 0?AA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},AA.FILE_SYSTEM_ADAPTER),t)}AA.createFileSystemAdapter=NBe});var aq=E(PS=>{"use strict";Object.defineProperty(PS,"__esModule",{value:!0});var LBe=sq(),oq=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=LBe.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e!=null?e:r}};PS.default=oq});var Tl=E(lA=>{"use strict";Object.defineProperty(lA,"__esModule",{value:!0});lA.statSync=lA.stat=lA.Settings=void 0;var Aq=iq(),TBe=nq(),DS=aq();lA.Settings=DS.default;function MBe(t,e,r){if(typeof e=="function"){Aq.read(t,RS(),e);return}Aq.read(t,RS(e),r)}lA.stat=MBe;function OBe(t,e){let r=RS(e);return TBe.read(t,r)}lA.statSync=OBe;function RS(t={}){return t instanceof DS.default?t:new DS.default(t)}});var cq=E((iit,lq)=>{lq.exports=KBe;function KBe(t,e){var r,i,n,s=!0;Array.isArray(t)?(r=[],i=t.length):(n=Object.keys(t),r={},i=n.length);function o(l){function c(){e&&e(l,r),e=null}s?process.nextTick(c):c()}function a(l,c,u){r[l]=u,(--i==0||c)&&o(c)}i?n?n.forEach(function(l){t[l](function(c,u){a(l,c,u)})}):t.forEach(function(l,c){l(function(u,g){a(c,u,g)})}):o(null),s=!1}});var FS=E($I=>{"use strict";Object.defineProperty($I,"__esModule",{value:!0});$I.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var ey=process.versions.node.split(".");if(ey[0]===void 0||ey[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var uq=Number.parseInt(ey[0],10),UBe=Number.parseInt(ey[1],10),gq=10,HBe=10,GBe=uq>gq,jBe=uq===gq&&UBe>=HBe;$I.IS_SUPPORT_READDIR_WITH_FILE_TYPES=GBe||jBe});var hq=E(ty=>{"use strict";Object.defineProperty(ty,"__esModule",{value:!0});ty.createDirentFromStats=void 0;var fq=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function YBe(t,e){return new fq(t,e)}ty.createDirentFromStats=YBe});var NS=E(ry=>{"use strict";Object.defineProperty(ry,"__esModule",{value:!0});ry.fs=void 0;var qBe=hq();ry.fs=qBe});var LS=E(iy=>{"use strict";Object.defineProperty(iy,"__esModule",{value:!0});iy.joinPathSegments=void 0;function JBe(t,e,r){return t.endsWith(r)?t+e:t+r+e}iy.joinPathSegments=JBe});var Iq=E(cA=>{"use strict";Object.defineProperty(cA,"__esModule",{value:!0});cA.readdir=cA.readdirWithFileTypes=cA.read=void 0;var WBe=Tl(),pq=cq(),zBe=FS(),dq=NS(),Cq=LS();function VBe(t,e,r){if(!e.stats&&zBe.IS_SUPPORT_READDIR_WITH_FILE_TYPES){mq(t,e,r);return}Eq(t,e,r)}cA.read=VBe;function mq(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(i,n)=>{if(i!==null){ny(r,i);return}let s=n.map(a=>({dirent:a,name:a.name,path:Cq.joinPathSegments(t,a.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){TS(r,s);return}let o=s.map(a=>_Be(a,e));pq(o,(a,l)=>{if(a!==null){ny(r,a);return}TS(r,l)})})}cA.readdirWithFileTypes=mq;function _Be(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(i,n)=>{if(i!==null){if(e.throwErrorOnBrokenSymbolicLink){r(i);return}r(null,t);return}t.dirent=dq.fs.createDirentFromStats(t.name,n),r(null,t)})}}function Eq(t,e,r){e.fs.readdir(t,(i,n)=>{if(i!==null){ny(r,i);return}let s=n.map(o=>{let a=Cq.joinPathSegments(t,o,e.pathSegmentSeparator);return l=>{WBe.stat(a,e.fsStatSettings,(c,u)=>{if(c!==null){l(c);return}let g={name:o,path:a,dirent:dq.fs.createDirentFromStats(o,u)};e.stats&&(g.stats=u),l(null,g)})}});pq(s,(o,a)=>{if(o!==null){ny(r,o);return}TS(r,a)})})}cA.readdir=Eq;function ny(t,e){t(e)}function TS(t,e){t(null,e)}});var bq=E(uA=>{"use strict";Object.defineProperty(uA,"__esModule",{value:!0});uA.readdir=uA.readdirWithFileTypes=uA.read=void 0;var XBe=Tl(),ZBe=FS(),yq=NS(),wq=LS();function $Be(t,e){return!e.stats&&ZBe.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Bq(t,e):Qq(t,e)}uA.read=$Be;function Bq(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(i=>{let n={dirent:i,name:i.name,path:wq.joinPathSegments(t,i.name,e.pathSegmentSeparator)};if(n.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let s=e.fs.statSync(n.path);n.dirent=yq.fs.createDirentFromStats(n.name,s)}catch(s){if(e.throwErrorOnBrokenSymbolicLink)throw s}return n})}uA.readdirWithFileTypes=Bq;function Qq(t,e){return e.fs.readdirSync(t).map(i=>{let n=wq.joinPathSegments(t,i,e.pathSegmentSeparator),s=XBe.statSync(n,e.fsStatSettings),o={name:i,path:n,dirent:yq.fs.createDirentFromStats(i,s)};return e.stats&&(o.stats=s),o})}uA.readdir=Qq});var vq=E(gA=>{"use strict";Object.defineProperty(gA,"__esModule",{value:!0});gA.createFileSystemAdapter=gA.FILE_SYSTEM_ADAPTER=void 0;var Du=require("fs");gA.FILE_SYSTEM_ADAPTER={lstat:Du.lstat,stat:Du.stat,lstatSync:Du.lstatSync,statSync:Du.statSync,readdir:Du.readdir,readdirSync:Du.readdirSync};function e0e(t){return t===void 0?gA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},gA.FILE_SYSTEM_ADAPTER),t)}gA.createFileSystemAdapter=e0e});var xq=E(MS=>{"use strict";Object.defineProperty(MS,"__esModule",{value:!0});var t0e=require("path"),r0e=Tl(),i0e=vq(),Sq=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=i0e.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,t0e.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new r0e.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e!=null?e:r}};MS.default=Sq});var sy=E(fA=>{"use strict";Object.defineProperty(fA,"__esModule",{value:!0});fA.Settings=fA.scandirSync=fA.scandir=void 0;var kq=Iq(),n0e=bq(),OS=xq();fA.Settings=OS.default;function s0e(t,e,r){if(typeof e=="function"){kq.read(t,KS(),e);return}kq.read(t,KS(e),r)}fA.scandir=s0e;function o0e(t,e){let r=KS(e);return n0e.read(t,r)}fA.scandirSync=o0e;function KS(t={}){return t instanceof OS.default?t:new OS.default(t)}});var Dq=E((fit,Pq)=>{"use strict";function a0e(t){var e=new t,r=e;function i(){var s=e;return s.next?e=s.next:(e=new t,r=e),s.next=null,s}function n(s){r.next=s,r=s}return{get:i,release:n}}Pq.exports=a0e});var Fq=E((hit,US)=>{"use strict";var A0e=Dq();function Rq(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),r<1)throw new Error("fastqueue concurrency must be greater than 1");var i=A0e(l0e),n=null,s=null,o=0,a=null,l={push:d,drain:po,saturated:po,pause:u,paused:!1,concurrency:r,running:c,resume:h,idle:p,length:g,getQueue:f,unshift:m,empty:po,kill:B,killAndDrain:b,error:R};return l;function c(){return o}function u(){l.paused=!0}function g(){for(var H=n,L=0;H;)H=H.next,L++;return L}function f(){for(var H=n,L=[];H;)L.push(H.value),H=H.next;return L}function h(){if(!!l.paused){l.paused=!1;for(var H=0;H{"use strict";Object.defineProperty(Co,"__esModule",{value:!0});Co.joinPathSegments=Co.replacePathSegmentSeparator=Co.isAppliedFilter=Co.isFatalError=void 0;function u0e(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Co.isFatalError=u0e;function g0e(t,e){return t===null||t(e)}Co.isAppliedFilter=g0e;function f0e(t,e){return t.split(/[/\\]/).join(e)}Co.replacePathSegmentSeparator=f0e;function h0e(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}Co.joinPathSegments=h0e});var GS=E(HS=>{"use strict";Object.defineProperty(HS,"__esModule",{value:!0});var p0e=oy(),Nq=class{constructor(e,r){this._root=e,this._settings=r,this._root=p0e.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};HS.default=Nq});var YS=E(jS=>{"use strict";Object.defineProperty(jS,"__esModule",{value:!0});var d0e=require("events"),C0e=sy(),m0e=Fq(),ay=oy(),E0e=GS(),Lq=class extends E0e.default{constructor(e,r){super(e,r);this._settings=r,this._scandir=C0e.scandir,this._emitter=new d0e.EventEmitter,this._queue=m0e(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let i={directory:e,base:r};this._queue.push(i,n=>{n!==null&&this._handleError(n)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(i,n)=>{if(i!==null){r(i,void 0);return}for(let s of n)this._handleEntry(s,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!ay.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let i=e.path;r!==void 0&&(e.path=ay.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),ay.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&ay.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};jS.default=Lq});var Mq=E(qS=>{"use strict";Object.defineProperty(qS,"__esModule",{value:!0});var I0e=YS(),Tq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new I0e.default(this._root,this._settings),this._storage=new Set}read(e){this._reader.onError(r=>{y0e(e,r)}),this._reader.onEntry(r=>{this._storage.add(r)}),this._reader.onEnd(()=>{w0e(e,[...this._storage])}),this._reader.read()}};qS.default=Tq;function y0e(t,e){t(e)}function w0e(t,e){t(null,e)}});var Kq=E(JS=>{"use strict";Object.defineProperty(JS,"__esModule",{value:!0});var B0e=require("stream"),Q0e=YS(),Oq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Q0e.default(this._root,this._settings),this._stream=new B0e.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};JS.default=Oq});var Hq=E(WS=>{"use strict";Object.defineProperty(WS,"__esModule",{value:!0});var b0e=sy(),Ay=oy(),v0e=GS(),Uq=class extends v0e.default{constructor(){super(...arguments);this._scandir=b0e.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let i=this._scandir(e,this._settings.fsScandirSettings);for(let n of i)this._handleEntry(n,r)}catch(i){this._handleError(i)}}_handleError(e){if(!!Ay.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let i=e.path;r!==void 0&&(e.path=Ay.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),Ay.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&Ay.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_pushToStorage(e){this._storage.add(e)}};WS.default=Uq});var jq=E(zS=>{"use strict";Object.defineProperty(zS,"__esModule",{value:!0});var S0e=Hq(),Gq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new S0e.default(this._root,this._settings)}read(){return this._reader.read()}};zS.default=Gq});var qq=E(VS=>{"use strict";Object.defineProperty(VS,"__esModule",{value:!0});var x0e=require("path"),k0e=sy(),Yq=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,x0e.sep),this.fsScandirSettings=new k0e.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e!=null?e:r}};VS.default=Yq});var XS=E(mo=>{"use strict";Object.defineProperty(mo,"__esModule",{value:!0});mo.Settings=mo.walkStream=mo.walkSync=mo.walk=void 0;var Jq=Mq(),P0e=Kq(),D0e=jq(),_S=qq();mo.Settings=_S.default;function R0e(t,e,r){if(typeof e=="function"){new Jq.default(t,ly()).read(e);return}new Jq.default(t,ly(e)).read(r)}mo.walk=R0e;function F0e(t,e){let r=ly(e);return new D0e.default(t,r).read()}mo.walkSync=F0e;function N0e(t,e){let r=ly(e);return new P0e.default(t,r).read()}mo.walkStream=N0e;function ly(t={}){return t instanceof _S.default?t:new _S.default(t)}});var $S=E(ZS=>{"use strict";Object.defineProperty(ZS,"__esModule",{value:!0});var L0e=require("path"),T0e=Tl(),Wq=ga(),zq=class{constructor(e){this._settings=e,this._fsStatSettings=new T0e.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return L0e.resolve(this._settings.cwd,e)}_makeEntry(e,r){let i={name:r,path:r,dirent:Wq.fs.createDirentFromStats(r,e)};return this._settings.stats&&(i.stats=e),i}_isFatalError(e){return!Wq.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};ZS.default=zq});var tx=E(ex=>{"use strict";Object.defineProperty(ex,"__esModule",{value:!0});var M0e=require("stream"),O0e=Tl(),K0e=XS(),U0e=$S(),Vq=class extends U0e.default{constructor(){super(...arguments);this._walkStream=K0e.walkStream,this._stat=O0e.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let i=e.map(this._getFullEntryPath,this),n=new M0e.PassThrough({objectMode:!0});n._write=(s,o,a)=>this._getEntry(i[s],e[s],r).then(l=>{l!==null&&r.entryFilter(l)&&n.push(l),s===i.length-1&&n.end(),a()}).catch(a);for(let s=0;sthis._makeEntry(n,r)).catch(n=>{if(i.errorFilter(n))return null;throw n})}_getStat(e){return new Promise((r,i)=>{this._stat(e,this._fsStatSettings,(n,s)=>n===null?r(s):i(n))})}};ex.default=Vq});var Xq=E(rx=>{"use strict";Object.defineProperty(rx,"__esModule",{value:!0});var Ru=ga(),_q=class{constructor(e,r,i){this._patterns=e,this._settings=r,this._micromatchOptions=i,this._storage=[],this._fillStorage()}_fillStorage(){let e=Ru.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let r of e){let i=this._getPatternSegments(r),n=this._splitSegmentsIntoSections(i);this._storage.push({complete:n.length<=1,pattern:r,segments:i,sections:n})}}_getPatternSegments(e){return Ru.pattern.getPatternParts(e,this._micromatchOptions).map(i=>Ru.pattern.isDynamicPattern(i,this._settings)?{dynamic:!0,pattern:i,patternRe:Ru.pattern.makeRe(i,this._micromatchOptions)}:{dynamic:!1,pattern:i})}_splitSegmentsIntoSections(e){return Ru.array.splitWhen(e,r=>r.dynamic&&Ru.pattern.hasGlobStar(r.pattern))}};rx.default=_q});var $q=E(ix=>{"use strict";Object.defineProperty(ix,"__esModule",{value:!0});var H0e=Xq(),Zq=class extends H0e.default{match(e){let r=e.split("/"),i=r.length,n=this._storage.filter(s=>!s.complete||s.segments.length>i);for(let s of n){let o=s.sections[0];if(!s.complete&&i>o.length||r.every((l,c)=>{let u=s.segments[c];return!!(u.dynamic&&u.patternRe.test(l)||!u.dynamic&&u.pattern===l)}))return!0}return!1}};ix.default=Zq});var tJ=E(nx=>{"use strict";Object.defineProperty(nx,"__esModule",{value:!0});var cy=ga(),G0e=$q(),eJ=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,i){let n=this._getMatcher(r),s=this._getNegativePatternsRe(i);return o=>this._filter(e,o,n,s)}_getMatcher(e){return new G0e.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(cy.pattern.isAffectDepthOfReadingPattern);return cy.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,i,n){let s=this._getEntryLevel(e,r.path);if(this._isSkippedByDeep(s)||this._isSkippedSymbolicLink(r))return!1;let o=cy.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(o,i)?!1:this._isSkippedByNegativePatterns(o,n)}_isSkippedByDeep(e){return e>=this._settings.deep}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_getEntryLevel(e,r){let i=e.split("/").length;return r.split("/").length-(e===""?0:i)}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!cy.pattern.matchAny(e,r)}};nx.default=eJ});var iJ=E(sx=>{"use strict";Object.defineProperty(sx,"__esModule",{value:!0});var ip=ga(),rJ=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let i=ip.pattern.convertPatternsToRe(e,this._micromatchOptions),n=ip.pattern.convertPatternsToRe(r,this._micromatchOptions);return s=>this._filter(s,i,n)}_filter(e,r,i){if(this._settings.unique){if(this._isDuplicateEntry(e))return!1;this._createIndexRecord(e)}if(this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e,i))return!1;let n=this._settings.baseNameMatch?e.name:e.path;return this._isMatchToPatterns(n,r)&&!this._isMatchToPatterns(e.path,i)}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let i=ip.path.makeAbsolute(this._settings.cwd,e.path);return this._isMatchToPatterns(i,r)}_isMatchToPatterns(e,r){let i=ip.path.removeLeadingDotSegment(e);return ip.pattern.matchAny(i,r)}};sx.default=rJ});var sJ=E(ox=>{"use strict";Object.defineProperty(ox,"__esModule",{value:!0});var j0e=ga(),nJ=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return j0e.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};ox.default=nJ});var AJ=E(ax=>{"use strict";Object.defineProperty(ax,"__esModule",{value:!0});var oJ=ga(),aJ=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=oJ.path.makeAbsolute(this._settings.cwd,r),r=oJ.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};ax.default=aJ});var uy=E(Ax=>{"use strict";Object.defineProperty(Ax,"__esModule",{value:!0});var Y0e=require("path"),q0e=tJ(),J0e=iJ(),W0e=sJ(),z0e=AJ(),lJ=class{constructor(e){this._settings=e,this.errorFilter=new W0e.default(this._settings),this.entryFilter=new J0e.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new q0e.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new z0e.default(this._settings)}_getRootDirectory(e){return Y0e.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};Ax.default=lJ});var uJ=E(lx=>{"use strict";Object.defineProperty(lx,"__esModule",{value:!0});var V0e=tx(),_0e=uy(),cJ=class extends _0e.default{constructor(){super(...arguments);this._reader=new V0e.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),n=[];return new Promise((s,o)=>{let a=this.api(r,e,i);a.once("error",o),a.on("data",l=>n.push(i.transform(l))),a.once("end",()=>s(n))})}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};lx.default=cJ});var fJ=E(cx=>{"use strict";Object.defineProperty(cx,"__esModule",{value:!0});var X0e=require("stream"),Z0e=tx(),$0e=uy(),gJ=class extends $0e.default{constructor(){super(...arguments);this._reader=new Z0e.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),n=this.api(r,e,i),s=new X0e.Readable({objectMode:!0,read:()=>{}});return n.once("error",o=>s.emit("error",o)).on("data",o=>s.emit("data",i.transform(o))).once("end",()=>s.emit("end")),s.once("close",()=>n.destroy()),s}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};cx.default=gJ});var pJ=E(ux=>{"use strict";Object.defineProperty(ux,"__esModule",{value:!0});var eQe=Tl(),tQe=XS(),rQe=$S(),hJ=class extends rQe.default{constructor(){super(...arguments);this._walkSync=tQe.walkSync,this._statSync=eQe.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let i=[];for(let n of e){let s=this._getFullEntryPath(n),o=this._getEntry(s,n,r);o===null||!r.entryFilter(o)||i.push(o)}return i}_getEntry(e,r,i){try{let n=this._getStat(e);return this._makeEntry(n,r)}catch(n){if(i.errorFilter(n))return null;throw n}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};ux.default=hJ});var CJ=E(gx=>{"use strict";Object.defineProperty(gx,"__esModule",{value:!0});var iQe=pJ(),nQe=uy(),dJ=class extends nQe.default{constructor(){super(...arguments);this._reader=new iQe.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e);return this.api(r,e,i).map(i.transform)}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};gx.default=dJ});var EJ=E(np=>{"use strict";Object.defineProperty(np,"__esModule",{value:!0});var Fu=require("fs"),sQe=require("os"),oQe=sQe.cpus().length;np.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:Fu.lstat,lstatSync:Fu.lstatSync,stat:Fu.stat,statSync:Fu.statSync,readdir:Fu.readdir,readdirSync:Fu.readdirSync};var mJ=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,oQe),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,Infinity),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},np.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};np.default=mJ});var gy=E((Oit,IJ)=>{"use strict";var yJ=tq(),aQe=uJ(),AQe=fJ(),lQe=CJ(),fx=EJ(),Ml=ga();async function px(t,e){Nu(t);let r=hx(t,aQe.default,e),i=await Promise.all(r);return Ml.array.flatten(i)}(function(t){function e(o,a){Nu(o);let l=hx(o,lQe.default,a);return Ml.array.flatten(l)}t.sync=e;function r(o,a){Nu(o);let l=hx(o,AQe.default,a);return Ml.stream.merge(l)}t.stream=r;function i(o,a){Nu(o);let l=[].concat(o),c=new fx.default(a);return yJ.generate(l,c)}t.generateTasks=i;function n(o,a){Nu(o);let l=new fx.default(a);return Ml.pattern.isDynamicPattern(o,l)}t.isDynamicPattern=n;function s(o){return Nu(o),Ml.path.escape(o)}t.escapePath=s})(px||(px={}));function hx(t,e,r){let i=[].concat(t),n=new fx.default(r),s=yJ.generate(i,n),o=new e(n);return s.map(o.read,o)}function Nu(t){if(![].concat(t).every(i=>Ml.string.isString(i)&&!Ml.string.isEmpty(i)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}IJ.exports=px});var BJ=E(Ol=>{"use strict";var{promisify:cQe}=require("util"),wJ=require("fs");async function dx(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return(await cQe(wJ[t])(r))[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}function Cx(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return wJ[t](r)[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}Ol.isFile=dx.bind(null,"stat","isFile");Ol.isDirectory=dx.bind(null,"stat","isDirectory");Ol.isSymlink=dx.bind(null,"lstat","isSymbolicLink");Ol.isFileSync=Cx.bind(null,"statSync","isFile");Ol.isDirectorySync=Cx.bind(null,"statSync","isDirectory");Ol.isSymlinkSync=Cx.bind(null,"lstatSync","isSymbolicLink")});var xJ=E((Uit,mx)=>{"use strict";var Kl=require("path"),QJ=BJ(),bJ=t=>t.length>1?`{${t.join(",")}}`:t[0],vJ=(t,e)=>{let r=t[0]==="!"?t.slice(1):t;return Kl.isAbsolute(r)?r:Kl.join(e,r)},uQe=(t,e)=>Kl.extname(t)?`**/${t}`:`**/${t}.${bJ(e)}`,SJ=(t,e)=>{if(e.files&&!Array.isArray(e.files))throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof e.files}\``);if(e.extensions&&!Array.isArray(e.extensions))throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof e.extensions}\``);return e.files&&e.extensions?e.files.map(r=>Kl.posix.join(t,uQe(r,e.extensions))):e.files?e.files.map(r=>Kl.posix.join(t,`**/${r}`)):e.extensions?[Kl.posix.join(t,`**/*.${bJ(e.extensions)}`)]:[Kl.posix.join(t,"**")]};mx.exports=async(t,e)=>{if(e=P({cwd:process.cwd()},e),typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=await Promise.all([].concat(t).map(async i=>await QJ.isDirectory(vJ(i,e.cwd))?SJ(i,e):i));return[].concat.apply([],r)};mx.exports.sync=(t,e)=>{if(e=P({cwd:process.cwd()},e),typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=[].concat(t).map(i=>QJ.isDirectorySync(vJ(i,e.cwd))?SJ(i,e):i);return[].concat.apply([],r)}});var TJ=E((Hit,kJ)=>{function PJ(t){return Array.isArray(t)?t:[t]}var gQe=/^\s+$/,fQe=/^\\!/,hQe=/^\\#/,pQe=/\r?\n/g,dQe=/^\.*\/|^\.+$/,Ex="/",DJ=typeof Symbol!="undefined"?Symbol.for("node-ignore"):"node-ignore",CQe=(t,e,r)=>Object.defineProperty(t,e,{value:r}),mQe=/([0-z])-([0-z])/g,EQe=t=>t.replace(mQe,(e,r,i)=>r.charCodeAt(0)<=i.charCodeAt(0)?e:""),IQe=[[/\\?\s+$/,t=>t.indexOf("\\")===0?" ":""],[/\\\s/g,()=>" "],[/[\\^$.|*+(){]/g,t=>`\\${t}`],[/\[([^\]/]*)($|\])/g,(t,e,r)=>r==="]"?`[${EQe(e)}]`:`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6`${e}[^\\/]*`],[/(\^|\\\/)?\\\*$/,(t,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`],[/\\\\\\/g,()=>"\\"]],RJ=Object.create(null),yQe=(t,e,r)=>{let i=RJ[t];if(i)return i;let n=IQe.reduce((s,o)=>s.replace(o[0],o[1].bind(t)),t);return RJ[t]=r?new RegExp(n,"i"):new RegExp(n)},Ix=t=>typeof t=="string",wQe=t=>t&&Ix(t)&&!gQe.test(t)&&t.indexOf("#")!==0,BQe=t=>t.split(pQe),FJ=class{constructor(e,r,i,n){this.origin=e,this.pattern=r,this.negative=i,this.regex=n}},QQe=(t,e)=>{let r=t,i=!1;t.indexOf("!")===0&&(i=!0,t=t.substr(1)),t=t.replace(fQe,"!").replace(hQe,"#");let n=yQe(t,i,e);return new FJ(r,t,i,n)},bQe=(t,e)=>{throw new e(t)},ha=(t,e,r)=>Ix(t)?t?ha.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),NJ=t=>dQe.test(t);ha.isNotRelative=NJ;ha.convert=t=>t;var LJ=class{constructor({ignorecase:e=!0}={}){this._rules=[],this._ignorecase=e,CQe(this,DJ,!0),this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[DJ]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(wQe(e)){let r=QQe(e,this._ignorecase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,PJ(Ix(e)?BQe(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,r){let i=!1,n=!1;return this._rules.forEach(s=>{let{negative:o}=s;if(n===o&&i!==n||o&&!i&&!n&&!r)return;s.regex.test(e)&&(i=!o,n=o)}),{ignored:i,unignored:n}}_test(e,r,i,n){let s=e&&ha.convert(e);return ha(s,e,bQe),this._t(s,r,i,n)}_t(e,r,i,n){if(e in r)return r[e];if(n||(n=e.split(Ex)),n.pop(),!n.length)return r[e]=this._testOne(e,i);let s=this._t(n.join(Ex)+Ex,r,i,n);return r[e]=s.ignored?s:this._testOne(e,i)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return PJ(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},fy=t=>new LJ(t),vQe=()=>!1,SQe=t=>ha(t&&ha.convert(t),t,vQe);fy.isPathValid=SQe;fy.default=fy;kJ.exports=fy;if(typeof process!="undefined"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");ha.convert=t;let e=/^[a-z]:\//i;ha.isNotRelative=r=>e.test(r)||NJ(r)}});var OJ=E((Git,MJ)=>{"use strict";MJ.exports=t=>{let e=/^\\\\\?\\/.test(t),r=/[^\u0000-\u0080]+/.test(t);return e||r?t:t.replace(/\\/g,"/")}});var qJ=E((jit,yx)=>{"use strict";var{promisify:xQe}=require("util"),KJ=require("fs"),pa=require("path"),UJ=gy(),kQe=TJ(),sp=OJ(),HJ=["**/node_modules/**","**/flow-typed/**","**/coverage/**","**/.git"],PQe=xQe(KJ.readFile),DQe=t=>e=>e.startsWith("!")?"!"+pa.posix.join(t,e.slice(1)):pa.posix.join(t,e),RQe=(t,e)=>{let r=sp(pa.relative(e.cwd,pa.dirname(e.fileName)));return t.split(/\r?\n/).filter(Boolean).filter(i=>!i.startsWith("#")).map(DQe(r))},GJ=t=>{let e=kQe();for(let r of t)e.add(RQe(r.content,{cwd:r.cwd,fileName:r.filePath}));return e},FQe=(t,e)=>{if(t=sp(t),pa.isAbsolute(e)){if(sp(e).startsWith(t))return e;throw new Error(`Path ${e} is not in cwd ${t}`)}return pa.join(t,e)},jJ=(t,e)=>r=>t.ignores(sp(pa.relative(e,FQe(e,r.path||r)))),NQe=async(t,e)=>{let r=pa.join(e,t),i=await PQe(r,"utf8");return{cwd:e,filePath:r,content:i}},LQe=(t,e)=>{let r=pa.join(e,t),i=KJ.readFileSync(r,"utf8");return{cwd:e,filePath:r,content:i}},YJ=({ignore:t=[],cwd:e=sp(process.cwd())}={})=>({ignore:t,cwd:e});yx.exports=async t=>{t=YJ(t);let e=await UJ("**/.gitignore",{ignore:HJ.concat(t.ignore),cwd:t.cwd}),r=await Promise.all(e.map(n=>NQe(n,t.cwd))),i=GJ(r);return jJ(i,t.cwd)};yx.exports.sync=t=>{t=YJ(t);let r=UJ.sync("**/.gitignore",{ignore:HJ.concat(t.ignore),cwd:t.cwd}).map(n=>LQe(n,t.cwd)),i=GJ(r);return jJ(i,t.cwd)}});var VJ=E((Yit,JJ)=>{"use strict";var{Transform:TQe}=require("stream"),wx=class extends TQe{constructor(){super({objectMode:!0})}},WJ=class extends wx{constructor(e){super();this._filter=e}_transform(e,r,i){this._filter(e)&&this.push(e),i()}},zJ=class extends wx{constructor(){super();this._pushed=new Set}_transform(e,r,i){this._pushed.has(e)||(this.push(e),this._pushed.add(e)),i()}};JJ.exports={FilterStream:WJ,UniqueStream:zJ}});var vx=E((qit,Ul)=>{"use strict";var _J=require("fs"),hy=QY(),MQe=wS(),py=gy(),dy=xJ(),Bx=qJ(),{FilterStream:OQe,UniqueStream:KQe}=VJ(),XJ=()=>!1,ZJ=t=>t[0]==="!",UQe=t=>{if(!t.every(e=>typeof e=="string"))throw new TypeError("Patterns must be a string or an array of strings")},HQe=(t={})=>{if(!t.cwd)return;let e;try{e=_J.statSync(t.cwd)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},GQe=t=>t.stats instanceof _J.Stats?t.path:t,Cy=(t,e)=>{t=hy([].concat(t)),UQe(t),HQe(e);let r=[];e=P({ignore:[],expandDirectories:!0},e);for(let[i,n]of t.entries()){if(ZJ(n))continue;let s=t.slice(i).filter(a=>ZJ(a)).map(a=>a.slice(1)),o=_(P({},e),{ignore:e.ignore.concat(s)});r.push({pattern:n,options:o})}return r},jQe=(t,e)=>{let r={};return t.options.cwd&&(r.cwd=t.options.cwd),Array.isArray(t.options.expandDirectories)?r=_(P({},r),{files:t.options.expandDirectories}):typeof t.options.expandDirectories=="object"&&(r=P(P({},r),t.options.expandDirectories)),e(t.pattern,r)},Qx=(t,e)=>t.options.expandDirectories?jQe(t,e):[t.pattern],$J=t=>t&&t.gitignore?Bx.sync({cwd:t.cwd,ignore:t.ignore}):XJ,bx=t=>e=>{let{options:r}=t;return r.ignore&&Array.isArray(r.ignore)&&r.expandDirectories&&(r.ignore=dy.sync(r.ignore)),{pattern:e,options:r}};Ul.exports=async(t,e)=>{let r=Cy(t,e),i=async()=>e&&e.gitignore?Bx({cwd:e.cwd,ignore:e.ignore}):XJ,n=async()=>{let l=await Promise.all(r.map(async c=>{let u=await Qx(c,dy);return Promise.all(u.map(bx(c)))}));return hy(...l)},[s,o]=await Promise.all([i(),n()]),a=await Promise.all(o.map(l=>py(l.pattern,l.options)));return hy(...a).filter(l=>!s(GQe(l)))};Ul.exports.sync=(t,e)=>{let r=Cy(t,e),i=[];for(let o of r){let a=Qx(o,dy.sync).map(bx(o));i.push(...a)}let n=$J(e),s=[];for(let o of i)s=hy(s,py.sync(o.pattern,o.options));return s.filter(o=>!n(o))};Ul.exports.stream=(t,e)=>{let r=Cy(t,e),i=[];for(let a of r){let l=Qx(a,dy.sync).map(bx(a));i.push(...l)}let n=$J(e),s=new OQe(a=>!n(a)),o=new KQe;return MQe(i.map(a=>py.stream(a.pattern,a.options))).pipe(s).pipe(o)};Ul.exports.generateGlobTasks=Cy;Ul.exports.hasMagic=(t,e)=>[].concat(t).some(r=>py.isDynamicPattern(r,e));Ul.exports.gitignore=Bx});var Ca=E((da,Dy)=>{"use strict";Object.defineProperty(da,"__esModule",{value:!0});var A3=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function ibe(t){return A3.includes(t)}var nbe=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...A3];function sbe(t){return nbe.includes(t)}var obe=["null","undefined","string","number","bigint","boolean","symbol"];function abe(t){return obe.includes(t)}function Hu(t){return e=>typeof e===t}var{toString:l3}=Object.prototype,mp=t=>{let e=l3.call(t).slice(8,-1);if(/HTML\w+Element/.test(e)&&j.domElement(t))return"HTMLElement";if(sbe(e))return e},er=t=>e=>mp(e)===t;function j(t){if(t===null)return"null";switch(typeof t){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(j.observable(t))return"Observable";if(j.array(t))return"Array";if(j.buffer(t))return"Buffer";let e=mp(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}j.undefined=Hu("undefined");j.string=Hu("string");var Abe=Hu("number");j.number=t=>Abe(t)&&!j.nan(t);j.bigint=Hu("bigint");j.function_=Hu("function");j.null_=t=>t===null;j.class_=t=>j.function_(t)&&t.toString().startsWith("class ");j.boolean=t=>t===!0||t===!1;j.symbol=Hu("symbol");j.numericString=t=>j.string(t)&&!j.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));j.array=(t,e)=>Array.isArray(t)?j.function_(e)?t.every(e):!0:!1;j.buffer=t=>{var e,r,i,n;return(n=(i=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||i===void 0?void 0:i.call(r,t))!==null&&n!==void 0?n:!1};j.nullOrUndefined=t=>j.null_(t)||j.undefined(t);j.object=t=>!j.null_(t)&&(typeof t=="object"||j.function_(t));j.iterable=t=>{var e;return j.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};j.asyncIterable=t=>{var e;return j.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};j.generator=t=>j.iterable(t)&&j.function_(t.next)&&j.function_(t.throw);j.asyncGenerator=t=>j.asyncIterable(t)&&j.function_(t.next)&&j.function_(t.throw);j.nativePromise=t=>er("Promise")(t);var lbe=t=>{var e,r;return j.function_((e=t)===null||e===void 0?void 0:e.then)&&j.function_((r=t)===null||r===void 0?void 0:r.catch)};j.promise=t=>j.nativePromise(t)||lbe(t);j.generatorFunction=er("GeneratorFunction");j.asyncGeneratorFunction=t=>mp(t)==="AsyncGeneratorFunction";j.asyncFunction=t=>mp(t)==="AsyncFunction";j.boundFunction=t=>j.function_(t)&&!t.hasOwnProperty("prototype");j.regExp=er("RegExp");j.date=er("Date");j.error=er("Error");j.map=t=>er("Map")(t);j.set=t=>er("Set")(t);j.weakMap=t=>er("WeakMap")(t);j.weakSet=t=>er("WeakSet")(t);j.int8Array=er("Int8Array");j.uint8Array=er("Uint8Array");j.uint8ClampedArray=er("Uint8ClampedArray");j.int16Array=er("Int16Array");j.uint16Array=er("Uint16Array");j.int32Array=er("Int32Array");j.uint32Array=er("Uint32Array");j.float32Array=er("Float32Array");j.float64Array=er("Float64Array");j.bigInt64Array=er("BigInt64Array");j.bigUint64Array=er("BigUint64Array");j.arrayBuffer=er("ArrayBuffer");j.sharedArrayBuffer=er("SharedArrayBuffer");j.dataView=er("DataView");j.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;j.urlInstance=t=>er("URL")(t);j.urlString=t=>{if(!j.string(t))return!1;try{return new URL(t),!0}catch(e){return!1}};j.truthy=t=>Boolean(t);j.falsy=t=>!t;j.nan=t=>Number.isNaN(t);j.primitive=t=>j.null_(t)||abe(typeof t);j.integer=t=>Number.isInteger(t);j.safeInteger=t=>Number.isSafeInteger(t);j.plainObject=t=>{if(l3.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};j.typedArray=t=>ibe(mp(t));var cbe=t=>j.safeInteger(t)&&t>=0;j.arrayLike=t=>!j.nullOrUndefined(t)&&!j.function_(t)&&cbe(t.length);j.inRange=(t,e)=>{if(j.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(j.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var ube=1,gbe=["innerHTML","ownerDocument","style","attributes","nodeValue"];j.domElement=t=>j.object(t)&&t.nodeType===ube&&j.string(t.nodeName)&&!j.plainObject(t)&&gbe.every(e=>e in t);j.observable=t=>{var e,r,i,n;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((n=(i=t)["@@observable"])===null||n===void 0?void 0:n.call(i)):!1};j.nodeStream=t=>j.object(t)&&j.function_(t.pipe)&&!j.observable(t);j.infinite=t=>t===Infinity||t===-Infinity;var c3=t=>e=>j.integer(e)&&Math.abs(e%2)===t;j.evenInteger=c3(0);j.oddInteger=c3(1);j.emptyArray=t=>j.array(t)&&t.length===0;j.nonEmptyArray=t=>j.array(t)&&t.length>0;j.emptyString=t=>j.string(t)&&t.length===0;j.nonEmptyString=t=>j.string(t)&&t.length>0;var fbe=t=>j.string(t)&&!/\S/.test(t);j.emptyStringOrWhitespace=t=>j.emptyString(t)||fbe(t);j.emptyObject=t=>j.object(t)&&!j.map(t)&&!j.set(t)&&Object.keys(t).length===0;j.nonEmptyObject=t=>j.object(t)&&!j.map(t)&&!j.set(t)&&Object.keys(t).length>0;j.emptySet=t=>j.set(t)&&t.size===0;j.nonEmptySet=t=>j.set(t)&&t.size>0;j.emptyMap=t=>j.map(t)&&t.size===0;j.nonEmptyMap=t=>j.map(t)&&t.size>0;j.propertyKey=t=>j.any([j.string,j.number,j.symbol],t);j.formData=t=>er("FormData")(t);j.urlSearchParams=t=>er("URLSearchParams")(t);var u3=(t,e,r)=>{if(!j.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError("Invalid number of values");return t.call(r,e)};j.any=(t,...e)=>(j.array(t)?t:[t]).some(i=>u3(Array.prototype.some,i,e));j.all=(t,...e)=>u3(Array.prototype.every,t,e);var Te=(t,e,r,i={})=>{if(!t){let{multipleValues:n}=i,s=n?`received values of types ${[...new Set(r.map(o=>`\`${j(o)}\``))].join(", ")}`:`received value of type \`${j(r)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${s}.`)}};da.assert={undefined:t=>Te(j.undefined(t),"undefined",t),string:t=>Te(j.string(t),"string",t),number:t=>Te(j.number(t),"number",t),bigint:t=>Te(j.bigint(t),"bigint",t),function_:t=>Te(j.function_(t),"Function",t),null_:t=>Te(j.null_(t),"null",t),class_:t=>Te(j.class_(t),"Class",t),boolean:t=>Te(j.boolean(t),"boolean",t),symbol:t=>Te(j.symbol(t),"symbol",t),numericString:t=>Te(j.numericString(t),"string with a number",t),array:(t,e)=>{Te(j.array(t),"Array",t),e&&t.forEach(e)},buffer:t=>Te(j.buffer(t),"Buffer",t),nullOrUndefined:t=>Te(j.nullOrUndefined(t),"null or undefined",t),object:t=>Te(j.object(t),"Object",t),iterable:t=>Te(j.iterable(t),"Iterable",t),asyncIterable:t=>Te(j.asyncIterable(t),"AsyncIterable",t),generator:t=>Te(j.generator(t),"Generator",t),asyncGenerator:t=>Te(j.asyncGenerator(t),"AsyncGenerator",t),nativePromise:t=>Te(j.nativePromise(t),"native Promise",t),promise:t=>Te(j.promise(t),"Promise",t),generatorFunction:t=>Te(j.generatorFunction(t),"GeneratorFunction",t),asyncGeneratorFunction:t=>Te(j.asyncGeneratorFunction(t),"AsyncGeneratorFunction",t),asyncFunction:t=>Te(j.asyncFunction(t),"AsyncFunction",t),boundFunction:t=>Te(j.boundFunction(t),"Function",t),regExp:t=>Te(j.regExp(t),"RegExp",t),date:t=>Te(j.date(t),"Date",t),error:t=>Te(j.error(t),"Error",t),map:t=>Te(j.map(t),"Map",t),set:t=>Te(j.set(t),"Set",t),weakMap:t=>Te(j.weakMap(t),"WeakMap",t),weakSet:t=>Te(j.weakSet(t),"WeakSet",t),int8Array:t=>Te(j.int8Array(t),"Int8Array",t),uint8Array:t=>Te(j.uint8Array(t),"Uint8Array",t),uint8ClampedArray:t=>Te(j.uint8ClampedArray(t),"Uint8ClampedArray",t),int16Array:t=>Te(j.int16Array(t),"Int16Array",t),uint16Array:t=>Te(j.uint16Array(t),"Uint16Array",t),int32Array:t=>Te(j.int32Array(t),"Int32Array",t),uint32Array:t=>Te(j.uint32Array(t),"Uint32Array",t),float32Array:t=>Te(j.float32Array(t),"Float32Array",t),float64Array:t=>Te(j.float64Array(t),"Float64Array",t),bigInt64Array:t=>Te(j.bigInt64Array(t),"BigInt64Array",t),bigUint64Array:t=>Te(j.bigUint64Array(t),"BigUint64Array",t),arrayBuffer:t=>Te(j.arrayBuffer(t),"ArrayBuffer",t),sharedArrayBuffer:t=>Te(j.sharedArrayBuffer(t),"SharedArrayBuffer",t),dataView:t=>Te(j.dataView(t),"DataView",t),urlInstance:t=>Te(j.urlInstance(t),"URL",t),urlString:t=>Te(j.urlString(t),"string with a URL",t),truthy:t=>Te(j.truthy(t),"truthy",t),falsy:t=>Te(j.falsy(t),"falsy",t),nan:t=>Te(j.nan(t),"NaN",t),primitive:t=>Te(j.primitive(t),"primitive",t),integer:t=>Te(j.integer(t),"integer",t),safeInteger:t=>Te(j.safeInteger(t),"integer",t),plainObject:t=>Te(j.plainObject(t),"plain object",t),typedArray:t=>Te(j.typedArray(t),"TypedArray",t),arrayLike:t=>Te(j.arrayLike(t),"array-like",t),domElement:t=>Te(j.domElement(t),"HTMLElement",t),observable:t=>Te(j.observable(t),"Observable",t),nodeStream:t=>Te(j.nodeStream(t),"Node.js Stream",t),infinite:t=>Te(j.infinite(t),"infinite number",t),emptyArray:t=>Te(j.emptyArray(t),"empty array",t),nonEmptyArray:t=>Te(j.nonEmptyArray(t),"non-empty array",t),emptyString:t=>Te(j.emptyString(t),"empty string",t),nonEmptyString:t=>Te(j.nonEmptyString(t),"non-empty string",t),emptyStringOrWhitespace:t=>Te(j.emptyStringOrWhitespace(t),"empty string or whitespace",t),emptyObject:t=>Te(j.emptyObject(t),"empty object",t),nonEmptyObject:t=>Te(j.nonEmptyObject(t),"non-empty object",t),emptySet:t=>Te(j.emptySet(t),"empty set",t),nonEmptySet:t=>Te(j.nonEmptySet(t),"non-empty set",t),emptyMap:t=>Te(j.emptyMap(t),"empty map",t),nonEmptyMap:t=>Te(j.nonEmptyMap(t),"non-empty map",t),propertyKey:t=>Te(j.propertyKey(t),"PropertyKey",t),formData:t=>Te(j.formData(t),"FormData",t),urlSearchParams:t=>Te(j.urlSearchParams(t),"URLSearchParams",t),evenInteger:t=>Te(j.evenInteger(t),"even integer",t),oddInteger:t=>Te(j.oddInteger(t),"odd integer",t),directInstanceOf:(t,e)=>Te(j.directInstanceOf(t,e),"T",t),inRange:(t,e)=>Te(j.inRange(t,e),"in range",t),any:(t,...e)=>Te(j.any(t,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(t,...e)=>Te(j.all(t,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(j,{class:{value:j.class_},function:{value:j.function_},null:{value:j.null_}});Object.defineProperties(da.assert,{class:{value:da.assert.class_},function:{value:da.assert.function_},null:{value:da.assert.null_}});da.default=j;Dy.exports=j;Dy.exports.default=j;Dy.exports.assert=da.assert});var g3=E((gnt,Ux)=>{"use strict";var Hx=class extends Error{constructor(e){super(e||"Promise was canceled");this.name="CancelError"}get isCanceled(){return!0}},Ep=class{static fn(e){return(...r)=>new Ep((i,n,s)=>{r.push(s),e(...r).then(i,n)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,i)=>{this._reject=i;let n=a=>{this._isPending=!1,r(a)},s=a=>{this._isPending=!1,i(a)},o=a=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(a)};return Object.defineProperties(o,{shouldReject:{get:()=>this._rejectOnCancel,set:a=>{this._rejectOnCancel=a}}}),e(n,s,o)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new Hx(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(Ep.prototype,Promise.prototype);Ux.exports=Ep;Ux.exports.CancelError=Hx});var f3=E((Gx,jx)=>{"use strict";Object.defineProperty(Gx,"__esModule",{value:!0});var hbe=require("tls"),Yx=(t,e)=>{let r;typeof e=="function"?r={connect:e}:r=e;let i=typeof r.connect=="function",n=typeof r.secureConnect=="function",s=typeof r.close=="function",o=()=>{i&&r.connect(),t instanceof hbe.TLSSocket&&n&&(t.authorized?r.secureConnect():t.authorizationError||t.once("secureConnect",r.secureConnect)),s&&t.once("close",r.close)};t.writable&&!t.connecting?o():t.connecting?t.once("connect",o):t.destroyed&&s&&r.close(t._hadError)};Gx.default=Yx;jx.exports=Yx;jx.exports.default=Yx});var h3=E((qx,Jx)=>{"use strict";Object.defineProperty(qx,"__esModule",{value:!0});var pbe=f3(),dbe=Number(process.versions.node.split(".")[0]),Wx=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=o=>{let a=o.emit.bind(o);o.emit=(l,...c)=>(l==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,o.emit=a),a(l,...c))};r(t),t.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||dbe>=13)&&(e.phases.total=Date.now()-e.start)});let i=o=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let a=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};o.prependOnceListener("lookup",a),pbe.default(o,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(o.removeListener("lookup",a),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?i(t.socket):t.prependOnceListener("socket",i);let n=()=>{var o;e.upload=Date.now(),e.phases.request=e.upload-(o=e.secureConnect,o!=null?o:e.connect)};return(()=>typeof t.writableFinished=="boolean"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))()?n():t.prependOnceListener("finish",n),t.prependOnceListener("response",o=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,o.timings=e,r(o),o.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};qx.default=Wx;Jx.exports=Wx;Jx.exports.default=Wx});var y3=E((fnt,zx)=>{"use strict";var{V4MAPPED:Cbe,ADDRCONFIG:mbe,ALL:p3,promises:{Resolver:d3},lookup:Ebe}=require("dns"),{promisify:Vx}=require("util"),Ibe=require("os"),Gu=Symbol("cacheableLookupCreateConnection"),_x=Symbol("cacheableLookupInstance"),C3=Symbol("expires"),ybe=typeof p3=="number",m3=t=>{if(!(t&&typeof t.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},wbe=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},E3=()=>{let t=!1,e=!1;for(let r of Object.values(Ibe.networkInterfaces()))for(let i of r)if(!i.internal&&(i.family==="IPv6"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},Bbe=t=>Symbol.iterator in t,I3={ttl:!0},Qbe={all:!0},Xx=class{constructor({cache:e=new Map,maxTtl:r=Infinity,fallbackDuration:i=3600,errorTtl:n=.15,resolver:s=new d3,lookup:o=Ebe}={}){if(this.maxTtl=r,this.errorTtl=n,this._cache=e,this._resolver=s,this._dnsLookup=Vx(o),this._resolver instanceof d3?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=Vx(this._resolver.resolve4.bind(this._resolver)),this._resolve6=Vx(this._resolver.resolve6.bind(this._resolver))),this._iface=E3(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,i<1)this._fallback=!1;else{this._fallback=!0;let a=setInterval(()=>{this._hostnamesToFallback.clear()},i*1e3);a.unref&&a.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,i){if(typeof r=="function"?(i=r,r={}):typeof r=="number"&&(r={family:r}),!i)throw new Error("Callback must be a function.");this.lookupAsync(e,r).then(n=>{r.all?i(null,n):i(null,n.address,n.family,n.expires,n.ttl)},i)}async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let i=await this.query(e);if(r.family===6){let n=i.filter(s=>s.family===6);r.hints&Cbe&&(ybe&&r.hints&p3||n.length===0)?wbe(i):i=n}else r.family===4&&(i=i.filter(n=>n.family===4));if(r.hints&mbe){let{_iface:n}=this;i=i.filter(s=>s.family===6?n.has6:n.has4)}if(i.length===0){let n=new Error(`cacheableLookup ENOTFOUND ${e}`);throw n.code="ENOTFOUND",n.hostname=e,n}return r.all?i:i[0]}async query(e){let r=await this._cache.get(e);if(!r){let i=this._pending[e];if(i)r=await i;else{let n=this.queryAndCache(e);this._pending[e]=n,r=await n}}return r=r.map(i=>P({},i)),r}async _resolve(e){let r=async c=>{try{return await c}catch(u){if(u.code==="ENODATA"||u.code==="ENOTFOUND")return[];throw u}},[i,n]=await Promise.all([this._resolve4(e,I3),this._resolve6(e,I3)].map(c=>r(c))),s=0,o=0,a=0,l=Date.now();for(let c of i)c.family=4,c.expires=l+c.ttl*1e3,s=Math.max(s,c.ttl);for(let c of n)c.family=6,c.expires=l+c.ttl*1e3,o=Math.max(o,c.ttl);return i.length>0?n.length>0?a=Math.min(s,o):a=s:a=o,{entries:[...i,...n],cacheTtl:a}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch(r){return{entries:[],cacheTtl:0}}}async _set(e,r,i){if(this.maxTtl>0&&i>0){i=Math.min(i,this.maxTtl)*1e3,r[C3]=Date.now()+i;try{await this._cache.set(e,r,i)}catch(n){this.lookupAsync=async()=>{let s=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw s.cause=n,s}}Bbe(this._cache)&&this._tick(i)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,Qbe);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let i=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,i),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e{this._nextRemovalTime=!1;let i=Infinity,n=Date.now();for(let[s,o]of this._cache){let a=o[C3];n>=a?this._cache.delete(s):a("lookup"in r||(r.lookup=this.lookup),e[Gu](r,i))}uninstall(e){if(m3(e),e[Gu]){if(e[_x]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[Gu],delete e[Gu],delete e[_x]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=E3(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};zx.exports=Xx;zx.exports.default=Xx});var Q3=E((hnt,Zx)=>{"use strict";var bbe=typeof URL=="undefined"?require("url").URL:URL,vbe="text/plain",Sbe="us-ascii",w3=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),xbe=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let i=r[1].split(";"),n=r[2],s=e?"":r[3],o=!1;i[i.length-1]==="base64"&&(i.pop(),o=!0);let a=(i.shift()||"").toLowerCase(),c=[...i.map(u=>{let[g,f=""]=u.split("=").map(h=>h.trim());return g==="charset"&&(f=f.toLowerCase(),f===Sbe)?"":`${g}${f?`=${f}`:""}`}).filter(Boolean)];return o&&c.push("base64"),(c.length!==0||a&&a!==vbe)&&c.unshift(a),`data:${c.join(";")},${o?n.trim():n}${s?`#${s}`:""}`},B3=(t,e)=>{if(e=P({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(t=t.trim(),/^data:/i.test(t))return xbe(t,e);let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new bbe(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripAuthentication&&(n.username="",n.password=""),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?!:).|^)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];w3(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])w3(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),e.removeTrailingSlash&&(n.pathname=n.pathname.replace(/\/$/,"")),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&n.hash===""&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};Zx.exports=B3;Zx.exports.default=B3});var S3=E((pnt,b3)=>{b3.exports=v3;function v3(t,e){if(t&&e)return v3(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(i){r[i]=t[i]}),r;function r(){for(var i=new Array(arguments.length),n=0;n{var x3=S3();$x.exports=x3(Ry);$x.exports.strict=x3(k3);Ry.proto=Ry(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Ry(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return k3(this)},configurable:!0})});function Ry(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function k3(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var tk=E((Cnt,P3)=>{var kbe=ek(),Pbe=function(){},Dbe=function(t){return t.setHeader&&typeof t.abort=="function"},Rbe=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},D3=function(t,e,r){if(typeof e=="function")return D3(t,null,e);e||(e={}),r=kbe(r||Pbe);var i=t._writableState,n=t._readableState,s=e.readable||e.readable!==!1&&t.readable,o=e.writable||e.writable!==!1&&t.writable,a=function(){t.writable||l()},l=function(){o=!1,s||r.call(t)},c=function(){s=!1,o||r.call(t)},u=function(p){r.call(t,p?new Error("exited with error code: "+p):null)},g=function(p){r.call(t,p)},f=function(){if(s&&!(n&&n.ended))return r.call(t,new Error("premature close"));if(o&&!(i&&i.ended))return r.call(t,new Error("premature close"))},h=function(){t.req.on("finish",l)};return Dbe(t)?(t.on("complete",l),t.on("abort",f),t.req?h():t.on("request",h)):o&&!i&&(t.on("end",a),t.on("close",a)),Rbe(t)&&t.on("exit",u),t.on("end",c),t.on("finish",l),e.error!==!1&&t.on("error",g),t.on("close",f),function(){t.removeListener("complete",l),t.removeListener("abort",f),t.removeListener("request",h),t.req&&t.req.removeListener("finish",l),t.removeListener("end",a),t.removeListener("close",a),t.removeListener("finish",l),t.removeListener("exit",u),t.removeListener("end",c),t.removeListener("error",g),t.removeListener("close",f)}};P3.exports=D3});var N3=E((mnt,R3)=>{var Fbe=ek(),Nbe=tk(),rk=require("fs"),Ip=function(){},Lbe=/^v?\.0/.test(process.version),Fy=function(t){return typeof t=="function"},Tbe=function(t){return!Lbe||!rk?!1:(t instanceof(rk.ReadStream||Ip)||t instanceof(rk.WriteStream||Ip))&&Fy(t.close)},Mbe=function(t){return t.setHeader&&Fy(t.abort)},Obe=function(t,e,r,i){i=Fbe(i);var n=!1;t.on("close",function(){n=!0}),Nbe(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,Tbe(t))return t.close(Ip);if(Mbe(t))return t.abort();if(Fy(t.destroy))return t.destroy();i(o||new Error("stream was destroyed"))}}},F3=function(t){t()},Kbe=function(t,e){return t.pipe(e)},Ube=function(){var t=Array.prototype.slice.call(arguments),e=Fy(t[t.length-1]||Ip)&&t.pop()||Ip;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r,i=t.map(function(n,s){var o=s0;return Obe(n,o,a,function(l){r||(r=l),l&&i.forEach(F3),!o&&(i.forEach(F3),e(r))})});return t.reduce(Kbe)};R3.exports=Ube});var T3=E((Ent,L3)=>{"use strict";var{PassThrough:Hbe}=require("stream");L3.exports=t=>{t=P({},t);let{array:e}=t,{encoding:r}=t,i=r==="buffer",n=!1;e?n=!(r||i):r=r||"utf8",i&&(r=null);let s=new Hbe({objectMode:n});r&&s.setEncoding(r);let o=0,a=[];return s.on("data",l=>{a.push(l),n?o=a.length:o+=l.length}),s.getBufferedValue=()=>e?a:i?Buffer.concat(a,o):a.join(""),s.getBufferedLength=()=>o,s}});var M3=E((Int,ju)=>{"use strict";var Gbe=N3(),jbe=T3(),ik=class extends Error{constructor(){super("maxBuffer exceeded");this.name="MaxBufferError"}};async function Ny(t,e){if(!t)return Promise.reject(new Error("Expected a stream"));e=P({maxBuffer:Infinity},e);let{maxBuffer:r}=e,i;return await new Promise((n,s)=>{let o=a=>{a&&(a.bufferedData=i.getBufferedValue()),s(a)};i=Gbe(t,jbe(e),a=>{if(a){o(a);return}n()}),i.on("data",()=>{i.getBufferedLength()>r&&o(new ik)})}),i.getBufferedValue()}ju.exports=Ny;ju.exports.default=Ny;ju.exports.buffer=(t,e)=>Ny(t,_(P({},e),{encoding:"buffer"}));ju.exports.array=(t,e)=>Ny(t,_(P({},e),{array:!0}));ju.exports.MaxBufferError=ik});var K3=E((wnt,O3)=>{"use strict";var Ybe=[200,203,204,206,300,301,404,405,410,414,501],qbe=[200,203,204,300,301,302,303,307,308,404,405,410,414,501],Jbe={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},Wbe={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function nk(t){let e={};if(!t)return e;let r=t.trim().split(/\s*,\s*/);for(let i of r){let[n,s]=i.split(/\s*=\s*/,2);e[n]=s===void 0?!0:s.replace(/^"|"$/g,"")}return e}function zbe(t){let e=[];for(let r in t){let i=t[r];e.push(i===!0?r:r+"="+i)}if(!!e.length)return e.join(", ")}O3.exports=class{constructor(e,r,{shared:i,cacheHeuristic:n,immutableMinTimeToLive:s,ignoreCargoCult:o,trustServerDate:a,_fromObject:l}={}){if(l){this._fromObject(l);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=i!==!1,this._trustServerDate=a!==void 0?a:!0,this._cacheHeuristic=n!==void 0?n:.1,this._immutableMinTtl=s!==void 0?s:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=nk(r.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=nk(e.headers["cache-control"]),o&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":zbe(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),!r.headers["cache-control"]&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&qbe.indexOf(this._status)!==-1&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc.public||this._rescc["max-age"]||this._rescc["s-maxage"]||Ybe.indexOf(this._status)!==-1))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=nk(e.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(e.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let i of r)if(e.headers[i]!==this._reqHeaders[i])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let i in e)Jbe[i]||(r[i]=e[i]);if(e.connection){let i=e.connection.trim().split(/\s*,\s*/);for(let n of i)delete r[n]}if(r.warning){let i=r.warning.split(/,/).filter(n=>!/^\s*1[0-9][0-9]/.test(n));i.length?r.warning=i.join(",").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){return this._trustServerDate?this._serverDate():this._responseTime}_serverDate(){let e=Date.parse(this._resHeaders.date);if(isFinite(e)){let r=8*3600*1e3;if(Math.abs(this._responseTime-e)e&&(e=i)}let r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){let e=parseInt(this._resHeaders.age);return isFinite(e)?e:0}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return parseInt(this._rescc["s-maxage"],10)}if(this._rescc["max-age"])return parseInt(this._rescc["max-age"],10);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this._serverDate();if(this._resHeaders.expires){let i=Date.parse(this._resHeaders.expires);return Number.isNaN(i)||ii)return Math.max(e,(r-i)/1e3*this._cacheHeuristic)}return e}timeToLive(){return Math.max(0,this.maxAge()-this.age())*1e3}stale(){return this.maxAge()<=this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let n=r["if-none-match"].split(/,/).filter(s=>!/^\s*W\//.test(s));n.length?r["if-none-match"]=n.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),!r||!r.headers)throw Error("Response headers missing");let i=!1;if(r.status!==void 0&&r.status!=304?i=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?i=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?i=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?i=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(i=!0),!i)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let n={};for(let o in this._resHeaders)n[o]=o in r.headers&&!Wbe[o]?r.headers[o]:this._resHeaders[o];let s=Object.assign({},r,{status:this._status,method:this._method,headers:n});return{policy:new this.constructor(e,s,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl,trustServerDate:this._trustServerDate}),modified:!1,matches:!0}}}});var Ly=E((Bnt,U3)=>{"use strict";U3.exports=t=>{let e={};for(let[r,i]of Object.entries(t))e[r.toLowerCase()]=i;return e}});var j3=E((Qnt,H3)=>{"use strict";var Vbe=require("stream").Readable,_be=Ly(),G3=class extends Vbe{constructor(e,r,i,n){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(i instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof n!="string")throw new TypeError("Argument `url` should be a string");super();this.statusCode=e,this.headers=_be(r),this.body=i,this.url=n}_read(){this.push(this.body),this.push(null)}};H3.exports=G3});var q3=E((bnt,Y3)=>{"use strict";var Xbe=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];Y3.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(Xbe));for(let i of r)i in e||(e[i]=typeof t[i]=="function"?t[i].bind(t):t[i])}});var W3=E((vnt,J3)=>{"use strict";var Zbe=require("stream").PassThrough,$be=q3(),eve=t=>{if(!(t&&t.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new Zbe;return $be(t,e),t.pipe(e)};J3.exports=eve});var z3=E(sk=>{sk.stringify=function t(e){if(typeof e=="undefined")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var r="",i=Array.isArray(e);r=i?"[":"{";var n=!0;for(var s in e){var o=typeof e[s]=="function"||!i&&typeof e[s]=="undefined";Object.hasOwnProperty.call(e,s)&&!o&&(n||(r+=","),n=!1,i?e[s]==null?r+="null":r+=t(e[s]):e[s]!==void 0&&(r+=t(s)+":"+t(e[s])))}return r+=i?"]":"}",r}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e=="undefined"?"null":JSON.stringify(e)};sk.parse=function(t){return JSON.parse(t,function(e,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var Z3=E((xnt,V3)=>{"use strict";var tve=require("events"),_3=z3(),rve=t=>{let e={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(t.adapter||t.uri){let r=t.adapter||/^[^:]*/.exec(t.uri)[0];return new(require(e[r]))(t)}return new Map},X3=class extends tve{constructor(e,r){super();if(this.opts=Object.assign({namespace:"keyv",serialize:_3.stringify,deserialize:_3.parse},typeof e=="string"?{uri:e}:e,r),!this.opts.store){let i=Object.assign({},this.opts);this.opts.store=rve(i)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",i=>this.emit("error",i)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,r){e=this._getKeyPrefix(e);let{store:i}=this.opts;return Promise.resolve().then(()=>i.get(e)).then(n=>typeof n=="string"?this.opts.deserialize(n):n).then(n=>{if(n!==void 0){if(typeof n.expires=="number"&&Date.now()>n.expires){this.delete(e);return}return r&&r.raw?n:n.value}})}set(e,r,i){e=this._getKeyPrefix(e),typeof i=="undefined"&&(i=this.opts.ttl),i===0&&(i=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let s=typeof i=="number"?Date.now()+i:null;return r={value:r,expires:s},this.opts.serialize(r)}).then(s=>n.set(e,s,i)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:r}=this.opts;return Promise.resolve().then(()=>r.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};V3.exports=X3});var tW=E((knt,$3)=>{"use strict";var ive=require("events"),Ty=require("url"),nve=Q3(),sve=M3(),ok=K3(),eW=j3(),ove=Ly(),ave=W3(),Ave=Z3(),yo=class{constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new Ave({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,i)=>{let n;if(typeof r=="string")n=ak(Ty.parse(r)),r={};else if(r instanceof Ty.URL)n=ak(Ty.parse(r.toString())),r={};else{let[g,...f]=(r.path||"").split("?"),h=f.length>0?`?${f.join("?")}`:"";n=ak(_(P({},r),{pathname:g,search:h}))}r=P(P({headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1},r),lve(n)),r.headers=ove(r.headers);let s=new ive,o=nve(Ty.format(n),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),a=`${r.method}:${o}`,l=!1,c=!1,u=g=>{c=!0;let f=!1,h,p=new Promise(m=>{h=()=>{f||(f=!0,m())}}),d=m=>{if(l&&!g.forceRefresh){m.status=m.statusCode;let B=ok.fromObject(l.cachePolicy).revalidatedPolicy(g,m);if(!B.modified){let b=B.policy.responseHeaders();m=new eW(l.statusCode,b,l.body,l.url),m.cachePolicy=B.policy,m.fromCache=!0}}m.fromCache||(m.cachePolicy=new ok(g,m,g),m.fromCache=!1);let I;g.cache&&m.cachePolicy.storable()?(I=ave(m),(async()=>{try{let B=sve.buffer(m);if(await Promise.race([p,new Promise(L=>m.once("end",L))]),f)return;let b=await B,R={cachePolicy:m.cachePolicy.toObject(),url:m.url,statusCode:m.fromCache?l.statusCode:m.statusCode,body:b},H=g.strictTtl?m.cachePolicy.timeToLive():void 0;g.maxTtl&&(H=H?Math.min(H,g.maxTtl):g.maxTtl),await this.cache.set(a,R,H)}catch(B){s.emit("error",new yo.CacheError(B))}})()):g.cache&&l&&(async()=>{try{await this.cache.delete(a)}catch(B){s.emit("error",new yo.CacheError(B))}})(),s.emit("response",I||m),typeof i=="function"&&i(I||m)};try{let m=e(g,d);m.once("error",h),m.once("abort",h),s.emit("request",m)}catch(m){s.emit("error",new yo.RequestError(m))}};return(async()=>{let g=async h=>{await Promise.resolve();let p=h.cache?await this.cache.get(a):void 0;if(typeof p=="undefined")return u(h);let d=ok.fromObject(p.cachePolicy);if(d.satisfiesWithoutRevalidation(h)&&!h.forceRefresh){let m=d.responseHeaders(),I=new eW(p.statusCode,m,p.body,p.url);I.cachePolicy=d,I.fromCache=!0,s.emit("response",I),typeof i=="function"&&i(I)}else l=p,h.headers=d.revalidationHeaders(h),u(h)},f=h=>s.emit("error",new yo.CacheError(h));this.cache.once("error",f),s.on("response",()=>this.cache.removeListener("error",f));try{await g(r)}catch(h){r.automaticFailover&&!c&&u(r),s.emit("error",new yo.CacheError(h))}})(),s}}};function lve(t){let e=P({},t);return e.path=`${t.pathname||"/"}${t.search||""}`,delete e.pathname,delete e.search,e}function ak(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||"localhost",port:t.port,pathname:t.pathname,search:t.search}}yo.RequestError=class extends Error{constructor(t){super(t.message);this.name="RequestError",Object.assign(this,t)}};yo.CacheError=class extends Error{constructor(t){super(t.message);this.name="CacheError",Object.assign(this,t)}};$3.exports=yo});var iW=E((Pnt,rW)=>{"use strict";var cve=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];rW.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(t).concat(cve)),i={};for(let n of r)n in e||(i[n]={get(){let s=t[n];return typeof s=="function"?s.bind(t):s},set(s){t[n]=s},enumerable:!0,configurable:!1});return Object.defineProperties(e,i),t.once("aborted",()=>{e.destroy(),e.emit("aborted")}),t.once("close",()=>{t.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var sW=E((Dnt,nW)=>{"use strict";var{Transform:uve,PassThrough:gve}=require("stream"),Ak=require("zlib"),fve=iW();nW.exports=t=>{let e=(t.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return t;let r=e==="br";if(r&&typeof Ak.createBrotliDecompress!="function")return t.destroy(new Error("Brotli is not supported on Node.js < 12")),t;let i=!0,n=new uve({transform(a,l,c){i=!1,c(null,a)},flush(a){a()}}),s=new gve({autoDestroy:!1,destroy(a,l){t.destroy(),l(a)}}),o=r?Ak.createBrotliDecompress():Ak.createUnzip();return o.once("error",a=>{if(i&&!t.readable){s.end();return}s.destroy(a)}),fve(t,s),t.pipe(n).pipe(o).pipe(s),s}});var lk=E((Rnt,oW)=>{"use strict";var aW=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[i,n]of this.oldCache.entries())this.onEviction(i,n);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};oW.exports=aW});var uk=E((Fnt,AW)=>{"use strict";var hve=require("events"),pve=require("tls"),dve=require("http2"),Cve=lk(),_i=Symbol("currentStreamsCount"),lW=Symbol("request"),ns=Symbol("cachedOriginSet"),Yu=Symbol("gracefullyClosing"),mve=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],Eve=(t,e,r)=>{let i=0,n=t.length;for(;i>>1;r(t[s],e)?i=s+1:n=s}return i},Ive=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,ck=(t,e)=>{for(let r of t)r[ns].lengthe[ns].includes(i))&&r[_i]+e[_i]<=e.remoteSettings.maxConcurrentStreams&&cW(r)},yve=(t,e)=>{for(let r of t)e[ns].lengthr[ns].includes(i))&&e[_i]+r[_i]<=r.remoteSettings.maxConcurrentStreams&&cW(e)},uW=({agent:t,isFree:e})=>{let r={};for(let i in t.sessions){let s=t.sessions[i].filter(o=>{let a=o[ma.kCurrentStreamsCount]{t[Yu]=!0,t[_i]===0&&t.close()},ma=class extends hve{constructor({timeout:e=6e4,maxSessions:r=Infinity,maxFreeSessions:i=10,maxCachedTlsSessions:n=100}={}){super();this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=i,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new Cve({maxSize:n})}static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r="";if(e)for(let i of mve)e[i]&&(r+=`:${e[i]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let i=this.queue[e][r];this._sessionsCount{Array.isArray(i)?(i=[...i],n()):i=[{resolve:n,reject:s}];let o=this.normalizeOptions(r),a=ma.normalizeOrigin(e,r&&r.servername);if(a===void 0){for(let{reject:u}of i)u(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(o in this.sessions){let u=this.sessions[o],g=-1,f=-1,h;for(let p of u){let d=p.remoteSettings.maxConcurrentStreams;if(d=d||p[Yu]||p.destroyed)continue;h||(g=d),m>f&&(h=p,f=m)}}if(h){if(i.length!==1){for(let{reject:p}of i){let d=new Error(`Expected the length of listeners to be 1, got ${i.length}. -Please report this to https://github.com/szmarczak/http2-wrapper/`);p(d)}return}i[0].resolve(h);return}}if(o in this.queue){if(a in this.queue[o]){this.queue[o][a].listeners.push(...i),this._tryToCreateNewSession(o,a);return}}else this.queue[o]={};let l=()=>{o in this.queue&&this.queue[o][a]===c&&(delete this.queue[o][a],Object.keys(this.queue[o]).length===0&&delete this.queue[o])},c=()=>{let u=`${a}:${o}`,g=!1;try{let f=dve.connect(e,P({createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(u)},r));f[_i]=0,f[Yu]=!1;let h=()=>f[_i]{this.tlsSessionCache.set(u,m)}),f.once("error",m=>{for(let{reject:I}of i)I(m);this.tlsSessionCache.delete(u)}),f.setTimeout(this.timeout,()=>{f.destroy()}),f.once("close",()=>{if(g){p&&this._freeSessionsCount--,this._sessionsCount--;let m=this.sessions[o];m.splice(m.indexOf(f),1),m.length===0&&delete this.sessions[o]}else{let m=new Error("Session closed without receiving a SETTINGS frame");m.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:I}of i)I(m);l()}this._tryToCreateNewSession(o,a)});let d=()=>{if(!(!(o in this.queue)||!h())){for(let m of f[ns])if(m in this.queue[o]){let{listeners:I}=this.queue[o][m];for(;I.length!==0&&h();)I.shift().resolve(f);let B=this.queue[o];if(B[m].listeners.length===0&&(delete B[m],Object.keys(B).length===0)){delete this.queue[o];break}if(!h())break}}};f.on("origin",()=>{f[ns]=f.originSet,!!h()&&(d(),ck(this.sessions[o],f))}),f.once("remoteSettings",()=>{if(f.ref(),f.unref(),this._sessionsCount++,c.destroyed){let m=new Error("Agent has been destroyed");for(let I of i)I.reject(m);f.destroy();return}f[ns]=f.originSet;{let m=this.sessions;if(o in m){let I=m[o];I.splice(Eve(I,f,Ive),0,f)}else m[o]=[f]}this._freeSessionsCount+=1,g=!0,this.emit("session",f),d(),l(),f[_i]===0&&this._freeSessionsCount>this.maxFreeSessions&&f.close(),i.length!==0&&(this.getSession(a,r,i),i.length=0),f.on("remoteSettings",()=>{d(),ck(this.sessions[o],f)})}),f[lW]=f.request,f.request=(m,I)=>{if(f[Yu])throw new Error("The session is gracefully closing. No new streams are allowed.");let B=f[lW](m,I);return f.ref(),++f[_i],f[_i]===f.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,B.once("close",()=>{if(p=h(),--f[_i],!f.destroyed&&!f.closed&&(yve(this.sessions[o],f),h()&&!f.closed)){p||(this._freeSessionsCount++,p=!0);let b=f[_i]===0;b&&f.unref(),b&&(this._freeSessionsCount>this.maxFreeSessions||f[Yu])?f.close():(ck(this.sessions[o],f),d())}}),B}}catch(f){for(let h of i)h.reject(f);l()}};c.listeners=i,c.completed=!1,c.destroyed=!1,this.queue[o][a]=c,this._tryToCreateNewSession(o,a)})}request(e,r,i,n){return new Promise((s,o)=>{this.getSession(e,r,[{reject:o,resolve:a=>{try{s(a.request(i,n))}catch(l){o(l)}}}])})}createConnection(e,r){return ma.connect(e,r)}static connect(e,r){r.ALPNProtocols=["h2"];let i=e.port||443,n=e.hostname||e.host;return typeof r.servername=="undefined"&&(r.servername=n),pve.connect(i,n,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[_i]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let i of r)i.destroy(e);for(let r of Object.values(this.queue))for(let i of Object.values(r))i.destroyed=!0;this.queue={}}get freeSessions(){return uW({agent:this,isFree:!0})}get busySessions(){return uW({agent:this,isFree:!1})}};ma.kCurrentStreamsCount=_i;ma.kGracefullyClosing=Yu;AW.exports={Agent:ma,globalAgent:new ma}});var gk=E((Nnt,gW)=>{"use strict";var{Readable:wve}=require("stream"),fW=class extends wve{constructor(e,r){super({highWaterMark:r,autoDestroy:!1});this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};gW.exports=fW});var fk=E((Lnt,hW)=>{"use strict";hW.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname=="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return typeof t.port=="string"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var dW=E((Tnt,pW)=>{"use strict";pW.exports=(t,e,r)=>{for(let i of r)t.on(i,(...n)=>e.emit(i,...n))}});var mW=E((Mnt,CW)=>{"use strict";CW.exports=t=>{switch(t){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var IW=E((Knt,EW)=>{"use strict";var qu=(t,e,r)=>{EW.exports[e]=class extends t{constructor(...n){super(typeof r=="string"?r:r(n));this.name=`${super.name} [${e}]`,this.code=e}}};qu(TypeError,"ERR_INVALID_ARG_TYPE",t=>{let e=t[0].includes(".")?"property":"argument",r=t[1],i=Array.isArray(r);return i&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${t[0]}" ${e} must be ${i?"one of":"of"} type ${r}. Received ${typeof t[2]}`});qu(TypeError,"ERR_INVALID_PROTOCOL",t=>`Protocol "${t[0]}" not supported. Expected "${t[1]}"`);qu(Error,"ERR_HTTP_HEADERS_SENT",t=>`Cannot ${t[0]} headers after they are sent to the client`);qu(TypeError,"ERR_INVALID_HTTP_TOKEN",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);qu(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",t=>`Invalid value "${t[0]} for header "${t[1]}"`);qu(TypeError,"ERR_INVALID_CHAR",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var Ck=E((Unt,yW)=>{"use strict";var Bve=require("http2"),{Writable:Qve}=require("stream"),{Agent:wW,globalAgent:bve}=uk(),vve=gk(),Sve=fk(),xve=dW(),kve=mW(),{ERR_INVALID_ARG_TYPE:hk,ERR_INVALID_PROTOCOL:Pve,ERR_HTTP_HEADERS_SENT:BW,ERR_INVALID_HTTP_TOKEN:Dve,ERR_HTTP_INVALID_HEADER_VALUE:Rve,ERR_INVALID_CHAR:Fve}=IW(),{HTTP2_HEADER_STATUS:QW,HTTP2_HEADER_METHOD:bW,HTTP2_HEADER_PATH:vW,HTTP2_METHOD_CONNECT:Nve}=Bve.constants,Pi=Symbol("headers"),pk=Symbol("origin"),dk=Symbol("session"),SW=Symbol("options"),My=Symbol("flushedHeaders"),yp=Symbol("jobs"),Lve=/^[\^`\-\w!#$%&*+.|~]+$/,Tve=/[^\t\u0020-\u007E\u0080-\u00FF]/,xW=class extends Qve{constructor(e,r,i){super({autoDestroy:!1});let n=typeof e=="string"||e instanceof URL;if(n&&(e=Sve(e instanceof URL?e:new URL(e))),typeof r=="function"||r===void 0?(i=r,r=n?e:P({},e)):r=P(P({},e),r),r.h2session)this[dk]=r.h2session;else if(r.agent===!1)this.agent=new wW({maxFreeSessions:0});else if(typeof r.agent=="undefined"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new wW({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=bve;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new hk("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new Pve(r.protocol,"https:");let s=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,o=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:a}=r;if(r.timeout=void 0,this[Pi]=Object.create(null),this[yp]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[l,c]of Object.entries(r.headers))this.setHeader(l,c);r.auth&&!("authorization"in this[Pi])&&(this[Pi].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[SW]=r,s===443?(this[pk]=`https://${o}`,":authority"in this[Pi]||(this[Pi][":authority"]=o)):(this[pk]=`https://${o}:${s}`,":authority"in this[Pi]||(this[Pi][":authority"]=`${o}:${s}`)),a&&this.setTimeout(a),i&&this.once("response",i),this[My]=!1}get method(){return this[Pi][bW]}set method(e){e&&(this[Pi][bW]=e.toUpperCase())}get path(){return this[Pi][vW]}set path(e){e&&(this[Pi][vW]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,r,i){if(this._mustNotHaveABody){i(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let n=()=>this._request.write(e,r,i);this._request?n():this[yp].push(n)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[yp].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[My]||this.destroyed)return;this[My]=!0;let e=this.method===Nve,r=i=>{if(this._request=i,this.destroyed){i.destroy();return}e||xve(i,this,["timeout","continue","close","error"]);let n=o=>(...a)=>{!this.writable&&!this.destroyed?o(...a):this.once("finish",()=>{o(...a)})};i.once("response",n((o,a,l)=>{let c=new vve(this.socket,i.readableHighWaterMark);this.res=c,c.req=this,c.statusCode=o[QW],c.headers=o,c.rawHeaders=l,c.once("end",()=>{this.aborted?(c.aborted=!0,c.emit("aborted")):(c.complete=!0,c.socket=null,c.connection=null)}),e?(c.upgrade=!0,this.emit("connect",c,i,Buffer.alloc(0))?this.emit("close"):i.destroy()):(i.on("data",u=>{!c._dumped&&!c.push(u)&&i.pause()}),i.once("end",()=>{c.push(null)}),this.emit("response",c)||c._dump())})),i.once("headers",n(o=>this.emit("information",{statusCode:o[QW]}))),i.once("trailers",n((o,a,l)=>{let{res:c}=this;c.trailers=o,c.rawTrailers=l}));let{socket:s}=i.session;this.socket=s,this.connection=s;for(let o of this[yp])o();this.emit("socket",this.socket)};if(this[dk])try{r(this[dk].request(this[Pi]))}catch(i){this.emit("error",i)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[pk],this[SW],this[Pi]))}catch(i){this.emit("error",i)}}}getHeader(e){if(typeof e!="string")throw new hk("name","string",e);return this[Pi][e.toLowerCase()]}get headersSent(){return this[My]}removeHeader(e){if(typeof e!="string")throw new hk("name","string",e);if(this.headersSent)throw new BW("remove");delete this[Pi][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new BW("set");if(typeof e!="string"||!Lve.test(e)&&!kve(e))throw new Dve("Header name",e);if(typeof r=="undefined")throw new Rve(r,e);if(Tve.test(r))throw new Fve("header content",e);this[Pi][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let i=()=>this._request.setTimeout(e,r);return this._request?i():this[yp].push(i),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};yW.exports=xW});var PW=E((Hnt,kW)=>{"use strict";var Mve=require("tls");kW.exports=(t={})=>new Promise((e,r)=>{let i=Mve.connect(t,()=>{t.resolveSocket?(i.off("error",r),e({alpnProtocol:i.alpnProtocol,socket:i})):(i.destroy(),e({alpnProtocol:i.alpnProtocol}))});i.on("error",r)})});var RW=E((Gnt,DW)=>{"use strict";var Ove=require("net");DW.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?e=r:e=r.slice(1,-1):e=r.split(":",1)[0]),Ove.isIP(e)?"":e}});var LW=E((jnt,mk)=>{"use strict";var FW=require("http"),Ek=require("https"),Kve=PW(),Uve=lk(),Hve=Ck(),Gve=RW(),jve=fk(),Oy=new Uve({maxSize:100}),wp=new Map,NW=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let i=()=>{t.emit("free",e,r)};e.on("free",i);let n=()=>{t.removeSocket(e,r)};e.on("close",n);let s=()=>{t.removeSocket(e,r),e.off("close",n),e.off("free",i),e.off("agentRemove",s)};e.on("agentRemove",s),t.emit("free",e,r)},Yve=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!Oy.has(e)){if(wp.has(e))return(await wp.get(e)).alpnProtocol;let{path:r,agent:i}=t;t.path=t.socketPath;let n=Kve(t);wp.set(e,n);try{let{socket:s,alpnProtocol:o}=await n;if(Oy.set(e,o),t.path=r,o==="h2")s.destroy();else{let{globalAgent:a}=Ek,l=Ek.Agent.prototype.createConnection;i?i.createConnection===l?NW(i,s,t):s.destroy():a.createConnection===l?NW(a,s,t):s.destroy()}return wp.delete(e),o}catch(s){throw wp.delete(e),s}}return Oy.get(e)};mk.exports=async(t,e,r)=>{if((typeof t=="string"||t instanceof URL)&&(t=jve(new URL(t))),typeof e=="function"&&(r=e,e=void 0),e=_(P(P({ALPNProtocols:["h2","http/1.1"]},t),e),{resolveSocket:!0}),!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let i=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||Gve(e),e.port=e.port||(i?443:80),e._defaultAgent=i?Ek.globalAgent:FW.globalAgent;let n=e.agent;if(n){if(n.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=n[i?"https":"http"]}return i&&await Yve(e)==="h2"?(n&&(e.agent=n.http2),new Hve(e,r)):FW.request(e,r)};mk.exports.protocolCache=Oy});var MW=E((Ynt,TW)=>{"use strict";var qve=require("http2"),Jve=uk(),Ik=Ck(),Wve=gk(),zve=LW(),Vve=(t,e,r)=>new Ik(t,e,r),_ve=(t,e,r)=>{let i=new Ik(t,e,r);return i.end(),i};TW.exports=_(P(_(P({},qve),{ClientRequest:Ik,IncomingMessage:Wve}),Jve),{request:Vve,get:_ve,auto:zve})});var wk=E(yk=>{"use strict";Object.defineProperty(yk,"__esModule",{value:!0});var OW=Ca();yk.default=t=>OW.default.nodeStream(t)&&OW.default.function_(t.getBoundary)});var GW=E(Bk=>{"use strict";Object.defineProperty(Bk,"__esModule",{value:!0});var KW=require("fs"),UW=require("util"),HW=Ca(),Xve=wk(),Zve=UW.promisify(KW.stat);Bk.default=async(t,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!t)return 0;if(HW.default.string(t))return Buffer.byteLength(t);if(HW.default.buffer(t))return t.length;if(Xve.default(t))return UW.promisify(t.getLength.bind(t))();if(t instanceof KW.ReadStream){let{size:r}=await Zve(t.path);return r===0?void 0:r}}});var bk=E(Qk=>{"use strict";Object.defineProperty(Qk,"__esModule",{value:!0});function $ve(t,e,r){let i={};for(let n of r)i[n]=(...s)=>{e.emit(n,...s)},t.on(n,i[n]);return()=>{for(let n of r)t.off(n,i[n])}}Qk.default=$ve});var jW=E(vk=>{"use strict";Object.defineProperty(vk,"__esModule",{value:!0});vk.default=()=>{let t=[];return{once(e,r,i){e.once(r,i),t.push({origin:e,event:r,fn:i})},unhandleAll(){for(let e of t){let{origin:r,event:i,fn:n}=e;r.removeListener(i,n)}t.length=0}}}});var qW=E(Bp=>{"use strict";Object.defineProperty(Bp,"__esModule",{value:!0});Bp.TimeoutError=void 0;var eSe=require("net"),tSe=jW(),YW=Symbol("reentry"),rSe=()=>{},Sk=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`);this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};Bp.TimeoutError=Sk;Bp.default=(t,e,r)=>{if(YW in t)return rSe;t[YW]=!0;let i=[],{once:n,unhandleAll:s}=tSe.default(),o=(g,f,h)=>{var p;let d=setTimeout(f,g,g,h);(p=d.unref)===null||p===void 0||p.call(d);let m=()=>{clearTimeout(d)};return i.push(m),m},{host:a,hostname:l}=r,c=(g,f)=>{t.destroy(new Sk(g,f))},u=()=>{for(let g of i)g();s()};if(t.once("error",g=>{if(u(),t.listenerCount("error")===0)throw g}),t.once("close",u),n(t,"response",g=>{n(g,"end",u)}),typeof e.request!="undefined"&&o(e.request,c,"request"),typeof e.socket!="undefined"){let g=()=>{c(e.socket,"socket")};t.setTimeout(e.socket,g),i.push(()=>{t.removeListener("timeout",g)})}return n(t,"socket",g=>{var f;let{socketPath:h}=t;if(g.connecting){let p=Boolean(h!=null?h:eSe.isIP((f=l!=null?l:a)!==null&&f!==void 0?f:"")!==0);if(typeof e.lookup!="undefined"&&!p&&typeof g.address().address=="undefined"){let d=o(e.lookup,c,"lookup");n(g,"lookup",d)}if(typeof e.connect!="undefined"){let d=()=>o(e.connect,c,"connect");p?n(g,"connect",d()):n(g,"lookup",m=>{m===null&&n(g,"connect",d())})}typeof e.secureConnect!="undefined"&&r.protocol==="https:"&&n(g,"connect",()=>{let d=o(e.secureConnect,c,"secureConnect");n(g,"secureConnect",d)})}if(typeof e.send!="undefined"){let p=()=>o(e.send,c,"send");g.connecting?n(g,"connect",()=>{n(t,"upload-complete",p())}):n(t,"upload-complete",p())}}),typeof e.response!="undefined"&&n(t,"upload-complete",()=>{let g=o(e.response,c,"response");n(t,"response",g)}),u}});var WW=E(xk=>{"use strict";Object.defineProperty(xk,"__esModule",{value:!0});var JW=Ca();xk.default=t=>{t=t;let e={protocol:t.protocol,hostname:JW.default.string(t.hostname)&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return JW.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var zW=E(kk=>{"use strict";Object.defineProperty(kk,"__esModule",{value:!0});var iSe=require("url"),nSe=["protocol","host","hostname","port","pathname","search"];kk.default=(t,e)=>{var r,i;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!t){if(!e.protocol)throw new TypeError("No URL protocol specified");t=`${e.protocol}//${(i=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&i!==void 0?i:""}`}let n=new iSe.URL(t);if(e.path){let s=e.path.indexOf("?");s===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,s),e.search=e.path.slice(s+1)),delete e.path}for(let s of nSe)e[s]&&(n[s]=e[s].toString());return n}});var _W=E(Pk=>{"use strict";Object.defineProperty(Pk,"__esModule",{value:!0});var VW=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};Pk.default=VW});var Rk=E(Dk=>{"use strict";Object.defineProperty(Dk,"__esModule",{value:!0});var sSe=async t=>{let e=[],r=0;for await(let i of t)e.push(i),r+=Buffer.byteLength(i);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(""))};Dk.default=sSe});var ZW=E(ql=>{"use strict";Object.defineProperty(ql,"__esModule",{value:!0});ql.dnsLookupIpVersionToFamily=ql.isDnsLookupIpVersion=void 0;var XW={auto:0,ipv4:4,ipv6:6};ql.isDnsLookupIpVersion=t=>t in XW;ql.dnsLookupIpVersionToFamily=t=>{if(ql.isDnsLookupIpVersion(t))return XW[t];throw new Error("Invalid DNS lookup IP version")}});var Fk=E(Ky=>{"use strict";Object.defineProperty(Ky,"__esModule",{value:!0});Ky.isResponseOk=void 0;Ky.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var e8=E(Nk=>{"use strict";Object.defineProperty(Nk,"__esModule",{value:!0});var $W=new Set;Nk.default=t=>{$W.has(t)||($W.add(t),process.emitWarning(`Got: ${t}`,{type:"DeprecationWarning"}))}});var t8=E(Lk=>{"use strict";Object.defineProperty(Lk,"__esModule",{value:!0});var ar=Ca(),oSe=(t,e)=>{if(ar.default.null_(t.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");ar.assert.any([ar.default.string,ar.default.undefined],t.encoding),ar.assert.any([ar.default.boolean,ar.default.undefined],t.resolveBodyOnly),ar.assert.any([ar.default.boolean,ar.default.undefined],t.methodRewriting),ar.assert.any([ar.default.boolean,ar.default.undefined],t.isStream),ar.assert.any([ar.default.string,ar.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType="text");let{retry:r}=t;if(e?t.retry=P({},e.retry):t.retry={calculateDelay:i=>i.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},ar.default.object(r)?(t.retry=P(P({},t.retry),r),t.retry.methods=[...new Set(t.retry.methods.map(i=>i.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):ar.default.number(r)&&(t.retry.limit=r),ar.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(ar.default.number))),ar.default.object(t.pagination)){e&&(t.pagination=P(P({},e.pagination),t.pagination));let{pagination:i}=t;if(!ar.default.function_(i.transform))throw new Error("`options.pagination.transform` must be implemented");if(!ar.default.function_(i.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!ar.default.function_(i.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!ar.default.function_(i.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return t.responseType==="json"&&t.headers.accept===void 0&&(t.headers.accept="application/json"),t};Lk.default=oSe});var r8=E(Qp=>{"use strict";Object.defineProperty(Qp,"__esModule",{value:!0});Qp.retryAfterStatusCodes=void 0;Qp.retryAfterStatusCodes=new Set([413,429,503]);var aSe=({attemptCount:t,retryOptions:e,error:r,retryAfter:i})=>{if(t>e.limit)return 0;let n=e.methods.includes(r.options.method),s=e.errorCodes.includes(r.code),o=r.response&&e.statusCodes.includes(r.response.statusCode);if(!n||!s&&!o)return 0;if(r.response){if(i)return e.maxRetryAfter===void 0||i>e.maxRetryAfter?0:i;if(r.response.statusCode===413)return 0}let a=Math.random()*100;return 2**(t-1)*1e3+a};Qp.default=aSe});var vp=E(Rt=>{"use strict";Object.defineProperty(Rt,"__esModule",{value:!0});Rt.UnsupportedProtocolError=Rt.ReadError=Rt.TimeoutError=Rt.UploadError=Rt.CacheError=Rt.HTTPError=Rt.MaxRedirectsError=Rt.RequestError=Rt.setNonEnumerableProperties=Rt.knownHookEvents=Rt.withoutBody=Rt.kIsNormalizedAlready=void 0;var i8=require("util"),n8=require("stream"),ASe=require("fs"),dA=require("url"),s8=require("http"),Tk=require("http"),lSe=require("https"),cSe=h3(),uSe=y3(),o8=tW(),gSe=sW(),fSe=MW(),hSe=Ly(),ce=Ca(),pSe=GW(),a8=wk(),dSe=bk(),A8=qW(),CSe=WW(),l8=zW(),mSe=_W(),ESe=Rk(),c8=ZW(),ISe=Fk(),CA=e8(),ySe=t8(),wSe=r8(),Mk,Ei=Symbol("request"),Uy=Symbol("response"),Ju=Symbol("responseSize"),Wu=Symbol("downloadedSize"),zu=Symbol("bodySize"),Vu=Symbol("uploadedSize"),Hy=Symbol("serverResponsesPiped"),u8=Symbol("unproxyEvents"),g8=Symbol("isFromCache"),Ok=Symbol("cancelTimeouts"),f8=Symbol("startedReading"),_u=Symbol("stopReading"),Gy=Symbol("triggerRead"),mA=Symbol("body"),bp=Symbol("jobs"),h8=Symbol("originalResponse"),p8=Symbol("retryTimeout");Rt.kIsNormalizedAlready=Symbol("isNormalizedAlready");var BSe=ce.default.string(process.versions.brotli);Rt.withoutBody=new Set(["GET","HEAD"]);Rt.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function QSe(t){for(let e in t){let r=t[e];if(!ce.default.string(r)&&!ce.default.number(r)&&!ce.default.boolean(r)&&!ce.default.null_(r)&&!ce.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function bSe(t){return ce.default.object(t)&&!("statusCode"in t)}var Kk=new mSe.default,vSe=async t=>new Promise((e,r)=>{let i=n=>{r(n)};t.pending||e(),t.once("error",i),t.once("ready",()=>{t.off("error",i),e()})}),SSe=new Set([300,301,302,303,304,307,308]),xSe=["context","body","json","form"];Rt.setNonEnumerableProperties=(t,e)=>{let r={};for(let i of t)if(!!i)for(let n of xSe)n in i&&(r[n]={writable:!0,configurable:!0,enumerable:!1,value:i[n]});Object.defineProperties(e,r)};var _r=class extends Error{constructor(e,r,i){var n;super(e);if(Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,i instanceof Uk?(Object.defineProperty(this,"request",{enumerable:!1,value:i}),Object.defineProperty(this,"response",{enumerable:!1,value:i[Uy]}),Object.defineProperty(this,"options",{enumerable:!1,value:i.options})):Object.defineProperty(this,"options",{enumerable:!1,value:i}),this.timings=(n=this.request)===null||n===void 0?void 0:n.timings,ce.default.string(r.stack)&&ce.default.string(this.stack)){let s=this.stack.indexOf(this.message)+this.message.length,o=this.stack.slice(s).split(` -`).reverse(),a=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` -`).reverse();for(;a.length!==0&&a[0]===o[0];)o.shift();this.stack=`${this.stack.slice(0,s)}${o.reverse().join(` -`)}${a.reverse().join(` -`)}`}}};Rt.RequestError=_r;var Hk=class extends _r{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e);this.name="MaxRedirectsError"}};Rt.MaxRedirectsError=Hk;var Gk=class extends _r{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request);this.name="HTTPError"}};Rt.HTTPError=Gk;var jk=class extends _r{constructor(e,r){super(e.message,e,r);this.name="CacheError"}};Rt.CacheError=jk;var Yk=class extends _r{constructor(e,r){super(e.message,e,r);this.name="UploadError"}};Rt.UploadError=Yk;var qk=class extends _r{constructor(e,r,i){super(e.message,e,i);this.name="TimeoutError",this.event=e.event,this.timings=r}};Rt.TimeoutError=qk;var jy=class extends _r{constructor(e,r){super(e.message,e,r);this.name="ReadError"}};Rt.ReadError=jy;var Jk=class extends _r{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e);this.name="UnsupportedProtocolError"}};Rt.UnsupportedProtocolError=Jk;var kSe=["socket","connect","continue","information","upgrade","timeout"],Uk=class extends n8.Duplex{constructor(e,r={},i){super({autoDestroy:!1,highWaterMark:0});this[Wu]=0,this[Vu]=0,this.requestInitialized=!1,this[Hy]=new Set,this.redirects=[],this[_u]=!1,this[Gy]=!1,this[bp]=[],this.retryCount=0,this._progressCallbacks=[];let n=()=>this._unlockWrite(),s=()=>this._lockWrite();this.on("pipe",c=>{c.prependListener("data",n),c.on("data",s),c.prependListener("end",n),c.on("end",s)}),this.on("unpipe",c=>{c.off("data",n),c.off("data",s),c.off("end",n),c.off("end",s)}),this.on("pipe",c=>{c instanceof Tk.IncomingMessage&&(this.options.headers=P(P({},c.headers),this.options.headers))});let{json:o,body:a,form:l}=r;if((o||a||l)&&this._lockWrite(),Rt.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,i)}catch(c){ce.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(c);return}(async()=>{var c;try{this.options.body instanceof ASe.ReadStream&&await vSe(this.options.body);let{url:u}=this.options;if(!u)throw new TypeError("Missing `url` property");if(this.requestUrl=u.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(c=this[Ei])===null||c===void 0||c.destroy();return}for(let g of this[bp])g();this[bp].length=0,this.requestInitialized=!0}catch(u){if(u instanceof _r){this._beforeError(u);return}this.destroyed||this.destroy(u)}})()}static normalizeArguments(e,r,i){var n,s,o,a,l;let c=r;if(ce.default.object(e)&&!ce.default.urlInstance(e))r=P(P(P({},i),e),r);else{if(e&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r=P(P({},i),r),e!==void 0&&(r.url=e),ce.default.urlInstance(r.url)&&(r.url=new dA.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),ce.assert.any([ce.default.string,ce.default.undefined],r.method),ce.assert.any([ce.default.object,ce.default.undefined],r.headers),ce.assert.any([ce.default.string,ce.default.urlInstance,ce.default.undefined],r.prefixUrl),ce.assert.any([ce.default.object,ce.default.undefined],r.cookieJar),ce.assert.any([ce.default.object,ce.default.string,ce.default.undefined],r.searchParams),ce.assert.any([ce.default.object,ce.default.string,ce.default.undefined],r.cache),ce.assert.any([ce.default.object,ce.default.number,ce.default.undefined],r.timeout),ce.assert.any([ce.default.object,ce.default.undefined],r.context),ce.assert.any([ce.default.object,ce.default.undefined],r.hooks),ce.assert.any([ce.default.boolean,ce.default.undefined],r.decompress),ce.assert.any([ce.default.boolean,ce.default.undefined],r.ignoreInvalidCookies),ce.assert.any([ce.default.boolean,ce.default.undefined],r.followRedirect),ce.assert.any([ce.default.number,ce.default.undefined],r.maxRedirects),ce.assert.any([ce.default.boolean,ce.default.undefined],r.throwHttpErrors),ce.assert.any([ce.default.boolean,ce.default.undefined],r.http2),ce.assert.any([ce.default.boolean,ce.default.undefined],r.allowGetBody),ce.assert.any([ce.default.string,ce.default.undefined],r.localAddress),ce.assert.any([c8.isDnsLookupIpVersion,ce.default.undefined],r.dnsLookupIpVersion),ce.assert.any([ce.default.object,ce.default.undefined],r.https),ce.assert.any([ce.default.boolean,ce.default.undefined],r.rejectUnauthorized),r.https&&(ce.assert.any([ce.default.boolean,ce.default.undefined],r.https.rejectUnauthorized),ce.assert.any([ce.default.function_,ce.default.undefined],r.https.checkServerIdentity),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.certificateAuthority),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.key),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.certificate),ce.assert.any([ce.default.string,ce.default.undefined],r.https.passphrase),ce.assert.any([ce.default.string,ce.default.buffer,ce.default.array,ce.default.undefined],r.https.pfx)),ce.assert.any([ce.default.object,ce.default.undefined],r.cacheOptions),ce.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===(i==null?void 0:i.headers)?r.headers=P({},r.headers):r.headers=hSe(P(P({},i==null?void 0:i.headers),r.headers)),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==(i==null?void 0:i.searchParams)){let h;if(ce.default.string(r.searchParams)||r.searchParams instanceof dA.URLSearchParams)h=new dA.URLSearchParams(r.searchParams);else{QSe(r.searchParams),h=new dA.URLSearchParams;for(let p in r.searchParams){let d=r.searchParams[p];d===null?h.append(p,""):d!==void 0&&h.append(p,d)}}(n=i==null?void 0:i.searchParams)===null||n===void 0||n.forEach((p,d)=>{h.has(d)||h.append(d,p)}),r.searchParams=h}if(r.username=(s=r.username)!==null&&s!==void 0?s:"",r.password=(o=r.password)!==null&&o!==void 0?o:"",ce.default.undefined(r.prefixUrl)?r.prefixUrl=(a=i==null?void 0:i.prefixUrl)!==null&&a!==void 0?a:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),ce.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=l8.default(r.prefixUrl+r.url,r)}else(ce.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=l8.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:h}=r;Object.defineProperty(r,"prefixUrl",{set:d=>{let m=r.url;if(!m.href.startsWith(d))throw new Error(`Cannot change \`prefixUrl\` from ${h} to ${d}: ${m.href}`);r.url=new dA.URL(d+m.href.slice(h.length)),h=d},get:()=>h});let{protocol:p}=r.url;if(p==="unix:"&&(p="http:",r.url=new dA.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),p!=="http:"&&p!=="https:")throw new Jk(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:u}=r;if(u){let{setCookie:h,getCookieString:p}=u;ce.assert.function_(h),ce.assert.function_(p),h.length===4&&p.length===0&&(h=i8.promisify(h.bind(r.cookieJar)),p=i8.promisify(p.bind(r.cookieJar)),r.cookieJar={setCookie:h,getCookieString:p})}let{cache:g}=r;if(g&&(Kk.has(g)||Kk.set(g,new o8((h,p)=>{let d=h[Ei](h,p);return ce.default.promise(d)&&(d.once=(m,I)=>{if(m==="error")d.catch(I);else if(m==="abort")(async()=>{try{(await d).once("abort",I)}catch(B){}})();else throw new Error(`Unknown HTTP2 promise event: ${m}`);return d}),d},g))),r.cacheOptions=P({},r.cacheOptions),r.dnsCache===!0)Mk||(Mk=new uSe.default),r.dnsCache=Mk;else if(!ce.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${ce.default(r.dnsCache)}`);ce.default.number(r.timeout)?r.timeout={request:r.timeout}:i&&r.timeout!==i.timeout?r.timeout=P(P({},i.timeout),r.timeout):r.timeout=P({},r.timeout),r.context||(r.context={});let f=r.hooks===(i==null?void 0:i.hooks);r.hooks=P({},r.hooks);for(let h of Rt.knownHookEvents)if(h in r.hooks)if(ce.default.array(r.hooks[h]))r.hooks[h]=[...r.hooks[h]];else throw new TypeError(`Parameter \`${h}\` must be an Array, got ${ce.default(r.hooks[h])}`);else r.hooks[h]=[];if(i&&!f)for(let h of Rt.knownHookEvents)i.hooks[h].length>0&&(r.hooks[h]=[...i.hooks[h],...r.hooks[h]]);if("family"in r&&CA.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),(i==null?void 0:i.https)&&(r.https=P(P({},i.https),r.https)),"rejectUnauthorized"in r&&CA.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&CA.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&CA.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&CA.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&CA.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&CA.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&CA.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let h in r.agent)if(h!=="http"&&h!=="https"&&h!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${h}\``)}return r.maxRedirects=(l=r.maxRedirects)!==null&&l!==void 0?l:0,Rt.setNonEnumerableProperties([i,c],r),ySe.default(r,i)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,i=!ce.default.undefined(e.form),n=!ce.default.undefined(e.json),s=!ce.default.undefined(e.body),o=i||n||s,a=Rt.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=a,o){if(a)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([s,i,n].filter(l=>l).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(s&&!(e.body instanceof n8.Readable)&&!ce.default.string(e.body)&&!ce.default.buffer(e.body)&&!a8.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(i&&!ce.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let l=!ce.default.string(r["content-type"]);s?(a8.default(e.body)&&l&&(r["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[mA]=e.body):i?(l&&(r["content-type"]="application/x-www-form-urlencoded"),this[mA]=new dA.URLSearchParams(e.form).toString()):(l&&(r["content-type"]="application/json"),this[mA]=e.stringifyJson(e.json));let c=await pSe.default(this[mA],e.headers);ce.default.undefined(r["content-length"])&&ce.default.undefined(r["transfer-encoding"])&&!a&&!ce.default.undefined(c)&&(r["content-length"]=String(c))}}else a?this._lockWrite():this._unlockWrite();this[zu]=Number(r["content-length"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:i}=r;this[h8]=e,r.decompress&&(e=gSe(e));let n=e.statusCode,s=e;s.statusMessage=s.statusMessage?s.statusMessage:s8.STATUS_CODES[n],s.url=r.url.toString(),s.requestUrl=this.requestUrl,s.redirectUrls=this.redirects,s.request=this,s.isFromCache=e.fromCache||!1,s.ip=this.ip,s.retryCount=this.retryCount,this[g8]=s.isFromCache,this[Ju]=Number(e.headers["content-length"])||void 0,this[Uy]=e,e.once("end",()=>{this[Ju]=this[Wu],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",a=>{e.destroy(),this._beforeError(new jy(a,this))}),e.once("aborted",()=>{this._beforeError(new jy({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let o=e.headers["set-cookie"];if(ce.default.object(r.cookieJar)&&o){let a=o.map(async l=>r.cookieJar.setCookie(l,i.toString()));r.ignoreInvalidCookies&&(a=a.map(async l=>l.catch(()=>{})));try{await Promise.all(a)}catch(l){this._beforeError(l);return}}if(r.followRedirect&&e.headers.location&&SSe.has(n)){if(e.resume(),this[Ei]&&(this[Ok](),delete this[Ei],this[u8]()),(n===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[mA]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new Hk(this));return}try{let l=Buffer.from(e.headers.location,"binary").toString(),c=new dA.URL(l,i),u=c.toString();decodeURI(u),c.hostname!==i.hostname||c.port!==i.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(c.username=r.username,c.password=r.password),this.redirects.push(u),r.url=c;for(let g of r.hooks.beforeRedirect)await g(r,s);this.emit("redirect",s,r),await this._makeRequest()}catch(l){this._beforeError(l);return}return}if(r.isStream&&r.throwHttpErrors&&!ISe.isResponseOk(s)){this._beforeError(new Gk(s));return}e.on("readable",()=>{this[Gy]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let a of this[Hy])if(!a.headersSent){for(let l in e.headers){let c=r.decompress?l!=="content-encoding":!0,u=e.headers[l];c&&a.setHeader(l,u)}a.statusCode=n}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:i,url:n}=r;cSe.default(e),this[Ok]=A8.default(e,i,n);let s=r.cache?"cacheableResponse":"response";e.once(s,l=>{this._onResponse(l)}),e.once("error",l=>{var c;e.destroy(),(c=e.res)===null||c===void 0||c.removeAllListeners("end"),l=l instanceof A8.TimeoutError?new qk(l,this.timings,this):new _r(l.message,l,this),this._beforeError(l)}),this[u8]=dSe.default(e,this,kSe),this[Ei]=e,this.emit("uploadProgress",this.uploadProgress);let o=this[mA],a=this.redirects.length===0?this:e;ce.default.nodeStream(o)?(o.pipe(a),o.once("error",l=>{this._beforeError(new Yk(l,this))})):(this._unlockWrite(),ce.default.undefined(o)?(this._cannotHaveBody||this._noPipe)&&(a.end(),this._lockWrite()):(this._writeRequest(o,void 0,()=>{}),a.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,r){return new Promise((i,n)=>{Object.assign(r,CSe.default(e)),delete r.url;let s,o=Kk.get(r.cache)(r,async a=>{a._readableState.autoDestroy=!1,s&&(await s).emit("cacheableResponse",a),i(a)});r.url=e,o.once("error",n),o.once("request",async a=>{s=a,i(s)})})}async _makeRequest(){var e,r,i,n,s;let{options:o}=this,{headers:a}=o;for(let I in a)if(ce.default.undefined(a[I]))delete a[I];else if(ce.default.null_(a[I]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${I}\` header`);if(o.decompress&&ce.default.undefined(a["accept-encoding"])&&(a["accept-encoding"]=BSe?"gzip, deflate, br":"gzip, deflate"),o.cookieJar){let I=await o.cookieJar.getCookieString(o.url.toString());ce.default.nonEmptyString(I)&&(o.headers.cookie=I)}for(let I of o.hooks.beforeRequest){let B=await I(o);if(!ce.default.undefined(B)){o.request=()=>B;break}}o.body&&this[mA]!==o.body&&(this[mA]=o.body);let{agent:l,request:c,timeout:u,url:g}=o;if(o.dnsCache&&!("lookup"in o)&&(o.lookup=o.dnsCache.lookup),g.hostname==="unix"){let I=/(?.+?):(?.+)/.exec(`${g.pathname}${g.search}`);if(I==null?void 0:I.groups){let{socketPath:B,path:b}=I.groups;Object.assign(o,{socketPath:B,path:b,host:""})}}let f=g.protocol==="https:",h;o.http2?h=fSe.auto:h=f?lSe.request:s8.request;let p=(e=o.request)!==null&&e!==void 0?e:h,d=o.cache?this._createCacheableRequest:p;l&&!o.http2&&(o.agent=l[f?"https":"http"]),o[Ei]=p,delete o.request,delete o.timeout;let m=o;if(m.shared=(r=o.cacheOptions)===null||r===void 0?void 0:r.shared,m.cacheHeuristic=(i=o.cacheOptions)===null||i===void 0?void 0:i.cacheHeuristic,m.immutableMinTimeToLive=(n=o.cacheOptions)===null||n===void 0?void 0:n.immutableMinTimeToLive,m.ignoreCargoCult=(s=o.cacheOptions)===null||s===void 0?void 0:s.ignoreCargoCult,o.dnsLookupIpVersion!==void 0)try{m.family=c8.dnsLookupIpVersionToFamily(o.dnsLookupIpVersion)}catch(I){throw new Error("Invalid `dnsLookupIpVersion` option value")}o.https&&("rejectUnauthorized"in o.https&&(m.rejectUnauthorized=o.https.rejectUnauthorized),o.https.checkServerIdentity&&(m.checkServerIdentity=o.https.checkServerIdentity),o.https.certificateAuthority&&(m.ca=o.https.certificateAuthority),o.https.certificate&&(m.cert=o.https.certificate),o.https.key&&(m.key=o.https.key),o.https.passphrase&&(m.passphrase=o.https.passphrase),o.https.pfx&&(m.pfx=o.https.pfx));try{let I=await d(g,m);ce.default.undefined(I)&&(I=h(g,m)),o.request=c,o.timeout=u,o.agent=l,o.https&&("rejectUnauthorized"in o.https&&delete m.rejectUnauthorized,o.https.checkServerIdentity&&delete m.checkServerIdentity,o.https.certificateAuthority&&delete m.ca,o.https.certificate&&delete m.cert,o.https.key&&delete m.key,o.https.passphrase&&delete m.passphrase,o.https.pfx&&delete m.pfx),bSe(I)?this._onRequest(I):this.writable?(this.once("finish",()=>{this._onResponse(I)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(I)}catch(I){throw I instanceof o8.CacheError?new jk(I,this):new _r(I.message,I,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new _r(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[_u])return;let{options:r}=this,i=this.retryCount+1;this[_u]=!0,e instanceof _r||(e=new _r(e.message,e,this));let n=e,{response:s}=n;(async()=>{if(s&&!s.body){s.setEncoding(this._readableState.encoding);try{s.rawBody=await ESe.default(s),s.body=s.rawBody.toString()}catch(o){}}if(this.listenerCount("retry")!==0){let o;try{let a;s&&"retry-after"in s.headers&&(a=Number(s.headers["retry-after"]),Number.isNaN(a)?(a=Date.parse(s.headers["retry-after"])-Date.now(),a<=0&&(a=1)):a*=1e3),o=await r.retry.calculateDelay({attemptCount:i,retryOptions:r.retry,error:n,retryAfter:a,computedValue:wSe.default({attemptCount:i,retryOptions:r.retry,error:n,retryAfter:a,computedValue:0})})}catch(a){this._error(new _r(a.message,a,this));return}if(o){let a=async()=>{try{for(let l of this.options.hooks.beforeRetry)await l(this.options,n,i)}catch(l){this._error(new _r(l.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",i,e))};this[p8]=setTimeout(a,o);return}}this._error(n)})()}_read(){this[Gy]=!0;let e=this[Uy];if(e&&!this[_u]){e.readableLength&&(this[Gy]=!1);let r;for(;(r=e.read())!==null;){this[Wu]+=r.length,this[f8]=!0;let i=this.downloadProgress;i.percent<1&&this.emit("downloadProgress",i),this.push(r)}}}_write(e,r,i){let n=()=>{this._writeRequest(e,r,i)};this.requestInitialized?n():this[bp].push(n)}_writeRequest(e,r,i){this[Ei].destroyed||(this._progressCallbacks.push(()=>{this[Vu]+=Buffer.byteLength(e,r);let n=this.uploadProgress;n.percent<1&&this.emit("uploadProgress",n)}),this[Ei].write(e,r,n=>{!n&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),i(n)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Ei in this)){e();return}if(this[Ei].destroyed){e();return}this[Ei].end(i=>{i||(this[zu]=this[Vu],this.emit("uploadProgress",this.uploadProgress),this[Ei].emit("upload-complete")),e(i)})};this.requestInitialized?r():this[bp].push(r)}_destroy(e,r){var i;this[_u]=!0,clearTimeout(this[p8]),Ei in this&&(this[Ok](),((i=this[Uy])===null||i===void 0?void 0:i.complete)||this[Ei].destroy()),e!==null&&!ce.default.undefined(e)&&!(e instanceof _r)&&(e=new _r(e.message,e,this)),r(e)}get _isAboutToError(){return this[_u]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,i;return((r=(e=this[Ei])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!((i=this[h8])===null||i===void 0?void 0:i.complete)}get socket(){var e,r;return(r=(e=this[Ei])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[Ju]?e=this[Wu]/this[Ju]:this[Ju]===this[Wu]?e=1:e=0,{percent:e,transferred:this[Wu],total:this[Ju]}}get uploadProgress(){let e;return this[zu]?e=this[Vu]/this[zu]:this[zu]===this[Vu]?e=1:e=0,{percent:e,transferred:this[Vu],total:this[zu]}}get timings(){var e;return(e=this[Ei])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[g8]}pipe(e,r){if(this[f8])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof Tk.ServerResponse&&this[Hy].add(e),super.pipe(e,r)}unpipe(e){return e instanceof Tk.ServerResponse&&this[Hy].delete(e),super.unpipe(e),this}};Rt.default=Uk});var Sp=E(Ms=>{"use strict";var PSe=Ms&&Ms.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),DSe=Ms&&Ms.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&PSe(e,t,r)};Object.defineProperty(Ms,"__esModule",{value:!0});Ms.CancelError=Ms.ParseError=void 0;var d8=vp(),C8=class extends d8.RequestError{constructor(e,r){let{options:i}=r.request;super(`${e.message} in "${i.url.toString()}"`,e,r.request);this.name="ParseError"}};Ms.ParseError=C8;var m8=class extends d8.RequestError{constructor(e){super("Promise was canceled",{},e);this.name="CancelError"}get isCanceled(){return!0}};Ms.CancelError=m8;DSe(vp(),Ms)});var I8=E(Wk=>{"use strict";Object.defineProperty(Wk,"__esModule",{value:!0});var E8=Sp(),RSe=(t,e,r,i)=>{let{rawBody:n}=t;try{if(e==="text")return n.toString(i);if(e==="json")return n.length===0?"":r(n.toString());if(e==="buffer")return n;throw new E8.ParseError({message:`Unknown body type '${e}'`,name:"Error"},t)}catch(s){throw new E8.ParseError(s,t)}};Wk.default=RSe});var zk=E(EA=>{"use strict";var FSe=EA&&EA.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),NSe=EA&&EA.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&FSe(e,t,r)};Object.defineProperty(EA,"__esModule",{value:!0});var LSe=require("events"),TSe=Ca(),MSe=g3(),Yy=Sp(),y8=I8(),w8=vp(),OSe=bk(),KSe=Rk(),B8=Fk(),USe=["request","response","redirect","uploadProgress","downloadProgress"];function Q8(t){let e,r,i=new LSe.EventEmitter,n=new MSe((o,a,l)=>{let c=u=>{let g=new w8.default(void 0,t);g.retryCount=u,g._noPipe=!0,l(()=>g.destroy()),l.shouldReject=!1,l(()=>a(new Yy.CancelError(g))),e=g,g.once("response",async p=>{var d;if(p.retryCount=u,p.request.aborted)return;let m;try{m=await KSe.default(g),p.rawBody=m}catch(R){return}if(g._isAboutToError)return;let I=((d=p.headers["content-encoding"])!==null&&d!==void 0?d:"").toLowerCase(),B=["gzip","deflate","br"].includes(I),{options:b}=g;if(B&&!b.decompress)p.body=m;else try{p.body=y8.default(p,b.responseType,b.parseJson,b.encoding)}catch(R){if(p.body=m.toString(),B8.isResponseOk(p)){g._beforeError(R);return}}try{for(let[R,H]of b.hooks.afterResponse.entries())p=await H(p,async L=>{let K=w8.default.normalizeArguments(void 0,_(P({},L),{retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1}),b);K.hooks.afterResponse=K.hooks.afterResponse.slice(0,R);for(let ne of K.hooks.beforeRetry)await ne(K);let J=Q8(K);return l(()=>{J.catch(()=>{}),J.cancel()}),J})}catch(R){g._beforeError(new Yy.RequestError(R.message,R,g));return}if(!B8.isResponseOk(p)){g._beforeError(new Yy.HTTPError(p));return}r=p,o(g.options.resolveBodyOnly?p.body:p)});let f=p=>{if(n.isCanceled)return;let{options:d}=g;if(p instanceof Yy.HTTPError&&!d.throwHttpErrors){let{response:m}=p;o(g.options.resolveBodyOnly?m.body:m);return}a(p)};g.once("error",f);let h=g.options.body;g.once("retry",(p,d)=>{var m,I;if(h===((m=d.request)===null||m===void 0?void 0:m.options.body)&&TSe.default.nodeStream((I=d.request)===null||I===void 0?void 0:I.options.body)){f(d);return}c(p)}),OSe.default(g,i,USe)};c(0)});n.on=(o,a)=>(i.on(o,a),n);let s=o=>{let a=(async()=>{await n;let{options:l}=r.request;return y8.default(r,o,l.parseJson,l.encoding)})();return Object.defineProperties(a,Object.getOwnPropertyDescriptors(n)),a};return n.json=()=>{let{headers:o}=e.options;return!e.writableFinished&&o.accept===void 0&&(o.accept="application/json"),s("json")},n.buffer=()=>s("buffer"),n.text=()=>s("text"),n}EA.default=Q8;NSe(Sp(),EA)});var b8=E(Vk=>{"use strict";Object.defineProperty(Vk,"__esModule",{value:!0});var HSe=Sp();function GSe(t,...e){let r=(async()=>{if(t instanceof HSe.RequestError)try{for(let n of e)if(n)for(let s of n)t=await s(t)}catch(n){t=n}throw t})(),i=()=>r;return r.json=i,r.text=i,r.buffer=i,r.on=i,r}Vk.default=GSe});var x8=E(_k=>{"use strict";Object.defineProperty(_k,"__esModule",{value:!0});var v8=Ca();function S8(t){for(let e of Object.values(t))(v8.default.plainObject(e)||v8.default.array(e))&&S8(e);return Object.freeze(t)}_k.default=S8});var P8=E(k8=>{"use strict";Object.defineProperty(k8,"__esModule",{value:!0})});var Xk=E(ss=>{"use strict";var jSe=ss&&ss.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),YSe=ss&&ss.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&jSe(e,t,r)};Object.defineProperty(ss,"__esModule",{value:!0});ss.defaultHandler=void 0;var D8=Ca(),os=zk(),qSe=b8(),qy=vp(),JSe=x8(),WSe={RequestError:os.RequestError,CacheError:os.CacheError,ReadError:os.ReadError,HTTPError:os.HTTPError,MaxRedirectsError:os.MaxRedirectsError,TimeoutError:os.TimeoutError,ParseError:os.ParseError,CancelError:os.CancelError,UnsupportedProtocolError:os.UnsupportedProtocolError,UploadError:os.UploadError},zSe=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:Jy}=qy.default,R8=(...t)=>{let e;for(let r of t)e=Jy(void 0,r,e);return e},VSe=t=>t.isStream?new qy.default(void 0,t):os.default(t),_Se=t=>"defaults"in t&&"options"in t.defaults,XSe=["get","post","put","patch","head","delete"];ss.defaultHandler=(t,e)=>e(t);var F8=(t,e)=>{if(t)for(let r of t)r(e)},N8=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(i=>(n,s)=>{let o,a=i(n,l=>(o=s(l),o));if(a!==o&&!n.isStream&&o){let l=a,{then:c,catch:u,finally:g}=l;Object.setPrototypeOf(l,Object.getPrototypeOf(o)),Object.defineProperties(l,Object.getOwnPropertyDescriptors(o)),l.then=c,l.catch=u,l.finally=g}return a});let e=(i,n={},s)=>{var o,a;let l=0,c=u=>t.handlers[l++](u,l===t.handlers.length?VSe:c);if(D8.default.plainObject(i)){let u=P(P({},i),n);qy.setNonEnumerableProperties([i,n],u),n=u,i=void 0}try{let u;try{F8(t.options.hooks.init,n),F8((o=n.hooks)===null||o===void 0?void 0:o.init,n)}catch(f){u=f}let g=Jy(i,n,s!=null?s:t.options);if(g[qy.kIsNormalizedAlready]=!0,u)throw new os.RequestError(u.message,u,g);return c(g)}catch(u){if(n.isStream)throw u;return qSe.default(u,t.options.hooks.beforeError,(a=n.hooks)===null||a===void 0?void 0:a.beforeError)}};e.extend=(...i)=>{let n=[t.options],s=[...t._rawHandlers],o;for(let a of i)_Se(a)?(n.push(a.defaults.options),s.push(...a.defaults._rawHandlers),o=a.defaults.mutableDefaults):(n.push(a),"handlers"in a&&s.push(...a.handlers),o=a.mutableDefaults);return s=s.filter(a=>a!==ss.defaultHandler),s.length===0&&s.push(ss.defaultHandler),N8({options:R8(...n),handlers:s,mutableDefaults:Boolean(o)})};let r=async function*(i,n){let s=Jy(i,n,t.options);s.resolveBodyOnly=!1;let o=s.pagination;if(!D8.default.object(o))throw new TypeError("`options.pagination` must be implemented");let a=[],{countLimit:l}=o,c=0;for(;c{let s=[];for await(let o of r(i,n))s.push(o);return s},e.paginate.each=r,e.stream=(i,n)=>e(i,_(P({},n),{isStream:!0}));for(let i of XSe)e[i]=(n,s)=>e(n,_(P({},s),{method:i})),e.stream[i]=(n,s)=>e(n,_(P({},s),{method:i,isStream:!0}));return Object.assign(e,WSe),Object.defineProperty(e,"defaults",{value:t.mutableDefaults?t:JSe.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=R8,e};ss.default=N8;YSe(P8(),ss)});var zy=E((Ea,Wy)=>{"use strict";var ZSe=Ea&&Ea.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),L8=Ea&&Ea.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&ZSe(e,t,r)};Object.defineProperty(Ea,"__esModule",{value:!0});var $Se=require("url"),T8=Xk(),exe={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType==="json"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,"link"))return!1;let e=t.headers.link.split(","),r;for(let i of e){let n=i.split(";");if(n[1].includes("next")){r=n[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new $Se.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:Infinity,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[T8.defaultHandler],mutableDefaults:!1},Zk=T8.default(exe);Ea.default=Zk;Wy.exports=Zk;Wy.exports.default=Zk;Wy.exports.__esModule=!0;L8(Xk(),Ea);L8(zk(),Ea)});var U8=E(Xu=>{"use strict";var fst=require("net"),txe=require("tls"),$k=require("http"),M8=require("https"),rxe=require("events"),hst=require("assert"),ixe=require("util");Xu.httpOverHttp=nxe;Xu.httpsOverHttp=sxe;Xu.httpOverHttps=oxe;Xu.httpsOverHttps=axe;function nxe(t){var e=new Ia(t);return e.request=$k.request,e}function sxe(t){var e=new Ia(t);return e.request=$k.request,e.createSocket=O8,e.defaultPort=443,e}function oxe(t){var e=new Ia(t);return e.request=M8.request,e}function axe(t){var e=new Ia(t);return e.request=M8.request,e.createSocket=O8,e.defaultPort=443,e}function Ia(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||$k.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(i,n,s,o){for(var a=K8(n,s,o),l=0,c=e.requests.length;l=this.maxSockets){s.requests.push(o);return}s.createSocket(o,function(a){a.on("free",l),a.on("close",c),a.on("agentRemove",c),e.onSocket(a);function l(){s.emit("free",a,o)}function c(u){s.removeSocket(a),a.removeListener("free",l),a.removeListener("close",c),a.removeListener("agentRemove",c)}})};Ia.prototype.createSocket=function(e,r){var i=this,n={};i.sockets.push(n);var s=eP({},i.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(s.localAddress=e.localAddress),s.proxyAuth&&(s.headers=s.headers||{},s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")),IA("making CONNECT request");var o=i.request(s);o.useChunkedEncodingByDefault=!1,o.once("response",a),o.once("upgrade",l),o.once("connect",c),o.once("error",u),o.end();function a(g){g.upgrade=!0}function l(g,f,h){process.nextTick(function(){c(g,f,h)})}function c(g,f,h){if(o.removeAllListeners(),f.removeAllListeners(),g.statusCode!==200){IA("tunneling socket could not be established, statusCode=%d",g.statusCode),f.destroy();var p=new Error("tunneling socket could not be established, statusCode="+g.statusCode);p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}if(h.length>0){IA("got illegal response body from proxy"),f.destroy();var p=new Error("got illegal response body from proxy");p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}return IA("tunneling connection has established"),i.sockets[i.sockets.indexOf(n)]=f,r(f)}function u(g){o.removeAllListeners(),IA(`tunneling socket could not be established, cause=%s -`,g.message,g.stack);var f=new Error("tunneling socket could not be established, cause="+g.message);f.code="ECONNRESET",e.request.emit("error",f),i.removeSocket(n)}};Ia.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var i=this.requests.shift();i&&this.createSocket(i,function(n){i.request.onSocket(n)})}};function O8(t,e){var r=this;Ia.prototype.createSocket.call(r,t,function(i){var n=t.request.getHeader("host"),s=eP({},r.options,{socket:i,servername:n?n.replace(/:.*$/,""):t.host}),o=txe.connect(0,s);r.sockets[r.sockets.indexOf(i)]=o,e(o)})}function K8(t,e,r){return typeof t=="string"?{host:t,port:e,localAddress:r}:t}function eP(t){for(var e=1,r=arguments.length;e{H8.exports=U8()});var b4=E((xot,sP)=>{var e4=Object.assign({},require("fs")),oe=typeof oe!="undefined"?oe:{},kp={},wA;for(wA in oe)oe.hasOwnProperty(wA)&&(kp[wA]=oe[wA]);var oP=[],t4="./this.program",r4=function(t,e){throw e},i4=!1,Wl=!0,Pp="";function dxe(t){return oe.locateFile?oe.locateFile(t,Pp):Pp+t}var Xy,aP,Zy,AP;Wl&&(i4?Pp=require("path").dirname(Pp)+"/":Pp=__dirname+"/",Xy=function(e,r){var i=s4(e);return i?r?i:i.toString():(Zy||(Zy=e4),AP||(AP=require("path")),e=AP.normalize(e),Zy.readFileSync(e,r?null:"utf8"))},aP=function(e){var r=Xy(e,!0);return r.buffer||(r=new Uint8Array(r)),n4(r.buffer),r},process.argv.length>1&&(t4=process.argv[1].replace(/\\/g,"/")),oP=process.argv.slice(2),typeof sP!="undefined"&&(sP.exports=oe),r4=function(t){process.exit(t)},oe.inspect=function(){return"[Emscripten Module object]"});var $y=oe.print||console.log.bind(console),Di=oe.printErr||console.warn.bind(console);for(wA in kp)kp.hasOwnProperty(wA)&&(oe[wA]=kp[wA]);kp=null;oe.arguments&&(oP=oe.arguments);oe.thisProgram&&(t4=oe.thisProgram);oe.quit&&(r4=oe.quit);var Cxe=16;function mxe(t,e){return e||(e=Cxe),Math.ceil(t/e)*e}var Exe=0,Ixe=function(t){Exe=t},lP;oe.wasmBinary&&(lP=oe.wasmBinary);var Pst=oe.noExitRuntime||!0;typeof WebAssembly!="object"&&Gr("no native wasm support detected");function yxe(t,e,r){switch(e=e||"i8",e.charAt(e.length-1)==="*"&&(e="i32"),e){case"i1":return Zi[t>>0];case"i8":return Zi[t>>0];case"i16":return cP[t>>1];case"i32":return _e[t>>2];case"i64":return _e[t>>2];case"float":return o4[t>>2];case"double":return a4[t>>3];default:Gr("invalid type for getValue: "+e)}return null}var ew,A4=!1,wxe;function n4(t,e){t||Gr("Assertion failed: "+e)}function l4(t){var e=oe["_"+t];return n4(e,"Cannot call unknown function "+t+", make sure it is exported"),e}function vxe(t,e,r,i,n){var s={string:function(h){var p=0;if(h!=null&&h!==0){var d=(h.length<<2)+1;p=g4(d),u4(h,p,d)}return p},array:function(h){var p=g4(h.length);return Bxe(h,p),p}};function o(h){return e==="string"?c4(h):e==="boolean"?Boolean(h):h}var a=l4(t),l=[],c=0;if(i)for(var u=0;u=i);)++n;if(n-e>16&&t.subarray&&f4)return f4.decode(t.subarray(e,n));for(var s="";e>10,56320|c&1023)}}return s}function c4(t,e){return t?Zu($u,t,e):""}function tw(t,e,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,o=0;o=55296&&a<=57343){var l=t.charCodeAt(++o);a=65536+((a&1023)<<10)|l&1023}if(a<=127){if(r>=s)break;e[r++]=a}else if(a<=2047){if(r+1>=s)break;e[r++]=192|a>>6,e[r++]=128|a&63}else if(a<=65535){if(r+2>=s)break;e[r++]=224|a>>12,e[r++]=128|a>>6&63,e[r++]=128|a&63}else{if(r+3>=s)break;e[r++]=240|a>>18,e[r++]=128|a>>12&63,e[r++]=128|a>>6&63,e[r++]=128|a&63}}return e[r]=0,r-n}function u4(t,e,r){return tw(t,$u,e,r)}function rw(t){for(var e=0,r=0;r=55296&&i<=57343&&(i=65536+((i&1023)<<10)|t.charCodeAt(++r)&1023),i<=127?++e:i<=2047?e+=2:i<=65535?e+=3:e+=4}return e}function uP(t){var e=rw(t)+1,r=h4(e);return r&&tw(t,Zi,r,e),r}function Bxe(t,e){Zi.set(t,e)}function xxe(t,e){return t%e>0&&(t+=e-t%e),t}var gP,Zi,$u,cP,kxe,_e,Pxe,o4,a4;function p4(t){gP=t,oe.HEAP8=Zi=new Int8Array(t),oe.HEAP16=cP=new Int16Array(t),oe.HEAP32=_e=new Int32Array(t),oe.HEAPU8=$u=new Uint8Array(t),oe.HEAPU16=kxe=new Uint16Array(t),oe.HEAPU32=Pxe=new Uint32Array(t),oe.HEAPF32=o4=new Float32Array(t),oe.HEAPF64=a4=new Float64Array(t)}var Dst=oe.INITIAL_MEMORY||16777216,fP,d4=[],C4=[],m4=[],Dxe=!1;function Fxe(){if(oe.preRun)for(typeof oe.preRun=="function"&&(oe.preRun=[oe.preRun]);oe.preRun.length;)Rxe(oe.preRun.shift());hP(d4)}function Nxe(){Dxe=!0,!oe.noFSInit&&!y.init.initialized&&y.init(),BA.init(),hP(C4)}function Txe(){if(oe.postRun)for(typeof oe.postRun=="function"&&(oe.postRun=[oe.postRun]);oe.postRun.length;)Lxe(oe.postRun.shift());hP(m4)}function Rxe(t){d4.unshift(t)}function Mxe(t){C4.unshift(t)}function Lxe(t){m4.unshift(t)}var zl=0,pP=null,Dp=null;function Oxe(t){return t}function E4(t){zl++,oe.monitorRunDependencies&&oe.monitorRunDependencies(zl)}function dP(t){if(zl--,oe.monitorRunDependencies&&oe.monitorRunDependencies(zl),zl==0&&(pP!==null&&(clearInterval(pP),pP=null),Dp)){var e=Dp;Dp=null,e()}}oe.preloadedImages={};oe.preloadedAudios={};function Gr(t){oe.onAbort&&oe.onAbort(t),t+="",Di(t),A4=!0,wxe=1,t="abort("+t+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(t);throw e}var I4="data:application/octet-stream;base64,";function y4(t){return t.startsWith(I4)}var Rp="data:application/octet-stream;base64,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AkEEaiEBIAIoAgAiA0F/cyADQYGChAhrcUGAgYKEeHFFDQALIANB/wFxRQRAIAIgAGsPCwNAIAItAAEhAyACQQFqIgEhAiADDQALCyABIABrC2EBAX8jAEEQayICIAA2AgggAiABNwMAAkAgAikDACACKAIIKQMIVgRAIAIoAghBADoAACACQX82AgwMAQsgAigCCEEBOgAAIAIoAgggAikDADcDECACQQA2AgwLIAIoAgwL7wEBAX8jAEEgayICJAAgAiAANgIYIAIgATcDECACIAIoAhhCCBAeNgIMAkAgAigCDEUEQCACQX82AhwMAQsgAigCDCACKQMQQv8BgzwAACACKAIMIAIpAxBCCIhC/wGDPAABIAIoAgwgAikDEEIQiEL/AYM8AAIgAigCDCACKQMQQhiIQv8BgzwAAyACKAIMIAIpAxBCIIhC/wGDPAAEIAIoAgwgAikDEEIoiEL/AYM8AAUgAigCDCACKQMQQjCIQv8BgzwABiACKAIMIAIpAxBCOIhC/wGDPAAHIAJBADYCHAsgAigCHBogAkEgaiQAC4cDAQF/IwBBMGsiAyQAIAMgADYCJCADIAE2AiAgAyACNwMYAkAgAygCJC0AKEEBcQRAIANCfzcDKAwBCwJAAkAgAygCJCgCIEUNACADKQMYQv///////////wBWDQAgAykDGFANASADKAIgDQELIAMoAiRBDGpBEkEAEBQgA0J/NwMoDAELIAMoAiQtADVBAXEEQCADQn83AygMAQsCfyMAQRBrIgAgAygCJDYCDCAAKAIMLQA0QQFxCwRAIANCADcDKAwBCyADKQMYUARAIANCADcDKAwBCyADQgA3AxADQCADKQMQIAMpAxhUBEAgAyADKAIkIAMoAiAgAykDEKdqIAMpAxggAykDEH1BARAhIgI3AwggAkIAUwRAIAMoAiRBAToANSADKQMQUARAIANCfzcDKAwECyADIAMpAxA3AygMAwsgAykDCFAEQCADKAIkQQE6ADQFIAMgAykDCCADKQMQfDcDEAwCCwsLIAMgAykDEDcDKAsgAykDKCECIANBMGokACACCzYBAX8jAEEQayIBIAA2AgwCfiABKAIMLQAAQQFxBEAgASgCDCkDCCABKAIMKQMQfQwBC0IACwuyAQIBfwF+IwBBEGsiASQAIAEgADYCBCABIAEoAgRC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AkEBNgIQIAJBADYCCANAAkAgAigCCCACKAIYLwEETw0AAkAgAigCDCACKAIIai0AAEEfSwRAIAIoAgwgAigCCGotAABBgAFJDQELIAIoAgwgAigCCGotAABBDUYNACACKAIMIAIoAghqLQAAQQpGDQAgAigCDCACKAIIai0AAEEJRgRADAELIAJBAzYCEAJAIAIoAgwgAigCCGotAABB4AFxQcABRgRAIAJBATYCAAwBCwJAIAIoAgwgAigCCGotAABB8AFxQeABRgRAIAJBAjYCAAwBCwJAIAIoAgwgAigCCGotAABB+AFxQfABRgRAIAJBAzYCAAwBCyACQQQ2AhAMBAsLCyACKAIYLwEEIAIoAgggAigCAGpNBEAgAkEENgIQDAILIAJBATYCBANAIAIoAgQgAigCAE0EQCACKAIMIAIoAgggAigCBGpqLQAAQcABcUGAAUcEQCACQQQ2AhAMBgUgAiACKAIEQQFqNgIEDAILAAsLIAIgAigCACACKAIIajYCCAsgAiACKAIIQQFqNgIIDAELCwsgAigCGCACKAIQNgIIIAIoAhQEQAJAIAIoAhRBAkcNACACKAIQQQNHDQAgAkECNgIQIAIoAhhBAjYCCAsCQCACKAIUIAIoAhBGDQAgAigCEEEBRg0AIAJBBTYCHAwCCwsgAiACKAIQNgIcCyACKAIcC2oBAX8jAEEQayIBIAA2AgwgASgCDEIANwMAIAEoAgxBADYCCCABKAIMQn83AxAgASgCDEEANgIsIAEoAgxBfzYCKCABKAIMQgA3AxggASgCDEIANwMgIAEoAgxBADsBMCABKAIMQQA7ATILUgECf0GQlwEoAgAiASAAQQNqQXxxIgJqIQACQCACQQAgACABTRsNACAAPwBBEHRLBEAgABATRQ0BC0GQlwEgADYCACABDwtBtJsBQTA2AgBBfwuNBQEDfyMAQRBrIgEkACABIAA2AgwgASgCDARAIAEoAgwoAgAEQCABKAIMKAIAEDEaIAEoAgwoAgAQGwsgASgCDCgCHBAVIAEoAgwoAiAQJSABKAIMKAIkECUgASgCDCgCUCECIwBBEGsiACQAIAAgAjYCDCAAKAIMBEAgACgCDCgCEARAIABBADYCCANAIAAoAgggACgCDCgCAEkEQCAAKAIMKAIQIAAoAghBAnRqKAIABEAgACgCDCgC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A3EQHwsgAygCpAEoAhQgA0GeAWogA0GcAWoQgQEgAygCTCADLwGeARAfIAMoAkwgAy8BnAEQHwJAAkAgAy0AhQFBAXFFDQAgAygCpAEpAyhCFFoNACADKAJMQQAQIAwBCyADKAJMIAMoAqQBKAIYECALAkACQCADKAKgAUGAAnFBgAJHDQAgAygCpAEpAyBC/////w9UBEAgAygCpAEpAyhC/////w9UDQELIAMoAkxBfxAgIAMoAkxBfxAgDAELAkAgAygCpAEpAyBC/////w9UBEAgAygCTCADKAKkASkDIKcQIAwBCyADKAJMQX8QIAsCQCADKAKkASkDKEL/////D1QEQCADKAJMIAMoAqQBKQMopxAgDAELIAMoAkxBfxAgCwsgAygCTCADKAKkASgCMBBTQf//A3EQHyADIAMoAqQBKAI0IAMoAqABEIYBQf//A3EgAygCkAFBgAYQhgFB//8DcWo2AogBIAMoAkwgAygCiAFB//8DcRAfIAMoAqABQYACcUUEQCADKAJMIAMoAqQBKAI4EFNB//8DcRAfIAMoAkwgAygCpAEoAjxB//8DcRAfIAMoAkwgAygCpAEvAUAQHyADKAJMIAMoAqQBKAJEECACQCADKAKkASkDSEL/////D1QEQCADKAJMIAMoAqQBKQNIpxAgDAELIAMoAkxBfxAgCwsCfyMAQRBrIgAgAygCTDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAJMEBYgAygCkAEQIyADQX82AqwBDAELIAMoAqgBIANB0ABqAn4jAEEQayIAIAMoAkw2AgwCfiAAKAIMLQAAQQFxBEAgACgCDCkDEAwBC0IACwsQNUEASARAIAMoAkwQFiADKAKQARAjIANBfzYCrAEMAQsgAygCTBAWIAMoAqQBKAIwBEAgAygCqAEgAygCpAEoAjAQigFBAEgEQCADKAKQARAjIANBfzYCrAEMAgsLIAMoApABBEAgAygCqAEgAygCkAFBgAYQhQFBAEgEQCADKAKQARAjIANBfzYCrAEMAgsLIAMoApABECMgAygCpAEoAjQEQCADKAKoASADKAKkASgCNCADKAKgARCFAUEASARAIANBfzYCrAEMAgsLIAMoAqABQYACcUUEQCADKAKkASgCOARAIAMoAqgBIAMoAqQBKAI4EIoB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HCAAIAAoAhRBAWo2AhQMAQsLIAAoAggQR0EBcUUEQCAAKAIgQRRBABAUIAAoAggQFiAAQX82AiwMAQsgACgCCBAWIAAgACgCHDYCLAsgACgCLCECIABBMGokACADIAIiADYCBCAAQQBIBEAgA0IANwMoDAELIAMpAwggAygCBK18Qv///////////wBWBEAgAygCFEEEQRYQFCADQgA3AygMAQsgAyADKQMIIAMoAgStfDcDKAsgAykDKCEBIANBMGokACABC20BAX8jAEEgayIEJAAgBCAANgIYIAQgATYCFCAEIAI2AhAgBCADNgIMAkAgBCgCGEUEQCAEQQA2AhwMAQsgBCAEKAIUIAQoAhAgBCgCDCAEKAIYQQhqEJIBNgIcCyAEKAIcIQAgBEEgaiQAIAALVQEBfyMAQRBrIgEkACABIAA2AgwCQAJAIAEoAgwoAiRBAUYNACABKAIMKAIkQQJGDQAMAQsgASgCDEEAQgBBChAhGiABKAIMQQA2AiQLIAFBEGokAAumAQEBfyMAQRBrIgIkACACIAA2AgggAiABNgIEAkAgAigCCC0AKEEBcQRAIAJBfzYCDAwBCyACKAIIKAIABEAgAigCCCgCACACKAIEEGhBAEgEQCACKAIIQQxqIAIoAggoAgAQFyACQX82AgwMAgsLIAIoAgggAkEEakIEQRMQIUIAUwRAIAJBfzYCDAwBCyACQQA2AgwLIAIoAgwhACACQRBqJAAgAAuNCAIBfwF+IwBBkAFrIgMkACADIAA2AoQBIAMgATYCgAEgAyACNgJ8IAMQTwJAIAMoAoABKQMIQgBSBEAgAyADKAKAASgCACgCACkDSDcDYCADIAMoAoABKAIAKAIAKQNINwNoDAELIANCADcDYCADQgA3A2gLIANCADcDcAJAA0AgAykDcCADKAKAASkDCFQEQCADKAKAASgCACADKQNwp0EEdGooAgApA0ggAykDaFQEQCADIAMoAoABKAIAIAMpA3CnQQR0aigCACkDSDcDaAsgAykDaCADKAKAASkDIFYEQCADKAJ8QRNBABAUIANCfzcDiAEMAwsgAyADKAKAASgCACADKQNwp0EEdGooAgApA0ggAygCgAEoAgAgAykDcKdBBHRqKAIAKQMgfCADKAKAASgCACADKQNwp0EEdGooAgAoAjAQU0H//wNxrXxC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DEECdGooAgBBAnRqLwEASA0AAkAgAygCGCADKAIQQQJ0ai8BACADKAIYIAMoAhxB3BZqIAMoAgxBAnRqKAIAQQJ0ai8BAEcNACADKAIQIAMoAhxB2Chqai0AACADKAIcQdwWaiADKAIMQQJ0aigCACADKAIcQdgoamotAABKDQAMAQsgAygCHEHcFmogAygCFEECdGogAygCHEHcFmogAygCDEECdGooAgA2AgAgAyADKAIMNgIUIAMgAygCDEEBdDYCDAwBCwsgAygCHEHcFmogAygCFEECdGogAygCEDYCAAvXEwEDfyMAQTBrIgIkACACIAA2AiwgAiABNgIoIAIgAigCKCgCADYCJCACIAIoAigoAggoAgA2AiAgAiACKAIoKAIIKAIMNgIcIAJBfzYCECACKAIsQQA2AtAoIAIoAixBvQQ2AtQoIAJBADYCGANAIAIoAhggAigCHEgEQAJAIAIoAiQgAigCGEECdGovAQAEQCACIAIoAhgiATYCECACKAIsQdwWaiEDIAIoAiwiBCgC0ChBAWohACAEIAA2AtAoIABBAnQgA2ogATYCACACKAIYIAIoAixB2ChqakEAOgAADAELIAIoAiQgAigCGEECdGpBADsBAgsgAiACKAIYQQFqNgIYDAELCwNAIAIoAiwoAtAoQQJIBEACQCACKAIQQQJIBEAgAiACKAIQQQFqIgA2AhAMAQtBACEACyACKAIsQdwWaiEDIAIoAiwiBCgC0ChBAWohASAEIAE2AtAoIAFBAnQgA2ogADYCACACIAA2AgwgAigCJCACKAIMQQJ0akEBOwEAIAIoAgwgAigCLEHYKGpqQQA6AAAgAigCLCIAIAAoAqgtQQFrNgKoLSACKAIgBEAgAigCLCIAIAAoAqwtIAIoAiAgAigCDEECdGovAQJrNgKsLQsMAQsLIAIoAiggAigCEDYCBCACIAIoAiwoAtAoQQJtNgIYA0AgAigCGEEBTgRAIAIoAiwgAigCJCACKAIYEHogAiACKAIYQQFrNgIYDAELCyACIAIoAhw2AgwDQCACIAIoAiwoAuAWNgIYIAIoAixB3BZqIQEgAigCLCIDKALQKCEAIAMgAEEBazYC0CggAigCLCAAQQJ0IAFqKAIANgLgFiACKAIsIAIoAiRBARB6IAIgAigCLCgC4BY2AhQgAigCGCEBIAIoAixB3BZqIQMgAigCLCIEKALUKEEBayEAIAQgADYC1CggAEECdCADaiABNgIAIAIoAhQhASACKAIsQdwWaiEDIAIoAiwiBCgC1ChBAWshACAEIAA2AtQoIABBAnQgA2ogATYCACACKAIkIAIoAgxBAnRqIAIoAiQgAigCGEECdGovAQAgAigCJCACKAIUQQJ0ai8BAGo7AQAgAigCDCACKAIsQdgoamoCfyACKAIYIAIoAixB2Chqai0AACACKAIUIAIoAixB2Chqai0AAE4EQCACKAIYIAIoAixB2Chqai0AAAwBCyACKAIUIAIoAixB2Chqai0AAAtBAWo6AAAgAigCJCACKAIUQQJ0aiACKAIMIgA7AQIgAigCJCACKAIYQQJ0aiAAOwECIAIgAigCDCIAQQFqNgIMIAIoAiwgADYC4BYgAigCLCACKAIkQQEQeiACKAIsKALQKEECTg0ACyACKAIsKALgFiEBIAIoAixB3BZqIQMgAigCLCIEKALUKEEBayEAIAQgADYC1CggAEECdCADaiABNgIAIAIoAighASMAQUBqIgAgAigCLDYCPCAAIAE2AjggACAAKAI4KAIANgI0IAAgACgCOCgCBDYCMCAAIAAoAjgoAggoAgA2AiwgACAAKAI4KAIIKAIENgIoIAAgACgCOCgCCCgCCDYCJCAAIAAoAjgoAggoAhA2AiAgAEEANgIEIABBADYCEANAIAAoAhBBD0wEQCAAKAI8QbwWaiAAKAIQQQF0akEAOwEAIAAgACgCEEEBajYCEAwBCwsgACgCNCAAKAI8QdwWaiAAKAI8KALUKEECdGooAgBBAnRqQQA7AQIgACAAKAI8KALUKEEBajYCHANAIAAoAhxBvQRIBEAgACAAKAI8QdwWaiAAKAIcQQJ0aigCADYCGCAAIAAoAjQgACgCNCAAKAIYQQJ0ai8BAkECdGovAQJBAWo2AhAgACgCECAAKAIgSgRAIAAgACgCIDYCECAAIAAoAgRBAWo2AgQLIAAoAjQgACgCGEECdGogACgCEDsBAiAAKAIYIAAoAjBMBEAgACgCPCAAKAIQQQF0akG8FmoiASABLwEAQQFqOwEAIABBADYCDCAAKAIYIAAoAiROBEAgACAAKAIoIAAoAhggACgCJGtBAnRqKAIANgIMCyAAIAAoAjQgACgCGEECdGovAQA7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EANAIAMpAxAgAykDCFpFBEAgAygCKCgCACADKQMQp0EEdGoQkAEgAyADKQMQQgF8NwMQDAELCyADKAIoIAMpAwgiATcDECADKAIoIAE3AwggA0EBOgAvCyADLQAvQQFxIQAgA0EwaiQAIAALzAEBAX8jAEEgayICJAAgAiAANwMQIAIgATYCDCACQTAQGCIBNgIIAkAgAUUEQCACKAIMQQ5BABAUIAJBADYCHAwBCyACKAIIQQA2AgAgAigCCEIANwMQIAIoAghCADcDCCACKAIIQgA3AyAgAigCCEIANwMYIAIoAghBADYCKCACKAIIQQA6ACwgAigCCCACKQMQIAIoAgwQgwFBAXFFBEAgAigCCBAkIAJBADYCHAwBCyACIAIoAgg2AhwLIAIoAhwhASACQSBqJAAgAQvWAgEBfyMAQSBrIgMkACADIAA2AhggAyABNgIUIAMgAjYCECADIANBDGpCBBApNgIIAkAgAygCCEUEQCADQX82AhwMAQsDQCADKAIUBEAgAygCFCgCBCADKAIQcUGABnEEQCADKAIIQgAQLBogAygCCCADKAIULwEIEB8gAygCCCADKAIULwEKEB8CfyMAQRBrIgAgAygCCDYCDCAAKAIMLQAAQQFxRQsEQCADKAIYQQhqQRRBABAUIAMoAggQFiADQX82AhwMBAsgAygCGCADQQxqQgQQNUEASARAIAMoAggQFiADQX82AhwMBAsgAygCFC8BCgRAIAMoAhggAygCFCgCDCADKAIULwEKrRA1QQBIBEAgAygCCBAWIANBfzYCHAwFCwsLIAMgAygCFCgCADYCFAwBCwsgAygCCBAWIANBADYCHAsgAygCHCEAIANBIGokACAAC2gBAX8jAEEQayICIAA2AgwgAiABNgIIIAJBADsBBgNAIAIoAgwEQCACKAIMKAIEIAIoAghxQYAGcQRAIAIgAigCDC8BCiACLwEGQQRqajsBBgsgAiACKAIMKAIANgIMDAELCyACLwEGC/ABAQF/IwBBEGsiASQAIAEgADYCDCABIAEoAgw2AgggAUEANgIEA0AgASgCDARAAkACQCABKAIMLwEIQfXGAUYNACABKAIMLwEIQfXgAUYNACABKAIMLwEIQYGyAkYNACABKAIMLwEIQQFHDQELIAEgASgCDCgCADYCACABKAIIIAEoAgxGBEAg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IAEpA4ABIAEpAzB8IAEpA5gBIAEpAzh8VgRAIAEoApABQRVBABAUIAFBADYCrAEMAQsCQCABKAKUAUEEcUUNACABKQOAASABKQMwfCABKQOYASABKQM4fFENACABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEpAyggASkDMEIugFYEQCABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEgASkDKCABKAKQARCEASIFNgKMASAFRQRAIAFBADYCrAEMAQsgASgCjAFBAToALCABKAKMASABKQMwNwMYIAEoAowBIAEpA4ABNwMgIAEgASgCjAE2AqwBCyABKAKsASEFIAFBsAFqJAAgACAFNgJQDAELIAAoAmQgACkDMBAsGiAAKAJkIQUgACkDWCEJIAAoAmgoAhQhBiAAKAJUIQcjAEHQAGsiASQAIAEgBTYCSCABIAk3A0AgASAGNgI8IAEgBzYCOAJAIAEoAkgQL0IWVARAIAEoAjhBFUEAEBQgAUEANgJMDAELIwBBEGsiBSABKAJINgIMIAECfiAFKAIMLQAAQQFxBEAgBSgCDCkDEAwBC0IACzcDCCABKAJIQgQQHhogASgCSBAqBEAgASgCOEEBQQAQFCABQQA2AkwMAQsgASABKAJIEB1B//8Dca03AyggASABKAJIEB1B//8Dca03AyAgASkDICABKQMoUgRAIAEoAjhBE0EAEBQgAUEANgJMDAELIAEgASgCSBAqrTcDGCABIAEoAkgQKq03AxAgASkDECABKQMQIAEpAxh8VgRAIAEoAjhBBEEWEBQgAUEANgJMDAELIAEpAxAgASkDGHwgASkDQCABKQMIfFYEQCABKAI4QRVBABAUIAFBADYCTAwBCwJAIAEoAjxBBHFFDQAgASkDECABKQMYfCABKQNAIAEpAwh8UQ0AIAEoAjhBFUEAEBQgAUEANgJMDAELIAEgASkDICABKAI4EIQBIgU2AjQgBUUEQCABQQA2AkwMAQsgASgCNEEAOgAsIAEoAjQgASkDGDcDGCABKAI0IAEpAxA3AyAgASABKAI0NgJMCyABKAJMIQUgAUHQAGokACAAIAU2AlALIAAoAlBFBEAgAEEANgJsDAELIAAoAmQgACkDMEIUfBAsGiAAIAAoAmQQHTsBTiAAKAJQKQMgIAAoAlApAxh8IAApA1ggACkDMHxWBEAg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IAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACKAIsIAIoAgxJC0EBcQ0ACyACQYICIAIoAgwgAigCLGtrNgIkIAIgAigCDEGCAms2AiwgAigCJCACKAIgSgRAIAIoAjggAigCNDYCcCACIAIoAiQ2AiAgAigCJCACKAIcTg0CIAIgAigCLCACKAIgQQFrai0AADoACyACIAIoAiwgAigCIGotAAA6AAoLCyACIAIoAhQgAigCNCACKAIQcUEBdGovAQAiATYCNEEAIQAgASACKAIYSwR/IAIgAigCMEEBayIANgIwIABBAEcFQQALQQFxDQELCwJAIAIoAiAgAigCOCgCdE0EQCACIAIoAiA2AjwMAQsgAiACKAI4KAJ0NgI8CyACKAI8C5IQAQF/IwBBMGsiAiQAIAIgADYCKCACIAE2AiQgAgJ/IAIoAigoAiwgAigCKCgCDEEFa0kEQCACKAIoKAIsDAELIAIoAigoAgxBBWsLNgIgIAJBADYCECACIAIoAigoAgAoAgQ2AgwDQAJAIAJB//8DNgIcIAIgAigCKCgCvC1BKmpBA3U2AhQgAigCKCgCACgCECACKAIUSQ0AIAIgAigCKCgCACgCECACKAIUazYCFCACIAIoAigoAmwgAigCKCgCXGs2AhggAigCHCACKAIYIAIoAigoAgAoAgRqSwRAIAIgAigCGCACKAIoKAIAKAIEajYCHAsgAigCHCACKAIUSwRAIAIgAigCFDYCHAsCQCACKAIcIAIoAiBPDQACQCACKAIcRQRAIAIoAiRBBEcNAQsgAigCJEUNACACKAIcIAIoAhggAigCKCgCACgCBGpGDQELDAELQQAhACACIAIoAiRBBEYEfyACKAIcIAIoAhggAigCKCgCACgCBGpGBUEAC0EBcTYCECACKAIoQQBBACACKAIQEFwgAigCKCgCCCACKAIoKAIUQQRraiACKAIcOgAAIAIoAigoAgggAigCKCgCFEEDa2ogAigCHEEIdjoAACACKAIoKAIIIAIoAigoAhRBAmtqIAIoAhxBf3M6AAAgAigCKCgCCCACKAIoKAIUQQFraiACKAIcQX9zQQh2OgAAIAIoAigoAgAQHCACKAIYBEAgAigCGCACKAIcSwRAIAIgAigCHDYCGAsgAigCKCgCACgCDCACKAIoKAI4IAIoAigoAlxqIAIoAhgQGRogAigCKCgCACIAIAIoAhggACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCGGs2AhAgAigCKCgCACIAIAIoAhggACgCFGo2AhQgAigCKCIAIAIoAhggACgCXGo2AlwgAiACKAIcIAIoAhhrNgIcCyACKAIcBEAgAigCKCgCACACKAIoKAIAKAIMIAIoAhwQeBogAigCKCgCACIAIAIoAhwgACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCHGs2AhAgAigCKCgCACIAIAIoAhwgACgCFGo2AhQLIAIoAhBFDQELCyACIAIoAgwgAigCKCgCACgCBGs2AgwgAigCDARAAkAgAigCDCACKAIoKAIsTwRAIAIoAihBAjYCsC0gAigCKCgCOCACKAIoKAIAKAIAIAIoAigoAixrIAIoAigoAiwQGRogAigCKCACKAIoKAIsNgJsDAELIAIoAgwgAigCKCgCPCACKAIoKAJsa08EQCACKAIoIgAgACgCbCACKAIoKAIsazYCbCACKAIoKAI4IAIoAigoAjggAigCKCgCLGogAigCKCgCbBAZGiACKAIoKAKwLUECSQRAIAIoAigiACAAKAKwLUEBajYCsC0LCyACKAIoKAI4IAIoAigoAmxqIAIoAigoAgAoAgAgAigCDGsgAigCDBAZGiACKAIoIgAgAigCDCAAKAJsajYCbAsgAigCKCACKAIoKAJsNgJcIAIoAigiAQJ/IAIoAgwgAigCKCgCLCACKAIoKAK0LWtLBEAgAigCKCgCLCACKAIoKAK0LWsMAQsgAigCDAsgASgCtC1qNgK0LQsgAigCKCgCwC0gAigCKCgCbEkEQCACKAIoIAIoAigoAmw2AsAtCwJAIAIoAhAEQCACQQM2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mwFCADcDAEGYmwFCADcDAEGQmwFCADcDAEGImwFCADcDAEGAmwFCADcDAEH4mgFCADcDAEHwmgFCADcDAEHwmgEL1QQBBX8jAEGwAWsiASQAIAEgADYCqAEgASgCqAEQNwJAAkAgASgCqAEoAgBBAE4EQCABKAKoASgCAEGAFCgCAEgNAQsgASABKAKoASgCADYCECABQSBqQY8SIAFBEGoQcCABQQA2AqQBIAEgAUEgajYCoAEMAQsgASABKAKoASgCAEECdEGAE2ooAgA2AqQBAkACQAJAAkAgASgCqAEoAgBBAnRBkBRqKAIAQQFrDgIAAQILIAEoAqgBKAIEIQJBkJkBKAIAIQRBACEAAkACQANAIAIgAEGgiAFqLQAARwRAQdcAIQMgAEEBaiIAQdcARw0BDAILCyAAIgMNAEGAiQEhAgwBC0GAiQEhAANAIAAtAAAhBSAAQQFqIgIhACAFDQAgAiEAIANBAWsiAw0ACwsgBCgCFBogASACNgKgAQwCCyMAQRBrIgAgASgCqAEoAgQ2AgwgAUEAIAAoAgxrQQJ0QajZAGooAgA2AqABDAELIAFBADYCoAELCwJAIAEoAqABRQRAIAEgASgCpAE2AqwBDAELIAEgASgCoAEQKwJ/IAEoAqQBBEAgASgCpAEQK0ECagwBC0EAC2pBAWoQGCIANgIcIABFBEAgAUG4EygCADYCrAEMAQsgASgCHCEAAn8gASgCpAEEQCABKAKkAQwBC0H6EgshA0HfEkH6EiABKAKkARshAiABIAEoAqABNgIIIAEgAjYCBCABIAM2AgAgAEG+CiABEHAgASgCqAEgASgCHDYCCCABIAEoAhw2AqwBCyABKAKsASEAIAFBsAFqJAAgAAszAQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQGRogACAAKAIUIAFqNgIUIAILjwUCBn4BfyABIAEoAgBBD2pBcHEiAUEQajYCACAAAnwgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAiFQgBSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBkIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIAQZH3AEkNACADIQIgBkL///////8/g0KAgICAgIDAAIQiBSEHAkAgAEGB9wBrIgFBwABxBEAgAiABQUBqrYYhB0IAIQIMAQsgAUUNACAHIAGtIgSGIAJBwAAgAWutiIQhByACIASGIQILIAggAjcDECAIIAc3AxgCQEGB+AAgAGsiAEHAAHEEQCAFIABBQGqtiCEDQgAhBQwBCyAARQ0AIAVBwAAgAGuthiADIACtIgKIhCEDIAUgAoghBQsgCCADNwMAIAggBTcDCCAIKQMIQgSGIAgpAwAiA0I8iIQhAiAIKQMQIAgpAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACIVCAFINACACQgGDIAJ8IQILIAhBIGokACACIAZCgICAgICAgICAf4OEvws5AwALrRcDEn8CfgF8IwBBsARrIgkkACAJQQA2AiwCQCABvSIYQn9XBEBBASESQa4IIRMgAZoiAb0hGAwBCyAEQYAQcQRAQQEhEkGxCCETDAELQbQIQa8IIARBAXEiEhshEyASRSEXCwJAIBhCgICAgICAgPj/AINCgICAgICAgPj/AFEEQCAAQSAgAiASQQNqIg0gBEH//3txECYgACATIBIQIiAAQeQLQbUSIAVBIHEiAxtBjw1BuRIgAxsgASABYhtBAxAiDAELIAlBEGohEAJAAn8CQCABIAlBLGoQqQEiASABoCIBRAAAAAAAAAAAYgRAIAkgCSgCLCIGQQFrNgIsIAVBIHIiFEHhAEcNAQwDCyAFQSByIhRB4QBGDQIgCSgCLCELQQYgAyADQQBIGwwBCyAJIAZBHWsiCzYCLCABRAAAAAAAALBBoiEBQQYgAyADQQBIGwshCiAJQTBqIAlB0AJqIAtBAEgbIg4hBwNAIAcCfyABRAAAAAAAAPBBYyABRAAAAAAAAAAAZnEEQCABqwwBC0EACyIDNgIAIAdBBGohByABIAO4oUQA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HCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCGCABKAIUSQtBAXENAAsgASgCKEGCAiABKAIUIAEoAhhrazYCYCABKAIoKAJgIAEoAigoAnRLBEAgASgCKCABKAIoKAJ0NgJgCwsLAkAgASgCKCgCYEEDTwRAIAEgASgCKCgCYEEDazoAEyABQQE7ARAgASgCKCICKAKkLSACKAKgLUEBdGogAS8BEDsBACABLQATIQMgASgCKCICKAKYLSEEIAIgAigCoC0iAkEBajYCoC0gAiAEaiADOgAAIAEgAS8BEEEBazsBECABKAIoIAEtABNB0N0Aai0AAEECdGpBmAlqIgIgAi8BAEEBajsBACABKAIoQYgTagJ/IAEvARBBgAJJBEAgAS8BEC0A0FkMAQsgAS8BEEEHdkGAAmotANBZC0ECdGoiAiACLwEAQQFqOwEAIAEgASgCKCgCoC0gASgCKCgCnC1BAWtGNgIgIAEoAigiAiACKAJ0IAEoAigoAmBrNgJ0IAEoAigiAiABKAIoKAJgIAIoAmxqNgJsIAEoAihBADYCYAwBCyABIAEoAigiAigCOCACKAJsai0AADoADyABKAIoIgIoAqQtIAIoAqAtQQF0akEAOwEAIAEtAA8hAyABKAIoIgIoApgtIQQgAiACKAKgLSICQQFqNgKgLSACIARqIAM6AAAgASgCKCABLQAPQQJ0aiICIAIvAZQBQQFqOwGUASABIAEoAigoAqAtIAEoAigoApwtQQFrRjYCICABKAIoIgIgAigCdEEBazYCdCABKAIoIgIgAigCbEEBajYCbAsgASgCIARAIAEoAigCfyABKAIoKAJcQQBOBEAgASgCKCgCOCABKAIoKAJcagwBC0EACyABKAIoKAJsIAEoAigoAlxrQQAQKCABKAIoIAEoAigoAmw2AlwgASgCKCgCABAcIAEoAigo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QCABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiQgASgCLCABKAIccUECdGooAQA2ARACQAJAA0AgASABLQARNgIMIAEgASgCLCABKAIMdjYCLCABIAEoAiggASgCDGs2AiggASABLQAQNgIMIAEoAgxFBEAgAS8BEiECIAEgASgCSCIDQQFqNgJIIAMgAjoAAAwCCyABKAIMQRBxBEAgASABLwESNgIIIAEgASgCDEEPcTYCDCABKAIMBEAgASgCKCABKAIMSQRAIAEgASgCUCICQQFqNgJQIAEgASgCLCACLQAAIAEoAih0ajYCLCABIAEoAihBCGo2AigLIAEgASgCCCABKAIsQQEgASgCDHRBAWtxajYCCCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoCyABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiAgASgCLCABKAIYcUECdGooAQA2ARACQANAIAEgAS0AETYCDCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgAS0AEDYCDCABKAIMQRBxBEAgASABLwESNgIEIAEgASgCDEEPcTYCDCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKAsLIAEgASgCBCABKAIsQQEgASgCDHRBAWtxajYCBCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgASgCSCABKAJEazYCDAJAIAEoAgQgASgCDEsEQCABIAEoAgQgASgCDGs2AgwgASgCDCABKAI4SwRAIAEoAlQoAsQ3BEAgASgCXEHdDDYCGCABKAJUQdH+ADYCBAwKCwsgASABKAIwNgIAAkAgASgCNEUEQCABIAEoAgAgASgCPCABKAIMa2o2AgAgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAkggASgCBGs2AgALDAELAkAgASgCNCABKAIMSQRAIAEgASgCACABKAI8IAEoAjRqIAEoAgxrajYCACABIAEoAgwgASgCNGs2AgwgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAjA2AgAgASgCNCABKAIISQRAIAEgASgCNDYCDCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsMAQsgASABKAIAIAEoAjQgASgCDGtqNgIAIAEoAgwgASgCCEkEQCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsLA0AgASgCCEECSwRAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCCEEDazYCCAwBCwsMAQsgASABKAJIIAEoAgRrNgIAA0AgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgi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ZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AbmFuAC9kZXYvdXJhbmRvbQBpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2sAaW5jb3JyZWN0IGhlYWRlciBjaGVjawBpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrAGluY29ycmVjdCBkYXRhIGNoZWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAGhlYWRlciBjcmMgbWlzbWF0Y2gAaW5mAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRlZABPcGVyYXRpb24gbm90IHN1cHBvcnRlZABFbmNyeXB0aW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAENvbXByZXNzaW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAEVudHJ5IGhhcyBiZWVuIGRlbGV0ZWQAQ29udGFpbmluZyB6aXAgYXJjaGl2ZSB3YXMgY2xvc2VkAENsb3NpbmcgemlwIGFyY2hpdmUgZmFpbGVkAFJlbmFtaW5nIHRlbXBvcmFyeSBmaWxlIGZhaWxlZABFbnRyeSBoYXMgYmVlbiBjaGFuZ2VkAE5vIHBhc3N3b3JkIHByb3ZpZGVkAFdyb25nIHBhc3N3b3JkIHByb3ZpZGVkAFVua25vd24gZXJyb3IgJWQAcmIAcitiAHJ3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CADcAAgAPAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgAEgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkAcwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkAKwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkAWwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkABwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkAZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBXAAkAVwEJANcACQDXAQkANwAJADcBCQC3AAkAtwEJAHcACQB3AQkA9wAJAPcBCQAPAAkADwEJAI8ACQCPAQkATwAJAE8BCQDPAAkAzwEJAC8ACQAvAQkArwAJAK8BCQBvAAkAbwEJAO8ACQDvAQkAHwAJAB8BCQCfAAkAnwEJAF8ACQBfAQkA3wAJAN8BCQA/AAkAPwEJAL8ACQC/AQkAfwAJAH8BCQD/AAkA/wEJAAAABwBAAAcAIAAHAGAABwAQAAcAUAAHADAABwBwAAcACAAHAEgABwAoAAcAaAAHABgABwBYAAcAOAAHAHgABwAEAAcARAAHACQABwBkAAcAFAAHAFQABwA0AAcAdAAHAAMACACDAAgAQwAIAMMACAAjAAgAowAIAGMACADjAAgAAAAFABAABQAIAAUAGAAFAAQABQAUAAUADAAFABwABQACAAUAEgAFAAoABQAaAAUABgAFABYABQAOAAUAHgAFAAEABQARAAUACQAFABkABQAFAAUAFQAFAA0ABQAdAAUAAwAFABMABQALAAUAGwAFAAcABQAXAAUAQbDqAAtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQaDrAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQdDsAAsjAgAAAAMAAAAHAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AQYTtAAtpAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAEGE7gALegEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAMS4yLjExAEGI7wALbQcAAAAEAAQACAAEAAgAAAAEAAUAEAAIAAgAAAAEAAYAIAAgAAgAAAAEAAQAEAAQAAkAAAAIABAAIAAgAAkAAAAIABAAgACAAAkAAAAIACAAgAAAAQkAAAAgAIAAAgEABAkAAAAgAAIBAgEAEAkAQYDwAAulAgMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAATQDKAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEGw8gALwRFgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnAABAHCgAACGAAAAggAAAJoAAACAAAAAiAAAAIQAAACeAAEAcGAAAIWAAACBgAAAmQABMHOwAACHgAAAg4AAAJ0AARBxEAAAhoAAAIKAAACbAAAAgIAAAIiAAACEgAAAnwABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACcgAEQcNAAAIZAAACCQAAAmoAAAIBAAACIQAAAhEAAAJ6AAQBwgAAAhcAAAIHAAACZgAFAdTAAAIfAAACDwAAAnYABIHFwAACGwAAAgsAAAJuAAACAwAAAiMAAAITAAACfgAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxAARBwsAAAhiAAAIIgAACaQAAAgCAAAIggAACEIAAAnkABAHBwAACFoAAAgaAAAJlAAUB0MAAAh6AAAIOgAACdQAEgcTAAAIagAACCoAAAm0AAAICgAACIoAAAhKAAAJ9AAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnMABEHDwAACGYAAAgmAAAJrAAACAYAAAiGAAAIRgAACewAEAcJAAAIXgAACB4AAAmcABQHYwAACH4AAAg+AAAJ3AASBxsAAAhuAAAILgAACbwAAAgOAAAIjgAACE4AAAn8AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcIAEAcKAAAIYQAACCEAAAmiAAAIAQAACIEAAAhBAAAJ4gAQBwYAAAhZAAAIGQAACZIAEwc7AAAIeQAACDkAAAnSABEHEQAACGkAAAgpAAAJsgAACAkAAAiJAAAISQAACfIAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJygARBw0AAAhlAAAIJQAACaoAAAgFAAAIhQAACEUAAAnqABAHCAAACF0AAAgdAAAJmgAUB1MAAAh9AAAIPQAACdoAEgcXAAAIbQAACC0AAAm6AAAIDQAACI0AAAhNAAAJ+gAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnGABEHCwAACGMAAAgjAAAJpgAACAMAAAiDAAAIQwAACeYAEAcHAAAIWwAACBsAAAmWABQHQwAACHsAAAg7AAAJ1gASBxMAAAhrAAAIKwAACbYAAAgLAAAIiwAACEsAAAn2ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc4AEQcPAAAIZwAACCcAAAmuAAAIBwAACIcAAAhHAAAJ7gAQBwkAAAhfAAAIHwAACZ4AFAdjAAAIfwAACD8AAAneABIHGwAACG8AAAgvAAAJvgAACA8AAAiPAAAITwAACf4AYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwQAQBwoAAAhgAAAIIAAACaEAAAgAAAAIgAAACEAAAAnhABAHBgAACFgAAAgYAAAJkQATBzsAAAh4AAAIOAAACdEAEQcRAAAIaAAACCgAAAmxAAAICAAACIgAAAhIAAAJ8QAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnJABEHDQAACGQAAAgkAAAJqQAACAQAAAiEAAAIRAAACekAEAcIAAAIXAAACBwAAAmZABQHUwAACHwAAAg8AAAJ2QASBxcAAAhsAAAILAAACbkAAAgMAAAIjAAACEwAAAn5ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcUAEQcLAAAIYgAACCIAAAmlAAAIAgAACIIAAAhCAAAJ5QAQBwcAAAhaAAAIGgAACZUAFAdDAAAIegAACDoAAAnVABIHEwAACGoAAAgqAAAJtQAACAoAAAiKAAAISgAACfUAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzQARBw8AAAhmAAAIJgAACa0AAAgGAAAIhgAACEYAAAntABAHCQAACF4AAAgeAAAJnQAUB2MAAAh+AAAIPgAACd0AEgcbAAAIbgAACC4AAAm9AAAIDgAACI4AAAhOAAAJ/QBgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnDABAHCgAACGEAAAghAAAJowAACAEAAAiBAAAIQQAACeMAEAcGAAAIWQAACBkAAAmTABMHOwAACHkAAAg5AAAJ0wARBxEAAAhpAAAIKQAACbMAAAgJAAAIiQAACEkAAAnzABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcsAEQcNAAAIZQAACCUAAAmrAAAIBQAACIUAAAhFAAAJ6wAQBwgAAAhdAAAIHQAACZsAFAdTAAAIfQAACD0AAAnbABIHFwAACG0AAAgtAAAJuwAACA0AAAiNAAAITQAACfsAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxwARBwsAAAhjAAAIIwAACacAAAgDAAAIgwAACEMAAAnnABAHBwAACFsAAAgbAAAJlwAUB0MAAAh7AAAIOwAACdcAEgcTAAAIawAACCsAAAm3AAAICwAACIsAAAhLAAAJ9wAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnPABEHDwAACGcAAAgnAAAJrwAACAcAAAiHAAAIRwAACe8AEAcJAAAIXwAACB8AAAmfABQHYwAACH8AAAg/AAAJ3wASBxsAAAhvAAAILwAACb8AAAgPAAAIjwAACE8AAAn/ABAFAQAXBQEBEwURABsFARARBQUAGQUBBBUFQQAdBQFAEAUDABgFAQIUBSEAHAUBIBIFCQAaBQEIFgWBAEAFAAAQBQIAFwWBARMFGQAbBQEYEQUHABkFAQYVBWEAHQUBYBAFBAAYBQEDFAUxABwFATASBQ0AGgUBDBYFwQBABQAAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQYGEAQshCwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAEG7hAELAQwAQceEAQsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEH1hAELAQ4AQYGFAQsVDQAAAAQNAAAAAAkOAAAAAAAOAAAOAEGvhQELARAAQbuFAQseDwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAEHyhQELDhIAAAASEhIAAAAAAAAJAEGjhgELAQsAQa+GAQsVCgAAAAAKAAAAAAkLAAAAAAALAAALAEHdhgELAQwAQemGAQsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEG0hwELARkAQduHAQsF//////8AQaCIAQtXGRJEOwI/LEcUPTMwChsGRktFNw9JDo4XA0AdPGkrNh9KLRwBICUpIQgMFRYiLhA4Pgs0MRhkdHV2L0EJfzkRI0MyQomKiwUEJignDSoeNYwHGkiTE5SVAEGAiQELig5JbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgBBkJcBC1JQUFAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAAAEAAAAIAAAAlEsAALRLAEGQmQELAgxQAEHImQELCR8AAADkTAAAAwBB5JkBC4wBLfRRWM+MscBG9rXLKTEDxwRbcDC0Xf0geH+LmthZKVBoSImrp1YDbP+3zYg/1He0K6WjcPG65Kj8QYP92W/hinovLXSWBx8NCV4Ddixw90ClLKdvV0GoqnTfoFhkA0rHxDxTrq9fGAQVseNtKIarDKS/Q/DpUIE5VxZSN/////////////////////8=";y4(Rp)||(Rp=dxe(Rp));function Kxe(t){try{if(t==Rp&&lP)return new Uint8Array(lP);var e=s4(t);if(e)return e;if(aP)return aP(t);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(r){Gr(r)}}function Uxe(t,e){var r,i,n;try{n=Kxe(t),i=new WebAssembly.Module(n),r=new WebAssembly.Instance(i,e)}catch(o){var s=o.toString();throw Di("failed to compile wasm module: "+s),(s.includes("imported Memory")||s.includes("memory import"))&&Di("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),o}return[r,i]}function Gxe(){var t={a:Hxe};function e(n,s){var o=n.exports;oe.asm=o,ew=oe.asm.u,p4(ew.buffer),fP=oe.asm.za,Mxe(oe.asm.v),dP("wasm-instantiate")}if(E4("wasm-instantiate"),oe.instantiateWasm)try{var r=oe.instantiateWasm(t,e);return r}catch(n){return Di("Module.instantiateWasm callback failed with error: "+n),!1}var i=Uxe(Rp,t);return e(i[0]),oe.asm}var ai,ya;function hP(t){for(;t.length>0;){var e=t.shift();if(typeof e=="function"){e(oe);continue}var r=e.func;typeof r=="number"?e.arg===void 0?fP.get(r)():fP.get(r)(e.arg):r(e.arg===void 0?null:e.arg)}}function iw(t,e){var r=new Date(_e[t>>2]*1e3);_e[e>>2]=r.getUTCSeconds(),_e[e+4>>2]=r.getUTCMinutes(),_e[e+8>>2]=r.getUTCHours(),_e[e+12>>2]=r.getUTCDate(),_e[e+16>>2]=r.getUTCMonth(),_e[e+20>>2]=r.getUTCFullYear()-1900,_e[e+24>>2]=r.getUTCDay(),_e[e+36>>2]=0,_e[e+32>>2]=0;var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/(1e3*60*60*24)|0;return _e[e+28>>2]=n,iw.GMTString||(iw.GMTString=uP("GMT")),_e[e+40>>2]=iw.GMTString,e}function jxe(t,e){return iw(t,e)}var yt={splitPath:function(t){var e=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return e.exec(t).slice(1)},normalizeArray:function(t,e){for(var r=0,i=t.length-1;i>=0;i--){var n=t[i];n==="."?t.splice(i,1):n===".."?(t.splice(i,1),r++):r&&(t.splice(i,1),r--)}if(e)for(;r;r--)t.unshift("..");return t},normalize:function(t){var e=t.charAt(0)==="/",r=t.substr(-1)==="/";return t=yt.normalizeArray(t.split("/").filter(function(i){return!!i}),!e).join("/"),!t&&!e&&(t="."),t&&r&&(t+="/"),(e?"/":"")+t},dirname:function(t){var e=yt.splitPath(t),r=e[0],i=e[1];return!r&&!i?".":(i&&(i=i.substr(0,i.length-1)),r+i)},basename:function(t){if(t==="/")return"/";t=yt.normalize(t),t=t.replace(/\/$/,"");var e=t.lastIndexOf("/");return e===-1?t:t.substr(e+1)},extname:function(t){return yt.splitPath(t)[3]},join:function(){var t=Array.prototype.slice.call(arguments,0);return yt.normalize(t.join("/"))},join2:function(t,e){return yt.normalize(t+"/"+e)}};function Yxe(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){var t=new Uint8Array(1);return function(){return crypto.getRandomValues(t),t[0]}}else if(Wl)try{var e=require("crypto");return function(){return e.randomBytes(1)[0]}}catch(r){}return function(){Gr("randomDevice")}}var wa={resolve:function(){for(var t="",e=!1,r=arguments.length-1;r>=-1&&!e;r--){var i=r>=0?arguments[r]:y.cwd();if(typeof i!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";t=i+"/"+t,e=i.charAt(0)==="/"}return t=yt.normalizeArray(t.split("/").filter(function(n){return!!n}),!e).join("/"),(e?"/":"")+t||"."},relative:function(t,e){t=wa.resolve(t).substr(1),e=wa.resolve(e).substr(1);function r(c){for(var u=0;u=0&&c[g]==="";g--);return u>g?[]:c.slice(u,g-u+1)}for(var i=r(t.split("/")),n=r(e.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a0?e=i.slice(0,n).toString("utf-8"):e=null}else typeof window!="undefined"&&typeof window.prompt=="function"?(e=window.prompt("Input: "),e!==null&&(e+=` -`)):typeof readline=="function"&&(e=readline(),e!==null&&(e+=` -`));if(!e)return null;t.input=CP(e,!0)}return t.input.shift()},put_char:function(t,e){e===null||e===10?($y(Zu(t.output,0)),t.output=[]):e!=0&&t.output.push(e)},flush:function(t){t.output&&t.output.length>0&&($y(Zu(t.output,0)),t.output=[])}},default_tty1_ops:{put_char:function(t,e){e===null||e===10?(Di(Zu(t.output,0)),t.output=[]):e!=0&&t.output.push(e)},flush:function(t){t.output&&t.output.length>0&&(Di(Zu(t.output,0)),t.output=[])}}};function mP(t){for(var e=mxe(t,65536),r=h4(e);t=e)){var i=1024*1024;e=Math.max(e,r*(r>>0),r!=0&&(e=Math.max(e,256));var n=t.contents;t.contents=new Uint8Array(e),t.usedBytes>0&&t.contents.set(n.subarray(0,t.usedBytes),0)}},resizeFileStorage:function(t,e){if(t.usedBytes!=e)if(e==0)t.contents=null,t.usedBytes=0;else{var r=t.contents;t.contents=new Uint8Array(e),r&&t.contents.set(r.subarray(0,Math.min(e,t.usedBytes))),t.usedBytes=e}},node_ops:{getattr:function(t){var e={};return e.dev=y.isChrdev(t.mode)?t.id:1,e.ino=t.id,e.mode=t.mode,e.nlink=1,e.uid=0,e.gid=0,e.rdev=t.rdev,y.isDir(t.mode)?e.size=4096:y.isFile(t.mode)?e.size=t.usedBytes:y.isLink(t.mode)?e.size=t.link.length:e.size=0,e.atime=new Date(t.timestamp),e.mtime=new Date(t.timestamp),e.ctime=new Date(t.timestamp),e.blksize=4096,e.blocks=Math.ceil(e.size/e.blksize),e},setattr:function(t,e){e.mode!==void 0&&(t.mode=e.mode),e.timestamp!==void 0&&(t.timestamp=e.timestamp),e.size!==void 0&&pt.resizeFileStorage(t,e.size)},lookup:function(t,e){throw y.genericErrors[44]},mknod:function(t,e,r,i){return pt.createNode(t,e,r,i)},rename:function(t,e,r){if(y.isDir(t.mode)){var i;try{i=y.lookupNode(e,r)}catch(s){}if(i)for(var n in i.contents)throw new y.ErrnoError(55)}delete t.parent.contents[t.name],t.parent.timestamp=Date.now(),t.name=r,e.contents[r]=t,e.timestamp=t.parent.timestamp,t.parent=e},unlink:function(t,e){delete t.contents[e],t.timestamp=Date.now()},rmdir:function(t,e){var r=y.lookupNode(t,e);for(var i in r.contents)throw new y.ErrnoError(55);delete t.contents[e],t.timestamp=Date.now()},readdir:function(t){var e=[".",".."];for(var r in t.contents)!t.contents.hasOwnProperty(r)||e.push(r);return e},symlink:function(t,e,r){var i=pt.createNode(t,e,511|40960,0);return i.link=r,i},readlink:function(t){if(!y.isLink(t.mode))throw new y.ErrnoError(28);return t.link}},stream_ops:{read:function(t,e,r,i,n){var s=t.node.contents;if(n>=t.node.usedBytes)return 0;var o=Math.min(t.node.usedBytes-n,i);if(o>8&&s.subarray)e.set(s.subarray(n,n+o),r);else for(var a=0;a0||i+r>2)}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}return e.mode},realPath:function(t){for(var e=[];t.parent!==t;)e.push(t.name),t=t.parent;return e.push(t.mount.opts.root),e.reverse(),yt.join.apply(null,e)},flagsForNode:function(t){t&=~2097152,t&=~2048,t&=~32768,t&=~524288;var e=0;for(var r in tt.flagsForNodeMap)t&r&&(e|=tt.flagsForNodeMap[r],t^=r);if(t)throw new y.ErrnoError(28);return e},node_ops:{getattr:function(t){var e=tt.realPath(t),r;try{r=ft.lstatSync(e)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}return tt.isWindows&&!r.blksize&&(r.blksize=4096),tt.isWindows&&!r.blocks&&(r.blocks=(r.size+r.blksize-1)/r.blksize|0),{dev:r.dev,ino:r.ino,mode:r.mode,nlink:r.nlink,uid:r.uid,gid:r.gid,rdev:r.rdev,size:r.size,atime:r.atime,mtime:r.mtime,ctime:r.ctime,blksize:r.blksize,blocks:r.blocks}},setattr:function(t,e){var r=tt.realPath(t);try{if(e.mode!==void 0&&(ft.chmodSync(r,e.mode),t.mode=e.mode),e.timestamp!==void 0){var i=new Date(e.timestamp);ft.utimesSync(r,i,i)}e.size!==void 0&&ft.truncateSync(r,e.size)}catch(n){throw n.code?new y.ErrnoError(tt.convertNodeCode(n)):n}},lookup:function(t,e){var r=yt.join2(tt.realPath(t),e),i=tt.getMode(r);return tt.createNode(t,e,i)},mknod:function(t,e,r,i){var n=tt.createNode(t,e,r,i),s=tt.realPath(n);try{y.isDir(n.mode)?ft.mkdirSync(s,n.mode):ft.writeFileSync(s,"",{mode:n.mode})}catch(o){throw o.code?new y.ErrnoError(tt.convertNodeCode(o)):o}return n},rename:function(t,e,r){var i=tt.realPath(t),n=yt.join2(tt.realPath(e),r);try{ft.renameSync(i,n)}catch(s){throw s.code?new y.ErrnoError(tt.convertNodeCode(s)):s}t.name=r},unlink:function(t,e){var r=yt.join2(tt.realPath(t),e);try{ft.unlinkSync(r)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}},rmdir:function(t,e){var r=yt.join2(tt.realPath(t),e);try{ft.rmdirSync(r)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}},readdir:function(t){var e=tt.realPath(t);try{return ft.readdirSync(e)}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}},symlink:function(t,e,r){var i=yt.join2(tt.realPath(t),e);try{ft.symlinkSync(r,i)}catch(n){throw n.code?new y.ErrnoError(tt.convertNodeCode(n)):n}},readlink:function(t){var e=tt.realPath(t);try{return e=ft.readlinkSync(e),e=EP.relative(EP.resolve(t.mount.opts.root),e),e}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}}},stream_ops:{open:function(t){var e=tt.realPath(t.node);try{y.isFile(t.node.mode)&&(t.nfd=ft.openSync(e,tt.flagsForNode(t.flags)))}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}},close:function(t){try{y.isFile(t.node.mode)&&t.nfd&&ft.closeSync(t.nfd)}catch(e){throw e.code?new y.ErrnoError(tt.convertNodeCode(e)):e}},read:function(t,e,r,i,n){if(i===0)return 0;try{return ft.readSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n)}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}},write:function(t,e,r,i,n){try{return ft.writeSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n)}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}},llseek:function(t,e,r){var i=e;if(r===1)i+=t.position;else if(r===2&&y.isFile(t.node.mode))try{var n=ft.fstatSync(t.nfd);i+=n.size}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}if(i<0)throw new y.ErrnoError(28);return i},mmap:function(t,e,r,i,n,s){if(e!==0)throw new y.ErrnoError(28);if(!y.isFile(t.node.mode))throw new y.ErrnoError(43);var o=mP(r);return tt.stream_ops.read(t,Zi,o,r,i),{ptr:o,allocated:!0}},msync:function(t,e,r,i,n){if(!y.isFile(t.node.mode))throw new y.ErrnoError(43);if(n&2)return 0;var s=tt.stream_ops.write(t,e,0,i,r,!1);return 0}}},w4={lookupPath:function(t){return{path:t,node:{mode:tt.getMode(t)}}},createStandardStreams:function(){y.streams[0]={fd:0,nfd:0,position:0,path:"",flags:0,tty:!0,seekable:!1};for(var t=1;t<3;t++)y.streams[t]={fd:t,nfd:t,position:0,path:"",flags:577,tty:!0,seekable:!1}},cwd:function(){return process.cwd()},chdir:function(){process.chdir.apply(void 0,arguments)},mknod:function(t,e){y.isDir(t)?ft.mkdirSync(t,e):ft.writeFileSync(t,"",{mode:e})},mkdir:function(){ft.mkdirSync.apply(void 0,arguments)},symlink:function(){ft.symlinkSync.apply(void 0,arguments)},rename:function(){ft.renameSync.apply(void 0,arguments)},rmdir:function(){ft.rmdirSync.apply(void 0,arguments)},readdir:function(){ft.readdirSync.apply(void 0,arguments)},unlink:function(){ft.unlinkSync.apply(void 0,arguments)},readlink:function(){return ft.readlinkSync.apply(void 0,arguments)},stat:function(){return ft.statSync.apply(void 0,arguments)},lstat:function(){return ft.lstatSync.apply(void 0,arguments)},chmod:function(){ft.chmodSync.apply(void 0,arguments)},fchmod:function(){ft.fchmodSync.apply(void 0,arguments)},chown:function(){ft.chownSync.apply(void 0,arguments)},fchown:function(){ft.fchownSync.apply(void 0,arguments)},truncate:function(){ft.truncateSync.apply(void 0,arguments)},ftruncate:function(t,e){if(e<0)throw new y.ErrnoError(28);ft.ftruncateSync.apply(void 0,arguments)},utime:function(){ft.utimesSync.apply(void 0,arguments)},open:function(t,e,r,i){typeof e=="string"&&(e=Vl.modeStringToFlags(e));var n=ft.openSync(t,tt.flagsForNode(e),r),s=i!=null?i:y.nextfd(n),o={fd:s,nfd:n,position:0,path:t,flags:e,seekable:!0};return y.streams[s]=o,o},close:function(t){t.stream_ops||ft.closeSync(t.nfd),y.closeStream(t.fd)},llseek:function(t,e,r){if(t.stream_ops)return Vl.llseek(t,e,r);var i=e;if(r===1)i+=t.position;else if(r===2)i+=ft.fstatSync(t.nfd).size;else if(r!==0)throw new y.ErrnoError(eg.EINVAL);if(i<0)throw new y.ErrnoError(eg.EINVAL);return t.position=i,i},read:function(t,e,r,i,n){if(t.stream_ops)return Vl.read(t,e,r,i,n);var s=typeof n!="undefined";!s&&t.seekable&&(n=t.position);var o=ft.readSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n);return s||(t.position+=o),o},write:function(t,e,r,i,n){if(t.stream_ops)return Vl.write(t,e,r,i,n);t.flags&+"1024"&&y.llseek(t,0,+"2");var s=typeof n!="undefined";!s&&t.seekable&&(n=t.position);var o=ft.writeSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n);return s||(t.position+=o),o},allocate:function(){throw new y.ErrnoError(eg.EOPNOTSUPP)},mmap:function(t,e,r,i,n,s){if(t.stream_ops)return Vl.mmap(t,e,r,i,n,s);if(e!==0)throw new y.ErrnoError(28);var o=mP(r);return y.read(t,Zi,o,r,i),{ptr:o,allocated:!0}},msync:function(t,e,r,i,n){return t.stream_ops?Vl.msync(t,e,r,i,n):(n&2||y.write(t,e,0,i,r),0)},munmap:function(){return 0},ioctl:function(){throw new y.ErrnoError(eg.ENOTTY)}},y={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(t,e){if(t=wa.resolve(y.cwd(),t),e=e||{},!t)return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};for(var i in r)e[i]===void 0&&(e[i]=r[i]);if(e.recurse_count>8)throw new y.ErrnoError(32);for(var n=yt.normalizeArray(t.split("/").filter(function(f){return!!f}),!1),s=y.root,o="/",a=0;a40)throw new y.ErrnoError(32)}}return{path:o,node:s}},getPath:function(t){for(var e;;){if(y.isRoot(t)){var r=t.mount.mountpoint;return e?r[r.length-1]!=="/"?r+"/"+e:r+e:r}e=e?t.name+"/"+e:t.name,t=t.parent}},hashName:function(t,e){for(var r=0,i=0;i>>0)%y.nameTable.length},hashAddNode:function(t){var e=y.hashName(t.parent.id,t.name);t.name_next=y.nameTable[e],y.nameTable[e]=t},hashRemoveNode:function(t){var e=y.hashName(t.parent.id,t.name);if(y.nameTable[e]===t)y.nameTable[e]=t.name_next;else for(var r=y.nameTable[e];r;){if(r.name_next===t){r.name_next=t.name_next;break}r=r.name_next}},lookupNode:function(t,e){var r=y.mayLookup(t);if(r)throw new y.ErrnoError(r,t);for(var i=y.hashName(t.id,e),n=y.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===t.id&&s===e)return n}return y.lookup(t,e)},createNode:function(t,e,r,i){var n=new y.FSNode(t,e,r,i);return y.hashAddNode(n),n},destroyNode:function(t){y.hashRemoveNode(t)},isRoot:function(t){return t===t.parent},isMountpoint:function(t){return!!t.mounted},isFile:function(t){return(t&61440)==32768},isDir:function(t){return(t&61440)==16384},isLink:function(t){return(t&61440)==40960},isChrdev:function(t){return(t&61440)==8192},isBlkdev:function(t){return(t&61440)==24576},isFIFO:function(t){return(t&61440)==4096},isSocket:function(t){return(t&49152)==49152},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(t){var e=y.flagModes[t];if(typeof e=="undefined")throw new Error("Unknown file open mode: "+t);return e},flagsToPermissionString:function(t){var e=["r","w","rw"][t&3];return t&512&&(e+="w"),e},nodePermissions:function(t,e){return y.ignorePermissions?0:e.includes("r")&&!(t.mode&292)||e.includes("w")&&!(t.mode&146)||e.includes("x")&&!(t.mode&73)?2:0},mayLookup:function(t){var e=y.nodePermissions(t,"x");return e||(t.node_ops.lookup?0:2)},mayCreate:function(t,e){try{var r=y.lookupNode(t,e);return 20}catch(i){}return y.nodePermissions(t,"wx")},mayDelete:function(t,e,r){var i;try{i=y.lookupNode(t,e)}catch(s){return s.errno}var n=y.nodePermissions(t,"wx");if(n)return n;if(r){if(!y.isDir(i.mode))return 54;if(y.isRoot(i)||y.getPath(i)===y.cwd())return 10}else if(y.isDir(i.mode))return 31;return 0},mayOpen:function(t,e){return t?y.isLink(t.mode)?32:y.isDir(t.mode)&&(y.flagsToPermissionString(e)!=="r"||e&512)?31:y.nodePermissions(t,y.flagsToPermissionString(e)):44},MAX_OPEN_FDS:4096,nextfd:function(t,e){t=t||0,e=e||y.MAX_OPEN_FDS;for(var r=t;r<=e;r++)if(!y.streams[r])return r;throw new y.ErrnoError(33)},getStream:function(t){return y.streams[t]},createStream:function(t,e,r){y.FSStream||(y.FSStream=function(){},y.FSStream.prototype={object:{get:function(){return this.node},set:function(o){this.node=o}},isRead:{get:function(){return(this.flags&2097155)!=1}},isWrite:{get:function(){return(this.flags&2097155)!=0}},isAppend:{get:function(){return this.flags&1024}}});var i=new y.FSStream;for(var n in t)i[n]=t[n];t=i;var s=y.nextfd(e,r);return t.fd=s,y.streams[s]=t,t},closeStream:function(t){y.streams[t]=null},chrdev_stream_ops:{open:function(t){var e=y.getDevice(t.node.rdev);t.stream_ops=e.stream_ops,t.stream_ops.open&&t.stream_ops.open(t)},llseek:function(){throw new y.ErrnoError(70)}},major:function(t){return t>>8},minor:function(t){return t&255},makedev:function(t,e){return t<<8|e},registerDevice:function(t,e){y.devices[t]={stream_ops:e}},getDevice:function(t){return y.devices[t]},getMounts:function(t){for(var e=[],r=[t];r.length;){var i=r.pop();e.push(i),r.push.apply(r,i.mounts)}return e},syncfs:function(t,e){typeof t=="function"&&(e=t,t=!1),y.syncFSRequests++,y.syncFSRequests>1&&Di("warning: "+y.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=y.getMounts(y.root.mount),i=0;function n(o){return y.syncFSRequests--,e(o)}function s(o){if(o)return s.errored?void 0:(s.errored=!0,n(o));++i>=r.length&&n(null)}r.forEach(function(o){if(!o.type.syncfs)return s(null);o.type.syncfs(o,t,s)})},mount:function(t,e,r){var i=r==="/",n=!r,s;if(i&&y.root)throw new y.ErrnoError(10);if(!i&&!n){var o=y.lookupPath(r,{follow_mount:!1});if(r=o.path,s=o.node,y.isMountpoint(s))throw new y.ErrnoError(10);if(!y.isDir(s.mode))throw new y.ErrnoError(54)}var a={type:t,opts:e,mountpoint:r,mounts:[]},l=t.mount(a);return l.mount=a,a.root=l,i?y.root=l:s&&(s.mounted=a,s.mount&&s.mount.mounts.push(a)),l},unmount:function(t){var e=y.lookupPath(t,{follow_mount:!1});if(!y.isMountpoint(e.node))throw new y.ErrnoError(28);var r=e.node,i=r.mounted,n=y.getMounts(i);Object.keys(y.nameTable).forEach(function(o){for(var a=y.nameTable[o];a;){var l=a.name_next;n.includes(a.mount)&&y.destroyNode(a),a=l}}),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:function(t,e){return t.node_ops.lookup(t,e)},mknod:function(t,e,r){var i=y.lookupPath(t,{parent:!0}),n=i.node,s=yt.basename(t);if(!s||s==="."||s==="..")throw new y.ErrnoError(28);var o=y.mayCreate(n,s);if(o)throw new y.ErrnoError(o);if(!n.node_ops.mknod)throw new y.ErrnoError(63);return n.node_ops.mknod(n,s,e,r)},create:function(t,e){return e=e!==void 0?e:438,e&=4095,e|=32768,y.mknod(t,e,0)},mkdir:function(t,e){return e=e!==void 0?e:511,e&=511|512,e|=16384,y.mknod(t,e,0)},mkdirTree:function(t,e){for(var r=t.split("/"),i="",n=0;nthis.length-1||f<0)){var h=f%this.chunkSize,p=f/this.chunkSize|0;return this.getter(p)[h]}},s.prototype.setDataGetter=function(f){this.getter=f},s.prototype.cacheLength=function(){var f=new XMLHttpRequest;if(f.open("HEAD",r,!1),f.send(null),!(f.status>=200&&f.status<300||f.status===304))throw new Error("Couldn't load "+r+". Status: "+f.status);var h=Number(f.getResponseHeader("Content-length")),p,d=(p=f.getResponseHeader("Accept-Ranges"))&&p==="bytes",m=(p=f.getResponseHeader("Content-Encoding"))&&p==="gzip",I=1024*1024;d||(I=h);var B=function(R,H){if(R>H)throw new Error("invalid range ("+R+", "+H+") or no bytes requested!");if(H>h-1)throw new Error("only "+h+" bytes available! programmer error!");var L=new XMLHttpRequest;if(L.open("GET",r,!1),h!==I&&L.setRequestHeader("Range","bytes="+R+"-"+H),typeof Uint8Array!="undefined"&&(L.responseType="arraybuffer"),L.overrideMimeType&&L.overrideMimeType("text/plain; charset=x-user-defined"),L.send(null),!(L.status>=200&&L.status<300||L.status===304))throw new Error("Couldn't load "+r+". Status: "+L.status);return L.response!==void 0?new Uint8Array(L.response||[]):CP(L.responseText||"",!0)},b=this;b.setDataGetter(function(R){var H=R*I,L=(R+1)*I-1;if(L=Math.min(L,h-1),typeof b.chunks[R]=="undefined"&&(b.chunks[R]=B(H,L)),typeof b.chunks[R]=="undefined")throw new Error("doXHR failed!");return b.chunks[R]}),(m||!h)&&(I=h=1,h=this.getter(0).length,I=h,$y("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=h,this._chunkSize=I,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!i4)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new s;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:o}}else var a={isDevice:!1,url:r};var l=y.createFile(t,e,a,i,n);a.contents?l.contents=a.contents:a.url&&(l.contents=null,l.url=a.url),Object.defineProperties(l,{usedBytes:{get:function(){return this.contents.length}}});var c={},u=Object.keys(l.stream_ops);return u.forEach(function(g){var f=l.stream_ops[g];c[g]=function(){return y.forceLoadFile(l),f.apply(null,arguments)}}),c.read=function(f,h,p,d,m){y.forceLoadFile(l);var I=f.node.contents;if(m>=I.length)return 0;var B=Math.min(I.length-m,d);if(I.slice)for(var b=0;b>2]=i.dev,_e[r+4>>2]=0,_e[r+8>>2]=i.ino,_e[r+12>>2]=i.mode,_e[r+16>>2]=i.nlink,_e[r+20>>2]=i.uid,_e[r+24>>2]=i.gid,_e[r+28>>2]=i.rdev,_e[r+32>>2]=0,ya=[i.size>>>0,(ai=i.size,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[r+40>>2]=ya[0],_e[r+44>>2]=ya[1],_e[r+48>>2]=4096,_e[r+52>>2]=i.blocks,_e[r+56>>2]=i.atime.getTime()/1e3|0,_e[r+60>>2]=0,_e[r+64>>2]=i.mtime.getTime()/1e3|0,_e[r+68>>2]=0,_e[r+72>>2]=i.ctime.getTime()/1e3|0,_e[r+76>>2]=0,ya=[i.ino>>>0,(ai=i.ino,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[r+80>>2]=ya[0],_e[r+84>>2]=ya[1],0},doMsync:function(t,e,r,i,n){var s=$u.slice(t,t+r);y.msync(e,s,n,r,i)},doMkdir:function(t,e){return t=yt.normalize(t),t[t.length-1]==="/"&&(t=t.substr(0,t.length-1)),y.mkdir(t,e,0),0},doMknod:function(t,e,r){switch(e&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return y.mknod(t,e,r),0},doReadlink:function(t,e,r){if(r<=0)return-28;var i=y.readlink(t),n=Math.min(r,rw(i)),s=Zi[e+n];return u4(i,e,r+1),Zi[e+n]=s,n},doAccess:function(t,e){if(e&~7)return-28;var r,i=y.lookupPath(t,{follow:!0});if(r=i.node,!r)return-44;var n="";return e&4&&(n+="r"),e&2&&(n+="w"),e&1&&(n+="x"),n&&y.nodePermissions(r,n)?-2:0},doDup:function(t,e,r){var i=y.getStream(r);return i&&y.close(i),y.open(t,e,0,r,r).fd},doReadv:function(t,e,r,i){for(var n=0,s=0;s>2],a=_e[e+(s*8+4)>>2],l=y.read(t,Zi,o,a,i);if(l<0)return-1;if(n+=l,l>2],a=_e[e+(s*8+4)>>2],l=y.write(t,Zi,o,a,i);if(l<0)return-1;n+=l}return n},varargs:void 0,get:function(){Ot.varargs+=4;var t=_e[Ot.varargs-4>>2];return t},getStr:function(t){var e=c4(t);return e},getStreamFromFD:function(t){var e=y.getStream(t);if(!e)throw new y.ErrnoError(8);return e},get64:function(t,e){return t}};function qxe(t,e){try{return t=Ot.getStr(t),y.chmod(t,e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function Wxe(t){return _e[Jxe()>>2]=t,t}function zxe(t,e,r){Ot.varargs=r;try{var i=Ot.getStreamFromFD(t);switch(e){case 0:{var n=Ot.get();if(n<0)return-28;var s;return s=y.open(i.path,i.flags,0,n),s.fd}case 1:case 2:return 0;case 3:return i.flags;case 4:{var n=Ot.get();return i.flags|=n,0}case 12:{var n=Ot.get(),o=0;return cP[n+o>>1]=2,0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:return Wxe(28),-1;default:return-28}}catch(a){return(typeof y=="undefined"||!(a instanceof y.ErrnoError))&&Gr(a),-a.errno}}function Vxe(t,e){try{var r=Ot.getStreamFromFD(t);return Ot.doStat(y.stat,r.path,e)}catch(i){return(typeof y=="undefined"||!(i instanceof y.ErrnoError))&&Gr(i),-i.errno}}function _xe(t,e,r){Ot.varargs=r;try{var i=Ot.getStreamFromFD(t);switch(e){case 21509:case 21505:return i.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return i.tty?0:-59;case 21519:{if(!i.tty)return-59;var n=Ot.get();return _e[n>>2]=0,0}case 21520:return i.tty?-28:-59;case 21531:{var n=Ot.get();return y.ioctl(i,e,n)}case 21523:return i.tty?0:-59;case 21524:return i.tty?0:-59;default:Gr("bad ioctl syscall "+e)}}catch(s){return(typeof y=="undefined"||!(s instanceof y.ErrnoError))&&Gr(s),-s.errno}}function Xxe(t,e,r){Ot.varargs=r;try{var i=Ot.getStr(t),n=r?Ot.get():0,s=y.open(i,e,n);return s.fd}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),-o.errno}}function Zxe(t,e){try{return t=Ot.getStr(t),e=Ot.getStr(e),y.rename(t,e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function $xe(t){try{return t=Ot.getStr(t),y.rmdir(t),0}catch(e){return(typeof y=="undefined"||!(e instanceof y.ErrnoError))&&Gr(e),-e.errno}}function eke(t,e){try{return t=Ot.getStr(t),Ot.doStat(y.stat,t,e)}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function tke(t){try{return t=Ot.getStr(t),y.unlink(t),0}catch(e){return(typeof y=="undefined"||!(e instanceof y.ErrnoError))&&Gr(e),-e.errno}}function rke(t,e,r){$u.copyWithin(t,e,e+r)}function ike(t){try{return ew.grow(t-gP.byteLength+65535>>>16),p4(ew.buffer),1}catch(e){}}function nke(t){var e=$u.length;t=t>>>0;var r=2147483648;if(t>r)return!1;for(var i=1;i<=4;i*=2){var n=e*(1+.2/i);n=Math.min(n,t+100663296);var s=Math.min(r,xxe(Math.max(t,n),65536)),o=ike(s);if(o)return!0}return!1}function ske(t){try{var e=Ot.getStreamFromFD(t);return y.close(e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),r.errno}}function oke(t,e){try{var r=Ot.getStreamFromFD(t),i=r.tty?2:y.isDir(r.mode)?3:y.isLink(r.mode)?7:4;return Zi[e>>0]=i,0}catch(n){return(typeof y=="undefined"||!(n instanceof y.ErrnoError))&&Gr(n),n.errno}}function ake(t,e,r,i){try{var n=Ot.getStreamFromFD(t),s=Ot.doReadv(n,e,r);return _e[i>>2]=s,0}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),o.errno}}function Ake(t,e,r,i,n){try{var s=Ot.getStreamFromFD(t),o=4294967296,a=r*o+(e>>>0),l=9007199254740992;return a<=-l||a>=l?-61:(y.llseek(s,a,i),ya=[s.position>>>0,(ai=s.position,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[n>>2]=ya[0],_e[n+4>>2]=ya[1],s.getdents&&a===0&&i===0&&(s.getdents=null),0)}catch(c){return(typeof y=="undefined"||!(c instanceof y.ErrnoError))&&Gr(c),c.errno}}function lke(t,e,r,i){try{var n=Ot.getStreamFromFD(t),s=Ot.doWritev(n,e,r);return _e[i>>2]=s,0}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),o.errno}}function cke(t){Ixe(t)}function uke(t){var e=Date.now()/1e3|0;return t&&(_e[t>>2]=e),e}function IP(){if(IP.called)return;IP.called=!0;var t=new Date().getFullYear(),e=new Date(t,0,1),r=new Date(t,6,1),i=e.getTimezoneOffset(),n=r.getTimezoneOffset(),s=Math.max(i,n);_e[fke()>>2]=s*60,_e[gke()>>2]=Number(i!=n);function o(g){var f=g.toTimeString().match(/\(([A-Za-z ]+)\)$/);return f?f[1]:"GMT"}var a=o(e),l=o(r),c=uP(a),u=uP(l);n>2]=c,_e[nw()+4>>2]=u):(_e[nw()>>2]=u,_e[nw()+4>>2]=c)}function hke(t){IP();var e=Date.UTC(_e[t+20>>2]+1900,_e[t+16>>2],_e[t+12>>2],_e[t+8>>2],_e[t+4>>2],_e[t>>2],0),r=new Date(e);_e[t+24>>2]=r.getUTCDay();var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/(1e3*60*60*24)|0;return _e[t+28>>2]=n,r.getTime()/1e3|0}var B4=function(t,e,r,i){t||(t=this),this.parent=t,this.mount=t.mount,this.mounted=null,this.id=y.nextInode++,this.name=e,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},sw=292|73,ow=146;Object.defineProperties(B4.prototype,{read:{get:function(){return(this.mode&sw)===sw},set:function(t){t?this.mode|=sw:this.mode&=~sw}},write:{get:function(){return(this.mode&ow)===ow},set:function(t){t?this.mode|=ow:this.mode&=~ow}},isFolder:{get:function(){return y.isDir(this.mode)}},isDevice:{get:function(){return y.isChrdev(this.mode)}}});y.FSNode=B4;y.staticInit();Wl&&(ft=e4,EP=require("path"),tt.staticInit());var ft,EP;if(Wl){Q4=function(t){return function(){try{return t.apply(this,arguments)}catch(e){throw e.code?new y.ErrnoError(eg[e.code]):e}}},Vl=Object.assign({},y);for(yP in w4)y[yP]=Q4(w4[yP])}else throw new Error("NODERAWFS is currently only supported on Node.js environment.");var Q4,Vl,yP;function CP(t,e,r){var i=r>0?r:rw(t)+1,n=new Array(i),s=tw(t,n,0,n.length);return e&&(n.length=s),n}var pke=typeof atob=="function"?atob:function(t){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r="",i,n,s,o,a,l,c,u=0;t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");do o=e.indexOf(t.charAt(u++)),a=e.indexOf(t.charAt(u++)),l=e.indexOf(t.charAt(u++)),c=e.indexOf(t.charAt(u++)),i=o<<2|a>>4,n=(a&15)<<4|l>>2,s=(l&3)<<6|c,r=r+String.fromCharCode(i),l!==64&&(r=r+String.fromCharCode(n)),c!==64&&(r=r+String.fromCharCode(s));while(u0||(Fxe(),zl>0))return;function e(){aw||(aw=!0,oe.calledRun=!0,!A4&&(Nxe(),oe.onRuntimeInitialized&&oe.onRuntimeInitialized(),Txe()))}oe.setStatus?(oe.setStatus("Running..."),setTimeout(function(){setTimeout(function(){oe.setStatus("")},1),e()},1)):e()}oe.run=wP;if(oe.preInit)for(typeof oe.preInit=="function"&&(oe.preInit=[oe.preInit]);oe.preInit.length>0;)oe.preInit.pop()();wP()});var x4=E((Dot,S4)=>{"use strict";function Cke(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function _l(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,_l)}Cke(_l,Error);_l.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",ee=At(">>",!1),Ue=">&",Oe=At(">&",!1),vt=">",dt=At(">",!1),ri="<<<",ii=At("<<<",!1),an="<&",yr=At("<&",!1),Ki="<",Qi=At("<",!1),Go=function(C){return{type:"argument",segments:[].concat(...C)}},wr=function(C){return C},Ui="'",ws=At("'",!1),Tf=function(C){return[{type:"text",text:C}]},Mf='"',Rm=At('"',!1),Fm=function(C){return C},Nm=function(C){return{type:"arithmetic",arithmetic:C,quoted:!0}},DQ=function(C){return{type:"shell",shell:C,quoted:!0}},RQ=function(C){return _(P({type:"variable"},C),{quoted:!0})},Of=function(C){return{type:"text",text:C}},FQ=function(C){return{type:"arithmetic",arithmetic:C,quoted:!1}},NQ=function(C){return{type:"shell",shell:C,quoted:!1}},Lm=function(C){return _(P({type:"variable"},C),{quoted:!1})},LQ=function(C){return{type:"glob",pattern:C}},Va="\\",jo=At("\\",!1),Tm=/^[\\']/,Mm=Qs(["\\","'"],!1,!1),te=function(C){return C},Om=/^[^']/,Km=Qs(["'"],!0,!1),il=function(C){return C.join("")},Um=/^[\\$"]/,Hm=Qs(["\\","$",'"'],!1,!1),Kf=/^[^$"]/,Gm=Qs(["$",'"'],!0,!1),jm="\\0",TQ=At("\\0",!1),MQ=function(){return"\0"},Ym="\\a",qm=At("\\a",!1),Jm=function(){return"a"},Wm="\\b",zm=At("\\b",!1),Vm=function(){return"\b"},Uf="\\e",OQ=At("\\e",!1),KQ=function(){return""},_m="\\f",UQ=At("\\f",!1),HQ=function(){return"\f"},O="\\n",ht=At("\\n",!1),Vc=function(){return` -`},xn="\\r",Hf=At("\\r",!1),Ye=function(){return"\r"},nl="\\t",Xm=At("\\t",!1),MM=function(){return" "},GQ="\\v",OM=At("\\v",!1),fr=function(){return"\v"},Bs="\\x",jQ=At("\\x",!1),Zm=function(C){return String.fromCharCode(parseInt(C,16))},Yo="\\u",$m=At("\\u",!1),_a="\\U",et=At("\\U",!1),YQ=function(C){return String.fromCodePoint(parseInt(C,16))},eE=/^[0-9a-fA-f]/,tE=Qs([["0","9"],["a","f"],["A","f"]],!1,!1),Xa=Cfe(),sl="-",ol=At("-",!1),al="+",qo=At("+",!1),Al=".",qQ=At(".",!1),rE=function(C,Q,k){return{type:"number",value:(C==="-"?-1:1)*parseFloat(Q.join("")+"."+k.join(""))}},iE=function(C,Q){return{type:"number",value:(C==="-"?-1:1)*parseInt(Q.join(""))}},JQ=function(C){return P({type:"variable"},C)},ll=function(C){return{type:"variable",name:C}},WQ=function(C){return C},nE="*",Gf=At("*",!1),_c="/",jf=At("/",!1),sE=function(C,Q,k){return{type:Q==="*"?"multiplication":"division",right:k}},cl=function(C,Q){return Q.reduce((k,N)=>P({left:k},N),C)},oE=function(C,Q,k){return{type:Q==="+"?"addition":"subtraction",right:k}},Yf="$((",Xc=At("$((",!1),xr="))",KM=At("))",!1),Jo=function(C){return C},Zs="$(",aE=At("$(",!1),Zc=function(C){return C},x="${",U=At("${",!1),le=":-",xe=At(":-",!1),Qe=function(C,Q){return{name:C,defaultValue:Q}},Ge=":-}",ct=At(":-}",!1),sr=function(C){return{name:C,defaultValue:[]}},Wo=function(C){return{name:C}},Afe="$",lfe=At("$",!1),cfe=function(C){return e.isGlobPattern(C)},ufe=function(C){return C},UM=/^[a-zA-Z0-9_]/,HM=Qs([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),GM=function(){return dfe()},jM=/^[$@*?#a-zA-Z0-9_\-]/,YM=Qs(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),gfe=/^[(){}<>$|&; \t"']/,ffe=Qs(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),hfe=/^[<>&; \t"']/,pfe=Qs(["<",">","&",";"," "," ",'"',"'"],!1,!1),qM=/^[ \t]/,JM=Qs([" "," "],!1,!1),w=0,Re=0,AE=[{line:1,column:1}],$s=0,zQ=[],we=0,lE;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function dfe(){return t.substring(Re,w)}function P_e(){return qf(Re,w)}function D_e(C,Q){throw Q=Q!==void 0?Q:qf(Re,w),zM([Efe(C)],t.substring(Re,w),Q)}function R_e(C,Q){throw Q=Q!==void 0?Q:qf(Re,w),Ife(C,Q)}function At(C,Q){return{type:"literal",text:C,ignoreCase:Q}}function Qs(C,Q,k){return{type:"class",parts:C,inverted:Q,ignoreCase:k}}function Cfe(){return{type:"any"}}function mfe(){return{type:"end"}}function Efe(C){return{type:"other",description:C}}function WM(C){var Q=AE[C],k;if(Q)return Q;for(k=C-1;!AE[k];)k--;for(Q=AE[k],Q={line:Q.line,column:Q.column};k$s&&($s=w,zQ=[]),zQ.push(C))}function Ife(C,Q){return new _l(C,null,null,Q)}function zM(C,Q,k){return new _l(_l.buildMessage(C,Q),C,Q,k)}function VM(){var C,Q;return C=w,Q=Jf(),Q===r&&(Q=null),Q!==r&&(Re=C,Q=s(Q)),C=Q,C}function Jf(){var C,Q,k,N,Z;if(C=w,Q=VQ(),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();k!==r?(N=_M(),N!==r?(Z=yfe(),Z===r&&(Z=null),Z!==r?(Re=C,Q=o(Q,N,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;if(C===r)if(C=w,Q=VQ(),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();k!==r?(N=_M(),N===r&&(N=null),N!==r?(Re=C,Q=a(Q,N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;return C}function yfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=Jf(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=l(k),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;return C}function _M(){var C;return t.charCodeAt(w)===59?(C=c,w++):(C=r,we===0&&ve(u)),C===r&&(t.charCodeAt(w)===38?(C=g,w++):(C=r,we===0&&ve(f))),C}function VQ(){var C,Q,k;return C=w,Q=XM(),Q!==r?(k=wfe(),k===r&&(k=null),k!==r?(Re=C,Q=h(Q,k),C=Q):(w=C,C=r)):(w=C,C=r),C}function wfe(){var C,Q,k,N,Z,Ee,ot;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=Bfe(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=VQ(),Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();Ee!==r?(Re=C,Q=p(k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;return C}function Bfe(){var C;return t.substr(w,2)===d?(C=d,w+=2):(C=r,we===0&&ve(m)),C===r&&(t.substr(w,2)===I?(C=I,w+=2):(C=r,we===0&&ve(B))),C}function XM(){var C,Q,k;return C=w,Q=vfe(),Q!==r?(k=Qfe(),k===r&&(k=null),k!==r?(Re=C,Q=b(Q,k),C=Q):(w=C,C=r)):(w=C,C=r),C}function Qfe(){var C,Q,k,N,Z,Ee,ot;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=bfe(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=XM(),Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();Ee!==r?(Re=C,Q=R(k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;return C}function bfe(){var C;return t.substr(w,2)===H?(C=H,w+=2):(C=r,we===0&&ve(L)),C===r&&(t.charCodeAt(w)===124?(C=K,w++):(C=r,we===0&&ve(J))),C}function cE(){var C,Q,k,N,Z,Ee;if(C=w,Q=oO(),Q!==r)if(t.charCodeAt(w)===61?(k=ne,w++):(k=r,we===0&&ve(q)),k!==r)if(N=$M(),N!==r){for(Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();Z!==r?(Re=C,Q=A(Q,N),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;else w=C,C=r;if(C===r)if(C=w,Q=oO(),Q!==r)if(t.charCodeAt(w)===61?(k=ne,w++):(k=r,we===0&&ve(q)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=V(Q),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;return C}function vfe(){var C,Q,k,N,Z,Ee,ot,ut,Tr,ni,Yn;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(t.charCodeAt(w)===40?(k=W,w++):(k=r,we===0&&ve(X)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=Jf(),Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();if(Ee!==r)if(t.charCodeAt(w)===41?(ot=F,w++):(ot=r,we===0&&ve(D)),ot!==r){for(ut=[],Tr=ke();Tr!==r;)ut.push(Tr),Tr=ke();if(ut!==r){for(Tr=[],ni=Wf();ni!==r;)Tr.push(ni),ni=Wf();if(Tr!==r){for(ni=[],Yn=ke();Yn!==r;)ni.push(Yn),Yn=ke();ni!==r?(Re=C,Q=he(Z,Tr),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(t.charCodeAt(w)===123?(k=pe,w++):(k=r,we===0&&ve(Ne)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=Jf(),Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();if(Ee!==r)if(t.charCodeAt(w)===125?(ot=Pe,w++):(ot=r,we===0&&ve(qe)),ot!==r){for(ut=[],Tr=ke();Tr!==r;)ut.push(Tr),Tr=ke();if(ut!==r){for(Tr=[],ni=Wf();ni!==r;)Tr.push(ni),ni=Wf();if(Tr!==r){for(ni=[],Yn=ke();Yn!==r;)ni.push(Yn),Yn=ke();ni!==r?(Re=C,Q=re(Z,Tr),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){for(k=[],N=cE();N!==r;)k.push(N),N=cE();if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r){if(Z=[],Ee=ZM(),Ee!==r)for(;Ee!==r;)Z.push(Ee),Ee=ZM();else Z=r;if(Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();Ee!==r?(Re=C,Q=se(k,Z),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r}else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){if(k=[],N=cE(),N!==r)for(;N!==r;)k.push(N),N=cE();else k=r;if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=be(k),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}}}return C}function Sfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){if(k=[],N=uE(),N!==r)for(;N!==r;)k.push(N),N=uE();else k=r;if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=ae(k),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r;return C}function ZM(){var C,Q,k;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r?(k=Wf(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();Q!==r?(k=uE(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r)}return C}function Wf(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();return Q!==r?(De.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve($)),k===r&&(k=null),k!==r?(N=xfe(),N!==r?(Z=uE(),Z!==r?(Re=C,Q=G(k,N,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function xfe(){var C;return t.substr(w,2)===Ce?(C=Ce,w+=2):(C=r,we===0&&ve(ee)),C===r&&(t.substr(w,2)===Ue?(C=Ue,w+=2):(C=r,we===0&&ve(Oe)),C===r&&(t.charCodeAt(w)===62?(C=vt,w++):(C=r,we===0&&ve(dt)),C===r&&(t.substr(w,3)===ri?(C=ri,w+=3):(C=r,we===0&&ve(ii)),C===r&&(t.substr(w,2)===an?(C=an,w+=2):(C=r,we===0&&ve(yr)),C===r&&(t.charCodeAt(w)===60?(C=Ki,w++):(C=r,we===0&&ve(Qi))))))),C}function uE(){var C,Q,k;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();return Q!==r?(k=$M(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r),C}function $M(){var C,Q,k;if(C=w,Q=[],k=eO(),k!==r)for(;k!==r;)Q.push(k),k=eO();else Q=r;return Q!==r&&(Re=C,Q=Go(Q)),C=Q,C}function eO(){var C,Q;return C=w,Q=kfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q,C===r&&(C=w,Q=Pfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q,C===r&&(C=w,Q=Dfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q)),C}function kfe(){var C,Q,k,N;return C=w,t.charCodeAt(w)===39?(Q=Ui,w++):(Q=r,we===0&&ve(ws)),Q!==r?(k=Rfe(),k!==r?(t.charCodeAt(w)===39?(N=Ui,w++):(N=r,we===0&&ve(ws)),N!==r?(Re=C,Q=Tf(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function Pfe(){var C,Q,k,N;if(C=w,t.charCodeAt(w)===34?(Q=Mf,w++):(Q=r,we===0&&ve(Rm)),Q!==r){for(k=[],N=tO();N!==r;)k.push(N),N=tO();k!==r?(t.charCodeAt(w)===34?(N=Mf,w++):(N=r,we===0&&ve(Rm)),N!==r?(Re=C,Q=Fm(k),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;return C}function Dfe(){var C,Q,k;if(C=w,Q=[],k=rO(),k!==r)for(;k!==r;)Q.push(k),k=rO();else Q=r;return Q!==r&&(Re=C,Q=Fm(Q)),C=Q,C}function tO(){var C,Q;return C=w,Q=nO(),Q!==r&&(Re=C,Q=Nm(Q)),C=Q,C===r&&(C=w,Q=sO(),Q!==r&&(Re=C,Q=DQ(Q)),C=Q,C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=RQ(Q)),C=Q,C===r&&(C=w,Q=Ffe(),Q!==r&&(Re=C,Q=Of(Q)),C=Q))),C}function rO(){var C,Q;return C=w,Q=nO(),Q!==r&&(Re=C,Q=FQ(Q)),C=Q,C===r&&(C=w,Q=sO(),Q!==r&&(Re=C,Q=NQ(Q)),C=Q,C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=Lm(Q)),C=Q,C===r&&(C=w,Q=Lfe(),Q!==r&&(Re=C,Q=LQ(Q)),C=Q,C===r&&(C=w,Q=Nfe(),Q!==r&&(Re=C,Q=Of(Q)),C=Q)))),C}function Rfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=gE(),k===r&&(k=fE(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Tm.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Mm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Om.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Km)))));k!==r;)Q.push(k),k=gE(),k===r&&(k=fE(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Tm.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Mm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Om.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Km)))));return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function Ffe(){var C,Q,k,N,Z;if(C=w,Q=[],k=gE(),k===r&&(k=fE(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Um.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Hm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Kf.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Gm))))),k!==r)for(;k!==r;)Q.push(k),k=gE(),k===r&&(k=fE(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Um.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Hm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Kf.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Gm)))));else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function gE(){var C,Q;return C=w,t.substr(w,2)===jm?(Q=jm,w+=2):(Q=r,we===0&&ve(TQ)),Q!==r&&(Re=C,Q=MQ()),C=Q,C===r&&(C=w,t.substr(w,2)===Ym?(Q=Ym,w+=2):(Q=r,we===0&&ve(qm)),Q!==r&&(Re=C,Q=Jm()),C=Q,C===r&&(C=w,t.substr(w,2)===Wm?(Q=Wm,w+=2):(Q=r,we===0&&ve(zm)),Q!==r&&(Re=C,Q=Vm()),C=Q,C===r&&(C=w,t.substr(w,2)===Uf?(Q=Uf,w+=2):(Q=r,we===0&&ve(OQ)),Q!==r&&(Re=C,Q=KQ()),C=Q,C===r&&(C=w,t.substr(w,2)===_m?(Q=_m,w+=2):(Q=r,we===0&&ve(UQ)),Q!==r&&(Re=C,Q=HQ()),C=Q,C===r&&(C=w,t.substr(w,2)===O?(Q=O,w+=2):(Q=r,we===0&&ve(ht)),Q!==r&&(Re=C,Q=Vc()),C=Q,C===r&&(C=w,t.substr(w,2)===xn?(Q=xn,w+=2):(Q=r,we===0&&ve(Hf)),Q!==r&&(Re=C,Q=Ye()),C=Q,C===r&&(C=w,t.substr(w,2)===nl?(Q=nl,w+=2):(Q=r,we===0&&ve(Xm)),Q!==r&&(Re=C,Q=MM()),C=Q,C===r&&(C=w,t.substr(w,2)===GQ?(Q=GQ,w+=2):(Q=r,we===0&&ve(OM)),Q!==r&&(Re=C,Q=fr()),C=Q)))))))),C}function fE(){var C,Q,k,N,Z,Ee,ot,ut,Tr,ni,Yn,$Q;return C=w,t.substr(w,2)===Bs?(Q=Bs,w+=2):(Q=r,we===0&&ve(jQ)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ee=An(),Ee!==r?(Z=[Z,Ee],N=Z):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=Zm(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===Yo?(Q=Yo,w+=2):(Q=r,we===0&&ve($m)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ee=An(),Ee!==r?(ot=An(),ot!==r?(ut=An(),ut!==r?(Z=[Z,Ee,ot,ut],N=Z):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=Zm(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===_a?(Q=_a,w+=2):(Q=r,we===0&&ve(et)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ee=An(),Ee!==r?(ot=An(),ot!==r?(ut=An(),ut!==r?(Tr=An(),Tr!==r?(ni=An(),ni!==r?(Yn=An(),Yn!==r?($Q=An(),$Q!==r?(Z=[Z,Ee,ot,ut,Tr,ni,Yn,$Q],N=Z):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=YQ(k),C=Q):(w=C,C=r)):(w=C,C=r))),C}function An(){var C;return eE.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(tE)),C}function Nfe(){var C,Q,k,N,Z;if(C=w,Q=[],k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(k=w,N=w,we++,Z=aO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r)),k!==r)for(;k!==r;)Q.push(k),k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(k=w,N=w,we++,Z=aO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r));else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function _Q(){var C,Q,k,N,Z,Ee;if(C=w,t.charCodeAt(w)===45?(Q=sl,w++):(Q=r,we===0&&ve(ol)),Q===r&&(t.charCodeAt(w)===43?(Q=al,w++):(Q=r,we===0&&ve(qo))),Q===r&&(Q=null),Q!==r){if(k=[],De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($)),N!==r)for(;N!==r;)k.push(N),De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($));else k=r;if(k!==r)if(t.charCodeAt(w)===46?(N=Al,w++):(N=r,we===0&&ve(qQ)),N!==r){if(Z=[],De.test(t.charAt(w))?(Ee=t.charAt(w),w++):(Ee=r,we===0&&ve($)),Ee!==r)for(;Ee!==r;)Z.push(Ee),De.test(t.charAt(w))?(Ee=t.charAt(w),w++):(Ee=r,we===0&&ve($));else Z=r;Z!==r?(Re=C,Q=rE(Q,k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;if(C===r){if(C=w,t.charCodeAt(w)===45?(Q=sl,w++):(Q=r,we===0&&ve(ol)),Q===r&&(t.charCodeAt(w)===43?(Q=al,w++):(Q=r,we===0&&ve(qo))),Q===r&&(Q=null),Q!==r){if(k=[],De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($)),N!==r)for(;N!==r;)k.push(N),De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($));else k=r;k!==r?(Re=C,Q=iE(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;if(C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=JQ(Q)),C=Q,C===r&&(C=w,Q=zf(),Q!==r&&(Re=C,Q=ll(Q)),C=Q,C===r)))if(C=w,t.charCodeAt(w)===40?(Q=W,w++):(Q=r,we===0&&ve(X)),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();if(k!==r)if(N=iO(),N!==r){for(Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();Z!==r?(t.charCodeAt(w)===41?(Ee=F,w++):(Ee=r,we===0&&ve(D)),Ee!==r?(Re=C,Q=WQ(N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r}return C}function XQ(){var C,Q,k,N,Z,Ee,ot,ut;if(C=w,Q=_Q(),Q!==r){for(k=[],N=w,Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();if(Z!==r)if(t.charCodeAt(w)===42?(Ee=nE,w++):(Ee=r,we===0&&ve(Gf)),Ee===r&&(t.charCodeAt(w)===47?(Ee=_c,w++):(Ee=r,we===0&&ve(jf))),Ee!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=_Q(),ut!==r?(Re=N,Z=sE(Q,Ee,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r;for(;N!==r;){for(k.push(N),N=w,Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();if(Z!==r)if(t.charCodeAt(w)===42?(Ee=nE,w++):(Ee=r,we===0&&ve(Gf)),Ee===r&&(t.charCodeAt(w)===47?(Ee=_c,w++):(Ee=r,we===0&&ve(jf))),Ee!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=_Q(),ut!==r?(Re=N,Z=sE(Q,Ee,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r}k!==r?(Re=C,Q=cl(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;return C}function iO(){var C,Q,k,N,Z,Ee,ot,ut;if(C=w,Q=XQ(),Q!==r){for(k=[],N=w,Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();if(Z!==r)if(t.charCodeAt(w)===43?(Ee=al,w++):(Ee=r,we===0&&ve(qo)),Ee===r&&(t.charCodeAt(w)===45?(Ee=sl,w++):(Ee=r,we===0&&ve(ol))),Ee!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=XQ(),ut!==r?(Re=N,Z=oE(Q,Ee,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r;for(;N!==r;){for(k.push(N),N=w,Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();if(Z!==r)if(t.charCodeAt(w)===43?(Ee=al,w++):(Ee=r,we===0&&ve(qo)),Ee===r&&(t.charCodeAt(w)===45?(Ee=sl,w++):(Ee=r,we===0&&ve(ol))),Ee!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=XQ(),ut!==r?(Re=N,Z=oE(Q,Ee,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r}k!==r?(Re=C,Q=cl(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;return C}function nO(){var C,Q,k,N,Z,Ee;if(C=w,t.substr(w,3)===Yf?(Q=Yf,w+=3):(Q=r,we===0&&ve(Xc)),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();if(k!==r)if(N=iO(),N!==r){for(Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();Z!==r?(t.substr(w,2)===xr?(Ee=xr,w+=2):(Ee=r,we===0&&ve(KM)),Ee!==r?(Re=C,Q=Jo(N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;return C}function sO(){var C,Q,k,N;return C=w,t.substr(w,2)===Zs?(Q=Zs,w+=2):(Q=r,we===0&&ve(aE)),Q!==r?(k=Jf(),k!==r?(t.charCodeAt(w)===41?(N=F,w++):(N=r,we===0&&ve(D)),N!==r?(Re=C,Q=Zc(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function ZQ(){var C,Q,k,N,Z,Ee;return C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.substr(w,2)===le?(N=le,w+=2):(N=r,we===0&&ve(xe)),N!==r?(Z=Sfe(),Z!==r?(t.charCodeAt(w)===125?(Ee=Pe,w++):(Ee=r,we===0&&ve(qe)),Ee!==r?(Re=C,Q=Qe(k,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.substr(w,3)===Ge?(N=Ge,w+=3):(N=r,we===0&&ve(ct)),N!==r?(Re=C,Q=sr(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.charCodeAt(w)===125?(N=Pe,w++):(N=r,we===0&&ve(qe)),N!==r?(Re=C,Q=Wo(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.charCodeAt(w)===36?(Q=Afe,w++):(Q=r,we===0&&ve(lfe)),Q!==r?(k=zf(),k!==r?(Re=C,Q=Wo(k),C=Q):(w=C,C=r)):(w=C,C=r)))),C}function Lfe(){var C,Q,k;return C=w,Q=Tfe(),Q!==r?(Re=w,k=cfe(Q),k?k=void 0:k=r,k!==r?(Re=C,Q=ufe(Q),C=Q):(w=C,C=r)):(w=C,C=r),C}function Tfe(){var C,Q,k,N,Z;if(C=w,Q=[],k=w,N=w,we++,Z=AO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k!==r)for(;k!==r;)Q.push(k),k=w,N=w,we++,Z=AO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r);else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function oO(){var C,Q,k;if(C=w,Q=[],UM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(HM)),k!==r)for(;k!==r;)Q.push(k),UM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(HM));else Q=r;return Q!==r&&(Re=C,Q=GM()),C=Q,C}function zf(){var C,Q,k;if(C=w,Q=[],jM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(YM)),k!==r)for(;k!==r;)Q.push(k),jM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(YM));else Q=r;return Q!==r&&(Re=C,Q=GM()),C=Q,C}function aO(){var C;return gfe.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(ffe)),C}function AO(){var C;return hfe.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(pfe)),C}function ke(){var C,Q;if(C=[],qM.test(t.charAt(w))?(Q=t.charAt(w),w++):(Q=r,we===0&&ve(JM)),Q!==r)for(;Q!==r;)C.push(Q),qM.test(t.charAt(w))?(Q=t.charAt(w),w++):(Q=r,we===0&&ve(JM));else C=r;return C}if(lE=n(),lE!==r&&w===t.length)return lE;throw lE!==r&&w{"use strict";function Eke(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Xl(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Xl)}Eke(Xl,Error);Xl.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=B,L=[]),L.push($))}function qe($,G){return new Xl($,null,null,G)}function re($,G,Ce){return new Xl(Xl.buildMessage($,G),$,G,Ce)}function se(){var $,G,Ce,ee;return $=B,G=be(),G!==r?(t.charCodeAt(B)===47?(Ce=s,B++):(Ce=r,K===0&&Pe(o)),Ce!==r?(ee=be(),ee!==r?(b=$,G=a(G,ee),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=be(),G!==r&&(b=$,G=l(G)),$=G),$}function be(){var $,G,Ce,ee;return $=B,G=ae(),G!==r?(t.charCodeAt(B)===64?(Ce=c,B++):(Ce=r,K===0&&Pe(u)),Ce!==r?(ee=De(),ee!==r?(b=$,G=g(G,ee),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=ae(),G!==r&&(b=$,G=f(G)),$=G),$}function ae(){var $,G,Ce,ee,Ue;return $=B,t.charCodeAt(B)===64?(G=c,B++):(G=r,K===0&&Pe(u)),G!==r?(Ce=Ae(),Ce!==r?(t.charCodeAt(B)===47?(ee=s,B++):(ee=r,K===0&&Pe(o)),ee!==r?(Ue=Ae(),Ue!==r?(b=$,G=h(),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=Ae(),G!==r&&(b=$,G=h()),$=G),$}function Ae(){var $,G,Ce;if($=B,G=[],p.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(d)),Ce!==r)for(;Ce!==r;)G.push(Ce),p.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(d));else G=r;return G!==r&&(b=$,G=h()),$=G,$}function De(){var $,G,Ce;if($=B,G=[],m.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(I)),Ce!==r)for(;Ce!==r;)G.push(Ce),m.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(I));else G=r;return G!==r&&(b=$,G=h()),$=G,$}if(J=n(),J!==r&&B===t.length)return J;throw J!==r&&B{"use strict";function F4(t){return typeof t=="undefined"||t===null}function yke(t){return typeof t=="object"&&t!==null}function wke(t){return Array.isArray(t)?t:F4(t)?[]:[t]}function Bke(t,e){var r,i,n,s;if(e)for(s=Object.keys(e),r=0,i=s.length;r{"use strict";function Lp(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Lp.prototype=Object.create(Error.prototype);Lp.prototype.constructor=Lp;Lp.prototype.toString=function(e){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!e&&this.mark&&(r+=" "+this.mark.toString()),r};N4.exports=Lp});var M4=E((Vot,L4)=>{"use strict";var T4=$l();function kP(t,e,r,i,n){this.name=t,this.buffer=e,this.position=r,this.line=i,this.column=n}kP.prototype.getSnippet=function(e,r){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,r=r||75,i="",n=this.position;n>0&&`\0\r -\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>r/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;or/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),T4.repeat(" ",e)+i+a+s+` -`+T4.repeat(" ",e+this.position-n+i.length)+"^"};kP.prototype.toString=function(e){var r,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(r=this.getSnippet(),r&&(i+=`: -`+r)),i};L4.exports=kP});var Xr=E((_ot,O4)=>{"use strict";var K4=ng(),vke=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Ske=["scalar","sequence","mapping"];function xke(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(i){e[String(i)]=r})}),e}function kke(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(vke.indexOf(r)===-1)throw new K4('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=xke(e.styleAliases||null),Ske.indexOf(this.kind)===-1)throw new K4('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}O4.exports=kke});var ec=E((Xot,U4)=>{"use strict";var H4=$l(),hw=ng(),Pke=Xr();function PP(t,e,r){var i=[];return t.include.forEach(function(n){r=PP(n,e,r)}),t[e].forEach(function(n){r.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),r.push(n)}),r.filter(function(n,s){return i.indexOf(s)===-1})}function Dke(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function i(n){t[n.kind][n.tag]=t.fallback[n.tag]=n}for(e=0,r=arguments.length;e{"use strict";var Rke=Xr();G4.exports=new Rke("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}})});var q4=E(($ot,Y4)=>{"use strict";var Fke=Xr();Y4.exports=new Fke("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}})});var W4=E((eat,J4)=>{"use strict";var Nke=Xr();J4.exports=new Nke("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}})});var pw=E((tat,z4)=>{"use strict";var Lke=ec();z4.exports=new Lke({explicit:[j4(),q4(),W4()]})});var _4=E((rat,V4)=>{"use strict";var Tke=Xr();function Mke(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~"||e===4&&(t==="null"||t==="Null"||t==="NULL")}function Oke(){return null}function Kke(t){return t===null}V4.exports=new Tke("tag:yaml.org,2002:null",{kind:"scalar",resolve:Mke,construct:Oke,predicate:Kke,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var Z4=E((iat,X4)=>{"use strict";var Uke=Xr();function Hke(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="true"||t==="True"||t==="TRUE")||e===5&&(t==="false"||t==="False"||t==="FALSE")}function Gke(t){return t==="true"||t==="True"||t==="TRUE"}function jke(t){return Object.prototype.toString.call(t)==="[object Boolean]"}X4.exports=new Uke("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Hke,construct:Gke,predicate:jke,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})});var ez=E((nat,$4)=>{"use strict";var Yke=$l(),qke=Xr();function Jke(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function Wke(t){return 48<=t&&t<=55}function zke(t){return 48<=t&&t<=57}function Vke(t){if(t===null)return!1;var e=t.length,r=0,i=!1,n;if(!e)return!1;if(n=t[r],(n==="-"||n==="+")&&(n=t[++r]),n==="0"){if(r+1===e)return!0;if(n=t[++r],n==="b"){for(r++;r=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0"+t.toString(8):"-0"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var iz=E((sat,tz)=>{"use strict";var rz=$l(),Zke=Xr(),$ke=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function ePe(t){return!(t===null||!$ke.test(t)||t[t.length-1]==="_")}function tPe(t){var e,r,i,n;return e=t.replace(/_/g,"").toLowerCase(),r=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),r*e):r*parseFloat(e,10)}var rPe=/^[-+]?[0-9]+e/;function iPe(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(rz.isNegativeZero(t))return"-0.0";return r=t.toString(10),rPe.test(r)?r.replace("e",".e"):r}function nPe(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!=0||rz.isNegativeZero(t))}tz.exports=new Zke("tag:yaml.org,2002:float",{kind:"scalar",resolve:ePe,construct:tPe,predicate:nPe,represent:iPe,defaultStyle:"lowercase"})});var DP=E((oat,nz)=>{"use strict";var sPe=ec();nz.exports=new sPe({include:[pw()],implicit:[_4(),Z4(),ez(),iz()]})});var RP=E((aat,sz)=>{"use strict";var oPe=ec();sz.exports=new oPe({include:[DP()]})});var lz=E((Aat,oz)=>{"use strict";var aPe=Xr(),az=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Az=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function APe(t){return t===null?!1:az.exec(t)!==null||Az.exec(t)!==null}function lPe(t){var e,r,i,n,s,o,a,l=0,c=null,u,g,f;if(e=az.exec(t),e===null&&(e=Az.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(r,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(r,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function cPe(t){return t.toISOString()}oz.exports=new aPe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:APe,construct:lPe,instanceOf:Date,represent:cPe})});var uz=E((lat,cz)=>{"use strict";var uPe=Xr();function gPe(t){return t==="<<"||t===null}cz.exports=new uPe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:gPe})});var hz=E((cat,gz)=>{"use strict";var tc;try{fz=require,tc=fz("buffer").Buffer}catch(t){}var fz,fPe=Xr(),FP=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function hPe(t){if(t===null)return!1;var e,r,i=0,n=t.length,s=FP;for(r=0;r64)){if(e<0)return!1;i+=6}return i%8==0}function pPe(t){var e,r,i=t.replace(/[\r\n=]/g,""),n=i.length,s=FP,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return r=n%4*6,r===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):r===18?(a.push(o>>10&255),a.push(o>>2&255)):r===12&&a.push(o>>4&255),tc?tc.from?tc.from(a):new tc(a):a}function dPe(t){var e="",r=0,i,n,s=t.length,o=FP;for(i=0;i>18&63],e+=o[r>>12&63],e+=o[r>>6&63],e+=o[r&63]),r=(r<<8)+t[i];return n=s%3,n===0?(e+=o[r>>18&63],e+=o[r>>12&63],e+=o[r>>6&63],e+=o[r&63]):n===2?(e+=o[r>>10&63],e+=o[r>>4&63],e+=o[r<<2&63],e+=o[64]):n===1&&(e+=o[r>>2&63],e+=o[r<<4&63],e+=o[64],e+=o[64]),e}function CPe(t){return tc&&tc.isBuffer(t)}gz.exports=new fPe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:hPe,construct:pPe,predicate:CPe,represent:dPe})});var dz=E((uat,pz)=>{"use strict";var mPe=Xr(),EPe=Object.prototype.hasOwnProperty,IPe=Object.prototype.toString;function yPe(t){if(t===null)return!0;var e=[],r,i,n,s,o,a=t;for(r=0,i=a.length;r{"use strict";var BPe=Xr(),QPe=Object.prototype.toString;function bPe(t){if(t===null)return!0;var e,r,i,n,s,o=t;for(s=new Array(o.length),e=0,r=o.length;e{"use strict";var SPe=Xr(),xPe=Object.prototype.hasOwnProperty;function kPe(t){if(t===null)return!0;var e,r=t;for(e in r)if(xPe.call(r,e)&&r[e]!==null)return!1;return!0}function PPe(t){return t!==null?t:{}}Ez.exports=new SPe("tag:yaml.org,2002:set",{kind:"mapping",resolve:kPe,construct:PPe})});var og=E((hat,yz)=>{"use strict";var DPe=ec();yz.exports=new DPe({include:[RP()],implicit:[lz(),uz()],explicit:[hz(),dz(),mz(),Iz()]})});var Bz=E((pat,wz)=>{"use strict";var RPe=Xr();function FPe(){return!0}function NPe(){}function LPe(){return""}function TPe(t){return typeof t=="undefined"}wz.exports=new RPe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:FPe,construct:NPe,predicate:TPe,represent:LPe})});var bz=E((dat,Qz)=>{"use strict";var MPe=Xr();function OPe(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)$/.exec(t),i="";return!(e[0]==="/"&&(r&&(i=r[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function KPe(t){var e=t,r=/\/([gim]*)$/.exec(t),i="";return e[0]==="/"&&(r&&(i=r[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function UPe(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function HPe(t){return Object.prototype.toString.call(t)==="[object RegExp]"}Qz.exports=new MPe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:OPe,construct:KPe,predicate:HPe,represent:UPe})});var xz=E((Cat,vz)=>{"use strict";var dw;try{Sz=require,dw=Sz("esprima")}catch(t){typeof window!="undefined"&&(dw=window.esprima)}var Sz,GPe=Xr();function jPe(t){if(t===null)return!1;try{var e="("+t+")",r=dw.parse(e,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch(i){return!1}}function YPe(t){var e="("+t+")",r=dw.parse(e,{range:!0}),i=[],n;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function qPe(t){return t.toString()}function JPe(t){return Object.prototype.toString.call(t)==="[object Function]"}vz.exports=new GPe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:jPe,construct:YPe,predicate:JPe,represent:qPe})});var Tp=E((mat,kz)=>{"use strict";var Pz=ec();kz.exports=Pz.DEFAULT=new Pz({include:[og()],explicit:[Bz(),bz(),xz()]})});var Vz=E((Eat,Mp)=>{"use strict";var Ba=$l(),Dz=ng(),WPe=M4(),Rz=og(),zPe=Tp(),QA=Object.prototype.hasOwnProperty,Cw=1,Fz=2,Nz=3,mw=4,NP=1,VPe=2,Lz=3,_Pe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,XPe=/[\x85\u2028\u2029]/,ZPe=/[,\[\]\{\}]/,Tz=/^(?:!|!!|![a-z\-]+!)$/i,Mz=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Oz(t){return Object.prototype.toString.call(t)}function wo(t){return t===10||t===13}function rc(t){return t===9||t===32}function yn(t){return t===9||t===32||t===10||t===13}function ag(t){return t===44||t===91||t===93||t===123||t===125}function $Pe(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function eDe(t){return t===120?2:t===117?4:t===85?8:0}function tDe(t){return 48<=t&&t<=57?t-48:-1}function Kz(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?` -`:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"\x85":t===95?"\xA0":t===76?"\u2028":t===80?"\u2029":""}function rDe(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var Uz=new Array(256),Hz=new Array(256);for(var Ag=0;Ag<256;Ag++)Uz[Ag]=Kz(Ag)?1:0,Hz[Ag]=Kz(Ag);function iDe(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||zPe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function Gz(t,e){return new Dz(e,new WPe(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function st(t,e){throw Gz(t,e)}function Ew(t,e){t.onWarning&&t.onWarning.call(null,Gz(t,e))}var jz={YAML:function(e,r,i){var n,s,o;e.version!==null&&st(e,"duplication of %YAML directive"),i.length!==1&&st(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&st(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&&st(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&Ew(e,"unsupported YAML version of the document")},TAG:function(e,r,i){var n,s;i.length!==2&&st(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],Tz.test(n)||st(e,"ill-formed tag handle (first argument) of the TAG directive"),QA.call(e.tagMap,n)&&st(e,'there is a previously declared suffix for "'+n+'" tag handle'),Mz.test(s)||st(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function bA(t,e,r,i){var n,s,o,a;if(e1&&(t.result+=Ba.repeat(` -`,e-1))}function nDe(t,e,r){var i,n,s,o,a,l,c,u,g=t.kind,f=t.result,h;if(h=t.input.charCodeAt(t.position),yn(h)||ag(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=t.input.charCodeAt(t.position+1),yn(n)||r&&ag(n)))return!1;for(t.kind="scalar",t.result="",s=o=t.position,a=!1;h!==0;){if(h===58){if(n=t.input.charCodeAt(t.position+1),yn(n)||r&&ag(n))break}else if(h===35){if(i=t.input.charCodeAt(t.position-1),yn(i))break}else{if(t.position===t.lineStart&&Iw(t)||r&&ag(h))break;if(wo(h))if(l=t.line,c=t.lineStart,u=t.lineIndent,jr(t,!1,-1),t.lineIndent>=e){a=!0,h=t.input.charCodeAt(t.position);continue}else{t.position=o,t.line=l,t.lineStart=c,t.lineIndent=u;break}}a&&(bA(t,s,o,!1),TP(t,t.line-l),s=o=t.position,a=!1),rc(h)||(o=t.position+1),h=t.input.charCodeAt(++t.position)}return bA(t,s,o,!1),t.result?!0:(t.kind=g,t.result=f,!1)}function sDe(t,e){var r,i,n;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,i=n=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(bA(t,i,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)i=t.position,t.position++,n=t.position;else return!0;else wo(r)?(bA(t,i,n,!0),TP(t,jr(t,!1,e)),i=n=t.position):t.position===t.lineStart&&Iw(t)?st(t,"unexpected end of the document within a single quoted scalar"):(t.position++,n=t.position);st(t,"unexpected end of the stream within a single quoted scalar")}function oDe(t,e){var r,i,n,s,o,a;if(a=t.input.charCodeAt(t.position),a!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=i=t.position;(a=t.input.charCodeAt(t.position))!==0;){if(a===34)return bA(t,r,t.position,!0),t.position++,!0;if(a===92){if(bA(t,r,t.position,!0),a=t.input.charCodeAt(++t.position),wo(a))jr(t,!1,e);else if(a<256&&Uz[a])t.result+=Hz[a],t.position++;else if((o=eDe(a))>0){for(n=o,s=0;n>0;n--)a=t.input.charCodeAt(++t.position),(o=$Pe(a))>=0?s=(s<<4)+o:st(t,"expected hexadecimal character");t.result+=rDe(s),t.position++}else st(t,"unknown escape sequence");r=i=t.position}else wo(a)?(bA(t,r,i,!0),TP(t,jr(t,!1,e)),r=i=t.position):t.position===t.lineStart&&Iw(t)?st(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}st(t,"unexpected end of the stream within a double quoted scalar")}function aDe(t,e){var r=!0,i,n=t.tag,s,o=t.anchor,a,l,c,u,g,f={},h,p,d,m;if(m=t.input.charCodeAt(t.position),m===91)l=93,g=!1,s=[];else if(m===123)l=125,g=!0,s={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=s),m=t.input.charCodeAt(++t.position);m!==0;){if(jr(t,!0,e),m=t.input.charCodeAt(t.position),m===l)return t.position++,t.tag=n,t.anchor=o,t.kind=g?"mapping":"sequence",t.result=s,!0;r||st(t,"missed comma between flow collection entries"),p=h=d=null,c=u=!1,m===63&&(a=t.input.charCodeAt(t.position+1),yn(a)&&(c=u=!0,t.position++,jr(t,!0,e))),i=t.line,cg(t,e,Cw,!1,!0),p=t.tag,h=t.result,jr(t,!0,e),m=t.input.charCodeAt(t.position),(u||t.line===i)&&m===58&&(c=!0,m=t.input.charCodeAt(++t.position),jr(t,!0,e),cg(t,e,Cw,!1,!0),d=t.result),g?lg(t,s,f,p,h,d):c?s.push(lg(t,null,f,p,h,d)):s.push(h),jr(t,!0,e),m=t.input.charCodeAt(t.position),m===44?(r=!0,m=t.input.charCodeAt(++t.position)):r=!1}st(t,"unexpected end of the stream within a flow collection")}function ADe(t,e){var r,i,n=NP,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=t.input.charCodeAt(t.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(t.kind="scalar",t.result="";g!==0;)if(g=t.input.charCodeAt(++t.position),g===43||g===45)NP===n?n=g===43?Lz:VPe:st(t,"repeat of a chomping mode identifier");else if((u=tDe(g))>=0)u===0?st(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?st(t,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(rc(g)){do g=t.input.charCodeAt(++t.position);while(rc(g));if(g===35)do g=t.input.charCodeAt(++t.position);while(!wo(g)&&g!==0)}for(;g!==0;){for(LP(t),t.lineIndent=0,g=t.input.charCodeAt(t.position);(!o||t.lineIndenta&&(a=t.lineIndent),wo(g)){l++;continue}if(t.lineIndente)&&l!==0)st(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(cg(t,e,mw,!0,n)&&(p?f=t.result:h=t.result),p||(lg(t,c,u,g,f,h,s,o),g=f=h=null),jr(t,!0,-1),m=t.input.charCodeAt(t.position)),t.lineIndent>e&&m!==0)st(t,"bad indentation of a mapping entry");else if(t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),g=0,f=t.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+t.kind+'"'),h.resolve(t.result)?(t.result=h.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):st(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):st(t,"unknown tag !<"+t.tag+">");return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||u}function fDe(t){var e=t.position,r,i,n,s=!1,o;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(o=t.input.charCodeAt(t.position))!==0&&(jr(t,!0,-1),o=t.input.charCodeAt(t.position),!(t.lineIndent>0||o!==37));){for(s=!0,o=t.input.charCodeAt(++t.position),r=t.position;o!==0&&!yn(o);)o=t.input.charCodeAt(++t.position);for(i=t.input.slice(r,t.position),n=[],i.length<1&&st(t,"directive name must not be less than one character in length");o!==0;){for(;rc(o);)o=t.input.charCodeAt(++t.position);if(o===35){do o=t.input.charCodeAt(++t.position);while(o!==0&&!wo(o));break}if(wo(o))break;for(r=t.position;o!==0&&!yn(o);)o=t.input.charCodeAt(++t.position);n.push(t.input.slice(r,t.position))}o!==0&&LP(t),QA.call(jz,i)?jz[i](t,i,n):Ew(t,'unknown document directive "'+i+'"')}if(jr(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,jr(t,!0,-1)):s&&st(t,"directives end mark is expected"),cg(t,t.lineIndent-1,mw,!1,!0),jr(t,!0,-1),t.checkLineBreaks&&XPe.test(t.input.slice(e,t.position))&&Ew(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Iw(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,jr(t,!0,-1));return}if(t.position{"use strict";var Op=$l(),Kp=ng(),dDe=Tp(),CDe=og(),_z=Object.prototype.toString,Xz=Object.prototype.hasOwnProperty,mDe=9,Up=10,EDe=13,IDe=32,yDe=33,wDe=34,Zz=35,BDe=37,QDe=38,bDe=39,vDe=42,$z=44,SDe=45,e5=58,xDe=61,kDe=62,PDe=63,DDe=64,t5=91,r5=93,RDe=96,i5=123,FDe=124,n5=125,Ri={};Ri[0]="\\0";Ri[7]="\\a";Ri[8]="\\b";Ri[9]="\\t";Ri[10]="\\n";Ri[11]="\\v";Ri[12]="\\f";Ri[13]="\\r";Ri[27]="\\e";Ri[34]='\\"';Ri[92]="\\\\";Ri[133]="\\N";Ri[160]="\\_";Ri[8232]="\\L";Ri[8233]="\\P";var NDe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function LDe(t,e){var r,i,n,s,o,a,l;if(e===null)return{};for(r={},i=Object.keys(e),n=0,s=i.length;n0?t.charCodeAt(s-1):null,f=f&&a5(o,a)}else{for(s=0;si&&t[g+1]!==" ",g=s);else if(!ug(o))return yw;a=s>0?t.charCodeAt(s-1):null,f=f&&a5(o,a)}c=c||u&&s-g-1>i&&t[g+1]!==" "}return!l&&!c?f&&!n(t)?l5:c5:r>9&&A5(t)?yw:c?g5:u5}function jDe(t,e,r,i){t.dump=function(){if(e.length===0)return"''";if(!t.noCompatMode&&NDe.indexOf(e)!==-1)return"'"+e+"'";var n=t.indent*Math.max(1,r),s=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-n),o=i||t.flowLevel>-1&&r>=t.flowLevel;function a(l){return MDe(t,l)}switch(UDe(e,o,t.indent,s,a)){case l5:return e;case c5:return"'"+e.replace(/'/g,"''")+"'";case u5:return"|"+f5(e,t.indent)+h5(o5(e,n));case g5:return">"+f5(e,t.indent)+h5(o5(HDe(e,s),n));case yw:return'"'+GDe(e,s)+'"';default:throw new Kp("impossible error: invalid scalar style")}}()}function f5(t,e){var r=A5(t)?String(e):"",i=t[t.length-1]===` -`,n=i&&(t[t.length-2]===` -`||t===` -`),s=n?"+":i?"":"-";return r+s+` -`}function h5(t){return t[t.length-1]===` -`?t.slice(0,-1):t}function HDe(t,e){for(var r=/(\n+)([^\n]*)/g,i=function(){var c=t.indexOf(` -`);return c=c!==-1?c:t.length,r.lastIndex=c,p5(t.slice(0,c),e)}(),n=t[0]===` -`||t[0]===" ",s,o;o=r.exec(t);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` -`:"")+p5(l,e),n=s}return i}function p5(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=r.exec(t);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` -`+t.slice(n,s),n=s+1),o=a;return l+=` -`,t.length-n>e&&o>n?l+=t.slice(n,o)+` -`+t.slice(o+1):l+=t.slice(n),l.slice(1)}function GDe(t){for(var e="",r,i,n,s=0;s=55296&&r<=56319&&(i=t.charCodeAt(s+1),i>=56320&&i<=57343)){e+=s5((r-55296)*1024+i-56320+65536),s++;continue}n=Ri[r],e+=!n&&ug(r)?t[s]:n||s5(r)}return e}function YDe(t,e,r){var i="",n=t.tag,s,o;for(s=0,o=r.length;s1024&&(u+="? "),u+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),!!ic(t,e,c,!1,!1)&&(u+=t.dump,i+=u));t.tag=n,t.dump="{"+i+"}"}function WDe(t,e,r,i){var n="",s=t.tag,o=Object.keys(r),a,l,c,u,g,f;if(t.sortKeys===!0)o.sort();else if(typeof t.sortKeys=="function")o.sort(t.sortKeys);else if(t.sortKeys)throw new Kp("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(t.dump&&Up===t.dump.charCodeAt(0)?f+="?":f+="? "),f+=t.dump,g&&(f+=OP(t,e)),!!ic(t,e+1,u,!0,g)&&(t.dump&&Up===t.dump.charCodeAt(0)?f+=":":f+=": ",f+=t.dump,n+=f));t.tag=s,t.dump=n||"{}"}function d5(t,e,r){var i,n,s,o,a,l;for(n=r?t.explicitTypes:t.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');t.dump=i}return!0}return!1}function ic(t,e,r,i,n,s){t.tag=null,t.dump=r,d5(t,r,!1)||d5(t,r,!0);var o=_z.call(t.dump);i&&(i=t.flowLevel<0||t.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=t.duplicates.indexOf(r),c=l!==-1),(t.tag!==null&&t.tag!=="?"||c||t.indent!==2&&e>0)&&(n=!1),c&&t.usedDuplicates[l])t.dump="*ref_"+l;else{if(a&&c&&!t.usedDuplicates[l]&&(t.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(t.dump).length!==0?(WDe(t,e,t.dump,n),c&&(t.dump="&ref_"+l+t.dump)):(JDe(t,e,t.dump),c&&(t.dump="&ref_"+l+" "+t.dump));else if(o==="[object Array]"){var u=t.noArrayIndent&&e>0?e-1:e;i&&t.dump.length!==0?(qDe(t,u,t.dump,n),c&&(t.dump="&ref_"+l+t.dump)):(YDe(t,u,t.dump),c&&(t.dump="&ref_"+l+" "+t.dump))}else if(o==="[object String]")t.tag!=="?"&&jDe(t,t.dump,e,s);else{if(t.skipInvalid)return!1;throw new Kp("unacceptable kind of an object to dump "+o)}t.tag!==null&&t.tag!=="?"&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function zDe(t,e){var r=[],i=[],n,s;for(UP(t,r,i),n=0,s=i.length;n{"use strict";var ww=Vz(),E5=m5();function Bw(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}Qr.exports.Type=Xr();Qr.exports.Schema=ec();Qr.exports.FAILSAFE_SCHEMA=pw();Qr.exports.JSON_SCHEMA=DP();Qr.exports.CORE_SCHEMA=RP();Qr.exports.DEFAULT_SAFE_SCHEMA=og();Qr.exports.DEFAULT_FULL_SCHEMA=Tp();Qr.exports.load=ww.load;Qr.exports.loadAll=ww.loadAll;Qr.exports.safeLoad=ww.safeLoad;Qr.exports.safeLoadAll=ww.safeLoadAll;Qr.exports.dump=E5.dump;Qr.exports.safeDump=E5.safeDump;Qr.exports.YAMLException=ng();Qr.exports.MINIMAL_SCHEMA=pw();Qr.exports.SAFE_SCHEMA=og();Qr.exports.DEFAULT_SCHEMA=Tp();Qr.exports.scan=Bw("scan");Qr.exports.parse=Bw("parse");Qr.exports.compose=Bw("compose");Qr.exports.addConstructor=Bw("addConstructor")});var w5=E((wat,y5)=>{"use strict";var _De=I5();y5.exports=_De});var Q5=E((Bat,B5)=>{"use strict";function XDe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function nc(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,nc)}XDe(nc,Error);nc.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[xe]:le})))},H=function(x){return x},L=function(x){return x},K=Yo("correct indentation"),J=" ",ne=fr(" ",!1),q=function(x){return x.length===Zc*aE},A=function(x){return x.length===(Zc+1)*aE},V=function(){return Zc++,!0},W=function(){return Zc--,!0},X=function(){return Xm()},F=Yo("pseudostring"),D=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,he=Bs(["\r",` -`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),pe=/^[^\r\n\t ,\][{}:#"']/,Ne=Bs(["\r",` -`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Pe=function(){return Xm().replace(/^ *| *$/g,"")},qe="--",re=fr("--",!1),se=/^[a-zA-Z\/0-9]/,be=Bs([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),ae=/^[^\r\n\t :,]/,Ae=Bs(["\r",` -`," "," ",":",","],!0,!1),De="null",$=fr("null",!1),G=function(){return null},Ce="true",ee=fr("true",!1),Ue=function(){return!0},Oe="false",vt=fr("false",!1),dt=function(){return!1},ri=Yo("string"),ii='"',an=fr('"',!1),yr=function(){return""},Ki=function(x){return x},Qi=function(x){return x.join("")},Go=/^[^"\\\0-\x1F\x7F]/,wr=Bs(['"',"\\",["\0",""],"\x7F"],!0,!1),Ui='\\"',ws=fr('\\"',!1),Tf=function(){return'"'},Mf="\\\\",Rm=fr("\\\\",!1),Fm=function(){return"\\"},Nm="\\/",DQ=fr("\\/",!1),RQ=function(){return"/"},Of="\\b",FQ=fr("\\b",!1),NQ=function(){return"\b"},Lm="\\f",LQ=fr("\\f",!1),Va=function(){return"\f"},jo="\\n",Tm=fr("\\n",!1),Mm=function(){return` -`},te="\\r",Om=fr("\\r",!1),Km=function(){return"\r"},il="\\t",Um=fr("\\t",!1),Hm=function(){return" "},Kf="\\u",Gm=fr("\\u",!1),jm=function(x,U,le,xe){return String.fromCharCode(parseInt(`0x${x}${U}${le}${xe}`))},TQ=/^[0-9a-fA-F]/,MQ=Bs([["0","9"],["a","f"],["A","F"]],!1,!1),Ym=Yo("blank space"),qm=/^[ \t]/,Jm=Bs([" "," "],!1,!1),Wm=Yo("white space"),zm=/^[ \t\n\r]/,Vm=Bs([" "," ",` -`,"\r"],!1,!1),Uf=`\r -`,OQ=fr(`\r -`,!1),KQ=` -`,_m=fr(` -`,!1),UQ="\r",HQ=fr("\r",!1),O=0,ht=0,Vc=[{line:1,column:1}],xn=0,Hf=[],Ye=0,nl;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function Xm(){return t.substring(ht,O)}function MM(){return _a(ht,O)}function GQ(x,U){throw U=U!==void 0?U:_a(ht,O),eE([Yo(x)],t.substring(ht,O),U)}function OM(x,U){throw U=U!==void 0?U:_a(ht,O),YQ(x,U)}function fr(x,U){return{type:"literal",text:x,ignoreCase:U}}function Bs(x,U,le){return{type:"class",parts:x,inverted:U,ignoreCase:le}}function jQ(){return{type:"any"}}function Zm(){return{type:"end"}}function Yo(x){return{type:"other",description:x}}function $m(x){var U=Vc[x],le;if(U)return U;for(le=x-1;!Vc[le];)le--;for(U=Vc[le],U={line:U.line,column:U.column};lexn&&(xn=O,Hf=[]),Hf.push(x))}function YQ(x,U){return new nc(x,null,null,U)}function eE(x,U,le){return new nc(nc.buildMessage(x,U),x,U,le)}function tE(){var x;return x=ol(),x}function Xa(){var x,U,le;for(x=O,U=[],le=sl();le!==r;)U.push(le),le=sl();return U!==r&&(ht=x,U=s(U)),x=U,x}function sl(){var x,U,le,xe,Qe;return x=O,U=Al(),U!==r?(t.charCodeAt(O)===45?(le=o,O++):(le=r,Ye===0&&et(a)),le!==r?(xe=xr(),xe!==r?(Qe=qo(),Qe!==r?(ht=x,U=l(Qe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x}function ol(){var x,U,le;for(x=O,U=[],le=al();le!==r;)U.push(le),le=al();return U!==r&&(ht=x,U=c(U)),x=U,x}function al(){var x,U,le,xe,Qe,Ge,ct,sr,Wo;if(x=O,U=xr(),U===r&&(U=null),U!==r){if(le=O,t.charCodeAt(O)===35?(xe=u,O++):(xe=r,Ye===0&&et(g)),xe!==r){if(Qe=[],Ge=O,ct=O,Ye++,sr=Zs(),Ye--,sr===r?ct=void 0:(O=ct,ct=r),ct!==r?(t.length>O?(sr=t.charAt(O),O++):(sr=r,Ye===0&&et(f)),sr!==r?(ct=[ct,sr],Ge=ct):(O=Ge,Ge=r)):(O=Ge,Ge=r),Ge!==r)for(;Ge!==r;)Qe.push(Ge),Ge=O,ct=O,Ye++,sr=Zs(),Ye--,sr===r?ct=void 0:(O=ct,ct=r),ct!==r?(t.length>O?(sr=t.charAt(O),O++):(sr=r,Ye===0&&et(f)),sr!==r?(ct=[ct,sr],Ge=ct):(O=Ge,Ge=r)):(O=Ge,Ge=r);else Qe=r;Qe!==r?(xe=[xe,Qe],le=xe):(O=le,le=r)}else O=le,le=r;if(le===r&&(le=null),le!==r){if(xe=[],Qe=Jo(),Qe!==r)for(;Qe!==r;)xe.push(Qe),Qe=Jo();else xe=r;xe!==r?(ht=x,U=h(),x=U):(O=x,x=r)}else O=x,x=r}else O=x,x=r;if(x===r&&(x=O,U=Al(),U!==r?(le=JQ(),le!==r?(xe=xr(),xe===r&&(xe=null),xe!==r?(t.charCodeAt(O)===58?(Qe=p,O++):(Qe=r,Ye===0&&et(d)),Qe!==r?(Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(ct=qo(),ct!==r?(ht=x,U=m(le,ct),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,U=Al(),U!==r?(le=ll(),le!==r?(xe=xr(),xe===r&&(xe=null),xe!==r?(t.charCodeAt(O)===58?(Qe=p,O++):(Qe=r,Ye===0&&et(d)),Qe!==r?(Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(ct=qo(),ct!==r?(ht=x,U=m(le,ct),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r))){if(x=O,U=Al(),U!==r)if(le=ll(),le!==r)if(xe=xr(),xe!==r)if(Qe=nE(),Qe!==r){if(Ge=[],ct=Jo(),ct!==r)for(;ct!==r;)Ge.push(ct),ct=Jo();else Ge=r;Ge!==r?(ht=x,U=m(le,Qe),x=U):(O=x,x=r)}else O=x,x=r;else O=x,x=r;else O=x,x=r;else O=x,x=r;if(x===r)if(x=O,U=Al(),U!==r)if(le=ll(),le!==r){if(xe=[],Qe=O,Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(t.charCodeAt(O)===44?(ct=I,O++):(ct=r,Ye===0&&et(B)),ct!==r?(sr=xr(),sr===r&&(sr=null),sr!==r?(Wo=ll(),Wo!==r?(ht=Qe,Ge=b(le,Wo),Qe=Ge):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r),Qe!==r)for(;Qe!==r;)xe.push(Qe),Qe=O,Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(t.charCodeAt(O)===44?(ct=I,O++):(ct=r,Ye===0&&et(B)),ct!==r?(sr=xr(),sr===r&&(sr=null),sr!==r?(Wo=ll(),Wo!==r?(ht=Qe,Ge=b(le,Wo),Qe=Ge):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r);else xe=r;xe!==r?(Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(t.charCodeAt(O)===58?(Ge=p,O++):(Ge=r,Ye===0&&et(d)),Ge!==r?(ct=xr(),ct===r&&(ct=null),ct!==r?(sr=qo(),sr!==r?(ht=x,U=R(le,xe,sr),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)}else O=x,x=r;else O=x,x=r}return x}function qo(){var x,U,le,xe,Qe,Ge,ct;if(x=O,U=O,Ye++,le=O,xe=Zs(),xe!==r?(Qe=qQ(),Qe!==r?(t.charCodeAt(O)===45?(Ge=o,O++):(Ge=r,Ye===0&&et(a)),Ge!==r?(ct=xr(),ct!==r?(xe=[xe,Qe,Ge,ct],le=xe):(O=le,le=r)):(O=le,le=r)):(O=le,le=r)):(O=le,le=r),Ye--,le!==r?(O=U,U=void 0):U=r,U!==r?(le=Jo(),le!==r?(xe=rE(),xe!==r?(Qe=Xa(),Qe!==r?(Ge=iE(),Ge!==r?(ht=x,U=H(Qe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,U=Zs(),U!==r?(le=rE(),le!==r?(xe=ol(),xe!==r?(Qe=iE(),Qe!==r?(ht=x,U=H(xe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r))if(x=O,U=WQ(),U!==r){if(le=[],xe=Jo(),xe!==r)for(;xe!==r;)le.push(xe),xe=Jo();else le=r;le!==r?(ht=x,U=L(U),x=U):(O=x,x=r)}else O=x,x=r;return x}function Al(){var x,U,le;for(Ye++,x=O,U=[],t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));le!==r;)U.push(le),t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));return U!==r?(ht=O,le=q(U),le?le=void 0:le=r,le!==r?(U=[U,le],x=U):(O=x,x=r)):(O=x,x=r),Ye--,x===r&&(U=r,Ye===0&&et(K)),x}function qQ(){var x,U,le;for(x=O,U=[],t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));le!==r;)U.push(le),t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));return U!==r?(ht=O,le=A(U),le?le=void 0:le=r,le!==r?(U=[U,le],x=U):(O=x,x=r)):(O=x,x=r),x}function rE(){var x;return ht=O,x=V(),x?x=void 0:x=r,x}function iE(){var x;return ht=O,x=W(),x?x=void 0:x=r,x}function JQ(){var x;return x=cl(),x===r&&(x=Gf()),x}function ll(){var x,U,le;if(x=cl(),x===r){if(x=O,U=[],le=_c(),le!==r)for(;le!==r;)U.push(le),le=_c();else U=r;U!==r&&(ht=x,U=X()),x=U}return x}function WQ(){var x;return x=jf(),x===r&&(x=sE(),x===r&&(x=cl(),x===r&&(x=Gf()))),x}function nE(){var x;return x=jf(),x===r&&(x=cl(),x===r&&(x=_c())),x}function Gf(){var x,U,le,xe,Qe,Ge;if(Ye++,x=O,D.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(he)),U!==r){for(le=[],xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(pe.test(t.charAt(O))?(Ge=t.charAt(O),O++):(Ge=r,Ye===0&&et(Ne)),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);xe!==r;)le.push(xe),xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(pe.test(t.charAt(O))?(Ge=t.charAt(O),O++):(Ge=r,Ye===0&&et(Ne)),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);le!==r?(ht=x,U=Pe(),x=U):(O=x,x=r)}else O=x,x=r;return Ye--,x===r&&(U=r,Ye===0&&et(F)),x}function _c(){var x,U,le,xe,Qe;if(x=O,t.substr(O,2)===qe?(U=qe,O+=2):(U=r,Ye===0&&et(re)),U===r&&(U=null),U!==r)if(se.test(t.charAt(O))?(le=t.charAt(O),O++):(le=r,Ye===0&&et(be)),le!==r){for(xe=[],ae.test(t.charAt(O))?(Qe=t.charAt(O),O++):(Qe=r,Ye===0&&et(Ae));Qe!==r;)xe.push(Qe),ae.test(t.charAt(O))?(Qe=t.charAt(O),O++):(Qe=r,Ye===0&&et(Ae));xe!==r?(ht=x,U=Pe(),x=U):(O=x,x=r)}else O=x,x=r;else O=x,x=r;return x}function jf(){var x,U;return x=O,t.substr(O,4)===De?(U=De,O+=4):(U=r,Ye===0&&et($)),U!==r&&(ht=x,U=G()),x=U,x}function sE(){var x,U;return x=O,t.substr(O,4)===Ce?(U=Ce,O+=4):(U=r,Ye===0&&et(ee)),U!==r&&(ht=x,U=Ue()),x=U,x===r&&(x=O,t.substr(O,5)===Oe?(U=Oe,O+=5):(U=r,Ye===0&&et(vt)),U!==r&&(ht=x,U=dt()),x=U),x}function cl(){var x,U,le,xe;return Ye++,x=O,t.charCodeAt(O)===34?(U=ii,O++):(U=r,Ye===0&&et(an)),U!==r?(t.charCodeAt(O)===34?(le=ii,O++):(le=r,Ye===0&&et(an)),le!==r?(ht=x,U=yr(),x=U):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,t.charCodeAt(O)===34?(U=ii,O++):(U=r,Ye===0&&et(an)),U!==r?(le=oE(),le!==r?(t.charCodeAt(O)===34?(xe=ii,O++):(xe=r,Ye===0&&et(an)),xe!==r?(ht=x,U=Ki(le),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)),Ye--,x===r&&(U=r,Ye===0&&et(ri)),x}function oE(){var x,U,le;if(x=O,U=[],le=Yf(),le!==r)for(;le!==r;)U.push(le),le=Yf();else U=r;return U!==r&&(ht=x,U=Qi(U)),x=U,x}function Yf(){var x,U,le,xe,Qe,Ge;return Go.test(t.charAt(O))?(x=t.charAt(O),O++):(x=r,Ye===0&&et(wr)),x===r&&(x=O,t.substr(O,2)===Ui?(U=Ui,O+=2):(U=r,Ye===0&&et(ws)),U!==r&&(ht=x,U=Tf()),x=U,x===r&&(x=O,t.substr(O,2)===Mf?(U=Mf,O+=2):(U=r,Ye===0&&et(Rm)),U!==r&&(ht=x,U=Fm()),x=U,x===r&&(x=O,t.substr(O,2)===Nm?(U=Nm,O+=2):(U=r,Ye===0&&et(DQ)),U!==r&&(ht=x,U=RQ()),x=U,x===r&&(x=O,t.substr(O,2)===Of?(U=Of,O+=2):(U=r,Ye===0&&et(FQ)),U!==r&&(ht=x,U=NQ()),x=U,x===r&&(x=O,t.substr(O,2)===Lm?(U=Lm,O+=2):(U=r,Ye===0&&et(LQ)),U!==r&&(ht=x,U=Va()),x=U,x===r&&(x=O,t.substr(O,2)===jo?(U=jo,O+=2):(U=r,Ye===0&&et(Tm)),U!==r&&(ht=x,U=Mm()),x=U,x===r&&(x=O,t.substr(O,2)===te?(U=te,O+=2):(U=r,Ye===0&&et(Om)),U!==r&&(ht=x,U=Km()),x=U,x===r&&(x=O,t.substr(O,2)===il?(U=il,O+=2):(U=r,Ye===0&&et(Um)),U!==r&&(ht=x,U=Hm()),x=U,x===r&&(x=O,t.substr(O,2)===Kf?(U=Kf,O+=2):(U=r,Ye===0&&et(Gm)),U!==r?(le=Xc(),le!==r?(xe=Xc(),xe!==r?(Qe=Xc(),Qe!==r?(Ge=Xc(),Ge!==r?(ht=x,U=jm(le,xe,Qe,Ge),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)))))))))),x}function Xc(){var x;return TQ.test(t.charAt(O))?(x=t.charAt(O),O++):(x=r,Ye===0&&et(MQ)),x}function xr(){var x,U;if(Ye++,x=[],qm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Jm)),U!==r)for(;U!==r;)x.push(U),qm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Jm));else x=r;return Ye--,x===r&&(U=r,Ye===0&&et(Ym)),x}function KM(){var x,U;if(Ye++,x=[],zm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Vm)),U!==r)for(;U!==r;)x.push(U),zm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Vm));else x=r;return Ye--,x===r&&(U=r,Ye===0&&et(Wm)),x}function Jo(){var x,U,le,xe,Qe,Ge;if(x=O,U=Zs(),U!==r){for(le=[],xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(Ge=Zs(),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);xe!==r;)le.push(xe),xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(Ge=Zs(),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);le!==r?(U=[U,le],x=U):(O=x,x=r)}else O=x,x=r;return x}function Zs(){var x;return t.substr(O,2)===Uf?(x=Uf,O+=2):(x=r,Ye===0&&et(OQ)),x===r&&(t.charCodeAt(O)===10?(x=KQ,O++):(x=r,Ye===0&&et(_m)),x===r&&(t.charCodeAt(O)===13?(x=UQ,O++):(x=r,Ye===0&&et(HQ)))),x}let aE=2,Zc=0;if(nl=n(),nl!==r&&O===t.length)return nl;throw nl!==r&&O{var fRe=typeof global=="object"&&global&&global.Object===Object&&global;V5.exports=fRe});var Ks=E((Zat,_5)=>{var hRe=WP(),pRe=typeof self=="object"&&self&&self.Object===Object&&self,dRe=hRe||pRe||Function("return this")();_5.exports=dRe});var ac=E(($at,X5)=>{var CRe=Ks(),mRe=CRe.Symbol;X5.exports=mRe});var $5=E((eAt,Z5)=>{function ERe(t,e){for(var r=-1,i=t==null?0:t.length,n=Array(i);++r{var IRe=Array.isArray;e6.exports=IRe});var n6=E((rAt,t6)=>{var r6=ac(),i6=Object.prototype,yRe=i6.hasOwnProperty,wRe=i6.toString,Jp=r6?r6.toStringTag:void 0;function BRe(t){var e=yRe.call(t,Jp),r=t[Jp];try{t[Jp]=void 0;var i=!0}catch(s){}var n=wRe.call(t);return i&&(e?t[Jp]=r:delete t[Jp]),n}t6.exports=BRe});var o6=E((iAt,s6)=>{var QRe=Object.prototype,bRe=QRe.toString;function vRe(t){return bRe.call(t)}s6.exports=vRe});var Ac=E((nAt,a6)=>{var A6=ac(),SRe=n6(),xRe=o6(),kRe="[object Null]",PRe="[object Undefined]",l6=A6?A6.toStringTag:void 0;function DRe(t){return t==null?t===void 0?PRe:kRe:l6&&l6 in Object(t)?SRe(t):xRe(t)}a6.exports=DRe});var Qo=E((sAt,c6)=>{function RRe(t){return t!=null&&typeof t=="object"}c6.exports=RRe});var Nw=E((oAt,u6)=>{var FRe=Ac(),NRe=Qo(),LRe="[object Symbol]";function TRe(t){return typeof t=="symbol"||NRe(t)&&FRe(t)==LRe}u6.exports=TRe});var C6=E((aAt,g6)=>{var f6=ac(),MRe=$5(),ORe=As(),KRe=Nw(),URe=1/0,h6=f6?f6.prototype:void 0,p6=h6?h6.toString:void 0;function d6(t){if(typeof t=="string")return t;if(ORe(t))return MRe(t,d6)+"";if(KRe(t))return p6?p6.call(t):"";var e=t+"";return e=="0"&&1/t==-URe?"-0":e}g6.exports=d6});var gg=E((AAt,m6)=>{var HRe=C6();function GRe(t){return t==null?"":HRe(t)}m6.exports=GRe});var zP=E((lAt,E6)=>{function jRe(t,e,r){var i=-1,n=t.length;e<0&&(e=-e>n?0:n+e),r=r>n?n:r,r<0&&(r+=n),n=e>r?0:r-e>>>0,e>>>=0;for(var s=Array(n);++i{var YRe=zP();function qRe(t,e,r){var i=t.length;return r=r===void 0?i:r,!e&&r>=i?t:YRe(t,e,r)}I6.exports=qRe});var VP=E((uAt,w6)=>{var JRe="\\ud800-\\udfff",WRe="\\u0300-\\u036f",zRe="\\ufe20-\\ufe2f",VRe="\\u20d0-\\u20ff",_Re=WRe+zRe+VRe,XRe="\\ufe0e\\ufe0f",ZRe="\\u200d",$Re=RegExp("["+ZRe+JRe+_Re+XRe+"]");function eFe(t){return $Re.test(t)}w6.exports=eFe});var Q6=E((gAt,B6)=>{function tFe(t){return t.split("")}B6.exports=tFe});var R6=E((fAt,b6)=>{var v6="\\ud800-\\udfff",rFe="\\u0300-\\u036f",iFe="\\ufe20-\\ufe2f",nFe="\\u20d0-\\u20ff",sFe=rFe+iFe+nFe,oFe="\\ufe0e\\ufe0f",aFe="["+v6+"]",_P="["+sFe+"]",XP="\\ud83c[\\udffb-\\udfff]",AFe="(?:"+_P+"|"+XP+")",S6="[^"+v6+"]",x6="(?:\\ud83c[\\udde6-\\uddff]){2}",k6="[\\ud800-\\udbff][\\udc00-\\udfff]",lFe="\\u200d",P6=AFe+"?",D6="["+oFe+"]?",cFe="(?:"+lFe+"(?:"+[S6,x6,k6].join("|")+")"+D6+P6+")*",uFe=D6+P6+cFe,gFe="(?:"+[S6+_P+"?",_P,x6,k6,aFe].join("|")+")",fFe=RegExp(XP+"(?="+XP+")|"+gFe+uFe,"g");function hFe(t){return t.match(fFe)||[]}b6.exports=hFe});var N6=E((hAt,F6)=>{var pFe=Q6(),dFe=VP(),CFe=R6();function mFe(t){return dFe(t)?CFe(t):pFe(t)}F6.exports=mFe});var T6=E((pAt,L6)=>{var EFe=y6(),IFe=VP(),yFe=N6(),wFe=gg();function BFe(t){return function(e){e=wFe(e);var r=IFe(e)?yFe(e):void 0,i=r?r[0]:e.charAt(0),n=r?EFe(r,1).join(""):e.slice(1);return i[t]()+n}}L6.exports=BFe});var O6=E((dAt,M6)=>{var QFe=T6(),bFe=QFe("toUpperCase");M6.exports=bFe});var ZP=E((CAt,K6)=>{var vFe=gg(),SFe=O6();function xFe(t){return SFe(vFe(t).toLowerCase())}K6.exports=xFe});var H6=E((mAt,U6)=>{"use strict";U6.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var Wp=E((EAt,$P)=>{"use strict";var kFe=H6(),G6=t=>{if(t<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],r=0,i=()=>{r--,e.length>0&&e.shift()()},n=(a,l,...c)=>{r++;let u=kFe(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{rnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),o};$P.exports=G6;$P.exports.default=G6});var X6=E((FAt,Mw)=>{function PFe(){var t=0,e=1,r=2,i=3,n=4,s=5,o=6,a=7,l=8,c=9,u=10,g=11,f=12,h=13,p=14,d=15,m=16,I=17,B=0,b=1,R=2,H=3,L=4;function K(A,V){return 55296<=A.charCodeAt(V)&&A.charCodeAt(V)<=56319&&56320<=A.charCodeAt(V+1)&&A.charCodeAt(V+1)<=57343}function J(A,V){V===void 0&&(V=0);var W=A.charCodeAt(V);if(55296<=W&&W<=56319&&V=1){var X=A.charCodeAt(V-1),F=W;return 55296<=X&&X<=56319?(X-55296)*1024+(F-56320)+65536:F}return W}function ne(A,V,W){var X=[A].concat(V).concat([W]),F=X[X.length-2],D=W,he=X.lastIndexOf(p);if(he>1&&X.slice(1,he).every(function(Pe){return Pe==i})&&[i,h,I].indexOf(A)==-1)return R;var pe=X.lastIndexOf(n);if(pe>0&&X.slice(1,pe).every(function(Pe){return Pe==n})&&[f,n].indexOf(F)==-1)return X.filter(function(Pe){return Pe==n}).length%2==1?H:L;if(F==t&&D==e)return B;if(F==r||F==t||F==e)return D==p&&V.every(function(Pe){return Pe==i})?R:b;if(D==r||D==t||D==e)return b;if(F==o&&(D==o||D==a||D==c||D==u))return B;if((F==c||F==a)&&(D==a||D==l))return B;if((F==u||F==l)&&D==l)return B;if(D==i||D==d)return B;if(D==s)return B;if(F==f)return B;var Ne=X.indexOf(i)!=-1?X.lastIndexOf(i)-1:X.length-2;return[h,I].indexOf(X[Ne])!=-1&&X.slice(Ne+1,-1).every(function(Pe){return Pe==i})&&D==p||F==d&&[m,I].indexOf(D)!=-1?B:V.indexOf(n)!=-1?R:F==n&&D==n?B:b}this.nextBreak=function(A,V){if(V===void 0&&(V=0),V<0)return 0;if(V>=A.length-1)return A.length;for(var W=q(J(A,V)),X=[],F=V+1;F{var DFe=X6(),RFe=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,FFe=new DFe;Z6.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let i=r-e,n="",s=0,o=0;for(;t.length>0;){let a=t.match(RFe)||[t,t,void 0],l=FFe.splitGraphemes(a[1]),c=Math.min(e-s,l.length);l=l.slice(c);let u=Math.min(i-o,l.length);n+=l.slice(0,u).join(""),s+=c,o+=u,typeof a[2]!="undefined"&&(n+=a[2]),t=t.slice(a[0].length)}return n}});var fg=E((alt,f9)=>{"use strict";var h9=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]),olt=f9.exports=t=>t?Object.keys(t).map(e=>[h9.has(e)?h9.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var hg=E((Alt,p9)=>{"use strict";var JFe=require("events"),d9=require("stream"),_p=Rh(),C9=require("string_decoder").StringDecoder,va=Symbol("EOF"),Xp=Symbol("maybeEmitEnd"),xA=Symbol("emittedEnd"),Gw=Symbol("emittingEnd"),jw=Symbol("closed"),m9=Symbol("read"),iD=Symbol("flush"),E9=Symbol("flushChunk"),Bn=Symbol("encoding"),Sa=Symbol("decoder"),Yw=Symbol("flowing"),Zp=Symbol("paused"),$p=Symbol("resume"),rn=Symbol("bufferLength"),I9=Symbol("bufferPush"),nD=Symbol("bufferShift"),Ni=Symbol("objectMode"),Li=Symbol("destroyed"),y9=global._MP_NO_ITERATOR_SYMBOLS_!=="1",WFe=y9&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),zFe=y9&&Symbol.iterator||Symbol("iterator not implemented"),w9=t=>t==="end"||t==="finish"||t==="prefinish",VFe=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,_Fe=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t);p9.exports=class B9 extends d9{constructor(e){super();this[Yw]=!1,this[Zp]=!1,this.pipes=new _p,this.buffer=new _p,this[Ni]=e&&e.objectMode||!1,this[Ni]?this[Bn]=null:this[Bn]=e&&e.encoding||null,this[Bn]==="buffer"&&(this[Bn]=null),this[Sa]=this[Bn]?new C9(this[Bn]):null,this[va]=!1,this[xA]=!1,this[Gw]=!1,this[jw]=!1,this.writable=!0,this.readable=!0,this[rn]=0,this[Li]=!1}get bufferLength(){return this[rn]}get encoding(){return this[Bn]}set encoding(e){if(this[Ni])throw new Error("cannot set encoding in objectMode");if(this[Bn]&&e!==this[Bn]&&(this[Sa]&&this[Sa].lastNeed||this[rn]))throw new Error("cannot change encoding");this[Bn]!==e&&(this[Sa]=e?new C9(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[Sa].write(r)))),this[Bn]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Ni]}set objectMode(e){this[Ni]=this[Ni]||!!e}write(e,r,i){if(this[va])throw new Error("write after end");return this[Li]?(this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0):(typeof r=="function"&&(i=r,r="utf8"),r||(r="utf8"),!this[Ni]&&!Buffer.isBuffer(e)&&(_Fe(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):VFe(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),!this.objectMode&&!e.length?(this[rn]!==0&&this.emit("readable"),i&&i(),this.flowing):(typeof e=="string"&&!this[Ni]&&!(r===this[Bn]&&!this[Sa].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[Bn]&&(e=this[Sa].write(e)),this.flowing?(this[rn]!==0&&this[iD](!0),this.emit("data",e)):this[I9](e),this[rn]!==0&&this.emit("readable"),i&&i(),this.flowing))}read(e){if(this[Li])return null;try{return this[rn]===0||e===0||e>this[rn]?null:(this[Ni]&&(e=null),this.buffer.length>1&&!this[Ni]&&(this.encoding?this.buffer=new _p([Array.from(this.buffer).join("")]):this.buffer=new _p([Buffer.concat(Array.from(this.buffer),this[rn])])),this[m9](e||null,this.buffer.head.value))}finally{this[Xp]()}}[m9](e,r){return e===r.length||e===null?this[nD]():(this.buffer.head.value=r.slice(e),r=r.slice(0,e),this[rn]-=e),this.emit("data",r),!this.buffer.length&&!this[va]&&this.emit("drain"),r}end(e,r,i){return typeof e=="function"&&(i=e,e=null),typeof r=="function"&&(i=r,r="utf8"),e&&this.write(e,r),i&&this.once("end",i),this[va]=!0,this.writable=!1,(this.flowing||!this[Zp])&&this[Xp](),this}[$p](){this[Li]||(this[Zp]=!1,this[Yw]=!0,this.emit("resume"),this.buffer.length?this[iD]():this[va]?this[Xp]():this.emit("drain"))}resume(){return this[$p]()}pause(){this[Yw]=!1,this[Zp]=!0}get destroyed(){return this[Li]}get flowing(){return this[Yw]}get paused(){return this[Zp]}[I9](e){return this[Ni]?this[rn]+=1:this[rn]+=e.length,this.buffer.push(e)}[nD](){return this.buffer.length&&(this[Ni]?this[rn]-=1:this[rn]-=this.buffer.head.value.length),this.buffer.shift()}[iD](e){do;while(this[E9](this[nD]()));!e&&!this.buffer.length&&!this[va]&&this.emit("drain")}[E9](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[Li])return;let i=this[xA];r=r||{},e===process.stdout||e===process.stderr?r.end=!1:r.end=r.end!==!1;let n={dest:e,opts:r,ondrain:s=>this[$p]()};return this.pipes.push(n),e.on("drain",n.ondrain),this[$p](),i&&n.opts.end&&n.dest.end(),e}addListener(e,r){return this.on(e,r)}on(e,r){try{return super.on(e,r)}finally{e==="data"&&!this.pipes.length&&!this.flowing?this[$p]():w9(e)&&this[xA]&&(super.emit(e),this.removeAllListeners(e))}}get emittedEnd(){return this[xA]}[Xp](){!this[Gw]&&!this[xA]&&!this[Li]&&this.buffer.length===0&&this[va]&&(this[Gw]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[jw]&&this.emit("close"),this[Gw]=!1)}emit(e,r){if(e!=="error"&&e!=="close"&&e!==Li&&this[Li])return;if(e==="data"){if(!r)return;this.pipes.length&&this.pipes.forEach(n=>n.dest.write(r)===!1&&this.pause())}else if(e==="end"){if(this[xA]===!0)return;this[xA]=!0,this.readable=!1,this[Sa]&&(r=this[Sa].end(),r&&(this.pipes.forEach(n=>n.dest.write(r)),super.emit("data",r))),this.pipes.forEach(n=>{n.dest.removeListener("drain",n.ondrain),n.opts.end&&n.dest.end()})}else if(e==="close"&&(this[jw]=!0,!this[xA]&&!this[Li]))return;let i=new Array(arguments.length);if(i[0]=e,i[1]=r,arguments.length>2)for(let n=2;n{e.push(i),this[Ni]||(e.dataLength+=i.length)}),r.then(()=>e)}concat(){return this[Ni]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[Ni]?Promise.reject(new Error("cannot concat in objectMode")):this[Bn]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Li,()=>r(new Error("stream destroyed"))),this.on("end",()=>e()),this.on("error",i=>r(i))})}[WFe](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[va])return Promise.resolve({done:!0});let i=null,n=null,s=c=>{this.removeListener("data",o),this.removeListener("end",a),n(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",a),this.pause(),i({value:c,done:!!this[va]})},a=()=>{this.removeListener("error",s),this.removeListener("data",o),i({done:!0})},l=()=>s(new Error("stream destroyed"));return new Promise((c,u)=>{n=u,i=c,this.once(Li,l),this.once("error",s),this.once("end",a),this.once("data",o)})}}}[zFe](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Li]?(e?this.emit("error",e):this.emit(Li),this):(this[Li]=!0,this.buffer=new _p,this[rn]=0,typeof this.close=="function"&&!this[jw]&&this.close(),e?this.emit("error",e):this.emit(Li),this)}static isStream(e){return!!e&&(e instanceof B9||e instanceof d9||e instanceof JFe&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var b9=E((llt,Q9)=>{var XFe=require("zlib").constants||{ZLIB_VERNUM:4736};Q9.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:Infinity,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},XFe))});var fD=E(Un=>{"use strict";var sD=require("assert"),kA=require("buffer").Buffer,v9=require("zlib"),uc=Un.constants=b9(),ZFe=hg(),S9=kA.concat,gc=Symbol("_superWrite"),ed=class extends Error{constructor(e){super("zlib: "+e.message);this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},$Fe=Symbol("opts"),td=Symbol("flushFlag"),x9=Symbol("finishFlushFlag"),oD=Symbol("fullFlushFlag"),tr=Symbol("handle"),qw=Symbol("onError"),pg=Symbol("sawError"),aD=Symbol("level"),AD=Symbol("strategy"),lD=Symbol("ended"),clt=Symbol("_defaultFullFlush"),cD=class extends ZFe{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e);this[pg]=!1,this[lD]=!1,this[$Fe]=e,this[td]=e.flush,this[x9]=e.finishFlush;try{this[tr]=new v9[r](e)}catch(i){throw new ed(i)}this[qw]=i=>{this[pg]||(this[pg]=!0,this.close(),this.emit("error",i))},this[tr].on("error",i=>this[qw](new ed(i))),this.once("end",()=>this.close)}close(){this[tr]&&(this[tr].close(),this[tr]=null,this.emit("close"))}reset(){if(!this[pg])return sD(this[tr],"zlib binding closed"),this[tr].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[oD]),this.write(Object.assign(kA.alloc(0),{[td]:e})))}end(e,r,i){return e&&this.write(e,r),this.flush(this[x9]),this[lD]=!0,super.end(null,null,i)}get ended(){return this[lD]}write(e,r,i){if(typeof r=="function"&&(i=r,r="utf8"),typeof e=="string"&&(e=kA.from(e,r)),this[pg])return;sD(this[tr],"zlib binding closed");let n=this[tr]._handle,s=n.close;n.close=()=>{};let o=this[tr].close;this[tr].close=()=>{},kA.concat=c=>c;let a;try{let c=typeof e[td]=="number"?e[td]:this[td];a=this[tr]._processChunk(e,c),kA.concat=S9}catch(c){kA.concat=S9,this[qw](new ed(c))}finally{this[tr]&&(this[tr]._handle=n,n.close=s,this[tr].close=o,this[tr].removeAllListeners("error"))}this[tr]&&this[tr].on("error",c=>this[qw](new ed(c)));let l;if(a)if(Array.isArray(a)&&a.length>0){l=this[gc](kA.from(a[0]));for(let c=1;c{this.flush(n),s()};try{this[tr].params(e,r)}finally{this[tr].flush=i}this[tr]&&(this[aD]=e,this[AD]=r)}}}},k9=class extends PA{constructor(e){super(e,"Deflate")}},P9=class extends PA{constructor(e){super(e,"Inflate")}},uD=Symbol("_portable"),D9=class extends PA{constructor(e){super(e,"Gzip");this[uD]=e&&!!e.portable}[gc](e){return this[uD]?(this[uD]=!1,e[9]=255,super[gc](e)):super[gc](e)}},R9=class extends PA{constructor(e){super(e,"Gunzip")}},F9=class extends PA{constructor(e){super(e,"DeflateRaw")}},N9=class extends PA{constructor(e){super(e,"InflateRaw")}},L9=class extends PA{constructor(e){super(e,"Unzip")}},gD=class extends cD{constructor(e,r){e=e||{},e.flush=e.flush||uc.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||uc.BROTLI_OPERATION_FINISH,super(e,r),this[oD]=uc.BROTLI_OPERATION_FLUSH}},T9=class extends gD{constructor(e){super(e,"BrotliCompress")}},M9=class extends gD{constructor(e){super(e,"BrotliDecompress")}};Un.Deflate=k9;Un.Inflate=P9;Un.Gzip=D9;Un.Gunzip=R9;Un.DeflateRaw=F9;Un.InflateRaw=N9;Un.Unzip=L9;typeof v9.BrotliCompress=="function"?(Un.BrotliCompress=T9,Un.BrotliDecompress=M9):Un.BrotliCompress=Un.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var rd=E(Jw=>{"use strict";Jw.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);Jw.code=new Map(Array.from(Jw.name).map(t=>[t[1],t[0]]))});var id=E((plt,O9)=>{"use strict";var flt=rd(),eNe=hg(),hD=Symbol("slurp");O9.exports=class extends eNe{constructor(e,r,i){super();switch(this.pause(),this.extended=r,this.globalExtended=i,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=e.path,this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath,this.uname=e.uname,this.gname=e.gname,r&&this[hD](r),i&&this[hD](i,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,n=this.blockRemain;return this.remain=Math.max(0,i-r),this.blockRemain=Math.max(0,n-r),this.ignore?!0:i>=r?super.write(e):super.write(e.slice(0,i))}[hD](e,r){for(let i in e)e[i]!==null&&e[i]!==void 0&&!(r&&i==="path")&&(this[i]=e[i])}}});var H9=E(pD=>{"use strict";var dlt=pD.encode=(t,e)=>{if(Number.isSafeInteger(t))t<0?rNe(t,e):tNe(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},tNe=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},rNe=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var i=e.length;i>1;i--){var n=t&255;t=Math.floor(t/256),r?e[i-1]=K9(n):n===0?e[i-1]=0:(r=!0,e[i-1]=U9(n))}},Clt=pD.parse=t=>{var e=t[t.length-1],r=t[0],i;if(r===128)i=nNe(t.slice(1,t.length));else if(r===255)i=iNe(t);else throw Error("invalid base256 encoding");if(!Number.isSafeInteger(i))throw Error("parsed number outside of javascript safe integer range");return i},iNe=t=>{for(var e=t.length,r=0,i=!1,n=e-1;n>-1;n--){var s=t[n],o;i?o=K9(s):s===0?o=s:(i=!0,o=U9(s)),o!==0&&(r-=o*Math.pow(256,e-n-1))}return r},nNe=t=>{for(var e=t.length,r=0,i=e-1;i>-1;i--){var n=t[i];n!==0&&(r+=n*Math.pow(256,e-i-1))}return r},K9=t=>(255^t)&255,U9=t=>(255^t)+1&255});var Cg=E((Elt,G9)=>{"use strict";var dD=rd(),dg=require("path").posix,j9=H9(),CD=Symbol("slurp"),Hn=Symbol("type"),Y9=class{constructor(e,r,i,n){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[Hn]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,i,n):e&&this.set(e)}decode(e,r,i,n){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=fc(e,r,100),this.mode=DA(e,r+100,8),this.uid=DA(e,r+108,8),this.gid=DA(e,r+116,8),this.size=DA(e,r+124,12),this.mtime=mD(e,r+136,12),this.cksum=DA(e,r+148,12),this[CD](i),this[CD](n,!0),this[Hn]=fc(e,r+156,1),this[Hn]===""&&(this[Hn]="0"),this[Hn]==="0"&&this.path.substr(-1)==="/"&&(this[Hn]="5"),this[Hn]==="5"&&(this.size=0),this.linkpath=fc(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=fc(e,r+265,32),this.gname=fc(e,r+297,32),this.devmaj=DA(e,r+329,8),this.devmin=DA(e,r+337,8),e[r+475]!==0){let o=fc(e,r+345,155);this.path=o+"/"+this.path}else{let o=fc(e,r+345,130);o&&(this.path=o+"/"+this.path),this.atime=mD(e,r+476,12),this.ctime=mD(e,r+488,12)}let s=8*32;for(let o=r;o=r+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,n=sNe(this.path||"",i),s=n[0],o=n[1];this.needPax=n[2],this.needPax=hc(e,r,100,s)||this.needPax,this.needPax=RA(e,r+100,8,this.mode)||this.needPax,this.needPax=RA(e,r+108,8,this.uid)||this.needPax,this.needPax=RA(e,r+116,8,this.gid)||this.needPax,this.needPax=RA(e,r+124,12,this.size)||this.needPax,this.needPax=ED(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[Hn].charCodeAt(0),this.needPax=hc(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=hc(e,r+265,32,this.uname)||this.needPax,this.needPax=hc(e,r+297,32,this.gname)||this.needPax,this.needPax=RA(e,r+329,8,this.devmaj)||this.needPax,this.needPax=RA(e,r+337,8,this.devmin)||this.needPax,this.needPax=hc(e,r+345,i,o)||this.needPax,e[r+475]!==0?this.needPax=hc(e,r+345,155,o)||this.needPax:(this.needPax=hc(e,r+345,130,o)||this.needPax,this.needPax=ED(e,r+476,12,this.atime)||this.needPax,this.needPax=ED(e,r+488,12,this.ctime)||this.needPax);let a=8*32;for(let l=r;l{let r=100,i=t,n="",s,o=dg.parse(t).root||".";if(Buffer.byteLength(i)r&&Buffer.byteLength(n)<=e?s=[i.substr(0,r-1),n,!0]:(i=dg.join(dg.basename(n),i),n=dg.dirname(n));while(n!==o&&!s);s||(s=[t.substr(0,r-1),"",!0])}return s},fc=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),mD=(t,e,r)=>oNe(DA(t,e,r)),oNe=t=>t===null?null:new Date(t*1e3),DA=(t,e,r)=>t[e]&128?j9.parse(t.slice(e,e+r)):aNe(t,e,r),ANe=t=>isNaN(t)?null:t,aNe=(t,e,r)=>ANe(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),lNe={12:8589934591,8:2097151},RA=(t,e,r,i)=>i===null?!1:i>lNe[r]||i<0?(j9.encode(i,t.slice(e,e+r)),!0):(cNe(t,e,r,i),!1),cNe=(t,e,r,i)=>t.write(uNe(i,r),e,r,"ascii"),uNe=(t,e)=>gNe(Math.floor(t).toString(8),e),gNe=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",ED=(t,e,r,i)=>i===null?!1:RA(t,e,r,i.getTime()/1e3),fNe=new Array(156).join("\0"),hc=(t,e,r,i)=>i===null?!1:(t.write(i+fNe,e,r,"utf8"),i.length!==Buffer.byteLength(i)||i.length>r);G9.exports=Y9});var zw=E((Ilt,q9)=>{"use strict";var hNe=Cg(),pNe=require("path"),Ww=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),i=512*Math.ceil(1+r/512),n=Buffer.allocUnsafe(i);for(let s=0;s<512;s++)n[s]=0;new hNe({path:("PaxHeader/"+pNe.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(n),n.write(e,512,r,"utf8");for(let s=r+512;s=Math.pow(10,s)&&(s+=1),s+n+i}};Ww.parse=(t,e,r)=>new Ww(dNe(CNe(t),e),r);var dNe=(t,e)=>e?Object.keys(t).reduce((r,i)=>(r[i]=t[i],r),e):t,CNe=t=>t.replace(/\n$/,"").split(` -`).reduce(mNe,Object.create(null)),mNe=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let i=e.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return t;let s=i.join("=");return t[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,t};q9.exports=Ww});var Vw=E((ylt,J9)=>{"use strict";J9.exports=t=>class extends t{warn(e,r,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=r instanceof Error&&r.code||e,i.tarCode=e,!this.strict&&i.recoverable!==!1?(r instanceof Error&&(i=Object.assign(r,i),r=r.message),this.emit("warn",i.tarCode,r,i)):r instanceof Error?this.emit("error",Object.assign(r,i)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),i))}}});var yD=E((wlt,W9)=>{"use strict";var _w=["|","<",">","?",":"],ID=_w.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),ENe=new Map(_w.map((t,e)=>[t,ID[e]])),INe=new Map(ID.map((t,e)=>[t,_w[e]]));W9.exports={encode:t=>_w.reduce((e,r)=>e.split(r).join(ENe.get(r)),t),decode:t=>ID.reduce((e,r)=>e.split(r).join(INe.get(r)),t)}});var V9=E((Blt,z9)=>{"use strict";z9.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&~18),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var xD=E((xlt,_9)=>{"use strict";var X9=hg(),Z9=zw(),$9=Cg(),Qlt=id(),bo=require("fs"),mg=require("path"),blt=rd(),yNe=16*1024*1024,eV=Symbol("process"),tV=Symbol("file"),rV=Symbol("directory"),wD=Symbol("symlink"),iV=Symbol("hardlink"),nd=Symbol("header"),Xw=Symbol("read"),BD=Symbol("lstat"),Zw=Symbol("onlstat"),QD=Symbol("onread"),bD=Symbol("onreadlink"),vD=Symbol("openfile"),SD=Symbol("onopenfile"),pc=Symbol("close"),$w=Symbol("mode"),nV=Vw(),wNe=yD(),sV=V9(),eB=nV(class extends X9{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=e,this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||yNe,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=r.cwd||process.cwd(),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(!this.preservePaths&&mg.win32.isAbsolute(e)){let n=mg.win32.parse(e);this.path=e.substr(n.root.length),i=n.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=wNe.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=r.absolute||mg.resolve(this.cwd,e),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[Zw](this.statCache.get(this.absolute)):this[BD]()}[BD](){bo.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[Zw](r)})}[Zw](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=BNe(e),this.emit("stat",e),this[eV]()}[eV](){switch(this.type){case"File":return this[tV]();case"Directory":return this[rV]();case"SymbolicLink":return this[wD]();default:return this.end()}}[$w](e){return sV(e,this.type==="Directory",this.portable)}[nd](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new $9({path:this.path,linkpath:this.linkpath,mode:this[$w](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&this.write(new Z9({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this.path,linkpath:this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),this.write(this.header.block)}[rV](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[nd](),this.end()}[wD](){bo.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[bD](r)})}[bD](e){this.linkpath=e.replace(/\\/g,"/"),this[nd](),this.end()}[iV](e){this.type="Link",this.linkpath=mg.relative(this.cwd,e).replace(/\\/g,"/"),this.stat.size=0,this[nd](),this.end()}[tV](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[iV](r)}this.linkCache.set(e,this.absolute)}if(this[nd](),this.stat.size===0)return this.end();this[vD]()}[vD](){bo.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[SD](r)})}[SD](e){let r=512*Math.ceil(this.stat.size/512),i=Math.min(r,this.maxReadSize),n=Buffer.allocUnsafe(i);this[Xw](e,n,0,n.length,0,this.stat.size,r)}[Xw](e,r,i,n,s,o,a){bo.read(e,r,i,n,s,(l,c)=>{if(l)return this[pc](e,()=>this.emit("error",l));this[QD](e,r,i,n,s,o,a,c)})}[pc](e,r){bo.close(e,r)}[QD](e,r,i,n,s,o,a,l){if(l<=0&&o>0){let u=new Error("encountered unexpected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[pc](e,()=>this.emit("error",u))}if(l>o){let u=new Error("did not encounter expected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[pc](e,()=>this.emit("error",u))}if(l===o)for(let u=l;uu?this.emit("error",u):this.end());i>=n&&(r=Buffer.allocUnsafe(n),i=0),n=r.length-i,this[Xw](e,r,i,n,s,o,a)}}),oV=class extends eB{constructor(e,r){super(e,r)}[BD](){this[Zw](bo.lstatSync(this.absolute))}[wD](){this[bD](bo.readlinkSync(this.absolute))}[vD](){this[SD](bo.openSync(this.absolute,"r"))}[Xw](e,r,i,n,s,o,a){let l=!0;try{let c=bo.readSync(e,r,i,n,s);this[QD](e,r,i,n,s,o,a,c),l=!1}finally{if(l)try{this[pc](e,()=>{})}catch(c){}}}[pc](e,r){bo.closeSync(e),r()}},QNe=nV(class extends X9{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=e.path,this.mode=this[$w](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=e.linkpath,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(mg.isAbsolute(this.path)&&!this.preservePaths){let n=mg.parse(this.path);i=n.root,this.path=this.path.substr(n.root.length)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new $9({path:this.path,linkpath:this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.header.encode()&&!this.noPax&&super.write(new Z9({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this.path,linkpath:this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[$w](e){return sV(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});eB.Sync=oV;eB.Tar=QNe;var BNe=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";_9.exports=eB});var AB=E((Plt,aV)=>{"use strict";var kD=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},bNe=hg(),vNe=fD(),SNe=id(),PD=xD(),xNe=PD.Sync,kNe=PD.Tar,PNe=Rh(),AV=Buffer.alloc(1024),tB=Symbol("onStat"),rB=Symbol("ended"),vo=Symbol("queue"),Eg=Symbol("current"),dc=Symbol("process"),iB=Symbol("processing"),lV=Symbol("processJob"),So=Symbol("jobs"),DD=Symbol("jobDone"),nB=Symbol("addFSEntry"),cV=Symbol("addTarEntry"),RD=Symbol("stat"),FD=Symbol("readdir"),sB=Symbol("onreaddir"),oB=Symbol("pipe"),uV=Symbol("entry"),ND=Symbol("entryOpt"),LD=Symbol("writeEntryClass"),gV=Symbol("write"),TD=Symbol("ondrain"),aB=require("fs"),fV=require("path"),DNe=Vw(),MD=DNe(class extends bNe{constructor(e){super(e);e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=(e.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[LD]=PD,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new vNe.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[TD]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[TD]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[vo]=new PNe,this[So]=0,this.jobs=+e.jobs||4,this[iB]=!1,this[rB]=!1}[gV](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[rB]=!0,this[dc](),this}write(e){if(this[rB])throw new Error("write after end");return e instanceof SNe?this[cV](e):this[nB](e),this.flowing}[cV](e){let r=fV.resolve(this.cwd,e.path);if(this.prefix&&(e.path=this.prefix+"/"+e.path.replace(/^\.(\/+|$)/,"")),!this.filter(e.path,e))e.resume();else{let i=new kD(e.path,r,!1);i.entry=new kNe(e,this[ND](i)),i.entry.on("end",n=>this[DD](i)),this[So]+=1,this[vo].push(i)}this[dc]()}[nB](e){let r=fV.resolve(this.cwd,e);this.prefix&&(e=this.prefix+"/"+e.replace(/^\.(\/+|$)/,"")),this[vo].push(new kD(e,r)),this[dc]()}[RD](e){e.pending=!0,this[So]+=1;let r=this.follow?"stat":"lstat";aB[r](e.absolute,(i,n)=>{e.pending=!1,this[So]-=1,i?this.emit("error",i):this[tB](e,n)})}[tB](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[dc]()}[FD](e){e.pending=!0,this[So]+=1,aB.readdir(e.absolute,(r,i)=>{if(e.pending=!1,this[So]-=1,r)return this.emit("error",r);this[sB](e,i)})}[sB](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[dc]()}[dc](){if(!this[iB]){this[iB]=!0;for(let e=this[vo].head;e!==null&&this[So]this.warn(r,i,n),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime}}[uV](e){this[So]+=1;try{return new this[LD](e.path,this[ND](e)).on("end",()=>this[DD](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[TD](){this[Eg]&&this[Eg].entry&&this[Eg].entry.resume()}[oB](e){e.piped=!0,e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[nB](o+n)});let r=e.entry,i=this.zip;i?r.on("data",n=>{i.write(n)||r.pause()}):r.on("data",n=>{super.write(n)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),hV=class extends MD{constructor(e){super(e);this[LD]=xNe}pause(){}resume(){}[RD](e){let r=this.follow?"statSync":"lstatSync";this[tB](e,aB[r](e.absolute))}[FD](e,r){this[sB](e,aB.readdirSync(e.absolute))}[oB](e){let r=e.entry,i=this.zip;e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[nB](o+n)}),i?r.on("data",n=>{i.write(n)}):r.on("data",n=>{super[gV](n)})}};MD.Sync=hV;aV.exports=MD});var bg=E(sd=>{"use strict";var RNe=hg(),FNe=require("events").EventEmitter,ls=require("fs"),lB=process.binding("fs"),Dlt=lB.writeBuffers,NNe=lB.FSReqWrap||lB.FSReqCallback,Ig=Symbol("_autoClose"),xo=Symbol("_close"),od=Symbol("_ended"),Jt=Symbol("_fd"),pV=Symbol("_finished"),Cc=Symbol("_flags"),OD=Symbol("_flush"),KD=Symbol("_handleChunk"),UD=Symbol("_makeBuf"),HD=Symbol("_mode"),cB=Symbol("_needDrain"),yg=Symbol("_onerror"),wg=Symbol("_onopen"),GD=Symbol("_onread"),mc=Symbol("_onwrite"),FA=Symbol("_open"),NA=Symbol("_path"),Ec=Symbol("_pos"),ko=Symbol("_queue"),Bg=Symbol("_read"),dV=Symbol("_readSize"),LA=Symbol("_reading"),uB=Symbol("_remain"),CV=Symbol("_size"),gB=Symbol("_write"),Qg=Symbol("_writing"),fB=Symbol("_defaultFlag"),jD=class extends RNe{constructor(e,r){if(r=r||{},super(r),this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Jt]=typeof r.fd=="number"?r.fd:null,this[NA]=e,this[dV]=r.readSize||16*1024*1024,this[LA]=!1,this[CV]=typeof r.size=="number"?r.size:Infinity,this[uB]=this[CV],this[Ig]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[Jt]=="number"?this[Bg]():this[FA]()}get fd(){return this[Jt]}get path(){return this[NA]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[FA](){ls.open(this[NA],"r",(e,r)=>this[wg](e,r))}[wg](e,r){e?this[yg](e):(this[Jt]=r,this.emit("open",r),this[Bg]())}[UD](){return Buffer.allocUnsafe(Math.min(this[dV],this[uB]))}[Bg](){if(!this[LA]){this[LA]=!0;let e=this[UD]();if(e.length===0)return process.nextTick(()=>this[GD](null,0,e));ls.read(this[Jt],e,0,e.length,null,(r,i,n)=>this[GD](r,i,n))}}[GD](e,r,i){this[LA]=!1,e?this[yg](e):this[KD](r,i)&&this[Bg]()}[xo](){this[Ig]&&typeof this[Jt]=="number"&&(ls.close(this[Jt],e=>this.emit("close")),this[Jt]=null)}[yg](e){this[LA]=!0,this[xo](),this.emit("error",e)}[KD](e,r){let i=!1;return this[uB]-=e,e>0&&(i=super.write(ethis[wg](e,r))}[wg](e,r){this[fB]&&this[Cc]==="r+"&&e&&e.code==="ENOENT"?(this[Cc]="w",this[FA]()):e?this[yg](e):(this[Jt]=r,this.emit("open",r),this[OD]())}end(e,r){e&&this.write(e,r),this[od]=!0,!this[Qg]&&!this[ko].length&&typeof this[Jt]=="number"&&this[mc](null,0)}write(e,r){return typeof e=="string"&&(e=new Buffer(e,r)),this[od]?(this.emit("error",new Error("write() after end()")),!1):this[Jt]===null||this[Qg]||this[ko].length?(this[ko].push(e),this[cB]=!0,!1):(this[Qg]=!0,this[gB](e),!0)}[gB](e){ls.write(this[Jt],e,0,e.length,this[Ec],(r,i)=>this[mc](r,i))}[mc](e,r){e?this[yg](e):(this[Ec]!==null&&(this[Ec]+=r),this[ko].length?this[OD]():(this[Qg]=!1,this[od]&&!this[pV]?(this[pV]=!0,this[xo](),this.emit("finish")):this[cB]&&(this[cB]=!1,this.emit("drain"))))}[OD](){if(this[ko].length===0)this[od]&&this[mc](null,0);else if(this[ko].length===1)this[gB](this[ko].pop());else{let e=this[ko];this[ko]=[],LNe(this[Jt],e,this[Ec],(r,i)=>this[mc](r,i))}}[xo](){this[Ig]&&typeof this[Jt]=="number"&&(ls.close(this[Jt],e=>this.emit("close")),this[Jt]=null)}},EV=class extends YD{[FA](){let e;try{e=ls.openSync(this[NA],this[Cc],this[HD])}catch(r){if(this[fB]&&this[Cc]==="r+"&&r&&r.code==="ENOENT")return this[Cc]="w",this[FA]();throw r}this[wg](null,e)}[xo](){if(this[Ig]&&typeof this[Jt]=="number"){try{ls.closeSync(this[Jt])}catch(e){}this[Jt]=null,this.emit("close")}}[gB](e){try{this[mc](null,ls.writeSync(this[Jt],e,0,e.length,this[Ec]))}catch(r){this[mc](r,0)}}},LNe=(t,e,r,i)=>{let n=(o,a)=>i(o,a,e),s=new NNe;s.oncomplete=n,lB.writeBuffers(t,e,r,s)};sd.ReadStream=jD;sd.ReadStreamSync=mV;sd.WriteStream=YD;sd.WriteStreamSync=EV});var ld=E((Llt,IV)=>{"use strict";var TNe=Vw(),Flt=require("path"),MNe=Cg(),ONe=require("events"),KNe=Rh(),UNe=1024*1024,HNe=id(),yV=zw(),GNe=fD(),qD=Buffer.from([31,139]),cs=Symbol("state"),Ic=Symbol("writeEntry"),xa=Symbol("readEntry"),JD=Symbol("nextEntry"),wV=Symbol("processEntry"),us=Symbol("extendedHeader"),ad=Symbol("globalExtendedHeader"),TA=Symbol("meta"),BV=Symbol("emitMeta"),Ar=Symbol("buffer"),ka=Symbol("queue"),yc=Symbol("ended"),QV=Symbol("emittedEnd"),wc=Symbol("emit"),Qn=Symbol("unzip"),hB=Symbol("consumeChunk"),pB=Symbol("consumeChunkSub"),WD=Symbol("consumeBody"),bV=Symbol("consumeMeta"),vV=Symbol("consumeHeader"),dB=Symbol("consuming"),zD=Symbol("bufferConcat"),VD=Symbol("maybeEnd"),Ad=Symbol("writing"),MA=Symbol("aborted"),CB=Symbol("onDone"),Bc=Symbol("sawValidEntry"),mB=Symbol("sawNullBlock"),EB=Symbol("sawEOF"),jNe=t=>!0;IV.exports=TNe(class extends ONe{constructor(e){e=e||{},super(e),this.file=e.file||"",this[Bc]=null,this.on(CB,r=>{(this[cs]==="begin"||this[Bc]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(CB,e.ondone):this.on(CB,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||UNe,this.filter=typeof e.filter=="function"?e.filter:jNe,this.writable=!0,this.readable=!1,this[ka]=new KNe,this[Ar]=null,this[xa]=null,this[Ic]=null,this[cs]="begin",this[TA]="",this[us]=null,this[ad]=null,this[yc]=!1,this[Qn]=null,this[MA]=!1,this[mB]=!1,this[EB]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[vV](e,r){this[Bc]===null&&(this[Bc]=!1);let i;try{i=new MNe(e,r,this[us],this[ad])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[mB]?(this[EB]=!0,this[cs]==="begin"&&(this[cs]="header"),this[wc]("eof")):(this[mB]=!0,this[wc]("nullBlock"));else if(this[mB]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let n=i.type;if(/^(Symbolic)?Link$/.test(n)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(n)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let s=this[Ic]=new HNe(i,this[us],this[ad]);if(!this[Bc])if(s.remain){let o=()=>{s.invalid||(this[Bc]=!0)};s.on("end",o)}else this[Bc]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[wc]("ignoredEntry",s),this[cs]="ignore",s.resume()):s.size>0&&(this[TA]="",s.on("data",o=>this[TA]+=o),this[cs]="meta"):(this[us]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[wc]("ignoredEntry",s),this[cs]=s.remain?"ignore":"header",s.resume()):(s.remain?this[cs]="body":(this[cs]="header",s.end()),this[xa]?this[ka].push(s):(this[ka].push(s),this[JD]())))}}}[wV](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[xa]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",i=>this[JD]()),r=!1)):(this[xa]=null,r=!1),r}[JD](){do;while(this[wV](this[ka].shift()));if(!this[ka].length){let e=this[xa];!e||e.flowing||e.size===e.remain?this[Ad]||this.emit("drain"):e.once("drain",i=>this.emit("drain"))}}[WD](e,r){let i=this[Ic],n=i.blockRemain,s=n>=e.length&&r===0?e:e.slice(r,r+n);return i.write(s),i.blockRemain||(this[cs]="header",this[Ic]=null,i.end()),s.length}[bV](e,r){let i=this[Ic],n=this[WD](e,r);return this[Ic]||this[BV](i),n}[wc](e,r,i){!this[ka].length&&!this[xa]?this.emit(e,r,i):this[ka].push([e,r,i])}[BV](e){switch(this[wc]("meta",this[TA]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[us]=yV.parse(this[TA],this[us],!1);break;case"GlobalExtendedHeader":this[ad]=yV.parse(this[TA],this[ad],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[us]=this[us]||Object.create(null),this[us].path=this[TA].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[us]=this[us]||Object.create(null),this[us].linkpath=this[TA].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[MA]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[MA])return;if(this[Qn]===null&&e){if(this[Ar]&&(e=Buffer.concat([this[Ar],e]),this[Ar]=null),e.lengththis[hB](s)),this[Qn].on("error",s=>this.abort(s)),this[Qn].on("end",s=>{this[yc]=!0,this[hB]()}),this[Ad]=!0;let n=this[Qn][i?"end":"write"](e);return this[Ad]=!1,n}}this[Ad]=!0,this[Qn]?this[Qn].write(e):this[hB](e),this[Ad]=!1;let r=this[ka].length?!1:this[xa]?this[xa].flowing:!0;return!r&&!this[ka].length&&this[xa].once("drain",i=>this.emit("drain")),r}[zD](e){e&&!this[MA]&&(this[Ar]=this[Ar]?Buffer.concat([this[Ar],e]):e)}[VD](){if(this[yc]&&!this[QV]&&!this[MA]&&!this[dB]){this[QV]=!0;let e=this[Ic];if(e&&e.blockRemain){let r=this[Ar]?this[Ar].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[Ar]&&e.write(this[Ar]),e.end()}this[wc](CB)}}[hB](e){if(this[dB])this[zD](e);else if(!e&&!this[Ar])this[VD]();else{if(this[dB]=!0,this[Ar]){this[zD](e);let r=this[Ar];this[Ar]=null,this[pB](r)}else this[pB](e);for(;this[Ar]&&this[Ar].length>=512&&!this[MA]&&!this[EB];){let r=this[Ar];this[Ar]=null,this[pB](r)}this[dB]=!1}(!this[Ar]||this[yc])&&this[VD]()}[pB](e){let r=0,i=e.length;for(;r+512<=i&&!this[MA]&&!this[EB];)switch(this[cs]){case"begin":case"header":this[vV](e,r),r+=512;break;case"ignore":case"body":r+=this[WD](e,r);break;case"meta":r+=this[bV](e,r);break;default:throw new Error("invalid state: "+this[cs])}r{"use strict";var YNe=fg(),xV=ld(),vg=require("fs"),qNe=bg(),kV=require("path"),Tlt=SV.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=YNe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&WNe(i,e),i.noResume||JNe(i),i.file&&i.sync?zNe(i):i.file?VNe(i,r):PV(i)},JNe=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},WNe=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||kV.parse(s).root||".",l=s===a?!1:r.has(s)?r.get(s):n(kV.dirname(s),a);return r.set(s,l),l};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},zNe=t=>{let e=PV(t),r=t.file,i=!0,n;try{let s=vg.statSync(r),o=t.maxReadSize||16*1024*1024;if(s.size{let r=new xV(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("end",o),vg.stat(n,(l,c)=>{if(l)a(l);else{let u=new qNe.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(r)}})});return e?s.then(e,e):s},PV=t=>new xV(t)});var TV=E((Ult,DV)=>{"use strict";var _Ne=fg(),yB=AB(),Olt=require("fs"),RV=bg(),FV=IB(),NV=require("path"),Klt=DV.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let i=_Ne(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return i.file&&i.sync?XNe(i,e):i.file?ZNe(i,e,r):i.sync?$Ne(i,e):eLe(i,e)},XNe=(t,e)=>{let r=new yB.Sync(t),i=new RV.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(i),LV(r,e)},ZNe=(t,e,r)=>{let i=new yB(t),n=new RV.WriteStream(t.file,{mode:t.mode||438});i.pipe(n);let s=new Promise((o,a)=>{n.on("error",a),n.on("close",o),i.on("error",a)});return _D(i,e),r?s.then(r,r):s},LV=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?FV({file:NV.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},_D=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return FV({file:NV.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>_D(t,e));t.add(r)}t.end()},$Ne=(t,e)=>{let r=new yB.Sync(t);return LV(r,e),r},eLe=(t,e)=>{let r=new yB(t);return _D(r,e),r}});var XD=E((jlt,MV)=>{"use strict";var tLe=fg(),OV=AB(),Hlt=ld(),gs=require("fs"),KV=bg(),UV=IB(),HV=require("path"),GV=Cg(),Glt=MV.exports=(t,e,r)=>{let i=tLe(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),i.sync?rLe(i,e):iLe(i,e,r)},rLe=(t,e)=>{let r=new OV.Sync(t),i=!0,n,s;try{try{n=gs.openSync(t.file,"r+")}catch(l){if(l.code==="ENOENT")n=gs.openSync(t.file,"w+");else throw l}let o=gs.fstatSync(n),a=Buffer.alloc(512);e:for(s=0;so.size)break;s+=c,t.mtimeCache&&t.mtimeCache.set(l.path,l.mtime)}i=!1,nLe(t,r,s,n,e)}finally{if(i)try{gs.closeSync(n)}catch(o){}}},nLe=(t,e,r,i,n)=>{let s=new KV.WriteStreamSync(t.file,{fd:i,start:r});e.pipe(s),sLe(e,n)},iLe=(t,e,r)=>{e=Array.from(e);let i=new OV(t),n=(o,a,l)=>{let c=(p,d)=>{p?gs.close(o,m=>l(p)):l(null,d)},u=0;if(a===0)return c(null,0);let g=0,f=Buffer.alloc(512),h=(p,d)=>{if(p)return c(p);if(g+=d,g<512&&d)return gs.read(o,f,g,f.length-g,u+g,h);if(u===0&&f[0]===31&&f[1]===139)return c(new Error("cannot append to compressed archives"));if(g<512)return c(null,u);let m=new GV(f);if(!m.cksumValid)return c(null,u);let I=512*Math.ceil(m.size/512);if(u+I+512>a||(u+=I+512,u>=a))return c(null,u);t.mtimeCache&&t.mtimeCache.set(m.path,m.mtime),g=0,gs.read(o,f,0,512,u,h)};gs.read(o,f,0,512,u,h)},s=new Promise((o,a)=>{i.on("error",a);let l="r+",c=(u,g)=>{if(u&&u.code==="ENOENT"&&l==="r+")return l="w+",gs.open(t.file,l,c);if(u)return a(u);gs.fstat(g,(f,h)=>{if(f)return a(f);n(g,h.size,(p,d)=>{if(p)return a(p);let m=new KV.WriteStream(t.file,{fd:g,start:d});i.pipe(m),m.on("error",a),m.on("close",o),jV(i,e)})})};gs.open(t.file,l,c)});return r?s.then(r,r):s},sLe=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?UV({file:HV.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},jV=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return UV({file:HV.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>jV(t,e));t.add(r)}t.end()}});var qV=E((qlt,YV)=>{"use strict";var oLe=fg(),aLe=XD(),Ylt=YV.exports=(t,e,r)=>{let i=oLe(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),ALe(i),aLe(i,e,r)},ALe=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,i)=>e(r,i)&&!(t.mtimeCache.get(r)>i.mtime):(r,i)=>!(t.mtimeCache.get(r)>i.mtime)}});var zV=E((Jlt,JV)=>{var{promisify:WV}=require("util"),OA=require("fs"),lLe=t=>{if(!t)t={mode:511,fs:OA};else if(typeof t=="object")t=P({mode:511,fs:OA},t);else if(typeof t=="number")t={mode:t,fs:OA};else if(typeof t=="string")t={mode:parseInt(t,8),fs:OA};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||OA.mkdir,t.mkdirAsync=WV(t.mkdir),t.stat=t.stat||t.fs.stat||OA.stat,t.statAsync=WV(t.stat),t.statSync=t.statSync||t.fs.statSync||OA.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||OA.mkdirSync,t};JV.exports=lLe});var _V=E((Wlt,VV)=>{var cLe=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:uLe,parse:gLe}=require("path"),fLe=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=uLe(t),cLe==="win32"){let e=/[*|"<>?:]/,{root:r}=gLe(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};VV.exports=fLe});var t7=E((zlt,XV)=>{var{dirname:ZV}=require("path"),$V=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(i=>i.isDirectory()?r:void 0,i=>i.code==="ENOENT"?$V(t,ZV(e),e):void 0),e7=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(i){return i.code==="ENOENT"?e7(t,ZV(e),e):void 0}};XV.exports={findMade:$V,findMadeSync:e7}});var eR=E((Vlt,r7)=>{var{dirname:i7}=require("path"),ZD=(t,e,r)=>{e.recursive=!1;let i=i7(t);return i===t?e.mkdirAsync(t,e).catch(n=>{if(n.code!=="EISDIR")throw n}):e.mkdirAsync(t,e).then(()=>r||t,n=>{if(n.code==="ENOENT")return ZD(i,e).then(s=>ZD(t,e,s));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;return e.statAsync(t).then(s=>{if(s.isDirectory())return r;throw n},()=>{throw n})})},$D=(t,e,r)=>{let i=i7(t);if(e.recursive=!1,i===t)try{return e.mkdirSync(t,e)}catch(n){if(n.code!=="EISDIR")throw n;return}try{return e.mkdirSync(t,e),r||t}catch(n){if(n.code==="ENOENT")return $D(t,e,$D(i,e,r));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!e.statSync(t).isDirectory())throw n}catch(s){throw n}}};r7.exports={mkdirpManual:ZD,mkdirpManualSync:$D}});var o7=E((_lt,n7)=>{var{dirname:s7}=require("path"),{findMade:hLe,findMadeSync:pLe}=t7(),{mkdirpManual:dLe,mkdirpManualSync:CLe}=eR(),mLe=(t,e)=>(e.recursive=!0,s7(t)===t?e.mkdirAsync(t,e):hLe(e,t).then(i=>e.mkdirAsync(t,e).then(()=>i).catch(n=>{if(n.code==="ENOENT")return dLe(t,e);throw n}))),ELe=(t,e)=>{if(e.recursive=!0,s7(t)===t)return e.mkdirSync(t,e);let i=pLe(e,t);try{return e.mkdirSync(t,e),i}catch(n){if(n.code==="ENOENT")return CLe(t,e);throw n}};n7.exports={mkdirpNative:mLe,mkdirpNativeSync:ELe}});var c7=E((Xlt,a7)=>{var A7=require("fs"),ILe=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,tR=ILe.replace(/^v/,"").split("."),l7=+tR[0]>10||+tR[0]==10&&+tR[1]>=12,yLe=l7?t=>t.mkdir===A7.mkdir:()=>!1,wLe=l7?t=>t.mkdirSync===A7.mkdirSync:()=>!1;a7.exports={useNative:yLe,useNativeSync:wLe}});var d7=E((Zlt,u7)=>{var Sg=zV(),xg=_V(),{mkdirpNative:g7,mkdirpNativeSync:f7}=o7(),{mkdirpManual:h7,mkdirpManualSync:p7}=eR(),{useNative:BLe,useNativeSync:QLe}=c7(),kg=(t,e)=>(t=xg(t),e=Sg(e),BLe(e)?g7(t,e):h7(t,e)),bLe=(t,e)=>(t=xg(t),e=Sg(e),QLe(e)?f7(t,e):p7(t,e));kg.sync=bLe;kg.native=(t,e)=>g7(xg(t),Sg(e));kg.manual=(t,e)=>h7(xg(t),Sg(e));kg.nativeSync=(t,e)=>f7(xg(t),Sg(e));kg.manualSync=(t,e)=>p7(xg(t),Sg(e));u7.exports=kg});var B7=E(($lt,C7)=>{"use strict";var fs=require("fs"),Qc=require("path"),vLe=fs.lchown?"lchown":"chown",SLe=fs.lchownSync?"lchownSync":"chownSync",m7=fs.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),E7=(t,e,r)=>{try{return fs[SLe](t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},xLe=(t,e,r)=>{try{return fs.chownSync(t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},kLe=m7?(t,e,r,i)=>n=>{!n||n.code!=="EISDIR"?i(n):fs.chown(t,e,r,i)}:(t,e,r,i)=>i,rR=m7?(t,e,r)=>{try{return E7(t,e,r)}catch(i){if(i.code!=="EISDIR")throw i;xLe(t,e,r)}}:(t,e,r)=>E7(t,e,r),PLe=process.version,I7=(t,e,r)=>fs.readdir(t,e,r),DLe=(t,e)=>fs.readdirSync(t,e);/^v4\./.test(PLe)&&(I7=(t,e,r)=>fs.readdir(t,r));var wB=(t,e,r,i)=>{fs[vLe](t,e,r,kLe(t,e,r,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},y7=(t,e,r,i,n)=>{if(typeof e=="string")return fs.lstat(Qc.resolve(t,e),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=e,y7(t,o,r,i,n)});if(e.isDirectory())iR(Qc.resolve(t,e.name),r,i,s=>{if(s)return n(s);let o=Qc.resolve(t,e.name);wB(o,r,i,n)});else{let s=Qc.resolve(t,e.name);wB(s,r,i,n)}},iR=(t,e,r,i)=>{I7(t,{withFileTypes:!0},(n,s)=>{if(n){if(n.code==="ENOENT")return i();if(n.code!=="ENOTDIR"&&n.code!=="ENOTSUP")return i(n)}if(n||!s.length)return wB(t,e,r,i);let o=s.length,a=null,l=c=>{if(!a){if(c)return i(a=c);if(--o==0)return wB(t,e,r,i)}};s.forEach(c=>y7(t,c,e,r,l))})},RLe=(t,e,r,i)=>{if(typeof e=="string")try{let n=fs.lstatSync(Qc.resolve(t,e));n.name=e,e=n}catch(n){if(n.code==="ENOENT")return;throw n}e.isDirectory()&&w7(Qc.resolve(t,e.name),r,i),rR(Qc.resolve(t,e.name),r,i)},w7=(t,e,r)=>{let i;try{i=DLe(t,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return rR(t,e,r);throw n}return i&&i.length&&i.forEach(n=>RLe(t,n,e,r)),rR(t,e,r)};C7.exports=iR;iR.sync=w7});var S7=E((rct,nR)=>{"use strict";var Q7=d7(),hs=require("fs"),BB=require("path"),b7=B7(),sR=class extends Error{constructor(e,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=e}get name(){return"SylinkError"}},cd=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'");this.path=e,this.code=r}get name(){return"CwdError"}},ect=nR.exports=(t,e,r)=>{let i=e.umask,n=e.mode|448,s=(n&i)!=0,o=e.uid,a=e.gid,l=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),c=e.preserve,u=e.unlink,g=e.cache,f=e.cwd,h=(m,I)=>{m?r(m):(g.set(t,!0),I&&l?b7(I,o,a,B=>h(B)):s?hs.chmod(t,n,r):r())};if(g&&g.get(t)===!0)return h();if(t===f)return hs.stat(t,(m,I)=>{(m||!I.isDirectory())&&(m=new cd(t,m&&m.code||"ENOTDIR")),h(m)});if(c)return Q7(t,{mode:n}).then(m=>h(null,m),h);let d=BB.relative(f,t).split(/\/|\\/);QB(f,d,n,g,u,f,null,h)},QB=(t,e,r,i,n,s,o,a)=>{if(!e.length)return a(null,o);let l=e.shift(),c=t+"/"+l;if(i.get(c))return QB(c,e,r,i,n,s,o,a);hs.mkdir(c,r,v7(c,e,r,i,n,s,o,a))},v7=(t,e,r,i,n,s,o,a)=>l=>{if(l){if(l.path&&BB.dirname(l.path)===s&&(l.code==="ENOTDIR"||l.code==="ENOENT"))return a(new cd(s,l.code));hs.lstat(t,(c,u)=>{if(c)a(c);else if(u.isDirectory())QB(t,e,r,i,n,s,o,a);else if(n)hs.unlink(t,g=>{if(g)return a(g);hs.mkdir(t,r,v7(t,e,r,i,n,s,o,a))});else{if(u.isSymbolicLink())return a(new sR(t,t+"/"+e.join("/")));a(l)}})}else o=o||t,QB(t,e,r,i,n,s,o,a)},tct=nR.exports.sync=(t,e)=>{let r=e.umask,i=e.mode|448,n=(i&r)!=0,s=e.uid,o=e.gid,a=typeof s=="number"&&typeof o=="number"&&(s!==e.processUid||o!==e.processGid),l=e.preserve,c=e.unlink,u=e.cache,g=e.cwd,f=m=>{u.set(t,!0),m&&a&&b7.sync(m,s,o),n&&hs.chmodSync(t,i)};if(u&&u.get(t)===!0)return f();if(t===g){let m=!1,I="ENOTDIR";try{m=hs.statSync(t).isDirectory()}catch(B){I=B.code}finally{if(!m)throw new cd(t,I)}f();return}if(l)return f(Q7.sync(t,i));let p=BB.relative(g,t).split(/\/|\\/),d=null;for(let m=p.shift(),I=g;m&&(I+="/"+m);m=p.shift())if(!u.get(I))try{hs.mkdirSync(I,i),d=d||I,u.set(I,!0)}catch(B){if(B.path&&BB.dirname(B.path)===g&&(B.code==="ENOTDIR"||B.code==="ENOENT"))return new cd(g,B.code);let b=hs.lstatSync(I);if(b.isDirectory()){u.set(I,!0);continue}else if(c){hs.unlinkSync(I),hs.mkdirSync(I,i),d=d||I,u.set(I,!0);continue}else if(b.isSymbolicLink())return new sR(I,I+"/"+p.join("/"))}return f(d)}});var P7=E((ict,x7)=>{var k7=require("assert");x7.exports=()=>{let t=new Map,e=new Map,{join:r}=require("path"),i=u=>r(u).split(/[\\\/]/).slice(0,-1).reduce((g,f)=>g.length?g.concat(r(g[g.length-1],f)):[f],[]),n=new Set,s=u=>{let g=e.get(u);if(!g)throw new Error("function does not have any path reservations");return{paths:g.paths.map(f=>t.get(f)),dirs:[...g.dirs].map(f=>t.get(f))}},o=u=>{let{paths:g,dirs:f}=s(u);return g.every(h=>h[0]===u)&&f.every(h=>h[0]instanceof Set&&h[0].has(u))},a=u=>n.has(u)||!o(u)?!1:(n.add(u),u(()=>l(u)),!0),l=u=>{if(!n.has(u))return!1;let{paths:g,dirs:f}=e.get(u),h=new Set;return g.forEach(p=>{let d=t.get(p);k7.equal(d[0],u),d.length===1?t.delete(p):(d.shift(),typeof d[0]=="function"?h.add(d[0]):d[0].forEach(m=>h.add(m)))}),f.forEach(p=>{let d=t.get(p);k7(d[0]instanceof Set),d[0].size===1&&d.length===1?t.delete(p):d[0].size===1?(d.shift(),h.add(d[0])):d[0].delete(u)}),n.delete(u),h.forEach(p=>a(p)),!0};return{check:o,reserve:(u,g)=>{let f=new Set(u.map(h=>i(h)).reduce((h,p)=>h.concat(p)));return e.set(g,{dirs:f,paths:u}),u.forEach(h=>{let p=t.get(h);p?p.push(g):t.set(h,[g])}),f.forEach(h=>{let p=t.get(h);p?p[p.length-1]instanceof Set?p[p.length-1].add(g):p.push(new Set([g])):t.set(h,[new Set([g])])}),a(g)}}}});var F7=E((nct,D7)=>{var FLe=process.env.__FAKE_PLATFORM__||process.platform,NLe=FLe==="win32",LLe=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:TLe,O_TRUNC:MLe,O_WRONLY:OLe,UV_FS_O_FILEMAP:R7=0}=LLe.constants,KLe=NLe&&!!R7,ULe=512*1024,HLe=R7|MLe|TLe|OLe;D7.exports=KLe?t=>t"w"});var hR=E((Act,N7)=>{"use strict";var GLe=require("assert"),sct=require("events").EventEmitter,jLe=ld(),Ut=require("fs"),YLe=bg(),Pa=require("path"),oR=S7(),oct=oR.sync,L7=yD(),qLe=P7(),T7=Symbol("onEntry"),aR=Symbol("checkFs"),M7=Symbol("checkFs2"),AR=Symbol("isReusable"),Da=Symbol("makeFs"),lR=Symbol("file"),cR=Symbol("directory"),bB=Symbol("link"),O7=Symbol("symlink"),K7=Symbol("hardlink"),U7=Symbol("unsupported"),act=Symbol("unknown"),H7=Symbol("checkPath"),Pg=Symbol("mkdir"),nn=Symbol("onError"),vB=Symbol("pending"),G7=Symbol("pend"),Dg=Symbol("unpend"),uR=Symbol("ended"),gR=Symbol("maybeClose"),fR=Symbol("skip"),ud=Symbol("doChown"),gd=Symbol("uid"),fd=Symbol("gid"),j7=require("crypto"),Y7=F7(),SB=()=>{throw new Error("sync function called cb somehow?!?")},JLe=(t,e)=>{if(process.platform!=="win32")return Ut.unlink(t,e);let r=t+".DELETE."+j7.randomBytes(16).toString("hex");Ut.rename(t,r,i=>{if(i)return e(i);Ut.unlink(r,e)})},WLe=t=>{if(process.platform!=="win32")return Ut.unlinkSync(t);let e=t+".DELETE."+j7.randomBytes(16).toString("hex");Ut.renameSync(t,e),Ut.unlinkSync(e)},q7=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,xB=class extends jLe{constructor(e){if(e||(e={}),e.ondone=r=>{this[uR]=!0,this[gR]()},super(e),this.reservations=qLe(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[vB]=0,this[uR]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||process.platform==="win32",this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=Pa.resolve(e.cwd||process.cwd()),this.strip=+e.strip||0,this.processUmask=process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[T7](r))}warn(e,r,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,r,i)}[gR](){this[uR]&&this[vB]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[H7](e){if(this.strip){let r=e.path.split(/\/|\\/);if(r.length=this.strip&&(e.linkpath=i.slice(this.strip).join("/"))}}if(!this.preservePaths){let r=e.path;if(r.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;if(Pa.win32.isAbsolute(r)){let i=Pa.win32.parse(r);e.path=r.substr(i.root.length);let n=i.root;this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:e,path:r})}}if(this.win32){let r=Pa.win32.parse(e.path);e.path=r.root===""?L7.encode(e.path):r.root+L7.encode(e.path.substr(r.root.length))}return Pa.isAbsolute(e.path)?e.absolute=e.path:e.absolute=Pa.resolve(this.cwd,e.path),!0}[T7](e){if(!this[H7](e))return e.resume();switch(GLe.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[aR](e);case"CharacterDevice":case"BlockDevice":case"FIFO":return this[U7](e)}}[nn](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[Dg](),r.resume())}[Pg](e,r,i){oR(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r},i)}[ud](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[gd](e){return q7(this.uid,e.uid,this.processUid)}[fd](e){return q7(this.gid,e.gid,this.processGid)}[lR](e,r){let i=e.mode&4095||this.fmode,n=new YLe.WriteStream(e.absolute,{flags:Y7(e.size),mode:i,autoClose:!1});n.on("error",l=>this[nn](l,e));let s=1,o=l=>{if(l)return this[nn](l,e);--s==0&&Ut.close(n.fd,c=>{r(),c?this[nn](c,e):this[Dg]()})};n.on("finish",l=>{let c=e.absolute,u=n.fd;if(e.mtime&&!this.noMtime){s++;let g=e.atime||new Date,f=e.mtime;Ut.futimes(u,g,f,h=>h?Ut.utimes(c,g,f,p=>o(p&&h)):o())}if(this[ud](e)){s++;let g=this[gd](e),f=this[fd](e);Ut.fchown(u,g,f,h=>h?Ut.chown(c,g,f,p=>o(p&&h)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[nn](l,e)),e.pipe(a)),a.pipe(n)}[cR](e,r){let i=e.mode&4095||this.dmode;this[Pg](e.absolute,i,n=>{if(n)return r(),this[nn](n,e);let s=1,o=a=>{--s==0&&(r(),this[Dg](),e.resume())};e.mtime&&!this.noMtime&&(s++,Ut.utimes(e.absolute,e.atime||new Date,e.mtime,o)),this[ud](e)&&(s++,Ut.chown(e.absolute,this[gd](e),this[fd](e),o)),o()})}[U7](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[O7](e,r){this[bB](e,e.linkpath,"symlink",r)}[K7](e,r){this[bB](e,Pa.resolve(this.cwd,e.linkpath),"link",r)}[G7](){this[vB]++}[Dg](){this[vB]--,this[gR]()}[fR](e){this[Dg](),e.resume()}[AR](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[aR](e){this[G7]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,i=>this[M7](e,i))}[M7](e,r){this[Pg](Pa.dirname(e.absolute),this.dmode,i=>{if(i)return r(),this[nn](i,e);Ut.lstat(e.absolute,(n,s)=>{s&&(this.keep||this.newer&&s.mtime>e.mtime)?(this[fR](e),r()):n||this[AR](e,s)?this[Da](null,e,r):s.isDirectory()?e.type==="Directory"?!e.mode||(s.mode&4095)===e.mode?this[Da](null,e,r):Ut.chmod(e.absolute,e.mode,o=>this[Da](o,e,r)):Ut.rmdir(e.absolute,o=>this[Da](o,e,r)):JLe(e.absolute,o=>this[Da](o,e,r))})})}[Da](e,r,i){if(e)return this[nn](e,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[lR](r,i);case"Link":return this[K7](r,i);case"SymbolicLink":return this[O7](r,i);case"Directory":case"GNUDumpDir":return this[cR](r,i)}}[bB](e,r,i,n){Ut[i](r,e.absolute,s=>{if(s)return this[nn](s,e);n(),this[Dg](),e.resume()})}},J7=class extends xB{constructor(e){super(e)}[aR](e){let r=this[Pg](Pa.dirname(e.absolute),this.dmode,SB);if(r)return this[nn](r,e);try{let i=Ut.lstatSync(e.absolute);if(this.keep||this.newer&&i.mtime>e.mtime)return this[fR](e);if(this[AR](e,i))return this[Da](null,e,SB);try{return i.isDirectory()?e.type==="Directory"?e.mode&&(i.mode&4095)!==e.mode&&Ut.chmodSync(e.absolute,e.mode):Ut.rmdirSync(e.absolute):WLe(e.absolute),this[Da](null,e,SB)}catch(n){return this[nn](n,e)}}catch(i){return this[Da](null,e,SB)}}[lR](e,r){let i=e.mode&4095||this.fmode,n=l=>{let c;try{Ut.closeSync(o)}catch(u){c=u}(l||c)&&this[nn](l||c,e)},s,o;try{o=Ut.openSync(e.absolute,Y7(e.size),i)}catch(l){return n(l)}let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[nn](l,e)),e.pipe(a)),a.on("data",l=>{try{Ut.writeSync(o,l,0,l.length)}catch(c){n(c)}}),a.on("end",l=>{let c=null;if(e.mtime&&!this.noMtime){let u=e.atime||new Date,g=e.mtime;try{Ut.futimesSync(o,u,g)}catch(f){try{Ut.utimesSync(e.absolute,u,g)}catch(h){c=f}}}if(this[ud](e)){let u=this[gd](e),g=this[fd](e);try{Ut.fchownSync(o,u,g)}catch(f){try{Ut.chownSync(e.absolute,u,g)}catch(h){c=c||f}}}n(c)})}[cR](e,r){let i=e.mode&4095||this.dmode,n=this[Pg](e.absolute,i);if(n)return this[nn](n,e);if(e.mtime&&!this.noMtime)try{Ut.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch(s){}if(this[ud](e))try{Ut.chownSync(e.absolute,this[gd](e),this[fd](e))}catch(s){}e.resume()}[Pg](e,r){try{return oR.sync(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(i){return i}}[bB](e,r,i,n){try{Ut[i+"Sync"](r,e.absolute),e.resume()}catch(s){return this[nn](s,e)}}};xB.Sync=J7;N7.exports=xB});var X7=E((cct,W7)=>{"use strict";var zLe=fg(),kB=hR(),z7=require("fs"),V7=bg(),_7=require("path"),lct=W7.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=zLe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&VLe(i,e),i.file&&i.sync?_Le(i):i.file?XLe(i,r):i.sync?ZLe(i):$Le(i)},VLe=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||_7.parse(s).root||".",l=s===a?!1:r.has(s)?r.get(s):n(_7.dirname(s),a);return r.set(s,l),l};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},_Le=t=>{let e=new kB.Sync(t),r=t.file,i=!0,n,s=z7.statSync(r),o=t.maxReadSize||16*1024*1024;new V7.ReadStreamSync(r,{readSize:o,size:s.size}).pipe(e)},XLe=(t,e)=>{let r=new kB(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("close",o),z7.stat(n,(l,c)=>{if(l)a(l);else{let u=new V7.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(r)}})});return e?s.then(e,e):s},ZLe=t=>new kB.Sync(t),$Le=t=>new kB(t)});var Z7=E($r=>{"use strict";$r.c=$r.create=TV();$r.r=$r.replace=XD();$r.t=$r.list=IB();$r.u=$r.update=qV();$r.x=$r.extract=X7();$r.Pack=AB();$r.Unpack=hR();$r.Parse=ld();$r.ReadEntry=id();$r.WriteEntry=xD();$r.Header=Cg();$r.Pax=zw();$r.types=rd()});var e_=E((gct,pR)=>{"use strict";var eTe=Object.prototype.hasOwnProperty,sn="~";function hd(){}Object.create&&(hd.prototype=Object.create(null),new hd().__proto__||(sn=!1));function tTe(t,e,r){this.fn=t,this.context=e,this.once=r||!1}function $7(t,e,r,i,n){if(typeof r!="function")throw new TypeError("The listener must be a function");var s=new tTe(r,i||t,n),o=sn?sn+e:e;return t._events[o]?t._events[o].fn?t._events[o]=[t._events[o],s]:t._events[o].push(s):(t._events[o]=s,t._eventsCount++),t}function PB(t,e){--t._eventsCount==0?t._events=new hd:delete t._events[e]}function Ti(){this._events=new hd,this._eventsCount=0}Ti.prototype.eventNames=function(){var e=[],r,i;if(this._eventsCount===0)return e;for(i in r=this._events)eTe.call(r,i)&&e.push(sn?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(r)):e};Ti.prototype.listeners=function(e){var r=sn?sn+e:e,i=this._events[r];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,s=i.length,o=new Array(s);n{"use strict";t_.exports=(t,e)=>(e=e||(()=>{}),t.then(r=>new Promise(i=>{i(e())}).then(()=>r),r=>new Promise(i=>{i(e())}).then(()=>{throw r})))});var n_=E((hct,DB)=>{"use strict";var rTe=r_(),dR=class extends Error{constructor(e){super(e);this.name="TimeoutError"}},i_=(t,e,r)=>new Promise((i,n)=>{if(typeof e!="number"||e<0)throw new TypeError("Expected `milliseconds` to be a positive number");if(e===Infinity){i(t);return}let s=setTimeout(()=>{if(typeof r=="function"){try{i(r())}catch(l){n(l)}return}let o=typeof r=="string"?r:`Promise timed out after ${e} milliseconds`,a=r instanceof Error?r:new dR(o);typeof t.cancel=="function"&&t.cancel(),n(a)},e);rTe(t.then(i,n),()=>{clearTimeout(s)})});DB.exports=i_;DB.exports.default=i_;DB.exports.TimeoutError=dR});var s_=E(CR=>{"use strict";Object.defineProperty(CR,"__esModule",{value:!0});function iTe(t,e,r){let i=0,n=t.length;for(;n>0;){let s=n/2|0,o=i+s;r(t[o],e)<=0?(i=++o,n-=s+1):n=s}return i}CR.default=iTe});var a_=E(mR=>{"use strict";Object.defineProperty(mR,"__esModule",{value:!0});var nTe=s_(),o_=class{constructor(){this._queue=[]}enqueue(e,r){r=Object.assign({priority:0},r);let i={priority:r.priority,run:e};if(this.size&&this._queue[this.size-1].priority>=r.priority){this._queue.push(i);return}let n=nTe.default(this._queue,i,(s,o)=>o.priority-s.priority);this._queue.splice(n,0,i)}dequeue(){let e=this._queue.shift();return e==null?void 0:e.run}filter(e){return this._queue.filter(r=>r.priority===e.priority).map(r=>r.run)}get size(){return this._queue.length}};mR.default=o_});var c_=E(ER=>{"use strict";Object.defineProperty(ER,"__esModule",{value:!0});var sTe=e_(),A_=n_(),oTe=a_(),RB=()=>{},aTe=new A_.TimeoutError,l_=class extends sTe{constructor(e){var r,i,n,s;super();if(this._intervalCount=0,this._intervalEnd=0,this._pendingCount=0,this._resolveEmpty=RB,this._resolveIdle=RB,e=Object.assign({carryoverConcurrencyCount:!1,intervalCap:Infinity,interval:0,concurrency:Infinity,autoStart:!0,queueClass:oTe.default},e),!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${(i=(r=e.intervalCap)===null||r===void 0?void 0:r.toString())!==null&&i!==void 0?i:""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${(s=(n=e.interval)===null||n===void 0?void 0:n.toString())!==null&&s!==void 0?s:""}\` (${typeof e.interval})`);this._carryoverConcurrencyCount=e.carryoverConcurrencyCount,this._isIntervalIgnored=e.intervalCap===Infinity||e.interval===0,this._intervalCap=e.intervalCap,this._interval=e.interval,this._queue=new e.queueClass,this._queueClass=e.queueClass,this.concurrency=e.concurrency,this._timeout=e.timeout,this._throwOnTimeout=e.throwOnTimeout===!0,this._isPaused=e.autoStart===!1}get _doesIntervalAllowAnother(){return this._isIntervalIgnored||this._intervalCount{this._onResumeInterval()},r)),!0}return!1}_tryToStartAnother(){if(this._queue.size===0)return this._intervalId&&clearInterval(this._intervalId),this._intervalId=void 0,this._resolvePromises(),!1;if(!this._isPaused){let e=!this._isIntervalPaused();if(this._doesIntervalAllowAnother&&this._doesConcurrentAllowAnother){let r=this._queue.dequeue();return r?(this.emit("active"),r(),e&&this._initializeIntervalIfNeeded(),!0):!1}}return!1}_initializeIntervalIfNeeded(){this._isIntervalIgnored||this._intervalId!==void 0||(this._intervalId=setInterval(()=>{this._onInterval()},this._interval),this._intervalEnd=Date.now()+this._interval)}_onInterval(){this._intervalCount===0&&this._pendingCount===0&&this._intervalId&&(clearInterval(this._intervalId),this._intervalId=void 0),this._intervalCount=this._carryoverConcurrencyCount?this._pendingCount:0,this._processQueue()}_processQueue(){for(;this._tryToStartAnother(););}get concurrency(){return this._concurrency}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this._concurrency=e,this._processQueue()}async add(e,r={}){return new Promise((i,n)=>{let s=async()=>{this._pendingCount++,this._intervalCount++;try{let o=this._timeout===void 0&&r.timeout===void 0?e():A_.default(Promise.resolve(e()),r.timeout===void 0?this._timeout:r.timeout,()=>{(r.throwOnTimeout===void 0?this._throwOnTimeout:r.throwOnTimeout)&&n(aTe)});i(await o)}catch(o){n(o)}this._next()};this._queue.enqueue(s,r),this._tryToStartAnother(),this.emit("add")})}async addAll(e,r){return Promise.all(e.map(async i=>this.add(i,r)))}start(){return this._isPaused?(this._isPaused=!1,this._processQueue(),this):this}pause(){this._isPaused=!0}clear(){this._queue=new this._queueClass}async onEmpty(){if(this._queue.size!==0)return new Promise(e=>{let r=this._resolveEmpty;this._resolveEmpty=()=>{r(),e()}})}async onIdle(){if(!(this._pendingCount===0&&this._queue.size===0))return new Promise(e=>{let r=this._resolveIdle;this._resolveIdle=()=>{r(),e()}})}get size(){return this._queue.size}sizeBy(e){return this._queue.filter(e).length}get pending(){return this._pendingCount}get isPaused(){return this._isPaused}get timeout(){return this._timeout}set timeout(e){this._timeout=e}};ER.default=l_});var p_=E((Ect,h_)=>{var yR;h_.exports.getContent=()=>(typeof yR=="undefined"&&(yR=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),yR)});var y_=E((wR,I_)=>{(function(t,e){typeof wR=="object"?I_.exports=e():typeof define=="function"&&define.amd?define(e):t.treeify=e()})(wR,function(){function t(n,s){var o=s?"\u2514":"\u251C";return n?o+="\u2500 ":o+="\u2500\u2500\u2510",o}function e(n,s){var o=[];for(var a in n)!n.hasOwnProperty(a)||s&&typeof n[a]=="function"||o.push(a);return o}function r(n,s,o,a,l,c,u){var g="",f=0,h,p,d=a.slice(0);if(d.push([s,o])&&a.length>0&&(a.forEach(function(I,B){B>0&&(g+=(I[1]?" ":"\u2502")+" "),!p&&I[0]===s&&(p=!0)}),g+=t(n,o)+n,l&&(typeof s!="object"||s instanceof Date)&&(g+=": "+s),p&&(g+=" (circular ref.)"),u(g)),!p&&typeof s=="object"){var m=e(s,c);m.forEach(function(I){h=++f===m.length,r(I,s[I],h,d,l,c,u)})}}var i={};return i.asLines=function(n,s,o,a){var l=typeof o!="function"?o:!1;r(".",n,!1,[],s,l,a||o)},i.asTree=function(n,s,o){var a="";return r(".",n,!1,[],s,o,function(l){a+=l+` -`}),a},i})});var x_=E((Uct,bR)=>{"use strict";var pTe=t=>{let e=!1,r=!1,i=!1;for(let n=0;n{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(t)?t=t.map(n=>n.trim()).filter(n=>n.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=pTe(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),r(t))};bR.exports=S_;bR.exports.default=S_});var Na=E(TR=>{"use strict";Object.defineProperty(TR,"__esModule",{value:!0});TR.default=L_;function L_(){}L_.prototype={diff:function(e,r){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=i.callback;typeof i=="function"&&(n=i,i={}),this.options=i;var s=this;function o(d){return n?(setTimeout(function(){n(void 0,d)},0),!0):d}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var a=r.length,l=e.length,c=1,u=a+l,g=[{newPos:-1,components:[]}],f=this.extractCommon(g[0],r,e,0);if(g[0].newPos+1>=a&&f+1>=l)return o([{value:this.join(r),count:r.length}]);function h(){for(var d=-1*c;d<=c;d+=2){var m=void 0,I=g[d-1],B=g[d+1],b=(B?B.newPos:0)-d;I&&(g[d-1]=void 0);var R=I&&I.newPos+1=a&&b+1>=l)return o(yTe(s,m.components,r,e,s.useLongestToken));g[d]=m}c++}if(n)(function d(){setTimeout(function(){if(c>u)return n();h()||d()},0)})();else for(;c<=u;){var p=h();if(p)return p}},pushComponent:function(e,r,i){var n=e[e.length-1];n&&n.added===r&&n.removed===i?e[e.length-1]={count:n.count+1,added:r,removed:i}:e.push({count:1,added:r,removed:i})},extractCommon:function(e,r,i,n){for(var s=r.length,o=i.length,a=e.newPos,l=a-n,c=0;a+1h.length?d:h}),c.value=t.join(u)}else c.value=t.join(r.slice(a,a+c.count));a+=c.count,c.added||(l+=c.count)}}var f=e[o-1];return o>1&&typeof f.value=="string"&&(f.added||f.removed)&&t.equals("",f.value)&&(e[o-2].value+=f.value,e.pop()),e}function wTe(t){return{newPos:t.newPos,components:t.components.slice(0)}}});var M_=E(Cd=>{"use strict";Object.defineProperty(Cd,"__esModule",{value:!0});Cd.diffChars=BTe;Cd.characterDiff=void 0;var bTe=QTe(Na());function QTe(t){return t&&t.__esModule?t:{default:t}}var T_=new bTe.default;Cd.characterDiff=T_;function BTe(t,e,r){return T_.diff(t,e,r)}});var OR=E(MR=>{"use strict";Object.defineProperty(MR,"__esModule",{value:!0});MR.generateOptions=vTe;function vTe(t,e){if(typeof t=="function")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}});var U_=E(Ng=>{"use strict";Object.defineProperty(Ng,"__esModule",{value:!0});Ng.diffWords=STe;Ng.diffWordsWithSpace=xTe;Ng.wordDiff=void 0;var PTe=kTe(Na()),DTe=OR();function kTe(t){return t&&t.__esModule?t:{default:t}}var O_=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,K_=/\S/,md=new PTe.default;Ng.wordDiff=md;md.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!K_.test(t)&&!K_.test(e)};md.tokenize=function(t){for(var e=t.split(/(\s+|[()[\]{}'"]|\b)/),r=0;r{"use strict";Object.defineProperty(Lg,"__esModule",{value:!0});Lg.diffLines=RTe;Lg.diffTrimmedLines=FTe;Lg.lineDiff=void 0;var LTe=NTe(Na()),TTe=OR();function NTe(t){return t&&t.__esModule?t:{default:t}}var OB=new LTe.default;Lg.lineDiff=OB;OB.tokenize=function(t){var e=[],r=t.split(/(\n|\r\n)/);r[r.length-1]||r.pop();for(var i=0;i{"use strict";Object.defineProperty(Ed,"__esModule",{value:!0});Ed.diffSentences=MTe;Ed.sentenceDiff=void 0;var KTe=OTe(Na());function OTe(t){return t&&t.__esModule?t:{default:t}}var KR=new KTe.default;Ed.sentenceDiff=KR;KR.tokenize=function(t){return t.split(/(\S.+?[.!?])(?=\s+|$)/)};function MTe(t,e,r){return KR.diff(t,e,r)}});var G_=E(Id=>{"use strict";Object.defineProperty(Id,"__esModule",{value:!0});Id.diffCss=UTe;Id.cssDiff=void 0;var GTe=HTe(Na());function HTe(t){return t&&t.__esModule?t:{default:t}}var UR=new GTe.default;Id.cssDiff=UR;UR.tokenize=function(t){return t.split(/([{}:;,]|\s+)/)};function UTe(t,e,r){return UR.diff(t,e,r)}});var Y_=E(Tg=>{"use strict";Object.defineProperty(Tg,"__esModule",{value:!0});Tg.diffJson=jTe;Tg.canonicalize=UB;Tg.jsonDiff=void 0;var j_=YTe(Na()),qTe=KB();function YTe(t){return t&&t.__esModule?t:{default:t}}function HB(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?HB=function(r){return typeof r}:HB=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},HB(t)}var JTe=Object.prototype.toString,bc=new j_.default;Tg.jsonDiff=bc;bc.useLongestToken=!0;bc.tokenize=qTe.lineDiff.tokenize;bc.castInput=function(t){var e=this.options,r=e.undefinedReplacement,i=e.stringifyReplacer,n=i===void 0?function(s,o){return typeof o=="undefined"?r:o}:i;return typeof t=="string"?t:JSON.stringify(UB(t,null,null,n),n," ")};bc.equals=function(t,e){return j_.default.prototype.equals.call(bc,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};function jTe(t,e,r){return bc.diff(t,e,r)}function UB(t,e,r,i,n){e=e||[],r=r||[],i&&(t=i(n,t));var s;for(s=0;s{"use strict";Object.defineProperty(yd,"__esModule",{value:!0});yd.diffArrays=WTe;yd.arrayDiff=void 0;var VTe=zTe(Na());function zTe(t){return t&&t.__esModule?t:{default:t}}var wd=new VTe.default;yd.arrayDiff=wd;wd.tokenize=function(t){return t.slice()};wd.join=wd.removeEmpty=function(t){return t};function WTe(t,e,r){return wd.diff(t,e,r)}});var GB=E(HR=>{"use strict";Object.defineProperty(HR,"__esModule",{value:!0});HR.parsePatch=_Te;function _Te(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.split(/\r\n|[\n\v\f\r\x85]/),i=t.match(/\r\n|[\n\v\f\r\x85]/g)||[],n=[],s=0;function o(){var c={};for(n.push(c);s{"use strict";Object.defineProperty(GR,"__esModule",{value:!0});GR.default=XTe;function XTe(t,e,r){var i=!0,n=!1,s=!1,o=1;return function a(){if(i&&!s){if(n?o++:i=!1,t+o<=r)return o;s=!0}if(!n)return s||(i=!0),e<=t-o?-o++:(n=!0,a())}}});var V_=E(jB=>{"use strict";Object.defineProperty(jB,"__esModule",{value:!0});jB.applyPatch=W_;jB.applyPatches=ZTe;var z_=GB(),eMe=$Te(J_());function $Te(t){return t&&t.__esModule?t:{default:t}}function W_(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string"&&(e=(0,z_.parsePatch)(e)),Array.isArray(e)){if(e.length>1)throw new Error("applyPatch only works with a single input.");e=e[0]}var i=t.split(/\r\n|[\n\v\f\r\x85]/),n=t.match(/\r\n|[\n\v\f\r\x85]/g)||[],s=e.hunks,o=r.compareLine||function(F,D,he,pe){return D===pe},a=0,l=r.fuzzFactor||0,c=0,u=0,g,f;function h(F,D){for(var he=0;he0?pe[0]:" ",Pe=pe.length>0?pe.substr(1):pe;if(Ne===" "||Ne==="-"){if(!o(D+1,i[D],Ne,Pe)&&(a++,a>l))return!1;D++}}return!0}for(var p=0;p0?ne[0]:" ",A=ne.length>0?ne.substr(1):ne,V=L.linedelimiters[J];if(q===" ")K++;else if(q==="-")i.splice(K,1),n.splice(K,1);else if(q==="+")i.splice(K,0,A),n.splice(K,0,V),K++;else if(q==="\\"){var W=L.lines[J-1]?L.lines[J-1][0]:null;W==="+"?g=!0:W==="-"&&(f=!0)}}}if(g)for(;!i[i.length-1];)i.pop(),n.pop();else f&&(i.push(""),n.push(` -`));for(var X=0;X{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});Bd.structuredPatch=__;Bd.createTwoFilesPatch=X_;Bd.createPatch=tMe;var rMe=KB();function jR(t){return sMe(t)||nMe(t)||iMe()}function iMe(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function nMe(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function sMe(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e0?l(L.lines.slice(-o.context)):[],u-=f.length,g-=f.length)}(H=f).push.apply(H,jR(R.map(function(X){return(b.added?"+":"-")+X}))),b.added?p+=R.length:h+=R.length}else{if(u)if(R.length<=o.context*2&&B=a.length-2&&R.length<=o.context){var A=/\n$/.test(r),V=/\n$/.test(i),W=R.length==0&&f.length>q.oldLines;!A&&W&&f.splice(q.oldLines,0,"\\ No newline at end of file"),(!A&&!W||!V)&&f.push("\\ No newline at end of file")}c.push(q),u=0,g=0,f=[]}h+=R.length,p+=R.length}},m=0;m{"use strict";Object.defineProperty(YB,"__esModule",{value:!0});YB.arrayEqual=oMe;YB.arrayStartsWith=Z_;function oMe(t,e){return t.length!==e.length?!1:Z_(t,e)}function Z_(t,e){if(e.length>t.length)return!1;for(var r=0;r{"use strict";Object.defineProperty(qB,"__esModule",{value:!0});qB.calcLineCount=eX;qB.merge=aMe;var AMe=YR(),lMe=GB(),qR=$_();function Mg(t){return gMe(t)||uMe(t)||cMe()}function cMe(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function uMe(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function gMe(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e{"use strict";Object.defineProperty(zR,"__esModule",{value:!0});zR.convertChangesToDMP=dMe;function dMe(t){for(var e=[],r,i,n=0;n{"use strict";Object.defineProperty(VR,"__esModule",{value:!0});VR.convertChangesToXML=CMe;function CMe(t){for(var e=[],r=0;r"):i.removed&&e.push(""),e.push(mMe(i.value)),i.added?e.push(""):i.removed&&e.push("")}return e.join("")}function mMe(t){var e=t;return e=e.replace(/&/g,"&"),e=e.replace(//g,">"),e=e.replace(/"/g,"""),e}});var CX=E(br=>{"use strict";Object.defineProperty(br,"__esModule",{value:!0});Object.defineProperty(br,"Diff",{enumerable:!0,get:function(){return EMe.default}});Object.defineProperty(br,"diffChars",{enumerable:!0,get:function(){return IMe.diffChars}});Object.defineProperty(br,"diffWords",{enumerable:!0,get:function(){return fX.diffWords}});Object.defineProperty(br,"diffWordsWithSpace",{enumerable:!0,get:function(){return fX.diffWordsWithSpace}});Object.defineProperty(br,"diffLines",{enumerable:!0,get:function(){return hX.diffLines}});Object.defineProperty(br,"diffTrimmedLines",{enumerable:!0,get:function(){return hX.diffTrimmedLines}});Object.defineProperty(br,"diffSentences",{enumerable:!0,get:function(){return yMe.diffSentences}});Object.defineProperty(br,"diffCss",{enumerable:!0,get:function(){return wMe.diffCss}});Object.defineProperty(br,"diffJson",{enumerable:!0,get:function(){return pX.diffJson}});Object.defineProperty(br,"canonicalize",{enumerable:!0,get:function(){return pX.canonicalize}});Object.defineProperty(br,"diffArrays",{enumerable:!0,get:function(){return BMe.diffArrays}});Object.defineProperty(br,"applyPatch",{enumerable:!0,get:function(){return dX.applyPatch}});Object.defineProperty(br,"applyPatches",{enumerable:!0,get:function(){return dX.applyPatches}});Object.defineProperty(br,"parsePatch",{enumerable:!0,get:function(){return QMe.parsePatch}});Object.defineProperty(br,"merge",{enumerable:!0,get:function(){return bMe.merge}});Object.defineProperty(br,"structuredPatch",{enumerable:!0,get:function(){return _R.structuredPatch}});Object.defineProperty(br,"createTwoFilesPatch",{enumerable:!0,get:function(){return _R.createTwoFilesPatch}});Object.defineProperty(br,"createPatch",{enumerable:!0,get:function(){return _R.createPatch}});Object.defineProperty(br,"convertChangesToDMP",{enumerable:!0,get:function(){return vMe.convertChangesToDMP}});Object.defineProperty(br,"convertChangesToXML",{enumerable:!0,get:function(){return SMe.convertChangesToXML}});var EMe=xMe(Na()),IMe=M_(),fX=U_(),hX=KB(),yMe=H_(),wMe=G_(),pX=Y_(),BMe=q_(),dX=V_(),QMe=GB(),bMe=cX(),_R=YR(),vMe=uX(),SMe=gX();function xMe(t){return t&&t.__esModule?t:{default:t}}});var WB=E((agt,mX)=>{var kMe=As(),PMe=Nw(),DMe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,RMe=/^\w*$/;function FMe(t,e){if(kMe(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||PMe(t)?!0:RMe.test(t)||!DMe.test(t)||e!=null&&t in Object(e)}mX.exports=FMe});var Gs=E((Agt,EX)=>{function NMe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}EX.exports=NMe});var zB=E((lgt,IX)=>{var LMe=Ac(),TMe=Gs(),MMe="[object AsyncFunction]",OMe="[object Function]",KMe="[object GeneratorFunction]",UMe="[object Proxy]";function HMe(t){if(!TMe(t))return!1;var e=LMe(t);return e==OMe||e==KMe||e==MMe||e==UMe}IX.exports=HMe});var wX=E((cgt,yX)=>{var GMe=Ks(),jMe=GMe["__core-js_shared__"];yX.exports=jMe});var bX=E((ugt,BX)=>{var XR=wX(),QX=function(){var t=/[^.]+$/.exec(XR&&XR.keys&&XR.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function YMe(t){return!!QX&&QX in t}BX.exports=YMe});var ZR=E((ggt,vX)=>{var qMe=Function.prototype,JMe=qMe.toString;function WMe(t){if(t!=null){try{return JMe.call(t)}catch(e){}try{return t+""}catch(e){}}return""}vX.exports=WMe});var xX=E((fgt,SX)=>{var zMe=zB(),VMe=bX(),_Me=Gs(),XMe=ZR(),ZMe=/[\\^$.*+?()[\]{}|]/g,$Me=/^\[object .+?Constructor\]$/,eOe=Function.prototype,tOe=Object.prototype,rOe=eOe.toString,iOe=tOe.hasOwnProperty,nOe=RegExp("^"+rOe.call(iOe).replace(ZMe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function sOe(t){if(!_Me(t)||VMe(t))return!1;var e=zMe(t)?nOe:$Me;return e.test(XMe(t))}SX.exports=sOe});var PX=E((hgt,kX)=>{function oOe(t,e){return t==null?void 0:t[e]}kX.exports=oOe});var UA=E((pgt,DX)=>{var aOe=xX(),AOe=PX();function lOe(t,e){var r=AOe(t,e);return aOe(r)?r:void 0}DX.exports=lOe});var Qd=E((dgt,RX)=>{var cOe=UA(),uOe=cOe(Object,"create");RX.exports=uOe});var LX=E((Cgt,FX)=>{var NX=Qd();function gOe(){this.__data__=NX?NX(null):{},this.size=0}FX.exports=gOe});var MX=E((mgt,TX)=>{function fOe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}TX.exports=fOe});var KX=E((Egt,OX)=>{var hOe=Qd(),pOe="__lodash_hash_undefined__",dOe=Object.prototype,COe=dOe.hasOwnProperty;function mOe(t){var e=this.__data__;if(hOe){var r=e[t];return r===pOe?void 0:r}return COe.call(e,t)?e[t]:void 0}OX.exports=mOe});var HX=E((Igt,UX)=>{var EOe=Qd(),IOe=Object.prototype,yOe=IOe.hasOwnProperty;function wOe(t){var e=this.__data__;return EOe?e[t]!==void 0:yOe.call(e,t)}UX.exports=wOe});var jX=E((ygt,GX)=>{var BOe=Qd(),QOe="__lodash_hash_undefined__";function bOe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=BOe&&e===void 0?QOe:e,this}GX.exports=bOe});var qX=E((wgt,YX)=>{var vOe=LX(),SOe=MX(),xOe=KX(),kOe=HX(),POe=jX();function Og(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{function DOe(){this.__data__=[],this.size=0}JX.exports=DOe});var Kg=E((Qgt,zX)=>{function ROe(t,e){return t===e||t!==t&&e!==e}zX.exports=ROe});var bd=E((bgt,VX)=>{var FOe=Kg();function NOe(t,e){for(var r=t.length;r--;)if(FOe(t[r][0],e))return r;return-1}VX.exports=NOe});var XX=E((vgt,_X)=>{var LOe=bd(),TOe=Array.prototype,MOe=TOe.splice;function OOe(t){var e=this.__data__,r=LOe(e,t);if(r<0)return!1;var i=e.length-1;return r==i?e.pop():MOe.call(e,r,1),--this.size,!0}_X.exports=OOe});var $X=E((Sgt,ZX)=>{var KOe=bd();function UOe(t){var e=this.__data__,r=KOe(e,t);return r<0?void 0:e[r][1]}ZX.exports=UOe});var tZ=E((xgt,eZ)=>{var HOe=bd();function GOe(t){return HOe(this.__data__,t)>-1}eZ.exports=GOe});var iZ=E((kgt,rZ)=>{var jOe=bd();function YOe(t,e){var r=this.__data__,i=jOe(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}rZ.exports=YOe});var vd=E((Pgt,nZ)=>{var qOe=WX(),JOe=XX(),WOe=$X(),zOe=tZ(),VOe=iZ();function Ug(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var _Oe=UA(),XOe=Ks(),ZOe=_Oe(XOe,"Map");sZ.exports=ZOe});var AZ=E((Rgt,oZ)=>{var aZ=qX(),$Oe=vd(),eKe=VB();function tKe(){this.size=0,this.__data__={hash:new aZ,map:new(eKe||$Oe),string:new aZ}}oZ.exports=tKe});var cZ=E((Fgt,lZ)=>{function rKe(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}lZ.exports=rKe});var Sd=E((Ngt,uZ)=>{var iKe=cZ();function nKe(t,e){var r=t.__data__;return iKe(e)?r[typeof e=="string"?"string":"hash"]:r.map}uZ.exports=nKe});var fZ=E((Lgt,gZ)=>{var sKe=Sd();function oKe(t){var e=sKe(this,t).delete(t);return this.size-=e?1:0,e}gZ.exports=oKe});var pZ=E((Tgt,hZ)=>{var aKe=Sd();function AKe(t){return aKe(this,t).get(t)}hZ.exports=AKe});var CZ=E((Mgt,dZ)=>{var lKe=Sd();function cKe(t){return lKe(this,t).has(t)}dZ.exports=cKe});var EZ=E((Ogt,mZ)=>{var uKe=Sd();function gKe(t,e){var r=uKe(this,t),i=r.size;return r.set(t,e),this.size+=r.size==i?0:1,this}mZ.exports=gKe});var _B=E((Kgt,IZ)=>{var fKe=AZ(),hKe=fZ(),pKe=pZ(),dKe=CZ(),CKe=EZ();function Hg(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var wZ=_B(),mKe="Expected a function";function $R(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(mKe);var r=function(){var i=arguments,n=e?e.apply(this,i):i[0],s=r.cache;if(s.has(n))return s.get(n);var o=t.apply(this,i);return r.cache=s.set(n,o)||s,o};return r.cache=new($R.Cache||wZ),r}$R.Cache=wZ;yZ.exports=$R});var bZ=E((Hgt,QZ)=>{var EKe=BZ(),IKe=500;function yKe(t){var e=EKe(t,function(i){return r.size===IKe&&r.clear(),i}),r=e.cache;return e}QZ.exports=yKe});var SZ=E((Ggt,vZ)=>{var wKe=bZ(),BKe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,QKe=/\\(\\)?/g,bKe=wKe(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(BKe,function(r,i,n,s){e.push(n?s.replace(QKe,"$1"):i||r)}),e});vZ.exports=bKe});var Gg=E((jgt,xZ)=>{var vKe=As(),SKe=WB(),xKe=SZ(),kKe=gg();function PKe(t,e){return vKe(t)?t:SKe(t,e)?[t]:xKe(kKe(t))}xZ.exports=PKe});var Sc=E((Ygt,kZ)=>{var DKe=Nw(),RKe=1/0;function FKe(t){if(typeof t=="string"||DKe(t))return t;var e=t+"";return e=="0"&&1/t==-RKe?"-0":e}kZ.exports=FKe});var xd=E((qgt,PZ)=>{var NKe=Gg(),LKe=Sc();function TKe(t,e){e=NKe(e,t);for(var r=0,i=e.length;t!=null&&r{var MKe=UA(),OKe=function(){try{var t=MKe(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();DZ.exports=OKe});var jg=E((Wgt,RZ)=>{var FZ=eF();function KKe(t,e,r){e=="__proto__"&&FZ?FZ(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}RZ.exports=KKe});var XB=E((zgt,NZ)=>{var UKe=jg(),HKe=Kg(),GKe=Object.prototype,jKe=GKe.hasOwnProperty;function YKe(t,e,r){var i=t[e];(!(jKe.call(t,e)&&HKe(i,r))||r===void 0&&!(e in t))&&UKe(t,e,r)}NZ.exports=YKe});var kd=E((Vgt,LZ)=>{var qKe=9007199254740991,JKe=/^(?:0|[1-9]\d*)$/;function WKe(t,e){var r=typeof t;return e=e==null?qKe:e,!!e&&(r=="number"||r!="symbol"&&JKe.test(t))&&t>-1&&t%1==0&&t{var zKe=XB(),VKe=Gg(),_Ke=kd(),MZ=Gs(),XKe=Sc();function ZKe(t,e,r,i){if(!MZ(t))return t;e=VKe(e,t);for(var n=-1,s=e.length,o=s-1,a=t;a!=null&&++n{var $Ke=xd(),e1e=tF(),t1e=Gg();function r1e(t,e,r){for(var i=-1,n=e.length,s={};++i{function i1e(t,e){return t!=null&&e in Object(t)}UZ.exports=i1e});var jZ=E(($gt,GZ)=>{var n1e=Ac(),s1e=Qo(),o1e="[object Arguments]";function a1e(t){return s1e(t)&&n1e(t)==o1e}GZ.exports=a1e});var Pd=E((eft,YZ)=>{var qZ=jZ(),A1e=Qo(),JZ=Object.prototype,l1e=JZ.hasOwnProperty,c1e=JZ.propertyIsEnumerable,u1e=qZ(function(){return arguments}())?qZ:function(t){return A1e(t)&&l1e.call(t,"callee")&&!c1e.call(t,"callee")};YZ.exports=u1e});var ZB=E((tft,WZ)=>{var g1e=9007199254740991;function f1e(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=g1e}WZ.exports=f1e});var rF=E((rft,zZ)=>{var h1e=Gg(),p1e=Pd(),d1e=As(),C1e=kd(),m1e=ZB(),E1e=Sc();function I1e(t,e,r){e=h1e(e,t);for(var i=-1,n=e.length,s=!1;++i{var y1e=HZ(),w1e=rF();function B1e(t,e){return t!=null&&w1e(t,e,y1e)}VZ.exports=B1e});var XZ=E((nft,_Z)=>{var Q1e=KZ(),b1e=iF();function v1e(t,e){return Q1e(t,e,function(r,i){return b1e(t,i)})}_Z.exports=v1e});var $B=E((sft,ZZ)=>{function S1e(t,e){for(var r=-1,i=e.length,n=t.length;++r{var e$=ac(),x1e=Pd(),k1e=As(),t$=e$?e$.isConcatSpreadable:void 0;function P1e(t){return k1e(t)||x1e(t)||!!(t$&&t&&t[t$])}$Z.exports=P1e});var s$=E((aft,i$)=>{var D1e=$B(),R1e=r$();function n$(t,e,r,i,n){var s=-1,o=t.length;for(r||(r=R1e),n||(n=[]);++s0&&r(a)?e>1?n$(a,e-1,r,i,n):D1e(n,a):i||(n[n.length]=a)}return n}i$.exports=n$});var a$=E((Aft,o$)=>{var F1e=s$();function N1e(t){var e=t==null?0:t.length;return e?F1e(t,1):[]}o$.exports=N1e});var l$=E((lft,A$)=>{function L1e(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}A$.exports=L1e});var nF=E((cft,c$)=>{var T1e=l$(),u$=Math.max;function M1e(t,e,r){return e=u$(e===void 0?t.length-1:e,0),function(){for(var i=arguments,n=-1,s=u$(i.length-e,0),o=Array(s);++n{function O1e(t){return function(){return t}}g$.exports=O1e});var e0=E((gft,h$)=>{function K1e(t){return t}h$.exports=K1e});var C$=E((fft,p$)=>{var U1e=f$(),d$=eF(),H1e=e0(),G1e=d$?function(t,e){return d$(t,"toString",{configurable:!0,enumerable:!1,value:U1e(e),writable:!0})}:H1e;p$.exports=G1e});var E$=E((hft,m$)=>{var j1e=800,Y1e=16,q1e=Date.now;function J1e(t){var e=0,r=0;return function(){var i=q1e(),n=Y1e-(i-r);if(r=i,n>0){if(++e>=j1e)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}m$.exports=J1e});var sF=E((pft,I$)=>{var W1e=C$(),z1e=E$(),V1e=z1e(W1e);I$.exports=V1e});var w$=E((dft,y$)=>{var _1e=a$(),X1e=nF(),Z1e=sF();function $1e(t){return Z1e(X1e(t,void 0,_1e),t+"")}y$.exports=$1e});var Q$=E((Cft,B$)=>{var eUe=XZ(),tUe=w$(),rUe=tUe(function(t,e){return t==null?{}:eUe(t,e)});B$.exports=rUe});var M$=E((lpt,N$)=>{"use strict";var pF;try{pF=Map}catch(t){}var dF;try{dF=Set}catch(t){}function L$(t,e,r){if(!t||typeof t!="object"||typeof t=="function")return t;if(t.nodeType&&"cloneNode"in t)return t.cloneNode(!0);if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t);if(Array.isArray(t))return t.map(T$);if(pF&&t instanceof pF)return new Map(Array.from(t.entries()));if(dF&&t instanceof dF)return new Set(Array.from(t.values()));if(t instanceof Object){e.push(t);var i=Object.create(t);r.push(i);for(var n in t){var s=e.findIndex(function(o){return o===t[n]});i[n]=s>-1?r[s]:L$(t[n],e,r)}return i}return t}function T$(t){return L$(t,[],[])}N$.exports=T$});var Nd=E(CF=>{"use strict";Object.defineProperty(CF,"__esModule",{value:!0});CF.default=uUe;var gUe=Object.prototype.toString,fUe=Error.prototype.toString,hUe=RegExp.prototype.toString,pUe=typeof Symbol!="undefined"?Symbol.prototype.toString:()=>"",dUe=/^Symbol\((.*)\)(.*)$/;function CUe(t){return t!=+t?"NaN":t===0&&1/t<0?"-0":""+t}function O$(t,e=!1){if(t==null||t===!0||t===!1)return""+t;let r=typeof t;if(r==="number")return CUe(t);if(r==="string")return e?`"${t}"`:t;if(r==="function")return"[Function "+(t.name||"anonymous")+"]";if(r==="symbol")return pUe.call(t).replace(dUe,"Symbol($1)");let i=gUe.call(t).slice(8,-1);return i==="Date"?isNaN(t.getTime())?""+t:t.toISOString(t):i==="Error"||t instanceof Error?"["+fUe.call(t)+"]":i==="RegExp"?hUe.call(t):null}function uUe(t,e){let r=O$(t,e);return r!==null?r:JSON.stringify(t,function(i,n){let s=O$(this[i],e);return s!==null?s:n},2)}});var La=E(ci=>{"use strict";Object.defineProperty(ci,"__esModule",{value:!0});ci.default=ci.array=ci.object=ci.boolean=ci.date=ci.number=ci.string=ci.mixed=void 0;var K$=mUe(Nd());function mUe(t){return t&&t.__esModule?t:{default:t}}var U$={default:"${path} is invalid",required:"${path} is a required field",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:t,type:e,value:r,originalValue:i})=>{let n=i!=null&&i!==r,s=`${t} must be a \`${e}\` type, but the final value was: \`${(0,K$.default)(r,!0)}\``+(n?` (cast from the value \`${(0,K$.default)(i,!0)}\`).`:".");return r===null&&(s+='\n If "null" is intended as an empty value be sure to mark the schema as `.nullable()`'),s},defined:"${path} must be defined"};ci.mixed=U$;var H$={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"};ci.string=H$;var G$={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"};ci.number=G$;var j$={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"};ci.date=j$;var Y$={isValue:"${path} field must be ${value}"};ci.boolean=Y$;var q$={noUnknown:"${path} field has unspecified keys: ${unknown}"};ci.object=q$;var J$={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must be have ${length} items"};ci.array=J$;var EUe=Object.assign(Object.create(null),{mixed:U$,string:H$,number:G$,date:j$,object:q$,array:J$,boolean:Y$});ci.default=EUe});var z$=E((gpt,W$)=>{var IUe=Object.prototype,yUe=IUe.hasOwnProperty;function wUe(t,e){return t!=null&&yUe.call(t,e)}W$.exports=wUe});var Ld=E((fpt,V$)=>{var BUe=z$(),QUe=rF();function bUe(t,e){return t!=null&&QUe(t,e,BUe)}V$.exports=bUe});var qg=E(n0=>{"use strict";Object.defineProperty(n0,"__esModule",{value:!0});n0.default=void 0;var vUe=t=>t&&t.__isYupSchema__;n0.default=vUe});var Z$=E(s0=>{"use strict";Object.defineProperty(s0,"__esModule",{value:!0});s0.default=void 0;var SUe=_$(Ld()),xUe=_$(qg());function _$(t){return t&&t.__esModule?t:{default:t}}var X$=class{constructor(e,r){if(this.refs=e,this.refs=e,typeof r=="function"){this.fn=r;return}if(!(0,SUe.default)(r,"is"))throw new TypeError("`is:` is required for `when()` conditions");if(!r.then&&!r.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:i,then:n,otherwise:s}=r,o=typeof i=="function"?i:(...a)=>a.every(l=>l===i);this.fn=function(...a){let l=a.pop(),c=a.pop(),u=o(...a)?n:s;if(!!u)return typeof u=="function"?u(c):c.concat(u.resolve(l))}}resolve(e,r){let i=this.refs.map(s=>s.getValue(r==null?void 0:r.value,r==null?void 0:r.parent,r==null?void 0:r.context)),n=this.fn.apply(e,i.concat(e,r));if(n===void 0||n===e)return e;if(!(0,xUe.default)(n))throw new TypeError("conditions must return a schema object");return n.resolve(r)}},kUe=X$;s0.default=kUe});var EF=E(mF=>{"use strict";Object.defineProperty(mF,"__esModule",{value:!0});mF.default=PUe;function PUe(t){return t==null?[]:[].concat(t)}});var xc=E(o0=>{"use strict";Object.defineProperty(o0,"__esModule",{value:!0});o0.default=void 0;var DUe=$$(Nd()),RUe=$$(EF());function $$(t){return t&&t.__esModule?t:{default:t}}function IF(){return IF=Object.assign||function(t){for(var e=1;e(0,DUe.default)(r[s])):typeof e=="function"?e(r):e}static isError(e){return e&&e.name==="ValidationError"}constructor(e,r,i,n){super();this.name="ValidationError",this.value=r,this.path=i,this.type=n,this.errors=[],this.inner=[],(0,RUe.default)(e).forEach(s=>{Td.isError(s)?(this.errors.push(...s.errors),this.inner=this.inner.concat(s.inner.length?s.inner:s)):this.errors.push(s)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,Td)}};o0.default=Td});var a0=E(yF=>{"use strict";Object.defineProperty(yF,"__esModule",{value:!0});yF.default=NUe;var wF=LUe(xc());function LUe(t){return t&&t.__esModule?t:{default:t}}var TUe=t=>{let e=!1;return(...r)=>{e||(e=!0,t(...r))}};function NUe(t,e){let{endEarly:r,tests:i,args:n,value:s,errors:o,sort:a,path:l}=t,c=TUe(e),u=i.length,g=[];if(o=o||[],!u)return o.length?c(new wF.default(o,s,l)):c(null,s);for(let f=0;f{function MUe(t){return function(e,r,i){for(var n=-1,s=Object(e),o=i(e),a=o.length;a--;){var l=o[t?a:++n];if(r(s[l],l,s)===!1)break}return e}}eee.exports=MUe});var BF=E((Ipt,ree)=>{var OUe=tee(),KUe=OUe();ree.exports=KUe});var nee=E((ypt,iee)=>{function UUe(t,e){for(var r=-1,i=Array(t);++r{function HUe(){return!1}see.exports=HUe});var Od=E((Md,Jg)=>{var GUe=Ks(),jUe=oee(),aee=typeof Md=="object"&&Md&&!Md.nodeType&&Md,Aee=aee&&typeof Jg=="object"&&Jg&&!Jg.nodeType&&Jg,YUe=Aee&&Aee.exports===aee,lee=YUe?GUe.Buffer:void 0,qUe=lee?lee.isBuffer:void 0,JUe=qUe||jUe;Jg.exports=JUe});var uee=E((Bpt,cee)=>{var WUe=Ac(),zUe=ZB(),VUe=Qo(),_Ue="[object Arguments]",XUe="[object Array]",ZUe="[object Boolean]",$Ue="[object Date]",e2e="[object Error]",t2e="[object Function]",r2e="[object Map]",i2e="[object Number]",n2e="[object Object]",s2e="[object RegExp]",o2e="[object Set]",a2e="[object String]",A2e="[object WeakMap]",l2e="[object ArrayBuffer]",c2e="[object DataView]",u2e="[object Float32Array]",g2e="[object Float64Array]",f2e="[object Int8Array]",h2e="[object Int16Array]",p2e="[object Int32Array]",d2e="[object Uint8Array]",C2e="[object Uint8ClampedArray]",m2e="[object Uint16Array]",E2e="[object Uint32Array]",lr={};lr[u2e]=lr[g2e]=lr[f2e]=lr[h2e]=lr[p2e]=lr[d2e]=lr[C2e]=lr[m2e]=lr[E2e]=!0;lr[_Ue]=lr[XUe]=lr[l2e]=lr[ZUe]=lr[c2e]=lr[$Ue]=lr[e2e]=lr[t2e]=lr[r2e]=lr[i2e]=lr[n2e]=lr[s2e]=lr[o2e]=lr[a2e]=lr[A2e]=!1;function I2e(t){return VUe(t)&&zUe(t.length)&&!!lr[WUe(t)]}cee.exports=I2e});var A0=E((Qpt,gee)=>{function y2e(t){return function(e){return t(e)}}gee.exports=y2e});var l0=E((Kd,Wg)=>{var w2e=WP(),fee=typeof Kd=="object"&&Kd&&!Kd.nodeType&&Kd,Ud=fee&&typeof Wg=="object"&&Wg&&!Wg.nodeType&&Wg,B2e=Ud&&Ud.exports===fee,QF=B2e&&w2e.process,Q2e=function(){try{var t=Ud&&Ud.require&&Ud.require("util").types;return t||QF&&QF.binding&&QF.binding("util")}catch(e){}}();Wg.exports=Q2e});var c0=E((bpt,hee)=>{var b2e=uee(),v2e=A0(),pee=l0(),dee=pee&&pee.isTypedArray,S2e=dee?v2e(dee):b2e;hee.exports=S2e});var bF=E((vpt,Cee)=>{var x2e=nee(),k2e=Pd(),P2e=As(),D2e=Od(),R2e=kd(),F2e=c0(),N2e=Object.prototype,L2e=N2e.hasOwnProperty;function T2e(t,e){var r=P2e(t),i=!r&&k2e(t),n=!r&&!i&&D2e(t),s=!r&&!i&&!n&&F2e(t),o=r||i||n||s,a=o?x2e(t.length,String):[],l=a.length;for(var c in t)(e||L2e.call(t,c))&&!(o&&(c=="length"||n&&(c=="offset"||c=="parent")||s&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||R2e(c,l)))&&a.push(c);return a}Cee.exports=T2e});var u0=E((Spt,mee)=>{var M2e=Object.prototype;function O2e(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||M2e;return t===r}mee.exports=O2e});var vF=E((xpt,Eee)=>{function K2e(t,e){return function(r){return t(e(r))}}Eee.exports=K2e});var yee=E((kpt,Iee)=>{var U2e=vF(),H2e=U2e(Object.keys,Object);Iee.exports=H2e});var Bee=E((Ppt,wee)=>{var G2e=u0(),j2e=yee(),Y2e=Object.prototype,q2e=Y2e.hasOwnProperty;function J2e(t){if(!G2e(t))return j2e(t);var e=[];for(var r in Object(t))q2e.call(t,r)&&r!="constructor"&&e.push(r);return e}wee.exports=J2e});var Hd=E((Dpt,Qee)=>{var W2e=zB(),z2e=ZB();function V2e(t){return t!=null&&z2e(t.length)&&!W2e(t)}Qee.exports=V2e});var zg=E((Rpt,bee)=>{var _2e=bF(),X2e=Bee(),Z2e=Hd();function $2e(t){return Z2e(t)?_2e(t):X2e(t)}bee.exports=$2e});var SF=E((Fpt,vee)=>{var eHe=BF(),tHe=zg();function rHe(t,e){return t&&eHe(t,e,tHe)}vee.exports=rHe});var xee=E((Npt,See)=>{var iHe=vd();function nHe(){this.__data__=new iHe,this.size=0}See.exports=nHe});var Pee=E((Lpt,kee)=>{function sHe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}kee.exports=sHe});var Ree=E((Tpt,Dee)=>{function oHe(t){return this.__data__.get(t)}Dee.exports=oHe});var Nee=E((Mpt,Fee)=>{function aHe(t){return this.__data__.has(t)}Fee.exports=aHe});var Tee=E((Opt,Lee)=>{var AHe=vd(),lHe=VB(),cHe=_B(),uHe=200;function gHe(t,e){var r=this.__data__;if(r instanceof AHe){var i=r.__data__;if(!lHe||i.length{var fHe=vd(),hHe=xee(),pHe=Pee(),dHe=Ree(),CHe=Nee(),mHe=Tee();function Vg(t){var e=this.__data__=new fHe(t);this.size=e.size}Vg.prototype.clear=hHe;Vg.prototype.delete=pHe;Vg.prototype.get=dHe;Vg.prototype.has=CHe;Vg.prototype.set=mHe;Mee.exports=Vg});var Kee=E((Upt,Oee)=>{var EHe="__lodash_hash_undefined__";function IHe(t){return this.__data__.set(t,EHe),this}Oee.exports=IHe});var Hee=E((Hpt,Uee)=>{function yHe(t){return this.__data__.has(t)}Uee.exports=yHe});var jee=E((Gpt,Gee)=>{var wHe=_B(),BHe=Kee(),QHe=Hee();function g0(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new wHe;++e{function bHe(t,e){for(var r=-1,i=t==null?0:t.length;++r{function vHe(t,e){return t.has(e)}Jee.exports=vHe});var xF=E((qpt,zee)=>{var SHe=jee(),xHe=qee(),kHe=Wee(),PHe=1,DHe=2;function RHe(t,e,r,i,n,s){var o=r&PHe,a=t.length,l=e.length;if(a!=l&&!(o&&l>a))return!1;var c=s.get(t),u=s.get(e);if(c&&u)return c==e&&u==t;var g=-1,f=!0,h=r&DHe?new SHe:void 0;for(s.set(t,e),s.set(e,t);++g{var FHe=Ks(),NHe=FHe.Uint8Array;Vee.exports=NHe});var Xee=E((Wpt,_ee)=>{function LHe(t){var e=-1,r=Array(t.size);return t.forEach(function(i,n){r[++e]=[n,i]}),r}_ee.exports=LHe});var $ee=E((zpt,Zee)=>{function THe(t){var e=-1,r=Array(t.size);return t.forEach(function(i){r[++e]=i}),r}Zee.exports=THe});var nte=E((Vpt,ete)=>{var tte=ac(),rte=kF(),MHe=Kg(),OHe=xF(),KHe=Xee(),UHe=$ee(),HHe=1,GHe=2,jHe="[object Boolean]",YHe="[object Date]",qHe="[object Error]",JHe="[object Map]",WHe="[object Number]",zHe="[object RegExp]",VHe="[object Set]",_He="[object String]",XHe="[object Symbol]",ZHe="[object ArrayBuffer]",$He="[object DataView]",ite=tte?tte.prototype:void 0,PF=ite?ite.valueOf:void 0;function eGe(t,e,r,i,n,s,o){switch(r){case $He:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case ZHe:return!(t.byteLength!=e.byteLength||!s(new rte(t),new rte(e)));case jHe:case YHe:case WHe:return MHe(+t,+e);case qHe:return t.name==e.name&&t.message==e.message;case zHe:case _He:return t==e+"";case JHe:var a=KHe;case VHe:var l=i&HHe;if(a||(a=UHe),t.size!=e.size&&!l)return!1;var c=o.get(t);if(c)return c==e;i|=GHe,o.set(t,e);var u=OHe(a(t),a(e),i,n,s,o);return o.delete(t),u;case XHe:if(PF)return PF.call(t)==PF.call(e)}return!1}ete.exports=eGe});var DF=E((_pt,ste)=>{var tGe=$B(),rGe=As();function iGe(t,e,r){var i=e(t);return rGe(t)?i:tGe(i,r(t))}ste.exports=iGe});var ate=E((Xpt,ote)=>{function nGe(t,e){for(var r=-1,i=t==null?0:t.length,n=0,s=[];++r{function sGe(){return[]}Ate.exports=sGe});var f0=E(($pt,lte)=>{var oGe=ate(),aGe=RF(),AGe=Object.prototype,lGe=AGe.propertyIsEnumerable,cte=Object.getOwnPropertySymbols,cGe=cte?function(t){return t==null?[]:(t=Object(t),oGe(cte(t),function(e){return lGe.call(t,e)}))}:aGe;lte.exports=cGe});var FF=E((edt,ute)=>{var uGe=DF(),gGe=f0(),fGe=zg();function hGe(t){return uGe(t,fGe,gGe)}ute.exports=hGe});var hte=E((tdt,gte)=>{var fte=FF(),pGe=1,dGe=Object.prototype,CGe=dGe.hasOwnProperty;function mGe(t,e,r,i,n,s){var o=r&pGe,a=fte(t),l=a.length,c=fte(e),u=c.length;if(l!=u&&!o)return!1;for(var g=l;g--;){var f=a[g];if(!(o?f in e:CGe.call(e,f)))return!1}var h=s.get(t),p=s.get(e);if(h&&p)return h==e&&p==t;var d=!0;s.set(t,e),s.set(e,t);for(var m=o;++g{var EGe=UA(),IGe=Ks(),yGe=EGe(IGe,"DataView");pte.exports=yGe});var mte=E((idt,Cte)=>{var wGe=UA(),BGe=Ks(),QGe=wGe(BGe,"Promise");Cte.exports=QGe});var Ite=E((ndt,Ete)=>{var bGe=UA(),vGe=Ks(),SGe=bGe(vGe,"Set");Ete.exports=SGe});var wte=E((sdt,yte)=>{var xGe=UA(),kGe=Ks(),PGe=xGe(kGe,"WeakMap");yte.exports=PGe});var jd=E((odt,Bte)=>{var NF=dte(),LF=VB(),TF=mte(),MF=Ite(),OF=wte(),Qte=Ac(),_g=ZR(),bte="[object Map]",DGe="[object Object]",vte="[object Promise]",Ste="[object Set]",xte="[object WeakMap]",kte="[object DataView]",RGe=_g(NF),FGe=_g(LF),NGe=_g(TF),LGe=_g(MF),TGe=_g(OF),kc=Qte;(NF&&kc(new NF(new ArrayBuffer(1)))!=kte||LF&&kc(new LF)!=bte||TF&&kc(TF.resolve())!=vte||MF&&kc(new MF)!=Ste||OF&&kc(new OF)!=xte)&&(kc=function(t){var e=Qte(t),r=e==DGe?t.constructor:void 0,i=r?_g(r):"";if(i)switch(i){case RGe:return kte;case FGe:return bte;case NGe:return vte;case LGe:return Ste;case TGe:return xte}return e});Bte.exports=kc});var Mte=E((adt,Pte)=>{var KF=Gd(),MGe=xF(),OGe=nte(),KGe=hte(),Dte=jd(),Rte=As(),Fte=Od(),UGe=c0(),HGe=1,Nte="[object Arguments]",Lte="[object Array]",h0="[object Object]",GGe=Object.prototype,Tte=GGe.hasOwnProperty;function jGe(t,e,r,i,n,s){var o=Rte(t),a=Rte(e),l=o?Lte:Dte(t),c=a?Lte:Dte(e);l=l==Nte?h0:l,c=c==Nte?h0:c;var u=l==h0,g=c==h0,f=l==c;if(f&&Fte(t)){if(!Fte(e))return!1;o=!0,u=!1}if(f&&!u)return s||(s=new KF),o||UGe(t)?MGe(t,e,r,i,n,s):OGe(t,e,l,r,i,n,s);if(!(r&HGe)){var h=u&&Tte.call(t,"__wrapped__"),p=g&&Tte.call(e,"__wrapped__");if(h||p){var d=h?t.value():t,m=p?e.value():e;return s||(s=new KF),n(d,m,r,i,s)}}return f?(s||(s=new KF),KGe(t,e,r,i,n,s)):!1}Pte.exports=jGe});var UF=E((Adt,Ote)=>{var YGe=Mte(),Kte=Qo();function Ute(t,e,r,i,n){return t===e?!0:t==null||e==null||!Kte(t)&&!Kte(e)?t!==t&&e!==e:YGe(t,e,r,i,Ute,n)}Ote.exports=Ute});var Gte=E((ldt,Hte)=>{var qGe=Gd(),JGe=UF(),WGe=1,zGe=2;function VGe(t,e,r,i){var n=r.length,s=n,o=!i;if(t==null)return!s;for(t=Object(t);n--;){var a=r[n];if(o&&a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++n{var _Ge=Gs();function XGe(t){return t===t&&!_Ge(t)}jte.exports=XGe});var qte=E((udt,Yte)=>{var ZGe=HF(),$Ge=zg();function eje(t){for(var e=$Ge(t),r=e.length;r--;){var i=e[r],n=t[i];e[r]=[i,n,ZGe(n)]}return e}Yte.exports=eje});var GF=E((gdt,Jte)=>{function tje(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}Jte.exports=tje});var zte=E((fdt,Wte)=>{var rje=Gte(),ije=qte(),nje=GF();function sje(t){var e=ije(t);return e.length==1&&e[0][2]?nje(e[0][0],e[0][1]):function(r){return r===t||rje(r,t,e)}}Wte.exports=sje});var p0=E((hdt,Vte)=>{var oje=xd();function aje(t,e,r){var i=t==null?void 0:oje(t,e);return i===void 0?r:i}Vte.exports=aje});var Xte=E((pdt,_te)=>{var Aje=UF(),lje=p0(),cje=iF(),uje=WB(),gje=HF(),fje=GF(),hje=Sc(),pje=1,dje=2;function Cje(t,e){return uje(t)&&gje(e)?fje(hje(t),e):function(r){var i=lje(r,t);return i===void 0&&i===e?cje(r,t):Aje(e,i,pje|dje)}}_te.exports=Cje});var $te=E((ddt,Zte)=>{function mje(t){return function(e){return e==null?void 0:e[t]}}Zte.exports=mje});var tre=E((Cdt,ere)=>{var Eje=xd();function Ije(t){return function(e){return Eje(e,t)}}ere.exports=Ije});var ire=E((mdt,rre)=>{var yje=$te(),wje=tre(),Bje=WB(),Qje=Sc();function bje(t){return Bje(t)?yje(Qje(t)):wje(t)}rre.exports=bje});var jF=E((Edt,nre)=>{var vje=zte(),Sje=Xte(),xje=e0(),kje=As(),Pje=ire();function Dje(t){return typeof t=="function"?t:t==null?xje:typeof t=="object"?kje(t)?Sje(t[0],t[1]):vje(t):Pje(t)}nre.exports=Dje});var YF=E((Idt,sre)=>{var Rje=jg(),Fje=SF(),Nje=jF();function Lje(t,e){var r={};return e=Nje(e,3),Fje(t,function(i,n,s){Rje(r,n,e(i,n,s))}),r}sre.exports=Lje});var Yd=E((ydt,ore)=>{"use strict";function Pc(t){this._maxSize=t,this.clear()}Pc.prototype.clear=function(){this._size=0,this._values=Object.create(null)};Pc.prototype.get=function(t){return this._values[t]};Pc.prototype.set=function(t,e){return this._size>=this._maxSize&&this.clear(),t in this._values||this._size++,this._values[t]=e};var Tje=/[^.^\]^[]+|(?=\[\]|\.\.)/g,are=/^\d+$/,Mje=/^\d/,Oje=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,Kje=/^\s*(['"]?)(.*?)(\1)\s*$/,qF=512,Are=new Pc(qF),lre=new Pc(qF),cre=new Pc(qF);ore.exports={Cache:Pc,split:WF,normalizePath:JF,setter:function(t){var e=JF(t);return lre.get(t)||lre.set(t,function(i,n){for(var s=0,o=e.length,a=i;s{"use strict";Object.defineProperty(qd,"__esModule",{value:!0});qd.create=Yje;qd.default=void 0;var qje=Yd(),d0={context:"$",value:"."};function Yje(t,e){return new C0(t,e)}var C0=class{constructor(e,r={}){if(typeof e!="string")throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),e==="")throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===d0.context,this.isValue=this.key[0]===d0.value,this.isSibling=!this.isContext&&!this.isValue;let i=this.isContext?d0.context:this.isValue?d0.value:"";this.path=this.key.slice(i.length),this.getter=this.path&&(0,qje.getter)(this.path,!0),this.map=r.map}getValue(e,r,i){let n=this.isContext?i:this.isValue?e:r;return this.getter&&(n=this.getter(n||{})),this.map&&(n=this.map(n)),n}cast(e,r){return this.getValue(e,r==null?void 0:r.parent,r==null?void 0:r.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(e){return e&&e.__isYupRef}};qd.default=C0;C0.prototype.__isYupRef=!0});var ure=E(VF=>{"use strict";Object.defineProperty(VF,"__esModule",{value:!0});VF.default=Jje;var Wje=_F(YF()),m0=_F(xc()),zje=_F(Dc());function _F(t){return t&&t.__esModule?t:{default:t}}function E0(){return E0=Object.assign||function(t){for(var e=1;e=0)&&(r[n]=t[n]);return r}function Jje(t){function e(r,i){let{value:n,path:s="",label:o,options:a,originalValue:l,sync:c}=r,u=Vje(r,["value","path","label","options","originalValue","sync"]),{name:g,test:f,params:h,message:p}=t,{parent:d,context:m}=a;function I(L){return zje.default.isRef(L)?L.getValue(n,d,m):L}function B(L={}){let K=(0,Wje.default)(E0({value:n,originalValue:l,label:o,path:L.path||s},h,L.params),I),J=new m0.default(m0.default.formatError(L.message||p,K),n,K.path,L.type||g);return J.params=K,J}let b=E0({path:s,parent:d,type:g,createError:B,resolve:I,options:a,originalValue:l},u);if(!c){try{Promise.resolve(f.call(b,n,b)).then(L=>{m0.default.isError(L)?i(L):L?i(null,L):i(B())})}catch(L){i(L)}return}let R;try{var H;if(R=f.call(b,n,b),typeof((H=R)==null?void 0:H.then)=="function")throw new Error(`Validation test of type: "${b.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`)}catch(L){i(L);return}m0.default.isError(R)?i(R):R?i(null,R):i(B())}return e.OPTIONS=t,e}});var XF=E(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});Jd.getIn=gre;Jd.default=void 0;var _je=Yd(),Xje=t=>t.substr(0,t.length-1).substr(1);function gre(t,e,r,i=r){let n,s,o;return e?((0,_je.forEach)(e,(a,l,c)=>{let u=l?Xje(a):a;if(t=t.resolve({context:i,parent:n,value:r}),t.innerType){let g=c?parseInt(u,10):0;if(r&&g>=r.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${a}, in the path: ${e}. because there is no value at that index. `);n=r,r=r&&r[g],t=t.innerType}if(!c){if(!t.fields||!t.fields[u])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${o} which is a type: "${t._type}")`);n=r,r=r&&r[u],t=t.fields[u]}s=u,o=l?"["+a+"]":"."+a}),{schema:t,parent:n,parentPath:s}):{parent:n,parentPath:e,schema:t}}var Zje=(t,e,r,i)=>gre(t,e,r,i).schema,$je=Zje;Jd.default=$je});var hre=E(I0=>{"use strict";Object.defineProperty(I0,"__esModule",{value:!0});I0.default=void 0;var fre=eYe(Dc());function eYe(t){return t&&t.__esModule?t:{default:t}}var y0=class{constructor(){this.list=new Set,this.refs=new Map}get size(){return this.list.size+this.refs.size}describe(){let e=[];for(let r of this.list)e.push(r);for(let[,r]of this.refs)e.push(r.describe());return e}toArray(){return Array.from(this.list).concat(Array.from(this.refs.values()))}add(e){fre.default.isRef(e)?this.refs.set(e.key,e):this.list.add(e)}delete(e){fre.default.isRef(e)?this.refs.delete(e.key):this.list.delete(e)}has(e,r){if(this.list.has(e))return!0;let i,n=this.refs.values();for(;i=n.next(),!i.done;)if(r(i.value)===e)return!0;return!1}clone(){let e=new y0;return e.list=new Set(this.list),e.refs=new Map(this.refs),e}merge(e,r){let i=this.clone();return e.list.forEach(n=>i.add(n)),e.refs.forEach(n=>i.add(n)),r.list.forEach(n=>i.delete(n)),r.refs.forEach(n=>i.delete(n)),i}};I0.default=y0});var Ma=E(w0=>{"use strict";Object.defineProperty(w0,"__esModule",{value:!0});w0.default=void 0;var pre=Ta(M$()),Xg=La(),tYe=Ta(Z$()),dre=Ta(a0()),B0=Ta(ure()),Cre=Ta(Nd()),rYe=Ta(Dc()),iYe=XF(),nYe=Ta(EF()),mre=Ta(xc()),Ere=Ta(hre());function Ta(t){return t&&t.__esModule?t:{default:t}}function ds(){return ds=Object.assign||function(t){for(var e=1;e{this.typeError(Xg.mixed.notType)}),this.type=(e==null?void 0:e.type)||"mixed",this.spec=ds({strip:!1,strict:!1,abortEarly:!0,recursive:!0,nullable:!1,presence:"optional"},e==null?void 0:e.spec)}get _type(){return this.type}_typeCheck(e){return!0}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;let r=Object.create(Object.getPrototypeOf(this));return r.type=this.type,r._typeError=this._typeError,r._whitelistError=this._whitelistError,r._blacklistError=this._blacklistError,r._whitelist=this._whitelist.clone(),r._blacklist=this._blacklist.clone(),r.exclusiveTests=ds({},this.exclusiveTests),r.deps=[...this.deps],r.conditions=[...this.conditions],r.tests=[...this.tests],r.transforms=[...this.transforms],r.spec=(0,pre.default)(ds({},this.spec,e)),r}label(e){var r=this.clone();return r.spec.label=e,r}meta(...e){if(e.length===0)return this.spec.meta;let r=this.clone();return r.spec.meta=Object.assign(r.spec.meta||{},e[0]),r}withMutation(e){let r=this._mutate;this._mutate=!0;let i=e(this);return this._mutate=r,i}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&this.type!=="mixed")throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let r=this,i=e.clone(),n=ds({},r.spec,i.spec);return i.spec=n,i._typeError||(i._typeError=r._typeError),i._whitelistError||(i._whitelistError=r._whitelistError),i._blacklistError||(i._blacklistError=r._blacklistError),i._whitelist=r._whitelist.merge(e._whitelist,e._blacklist),i._blacklist=r._blacklist.merge(e._blacklist,e._whitelist),i.tests=r.tests,i.exclusiveTests=r.exclusiveTests,i.withMutation(s=>{e.tests.forEach(o=>{s.test(o.OPTIONS)})}),i}isType(e){return this.spec.nullable&&e===null?!0:this._typeCheck(e)}resolve(e){let r=this;if(r.conditions.length){let i=r.conditions;r=r.clone(),r.conditions=[],r=i.reduce((n,s)=>s.resolve(n,e),r),r=r.resolve(e)}return r}cast(e,r={}){let i=this.resolve(ds({value:e},r)),n=i._cast(e,r);if(e!==void 0&&r.assert!==!1&&i.isType(n)!==!0){let s=(0,Cre.default)(e),o=(0,Cre.default)(n);throw new TypeError(`The value of ${r.path||"field"} could not be cast to a value that satisfies the schema type: "${i._type}". - -attempted value: ${s} -`+(o!==s?`result of cast: ${o}`:""))}return n}_cast(e,r){let i=e===void 0?e:this.transforms.reduce((n,s)=>s.call(this,n,e,this),e);return i===void 0&&(i=this.getDefault()),i}_validate(e,r={},i){let{sync:n,path:s,from:o=[],originalValue:a=e,strict:l=this.spec.strict,abortEarly:c=this.spec.abortEarly}=r,u=e;l||(u=this._cast(u,ds({assert:!1},r)));let g={value:u,path:s,options:r,originalValue:a,schema:this,label:this.spec.label,sync:n,from:o},f=[];this._typeError&&f.push(this._typeError),this._whitelistError&&f.push(this._whitelistError),this._blacklistError&&f.push(this._blacklistError),(0,dre.default)({args:g,value:u,path:s,sync:n,tests:f,endEarly:c},h=>{if(h)return void i(h,u);(0,dre.default)({tests:this.tests,args:g,path:s,sync:n,value:u,endEarly:c},i)})}validate(e,r,i){let n=this.resolve(ds({},r,{value:e}));return typeof i=="function"?n._validate(e,r,i):new Promise((s,o)=>n._validate(e,r,(a,l)=>{a?o(a):s(l)}))}validateSync(e,r){let i=this.resolve(ds({},r,{value:e})),n;return i._validate(e,ds({},r,{sync:!0}),(s,o)=>{if(s)throw s;n=o}),n}isValid(e,r){return this.validate(e,r).then(()=>!0,i=>{if(mre.default.isError(i))return!1;throw i})}isValidSync(e,r){try{return this.validateSync(e,r),!0}catch(i){if(mre.default.isError(i))return!1;throw i}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,pre.default)(e)}getDefault(e){return this.resolve(e||{})._getDefault()}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){var r=this.clone();return r.spec.strict=e,r}_isPresent(e){return e!=null}defined(e=Xg.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(r){return r!==void 0}})}required(e=Xg.mixed.required){return this.clone({presence:"required"}).withMutation(r=>r.test({message:e,name:"required",exclusive:!0,test(i){return this.schema._isPresent(i)}}))}notRequired(){var e=this.clone({presence:"optional"});return e.tests=e.tests.filter(r=>r.OPTIONS.name!=="required"),e}nullable(e=!0){var r=this.clone({nullable:e!==!1});return r}transform(e){var r=this.clone();return r.transforms.push(e),r}test(...e){let r;if(e.length===1?typeof e[0]=="function"?r={test:e[0]}:r=e[0]:e.length===2?r={name:e[0],test:e[1]}:r={name:e[0],message:e[1],test:e[2]},r.message===void 0&&(r.message=Xg.mixed.default),typeof r.test!="function")throw new TypeError("`test` is a required parameters");let i=this.clone(),n=(0,B0.default)(r),s=r.exclusive||r.name&&i.exclusiveTests[r.name]===!0;if(r.exclusive&&!r.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return r.name&&(i.exclusiveTests[r.name]=!!r.exclusive),i.tests=i.tests.filter(o=>!(o.OPTIONS.name===r.name&&(s||o.OPTIONS.test===n.OPTIONS.test))),i.tests.push(n),i}when(e,r){!Array.isArray(e)&&typeof e!="string"&&(r=e,e=".");let i=this.clone(),n=(0,nYe.default)(e).map(s=>new rYe.default(s));return n.forEach(s=>{s.isSibling&&i.deps.push(s.key)}),i.conditions.push(new tYe.default(n,r)),i}typeError(e){var r=this.clone();return r._typeError=(0,B0.default)({message:e,name:"typeError",test(i){return i!==void 0&&!this.schema.isType(i)?this.createError({params:{type:this.schema._type}}):!0}}),r}oneOf(e,r=Xg.mixed.oneOf){var i=this.clone();return e.forEach(n=>{i._whitelist.add(n),i._blacklist.delete(n)}),i._whitelistError=(0,B0.default)({message:r,name:"oneOf",test(n){if(n===void 0)return!0;let s=this.schema._whitelist;return s.has(n,this.resolve)?!0:this.createError({params:{values:s.toArray().join(", ")}})}}),i}notOneOf(e,r=Xg.mixed.notOneOf){var i=this.clone();return e.forEach(n=>{i._blacklist.add(n),i._whitelist.delete(n)}),i._blacklistError=(0,B0.default)({message:r,name:"notOneOf",test(n){let s=this.schema._blacklist;return s.has(n,this.resolve)?this.createError({params:{values:s.toArray().join(", ")}}):!0}}),i}strip(e=!0){let r=this.clone();return r.spec.strip=e,r}describe(){let e=this.clone(),{label:r,meta:i}=e.spec;return{meta:i,label:r,type:e.type,oneOf:e._whitelist.describe(),notOneOf:e._blacklist.describe(),tests:e.tests.map(s=>({name:s.OPTIONS.name,params:s.OPTIONS.params})).filter((s,o,a)=>a.findIndex(l=>l.name===s.name)===o)}}};w0.default=Do;Do.prototype.__isYupSchema__=!0;for(let t of["validate","validateSync"])Do.prototype[`${t}At`]=function(e,r,i={}){let{parent:n,parentPath:s,schema:o}=(0,iYe.getIn)(this,e,r,i.context);return o[t](n&&n[s],ds({},i,{parent:n,path:e}))};for(let t of["equals","is"])Do.prototype[t]=Do.prototype.oneOf;for(let t of["not","nope"])Do.prototype[t]=Do.prototype.notOneOf;Do.prototype.optional=Do.prototype.notRequired});var yre=E(Wd=>{"use strict";Object.defineProperty(Wd,"__esModule",{value:!0});Wd.create=Ire;Wd.default=void 0;var oYe=sYe(Ma());function sYe(t){return t&&t.__esModule?t:{default:t}}var ZF=oYe.default,aYe=ZF;Wd.default=aYe;function Ire(){return new ZF}Ire.prototype=ZF.prototype});var Zg=E(Q0=>{"use strict";Object.defineProperty(Q0,"__esModule",{value:!0});Q0.default=void 0;var AYe=t=>t==null;Q0.default=AYe});var vre=E(zd=>{"use strict";Object.defineProperty(zd,"__esModule",{value:!0});zd.create=wre;zd.default=void 0;var lYe=Bre(Ma()),Qre=La(),bre=Bre(Zg());function Bre(t){return t&&t.__esModule?t:{default:t}}function wre(){return new b0}var b0=class extends lYe.default{constructor(){super({type:"boolean"});this.withMutation(()=>{this.transform(function(e){if(!this.isType(e)){if(/^(true|1)$/i.test(String(e)))return!0;if(/^(false|0)$/i.test(String(e)))return!1}return e})})}_typeCheck(e){return e instanceof Boolean&&(e=e.valueOf()),typeof e=="boolean"}isTrue(e=Qre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(r){return(0,bre.default)(r)||r===!0}})}isFalse(e=Qre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(r){return(0,bre.default)(r)||r===!1}})}};zd.default=b0;wre.prototype=b0.prototype});var kre=E(Vd=>{"use strict";Object.defineProperty(Vd,"__esModule",{value:!0});Vd.create=Sre;Vd.default=void 0;var Ro=La(),Oa=xre(Zg()),cYe=xre(Ma());function xre(t){return t&&t.__esModule?t:{default:t}}var uYe=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,gYe=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,fYe=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,hYe=t=>(0,Oa.default)(t)||t===t.trim(),pYe={}.toString();function Sre(){return new v0}var v0=class extends cYe.default{constructor(){super({type:"string"});this.withMutation(()=>{this.transform(function(e){if(this.isType(e)||Array.isArray(e))return e;let r=e!=null&&e.toString?e.toString():e;return r===pYe?e:r})})}_typeCheck(e){return e instanceof String&&(e=e.valueOf()),typeof e=="string"}_isPresent(e){return super._isPresent(e)&&!!e.length}length(e,r=Ro.string.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(i){return(0,Oa.default)(i)||i.length===this.resolve(e)}})}min(e,r=Ro.string.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Oa.default)(i)||i.length>=this.resolve(e)}})}max(e,r=Ro.string.max){return this.test({name:"max",exclusive:!0,message:r,params:{max:e},test(i){return(0,Oa.default)(i)||i.length<=this.resolve(e)}})}matches(e,r){let i=!1,n,s;return r&&(typeof r=="object"?{excludeEmptyString:i=!1,message:n,name:s}=r:n=r),this.test({name:s||"matches",message:n||Ro.string.matches,params:{regex:e},test:o=>(0,Oa.default)(o)||o===""&&i||o.search(e)!==-1})}email(e=Ro.string.email){return this.matches(uYe,{name:"email",message:e,excludeEmptyString:!0})}url(e=Ro.string.url){return this.matches(gYe,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=Ro.string.uuid){return this.matches(fYe,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=Ro.string.trim){return this.transform(r=>r!=null?r.trim():r).test({message:e,name:"trim",test:hYe})}lowercase(e=Ro.string.lowercase){return this.transform(r=>(0,Oa.default)(r)?r:r.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Oa.default)(r)||r===r.toLowerCase()})}uppercase(e=Ro.string.uppercase){return this.transform(r=>(0,Oa.default)(r)?r:r.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Oa.default)(r)||r===r.toUpperCase()})}};Vd.default=v0;Sre.prototype=v0.prototype});var Rre=E(_d=>{"use strict";Object.defineProperty(_d,"__esModule",{value:!0});_d.create=Pre;_d.default=void 0;var Rc=La(),Fc=Dre(Zg()),dYe=Dre(Ma());function Dre(t){return t&&t.__esModule?t:{default:t}}var CYe=t=>t!=+t;function Pre(){return new S0}var S0=class extends dYe.default{constructor(){super({type:"number"});this.withMutation(()=>{this.transform(function(e){let r=e;if(typeof r=="string"){if(r=r.replace(/\s/g,""),r==="")return NaN;r=+r}return this.isType(r)?r:parseFloat(r)})})}_typeCheck(e){return e instanceof Number&&(e=e.valueOf()),typeof e=="number"&&!CYe(e)}min(e,r=Rc.number.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Fc.default)(i)||i>=this.resolve(e)}})}max(e,r=Rc.number.max){return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,Fc.default)(i)||i<=this.resolve(e)}})}lessThan(e,r=Rc.number.lessThan){return this.test({message:r,name:"max",exclusive:!0,params:{less:e},test(i){return(0,Fc.default)(i)||ithis.resolve(e)}})}positive(e=Rc.number.positive){return this.moreThan(0,e)}negative(e=Rc.number.negative){return this.lessThan(0,e)}integer(e=Rc.number.integer){return this.test({name:"integer",message:e,test:r=>(0,Fc.default)(r)||Number.isInteger(r)})}truncate(){return this.transform(e=>(0,Fc.default)(e)?e:e|0)}round(e){var r,i=["ceil","floor","round","trunc"];if(e=((r=e)==null?void 0:r.toLowerCase())||"round",e==="trunc")return this.truncate();if(i.indexOf(e.toLowerCase())===-1)throw new TypeError("Only valid options for round() are: "+i.join(", "));return this.transform(n=>(0,Fc.default)(n)?n:Math[e](n))}};_d.default=S0;Pre.prototype=S0.prototype});var Fre=E($F=>{"use strict";Object.defineProperty($F,"__esModule",{value:!0});$F.default=mYe;var EYe=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function mYe(t){var e=[1,4,5,6,7,10,11],r=0,i,n;if(n=EYe.exec(t)){for(var s=0,o;o=e[s];++s)n[o]=+n[o]||0;n[2]=(+n[2]||1)-1,n[3]=+n[3]||1,n[7]=n[7]?String(n[7]).substr(0,3):0,(n[8]===void 0||n[8]==="")&&(n[9]===void 0||n[9]==="")?i=+new Date(n[1],n[2],n[3],n[4],n[5],n[6],n[7]):(n[8]!=="Z"&&n[9]!==void 0&&(r=n[10]*60+n[11],n[9]==="+"&&(r=0-r)),i=Date.UTC(n[1],n[2],n[3],n[4],n[5]+r,n[6],n[7]))}else i=Date.parse?Date.parse(t):NaN;return i}});var Tre=E(Xd=>{"use strict";Object.defineProperty(Xd,"__esModule",{value:!0});Xd.create=eN;Xd.default=void 0;var IYe=x0(Fre()),Nre=La(),Lre=x0(Zg()),yYe=x0(Dc()),wYe=x0(Ma());function x0(t){return t&&t.__esModule?t:{default:t}}var tN=new Date(""),BYe=t=>Object.prototype.toString.call(t)==="[object Date]";function eN(){return new Zd}var Zd=class extends wYe.default{constructor(){super({type:"date"});this.withMutation(()=>{this.transform(function(e){return this.isType(e)?e:(e=(0,IYe.default)(e),isNaN(e)?tN:new Date(e))})})}_typeCheck(e){return BYe(e)&&!isNaN(e.getTime())}prepareParam(e,r){let i;if(yYe.default.isRef(e))i=e;else{let n=this.cast(e);if(!this._typeCheck(n))throw new TypeError(`\`${r}\` must be a Date or a value that can be \`cast()\` to a Date`);i=n}return i}min(e,r=Nre.date.min){let i=this.prepareParam(e,"min");return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Lre.default)(n)||n>=this.resolve(i)}})}max(e,r=Nre.date.max){var i=this.prepareParam(e,"max");return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,Lre.default)(n)||n<=this.resolve(i)}})}};Xd.default=Zd;Zd.INVALID_DATE=tN;eN.prototype=Zd.prototype;eN.INVALID_DATE=tN});var Ore=E((Ndt,Mre)=>{function QYe(t,e,r,i){var n=-1,s=t==null?0:t.length;for(i&&s&&(r=t[++n]);++n{function bYe(t){return function(e){return t==null?void 0:t[e]}}Kre.exports=bYe});var Gre=E((Tdt,Hre)=>{var vYe=Ure(),SYe={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},xYe=vYe(SYe);Hre.exports=xYe});var Yre=E((Mdt,jre)=>{var kYe=Gre(),PYe=gg(),DYe=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,RYe="\\u0300-\\u036f",FYe="\\ufe20-\\ufe2f",NYe="\\u20d0-\\u20ff",LYe=RYe+FYe+NYe,TYe="["+LYe+"]",MYe=RegExp(TYe,"g");function OYe(t){return t=PYe(t),t&&t.replace(DYe,kYe).replace(MYe,"")}jre.exports=OYe});var Jre=E((Odt,qre)=>{var KYe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function UYe(t){return t.match(KYe)||[]}qre.exports=UYe});var zre=E((Kdt,Wre)=>{var HYe=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function GYe(t){return HYe.test(t)}Wre.exports=GYe});var fie=E((Udt,Vre)=>{var _re="\\ud800-\\udfff",jYe="\\u0300-\\u036f",YYe="\\ufe20-\\ufe2f",qYe="\\u20d0-\\u20ff",JYe=jYe+YYe+qYe,Xre="\\u2700-\\u27bf",Zre="a-z\\xdf-\\xf6\\xf8-\\xff",WYe="\\xac\\xb1\\xd7\\xf7",zYe="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",VYe="\\u2000-\\u206f",_Ye=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",$re="A-Z\\xc0-\\xd6\\xd8-\\xde",XYe="\\ufe0e\\ufe0f",eie=WYe+zYe+VYe+_Ye,tie="['\u2019]",rie="["+eie+"]",ZYe="["+JYe+"]",iie="\\d+",$Ye="["+Xre+"]",nie="["+Zre+"]",sie="[^"+_re+eie+iie+Xre+Zre+$re+"]",eqe="\\ud83c[\\udffb-\\udfff]",tqe="(?:"+ZYe+"|"+eqe+")",rqe="[^"+_re+"]",oie="(?:\\ud83c[\\udde6-\\uddff]){2}",aie="[\\ud800-\\udbff][\\udc00-\\udfff]",$g="["+$re+"]",iqe="\\u200d",Aie="(?:"+nie+"|"+sie+")",nqe="(?:"+$g+"|"+sie+")",lie="(?:"+tie+"(?:d|ll|m|re|s|t|ve))?",cie="(?:"+tie+"(?:D|LL|M|RE|S|T|VE))?",uie=tqe+"?",gie="["+XYe+"]?",sqe="(?:"+iqe+"(?:"+[rqe,oie,aie].join("|")+")"+gie+uie+")*",oqe="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",aqe="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Aqe=gie+uie+sqe,lqe="(?:"+[$Ye,oie,aie].join("|")+")"+Aqe,cqe=RegExp([$g+"?"+nie+"+"+lie+"(?="+[rie,$g,"$"].join("|")+")",nqe+"+"+cie+"(?="+[rie,$g+Aie,"$"].join("|")+")",$g+"?"+Aie+"+"+lie,$g+"+"+cie,aqe,oqe,iie,lqe].join("|"),"g");function uqe(t){return t.match(cqe)||[]}Vre.exports=uqe});var pie=E((Hdt,hie)=>{var gqe=Jre(),fqe=zre(),hqe=gg(),pqe=fie();function dqe(t,e,r){return t=hqe(t),e=r?void 0:e,e===void 0?fqe(t)?pqe(t):gqe(t):t.match(e)||[]}hie.exports=dqe});var rN=E((Gdt,die)=>{var Cqe=Ore(),mqe=Yre(),Eqe=pie(),Iqe="['\u2019]",yqe=RegExp(Iqe,"g");function wqe(t){return function(e){return Cqe(Eqe(mqe(e).replace(yqe,"")),t,"")}}die.exports=wqe});var mie=E((jdt,Cie)=>{var Bqe=rN(),Qqe=Bqe(function(t,e,r){return t+(r?"_":"")+e.toLowerCase()});Cie.exports=Qqe});var Iie=E((Ydt,Eie)=>{var bqe=ZP(),vqe=rN(),Sqe=vqe(function(t,e,r){return e=e.toLowerCase(),t+(r?bqe(e):e)});Eie.exports=Sqe});var wie=E((qdt,yie)=>{var xqe=jg(),kqe=SF(),Pqe=jF();function Dqe(t,e){var r={};return e=Pqe(e,3),kqe(t,function(i,n,s){xqe(r,e(i,n,s),i)}),r}yie.exports=Dqe});var Qie=E((Jdt,iN)=>{iN.exports=function(t){return Bie(Rqe(t),t)};iN.exports.array=Bie;function Bie(t,e){var r=t.length,i=new Array(r),n={},s=r,o=Fqe(e),a=Nqe(t);for(e.forEach(function(c){if(!a.has(c[0])||!a.has(c[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});s--;)n[s]||l(t[s],s,new Set);return i;function l(c,u,g){if(g.has(c)){var f;try{f=", node was:"+JSON.stringify(c)}catch(d){f=""}throw new Error("Cyclic dependency"+f)}if(!a.has(c))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(c));if(!n[u]){n[u]=!0;var h=o.get(c)||new Set;if(h=Array.from(h),u=h.length){g.add(c);do{var p=h[--u];l(p,a.get(p),g)}while(u);g.delete(c)}i[--r]=c}}}function Rqe(t){for(var e=new Set,r=0,i=t.length;r{"use strict";Object.defineProperty(nN,"__esModule",{value:!0});nN.default=Lqe;var Tqe=k0(Ld()),Mqe=k0(Qie()),Oqe=Yd(),Kqe=k0(Dc()),Uqe=k0(qg());function k0(t){return t&&t.__esModule?t:{default:t}}function Lqe(t,e=[]){let r=[],i=[];function n(s,o){var a=(0,Oqe.split)(s)[0];~i.indexOf(a)||i.push(a),~e.indexOf(`${o}-${a}`)||r.push([o,a])}for(let s in t)if((0,Tqe.default)(t,s)){let o=t[s];~i.indexOf(s)||i.push(s),Kqe.default.isRef(o)&&o.isSibling?n(o.path,s):(0,Uqe.default)(o)&&"deps"in o&&o.deps.forEach(a=>n(a,s))}return Mqe.default.array(i,r).reverse()}});var Sie=E(sN=>{"use strict";Object.defineProperty(sN,"__esModule",{value:!0});sN.default=Hqe;function vie(t,e){let r=Infinity;return t.some((i,n)=>{var s;if(((s=e.path)==null?void 0:s.indexOf(i))!==-1)return r=n,!0}),r}function Hqe(t){return(e,r)=>vie(t,e)-vie(t,r)}});var Nie=E($d=>{"use strict";Object.defineProperty($d,"__esModule",{value:!0});$d.create=xie;$d.default=void 0;var kie=Fo(Ld()),Pie=Fo(mie()),Gqe=Fo(Iie()),jqe=Fo(wie()),Yqe=Fo(YF()),qqe=Yd(),Die=La(),Jqe=Fo(bie()),Rie=Fo(Sie()),Wqe=Fo(a0()),zqe=Fo(xc()),oN=Fo(Ma());function Fo(t){return t&&t.__esModule?t:{default:t}}function ef(){return ef=Object.assign||function(t){for(var e=1;eObject.prototype.toString.call(t)==="[object Object]";function Vqe(t,e){let r=Object.keys(t.fields);return Object.keys(e).filter(i=>r.indexOf(i)===-1)}var _qe=(0,Rie.default)([]),P0=class extends oN.default{constructor(e){super({type:"object"});this.fields=Object.create(null),this._sortErrors=_qe,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{this.transform(function(i){if(typeof i=="string")try{i=JSON.parse(i)}catch(n){i=null}return this.isType(i)?i:null}),e&&this.shape(e)})}_typeCheck(e){return Fie(e)||typeof e=="function"}_cast(e,r={}){var i;let n=super._cast(e,r);if(n===void 0)return this.getDefault();if(!this._typeCheck(n))return n;let s=this.fields,o=(i=r.stripUnknown)!=null?i:this.spec.noUnknown,a=this._nodes.concat(Object.keys(n).filter(g=>this._nodes.indexOf(g)===-1)),l={},c=ef({},r,{parent:l,__validating:r.__validating||!1}),u=!1;for(let g of a){let f=s[g],h=(0,kie.default)(n,g);if(f){let p,d=n[g];c.path=(r.path?`${r.path}.`:"")+g,f=f.resolve({value:d,context:r.context,parent:l});let m="spec"in f?f.spec:void 0,I=m==null?void 0:m.strict;if(m==null?void 0:m.strip){u=u||g in n;continue}p=!r.__validating||!I?f.cast(n[g],c):n[g],p!==void 0&&(l[g]=p)}else h&&!o&&(l[g]=n[g]);l[g]!==n[g]&&(u=!0)}return u?l:n}_validate(e,r={},i){let n=[],{sync:s,from:o=[],originalValue:a=e,abortEarly:l=this.spec.abortEarly,recursive:c=this.spec.recursive}=r;o=[{schema:this,value:a},...o],r.__validating=!0,r.originalValue=a,r.from=o,super._validate(e,r,(u,g)=>{if(u){if(!zqe.default.isError(u)||l)return void i(u,g);n.push(u)}if(!c||!Fie(g)){i(n[0]||null,g);return}a=a||g;let f=this._nodes.map(h=>(p,d)=>{let m=h.indexOf(".")===-1?(r.path?`${r.path}.`:"")+h:`${r.path||""}["${h}"]`,I=this.fields[h];if(I&&"validate"in I){I.validate(g[h],ef({},r,{path:m,from:o,strict:!0,parent:g,originalValue:a[h]}),d);return}d(null)});(0,Wqe.default)({sync:s,tests:f,value:g,errors:n,endEarly:l,sort:this._sortErrors,path:r.path},i)})}clone(e){let r=super.clone(e);return r.fields=ef({},this.fields),r._nodes=this._nodes,r._excludedEdges=this._excludedEdges,r._sortErrors=this._sortErrors,r}concat(e){let r=super.concat(e),i=r.fields;for(let[n,s]of Object.entries(this.fields)){let o=i[n];o===void 0?i[n]=s:o instanceof oN.default&&s instanceof oN.default&&(i[n]=s.concat(o))}return r.withMutation(()=>r.shape(i))}getDefaultFromShape(){let e={};return this._nodes.forEach(r=>{let i=this.fields[r];e[r]="default"in i?i.getDefault():void 0}),e}_getDefault(){if("default"in this.spec)return super._getDefault();if(!!this._nodes.length)return this.getDefaultFromShape()}shape(e,r=[]){let i=this.clone(),n=Object.assign(i.fields,e);if(i.fields=n,i._sortErrors=(0,Rie.default)(Object.keys(n)),r.length){Array.isArray(r[0])||(r=[r]);let s=r.map(([o,a])=>`${o}-${a}`);i._excludedEdges=i._excludedEdges.concat(s)}return i._nodes=(0,Jqe.default)(n,i._excludedEdges),i}pick(e){let r={};for(let i of e)this.fields[i]&&(r[i]=this.fields[i]);return this.clone().withMutation(i=>(i.fields={},i.shape(r)))}omit(e){let r=this.clone(),i=r.fields;r.fields={};for(let n of e)delete i[n];return r.withMutation(()=>r.shape(i))}from(e,r,i){let n=(0,qqe.getter)(e,!0);return this.transform(s=>{if(s==null)return s;let o=s;return(0,kie.default)(s,e)&&(o=ef({},s),i||delete o[e],o[r]=n(s)),o})}noUnknown(e=!0,r=Die.object.noUnknown){typeof e=="string"&&(r=e,e=!0);let i=this.test({name:"noUnknown",exclusive:!0,message:r,test(n){if(n==null)return!0;let s=Vqe(this.schema,n);return!e||s.length===0||this.createError({params:{unknown:s.join(", ")}})}});return i.spec.noUnknown=e,i}unknown(e=!0,r=Die.object.noUnknown){return this.noUnknown(!e,r)}transformKeys(e){return this.transform(r=>r&&(0,jqe.default)(r,(i,n)=>e(n)))}camelCase(){return this.transformKeys(Gqe.default)}snakeCase(){return this.transformKeys(Pie.default)}constantCase(){return this.transformKeys(e=>(0,Pie.default)(e).toUpperCase())}describe(){let e=super.describe();return e.fields=(0,Yqe.default)(this.fields,r=>r.describe()),e}};$d.default=P0;function xie(t){return new P0(t)}xie.prototype=P0.prototype});var Tie=E(eC=>{"use strict";Object.defineProperty(eC,"__esModule",{value:!0});eC.create=Lie;eC.default=void 0;var aN=tf(Zg()),Xqe=tf(qg()),Zqe=tf(Nd()),AN=La(),$qe=tf(a0()),eJe=tf(xc()),tJe=tf(Ma());function tf(t){return t&&t.__esModule?t:{default:t}}function D0(){return D0=Object.assign||function(t){for(var e=1;e{this.transform(function(r){if(typeof r=="string")try{r=JSON.parse(r)}catch(i){r=null}return this.isType(r)?r:null})})}_typeCheck(e){return Array.isArray(e)}get _subType(){return this.innerType}_cast(e,r){let i=super._cast(e,r);if(!this._typeCheck(i)||!this.innerType)return i;let n=!1,s=i.map((o,a)=>{let l=this.innerType.cast(o,D0({},r,{path:`${r.path||""}[${a}]`}));return l!==o&&(n=!0),l});return n?s:i}_validate(e,r={},i){var n,s;let o=[],a=r.sync,l=r.path,c=this.innerType,u=(n=r.abortEarly)!=null?n:this.spec.abortEarly,g=(s=r.recursive)!=null?s:this.spec.recursive,f=r.originalValue!=null?r.originalValue:e;super._validate(e,r,(h,p)=>{if(h){if(!eJe.default.isError(h)||u)return void i(h,p);o.push(h)}if(!g||!c||!this._typeCheck(p)){i(o[0]||null,p);return}f=f||p;let d=new Array(p.length);for(let m=0;mc.validate(I,b,H)}(0,$qe.default)({sync:a,path:l,value:p,errors:o,endEarly:u,tests:d},i)})}clone(e){let r=super.clone(e);return r.innerType=this.innerType,r}concat(e){let r=super.concat(e);return r.innerType=this.innerType,e.innerType&&(r.innerType=r.innerType?r.innerType.concat(e.innerType):e.innerType),r}of(e){let r=this.clone();if(!(0,Xqe.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+(0,Zqe.default)(e));return r.innerType=e,r}length(e,r=AN.array.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(i){return(0,aN.default)(i)||i.length===this.resolve(e)}})}min(e,r){return r=r||AN.array.min,this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,aN.default)(i)||i.length>=this.resolve(e)}})}max(e,r){return r=r||AN.array.max,this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,aN.default)(i)||i.length<=this.resolve(e)}})}ensure(){return this.default(()=>[]).transform((e,r)=>this._typeCheck(e)?e:r==null?[]:[].concat(r))}compact(e){let r=e?(i,n,s)=>!e(i,n,s):i=>!!i;return this.transform(i=>i!=null?i.filter(r):i)}describe(){let e=super.describe();return this.innerType&&(e.innerType=this.innerType.describe()),e}nullable(e=!0){return super.nullable(e)}defined(){return super.defined()}required(e){return super.required(e)}};eC.default=R0;Lie.prototype=R0.prototype});var Mie=E(tC=>{"use strict";Object.defineProperty(tC,"__esModule",{value:!0});tC.create=rJe;tC.default=void 0;var nJe=iJe(qg());function iJe(t){return t&&t.__esModule?t:{default:t}}function rJe(t){return new lN(t)}var lN=class{constructor(e){this.type="lazy",this.__isYupSchema__=!0,this._resolve=(r,i={})=>{let n=this.builder(r,i);if(!(0,nJe.default)(n))throw new TypeError("lazy() functions must return a valid schema");return n.resolve(i)},this.builder=e}resolve(e){return this._resolve(e.value,e)}cast(e,r){return this._resolve(e,r).cast(e,r)}validate(e,r,i){return this._resolve(e,r).validate(e,r,i)}validateSync(e,r){return this._resolve(e,r).validateSync(e,r)}validateAt(e,r,i){return this._resolve(r,i).validateAt(e,r,i)}validateSyncAt(e,r,i){return this._resolve(r,i).validateSyncAt(e,r,i)}describe(){return null}isValid(e,r){return this._resolve(e,r).isValid(e,r)}isValidSync(e,r){return this._resolve(e,r).isValidSync(e,r)}},sJe=lN;tC.default=sJe});var Oie=E(cN=>{"use strict";Object.defineProperty(cN,"__esModule",{value:!0});cN.default=oJe;var AJe=aJe(La());function aJe(t){return t&&t.__esModule?t:{default:t}}function oJe(t){Object.keys(t).forEach(e=>{Object.keys(t[e]).forEach(r=>{AJe.default[e][r]=t[e][r]})})}});var gN=E(cr=>{"use strict";Object.defineProperty(cr,"__esModule",{value:!0});cr.addMethod=lJe;Object.defineProperty(cr,"MixedSchema",{enumerable:!0,get:function(){return Kie.default}});Object.defineProperty(cr,"mixed",{enumerable:!0,get:function(){return Kie.create}});Object.defineProperty(cr,"BooleanSchema",{enumerable:!0,get:function(){return uN.default}});Object.defineProperty(cr,"bool",{enumerable:!0,get:function(){return uN.create}});Object.defineProperty(cr,"boolean",{enumerable:!0,get:function(){return uN.create}});Object.defineProperty(cr,"StringSchema",{enumerable:!0,get:function(){return Uie.default}});Object.defineProperty(cr,"string",{enumerable:!0,get:function(){return Uie.create}});Object.defineProperty(cr,"NumberSchema",{enumerable:!0,get:function(){return Hie.default}});Object.defineProperty(cr,"number",{enumerable:!0,get:function(){return Hie.create}});Object.defineProperty(cr,"DateSchema",{enumerable:!0,get:function(){return Gie.default}});Object.defineProperty(cr,"date",{enumerable:!0,get:function(){return Gie.create}});Object.defineProperty(cr,"ObjectSchema",{enumerable:!0,get:function(){return jie.default}});Object.defineProperty(cr,"object",{enumerable:!0,get:function(){return jie.create}});Object.defineProperty(cr,"ArraySchema",{enumerable:!0,get:function(){return Yie.default}});Object.defineProperty(cr,"array",{enumerable:!0,get:function(){return Yie.create}});Object.defineProperty(cr,"ref",{enumerable:!0,get:function(){return cJe.create}});Object.defineProperty(cr,"lazy",{enumerable:!0,get:function(){return uJe.create}});Object.defineProperty(cr,"ValidationError",{enumerable:!0,get:function(){return gJe.default}});Object.defineProperty(cr,"reach",{enumerable:!0,get:function(){return fJe.default}});Object.defineProperty(cr,"isSchema",{enumerable:!0,get:function(){return qie.default}});Object.defineProperty(cr,"setLocale",{enumerable:!0,get:function(){return hJe.default}});Object.defineProperty(cr,"BaseSchema",{enumerable:!0,get:function(){return pJe.default}});var Kie=Nc(yre()),uN=Nc(vre()),Uie=Nc(kre()),Hie=Nc(Rre()),Gie=Nc(Tre()),jie=Nc(Nie()),Yie=Nc(Tie()),cJe=Dc(),uJe=Mie(),gJe=rC(xc()),fJe=rC(XF()),qie=rC(qg()),hJe=rC(Oie()),pJe=rC(Ma());function rC(t){return t&&t.__esModule?t:{default:t}}function Jie(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return Jie=function(){return t},t}function Nc(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=Jie();if(e&&e.has(t))return e.get(t);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var s=i?Object.getOwnPropertyDescriptor(t,n):null;s&&(s.get||s.set)?Object.defineProperty(r,n,s):r[n]=t[n]}return r.default=t,e&&e.set(t,r),r}function lJe(t,e,r){if(!t||!(0,qie.default)(t.prototype))throw new TypeError("You must provide a yup schema constructor function");if(typeof e!="string")throw new TypeError("A Method name must be provided");if(typeof r!="function")throw new TypeError("Method function must be provided");t.prototype[e]=r}});var Xie=E((gCt,nC)=>{"use strict";var mJe=process.env.TERM_PROGRAM==="Hyper",EJe=process.platform==="win32",zie=process.platform==="linux",fN={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},Vie=Object.assign({},fN,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),_ie=Object.assign({},fN,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:zie?"\u25B8":"\u276F",pointerSmall:zie?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});nC.exports=EJe&&!mJe?Vie:_ie;Reflect.defineProperty(nC.exports,"common",{enumerable:!1,value:fN});Reflect.defineProperty(nC.exports,"windows",{enumerable:!1,value:Vie});Reflect.defineProperty(nC.exports,"other",{enumerable:!1,value:_ie})});var js=E((fCt,hN)=>{"use strict";var IJe=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),yJe=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,Zie=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(t.enabled=process.env.FORCE_COLOR!=="0");let e=s=>{let o=s.open=`[${s.codes[0]}m`,a=s.close=`[${s.codes[1]}m`,l=s.regex=new RegExp(`\\u001b\\[${s.codes[1]}m`,"g");return s.wrap=(c,u)=>{c.includes(a)&&(c=c.replace(l,a+o));let g=o+c+a;return u?g.replace(/\r*\n/g,`${a}$&${o}`):g},s},r=(s,o,a)=>typeof s=="function"?s(o):s.wrap(o,a),i=(s,o)=>{if(s===""||s==null)return"";if(t.enabled===!1)return s;if(t.visible===!1)return"";let a=""+s,l=a.includes(` -`),c=o.length;for(c>0&&o.includes("unstyle")&&(o=[...new Set(["unstyle",...o])].reverse());c-- >0;)a=r(t.styles[o[c]],a,l);return a},n=(s,o,a)=>{t.styles[s]=e({name:s,codes:o}),(t.keys[a]||(t.keys[a]=[])).push(s),Reflect.defineProperty(t,s,{configurable:!0,enumerable:!0,set(c){t.alias(s,c)},get(){let c=u=>i(u,c.stack);return Reflect.setPrototypeOf(c,t),c.stack=this.stack?this.stack.concat(s):[s],c}})};return n("reset",[0,0],"modifier"),n("bold",[1,22],"modifier"),n("dim",[2,22],"modifier"),n("italic",[3,23],"modifier"),n("underline",[4,24],"modifier"),n("inverse",[7,27],"modifier"),n("hidden",[8,28],"modifier"),n("strikethrough",[9,29],"modifier"),n("black",[30,39],"color"),n("red",[31,39],"color"),n("green",[32,39],"color"),n("yellow",[33,39],"color"),n("blue",[34,39],"color"),n("magenta",[35,39],"color"),n("cyan",[36,39],"color"),n("white",[37,39],"color"),n("gray",[90,39],"color"),n("grey",[90,39],"color"),n("bgBlack",[40,49],"bg"),n("bgRed",[41,49],"bg"),n("bgGreen",[42,49],"bg"),n("bgYellow",[43,49],"bg"),n("bgBlue",[44,49],"bg"),n("bgMagenta",[45,49],"bg"),n("bgCyan",[46,49],"bg"),n("bgWhite",[47,49],"bg"),n("blackBright",[90,39],"bright"),n("redBright",[91,39],"bright"),n("greenBright",[92,39],"bright"),n("yellowBright",[93,39],"bright"),n("blueBright",[94,39],"bright"),n("magentaBright",[95,39],"bright"),n("cyanBright",[96,39],"bright"),n("whiteBright",[97,39],"bright"),n("bgBlackBright",[100,49],"bgBright"),n("bgRedBright",[101,49],"bgBright"),n("bgGreenBright",[102,49],"bgBright"),n("bgYellowBright",[103,49],"bgBright"),n("bgBlueBright",[104,49],"bgBright"),n("bgMagentaBright",[105,49],"bgBright"),n("bgCyanBright",[106,49],"bgBright"),n("bgWhiteBright",[107,49],"bgBright"),t.ansiRegex=yJe,t.hasColor=t.hasAnsi=s=>(t.ansiRegex.lastIndex=0,typeof s=="string"&&s!==""&&t.ansiRegex.test(s)),t.alias=(s,o)=>{let a=typeof o=="string"?t[o]:o;if(typeof a!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");a.stack||(Reflect.defineProperty(a,"name",{value:s}),t.styles[s]=a,a.stack=[s]),Reflect.defineProperty(t,s,{configurable:!0,enumerable:!0,set(l){t.alias(s,l)},get(){let l=c=>i(c,l.stack);return Reflect.setPrototypeOf(l,t),l.stack=this.stack?this.stack.concat(a.stack):a.stack,l}})},t.theme=s=>{if(!IJe(s))throw new TypeError("Expected theme to be an object");for(let o of Object.keys(s))t.alias(o,s[o]);return t},t.alias("unstyle",s=>typeof s=="string"&&s!==""?(t.ansiRegex.lastIndex=0,s.replace(t.ansiRegex,"")):""),t.alias("noop",s=>s),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=Xie(),t.define=n,t};hN.exports=Zie();hN.exports.create=Zie});var Mi=E(bt=>{"use strict";var wJe=Object.prototype.toString,Cs=js(),$ie=!1,pN=[],ene={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};bt.longest=(t,e)=>t.reduce((r,i)=>Math.max(r,e?i[e].length:i.length),0);bt.hasColor=t=>!!t&&Cs.hasColor(t);var N0=bt.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);bt.nativeType=t=>wJe.call(t).slice(8,-1).toLowerCase().replace(/\s/g,"");bt.isAsyncFn=t=>bt.nativeType(t)==="asyncfunction";bt.isPrimitive=t=>t!=null&&typeof t!="object"&&typeof t!="function";bt.resolve=(t,e,...r)=>typeof e=="function"?e.call(t,...r):e;bt.scrollDown=(t=[])=>[...t.slice(1),t[0]];bt.scrollUp=(t=[])=>[t.pop(),...t];bt.reorder=(t=[])=>{let e=t.slice();return e.sort((r,i)=>r.index>i.index?1:r.index{let i=t.length,n=r===i?0:r<0?i-1:r,s=t[e];t[e]=t[n],t[n]=s};bt.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[0]),process.platform==="win32"?r-1:r};bt.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[1]),r};bt.wordWrap=(t,e={})=>{if(!t)return t;typeof e=="number"&&(e={width:e});let{indent:r="",newline:i=` -`+r,width:n=80}=e;n-=((i+r).match(/[^\S\n]/g)||[]).length;let o=`.{1,${n}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,a=t.trim(),l=new RegExp(o,"g"),c=a.match(l)||[];return c=c.map(u=>u.replace(/\n$/,"")),e.padEnd&&(c=c.map(u=>u.padEnd(n," "))),e.padStart&&(c=c.map(u=>u.padStart(n," "))),r+c.join(i)};bt.unmute=t=>{let e=t.stack.find(i=>Cs.keys.color.includes(i));return e?Cs[e]:t.stack.find(i=>i.slice(2)==="bg")?Cs[e.slice(2)]:i=>i};bt.pascal=t=>t?t[0].toUpperCase()+t.slice(1):"";bt.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(i=>Cs.keys.color.includes(i));if(e){let i=Cs["bg"+bt.pascal(e)];return i?i.black:t}let r=t.stack.find(i=>i.slice(0,2)==="bg");return r?Cs[r.slice(2).toLowerCase()]||t:Cs.none};bt.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(i=>Cs.keys.color.includes(i)),r=t.stack.find(i=>i.slice(0,2)==="bg");if(e&&!r)return Cs[ene[e]||e];if(r){let i=r.slice(2).toLowerCase(),n=ene[i];return n&&Cs["bg"+bt.pascal(n)]||t}return Cs.none};bt.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),i=e>=12?"pm":"am";e=e%12;let n=e===0?12:e,s=r<10?"0"+r:r;return n+":"+s+" "+i};bt.set=(t={},e="",r)=>e.split(".").reduce((i,n,s,o)=>{let a=o.length-1>s?i[n]||{}:r;return!bt.isObject(a)&&s{let i=t[e]==null?e.split(".").reduce((n,s)=>n&&n[s],t):t[e];return i==null?r:i};bt.mixin=(t,e)=>{if(!N0(t))return e;if(!N0(e))return t;for(let r of Object.keys(e)){let i=Object.getOwnPropertyDescriptor(e,r);if(i.hasOwnProperty("value"))if(t.hasOwnProperty(r)&&N0(i.value)){let n=Object.getOwnPropertyDescriptor(t,r);N0(n.value)?t[r]=bt.merge({},t[r],e[r]):Reflect.defineProperty(t,r,i)}else Reflect.defineProperty(t,r,i);else Reflect.defineProperty(t,r,i)}return t};bt.merge=(...t)=>{let e={};for(let r of t)bt.mixin(e,r);return e};bt.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let i of Object.keys(r)){let n=r[i];typeof n=="function"?bt.define(t,i,n.bind(e)):bt.define(t,i,n)}};bt.onExit=t=>{let e=(r,i)=>{$ie||($ie=!0,pN.forEach(n=>n()),r===!0&&process.exit(128+i))};pN.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),pN.push(t)};bt.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};bt.defineExport=(t,e,r)=>{let i;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(n){i=n},get(){return i?i():r()}})}});var tne=E(nf=>{"use strict";nf.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};nf.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};nf.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};nf.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};nf.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var nne=E((dCt,rne)=>{"use strict";var ine=require("readline"),BJe=tne(),QJe=/^(?:\x1b)([a-zA-Z0-9])$/,bJe=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,vJe={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function SJe(t){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t)}function xJe(t){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t)}var L0=(t="",e={})=>{let r,i=P({name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t},e);if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t=""+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=i.sequence||""),i.sequence=i.sequence||t||i.name,t==="\r")i.raw=void 0,i.name="return";else if(t===` -`)i.name="enter";else if(t===" ")i.name="tab";else if(t==="\b"||t==="\x7F"||t==="\x7F"||t==="\b")i.name="backspace",i.meta=t.charAt(0)==="";else if(t===""||t==="")i.name="escape",i.meta=t.length===2;else if(t===" "||t===" ")i.name="space",i.meta=t.length===2;else if(t<="")i.name=String.fromCharCode(t.charCodeAt(0)+"a".charCodeAt(0)-1),i.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")i.name="number";else if(t.length===1&&t>="a"&&t<="z")i.name=t;else if(t.length===1&&t>="A"&&t<="Z")i.name=t.toLowerCase(),i.shift=!0;else if(r=QJe.exec(t))i.meta=!0,i.shift=/^[A-Z]$/.test(r[1]);else if(r=bJe.exec(t)){let n=[...t];n[0]===""&&n[1]===""&&(i.option=!0);let s=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),o=(r[3]||r[5]||1)-1;i.ctrl=!!(o&4),i.meta=!!(o&10),i.shift=!!(o&1),i.code=s,i.name=vJe[s],i.shift=SJe(s)||i.shift,i.ctrl=xJe(s)||i.ctrl}return i};L0.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let i=ine.createInterface({terminal:!0,input:r});ine.emitKeypressEvents(r,i);let n=(a,l)=>e(a,L0(a,l),i),s=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",n),i.resume(),()=>{r.isTTY&&r.setRawMode(s),r.removeListener("keypress",n),i.pause(),i.close()}};L0.action=(t,e,r)=>{let i=P(P({},BJe),r);return e.ctrl?(e.action=i.ctrl[e.name],e):e.option&&i.option?(e.action=i.option[e.name],e):e.shift?(e.action=i.shift[e.name],e):(e.action=i.keys[e.name],e)};rne.exports=L0});var one=E((CCt,sne)=>{"use strict";sne.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(!!e)for(let r of Object.keys(e)){let i=e[r];typeof i=="number"&&(i={interval:i}),kJe(t,r,i)}};function kJe(t,e,r={}){let i=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},n=r.interval||120;i.frames=r.frames||[],i.loading=!0;let s=setInterval(()=>{i.ms=Date.now()-i.start,i.tick++,t.render()},n);return i.stop=()=>{i.loading=!1,clearInterval(s)},Reflect.defineProperty(i,"interval",{value:s}),t.once("close",()=>i.stop()),i.stop}});var lne=E((mCt,ane)=>{"use strict";var{define:PJe,width:DJe}=Mi(),Ane=class{constructor(e){let r=e.options;PJe(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=DJe(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e=P({},this);return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r=="function"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};ane.exports=Ane});var une=E((ECt,cne)=>{"use strict";var dN=Mi(),yi=js(),CN={default:yi.noop,noop:yi.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||dN.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||dN.complement(this.primary)},primary:yi.cyan,success:yi.green,danger:yi.magenta,strong:yi.bold,warning:yi.yellow,muted:yi.dim,disabled:yi.gray,dark:yi.dim.gray,underline:yi.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};CN.merge=(t={})=>{t.styles&&typeof t.styles.enabled=="boolean"&&(yi.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible=="boolean"&&(yi.visible=t.styles.visible);let e=dN.merge({},CN,t.styles);delete e.merge;for(let r of Object.keys(yi))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>yi[r]});for(let r of Object.keys(yi.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>yi[r]});return e};cne.exports=CN});var fne=E((ICt,gne)=>{"use strict";var mN=process.platform==="win32",Ka=js(),RJe=Mi(),EN=_(P({},Ka.symbols),{upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:Ka.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:Ka.symbols.question,submitted:Ka.symbols.check,cancelled:Ka.symbols.cross},separator:{pending:Ka.symbols.pointerSmall,submitted:Ka.symbols.middot,cancelled:Ka.symbols.middot},radio:{off:mN?"( )":"\u25EF",on:mN?"(*)":"\u25C9",disabled:mN?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]});EN.merge=t=>{let e=RJe.merge({},Ka.symbols,EN,t.symbols);return delete e.merge,e};gne.exports=EN});var pne=E((yCt,hne)=>{"use strict";var FJe=une(),NJe=fne(),LJe=Mi();hne.exports=t=>{t.options=LJe.merge({},t.options.theme,t.options),t.symbols=NJe.merge(t.options),t.styles=FJe.merge(t.options)}});var Ine=E((dne,Cne)=>{"use strict";var mne=process.env.TERM_PROGRAM==="Apple_Terminal",TJe=js(),IN=Mi(),Ys=Cne.exports=dne,Ir="[",Ene="\x07",yN=!1,HA=Ys.code={bell:Ene,beep:Ene,beginning:`${Ir}G`,down:`${Ir}J`,esc:Ir,getPosition:`${Ir}6n`,hide:`${Ir}?25l`,line:`${Ir}2K`,lineEnd:`${Ir}K`,lineStart:`${Ir}1K`,restorePosition:Ir+(mne?"8":"u"),savePosition:Ir+(mne?"7":"s"),screen:`${Ir}2J`,show:`${Ir}?25h`,up:`${Ir}1J`},Lc=Ys.cursor={get hidden(){return yN},hide(){return yN=!0,HA.hide},show(){return yN=!1,HA.show},forward:(t=1)=>`${Ir}${t}C`,backward:(t=1)=>`${Ir}${t}D`,nextLine:(t=1)=>`${Ir}E`.repeat(t),prevLine:(t=1)=>`${Ir}F`.repeat(t),up:(t=1)=>t?`${Ir}${t}A`:"",down:(t=1)=>t?`${Ir}${t}B`:"",right:(t=1)=>t?`${Ir}${t}C`:"",left:(t=1)=>t?`${Ir}${t}D`:"",to(t,e){return e?`${Ir}${e+1};${t+1}H`:`${Ir}${t+1}G`},move(t=0,e=0){let r="";return r+=t<0?Lc.left(-t):t>0?Lc.right(t):"",r+=e<0?Lc.up(-e):e>0?Lc.down(e):"",r},restore(t={}){let{after:e,cursor:r,initial:i,input:n,prompt:s,size:o,value:a}=t;if(i=IN.isPrimitive(i)?String(i):"",n=IN.isPrimitive(n)?String(n):"",a=IN.isPrimitive(a)?String(a):"",o){let l=Ys.cursor.up(o)+Ys.cursor.to(s.length),c=n.length-r;return c>0&&(l+=Ys.cursor.left(c)),l}if(a||e){let l=!n&&!!i?-i.length:-n.length+r;return e&&(l-=e.length),n===""&&i&&!s.includes(i)&&(l+=i.length),Ys.cursor.move(l)}}},wN=Ys.erase={screen:HA.screen,up:HA.up,down:HA.down,line:HA.line,lineEnd:HA.lineEnd,lineStart:HA.lineStart,lines(t){let e="";for(let r=0;r{if(!e)return wN.line+Lc.to(0);let r=s=>[...TJe.unstyle(s)].length,i=t.split(/\r?\n/),n=0;for(let s of i)n+=1+Math.floor(Math.max(r(s)-1,0)/e);return(wN.line+Lc.prevLine()).repeat(n-1)+wN.line+Lc.to(0)}});var sf=E((wCt,yne)=>{"use strict";var MJe=require("events"),wne=js(),BN=nne(),OJe=one(),KJe=lne(),UJe=pne(),bn=Mi(),Tc=Ine(),T0=class extends MJe{constructor(e={}){super();this.name=e.name,this.type=e.type,this.options=e,UJe(this),OJe(this),this.state=new KJe(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=GJe(this.options.margin),this.setMaxListeners(0),HJe(this)}async keypress(e,r={}){this.keypressed=!0;let i=BN.action(e,BN(e,r),this.options.actions);this.state.keypress=i,this.emit("keypress",e,i),this.emit("state",this.state.clone());let n=this.options[i.action]||this[i.action]||this.dispatch;if(typeof n=="function")return await n.call(this,e,i);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(Tc.code.beep)}cursorHide(){this.stdout.write(Tc.cursor.hide()),bn.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Tc.cursor.show())}write(e){!e||(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!e||this.options.show===!1)&&this.stdout.write(Tc.cursor.down(e)+Tc.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:i}=this.sections(),{cursor:n,initial:s="",input:o="",value:a=""}=this,l=this.state.size=i.length,c={after:r,cursor:n,initial:s,input:o,prompt:e,size:l,value:a},u=Tc.cursor.restore(c);u&&this.stdout.write(u)}sections(){let{buffer:e,input:r,prompt:i}=this.state;i=wne.unstyle(i);let n=wne.unstyle(e),s=n.indexOf(i),o=n.slice(0,s),l=n.slice(s).split(` -`),c=l[0],u=l[l.length-1],f=(i+(r?" "+r:"")).length,h=fe.call(this,this.value),this.result=()=>i.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let n=r.onSubmit.bind(this),s=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await n(this.name,this.value,this),s())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,r)=>{if(this.once("submit",e),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,r,i){let{options:n,state:s,symbols:o,timers:a}=this,l=a&&a[e];s.timer=l;let c=n[e]||s[e]||o[e],u=r&&r[e]!=null?r[e]:await c;if(u==="")return u;let g=await this.resolve(u,s,r,i);return!g&&r&&r[e]?this.resolve(c,s,r,i):g}async prefix(){let e=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,i=this.state;return i.timer=r,bn.isObject(e)&&(e=e[i.status]||e.pending),bn.hasColor(e)?e:(this.styles[i.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return bn.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,i=this.state;i.timer=r;let n=e[i.status]||e.pending||i.separator,s=await this.resolve(n,i);return bn.isObject(s)&&(s=s[i.status]||s.pending),bn.hasColor(s)?s:this.styles.muted(s)}async pointer(e,r){let i=await this.element("pointer",e,r);if(typeof i=="string"&&bn.hasColor(i))return i;if(i){let n=this.styles,s=this.index===r,o=s?n.primary:c=>c,a=await this.resolve(i[s?"on":"off"]||i,this.state),l=bn.hasColor(a)?a:o(a);return s?l:" ".repeat(a.length)}}async indicator(e,r){let i=await this.element("indicator",e,r);if(typeof i=="string"&&bn.hasColor(i))return i;if(i){let n=this.styles,s=e.enabled===!0,o=s?n.success:n.dark,a=i[s?"on":"off"]||i;return bn.hasColor(a)?a:o(a)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return bn.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...r){return bn.resolve(this,e,...r)}get base(){return T0.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||bn.height(this.stdout,25)}get width(){return this.options.columns||bn.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,i=[r,e].find(this.isValue.bind(this));return this.isValue(i)?i:this.initial}static get prompt(){return e=>new this(e).run()}};function HJe(t){let e=n=>t[n]===void 0||typeof t[n]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],i=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let n of Object.keys(t.options)){if(r.includes(n)||/^on[A-Z]/.test(n))continue;let s=t.options[n];typeof s=="function"&&e(n)?i.includes(n)||(t[n]=s.bind(t)):typeof t[n]!="function"&&(t[n]=s)}}function GJe(t){typeof t=="number"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=n=>n%2==0?` -`:" ",i=[];for(let n=0;n<4;n++){let s=r(n);e[n]?i.push(s.repeat(e[n])):i.push("")}return i}yne.exports=T0});var bne=E((BCt,Bne)=>{"use strict";var jJe=Mi(),Qne={default(t,e){return e},checkbox(t,e){throw new Error("checkbox role is not implemented yet")},editable(t,e){throw new Error("editable role is not implemented yet")},expandable(t,e){throw new Error("expandable role is not implemented yet")},heading(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||"",e},input(t,e){throw new Error("input role is not implemented yet")},option(t,e){return Qne.default(t,e)},radio(t,e){throw new Error("radio role is not implemented yet")},separator(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};Bne.exports=(t,e={})=>{let r=jJe.merge({},Qne,e.roles);return r[t]||r.default}});var sC=E((QCt,vne)=>{"use strict";var YJe=js(),qJe=sf(),JJe=bne(),M0=Mi(),{reorder:QN,scrollUp:WJe,scrollDown:zJe,isObject:Sne,swap:VJe}=M0,xne=class extends qJe{constructor(e){super(e);this.cursorHide(),this.maxSelected=e.maxSelected||Infinity,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:i,suggest:n}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(s=>s.enabled=!1),typeof n!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");Sne(r)&&(r=Object.keys(r)),Array.isArray(r)?(i!=null&&(this.index=this.findIndex(i)),r.forEach(s=>this.enable(this.find(s))),await this.render()):(i!=null&&(r=i),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let i=[],n=0,s=async(o,a)=>{typeof o=="function"&&(o=await o.call(this)),o instanceof Promise&&(o=await o);for(let l=0;l(this.state.loadingChoices=!1,o))}async toChoice(e,r,i){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let n=e.value;if(e=JJe(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=r,e.cursor=0,M0.define(e,"parent",i),e.level=i?i.level+1:1,e.indent==null&&(e.indent=i?i.indent+" ":e.indent||""),e.path=i?i.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,YJe.unstyle(e.message).length));let o=P({},e);return e.reset=(a=o.input,l=o.value)=>{for(let c of Object.keys(o))e[c]=o[c];e.input=a,e.value=l},n==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit("choice",e,r,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,i){let n=await this.toChoice(e,r,i);return this.choices.push(n),this.index=this.choices.length-1,this.limit=this.choices.length,n}async newItem(e,r,i){let n=P({name:"New choice name?",editable:!0,newChoice:!0},e),s=await this.addChoice(n,r,i);return s.updateChoice=()=>{delete s.newChoice,s.name=s.message=s.input,s.input="",s.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!="boolean"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedr.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(n=>this.toggle(n,r));let i=e.parent;for(;i;){let n=i.choices.filter(s=>this.isDisabled(s));i.enabled=n.every(s=>s.enabled===!0),i=i.parent}return kne(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=i=>{let n=Number(i);if(n>this.choices.length-1)return this.alert();let s=this.focused,o=this.choices.find(a=>n===a.index);if(!o.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(o)===-1){let a=QN(this.choices),l=a.indexOf(o);if(s.index>l){let c=a.slice(l,l+this.limit),u=a.filter(g=>!c.includes(g));this.choices=c.concat(u)}else{let c=l-this.limit+1;this.choices=a.slice(c).concat(a.slice(0,c))}}return this.index=this.choices.indexOf(o),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(i=>{let n=this.choices.length,s=this.num,o=(a=!1,l)=>{clearTimeout(this.numberTimeout),a&&(l=r(s)),this.num="",i(l)};if(s==="0"||s.length===1&&Number(s+"0")>n)return o(!0);if(Number(s)>n)return o(!1,this.alert());this.numberTimeout=setTimeout(()=>o(!0),this.delay)})}home(){return this.choices=QN(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=QN(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,i=this.index;return this.options.scroll===!1&&i===0?this.alert():e>r&&i===0?this.scrollUp():(this.index=(i-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,i=this.index;return this.options.scroll===!1&&i===r-1?this.alert():e>r&&i===r-1?this.scrollDown():(this.index=(i+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=WJe(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=zJe(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){VJe(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(i=>e[i]===!0)?!0:e&&e.role==="heading"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(i=>!this.isDisabled(i));return e.enabled&&r.every(i=>this.isEnabled(i))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r="value"){return[].concat(e||[]).reduce((i,n)=>(i[n]=this.find(n,r),i),{})}filter(e,r){let i=(a,l)=>[a.name,l].includes(e),n=typeof e=="function"?e:i,o=(this.options.multiple?this.state._choices:this.choices).filter(n);return r?o.map(a=>a[r]):o}find(e,r){if(Sne(e))return r?e[r]:e;let i=(o,a)=>[o.name,a].includes(e),n=typeof e=="function"?e:i,s=this.choices.find(n);if(s)return r?s[r]:s}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(o=>o.newChoice))return this.alert();let{reorder:r,sort:i}=this.options,n=this.multiple===!0,s=this.selected;return s===void 0?this.alert():(Array.isArray(s)&&r!==!1&&i!==!0&&(s=M0.reorder(s)),this.value=n?s.map(o=>o.name):s.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(i=>i.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let i=this.find(r);i&&(this.initial=i.index,this.focus(i,!0))}}}get choices(){return kne(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:i}=this,n=e.limit||this._limit||r.limit||i.length;return Math.min(n,this.height)}set value(e){super.value=e}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function kne(t,e){if(e instanceof Promise)return e;if(typeof e=="function"){if(M0.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let i=r.choices.filter(n=>!t.isDisabled(n));r.enabled=i.every(n=>n.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}vne.exports=xne});var GA=E((bCt,Pne)=>{"use strict";var _Je=sC(),bN=Mi(),Dne=class extends _Je{constructor(e){super(e);this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):""}indicator(e,r){return this.multiple?super.indicator(e,r):""}choiceMessage(e,r){let i=this.resolve(e.message,this.state,e,r);return e.role==="heading"&&!bN.hasColor(i)&&(i=this.styles.strong(i)),this.resolve(i,this.state,e,r)}choiceSeparator(){return":"}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=await this.pointer(e,r),s=await this.indicator(e,r)+(e.pad||""),o=await this.resolve(e.hint,this.state,e,r);o&&!bN.hasColor(o)&&(o=this.styles.muted(o));let a=this.indent(e),l=await this.choiceMessage(e,r),c=()=>[this.margin[3],a+n+s,l,this.margin[1],o].filter(Boolean).join(" ");return e.role==="heading"?c():e.disabled?(bN.hasColor(l)||(l=this.styles.disabled(l)),c()):(i&&(l=this.styles.em(l)),c())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(s,o)=>await this.renderChoice(s,o)),r=await Promise.all(e);r.length||r.push(this.styles.danger("No matching choices"));let i=this.margin[0]+r.join(` -`),n;return this.options.choicesHeader&&(n=await this.resolve(this.options.choicesHeader,this.state)),[n,i].filter(Boolean).join(` -`)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,i="",n=await this.header(),s=await this.prefix(),o=await this.separator(),a=await this.message();this.options.promptLine!==!1&&(i=[s,a,o,""].join(" "),this.state.prompt=i);let l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();l&&(i+=l),c&&!i.includes(c)&&(i+=" "+c),e&&!l&&!u.trim()&&this.multiple&&this.emptyError!=null&&(i+=this.styles.danger(this.emptyError)),this.clear(r),this.write([n,i,u,g].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};Pne.exports=Dne});var Nne=E((vCt,Rne)=>{"use strict";var XJe=GA(),ZJe=(t,e)=>{let r=t.toLowerCase();return i=>{let s=i.toLowerCase().indexOf(r),o=e(i.slice(s,s+r.length));return s>=0?i.slice(0,s)+o+i.slice(s+r.length):i}},Fne=class extends XJe{constructor(e){super(e);this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:i}=this.state;return this.input=i.slice(0,r)+e+i.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,r);let i=e.toLowerCase();return r.filter(n=>n.message.toLowerCase().includes(i))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=ZJe(this.input,e),i=this.choices;this.choices=i.map(n=>_(P({},n),{message:r(n.message)})),await super.render(),this.choices=i}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};Rne.exports=Fne});var SN=E((SCt,Lne)=>{"use strict";var vN=Mi();Lne.exports=(t,e={})=>{t.cursorHide();let{input:r="",initial:i="",pos:n,showCursor:s=!0,color:o}=e,a=o||t.styles.placeholder,l=vN.inverse(t.styles.primary),c=d=>l(t.styles.black(d)),u=r,g=" ",f=c(g);if(t.blink&&t.blink.off===!0&&(c=d=>d,f=""),s&&n===0&&i===""&&r==="")return c(g);if(s&&n===0&&(r===i||r===""))return c(i[0])+a(i.slice(1));i=vN.isPrimitive(i)?`${i}`:"",r=vN.isPrimitive(r)?`${r}`:"";let h=i&&i.startsWith(r)&&i!==r,p=h?c(i[r.length]):f;if(n!==r.length&&s===!0&&(u=r.slice(0,n)+c(r[n])+r.slice(n+1),p=""),s===!1&&(p=""),h){let d=t.styles.unstyle(u+p);return u+p+a(i.slice(d.length))}return u+p}});var O0=E((xCt,Tne)=>{"use strict";var $Je=js(),e3e=GA(),t3e=SN(),Mne=class extends e3e{constructor(e){super(_(P({},e),{multiple:!0}));this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:i,input:n}=r;return r.value=r.input=n.slice(0,i)+e+n.slice(i),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:i}=e;return e.value=e.input=i.slice(0,r-1)+i.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:i}=e;if(i[r]===void 0)return this.alert();let n=`${i}`.slice(0,r)+`${i}`.slice(r+1);return e.value=e.input=n,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:i}=e;return r&&r.startsWith(i)&&i!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,r){let i=await this.resolve(e.separator,this.state,e,r)||":";return i?" "+this.styles.disabled(i):""}async renderChoice(e,r){await this.onChoice(e,r);let{state:i,styles:n}=this,{cursor:s,initial:o="",name:a,hint:l,input:c=""}=e,{muted:u,submitted:g,primary:f,danger:h}=n,p=l,d=this.index===r,m=e.validate||(()=>!0),I=await this.choiceSeparator(e,r),B=e.message;this.align==="right"&&(B=B.padStart(this.longest+1," ")),this.align==="left"&&(B=B.padEnd(this.longest+1," "));let b=this.values[a]=c||o,R=c?"success":"dark";await m.call(e,b,this.state)!==!0&&(R="danger");let L=n[R](await this.indicator(e,r))+(e.pad||""),K=this.indent(e),J=()=>[K,L,B+I,c,p].filter(Boolean).join(" ");if(i.submitted)return B=$Je.unstyle(B),c=g(c),p="",J();if(e.format)c=await e.format.call(this,c,e,r);else{let ne=this.styles.muted;c=t3e(this,{input:c,initial:o,pos:s,showCursor:d,color:ne})}return this.isValue(c)||(c=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[a]=await e.result.call(this,b,e,r)),d&&(B=f(B)),e.error?c+=(c?" ":"")+h(e.error.trim()):e.hint&&(c+=(c?" ":"")+u(e.hint.trim())),J()}async submit(){return this.value=this.values,super.base.submit.call(this)}};Tne.exports=Mne});var xN=E((kCt,One)=>{"use strict";var r3e=O0(),i3e=()=>{throw new Error("expected prompt to have a custom authenticate method")},Kne=(t=i3e)=>{class e extends r3e{constructor(i){super(i)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(i){return Kne(i)}}return e};One.exports=Kne()});var Gne=E((PCt,Une)=>{"use strict";var n3e=xN();function s3e(t,e){return t.username===this.options.username&&t.password===this.options.password}var Hne=(t=s3e)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(i){return this.options.showPassword?i:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(i.length))}}];class r extends n3e.create(t){constructor(n){super(_(P({},n),{choices:e}))}static create(n){return Hne(n)}}return r};Une.exports=Hne()});var K0=E((DCt,jne)=>{"use strict";var o3e=sf(),{isPrimitive:a3e,hasColor:A3e}=Mi(),Yne=class extends o3e{constructor(e){super(e);this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:i}=this;return i.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return a3e(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return A3e(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=this.styles.muted(this.default),a=[i,s,o,n].filter(Boolean).join(" ");this.state.prompt=a;let l=await this.header(),c=this.value=this.cast(e),u=await this.format(c),g=await this.error()||await this.hint(),f=await this.footer();g&&!a.includes(g)&&(u+=" "+g),a+=" "+u,this.clear(r),this.write([l,a,f].filter(Boolean).join(` -`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};jne.exports=Yne});var Wne=E((RCt,qne)=>{"use strict";var l3e=K0(),Jne=class extends l3e{constructor(e){super(e);this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};qne.exports=Jne});var _ne=E((FCt,zne)=>{"use strict";var c3e=GA(),u3e=O0(),of=u3e.prototype,Vne=class extends c3e{constructor(e){super(_(P({},e),{multiple:!0}));this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(e,r){let i=this.focused,n=i.parent||{};return!i.editable&&!n.editable&&(e==="a"||e==="i")?super[e]():of.dispatch.call(this,e,r)}append(e,r){return of.append.call(this,e,r)}delete(e,r){return of.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?of.next.call(this):super.next()}prev(){return this.focused.editable?of.prev.call(this):super.prev()}async indicator(e,r){let i=e.indicator||"",n=e.editable?i:super.indicator(e,r);return await this.resolve(n,this.state,e,r)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,r){return e.indent="",e.editable?of.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let i=r.parent?this.value[r.parent.name]:this.value;if(r.editable?i=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(i=r.enabled===!0),e=await r.validate(i,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};zne.exports=Vne});var Mc=E((NCt,Xne)=>{"use strict";var g3e=sf(),f3e=SN(),{isPrimitive:h3e}=Mi(),Zne=class extends g3e{constructor(e){super(e);this.initial=h3e(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let i=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!i||i.name!=="return")?this.append(` -`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:i}=this.state;this.input=`${i}`.slice(0,r)+e+`${i}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),i=this.input.slice(e),n=r.split(" ");this.state.clipboard.push(n.pop()),this.input=n.join(" "),this.cursor=this.input.length,this.input+=i,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):f3e(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),i=await this.separator(),n=await this.message(),s=[r,n,i].filter(Boolean).join(" ");this.state.prompt=s;let o=await this.header(),a=await this.format(),l=await this.error()||await this.hint(),c=await this.footer();l&&!a.includes(l)&&(a+=" "+l),s+=" "+a,this.clear(e),this.write([o,s,c].filter(Boolean).join(` -`)),this.restore()}};Xne.exports=Zne});var ese=E((LCt,$ne)=>{"use strict";var p3e=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),U0=t=>p3e(t).filter(Boolean);$ne.exports=(t,e={},r="")=>{let{past:i=[],present:n=""}=e,s,o;switch(t){case"prev":case"undo":return s=i.slice(0,i.length-1),o=i[i.length-1]||"",{past:U0([r,...s]),present:o};case"next":case"redo":return s=i.slice(1),o=i[0]||"",{past:U0([...s,r]),present:o};case"save":return{past:U0([...i,r]),present:""};case"remove":return o=U0(i.filter(a=>a!==r)),n="",o.length&&(n=o.pop()),{past:o,present:n};default:throw new Error(`Invalid action: "${t}"`)}}});var kN=E((TCt,tse)=>{"use strict";var d3e=Mc(),rse=ese(),ise=class extends d3e{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let i=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:i},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=rse(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=rse("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};tse.exports=ise});var ose=E((MCt,nse)=>{"use strict";var C3e=Mc(),sse=class extends C3e{format(){return""}};nse.exports=sse});var lse=E((OCt,ase)=>{"use strict";var m3e=Mc(),Ase=class extends m3e{constructor(e={}){super(e);this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(", ")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};ase.exports=Ase});var gse=E((KCt,cse)=>{"use strict";var E3e=GA(),use=class extends E3e{constructor(e){super(_(P({},e),{multiple:!0}))}};cse.exports=use});var PN=E((UCt,fse)=>{"use strict";var I3e=Mc(),hse=class extends I3e{constructor(e={}){super(P({style:"number"},e));this.min=this.isValue(e.min)?this.toNumber(e.min):-Infinity,this.max=this.isValue(e.max)?this.toNumber(e.max):Infinity,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,i=this.toNumber(this.input);return i>this.max+r?this.alert():(this.input=`${i+r}`,this.render())}down(e){let r=e||this.minor,i=this.toNumber(this.input);return ithis.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};fse.exports=hse});var dse=E((HCt,pse)=>{pse.exports=PN()});var Ese=E((GCt,Cse)=>{"use strict";var y3e=Mc(),mse=class extends y3e{constructor(e){super(e);this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};Cse.exports=mse});var Bse=E((jCt,Ise)=>{"use strict";var w3e=js(),B3e=sC(),yse=Mi(),wse=class extends B3e{constructor(e={}){super(e);this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||` - `;let r=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((i,n)=>({name:n+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let i=0;i=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){if(this.scaleKey===!1||this.state.submitted)return"";let e=this.scale.map(i=>` ${i.name} - ${i.message}`);return["",...e].map(i=>this.styles.muted(i)).join(` -`)}renderScaleHeading(e){let r=this.scale.map(l=>l.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,e));let i=this.scaleLength-r.join("").length,n=Math.round(i/(r.length-1)),o=r.map(l=>this.styles.strong(l)).join(" ".repeat(n)),a=" ".repeat(this.widths[0]);return this.margin[3]+a+this.margin[1]+o}scaleIndicator(e,r,i){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,r,i);let n=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):n?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let i=e.scale.map(s=>this.scaleIndicator(e,s,r)),n=this.term==="Hyper"?"":" ";return i.join(n+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=await this.pointer(e,r),s=await e.hint;s&&!yse.hasColor(s)&&(s=this.styles.muted(s));let o=p=>this.margin[3]+p.replace(/\s+$/,"").padEnd(this.widths[0]," "),a=this.newline,l=this.indent(e),c=await this.resolve(e.message,this.state,e,r),u=await this.renderScale(e,r),g=this.margin[1]+this.margin[3];this.scaleLength=w3e.unstyle(u).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-g.length);let h=yse.wordWrap(c,{width:this.widths[0],newline:a}).split(` -`).map(p=>o(p)+this.margin[1]);return i&&(u=this.styles.info(u),h=h.map(p=>this.styles.info(p))),h[0]+=u,this.linebreak&&h.push(""),[l+n,h.join(` -`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(n,s)=>await this.renderChoice(n,s)),r=await Promise.all(e),i=await this.renderScaleHeading();return this.margin[0]+[i,...r.map(n=>n.join(" "))].join(` -`)}async render(){let{submitted:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o="";this.options.promptLine!==!1&&(o=[i,s,n,""].join(" "),this.state.prompt=o);let a=await this.header(),l=await this.format(),c=await this.renderScaleKey(),u=await this.error()||await this.hint(),g=await this.renderChoices(),f=await this.footer(),h=this.emptyError;l&&(o+=l),u&&!o.includes(u)&&(o+=" "+u),e&&!l&&!g.trim()&&this.multiple&&h!=null&&(o+=this.styles.danger(h)),this.clear(r),this.write([a,o,c,g,f].filter(Boolean).join(` -`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};Ise.exports=wse});var Sse=E((YCt,Qse)=>{"use strict";var bse=js(),Q3e=(t="")=>typeof t=="string"?t.replace(/^['"]|['"]$/g,""):"",vse=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=Q3e(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},b3e=async(t={},e={},r=i=>i)=>{let i=new Set,n=t.fields||[],s=t.template,o=[],a=[],l=[],c=1;typeof s=="function"&&(s=await s());let u=-1,g=()=>s[++u],f=()=>s[u+1],h=p=>{p.line=c,o.push(p)};for(h({type:"bos",value:""});uR.name===I.key);I.field=n.find(R=>R.name===I.key),b||(b=new vse(I),a.push(b)),b.lines.push(I.line-1);continue}let d=o[o.length-1];d.type==="text"&&d.line===c?d.value+=p:h({type:"text",value:p})}return h({type:"eos",value:""}),{input:s,tabstops:o,unique:i,keys:l,items:a}};Qse.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),i=P(P({},e.values),e.initial),{tabstops:n,items:s,keys:o}=await b3e(e,i),a=DN("result",t,e),l=DN("format",t,e),c=DN("validate",t,e,!0),u=t.isValue.bind(t);return async(g={},f=!1)=>{let h=0;g.required=r,g.items=s,g.keys=o,g.output="";let p=async(B,b,R,H)=>{let L=await c(B,b,R,H);return L===!1?"Invalid field "+R.name:L};for(let B of n){let b=B.value,R=B.key;if(B.type!=="template"){b&&(g.output+=b);continue}if(B.type==="template"){let H=s.find(q=>q.name===R);e.required===!0&&g.required.add(H.name);let L=[H.input,g.values[H.value],H.value,b].find(u),J=(H.field||{}).message||B.inner;if(f){let q=await p(g.values[R],g,H,h);if(q&&typeof q=="string"||q===!1){g.invalid.set(R,q);continue}g.invalid.delete(R);let A=await a(g.values[R],g,H,h);g.output+=bse.unstyle(A);continue}H.placeholder=!1;let ne=b;b=await l(b,g,H,h),L!==b?(g.values[R]=L,b=t.styles.typing(L),g.missing.delete(J)):(g.values[R]=void 0,L=`<${J}>`,b=t.styles.primary(L),H.placeholder=!0,g.required.has(R)&&g.missing.add(J)),g.missing.has(J)&&g.validating&&(b=t.styles.warning(L)),g.invalid.has(R)&&g.validating&&(b=t.styles.danger(L)),h===g.index&&(ne!==b?b=t.styles.underline(b):b=t.styles.heading(bse.unstyle(b))),h++}b&&(g.output+=b)}let d=g.output.split(` -`).map(B=>" "+B),m=s.length,I=0;for(let B of s)g.invalid.has(B.name)&&B.lines.forEach(b=>{d[b][0]===" "&&(d[b]=g.styles.danger(g.symbols.bullet)+d[b].slice(1))}),t.isValue(g.values[B.name])&&I++;return g.completed=(I/m*100).toFixed(0),g.output=d.join(` -`),g.output}};function DN(t,e,r,i){return(n,s,o,a)=>typeof o.field[t]=="function"?o.field[t].call(e,n,s,o,a):[i,n].find(l=>e.isValue(l))}});var Pse=E((qCt,xse)=>{"use strict";var v3e=js(),S3e=Sse(),x3e=sf(),kse=class extends x3e{constructor(e){super(e);this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await S3e(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let i=this.getItem(),n=i.input.slice(0,this.cursor),s=i.input.slice(this.cursor);this.input=i.input=`${n}${e}${s}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),i=e.input.slice(0,this.cursor-1);this.input=e.input=`${i}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:i,size:n}=this.state,s=[this.options.newline,` -`].find(B=>B!=null),o=await this.prefix(),a=await this.separator(),l=await this.message(),c=[o,l,a].filter(Boolean).join(" ");this.state.prompt=c;let u=await this.header(),g=await this.error()||"",f=await this.hint()||"",h=i?"":await this.interpolate(this.state),p=this.state.key=r[e]||"",d=await this.format(p),m=await this.footer();d&&(c+=" "+d),f&&!d&&this.state.completed===0&&(c+=" "+f),this.clear(n);let I=[u,c,h,m,g.trim()];this.write(I.filter(Boolean).join(s)),this.restore()}getItem(e){let{items:r,keys:i,index:n}=this.state,s=r.find(o=>o.name===i[n]);return s&&s.input!=null&&(this.input=s.input,this.cursor=s.cursor),s}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:i,values:n}=this.state;if(e.size){let a="";for(let[l,c]of e)a+=`Invalid ${l}: ${c} -`;return this.state.error=a,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let o=v3e.unstyle(i).split(` -`).map(a=>a.slice(1)).join(` -`);return this.value={values:n,result:o},super.submit()}};xse.exports=kse});var Fse=E((JCt,Dse)=>{"use strict";var k3e="(Use + to sort)",P3e=GA(),Rse=class extends P3e{constructor(e){super(_(P({},e),{reorder:!1,sort:!0,multiple:!0}));this.state.hint=[this.options.hint,k3e].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,r){let i=await super.renderChoice(e,r),n=this.symbols.identicalTo+" ",s=this.index===r&&this.sorting?this.styles.muted(n):" ";return this.options.drag===!1&&(s=""),this.options.numbered===!0?s+`${r+1} - `+i:s+i}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};Dse.exports=Rse});var Tse=E((WCt,Nse)=>{"use strict";var D3e=sC(),Lse=class extends D3e{constructor(e={}){super(e);if(this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(i=>this.styles.muted(i)),this.state.header=r.join(` - `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let i of r)i.scale=R3e(5,this.options),i.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],i=r.selected;return e.scale.forEach(n=>n.selected=!1),r.selected=!i,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=this.term==="Hyper",s=n?9:8,o=n?"":" ",a=this.symbols.line.repeat(s),l=" ".repeat(s+(n?0:1)),c=b=>(b?this.styles.success("\u25C9"):"\u25EF")+o,u=r+1+".",g=i?this.styles.heading:this.styles.noop,f=await this.resolve(e.message,this.state,e,r),h=this.indent(e),p=h+e.scale.map((b,R)=>c(R===e.scaleIdx)).join(a),d=b=>b===e.scaleIdx?g(b):b,m=h+e.scale.map((b,R)=>d(R)).join(l),I=()=>[u,f].filter(Boolean).join(" "),B=()=>[I(),p,m," "].filter(Boolean).join(` -`);return i&&(p=this.styles.cyan(p),m=this.styles.cyan(m)),B()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(i,n)=>await this.renderChoice(i,n)),r=await Promise.all(e);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` -`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=[i,s,n].filter(Boolean).join(" ");this.state.prompt=o;let a=await this.header(),l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();(l||!c)&&(o+=" "+l),c&&!o.includes(c)&&(o+=" "+c),e&&!l&&!u&&this.multiple&&this.type!=="form"&&(o+=this.styles.danger(this.emptyError)),this.clear(r),this.write([o,a,u,g].filter(Boolean).join(` -`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function R3e(t,e={}){if(Array.isArray(e.scale))return e.scale.map(i=>P({},i));let r=[];for(let i=1;i{Mse.exports=kN()});var Hse=E((VCt,Kse)=>{"use strict";var F3e=K0(),Use=class extends F3e{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",r){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=i=>this.styles.primary.underline(i);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,r=await this.header(),i=await this.prefix(),n=await this.separator(),s=await this.message(),o=await this.format(),a=await this.error()||await this.hint(),l=await this.footer(),c=[i,s,n,o].join(" ");this.state.prompt=c,a&&!c.includes(a)&&(c+=" "+a),this.clear(e),this.write([r,c,l].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};Kse.exports=Use});var Yse=E((_Ct,Gse)=>{"use strict";var N3e=GA(),jse=class extends N3e{constructor(e){super(e);if(typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,r){let i=await super.toChoices(e,r);if(i.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>i.length)throw new Error("Please specify the index of the correct answer from the list of choices");return i}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};Gse.exports=jse});var Jse=E(RN=>{"use strict";var qse=Mi(),ti=(t,e)=>{qse.defineExport(RN,t,e),qse.defineExport(RN,t.toLowerCase(),e)};ti("AutoComplete",()=>Nne());ti("BasicAuth",()=>Gne());ti("Confirm",()=>Wne());ti("Editable",()=>_ne());ti("Form",()=>O0());ti("Input",()=>kN());ti("Invisible",()=>ose());ti("List",()=>lse());ti("MultiSelect",()=>gse());ti("Numeral",()=>dse());ti("Password",()=>Ese());ti("Scale",()=>Bse());ti("Select",()=>GA());ti("Snippet",()=>Pse());ti("Sort",()=>Fse());ti("Survey",()=>Tse());ti("Text",()=>Ose());ti("Toggle",()=>Hse());ti("Quiz",()=>Yse())});var zse=E((ZCt,Wse)=>{Wse.exports={ArrayPrompt:sC(),AuthPrompt:xN(),BooleanPrompt:K0(),NumberPrompt:PN(),StringPrompt:Mc()}});var aC=E(($Ct,Vse)=>{"use strict";var _se=require("assert"),FN=require("events"),jA=Mi(),No=class extends FN{constructor(e,r){super();this.options=jA.merge({},e),this.answers=P({},r)}register(e,r){if(jA.isObject(e)){for(let n of Object.keys(e))this.register(n,e[n]);return this}_se.equal(typeof r,"function","expected a function");let i=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[i]=r:this.prompts[i]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(jA.merge({},this.options,r))}catch(i){return Promise.reject(i)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let r=jA.merge({},this.options,e),{type:i,name:n}=e,{set:s,get:o}=jA;if(typeof i=="function"&&(i=await i.call(this,e,this.answers)),!i)return this.answers[n];_se(this.prompts[i],`Prompt "${i}" is not registered`);let a=new this.prompts[i](r),l=o(this.answers,n);a.state.answers=this.answers,a.enquirer=this,n&&a.on("submit",u=>{this.emit("answer",n,u,a),s(this.answers,n,u)});let c=a.emit.bind(a);return a.emit=(...u)=>(this.emit.call(this,...u),c(...u)),this.emit("prompt",a,this),r.autofill&&l!=null?(a.value=a.input=l,r.autofill==="show"&&await a.submit()):l=a.value=await a.run(),l}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||sf()}static get prompts(){return Jse()}static get types(){return zse()}static get prompt(){let e=(r,...i)=>{let n=new this(...i),s=n.emit.bind(n);return n.emit=(...o)=>(e.emit(...o),s(...o)),n.prompt(r)};return jA.mixinEmitter(e,new FN),e}};jA.mixinEmitter(No,new FN);var NN=No.prompts;for(let t of Object.keys(NN)){let e=t.toLowerCase(),r=i=>new NN[t](i).run();No.prompt[e]=r,No[e]=r,No[t]||Reflect.defineProperty(No,t,{get:()=>NN[t]})}var oC=t=>{jA.defineExport(No,t,()=>No.types[t])};oC("ArrayPrompt");oC("AuthPrompt");oC("BooleanPrompt");oC("NumberPrompt");oC("StringPrompt");Vse.exports=No});var loe=E((Gmt,Aoe)=>{function K3e(t,e){for(var r=-1,i=t==null?0:t.length;++r{var U3e=XB(),H3e=jg();function G3e(t,e,r,i){var n=!r;r||(r={});for(var s=-1,o=e.length;++s{var j3e=Af(),Y3e=zg();function q3e(t,e){return t&&j3e(e,Y3e(e),t)}uoe.exports=q3e});var hoe=E((qmt,foe)=>{function J3e(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}foe.exports=J3e});var doe=E((Jmt,poe)=>{var W3e=Gs(),z3e=u0(),V3e=hoe(),_3e=Object.prototype,X3e=_3e.hasOwnProperty;function Z3e(t){if(!W3e(t))return V3e(t);var e=z3e(t),r=[];for(var i in t)i=="constructor"&&(e||!X3e.call(t,i))||r.push(i);return r}poe.exports=Z3e});var lf=E((Wmt,Coe)=>{var $3e=bF(),eWe=doe(),tWe=Hd();function rWe(t){return tWe(t)?$3e(t,!0):eWe(t)}Coe.exports=rWe});var Eoe=E((zmt,moe)=>{var iWe=Af(),nWe=lf();function sWe(t,e){return t&&iWe(e,nWe(e),t)}moe.exports=sWe});var UN=E((hC,cf)=>{var oWe=Ks(),Ioe=typeof hC=="object"&&hC&&!hC.nodeType&&hC,yoe=Ioe&&typeof cf=="object"&&cf&&!cf.nodeType&&cf,aWe=yoe&&yoe.exports===Ioe,woe=aWe?oWe.Buffer:void 0,Boe=woe?woe.allocUnsafe:void 0;function AWe(t,e){if(e)return t.slice();var r=t.length,i=Boe?Boe(r):new t.constructor(r);return t.copy(i),i}cf.exports=AWe});var HN=E((Vmt,Qoe)=>{function lWe(t,e){var r=-1,i=t.length;for(e||(e=Array(i));++r{var cWe=Af(),uWe=f0();function gWe(t,e){return cWe(t,uWe(t),e)}boe.exports=gWe});var H0=E((Xmt,Soe)=>{var fWe=vF(),hWe=fWe(Object.getPrototypeOf,Object);Soe.exports=hWe});var GN=E((Zmt,xoe)=>{var pWe=$B(),dWe=H0(),CWe=f0(),mWe=RF(),EWe=Object.getOwnPropertySymbols,IWe=EWe?function(t){for(var e=[];t;)pWe(e,CWe(t)),t=dWe(t);return e}:mWe;xoe.exports=IWe});var Poe=E(($mt,koe)=>{var yWe=Af(),wWe=GN();function BWe(t,e){return yWe(t,wWe(t),e)}koe.exports=BWe});var Roe=E((eEt,Doe)=>{var QWe=DF(),bWe=GN(),vWe=lf();function SWe(t){return QWe(t,vWe,bWe)}Doe.exports=SWe});var Noe=E((tEt,Foe)=>{var xWe=Object.prototype,kWe=xWe.hasOwnProperty;function PWe(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&kWe.call(t,"index")&&(r.index=t.index,r.input=t.input),r}Foe.exports=PWe});var G0=E((rEt,Loe)=>{var Toe=kF();function DWe(t){var e=new t.constructor(t.byteLength);return new Toe(e).set(new Toe(t)),e}Loe.exports=DWe});var Ooe=E((iEt,Moe)=>{var RWe=G0();function FWe(t,e){var r=e?RWe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}Moe.exports=FWe});var Uoe=E((nEt,Koe)=>{var NWe=/\w*$/;function LWe(t){var e=new t.constructor(t.source,NWe.exec(t));return e.lastIndex=t.lastIndex,e}Koe.exports=LWe});var qoe=E((sEt,Hoe)=>{var Goe=ac(),joe=Goe?Goe.prototype:void 0,Yoe=joe?joe.valueOf:void 0;function TWe(t){return Yoe?Object(Yoe.call(t)):{}}Hoe.exports=TWe});var jN=E((oEt,Joe)=>{var MWe=G0();function OWe(t,e){var r=e?MWe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}Joe.exports=OWe});var zoe=E((aEt,Woe)=>{var KWe=G0(),UWe=Ooe(),HWe=Uoe(),GWe=qoe(),jWe=jN(),YWe="[object Boolean]",qWe="[object Date]",JWe="[object Map]",WWe="[object Number]",zWe="[object RegExp]",VWe="[object Set]",_We="[object String]",XWe="[object Symbol]",ZWe="[object ArrayBuffer]",$We="[object DataView]",e8e="[object Float32Array]",t8e="[object Float64Array]",r8e="[object Int8Array]",i8e="[object Int16Array]",n8e="[object Int32Array]",s8e="[object Uint8Array]",o8e="[object Uint8ClampedArray]",a8e="[object Uint16Array]",A8e="[object Uint32Array]";function l8e(t,e,r){var i=t.constructor;switch(e){case ZWe:return KWe(t);case YWe:case qWe:return new i(+t);case $We:return UWe(t,r);case e8e:case t8e:case r8e:case i8e:case n8e:case s8e:case o8e:case a8e:case A8e:return jWe(t,r);case JWe:return new i;case WWe:case _We:return new i(t);case zWe:return HWe(t);case VWe:return new i;case XWe:return GWe(t)}}Woe.exports=l8e});var Xoe=E((AEt,Voe)=>{var c8e=Gs(),_oe=Object.create,u8e=function(){function t(){}return function(e){if(!c8e(e))return{};if(_oe)return _oe(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();Voe.exports=u8e});var YN=E((lEt,Zoe)=>{var g8e=Xoe(),f8e=H0(),h8e=u0();function p8e(t){return typeof t.constructor=="function"&&!h8e(t)?g8e(f8e(t)):{}}Zoe.exports=p8e});var eae=E((cEt,$oe)=>{var d8e=jd(),C8e=Qo(),m8e="[object Map]";function E8e(t){return C8e(t)&&d8e(t)==m8e}$oe.exports=E8e});var nae=E((uEt,tae)=>{var I8e=eae(),y8e=A0(),rae=l0(),iae=rae&&rae.isMap,w8e=iae?y8e(iae):I8e;tae.exports=w8e});var oae=E((gEt,sae)=>{var B8e=jd(),Q8e=Qo(),b8e="[object Set]";function v8e(t){return Q8e(t)&&B8e(t)==b8e}sae.exports=v8e});var cae=E((fEt,aae)=>{var S8e=oae(),x8e=A0(),Aae=l0(),lae=Aae&&Aae.isSet,k8e=lae?x8e(lae):S8e;aae.exports=k8e});var pae=E((hEt,uae)=>{var P8e=Gd(),D8e=loe(),R8e=XB(),F8e=goe(),N8e=Eoe(),L8e=UN(),T8e=HN(),M8e=voe(),O8e=Poe(),K8e=FF(),U8e=Roe(),H8e=jd(),G8e=Noe(),j8e=zoe(),Y8e=YN(),q8e=As(),J8e=Od(),W8e=nae(),z8e=Gs(),V8e=cae(),_8e=zg(),X8e=lf(),Z8e=1,$8e=2,e4e=4,gae="[object Arguments]",t4e="[object Array]",r4e="[object Boolean]",i4e="[object Date]",n4e="[object Error]",fae="[object Function]",s4e="[object GeneratorFunction]",o4e="[object Map]",a4e="[object Number]",hae="[object Object]",A4e="[object RegExp]",l4e="[object Set]",c4e="[object String]",u4e="[object Symbol]",g4e="[object WeakMap]",f4e="[object ArrayBuffer]",h4e="[object DataView]",p4e="[object Float32Array]",d4e="[object Float64Array]",C4e="[object Int8Array]",m4e="[object Int16Array]",E4e="[object Int32Array]",I4e="[object Uint8Array]",y4e="[object Uint8ClampedArray]",w4e="[object Uint16Array]",B4e="[object Uint32Array]",rr={};rr[gae]=rr[t4e]=rr[f4e]=rr[h4e]=rr[r4e]=rr[i4e]=rr[p4e]=rr[d4e]=rr[C4e]=rr[m4e]=rr[E4e]=rr[o4e]=rr[a4e]=rr[hae]=rr[A4e]=rr[l4e]=rr[c4e]=rr[u4e]=rr[I4e]=rr[y4e]=rr[w4e]=rr[B4e]=!0;rr[n4e]=rr[fae]=rr[g4e]=!1;function j0(t,e,r,i,n,s){var o,a=e&Z8e,l=e&$8e,c=e&e4e;if(r&&(o=n?r(t,i,n,s):r(t)),o!==void 0)return o;if(!z8e(t))return t;var u=q8e(t);if(u){if(o=G8e(t),!a)return T8e(t,o)}else{var g=H8e(t),f=g==fae||g==s4e;if(J8e(t))return L8e(t,a);if(g==hae||g==gae||f&&!n){if(o=l||f?{}:Y8e(t),!a)return l?O8e(t,N8e(o,t)):M8e(t,F8e(o,t))}else{if(!rr[g])return n?t:{};o=j8e(t,g,a)}}s||(s=new P8e);var h=s.get(t);if(h)return h;s.set(t,o),V8e(t)?t.forEach(function(m){o.add(j0(m,e,r,m,t,s))}):W8e(t)&&t.forEach(function(m,I){o.set(I,j0(m,e,r,I,t,s))});var p=c?l?U8e:K8e:l?X8e:_8e,d=u?void 0:p(t);return D8e(d||t,function(m,I){d&&(I=m,m=t[I]),R8e(o,I,j0(m,e,r,I,t,s))}),o}uae.exports=j0});var qN=E((pEt,dae)=>{var Q4e=pae(),b4e=1,v4e=4;function S4e(t){return Q4e(t,b4e|v4e)}dae.exports=S4e});var mae=E((dEt,Cae)=>{var x4e=tF();function k4e(t,e,r){return t==null?t:x4e(t,e,r)}Cae.exports=k4e});var Qae=E((wEt,Bae)=>{function P4e(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}Bae.exports=P4e});var vae=E((BEt,bae)=>{var D4e=xd(),R4e=zP();function F4e(t,e){return e.length<2?t:D4e(t,R4e(e,0,-1))}bae.exports=F4e});var xae=E((QEt,Sae)=>{var N4e=Gg(),L4e=Qae(),T4e=vae(),M4e=Sc();function O4e(t,e){return e=N4e(e,t),t=T4e(t,e),t==null||delete t[M4e(L4e(e))]}Sae.exports=O4e});var Pae=E((bEt,kae)=>{var K4e=xae();function U4e(t,e){return t==null?!0:K4e(t,e)}kae.exports=U4e});var Kae=E((tIt,Oae)=>{Oae.exports={name:"@yarnpkg/cli",version:"3.1.1",license:"BSD-2-Clause",main:"./sources/index.ts",dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/shell":"workspace:^",chalk:"^3.0.0","ci-info":"^3.2.0",clipanion:"^3.0.1",semver:"^7.1.2",tslib:"^1.13.0",typanion:"^3.3.0",yup:"^0.32.9"},devDependencies:{"@types/semver":"^7.1.0","@types/yup":"^0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^",micromatch:"^4.0.2",typescript:"^4.5.2"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",types:"./lib/index.d.ts",bin:null},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"]}},repository:{type:"git",url:"ssh://git@github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=12 <14 || 14.2 - 14.9 || >14.10.0"}}});var iL=E((SBt,QAe)=>{"use strict";QAe.exports=function(e,r){r===!0&&(r=0);var i=e.indexOf("://"),n=e.substring(0,i).split("+").filter(Boolean);return typeof r=="number"?n[r]:n}});var nL=E((xBt,bAe)=>{"use strict";var sze=iL();function vAe(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=sze(t);return t=t.substring(t.indexOf("://")+3),vAe(e)?!0:t.indexOf("@"){"use strict";var oze=iL(),aze=nL(),Aze=require("querystring");function lze(t){t=(t||"").trim();var e={protocols:oze(t),protocol:null,port:null,resource:"",user:"",pathname:"",hash:"",search:"",href:t,query:Object.create(null)},r=t.indexOf("://"),i=-1,n=null,s=null;t.startsWith(".")&&(t.startsWith("./")&&(t=t.substring(2)),e.pathname=t,e.protocol="file");var o=t.charAt(1);return e.protocol||(e.protocol=e.protocols[0],e.protocol||(aze(t)?e.protocol="ssh":((o==="/"||o==="~")&&(t=t.substring(2)),e.protocol="file"))),r!==-1&&(t=t.substring(r+3)),s=t.split("/"),e.protocol!=="file"?e.resource=s.shift():e.resource="",n=e.resource.split("@"),n.length===2&&(e.user=n[0],e.resource=n[1]),n=e.resource.split(":"),n.length===2&&(e.resource=n[0],n[1]?(e.port=Number(n[1]),isNaN(e.port)&&(e.port=null,s.unshift(n[1]))):e.port=null),s=s.filter(Boolean),e.protocol==="file"?e.pathname=e.href:e.pathname=e.pathname||(e.protocol!=="file"||e.href[0]==="/"?"/":"")+s.join("/"),n=e.pathname.split("#"),n.length===2&&(e.pathname=n[0],e.hash=n[1]),n=e.pathname.split("?"),n.length===2&&(e.pathname=n[0],e.search=n[1]),e.query=Aze.parse(e.search),e.href=e.href.replace(/\/$/,""),e.pathname=e.pathname.replace(/\/$/,""),e}SAe.exports=lze});var DAe=E((PBt,kAe)=>{"use strict";var cze=typeof URL=="undefined"?require("url").URL:URL,PAe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t);kAe.exports=(t,e)=>{e=Object.assign({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripHash:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps")&&(e.forceHttp=e.normalizeHttps),Reflect.has(e,"normalizeHttp")&&(e.forceHttps=e.normalizeHttp),Reflect.has(e,"stripFragment")&&(e.stripHash=e.stripFragment),t=t.trim();let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new cze(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?![https?:]).)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];PAe(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z\.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])PAe(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),t}});var FAe=E((DBt,RAe)=>{"use strict";var uze=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},gze=xAe(),fze=DAe();function hze(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(typeof t!="string"||!t.trim())throw new Error("Invalid url.");e&&((typeof e=="undefined"?"undefined":uze(e))!=="object"&&(e={stripFragment:!1}),t=fze(t,e));var r=gze(t);return r}RAe.exports=hze});var TAe=E((RBt,NAe)=>{"use strict";var pze=FAe(),LAe=nL();function dze(t){var e=pze(t);e.token="";var r=e.user.split(":");return r.length===2&&(r[1]==="x-oauth-basic"?e.token=r[0]:r[0]==="x-token-auth"&&(e.token=r[1])),LAe(e.protocols)||LAe(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:e.protocol="file",e.href=e.href.replace(/\/$/,""),e}NAe.exports=dze});var OAe=E((FBt,MAe)=>{"use strict";var Cze=TAe();function sL(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=Cze(t),r=e.resource.split("."),i=null;switch(e.toString=function(l){return sL.stringify(this,l)},e.source=r.length>2?r.slice(1-r.length).join("."):e.source=e.resource,e.git_suffix=/\.git$/.test(e.pathname),e.name=decodeURIComponent(e.pathname.replace(/^\//,"").replace(/\.git$/,"")),e.owner=decodeURIComponent(e.user),e.source){case"git.cloudforge.com":e.owner=e.user,e.organization=r[0],e.source="cloudforge.com";break;case"visualstudio.com":if(e.resource==="vs-ssh.visualstudio.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3],e.full_name=i[2]+"/"+i[3]);break}else{i=e.name.split("/"),i.length===2?(e.owner=i[1],e.name=i[1],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}case"dev.azure.com":case"azure.com":if(e.resource==="ssh.dev.azure.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3]);break}else{i=e.name.split("/"),i.length===5?(e.organization=i[0],e.owner=i[1],e.name=i[4],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}default:i=e.name.split("/");var n=i.length-1;if(i.length>=2){var s=i.indexOf("blob",2),o=i.indexOf("tree",2),a=i.indexOf("commit",2);n=s>0?s-1:o>0?o-1:a>0?a-1:n,e.owner=i.slice(0,n).join("/"),e.name=i[n],a&&(e.commit=i[n+2])}e.ref="",e.filepathtype="",e.filepath="",i.length>n+2&&["blob","tree"].indexOf(i[n+1])>=0&&(e.filepathtype=i[n+1],e.ref=i[n+2],i.length>n+3&&(e.filepath=i.slice(n+3).join("/"))),e.organization=e.owner;break}return e.full_name||(e.full_name=e.owner,e.name&&(e.full_name&&(e.full_name+="/"),e.full_name+=e.name)),e}sL.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",i=t.user||"git",n=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+i+"@"+t.resource+r+"/"+t.full_name+n:i+"@"+t.resource+":"+t.full_name+n;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+i+"@"+t.resource+r+"/"+t.full_name+n;case"http":case"https":var s=t.token?mze(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+s+t.resource+r+"/"+t.full_name+n;default:return t.href}};function mze(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}MAe.exports=sL});var NL=E((Obt,ole)=>{var Mze=jg(),Oze=Kg();function Kze(t,e,r){(r!==void 0&&!Oze(t[e],r)||r===void 0&&!(e in t))&&Mze(t,e,r)}ole.exports=Kze});var Ale=E((Kbt,ale)=>{var Uze=Hd(),Hze=Qo();function Gze(t){return Hze(t)&&Uze(t)}ale.exports=Gze});var ule=E((Ubt,lle)=>{var jze=Ac(),Yze=H0(),qze=Qo(),Jze="[object Object]",Wze=Function.prototype,zze=Object.prototype,cle=Wze.toString,Vze=zze.hasOwnProperty,_ze=cle.call(Object);function Xze(t){if(!qze(t)||jze(t)!=Jze)return!1;var e=Yze(t);if(e===null)return!0;var r=Vze.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&cle.call(r)==_ze}lle.exports=Xze});var LL=E((Hbt,gle)=>{function Zze(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}gle.exports=Zze});var hle=E((Gbt,fle)=>{var $ze=Af(),e5e=lf();function t5e(t){return $ze(t,e5e(t))}fle.exports=t5e});var Ile=E((jbt,ple)=>{var dle=NL(),r5e=UN(),i5e=jN(),n5e=HN(),s5e=YN(),Cle=Pd(),mle=As(),o5e=Ale(),a5e=Od(),A5e=zB(),l5e=Gs(),c5e=ule(),u5e=c0(),Ele=LL(),g5e=hle();function f5e(t,e,r,i,n,s,o){var a=Ele(t,r),l=Ele(e,r),c=o.get(l);if(c){dle(t,r,c);return}var u=s?s(a,l,r+"",t,e,o):void 0,g=u===void 0;if(g){var f=mle(l),h=!f&&a5e(l),p=!f&&!h&&u5e(l);u=l,f||h||p?mle(a)?u=a:o5e(a)?u=n5e(a):h?(g=!1,u=r5e(l,!0)):p?(g=!1,u=i5e(l,!0)):u=[]:c5e(l)||Cle(l)?(u=a,Cle(a)?u=g5e(a):(!l5e(a)||A5e(a))&&(u=s5e(l))):g=!1}g&&(o.set(l,u),n(u,l,i,s,o),o.delete(l)),dle(t,r,u)}ple.exports=f5e});var Ble=E((Ybt,yle)=>{var h5e=Gd(),p5e=NL(),d5e=BF(),C5e=Ile(),m5e=Gs(),E5e=lf(),I5e=LL();function wle(t,e,r,i,n){t!==e&&d5e(e,function(s,o){if(n||(n=new h5e),m5e(s))C5e(t,e,o,r,wle,i,n);else{var a=i?i(I5e(t,o),s,o+"",t,e,n):void 0;a===void 0&&(a=s),p5e(t,o,a)}},E5e)}yle.exports=wle});var ble=E((qbt,Qle)=>{var y5e=e0(),w5e=nF(),B5e=sF();function Q5e(t,e){return B5e(w5e(t,e,y5e),t+"")}Qle.exports=Q5e});var Sle=E((Jbt,vle)=>{var b5e=Kg(),v5e=Hd(),S5e=kd(),x5e=Gs();function k5e(t,e,r){if(!x5e(r))return!1;var i=typeof e;return(i=="number"?v5e(r)&&S5e(e,r.length):i=="string"&&e in r)?b5e(r[e],t):!1}vle.exports=k5e});var kle=E((Wbt,xle)=>{var P5e=ble(),D5e=Sle();function R5e(t){return P5e(function(e,r){var i=-1,n=r.length,s=n>1?r[n-1]:void 0,o=n>2?r[2]:void 0;for(s=t.length>3&&typeof s=="function"?(n--,s):void 0,o&&D5e(r[0],r[1],o)&&(s=n<3?void 0:s,n=1),e=Object(e);++i{var F5e=Ble(),N5e=kle(),L5e=N5e(function(t,e,r){F5e(t,e,r)});Ple.exports=L5e});var Wle=E(($vt,Jle)=>{var VL;Jle.exports=()=>(typeof VL=="undefined"&&(VL=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),VL)});var $le=E(XL=>{function pf(t,e){if(typeof t=="string")return t;if(t){let r,i;if(Array.isArray(t)){for(r=0;r0)return(f=pf(n[g],u))?f.replace("*",c.substring(g.length-1)):Gc(i,c,1)}return Gc(i,c)}}function l6e(t,e={}){let r=0,i,n=e.browser,s=e.fields||["module","main"];for(n&&!s.includes("browser")&&s.unshift("browser");r{var eT;nce.exports=()=>(typeof eT=="undefined"&&(eT=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),eT)});var gce=E((aT,AT)=>{(function(t){aT&&typeof aT=="object"&&typeof AT!="undefined"?AT.exports=t():typeof define=="function"&&define.amd?define([],t):typeof window!="undefined"?window.isWindows=t():typeof global!="undefined"?global.isWindows=t():typeof self!="undefined"?self.isWindows=t():this.isWindows=t()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var dce=E((Dxt,fce)=>{"use strict";lT.ifExists=E6e;var mf=require("util"),Es=require("path"),hce=gce(),I6e=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,y6e={createPwshFile:!0,createCmdFile:hce(),fs:require("fs")},w6e=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function pce(t){let e=P(P({},y6e),t),r=e.fs;return e.fs_={chmod:r.chmod?mf.promisify(r.chmod):async()=>{},mkdir:mf.promisify(r.mkdir),readFile:mf.promisify(r.readFile),stat:mf.promisify(r.stat),unlink:mf.promisify(r.unlink),writeFile:mf.promisify(r.writeFile)},e}async function lT(t,e,r){let i=pce(r);await i.fs_.stat(t),await B6e(t,e,i)}function E6e(t,e,r){return lT(t,e,r).catch(()=>{})}function Q6e(t,e){return e.fs_.unlink(t).catch(()=>{})}async function B6e(t,e,r){let i=await S6e(t,r);return await b6e(e,r),v6e(t,e,i,r)}function b6e(t,e){return e.fs_.mkdir(Es.dirname(t),{recursive:!0})}function v6e(t,e,r,i){let n=pce(i),s=[{generator:P6e,extension:""}];return n.createCmdFile&&s.push({generator:k6e,extension:".cmd"}),n.createPwshFile&&s.push({generator:D6e,extension:".ps1"}),Promise.all(s.map(o=>x6e(t,e+o.extension,r,o.generator,n)))}function R6e(t,e){return Q6e(t,e)}function N6e(t,e){return F6e(t,e)}async function S6e(t,e){let n=(await e.fs_.readFile(t,"utf8")).trim().split(/\r*\n/)[0].match(I6e);if(!n){let s=Es.extname(t).toLowerCase();return{program:w6e.get(s)||null,additionalArgs:""}}return{program:n[1],additionalArgs:n[2]}}async function x6e(t,e,r,i,n){let s=n.preserveSymlinks?"--preserve-symlinks":"",o=[r.additionalArgs,s].filter(a=>a).join(" ");return n=Object.assign({},n,{prog:r.program,args:o}),await R6e(e,n),await n.fs_.writeFile(e,i(t,e,n),"utf8"),N6e(e,n)}function k6e(t,e,r){let n=Es.relative(Es.dirname(e),t).split("/").join("\\"),s=Es.isAbsolute(n)?`"${n}"`:`"%~dp0\\${n}"`,o,a=r.prog,l=r.args||"",c=cT(r.nodePath).win32;a?(o=`"%~dp0\\${a}.exe"`,n=s):(a=s,l="",n="");let u=r.progArgs?`${r.progArgs.join(" ")} `:"",g=c?`@SET NODE_PATH=${c}\r -`:"";return o?g+=`@IF EXIST ${o} (\r - ${o} ${l} ${n} ${u}%*\r -) ELSE (\r - @SETLOCAL\r - @SET PATHEXT=%PATHEXT:;.JS;=;%\r - ${a} ${l} ${n} ${u}%*\r -)\r -`:g+=`@${a} ${l} ${n} ${u}%*\r -`,g}function P6e(t,e,r){let i=Es.relative(Es.dirname(e),t),n=r.prog&&r.prog.split("\\").join("/"),s;i=i.split("\\").join("/");let o=Es.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,a=r.args||"",l=cT(r.nodePath).posix;n?(s=`"$basedir/${r.prog}"`,i=o):(n=o,a="",i="");let c=r.progArgs?`${r.progArgs.join(" ")} `:"",u=`#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") - -case \`uname\` in - *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;; -esac - -`,g=r.nodePath?`export NODE_PATH="${l}" -`:"";return s?u+=`${g}if [ -x ${s} ]; then - exec ${s} ${a} ${i} ${c}"$@" -else - exec ${n} ${a} ${i} ${c}"$@" -fi -`:u+=`${g}${n} ${a} ${i} ${c}"$@" -exit $? -`,u}function D6e(t,e,r){let i=Es.relative(Es.dirname(e),t),n=r.prog&&r.prog.split("\\").join("/"),s=n&&`"${n}$exe"`,o;i=i.split("\\").join("/");let a=Es.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,l=r.args||"",c=cT(r.nodePath),u=c.win32,g=c.posix;s?(o=`"$basedir/${r.prog}$exe"`,i=a):(s=a,l="",i="");let f=r.progArgs?`${r.progArgs.join(" ")} `:"",h=`#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -${r.nodePath?`$env_node_path=$env:NODE_PATH -$env:NODE_PATH="${u}" -`:""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -}`;return r.nodePath&&(h+=` else { - $env:NODE_PATH="${g}" -}`),o?h+=` -$ret=0 -if (Test-Path ${o}) { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${o} ${l} ${i} ${f}$args - } else { - & ${o} ${l} ${i} ${f}$args - } - $ret=$LASTEXITCODE -} else { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${s} ${l} ${i} ${f}$args - } else { - & ${s} ${l} ${i} ${f}$args - } - $ret=$LASTEXITCODE -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $ret -`:h+=` -# Support pipeline input -if ($MyInvocation.ExpectingInput) { - $input | & ${s} ${l} ${i} ${f}$args -} else { - & ${s} ${l} ${i} ${f}$args -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $LASTEXITCODE -`,h}function F6e(t,e){return e.fs_.chmod(t,493)}function cT(t){if(!t)return{win32:"",posix:""};let e=typeof t=="string"?t.split(Es.delimiter):Array.from(t),r={};for(let i=0;i`/mnt/${a.toLowerCase()}`):e[i];r.win32=r.win32?`${r.win32};${n}`:n,r.posix=r.posix?`${r.posix}:${s}`:s,r[i]={win32:n,posix:s}}return r}fce.exports=lT});var PT=E((fPt,Nce)=>{Nce.exports=require("stream")});var Oce=E((hPt,Lce)=>{"use strict";function Tce(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function e9e(t){for(var e=1;e0?this.tail.next=i:this.head=i,this.tail=i,++this.length}},{key:"unshift",value:function(r){var i={data:r,next:this.head};this.length===0&&(this.tail=i),this.head=i,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var i=this.head,n=""+i.data;i=i.next;)n+=r+i.data;return n}},{key:"concat",value:function(r){if(this.length===0)return iQ.alloc(0);for(var i=iQ.allocUnsafe(r>>>0),n=this.head,s=0;n;)o9e(n.data,i,s),s+=n.data.length,n=n.next;return i}},{key:"consume",value:function(r,i){var n;return ro.length?o.length:r;if(a===o.length?s+=o:s+=o.slice(0,r),r-=a,r===0){a===o.length?(++n,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(a));break}++n}return this.length-=n,s}},{key:"_getBuffer",value:function(r){var i=iQ.allocUnsafe(r),n=this.head,s=1;for(n.data.copy(i),r-=n.data.length;n=n.next;){var o=n.data,a=r>o.length?o.length:r;if(o.copy(i,i.length-r,0,a),r-=a,r===0){a===o.length?(++s,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(a));break}++s}return this.length-=s,i}},{key:s9e,value:function(r,i){return DT(this,e9e({},i,{depth:0,customInspect:!1}))}}]),t}()});var FT=E((pPt,Kce)=>{"use strict";function a9e(t,e){var r=this,i=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return i||n?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(RT,this,t)):process.nextTick(RT,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(s){!e&&s?r._writableState?r._writableState.errorEmitted?process.nextTick(nQ,r):(r._writableState.errorEmitted=!0,process.nextTick(Uce,r,s)):process.nextTick(Uce,r,s):e?(process.nextTick(nQ,r),e(s)):process.nextTick(nQ,r)}),this)}function Uce(t,e){RT(t,e),nQ(t)}function nQ(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function A9e(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function RT(t,e){t.emit("error",e)}function l9e(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}Kce.exports={destroy:a9e,undestroy:A9e,errorOrDestroy:l9e}});var VA=E((dPt,Hce)=>{"use strict";var Gce={};function Is(t,e,r){r||(r=Error);function i(s,o,a){return typeof e=="string"?e:e(s,o,a)}class n extends r{constructor(o,a,l){super(i(o,a,l))}}n.prototype.name=r.name,n.prototype.code=t,Gce[t]=n}function jce(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(i=>String(i)),r>2?`one of ${e} ${t.slice(0,r-1).join(", ")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function c9e(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function u9e(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function g9e(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}Is("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);Is("ERR_INVALID_ARG_TYPE",function(t,e,r){let i;typeof e=="string"&&c9e(e,"not ")?(i="must not be",e=e.replace(/^not /,"")):i="must be";let n;if(u9e(t," argument"))n=`The ${t} ${i} ${jce(e,"type")}`;else{let s=g9e(t,".")?"property":"argument";n=`The "${t}" ${s} ${i} ${jce(e,"type")}`}return n+=`. Received type ${typeof r}`,n},TypeError);Is("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Is("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});Is("ERR_STREAM_PREMATURE_CLOSE","Premature close");Is("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});Is("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Is("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Is("ERR_STREAM_WRITE_AFTER_END","write after end");Is("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Is("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);Is("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");Hce.exports.codes=Gce});var NT=E((CPt,Yce)=>{"use strict";var f9e=VA().codes.ERR_INVALID_OPT_VALUE;function h9e(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function p9e(t,e,r,i){var n=h9e(e,i,r);if(n!=null){if(!(isFinite(n)&&Math.floor(n)===n)||n<0){var s=i?r:"highWaterMark";throw new f9e(s,n)}return Math.floor(n)}return t.objectMode?16:16*1024}Yce.exports={getHighWaterMark:p9e}});var qce=E((mPt,LT)=>{typeof Object.create=="function"?LT.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:LT.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}}});var _A=E((EPt,TT)=>{try{if(MT=require("util"),typeof MT.inherits!="function")throw"";TT.exports=MT.inherits}catch(t){TT.exports=qce()}var MT});var Wce=E((IPt,Jce)=>{Jce.exports=require("util").deprecate});var UT=E((yPt,zce)=>{"use strict";zce.exports=Sr;function Vce(t){var e=this;this.next=null,this.entry=null,this.finish=function(){d9e(e,t)}}var If;Sr.WritableState=em;var C9e={deprecate:Wce()},_ce=PT(),sQ=require("buffer").Buffer,m9e=global.Uint8Array||function(){};function E9e(t){return sQ.from(t)}function I9e(t){return sQ.isBuffer(t)||t instanceof m9e}var OT=FT(),y9e=NT(),w9e=y9e.getHighWaterMark,XA=VA().codes,B9e=XA.ERR_INVALID_ARG_TYPE,Q9e=XA.ERR_METHOD_NOT_IMPLEMENTED,b9e=XA.ERR_MULTIPLE_CALLBACK,v9e=XA.ERR_STREAM_CANNOT_PIPE,S9e=XA.ERR_STREAM_DESTROYED,x9e=XA.ERR_STREAM_NULL_VALUES,k9e=XA.ERR_STREAM_WRITE_AFTER_END,P9e=XA.ERR_UNKNOWN_ENCODING,yf=OT.errorOrDestroy;_A()(Sr,_ce);function D9e(){}function em(t,e,r){If=If||Yc(),t=t||{},typeof r!="boolean"&&(r=e instanceof If),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=w9e(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var i=t.decodeStrings===!1;this.decodeStrings=!i,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(n){R9e(e,n)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new Vce(this)}em.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(em.prototype,"buffer",{get:C9e.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}})();var oQ;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(oQ=Function.prototype[Symbol.hasInstance],Object.defineProperty(Sr,Symbol.hasInstance,{value:function(e){return oQ.call(this,e)?!0:this!==Sr?!1:e&&e._writableState instanceof em}})):oQ=function(e){return e instanceof this};function Sr(t){If=If||Yc();var e=this instanceof If;if(!e&&!oQ.call(Sr,this))return new Sr(t);this._writableState=new em(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),_ce.call(this)}Sr.prototype.pipe=function(){yf(this,new v9e)};function F9e(t,e){var r=new k9e;yf(t,r),process.nextTick(e,r)}function N9e(t,e,r,i){var n;return r===null?n=new x9e:typeof r!="string"&&!e.objectMode&&(n=new B9e("chunk",["string","Buffer"],r)),n?(yf(t,n),process.nextTick(i,n),!1):!0}Sr.prototype.write=function(t,e,r){var i=this._writableState,n=!1,s=!i.objectMode&&I9e(t);return s&&!sQ.isBuffer(t)&&(t=E9e(t)),typeof e=="function"&&(r=e,e=null),s?e="buffer":e||(e=i.defaultEncoding),typeof r!="function"&&(r=D9e),i.ending?F9e(this,r):(s||N9e(this,i,t,r))&&(i.pendingcb++,n=L9e(this,i,s,t,e,r)),n};Sr.prototype.cork=function(){this._writableState.corked++};Sr.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&Xce(this,t))};Sr.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new P9e(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Sr.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function T9e(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=sQ.from(e,r)),e}Object.defineProperty(Sr.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function L9e(t,e,r,i,n,s){if(!r){var o=T9e(e,i,n);i!==o&&(r=!0,n="buffer",i=o)}var a=e.objectMode?1:i.length;e.length+=a;var l=e.length{"use strict";var j9e=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};eue.exports=Mo;var tue=HT(),GT=UT();_A()(Mo,tue);for(jT=j9e(GT.prototype),aQ=0;aQ{var lQ=require("buffer"),qa=lQ.Buffer;function iue(t,e){for(var r in t)e[r]=t[r]}qa.from&&qa.alloc&&qa.allocUnsafe&&qa.allocUnsafeSlow?rue.exports=lQ:(iue(lQ,YT),YT.Buffer=wf);function wf(t,e,r){return qa(t,e,r)}iue(qa,wf);wf.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return qa(t,e,r)};wf.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var i=qa(t);return e!==void 0?typeof r=="string"?i.fill(e,r):i.fill(e):i.fill(0),i};wf.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return qa(t)};wf.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return lQ.SlowBuffer(t)}});var WT=E(sue=>{"use strict";var qT=nue().Buffer,oue=qT.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function J9e(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function W9e(t){var e=J9e(t);if(typeof e!="string"&&(qT.isEncoding===oue||!oue(t)))throw new Error("Unknown encoding: "+t);return e||t}sue.StringDecoder=rm;function rm(t){this.encoding=W9e(t);var e;switch(this.encoding){case"utf16le":this.text=V9e,this.end=_9e,e=4;break;case"utf8":this.fillLast=z9e,e=4;break;case"base64":this.text=X9e,this.end=Z9e,e=3;break;default:this.write=$9e,this.end=eVe;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=qT.allocUnsafe(e)}rm.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function iVe(t,e,r){var i=e.length-1;if(i=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(n===2?n=0:t.lastNeed=n-3),n):0))}function nVe(t,e,r){if((e[0]&192)!=128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!=128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!=128)return t.lastNeed=2,"\uFFFD"}}function z9e(t){var e=this.lastTotal-this.lastNeed,r=nVe(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function rVe(t,e){var r=iVe(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)}function tVe(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function V9e(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function _9e(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function X9e(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function Z9e(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function $9e(t){return t.toString(this.encoding)}function eVe(t){return t&&t.length?this.write(t):""}});var cQ=E((QPt,aue)=>{"use strict";var Aue=VA().codes.ERR_STREAM_PREMATURE_CLOSE;function sVe(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{"use strict";var uQ;function ZA(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var AVe=cQ(),$A=Symbol("lastResolve"),qc=Symbol("lastReject"),im=Symbol("error"),gQ=Symbol("ended"),Jc=Symbol("lastPromise"),zT=Symbol("handlePromise"),Wc=Symbol("stream");function el(t,e){return{value:t,done:e}}function lVe(t){var e=t[$A];if(e!==null){var r=t[Wc].read();r!==null&&(t[Jc]=null,t[$A]=null,t[qc]=null,e(el(r,!1)))}}function cVe(t){process.nextTick(lVe,t)}function uVe(t,e){return function(r,i){t.then(function(){if(e[gQ]){r(el(void 0,!0));return}e[zT](r,i)},i)}}var gVe=Object.getPrototypeOf(function(){}),fVe=Object.setPrototypeOf((uQ={get stream(){return this[Wc]},next:function(){var e=this,r=this[im];if(r!==null)return Promise.reject(r);if(this[gQ])return Promise.resolve(el(void 0,!0));if(this[Wc].destroyed)return new Promise(function(o,a){process.nextTick(function(){e[im]?a(e[im]):o(el(void 0,!0))})});var i=this[Jc],n;if(i)n=new Promise(uVe(i,this));else{var s=this[Wc].read();if(s!==null)return Promise.resolve(el(s,!1));n=new Promise(this[zT])}return this[Jc]=n,n}},ZA(uQ,Symbol.asyncIterator,function(){return this}),ZA(uQ,"return",function(){var e=this;return new Promise(function(r,i){e[Wc].destroy(null,function(n){if(n){i(n);return}r(el(void 0,!0))})})}),uQ),gVe),hVe=function(e){var r,i=Object.create(fVe,(r={},ZA(r,Wc,{value:e,writable:!0}),ZA(r,$A,{value:null,writable:!0}),ZA(r,qc,{value:null,writable:!0}),ZA(r,im,{value:null,writable:!0}),ZA(r,gQ,{value:e._readableState.endEmitted,writable:!0}),ZA(r,zT,{value:function(s,o){var a=i[Wc].read();a?(i[Jc]=null,i[$A]=null,i[qc]=null,s(el(a,!1))):(i[$A]=s,i[qc]=o)},writable:!0}),r));return i[Jc]=null,AVe(e,function(n){if(n&&n.code!=="ERR_STREAM_PREMATURE_CLOSE"){var s=i[qc];s!==null&&(i[Jc]=null,i[$A]=null,i[qc]=null,s(n)),i[im]=n;return}var o=i[$A];o!==null&&(i[Jc]=null,i[$A]=null,i[qc]=null,o(el(void 0,!0))),i[gQ]=!0}),e.on("readable",cVe.bind(null,i)),i};cue.exports=hVe});var pue=E((vPt,gue)=>{"use strict";function fue(t,e,r,i,n,s,o){try{var a=t[s](o),l=a.value}catch(c){r(c);return}a.done?e(l):Promise.resolve(l).then(i,n)}function pVe(t){return function(){var e=this,r=arguments;return new Promise(function(i,n){var s=t.apply(e,r);function o(l){fue(s,i,n,o,a,"next",l)}function a(l){fue(s,i,n,o,a,"throw",l)}o(void 0)})}}function hue(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function CVe(t){for(var e=1;e{"use strict";due.exports=kt;var Bf;kt.ReadableState=Cue;var SPt=require("events").EventEmitter,mue=function(e,r){return e.listeners(r).length},nm=PT(),fQ=require("buffer").Buffer,IVe=global.Uint8Array||function(){};function yVe(t){return fQ.from(t)}function wVe(t){return fQ.isBuffer(t)||t instanceof IVe}var VT=require("util"),Et;VT&&VT.debuglog?Et=VT.debuglog("stream"):Et=function(){};var BVe=Oce(),_T=FT(),QVe=NT(),bVe=QVe.getHighWaterMark,hQ=VA().codes,vVe=hQ.ERR_INVALID_ARG_TYPE,SVe=hQ.ERR_STREAM_PUSH_AFTER_EOF,xVe=hQ.ERR_METHOD_NOT_IMPLEMENTED,kVe=hQ.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Qf,XT,ZT;_A()(kt,nm);var sm=_T.errorOrDestroy,$T=["error","close","destroy","pause","resume"];function PVe(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function Cue(t,e,r){Bf=Bf||Yc(),t=t||{},typeof r!="boolean"&&(r=e instanceof Bf),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=bVe(this,t,"readableHighWaterMark",r),this.buffer=new BVe,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(Qf||(Qf=WT().StringDecoder),this.decoder=new Qf(t.encoding),this.encoding=t.encoding)}function kt(t){if(Bf=Bf||Yc(),!(this instanceof kt))return new kt(t);var e=this instanceof Bf;this._readableState=new Cue(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),nm.call(this)}Object.defineProperty(kt.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});kt.prototype.destroy=_T.destroy;kt.prototype._undestroy=_T.undestroy;kt.prototype._destroy=function(t,e){e(t)};kt.prototype.push=function(t,e){var r=this._readableState,i;return r.objectMode?i=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=fQ.from(t,e),e=""),i=!0),Eue(this,t,e,!1,i)};kt.prototype.unshift=function(t){return Eue(this,t,null,!0,!1)};function Eue(t,e,r,i,n){Et("readableAddChunk",e);var s=t._readableState;if(e===null)s.reading=!1,RVe(t,s);else{var o;if(n||(o=DVe(s,e)),o)sm(t,o);else if(s.objectMode||e&&e.length>0)if(typeof e!="string"&&!s.objectMode&&Object.getPrototypeOf(e)!==fQ.prototype&&(e=yVe(e)),i)s.endEmitted?sm(t,new kVe):eM(t,s,e,!0);else if(s.ended)sm(t,new SVe);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||e.length!==0?eM(t,s,e,!1):tM(t,s)):eM(t,s,e,!1)}else i||(s.reading=!1,tM(t,s))}return!s.ended&&(s.length=Iue?t=Iue:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function yue(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=FVe(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}kt.prototype.read=function(t){Et("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return Et("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?rM(this):pQ(this),null;if(t=yue(t,e),t===0&&e.ended)return e.length===0&&rM(this),null;var i=e.needReadable;Et("need readable",i),(e.length===0||e.length-t0?n=wue(t,e):n=null,n===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&rM(this)),n!==null&&this.emit("data",n),n};function RVe(t,e){if(Et("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?pQ(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,Bue(t)))}}function pQ(t){var e=t._readableState;Et("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(Et("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(Bue,t))}function Bue(t){var e=t._readableState;Et("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,iM(t)}function tM(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(NVe,t,e))}function NVe(t,e){for(;!e.reading&&!e.ended&&(e.length1&&Que(i.pipes,t)!==-1)&&!c&&(Et("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function f(m){Et("onerror",m),d(),t.removeListener("error",f),mue(t,"error")===0&&sm(t,m)}PVe(t,"error",f);function h(){t.removeListener("finish",p),d()}t.once("close",h);function p(){Et("onfinish"),t.removeListener("close",h),d()}t.once("finish",p);function d(){Et("unpipe"),r.unpipe(t)}return t.emit("pipe",r),i.flowing||(Et("pipe resume"),r.resume()),t};function LVe(t){return function(){var r=t._readableState;Et("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&mue(t,"data")&&(r.flowing=!0,iM(t))}}kt.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var s=0;s0,i.flowing!==!1&&this.resume()):t==="readable"&&!i.endEmitted&&!i.readableListening&&(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,Et("on readable",i.length,i.reading),i.length?pQ(this):i.reading||process.nextTick(TVe,this)),r};kt.prototype.addListener=kt.prototype.on;kt.prototype.removeListener=function(t,e){var r=nm.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(bue,this),r};kt.prototype.removeAllListeners=function(t){var e=nm.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(bue,this),e};function bue(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function TVe(t){Et("readable nexttick read 0"),t.read(0)}kt.prototype.resume=function(){var t=this._readableState;return t.flowing||(Et("resume"),t.flowing=!t.readableListening,MVe(this,t)),t.paused=!1,this};function MVe(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(OVe,t,e))}function OVe(t,e){Et("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),iM(t),e.flowing&&!e.reading&&t.read(0)}kt.prototype.pause=function(){return Et("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(Et("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function iM(t){var e=t._readableState;for(Et("flow",e.flowing);e.flowing&&t.read()!==null;);}kt.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;t.on("end",function(){if(Et("wrapped end"),r.decoder&&!r.ended){var o=r.decoder.end();o&&o.length&&e.push(o)}e.push(null)}),t.on("data",function(o){if(Et("wrapped data"),r.decoder&&(o=r.decoder.write(o)),!(r.objectMode&&o==null)&&!(!r.objectMode&&(!o||!o.length))){var a=e.push(o);a||(i=!0,t.pause())}});for(var n in t)this[n]===void 0&&typeof t[n]=="function"&&(this[n]=function(a){return function(){return t[a].apply(t,arguments)}}(n));for(var s=0;s<$T.length;s++)t.on($T[s],this.emit.bind(this,$T[s]));return this._read=function(o){Et("wrapped _read",o),i&&(i=!1,t.resume())},this};typeof Symbol=="function"&&(kt.prototype[Symbol.asyncIterator]=function(){return XT===void 0&&(XT=uue()),XT(this)});Object.defineProperty(kt.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(kt.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(kt.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}});kt._fromList=wue;Object.defineProperty(kt.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function wue(t,e){if(e.length===0)return null;var r;return e.objectMode?r=e.buffer.shift():!t||t>=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function rM(t){var e=t._readableState;Et("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(KVe,e,t))}function KVe(t,e){if(Et("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(kt.from=function(t,e){return ZT===void 0&&(ZT=pue()),ZT(kt,t,e)});function Que(t,e){for(var r=0,i=t.length;r{"use strict";vue.exports=Ja;var dQ=VA().codes,UVe=dQ.ERR_METHOD_NOT_IMPLEMENTED,HVe=dQ.ERR_MULTIPLE_CALLBACK,GVe=dQ.ERR_TRANSFORM_ALREADY_TRANSFORMING,jVe=dQ.ERR_TRANSFORM_WITH_LENGTH_0,CQ=Yc();_A()(Ja,CQ);function YVe(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new HVe);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";xue.exports=om;var kue=nM();_A()(om,kue);function om(t){if(!(this instanceof om))return new om(t);kue.call(this,t)}om.prototype._transform=function(t,e,r){r(null,t)}});var Lue=E((DPt,Due)=>{"use strict";var sM;function JVe(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var Rue=VA().codes,WVe=Rue.ERR_MISSING_ARGS,zVe=Rue.ERR_STREAM_DESTROYED;function Fue(t){if(t)throw t}function VVe(t){return t.setHeader&&typeof t.abort=="function"}function _Ve(t,e,r,i){i=JVe(i);var n=!1;t.on("close",function(){n=!0}),sM===void 0&&(sM=cQ()),sM(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,VVe(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();i(o||new zVe("pipe"))}}}function Nue(t){t()}function XVe(t,e){return t.pipe(e)}function ZVe(t){return!t.length||typeof t[t.length-1]!="function"?Fue:t.pop()}function $Ve(){for(var t=arguments.length,e=new Array(t),r=0;r0;return _Ve(o,l,c,function(u){n||(n=u),u&&s.forEach(Nue),!l&&(s.forEach(Nue),i(n))})});return e.reduce(XVe)}Due.exports=$Ve});var bf=E((ys,am)=>{var Am=require("stream");process.env.READABLE_STREAM==="disable"&&Am?(am.exports=Am.Readable,Object.assign(am.exports,Am),am.exports.Stream=Am):(ys=am.exports=HT(),ys.Stream=Am||ys,ys.Readable=ys,ys.Writable=UT(),ys.Duplex=Yc(),ys.Transform=nM(),ys.PassThrough=Pue(),ys.finished=cQ(),ys.pipeline=Lue())});var Oue=E((RPt,Tue)=>{"use strict";var{Buffer:_s}=require("buffer"),Mue=Symbol.for("BufferList");function nr(t){if(!(this instanceof nr))return new nr(t);nr._init.call(this,t)}nr._init=function(e){Object.defineProperty(this,Mue,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};nr.prototype._new=function(e){return new nr(e)};nr.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let i=0;ithis.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};nr.prototype.slice=function(e,r){return typeof e=="number"&&e<0&&(e+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};nr.prototype.copy=function(e,r,i,n){if((typeof i!="number"||i<0)&&(i=0),(typeof n!="number"||n>this.length)&&(n=this.length),i>=this.length||n<=0)return e||_s.alloc(0);let s=!!e,o=this._offset(i),a=n-i,l=a,c=s&&r||0,u=o[1];if(i===0&&n===this.length){if(!s)return this._bufs.length===1?this._bufs[0]:_s.concat(this._bufs,this.length);for(let g=0;gf)this._bufs[g].copy(e,c,u),c+=f;else{this._bufs[g].copy(e,c,u,u+l),c+=f;break}l-=f,u&&(u=0)}return e.length>c?e.slice(0,c):e};nr.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!="number"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let i=this._offset(e),n=this._offset(r),s=this._bufs.slice(i[0],n[0]+1);return n[1]===0?s.pop():s[s.length-1]=s[s.length-1].slice(0,n[1]),i[1]!==0&&(s[0]=s[0].slice(i[1])),this._new(s)};nr.prototype.toString=function(e,r,i){return this.slice(r,i).toString(e)};nr.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};nr.prototype.duplicate=function(){let e=this._new();for(let r=0;rthis.length?this.length:e;let i=this._offset(e),n=i[0],s=i[1];for(;n=t.length){let l=o.indexOf(t,s);if(l!==-1)return this._reverseOffset([n,l]);s=o.length-t.length+1}else{let l=this._reverseOffset([n,s]);if(this._match(l,t))return l;s++}s=0}return-1};nr.prototype._match=function(t,e){if(this.length-t{"use strict";var oM=bf().Duplex,e7e=_A(),lm=Oue();function Oi(t){if(!(this instanceof Oi))return new Oi(t);if(typeof t=="function"){this._callback=t;let e=function(i){this._callback&&(this._callback(i),this._callback=null)}.bind(this);this.on("pipe",function(i){i.on("error",e)}),this.on("unpipe",function(i){i.removeListener("error",e)}),t=null}lm._init.call(this,t),oM.call(this)}e7e(Oi,oM);Object.assign(Oi.prototype,lm.prototype);Oi.prototype._new=function(e){return new Oi(e)};Oi.prototype._write=function(e,r,i){this._appendBuffer(e),typeof i=="function"&&i()};Oi.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};Oi.prototype.end=function(e){oM.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Oi.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};Oi.prototype._isBufferList=function(e){return e instanceof Oi||e instanceof lm||Oi.isBufferList(e)};Oi.isBufferList=lm.isBufferList;mQ.exports=Oi;mQ.exports.BufferListStream=Oi;mQ.exports.BufferList=lm});var lM=E(vf=>{var t7e=Buffer.alloc,r7e="0000000000000000000",i7e="7777777777777777777",Uue="0".charCodeAt(0),Hue=Buffer.from("ustar\0","binary"),n7e=Buffer.from("00","binary"),s7e=Buffer.from("ustar ","binary"),o7e=Buffer.from(" \0","binary"),a7e=parseInt("7777",8),cm=257,aM=263,A7e=function(t,e,r){return typeof t!="number"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},l7e=function(t){switch(t){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},c7e=function(t){switch(t){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},Gue=function(t,e,r,i){for(;re?i7e.slice(0,e)+" ":r7e.slice(0,e-t.length)+t+" "};function u7e(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],i=t.length-1;i>0;i--){var n=t[i];e?r.push(n):r.push(255-n)}var s=0,o=r.length;for(i=0;i=Math.pow(10,r)&&r++,e+r+t};vf.decodeLongPath=function(t,e){return Sf(t,0,t.length,e)};vf.encodePax=function(t){var e="";t.name&&(e+=AM(" path="+t.name+` -`)),t.linkname&&(e+=AM(" linkpath="+t.linkname+` -`));var r=t.pax;if(r)for(var i in r)e+=AM(" "+i+"="+r[i]+` -`);return Buffer.from(e)};vf.decodePax=function(t){for(var e={};t.length;){for(var r=0;r100;){var n=r.indexOf("/");if(n===-1)return null;i+=i?"/"+r.slice(0,n):r.slice(0,n),r=r.slice(n+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(i)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(tl(t.mode&a7e,6),100),e.write(tl(t.uid,6),108),e.write(tl(t.gid,6),116),e.write(tl(t.size,11),124),e.write(tl(t.mtime.getTime()/1e3|0,11),136),e[156]=Uue+c7e(t.type),t.linkname&&e.write(t.linkname,157),Hue.copy(e,cm),n7e.copy(e,aM),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(tl(t.devmajor||0,6),329),e.write(tl(t.devminor||0,6),337),i&&e.write(i,345),e.write(tl(jue(e),6),148),e)};vf.decode=function(t,e,r){var i=t[156]===0?0:t[156]-Uue,n=Sf(t,0,100,e),s=rl(t,100,8),o=rl(t,108,8),a=rl(t,116,8),l=rl(t,124,12),c=rl(t,136,12),u=l7e(i),g=t[157]===0?null:Sf(t,157,100,e),f=Sf(t,265,32),h=Sf(t,297,32),p=rl(t,329,8),d=rl(t,337,8),m=jue(t);if(m===8*32)return null;if(m!==rl(t,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(Hue.compare(t,cm,cm+6)===0)t[345]&&(n=Sf(t,345,155,e)+"/"+n);else if(!(s7e.compare(t,cm,cm+6)===0&&o7e.compare(t,aM,aM+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return i===0&&n&&n[n.length-1]==="/"&&(i=5),{name:n,mode:s,uid:o,gid:a,size:l,mtime:new Date(1e3*c),type:u,linkname:g,uname:f,gname:h,devmajor:p,devminor:d}}});var _ue=E((LPt,Yue)=>{var que=require("util"),g7e=Kue(),um=lM(),Jue=bf().Writable,Wue=bf().PassThrough,zue=function(){},Vue=function(t){return t&=511,t&&512-t},f7e=function(t,e){var r=new EQ(t,e);return r.end(),r},h7e=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},EQ=function(t,e){this._parent=t,this.offset=e,Wue.call(this,{autoDestroy:!1})};que.inherits(EQ,Wue);EQ.prototype.destroy=function(t){this._parent.destroy(t)};var Wa=function(t){if(!(this instanceof Wa))return new Wa(t);Jue.call(this,t),t=t||{},this._offset=0,this._buffer=g7e(),this._missing=0,this._partial=!1,this._onparse=zue,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,i=function(){e._continue()},n=function(f){if(e._locked=!1,f)return e.destroy(f);e._stream||i()},s=function(){e._stream=null;var f=Vue(e._header.size);f?e._parse(f,o):e._parse(512,g),e._locked||i()},o=function(){e._buffer.consume(Vue(e._header.size)),e._parse(512,g),i()},a=function(){var f=e._header.size;e._paxGlobal=um.decodePax(r.slice(0,f)),r.consume(f),s()},l=function(){var f=e._header.size;e._pax=um.decodePax(r.slice(0,f)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(f),s()},c=function(){var f=e._header.size;this._gnuLongPath=um.decodeLongPath(r.slice(0,f),t.filenameEncoding),r.consume(f),s()},u=function(){var f=e._header.size;this._gnuLongLinkPath=um.decodeLongPath(r.slice(0,f),t.filenameEncoding),r.consume(f),s()},g=function(){var f=e._offset,h;try{h=e._header=um.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(p){e.emit("error",p)}if(r.consume(512),!h){e._parse(512,g),i();return}if(h.type==="gnu-long-path"){e._parse(h.size,c),i();return}if(h.type==="gnu-long-link-path"){e._parse(h.size,u),i();return}if(h.type==="pax-global-header"){e._parse(h.size,a),i();return}if(h.type==="pax-header"){e._parse(h.size,l),i();return}if(e._gnuLongPath&&(h.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(h.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=h=h7e(h,e._pax),e._pax=null),e._locked=!0,!h.size||h.type==="directory"){e._parse(512,g),e.emit("entry",h,f7e(e,f),n);return}e._stream=new EQ(e,f),e.emit("entry",h,e._stream,n),e._parse(h.size,s),i()};this._onheader=g,this._parse(512,g)};que.inherits(Wa,Jue);Wa.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.emit("close"))};Wa.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};Wa.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=zue,this._overflow?this._write(this._overflow,void 0,t):t()}};Wa.prototype._write=function(t,e,r){if(!this._destroyed){var i=this._stream,n=this._buffer,s=this._missing;if(t.length&&(this._partial=!0),t.lengths&&(o=t.slice(s),t=t.slice(0,s)),i?i.end(t):n.append(t),this._overflow=o,this._onparse()}};Wa.prototype._final=function(t){if(this._partial)return this.destroy(new Error("Unexpected end of data"));t()};Yue.exports=Wa});var Zue=E((TPt,Xue)=>{Xue.exports=require("fs").constants||require("constants")});var ige=E((MPt,$ue)=>{var xf=Zue(),ege=tk(),IQ=_A(),p7e=Buffer.alloc,tge=bf().Readable,kf=bf().Writable,d7e=require("string_decoder").StringDecoder,yQ=lM(),C7e=parseInt("755",8),m7e=parseInt("644",8),rge=p7e(1024),cM=function(){},uM=function(t,e){e&=511,e&&t.push(rge.slice(0,512-e))};function E7e(t){switch(t&xf.S_IFMT){case xf.S_IFBLK:return"block-device";case xf.S_IFCHR:return"character-device";case xf.S_IFDIR:return"directory";case xf.S_IFIFO:return"fifo";case xf.S_IFLNK:return"symlink"}return"file"}var wQ=function(t){kf.call(this),this.written=0,this._to=t,this._destroyed=!1};IQ(wQ,kf);wQ.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};wQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var BQ=function(){kf.call(this),this.linkname="",this._decoder=new d7e("utf-8"),this._destroyed=!1};IQ(BQ,kf);BQ.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};BQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var gm=function(){kf.call(this),this._destroyed=!1};IQ(gm,kf);gm.prototype._write=function(t,e,r){r(new Error("No body allowed for this entry"))};gm.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var Oo=function(t){if(!(this instanceof Oo))return new Oo(t);tge.call(this,t),this._drain=cM,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};IQ(Oo,tge);Oo.prototype.entry=function(t,e,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof e=="function"&&(r=e,e=null),r||(r=cM);var i=this;if((!t.size||t.type==="symlink")&&(t.size=0),t.type||(t.type=E7e(t.mode)),t.mode||(t.mode=t.type==="directory"?C7e:m7e),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e=="string"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var n=this.push(e);return uM(i,t.size),n?process.nextTick(r):this._drain=r,new gm}if(t.type==="symlink"&&!t.linkname){var s=new BQ;return ege(s,function(a){if(a)return i.destroy(),r(a);t.linkname=s.linkname,i._encode(t),r()}),s}if(this._encode(t),t.type!=="file"&&t.type!=="contiguous-file")return process.nextTick(r),new gm;var o=new wQ(this);return this._stream=o,ege(o,function(a){if(i._stream=null,a)return i.destroy(),r(a);if(o.written!==t.size)return i.destroy(),r(new Error("size mismatch"));uM(i,t.size),i._finalizing&&i.finalize(),r()}),o}};Oo.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(rge),this.push(null))};Oo.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};Oo.prototype._encode=function(t){if(!t.pax){var e=yQ.encode(t);if(e){this.push(e);return}}this._encodePax(t)};Oo.prototype._encodePax=function(t){var e=yQ.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:"PaxHeader",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:"pax-header",linkname:t.linkname&&"PaxHeader",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(yQ.encode(r)),this.push(e),uM(this,e.length),r.size=t.size,r.type=t.type,this.push(yQ.encode(r))};Oo.prototype._read=function(t){var e=this._drain;this._drain=cM,e()};$ue.exports=Oo});var nge=E(gM=>{gM.extract=_ue();gM.pack=ige()});var Cge=E((oDt,fge)=>{"use strict";var Pf=class{constructor(e,r,i){this.__specs=e||{},Object.keys(this.__specs).forEach(n=>{if(typeof this.__specs[n]=="string"){let s=this.__specs[n],o=this.__specs[s];if(o){let a=o.aliases||[];a.push(n,s),o.aliases=[...new Set(a)],this.__specs[n]=o}else throw new Error(`Alias refers to invalid key: ${s} -> ${n}`)}}),this.__opts=r||{},this.__providers=pge(i.filter(n=>n!=null&&typeof n=="object")),this.__isFiggyPudding=!0}get(e){return mM(this,e,!0)}get[Symbol.toStringTag](){return"FiggyPudding"}forEach(e,r=this){for(let[i,n]of this.entries())e.call(r,n,i,this)}toJSON(){let e={};return this.forEach((r,i)=>{e[i]=r}),e}*entries(e){for(let i of Object.keys(this.__specs))yield[i,this.get(i)];let r=e||this.__opts.other;if(r){let i=new Set;for(let n of this.__providers){let s=n.entries?n.entries(r):R7e(n);for(let[o,a]of s)r(o)&&!i.has(o)&&(i.add(o),yield[o,a])}}}*[Symbol.iterator](){for(let[e,r]of this.entries())yield[e,r]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new Pf(this.__specs,this.__opts,pge(this.__providers).concat(e)),hge)}};try{let t=require("util");Pf.prototype[t.inspect.custom]=function(e,r){return this[Symbol.toStringTag]+" "+t.inspect(this.toJSON(),r)}}catch(t){}function F7e(t){throw Object.assign(new Error(`invalid config key requested: ${t}`),{code:"EBADKEY"})}function mM(t,e,r){let i=t.__specs[e];if(r&&!i&&(!t.__opts.other||!t.__opts.other(e)))F7e(e);else{i||(i={});let n;for(let s of t.__providers){if(n=dge(e,s),n===void 0&&i.aliases&&i.aliases.length){for(let o of i.aliases)if(o!==e&&(n=dge(o,s),n!==void 0))break}if(n!==void 0)break}return n===void 0&&i.default!==void 0?typeof i.default=="function"?i.default(t):i.default:n}}function dge(t,e){let r;return e.__isFiggyPudding?r=mM(e,t,!1):typeof e.get=="function"?r=e.get(t):r=e[t],r}var hge={has(t,e){return e in t.__specs&&mM(t,e,!1)!==void 0},ownKeys(t){return Object.keys(t.__specs)},get(t,e){return typeof e=="symbol"||e.slice(0,2)==="__"||e in Pf.prototype?t[e]:t.get(e)},set(t,e,r){if(typeof e=="symbol"||e.slice(0,2)==="__")return t[e]=r,!0;throw new Error("figgyPudding options cannot be modified. Use .concat() instead.")},deleteProperty(){throw new Error("figgyPudding options cannot be deleted. Use .concat() and shadow them instead.")}};fge.exports=N7e;function N7e(t,e){function r(...i){return new Proxy(new Pf(t,e,i),hge)}return r}function pge(t){let e=[];return t.forEach(r=>e.unshift(r)),e}function R7e(t){return Object.keys(t).map(e=>[e,t[e]])}});var Ige=E((aDt,Ko)=>{"use strict";var hm=require("crypto"),L7e=Cge(),T7e=require("stream").Transform,mge=["sha256","sha384","sha512"],M7e=/^[a-z0-9+/]+(?:=?=?)$/i,O7e=/^([^-]+)-([^?]+)([?\S*]*)$/,K7e=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/,U7e=/^[\x21-\x7E]+$/,on=L7e({algorithms:{default:["sha512"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>H7e},Promise:{default:()=>Promise},sep:{default:" "},single:{default:!1},size:{},strict:{default:!1}}),zc=class{get isHash(){return!0}constructor(e,r){r=on(r);let i=!!r.strict;this.source=e.trim();let n=this.source.match(i?K7e:O7e);if(!n||i&&!mge.some(o=>o===n[1]))return;this.algorithm=n[1],this.digest=n[2];let s=n[3];this.options=s?s.slice(1).split("?"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}toString(e){if(e=on(e),e.strict&&!(mge.some(i=>i===this.algorithm)&&this.digest.match(M7e)&&(this.options||[]).every(i=>i.match(U7e))))return"";let r=this.options&&this.options.length?`?${this.options.join("?")}`:"";return`${this.algorithm}-${this.digest}${r}`}},Df=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=on(e);let r=e.sep||" ";return e.strict&&(r=r.replace(/\S+/g," ")),Object.keys(this).map(i=>this[i].map(n=>zc.prototype.toString.call(n,e)).filter(n=>n.length).join(r)).filter(i=>i.length).join(r)}concat(e,r){r=on(r);let i=typeof e=="string"?e:pm(e,r);return Uo(`${this.toString(r)} ${i}`,r)}hexDigest(){return Uo(this,{single:!0}).hexDigest()}match(e,r){r=on(r);let i=Uo(e,r),n=i.pickAlgorithm(r);return this[n]&&i[n]&&this[n].find(s=>i[n].find(o=>s.digest===o.digest))||!1}pickAlgorithm(e){e=on(e);let r=e.pickAlgorithm,i=Object.keys(this);if(!i.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return i.reduce((n,s)=>r(n,s)||n)}};Ko.exports.parse=Uo;function Uo(t,e){if(e=on(e),typeof t=="string")return EM(t,e);if(t.algorithm&&t.digest){let r=new Df;return r[t.algorithm]=[t],EM(pm(r,e),e)}else return EM(pm(t,e),e)}function EM(t,e){return e.single?new zc(t,e):t.trim().split(/\s+/).reduce((r,i)=>{let n=new zc(i,e);if(n.algorithm&&n.digest){let s=n.algorithm;r[s]||(r[s]=[]),r[s].push(n)}return r},new Df)}Ko.exports.stringify=pm;function pm(t,e){return e=on(e),t.algorithm&&t.digest?zc.prototype.toString.call(t,e):typeof t=="string"?pm(Uo(t,e),e):Df.prototype.toString.call(t,e)}Ko.exports.fromHex=G7e;function G7e(t,e,r){r=on(r);let i=r.options&&r.options.length?`?${r.options.join("?")}`:"";return Uo(`${e}-${Buffer.from(t,"hex").toString("base64")}${i}`,r)}Ko.exports.fromData=j7e;function j7e(t,e){e=on(e);let r=e.algorithms,i=e.options&&e.options.length?`?${e.options.join("?")}`:"";return r.reduce((n,s)=>{let o=hm.createHash(s).update(t).digest("base64"),a=new zc(`${s}-${o}${i}`,e);if(a.algorithm&&a.digest){let l=a.algorithm;n[l]||(n[l]=[]),n[l].push(a)}return n},new Df)}Ko.exports.fromStream=Y7e;function Y7e(t,e){e=on(e);let r=e.Promise||Promise,i=IM(e);return new r((n,s)=>{t.pipe(i),t.on("error",s),i.on("error",s);let o;i.on("integrity",a=>{o=a}),i.on("end",()=>n(o)),i.on("data",()=>{})})}Ko.exports.checkData=q7e;function q7e(t,e,r){if(r=on(r),e=Uo(e,r),!Object.keys(e).length){if(r.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let i=e.pickAlgorithm(r),n=hm.createHash(i).update(t).digest("base64"),s=Uo({algorithm:i,digest:n}),o=s.match(e,r);if(o||!r.error)return o;if(typeof r.size=="number"&&t.length!==r.size){let a=new Error(`data size mismatch when checking ${e}. - Wanted: ${r.size} - Found: ${t.length}`);throw a.code="EBADSIZE",a.found=t.length,a.expected=r.size,a.sri=e,a}else{let a=new Error(`Integrity checksum failed when using ${i}: Wanted ${e}, but got ${s}. (${t.length} bytes)`);throw a.code="EINTEGRITY",a.found=s,a.expected=e,a.algorithm=i,a.sri=e,a}}Ko.exports.checkStream=J7e;function J7e(t,e,r){r=on(r);let i=r.Promise||Promise,n=IM(r.concat({integrity:e}));return new i((s,o)=>{t.pipe(n),t.on("error",o),n.on("error",o);let a;n.on("verified",l=>{a=l}),n.on("end",()=>s(a)),n.on("data",()=>{})})}Ko.exports.integrityStream=IM;function IM(t){t=on(t);let e=t.integrity&&Uo(t.integrity,t),r=e&&Object.keys(e).length,i=r&&e.pickAlgorithm(t),n=r&&e[i],s=Array.from(new Set(t.algorithms.concat(i?[i]:[]))),o=s.map(hm.createHash),a=0,l=new T7e({transform(c,u,g){a+=c.length,o.forEach(f=>f.update(c,u)),g(null,c,u)}}).on("end",()=>{let c=t.options&&t.options.length?`?${t.options.join("?")}`:"",u=Uo(o.map((f,h)=>`${s[h]}-${f.digest("base64")}${c}`).join(" "),t),g=r&&u.match(e,t);if(typeof t.size=="number"&&a!==t.size){let f=new Error(`stream size mismatch when checking ${e}. - Wanted: ${t.size} - Found: ${a}`);f.code="EBADSIZE",f.found=a,f.expected=t.size,f.sri=e,l.emit("error",f)}else if(t.integrity&&!g){let f=new Error(`${e} integrity checksum failed when using ${i}: wanted ${n} but got ${u}. (${a} bytes)`);f.code="EINTEGRITY",f.found=u,f.expected=n,f.algorithm=i,f.sri=e,l.emit("error",f)}else l.emit("size",a),l.emit("integrity",u),g&&l.emit("verified",g)});return l}Ko.exports.create=W7e;function W7e(t){t=on(t);let e=t.algorithms,r=t.options.length?`?${t.options.join("?")}`:"",i=e.map(hm.createHash);return{update:function(n,s){return i.forEach(o=>o.update(n,s)),this},digest:function(n){return e.reduce((o,a)=>{let l=i.shift().digest("base64"),c=new zc(`${a}-${l}${r}`,t);if(c.algorithm&&c.digest){let u=c.algorithm;o[u]||(o[u]=[]),o[u].push(c)}return o},new Df)}}}var z7e=new Set(hm.getHashes()),Ege=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>z7e.has(t));function H7e(t,e){return Ege.indexOf(t.toLowerCase())>=Ege.indexOf(e.toLowerCase())?t:e}});var Fd={};it(Fd,{BuildType:()=>Gn,Cache:()=>Qt,Configuration:()=>fe,DEFAULT_LOCK_FILENAME:()=>DR,DEFAULT_RC_FILENAME:()=>PR,FormatType:()=>ps,InstallMode:()=>li,LightReport:()=>Fa,LinkType:()=>gt,Manifest:()=>Ze,MessageName:()=>z,PackageExtensionStatus:()=>ki,PackageExtensionType:()=>oi,Project:()=>Ke,ProjectLookup:()=>KA,Report:()=>Xi,ReportError:()=>nt,SettingsType:()=>ge,StreamReport:()=>Fe,TAG_REGEXP:()=>Rg,TelemetryManager:()=>Rd,ThrowReport:()=>ei,VirtualFetcher:()=>dd,Workspace:()=>Dd,WorkspaceResolver:()=>Yr,YarnVersion:()=>Zr,execUtils:()=>hr,folderUtils:()=>Pb,formatUtils:()=>ue,hashUtils:()=>mn,httpUtils:()=>Zt,miscUtils:()=>de,scriptUtils:()=>Kt,semverUtils:()=>qt,structUtils:()=>S,tgzUtils:()=>Ai,treeUtils:()=>Hs});var hr={};it(hr,{EndStrategy:()=>Pn,execvp:()=>Nhe,pipevp:()=>to});var ch={};it(ch,{AliasFS:()=>Xo,CwdFS:()=>Ft,DEFAULT_COMPRESSION_LEVEL:()=>pl,FakeFS:()=>eA,Filename:()=>wt,JailFS:()=>Zo,LazyFS:()=>oh,LinkStrategy:()=>eh,NoFS:()=>bE,NodeFS:()=>Wt,PortablePath:()=>Se,PosixFS:()=>ah,ProxiedFS:()=>fi,VirtualFS:()=>Pr,ZipFS:()=>Jr,ZipOpenFS:()=>Jn,constants:()=>mr,extendFs:()=>SE,normalizeLineEndings:()=>ul,npath:()=>M,opendir:()=>wE,patchFs:()=>pb,ppath:()=>v,statUtils:()=>rb,toFilename:()=>kr,xfs:()=>T});var mr={};it(mr,{SAFE_TIME:()=>tb,S_IFDIR:()=>zo,S_IFLNK:()=>_o,S_IFMT:()=>kn,S_IFREG:()=>Vo});var kn=61440,zo=16384,Vo=32768,_o=40960,tb=456789e3;var rb={};it(rb,{BigIntStatsEntry:()=>Xf,DEFAULT_MODE:()=>_f,DirEntry:()=>uO,StatEntry:()=>Za,areStatsEqual:()=>nb,clearStats:()=>pE,convertToBigIntStats:()=>dE,makeDefaultStats:()=>Zf,makeEmptyStats:()=>Jfe});var ib=ie(require("util"));var _f=Vo|420,uO=class{constructor(){this.name="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&kn)===zo}isFIFO(){return!1}isFile(){return(this.mode&kn)===Vo}isSocket(){return!1}isSymbolicLink(){return(this.mode&kn)===_o}},Za=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=_f;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&kn)===zo}isFIFO(){return!1}isFile(){return(this.mode&kn)===Vo}isSocket(){return!1}isSymbolicLink(){return(this.mode&kn)===_o}},Xf=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(_f);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(kn))===BigInt(zo)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(kn))===BigInt(Vo)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(kn))===BigInt(_o)}};function Zf(){return new Za}function Jfe(){return pE(Zf())}function pE(t){for(let e in t)if(Object.prototype.hasOwnProperty.call(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):ib.types.isDate(r)&&(t[e]=new Date(0))}return t}function dE(t){let e=new Xf;for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let i=t[r];typeof i=="number"?e[r]=BigInt(i):ib.types.isDate(i)&&(e[r]=new Date(i))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function nb(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,i=e;return!(r.atimeNs!==i.atimeNs||r.mtimeNs!==i.mtimeNs||r.ctimeNs!==i.ctimeNs||r.birthtimeNs!==i.birthtimeNs)}var mE=ie(require("fs"));var $f=ie(require("path")),gO;(function(i){i[i.File=0]="File",i[i.Portable=1]="Portable",i[i.Native=2]="Native"})(gO||(gO={}));var Se={root:"/",dot:"."},wt={nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",rc:".yarnrc.yml"},M=Object.create($f.default),v=Object.create($f.default.posix);M.cwd=()=>process.cwd();v.cwd=()=>sb(process.cwd());v.resolve=(...t)=>t.length>0&&v.isAbsolute(t[0])?$f.default.posix.resolve(...t):$f.default.posix.resolve(v.cwd(),...t);var fO=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?".":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};M.fromPortablePath=hO;M.toPortablePath=sb;M.contains=(t,e)=>fO(M,t,e);v.contains=(t,e)=>fO(v,t,e);var Wfe=/^([a-zA-Z]:.*)$/,zfe=/^\\\\(\.\\)?(.*)$/,Vfe=/^\/([a-zA-Z]:.*)$/,_fe=/^\/unc\/(\.dot\/)?(.*)$/;function hO(t){if(process.platform!=="win32")return t;let e,r;if(e=t.match(Vfe))t=e[1];else if(r=t.match(_fe))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function sb(t){if(process.platform!=="win32")return t;let e,r;return(e=t.match(Wfe))?t=`/${e[1]}`:(r=t.match(zfe))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t.replace(/\\/g,"/")}function CE(t,e){return t===M?hO(e):sb(e)}function kr(t){if(M.parse(t).dir!==""||v.parse(t).dir!=="")throw new Error(`Invalid filename: "${t}"`);return t}var EE=new Date(tb*1e3),eh;(function(r){r.Allow="allow",r.ReadOnly="readOnly"})(eh||(eh={}));async function pO(t,e,r,i,n){let s=t.pathUtils.normalize(e),o=r.pathUtils.normalize(i),a=[],l=[],c=n.stableTime?{mtime:EE,atime:EE}:await r.lstatPromise(o);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[c.atime,c.mtime]});let u=typeof t.lutimesPromise=="function"?t.lutimesPromise.bind(t):t.utimesPromise.bind(t);await ob(a,l,u,t,s,r,o,n);for(let g of a)await g();await Promise.all(l.map(g=>g()))}async function ob(t,e,r,i,n,s,o,a){var f,h;let l=await Xfe(i,n),c=await s.lstatPromise(o),u=a.stableTime?{mtime:EE,atime:EE}:c,g;switch(!0){case c.isDirectory():g=await Zfe(t,e,r,i,n,l,s,o,c,a);break;case c.isFile():g=await $fe(t,e,r,i,n,l,s,o,c,a);break;case c.isSymbolicLink():g=await ehe(t,e,r,i,n,l,s,o,c,a);break;default:throw new Error(`Unsupported file type (${c.mode})`)}return(g||((f=l==null?void 0:l.mtime)==null?void 0:f.getTime())!==u.mtime.getTime()||((h=l==null?void 0:l.atime)==null?void 0:h.getTime())!==u.atime.getTime())&&(e.push(()=>r(n,u.atime,u.mtime)),g=!0),(l===null||(l.mode&511)!=(c.mode&511))&&(e.push(()=>i.chmodPromise(n,c.mode&511)),g=!0),g}async function Xfe(t,e){try{return await t.lstatPromise(e)}catch(r){return null}}async function Zfe(t,e,r,i,n,s,o,a,l,c){if(s!==null&&!s.isDirectory())if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;let u=!1;s===null&&(t.push(async()=>{try{await i.mkdirPromise(n,{mode:l.mode})}catch(f){if(f.code!=="EEXIST")throw f}}),u=!0);let g=await o.readdirPromise(a);if(c.stableSort)for(let f of g.sort())await ob(t,e,r,i,i.pathUtils.join(n,f),o,o.pathUtils.join(a,f),c)&&(u=!0);else(await Promise.all(g.map(async h=>{await ob(t,e,r,i,i.pathUtils.join(n,h),o,o.pathUtils.join(a,h),c)}))).some(h=>h)&&(u=!0);return u}var ab=new WeakMap;function Ab(t,e,r,i,n){return async()=>{await t.linkPromise(r,e),n===eh.ReadOnly&&(i.mode&=~146,await t.chmodPromise(e,i.mode))}}function the(t,e,r,i,n){let s=ab.get(t);return typeof s=="undefined"?async()=>{try{await t.copyFilePromise(r,e,mE.default.constants.COPYFILE_FICLONE_FORCE),ab.set(t,!0)}catch(o){if(o.code==="ENOSYS"||o.code==="ENOTSUP")ab.set(t,!1),await Ab(t,e,r,i,n)();else throw o}}:s?async()=>t.copyFilePromise(r,e,mE.default.constants.COPYFILE_FICLONE_FORCE):Ab(t,e,r,i,n)}async function $fe(t,e,r,i,n,s,o,a,l,c){var f;if(s!==null)if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;let u=(f=c.linkStrategy)!=null?f:null,g=i===o?u!==null?the(i,n,a,l,u):async()=>i.copyFilePromise(a,n,mE.default.constants.COPYFILE_FICLONE):u!==null?Ab(i,n,a,l,u):async()=>i.writeFilePromise(n,await o.readFilePromise(a));return t.push(async()=>g()),!0}async function ehe(t,e,r,i,n,s,o,a,l,c){if(s!==null)if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;return t.push(async()=>{await i.symlinkPromise(CE(i.pathUtils,await o.readlinkPromise(a)),n)}),!0}function qn(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function IE(t){return qn("EBUSY",t)}function th(t,e){return qn("ENOSYS",`${t}, ${e}`)}function $a(t){return qn("EINVAL",`invalid argument, ${t}`)}function Hi(t){return qn("EBADF",`bad file descriptor, ${t}`)}function bs(t){return qn("ENOENT",`no such file or directory, ${t}`)}function eo(t){return qn("ENOTDIR",`not a directory, ${t}`)}function rh(t){return qn("EISDIR",`illegal operation on a directory, ${t}`)}function yE(t){return qn("EEXIST",`file already exists, ${t}`)}function ln(t){return qn("EROFS",`read-only filesystem, ${t}`)}function dO(t){return qn("ENOTEMPTY",`directory not empty, ${t}`)}function CO(t){return qn("EOPNOTSUPP",`operation not supported, ${t}`)}function mO(){return qn("ERR_DIR_CLOSED","Directory handle was closed")}var lb=class extends Error{constructor(e,r){super(e);this.name="Libzip Error",this.code=r}};var EO=class{constructor(e,r,i={}){this.path=e;this.nextDirent=r;this.opts=i;this.closed=!1}throwIfClosed(){if(this.closed)throw mO()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e!="undefined"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e!="undefined"?e(null):Promise.resolve()}closeSync(){var e,r;this.throwIfClosed(),(r=(e=this.opts).onClose)==null||r.call(e),this.closed=!0}};function wE(t,e,r,i){let n=()=>{let s=r.shift();return typeof s=="undefined"?null:Object.assign(t.statSync(t.pathUtils.join(e,s)),{name:s})};return new EO(e,n,i)}var IO=ie(require("os"));var eA=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let i=[e];for(;i.length>0;){let n=i.shift();if((await this.lstatPromise(n)).isDirectory()){let o=await this.readdirPromise(n);if(r)for(let a of o.sort())i.push(this.pathUtils.join(n,a));else throw new Error("Not supported")}else yield n}}async removePromise(e,{recursive:r=!0,maxRetries:i=5}={}){let n;try{n=await this.lstatPromise(e)}catch(s){if(s.code==="ENOENT")return;throw s}if(n.isDirectory()){if(r){let o=await this.readdirPromise(e);await Promise.all(o.map(a=>this.removePromise(this.pathUtils.resolve(e,a))))}let s=0;do try{await this.rmdirPromise(e);break}catch(o){if(o.code==="EBUSY"||o.code==="ENOTEMPTY"){if(i===0)break;await new Promise(a=>setTimeout(a,s*100));continue}else throw o}while(s++{let l;try{[l]=await this.readJsonPromise(i)}catch(c){return Date.now()-s<500}try{return process.kill(l,0),!0}catch(c){return!1}};for(;o===null;)try{o=await this.openPromise(i,"wx")}catch(l){if(l.code==="EEXIST"){if(!await a())try{await this.unlinkPromise(i);continue}catch(c){}if(Date.now()-s<60*1e3)await new Promise(c=>setTimeout(c,n));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${i})`)}else throw l}await this.writePromise(o,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(o),await this.unlinkPromise(i)}catch(l){}}}async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{return JSON.parse(r)}catch(i){throw i.message+=` (in ${e})`,i}}readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(r)}catch(i){throw i.message+=` (in ${e})`,i}}async writeJsonPromise(e,r){return await this.writeFilePromise(e,`${JSON.stringify(r,null,2)} -`)}writeJsonSync(e,r){return this.writeFileSync(e,`${JSON.stringify(r,null,2)} -`)}async preserveTimePromise(e,r){let i=await this.lstatPromise(e),n=await r();typeof n!="undefined"&&(e=n),this.lutimesPromise?await this.lutimesPromise(e,i.atime,i.mtime):i.isSymbolicLink()||await this.utimesPromise(e,i.atime,i.mtime)}async preserveTimeSync(e,r){let i=this.lstatSync(e),n=r();typeof n!="undefined"&&(e=n),this.lutimesSync?this.lutimesSync(e,i.atime,i.mtime):i.isSymbolicLink()||this.utimesSync(e,i.atime,i.mtime)}},gl=class extends eA{constructor(){super(v)}};function rhe(t){let e=t.match(/\r?\n/g);if(e===null)return IO.EOL;let r=e.filter(n=>n===`\r -`).length,i=e.length-r;return r>i?`\r -`:` -`}function ul(t,e){return e.replace(/\r?\n/g,rhe(t))}var $c=ie(require("fs")),cb=ie(require("stream")),QO=ie(require("util")),ub=ie(require("zlib"));var yO=ie(require("fs"));var Wt=class extends gl{constructor(e=yO.default){super();this.realFs=e,typeof this.realFs.lutimes!="undefined"&&(this.lutimesPromise=this.lutimesPromiseImpl,this.lutimesSync=this.lutimesSyncImpl)}getExtractHint(){return!1}getRealPath(){return Se.root}resolve(e){return v.resolve(e)}async openPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.open(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}openSync(e,r,i){return this.realFs.openSync(M.fromPortablePath(e),r,i)}async opendirPromise(e,r){return await new Promise((i,n)=>{typeof r!="undefined"?this.realFs.opendir(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.opendir(M.fromPortablePath(e),this.makeCallback(i,n))}).then(i=>Object.defineProperty(i,"path",{value:e,configurable:!0,writable:!0}))}opendirSync(e,r){let i=typeof r!="undefined"?this.realFs.opendirSync(M.fromPortablePath(e),r):this.realFs.opendirSync(M.fromPortablePath(e));return Object.defineProperty(i,"path",{value:e,configurable:!0,writable:!0})}async readPromise(e,r,i=0,n=0,s=-1){return await new Promise((o,a)=>{this.realFs.read(e,r,i,n,s,(l,c)=>{l?a(l):o(c)})})}readSync(e,r,i,n,s){return this.realFs.readSync(e,r,i,n,s)}async writePromise(e,r,i,n,s){return await new Promise((o,a)=>typeof r=="string"?this.realFs.write(e,r,i,this.makeCallback(o,a)):this.realFs.write(e,r,i,n,s,this.makeCallback(o,a)))}writeSync(e,r,i,n,s){return typeof r=="string"?this.realFs.writeSync(e,r,i):this.realFs.writeSync(e,r,i,n,s)}async closePromise(e){await new Promise((r,i)=>{this.realFs.close(e,this.makeCallback(r,i))})}closeSync(e){this.realFs.closeSync(e)}createReadStream(e,r){let i=e!==null?M.fromPortablePath(e):e;return this.realFs.createReadStream(i,r)}createWriteStream(e,r){let i=e!==null?M.fromPortablePath(e):e;return this.realFs.createWriteStream(i,r)}async realpathPromise(e){return await new Promise((r,i)=>{this.realFs.realpath(M.fromPortablePath(e),{},this.makeCallback(r,i))}).then(r=>M.toPortablePath(r))}realpathSync(e){return M.toPortablePath(this.realFs.realpathSync(M.fromPortablePath(e),{}))}async existsPromise(e){return await new Promise(r=>{this.realFs.exists(M.fromPortablePath(e),r)})}accessSync(e,r){return this.realFs.accessSync(M.fromPortablePath(e),r)}async accessPromise(e,r){return await new Promise((i,n)=>{this.realFs.access(M.fromPortablePath(e),r,this.makeCallback(i,n))})}existsSync(e){return this.realFs.existsSync(M.fromPortablePath(e))}async statPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.stat(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.stat(M.fromPortablePath(e),this.makeCallback(i,n))})}statSync(e,r){return r?this.realFs.statSync(M.fromPortablePath(e),r):this.realFs.statSync(M.fromPortablePath(e))}async fstatPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.fstat(e,r,this.makeCallback(i,n)):this.realFs.fstat(e,this.makeCallback(i,n))})}fstatSync(e,r){return r?this.realFs.fstatSync(e,r):this.realFs.fstatSync(e)}async lstatPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.lstat(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.lstat(M.fromPortablePath(e),this.makeCallback(i,n))})}lstatSync(e,r){return r?this.realFs.lstatSync(M.fromPortablePath(e),r):this.realFs.lstatSync(M.fromPortablePath(e))}async chmodPromise(e,r){return await new Promise((i,n)=>{this.realFs.chmod(M.fromPortablePath(e),r,this.makeCallback(i,n))})}chmodSync(e,r){return this.realFs.chmodSync(M.fromPortablePath(e),r)}async chownPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.chown(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}chownSync(e,r,i){return this.realFs.chownSync(M.fromPortablePath(e),r,i)}async renamePromise(e,r){return await new Promise((i,n)=>{this.realFs.rename(M.fromPortablePath(e),M.fromPortablePath(r),this.makeCallback(i,n))})}renameSync(e,r){return this.realFs.renameSync(M.fromPortablePath(e),M.fromPortablePath(r))}async copyFilePromise(e,r,i=0){return await new Promise((n,s)=>{this.realFs.copyFile(M.fromPortablePath(e),M.fromPortablePath(r),i,this.makeCallback(n,s))})}copyFileSync(e,r,i=0){return this.realFs.copyFileSync(M.fromPortablePath(e),M.fromPortablePath(r),i)}async appendFilePromise(e,r,i){return await new Promise((n,s)=>{let o=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.appendFile(o,r,i,this.makeCallback(n,s)):this.realFs.appendFile(o,r,this.makeCallback(n,s))})}appendFileSync(e,r,i){let n=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.appendFileSync(n,r,i):this.realFs.appendFileSync(n,r)}async writeFilePromise(e,r,i){return await new Promise((n,s)=>{let o=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.writeFile(o,r,i,this.makeCallback(n,s)):this.realFs.writeFile(o,r,this.makeCallback(n,s))})}writeFileSync(e,r,i){let n=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.writeFileSync(n,r,i):this.realFs.writeFileSync(n,r)}async unlinkPromise(e){return await new Promise((r,i)=>{this.realFs.unlink(M.fromPortablePath(e),this.makeCallback(r,i))})}unlinkSync(e){return this.realFs.unlinkSync(M.fromPortablePath(e))}async utimesPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.utimes(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}utimesSync(e,r,i){this.realFs.utimesSync(M.fromPortablePath(e),r,i)}async lutimesPromiseImpl(e,r,i){let n=this.realFs.lutimes;if(typeof n=="undefined")throw th("unavailable Node binding",`lutimes '${e}'`);return await new Promise((s,o)=>{n.call(this.realFs,M.fromPortablePath(e),r,i,this.makeCallback(s,o))})}lutimesSyncImpl(e,r,i){let n=this.realFs.lutimesSync;if(typeof n=="undefined")throw th("unavailable Node binding",`lutimes '${e}'`);n.call(this.realFs,M.fromPortablePath(e),r,i)}async mkdirPromise(e,r){return await new Promise((i,n)=>{this.realFs.mkdir(M.fromPortablePath(e),r,this.makeCallback(i,n))})}mkdirSync(e,r){return this.realFs.mkdirSync(M.fromPortablePath(e),r)}async rmdirPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.rmdir(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.rmdir(M.fromPortablePath(e),this.makeCallback(i,n))})}rmdirSync(e,r){return this.realFs.rmdirSync(M.fromPortablePath(e),r)}async linkPromise(e,r){return await new Promise((i,n)=>{this.realFs.link(M.fromPortablePath(e),M.fromPortablePath(r),this.makeCallback(i,n))})}linkSync(e,r){return this.realFs.linkSync(M.fromPortablePath(e),M.fromPortablePath(r))}async symlinkPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.symlink(M.fromPortablePath(e.replace(/\/+$/,"")),M.fromPortablePath(r),i,this.makeCallback(n,s))})}symlinkSync(e,r,i){return this.realFs.symlinkSync(M.fromPortablePath(e.replace(/\/+$/,"")),M.fromPortablePath(r),i)}async readFilePromise(e,r){return await new Promise((i,n)=>{let s=typeof e=="string"?M.fromPortablePath(e):e;this.realFs.readFile(s,r,this.makeCallback(i,n))})}readFileSync(e,r){let i=typeof e=="string"?M.fromPortablePath(e):e;return this.realFs.readFileSync(i,r)}async readdirPromise(e,r){return await new Promise((i,n)=>{(r==null?void 0:r.withFileTypes)?this.realFs.readdir(M.fromPortablePath(e),{withFileTypes:!0},this.makeCallback(i,n)):this.realFs.readdir(M.fromPortablePath(e),this.makeCallback(s=>i(s),n))})}readdirSync(e,r){return(r==null?void 0:r.withFileTypes)?this.realFs.readdirSync(M.fromPortablePath(e),{withFileTypes:!0}):this.realFs.readdirSync(M.fromPortablePath(e))}async readlinkPromise(e){return await new Promise((r,i)=>{this.realFs.readlink(M.fromPortablePath(e),this.makeCallback(r,i))}).then(r=>M.toPortablePath(r))}readlinkSync(e){return M.toPortablePath(this.realFs.readlinkSync(M.fromPortablePath(e)))}async truncatePromise(e,r){return await new Promise((i,n)=>{this.realFs.truncate(M.fromPortablePath(e),r,this.makeCallback(i,n))})}truncateSync(e,r){return this.realFs.truncateSync(M.fromPortablePath(e),r)}watch(e,r,i){return this.realFs.watch(M.fromPortablePath(e),r,i)}watchFile(e,r,i){return this.realFs.watchFile(M.fromPortablePath(e),r,i)}unwatchFile(e,r){return this.realFs.unwatchFile(M.fromPortablePath(e),r)}makeCallback(e,r){return(i,n)=>{i?r(i):e(n)}}};var wO=ie(require("events"));var fl;(function(r){r.Change="change",r.Stop="stop"})(fl||(fl={}));var hl;(function(i){i.Ready="ready",i.Running="running",i.Stopped="stopped"})(hl||(hl={}));function BO(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var ih=class extends wO.EventEmitter{constructor(e,r,{bigint:i=!1}={}){super();this.status=hl.Ready;this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=e,this.path=r,this.bigint=i,this.lastStats=this.stat()}static create(e,r,i){let n=new ih(e,r,i);return n.start(),n}start(){BO(this.status,hl.Ready),this.status=hl.Running,this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit(fl.Change,this.lastStats,this.lastStats)},3)}stop(){BO(this.status,hl.Running),this.status=hl.Stopped,this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit(fl.Stop)}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch(e){let r=this.bigint?new Xf:new Za;return pE(r)}}makeInterval(e){let r=setInterval(()=>{let i=this.stat(),n=this.lastStats;nb(i,n)||(this.lastStats=i,this.emit(fl.Change,i,n))},e.interval);return e.persistent?r:r.unref()}registerChangeListener(e,r){this.addListener(fl.Change,e),this.changeListeners.set(e,this.makeInterval(r))}unregisterChangeListener(e){this.removeListener(fl.Change,e);let r=this.changeListeners.get(e);typeof r!="undefined"&&clearInterval(r),this.changeListeners.delete(e)}unregisterAllChangeListeners(){for(let e of this.changeListeners.keys())this.unregisterChangeListener(e)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let e of this.changeListeners.values())e.ref();return this}unref(){for(let e of this.changeListeners.values())e.unref();return this}};var BE=new WeakMap;function QE(t,e,r,i){let n,s,o,a;switch(typeof r){case"function":n=!1,s=!0,o=5007,a=r;break;default:({bigint:n=!1,persistent:s=!0,interval:o=5007}=r),a=i;break}let l=BE.get(t);typeof l=="undefined"&&BE.set(t,l=new Map);let c=l.get(e);return typeof c=="undefined"&&(c=ih.create(t,e,{bigint:n}),l.set(e,c)),c.registerChangeListener(a,{persistent:s,interval:o}),c}function nh(t,e,r){let i=BE.get(t);if(typeof i=="undefined")return;let n=i.get(e);typeof n!="undefined"&&(typeof r=="undefined"?n.unregisterAllChangeListeners():n.unregisterChangeListener(r),n.hasChangeListeners()||(n.stop(),i.delete(e)))}function sh(t){let e=BE.get(t);if(typeof e!="undefined")for(let r of e.keys())nh(t,r)}var pl="mixed";function ihe(t){if(typeof t=="string"&&String(+t)===t)return+t;if(Number.isFinite(t))return t<0?Date.now()/1e3:t;if((0,QO.isDate)(t))return t.getTime()/1e3;throw new Error("Invalid time")}function bO(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var Jr=class extends gl{constructor(e,r){super();this.lzSource=null;this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;this.libzip=r.libzip;let i=r;if(this.level=typeof i.level!="undefined"?i.level:pl,e!=null||(e=bO()),typeof e=="string"){let{baseFs:o=new Wt}=i;this.baseFs=o,this.path=e}else this.path=null,this.baseFs=null;if(r.stats)this.stats=r.stats;else if(typeof e=="string")try{this.stats=this.baseFs.statSync(e)}catch(o){if(o.code==="ENOENT"&&i.create)this.stats=Zf();else throw o}else this.stats=Zf();let n=this.libzip.malloc(4);try{let o=0;if(typeof e=="string"&&i.create&&(o|=this.libzip.ZIP_CREATE|this.libzip.ZIP_TRUNCATE),r.readOnly&&(o|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof e=="string")this.zip=this.libzip.open(M.fromPortablePath(e),o,n);else{let a=this.allocateUnattachedSource(e);try{this.zip=this.libzip.openFromSource(a,o,n),this.lzSource=a}catch(l){throw this.libzip.source.free(a),l}}if(this.zip===0){let a=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(a,this.libzip.getValue(n,"i32")),this.makeLibzipError(a)}}finally{this.libzip.free(n)}this.listings.set(Se.root,new Set);let s=this.libzip.getNumEntries(this.zip,0);for(let o=0;oe)throw new Error("Overread");let n=this.libzip.HEAPU8.subarray(r,r+e);return Buffer.from(n)}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}prepareClose(){if(!this.ready)throw IE("archive closed, close");sh(this)}saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot be saved and must be discarded when loaded from a buffer");if(this.prepareClose(),this.readOnly){this.discardAndClose();return}let e=this.baseFs.existsSync(this.path)||this.stats.mode===_f?void 0:this.stats.mode;if(this.entries.size===0)this.discardAndClose(),this.baseFs.writeFileSync(this.path,bO(),{mode:e});else{if(this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));typeof e!="undefined"&&this.baseFs.chmodSync(this.path,e)}this.ready=!1}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}resolve(e){return v.resolve(Se.root,e)}async openPromise(e,r,i){return this.openSync(e,r,i)}openSync(e,r,i){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:e}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(e,r){return this.opendirSync(e,r)}opendirSync(e,r={}){let i=this.resolveFilename(`opendir '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`opendir '${e}'`);let n=this.listings.get(i);if(!n)throw eo(`opendir '${e}'`);let s=[...n],o=this.openSync(i,"r");return wE(this,i,s,{onClose:()=>{this.closeSync(o)}})}async readPromise(e,r,i,n,s){return this.readSync(e,r,i,n,s)}readSync(e,r,i=0,n=r.byteLength,s=-1){let o=this.fds.get(e);if(typeof o=="undefined")throw Hi("read");let a;s===-1||s===null?a=o.cursor:a=s;let l=this.readFileSync(o.p);l.copy(r,i,a,a+n);let c=Math.max(0,Math.min(l.length-a,n));return(s===-1||s===null)&&(o.cursor+=c),c}async writePromise(e,r,i,n,s){return typeof r=="string"?this.writeSync(e,r,s):this.writeSync(e,r,i,n,s)}writeSync(e,r,i,n,s){throw typeof this.fds.get(e)=="undefined"?Hi("read"):new Error("Unimplemented")}async closePromise(e){return this.closeSync(e)}closeSync(e){if(typeof this.fds.get(e)=="undefined")throw Hi("read");this.fds.delete(e)}createReadStream(e,{encoding:r}={}){if(e===null)throw new Error("Unimplemented");let i=this.openSync(e,"r"),n=Object.assign(new cb.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(o,a)=>{clearImmediate(s),this.closeSync(i),a(o)}}),{close(){n.destroy()},bytesRead:0,path:e}),s=setImmediate(async()=>{try{let o=await this.readFilePromise(e,r);n.bytesRead=o.length,n.end(o)}catch(o){n.destroy(o)}});return n}createWriteStream(e,{encoding:r}={}){if(this.readOnly)throw ln(`open '${e}'`);if(e===null)throw new Error("Unimplemented");let i=[],n=this.openSync(e,"w"),s=Object.assign(new cb.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(o,a)=>{try{o?a(o):(this.writeFileSync(e,Buffer.concat(i),r),a(null))}catch(l){a(l)}finally{this.closeSync(n)}}}),{bytesWritten:0,path:e,close(){s.destroy()}});return s.on("data",o=>{let a=Buffer.from(o);s.bytesWritten+=a.length,i.push(a)}),s}async realpathPromise(e){return this.realpathSync(e)}realpathSync(e){let r=this.resolveFilename(`lstat '${e}'`,e);if(!this.entries.has(r)&&!this.listings.has(r))throw bs(`lstat '${e}'`);return r}async existsPromise(e){return this.existsSync(e)}existsSync(e){if(!this.ready)throw IE(`archive closed, existsSync '${e}'`);if(this.symlinkCount===0){let i=v.resolve(Se.root,e);return this.entries.has(i)||this.listings.has(i)}let r;try{r=this.resolveFilename(`stat '${e}'`,e)}catch(i){return!1}return this.entries.has(r)||this.listings.has(r)}async accessPromise(e,r){return this.accessSync(e,r)}accessSync(e,r=$c.constants.F_OK){let i=this.resolveFilename(`access '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`access '${e}'`);if(this.readOnly&&r&$c.constants.W_OK)throw ln(`access '${e}'`)}async statPromise(e,r){return this.statSync(e,r)}statSync(e,r){let i=this.resolveFilename(`stat '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`stat '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`stat '${e}'`);return this.statImpl(`stat '${e}'`,i,r)}async fstatPromise(e,r){return this.fstatSync(e,r)}fstatSync(e,r){let i=this.fds.get(e);if(typeof i=="undefined")throw Hi("fstatSync");let{p:n}=i,s=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(s)&&!this.listings.has(s))throw bs(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(s))throw eo(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,s,r)}async lstatPromise(e,r){return this.lstatSync(e,r)}lstatSync(e,r){let i=this.resolveFilename(`lstat '${e}'`,e,!1);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`lstat '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`lstat '${e}'`);return this.statImpl(`lstat '${e}'`,i,r)}statImpl(e,r,i={}){let n=this.entries.get(r);if(typeof n!="undefined"){let s=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,n,0,0,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.stats.uid,l=this.stats.gid,c=this.libzip.struct.statSize(s)>>>0,u=512,g=Math.ceil(c/u),f=(this.libzip.struct.statMtime(s)>>>0)*1e3,h=f,p=f,d=f,m=new Date(h),I=new Date(p),B=new Date(d),b=new Date(f),R=this.listings.has(r)?zo:this.isSymbolicLink(n)?_o:Vo,H=R===zo?493:420,L=R|this.getUnixMode(n,H)&511,K=this.libzip.struct.statCrc(s),J=Object.assign(new Za,{uid:a,gid:l,size:c,blksize:u,blocks:g,atime:m,birthtime:I,ctime:B,mtime:b,atimeMs:h,birthtimeMs:p,ctimeMs:d,mtimeMs:f,mode:L,crc:K});return i.bigint===!0?dE(J):J}if(this.listings.has(r)){let s=this.stats.uid,o=this.stats.gid,a=0,l=512,c=0,u=this.stats.mtimeMs,g=this.stats.mtimeMs,f=this.stats.mtimeMs,h=this.stats.mtimeMs,p=new Date(u),d=new Date(g),m=new Date(f),I=new Date(h),B=zo|493,b=0,R=Object.assign(new Za,{uid:s,gid:o,size:a,blksize:l,blocks:c,atime:p,birthtime:d,ctime:m,mtime:I,atimeMs:u,birthtimeMs:g,ctimeMs:f,mtimeMs:h,mode:B,crc:b});return i.bigint===!0?dE(R):R}throw new Error("Unreachable")}getUnixMode(e,r){if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?r:this.libzip.getValue(this.libzip.uint32S,"i32")>>>16}registerListing(e){let r=this.listings.get(e);if(r)return r;let i=this.registerListing(v.dirname(e));return r=new Set,i.add(v.basename(e)),this.listings.set(e,r),r}registerEntry(e,r){this.registerListing(v.dirname(e)).add(v.basename(e)),this.entries.set(e,r)}unregisterListing(e){this.listings.delete(e);let r=this.listings.get(v.dirname(e));r==null||r.delete(v.basename(e))}unregisterEntry(e){this.unregisterListing(e);let r=this.entries.get(e);this.entries.delete(e),typeof r!="undefined"&&(this.fileSources.delete(r),this.isSymbolicLink(r)&&this.symlinkCount--)}deleteEntry(e,r){if(this.unregisterEntry(e),this.libzip.delete(this.zip,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(e,r,i=!0){if(!this.ready)throw IE(`archive closed, ${e}`);let n=v.resolve(Se.root,r);if(n==="/")return Se.root;let s=this.entries.get(n);if(i&&s!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(s)){let o=this.getFileSource(s).toString();return this.resolveFilename(e,v.resolve(v.dirname(n),o),!0)}else return n;for(;;){let o=this.resolveFilename(e,v.dirname(n),!0),a=this.listings.has(o),l=this.entries.has(o);if(!a&&!l)throw bs(e);if(!a)throw eo(e);if(n=v.resolve(o,v.basename(n)),!i||this.symlinkCount===0)break;let c=this.libzip.name.locate(this.zip,n.slice(1));if(c===-1)break;if(this.isSymbolicLink(c)){let u=this.getFileSource(c).toString();n=v.resolve(v.dirname(n),u)}else break}return n}allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));let r=this.libzip.malloc(e.byteLength);if(!r)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,r,e.byteLength).set(e),{buffer:r,byteLength:e.byteLength}}allocateUnattachedSource(e){let r=this.libzip.struct.errorS(),{buffer:i,byteLength:n}=this.allocateBuffer(e),s=this.libzip.source.fromUnattachedBuffer(i,n,0,!0,r);if(s===0)throw this.libzip.free(r),this.makeLibzipError(r);return s}allocateSource(e){let{buffer:r,byteLength:i}=this.allocateBuffer(e),n=this.libzip.source.fromBuffer(this.zip,r,i,0,!0);if(n===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return n}setFileSource(e,r){let i=Buffer.isBuffer(r)?r:Buffer.from(r),n=v.relative(Se.root,e),s=this.allocateSource(r);try{let o=this.libzip.file.add(this.zip,n,s,this.libzip.ZIP_FL_OVERWRITE);if(o===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!=="mixed"){let a;if(this.level===0?a=this.libzip.ZIP_CM_STORE:a=this.libzip.ZIP_CM_DEFLATE,this.libzip.file.setCompression(this.zip,o,0,a,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(o,i),o}catch(o){throw this.libzip.source.free(s),o}}isSymbolicLink(e){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,"i32")>>>16&kn)===_o}getFileSource(e,r={asyncDecompress:!1}){let i=this.fileSources.get(e);if(typeof i!="undefined")return i;let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,e,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let o=this.libzip.struct.statCompSize(n),a=this.libzip.struct.statCompMethod(n),l=this.libzip.malloc(o);try{let c=this.libzip.fopenIndex(this.zip,e,0,this.libzip.ZIP_FL_COMPRESSED);if(c===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let u=this.libzip.fread(c,l,o,0);if(u===-1)throw this.makeLibzipError(this.libzip.file.getError(c));if(uo)throw new Error("Overread");let g=this.libzip.HEAPU8.subarray(l,l+o),f=Buffer.from(g);if(a===0)return this.fileSources.set(e,f),f;if(r.asyncDecompress)return new Promise((h,p)=>{ub.default.inflateRaw(f,(d,m)=>{d?p(d):(this.fileSources.set(e,m),h(m))})});{let h=ub.default.inflateRawSync(f);return this.fileSources.set(e,h),h}}finally{this.libzip.fclose(c)}}finally{this.libzip.free(l)}}async chmodPromise(e,r){return this.chmodSync(e,r)}chmodSync(e,r){if(this.readOnly)throw ln(`chmod '${e}'`);r&=493;let i=this.resolveFilename(`chmod '${e}'`,e,!1),n=this.entries.get(i);if(typeof n=="undefined")throw new Error(`Assertion failed: The entry should have been registered (${i})`);let o=this.getUnixMode(n,Vo|0)&~511|r;if(this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,o<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async chownPromise(e,r,i){return this.chownSync(e,r,i)}chownSync(e,r,i){throw new Error("Unimplemented")}async renamePromise(e,r){return this.renameSync(e,r)}renameSync(e,r){throw new Error("Unimplemented")}async copyFilePromise(e,r,i){let{indexSource:n,indexDest:s,resolvedDestP:o}=this.prepareCopyFile(e,r,i),a=await this.getFileSource(n,{asyncDecompress:!0}),l=this.setFileSource(o,a);l!==s&&this.registerEntry(o,l)}copyFileSync(e,r,i=0){let{indexSource:n,indexDest:s,resolvedDestP:o}=this.prepareCopyFile(e,r,i),a=this.getFileSource(n),l=this.setFileSource(o,a);l!==s&&this.registerEntry(o,l)}prepareCopyFile(e,r,i=0){if(this.readOnly)throw ln(`copyfile '${e} -> '${r}'`);if((i&$c.constants.COPYFILE_FICLONE_FORCE)!=0)throw th("unsupported clone operation",`copyfile '${e}' -> ${r}'`);let n=this.resolveFilename(`copyfile '${e} -> ${r}'`,e),s=this.entries.get(n);if(typeof s=="undefined")throw $a(`copyfile '${e}' -> '${r}'`);let o=this.resolveFilename(`copyfile '${e}' -> ${r}'`,r),a=this.entries.get(o);if((i&($c.constants.COPYFILE_EXCL|$c.constants.COPYFILE_FICLONE_FORCE))!=0&&typeof a!="undefined")throw yE(`copyfile '${e}' -> '${r}'`);return{indexSource:s,resolvedDestP:o,indexDest:a}}async appendFilePromise(e,r,i){if(this.readOnly)throw ln(`open '${e}'`);return typeof i=="undefined"?i={flag:"a"}:typeof i=="string"?i={flag:"a",encoding:i}:typeof i.flag=="undefined"&&(i=P({flag:"a"},i)),this.writeFilePromise(e,r,i)}appendFileSync(e,r,i={}){if(this.readOnly)throw ln(`open '${e}'`);return typeof i=="undefined"?i={flag:"a"}:typeof i=="string"?i={flag:"a",encoding:i}:typeof i.flag=="undefined"&&(i=P({flag:"a"},i)),this.writeFileSync(e,r,i)}fdToPath(e,r){var n;let i=(n=this.fds.get(e))==null?void 0:n.p;if(typeof i=="undefined")throw Hi(r);return i}async writeFilePromise(e,r,i){let{encoding:n,mode:s,index:o,resolvedP:a}=this.prepareWriteFile(e,i);o!==void 0&&typeof i=="object"&&i.flag&&i.flag.includes("a")&&(r=Buffer.concat([await this.getFileSource(o,{asyncDecompress:!0}),Buffer.from(r)])),n!==null&&(r=r.toString(n));let l=this.setFileSource(a,r);l!==o&&this.registerEntry(a,l),s!==null&&await this.chmodPromise(a,s)}writeFileSync(e,r,i){let{encoding:n,mode:s,index:o,resolvedP:a}=this.prepareWriteFile(e,i);o!==void 0&&typeof i=="object"&&i.flag&&i.flag.includes("a")&&(r=Buffer.concat([this.getFileSource(o),Buffer.from(r)])),n!==null&&(r=r.toString(n));let l=this.setFileSource(a,r);l!==o&&this.registerEntry(a,l),s!==null&&this.chmodSync(a,s)}prepareWriteFile(e,r){if(typeof e=="number"&&(e=this.fdToPath(e,"read")),this.readOnly)throw ln(`open '${e}'`);let i=this.resolveFilename(`open '${e}'`,e);if(this.listings.has(i))throw rh(`open '${e}'`);let n=null,s=null;typeof r=="string"?n=r:typeof r=="object"&&({encoding:n=null,mode:s=null}=r);let o=this.entries.get(i);return{encoding:n,mode:s,resolvedP:i,index:o}}async unlinkPromise(e){return this.unlinkSync(e)}unlinkSync(e){if(this.readOnly)throw ln(`unlink '${e}'`);let r=this.resolveFilename(`unlink '${e}'`,e);if(this.listings.has(r))throw rh(`unlink '${e}'`);let i=this.entries.get(r);if(typeof i=="undefined")throw $a(`unlink '${e}'`);this.deleteEntry(r,i)}async utimesPromise(e,r,i){return this.utimesSync(e,r,i)}utimesSync(e,r,i){if(this.readOnly)throw ln(`utimes '${e}'`);let n=this.resolveFilename(`utimes '${e}'`,e);this.utimesImpl(n,i)}async lutimesPromise(e,r,i){return this.lutimesSync(e,r,i)}lutimesSync(e,r,i){if(this.readOnly)throw ln(`lutimes '${e}'`);let n=this.resolveFilename(`utimes '${e}'`,e,!1);this.utimesImpl(n,i)}utimesImpl(e,r){this.listings.has(e)&&(this.entries.has(e)||this.hydrateDirectory(e));let i=this.entries.get(e);if(i===void 0)throw new Error("Unreachable");if(this.libzip.file.setMtime(this.zip,i,0,ihe(r),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(e,r){return this.mkdirSync(e,r)}mkdirSync(e,{mode:r=493,recursive:i=!1}={}){if(i){this.mkdirpSync(e,{chmod:r});return}if(this.readOnly)throw ln(`mkdir '${e}'`);let n=this.resolveFilename(`mkdir '${e}'`,e);if(this.entries.has(n)||this.listings.has(n))throw yE(`mkdir '${e}'`);this.hydrateDirectory(n),this.chmodSync(n,r)}async rmdirPromise(e,r){return this.rmdirSync(e,r)}rmdirSync(e,{recursive:r=!1}={}){if(this.readOnly)throw ln(`rmdir '${e}'`);if(r){this.removeSync(e);return}let i=this.resolveFilename(`rmdir '${e}'`,e),n=this.listings.get(i);if(!n)throw eo(`rmdir '${e}'`);if(n.size>0)throw dO(`rmdir '${e}'`);let s=this.entries.get(i);if(typeof s=="undefined")throw $a(`rmdir '${e}'`);this.deleteEntry(e,s)}hydrateDirectory(e){let r=this.libzip.dir.add(this.zip,v.relative(Se.root,e));if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(e),this.registerEntry(e,r),r}async linkPromise(e,r){return this.linkSync(e,r)}linkSync(e,r){throw CO(`link '${e}' -> '${r}'`)}async symlinkPromise(e,r){return this.symlinkSync(e,r)}symlinkSync(e,r){if(this.readOnly)throw ln(`symlink '${e}' -> '${r}'`);let i=this.resolveFilename(`symlink '${e}' -> '${r}'`,r);if(this.listings.has(i))throw rh(`symlink '${e}' -> '${r}'`);if(this.entries.has(i))throw yE(`symlink '${e}' -> '${r}'`);let n=this.setFileSource(i,e);if(this.registerEntry(i,n),this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,(_o|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(e,r){typeof r=="object"&&(r=r?r.encoding:void 0);let i=await this.readFileBuffer(e,{asyncDecompress:!0});return r?i.toString(r):i}readFileSync(e,r){typeof r=="object"&&(r=r?r.encoding:void 0);let i=this.readFileBuffer(e);return r?i.toString(r):i}readFileBuffer(e,r={asyncDecompress:!1}){typeof e=="number"&&(e=this.fdToPath(e,"read"));let i=this.resolveFilename(`open '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`open '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`open '${e}'`);if(this.listings.has(i))throw rh("read");let n=this.entries.get(i);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,r)}async readdirPromise(e,r){return this.readdirSync(e,r)}readdirSync(e,r){let i=this.resolveFilename(`scandir '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`scandir '${e}'`);let n=this.listings.get(i);if(!n)throw eo(`scandir '${e}'`);let s=[...n];return(r==null?void 0:r.withFileTypes)?s.map(o=>Object.assign(this.statImpl("lstat",v.join(e,o)),{name:o})):s}async readlinkPromise(e){let r=this.prepareReadlink(e);return(await this.getFileSource(r,{asyncDecompress:!0})).toString()}readlinkSync(e){let r=this.prepareReadlink(e);return this.getFileSource(r).toString()}prepareReadlink(e){let r=this.resolveFilename(`readlink '${e}'`,e,!1);if(!this.entries.has(r)&&!this.listings.has(r))throw bs(`readlink '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(r))throw eo(`open '${e}'`);if(this.listings.has(r))throw $a(`readlink '${e}'`);let i=this.entries.get(r);if(i===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(i))throw $a(`readlink '${e}'`);return i}async truncatePromise(e,r=0){let i=this.resolveFilename(`open '${e}'`,e),n=this.entries.get(i);if(typeof n=="undefined")throw $a(`open '${e}'`);let s=await this.getFileSource(n,{asyncDecompress:!0}),o=Buffer.alloc(r,0);return s.copy(o),await this.writeFilePromise(e,o)}truncateSync(e,r=0){let i=this.resolveFilename(`open '${e}'`,e),n=this.entries.get(i);if(typeof n=="undefined")throw $a(`open '${e}'`);let s=this.getFileSource(n),o=Buffer.alloc(r,0);return s.copy(o),this.writeFileSync(e,o)}watch(e,r,i){let n;switch(typeof r){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=r);break}if(!n)return{on:()=>{},close:()=>{}};let s=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(s)}}}watchFile(e,r,i){let n=v.resolve(Se.root,e);return QE(this,n,r,i)}unwatchFile(e,r){let i=v.resolve(Se.root,e);return nh(this,i,r)}};var fi=class extends eA{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,i){return this.baseFs.openPromise(this.mapToBase(e),r,i)}openSync(e,r,i){return this.baseFs.openSync(this.mapToBase(e),r,i)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,i,n,s){return await this.baseFs.readPromise(e,r,i,n,s)}readSync(e,r,i,n,s){return this.baseFs.readSync(e,r,i,n,s)}async writePromise(e,r,i,n,s){return typeof r=="string"?await this.baseFs.writePromise(e,r,i):await this.baseFs.writePromise(e,r,i,n,s)}writeSync(e,r,i,n,s){return typeof r=="string"?this.baseFs.writeSync(e,r,i):this.baseFs.writeSync(e,r,i,n,s)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}async lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async chownPromise(e,r,i){return this.baseFs.chownPromise(this.mapToBase(e),r,i)}chownSync(e,r,i){return this.baseFs.chownSync(this.mapToBase(e),r,i)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,i=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),i)}copyFileSync(e,r,i=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),i)}async appendFilePromise(e,r,i){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,i)}appendFileSync(e,r,i){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,i)}async writeFilePromise(e,r,i){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,i)}writeFileSync(e,r,i){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,i)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,i){return this.baseFs.utimesPromise(this.mapToBase(e),r,i)}utimesSync(e,r,i){return this.baseFs.utimesSync(this.mapToBase(e),r,i)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,i){let n=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkPromise(o,n,i)}symlinkSync(e,r,i){let n=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkSync(o,n,i)}async readFilePromise(e,r){return r==="utf8"?this.baseFs.readFilePromise(this.fsMapToBase(e),r):this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return r==="utf8"?this.baseFs.readFileSync(this.fsMapToBase(e),r):this.baseFs.readFileSync(this.fsMapToBase(e),r)}async readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}watch(e,r,i){return this.baseFs.watch(this.mapToBase(e),r,i)}watchFile(e,r,i){return this.baseFs.watchFile(this.mapToBase(e),r,i)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}};var Xo=class extends fi{constructor(e,{baseFs:r,pathUtils:i}){super(i);this.target=e,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(e){return e}mapToBase(e){return e}};var Ft=class extends fi{constructor(e,{baseFs:r=new Wt}={}){super(v);this.target=this.pathUtils.normalize(e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(e){return this.pathUtils.isAbsolute(e)?v.normalize(e):this.baseFs.resolve(v.join(this.target,e))}mapFromBase(e){return e}mapToBase(e){return this.pathUtils.isAbsolute(e)?e:this.pathUtils.join(this.target,e)}};var vO=Se.root,Zo=class extends fi{constructor(e,{baseFs:r=new Wt}={}){super(v);this.target=this.pathUtils.resolve(Se.root,e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Se.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(e){let r=this.pathUtils.normalize(e);if(this.pathUtils.isAbsolute(e))return this.pathUtils.resolve(this.target,this.pathUtils.relative(vO,e));if(r.match(/^\.\.\/?/))throw new Error(`Resolving this path (${e}) would escape the jail`);return this.pathUtils.resolve(this.target,e)}mapFromBase(e){return this.pathUtils.resolve(vO,this.pathUtils.relative(this.target,e))}};var oh=class extends fi{constructor(e,r){super(r);this.instance=null;this.factory=e}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(e){this.instance=e}mapFromBase(e){return e}mapToBase(e){return e}};var ze=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),gb=class extends eA{constructor(){super(v)}getExtractHint(){throw ze()}getRealPath(){throw ze()}resolve(){throw ze()}async openPromise(){throw ze()}openSync(){throw ze()}async opendirPromise(){throw ze()}opendirSync(){throw ze()}async readPromise(){throw ze()}readSync(){throw ze()}async writePromise(){throw ze()}writeSync(){throw ze()}async closePromise(){throw ze()}closeSync(){throw ze()}createWriteStream(){throw ze()}createReadStream(){throw ze()}async realpathPromise(){throw ze()}realpathSync(){throw ze()}async readdirPromise(){throw ze()}readdirSync(){throw ze()}async existsPromise(e){throw ze()}existsSync(e){throw ze()}async accessPromise(){throw ze()}accessSync(){throw ze()}async statPromise(){throw ze()}statSync(){throw ze()}async fstatPromise(e){throw ze()}fstatSync(e){throw ze()}async lstatPromise(e){throw ze()}lstatSync(e){throw ze()}async chmodPromise(){throw ze()}chmodSync(){throw ze()}async chownPromise(){throw ze()}chownSync(){throw ze()}async mkdirPromise(){throw ze()}mkdirSync(){throw ze()}async rmdirPromise(){throw ze()}rmdirSync(){throw ze()}async linkPromise(){throw ze()}linkSync(){throw ze()}async symlinkPromise(){throw ze()}symlinkSync(){throw ze()}async renamePromise(){throw ze()}renameSync(){throw ze()}async copyFilePromise(){throw ze()}copyFileSync(){throw ze()}async appendFilePromise(){throw ze()}appendFileSync(){throw ze()}async writeFilePromise(){throw ze()}writeFileSync(){throw ze()}async unlinkPromise(){throw ze()}unlinkSync(){throw ze()}async utimesPromise(){throw ze()}utimesSync(){throw ze()}async readFilePromise(){throw ze()}readFileSync(){throw ze()}async readlinkPromise(){throw ze()}readlinkSync(){throw ze()}async truncatePromise(){throw ze()}truncateSync(){throw ze()}watch(){throw ze()}watchFile(){throw ze()}unwatchFile(){throw ze()}},bE=gb;bE.instance=new gb;var ah=class extends fi{constructor(e){super(M);this.baseFs=e}mapFromBase(e){return M.fromPortablePath(e)}mapToBase(e){return M.toPortablePath(e)}};var nhe=/^[0-9]+$/,fb=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,she=/^([^/]+-)?[a-f0-9]+$/,Pr=class extends fi{static makeVirtualPath(e,r,i){if(v.basename(e)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!v.basename(r).match(she))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let s=v.relative(v.dirname(e),i).split("/"),o=0;for(;o{let r=t.indexOf(e);if(r<=0)return null;let i=r;for(;r>=0&&(i=r+e.length,t[i]!==v.sep);){if(t[r-1]===v.sep)return null;r=t.indexOf(e,i)}return t.length>i&&t[i]!==v.sep?null:t.slice(0,i)},Jn=class extends gl{constructor({libzip:e,baseFs:r=new Wt,filter:i=null,maxOpenFiles:n=Infinity,readOnlyArchives:s=!1,useCache:o=!0,maxAge:a=5e3,fileExtensions:l=null}){super();this.fdMap=new Map;this.nextFd=3;this.isZip=new Set;this.notZip=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.libzipFactory=typeof e!="function"?()=>e:e,this.baseFs=r,this.zipInstances=o?new Map:null,this.filter=i,this.maxOpenFiles=n,this.readOnlyArchives=s,this.maxAge=a,this.fileExtensions=l}static async openPromise(e,r){let i=new Jn(r);try{return await e(i)}finally{i.saveAndClose()}}get libzip(){return typeof this.libzipInstance=="undefined"&&(this.libzipInstance=this.libzipFactory()),this.libzipInstance}getExtractHint(e){return this.baseFs.getExtractHint(e)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(sh(this),this.zipInstances)for(let[e,{zipFs:r}]of this.zipInstances.entries())r.saveAndClose(),this.zipInstances.delete(e)}discardAndClose(){if(sh(this),this.zipInstances)for(let[e,{zipFs:r}]of this.zipInstances.entries())r.discardAndClose(),this.zipInstances.delete(e)}resolve(e){return this.baseFs.resolve(e)}remapFd(e,r){let i=this.nextFd++|$o;return this.fdMap.set(i,[e,r]),i}async openPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.openPromise(e,r,i),async(n,{subPath:s})=>this.remapFd(n,await n.openPromise(s,r,i)))}openSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.openSync(e,r,i),(n,{subPath:s})=>this.remapFd(n,n.openSync(s,r,i)))}async opendirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.opendirPromise(e,r),async(i,{subPath:n})=>await i.opendirPromise(n,r),{requireSubpath:!1})}opendirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.opendirSync(e,r),(i,{subPath:n})=>i.opendirSync(n,r),{requireSubpath:!1})}async readPromise(e,r,i,n,s){if((e&$o)==0)return await this.baseFs.readPromise(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("read");let[a,l]=o;return await a.readPromise(l,r,i,n,s)}readSync(e,r,i,n,s){if((e&$o)==0)return this.baseFs.readSync(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("readSync");let[a,l]=o;return a.readSync(l,r,i,n,s)}async writePromise(e,r,i,n,s){if((e&$o)==0)return typeof r=="string"?await this.baseFs.writePromise(e,r,i):await this.baseFs.writePromise(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("write");let[a,l]=o;return typeof r=="string"?await a.writePromise(l,r,i):await a.writePromise(l,r,i,n,s)}writeSync(e,r,i,n,s){if((e&$o)==0)return typeof r=="string"?this.baseFs.writeSync(e,r,i):this.baseFs.writeSync(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("writeSync");let[a,l]=o;return typeof r=="string"?a.writeSync(l,r,i):a.writeSync(l,r,i,n,s)}async closePromise(e){if((e&$o)==0)return await this.baseFs.closePromise(e);let r=this.fdMap.get(e);if(typeof r=="undefined")throw Hi("close");this.fdMap.delete(e);let[i,n]=r;return await i.closePromise(n)}closeSync(e){if((e&$o)==0)return this.baseFs.closeSync(e);let r=this.fdMap.get(e);if(typeof r=="undefined")throw Hi("closeSync");this.fdMap.delete(e);let[i,n]=r;return i.closeSync(n)}createReadStream(e,r){return e===null?this.baseFs.createReadStream(e,r):this.makeCallSync(e,()=>this.baseFs.createReadStream(e,r),(i,{subPath:n})=>i.createReadStream(n,r))}createWriteStream(e,r){return e===null?this.baseFs.createWriteStream(e,r):this.makeCallSync(e,()=>this.baseFs.createWriteStream(e,r),(i,{subPath:n})=>i.createWriteStream(n,r))}async realpathPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.realpathPromise(e),async(r,{archivePath:i,subPath:n})=>{let s=this.realPaths.get(i);return typeof s=="undefined"&&(s=await this.baseFs.realpathPromise(i),this.realPaths.set(i,s)),this.pathUtils.join(s,this.pathUtils.relative(Se.root,await r.realpathPromise(n)))})}realpathSync(e){return this.makeCallSync(e,()=>this.baseFs.realpathSync(e),(r,{archivePath:i,subPath:n})=>{let s=this.realPaths.get(i);return typeof s=="undefined"&&(s=this.baseFs.realpathSync(i),this.realPaths.set(i,s)),this.pathUtils.join(s,this.pathUtils.relative(Se.root,r.realpathSync(n)))})}async existsPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.existsPromise(e),async(r,{subPath:i})=>await r.existsPromise(i))}existsSync(e){return this.makeCallSync(e,()=>this.baseFs.existsSync(e),(r,{subPath:i})=>r.existsSync(i))}async accessPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.accessPromise(e,r),async(i,{subPath:n})=>await i.accessPromise(n,r))}accessSync(e,r){return this.makeCallSync(e,()=>this.baseFs.accessSync(e,r),(i,{subPath:n})=>i.accessSync(n,r))}async statPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.statPromise(e,r),async(i,{subPath:n})=>await i.statPromise(n,r))}statSync(e,r){return this.makeCallSync(e,()=>this.baseFs.statSync(e,r),(i,{subPath:n})=>i.statSync(n,r))}async fstatPromise(e,r){if((e&$o)==0)return this.baseFs.fstatPromise(e,r);let i=this.fdMap.get(e);if(typeof i=="undefined")throw Hi("fstat");let[n,s]=i;return n.fstatPromise(s,r)}fstatSync(e,r){if((e&$o)==0)return this.baseFs.fstatSync(e,r);let i=this.fdMap.get(e);if(typeof i=="undefined")throw Hi("fstatSync");let[n,s]=i;return n.fstatSync(s,r)}async lstatPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.lstatPromise(e,r),async(i,{subPath:n})=>await i.lstatPromise(n,r))}lstatSync(e,r){return this.makeCallSync(e,()=>this.baseFs.lstatSync(e,r),(i,{subPath:n})=>i.lstatSync(n,r))}async chmodPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.chmodPromise(e,r),async(i,{subPath:n})=>await i.chmodPromise(n,r))}chmodSync(e,r){return this.makeCallSync(e,()=>this.baseFs.chmodSync(e,r),(i,{subPath:n})=>i.chmodSync(n,r))}async chownPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.chownPromise(e,r,i),async(n,{subPath:s})=>await n.chownPromise(s,r,i))}chownSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.chownSync(e,r,i),(n,{subPath:s})=>n.chownSync(s,r,i))}async renamePromise(e,r){return await this.makeCallPromise(e,async()=>await this.makeCallPromise(r,async()=>await this.baseFs.renamePromise(e,r),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(i,{subPath:n})=>await this.makeCallPromise(r,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(s,{subPath:o})=>{if(i!==s)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await i.renamePromise(n,o)}))}renameSync(e,r){return this.makeCallSync(e,()=>this.makeCallSync(r,()=>this.baseFs.renameSync(e,r),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(i,{subPath:n})=>this.makeCallSync(r,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(s,{subPath:o})=>{if(i!==s)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return i.renameSync(n,o)}))}async copyFilePromise(e,r,i=0){let n=async(s,o,a,l)=>{if((i&Ah.constants.COPYFILE_FICLONE_FORCE)!=0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${o}' -> ${l}'`),{code:"EXDEV"});if(i&Ah.constants.COPYFILE_EXCL&&await this.existsPromise(o))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${o}' -> '${l}'`),{code:"EEXIST"});let c;try{c=await s.readFilePromise(o)}catch(u){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${o}' -> '${l}'`),{code:"EINVAL"})}await a.writeFilePromise(l,c)};return await this.makeCallPromise(e,async()=>await this.makeCallPromise(r,async()=>await this.baseFs.copyFilePromise(e,r,i),async(s,{subPath:o})=>await n(this.baseFs,e,s,o)),async(s,{subPath:o})=>await this.makeCallPromise(r,async()=>await n(s,o,this.baseFs,r),async(a,{subPath:l})=>s!==a?await n(s,o,a,l):await s.copyFilePromise(o,l,i)))}copyFileSync(e,r,i=0){let n=(s,o,a,l)=>{if((i&Ah.constants.COPYFILE_FICLONE_FORCE)!=0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${o}' -> ${l}'`),{code:"EXDEV"});if(i&Ah.constants.COPYFILE_EXCL&&this.existsSync(o))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${o}' -> '${l}'`),{code:"EEXIST"});let c;try{c=s.readFileSync(o)}catch(u){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${o}' -> '${l}'`),{code:"EINVAL"})}a.writeFileSync(l,c)};return this.makeCallSync(e,()=>this.makeCallSync(r,()=>this.baseFs.copyFileSync(e,r,i),(s,{subPath:o})=>n(this.baseFs,e,s,o)),(s,{subPath:o})=>this.makeCallSync(r,()=>n(s,o,this.baseFs,r),(a,{subPath:l})=>s!==a?n(s,o,a,l):s.copyFileSync(o,l,i)))}async appendFilePromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.appendFilePromise(e,r,i),async(n,{subPath:s})=>await n.appendFilePromise(s,r,i))}appendFileSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.appendFileSync(e,r,i),(n,{subPath:s})=>n.appendFileSync(s,r,i))}async writeFilePromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.writeFilePromise(e,r,i),async(n,{subPath:s})=>await n.writeFilePromise(s,r,i))}writeFileSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.writeFileSync(e,r,i),(n,{subPath:s})=>n.writeFileSync(s,r,i))}async unlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.unlinkPromise(e),async(r,{subPath:i})=>await r.unlinkPromise(i))}unlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.unlinkSync(e),(r,{subPath:i})=>r.unlinkSync(i))}async utimesPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.utimesPromise(e,r,i),async(n,{subPath:s})=>await n.utimesPromise(s,r,i))}utimesSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.utimesSync(e,r,i),(n,{subPath:s})=>n.utimesSync(s,r,i))}async mkdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.mkdirPromise(e,r),async(i,{subPath:n})=>await i.mkdirPromise(n,r))}mkdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.mkdirSync(e,r),(i,{subPath:n})=>i.mkdirSync(n,r))}async rmdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.rmdirPromise(e,r),async(i,{subPath:n})=>await i.rmdirPromise(n,r))}rmdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.rmdirSync(e,r),(i,{subPath:n})=>i.rmdirSync(n,r))}async linkPromise(e,r){return await this.makeCallPromise(r,async()=>await this.baseFs.linkPromise(e,r),async(i,{subPath:n})=>await i.linkPromise(e,n))}linkSync(e,r){return this.makeCallSync(r,()=>this.baseFs.linkSync(e,r),(i,{subPath:n})=>i.linkSync(e,n))}async symlinkPromise(e,r,i){return await this.makeCallPromise(r,async()=>await this.baseFs.symlinkPromise(e,r,i),async(n,{subPath:s})=>await n.symlinkPromise(e,s))}symlinkSync(e,r,i){return this.makeCallSync(r,()=>this.baseFs.symlinkSync(e,r,i),(n,{subPath:s})=>n.symlinkSync(e,s))}async readFilePromise(e,r){return this.makeCallPromise(e,async()=>{switch(r){case"utf8":return await this.baseFs.readFilePromise(e,r);default:return await this.baseFs.readFilePromise(e,r)}},async(i,{subPath:n})=>await i.readFilePromise(n,r))}readFileSync(e,r){return this.makeCallSync(e,()=>{switch(r){case"utf8":return this.baseFs.readFileSync(e,r);default:return this.baseFs.readFileSync(e,r)}},(i,{subPath:n})=>i.readFileSync(n,r))}async readdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.readdirPromise(e,r),async(i,{subPath:n})=>await i.readdirPromise(n,r),{requireSubpath:!1})}readdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.readdirSync(e,r),(i,{subPath:n})=>i.readdirSync(n,r),{requireSubpath:!1})}async readlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.readlinkPromise(e),async(r,{subPath:i})=>await r.readlinkPromise(i))}readlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.readlinkSync(e),(r,{subPath:i})=>r.readlinkSync(i))}async truncatePromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.truncatePromise(e,r),async(i,{subPath:n})=>await i.truncatePromise(n,r))}truncateSync(e,r){return this.makeCallSync(e,()=>this.baseFs.truncateSync(e,r),(i,{subPath:n})=>i.truncateSync(n,r))}watch(e,r,i){return this.makeCallSync(e,()=>this.baseFs.watch(e,r,i),(n,{subPath:s})=>n.watch(s,r,i))}watchFile(e,r,i){return this.makeCallSync(e,()=>this.baseFs.watchFile(e,r,i),()=>QE(this,e,r,i))}unwatchFile(e,r){return this.makeCallSync(e,()=>this.baseFs.unwatchFile(e,r),()=>nh(this,e,r))}async makeCallPromise(e,r,i,{requireSubpath:n=!0}={}){if(typeof e!="string")return await r();let s=this.resolve(e),o=this.findZip(s);return o?n&&o.subPath==="/"?await r():await this.getZipPromise(o.archivePath,async a=>await i(a,o)):await r()}makeCallSync(e,r,i,{requireSubpath:n=!0}={}){if(typeof e!="string")return r();let s=this.resolve(e),o=this.findZip(s);return!o||n&&o.subPath==="/"?r():this.getZipSync(o.archivePath,a=>i(a,o))}findZip(e){if(this.filter&&!this.filter.test(e))return null;let r="";for(;;){let i=e.substr(r.length),n;if(!this.fileExtensions)n=SO(i,".zip");else for(let s of this.fileExtensions)if(n=SO(i,s),n)break;if(!n)return null;if(r=this.pathUtils.join(r,n),this.isZip.has(r)===!1){if(this.notZip.has(r))continue;try{if(!this.baseFs.lstatSync(r).isFile()){this.notZip.add(r);continue}}catch{return null}this.isZip.add(r)}return{archivePath:r,subPath:this.pathUtils.join(Se.root,e.substr(r.length))}}}limitOpenFiles(e){if(this.zipInstances===null)return;let r=Date.now(),i=r+this.maxAge,n=e===null?0:this.zipInstances.size-e;for(let[s,{zipFs:o,expiresAt:a,refCount:l}]of this.zipInstances.entries())if(!(l!==0||o.hasOpenFileHandles())){if(r>=a){o.saveAndClose(),this.zipInstances.delete(s),n-=1;continue}else if(e===null||n<=0){i=a;break}o.saveAndClose(),this.zipInstances.delete(s),n-=1}this.limitOpenFilesTimeout===null&&(e===null&&this.zipInstances.size>0||e!==null)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},i-r).unref())}async getZipPromise(e,r){let i=async()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:await this.baseFs.statPromise(e)});if(this.zipInstances){let n=this.zipInstances.get(e);if(!n){let s=await i();n=this.zipInstances.get(e),n||(n={zipFs:new Jr(e,s),expiresAt:0,refCount:0})}this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,n),n.expiresAt=Date.now()+this.maxAge,n.refCount+=1;try{return await r(n.zipFs)}finally{n.refCount-=1}}else{let n=new Jr(e,await i());try{return await r(n)}finally{n.saveAndClose()}}}getZipSync(e,r){let i=()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:this.baseFs.statSync(e)});if(this.zipInstances){let n=this.zipInstances.get(e);return n||(n={zipFs:new Jr(e,i()),expiresAt:0,refCount:0}),this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,n),n.expiresAt=Date.now()+this.maxAge,r(n.zipFs)}else{let n=new Jr(e,i());try{return r(n)}finally{n.saveAndClose()}}}};var lh=ie(require("util"));var vE=ie(require("url"));var hb=class extends fi{constructor(e){super(M);this.baseFs=e}mapFromBase(e){return e}mapToBase(e){return e instanceof vE.URL?(0,vE.fileURLToPath)(e):e}};var ohe=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","chownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","statSync","symlinkSync","truncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),xO=new Set(["accessPromise","appendFilePromise","chmodPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"]),ahe=new Set(["appendFilePromise","chmodPromise","chownPromise","closePromise","readPromise","readFilePromise","statPromise","truncatePromise","utimesPromise","writePromise","writeFilePromise"]);function pb(t,e){e=new hb(e);let r=(i,n,s)=>{let o=i[n];i[n]=s,typeof(o==null?void 0:o[lh.promisify.custom])!="undefined"&&(s[lh.promisify.custom]=o[lh.promisify.custom])};{r(t,"exists",(i,...n)=>{let o=typeof n[n.length-1]=="function"?n.pop():()=>{};process.nextTick(()=>{e.existsPromise(i).then(a=>{o(a)},()=>{o(!1)})})}),r(t,"read",(i,n,...s)=>{let a=typeof s[s.length-1]=="function"?s.pop():()=>{};process.nextTick(()=>{e.readPromise(i,n,...s).then(l=>{a(null,l,n)},l=>{a(l,0,n)})})});for(let i of xO){let n=i.replace(/Promise$/,"");if(typeof t[n]=="undefined")continue;let s=e[i];if(typeof s=="undefined")continue;r(t,n,(...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{s.apply(e,a).then(u=>{c(null,u)},u=>{c(u)})})})}t.realpath.native=t.realpath}{r(t,"existsSync",i=>{try{return e.existsSync(i)}catch(n){return!1}});for(let i of ohe){let n=i;if(typeof t[n]=="undefined")continue;let s=e[i];typeof s!="undefined"&&r(t,n,s.bind(e))}t.realpathSync.native=t.realpathSync}{let i=process.emitWarning;process.emitWarning=()=>{};let n;try{n=t.promises}finally{process.emitWarning=i}if(typeof n!="undefined"){for(let o of xO){let a=o.replace(/Promise$/,"");if(typeof n[a]=="undefined")continue;let l=e[o];typeof l!="undefined"&&o!=="open"&&r(n,a,l.bind(e))}class s{constructor(a){this.fd=a}}for(let o of ahe){let a=o.replace(/Promise$/,""),l=e[o];typeof l!="undefined"&&r(s.prototype,a,function(...c){return l.call(e,this.fd,...c)})}r(n,"open",async(...o)=>{let a=await e.openPromise(...o);return new s(a)})}}t.read[lh.promisify.custom]=async(i,n,...s)=>({bytesRead:await e.readPromise(i,n,...s),buffer:n})}function SE(t,e){let r=Object.create(t);return pb(r,e),r}var kO=ie(require("os"));function PO(t){let e=M.toPortablePath(kO.default.tmpdir()),r=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return v.join(e,`${t}${r}`)}var vs=new Set,DO=!1;function RO(){DO||(DO=!0,process.once("exit",()=>{T.rmtempSync()}))}var T=Object.assign(new Wt,{detachTemp(t){vs.delete(t)},mktempSync(t){for(RO();;){let e=PO("xfs-");try{this.mkdirSync(e)}catch(i){if(i.code==="EEXIST")continue;throw i}let r=this.realpathSync(e);if(vs.add(r),typeof t!="undefined")try{return t(r)}finally{if(vs.has(r)){vs.delete(r);try{this.removeSync(r)}catch{}}}else return r}},async mktempPromise(t){for(RO();;){let e=PO("xfs-");try{await this.mkdirPromise(e)}catch(i){if(i.code==="EEXIST")continue;throw i}let r=await this.realpathPromise(e);if(vs.add(r),typeof t!="undefined")try{return await t(r)}finally{if(vs.has(r)){vs.delete(r);try{await this.removePromise(r)}catch{}}}else return r}},async rmtempPromise(){await Promise.all(Array.from(vs.values()).map(async t=>{try{await T.removePromise(t,{maxRetries:0}),vs.delete(t)}catch{}}))},rmtempSync(){for(let t of vs)try{T.removeSync(t),vs.delete(t)}catch{}}});var vb=ie(bb()),Pn;(function(i){i[i.Never=0]="Never",i[i.ErrorCode=1]="ErrorCode",i[i.Always=2]="Always"})(Pn||(Pn={}));function dl(t){return t!==null&&typeof t.fd=="number"}var Cl=new Set;function Sb(){}function xb(){for(let t of Cl)t.kill()}async function to(t,e,{cwd:r,env:i=process.env,strict:n=!1,stdin:s=null,stdout:o,stderr:a,end:l=2}){let c=["pipe","pipe","pipe"];s===null?c[0]="ignore":dl(s)&&(c[0]=s),dl(o)&&(c[1]=o),dl(a)&&(c[2]=a);let u=(0,vb.default)(t,e,{cwd:M.fromPortablePath(r),env:_(P({},i),{PWD:M.fromPortablePath(r)}),stdio:c});Cl.add(u),Cl.size===1&&(process.on("SIGINT",Sb),process.on("SIGTERM",xb)),!dl(s)&&s!==null&&s.pipe(u.stdin),dl(o)||u.stdout.pipe(o,{end:!1}),dl(a)||u.stderr.pipe(a,{end:!1});let g=()=>{for(let f of new Set([o,a]))dl(f)||f.end()};return new Promise((f,h)=>{u.on("error",p=>{Cl.delete(u),Cl.size===0&&(process.off("SIGINT",Sb),process.off("SIGTERM",xb)),(l===2||l===1)&&g(),h(p)}),u.on("close",(p,d)=>{Cl.delete(u),Cl.size===0&&(process.off("SIGINT",Sb),process.off("SIGTERM",xb)),(l===2||l===1&&p>0)&&g(),p===0||!n?f({code:kb(p,d)}):h(p!==null?new Error(`Child "${t}" exited with exit code ${p}`):new Error(`Child "${t}" exited with signal ${d}`))})})}async function Nhe(t,e,{cwd:r,env:i=process.env,encoding:n="utf8",strict:s=!1}){let o=["ignore","pipe","pipe"],a=[],l=[],c=M.fromPortablePath(r);typeof i.PWD!="undefined"&&(i=_(P({},i),{PWD:c}));let u=(0,vb.default)(t,e,{cwd:c,env:i,stdio:o});return u.stdout.on("data",g=>{a.push(g)}),u.stderr.on("data",g=>{l.push(g)}),await new Promise((g,f)=>{u.on("error",()=>{f()}),u.on("close",(h,p)=>{let d=n==="buffer"?Buffer.concat(a):Buffer.concat(a).toString(n),m=n==="buffer"?Buffer.concat(l):Buffer.concat(l).toString(n);h===0||!s?g({code:kb(h,p),stdout:d,stderr:m}):f(Object.assign(new Error(`Child "${t}" exited with exit code ${h} - -${m}`),{code:kb(h,p),stdout:d,stderr:m}))})})}var Lhe=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]]);function kb(t,e){let r=Lhe.get(e);return typeof r!="undefined"?128+r:t!=null?t:1}var Pb={};it(Pb,{getDefaultGlobalFolder:()=>Rb,getHomeFolder:()=>uh,isFolderInside:()=>Fb});var Db=ie(require("os"));function Rb(){if(process.platform==="win32"){let t=M.toPortablePath(process.env.LOCALAPPDATA||M.join((0,Db.homedir)(),"AppData","Local"));return v.resolve(t,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let t=M.toPortablePath(process.env.XDG_DATA_HOME);return v.resolve(t,"yarn/berry")}return v.resolve(uh(),".yarn/berry")}function uh(){return M.toPortablePath((0,Db.homedir)()||"/usr/local/share")}function Fb(t,e){let r=v.relative(e,t);return r&&!r.startsWith("..")&&!v.isAbsolute(r)}var ue={};it(ue,{LogLevel:()=>Ts,Style:()=>Gl,Type:()=>Le,addLogFilterSupport:()=>Cp,applyColor:()=>On,applyHyperlink:()=>Ku,applyStyle:()=>Py,json:()=>Uu,mark:()=>xx,pretty:()=>Ve,prettyField:()=>Yl,prettyList:()=>Kx,supportsColor:()=>xy,supportsHyperlinks:()=>Mx,tuple:()=>jl});var pp=ie(jb()),dp=ie(ml()),o3=ie(Nn()),a3=ie(gU());var z;(function(te){te[te.UNNAMED=0]="UNNAMED",te[te.EXCEPTION=1]="EXCEPTION",te[te.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",te[te.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",te[te.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",te[te.BUILD_DISABLED=5]="BUILD_DISABLED",te[te.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",te[te.MUST_BUILD=7]="MUST_BUILD",te[te.MUST_REBUILD=8]="MUST_REBUILD",te[te.BUILD_FAILED=9]="BUILD_FAILED",te[te.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",te[te.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",te[te.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",te[te.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",te[te.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",te[te.REMOTE_INVALID=15]="REMOTE_INVALID",te[te.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",te[te.RESOLUTION_PACK=17]="RESOLUTION_PACK",te[te.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",te[te.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",te[te.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",te[te.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",te[te.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",te[te.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",te[te.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",te[te.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",te[te.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",te[te.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",te[te.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",te[te.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",te[te.FETCH_FAILED=30]="FETCH_FAILED",te[te.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",te[te.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",te[te.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",te[te.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",te[te.NETWORK_ERROR=35]="NETWORK_ERROR",te[te.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",te[te.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",te[te.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",te[te.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",te[te.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",te[te.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",te[te.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",te[te.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",te[te.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",te[te.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",te[te.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",te[te.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",te[te.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",te[te.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",te[te.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",te[te.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",te[te.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",te[te.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",te[te.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",te[te.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",te[te.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",te[te.INVALID_MANIFEST=57]="INVALID_MANIFEST",te[te.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",te[te.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",te[te.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",te[te.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",te[te.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",te[te.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",te[te.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",te[te.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",te[te.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",te[te.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",te[te.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",te[te.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",te[te.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",te[te.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",te[te.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",te[te.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",te[te.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",te[te.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",te[te.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",te[te.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE"})(z||(z={}));function KE(t){return`YN${t.toString(10).padStart(4,"0")}`}var de={};it(de,{BufferStream:()=>OH,CachingStrategy:()=>Dl,DefaultStream:()=>KH,assertNever:()=>Lv,bufferStream:()=>Cu,buildIgnorePattern:()=>DEe,convertMapsToIndexableObjects:()=>aI,dynamicRequire:()=>mu,escapeRegExp:()=>SEe,getArrayWithDefault:()=>hu,getFactoryWithDefault:()=>na,getMapWithDefault:()=>pu,getSetWithDefault:()=>Pl,isIndexableObject:()=>Tv,isPathLike:()=>REe,isTaggedYarnVersion:()=>vEe,mapAndFilter:()=>kl,mapAndFind:()=>MH,overrideType:()=>Nv,parseBoolean:()=>Hh,parseOptionalBoolean:()=>jH,prettifyAsyncErrors:()=>du,prettifySyncErrors:()=>Mv,releaseAfterUseAsync:()=>kEe,replaceEnvVariables:()=>Ov,sortMap:()=>gn,tryParseOptionalBoolean:()=>Kv,validateEnum:()=>xEe});var vh={};it(vh,{Builtins:()=>Iv,Cli:()=>oo,Command:()=>ye,Option:()=>Y,UsageError:()=>me});var yl=0,Eh=1,Gi=2,sv="",hi="\0",Au=-1,ov=/^(-h|--help)(?:=([0-9]+))?$/,UE=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,fU=/^-[a-zA-Z]{2,}$/,av=/^([^=]+)=([\s\S]*)$/,Av=process.env.DEBUG_CLI==="1";var me=class extends Error{constructor(e){super(e);this.clipanion={type:"usage"},this.name="UsageError"}},Ih=class extends Error{constructor(e,r){super();if(this.input=e,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(i=>i.reason!==null&&i.reason===r[0].reason)){let[{reason:i}]=this.candidates;this.message=`${i} - -${this.candidates.map(({usage:n})=>`$ ${n}`).join(` -`)}`}else if(this.candidates.length===1){let[{usage:i}]=this.candidates;this.message=`Command not found; did you mean: - -$ ${i} -${lv(e)}`}else this.message=`Command not found; did you mean one of: - -${this.candidates.map(({usage:i},n)=>`${`${n}.`.padStart(4)} ${i}`).join(` -`)} - -${lv(e)}`}},cv=class extends Error{constructor(e,r){super();this.input=e,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: - -${this.usages.map((i,n)=>`${`${n}.`.padStart(4)} ${i}`).join(` -`)} - -${lv(e)}`}},lv=t=>`While running ${t.filter(e=>e!==hi).map(e=>{let r=JSON.stringify(e);return e.match(/\s/)||e.length===0||r!==`"${e}"`?r:e}).join(" ")}`;var yh=Symbol("clipanion/isOption");function ji(t){return _(P({},t),{[yh]:!0})}function so(t,e){return typeof t=="undefined"?[t,e]:typeof t=="object"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function HE(t,e=!1){let r=t.replace(/^\.: /,"");return e&&(r=r[0].toLowerCase()+r.slice(1)),r}function wh(t,e){return e.length===1?new me(`${t}: ${HE(e[0],!0)}`):new me(`${t}: -${e.map(r=>` -- ${HE(r)}`).join("")}`)}function Bh(t,e,r){if(typeof r=="undefined")return e;let i=[],n=[],s=a=>{let l=e;return e=a,s.bind(null,l)};if(!r(e,{errors:i,coercions:n,coercion:s}))throw wh(`Invalid value for ${t}`,i);for(let[,a]of n)a();return e}var ye=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(typeof r!="undefined"){let{isDict:n,isUnknown:s,applyCascade:o}=await Promise.resolve().then(()=>(Ss(),lu)),a=o(n(s()),r),l=[],c=[];if(!a(this,{errors:l,coercions:c}))throw wh("Invalid option schema",l);for(let[,g]of c)g()}let i=await this.execute();return typeof i!="undefined"?i:0}};ye.isOption=yh;ye.Default=[];function un(t){Av&&console.log(t)}var BU={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:Au};function QU(){return{nodes:[qi(),qi(),qi()]}}function nCe(t){let e=QU(),r=[],i=e.nodes.length;for(let n of t){r.push(i);for(let s=0;s{if(e.has(i))return;e.add(i);let n=t.nodes[i];for(let o of Object.values(n.statics))for(let{to:a}of o)r(a);for(let[,{to:o}]of n.dynamics)r(o);for(let{to:o}of n.shortcuts)r(o);let s=new Set(n.shortcuts.map(({to:o})=>o));for(;n.shortcuts.length>0;){let{to:o}=n.shortcuts.shift(),a=t.nodes[o];for(let[l,c]of Object.entries(a.statics)){let u=Object.prototype.hasOwnProperty.call(n.statics,l)?n.statics[l]:n.statics[l]=[];for(let g of c)u.some(({to:f})=>g.to===f)||u.push(g)}for(let[l,c]of a.dynamics)n.dynamics.some(([u,{to:g}])=>l===u&&c.to===g)||n.dynamics.push([l,c]);for(let l of a.shortcuts)s.has(l.to)||(n.shortcuts.push(l),s.add(l.to))}};r(yl)}function oCe(t,{prefix:e=""}={}){if(Av){un(`${e}Nodes are:`);for(let r=0;rl!==Gi).map(({state:l})=>({usage:l.candidateUsage,reason:null})));if(a.every(({node:l})=>l===Gi))throw new Ih(e,a.map(({state:l})=>({usage:l.candidateUsage,reason:l.errorMessage})));i=aCe(a)}if(i.length>0){un(" Results:");for(let s of i)un(` - ${s.node} -> ${JSON.stringify(s.state)}`)}else un(" No results");return i}function ACe(t,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(t.statics,hi)){for(let{to:r}of t.statics[hi])if(r===Eh)return!0}return!1}function cCe(t,e,r){let i=r&&e.length>0?[""]:[],n=vU(t,e,r),s=[],o=new Set,a=(l,c,u=!0)=>{let g=[c];for(;g.length>0;){let h=g;g=[];for(let p of h){let d=t.nodes[p],m=Object.keys(d.statics);for(let I of Object.keys(d.statics)){let B=m[0];for(let{to:b,reducer:R}of d.statics[B])R==="pushPath"&&(u||l.push(B),g.push(b))}}u=!1}let f=JSON.stringify(l);o.has(f)||(s.push(l),o.add(f))};for(let{node:l,state:c}of n){if(c.remainder!==null){a([c.remainder],l);continue}let u=t.nodes[l],g=ACe(u,c);for(let[f,h]of Object.entries(u.statics))(g&&f!==hi||!f.startsWith("-")&&h.some(({reducer:p})=>p==="pushPath"))&&a([...i,f],l);if(!!g)for(let[f,{to:h}]of u.dynamics){if(h===Gi)continue;let p=lCe(f,c);if(p!==null)for(let d of p)a([...i,d],l)}}return[...s].sort()}function gCe(t,e){let r=vU(t,[...e,hi]);return uCe(e,r.map(({state:i})=>i))}function aCe(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function uCe(t,e){let r=e.filter(g=>g.selectedIndex!==null);if(r.length===0)throw new Error;let i=r.filter(g=>g.requiredOptions.every(f=>f.some(h=>g.options.find(p=>p.name===h))));if(i.length===0)throw new Ih(t,r.map(g=>({usage:g.candidateUsage,reason:null})));let n=0;for(let g of i)g.path.length>n&&(n=g.path.length);let s=i.filter(g=>g.path.length===n),o=g=>g.positionals.filter(({extra:f})=>!f).length+g.options.length,a=s.map(g=>({state:g,positionalCount:o(g)})),l=0;for(let{positionalCount:g}of a)g>l&&(l=g);let c=a.filter(({positionalCount:g})=>g===l).map(({state:g})=>g),u=fCe(c);if(u.length>1)throw new cv(t,u.map(g=>g.candidateUsage));return u[0]}function fCe(t){let e=[],r=[];for(let i of t)i.selectedIndex===Au?r.push(i):e.push(i);return r.length>0&&e.push(_(P({},BU),{path:SU(...r.map(i=>i.path)),options:r.reduce((i,n)=>i.concat(n.options),[])})),e}function SU(t,e,...r){return e===void 0?Array.from(t):SU(t.filter((i,n)=>i===e[n]),...r)}function qi(){return{dynamics:[],shortcuts:[],statics:{}}}function bU(t){return t===Eh||t===Gi}function Cv(t,e=0){return{to:bU(t.to)?t.to:t.to>2?t.to+e-2:t.to+e,reducer:t.reducer}}function iCe(t,e=0){let r=qi();for(let[i,n]of t.dynamics)r.dynamics.push([i,Cv(n,e)]);for(let i of t.shortcuts)r.shortcuts.push(Cv(i,e));for(let[i,n]of Object.entries(t.statics))r.statics[i]=n.map(s=>Cv(s,e));return r}function pi(t,e,r,i,n){t.nodes[e].dynamics.push([r,{to:i,reducer:n}])}function cu(t,e,r,i){t.nodes[e].shortcuts.push({to:r,reducer:i})}function ta(t,e,r,i,n){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:i,reducer:n})}function jE(t,e,r,i){if(Array.isArray(e)){let[n,...s]=e;return t[n](r,i,...s)}else return t[e](r,i)}function lCe(t,e){let r=Array.isArray(t)?YE[t[0]]:YE[t];if(typeof r.suggest=="undefined")return null;let i=Array.isArray(t)?t.slice(1):[];return r.suggest(e,...i)}var YE={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(t,e)=>t.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(t,e,r,i)=>!t.ignoreOptions&&e===r,isBatchOption:(t,e,r)=>!t.ignoreOptions&&fU.test(e)&&[...e.slice(1)].every(i=>r.includes(`-${i}`)),isBoundOption:(t,e,r,i)=>{let n=e.match(av);return!t.ignoreOptions&&!!n&&UE.test(n[1])&&r.includes(n[1])&&i.filter(s=>s.names.includes(n[1])).every(s=>s.allowBinding)},isNegatedOption:(t,e,r)=>!t.ignoreOptions&&e===`--no-${r.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&ov.test(e),isUnsupportedOption:(t,e,r)=>!t.ignoreOptions&&e.startsWith("-")&&UE.test(e)&&!r.includes(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith("-")&&!UE.test(e)};YE.isOption.suggest=(t,e,r=!0)=>r?null:[e];var dv={setCandidateState:(t,e,r)=>P(P({},t),r),setSelectedIndex:(t,e,r)=>_(P({},t),{selectedIndex:r}),pushBatch:(t,e)=>_(P({},t),{options:t.options.concat([...e.slice(1)].map(r=>({name:`-${r}`,value:!0})))}),pushBound:(t,e)=>{let[,r,i]=e.match(av);return _(P({},t),{options:t.options.concat({name:r,value:i})})},pushPath:(t,e)=>_(P({},t),{path:t.path.concat(e)}),pushPositional:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:!1})}),pushExtra:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:Ln})}),pushTrue:(t,e,r=e)=>_(P({},t),{options:t.options.concat({name:e,value:!0})}),pushFalse:(t,e,r=e)=>_(P({},t),{options:t.options.concat({name:r,value:!1})}),pushUndefined:(t,e)=>_(P({},t),{options:t.options.concat({name:e,value:void 0})}),pushStringValue:(t,e)=>{var r;let i=_(P({},t),{options:[...t.options]}),n=t.options[t.options.length-1];return n.value=((r=n.value)!==null&&r!==void 0?r:[]).concat([e]),i},setStringValue:(t,e)=>{let r=_(P({},t),{options:[...t.options]}),i=t.options[t.options.length-1];return i.value=e,r},inhibateOptions:t=>_(P({},t),{ignoreOptions:!0}),useHelp:(t,e,r)=>{let[,,i]=e.match(ov);return typeof i!="undefined"?_(P({},t),{options:[{name:"-c",value:String(r)},{name:"-i",value:i}]}):_(P({},t),{options:[{name:"-c",value:String(r)}]})},setError:(t,e,r)=>e===hi?_(P({},t),{errorMessage:`${r}.`}):_(P({},t),{errorMessage:`${r} ("${e}").`}),setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return _(P({},t),{errorMessage:`Not enough arguments to option ${r.name}.`})}},Ln=Symbol(),xU=class{constructor(e,r){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:i=this.arity.extra,proxy:n=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:i,proxy:n})}addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra===Ln)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==Ln?this.arity.extra.push(e):this.arity.extra!==Ln&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===Ln)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let i=0;i1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(i))throw new Error(`The arity must be an integer, got ${i}`);if(i<0)throw new Error(`The arity must be positive, got ${i}`);this.allOptionNames.push(...e),this.options.push({names:e,description:r,arity:i,hidden:n,required:s,allowBinding:o})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let i=[this.cliOpts.binaryName],n=[];if(this.paths.length>0&&i.push(...this.paths[0]),e){for(let{names:o,arity:a,hidden:l,description:c,required:u}of this.options){if(l)continue;let g=[];for(let h=0;h`:`[${f}]`)}i.push(...this.arity.leading.map(o=>`<${o}>`)),this.arity.extra===Ln?i.push("..."):i.push(...this.arity.extra.map(o=>`[${o}]`)),i.push(...this.arity.trailing.map(o=>`<${o}>`))}return{usage:i.join(" "),options:n}}compile(){if(typeof this.context=="undefined")throw new Error("Assertion failed: No context attached");let e=QU(),r=yl,i=this.usage().usage,n=this.options.filter(a=>a.required).map(a=>a.names);r=xs(e,qi()),ta(e,yl,sv,r,["setCandidateState",{candidateUsage:i,requiredOptions:n}]);let s=this.arity.proxy?"always":"isNotOptionLike",o=this.paths.length>0?this.paths:[[]];for(let a of o){let l=r;if(a.length>0){let f=xs(e,qi());cu(e,l,f),this.registerOptions(e,f),l=f}for(let f=0;f0||!this.arity.proxy){let f=xs(e,qi());pi(e,l,"isHelp",f,["useHelp",this.cliIndex]),ta(e,f,hi,Eh,["setSelectedIndex",Au]),this.registerOptions(e,l)}this.arity.leading.length>0&&ta(e,l,hi,Gi,["setError","Not enough positional arguments"]);let c=l;for(let f=0;f0||f+1!==this.arity.leading.length)&&ta(e,h,hi,Gi,["setError","Not enough positional arguments"]),pi(e,c,"isNotOptionLike",h,"pushPositional"),c=h}let u=c;if(this.arity.extra===Ln||this.arity.extra.length>0){let f=xs(e,qi());if(cu(e,c,f),this.arity.extra===Ln){let h=xs(e,qi());this.arity.proxy||this.registerOptions(e,h),pi(e,c,s,h,"pushExtraNoLimits"),pi(e,h,s,h,"pushExtraNoLimits"),cu(e,h,f)}else for(let h=0;h0&&ta(e,u,hi,Gi,["setError","Not enough positional arguments"]);let g=u;for(let f=0;fo.length>s.length?o:s,"");if(i.arity===0)for(let s of i.names)pi(e,r,["isOption",s,i.hidden||s!==n],r,"pushTrue"),s.startsWith("--")&&!s.startsWith("--no-")&&pi(e,r,["isNegatedOption",s],r,["pushFalse",s]);else{let s=xs(e,qi());for(let o of i.names)pi(e,r,["isOption",o,i.hidden||o!==n],s,"pushUndefined");for(let o=0;o=0&&egCe(i,n),suggest:(n,s)=>cCe(i,n,s)}}};var kU=80,mv=Array(kU).fill("\u2501");for(let t=0;t<=24;++t)mv[mv.length-t]=`[38;5;${232+t}m\u2501`;var Ev={header:t=>`\u2501\u2501\u2501 ${t}${t.length`${t}`,error:t=>`${t}`,code:t=>`${t}`},PU={header:t=>t,bold:t=>t,error:t=>t,code:t=>t};function hCe(t){let e=t.split(` -`),r=e.filter(n=>n.match(/\S/)),i=r.length>0?r.reduce((n,s)=>Math.min(n,s.length-s.trimStart().length),Number.MAX_VALUE):0;return e.map(n=>n.slice(i).trimRight()).join(` -`)}function Vn(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,` -`),t=hCe(t),t=t.replace(/^\n+|\n+$/g,""),t=t.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 - -`),t=t.replace(/\n(\n)?\n*/g,"$1"),r&&(t=t.split(/\n/).map(i=>{let n=i.match(/^\s*[*-][\t ]+(.*)/);if(!n)return i.match(/(.{1,80})(?: |$)/g).join(` -`);let s=i.length-i.trimStart().length;return n[1].match(new RegExp(`(.{1,${78-s}})(?: |$)`,"g")).map((o,a)=>" ".repeat(s)+(a===0?"- ":" ")+o).join(` -`)}).join(` - -`)),t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(i,n,s)=>e.code(n+s+n)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(i,n,s)=>e.bold(n+s+n)),t?`${t} -`:""}var bh=class extends ye{constructor(e){super();this.contexts=e,this.commands=[]}static from(e,r){let i=new bh(r);i.path=e.path;for(let n of e.options)switch(n.name){case"-c":i.commands.push(Number(n.value));break;case"-i":i.index=Number(n.value);break}return i}async execute(){let e=this.commands;if(typeof this.index!="undefined"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: -`),this.context.stdout.write(` -`);let r=0;for(let i of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[i].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` -`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. -`)}}};var DU=Symbol("clipanion/errorCommand");function pCe(){return process.env.FORCE_COLOR==="0"?!1:!!(process.env.FORCE_COLOR==="1"||typeof process.stdout!="undefined"&&process.stdout.isTTY)}var oo=class{constructor({binaryLabel:e,binaryName:r="...",binaryVersion:i,enableColors:n=pCe()}={}){this.registrations=new Map,this.builder=new Qh({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=i,this.enableColors=n}static from(e,r={}){let i=new oo(r);for(let n of e)i.register(n);return i}register(e){var r;let i=new Map,n=new e;for(let l in n){let c=n[l];typeof c=="object"&&c!==null&&c[ye.isOption]&&i.set(l,c)}let s=this.builder.command(),o=s.cliIndex,a=(r=e.paths)!==null&&r!==void 0?r:n.paths;if(typeof a!="undefined")for(let l of a)s.addPath(l);this.registrations.set(e,{specs:i,builder:s,index:o});for(let[l,{definition:c}]of i.entries())c(s,l);s.setContext({commandClass:e})}process(e){let{contexts:r,process:i}=this.builder.compile(),n=i(e);switch(n.selectedIndex){case Au:return bh.from(n,r);default:{let{commandClass:s}=r[n.selectedIndex],o=this.registrations.get(s);if(typeof o=="undefined")throw new Error("Assertion failed: Expected the command class to have been registered.");let a=new s;a.path=n.path;try{for(let[l,{transformer:c}]of o.specs.entries())a[l]=c(o.builder,l,n);return a}catch(l){throw l[DU]=a,l}}break}}async run(e,r){let i;if(!Array.isArray(e))i=e;else try{i=this.process(e)}catch(s){return r.stdout.write(this.error(s)),1}if(i.help)return r.stdout.write(this.usage(i,{detailed:!0})),0;i.context=r,i.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(s,o)=>this.error(s,o),process:s=>this.process(s),run:(s,o)=>this.run(s,P(P({},r),o)),usage:(s,o)=>this.usage(s,o)};let n;try{n=await i.validateAndExecute().catch(s=>i.catch(s).then(()=>0))}catch(s){return r.stdout.write(this.error(s,{command:i})),1}return n}async runExit(e,r){process.exitCode=await this.run(e,r)}suggest(e,r){let{suggest:i}=this.builder.compile();return i(e,r)}definitions({colored:e=!1}={}){let r=[];for(let[i,{index:n}]of this.registrations){if(typeof i.usage=="undefined")continue;let{usage:s}=this.getUsageByIndex(n,{detailed:!1}),{usage:o,options:a}=this.getUsageByIndex(n,{detailed:!0,inlineOptions:!1}),l=typeof i.usage.category!="undefined"?Vn(i.usage.category,{format:this.format(e),paragraphs:!1}):void 0,c=typeof i.usage.description!="undefined"?Vn(i.usage.description,{format:this.format(e),paragraphs:!1}):void 0,u=typeof i.usage.details!="undefined"?Vn(i.usage.details,{format:this.format(e),paragraphs:!0}):void 0,g=typeof i.usage.examples!="undefined"?i.usage.examples.map(([f,h])=>[Vn(f,{format:this.format(e),paragraphs:!1}),h.replace(/\$0/g,this.binaryName)]):void 0;r.push({path:s,usage:o,category:l,description:c,details:u,examples:g,options:a})}return r}usage(e=null,{colored:r,detailed:i=!1,prefix:n="$ "}={}){var s;if(e===null){for(let l of this.registrations.keys()){let c=l.paths,u=typeof l.usage!="undefined";if(!c||c.length===0||c.length===1&&c[0].length===0||((s=c==null?void 0:c.some(h=>h.length===0))!==null&&s!==void 0?s:!1))if(e){e=null;break}else e=l;else if(u){e=null;continue}}e&&(i=!0)}let o=e!==null&&e instanceof ye?e.constructor:e,a="";if(o)if(i){let{description:l="",details:c="",examples:u=[]}=o.usage||{};l!==""&&(a+=Vn(l,{format:this.format(r),paragraphs:!1}).replace(/^./,h=>h.toUpperCase()),a+=` -`),(c!==""||u.length>0)&&(a+=`${this.format(r).header("Usage")} -`,a+=` -`);let{usage:g,options:f}=this.getUsageByRegistration(o,{inlineOptions:!1});if(a+=`${this.format(r).bold(n)}${g} -`,f.length>0){a+=` -`,a+=`${Ev.header("Options")} -`;let h=f.reduce((p,d)=>Math.max(p,d.definition.length),0);a+=` -`;for(let{definition:p,description:d}of f)a+=` ${this.format(r).bold(p.padEnd(h))} ${Vn(d,{format:this.format(r),paragraphs:!1})}`}if(c!==""&&(a+=` -`,a+=`${this.format(r).header("Details")} -`,a+=` -`,a+=Vn(c,{format:this.format(r),paragraphs:!0})),u.length>0){a+=` -`,a+=`${this.format(r).header("Examples")} -`;for(let[h,p]of u)a+=` -`,a+=Vn(h,{format:this.format(r),paragraphs:!1}),a+=`${p.replace(/^/m,` ${this.format(r).bold(n)}`).replace(/\$0/g,this.binaryName)} -`}}else{let{usage:l}=this.getUsageByRegistration(o);a+=`${this.format(r).bold(n)}${l} -`}else{let l=new Map;for(let[f,{index:h}]of this.registrations.entries()){if(typeof f.usage=="undefined")continue;let p=typeof f.usage.category!="undefined"?Vn(f.usage.category,{format:this.format(r),paragraphs:!1}):null,d=l.get(p);typeof d=="undefined"&&l.set(p,d=[]);let{usage:m}=this.getUsageByIndex(h);d.push({commandClass:f,usage:m})}let c=Array.from(l.keys()).sort((f,h)=>f===null?-1:h===null?1:f.localeCompare(h,"en",{usage:"sort",caseFirst:"upper"})),u=typeof this.binaryLabel!="undefined",g=typeof this.binaryVersion!="undefined";u||g?(u&&g?a+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)} - -`:u?a+=`${this.format(r).header(`${this.binaryLabel}`)} -`:a+=`${this.format(r).header(`${this.binaryVersion}`)} -`,a+=` ${this.format(r).bold(n)}${this.binaryName} -`):a+=`${this.format(r).bold(n)}${this.binaryName} -`;for(let f of c){let h=l.get(f).slice().sort((d,m)=>d.usage.localeCompare(m.usage,"en",{usage:"sort",caseFirst:"upper"})),p=f!==null?f.trim():"General commands";a+=` -`,a+=`${this.format(r).header(`${p}`)} -`;for(let{commandClass:d,usage:m}of h){let I=d.usage.description||"undocumented";a+=` -`,a+=` ${this.format(r).bold(m)} -`,a+=` ${Vn(I,{format:this.format(r),paragraphs:!1})}`}}a+=` -`,a+=Vn("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return a}error(e,r){var i,{colored:n,command:s=(i=e[DU])!==null&&i!==void 0?i:null}=r===void 0?{}:r;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let o="",a=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");a==="Error"&&(a="Internal Error"),o+=`${this.format(n).error(a)}: ${e.message} -`;let l=e.clipanion;return typeof l!="undefined"?l.type==="usage"&&(o+=` -`,o+=this.usage(s)):e.stack&&(o+=`${e.stack.replace(/^.*\n/,"")} -`),o}getUsageByRegistration(e,r){let i=this.registrations.get(e);if(typeof i=="undefined")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(i.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}format(e=this.enableColors){return e?Ev:PU}};oo.defaultContext={stdin:process.stdin,stdout:process.stdout,stderr:process.stderr};var Iv={};it(Iv,{DefinitionsCommand:()=>qE,HelpCommand:()=>JE,VersionCommand:()=>WE});var qE=class extends ye{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} -`)}};qE.paths=[["--clipanion=definitions"]];var JE=class extends ye{async execute(){this.context.stdout.write(this.cli.usage())}};JE.paths=[["-h"],["--help"]];var WE=class extends ye{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} -`)}};WE.paths=[["-v"],["--version"]];var Y={};it(Y,{Array:()=>RU,Boolean:()=>FU,Counter:()=>NU,Proxy:()=>LU,Rest:()=>TU,String:()=>MU,applyValidator:()=>Bh,cleanValidationError:()=>HE,formatError:()=>wh,isOptionSymbol:()=>yh,makeCommandOption:()=>ji,rerouteArguments:()=>so});function RU(t,e,r){let[i,n]=so(e,r!=null?r:{}),{arity:s=1}=n,o=t.split(","),a=new Set(o);return ji({definition(l){l.addOption({names:o,arity:s,hidden:n==null?void 0:n.hidden,description:n==null?void 0:n.description,required:n.required})},transformer(l,c,u){let g=typeof i!="undefined"?[...i]:void 0;for(let{name:f,value:h}of u.options)!a.has(f)||(g=g!=null?g:[],g.push(h));return g}})}function FU(t,e,r){let[i,n]=so(e,r!=null?r:{}),s=t.split(","),o=new Set(s);return ji({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u=f);return u}})}function NU(t,e,r){let[i,n]=so(e,r!=null?r:{}),s=t.split(","),o=new Set(s);return ji({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u!=null||(u=0),f?u+=1:u=0);return u}})}function LU(t={}){return ji({definition(e,r){var i;e.addProxy({name:(i=t.name)!==null&&i!==void 0?i:r,required:t.required})},transformer(e,r,i){return i.positionals.map(({value:n})=>n)}})}function TU(t={}){return ji({definition(e,r){var i;e.addRest({name:(i=t.name)!==null&&i!==void 0?i:r,required:t.required})},transformer(e,r,i){let n=o=>{let a=i.positionals[o];return a.extra===Ln||a.extra===!1&&oo)}})}function dCe(t,e,r){let[i,n]=so(e,r!=null?r:{}),{arity:s=1}=n,o=t.split(","),a=new Set(o);return ji({definition(l){l.addOption({names:o,arity:n.tolerateBoolean?0:s,hidden:n.hidden,description:n.description,required:n.required})},transformer(l,c,u){let g,f=i;for(let{name:h,value:p}of u.options)!a.has(h)||(g=h,f=p);return typeof f=="string"?Bh(g!=null?g:c,f,n.validator):f}})}function CCe(t={}){let{required:e=!0}=t;return ji({definition(r,i){var n;r.addPositional({name:(n=t.name)!==null&&n!==void 0?n:i,required:t.required})},transformer(r,i,n){var s;for(let o=0;oJSON.stringify(i)).join(", ")})`);return e}function kl(t,e){let r=[];for(let i of t){let n=e(i);n!==LH&&r.push(n)}return r}var LH=Symbol();kl.skip=LH;function MH(t,e){for(let r of t){let i=e(r);if(i!==TH)return i}}var TH=Symbol();MH.skip=TH;function Tv(t){return typeof t=="object"&&t!==null}function aI(t){if(t instanceof Map&&(t=Object.fromEntries(t)),Tv(t))for(let e of Object.keys(t)){let r=t[e];Tv(r)&&(t[e]=aI(r))}return t}function na(t,e,r){let i=t.get(e);return typeof i=="undefined"&&t.set(e,i=r()),i}function hu(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=[]),r}function Pl(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=new Set),r}function pu(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=new Map),r}async function kEe(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function du(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function Mv(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function Cu(t){return await new Promise((e,r)=>{let i=[];t.on("error",n=>{r(n)}),t.on("data",n=>{i.push(n)}),t.on("end",()=>{e(Buffer.concat(i))})})}var OH=class extends Fv.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(e,r,i){if(r!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(e),i(null,null)}_flush(e){e(null,Buffer.concat(this.chunks))}},KH=class extends Fv.Transform{constructor(e=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=e}_transform(e,r,i){if(r!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,i(null,e)}_flush(e){this.active&&this.ifEmpty.length>0?e(null,this.ifEmpty):e(null)}},Uh=eval("require");function UH(t){return Uh(M.fromPortablePath(t))}function HH(path){let physicalPath=M.fromPortablePath(path),currentCacheEntry=Uh.cache[physicalPath];delete Uh.cache[physicalPath];let result;try{result=UH(physicalPath);let freshCacheEntry=Uh.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{Uh.cache[physicalPath]=currentCacheEntry}return result}var GH=new Map;function PEe(t){let e=GH.get(t),r=T.statSync(t);if((e==null?void 0:e.mtime)===r.mtimeMs)return e.instance;let i=HH(t);return GH.set(t,{mtime:r.mtimeMs,instance:i}),i}var Dl;(function(i){i[i.NoCache=0]="NoCache",i[i.FsTime=1]="FsTime",i[i.Node=2]="Node"})(Dl||(Dl={}));function mu(t,{cachingStrategy:e=2}={}){switch(e){case 0:return HH(t);case 1:return PEe(t);case 2:return UH(t);default:throw new Error("Unsupported caching strategy")}}function gn(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let i=[];for(let s of e)i.push(r.map(o=>s(o)));let n=r.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>r[s])}function DEe(t){return t.length===0?null:t.map(e=>`(${FH.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function Ov(t,{env:e}){let r=/\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g;return t.replace(r,(...i)=>{let{variableName:n,colon:s,fallback:o}=i[i.length-1],a=Object.prototype.hasOwnProperty.call(e,n),l=e[n];if(l||a&&!s)return l;if(o!=null)return o;throw new me(`Environment variable not found (${n})`)})}function Hh(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${t}" as a boolean`)}}function jH(t){return typeof t=="undefined"?t:Hh(t)}function Kv(t){try{return jH(t)}catch{return null}}function REe(t){return!!(M.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}var S={};it(S,{areDescriptorsEqual:()=>i3,areIdentsEqual:()=>cp,areLocatorsEqual:()=>up,areVirtualPackagesEquivalent:()=>XQe,bindDescriptor:()=>VQe,bindLocator:()=>_Qe,convertDescriptorToLocator:()=>By,convertLocatorToDescriptor:()=>WQe,convertPackageToLocator:()=>zQe,convertToIdent:()=>JQe,convertToManifestRange:()=>ebe,copyPackage:()=>ap,devirtualizeDescriptor:()=>Ap,devirtualizeLocator:()=>lp,getIdentVendorPath:()=>Lx,isPackageCompatible:()=>Sy,isVirtualDescriptor:()=>hA,isVirtualLocator:()=>Io,makeDescriptor:()=>Yt,makeIdent:()=>Eo,makeLocator:()=>Vi,makeRange:()=>by,parseDescriptor:()=>pA,parseFileStyleRange:()=>ZQe,parseIdent:()=>En,parseLocator:()=>Hl,parseRange:()=>Tu,prettyDependent:()=>Nx,prettyDescriptor:()=>Xt,prettyIdent:()=>Vr,prettyLocator:()=>lt,prettyLocatorNoColors:()=>Rx,prettyRange:()=>yy,prettyReference:()=>fp,prettyResolution:()=>Fx,prettyWorkspace:()=>hp,renamePackage:()=>op,slugifyIdent:()=>Dx,slugifyLocator:()=>Mu,sortDescriptors:()=>Ou,stringifyDescriptor:()=>In,stringifyIdent:()=>St,stringifyLocator:()=>is,tryParseDescriptor:()=>gp,tryParseIdent:()=>n3,tryParseLocator:()=>Qy,virtualizeDescriptor:()=>kx,virtualizePackage:()=>Px});var Lu=ie(require("querystring")),e3=ie(Or()),t3=ie(wY());var mn={};it(mn,{checksumFile:()=>Ey,checksumPattern:()=>Iy,makeHash:()=>zi});var my=ie(require("crypto")),Sx=ie(vx());function zi(...t){let e=(0,my.createHash)("sha512"),r="";for(let i of t)typeof i=="string"?r+=i:i&&(r&&(e.update(r),r=""),e.update(i));return r&&e.update(r),e.digest("hex")}async function Ey(t,{baseFs:e,algorithm:r}={baseFs:T,algorithm:"sha512"}){let i=await e.openPromise(t,"r");try{let n=65536,s=Buffer.allocUnsafeSlow(n),o=(0,my.createHash)(r),a=0;for(;(a=await e.readPromise(i,s,0,n))!==0;)o.update(a===n?s:s.slice(0,a));return o.digest("hex")}finally{await e.closePromise(i)}}async function Iy(t,{cwd:e}){let i=(await(0,Sx.default)(t,{cwd:M.fromPortablePath(e),expandDirectories:!1,onlyDirectories:!0,unique:!0})).map(a=>`${a}/**/*`),n=await(0,Sx.default)([t,...i],{cwd:M.fromPortablePath(e),expandDirectories:!1,onlyFiles:!1,unique:!0});n.sort();let s=await Promise.all(n.map(async a=>{let l=[Buffer.from(a)],c=M.toPortablePath(a),u=await T.lstatPromise(c);return u.isSymbolicLink()?l.push(Buffer.from(await T.readlinkPromise(c))):u.isFile()&&l.push(await T.readFilePromise(c)),l.join("\0")})),o=(0,my.createHash)("sha512");for(let a of s)o.update(a);return o.digest("hex")}var wy="virtual:",YQe=5,r3=/(os|cpu)=([a-z0-9_-]+)/,qQe=(0,t3.makeParser)(r3);function Eo(t,e){if(t==null?void 0:t.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:zi(t,e),scope:t,name:e}}function Yt(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:zi(t.identHash,e),range:e}}function Vi(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:zi(t.identHash,e),reference:e}}function JQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function By(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function WQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function zQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function op(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function ap(t){return op(t,t)}function kx(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return Yt(t,`virtual:${e}#${t.range}`)}function Px(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return op(t,Vi(t,`virtual:${e}#${t.reference}`))}function hA(t){return t.range.startsWith(wy)}function Io(t){return t.reference.startsWith(wy)}function Ap(t){if(!hA(t))throw new Error("Not a virtual descriptor");return Yt(t,t.range.replace(/^[^#]*#/,""))}function lp(t){if(!Io(t))throw new Error("Not a virtual descriptor");return Vi(t,t.reference.replace(/^[^#]*#/,""))}function VQe(t,e){return t.range.includes("::")?t:Yt(t,`${t.range}::${Lu.default.stringify(e)}`)}function _Qe(t,e){return t.reference.includes("::")?t:Vi(t,`${t.reference}::${Lu.default.stringify(e)}`)}function cp(t,e){return t.identHash===e.identHash}function i3(t,e){return t.descriptorHash===e.descriptorHash}function up(t,e){return t.locatorHash===e.locatorHash}function XQe(t,e){if(!Io(t))throw new Error("Invalid package type");if(!Io(e))throw new Error("Invalid package type");if(!cp(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let i=e.dependencies.get(r.identHash);if(!i||!i3(r,i))return!1}return!0}function En(t){let e=n3(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function n3(t){let e=t.match(/^(?:@([^/]+?)\/)?([^/]+)$/);if(!e)return null;let[,r,i]=e,n=typeof r!="undefined"?r:null;return Eo(n,i)}function pA(t,e=!1){let r=gp(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function gp(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,i,n,s]=r;if(s==="unknown")throw new Error(`Invalid range (${t})`);let o=typeof i!="undefined"?i:null,a=typeof s!="undefined"?s:"unknown";return Yt(Eo(o,n),a)}function Hl(t,e=!1){let r=Qy(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function Qy(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,i,n,s]=r;if(s==="unknown")throw new Error(`Invalid reference (${t})`);let o=typeof i!="undefined"?i:null,a=typeof s!="undefined"?s:"unknown";return Vi(Eo(o,n),a)}function Tu(t,e){let r=t.match(/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/);if(r===null)throw new Error(`Invalid range (${t})`);let i=typeof r[1]!="undefined"?r[1]:null;if(typeof(e==null?void 0:e.requireProtocol)=="string"&&i!==e.requireProtocol)throw new Error(`Invalid protocol (${i})`);if((e==null?void 0:e.requireProtocol)&&i===null)throw new Error(`Missing protocol (${i})`);let n=typeof r[3]!="undefined"?decodeURIComponent(r[2]):null;if((e==null?void 0:e.requireSource)&&n===null)throw new Error(`Missing source (${t})`);let s=typeof r[3]!="undefined"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),o=(e==null?void 0:e.parseSelector)?Lu.default.parse(s):s,a=typeof r[4]!="undefined"?Lu.default.parse(r[4]):null;return{protocol:i,source:n,selector:o,params:a}}function ZQe(t,{protocol:e}){let{selector:r,params:i}=Tu(t,{requireProtocol:e,requireBindings:!0});if(typeof i.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:Hl(i.locator,!0),path:r}}function s3(t){return t=t.replace(/%/g,"%25"),t=t.replace(/:/g,"%3A"),t=t.replace(/#/g,"%23"),t}function $Qe(t){return t===null?!1:Object.entries(t).length>0}function by({protocol:t,source:e,selector:r,params:i}){let n="";return t!==null&&(n+=`${t}`),e!==null&&(n+=`${s3(e)}#`),n+=s3(r),$Qe(i)&&(n+=`::${Lu.default.stringify(i)}`),n}function ebe(t){let{params:e,protocol:r,source:i,selector:n}=Tu(t);for(let s in e)s.startsWith("__")&&delete e[s];return by({protocol:r,source:i,params:e,selector:n})}function St(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function In(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function is(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function Dx(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function Mu(t){let{protocol:e,selector:r}=Tu(t.reference),i=e!==null?e.replace(/:$/,""):"exotic",n=e3.default.valid(r),s=n!==null?`${i}-${n}`:`${i}`,o=10,a=t.scope?`${Dx(t)}-${s}-${t.locatorHash.slice(0,o)}`:`${Dx(t)}-${s}-${t.locatorHash.slice(0,o)}`;return kr(a)}function Vr(t,e){return e.scope?`${Ve(t,`@${e.scope}/`,Le.SCOPE)}${Ve(t,e.name,Le.NAME)}`:`${Ve(t,e.name,Le.NAME)}`}function vy(t){if(t.startsWith(wy)){let e=vy(t.substr(t.indexOf("#")+1)),r=t.substr(wy.length,YQe);return`${e} [${r}]`}else return t.replace(/\?.*/,"?[...]")}function yy(t,e){return`${Ve(t,vy(e),Le.RANGE)}`}function Xt(t,e){return`${Vr(t,e)}${Ve(t,"@",Le.RANGE)}${yy(t,e.range)}`}function fp(t,e){return`${Ve(t,vy(e),Le.REFERENCE)}`}function lt(t,e){return`${Vr(t,e)}${Ve(t,"@",Le.REFERENCE)}${fp(t,e.reference)}`}function Rx(t){return`${St(t)}@${vy(t.reference)}`}function Ou(t){return gn(t,[e=>St(e),e=>e.range])}function hp(t,e){return Vr(t,e.locator)}function Fx(t,e,r){let i=hA(e)?Ap(e):e;return r===null?`${Xt(t,i)} \u2192 ${xx(t).Cross}`:i.identHash===r.identHash?`${Xt(t,i)} \u2192 ${fp(t,r.reference)}`:`${Xt(t,i)} \u2192 ${lt(t,r)}`}function Nx(t,e,r){return r===null?`${lt(t,e)}`:`${lt(t,e)} (via ${yy(t,r.range)})`}function Lx(t){return`node_modules/${St(t)}`}function Sy(t,e){return t.conditions?qQe(t.conditions,r=>{let[,i,n]=r.match(r3),s=e[i];return s?s.includes(n):!0}):!0}var gt;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(gt||(gt={}));var oi;(function(i){i.Dependency="Dependency",i.PeerDependency="PeerDependency",i.PeerDependencyMeta="PeerDependencyMeta"})(oi||(oi={}));var ki;(function(i){i.Inactive="inactive",i.Redundant="redundant",i.Active="active"})(ki||(ki={}));var Le={NO_HINT:"NO_HINT",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",DURATION:"DURATION",SIZE:"SIZE",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING"},Gl;(function(e){e[e.BOLD=2]="BOLD"})(Gl||(Gl={}));var Tx=dp.default.GITHUB_ACTIONS?{level:2}:pp.default.supportsColor?{level:pp.default.supportsColor.level}:{level:0},xy=Tx.level!==0,Mx=xy&&!dp.default.GITHUB_ACTIONS&&!dp.default.CIRCLE&&!dp.default.GITLAB,Ox=new pp.default.Instance(Tx),tbe=new Map([[Le.NO_HINT,null],[Le.NULL,["#a853b5",129]],[Le.SCOPE,["#d75f00",166]],[Le.NAME,["#d7875f",173]],[Le.RANGE,["#00afaf",37]],[Le.REFERENCE,["#87afff",111]],[Le.NUMBER,["#ffd700",220]],[Le.PATH,["#d75fd7",170]],[Le.URL,["#d75fd7",170]],[Le.ADDED,["#5faf00",70]],[Le.REMOVED,["#d70000",160]],[Le.CODE,["#87afff",111]],[Le.SIZE,["#ffd700",220]]]),Ls=t=>t,ky={[Le.NUMBER]:Ls({pretty:(t,e)=>`${e}`,json:t=>t}),[Le.IDENT]:Ls({pretty:(t,e)=>Vr(t,e),json:t=>St(t)}),[Le.LOCATOR]:Ls({pretty:(t,e)=>lt(t,e),json:t=>is(t)}),[Le.DESCRIPTOR]:Ls({pretty:(t,e)=>Xt(t,e),json:t=>In(t)}),[Le.RESOLUTION]:Ls({pretty:(t,{descriptor:e,locator:r})=>Fx(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:In(t),locator:e!==null?is(e):null})}),[Le.DEPENDENT]:Ls({pretty:(t,{locator:e,descriptor:r})=>Nx(t,e,r),json:({locator:t,descriptor:e})=>({locator:is(t),descriptor:In(e)})}),[Le.PACKAGE_EXTENSION]:Ls({pretty:(t,e)=>{switch(e.type){case oi.Dependency:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"dependencies",Le.CODE)} \u27A4 ${Vr(t,e.descriptor)}`;case oi.PeerDependency:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"peerDependencies",Le.CODE)} \u27A4 ${Vr(t,e.descriptor)}`;case oi.PeerDependencyMeta:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"peerDependenciesMeta",Le.CODE)} \u27A4 ${Vr(t,En(e.selector))} \u27A4 ${On(t,e.key,Le.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case oi.Dependency:return`${St(t.parentDescriptor)} > ${St(t.descriptor)}`;case oi.PeerDependency:return`${St(t.parentDescriptor)} >> ${St(t.descriptor)}`;case oi.PeerDependencyMeta:return`${St(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[Le.SETTING]:Ls({pretty:(t,e)=>(t.get(e),Ku(t,On(t,e,Le.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[Le.DURATION]:Ls({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),i=Math.ceil((e-r*60*1e3)/1e3);return i===0?`${r}m`:`${r}m ${i}s`}else{let r=Math.floor(e/1e3),i=e-r*1e3;return i===0?`${r}s`:`${r}s ${i}ms`}},json:t=>t}),[Le.SIZE]:Ls({pretty:(t,e)=>{let r=["KB","MB","GB","TB"],i=r.length;for(;i>1&&e<1024**i;)i-=1;let n=1024**i,s=Math.floor(e*100/n)/100;return On(t,`${s} ${r[i-1]}`,Le.NUMBER)},json:t=>t}),[Le.PATH]:Ls({pretty:(t,e)=>On(t,M.fromPortablePath(e),Le.PATH),json:t=>M.fromPortablePath(t)})};function jl(t,e){return[e,t]}function Py(t,e,r){return t.get("enableColors")&&r&2&&(e=pp.default.bold(e)),e}function On(t,e,r){if(!t.get("enableColors"))return e;let i=tbe.get(r);if(i===null)return e;let n=typeof i=="undefined"?r:Tx.level>=3?i[0]:i[1],s=typeof n=="number"?Ox.ansi256(n):n.startsWith("#")?Ox.hex(n):Ox[n];if(typeof s!="function")throw new Error(`Invalid format type ${n}`);return s(e)}var rbe=!!process.env.KONSOLE_VERSION;function Ku(t,e,r){return t.get("enableHyperlinks")?rbe?`]8;;${r}\\${e}]8;;\\`:`]8;;${r}\x07${e}]8;;\x07`:e}function Ve(t,e,r){if(e===null)return On(t,"null",Le.NULL);if(Object.prototype.hasOwnProperty.call(ky,r))return ky[r].pretty(t,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return On(t,e,r)}function Kx(t,e,r,{separator:i=", "}={}){return[...e].map(n=>Ve(t,n,r)).join(i)}function Uu(t,e){if(t===null)return null;if(Object.prototype.hasOwnProperty.call(ky,e))return Nv(e),ky[e].json(t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function xx(t){return{Check:On(t,"\u2713","green"),Cross:On(t,"\u2718","red"),Question:On(t,"?","cyan")}}function Yl(t,{label:e,value:[r,i]}){return`${Ve(t,e,Le.CODE)}: ${Ve(t,r,i)}`}var Ts;(function(n){n.Error="error",n.Warning="warning",n.Info="info",n.Discard="discard"})(Ts||(Ts={}));function Cp(t,{configuration:e}){let r=e.get("logFilters"),i=new Map,n=new Map,s=[];for(let g of r){let f=g.get("level");if(typeof f=="undefined")continue;let h=g.get("code");typeof h!="undefined"&&i.set(h,f);let p=g.get("text");typeof p!="undefined"&&n.set(p,f);let d=g.get("pattern");typeof d!="undefined"&&s.push([o3.default.matcher(d,{contains:!0}),f])}s.reverse();let o=(g,f,h)=>{if(g===null||g===z.UNNAMED)return h;let p=n.size>0||s.length>0?(0,a3.default)(f):f;if(n.size>0){let d=n.get(p);if(typeof d!="undefined")return d!=null?d:h}if(s.length>0){for(let[d,m]of s)if(d(p))return m!=null?m:h}if(i.size>0){let d=i.get(KE(g));if(typeof d!="undefined")return d!=null?d:h}return h},a=t.reportInfo,l=t.reportWarning,c=t.reportError,u=function(g,f,h,p){switch(o(f,h,p)){case Ts.Info:a.call(g,f,h);break;case Ts.Warning:l.call(g,f!=null?f:z.UNNAMED,h);break;case Ts.Error:c.call(g,f!=null?f:z.UNNAMED,h);break}};t.reportInfo=function(...g){return u(this,...g,Ts.Info)},t.reportWarning=function(...g){return u(this,...g,Ts.Warning)},t.reportError=function(...g){return u(this,...g,Ts.Error)}}var Zt={};it(Zt,{Method:()=>Jl,RequestError:()=>z8.RequestError,del:()=>pxe,get:()=>fxe,getNetworkSettings:()=>Z8,post:()=>iP,put:()=>hxe,request:()=>xp});var q8=ie(zy()),J8=ie(require("https")),W8=ie(require("http")),tP=ie(Nn()),rP=ie(G8()),Vy=ie(require("url"));var j8=ie(require("stream")),Y8=ie(require("string_decoder"));var nt=class extends Error{constructor(e,r,i){super(r);this.reportExtra=i;this.reportCode=e}};function Axe(t){return typeof t.reportCode!="undefined"}var Xi=class{constructor(){this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}static progressViaCounter(e){let r=0,i,n=new Promise(l=>{i=l}),s=l=>{let c=i;n=new Promise(u=>{i=u}),r=l,c()},o=(l=0)=>{s(r+1)},a=async function*(){for(;r{let o=i.write(s),a;do if(a=o.indexOf(` -`),a!==-1){let l=n+o.substr(0,a);o=o.substr(a+1),n="",e!==null?this.reportInfo(null,`${e} ${l}`):this.reportInfo(null,l)}while(a!==-1);n+=o}),r.on("end",()=>{let s=i.end();s!==""&&(e!==null?this.reportInfo(null,`${e} ${s}`):this.reportInfo(null,s))}),r}};var z8=ie(zy()),V8=new Map,_8=new Map,lxe=new W8.Agent({keepAlive:!0}),cxe=new J8.Agent({keepAlive:!0});function X8(t){let e=new Vy.URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),{proxy:r}}async function uxe(t){return na(_8,t,()=>T.readFilePromise(t).then(e=>(_8.set(t,e),e)))}function gxe({statusCode:t,statusMessage:e},r){let i=Ve(r,t,Le.NUMBER),n=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return Ku(r,`${i}${e?` (${e})`:""}`,n)}async function _y(t,{configuration:e,customErrorMessage:r}){var i,n;try{return await t}catch(s){if(s.name!=="HTTPError")throw s;let o=(n=r==null?void 0:r(s))!=null?n:(i=s.response.body)==null?void 0:i.error;o==null&&(s.message.startsWith("Response code")?o="The remote server failed to provide the requested resource":o=s.message),s instanceof q8.TimeoutError&&s.event==="socket"&&(o+=`(can be increased via ${Ve(e,"httpTimeout",Le.SETTING)})`);let a=new nt(z.NETWORK_ERROR,o,l=>{s.response&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Response Code",value:jl(Le.NO_HINT,gxe(s.response,e))})}`),s.request&&(l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Method",value:jl(Le.NO_HINT,s.request.options.method)})}`),l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request URL",value:jl(Le.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Redirects",value:jl(Le.NO_HINT,Kx(e,s.request.redirects,Le.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Retry Count",value:jl(Le.NO_HINT,`${Ve(e,s.request.retryCount,Le.NUMBER)} (can be increased via ${Ve(e,"httpRetry",Le.SETTING)})`)})}`)});throw a.originalError=s,a}}function Z8(t,e){let r=[...e.configuration.get("networkSettings")].sort(([o],[a])=>a.length-o.length),i={enableNetwork:void 0,caFilePath:void 0,httpProxy:void 0,httpsProxy:void 0},n=Object.keys(i),s=typeof t=="string"?new Vy.URL(t):t;for(let[o,a]of r)if(tP.default.isMatch(s.hostname,o))for(let l of n){let c=a.get(l);c!==null&&typeof i[l]=="undefined"&&(i[l]=c)}for(let o of n)typeof i[o]=="undefined"&&(i[o]=e.configuration.get(o));return i}var Jl;(function(n){n.GET="GET",n.PUT="PUT",n.POST="POST",n.DELETE="DELETE"})(Jl||(Jl={}));async function xp(t,e,{configuration:r,headers:i,jsonRequest:n,jsonResponse:s,method:o=Jl.GET}){let a=typeof t=="string"?new Vy.URL(t):t,l=Z8(a,{configuration:r});if(l.enableNetwork===!1)throw new Error(`Request to '${a.href}' has been blocked because of your configuration settings`);if(a.protocol==="http:"&&!tP.default.isMatch(a.hostname,r.get("unsafeHttpWhitelist")))throw new Error(`Unsafe http requests must be explicitly whitelisted in your configuration (${a.hostname})`);let u={agent:{http:l.httpProxy?rP.default.httpOverHttp(X8(l.httpProxy)):lxe,https:l.httpsProxy?rP.default.httpsOverHttp(X8(l.httpsProxy)):cxe},headers:i,method:o};u.responseType=s?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!n&&typeof e=="string"?u.body=e:u.json=e);let g=r.get("httpTimeout"),f=r.get("httpRetry"),h=r.get("enableStrictSsl"),p=l.caFilePath,{default:d}=await Promise.resolve().then(()=>ie(zy())),m=p?await uxe(p):void 0,I=d.extend(P({timeout:{socket:g},retry:f,https:{rejectUnauthorized:h,certificateAuthority:m}},u));return r.getLimit("networkConcurrency")(()=>I(a))}async function fxe(t,n){var s=n,{configuration:e,jsonResponse:r}=s,i=qr(s,["configuration","jsonResponse"]);let o=na(V8,t,()=>_y(xp(t,null,P({configuration:e},i)),{configuration:e}).then(a=>(V8.set(t,a.body),a.body)));return Buffer.isBuffer(o)===!1&&(o=await o),r?JSON.parse(o.toString()):o}async function hxe(t,e,n){var s=n,{customErrorMessage:r}=s,i=qr(s,["customErrorMessage"]);return(await _y(xp(t,e,_(P({},i),{method:Jl.PUT})),i)).body}async function iP(t,e,n){var s=n,{customErrorMessage:r}=s,i=qr(s,["customErrorMessage"]);return(await _y(xp(t,e,_(P({},i),{method:Jl.POST})),i)).body}async function pxe(t,i){var n=i,{customErrorMessage:e}=n,r=qr(n,["customErrorMessage"]);return(await _y(xp(t,null,_(P({},r),{method:Jl.DELETE})),r)).body}var Kt={};it(Kt,{PackageManager:()=>tn,detectPackageManager:()=>a9,executePackageAccessibleBinary:()=>g9,executePackageScript:()=>Uw,executePackageShellcode:()=>rD,executeWorkspaceAccessibleBinary:()=>qFe,executeWorkspaceLifecycleScript:()=>u9,executeWorkspaceScript:()=>c9,getPackageAccessibleBinaries:()=>Hw,getWorkspaceAccessibleBinaries:()=>l9,hasPackageScript:()=>GFe,hasWorkspaceScript:()=>tD,makeScriptEnv:()=>Vp,maybeExecuteWorkspaceLifecycleScript:()=>YFe,prepareExternalProject:()=>HFe});var Fp={};it(Fp,{getLibzipPromise:()=>$i,getLibzipSync:()=>v4});var yA=["number","number"],nP;(function(D){D[D.ZIP_ER_OK=0]="ZIP_ER_OK",D[D.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",D[D.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",D[D.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",D[D.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",D[D.ZIP_ER_READ=5]="ZIP_ER_READ",D[D.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",D[D.ZIP_ER_CRC=7]="ZIP_ER_CRC",D[D.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",D[D.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",D[D.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",D[D.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",D[D.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",D[D.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",D[D.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",D[D.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",D[D.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",D[D.ZIP_ER_EOF=17]="ZIP_ER_EOF",D[D.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",D[D.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",D[D.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",D[D.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",D[D.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",D[D.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",D[D.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",D[D.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",D[D.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",D[D.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",D[D.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",D[D.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",D[D.ZIP_ER_TELL=30]="ZIP_ER_TELL",D[D.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA"})(nP||(nP={}));var $8=t=>({get HEAP8(){return t.HEAP8},get HEAPU8(){return t.HEAPU8},errors:nP,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_CREATE:1,ZIP_EXCL:2,ZIP_TRUNCATE:8,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint16S:t._malloc(2),uint32S:t._malloc(4),uint64S:t._malloc(8),malloc:t._malloc,free:t._free,getValue:t.getValue,open:t.cwrap("zip_open","number",["string","number","number"]),openFromSource:t.cwrap("zip_open_from_source","number",["number","number","number"]),close:t.cwrap("zip_close","number",["number"]),discard:t.cwrap("zip_discard",null,["number"]),getError:t.cwrap("zip_get_error","number",["number"]),getName:t.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:t.cwrap("zip_get_num_entries","number",["number","number"]),delete:t.cwrap("zip_delete","number",["number","number"]),stat:t.cwrap("zip_stat","number",["number","string","number","number"]),statIndex:t.cwrap("zip_stat_index","number",["number",...yA,"number","number"]),fopen:t.cwrap("zip_fopen","number",["number","string","number"]),fopenIndex:t.cwrap("zip_fopen_index","number",["number",...yA,"number"]),fread:t.cwrap("zip_fread","number",["number","number","number","number"]),fclose:t.cwrap("zip_fclose","number",["number"]),dir:{add:t.cwrap("zip_dir_add","number",["number","string"])},file:{add:t.cwrap("zip_file_add","number",["number","string","number","number"]),getError:t.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:t.cwrap("zip_file_get_external_attributes","number",["number",...yA,"number","number","number"]),setExternalAttributes:t.cwrap("zip_file_set_external_attributes","number",["number",...yA,"number","number","number"]),setMtime:t.cwrap("zip_file_set_mtime","number",["number",...yA,"number","number"]),setCompression:t.cwrap("zip_set_file_compression","number",["number",...yA,"number","number"])},ext:{countSymlinks:t.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:t.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:t.cwrap("zip_error_strerror","string",["number"])},name:{locate:t.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:t.cwrap("zip_source_buffer_create","number",["number","number","number","number"]),fromBuffer:t.cwrap("zip_source_buffer","number",["number","number",...yA,"number"]),free:t.cwrap("zip_source_free",null,["number"]),keep:t.cwrap("zip_source_keep",null,["number"]),open:t.cwrap("zip_source_open","number",["number"]),close:t.cwrap("zip_source_close","number",["number"]),seek:t.cwrap("zip_source_seek","number",["number",...yA,"number"]),tell:t.cwrap("zip_source_tell","number",["number"]),read:t.cwrap("zip_source_read","number",["number","number","number"]),error:t.cwrap("zip_source_error","number",["number"]),setMtime:t.cwrap("zip_source_set_mtime","number",["number","number"])},struct:{stat:t.cwrap("zipstruct_stat","number",[]),statS:t.cwrap("zipstruct_statS","number",[]),statName:t.cwrap("zipstruct_stat_name","string",["number"]),statIndex:t.cwrap("zipstruct_stat_index","number",["number"]),statSize:t.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:t.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:t.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:t.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:t.cwrap("zipstruct_stat_crc","number",["number"]),error:t.cwrap("zipstruct_error","number",[]),errorS:t.cwrap("zipstruct_errorS","number",[]),errorCodeZip:t.cwrap("zipstruct_error_code_zip","number",["number"])}});var BP=null;function v4(){return BP===null&&(BP=$8(b4())),BP}async function $i(){return v4()}var jp={};it(jp,{ShellError:()=>as,execute:()=>Fw,globUtils:()=>bw});var Hp={};it(Hp,{parseResolution:()=>gw,parseShell:()=>Aw,parseSyml:()=>Ii,stringifyArgument:()=>SP,stringifyArgumentSegment:()=>xP,stringifyArithmeticExpression:()=>uw,stringifyCommand:()=>vP,stringifyCommandChain:()=>rg,stringifyCommandChainThen:()=>bP,stringifyCommandLine:()=>lw,stringifyCommandLineThen:()=>QP,stringifyEnvSegment:()=>cw,stringifyRedirectArgument:()=>Np,stringifyResolution:()=>fw,stringifyShell:()=>tg,stringifyShellLine:()=>tg,stringifySyml:()=>Qa,stringifyValueArgument:()=>ig});var k4=ie(x4());function Aw(t,e={isGlobPattern:()=>!1}){try{return(0,k4.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function tg(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:i},n)=>`${lw(r)}${i===";"?n!==t.length-1||e?";":"":" &"}`).join(" ")}function lw(t){return`${rg(t.chain)}${t.then?` ${QP(t.then)}`:""}`}function QP(t){return`${t.type} ${lw(t.line)}`}function rg(t){return`${vP(t)}${t.then?` ${bP(t.then)}`:""}`}function bP(t){return`${t.type} ${rg(t.chain)}`}function vP(t){switch(t.type){case"command":return`${t.envs.length>0?`${t.envs.map(e=>cw(e)).join(" ")} `:""}${t.args.map(e=>SP(e)).join(" ")}`;case"subshell":return`(${tg(t.subshell)})${t.args.length>0?` ${t.args.map(e=>Np(e)).join(" ")}`:""}`;case"group":return`{ ${tg(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>Np(e)).join(" ")}`:""}`;case"envs":return t.envs.map(e=>cw(e)).join(" ");default:throw new Error(`Unsupported command type: "${t.type}"`)}}function cw(t){return`${t.name}=${t.args[0]?ig(t.args[0]):""}`}function SP(t){switch(t.type){case"redirection":return Np(t);case"argument":return ig(t);default:throw new Error(`Unsupported argument type: "${t.type}"`)}}function Np(t){return`${t.subtype} ${t.args.map(e=>ig(e)).join(" ")}`}function ig(t){return t.segments.map(e=>xP(e)).join("")}function xP(t){let e=(i,n)=>n?`"${i}"`:i,r=i=>i===""?'""':i.match(/[(){}<>$|&; \t"']/)?`$'${i.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0")}'`:i;switch(t.type){case"text":return r(t.text);case"glob":return t.pattern;case"shell":return e(`\${${tg(t.shell)}}`,t.quoted);case"variable":return e(typeof t.defaultValue=="undefined"?`\${${t.name}}`:t.defaultValue.length===0?`\${${t.name}:-}`:`\${${t.name}:-${t.defaultValue.map(i=>ig(i)).join(" ")}}`,t.quoted);case"arithmetic":return`$(( ${uw(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${t.type}"`)}}function uw(t){let e=n=>{switch(n){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${n}"`)}},r=(n,s)=>s?`( ${n} )`:n,i=n=>r(uw(n),!["number","variable"].includes(n.type));switch(t.type){case"number":return String(t.value);case"variable":return t.name;default:return`${i(t.left)} ${e(t.type)} ${i(t.right)}`}}var R4=ie(D4());function gw(t){let e=t.match(/^\*{1,2}\/(.*)/);if(e)throw new Error(`The override for '${t}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,R4.parse)(t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function fw(t){let e="";return t.from&&(e+=t.from.fullName,t.from.description&&(e+=`@${t.from.description}`),e+="/"),e+=t.descriptor.fullName,t.descriptor.description&&(e+=`@${t.descriptor.description}`),e}var Qw=ie(w5()),b5=ie(Q5()),$De=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,v5=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],HP=class{constructor(e){this.data=e}};function S5(t){return t.match($De)?t:JSON.stringify(t)}function x5(t){return typeof t=="undefined"?!0:typeof t=="object"&&t!==null?Object.keys(t).every(e=>x5(t[e])):!1}function GP(t,e,r){if(t===null)return`null -`;if(typeof t=="number"||typeof t=="boolean")return`${t.toString()} -`;if(typeof t=="string")return`${S5(t)} -`;if(Array.isArray(t)){if(t.length===0)return`[] -`;let i=" ".repeat(e);return` -${t.map(s=>`${i}- ${GP(s,e+1,!1)}`).join("")}`}if(typeof t=="object"&&t){let i,n;t instanceof HP?(i=t.data,n=!1):(i=t,n=!0);let s=" ".repeat(e),o=Object.keys(i);n&&o.sort((l,c)=>{let u=v5.indexOf(l),g=v5.indexOf(c);return u===-1&&g===-1?lc?1:0:u!==-1&&g===-1?-1:u===-1&&g!==-1?1:u-g});let a=o.filter(l=>!x5(i[l])).map((l,c)=>{let u=i[l],g=S5(l),f=GP(u,e+1,!0),h=c>0||r?s:"";return f.startsWith(` -`)?`${h}${g}:${f}`:`${h}${g}: ${f}`}).join(e===0?` -`:"")||` -`;return r?` -${a}`:`${a}`}throw new Error(`Unsupported value type (${t})`)}function Qa(t){try{let e=GP(t,0,!1);return e!==` -`?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}Qa.PreserveOrdering=HP;function eRe(t){return t.endsWith(` -`)||(t+=` -`),(0,b5.parse)(t)}var tRe=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i;function rRe(t){if(tRe.test(t))return eRe(t);let e=(0,Qw.safeLoad)(t,{schema:Qw.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function Ii(t){return rRe(t)}var U5=ie(jb()),H5=ie(require("os")),Kn=ie(require("stream")),G5=ie(require("util"));var as=class extends Error{constructor(e){super(e);this.name="ShellError"}};var bw={};it(bw,{fastGlobOptions:()=>D5,isBraceExpansion:()=>R5,isGlobPattern:()=>iRe,match:()=>nRe,micromatchOptions:()=>Sw});var k5=ie(gy()),P5=ie(require("fs")),vw=ie(Nn()),Sw={strictBrackets:!0},D5={onlyDirectories:!1,onlyFiles:!1};function iRe(t){if(!vw.default.scan(t,Sw).isGlob)return!1;try{vw.default.parse(t,Sw)}catch{return!1}return!0}function nRe(t,{cwd:e,baseFs:r}){return(0,k5.default)(t,_(P({},D5),{cwd:M.fromPortablePath(e),fs:SE(P5.default,new ah(r))}))}function R5(t){return vw.default.scan(t,Sw).isBrace}var F5=ie(bb()),Bo=ie(require("stream")),N5=ie(require("string_decoder")),wn;(function(i){i[i.STDIN=0]="STDIN",i[i.STDOUT=1]="STDOUT",i[i.STDERR=2]="STDERR"})(wn||(wn={}));var sc=new Set;function jP(){}function YP(){for(let t of sc)t.kill()}function L5(t,e,r,i){return n=>{let s=n[0]instanceof Bo.Transform?"pipe":n[0],o=n[1]instanceof Bo.Transform?"pipe":n[1],a=n[2]instanceof Bo.Transform?"pipe":n[2],l=(0,F5.default)(t,e,_(P({},i),{stdio:[s,o,a]}));return sc.add(l),sc.size===1&&(process.on("SIGINT",jP),process.on("SIGTERM",YP)),n[0]instanceof Bo.Transform&&n[0].pipe(l.stdin),n[1]instanceof Bo.Transform&&l.stdout.pipe(n[1],{end:!1}),n[2]instanceof Bo.Transform&&l.stderr.pipe(n[2],{end:!1}),{stdin:l.stdin,promise:new Promise(c=>{l.on("error",u=>{switch(sc.delete(l),sc.size===0&&(process.off("SIGINT",jP),process.off("SIGTERM",YP)),u.code){case"ENOENT":n[2].write(`command not found: ${t} -`),c(127);break;case"EACCES":n[2].write(`permission denied: ${t} -`),c(128);break;default:n[2].write(`uncaught error: ${u.message} -`),c(1);break}}),l.on("exit",u=>{sc.delete(l),sc.size===0&&(process.off("SIGINT",jP),process.off("SIGTERM",YP)),c(u!==null?u:129)})})}}}function T5(t){return e=>{let r=e[0]==="pipe"?new Bo.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}var Os=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},M5=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},Gp=class{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:i,stderr:n}){let s=new Gp(null,e);return s.stdin=r,s.stdout=i,s.stderr=n,s}pipeTo(e,r=1){let i=new Gp(this,e),n=new M5;return i.pipe=n,i.stdout=this.stdout,i.stderr=this.stderr,(r&1)==1?this.stdout=n:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)==2?this.stderr=n:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),i}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,e[1]=r.get();let i;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");i=this.stderr,e[2]=i.get();let n=this.implementation(e);return this.pipe&&this.pipe.attach(n.stdin),await n.promise.then(s=>(r.close(),i.close(),s))}async run(){let e=[];for(let i=this;i;i=i.ancestor)e.push(i.exec());return(await Promise.all(e))[0]}};function xw(t,e){return Gp.start(t,e)}function O5(t,e=null){let r=new Bo.PassThrough,i=new N5.StringDecoder,n="";return r.on("data",s=>{let o=i.write(s),a;do if(a=o.indexOf(` -`),a!==-1){let l=n+o.substr(0,a);o=o.substr(a+1),n="",t(e!==null?`${e} ${l}`:l)}while(a!==-1);n+=o}),r.on("end",()=>{let s=i.end();s!==""&&t(e!==null?`${e} ${s}`:s)}),r}function K5(t,{prefix:e}){return{stdout:O5(r=>t.stdout.write(`${r} -`),t.stdout.isTTY?e:null),stderr:O5(r=>t.stderr.write(`${r} -`),t.stderr.isTTY?e:null)}}var sRe=(0,G5.promisify)(setTimeout);var Fi;(function(r){r[r.Readable=1]="Readable",r[r.Writable=2]="Writable"})(Fi||(Fi={}));function j5(t,e,r){let i=new Kn.PassThrough({autoDestroy:!0});switch(t){case wn.STDIN:(e&1)==1&&r.stdin.pipe(i,{end:!1}),(e&2)==2&&r.stdin instanceof Kn.Writable&&i.pipe(r.stdin,{end:!1});break;case wn.STDOUT:(e&1)==1&&r.stdout.pipe(i,{end:!1}),(e&2)==2&&i.pipe(r.stdout,{end:!1});break;case wn.STDERR:(e&1)==1&&r.stderr.pipe(i,{end:!1}),(e&2)==2&&i.pipe(r.stderr,{end:!1});break;default:throw new as(`Bad file descriptor: "${t}"`)}return i}function kw(t,e={}){let r=P(P({},t),e);return r.environment=P(P({},t.environment),e.environment),r.variables=P(P({},t.variables),e.variables),r}var oRe=new Map([["cd",async([t=(0,H5.homedir)(),...e],r,i)=>{let n=v.resolve(i.cwd,M.toPortablePath(t));if(!(await r.baseFs.statPromise(n).catch(o=>{throw o.code==="ENOENT"?new as(`cd: no such file or directory: ${t}`):o})).isDirectory())throw new as(`cd: not a directory: ${t}`);return i.cwd=n,0}],["pwd",async(t,e,r)=>(r.stdout.write(`${M.fromPortablePath(r.cwd)} -`),0)],[":",async(t,e,r)=>0],["true",async(t,e,r)=>0],["false",async(t,e,r)=>1],["exit",async([t,...e],r,i)=>i.exitCode=parseInt(t!=null?t:i.variables["?"],10)],["echo",async(t,e,r)=>(r.stdout.write(`${t.join(" ")} -`),0)],["sleep",async([t],e,r)=>{if(typeof t=="undefined")throw new as("sleep: missing operand");let i=Number(t);if(Number.isNaN(i))throw new as(`sleep: invalid time interval '${t}'`);return await sRe(1e3*i,0)}],["__ysh_run_procedure",async(t,e,r)=>{let i=r.procedures[t[0]];return await xw(i,{stdin:new Os(r.stdin),stdout:new Os(r.stdout),stderr:new Os(r.stderr)}).run()}],["__ysh_set_redirects",async(t,e,r)=>{let i=r.stdin,n=r.stdout,s=r.stderr,o=[],a=[],l=[],c=0;for(;t[c]!=="--";){let g=t[c++],{type:f,fd:h}=JSON.parse(g),p=B=>{switch(h){case null:case 0:o.push(B);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},d=B=>{switch(h){case null:case 1:a.push(B);break;case 2:l.push(B);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},m=Number(t[c++]),I=c+m;for(let B=c;Be.baseFs.createReadStream(v.resolve(r.cwd,M.toPortablePath(t[B]))));break;case"<<<":p(()=>{let b=new Kn.PassThrough;return process.nextTick(()=>{b.write(`${t[B]} -`),b.end()}),b});break;case"<&":p(()=>j5(Number(t[B]),1,r));break;case">":case">>":{let b=v.resolve(r.cwd,M.toPortablePath(t[B]));d(b==="/dev/null"?new Kn.Writable({autoDestroy:!0,emitClose:!0,write(R,H,L){setImmediate(L)}}):e.baseFs.createWriteStream(b,f===">>"?{flags:"a"}:void 0))}break;case">&":d(j5(Number(t[B]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${f}"`)}}if(o.length>0){let g=new Kn.PassThrough;i=g;let f=h=>{if(h===o.length)g.end();else{let p=o[h]();p.pipe(g,{end:!1}),p.on("end",()=>{f(h+1)})}};f(0)}if(a.length>0){let g=new Kn.PassThrough;n=g;for(let f of a)g.pipe(f)}if(l.length>0){let g=new Kn.PassThrough;s=g;for(let f of l)g.pipe(f)}let u=await xw(Yp(t.slice(c+1),e,r),{stdin:new Os(i),stdout:new Os(n),stderr:new Os(s)}).run();return await Promise.all(a.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),await Promise.all(l.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),u}]]);async function aRe(t,e,r){let i=[],n=new Kn.PassThrough;return n.on("data",s=>i.push(s)),await Pw(t,e,kw(r,{stdout:n})),Buffer.concat(i).toString().replace(/[\r\n]+$/,"")}async function Y5(t,e,r){let i=t.map(async s=>{let o=await oc(s.args,e,r);return{name:s.name,value:o.join(" ")}});return(await Promise.all(i)).reduce((s,o)=>(s[o.name]=o.value,s),{})}function Dw(t){return t.match(/[^ \r\n\t]+/g)||[]}async function q5(t,e,r,i,n=i){switch(t.name){case"$":i(String(process.pid));break;case"#":i(String(e.args.length));break;case"@":if(t.quoted)for(let s of e.args)n(s);else for(let s of e.args){let o=Dw(s);for(let a=0;a=0&&st+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)};async function qp(t,e,r){if(t.type==="number"){if(Number.isInteger(t.value))return t.value;throw new Error(`Invalid number: "${t.value}", only integers are allowed`)}else if(t.type==="variable"){let i=[];await q5(_(P({},t),{quoted:!0}),e,r,s=>i.push(s));let n=Number(i.join(" "));return Number.isNaN(n)?qp({type:"variable",name:i.join(" ")},e,r):qp({type:"number",value:n},e,r)}else return ARe[t.type](await qp(t.left,e,r),await qp(t.right,e,r))}async function oc(t,e,r){let i=new Map,n=[],s=[],o=u=>{s.push(u)},a=()=>{s.length>0&&n.push(s.join("")),s=[]},l=u=>{o(u),a()},c=(u,g,f)=>{let h=JSON.stringify({type:u,fd:g}),p=i.get(h);typeof p=="undefined"&&i.set(h,p=[]),p.push(f)};for(let u of t){let g=!1;switch(u.type){case"redirection":{let f=await oc(u.args,e,r);for(let h of f)c(u.subtype,u.fd,h)}break;case"argument":for(let f of u.segments)switch(f.type){case"text":o(f.text);break;case"glob":o(f.pattern),g=!0;break;case"shell":{let h=await aRe(f.shell,e,r);if(f.quoted)o(h);else{let p=Dw(h);for(let d=0;d0){let u=[];for(let[g,f]of i.entries())u.splice(u.length,0,g,String(f.length),...f);n.splice(0,0,"__ysh_set_redirects",...u,"--")}return n}function Yp(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let i=M.fromPortablePath(r.cwd),n=r.environment;typeof n.PWD!="undefined"&&(n=_(P({},n),{PWD:i}));let[s,...o]=t;if(s==="command")return L5(o[0],o.slice(1),e,{cwd:i,env:n});let a=e.builtins.get(s);if(typeof a=="undefined")throw new Error(`Assertion failed: A builtin should exist for "${s}"`);return T5(async({stdin:l,stdout:c,stderr:u})=>{let{stdin:g,stdout:f,stderr:h}=r;r.stdin=l,r.stdout=c,r.stderr=u;try{return await a(o,e,r)}finally{r.stdin=g,r.stdout=f,r.stderr=h}})}function lRe(t,e,r){return i=>{let n=new Kn.PassThrough,s=Pw(t,e,kw(r,{stdin:n}));return{stdin:n,promise:s}}}function cRe(t,e,r){return i=>{let n=new Kn.PassThrough,s=Pw(t,e,r);return{stdin:n,promise:s}}}function J5(t,e,r,i){if(e.length===0)return t;{let n;do n=String(Math.random());while(Object.prototype.hasOwnProperty.call(i.procedures,n));return i.procedures=P({},i.procedures),i.procedures[n]=t,Yp([...e,"__ysh_run_procedure",n],r,i)}}async function W5(t,e,r){let i=t,n=null,s=null;for(;i;){let o=i.then?P({},r):r,a;switch(i.type){case"command":{let l=await oc(i.args,e,r),c=await Y5(i.envs,e,r);a=i.envs.length?Yp(l,e,kw(o,{environment:c})):Yp(l,e,o)}break;case"subshell":{let l=await oc(i.args,e,r),c=lRe(i.subshell,e,o);a=J5(c,l,e,o)}break;case"group":{let l=await oc(i.args,e,r),c=cRe(i.group,e,o);a=J5(c,l,e,o)}break;case"envs":{let l=await Y5(i.envs,e,r);o.environment=P(P({},o.environment),l),a=Yp(["true"],e,o)}break}if(typeof a=="undefined")throw new Error("Assertion failed: An action should have been generated");if(n===null)s=xw(a,{stdin:new Os(o.stdin),stdout:new Os(o.stdout),stderr:new Os(o.stderr)});else{if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(n){case"|":s=s.pipeTo(a,wn.STDOUT);break;case"|&":s=s.pipeTo(a,wn.STDOUT|wn.STDERR);break}}i.then?(n=i.then.type,i=i.then.chain):i=null}if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await s.run()}async function uRe(t,e,r,{background:i=!1}={}){function n(s){let o=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],a=o[s%o.length];return U5.default.hex(a)}if(i){let s=r.nextBackgroundJobIndex++,o=n(s),a=`[${s}]`,l=o(a),{stdout:c,stderr:u}=K5(r,{prefix:l});return r.backgroundJobs.push(W5(t,e,kw(r,{stdout:c,stderr:u})).catch(g=>u.write(`${g.message} -`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${l}, '${o(rg(t))}' has ended -`)})),0}return await W5(t,e,r)}async function gRe(t,e,r,{background:i=!1}={}){let n,s=a=>{n=a,r.variables["?"]=String(a)},o=async a=>{try{return await uRe(a.chain,e,r,{background:i&&typeof a.then=="undefined"})}catch(l){if(!(l instanceof as))throw l;return r.stderr.write(`${l.message} -`),1}};for(s(await o(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case"&&":n===0&&s(await o(t.then.line));break;case"||":n!==0&&s(await o(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${t.then.type}"`)}t=t.then.line}return n}async function Pw(t,e,r){let i=r.backgroundJobs;r.backgroundJobs=[];let n=0;for(let{command:s,type:o}of t){if(n=await gRe(s,e,r,{background:o==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(n)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=i,n}function z5(t){switch(t.type){case"variable":return t.name==="@"||t.name==="#"||t.name==="*"||Number.isFinite(parseInt(t.name,10))||"defaultValue"in t&&!!t.defaultValue&&t.defaultValue.some(e=>Rw(e));case"arithmetic":return qP(t.arithmetic);case"shell":return JP(t.shell);default:return!1}}function Rw(t){switch(t.type){case"redirection":return t.args.some(e=>Rw(e));case"argument":return t.segments.some(e=>z5(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${t.type}"`)}}function qP(t){switch(t.type){case"variable":return z5(t);case"number":return!1;default:return qP(t.left)||qP(t.right)}}function JP(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let i;switch(r.type){case"subshell":i=JP(r.subshell);break;case"command":i=r.envs.some(n=>n.args.some(s=>Rw(s)))||r.args.some(n=>Rw(n));break}if(i)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function Fw(t,e=[],{baseFs:r=new Wt,builtins:i={},cwd:n=M.toPortablePath(process.cwd()),env:s=process.env,stdin:o=process.stdin,stdout:a=process.stdout,stderr:l=process.stderr,variables:c={},glob:u=bw}={}){let g={};for(let[p,d]of Object.entries(s))typeof d!="undefined"&&(g[p]=d);let f=new Map(oRe);for(let[p,d]of Object.entries(i))f.set(p,d);o===null&&(o=new Kn.PassThrough,o.end());let h=Aw(t,u);if(!JP(h)&&h.length>0&&e.length>0){let{command:p}=h[h.length-1];for(;p.then;)p=p.then.line;let d=p.chain;for(;d.then;)d=d.then.chain;d.type==="command"&&(d.args=d.args.concat(e.map(m=>({type:"argument",segments:[{type:"text",text:m}]}))))}return await Pw(h,{args:e,baseFs:r,builtins:f,initialStdin:o,initialStdout:a,initialStderr:l,glob:u},{cwd:n,environment:g,exitCode:null,procedures:{},stdin:o,stdout:a,stderr:l,variables:Object.assign({},c,{["?"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var s9=ie(ZP()),o9=ie(Wp()),cc=ie(require("stream"));var J6=ie(Or());var zp=class{supportsDescriptor(e,r){return!!(e.range.startsWith(zp.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(zp.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){return[i.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,i){return null}async resolve(e,r){let i=r.project.getWorkspaceByCwd(e.reference.slice(zp.protocol.length));return _(P({},e),{version:i.manifest.version||"0.0.0",languageName:"unknown",linkType:gt.SOFT,conditions:null,dependencies:new Map([...i.manifest.dependencies,...i.manifest.devDependencies]),peerDependencies:new Map([...i.manifest.peerDependencies]),dependenciesMeta:i.manifest.dependenciesMeta,peerDependenciesMeta:i.manifest.peerDependenciesMeta,bin:i.manifest.bin})}},Yr=zp;Yr.protocol="workspace:";var qt={};it(qt,{SemVer:()=>j6.SemVer,satisfiesWithPrereleases:()=>lc,validRange:()=>Us});var Lw=ie(Or()),j6=ie(Or()),Y6=new Map;function lc(t,e,r=!1){if(!t)return!1;let i=`${e}${r}`,n=Y6.get(i);if(typeof n=="undefined")try{n=new Lw.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{Y6.set(i,n||null)}else if(n===null)return!1;let s;try{s=new Lw.default.SemVer(t,n)}catch(o){return!1}return n.test(s)?!0:(s.prerelease&&(s.prerelease=[]),n.set.some(o=>{for(let a of o)a.semver.prerelease&&(a.semver.prerelease=[]);return o.every(a=>a.test(s))}))}var q6=new Map;function Us(t){if(t.indexOf(":")!==-1)return null;let e=q6.get(t);if(typeof e!="undefined")return e;try{e=new Lw.default.Range(t)}catch{e=null}return q6.set(t,e),e}var vA=class{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static async tryFind(e,{baseFs:r=new Wt}={}){let i=v.join(e,"package.json");return await r.existsPromise(i)?await vA.fromFile(i,{baseFs:r}):null}static async find(e,{baseFs:r}={}){let i=await vA.tryFind(e,{baseFs:r});if(i===null)throw new Error("Manifest not found");return i}static async fromFile(e,{baseFs:r=new Wt}={}){let i=new vA;return await i.loadFile(e,{baseFs:r}),i}static fromText(e){let r=new vA;return r.loadFromText(e),r}static isManifestFieldCompatible(e,r){if(e===null)return!0;let i=!0,n=!1;for(let s of e)if(s[0]==="!"){if(n=!0,r===s.slice(1))return!1}else if(i=!1,s===r)return!0;return n&&i}loadFromText(e){let r;try{r=JSON.parse(z6(e)||"{}")}catch(i){throw i.message+=` (when parsing ${e})`,i}this.load(r),this.indent=W6(e)}async loadFile(e,{baseFs:r=new Wt}){let i=await r.readFilePromise(e,"utf8"),n;try{n=JSON.parse(z6(i)||"{}")}catch(s){throw s.message+=` (when parsing ${e})`,s}this.load(n),this.indent=W6(i)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let i=[];if(this.name=null,typeof e.name=="string")try{this.name=En(e.name)}catch(s){i.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let s=[];this.os=s;for(let o of e.os)typeof o!="string"?i.push(new Error("Parsing failed for the 'os' field")):s.push(o)}else this.os=null;if(Array.isArray(e.cpu)){let s=[];this.cpu=s;for(let o of e.cpu)typeof o!="string"?i.push(new Error("Parsing failed for the 'cpu' field")):s.push(o)}else this.cpu=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=en(e.main):this.main=null,typeof e.module=="string"?this.module=en(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=en(e.browser);else{this.browser=new Map;for(let[s,o]of Object.entries(e.browser))this.browser.set(en(s),typeof o=="string"?en(o):o)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")this.name!==null?this.bin.set(this.name.name,en(e.bin)):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[s,o]of Object.entries(e.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.bin.set(s,en(o))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[s,o]of Object.entries(e.scripts)){if(typeof o!="string"){i.push(new Error(`Invalid script definition for '${s}'`));continue}this.scripts.set(s,o)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[s,o]of Object.entries(e.dependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=En(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.dependencies.set(l.identHash,l)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[s,o]of Object.entries(e.devDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=En(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.devDependencies.set(l.identHash,l)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[s,o]of Object.entries(e.peerDependencies)){let a;try{a=En(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}(typeof o!="string"||!o.startsWith(Yr.protocol)&&!Us(o))&&(i.push(new Error(`Invalid dependency range for '${s}'`)),o="*");let l=Yt(a,o);this.peerDependencies.set(l.identHash,l)}typeof e.workspaces=="object"&&e.workspaces.nohoist&&i.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let n=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let s of n){if(typeof s!="string"){i.push(new Error(`Invalid workspace definition for '${s}'`));continue}this.workspaceDefinitions.push({pattern:s})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[s,o]of Object.entries(e.dependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}`));continue}let a=pA(s),l=this.ensureDependencyMeta(a),c=Tw(o.built,{yamlCompatibilityMode:r});if(c===null){i.push(new Error(`Invalid built meta field for '${s}'`));continue}let u=Tw(o.optional,{yamlCompatibilityMode:r});if(u===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}let g=Tw(o.unplugged,{yamlCompatibilityMode:r});if(g===null){i.push(new Error(`Invalid unplugged meta field for '${s}'`));continue}Object.assign(l,{built:c,optional:u,unplugged:g})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[s,o]of Object.entries(e.peerDependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}'`));continue}let a=pA(s),l=this.ensurePeerDependencyMeta(a),c=Tw(o.optional,{yamlCompatibilityMode:r});if(c===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}Object.assign(l,{optional:c})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[s,o]of Object.entries(e.resolutions)){if(typeof o!="string"){i.push(new Error(`Invalid resolution entry for '${s}'`));continue}try{this.resolutions.push({pattern:gw(s),reference:o})}catch(a){i.push(a);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let s of e.files){if(typeof s!="string"){i.push(new Error(`Invalid files entry for '${s}'`));continue}this.files.add(s)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=en(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=en(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=en(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[s,o]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(en(s),typeof o=="string"?en(o):o)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,en(e.publishConfig.bin)]]):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[s,o]of Object.entries(e.publishConfig.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.publishConfig.bin.set(s,en(o))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let s of e.publishConfig.executableFiles){if(typeof s!="string"){i.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(en(s))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let s of Object.keys(e.installConfig))s==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:i.push(new Error("Invalid hoisting limits definition")):s=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:i.push(new Error("Invalid selfReferences definition, must be a boolean value")):i.push(new Error(`Unrecognized installConfig key: ${s}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[s,o]of Object.entries(e.optionalDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=En(s)}catch(g){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.dependencies.set(l.identHash,l);let c=Yt(a,"unknown"),u=this.ensureDependencyMeta(c);Object.assign(u,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=i}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(V6("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(V6("cpu",this.cpu)),e.length>0?e.join(" & "):null}isCompatibleWithOS(e){return vA.isManifestFieldCompatible(this.os,e)}isCompatibleWithCPU(e){return vA.isManifestFieldCompatible(this.cpu,e)}ensureDependencyMeta(e){if(e.range!=="unknown"&&!J6.default.valid(e.range))throw new Error(`Invalid meta field range for '${In(e)}'`);let r=St(e),i=e.range!=="unknown"?e.range:null,n=this.dependenciesMeta.get(r);n||this.dependenciesMeta.set(r,n=new Map);let s=n.get(i);return s||n.set(i,s={}),s}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${In(e)}'`);let r=St(e),i=this.peerDependenciesMeta.get(r);return i||this.peerDependenciesMeta.set(r,i={}),i}setRawField(e,r,{after:i=[]}={}){let n=new Set(i.filter(s=>Object.prototype.hasOwnProperty.call(this.raw,s)));if(n.size===0||Object.prototype.hasOwnProperty.call(this.raw,e))this.raw[e]=r;else{let s=this.raw,o=this.raw={},a=!1;for(let l of Object.keys(s))o[l]=s[l],a||(n.delete(l),n.size===0&&(o[e]=r,a=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){var s;if(Object.assign(e,this.raw),this.name!==null?e.name=St(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let o=this.browser;typeof o=="string"?e.browser=o:o instanceof Map&&(e.browser=Object.assign({},...Array.from(o.keys()).sort().map(a=>({[a]:o.get(a)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(o=>({[o]:this.bin.get(o)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces=_(P({},this.raw.workspaces),{packages:this.workspaceDefinitions.map(({pattern:o})=>o)}):e.workspaces=this.workspaceDefinitions.map(({pattern:o})=>o):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let i=[],n=[];for(let o of this.dependencies.values()){let a=this.dependenciesMeta.get(St(o)),l=!1;if(r&&a){let c=a.get(null);c&&c.optional&&(l=!0)}l?n.push(o):i.push(o)}i.length>0?e.dependencies=Object.assign({},...Ou(i).map(o=>({[St(o)]:o.range}))):delete e.dependencies,n.length>0?e.optionalDependencies=Object.assign({},...Ou(n).map(o=>({[St(o)]:o.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...Ou(this.devDependencies.values()).map(o=>({[St(o)]:o.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...Ou(this.peerDependencies.values()).map(o=>({[St(o)]:o.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[o,a]of gn(this.dependenciesMeta.entries(),([l,c])=>l))for(let[l,c]of gn(a.entries(),([u,g])=>u!==null?`0${u}`:"1")){let u=l!==null?In(Yt(En(o),l)):o,g=P({},c);r&&l===null&&delete g.optional,Object.keys(g).length!==0&&(e.dependenciesMeta[u]=g)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...gn(this.peerDependenciesMeta.entries(),([o,a])=>o).map(([o,a])=>({[o]:a}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:o,reference:a})=>({[fw(o)]:a}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){(s=e.scripts)!=null||(e.scripts={});for(let o of Object.keys(e.scripts))this.scripts.has(o)||delete e.scripts[o];for(let[o,a]of this.scripts.entries())e.scripts[o]=a}else delete e.scripts;return e}},Ze=vA;Ze.fileName="package.json",Ze.allDependencies=["dependencies","devDependencies","peerDependencies"],Ze.hardDependencies=["dependencies","devDependencies"];function W6(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}function z6(t){return t.charCodeAt(0)===65279?t.slice(1):t}function en(t){return t.replace(/\\/g,"/")}function Tw(t,{yamlCompatibilityMode:e}){return e?Kv(t):typeof t=="undefined"||typeof t=="boolean"?t:null}function _6(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let i=r%2==0?"":"!",n=e.slice(r);return`${i}${t}=${n}`}function V6(t,e){return e.length===1?_6(t,e[0]):`(${e.map(r=>_6(t,r)).join(" | ")})`}var e9=ie($6()),Ow=ie(ml());var t9=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],r9=80,NFe=new Set([z.FETCH_NOT_CACHED,z.UNUSED_CACHE_ENTRY]),LFe=5,SA=Ow.default.GITHUB_ACTIONS?{start:t=>`::group::${t} -`,end:t=>`::endgroup:: -`}:Ow.default.TRAVIS?{start:t=>`travis_fold:start:${t} -`,end:t=>`travis_fold:end:${t} -`}:Ow.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r${t} -`,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}\r`}:null,i9=new Date,TFe=["iTerm.app","Apple_Terminal"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,MFe=t=>t,Kw=MFe({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),OFe=TFe&&Object.keys(Kw).find(t=>{let e=Kw[t];return!(e.date&&(e.date[0]!==i9.getDate()||e.date[1]!==i9.getMonth()+1))})||"default";function n9(t,{configuration:e,json:r}){if(!e.get("enableMessageNames"))return"";let n=KE(t===null?0:t);return!r&&t===null?Ve(e,n,"grey"):n}function eD(t,{configuration:e,json:r}){let i=n9(t,{configuration:e,json:r});if(!i||t===null||t===z.UNNAMED)return i;let n=z[t],s=`https://yarnpkg.com/advanced/error-codes#${i}---${n}`.toLowerCase();return Ku(e,i,s)}var Fe=class extends Xi{constructor({configuration:e,stdout:r,json:i=!1,includeFooter:n=!0,includeLogs:s=!i,includeInfos:o=s,includeWarnings:a=s,forgettableBufferSize:l=LFe,forgettableNames:c=new Set}){super();this.uncommitted=new Set;this.cacheHitCount=0;this.cacheMissCount=0;this.lastCacheMiss=null;this.warningCount=0;this.errorCount=0;this.startTime=Date.now();this.indent=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.forgettableLines=[];Cp(this,{configuration:e}),this.configuration=e,this.forgettableBufferSize=l,this.forgettableNames=new Set([...c,...NFe]),this.includeFooter=n,this.includeInfos=o,this.includeWarnings=a,this.json=i,this.stdout=r;let u=this.configuration.get("progressBarStyle")||OFe;if(!Object.prototype.hasOwnProperty.call(Kw,u))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=Kw[u];let g="\u27A4 YN0000: \u250C ".length,f=Math.max(0,Math.min(process.stdout.columns-g,80));this.progressMaxScaledSize=Math.floor(this.progressStyle.size*f/80)}static async start(e,r){let i=new this(e),n=process.emitWarning;process.emitWarning=(s,o)=>{if(typeof s!="string"){let l=s;s=l.message,o=o!=null?o:l.name}let a=typeof o!="undefined"?`${o}: ${s}`:s;i.reportWarning(z.UNNAMED,a)};try{await r(i)}catch(s){i.reportExceptionOnce(s)}finally{await i.finalize(),process.emitWarning=n}return i}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){this.cacheHitCount+=1}reportCacheMiss(e,r){this.lastCacheMiss=e,this.cacheMissCount+=1,typeof r!="undefined"&&!this.configuration.get("preferAggregateCacheInfo")&&this.reportInfo(z.FETCH_NOT_CACHED,r)}startTimerSync(e,r,i){let n=typeof r=="function"?{}:r,s=typeof r=="function"?r:i,o={committed:!1,action:()=>{this.reportInfo(null,`\u250C ${e}`),this.indent+=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.start(e))}};n.skipIfEmpty?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(this.indent-=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.end(e)),this.configuration.get("enableTimers")&&l-a>200?this.reportInfo(null,`\u2514 Completed in ${Ve(this.configuration,l-a,Le.DURATION)}`):this.reportInfo(null,"\u2514 Completed"))}}async startTimerPromise(e,r,i){let n=typeof r=="function"?{}:r,s=typeof r=="function"?r:i,o={committed:!1,action:()=>{this.reportInfo(null,`\u250C ${e}`),this.indent+=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.start(e))}};n.skipIfEmpty?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return await s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(this.indent-=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.end(e)),this.configuration.get("enableTimers")&&l-a>200?this.reportInfo(null,`\u2514 Completed in ${Ve(this.configuration,l-a,Le.DURATION)}`):this.reportInfo(null,"\u2514 Completed"))}}async startCacheReport(e){let r=this.configuration.get("preferAggregateCacheInfo")?{cacheHitCount:this.cacheHitCount,cacheMissCount:this.cacheMissCount}:null;try{return await e()}catch(i){throw this.reportExceptionOnce(i),i}finally{r!==null&&this.reportCacheChanges(r)}}reportSeparator(){this.indent===0?this.writeLineWithForgettableReset(""):this.reportInfo(null,"")}reportInfo(e,r){if(!this.includeInfos)return;this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"",s=`${Ve(this.configuration,"\u27A4","blueBright")} ${n}${this.formatIndent()}${r}`;if(this.json)this.reportJson({type:"info",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r});else if(this.forgettableNames.has(e))if(this.forgettableLines.push(s),this.forgettableLines.length>this.forgettableBufferSize){for(;this.forgettableLines.length>this.forgettableBufferSize;)this.forgettableLines.shift();this.writeLines(this.forgettableLines,{truncate:!0})}else this.writeLine(s,{truncate:!0});else this.writeLineWithForgettableReset(s)}reportWarning(e,r){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"";this.json?this.reportJson({type:"warning",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r}):this.writeLineWithForgettableReset(`${Ve(this.configuration,"\u27A4","yellowBright")} ${n}${this.formatIndent()}${r}`)}reportError(e,r){this.errorCount+=1,this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"";this.json?this.reportJson({type:"error",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r}):this.writeLineWithForgettableReset(`${Ve(this.configuration,"\u27A4","redBright")} ${n}${this.formatIndent()}${r}`,{truncate:!1})}reportProgress(e){let r=!1,i=Promise.resolve().then(async()=>{let s={progress:0,title:void 0};this.progress.set(e,{definition:s,lastScaledSize:-1}),this.refreshProgress(-1);for await(let{progress:o,title:a}of e)r||s.progress===o&&s.title===a||(s.progress=o,s.title=a,this.refreshProgress());n()}),n=()=>{r||(r=!0,this.progress.delete(e),this.refreshProgress(1))};return _(P({},i),{stop:n})}reportJson(e){this.json&&this.writeLineWithForgettableReset(`${JSON.stringify(e)}`)}async finalize(){if(!this.includeFooter)return;let e="";this.errorCount>0?e="Failed with errors":this.warningCount>0?e="Done with warnings":e="Done";let r=Ve(this.configuration,Date.now()-this.startTime,Le.DURATION),i=this.configuration.get("enableTimers")?`${e} in ${r}`:e;this.errorCount>0?this.reportError(z.UNNAMED,i):this.warningCount>0?this.reportWarning(z.UNNAMED,i):this.reportInfo(z.UNNAMED,i)}writeLine(e,{truncate:r}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(e,{truncate:r})} -`),this.writeProgress()}writeLineWithForgettableReset(e,{truncate:r}={}){this.forgettableLines=[],this.writeLine(e,{truncate:r})}writeLines(e,{truncate:r}={}){this.clearProgress({delta:e.length});for(let i of e)this.stdout.write(`${this.truncate(i,{truncate:r})} -`);this.writeProgress()}reportCacheChanges({cacheHitCount:e,cacheMissCount:r}){let i=this.cacheHitCount-e,n=this.cacheMissCount-r;if(i===0&&n===0)return;let s="";this.cacheHitCount>1?s+=`${this.cacheHitCount} packages were already cached`:this.cacheHitCount===1?s+=" - one package was already cached":s+="No packages were cached",this.cacheHitCount>0?this.cacheMissCount>1?s+=`, ${this.cacheMissCount} had to be fetched`:this.cacheMissCount===1&&(s+=`, one had to be fetched (${lt(this.configuration,this.lastCacheMiss)})`):this.cacheMissCount>1?s+=` - ${this.cacheMissCount} packages had to be fetched`:this.cacheMissCount===1&&(s+=` - one package had to be fetched (${lt(this.configuration,this.lastCacheMiss)})`),this.reportInfo(z.FETCH_NOT_CACHED,s)}commit(){let e=this.uncommitted;this.uncommitted=new Set;for(let r of e)r.committed=!0,r.action()}clearProgress({delta:e=0,clear:r=!1}){!this.configuration.get("enableProgressBars")||this.json||this.progress.size+e>0&&(this.stdout.write(`[${this.progress.size+e}A`),(e>0||r)&&this.stdout.write(""))}writeProgress(){if(!this.configuration.get("enableProgressBars")||this.json||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let e=Date.now();e-this.progressTime>r9&&(this.progressFrame=(this.progressFrame+1)%t9.length,this.progressTime=e);let r=t9[this.progressFrame];for(let i of this.progress.values()){let n=this.progressStyle.chars[0].repeat(i.lastScaledSize),s=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-i.lastScaledSize),o=this.formatName(null),a=o?`${o}: `:"";this.stdout.write(`${Ve(this.configuration,"\u27A4","blueBright")} ${a}${r} ${n}${s} -`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress()},r9)}refreshProgress(e=0){let r=!1;if(this.progress.size===0)r=!0;else for(let i of this.progress.values()){let n=Math.trunc(this.progressMaxScaledSize*i.definition.progress),s=i.lastScaledSize;if(i.lastScaledSize=n,n!==s){r=!0;break}}r&&(this.clearProgress({delta:e}),this.writeProgress())}truncate(e,{truncate:r}={}){return this.configuration.get("enableProgressBars")||(r=!1),typeof r=="undefined"&&(r=this.configuration.get("preferTruncatedLines")),r&&(e=(0,e9.default)(e,0,process.stdout.columns-1)),e}formatName(e){return n9(e,{configuration:this.configuration,json:this.json})}formatNameWithHyperlink(e){return eD(e,{configuration:this.configuration,json:this.json})}formatIndent(){return"\u2502 ".repeat(this.indent)}};var Zr="3.1.1";var tn;(function(n){n.Yarn1="Yarn Classic",n.Yarn2="Yarn",n.Npm="npm",n.Pnpm="pnpm"})(tn||(tn={}));async function ba(t,e,r,i=[]){if(process.platform==="win32"){let n=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${i.map(s=>`"${s.replace('"','""')}"`).join(" ")} %*`;await T.writeFilePromise(v.format({dir:t,name:e,ext:".cmd"}),n)}await T.writeFilePromise(v.join(t,e),`#!/bin/sh -exec "${r}" ${i.map(n=>`'${n.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" -`,{mode:493})}async function a9(t){let e=await Ze.tryFind(t);if(e==null?void 0:e.packageManager){let i=Qy(e.packageManager);if(i==null?void 0:i.name){let n=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[s]=i.reference.split(".");switch(i.name){case"yarn":return{packageManager:Number(s)===1?tn.Yarn1:tn.Yarn2,reason:n};case"npm":return{packageManager:tn.Npm,reason:n};case"pnpm":return{packageManager:tn.Pnpm,reason:n}}}}let r;try{r=await T.readFilePromise(v.join(t,wt.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:tn.Yarn2,reason:'"__metadata" key found in yarn.lock'}:{packageManager:tn.Yarn1,reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:T.existsSync(v.join(t,"package-lock.json"))?{packageManager:tn.Npm,reason:`found npm's "package-lock.json" lockfile`}:T.existsSync(v.join(t,"pnpm-lock.yaml"))?{packageManager:tn.Pnpm,reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function Vp({project:t,locator:e,binFolder:r,lifecycleScript:i}){var l,c;let n={};for(let[u,g]of Object.entries(process.env))typeof g!="undefined"&&(n[u.toLowerCase()!=="path"?u:"PATH"]=g);let s=M.fromPortablePath(r);n.BERRY_BIN_FOLDER=M.fromPortablePath(s);let o=process.env.COREPACK_ROOT?M.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([ba(r,"node",process.execPath),...Zr!==null?[ba(r,"run",process.execPath,[o,"run"]),ba(r,"yarn",process.execPath,[o]),ba(r,"yarnpkg",process.execPath,[o]),ba(r,"node-gyp",process.execPath,[o,"run","--top-level","node-gyp"])]:[]]),t&&(n.INIT_CWD=M.fromPortablePath(t.configuration.startingCwd),n.PROJECT_CWD=M.fromPortablePath(t.cwd)),n.PATH=n.PATH?`${s}${M.delimiter}${n.PATH}`:`${s}`,n.npm_execpath=`${s}${M.sep}yarn`,n.npm_node_execpath=`${s}${M.sep}node`,e){if(!t)throw new Error("Assertion failed: Missing project");let u=t.tryWorkspaceByLocator(e),g=u?(l=u.manifest.version)!=null?l:"":(c=t.storedPackages.get(e.locatorHash).version)!=null?c:"";n.npm_package_name=St(e),n.npm_package_version=g}let a=Zr!==null?`yarn/${Zr}`:`yarn/${mu("@yarnpkg/core").version}-core`;return n.npm_config_user_agent=`${a} npm/? node/${process.versions.node} ${process.platform} ${process.arch}`,i&&(n.npm_lifecycle_event=i),t&&await t.configuration.triggerHook(u=>u.setupScriptEnvironment,t,n,async(u,g,f)=>await ba(r,kr(u),g,f)),n}var KFe=2,UFe=(0,o9.default)(KFe);async function HFe(t,e,{configuration:r,report:i,workspace:n=null,locator:s=null}){await UFe(async()=>{await T.mktempPromise(async o=>{let a=v.join(o,"pack.log"),l=null,{stdout:c,stderr:u}=r.getSubprocessStreams(a,{prefix:M.fromPortablePath(t),report:i}),g=s&&Io(s)?lp(s):s,f=g?is(g):"an external project";c.write(`Packing ${f} from sources -`);let h=await a9(t),p;h!==null?(c.write(`Using ${h.packageManager} for bootstrap. Reason: ${h.reason} - -`),p=h.packageManager):(c.write(`No package manager configuration detected; defaulting to Yarn - -`),p=tn.Yarn2),await T.mktempPromise(async d=>{let m=await Vp({binFolder:d}),B=new Map([[tn.Yarn1,async()=>{let R=n!==null?["workspace",n]:[],H=await to("yarn",["set","version","classic","--only-if-needed"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(H.code!==0)return H.code;await T.appendFilePromise(v.join(t,".npmignore"),`/.yarn -`),c.write(` -`);let L=await to("yarn",["install"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(L.code!==0)return L.code;c.write(` -`);let K=await to("yarn",[...R,"pack","--filename",M.fromPortablePath(e)],{cwd:t,env:m,stdin:l,stdout:c,stderr:u});return K.code!==0?K.code:0}],[tn.Yarn2,async()=>{let R=n!==null?["workspace",n]:[];m.YARN_ENABLE_INLINE_BUILDS="1";let H=v.join(t,wt.lockfile);await T.existsPromise(H)||await T.writeFilePromise(H,"");let L=await to("yarn",[...R,"pack","--install-if-needed","--filename",M.fromPortablePath(e)],{cwd:t,env:m,stdin:l,stdout:c,stderr:u});return L.code!==0?L.code:0}],[tn.Npm,async()=>{if(n!==null){let A=new cc.PassThrough,V=Cu(A);A.pipe(c,{end:!1});let W=await to("npm",["--version"],{cwd:t,env:m,stdin:l,stdout:A,stderr:u,end:Pn.Never});if(A.end(),W.code!==0)return c.end(),u.end(),W.code;let X=(await V).toString().trim();if(!lc(X,">=7.x")){let F=Eo(null,"npm"),D=Yt(F,X),he=Yt(F,">=7.x");throw new Error(`Workspaces aren't supported by ${Xt(r,D)}; please upgrade to ${Xt(r,he)} (npm has been detected as the primary package manager for ${Ve(r,t,Le.PATH)})`)}}let R=n!==null?["--workspace",n]:[];delete m.npm_config_user_agent;let H=await to("npm",["install"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(H.code!==0)return H.code;let L=new cc.PassThrough,K=Cu(L);L.pipe(c);let J=await to("npm",["pack","--silent",...R],{cwd:t,env:m,stdin:l,stdout:L,stderr:u});if(J.code!==0)return J.code;let ne=(await K).toString().trim().replace(/^.*\n/s,""),q=v.resolve(t,M.toPortablePath(ne));return await T.renamePromise(q,e),0}]]).get(p);if(typeof B=="undefined")throw new Error("Assertion failed: Unsupported workflow");let b=await B();if(!(b===0||typeof b=="undefined"))throw T.detachTemp(o),new nt(z.PACKAGE_PREPARATION_FAILED,`Packing the package failed (exit code ${b}, logs can be found here: ${Ve(r,a,Le.PATH)})`)})})})}async function GFe(t,e,{project:r}){let i=r.tryWorkspaceByLocator(t);if(i!==null)return tD(i,e);let n=r.storedPackages.get(t.locatorHash);if(!n)throw new Error(`Package for ${lt(r.configuration,t)} not found in the project`);return await Jn.openPromise(async s=>{let o=r.configuration,a=r.configuration.getLinkers(),l={project:r,report:new Fe({stdout:new cc.PassThrough,configuration:o})},c=a.find(h=>h.supportsPackage(n,l));if(!c)throw new Error(`The package ${lt(r.configuration,n)} isn't supported by any of the available linkers`);let u=await c.findPackageLocation(n,l),g=new Ft(u,{baseFs:s});return(await Ze.find(Se.dot,{baseFs:g})).scripts.has(e)},{libzip:await $i()})}async function Uw(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await T.mktempPromise(async l=>{let{manifest:c,env:u,cwd:g}=await A9(t,{project:n,binFolder:l,cwd:i,lifecycleScript:e}),f=c.scripts.get(e);if(typeof f=="undefined")return 1;let h=async()=>await Fw(f,r,{cwd:g,env:u,stdin:s,stdout:o,stderr:a});return await(await n.configuration.reduceHook(d=>d.wrapScriptExecution,h,n,t,e,{script:f,args:r,cwd:g,env:u,stdin:s,stdout:o,stderr:a}))()})}async function rD(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await T.mktempPromise(async l=>{let{env:c,cwd:u}=await A9(t,{project:n,binFolder:l,cwd:i});return await Fw(e,r,{cwd:u,env:c,stdin:s,stdout:o,stderr:a})})}async function jFe(t,{binFolder:e,cwd:r,lifecycleScript:i}){let n=await Vp({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:i});return await Promise.all(Array.from(await l9(t),([s,[,o]])=>ba(e,kr(s),process.execPath,[o]))),typeof r=="undefined"&&(r=v.dirname(await T.realpathPromise(v.join(t.cwd,"package.json")))),{manifest:t.manifest,binFolder:e,env:n,cwd:r}}async function A9(t,{project:e,binFolder:r,cwd:i,lifecycleScript:n}){let s=e.tryWorkspaceByLocator(t);if(s!==null)return jFe(s,{binFolder:r,cwd:i,lifecycleScript:n});let o=e.storedPackages.get(t.locatorHash);if(!o)throw new Error(`Package for ${lt(e.configuration,t)} not found in the project`);return await Jn.openPromise(async a=>{let l=e.configuration,c=e.configuration.getLinkers(),u={project:e,report:new Fe({stdout:new cc.PassThrough,configuration:l})},g=c.find(m=>m.supportsPackage(o,u));if(!g)throw new Error(`The package ${lt(e.configuration,o)} isn't supported by any of the available linkers`);let f=await Vp({project:e,locator:t,binFolder:r,lifecycleScript:n});await Promise.all(Array.from(await Hw(t,{project:e}),([m,[,I]])=>ba(r,kr(m),process.execPath,[I])));let h=await g.findPackageLocation(o,u),p=new Ft(h,{baseFs:a}),d=await Ze.find(Se.dot,{baseFs:p});return typeof i=="undefined"&&(i=h),{manifest:d,binFolder:r,env:f,cwd:i}},{libzip:await $i()})}async function c9(t,e,r,{cwd:i,stdin:n,stdout:s,stderr:o}){return await Uw(t.anchoredLocator,e,r,{cwd:i,project:t.project,stdin:n,stdout:s,stderr:o})}function tD(t,e){return t.manifest.scripts.has(e)}async function u9(t,e,{cwd:r,report:i}){let{configuration:n}=t.project,s=null;await T.mktempPromise(async o=>{let a=v.join(o,`${e}.log`),l=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${M.fromPortablePath(t.cwd)}") -`,{stdout:c,stderr:u}=n.getSubprocessStreams(a,{report:i,prefix:lt(n,t.anchoredLocator),header:l});i.reportInfo(z.LIFECYCLE_SCRIPT,`Calling the "${e}" lifecycle script`);let g=await c9(t,e,[],{cwd:r,stdin:s,stdout:c,stderr:u});if(c.end(),u.end(),g!==0)throw T.detachTemp(o),new nt(z.LIFECYCLE_SCRIPT,`${(0,s9.default)(e)} script failed (exit code ${Ve(n,g,Le.NUMBER)}, logs can be found here: ${Ve(n,a,Le.PATH)}); run ${Ve(n,`yarn ${e}`,Le.CODE)} to investigate`)})}async function YFe(t,e,r){tD(t,e)&&await u9(t,e,r)}async function Hw(t,{project:e}){let r=e.configuration,i=new Map,n=e.storedPackages.get(t.locatorHash);if(!n)throw new Error(`Package for ${lt(r,t)} not found in the project`);let s=new cc.Writable,o=r.getLinkers(),a={project:e,report:new Fe({configuration:r,stdout:s})},l=new Set([t.locatorHash]);for(let u of n.dependencies.values()){let g=e.storedResolutions.get(u.descriptorHash);if(!g)throw new Error(`Assertion failed: The resolution (${Xt(r,u)}) should have been registered`);l.add(g)}let c=await Promise.all(Array.from(l,async u=>{let g=e.storedPackages.get(u);if(!g)throw new Error(`Assertion failed: The package (${u}) should have been registered`);if(g.bin.size===0)return kl.skip;let f=o.find(p=>p.supportsPackage(g,a));if(!f)return kl.skip;let h=null;try{h=await f.findPackageLocation(g,a)}catch(p){if(p.code==="LOCATOR_NOT_INSTALLED")return kl.skip;throw p}return{dependency:g,packageLocation:h}}));for(let u of c){if(u===kl.skip)continue;let{dependency:g,packageLocation:f}=u;for(let[h,p]of g.bin)i.set(h,[g,M.fromPortablePath(v.resolve(f,p))])}return i}async function l9(t){return await Hw(t.anchoredLocator,{project:t.project})}async function g9(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a,nodeArgs:l=[],packageAccessibleBinaries:c}){c!=null||(c=await Hw(t,{project:n}));let u=c.get(e);if(!u)throw new Error(`Binary not found (${e}) for ${lt(n.configuration,t)}`);return await T.mktempPromise(async g=>{let[,f]=u,h=await Vp({project:n,locator:t,binFolder:g});await Promise.all(Array.from(c,([d,[,m]])=>ba(h.BERRY_BIN_FOLDER,kr(d),process.execPath,[m])));let p;try{p=await to(process.execPath,[...l,f,...r],{cwd:i,env:h,stdin:s,stdout:o,stderr:a})}finally{await T.removePromise(h.BERRY_BIN_FOLDER)}return p.code})}async function qFe(t,e,r,{cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a}){return await g9(t.anchoredLocator,e,r,{project:t.project,cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a})}var Ai={};it(Ai,{convertToZip:()=>lTe,extractArchiveTo:()=>uTe,makeArchiveFromDirectory:()=>ATe});var d_=ie(require("stream")),C_=ie(Z7());var u_=ie(require("os")),g_=ie(c_()),f_=ie(require("worker_threads")),IR=class{constructor(e){this.source=e;this.pool=[];this.queue=new g_.default({concurrency:Math.max(1,(0,u_.cpus)().length)});let r=setTimeout(()=>{if(!(this.queue.size!==0||this.queue.pending!==0)){for(let i of this.pool)i.terminate();this.pool=[]}},1e3).unref();this.queue.on("idle",()=>{r.refresh()})}run(e){return this.queue.add(()=>{var i;let r=(i=this.pool.pop())!=null?i:new f_.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return r.ref(),new Promise((n,s)=>{let o=a=>{a!==0&&s(new Error(`Worker exited with code ${a}`))};r.once("message",a=>{this.pool.push(r),r.unref(),r.off("error",s),r.off("exit",o),n(a)}),r.once("error",s),r.once("exit",o),r.postMessage(e)})})}};var m_=ie(p_());async function ATe(t,{baseFs:e=new Wt,prefixPath:r=Se.root,compressionLevel:i,inMemory:n=!1}={}){let s=await $i(),o;if(n)o=new Jr(null,{libzip:s,level:i});else{let l=await T.mktempPromise(),c=v.join(l,"archive.zip");o=new Jr(c,{create:!0,libzip:s,level:i})}let a=v.resolve(Se.root,r);return await o.copyPromise(a,t,{baseFs:e,stableTime:!0,stableSort:!0}),o}var E_;async function lTe(t,e){let r=await T.mktempPromise(),i=v.join(r,"archive.zip");return E_||(E_=new IR((0,m_.getContent)())),await E_.run({tmpFile:i,tgz:t,opts:e}),new Jr(i,{libzip:await $i(),level:e.compressionLevel})}async function*cTe(t){let e=new C_.default.Parse,r=new d_.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",i=>{r.write(i)}),e.on("error",i=>{r.destroy(i)}),e.on("close",()=>{r.destroyed||r.end()}),e.end(t);for await(let i of r){let n=i;yield n,n.resume()}}async function uTe(t,e,{stripComponents:r=0,prefixPath:i=Se.dot}={}){var s,o;function n(a){if(a.path[0]==="/")return!0;let l=a.path.split(/\//g);return!!(l.some(c=>c==="..")||l.length<=r)}for await(let a of cTe(t)){if(n(a))continue;let l=v.normalize(M.toPortablePath(a.path)).replace(/\/$/,"").split(/\//g);if(l.length<=r)continue;let c=l.slice(r).join("/"),u=v.join(i,c),g=420;switch((a.type==="Directory"||(((s=a.mode)!=null?s:0)&73)!=0)&&(g|=73),a.type){case"Directory":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.mkdirSync(u,{mode:g}),e.utimesSync(u,mr.SAFE_TIME,mr.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.writeFileSync(u,await Cu(a),{mode:g}),e.utimesSync(u,mr.SAFE_TIME,mr.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.symlinkSync(a.linkpath,u),(o=e.lutimesSync)==null||o.call(e,u,mr.SAFE_TIME,mr.SAFE_TIME);break}}return e}var Hs={};it(Hs,{emitList:()=>gTe,emitTree:()=>b_,treeNodeToJson:()=>Q_,treeNodeToTreeify:()=>B_});var w_=ie(y_());function B_(t,{configuration:e}){let r={},i=(n,s)=>{let o=Array.isArray(n)?n.entries():Object.entries(n);for(let[a,{label:l,value:c,children:u}]of o){let g=[];typeof l!="undefined"&&g.push(Py(e,l,Gl.BOLD)),typeof c!="undefined"&&g.push(Ve(e,c[0],c[1])),g.length===0&&g.push(Py(e,`${a}`,Gl.BOLD));let f=g.join(": "),h=s[f]={};typeof u!="undefined"&&i(u,h)}};if(typeof t.children=="undefined")throw new Error("The root node must only contain children");return i(t.children,r),r}function Q_(t){let e=r=>{var s;if(typeof r.children=="undefined"){if(typeof r.value=="undefined")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return Uu(r.value[0],r.value[1])}let i=Array.isArray(r.children)?r.children.entries():Object.entries((s=r.children)!=null?s:{}),n=Array.isArray(r.children)?[]:{};for(let[o,a]of i)n[o]=e(a);return typeof r.value=="undefined"?n:{value:Uu(r.value[0],r.value[1]),children:n}};return e(t)}function gTe(t,{configuration:e,stdout:r,json:i}){let n=t.map(s=>({value:s}));b_({children:n},{configuration:e,stdout:r,json:i})}function b_(t,{configuration:e,stdout:r,json:i,separators:n=0}){var o;if(i){let a=Array.isArray(t.children)?t.children.values():Object.values((o=t.children)!=null?o:{});for(let l of a)r.write(`${JSON.stringify(Q_(l))} -`);return}let s=(0,w_.asTree)(B_(t,{configuration:e}),!1,!1);if(n>=1&&(s=s.replace(/^([├└]─)/gm,`\u2502 -$1`).replace(/^│\n/,"")),n>=2)for(let a=0;a<2;++a)s=s.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 -$2`).replace(/^│\n/,"");if(n>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(s)}var v_=ie(require("crypto")),BR=ie(require("fs"));var fTe=8,Qt=class{constructor(e,{configuration:r,immutable:i=r.get("enableImmutableCache"),check:n=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,v_.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=i,this.check=n;let s=r.get("cacheKeyOverride");if(s!==null)this.cacheKey=`${s}`;else{let o=r.get("compressionLevel"),a=o!==pl?`c${o}`:"";this.cacheKey=[fTe,a].join("")}}static async find(e,{immutable:r,check:i}={}){let n=new Qt(e.get("cacheFolder"),{configuration:e,immutable:r,check:i});return await n.setup(),n}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${Mu(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let n=hTe(r).slice(0,10);return`${Mu(e)}-${n}.zip`}getLocatorPath(e,r,i={}){var s;return this.mirrorCwd===null||((s=i.unstablePackages)==null?void 0:s.has(e.locatorHash))?v.resolve(this.cwd,this.getVersionFilename(e)):r===null||QR(r)!==this.cacheKey?null:v.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?v.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache"))if(this.immutable){if(!await T.existsPromise(this.cwd))throw new nt(z.IMMUTABLE_CACHE,"Cache path does not exist.")}else{await T.mkdirPromise(this.cwd,{recursive:!0});let e=v.resolve(this.cwd,".gitignore");await T.changeFilePromise(e,`/.gitignore -*.flock -*.tmp -`)}(this.mirrorCwd||!this.immutable)&&await T.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,a){var l=a,{onHit:i,onMiss:n,loader:s}=l,o=qr(l,["onHit","onMiss","loader"]);var A;let c=this.getLocatorMirrorPath(e),u=new Wt,g=()=>{let V=new Jr(null,{libzip:H}),W=v.join(Se.root,Lx(e));return V.mkdirSync(W,{recursive:!0}),V.writeJsonSync(v.join(W,wt.manifest),{name:St(e),mocked:!0}),V},f=async(V,W=null)=>{let X=!o.skipIntegrityCheck||!r?`${this.cacheKey}/${await Ey(V)}`:r;if(W!==null){let F=!o.skipIntegrityCheck||!r?`${this.cacheKey}/${await Ey(W)}`:r;if(X!==F)throw new nt(z.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}if(r!==null&&X!==r){let F;switch(this.check?F="throw":QR(r)!==QR(X)?F="update":F=this.configuration.get("checksumBehavior"),F){case"ignore":return r;case"update":return X;default:case"throw":throw new nt(z.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the expected checksum")}}return X},h=async V=>{if(!s)throw new Error(`Cache check required but no loader configured for ${lt(this.configuration,e)}`);let W=await s(),X=W.getRealPath();return W.saveAndClose(),await T.chmodPromise(X,420),await f(V,X)},p=async()=>{if(c===null||!await T.existsPromise(c)){let V=await s(),W=V.getRealPath();return V.saveAndClose(),{source:"loader",path:W}}return{source:"mirror",path:c}},d=async()=>{if(!s)throw new Error(`Cache entry required but missing for ${lt(this.configuration,e)}`);if(this.immutable)throw new nt(z.IMMUTABLE_CACHE,`Cache entry required but missing for ${lt(this.configuration,e)}`);let{path:V,source:W}=await p(),X=await f(V),F=this.getLocatorPath(e,X,o);if(!F)throw new Error("Assertion failed: Expected the cache path to be available");let D=[];W!=="mirror"&&c!==null&&D.push(async()=>{let pe=`${c}${this.cacheId}`;await T.copyFilePromise(V,pe,BR.default.constants.COPYFILE_FICLONE),await T.chmodPromise(pe,420),await T.renamePromise(pe,c)}),(!o.mirrorWriteOnly||c===null)&&D.push(async()=>{let pe=`${F}${this.cacheId}`;await T.copyFilePromise(V,pe,BR.default.constants.COPYFILE_FICLONE),await T.chmodPromise(pe,420),await T.renamePromise(pe,F)});let he=o.mirrorWriteOnly&&c!=null?c:F;return await Promise.all(D.map(pe=>pe())),[!1,he,X]},m=async()=>{let W=(async()=>{var Ne;let X=this.getLocatorPath(e,r,o),F=X!==null?await u.existsPromise(X):!1,D=!!((Ne=o.mockedPackages)==null?void 0:Ne.has(e.locatorHash))&&(!this.check||!F),he=D||F,pe=he?i:n;if(pe&&pe(),he){let Pe=null,qe=X;return D||(Pe=this.check?await h(qe):await f(qe)),[D,qe,Pe]}else return d()})();this.mutexes.set(e.locatorHash,W);try{return await W}finally{this.mutexes.delete(e.locatorHash)}};for(let V;V=this.mutexes.get(e.locatorHash);)await V;let[I,B,b]=await m();this.markedFiles.add(B);let R,H=await $i(),L=I?()=>g():()=>new Jr(B,{baseFs:u,libzip:H,readOnly:!0}),K=new oh(()=>Mv(()=>R=L(),V=>`Failed to open the cache entry for ${lt(this.configuration,e)}: ${V}`),v),J=new Xo(B,{baseFs:K,pathUtils:v}),ne=()=>{R==null||R.discardAndClose()},q=((A=o.unstablePackages)==null?void 0:A.has(e.locatorHash))?null:b;return[J,ne,q]}};function QR(t){let e=t.indexOf("/");return e!==-1?t.slice(0,e):null}function hTe(t){let e=t.indexOf("/");return e!==-1?t.slice(e+1):t}var F_=ie(x_()),NB=ie(ml());var N_=ie(Wp()),kR=ie(require("stream"));var k_={hooks:{reduceDependency:(t,e,r,i,{resolver:n,resolveOptions:s})=>{for(let{pattern:o,reference:a}of e.topLevelWorkspace.manifest.resolutions){if(o.from&&o.from.fullName!==St(r)||o.from&&o.from.description&&o.from.description!==r.reference||o.descriptor.fullName!==St(t)||o.descriptor.description&&o.descriptor.description!==t.range)continue;return n.bindDescriptor(Yt(t,a),e.topLevelWorkspace.anchoredLocator,s)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let i=hp(t.configuration,r);await t.configuration.triggerHook(n=>n.validateWorkspace,r,{reportWarning:(n,s)=>e.reportWarning(n,`${i}: ${s}`),reportError:(n,s)=>e.reportError(n,`${i}: ${s}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let i of r.errors)e.reportWarning(z.INVALID_MANIFEST,i.message)}}};var vR=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let i=this.fetchers.find(n=>n.supports(e,r));return i||null}getFetcher(e,r){let i=this.fetchers.find(n=>n.supports(e,r));if(!i)throw new nt(z.FETCHER_NOT_FOUND,`${lt(r.project.configuration,e)} isn't supported by any available fetcher`);return i}};var pd=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,i){return this.getResolverByDescriptor(e,i).bindDescriptor(e,r,i)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,i){return await this.getResolverByDescriptor(e,i).getCandidates(e,r,i)}async getSatisfying(e,r,i){return this.getResolverByDescriptor(e,i).getSatisfying(e,r,i)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let i=this.resolvers.find(n=>n.supportsDescriptor(e,r));return i||null}getResolverByDescriptor(e,r){let i=this.resolvers.find(n=>n.supportsDescriptor(e,r));if(!i)throw new Error(`${Xt(r.project.configuration,e)} isn't supported by any available resolver`);return i}tryResolverByLocator(e,r){let i=this.resolvers.find(n=>n.supportsLocator(e,r));return i||null}getResolverByLocator(e,r){let i=this.resolvers.find(n=>n.supportsLocator(e,r));if(!i)throw new Error(`${lt(r.project.configuration,e)} isn't supported by any available resolver`);return i}};var P_=ie(Or());var Rg=/^(?!v)[a-z0-9._-]+$/i,SR=class{supportsDescriptor(e,r){return!!(Us(e.range)||Rg.test(e.range))}supportsLocator(e,r){return!!(P_.default.valid(e.reference)||Rg.test(e.reference))}shouldPersistResolution(e,r){return r.resolver.shouldPersistResolution(this.forwardLocator(e,r),r)}bindDescriptor(e,r,i){return i.resolver.bindDescriptor(this.forwardDescriptor(e,i),r,i)}getResolutionDependencies(e,r){return r.resolver.getResolutionDependencies(this.forwardDescriptor(e,r),r)}async getCandidates(e,r,i){return await i.resolver.getCandidates(this.forwardDescriptor(e,i),r,i)}async getSatisfying(e,r,i){return await i.resolver.getSatisfying(this.forwardDescriptor(e,i),r,i)}async resolve(e,r){let i=await r.resolver.resolve(this.forwardLocator(e,r),r);return op(i,e)}forwardDescriptor(e,r){return Yt(e,`${r.project.configuration.get("defaultProtocol")}${e.range}`)}forwardLocator(e,r){return Vi(e,`${r.project.configuration.get("defaultProtocol")}${e.reference}`)}};var dd=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,r){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=Vi(e,n);return r.fetcher.getLocalPath(s,r)}async fetch(e,r){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=Vi(e,n),o=await r.fetcher.fetch(s,r);return await this.ensureVirtualLink(e,o,r)}getLocatorFilename(e){return Mu(e)}async ensureVirtualLink(e,r,i){let n=r.packageFs.getRealPath(),s=i.project.configuration.get("virtualFolder"),o=this.getLocatorFilename(e),a=Pr.makeVirtualPath(s,o,n),l=new Xo(a,{baseFs:r.packageFs,pathUtils:v});return _(P({},r),{packageFs:l})}};var Fg=class{static isVirtualDescriptor(e){return!!e.range.startsWith(Fg.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(Fg.protocol)}supportsDescriptor(e,r){return Fg.isVirtualDescriptor(e)}supportsLocator(e,r){return Fg.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,r,i){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,r,i){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}},FB=Fg;FB.protocol="virtual:";var xR=class{supports(e){return!!e.reference.startsWith(Yr.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let i=this.getWorkspace(e,r).cwd;return{packageFs:new Ft(i),prefixPath:Se.dot,localPath:i}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Yr.protocol.length))}};var D_=ie(require("module"));function R_(){return new Set(D_.default.builtinModules||Object.keys(process.binding("natives")))}var dTe=new Set(["binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir"]),LB="yarn_",PR=".yarnrc.yml",DR="yarn.lock",CTe="********",ge;(function(u){u.ANY="ANY",u.BOOLEAN="BOOLEAN",u.ABSOLUTE_PATH="ABSOLUTE_PATH",u.LOCATOR="LOCATOR",u.LOCATOR_LOOSE="LOCATOR_LOOSE",u.NUMBER="NUMBER",u.STRING="STRING",u.SECRET="SECRET",u.SHAPE="SHAPE",u.MAP="MAP"})(ge||(ge={}));var ps=Le,RR={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:ge.STRING,default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:ge.ABSOLUTE_PATH,default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:ge.BOOLEAN,default:!1},ignoreCwd:{description:"If true, the `--cwd` flag will be ignored",type:ge.BOOLEAN,default:!1},cacheKeyOverride:{description:"A global cache key override; used only for test purposes",type:ge.STRING,default:null},globalFolder:{description:"Folder where are stored the system-wide settings",type:ge.ABSOLUTE_PATH,default:Rb()},cacheFolder:{description:"Folder where the cache files must be written",type:ge.ABSOLUTE_PATH,default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:ge.NUMBER,values:["mixed",0,1,2,3,4,5,6,7,8,9],default:pl},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:ge.ABSOLUTE_PATH,default:"./.yarn/__virtual__"},lockfileFilename:{description:"Name of the files where the Yarn dependency tree entries must be stored",type:ge.STRING,default:DR},installStatePath:{description:"Path of the file where the install state will be persisted",type:ge.ABSOLUTE_PATH,default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:ge.STRING,default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:ge.STRING,default:TB()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:ge.BOOLEAN,default:!1},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:ge.BOOLEAN,default:xy,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:ge.BOOLEAN,default:Mx,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:ge.BOOLEAN,default:NB.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:ge.BOOLEAN,default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:ge.BOOLEAN,default:!NB.isCI&&process.stdout.isTTY&&process.stdout.columns>22,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:ge.BOOLEAN,default:!0},preferAggregateCacheInfo:{description:"If true, the CLI will only print a one-line report of any cache changes",type:ge.BOOLEAN,default:NB.isCI},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:ge.BOOLEAN,default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:ge.BOOLEAN,default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:ge.STRING,default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:ge.STRING,default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:ge.STRING,default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:ge.BOOLEAN,default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:ge.SHAPE,properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:ge.STRING,isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:ge.STRING,isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:ge.BOOLEAN,default:!0},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:ge.BOOLEAN,default:!0},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:ge.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:ge.STRING,default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:ge.STRING,default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:ge.NUMBER,default:6e4},httpRetry:{description:"Retry times on http failure",type:ge.NUMBER,default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:ge.NUMBER,default:50},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:ge.MAP,valueDefinition:{description:"",type:ge.SHAPE,properties:{caFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:ge.ABSOLUTE_PATH,default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:ge.BOOLEAN,default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:ge.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:ge.STRING,default:null}}}},caFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:ge.ABSOLUTE_PATH,default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:ge.BOOLEAN,default:!0},logFilters:{description:"Overrides for log levels",type:ge.SHAPE,isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:ge.STRING,default:void 0},text:{description:"Code of the texts covered by this override",type:ge.STRING,default:void 0},pattern:{description:"Code of the patterns covered by this override",type:ge.STRING,default:void 0},level:{description:"Log level override, set to null to remove override",type:ge.STRING,values:Object.values(Ts),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:ge.BOOLEAN,default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:ge.NUMBER,default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:ge.STRING,default:null},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:ge.BOOLEAN,default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:ge.BOOLEAN,default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:ge.BOOLEAN,default:!1},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:ge.STRING,default:"throw"},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:ge.MAP,valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:ge.SHAPE,properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:ge.MAP,valueDefinition:{description:"A range",type:ge.STRING}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:ge.MAP,valueDefinition:{description:"A semver range",type:ge.STRING}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:ge.MAP,valueDefinition:{description:"The peerDependency meta",type:ge.SHAPE,properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:ge.BOOLEAN,default:!1}}}}}}}};function NR(t,e,r,i,n){if(i.isArray||i.type===ge.ANY&&Array.isArray(r))return Array.isArray(r)?r.map((s,o)=>FR(t,`${e}[${o}]`,s,i,n)):String(r).split(/,/).map(s=>FR(t,e,s,i,n));if(Array.isArray(r))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return FR(t,e,r,i,n)}function FR(t,e,r,i,n){var a;switch(i.type){case ge.ANY:return r;case ge.SHAPE:return mTe(t,e,r,i,n);case ge.MAP:return ETe(t,e,r,i,n)}if(r===null&&!i.isNullable&&i.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if((a=i.values)==null?void 0:a.includes(r))return r;let o=(()=>{if(i.type===ge.BOOLEAN&&typeof r!="string")return Hh(r);if(typeof r!="string")throw new Error(`Expected value (${r}) to be a string`);let l=Ov(r,{env:process.env});switch(i.type){case ge.ABSOLUTE_PATH:return v.resolve(n,M.toPortablePath(l));case ge.LOCATOR_LOOSE:return Hl(l,!1);case ge.NUMBER:return parseInt(l);case ge.LOCATOR:return Hl(l);case ge.BOOLEAN:return Hh(l);default:return l}})();if(i.values&&!i.values.includes(o))throw new Error(`Invalid value, expected one of ${i.values.join(", ")}`);return o}function mTe(t,e,r,i,n){if(typeof r!="object"||Array.isArray(r))throw new me(`Object configuration settings "${e}" must be an object`);let s=LR(t,i,{ignoreArrays:!0});if(r===null)return s;for(let[o,a]of Object.entries(r)){let l=`${e}.${o}`;if(!i.properties[o])throw new me(`Unrecognized configuration settings found: ${e}.${o} - run "yarn config -v" to see the list of settings supported in Yarn`);s.set(o,NR(t,l,a,i.properties[o],n))}return s}function ETe(t,e,r,i,n){let s=new Map;if(typeof r!="object"||Array.isArray(r))throw new me(`Map configuration settings "${e}" must be an object`);if(r===null)return s;for(let[o,a]of Object.entries(r)){let l=i.normalizeKeys?i.normalizeKeys(o):o,c=`${e}['${l}']`,u=i.valueDefinition;s.set(l,NR(t,c,a,u,n))}return s}function LR(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case ge.SHAPE:{if(e.isArray&&!r)return[];let i=new Map;for(let[n,s]of Object.entries(e.properties))i.set(n,LR(t,s));return i}break;case ge.MAP:return e.isArray&&!r?[]:new Map;case ge.ABSOLUTE_PATH:return e.default===null?null:t.projectCwd===null?v.isAbsolute(e.default)?v.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(i=>v.resolve(t.projectCwd,i)):v.resolve(t.projectCwd,e.default);default:return e.default}}function MB(t,e,r){if(e.type===ge.SECRET&&typeof t=="string"&&r.hideSecrets)return CTe;if(e.type===ge.ABSOLUTE_PATH&&typeof t=="string"&&r.getNativePaths)return M.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let i=[];for(let n of t)i.push(MB(n,e,r));return i}if(e.type===ge.MAP&&t instanceof Map){let i=new Map;for(let[n,s]of t.entries())i.set(n,MB(s,e.valueDefinition,r));return i}if(e.type===ge.SHAPE&&t instanceof Map){let i=new Map;for(let[n,s]of t.entries()){let o=e.properties[n];i.set(n,MB(s,o,r))}return i}return t}function ITe(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),!!e.startsWith(LB)&&(e=(0,F_.default)(e.slice(LB.length)),t[e]=r);return t}function TB(){let t=`${LB}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r=="string")return r;return PR}var KA;(function(i){i[i.LOCKFILE=0]="LOCKFILE",i[i.MANIFEST=1]="MANIFEST",i[i.NONE=2]="NONE"})(KA||(KA={}));var Ra=class{constructor(e){this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.packageExtensions=new Map;this.limits=new Map;this.startingCwd=e}static create(e,r,i){let n=new Ra(e);typeof r!="undefined"&&!(r instanceof Map)&&(n.projectCwd=r),n.importSettings(RR);let s=typeof i!="undefined"?i:r instanceof Map?r:new Map;for(let[o,a]of s)n.activatePlugin(o,a);return n}static async find(e,r,{lookup:i=0,strict:n=!0,usePath:s=!1,useRc:o=!0}={}){let a=ITe();delete a.rcFilename;let l=await Ra.findRcFiles(e),c=await Ra.findHomeRcFile();if(c){let I=l.find(B=>B.path===c.path);I?I.strict=!1:l.push(_(P({},c),{strict:!1}))}let u=({ignoreCwd:I,yarnPath:B,ignorePath:b,lockfileFilename:R})=>({ignoreCwd:I,yarnPath:B,ignorePath:b,lockfileFilename:R}),g=L=>{var K=L,{ignoreCwd:I,yarnPath:B,ignorePath:b,lockfileFilename:R}=K,H=qr(K,["ignoreCwd","yarnPath","ignorePath","lockfileFilename"]);return H},f=new Ra(e);f.importSettings(u(RR)),f.useWithSource("",u(a),e,{strict:!1});for(let{path:I,cwd:B,data:b}of l)f.useWithSource(I,u(b),B,{strict:!1});if(s){let I=f.get("yarnPath"),B=f.get("ignorePath");if(I!==null&&!B)return f}let h=f.get("lockfileFilename"),p;switch(i){case 0:p=await Ra.findProjectCwd(e,h);break;case 1:p=await Ra.findProjectCwd(e,null);break;case 2:T.existsSync(v.join(e,"package.json"))?p=v.resolve(e):p=null;break}f.startingCwd=e,f.projectCwd=p,f.importSettings(g(RR));let d=new Map([["@@core",k_]]),m=I=>"default"in I?I.default:I;if(r!==null){for(let R of r.plugins.keys())d.set(R,m(r.modules.get(R)));let I=new Map;for(let R of R_())I.set(R,()=>mu(R));for(let[R,H]of r.modules)I.set(R,()=>H);let B=new Set,b=async(R,H)=>{let{factory:L,name:K}=mu(R);if(B.has(K))return;let J=new Map(I),ne=A=>{if(J.has(A))return J.get(A)();throw new me(`This plugin cannot access the package referenced via ${A} which is neither a builtin, nor an exposed entry`)},q=await du(async()=>m(await L(ne)),A=>`${A} (when initializing ${K}, defined in ${H})`);I.set(K,()=>q),B.add(K),d.set(K,q)};if(a.plugins)for(let R of a.plugins.split(";")){let H=v.resolve(e,M.toPortablePath(R));await b(H,"")}for(let{path:R,cwd:H,data:L}of l)if(!!o&&!!Array.isArray(L.plugins))for(let K of L.plugins){let J=typeof K!="string"?K.path:K,ne=v.resolve(H,M.toPortablePath(J));await b(ne,R)}}for(let[I,B]of d)f.activatePlugin(I,B);f.useWithSource("",g(a),e,{strict:n});for(let{path:I,cwd:B,data:b,strict:R}of l)f.useWithSource(I,g(b),B,{strict:R!=null?R:n});return f.get("enableGlobalCache")&&(f.values.set("cacheFolder",`${f.get("globalFolder")}/cache`),f.sources.set("cacheFolder","")),await f.refreshPackageExtensions(),f}static async findRcFiles(e){let r=TB(),i=[],n=e,s=null;for(;n!==s;){s=n;let o=v.join(s,r);if(T.existsSync(o)){let a=await T.readFilePromise(o,"utf8"),l;try{l=Ii(a)}catch(c){let u="";throw a.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(u=" (in particular, make sure you list the colons after each key name)"),new me(`Parse error when loading ${o}; please check it's proper Yaml${u}`)}i.push({path:o,cwd:s,data:l})}n=v.dirname(s)}return i}static async findHomeRcFile(){let e=TB(),r=uh(),i=v.join(r,e);if(T.existsSync(i)){let n=await T.readFilePromise(i,"utf8"),s=Ii(n);return{path:i,cwd:r,data:s}}return null}static async findProjectCwd(e,r){let i=null,n=e,s=null;for(;n!==s;){if(s=n,T.existsSync(v.join(s,"package.json"))&&(i=s),r!==null){if(T.existsSync(v.join(s,r))){i=s;break}}else if(i!==null)break;n=v.dirname(s)}return i}static async updateConfiguration(e,r){let i=TB(),n=v.join(e,i),s=T.existsSync(n)?Ii(await T.readFilePromise(n,"utf8")):{},o=!1,a;if(typeof r=="function"){try{a=r(s)}catch{a=r({})}if(a===s)return}else{a=s;for(let l of Object.keys(r)){let c=s[l],u=r[l],g;if(typeof u=="function")try{g=u(c)}catch{g=u(void 0)}else g=u;c!==g&&(a[l]=g,o=!0)}if(!o)return}await T.changeFilePromise(n,Qa(a),{automaticNewlines:!0})}static async updateHomeConfiguration(e){let r=uh();return await Ra.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration!="undefined"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,i]of Object.entries(e))if(i!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,i),this.values.set(r,LR(this,i))}}useWithSource(e,r,i,n){try{this.use(e,r,i,n)}catch(s){throw s.message+=` (in ${Ve(this,e,Le.PATH)})`,s}}use(e,r,i,{strict:n=!0,overwrite:s=!1}={}){n=n&&this.get("enableStrictSettings");for(let o of["enableStrictSettings",...Object.keys(r)]){if(typeof r[o]=="undefined"||o==="plugins"||e===""&&dTe.has(o))continue;if(o==="rcFilename")throw new me(`The rcFilename settings can only be set via ${`${LB}RC_FILENAME`.toUpperCase()}, not via a rc file`);let l=this.settings.get(o);if(!l){if(n)throw new me(`Unrecognized or legacy configuration settings found: ${o} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(o,e);continue}if(this.sources.has(o)&&!(s||l.type===ge.MAP||l.isArray&&l.concatenateValues))continue;let c;try{c=NR(this,o,r[o],l,i)}catch(u){throw u.message+=` in ${Ve(this,e,Le.PATH)}`,u}if(o==="enableStrictSettings"&&e!==""){n=c;continue}if(l.type===ge.MAP){let u=this.values.get(o);this.values.set(o,new Map(s?[...u,...c]:[...c,...u])),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else if(l.isArray&&l.concatenateValues){let u=this.values.get(o);this.values.set(o,s?[...u,...c]:[...c,...u]),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else this.values.set(o,c),this.sources.set(o,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:i=!1}){let n=this.get(e),s=this.settings.get(e);if(typeof s=="undefined")throw new me(`Couldn't find a configuration settings named "${e}"`);return MB(n,s,{hideSecrets:r,getNativePaths:i})}getSubprocessStreams(e,{header:r,prefix:i,report:n}){let s,o,a=T.createWriteStream(e);if(this.get("enableInlineBuilds")){let l=n.createStreamReporter(`${i} ${Ve(this,"STDOUT","green")}`),c=n.createStreamReporter(`${i} ${Ve(this,"STDERR","red")}`);s=new kR.PassThrough,s.pipe(l),s.pipe(a),o=new kR.PassThrough,o.pipe(c),o.pipe(a)}else s=a,o=a,typeof r!="undefined"&&s.write(`${r} -`);return{stdout:s,stderr:o}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let i of r.resolvers||[])e.push(new i);return new pd([new FB,new Yr,new SR,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let i of r.fetchers||[])e.push(new i);return new vR([new dd,new xR,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let i of r.linkers||[])e.push(new i);return e}getSupportedArchitectures(){let e=this.get("supportedArchitectures"),r=e.get("os");r!==null&&(r=r.map(n=>n==="current"?process.platform:n));let i=e.get("cpu");return i!==null&&(i=i.map(n=>n==="current"?process.arch:n)),{os:r,cpu:i}}async refreshPackageExtensions(){this.packageExtensions=new Map;let e=this.packageExtensions,r=(i,n,{userProvided:s=!1}={})=>{if(!Us(i.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let o=new Ze;o.load(n,{yamlCompatibilityMode:!0});let a=hu(e,i.identHash),l=[];a.push([i.range,l]);let c={status:ki.Inactive,userProvided:s,parentDescriptor:i};for(let u of o.dependencies.values())l.push(_(P({},c),{type:oi.Dependency,descriptor:u}));for(let u of o.peerDependencies.values())l.push(_(P({},c),{type:oi.PeerDependency,descriptor:u}));for(let[u,g]of o.peerDependenciesMeta)for(let[f,h]of Object.entries(g))l.push(_(P({},c),{type:oi.PeerDependencyMeta,selector:u,key:f,value:h}))};await this.triggerHook(i=>i.registerPackageExtensions,this,r);for(let[i,n]of this.get("packageExtensions"))r(pA(i,!0),aI(n),{userProvided:!0})}normalizePackage(e){let r=ap(e);if(this.packageExtensions==null)throw new Error("refreshPackageExtensions has to be called before normalizing packages");let i=this.packageExtensions.get(e.identHash);if(typeof i!="undefined"){let s=e.version;if(s!==null){for(let[o,a]of i)if(!!lc(s,o))for(let l of a)switch(l.status===ki.Inactive&&(l.status=ki.Redundant),l.type){case oi.Dependency:typeof r.dependencies.get(l.descriptor.identHash)=="undefined"&&(l.status=ki.Active,r.dependencies.set(l.descriptor.identHash,l.descriptor));break;case oi.PeerDependency:typeof r.peerDependencies.get(l.descriptor.identHash)=="undefined"&&(l.status=ki.Active,r.peerDependencies.set(l.descriptor.identHash,l.descriptor));break;case oi.PeerDependencyMeta:{let c=r.peerDependenciesMeta.get(l.selector);(typeof c=="undefined"||!Object.prototype.hasOwnProperty.call(c,l.key)||c[l.key]!==l.value)&&(l.status=ki.Active,na(r.peerDependenciesMeta,l.selector,()=>({}))[l.key]=l.value)}break;default:Lv(l);break}}}let n=s=>s.scope?`${s.scope}__${s.name}`:`${s.name}`;for(let s of r.peerDependenciesMeta.keys()){let o=En(s);r.peerDependencies.has(o.identHash)||r.peerDependencies.set(o.identHash,Yt(o,"*"))}for(let s of r.peerDependencies.values()){if(s.scope==="types")continue;let o=n(s),a=Eo("types",o),l=St(a);r.peerDependencies.has(a.identHash)||r.peerDependenciesMeta.has(l)||(r.peerDependencies.set(a.identHash,Yt(a,"*")),r.peerDependenciesMeta.set(l,{optional:!0}))}return r.dependencies=new Map(gn(r.dependencies,([,s])=>In(s))),r.peerDependencies=new Map(gn(r.peerDependencies,([,s])=>In(s))),r}getLimit(e){return na(this.limits,e,()=>(0,N_.default)(this.get(e)))}async triggerHook(e,...r){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);!s||await s(...r)}}async triggerMultipleHooks(e,r){for(let i of r)await this.triggerHook(e,...i)}async reduceHook(e,r,...i){let n=r;for(let s of this.plugins.values()){let o=s.hooks;if(!o)continue;let a=e(o);!a||(n=await a(n,...i))}return n}async firstHook(e,...r){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);if(!s)continue;let o=await s(...r);if(typeof o!="undefined")return o}return null}},fe=Ra;fe.telemetry=null;var Gn;(function(r){r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE"})(Gn||(Gn={}));var Fa=class extends Xi{constructor({configuration:e,stdout:r,suggestInstall:i=!0}){super();this.errorCount=0;Cp(this,{configuration:e}),this.configuration=e,this.stdout=r,this.suggestInstall=i}static async start(e,r){let i=new this(e);try{await r(i)}catch(n){i.reportExceptionOnce(n)}finally{await i.finalize()}return i}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){}reportCacheMiss(e){}startTimerSync(e,r,i){return(typeof r=="function"?r:i)()}async startTimerPromise(e,r,i){return await(typeof r=="function"?r:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){this.errorCount+=1,this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(e)}: ${r} -`)}reportProgress(e){let r=Promise.resolve().then(async()=>{for await(let{}of e);}),i=()=>{};return _(P({},r),{stop:i})}reportJson(e){}async finalize(){this.errorCount>0&&(this.stdout.write(` -`),this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. -`),this.suggestInstall&&this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. -`))}formatNameWithHyperlink(e){return eD(e,{configuration:this.configuration,json:!1})}};var t0=ie(require("crypto")),v$=ie(CX()),r0=ie(Q$()),S$=ie(Wp()),x$=ie(Or()),lF=ie(require("util")),cF=ie(require("v8")),uF=ie(require("zlib"));var iUe=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(t,e,r,i)=>`${r}#commit=${i}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(t,e,r="",i,n)=>`https://${r}github.com/${i}.git#commit=${n}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(t,e,r="",i,n)=>`https://${r}github.com/${i}.git#commit=${n}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\/\/(?:[^\\.]+)\.jfrog\.io\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(t,e)=>by({protocol:"npm:",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],oF=class{constructor(){this.resolutions=null}async setup(e,{report:r}){let i=v.join(e.cwd,e.configuration.get("lockfileFilename"));if(!T.existsSync(i))return;let n=await T.readFilePromise(i,"utf8"),s=Ii(n);if(Object.prototype.hasOwnProperty.call(s,"__metadata"))return;let o=this.resolutions=new Map;for(let a of Object.keys(s)){let l=gp(a);if(!l){r.reportWarning(z.YARN_IMPORT_FAILED,`Failed to parse the string "${a}" into a proper descriptor`);continue}Us(l.range)&&(l=Yt(l,`npm:${l.range}`));let{version:c,resolved:u}=s[a];if(!u)continue;let g;for(let[h,p]of iUe){let d=u.match(h);if(d){g=p(c,...d);break}}if(!g){r.reportWarning(z.YARN_IMPORT_FAILED,`${Xt(e.configuration,l)}: Only some patterns can be imported from legacy lockfiles (not "${u}")`);continue}let f=l;try{let h=Tu(l.range),p=gp(h.selector,!0);p&&(f=p)}catch{}o.set(l.descriptorHash,Vi(f,g))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let n=this.resolutions.get(e.descriptorHash);if(!n)throw new Error("Assertion failed: The resolution should have been registered");return[n]}async getSatisfying(e,r,i){return null}async resolve(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}};var aF=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(By(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,i){let n=i.project.originalPackages.get(By(e).locatorHash);if(n)return[n];let s=i.project.storedResolutions.get(e.descriptorHash);if(!s)throw new Error("Expected the resolution to have been successful - resolution not found");if(n=i.project.originalPackages.get(s),!n)throw new Error("Expected the resolution to have been successful - package not found");return[n]}async getSatisfying(e,r,i){return null}async resolve(e,r){let i=r.project.originalPackages.get(e.locatorHash);if(!i)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return i}};var AF=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,i){return this.resolver.bindDescriptor(e,r,i)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,i){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,r,i){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,r){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}};var ei=class extends Xi{reportCacheHit(e){}reportCacheMiss(e){}startTimerSync(e,r,i){return(typeof r=="function"?r:i)()}async startTimerPromise(e,r,i){return await(typeof r=="function"?r:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){let r=Promise.resolve().then(async()=>{for await(let{}of e);}),i=()=>{};return _(P({},r),{stop:i})}reportJson(e){}async finalize(){}};var b$=ie(vx());var Dd=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.dependencies=new Map;this.project=r,this.cwd=e}async setup(){this.manifest=T.existsSync(v.join(this.cwd,Ze.fileName))?await Ze.find(this.cwd):new Ze,this.relativeCwd=v.relative(this.project.cwd,this.cwd)||Se.dot;let e=this.manifest.name?this.manifest.name:Eo(null,`${this.computeCandidateName()}-${zi(this.relativeCwd).substr(0,6)}`),r=this.manifest.version?this.manifest.version:"0.0.0";this.locator=Vi(e,r),this.anchoredDescriptor=Yt(this.locator,`${Yr.protocol}${this.relativeCwd}`),this.anchoredLocator=Vi(this.locator,`${Yr.protocol}${this.relativeCwd}`);let i=this.manifest.workspaceDefinitions.map(({pattern:s})=>s),n=await(0,b$.default)(i,{cwd:M.fromPortablePath(this.cwd),expandDirectories:!1,onlyDirectories:!0,onlyFiles:!1,ignore:["**/node_modules","**/.git","**/.yarn"]});n.sort();for(let s of n){let o=v.resolve(this.cwd,M.toPortablePath(s));T.existsSync(v.join(o,"package.json"))&&this.workspacesCwds.add(o)}}accepts(e){var o;let r=e.indexOf(":"),i=r!==-1?e.slice(0,r+1):null,n=r!==-1?e.slice(r+1):e;if(i===Yr.protocol&&v.normalize(n)===this.relativeCwd||i===Yr.protocol&&(n==="*"||n==="^"||n==="~"))return!0;let s=Us(n);return s?i===Yr.protocol?s.test((o=this.manifest.version)!=null?o:"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?s.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${v.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=Ze.hardDependencies}={}){let r=new Set,i=n=>{for(let s of e)for(let o of n.manifest[s].values()){let a=this.project.tryWorkspaceByDescriptor(o);a===null||r.has(a)||(r.add(a),i(a))}};return i(this),r}getRecursiveWorkspaceDependents({dependencies:e=Ze.hardDependencies}={}){let r=new Set,i=n=>{for(let s of this.project.workspaces)e.some(a=>[...s.manifest[a].values()].some(l=>{let c=this.project.tryWorkspaceByDescriptor(l);return c!==null&&up(c.anchoredLocator,n.anchoredLocator)}))&&!r.has(s)&&(r.add(s),i(s))};return i(this),r}getRecursiveWorkspaceChildren(){let e=[];for(let r of this.workspacesCwds){let i=this.project.workspacesByCwd.get(r);i&&e.push(i,...i.getRecursiveWorkspaceChildren())}return e}async persistManifest(){let e={};this.manifest.exportTo(e);let r=v.join(this.cwd,Ze.fileName),i=`${JSON.stringify(e,null,this.manifest.indent)} -`;await T.changeFilePromise(r,i,{automaticNewlines:!0}),this.manifest.raw=e}};var k$=5,nUe=1,sUe=/ *, */g,P$=/\/$/,oUe=32,aUe=(0,lF.promisify)(uF.default.gzip),AUe=(0,lF.promisify)(uF.default.gunzip),li;(function(r){r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build"})(li||(li={}));var gF={restoreInstallersCustomData:["installersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["storedBuildState"]},D$=t=>zi(`${nUe}`,t),Ke=class{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.installersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){var c,u,g;if(!e.projectCwd)throw new me(`No project found in ${r}`);let i=e.projectCwd,n=r,s=null;for(;s!==e.projectCwd;){if(s=n,T.existsSync(v.join(s,wt.manifest))){i=s;break}n=v.dirname(s)}let o=new Ke(e.projectCwd,{configuration:e});(c=fe.telemetry)==null||c.reportProject(o.cwd),await o.setupResolutions(),await o.setupWorkspaces(),(u=fe.telemetry)==null||u.reportWorkspaceCount(o.workspaces.length),(g=fe.telemetry)==null||g.reportDependencyCount(o.workspaces.reduce((f,h)=>f+h.manifest.dependencies.size+h.manifest.devDependencies.size,0));let a=o.tryWorkspaceByCwd(i);if(a)return{project:o,workspace:a,locator:a.anchoredLocator};let l=await o.findLocatorForLocation(`${i}/`,{strict:!0});if(l)return{project:o,locator:l,workspace:null};throw new me(`The nearest package directory (${Ve(e,i,Le.PATH)}) doesn't seem to be part of the project declared in ${Ve(e,o.cwd,Le.PATH)}. - -- If the project directory is right, it might be that you forgot to list ${Ve(e,v.relative(o.cwd,i),Le.PATH)} as a workspace. -- If it isn't, it's likely because you have a yarn.lock or package.json file there, confusing the project root detection.`)}async setupResolutions(){var i;this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=v.join(this.cwd,this.configuration.get("lockfileFilename")),r=this.configuration.get("defaultLanguageName");if(T.existsSync(e)){let n=await T.readFilePromise(e,"utf8");this.lockFileChecksum=D$(n);let s=Ii(n);if(s.__metadata){let o=s.__metadata.version,a=s.__metadata.cacheKey;this.lockfileNeedsRefresh=o0;){let r=e;e=[];for(let i of r){if(this.workspacesByCwd.has(i))continue;let n=await this.addWorkspace(i),s=this.storedPackages.get(n.anchoredLocator.locatorHash);s&&(n.dependencies=s.dependencies);for(let o of n.workspacesCwds)e.push(o)}}}async addWorkspace(e){let r=new Dd(e,{project:this});await r.setup();let i=this.workspacesByIdent.get(r.locator.identHash);if(typeof i!="undefined")throw new Error(`Duplicate workspace name ${Vr(this.configuration,r.locator)}: ${M.fromPortablePath(e)} conflicts with ${M.fromPortablePath(i.cwd)}`);return this.workspaces.push(r),this.workspacesByCwd.set(e,r),this.workspacesByIdent.set(r.locator.identHash,r),r}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){v.isAbsolute(e)||(e=v.resolve(this.cwd,e)),e=v.normalize(e).replace(/\/+$/,"");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let i of this.workspaces)v.relative(i.cwd,e).startsWith("../")||r&&r.cwd.length>=i.cwd.length||(r=i);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r=="undefined"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${Vr(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){let r=this.tryWorkspaceByIdent(e);return r===null||(hA(e)&&(e=Ap(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${Xt(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Io(e)&&(e=lp(e)),r.locator.locatorHash!==e.locatorHash&&r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${lt(this.configuration,e)})`);return r}refreshWorkspaceDependencies(){for(let e of this.workspaces){let r=this.storedPackages.get(e.anchoredLocator.locatorHash);if(!r)throw new Error(`Assertion failed: Expected workspace ${hp(this.configuration,e)} (${Ve(this.configuration,v.join(e.cwd,wt.manifest),Le.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);e.dependencies=new Map(r.dependencies)}}forgetResolution(e){let r=n=>{this.storedResolutions.delete(n),this.storedDescriptors.delete(n)},i=n=>{this.originalPackages.delete(n),this.storedPackages.delete(n),this.accessibleLocators.delete(n)};if("descriptorHash"in e){let n=this.storedResolutions.get(e.descriptorHash);r(e.descriptorHash);let s=new Set(this.storedResolutions.values());typeof n!="undefined"&&!s.has(n)&&i(n)}if("locatorHash"in e){i(e.locatorHash);for(let[n,s]of this.storedResolutions)s===e.locatorHash&&r(n)}}forgetTransientResolutions(){let e=this.configuration.makeResolver();for(let r of this.originalPackages.values()){let i;try{i=e.shouldPersistResolution(r,{project:this,resolver:e})}catch{i=!1}i||this.forgetResolution(r)}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,i]of e.dependencies)hA(i)&&e.dependencies.set(r,Ap(i))}getDependencyMeta(e,r){let i={},s=this.topLevelWorkspace.manifest.dependenciesMeta.get(St(e));if(!s)return i;let o=s.get(null);if(o&&Object.assign(i,o),r===null||!x$.default.valid(r))return i;for(let[a,l]of s)a!==null&&a===r&&Object.assign(i,l);return i}async findLocatorForLocation(e,{strict:r=!1}={}){let i=new ei,n=this.configuration.getLinkers(),s={project:this,report:i};for(let o of n){let a=await o.findPackageLocator(e,s);if(a){if(r&&(await o.findPackageLocation(a,s)).replace(P$,"")!==e.replace(P$,""))continue;return a}}return null}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions(),e.lockfileOnly||this.forgetTransientResolutions();let r=e.resolver||this.configuration.makeResolver(),i=new oF;await i.setup(this,{report:e.report});let n=e.lockfileOnly?[new AF(r)]:[i,r],s=new pd([new aF(r),...n]),o=this.configuration.makeFetcher(),a=e.lockfileOnly?{project:this,report:e.report,resolver:s}:{project:this,report:e.report,resolver:s,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:o,cacheOptions:{mirrorWriteOnly:!0}}},l=new Map,c=new Map,u=new Map,g=new Map,f=new Map,h=new Map,p=this.topLevelWorkspace.anchoredLocator,d=new Set,m=[],I=async W=>{let X=await du(async()=>await s.resolve(W,a),D=>`${lt(this.configuration,W)}: ${D}`);if(!up(W,X))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${lt(this.configuration,W)} to ${lt(this.configuration,X)})`);g.set(X.locatorHash,X);let F=this.configuration.normalizePackage(X);for(let[D,he]of F.dependencies){let pe=await this.configuration.reduceHook(Pe=>Pe.reduceDependency,he,this,F,he,{resolver:s,resolveOptions:a});if(!cp(he,pe))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let Ne=s.bindDescriptor(pe,W,a);F.dependencies.set(D,Ne)}return m.push(Promise.all([...F.dependencies.values()].map(D=>H(D)))),c.set(F.locatorHash,F),F},B=async W=>{let X=f.get(W.locatorHash);if(typeof X!="undefined")return X;let F=Promise.resolve().then(()=>I(W));return f.set(W.locatorHash,F),F},b=async(W,X)=>{let F=await H(X);return l.set(W.descriptorHash,W),u.set(W.descriptorHash,F.locatorHash),F},R=async W=>{let X=this.resolutionAliases.get(W.descriptorHash);if(typeof X!="undefined")return b(W,this.storedDescriptors.get(X));let F=s.getResolutionDependencies(W,a),D=new Map(await Promise.all(F.map(async Ne=>{let Pe=s.bindDescriptor(Ne,p,a),qe=await H(Pe);return d.add(qe.locatorHash),[Ne.descriptorHash,qe]}))),pe=(await du(async()=>await s.getCandidates(W,D,a),Ne=>`${Xt(this.configuration,W)}: ${Ne}`))[0];if(typeof pe=="undefined")throw new Error(`${Xt(this.configuration,W)}: No candidates found`);return l.set(W.descriptorHash,W),u.set(W.descriptorHash,pe.locatorHash),B(pe)},H=W=>{let X=h.get(W.descriptorHash);if(typeof X!="undefined")return X;l.set(W.descriptorHash,W);let F=Promise.resolve().then(()=>R(W));return h.set(W.descriptorHash,F),F};for(let W of this.workspaces){let X=W.anchoredDescriptor;m.push(H(X))}for(;m.length>0;){let W=[...m];m.length=0,await Promise.all(W)}let L=new Set(this.resolutionAliases.values()),K=new Set(c.keys()),J=new Set,ne=new Map;lUe({project:this,report:e.report,accessibleLocators:J,volatileDescriptors:L,optionalBuilds:K,peerRequirements:ne,allDescriptors:l,allResolutions:u,allPackages:c});for(let W of d)K.delete(W);for(let W of L)l.delete(W),u.delete(W);let q=this.configuration.getSupportedArchitectures(),A=new Set,V=new Set;for(let W of c.values())W.conditions!=null&&(!K.has(W.locatorHash)||(Sy(W,q)||(Sy(W,{os:[process.platform],cpu:[process.arch]})&&e.report.reportWarningOnce(z.GHOST_ARCHITECTURE,`${lt(this.configuration,W)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Ve(this.configuration,"supportedArchitectures",ps.SETTING)} setting`),V.add(W.locatorHash)),A.add(W.locatorHash)));this.storedResolutions=u,this.storedDescriptors=l,this.storedPackages=c,this.accessibleLocators=J,this.conditionalLocators=A,this.disabledLocators=V,this.originalPackages=g,this.optionalBuilds=K,this.peerRequirements=ne,this.refreshWorkspaceDependencies()}async fetchEverything({cache:e,report:r,fetcher:i,mode:n}){let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:r,cacheOptions:s},l=Array.from(new Set(gn(this.storedResolutions.values(),[f=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");return is(h)}])));n===li.UpdateLockfile&&(l=l.filter(f=>!this.storedChecksums.has(f)));let c=!1,u=Xi.progressViaCounter(l.length);r.reportProgress(u);let g=(0,S$.default)(oUe);if(await r.startCacheReport(async()=>{await Promise.all(l.map(f=>g(async()=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");if(Io(h))return;let p;try{p=await o.fetch(h,a)}catch(d){d.message=`${lt(this.configuration,h)}: ${d.message}`,r.reportExceptionOnce(d),c=d;return}p.checksum!=null?this.storedChecksums.set(h.locatorHash,p.checksum):this.storedChecksums.delete(h.locatorHash),p.releaseFs&&p.releaseFs()}).finally(()=>{u.tick()})))}),c)throw c}async linkEverything({cache:e,report:r,fetcher:i,mode:n}){var A,V,W;let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:r,skipIntegrityCheck:!0,cacheOptions:s},l=this.configuration.getLinkers(),c={project:this,report:r},u=new Map(l.map(X=>{let F=X.makeInstaller(c),D=F.getCustomDataKey(),he=this.installersCustomData.get(D);return typeof he!="undefined"&&F.attachCustomData(he),[X,F]})),g=new Map,f=new Map,h=new Map,p=new Map(await Promise.all([...this.accessibleLocators].map(async X=>{let F=this.storedPackages.get(X);if(!F)throw new Error("Assertion failed: The locator should have been registered");return[X,await o.fetch(F,a)]}))),d=[];for(let X of this.accessibleLocators){let F=this.storedPackages.get(X);if(typeof F=="undefined")throw new Error("Assertion failed: The locator should have been registered");let D=p.get(F.locatorHash);if(typeof D=="undefined")throw new Error("Assertion failed: The fetch result should have been registered");let he=[],pe=Pe=>{he.push(Pe)},Ne=this.tryWorkspaceByLocator(F);if(Ne!==null){let Pe=[],{scripts:qe}=Ne.manifest;for(let se of["preinstall","install","postinstall"])qe.has(se)&&Pe.push([Gn.SCRIPT,se]);try{for(let[se,be]of u)if(se.supportsPackage(F,c)&&(await be.installPackage(F,D,{holdFetchResult:pe})).buildDirective!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{he.length===0?(A=D.releaseFs)==null||A.call(D):d.push(Promise.all(he).catch(()=>{}).then(()=>{var se;(se=D.releaseFs)==null||se.call(D)}))}let re=v.join(D.packageFs.getRealPath(),D.prefixPath);f.set(F.locatorHash,re),!Io(F)&&Pe.length>0&&h.set(F.locatorHash,{directives:Pe,buildLocations:[re]})}else{let Pe=l.find(se=>se.supportsPackage(F,c));if(!Pe)throw new nt(z.LINKER_NOT_FOUND,`${lt(this.configuration,F)} isn't supported by any available linker`);let qe=u.get(Pe);if(!qe)throw new Error("Assertion failed: The installer should have been registered");let re;try{re=await qe.installPackage(F,D,{holdFetchResult:pe})}finally{he.length===0?(V=D.releaseFs)==null||V.call(D):d.push(Promise.all(he).then(()=>{}).then(()=>{var se;(se=D.releaseFs)==null||se.call(D)}))}g.set(F.locatorHash,Pe),f.set(F.locatorHash,re.packageLocation),re.buildDirective&&re.buildDirective.length>0&&re.packageLocation&&h.set(F.locatorHash,{directives:re.buildDirective,buildLocations:[re.packageLocation]})}}let m=new Map;for(let X of this.accessibleLocators){let F=this.storedPackages.get(X);if(!F)throw new Error("Assertion failed: The locator should have been registered");let D=this.tryWorkspaceByLocator(F)!==null,he=async(pe,Ne)=>{let Pe=f.get(F.locatorHash);if(typeof Pe=="undefined")throw new Error(`Assertion failed: The package (${lt(this.configuration,F)}) should have been registered`);let qe=[];for(let re of F.dependencies.values()){let se=this.storedResolutions.get(re.descriptorHash);if(typeof se=="undefined")throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,re)}, from ${lt(this.configuration,F)})should have been registered`);let be=this.storedPackages.get(se);if(typeof be=="undefined")throw new Error(`Assertion failed: The package (${se}, resolved from ${Xt(this.configuration,re)}) should have been registered`);let ae=this.tryWorkspaceByLocator(be)===null?g.get(se):null;if(typeof ae=="undefined")throw new Error(`Assertion failed: The package (${se}, resolved from ${Xt(this.configuration,re)}) should have been registered`);ae===pe||ae===null?f.get(be.locatorHash)!==null&&qe.push([re,be]):!D&&Pe!==null&&hu(m,se).push(Pe)}Pe!==null&&await Ne.attachInternalDependencies(F,qe)};if(D)for(let[pe,Ne]of u)pe.supportsPackage(F,c)&&await he(pe,Ne);else{let pe=g.get(F.locatorHash);if(!pe)throw new Error("Assertion failed: The linker should have been found");let Ne=u.get(pe);if(!Ne)throw new Error("Assertion failed: The installer should have been registered");await he(pe,Ne)}}for(let[X,F]of m){let D=this.storedPackages.get(X);if(!D)throw new Error("Assertion failed: The package should have been registered");let he=g.get(D.locatorHash);if(!he)throw new Error("Assertion failed: The linker should have been found");let pe=u.get(he);if(!pe)throw new Error("Assertion failed: The installer should have been registered");await pe.attachExternalDependents(D,F)}let I=new Map;for(let X of u.values()){let F=await X.finalizeInstall();for(let D of(W=F==null?void 0:F.records)!=null?W:[])h.set(D.locatorHash,{directives:D.buildDirective,buildLocations:D.buildLocations});typeof(F==null?void 0:F.customData)!="undefined"&&I.set(X.getCustomDataKey(),F.customData)}if(this.installersCustomData=I,await Promise.all(d),n===li.SkipBuild)return;let B=new Set(this.storedPackages.keys()),b=new Set(h.keys());for(let X of b)B.delete(X);let R=(0,t0.createHash)("sha512");R.update(process.versions.node),await this.configuration.triggerHook(X=>X.globalHashGeneration,this,X=>{R.update("\0"),R.update(X)});let H=R.digest("hex"),L=new Map,K=X=>{let F=L.get(X.locatorHash);if(typeof F!="undefined")return F;let D=this.storedPackages.get(X.locatorHash);if(typeof D=="undefined")throw new Error("Assertion failed: The package should have been registered");let he=(0,t0.createHash)("sha512");he.update(X.locatorHash),L.set(X.locatorHash,"");for(let pe of D.dependencies.values()){let Ne=this.storedResolutions.get(pe.descriptorHash);if(typeof Ne=="undefined")throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,pe)}) should have been registered`);let Pe=this.storedPackages.get(Ne);if(typeof Pe=="undefined")throw new Error("Assertion failed: The package should have been registered");he.update(K(Pe))}return F=he.digest("hex"),L.set(X.locatorHash,F),F},J=(X,F)=>{let D=(0,t0.createHash)("sha512");D.update(H),D.update(K(X));for(let he of F)D.update(he);return D.digest("hex")},ne=new Map,q=!1;for(;b.size>0;){let X=b.size,F=[];for(let D of b){let he=this.storedPackages.get(D);if(!he)throw new Error("Assertion failed: The package should have been registered");let pe=!0;for(let qe of he.dependencies.values()){let re=this.storedResolutions.get(qe.descriptorHash);if(!re)throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,qe)}) should have been registered`);if(b.has(re)){pe=!1;break}}if(!pe)continue;b.delete(D);let Ne=h.get(he.locatorHash);if(!Ne)throw new Error("Assertion failed: The build directive should have been registered");let Pe=J(he,Ne.buildLocations);if(this.storedBuildState.get(he.locatorHash)===Pe){ne.set(he.locatorHash,Pe);continue}q||(await this.persistInstallStateFile(),q=!0),this.storedBuildState.has(he.locatorHash)?r.reportInfo(z.MUST_REBUILD,`${lt(this.configuration,he)} must be rebuilt because its dependency tree changed`):r.reportInfo(z.MUST_BUILD,`${lt(this.configuration,he)} must be built because it never has been before or the last one failed`);for(let qe of Ne.buildLocations){if(!v.isAbsolute(qe))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${qe})`);F.push((async()=>{for(let[re,se]of Ne.directives){let be=`# This file contains the result of Yarn building a package (${is(he)}) -`;switch(re){case Gn.SCRIPT:be+=`# Script name: ${se} -`;break;case Gn.SHELLCODE:be+=`# Script code: ${se} -`;break}let ae=null;if(!await T.mktempPromise(async De=>{let $=v.join(De,"build.log"),{stdout:G,stderr:Ce}=this.configuration.getSubprocessStreams($,{header:be,prefix:lt(this.configuration,he),report:r}),ee;try{switch(re){case Gn.SCRIPT:ee=await Uw(he,se,[],{cwd:qe,project:this,stdin:ae,stdout:G,stderr:Ce});break;case Gn.SHELLCODE:ee=await rD(he,se,[],{cwd:qe,project:this,stdin:ae,stdout:G,stderr:Ce});break}}catch(Oe){Ce.write(Oe.stack),ee=1}if(G.end(),Ce.end(),ee===0)return ne.set(he.locatorHash,Pe),!0;T.detachTemp(De);let Ue=`${lt(this.configuration,he)} couldn't be built successfully (exit code ${Ve(this.configuration,ee,Le.NUMBER)}, logs can be found here: ${Ve(this.configuration,$,Le.PATH)})`;return this.optionalBuilds.has(he.locatorHash)?(r.reportInfo(z.BUILD_FAILED,Ue),ne.set(he.locatorHash,Pe),!0):(r.reportError(z.BUILD_FAILED,Ue),!1)}))return}})())}}if(await Promise.all(F),X===b.size){let D=Array.from(b).map(he=>{let pe=this.storedPackages.get(he);if(!pe)throw new Error("Assertion failed: The package should have been registered");return lt(this.configuration,pe)}).join(", ");r.reportError(z.CYCLIC_DEPENDENCIES,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${D})`);break}}this.storedBuildState=ne}async install(e){var a,l;let r=this.configuration.get("nodeLinker");(a=fe.telemetry)==null||a.reportInstall(r),await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(c=>c.validateProject,this,{reportWarning:e.report.reportWarning.bind(e.report),reportError:e.report.reportError.bind(e.report)})});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.status=ki.Inactive;let i=v.join(this.cwd,this.configuration.get("lockfileFilename")),n=null;if(e.immutable)try{n=await T.readFilePromise(i,"utf8")}catch(c){throw c.code==="ENOENT"?new nt(z.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been created by this install, which is explicitly forbidden."):c}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{for(let[,c]of this.configuration.packageExtensions)for(let[,u]of c)for(let g of u)if(g.userProvided){let f=Ve(this.configuration,g,Le.PACKAGE_EXTENSION);switch(g.status){case ki.Inactive:e.report.reportWarning(z.UNUSED_PACKAGE_EXTENSION,`${f}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case ki.Redundant:e.report.reportWarning(z.REDUNDANT_PACKAGE_EXTENSION,`${f}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(n!==null){let c=ul(n,this.generateLockfile());if(c!==n){let u=(0,v$.structuredPatch)(i,i,n,c);e.report.reportSeparator();for(let g of u.hunks){e.report.reportInfo(null,`@@ -${g.oldStart},${g.oldLines} +${g.newStart},${g.newLines} @@`);for(let f of g.lines)f.startsWith("+")?e.report.reportError(z.FROZEN_LOCKFILE_EXCEPTION,Ve(this.configuration,f,Le.ADDED)):f.startsWith("-")?e.report.reportError(z.FROZEN_LOCKFILE_EXCEPTION,Ve(this.configuration,f,Le.REMOVED)):e.report.reportInfo(null,Ve(this.configuration,f,"grey"))}throw e.report.reportSeparator(),new nt(z.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.userProvided&&g.status===ki.Active&&((l=fe.telemetry)==null||l.reportPackageExtension(Uu(g,Le.PACKAGE_EXTENSION)));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e),(typeof e.persistProject=="undefined"||e.persistProject)&&e.mode!==li.UpdateLockfile&&await this.cacheCleanup(e)});let s=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],o=await Promise.all(s.map(async c=>Iy(c,{cwd:this.cwd})));(typeof e.persistProject=="undefined"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode===li.UpdateLockfile){e.report.reportWarning(z.UPDATE_LOCKFILE_ONLY_SKIP_LINK,`Skipped due to ${Ve(this.configuration,"mode=update-lockfile",Le.CODE)}`);return}await this.linkEverything(e);let c=await Promise.all(s.map(async u=>Iy(u,{cwd:this.cwd})));for(let u=0;uc.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,s]of this.storedResolutions.entries()){let o=e.get(s);o||e.set(s,o=new Set),o.add(n)}let r={};r.__metadata={version:k$,cacheKey:void 0};for(let[n,s]of e.entries()){let o=this.originalPackages.get(n);if(!o)continue;let a=[];for(let f of s){let h=this.storedDescriptors.get(f);if(!h)throw new Error("Assertion failed: The descriptor should have been registered");a.push(h)}let l=a.map(f=>In(f)).sort().join(", "),c=new Ze;c.version=o.linkType===gt.HARD?o.version:"0.0.0-use.local",c.languageName=o.languageName,c.dependencies=new Map(o.dependencies),c.peerDependencies=new Map(o.peerDependencies),c.dependenciesMeta=new Map(o.dependenciesMeta),c.peerDependenciesMeta=new Map(o.peerDependenciesMeta),c.bin=new Map(o.bin);let u,g=this.storedChecksums.get(o.locatorHash);if(typeof g!="undefined"){let f=g.indexOf("/");if(f===-1)throw new Error("Assertion failed: Expected the checksum to reference its cache key");let h=g.slice(0,f),p=g.slice(f+1);typeof r.__metadata.cacheKey=="undefined"&&(r.__metadata.cacheKey=h),h===r.__metadata.cacheKey?u=p:u=g}r[l]=_(P({},c.exportTo({},{compatibilityMode:!1})),{linkType:o.linkType.toLowerCase(),resolution:is(o),checksum:u,conditions:o.conditions||void 0})}return`${[`# This file is generated by running "yarn install" inside your project. -`,`# Manual changes might be lost - proceed with caution! -`].join("")} -`+Qa(r)}async persistLockfile(){let e=v.join(this.cwd,this.configuration.get("lockfileFilename")),r="";try{r=await T.readFilePromise(e,"utf8")}catch(s){}let i=this.generateLockfile(),n=ul(r,i);n!==r&&(await T.writeFilePromise(e,n),this.lockFileChecksum=D$(n),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let o of Object.values(gF))e.push(...o);let r=(0,r0.default)(this,e),i=cF.default.serialize(r),n=zi(i);if(this.installStateChecksum===n)return;let s=this.configuration.get("installStatePath");await T.mkdirPromise(v.dirname(s),{recursive:!0}),await T.writeFilePromise(s,await aUe(i)),this.installStateChecksum=n}async restoreInstallState({restoreInstallersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:i=!0}={}){let n=this.configuration.get("installStatePath");if(!T.existsSync(n)){r&&await this.applyLightResolution();return}let s=await AUe(await T.readFilePromise(n));this.installStateChecksum=zi(s);let o=cF.default.deserialize(s);e&&typeof o.installersCustomData!="undefined"&&(this.installersCustomData=o.installersCustomData),i&&Object.assign(this,(0,r0.default)(o,gF.restoreBuildState)),r&&(o.lockFileChecksum===this.lockFileChecksum?(Object.assign(this,(0,r0.default)(o,gF.restoreResolutions)),this.refreshWorkspaceDependencies()):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new ei}),await this.persistInstallStateFile()}async persist(){await this.persistLockfile();for(let e of this.workspacesByCwd.values())await e.persistManifest()}async cacheCleanup({cache:e,report:r}){let i=new Set([".gitignore"]);if(!Fb(e.cwd,this.cwd)||!await T.existsPromise(e.cwd))return;let n=this.configuration.get("preferAggregateCacheInfo"),s=0,o=null;for(let a of await T.readdirPromise(e.cwd)){if(i.has(a))continue;let l=v.resolve(e.cwd,a);e.markedFiles.has(l)||(o=a,e.immutable?r.reportError(z.IMMUTABLE_CACHE,`${Ve(this.configuration,v.basename(l),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):(n?s+=1:r.reportInfo(z.UNUSED_CACHE_ENTRY,`${Ve(this.configuration,v.basename(l),"magenta")} appears to be unused - removing`),await T.removePromise(l)))}n&&s!==0&&r.reportInfo(z.UNUSED_CACHE_ENTRY,s>1?`${s} packages appeared to be unused and were removed`:`${o} appeared to be unused and was removed`),e.markedFiles.clear()}};function lUe({project:t,allDescriptors:e,allResolutions:r,allPackages:i,accessibleLocators:n=new Set,optionalBuilds:s=new Set,volatileDescriptors:o=new Set,peerRequirements:a=new Map,report:l,tolerateMissingPackages:c=!1}){var ne;let u=new Map,g=[],f=new Map,h=new Map,p=new Map,d=new Map,m=new Map,I=new Map(t.workspaces.map(q=>{let A=q.anchoredLocator.locatorHash,V=i.get(A);if(typeof V=="undefined"){if(c)return[A,null];throw new Error("Assertion failed: The workspace should have an associated package")}return[A,ap(V)]})),B=()=>{let q=T.mktempSync(),A=v.join(q,"stacktrace.log"),V=String(g.length+1).length,W=g.map((X,F)=>`${`${F+1}.`.padStart(V," ")} ${is(X)} -`).join("");throw T.writeFileSync(A,W),T.detachTemp(q),new nt(z.STACK_OVERFLOW_RESOLUTION,`Encountered a stack overflow when resolving peer dependencies; cf ${M.fromPortablePath(A)}`)},b=q=>{let A=r.get(q.descriptorHash);if(typeof A=="undefined")throw new Error("Assertion failed: The resolution should have been registered");let V=i.get(A);if(!V)throw new Error("Assertion failed: The package could not be found");return V},R=(q,A,V,{top:W,optional:X})=>{g.length>1e3&&B(),g.push(A);let F=H(q,A,V,{top:W,optional:X});return g.pop(),F},H=(q,A,V,{top:W,optional:X})=>{if(n.has(A.locatorHash))return;n.add(A.locatorHash),X||s.delete(A.locatorHash);let F=i.get(A.locatorHash);if(!F){if(c)return;throw new Error(`Assertion failed: The package (${lt(t.configuration,A)}) should have been registered`)}let D=[],he=[],pe=[],Ne=[],Pe=[];for(let re of Array.from(F.dependencies.values())){if(F.peerDependencies.has(re.identHash)&&F.locatorHash!==W)continue;if(hA(re))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");o.delete(re.descriptorHash);let se=X;if(!se){let ee=F.dependenciesMeta.get(St(re));if(typeof ee!="undefined"){let Ue=ee.get(null);typeof Ue!="undefined"&&Ue.optional&&(se=!0)}}let be=r.get(re.descriptorHash);if(!be){if(c)continue;throw new Error(`Assertion failed: The resolution (${Xt(t.configuration,re)}) should have been registered`)}let ae=I.get(be)||i.get(be);if(!ae)throw new Error(`Assertion failed: The package (${be}, resolved from ${Xt(t.configuration,re)}) should have been registered`);if(ae.peerDependencies.size===0){R(re,ae,new Map,{top:W,optional:se});continue}let Ae=u.get(ae.locatorHash);typeof Ae=="number"&&Ae>=2&&B();let De,$,G=new Set,Ce;he.push(()=>{De=kx(re,A.locatorHash),$=Px(ae,A.locatorHash),F.dependencies.delete(re.identHash),F.dependencies.set(De.identHash,De),r.set(De.descriptorHash,$.locatorHash),e.set(De.descriptorHash,De),i.set($.locatorHash,$),D.push([ae,De,$])}),pe.push(()=>{var ee;Ce=new Map;for(let Ue of $.peerDependencies.values()){let Oe=F.dependencies.get(Ue.identHash);if(!Oe&&cp(A,Ue)&&(Oe=q),(!Oe||Oe.range==="missing:")&&$.dependencies.has(Ue.identHash)){$.peerDependencies.delete(Ue.identHash);continue}Oe||(Oe=Yt(Ue,"missing:")),$.dependencies.set(Oe.identHash,Oe),hA(Oe)&&Pl(p,Oe.descriptorHash).add($.locatorHash),f.set(Oe.identHash,Oe),Oe.range==="missing:"&&G.add(Oe.identHash),Ce.set(Ue.identHash,(ee=V.get(Ue.identHash))!=null?ee:$.locatorHash)}$.dependencies=new Map(gn($.dependencies,([Ue,Oe])=>St(Oe)))}),Ne.push(()=>{if(!i.has($.locatorHash))return;let ee=u.get(ae.locatorHash),Ue=typeof ee!="undefined"?ee+1:1;u.set(ae.locatorHash,Ue),R(De,$,Ce,{top:W,optional:se}),u.set(ae.locatorHash,Ue-1)}),Pe.push(()=>{let ee=F.dependencies.get(re.identHash);if(typeof ee=="undefined")throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");let Ue=r.get(ee.descriptorHash);if(typeof Ue=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");if(Pl(m,Ue).add(A.locatorHash),!!i.has($.locatorHash)){for(let Oe of $.peerDependencies.values()){let vt=Ce.get(Oe.identHash);if(typeof vt=="undefined")throw new Error("Assertion failed: Expected the peer dependency ident to be registered");hu(pu(d,vt),St(Oe)).push($.locatorHash)}for(let Oe of G)$.dependencies.delete(Oe)}})}for(let re of[...he,...pe])re();let qe;do{qe=!0;for(let[re,se,be]of D){if(!i.has(be.locatorHash))continue;let ae=pu(h,re.locatorHash),Ae=zi(...[...be.dependencies.values()].map(Ce=>{let ee=Ce.range!=="missing:"?r.get(Ce.descriptorHash):"missing:";if(typeof ee=="undefined")throw new Error(`Assertion failed: Expected the resolution for ${Xt(t.configuration,Ce)} to have been registered`);return ee===W?`${ee} (top)`:ee}),se.identHash),De=ae.get(Ae);if(typeof De=="undefined"){ae.set(Ae,se);continue}if(De===se)continue;qe=!1,i.delete(be.locatorHash),e.delete(se.descriptorHash),r.delete(se.descriptorHash),n.delete(be.locatorHash);let $=p.get(se.descriptorHash)||[],G=[F.locatorHash,...$];p.delete(se.descriptorHash);for(let Ce of G){let ee=i.get(Ce);typeof ee!="undefined"&&ee.dependencies.set(se.identHash,De)}}}while(!qe);for(let re of[...Ne,...Pe])re()};for(let q of t.workspaces){let A=q.anchoredLocator;o.delete(q.anchoredDescriptor.descriptorHash),R(q.anchoredDescriptor,A,new Map,{top:A.locatorHash,optional:!1})}var L;(function(V){V[V.NotProvided=0]="NotProvided",V[V.NotCompatible=1]="NotCompatible"})(L||(L={}));let K=[];for(let[q,A]of m){let V=i.get(q);if(typeof V=="undefined")throw new Error("Assertion failed: Expected the root to be registered");let W=d.get(q);if(typeof W!="undefined")for(let X of A){let F=i.get(X);if(typeof F!="undefined")for(let[D,he]of W){let pe=En(D);if(F.peerDependencies.has(pe.identHash))continue;let Ne=`p${zi(X,D,q).slice(0,5)}`;a.set(Ne,{subject:X,requested:pe,rootRequester:q,allRequesters:he});let Pe=V.dependencies.get(pe.identHash);if(typeof Pe!="undefined"){let qe=b(Pe),re=(ne=qe.version)!=null?ne:"0.0.0",se=new Set;for(let ae of he){let Ae=i.get(ae);if(typeof Ae=="undefined")throw new Error("Assertion failed: Expected the link to be registered");let De=Ae.peerDependencies.get(pe.identHash);if(typeof De=="undefined")throw new Error("Assertion failed: Expected the ident to be registered");se.add(De.range)}[...se].every(ae=>{if(ae.startsWith(Yr.protocol)){if(!t.tryWorkspaceByLocator(qe))return!1;ae=ae.slice(Yr.protocol.length),(ae==="^"||ae==="~")&&(ae="*")}return lc(re,ae)})||K.push({type:1,subject:F,requested:pe,requester:V,version:re,hash:Ne,requirementCount:he.length})}else{let qe=V.peerDependenciesMeta.get(D);(qe==null?void 0:qe.optional)||K.push({type:0,subject:F,requested:pe,requester:V,hash:Ne})}}}}let J=[q=>Rx(q.subject),q=>St(q.requested),q=>`${q.type}`];for(let q of gn(K,J))switch(q.type){case 0:l==null||l.reportWarning(z.MISSING_PEER_DEPENDENCY,`${lt(t.configuration,q.subject)} doesn't provide ${Vr(t.configuration,q.requested)} (${Ve(t.configuration,q.hash,Le.CODE)}), requested by ${Vr(t.configuration,q.requester)}`);break;case 1:{let A=q.requirementCount>1?"and some of its descendants request":"requests";l==null||l.reportWarning(z.INCOMPATIBLE_PEER_DEPENDENCY,`${lt(t.configuration,q.subject)} provides ${Vr(t.configuration,q.requested)} (${Ve(t.configuration,q.hash,Le.CODE)}) with version ${fp(t.configuration,q.version)}, which doesn't satisfy what ${Vr(t.configuration,q.requester)} ${A}`)}break}K.length>0&&(l==null||l.reportWarning(z.UNNAMED,`Some peer dependencies are incorrectly met; run ${Ve(t.configuration,"yarn explain peer-requirements ",Le.CODE)} for details, where ${Ve(t.configuration,"",Le.CODE)} is the six-letter p-prefixed code`))}var Po;(function(l){l.VERSION="version",l.COMMAND_NAME="commandName",l.PLUGIN_NAME="pluginName",l.INSTALL_COUNT="installCount",l.PROJECT_COUNT="projectCount",l.WORKSPACE_COUNT="workspaceCount",l.DEPENDENCY_COUNT="dependencyCount",l.EXTENSION="packageExtension"})(Po||(Po={}));var Rd=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.configuration=e;let i=this.getRegistryPath();this.isNew=!T.existsSync(i),this.sendReport(r),this.startBuffer()}reportVersion(e){this.reportValue(Po.VERSION,e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue(Po.COMMAND_NAME,e||"")}reportPluginName(e){this.reportValue(Po.PLUGIN_NAME,e)}reportProject(e){this.reportEnumerator(Po.PROJECT_COUNT,e)}reportInstall(e){this.reportHit(Po.INSTALL_COUNT,e)}reportPackageExtension(e){this.reportValue(Po.EXTENSION,e)}reportWorkspaceCount(e){this.reportValue(Po.WORKSPACE_COUNT,String(e))}reportDependencyCount(e){this.reportValue(Po.DEPENDENCY_COUNT,String(e))}reportValue(e,r){Pl(this.values,e).add(r)}reportEnumerator(e,r){Pl(this.enumerators,e).add(zi(r))}reportHit(e,r="*"){let i=pu(this.hits,e),n=na(i,r,()=>0);i.set(r,n+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return v.join(e,"telemetry.json")}sendReport(e){var u,g,f;let r=this.getRegistryPath(),i;try{i=T.readJsonSync(r)}catch{i={}}let n=Date.now(),s=this.configuration.get("telemetryInterval")*24*60*60*1e3,a=((u=i.lastUpdate)!=null?u:n+s+Math.floor(s*Math.random()))+s;if(a>n&&i.lastUpdate!=null)return;try{T.mkdirSync(v.dirname(r),{recursive:!0}),T.writeJsonSync(r,{lastUpdate:n})}catch{return}if(a>n||!i.blocks)return;let l=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,c=h=>iP(l,h,{configuration:this.configuration}).catch(()=>{});for(let[h,p]of Object.entries((g=i.blocks)!=null?g:{})){if(Object.keys(p).length===0)continue;let d=p;d.userId=h,d.reportType="primary";for(let B of Object.keys((f=d.enumerators)!=null?f:{}))d.enumerators[B]=d.enumerators[B].length;c(d);let m=new Map,I=20;for(let[B,b]of Object.entries(d.values))b.length>0&&m.set(B,b.slice(0,I));for(;m.size>0;){let B={};B.userId=h,B.reportType="secondary",B.metrics={};for(let[b,R]of m)B.metrics[b]=R.shift(),R.length===0&&m.delete(b);c(B)}}}applyChanges(){var o,a,l,c,u,g,f,h,p;let e=this.getRegistryPath(),r;try{r=T.readJsonSync(e)}catch{r={}}let i=(o=this.configuration.get("telemetryUserId"))!=null?o:"*",n=r.blocks=(a=r.blocks)!=null?a:{},s=n[i]=(l=n[i])!=null?l:{};for(let d of this.hits.keys()){let m=s.hits=(c=s.hits)!=null?c:{},I=m[d]=(u=m[d])!=null?u:{};for(let[B,b]of this.hits.get(d))I[B]=((g=I[B])!=null?g:0)+b}for(let d of["values","enumerators"])for(let m of this[d].keys()){let I=s[d]=(f=s[d])!=null?f:{};I[m]=[...new Set([...(h=I[m])!=null?h:[],...(p=this[d].get(m))!=null?p:[]])]}T.mkdirSync(v.dirname(e),{recursive:!0}),T.writeJsonSync(e,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}};var fF=ie(require("child_process")),R$=ie(ml());var hF=ie(require("fs"));var Yg=new Map([["constraints",[["constraints","query"],["constraints","source"],["constraints"]]],["exec",[]],["interactive-tools",[["search"],["upgrade-interactive"]]],["stage",[["stage"]]],["typescript",[]],["version",[["version","apply"],["version","check"],["version"]]],["workspace-tools",[["workspaces","focus"],["workspaces","foreach"]]]]);function cUe(t){let e=M.fromPortablePath(t);process.on("SIGINT",()=>{}),e?(0,fF.execFileSync)(process.execPath,[e,...process.argv.slice(2)],{stdio:"inherit",env:_(P({},process.env),{YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"})}):(0,fF.execFileSync)(e,process.argv.slice(2),{stdio:"inherit",env:_(P({},process.env),{YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"})})}async function i0({binaryVersion:t,pluginConfiguration:e}){async function r(){let n=new oo({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:t});try{await i(n)}catch(s){process.stdout.write(n.error(s)),process.exitCode=1}}async function i(n){var p,d,m,I,B;let s=process.versions.node,o=">=12 <14 || 14.2 - 14.9 || >14.10.0";if(process.env.YARN_IGNORE_NODE!=="1"&&!qt.satisfiesWithPrereleases(s,o))throw new me(`This tool requires a Node version compatible with ${o} (got ${s}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);let a=await fe.find(M.toPortablePath(process.cwd()),e,{usePath:!0,strict:!1}),l=a.get("yarnPath"),c=a.get("ignorePath"),u=a.get("ignoreCwd"),g=M.toPortablePath(M.resolve(process.argv[1])),f=b=>T.readFilePromise(b).catch(()=>Buffer.of());if(!c&&!u&&await(async()=>l===g||Buffer.compare(...await Promise.all([f(l),f(g)]))===0)()){process.env.YARN_IGNORE_PATH="1",process.env.YARN_IGNORE_CWD="1",await i(n);return}else if(l!==null&&!c)if(!T.existsSync(l))process.stdout.write(n.error(new Error(`The "yarn-path" option has been set (in ${a.sources.get("yarnPath")}), but the specified location doesn't exist (${l}).`))),process.exitCode=1;else try{cUe(l)}catch(b){process.exitCode=b.code||1}else{c&&delete process.env.YARN_IGNORE_PATH,a.get("enableTelemetry")&&!R$.isCI&&process.stdout.isTTY&&(fe.telemetry=new Rd(a,"puba9cdc10ec5790a2cf4969dd413a47270")),(p=fe.telemetry)==null||p.reportVersion(t);for(let[L,K]of a.plugins.entries()){Yg.has((m=(d=L.match(/^@yarnpkg\/plugin-(.*)$/))==null?void 0:d[1])!=null?m:"")&&((I=fe.telemetry)==null||I.reportPluginName(L));for(let J of K.commands||[])n.register(J)}let R=n.process(process.argv.slice(2));R.help||(B=fe.telemetry)==null||B.reportCommandName(R.path.join(" "));let H=R.cwd;if(typeof H!="undefined"&&!u){let L=(0,hF.realpathSync)(process.cwd()),K=(0,hF.realpathSync)(H);if(L!==K){process.chdir(H),await r();return}}await n.runExit(R,{cwd:M.toPortablePath(process.cwd()),plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr})}}return r().catch(n=>{process.stdout.write(n.stack||n.message),process.exitCode=1}).finally(()=>T.rmtempPromise())}function F$(t){t.Command.Path=(...e)=>r=>{r.paths=r.paths||[],r.paths.push(e)};for(let e of["Array","Boolean","String","Proxy","Rest","Counter"])t.Command[e]=(...r)=>(i,n)=>{let s=t.Option[e](...r);Object.defineProperty(i,`__${n}`,{configurable:!1,enumerable:!0,get(){return s},set(o){this[n]=o}})};return t}var iC={};it(iC,{BaseCommand:()=>Be,WorkspaceRequiredError:()=>rt,getDynamicLibs:()=>Wie,getPluginConfiguration:()=>F0,main:()=>i0,openWorkspace:()=>rf,pluginCommands:()=>Yg});var Be=class extends ye{constructor(){super(...arguments);this.cwd=Y.String("--cwd",{hidden:!0})}};var rt=class extends me{constructor(e,r){let i=v.relative(e,r),n=v.join(e,Ze.fileName);super(`This command can only be run from within a workspace of your project (${i} isn't a workspace of ${n}).`)}};var dJe=ie(Or());Ss();var CJe=ie(gN()),Wie=()=>new Map([["@yarnpkg/cli",iC],["@yarnpkg/core",Fd],["@yarnpkg/fslib",ch],["@yarnpkg/libzip",Fp],["@yarnpkg/parsers",Hp],["@yarnpkg/shell",jp],["clipanion",vh],["semver",dJe],["typanion",lu],["yup",CJe]]);async function rf(t,e){let{project:r,workspace:i}=await Ke.find(t,e);if(!i)throw new rt(r.cwd,e);return i}var x_e=ie(Or());Ss();var k_e=ie(gN());var hL={};it(hL,{dedupeUtils:()=>zN,default:()=>Qze,suggestUtils:()=>LN});var WAe=ie(ml());var roe=ie(aC());Ss();var LN={};it(LN,{Modifier:()=>Lo,Strategy:()=>Fr,Target:()=>vr,WorkspaceModifier:()=>af,applyModifier:()=>Zse,extractDescriptorFromPath:()=>ON,extractRangeModifier:()=>Xse,fetchDescriptorFrom:()=>MN,findProjectDescriptors:()=>toe,getModifier:()=>AC,getSuggestedDescriptors:()=>lC,makeWorkspaceDescriptor:()=>eoe,toWorkspaceModifier:()=>$se});var TN=ie(Or()),L3e="workspace:",vr;(function(i){i.REGULAR="dependencies",i.DEVELOPMENT="devDependencies",i.PEER="peerDependencies"})(vr||(vr={}));var Lo;(function(i){i.CARET="^",i.TILDE="~",i.EXACT=""})(Lo||(Lo={}));var af;(function(i){i.CARET="^",i.TILDE="~",i.EXACT="*"})(af||(af={}));var Fr;(function(s){s.KEEP="keep",s.REUSE="reuse",s.PROJECT="project",s.LATEST="latest",s.CACHE="cache"})(Fr||(Fr={}));function AC(t,e){return t.exact?Lo.EXACT:t.caret?Lo.CARET:t.tilde?Lo.TILDE:e.configuration.get("defaultSemverRangePrefix")}var T3e=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function Xse(t,{project:e}){let r=t.match(T3e);return r?r[1]:e.configuration.get("defaultSemverRangePrefix")}function Zse(t,e){let{protocol:r,source:i,params:n,selector:s}=S.parseRange(t.range);return TN.default.valid(s)&&(s=`${e}${t.range}`),S.makeDescriptor(t,S.makeRange({protocol:r,source:i,params:n,selector:s}))}function $se(t){switch(t){case Lo.CARET:return af.CARET;case Lo.TILDE:return af.TILDE;case Lo.EXACT:return af.EXACT;default:throw new Error(`Assertion failed: Unknown modifier: "${t}"`)}}function eoe(t,e){return S.makeDescriptor(t.anchoredDescriptor,`${L3e}${$se(e)}`)}async function toe(t,{project:e,target:r}){let i=new Map,n=s=>{let o=i.get(s.descriptorHash);return o||i.set(s.descriptorHash,o={descriptor:s,locators:[]}),o};for(let s of e.workspaces)if(r===vr.PEER){let o=s.manifest.peerDependencies.get(t.identHash);o!==void 0&&n(o).locators.push(s.locator)}else{let o=s.manifest.dependencies.get(t.identHash),a=s.manifest.devDependencies.get(t.identHash);r===vr.DEVELOPMENT?a!==void 0?n(a).locators.push(s.locator):o!==void 0&&n(o).locators.push(s.locator):o!==void 0?n(o).locators.push(s.locator):a!==void 0&&n(a).locators.push(s.locator)}return i}async function ON(t,{cwd:e,workspace:r}){return await M3e(async i=>{v.isAbsolute(t)||(t=v.relative(r.cwd,v.resolve(e,t)),t.match(/^\.{0,2}\//)||(t=`./${t}`));let{project:n}=r,s=await MN(S.makeIdent(null,"archive"),t,{project:r.project,cache:i,workspace:r});if(!s)throw new Error("Assertion failed: The descriptor should have been found");let o=new ei,a=n.configuration.makeResolver(),l=n.configuration.makeFetcher(),c={checksums:n.storedChecksums,project:n,cache:i,fetcher:l,report:o,resolver:a},u=a.bindDescriptor(s,r.anchoredLocator,c),g=S.convertDescriptorToLocator(u),f=await l.fetch(g,c),h=await Ze.find(f.prefixPath,{baseFs:f.packageFs});if(!h.name)throw new Error("Target path doesn't have a name");return S.makeDescriptor(h.name,t)})}async function lC(t,{project:e,workspace:r,cache:i,target:n,modifier:s,strategies:o,maxResults:a=Infinity}){if(!(a>=0))throw new Error(`Invalid maxResults (${a})`);if(t.range!=="unknown")return{suggestions:[{descriptor:t,name:`Use ${S.prettyDescriptor(e.configuration,t)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let l=typeof r!="undefined"&&r!==null&&r.manifest[n].get(t.identHash)||null,c=[],u=[],g=async f=>{try{await f()}catch(h){u.push(h)}};for(let f of o){if(c.length>=a)break;switch(f){case Fr.KEEP:await g(async()=>{l&&c.push({descriptor:l,name:`Keep ${S.prettyDescriptor(e.configuration,l)}`,reason:"(no changes)"})});break;case Fr.REUSE:await g(async()=>{for(let{descriptor:h,locators:p}of(await toe(t,{project:e,target:n})).values()){if(p.length===1&&p[0].locatorHash===r.anchoredLocator.locatorHash&&o.includes(Fr.KEEP))continue;let d=`(originally used by ${S.prettyLocator(e.configuration,p[0])}`;d+=p.length>1?` and ${p.length-1} other${p.length>2?"s":""})`:")",c.push({descriptor:h,name:`Reuse ${S.prettyDescriptor(e.configuration,h)}`,reason:d})}});break;case Fr.CACHE:await g(async()=>{for(let h of e.storedDescriptors.values())h.identHash===t.identHash&&c.push({descriptor:h,name:`Reuse ${S.prettyDescriptor(e.configuration,h)}`,reason:"(already used somewhere in the lockfile)"})});break;case Fr.PROJECT:await g(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let h=e.tryWorkspaceByIdent(t);if(h===null)return;let p=eoe(h,s);c.push({descriptor:p,name:`Attach ${S.prettyDescriptor(e.configuration,p)}`,reason:`(local workspace at ${ue.pretty(e.configuration,h.relativeCwd,ue.Type.PATH)})`})});break;case Fr.LATEST:await g(async()=>{if(t.range!=="unknown")c.push({descriptor:t,name:`Use ${S.prettyRange(e.configuration,t.range)}`,reason:"(explicit range requested)"});else if(n===vr.PEER)c.push({descriptor:S.makeDescriptor(t,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!e.configuration.get("enableNetwork"))c.push({descriptor:null,name:"Resolve from latest",reason:ue.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let h=await MN(t,"latest",{project:e,cache:i,workspace:r,preserveModifier:!1});h&&(h=Zse(h,s),c.push({descriptor:h,name:`Use ${S.prettyDescriptor(e.configuration,h)}`,reason:"(resolved from latest)"}))}});break}}return{suggestions:c.slice(0,a),rejections:u.slice(0,a)}}async function MN(t,e,{project:r,cache:i,workspace:n,preserveModifier:s=!0}){let o=S.makeDescriptor(t,e),a=new ei,l=r.configuration.makeFetcher(),c=r.configuration.makeResolver(),u={project:r,fetcher:l,cache:i,checksums:r.storedChecksums,report:a,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},g=_(P({},u),{resolver:c,fetchOptions:u}),f=c.bindDescriptor(o,n.anchoredLocator,g),h=await c.getCandidates(f,new Map,g);if(h.length===0)return null;let p=h[0],{protocol:d,source:m,params:I,selector:B}=S.parseRange(S.convertToManifestRange(p.reference));if(d===r.configuration.get("defaultProtocol")&&(d=null),TN.default.valid(B)&&s!==!1){let b=typeof s=="string"?s:o.range;B=Xse(b,{project:r})+B}return S.makeDescriptor(p,S.makeRange({protocol:d,source:m,params:I,selector:B}))}async function M3e(t){return await T.mktempPromise(async e=>{let r=fe.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Qt(e,{configuration:r,check:!1,immutable:!1}))})}var cC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.exact=Y.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=Y.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=Y.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=Y.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=Y.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=Y.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=Y.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=Y.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=Y.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.silent=Y.Boolean("--silent",{hidden:!0});this.packages=Y.Rest()}async execute(){var d;let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=(d=this.interactive)!=null?d:e.get("preferInteractive"),o=AC(this,r),a=[...s?[Fr.REUSE]:[],Fr.PROJECT,...this.cached?[Fr.CACHE]:[],Fr.LATEST],l=s?Infinity:1,c=await Promise.all(this.packages.map(async m=>{let I=m.match(/^\.{0,2}\//)?await ON(m,{cwd:this.context.cwd,workspace:i}):S.parseDescriptor(m),B=O3e(i,I,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional}),b=await lC(I,{project:r,workspace:i,cache:n,target:B,modifier:o,strategies:a,maxResults:l});return[I,b,B]})),u=await Fa.start({configuration:e,stdout:this.context.stdout,suggestInstall:!1},async m=>{for(let[I,{suggestions:B,rejections:b}]of c)if(B.filter(H=>H.descriptor!==null).length===0){let[H]=b;if(typeof H=="undefined")throw new Error("Assertion failed: Expected an error to have been set");r.configuration.get("enableNetwork")?m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} can't be resolved to a satisfying range`):m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),m.reportSeparator(),m.reportExceptionOnce(H)}});if(u.hasErrors())return u.exitCode();let g=!1,f=[],h=[];for(let[,{suggestions:m},I]of c){let B,b=m.filter(K=>K.descriptor!==null),R=b[0].descriptor,H=b.every(K=>S.areDescriptorsEqual(K.descriptor,R));b.length===1||H?B=R:(g=!0,{answer:B}=await(0,roe.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:m.map(({descriptor:K,name:J,reason:ne})=>K?{name:J,hint:ne,descriptor:K}:{name:J,hint:ne,disabled:!0}),onCancel:()=>process.exit(130),result(K){return this.find(K,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let L=i.manifest[I].get(B.identHash);(typeof L=="undefined"||L.descriptorHash!==B.descriptorHash)&&(i.manifest[I].set(B.identHash,B),this.optional&&(I==="dependencies"?i.manifest.ensureDependencyMeta(_(P({},B),{range:"unknown"})).optional=!0:I==="peerDependencies"&&(i.manifest.ensurePeerDependencyMeta(_(P({},B),{range:"unknown"})).optional=!0)),typeof L=="undefined"?f.push([i,I,B,a]):h.push([i,I,L,B]))}return await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyAddition,f),await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyReplacement,h),g&&this.context.stdout.write(` -`),(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!this.context.quiet},async m=>{await r.install({cache:n,report:m,mode:this.mode})})).exitCode()}};cC.paths=[["add"]],cC.usage=ye.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/features/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"]]});var ioe=cC;function O3e(t,e,{dev:r,peer:i,preferDev:n,optional:s}){let o=t.manifest[vr.REGULAR].has(e.identHash),a=t.manifest[vr.DEVELOPMENT].has(e.identHash),l=t.manifest[vr.PEER].has(e.identHash);if((r||i)&&o)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!i&&l)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(s&&a)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(s&&!i&&l)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||n)&&s)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);return i?vr.PEER:r||n?vr.DEVELOPMENT:o?vr.REGULAR:a?vr.DEVELOPMENT:vr.REGULAR}var uC=class extends Be{constructor(){super(...arguments);this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=Y.String({required:!1})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,locator:i}=await Ke.find(e,this.context.cwd);if(await r.restoreInstallState(),this.name){let o=(await Kt.getPackageAccessibleBinaries(i,{project:r})).get(this.name);if(!o)throw new me(`Couldn't find a binary named "${this.name}" for package "${S.prettyLocator(e,i)}"`);let[,a]=o;return this.context.stdout.write(`${a} -`),0}return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async s=>{let o=await Kt.getPackageAccessibleBinaries(i,{project:r}),l=Array.from(o.keys()).reduce((c,u)=>Math.max(c,u.length),0);for(let[c,[u,g]]of o)s.reportJson({name:c,source:S.stringifyIdent(u),path:g});if(this.verbose)for(let[c,[u]]of o)s.reportInfo(null,`${c.padEnd(l," ")} ${S.prettyLocator(e,u)}`);else for(let c of o.keys())s.reportInfo(null,c)})).exitCode()}};uC.paths=[["bin"]],uC.usage=ye.Usage({description:"get the path to a binary script",details:` - When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. - - When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. - `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]});var noe=uC;var gC=class extends Be{constructor(){super(...arguments);this.mirror=Y.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=Y.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=await Qt.find(e);return(await Fe.start({configuration:e,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&r.mirrorCwd!==null,s=!this.mirror;n&&(await T.removePromise(r.mirrorCwd),await e.triggerHook(o=>o.cleanGlobalArtifacts,e)),s&&await T.removePromise(r.cwd)})).exitCode()}};gC.paths=[["cache","clean"],["cache","clear"]],gC.usage=ye.Usage({description:"remove the shared cache files",details:` - This command will remove all the files from the cache. - `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]});var soe=gC;var ooe=ie(p0()),KN=ie(require("util")),fC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=Y.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=this.name.replace(/[.[].*$/,""),i=this.name.replace(/^[^.[]*/,"");if(typeof e.settings.get(r)=="undefined")throw new me(`Couldn't find a configuration settings named "${r}"`);let s=e.getSpecial(r,{hideSecrets:!this.unsafe,getNativePaths:!0}),o=de.convertMapsToIndexableObjects(s),a=i?(0,ooe.default)(o,i):o,l=await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async c=>{c.reportJson(a)});if(!this.json){if(typeof a=="string")return this.context.stdout.write(`${a} -`),l.exitCode();KN.inspect.styles.name="cyan",this.context.stdout.write(`${(0,KN.inspect)(a,{depth:Infinity,colors:e.get("enableColors"),compact:!1})} -`)}return l.exitCode()}};fC.paths=[["config","get"]],fC.usage=ye.Usage({description:"read a configuration settings",details:` - This command will print a configuration setting. - - Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. - `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]});var aoe=fC;var Eae=ie(qN()),Iae=ie(p0()),yae=ie(mae()),JN=ie(require("util")),pC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=Y.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=Y.String();this.value=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=()=>{if(!e.projectCwd)throw new me("This command must be run from within a project folder");return e.projectCwd},i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof e.settings.get(i)=="undefined")throw new me(`Couldn't find a configuration settings named "${i}"`);if(i==="enableStrictSettings")throw new me("This setting only affects the file it's in, and thus cannot be set from the CLI");let o=this.json?JSON.parse(this.value):this.value;await(this.home?h=>fe.updateHomeConfiguration(h):h=>fe.updateConfiguration(r(),h))(h=>{if(n){let p=(0,Eae.default)(h);return(0,yae.default)(p,this.name,o),p}else return _(P({},h),{[i]:o})});let c=(await fe.find(this.context.cwd,this.context.plugins)).getSpecial(i,{hideSecrets:!0,getNativePaths:!0}),u=de.convertMapsToIndexableObjects(c),g=n?(0,Iae.default)(u,n):u;return(await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async h=>{JN.inspect.styles.name="cyan",h.reportInfo(z.UNNAMED,`Successfully set ${this.name} to ${(0,JN.inspect)(g,{depth:Infinity,colors:e.get("enableColors"),compact:!1})}`)})).exitCode()}};pC.paths=[["config","set"]],pC.usage=ye.Usage({description:"change a configuration settings",details:` - This command will set a configuration setting. - - When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). - - When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. - `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]});var wae=pC;var Dae=ie(qN()),Rae=ie(Ld()),Fae=ie(Pae()),dC=class extends Be{constructor(){super(...arguments);this.home=Y.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=()=>{if(!e.projectCwd)throw new me("This command must be run from within a project folder");return e.projectCwd},i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof e.settings.get(i)=="undefined")throw new me(`Couldn't find a configuration settings named "${i}"`);let o=this.home?l=>fe.updateHomeConfiguration(l):l=>fe.updateConfiguration(r(),l);return(await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async l=>{let c=!1;await o(u=>{if(!(0,Rae.default)(u,this.name))return l.reportWarning(z.UNNAMED,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),c=!0,u;let g=n?(0,Dae.default)(u):P({},u);return(0,Fae.default)(g,this.name),g}),c||l.reportInfo(z.UNNAMED,`Successfully unset ${this.name}`)})).exitCode()}};dC.paths=[["config","unset"]],dC.usage=ye.Usage({description:"unset a configuration setting",details:` - This command will unset a configuration setting. - `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]});var Nae=dC;var WN=ie(require("util")),CC=class extends Be{constructor(){super(...arguments);this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Print the setting description on top of the regular key/value information"});this.why=Y.Boolean("--why",!1,{description:"Print the reason why a setting is set a particular way"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins,{strict:!1});return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{if(e.invalid.size>0&&!this.json){for(let[n,s]of e.invalid)i.reportError(z.INVALID_CONFIGURATION_KEY,`Invalid configuration key "${n}" in ${s}`);i.reportSeparator()}if(this.json){let n=de.sortMap(e.settings.keys(),s=>s);for(let s of n){let o=e.settings.get(s),a=e.getSpecial(s,{hideSecrets:!0,getNativePaths:!0}),l=e.sources.get(s);this.verbose?i.reportJson({key:s,effective:a,source:l}):i.reportJson(P({key:s,effective:a,source:l},o))}}else{let n=de.sortMap(e.settings.keys(),a=>a),s=n.reduce((a,l)=>Math.max(a,l.length),0),o={breakLength:Infinity,colors:e.get("enableColors"),maxArrayLength:2};if(this.why||this.verbose){let a=n.map(c=>{let u=e.settings.get(c);if(!u)throw new Error(`Assertion failed: This settings ("${c}") should have been registered`);let g=this.why?e.sources.get(c)||"":u.description;return[c,g]}),l=a.reduce((c,[,u])=>Math.max(c,u.length),0);for(let[c,u]of a)i.reportInfo(null,`${c.padEnd(s," ")} ${u.padEnd(l," ")} ${(0,WN.inspect)(e.getSpecial(c,{hideSecrets:!0,getNativePaths:!0}),o)}`)}else for(let a of n)i.reportInfo(null,`${a.padEnd(s," ")} ${(0,WN.inspect)(e.getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),o)}`)}})).exitCode()}};CC.paths=[["config"]],CC.usage=ye.Usage({description:"display the current configuration",details:` - This command prints the current active configuration settings. - `,examples:[["Print the active configuration settings","$0 config"]]});var Lae=CC;Ss();var zN={};it(zN,{Strategy:()=>Oc,acceptedStrategies:()=>H4e,dedupe:()=>VN});var Tae=ie(Nn()),Oc;(function(e){e.HIGHEST="highest"})(Oc||(Oc={}));var H4e=new Set(Object.values(Oc)),G4e={highest:async(t,e,{resolver:r,fetcher:i,resolveOptions:n,fetchOptions:s})=>{let o=new Map;for(let[a,l]of t.storedResolutions){let c=t.storedDescriptors.get(a);if(typeof c=="undefined")throw new Error(`Assertion failed: The descriptor (${a}) should have been registered`);de.getSetWithDefault(o,c.identHash).add(l)}return Array.from(t.storedDescriptors.values(),async a=>{if(e.length&&!Tae.default.isMatch(S.stringifyIdent(a),e))return null;let l=t.storedResolutions.get(a.descriptorHash);if(typeof l=="undefined")throw new Error(`Assertion failed: The resolution (${a.descriptorHash}) should have been registered`);let c=t.originalPackages.get(l);if(typeof c=="undefined"||!r.shouldPersistResolution(c,n))return null;let u=o.get(a.identHash);if(typeof u=="undefined")throw new Error(`Assertion failed: The resolutions (${a.identHash}) should have been registered`);if(u.size===1)return null;let g=[...u].map(m=>{let I=t.originalPackages.get(m);if(typeof I=="undefined")throw new Error(`Assertion failed: The package (${m}) should have been registered`);return I.reference}),f=await r.getSatisfying(a,g,n),h=f==null?void 0:f[0];if(typeof h=="undefined")return null;let p=h.locatorHash,d=t.originalPackages.get(p);if(typeof d=="undefined")throw new Error(`Assertion failed: The package (${p}) should have been registered`);return p===l?null:{descriptor:a,currentPackage:c,updatedPackage:d}})}};async function VN(t,{strategy:e,patterns:r,cache:i,report:n}){let{configuration:s}=t,o=new ei,a=s.makeResolver(),l=s.makeFetcher(),c={cache:i,checksums:t.storedChecksums,fetcher:l,project:t,report:o,skipIntegrityCheck:!0,cacheOptions:{skipIntegrityCheck:!0}},u={project:t,resolver:a,report:o,fetchOptions:c};return await n.startTimerPromise("Deduplication step",async()=>{let f=await G4e[e](t,r,{resolver:a,resolveOptions:u,fetcher:l,fetchOptions:c}),h=Xi.progressViaCounter(f.length);n.reportProgress(h);let p=0;await Promise.all(f.map(I=>I.then(B=>{if(B===null)return;p++;let{descriptor:b,currentPackage:R,updatedPackage:H}=B;n.reportInfo(z.UNNAMED,`${S.prettyDescriptor(s,b)} can be deduped from ${S.prettyLocator(s,R)} to ${S.prettyLocator(s,H)}`),n.reportJson({descriptor:S.stringifyDescriptor(b),currentResolution:S.stringifyLocator(R),updatedResolution:S.stringifyLocator(H)}),t.storedResolutions.set(b.descriptorHash,H.locatorHash)}).finally(()=>h.tick())));let d;switch(p){case 0:d="No packages";break;case 1:d="One package";break;default:d=`${p} packages`}let m=ue.pretty(s,e,ue.Type.CODE);return n.reportInfo(z.UNNAMED,`${d} can be deduped using the ${m} strategy`),p})}var mC=class extends Be{constructor(){super(...arguments);this.strategy=Y.String("-s,--strategy",Oc.HIGHEST,{description:"The strategy to use when deduping dependencies",validator:Yi(Oc)});this.check=Y.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=await Qt.find(e);await r.restoreInstallState({restoreResolutions:!1});let n=0,s=await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout,json:this.json},async o=>{n=await VN(r,{strategy:this.strategy,patterns:this.patterns,cache:i,report:o})});return s.hasErrors()?s.exitCode():this.check?n?1:0:(await Fe.start({configuration:e,stdout:this.context.stdout,json:this.json},async a=>{await r.install({cache:i,report:a,mode:this.mode})})).exitCode()}};mC.paths=[["dedupe"]],mC.usage=ye.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]});var Mae=mC;var Y0=class extends Be{async execute(){let{plugins:e}=await fe.find(this.context.cwd,this.context.plugins),r=[];for(let o of e){let{commands:a}=o[1];if(a){let c=oo.from(a).definitions();r.push([o[0],c])}}let i=this.cli.definitions(),n=(o,a)=>o.split(" ").slice(1).join()===a.split(" ").slice(1).join(),s=Kae()["@yarnpkg/builder"].bundles.standard;for(let o of r){let a=o[1];for(let l of a)i.find(c=>n(c.path,l.path)).plugin={name:o[0],isDefault:s.includes(o[0])}}this.context.stdout.write(`${JSON.stringify(i,null,2)} -`)}};Y0.paths=[["--clipanion=definitions"]];var Uae=Y0;var q0=class extends Be{async execute(){this.context.stdout.write(this.cli.usage(null))}};q0.paths=[["help"],["--help"],["-h"]];var Hae=q0;var _N=class extends Be{constructor(){super(...arguments);this.leadingArgument=Y.String();this.args=Y.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!S.tryParseIdent(this.leadingArgument)){let e=v.resolve(this.context.cwd,M.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:e})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}},Gae=_N;var J0=class extends Be{async execute(){this.context.stdout.write(`${Zr||""} -`)}};J0.paths=[["-v"],["--version"]];var jae=J0;var EC=class extends Be{constructor(){super(...arguments);this.commandName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,locator:i}=await Ke.find(e,this.context.cwd);return await r.restoreInstallState(),await Kt.executePackageShellcode(i,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:r})}};EC.paths=[["exec"]],EC.usage=ye.Usage({description:"execute a shell script",details:` - This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. - - It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]});var Yae=EC;Ss();var IC=class extends Be{constructor(){super(...arguments);this.hash=Y.String({required:!1,validator:fv(gv(),[hv(/^p[0-9a-f]{5}$/)])})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return await r.restoreInstallState({restoreResolutions:!1}),await r.applyLightResolution(),typeof this.hash!="undefined"?await j4e(this.hash,r,{stdout:this.context.stdout}):(await Fe.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async n=>{var o;let s=[([,a])=>S.stringifyLocator(r.storedPackages.get(a.subject)),([,a])=>S.stringifyIdent(a.requested)];for(let[a,l]of de.sortMap(r.peerRequirements,s)){let c=r.storedPackages.get(l.subject);if(typeof c=="undefined")throw new Error("Assertion failed: Expected the subject package to have been registered");let u=r.storedPackages.get(l.rootRequester);if(typeof u=="undefined")throw new Error("Assertion failed: Expected the root package to have been registered");let g=(o=c.dependencies.get(l.requested.identHash))!=null?o:null,f=ue.pretty(e,a,ue.Type.CODE),h=S.prettyLocator(e,c),p=S.prettyIdent(e,l.requested),d=S.prettyIdent(e,u),m=l.allRequesters.length-1,I=`descendant${m===1?"":"s"}`,B=m>0?` and ${m} ${I}`:"",b=g!==null?"provides":"doesn't provide";n.reportInfo(null,`${f} \u2192 ${h} ${b} ${p} to ${d}${B}`)}})).exitCode()}};IC.paths=[["explain","peer-requirements"]],IC.usage=ye.Usage({description:"explain a set of peer requirements",details:` - A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants. - - When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not. - - When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set. - - **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\`yarn explain peer-requirements\`). - `,examples:[["Explain the corresponding set of peer requirements for a hash","$0 explain peer-requirements p1a4ed"],["List all sets of peer requirements","$0 explain peer-requirements"]]});var qae=IC;async function j4e(t,e,r){let{configuration:i}=e,n=e.peerRequirements.get(t);if(typeof n=="undefined")throw new Error(`No peerDependency requirements found for hash: "${t}"`);return(await Fe.start({configuration:i,stdout:r.stdout,includeFooter:!1},async o=>{var I,B;let a=e.storedPackages.get(n.subject);if(typeof a=="undefined")throw new Error("Assertion failed: Expected the subject package to have been registered");let l=e.storedPackages.get(n.rootRequester);if(typeof l=="undefined")throw new Error("Assertion failed: Expected the root package to have been registered");let c=(I=a.dependencies.get(n.requested.identHash))!=null?I:null,u=c!==null?e.storedResolutions.get(c.descriptorHash):null;if(typeof u=="undefined")throw new Error("Assertion failed: Expected the resolution to have been registered");let g=u!==null?e.storedPackages.get(u):null;if(typeof g=="undefined")throw new Error("Assertion failed: Expected the provided package to have been registered");let f=[...n.allRequesters.values()].map(b=>{let R=e.storedPackages.get(b);if(typeof R=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let H=S.devirtualizeLocator(R),L=e.storedPackages.get(H.locatorHash);if(typeof L=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let K=L.peerDependencies.get(n.requested.identHash);if(typeof K=="undefined")throw new Error("Assertion failed: Expected the peer dependency to be registered");return{pkg:R,peerDependency:K}});if(g!==null){let b=f.every(({peerDependency:R})=>qt.satisfiesWithPrereleases(g.version,R.range));o.reportInfo(z.UNNAMED,`${S.prettyLocator(i,a)} provides ${S.prettyLocator(i,g)} with version ${S.prettyReference(i,(B=g.version)!=null?B:"")}, which ${b?"satisfies":"doesn't satisfy"} the following requirements:`)}else o.reportInfo(z.UNNAMED,`${S.prettyLocator(i,a)} doesn't provide ${S.prettyIdent(i,n.requested)}, breaking the following requirements:`);o.reportSeparator();let h=ue.mark(i),p=[];for(let{pkg:b,peerDependency:R}of de.sortMap(f,H=>S.stringifyLocator(H.pkg))){let L=(g!==null?qt.satisfiesWithPrereleases(g.version,R.range):!1)?h.Check:h.Cross;p.push({stringifiedLocator:S.stringifyLocator(b),prettyLocator:S.prettyLocator(i,b),prettyRange:S.prettyRange(i,R.range),mark:L})}let d=Math.max(...p.map(({stringifiedLocator:b})=>b.length)),m=Math.max(...p.map(({prettyRange:b})=>b.length));for(let{stringifiedLocator:b,prettyLocator:R,prettyRange:H,mark:L}of de.sortMap(p,({stringifiedLocator:K})=>K))o.reportInfo(null,`${R.padEnd(d+(R.length-b.length)," ")} \u2192 ${H.padEnd(m," ")} ${L}`);p.length>1&&(o.reportSeparator(),o.reportInfo(z.UNNAMED,`Note: these requirements start with ${S.prettyLocator(e.configuration,l)}`))})).exitCode()}var Jae=ie(Nn()),yC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=Y.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=Y.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=Y.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=Y.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=Y.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=Y.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i&&!this.all)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let s=new Set(this.extra);this.cache&&s.add("cache"),this.dependents&&s.add("dependents"),this.manifest&&s.add("manifest");let o=(b,{recursive:R})=>{let H=b.anchoredLocator.locatorHash,L=new Map,K=[H];for(;K.length>0;){let J=K.shift();if(L.has(J))continue;let ne=r.storedPackages.get(J);if(typeof ne=="undefined")throw new Error("Assertion failed: Expected the package to be registered");if(L.set(J,ne),S.isVirtualLocator(ne)&&K.push(S.devirtualizeLocator(ne).locatorHash),!(!R&&J!==H))for(let q of ne.dependencies.values()){let A=r.storedResolutions.get(q.descriptorHash);if(typeof A=="undefined")throw new Error("Assertion failed: Expected the resolution to be registered");K.push(A)}}return L.values()},a=({recursive:b})=>{let R=new Map;for(let H of r.workspaces)for(let L of o(H,{recursive:b}))R.set(L.locatorHash,L);return R.values()},l=({all:b,recursive:R})=>b&&R?r.storedPackages.values():b?a({recursive:R}):o(i,{recursive:R}),c=({all:b,recursive:R})=>{let H=l({all:b,recursive:R}),L=this.patterns.map(ne=>{let q=S.parseLocator(ne),A=Jae.default.makeRe(S.stringifyIdent(q)),V=S.isVirtualLocator(q),W=V?S.devirtualizeLocator(q):q;return X=>{let F=S.stringifyIdent(X);if(!A.test(F))return!1;if(q.reference==="unknown")return!0;let D=S.isVirtualLocator(X),he=D?S.devirtualizeLocator(X):X;return!(V&&D&&q.reference!==X.reference||W.reference!==he.reference)}}),K=de.sortMap([...H],ne=>S.stringifyLocator(ne));return{selection:K.filter(ne=>L.length===0||L.some(q=>q(ne))),sortedLookup:K}},{selection:u,sortedLookup:g}=c({all:this.all,recursive:this.recursive});if(u.length===0)throw new me("No package matched your request");let f=new Map;if(this.dependents)for(let b of g)for(let R of b.dependencies.values()){let H=r.storedResolutions.get(R.descriptorHash);if(typeof H=="undefined")throw new Error("Assertion failed: Expected the resolution to be registered");de.getArrayWithDefault(f,H).push(b)}let h=new Map;for(let b of g){if(!S.isVirtualLocator(b))continue;let R=S.devirtualizeLocator(b);de.getArrayWithDefault(h,R.locatorHash).push(b)}let p={},d={children:p},m=e.makeFetcher(),I={project:r,fetcher:m,cache:n,checksums:r.storedChecksums,report:new ei,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},B=[async(b,R,H)=>{var J,ne;if(!R.has("manifest"))return;let L=await m.fetch(b,I),K;try{K=await Ze.find(L.prefixPath,{baseFs:L.packageFs})}finally{(J=L.releaseFs)==null||J.call(L)}H("Manifest",{License:ue.tuple(ue.Type.NO_HINT,K.license),Homepage:ue.tuple(ue.Type.URL,(ne=K.raw.homepage)!=null?ne:null)})},async(b,R,H)=>{var A;if(!R.has("cache"))return;let L={mockedPackages:r.disabledLocators,unstablePackages:r.conditionalLocators},K=(A=r.storedChecksums.get(b.locatorHash))!=null?A:null,J=n.getLocatorPath(b,K,L),ne;if(J!==null)try{ne=T.statSync(J)}catch{}let q=typeof ne!="undefined"?[ne.size,ue.Type.SIZE]:void 0;H("Cache",{Checksum:ue.tuple(ue.Type.NO_HINT,K),Path:ue.tuple(ue.Type.PATH,J),Size:q})}];for(let b of u){let R=S.isVirtualLocator(b);if(!this.virtuals&&R)continue;let H={},L={value:[b,ue.Type.LOCATOR],children:H};if(p[S.stringifyLocator(b)]=L,this.nameOnly){delete L.children;continue}let K=h.get(b.locatorHash);typeof K!="undefined"&&(H.Instances={label:"Instances",value:ue.tuple(ue.Type.NUMBER,K.length)}),H.Version={label:"Version",value:ue.tuple(ue.Type.NO_HINT,b.version)};let J=(q,A)=>{let V={};if(H[q]=V,Array.isArray(A))V.children=A.map(W=>({value:W}));else{let W={};V.children=W;for(let[X,F]of Object.entries(A))typeof F!="undefined"&&(W[X]={label:X,value:F})}};if(!R){for(let q of B)await q(b,s,J);await e.triggerHook(q=>q.fetchPackageInfo,b,s,J)}b.bin.size>0&&!R&&J("Exported Binaries",[...b.bin.keys()].map(q=>ue.tuple(ue.Type.PATH,q)));let ne=f.get(b.locatorHash);typeof ne!="undefined"&&ne.length>0&&J("Dependents",ne.map(q=>ue.tuple(ue.Type.LOCATOR,q))),b.dependencies.size>0&&!R&&J("Dependencies",[...b.dependencies.values()].map(q=>{var W;let A=r.storedResolutions.get(q.descriptorHash),V=typeof A!="undefined"&&(W=r.storedPackages.get(A))!=null?W:null;return ue.tuple(ue.Type.RESOLUTION,{descriptor:q,locator:V})})),b.peerDependencies.size>0&&R&&J("Peer dependencies",[...b.peerDependencies.values()].map(q=>{var X,F;let A=b.dependencies.get(q.identHash),V=typeof A!="undefined"&&(X=r.storedResolutions.get(A.descriptorHash))!=null?X:null,W=V!==null&&(F=r.storedPackages.get(V))!=null?F:null;return ue.tuple(ue.Type.RESOLUTION,{descriptor:q,locator:W})}))}Hs.emitTree(d,{configuration:e,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};yC.paths=[["info"]],yC.usage=ye.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]});var Wae=yC;var W0=ie(ml());Ss();var wC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=Y.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=Y.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.checkCache=Y.Boolean("--check-cache",!1,{description:"Always refetch the packages and ensure that their checksums are consistent"});this.inlineBuilds=Y.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.cacheFolder=Y.String("--cache-folder",{hidden:!0});this.frozenLockfile=Y.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=Y.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=Y.Boolean("--non-interactive",{hidden:!0});this.preferOffline=Y.Boolean("--prefer-offline",{hidden:!0});this.production=Y.Boolean("--production",{hidden:!0});this.registry=Y.String("--registry",{hidden:!0});this.silent=Y.Boolean("--silent",{hidden:!0});this.networkTimeout=Y.String("--network-timeout",{hidden:!0})}async execute(){var c;let e=await fe.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds!="undefined"&&e.useWithSource("",{enableInlineBuilds:this.inlineBuilds},e.startingCwd,{overwrite:!0});let r=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,i=async(u,{error:g})=>{let f=await Fe.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async h=>{g?h.reportError(z.DEPRECATED_CLI_SETTINGS,u):h.reportWarning(z.DEPRECATED_CLI_SETTINGS,u)});return f.hasErrors()?f.exitCode():null};if(typeof this.ignoreEngines!="undefined"){let u=await i("The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",{error:!W0.default.VERCEL});if(u!==null)return u}if(typeof this.registry!="undefined"){let u=await i("The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file",{error:!1});if(u!==null)return u}if(typeof this.preferOffline!="undefined"){let u=await i("The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",{error:!W0.default.VERCEL});if(u!==null)return u}if(typeof this.production!="undefined"){let u=await i("The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",{error:!0});if(u!==null)return u}if(typeof this.nonInteractive!="undefined"){let u=await i("The --non-interactive option is deprecated",{error:!r});if(u!==null)return u}if(typeof this.frozenLockfile!="undefined"&&(await i("The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",{error:!1}),this.immutable=this.frozenLockfile),typeof this.cacheFolder!="undefined"){let u=await i("The cache-folder option has been deprecated; use rc settings instead",{error:!W0.default.NETLIFY});if(u!==null)return u}let n=(c=this.immutable)!=null?c:e.get("enableImmutableInstalls");if(e.projectCwd!==null){let u=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async g=>{await Y4e(e,n)&&(g.reportInfo(z.AUTOMERGE_SUCCESS,"Automatically fixed merge conflicts \u{1F44D}"),g.reportSeparator())});if(u.hasErrors())return u.exitCode()}if(e.projectCwd!==null&&typeof e.sources.get("nodeLinker")=="undefined"){let u=e.projectCwd,g;try{g=await T.readFilePromise(v.join(u,wt.lockfile),"utf8")}catch{}if(g==null?void 0:g.includes("yarn lockfile v1")){let f=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async h=>{h.reportInfo(z.AUTO_NM_SUCCESS,"Migrating from Yarn 1; automatically enabling the compatibility node-modules linker \u{1F44D}"),h.reportSeparator(),e.use("",{nodeLinker:"node-modules"},u,{overwrite:!0}),await fe.updateConfiguration(u,{nodeLinker:"node-modules"})});if(f.hasErrors())return f.exitCode()}}if(e.projectCwd!==null){let u=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async g=>{var f;((f=fe.telemetry)==null?void 0:f.isNew)&&(g.reportInfo(z.TELEMETRY_NOTICE,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),g.reportInfo(z.TELEMETRY_NOTICE,`Run ${ue.pretty(e,"yarn config set --home enableTelemetry 0",ue.Type.CODE)} to disable`),g.reportSeparator())});if(u.hasErrors())return u.exitCode()}let{project:s,workspace:o}=await Ke.find(e,this.context.cwd),a=await Qt.find(e,{immutable:this.immutableCache,check:this.checkCache});if(!o)throw new rt(s.cwd,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!0},async u=>{await s.install({cache:a,report:u,immutable:n,mode:this.mode})})).exitCode()}};wC.paths=[["install"],ye.Default],wC.usage=ye.Usage({description:"install the project dependencies",details:` - This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics: - - - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ). - - - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of \`cacheFolder\` in \`yarn config\` to see where the cache files are stored). - - - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the .pnp.cjs file you might know). - - - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail. - - Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your .pnp.cjs file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches. - - If the \`--immutable\` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the \`immutablePatterns\` configuration setting). For backward compatibility we offer an alias under the name of \`--frozen-lockfile\`, but it will be removed in a later release. - - If the \`--immutable-cache\` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed). - - If the \`--check-cache\` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them. - - If the \`--inline-builds\` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments. - - If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: - - - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - - - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. - `,examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]});var zae=wC,q4e="|||||||",J4e=">>>>>>>",W4e="=======",Vae="<<<<<<<";async function Y4e(t,e){if(!t.projectCwd)return!1;let r=v.join(t.projectCwd,t.get("lockfileFilename"));if(!await T.existsPromise(r))return!1;let i=await T.readFilePromise(r,"utf8");if(!i.includes(Vae))return!1;if(e)throw new nt(z.AUTOMERGE_IMMUTABLE,"Cannot autofix a lockfile when running an immutable install");let[n,s]=z4e(i),o,a;try{o=Ii(n),a=Ii(s)}catch(c){throw new nt(z.AUTOMERGE_FAILED_TO_PARSE,"The individual variants of the lockfile failed to parse")}let l=P(P({},o),a);for(let[c,u]of Object.entries(l))typeof u=="string"&&delete l[c];return await T.changeFilePromise(r,Qa(l),{automaticNewlines:!0}),!0}function z4e(t){let e=[[],[]],r=t.split(/\r?\n/g),i=!1;for(;r.length>0;){let n=r.shift();if(typeof n=="undefined")throw new Error("Assertion failed: Some lines should remain");if(n.startsWith(Vae)){for(;r.length>0;){let s=r.shift();if(typeof s=="undefined")throw new Error("Assertion failed: Some lines should remain");if(s===W4e){i=!1;break}else if(i||s.startsWith(q4e)){i=!0;continue}else e[0].push(s)}for(;r.length>0;){let s=r.shift();if(typeof s=="undefined")throw new Error("Assertion failed: Some lines should remain");if(s.startsWith(J4e))break;e[1].push(s)}}else e[0].push(n),e[1].push(n)}return[e[0].join(` -`),e[1].join(` -`)]}var BC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target project to the current one"});this.private=Y.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target project to the current one"});this.relative=Y.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destination=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=v.resolve(this.context.cwd,M.toPortablePath(this.destination)),o=await fe.find(s,this.context.plugins,{useRc:!1,strict:!1}),{project:a,workspace:l}=await Ke.find(o,s);if(r.cwd===a.cwd)throw new me("Invalid destination; Can't link the project to itself");if(!l)throw new rt(a.cwd,s);let c=r.topLevelWorkspace,u=[];if(this.all){for(let f of a.workspaces)f.manifest.name&&(!f.manifest.private||this.private)&&u.push(f);if(u.length===0)throw new me("No workspace found to be linked in the target project")}else{if(!l.manifest.name)throw new me("The target workspace doesn't have a name and thus cannot be linked");if(l.manifest.private&&!this.private)throw new me("The target workspace is marked private - use the --private flag to link it anyway");u.push(l)}for(let f of u){let h=S.stringifyIdent(f.locator),p=this.relative?v.relative(r.cwd,f.cwd):f.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${p}`})}return(await Fe.start({configuration:e,stdout:this.context.stdout},async f=>{await r.install({cache:n,report:f})})).exitCode()}};BC.paths=[["link"]],BC.usage=ye.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register a remote workspace for use in the current project","$0 link ~/ts-loader"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]});var _ae=BC;var QC=class extends Be{constructor(){super(...arguments);this.args=Y.Proxy()}async execute(){return this.cli.run(["exec","node",...this.args])}};QC.paths=[["node"]],QC.usage=ye.Usage({description:"run node with the hook already setup",details:` - This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - - The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. - `,examples:[["Run a Node script","$0 node ./my-script.js"]]});var Xae=QC;var lAe=ie(require("os"));var rAe=ie(require("os"));var V4e="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function Kc(t){let e=await Zt.get(V4e,{configuration:t});return Ii(e.toString())}var bC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{let n=await Kc(e);for(let s of Object.entries(n)){let[l,o]=s,a=o,{experimental:c}=a,u=qr(a,["experimental"]);let g=l;c&&(g+=" [experimental]"),i.reportJson(P({name:l,experimental:c},u)),i.reportInfo(null,g)}})).exitCode()}};bC.paths=[["plugin","list"]],bC.usage=ye.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]});var Zae=bC;var $ae=ie(Or()),vC=class extends Be{constructor(){super(...arguments);this.onlyIfNeeded=Y.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);if(e.get("yarnPath")&&this.onlyIfNeeded)return 0;let r=()=>{if(typeof Zr=="undefined")throw new me("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},i;if(this.version==="self")i=r();else if(this.version==="latest"||this.version==="berry"||this.version==="stable")i=`https://repo.yarnpkg.com/${await eAe(e,"stable")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="canary")i=`https://repo.yarnpkg.com/${await eAe(e,"canary")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="classic")i="https://nightly.yarnpkg.com/latest.js";else if(this.version.match(/^\.{0,2}[\\/]/)||M.isAbsolute(this.version))i=`file://${M.resolve(this.version)}`;else if(qt.satisfiesWithPrereleases(this.version,">=2.0.0"))i=`https://repo.yarnpkg.com/${this.version}/packages/yarnpkg-cli/bin/yarn.js`;else if(qt.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))i=`https://github.com/yarnpkg/yarn/releases/download/v${this.version}/yarn-${this.version}.js`;else if(qt.validRange(this.version))i=`https://repo.yarnpkg.com/${await _4e(e,this.version)}/packages/yarnpkg-cli/bin/yarn.js`;else throw new me(`Invalid version descriptor "${this.version}"`);return(await Fe.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async s=>{let o="file://",a;i.startsWith(o)?(s.reportInfo(z.UNNAMED,`Downloading ${ue.pretty(e,i,ps.URL)}`),a=await T.readFilePromise(M.toPortablePath(i.slice(o.length)))):(s.reportInfo(z.UNNAMED,`Retrieving ${ue.pretty(e,i,ps.PATH)}`),a=await Zt.get(i,{configuration:e})),await XN(e,null,a,{report:s})})).exitCode()}};vC.paths=[["set","version"]],vC.usage=ye.Usage({description:"lock the Yarn version used by the project",details:"\n This command will download a specific release of Yarn directly from the Yarn GitHub repository, will store it inside your project, and will change the `yarnPath` settings from your project `.yarnrc.yml` file to point to the new file.\n\n A very good use case for this command is to enforce the version of Yarn used by the any single member of your team inside a same project - by doing this you ensure that you have control on Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting a different behavior than you.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Download the version used to invoke the command","$0 set version self"]]});var tAe=vC;async function _4e(t,e){let i=(await Zt.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0})).tags.filter(n=>qt.satisfiesWithPrereleases(n,e));if(i.length===0)throw new me(`No matching release found for range ${ue.pretty(t,e,ue.Type.RANGE)}.`);return i[0]}async function eAe(t,e){let r=await Zt.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new me(`Tag ${ue.pretty(t,e,ue.Type.RANGE)} not found`);return r.latest[e]}async function XN(t,e,r,{report:i}){var g;e===null&&await T.mktempPromise(async f=>{let h=v.join(f,"yarn.cjs");await T.writeFilePromise(h,r);let{stdout:p}=await hr.execvp(process.execPath,[M.fromPortablePath(h),"--version"],{cwd:f,env:_(P({},process.env),{YARN_IGNORE_PATH:"1"})});if(e=p.trim(),!$ae.default.valid(e))throw new Error(`Invalid semver version. ${ue.pretty(t,"yarn --version",ue.Type.CODE)} returned: -${e}`)});let n=(g=t.projectCwd)!=null?g:t.startingCwd,s=v.resolve(n,".yarn/releases"),o=v.resolve(s,`yarn-${e}.cjs`),a=v.relative(t.startingCwd,o),l=v.relative(n,o),c=t.get("yarnPath"),u=c===null||c.startsWith(`${s}/`);if(i.reportInfo(z.UNNAMED,`Saving the new release in ${ue.pretty(t,a,"magenta")}`),await T.removePromise(v.dirname(o)),await T.mkdirPromise(v.dirname(o),{recursive:!0}),await T.writeFilePromise(o,r,{mode:493}),u){await fe.updateConfiguration(n,{yarnPath:l});let f=await Ze.tryFind(n)||new Ze;e&&de.isTaggedYarnVersion(e)&&(f.packageManager=`yarn@${e}`);let h={};f.exportTo(h);let p=v.join(n,Ze.fileName),d=`${JSON.stringify(h,null,f.indent)} -`;await T.changeFilePromise(p,d,{automaticNewlines:!0})}}var X4e=/^[0-9]+$/;function iAe(t){return X4e.test(t)?`pull/${t}/head`:t}var Z4e=({repository:t,branch:e},r)=>[["git","init",M.fromPortablePath(r)],["git","remote","add","origin",t],["git","fetch","origin",iAe(e)],["git","reset","--hard","FETCH_HEAD"]],$4e=({branch:t})=>[["git","fetch","origin",iAe(t),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx"]],eze=({plugins:t,noMinify:e},r)=>[["yarn","build:cli",...new Array().concat(...t.map(i=>["--plugin",v.resolve(r,i)])),...e?["--no-minify"]:[],"|"]],SC=class extends Be{constructor(){super(...arguments);this.installPath=Y.String("--path",{description:"The path where the repository should be cloned to"});this.repository=Y.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=Y.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=Y.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.noMinify=Y.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=Y.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=Y.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=typeof this.installPath!="undefined"?v.resolve(this.context.cwd,M.toPortablePath(this.installPath)):v.resolve(M.toPortablePath((0,rAe.tmpdir)()),"yarnpkg-sources",mn.makeHash(this.repository).slice(0,6));return(await Fe.start({configuration:e,stdout:this.context.stdout},async s=>{await $N(this,{configuration:e,report:s,target:i}),s.reportSeparator(),s.reportInfo(z.UNNAMED,"Building a fresh bundle"),s.reportSeparator(),await xC(eze(this,i),{configuration:e,context:this.context,target:i}),s.reportSeparator();let o=v.resolve(i,"packages/yarnpkg-cli/bundles/yarn.js"),a=await T.readFilePromise(o);await XN(e,"sources",a,{report:s}),this.skipPlugins||await tze(this,{project:r,report:s,target:i})})).exitCode()}};SC.paths=[["set","version","from","sources"]],SC.usage=ye.Usage({description:"build Yarn from master",details:` - This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. - - By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. - `,examples:[["Build Yarn from master","$0 set version from sources"]]});var nAe=SC;async function xC(t,{configuration:e,context:r,target:i}){for(let[n,...s]of t){let o=s[s.length-1]==="|";if(o&&s.pop(),o)await hr.pipevp(n,s,{cwd:i,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${ue.pretty(e,` $ ${[n,...s].join(" ")}`,"grey")} -`);try{await hr.execvp(n,s,{cwd:i,strict:!0})}catch(a){throw r.stdout.write(a.stdout||a.stack),a}}}}async function $N(t,{configuration:e,report:r,target:i}){let n=!1;if(!t.force&&T.existsSync(v.join(i,".git"))){r.reportInfo(z.UNNAMED,"Fetching the latest commits"),r.reportSeparator();try{await xC($4e(t),{configuration:e,context:t.context,target:i}),n=!0}catch(s){r.reportSeparator(),r.reportWarning(z.UNNAMED,"Repository update failed; we'll try to regenerate it")}}n||(r.reportInfo(z.UNNAMED,"Cloning the remote repository"),r.reportSeparator(),await T.removePromise(i),await T.mkdirPromise(i,{recursive:!0}),await xC(Z4e(t,i),{configuration:e,context:t.context,target:i}))}async function tze(t,{project:e,report:r,target:i}){let n=await Kc(e.configuration),s=new Set(Object.keys(n));for(let o of e.configuration.plugins.keys())!s.has(o)||await ZN(o,t,{project:e,report:r,target:i})}var sAe=ie(Or()),oAe=ie(require("url")),aAe=ie(require("vm"));var kC=class extends Be{constructor(){super(...arguments);this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,stdout:this.context.stdout},async i=>{let{project:n}=await Ke.find(e,this.context.cwd),s,o;if(this.name.match(/^\.{0,2}[\\/]/)||M.isAbsolute(this.name)){let a=v.resolve(this.context.cwd,M.toPortablePath(this.name));i.reportInfo(z.UNNAMED,`Reading ${ue.pretty(e,a,ue.Type.PATH)}`),s=v.relative(n.cwd,a),o=await T.readFilePromise(a)}else{let a;if(this.name.match(/^https?:/)){try{new oAe.URL(this.name)}catch{throw new nt(z.INVALID_PLUGIN_REFERENCE,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}s=this.name,a=this.name}else{let l=S.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(l.reference!=="unknown"&&!sAe.default.valid(l.reference))throw new nt(z.UNNAMED,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let c=S.stringifyIdent(l),u=await Kc(e);if(!Object.prototype.hasOwnProperty.call(u,c))throw new nt(z.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${c}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be referenced by their name; any other plugin will have to be referenced through its public url (for example https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js).`);s=c,a=u[c].url,l.reference!=="unknown"?a=a.replace(/\/master\//,`/${c}/${l.reference}/`):Zr!==null&&(a=a.replace(/\/master\//,`/@yarnpkg/cli/${Zr}/`))}i.reportInfo(z.UNNAMED,`Downloading ${ue.pretty(e,a,"green")}`),o=await Zt.get(a,{configuration:e})}await eL(s,o,{project:n,report:i})})).exitCode()}};kC.paths=[["plugin","import"]],kC.usage=ye.Usage({category:"Plugin-related commands",description:"download a plugin",details:` - This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. - - Three types of plugin references are accepted: - - - If the plugin is stored within the Yarn repository, it can be referenced by name. - - Third-party plugins can be referenced directly through their public urls. - - Local plugins can be referenced by their path on the disk. - - Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). - `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]});var AAe=kC;async function eL(t,e,{project:r,report:i}){let{configuration:n}=r,s={},o={exports:s};(0,aAe.runInNewContext)(e.toString(),{module:o,exports:s});let a=o.exports.name,l=`.yarn/plugins/${a}.cjs`,c=v.resolve(r.cwd,l);i.reportInfo(z.UNNAMED,`Saving the new plugin in ${ue.pretty(n,l,"magenta")}`),await T.mkdirPromise(v.dirname(c),{recursive:!0}),await T.writeFilePromise(c,e);let u={path:l,spec:t};await fe.updateConfiguration(r.cwd,g=>{let f=[],h=!1;for(let p of g.plugins||[]){let d=typeof p!="string"?p.path:p,m=v.resolve(r.cwd,M.toPortablePath(d)),{name:I}=de.dynamicRequire(m);I!==a?f.push(p):(f.push(u),h=!0)}return h||f.push(u),_(P({},g),{plugins:f})})}var rze=({pluginName:t,noMinify:e},r)=>[["yarn",`build:${t}`,...e?["--no-minify"]:[],"|"]],PC=class extends Be{constructor(){super(...arguments);this.installPath=Y.String("--path",{description:"The path where the repository should be cloned to"});this.repository=Y.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=Y.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=Y.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=Y.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=typeof this.installPath!="undefined"?v.resolve(this.context.cwd,M.toPortablePath(this.installPath)):v.resolve(M.toPortablePath((0,lAe.tmpdir)()),"yarnpkg-sources",mn.makeHash(this.repository).slice(0,6));return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let{project:s}=await Ke.find(e,this.context.cwd),o=S.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),a=S.stringifyIdent(o),l=await Kc(e);if(!Object.prototype.hasOwnProperty.call(l,a))throw new nt(z.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${a}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let c=a;await $N(this,{configuration:e,report:n,target:r}),await ZN(c,this,{project:s,report:n,target:r})})).exitCode()}};PC.paths=[["plugin","import","from","sources"]],PC.usage=ye.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` - This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. - - The plugins can be referenced by their short name if sourced from the official Yarn repository. - `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]});var cAe=PC;async function ZN(t,{context:e,noMinify:r},{project:i,report:n,target:s}){let o=t.replace(/@yarnpkg\//,""),{configuration:a}=i;n.reportSeparator(),n.reportInfo(z.UNNAMED,`Building a fresh ${o}`),n.reportSeparator(),await xC(rze({pluginName:o,noMinify:r},s),{configuration:a,context:e,target:s}),n.reportSeparator();let l=v.resolve(s,`packages/${o}/bundles/${t}.js`),c=await T.readFilePromise(l);await eL(t,c,{project:i,report:n})}var DC=class extends Be{constructor(){super(...arguments);this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let s=this.name,o=S.parseIdent(s);if(!e.plugins.has(s))throw new me(`${S.prettyIdent(e,o)} isn't referenced by the current configuration`);let a=`.yarn/plugins/${s}.cjs`,l=v.resolve(r.cwd,a);T.existsSync(l)&&(n.reportInfo(z.UNNAMED,`Removing ${ue.pretty(e,a,ue.Type.PATH)}...`),await T.removePromise(l)),n.reportInfo(z.UNNAMED,"Updating the configuration..."),await fe.updateConfiguration(r.cwd,c=>{if(!Array.isArray(c.plugins))return c;let u=c.plugins.filter(g=>g.path!==a);return c.plugins.length===u.length?c:_(P({},c),{plugins:u})})})).exitCode()}};DC.paths=[["plugin","remove"]],DC.usage=ye.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` - This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. - - **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. - `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]});var uAe=DC;var RC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{for(let n of e.plugins.keys()){let s=this.context.plugins.plugins.has(n),o=n;s&&(o+=" [builtin]"),i.reportJson({name:n,builtin:s}),i.reportInfo(null,`${o}`)}})).exitCode()}};RC.paths=[["plugin","runtime"]],RC.usage=ye.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` - This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. - `,examples:[["List the currently active plugins","$0 plugin runtime"]]});var gAe=RC;var FC=class extends Be{constructor(){super(...arguments);this.idents=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);let s=new Set;for(let a of this.idents)s.add(S.parseIdent(a).identHash);if(await r.restoreInstallState({restoreResolutions:!1}),await r.resolveEverything({cache:n,report:new ei}),s.size>0)for(let a of r.storedPackages.values())s.has(a.identHash)&&r.storedBuildState.delete(a.locatorHash);else r.storedBuildState.clear();return(await Fe.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async a=>{await r.install({cache:n,report:a})})).exitCode()}};FC.paths=[["rebuild"]],FC.usage=ye.Usage({description:"rebuild the project's native packages",details:` - This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. - - Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). - - By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. - `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]});var fAe=FC;var tL=ie(Nn());Ss();var NC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=this.all?r.workspaces:[i],o=[vr.REGULAR,vr.DEVELOPMENT,vr.PEER],a=[],l=!1,c=[];for(let h of this.patterns){let p=!1,d=S.parseIdent(h);for(let m of s){let I=[...m.manifest.peerDependenciesMeta.keys()];for(let B of(0,tL.default)(I,h))m.manifest.peerDependenciesMeta.delete(B),l=!0,p=!0;for(let B of o){let b=m.manifest.getForScope(B),R=[...b.values()].map(H=>S.stringifyIdent(H));for(let H of(0,tL.default)(R,S.stringifyIdent(d))){let{identHash:L}=S.parseIdent(H),K=b.get(L);if(typeof K=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");m.manifest[B].delete(L),c.push([m,B,K]),l=!0,p=!0}}}p||a.push(h)}let u=a.length>1?"Patterns":"Pattern",g=a.length>1?"don't":"doesn't",f=this.all?"any":"this";if(a.length>0)throw new me(`${u} ${ue.prettyList(e,a,ps.CODE)} ${g} match any packages referenced by ${f} workspace`);return l?(await e.triggerMultipleHooks(p=>p.afterWorkspaceDependencyRemoval,c),(await Fe.start({configuration:e,stdout:this.context.stdout},async p=>{await r.install({cache:n,report:p,mode:this.mode})})).exitCode()):0}};NC.paths=[["remove"]],NC.usage=ye.Usage({description:"remove dependencies from the project",details:` - This command will remove the packages matching the specified patterns from the current workspace. - - If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: - - - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - - - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. - - This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. - `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]});var hAe=NC;var pAe=ie(require("util")),z0=class extends Be{async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);return(await Fe.start({configuration:e,stdout:this.context.stdout},async s=>{let o=i.manifest.scripts,a=de.sortMap(o.keys(),u=>u),l={breakLength:Infinity,colors:e.get("enableColors"),maxArrayLength:2},c=a.reduce((u,g)=>Math.max(u,g.length),0);for(let[u,g]of o.entries())s.reportInfo(null,`${u.padEnd(c," ")} ${(0,pAe.inspect)(g,l)}`)})).exitCode()}};z0.paths=[["run"]];var dAe=z0;var LC=class extends Be{constructor(){super(...arguments);this.inspect=Y.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=Y.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=Y.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=Y.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.silent=Y.Boolean("--silent",{hidden:!0});this.scriptName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i,locator:n}=await Ke.find(e,this.context.cwd);await r.restoreInstallState();let s=this.topLevel?r.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await Kt.hasPackageScript(s,this.scriptName,{project:r}))return await Kt.executePackageScript(s,this.scriptName,this.args,{project:r,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let o=await Kt.getPackageAccessibleBinaries(s,{project:r});if(o.get(this.scriptName)){let l=[];return this.inspect&&(typeof this.inspect=="string"?l.push(`--inspect=${this.inspect}`):l.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?l.push(`--inspect-brk=${this.inspectBrk}`):l.push("--inspect-brk")),await Kt.executePackageAccessibleBinary(s,this.scriptName,this.args,{cwd:this.context.cwd,project:r,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:l,packageAccessibleBinaries:o})}if(!this.topLevel&&!this.binariesOnly&&i&&this.scriptName.includes(":")){let c=(await Promise.all(r.workspaces.map(async u=>u.manifest.scripts.has(this.scriptName)?u:null))).filter(u=>u!==null);if(c.length===1)return await Kt.executeWorkspaceScript(c[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new me(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${S.prettyLocator(e,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new me(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${S.prettyLocator(e,n)}).`);{if(this.scriptName==="global")throw new me("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let l=[this.scriptName].concat(this.args);for(let[c,u]of Yg)for(let g of u)if(l.length>=g.length&&JSON.stringify(l.slice(0,g.length))===JSON.stringify(g))throw new me(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${c} plugin. You can install it with "yarn plugin import ${c}".`);throw new me(`Couldn't find a script named "${this.scriptName}".`)}}};LC.paths=[["run"]],LC.usage=ye.Usage({description:"run a script defined in the package.json",details:` - This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: - - - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. - - - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed. - - - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. - - Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). - `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]});var CAe=LC;var TC=class extends Be{constructor(){super(...arguments);this.save=Y.Boolean("-s,--save",!1,{description:"Persist the resolution inside the top-level manifest"});this.descriptor=Y.String();this.resolution=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(await r.restoreInstallState({restoreResolutions:!1}),!i)throw new rt(r.cwd,this.context.cwd);let s=S.parseDescriptor(this.descriptor,!0),o=S.makeDescriptor(s,this.resolution);return r.storedDescriptors.set(s.descriptorHash,s),r.storedDescriptors.set(o.descriptorHash,o),r.resolutionAliases.set(s.descriptorHash,o.descriptorHash),(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{await r.install({cache:n,report:l})})).exitCode()}};TC.paths=[["set","resolution"]],TC.usage=ye.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, add the `-s,--save` flag which will also edit the `resolutions` field from your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 1.5.0"]]});var mAe=TC;var EAe=ie(Nn()),MC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);let s=r.topLevelWorkspace,o=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:l,reference:c}of s.manifest.resolutions)c.startsWith("portal:")&&o.add(l.descriptor.fullName);if(this.leadingArguments.length>0)for(let l of this.leadingArguments){let c=v.resolve(this.context.cwd,M.toPortablePath(l));if(de.isPathLike(l)){let u=await fe.find(c,this.context.plugins,{useRc:!1,strict:!1}),{project:g,workspace:f}=await Ke.find(u,c);if(!f)throw new rt(g.cwd,c);if(this.all){for(let h of g.workspaces)h.manifest.name&&o.add(S.stringifyIdent(h.locator));if(o.size===0)throw new me("No workspace found to be unlinked in the target project")}else{if(!f.manifest.name)throw new me("The target workspace doesn't have a name and thus cannot be unlinked");o.add(S.stringifyIdent(f.locator))}}else{let u=[...s.manifest.resolutions.map(({pattern:g})=>g.descriptor.fullName)];for(let g of(0,EAe.default)(u,l))o.add(g)}}return s.manifest.resolutions=s.manifest.resolutions.filter(({pattern:l})=>!o.has(l.descriptor.fullName)),(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{await r.install({cache:n,report:l})})).exitCode()}};MC.paths=[["unlink"]],MC.usage=ye.Usage({description:"disconnect the local project from another one",details:` - This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. - `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]});var IAe=MC;var yAe=ie(aC()),rL=ie(Nn());Ss();var uf=class extends Be{constructor(){super(...arguments);this.interactive=Y.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.exact=Y.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=Y.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=Y.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=[...r.storedDescriptors.values()],o=s.map(u=>S.stringifyIdent(u)),a=new Set;for(let u of this.patterns){if(S.parseDescriptor(u).range!=="unknown")throw new me("Ranges aren't allowed when using --recursive");for(let g of(0,rL.default)(o,u)){let f=S.parseIdent(g);a.add(f.identHash)}}let l=s.filter(u=>a.has(u.identHash));for(let u of l)r.storedDescriptors.delete(u.descriptorHash),r.storedResolutions.delete(u.descriptorHash);return(await Fe.start({configuration:e,stdout:this.context.stdout},async u=>{await r.install({cache:n,report:u})})).exitCode()}async executeUpClassic(){var d;let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=(d=this.interactive)!=null?d:e.get("preferInteractive"),o=AC(this,r),a=s?[Fr.KEEP,Fr.REUSE,Fr.PROJECT,Fr.LATEST]:[Fr.PROJECT,Fr.LATEST],l=[],c=[];for(let m of this.patterns){let I=!1,B=S.parseDescriptor(m);for(let b of r.workspaces)for(let R of[vr.REGULAR,vr.DEVELOPMENT]){let L=[...b.manifest.getForScope(R).values()].map(K=>S.stringifyIdent(K));for(let K of(0,rL.default)(L,S.stringifyIdent(B))){let J=S.parseIdent(K),ne=b.manifest[R].get(J.identHash);if(typeof ne=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");let q=S.makeDescriptor(J,B.range);l.push(Promise.resolve().then(async()=>[b,R,ne,await lC(q,{project:r,workspace:b,cache:n,target:R,modifier:o,strategies:a})])),I=!0}}I||c.push(m)}if(c.length>1)throw new me(`Patterns ${ue.prettyList(e,c,ps.CODE)} don't match any packages referenced by any workspace`);if(c.length>0)throw new me(`Pattern ${ue.prettyList(e,c,ps.CODE)} doesn't match any packages referenced by any workspace`);let u=await Promise.all(l),g=await Fa.start({configuration:e,stdout:this.context.stdout,suggestInstall:!1},async m=>{for(let[,,I,{suggestions:B,rejections:b}]of u){let R=B.filter(H=>H.descriptor!==null);if(R.length===0){let[H]=b;if(typeof H=="undefined")throw new Error("Assertion failed: Expected an error to have been set");let L=this.cli.error(H);r.configuration.get("enableNetwork")?m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} can't be resolved to a satisfying range - -${L}`):m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} can't be resolved to a satisfying range (note: network resolution has been disabled) - -${L}`)}else R.length>1&&!s&&m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(g.hasErrors())return g.exitCode();let f=!1,h=[];for(let[m,I,,{suggestions:B}]of u){let b,R=B.filter(J=>J.descriptor!==null),H=R[0].descriptor,L=R.every(J=>S.areDescriptorsEqual(J.descriptor,H));R.length===1||L?b=H:(f=!0,{answer:b}=await(0,yAe.prompt)({type:"select",name:"answer",message:`Which range to you want to use in ${S.prettyWorkspace(e,m)} \u276F ${I}?`,choices:B.map(({descriptor:J,name:ne,reason:q})=>J?{name:ne,hint:q,descriptor:J}:{name:ne,hint:q,disabled:!0}),onCancel:()=>process.exit(130),result(J){return this.find(J,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let K=m.manifest[I].get(b.identHash);if(typeof K=="undefined")throw new Error("Assertion failed: This descriptor should have a matching entry");if(K.descriptorHash!==b.descriptorHash)m.manifest[I].set(b.identHash,b),h.push([m,I,K,b]);else{let J=e.makeResolver(),ne={project:r,resolver:J},q=J.bindDescriptor(K,m.anchoredLocator,ne);r.forgetResolution(q)}}return await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyReplacement,h),f&&this.context.stdout.write(` -`),(await Fe.start({configuration:e,stdout:this.context.stdout},async m=>{await r.install({cache:n,report:m,mode:this.mode})})).exitCode()}};uf.paths=[["up"]],uf.usage=ye.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]}),uf.schema=[pv("recursive",Bl.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})];var wAe=uf;var OC=class extends Be{constructor(){super(...arguments);this.recursive=Y.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=Y.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=S.parseIdent(this.package).identHash,s=this.recursive?nze(r,n,{configuration:e,peers:this.peers}):ize(r,n,{configuration:e,peers:this.peers});Hs.emitTree(s,{configuration:e,stdout:this.context.stdout,json:this.json,separators:1})}};OC.paths=[["why"]],OC.usage=ye.Usage({description:"display the reason why a package is needed",details:` - This command prints the exact reasons why a package appears in the dependency tree. - - If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. - `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]});var BAe=OC;function ize(t,e,{configuration:r,peers:i}){let n=de.sortMap(t.storedPackages.values(),a=>S.stringifyLocator(a)),s={},o={children:s};for(let a of n){let l={},c=null;for(let u of a.dependencies.values()){if(!i&&a.peerDependencies.has(u.identHash))continue;let g=t.storedResolutions.get(u.descriptorHash);if(!g)throw new Error("Assertion failed: The resolution should have been registered");let f=t.storedPackages.get(g);if(!f)throw new Error("Assertion failed: The package should have been registered");if(f.identHash!==e)continue;if(c===null){let p=S.stringifyLocator(a);s[p]={value:[a,ue.Type.LOCATOR],children:l}}let h=S.stringifyLocator(f);l[h]={value:[{descriptor:u,locator:f},ue.Type.DEPENDENT]}}}return o}function nze(t,e,{configuration:r,peers:i}){let n=de.sortMap(t.workspaces,f=>S.stringifyLocator(f.anchoredLocator)),s=new Set,o=new Set,a=f=>{if(s.has(f.locatorHash))return o.has(f.locatorHash);if(s.add(f.locatorHash),f.identHash===e)return o.add(f.locatorHash),!0;let h=!1;f.identHash===e&&(h=!0);for(let p of f.dependencies.values()){if(!i&&f.peerDependencies.has(p.identHash))continue;let d=t.storedResolutions.get(p.descriptorHash);if(!d)throw new Error("Assertion failed: The resolution should have been registered");let m=t.storedPackages.get(d);if(!m)throw new Error("Assertion failed: The package should have been registered");a(m)&&(h=!0)}return h&&o.add(f.locatorHash),h};for(let f of n){let h=t.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");a(h)}let l=new Set,c={},u={children:c},g=(f,h,p)=>{if(!o.has(f.locatorHash))return;let d=p!==null?ue.tuple(ue.Type.DEPENDENT,{locator:f,descriptor:p}):ue.tuple(ue.Type.LOCATOR,f),m={},I={value:d,children:m},B=S.stringifyLocator(f);if(h[B]=I,!l.has(f.locatorHash)&&(l.add(f.locatorHash),!(p!==null&&t.tryWorkspaceByLocator(f))))for(let b of f.dependencies.values()){if(!i&&f.peerDependencies.has(b.identHash))continue;let R=t.storedResolutions.get(b.descriptorHash);if(!R)throw new Error("Assertion failed: The resolution should have been registered");let H=t.storedPackages.get(R);if(!H)throw new Error("Assertion failed: The package should have been registered");g(H,m,b)}};for(let f of n){let h=t.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");g(h,c,null)}return u}var fL={};it(fL,{default:()=>wze,gitUtils:()=>Uc});var Uc={};it(Uc,{TreeishProtocols:()=>vn,clone:()=>cL,fetchBase:()=>jAe,fetchChangedFiles:()=>YAe,fetchChangedWorkspaces:()=>Ize,fetchRoot:()=>GAe,isGitUrl:()=>ff,lsRemote:()=>HAe,normalizeLocator:()=>AL,normalizeRepoUrl:()=>KC,resolveUrl:()=>lL,splitRepoUrl:()=>UC});var oL=ie(OAe()),gf=ie(require("querystring")),aL=ie(Or()),KAe=ie(require("url"));function UAe(){return _(P({},process.env),{GIT_SSH_COMMAND:"ssh -o BatchMode=yes"})}var Eze=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],vn;(function(n){n.Commit="commit",n.Head="head",n.Tag="tag",n.Semver="semver"})(vn||(vn={}));function ff(t){return t?Eze.some(e=>!!t.match(e)):!1}function UC(t){t=KC(t);let e=t.indexOf("#");if(e===-1)return{repo:t,treeish:{protocol:vn.Head,request:"HEAD"},extra:{}};let r=t.slice(0,e),i=t.slice(e+1);if(i.match(/^[a-z]+=/)){let n=gf.default.parse(i);for(let[l,c]of Object.entries(n))if(typeof c!="string")throw new Error(`Assertion failed: The ${l} parameter must be a literal string`);let s=Object.values(vn).find(l=>Object.prototype.hasOwnProperty.call(n,l)),o,a;typeof s!="undefined"?(o=s,a=n[s]):(o=vn.Head,a="HEAD");for(let l of Object.values(vn))delete n[l];return{repo:r,treeish:{protocol:o,request:a},extra:n}}else{let n=i.indexOf(":"),s,o;return n===-1?(s=null,o=i):(s=i.slice(0,n),o=i.slice(n+1)),{repo:r,treeish:{protocol:s,request:o},extra:{}}}}function KC(t,{git:e=!1}={}){var r;if(t=t.replace(/^git\+https:/,"https:"),t=t.replace(/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),t=t.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){t=t.replace(/^git\+([^:]+):/,"$1:");let i;try{i=KAe.default.parse(t)}catch{i=null}i&&i.protocol==="ssh:"&&((r=i.path)==null?void 0:r.startsWith("/:"))&&(t=t.replace(/^ssh:\/\//,""))}return t}function AL(t){return S.makeLocator(t,KC(t.reference))}async function HAe(t,e){let r=KC(t,{git:!0});if(!Zt.getNetworkSettings(`https://${(0,oL.default)(r).resource}`,{configuration:e}).enableNetwork)throw new Error(`Request to '${r}' has been blocked because of your configuration settings`);let n;try{n=await hr.execvp("git",["ls-remote",r],{cwd:e.startingCwd,env:UAe(),strict:!0})}catch(l){throw l.message=`Listing the refs for ${t} failed`,l}let s=new Map,o=/^([a-f0-9]{40})\t([^\n]+)/gm,a;for(;(a=o.exec(n.stdout))!==null;)s.set(a[2],a[1]);return s}async function lL(t,e){let{repo:r,treeish:{protocol:i,request:n},extra:s}=UC(t),o=await HAe(r,e),a=(c,u)=>{switch(c){case vn.Commit:{if(!u.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return gf.default.stringify(_(P({},s),{commit:u}))}case vn.Head:{let g=o.get(u==="HEAD"?u:`refs/heads/${u}`);if(typeof g=="undefined")throw new Error(`Unknown head ("${u}")`);return gf.default.stringify(_(P({},s),{commit:g}))}case vn.Tag:{let g=o.get(`refs/tags/${u}`);if(typeof g=="undefined")throw new Error(`Unknown tag ("${u}")`);return gf.default.stringify(_(P({},s),{commit:g}))}case vn.Semver:{let g=qt.validRange(u);if(!g)throw new Error(`Invalid range ("${u}")`);let f=new Map([...o.entries()].filter(([p])=>p.startsWith("refs/tags/")).map(([p,d])=>[aL.default.parse(p.slice(10)),d]).filter(p=>p[0]!==null)),h=aL.default.maxSatisfying([...f.keys()],g);if(h===null)throw new Error(`No matching range ("${u}")`);return gf.default.stringify(_(P({},s),{commit:f.get(h)}))}case null:{let g;if((g=l(vn.Commit,u))!==null||(g=l(vn.Tag,u))!==null||(g=l(vn.Head,u))!==null)return g;throw u.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${c}")`)}},l=(c,u)=>{try{return a(c,u)}catch(g){return null}};return`${r}#${a(i,n)}`}async function cL(t,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:i,request:n}}=UC(t);if(i!=="commit")throw new Error("Invalid treeish protocol when cloning");let s=KC(r,{git:!0});if(Zt.getNetworkSettings(`https://${(0,oL.default)(s).resource}`,{configuration:e}).enableNetwork===!1)throw new Error(`Request to '${s}' has been blocked because of your configuration settings`);let o=await T.mktempPromise(),a={cwd:o,env:UAe(),strict:!0};try{await hr.execvp("git",["clone","-c core.autocrlf=false",s,M.fromPortablePath(o)],a),await hr.execvp("git",["checkout",`${n}`],a)}catch(l){throw l.message=`Repository clone failed: ${l.message}`,l}return o})}async function GAe(t){let e=null,r,i=t;do r=i,await T.existsPromise(v.join(r,".git"))&&(e=r),i=v.dirname(r);while(e===null&&i!==r);return e}async function jAe(t,{baseRefs:e}){if(e.length===0)throw new me("Can't run this command with zero base refs specified.");let r=[];for(let a of e){let{code:l}=await hr.execvp("git",["merge-base",a,"HEAD"],{cwd:t});l===0&&r.push(a)}if(r.length===0)throw new me(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:i}=await hr.execvp("git",["merge-base","HEAD",...r],{cwd:t,strict:!0}),n=i.trim(),{stdout:s}=await hr.execvp("git",["show","--quiet","--pretty=format:%s",n],{cwd:t,strict:!0}),o=s.trim();return{hash:n,title:o}}async function YAe(t,{base:e,project:r}){let i=de.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:n}=await hr.execvp("git",["diff","--name-only",`${e}`],{cwd:t,strict:!0}),s=n.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>v.resolve(t,M.toPortablePath(c))),{stdout:o}=await hr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:t,strict:!0}),a=o.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>v.resolve(t,M.toPortablePath(c))),l=[...new Set([...s,...a].sort())];return i?l.filter(c=>!v.relative(r.cwd,c).match(i)):l}async function Ize({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new me("This command can only be run from within a Yarn project");let r=[v.resolve(e.cwd,e.configuration.get("cacheFolder")),v.resolve(e.cwd,e.configuration.get("installStatePath")),v.resolve(e.cwd,e.configuration.get("lockfileFilename")),v.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(o=>o.populateYarnPaths,e,o=>{o!=null&&r.push(o)});let i=await GAe(e.configuration.projectCwd);if(i==null)throw new me("This command can only be run on Git repositories");let n=await jAe(i,{baseRefs:typeof t=="string"?[t]:e.configuration.get("changesetBaseRefs")}),s=await YAe(i,{base:n.hash,project:e});return new Set(de.mapAndFilter(s,o=>{let a=e.tryWorkspaceByFilePath(o);return a===null?de.mapAndFilter.skip:r.some(l=>o.startsWith(l))?de.mapAndFilter.skip:a}))}var uL=class{supports(e,r){return ff(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,n=AL(e),s=new Map(r.checksums);s.set(n.locatorHash,i);let o=_(P({},r),{checksums:s}),a=await this.downloadHosted(n,o);if(a!==null)return a;let[l,c,u]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(n,o),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:l,releaseFs:c,prefixPath:S.getIdentVendorPath(e),checksum:u}}async downloadHosted(e,r){return r.project.configuration.reduceHook(i=>i.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let i=await cL(e.reference,r.project.configuration),n=UC(e.reference),s=v.join(i,"package.tgz");await Kt.prepareExternalProject(i,s,{configuration:r.project.configuration,report:r.report,workspace:n.extra.workspace,locator:e});let o=await T.readFilePromise(s);return await de.releaseAfterUseAsync(async()=>await Ai.convertToZip(o,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1}))}};var gL=class{supportsDescriptor(e,r){return ff(e.range)}supportsLocator(e,r){return ff(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=await lL(e.range,i.project.configuration);return[S.makeLocator(e,n)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var yze={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:ge.STRING,isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:ge.STRING,default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:ge.NUMBER,default:2}},fetchers:[uL],resolvers:[gL]};var wze=yze;var HC=class extends Be{constructor(){super(...arguments);this.since=Y.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async n=>{let s=this.since?await Uc.fetchChangedWorkspaces({ref:this.since,project:r}):r.workspaces,o=new Set(s);if(this.recursive)for(let a of[...s].map(l=>l.getRecursiveWorkspaceDependents()))for(let l of a)o.add(l);for(let a of o){let{manifest:l}=a,c;if(this.verbose){let u=new Set,g=new Set;for(let f of Ze.hardDependencies)for(let[h,p]of l.getForScope(f)){let d=r.tryWorkspaceByDescriptor(p);d===null?r.workspacesByIdent.has(h)&&g.add(p):u.add(d)}c={workspaceDependencies:Array.from(u).map(f=>f.relativeCwd),mismatchedWorkspaceDependencies:Array.from(g).map(f=>S.stringifyDescriptor(f))}}n.reportInfo(null,`${a.relativeCwd}`),n.reportJson(P({location:a.relativeCwd,name:l.name?S.stringifyIdent(l.name):null},c))}})).exitCode()}};HC.paths=[["workspaces","list"]],HC.usage=ye.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "});var qAe=HC;var GC=class extends Be{constructor(){super(...arguments);this.workspaceName=Y.String();this.commandName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=r.workspaces,s=new Map(n.map(a=>{let l=S.convertToIdent(a.locator);return[S.stringifyIdent(l),a]})),o=s.get(this.workspaceName);if(o===void 0){let a=Array.from(s.keys()).sort();throw new me(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: - - ${a.join(` - - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:o.cwd})}};GC.paths=[["workspace"]],GC.usage=ye.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` - This command will run a given sub-command on a single workspace. - `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]});var JAe=GC;var Bze={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:ge.BOOLEAN,default:WAe.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:ge.STRING,values:["^","~",""],default:Lo.CARET}},commands:[soe,aoe,wae,Nae,mAe,nAe,tAe,qAe,Uae,Hae,Gae,jae,ioe,noe,Lae,Mae,Yae,qae,Wae,zae,_ae,IAe,Xae,cAe,AAe,uAe,Zae,gAe,fAe,hAe,dAe,CAe,wAe,BAe,JAe]},Qze=Bze;var mL={};it(mL,{default:()=>vze});var Me={optional:!0},zAe=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Me,zenObservable:Me}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Me,zenObservable:Me}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{["supports-color"]:Me}}],["got@<11",{dependencies:{["@types/responselike"]:"^1.0.0",["@types/keyv"]:"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{["@types/keyv"]:"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{["vscode-jsonrpc"]:"^5.0.1",["vscode-languageserver-protocol"]:"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{["postcss-html"]:Me,["postcss-jsx"]:Me,["postcss-less"]:Me,["postcss-markdown"]:Me,["postcss-scss"]:Me}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{["tiny-warning"]:"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Me}}],["snowpack@>=3.3.0",{dependencies:{["node-gyp"]:"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Me}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@*",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Me,"vue-template-compiler":Me}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Me,"utf-8-validate":Me}}],["react-portal@*",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{["babel-polyfill"]:"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{["cross-spawn"]:"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@*",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@*",{dependencies:{["prop-types"]:"^15.7.2"}}],["@rebass/forms@*",{dependencies:{["@styled-system/should-forward-prop"]:"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Me,"vuetify-loader":Me}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Me}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Me}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Me}}],["consolidate@*",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Me,tinyliquid:Me,"liquid-node":Me,jade:Me,"then-jade":Me,dust:Me,"dustjs-helpers":Me,"dustjs-linkedin":Me,swig:Me,"swig-templates":Me,"razor-tmpl":Me,atpl:Me,liquor:Me,twig:Me,ejs:Me,eco:Me,jazz:Me,jqtpl:Me,hamljs:Me,hamlet:Me,whiskers:Me,"haml-coffee":Me,"hogan.js":Me,templayed:Me,handlebars:Me,underscore:Me,lodash:Me,pug:Me,"then-pug":Me,qejs:Me,walrus:Me,mustache:Me,just:Me,ect:Me,mote:Me,toffee:Me,dot:Me,"bracket-template":Me,ractive:Me,nunjucks:Me,htmling:Me,"babel-core":Me,plates:Me,"react-dom":Me,react:Me,"arc-templates":Me,vash:Me,slm:Me,marko:Me,teacup:Me,"coffee-script":Me,squirrelly:Me,twing:Me}}],["vue-loader@<=16.3.1",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"}}],["scss-parser@*",{dependencies:{lodash:"^4.17.21"}}],["query-ast@*",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@*",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@*",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@*",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@*",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Me}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Me}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(t=>[t,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Me,"webpack-command":Me}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Me}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Me}}]];var pL;function VAe(){return typeof pL=="undefined"&&(pL=require("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),pL}var dL;function _Ae(){return typeof dL=="undefined"&&(dL=require("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),dL}var CL;function XAe(){return typeof CL=="undefined"&&(CL=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),CL}var ZAe=new Map([[S.makeIdent(null,"fsevents").identHash,VAe],[S.makeIdent(null,"resolve").identHash,_Ae],[S.makeIdent(null,"typescript").identHash,XAe]]),bze={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,i]of zAe)e(S.parseDescriptor(r,!0),i)},getBuiltinPatch:async(t,e)=>{var s;let r="compat/";if(!e.startsWith(r))return;let i=S.parseIdent(e.slice(r.length)),n=(s=ZAe.get(i.identHash))==null?void 0:s();return typeof n!="undefined"?n:null},reduceDependency:async(t,e,r,i)=>typeof ZAe.get(t.identHash)=="undefined"?t:S.makeDescriptor(t,S.makeRange({protocol:"patch:",source:S.stringifyDescriptor(t),selector:`~builtin`,params:null}))}},vze=bze;var EL={};it(EL,{default:()=>xze});var V0=class extends Be{constructor(){super(...arguments);this.pkg=Y.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=Y.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=Y.String();this.args=Y.Proxy()}async execute(){let e=[];this.pkg&&e.push("--package",this.pkg),this.quiet&&e.push("--quiet");let r=S.parseIdent(this.command),i=S.makeIdent(r.scope,`create-${r.name}`);return this.cli.run(["dlx",...e,S.stringifyIdent(i),...this.args])}};V0.paths=[["create"]];var $Ae=V0;var jC=class extends Be{constructor(){super(...arguments);this.packages=Y.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=Y.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=Y.String();this.args=Y.Proxy()}async execute(){return fe.telemetry=null,await T.mktempPromise(async e=>{var p;let r=v.join(e,`dlx-${process.pid}`);await T.mkdirPromise(r),await T.writeFilePromise(v.join(r,"package.json"),`{} -`),await T.writeFilePromise(v.join(r,"yarn.lock"),"");let i=v.join(r,".yarnrc.yml"),n=await fe.findProjectCwd(this.context.cwd,wt.lockfile),s=!(await fe.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),o=n!==null?v.join(n,".yarnrc.yml"):null;o!==null&&T.existsSync(o)?(await T.copyFilePromise(o,i),await fe.updateConfiguration(r,d=>{let m=_(P({},d),{enableGlobalCache:s,enableTelemetry:!1});return Array.isArray(d.plugins)&&(m.plugins=d.plugins.map(I=>{let B=typeof I=="string"?I:I.path,b=M.isAbsolute(B)?B:M.resolve(M.fromPortablePath(n),B);return typeof I=="string"?b:{path:b,spec:I.spec}})),m})):await T.writeFilePromise(i,`enableGlobalCache: ${s} -enableTelemetry: false -`);let a=(p=this.packages)!=null?p:[this.command],l=S.parseDescriptor(this.command).name,c=await this.cli.run(["add","--",...a],{cwd:r,quiet:this.quiet});if(c!==0)return c;this.quiet||this.context.stdout.write(` -`);let u=await fe.find(r,this.context.plugins),{project:g,workspace:f}=await Ke.find(u,r);if(f===null)throw new rt(g.cwd,r);await g.restoreInstallState();let h=await Kt.getWorkspaceAccessibleBinaries(f);return h.has(l)===!1&&h.size===1&&typeof this.packages=="undefined"&&(l=Array.from(h)[0][0]),await Kt.executeWorkspaceAccessibleBinary(f,l,this.args,{packageAccessibleBinaries:h,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};jC.paths=[["dlx"]],jC.usage=ye.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-react-app to create a new React app","yarn dlx create-react-app ./my-app"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]});var ele=jC;var Sze={commands:[$Ae,ele]},xze=Sze;var xL={};it(xL,{default:()=>Dze,fileUtils:()=>IL});var hf=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,YC=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,Nr="file:";var IL={};it(IL,{makeArchiveFromLocator:()=>_0,makeBufferFromLocator:()=>BL,makeLocator:()=>wL,makeSpec:()=>tle,parseSpec:()=>yL});function yL(t){let{params:e,selector:r}=S.parseRange(t),i=M.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?S.parseLocator(e.locator):null,path:i}}function tle({parentLocator:t,path:e,folderHash:r,protocol:i}){let n=t!==null?{locator:S.stringifyLocator(t)}:{},s=typeof r!="undefined"?{hash:r}:{};return S.makeRange({protocol:i,source:e,selector:e,params:P(P({},s),n)})}function wL(t,{parentLocator:e,path:r,folderHash:i,protocol:n}){return S.makeLocator(t,tle({parentLocator:e,path:r,folderHash:i,protocol:n}))}async function _0(t,{protocol:e,fetchOptions:r,inMemory:i=!1}){let{parentLocator:n,path:s}=S.parseFileStyleRange(t.reference,{protocol:e}),o=v.isAbsolute(s)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(n,r),a=o.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,o.localPath)}:o;o!==a&&o.releaseFs&&o.releaseFs();let l=a.packageFs,c=v.join(a.prefixPath,s);return await de.releaseAfterUseAsync(async()=>await Ai.makeArchiveFromDirectory(c,{baseFs:l,prefixPath:S.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:i}),a.releaseFs)}async function BL(t,{protocol:e,fetchOptions:r}){return(await _0(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var QL=class{supports(e,r){return!!e.reference.startsWith(Nr)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Nr});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:o}}async fetchFromDisk(e,r){return _0(e,{protocol:Nr,fetchOptions:r})}};var kze=2,bL=class{supportsDescriptor(e,r){return e.range.match(hf)?!0:!!e.range.startsWith(Nr)}supportsLocator(e,r){return!!e.reference.startsWith(Nr)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return hf.test(e.range)&&(e=S.makeDescriptor(e,`${Nr}${e.range}`)),S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:n,parentLocator:s}=yL(e.range);if(s===null)throw new Error("Assertion failed: The descriptor should have been bound");let o=await BL(S.makeLocator(e,S.makeRange({protocol:Nr,source:n,selector:n,params:{locator:S.stringifyLocator(s)}})),{protocol:Nr,fetchOptions:i.fetchOptions}),a=mn.makeHash(`${kze}`,o).slice(0,6);return[wL(e,{parentLocator:s,path:n,folderHash:a,protocol:Nr})]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var vL=class{supports(e,r){return YC.test(e.reference)?!!e.reference.startsWith(Nr):!1}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromDisk(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Nr}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath)}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.join(o.prefixPath,n),c=await a.readFilePromise(l);return await de.releaseAfterUseAsync(async()=>await Ai.convertToZip(c,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1}),o.releaseFs)}};var SL=class{supportsDescriptor(e,r){return YC.test(e.range)?!!(e.range.startsWith(Nr)||hf.test(e.range)):!1}supportsLocator(e,r){return YC.test(e.reference)?!!e.reference.startsWith(Nr):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return hf.test(e.range)&&(e=S.makeDescriptor(e,`${Nr}${e.range}`)),S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range;return n.startsWith(Nr)&&(n=n.slice(Nr.length)),[S.makeLocator(e,`${Nr}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var Pze={fetchers:[vL,QL],resolvers:[SL,bL]},Dze=Pze;var PL={};it(PL,{default:()=>Nze});var rle=ie(require("querystring")),ile=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function nle(t){return t?ile.some(e=>!!t.match(e)):!1}function sle(t){let e;for(let a of ile)if(e=t.match(a),e)break;if(!e)throw new Error(Rze(t));let[,r,i,n,s="master"]=e,{commit:o}=rle.default.parse(s);return s=o||s.replace(/[^:]*:/,""),{auth:r,username:i,reponame:n,treeish:s}}function Rze(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var kL=class{supports(e,r){return!!nle(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i=await Zt.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await T.mktempPromise(async n=>{let s=new Ft(n);await Ai.extractArchiveTo(i,s,{stripComponents:1});let o=Uc.splitRepoUrl(e.reference),a=v.join(n,"package.tgz");await Kt.prepareExternalProject(n,a,{configuration:r.project.configuration,report:r.report,workspace:o.extra.workspace,locator:e});let l=await T.readFilePromise(a);return await Ai.convertToZip(l,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:i,username:n,reponame:s,treeish:o}=sle(e.reference);return`https://${i?`${i}@`:""}github.com/${n}/${s}/archive/${o}.tar.gz`}};var Fze={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let i=new kL;if(!i.supports(e,r))return null;try{return await i.fetch(e,r)}catch(n){return null}}}},Nze=Fze;var FL={};it(FL,{default:()=>Tze});var qC=/^[^?]*\.(?:tar\.gz|tgz)(?:\?.*)?$/,JC=/^https?:/;var DL=class{supports(e,r){return qC.test(e.reference)?!!JC.test(e.reference):!1}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i=await Zt.get(e.reference,{configuration:r.project.configuration});return await Ai.convertToZip(i,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}};var RL=class{supportsDescriptor(e,r){return qC.test(e.range)?!!JC.test(e.range):!1}supportsLocator(e,r){return qC.test(e.reference)?!!JC.test(e.reference):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){return[S.convertDescriptorToLocator(e)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var Lze={fetchers:[DL],resolvers:[RL]},Tze=Lze;var ML={};it(ML,{default:()=>M5e});var Rle=ie(Dle()),TL=ie(require("util")),WC=class extends Be{constructor(){super(...arguments);this.private=Y.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=Y.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=Y.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.usev2=Y.Boolean("-2",!1,{hidden:!0});this.yes=Y.Boolean("-y,--yes",{hidden:!0});this.assumeFreshProject=Y.Boolean("--assume-fresh-project",!1,{hidden:!0})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return r!==null?await this.executeProxy(e,r):await this.executeRegular(e)}async executeProxy(e,r){if(e.projectCwd!==null&&e.projectCwd!==this.context.cwd)throw new me("Cannot use the --install flag from within a project subdirectory");T.existsSync(this.context.cwd)||await T.mkdirPromise(this.context.cwd,{recursive:!0});let i=v.join(this.context.cwd,e.get("lockfileFilename"));T.existsSync(i)||await T.writeFilePromise(i,"");let n=await this.cli.run(["set","version",r],{quiet:!0});if(n!==0)return n;let s=[];return this.private&&s.push("-p"),this.workspace&&s.push("-w"),this.yes&&s.push("-y"),await T.mktempPromise(async o=>{let{code:a}=await hr.pipevp("yarn",["init",...s],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await Kt.makeScriptEnv({binFolder:o})});return a})}async executeRegular(e){var l;let r=null;try{r=(await Ke.find(e,this.context.cwd)).project}catch{r=null}T.existsSync(this.context.cwd)||await T.mkdirPromise(this.context.cwd,{recursive:!0});let i=await Ze.tryFind(this.context.cwd)||new Ze,n=Object.fromEntries(e.get("initFields").entries());i.load(n),i.name=(l=i.name)!=null?l:S.makeIdent(e.get("initScope"),v.basename(this.context.cwd)),i.packageManager=Zr&&de.isTaggedYarnVersion(Zr)?`yarn@${Zr}`:null,typeof i.raw.private=="undefined"&&(this.private||this.workspace&&i.workspaceDefinitions.length===0)&&(i.private=!0),this.workspace&&i.workspaceDefinitions.length===0&&(await T.mkdirPromise(v.join(this.context.cwd,"packages"),{recursive:!0}),i.workspaceDefinitions=[{pattern:"packages/*"}]);let s={};i.exportTo(s),TL.inspect.styles.name="cyan",this.context.stdout.write(`${(0,TL.inspect)(s,{depth:Infinity,colors:!0,compact:!1})} -`);let o=v.join(this.context.cwd,Ze.fileName);await T.changeFilePromise(o,`${JSON.stringify(s,null,2)} -`,{automaticNewlines:!0});let a=v.join(this.context.cwd,"README.md");if(T.existsSync(a)||await T.writeFilePromise(a,`# ${S.stringifyIdent(i.name)} -`),!r||r.cwd===this.context.cwd){let c=v.join(this.context.cwd,wt.lockfile);T.existsSync(c)||await T.writeFilePromise(c,"");let g=["/.yarn/*","!/.yarn/patches","!/.yarn/plugins","!/.yarn/releases","!/.yarn/sdks","","# Swap the comments on the following lines if you don't wish to use zero-installs","# Documentation here: https://yarnpkg.com/features/zero-installs","!/.yarn/cache","#/.pnp.*"].map(m=>`${m} -`).join(""),f=v.join(this.context.cwd,".gitignore");T.existsSync(f)||await T.writeFilePromise(f,g);let h={["*"]:{endOfLine:"lf",insertFinalNewline:!0},["*.{js,json,yml}"]:{charset:"utf-8",indentStyle:"space",indentSize:2}};(0,Rle.default)(h,e.get("initEditorConfig"));let p=`root = true -`;for(let[m,I]of Object.entries(h)){p+=` -[${m}] -`;for(let[B,b]of Object.entries(I))p+=`${B.replace(/[A-Z]/g,H=>`_${H.toLowerCase()}`)} = ${b} -`}let d=v.join(this.context.cwd,".editorconfig");T.existsSync(d)||await T.writeFilePromise(d,p),T.existsSync(v.join(this.context.cwd,".git"))||await hr.execvp("git",["init"],{cwd:this.context.cwd})}}};WC.paths=[["init"]],WC.usage=ye.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]});var Fle=WC;var T5e={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:ge.STRING,default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:ge.MAP,valueDefinition:{description:"",type:ge.ANY}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:ge.MAP,valueDefinition:{description:"",type:ge.ANY}}},commands:[Fle]},M5e=T5e;var GL={};it(GL,{default:()=>K5e});var Ua="portal:",Ha="link:";var OL=class{supports(e,r){return!!e.reference.startsWith(Ua)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ua});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){var c;let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ua}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath),localPath:Se.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new Ft(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,localPath:l}:{packageFs:new Zo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot}}};var KL=class{supportsDescriptor(e,r){return!!e.range.startsWith(Ua)}supportsLocator(e,r){return!!e.reference.startsWith(Ua)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(Ua.length);return[S.makeLocator(e,`${Ua}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.SOFT,conditions:n.getConditions(),dependencies:new Map([...n.dependencies]),peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var UL=class{supports(e,r){return!!e.reference.startsWith(Ha)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ha});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){var c;let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ha}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath),localPath:Se.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new Ft(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,discardFromLookup:!0,localPath:l}:{packageFs:new Zo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,discardFromLookup:!0}}};var HL=class{supportsDescriptor(e,r){return!!e.range.startsWith(Ha)}supportsLocator(e,r){return!!e.reference.startsWith(Ha)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(Ha.length);return[S.makeLocator(e,`${Ha}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){return _(P({},e),{version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:gt.SOFT,conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map})}};var O5e={fetchers:[UL,OL],resolvers:[HL,KL]},K5e=O5e;var mT={};it(mT,{default:()=>Y6e});var Ga;(function(i){i[i.YES=0]="YES",i[i.NO=1]="NO",i[i.DEPENDS=2]="DEPENDS"})(Ga||(Ga={}));var jL=(t,e)=>`${t}@${e}`,Nle=(t,e)=>{let r=e.indexOf("#"),i=r>=0?e.substring(r+1):e;return jL(t,i)},qs;(function(s){s[s.NONE=-1]="NONE",s[s.PERF=0]="PERF",s[s.CHECK=1]="CHECK",s[s.REASONS=2]="REASONS",s[s.INTENSIVE_CHECK=9]="INTENSIVE_CHECK"})(qs||(qs={}));var Tle=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),i=e.check||r>=9,n=e.hoistingLimits||new Map,s={check:i,debugLevel:r,hoistingLimits:n,fastLookupPossible:!0},o;s.debugLevel>=0&&(o=Date.now());let a=U5e(t,s),l=!1,c=0;do l=YL(a,[a],new Set([a.locator]),new Map,s).anotherRoundNeeded,s.fastLookupPossible=!1,c++;while(l);if(s.debugLevel>=0&&console.log(`hoist time: ${Date.now()-o}ms, rounds: ${c}`),s.debugLevel>=1){let u=zC(a);if(YL(a,[a],new Set([a.locator]),new Map,s).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: -${u}, next tree: -${zC(a)}`);let f=Lle(a);if(f)throw new Error(`${f}, after hoisting finished: -${zC(a)}`)}return s.debugLevel>=2&&console.log(zC(a)),H5e(a)},G5e=t=>{let e=t[t.length-1],r=new Map,i=new Set,n=s=>{if(!i.has(s)){i.add(s);for(let o of s.hoistedDependencies.values())r.set(o.name,o);for(let o of s.dependencies.values())s.peerNames.has(o.name)||n(o)}};return n(e),r},j5e=t=>{let e=t[t.length-1],r=new Map,i=new Set,n=new Set,s=(o,a)=>{if(i.has(o))return;i.add(o);for(let c of o.hoistedDependencies.values())if(!a.has(c.name)){let u;for(let g of t)u=g.dependencies.get(c.name),u&&r.set(u.name,u)}let l=new Set;for(let c of o.dependencies.values())l.add(c.name);for(let c of o.dependencies.values())o.peerNames.has(c.name)||s(c,l)};return s(e,n),r},Mle=(t,e)=>{if(e.decoupled)return e;let{name:r,references:i,ident:n,locator:s,dependencies:o,originalDependencies:a,hoistedDependencies:l,peerNames:c,reasons:u,isHoistBorder:g,hoistPriority:f,isWorkspace:h,hoistedFrom:p,hoistedTo:d}=e,m={name:r,references:new Set(i),ident:n,locator:s,dependencies:new Map(o),originalDependencies:new Map(a),hoistedDependencies:new Map(l),peerNames:new Set(c),reasons:new Map(u),decoupled:!0,isHoistBorder:g,hoistPriority:f,isWorkspace:h,hoistedFrom:new Map(p),hoistedTo:new Map(d)},I=m.dependencies.get(r);return I&&I.ident==m.ident&&m.dependencies.set(r,m),t.dependencies.set(m.name,m),m},Y5e=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let n of t.dependencies.values())t.peerNames.has(n.name)||r.set(n.name,[n.ident]);let i=Array.from(e.keys());i.sort((n,s)=>{let o=e.get(n),a=e.get(s);return a.hoistPriority!==o.hoistPriority?a.hoistPriority-o.hoistPriority:a.peerDependents.size!==o.peerDependents.size?a.peerDependents.size-o.peerDependents.size:a.dependents.size-o.dependents.size});for(let n of i){let s=n.substring(0,n.indexOf("@",1)),o=n.substring(s.length+1);if(!t.peerNames.has(s)){let a=r.get(s);a||(a=[],r.set(s,a)),a.indexOf(o)<0&&a.push(o)}}return r},qL=t=>{let e=new Set,r=(i,n=new Set)=>{if(!n.has(i)){n.add(i);for(let s of i.peerNames)if(!t.peerNames.has(s)){let o=t.dependencies.get(s);o&&!e.has(o)&&r(o,n)}e.add(i)}};for(let i of t.dependencies.values())t.peerNames.has(i.name)||r(i);return e},YL=(t,e,r,i,n,s=new Set)=>{let o=e[e.length-1];if(s.has(o))return{anotherRoundNeeded:!1,isGraphChanged:!1};s.add(o);let a=J5e(o),l=Y5e(o,a),c=t==o?new Map:n.fastLookupPossible?G5e(e):j5e(e),u,g=!1,f=!1,h=new Map(Array.from(l.entries()).map(([d,m])=>[d,m[0]])),p=new Map;do{let d=q5e(t,e,r,c,h,l,i,p,n);d.isGraphChanged&&(f=!0),d.anotherRoundNeeded&&(g=!0),u=!1;for(let[m,I]of l)I.length>1&&!o.dependencies.has(m)&&(h.delete(m),I.shift(),h.set(m,I[0]),u=!0)}while(u);for(let d of o.dependencies.values())if(!o.peerNames.has(d.name)&&!r.has(d.locator)){r.add(d.locator);let m=YL(t,[...e,d],r,p,n);m.isGraphChanged&&(f=!0),m.anotherRoundNeeded&&(g=!0),r.delete(d.locator)}return{anotherRoundNeeded:g,isGraphChanged:f}},W5e=(t,e,r,i,n,s,o,a,{outputReason:l,fastLookupPossible:c})=>{let u,g=null,f=new Set;l&&(u=`${Array.from(e).map(m=>wi(m)).join("\u2192")}`);let h=r[r.length-1],d=!(i.ident===h.ident);if(l&&!d&&(g="- self-reference"),d&&(d=!i.isWorkspace,l&&!d&&(g="- workspace")),d&&(d=!h.isWorkspace||h.hoistedFrom.has(i.name)||e.size===1,l&&!d&&(g=h.reasons.get(i.name))),d&&(d=!t.peerNames.has(i.name),l&&!d&&(g=`- cannot shadow peer: ${wi(t.originalDependencies.get(i.name).locator)} at ${u}`)),d){let m=!1,I=n.get(i.name);if(m=!I||I.ident===i.ident,l&&!m&&(g=`- filled by: ${wi(I.locator)} at ${u}`),m)for(let B=r.length-1;B>=1;B--){let R=r[B].dependencies.get(i.name);if(R&&R.ident!==i.ident){m=!1;let H=a.get(h);H||(H=new Set,a.set(h,H)),H.add(i.name),l&&(g=`- filled by ${wi(R.locator)} at ${r.slice(0,B).map(L=>wi(L.locator)).join("\u2192")}`);break}}d=m}if(d&&(d=s.get(i.name)===i.ident,l&&!d&&(g=`- filled by: ${wi(o.get(i.name)[0])} at ${u}`)),d){let m=!0,I=new Set(i.peerNames);for(let B=r.length-1;B>=1;B--){let b=r[B];for(let R of I){if(b.peerNames.has(R)&&b.originalDependencies.has(R))continue;let H=b.dependencies.get(R);H&&t.dependencies.get(R)!==H&&(B===r.length-1?f.add(H):(f=null,m=!1,l&&(g=`- peer dependency ${wi(H.locator)} from parent ${wi(b.locator)} was not hoisted to ${u}`))),I.delete(R)}if(!m)break}d=m}if(d&&!c)for(let m of i.hoistedDependencies.values()){let I=n.get(m.name);if(!I||m.ident!==I.ident){d=!1,l&&(g=`- previously hoisted dependency mismatch, needed: ${wi(m.locator)}, available: ${wi(I==null?void 0:I.locator)}`);break}}return f!==null&&f.size>0?{isHoistable:2,dependsOn:f,reason:g}:{isHoistable:d?0:1,reason:g}},q5e=(t,e,r,i,n,s,o,a,l)=>{let c=e[e.length-1],u=new Set,g=!1,f=!1,h=(m,I,B,b)=>{if(u.has(B))return;let R=[...I,B.locator],H=new Map,L=new Map;for(let q of qL(B)){let A=W5e(c,r,[c,...m,B],q,i,n,s,a,{outputReason:l.debugLevel>=2,fastLookupPossible:l.fastLookupPossible});if(L.set(q,A),A.isHoistable===2)for(let V of A.dependsOn){let W=H.get(V.name)||new Set;W.add(q.name),H.set(V.name,W)}}let K=new Set,J=(q,A,V)=>{if(!K.has(q)){K.add(q),L.set(q,{isHoistable:1,reason:V});for(let W of H.get(q.name)||[])J(B.dependencies.get(W),A,l.debugLevel>=2?`- peer dependency ${wi(q.locator)} from parent ${wi(B.locator)} was not hoisted`:"")}};for(let[q,A]of L)A.isHoistable===1&&J(q,A,A.reason);for(let q of L.keys())if(!K.has(q)){f=!0;let A=o.get(B);A&&A.has(q.name)&&(g=!0),B.dependencies.delete(q.name),B.hoistedDependencies.set(q.name,q),B.reasons.delete(q.name);let V=c.dependencies.get(q.name);if(l.debugLevel>=2){let W=Array.from(I).concat([B.locator]).map(F=>wi(F)).join("\u2192"),X=c.hoistedFrom.get(q.name);X||(X=[],c.hoistedFrom.set(q.name,X)),X.push(W),B.hoistedTo.set(q.name,Array.from(e).map(F=>wi(F.locator)).join("\u2192"))}if(!V)c.ident!==q.ident&&(c.dependencies.set(q.name,q),b.add(q));else for(let W of q.references)V.references.add(W)}if(l.check){let q=Lle(t);if(q)throw new Error(`${q}, after hoisting dependencies of ${[c,...m,B].map(A=>wi(A.locator)).join("\u2192")}: -${zC(t)}`)}let ne=qL(B);for(let q of ne)if(K.has(q)){let A=L.get(q);if((n.get(q.name)===q.ident||!B.reasons.has(q.name))&&A.isHoistable!==0&&B.reasons.set(q.name,A.reason),!q.isHoistBorder&&R.indexOf(q.locator)<0){u.add(B);let W=Mle(B,q);h([...m,B],[...I,B.locator],W,d),u.delete(B)}}},p,d=new Set(qL(c));do{p=d,d=new Set;for(let m of p){if(m.locator===c.locator||m.isHoistBorder)continue;let I=Mle(c,m);h([],Array.from(r),I,d)}}while(d.size>0);return{anotherRoundNeeded:g,isGraphChanged:f}},Lle=t=>{let e=[],r=new Set,i=new Set,n=(s,o,a)=>{if(r.has(s)||(r.add(s),i.has(s)))return;let l=new Map(o);for(let c of s.dependencies.values())s.peerNames.has(c.name)||l.set(c.name,c);for(let c of s.originalDependencies.values()){let u=l.get(c.name),g=()=>`${Array.from(i).concat([s]).map(f=>wi(f.locator)).join("\u2192")}`;if(s.peerNames.has(c.name)){let f=o.get(c.name);(f!==u||!f||f.ident!==c.ident)&&e.push(`${g()} - broken peer promise: expected ${c.ident} but found ${f&&f.ident}`)}else{let f=a.hoistedFrom.get(s.name),h=s.hoistedTo.get(c.name),p=`${f?` hoisted from ${f.join(", ")}`:""}`,d=`${h?` hoisted to ${h}`:""}`,m=`${g()}${p}`;u?u.ident!==c.ident&&e.push(`${m} - broken require promise for ${c.name}${d}: expected ${c.ident}, but found: ${u.ident}`):e.push(`${m} - broken require promise: no required dependency ${c.name}${d} found`)}}i.add(s);for(let c of s.dependencies.values())s.peerNames.has(c.name)||n(c,l,s);i.delete(s)};return n(t,t.dependencies,t),e.join(` -`)},U5e=(t,e)=>{let{identName:r,name:i,reference:n,peerNames:s}=t,o={name:i,references:new Set([n]),locator:jL(r,n),ident:Nle(r,n),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(s),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,isWorkspace:!0,hoistedFrom:new Map,hoistedTo:new Map},a=new Map([[t,o]]),l=(c,u)=>{let g=a.get(c),f=!!g;if(!g){let{name:h,identName:p,reference:d,peerNames:m,hoistPriority:I,isWorkspace:B}=c,b=e.hoistingLimits.get(u.locator);g={name:h,references:new Set([d]),locator:jL(p,d),ident:Nle(p,d),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(m),reasons:new Map,decoupled:!0,isHoistBorder:b?b.has(h):!1,hoistPriority:I||0,isWorkspace:B||!1,hoistedFrom:new Map,hoistedTo:new Map},a.set(c,g)}if(u.dependencies.set(c.name,g),u.originalDependencies.set(c.name,g),f){let h=new Set,p=d=>{if(!h.has(d)){h.add(d),d.decoupled=!1;for(let m of d.dependencies.values())d.peerNames.has(m.name)||p(m)}};p(g)}else for(let h of c.dependencies)l(h,g)};for(let c of t.dependencies)l(c,o);return o},JL=t=>t.substring(0,t.indexOf("@",1)),H5e=t=>{let e={name:t.name,identName:JL(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),i=(n,s,o)=>{let a=r.has(n),l;if(s===n)l=o;else{let{name:c,references:u,locator:g}=n;l={name:c,identName:JL(g),references:u,dependencies:new Set}}if(o.dependencies.add(l),!a){r.add(n);for(let c of n.dependencies.values())n.peerNames.has(c.name)||i(c,n,l);r.delete(n)}};for(let n of t.dependencies.values())i(n,t,e);return e},J5e=t=>{let e=new Map,r=new Set([t]),i=o=>`${o.name}@${o.ident}`,n=o=>{let a=i(o),l=e.get(a);return l||(l={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(a,l)),l},s=(o,a)=>{let l=!!r.has(a);if(n(a).dependents.add(o.ident),!l){r.add(a);for(let u of a.dependencies.values()){let g=n(u);g.hoistPriority=Math.max(g.hoistPriority,u.hoistPriority),a.peerNames.has(u.name)?g.peerDependents.add(a.ident):s(a,u)}}};for(let o of t.dependencies.values())t.peerNames.has(o.name)||s(t,o);return e},wi=t=>{if(!t)return"none";let e=t.indexOf("@",1),r=t.substring(0,e);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let i=t.substring(e+1);if(i==="workspace:.")return".";if(i){let n=(i.indexOf("#")>0?i.split("#")[1]:i).replace("npm:","");return i.startsWith("virtual")&&(r=`v:${r}`),n.startsWith("workspace")&&(r=`w:${r}`,n=""),`${r}${n?`@${n}`:""}`}else return`${r}`},Ole=5e4,zC=t=>{let e=0,r=(n,s,o="")=>{if(e>Ole||s.has(n))return"";e++;let a=Array.from(n.dependencies.values()).sort((c,u)=>c.name.localeCompare(u.name)),l="";s.add(n);for(let c=0;c":"")+(f!==u.name?`a:${u.name}:`:"")+wi(u.locator)+(g?` ${g}`:"")+(u!==n&&h.length>0?`, hoisted from: ${h.join(", ")}`:"")} -`,l+=r(u,s,`${o}${cOle?` -Tree is too large, part of the tree has been dunped -`:"")};var Js;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(Js||(Js={}));var Sn;(function(i){i.WORKSPACES="workspaces",i.DEPENDENCIES="dependencies",i.NONE="none"})(Sn||(Sn={}));var Kle="node_modules",Hc="$wsroot$";var VC=(t,e)=>{let{packageTree:r,hoistingLimits:i,errors:n,preserveSymlinksRequired:s}=z5e(t,e),o=null;if(n.length===0){let a=Tle(r,{hoistingLimits:i});o=V5e(t,a,e)}return{tree:o,errors:n,preserveSymlinksRequired:s}},ms=t=>`${t.name}@${t.reference}`,WL=t=>{let e=new Map;for(let[r,i]of t.entries())if(!i.dirList){let n=e.get(i.locator);n||(n={target:i.target,linkType:i.linkType,locations:[],aliases:i.aliases},e.set(i.locator,n)),n.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((i,n)=>{let s=i.split(v.delimiter).length,o=n.split(v.delimiter).length;return s!==o?o-s:n.localeCompare(i)});return e},Ule=(t,e)=>{let r=S.isVirtualLocator(t)?S.devirtualizeLocator(t):t,i=S.isVirtualLocator(e)?S.devirtualizeLocator(e):e;return S.areLocatorsEqual(r,i)},zL=(t,e,r,i)=>{if(t.linkType!==Js.SOFT)return!1;let n=M.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation);return v.contains(i,n)===null},_5e=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(t.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let i=M.toPortablePath(e.packageLocation.slice(0,-1)),n=new Map,s={children:new Map},o=t.getDependencyTreeRoots(),a=new Map,l=new Set,c=(f,h)=>{let p=ms(f);if(l.has(p))return;l.add(p);let d=t.getPackageInformation(f);if(d){let m=h?ms(h):"";if(ms(f)!==m&&d.linkType===Js.SOFT&&!zL(d,f,t,i)){let I=Hle(d,f,t);(!a.get(I)||f.reference.startsWith("workspace:"))&&a.set(I,f)}for(let[I,B]of d.packageDependencies)B!==null&&(d.packagePeers.has(I)||c(t.getLocator(I,B),f))}};for(let f of o)c(f,null);let u=i.split(v.sep);for(let f of a.values()){let h=t.getPackageInformation(f),d=M.toPortablePath(h.packageLocation.slice(0,-1)).split(v.sep).slice(u.length),m=s;for(let I of d){let B=m.children.get(I);B||(B={children:new Map},m.children.set(I,B)),m=B}m.workspaceLocator=f}let g=(f,h)=>{if(f.workspaceLocator){let p=ms(h),d=n.get(p);d||(d=new Set,n.set(p,d)),d.add(f.workspaceLocator)}for(let p of f.children.values())g(p,f.workspaceLocator||h)};for(let f of s.children.values())g(f,s.workspaceLocator);return n},z5e=(t,e)=>{let r=[],i=!1,n=new Map,s=_5e(t),o=t.getPackageInformation(t.topLevel);if(o===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let a=t.findPackageLocator(o.packageLocation);if(a===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let l=M.toPortablePath(o.packageLocation.slice(0,-1)),c={name:a.name,identName:a.name,reference:a.reference,peerNames:o.packagePeers,dependencies:new Set,isWorkspace:!0},u=new Map,g=(h,p)=>`${ms(p)}:${h}`,f=(h,p,d,m,I,B,b,R)=>{var X,F;let H=g(h,d),L=u.get(H),K=!!L;!K&&d.name===a.name&&d.reference===a.reference&&(L=c,u.set(H,c));let J=zL(p,d,t,l);if(!L){let D=p.linkType===Js.SOFT&&d.name.endsWith(Hc);L={name:h,identName:d.name,reference:d.reference,dependencies:new Set,peerNames:D?new Set:p.packagePeers,isWorkspace:D},u.set(H,L)}let ne;if(J?ne=2:I.linkType===Js.SOFT?ne=1:ne=0,L.hoistPriority=Math.max(L.hoistPriority||0,ne),R&&!J){let D=ms({name:m.identName,reference:m.reference}),he=n.get(D)||new Set;n.set(D,he),he.add(L.name)}let q=new Map(p.packageDependencies);if(e.project){let D=e.project.workspacesByCwd.get(M.toPortablePath(p.packageLocation.slice(0,-1)));if(D){let he=new Set([...Array.from(D.manifest.peerDependencies.values(),pe=>S.stringifyIdent(pe)),...Array.from(D.manifest.peerDependenciesMeta.keys())]);for(let pe of he)q.has(pe)||(q.set(pe,B.get(pe)||null),L.peerNames.add(pe))}}let A=ms({name:d.name.replace(Hc,""),reference:d.reference}),V=s.get(A);if(V)for(let D of V)q.set(`${D.name}${Hc}`,D.reference);(p!==I||p.linkType!==Js.SOFT||!e.selfReferencesByCwd||e.selfReferencesByCwd.get(b))&&m.dependencies.add(L);let W=d!==a&&p.linkType===Js.SOFT&&!d.name.endsWith(Hc)&&!J;if(!K&&!W){let D=new Map;for(let[he,pe]of q)if(pe!==null){let Ne=t.getLocator(he,pe),Pe=t.getLocator(he.replace(Hc,""),pe),qe=t.getPackageInformation(Pe);if(qe===null)throw new Error("Assertion failed: Expected the package to have been registered");let re=zL(qe,Ne,t,l);if(e.validateExternalSoftLinks&&e.project&&re){qe.packageDependencies.size>0&&(i=!0);for(let[De,$]of qe.packageDependencies)if($!==null){let G=S.parseLocator(Array.isArray($)?`${$[0]}@${$[1]}`:`${De}@${$}`);if(ms(G)!==ms(Ne)){let Ce=q.get(De);if(Ce){let ee=S.parseLocator(Array.isArray(Ce)?`${Ce[0]}@${Ce[1]}`:`${De}@${Ce}`);Ule(ee,G)||r.push({messageName:z.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK,text:`Cannot link ${S.prettyIdent(e.project.configuration,S.parseIdent(Ne.name))} into ${S.prettyLocator(e.project.configuration,S.parseLocator(`${d.name}@${d.reference}`))} dependency ${S.prettyLocator(e.project.configuration,G)} conflicts with parent dependency ${S.prettyLocator(e.project.configuration,ee)}`})}else{let ee=D.get(De);if(ee){let Ue=ee.target,Oe=S.parseLocator(Array.isArray(Ue)?`${Ue[0]}@${Ue[1]}`:`${De}@${Ue}`);Ule(Oe,G)||r.push({messageName:z.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK,text:`Cannot link ${S.prettyIdent(e.project.configuration,S.parseIdent(Ne.name))} into ${S.prettyLocator(e.project.configuration,S.parseLocator(`${d.name}@${d.reference}`))} dependency ${S.prettyLocator(e.project.configuration,G)} conflicts with dependency ${S.prettyLocator(e.project.configuration,Oe)} from sibling portal ${S.prettyIdent(e.project.configuration,S.parseIdent(ee.portal.name))}`})}else D.set(De,{target:G.reference,portal:Ne})}}}}let se=(X=e.hoistingLimitsByCwd)==null?void 0:X.get(b),be=re?b:v.relative(l,M.toPortablePath(qe.packageLocation))||Se.dot,ae=(F=e.hoistingLimitsByCwd)==null?void 0:F.get(be),Ae=se===Sn.DEPENDENCIES||ae===Sn.DEPENDENCIES||ae===Sn.WORKSPACES;f(ms(Ne)===ms(d)?h:he,qe,Ne,L,p,q,be,Ae)}}};return f(a.name,o,a,c,o,o.packageDependencies,Se.dot,!1),{packageTree:c,hoistingLimits:n,errors:r,preserveSymlinksRequired:i}};function Hle(t,e,r){let i=r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation;return M.toPortablePath(i||t.packageLocation)}function X5e(t,e,r){let i=e.getLocator(t.name.replace(Hc,""),t.reference),n=e.getPackageInformation(i);if(n===null)throw new Error("Assertion failed: Expected the package to be registered");let s,o;return r.pnpifyFs?(o=M.toPortablePath(n.packageLocation),s=Js.SOFT):(o=Hle(n,t,e),s=n.linkType),{linkType:s,target:o}}var V5e=(t,e,r)=>{let i=new Map,n=(u,g,f)=>{let{linkType:h,target:p}=X5e(u,t,r);return{locator:ms(u),nodePath:g,target:p,linkType:h,aliases:f}},s=u=>{let[g,f]=u.split("/");return f?{scope:kr(g),name:kr(f)}:{scope:null,name:kr(g)}},o=new Set,a=(u,g,f)=>{if(!o.has(u)){o.add(u);for(let h of u.dependencies){if(h===u)continue;let p=Array.from(h.references).sort(),d={name:h.identName,reference:p[0]},{name:m,scope:I}=s(h.name),B=I?[I,m]:[m],b=v.join(g,Kle),R=v.join(b,...B),H=`${f}/${d.name}`,L=n(d,f,p.slice(1)),K=!1;if(L.linkType===Js.SOFT&&r.project){let J=r.project.workspacesByCwd.get(L.target.slice(0,-1));K=!!(J&&!J.manifest.name)}if(!h.name.endsWith(Hc)&&!K){let J=i.get(R);if(J){if(J.dirList)throw new Error(`Assertion failed: ${R} cannot merge dir node with leaf node`);{let V=S.parseLocator(J.locator),W=S.parseLocator(L.locator);if(J.linkType!==L.linkType)throw new Error(`Assertion failed: ${R} cannot merge nodes with different link types ${J.nodePath}/${S.stringifyLocator(V)} and ${f}/${S.stringifyLocator(W)}`);if(V.identHash!==W.identHash)throw new Error(`Assertion failed: ${R} cannot merge nodes with different idents ${J.nodePath}/${S.stringifyLocator(V)} and ${f}/s${S.stringifyLocator(W)}`);L.aliases=[...L.aliases,...J.aliases,S.parseLocator(J.locator).reference]}}i.set(R,L);let ne=R.split("/"),q=ne.indexOf(Kle),A=ne.length-1;for(;q>=0&&A>q;){let V=M.toPortablePath(ne.slice(0,A).join(v.sep)),W=kr(ne[A]),X=i.get(V);if(!X)i.set(V,{dirList:new Set([W])});else if(X.dirList){if(X.dirList.has(W))break;X.dirList.add(W)}A--}}a(h,L.linkType===Js.SOFT?L.target:R,H)}}},l=n({name:e.name,reference:Array.from(e.references)[0]},"",[]),c=l.target;return i.set(c,l),a(e,c,""),i};var oT={};it(oT,{PnpInstaller:()=>Cf,PnpLinker:()=>jc,default:()=>m6e,getPnpPath:()=>qA,jsInstallUtils:()=>Ws,pnpUtils:()=>nT,quotePathIfNeeded:()=>uce});var lce=ie(Or()),cce=ie(require("url"));var Gle;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(Gle||(Gle={}));var Ht;(function(f){f.DEFAULT="DEFAULT",f.TOP_LEVEL="TOP_LEVEL",f.FALLBACK_EXCLUSION_LIST="FALLBACK_EXCLUSION_LIST",f.FALLBACK_EXCLUSION_ENTRIES="FALLBACK_EXCLUSION_ENTRIES",f.FALLBACK_EXCLUSION_DATA="FALLBACK_EXCLUSION_DATA",f.PACKAGE_REGISTRY_DATA="PACKAGE_REGISTRY_DATA",f.PACKAGE_REGISTRY_ENTRIES="PACKAGE_REGISTRY_ENTRIES",f.PACKAGE_STORE_DATA="PACKAGE_STORE_DATA",f.PACKAGE_STORE_ENTRIES="PACKAGE_STORE_ENTRIES",f.PACKAGE_INFORMATION_DATA="PACKAGE_INFORMATION_DATA",f.PACKAGE_DEPENDENCIES="PACKAGE_DEPENDENCIES",f.PACKAGE_DEPENDENCY="PACKAGE_DEPENDENCY"})(Ht||(Ht={}));var jle={[Ht.DEFAULT]:{collapsed:!1,next:{["*"]:Ht.DEFAULT}},[Ht.TOP_LEVEL]:{collapsed:!1,next:{fallbackExclusionList:Ht.FALLBACK_EXCLUSION_LIST,packageRegistryData:Ht.PACKAGE_REGISTRY_DATA,["*"]:Ht.DEFAULT}},[Ht.FALLBACK_EXCLUSION_LIST]:{collapsed:!1,next:{["*"]:Ht.FALLBACK_EXCLUSION_ENTRIES}},[Ht.FALLBACK_EXCLUSION_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.FALLBACK_EXCLUSION_DATA}},[Ht.FALLBACK_EXCLUSION_DATA]:{collapsed:!0,next:{["*"]:Ht.DEFAULT}},[Ht.PACKAGE_REGISTRY_DATA]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_REGISTRY_ENTRIES}},[Ht.PACKAGE_REGISTRY_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.PACKAGE_STORE_DATA}},[Ht.PACKAGE_STORE_DATA]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_STORE_ENTRIES}},[Ht.PACKAGE_STORE_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.PACKAGE_INFORMATION_DATA}},[Ht.PACKAGE_INFORMATION_DATA]:{collapsed:!1,next:{packageDependencies:Ht.PACKAGE_DEPENDENCIES,["*"]:Ht.DEFAULT}},[Ht.PACKAGE_DEPENDENCIES]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_DEPENDENCY}},[Ht.PACKAGE_DEPENDENCY]:{collapsed:!0,next:{["*"]:Ht.DEFAULT}}};function Z5e(t,e,r){let i="";i+="[";for(let n=0,s=t.length;ns(o)));let n=r.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>r[s])}function r6e(t){let e=new Map,r=_C(t.fallbackExclusionList||[],[({name:i,reference:n})=>i,({name:i,reference:n})=>n]);for(let{name:i,reference:n}of r){let s=e.get(i);typeof s=="undefined"&&e.set(i,s=new Set),s.add(n)}return Array.from(e).map(([i,n])=>[i,Array.from(n)])}function i6e(t){return _C(t.fallbackPool||[],([e])=>e)}function n6e(t){let e=[];for(let[r,i]of _C(t.packageRegistry,([n])=>n===null?"0":`1${n}`)){let n=[];e.push([r,n]);for(let[s,{packageLocation:o,packageDependencies:a,packagePeers:l,linkType:c,discardFromLookup:u}]of _C(i,([g])=>g===null?"0":`1${g}`)){let g=[];r!==null&&s!==null&&!a.has(r)&&g.push([r,s]);for(let[p,d]of _C(a.entries(),([m])=>m))g.push([p,d]);let f=l&&l.size>0?Array.from(l):void 0,h=u||void 0;n.push([s,{packageLocation:o,packageDependencies:g,packagePeers:f,linkType:c,discardFromLookup:h}])}}return e}function XC(t){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost. We also recommend you not to read","it either without using the @yarnpkg/pnp package, as the data layout","is entirely unspecified and WILL change from a version to another."],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,fallbackExclusionList:r6e(t),fallbackPool:i6e(t),packageRegistryData:n6e(t)}}var zle=ie(Wle());function Vle(t,e){return[t?`${t} -`:"",`/* eslint-disable */ - -`,`try { -`,` Object.freeze({}).detectStrictMode = true; -`,`} catch (error) { -`," throw new Error(`The whole PnP file got strict-mode-ified, which is known to break (Emscripten libraries aren't strict mode). This usually happens when the file goes through Babel.`);\n",`} -`,` -`,`var __non_webpack_module__ = module; -`,` -`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { -`,e.replace(/^/gm," "),`} -`,` -`,(0,zle.default)()].join("")}function s6e(t){return JSON.stringify(t,null,2)}function o6e(t){return[`return hydrateRuntimeState(${qle(t)}, {basePath: basePath || __dirname}); -`].join("")}function a6e(t){return[`var path = require('path'); -`,`var dataLocation = path.resolve(__dirname, ${JSON.stringify(t)}); -`,`return hydrateRuntimeState(require(dataLocation), {basePath: basePath || path.dirname(dataLocation)}); -`].join("")}function _le(t){let e=XC(t),r=o6e(e);return Vle(t.shebang,r)}function Xle(t){let e=XC(t),r=a6e(t.dataLocation),i=Vle(t.shebang,r);return{dataFile:s6e(e),loaderFile:i}}var tce=ie(require("fs")),u6e=ie(require("path")),rce=ie(require("util"));function _L(t,{basePath:e}){let r=M.toPortablePath(e),i=v.resolve(r),n=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,s=new Map,o=new Map(t.packageRegistryData.map(([g,f])=>[g,new Map(f.map(([h,p])=>{var b;if(g===null!=(h===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let d=(b=p.discardFromLookup)!=null?b:!1,m={name:g,reference:h},I=s.get(p.packageLocation);I?(I.discardFromLookup=I.discardFromLookup&&d,d||(I.locator=m)):s.set(p.packageLocation,{locator:m,discardFromLookup:d});let B=null;return[h,{packageDependencies:new Map(p.packageDependencies),packagePeers:new Set(p.packagePeers),linkType:p.linkType,discardFromLookup:d,get packageLocation(){return B||(B=v.join(i,p.packageLocation))}}]}))])),a=new Map(t.fallbackExclusionList.map(([g,f])=>[g,new Set(f)])),l=new Map(t.fallbackPool),c=t.dependencyTreeRoots,u=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:c,enableTopLevelFallback:u,fallbackExclusionList:a,fallbackPool:l,ignorePattern:n,packageLocatorsByLocations:s,packageRegistry:o}}var df=ie(require("module")),ece=ie($le()),ZL=ie(require("util"));var ur;(function(l){l.API_ERROR="API_ERROR",l.BUILTIN_NODE_RESOLUTION_FAILED="BUILTIN_NODE_RESOLUTION_FAILED",l.MISSING_DEPENDENCY="MISSING_DEPENDENCY",l.MISSING_PEER_DEPENDENCY="MISSING_PEER_DEPENDENCY",l.QUALIFIED_PATH_RESOLUTION_FAILED="QUALIFIED_PATH_RESOLUTION_FAILED",l.INTERNAL="INTERNAL",l.UNDECLARED_DEPENDENCY="UNDECLARED_DEPENDENCY",l.UNSUPPORTED="UNSUPPORTED"})(ur||(ur={}));var c6e=new Set([ur.BUILTIN_NODE_RESOLUTION_FAILED,ur.MISSING_DEPENDENCY,ur.MISSING_PEER_DEPENDENCY,ur.QUALIFIED_PATH_RESOLUTION_FAILED,ur.UNDECLARED_DEPENDENCY]);function ui(t,e,r={}){let i=c6e.has(t)?"MODULE_NOT_FOUND":t,n={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:_(P({},n),{value:i}),pnpCode:_(P({},n),{value:t}),data:_(P({},n),{value:r})})}function YA(t){return M.normalize(M.fromPortablePath(t))}function $L(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,i=Number(process.env.PNP_DEBUG_LEVEL),n=new Set(df.Module.builtinModules||Object.keys(process.binding("natives"))),s=re=>n.has(re)||re.startsWith("node:"),o=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,a=/^(\/|\.{1,2}(\/|$))/,l=/\/$/,c=/^\.{0,2}\//,u={name:null,reference:null},g=[],f=new Set;if(t.enableTopLevelFallback===!0&&g.push(u),e.compatibilityMode!==!1)for(let re of["react-scripts","gatsby"]){let se=t.packageRegistry.get(re);if(se)for(let be of se.keys()){if(be===null)throw new Error("Assertion failed: This reference shouldn't be null");g.push({name:re,reference:be})}}let{ignorePattern:h,packageRegistry:p,packageLocatorsByLocations:d}=t;function m(re,se){return{fn:re,args:se,error:null,result:null}}function I(re){var De,$,G,Ce,ee,Ue;let se=(G=($=(De=process.stderr)==null?void 0:De.hasColors)==null?void 0:$.call(De))!=null?G:process.stdout.isTTY,be=(Oe,vt)=>`[${Oe}m${vt}`,ae=re.error;console.error(ae?be("31;1",`\u2716 ${(Ce=re.error)==null?void 0:Ce.message.replace(/\n.*/s,"")}`):be("33;1","\u203C Resolution")),re.args.length>0&&console.error();for(let Oe of re.args)console.error(` ${be("37;1","In \u2190")} ${(0,ZL.inspect)(Oe,{colors:se,compact:!0})}`);re.result&&(console.error(),console.error(` ${be("37;1","Out \u2192")} ${(0,ZL.inspect)(re.result,{colors:se,compact:!0})}`));let Ae=(Ue=(ee=new Error().stack.match(/(?<=^ +)at.*/gm))==null?void 0:ee.slice(2))!=null?Ue:[];if(Ae.length>0){console.error();for(let Oe of Ae)console.error(` ${be("38;5;244",Oe)}`)}console.error()}function B(re,se){if(e.allowDebug===!1)return se;if(Number.isFinite(i)){if(i>=2)return(...be)=>{let ae=m(re,be);try{return ae.result=se(...be)}catch(Ae){throw ae.error=Ae}finally{I(ae)}};if(i>=1)return(...be)=>{try{return se(...be)}catch(ae){let Ae=m(re,be);throw Ae.error=ae,I(Ae),ae}}}return se}function b(re){let se=W(re);if(!se)throw ui(ur.INTERNAL,"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return se}function R(re){if(re.name===null)return!0;for(let se of t.dependencyTreeRoots)if(se.name===re.name&&se.reference===re.reference)return!0;return!1}let H=new Set(["default","node","require"]);function L(re,se=H){let be=D(v.join(re,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(be===null)throw ui(ur.INTERNAL,`The locator that owns the "${re}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:ae}=b(be),Ae=v.join(ae,wt.manifest);if(!e.fakeFs.existsSync(Ae))return null;let De=JSON.parse(e.fakeFs.readFileSync(Ae,"utf8")),$=v.contains(ae,re);if($===null)throw ui(ur.INTERNAL,"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");c.test($)||($=`./${$}`);let G=(0,ece.resolve)(De,v.normalize($),{conditions:se,unsafe:!0});return typeof G=="string"?v.join(ae,G):null}function K(re,se,{extensions:be}){let ae;try{se.push(re),ae=e.fakeFs.statSync(re)}catch(Ae){}if(ae&&!ae.isDirectory())return e.fakeFs.realpathSync(re);if(ae&&ae.isDirectory()){let Ae;try{Ae=JSON.parse(e.fakeFs.readFileSync(v.join(re,wt.manifest),"utf8"))}catch($){}let De;if(Ae&&Ae.main&&(De=v.resolve(re,Ae.main)),De&&De!==re){let $=K(De,se,{extensions:be});if($!==null)return $}}for(let Ae=0,De=be.length;Ae{let G=JSON.stringify($.name);if(ae.has(G))return;ae.add(G);let Ce=X($);for(let ee of Ce)if(b(ee).packagePeers.has(re))Ae(ee);else{let Oe=be.get(ee.name);typeof Oe=="undefined"&&be.set(ee.name,Oe=new Set),Oe.add(ee.reference)}};Ae(se);let De=[];for(let $ of[...be.keys()].sort())for(let G of[...be.get($)].sort())De.push({name:$,reference:G});return De}function D(re,{resolveIgnored:se=!1,includeDiscardFromLookup:be=!1}={}){if(q(re)&&!se)return null;let ae=v.relative(t.basePath,re);ae.match(a)||(ae=`./${ae}`),ae.endsWith("/")||(ae=`${ae}/`);do{let Ae=d.get(ae);if(typeof Ae=="undefined"||Ae.discardFromLookup&&!be){ae=ae.substring(0,ae.lastIndexOf("/",ae.length-2)+1);continue}return Ae.locator}while(ae!=="");return null}function he(re,se,{considerBuiltins:be=!0}={}){if(re==="pnpapi")return M.toPortablePath(e.pnpapiResolution);if(be&&s(re))return null;let ae=YA(re),Ae=se&&YA(se);if(se&&q(se)&&(!v.isAbsolute(re)||D(re)===null)){let G=ne(re,se);if(G===!1)throw ui(ur.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) - -Require request: "${ae}" -Required by: ${Ae} -`,{request:ae,issuer:Ae});return M.toPortablePath(G)}let De,$=re.match(o);if($){if(!se)throw ui(ur.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:ae,issuer:Ae});let[,G,Ce]=$,ee=D(se);if(!ee){let yr=ne(re,se);if(yr===!1)throw ui(ur.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). - -Require path: "${ae}" -Required by: ${Ae} -`,{request:ae,issuer:Ae});return M.toPortablePath(yr)}let Oe=b(ee).packageDependencies.get(G),vt=null;if(Oe==null&&ee.name!==null){let yr=t.fallbackExclusionList.get(ee.name);if(!yr||!yr.has(ee.reference)){for(let Qi=0,Go=g.length;QiR(Ki))?dt=ui(ur.MISSING_PEER_DEPENDENCY,`${ee.name} tried to access ${G} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -${yr.map(Ki=>`Ancestor breaking the chain: ${Ki.name}@${Ki.reference} -`).join("")} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G,brokenAncestors:yr}):dt=ui(ur.MISSING_PEER_DEPENDENCY,`${ee.name} tried to access ${G} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) - -${yr.map(Ki=>`Ancestor breaking the chain: ${Ki.name}@${Ki.reference} -`).join("")} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G,brokenAncestors:yr})}else Oe===void 0&&(!be&&s(re)?R(ee)?dt=ui(ur.UNDECLARED_DEPENDENCY,`Your application tried to access ${G}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${G} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,dependencyName:G}):dt=ui(ur.UNDECLARED_DEPENDENCY,`${ee.name} tried to access ${G}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${G} isn't otherwise declared in ${ee.name}'s dependencies, this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G}):R(ee)?dt=ui(ur.UNDECLARED_DEPENDENCY,`Your application tried to access ${G}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,dependencyName:G}):dt=ui(ur.UNDECLARED_DEPENDENCY,`${ee.name} tried to access ${G}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G}));if(Oe==null){if(vt===null||dt===null)throw dt||new Error("Assertion failed: Expected an error to have been set");Oe=vt;let yr=dt.message.replace(/\n.*/g,"");dt.message=yr,!f.has(yr)&&i!==0&&(f.add(yr),process.emitWarning(dt))}let ri=Array.isArray(Oe)?{name:Oe[0],reference:Oe[1]}:{name:G,reference:Oe},ii=b(ri);if(!ii.packageLocation)throw ui(ur.MISSING_DEPENDENCY,`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. - -Required package: ${ri.name}@${ri.reference}${ri.name!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -`,{request:ae,issuer:Ae,dependencyLocator:Object.assign({},ri)});let an=ii.packageLocation;Ce?De=v.join(an,Ce):De=an}else if(v.isAbsolute(re))De=v.normalize(re);else{if(!se)throw ui(ur.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:ae,issuer:Ae});let G=v.resolve(se);se.match(l)?De=v.normalize(v.join(G,re)):De=v.normalize(v.join(v.dirname(G),re))}return v.normalize(De)}function pe(re,se,be=H){if(a.test(re))return se;let ae=L(se,be);return ae?v.normalize(ae):se}function Ne(re,{extensions:se=Object.keys(df.Module._extensions)}={}){let be=[],ae=K(re,be,{extensions:se});if(ae)return v.normalize(ae);{let Ae=YA(re),De=D(re);if(De){let{packageLocation:$}=b(De);if(!e.fakeFs.existsSync($)){let G=$.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw ui(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`${G} - -Missing package: ${De.name}@${De.reference} -Expected package location: ${YA($)} -`,{unqualifiedPath:Ae})}}throw ui(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`Qualified path resolution failed - none of those files can be found on the disk. - -Source path: ${Ae} -${be.map($=>`Not found: ${YA($)} -`).join("")}`,{unqualifiedPath:Ae})}}function Pe(re,se,{considerBuiltins:be,extensions:ae,conditions:Ae}={}){let De=he(re,se,{considerBuiltins:be});if(re==="pnpapi")return De;if(De===null)return null;let $=()=>se!==null?q(se):!1,G=(!be||!s(re))&&!$()?pe(re,De,Ae):De;try{return Ne(G,{extensions:ae})}catch(Ce){throw Ce.pnpCode==="QUALIFIED_PATH_RESOLUTION_FAILED"&&Object.assign(Ce.data,{request:YA(re),issuer:se&&YA(se)}),Ce}}function qe(re){let se=v.normalize(re),be=Pr.resolveVirtual(se);return be!==se?be:null}return{VERSIONS:A,topLevel:V,getLocator:(re,se)=>Array.isArray(se)?{name:se[0],reference:se[1]}:{name:re,reference:se},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let re=[];for(let[se,be]of p)for(let ae of be.keys())se!==null&&ae!==null&&re.push({name:se,reference:ae});return re},getPackageInformation:re=>{let se=W(re);if(se===null)return null;let be=M.fromPortablePath(se.packageLocation);return _(P({},se),{packageLocation:be})},findPackageLocator:re=>D(M.toPortablePath(re)),resolveToUnqualified:B("resolveToUnqualified",(re,se,be)=>{let ae=se!==null?M.toPortablePath(se):null,Ae=he(M.toPortablePath(re),ae,be);return Ae===null?null:M.fromPortablePath(Ae)}),resolveUnqualified:B("resolveUnqualified",(re,se)=>M.fromPortablePath(Ne(M.toPortablePath(re),se))),resolveRequest:B("resolveRequest",(re,se,be)=>{let ae=se!==null?M.toPortablePath(se):null,Ae=Pe(M.toPortablePath(re),ae,be);return Ae===null?null:M.fromPortablePath(Ae)}),resolveVirtual:B("resolveVirtual",re=>{let se=qe(M.toPortablePath(re));return se!==null?M.fromPortablePath(se):null})}}var ISt=(0,rce.promisify)(tce.readFile);var ice=(t,e,r)=>{let i=XC(t),n=_L(i,{basePath:e}),s=M.join(e,wt.pnpCjs);return $L(n,{fakeFs:r,pnpapiResolution:s})};var tT=ie(sce());var Ws={};it(Ws,{checkAndReportManifestCompatibility:()=>oce,extractBuildScripts:()=>Z0,getExtractHint:()=>rT,hasBindingGyp:()=>iT});function oce(t,e,{configuration:r,report:i}){return S.isPackageCompatible(t,{os:[process.platform],cpu:[process.arch]})?!0:(i==null||i.reportWarningOnce(z.INCOMPATIBLE_ARCHITECTURE,`${S.prettyLocator(r,t)} The ${process.platform}-${process.arch} architecture is incompatible with this module, ${e} skipped.`),!1)}function Z0(t,e,r,{configuration:i,report:n}){let s=[];for(let a of["preinstall","install","postinstall"])e.manifest.scripts.has(a)&&s.push([Gn.SCRIPT,a]);return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&s.push([Gn.SHELLCODE,"node-gyp rebuild"]),s.length===0?[]:t.linkType!==gt.HARD?(n==null||n.reportWarningOnce(z.SOFT_LINK_BUILD,`${S.prettyLocator(i,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`),[]):r&&r.built===!1?(n==null||n.reportInfoOnce(z.BUILD_DISABLED,`${S.prettyLocator(i,t)} lists build scripts, but its build has been explicitly disabled through configuration.`),[]):!i.get("enableScripts")&&!r.built?(n==null||n.reportWarningOnce(z.DISABLED_BUILD_SCRIPTS,`${S.prettyLocator(i,t)} lists build scripts, but all build scripts have been disabled.`),[]):oce(t,"build",{configuration:i,report:n})?s:[]}var g6e=new Set([".exe",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function rT(t){return t.packageFs.getExtractHint({relevantExtensions:g6e})}function iT(t){let e=v.join(t.prefixPath,"binding.gyp");return t.packageFs.existsSync(e)}var nT={};it(nT,{getUnpluggedPath:()=>ZC});function ZC(t,{configuration:e}){return v.resolve(e.get("pnpUnpluggedFolder"),S.slugifyLocator(t))}var f6e=new Set([S.makeIdent(null,"nan").identHash,S.makeIdent(null,"node-gyp").identHash,S.makeIdent(null,"node-pre-gyp").identHash,S.makeIdent(null,"node-addon-api").identHash,S.makeIdent(null,"fsevents").identHash]),jc=class{constructor(){this.mode="strict";this.pnpCache=new Map}supportsPackage(e,r){return!(r.project.configuration.get("nodeLinker")!=="pnp"||r.project.configuration.get("pnpMode")!==this.mode)}async findPackageLocation(e,r){let i=qA(r.project).cjs;if(!T.existsSync(i))throw new me(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=de.getFactoryWithDefault(this.pnpCache,i,()=>de.dynamicRequire(i,{cachingStrategy:de.CachingStrategy.FsTime})),s={name:S.stringifyIdent(e),reference:e.reference},o=n.getPackageInformation(s);if(!o)throw new me(`Couldn't find ${S.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return M.toPortablePath(o.packageLocation)}async findPackageLocator(e,r){let i=qA(r.project).cjs;if(!T.existsSync(i))return null;let s=de.getFactoryWithDefault(this.pnpCache,i,()=>de.dynamicRequire(i,{cachingStrategy:de.CachingStrategy.FsTime})).findPackageLocator(M.fromPortablePath(e));return s?S.makeLocator(S.parseIdent(s.name),s.reference):null}makeInstaller(e){return new Cf(e)}},Cf=class{constructor(e){this.opts=e;this.mode="strict";this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}getCustomDataKey(){return JSON.stringify({name:"PnpInstaller",version:2})}attachCustomData(e){this.customData=e}async installPackage(e,r){let i=S.stringifyIdent(e),n=e.reference,s=!!this.opts.project.tryWorkspaceByLocator(e),o=S.isVirtualLocator(e),a=e.peerDependencies.size>0&&!o,l=!a&&!s,c=!a&&e.linkType!==gt.SOFT,u,g;if(l||c){let B=o?S.devirtualizeLocator(e):e;u=this.customData.store.get(B.locatorHash),typeof u=="undefined"&&(u=await h6e(r),e.linkType===gt.HARD&&this.customData.store.set(B.locatorHash,u)),u.manifest.type==="module"&&(this.isESMLoaderRequired=!0),g=this.opts.project.getDependencyMeta(B,e.version)}let f=l?Z0(e,u,g,{configuration:this.opts.project.configuration,report:this.opts.report}):[],h=c?await this.unplugPackageIfNeeded(e,u,r,g):r.packageFs;if(v.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let p=v.resolve(h.getRealPath(),r.prefixPath),d=sT(this.opts.project.cwd,p),m=new Map,I=new Set;if(o){for(let B of e.peerDependencies.values())m.set(S.stringifyIdent(B),null),I.add(S.stringifyIdent(B));if(!s){let B=S.devirtualizeLocator(e);this.virtualTemplates.set(B.locatorHash,{location:sT(this.opts.project.cwd,Pr.resolveVirtual(p)),locator:B})}}return de.getMapWithDefault(this.packageRegistry,i).set(n,{packageLocation:d,packageDependencies:m,packagePeers:I,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:p,buildDirective:f.length>0?f:null}}async attachInternalDependencies(e,r){let i=this.getPackageInformation(e);for(let[n,s]of r){let o=S.areIdentsEqual(n,s)?s.reference:[S.stringifyIdent(s),s.reference];i.packageDependencies.set(S.stringifyIdent(n),o)}}async attachExternalDependents(e,r){for(let i of r)this.getDiskInformation(i).packageDependencies.set(S.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=qA(this.opts.project);if(T.existsSync(e.cjsLegacy)&&(this.opts.report.reportWarning(z.UNNAMED,`Removing the old ${ue.pretty(this.opts.project.configuration,wt.pnpJs,ue.Type.PATH)} file. You might need to manually update existing references to reference the new ${ue.pretty(this.opts.project.configuration,wt.pnpCjs,ue.Type.PATH)} file. If you use Editor SDKs, you'll have to rerun ${ue.pretty(this.opts.project.configuration,"yarn sdks",ue.Type.CODE)}.`),await T.removePromise(e.cjsLegacy)),this.isEsmEnabled()||await T.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await T.removePromise(e.cjs),await T.removePromise(this.opts.project.configuration.get("pnpDataPath")),await T.removePromise(e.esmLoader);return}for(let{locator:u,location:g}of this.virtualTemplates.values())de.getMapWithDefault(this.packageRegistry,S.stringifyIdent(u)).set(u.reference,{packageLocation:g,packageDependencies:new Map,packagePeers:new Set,linkType:gt.SOFT,discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let r=this.opts.project.configuration.get("pnpFallbackMode"),i=this.opts.project.workspaces.map(({anchoredLocator:u})=>({name:S.stringifyIdent(u),reference:u.reference})),n=r!=="none",s=[],o=new Map,a=de.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),l=this.packageRegistry,c=this.opts.project.configuration.get("pnpShebang");if(r==="dependencies-only")for(let u of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(u)&&s.push({name:S.stringifyIdent(u),reference:u.reference});return await this.finalizeInstallWithPnp({dependencyTreeRoots:i,enableTopLevelFallback:n,fallbackExclusionList:s,fallbackPool:o,ignorePattern:a,packageRegistry:l,shebang:c}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(e){let r=qA(this.opts.project),i=this.opts.project.configuration.get("pnpDataPath"),n=await this.locateNodeModules(e.ignorePattern);if(n.length>0){this.opts.report.reportWarning(z.DANGEROUS_NODE_MODULES,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let o of n)await T.removePromise(o)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let o=_le(e);await T.changeFilePromise(r.cjs,o,{automaticNewlines:!0,mode:493}),await T.removePromise(i)}else{let o=v.relative(v.dirname(r.cjs),i),{dataFile:a,loaderFile:l}=Xle(_(P({},e),{dataLocation:o}));await T.changeFilePromise(r.cjs,l,{automaticNewlines:!0,mode:493}),await T.changeFilePromise(i,a,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(z.UNNAMED,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await T.changeFilePromise(r.esmLoader,(0,tT.default)(),{automaticNewlines:!0,mode:420}));let s=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await T.removePromise(s);else for(let o of await T.readdirPromise(s)){let a=v.resolve(s,o);this.unpluggedPaths.has(a)||await T.removePromise(a)}}async locateNodeModules(e){let r=[],i=e?new RegExp(e):null;for(let n of this.opts.project.workspaces){let s=v.join(n.cwd,"node_modules");if(i&&i.test(v.relative(this.opts.project.cwd,n.cwd))||!T.existsSync(s))continue;let o=await T.readdirPromise(s,{withFileTypes:!0}),a=o.filter(l=>!l.isDirectory()||l.name===".bin"||!l.name.startsWith("."));if(a.length===o.length)r.push(s);else for(let l of a)r.push(v.join(s,l.name))}return r}async unplugPackageIfNeeded(e,r,i,n){return this.shouldBeUnplugged(e,r,n)?this.unplugPackage(e,i):i.packageFs}shouldBeUnplugged(e,r,i){return typeof i.unplugged!="undefined"?i.unplugged:f6e.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(Z0(e,r,i,{configuration:this.opts.project.configuration}).length>0||r.misc.extractHint)}async unplugPackage(e,r){let i=ZC(e,{configuration:this.opts.project.configuration});if(this.opts.project.disabledLocators.has(e.locatorHash))return new Xo(i,{baseFs:r.packageFs,pathUtils:v});this.unpluggedPaths.add(i);let n=v.join(i,r.prefixPath,".ready");return await T.existsPromise(n)?new Ft(i):(this.opts.project.storedBuildState.delete(e.locatorHash),await T.mkdirPromise(i,{recursive:!0}),await T.copyPromise(i,Se.dot,{baseFs:r.packageFs,overwrite:!1}),await T.writeFilePromise(n,""),new Ft(i))}getPackageInformation(e){let r=S.stringifyIdent(e),i=e.reference,n=this.packageRegistry.get(r);if(!n)throw new Error(`Assertion failed: The package information store should have been available (for ${S.prettyIdent(this.opts.project.configuration,e)})`);let s=n.get(i);if(!s)throw new Error(`Assertion failed: The package information should have been available (for ${S.prettyLocator(this.opts.project.configuration,e)})`);return s}getDiskInformation(e){let r=de.getMapWithDefault(this.packageRegistry,"@@disk"),i=sT(this.opts.project.cwd,e);return de.getFactoryWithDefault(r,i,()=>({packageLocation:i,packageDependencies:new Map,packagePeers:new Set,linkType:gt.SOFT,discardFromLookup:!1}))}};function sT(t,e){let r=v.relative(t,e);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function h6e(t){var i;let e=(i=await Ze.tryFind(t.prefixPath,{baseFs:t.packageFs}))!=null?i:new Ze,r=new Set(["preinstall","install","postinstall"]);for(let n of e.scripts.keys())r.has(n)||e.scripts.delete(n);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:rT(t),hasBindingGyp:iT(t)}}}var ace=ie(Nn());var $C=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);if(e.get("nodeLinker")!=="pnp")throw new me("This command can only be used if the `nodeLinker` option is set to `pnp`");await r.restoreInstallState();let s=new Set(this.patterns),o=this.patterns.map(f=>{let h=S.parseDescriptor(f),p=h.range!=="unknown"?h:S.makeDescriptor(h,"*");if(!qt.validRange(p.range))throw new me(`The range of the descriptor patterns must be a valid semver range (${S.prettyDescriptor(e,p)})`);return d=>{let m=S.stringifyIdent(d);return!ace.default.isMatch(m,S.stringifyIdent(p))||d.version&&!qt.satisfiesWithPrereleases(d.version,p.range)?!1:(s.delete(f),!0)}}),a=()=>{let f=[];for(let h of r.storedPackages.values())!r.tryWorkspaceByLocator(h)&&!S.isVirtualLocator(h)&&o.some(p=>p(h))&&f.push(h);return f},l=f=>{let h=new Set,p=[],d=(m,I)=>{if(!h.has(m.locatorHash)&&(h.add(m.locatorHash),!r.tryWorkspaceByLocator(m)&&o.some(B=>B(m))&&p.push(m),!(I>0&&!this.recursive)))for(let B of m.dependencies.values()){let b=r.storedResolutions.get(B.descriptorHash);if(!b)throw new Error("Assertion failed: The resolution should have been registered");let R=r.storedPackages.get(b);if(!R)throw new Error("Assertion failed: The package should have been registered");d(R,I+1)}};for(let m of f){let I=r.storedPackages.get(m.anchoredLocator.locatorHash);if(!I)throw new Error("Assertion failed: The package should have been registered");d(I,0)}return p},c,u;if(this.all&&this.recursive?(c=a(),u="the project"):this.all?(c=l(r.workspaces),u="any workspace"):(c=l([i]),u="this workspace"),s.size>1)throw new me(`Patterns ${ue.prettyList(e,s,ue.Type.CODE)} don't match any packages referenced by ${u}`);if(s.size>0)throw new me(`Pattern ${ue.prettyList(e,s,ue.Type.CODE)} doesn't match any packages referenced by ${u}`);return c=de.sortMap(c,f=>S.stringifyLocator(f)),(await Fe.start({configuration:e,stdout:this.context.stdout,json:this.json},async f=>{var h;for(let p of c){let d=(h=p.version)!=null?h:"unknown",m=r.topLevelWorkspace.manifest.ensureDependencyMeta(S.makeDescriptor(p,d));m.unplugged=!0,f.reportInfo(z.UNNAMED,`Will unpack ${S.prettyLocator(e,p)} to ${ue.pretty(e,ZC(p,{configuration:e}),ue.Type.PATH)}`),f.reportJson({locator:S.stringifyLocator(p),version:d})}await r.topLevelWorkspace.persistManifest(),f.reportSeparator(),await r.install({cache:n,report:f})})).exitCode()}};$C.paths=[["unplug"]],$C.usage=ye.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]});var Ace=$C;var qA=t=>({cjs:v.join(t.cwd,wt.pnpCjs),cjsLegacy:v.join(t.cwd,wt.pnpJs),esmLoader:v.join(t.cwd,".pnp.loader.mjs")}),uce=t=>/\s/.test(t)?JSON.stringify(t):t;async function p6e(t,e,r){let i=qA(t),n=`--require ${uce(M.fromPortablePath(i.cjs))}`;if(T.existsSync(i.esmLoader)&&(n=`${n} --experimental-loader ${(0,cce.pathToFileURL)(M.fromPortablePath(i.esmLoader)).href}`),i.cjs.includes(" ")&&lce.default.lt(process.versions.node,"12.0.0"))throw new Error(`Expected the build location to not include spaces when using Node < 12.0.0 (${process.versions.node})`);if(T.existsSync(i.cjs)){let s=e.NODE_OPTIONS||"",o=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/;s=s.replace(o," ").replace(a," ").trim(),s=s?`${n} ${s}`:n,e.NODE_OPTIONS=s}}async function d6e(t,e){let r=qA(t);e(r.cjs),e(r.esmLoader),e(t.configuration.get("pnpDataPath")),e(t.configuration.get("pnpUnpluggedFolder"))}var C6e={hooks:{populateYarnPaths:d6e,setupScriptEnvironment:p6e},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "node-modules"',type:ge.STRING,default:"pnp"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:ge.STRING,default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:ge.STRING,default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:ge.STRING,default:[],isArray:!0},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:ge.BOOLEAN,default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:ge.BOOLEAN,default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:ge.STRING,default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:ge.ABSOLUTE_PATH,default:"./.yarn/unplugged"},pnpDataPath:{description:"Path of the file where the PnP data (used by the loader) must be written",type:ge.ABSOLUTE_PATH,default:"./.pnp.data.json"}},linkers:[jc],commands:[Ace]},m6e=C6e;var Cce=ie(dce());var uT=ie(require("crypto")),mce=ie(require("fs")),Ece=1,gi="node_modules",gT=".bin",Ice=".yarn-state.yml",Bi;(function(i){i.CLASSIC="classic",i.HARDLINKS_LOCAL="hardlinks-local",i.HARDLINKS_GLOBAL="hardlinks-global"})(Bi||(Bi={}));var fT=class{constructor(){this.installStateCache=new Map}supportsPackage(e,r){return r.project.configuration.get("nodeLinker")==="node-modules"}async findPackageLocation(e,r){let i=r.project.tryWorkspaceByLocator(e);if(i)return i.cwd;let n=await de.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await hT(r.project,{unrollAliases:!0}));if(n===null)throw new me("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let s=n.locatorMap.get(S.stringifyLocator(e));if(!s){let a=new me(`Couldn't find ${S.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw a.code="LOCATOR_NOT_INSTALLED",a}let o=r.project.configuration.startingCwd;return s.locations.find(a=>v.contains(o,a))||s.locations[0]}async findPackageLocator(e,r){let i=await de.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await hT(r.project,{unrollAliases:!0}));if(i===null)return null;let{locationRoot:n,segments:s}=$0(v.resolve(e),{skipPrefix:r.project.cwd}),o=i.locationTree.get(n);if(!o)return null;let a=o.locator;for(let l of s){if(o=o.children.get(l),!o)break;a=o.locator||a}return S.parseLocator(a)}makeInstaller(e){return new yce(e)}},yce=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}getCustomDataKey(){return JSON.stringify({name:"NodeModulesInstaller",version:1})}attachCustomData(e){this.customData=e}async installPackage(e,r){var u;let i=v.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.customData.store.get(e.locatorHash);if(typeof n=="undefined"&&(n=await L6e(e,r),e.linkType===gt.HARD&&this.customData.store.set(e.locatorHash,n)),!Ws.checkAndReportManifestCompatibility(e,"link",{configuration:this.opts.project.configuration,report:this.opts.report}))return{packageLocation:null,buildDirective:null};let s=new Map,o=new Set;s.has(S.stringifyIdent(e))||s.set(S.stringifyIdent(e),e.reference);let a=e;if(S.isVirtualLocator(e)){a=S.devirtualizeLocator(e);for(let g of e.peerDependencies.values())s.set(S.stringifyIdent(g),null),o.add(S.stringifyIdent(g))}let l={packageLocation:`${M.fromPortablePath(i)}/`,packageDependencies:s,packagePeers:o,linkType:e.linkType,discardFromLookup:(u=r.discardFromLookup)!=null?u:!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:n,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:l});let c=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(a.locatorHash,c),{packageLocation:i,buildDirective:null}}async attachInternalDependencies(e,r){let i=this.localStore.get(e.locatorHash);if(typeof i=="undefined")throw new Error("Assertion failed: Expected information object to have been registered");for(let[n,s]of r){let o=S.areIdentsEqual(n,s)?s.reference:[S.stringifyIdent(s),s.reference];i.pnpNode.packageDependencies.set(S.stringifyIdent(n),o)}}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let e=new Pr({baseFs:new Jn({libzip:await $i(),maxOpenFiles:80,readOnlyArchives:!0})}),r=await hT(this.opts.project),i=this.opts.project.configuration.get("nmMode");(r===null||i!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:i});let n=new Map(this.opts.project.workspaces.map(f=>{var p,d;let h=this.opts.project.configuration.get("nmHoistingLimits");try{h=de.validateEnum(Sn,(d=(p=f.manifest.installConfig)==null?void 0:p.hoistingLimits)!=null?d:h)}catch(m){let I=S.prettyWorkspace(this.opts.project.configuration,f);this.opts.report.reportWarning(z.INVALID_MANIFEST,`${I}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(Sn).join(", ")}, using default: "${h}"`)}return[f.relativeCwd,h]})),s=new Map(this.opts.project.workspaces.map(f=>{var p,d;let h=this.opts.project.configuration.get("nmSelfReferences");return h=(d=(p=f.manifest.installConfig)==null?void 0:p.selfReferences)!=null?d:h,[f.relativeCwd,h]})),o={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(f,h)=>Array.isArray(h)?{name:h[0],reference:h[1]}:{name:f,reference:h},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(f=>{let h=f.anchoredLocator;return{name:S.stringifyIdent(f.locator),reference:h.reference}}),getPackageInformation:f=>{let h=f.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:S.makeLocator(S.parseIdent(f.name),f.reference),p=this.localStore.get(h.locatorHash);if(typeof p=="undefined")throw new Error("Assertion failed: Expected the package reference to have been registered");return p.pnpNode},findPackageLocator:f=>{let h=this.opts.project.tryWorkspaceByCwd(M.toPortablePath(f));if(h!==null){let p=h.anchoredLocator;return{name:S.stringifyIdent(p),reference:p.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:f=>M.fromPortablePath(Pr.resolveVirtual(M.toPortablePath(f)))},{tree:a,errors:l,preserveSymlinksRequired:c}=VC(o,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:n,project:this.opts.project,selfReferencesByCwd:s});if(!a){for(let{messageName:f,text:h}of l)this.opts.report.reportError(f,h);return}let u=WL(a);await T6e(r,u,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async f=>{let h=S.parseLocator(f),p=this.localStore.get(h.locatorHash);if(typeof p=="undefined")throw new Error("Assertion failed: Expected the slot to exist");return p.customPackageData.manifest}});let g=[];for(let[f,h]of u.entries()){if(wce(f))continue;let p=S.parseLocator(f),d=this.localStore.get(p.locatorHash);if(typeof d=="undefined")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(d.pkg))continue;let m=Ws.extractBuildScripts(d.pkg,d.customPackageData,d.dependencyMeta,{configuration:this.opts.project.configuration,report:this.opts.report});m.length!==0&&g.push({buildLocations:h.locations,locatorHash:p.locatorHash,buildDirective:m})}return c&&this.opts.report.reportWarning(z.NM_PRESERVE_SYMLINKS_REQUIRED,`The application uses portals and that's why ${ue.pretty(this.opts.project.configuration,"--preserve-symlinks",ue.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:g}}};async function L6e(t,e){var n;let r=(n=await Ze.tryFind(e.prefixPath,{baseFs:e.packageFs}))!=null?n:new Ze,i=new Set(["preinstall","install","postinstall"]);for(let s of r.scripts.keys())i.has(s)||r.scripts.delete(s);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{extractHint:Ws.getExtractHint(e),hasBindingGyp:Ws.hasBindingGyp(e)}}}async function M6e(t,e,r,i){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will -`,n+=`# cause your node_modules installation to become invalidated. -`,n+=` -`,n+=`__metadata: -`,n+=` version: ${Ece} -`,n+=` nmMode: ${i.value} -`;let s=Array.from(e.keys()).sort(),o=S.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let c of s){let u=e.get(c);n+=` -`,n+=`${JSON.stringify(c)}: -`,n+=` locations: -`;for(let g of u.locations){let f=v.contains(t.cwd,g);if(f===null)throw new Error(`Assertion failed: Expected the path to be within the project (${g})`);n+=` - ${JSON.stringify(f)} -`}if(u.aliases.length>0){n+=` aliases: -`;for(let g of u.aliases)n+=` - ${JSON.stringify(g)} -`}if(c===o&&r.size>0){n+=` bin: -`;for(let[g,f]of r){let h=v.contains(t.cwd,g);if(h===null)throw new Error(`Assertion failed: Expected the path to be within the project (${g})`);n+=` ${JSON.stringify(h)}: -`;for(let[p,d]of f){let m=v.relative(v.join(g,gi),d);n+=` ${JSON.stringify(p)}: ${JSON.stringify(m)} -`}}}}let a=t.cwd,l=v.join(a,gi,Ice);await T.changeFilePromise(l,n,{automaticNewlines:!0})}async function hT(t,{unrollAliases:e=!1}={}){let r=t.cwd,i=v.join(r,gi,Ice);if(!T.existsSync(i))return null;let n=Ii(await T.readFilePromise(i,"utf8"));if(n.__metadata.version>Ece)return null;let s=n.__metadata.nmMode||Bi.CLASSIC,o=new Map,a=new Map;delete n.__metadata;for(let[l,c]of Object.entries(n)){let u=c.locations.map(f=>v.join(r,f)),g=c.bin;if(g)for(let[f,h]of Object.entries(g)){let p=v.join(r,M.toPortablePath(f)),d=de.getMapWithDefault(a,p);for(let[m,I]of Object.entries(h))d.set(kr(m),M.toPortablePath([p,gi,I].join(v.delimiter)))}if(o.set(l,{target:Se.dot,linkType:gt.HARD,locations:u,aliases:c.aliases||[]}),e&&c.aliases)for(let f of c.aliases){let{scope:h,name:p}=S.parseLocator(l),d=S.makeLocator(S.makeIdent(h,p),f),m=S.stringifyLocator(d);o.set(m,{target:Se.dot,linkType:gt.HARD,locations:u,aliases:[]})}}return{locatorMap:o,binSymlinks:a,locationTree:Bce(o,{skipPrefix:t.cwd}),nmMode:s}}var Ef=async(t,e)=>{if(t.split(v.sep).indexOf(gi)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{if(!e.innerLoop&&(await T.lstatPromise(t)).isSymbolicLink()){await T.unlinkPromise(t);return}let r=await T.readdirPromise(t,{withFileTypes:!0});for(let i of r){let n=v.join(t,kr(i.name));i.isDirectory()?(i.name!==gi||e&&e.innerLoop)&&await Ef(n,{innerLoop:!0,contentsOnly:!1}):await T.unlinkPromise(n)}e.contentsOnly||await T.rmdirPromise(t)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},Qce=4,$0=(t,{skipPrefix:e})=>{let r=v.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let i=r.split(v.sep).filter(l=>l!==""),n=i.indexOf(gi),s=i.slice(0,n).join(v.sep),o=v.join(e,s),a=i.slice(n);return{locationRoot:o,segments:a}},Bce=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let i=()=>({children:new Map,linkType:gt.HARD});for(let[n,s]of t.entries()){if(s.linkType===gt.SOFT&&v.contains(e,s.target)!==null){let a=de.getFactoryWithDefault(r,s.target,i);a.locator=n,a.linkType=s.linkType}for(let o of s.locations){let{locationRoot:a,segments:l}=$0(o,{skipPrefix:e}),c=de.getFactoryWithDefault(r,a,i);for(let u=0;u{let r;try{process.platform==="win32"&&(r=await T.lstatPromise(t))}catch(i){}process.platform=="win32"&&(!r||r.isDirectory())?await T.symlinkPromise(t,e,"junction"):await T.symlinkPromise(v.relative(v.dirname(e),t),e)};async function bce(t,e,r){let i=v.join(t,kr(`${uT.default.randomBytes(16).toString("hex")}.tmp`));try{await T.writeFilePromise(i,r);try{await T.linkPromise(i,e)}catch(n){}}finally{await T.unlinkPromise(i)}}async function O6e({srcPath:t,dstPath:e,srcMode:r,globalHardlinksStore:i,baseFs:n,nmMode:s,digest:o}){if(s.value===Bi.HARDLINKS_GLOBAL&&i&&o){let l=v.join(i,o.substring(0,2),`${o.substring(2)}.dat`),c;try{if(await mn.checksumFile(l,{baseFs:T,algorithm:"sha1"})!==o){let g=v.join(i,kr(`${uT.default.randomBytes(16).toString("hex")}.tmp`));await T.renamePromise(l,g);let f=await n.readFilePromise(t);await T.writeFilePromise(g,f);try{await T.linkPromise(g,l),await T.unlinkPromise(g)}catch(h){}}await T.linkPromise(l,e),c=!0}catch(u){c=!1}if(!c){let u=await n.readFilePromise(t);await bce(i,l,u);try{await T.linkPromise(l,e)}catch(g){g&&g.code&&g.code=="EXDEV"&&(s.value=Bi.HARDLINKS_LOCAL,await n.copyFilePromise(t,e))}}}else await n.copyFilePromise(t,e);let a=r&511;a!==420&&await T.chmodPromise(e,a)}var JA;(function(i){i.FILE="file",i.DIRECTORY="directory",i.SYMLINK="symlink"})(JA||(JA={}));var K6e=async(t,e,{baseFs:r,globalHardlinksStore:i,nmMode:n,packageChecksum:s})=>{await T.mkdirPromise(t,{recursive:!0});let o=async(l=Se.dot)=>{let c=v.join(e,l),u=await r.readdirPromise(c,{withFileTypes:!0}),g=new Map;for(let f of u){let h=v.join(l,f.name),p,d=v.join(c,f.name);if(f.isFile()){if(p={kind:JA.FILE,mode:(await r.lstatPromise(d)).mode},n.value===Bi.HARDLINKS_GLOBAL){let m=await mn.checksumFile(d,{baseFs:r,algorithm:"sha1"});p.digest=m}}else if(f.isDirectory())p={kind:JA.DIRECTORY};else if(f.isSymbolicLink())p={kind:JA.SYMLINK,symlinkTo:await r.readlinkPromise(d)};else throw new Error(`Unsupported file type (file: ${d}, mode: 0o${await r.statSync(d).mode.toString(8).padStart(6,"0")})`);if(g.set(h,p),f.isDirectory()&&h!==gi){let m=await o(h);for(let[I,B]of m)g.set(I,B)}}return g},a;if(n.value===Bi.HARDLINKS_GLOBAL&&i&&s){let l=v.join(i,s.substring(0,2),`${s.substring(2)}.json`);try{a=new Map(Object.entries(JSON.parse(await T.readFilePromise(l,"utf8"))))}catch(c){a=await o(),await bce(i,l,Buffer.from(JSON.stringify(Object.fromEntries(a))))}}else a=await o();for(let[l,c]of a){let u=v.join(e,l),g=v.join(t,l);c.kind===JA.DIRECTORY?await T.mkdirPromise(g,{recursive:!0}):c.kind===JA.FILE?await O6e({srcPath:u,dstPath:g,srcMode:c.mode,digest:c.digest,nmMode:n,baseFs:r,globalHardlinksStore:i}):c.kind===JA.SYMLINK&&await pT(v.resolve(v.dirname(g),c.symlinkTo),g)}};function U6e(t,e){let r=new Map([...t]),i=new Map([...e]);for(let[n,s]of t){let o=v.join(n,gi);if(!T.existsSync(o)){s.children.delete(gi);for(let a of i.keys())v.contains(o,a)!==null&&i.delete(a)}}return{locationTree:r,binSymlinks:i}}function wce(t){let e=S.parseDescriptor(t);return S.isVirtualDescriptor(e)&&(e=S.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function H6e(t,e,r,{loadManifest:i}){let n=new Map;for(let[a,{locations:l}]of t){let c=wce(a)?null:await i(a,l[0]),u=new Map;if(c)for(let[g,f]of c.bin){let h=v.join(l[0],f);f!==""&&T.existsSync(h)&&u.set(g,f)}n.set(a,u)}let s=new Map,o=(a,l,c)=>{let u=new Map,g=v.contains(r,a);if(c.locator&&g!==null){let f=n.get(c.locator);for(let[h,p]of f){let d=v.join(a,M.toPortablePath(p));u.set(kr(h),d)}for(let[h,p]of c.children){let d=v.join(a,h),m=o(d,d,p);m.size>0&&s.set(a,new Map([...s.get(a)||new Map,...m]))}}else for(let[f,h]of c.children){let p=o(v.join(a,f),l,h);for(let[d,m]of p)u.set(d,m)}return u};for(let[a,l]of e){let c=o(a,a,l);c.size>0&&s.set(a,new Map([...s.get(a)||new Map,...c]))}return s}var vce=(t,e)=>{if(!t||!e)return t===e;let r=S.parseLocator(t);S.isVirtualLocator(r)&&(r=S.devirtualizeLocator(r));let i=S.parseLocator(e);return S.isVirtualLocator(i)&&(i=S.devirtualizeLocator(i)),S.areLocatorsEqual(r,i)};function dT(t){return v.join(t.get("globalFolder"),"store")}async function T6e(t,e,{baseFs:r,project:i,report:n,loadManifest:s,realLocatorChecksums:o}){let a=v.join(i.cwd,gi),{locationTree:l,binSymlinks:c}=U6e(t.locationTree,t.binSymlinks),u=Bce(e,{skipPrefix:i.cwd}),g=[],f=async({srcDir:L,dstDir:K,linkType:J,globalHardlinksStore:ne,nmMode:q,packageChecksum:A})=>{let V=(async()=>{try{J===gt.SOFT?(await T.mkdirPromise(v.dirname(K),{recursive:!0}),await pT(v.resolve(L),K)):await K6e(K,L,{baseFs:r,globalHardlinksStore:ne,nmMode:q,packageChecksum:A})}catch(W){throw W.message=`While persisting ${L} -> ${K} ${W.message}`,W}finally{B.tick()}})().then(()=>g.splice(g.indexOf(V),1));g.push(V),g.length>Qce&&await Promise.race(g)},h=async(L,K,J)=>{let ne=(async()=>{let q=async(A,V,W)=>{try{W.innerLoop||await T.mkdirPromise(V,{recursive:!0});let X=await T.readdirPromise(A,{withFileTypes:!0});for(let F of X){if(!W.innerLoop&&F.name===gT)continue;let D=v.join(A,F.name),he=v.join(V,F.name);F.isDirectory()?(F.name!==gi||W&&W.innerLoop)&&(await T.mkdirPromise(he,{recursive:!0}),await q(D,he,_(P({},W),{innerLoop:!0}))):H.value===Bi.HARDLINKS_LOCAL||H.value===Bi.HARDLINKS_GLOBAL?await T.linkPromise(D,he):await T.copyFilePromise(D,he,mce.default.constants.COPYFILE_FICLONE)}}catch(X){throw W.innerLoop||(X.message=`While cloning ${A} -> ${V} ${X.message}`),X}finally{W.innerLoop||B.tick()}};await q(L,K,J)})().then(()=>g.splice(g.indexOf(ne),1));g.push(ne),g.length>Qce&&await Promise.race(g)},p=async(L,K,J)=>{if(!J)K.children.has(gi)&&await Ef(v.join(L,gi),{contentsOnly:!1}),await Ef(L,{contentsOnly:L===a});else for(let[ne,q]of K.children){let A=J.children.get(ne);await p(v.join(L,ne),q,A)}};for(let[L,K]of l){let J=u.get(L);for(let[ne,q]of K.children){if(ne===".")continue;let A=J&&J.children.get(ne);await p(v.join(L,ne),q,A)}}let d=async(L,K,J)=>{if(!J)K.children.has(gi)&&await Ef(v.join(L,gi),{contentsOnly:!0}),await Ef(L,{contentsOnly:K.linkType===gt.HARD});else{vce(K.locator,J.locator)||await Ef(L,{contentsOnly:K.linkType===gt.HARD});for(let[ne,q]of K.children){let A=J.children.get(ne);await d(v.join(L,ne),q,A)}}};for(let[L,K]of u){let J=l.get(L);for(let[ne,q]of K.children){if(ne===".")continue;let A=J&&J.children.get(ne);await d(v.join(L,ne),q,A)}}let m=new Map,I=[];for(let[L,{locations:K}]of t.locatorMap.entries())for(let J of K){let{locationRoot:ne,segments:q}=$0(J,{skipPrefix:i.cwd}),A=u.get(ne),V=ne;if(A){for(let W of q)if(V=v.join(V,W),A=A.children.get(W),!A)break;if(A){let W=vce(A.locator,L),X=e.get(A.locator),F=X.target,D=V,he=X.linkType;if(W)m.has(F)||m.set(F,D);else if(F!==D){let pe=S.parseLocator(A.locator);S.isVirtualLocator(pe)&&(pe=S.devirtualizeLocator(pe)),I.push({srcDir:F,dstDir:D,linkType:he,realLocatorHash:pe.locatorHash})}}}}for(let[L,{locations:K}]of e.entries())for(let J of K){let{locationRoot:ne,segments:q}=$0(J,{skipPrefix:i.cwd}),A=l.get(ne),V=u.get(ne),W=ne,X=e.get(L),F=S.parseLocator(L);S.isVirtualLocator(F)&&(F=S.devirtualizeLocator(F));let D=F.locatorHash,he=X.target,pe=J;if(he===pe)continue;let Ne=X.linkType;for(let Pe of q)V=V.children.get(Pe);if(!A)I.push({srcDir:he,dstDir:pe,linkType:Ne,realLocatorHash:D});else for(let Pe of q)if(W=v.join(W,Pe),A=A.children.get(Pe),!A){I.push({srcDir:he,dstDir:pe,linkType:Ne,realLocatorHash:D});break}}let B=Xi.progressViaCounter(I.length),b=n.reportProgress(B),R=i.configuration.get("nmMode"),H={value:R};try{let L=H.value===Bi.HARDLINKS_GLOBAL?`${dT(i.configuration)}/v1`:null;if(L&&!await T.existsPromise(L)){await T.mkdirpPromise(L);for(let J=0;J<256;J++)await T.mkdirPromise(v.join(L,J.toString(16).padStart(2,"0")))}for(let J of I)(J.linkType===gt.SOFT||!m.has(J.srcDir))&&(m.set(J.srcDir,J.dstDir),await f(_(P({},J),{globalHardlinksStore:L,nmMode:H,packageChecksum:o.get(J.realLocatorHash)||null})));await Promise.all(g),g.length=0;for(let J of I){let ne=m.get(J.srcDir);J.linkType!==gt.SOFT&&J.dstDir!==ne&&await h(ne,J.dstDir,{nmMode:H})}await Promise.all(g),await T.mkdirPromise(a,{recursive:!0});let K=await H6e(e,u,i.cwd,{loadManifest:s});await G6e(c,K,i.cwd),await M6e(i,e,K,H),R==Bi.HARDLINKS_GLOBAL&&H.value==Bi.HARDLINKS_LOCAL&&n.reportWarningOnce(z.NM_HARDLINKS_MODE_DOWNGRADED,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{b.stop()}}async function G6e(t,e,r){for(let i of t.keys()){if(v.contains(r,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);if(!e.has(i)){let n=v.join(i,gi,gT);await T.removePromise(n)}}for(let[i,n]of e){if(v.contains(r,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);let s=v.join(i,gi,gT),o=t.get(i)||new Map;await T.mkdirPromise(s,{recursive:!0});for(let a of o.keys())n.has(a)||(await T.removePromise(v.join(s,a)),process.platform==="win32"&&await T.removePromise(v.join(s,kr(`${a}.cmd`))));for(let[a,l]of n){let c=o.get(a),u=v.join(s,a);c!==l&&(process.platform==="win32"?await(0,Cce.default)(M.fromPortablePath(l),M.fromPortablePath(u),{createPwshFile:!1}):(await T.removePromise(u),await pT(l,u),v.contains(r,await T.realpathPromise(l))!==null&&await T.chmodPromise(l,493)))}}}var CT=class extends jc{constructor(){super(...arguments);this.mode="loose"}makeInstaller(e){return new Sce(e)}},Sce=class extends Cf{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(e){let r=new Pr({baseFs:new Jn({libzip:await $i(),maxOpenFiles:80,readOnlyArchives:!0})}),i=ice(e,this.opts.project.cwd,r),{tree:n,errors:s}=VC(i,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:u,text:g}of s)this.opts.report.reportError(u,g);return}let o=new Map;e.fallbackPool=o;let a=(u,g)=>{let f=S.parseLocator(g.locator),h=S.stringifyIdent(f);h===u?o.set(u,f.reference):o.set(u,[h,f.reference])},l=v.join(this.opts.project.cwd,wt.nodeModules),c=n.get(l);if(typeof c!="undefined"){if("target"in c)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let u of c.dirList){let g=v.join(l,u),f=n.get(g);if(typeof f=="undefined")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in f)a(u,f);else for(let h of f.dirList){let p=v.join(g,h),d=n.get(p);if(typeof d=="undefined")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in d)a(`${u}/${h}`,d);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var j6e={hooks:{cleanGlobalArtifacts:async t=>{let e=dT(t);await T.removePromise(e)}},configuration:{nmHoistingLimits:{description:"Prevent packages to be hoisted past specific levels",type:ge.STRING,values:[Sn.WORKSPACES,Sn.DEPENDENCIES,Sn.NONE],default:Sn.NONE},nmMode:{description:'If set to "hardlinks-local" Yarn will utilize hardlinks to reduce disk space consumption inside "node_modules" directories. With "hardlinks-global" Yarn will use global content addressable storage to reduce "node_modules" size across all the projects using this option.',type:ge.STRING,values:[Bi.CLASSIC,Bi.HARDLINKS_LOCAL,Bi.HARDLINKS_GLOBAL],default:Bi.CLASSIC},nmSelfReferences:{description:"If set to 'false' the workspace will not be allowed to require itself and corresponding self-referencing symlink will not be created",type:ge.BOOLEAN,default:!0}},linkers:[fT,CT]},Y6e=j6e;var yM={};it(yM,{default:()=>Z7e,npmConfigUtils:()=>gr,npmHttpUtils:()=>Lt,npmPublishUtils:()=>Rf});var Rce=ie(Or());var ir="npm:";var Lt={};it(Lt,{AuthType:()=>jn,customPackageError:()=>W6e,del:()=>_6e,get:()=>zs,getIdentUrl:()=>zA,handleInvalidAuthenticationError:()=>WA,post:()=>z6e,put:()=>V6e});var Pce=ie(aC()),Dce=ie(require("url"));var gr={};it(gr,{RegistryType:()=>ja,getAuditRegistry:()=>q6e,getAuthConfiguration:()=>IT,getDefaultRegistry:()=>eQ,getPublishRegistry:()=>xce,getRegistryConfiguration:()=>kce,getScopeConfiguration:()=>ET,getScopeRegistry:()=>Ya,normalizeRegistry:()=>To});var ja;(function(i){i.AUDIT_REGISTRY="npmAuditRegistry",i.FETCH_REGISTRY="npmRegistryServer",i.PUBLISH_REGISTRY="npmPublishRegistry"})(ja||(ja={}));function To(t){return t.replace(/\/$/,"")}function q6e(t,{configuration:e}){let r=e.get(ja.AUDIT_REGISTRY);return r!==null?To(r):xce(t,{configuration:e})}function xce(t,{configuration:e}){var r;return((r=t.publishConfig)==null?void 0:r.registry)?To(t.publishConfig.registry):t.name?Ya(t.name.scope,{configuration:e,type:ja.PUBLISH_REGISTRY}):eQ({configuration:e,type:ja.PUBLISH_REGISTRY})}function Ya(t,{configuration:e,type:r=ja.FETCH_REGISTRY}){let i=ET(t,{configuration:e});if(i===null)return eQ({configuration:e,type:r});let n=i.get(r);return n===null?eQ({configuration:e,type:r}):To(n)}function eQ({configuration:t,type:e=ja.FETCH_REGISTRY}){let r=t.get(e);return To(r!==null?r:t.get(ja.FETCH_REGISTRY))}function kce(t,{configuration:e}){let r=e.get("npmRegistries"),i=To(t),n=r.get(i);if(typeof n!="undefined")return n;let s=r.get(i.replace(/^[a-z]+:/,""));return typeof s!="undefined"?s:null}function ET(t,{configuration:e}){if(t===null)return null;let i=e.get("npmScopes").get(t);return i||null}function IT(t,{configuration:e,ident:r}){let i=r&&ET(r.scope,{configuration:e});return(i==null?void 0:i.get("npmAuthIdent"))||(i==null?void 0:i.get("npmAuthToken"))?i:kce(t,{configuration:e})||e}var jn;(function(n){n[n.NO_AUTH=0]="NO_AUTH",n[n.BEST_EFFORT=1]="BEST_EFFORT",n[n.CONFIGURATION=2]="CONFIGURATION",n[n.ALWAYS_AUTH=3]="ALWAYS_AUTH"})(jn||(jn={}));async function WA(t,{attemptedAs:e,registry:r,headers:i,configuration:n}){var s,o;if(((s=t.originalError)==null?void 0:s.name)==="HTTPError"&&((o=t.originalError)==null?void 0:o.response.statusCode)===401)throw new nt(z.AUTHENTICATION_INVALID,`Invalid authentication (${typeof e!="string"?`as ${await J6e(r,i,{configuration:n})}`:`attempted as ${e}`})`)}function W6e(t){var e;return((e=t.response)==null?void 0:e.statusCode)===404?"Package not found":null}function zA(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}async function zs(t,a){var l=a,{configuration:e,headers:r,ident:i,authType:n,registry:s}=l,o=qr(l,["configuration","headers","ident","authType","registry"]);if(i&&typeof s=="undefined"&&(s=Ya(i.scope,{configuration:e})),i&&i.scope&&typeof n=="undefined"&&(n=1),typeof s!="string")throw new Error("Assertion failed: The registry should be a string");let c=await tQ(s,{authType:n,configuration:e,ident:i});c&&(r=_(P({},r),{authorization:c}));try{return await Zt.get(t.charAt(0)==="/"?`${s}${t}`:t,P({configuration:e,headers:r},o))}catch(u){throw await WA(u,{registry:s,configuration:e,headers:r}),u}}async function z6e(t,e,c){var u=c,{attemptedAs:r,configuration:i,headers:n,ident:s,authType:o=3,registry:a}=u,l=qr(u,["attemptedAs","configuration","headers","ident","authType","registry"]);if(s&&typeof a=="undefined"&&(a=Ya(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let g=await tQ(a,{authType:o,configuration:i,ident:s});g&&(n=_(P({},n),{authorization:g}));try{return await Zt.post(a+t,e,P({configuration:i,headers:n},l))}catch(f){if(!wT(f))throw await WA(f,{attemptedAs:r,registry:a,configuration:i,headers:n}),f;let h=await yT(),p=P(P({},n),BT(h));try{return await Zt.post(`${a}${t}`,e,P({configuration:i,headers:p},l))}catch(d){throw await WA(d,{attemptedAs:r,registry:a,configuration:i,headers:n}),d}}}async function V6e(t,e,c){var u=c,{attemptedAs:r,configuration:i,headers:n,ident:s,authType:o=3,registry:a}=u,l=qr(u,["attemptedAs","configuration","headers","ident","authType","registry"]);if(s&&typeof a=="undefined"&&(a=Ya(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let g=await tQ(a,{authType:o,configuration:i,ident:s});g&&(n=_(P({},n),{authorization:g}));try{return await Zt.put(a+t,e,P({configuration:i,headers:n},l))}catch(f){if(!wT(f))throw await WA(f,{attemptedAs:r,registry:a,configuration:i,headers:n}),f;let h=await yT(),p=P(P({},n),BT(h));try{return await Zt.put(`${a}${t}`,e,P({configuration:i,headers:p},l))}catch(d){throw await WA(d,{attemptedAs:r,registry:a,configuration:i,headers:n}),d}}}async function _6e(t,l){var c=l,{attemptedAs:e,configuration:r,headers:i,ident:n,authType:s=3,registry:o}=c,a=qr(c,["attemptedAs","configuration","headers","ident","authType","registry"]);if(n&&typeof o=="undefined"&&(o=Ya(n.scope,{configuration:r})),typeof o!="string")throw new Error("Assertion failed: The registry should be a string");let u=await tQ(o,{authType:s,configuration:r,ident:n});u&&(i=_(P({},i),{authorization:u}));try{return await Zt.del(o+t,P({configuration:r,headers:i},a))}catch(g){if(!wT(g))throw await WA(g,{attemptedAs:e,registry:o,configuration:r,headers:i}),g;let f=await yT(),h=P(P({},i),BT(f));try{return await Zt.del(`${o}${t}`,P({configuration:r,headers:h},a))}catch(p){throw await WA(p,{attemptedAs:e,registry:o,configuration:r,headers:i}),p}}}async function tQ(t,{authType:e=2,configuration:r,ident:i}){let n=IT(t,{configuration:r,ident:i}),s=X6e(n,e);if(!s)return null;let o=await r.reduceHook(a=>a.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:i});if(o)return o;if(n.get("npmAuthToken"))return`Bearer ${n.get("npmAuthToken")}`;if(n.get("npmAuthIdent")){let a=n.get("npmAuthIdent");return a.includes(":")?`Basic ${Buffer.from(a).toString("base64")}`:`Basic ${a}`}if(s&&e!==1)throw new nt(z.AUTHENTICATION_NOT_FOUND,"No authentication configured for request");return null}function X6e(t,e){switch(e){case 2:return t.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function J6e(t,e,{configuration:r}){var i;if(typeof e=="undefined"||typeof e.authorization=="undefined")return"an anonymous user";try{return(i=(await Zt.get(new Dce.URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username)!=null?i:"an unknown user"}catch{return"an unknown user"}}async function yT(){if(process.env.TEST_ENV)return process.env.TEST_NPM_2FA_TOKEN||"";let{otp:t}=await(0,Pce.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return t}function wT(t){var e,r;if(((e=t.originalError)==null?void 0:e.name)!=="HTTPError")return!1;try{return((r=t.originalError)==null?void 0:r.response.headers["www-authenticate"].split(/,\s*/).map(n=>n.toLowerCase())).includes("otp")}catch(i){return!1}}function BT(t){return{["npm-otp"]:t}}var QT=class{supports(e,r){if(!e.reference.startsWith(ir))return!1;let{selector:i,params:n}=S.parseRange(e.reference);return!(!Rce.default.valid(i)||n===null||typeof n.__archiveUrl!="string")}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let{params:i}=S.parseRange(e.reference);if(i===null||typeof i.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let n=await zs(i.__archiveUrl,{configuration:r.project.configuration,ident:e});return await Ai.convertToZip(n,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}};var bT=class{supportsDescriptor(e,r){return!(!e.range.startsWith(ir)||!S.tryParseDescriptor(e.range.slice(ir.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){let i=S.parseDescriptor(e.range.slice(ir.length),!0);return r.resolver.getResolutionDependencies(i,r)}async getCandidates(e,r,i){let n=S.parseDescriptor(e.range.slice(ir.length),!0);return await i.resolver.getCandidates(n,r,i)}async getSatisfying(e,r,i){let n=S.parseDescriptor(e.range.slice(ir.length),!0);return i.resolver.getSatisfying(n,r,i)}resolve(e,r){throw new Error("Unreachable")}};var vT=ie(Or()),Fce=ie(require("url"));var Vs=class{supports(e,r){if(!e.reference.startsWith(ir))return!1;let i=new Fce.URL(e.reference);return!(!vT.default.valid(i.pathname)||i.searchParams.has("__archiveUrl"))}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i;try{i=await zs(Vs.getLocatorUrl(e),{configuration:r.project.configuration,ident:e})}catch(n){i=await zs(Vs.getLocatorUrl(e).replace(/%2f/g,"/"),{configuration:r.project.configuration,ident:e})}return await Ai.convertToZip(i,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:i}){let n=Ya(e.scope,{configuration:i}),s=Vs.getLocatorUrl(e);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),n=n.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===n+s||r===n+s.replace(/%2f/g,"/")}static getLocatorUrl(e){let r=vT.default.clean(e.reference.slice(ir.length));if(r===null)throw new nt(z.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");return`${zA(e)}/-/${e.name}-${r}.tgz`}};var ST=ie(Or());var rQ=S.makeIdent(null,"node-gyp"),Z6e=/\b(node-gyp|prebuild-install)\b/,xT=class{supportsDescriptor(e,r){return e.range.startsWith(ir)?!!qt.validRange(e.range.slice(ir.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(ir))return!1;let{selector:i}=S.parseRange(e.reference);return!!ST.default.valid(i)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=qt.validRange(e.range.slice(ir.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(ir.length)}`);let s=await zs(zA(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0}),o=de.mapAndFilter(Object.keys(s.versions),c=>{try{let u=new qt.SemVer(c);if(n.test(u))return u}catch{}return de.mapAndFilter.skip}),a=o.filter(c=>!s.versions[c.raw].deprecated),l=a.length>0?a:o;return l.sort((c,u)=>-c.compare(u)),l.map(c=>{let u=S.makeLocator(e,`${ir}${c.raw}`),g=s.versions[c.raw].dist.tarball;return Vs.isConventionalTarballUrl(u,g,{configuration:i.project.configuration})?u:S.bindLocator(u,{__archiveUrl:g})})}async getSatisfying(e,r,i){let n=qt.validRange(e.range.slice(ir.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(ir.length)}`);return de.mapAndFilter(r,s=>{try{let{selector:o}=S.parseRange(s,{requireProtocol:ir}),a=new qt.SemVer(o);if(n.test(a))return{reference:s,version:a}}catch{}return de.mapAndFilter.skip}).sort((s,o)=>-s.version.compare(o.version)).map(({reference:s})=>S.makeLocator(e,s))}async resolve(e,r){let{selector:i}=S.parseRange(e.reference),n=ST.default.clean(i);if(n===null)throw new nt(z.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");let s=await zs(zA(e),{configuration:r.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"versions"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(!Object.prototype.hasOwnProperty.call(s.versions,n))throw new nt(z.REMOTE_NOT_FOUND,`Registry failed to return reference "${n}"`);let o=new Ze;if(o.load(s.versions[n]),!o.dependencies.has(rQ.identHash)&&!o.peerDependencies.has(rQ.identHash)){for(let a of o.scripts.values())if(a.match(Z6e)){o.dependencies.set(rQ.identHash,S.makeDescriptor(rQ,"latest")),r.report.reportWarningOnce(z.NODE_GYP_INJECTED,`${S.prettyLocator(r.project.configuration,e)}: Implicit dependencies on node-gyp are discouraged`);break}}return typeof o.raw.deprecated=="string"&&r.report.reportWarningOnce(z.DEPRECATED_PACKAGE,`${S.prettyLocator(r.project.configuration,e)} is deprecated: ${o.raw.deprecated}`),_(P({},e),{version:n,languageName:"node",linkType:gt.HARD,conditions:o.getConditions(),dependencies:o.dependencies,peerDependencies:o.peerDependencies,dependenciesMeta:o.dependenciesMeta,peerDependenciesMeta:o.peerDependenciesMeta,bin:o.bin})}};var kT=class{supportsDescriptor(e,r){return!(!e.range.startsWith(ir)||!Rg.test(e.range.slice(ir.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(ir.length),s=await zs(zA(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"dist-tags"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data - missing "dist-tags" field');let o=s["dist-tags"];if(!Object.prototype.hasOwnProperty.call(o,n))throw new nt(z.REMOTE_NOT_FOUND,`Registry failed to return tag "${n}"`);let a=o[n],l=S.makeLocator(e,`${ir}${a}`),c=s.versions[a].dist.tarball;return Vs.isConventionalTarballUrl(l,c,{configuration:i.project.configuration})?[l]:[S.bindLocator(l,{__archiveUrl:c})]}async getSatisfying(e,r,i){return null}async resolve(e,r){throw new Error("Unreachable")}};var Rf={};it(Rf,{getGitHead:()=>_7e,makePublishBody:()=>V7e});var CM={};it(CM,{default:()=>D7e,packUtils:()=>za});var za={};it(za,{genPackList:()=>QQ,genPackStream:()=>dM,genPackageManifest:()=>age,hasPackScripts:()=>hM,prepareForPack:()=>pM});var fM=ie(Nn()),sge=ie(nge()),oge=ie(require("zlib")),I7e=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],y7e=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function hM(t){return!!(Kt.hasWorkspaceScript(t,"prepack")||Kt.hasWorkspaceScript(t,"postpack"))}async function pM(t,{report:e},r){await Kt.maybeExecuteWorkspaceLifecycleScript(t,"prepack",{report:e});try{let i=v.join(t.cwd,Ze.fileName);await T.existsPromise(i)&&await t.manifest.loadFile(i,{baseFs:T}),await r()}finally{await Kt.maybeExecuteWorkspaceLifecycleScript(t,"postpack",{report:e})}}async function dM(t,e){var s,o;typeof e=="undefined"&&(e=await QQ(t));let r=new Set;for(let a of(o=(s=t.manifest.publishConfig)==null?void 0:s.executableFiles)!=null?o:new Set)r.add(v.normalize(a));for(let a of t.manifest.bin.values())r.add(v.normalize(a));let i=sge.default.pack();process.nextTick(async()=>{for(let a of e){let l=v.normalize(a),c=v.resolve(t.cwd,l),u=v.join("package",l),g=await T.lstatPromise(c),f={name:u,mtime:new Date(mr.SAFE_TIME*1e3)},h=r.has(l)?493:420,p,d,m=new Promise((B,b)=>{p=B,d=b}),I=B=>{B?d(B):p()};if(g.isFile()){let B;l==="package.json"?B=Buffer.from(JSON.stringify(await age(t),null,2)):B=await T.readFilePromise(c),i.entry(_(P({},f),{mode:h,type:"file"}),B,I)}else g.isSymbolicLink()?i.entry(_(P({},f),{mode:h,type:"symlink",linkname:await T.readlinkPromise(c)}),I):I(new Error(`Unsupported file type ${g.mode} for ${M.fromPortablePath(l)}`));await m}i.finalize()});let n=(0,oge.createGzip)();return i.pipe(n),n}async function age(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function QQ(t){var g,f,h,p,d,m,I,B;let e=t.project,r=e.configuration,i={accept:[],reject:[]};for(let b of y7e)i.reject.push(b);for(let b of I7e)i.accept.push(b);i.reject.push(r.get("rcFilename"));let n=b=>{if(b===null||!b.startsWith(`${t.cwd}/`))return;let R=v.relative(t.cwd,b),H=v.resolve(Se.root,R);i.reject.push(H)};n(v.resolve(e.cwd,r.get("lockfileFilename"))),n(r.get("cacheFolder")),n(r.get("globalFolder")),n(r.get("installStatePath")),n(r.get("virtualFolder")),n(r.get("yarnPath")),await r.triggerHook(b=>b.populateYarnPaths,e,b=>{n(b)});for(let b of e.workspaces){let R=v.relative(t.cwd,b.cwd);R!==""&&!R.match(/^(\.\.)?\//)&&i.reject.push(`/${R}`)}let s={accept:[],reject:[]},o=(f=(g=t.manifest.publishConfig)==null?void 0:g.main)!=null?f:t.manifest.main,a=(p=(h=t.manifest.publishConfig)==null?void 0:h.module)!=null?p:t.manifest.module,l=(m=(d=t.manifest.publishConfig)==null?void 0:d.browser)!=null?m:t.manifest.browser,c=(B=(I=t.manifest.publishConfig)==null?void 0:I.bin)!=null?B:t.manifest.bin;o!=null&&s.accept.push(v.resolve(Se.root,o)),a!=null&&s.accept.push(v.resolve(Se.root,a)),typeof l=="string"&&s.accept.push(v.resolve(Se.root,l));for(let b of c.values())s.accept.push(v.resolve(Se.root,b));if(l instanceof Map)for(let[b,R]of l.entries())s.accept.push(v.resolve(Se.root,b)),typeof R=="string"&&s.accept.push(v.resolve(Se.root,R));let u=t.manifest.files!==null;if(u){s.reject.push("/*");for(let b of t.manifest.files)Age(s.accept,b,{cwd:Se.root})}return await w7e(t.cwd,{hasExplicitFileList:u,globalList:i,ignoreList:s})}async function w7e(t,{hasExplicitFileList:e,globalList:r,ignoreList:i}){let n=[],s=new Zo(t),o=[[Se.root,[i]]];for(;o.length>0;){let[a,l]=o.pop(),c=await s.lstatPromise(a);if(!cge(a,{globalList:r,ignoreLists:c.isDirectory()?null:l}))if(c.isDirectory()){let u=await s.readdirPromise(a),g=!1,f=!1;if(!e||a!==Se.root)for(let d of u)g=g||d===".gitignore",f=f||d===".npmignore";let h=f?await lge(s,a,".npmignore"):g?await lge(s,a,".gitignore"):null,p=h!==null?[h].concat(l):l;cge(a,{globalList:r,ignoreLists:l})&&(p=[...l,{accept:[],reject:["**/*"]}]);for(let d of u)o.push([v.resolve(a,d),p])}else(c.isFile()||c.isSymbolicLink())&&n.push(v.relative(Se.root,a))}return n.sort()}async function lge(t,e,r){let i={accept:[],reject:[]},n=await t.readFilePromise(v.join(e,r),"utf8");for(let s of n.split(/\n/g))Age(i.reject,s,{cwd:e});return i}function B7e(t,{cwd:e}){let r=t[0]==="!";return r&&(t=t.slice(1)),t.match(/\.{0,1}\//)&&(t=v.resolve(e,t)),r&&(t=`!${t}`),t}function Age(t,e,{cwd:r}){let i=e.trim();i===""||i[0]==="#"||t.push(B7e(i,{cwd:r}))}function cge(t,{globalList:e,ignoreLists:r}){if(bQ(t,e.accept))return!1;if(bQ(t,e.reject))return!0;if(r!==null)for(let i of r){if(bQ(t,i.accept))return!1;if(bQ(t,i.reject))return!0}return!1}function bQ(t,e){let r=e,i=[];for(let n=0;n{await pM(i,{report:l},async()=>{l.reportJson({base:M.fromPortablePath(i.cwd)});let c=await QQ(i);for(let u of c)l.reportInfo(null,M.fromPortablePath(u)),l.reportJson({location:M.fromPortablePath(u)});if(!this.dryRun){let u=await dM(i,c),g=T.createWriteStream(s);u.pipe(g),await new Promise(f=>{g.on("finish",f)})}}),this.dryRun||(l.reportInfo(z.UNNAMED,`Package archive generated in ${ue.pretty(e,s,ue.Type.PATH)}`),l.reportJson({output:M.fromPortablePath(s)}))})).exitCode()}};fm.paths=[["pack"]],fm.usage=ye.Usage({description:"generate a tarball from the active workspace",details:"\n This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\n\n If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\n ",examples:[["Create an archive from the active workspace","yarn pack"],["List the files that would be made part of the workspace's archive","yarn pack --dry-run"],["Name and output the archive in a dedicated folder","yarn pack --out /artifacts/%s-%v.tgz"]]});var gge=fm;function Q7e(t,{workspace:e}){let r=t.replace("%s",b7e(e)).replace("%v",v7e(e));return M.toPortablePath(r)}function b7e(t){return t.manifest.name!==null?S.slugifyIdent(t.manifest.name):"package"}function v7e(t){return t.manifest.version!==null?t.manifest.version:"unknown"}var S7e=["dependencies","devDependencies","peerDependencies"],x7e="workspace:",k7e=(t,e)=>{var i,n;e.publishConfig&&(e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let s of S7e)for(let o of t.manifest.getForScope(s).values()){let a=r.tryWorkspaceByDescriptor(o),l=S.parseRange(o.range);if(l.protocol===x7e)if(a===null){if(r.tryWorkspaceByIdent(o)===null)throw new nt(z.WORKSPACE_NOT_FOUND,`${S.prettyDescriptor(r.configuration,o)}: No local workspace found for this range`)}else{let c;S.areDescriptorsEqual(o,a.anchoredDescriptor)||l.selector==="*"?c=(i=a.manifest.version)!=null?i:"0.0.0":l.selector==="~"||l.selector==="^"?c=`${l.selector}${(n=a.manifest.version)!=null?n:"0.0.0"}`:c=l.selector,e[s][S.stringifyIdent(o)]=c}}},P7e={hooks:{beforeWorkspacePacking:k7e},commands:[gge]},D7e=P7e;var yge=ie(require("crypto")),wge=ie(Ige()),Bge=ie(require("url"));async function V7e(t,e,{access:r,tag:i,registry:n,gitHead:s}){let o=t.project.configuration,a=t.manifest.name,l=t.manifest.version,c=S.stringifyIdent(a),u=(0,yge.createHash)("sha1").update(e).digest("hex"),g=wge.default.fromData(e).toString();typeof r=="undefined"&&(t.manifest.publishConfig&&typeof t.manifest.publishConfig.access=="string"?r=t.manifest.publishConfig.access:o.get("npmPublishAccess")!==null?r=o.get("npmPublishAccess"):a.scope?r="restricted":r="public");let f=await za.genPackageManifest(t),h=`${c}-${l}.tgz`,p=new Bge.URL(`${To(n)}/${c}/-/${h}`);return{_id:c,_attachments:{[h]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}},name:c,access:r,["dist-tags"]:{[i]:l},versions:{[l]:_(P({},f),{_id:`${c}@${l}`,name:c,version:l,gitHead:s,dist:{shasum:u,integrity:g,tarball:p.toString()}})}}}async function _7e(t){try{let{stdout:e}=await hr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:t});return e.trim()===""?void 0:e.trim()}catch{return}}var wM={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:ge.BOOLEAN,default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:ge.SECRET,default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:ge.SECRET,default:null}},Qge={npmAuditRegistry:{description:"Registry to query for audit reports",type:ge.STRING,default:null},npmPublishRegistry:{description:"Registry to push packages to",type:ge.STRING,default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:ge.STRING,default:"https://registry.yarnpkg.com"}},X7e={configuration:_(P(P({},wM),Qge),{npmScopes:{description:"Settings per package scope",type:ge.MAP,valueDefinition:{description:"",type:ge.SHAPE,properties:P(P({},wM),Qge)}},npmRegistries:{description:"Settings per registry",type:ge.MAP,normalizeKeys:To,valueDefinition:{description:"",type:ge.SHAPE,properties:P({},wM)}}}),fetchers:[QT,Vs],resolvers:[bT,xT,kT]},Z7e=X7e;var vM={};it(vM,{default:()=>a_e});Ss();var Ho;(function(i){i.All="all",i.Production="production",i.Development="development"})(Ho||(Ho={}));var Xs;(function(s){s.Info="info",s.Low="low",s.Moderate="moderate",s.High="high",s.Critical="critical"})(Xs||(Xs={}));var vQ=[Xs.Info,Xs.Low,Xs.Moderate,Xs.High,Xs.Critical];function bge(t,e){let r=[],i=new Set,n=o=>{i.has(o)||(i.add(o),r.push(o))};for(let o of e)n(o);let s=new Set;for(;r.length>0;){let o=r.shift(),a=t.storedResolutions.get(o);if(typeof a=="undefined")throw new Error("Assertion failed: Expected the resolution to have been registered");let l=t.storedPackages.get(a);if(!!l){s.add(o);for(let c of l.dependencies.values())n(c.descriptorHash)}}return s}function $7e(t,e){return new Set([...t].filter(r=>!e.has(r)))}function e_e(t,e,{all:r}){let i=r?t.workspaces:[e],n=i.map(f=>f.manifest),s=new Set(n.map(f=>[...f.dependencies].map(([h,p])=>h)).flat()),o=new Set(n.map(f=>[...f.devDependencies].map(([h,p])=>h)).flat()),a=i.map(f=>[...f.dependencies.values()]).flat(),l=a.filter(f=>s.has(f.identHash)).map(f=>f.descriptorHash),c=a.filter(f=>o.has(f.identHash)).map(f=>f.descriptorHash),u=bge(t,l),g=bge(t,c);return $7e(g,u)}function vge(t){let e={};for(let r of t)e[S.stringifyIdent(r)]=S.parseRange(r.range).selector;return e}function Sge(t){if(typeof t=="undefined")return new Set;let e=vQ.indexOf(t),r=vQ.slice(e);return new Set(r)}function t_e(t,e){let r=Sge(e),i={};for(let n of r)i[n]=t[n];return i}function xge(t,e){var i;let r=t_e(t,e);for(let n of Object.keys(r))if((i=r[n])!=null?i:0>0)return!0;return!1}function kge(t,e){var s;let r={},i={children:r},n=Object.values(t.advisories);if(e!=null){let o=Sge(e);n=n.filter(a=>o.has(a.severity))}for(let o of de.sortMap(n,a=>a.module_name))r[o.module_name]={label:o.module_name,value:ue.tuple(ue.Type.RANGE,o.findings.map(a=>a.version).join(", ")),children:{Issue:{label:"Issue",value:ue.tuple(ue.Type.NO_HINT,o.title)},URL:{label:"URL",value:ue.tuple(ue.Type.URL,o.url)},Severity:{label:"Severity",value:ue.tuple(ue.Type.NO_HINT,o.severity)},["Vulnerable Versions"]:{label:"Vulnerable Versions",value:ue.tuple(ue.Type.RANGE,o.vulnerable_versions)},["Patched Versions"]:{label:"Patched Versions",value:ue.tuple(ue.Type.RANGE,o.patched_versions)},Via:{label:"Via",value:ue.tuple(ue.Type.NO_HINT,Array.from(new Set(o.findings.map(a=>a.paths).flat().map(a=>a.split(">")[0]))).join(", "))},Recommendation:{label:"Recommendation",value:ue.tuple(ue.Type.NO_HINT,(s=o.recommendation)==null?void 0:s.replace(/\n/g," "))}}};return i}function Pge(t,e,{all:r,environment:i}){let n=r?t.workspaces:[e],s=[Ho.All,Ho.Production].includes(i),o=[];if(s)for(let c of n)for(let u of c.manifest.dependencies.values())o.push(u);let a=[Ho.All,Ho.Development].includes(i),l=[];if(a)for(let c of n)for(let u of c.manifest.devDependencies.values())l.push(u);return vge([...o,...l].filter(c=>S.parseRange(c.range).protocol===null))}function Dge(t,e,{all:r}){var s;let i=e_e(t,e,{all:r}),n={};for(let o of t.storedPackages.values())n[S.stringifyIdent(o)]={version:(s=o.version)!=null?s:"0.0.0",integrity:o.identHash,requires:vge(o.dependencies.values()),dev:i.has(S.convertLocatorToDescriptor(o).descriptorHash)};return n}var dm=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=Y.String("--environment",Ho.All,{description:"Which environments to cover",validator:Yi(Ho)});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.severity=Y.String("--severity",Xs.Info,{description:"Minimal severity requested for packages to be displayed",validator:Yi(Xs)})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=Pge(r,i,{all:this.all,environment:this.environment}),s=Dge(r,i,{all:this.all});if(!this.recursive)for(let f of Object.keys(s))Object.prototype.hasOwnProperty.call(n,f)?s[f].requires={}:delete s[f];let o={requires:n,dependencies:s},a=gr.getAuditRegistry(i.manifest,{configuration:e}),l,c=await Fa.start({configuration:e,stdout:this.context.stdout},async()=>{l=await Lt.post("/-/npm/v1/security/audits/quick",o,{authType:Lt.AuthType.BEST_EFFORT,configuration:e,jsonResponse:!0,registry:a})});if(c.hasErrors())return c.exitCode();let u=xge(l.metadata.vulnerabilities,this.severity);return!this.json&&u?(Hs.emitTree(kge(l,this.severity),{configuration:e,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async f=>{f.reportJson(l),u||f.reportInfo(z.EXCEPTION,"No audit suggestions")})).exitCode()}};dm.paths=[["npm","audit"]],dm.usage=ye.Usage({description:"perform a vulnerability audit against the installed packages",details:` - This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). - - For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. - - Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${vQ.map(e=>`\`${e}\``).join(", ")}. - - If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. - - To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why \` to get more information as to who depends on them. - `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"]]});var Rge=dm;var BM=ie(Or()),QM=ie(require("util")),Cm=class extends Be{constructor(){super(...arguments);this.fields=Y.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=typeof this.fields!="undefined"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],s=!1,o=await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async a=>{for(let l of this.packages){let c;if(l==="."){let b=r.topLevelWorkspace;if(!b.manifest.name)throw new me(`Missing 'name' field in ${M.fromPortablePath(v.join(b.cwd,wt.manifest))}`);c=S.makeDescriptor(b.manifest.name,"unknown")}else c=S.parseDescriptor(l);let u=Lt.getIdentUrl(c),g=bM(await Lt.get(u,{configuration:e,ident:c,jsonResponse:!0,customErrorMessage:Lt.customPackageError})),f=Object.keys(g.versions).sort(BM.default.compareLoose),p=g["dist-tags"].latest||f[f.length-1],d=qt.validRange(c.range);if(d){let b=BM.default.maxSatisfying(f,d);b!==null?p=b:(a.reportWarning(z.UNNAMED,`Unmet range ${S.prettyRange(e,c.range)}; falling back to the latest version`),s=!0)}else c.range!=="unknown"&&(a.reportWarning(z.UNNAMED,`Invalid range ${S.prettyRange(e,c.range)}; falling back to the latest version`),s=!0);let m=g.versions[p],I=_(P(P({},g),m),{version:p,versions:f}),B;if(i!==null){B={};for(let b of i){let R=I[b];if(typeof R!="undefined")B[b]=R;else{a.reportWarning(z.EXCEPTION,`The '${b}' field doesn't exist inside ${S.prettyIdent(e,c)}'s informations`),s=!0;continue}}}else this.json||(delete I.dist,delete I.readme,delete I.users),B=I;a.reportJson(B),this.json||n.push(B)}});QM.inspect.styles.name="cyan";for(let a of n)(a!==n[0]||s)&&this.context.stdout.write(` -`),this.context.stdout.write(`${(0,QM.inspect)(a,{depth:Infinity,colors:!0,compact:!1})} -`);return o.exitCode()}};Cm.paths=[["npm","info"]],Cm.usage=ye.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command will fetch information about a package from the npm registry, and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package informations.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react 16.12.0","yarn npm info react@16.12.0"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]});var Fge=Cm;function bM(t){if(Array.isArray(t)){let e=[];for(let r of t)r=bM(r),r&&e.push(r);return e}else if(typeof t=="object"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith("_"))continue;let i=bM(t[r]);i&&(e[r]=i)}return e}else return t||null}var Nge=ie(aC()),mm=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Login to the publish registry"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let s=await i_e({registry:r,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),o=`/-/user/org.couchdb.user:${encodeURIComponent(s.name)}`,a=await Lt.put(o,s,{attemptedAs:s.name,configuration:e,registry:r,jsonResponse:!0,authType:Lt.AuthType.NO_AUTH});return await r_e(r,a.token,{configuration:e,scope:this.scope}),n.reportInfo(z.UNNAMED,"Successfully logged in")})).exitCode()}};mm.paths=[["npm","login"]],mm.usage=ye.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]});var Lge=mm;async function SQ({scope:t,publish:e,configuration:r,cwd:i}){return t&&e?gr.getScopeRegistry(t,{configuration:r,type:gr.RegistryType.PUBLISH_REGISTRY}):t?gr.getScopeRegistry(t,{configuration:r}):e?gr.getPublishRegistry((await rf(r,i)).manifest,{configuration:r}):gr.getDefaultRegistry({configuration:r})}async function r_e(t,e,{configuration:r,scope:i}){let n=o=>a=>{let l=de.isIndexableObject(a)?a:{},c=l[o],u=de.isIndexableObject(c)?c:{};return _(P({},l),{[o]:_(P({},u),{npmAuthToken:e})})},s=i?{npmScopes:n(i)}:{npmRegistries:n(t)};return await fe.updateHomeConfiguration(s)}async function i_e({registry:t,report:e,stdin:r,stdout:i}){if(process.env.TEST_ENV)return{name:process.env.TEST_NPM_USER||"",password:process.env.TEST_NPM_PASSWORD||""};e.reportInfo(z.UNNAMED,`Logging in to ${t}`);let n=!1;t.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(e.reportInfo(z.UNNAMED,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0),e.reportSeparator();let{username:s,password:o}=await(0,Nge.prompt)([{type:"input",name:"username",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:i},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:i}]);return e.reportSeparator(),{name:s,password:o}}var Ff=new Set(["npmAuthIdent","npmAuthToken"]),Em=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=Y.Boolean("-A,--all",!1,{description:"Logout of all registries"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=async()=>{var l;let n=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),s=await fe.find(this.context.cwd,this.context.plugins),o=S.makeIdent((l=this.scope)!=null?l:null,"pkg");return!gr.getAuthConfiguration(n,{configuration:s,ident:o}).get("npmAuthToken")};return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{if(this.all&&(await n_e(),n.reportInfo(z.UNNAMED,"Successfully logged out from everything")),this.scope){await Tge("npmScopes",this.scope),await r()?n.reportInfo(z.UNNAMED,`Successfully logged out from ${this.scope}`):n.reportWarning(z.UNNAMED,"Scope authentication settings removed, but some other ones settings still apply to it");return}let s=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish});await Tge("npmRegistries",s),await r()?n.reportInfo(z.UNNAMED,`Successfully logged out from ${s}`):n.reportWarning(z.UNNAMED,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};Em.paths=[["npm","logout"]],Em.usage=ye.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]});var Mge=Em;function s_e(t,e){let r=t[e];if(!de.isIndexableObject(r))return!1;let i=new Set(Object.keys(r));if([...Ff].every(s=>!i.has(s)))return!1;for(let s of Ff)i.delete(s);if(i.size===0)return t[e]=void 0,!0;let n=P({},r);for(let s of Ff)delete n[s];return t[e]=n,!0}async function n_e(){let t=e=>{let r=!1,i=de.isIndexableObject(e)?P({},e):{};i.npmAuthToken&&(delete i.npmAuthToken,r=!0);for(let n of Object.keys(i))s_e(i,n)&&(r=!0);if(Object.keys(i).length!==0)return r?i:e};return await fe.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function Tge(t,e){return await fe.updateHomeConfiguration({[t]:r=>{let i=de.isIndexableObject(r)?r:{};if(!Object.prototype.hasOwnProperty.call(i,e))return r;let n=i[e],s=de.isIndexableObject(n)?n:{},o=new Set(Object.keys(s));if([...Ff].every(l=>!o.has(l)))return r;for(let l of Ff)o.delete(l);if(o.size===0)return Object.keys(i).length===1?void 0:_(P({},i),{[e]:void 0});let a={};for(let l of Ff)a[l]=void 0;return _(P({},i),{[e]:P(P({},s),a)})}})}var Im=class extends Be{constructor(){super(...arguments);this.access=Y.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=Y.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=Y.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);if(i.manifest.private)throw new me("Private workspaces cannot be published");if(i.manifest.name===null||i.manifest.version===null)throw new me("Workspaces must have valid names and versions to be published on an external registry");await r.restoreInstallState();let n=i.manifest.name,s=i.manifest.version,o=gr.getPublishRegistry(i.manifest,{configuration:e});return(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{var c,u;if(this.tolerateRepublish)try{let g=await Lt.get(Lt.getIdentUrl(n),{configuration:e,registry:o,ident:n,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(g,"versions"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(Object.prototype.hasOwnProperty.call(g.versions,s)){l.reportWarning(z.UNNAMED,`Registry already knows about version ${s}; skipping.`);return}}catch(g){if(((u=(c=g.originalError)==null?void 0:c.response)==null?void 0:u.statusCode)!==404)throw g}await Kt.maybeExecuteWorkspaceLifecycleScript(i,"prepublish",{report:l}),await za.prepareForPack(i,{report:l},async()=>{let g=await za.genPackList(i);for(let m of g)l.reportInfo(null,m);let f=await za.genPackStream(i,g),h=await de.bufferStream(f),p=await Rf.getGitHead(i.cwd),d=await Rf.makePublishBody(i,h,{access:this.access,tag:this.tag,registry:o,gitHead:p});await Lt.put(Lt.getIdentUrl(n),d,{configuration:e,registry:o,ident:n,jsonResponse:!0})}),l.reportInfo(z.UNNAMED,"Package archive published")})).exitCode()}};Im.paths=[["npm","publish"]],Im.usage=ye.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overriden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]});var Oge=Im;var Uge=ie(Or());var ym=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=Y.String({required:!1})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n;if(typeof this.package!="undefined")n=S.parseIdent(this.package);else{if(!i)throw new rt(r.cwd,this.context.cwd);if(!i.manifest.name)throw new me(`Missing 'name' field in ${M.fromPortablePath(v.join(i.cwd,wt.manifest))}`);n=i.manifest.name}let s=await wm(n,e),a={children:de.sortMap(Object.entries(s),([l])=>l).map(([l,c])=>({value:ue.tuple(ue.Type.RESOLUTION,{descriptor:S.makeDescriptor(n,l),locator:S.makeLocator(n,c)})}))};return Hs.emitTree(a,{configuration:e,json:this.json,stdout:this.context.stdout})}};ym.paths=[["npm","tag","list"]],ym.usage=ye.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` - This command will list all tags of a package from the npm registry. - - If the package is not specified, Yarn will default to the current workspace. - `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]});var Kge=ym;async function wm(t,e){let r=`/-/package${Lt.getIdentUrl(t)}/dist-tags`;return Lt.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:Lt.customPackageError})}var Bm=class extends Be{constructor(){super(...arguments);this.package=Y.String();this.tag=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=S.parseDescriptor(this.package,!0),s=n.range;if(!Uge.default.valid(s))throw new me(`The range ${ue.pretty(e,n.range,ue.Type.RANGE)} must be a valid semver version`);let o=gr.getPublishRegistry(i.manifest,{configuration:e}),a=ue.pretty(e,n,ue.Type.IDENT),l=ue.pretty(e,s,ue.Type.RANGE),c=ue.pretty(e,this.tag,ue.Type.CODE);return(await Fe.start({configuration:e,stdout:this.context.stdout},async g=>{let f=await wm(n,e);Object.prototype.hasOwnProperty.call(f,this.tag)&&f[this.tag]===s&&g.reportWarning(z.UNNAMED,`Tag ${c} is already set to version ${l}`);let h=`/-/package${Lt.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Lt.put(h,s,{configuration:e,registry:o,ident:n,jsonRequest:!0,jsonResponse:!0}),g.reportInfo(z.UNNAMED,`Tag ${c} added to version ${l} of package ${a}`)})).exitCode()}};Bm.paths=[["npm","tag","add"]],Bm.usage=ye.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` - This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. - `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]});var Hge=Bm;var Qm=class extends Be{constructor(){super(...arguments);this.package=Y.String();this.tag=Y.String()}async execute(){if(this.tag==="latest")throw new me("The 'latest' tag cannot be removed.");let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=S.parseIdent(this.package),s=gr.getPublishRegistry(i.manifest,{configuration:e}),o=ue.pretty(e,this.tag,ue.Type.CODE),a=ue.pretty(e,n,ue.Type.IDENT),l=await wm(n,e);if(!Object.prototype.hasOwnProperty.call(l,this.tag))throw new me(`${o} is not a tag of package ${a}`);return(await Fe.start({configuration:e,stdout:this.context.stdout},async u=>{let g=`/-/package${Lt.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Lt.del(g,{configuration:e,registry:s,ident:n,jsonResponse:!0}),u.reportInfo(z.UNNAMED,`Tag ${o} removed from package ${a}`)})).exitCode()}};Qm.paths=[["npm","tag","remove"]],Qm.usage=ye.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` - This command will remove a tag from a package from the npm registry. - `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]});var Gge=Qm;var bm=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Print username for the publish registry"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r;return this.scope&&this.publish?r=gr.getScopeRegistry(this.scope,{configuration:e,type:gr.RegistryType.PUBLISH_REGISTRY}):this.scope?r=gr.getScopeRegistry(this.scope,{configuration:e}):this.publish?r=gr.getPublishRegistry((await rf(e,this.context.cwd)).manifest,{configuration:e}):r=gr.getDefaultRegistry({configuration:e}),(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{var o,a;let s;try{s=await Lt.get("/-/whoami",{configuration:e,registry:r,authType:Lt.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?S.makeIdent(this.scope,""):void 0})}catch(l){if(((o=l.response)==null?void 0:o.statusCode)===401||((a=l.response)==null?void 0:a.statusCode)===403){n.reportError(z.AUTHENTICATION_INVALID,"Authentication failed - your credentials may have expired");return}else throw l}n.reportInfo(z.UNNAMED,s.username)})).exitCode()}};bm.paths=[["npm","whoami"]],bm.usage=ye.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]});var jge=bm;var o_e={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:ge.STRING,default:null}},commands:[Rge,Fge,Lge,Mge,Oge,Hge,Kge,Gge,jge]},a_e=o_e;var NM={};it(NM,{default:()=>B_e,patchUtils:()=>SM});var SM={};it(SM,{applyPatchFile:()=>PQ,diffFolders:()=>DM,extractPackageToDisk:()=>PM,extractPatchFlags:()=>Xge,isParentRequired:()=>kM,loadPatchFiles:()=>km,makeDescriptor:()=>I_e,makeLocator:()=>xM,parseDescriptor:()=>Sm,parseLocator:()=>xm,parsePatchFile:()=>kQ});var vm=class extends Error{constructor(e,r){super(`Cannot apply hunk #${e+1}`);this.hunk=r}};var A_e=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function Nf(t){return v.relative(Se.root,v.resolve(Se.root,M.toPortablePath(t)))}function l_e(t){let e=t.trim().match(A_e);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var c_e=420,u_e=493,Lr;(function(i){i.Context="context",i.Insertion="insertion",i.Deletion="deletion"})(Lr||(Lr={}));var Yge=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),g_e=t=>({header:l_e(t),parts:[]}),f_e={["@"]:"header",["-"]:Lr.Deletion,["+"]:Lr.Insertion,[" "]:Lr.Context,["\\"]:"pragma",undefined:Lr.Context};function p_e(t){let e=[],r=Yge(),i="parsing header",n=null,s=null;function o(){n&&(s&&(n.parts.push(s),s=null),r.hunks.push(n),n=null)}function a(){o(),e.push(r),r=Yge()}for(let l=0;l0?"patch":"mode change",B=null;switch(I){case"rename":{if(!u||!g)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:i,fromPath:Nf(u),toPath:Nf(g)}),B=g}break;case"file deletion":{let b=n||p;if(!b)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:i,hunk:m&&m[0]||null,path:Nf(b),mode:xQ(l),hash:f})}break;case"file creation":{let b=s||d;if(!b)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:i,hunk:m&&m[0]||null,path:Nf(b),mode:xQ(c),hash:h})}break;case"patch":case"mode change":B=d||s;break;default:de.assertNever(I);break}B&&o&&a&&o!==a&&e.push({type:"mode change",semverExclusivity:i,path:Nf(B),oldMode:xQ(o),newMode:xQ(a)}),B&&m&&m.length&&e.push({type:"patch",semverExclusivity:i,path:Nf(B),hunks:m,beforeHash:f,afterHash:h})}if(e.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return e}function xQ(t){let e=parseInt(t,8)&511;if(e!==c_e&&e!==u_e)throw new Error(`Unexpected file mode string: ${t}`);return e}function kQ(t){let e=t.split(/\n/g);return e[e.length-1]===""&&e.pop(),d_e(p_e(e))}function h_e(t){let e=0,r=0;for(let{type:i,lines:n}of t.parts)switch(i){case Lr.Context:r+=n.length,e+=n.length;break;case Lr.Deletion:e+=n.length;break;case Lr.Insertion:r+=n.length;break;default:de.assertNever(i);break}if(e!==t.header.original.length||r!==t.header.patched.length){let i=n=>n<0?n:`+${n}`;throw new Error(`hunk header integrity check failed (expected @@ ${i(t.header.original.length)} ${i(t.header.patched.length)} @@, got @@ ${i(e)} ${i(r)} @@)`)}}async function Lf(t,e,r){let i=await t.lstatPromise(e),n=await r();if(typeof n!="undefined"&&(e=n),t.lutimesPromise)await t.lutimesPromise(e,i.atime,i.mtime);else if(!i.isSymbolicLink())await t.utimesPromise(e,i.atime,i.mtime);else throw new Error("Cannot preserve the time values of a symlink")}async function PQ(t,{baseFs:e=new Wt,dryRun:r=!1,version:i=null}={}){for(let n of t)if(!(n.semverExclusivity!==null&&i!==null&&!qt.satisfiesWithPrereleases(i,n.semverExclusivity)))switch(n.type){case"file deletion":if(r){if(!e.existsSync(n.path))throw new Error(`Trying to delete a file that doesn't exist: ${n.path}`)}else await Lf(e,v.dirname(n.path),async()=>{await e.unlinkPromise(n.path)});break;case"rename":if(r){if(!e.existsSync(n.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${n.fromPath}`)}else await Lf(e,v.dirname(n.fromPath),async()=>{await Lf(e,v.dirname(n.toPath),async()=>{await Lf(e,n.fromPath,async()=>(await e.movePromise(n.fromPath,n.toPath),n.toPath))})});break;case"file creation":if(r){if(e.existsSync(n.path))throw new Error(`Trying to create a file that already exists: ${n.path}`)}else{let s=n.hunk?n.hunk.parts[0].lines.join(` -`)+(n.hunk.parts[0].noNewlineAtEndOfFile?"":` -`):"";await e.mkdirpPromise(v.dirname(n.path),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),await e.writeFilePromise(n.path,s,{mode:n.mode}),await e.utimesPromise(n.path,mr.SAFE_TIME,mr.SAFE_TIME)}break;case"patch":await Lf(e,n.path,async()=>{await C_e(n,{baseFs:e,dryRun:r})});break;case"mode change":{let o=(await e.statPromise(n.path)).mode;if(qge(n.newMode)!==qge(o))continue;await Lf(e,n.path,async()=>{await e.chmodPromise(n.path,n.newMode)})}break;default:de.assertNever(n);break}}function qge(t){return(t&64)>0}function Jge(t){return t.replace(/\s+$/,"")}function m_e(t,e){return Jge(t)===Jge(e)}async function C_e({hunks:t,path:e},{baseFs:r,dryRun:i=!1}){let n=await r.statSync(e).mode,o=(await r.readFileSync(e,"utf8")).split(/\n/),a=[],l=0,c=0;for(let g of t){let f=Math.max(c,g.header.patched.start+l),h=Math.max(0,f-c),p=Math.max(0,o.length-f-g.header.original.length),d=Math.max(h,p),m=0,I=0,B=null;for(;m<=d;){if(m<=h&&(I=f-m,B=Wge(g,o,I),B!==null)){m=-m;break}if(m<=p&&(I=f+m,B=Wge(g,o,I),B!==null))break;m+=1}if(B===null)throw new vm(t.indexOf(g),g);a.push(B),l+=m,c=I+g.header.original.length}if(i)return;let u=0;for(let g of a)for(let f of g)switch(f.type){case"splice":{let h=f.index+u;o.splice(h,f.numToDelete,...f.linesToInsert),u+=f.linesToInsert.length-f.numToDelete}break;case"pop":o.pop();break;case"push":o.push(f.line);break;default:de.assertNever(f);break}await r.writeFilePromise(e,o.join(` -`),{mode:n})}function Wge(t,e,r){let i=[];for(let n of t.parts)switch(n.type){case Lr.Context:case Lr.Deletion:{for(let s of n.lines){let o=e[r];if(o==null||!m_e(o,s))return null;r+=1}n.type===Lr.Deletion&&(i.push({type:"splice",index:r-n.lines.length,numToDelete:n.lines.length,linesToInsert:[]}),n.noNewlineAtEndOfFile&&i.push({type:"push",line:""}))}break;case Lr.Insertion:i.push({type:"splice",index:r,numToDelete:0,linesToInsert:n.lines}),n.noNewlineAtEndOfFile&&i.push({type:"pop"});break;default:de.assertNever(n.type);break}return i}var E_e=/^builtin<([^>]+)>$/;function zge(t,e){let{source:r,selector:i,params:n}=S.parseRange(t);if(r===null)throw new Error("Patch locators must explicitly define their source");let s=i?i.split(/&/).map(c=>M.toPortablePath(c)):[],o=n&&typeof n.locator=="string"?S.parseLocator(n.locator):null,a=n&&typeof n.version=="string"?n.version:null,l=e(r);return{parentLocator:o,sourceItem:l,patchPaths:s,sourceVersion:a}}function Sm(t){let i=zge(t.range,S.parseDescriptor),{sourceItem:e}=i,r=qr(i,["sourceItem"]);return _(P({},r),{sourceDescriptor:e})}function xm(t){let i=zge(t.reference,S.parseLocator),{sourceItem:e}=i,r=qr(i,["sourceItem"]);return _(P({},r),{sourceLocator:e})}function Vge({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:i,patchHash:n},s){let o=t!==null?{locator:S.stringifyLocator(t)}:{},a=typeof i!="undefined"?{version:i}:{},l=typeof n!="undefined"?{hash:n}:{};return S.makeRange({protocol:"patch:",source:s(e),selector:r.join("&"),params:P(P(P({},a),l),o)})}function I_e(t,{parentLocator:e,sourceDescriptor:r,patchPaths:i}){return S.makeLocator(t,Vge({parentLocator:e,sourceItem:r,patchPaths:i},S.stringifyDescriptor))}function xM(t,{parentLocator:e,sourcePackage:r,patchPaths:i,patchHash:n}){return S.makeLocator(t,Vge({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:i,patchHash:n},S.stringifyLocator))}function _ge({onAbsolute:t,onRelative:e,onBuiltin:r},i){i.startsWith("~")&&(i=i.slice(1));let s=i.match(E_e);return s!==null?r(s[1]):v.isAbsolute(i)?t(i):e(i)}function Xge(t){let e=t.startsWith("~");return e&&(t=t.slice(1)),{optional:e}}function kM(t){return _ge({onAbsolute:()=>!1,onRelative:()=>!0,onBuiltin:()=>!1},t)}async function km(t,e,r){let i=t!==null?await r.fetcher.fetch(t,r):null,n=i&&i.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,i.localPath)}:i;i&&i!==n&&i.releaseFs&&i.releaseFs();let s=await de.releaseAfterUseAsync(async()=>await Promise.all(e.map(async o=>{let a=Xge(o),l=await _ge({onAbsolute:async()=>await T.readFilePromise(o,"utf8"),onRelative:async()=>{if(n===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await n.packageFs.readFilePromise(v.join(n.prefixPath,o),"utf8")},onBuiltin:async c=>await r.project.configuration.firstHook(u=>u.getBuiltinPatch,r.project,c)},o);return _(P({},a),{source:l})})));for(let o of s)typeof o.source=="string"&&(o.source=o.source.replace(/\r\n?/g,` -`));return s}async function PM(t,{cache:e,project:r}){let i=r.storedPackages.get(t.locatorHash);if(typeof i=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let n=r.storedChecksums,s=new ei,o=r.configuration.makeFetcher(),a=await o.fetch(t,{cache:e,project:r,fetcher:o,checksums:n,report:s}),l=await T.mktempPromise(),c=v.join(l,"source"),u=v.join(l,"user"),g=v.join(l,".yarn-patch.json");return await Promise.all([T.copyPromise(c,a.prefixPath,{baseFs:a.packageFs}),T.copyPromise(u,a.prefixPath,{baseFs:a.packageFs}),T.writeJsonPromise(g,{locator:S.stringifyLocator(t),version:i.version})]),T.detachTemp(l),u}async function DM(t,e){let r=M.fromPortablePath(t).replace(/\\/g,"/"),i=M.fromPortablePath(e).replace(/\\/g,"/"),{stdout:n,stderr:s}=await hr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--text",r,i],{cwd:M.toPortablePath(process.cwd()),env:_(P({},process.env),{GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""})});if(s.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. -The following error was reported by 'git': -${s}`);let o=r.startsWith("/")?a=>a.slice(1):a=>a;return n.replace(new RegExp(`(a|b)(${de.escapeRegExp(`/${o(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${de.escapeRegExp(`/${o(i)}/`)}`,"g"),"$1/").replace(new RegExp(de.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(de.escapeRegExp(`${i}/`),"g"),"")}function Zge(t,{configuration:e,report:r}){for(let i of t.parts)for(let n of i.lines)switch(i.type){case Lr.Context:r.reportInfo(null,` ${ue.pretty(e,n,"grey")}`);break;case Lr.Deletion:r.reportError(z.FROZEN_LOCKFILE_EXCEPTION,`- ${ue.pretty(e,n,ue.Type.REMOVED)}`);break;case Lr.Insertion:r.reportError(z.FROZEN_LOCKFILE_EXCEPTION,`+ ${ue.pretty(e,n,ue.Type.ADDED)}`);break;default:de.assertNever(i.type)}}var RM=class{supports(e,r){return!!e.reference.startsWith("patch:")}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:o}}async patchPackage(e,r){let{parentLocator:i,sourceLocator:n,sourceVersion:s,patchPaths:o}=xm(e),a=await km(i,o,r),l=await T.mktempPromise(),c=v.join(l,"current.zip"),u=await r.fetcher.fetch(n,r),g=S.getIdentVendorPath(e),f=await $i(),h=new Jr(c,{libzip:f,create:!0,level:r.project.configuration.get("compressionLevel")});await de.releaseAfterUseAsync(async()=>{await h.copyPromise(g,u.prefixPath,{baseFs:u.packageFs,stableSort:!0})},u.releaseFs),h.saveAndClose();for(let{source:p,optional:d}of a){if(p===null)continue;let m=new Jr(c,{libzip:f,level:r.project.configuration.get("compressionLevel")}),I=new Ft(v.resolve(Se.root,g),{baseFs:m});try{await PQ(kQ(p),{baseFs:I,version:s})}catch(B){if(!(B instanceof vm))throw B;let b=r.project.configuration.get("enableInlineHunks"),R=!b&&!d?" (set enableInlineHunks for details)":"",H=`${S.prettyLocator(r.project.configuration,e)}: ${B.message}${R}`,L=K=>{!b||Zge(B.hunk,{configuration:r.project.configuration,report:K})};if(m.discardAndClose(),d){r.report.reportWarningOnce(z.PATCH_HUNK_FAILED,H,{reportExtra:L});continue}else throw new nt(z.PATCH_HUNK_FAILED,H,L)}m.saveAndClose()}return new Jr(c,{libzip:f,level:r.project.configuration.get("compressionLevel")})}};var y_e=3,FM=class{supportsDescriptor(e,r){return!!e.range.startsWith("patch:")}supportsLocator(e,r){return!!e.reference.startsWith("patch:")}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){let{patchPaths:n}=Sm(e);return n.every(s=>!kM(s))?e:S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:i}=Sm(e);return[i]}async getCandidates(e,r,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:n,sourceDescriptor:s,patchPaths:o}=Sm(e),a=await km(n,o,i.fetchOptions),l=r.get(s.descriptorHash);if(typeof l=="undefined")throw new Error("Assertion failed: The dependency should have been resolved");let c=mn.makeHash(`${y_e}`,...a.map(u=>JSON.stringify(u))).slice(0,6);return[xM(e,{parentLocator:n,sourcePackage:l,patchPaths:o,patchHash:c})]}async getSatisfying(e,r,i){return null}async resolve(e,r){let{sourceLocator:i}=xm(e),n=await r.resolver.resolve(i,r);return P(P({},n),e)}};var Pm=class extends Be{constructor(){super(...arguments);this.save=Y.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=v.resolve(this.context.cwd,M.toPortablePath(this.patchFolder)),s=v.join(n,"../source"),o=v.join(n,"../.yarn-patch.json");if(!T.existsSync(s))throw new me("The argument folder didn't get created by 'yarn patch'");let a=await DM(s,n),l=await T.readJsonPromise(o),c=S.parseLocator(l.locator,!0);if(!r.storedPackages.has(c.locatorHash))throw new me("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(a);return}let u=e.get("patchFolder"),g=v.join(u,S.slugifyLocator(c));await T.mkdirPromise(u,{recursive:!0}),await T.writeFilePromise(g,a);let f=v.relative(r.cwd,g);r.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:S.stringifyIdent(c),description:l.version}},reference:`patch:${S.stringifyLocator(c)}#${f}`}),await r.persist()}};Pm.paths=[["patch-commit"]],Pm.usage=ye.Usage({description:"generate a patch out of a directory",details:"\n This will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n Only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "});var $ge=Pm;var Dm=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let s=S.parseLocator(this.package);if(s.reference==="unknown"){let o=de.mapAndFilter([...r.storedPackages.values()],a=>a.identHash!==s.identHash?de.mapAndFilter.skip:S.isVirtualLocator(a)?de.mapAndFilter.skip:a);if(o.length===0)throw new me("No package found in the project for the given locator");if(o.length>1)throw new me(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): -${o.map(a=>` -- ${S.prettyLocator(e,a)}`).join("")}`);s=o[0]}if(!r.storedPackages.has(s.locatorHash))throw new me("No package found in the project for the given locator");await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async o=>{let a=await PM(s,{cache:n,project:r});o.reportJson({locator:S.stringifyLocator(s),path:M.fromPortablePath(a)}),o.reportInfo(z.UNNAMED,`Package ${S.prettyLocator(e,s)} got extracted with success!`),o.reportInfo(z.UNNAMED,`You can now edit the following folder: ${ue.pretty(e,M.fromPortablePath(a),"magenta")}`),o.reportInfo(z.UNNAMED,`Once you are done run ${ue.pretty(e,`yarn patch-commit ${process.platform==="win32"?'"':""}${M.fromPortablePath(a)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};Dm.paths=[["patch"]],Dm.usage=ye.Usage({description:"prepare a package for patching",details:'\n This command will cause a package to be extracted in a temporary directory (under a folder named "patch-workdir"). This folder will be editable at will; running `yarn patch` inside it will then cause Yarn to generate a patchfile and register it into your top-level manifest (cf the `patch:` protocol).\n '});var efe=Dm;var w_e={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:ge.BOOLEAN,default:!1},patchFolder:{description:"Folder where the patch files must be written",type:ge.ABSOLUTE_PATH,default:"./.yarn/patches"}},commands:[$ge,efe],fetchers:[RM],resolvers:[FM]},B_e=w_e;var TM={};it(TM,{default:()=>S_e});var tfe=ie(Wp()),LM=class{supportsPackage(e,r){return r.project.configuration.get("nodeLinker")==="pnpm"}async findPackageLocation(e,r){return nfe(e,{project:r.project})}async findPackageLocator(e,r){let i=ife(),n=r.project.installersCustomData.get(i);if(!n)throw new me(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let s=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(s){let l=n.locatorByPath.get(s[1]);if(l)return l}let o=e,a=e;do{a=o,o=v.dirname(a);let l=n.locatorByPath.get(a);if(l)return l}while(o!==a);return null}makeInstaller(e){return new rfe(e)}},rfe=class{constructor(e){this.opts=e;this.asyncActions=new afe;this.packageLocations=new Map;this.customData={locatorByPath:new Map}}getCustomDataKey(){return ife()}attachCustomData(e){this.customData=e}async installPackage(e,r,i){switch(e.linkType){case gt.SOFT:return this.installPackageSoft(e,r,i);case gt.HARD:return this.installPackageHard(e,r,i)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,r,i){let n=v.resolve(r.packageFs.getRealPath(),r.prefixPath);return this.packageLocations.set(e.locatorHash,n),{packageLocation:n,buildDirective:null}}async installPackageHard(e,r,i){var u;let n=nfe(e,{project:this.opts.project});this.customData.locatorByPath.set(n,S.stringifyLocator(e)),this.packageLocations.set(e.locatorHash,n),i.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await T.mkdirPromise(n,{recursive:!0}),await T.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1})}));let o=S.isVirtualLocator(e)?S.devirtualizeLocator(e):e,a={manifest:(u=await Ze.tryFind(r.prefixPath,{baseFs:r.packageFs}))!=null?u:new Ze,misc:{hasBindingGyp:Ws.hasBindingGyp(r)}},l=this.opts.project.getDependencyMeta(o,e.version),c=Ws.extractBuildScripts(e,a,l,{configuration:this.opts.project.configuration,report:this.opts.report});return{packageLocation:n,buildDirective:c}}async attachInternalDependencies(e,r){this.opts.project.configuration.get("nodeLinker")==="pnpm"&&(!ofe(e,{project:this.opts.project})||this.asyncActions.reduce(e.locatorHash,async i=>{await i;let n=this.packageLocations.get(e.locatorHash);if(typeof n=="undefined")throw new Error(`Assertion failed: Expected the package to have been registered (${S.stringifyLocator(e)})`);let s=v.join(n,wt.nodeModules);r.length>0&&await T.mkdirpPromise(s);let o=await Q_e(s),a=[];for(let[l,c]of r){let u=c;ofe(c,{project:this.opts.project})||(this.opts.report.reportWarning(z.UNNAMED,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),u=S.devirtualizeLocator(c));let g=this.packageLocations.get(u.locatorHash);if(typeof g=="undefined")throw new Error(`Assertion failed: Expected the package to have been registered (${S.stringifyLocator(c)})`);let f=S.stringifyIdent(l),h=v.join(s,f),p=v.relative(v.dirname(h),g),d=o.get(f);o.delete(f),a.push(Promise.resolve().then(async()=>{if(d){if(d.isSymbolicLink()&&await T.readlinkPromise(h)===p)return;await T.removePromise(h)}await T.mkdirpPromise(v.dirname(h)),process.platform=="win32"?await T.symlinkPromise(g,h,"junction"):await T.symlinkPromise(p,h)}))}for(let l of o.keys())a.push(T.removePromise(v.join(s,l)));await Promise.all(a)}))}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let e=sfe(this.opts.project),r=new Set;for(let s of this.packageLocations.values())r.add(v.basename(s));let i;try{i=await T.readdirPromise(e)}catch{i=[]}let n=[];for(let s of i)r.has(s)||n.push(T.removePromise(v.join(e,s)));await Promise.all(n),await this.asyncActions.wait()}};function ife(){return JSON.stringify({name:"PnpmInstaller",version:1})}function sfe(t){return v.join(t.cwd,wt.nodeModules,".store")}function nfe(t,{project:e}){let r=S.slugifyLocator(t);return v.join(sfe(e),r)}function ofe(t,{project:e}){return!S.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function Q_e(t){let e=new Map,r=[];try{r=await T.readdirPromise(t,{withFileTypes:!0})}catch(i){if(i.code!=="ENOENT")throw i}try{for(let i of r)if(!i.name.startsWith("."))if(i.name.startsWith("@"))for(let n of await T.readdirPromise(v.join(t,i.name),{withFileTypes:!0}))e.set(`${i.name}/${n.name}`,n);else e.set(i.name,i)}catch(i){if(i.code!=="ENOENT")throw i}return e}function b_e(){let t,e;return{promise:new Promise((i,n)=>{t=i,e=n}),resolve:t,reject:e}}var afe=class{constructor(){this.deferred=new Map;this.promises=new Map;this.limit=(0,tfe.default)(10)}set(e,r){let i=this.deferred.get(e);typeof i=="undefined"&&this.deferred.set(e,i=b_e());let n=this.limit(()=>r());return this.promises.set(e,n),n.then(()=>{this.promises.get(e)===n&&i.resolve()},s=>{this.promises.get(e)===n&&i.reject(s)}),i.promise}reduce(e,r){var n;let i=(n=this.promises.get(e))!=null?n:Promise.resolve();this.set(e,()=>r(i))}async wait(){await Promise.all(this.promises.values())}};var v_e={linkers:[LM]},S_e=v_e;var F0=()=>({modules:new Map([["@yarnpkg/cli",iC],["@yarnpkg/core",Fd],["@yarnpkg/fslib",ch],["@yarnpkg/libzip",Fp],["@yarnpkg/parsers",Hp],["@yarnpkg/shell",jp],["clipanion",F$(vh)],["semver",x_e],["typanion",lu],["yup",k_e],["@yarnpkg/plugin-essentials",hL],["@yarnpkg/plugin-compat",mL],["@yarnpkg/plugin-dlx",EL],["@yarnpkg/plugin-file",xL],["@yarnpkg/plugin-git",fL],["@yarnpkg/plugin-github",PL],["@yarnpkg/plugin-http",FL],["@yarnpkg/plugin-init",ML],["@yarnpkg/plugin-link",GL],["@yarnpkg/plugin-nm",mT],["@yarnpkg/plugin-npm",yM],["@yarnpkg/plugin-npm-cli",vM],["@yarnpkg/plugin-pack",CM],["@yarnpkg/plugin-patch",NM],["@yarnpkg/plugin-pnp",oT],["@yarnpkg/plugin-pnpm",TM]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"])});i0({binaryVersion:Zr||"",pluginConfiguration:F0()});})(); -/*! - * buildToken - * Builds OAuth token prefix (helper function) - * - * @name buildToken - * @function - * @param {GitUrl} obj The parsed Git url object. - * @return {String} token prefix - */ -/*! - * fill-range - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Licensed under the MIT License. - */ -/*! - * is-extglob - * - * Copyright (c) 2014-2016, Jon Schlinkert. - * Licensed under the MIT License. - */ -/*! - * is-glob - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * is-number - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * is-windows - * - * Copyright © 2015-2018, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * to-regex-range - * - * Copyright (c) 2015-present, Jon Schlinkert. - * Released under the MIT License. - */ diff --git a/tgui/.yarn/releases/yarn-3.3.1.cjs b/tgui/.yarn/releases/yarn-3.3.1.cjs new file mode 100644 index 000000000000..53a282e439a3 --- /dev/null +++ b/tgui/.yarn/releases/yarn-3.3.1.cjs @@ -0,0 +1,823 @@ +#!/usr/bin/env node +/* eslint-disable */ +//prettier-ignore +(()=>{var dfe=Object.create;var jS=Object.defineProperty;var Cfe=Object.getOwnPropertyDescriptor;var mfe=Object.getOwnPropertyNames;var Efe=Object.getPrototypeOf,Ife=Object.prototype.hasOwnProperty;var J=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var y=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ht=(r,e)=>{for(var t in e)jS(r,t,{get:e[t],enumerable:!0})},yfe=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of mfe(e))!Ife.call(r,n)&&n!==t&&jS(r,n,{get:()=>e[n],enumerable:!(i=Cfe(e,n))||i.enumerable});return r};var ne=(r,e,t)=>(t=r!=null?dfe(Efe(r)):{},yfe(e||!r||!r.__esModule?jS(t,"default",{value:r,enumerable:!0}):t,r));var aK=y((uZe,oK)=>{oK.exports=sK;sK.sync=Gfe;var iK=J("fs");function Hfe(r,e){var t=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!t||(t=t.split(";"),t.indexOf("")!==-1))return!0;for(var i=0;i{uK.exports=lK;lK.sync=Yfe;var AK=J("fs");function lK(r,e,t){AK.stat(r,function(i,n){t(i,i?!1:cK(n,e))})}function Yfe(r,e){return cK(AK.statSync(r),e)}function cK(r,e){return r.isFile()&&jfe(r,e)}function jfe(r,e){var t=r.mode,i=r.uid,n=r.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=t&c||t&l&&n===o||t&a&&i===s||t&u&&s===0;return g}});var hK=y((hZe,fK)=>{var fZe=J("fs"),OI;process.platform==="win32"||global.TESTING_WINDOWS?OI=aK():OI=gK();fK.exports=av;av.sync=qfe;function av(r,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){av(r,e||{},function(s,o){s?n(s):i(o)})})}OI(r,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),t(i,n)})}function qfe(r,e){try{return OI.sync(r,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}});var yK=y((pZe,IK)=>{var _g=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",pK=J("path"),Jfe=_g?";":":",dK=hK(),CK=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),mK=(r,e)=>{let t=e.colon||Jfe,i=r.match(/\//)||_g&&r.match(/\\/)?[""]:[..._g?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],n=_g?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=_g?n.split(t):[""];return _g&&r.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},EK=(r,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=mK(r,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(CK(r));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=pK.join(h,r),C=!h&&/^\.[\\\/]/.test(r)?r.slice(0,2)+p:p;u(l(C,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];dK(c+p,{pathExt:s},(C,w)=>{if(!C&&w)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return t?a(0).then(c=>t(null,c),t):a(0)},Wfe=(r,e)=>{e=e||{};let{pathEnv:t,pathExt:i,pathExtExe:n}=mK(r,e),s=[];for(let o=0;o{"use strict";var wK=(r={})=>{let e=r.env||process.env;return(r.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};Av.exports=wK;Av.exports.default=wK});var vK=y((CZe,SK)=>{"use strict";var bK=J("path"),zfe=yK(),Vfe=BK();function QK(r,e){let t=r.options.env||process.env,i=process.cwd(),n=r.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(r.options.cwd)}catch{}let o;try{o=zfe.sync(r.command,{path:t[Vfe({env:t})],pathExt:e?bK.delimiter:void 0})}catch{}finally{s&&process.chdir(i)}return o&&(o=bK.resolve(n?r.options.cwd:"",o)),o}function Xfe(r){return QK(r)||QK(r,!0)}SK.exports=Xfe});var xK=y((mZe,cv)=>{"use strict";var lv=/([()\][%!^"`<>&|;, *?])/g;function _fe(r){return r=r.replace(lv,"^$1"),r}function Zfe(r,e){return r=`${r}`,r=r.replace(/(\\*)"/g,'$1$1\\"'),r=r.replace(/(\\*)$/,"$1$1"),r=`"${r}"`,r=r.replace(lv,"^$1"),e&&(r=r.replace(lv,"^$1")),r}cv.exports.command=_fe;cv.exports.argument=Zfe});var DK=y((EZe,PK)=>{"use strict";PK.exports=/^#!(.*)/});var RK=y((IZe,kK)=>{"use strict";var $fe=DK();kK.exports=(r="")=>{let e=r.match($fe);if(!e)return null;let[t,i]=e[0].replace(/#! ?/,"").split(" "),n=t.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var NK=y((yZe,FK)=>{"use strict";var uv=J("fs"),ehe=RK();function the(r){let t=Buffer.alloc(150),i;try{i=uv.openSync(r,"r"),uv.readSync(i,t,0,150,0),uv.closeSync(i)}catch{}return ehe(t.toString())}FK.exports=the});var MK=y((wZe,OK)=>{"use strict";var rhe=J("path"),TK=vK(),LK=xK(),ihe=NK(),nhe=process.platform==="win32",she=/\.(?:com|exe)$/i,ohe=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function ahe(r){r.file=TK(r);let e=r.file&&ihe(r.file);return e?(r.args.unshift(r.file),r.command=e,TK(r)):r.file}function Ahe(r){if(!nhe)return r;let e=ahe(r),t=!she.test(e);if(r.options.forceShell||t){let i=ohe.test(e);r.command=rhe.normalize(r.command),r.command=LK.command(r.command),r.args=r.args.map(s=>LK.argument(s,i));let n=[r.command].concat(r.args).join(" ");r.args=["/d","/s","/c",`"${n}"`],r.command=process.env.comspec||"cmd.exe",r.options.windowsVerbatimArguments=!0}return r}function lhe(r,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);let i={command:r,args:e,options:t,file:void 0,original:{command:r,args:e}};return t.shell?i:Ahe(i)}OK.exports=lhe});var HK=y((BZe,KK)=>{"use strict";var gv=process.platform==="win32";function fv(r,e){return Object.assign(new Error(`${e} ${r.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${r.command}`,path:r.command,spawnargs:r.args})}function che(r,e){if(!gv)return;let t=r.emit;r.emit=function(i,n){if(i==="exit"){let s=UK(n,e,"spawn");if(s)return t.call(r,"error",s)}return t.apply(r,arguments)}}function UK(r,e){return gv&&r===1&&!e.file?fv(e.original,"spawn"):null}function uhe(r,e){return gv&&r===1&&!e.file?fv(e.original,"spawnSync"):null}KK.exports={hookChildProcess:che,verifyENOENT:UK,verifyENOENTSync:uhe,notFoundError:fv}});var dv=y((bZe,Zg)=>{"use strict";var GK=J("child_process"),hv=MK(),pv=HK();function YK(r,e,t){let i=hv(r,e,t),n=GK.spawn(i.command,i.args,i.options);return pv.hookChildProcess(n,i),n}function ghe(r,e,t){let i=hv(r,e,t),n=GK.spawnSync(i.command,i.args,i.options);return n.error=n.error||pv.verifyENOENTSync(n.status,i),n}Zg.exports=YK;Zg.exports.spawn=YK;Zg.exports.sync=ghe;Zg.exports._parse=hv;Zg.exports._enoent=pv});var qK=y((QZe,jK)=>{"use strict";function fhe(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function uc(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,uc)}fhe(uc,Error);uc.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",re=de(">>",!1),me=">&",tt=de(">&",!1),Rt=">",It=de(">",!1),Ur="<<<",oi=de("<<<",!1),pi="<&",pr=de("<&",!1),di="<",ai=de("<",!1),Os=function(m){return{type:"argument",segments:[].concat(...m)}},dr=function(m){return m},Bi="$'",_n=de("$'",!1),pa="'",EA=de("'",!1),kg=function(m){return[{type:"text",text:m}]},Zn='""',IA=de('""',!1),da=function(){return{type:"text",text:""}},Jp='"',yA=de('"',!1),wA=function(m){return m},Br=function(m){return{type:"arithmetic",arithmetic:m,quoted:!0}},Vl=function(m){return{type:"shell",shell:m,quoted:!0}},Rg=function(m){return{type:"variable",...m,quoted:!0}},Eo=function(m){return{type:"text",text:m}},Fg=function(m){return{type:"arithmetic",arithmetic:m,quoted:!1}},Wp=function(m){return{type:"shell",shell:m,quoted:!1}},zp=function(m){return{type:"variable",...m,quoted:!1}},Pr=function(m){return{type:"glob",pattern:m}},oe=/^[^']/,Io=Ye(["'"],!0,!1),kn=function(m){return m.join("")},Ng=/^[^$"]/,bt=Ye(["$",'"'],!0,!1),Xl=`\\ +`,Rn=de(`\\ +`,!1),$n=function(){return""},es="\\",ut=de("\\",!1),yo=/^[\\$"`]/,at=Ye(["\\","$",'"',"`"],!1,!1),ln=function(m){return m},S="\\a",Lt=de("\\a",!1),Tg=function(){return"a"},_l="\\b",Vp=de("\\b",!1),Xp=function(){return"\b"},_p=/^[Ee]/,Zp=Ye(["E","e"],!1,!1),$p=function(){return"\x1B"},G="\\f",yt=de("\\f",!1),BA=function(){return"\f"},Wi="\\n",Zl=de("\\n",!1),We=function(){return` +`},Ca="\\r",Lg=de("\\r",!1),uI=function(){return"\r"},ed="\\t",gI=de("\\t",!1),ar=function(){return" "},Fn="\\v",$l=de("\\v",!1),td=function(){return"\v"},Ms=/^[\\'"?]/,ma=Ye(["\\","'",'"',"?"],!1,!1),cn=function(m){return String.fromCharCode(parseInt(m,16))},ke="\\x",Og=de("\\x",!1),ec="\\u",Us=de("\\u",!1),tc="\\U",bA=de("\\U",!1),Mg=function(m){return String.fromCodePoint(parseInt(m,16))},Ug=/^[0-7]/,Ea=Ye([["0","7"]],!1,!1),Ia=/^[0-9a-fA-f]/,$e=Ye([["0","9"],["a","f"],["A","f"]],!1,!1),wo=rt(),QA="-",rc=de("-",!1),Ks="+",ic=de("+",!1),fI=".",rd=de(".",!1),Kg=function(m,Q,F){return{type:"number",value:(m==="-"?-1:1)*parseFloat(Q.join("")+"."+F.join(""))}},id=function(m,Q){return{type:"number",value:(m==="-"?-1:1)*parseInt(Q.join(""))}},hI=function(m){return{type:"variable",...m}},nc=function(m){return{type:"variable",name:m}},pI=function(m){return m},Hg="*",SA=de("*",!1),Nr="/",dI=de("/",!1),Hs=function(m,Q,F){return{type:Q==="*"?"multiplication":"division",right:F}},Gs=function(m,Q){return Q.reduce((F,K)=>({left:F,...K}),m)},Gg=function(m,Q,F){return{type:Q==="+"?"addition":"subtraction",right:F}},vA="$((",R=de("$((",!1),q="))",pe=de("))",!1),Ne=function(m){return m},xe="$(",qe=de("$(",!1),dt=function(m){return m},Ft="${",Nn=de("${",!1),vS=":-",AU=de(":-",!1),lU=function(m,Q){return{name:m,defaultValue:Q}},xS=":-}",cU=de(":-}",!1),uU=function(m){return{name:m,defaultValue:[]}},PS=":+",gU=de(":+",!1),fU=function(m,Q){return{name:m,alternativeValue:Q}},DS=":+}",hU=de(":+}",!1),pU=function(m){return{name:m,alternativeValue:[]}},kS=function(m){return{name:m}},dU="$",CU=de("$",!1),mU=function(m){return e.isGlobPattern(m)},EU=function(m){return m},RS=/^[a-zA-Z0-9_]/,FS=Ye([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),NS=function(){return O()},TS=/^[$@*?#a-zA-Z0-9_\-]/,LS=Ye(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),IU=/^[(){}<>$|&; \t"']/,Yg=Ye(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),OS=/^[<>&; \t"']/,MS=Ye(["<",">","&",";"," "," ",'"',"'"],!1,!1),CI=/^[ \t]/,mI=Ye([" "," "],!1,!1),b=0,Fe=0,xA=[{line:1,column:1}],d=0,E=[],I=0,k;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function O(){return r.substring(Fe,b)}function X(){return Et(Fe,b)}function te(m,Q){throw Q=Q!==void 0?Q:Et(Fe,b),Fi([At(m)],r.substring(Fe,b),Q)}function ye(m,Q){throw Q=Q!==void 0?Q:Et(Fe,b),Tn(m,Q)}function de(m,Q){return{type:"literal",text:m,ignoreCase:Q}}function Ye(m,Q,F){return{type:"class",parts:m,inverted:Q,ignoreCase:F}}function rt(){return{type:"any"}}function wt(){return{type:"end"}}function At(m){return{type:"other",description:m}}function et(m){var Q=xA[m],F;if(Q)return Q;for(F=m-1;!xA[F];)F--;for(Q=xA[F],Q={line:Q.line,column:Q.column};Fd&&(d=b,E=[]),E.push(m))}function Tn(m,Q){return new uc(m,null,null,Q)}function Fi(m,Q,F){return new uc(uc.buildMessage(m,Q),m,Q,F)}function PA(){var m,Q;return m=b,Q=Kr(),Q===t&&(Q=null),Q!==t&&(Fe=m,Q=s(Q)),m=Q,m}function Kr(){var m,Q,F,K,ce;if(m=b,Q=Hr(),Q!==t){for(F=[],K=Me();K!==t;)F.push(K),K=Me();F!==t?(K=ya(),K!==t?(ce=ts(),ce===t&&(ce=null),ce!==t?(Fe=m,Q=o(Q,K,ce),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;if(m===t)if(m=b,Q=Hr(),Q!==t){for(F=[],K=Me();K!==t;)F.push(K),K=Me();F!==t?(K=ya(),K===t&&(K=null),K!==t?(Fe=m,Q=a(Q,K),m=Q):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;return m}function ts(){var m,Q,F,K,ce;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t)if(F=Kr(),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();K!==t?(Fe=m,Q=l(F),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t;return m}function ya(){var m;return r.charCodeAt(b)===59?(m=c,b++):(m=t,I===0&&Be(u)),m===t&&(r.charCodeAt(b)===38?(m=g,b++):(m=t,I===0&&Be(f))),m}function Hr(){var m,Q,F;return m=b,Q=yU(),Q!==t?(F=$ge(),F===t&&(F=null),F!==t?(Fe=m,Q=h(Q,F),m=Q):(b=m,m=t)):(b=m,m=t),m}function $ge(){var m,Q,F,K,ce,Qe,ft;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t)if(F=efe(),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();if(K!==t)if(ce=Hr(),ce!==t){for(Qe=[],ft=Me();ft!==t;)Qe.push(ft),ft=Me();Qe!==t?(Fe=m,Q=p(F,ce),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t;return m}function efe(){var m;return r.substr(b,2)===C?(m=C,b+=2):(m=t,I===0&&Be(w)),m===t&&(r.substr(b,2)===B?(m=B,b+=2):(m=t,I===0&&Be(v))),m}function yU(){var m,Q,F;return m=b,Q=ife(),Q!==t?(F=tfe(),F===t&&(F=null),F!==t?(Fe=m,Q=D(Q,F),m=Q):(b=m,m=t)):(b=m,m=t),m}function tfe(){var m,Q,F,K,ce,Qe,ft;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t)if(F=rfe(),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();if(K!==t)if(ce=yU(),ce!==t){for(Qe=[],ft=Me();ft!==t;)Qe.push(ft),ft=Me();Qe!==t?(Fe=m,Q=T(F,ce),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t;return m}function rfe(){var m;return r.substr(b,2)===H?(m=H,b+=2):(m=t,I===0&&Be(j)),m===t&&(r.charCodeAt(b)===124?(m=$,b++):(m=t,I===0&&Be(V))),m}function EI(){var m,Q,F,K,ce,Qe;if(m=b,Q=FU(),Q!==t)if(r.charCodeAt(b)===61?(F=W,b++):(F=t,I===0&&Be(Z)),F!==t)if(K=bU(),K!==t){for(ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();ce!==t?(Fe=m,Q=A(Q,K),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t;else b=m,m=t;if(m===t)if(m=b,Q=FU(),Q!==t)if(r.charCodeAt(b)===61?(F=W,b++):(F=t,I===0&&Be(Z)),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();K!==t?(Fe=m,Q=ae(Q),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t;return m}function ife(){var m,Q,F,K,ce,Qe,ft,Bt,Vr,Ci,rs;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t)if(r.charCodeAt(b)===40?(F=ge,b++):(F=t,I===0&&Be(_)),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();if(K!==t)if(ce=Kr(),ce!==t){for(Qe=[],ft=Me();ft!==t;)Qe.push(ft),ft=Me();if(Qe!==t)if(r.charCodeAt(b)===41?(ft=L,b++):(ft=t,I===0&&Be(N)),ft!==t){for(Bt=[],Vr=Me();Vr!==t;)Bt.push(Vr),Vr=Me();if(Bt!==t){for(Vr=[],Ci=nd();Ci!==t;)Vr.push(Ci),Ci=nd();if(Vr!==t){for(Ci=[],rs=Me();rs!==t;)Ci.push(rs),rs=Me();Ci!==t?(Fe=m,Q=ue(ce,Vr),m=Q):(b=m,m=t)}else b=m,m=t}else b=m,m=t}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t;if(m===t){for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t)if(r.charCodeAt(b)===123?(F=we,b++):(F=t,I===0&&Be(Te)),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();if(K!==t)if(ce=Kr(),ce!==t){for(Qe=[],ft=Me();ft!==t;)Qe.push(ft),ft=Me();if(Qe!==t)if(r.charCodeAt(b)===125?(ft=Pe,b++):(ft=t,I===0&&Be(Le)),ft!==t){for(Bt=[],Vr=Me();Vr!==t;)Bt.push(Vr),Vr=Me();if(Bt!==t){for(Vr=[],Ci=nd();Ci!==t;)Vr.push(Ci),Ci=nd();if(Vr!==t){for(Ci=[],rs=Me();rs!==t;)Ci.push(rs),rs=Me();Ci!==t?(Fe=m,Q=se(ce,Vr),m=Q):(b=m,m=t)}else b=m,m=t}else b=m,m=t}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t;if(m===t){for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t){for(F=[],K=EI();K!==t;)F.push(K),K=EI();if(F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();if(K!==t){if(ce=[],Qe=BU(),Qe!==t)for(;Qe!==t;)ce.push(Qe),Qe=BU();else ce=t;if(ce!==t){for(Qe=[],ft=Me();ft!==t;)Qe.push(ft),ft=Me();Qe!==t?(Fe=m,Q=Ae(F,ce),m=Q):(b=m,m=t)}else b=m,m=t}else b=m,m=t}else b=m,m=t}else b=m,m=t;if(m===t){for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t){if(F=[],K=EI(),K!==t)for(;K!==t;)F.push(K),K=EI();else F=t;if(F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();K!==t?(Fe=m,Q=be(F),m=Q):(b=m,m=t)}else b=m,m=t}else b=m,m=t}}}return m}function wU(){var m,Q,F,K,ce;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t){if(F=[],K=II(),K!==t)for(;K!==t;)F.push(K),K=II();else F=t;if(F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();K!==t?(Fe=m,Q=fe(F),m=Q):(b=m,m=t)}else b=m,m=t}else b=m,m=t;return m}function BU(){var m,Q,F;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t?(F=nd(),F!==t?(Fe=m,Q=le(F),m=Q):(b=m,m=t)):(b=m,m=t),m===t){for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();Q!==t?(F=II(),F!==t?(Fe=m,Q=le(F),m=Q):(b=m,m=t)):(b=m,m=t)}return m}function nd(){var m,Q,F,K,ce;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();return Q!==t?(Ge.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(ie)),F===t&&(F=null),F!==t?(K=nfe(),K!==t?(ce=II(),ce!==t?(Fe=m,Q=Y(F,K,ce),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m}function nfe(){var m;return r.substr(b,2)===he?(m=he,b+=2):(m=t,I===0&&Be(re)),m===t&&(r.substr(b,2)===me?(m=me,b+=2):(m=t,I===0&&Be(tt)),m===t&&(r.charCodeAt(b)===62?(m=Rt,b++):(m=t,I===0&&Be(It)),m===t&&(r.substr(b,3)===Ur?(m=Ur,b+=3):(m=t,I===0&&Be(oi)),m===t&&(r.substr(b,2)===pi?(m=pi,b+=2):(m=t,I===0&&Be(pr)),m===t&&(r.charCodeAt(b)===60?(m=di,b++):(m=t,I===0&&Be(ai))))))),m}function II(){var m,Q,F;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();return Q!==t?(F=bU(),F!==t?(Fe=m,Q=le(F),m=Q):(b=m,m=t)):(b=m,m=t),m}function bU(){var m,Q,F;if(m=b,Q=[],F=QU(),F!==t)for(;F!==t;)Q.push(F),F=QU();else Q=t;return Q!==t&&(Fe=m,Q=Os(Q)),m=Q,m}function QU(){var m,Q;return m=b,Q=sfe(),Q!==t&&(Fe=m,Q=dr(Q)),m=Q,m===t&&(m=b,Q=ofe(),Q!==t&&(Fe=m,Q=dr(Q)),m=Q,m===t&&(m=b,Q=afe(),Q!==t&&(Fe=m,Q=dr(Q)),m=Q,m===t&&(m=b,Q=Afe(),Q!==t&&(Fe=m,Q=dr(Q)),m=Q))),m}function sfe(){var m,Q,F,K;return m=b,r.substr(b,2)===Bi?(Q=Bi,b+=2):(Q=t,I===0&&Be(_n)),Q!==t?(F=ufe(),F!==t?(r.charCodeAt(b)===39?(K=pa,b++):(K=t,I===0&&Be(EA)),K!==t?(Fe=m,Q=kg(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m}function ofe(){var m,Q,F,K;return m=b,r.charCodeAt(b)===39?(Q=pa,b++):(Q=t,I===0&&Be(EA)),Q!==t?(F=lfe(),F!==t?(r.charCodeAt(b)===39?(K=pa,b++):(K=t,I===0&&Be(EA)),K!==t?(Fe=m,Q=kg(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m}function afe(){var m,Q,F,K;if(m=b,r.substr(b,2)===Zn?(Q=Zn,b+=2):(Q=t,I===0&&Be(IA)),Q!==t&&(Fe=m,Q=da()),m=Q,m===t)if(m=b,r.charCodeAt(b)===34?(Q=Jp,b++):(Q=t,I===0&&Be(yA)),Q!==t){for(F=[],K=SU();K!==t;)F.push(K),K=SU();F!==t?(r.charCodeAt(b)===34?(K=Jp,b++):(K=t,I===0&&Be(yA)),K!==t?(Fe=m,Q=wA(F),m=Q):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;return m}function Afe(){var m,Q,F;if(m=b,Q=[],F=vU(),F!==t)for(;F!==t;)Q.push(F),F=vU();else Q=t;return Q!==t&&(Fe=m,Q=wA(Q)),m=Q,m}function SU(){var m,Q;return m=b,Q=kU(),Q!==t&&(Fe=m,Q=Br(Q)),m=Q,m===t&&(m=b,Q=RU(),Q!==t&&(Fe=m,Q=Vl(Q)),m=Q,m===t&&(m=b,Q=GS(),Q!==t&&(Fe=m,Q=Rg(Q)),m=Q,m===t&&(m=b,Q=cfe(),Q!==t&&(Fe=m,Q=Eo(Q)),m=Q))),m}function vU(){var m,Q;return m=b,Q=kU(),Q!==t&&(Fe=m,Q=Fg(Q)),m=Q,m===t&&(m=b,Q=RU(),Q!==t&&(Fe=m,Q=Wp(Q)),m=Q,m===t&&(m=b,Q=GS(),Q!==t&&(Fe=m,Q=zp(Q)),m=Q,m===t&&(m=b,Q=hfe(),Q!==t&&(Fe=m,Q=Pr(Q)),m=Q,m===t&&(m=b,Q=ffe(),Q!==t&&(Fe=m,Q=Eo(Q)),m=Q)))),m}function lfe(){var m,Q,F;for(m=b,Q=[],oe.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(Io));F!==t;)Q.push(F),oe.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(Io));return Q!==t&&(Fe=m,Q=kn(Q)),m=Q,m}function cfe(){var m,Q,F;if(m=b,Q=[],F=xU(),F===t&&(Ng.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(bt))),F!==t)for(;F!==t;)Q.push(F),F=xU(),F===t&&(Ng.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(bt)));else Q=t;return Q!==t&&(Fe=m,Q=kn(Q)),m=Q,m}function xU(){var m,Q,F;return m=b,r.substr(b,2)===Xl?(Q=Xl,b+=2):(Q=t,I===0&&Be(Rn)),Q!==t&&(Fe=m,Q=$n()),m=Q,m===t&&(m=b,r.charCodeAt(b)===92?(Q=es,b++):(Q=t,I===0&&Be(ut)),Q!==t?(yo.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(at)),F!==t?(Fe=m,Q=ln(F),m=Q):(b=m,m=t)):(b=m,m=t)),m}function ufe(){var m,Q,F;for(m=b,Q=[],F=PU(),F===t&&(oe.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(Io)));F!==t;)Q.push(F),F=PU(),F===t&&(oe.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(Io)));return Q!==t&&(Fe=m,Q=kn(Q)),m=Q,m}function PU(){var m,Q,F;return m=b,r.substr(b,2)===S?(Q=S,b+=2):(Q=t,I===0&&Be(Lt)),Q!==t&&(Fe=m,Q=Tg()),m=Q,m===t&&(m=b,r.substr(b,2)===_l?(Q=_l,b+=2):(Q=t,I===0&&Be(Vp)),Q!==t&&(Fe=m,Q=Xp()),m=Q,m===t&&(m=b,r.charCodeAt(b)===92?(Q=es,b++):(Q=t,I===0&&Be(ut)),Q!==t?(_p.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(Zp)),F!==t?(Fe=m,Q=$p(),m=Q):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===G?(Q=G,b+=2):(Q=t,I===0&&Be(yt)),Q!==t&&(Fe=m,Q=BA()),m=Q,m===t&&(m=b,r.substr(b,2)===Wi?(Q=Wi,b+=2):(Q=t,I===0&&Be(Zl)),Q!==t&&(Fe=m,Q=We()),m=Q,m===t&&(m=b,r.substr(b,2)===Ca?(Q=Ca,b+=2):(Q=t,I===0&&Be(Lg)),Q!==t&&(Fe=m,Q=uI()),m=Q,m===t&&(m=b,r.substr(b,2)===ed?(Q=ed,b+=2):(Q=t,I===0&&Be(gI)),Q!==t&&(Fe=m,Q=ar()),m=Q,m===t&&(m=b,r.substr(b,2)===Fn?(Q=Fn,b+=2):(Q=t,I===0&&Be($l)),Q!==t&&(Fe=m,Q=td()),m=Q,m===t&&(m=b,r.charCodeAt(b)===92?(Q=es,b++):(Q=t,I===0&&Be(ut)),Q!==t?(Ms.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(ma)),F!==t?(Fe=m,Q=ln(F),m=Q):(b=m,m=t)):(b=m,m=t),m===t&&(m=gfe()))))))))),m}function gfe(){var m,Q,F,K,ce,Qe,ft,Bt,Vr,Ci,rs,YS;return m=b,r.charCodeAt(b)===92?(Q=es,b++):(Q=t,I===0&&Be(ut)),Q!==t?(F=US(),F!==t?(Fe=m,Q=cn(F),m=Q):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===ke?(Q=ke,b+=2):(Q=t,I===0&&Be(Og)),Q!==t?(F=b,K=b,ce=US(),ce!==t?(Qe=Ln(),Qe!==t?(ce=[ce,Qe],K=ce):(b=K,K=t)):(b=K,K=t),K===t&&(K=US()),K!==t?F=r.substring(F,b):F=K,F!==t?(Fe=m,Q=cn(F),m=Q):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===ec?(Q=ec,b+=2):(Q=t,I===0&&Be(Us)),Q!==t?(F=b,K=b,ce=Ln(),ce!==t?(Qe=Ln(),Qe!==t?(ft=Ln(),ft!==t?(Bt=Ln(),Bt!==t?(ce=[ce,Qe,ft,Bt],K=ce):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t),K!==t?F=r.substring(F,b):F=K,F!==t?(Fe=m,Q=cn(F),m=Q):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===tc?(Q=tc,b+=2):(Q=t,I===0&&Be(bA)),Q!==t?(F=b,K=b,ce=Ln(),ce!==t?(Qe=Ln(),Qe!==t?(ft=Ln(),ft!==t?(Bt=Ln(),Bt!==t?(Vr=Ln(),Vr!==t?(Ci=Ln(),Ci!==t?(rs=Ln(),rs!==t?(YS=Ln(),YS!==t?(ce=[ce,Qe,ft,Bt,Vr,Ci,rs,YS],K=ce):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t),K!==t?F=r.substring(F,b):F=K,F!==t?(Fe=m,Q=Mg(F),m=Q):(b=m,m=t)):(b=m,m=t)))),m}function US(){var m;return Ug.test(r.charAt(b))?(m=r.charAt(b),b++):(m=t,I===0&&Be(Ea)),m}function Ln(){var m;return Ia.test(r.charAt(b))?(m=r.charAt(b),b++):(m=t,I===0&&Be($e)),m}function ffe(){var m,Q,F,K,ce;if(m=b,Q=[],F=b,r.charCodeAt(b)===92?(K=es,b++):(K=t,I===0&&Be(ut)),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t),F===t&&(F=b,K=b,I++,ce=NU(),I--,ce===t?K=void 0:(b=K,K=t),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t)),F!==t)for(;F!==t;)Q.push(F),F=b,r.charCodeAt(b)===92?(K=es,b++):(K=t,I===0&&Be(ut)),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t),F===t&&(F=b,K=b,I++,ce=NU(),I--,ce===t?K=void 0:(b=K,K=t),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t));else Q=t;return Q!==t&&(Fe=m,Q=kn(Q)),m=Q,m}function KS(){var m,Q,F,K,ce,Qe;if(m=b,r.charCodeAt(b)===45?(Q=QA,b++):(Q=t,I===0&&Be(rc)),Q===t&&(r.charCodeAt(b)===43?(Q=Ks,b++):(Q=t,I===0&&Be(ic))),Q===t&&(Q=null),Q!==t){if(F=[],Ge.test(r.charAt(b))?(K=r.charAt(b),b++):(K=t,I===0&&Be(ie)),K!==t)for(;K!==t;)F.push(K),Ge.test(r.charAt(b))?(K=r.charAt(b),b++):(K=t,I===0&&Be(ie));else F=t;if(F!==t)if(r.charCodeAt(b)===46?(K=fI,b++):(K=t,I===0&&Be(rd)),K!==t){if(ce=[],Ge.test(r.charAt(b))?(Qe=r.charAt(b),b++):(Qe=t,I===0&&Be(ie)),Qe!==t)for(;Qe!==t;)ce.push(Qe),Ge.test(r.charAt(b))?(Qe=r.charAt(b),b++):(Qe=t,I===0&&Be(ie));else ce=t;ce!==t?(Fe=m,Q=Kg(Q,F,ce),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t;if(m===t){if(m=b,r.charCodeAt(b)===45?(Q=QA,b++):(Q=t,I===0&&Be(rc)),Q===t&&(r.charCodeAt(b)===43?(Q=Ks,b++):(Q=t,I===0&&Be(ic))),Q===t&&(Q=null),Q!==t){if(F=[],Ge.test(r.charAt(b))?(K=r.charAt(b),b++):(K=t,I===0&&Be(ie)),K!==t)for(;K!==t;)F.push(K),Ge.test(r.charAt(b))?(K=r.charAt(b),b++):(K=t,I===0&&Be(ie));else F=t;F!==t?(Fe=m,Q=id(Q,F),m=Q):(b=m,m=t)}else b=m,m=t;if(m===t&&(m=b,Q=GS(),Q!==t&&(Fe=m,Q=hI(Q)),m=Q,m===t&&(m=b,Q=sc(),Q!==t&&(Fe=m,Q=nc(Q)),m=Q,m===t)))if(m=b,r.charCodeAt(b)===40?(Q=ge,b++):(Q=t,I===0&&Be(_)),Q!==t){for(F=[],K=Me();K!==t;)F.push(K),K=Me();if(F!==t)if(K=DU(),K!==t){for(ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();ce!==t?(r.charCodeAt(b)===41?(Qe=L,b++):(Qe=t,I===0&&Be(N)),Qe!==t?(Fe=m,Q=pI(K),m=Q):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t}return m}function HS(){var m,Q,F,K,ce,Qe,ft,Bt;if(m=b,Q=KS(),Q!==t){for(F=[],K=b,ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();if(ce!==t)if(r.charCodeAt(b)===42?(Qe=Hg,b++):(Qe=t,I===0&&Be(SA)),Qe===t&&(r.charCodeAt(b)===47?(Qe=Nr,b++):(Qe=t,I===0&&Be(dI))),Qe!==t){for(ft=[],Bt=Me();Bt!==t;)ft.push(Bt),Bt=Me();ft!==t?(Bt=KS(),Bt!==t?(Fe=K,ce=Hs(Q,Qe,Bt),K=ce):(b=K,K=t)):(b=K,K=t)}else b=K,K=t;else b=K,K=t;for(;K!==t;){for(F.push(K),K=b,ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();if(ce!==t)if(r.charCodeAt(b)===42?(Qe=Hg,b++):(Qe=t,I===0&&Be(SA)),Qe===t&&(r.charCodeAt(b)===47?(Qe=Nr,b++):(Qe=t,I===0&&Be(dI))),Qe!==t){for(ft=[],Bt=Me();Bt!==t;)ft.push(Bt),Bt=Me();ft!==t?(Bt=KS(),Bt!==t?(Fe=K,ce=Hs(Q,Qe,Bt),K=ce):(b=K,K=t)):(b=K,K=t)}else b=K,K=t;else b=K,K=t}F!==t?(Fe=m,Q=Gs(Q,F),m=Q):(b=m,m=t)}else b=m,m=t;return m}function DU(){var m,Q,F,K,ce,Qe,ft,Bt;if(m=b,Q=HS(),Q!==t){for(F=[],K=b,ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();if(ce!==t)if(r.charCodeAt(b)===43?(Qe=Ks,b++):(Qe=t,I===0&&Be(ic)),Qe===t&&(r.charCodeAt(b)===45?(Qe=QA,b++):(Qe=t,I===0&&Be(rc))),Qe!==t){for(ft=[],Bt=Me();Bt!==t;)ft.push(Bt),Bt=Me();ft!==t?(Bt=HS(),Bt!==t?(Fe=K,ce=Gg(Q,Qe,Bt),K=ce):(b=K,K=t)):(b=K,K=t)}else b=K,K=t;else b=K,K=t;for(;K!==t;){for(F.push(K),K=b,ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();if(ce!==t)if(r.charCodeAt(b)===43?(Qe=Ks,b++):(Qe=t,I===0&&Be(ic)),Qe===t&&(r.charCodeAt(b)===45?(Qe=QA,b++):(Qe=t,I===0&&Be(rc))),Qe!==t){for(ft=[],Bt=Me();Bt!==t;)ft.push(Bt),Bt=Me();ft!==t?(Bt=HS(),Bt!==t?(Fe=K,ce=Gg(Q,Qe,Bt),K=ce):(b=K,K=t)):(b=K,K=t)}else b=K,K=t;else b=K,K=t}F!==t?(Fe=m,Q=Gs(Q,F),m=Q):(b=m,m=t)}else b=m,m=t;return m}function kU(){var m,Q,F,K,ce,Qe;if(m=b,r.substr(b,3)===vA?(Q=vA,b+=3):(Q=t,I===0&&Be(R)),Q!==t){for(F=[],K=Me();K!==t;)F.push(K),K=Me();if(F!==t)if(K=DU(),K!==t){for(ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();ce!==t?(r.substr(b,2)===q?(Qe=q,b+=2):(Qe=t,I===0&&Be(pe)),Qe!==t?(Fe=m,Q=Ne(K),m=Q):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t;return m}function RU(){var m,Q,F,K;return m=b,r.substr(b,2)===xe?(Q=xe,b+=2):(Q=t,I===0&&Be(qe)),Q!==t?(F=Kr(),F!==t?(r.charCodeAt(b)===41?(K=L,b++):(K=t,I===0&&Be(N)),K!==t?(Fe=m,Q=dt(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m}function GS(){var m,Q,F,K,ce,Qe;return m=b,r.substr(b,2)===Ft?(Q=Ft,b+=2):(Q=t,I===0&&Be(Nn)),Q!==t?(F=sc(),F!==t?(r.substr(b,2)===vS?(K=vS,b+=2):(K=t,I===0&&Be(AU)),K!==t?(ce=wU(),ce!==t?(r.charCodeAt(b)===125?(Qe=Pe,b++):(Qe=t,I===0&&Be(Le)),Qe!==t?(Fe=m,Q=lU(F,ce),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===Ft?(Q=Ft,b+=2):(Q=t,I===0&&Be(Nn)),Q!==t?(F=sc(),F!==t?(r.substr(b,3)===xS?(K=xS,b+=3):(K=t,I===0&&Be(cU)),K!==t?(Fe=m,Q=uU(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===Ft?(Q=Ft,b+=2):(Q=t,I===0&&Be(Nn)),Q!==t?(F=sc(),F!==t?(r.substr(b,2)===PS?(K=PS,b+=2):(K=t,I===0&&Be(gU)),K!==t?(ce=wU(),ce!==t?(r.charCodeAt(b)===125?(Qe=Pe,b++):(Qe=t,I===0&&Be(Le)),Qe!==t?(Fe=m,Q=fU(F,ce),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===Ft?(Q=Ft,b+=2):(Q=t,I===0&&Be(Nn)),Q!==t?(F=sc(),F!==t?(r.substr(b,3)===DS?(K=DS,b+=3):(K=t,I===0&&Be(hU)),K!==t?(Fe=m,Q=pU(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===Ft?(Q=Ft,b+=2):(Q=t,I===0&&Be(Nn)),Q!==t?(F=sc(),F!==t?(r.charCodeAt(b)===125?(K=Pe,b++):(K=t,I===0&&Be(Le)),K!==t?(Fe=m,Q=kS(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.charCodeAt(b)===36?(Q=dU,b++):(Q=t,I===0&&Be(CU)),Q!==t?(F=sc(),F!==t?(Fe=m,Q=kS(F),m=Q):(b=m,m=t)):(b=m,m=t)))))),m}function hfe(){var m,Q,F;return m=b,Q=pfe(),Q!==t?(Fe=b,F=mU(Q),F?F=void 0:F=t,F!==t?(Fe=m,Q=EU(Q),m=Q):(b=m,m=t)):(b=m,m=t),m}function pfe(){var m,Q,F,K,ce;if(m=b,Q=[],F=b,K=b,I++,ce=TU(),I--,ce===t?K=void 0:(b=K,K=t),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t),F!==t)for(;F!==t;)Q.push(F),F=b,K=b,I++,ce=TU(),I--,ce===t?K=void 0:(b=K,K=t),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t);else Q=t;return Q!==t&&(Fe=m,Q=kn(Q)),m=Q,m}function FU(){var m,Q,F;if(m=b,Q=[],RS.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(FS)),F!==t)for(;F!==t;)Q.push(F),RS.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(FS));else Q=t;return Q!==t&&(Fe=m,Q=NS()),m=Q,m}function sc(){var m,Q,F;if(m=b,Q=[],TS.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(LS)),F!==t)for(;F!==t;)Q.push(F),TS.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(LS));else Q=t;return Q!==t&&(Fe=m,Q=NS()),m=Q,m}function NU(){var m;return IU.test(r.charAt(b))?(m=r.charAt(b),b++):(m=t,I===0&&Be(Yg)),m}function TU(){var m;return OS.test(r.charAt(b))?(m=r.charAt(b),b++):(m=t,I===0&&Be(MS)),m}function Me(){var m,Q;if(m=[],CI.test(r.charAt(b))?(Q=r.charAt(b),b++):(Q=t,I===0&&Be(mI)),Q!==t)for(;Q!==t;)m.push(Q),CI.test(r.charAt(b))?(Q=r.charAt(b),b++):(Q=t,I===0&&Be(mI));else m=t;return m}if(k=n(),k!==t&&b===r.length)return k;throw k!==t&&b{"use strict";function phe(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function fc(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,fc)}phe(fc,Error);fc.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=v,j=[]),j.push(ie))}function Le(ie,Y){return new fc(ie,null,null,Y)}function se(ie,Y,he){return new fc(fc.buildMessage(ie,Y),ie,Y,he)}function Ae(){var ie,Y,he,re;return ie=v,Y=be(),Y!==t?(r.charCodeAt(v)===47?(he=s,v++):(he=t,$===0&&Pe(o)),he!==t?(re=be(),re!==t?(D=ie,Y=a(Y,re),ie=Y):(v=ie,ie=t)):(v=ie,ie=t)):(v=ie,ie=t),ie===t&&(ie=v,Y=be(),Y!==t&&(D=ie,Y=l(Y)),ie=Y),ie}function be(){var ie,Y,he,re;return ie=v,Y=fe(),Y!==t?(r.charCodeAt(v)===64?(he=c,v++):(he=t,$===0&&Pe(u)),he!==t?(re=Ge(),re!==t?(D=ie,Y=g(Y,re),ie=Y):(v=ie,ie=t)):(v=ie,ie=t)):(v=ie,ie=t),ie===t&&(ie=v,Y=fe(),Y!==t&&(D=ie,Y=f(Y)),ie=Y),ie}function fe(){var ie,Y,he,re,me;return ie=v,r.charCodeAt(v)===64?(Y=c,v++):(Y=t,$===0&&Pe(u)),Y!==t?(he=le(),he!==t?(r.charCodeAt(v)===47?(re=s,v++):(re=t,$===0&&Pe(o)),re!==t?(me=le(),me!==t?(D=ie,Y=h(),ie=Y):(v=ie,ie=t)):(v=ie,ie=t)):(v=ie,ie=t)):(v=ie,ie=t),ie===t&&(ie=v,Y=le(),Y!==t&&(D=ie,Y=h()),ie=Y),ie}function le(){var ie,Y,he;if(ie=v,Y=[],p.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Pe(C)),he!==t)for(;he!==t;)Y.push(he),p.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Pe(C));else Y=t;return Y!==t&&(D=ie,Y=h()),ie=Y,ie}function Ge(){var ie,Y,he;if(ie=v,Y=[],w.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Pe(B)),he!==t)for(;he!==t;)Y.push(he),w.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Pe(B));else Y=t;return Y!==t&&(D=ie,Y=h()),ie=Y,ie}if(V=n(),V!==t&&v===r.length)return V;throw V!==t&&v{"use strict";function XK(r){return typeof r>"u"||r===null}function Che(r){return typeof r=="object"&&r!==null}function mhe(r){return Array.isArray(r)?r:XK(r)?[]:[r]}function Ehe(r,e){var t,i,n,s;if(e)for(s=Object.keys(e),t=0,i=s.length;t{"use strict";function md(r,e){Error.call(this),this.name="YAMLException",this.reason=r,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}md.prototype=Object.create(Error.prototype);md.prototype.constructor=md;md.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t};_K.exports=md});var e2=y((YZe,$K)=>{"use strict";var ZK=pc();function wv(r,e,t,i,n){this.name=r,this.buffer=e,this.position=t,this.line=i,this.column=n}wv.prototype.getSnippet=function(e,t){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,t=t||75,i="",n=this.position;n>0&&`\0\r +\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>t/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;ot/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),ZK.repeat(" ",e)+i+a+s+` +`+ZK.repeat(" ",e+this.position-n+i.length)+"^"};wv.prototype.toString=function(e){var t,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),t&&(i+=`: +`+t)),i};$K.exports=wv});var Ai=y((jZe,r2)=>{"use strict";var t2=tf(),whe=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Bhe=["scalar","sequence","mapping"];function bhe(r){var e={};return r!==null&&Object.keys(r).forEach(function(t){r[t].forEach(function(i){e[String(i)]=t})}),e}function Qhe(r,e){if(e=e||{},Object.keys(e).forEach(function(t){if(whe.indexOf(t)===-1)throw new t2('Unknown option "'+t+'" is met in definition of "'+r+'" YAML type.')}),this.tag=r,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=bhe(e.styleAliases||null),Bhe.indexOf(this.kind)===-1)throw new t2('Unknown kind "'+this.kind+'" is specified for "'+r+'" YAML type.')}r2.exports=Qhe});var dc=y((qZe,n2)=>{"use strict";var i2=pc(),jI=tf(),She=Ai();function Bv(r,e,t){var i=[];return r.include.forEach(function(n){t=Bv(n,e,t)}),r[e].forEach(function(n){t.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),t.push(n)}),t.filter(function(n,s){return i.indexOf(s)===-1})}function vhe(){var r={scalar:{},sequence:{},mapping:{},fallback:{}},e,t;function i(n){r[n.kind][n.tag]=r.fallback[n.tag]=n}for(e=0,t=arguments.length;e{"use strict";var xhe=Ai();s2.exports=new xhe("tag:yaml.org,2002:str",{kind:"scalar",construct:function(r){return r!==null?r:""}})});var A2=y((WZe,a2)=>{"use strict";var Phe=Ai();a2.exports=new Phe("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(r){return r!==null?r:[]}})});var c2=y((zZe,l2)=>{"use strict";var Dhe=Ai();l2.exports=new Dhe("tag:yaml.org,2002:map",{kind:"mapping",construct:function(r){return r!==null?r:{}}})});var qI=y((VZe,u2)=>{"use strict";var khe=dc();u2.exports=new khe({explicit:[o2(),A2(),c2()]})});var f2=y((XZe,g2)=>{"use strict";var Rhe=Ai();function Fhe(r){if(r===null)return!0;var e=r.length;return e===1&&r==="~"||e===4&&(r==="null"||r==="Null"||r==="NULL")}function Nhe(){return null}function The(r){return r===null}g2.exports=new Rhe("tag:yaml.org,2002:null",{kind:"scalar",resolve:Fhe,construct:Nhe,predicate:The,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var p2=y((_Ze,h2)=>{"use strict";var Lhe=Ai();function Ohe(r){if(r===null)return!1;var e=r.length;return e===4&&(r==="true"||r==="True"||r==="TRUE")||e===5&&(r==="false"||r==="False"||r==="FALSE")}function Mhe(r){return r==="true"||r==="True"||r==="TRUE"}function Uhe(r){return Object.prototype.toString.call(r)==="[object Boolean]"}h2.exports=new Lhe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Ohe,construct:Mhe,predicate:Uhe,represent:{lowercase:function(r){return r?"true":"false"},uppercase:function(r){return r?"TRUE":"FALSE"},camelcase:function(r){return r?"True":"False"}},defaultStyle:"lowercase"})});var C2=y((ZZe,d2)=>{"use strict";var Khe=pc(),Hhe=Ai();function Ghe(r){return 48<=r&&r<=57||65<=r&&r<=70||97<=r&&r<=102}function Yhe(r){return 48<=r&&r<=55}function jhe(r){return 48<=r&&r<=57}function qhe(r){if(r===null)return!1;var e=r.length,t=0,i=!1,n;if(!e)return!1;if(n=r[t],(n==="-"||n==="+")&&(n=r[++t]),n==="0"){if(t+1===e)return!0;if(n=r[++t],n==="b"){for(t++;t=0?"0b"+r.toString(2):"-0b"+r.toString(2).slice(1)},octal:function(r){return r>=0?"0"+r.toString(8):"-0"+r.toString(8).slice(1)},decimal:function(r){return r.toString(10)},hexadecimal:function(r){return r>=0?"0x"+r.toString(16).toUpperCase():"-0x"+r.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var I2=y(($Ze,E2)=>{"use strict";var m2=pc(),zhe=Ai(),Vhe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Xhe(r){return!(r===null||!Vhe.test(r)||r[r.length-1]==="_")}function _he(r){var e,t,i,n;return e=r.replace(/_/g,"").toLowerCase(),t=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),t*e):t*parseFloat(e,10)}var Zhe=/^[-+]?[0-9]+e/;function $he(r,e){var t;if(isNaN(r))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===r)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===r)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(m2.isNegativeZero(r))return"-0.0";return t=r.toString(10),Zhe.test(t)?t.replace("e",".e"):t}function epe(r){return Object.prototype.toString.call(r)==="[object Number]"&&(r%1!==0||m2.isNegativeZero(r))}E2.exports=new zhe("tag:yaml.org,2002:float",{kind:"scalar",resolve:Xhe,construct:_he,predicate:epe,represent:$he,defaultStyle:"lowercase"})});var bv=y((e$e,y2)=>{"use strict";var tpe=dc();y2.exports=new tpe({include:[qI()],implicit:[f2(),p2(),C2(),I2()]})});var Qv=y((t$e,w2)=>{"use strict";var rpe=dc();w2.exports=new rpe({include:[bv()]})});var S2=y((r$e,Q2)=>{"use strict";var ipe=Ai(),B2=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),b2=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function npe(r){return r===null?!1:B2.exec(r)!==null||b2.exec(r)!==null}function spe(r){var e,t,i,n,s,o,a,l=0,c=null,u,g,f;if(e=B2.exec(r),e===null&&(e=b2.exec(r)),e===null)throw new Error("Date resolve error");if(t=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(t,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(t,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function ope(r){return r.toISOString()}Q2.exports=new ipe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:npe,construct:spe,instanceOf:Date,represent:ope})});var x2=y((i$e,v2)=>{"use strict";var ape=Ai();function Ape(r){return r==="<<"||r===null}v2.exports=new ape("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Ape})});var k2=y((n$e,D2)=>{"use strict";var Cc;try{P2=J,Cc=P2("buffer").Buffer}catch{}var P2,lpe=Ai(),Sv=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function cpe(r){if(r===null)return!1;var e,t,i=0,n=r.length,s=Sv;for(t=0;t64)){if(e<0)return!1;i+=6}return i%8===0}function upe(r){var e,t,i=r.replace(/[\r\n=]/g,""),n=i.length,s=Sv,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return t=n%4*6,t===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):t===18?(a.push(o>>10&255),a.push(o>>2&255)):t===12&&a.push(o>>4&255),Cc?Cc.from?Cc.from(a):new Cc(a):a}function gpe(r){var e="",t=0,i,n,s=r.length,o=Sv;for(i=0;i>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]),t=(t<<8)+r[i];return n=s%3,n===0?(e+=o[t>>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]):n===2?(e+=o[t>>10&63],e+=o[t>>4&63],e+=o[t<<2&63],e+=o[64]):n===1&&(e+=o[t>>2&63],e+=o[t<<4&63],e+=o[64],e+=o[64]),e}function fpe(r){return Cc&&Cc.isBuffer(r)}D2.exports=new lpe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:cpe,construct:upe,predicate:fpe,represent:gpe})});var F2=y((s$e,R2)=>{"use strict";var hpe=Ai(),ppe=Object.prototype.hasOwnProperty,dpe=Object.prototype.toString;function Cpe(r){if(r===null)return!0;var e=[],t,i,n,s,o,a=r;for(t=0,i=a.length;t{"use strict";var Epe=Ai(),Ipe=Object.prototype.toString;function ype(r){if(r===null)return!0;var e,t,i,n,s,o=r;for(s=new Array(o.length),e=0,t=o.length;e{"use strict";var Bpe=Ai(),bpe=Object.prototype.hasOwnProperty;function Qpe(r){if(r===null)return!0;var e,t=r;for(e in t)if(bpe.call(t,e)&&t[e]!==null)return!1;return!0}function Spe(r){return r!==null?r:{}}L2.exports=new Bpe("tag:yaml.org,2002:set",{kind:"mapping",resolve:Qpe,construct:Spe})});var nf=y((A$e,M2)=>{"use strict";var vpe=dc();M2.exports=new vpe({include:[Qv()],implicit:[S2(),x2()],explicit:[k2(),F2(),T2(),O2()]})});var K2=y((l$e,U2)=>{"use strict";var xpe=Ai();function Ppe(){return!0}function Dpe(){}function kpe(){return""}function Rpe(r){return typeof r>"u"}U2.exports=new xpe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:Ppe,construct:Dpe,predicate:Rpe,represent:kpe})});var G2=y((c$e,H2)=>{"use strict";var Fpe=Ai();function Npe(r){if(r===null||r.length===0)return!1;var e=r,t=/\/([gim]*)$/.exec(r),i="";return!(e[0]==="/"&&(t&&(i=t[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function Tpe(r){var e=r,t=/\/([gim]*)$/.exec(r),i="";return e[0]==="/"&&(t&&(i=t[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function Lpe(r){var e="/"+r.source+"/";return r.global&&(e+="g"),r.multiline&&(e+="m"),r.ignoreCase&&(e+="i"),e}function Ope(r){return Object.prototype.toString.call(r)==="[object RegExp]"}H2.exports=new Fpe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:Npe,construct:Tpe,predicate:Ope,represent:Lpe})});var q2=y((u$e,j2)=>{"use strict";var JI;try{Y2=J,JI=Y2("esprima")}catch{typeof window<"u"&&(JI=window.esprima)}var Y2,Mpe=Ai();function Upe(r){if(r===null)return!1;try{var e="("+r+")",t=JI.parse(e,{range:!0});return!(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function Kpe(r){var e="("+r+")",t=JI.parse(e,{range:!0}),i=[],n;if(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return t.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=t.body[0].expression.body.range,t.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function Hpe(r){return r.toString()}function Gpe(r){return Object.prototype.toString.call(r)==="[object Function]"}j2.exports=new Mpe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:Upe,construct:Kpe,predicate:Gpe,represent:Hpe})});var Ed=y((g$e,W2)=>{"use strict";var J2=dc();W2.exports=J2.DEFAULT=new J2({include:[nf()],explicit:[K2(),G2(),q2()]})});var gH=y((f$e,Id)=>{"use strict";var Qa=pc(),eH=tf(),Ype=e2(),tH=nf(),jpe=Ed(),NA=Object.prototype.hasOwnProperty,WI=1,rH=2,iH=3,zI=4,vv=1,qpe=2,z2=3,Jpe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Wpe=/[\x85\u2028\u2029]/,zpe=/[,\[\]\{\}]/,nH=/^(?:!|!!|![a-z\-]+!)$/i,sH=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function V2(r){return Object.prototype.toString.call(r)}function So(r){return r===10||r===13}function Ec(r){return r===9||r===32}function fn(r){return r===9||r===32||r===10||r===13}function sf(r){return r===44||r===91||r===93||r===123||r===125}function Vpe(r){var e;return 48<=r&&r<=57?r-48:(e=r|32,97<=e&&e<=102?e-97+10:-1)}function Xpe(r){return r===120?2:r===117?4:r===85?8:0}function _pe(r){return 48<=r&&r<=57?r-48:-1}function X2(r){return r===48?"\0":r===97?"\x07":r===98?"\b":r===116||r===9?" ":r===110?` +`:r===118?"\v":r===102?"\f":r===114?"\r":r===101?"\x1B":r===32?" ":r===34?'"':r===47?"/":r===92?"\\":r===78?"\x85":r===95?"\xA0":r===76?"\u2028":r===80?"\u2029":""}function Zpe(r){return r<=65535?String.fromCharCode(r):String.fromCharCode((r-65536>>10)+55296,(r-65536&1023)+56320)}var oH=new Array(256),aH=new Array(256);for(mc=0;mc<256;mc++)oH[mc]=X2(mc)?1:0,aH[mc]=X2(mc);var mc;function $pe(r,e){this.input=r,this.filename=e.filename||null,this.schema=e.schema||jpe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=r.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function AH(r,e){return new eH(e,new Ype(r.filename,r.input,r.position,r.line,r.position-r.lineStart))}function gt(r,e){throw AH(r,e)}function VI(r,e){r.onWarning&&r.onWarning.call(null,AH(r,e))}var _2={YAML:function(e,t,i){var n,s,o;e.version!==null&>(e,"duplication of %YAML directive"),i.length!==1&>(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&>(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&>(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&VI(e,"unsupported YAML version of the document")},TAG:function(e,t,i){var n,s;i.length!==2&>(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],nH.test(n)||gt(e,"ill-formed tag handle (first argument) of the TAG directive"),NA.call(e.tagMap,n)&>(e,'there is a previously declared suffix for "'+n+'" tag handle'),sH.test(s)||gt(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function FA(r,e,t,i){var n,s,o,a;if(e1&&(r.result+=Qa.repeat(` +`,e-1))}function ede(r,e,t){var i,n,s,o,a,l,c,u,g=r.kind,f=r.result,h;if(h=r.input.charCodeAt(r.position),fn(h)||sf(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=r.input.charCodeAt(r.position+1),fn(n)||t&&sf(n)))return!1;for(r.kind="scalar",r.result="",s=o=r.position,a=!1;h!==0;){if(h===58){if(n=r.input.charCodeAt(r.position+1),fn(n)||t&&sf(n))break}else if(h===35){if(i=r.input.charCodeAt(r.position-1),fn(i))break}else{if(r.position===r.lineStart&&XI(r)||t&&sf(h))break;if(So(h))if(l=r.line,c=r.lineStart,u=r.lineIndent,_r(r,!1,-1),r.lineIndent>=e){a=!0,h=r.input.charCodeAt(r.position);continue}else{r.position=o,r.line=l,r.lineStart=c,r.lineIndent=u;break}}a&&(FA(r,s,o,!1),Pv(r,r.line-l),s=o=r.position,a=!1),Ec(h)||(o=r.position+1),h=r.input.charCodeAt(++r.position)}return FA(r,s,o,!1),r.result?!0:(r.kind=g,r.result=f,!1)}function tde(r,e){var t,i,n;if(t=r.input.charCodeAt(r.position),t!==39)return!1;for(r.kind="scalar",r.result="",r.position++,i=n=r.position;(t=r.input.charCodeAt(r.position))!==0;)if(t===39)if(FA(r,i,r.position,!0),t=r.input.charCodeAt(++r.position),t===39)i=r.position,r.position++,n=r.position;else return!0;else So(t)?(FA(r,i,n,!0),Pv(r,_r(r,!1,e)),i=n=r.position):r.position===r.lineStart&&XI(r)?gt(r,"unexpected end of the document within a single quoted scalar"):(r.position++,n=r.position);gt(r,"unexpected end of the stream within a single quoted scalar")}function rde(r,e){var t,i,n,s,o,a;if(a=r.input.charCodeAt(r.position),a!==34)return!1;for(r.kind="scalar",r.result="",r.position++,t=i=r.position;(a=r.input.charCodeAt(r.position))!==0;){if(a===34)return FA(r,t,r.position,!0),r.position++,!0;if(a===92){if(FA(r,t,r.position,!0),a=r.input.charCodeAt(++r.position),So(a))_r(r,!1,e);else if(a<256&&oH[a])r.result+=aH[a],r.position++;else if((o=Xpe(a))>0){for(n=o,s=0;n>0;n--)a=r.input.charCodeAt(++r.position),(o=Vpe(a))>=0?s=(s<<4)+o:gt(r,"expected hexadecimal character");r.result+=Zpe(s),r.position++}else gt(r,"unknown escape sequence");t=i=r.position}else So(a)?(FA(r,t,i,!0),Pv(r,_r(r,!1,e)),t=i=r.position):r.position===r.lineStart&&XI(r)?gt(r,"unexpected end of the document within a double quoted scalar"):(r.position++,i=r.position)}gt(r,"unexpected end of the stream within a double quoted scalar")}function ide(r,e){var t=!0,i,n=r.tag,s,o=r.anchor,a,l,c,u,g,f={},h,p,C,w;if(w=r.input.charCodeAt(r.position),w===91)l=93,g=!1,s=[];else if(w===123)l=125,g=!0,s={};else return!1;for(r.anchor!==null&&(r.anchorMap[r.anchor]=s),w=r.input.charCodeAt(++r.position);w!==0;){if(_r(r,!0,e),w=r.input.charCodeAt(r.position),w===l)return r.position++,r.tag=n,r.anchor=o,r.kind=g?"mapping":"sequence",r.result=s,!0;t||gt(r,"missed comma between flow collection entries"),p=h=C=null,c=u=!1,w===63&&(a=r.input.charCodeAt(r.position+1),fn(a)&&(c=u=!0,r.position++,_r(r,!0,e))),i=r.line,af(r,e,WI,!1,!0),p=r.tag,h=r.result,_r(r,!0,e),w=r.input.charCodeAt(r.position),(u||r.line===i)&&w===58&&(c=!0,w=r.input.charCodeAt(++r.position),_r(r,!0,e),af(r,e,WI,!1,!0),C=r.result),g?of(r,s,f,p,h,C):c?s.push(of(r,null,f,p,h,C)):s.push(h),_r(r,!0,e),w=r.input.charCodeAt(r.position),w===44?(t=!0,w=r.input.charCodeAt(++r.position)):t=!1}gt(r,"unexpected end of the stream within a flow collection")}function nde(r,e){var t,i,n=vv,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=r.input.charCodeAt(r.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(r.kind="scalar",r.result="";g!==0;)if(g=r.input.charCodeAt(++r.position),g===43||g===45)vv===n?n=g===43?z2:qpe:gt(r,"repeat of a chomping mode identifier");else if((u=_pe(g))>=0)u===0?gt(r,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?gt(r,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(Ec(g)){do g=r.input.charCodeAt(++r.position);while(Ec(g));if(g===35)do g=r.input.charCodeAt(++r.position);while(!So(g)&&g!==0)}for(;g!==0;){for(xv(r),r.lineIndent=0,g=r.input.charCodeAt(r.position);(!o||r.lineIndenta&&(a=r.lineIndent),So(g)){l++;continue}if(r.lineIndente)&&l!==0)gt(r,"bad indentation of a sequence entry");else if(r.lineIndente)&&(af(r,e,zI,!0,n)&&(p?f=r.result:h=r.result),p||(of(r,c,u,g,f,h,s,o),g=f=h=null),_r(r,!0,-1),w=r.input.charCodeAt(r.position)),r.lineIndent>e&&w!==0)gt(r,"bad indentation of a mapping entry");else if(r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndent tag; it should be "scalar", not "'+r.kind+'"'),g=0,f=r.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+r.kind+'"'),h.resolve(r.result)?(r.result=h.construct(r.result),r.anchor!==null&&(r.anchorMap[r.anchor]=r.result)):gt(r,"cannot resolve a node with !<"+r.tag+"> explicit tag")):gt(r,"unknown tag !<"+r.tag+">");return r.listener!==null&&r.listener("close",r),r.tag!==null||r.anchor!==null||u}function lde(r){var e=r.position,t,i,n,s=!1,o;for(r.version=null,r.checkLineBreaks=r.legacy,r.tagMap={},r.anchorMap={};(o=r.input.charCodeAt(r.position))!==0&&(_r(r,!0,-1),o=r.input.charCodeAt(r.position),!(r.lineIndent>0||o!==37));){for(s=!0,o=r.input.charCodeAt(++r.position),t=r.position;o!==0&&!fn(o);)o=r.input.charCodeAt(++r.position);for(i=r.input.slice(t,r.position),n=[],i.length<1&>(r,"directive name must not be less than one character in length");o!==0;){for(;Ec(o);)o=r.input.charCodeAt(++r.position);if(o===35){do o=r.input.charCodeAt(++r.position);while(o!==0&&!So(o));break}if(So(o))break;for(t=r.position;o!==0&&!fn(o);)o=r.input.charCodeAt(++r.position);n.push(r.input.slice(t,r.position))}o!==0&&xv(r),NA.call(_2,i)?_2[i](r,i,n):VI(r,'unknown document directive "'+i+'"')}if(_r(r,!0,-1),r.lineIndent===0&&r.input.charCodeAt(r.position)===45&&r.input.charCodeAt(r.position+1)===45&&r.input.charCodeAt(r.position+2)===45?(r.position+=3,_r(r,!0,-1)):s&>(r,"directives end mark is expected"),af(r,r.lineIndent-1,zI,!1,!0),_r(r,!0,-1),r.checkLineBreaks&&Wpe.test(r.input.slice(e,r.position))&&VI(r,"non-ASCII line breaks are interpreted as content"),r.documents.push(r.result),r.position===r.lineStart&&XI(r)){r.input.charCodeAt(r.position)===46&&(r.position+=3,_r(r,!0,-1));return}if(r.position"u"&&(t=e,e=null);var i=lH(r,t);if(typeof e!="function")return i;for(var n=0,s=i.length;n"u"&&(t=e,e=null),cH(r,e,Qa.extend({schema:tH},t))}function ude(r,e){return uH(r,Qa.extend({schema:tH},e))}Id.exports.loadAll=cH;Id.exports.load=uH;Id.exports.safeLoadAll=cde;Id.exports.safeLoad=ude});var TH=y((h$e,Fv)=>{"use strict";var wd=pc(),Bd=tf(),gde=Ed(),fde=nf(),IH=Object.prototype.toString,yH=Object.prototype.hasOwnProperty,hde=9,yd=10,pde=13,dde=32,Cde=33,mde=34,wH=35,Ede=37,Ide=38,yde=39,wde=42,BH=44,Bde=45,bH=58,bde=61,Qde=62,Sde=63,vde=64,QH=91,SH=93,xde=96,vH=123,Pde=124,xH=125,Ti={};Ti[0]="\\0";Ti[7]="\\a";Ti[8]="\\b";Ti[9]="\\t";Ti[10]="\\n";Ti[11]="\\v";Ti[12]="\\f";Ti[13]="\\r";Ti[27]="\\e";Ti[34]='\\"';Ti[92]="\\\\";Ti[133]="\\N";Ti[160]="\\_";Ti[8232]="\\L";Ti[8233]="\\P";var Dde=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function kde(r,e){var t,i,n,s,o,a,l;if(e===null)return{};for(t={},i=Object.keys(e),n=0,s=i.length;n0?r.charCodeAt(s-1):null,f=f&&pH(o,a)}else{for(s=0;si&&r[g+1]!==" ",g=s);else if(!Af(o))return _I;a=s>0?r.charCodeAt(s-1):null,f=f&&pH(o,a)}c=c||u&&s-g-1>i&&r[g+1]!==" "}return!l&&!c?f&&!n(r)?DH:kH:t>9&&PH(r)?_I:c?FH:RH}function Ode(r,e,t,i){r.dump=function(){if(e.length===0)return"''";if(!r.noCompatMode&&Dde.indexOf(e)!==-1)return"'"+e+"'";var n=r.indent*Math.max(1,t),s=r.lineWidth===-1?-1:Math.max(Math.min(r.lineWidth,40),r.lineWidth-n),o=i||r.flowLevel>-1&&t>=r.flowLevel;function a(l){return Fde(r,l)}switch(Lde(e,o,r.indent,s,a)){case DH:return e;case kH:return"'"+e.replace(/'/g,"''")+"'";case RH:return"|"+dH(e,r.indent)+CH(hH(e,n));case FH:return">"+dH(e,r.indent)+CH(hH(Mde(e,s),n));case _I:return'"'+Ude(e,s)+'"';default:throw new Bd("impossible error: invalid scalar style")}}()}function dH(r,e){var t=PH(r)?String(e):"",i=r[r.length-1]===` +`,n=i&&(r[r.length-2]===` +`||r===` +`),s=n?"+":i?"":"-";return t+s+` +`}function CH(r){return r[r.length-1]===` +`?r.slice(0,-1):r}function Mde(r,e){for(var t=/(\n+)([^\n]*)/g,i=function(){var c=r.indexOf(` +`);return c=c!==-1?c:r.length,t.lastIndex=c,mH(r.slice(0,c),e)}(),n=r[0]===` +`||r[0]===" ",s,o;o=t.exec(r);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` +`:"")+mH(l,e),n=s}return i}function mH(r,e){if(r===""||r[0]===" ")return r;for(var t=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=t.exec(r);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` +`+r.slice(n,s),n=s+1),o=a;return l+=` +`,r.length-n>e&&o>n?l+=r.slice(n,o)+` +`+r.slice(o+1):l+=r.slice(n),l.slice(1)}function Ude(r){for(var e="",t,i,n,s=0;s=55296&&t<=56319&&(i=r.charCodeAt(s+1),i>=56320&&i<=57343)){e+=fH((t-55296)*1024+i-56320+65536),s++;continue}n=Ti[t],e+=!n&&Af(t)?r[s]:n||fH(t)}return e}function Kde(r,e,t){var i="",n=r.tag,s,o;for(s=0,o=t.length;s1024&&(u+="? "),u+=r.dump+(r.condenseFlow?'"':"")+":"+(r.condenseFlow?"":" "),Ic(r,e,c,!1,!1)&&(u+=r.dump,i+=u));r.tag=n,r.dump="{"+i+"}"}function Yde(r,e,t,i){var n="",s=r.tag,o=Object.keys(t),a,l,c,u,g,f;if(r.sortKeys===!0)o.sort();else if(typeof r.sortKeys=="function")o.sort(r.sortKeys);else if(r.sortKeys)throw new Bd("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(r.dump&&yd===r.dump.charCodeAt(0)?f+="?":f+="? "),f+=r.dump,g&&(f+=Dv(r,e)),Ic(r,e+1,u,!0,g)&&(r.dump&&yd===r.dump.charCodeAt(0)?f+=":":f+=": ",f+=r.dump,n+=f));r.tag=s,r.dump=n||"{}"}function EH(r,e,t){var i,n,s,o,a,l;for(n=t?r.explicitTypes:r.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');r.dump=i}return!0}return!1}function Ic(r,e,t,i,n,s){r.tag=null,r.dump=t,EH(r,t,!1)||EH(r,t,!0);var o=IH.call(r.dump);i&&(i=r.flowLevel<0||r.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=r.duplicates.indexOf(t),c=l!==-1),(r.tag!==null&&r.tag!=="?"||c||r.indent!==2&&e>0)&&(n=!1),c&&r.usedDuplicates[l])r.dump="*ref_"+l;else{if(a&&c&&!r.usedDuplicates[l]&&(r.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(r.dump).length!==0?(Yde(r,e,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(Gde(r,e,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump));else if(o==="[object Array]"){var u=r.noArrayIndent&&e>0?e-1:e;i&&r.dump.length!==0?(Hde(r,u,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(Kde(r,u,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump))}else if(o==="[object String]")r.tag!=="?"&&Ode(r,r.dump,e,s);else{if(r.skipInvalid)return!1;throw new Bd("unacceptable kind of an object to dump "+o)}r.tag!==null&&r.tag!=="?"&&(r.dump="!<"+r.tag+"> "+r.dump)}return!0}function jde(r,e){var t=[],i=[],n,s;for(kv(r,t,i),n=0,s=i.length;n{"use strict";var ZI=gH(),LH=TH();function $I(r){return function(){throw new Error("Function "+r+" is deprecated and cannot be used.")}}Tr.exports.Type=Ai();Tr.exports.Schema=dc();Tr.exports.FAILSAFE_SCHEMA=qI();Tr.exports.JSON_SCHEMA=bv();Tr.exports.CORE_SCHEMA=Qv();Tr.exports.DEFAULT_SAFE_SCHEMA=nf();Tr.exports.DEFAULT_FULL_SCHEMA=Ed();Tr.exports.load=ZI.load;Tr.exports.loadAll=ZI.loadAll;Tr.exports.safeLoad=ZI.safeLoad;Tr.exports.safeLoadAll=ZI.safeLoadAll;Tr.exports.dump=LH.dump;Tr.exports.safeDump=LH.safeDump;Tr.exports.YAMLException=tf();Tr.exports.MINIMAL_SCHEMA=qI();Tr.exports.SAFE_SCHEMA=nf();Tr.exports.DEFAULT_SCHEMA=Ed();Tr.exports.scan=$I("scan");Tr.exports.parse=$I("parse");Tr.exports.compose=$I("compose");Tr.exports.addConstructor=$I("addConstructor")});var UH=y((d$e,MH)=>{"use strict";var Jde=OH();MH.exports=Jde});var HH=y((C$e,KH)=>{"use strict";function Wde(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function yc(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,yc)}Wde(yc,Error);yc.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[Ne]:pe})))},H=function(R){return R},j=function(R){return R},$=Ms("correct indentation"),V=" ",W=ar(" ",!1),Z=function(R){return R.length===vA*Gg},A=function(R){return R.length===(vA+1)*Gg},ae=function(){return vA++,!0},ge=function(){return vA--,!0},_=function(){return Lg()},L=Ms("pseudostring"),N=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,ue=Fn(["\r",` +`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),we=/^[^\r\n\t ,\][{}:#"']/,Te=Fn(["\r",` +`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Pe=function(){return Lg().replace(/^ *| *$/g,"")},Le="--",se=ar("--",!1),Ae=/^[a-zA-Z\/0-9]/,be=Fn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),fe=/^[^\r\n\t :,]/,le=Fn(["\r",` +`," "," ",":",","],!0,!1),Ge="null",ie=ar("null",!1),Y=function(){return null},he="true",re=ar("true",!1),me=function(){return!0},tt="false",Rt=ar("false",!1),It=function(){return!1},Ur=Ms("string"),oi='"',pi=ar('"',!1),pr=function(){return""},di=function(R){return R},ai=function(R){return R.join("")},Os=/^[^"\\\0-\x1F\x7F]/,dr=Fn(['"',"\\",["\0",""],"\x7F"],!0,!1),Bi='\\"',_n=ar('\\"',!1),pa=function(){return'"'},EA="\\\\",kg=ar("\\\\",!1),Zn=function(){return"\\"},IA="\\/",da=ar("\\/",!1),Jp=function(){return"/"},yA="\\b",wA=ar("\\b",!1),Br=function(){return"\b"},Vl="\\f",Rg=ar("\\f",!1),Eo=function(){return"\f"},Fg="\\n",Wp=ar("\\n",!1),zp=function(){return` +`},Pr="\\r",oe=ar("\\r",!1),Io=function(){return"\r"},kn="\\t",Ng=ar("\\t",!1),bt=function(){return" "},Xl="\\u",Rn=ar("\\u",!1),$n=function(R,q,pe,Ne){return String.fromCharCode(parseInt(`0x${R}${q}${pe}${Ne}`))},es=/^[0-9a-fA-F]/,ut=Fn([["0","9"],["a","f"],["A","F"]],!1,!1),yo=Ms("blank space"),at=/^[ \t]/,ln=Fn([" "," "],!1,!1),S=Ms("white space"),Lt=/^[ \t\n\r]/,Tg=Fn([" "," ",` +`,"\r"],!1,!1),_l=`\r +`,Vp=ar(`\r +`,!1),Xp=` +`,_p=ar(` +`,!1),Zp="\r",$p=ar("\r",!1),G=0,yt=0,BA=[{line:1,column:1}],Wi=0,Zl=[],We=0,Ca;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function Lg(){return r.substring(yt,G)}function uI(){return cn(yt,G)}function ed(R,q){throw q=q!==void 0?q:cn(yt,G),ec([Ms(R)],r.substring(yt,G),q)}function gI(R,q){throw q=q!==void 0?q:cn(yt,G),Og(R,q)}function ar(R,q){return{type:"literal",text:R,ignoreCase:q}}function Fn(R,q,pe){return{type:"class",parts:R,inverted:q,ignoreCase:pe}}function $l(){return{type:"any"}}function td(){return{type:"end"}}function Ms(R){return{type:"other",description:R}}function ma(R){var q=BA[R],pe;if(q)return q;for(pe=R-1;!BA[pe];)pe--;for(q=BA[pe],q={line:q.line,column:q.column};peWi&&(Wi=G,Zl=[]),Zl.push(R))}function Og(R,q){return new yc(R,null,null,q)}function ec(R,q,pe){return new yc(yc.buildMessage(R,q),R,q,pe)}function Us(){var R;return R=Mg(),R}function tc(){var R,q,pe;for(R=G,q=[],pe=bA();pe!==t;)q.push(pe),pe=bA();return q!==t&&(yt=R,q=s(q)),R=q,R}function bA(){var R,q,pe,Ne,xe;return R=G,q=Ia(),q!==t?(r.charCodeAt(G)===45?(pe=o,G++):(pe=t,We===0&&ke(a)),pe!==t?(Ne=Nr(),Ne!==t?(xe=Ea(),xe!==t?(yt=R,q=l(xe),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R}function Mg(){var R,q,pe;for(R=G,q=[],pe=Ug();pe!==t;)q.push(pe),pe=Ug();return q!==t&&(yt=R,q=c(q)),R=q,R}function Ug(){var R,q,pe,Ne,xe,qe,dt,Ft,Nn;if(R=G,q=Nr(),q===t&&(q=null),q!==t){if(pe=G,r.charCodeAt(G)===35?(Ne=u,G++):(Ne=t,We===0&&ke(g)),Ne!==t){if(xe=[],qe=G,dt=G,We++,Ft=Gs(),We--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,We===0&&ke(f)),Ft!==t?(dt=[dt,Ft],qe=dt):(G=qe,qe=t)):(G=qe,qe=t),qe!==t)for(;qe!==t;)xe.push(qe),qe=G,dt=G,We++,Ft=Gs(),We--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,We===0&&ke(f)),Ft!==t?(dt=[dt,Ft],qe=dt):(G=qe,qe=t)):(G=qe,qe=t);else xe=t;xe!==t?(Ne=[Ne,xe],pe=Ne):(G=pe,pe=t)}else G=pe,pe=t;if(pe===t&&(pe=null),pe!==t){if(Ne=[],xe=Hs(),xe!==t)for(;xe!==t;)Ne.push(xe),xe=Hs();else Ne=t;Ne!==t?(yt=R,q=h(),R=q):(G=R,R=t)}else G=R,R=t}else G=R,R=t;if(R===t&&(R=G,q=Ia(),q!==t?(pe=rc(),pe!==t?(Ne=Nr(),Ne===t&&(Ne=null),Ne!==t?(r.charCodeAt(G)===58?(xe=p,G++):(xe=t,We===0&&ke(C)),xe!==t?(qe=Nr(),qe===t&&(qe=null),qe!==t?(dt=Ea(),dt!==t?(yt=R,q=w(pe,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=Ia(),q!==t?(pe=Ks(),pe!==t?(Ne=Nr(),Ne===t&&(Ne=null),Ne!==t?(r.charCodeAt(G)===58?(xe=p,G++):(xe=t,We===0&&ke(C)),xe!==t?(qe=Nr(),qe===t&&(qe=null),qe!==t?(dt=Ea(),dt!==t?(yt=R,q=w(pe,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))){if(R=G,q=Ia(),q!==t)if(pe=Ks(),pe!==t)if(Ne=Nr(),Ne!==t)if(xe=fI(),xe!==t){if(qe=[],dt=Hs(),dt!==t)for(;dt!==t;)qe.push(dt),dt=Hs();else qe=t;qe!==t?(yt=R,q=w(pe,xe),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;else G=R,R=t;else G=R,R=t;if(R===t)if(R=G,q=Ia(),q!==t)if(pe=Ks(),pe!==t){if(Ne=[],xe=G,qe=Nr(),qe===t&&(qe=null),qe!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,We===0&&ke(v)),dt!==t?(Ft=Nr(),Ft===t&&(Ft=null),Ft!==t?(Nn=Ks(),Nn!==t?(yt=xe,qe=D(pe,Nn),xe=qe):(G=xe,xe=t)):(G=xe,xe=t)):(G=xe,xe=t)):(G=xe,xe=t),xe!==t)for(;xe!==t;)Ne.push(xe),xe=G,qe=Nr(),qe===t&&(qe=null),qe!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,We===0&&ke(v)),dt!==t?(Ft=Nr(),Ft===t&&(Ft=null),Ft!==t?(Nn=Ks(),Nn!==t?(yt=xe,qe=D(pe,Nn),xe=qe):(G=xe,xe=t)):(G=xe,xe=t)):(G=xe,xe=t)):(G=xe,xe=t);else Ne=t;Ne!==t?(xe=Nr(),xe===t&&(xe=null),xe!==t?(r.charCodeAt(G)===58?(qe=p,G++):(qe=t,We===0&&ke(C)),qe!==t?(dt=Nr(),dt===t&&(dt=null),dt!==t?(Ft=Ea(),Ft!==t?(yt=R,q=T(pe,Ne,Ft),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)}else G=R,R=t;else G=R,R=t}return R}function Ea(){var R,q,pe,Ne,xe,qe,dt;if(R=G,q=G,We++,pe=G,Ne=Gs(),Ne!==t?(xe=$e(),xe!==t?(r.charCodeAt(G)===45?(qe=o,G++):(qe=t,We===0&&ke(a)),qe!==t?(dt=Nr(),dt!==t?(Ne=[Ne,xe,qe,dt],pe=Ne):(G=pe,pe=t)):(G=pe,pe=t)):(G=pe,pe=t)):(G=pe,pe=t),We--,pe!==t?(G=q,q=void 0):q=t,q!==t?(pe=Hs(),pe!==t?(Ne=wo(),Ne!==t?(xe=tc(),xe!==t?(qe=QA(),qe!==t?(yt=R,q=H(xe),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=Gs(),q!==t?(pe=wo(),pe!==t?(Ne=Mg(),Ne!==t?(xe=QA(),xe!==t?(yt=R,q=H(Ne),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))if(R=G,q=ic(),q!==t){if(pe=[],Ne=Hs(),Ne!==t)for(;Ne!==t;)pe.push(Ne),Ne=Hs();else pe=t;pe!==t?(yt=R,q=j(q),R=q):(G=R,R=t)}else G=R,R=t;return R}function Ia(){var R,q,pe;for(We++,R=G,q=[],r.charCodeAt(G)===32?(pe=V,G++):(pe=t,We===0&&ke(W));pe!==t;)q.push(pe),r.charCodeAt(G)===32?(pe=V,G++):(pe=t,We===0&&ke(W));return q!==t?(yt=G,pe=Z(q),pe?pe=void 0:pe=t,pe!==t?(q=[q,pe],R=q):(G=R,R=t)):(G=R,R=t),We--,R===t&&(q=t,We===0&&ke($)),R}function $e(){var R,q,pe;for(R=G,q=[],r.charCodeAt(G)===32?(pe=V,G++):(pe=t,We===0&&ke(W));pe!==t;)q.push(pe),r.charCodeAt(G)===32?(pe=V,G++):(pe=t,We===0&&ke(W));return q!==t?(yt=G,pe=A(q),pe?pe=void 0:pe=t,pe!==t?(q=[q,pe],R=q):(G=R,R=t)):(G=R,R=t),R}function wo(){var R;return yt=G,R=ae(),R?R=void 0:R=t,R}function QA(){var R;return yt=G,R=ge(),R?R=void 0:R=t,R}function rc(){var R;return R=nc(),R===t&&(R=rd()),R}function Ks(){var R,q,pe;if(R=nc(),R===t){if(R=G,q=[],pe=Kg(),pe!==t)for(;pe!==t;)q.push(pe),pe=Kg();else q=t;q!==t&&(yt=R,q=_()),R=q}return R}function ic(){var R;return R=id(),R===t&&(R=hI(),R===t&&(R=nc(),R===t&&(R=rd()))),R}function fI(){var R;return R=id(),R===t&&(R=nc(),R===t&&(R=Kg())),R}function rd(){var R,q,pe,Ne,xe,qe;if(We++,R=G,N.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&ke(ue)),q!==t){for(pe=[],Ne=G,xe=Nr(),xe===t&&(xe=null),xe!==t?(we.test(r.charAt(G))?(qe=r.charAt(G),G++):(qe=t,We===0&&ke(Te)),qe!==t?(xe=[xe,qe],Ne=xe):(G=Ne,Ne=t)):(G=Ne,Ne=t);Ne!==t;)pe.push(Ne),Ne=G,xe=Nr(),xe===t&&(xe=null),xe!==t?(we.test(r.charAt(G))?(qe=r.charAt(G),G++):(qe=t,We===0&&ke(Te)),qe!==t?(xe=[xe,qe],Ne=xe):(G=Ne,Ne=t)):(G=Ne,Ne=t);pe!==t?(yt=R,q=Pe(),R=q):(G=R,R=t)}else G=R,R=t;return We--,R===t&&(q=t,We===0&&ke(L)),R}function Kg(){var R,q,pe,Ne,xe;if(R=G,r.substr(G,2)===Le?(q=Le,G+=2):(q=t,We===0&&ke(se)),q===t&&(q=null),q!==t)if(Ae.test(r.charAt(G))?(pe=r.charAt(G),G++):(pe=t,We===0&&ke(be)),pe!==t){for(Ne=[],fe.test(r.charAt(G))?(xe=r.charAt(G),G++):(xe=t,We===0&&ke(le));xe!==t;)Ne.push(xe),fe.test(r.charAt(G))?(xe=r.charAt(G),G++):(xe=t,We===0&&ke(le));Ne!==t?(yt=R,q=Pe(),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;return R}function id(){var R,q;return R=G,r.substr(G,4)===Ge?(q=Ge,G+=4):(q=t,We===0&&ke(ie)),q!==t&&(yt=R,q=Y()),R=q,R}function hI(){var R,q;return R=G,r.substr(G,4)===he?(q=he,G+=4):(q=t,We===0&&ke(re)),q!==t&&(yt=R,q=me()),R=q,R===t&&(R=G,r.substr(G,5)===tt?(q=tt,G+=5):(q=t,We===0&&ke(Rt)),q!==t&&(yt=R,q=It()),R=q),R}function nc(){var R,q,pe,Ne;return We++,R=G,r.charCodeAt(G)===34?(q=oi,G++):(q=t,We===0&&ke(pi)),q!==t?(r.charCodeAt(G)===34?(pe=oi,G++):(pe=t,We===0&&ke(pi)),pe!==t?(yt=R,q=pr(),R=q):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,r.charCodeAt(G)===34?(q=oi,G++):(q=t,We===0&&ke(pi)),q!==t?(pe=pI(),pe!==t?(r.charCodeAt(G)===34?(Ne=oi,G++):(Ne=t,We===0&&ke(pi)),Ne!==t?(yt=R,q=di(pe),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)),We--,R===t&&(q=t,We===0&&ke(Ur)),R}function pI(){var R,q,pe;if(R=G,q=[],pe=Hg(),pe!==t)for(;pe!==t;)q.push(pe),pe=Hg();else q=t;return q!==t&&(yt=R,q=ai(q)),R=q,R}function Hg(){var R,q,pe,Ne,xe,qe;return Os.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,We===0&&ke(dr)),R===t&&(R=G,r.substr(G,2)===Bi?(q=Bi,G+=2):(q=t,We===0&&ke(_n)),q!==t&&(yt=R,q=pa()),R=q,R===t&&(R=G,r.substr(G,2)===EA?(q=EA,G+=2):(q=t,We===0&&ke(kg)),q!==t&&(yt=R,q=Zn()),R=q,R===t&&(R=G,r.substr(G,2)===IA?(q=IA,G+=2):(q=t,We===0&&ke(da)),q!==t&&(yt=R,q=Jp()),R=q,R===t&&(R=G,r.substr(G,2)===yA?(q=yA,G+=2):(q=t,We===0&&ke(wA)),q!==t&&(yt=R,q=Br()),R=q,R===t&&(R=G,r.substr(G,2)===Vl?(q=Vl,G+=2):(q=t,We===0&&ke(Rg)),q!==t&&(yt=R,q=Eo()),R=q,R===t&&(R=G,r.substr(G,2)===Fg?(q=Fg,G+=2):(q=t,We===0&&ke(Wp)),q!==t&&(yt=R,q=zp()),R=q,R===t&&(R=G,r.substr(G,2)===Pr?(q=Pr,G+=2):(q=t,We===0&&ke(oe)),q!==t&&(yt=R,q=Io()),R=q,R===t&&(R=G,r.substr(G,2)===kn?(q=kn,G+=2):(q=t,We===0&&ke(Ng)),q!==t&&(yt=R,q=bt()),R=q,R===t&&(R=G,r.substr(G,2)===Xl?(q=Xl,G+=2):(q=t,We===0&&ke(Rn)),q!==t?(pe=SA(),pe!==t?(Ne=SA(),Ne!==t?(xe=SA(),xe!==t?(qe=SA(),qe!==t?(yt=R,q=$n(pe,Ne,xe,qe),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)))))))))),R}function SA(){var R;return es.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,We===0&&ke(ut)),R}function Nr(){var R,q;if(We++,R=[],at.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&ke(ln)),q!==t)for(;q!==t;)R.push(q),at.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&ke(ln));else R=t;return We--,R===t&&(q=t,We===0&&ke(yo)),R}function dI(){var R,q;if(We++,R=[],Lt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&ke(Tg)),q!==t)for(;q!==t;)R.push(q),Lt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&ke(Tg));else R=t;return We--,R===t&&(q=t,We===0&&ke(S)),R}function Hs(){var R,q,pe,Ne,xe,qe;if(R=G,q=Gs(),q!==t){for(pe=[],Ne=G,xe=Nr(),xe===t&&(xe=null),xe!==t?(qe=Gs(),qe!==t?(xe=[xe,qe],Ne=xe):(G=Ne,Ne=t)):(G=Ne,Ne=t);Ne!==t;)pe.push(Ne),Ne=G,xe=Nr(),xe===t&&(xe=null),xe!==t?(qe=Gs(),qe!==t?(xe=[xe,qe],Ne=xe):(G=Ne,Ne=t)):(G=Ne,Ne=t);pe!==t?(q=[q,pe],R=q):(G=R,R=t)}else G=R,R=t;return R}function Gs(){var R;return r.substr(G,2)===_l?(R=_l,G+=2):(R=t,We===0&&ke(Vp)),R===t&&(r.charCodeAt(G)===10?(R=Xp,G++):(R=t,We===0&&ke(_p)),R===t&&(r.charCodeAt(G)===13?(R=Zp,G++):(R=t,We===0&&ke($p)))),R}let Gg=2,vA=0;if(Ca=n(),Ca!==t&&G===r.length)return Ca;throw Ca!==t&&G{"use strict";var $de=r=>{let e=!1,t=!1,i=!1;for(let n=0;n{if(!(typeof r=="string"||Array.isArray(r)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let t=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(r)?r=r.map(n=>n.trim()).filter(n=>n.length).join("-"):r=r.trim(),r.length===0?"":r.length===1?e.pascalCase?r.toUpperCase():r.toLowerCase():(r!==r.toLowerCase()&&(r=$de(r)),r=r.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),t(r))};Tv.exports=JH;Tv.exports.default=JH});var zH=y((B$e,eCe)=>{eCe.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var wc=y(Mn=>{"use strict";var XH=zH(),vo=process.env;Object.defineProperty(Mn,"_vendors",{value:XH.map(function(r){return r.constant})});Mn.name=null;Mn.isPR=null;XH.forEach(function(r){let t=(Array.isArray(r.env)?r.env:[r.env]).every(function(i){return VH(i)});if(Mn[r.constant]=t,t)switch(Mn.name=r.name,typeof r.pr){case"string":Mn.isPR=!!vo[r.pr];break;case"object":"env"in r.pr?Mn.isPR=r.pr.env in vo&&vo[r.pr.env]!==r.pr.ne:"any"in r.pr?Mn.isPR=r.pr.any.some(function(i){return!!vo[i]}):Mn.isPR=VH(r.pr);break;default:Mn.isPR=null}});Mn.isCI=!!(vo.CI||vo.CONTINUOUS_INTEGRATION||vo.BUILD_NUMBER||vo.RUN_ID||Mn.name);function VH(r){return typeof r=="string"?!!vo[r]:Object.keys(r).every(function(e){return vo[e]===r[e]})}});var ry=y(Un=>{"use strict";Object.defineProperty(Un,"__esModule",{value:!0});var tCe=0,rCe=1,iCe=2,nCe="",sCe="\0",oCe=-1,aCe=/^(-h|--help)(?:=([0-9]+))?$/,ACe=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,lCe=/^-[a-zA-Z]{2,}$/,cCe=/^([^=]+)=([\s\S]*)$/,uCe=process.env.DEBUG_CLI==="1";Un.BATCH_REGEX=lCe;Un.BINDING_REGEX=cCe;Un.DEBUG=uCe;Un.END_OF_INPUT=sCe;Un.HELP_COMMAND_INDEX=oCe;Un.HELP_REGEX=aCe;Un.NODE_ERRORED=iCe;Un.NODE_INITIAL=tCe;Un.NODE_SUCCESS=rCe;Un.OPTION_REGEX=ACe;Un.START_OF_INPUT=nCe});var iy=y(Qd=>{"use strict";Object.defineProperty(Qd,"__esModule",{value:!0});var gCe=ry(),Lv=class extends Error{constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageError"}},Ov=class extends Error{constructor(e,t){if(super(),this.input=e,this.candidates=t,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(i=>i.reason!==null&&i.reason===t[0].reason)){let[{reason:i}]=this.candidates;this.message=`${i} + +${this.candidates.map(({usage:n})=>`$ ${n}`).join(` +`)}`}else if(this.candidates.length===1){let[{usage:i}]=this.candidates;this.message=`Command not found; did you mean: + +$ ${i} +${Uv(e)}`}else this.message=`Command not found; did you mean one of: + +${this.candidates.map(({usage:i},n)=>`${`${n}.`.padStart(4)} ${i}`).join(` +`)} + +${Uv(e)}`}},Mv=class extends Error{constructor(e,t){super(),this.input=e,this.usages=t,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: + +${this.usages.map((i,n)=>`${`${n}.`.padStart(4)} ${i}`).join(` +`)} + +${Uv(e)}`}},Uv=r=>`While running ${r.filter(e=>e!==gCe.END_OF_INPUT).map(e=>{let t=JSON.stringify(e);return e.match(/\s/)||e.length===0||t!==`"${e}"`?t:e}).join(" ")}`;Qd.AmbiguousSyntaxError=Mv;Qd.UnknownSyntaxError=Ov;Qd.UsageError=Lv});var va=y(TA=>{"use strict";Object.defineProperty(TA,"__esModule",{value:!0});var _H=iy(),ZH=Symbol("clipanion/isOption");function fCe(r){return{...r,[ZH]:!0}}function hCe(r,e){return typeof r>"u"?[r,e]:typeof r=="object"&&r!==null&&!Array.isArray(r)?[void 0,r]:[r,e]}function Kv(r,e=!1){let t=r.replace(/^\.: /,"");return e&&(t=t[0].toLowerCase()+t.slice(1)),t}function $H(r,e){return e.length===1?new _H.UsageError(`${r}: ${Kv(e[0],!0)}`):new _H.UsageError(`${r}: +${e.map(t=>` +- ${Kv(t)}`).join("")}`)}function pCe(r,e,t){if(typeof t>"u")return e;let i=[],n=[],s=a=>{let l=e;return e=a,s.bind(null,l)};if(!t(e,{errors:i,coercions:n,coercion:s}))throw $H(`Invalid value for ${r}`,i);for(let[,a]of n)a();return e}TA.applyValidator=pCe;TA.cleanValidationError=Kv;TA.formatError=$H;TA.isOptionSymbol=ZH;TA.makeCommandOption=fCe;TA.rerouteArguments=hCe});var ns=y(st=>{"use strict";Object.defineProperty(st,"__esModule",{value:!0});var eG=/^[a-zA-Z_][a-zA-Z0-9_]*$/,tG=/^#[0-9a-f]{6}$/i,rG=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,iG=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,nG=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,Hv=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,sG=r=>()=>r;function Qt({test:r}){return sG(r)()}function Zr(r){return r===null?"null":r===void 0?"undefined":r===""?"an empty string":JSON.stringify(r)}function LA(r,e){var t,i,n;return typeof e=="number"?`${(t=r==null?void 0:r.p)!==null&&t!==void 0?t:"."}[${e}]`:eG.test(e)?`${(i=r==null?void 0:r.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=r==null?void 0:r.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function Bc(r,e){return t=>{let i=r[e];return r[e]=t,Bc(r,e).bind(null,i)}}function oG(r,e){return t=>{r[e]=t}}function ny(r,e,t){return r===1?e:t}function pt({errors:r,p:e}={},t){return r==null||r.push(`${e!=null?e:"."}: ${t}`),!1}var aG=()=>Qt({test:(r,e)=>!0});function dCe(r){return Qt({test:(e,t)=>e!==r?pt(t,`Expected a literal (got ${Zr(r)})`):!0})}var CCe=()=>Qt({test:(r,e)=>typeof r!="string"?pt(e,`Expected a string (got ${Zr(r)})`):!0});function mCe(r){let e=Array.isArray(r)?r:Object.values(r),t=new Set(e);return Qt({test:(i,n)=>t.has(i)?!0:pt(n,`Expected a valid enumeration value (got ${Zr(i)})`)})}var ECe=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),ICe=()=>Qt({test:(r,e)=>{var t;if(typeof r!="boolean"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i=ECe.get(r);if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a boolean (got ${Zr(r)})`)}return!0}}),yCe=()=>Qt({test:(r,e)=>{var t;if(typeof r!="number"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"){let n;try{n=JSON.parse(r)}catch{}if(typeof n=="number")if(JSON.stringify(n)===r)i=n;else return pt(e,`Received a number that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a number (got ${Zr(r)})`)}return!0}}),wCe=()=>Qt({test:(r,e)=>{var t;if(!(r instanceof Date)){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"&&Hv.test(r))i=new Date(r);else{let n;if(typeof r=="string"){let s;try{s=JSON.parse(r)}catch{}typeof s=="number"&&(n=s)}else typeof r=="number"&&(n=r);if(typeof n<"u")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return pt(e,`Received a timestamp that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a date (got ${Zr(r)})`)}return!0}}),BCe=(r,{delimiter:e}={})=>Qt({test:(t,i)=>{var n;if(typeof t=="string"&&typeof e<"u"&&typeof(i==null?void 0:i.coercions)<"u"){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");t=t.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,t)])}if(!Array.isArray(t))return pt(i,`Expected an array (got ${Zr(t)})`);let s=!0;for(let o=0,a=t.length;o{let t=AG(r.length);return Qt({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e<"u"&&typeof(n==null?void 0:n.coercions)<"u"){if(typeof(n==null?void 0:n.coercion)>"u")return pt(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return pt(n,`Expected a tuple (got ${Zr(i)})`);let o=t(i,Object.assign({},n));for(let a=0,l=i.length;aQt({test:(t,i)=>{if(typeof t!="object"||t===null)return pt(i,`Expected an object (got ${Zr(t)})`);let n=Object.keys(t),s=!0;for(let o=0,a=n.length;o{let t=Object.keys(r);return Qt({test:(i,n)=>{if(typeof i!="object"||i===null)return pt(n,`Expected an object (got ${Zr(i)})`);let s=new Set([...t,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=pt(Object.assign(Object.assign({},n),{p:LA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(r,l)?r[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c<"u"?a=c(u,Object.assign(Object.assign({},n),{p:LA(n,l),coercion:Bc(i,l)}))&&a:e===null?a=pt(Object.assign(Object.assign({},n),{p:LA(n,l)}),`Extraneous property (got ${Zr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:oG(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},vCe=r=>Qt({test:(e,t)=>e instanceof r?!0:pt(t,`Expected an instance of ${r.name} (got ${Zr(e)})`)}),xCe=(r,{exclusive:e=!1}={})=>Qt({test:(t,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)<"u"?[]:void 0;for(let c=0,u=r.length;c1?pt(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),PCe=(r,e)=>Qt({test:(t,i)=>{var n,s;let o={value:t},a=typeof(i==null?void 0:i.coercions)<"u"?Bc(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)<"u"?[]:void 0;if(!r(t,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l<"u")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)<"u"){if(o.value!==t){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),DCe=r=>Qt({test:(e,t)=>typeof e>"u"?!0:r(e,t)}),kCe=r=>Qt({test:(e,t)=>e===null?!0:r(e,t)}),RCe=r=>Qt({test:(e,t)=>e.length>=r?!0:pt(t,`Expected to have a length of at least ${r} elements (got ${e.length})`)}),FCe=r=>Qt({test:(e,t)=>e.length<=r?!0:pt(t,`Expected to have a length of at most ${r} elements (got ${e.length})`)}),AG=r=>Qt({test:(e,t)=>e.length!==r?pt(t,`Expected to have a length of exactly ${r} elements (got ${e.length})`):!0}),NCe=({map:r}={})=>Qt({test:(e,t)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sQt({test:(r,e)=>r<=0?!0:pt(e,`Expected to be negative (got ${r})`)}),LCe=()=>Qt({test:(r,e)=>r>=0?!0:pt(e,`Expected to be positive (got ${r})`)}),OCe=r=>Qt({test:(e,t)=>e>=r?!0:pt(t,`Expected to be at least ${r} (got ${e})`)}),MCe=r=>Qt({test:(e,t)=>e<=r?!0:pt(t,`Expected to be at most ${r} (got ${e})`)}),UCe=(r,e)=>Qt({test:(t,i)=>t>=r&&t<=e?!0:pt(i,`Expected to be in the [${r}; ${e}] range (got ${t})`)}),KCe=(r,e)=>Qt({test:(t,i)=>t>=r&&tQt({test:(e,t)=>e!==Math.round(e)?pt(t,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:pt(t,`Expected to be a safe integer (got ${e})`)}),GCe=r=>Qt({test:(e,t)=>r.test(e)?!0:pt(t,`Expected to match the pattern ${r.toString()} (got ${Zr(e)})`)}),YCe=()=>Qt({test:(r,e)=>r!==r.toLowerCase()?pt(e,`Expected to be all-lowercase (got ${r})`):!0}),jCe=()=>Qt({test:(r,e)=>r!==r.toUpperCase()?pt(e,`Expected to be all-uppercase (got ${r})`):!0}),qCe=()=>Qt({test:(r,e)=>nG.test(r)?!0:pt(e,`Expected to be a valid UUID v4 (got ${Zr(r)})`)}),JCe=()=>Qt({test:(r,e)=>Hv.test(r)?!1:pt(e,`Expected to be a valid ISO 8601 date string (got ${Zr(r)})`)}),WCe=({alpha:r=!1})=>Qt({test:(e,t)=>(r?tG.test(e):rG.test(e))?!0:pt(t,`Expected to be a valid hexadecimal color string (got ${Zr(e)})`)}),zCe=()=>Qt({test:(r,e)=>iG.test(r)?!0:pt(e,`Expected to be a valid base 64 string (got ${Zr(r)})`)}),VCe=(r=aG())=>Qt({test:(e,t)=>{let i;try{i=JSON.parse(e)}catch{return pt(t,`Expected to be a valid JSON string (got ${Zr(e)})`)}return r(i,t)}}),XCe=r=>{let e=new Set(r);return Qt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?pt(i,`Missing required ${ny(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},_Ce=r=>{let e=new Set(r);return Qt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?pt(i,`Forbidden ${ny(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},ZCe=r=>{let e=new Set(r);return Qt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?pt(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(r){r.Forbids="Forbids",r.Requires="Requires"})(st.KeyRelationship||(st.KeyRelationship={}));var $Ce={[st.KeyRelationship.Forbids]:{expect:!1,message:"forbids using"},[st.KeyRelationship.Requires]:{expect:!0,message:"requires using"}},eme=(r,e,t,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(t),o=$Ce[e];return Qt({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(r)||n.has(a[r]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?pt(l,`Property "${r}" ${o.message} ${ny(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})};st.applyCascade=PCe;st.base64RegExp=iG;st.colorStringAlphaRegExp=rG;st.colorStringRegExp=tG;st.computeKey=LA;st.getPrintable=Zr;st.hasExactLength=AG;st.hasForbiddenKeys=_Ce;st.hasKeyRelationship=eme;st.hasMaxLength=FCe;st.hasMinLength=RCe;st.hasMutuallyExclusiveKeys=ZCe;st.hasRequiredKeys=XCe;st.hasUniqueItems=NCe;st.isArray=BCe;st.isAtLeast=OCe;st.isAtMost=MCe;st.isBase64=zCe;st.isBoolean=ICe;st.isDate=wCe;st.isDict=QCe;st.isEnum=mCe;st.isHexColor=WCe;st.isISO8601=JCe;st.isInExclusiveRange=KCe;st.isInInclusiveRange=UCe;st.isInstanceOf=vCe;st.isInteger=HCe;st.isJSON=VCe;st.isLiteral=dCe;st.isLowerCase=YCe;st.isNegative=TCe;st.isNullable=kCe;st.isNumber=yCe;st.isObject=SCe;st.isOneOf=xCe;st.isOptional=DCe;st.isPositive=LCe;st.isString=CCe;st.isTuple=bCe;st.isUUID4=qCe;st.isUnknown=aG;st.isUpperCase=jCe;st.iso8601RegExp=Hv;st.makeCoercionFn=Bc;st.makeSetter=oG;st.makeTrait=sG;st.makeValidator=Qt;st.matchesRegExp=GCe;st.plural=ny;st.pushError=pt;st.simpleKeyRegExp=eG;st.uuid4RegExp=nG});var bc=y(Gv=>{"use strict";Object.defineProperty(Gv,"__esModule",{value:!0});var lG=va();function tme(r){if(r&&r.__esModule)return r;var e=Object.create(null);return r&&Object.keys(r).forEach(function(t){if(t!=="default"){var i=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(e,t,i.get?i:{enumerable:!0,get:function(){return r[t]}})}}),e.default=r,Object.freeze(e)}var Sd=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let t=this.constructor.schema;if(Array.isArray(t)){let{isDict:n,isUnknown:s,applyCascade:o}=await Promise.resolve().then(function(){return tme(ns())}),a=o(n(s()),t),l=[],c=[];if(!a(this,{errors:l,coercions:c}))throw lG.formatError("Invalid option schema",l);for(let[,g]of c)g()}else if(t!=null)throw new Error("Invalid command schema");let i=await this.execute();return typeof i<"u"?i:0}};Sd.isOption=lG.isOptionSymbol;Sd.Default=[];Gv.Command=Sd});var jv=y(vd=>{"use strict";Object.defineProperty(vd,"__esModule",{value:!0});var cG=80,Yv=Array(cG).fill("\u2501");for(let r=0;r<=24;++r)Yv[Yv.length-r]=`\x1B[38;5;${232+r}m\u2501`;var rme={header:r=>`\x1B[1m\u2501\u2501\u2501 ${r}${r.length`\x1B[1m${r}\x1B[22m`,error:r=>`\x1B[31m\x1B[1m${r}\x1B[22m\x1B[39m`,code:r=>`\x1B[36m${r}\x1B[39m`},ime={header:r=>r,bold:r=>r,error:r=>r,code:r=>r};function nme(r){let e=r.split(` +`),t=e.filter(n=>n.match(/\S/)),i=t.length>0?t.reduce((n,s)=>Math.min(n,s.length-s.trimStart().length),Number.MAX_VALUE):0;return e.map(n=>n.slice(i).trimRight()).join(` +`)}function sme(r,{format:e,paragraphs:t}){return r=r.replace(/\r\n?/g,` +`),r=nme(r),r=r.replace(/^\n+|\n+$/g,""),r=r.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 + +`),r=r.replace(/\n(\n)?\n*/g,"$1"),t&&(r=r.split(/\n/).map(i=>{let n=i.match(/^\s*[*-][\t ]+(.*)/);if(!n)return i.match(/(.{1,80})(?: |$)/g).join(` +`);let s=i.length-i.trimStart().length;return n[1].match(new RegExp(`(.{1,${78-s}})(?: |$)`,"g")).map((o,a)=>" ".repeat(s)+(a===0?"- ":" ")+o).join(` +`)}).join(` + +`)),r=r.replace(/(`+)((?:.|[\n])*?)\1/g,(i,n,s)=>e.code(n+s+n)),r=r.replace(/(\*\*)((?:.|[\n])*?)\1/g,(i,n,s)=>e.bold(n+s+n)),r?`${r} +`:""}vd.formatMarkdownish=sme;vd.richFormat=rme;vd.textFormat=ime});var ly=y(Ar=>{"use strict";Object.defineProperty(Ar,"__esModule",{value:!0});var lt=ry(),ay=iy();function Vi(r){lt.DEBUG&&console.log(r)}var uG={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:lt.HELP_COMMAND_INDEX};function qv(){return{nodes:[Li(),Li(),Li()]}}function gG(r){let e=qv(),t=[],i=e.nodes.length;for(let n of r){t.push(i);for(let s=0;s{if(e.has(i))return;e.add(i);let n=r.nodes[i];for(let o of Object.values(n.statics))for(let{to:a}of o)t(a);for(let[,{to:o}]of n.dynamics)t(o);for(let{to:o}of n.shortcuts)t(o);let s=new Set(n.shortcuts.map(({to:o})=>o));for(;n.shortcuts.length>0;){let{to:o}=n.shortcuts.shift(),a=r.nodes[o];for(let[l,c]of Object.entries(a.statics)){let u=Object.prototype.hasOwnProperty.call(n.statics,l)?n.statics[l]:n.statics[l]=[];for(let g of c)u.some(({to:f})=>g.to===f)||u.push(g)}for(let[l,c]of a.dynamics)n.dynamics.some(([u,{to:g}])=>l===u&&c.to===g)||n.dynamics.push([l,c]);for(let l of a.shortcuts)s.has(l.to)||(n.shortcuts.push(l),s.add(l.to))}};t(lt.NODE_INITIAL)}function hG(r,{prefix:e=""}={}){if(lt.DEBUG){Vi(`${e}Nodes are:`);for(let t=0;tl!==lt.NODE_ERRORED).map(({state:l})=>({usage:l.candidateUsage,reason:null})));if(a.every(({node:l})=>l===lt.NODE_ERRORED))throw new ay.UnknownSyntaxError(e,a.map(({state:l})=>({usage:l.candidateUsage,reason:l.errorMessage})));i=pG(a)}if(i.length>0){Vi(" Results:");for(let s of i)Vi(` - ${s.node} -> ${JSON.stringify(s.state)}`)}else Vi(" No results");return i}function ome(r,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(r.statics,lt.END_OF_INPUT)){for(let{to:t}of r.statics[lt.END_OF_INPUT])if(t===lt.NODE_SUCCESS)return!0}return!1}function ame(r,e,t){let i=t&&e.length>0?[""]:[],n=Jv(r,e,t),s=[],o=new Set,a=(l,c,u=!0)=>{let g=[c];for(;g.length>0;){let h=g;g=[];for(let p of h){let C=r.nodes[p],w=Object.keys(C.statics);for(let B of Object.keys(C.statics)){let v=w[0];for(let{to:D,reducer:T}of C.statics[v])T==="pushPath"&&(u||l.push(v),g.push(D))}}u=!1}let f=JSON.stringify(l);o.has(f)||(s.push(l),o.add(f))};for(let{node:l,state:c}of n){if(c.remainder!==null){a([c.remainder],l);continue}let u=r.nodes[l],g=ome(u,c);for(let[f,h]of Object.entries(u.statics))(g&&f!==lt.END_OF_INPUT||!f.startsWith("-")&&h.some(({reducer:p})=>p==="pushPath"))&&a([...i,f],l);if(!!g)for(let[f,{to:h}]of u.dynamics){if(h===lt.NODE_ERRORED)continue;let p=IG(f,c);if(p!==null)for(let C of p)a([...i,C],l)}}return[...s].sort()}function Ame(r,e){let t=Jv(r,[...e,lt.END_OF_INPUT]);return dG(e,t.map(({state:i})=>i))}function pG(r){let e=0;for(let{state:t}of r)t.path.length>e&&(e=t.path.length);return r.filter(({state:t})=>t.path.length===e)}function dG(r,e){let t=e.filter(g=>g.selectedIndex!==null);if(t.length===0)throw new Error;let i=t.filter(g=>g.requiredOptions.every(f=>f.some(h=>g.options.find(p=>p.name===h))));if(i.length===0)throw new ay.UnknownSyntaxError(r,t.map(g=>({usage:g.candidateUsage,reason:null})));let n=0;for(let g of i)g.path.length>n&&(n=g.path.length);let s=i.filter(g=>g.path.length===n),o=g=>g.positionals.filter(({extra:f})=>!f).length+g.options.length,a=s.map(g=>({state:g,positionalCount:o(g)})),l=0;for(let{positionalCount:g}of a)g>l&&(l=g);let c=a.filter(({positionalCount:g})=>g===l).map(({state:g})=>g),u=CG(c);if(u.length>1)throw new ay.AmbiguousSyntaxError(r,u.map(g=>g.candidateUsage));return u[0]}function CG(r){let e=[],t=[];for(let i of r)i.selectedIndex===lt.HELP_COMMAND_INDEX?t.push(i):e.push(i);return t.length>0&&e.push({...uG,path:mG(...t.map(i=>i.path)),options:t.reduce((i,n)=>i.concat(n.options),[])}),e}function mG(r,e,...t){return e===void 0?Array.from(r):mG(r.filter((i,n)=>i===e[n]),...t)}function Li(){return{dynamics:[],shortcuts:[],statics:{}}}function Wv(r){return r===lt.NODE_SUCCESS||r===lt.NODE_ERRORED}function sy(r,e=0){return{to:Wv(r.to)?r.to:r.to>2?r.to+e-2:r.to+e,reducer:r.reducer}}function EG(r,e=0){let t=Li();for(let[i,n]of r.dynamics)t.dynamics.push([i,sy(n,e)]);for(let i of r.shortcuts)t.shortcuts.push(sy(i,e));for(let[i,n]of Object.entries(r.statics))t.statics[i]=n.map(s=>sy(s,e));return t}function Ei(r,e,t,i,n){r.nodes[e].dynamics.push([t,{to:i,reducer:n}])}function Qc(r,e,t,i){r.nodes[e].shortcuts.push({to:t,reducer:i})}function xo(r,e,t,i,n){(Object.prototype.hasOwnProperty.call(r.nodes[e].statics,t)?r.nodes[e].statics[t]:r.nodes[e].statics[t]=[]).push({to:i,reducer:n})}function xd(r,e,t,i){if(Array.isArray(e)){let[n,...s]=e;return r[n](t,i,...s)}else return r[e](t,i)}function IG(r,e){let t=Array.isArray(r)?Pd[r[0]]:Pd[r];if(typeof t.suggest>"u")return null;let i=Array.isArray(r)?r.slice(1):[];return t.suggest(e,...i)}var Pd={always:()=>!0,isOptionLike:(r,e)=>!r.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(r,e)=>r.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(r,e,t,i)=>!r.ignoreOptions&&e===t,isBatchOption:(r,e,t)=>!r.ignoreOptions&<.BATCH_REGEX.test(e)&&[...e.slice(1)].every(i=>t.includes(`-${i}`)),isBoundOption:(r,e,t,i)=>{let n=e.match(lt.BINDING_REGEX);return!r.ignoreOptions&&!!n&<.OPTION_REGEX.test(n[1])&&t.includes(n[1])&&i.filter(s=>s.names.includes(n[1])).every(s=>s.allowBinding)},isNegatedOption:(r,e,t)=>!r.ignoreOptions&&e===`--no-${t.slice(2)}`,isHelp:(r,e)=>!r.ignoreOptions&<.HELP_REGEX.test(e),isUnsupportedOption:(r,e,t)=>!r.ignoreOptions&&e.startsWith("-")&<.OPTION_REGEX.test(e)&&!t.includes(e),isInvalidOption:(r,e)=>!r.ignoreOptions&&e.startsWith("-")&&!lt.OPTION_REGEX.test(e)};Pd.isOption.suggest=(r,e,t=!0)=>t?null:[e];var oy={setCandidateState:(r,e,t)=>({...r,...t}),setSelectedIndex:(r,e,t)=>({...r,selectedIndex:t}),pushBatch:(r,e)=>({...r,options:r.options.concat([...e.slice(1)].map(t=>({name:`-${t}`,value:!0})))}),pushBound:(r,e)=>{let[,t,i]=e.match(lt.BINDING_REGEX);return{...r,options:r.options.concat({name:t,value:i})}},pushPath:(r,e)=>({...r,path:r.path.concat(e)}),pushPositional:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:!1})}),pushExtra:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:Po})}),pushTrue:(r,e,t=e)=>({...r,options:r.options.concat({name:e,value:!0})}),pushFalse:(r,e,t=e)=>({...r,options:r.options.concat({name:t,value:!1})}),pushUndefined:(r,e)=>({...r,options:r.options.concat({name:e,value:void 0})}),pushStringValue:(r,e)=>{var t;let i={...r,options:[...r.options]},n=r.options[r.options.length-1];return n.value=((t=n.value)!==null&&t!==void 0?t:[]).concat([e]),i},setStringValue:(r,e)=>{let t={...r,options:[...r.options]},i=r.options[r.options.length-1];return i.value=e,t},inhibateOptions:r=>({...r,ignoreOptions:!0}),useHelp:(r,e,t)=>{let[,,i]=e.match(lt.HELP_REGEX);return typeof i<"u"?{...r,options:[{name:"-c",value:String(t)},{name:"-i",value:i}]}:{...r,options:[{name:"-c",value:String(t)}]}},setError:(r,e,t)=>e===lt.END_OF_INPUT?{...r,errorMessage:`${t}.`}:{...r,errorMessage:`${t} ("${e}").`},setOptionArityError:(r,e)=>{let t=r.options[r.options.length-1];return{...r,errorMessage:`Not enough arguments to option ${t.name}.`}}},Po=Symbol(),Ay=class{constructor(e,t){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=t}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:t=this.arity.trailing,extra:i=this.arity.extra,proxy:n=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:t,extra:i,proxy:n})}addPositional({name:e="arg",required:t=!0}={}){if(!t&&this.arity.extra===Po)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!t&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!t&&this.arity.extra!==Po?this.arity.extra.push(e):this.arity.extra!==Po&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:t=0}={}){if(this.arity.extra===Po)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let i=0;i1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(i))throw new Error(`The arity must be an integer, got ${i}`);if(i<0)throw new Error(`The arity must be positive, got ${i}`);this.allOptionNames.push(...e),this.options.push({names:e,description:t,arity:i,hidden:n,required:s,allowBinding:o})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:t=!0}={}){let i=[this.cliOpts.binaryName],n=[];if(this.paths.length>0&&i.push(...this.paths[0]),e){for(let{names:o,arity:a,hidden:l,description:c,required:u}of this.options){if(l)continue;let g=[];for(let h=0;h`:`[${f}]`)}i.push(...this.arity.leading.map(o=>`<${o}>`)),this.arity.extra===Po?i.push("..."):i.push(...this.arity.extra.map(o=>`[${o}]`)),i.push(...this.arity.trailing.map(o=>`<${o}>`))}return{usage:i.join(" "),options:n}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let e=qv(),t=lt.NODE_INITIAL,i=this.usage().usage,n=this.options.filter(a=>a.required).map(a=>a.names);t=ss(e,Li()),xo(e,lt.NODE_INITIAL,lt.START_OF_INPUT,t,["setCandidateState",{candidateUsage:i,requiredOptions:n}]);let s=this.arity.proxy?"always":"isNotOptionLike",o=this.paths.length>0?this.paths:[[]];for(let a of o){let l=t;if(a.length>0){let f=ss(e,Li());Qc(e,l,f),this.registerOptions(e,f),l=f}for(let f=0;f0||!this.arity.proxy){let f=ss(e,Li());Ei(e,l,"isHelp",f,["useHelp",this.cliIndex]),xo(e,f,lt.END_OF_INPUT,lt.NODE_SUCCESS,["setSelectedIndex",lt.HELP_COMMAND_INDEX]),this.registerOptions(e,l)}this.arity.leading.length>0&&xo(e,l,lt.END_OF_INPUT,lt.NODE_ERRORED,["setError","Not enough positional arguments"]);let c=l;for(let f=0;f0||f+1!==this.arity.leading.length)&&xo(e,h,lt.END_OF_INPUT,lt.NODE_ERRORED,["setError","Not enough positional arguments"]),Ei(e,c,"isNotOptionLike",h,"pushPositional"),c=h}let u=c;if(this.arity.extra===Po||this.arity.extra.length>0){let f=ss(e,Li());if(Qc(e,c,f),this.arity.extra===Po){let h=ss(e,Li());this.arity.proxy||this.registerOptions(e,h),Ei(e,c,s,h,"pushExtraNoLimits"),Ei(e,h,s,h,"pushExtraNoLimits"),Qc(e,h,f)}else for(let h=0;h0&&xo(e,u,lt.END_OF_INPUT,lt.NODE_ERRORED,["setError","Not enough positional arguments"]);let g=u;for(let f=0;fo.length>s.length?o:s,"");if(i.arity===0)for(let s of i.names)Ei(e,t,["isOption",s,i.hidden||s!==n],t,"pushTrue"),s.startsWith("--")&&!s.startsWith("--no-")&&Ei(e,t,["isNegatedOption",s],t,["pushFalse",s]);else{let s=ss(e,Li());for(let o of i.names)Ei(e,t,["isOption",o,i.hidden||o!==n],s,"pushUndefined");for(let o=0;o=0&&eAme(i,n),suggest:(n,s)=>ame(i,n,s)}}};Ar.CliBuilder=Dd;Ar.CommandBuilder=Ay;Ar.NoLimits=Po;Ar.aggregateHelpStates=CG;Ar.cloneNode=EG;Ar.cloneTransition=sy;Ar.debug=Vi;Ar.debugMachine=hG;Ar.execute=xd;Ar.injectNode=ss;Ar.isTerminalNode=Wv;Ar.makeAnyOfMachine=gG;Ar.makeNode=Li;Ar.makeStateMachine=qv;Ar.reducers=oy;Ar.registerDynamic=Ei;Ar.registerShortcut=Qc;Ar.registerStatic=xo;Ar.runMachineInternal=Jv;Ar.selectBestState=dG;Ar.simplifyMachine=fG;Ar.suggest=IG;Ar.tests=Pd;Ar.trimSmallerBranches=pG});var yG=y(zv=>{"use strict";Object.defineProperty(zv,"__esModule",{value:!0});var lme=bc(),kd=class extends lme.Command{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,t){let i=new kd(t);i.path=e.path;for(let n of e.options)switch(n.name){case"-c":i.commands.push(Number(n.value));break;case"-i":i.index=Number(n.value);break}return i}async execute(){let e=this.commands;if(typeof this.index<"u"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: +`),this.context.stdout.write(` +`);let t=0;for(let i of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[i].commandClass,{prefix:`${t++}. `.padStart(5)}));this.context.stdout.write(` +`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. +`)}}};zv.HelpCommand=kd});var vG=y(Vv=>{"use strict";Object.defineProperty(Vv,"__esModule",{value:!0});var cme=ry(),wG=bc(),ume=J("tty"),gme=ly(),hn=jv(),fme=yG();function hme(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var BG=hme(ume),bG=Symbol("clipanion/errorCommand");function pme(){return process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}var OA=class{constructor({binaryLabel:e,binaryName:t="...",binaryVersion:i,enableCapture:n=!1,enableColors:s}={}){this.registrations=new Map,this.builder=new gme.CliBuilder({binaryName:t}),this.binaryLabel=e,this.binaryName=t,this.binaryVersion=i,this.enableCapture=n,this.enableColors=s}static from(e,t={}){let i=new OA(t);for(let n of e)i.register(n);return i}register(e){var t;let i=new Map,n=new e;for(let l in n){let c=n[l];typeof c=="object"&&c!==null&&c[wG.Command.isOption]&&i.set(l,c)}let s=this.builder.command(),o=s.cliIndex,a=(t=e.paths)!==null&&t!==void 0?t:n.paths;if(typeof a<"u")for(let l of a)s.addPath(l);this.registrations.set(e,{specs:i,builder:s,index:o});for(let[l,{definition:c}]of i.entries())c(s,l);s.setContext({commandClass:e})}process(e){let{contexts:t,process:i}=this.builder.compile(),n=i(e);switch(n.selectedIndex){case cme.HELP_COMMAND_INDEX:return fme.HelpCommand.from(n,t);default:{let{commandClass:s}=t[n.selectedIndex],o=this.registrations.get(s);if(typeof o>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let a=new s;a.path=n.path;try{for(let[l,{transformer:c}]of o.specs.entries())a[l]=c(o.builder,l,n);return a}catch(l){throw l[bG]=a,l}}break}}async run(e,t){var i;let n,s={...OA.defaultContext,...t},o=(i=this.enableColors)!==null&&i!==void 0?i:s.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e)}catch(c){return s.stdout.write(this.error(c,{colored:o})),1}if(n.help)return s.stdout.write(this.usage(n,{colored:o,detailed:!0})),0;n.context=s,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(c,u)=>this.error(c,u),format:c=>this.format(c),process:c=>this.process(c),run:(c,u)=>this.run(c,{...s,...u}),usage:(c,u)=>this.usage(c,u)};let a=this.enableCapture?dme(s):SG,l;try{l=await a(()=>n.validateAndExecute().catch(c=>n.catch(c).then(()=>0)))}catch(c){return s.stdout.write(this.error(c,{colored:o,command:n})),1}return l}async runExit(e,t){process.exitCode=await this.run(e,t)}suggest(e,t){let{suggest:i}=this.builder.compile();return i(e,t)}definitions({colored:e=!1}={}){let t=[];for(let[i,{index:n}]of this.registrations){if(typeof i.usage>"u")continue;let{usage:s}=this.getUsageByIndex(n,{detailed:!1}),{usage:o,options:a}=this.getUsageByIndex(n,{detailed:!0,inlineOptions:!1}),l=typeof i.usage.category<"u"?hn.formatMarkdownish(i.usage.category,{format:this.format(e),paragraphs:!1}):void 0,c=typeof i.usage.description<"u"?hn.formatMarkdownish(i.usage.description,{format:this.format(e),paragraphs:!1}):void 0,u=typeof i.usage.details<"u"?hn.formatMarkdownish(i.usage.details,{format:this.format(e),paragraphs:!0}):void 0,g=typeof i.usage.examples<"u"?i.usage.examples.map(([f,h])=>[hn.formatMarkdownish(f,{format:this.format(e),paragraphs:!1}),h.replace(/\$0/g,this.binaryName)]):void 0;t.push({path:s,usage:o,category:l,description:c,details:u,examples:g,options:a})}return t}usage(e=null,{colored:t,detailed:i=!1,prefix:n="$ "}={}){var s;if(e===null){for(let l of this.registrations.keys()){let c=l.paths,u=typeof l.usage<"u";if(!c||c.length===0||c.length===1&&c[0].length===0||((s=c==null?void 0:c.some(h=>h.length===0))!==null&&s!==void 0?s:!1))if(e){e=null;break}else e=l;else if(u){e=null;continue}}e&&(i=!0)}let o=e!==null&&e instanceof wG.Command?e.constructor:e,a="";if(o)if(i){let{description:l="",details:c="",examples:u=[]}=o.usage||{};l!==""&&(a+=hn.formatMarkdownish(l,{format:this.format(t),paragraphs:!1}).replace(/^./,h=>h.toUpperCase()),a+=` +`),(c!==""||u.length>0)&&(a+=`${this.format(t).header("Usage")} +`,a+=` +`);let{usage:g,options:f}=this.getUsageByRegistration(o,{inlineOptions:!1});if(a+=`${this.format(t).bold(n)}${g} +`,f.length>0){a+=` +`,a+=`${hn.richFormat.header("Options")} +`;let h=f.reduce((p,C)=>Math.max(p,C.definition.length),0);a+=` +`;for(let{definition:p,description:C}of f)a+=` ${this.format(t).bold(p.padEnd(h))} ${hn.formatMarkdownish(C,{format:this.format(t),paragraphs:!1})}`}if(c!==""&&(a+=` +`,a+=`${this.format(t).header("Details")} +`,a+=` +`,a+=hn.formatMarkdownish(c,{format:this.format(t),paragraphs:!0})),u.length>0){a+=` +`,a+=`${this.format(t).header("Examples")} +`;for(let[h,p]of u)a+=` +`,a+=hn.formatMarkdownish(h,{format:this.format(t),paragraphs:!1}),a+=`${p.replace(/^/m,` ${this.format(t).bold(n)}`).replace(/\$0/g,this.binaryName)} +`}}else{let{usage:l}=this.getUsageByRegistration(o);a+=`${this.format(t).bold(n)}${l} +`}else{let l=new Map;for(let[f,{index:h}]of this.registrations.entries()){if(typeof f.usage>"u")continue;let p=typeof f.usage.category<"u"?hn.formatMarkdownish(f.usage.category,{format:this.format(t),paragraphs:!1}):null,C=l.get(p);typeof C>"u"&&l.set(p,C=[]);let{usage:w}=this.getUsageByIndex(h);C.push({commandClass:f,usage:w})}let c=Array.from(l.keys()).sort((f,h)=>f===null?-1:h===null?1:f.localeCompare(h,"en",{usage:"sort",caseFirst:"upper"})),u=typeof this.binaryLabel<"u",g=typeof this.binaryVersion<"u";u||g?(u&&g?a+=`${this.format(t).header(`${this.binaryLabel} - ${this.binaryVersion}`)} + +`:u?a+=`${this.format(t).header(`${this.binaryLabel}`)} +`:a+=`${this.format(t).header(`${this.binaryVersion}`)} +`,a+=` ${this.format(t).bold(n)}${this.binaryName} +`):a+=`${this.format(t).bold(n)}${this.binaryName} +`;for(let f of c){let h=l.get(f).slice().sort((C,w)=>C.usage.localeCompare(w.usage,"en",{usage:"sort",caseFirst:"upper"})),p=f!==null?f.trim():"General commands";a+=` +`,a+=`${this.format(t).header(`${p}`)} +`;for(let{commandClass:C,usage:w}of h){let B=C.usage.description||"undocumented";a+=` +`,a+=` ${this.format(t).bold(w)} +`,a+=` ${hn.formatMarkdownish(B,{format:this.format(t),paragraphs:!1})}`}}a+=` +`,a+=hn.formatMarkdownish("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(t),paragraphs:!0})}return a}error(e,t){var i,{colored:n,command:s=(i=e[bG])!==null&&i!==void 0?i:null}=t===void 0?{}:t;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let o="",a=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");a==="Error"&&(a="Internal Error"),o+=`${this.format(n).error(a)}: ${e.message} +`;let l=e.clipanion;return typeof l<"u"?l.type==="usage"&&(o+=` +`,o+=this.usage(s)):e.stack&&(o+=`${e.stack.replace(/^.*\n/,"")} +`),o}format(e){var t;return((t=e!=null?e:this.enableColors)!==null&&t!==void 0?t:OA.defaultContext.colorDepth>1)?hn.richFormat:hn.textFormat}getUsageByRegistration(e,t){let i=this.registrations.get(e);if(typeof i>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(i.index,t)}getUsageByIndex(e,t){return this.builder.getBuilderByIndex(e).usage(t)}};OA.defaultContext={stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:"getColorDepth"in BG.default.WriteStream.prototype?BG.default.WriteStream.prototype.getColorDepth():pme()};var QG;function dme(r){let e=QG;if(typeof e>"u"){if(r.stdout===process.stdout&&r.stderr===process.stderr)return SG;let{AsyncLocalStorage:t}=J("async_hooks");e=QG=new t;let i=process.stdout._write;process.stdout._write=function(s,o,a){let l=e.getStore();return typeof l>"u"?i.call(this,s,o,a):l.stdout.write(s,o,a)};let n=process.stderr._write;process.stderr._write=function(s,o,a){let l=e.getStore();return typeof l>"u"?n.call(this,s,o,a):l.stderr.write(s,o,a)}}return t=>e.run(r,t)}function SG(r){return r()}Vv.Cli=OA});var xG=y(Xv=>{"use strict";Object.defineProperty(Xv,"__esModule",{value:!0});var Cme=bc(),cy=class extends Cme.Command{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} +`)}};cy.paths=[["--clipanion=definitions"]];Xv.DefinitionsCommand=cy});var PG=y(_v=>{"use strict";Object.defineProperty(_v,"__esModule",{value:!0});var mme=bc(),uy=class extends mme.Command{async execute(){this.context.stdout.write(this.cli.usage())}};uy.paths=[["-h"],["--help"]];_v.HelpCommand=uy});var DG=y(Zv=>{"use strict";Object.defineProperty(Zv,"__esModule",{value:!0});var Eme=bc(),gy=class extends Eme.Command{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} +`)}};gy.paths=[["-v"],["--version"]];Zv.VersionCommand=gy});var kG=y(Rd=>{"use strict";Object.defineProperty(Rd,"__esModule",{value:!0});var Ime=xG(),yme=PG(),wme=DG();Rd.DefinitionsCommand=Ime.DefinitionsCommand;Rd.HelpCommand=yme.HelpCommand;Rd.VersionCommand=wme.VersionCommand});var FG=y($v=>{"use strict";Object.defineProperty($v,"__esModule",{value:!0});var RG=va();function Bme(r,e,t){let[i,n]=RG.rerouteArguments(e,t!=null?t:{}),{arity:s=1}=n,o=r.split(","),a=new Set(o);return RG.makeCommandOption({definition(l){l.addOption({names:o,arity:s,hidden:n==null?void 0:n.hidden,description:n==null?void 0:n.description,required:n.required})},transformer(l,c,u){let g=typeof i<"u"?[...i]:void 0;for(let{name:f,value:h}of u.options)!a.has(f)||(g=g!=null?g:[],g.push(h));return g}})}$v.Array=Bme});var TG=y(ex=>{"use strict";Object.defineProperty(ex,"__esModule",{value:!0});var NG=va();function bme(r,e,t){let[i,n]=NG.rerouteArguments(e,t!=null?t:{}),s=r.split(","),o=new Set(s);return NG.makeCommandOption({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u=f);return u}})}ex.Boolean=bme});var OG=y(tx=>{"use strict";Object.defineProperty(tx,"__esModule",{value:!0});var LG=va();function Qme(r,e,t){let[i,n]=LG.rerouteArguments(e,t!=null?t:{}),s=r.split(","),o=new Set(s);return LG.makeCommandOption({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u!=null||(u=0),f?u+=1:u=0);return u}})}tx.Counter=Qme});var MG=y(rx=>{"use strict";Object.defineProperty(rx,"__esModule",{value:!0});var Sme=va();function vme(r={}){return Sme.makeCommandOption({definition(e,t){var i;e.addProxy({name:(i=r.name)!==null&&i!==void 0?i:t,required:r.required})},transformer(e,t,i){return i.positionals.map(({value:n})=>n)}})}rx.Proxy=vme});var UG=y(ix=>{"use strict";Object.defineProperty(ix,"__esModule",{value:!0});var xme=va(),Pme=ly();function Dme(r={}){return xme.makeCommandOption({definition(e,t){var i;e.addRest({name:(i=r.name)!==null&&i!==void 0?i:t,required:r.required})},transformer(e,t,i){let n=o=>{let a=i.positionals[o];return a.extra===Pme.NoLimits||a.extra===!1&&oo)}})}ix.Rest=Dme});var KG=y(nx=>{"use strict";Object.defineProperty(nx,"__esModule",{value:!0});var Fd=va(),kme=ly();function Rme(r,e,t){let[i,n]=Fd.rerouteArguments(e,t!=null?t:{}),{arity:s=1}=n,o=r.split(","),a=new Set(o);return Fd.makeCommandOption({definition(l){l.addOption({names:o,arity:n.tolerateBoolean?0:s,hidden:n.hidden,description:n.description,required:n.required})},transformer(l,c,u){let g,f=i;for(let{name:h,value:p}of u.options)!a.has(h)||(g=h,f=p);return typeof f=="string"?Fd.applyValidator(g!=null?g:c,f,n.validator):f}})}function Fme(r={}){let{required:e=!0}=r;return Fd.makeCommandOption({definition(t,i){var n;t.addPositional({name:(n=r.name)!==null&&n!==void 0?n:i,required:r.required})},transformer(t,i,n){var s;for(let o=0;o{"use strict";Object.defineProperty(pn,"__esModule",{value:!0});var lf=va(),Tme=FG(),Lme=TG(),Ome=OG(),Mme=MG(),Ume=UG(),Kme=KG();pn.applyValidator=lf.applyValidator;pn.cleanValidationError=lf.cleanValidationError;pn.formatError=lf.formatError;pn.isOptionSymbol=lf.isOptionSymbol;pn.makeCommandOption=lf.makeCommandOption;pn.rerouteArguments=lf.rerouteArguments;pn.Array=Tme.Array;pn.Boolean=Lme.Boolean;pn.Counter=Ome.Counter;pn.Proxy=Mme.Proxy;pn.Rest=Ume.Rest;pn.String=Kme.String});var Xe=y(MA=>{"use strict";Object.defineProperty(MA,"__esModule",{value:!0});var Hme=iy(),Gme=bc(),Yme=jv(),jme=vG(),qme=kG(),Jme=HG();MA.UsageError=Hme.UsageError;MA.Command=Gme.Command;MA.formatMarkdownish=Yme.formatMarkdownish;MA.Cli=jme.Cli;MA.Builtins=qme;MA.Option=Jme});var YG=y((J$e,GG)=>{"use strict";GG.exports=(r,...e)=>new Promise(t=>{t(r(...e))})});var cf=y((W$e,sx)=>{"use strict";var Wme=YG(),jG=r=>{if(r<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],t=0,i=()=>{t--,e.length>0&&e.shift()()},n=(a,l,...c)=>{t++;let u=Wme(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{tnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>t},pendingCount:{get:()=>e.length}}),o};sx.exports=jG;sx.exports.default=jG});var Nd=y((V$e,qG)=>{var zme="2.0.0",Vme=Number.MAX_SAFE_INTEGER||9007199254740991,Xme=16;qG.exports={SEMVER_SPEC_VERSION:zme,MAX_LENGTH:256,MAX_SAFE_INTEGER:Vme,MAX_SAFE_COMPONENT_LENGTH:Xme}});var Td=y((X$e,JG)=>{var _me=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...r)=>console.error("SEMVER",...r):()=>{};JG.exports=_me});var Sc=y((KA,WG)=>{var{MAX_SAFE_COMPONENT_LENGTH:ox}=Nd(),Zme=Td();KA=WG.exports={};var $me=KA.re=[],_e=KA.src=[],Ze=KA.t={},eEe=0,St=(r,e,t)=>{let i=eEe++;Zme(i,e),Ze[r]=i,_e[i]=e,$me[i]=new RegExp(e,t?"g":void 0)};St("NUMERICIDENTIFIER","0|[1-9]\\d*");St("NUMERICIDENTIFIERLOOSE","[0-9]+");St("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");St("MAINVERSION",`(${_e[Ze.NUMERICIDENTIFIER]})\\.(${_e[Ze.NUMERICIDENTIFIER]})\\.(${_e[Ze.NUMERICIDENTIFIER]})`);St("MAINVERSIONLOOSE",`(${_e[Ze.NUMERICIDENTIFIERLOOSE]})\\.(${_e[Ze.NUMERICIDENTIFIERLOOSE]})\\.(${_e[Ze.NUMERICIDENTIFIERLOOSE]})`);St("PRERELEASEIDENTIFIER",`(?:${_e[Ze.NUMERICIDENTIFIER]}|${_e[Ze.NONNUMERICIDENTIFIER]})`);St("PRERELEASEIDENTIFIERLOOSE",`(?:${_e[Ze.NUMERICIDENTIFIERLOOSE]}|${_e[Ze.NONNUMERICIDENTIFIER]})`);St("PRERELEASE",`(?:-(${_e[Ze.PRERELEASEIDENTIFIER]}(?:\\.${_e[Ze.PRERELEASEIDENTIFIER]})*))`);St("PRERELEASELOOSE",`(?:-?(${_e[Ze.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${_e[Ze.PRERELEASEIDENTIFIERLOOSE]})*))`);St("BUILDIDENTIFIER","[0-9A-Za-z-]+");St("BUILD",`(?:\\+(${_e[Ze.BUILDIDENTIFIER]}(?:\\.${_e[Ze.BUILDIDENTIFIER]})*))`);St("FULLPLAIN",`v?${_e[Ze.MAINVERSION]}${_e[Ze.PRERELEASE]}?${_e[Ze.BUILD]}?`);St("FULL",`^${_e[Ze.FULLPLAIN]}$`);St("LOOSEPLAIN",`[v=\\s]*${_e[Ze.MAINVERSIONLOOSE]}${_e[Ze.PRERELEASELOOSE]}?${_e[Ze.BUILD]}?`);St("LOOSE",`^${_e[Ze.LOOSEPLAIN]}$`);St("GTLT","((?:<|>)?=?)");St("XRANGEIDENTIFIERLOOSE",`${_e[Ze.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);St("XRANGEIDENTIFIER",`${_e[Ze.NUMERICIDENTIFIER]}|x|X|\\*`);St("XRANGEPLAIN",`[v=\\s]*(${_e[Ze.XRANGEIDENTIFIER]})(?:\\.(${_e[Ze.XRANGEIDENTIFIER]})(?:\\.(${_e[Ze.XRANGEIDENTIFIER]})(?:${_e[Ze.PRERELEASE]})?${_e[Ze.BUILD]}?)?)?`);St("XRANGEPLAINLOOSE",`[v=\\s]*(${_e[Ze.XRANGEIDENTIFIERLOOSE]})(?:\\.(${_e[Ze.XRANGEIDENTIFIERLOOSE]})(?:\\.(${_e[Ze.XRANGEIDENTIFIERLOOSE]})(?:${_e[Ze.PRERELEASELOOSE]})?${_e[Ze.BUILD]}?)?)?`);St("XRANGE",`^${_e[Ze.GTLT]}\\s*${_e[Ze.XRANGEPLAIN]}$`);St("XRANGELOOSE",`^${_e[Ze.GTLT]}\\s*${_e[Ze.XRANGEPLAINLOOSE]}$`);St("COERCE",`(^|[^\\d])(\\d{1,${ox}})(?:\\.(\\d{1,${ox}}))?(?:\\.(\\d{1,${ox}}))?(?:$|[^\\d])`);St("COERCERTL",_e[Ze.COERCE],!0);St("LONETILDE","(?:~>?)");St("TILDETRIM",`(\\s*)${_e[Ze.LONETILDE]}\\s+`,!0);KA.tildeTrimReplace="$1~";St("TILDE",`^${_e[Ze.LONETILDE]}${_e[Ze.XRANGEPLAIN]}$`);St("TILDELOOSE",`^${_e[Ze.LONETILDE]}${_e[Ze.XRANGEPLAINLOOSE]}$`);St("LONECARET","(?:\\^)");St("CARETTRIM",`(\\s*)${_e[Ze.LONECARET]}\\s+`,!0);KA.caretTrimReplace="$1^";St("CARET",`^${_e[Ze.LONECARET]}${_e[Ze.XRANGEPLAIN]}$`);St("CARETLOOSE",`^${_e[Ze.LONECARET]}${_e[Ze.XRANGEPLAINLOOSE]}$`);St("COMPARATORLOOSE",`^${_e[Ze.GTLT]}\\s*(${_e[Ze.LOOSEPLAIN]})$|^$`);St("COMPARATOR",`^${_e[Ze.GTLT]}\\s*(${_e[Ze.FULLPLAIN]})$|^$`);St("COMPARATORTRIM",`(\\s*)${_e[Ze.GTLT]}\\s*(${_e[Ze.LOOSEPLAIN]}|${_e[Ze.XRANGEPLAIN]})`,!0);KA.comparatorTrimReplace="$1$2$3";St("HYPHENRANGE",`^\\s*(${_e[Ze.XRANGEPLAIN]})\\s+-\\s+(${_e[Ze.XRANGEPLAIN]})\\s*$`);St("HYPHENRANGELOOSE",`^\\s*(${_e[Ze.XRANGEPLAINLOOSE]})\\s+-\\s+(${_e[Ze.XRANGEPLAINLOOSE]})\\s*$`);St("STAR","(<|>)?=?\\s*\\*");St("GTE0","^\\s*>=\\s*0.0.0\\s*$");St("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var Ld=y((_$e,zG)=>{var tEe=["includePrerelease","loose","rtl"],rEe=r=>r?typeof r!="object"?{loose:!0}:tEe.filter(e=>r[e]).reduce((e,t)=>(e[t]=!0,e),{}):{};zG.exports=rEe});var hy=y((Z$e,_G)=>{var VG=/^[0-9]+$/,XG=(r,e)=>{let t=VG.test(r),i=VG.test(e);return t&&i&&(r=+r,e=+e),r===e?0:t&&!i?-1:i&&!t?1:rXG(e,r);_G.exports={compareIdentifiers:XG,rcompareIdentifiers:iEe}});var Oi=y(($$e,tY)=>{var py=Td(),{MAX_LENGTH:ZG,MAX_SAFE_INTEGER:dy}=Nd(),{re:$G,t:eY}=Sc(),nEe=Ld(),{compareIdentifiers:Od}=hy(),Kn=class{constructor(e,t){if(t=nEe(t),e instanceof Kn){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>ZG)throw new TypeError(`version is longer than ${ZG} characters`);py("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let i=e.trim().match(t.loose?$G[eY.LOOSE]:$G[eY.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>dy||this.major<0)throw new TypeError("Invalid major version");if(this.minor>dy||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>dy||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};tY.exports=Kn});var vc=y((eet,sY)=>{var{MAX_LENGTH:sEe}=Nd(),{re:rY,t:iY}=Sc(),nY=Oi(),oEe=Ld(),aEe=(r,e)=>{if(e=oEe(e),r instanceof nY)return r;if(typeof r!="string"||r.length>sEe||!(e.loose?rY[iY.LOOSE]:rY[iY.FULL]).test(r))return null;try{return new nY(r,e)}catch{return null}};sY.exports=aEe});var aY=y((tet,oY)=>{var AEe=vc(),lEe=(r,e)=>{let t=AEe(r,e);return t?t.version:null};oY.exports=lEe});var lY=y((ret,AY)=>{var cEe=vc(),uEe=(r,e)=>{let t=cEe(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};AY.exports=uEe});var uY=y((iet,cY)=>{var gEe=Oi(),fEe=(r,e,t,i)=>{typeof t=="string"&&(i=t,t=void 0);try{return new gEe(r,t).inc(e,i).version}catch{return null}};cY.exports=fEe});var os=y((net,fY)=>{var gY=Oi(),hEe=(r,e,t)=>new gY(r,t).compare(new gY(e,t));fY.exports=hEe});var Cy=y((set,hY)=>{var pEe=os(),dEe=(r,e,t)=>pEe(r,e,t)===0;hY.exports=dEe});var CY=y((oet,dY)=>{var pY=vc(),CEe=Cy(),mEe=(r,e)=>{if(CEe(r,e))return null;{let t=pY(r),i=pY(e),n=t.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in t)if((a==="major"||a==="minor"||a==="patch")&&t[a]!==i[a])return s+a;return o}};dY.exports=mEe});var EY=y((aet,mY)=>{var EEe=Oi(),IEe=(r,e)=>new EEe(r,e).major;mY.exports=IEe});var yY=y((Aet,IY)=>{var yEe=Oi(),wEe=(r,e)=>new yEe(r,e).minor;IY.exports=wEe});var BY=y((cet,wY)=>{var BEe=Oi(),bEe=(r,e)=>new BEe(r,e).patch;wY.exports=bEe});var QY=y((uet,bY)=>{var QEe=vc(),SEe=(r,e)=>{let t=QEe(r,e);return t&&t.prerelease.length?t.prerelease:null};bY.exports=SEe});var vY=y((get,SY)=>{var vEe=os(),xEe=(r,e,t)=>vEe(e,r,t);SY.exports=xEe});var PY=y((fet,xY)=>{var PEe=os(),DEe=(r,e)=>PEe(r,e,!0);xY.exports=DEe});var my=y((het,kY)=>{var DY=Oi(),kEe=(r,e,t)=>{let i=new DY(r,t),n=new DY(e,t);return i.compare(n)||i.compareBuild(n)};kY.exports=kEe});var FY=y((pet,RY)=>{var REe=my(),FEe=(r,e)=>r.sort((t,i)=>REe(t,i,e));RY.exports=FEe});var TY=y((det,NY)=>{var NEe=my(),TEe=(r,e)=>r.sort((t,i)=>NEe(i,t,e));NY.exports=TEe});var Md=y((Cet,LY)=>{var LEe=os(),OEe=(r,e,t)=>LEe(r,e,t)>0;LY.exports=OEe});var Ey=y((met,OY)=>{var MEe=os(),UEe=(r,e,t)=>MEe(r,e,t)<0;OY.exports=UEe});var ax=y((Eet,MY)=>{var KEe=os(),HEe=(r,e,t)=>KEe(r,e,t)!==0;MY.exports=HEe});var Iy=y((Iet,UY)=>{var GEe=os(),YEe=(r,e,t)=>GEe(r,e,t)>=0;UY.exports=YEe});var yy=y((yet,KY)=>{var jEe=os(),qEe=(r,e,t)=>jEe(r,e,t)<=0;KY.exports=qEe});var Ax=y((wet,HY)=>{var JEe=Cy(),WEe=ax(),zEe=Md(),VEe=Iy(),XEe=Ey(),_Ee=yy(),ZEe=(r,e,t,i)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return JEe(r,t,i);case"!=":return WEe(r,t,i);case">":return zEe(r,t,i);case">=":return VEe(r,t,i);case"<":return XEe(r,t,i);case"<=":return _Ee(r,t,i);default:throw new TypeError(`Invalid operator: ${e}`)}};HY.exports=ZEe});var YY=y((Bet,GY)=>{var $Ee=Oi(),eIe=vc(),{re:wy,t:By}=Sc(),tIe=(r,e)=>{if(r instanceof $Ee)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(wy[By.COERCE]);else{let i;for(;(i=wy[By.COERCERTL].exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||i.index+i[0].length!==t.index+t[0].length)&&(t=i),wy[By.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;wy[By.COERCERTL].lastIndex=-1}return t===null?null:eIe(`${t[2]}.${t[3]||"0"}.${t[4]||"0"}`,e)};GY.exports=tIe});var qY=y((bet,jY)=>{"use strict";jY.exports=function(r){r.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Ud=y((Qet,JY)=>{"use strict";JY.exports=Ht;Ht.Node=xc;Ht.create=Ht;function Ht(r){var e=this;if(e instanceof Ht||(e=new Ht),e.tail=null,e.head=null,e.length=0,r&&typeof r.forEach=="function")r.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var t=0,i=arguments.length;t1)t=e;else if(this.head)i=this.head.next,t=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)t=r(t,i.value,n),i=i.next;return t};Ht.prototype.reduceReverse=function(r,e){var t,i=this.tail;if(arguments.length>1)t=e;else if(this.tail)i=this.tail.prev,t=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)t=r(t,i.value,n),i=i.prev;return t};Ht.prototype.toArray=function(){for(var r=new Array(this.length),e=0,t=this.head;t!==null;e++)r[e]=t.value,t=t.next;return r};Ht.prototype.toArrayReverse=function(){for(var r=new Array(this.length),e=0,t=this.tail;t!==null;e++)r[e]=t.value,t=t.prev;return r};Ht.prototype.slice=function(r,e){e=e||this.length,e<0&&(e+=this.length),r=r||0,r<0&&(r+=this.length);var t=new Ht;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>r;i--,n=n.prev)t.push(n.value);return t};Ht.prototype.splice=function(r,e,...t){r>this.length&&(r=this.length-1),r<0&&(r=this.length+r);for(var i=0,n=this.head;n!==null&&i{"use strict";var sIe=Ud(),Pc=Symbol("max"),Pa=Symbol("length"),uf=Symbol("lengthCalculator"),Hd=Symbol("allowStale"),Dc=Symbol("maxAge"),xa=Symbol("dispose"),WY=Symbol("noDisposeOnSet"),Ii=Symbol("lruList"),zs=Symbol("cache"),VY=Symbol("updateAgeOnGet"),lx=()=>1,ux=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let t=this[Pc]=e.max||1/0,i=e.length||lx;if(this[uf]=typeof i!="function"?lx:i,this[Hd]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[Dc]=e.maxAge||0,this[xa]=e.dispose,this[WY]=e.noDisposeOnSet||!1,this[VY]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[Pc]=e||1/0,Kd(this)}get max(){return this[Pc]}set allowStale(e){this[Hd]=!!e}get allowStale(){return this[Hd]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[Dc]=e,Kd(this)}get maxAge(){return this[Dc]}set lengthCalculator(e){typeof e!="function"&&(e=lx),e!==this[uf]&&(this[uf]=e,this[Pa]=0,this[Ii].forEach(t=>{t.length=this[uf](t.value,t.key),this[Pa]+=t.length})),Kd(this)}get lengthCalculator(){return this[uf]}get length(){return this[Pa]}get itemCount(){return this[Ii].length}rforEach(e,t){t=t||this;for(let i=this[Ii].tail;i!==null;){let n=i.prev;zY(this,e,i,t),i=n}}forEach(e,t){t=t||this;for(let i=this[Ii].head;i!==null;){let n=i.next;zY(this,e,i,t),i=n}}keys(){return this[Ii].toArray().map(e=>e.key)}values(){return this[Ii].toArray().map(e=>e.value)}reset(){this[xa]&&this[Ii]&&this[Ii].length&&this[Ii].forEach(e=>this[xa](e.key,e.value)),this[zs]=new Map,this[Ii]=new sIe,this[Pa]=0}dump(){return this[Ii].map(e=>by(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Ii]}set(e,t,i){if(i=i||this[Dc],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[uf](t,e);if(this[zs].has(e)){if(s>this[Pc])return gf(this,this[zs].get(e)),!1;let l=this[zs].get(e).value;return this[xa]&&(this[WY]||this[xa](e,l.value)),l.now=n,l.maxAge=i,l.value=t,this[Pa]+=s-l.length,l.length=s,this.get(e),Kd(this),!0}let o=new gx(e,t,s,n,i);return o.length>this[Pc]?(this[xa]&&this[xa](e,t),!1):(this[Pa]+=o.length,this[Ii].unshift(o),this[zs].set(e,this[Ii].head),Kd(this),!0)}has(e){if(!this[zs].has(e))return!1;let t=this[zs].get(e).value;return!by(this,t)}get(e){return cx(this,e,!0)}peek(e){return cx(this,e,!1)}pop(){let e=this[Ii].tail;return e?(gf(this,e),e.value):null}del(e){gf(this,this[zs].get(e))}load(e){this.reset();let t=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-t;o>0&&this.set(n.k,n.v,o)}}}prune(){this[zs].forEach((e,t)=>cx(this,t,!1))}},cx=(r,e,t)=>{let i=r[zs].get(e);if(i){let n=i.value;if(by(r,n)){if(gf(r,i),!r[Hd])return}else t&&(r[VY]&&(i.value.now=Date.now()),r[Ii].unshiftNode(i));return n.value}},by=(r,e)=>{if(!e||!e.maxAge&&!r[Dc])return!1;let t=Date.now()-e.now;return e.maxAge?t>e.maxAge:r[Dc]&&t>r[Dc]},Kd=r=>{if(r[Pa]>r[Pc])for(let e=r[Ii].tail;r[Pa]>r[Pc]&&e!==null;){let t=e.prev;gf(r,e),e=t}},gf=(r,e)=>{if(e){let t=e.value;r[xa]&&r[xa](t.key,t.value),r[Pa]-=t.length,r[zs].delete(t.key),r[Ii].removeNode(e)}},gx=class{constructor(e,t,i,n,s){this.key=e,this.value=t,this.length=i,this.now=n,this.maxAge=s||0}},zY=(r,e,t,i)=>{let n=t.value;by(r,n)&&(gf(r,t),r[Hd]||(n=void 0)),n&&e.call(i,n.value,n.key,r)};XY.exports=ux});var as=y((xet,tj)=>{var kc=class{constructor(e,t){if(t=aIe(t),e instanceof kc)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new kc(e.raw,t);if(e instanceof fx)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!$Y(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&gIe(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=ZY.get(i);if(n)return n;let s=this.options.loose,o=s?Mi[Qi.HYPHENRANGELOOSE]:Mi[Qi.HYPHENRANGE];e=e.replace(o,wIe(this.options.includePrerelease)),jr("hyphen replace",e),e=e.replace(Mi[Qi.COMPARATORTRIM],lIe),jr("comparator trim",e,Mi[Qi.COMPARATORTRIM]),e=e.replace(Mi[Qi.TILDETRIM],cIe),e=e.replace(Mi[Qi.CARETTRIM],uIe),e=e.split(/\s+/).join(" ");let a=s?Mi[Qi.COMPARATORLOOSE]:Mi[Qi.COMPARATOR],l=e.split(" ").map(f=>fIe(f,this.options)).join(" ").split(/\s+/).map(f=>yIe(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new fx(f,this.options)),c=l.length,u=new Map;for(let f of l){if($Y(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return ZY.set(i,g),g}intersects(e,t){if(!(e instanceof kc))throw new TypeError("a Range is required");return this.set.some(i=>ej(i,t)&&e.set.some(n=>ej(n,t)&&i.every(s=>n.every(o=>s.intersects(o,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new AIe(e,this.options)}catch{return!1}for(let t=0;tr.value==="<0.0.0-0",gIe=r=>r.value==="",ej=(r,e)=>{let t=!0,i=r.slice(),n=i.pop();for(;t&&i.length;)t=i.every(s=>n.intersects(s,e)),n=i.pop();return t},fIe=(r,e)=>(jr("comp",r,e),r=dIe(r,e),jr("caret",r),r=hIe(r,e),jr("tildes",r),r=mIe(r,e),jr("xrange",r),r=IIe(r,e),jr("stars",r),r),Xi=r=>!r||r.toLowerCase()==="x"||r==="*",hIe=(r,e)=>r.trim().split(/\s+/).map(t=>pIe(t,e)).join(" "),pIe=(r,e)=>{let t=e.loose?Mi[Qi.TILDELOOSE]:Mi[Qi.TILDE];return r.replace(t,(i,n,s,o,a)=>{jr("tilde",r,i,n,s,o,a);let l;return Xi(n)?l="":Xi(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:Xi(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(jr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,jr("tilde return",l),l})},dIe=(r,e)=>r.trim().split(/\s+/).map(t=>CIe(t,e)).join(" "),CIe=(r,e)=>{jr("caret",r,e);let t=e.loose?Mi[Qi.CARETLOOSE]:Mi[Qi.CARET],i=e.includePrerelease?"-0":"";return r.replace(t,(n,s,o,a,l)=>{jr("caret",r,n,s,o,a,l);let c;return Xi(s)?c="":Xi(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Xi(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(jr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(jr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),jr("caret return",c),c})},mIe=(r,e)=>(jr("replaceXRanges",r,e),r.split(/\s+/).map(t=>EIe(t,e)).join(" ")),EIe=(r,e)=>{r=r.trim();let t=e.loose?Mi[Qi.XRANGELOOSE]:Mi[Qi.XRANGE];return r.replace(t,(i,n,s,o,a,l)=>{jr("xRange",r,i,n,s,o,a,l);let c=Xi(s),u=c||Xi(o),g=u||Xi(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),jr("xRange return",i),i})},IIe=(r,e)=>(jr("replaceStars",r,e),r.trim().replace(Mi[Qi.STAR],"")),yIe=(r,e)=>(jr("replaceGTE0",r,e),r.trim().replace(Mi[e.includePrerelease?Qi.GTE0PRE:Qi.GTE0],"")),wIe=r=>(e,t,i,n,s,o,a,l,c,u,g,f,h)=>(Xi(i)?t="":Xi(n)?t=`>=${i}.0.0${r?"-0":""}`:Xi(s)?t=`>=${i}.${n}.0${r?"-0":""}`:o?t=`>=${t}`:t=`>=${t}${r?"-0":""}`,Xi(c)?l="":Xi(u)?l=`<${+c+1}.0.0-0`:Xi(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:r?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${t} ${l}`.trim()),BIe=(r,e,t)=>{for(let i=0;i0){let n=r[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Gd=y((Pet,oj)=>{var Yd=Symbol("SemVer ANY"),ff=class{static get ANY(){return Yd}constructor(e,t){if(t=bIe(t),e instanceof ff){if(e.loose===!!t.loose)return e;e=e.value}px("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===Yd?this.value="":this.value=this.operator+this.semver.version,px("comp",this)}parse(e){let t=this.options.loose?rj[ij.COMPARATORLOOSE]:rj[ij.COMPARATOR],i=e.match(t);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new nj(i[2],this.options.loose):this.semver=Yd}toString(){return this.value}test(e){if(px("Comparator.test",e,this.options.loose),this.semver===Yd||e===Yd)return!0;if(typeof e=="string")try{e=new nj(e,this.options)}catch{return!1}return hx(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof ff))throw new TypeError("a Comparator is required");if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new sj(e.value,t).test(this.value);if(e.operator==="")return e.value===""?!0:new sj(this.value,t).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=hx(this.semver,"<",e.semver,t)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=hx(this.semver,">",e.semver,t)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};oj.exports=ff;var bIe=Ld(),{re:rj,t:ij}=Sc(),hx=Ax(),px=Td(),nj=Oi(),sj=as()});var jd=y((Det,aj)=>{var QIe=as(),SIe=(r,e,t)=>{try{e=new QIe(e,t)}catch{return!1}return e.test(r)};aj.exports=SIe});var lj=y((ket,Aj)=>{var vIe=as(),xIe=(r,e)=>new vIe(r,e).set.map(t=>t.map(i=>i.value).join(" ").trim().split(" "));Aj.exports=xIe});var uj=y((Ret,cj)=>{var PIe=Oi(),DIe=as(),kIe=(r,e,t)=>{let i=null,n=null,s=null;try{s=new DIe(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new PIe(i,t))}),i};cj.exports=kIe});var fj=y((Fet,gj)=>{var RIe=Oi(),FIe=as(),NIe=(r,e,t)=>{let i=null,n=null,s=null;try{s=new FIe(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new RIe(i,t))}),i};gj.exports=NIe});var dj=y((Net,pj)=>{var dx=Oi(),TIe=as(),hj=Md(),LIe=(r,e)=>{r=new TIe(r,e);let t=new dx("0.0.0");if(r.test(t)||(t=new dx("0.0.0-0"),r.test(t)))return t;t=null;for(let i=0;i{let a=new dx(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||hj(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!t||hj(t,s))&&(t=s)}return t&&r.test(t)?t:null};pj.exports=LIe});var mj=y((Tet,Cj)=>{var OIe=as(),MIe=(r,e)=>{try{return new OIe(r,e).range||"*"}catch{return null}};Cj.exports=MIe});var Qy=y((Let,wj)=>{var UIe=Oi(),yj=Gd(),{ANY:KIe}=yj,HIe=as(),GIe=jd(),Ej=Md(),Ij=Ey(),YIe=yy(),jIe=Iy(),qIe=(r,e,t,i)=>{r=new UIe(r,i),e=new HIe(e,i);let n,s,o,a,l;switch(t){case">":n=Ej,s=YIe,o=Ij,a=">",l=">=";break;case"<":n=Ij,s=jIe,o=Ej,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(GIe(r,e,i))return!1;for(let c=0;c{h.semver===KIe&&(h=new yj(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(r,f.semver))return!1;if(f.operator===l&&o(r,f.semver))return!1}return!0};wj.exports=qIe});var bj=y((Oet,Bj)=>{var JIe=Qy(),WIe=(r,e,t)=>JIe(r,e,">",t);Bj.exports=WIe});var Sj=y((Met,Qj)=>{var zIe=Qy(),VIe=(r,e,t)=>zIe(r,e,"<",t);Qj.exports=VIe});var Pj=y((Uet,xj)=>{var vj=as(),XIe=(r,e,t)=>(r=new vj(r,t),e=new vj(e,t),r.intersects(e));xj.exports=XIe});var kj=y((Ket,Dj)=>{var _Ie=jd(),ZIe=os();Dj.exports=(r,e,t)=>{let i=[],n=null,s=null,o=r.sort((u,g)=>ZIe(u,g,t));for(let u of o)_Ie(u,e,t)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var Rj=as(),Sy=Gd(),{ANY:Cx}=Sy,qd=jd(),mx=os(),$Ie=(r,e,t={})=>{if(r===e)return!0;r=new Rj(r,t),e=new Rj(e,t);let i=!1;e:for(let n of r.set){for(let s of e.set){let o=eye(n,s,t);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},eye=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===Cx){if(e.length===1&&e[0].semver===Cx)return!0;t.includePrerelease?r=[new Sy(">=0.0.0-0")]:r=[new Sy(">=0.0.0")]}if(e.length===1&&e[0].semver===Cx){if(t.includePrerelease)return!0;e=[new Sy(">=0.0.0")]}let i=new Set,n,s;for(let h of r)h.operator===">"||h.operator===">="?n=Fj(n,h,t):h.operator==="<"||h.operator==="<="?s=Nj(s,h,t):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=mx(n.semver,s.semver,t),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!qd(h,String(n),t)||s&&!qd(h,String(s),t))return null;for(let p of e)if(!qd(h,String(p),t))return!1;return!0}let a,l,c,u,g=s&&!t.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=Fj(n,h,t),a===h&&a!==n)return!1}else if(n.operator===">="&&!qd(n.semver,String(h),t))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=Nj(s,h,t),l===h&&l!==s)return!1}else if(s.operator==="<="&&!qd(s.semver,String(h),t))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},Fj=(r,e,t)=>{if(!r)return e;let i=mx(r.semver,e.semver,t);return i>0?r:i<0||e.operator===">"&&r.operator===">="?e:r},Nj=(r,e,t)=>{if(!r)return e;let i=mx(r.semver,e.semver,t);return i<0?r:i>0||e.operator==="<"&&r.operator==="<="?e:r};Tj.exports=$Ie});var $r=y((Get,Oj)=>{var Ex=Sc();Oj.exports={re:Ex.re,src:Ex.src,tokens:Ex.t,SEMVER_SPEC_VERSION:Nd().SEMVER_SPEC_VERSION,SemVer:Oi(),compareIdentifiers:hy().compareIdentifiers,rcompareIdentifiers:hy().rcompareIdentifiers,parse:vc(),valid:aY(),clean:lY(),inc:uY(),diff:CY(),major:EY(),minor:yY(),patch:BY(),prerelease:QY(),compare:os(),rcompare:vY(),compareLoose:PY(),compareBuild:my(),sort:FY(),rsort:TY(),gt:Md(),lt:Ey(),eq:Cy(),neq:ax(),gte:Iy(),lte:yy(),cmp:Ax(),coerce:YY(),Comparator:Gd(),Range:as(),satisfies:jd(),toComparators:lj(),maxSatisfying:uj(),minSatisfying:fj(),minVersion:dj(),validRange:mj(),outside:Qy(),gtr:bj(),ltr:Sj(),intersects:Pj(),simplifyRange:kj(),subset:Lj()}});var Ix=y(vy=>{"use strict";Object.defineProperty(vy,"__esModule",{value:!0});vy.VERSION=void 0;vy.VERSION="9.1.0"});var Gt=y((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(r,e,t){if(t||arguments.length===2)for(var i=0,n=e.length,s;i{(function(r,e){typeof define=="function"&&define.amd?define([],e):typeof xy=="object"&&xy.exports?xy.exports=e():r.regexpToAst=e()})(typeof self<"u"?self:Mj,function(){function r(){}r.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},r.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},r.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var C=this.disjunction();this.consumeChar("/");for(var w={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(w,"global");break;case"i":o(w,"ignoreCase");break;case"m":o(w,"multiLine");break;case"u":o(w,"unicode");break;case"y":o(w,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:w,value:C,loc:this.loc(0)}},r.prototype.disjunction=function(){var p=[],C=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(C)}},r.prototype.alternative=function(){for(var p=[],C=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(C)}},r.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},r.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var C;switch(this.popChar()){case"=":C="Lookahead";break;case"!":C="NegativeLookahead";break}a(C);var w=this.disjunction();return this.consumeChar(")"),{type:C,value:w,loc:this.loc(p)}}l()},r.prototype.quantifier=function(p){var C,w=this.idx;switch(this.popChar()){case"*":C={atLeast:0,atMost:1/0};break;case"+":C={atLeast:1,atMost:1/0};break;case"?":C={atLeast:0,atMost:1};break;case"{":var B=this.integerIncludingZero();switch(this.popChar()){case"}":C={atLeast:B,atMost:B};break;case",":var v;this.isDigit()?(v=this.integerIncludingZero(),C={atLeast:B,atMost:v}):C={atLeast:B,atMost:1/0},this.consumeChar("}");break}if(p===!0&&C===void 0)return;a(C);break}if(!(p===!0&&C===void 0))return a(C),this.peekChar(0)==="?"?(this.consumeChar("?"),C.greedy=!1):C.greedy=!0,C.type="Quantifier",C.loc=this.loc(w),C},r.prototype.atom=function(){var p,C=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(C),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},r.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` +`),n("\r"),n("\u2028"),n("\u2029")]}},r.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},r.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},r.prototype.characterClassEscape=function(){var p,C=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,C=!0;break;case"s":p=f;break;case"S":p=f,C=!0;break;case"w":p=g;break;case"W":p=g,C=!0;break}return a(p),{type:"Set",value:p,complement:C}},r.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` +`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},r.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var C=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:C}},r.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},r.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},r.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},r.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},r.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` +`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},r.prototype.characterClass=function(){var p=[],C=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),C=!0);this.isClassAtom();){var w=this.classAtom(),B=w.type==="Character";if(B&&this.isRangeDash()){this.consumeChar("-");var v=this.classAtom(),D=v.type==="Character";if(D){if(v.value=this.input.length)throw Error("Unexpected end of input");this.idx++},r.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,t=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,C){p.length!==void 0?p.forEach(function(w){C.push(w)}):C.push(p)}function o(p,C){if(p[C]===!0)throw"duplicate flag "+C;p[C]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` +`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var C in p){var w=p[C];p.hasOwnProperty(C)&&(w.type!==void 0?this.visit(w):Array.isArray(w)&&w.forEach(function(B){this.visit(B)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:r,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var ky=y(hf=>{"use strict";Object.defineProperty(hf,"__esModule",{value:!0});hf.clearRegExpParserCache=hf.getRegExpAst=void 0;var tye=Py(),Dy={},rye=new tye.RegExpParser;function iye(r){var e=r.toString();if(Dy.hasOwnProperty(e))return Dy[e];var t=rye.pattern(e);return Dy[e]=t,t}hf.getRegExpAst=iye;function nye(){Dy={}}hf.clearRegExpParserCache=nye});var Yj=y(dn=>{"use strict";var sye=dn&&dn.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(dn,"__esModule",{value:!0});dn.canMatchCharCode=dn.firstCharOptimizedIndices=dn.getOptimizedStartCodesIndices=dn.failedOptimizationPrefixMsg=void 0;var Kj=Py(),As=Gt(),Hj=ky(),Da=wx(),Gj="Complement Sets are not supported for first char optimization";dn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: +`;function oye(r,e){e===void 0&&(e=!1);try{var t=(0,Hj.getRegExpAst)(r),i=Fy(t.value,{},t.flags.ignoreCase);return i}catch(s){if(s.message===Gj)e&&(0,As.PRINT_WARNING)(""+dn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+r.toString()+` > +`)+` Complement Sets cannot be automatically optimized. + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,As.PRINT_ERROR)(dn.failedOptimizationPrefixMsg+` +`+(" Failed parsing: < "+r.toString()+` > +`)+(" Using the regexp-to-ast library version: "+Kj.VERSION+` +`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}dn.getOptimizedStartCodesIndices=oye;function Fy(r,e,t){switch(r.type){case"Disjunction":for(var i=0;i=Da.minOptimizationVal)for(var f=u.from>=Da.minOptimizationVal?u.from:Da.minOptimizationVal,h=u.to,p=(0,Da.charCodeToOptimizedIndex)(f),C=(0,Da.charCodeToOptimizedIndex)(h),w=p;w<=C;w++)e[w]=w}}});break;case"Group":Fy(o.value,e,t);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&yx(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,As.values)(e)}dn.firstCharOptimizedIndices=Fy;function Ry(r,e,t){var i=(0,Da.charCodeToOptimizedIndex)(r);e[i]=i,t===!0&&aye(r,e)}function aye(r,e){var t=String.fromCharCode(r),i=t.toUpperCase();if(i!==t){var n=(0,Da.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=t.toLowerCase();if(s!==t){var n=(0,Da.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function Uj(r,e){return(0,As.find)(r.value,function(t){if(typeof t=="number")return(0,As.contains)(e,t);var i=t;return(0,As.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function yx(r){return r.quantifier&&r.quantifier.atLeast===0?!0:r.value?(0,As.isArray)(r.value)?(0,As.every)(r.value,yx):yx(r.value):!1}var Aye=function(r){sye(e,r);function e(t){var i=r.call(this)||this;return i.targetCharCodes=t,i.found=!1,i}return e.prototype.visitChildren=function(t){if(this.found!==!0){switch(t.type){case"Lookahead":this.visitLookahead(t);return;case"NegativeLookahead":this.visitNegativeLookahead(t);return}r.prototype.visitChildren.call(this,t)}},e.prototype.visitCharacter=function(t){(0,As.contains)(this.targetCharCodes,t.value)&&(this.found=!0)},e.prototype.visitSet=function(t){t.complement?Uj(t,this.targetCharCodes)===void 0&&(this.found=!0):Uj(t,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(Kj.BaseRegExpVisitor);function lye(r,e){if(e instanceof RegExp){var t=(0,Hj.getRegExpAst)(e),i=new Aye(r);return i.visit(t),i.found}else return(0,As.find)(e,function(n){return(0,As.contains)(r,n.charCodeAt(0))})!==void 0}dn.canMatchCharCode=lye});var wx=y(Je=>{"use strict";var jj=Je&&Je.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Je,"__esModule",{value:!0});Je.charCodeToOptimizedIndex=Je.minOptimizationVal=Je.buildLineBreakIssueMessage=Je.LineTerminatorOptimizedTester=Je.isShortPattern=Je.isCustomPattern=Je.cloneEmptyGroups=Je.performWarningRuntimeChecks=Je.performRuntimeChecks=Je.addStickyFlag=Je.addStartOfInput=Je.findUnreachablePatterns=Je.findModesThatDoNotExist=Je.findInvalidGroupType=Je.findDuplicatePatterns=Je.findUnsupportedFlags=Je.findStartOfInputAnchor=Je.findEmptyMatchRegExps=Je.findEndOfInputAnchor=Je.findInvalidPatterns=Je.findMissingPatterns=Je.validatePatterns=Je.analyzeTokenTypes=Je.enableSticky=Je.disableSticky=Je.SUPPORT_STICKY=Je.MODES=Je.DEFAULT_MODE=void 0;var qj=Py(),ir=Jd(),Se=Gt(),pf=Yj(),Jj=ky(),Do="PATTERN";Je.DEFAULT_MODE="defaultMode";Je.MODES="modes";Je.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function cye(){Je.SUPPORT_STICKY=!1}Je.disableSticky=cye;function uye(){Je.SUPPORT_STICKY=!0}Je.enableSticky=uye;function gye(r,e){e=(0,Se.defaults)(e,{useSticky:Je.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:function(v,D){return D()}});var t=e.tracer;t("initCharCodeToOptimizedIndexMap",function(){wye()});var i;t("Reject Lexer.NA",function(){i=(0,Se.reject)(r,function(v){return v[Do]===ir.Lexer.NA})});var n=!1,s;t("Transform Patterns",function(){n=!1,s=(0,Se.map)(i,function(v){var D=v[Do];if((0,Se.isRegExp)(D)){var T=D.source;return T.length===1&&T!=="^"&&T!=="$"&&T!=="."&&!D.ignoreCase?T:T.length===2&&T[0]==="\\"&&!(0,Se.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],T[1])?T[1]:e.useSticky?Qx(D):bx(D)}else{if((0,Se.isFunction)(D))return n=!0,{exec:D};if((0,Se.has)(D,"exec"))return n=!0,D;if(typeof D=="string"){if(D.length===1)return D;var H=D.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),j=new RegExp(H);return e.useSticky?Qx(j):bx(j)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;t("misc mapping",function(){o=(0,Se.map)(i,function(v){return v.tokenTypeIdx}),a=(0,Se.map)(i,function(v){var D=v.GROUP;if(D!==ir.Lexer.SKIPPED){if((0,Se.isString)(D))return D;if((0,Se.isUndefined)(D))return!1;throw Error("non exhaustive match")}}),l=(0,Se.map)(i,function(v){var D=v.LONGER_ALT;if(D){var T=(0,Se.isArray)(D)?(0,Se.map)(D,function(H){return(0,Se.indexOf)(i,H)}):[(0,Se.indexOf)(i,D)];return T}}),c=(0,Se.map)(i,function(v){return v.PUSH_MODE}),u=(0,Se.map)(i,function(v){return(0,Se.has)(v,"POP_MODE")})});var g;t("Line Terminator Handling",function(){var v=oq(e.lineTerminatorCharacters);g=(0,Se.map)(i,function(D){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,Se.map)(i,function(D){if((0,Se.has)(D,"LINE_BREAKS"))return D.LINE_BREAKS;if(nq(D,v)===!1)return(0,pf.canMatchCharCode)(v,D.PATTERN)}))});var f,h,p,C;t("Misc Mapping #2",function(){f=(0,Se.map)(i,vx),h=(0,Se.map)(s,iq),p=(0,Se.reduce)(i,function(v,D){var T=D.GROUP;return(0,Se.isString)(T)&&T!==ir.Lexer.SKIPPED&&(v[T]=[]),v},{}),C=(0,Se.map)(s,function(v,D){return{pattern:s[D],longerAlt:l[D],canLineTerminator:g[D],isCustom:f[D],short:h[D],group:a[D],push:c[D],pop:u[D],tokenTypeIdx:o[D],tokenType:i[D]}})});var w=!0,B=[];return e.safeMode||t("First Char Optimization",function(){B=(0,Se.reduce)(i,function(v,D,T){if(typeof D.PATTERN=="string"){var H=D.PATTERN.charCodeAt(0),j=Sx(H);Bx(v,j,C[T])}else if((0,Se.isArray)(D.START_CHARS_HINT)){var $;(0,Se.forEach)(D.START_CHARS_HINT,function(W){var Z=typeof W=="string"?W.charCodeAt(0):W,A=Sx(Z);$!==A&&($=A,Bx(v,A,C[T]))})}else if((0,Se.isRegExp)(D.PATTERN))if(D.PATTERN.unicode)w=!1,e.ensureOptimizations&&(0,Se.PRINT_ERROR)(""+pf.failedOptimizationPrefixMsg+(" Unable to analyze < "+D.PATTERN.toString()+` > pattern. +`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var V=(0,pf.getOptimizedStartCodesIndices)(D.PATTERN,e.ensureOptimizations);(0,Se.isEmpty)(V)&&(w=!1),(0,Se.forEach)(V,function(W){Bx(v,W,C[T])})}else e.ensureOptimizations&&(0,Se.PRINT_ERROR)(""+pf.failedOptimizationPrefixMsg+(" TokenType: <"+D.name+`> is using a custom token pattern without providing parameter. +`)+` This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),w=!1;return v},[])}),t("ArrayPacking",function(){B=(0,Se.packArray)(B)}),{emptyGroups:p,patternIdxToConfig:C,charCodeToPatternIdxToConfig:B,hasCustom:n,canBeOptimized:w}}Je.analyzeTokenTypes=gye;function fye(r,e){var t=[],i=Wj(r);t=t.concat(i.errors);var n=zj(i.valid),s=n.valid;return t=t.concat(n.errors),t=t.concat(hye(s)),t=t.concat(eq(s)),t=t.concat(tq(s,e)),t=t.concat(rq(s)),t}Je.validatePatterns=fye;function hye(r){var e=[],t=(0,Se.filter)(r,function(i){return(0,Se.isRegExp)(i[Do])});return e=e.concat(Vj(t)),e=e.concat(_j(t)),e=e.concat(Zj(t)),e=e.concat($j(t)),e=e.concat(Xj(t)),e}function Wj(r){var e=(0,Se.filter)(r,function(n){return!(0,Se.has)(n,Do)}),t=(0,Se.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:ir.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,Se.difference)(r,e);return{errors:t,valid:i}}Je.findMissingPatterns=Wj;function zj(r){var e=(0,Se.filter)(r,function(n){var s=n[Do];return!(0,Se.isRegExp)(s)&&!(0,Se.isFunction)(s)&&!(0,Se.has)(s,"exec")&&!(0,Se.isString)(s)}),t=(0,Se.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:ir.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,Se.difference)(r,e);return{errors:t,valid:i}}Je.findInvalidPatterns=zj;var pye=/[^\\][\$]/;function Vj(r){var e=function(n){jj(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(qj.BaseRegExpVisitor),t=(0,Se.filter)(r,function(n){var s=n[Do];try{var o=(0,Jj.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return pye.test(s.source)}}),i=(0,Se.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Je.findEndOfInputAnchor=Vj;function Xj(r){var e=(0,Se.filter)(r,function(i){var n=i[Do];return n.test("")}),t=(0,Se.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:ir.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return t}Je.findEmptyMatchRegExps=Xj;var dye=/[^\\[][\^]|^\^/;function _j(r){var e=function(n){jj(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(qj.BaseRegExpVisitor),t=(0,Se.filter)(r,function(n){var s=n[Do];try{var o=(0,Jj.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return dye.test(s.source)}}),i=(0,Se.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Je.findStartOfInputAnchor=_j;function Zj(r){var e=(0,Se.filter)(r,function(i){var n=i[Do];return n instanceof RegExp&&(n.multiline||n.global)}),t=(0,Se.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:ir.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return t}Je.findUnsupportedFlags=Zj;function $j(r){var e=[],t=(0,Se.map)(r,function(s){return(0,Se.reduce)(r,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,Se.contains)(e,a)&&a.PATTERN!==ir.Lexer.NA&&(e.push(a),o.push(a)),o},[])});t=(0,Se.compact)(t);var i=(0,Se.filter)(t,function(s){return s.length>1}),n=(0,Se.map)(i,function(s){var o=(0,Se.map)(s,function(l){return l.name}),a=(0,Se.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:ir.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}Je.findDuplicatePatterns=$j;function eq(r){var e=(0,Se.filter)(r,function(i){if(!(0,Se.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==ir.Lexer.SKIPPED&&n!==ir.Lexer.NA&&!(0,Se.isString)(n)}),t=(0,Se.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:ir.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return t}Je.findInvalidGroupType=eq;function tq(r,e){var t=(0,Se.filter)(r,function(n){return n.PUSH_MODE!==void 0&&!(0,Se.contains)(e,n.PUSH_MODE)}),i=(0,Se.map)(t,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:ir.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}Je.findModesThatDoNotExist=tq;function rq(r){var e=[],t=(0,Se.reduce)(r,function(i,n,s){var o=n.PATTERN;return o===ir.Lexer.NA||((0,Se.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,Se.isRegExp)(o)&&mye(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,Se.forEach)(r,function(i,n){(0,Se.forEach)(t,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:ir.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}Je.findUnreachablePatterns=rq;function Cye(r,e){if((0,Se.isRegExp)(e)){var t=e.exec(r);return t!==null&&t.index===0}else{if((0,Se.isFunction)(e))return e(r,0,[],{});if((0,Se.has)(e,"exec"))return e.exec(r,0,[],{});if(typeof e=="string")return e===r;throw Error("non exhaustive match")}}function mye(r){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,Se.find)(e,function(t){return r.source.indexOf(t)!==-1})===void 0}function bx(r){var e=r.ignoreCase?"i":"";return new RegExp("^(?:"+r.source+")",e)}Je.addStartOfInput=bx;function Qx(r){var e=r.ignoreCase?"iy":"y";return new RegExp(""+r.source,e)}Je.addStickyFlag=Qx;function Eye(r,e,t){var i=[];return(0,Se.has)(r,Je.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Je.DEFAULT_MODE+`> property in its definition +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,Se.has)(r,Je.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Je.MODES+`> property in its definition +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,Se.has)(r,Je.MODES)&&(0,Se.has)(r,Je.DEFAULT_MODE)&&!(0,Se.has)(r.modes,r.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+Je.DEFAULT_MODE+": <"+r.defaultMode+`>which does not exist +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,Se.has)(r,Je.MODES)&&(0,Se.forEach)(r.modes,function(n,s){(0,Se.forEach)(n,function(o,a){(0,Se.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> +`),type:ir.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}Je.performRuntimeChecks=Eye;function Iye(r,e,t){var i=[],n=!1,s=(0,Se.compact)((0,Se.flatten)((0,Se.mapValues)(r.modes,function(l){return l}))),o=(0,Se.reject)(s,function(l){return l[Do]===ir.Lexer.NA}),a=oq(t);return e&&(0,Se.forEach)(o,function(l){var c=nq(l,a);if(c!==!1){var u=sq(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,Se.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,pf.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. + This Lexer has been defined to track line and column information, + But none of the Token Types can be identified as matching a line terminator. + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS + for details.`,type:ir.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}Je.performWarningRuntimeChecks=Iye;function yye(r){var e={},t=(0,Se.keys)(r);return(0,Se.forEach)(t,function(i){var n=r[i];if((0,Se.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}Je.cloneEmptyGroups=yye;function vx(r){var e=r.PATTERN;if((0,Se.isRegExp)(e))return!1;if((0,Se.isFunction)(e))return!0;if((0,Se.has)(e,"exec"))return!0;if((0,Se.isString)(e))return!1;throw Error("non exhaustive match")}Je.isCustomPattern=vx;function iq(r){return(0,Se.isString)(r)&&r.length===1?r.charCodeAt(0):!1}Je.isShortPattern=iq;Je.LineTerminatorOptimizedTester={test:function(r){for(var e=r.length,t=this.lastIndex;t Token Type +`)+(" Root cause: "+e.errMsg+`. +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===ir.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. +`+(" The problem is in the <"+r.name+`> Token Type +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}Je.buildLineBreakIssueMessage=sq;function oq(r){var e=(0,Se.map)(r,function(t){return(0,Se.isString)(t)&&t.length>0?t.charCodeAt(0):t});return e}function Bx(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}Je.minOptimizationVal=256;var Ny=[];function Sx(r){return r255?255+~~(r/255):r}}});var df=y(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.isTokenType=Nt.hasExtendingTokensTypesMapProperty=Nt.hasExtendingTokensTypesProperty=Nt.hasCategoriesProperty=Nt.hasShortKeyProperty=Nt.singleAssignCategoriesToksMap=Nt.assignCategoriesMapProp=Nt.assignCategoriesTokensProp=Nt.assignTokenDefaultProps=Nt.expandCategories=Nt.augmentTokenTypes=Nt.tokenIdxToClass=Nt.tokenShortNameIdx=Nt.tokenStructuredMatcherNoCategories=Nt.tokenStructuredMatcher=void 0;var ei=Gt();function Bye(r,e){var t=r.tokenTypeIdx;return t===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[t]===!0}Nt.tokenStructuredMatcher=Bye;function bye(r,e){return r.tokenTypeIdx===e.tokenTypeIdx}Nt.tokenStructuredMatcherNoCategories=bye;Nt.tokenShortNameIdx=1;Nt.tokenIdxToClass={};function Qye(r){var e=aq(r);Aq(e),cq(e),lq(e),(0,ei.forEach)(e,function(t){t.isParent=t.categoryMatches.length>0})}Nt.augmentTokenTypes=Qye;function aq(r){for(var e=(0,ei.cloneArr)(r),t=r,i=!0;i;){t=(0,ei.compact)((0,ei.flatten)((0,ei.map)(t,function(s){return s.CATEGORIES})));var n=(0,ei.difference)(t,e);e=e.concat(n),(0,ei.isEmpty)(n)?i=!1:t=n}return e}Nt.expandCategories=aq;function Aq(r){(0,ei.forEach)(r,function(e){uq(e)||(Nt.tokenIdxToClass[Nt.tokenShortNameIdx]=e,e.tokenTypeIdx=Nt.tokenShortNameIdx++),xx(e)&&!(0,ei.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),xx(e)||(e.CATEGORIES=[]),gq(e)||(e.categoryMatches=[]),fq(e)||(e.categoryMatchesMap={})})}Nt.assignTokenDefaultProps=Aq;function lq(r){(0,ei.forEach)(r,function(e){e.categoryMatches=[],(0,ei.forEach)(e.categoryMatchesMap,function(t,i){e.categoryMatches.push(Nt.tokenIdxToClass[i].tokenTypeIdx)})})}Nt.assignCategoriesTokensProp=lq;function cq(r){(0,ei.forEach)(r,function(e){Px([],e)})}Nt.assignCategoriesMapProp=cq;function Px(r,e){(0,ei.forEach)(r,function(t){e.categoryMatchesMap[t.tokenTypeIdx]=!0}),(0,ei.forEach)(e.CATEGORIES,function(t){var i=r.concat(e);(0,ei.contains)(i,t)||Px(i,t)})}Nt.singleAssignCategoriesToksMap=Px;function uq(r){return(0,ei.has)(r,"tokenTypeIdx")}Nt.hasShortKeyProperty=uq;function xx(r){return(0,ei.has)(r,"CATEGORIES")}Nt.hasCategoriesProperty=xx;function gq(r){return(0,ei.has)(r,"categoryMatches")}Nt.hasExtendingTokensTypesProperty=gq;function fq(r){return(0,ei.has)(r,"categoryMatchesMap")}Nt.hasExtendingTokensTypesMapProperty=fq;function Sye(r){return(0,ei.has)(r,"tokenTypeIdx")}Nt.isTokenType=Sye});var Dx=y(Ty=>{"use strict";Object.defineProperty(Ty,"__esModule",{value:!0});Ty.defaultLexerErrorProvider=void 0;Ty.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(r){return"Unable to pop Lexer Mode after encountering Token ->"+r.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(r,e,t,i,n){return"unexpected character: ->"+r.charAt(e)+"<- at offset: "+e+","+(" skipped "+t+" characters.")}}});var Jd=y(Rc=>{"use strict";Object.defineProperty(Rc,"__esModule",{value:!0});Rc.Lexer=Rc.LexerDefinitionErrorType=void 0;var Vs=wx(),nr=Gt(),vye=df(),xye=Dx(),Pye=ky(),Dye;(function(r){r[r.MISSING_PATTERN=0]="MISSING_PATTERN",r[r.INVALID_PATTERN=1]="INVALID_PATTERN",r[r.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",r[r.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",r[r.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",r[r.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",r[r.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",r[r.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",r[r.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",r[r.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",r[r.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",r[r.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",r[r.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",r[r.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",r[r.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",r[r.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",r[r.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(Dye=Rc.LexerDefinitionErrorType||(Rc.LexerDefinitionErrorType={}));var Wd={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:xye.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(Wd);var kye=function(){function r(e,t){var i=this;if(t===void 0&&(t=Wd),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=(0,nr.merge)(Wd,t);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===Wd.lineTerminatorsPattern)i.config.lineTerminatorsPattern=Vs.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===Wd.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,nr.isArray)(e)?(s={modes:{}},s.modes[Vs.DEFAULT_MODE]=(0,nr.cloneArr)(e),s[Vs.DEFAULT_MODE]=Vs.DEFAULT_MODE):(o=!1,s=(0,nr.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Vs.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,Vs.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,nr.forEach)(s.modes,function(u,g){s.modes[g]=(0,nr.reject)(u,function(f){return(0,nr.isUndefined)(f)})});var a=(0,nr.keys)(s.modes);if((0,nr.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Vs.validatePatterns)(u,a))}),(0,nr.isEmpty)(i.lexerDefinitionErrors)){(0,vye.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,Vs.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,nr.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,nr.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,nr.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- +`);throw new Error(`Errors detected in definition of Lexer: +`+c)}(0,nr.forEach)(i.lexerDefinitionWarning,function(u){(0,nr.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(Vs.SUPPORT_STICKY?(i.chopInput=nr.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=nr.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=nr.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=nr.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=nr.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,nr.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(t.ensureOptimizations&&!(0,nr.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. + Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. + Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,Pye.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,nr.toFastProperties)(i)})})}return r.prototype.tokenize=function(e,t){if(t===void 0&&(t=this.defaultMode),!(0,nr.isEmpty)(this.lexerDefinitionErrors)){var i=(0,nr.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- +`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: +`+n)}var s=this.tokenizeInternal(e,t);return s},r.prototype.tokenizeInternal=function(e,t){var i=this,n,s,o,a,l,c,u,g,f,h,p,C,w,B,v,D,T=e,H=T.length,j=0,$=0,V=this.hasCustom?0:Math.floor(e.length/10),W=new Array(V),Z=[],A=this.trackStartLines?1:void 0,ae=this.trackStartLines?1:void 0,ge=(0,Vs.cloneEmptyGroups)(this.emptyGroups),_=this.trackStartLines,L=this.config.lineTerminatorsPattern,N=0,ue=[],we=[],Te=[],Pe=[];Object.freeze(Pe);var Le=void 0;function se(){return ue}function Ae(dr){var Bi=(0,Vs.charCodeToOptimizedIndex)(dr),_n=we[Bi];return _n===void 0?Pe:_n}var be=function(dr){if(Te.length===1&&dr.tokenType.PUSH_MODE===void 0){var Bi=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(dr);Z.push({offset:dr.startOffset,line:dr.startLine!==void 0?dr.startLine:void 0,column:dr.startColumn!==void 0?dr.startColumn:void 0,length:dr.image.length,message:Bi})}else{Te.pop();var _n=(0,nr.last)(Te);ue=i.patternIdxToConfig[_n],we=i.charCodeToPatternIdxToConfig[_n],N=ue.length;var pa=i.canModeBeOptimized[_n]&&i.config.safeMode===!1;we&&pa?Le=Ae:Le=se}};function fe(dr){Te.push(dr),we=this.charCodeToPatternIdxToConfig[dr],ue=this.patternIdxToConfig[dr],N=ue.length,N=ue.length;var Bi=this.canModeBeOptimized[dr]&&this.config.safeMode===!1;we&&Bi?Le=Ae:Le=se}fe.call(this,t);for(var le;jc.length){c=a,u=g,le=tt;break}}}break}}if(c!==null){if(f=c.length,h=le.group,h!==void 0&&(p=le.tokenTypeIdx,C=this.createTokenInstance(c,j,p,le.tokenType,A,ae,f),this.handlePayload(C,u),h===!1?$=this.addToken(W,$,C):ge[h].push(C)),e=this.chopInput(e,f),j=j+f,ae=this.computeNewColumn(ae,f),_===!0&&le.canLineTerminator===!0){var It=0,Ur=void 0,oi=void 0;L.lastIndex=0;do Ur=L.test(c),Ur===!0&&(oi=L.lastIndex-1,It++);while(Ur===!0);It!==0&&(A=A+It,ae=f-oi,this.updateTokenEndLineColumnLocation(C,h,oi,It,A,ae,f))}this.handleModes(le,be,fe,C)}else{for(var pi=j,pr=A,di=ae,ai=!1;!ai&&j <"+e+">");var n=(0,nr.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",r.NA=/NOT_APPLICABLE/,r}();Rc.Lexer=kye});var HA=y(Si=>{"use strict";Object.defineProperty(Si,"__esModule",{value:!0});Si.tokenMatcher=Si.createTokenInstance=Si.EOF=Si.createToken=Si.hasTokenLabel=Si.tokenName=Si.tokenLabel=void 0;var Xs=Gt(),Rye=Jd(),kx=df();function Fye(r){return wq(r)?r.LABEL:r.name}Si.tokenLabel=Fye;function Nye(r){return r.name}Si.tokenName=Nye;function wq(r){return(0,Xs.isString)(r.LABEL)&&r.LABEL!==""}Si.hasTokenLabel=wq;var Tye="parent",hq="categories",pq="label",dq="group",Cq="push_mode",mq="pop_mode",Eq="longer_alt",Iq="line_breaks",yq="start_chars_hint";function Bq(r){return Lye(r)}Si.createToken=Bq;function Lye(r){var e=r.pattern,t={};if(t.name=r.name,(0,Xs.isUndefined)(e)||(t.PATTERN=e),(0,Xs.has)(r,Tye))throw`The parent property is no longer supported. +See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,Xs.has)(r,hq)&&(t.CATEGORIES=r[hq]),(0,kx.augmentTokenTypes)([t]),(0,Xs.has)(r,pq)&&(t.LABEL=r[pq]),(0,Xs.has)(r,dq)&&(t.GROUP=r[dq]),(0,Xs.has)(r,mq)&&(t.POP_MODE=r[mq]),(0,Xs.has)(r,Cq)&&(t.PUSH_MODE=r[Cq]),(0,Xs.has)(r,Eq)&&(t.LONGER_ALT=r[Eq]),(0,Xs.has)(r,Iq)&&(t.LINE_BREAKS=r[Iq]),(0,Xs.has)(r,yq)&&(t.START_CHARS_HINT=r[yq]),t}Si.EOF=Bq({name:"EOF",pattern:Rye.Lexer.NA});(0,kx.augmentTokenTypes)([Si.EOF]);function Oye(r,e,t,i,n,s,o,a){return{image:e,startOffset:t,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:r.tokenTypeIdx,tokenType:r}}Si.createTokenInstance=Oye;function Mye(r,e){return(0,kx.tokenStructuredMatcher)(r,e)}Si.tokenMatcher=Mye});var Cn=y(Wt=>{"use strict";var ka=Wt&&Wt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Wt,"__esModule",{value:!0});Wt.serializeProduction=Wt.serializeGrammar=Wt.Terminal=Wt.Alternation=Wt.RepetitionWithSeparator=Wt.Repetition=Wt.RepetitionMandatoryWithSeparator=Wt.RepetitionMandatory=Wt.Option=Wt.Alternative=Wt.Rule=Wt.NonTerminal=Wt.AbstractProduction=void 0;var lr=Gt(),Uye=HA(),ko=function(){function r(e){this._definition=e}return Object.defineProperty(r.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),r.prototype.accept=function(e){e.visit(this),(0,lr.forEach)(this.definition,function(t){t.accept(e)})},r}();Wt.AbstractProduction=ko;var bq=function(r){ka(e,r);function e(t){var i=r.call(this,[])||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(t){},enumerable:!1,configurable:!0}),e.prototype.accept=function(t){t.visit(this)},e}(ko);Wt.NonTerminal=bq;var Qq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.orgText="",(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.Rule=Qq;var Sq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.ignoreAmbiguities=!1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.Alternative=Sq;var vq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.Option=vq;var xq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.RepetitionMandatory=xq;var Pq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.RepetitionMandatoryWithSeparator=Pq;var Dq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.Repetition=Dq;var kq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.RepetitionWithSeparator=kq;var Rq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(t){this._definition=t},enumerable:!1,configurable:!0}),e}(ko);Wt.Alternation=Rq;var Ly=function(){function r(e){this.idx=1,(0,lr.assign)(this,(0,lr.pick)(e,function(t){return t!==void 0}))}return r.prototype.accept=function(e){e.visit(this)},r}();Wt.Terminal=Ly;function Kye(r){return(0,lr.map)(r,zd)}Wt.serializeGrammar=Kye;function zd(r){function e(s){return(0,lr.map)(s,zd)}if(r instanceof bq){var t={type:"NonTerminal",name:r.nonTerminalName,idx:r.idx};return(0,lr.isString)(r.label)&&(t.label=r.label),t}else{if(r instanceof Sq)return{type:"Alternative",definition:e(r.definition)};if(r instanceof vq)return{type:"Option",idx:r.idx,definition:e(r.definition)};if(r instanceof xq)return{type:"RepetitionMandatory",idx:r.idx,definition:e(r.definition)};if(r instanceof Pq)return{type:"RepetitionMandatoryWithSeparator",idx:r.idx,separator:zd(new Ly({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof kq)return{type:"RepetitionWithSeparator",idx:r.idx,separator:zd(new Ly({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof Dq)return{type:"Repetition",idx:r.idx,definition:e(r.definition)};if(r instanceof Rq)return{type:"Alternation",idx:r.idx,definition:e(r.definition)};if(r instanceof Ly){var i={type:"Terminal",name:r.terminalType.name,label:(0,Uye.tokenLabel)(r.terminalType),idx:r.idx};(0,lr.isString)(r.label)&&(i.terminalLabel=r.label);var n=r.terminalType.PATTERN;return r.terminalType.PATTERN&&(i.pattern=(0,lr.isRegExp)(n)?n.source:n),i}else{if(r instanceof Qq)return{type:"Rule",name:r.name,orgText:r.orgText,definition:e(r.definition)};throw Error("non exhaustive match")}}}Wt.serializeProduction=zd});var My=y(Oy=>{"use strict";Object.defineProperty(Oy,"__esModule",{value:!0});Oy.RestWalker=void 0;var Rx=Gt(),mn=Cn(),Hye=function(){function r(){}return r.prototype.walk=function(e,t){var i=this;t===void 0&&(t=[]),(0,Rx.forEach)(e.definition,function(n,s){var o=(0,Rx.drop)(e.definition,s+1);if(n instanceof mn.NonTerminal)i.walkProdRef(n,o,t);else if(n instanceof mn.Terminal)i.walkTerminal(n,o,t);else if(n instanceof mn.Alternative)i.walkFlat(n,o,t);else if(n instanceof mn.Option)i.walkOption(n,o,t);else if(n instanceof mn.RepetitionMandatory)i.walkAtLeastOne(n,o,t);else if(n instanceof mn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,t);else if(n instanceof mn.RepetitionWithSeparator)i.walkManySep(n,o,t);else if(n instanceof mn.Repetition)i.walkMany(n,o,t);else if(n instanceof mn.Alternation)i.walkOr(n,o,t);else throw Error("non exhaustive match")})},r.prototype.walkTerminal=function(e,t,i){},r.prototype.walkProdRef=function(e,t,i){},r.prototype.walkFlat=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkOption=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkAtLeastOne=function(e,t,i){var n=[new mn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkAtLeastOneSep=function(e,t,i){var n=Fq(e,t,i);this.walk(e,n)},r.prototype.walkMany=function(e,t,i){var n=[new mn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkManySep=function(e,t,i){var n=Fq(e,t,i);this.walk(e,n)},r.prototype.walkOr=function(e,t,i){var n=this,s=t.concat(i);(0,Rx.forEach)(e.definition,function(o){var a=new mn.Alternative({definition:[o]});n.walk(a,s)})},r}();Oy.RestWalker=Hye;function Fq(r,e,t){var i=[new mn.Option({definition:[new mn.Terminal({terminalType:r.separator})].concat(r.definition)})],n=i.concat(e,t);return n}});var Cf=y(Uy=>{"use strict";Object.defineProperty(Uy,"__esModule",{value:!0});Uy.GAstVisitor=void 0;var Ro=Cn(),Gye=function(){function r(){}return r.prototype.visit=function(e){var t=e;switch(t.constructor){case Ro.NonTerminal:return this.visitNonTerminal(t);case Ro.Alternative:return this.visitAlternative(t);case Ro.Option:return this.visitOption(t);case Ro.RepetitionMandatory:return this.visitRepetitionMandatory(t);case Ro.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(t);case Ro.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(t);case Ro.Repetition:return this.visitRepetition(t);case Ro.Alternation:return this.visitAlternation(t);case Ro.Terminal:return this.visitTerminal(t);case Ro.Rule:return this.visitRule(t);default:throw Error("non exhaustive match")}},r.prototype.visitNonTerminal=function(e){},r.prototype.visitAlternative=function(e){},r.prototype.visitOption=function(e){},r.prototype.visitRepetition=function(e){},r.prototype.visitRepetitionMandatory=function(e){},r.prototype.visitRepetitionMandatoryWithSeparator=function(e){},r.prototype.visitRepetitionWithSeparator=function(e){},r.prototype.visitAlternation=function(e){},r.prototype.visitTerminal=function(e){},r.prototype.visitRule=function(e){},r}();Uy.GAstVisitor=Gye});var Xd=y(Ui=>{"use strict";var Yye=Ui&&Ui.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Ui,"__esModule",{value:!0});Ui.collectMethods=Ui.DslMethodsCollectorVisitor=Ui.getProductionDslName=Ui.isBranchingProd=Ui.isOptionalProd=Ui.isSequenceProd=void 0;var Vd=Gt(),Qr=Cn(),jye=Cf();function qye(r){return r instanceof Qr.Alternative||r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionMandatory||r instanceof Qr.RepetitionMandatoryWithSeparator||r instanceof Qr.RepetitionWithSeparator||r instanceof Qr.Terminal||r instanceof Qr.Rule}Ui.isSequenceProd=qye;function Fx(r,e){e===void 0&&(e=[]);var t=r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionWithSeparator;return t?!0:r instanceof Qr.Alternation?(0,Vd.some)(r.definition,function(i){return Fx(i,e)}):r instanceof Qr.NonTerminal&&(0,Vd.contains)(e,r)?!1:r instanceof Qr.AbstractProduction?(r instanceof Qr.NonTerminal&&e.push(r),(0,Vd.every)(r.definition,function(i){return Fx(i,e)})):!1}Ui.isOptionalProd=Fx;function Jye(r){return r instanceof Qr.Alternation}Ui.isBranchingProd=Jye;function Wye(r){if(r instanceof Qr.NonTerminal)return"SUBRULE";if(r instanceof Qr.Option)return"OPTION";if(r instanceof Qr.Alternation)return"OR";if(r instanceof Qr.RepetitionMandatory)return"AT_LEAST_ONE";if(r instanceof Qr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(r instanceof Qr.RepetitionWithSeparator)return"MANY_SEP";if(r instanceof Qr.Repetition)return"MANY";if(r instanceof Qr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Ui.getProductionDslName=Wye;var Nq=function(r){Yye(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.separator="-",t.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},t}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(t){var i=t.terminalType.name+this.separator+"Terminal";(0,Vd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitNonTerminal=function(t){var i=t.nonTerminalName+this.separator+"Terminal";(0,Vd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitOption=function(t){this.dslMethods.option.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.dslMethods.repetitionWithSeparator.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.dslMethods.repetitionMandatory.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.dslMethods.repetitionMandatoryWithSeparator.push(t)},e.prototype.visitRepetition=function(t){this.dslMethods.repetition.push(t)},e.prototype.visitAlternation=function(t){this.dslMethods.alternation.push(t)},e}(jye.GAstVisitor);Ui.DslMethodsCollectorVisitor=Nq;var Ky=new Nq;function zye(r){Ky.reset(),r.accept(Ky);var e=Ky.dslMethods;return Ky.reset(),e}Ui.collectMethods=zye});var Tx=y(Fo=>{"use strict";Object.defineProperty(Fo,"__esModule",{value:!0});Fo.firstForTerminal=Fo.firstForBranching=Fo.firstForSequence=Fo.first=void 0;var Hy=Gt(),Tq=Cn(),Nx=Xd();function Gy(r){if(r instanceof Tq.NonTerminal)return Gy(r.referencedRule);if(r instanceof Tq.Terminal)return Mq(r);if((0,Nx.isSequenceProd)(r))return Lq(r);if((0,Nx.isBranchingProd)(r))return Oq(r);throw Error("non exhaustive match")}Fo.first=Gy;function Lq(r){for(var e=[],t=r.definition,i=0,n=t.length>i,s,o=!0;n&&o;)s=t[i],o=(0,Nx.isOptionalProd)(s),e=e.concat(Gy(s)),i=i+1,n=t.length>i;return(0,Hy.uniq)(e)}Fo.firstForSequence=Lq;function Oq(r){var e=(0,Hy.map)(r.definition,function(t){return Gy(t)});return(0,Hy.uniq)((0,Hy.flatten)(e))}Fo.firstForBranching=Oq;function Mq(r){return[r.terminalType]}Fo.firstForTerminal=Mq});var Lx=y(Yy=>{"use strict";Object.defineProperty(Yy,"__esModule",{value:!0});Yy.IN=void 0;Yy.IN="_~IN~_"});var Yq=y(ls=>{"use strict";var Vye=ls&&ls.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(ls,"__esModule",{value:!0});ls.buildInProdFollowPrefix=ls.buildBetweenProdsFollowPrefix=ls.computeAllProdsFollows=ls.ResyncFollowsWalker=void 0;var Xye=My(),_ye=Tx(),Uq=Gt(),Kq=Lx(),Zye=Cn(),Hq=function(r){Vye(e,r);function e(t){var i=r.call(this)||this;return i.topProd=t,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(t,i,n){},e.prototype.walkProdRef=function(t,i,n){var s=Gq(t.referencedRule,t.idx)+this.topProd.name,o=i.concat(n),a=new Zye.Alternative({definition:o}),l=(0,_ye.first)(a);this.follows[s]=l},e}(Xye.RestWalker);ls.ResyncFollowsWalker=Hq;function $ye(r){var e={};return(0,Uq.forEach)(r,function(t){var i=new Hq(t).startWalking();(0,Uq.assign)(e,i)}),e}ls.computeAllProdsFollows=$ye;function Gq(r,e){return r.name+e+Kq.IN}ls.buildBetweenProdsFollowPrefix=Gq;function ewe(r){var e=r.terminalType.name;return e+r.idx+Kq.IN}ls.buildInProdFollowPrefix=ewe});var _d=y(Ra=>{"use strict";Object.defineProperty(Ra,"__esModule",{value:!0});Ra.defaultGrammarValidatorErrorProvider=Ra.defaultGrammarResolverErrorProvider=Ra.defaultParserErrorProvider=void 0;var mf=HA(),twe=Gt(),_s=Gt(),Ox=Cn(),jq=Xd();Ra.defaultParserErrorProvider={buildMismatchTokenMessage:function(r){var e=r.expected,t=r.actual,i=r.previous,n=r.ruleName,s=(0,mf.hasTokenLabel)(e),o=s?"--> "+(0,mf.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+t.image+"' <--";return a},buildNotAllInputParsedMessage:function(r){var e=r.firstRedundant,t=r.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(r){var e=r.expectedPathsPerAlt,t=r.actual,i=r.previous,n=r.customUserDescription,s=r.ruleName,o="Expecting: ",a=(0,_s.first)(t).image,l=` +but found: '`+a+"'";if(n)return o+n+l;var c=(0,_s.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,_s.map)(c,function(h){return"["+(0,_s.map)(h,function(p){return(0,mf.tokenLabel)(p)}).join(", ")+"]"}),g=(0,_s.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: +`+g.join(` +`);return o+f+l},buildEarlyExitMessage:function(r){var e=r.expectedIterationPaths,t=r.actual,i=r.customUserDescription,n=r.ruleName,s="Expecting: ",o=(0,_s.first)(t).image,a=` +but found: '`+o+"'";if(i)return s+i+a;var l=(0,_s.map)(e,function(u){return"["+(0,_s.map)(u,function(g){return(0,mf.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: + `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(Ra.defaultParserErrorProvider);Ra.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(r,e){var t="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- +inside top level rule: ->`+r.name+"<-";return t}};Ra.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(r,e){function t(u){return u instanceof Ox.Terminal?u.terminalType.name:u instanceof Ox.NonTerminal?u.nonTerminalName:""}var i=r.name,n=(0,_s.first)(e),s=n.idx,o=(0,jq.getProductionDslName)(n),a=t(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` + appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. + For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES + `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` +`),c},buildNamespaceConflictError:function(r){var e=`Namespace conflict found in grammar. +`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+r.name+`>. +`)+`To resolve this make sure each Terminal and Non-Terminal names are unique +This is easy to accomplish by using the convention that Terminal names start with an uppercase letter +and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(r){var e=(0,_s.map)(r.prefixPath,function(n){return(0,mf.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous alternatives: <"+r.ambiguityIndices.join(" ,")+`> due to common lookahead prefix +`+("in inside <"+r.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX +For Further details.`;return i},buildAlternationAmbiguityError:function(r){var e=(0,_s.map)(r.prefixPath,function(n){return(0,mf.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous Alternatives Detected: <"+r.ambiguityIndices.join(" ,")+"> in "+(" inside <"+r.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,i},buildEmptyRepetitionError:function(r){var e=(0,jq.getProductionDslName)(r.repetition);r.repetition.idx!==0&&(e+=r.repetition.idx);var t="The repetition <"+e+"> within Rule <"+r.topLevelRule.name+`> can never consume any tokens. +This could lead to an infinite loop.`;return t},buildTokenNameError:function(r){return"deprecated"},buildEmptyAlternationError:function(r){var e="Ambiguous empty alternative: <"+(r.emptyChoiceIdx+1)+">"+(" in inside <"+r.topLevelRule.name+`> Rule. +`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(r){var e=`An Alternation cannot have more than 256 alternatives: +`+(" inside <"+r.topLevelRule.name+`> Rule. + has `+(r.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(r){var e=r.topLevelRule.name,t=twe.map(r.leftRecursionPath,function(s){return s.name}),i=e+" --> "+t.concat([e]).join(" --> "),n=`Left Recursion found in grammar. +`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) +`)+(`without consuming any Tokens. The grammar path that causes this is: + `+i+` +`)+` To fix this refactor your grammar to remove the left recursion. +see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(r){return"deprecated"},buildDuplicateRuleNameError:function(r){var e;r.topLevelRule instanceof Ox.Rule?e=r.topLevelRule.name:e=r.topLevelRule;var t="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+r.grammarName+"<-";return t}}});var Wq=y(GA=>{"use strict";var rwe=GA&&GA.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(GA,"__esModule",{value:!0});GA.GastRefResolverVisitor=GA.resolveGrammar=void 0;var iwe=Hn(),qq=Gt(),nwe=Cf();function swe(r,e){var t=new Jq(r,e);return t.resolveRefs(),t.errors}GA.resolveGrammar=swe;var Jq=function(r){rwe(e,r);function e(t,i){var n=r.call(this)||this;return n.nameToTopRule=t,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var t=this;(0,qq.forEach)((0,qq.values)(this.nameToTopRule),function(i){t.currTopLevel=i,i.accept(t)})},e.prototype.visitNonTerminal=function(t){var i=this.nameToTopRule[t.nonTerminalName];if(i)t.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,t);this.errors.push({message:n,type:iwe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:t.nonTerminalName})}},e}(nwe.GAstVisitor);GA.GastRefResolverVisitor=Jq});var $d=y(Lr=>{"use strict";var Fc=Lr&&Lr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Lr,"__esModule",{value:!0});Lr.nextPossibleTokensAfter=Lr.possiblePathsFrom=Lr.NextTerminalAfterAtLeastOneSepWalker=Lr.NextTerminalAfterAtLeastOneWalker=Lr.NextTerminalAfterManySepWalker=Lr.NextTerminalAfterManyWalker=Lr.AbstractNextTerminalAfterProductionWalker=Lr.NextAfterTokenWalker=Lr.AbstractNextPossibleTokensWalker=void 0;var zq=My(),Ut=Gt(),owe=Tx(),Dt=Cn(),Vq=function(r){Fc(e,r);function e(t,i){var n=r.call(this)||this;return n.topProd=t,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,Ut.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,Ut.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(t,i){i===void 0&&(i=[]),this.found||r.prototype.walk.call(this,t,i)},e.prototype.walkProdRef=function(t,i,n){if(t.referencedRule.name===this.nextProductionName&&t.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(t.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,Ut.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(zq.RestWalker);Lr.AbstractNextPossibleTokensWalker=Vq;var awe=function(r){Fc(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(t,i,n){if(this.isAtEndOfPath&&t.terminalType.name===this.nextTerminalName&&t.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new Dt.Alternative({definition:s});this.possibleTokTypes=(0,owe.first)(o),this.found=!0}},e}(Vq);Lr.NextAfterTokenWalker=awe;var Zd=function(r){Fc(e,r);function e(t,i){var n=r.call(this)||this;return n.topRule=t,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(zq.RestWalker);Lr.AbstractNextTerminalAfterProductionWalker=Zd;var Awe=function(r){Fc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkMany=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkMany.call(this,t,i,n)},e}(Zd);Lr.NextTerminalAfterManyWalker=Awe;var lwe=function(r){Fc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkManySep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkManySep.call(this,t,i,n)},e}(Zd);Lr.NextTerminalAfterManySepWalker=lwe;var cwe=function(r){Fc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOne.call(this,t,i,n)},e}(Zd);Lr.NextTerminalAfterAtLeastOneWalker=cwe;var uwe=function(r){Fc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOneSep.call(this,t,i,n)},e}(Zd);Lr.NextTerminalAfterAtLeastOneSepWalker=uwe;function Xq(r,e,t){t===void 0&&(t=[]),t=(0,Ut.cloneArr)(t);var i=[],n=0;function s(c){return c.concat((0,Ut.drop)(r,n+1))}function o(c){var u=Xq(s(c),e,t);return i.concat(u)}for(;t.length=0;ge--){var _=B.definition[ge],L={idx:p,def:_.definition.concat((0,Ut.drop)(h)),ruleStack:C,occurrenceStack:w};g.push(L),g.push(o)}else if(B instanceof Dt.Alternative)g.push({idx:p,def:B.definition.concat((0,Ut.drop)(h)),ruleStack:C,occurrenceStack:w});else if(B instanceof Dt.Rule)g.push(fwe(B,p,C,w));else throw Error("non exhaustive match")}}return u}Lr.nextPossibleTokensAfter=gwe;function fwe(r,e,t,i){var n=(0,Ut.cloneArr)(t);n.push(r.name);var s=(0,Ut.cloneArr)(i);return s.push(1),{idx:e,def:r.definition,ruleStack:n,occurrenceStack:s}}});var eC=y(_t=>{"use strict";var $q=_t&&_t.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(_t,"__esModule",{value:!0});_t.areTokenCategoriesNotUsed=_t.isStrictPrefixOfPath=_t.containsPath=_t.getLookaheadPathsForOptionalProd=_t.getLookaheadPathsForOr=_t.lookAheadSequenceFromAlternatives=_t.buildSingleAlternativeLookaheadFunction=_t.buildAlternativesLookAheadFunc=_t.buildLookaheadFuncForOptionalProd=_t.buildLookaheadFuncForOr=_t.getProdType=_t.PROD_TYPE=void 0;var sr=Gt(),_q=$d(),hwe=My(),jy=df(),YA=Cn(),pwe=Cf(),li;(function(r){r[r.OPTION=0]="OPTION",r[r.REPETITION=1]="REPETITION",r[r.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",r[r.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",r[r.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",r[r.ALTERNATION=5]="ALTERNATION"})(li=_t.PROD_TYPE||(_t.PROD_TYPE={}));function dwe(r){if(r instanceof YA.Option)return li.OPTION;if(r instanceof YA.Repetition)return li.REPETITION;if(r instanceof YA.RepetitionMandatory)return li.REPETITION_MANDATORY;if(r instanceof YA.RepetitionMandatoryWithSeparator)return li.REPETITION_MANDATORY_WITH_SEPARATOR;if(r instanceof YA.RepetitionWithSeparator)return li.REPETITION_WITH_SEPARATOR;if(r instanceof YA.Alternation)return li.ALTERNATION;throw Error("non exhaustive match")}_t.getProdType=dwe;function Cwe(r,e,t,i,n,s){var o=tJ(r,e,t),a=Kx(o)?jy.tokenStructuredMatcherNoCategories:jy.tokenStructuredMatcher;return s(o,i,a,n)}_t.buildLookaheadFuncForOr=Cwe;function mwe(r,e,t,i,n,s){var o=rJ(r,e,n,t),a=Kx(o)?jy.tokenStructuredMatcherNoCategories:jy.tokenStructuredMatcher;return s(o[0],a,i)}_t.buildLookaheadFuncForOptionalProd=mwe;function Ewe(r,e,t,i){var n=r.length,s=(0,sr.every)(r,function(l){return(0,sr.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,sr.map)(l,function(D){return D.GATE}),u=0;u{"use strict";var Hx=zt&&zt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(zt,"__esModule",{value:!0});zt.checkPrefixAlternativesAmbiguities=zt.validateSomeNonEmptyLookaheadPath=zt.validateTooManyAlts=zt.RepetionCollector=zt.validateAmbiguousAlternationAlternatives=zt.validateEmptyOrAlternative=zt.getFirstNoneTerminal=zt.validateNoLeftRecursion=zt.validateRuleIsOverridden=zt.validateRuleDoesNotAlreadyExist=zt.OccurrenceValidationCollector=zt.identifyProductionForDuplicates=zt.validateGrammar=void 0;var er=Gt(),Sr=Gt(),No=Hn(),Gx=Xd(),Ef=eC(),bwe=$d(),Zs=Cn(),Yx=Cf();function Qwe(r,e,t,i,n){var s=er.map(r,function(h){return Swe(h,i)}),o=er.map(r,function(h){return jx(h,h,i)}),a=[],l=[],c=[];(0,Sr.every)(o,Sr.isEmpty)&&(a=(0,Sr.map)(r,function(h){return AJ(h,i)}),l=(0,Sr.map)(r,function(h){return lJ(h,e,i)}),c=gJ(r,e,i));var u=Pwe(r,t,i),g=(0,Sr.map)(r,function(h){return uJ(h,i)}),f=(0,Sr.map)(r,function(h){return aJ(h,r,n,i)});return er.flatten(s.concat(c,o,a,l,u,g,f))}zt.validateGrammar=Qwe;function Swe(r,e){var t=new oJ;r.accept(t);var i=t.allProductions,n=er.groupBy(i,nJ),s=er.pick(n,function(a){return a.length>1}),o=er.map(er.values(s),function(a){var l=er.first(a),c=e.buildDuplicateFoundError(r,a),u=(0,Gx.getProductionDslName)(l),g={message:c,type:No.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:r.name,dslName:u,occurrence:l.idx},f=sJ(l);return f&&(g.parameter=f),g});return o}function nJ(r){return(0,Gx.getProductionDslName)(r)+"_#_"+r.idx+"_#_"+sJ(r)}zt.identifyProductionForDuplicates=nJ;function sJ(r){return r instanceof Zs.Terminal?r.terminalType.name:r instanceof Zs.NonTerminal?r.nonTerminalName:""}var oJ=function(r){Hx(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitNonTerminal=function(t){this.allProductions.push(t)},e.prototype.visitOption=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e.prototype.visitAlternation=function(t){this.allProductions.push(t)},e.prototype.visitTerminal=function(t){this.allProductions.push(t)},e}(Yx.GAstVisitor);zt.OccurrenceValidationCollector=oJ;function aJ(r,e,t,i){var n=[],s=(0,Sr.reduce)(e,function(a,l){return l.name===r.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:r,grammarName:t});n.push({message:o,type:No.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:r.name})}return n}zt.validateRuleDoesNotAlreadyExist=aJ;function vwe(r,e,t){var i=[],n;return er.contains(e,r)||(n="Invalid rule override, rule: ->"+r+"<- cannot be overridden in the grammar: ->"+t+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:No.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:r})),i}zt.validateRuleIsOverridden=vwe;function jx(r,e,t,i){i===void 0&&(i=[]);var n=[],s=tC(e.definition);if(er.isEmpty(s))return[];var o=r.name,a=er.contains(s,r);a&&n.push({message:t.buildLeftRecursionError({topLevelRule:r,leftRecursionPath:i}),type:No.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=er.difference(s,i.concat([r])),c=er.map(l,function(u){var g=er.cloneArr(i);return g.push(u),jx(r,u,t,g)});return n.concat(er.flatten(c))}zt.validateNoLeftRecursion=jx;function tC(r){var e=[];if(er.isEmpty(r))return e;var t=er.first(r);if(t instanceof Zs.NonTerminal)e.push(t.referencedRule);else if(t instanceof Zs.Alternative||t instanceof Zs.Option||t instanceof Zs.RepetitionMandatory||t instanceof Zs.RepetitionMandatoryWithSeparator||t instanceof Zs.RepetitionWithSeparator||t instanceof Zs.Repetition)e=e.concat(tC(t.definition));else if(t instanceof Zs.Alternation)e=er.flatten(er.map(t.definition,function(o){return tC(o.definition)}));else if(!(t instanceof Zs.Terminal))throw Error("non exhaustive match");var i=(0,Gx.isOptionalProd)(t),n=r.length>1;if(i&&n){var s=er.drop(r);return e.concat(tC(s))}else return e}zt.getFirstNoneTerminal=tC;var qx=function(r){Hx(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.alternations=[],t}return e.prototype.visitAlternation=function(t){this.alternations.push(t)},e}(Yx.GAstVisitor);function AJ(r,e){var t=new qx;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){var a=er.dropRight(o.definition),l=er.map(a,function(c,u){var g=(0,bwe.nextPossibleTokensAfter)([c],[],null,1);return er.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:r,alternation:o,emptyChoiceIdx:u}),type:No.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:r.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(er.compact(l))},[]);return n}zt.validateEmptyOrAlternative=AJ;function lJ(r,e,t){var i=new qx;r.accept(i);var n=i.alternations;n=(0,Sr.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=er.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,Ef.getLookaheadPathsForOr)(l,r,c,a),g=xwe(u,a,r,t),f=fJ(u,a,r,t);return o.concat(g,f)},[]);return s}zt.validateAmbiguousAlternationAlternatives=lJ;var cJ=function(r){Hx(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e}(Yx.GAstVisitor);zt.RepetionCollector=cJ;function uJ(r,e){var t=new qx;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:r,alternation:o}),type:No.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:r.name,occurrence:o.idx}),s},[]);return n}zt.validateTooManyAlts=uJ;function gJ(r,e,t){var i=[];return(0,Sr.forEach)(r,function(n){var s=new cJ;n.accept(s);var o=s.allProductions;(0,Sr.forEach)(o,function(a){var l=(0,Ef.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,Ef.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,Sr.isEmpty)((0,Sr.flatten)(f))){var h=t.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:No.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}zt.validateSomeNonEmptyLookaheadPath=gJ;function xwe(r,e,t,i){var n=[],s=(0,Sr.reduce)(r,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,Sr.forEach)(l,function(u){var g=[c];(0,Sr.forEach)(r,function(f,h){c!==h&&(0,Ef.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,Ef.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=er.map(s,function(a){var l=(0,Sr.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:t,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:No.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:t.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function fJ(r,e,t,i){var n=[],s=(0,Sr.reduce)(r,function(o,a,l){var c=(0,Sr.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,Sr.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,Sr.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(If,"__esModule",{value:!0});If.validateGrammar=If.resolveGrammar=void 0;var Wx=Gt(),Dwe=Wq(),kwe=Jx(),hJ=_d();function Rwe(r){r=(0,Wx.defaults)(r,{errMsgProvider:hJ.defaultGrammarResolverErrorProvider});var e={};return(0,Wx.forEach)(r.rules,function(t){e[t.name]=t}),(0,Dwe.resolveGrammar)(e,r.errMsgProvider)}If.resolveGrammar=Rwe;function Fwe(r){return r=(0,Wx.defaults)(r,{errMsgProvider:hJ.defaultGrammarValidatorErrorProvider}),(0,kwe.validateGrammar)(r.rules,r.maxLookahead,r.tokenTypes,r.errMsgProvider,r.grammarName)}If.validateGrammar=Fwe});var yf=y(En=>{"use strict";var rC=En&&En.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(En,"__esModule",{value:!0});En.EarlyExitException=En.NotAllInputParsedException=En.NoViableAltException=En.MismatchedTokenException=En.isRecognitionException=void 0;var Nwe=Gt(),dJ="MismatchedTokenException",CJ="NoViableAltException",mJ="EarlyExitException",EJ="NotAllInputParsedException",IJ=[dJ,CJ,mJ,EJ];Object.freeze(IJ);function Twe(r){return(0,Nwe.contains)(IJ,r.name)}En.isRecognitionException=Twe;var qy=function(r){rC(e,r);function e(t,i){var n=this.constructor,s=r.call(this,t)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),Lwe=function(r){rC(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=dJ,s}return e}(qy);En.MismatchedTokenException=Lwe;var Owe=function(r){rC(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=CJ,s}return e}(qy);En.NoViableAltException=Owe;var Mwe=function(r){rC(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.name=EJ,n}return e}(qy);En.NotAllInputParsedException=Mwe;var Uwe=function(r){rC(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=mJ,s}return e}(qy);En.EarlyExitException=Uwe});var Vx=y(Ki=>{"use strict";Object.defineProperty(Ki,"__esModule",{value:!0});Ki.attemptInRepetitionRecovery=Ki.Recoverable=Ki.InRuleRecoveryException=Ki.IN_RULE_RECOVERY_EXCEPTION=Ki.EOF_FOLLOW_KEY=void 0;var Jy=HA(),cs=Gt(),Kwe=yf(),Hwe=Lx(),Gwe=Hn();Ki.EOF_FOLLOW_KEY={};Ki.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function zx(r){this.name=Ki.IN_RULE_RECOVERY_EXCEPTION,this.message=r}Ki.InRuleRecoveryException=zx;zx.prototype=Error.prototype;var Ywe=function(){function r(){}return r.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,cs.has)(e,"recoveryEnabled")?e.recoveryEnabled:Gwe.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=yJ)},r.prototype.getTokenToInsert=function(e){var t=(0,Jy.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t},r.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},r.prototype.tryInRepetitionRecovery=function(e,t,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),C=new Kwe.MismatchedTokenException(p,u,s.LA(0));C.resyncedTokens=(0,cs.dropRight)(l),s.SAVE_ERROR(C)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,t);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},r.prototype.shouldInRepetitionRecoveryBeTried=function(e,t,i){return!(i===!1||e===void 0||t===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))},r.prototype.getFollowsForInRuleRecovery=function(e,t){var i=this.getCurrentGrammarPath(e,t),n=this.getNextPossibleTokenTypes(i);return n},r.prototype.tryInRuleRecovery=function(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new zx("sad sad panda")},r.prototype.canPerformInRuleRecovery=function(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)},r.prototype.canRecoverWithSingleTokenInsertion=function(e,t){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,cs.isEmpty)(t))return!1;var n=this.LA(1),s=(0,cs.find)(t,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},r.prototype.canRecoverWithSingleTokenDeletion=function(e){var t=this.tokenMatcher(this.LA(2),e);return t},r.prototype.isInCurrentRuleReSyncSet=function(e){var t=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(t);return(0,cs.contains)(i,e)},r.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),t=this.LA(1),i=2;;){var n=t.tokenType;if((0,cs.contains)(e,n))return n;t=this.LA(i),i++}},r.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return Ki.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(i)}},r.prototype.buildFullFollowKeyStack=function(){var e=this,t=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,cs.map)(t,function(n,s){return s===0?Ki.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(t[s-1])}})},r.prototype.flattenFollowSet=function(){var e=this,t=(0,cs.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,cs.flatten)(t)},r.prototype.getFollowSetFromFollowKey=function(e){if(e===Ki.EOF_FOLLOW_KEY)return[Jy.EOF];var t=e.ruleName+e.idxInCallingRule+Hwe.IN+e.inRule;return this.resyncFollows[t]},r.prototype.addToResyncTokens=function(e,t){return this.tokenMatcher(e,Jy.EOF)||t.push(e),t},r.prototype.reSyncTo=function(e){for(var t=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,t);return(0,cs.dropRight)(t)},r.prototype.attemptInRepetitionRecovery=function(e,t,i,n,s,o,a){},r.prototype.getCurrentGrammarPath=function(e,t){var i=this.getHumanReadableRuleStack(),n=(0,cs.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:t};return s},r.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,cs.map)(this.RULE_STACK,function(t){return e.shortRuleNameToFullName(t)})},r}();Ki.Recoverable=Ywe;function yJ(r,e,t,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=Jy.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(r,e,t,f)}Ki.attemptInRepetitionRecovery=yJ});var Wy=y(qt=>{"use strict";Object.defineProperty(qt,"__esModule",{value:!0});qt.getKeyForAutomaticLookahead=qt.AT_LEAST_ONE_SEP_IDX=qt.MANY_SEP_IDX=qt.AT_LEAST_ONE_IDX=qt.MANY_IDX=qt.OPTION_IDX=qt.OR_IDX=qt.BITS_FOR_ALT_IDX=qt.BITS_FOR_RULE_IDX=qt.BITS_FOR_OCCURRENCE_IDX=qt.BITS_FOR_METHOD_TYPE=void 0;qt.BITS_FOR_METHOD_TYPE=4;qt.BITS_FOR_OCCURRENCE_IDX=8;qt.BITS_FOR_RULE_IDX=12;qt.BITS_FOR_ALT_IDX=8;qt.OR_IDX=1<{"use strict";Object.defineProperty(zy,"__esModule",{value:!0});zy.LooksAhead=void 0;var Fa=eC(),$s=Gt(),wJ=Hn(),Na=Wy(),Nc=Xd(),qwe=function(){function r(){}return r.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,$s.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:wJ.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,$s.has)(e,"maxLookahead")?e.maxLookahead:wJ.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,$s.isES2015MapSupported)()?new Map:[],(0,$s.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},r.prototype.preComputeLookaheadFunctions=function(e){var t=this;(0,$s.forEach)(e,function(i){t.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,Nc.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,$s.forEach)(s,function(g){var f=g.idx===0?"":g.idx;t.TRACE_INIT(""+(0,Nc.getProductionDslName)(g)+f,function(){var h=(0,Fa.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||t.maxLookahead,g.hasPredicates,t.dynamicTokensEnabled,t.lookAheadBuilderForAlternatives),p=(0,Na.getKeyForAutomaticLookahead)(t.fullRuleNameToShort[i.name],Na.OR_IDX,g.idx);t.setLaFuncCache(p,h)})}),(0,$s.forEach)(o,function(g){t.computeLookaheadFunc(i,g.idx,Na.MANY_IDX,Fa.PROD_TYPE.REPETITION,g.maxLookahead,(0,Nc.getProductionDslName)(g))}),(0,$s.forEach)(a,function(g){t.computeLookaheadFunc(i,g.idx,Na.OPTION_IDX,Fa.PROD_TYPE.OPTION,g.maxLookahead,(0,Nc.getProductionDslName)(g))}),(0,$s.forEach)(l,function(g){t.computeLookaheadFunc(i,g.idx,Na.AT_LEAST_ONE_IDX,Fa.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,Nc.getProductionDslName)(g))}),(0,$s.forEach)(c,function(g){t.computeLookaheadFunc(i,g.idx,Na.AT_LEAST_ONE_SEP_IDX,Fa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,Nc.getProductionDslName)(g))}),(0,$s.forEach)(u,function(g){t.computeLookaheadFunc(i,g.idx,Na.MANY_SEP_IDX,Fa.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,Nc.getProductionDslName)(g))})})})},r.prototype.computeLookaheadFunc=function(e,t,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(t===0?"":t),function(){var l=(0,Fa.buildLookaheadFuncForOptionalProd)(t,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,Na.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,t);a.setLaFuncCache(c,l)})},r.prototype.lookAheadBuilderForOptional=function(e,t,i){return(0,Fa.buildSingleAlternativeLookaheadFunction)(e,t,i)},r.prototype.lookAheadBuilderForAlternatives=function(e,t,i,n){return(0,Fa.buildAlternativesLookAheadFunc)(e,t,i,n)},r.prototype.getKeyForAutomaticLookahead=function(e,t){var i=this.getLastExplicitRuleShortName();return(0,Na.getKeyForAutomaticLookahead)(i,e,t)},r.prototype.getLaFuncFromCache=function(e){},r.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},r.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},r.prototype.setLaFuncCache=function(e,t){},r.prototype.setLaFuncCacheUsingMap=function(e,t){this.lookAheadFuncsCache.set(e,t)},r.prototype.setLaFuncUsingObj=function(e,t){this.lookAheadFuncsCache[e]=t},r}();zy.LooksAhead=qwe});var bJ=y(To=>{"use strict";Object.defineProperty(To,"__esModule",{value:!0});To.addNoneTerminalToCst=To.addTerminalToCst=To.setNodeLocationFull=To.setNodeLocationOnlyOffset=void 0;function Jwe(r,e){isNaN(r.startOffset)===!0?(r.startOffset=e.startOffset,r.endOffset=e.endOffset):r.endOffset{"use strict";Object.defineProperty(jA,"__esModule",{value:!0});jA.defineNameProp=jA.functionName=jA.classNameFromInstance=void 0;var Xwe=Gt();function _we(r){return SJ(r.constructor)}jA.classNameFromInstance=_we;var QJ="name";function SJ(r){var e=r.name;return e||"anonymous"}jA.functionName=SJ;function Zwe(r,e){var t=Object.getOwnPropertyDescriptor(r,QJ);return(0,Xwe.isUndefined)(t)||t.configurable?(Object.defineProperty(r,QJ,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}jA.defineNameProp=Zwe});var kJ=y(vi=>{"use strict";Object.defineProperty(vi,"__esModule",{value:!0});vi.validateRedundantMethods=vi.validateMissingCstMethods=vi.validateVisitor=vi.CstVisitorDefinitionError=vi.createBaseVisitorConstructorWithDefaults=vi.createBaseSemanticVisitorConstructor=vi.defaultVisit=void 0;var us=Gt(),iC=Xx();function vJ(r,e){for(var t=(0,us.keys)(r),i=t.length,n=0;n: + `+(""+s.join(` + +`).replace(/\n/g,` + `)))}}};return t.prototype=i,t.prototype.constructor=t,t._RULE_NAMES=e,t}vi.createBaseSemanticVisitorConstructor=$we;function eBe(r,e,t){var i=function(){};(0,iC.defineNameProp)(i,r+"BaseSemanticsWithDefaults");var n=Object.create(t.prototype);return(0,us.forEach)(e,function(s){n[s]=vJ}),i.prototype=n,i.prototype.constructor=i,i}vi.createBaseVisitorConstructorWithDefaults=eBe;var _x;(function(r){r[r.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",r[r.MISSING_METHOD=1]="MISSING_METHOD"})(_x=vi.CstVisitorDefinitionError||(vi.CstVisitorDefinitionError={}));function xJ(r,e){var t=PJ(r,e),i=DJ(r,e);return t.concat(i)}vi.validateVisitor=xJ;function PJ(r,e){var t=(0,us.map)(e,function(i){if(!(0,us.isFunction)(r[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,iC.functionName)(r.constructor)+" CST Visitor.",type:_x.MISSING_METHOD,methodName:i}});return(0,us.compact)(t)}vi.validateMissingCstMethods=PJ;var tBe=["constructor","visit","validateVisitor"];function DJ(r,e){var t=[];for(var i in r)(0,us.isFunction)(r[i])&&!(0,us.contains)(tBe,i)&&!(0,us.contains)(e,i)&&t.push({msg:"Redundant visitor method: <"+i+"> on "+(0,iC.functionName)(r.constructor)+` CST Visitor +There is no Grammar Rule corresponding to this method's name. +`,type:_x.REDUNDANT_METHOD,methodName:i});return t}vi.validateRedundantMethods=DJ});var FJ=y(Vy=>{"use strict";Object.defineProperty(Vy,"__esModule",{value:!0});Vy.TreeBuilder=void 0;var wf=bJ(),ti=Gt(),RJ=kJ(),rBe=Hn(),iBe=function(){function r(){}return r.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,ti.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:rBe.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=ti.NOOP,this.cstFinallyStateUpdate=ti.NOOP,this.cstPostTerminal=ti.NOOP,this.cstPostNonTerminal=ti.NOOP,this.cstPostRule=ti.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=wf.setNodeLocationFull,this.setNodeLocationFromNode=wf.setNodeLocationFull,this.cstPostRule=ti.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=ti.NOOP,this.setNodeLocationFromNode=ti.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=wf.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=wf.setNodeLocationOnlyOffset,this.cstPostRule=ti.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=ti.NOOP,this.setNodeLocationFromNode=ti.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=ti.NOOP,this.setNodeLocationFromNode=ti.NOOP,this.cstPostRule=ti.NOOP,this.setInitialNodeLocation=ti.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},r.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},r.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},r.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.setInitialNodeLocationFullRegular=function(e){var t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.cstInvocationStateUpdate=function(e,t){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},r.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},r.prototype.cstPostRuleFull=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?(i.endOffset=t.endOffset,i.endLine=t.endLine,i.endColumn=t.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},r.prototype.cstPostRuleOnlyOffset=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?i.endOffset=t.endOffset:i.startOffset=NaN},r.prototype.cstPostTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,wf.addTerminalToCst)(i,t,e),this.setNodeLocationFromToken(i.location,t)},r.prototype.cstPostNonTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,wf.addNoneTerminalToCst)(i,t,e),this.setNodeLocationFromNode(i.location,e.location)},r.prototype.getBaseCstVisitorConstructor=function(){if((0,ti.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,RJ.createBaseSemanticVisitorConstructor)(this.className,(0,ti.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},r.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,ti.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,RJ.createBaseVisitorConstructorWithDefaults)(this.className,(0,ti.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},r.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},r.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},r.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},r}();Vy.TreeBuilder=iBe});var TJ=y(Xy=>{"use strict";Object.defineProperty(Xy,"__esModule",{value:!0});Xy.LexerAdapter=void 0;var NJ=Hn(),nBe=function(){function r(){}return r.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(r.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),r.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):NJ.END_OF_FILE},r.prototype.LA=function(e){var t=this.currIdx+e;return t<0||this.tokVectorLength<=t?NJ.END_OF_FILE:this.tokVector[t]},r.prototype.consumeToken=function(){this.currIdx++},r.prototype.exportLexerState=function(){return this.currIdx},r.prototype.importLexerState=function(e){this.currIdx=e},r.prototype.resetLexerState=function(){this.currIdx=-1},r.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},r.prototype.getLexerPosition=function(){return this.exportLexerState()},r}();Xy.LexerAdapter=nBe});var OJ=y(_y=>{"use strict";Object.defineProperty(_y,"__esModule",{value:!0});_y.RecognizerApi=void 0;var LJ=Gt(),sBe=yf(),Zx=Hn(),oBe=_d(),aBe=Jx(),ABe=Cn(),lBe=function(){function r(){}return r.prototype.ACTION=function(e){return e.call(this)},r.prototype.consume=function(e,t,i){return this.consumeInternal(t,e,i)},r.prototype.subrule=function(e,t,i){return this.subruleInternal(t,e,i)},r.prototype.option=function(e,t){return this.optionInternal(t,e)},r.prototype.or=function(e,t){return this.orInternal(t,e)},r.prototype.many=function(e,t){return this.manyInternal(e,t)},r.prototype.atLeastOne=function(e,t){return this.atLeastOneInternal(e,t)},r.prototype.CONSUME=function(e,t){return this.consumeInternal(e,0,t)},r.prototype.CONSUME1=function(e,t){return this.consumeInternal(e,1,t)},r.prototype.CONSUME2=function(e,t){return this.consumeInternal(e,2,t)},r.prototype.CONSUME3=function(e,t){return this.consumeInternal(e,3,t)},r.prototype.CONSUME4=function(e,t){return this.consumeInternal(e,4,t)},r.prototype.CONSUME5=function(e,t){return this.consumeInternal(e,5,t)},r.prototype.CONSUME6=function(e,t){return this.consumeInternal(e,6,t)},r.prototype.CONSUME7=function(e,t){return this.consumeInternal(e,7,t)},r.prototype.CONSUME8=function(e,t){return this.consumeInternal(e,8,t)},r.prototype.CONSUME9=function(e,t){return this.consumeInternal(e,9,t)},r.prototype.SUBRULE=function(e,t){return this.subruleInternal(e,0,t)},r.prototype.SUBRULE1=function(e,t){return this.subruleInternal(e,1,t)},r.prototype.SUBRULE2=function(e,t){return this.subruleInternal(e,2,t)},r.prototype.SUBRULE3=function(e,t){return this.subruleInternal(e,3,t)},r.prototype.SUBRULE4=function(e,t){return this.subruleInternal(e,4,t)},r.prototype.SUBRULE5=function(e,t){return this.subruleInternal(e,5,t)},r.prototype.SUBRULE6=function(e,t){return this.subruleInternal(e,6,t)},r.prototype.SUBRULE7=function(e,t){return this.subruleInternal(e,7,t)},r.prototype.SUBRULE8=function(e,t){return this.subruleInternal(e,8,t)},r.prototype.SUBRULE9=function(e,t){return this.subruleInternal(e,9,t)},r.prototype.OPTION=function(e){return this.optionInternal(e,0)},r.prototype.OPTION1=function(e){return this.optionInternal(e,1)},r.prototype.OPTION2=function(e){return this.optionInternal(e,2)},r.prototype.OPTION3=function(e){return this.optionInternal(e,3)},r.prototype.OPTION4=function(e){return this.optionInternal(e,4)},r.prototype.OPTION5=function(e){return this.optionInternal(e,5)},r.prototype.OPTION6=function(e){return this.optionInternal(e,6)},r.prototype.OPTION7=function(e){return this.optionInternal(e,7)},r.prototype.OPTION8=function(e){return this.optionInternal(e,8)},r.prototype.OPTION9=function(e){return this.optionInternal(e,9)},r.prototype.OR=function(e){return this.orInternal(e,0)},r.prototype.OR1=function(e){return this.orInternal(e,1)},r.prototype.OR2=function(e){return this.orInternal(e,2)},r.prototype.OR3=function(e){return this.orInternal(e,3)},r.prototype.OR4=function(e){return this.orInternal(e,4)},r.prototype.OR5=function(e){return this.orInternal(e,5)},r.prototype.OR6=function(e){return this.orInternal(e,6)},r.prototype.OR7=function(e){return this.orInternal(e,7)},r.prototype.OR8=function(e){return this.orInternal(e,8)},r.prototype.OR9=function(e){return this.orInternal(e,9)},r.prototype.MANY=function(e){this.manyInternal(0,e)},r.prototype.MANY1=function(e){this.manyInternal(1,e)},r.prototype.MANY2=function(e){this.manyInternal(2,e)},r.prototype.MANY3=function(e){this.manyInternal(3,e)},r.prototype.MANY4=function(e){this.manyInternal(4,e)},r.prototype.MANY5=function(e){this.manyInternal(5,e)},r.prototype.MANY6=function(e){this.manyInternal(6,e)},r.prototype.MANY7=function(e){this.manyInternal(7,e)},r.prototype.MANY8=function(e){this.manyInternal(8,e)},r.prototype.MANY9=function(e){this.manyInternal(9,e)},r.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},r.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},r.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},r.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},r.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},r.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},r.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},r.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},r.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},r.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},r.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},r.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},r.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},r.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},r.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},r.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},r.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},r.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},r.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},r.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},r.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},r.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},r.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},r.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},r.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},r.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},r.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},r.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},r.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},r.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},r.prototype.RULE=function(e,t,i){if(i===void 0&&(i=Zx.DEFAULT_RULE_CONFIG),(0,LJ.contains)(this.definedRulesNames,e)){var n=oBe.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:Zx.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,t,i);return this[e]=o,o},r.prototype.OVERRIDE_RULE=function(e,t,i){i===void 0&&(i=Zx.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,aBe.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,t,i);return this[e]=s,s},r.prototype.BACKTRACK=function(e,t){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,t),!0}catch(n){if((0,sBe.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},r.prototype.getGAstProductions=function(){return this.gastProductionsCache},r.prototype.getSerializedGastProductions=function(){return(0,ABe.serializeGrammar)((0,LJ.values)(this.gastProductionsCache))},r}();_y.RecognizerApi=lBe});var HJ=y($y=>{"use strict";Object.defineProperty($y,"__esModule",{value:!0});$y.RecognizerEngine=void 0;var kr=Gt(),Gn=Wy(),Zy=yf(),MJ=eC(),Bf=$d(),UJ=Hn(),cBe=Vx(),KJ=HA(),nC=df(),uBe=Xx(),gBe=function(){function r(){}return r.prototype.initRecognizerEngine=function(e,t){if(this.className=(0,uBe.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=nC.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,kr.has)(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 + For Further details.`);if((0,kr.isArray)(e)){if((0,kr.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. + Note that the first argument for the parser constructor + is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 + For Further details.`)}if((0,kr.isArray)(e))this.tokensMap=(0,kr.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,kr.has)(e,"modes")&&(0,kr.every)((0,kr.flatten)((0,kr.values)(e.modes)),nC.isTokenType)){var i=(0,kr.flatten)((0,kr.values)(e.modes)),n=(0,kr.uniq)(i);this.tokensMap=(0,kr.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,kr.isObject)(e))this.tokensMap=(0,kr.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=KJ.EOF;var s=(0,kr.every)((0,kr.values)(e),function(o){return(0,kr.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?nC.tokenStructuredMatcherNoCategories:nC.tokenStructuredMatcher,(0,nC.augmentTokenTypes)((0,kr.values)(this.tokensMap))},r.prototype.defineRule=function(e,t,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,kr.has)(i,"resyncEnabled")?i.resyncEnabled:UJ.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,kr.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:UJ.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<t},r.prototype.orInternal=function(e,t){var i=this.getKeyForAutomaticLookahead(Gn.OR_IDX,t),n=(0,kr.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(t,e.ERR_MSG)},r.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new Zy.NotAllInputParsedException(t,e))}},r.prototype.subruleInternal=function(e,t,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,t,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},r.prototype.subruleInternalError=function(e,t,i){throw(0,Zy.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:i),delete e.partialCstResult),e},r.prototype.consumeInternal=function(e,t,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,t,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},r.prototype.consumeInternalError=function(e,t,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new Zy.MismatchedTokenException(n,t,s))},r.prototype.consumeInternalRecovery=function(e,t,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===cBe.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},r.prototype.saveRecogState=function(){var e=this.errors,t=(0,kr.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}},r.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},r.prototype.ruleInvocationStateUpdate=function(e,t,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t,e)},r.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},r.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},r.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},r.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),KJ.EOF)},r.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},r}();$y.RecognizerEngine=gBe});var YJ=y(ew=>{"use strict";Object.defineProperty(ew,"__esModule",{value:!0});ew.ErrorHandler=void 0;var $x=yf(),eP=Gt(),GJ=eC(),fBe=Hn(),hBe=function(){function r(){}return r.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,eP.has)(e,"errorMessageProvider")?e.errorMessageProvider:fBe.DEFAULT_PARSER_CONFIG.errorMessageProvider},r.prototype.SAVE_ERROR=function(e){if((0,$x.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,eP.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(r.prototype,"errors",{get:function(){return(0,eP.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),r.prototype.raiseEarlyExitException=function(e,t,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,GJ.getLookaheadPathsForOptionalProd)(e,s,t,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new $x.EarlyExitException(u,this.LA(1),this.LA(0)))},r.prototype.raiseNoAltException=function(e,t){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,GJ.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new $x.NoViableAltException(c,this.LA(1),l))},r}();ew.ErrorHandler=hBe});var JJ=y(tw=>{"use strict";Object.defineProperty(tw,"__esModule",{value:!0});tw.ContentAssist=void 0;var jJ=$d(),qJ=Gt(),pBe=function(){function r(){}return r.prototype.initContentAssist=function(){},r.prototype.computeContentAssist=function(e,t){var i=this.gastProductionsCache[e];if((0,qJ.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,jJ.nextPossibleTokensAfter)([i],t,this.tokenMatcher,this.maxLookahead)},r.prototype.getNextPossibleTokenTypes=function(e){var t=(0,qJ.first)(e.ruleStack),i=this.getGAstProductions(),n=i[t],s=new jJ.NextAfterTokenWalker(n,e).startWalking();return s},r}();tw.ContentAssist=pBe});var e3=y(nw=>{"use strict";Object.defineProperty(nw,"__esModule",{value:!0});nw.GastRecorder=void 0;var In=Gt(),Lo=Cn(),dBe=Jd(),XJ=df(),_J=HA(),CBe=Hn(),mBe=Wy(),iw={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(iw);var WJ=!0,zJ=Math.pow(2,mBe.BITS_FOR_OCCURRENCE_IDX)-1,ZJ=(0,_J.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:dBe.Lexer.NA});(0,XJ.augmentTokenTypes)([ZJ]);var $J=(0,_J.createTokenInstance)(ZJ,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze($J);var EBe={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},IBe=function(){function r(){}return r.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},r.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var t=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)t(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},r.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var t=0;t<10;t++){var i=t>0?t:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},r.prototype.ACTION_RECORD=function(e){},r.prototype.BACKTRACK_RECORD=function(e,t){return function(){return!0}},r.prototype.LA_RECORD=function(e){return CBe.END_OF_FILE},r.prototype.topLevelRuleRecord=function(e,t){try{var i=new Lo.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),t.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` + This error was thrown during the "grammar recording phase" For more info see: + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}},r.prototype.optionInternalRecord=function(e,t){return sC.call(this,Lo.Option,e,t)},r.prototype.atLeastOneInternalRecord=function(e,t){sC.call(this,Lo.RepetitionMandatory,t,e)},r.prototype.atLeastOneSepFirstInternalRecord=function(e,t){sC.call(this,Lo.RepetitionMandatoryWithSeparator,t,e,WJ)},r.prototype.manyInternalRecord=function(e,t){sC.call(this,Lo.Repetition,t,e)},r.prototype.manySepFirstInternalRecord=function(e,t){sC.call(this,Lo.RepetitionWithSeparator,t,e,WJ)},r.prototype.orInternalRecord=function(e,t){return yBe.call(this,e,t)},r.prototype.subruleInternalRecord=function(e,t,i){if(rw(t),!e||(0,In.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,In.peek)(this.recordingProdStack),o=e.ruleName,a=new Lo.NonTerminal({idx:t,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?EBe:iw},r.prototype.consumeInternalRecord=function(e,t,i){if(rw(t),!(0,XJ.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,In.peek)(this.recordingProdStack),o=new Lo.Terminal({idx:t,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),$J},r}();nw.GastRecorder=IBe;function sC(r,e,t,i){i===void 0&&(i=!1),rw(t);var n=(0,In.peek)(this.recordingProdStack),s=(0,In.isFunction)(e)?e:e.DEF,o=new r({definition:[],idx:t});return i&&(o.separator=e.SEP),(0,In.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),iw}function yBe(r,e){var t=this;rw(e);var i=(0,In.peek)(this.recordingProdStack),n=(0,In.isArray)(r)===!1,s=n===!1?r:r.DEF,o=new Lo.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&r.IGNORE_AMBIGUITIES===!0});(0,In.has)(r,"MAX_LOOKAHEAD")&&(o.maxLookahead=r.MAX_LOOKAHEAD);var a=(0,In.some)(s,function(l){return(0,In.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,In.forEach)(s,function(l){var c=new Lo.Alternative({definition:[]});o.definition.push(c),(0,In.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,In.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),t.recordingProdStack.push(c),l.ALT.call(t),t.recordingProdStack.pop()}),iw}function VJ(r){return r===0?"":""+r}function rw(r){if(r<0||r>zJ){var e=new Error("Invalid DSL Method idx value: <"+r+`> + `+("Idx value must be a none negative value smaller than "+(zJ+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var r3=y(sw=>{"use strict";Object.defineProperty(sw,"__esModule",{value:!0});sw.PerformanceTracer=void 0;var t3=Gt(),wBe=Hn(),BBe=function(){function r(){}return r.prototype.initPerformanceTracer=function(e){if((0,t3.has)(e,"traceInitPerf")){var t=e.traceInitPerf,i=typeof t=="number";this.traceInitMaxIdent=i?t:1/0,this.traceInitPerf=i?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=wBe.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},r.prototype.TRACE_INIT=function(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,t3.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r}();sw.PerformanceTracer=BBe});var i3=y(ow=>{"use strict";Object.defineProperty(ow,"__esModule",{value:!0});ow.applyMixins=void 0;function bBe(r,e){e.forEach(function(t){var i=t.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(r.prototype,n,s):r.prototype[n]=t.prototype[n]}})})}ow.applyMixins=bBe});var Hn=y(Cr=>{"use strict";var o3=Cr&&Cr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Cr,"__esModule",{value:!0});Cr.EmbeddedActionsParser=Cr.CstParser=Cr.Parser=Cr.EMPTY_ALT=Cr.ParserDefinitionErrorType=Cr.DEFAULT_RULE_CONFIG=Cr.DEFAULT_PARSER_CONFIG=Cr.END_OF_FILE=void 0;var _i=Gt(),QBe=Yq(),n3=HA(),a3=_d(),s3=pJ(),SBe=Vx(),vBe=BJ(),xBe=FJ(),PBe=TJ(),DBe=OJ(),kBe=HJ(),RBe=YJ(),FBe=JJ(),NBe=e3(),TBe=r3(),LBe=i3();Cr.END_OF_FILE=(0,n3.createTokenInstance)(n3.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(Cr.END_OF_FILE);Cr.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:a3.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});Cr.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var OBe;(function(r){r[r.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",r[r.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",r[r.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",r[r.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",r[r.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",r[r.LEFT_RECURSION=5]="LEFT_RECURSION",r[r.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",r[r.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",r[r.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",r[r.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",r[r.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",r[r.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",r[r.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(OBe=Cr.ParserDefinitionErrorType||(Cr.ParserDefinitionErrorType={}));function MBe(r){return r===void 0&&(r=void 0),function(){return r}}Cr.EMPTY_ALT=MBe;var aw=function(){function r(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(t),i.initLexerAdapter(),i.initLooksAhead(t),i.initRecognizerEngine(e,t),i.initRecoverable(t),i.initTreeBuilder(t),i.initContentAssist(),i.initGastRecorder(t),i.initPerformanceTracer(t),(0,_i.has)(t,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. + Please use the flag on the relevant DSL method instead. + See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES + For further details.`);this.skipValidations=(0,_i.has)(t,"skipValidations")?t.skipValidations:Cr.DEFAULT_PARSER_CONFIG.skipValidations}return r.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},r.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var t;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,_i.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,_i.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,s3.resolveGrammar)({rules:(0,_i.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,_i.isEmpty)(n)&&e.skipValidations===!1){var s=(0,s3.validateGrammar)({rules:(0,_i.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,_i.values)(e.tokensMap),errMsgProvider:a3.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,_i.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,QBe.computeAllProdsFollows)((0,_i.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,_i.values)(e.gastProductionsCache))})),!r.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,_i.isEmpty)(e.definitionErrors))throw t=(0,_i.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: + `+t.join(` +------------------------------- +`))})},r.DEFER_DEFINITION_ERRORS_HANDLING=!1,r}();Cr.Parser=aw;(0,LBe.applyMixins)(aw,[SBe.Recoverable,vBe.LooksAhead,xBe.TreeBuilder,PBe.LexerAdapter,kBe.RecognizerEngine,DBe.RecognizerApi,RBe.ErrorHandler,FBe.ContentAssist,NBe.GastRecorder,TBe.PerformanceTracer]);var UBe=function(r){o3(e,r);function e(t,i){i===void 0&&(i=Cr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,_i.cloneObj)(i);return s.outputCst=!0,n=r.call(this,t,s)||this,n}return e}(aw);Cr.CstParser=UBe;var KBe=function(r){o3(e,r);function e(t,i){i===void 0&&(i=Cr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,_i.cloneObj)(i);return s.outputCst=!1,n=r.call(this,t,s)||this,n}return e}(aw);Cr.EmbeddedActionsParser=KBe});var l3=y(Aw=>{"use strict";Object.defineProperty(Aw,"__esModule",{value:!0});Aw.createSyntaxDiagramsCode=void 0;var A3=Ix();function HBe(r,e){var t=e===void 0?{}:e,i=t.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+A3.VERSION+"/diagrams/":i,s=t.css,o=s===void 0?"https://unpkg.com/chevrotain@"+A3.VERSION+"/diagrams/diagrams.css":s,a=` + + + + + +`,l=` + +`,c=` +